postbooks-schema-quickstart-4.1.0/0000755000175000017500000000000012223754370016444 5ustar danieldanielpostbooks-schema-quickstart-4.1.0/INSTALL.txt0000644000175000017500000000722612223754370020322 0ustar danieldanielInstalling xTuple ERP =========================================== Last Updated: February 9, 2012 Thank you for your interest in xTuple ERP: PostBooks Edition, an OSI-certified open source application from xTuple. This file provides a brief overview of the steps required to manually prepare your PostgreSQL server to run xTuple ERP: PostBooks Edition. For up-to-date instructions and full details, please visit xtuple.org and click on Docs > Admin and Setup. The easiest way to get started is to use the xTuple all-in-one installer. The xTuple installer is available for Windows, Mac, and Linux. You can download the installer from the PostBooks-installers directory on the PostBooks SourceForge page. For more advanced users who prefer not to use the PostBooks installer, the following steps will get you started: 1. Install and configure PostgreSQL 2. Create the PostgreSQL database superuser 'admin' and the group 'xtrole' $ psql -U postgres -f init.sql template0 # see init.sql below 3. Create a new PostgreSQL database $ createdb -U admin production 4. Restore one of the xTuple starter databases into it (see Starter Databases below), for example: $ pg_restore -U admin -d production quickstart.backup -v PostgreSQL Considerations ------------------------- Before you can start using the xTuple Applications, you must first have PostgreSQL installed and properly configured. Check http://www.xtuple.org/compatibility-matrix to make sure the version of PostgreSQL you are running is compatible with the version of xTuple ERP you are installing. For additional information on installing PostgreSQL, please visit http://www.postgresql.org where you will find in-depth documentation and other resources related to PostgreSQL. Installation support is also available from xTuple. To learn more about xTuple's PostgreSQL services, please visit http://www.xtuple.com/postgres. NOTE: The xTuple applications require the PostgreSQL pgcrypto module. This is used for credit card processing and storing other sensitive information. You should be sure to include the pgcrypto module when installing PostgreSQL. If you do not, you will encounter errors when running the xTuple ERP application. init.sql: Creating the admin user and xtrole group -------------------------------------------------- Run the following SQL script using either psql, pgAdmin, or some other program that allows connecting directly to a PostgreSQL database server before creating your xTuple ERP database: -- -- This script creates the group xtrole and the user admin -- CREATE GROUP xtrole; -- Create the user 'admin' with the password 'admin', -- give it permission to create databases and users, -- and place it in the xtrole group. CREATE USER admin WITH PASSWORD 'admin' CREATEDB CREATEUSER IN GROUP xtrole; -- End of init.sql NOTE: Since the default password for the user admin is 'admin', you'll want to change it immediately. Starter databases ----------------- xTuple supplies three different databases to help get you started: * empty.backup This is an empty database with no data, but with all the tables and structures created. * quickstart.backup This database contains a basic Chart of Accounts and also the Account Assignments required to run the full range of transactions. * demo.backup This database contains a suite of sample data built on top of the 'quickstart' database ----------------- Again, thank you for your interest in xTuple ERP. You can find more information, full documentation, discussion forums, support options, training opportunities, and commercial offerings at http://www.xtuple.org postbooks-schema-quickstart-4.1.0/LICENSE.txt0000644000175000017500000006724412223754370020304 0ustar danieldanielCommon Public Attribution License Version 1.0 (CPAL) 1. Definitions 1.0.1 "Commercial Use" means distribution or otherwise making the Covered Code available to a third party. 1.1 "Contributor" means each entity that creates or contributes to the creation of Modifications. 1.2 "Contributor Version" means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor. 1.3 "Covered Code" means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof. 1.4 "Electronic Distribution Mechanism" means a mechanism generally accepted in the software development community for the electronic transfer of data. 1.5 "Executable" means Covered Code in any form other than Source Code. 1.6 "Initial Developer" means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A. 1.7 "Larger Work" means a work which combines Covered Code or portions thereof with code not governed by the terms of this License. 1.8 "License" means this document. 1.8.1 "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein. 1.9 "Modifications" means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is: A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications. B. Any new file that contains any part of the Original Code or previous Modifications. 1.10 "Original Code" means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License. 1.10.1 "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation, method, process, and apparatus claims, in any patent Licensable by grantor. 1.11 "Source Code" means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge. 1.12 "You" (or "Your") means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You" includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control" means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity. 2. Source Code License. 2.1 The Initial Developer Grant. The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims: (a) under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and (b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof). (c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License. (d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code; or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices. 2.2 Contributor Grant. Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license (a) under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and (b) under Patent Claims infringed by the making, using, or selling of Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of Modifications made by that Contributor with its Contributor Version (or portions of such combination). (c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first makes Commercial Use of the Covered Code. (d) Notwithstanding Section 2.2(b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2) separate from the Contributor Version; 3) for infringements caused by: i) third party modifications of Contributor Version or ii) the combination of Modifications made by that Contributor with other software (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor. 3. Distribution Obligations. 3.1 Application of License. The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5. 3.2 Availability of Source Code. Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party. 3.3 Description of Modifications. You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code. 3.4 Intellectual Property Matters (a) Third Party Claims. If Contributor has knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL" which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained. (b) Contributor APIs. If Contributor's Modifications include an application programming interface and Contributor has knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file. (c) Representations. Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License. 3.5 Required Notices. You must duplicate the notice in Exhibit A in each file of the Source Code. If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice. If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A. You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code. You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer. 3.6 Distribution of Executable Versions. You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer, Original Developer or any Contributor. You hereby agree to indemnify the Initial Developer, Original Developer and every Contributor for any liability incurred by the Initial Developer, Original Developer or such Contributor as a result of any such terms You offer. 3.7 Larger Works. You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code. 4. Inability to Comply Due to Statute or Regulation. If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it. 5. Application of this License. This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code. 6. Versions of the License. 6.1 New Versions. Socialtext, Inc. ("Socialtext") may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number. 6.2 Effect of New Versions. Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Socialtext. No one other than Socialtext has the right to modify the terms applicable to Covered Code created under this License. 6.3 Derivative Works. If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must (a) rename Your license so that the phrases "Socialtext", "CPAL" or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the CPAL. (Filling in the name of the Initial Developer, Original Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.) 7. DISCLAIMER OF WARRANTY. COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER, ORIGINAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. 8. TERMINATION. 8.1 This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive. 8.2 If You initiate litigation by asserting a patent infringement claim (excluding declatory judgment actions) against Initial Developer, Original Developer or a Contributor (the Initial Developer, Original Developer or Contributor against whom You file such action is referred to as "Participant") alleging that: (a) such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i) agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant. If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above. (b) any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant. 8.3 If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license. 8.4 In the event of termination under Sections 8.1 or 8.2 above, all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination. 9. LIMITATION OF LIABILITY. UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ORIGINAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. 10. U.S. GOVERNMENT END USERS. The Covered Code is a "commercial item," as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer software" and "commercial computer software documentation," as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein. 11. MISCELLANEOUS. This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by Virginia law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in the United States of America, any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of Virginia, with venue lying in Norfolk, Virginia, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License. 12. RESPONSIBILITY FOR CLAIMS. As between Initial Developer, Original Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer, Original Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability. 13. MULTIPLE-LICENSED CODE. Initial Developer may designate portions of the Covered Code as Multiple-Licensed. Multiple-Licensed means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of the CPAL or the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A. 14. ADDITIONAL TERM: ATTRIBUTION (a) As a modest attribution to the organizer of the development of the Original Code ("Original Developer"), in the hope that its promotional value may help justify the time, money and effort invested in writing the Original Code, the Original Developer may include in Exhibit B ("Attribution Information") a requirement that each time an Executable and Source Code or a Larger Work is launched or initially run (which includes initiating a session), a prominent display of the Original Developer's Attribution Information (as defined below) must occur on the graphic user interface employed by the end user to access such Covered Code (which may include display on a splash screen), if any. The size of the graphic image should be consistent with the size of the other elements of the Attribution Information. If the access by the end user to the Executable and Source Code does not create a graphic user interface for access to the Covered Code, this obligation shall not apply. If the Original Code displays such Attribution Information in a particular form (such as in the form of a splash screen, notice at login, an "about" display, or dedicated attribution area on user interface screens), continued use of such form for that Attribution Information is one way of meeting this requirement for notice. (b) Attribution information may only include a copyright notice, a brief phrase, graphic image and a URL ("Attribution Information") and is subject to the Attribution Limits as defined below. For these purposes, prominent shall mean display for sufficient duration to give reasonable notice to the user of the identity of the Original Developer and that if You include Attribution Information or similar information for other parties, You must ensure that the Attribution Information for the Original Developer shall be no less prominent than such Attribution Information or similar information for the other party. For greater certainty, the Original Developer may choose to specify in Exhibit B below that the above attribution requirement only applies to an Executable and Source Code resulting from the Original Code or any Modification, but not a Larger Work. The intent is to provide for reasonably modest attribution, therefore the Original Developer cannot require that You display, at any time, more than the following information as Attribution Information: (a) a copyright notice including the name of the Original Developer; (b) a word or one phrase (not exceeding 10 words); (c) one graphic image provided by the Original Developer; and (d) a URL (collectively, the "Attribution Limits"). (c) If Exhibit B does not include any Attribution Information, then there are no requirements for You to display any Attribution Information of the Original Developer. (d) You acknowledge that all trademarks, service marks and/or trade names contained within the Attribution Information distributed with the Covered Code are the exclusive property of their owners and may only be used with the permission of their owners, or under circumstances otherwise permitted by law or as expressly set out in this License. 15. ADDITIONAL TERM: NETWORK USE. The term "External Deployment" means the use, distribution, or communication of the Original Code or Modifications in any way such that the Original Code or Modifications may be used by anyone other than You, whether those works are distributed or communicated to those persons or made available as an application intended for use over a network. As an express condition for the grants of license hereunder, You must treat any External Deployment by You of the Original Code or Modifications as a distribution under section 3.1 and make Source Code available under Section 3.2. EXHIBIT A. Common Public Attribution License Version 1.0. The contents of this file are subject to the Common Public Attribution License Version 1.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.xTuple.com/CPAL. The License is based on the Mozilla Public License Version 1.1 but Sections 14 and 15 have been added to cover use of software over a computer network and provide for limited attribution for the Original Developer. In addition, Exhibit A has been modified to be consistent with Exhibit B. Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for the specific language governing rights and limitations under the License. The Original Code is xTuple ERP: PostBooks Edition The Original Developer is not the Initial Developer and is __________. If left blank, the Original Developer is the Initial Developer. The Initial Developer of the Original Code is OpenMFG, LLC, d/b/a xTuple. All portions of the code written by xTuple are Copyright (c) 1999-2012 OpenMFG, LLC, d/b/a xTuple. All Rights Reserved. Contributor(s): ______________________. Alternatively, the contents of this file may be used under the terms of the xTuple End-User License Agreeement (the xTuple License), in which case the provisions of the xTuple License are applicable instead of those above. If you wish to allow use of your version of this file only under the terms of the xTuple License and not to allow others to use your version of this file under the CPAL, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the xTuple License. If you do not delete the provisions above, a recipient may use your version of this file under either the CPAL or the xTuple License. [NOTE: The text of this Exhibit A may differ slightly from the text of the notices in the Source Code files of the Original Code. You should use the text of this Exhibit A rather than the text found in the Original Code Source Code for Your Modifications.] EXHIBIT B. Attribution Information Attribution Copyright Notice: Copyright (c) 1999-2012 by OpenMFG, LLC, d/b/a xTuple Attribution Phrase (not exceeding 10 words): Powered by xTuple ERP: PostBooks Edition Attribution URL: www.xtuple.org (to be included in the "Community" menu of the application if possible) Graphic Image as provided in the Covered Code, if any. (online at www.xtuple.com/poweredby) Display of Attribution Information is required in Larger Works which are defined in the CPAL as a work which combines Covered Code or portions thereof with code not governed by the terms of the CPAL. postbooks-schema-quickstart-4.1.0/init.sql0000644000175000017500000000062612223754370020134 0ustar danieldaniel-- -- This script creates the group xtrole and the user admin -- -- -- Create the xtrole group -- CREATE GROUP xtrole; -- -- Create the admin user with createdb and createuser -- permissions. Place the user in the xtrole group and -- set the password to the default of admin. -- CREATE USER admin WITH PASSWORD 'admin' CREATEDB CREATEUSER IN GROUP xtrole; postbooks-schema-quickstart-4.1.0/README_Databases.txt0000644000175000017500000000351112223754370022111 0ustar danieldanielPostBooks Databases Overview xTuple ERP ==================================== Last Updated: August 9, 2010 Thank you for your interest in PostBooks, an OSI-certified open source application from xTuple. This file provides a brief overview of the steps required to manually prepare your PostgreSQL server to run a PostBooks database. Of course, the easiest way to get started is to use the xTuple all- in-one installer. The xTuple installer is available for Windows, Mac, and Linux. You can download the installer from the PostBooks-installers directory on the PostBooks SourceForge page. The all-in-one installer will install both the xTuple client and the xTuple databases--as well as other tools you can use for database administration. Using the installer is the easiest way to ensure your xTuple installation will work for you "out of the box." For more advanced users who prefer not to use the PostBooks installer, the following steps will get you started: 1. Install and configure PostgreSQL. (For more information, see the INSTALL.txt file.) 2. Run the 'init.sql' script to create the user 'admin' and the group 'xtrole'. (For more information, see the INSTALL.txt file.) 3. Create a new PostgreSQL Database and then restore the xTuple Database schema into it. There are several starter schema to choose from, including the following: * empty.backup - This is an empty database with no data * quickstart.backup - This database contains a basic Chart of Accounts and also the Account Assignments required to run the full range of transactions * demo.backup - This database (if available) contains a suite of sample data built on top of the 'quickstart' database To learn more about loading the xTuple Database schema, please see the INSTALL.txt file. 4. Once a database has been loaded, simply connect to it using your PostBooks client application.postbooks-schema-quickstart-4.1.0/ReleaseNotes_4-1-0.txt0000644000175000017500000001774212223754370022327 0ustar danieldanielRelease Notes xTuple ERP Version 4.1.0 August 8, 2013 ================================== This is the final release of version 4.1.0. Thanks to all in the community who made this release possible! You will find several new features and bug fixes in this release. One note: The automatic update feature for the Desktop client has been removed from 4.1.0. It will be reintroduced in a future xTuple release. Information about compatibility issues related to this software version can be found on the xTuple Compatibility Matrix at the following address: www.xtuple.org/compatibility-matrix. ================================== The following features and bug fixes have been added to the applications since 4.1.0RC. Additional detail for each item listed below may be found on our community website under the Issue Tracker. Bug Fixes: * Expired registration key crashes the application on login [20098] * Selecting to open a "Time Clock Summary" screen displays "Could Not Create Form" error dialog [20508] * "Production Time Clock By Employee" screen does not filters the production time clock entries according to the selected Employee [20509] * It is not possible to create a new Work Order time clock entry from "Production Time Clock By Work Order" screen [20510] * Fold username to lowercase [20702] * Remove non-usable P/O reservations code [20772] * Unable to change the bank account of a sales order set in the "Cash" section under the "Payment" tab [20779] * Disallow mismatched client versions option is not honored [20811] * Time Clock Summary form is missing [20916] * Shifts are being duplicated [20917 ================================== The following features and bug fixes have been added to the applications since 4.1.0Beta2. Additional detail for each item listed below may be found on our community website under the Issue Tracker. New Features: * Substitute items on a sales order [19354] * Add "Titles" to Customer List [20578] * Checks and Cash payment from the CC payment tab in Sales Order Entry [20621] * Create SO Link PO (adjust qty for PO) [20628] * Item analyzation [20663] Bug Fixes: * Item Master Sorting is not working properly [16914] * Selecting to add a Bill of Material to a new item generates a DB log error [17345] * Set all get...id() stored procedures Volatitlity to STABLE [17998] * Contact screen proportionality has changed [18689] * Inconsistent behavior of "Close" button on Sales order screen [18875] * Add owner to api.contact view [19344] * Saving Filters with Class Code Matching Quantifiers Crashes xTuple [19346] * Costs not handled consistently on Quote and Sales Order [19751] * Change Sales Order header to show profit margin based on the "long 30" calculation [20001] * Expose Sales Order Item Unit Cost for visibility and editability [20003] * Revert the Sales Order Item Markup/Discount behavior to Discount only [20005] * AR Statement cannot be emailed via EDI [20222] * Duplicate Pricing Schedule Assignment does not display error [20346] * Blank "BOM Item Actual Cost" screen is displayed on selecting to edit a costing element of a Bill Of Materials Item [20427] * Check Register [20442] * BOL 3.8.4 -> 4.0.3 Upgrade [20464] * It is not possible to create a size zone with same details in different sites [20482] * It possible to Clock-In a blank operation from "Time Clock" screen [20507] * Text overlap in "Post Production" screen [20511] * Employee Code is not displayed in Production Time clock By Work Order screen [20512] * External Catalog Cross warehouse item creation [20533] * Documents are lost when converting an iQuote to an Open Sales Order [20564] * 4.0.5: "MaintainRegistrationKey" privilege is not available in Postbooks Empty database [20580] * Running Availability Screen (inconsistant) [20588] * Inventory, Utlility, Update Reoder Levels [20594] * Batch Pack List Screen ( add Pick List Batch screen) [20598] * The "purchaseOrder" dialog is displayed irrelevantly on selecting to create a Purchase Order [20602] * Pricing Schedules using scheduled date [20606] * Sort sequence on Pick tickets/Packlist [20607] * Sales Reservations report in PostBooks db [20619] * Irrelevant behavior is observed in "Adjust Inventory Value" screen [20633] * PO items do not worklike SO items during PO entry [20665] * Vendor label is missing in "Attach a Document" screen [20670] * Selecting to print "A/P Applications" screen does not displays "Doc#" label [20700] ================================== The following features and bug fixes have been added to the applications since 4.1.0Beta. Additional detail for each item listed below may be found on our community website under the Issue Tracker. New Features: * Replace "List Cost" naming with "Wholesale Price" [20002] Bug Fixes: * Currency exchange rate window does not handle localized numerics properly [10418] * Delete posted invoice before saving [18630] * Inventory update should be disabled if no item site [20043] * Running Availability print does not print all information [20153] * Picking List SO with Locations report not showing reserved qty [20174] * API Price Schedule Item Error [20223] * Pricing Schedules [20263] * Recurring creation utility bug [20277] * Site to Site transfer of fractional amount of item not set as fractional [20287] * Cost for newly created item [20299] * Error running MRP with exceptions: poitem_soitem_id does not exist [20308] * Irrelevant behavior is observed on selected to post the receipt for a PO line item [20337] * G/LSeries Report & filter [20376] * deleteitemcost(integer,integer) function uses SELECT where it should use PERFORM [20381] * Selecting to copy a Drop Ship quote does not creates drop ship enabled quote [20390] * It is possible to create duplicate records for site zone [20403] * Re-opening a quote doesn't shows the Override Price of a quote item [20417] * Make sure new installer does two-letter state abbreviations [20432] ================================== The following features and bug fixes have been added to the applications since 4.0.3. Additional detail for each item listed below may be found on our community website under the Issue Tracker. New Features: * Make updates more automatic [5837] * Substitute items on a sales order [19354] * New API for entering Physical Inventory Counts [19388] Bug Fixes: * Freight amount is calculated incorrectly for a sales order with multiple shipments [17525] * Postbooks Demo: Selecting to purge invoices generates DB log error [17779] * Selecting to post a cash receipt displays a system message [18623] * DB log error is generated on selecting to query "Update Reorder Level by Item" screen [18678] * Irrelavent behaviour is observed in "User Information" screen [18705] * Observation: Incorrect Net unit price is populated in Purchase Order item screen [18755] * DB log error is generated on selecting to query the "Return Authorization Workbench" screen [18934] * Irrelevent dialog is displayed on selecting to print Sale Types [18975] * Unable to print "Contracts" screen [18995] * API item view missing fields [19317] * API requires custinfo_shipform in order to display data [19339] * Only Show Shortages [19421] * Trial Balance Out of Balance [19583] * Item "Maximum Desired Cost" value not converted to local currency when comparing to PO Unit Price [19600] * "purgeSalesOrders" does not exist on login after 38xto400 std update [19602] * It is not possible to copy an already copied Locale [19618] * DB log error is generated on selecting to print a Sales Order created for a foreign customer [19639] * api.itemsourceprice does not include newly added public.itemsrcp columns [19651] * Profit Margin doesn't recalculate [19694] * Convert Quote to Order/Convert Quote to Invoice [19728] * Substitute items salesOrderItem Screen [19729] * List cost does not show in local currency [19756] * Performance issue with Master Schedule display after migrating to 3.8.4 and new cloud [19961] * View public.usr, locales, roundqty() affect performance of cloud db's with more users [19971] * Return Authorization automatic numbering problem [20013]postbooks-schema-quickstart-4.1.0/postbooks_quickstart-4.1.0.sql0000644000175000017500005061153612223754370024141 0ustar danieldaniel-- -- PostgreSQL database dump -- SET statement_timeout = 0; SET client_encoding = 'UTF8'; SET standard_conforming_strings = off; SET check_function_bodies = false; SET client_min_messages = warning; SET escape_string_warning = off; -- -- Name: api; Type: SCHEMA; Schema: -; Owner: admin -- CREATE SCHEMA api; ALTER SCHEMA api OWNER TO admin; -- -- Name: fixcountry; Type: SCHEMA; Schema: -; Owner: admin -- CREATE SCHEMA fixcountry; ALTER SCHEMA fixcountry OWNER TO admin; -- -- Name: SCHEMA fixcountry; Type: COMMENT; Schema: -; Owner: admin -- COMMENT ON SCHEMA fixcountry IS 'Schema to hold contents of fixcountry'; -- -- Name: te; Type: SCHEMA; Schema: -; Owner: admin -- CREATE SCHEMA te; ALTER SCHEMA te OWNER TO admin; -- -- Name: SCHEMA te; Type: COMMENT; Schema: -; Owner: admin -- COMMENT ON SCHEMA te IS 'This file is part of the xTuple ERP: PostBooks Edition, a free and open source Enterprise Resource Planning software suite, Copyright (c) 1999-2010 by OpenMFG LLC, d/b/a xTuple. It is licensed to you under the Common Public Attribution License version 1.0, the full text of which (including xTuple-specific Exhibits) is available at www.xtuple.com/CPAL. By using this software, you agree to be bound by its terms.'; -- -- Name: xtdesktop; Type: SCHEMA; Schema: -; Owner: admin -- CREATE SCHEMA xtdesktop; ALTER SCHEMA xtdesktop OWNER TO admin; -- -- Name: SCHEMA xtdesktop; Type: COMMENT; Schema: -; Owner: admin -- COMMENT ON SCHEMA xtdesktop IS 'Schema to hold contents of xtdesktop'; -- -- Name: plpgsql; Type: PROCEDURAL LANGUAGE; Schema: -; Owner: admin -- CREATE PROCEDURAL LANGUAGE plpgsql; ALTER PROCEDURAL LANGUAGE plpgsql OWNER TO admin; SET search_path = public, pg_catalog; -- -- Name: achline; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE achline AS ( achline_checkhead_id integer, achline_batch text, achline_type text, achline_value text ); ALTER TYPE public.achline OWNER TO admin; -- -- Name: apaging; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE apaging AS ( apaging_docdate text, apaging_duedate date, apaging_ponumber text, apaging_reference text, apaging_invcnumber text, apaging_docnumber text, apaging_doctype text, apaging_vend_id integer, apaging_vend_number text, apaging_vend_name text, apaging_vend_vendtype_id integer, apaging_vendtype_code text, apaging_terms_descrip text, apaging_apopen_amount numeric, apaging_cur_val numeric, apaging_thirty_val numeric, apaging_sixty_val numeric, apaging_ninety_val numeric, apaging_plus_val numeric, apaging_total_val numeric, apaging_discdate date, apaging_disc_val numeric, apaging_discdays numeric, apaging_discprcnt numeric ); ALTER TYPE public.apaging OWNER TO admin; -- -- Name: araging; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE araging AS ( araging_docdate date, araging_duedate date, araging_ponumber text, araging_docnumber text, araging_doctype text, araging_cust_id integer, araging_cust_number text, araging_cust_name text, araging_cust_custtype_id integer, araging_custtype_code text, araging_terms_descrip text, araging_aropen_amount numeric, araging_cur_val numeric, araging_thirty_val numeric, araging_sixty_val numeric, araging_ninety_val numeric, araging_plus_val numeric, araging_total_val numeric ); ALTER TYPE public.araging OWNER TO admin; -- -- Name: bomdata; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE bomdata AS ( bomdata_bomwork_id integer, bomdata_bomwork_parent_id integer, bomdata_bomwork_level integer, bomdata_bomwork_seqnumber integer, bomdata_bomitem_id integer, bomdata_item_id integer, bomdata_item_number text, bomdata_uom_name text, bomdata_item_descrip1 text, bomdata_item_descrip2 text, bomdata_itemdescription text, bomdata_batchsize numeric, bomdata_qtyfxd numeric, bomdata_qtyper numeric, bomdata_qtyreq numeric, bomdata_scrap numeric, bomdata_createchild boolean, bomdata_issuemethod text, bomdata_effective date, bomdata_expires date, bomdata_expired boolean, bomdata_future boolean, bomdata_actunitcost numeric, bomdata_stdunitcost numeric, bomdata_actextendedcost numeric, bomdata_stdextendedcost numeric, bomdata_ecn text, bomdata_char_id integer, bomdata_value text, bomdata_notes text, bomdata_ref text ); ALTER TYPE public.bomdata OWNER TO admin; -- -- Name: checkdata; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE checkdata AS ( checkdata_page integer, checkdata_checknumber text, checkdata_checkwords text, checkdata_checkdate text, checkdata_checkamount text, checkdata_checkcurrsymbol text, checkdata_checkcurrabbr text, checkdata_checkcurrname text, checkdata_checkpayto text, checkdata_checkaddress text, checkdata_checkmemo text, checkdata_docnumber text, checkdata_docreference text, checkdata_docdate text, checkdata_docamount text, checkdata_docdiscount text, checkdata_docnetamount text ); ALTER TYPE public.checkdata OWNER TO admin; -- -- Name: cntctdup; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE cntctdup AS ( cntct_id integer, cntct_crmacct_id integer, cntct_addr_id integer, cntct_first_name text, cntct_last_name text, cntct_honorific text, cntct_initials text, cntct_active boolean, cntct_phone text, cntct_phone2 text, cntct_fax text, cntct_email text, cntct_webaddr text, cntct_notes text, cntct_title text, cntct_number text, cntct_middle text, cntct_suffix text, cntct_owner_username text, cntct_name text, crmacct_number text, crmacct_name text, addr_id integer, addr_active boolean, addr_line1 text, addr_line2 text, addr_line3 text, addr_city text, addr_state text, addr_postalcode text, addr_country text, addr_notes text, addr_number text, cntctdup_level integer ); ALTER TYPE public.cntctdup OWNER TO admin; -- -- Name: flcoldata; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE flcoldata AS ( flcoldata_column integer, flcoldata_start date, flcoldata_end date ); ALTER TYPE public.flcoldata OWNER TO admin; -- -- Name: flstmthead; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE flstmthead AS ( flstmthead_flhead_id integer, flstmthead_flcol_id integer, flstmthead_period_id integer, flstmthead_username text, flstmthead_typedescrip1 text, flstmthead_typedescrip2 text, flstmthead_flhead_name text, flstmthead_flcol_name text, flstmthead_month text, flstmthead_qtr text, flstmthead_year text, flstmthead_prmonth text, flstmthead_prqtr text, flstmthead_pryear text ); ALTER TYPE public.flstmthead OWNER TO admin; -- -- Name: flstmtitem; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE flstmtitem AS ( flstmtitem_flhead_id integer, flstmtitem_period_id integer, flstmtitem_username text, flstmtitem_order integer, flstmtitem_level integer, flstmtitem_subgrp integer, flstmtitem_type text, flstmtitem_type_id integer, flstmtitem_parent_id integer, flstmtitem_accnt_id integer, flstmtitem_name text, flstmtitem_month numeric, flstmtitem_monthdb numeric, flstmtitem_monthcr numeric, flstmtitem_monthprcnt numeric, flstmtitem_monthbudget numeric, flstmtitem_monthbudgetprcnt numeric, flstmtitem_monthbudgetdiff numeric, flstmtitem_monthbudgetdiffprcnt numeric, flstmtitem_qtr numeric, flstmtitem_qtrdb numeric, flstmtitem_qtrcr numeric, flstmtitem_qtrprcnt numeric, flstmtitem_qtrbudget numeric, flstmtitem_qtrbudgetprcnt numeric, flstmtitem_qtrbudgetdiff numeric, flstmtitem_qtrbudgetdiffprcnt numeric, flstmtitem_year numeric, flstmtitem_yeardb numeric, flstmtitem_yearcr numeric, flstmtitem_yearprcnt numeric, flstmtitem_yearbudget numeric, flstmtitem_yearbudgetprcnt numeric, flstmtitem_yearbudgetdiff numeric, flstmtitem_yearbudgetdiffprcnt numeric, flstmtitem_prmonth numeric, flstmtitem_prmonthprcnt numeric, flstmtitem_prmonthdiff numeric, flstmtitem_prmonthdiffprcnt numeric, flstmtitem_prqtr numeric, flstmtitem_prqtrprcnt numeric, flstmtitem_prqtrdiff numeric, flstmtitem_prqtrdiffprcnt numeric, flstmtitem_pryear numeric, flstmtitem_pryearprcnt numeric, flstmtitem_pryeardiff numeric, flstmtitem_pryeardiffprcnt numeric ); ALTER TYPE public.flstmtitem OWNER TO admin; -- -- Name: fltrendhead; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE fltrendhead AS ( fltrendhead_flhead_id integer, fltrendhead_username text, fltrendhead_typedescrip text, fltrendhead_flhead_name text, fltrendhead_fld1 text, fltrendhead_fld2 text, fltrendhead_fld3 text, fltrendhead_fld4 text, fltrendhead_fld5 text, fltrendhead_fld6 text, fltrendhead_fld7 text, fltrendhead_fld8 text, fltrendhead_fld9 text, fltrendhead_fld10 text, fltrendhead_fld11 text, fltrendhead_fld12 text, fltrendhead_grndttl text ); ALTER TYPE public.fltrendhead OWNER TO admin; -- -- Name: fltrenditem; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE fltrenditem AS ( fltrenditem_flhead_id integer, fltrenditem_username text, fltrenditem_order integer, fltrenditem_level integer, fltrenditem_subgrp integer, fltrenditem_type text, fltrenditem_type_id integer, fltrenditem_parent_id integer, fltrenditem_accnt_id integer, fltrenditem_name text, fltrenditem_fld1 text, fltrenditem_fld2 text, fltrenditem_fld3 text, fltrenditem_fld4 text, fltrenditem_fld5 text, fltrenditem_fld6 text, fltrenditem_fld7 text, fltrenditem_fld8 text, fltrenditem_fld9 text, fltrenditem_fld10 text, fltrenditem_fld11 text, fltrenditem_fld12 text, fltrenditem_grndttl text ); ALTER TYPE public.fltrenditem OWNER TO admin; -- -- Name: freightdata; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE freightdata AS ( freightdata_schedule text, freightdata_from text, freightdata_to text, freightdata_shipvia text, freightdata_freightclass text, freightdata_weight numeric, freightdata_uom text, freightdata_price numeric, freightdata_type text, freightdata_total numeric, freightdata_currency text ); ALTER TYPE public.freightdata OWNER TO admin; -- -- Name: itemprice; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE itemprice AS ( itemprice_price numeric, itemprice_type character(1) ); ALTER TYPE public.itemprice OWNER TO admin; -- -- Name: orderitemtype; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE orderitemtype AS ( orderitem_id integer, orderitem_orderhead_type text, orderitem_orderhead_id integer, orderitem_linenumber integer, orderitem_status text, orderitem_itemsite_id integer, orderitem_scheddate date, orderitem_qty_ordered numeric, orderitem_qty_shipped numeric, orderitem_qty_received numeric, orderitem_qty_uom_id integer, orderitem_qty_invuomratio numeric, orderitem_unitcost numeric, orderitem_unitcost_curr_id integer, orderitem_freight numeric, orderitem_freight_received numeric, orderitem_freight_curr_id integer ); ALTER TYPE public.orderitemtype OWNER TO admin; -- -- Name: ordhead; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE ordhead AS ( orderhead_id integer, orderhead_type text, orderhead_number text, orderhead_status text, orderhead_orderdate date, orderhead_linecount integer, orderhead_from_id integer, orderhead_from text, orderhead_to_id integer, orderhead_to text, orderhead_curr_id integer, orderhead_agent_username text, orderhead_shipvia text ); ALTER TYPE public.ordhead OWNER TO admin; -- -- Name: orditem; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE orditem AS ( orderitem_id integer, orderitem_orderhead_type text, orderitem_orderhead_id integer, orderitem_linenumber integer, orderitem_status text, orderitem_itemsite_id integer, orderitem_scheddate date, orderitem_qty_ordered numeric, orderitem_qty_shipped numeric, orderitem_qty_received numeric, orderitem_qty_uom_id integer, orderitem_qty_invuomratio numeric, orderitem_unitcost numeric, orderitem_unitcost_curr_id integer, orderitem_freight numeric, orderitem_freight_received numeric, orderitem_freight_curr_id integer ); ALTER TYPE public.orditem OWNER TO admin; -- -- Name: reordlvl; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE reordlvl AS ( reordlvl_itemsite_id integer, reordlvl_item_id integer, reordlvl_warehous_code text, reordlvl_item_number text, reordlvl_item_descrip text, reordlvl_leadtime integer, reordlvl_daysofstock integer, reordlvl_curr_level numeric, reordlvl_total_days numeric, reordlvl_total_usage numeric, reordlvl_calc_level integer ); ALTER TYPE public.reordlvl OWNER TO admin; -- -- Name: seqiss; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE seqiss AS ( seqiss_number integer, seqiss_time timestamp with time zone ); ALTER TYPE public.seqiss OWNER TO admin; -- -- Name: subtax; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE subtax AS ( subtax_taxcode_id integer, subtax_taxcode_code text, subtax_taxcode_descrip text, subtax_taxcode_level integer ); ALTER TYPE public.subtax OWNER TO admin; -- -- Name: taxassign; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE taxassign AS ( taxassign_taxzone_id integer, taxassign_taxtype_id integer, taxassign_level integer, taxassign_zone_code text, taxassign_type_descrip text, taxassign_taxclass_code text, taxassign_taxclass_sequence integer ); ALTER TYPE public.taxassign OWNER TO admin; -- -- Name: taxdetail; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE taxdetail AS ( taxdetail_tax_id integer, taxdetail_tax_code text, taxdetail_tax_descrip text, taxdetail_tax_basis_tax_id integer, taxdetail_taxrate_percent numeric(10,6), taxdetail_taxrate_amount numeric(16,2), taxdetail_level integer, taxdetail_taxclass_id integer, taxdetail_taxclass_code text, taxdetail_taxclass_sequence integer, taxdetail_tax numeric(16,6), taxdetail_curr_id integer, taxdetail_curr_abbr text ); ALTER TYPE public.taxdetail OWNER TO admin; -- -- Name: wodata; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE wodata AS ( wodata_id integer, wodata_id_type integer, wodata_number integer, wodata_subnumber integer, wodata_itemnumber text, wodata_descrip text, wodata_status character(1), wodata_startdate date, wodata_duedate date, wodata_adhoc boolean, wodata_itemsite_id integer, wodata_qoh numeric, wodata_short numeric, wodata_qtyper numeric, wodata_qtyiss numeric, wodata_qtyrcv numeric, wodata_qtyordreq numeric, wodata_qtyuom text, wodata_scrap numeric, wodata_setup numeric, wodata_run numeric, wodata_notes text, wodata_ref text, wodata_level integer ); ALTER TYPE public.wodata OWNER TO admin; -- -- Name: woinvav; Type: TYPE; Schema: public; Owner: admin -- CREATE TYPE woinvav AS ( woinvav_itemsite_id integer, woinvav_womatl_id integer, woinvav_type character(1), woinvav_item_wo_number text, woinvav_descrip text, woinvav_uomname text, woinvav_qoh numeric, woinvav_balance numeric, woinvav_allocated numeric, woinvav_ordered numeric, woinvav_woavail numeric, woinvav_totalavail numeric, woinvav_reorderlevel numeric, woinvav_level integer ); ALTER TYPE public.woinvav OWNER TO admin; SET search_path = api, pg_catalog; -- -- Name: getcustnumberfrominfo(text, text, text, text, text, boolean); Type: FUNCTION; Schema: api; Owner: admin -- CREATE FUNCTION getcustnumberfrominfo(text, text, text, text, text, boolean) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _email TEXT := COALESCE(UPPER($1), ''); _company TEXT := COALESCE(UPPER($2), ''); _first TEXT := COALESCE(UPPER($3), ''); _last TEXT := COALESCE(UPPER($4), ''); _fullname TEXT := COALESCE(UPPER($5), TRIM(_first || ' ' || _last)); _generate BOOLEAN := COALESCE($6, FALSE); _counter INTEGER; _custcount INTEGER := 0; _custnumber TEXT; _candidate TEXT := ''; _loopmax INTEGER := 0; _minlength INTEGER := 5; _maxlength INTEGER := 8; _numformat TEXT := ''; _testme TEXT; BEGIN IF (_email != '') THEN SELECT count(*), cust_number INTO _custcount, _custnumber FROM custinfo LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) WHERE (UPPER(cntct_email)=_email) GROUP BY cust_number; IF (NOT FOUND) THEN _custcount := 0; ELSIF(_custcount = 1) THEN RETURN _custnumber; END IF; END IF; IF (_company != '') THEN SELECT count(*), cust_number INTO _custcount, _custnumber FROM custinfo WHERE (UPPER(cust_name)=_company) GROUP BY cust_number; IF (NOT FOUND) THEN _custcount := 0; ELSIF(_custcount = 1) THEN RETURN _custnumber; END IF; END IF; IF (_fullname = '' AND (_first != '' OR _last != '')) THEN _fullname := TRIM(_first || ' ' || _last); END IF; IF (_custcount <= 0 AND _fullname != '') THEN SELECT count(*), cust_number INTO _custcount, _custnumber FROM custinfo WHERE (UPPER(cust_name)=_fullname) GROUP BY cust_number; IF (NOT FOUND) THEN _custcount := 0; ELSIF(_custcount = 1) THEN RETURN _custnumber; END IF; END IF; IF (_custcount > 1) THEN RAISE EXCEPTION 'Found % possible Customers for % and % and %', _custcount, _email, _company, _fullname; END IF; IF (_custcount <= 0 AND _generate) THEN IF (_maxlength < _minlength) THEN RAISE EXCEPTION 'Fix getCustNumberFromInfo: max length < min length'; END IF; IF (_company != '') THEN _candidate := _company; ELSIF (_email != '') THEN _candidate := SUBSTRING(_email FOR POSITION('@' IN _email) - 1); ELSIF (_last != '') THEN _candidate := _last; IF (_first != '') THEN _candidate := _candidate || _first; END IF; ELSIF (_fullname != '' AND (POSITION(' ' IN _fullname) > 0)) THEN _candidate := SUBSTRING(_fullname FROM POSITION(' ' IN _fullname) + 1) || SUBSTRING(_fullname FOR POSITION(' ' IN _fullname) - 1); END IF; WHILE (POSITION(' ' IN _candidate) > 0) LOOP _candidate := SUBSTRING(_candidate FOR POSITION(' ' IN _candidate) - 1) || SUBSTRING(_candidate FROM POSITION(' ' IN _candidate) + 1); END LOOP; FOR _counter IN _minlength.._maxlength LOOP _testme := SUBSTRING(_candidate FOR _counter); IF (NOT EXISTS(SELECT cust_number FROM custinfo WHERE (cust_number=_testme))) THEN _custnumber := _testme; EXIT; END IF; END LOOP; IF (_custnumber IS NULL OR _custnumber = '') THEN IF (LENGTH(_candidate) < _minlength) THEN _minlength := LENGTH(_candidate); END IF; FOR _counter IN _minlength.._maxlength LOOP _loopmax := _loopmax * 10 + 9; _numformat := _numformat || '0'; END LOOP; FOR _counter IN 1.._loopmax LOOP _testme := SUBSTRING(_candidate FOR _minlength) || TRIM(TO_CHAR(_counter, _numformat)); IF (NOT EXISTS(SELECT cust_number FROM custinfo WHERE (cust_number=_testme))) THEN _custnumber := _testme; EXIT; END IF; END LOOP; END IF; IF (_custnumber IS NULL OR _custnumber = '') THEN RAISE EXCEPTION 'Could not generate a new Customer Number'; END IF; END IF; IF (_custnumber IS NULL OR _custnumber = '') THEN RAISE EXCEPTION 'Could not find Customer Number for % and % and %', _email, _company, _fullname; END IF; RETURN _custnumber; END; $_$; ALTER FUNCTION api.getcustnumberfrominfo(text, text, text, text, text, boolean) OWNER TO admin; SET search_path = public, pg_catalog; -- -- Name: formatlocationname(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatlocationname(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLocationid ALIAS FOR $1; _name TEXT; _r RECORD; BEGIN SELECT location_aisle, location_rack, location_bin, location_name INTO _r FROM location WHERE (location_id=pLocationid); IF (FOUND) THEN IF (_r.location_aisle IS NOT NULL) THEN _name := _r.location_aisle; ELSE _name := ''; END IF; IF (_r.location_rack IS NOT NULL) THEN _name := (_name || _r.location_rack); END IF; IF (_r.location_bin IS NOT NULL) THEN _name := (_name || _r.location_bin); END IF; IF (_r.location_name IS NOT NULL) THEN _name := (_name || _r.location_name); END IF; RETURN _name; ELSE RETURN 'N/A'; END IF; END; $_$; ALTER FUNCTION public.formatlocationname(integer) OWNER TO admin; SET default_tablespace = ''; SET default_with_oids = false; -- -- Name: cntslip; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cntslip ( cntslip_id integer DEFAULT nextval(('"cntslip_cntslip_id_seq"'::text)::regclass) NOT NULL, cntslip_cnttag_id integer, cntslip_entered timestamp with time zone, cntslip_posted boolean, cntslip_number text, cntslip_qty numeric(18,6), cntslip_comments text, cntslip_location_id integer, cntslip_lotserial text, cntslip_lotserial_expiration date, cntslip_lotserial_warrpurc date, cntslip_username text ); ALTER TABLE public.cntslip OWNER TO admin; -- -- Name: TABLE cntslip; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE cntslip IS 'Count Slip information'; -- -- Name: invcnt; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE invcnt ( invcnt_id integer DEFAULT nextval(('invcnt_invcnt_id_seq'::text)::regclass) NOT NULL, invcnt_itemsite_id integer, invcnt_tagdate timestamp with time zone, invcnt_cntdate timestamp with time zone, invcnt_qoh_before numeric(18,6), invcnt_qoh_after numeric(18,6), invcnt_matcost numeric(16,6), invcnt_posted boolean, invcnt_postdate timestamp with time zone, invcnt_comments text, invcnt_priority boolean, invcnt_tagnumber text, invcnt_invhist_id integer, invcnt_location_id integer, invcnt_cnt_username text, invcnt_post_username text, invcnt_tag_username text ); ALTER TABLE public.invcnt OWNER TO admin; -- -- Name: TABLE invcnt; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE invcnt IS 'Count Tag information'; -- -- Name: item; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE item ( item_id integer DEFAULT nextval(('item_item_id_seq'::text)::regclass) NOT NULL, item_number text NOT NULL, item_descrip1 text NOT NULL, item_descrip2 text NOT NULL, item_classcode_id integer NOT NULL, item_picklist boolean DEFAULT true NOT NULL, item_comments text, item_sold boolean NOT NULL, item_fractional boolean NOT NULL, item_active boolean NOT NULL, item_type character(1) DEFAULT 'R'::bpchar NOT NULL, item_prodweight numeric(16,2) DEFAULT 0 NOT NULL, item_packweight numeric(16,2) DEFAULT 0 NOT NULL, item_prodcat_id integer NOT NULL, item_exclusive boolean DEFAULT false NOT NULL, item_listprice numeric(16,4) NOT NULL, item_config boolean DEFAULT false, item_extdescrip text, item_upccode text, item_maxcost numeric(16,6) DEFAULT 0 NOT NULL, item_inv_uom_id integer NOT NULL, item_price_uom_id integer NOT NULL, item_warrdays integer DEFAULT 0, item_freightclass_id integer, item_tax_recoverable boolean DEFAULT false NOT NULL, item_listcost numeric(16,6) DEFAULT 0.0 NOT NULL, CONSTRAINT item_item_number_check CHECK ((item_number <> ''::text)), CONSTRAINT item_item_type_check CHECK (((((((((((((item_type = 'P'::bpchar) OR (item_type = 'M'::bpchar)) OR (item_type = 'F'::bpchar)) OR (item_type = 'O'::bpchar)) OR (item_type = 'R'::bpchar)) OR (item_type = 'S'::bpchar)) OR (item_type = 'T'::bpchar)) OR (item_type = 'B'::bpchar)) OR (item_type = 'L'::bpchar)) OR (item_type = 'Y'::bpchar)) OR (item_type = 'C'::bpchar)) OR (item_type = 'K'::bpchar))), CONSTRAINT item_sold_check CHECK ((NOT (item_sold AND (item_prodcat_id = (-1))))) ); ALTER TABLE public.item OWNER TO admin; -- -- Name: TABLE item; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE item IS 'Item information'; -- -- Name: COLUMN item.item_maxcost; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN item.item_maxcost IS 'Maximum cost for item. Used to constrain purchase order price.'; -- -- Name: COLUMN item.item_listcost; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN item.item_listcost IS 'List cost for item. Basis for markup pricing.'; -- -- Name: itemsite; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE itemsite ( itemsite_id integer DEFAULT nextval(('itemsite_itemsite_id_seq'::text)::regclass) NOT NULL, itemsite_item_id integer NOT NULL, itemsite_warehous_id integer, itemsite_qtyonhand numeric(18,6) NOT NULL, itemsite_reorderlevel numeric(18,6) NOT NULL, itemsite_ordertoqty numeric(18,6) NOT NULL, itemsite_cyclecountfreq integer NOT NULL, itemsite_datelastcount date, itemsite_datelastused date, itemsite_loccntrl boolean NOT NULL, itemsite_safetystock numeric(18,6) NOT NULL, itemsite_minordqty numeric(18,6) NOT NULL, itemsite_multordqty numeric(18,6) NOT NULL, itemsite_leadtime integer NOT NULL, itemsite_abcclass character(1), itemsite_issuemethod character(1), itemsite_controlmethod character(1), itemsite_active boolean NOT NULL, itemsite_plancode_id integer NOT NULL, itemsite_costcat_id integer NOT NULL, itemsite_eventfence integer NOT NULL, itemsite_sold boolean NOT NULL, itemsite_stocked boolean NOT NULL, itemsite_freeze boolean DEFAULT false NOT NULL, itemsite_location_id integer NOT NULL, itemsite_useparams boolean NOT NULL, itemsite_useparamsmanual boolean NOT NULL, itemsite_soldranking integer DEFAULT 1, itemsite_createpr boolean, itemsite_location text, itemsite_location_comments text, itemsite_notes text, itemsite_perishable boolean NOT NULL, itemsite_nnqoh numeric(18,6) DEFAULT 0 NOT NULL, itemsite_autoabcclass boolean NOT NULL, itemsite_ordergroup integer DEFAULT 1 NOT NULL, itemsite_disallowblankwip boolean DEFAULT false NOT NULL, itemsite_maxordqty numeric(18,6) DEFAULT 0.0 NOT NULL, itemsite_mps_timefence integer DEFAULT 0 NOT NULL, itemsite_createwo boolean DEFAULT false NOT NULL, itemsite_warrpurc boolean DEFAULT false NOT NULL, itemsite_autoreg boolean DEFAULT false, itemsite_costmethod character(1) NOT NULL, itemsite_value numeric(12,2) NOT NULL, itemsite_ordergroup_first boolean DEFAULT false NOT NULL, itemsite_supply_itemsite_id integer, itemsite_planning_type character(1) DEFAULT 'M'::bpchar NOT NULL, itemsite_wosupply boolean DEFAULT false NOT NULL, itemsite_posupply boolean DEFAULT false NOT NULL, itemsite_lsseq_id integer, itemsite_cosdefault character(1), itemsite_createsopr boolean DEFAULT false, itemsite_createsopo boolean DEFAULT false, itemsite_dropship boolean DEFAULT false, itemsite_recvlocation_id integer DEFAULT (-1) NOT NULL, itemsite_issuelocation_id integer DEFAULT (-1) NOT NULL, itemsite_location_dist boolean DEFAULT false NOT NULL, itemsite_recvlocation_dist boolean DEFAULT false NOT NULL, itemsite_issuelocation_dist boolean DEFAULT false NOT NULL, CONSTRAINT itemsite_itemsite_abcclass_check CHECK (((((itemsite_abcclass = 'A'::bpchar) OR (itemsite_abcclass = 'B'::bpchar)) OR (itemsite_abcclass = 'C'::bpchar)) OR (itemsite_abcclass = 'T'::bpchar))), CONSTRAINT itemsite_itemsite_controlmethod_check CHECK (((((itemsite_controlmethod = 'N'::bpchar) OR (itemsite_controlmethod = 'R'::bpchar)) OR (itemsite_controlmethod = 'S'::bpchar)) OR (itemsite_controlmethod = 'L'::bpchar))), CONSTRAINT itemsite_itemsite_costmethod_check CHECK (((((itemsite_costmethod = 'N'::bpchar) OR (itemsite_costmethod = 'A'::bpchar)) OR (itemsite_costmethod = 'S'::bpchar)) OR (itemsite_costmethod = 'J'::bpchar))), CONSTRAINT itemsite_itemsite_ordergroup_check CHECK ((itemsite_ordergroup > 0)) ); ALTER TABLE public.itemsite OWNER TO admin; -- -- Name: TABLE itemsite; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE itemsite IS 'Item Site information'; -- -- Name: COLUMN itemsite.itemsite_lsseq_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN itemsite.itemsite_lsseq_id IS 'Foreign key reference for automatic lot/serial numbering'; -- -- Name: COLUMN itemsite.itemsite_createsopr; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN itemsite.itemsite_createsopr IS 'Used to flag Sales items that create P/Rs'; -- -- Name: COLUMN itemsite.itemsite_createsopo; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN itemsite.itemsite_createsopo IS 'Used to flag Sales items that create P/Os'; -- -- Name: COLUMN itemsite.itemsite_dropship; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN itemsite.itemsite_dropship IS 'Used to flag Sales items to drop ship'; -- -- Name: whsinfo; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE whsinfo ( warehous_id integer DEFAULT nextval(('warehous_warehous_id_seq'::text)::regclass) NOT NULL, warehous_code text NOT NULL, warehous_descrip text, warehous_fob text, warehous_active boolean, warehous_counttag_prefix text, warehous_counttag_number integer, warehous_bol_prefix text, warehous_bol_number integer, warehous_shipping boolean, warehous_useslips boolean, warehous_usezones boolean, warehous_aislesize integer, warehous_aislealpha boolean, warehous_racksize integer, warehous_rackalpha boolean, warehous_binsize integer, warehous_binalpha boolean, warehous_locationsize integer, warehous_locationalpha boolean, warehous_enforcearbl boolean, warehous_default_accnt_id integer, warehous_shipping_commission numeric(8,4) DEFAULT 0.00, warehous_cntct_id integer, warehous_addr_id integer, warehous_transit boolean DEFAULT false NOT NULL, warehous_shipform_id integer, warehous_shipvia_id integer, warehous_shipcomments text, warehous_costcat_id integer, warehous_sitetype_id integer, warehous_taxzone_id integer, warehous_sequence integer DEFAULT 0 NOT NULL, CONSTRAINT whsinfo_check CHECK (((warehous_transit AND (warehous_costcat_id IS NOT NULL)) OR (NOT warehous_transit))), CONSTRAINT whsinfo_warehous_code_check CHECK ((warehous_code <> ''::text)) ); ALTER TABLE public.whsinfo OWNER TO admin; -- -- Name: TABLE whsinfo; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE whsinfo IS 'Warehouse information'; SET search_path = api, pg_catalog; -- -- Name: physinvcount; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW physinvcount AS SELECT whsinfo.warehous_code AS site, item.item_number, invcnt.invcnt_tagnumber AS tag_number, cntslip.cntslip_qty AS quantity, public.formatlocationname(cntslip.cntslip_location_id) AS location, cntslip.cntslip_lotserial AS lotserial, cntslip.cntslip_comments AS comment FROM ((((public.invcnt JOIN public.itemsite ON ((itemsite.itemsite_id = invcnt.invcnt_itemsite_id))) JOIN public.whsinfo ON ((whsinfo.warehous_id = itemsite.itemsite_warehous_id))) JOIN public.item ON ((item.item_id = itemsite.itemsite_item_id))) LEFT JOIN public.cntslip ON ((cntslip.cntslip_cnttag_id = invcnt.invcnt_id))); ALTER TABLE api.physinvcount OWNER TO admin; -- -- Name: VIEW physinvcount; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW physinvcount IS 'Physical Inventory Count Tag and Slip'; -- -- Name: insertphysinvcount(physinvcount); Type: FUNCTION; Schema: api; Owner: admin -- CREATE FUNCTION insertphysinvcount(physinvcount) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNEW ALIAS FOR $1; _itemid INTEGER; _type TEXT; _siteid INTEGER; _itemsiteid INTEGER; _controlmethod TEXT; _loccntrl BOOLEAN; _locationid INTEGER; _lsid INTEGER; _invcntid INTEGER; _cntslipid INTEGER; _result INTEGER; BEGIN -- Check Item SELECT item_id, item_type INTO _itemid, _type FROM item WHERE (item_number=UPPER(pNEW.item_number)); IF (NOT FOUND OR _type IN ('F', 'R', 'L','J')) THEN SELECT item_id, item_type INTO _itemid, _type FROM item WHERE (item_upccode=pNEW.item_number); IF (NOT FOUND OR _type IN ('F', 'R', 'L','J')) THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because Item % not found or invalid type', pNEW.item_number; END IF; END IF; -- Check Site SELECT warehous_id INTO _siteid FROM whsinfo WHERE (warehous_code=COALESCE(pNEW.site, (SELECT warehous_code FROM usrpref,whsinfo WHERE (usrpref_username=getEffectiveXtUser()) AND (usrpref_name='PreferredWarehouse') AND (warehous_id=CAST(usrpref_value AS INTEGER))))); IF (NOT FOUND) THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because Site % not found', pNEW.site; END IF; -- Check Itemsite SELECT itemsite_id, itemsite_controlmethod, itemsite_loccntrl INTO _itemsiteid, _controlmethod, _loccntrl FROM itemsite WHERE (itemsite_item_id=_itemid) AND (itemsite_warehous_id=_siteid); IF (NOT FOUND) THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because Itemsite %, % not found', pNEW.site, pNEW.item_number; END IF; IF (_controlmethod = 'N') THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because Itemsite %, % not inventory control method', pNEW.site, pNEW.item_number; END IF; IF (_controlmethod IN ('L', 'S') AND COALESCE(pNEW.lotserial, '') = '') THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because Itemsite %, % lot/serial controlled and lotserial not provided', pNEW.site, pNEW.item_number; END IF; IF (_controlmethod = 'S') THEN -- Check for unique serial id SELECT ls_id INTO _lsid FROM ls WHERE (ls_number=pNEW.lotserial); IF (FOUND) THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because Serial %, %, % not unique', pNEW.site, pNEW.item_number, pNEW.lotserial; END IF; END IF; IF (_loccntrl) THEN IF (pNEW.location IS NULL) THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because Itemsite %, % multi location and location not provided', pNEW.site, pNEW.item_number; ELSE -- Check Location SELECT location_id INTO _locationid FROM location WHERE (location_id=getLocationId(pNEW.site, pNEW.location)); IF (NOT FOUND) THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because Location %, % not found', pNEW.site, pNEW.location; END IF; END IF; END IF; -- Create Count Tag SELECT CreateCountTag(_itemsiteid, pNEW.comment, FALSE, FALSE) INTO _invcntid; IF (_invcntid <= 0) THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because CreateCountTag failed for Itemsite %, %', pNEW.site, pNEW.item_number; END IF; -- Create Count Slip INSERT INTO cntslip ( cntslip_cnttag_id, cntslip_username, cntslip_entered, cntslip_posted, cntslip_number, cntslip_qty, cntslip_location_id, cntslip_lotserial, cntslip_lotserial_expiration, cntslip_lotserial_warrpurc, cntslip_comments ) VALUES ( _invcntid, getEffectiveXtUser(), CURRENT_TIMESTAMP, FALSE, 'N/A', pNEW.quantity, COALESCE(_locationid, -1), pNEW.lotserial, NULL, NULL, pNEW.comment ) RETURNING cntslip_id INTO _cntslipid; -- Post Count Slip SELECT postCountSlip(_cntslipid) INTO _result; IF (_result < 0) THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because postCountSlip failed for Itemsite %, %, %', pNEW.site, pNEW.item_number, _result; END IF; RETURN TRUE; END; $_$; ALTER FUNCTION api.insertphysinvcount(physinvcount) OWNER TO admin; SET search_path = public, pg_catalog; -- -- Name: basecurrid(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION basecurrid() RETURNS integer LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE returnVal INTEGER; BEGIN SELECT curr_id INTO returnVal FROM curr_symbol WHERE curr_base = TRUE; IF NOT FOUND THEN RAISE EXCEPTION 'No base currency found'; END IF; RETURN returnVal; END; $$; ALTER FUNCTION public.basecurrid() OWNER TO admin; -- -- Name: formatglaccount(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatglaccount(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAccntid ALIAS FOR $1; _accnt RECORD; BEGIN SELECT COALESCE(accnt_company, '') AS accnt_company, COALESCE(accnt_profit, '') AS accnt_profit, accnt_number, COALESCE(accnt_sub, '') AS accnt_sub INTO _accnt FROM accnt WHERE (accnt_id=pAccntid); IF (NOT FOUND) THEN RETURN 'Error'; END IF; RETURN formatGlAccount(_accnt.accnt_company, _accnt.accnt_profit, _accnt.accnt_number, _accnt.accnt_sub); END; $_$; ALTER FUNCTION public.formatglaccount(integer) OWNER TO admin; -- -- Name: formatsolinenumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatsolinenumber(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoitemid ALIAS FOR $1; _r RECORD; BEGIN SELECT coitem_linenumber, coitem_subnumber INTO _r FROM coitem WHERE(coitem_id=pSoitemid); IF(NOT FOUND) THEN RETURN NULL; END IF; IF(COALESCE(_r.coitem_subnumber, 0) > 0) THEN RETURN _r.coitem_linenumber || '.' || _r.coitem_subnumber; END IF; RETURN _r.coitem_linenumber; END; $_$; ALTER FUNCTION public.formatsolinenumber(integer) OWNER TO admin; -- -- Name: geteffectivextuser(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION geteffectivextuser() RETURNS text LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN /* The default return value of this function is simply the user currently connected. Overload this function from another schema to implement specific user handling from an external application that uses connection pooling. Use setEffectiveXtUser(text) to create a temporary table that inserts user data that can in turn be used as a lookup reference for an over loaded version of this function like so: SELECT effective_value FROM effective_user WHERE effective_key = 'username' */ RETURN CURRENT_USER; END; $$; ALTER FUNCTION public.geteffectivextuser() OWNER TO admin; -- -- Name: getitemtaxtype(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getitemtaxtype(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pTaxzoneid ALIAS FOR $2; _taxtypeid INTEGER; BEGIN SELECT itemtax_taxtype_id INTO _taxtypeid FROM itemtax WHERE ((itemtax_item_id=pItemid) AND (itemtax_taxzone_id=pTaxzoneid)); IF (NOT FOUND) THEN SELECT itemtax_taxtype_id INTO _taxtypeid FROM itemtax WHERE ((itemtax_item_id=pItemid) AND (itemtax_taxzone_id IS NULL)); IF (NOT FOUND) THEN RETURN NULL; END IF; END IF; RETURN _taxtypeid; END; $_$; ALTER FUNCTION public.getitemtaxtype(integer, integer) OWNER TO admin; -- -- Name: cohead; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cohead ( cohead_id integer DEFAULT nextval(('cohead_cohead_id_seq'::text)::regclass) NOT NULL, cohead_number text NOT NULL, cohead_cust_id integer NOT NULL, cohead_custponumber text, cohead_type character(1), cohead_orderdate date, cohead_warehous_id integer, cohead_shipto_id integer, cohead_shiptoname text, cohead_shiptoaddress1 text, cohead_shiptoaddress2 text, cohead_shiptoaddress3 text, cohead_shiptoaddress4 text, cohead_shiptoaddress5 text, cohead_salesrep_id integer NOT NULL, cohead_terms_id integer NOT NULL, cohead_fob text, cohead_shipvia text, cohead_shiptocity text, cohead_shiptostate text, cohead_shiptozipcode text, cohead_freight numeric(16,4) NOT NULL, cohead_misc numeric(16,4) DEFAULT 0 NOT NULL, cohead_imported boolean DEFAULT false, cohead_ordercomments text, cohead_shipcomments text, cohead_shiptophone text, cohead_shipchrg_id integer, cohead_shipform_id integer, cohead_billtoname text, cohead_billtoaddress1 text, cohead_billtoaddress2 text, cohead_billtoaddress3 text, cohead_billtocity text, cohead_billtostate text, cohead_billtozipcode text, cohead_misc_accnt_id integer, cohead_misc_descrip text, cohead_commission numeric(16,4), cohead_miscdate date, cohead_holdtype character(1), cohead_packdate date, cohead_prj_id integer, cohead_wasquote boolean DEFAULT false NOT NULL, cohead_lastupdated timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, cohead_shipcomplete boolean DEFAULT false NOT NULL, cohead_created timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone, cohead_creator text DEFAULT geteffectivextuser(), cohead_quote_number text, cohead_billtocountry text, cohead_shiptocountry text, cohead_curr_id integer DEFAULT basecurrid(), cohead_calcfreight boolean DEFAULT false NOT NULL, cohead_shipto_cntct_id integer, cohead_shipto_cntct_honorific text, cohead_shipto_cntct_first_name text, cohead_shipto_cntct_middle text, cohead_shipto_cntct_last_name text, cohead_shipto_cntct_suffix text, cohead_shipto_cntct_phone text, cohead_shipto_cntct_title text, cohead_shipto_cntct_fax text, cohead_shipto_cntct_email text, cohead_billto_cntct_id integer, cohead_billto_cntct_honorific text, cohead_billto_cntct_first_name text, cohead_billto_cntct_middle text, cohead_billto_cntct_last_name text, cohead_billto_cntct_suffix text, cohead_billto_cntct_phone text, cohead_billto_cntct_title text, cohead_billto_cntct_fax text, cohead_billto_cntct_email text, cohead_taxzone_id integer, cohead_taxtype_id integer, cohead_ophead_id integer, cohead_status character(1) DEFAULT 'O'::bpchar NOT NULL, cohead_saletype_id integer, cohead_shipzone_id integer, CONSTRAINT cohead_check CHECK (((cohead_misc = (0)::numeric) OR ((cohead_misc <> (0)::numeric) AND (cohead_misc_accnt_id IS NOT NULL)))), CONSTRAINT cohead_cohead_number_check CHECK ((cohead_number <> ''::text)) ); ALTER TABLE public.cohead OWNER TO admin; -- -- Name: TABLE cohead; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE cohead IS 'Sales Order header information'; -- -- Name: COLUMN cohead.cohead_saletype_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN cohead.cohead_saletype_id IS 'Associated sale type for sales order.'; -- -- Name: COLUMN cohead.cohead_shipzone_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN cohead.cohead_shipzone_id IS 'Associated shipping zone for sales order.'; -- -- Name: coitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE coitem ( coitem_id integer DEFAULT nextval(('coitem_coitem_id_seq'::text)::regclass) NOT NULL, coitem_cohead_id integer, coitem_linenumber integer NOT NULL, coitem_itemsite_id integer, coitem_status character(1), coitem_scheddate date, coitem_promdate date, coitem_qtyord numeric(18,6) NOT NULL, coitem_unitcost numeric(16,6) NOT NULL, coitem_price numeric(16,4) NOT NULL, coitem_custprice numeric(16,4) NOT NULL, coitem_qtyshipped numeric(18,6) NOT NULL, coitem_order_id integer, coitem_memo text, coitem_imported boolean DEFAULT false, coitem_qtyreturned numeric(18,6), coitem_closedate timestamp with time zone, coitem_custpn text, coitem_order_type character(1), coitem_close_username text, coitem_lastupdated timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, coitem_substitute_item_id integer, coitem_created timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone, coitem_creator text DEFAULT geteffectivextuser(), coitem_prcost numeric(16,6), coitem_qty_uom_id integer NOT NULL, coitem_qty_invuomratio numeric(20,10) NOT NULL, coitem_price_uom_id integer NOT NULL, coitem_price_invuomratio numeric(20,10) NOT NULL, coitem_warranty boolean DEFAULT false NOT NULL, coitem_cos_accnt_id integer, coitem_qtyreserved numeric(18,6) DEFAULT 0.0 NOT NULL, coitem_subnumber integer DEFAULT 0 NOT NULL, coitem_firm boolean DEFAULT false NOT NULL, coitem_taxtype_id integer, coitem_rev_accnt_id integer, coitem_pricemode character(1) DEFAULT 'D'::bpchar NOT NULL, CONSTRAINT coitem_coitem_status_check CHECK ((((coitem_status = 'O'::bpchar) OR (coitem_status = 'C'::bpchar)) OR (coitem_status = 'X'::bpchar))), CONSTRAINT valid_coitem_pricemode CHECK ((coitem_pricemode = ANY (ARRAY['D'::bpchar, 'M'::bpchar]))) ); ALTER TABLE public.coitem OWNER TO admin; -- -- Name: TABLE coitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE coitem IS 'Sales Order Line Item information'; -- -- Name: COLUMN coitem.coitem_pricemode; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN coitem.coitem_pricemode IS 'Pricing mode for sales order item. Valid values are D-discount, and M-markup'; -- -- Name: pohead; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE pohead ( pohead_id integer DEFAULT nextval(('pohead_pohead_id_seq'::text)::regclass) NOT NULL, pohead_status character(1), pohead_number text NOT NULL, pohead_orderdate date, pohead_vend_id integer, pohead_fob text, pohead_shipvia text, pohead_comments text, pohead_freight numeric(16,2) DEFAULT 0, pohead_printed boolean DEFAULT false, pohead_terms_id integer, pohead_warehous_id integer, pohead_vendaddr_id integer, pohead_agent_username text, pohead_curr_id integer DEFAULT basecurrid(), pohead_saved boolean DEFAULT true NOT NULL, pohead_taxzone_id integer, pohead_taxtype_id integer, pohead_dropship boolean DEFAULT false, pohead_vend_cntct_id integer, pohead_vend_cntct_honorific text, pohead_vend_cntct_first_name text, pohead_vend_cntct_middle text, pohead_vend_cntct_last_name text, pohead_vend_cntct_suffix text, pohead_vend_cntct_phone text, pohead_vend_cntct_title text, pohead_vend_cntct_fax text, pohead_vend_cntct_email text, pohead_vendaddress1 text, pohead_vendaddress2 text, pohead_vendaddress3 text, pohead_vendcity text, pohead_vendstate text, pohead_vendzipcode text, pohead_vendcountry text, pohead_shipto_cntct_id integer, pohead_shipto_cntct_honorific text, pohead_shipto_cntct_first_name text, pohead_shipto_cntct_middle text, pohead_shipto_cntct_last_name text, pohead_shipto_cntct_suffix text, pohead_shipto_cntct_phone text, pohead_shipto_cntct_title text, pohead_shipto_cntct_fax text, pohead_shipto_cntct_email text, pohead_shiptoaddress_id integer, pohead_shiptoaddress1 text, pohead_shiptoaddress2 text, pohead_shiptoaddress3 text, pohead_shiptocity text, pohead_shiptostate text, pohead_shiptozipcode text, pohead_shiptocountry text, pohead_cohead_id integer, pohead_released date, CONSTRAINT pohead_pohead_number_check CHECK ((pohead_number <> ''::text)), CONSTRAINT pohead_pohead_status_check CHECK ((((pohead_status = 'U'::bpchar) OR (pohead_status = 'O'::bpchar)) OR (pohead_status = 'C'::bpchar))) ); ALTER TABLE public.pohead OWNER TO admin; -- -- Name: TABLE pohead; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE pohead IS 'Purchase Order header information'; -- -- Name: poitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE poitem ( poitem_id integer DEFAULT nextval(('poitem_poitem_id_seq'::text)::regclass) NOT NULL, poitem_status character(1), poitem_pohead_id integer, poitem_linenumber integer, poitem_duedate date, poitem_itemsite_id integer, poitem_vend_item_descrip text, poitem_vend_uom text, poitem_invvenduomratio numeric(20,10), poitem_qty_ordered numeric(18,6) NOT NULL, poitem_qty_received numeric(18,6) DEFAULT 0.0 NOT NULL, poitem_qty_returned numeric(18,6) DEFAULT 0.0 NOT NULL, poitem_qty_vouchered numeric(18,6) DEFAULT 0.0 NOT NULL, poitem_unitprice numeric(16,6), poitem_vend_item_number text, poitem_comments text, poitem_qty_toreceive numeric(18,6), poitem_expcat_id integer, poitem_itemsrc_id integer, poitem_freight numeric(16,4) DEFAULT 0.0 NOT NULL, poitem_freight_received numeric(16,4) DEFAULT 0.0 NOT NULL, poitem_freight_vouchered numeric(16,4) DEFAULT 0.0 NOT NULL, poitem_prj_id integer, poitem_stdcost numeric(16,6), poitem_bom_rev_id integer, poitem_boo_rev_id integer, poitem_manuf_name text, poitem_manuf_item_number text, poitem_manuf_item_descrip text, poitem_taxtype_id integer, poitem_tax_recoverable boolean DEFAULT true NOT NULL, poitem_rlsd_duedate date, poitem_order_id integer, poitem_order_type character(1), CONSTRAINT poitem_poitem_status_check CHECK ((((poitem_status = 'U'::bpchar) OR (poitem_status = 'O'::bpchar)) OR (poitem_status = 'C'::bpchar))) ); ALTER TABLE public.poitem OWNER TO admin; -- -- Name: TABLE poitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE poitem IS 'Purchase Order Line Item information'; -- -- Name: taxtype; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE taxtype ( taxtype_id integer NOT NULL, taxtype_name text NOT NULL, taxtype_descrip text, taxtype_sys boolean DEFAULT false NOT NULL, CONSTRAINT taxtype_taxtype_name_check CHECK ((taxtype_name <> ''::text)) ); ALTER TABLE public.taxtype OWNER TO admin; -- -- Name: TABLE taxtype; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE taxtype IS 'The list of Tax Types'; -- -- Name: uom; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE uom ( uom_id integer NOT NULL, uom_name text NOT NULL, uom_descrip text, uom_item_weight boolean DEFAULT false NOT NULL, CONSTRAINT uom_uom_name_check CHECK ((uom_name <> ''::text)) ); ALTER TABLE public.uom OWNER TO admin; -- -- Name: TABLE uom; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE uom IS 'Unit of Measure information'; SET search_path = api, pg_catalog; -- -- Name: salesline; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW salesline AS SELECT (cohead.cohead_number)::character varying AS order_number, (public.formatsolinenumber(coitem.coitem_id))::character varying AS line_number, l.item_number, coitem.coitem_custpn AS customer_pn, s.item_number AS substitute_for, whsinfo.warehous_code AS sold_from_site, coitem.coitem_status AS status, coitem.coitem_qtyord AS qty_ordered, q.uom_name AS qty_uom, coitem.coitem_price AS net_unit_price, p.uom_name AS price_uom, coitem.coitem_scheddate AS scheduled_date, coitem.coitem_promdate AS promise_date, coitem.coitem_warranty AS warranty, COALESCE((SELECT taxtype.taxtype_name FROM public.taxtype WHERE (taxtype.taxtype_id = public.getitemtaxtype(l.item_id, cohead.cohead_taxzone_id))), 'None'::text) AS tax_type, CASE WHEN (coitem.coitem_price = (0)::numeric) THEN '100'::text WHEN (coitem.coitem_custprice = (0)::numeric) THEN 'N/A'::text ELSE (round((((1)::numeric - (coitem.coitem_price / coitem.coitem_custprice)) * (100)::numeric), 4))::text END AS discount_pct_from_list, CASE WHEN (coitem.coitem_order_id = (-1)) THEN false ELSE true END AS create_order, CASE WHEN (coitem.coitem_order_id = (-1)) THEN ''::text ELSE ((pohead.pohead_number || '-'::text) || poitem.poitem_linenumber) END AS create_po, coitem.coitem_prcost AS overwrite_po_price, coitem.coitem_memo AS notes, CASE WHEN (coitem.coitem_cos_accnt_id IS NOT NULL) THEN public.formatglaccount(coitem.coitem_cos_accnt_id) ELSE NULL::text END AS alternate_cos_account, CASE WHEN (coitem.coitem_rev_accnt_id IS NOT NULL) THEN public.formatglaccount(coitem.coitem_rev_accnt_id) ELSE NULL::text END AS alternate_rev_account FROM public.cohead, (((public.coitem LEFT JOIN public.itemsite isb ON ((coitem.coitem_substitute_item_id = isb.itemsite_id))) LEFT JOIN public.item s ON ((isb.itemsite_item_id = s.item_id))) LEFT JOIN (public.poitem JOIN public.pohead ON ((poitem.poitem_pohead_id = pohead.pohead_id))) ON ((poitem.poitem_id = coitem.coitem_order_id))), public.itemsite il, public.item l, public.whsinfo, public.uom q, public.uom p WHERE ((((((cohead.cohead_id = coitem.coitem_cohead_id) AND (coitem.coitem_itemsite_id = il.itemsite_id)) AND (il.itemsite_item_id = l.item_id)) AND (il.itemsite_warehous_id = whsinfo.warehous_id)) AND (coitem.coitem_qty_uom_id = q.uom_id)) AND (coitem.coitem_price_uom_id = p.uom_id)) ORDER BY cohead.cohead_number, coitem.coitem_linenumber, coitem.coitem_subnumber; ALTER TABLE api.salesline OWNER TO admin; -- -- Name: VIEW salesline; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW salesline IS 'Sales Order Line Item'; -- -- Name: insertsalesline(salesline); Type: FUNCTION; Schema: api; Owner: admin -- CREATE FUNCTION insertsalesline(salesline) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNEW ALIAS FOR $1; _r RECORD; BEGIN IF (NOT EXISTS (SELECT cohead_id FROM cohead WHERE cohead_number=pNEW.order_number)) THEN RAISE EXCEPTION 'Function insertSalesLine failed because Sales Order % not found', pNEW.order_number; END IF; IF (NOT EXISTS (SELECT item_id FROM item WHERE item_number=pNEW.item_number)) THEN RAISE EXCEPTION 'Function insertSalesLine failed because Item Number % not found', pNEW.item_number; END IF; SELECT * INTO _r FROM cohead, itemsite, item, whsinfo WHERE ((cohead_number=pNEW.order_number) AND (itemsite_warehous_id=warehous_id AND (itemsite_item_id=item_id) AND (itemsite_active) AND (item_number=pNEW.item_number) AND (warehous_active) AND (warehous_id=COALESCE(getWarehousId(pNEW.sold_from_site,'ALL'),cohead_warehous_id,fetchprefwarehousid())))); IF (NOT FOUND) THEN RAISE EXCEPTION 'Function insertSalesLine failed with unknown failure to retrieve Sales Order'; END IF; INSERT INTO coitem ( coitem_cohead_id, coitem_linenumber, coitem_itemsite_id, coitem_status, coitem_scheddate, coitem_promdate, coitem_qtyord, coitem_qty_uom_id, coitem_qty_invuomratio, coitem_qtyshipped, coitem_unitcost, coitem_price, coitem_price_uom_id, coitem_price_invuomratio, coitem_custprice, coitem_order_id, coitem_memo, coitem_imported, coitem_qtyreturned, coitem_custpn, coitem_order_type, coitem_substitute_item_id, coitem_prcost, coitem_taxtype_id, coitem_warranty, coitem_cos_accnt_id, coitem_rev_accnt_id) VALUES ( _r.cohead_id, pNEW.line_number::INTEGER, _r.itemsite_id, pNEW.status, pNEW.scheduled_date, pNEW.promise_date, pNEW.qty_ordered, COALESCE(getUomId(pNEW.qty_uom),_r.item_inv_uom_id), itemuomtouomratio(_r.item_id,COALESCE(getUomId(pNEW.qty_uom),_r.item_inv_uom_id),_r.item_inv_uom_id), 0, stdCost(_r.item_id), COALESCE(pNEW.net_unit_price,itemPrice(_r.item_id,_r.cohead_cust_id, _r.cohead_shipto_id,pNEW.qty_ordered,_r.cohead_curr_id,_r.cohead_orderdate)), COALESCE(getUomId(pNEW.price_uom),_r.item_price_uom_id), itemuomtouomratio(_r.item_id,COALESCE(getUomId(pNEW.price_uom),_r.item_price_uom_id),_r.item_price_uom_id), itemPrice(_r.item_id, _r.cohead_cust_id, _r.cohead_shipto_id, pNEW.qty_ordered, _r.item_inv_uom_id, _r.item_price_uom_id, _r.cohead_curr_id,_r.cohead_orderdate, CASE WHEN (fetchMetricText('soPriceEffective') = 'ScheduleDate') THEN pNEW.scheduled_date WHEN (fetchMetricText('soPriceEffective') = 'OrderDate') THEN _r.cohead_orderdate ELSE CURRENT_DATE END, NULL) -1, pNEW.notes, true, 0, pNEW.customer_pn, CASE WHEN ((pNEW.create_order AND (_r.item_type = 'M')) OR ((pNEW.create_order IS NULL) AND _r.itemsite_createwo)) THEN 'W' WHEN ((pNEW.create_order AND (_r.item_type = 'P')) OR ((pNEW.create_order IS NULL) AND _r.itemsite_createsopr)) THEN 'R' WHEN ((pNEW.create_order AND (_r.item_type = 'P') AND (_r.itemsite_createsopo)) OR ((pNEW.create_order IS NULL) AND _r.itemsite_createsopo)) THEN 'P' END, getitemid(pNEW.substitute_for), pNEW.overwrite_po_price, COALESCE(getTaxTypeId(pNEW.tax_type), getItemTaxType(_r.itemsite_item_id, _r.cohead_taxzone_id)), pNEW.warranty, getGlAccntId(pNEW.alternate_cos_account), getGlAccntId(pNEW.alternate_rev_account) ); RETURN TRUE; END; $_$; ALTER FUNCTION api.insertsalesline(salesline) OWNER TO admin; SET search_path = public, pg_catalog; -- -- Name: _accntdeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _accntdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _accntnum TEXT := formatGLAccount(OLD.accnt_id); _check INTEGER; BEGIN -- This trigger is to protect against accounts that are in use -- Check to see if the passed accnt is used in a Cost Category SELECT costcat_id INTO _check FROM costcat WHERE ( (costcat_asset_accnt_id=OLD.accnt_id) OR (costcat_liability_accnt_id=OLD.accnt_id) OR (costcat_adjustment_accnt_id=OLD.accnt_id) OR (costcat_purchprice_accnt_id=OLD.accnt_id) OR (costcat_laboroverhead_accnt_id=OLD.accnt_id) OR (costcat_scrap_accnt_id=OLD.accnt_id) OR (costcat_invcost_accnt_id=OLD.accnt_id) OR (costcat_wip_accnt_id=OLD.accnt_id) OR (costcat_shipasset_accnt_id=OLD.accnt_id) OR (costcat_mfgscrap_accnt_id=OLD.accnt_id) OR (costcat_transform_accnt_id=OLD.accnt_id) OR (costcat_freight_accnt_id=OLD.accnt_id) ) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in Cost Category'; END IF; -- Check to see if the passed accnt is used in a Sales Account Assignment SELECT salesaccnt_id INTO _check FROM salesaccnt WHERE ( (salesaccnt_sales_accnt_id=OLD.accnt_id) OR (salesaccnt_credit_accnt_id=OLD.accnt_id) OR (salesaccnt_cos_accnt_id=OLD.accnt_id) ) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in Sales Account Assignment'; END IF; -- Check to see if the passed accnt is used in a A/R Account Assignment SELECT araccnt_id INTO _check FROM araccnt WHERE ( (araccnt_freight_accnt_id=OLD.accnt_id) OR (araccnt_ar_accnt_id=OLD.accnt_id) OR (araccnt_prepaid_accnt_id=OLD.accnt_id) ) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in A/R Account Assignment'; END IF; -- Check to see if the passed accnt is used in a Warehouse SELECT warehous_id INTO _check FROM whsinfo WHERE (warehous_default_accnt_id=OLD.accnt_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in Site'; END IF; -- Check to see if the passed accnt is used in a Bank Account SELECT bankaccnt_id INTO _check FROM bankaccnt WHERE (bankaccnt_accnt_id=OLD.accnt_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in Bank Account'; END IF; -- Check to see if the passed accnt is used in an Expense Category SELECT expcat_id INTO _check FROM expcat WHERE ( (expcat_exp_accnt_id=OLD.accnt_id) OR (expcat_liability_accnt_id=OLD.accnt_id) OR (expcat_purchprice_accnt_id=OLD.accnt_id) OR (expcat_freight_accnt_id=OLD.accnt_id) ) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in Expense Category'; END IF; -- Check to see if the passed accnt is used in a Tax Code SELECT tax_id INTO _check FROM tax WHERE (tax_sales_accnt_id=OLD.accnt_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in Tax Code'; END IF; -- Check to see if the passed accnt is used in a Standard Journal Item SELECT stdjrnlitem_id INTO _check FROM stdjrnlitem WHERE (stdjrnlitem_accnt_id=OLD.accnt_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in Standard Journal Item'; END IF; -- Check to see if the passed accnt is used in a A/P Account Assignment SELECT apaccnt_ap_accnt_id INTO _check FROM apaccnt WHERE ( (apaccnt_ap_accnt_id=OLD.accnt_id) OR (apaccnt_prepaid_accnt_id=OLD.accnt_id) OR (apaccnt_discount_accnt_id=OLD.accnt_id) ) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in A/P Account Assignment'; END IF; -- Check to see if the passed accnt is used in an A/R Open Item record SELECT aropen_accnt_id INTO _check FROM aropen WHERE (aropen_accnt_id=OLD.accnt_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in A/R Open Item'; END IF; -- Check to see if the passed accnt has been used in the G/L SELECT gltrans_accnt_id INTO _check FROM gltrans WHERE (gltrans_accnt_id=OLD.accnt_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in G/L Transaction'; END IF; SELECT sltrans_accnt_id INTO _check FROM sltrans WHERE (sltrans_accnt_id=OLD.accnt_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in G/L Journal Transaction'; END IF; SELECT glseries_accnt_id INTO _check FROM glseries WHERE (glseries_accnt_id=OLD.accnt_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in G/L Series'; END IF; SELECT trialbal_accnt_id INTO _check FROM trialbal WHERE (trialbal_accnt_id=OLD.accnt_id) AND (trialbal_beginning != 0 OR trialbal_ending != 0) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in Trial Balance'; END IF; SELECT cashrcptmisc_accnt_id INTO _check FROM cashrcptmisc WHERE (cashrcptmisc_accnt_id=OLD.accnt_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in Cash Receipt Misc. Application'; END IF; -- TODO: everything above here should be replaced by fkeys IF (OLD.accnt_id = fetchMetricValue('DefaultAPAccount')) THEN RAISE EXCEPTION 'Cannot delete the default A/P Account [xtuple: accnt, -1, %]', _accntnum; ELSIF (OLD.accnt_id = fetchMetricValue('DefaultARAccount')) THEN RAISE EXCEPTION 'Cannot delete the default A/R Account [xtuple: accnt, -2, %]', _accntnum; END IF; RETURN OLD; END; $$; ALTER FUNCTION public._accntdeletetrigger() OWNER TO admin; -- -- Name: _accnttrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _accnttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ffSub BOOLEAN; ffProfit BOOLEAN; result INTEGER; BEGIN SELECT (metric_value='t') INTO ffSub FROM metric WHERE(metric_name='GLFFSubaccounts') LIMIT 1; ffSub := COALESCE(ffSub, false); SELECT (metric_value='t') INTO ffProfit FROM metric WHERE(metric_name='GLFFProfitCenters') LIMIT 1; ffProfit := COALESCE(ffSub, false); IF (NEW.accnt_sub IS NOT NULL AND ffSub = false) THEN SELECT subaccnt_id INTO result FROM subaccnt WHERE(subaccnt_number=NEW.accnt_sub) LIMIT 1; IF (NOT FOUND) THEN RAISE EXCEPTION 'You must supply a valid Sub Account Number.'; END IF; END IF; IF (NEW.accnt_profit IS NOT NULL AND ffProfit = false) THEN SELECT prftcntr_id INTO result FROM prftcntr WHERE(prftcntr_number=NEW.accnt_profit) LIMIT 1; IF (NOT FOUND) THEN RAISE EXCEPTION 'You must supply a valid Profit Center Number.'; END IF; END IF; IF (TG_OP = 'UPDATE') THEN IF ((NEW.accnt_type != OLD.accnt_type) AND (SELECT (count(*) > 0) FROM gltrans WHERE (gltrans_accnt_id=NEW.accnt_id))) THEN RAISE EXCEPTION 'You may not change the account type of an account that has transaction history'; END IF; END IF; NEW.accnt_name := formatGlAccount(NEW.accnt_company, NEW.accnt_profit, NEW.accnt_number, NEW.accnt_sub); RETURN NEW; END; $$; ALTER FUNCTION public._accnttrigger() OWNER TO admin; -- -- Name: _accntuniquetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _accntuniquetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN -- This trigger is to protect against id collision on inherited tables since there is no way -- to enforce that with regular constraints. It should be applied to accnt and any table that -- inherits accnt. IF (SELECT (count(accnt_id) > 0) FROM accnt WHERE (accnt_id = NEW.accnt_id)) THEN RAISE EXCEPTION 'Can not create record on account with duplicate key %.', NEW.accnt_id; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._accntuniquetrigger() OWNER TO admin; -- -- Name: _addrtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _addrtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _uses INTEGER := 0; BEGIN IF (TG_OP = 'INSERT') THEN --- clear the number from the issue cache PERFORM clearNumberIssue('AddressNumber', NEW.addr_number); ELSE SELECT count(*) INTO _uses FROM cntct WHERE ((cntct_addr_id=OLD.addr_id) AND cntct_active); END IF; IF (TG_OP = 'UPDATE') THEN IF (OLD.addr_active AND NOT NEW.addr_active AND _uses > 0) THEN RAISE EXCEPTION 'Cannot inactivate Address with Active Contacts (%)', _uses; END IF; ELSIF (TG_OP = 'DELETE') THEN IF (_uses > 0) THEN RAISE EXCEPTION 'Cannot Delete Address with Active Contacts (%)', _uses; END IF; UPDATE cntct SET cntct_addr_id = NULL WHERE ((cntct_addr_id=OLD.addr_id) AND (NOT cntct_active)); RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._addrtrigger() OWNER TO admin; -- -- Name: _alarmbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _alarmbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN PERFORM clearNumberIssue('AlarmNumber', NEW.alarm_number); RETURN NEW; END; $$; ALTER FUNCTION public._alarmbeforetrigger() OWNER TO admin; -- -- Name: _apapplytrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _apapplytrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _tpaid NUMERIC; BEGIN -- get the exchange rate for the doc date IF (TG_OP = 'INSERT') THEN SELECT currtocurr(NEW.apapply_curr_id,apopen_curr_id,NEW.apapply_amount,NEW.apapply_postdate) INTO _tpaid FROM apopen WHERE ( apopen_id=NEW.apapply_target_apopen_id ); IF (FOUND) THEN NEW.apapply_target_paid := _tpaid; ELSE RAISE EXCEPTION 'Error calculating paid amount on application'; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._apapplytrigger() OWNER TO admin; -- -- Name: _apopentrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _apopentrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _currrate NUMERIC; BEGIN -- get the base exchange rate for the doc date IF (TG_OP = 'INSERT' AND NEW.apopen_curr_rate IS NULL) THEN SELECT curr_rate INTO _currrate FROM curr_rate WHERE ( (NEW.apopen_curr_id=curr_id) AND ( NEW.apopen_docdate BETWEEN curr_effective AND curr_expires) ); IF (FOUND) THEN NEW.apopen_curr_rate := _currrate; ELSE RAISE EXCEPTION 'Currency exchange rate not found'; END IF; END IF; NEW.apopen_open := NEW.apopen_amount > NEW.apopen_paid; IF (TG_OP = 'INSERT') THEN IF (NEW.apopen_open=FALSE) THEN NEW.apopen_status='C'; ELSE NEW.apopen_status='O'; END IF; --- clear the number from the issue cache PERFORM clearNumberIssue('APMemoNumber', NEW.apopen_docnumber); END IF; IF (TG_OP = 'UPDATE') THEN IF ((OLD.apopen_open=TRUE) AND (NEW.apopen_open=FALSE)) THEN NEW.apopen_status='C'; IF (NEW.apopen_closedate IS NULL) THEN NEW.apopen_closedate=CURRENT_DATE; END IF; END IF; IF ((OLD.apopen_open=FALSE) AND (NEW.apopen_open=TRUE)) THEN NEW.apopen_status='O'; NEW.apopen_closedate=NULL; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._apopentrigger() OWNER TO admin; -- -- Name: _arapplytrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _arapplytrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _tpaid NUMERIC; BEGIN -- get the exchange rate for the doc date IF (TG_OP = 'INSERT') THEN IF (NEW.arapply_target_doctype != 'K') THEN SELECT round(currtocurr(NEW.arapply_curr_id,aropen_curr_id,NEW.arapply_applied,NEW.arapply_postdate),2) INTO NEW.arapply_target_paid FROM aropen WHERE ( aropen_id=NEW.arapply_target_aropen_id ); ELSE SELECT round(currtocurr(NEW.arapply_curr_id,aropen_curr_id,NEW.arapply_applied,NEW.arapply_postdate),2) INTO NEW.arapply_target_paid FROM aropen WHERE ( aropen_id=NEW.arapply_source_aropen_id ); END IF; IF NOT FOUND THEN NEW.arapply_target_paid := NEW.arapply_applied; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._arapplytrigger() OWNER TO admin; -- -- Name: _aropenaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _aropenaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _openAmount NUMERIC; _lateCount INTEGER := 0; _graceDays INTEGER; _checkLate BOOLEAN := false; _checkLimit BOOLEAN := false; _id INTEGER; BEGIN IF (TG_OP = 'INSERT') THEN _id := NEW.aropen_id; ELSE _id := OLD.aropen_id; END IF; -- If metric is set then auto close any associated incidents when AR is closed IF (fetchMetricBool('AutoCloseARIncident')) THEN IF (NEW.aropen_open = FALSE) THEN UPDATE incdt SET incdt_status='L' WHERE (incdt_aropen_id=_id); END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._aropenaftertrigger() OWNER TO admin; -- -- Name: _aropentrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _aropentrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _openAmount NUMERIC; _p RECORD; _lateCount INTEGER := 0; _graceDays INTEGER; _checkLate BOOLEAN := false; _checkLimit BOOLEAN := false; _id INTEGER; _currRate NUMERIC; BEGIN -- Checks -- Start with privileges IF ( (NOT checkPrivilege('MaintainARMemos')) AND (NOT checkPrivilege('PostMiscInvoices')) AND (NOT checkPrivilege('PostARDocuments')) ) THEN RAISE EXCEPTION 'You do not have privileges to maintain A/R Memos.'; END IF; IF ( (NEW.aropen_docnumber IS NULL) OR (LENGTH(NEW.aropen_docnumber) = 0) ) THEN RAISE EXCEPTION 'You must enter a valid Document # for this A/R Memo.'; END IF; IF ( (NEW.aropen_amount IS NOT NULL) AND (NEW.aropen_amount < 0) ) THEN RAISE EXCEPTION 'You must enter a positive Amount for this A/R Memo.'; END IF; IF (TG_OP IN ('INSERT', 'UPDATE') AND NEW.aropen_cust_id < 0) THEN RAISE NOTICE 'Fixing deprecated use of negative aropen_cust_id'; NEW.aropen_cust_id := NULL; END IF; IF (TG_OP IN ('INSERT', 'UPDATE') AND NEW.aropen_salesrep_id < 0) THEN RAISE NOTICE 'Fixing deprecated use of negative aropen_salesrep_id'; NEW.aropen_salesrep_id := NULL; END IF; IF (TG_OP = 'INSERT') THEN SELECT aropen_id INTO _id FROM aropen WHERE ( (aropen_doctype=NEW.aropen_doctype) AND (aropen_docnumber=NEW.aropen_docnumber) ) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'This Document Type/Number already exists. You may not enter a duplicate A/R Memo.'; END IF; --- clear the number from the issue cache if applicable PERFORM clearNumberIssue('ARMemoNumber', NEW.aropen_docnumber); END IF; -- Determine the number of late invoices IF ( SELECT (metric_value='t') FROM metric WHERE(metric_name='AutoCreditWarnLateCustomers')) THEN _checkLate := true; SELECT COALESCE(metric_value::integer, _graceDays) INTO _graceDays FROM metric WHERE(metric_name='DefaultAutoCreditWarnGraceDays'); IF (NOT FOUND) THEN _graceDays := 30; END IF; SELECT COALESCE(cust_gracedays, _graceDays) INTO _graceDays FROM custinfo WHERE(cust_id=NEW.aropen_cust_id); IF (NOT FOUND) THEN _graceDays := 30; END IF; SELECT count(aropen_id) INTO _lateCount FROM aropen WHERE((NEW.aropen_cust_id = aropen_cust_id) AND (aropen_open) AND (aropen_amount > aropen_paid) AND (aropen_doctype IN ('I', 'D')) AND (aropen_duedate < (CURRENT_DATE - _graceDays))); -- Adjust _lateCount if late invoice being paid IF ( (NEW.aropen_paid = NEW.aropen_amount) AND (NEW.aropen_doctype IN ('I', 'D')) AND (NEW.aropen_duedate < (CURRENT_DATE - _graceDays))) THEN _lateCount := _lateCount - 1; END IF; END IF; -- get the base exchange rate for the doc date IF (TG_OP = 'INSERT' AND NEW.aropen_curr_rate IS NULL) THEN SELECT curr_rate INTO _currrate FROM curr_rate WHERE ( (NEW.aropen_curr_id=curr_id) AND ( NEW.aropen_docdate BETWEEN curr_effective AND curr_expires) ); IF (FOUND) THEN NEW.aropen_curr_rate := _currrate; ELSE RAISE EXCEPTION 'Currency exchange rate not found'; END IF; END IF; -- Close this aropen if it is paid IF (NEW.aropen_paid = NEW.aropen_amount) THEN NEW.aropen_open=FALSE; -- Remove any aropenalloc regards that reference this aropen item DELETE FROM aropenalloc WHERE (aropenalloc_aropen_id=NEW.aropen_id); END IF; IF (TG_OP = 'INSERT') THEN IF (NEW.aropen_open=FALSE) AND (NEW.aropen_closedate IS NULL) THEN NEW.aropen_closedate=current_date; END IF; END IF; IF (TG_OP = 'UPDATE') THEN IF ((OLD.aropen_open=TRUE) AND (NEW.aropen_open=FALSE) AND (NEW.aropen_closedate IS NULL)) THEN NEW.aropen_closedate=current_date; END IF; END IF; -- Only check if the customer in question has a non-zero Credit Limit SELECT cust_id, cust_creditlmt, cust_creditstatus, cust_autoupdatestatus, cust_autoholdorders INTO _p FROM custinfo WHERE (cust_id=NEW.aropen_cust_id); IF (_p.cust_creditlmt > 0) THEN _checkLimit := true; SELECT COALESCE(SUM( CASE WHEN (aropen_doctype IN ('I', 'D')) THEN (aropen_amount - aropen_paid) ELSE ((aropen_amount - aropen_paid) * -1) END ), 0.0) INTO _openAmount FROM aropen AS current WHERE ( (current.aropen_cust_id=NEW.aropen_cust_id) AND (current.aropen_open) AND (current.aropen_id <> NEW.aropen_id) ); -- Add in the value of the current aropen item IF (NEW.aropen_doctype IN ('I', 'D')) THEN _openAmount := (_openAmount + (NEW.aropen_amount - NEW.aropen_paid)); ELSE _openAmount := (_openAmount - (NEW.aropen_amount - NEW.aropen_paid)); END IF; ELSE _openAmount := 0; END IF; IF (_checkLimit OR _checkLate) THEN -- Handle a Customer that is going under its credit limit IF ((_p.cust_creditlmt >= _openAmount) AND (_lateCount <= 0)) THEN -- Handle the Customer Status IF ( (_p.cust_autoupdatestatus) AND (_p.cust_creditstatus='W') ) THEN UPDATE custinfo SET cust_creditstatus='G' WHERE (cust_id=NEW.aropen_cust_id); END IF; -- Handle the open Sales Orders IF (_p.cust_autoholdorders) THEN UPDATE cohead SET cohead_holdtype='N' FROM coitem WHERE ( (coitem_cohead_id=cohead_id) AND (cohead_holdtype='C') AND (coitem_status='O') AND (cohead_cust_id=_p.cust_id) ); END IF; -- Handle a Customer that is going over its credit limit ELSIF ((_p.cust_creditlmt < _openAmount) OR (_lateCount > 0)) THEN -- Handle the Customer Status IF ( (_p.cust_autoupdatestatus) AND (_p.cust_creditstatus = 'G') ) THEN UPDATE custinfo SET cust_creditstatus='W' WHERE (cust_id=NEW.aropen_cust_id); END IF; -- Handle the open Sales Orders IF (_p.cust_autoholdorders) THEN UPDATE cohead SET cohead_holdtype='C' FROM coitem WHERE ( (coitem_cohead_id=cohead_id) AND (cohead_holdtype='N') AND (coitem_status='O') AND (cohead_cust_id=_p.cust_id) ); END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._aropentrigger() OWNER TO admin; -- -- Name: _bomheadtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _bomheadtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _revid INTEGER; _check TEXT; BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainBOMs')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Bills of Material.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._bomheadtrigger() OWNER TO admin; -- -- Name: _bomitemaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _bomitemaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN IF ( SELECT fetchMetricBool('ItemChangeLog') ) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment('ChangeLog', 'BMI', NEW.bomitem_id, ('Created BOM Item Sequence ' || NEW.bomitem_seqnumber::TEXT)); ELSIF (TG_OP = 'UPDATE') THEN IF (NEW.bomitem_effective <> OLD.bomitem_effective) THEN PERFORM postComment( 'ChangeLog', 'BMI', NEW.bomitem_id, ( 'Effective Date Changed from ' || formatDate(OLD.bomitem_effective, 'Always') || ' to ' || formatDate(NEW.bomitem_effective, 'Always' ) ) ); END IF; IF (NEW.bomitem_expires <> OLD.bomitem_expires) THEN PERFORM postComment( 'ChangeLog', 'BMI', NEW.bomitem_id, ( 'Expiration Date Changed from ' || formatDate(OLD.bomitem_expires, 'Never') || ' to ' || formatDate(NEW.bomitem_expires, 'Never' ) ) ); END IF; IF (NEW.bomitem_qtyfxd <> OLD.bomitem_qtyfxd) THEN PERFORM postComment( 'ChangeLog', 'BMI', NEW.bomitem_id, ( 'Fixed Qty. Changed from ' || formatQtyPer(OLD.bomitem_qtyfxd) || ' to ' || formatQtyPer(NEW.bomitem_qtyfxd ) ) ); END IF; IF (NEW.bomitem_qtyper <> OLD.bomitem_qtyper) THEN PERFORM postComment( 'ChangeLog', 'BMI', NEW.bomitem_id, ( 'Qty. Per Changed from ' || formatQtyPer(OLD.bomitem_qtyper) || ' to ' || formatQtyPer(NEW.bomitem_qtyper ) ) ); END IF; IF (NEW.bomitem_scrap <> OLD.bomitem_scrap) THEN PERFORM postComment( 'ChangeLog', 'BMI', NEW.bomitem_id, ( 'Scrap % Changed from ' || formatPrcnt(OLD.bomitem_scrap) || ' to ' || formatPrcnt(NEW.bomitem_scrap ) ) ); END IF; IF (NEW.bomitem_issuemethod <> OLD.bomitem_issuemethod) THEN PERFORM postComment( 'ChangeLog', 'BMI', NEW.bomitem_id, ( 'Issue Method Changed from ' || (CASE WHEN(OLD.bomitem_issuemethod='S') THEN 'Push' WHEN(OLD.bomitem_issuemethod='L') THEN 'Pull' WHEN(OLD.bomitem_issuemethod='M') THEN 'Mixed' ELSE OLD.bomitem_issuemethod END) || ' to ' || (CASE WHEN(NEW.bomitem_issuemethod='S') THEN 'Push' WHEN(NEW.bomitem_issuemethod='L') THEN 'Pull' WHEN(NEW.bomitem_issuemethod='M') THEN 'Mixed' ELSE NEW.bomitem_issuemethod END) ) ); END IF; IF (NEW.bomitem_ecn <> OLD.bomitem_ecn) THEN PERFORM postComment( 'ChangeLog', 'BMI', NEW.bomitem_id, ( 'ECN Changed from ' || OLD.bomitem_ecn || ' to ' || NEW.bomitem_ecn ) ); END IF; IF (OLD.bomitem_createwo <> NEW.bomitem_createwo) THEN IF (NEW.bomitem_createwo) THEN PERFORM postComment('ChangeLog', 'BMI', NEW.bomitem_id, 'Create Child W/O activated'); ELSE PERFORM postComment('ChangeLog', 'BMI', NEW.bomitem_id, 'Create Child W/O deactivated'); END IF; END IF; IF (OLD.bomitem_issuewo <> NEW.bomitem_issuewo) THEN IF (NEW.bomitem_issuewo) THEN PERFORM postComment('ChangeLog', 'BMI', NEW.bomitem_id, 'Issue Child W/O activated'); ELSE PERFORM postComment('ChangeLog', 'BMI', NEW.bomitem_id, 'Issue Child W/O deactivated'); END IF; END IF; END IF; END IF; IF (TG_OP = 'DELETE') THEN DELETE FROM comment WHERE ( (comment_source='BMI') AND (comment_source_id=OLD.bomitem_id) ); RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._bomitemaftertrigger() OWNER TO admin; -- -- Name: _bomitembeforedeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _bomitembeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN DELETE FROM comment WHERE ( (comment_source='BMI') AND (comment_source_id=OLD.bomitem_id) ); RETURN OLD; END; $$; ALTER FUNCTION public._bomitembeforedeletetrigger() OWNER TO admin; -- -- Name: _bomitembeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _bomitembeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _bomworksetid INTEGER; _bomworkid INTEGER; _seqNumber INTEGER; _parentItem RECORD; BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainBOMs')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Bills of Material.'; END IF; -- Cache Parent Item SELECT * INTO _parentItem FROM item WHERE (item_id=NEW.bomitem_parent_item_id); IF (TG_OP = 'INSERT') THEN -- Make sure that the parent and component are not the same IF (NEW.bomitem_parent_item_id = NEW.bomitem_item_id) THEN RAISE EXCEPTION 'BOM Item Parent and Component Item cannot be the same. [xtuple: createBOMItem, -1]'; END IF; -- Make sure that the parent is not used in the component at some level IF ( SELECT (item_type IN ('M', 'F')) FROM item WHERE (item_id=NEW.bomitem_item_id) ) THEN SELECT indentedWhereUsed(NEW.bomitem_parent_item_id) INTO _bomworksetid; SELECT bomwork_id INTO _bomworkid FROM bomwork WHERE ((bomwork_set_id=_bomworksetid) AND (bomwork_item_id=NEW.bomitem_item_id)) LIMIT 1; IF (FOUND) THEN PERFORM deleteBOMWorkset(_bomworksetid); RAISE EXCEPTION 'BOM Item Parent is used by Component, BOM is recursive. [xtuple: createBOMItem, -2]'; END IF; END IF; PERFORM deleteBOMWorkset(_bomworksetid); -- Set defaults NEW.bomitem_rev_id := COALESCE(NEW.bomitem_rev_id, -1); NEW.bomitem_booitem_seq_id := COALESCE(NEW.bomitem_booitem_seq_id, -1); NEW.bomitem_schedatwooper := COALESCE(NEW.bomitem_schedatwooper, FALSE); IF (NEW.bomitem_seqnumber IS NULL) THEN -- Grab the next Sequence Number, if any SELECT MAX(bomitem_seqnumber) INTO _seqNumber FROM bomitem(NEW.bomitem_parent_item_id,NEW.bomitem_rev_id); IF (_seqNumber IS NOT NULL) THEN NEW.bomitem_seqnumber := (_seqNumber + 10); ELSE NEW.bomitem_seqnumber := 10; END IF; END IF; END IF; -- end Insert specific IF (TG_OP = 'UPDATE') THEN -- Disallow changes that would compromise revision control integrity IF (NEW.bomitem_parent_item_id != OLD.bomitem_parent_item_id) THEN RAISE EXCEPTION 'Parent Item ID may not be changed.'; END IF; IF (NEW.bomitem_item_id != OLD.bomitem_item_id) THEN RAISE EXCEPTION 'Item ID may not be changed.'; END IF; IF ((fetchMetricBool('RevControl')) AND (OLD.bomitem_rev_id > -1)) THEN IF (SELECT (rev_status = 'I') FROM rev WHERE (rev_id=OLD.bomitem_rev_id)) THEN RAISE EXCEPTION 'Bill of material is Inactive and may not be modified'; END IF; END IF; END IF; -- end Update specific -- Check for valid UOM IF (SELECT (count(*) != 1) FROM (SELECT uom_id FROM item JOIN uom ON (item_inv_uom_id=uom_id) WHERE(item_id=NEW.bomitem_item_id) UNION SELECT uom_id FROM item JOIN itemuomconv ON (itemuomconv_item_id=item_id) JOIN uom ON (itemuomconv_to_uom_id=uom_id), itemuom, uomtype WHERE((itemuomconv_from_uom_id=item_inv_uom_id) AND (item_id=NEW.bomitem_item_id) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (uomtype_id=itemuom_uomtype_id) AND (uomtype_name='MaterialIssue')) UNION SELECT uom_id FROM item JOIN itemuomconv ON (itemuomconv_item_id=item_id) JOIN uom ON (itemuomconv_from_uom_id=uom_id), itemuom, uomtype WHERE((itemuomconv_to_uom_id=item_inv_uom_id) AND (item_id=NEW.bomitem_item_id) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (uomtype_id=itemuom_uomtype_id) AND (uomtype_name='MaterialIssue'))) AS data WHERE (uom_id=NEW.bomitem_uom_id)) THEN RAISE EXCEPTION 'Unit of Measure Invalid for Material Issue.'; END IF; -- Disallow configuration parameters if parent is not a job item IF (NEW.bomitem_char_id IS NOT NULL) THEN IF (NOT _parentItem.item_config) THEN RAISE EXCEPTION 'Configuration characteristics may only be defined for Configured Items'; END IF; END IF; -- Kit items must be sold and not kits themselves IF (_parentItem.item_type = 'K') THEN IF (SELECT (COUNT(item_id) = 0) FROM item WHERE ((item_id=NEW.bomitem_item_id) AND (item_sold) AND (item_type != 'K'))) THEN RAISE EXCEPTION 'Bill of Material Items for kits must be sold and not kits themselves'; END IF; END IF; -- Over ride logic to disallow invalid data IF (NEW.bomitem_createwo) THEN IF (SELECT (item_type != 'M') FROM item WHERE (item_id=NEW.bomitem_item_id)) THEN NEW.bomitem_createwo := FALSE; END IF; IF (NEW.bomitem_booitem_seq_id = -1) THEN NEW.bomitem_schedatwooper := FALSE; END IF; END IF; NEW.bomitem_moddate := COALESCE(NEW.bomitem_moddate, CURRENT_DATE); RETURN NEW; END; $$; ALTER FUNCTION public._bomitembeforetrigger() OWNER TO admin; -- -- Name: _bomitemsubtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _bomitemsubtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainBOMs')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Bills of Material.'; END IF; IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END; $$; ALTER FUNCTION public._bomitemsubtrigger() OWNER TO admin; -- -- Name: _cashrcptitemaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _cashrcptitemaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _total NUMERIC; BEGIN -- Checks -- Total Over Application Warning SELECT (cashrcpt_amount - SUM(COALESCE(cashrcptitem_amount, 0))) INTO _total FROM cashrcptitem JOIN cashrcpt ON (cashrcpt_id=cashrcptitem_cashrcpt_id) WHERE (cashrcptitem_cashrcpt_id=NEW.cashrcptitem_cashrcpt_id) GROUP BY cashrcpt_amount; IF (_total < 0.0) THEN RAISE WARNING 'Warning -- the Cash Receipt has been over applied.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._cashrcptitemaftertrigger() OWNER TO admin; -- -- Name: _cashrcptitemtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _cashrcptitemtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _openAmount NUMERIC; BEGIN -- Checks -- Start with Privileges IF (TG_OP = 'INSERT') THEN SELECT checkPrivilege('MaintainCashReceipts') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to add a new Cash Receipt Application.'; END IF; ELSE SELECT checkPrivilege('MaintainCashReceipts') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to alter a Cash Receipt Application.'; END IF; END IF; -- Over Application SELECT round(currToCurr(aropen_curr_id, cashrcpt_curr_id, aropen_amount - aropen_paid, cashrcpt_distdate) - COALESCE((SELECT SUM(cashrcptitem_amount) FROM cashrcptitem, cashrcpt WHERE ((cashrcpt_id=cashrcptitem_cashrcpt_id) AND (NOT cashrcpt_void) AND (NOT cashrcpt_posted) AND (cashrcpt_id != NEW.cashrcptitem_cashrcpt_id) AND (cashrcptitem_aropen_id=NEW.cashrcptitem_aropen_id))), 0),2) INTO _openAmount FROM aropen, cashrcpt WHERE ( (aropen_id=NEW.cashrcptitem_aropen_id) AND (cashrcpt_id=NEW.cashrcptitem_cashrcpt_id) ); IF (NEW.cashrcptitem_amount > _openAmount) THEN RAISE EXCEPTION 'You may not apply more than the balance of this item.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._cashrcptitemtrigger() OWNER TO admin; -- -- Name: _cashrcptmisctrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _cashrcptmisctrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; BEGIN -- Checks -- Start with Privileges IF (TG_OP = 'INSERT') THEN SELECT checkPrivilege('MaintainCashReceipts') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to add a new Cash Receipt Misc. Application.'; END IF; ELSE SELECT checkPrivilege('MaintainCashReceipts') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to alter a Cash Receipt Misc. Application.'; END IF; END IF; -- Account is required IF (NEW.cashrcptmisc_accnt_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid GL Account.'; END IF; -- Amount is required IF (COALESCE(NEW.cashrcptmisc_amount, 0) = 0) THEN RAISE EXCEPTION 'You must supply a valid Amount.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._cashrcptmisctrigger() OWNER TO admin; -- -- Name: _cashrcpttrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _cashrcpttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _checkId INTEGER; _currId INTEGER; _bankCurrId INTEGER; _evntType TEXT; _whsId INTEGER; _custNumber TEXT; _currrate NUMERIC; BEGIN -- Checks -- Start with privileges IF (TG_OP = 'INSERT') THEN SELECT checkPrivilege('MaintainCashReceipts') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to add new Cash Receipts.'; END IF; ELSE SELECT checkPrivilege('MaintainCashReceipts') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to alter a Cash Receipt.'; END IF; END IF; -- Currency must be same as Bank Currency IF (TG_OP = 'INSERT') THEN _currId = COALESCE(NEW.cashrcpt_curr_id, basecurrid()); --- clear the number from the issue cache PERFORM clearNumberIssue('CashRcptNumber', NEW.cashrcpt_number); ELSE _currId = NEW.cashrcpt_curr_id; END IF; -- get the base exchange rate for the dist date IF (NEW.cashrcpt_curr_rate IS NULL) THEN SELECT curr_rate INTO _currrate FROM curr_rate WHERE ( (NEW.cashrcpt_curr_id=curr_id) AND ( NEW.cashrcpt_distdate BETWEEN curr_effective AND curr_expires) ); IF (FOUND) THEN NEW.cashrcpt_curr_rate := _currrate; ELSE RAISE EXCEPTION 'Currency exchange rate not found'; END IF; END IF; -- Create CashReceiptPosted Event IF (TG_OP = 'UPDATE') THEN IF (OLD.cashrcpt_posted=FALSE AND NEW.cashrcpt_posted=TRUE) THEN _evntType = 'CashReceiptPosted'; -- Find the warehouse for which to create evntlog entries SELECT usrpref_value INTO _whsId FROM usrpref WHERE usrpref_username = getEffectiveXtUser() AND usrpref_name = 'PreferredWarehouse'; -- Find the Customer Number SELECT cust_number INTO _custNumber FROM custinfo WHERE (cust_id=NEW.cashrcpt_cust_id); INSERT INTO evntlog (evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ord_id, evntlog_warehous_id, evntlog_number) SELECT DISTINCT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, NEW.cashrcpt_id, _whsId, (_custNumber || '-' || NEW.cashrcpt_docnumber || ' ' || currConcat(NEW.cashrcpt_curr_id) || formatMoney(NEW.cashrcpt_amount)) FROM evntnot, evnttype WHERE ((evntnot_evnttype_id=evnttype_id) AND (evnttype_name=_evntType)); END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._cashrcpttrigger() OWNER TO admin; -- -- Name: _ccardtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _ccardtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN New.ccard_lastupdated := current_timestamp; New.ccard_last_updated_by_username := getEffectiveXtUser(); IF (TG_OP = 'UPDATE') THEN INSERT INTO ccardaud VALUES (nextval('ccardaud_ccardaud_id_seq'), NEW.ccard_id, OLD.ccard_seq, NEW.ccard_seq, OLD.ccard_cust_id, NEW.ccard_cust_id, OLD.ccard_active, NEW.ccard_active, OLD.ccard_name, NEW.ccard_name, OLD.ccard_address1, NEW.ccard_address1, OLD.ccard_address2, NEW.ccard_address2, OLD.ccard_city, NEW.ccard_city, OLD.ccard_state, NEW.ccard_state, OLD.ccard_zip, NEW.ccard_zip, OLD.ccard_country, NEW.ccard_country, OLD.ccard_number, NEW.ccard_number, OLD.ccard_debit, NEW.ccard_debit, OLD.ccard_month_expired, NEW.ccard_month_expired, OLD.ccard_year_expired, NEW.ccard_year_expired, OLD.ccard_type, NEW.ccard_type); ELSE -- We are inserting a record, therefore no old values INSERT INTO ccardaud VALUES (nextval('ccardaud_ccardaud_id_seq'), NEW.ccard_id, NULL, NEW.ccard_seq, NULL, NEW.ccard_cust_id, NULL, NEW.ccard_active, NULL, NEW.ccard_name, NULL, NEW.ccard_address1, NULL, NEW.ccard_address2, NULL, NEW.ccard_city, NULL, NEW.ccard_state, NULL, NEW.ccard_zip, NULL, NEW.ccard_country, NULL, NEW.ccard_number, NULL, NEW.ccard_debit, NULL, NEW.ccard_month_expired, NULL, NEW.ccard_year_expired, NULL, NEW.ccard_type); END IF; RETURN NEW; END; $$; ALTER FUNCTION public._ccardtrigger() OWNER TO admin; -- -- Name: _charasshistorytrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _charasshistorytrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF(TG_OP = 'DELETE') THEN IF (OLD.charass_target_type = 'INCDT') THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_descrip) VALUES(OLD.charass_target_id, ('Characteristic ' || COALESCE((SELECT char_name FROM char WHERE (char_id=OLD.charass_char_id)), '') || ' Deleted: "' || COALESCE(OLD.charass_value,'') || '"') ); END IF; RETURN OLD; ELSIF (NEW.charass_target_type = 'INCDT') THEN IF (TG_OP = 'INSERT') THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_descrip) VALUES(NEW.charass_target_id, ('Characteristic ' || COALESCE((SELECT char_name FROM char WHERE (char_id=NEW.charass_char_id)), '') || ' Added: "' || COALESCE(NEW.charass_value,'') || '"') ); ELSIF (TG_OP = 'UPDATE') THEN IF (COALESCE(NEW.charass_value,'') <> COALESCE(OLD.charass_value,'')) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_descrip) VALUES(NEW.charass_target_id, ('Characteristic ' || COALESCE((SELECT char_name FROM char WHERE (char_id=NEW.charass_char_id)), '') || ' Changed: "' || COALESCE(OLD.charass_value,'') || '" -> "' || COALESCE(NEW.charass_value,'') || '"') ); END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._charasshistorytrigger() OWNER TO admin; -- -- Name: _charasstrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _charasstrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Privilege Checks IF (NEW.charass_target_type = 'I' AND NOT checkPrivilege('MaintainItemMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Items.'; END IF; IF (NEW.charass_target_type = 'C' AND NOT checkPrivilege('MaintainCustomerMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Customers.'; END IF; -- Data check IF (NEW.charass_char_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Characteristic ID.'; END IF; -- Default Logic IF (NEW.charass_default) THEN UPDATE charass SET charass_default = false WHERE ((charass_target_id=NEW.charass_target_id) AND (charass_target_type=NEW.charass_target_type) AND (charass_char_id=NEW.charass_char_id) AND (charass_id <> NEW.charass_ID)); END IF; -- Incident update IF (NEW.charass_target_type = 'INCDT') THEN UPDATE incdt SET incdt_updated = now() WHERE incdt_id = NEW.charass_target_id; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._charasstrigger() OWNER TO admin; -- -- Name: _charbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _charbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NOT checkPrivilege('MaintainCharacteristics')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Characteristics.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._charbeforetrigger() OWNER TO admin; -- -- Name: _charopttrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _charopttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NOT checkPrivilege('MaintainCharacteristics')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Characteristic options.'; END IF; IF (TG_OP = 'UPDATE') THEN UPDATE charass SET charass_value = NEW.charopt_value WHERE ((charass_char_id=NEW.charopt_char_id) AND (charass_value=OLD.charopt_value)); END IF; IF (TG_OP = 'DELETE') THEN IF (SELECT (count(charass_id) > 0) FROM charass WHERE ((charass_char_id=OLD.charopt_char_id) AND (charass_value=OLD.charopt_value))) THEN RAISE EXCEPTION 'This characteristic option value is in use and can not be deleted.'; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._charopttrigger() OWNER TO admin; -- -- Name: _checkheadbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _checkheadbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _amount NUMERIC; _currrate NUMERIC; BEGIN -- get the base exchange rate for the check date IF (TG_OP = 'INSERT' AND NEW.checkhead_curr_rate IS NULL) THEN SELECT curr_rate INTO _currrate FROM curr_rate WHERE ( (NEW.checkhead_curr_id=curr_id) AND ( NEW.checkhead_checkdate BETWEEN curr_effective AND curr_expires) ); IF (FOUND) THEN NEW.checkhead_curr_rate := _currrate; ELSE RAISE EXCEPTION 'Currency exchange rate not found'; END IF; END IF; IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN IF (NOT EXISTS (SELECT checkrecip_id FROM checkrecip WHERE ((checkrecip_type=NEW.checkhead_recip_type) AND (checkrecip_id=NEW.checkhead_recip_id)) )) THEN RAISE EXCEPTION 'Cannot verify recipient for check % (type % id %)', NEW.checkhead_number, NEW.checkhead_recip_type, NEW.checkhead_recip_id; END IF; IF (NEW.checkhead_journalnumber IS NOT NULL AND NOT EXISTS (SELECT jrnluse_number FROM jrnluse WHERE (jrnluse_number=NEW.checkhead_journalnumber)) ) THEN RAISE EXCEPTION 'Journal Number % does not exist and cannot be used for check %.', NEW.checkhead_journalnumber, NEW.checkhead_number; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._checkheadbeforetrigger() OWNER TO admin; -- -- Name: _cmheadbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _cmheadbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _id INTEGER; BEGIN -- Checks -- Start with privileges SELECT checkPrivilege('MaintainCreditMemos') INTO _check; IF ( (TG_OP = 'INSERT') OR (TG_OP = 'DELETE') ) THEN IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to maintain Credit Memos.'; END IF; END IF; IF (TG_OP = 'UPDATE') THEN IF ((OLD.cmhead_printed = NEW.cmhead_printed) AND NOT (_check) ) THEN RAISE EXCEPTION 'You do not have privileges to maintain Credit Memos.'; END IF; END IF; IF (TG_OP = 'DELETE') THEN DELETE FROM cmheadtax WHERE (taxhist_parent_id=OLD.cmhead_id); RETURN OLD; END IF; IF ( (NEW.cmhead_number IS NULL) OR (LENGTH(NEW.cmhead_number) = 0) ) THEN RAISE EXCEPTION 'You must enter a valid Memo # for this Credit Memo.'; END IF; IF (TG_OP = 'INSERT') THEN SELECT cmhead_id INTO _id FROM cmhead WHERE (cmhead_number=NEW.cmhead_number); IF (FOUND) THEN RAISE EXCEPTION 'The Memo # is already in use.'; END IF; IF (fetchMetricText('CMNumberGeneration') IN ('A','O')) THEN --- clear the number from the issue cache PERFORM clearNumberIssue('CmNumber', NEW.cmhead_number); ELSIF (fetchMetricText('CMNumberGeneration') = 'S') THEN --- clear the number from the issue cache PERFORM clearNumberIssue('SoNumber', NEW.cmhead_number); END IF; END IF; IF (NEW.cmhead_cust_id IS NOT NULL) THEN SELECT cust_id INTO _id FROM custinfo WHERE (cust_id=NEW.cmhead_cust_id); IF (NOT FOUND) THEN RAISE EXCEPTION 'You must enter a valid Customer # for this Credit Memo.'; END IF; END IF; IF ( (NEW.cmhead_misc > 0) AND (NEW.cmhead_misc_accnt_id = -1) ) THEN RAISE EXCEPTION 'You may not enter a Misc. Charge without indicating the G/L Sales Account.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._cmheadbeforetrigger() OWNER TO admin; -- -- Name: _cmheadtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _cmheadtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN -- If this was created by a return, then reset the return IF (OLD.cmhead_rahead_id IS NOT NULL) THEN UPDATE rahead SET rahead_headcredited=false WHERE (rahead_id=OLD.cmhead_rahead_id); DELETE FROM rahist WHERE ((rahist_rahead_id=OLD.cmhead_rahead_id) AND (rahist_source='CM') AND (rahist_source_id=OLD.cmhead_id)); END IF; RETURN OLD; END IF; -- Insert new row IF (TG_OP = 'INSERT') THEN -- Calculate Freight Tax IF (NEW.cmhead_freight <> 0) THEN PERFORM calculateTaxHist( 'cmheadtax', NEW.cmhead_id, NEW.cmhead_taxzone_id, getFreightTaxtypeId(), NEW.cmhead_docdate, NEW.cmhead_curr_id, NEW.cmhead_freight * -1 ); END IF; END IF; -- Update row IF (TG_OP = 'UPDATE') THEN IF ( (NEW.cmhead_freight <> OLD.cmhead_freight) OR (COALESCE(NEW.cmhead_taxzone_id,-1) <> COALESCE(OLD.cmhead_taxzone_id,-1)) OR (NEW.cmhead_docdate <> OLD.cmhead_docdate) OR (NEW.cmhead_curr_id <> OLD.cmhead_curr_id) ) THEN -- Calculate cmhead Tax PERFORM calculateTaxHist( 'cmheadtax', NEW.cmhead_id, NEW.cmhead_taxzone_id, getFreightTaxtypeId(), NEW.cmhead_docdate, NEW.cmhead_curr_id, NEW.cmhead_freight * -1 ); END IF; IF ( (COALESCE(NEW.cmhead_taxzone_id,-1) <> COALESCE(OLD.cmhead_taxzone_id,-1)) OR (NEW.cmhead_docdate <> OLD.cmhead_docdate) OR (NEW.cmhead_curr_id <> OLD.cmhead_curr_id) ) THEN -- Calculate cmitem Tax IF (COALESCE(NEW.cmhead_taxzone_id,-1) <> COALESCE(OLD.cmhead_taxzone_id,-1)) THEN -- Cmitem trigger will calculate tax UPDATE cmitem SET cmitem_taxtype_id=getItemTaxType(itemsite_item_id,NEW.cmhead_taxzone_id) FROM itemsite WHERE ((itemsite_id=cmitem_itemsite_id) AND (cmitem_cmhead_id=NEW.cmhead_id)); ELSE PERFORM calculateTaxHist( 'cmitemtax', cmitem_id, NEW.cmhead_taxzone_id, cmitem_taxtype_id, NEW.cmhead_docdate, NEW.cmhead_curr_id, (cmitem_qtycredit * cmitem_qty_invuomratio) * (cmitem_unitprice / cmitem_price_invuomratio) * -1) FROM cmitem WHERE (cmitem_cmhead_id = NEW.cmhead_id); END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._cmheadtrigger() OWNER TO admin; -- -- Name: _cmitembeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _cmitembeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _id INTEGER; BEGIN -- Checks -- Start with privileges SELECT checkPrivilege('MaintainCreditMemos') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to maintain Credit Memos.'; END IF; IF (TG_OP = 'DELETE') THEN DELETE FROM cmitemtax WHERE (taxhist_parent_id=OLD.cmitem_id); RETURN OLD; END IF; IF (TG_OP = 'INSERT') THEN IF ( (NEW.cmitem_qtycredit IS NULL) OR (NEW.cmitem_qtycredit = 0) ) THEN RAISE EXCEPTION 'Quantity to Credit must be greater than zero.'; END IF; SELECT cmitem_id INTO _id FROM cmitem WHERE ( (cmitem_cmhead_id=NEW.cmitem_cmhead_id) AND (cmitem_linenumber=NEW.cmitem_linenumber) ); IF (FOUND) THEN RAISE EXCEPTION 'The Memo Line Number is already in use.'; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._cmitembeforetrigger() OWNER TO admin; -- -- Name: _cmitemtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _cmitemtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _ext NUMERIC; _r RECORD; BEGIN IF (TG_OP = 'DELETE') THEN -- If this was created by a return, reset return values IF (OLD.cmitem_raitem_id) IS NOT NULL THEN _ext := ROUND((OLD.cmitem_qtycredit * OLD.cmitem_qty_invuomratio) * (OLD.cmitem_unitprice / OLD.cmitem_price_invuomratio),2); UPDATE raitem SET raitem_status = 'O', raitem_qtycredited = raitem_qtycredited-OLD.cmitem_qtycredit, raitem_amtcredited = raitem_amtcredited-_ext WHERE (raitem_id=OLD.cmitem_raitem_id); END IF; RETURN OLD; END IF; -- Cache Credit Memo Head SELECT * INTO _r FROM cmhead WHERE (cmhead_id=NEW.cmitem_cmhead_id); IF (NOT FOUND) THEN RAISE EXCEPTION 'Credit Memo head not found'; END IF; -- Insert new row IF (TG_OP = 'INSERT') THEN -- Calculate Tax PERFORM calculateTaxHist( 'cmitemtax', NEW.cmitem_id, COALESCE(_r.cmhead_taxzone_id, -1), NEW.cmitem_taxtype_id, COALESCE(_r.cmhead_docdate, CURRENT_DATE), COALESCE(_r.cmhead_curr_id, -1), (NEW.cmitem_qtycredit * NEW.cmitem_qty_invuomratio) * (NEW.cmitem_unitprice / NEW.cmitem_price_invuomratio) * -1); END IF; -- Update row IF (TG_OP = 'UPDATE') THEN -- Calculate Tax IF ( (NEW.cmitem_qtycredit <> OLD.cmitem_qtycredit) OR (NEW.cmitem_qty_invuomratio <> OLD.cmitem_qty_invuomratio) OR (NEW.cmitem_unitprice <> OLD.cmitem_unitprice) OR (NEW.cmitem_price_invuomratio <> OLD.cmitem_price_invuomratio) OR (COALESCE(NEW.cmitem_taxtype_id, -1) <> COALESCE(OLD.cmitem_taxtype_id, -1)) ) THEN PERFORM calculateTaxHist( 'cmitemtax', NEW.cmitem_id, COALESCE(_r.cmhead_taxzone_id, -1), NEW.cmitem_taxtype_id, COALESCE(_r.cmhead_docdate, CURRENT_DATE), COALESCE(_r.cmhead_curr_id, -1), (NEW.cmitem_qtycredit * NEW.cmitem_qty_invuomratio) * (NEW.cmitem_unitprice / NEW.cmitem_price_invuomratio) * -1); END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._cmitemtrigger() OWNER TO admin; -- -- Name: _cntcttrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _cntcttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN NEW.cntct_name := formatCntctName(NULL, NEW.cntct_first_name, NEW.cntct_middle, NEW.cntct_last_name, NEW.cntct_suffix); NEW.cntct_email := lower(NEW.cntct_email); IF (TG_OP = 'INSERT') THEN --- clear the number from the issue cache PERFORM clearNumberIssue('ContactNumber', NEW.cntct_number); END IF; RETURN NEW; END; $$; ALTER FUNCTION public._cntcttrigger() OWNER TO admin; -- -- Name: _cntcttriggerafter(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _cntcttriggerafter() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cntctemlid INTEGER; _rows INTEGER; BEGIN IF (TG_OP = 'INSERT') THEN IF(length(coalesce(NEW.cntct_email,'')) > 0) THEN INSERT INTO cntcteml ( cntcteml_cntct_id, cntcteml_primary, cntcteml_email ) VALUES ( NEW.cntct_id, true, NEW.cntct_email ); END IF; PERFORM postComment('ChangeLog', 'T', NEW.cntct_id, ('Created by ' || getEffectiveXtUser())); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.cntct_email != NEW.cntct_email) THEN SELECT cntcteml_id INTO _cntctemlid FROM cntcteml WHERE ((cntcteml_cntct_id=NEW.cntct_id) AND (cntcteml_email=NEW.cntct_email)); GET DIAGNOSTICS _rows = ROW_COUNT; IF (_rows = 0) THEN UPDATE cntcteml SET cntcteml_primary=false WHERE ((cntcteml_cntct_id=NEW.cntct_id) AND (cntcteml_primary=true)); INSERT INTO cntcteml ( cntcteml_cntct_id, cntcteml_primary, cntcteml_email ) VALUES ( NEW.cntct_id, true, NEW.cntct_email ); ELSE UPDATE cntcteml SET cntcteml_primary=false WHERE ((cntcteml_cntct_id=NEW.cntct_id) AND (cntcteml_primary=true)); UPDATE cntcteml SET cntcteml_primary=true WHERE (cntcteml_id=_cntctemlid); END IF; END IF; ELSIF (TG_OP = 'DELETE') THEN DELETE FROM comment WHERE (comment_source_id=OLD.cntct_id AND comment_source = 'T'); DELETE FROM docass WHERE (docass_source_id=OLD.cntct_id AND docass_source_type = 'T') OR (docass_target_id=OLD.cntct_id AND docass_target_type = 'T'); RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._cntcttriggerafter() OWNER TO admin; -- -- Name: _cntcttriggerbeforedelete(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _cntcttriggerbeforedelete() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN DELETE FROM cntctaddr WHERE cntctaddr_cntct_id=OLD.cntct_id; DELETE FROM cntctdata WHERE cntctdata_cntct_id=OLD.cntct_id; DELETE FROM cntcteml WHERE cntcteml_cntct_id=OLD.cntct_id; DELETE FROM docass WHERE docass_source_id = OLD.cntct_id AND docass_source_type = 'T'; DELETE FROM docass WHERE docass_target_id = OLD.cntct_id AND docass_target_type = 'T'; -- these have denormalized cntct info so it should be ok to update them UPDATE cohead SET cohead_billto_cntct_id=NULL WHERE cohead_billto_cntct_id=OLD.cntct_id; UPDATE cohead SET cohead_shipto_cntct_id=NULL WHERE cohead_shipto_cntct_id=OLD.cntct_id; UPDATE pohead SET pohead_vend_cntct_id=NULL WHERE pohead_vend_cntct_id=OLD.cntct_id; UPDATE pohead SET pohead_shipto_cntct_id=NULL WHERE pohead_shipto_cntct_id=OLD.cntct_id; UPDATE quhead SET quhead_billto_cntct_id=NULL WHERE quhead_billto_cntct_id=OLD.cntct_id; UPDATE quhead SET quhead_shipto_cntct_id=NULL WHERE quhead_shipto_cntct_id=OLD.cntct_id; IF (fetchMetricBool('MultiWhs')) THEN UPDATE tohead SET tohead_destcntct_id=NULL WHERE tohead_destcntct_id=OLD.cntct_id; UPDATE tohead SET tohead_srccntct_id=NULL WHERE tohead_srccntct_id=OLD.cntct_id; END IF; END IF; RETURN OLD; END; $$; ALTER FUNCTION public._cntcttriggerbeforedelete() OWNER TO admin; -- -- Name: _cntsliptrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _cntsliptrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _p RECORD; _comments TEXT; _temp TEXT; BEGIN IF (TG_OP = 'DELETE') THEN SELECT itemsite_loccntrl, itemsite_controlmethod, cntslip_posted, cntslip_lotserial, cntslip_comments, cntslip_number, cntslip_qty INTO _p FROM cntslip, invcnt, itemsite WHERE ( (cntslip_cnttag_id=invcnt_id) AND (invcnt_itemsite_id=itemsite_id) AND (cntslip_id=OLD.cntslip_id) ); IF(_p.cntslip_posted) THEN SELECT ( ' Count Slip #' || _p.cntslip_number || ' deleted ' || formatQty(_p.cntslip_qty) ) INTO _comments; -- Add the Location name if the itemsite is MLC IF (_p.itemsite_loccntrl) THEN SELECT ( ', Location:' || location_name ) INTO _temp FROM location, cntslip WHERE ( (cntslip_location_id=location_id) AND (cntslip_id=OLD.cntslip_id) ); _comments := (_comments || _temp); END IF; -- Add the Lot/Serial if the itemsite is Lot or Serial controlled IF (_p.itemsite_controlmethod = 'L') THEN _comments := (_comments || ( ', Lot #:' || _p.cntslip_lotserial)); ELSIF (_p.itemsite_controlmethod = 'S') THEN _comments := (_comments || ( ', Serial #:' || _p.cntslip_lotserial)); END IF; _comments := (_comments || ' ' || _p.cntslip_comments); UPDATE invcnt SET invcnt_qoh_after = ( COALESCE(invcnt_qoh_after, 0) - cntslip_qty), invcnt_comments = (invcnt_comments || _comments) FROM cntslip WHERE ( (cntslip_cnttag_id=invcnt_id) AND (NOT invcnt_posted) AND (cntslip_id=OLD.cntslip_id) ); END IF; RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._cntsliptrigger() OWNER TO admin; -- -- Name: _cobillbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _cobillbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN IF (TG_OP = 'DELETE') THEN DELETE FROM cobilltax WHERE (taxhist_parent_id=OLD.cobill_id); RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._cobillbeforetrigger() OWNER TO admin; -- -- Name: _cobilltrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _cobilltrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; -- Cache Billing Head SELECT * INTO _r FROM cobmisc WHERE (cobmisc_id=NEW.cobill_cobmisc_id); IF (NOT FOUND) THEN RAISE EXCEPTION 'Billing head not found'; END IF; -- Insert new row IF (TG_OP = 'INSERT') THEN -- Calculate Tax PERFORM calculateTaxHist( 'cobilltax', NEW.cobill_id, COALESCE(_r.cobmisc_taxzone_id, -1), NEW.cobill_taxtype_id, COALESCE(_r.cobmisc_shipdate, CURRENT_DATE), COALESCE(_r.cobmisc_curr_id, -1), (NEW.cobill_qty * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio) ) FROM coitem WHERE (coitem_id=NEW.cobill_coitem_id); END IF; -- Update row IF (TG_OP = 'UPDATE') THEN -- Calculate Tax IF ( (NEW.cobill_qty <> OLD.cobill_qty) OR (NEW.cobill_taxtype_id <> OLD.cobill_taxtype_id) ) THEN PERFORM calculateTaxHist( 'cobilltax', NEW.cobill_id, COALESCE(_r.cobmisc_taxzone_id, -1), NEW.cobill_taxtype_id, COALESCE(_r.cobmisc_shipdate, CURRENT_DATE), COALESCE(_r.cobmisc_curr_id, -1), (NEW.cobill_qty * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio) ) FROM coitem WHERE (coitem_id=NEW.cobill_coitem_id); END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._cobilltrigger() OWNER TO admin; -- -- Name: _cobmiscbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _cobmiscbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN IF (TG_OP = 'DELETE') THEN DELETE FROM cobmisctax WHERE (taxhist_parent_id=OLD.cobmisc_id); RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._cobmiscbeforetrigger() OWNER TO admin; -- -- Name: _cobmisctrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _cobmisctrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN -- Something can go here RETURN OLD; END IF; -- Insert new row IF (TG_OP = 'INSERT') THEN -- Calculate Freight Tax IF (NEW.cobmisc_freight <> 0) THEN PERFORM calculateTaxHist( 'cobmisctax', NEW.cobmisc_id, NEW.cobmisc_taxzone_id, getFreightTaxtypeId(), NEW.cobmisc_invcdate, NEW.cobmisc_curr_id, NEW.cobmisc_freight ); END IF; END IF; -- Update row IF (TG_OP = 'UPDATE') THEN -- Calculate Tax IF (COALESCE(NEW.cobmisc_taxzone_id,-1) <> COALESCE(OLD.cobmisc_taxzone_id,-1)) THEN UPDATE cobill SET cobill_taxtype_id=getItemTaxType(itemsite_item_id,NEW.cobmisc_taxzone_id) FROM coitem JOIN itemsite ON (coitem_itemsite_id=itemsite_id) WHERE ((coitem_id=cobill_coitem_id) AND (cobill_cobmisc_id=NEW.cobmisc_id)); END IF; IF ( (NEW.cobmisc_freight <> OLD.cobmisc_freight) OR (COALESCE(NEW.cobmisc_taxzone_id,-1) <> COALESCE(OLD.cobmisc_taxzone_id,-1)) OR (NEW.cobmisc_invcdate <> OLD.cobmisc_invcdate) OR (NEW.cobmisc_curr_id <> OLD.cobmisc_curr_id) ) THEN PERFORM calculateTaxHist( 'cobmisctax', NEW.cobmisc_id, NEW.cobmisc_taxzone_id, getFreightTaxtypeId(), NEW.cobmisc_invcdate, NEW.cobmisc_curr_id, NEW.cobmisc_freight ); PERFORM calculateTaxHist( 'cobilltax', cobill_id, NEW.cobmisc_taxzone_id, cobill_taxtype_id, NEW.cobmisc_invcdate, NEW.cobmisc_curr_id, (cobill_qty * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio) ) FROM cobill JOIN coitem ON (coitem_id = cobill_coitem_id) WHERE (cobill_cobmisc_id = NEW.cobmisc_id); END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._cobmisctrigger() OWNER TO admin; -- -- Name: _commenttrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _commenttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NEW.comment_cmnttype_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Comment Type ID.'; ELSIF (NEW.comment_source = 'INCDT') THEN UPDATE incdt SET incdt_updated = now() WHERE incdt_id = NEW.comment_source_id; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._commenttrigger() OWNER TO admin; -- -- Name: _companytrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _companytrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _used BOOLEAN := false; BEGIN IF (NEW.company_external AND NOT OLD.company_external) THEN IF EXISTS(SELECT accnt_id FROM accnt, company, ( SELECT DISTINCT apaccnt_ap_accnt_id AS test_accnt_id FROM apaccnt UNION SELECT DISTINCT apaccnt_discount_accnt_id FROM apaccnt UNION SELECT DISTINCT apaccnt_prepaid_accnt_id FROM apaccnt UNION SELECT DISTINCT apopen_accnt_id FROM apopen UNION SELECT DISTINCT araccnt_ar_accnt_id FROM araccnt UNION SELECT DISTINCT araccnt_deferred_accnt_id FROM araccnt UNION SELECT DISTINCT araccnt_freight_accnt_id FROM araccnt UNION SELECT DISTINCT araccnt_prepaid_accnt_id FROM araccnt UNION SELECT DISTINCT aropen_accnt_id FROM aropen UNION SELECT DISTINCT bankaccnt_accnt_id FROM bankaccnt UNION SELECT DISTINCT bankaccnt_rec_accnt_id FROM bankaccnt UNION SELECT DISTINCT budgitem_accnt_id FROM budgitem UNION SELECT DISTINCT cashrcptmisc_accnt_id FROM cashrcptmisc UNION SELECT DISTINCT cmhead_misc_accnt_id FROM cmhead UNION SELECT DISTINCT cobmisc_misc_accnt_id FROM cobmisc UNION SELECT DISTINCT cohead_misc_accnt_id FROM cohead UNION SELECT DISTINCT coitem_cos_accnt_id FROM coitem UNION SELECT DISTINCT costcat_adjustment_accnt_id FROM costcat UNION SELECT DISTINCT costcat_asset_accnt_id FROM costcat UNION SELECT DISTINCT costcat_freight_accnt_id FROM costcat UNION SELECT DISTINCT costcat_invcost_accnt_id FROM costcat UNION SELECT DISTINCT costcat_laboroverhead_accnt_id FROM costcat UNION SELECT DISTINCT costcat_liability_accnt_id FROM costcat UNION SELECT DISTINCT costcat_matusage_accnt_id FROM costcat UNION SELECT DISTINCT costcat_mfgscrap_accnt_id FROM costcat UNION SELECT DISTINCT costcat_purchprice_accnt_id FROM costcat UNION SELECT DISTINCT costcat_scrap_accnt_id FROM costcat UNION SELECT DISTINCT costcat_shipasset_accnt_id FROM costcat UNION SELECT DISTINCT costcat_toliability_accnt_id FROM costcat UNION SELECT DISTINCT costcat_transform_accnt_id FROM costcat UNION SELECT DISTINCT costcat_wip_accnt_id FROM costcat UNION SELECT DISTINCT costelem_exp_accnt_id FROM costelem UNION SELECT DISTINCT expcat_exp_accnt_id FROM expcat UNION SELECT DISTINCT expcat_freight_accnt_id FROM expcat UNION SELECT DISTINCT expcat_liability_accnt_id FROM expcat UNION SELECT DISTINCT expcat_purchprice_accnt_id FROM expcat UNION SELECT DISTINCT glseries_accnt_id FROM glseries UNION SELECT DISTINCT gltrans_accnt_id FROM gltrans UNION SELECT DISTINCT invchead_misc_accnt_id FROM invchead UNION SELECT DISTINCT quhead_misc_accnt_id FROM quhead UNION SELECT DISTINCT salesaccnt_cor_accnt_id FROM salesaccnt UNION SELECT DISTINCT salesaccnt_cos_accnt_id FROM salesaccnt UNION SELECT DISTINCT salesaccnt_cow_accnt_id FROM salesaccnt UNION SELECT DISTINCT salesaccnt_credit_accnt_id FROM salesaccnt UNION SELECT DISTINCT salesaccnt_returns_accnt_id FROM salesaccnt UNION SELECT DISTINCT salesaccnt_sales_accnt_id FROM salesaccnt UNION SELECT DISTINCT salescat_ar_accnt_id FROM salescat UNION SELECT DISTINCT salescat_prepaid_accnt_id FROM salescat UNION SELECT DISTINCT salescat_sales_accnt_id FROM salescat UNION SELECT DISTINCT stdjrnlitem_accnt_id FROM stdjrnlitem UNION SELECT DISTINCT tax_sales_accnt_id FROM tax UNION SELECT DISTINCT taxauth_accnt_id FROM taxauth UNION SELECT DISTINCT vodist_accnt_id FROM vodist UNION SELECT DISTINCT warehous_default_accnt_id FROM whsinfo ) AS dummy WHERE ((accnt_id=test_accnt_id) AND (accnt_company=company_number) AND (accnt_company=NEW.company_number)) ) THEN RAISE EXCEPTION 'Cannot make Company % External because it is used in the local database.', NEW.company_number; ELSIF (fetchMetricBool('EnableReturnAuth')) THEN IF EXISTS(SELECT accnt_id FROM accnt, company, ( SELECT DISTINCT rahead_misc_accnt_id AS test_accnt_id FROM rahead UNION SELECT DISTINCT raitem_cos_accnt_id FROM raitem ) AS dummy WHERE ((accnt_id=test_accnt_id) AND (accnt_company=company_number) AND (accnt_company=NEW.company_number)) ) THEN RAISE EXCEPTION 'Cannot make Company % External because it is used in the local database.', NEW.company_number; END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._companytrigger() OWNER TO admin; -- -- Name: _contrctaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _contrctaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN -- synchronize contract effectivity with item source effectivity IF (NEW.contrct_effective <> OLD.contrct_effective) THEN UPDATE itemsrc SET itemsrc_effective=NEW.contrct_effective WHERE itemsrc_contrct_id=NEW.contrct_id; END IF; IF (NEW.contrct_expires <> OLD.contrct_expires) THEN UPDATE itemsrc SET itemsrc_expires=NEW.contrct_expires WHERE itemsrc_contrct_id=NEW.contrct_id; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._contrctaftertrigger() OWNER TO admin; -- -- Name: _crmacctaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _crmacctaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _gotpriv BOOLEAN; BEGIN /* update _number and _name separately to propagate just what changed. the priv manipulation allows targeted updates of crmaccount-maintained data (note: grantPriv() == false if the user already had the priv, true if this call granted the priv). */ IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN IF (NEW.crmacct_cust_id IS NOT NULL) THEN _gotpriv := grantPriv(getEffectiveXtUser(), 'MaintainCustomerMasters'); UPDATE custinfo SET cust_number = NEW.crmacct_number WHERE ((cust_id=NEW.crmacct_cust_id) AND (cust_number!=NEW.crmacct_number)); UPDATE custinfo SET cust_name = NEW.crmacct_name WHERE ((cust_id=NEW.crmacct_cust_id) AND (cust_name!=NEW.crmacct_name)); IF (_gotpriv) THEN PERFORM revokePriv(getEffectiveXtUser(), 'MaintainCustomerMasters'); END IF; END IF; IF (NEW.crmacct_emp_id IS NOT NULL) THEN _gotpriv := grantPriv(getEffectiveXtUser(), 'MaintainEmployees'); UPDATE emp SET emp_code = NEW.crmacct_number WHERE ((emp_id=NEW.crmacct_emp_id) AND (emp_code!=NEW.crmacct_number)); UPDATE emp SET emp_name = NEW.crmacct_name WHERE ((emp_id=NEW.crmacct_emp_id) AND (emp_name!=NEW.crmacct_name)); IF (_gotpriv) THEN PERFORM revokePriv(getEffectiveXtUser(), 'MaintainEmployees'); END IF; END IF; IF (NEW.crmacct_prospect_id IS NOT NULL) THEN _gotpriv := grantPriv(getEffectiveXtUser(), 'MaintainProspectMasters'); UPDATE prospect SET prospect_number = NEW.crmacct_number WHERE ((prospect_id=NEW.crmacct_prospect_id) AND (prospect_number!=NEW.crmacct_number)); UPDATE prospect SET prospect_name = NEW.crmacct_name WHERE ((prospect_id=NEW.crmacct_prospect_id) AND (prospect_name!=NEW.crmacct_name)); IF (_gotpriv) THEN PERFORM revokePriv(getEffectiveXtUser(), 'MaintainProspectMasters'); END IF; END IF; IF (NEW.crmacct_salesrep_id IS NOT NULL) THEN _gotpriv := grantPriv(getEffectiveXtUser(), 'MaintainSalesReps'); UPDATE salesrep SET salesrep_number = NEW.crmacct_number WHERE ((salesrep_id=NEW.crmacct_salesrep_id) AND (salesrep_number!=NEW.crmacct_number)); UPDATE salesrep SET salesrep_name = NEW.crmacct_name WHERE ((salesrep_id=NEW.crmacct_salesrep_id) AND (salesrep_name!=NEW.crmacct_name)); IF (_gotpriv) THEN PERFORM revokePriv(getEffectiveXtUser(), 'MaintainSalesReps'); END IF; END IF; IF (NEW.crmacct_taxauth_id IS NOT NULL) THEN _gotpriv := grantPriv(getEffectiveXtUser(), 'MaintainTaxAuthorities'); UPDATE taxauth SET taxauth_code = NEW.crmacct_number WHERE ((taxauth_id=NEW.crmacct_taxauth_id) AND (taxauth_code!=NEW.crmacct_number)); UPDATE taxauth SET taxauth_name = NEW.crmacct_name WHERE ((taxauth_id=NEW.crmacct_taxauth_id) AND (taxauth_name!=NEW.crmacct_name)); IF (_gotpriv) THEN PERFORM revokePriv(getEffectiveXtUser(), 'MaintainTaxAuthorities'); END IF; END IF; IF (NEW.crmacct_vend_id IS NOT NULL) THEN _gotpriv := grantPriv(getEffectiveXtUser(), 'MaintainVendors'); UPDATE vendinfo SET vend_number = NEW.crmacct_number WHERE ((vend_id=NEW.crmacct_vend_id) AND (vend_number!=NEW.crmacct_number)); UPDATE vendinfo SET vend_name = NEW.crmacct_name WHERE ((vend_id=NEW.crmacct_vend_id) AND (vend_name!=NEW.crmacct_name)); IF (_gotpriv) THEN PERFORM revokePriv(getEffectiveXtUser(), 'MaintainVendors'); END IF; END IF; -- Link Primary and Secondary Contacts to this Account if they are not already IF (NEW.crmacct_cntct_id_1 IS NOT NULL) THEN _gotpriv := grantPriv(getEffectiveXtUser(), 'MaintainAllContacts'); UPDATE cntct SET cntct_crmacct_id = NEW.crmacct_id WHERE cntct_id=NEW.crmacct_cntct_id_1; IF (_gotpriv) THEN PERFORM revokePriv(getEffectiveXtUser(), 'MaintainAllContacts'); END IF; END IF; IF (NEW.crmacct_cntct_id_2 IS NOT NULL) THEN _gotpriv := grantPriv(getEffectiveXtUser(), 'MaintainAllContacts'); UPDATE cntct SET cntct_crmacct_id = NEW.crmacct_id WHERE cntct_id=NEW.crmacct_cntct_id_2; IF (_gotpriv) THEN PERFORM revokePriv(getEffectiveXtUser(), 'MaintainAllContacts'); END IF; END IF; -- cannot have fkey references to system catalogs so enforce them here IF (NEW.crmacct_usr_username IS NOT NULL) THEN IF (NOT EXISTS(SELECT usr_username FROM usr WHERE usr_username=NEW.crmacct_usr_username)) THEN RAISE EXCEPTION 'User % does not exist so this CRM Account Number is invalid.', NEW.crmacct_usr_username; END IF; IF (TG_OP = 'UPDATE') THEN -- reminder: this evaluates to false if either is NULL IF (NEW.crmacct_usr_username != OLD.crmacct_usr_username) THEN RAISE EXCEPTION 'Cannot change the user name for %', OLD.crmacct_usr_username; END IF; END IF; UPDATE usrpref SET usrpref_value = NEW.crmacct_name WHERE ((usrpref_username=NEW.crmacct_usr_username) AND (usrpref_name='propername') AND (usrpref_value!=NEW.crmacct_name)); END IF; ELSIF (TG_OP = 'DELETE') THEN IF (OLD.crmacct_cust_id IS NOT NULL) THEN RAISE EXCEPTION 'Cannot delete CRM Account because it is a Customer [xtuple: deleteCrmAccount, -1]'; END IF; IF (OLD.crmacct_emp_id IS NOT NULL) THEN RAISE EXCEPTION 'Cannot delete CRM Account because it is an Employee [xtuple: deleteCrmAccount, -7]'; END IF; IF (OLD.crmacct_prospect_id IS NOT NULL) THEN RAISE EXCEPTION 'Cannot delete CRM Account because it is a Prospect [xtuple: deleteCrmAccount, -3]'; END IF; DELETE FROM salesrep WHERE salesrep_id = OLD.crmacct_salesrep_id; IF (OLD.crmacct_salesrep_id IS NOT NULL) THEN RAISE EXCEPTION 'Cannot delete CRM Account because it is a Sales Rep [xtuple: deleteCrmAccount, -6]'; END IF; IF (OLD.crmacct_taxauth_id IS NOT NULL) THEN RAISE EXCEPTION 'Cannot delete CRM Account because it is a Tax Authority [xtuple: deleteCrmAccount, -5]'; END IF; IF (EXISTS(SELECT usename FROM pg_user WHERE usename=OLD.crmacct_usr_username)) THEN RAISE EXCEPTION 'Cannot delete CRM Account because it is a User [xtuple: deleteCrmAccount, -8]'; END IF; IF (OLD.crmacct_vend_id IS NOT NULL) THEN RAISE EXCEPTION 'Cannot delete CRM Account because it is a Vendor [xtuple: deleteCrmAccount, -2]'; END IF; DELETE FROM imageass WHERE (imageass_source_id=OLD.crmacct_id) AND (imageass_source='CRMA'); DELETE FROM url WHERE (url_source_id=OLD.crmacct_id) AND (url_source='CRMA'); END IF; SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (_cmnttypeid IS NOT NULL) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'CRMA', NEW.crmacct_id, ('Created by ' || getEffectiveXtUser())); ELSIF (TG_OP = 'DELETE') THEN PERFORM postComment(_cmnttypeid, 'CRMA', OLD.crmacct_id, 'Deleted "' || OLD.crmacct_number || '"'); END IF; END IF; IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._crmacctaftertrigger() OWNER TO admin; -- -- Name: _crmacctbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _crmacctbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _count INTEGER; BEGIN -- disallow reusing crmacct_numbers IF (TG_OP IN ('INSERT', 'UPDATE')) THEN IF (TG_OP = 'INSERT' AND fetchMetricText('CRMAccountNumberGeneration') IN ('A','O')) THEN PERFORM clearNumberIssue('CRMAccountNumber', NEW.crmacct_number); END IF; NEW.crmacct_usr_username := LOWER(TRIM(NEW.crmacct_usr_username)); IF (NEW.crmacct_usr_username = '') THEN NEW.crmacct_usr_username = NULL; END IF; NEW.crmacct_owner_username := LOWER(TRIM(NEW.crmacct_owner_username)); IF (COALESCE(NEW.crmacct_owner_username, '') = '') THEN NEW.crmacct_owner_username = getEffectiveXtUser(); END IF; IF (NEW.crmacct_competitor_id < 0) THEN NEW.crmacct_competitor_id := NULL; END IF; IF (NEW.crmacct_partner_id < 0) THEN NEW.crmacct_partner_id := NULL; END IF; NEW.crmacct_number = UPPER(NEW.crmacct_number); IF (TG_OP = 'UPDATE') THEN -- TODO: why not ALTER USER OLD.crmacct_number RENAME TO LOWER(NEW.crmacct_number)? IF (NEW.crmacct_number != UPPER(OLD.crmacct_number) AND NEW.crmacct_usr_username IS NOT NULL AND UPPER(NEW.crmacct_usr_username) != NEW.crmacct_number) THEN RAISE EXCEPTION 'The CRM Account % is associated with a system User so the number cannot be changed.', NEW.crmacct_number; END IF; END IF; ELSIF (TG_OP = 'DELETE') THEN UPDATE cntct SET cntct_crmacct_id = NULL WHERE cntct_crmacct_id = OLD.crmacct_id; DELETE FROM docass WHERE docass_source_id = OLD.crmacct_id AND docass_source_type = 'CRMA'; DELETE FROM docass WHERE docass_target_id = OLD.crmacct_id AND docass_target_type = 'CRMA'; GET DIAGNOSTICS _count = ROW_COUNT; RAISE DEBUG 'updated % contacts', _count; RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._crmacctbeforetrigger() OWNER TO admin; -- -- Name: _custaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _custaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _whsId INTEGER := -1; BEGIN IF (TG_OP = 'INSERT') THEN -- http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-UPSERT-EXAMPLE LOOP UPDATE crmacct SET crmacct_cust_id=NEW.cust_id, crmacct_name=NEW.cust_name, crmacct_prospect_id=NULL WHERE crmacct_number=NEW.cust_number; IF (FOUND) THEN DELETE FROM prospect WHERE prospect_id=NEW.cust_id; EXIT; END IF; BEGIN INSERT INTO crmacct(crmacct_number, crmacct_name, crmacct_active, crmacct_type, crmacct_cust_id, crmacct_cntct_id_1, crmacct_cntct_id_2 ) VALUES (NEW.cust_number, NEW.cust_name, NEW.cust_active, 'O', NEW.cust_id, NEW.cust_cntct_id, NEW.cust_corrcntct_id); EXIT; EXCEPTION WHEN unique_violation THEN -- do nothing, and loop to try the UPDATE again END; END LOOP; PERFORM updateCharAssignment('C', NEW.cust_id, char_id, charass_value) FROM custtype JOIN charass ON (custtype_id=charass_target_id AND charass_target_type='CT') JOIN char ON (charass_char_id=char_id) WHERE ((custtype_id=NEW.cust_custtype_id) AND (custtype_char) AND (charass_default)); ELSIF (TG_OP = 'UPDATE') THEN UPDATE crmacct SET crmacct_number = NEW.cust_number WHERE ((crmacct_cust_id=NEW.cust_id) AND (crmacct_number!=NEW.cust_number)); UPDATE crmacct SET crmacct_name = NEW.cust_name WHERE ((crmacct_cust_id=NEW.cust_id) AND (crmacct_name!=NEW.cust_name)); END IF; IF (TG_OP = 'INSERT') THEN -- find the warehouse for which to create evntlog entries SELECT usrpref_value INTO _whsId FROM usrpref WHERE usrpref_username = getEffectiveXtUser() AND usrpref_name = 'PreferredWarehouse'; INSERT INTO evntlog (evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number) SELECT DISTINCT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'C', NEW.cust_id, _whsId, NEW.cust_number FROM evntnot, evnttype WHERE ((evntnot_evnttype_id=evnttype_id) AND (evnttype_name='NewCustomer')); END IF; IF (fetchMetricBool('CustomerChangeLog')) THEN SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (_cmnttypeid IS NOT NULL) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'C', NEW.cust_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.cust_number <> NEW.cust_number) THEN PERFORM postComment( _cmnttypeid, 'C', NEW.cust_id, ('Number changed from "' || OLD.cust_number || '" to "' || NEW.cust_number || '"') ); END IF; IF (OLD.cust_name <> NEW.cust_name) THEN PERFORM postComment( _cmnttypeid, 'C', NEW.cust_id, ('Name changed from "' || OLD.cust_name || '" to "' || NEW.cust_name || '"') ); END IF; IF (OLD.cust_active <> NEW.cust_active) THEN PERFORM postComment(_cmnttypeid, 'C', NEW.cust_id, CASE WHEN NEW.cust_active THEN 'Activated' ELSE 'Deactivated' END); END IF; IF (OLD.cust_discntprcnt <> NEW.cust_discntprcnt) THEN PERFORM postComment(_cmnttypeid, 'C', NEW.cust_id, ('Discount changed from "' || formatprcnt(OLD.cust_discntprcnt) || '%" to "' || formatprcnt(NEW.cust_discntprcnt) || '%"') ); END IF; IF (OLD.cust_creditlmt <> NEW.cust_creditlmt) THEN PERFORM postComment(_cmnttypeid, 'C', NEW.cust_id, ('Credit Limit changed from ' || formatMoney(OLD.cust_creditlmt) || ' to ' || formatMoney(NEW.cust_creditlmt))); END IF; IF (OLD.cust_creditstatus <> NEW.cust_creditstatus) THEN PERFORM postComment(_cmnttypeid, 'C', NEW.cust_id, ('Credit Status Changed from "' || CASE OLD.cust_creditstatus WHEN 'G' THEN 'In Good Standing' WHEN 'W' THEN 'Credit Warning' WHEN 'H' THEN 'Credit Hold' ELSE 'Unknown/Error' END || '" to "' || CASE NEW.cust_creditstatus WHEN 'G' THEN 'In Good Standing' WHEN 'W' THEN 'Credit Warning' WHEN 'H' THEN 'Credit Hold' ELSE 'Unknown/Error' END || '"') ); END IF; IF (OLD.cust_custtype_id <> NEW.cust_custtype_id) THEN PERFORM postComment(_cmnttypeid, 'C', NEW.cust_id, ('Customer type changed from "' || (SELECT custtype_code FROM custtype WHERE custtype_id = OLD.cust_custtype_id) || '" to "' || (SELECT custtype_code FROM custtype WHERE custtype_id = NEW.cust_custtype_id) || '"') ); END IF; IF (COALESCE(OLD.cust_gracedays,-1) <> COALESCE(NEW.cust_gracedays,-1)) THEN PERFORM postComment(_cmnttypeid, 'C', NEW.cust_id, ('Grace Days changed from "' || COALESCE(TEXT(OLD.cust_gracedays), 'Default') || '" to "' || COALESCE(TEXT(NEW.cust_gracedays), 'Default') || '"')); END IF; IF (OLD.cust_terms_id <> NEW.cust_terms_id) THEN PERFORM postComment(_cmnttypeid, 'C', NEW.cust_id, ('Terms changed from "' || (SELECT terms_code FROM terms WHERE terms_id = OLD.cust_terms_id) || '" to "' || (SELECT terms_code FROM terms WHERE terms_id = NEW.cust_terms_id) || '"')); END IF; END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._custaftertrigger() OWNER TO admin; -- -- Name: _custinfoafterdeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _custinfoafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- handle transitory state when converting customer to prospect IF EXISTS(SELECT quhead_id FROM quhead WHERE (quhead_cust_id=OLD.cust_id) AND NOT EXISTS(SELECT prospect_id FROM prospect WHERE prospect_id=OLD.cust_id)) THEN RAISE EXCEPTION '[xtuple: deleteCustomer, -8]'; END IF; IF EXISTS(SELECT invchead_id FROM invchead WHERE (invchead_cust_id=OLD.cust_id)) THEN RAISE EXCEPTION '[xtuple: deleteCustomer, -7]'; END IF; -- end TODO IF EXISTS(SELECT checkhead_recip_id FROM checkhead WHERE ((checkhead_recip_id=OLD.cust_id) AND (checkhead_recip_type='C'))) THEN RAISE EXCEPTION '[xtuple: deleteCustomer, -6]'; END IF; DELETE FROM taxreg WHERE ((taxreg_rel_type='C') AND (taxreg_rel_id=OLD.cust_id)); DELETE FROM ipsass WHERE (ipsass_cust_id=OLD.cust_id); DELETE FROM docass WHERE docass_source_id = OLD.cust_id AND docass_source_type = 'C'; DELETE FROM docass WHERE docass_target_id = OLD.cust_id AND docass_target_type = 'C'; IF (fetchMetricBool('CustomerChangeLog')) THEN PERFORM postComment(cmnttype_id, 'C', OLD.cust_id, ('Deleted "' || OLD.cust_number || '"')) FROM cmnttype WHERE (cmnttype_name='ChangeLog'); END IF; RETURN OLD; END; $$; ALTER FUNCTION public._custinfoafterdeletetrigger() OWNER TO admin; -- -- Name: _custinfobeforedeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _custinfobeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF NOT (checkPrivilege('MaintainCustomerMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Customers.'; END IF; UPDATE crmacct SET crmacct_cust_id = NULL WHERE crmacct_cust_id = OLD.cust_id; RETURN OLD; END; $$; ALTER FUNCTION public._custinfobeforedeletetrigger() OWNER TO admin; -- -- Name: _custtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _custtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF NOT (checkPrivilege('MaintainCustomerMasters') OR checkPrivilege('PostMiscInvoices')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Customers.'; END IF; IF (NEW.cust_number IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Customer Number.'; END IF; IF (LENGTH(COALESCE(NEW.cust_name,''))=0) THEN RAISE EXCEPTION 'You must supply a valid Customer Name.'; END IF; IF (NEW.cust_custtype_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Customer Type ID.'; END IF; IF (NEW.cust_salesrep_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Sales Rep ID.'; END IF; IF (NEW.cust_terms_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Terms Code ID.'; END IF; IF (TG_OP = 'INSERT' AND fetchMetricText('CRMAccountNumberGeneration') IN ('A','O')) THEN PERFORM clearNumberIssue('CRMAccountNumber', NEW.cust_number); END IF; NEW.cust_number := UPPER(NEW.cust_number); RETURN NEW; END; $$; ALTER FUNCTION public._custtrigger() OWNER TO admin; -- -- Name: _custtypeafterdeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _custtypeafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (SELECT fetchMetricValue('DefaultCustType') = OLD.custtype_id) THEN RAISE EXCEPTION 'Cannot delete the default Customer Type [xtuple: custtype, -1, %]', OLD.custtype_code; END IF; RETURN OLD; END; $$; ALTER FUNCTION public._custtypeafterdeletetrigger() OWNER TO admin; -- -- Name: _custtypetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _custtypetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _code TEXT; BEGIN -- Checks IF (TG_OP IN ('INSERT','UPDATE')) THEN IF (LENGTH(COALESCE(NEW.custtype_code, ''))=0) THEN RAISE EXCEPTION 'You must supply a valid Customer Type Code.'; END IF; SELECT custtype_code INTO _code FROM custtype WHERE ( (UPPER(custtype_code)=UPPER(NEW.custtype_code)) AND (custtype_id<>NEW.custtype_id) ); IF (FOUND) THEN RAISE EXCEPTION 'The Customer Type Code entered cannot be used as it is in use.'; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._custtypetrigger() OWNER TO admin; -- -- Name: _docasstrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _docasstrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NEW.docass_source_type = 'INCDT') THEN UPDATE incdt SET incdt_updated = now() WHERE incdt_id = NEW.docass_source_id; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._docasstrigger() OWNER TO admin; -- -- Name: _empafterdeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _empafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (fetchMetricBool('EmployeeChangeLog')) THEN PERFORM postComment(cmnttype_id, 'EMP', OLD.emp_id, ('Deleted "' || OLD.emp_code || '"')) FROM cmnttype WHERE (cmnttype_name='ChangeLog'); END IF; RETURN OLD; END; $$; ALTER FUNCTION public._empafterdeletetrigger() OWNER TO admin; -- -- Name: _empaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _empaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _newcrmacctname TEXT; BEGIN IF (TG_OP = 'INSERT') THEN -- http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-UPSERT-EXAMPLE LOOP UPDATE crmacct SET crmacct_emp_id=NEW.emp_id, crmacct_name=NEW.emp_name WHERE crmacct_number=NEW.emp_code; IF (FOUND) THEN EXIT; END IF; BEGIN INSERT INTO crmacct(crmacct_number, crmacct_name, crmacct_active, crmacct_type, crmacct_emp_id, crmacct_cntct_id_1 ) VALUES (NEW.emp_code, NEW.emp_name, NEW.emp_active, 'I', NEW.emp_id, NEW.emp_cntct_id); EXIT; EXCEPTION WHEN unique_violation THEN -- do nothing, and loop to try the UPDATE again END; END LOOP; /* TODO: default characteristic assignments based on empgrp? */ ELSIF (TG_OP = 'UPDATE') THEN UPDATE crmacct SET crmacct_number = NEW.emp_code WHERE ((crmacct_emp_id=NEW.emp_id) AND (crmacct_number!=NEW.emp_code)); UPDATE crmacct SET crmacct_name = NEW.emp_name WHERE ((crmacct_emp_id=NEW.emp_id) AND (crmacct_name!=NEW.emp_name)); END IF; IF (fetchMetricBool('EmployeeChangeLog')) THEN SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (_cmnttypeid IS NOT NULL) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'EMP', NEW.emp_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.emp_number <> NEW.emp_number) THEN PERFORM postComment(_cmnttypeid, 'EMP', NEW.emp_id, ('Number Changed from "' || OLD.emp_number || '" to "' || NEW.emp_number || '"')); END IF; IF (OLD.emp_code <> NEW.emp_code) THEN PERFORM postComment(_cmnttypeid, 'EMP', NEW.emp_id, ('Code Changed from "' || OLD.emp_code || '" to "' || NEW.emp_code || '"')); END IF; IF (OLD.emp_active <> NEW.emp_active) THEN PERFORM postComment(_cmnttypeid, 'EMP', NEW.emp_id, CASE WHEN NEW.emp_active THEN 'Activated' ELSE 'Deactivated' END); END IF; IF (COALESCE(OLD.emp_dept_id, -1) <> COALESCE(NEW.emp_dept_id, -1)) THEN PERFORM postComment(_cmnttypeid, 'EMP', NEW.emp_id, ('Department Changed from "' || COALESCE((SELECT dept_number FROM dept WHERE dept_id=OLD.emp_dept_id), '') || '" to "' || COALESCE((SELECT dept_number FROM dept WHERE dept_id=NEW.emp_dept_id), '') || '"')); END IF; IF (COALESCE(OLD.emp_shift_id, -1) <> COALESCE(NEW.emp_shift_id, -1)) THEN PERFORM postComment(_cmnttypeid, 'EMP', NEW.emp_id, ('Shift Changed from "' || COALESCE((SELECT shift_number FROM shift WHERE shift_id=OLD.emp_shift_id), '') || '" to "' || COALESCE((SELECT shift_number FROM shift WHERE shift_id=NEW.emp_shift_id), '') || '"')); END IF; END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._empaftertrigger() OWNER TO admin; -- -- Name: _empbeforedeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _empbeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF NOT (checkPrivilege('MaintainEmployees')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Employees.'; END IF; UPDATE crmacct SET crmacct_emp_id = NULL WHERE crmacct_emp_id = OLD.emp_id; UPDATE salesrep SET salesrep_emp_id = NULL WHERE salesrep_emp_id = OLD.emp_id; DELETE FROM docass WHERE docass_source_id = OLD.emp_id AND docass_source_type = 'EMP'; DELETE FROM docass WHERE docass_target_id = OLD.emp_id AND docass_target_type = 'EMP'; RETURN OLD; END; $$; ALTER FUNCTION public._empbeforedeletetrigger() OWNER TO admin; -- -- Name: _empbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _empbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF NOT (checkPrivilege('MaintainEmployees')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Employees.'; END IF; IF (NEW.emp_code IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Employee Code.'; END IF; IF (NEW.emp_number IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Employee Number.'; END IF; IF (NEW.emp_id = NEW.emp_mgr_emp_id) THEN RAISE EXCEPTION 'An Employee may not be his or her own Manager.'; END IF; -- ERROR: cannot use column references in default expression IF (NEW.emp_name IS NULL) THEN NEW.emp_name = COALESCE(formatCntctName(NEW.emp_cntct_id), NEW.emp_number); END IF; IF (TG_OP = 'INSERT' AND fetchMetricText('CRMAccountNumberGeneration') IN ('A','O')) THEN PERFORM clearNumberIssue('CRMAccountNumber', NEW.emp_number); END IF; NEW.emp_code := UPPER(NEW.emp_code); -- deprecated column emp_username IF (TG_OP = 'UPDATE' AND LOWER(NEW.emp_username) != LOWER(NEW.emp_code) AND EXISTS(SELECT 1 FROM crmacct WHERE crmacct_emp_id = NEW.emp_id AND crmacct_usr_username IS NOT NULL)) THEN NEW.emp_username = LOWER(NEW.emp_code); END IF; RETURN NEW; END; $$; ALTER FUNCTION public._empbeforetrigger() OWNER TO admin; -- -- Name: _gltransaltertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _gltransaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _externalCompany BOOLEAN := false; _updated BOOLEAN := false; BEGIN IF(TG_OP='DELETE') THEN RAISE EXCEPTION 'You may not delete G/L Transactions once they have been created.'; ELSIF (TG_OP = 'UPDATE') THEN SELECT company_external INTO _externalCompany FROM company JOIN accnt ON (company_number=accnt_company) WHERE (accnt_id=NEW.gltrans_accnt_id); IF (_externalCompany) THEN RAISE EXCEPTION 'Transactions are not allowed for G/L Accounts with External Company segments.'; END IF; IF(OLD.gltrans_id != NEW.gltrans_id) THEN _updated := true; ELSIF(OLD.gltrans_date != NEW.gltrans_date) THEN _updated := true; ELSIF(OLD.gltrans_accnt_id != NEW.gltrans_accnt_id) THEN _updated := true; ELSIF(OLD.gltrans_amount != NEW.gltrans_amount) THEN _updated := true; ELSIF(OLD.gltrans_username != NEW.gltrans_username) THEN _updated := true; ELSIF( (OLD.gltrans_sequence IS NULL AND NEW.gltrans_sequence IS NOT NULL) OR (OLD.gltrans_sequence IS NOT NULL AND NEW.gltrans_sequence IS NULL) OR (COALESCE(OLD.gltrans_sequence,0) != COALESCE(NEW.gltrans_sequence,0)) ) THEN _updated := true; ELSIF( (OLD.gltrans_created IS NULL AND NEW.gltrans_created IS NOT NULL) OR (OLD.gltrans_created IS NOT NULL AND NEW.gltrans_created IS NULL) OR (COALESCE(OLD.gltrans_created,now()) != COALESCE(NEW.gltrans_created,now())) ) THEN _updated := true; ELSIF( (OLD.gltrans_source IS NULL AND NEW.gltrans_source IS NOT NULL) OR (OLD.gltrans_source IS NOT NULL AND NEW.gltrans_source IS NULL) OR (COALESCE(OLD.gltrans_source,'') != COALESCE(NEW.gltrans_source,'')) ) THEN _updated := true; ELSIF( (OLD.gltrans_docnumber IS NULL AND NEW.gltrans_docnumber IS NOT NULL) OR (OLD.gltrans_docnumber IS NOT NULL AND NEW.gltrans_docnumber IS NULL) OR (COALESCE(OLD.gltrans_docnumber,'') != COALESCE(NEW.gltrans_docnumber,'')) ) THEN _updated := true; ELSIF( (OLD.gltrans_doctype IS NULL AND NEW.gltrans_doctype IS NOT NULL) OR (OLD.gltrans_doctype IS NOT NULL AND NEW.gltrans_doctype IS NULL) OR (COALESCE(OLD.gltrans_doctype,'') != COALESCE(NEW.gltrans_doctype,'')) ) THEN _updated := true; END IF; IF(_updated) THEN RAISE EXCEPTION 'You may not alter some G/L Transaction fields once they have been created.'; END IF; ELSE RAISE EXCEPTION 'trigger for gltrans table called in unexpected state.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._gltransaltertrigger() OWNER TO admin; -- -- Name: _gltransinserttrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _gltransinserttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _reqNotes BOOLEAN; _externalCompany BOOLEAN := false; BEGIN -- Checks -- Start with privileges IF ((NEW.gltrans_doctype='JE') AND (NOT checkPrivilege('PostJournalEntries'))) THEN RAISE EXCEPTION 'You do not have privileges to create a Journal Entry.'; END IF; SELECT company_external INTO _externalCompany FROM company JOIN accnt ON (company_number=accnt_company) WHERE (accnt_id=NEW.gltrans_accnt_id); IF (_externalCompany) THEN RAISE EXCEPTION 'Transactions are not allowed for G/L Accounts with External Company segments.'; END IF; -- RAISE NOTICE '_gltransInsertTrigger(): company_external = %', _externalCompany; SELECT metric_value='t' INTO _reqNotes FROM metric WHERE(metric_name='MandatoryGLEntryNotes'); IF (_reqNotes IS NULL) THEN _reqNotes := false; END IF; IF ((NEW.gltrans_doctype='JE') AND _reqNotes AND (TRIM(BOTH FROM COALESCE(NEW.gltrans_notes,''))='')) THEN RAISE EXCEPTION 'Notes are required for Journal Entries.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._gltransinserttrigger() OWNER TO admin; -- -- Name: _grpprivtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _grpprivtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _returnVal INTEGER; BEGIN -- This looks like a candidate for a foreign key but isn't. -- fkeys don't work if the foreign key value resides in a child of the -- table and not the table itself. IF ((TG_OP = 'UPDATE' OR TG_OP = 'INSERT') AND (NOT EXISTS(SELECT priv_id FROM priv WHERE (priv_id=NEW.grppriv_priv_id)))) THEN RAISE EXCEPTION 'Privilege id % does not exist or is part of a disabled package.', NEW.grppriv_priv_id; RETURN OLD; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._grpprivtrigger() OWNER TO admin; -- -- Name: _imageasstrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _imageasstrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NEW.imageass_source = 'INCDT') THEN UPDATE incdt SET incdt_updated = now() WHERE incdt_id = NEW.imageass_source_id; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._imageasstrigger() OWNER TO admin; -- -- Name: _incdtbeforedeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _incdtbeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _recurid INTEGER; _newparentid INTEGER; BEGIN IF (TG_OP = 'DELETE') THEN SELECT recur_id INTO _recurid FROM recur WHERE ((recur_parent_id=OLD.incdt_id) AND (recur_parent_type='INCDT')); IF (_recurid IS NOT NULL) THEN SELECT MIN(incdt_id) INTO _newparentid FROM incdt WHERE ((incdt_recurring_incdt_id=OLD.inctd_id) AND (incdt_id!=OLD.incdt_id)); -- client is responsible for warning about deleting a recurring incdt IF (_newparentid IS NULL) THEN DELETE FROM recur WHERE recur_id=_recurid; ELSE UPDATE recur SET recur_parent_id=_newparentid WHERE recur_id=_recurid; END IF; END IF; RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._incdtbeforedeletetrigger() OWNER TO admin; -- -- Name: _incdtbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _incdtbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _rec RECORD; _check BOOLEAN; _crmacct INTEGER; BEGIN IF(TG_OP = 'DELETE') THEN _rec := OLD; ELSE _rec := NEW; END IF; -- Set the incident number if blank IF (TG_OP = 'INSERT') THEN IF (NEW.incdt_number IS NULL) THEN SELECT fetchIncidentNumber() INTO NEW.incdt_number; END IF; --- clear the number from the issue cache PERFORM clearNumberIssue('IncidentNumber', NEW.incdt_number); END IF; -- Description is required IF (LENGTH(COALESCE(NEW.incdt_summary,''))=0) THEN RAISE EXCEPTION 'You must supply a valid Incident Description.'; END IF; -- CRM Account is required IF (NEW.incdt_crmacct_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid CRM Account.'; END IF; -- Contact is required IF (NEW.incdt_cntct_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Contact.'; END IF; NEW.incdt_updated := now(); RETURN NEW; END; $$; ALTER FUNCTION public._incdtbeforetrigger() OWNER TO admin; -- -- Name: _incdttrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _incdttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; _counter INTEGER := 0; _whsId INTEGER := -1; _evntType TEXT; _cmnttypeid INTEGER := -1; _cmntid INTEGER := -1; BEGIN SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='Notes to Comment'); IF NOT FOUND OR _cmnttypeid IS NULL THEN _cmnttypeid := -1; END IF; IF (TG_OP = 'DELETE') THEN -- This should never happen RETURN OLD; ELSIF (TG_OP = 'INSERT') THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_change, incdthist_target_id, incdthist_descrip) VALUES(NEW.incdt_id, 'N', NULL, 'Incident Added'); _evntType = 'NewIncident'; IF (_cmnttypeid <> -1 AND COALESCE(NEW.incdt_descrip, '') <> '') THEN PERFORM postComment(_cmnttypeid, 'INCDT', NEW.incdt_id, NEW.incdt_descrip); END IF; ELSIF (TG_OP = 'UPDATE') THEN _evntType = 'UpdatedIncident'; IF (COALESCE(NEW.incdt_cntct_id,-1) <> COALESCE(OLD.incdt_cntct_id,-1)) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_change, incdthist_target_id, incdthist_descrip) VALUES(NEW.incdt_id, 'C', NEW.incdt_cntct_id, ('Contact Changed: "' || COALESCE((SELECT cntct_first_name || ' ' || cntct_last_name FROM cntct WHERE (cntct_id=OLD.incdt_cntct_id)), '') || '" -> "' || COALESCE((SELECT cntct_first_name || ' ' || cntct_last_name FROM cntct WHERE (cntct_id=NEW.incdt_cntct_id)), '') || '"') ); END IF; IF (COALESCE(NEW.incdt_summary,'') <> COALESCE(OLD.incdt_summary,'')) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_descrip) VALUES(NEW.incdt_id, ('Summary Updated: "' || COALESCE(OLD.incdt_summary, '') || '" -> "' || COALESCE(NEW.incdt_summary, '') || '"') ); END IF; IF (COALESCE(NEW.incdt_descrip,'') <> COALESCE(OLD.incdt_descrip,'')) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_descrip) VALUES(NEW.incdt_id, ('Description Updated: "' || substr(COALESCE(OLD.incdt_descrip, ''), 1, 20) || '..." -> "' || substr(COALESCE(NEW.incdt_descrip, ''), 1, 20) || '..."') ); IF (_cmnttypeid <> -1) THEN -- find an existing comment SELECT comment_id INTO _cmntid FROM comment WHERE comment_source = 'INCDT' AND comment_source_id = NEW.incdt_id AND comment_cmnttype_id = _cmnttypeid; IF FOUND THEN UPDATE comment SET comment_text = NEW.incdt_descrip WHERE comment_id = _cmntid; ELSE PERFORM postComment(_cmnttypeid, 'INCDT', NEW.incdt_id, NEW.incdt_descrip); END IF; END IF; END IF; IF (NEW.incdt_status <> OLD.incdt_status) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_change, incdthist_target_id, incdthist_descrip) VALUES(NEW.incdt_id, 'S', NULL, ('Status Changed: ' || CASE WHEN(OLD.incdt_status='N') THEN 'New' WHEN(OLD.incdt_status='F') THEN 'Feedback' WHEN(OLD.incdt_status='C') THEN 'Confirmed' WHEN(OLD.incdt_status='A') THEN 'Assigned' WHEN(OLD.incdt_status='R') THEN 'Resolved' WHEN(OLD.incdt_status='L') THEN 'Closed' ELSE OLD.incdt_status END || ' -> ' || CASE WHEN(NEW.incdt_status='N') THEN 'New' WHEN(NEW.incdt_status='F') THEN 'Feedback' WHEN(NEW.incdt_status='C') THEN 'Confirmed' WHEN(NEW.incdt_status='A') THEN 'Assigned' WHEN(NEW.incdt_status='R') THEN 'Resolved' WHEN(NEW.incdt_status='L') THEN 'Closed' ELSE NEW.incdt_status END ) ); IF (NEW.incdt_status = 'L') THEN _evntType = 'ClosedIncident'; ELSIF (OLD.incdt_status = 'L') THEN _evntType = 'ReopenedIncident'; END IF; END IF; IF (COALESCE(NEW.incdt_assigned_username,'') <> COALESCE(OLD.incdt_assigned_username,'')) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_change, incdthist_target_id, incdthist_descrip) VALUES(NEW.incdt_id, 'A', NULL, ('Assigned to: "' || COALESCE(OLD.incdt_assigned_username, '') || '" -> "' || COALESCE(NEW.incdt_assigned_username, '') || '"') ); END IF; IF (COALESCE(NEW.incdt_incdtcat_id,-1) <> COALESCE(OLD.incdt_incdtcat_id,-1)) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_change, incdthist_target_id, incdthist_descrip) VALUES(NEW.incdt_id, 'T', NEW.incdt_incdtcat_id, ('Category Changed: ' || COALESCE((SELECT incdtcat_name FROM incdtcat WHERE (incdtcat_id=OLD.incdt_incdtcat_id)), '') || ' -> ' || COALESCE((SELECT incdtcat_name FROM incdtcat WHERE (incdtcat_id=NEW.incdt_incdtcat_id)), '') || '') ); END IF; IF (COALESCE(NEW.incdt_incdtseverity_id,-1) <> COALESCE(OLD.incdt_incdtseverity_id,-1)) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_change, incdthist_target_id, incdthist_descrip) VALUES(NEW.incdt_id, 'V', NEW.incdt_incdtseverity_id, ('Severity Changed: ' || COALESCE((SELECT incdtseverity_name FROM incdtseverity WHERE (incdtseverity_id=OLD.incdt_incdtseverity_id)), '') || ' -> ' || COALESCE((SELECT incdtseverity_name FROM incdtseverity WHERE (incdtseverity_id=NEW.incdt_incdtseverity_id)), '') || '') ); END IF; IF (COALESCE(NEW.incdt_incdtpriority_id,-1) <> COALESCE(OLD.incdt_incdtpriority_id,-1)) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_change, incdthist_target_id, incdthist_descrip) VALUES(NEW.incdt_id, 'P', NEW.incdt_incdtpriority_id, ('Priority Changed: ' || COALESCE((SELECT incdtpriority_name FROM incdtpriority WHERE (incdtpriority_id=OLD.incdt_incdtpriority_id)), '') || ' -> ' || COALESCE((SELECT incdtpriority_name FROM incdtpriority WHERE (incdtpriority_id=NEW.incdt_incdtpriority_id)), '') || '') ); END IF; IF (COALESCE(NEW.incdt_incdtresolution_id,-1) <> COALESCE(OLD.incdt_incdtresolution_id,-1)) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_change, incdthist_target_id, incdthist_descrip) VALUES(NEW.incdt_id, 'E', NEW.incdt_incdtresolution_id, ('Resolution Changed: ' || COALESCE((SELECT incdtresolution_name FROM incdtresolution WHERE (incdtresolution_id=OLD.incdt_incdtresolution_id)), '') || ' -> ' || COALESCE((SELECT incdtresolution_name FROM incdtresolution WHERE (incdtresolution_id=NEW.incdt_incdtresolution_id)), '') || '') ); END IF; END IF; -- find the warehouse for which to create evntlog entries SELECT usrpref_value INTO _whsId FROM usrpref WHERE usrpref_username = getEffectiveXtUser() AND usrpref_name = 'PreferredWarehouse'; INSERT INTO evntlog (evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number) SELECT DISTINCT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'IC', NEW.incdt_id, _whsId, NEW.incdt_number FROM evntnot, evnttype WHERE ((evntnot_evnttype_id=evnttype_id) AND (evnttype_name=_evntType)); RETURN NEW; END; $$; ALTER FUNCTION public._incdttrigger() OWNER TO admin; -- -- Name: _invcheadaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _invcheadaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _cohead_id INTEGER; BEGIN -- Create a comment entry when on a Sales Order when an Invoice is Posted for that order -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF (TG_OP = 'UPDATE') THEN IF ((OLD.invchead_posted != NEW.invchead_posted) AND NEW.invchead_posted) THEN SELECT cohead_id INTO _cohead_id FROM cohead WHERE (cohead_number = OLD.invchead_ordernumber); IF (FOUND) THEN PERFORM postComment( _cmnttypeid, 'S', _cohead_id, ('Invoice, ' || NEW.invchead_invcnumber || ', posted for this order') ); END IF; END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._invcheadaftertrigger() OWNER TO admin; -- -- Name: _invcheadbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _invcheadbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _recurid INTEGER; _newparentid INTEGER; BEGIN IF (TG_OP = 'UPDATE') THEN IF (OLD.invchead_posted AND ((OLD.invchead_invcnumber != NEW.invchead_invcnumber) OR (OLD.invchead_invcdate != NEW.invchead_invcdate) OR (OLD.invchead_terms_id != NEW.invchead_terms_id) OR (OLD.invchead_salesrep_id != NEW.invchead_salesrep_id) OR (OLD.invchead_commission != NEW.invchead_commission) OR (OLD.invchead_taxzone_id != NEW.invchead_taxzone_id) OR (OLD.invchead_shipchrg_id != NEW.invchead_shipchrg_id) OR (OLD.invchead_prj_id != NEW.invchead_prj_id) OR (OLD.invchead_misc_accnt_id != NEW.invchead_misc_accnt_id) OR (OLD.invchead_misc_amount != NEW.invchead_misc_amount) OR (OLD.invchead_freight != NEW.invchead_freight))) THEN RAISE EXCEPTION 'Edit not allow on Posted Invoice.'; END IF; END IF; IF (TG_OP = 'DELETE') THEN DELETE FROM invcheadtax WHERE (taxhist_parent_id=OLD.invchead_id); SELECT recur_id INTO _recurid FROM recur WHERE ((recur_parent_id=OLD.invchead_id) AND (recur_parent_type='I')); IF (_recurid IS NOT NULL) THEN SELECT invchead_id INTO _newparentid FROM invchead WHERE ((invchead_recurring_invchead_id=OLD.invchead_id) AND (invchead_id!=OLD.invchead_id)) ORDER BY invchead_invcdate LIMIT 1; IF (_newparentid IS NULL) THEN DELETE FROM recur WHERE recur_id=_recurid; ELSE UPDATE recur SET recur_parent_id=_newparentid WHERE recur_id=_recurid; UPDATE invchead SET invchead_recurring_invchead_id=_newparentid WHERE invchead_recurring_invchead_id=OLD.invchead_id AND invchead_id!=OLD.invchead_id; END IF; END IF; RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._invcheadbeforetrigger() OWNER TO admin; -- -- Name: _invcheadtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _invcheadtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN -- Something can go here RETURN OLD; END IF; -- Insert new row IF (TG_OP = 'INSERT') THEN -- Calculate Freight Tax IF (NEW.invchead_freight <> 0) THEN PERFORM calculateTaxHist( 'invcheadtax', NEW.invchead_id, NEW.invchead_taxzone_id, getFreightTaxtypeId(), NEW.invchead_invcdate, NEW.invchead_curr_id, NEW.invchead_freight ); END IF; --- clear the number from the issue cache PERFORM clearNumberIssue('InvcNumber', NEW.invchead_invcnumber); END IF; -- Update row IF (TG_OP = 'UPDATE') THEN IF ( (NEW.invchead_freight <> OLD.invchead_freight) OR (COALESCE(NEW.invchead_taxzone_id,-1) <> COALESCE(OLD.invchead_taxzone_id,-1)) OR (NEW.invchead_invcdate <> OLD.invchead_invcdate) OR (NEW.invchead_curr_id <> OLD.invchead_curr_id) ) THEN -- Calculate invchead Tax PERFORM calculateTaxHist( 'invcheadtax', NEW.invchead_id, NEW.invchead_taxzone_id, getFreightTaxtypeId(), NEW.invchead_invcdate, NEW.invchead_curr_id, NEW.invchead_freight ); END IF; IF ( (COALESCE(NEW.invchead_taxzone_id,-1) <> COALESCE(OLD.invchead_taxzone_id,-1)) OR (NEW.invchead_invcdate <> OLD.invchead_invcdate) OR (NEW.invchead_curr_id <> OLD.invchead_curr_id) ) THEN -- Calculate invcitem Tax IF (COALESCE(NEW.invchead_taxzone_id,-1) <> COALESCE(OLD.invchead_taxzone_id,-1)) THEN UPDATE invcitem SET invcitem_taxtype_id=getItemTaxType(invcitem_item_id,NEW.invchead_taxzone_id) WHERE (invcitem_invchead_id=NEW.invchead_id); PERFORM calculateTaxHist( 'invcitemtax', invcitem_id, NEW.invchead_taxzone_id, invcitem_taxtype_id, NEW.invchead_invcdate, NEW.invchead_curr_id, (invcitem_billed * invcitem_qty_invuomratio) * (invcitem_price / invcitem_price_invuomratio) ) FROM invcitem WHERE (invcitem_invchead_id = NEW.invchead_id); END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._invcheadtrigger() OWNER TO admin; -- -- Name: _invcitembeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _invcitembeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _itemfractional BOOLEAN; BEGIN IF (TG_OP = 'DELETE') THEN DELETE FROM invcitemtax WHERE (taxhist_parent_id=OLD.invcitem_id); RETURN OLD; END IF; IF (TG_OP IN ('UPDATE','DELETE')) THEN IF (SELECT COUNT(invchead_id) > 0 FROM invchead WHERE ((invchead_id=OLD.invcitem_invchead_id) AND (invchead_posted))) THEN RAISE EXCEPTION 'Edit not allowed on Posted Invoices.'; END IF; END IF; -- If regular Item then enforce item_fractional IF (COALESCE(NEW.invcitem_item_id, -1) <> -1) THEN SELECT itemuomfractionalbyuom(NEW.invcitem_item_id, NEW.invcitem_qty_uom_id) INTO _itemfractional; IF (NOT _itemfractional) THEN IF (TRUNC(NEW.invcitem_ordered) <> NEW.invcitem_ordered) THEN RAISE EXCEPTION 'Item does not support fractional quantities'; END IF; IF (TRUNC(NEW.invcitem_billed) <> NEW.invcitem_billed) THEN RAISE EXCEPTION 'Item does not support fractional quantities'; END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._invcitembeforetrigger() OWNER TO admin; -- -- Name: _invcitemtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _invcitemtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; -- Cache Invoice Head SELECT * INTO _r FROM invchead WHERE (invchead_id=NEW.invcitem_invchead_id); IF (NOT FOUND) THEN RAISE EXCEPTION 'Invoice head not found'; END IF; -- Insert new row IF (TG_OP = 'INSERT') THEN -- Calculate Tax PERFORM calculateTaxHist( 'invcitemtax', NEW.invcitem_id, COALESCE(_r.invchead_taxzone_id, -1), NEW.invcitem_taxtype_id, COALESCE(_r.invchead_invcdate, CURRENT_DATE), COALESCE(_r.invchead_curr_id, -1), (NEW.invcitem_billed * NEW.invcitem_qty_invuomratio) * (NEW.invcitem_price / NEW.invcitem_price_invuomratio) ); END IF; -- Update row IF (TG_OP = 'UPDATE') THEN -- Calculate Tax IF ( (NEW.invcitem_billed <> OLD.invcitem_billed) OR (NEW.invcitem_qty_invuomratio <> OLD.invcitem_qty_invuomratio) OR (NEW.invcitem_price <> OLD.invcitem_price) OR (NEW.invcitem_price_invuomratio <> OLD.invcitem_price_invuomratio) OR (COALESCE(NEW.invcitem_taxtype_id, -1) <> COALESCE(OLD.invcitem_taxtype_id, -1)) ) THEN PERFORM calculateTaxHist( 'invcitemtax', NEW.invcitem_id, COALESCE(_r.invchead_taxzone_id, -1), NEW.invcitem_taxtype_id, COALESCE(_r.invchead_invcdate, CURRENT_DATE), COALESCE(_r.invchead_curr_id, -1), (NEW.invcitem_billed * NEW.invcitem_qty_invuomratio) * (NEW.invcitem_price / NEW.invcitem_price_invuomratio) ); END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._invcitemtrigger() OWNER TO admin; -- -- Name: _ipsassbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _ipsassbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Checks IF NOT (checkPrivilege('MaintainPricingSchedules')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Price Schedules.'; END IF; -- Business logic, disallow invalid combinations IF (TG_OP IN ('INSERT','UPDATE')) THEN IF (LENGTH(COALESCE(NEW.ipsass_custtype_pattern,'')) != 0) THEN new.ipsass_cust_id = -1; new.ipsass_custtype_id = -1; new.ipsass_shipto_id = -1; new.ipsass_shipto_pattern = ''; ELSIF (COALESCE(NEW.ipsass_custtype_id,-1) > -1) THEN new.ipsass_cust_id = -1; new.ipsass_shipto_id = -1; new.ipsass_shipto_pattern = ''; new.ipsass_custtype_pattern = ''; ELSIF (LENGTH(COALESCE(NEW.ipsass_shipto_pattern,'')) != 0) THEN new.ipsass_custtype_id = -1; new.ipsass_shipto_id = -1; new.ipsass_custtype_pattern = ''; ELSE new.ipsass_shipto_id = COALESCE(NEW.ipsass_shipto_id,-1); new.ipsass_custtype_id = -1; new.ipsass_shipto_pattern = ''; new.ipsass_custtype_pattern = ''; END IF; RETURN NEW; ELSE RETURN OLD; END IF; END; $$; ALTER FUNCTION public._ipsassbeforetrigger() OWNER TO admin; -- -- Name: _ipsheadbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _ipsheadbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Checks IF NOT (checkPrivilege('MaintainPricingSchedules')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Price Schedules.'; END IF; IF (TG_OP IN ('INSERT','UPDATE')) THEN RETURN NEW; ELSE RETURN OLD; END IF; END; $$; ALTER FUNCTION public._ipsheadbeforetrigger() OWNER TO admin; -- -- Name: _ipsitemcharbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _ipsitemcharbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Checks IF NOT (checkPrivilege('MaintainPricingSchedules')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Price Schedules.'; END IF; IF (TG_OP IN ('INSERT','UPDATE')) THEN IF (SELECT (COUNT(item_id)=0) FROM ipsiteminfo JOIN item ON (item_id=ipsitem_item_id) WHERE ((ipsitem_id=NEW.ipsitemchar_ipsitem_id) AND (item_config))) THEN RAISE EXCEPTION 'Characteristic prices may only be set on configured items.'; ELSIF (SELECT (COUNT(item_id)=0) FROM ipsiteminfo JOIN item ON (item_id=ipsitem_item_id) JOIN charass ON (charass_target_id=item_id AND charass_target_type='I') WHERE ((ipsitem_id=NEW.ipsitemchar_ipsitem_id) AND (charass_char_id=NEW.ipsitemchar_char_id) AND (charass_value=NEW.ipsitemchar_value))) THEN RAISE EXCEPTION 'No characteristic with matching value exists for this item.'; END IF; RETURN NEW; ELSE RETURN OLD; END IF; END; $$; ALTER FUNCTION public._ipsitemcharbeforetrigger() OWNER TO admin; -- -- Name: _ipsiteminfobeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _ipsiteminfobeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN -- Checks IF NOT (checkPrivilege('MaintainPricingSchedules')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Price Schedules.'; END IF; IF (TG_OP IN ('INSERT','UPDATE')) THEN RETURN NEW; ELSE RETURN OLD; END IF; END; $$; ALTER FUNCTION public._ipsiteminfobeforetrigger() OWNER TO admin; -- -- Name: _itemaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _itemaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainItemMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Items.'; END IF; -- Integrity checks IF (TG_OP = 'UPDATE') THEN IF ((OLD.item_type <> NEW.item_type) AND (NEW.item_type = 'L')) THEN IF (SELECT COUNT(*) != 0 FROM bomitem WHERE (bomitem_item_id = OLD.item_id)) THEN RAISE EXCEPTION 'This item is part of one or more Bills of Materials and cannot be a Planning Item.'; END IF; END IF; IF ((OLD.item_type <> NEW.item_type) AND (NEW.item_type IN ('R','S','T'))) THEN IF (SELECT COUNT(*) != 0 FROM itemsite WHERE ((itemsite_item_id=OLD.item_id) AND (itemsite_qtyonhand + qtyallocated(itemsite_id,startoftime(),endoftime()) + qtyordered(itemsite_id,startoftime(),endoftime()) > 0 ))) THEN RAISE EXCEPTION 'Item type not allowed when there are itemsites with quantities with on hand quantities or pending inventory activity for this item.'; END IF; END IF; -- If type changed remove costs and deactivate item sites IF (NEW.item_type <> OLD.item_type) THEN PERFORM updateCost(itemcost_id, 0) FROM itemcost WHERE (itemcost_item_id=OLD.item_id); UPDATE itemsite SET itemsite_active=false WHERE (itemsite_item_id=OLD.item_id); IF (NEW.item_type = 'R') THEN UPDATE itemsite SET itemsite_controlmethod='N' WHERE (itemsite_item_id=OLD.item_id); END IF; END IF; END IF; IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='ItemChangeLog') ) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'I', NEW.item_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.item_active <> NEW.item_active) THEN IF (NEW.item_active) THEN PERFORM postComment(_cmnttypeid, 'I', NEW.item_id, 'Activated'); ELSE PERFORM postComment(_cmnttypeid, 'I', NEW.item_id, 'Deactivated'); END IF; END IF; IF (OLD.item_descrip1 <> NEW.item_descrip1) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Description 1 Changed from "' || OLD.item_descrip1 || '" to "' || NEW.item_descrip1 || '"' ) ); END IF; IF (OLD.item_descrip2 <> NEW.item_descrip2) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Description 2 Changed from "' || OLD.item_descrip2 || '" to "' || NEW.item_descrip2 || '"' ) ); END IF; IF (OLD.item_inv_uom_id <> NEW.item_inv_uom_id) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Inventory UOM Changed from "' || (SELECT uom_name FROM uom WHERE uom_id=OLD.item_inv_uom_id) || '" (' || CAST(OLD.item_inv_uom_id AS TEXT) || ') to "' || (SELECT uom_name FROM uom WHERE uom_id=NEW.item_inv_uom_id) || '" (' || CAST(NEW.item_inv_uom_id AS TEXT) || ')' ) ); END IF; IF (OLD.item_sold <> NEW.item_sold) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, CASE WHEN (NEW.item_sold) THEN 'Sold Changed from FALSE to TRUE' ELSE 'Sold Changed from TRUE to FALSE' END ); END IF; IF (OLD.item_picklist <> NEW.item_picklist) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, CASE WHEN (NEW.item_picklist) THEN 'Pick List Changed from FALSE to TRUE' ELSE 'Pick List Changed from TRUE to FALSE' END ); END IF; IF (OLD.item_fractional <> NEW.item_fractional) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, CASE WHEN (NEW.item_fractional) THEN 'Fractional Changed from FALSE to TRUE' ELSE 'Fractional Changed from TRUE to FALSE' END ); END IF; IF (OLD.item_exclusive <> NEW.item_exclusive) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, CASE WHEN (NEW.item_exclusive) THEN 'Exclusive Changed from FALSE to TRUE' ELSE 'Exclusive Changed from TRUE to FALSE' END ); END IF; IF (OLD.item_config <> NEW.item_config) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, CASE WHEN (NEW.item_config) THEN 'Configured Changed from FALSE to TRUE' ELSE 'Configured Changed from TRUE to FALSE' END ); END IF; IF (OLD.item_listprice <> NEW.item_listprice) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'List Price Changed from "' || formatSalesPrice(OLD.item_listprice) || '" to "' || formatSalesPrice(NEW.item_listprice) || '"' ) ); END IF; -- Add New stuff IF (OLD.item_type <> NEW.item_type) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Type Changed from "' || OLD.item_type || '" to "' || NEW.item_type || '"' ) ); END IF; IF (OLD.item_price_uom_id <> NEW.item_price_uom_id) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Price UOM Changed from "' || (SELECT uom_name FROM uom WHERE uom_id=OLD.item_price_uom_id) || '" (' || CAST(OLD.item_price_uom_id AS TEXT) || ') to "' || (SELECT uom_name FROM uom WHERE uom_id=NEW.item_price_uom_id) || '" (' || CAST(NEW.item_price_uom_id AS TEXT) || ')' ) ); END IF; IF (OLD.item_classcode_id <> NEW.item_classcode_id) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Class Code Changed from "' || (SELECT classcode_code || '-' || classcode_descrip FROM classcode WHERE classcode_id=OLD.item_classcode_id) || '" (' || CAST(OLD.item_classcode_id AS TEXT) || ') to "' || (SELECT classcode_code || '-' || classcode_descrip FROM classcode WHERE classcode_id=NEW.item_classcode_id) || '" (' || CAST(NEW.item_classcode_id AS TEXT) || ')' ) ); END IF; IF (OLD.item_freightclass_id <> NEW.item_freightclass_id) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Freight Class Changed from "' || (SELECT freightclass_code || '-' || freightclass_descrip FROM freightclass WHERE freightclass_id=OLD.item_freightclass_id) || '" (' || CAST(OLD.item_freightclass_id AS TEXT) || ') to "' || (SELECT freightclass_code || '-' || freightclass_descrip FROM freightclass WHERE freightclass_id=NEW.item_freightclass_id) || '" (' || CAST(NEW.item_freightclass_id AS TEXT) || ')' ) ); END IF; IF (OLD.item_prodcat_id <> NEW.item_prodcat_id) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Product Category Changed from "' || (SELECT prodcat_code || '-' || prodcat_descrip FROM prodcat WHERE prodcat_id=OLD.item_prodcat_id) || '" (' || CAST(OLD.item_prodcat_id AS TEXT) || ') to "' || (SELECT prodcat_code || '-' || prodcat_descrip FROM prodcat WHERE prodcat_id=NEW.item_prodcat_id) || '" (' || CAST(NEW.item_prodcat_id AS TEXT) || ')' ) ); END IF; IF (OLD.item_upccode <> NEW.item_upccode) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'UPC Code Changed from "' || OLD.item_upccode || '" to "' || NEW.item_upccode || '"' ) ); END IF; IF (OLD.item_prodweight <> NEW.item_prodweight) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Product Weight Changed from "' || formatWeight(OLD.item_prodweight) || '" to "' || formatWeight(NEW.item_prodweight) || '"' ) ); END IF; IF (OLD.item_packweight <> NEW.item_packweight) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Packaging Weight Changed from "' || formatWeight(OLD.item_packweight) || '" to "' || formatWeight(NEW.item_packweight) || '"' ) ); END IF; IF (OLD.item_maxcost <> NEW.item_maxcost) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Maximum Desired Cost Changed from "' || formatCost(OLD.item_maxcost) || '" to "' || formatCost(NEW.item_maxcost) || '"' ) ); END IF; IF (OLD.item_listcost <> NEW.item_listcost) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'List Cost Changed from "' || formatCost(OLD.item_listcost) || '" to "' || formatCost(NEW.item_listcost) || '"' ) ); END IF; -- End changes END IF; END IF; END IF; IF (TG_OP = 'DELETE') THEN DELETE FROM imageass WHERE ((imageass_source_id=OLD.item_id) AND (imageass_source='I')); DELETE FROM url WHERE ((url_source_id=OLD.item_id) AND (url_source='I')); DELETE FROM docass WHERE docass_source_id = OLD.item_id AND docass_source_type = 'I'; DELETE FROM docass WHERE docass_target_id = OLD.item_id AND docass_target_type = 'I'; RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._itemaftertrigger() OWNER TO admin; -- -- Name: _itemaliastrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _itemaliastrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainItemMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Item Aliases.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._itemaliastrigger() OWNER TO admin; -- -- Name: _itemcostaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _itemcostaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _itemNumber TEXT; _maxCost NUMERIC; _oldStdCost NUMERIC; _oldActCost NUMERIC; _actualCost NUMERIC; _standardCost NUMERIC; BEGIN -- Create Event if Standard or Actual Cost is greater than Max Cost IF NOT EXISTS(SELECT 1 FROM evntnot JOIN evnttype ON (evnttype_id = evntnot_evnttype_id) JOIN usrpref ON (evntnot_username = usrpref_username) WHERE evnttype_name = 'CostExceedsMaxDesired' AND usrpref_name = 'active' AND usrpref_value = 't') THEN RETURN NEW; END IF; SELECT item_number, item_maxcost, actcost(item_id), stdcost(item_id) INTO _itemNumber, _maxCost, _actualCost, _standardCost FROM item WHERE (item_id=NEW.itemcost_item_id); IF (_maxCost > 0.0) THEN -- IF (_standardCost > _maxCost) IF NOT EXISTS(SELECT 1 --COUNT(evntlog_id) FROM evntlog, evnttype WHERE evntlog_evnttype_id = evnttype_id AND evntlog_number LIKE (_itemNumber || ' -Standard- New:' || '%') AND (evntlog_dispatched IS NULL) AND CAST(evntlog_evnttime AS DATE) = current_date ) AND (_standardCost > _maxCost) THEN IF (TG_OP = 'INSERT') THEN _oldStdCost := 0; _oldActCost := 0; ELSE _oldStdCost := OLD.itemcost_stdcost; _oldActCost := OLD.itemcost_stdcost; END IF; INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number, evntlog_newvalue, evntlog_oldvalue ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, '', NEW.itemcost_item_id, itemsite_warehous_id, (_itemNumber || ' -Standard- ' || 'New: ' || formatCost(_standardCost) || ' Max: '|| formatCost(_MaxCost)), NEW.itemcost_stdcost, _oldStdCost FROM evntnot, evnttype, itemsite, usrpref WHERE ( (evntnot_evnttype_id=evnttype_id) AND (itemsite_item_id=NEW.itemcost_item_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (evnttype_name='CostExceedsMaxDesired') AND (itemsite_active) AND (usrpref_username = evntnot_username) AND (usrpref_name = 'active') AND (usrpref_value = 't')); -- LIMIT 1; END IF; IF NOT EXISTS( SELECT 1 FROM evntlog, evnttype WHERE evntlog_evnttype_id = evnttype_id AND evntlog_number LIKE (_itemNumber || ' -Actual- New:' || '%') AND (evntlog_dispatched IS NULL) AND CAST(evntlog_evnttime AS DATE) = current_date ) AND (_actualCost > _maxCost) THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number, evntlog_newvalue, evntlog_oldvalue ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, '', NEW.itemcost_item_id, itemsite_warehous_id, (_itemNumber || ' -Actual- ' || 'New: ' || formatCost(_actualCost) || ' Max: '|| formatCost(_MaxCost)), NEW.itemcost_actcost, _oldActCost FROM evntnot, evnttype, itemsite, usrpref WHERE ( (evntnot_evnttype_id=evnttype_id) AND (itemsite_item_id=NEW.itemcost_item_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (evnttype_name='CostExceedsMaxDesired') AND (itemsite_active) AND (usrpref_username = evntnot_username) AND (usrpref_name = 'active') AND (usrpref_value = 't') ); --LIMIT 1; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._itemcostaftertrigger() OWNER TO admin; -- -- Name: _itemcosttrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _itemcosttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN --Privilege Checks IF ( (TG_OP = 'INSERT') AND (NOT checkPrivilege('CreateCosts')) AND (NOT checkPrivilege('PostVouchers')) ) THEN RAISE EXCEPTION 'You do not have privileges to enter Item Costs.'; END IF; IF ( (TG_OP = 'UPDATE') AND (NOT checkPrivilege('EnterActualCosts')) AND (NOT checkPrivilege('PostVouchers')) AND (NOT checkPrivilege('UpdateActualCosts')) AND (NOT checkPrivilege('PostActualCosts')) AND (NOT checkPrivilege('PostStandardCosts')) ) THEN RAISE EXCEPTION 'You do not have privileges to update Item Costs.'; END IF; IF ( (TG_OP = 'DELETE') AND (NOT checkPrivilege('DeleteCosts')) ) THEN RAISE EXCEPTION 'You do not have privileges to delete Item Costs.'; END IF; IF (TG_OP = 'UPDATE') THEN IF (NEW.itemcost_actcost <> OLD.itemcost_actcost OR NEW.itemcost_curr_id <> OLD.itemcost_curr_id) THEN INSERT INTO costhist ( costhist_item_id, costhist_costelem_id, costhist_type, costhist_lowlevel, costhist_username, costhist_date, costhist_oldcost, costhist_newcost, costhist_oldcurr_id, costhist_newcurr_id ) VALUES ( NEW.itemcost_item_id, NEW.itemcost_costelem_id, 'A', NEW.itemcost_lowlevel, getEffectiveXtUser(), CURRENT_TIMESTAMP, OLD.itemcost_actcost, NEW.itemcost_actcost, OLD.itemcost_curr_id, NEW.itemcost_curr_id ); END IF; IF (NEW.itemcost_stdcost <> OLD.itemcost_stdcost) THEN INSERT INTO costhist ( costhist_item_id, costhist_costelem_id, costhist_type, costhist_lowlevel, costhist_username, costhist_date, costhist_oldcost, costhist_newcost, costhist_oldcurr_id, costhist_newcurr_id ) VALUES ( NEW.itemcost_item_id, NEW.itemcost_costelem_id, 'S', NEW.itemcost_lowlevel, getEffectiveXtUser(), CURRENT_TIMESTAMP, OLD.itemcost_stdcost, NEW.itemcost_stdcost, baseCurrId(), baseCurrId() ); END IF; RETURN NEW; ELSIF (TG_OP = 'INSERT') THEN INSERT INTO costhist ( costhist_item_id, costhist_costelem_id, costhist_type, costhist_lowlevel, costhist_username, costhist_date, costhist_oldcost, costhist_newcost, costhist_oldcurr_id, costhist_newcurr_id ) VALUES ( NEW.itemcost_item_id, NEW.itemcost_costelem_id, 'N', NEW.itemcost_lowlevel, getEffectiveXtUser(), CURRENT_TIMESTAMP, 0, NEW.itemcost_actcost, baseCurrId(), NEW.itemcost_curr_id ); RETURN NEW; ELSIF (TG_OP = 'DELETE') THEN INSERT INTO costhist ( costhist_item_id, costhist_costelem_id, costhist_type, costhist_lowlevel, costhist_username, costhist_date, costhist_oldcost, costhist_newcost, costhist_oldcurr_id, costhist_newcurr_id ) VALUES ( OLD.itemcost_item_id, OLD.itemcost_costelem_id, 'D', OLD.itemcost_lowlevel, getEffectiveXtUser(), CURRENT_TIMESTAMP, OLD.itemcost_stdcost, 0, OLD.itemcost_curr_id, baseCurrId() ); RETURN OLD; END IF; END; $$; ALTER FUNCTION public._itemcosttrigger() OWNER TO admin; -- -- Name: _itemsiteaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _itemsiteaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _state INTEGER; _wasLocationControl BOOLEAN; _isLocationControl BOOLEAN; _wasLotSerial BOOLEAN; _isLotSerial BOOLEAN; _wasPerishable BOOLEAN; _isPerishable BOOLEAN; _qty NUMERIC; _maint BOOLEAN; _cost NUMERIC; _variance NUMERIC; _application TEXT; BEGIN -- Cache Application SELECT fetchMetricText('Application') INTO _application; -- Check if we are doing maintenance IF (TG_OP = 'INSERT') THEN _maint := TRUE; ELSIF (TG_OP = 'UPDATE') THEN IF ((OLD.itemsite_item_id != NEW.itemsite_item_id) OR (OLD.itemsite_warehous_id != NEW.itemsite_warehous_id) OR (OLD.itemsite_reorderlevel != NEW.itemsite_reorderlevel) OR (OLD.itemsite_ordertoqty != NEW.itemsite_ordertoqty) OR (OLD.itemsite_cyclecountfreq != NEW.itemsite_cyclecountfreq) OR (OLD.itemsite_planning_type != NEW.itemsite_planning_type) OR (OLD.itemsite_posupply != NEW.itemsite_posupply) OR (OLD.itemsite_wosupply != NEW.itemsite_wosupply) OR (OLD.itemsite_loccntrl != NEW.itemsite_loccntrl) OR (OLD.itemsite_safetystock != NEW.itemsite_safetystock) OR (OLD.itemsite_minordqty != NEW.itemsite_minordqty) OR (OLD.itemsite_multordqty != NEW.itemsite_multordqty) OR (OLD.itemsite_leadtime != NEW.itemsite_leadtime) OR (OLD.itemsite_abcclass != NEW.itemsite_abcclass) OR (OLD.itemsite_controlmethod != NEW.itemsite_controlmethod) OR (OLD.itemsite_active != NEW.itemsite_active) OR (OLD.itemsite_plancode_id != NEW.itemsite_plancode_id) OR (OLD.itemsite_costcat_id != NEW.itemsite_costcat_id) OR (OLD.itemsite_eventfence != NEW.itemsite_eventfence) OR (OLD.itemsite_sold != NEW.itemsite_sold) OR (OLD.itemsite_stocked != NEW.itemsite_stocked) OR (OLD.itemsite_location_id != NEW.itemsite_location_id) OR (OLD.itemsite_useparams != NEW.itemsite_useparams) OR (OLD.itemsite_useparamsmanual != NEW.itemsite_useparamsmanual) OR (OLD.itemsite_soldranking != NEW.itemsite_soldranking) OR (OLD.itemsite_createpr != NEW.itemsite_createpr) OR (OLD.itemsite_location != NEW.itemsite_location) OR (OLD.itemsite_location_comments != NEW.itemsite_location_comments) OR (OLD.itemsite_notes != NEW.itemsite_notes) OR (OLD.itemsite_perishable != NEW.itemsite_perishable) OR (OLD.itemsite_autoabcclass != NEW.itemsite_autoabcclass) OR (OLD.itemsite_ordergroup != NEW.itemsite_ordergroup) OR (OLD.itemsite_disallowblankwip != NEW.itemsite_disallowblankwip) OR (OLD.itemsite_maxordqty != NEW.itemsite_maxordqty) OR (OLD.itemsite_mps_timefence != NEW.itemsite_mps_timefence) OR (OLD.itemsite_createwo != NEW.itemsite_createwo) OR (OLD.itemsite_warrpurc != NEW.itemsite_warrpurc) OR (OLD.itemsite_costmethod != NEW.itemsite_costmethod) OR (OLD.itemsite_autoreg != NEW.itemsite_autoreg) OR (OLD.itemsite_lsseq_id != NEW.itemsite_lsseq_id) ) THEN IF (OLD.itemsite_item_id != NEW.itemsite_item_id) THEN RAISE EXCEPTION 'The item number on an itemsite may not be changed.'; ELSIF (OLD.itemsite_warehous_id != NEW.itemsite_warehous_id) THEN RAISE EXCEPTION 'The warehouse code on an itemsite may not be changed.'; END IF; _maint := TRUE; END IF; ELSE _maint := FALSE; END IF; IF (_maint) THEN -- Begin Maintenance -- Privilege Checks IF ( NOT checkPrivilege('MaintainItemSites') ) THEN RAISE EXCEPTION 'You do not have privileges to maintain Item Sites.'; END IF; -- Override values to avoid invalid data combinations IF (NOT NEW.itemsite_posupply) THEN UPDATE itemsite SET itemsite_createpr = FALSE WHERE (itemsite_id=NEW.itemsite_id); END IF; IF (NOT NEW.itemsite_wosupply) THEN UPDATE itemsite SET itemsite_createwo = FALSE WHERE (itemsite_id=NEW.itemsite_id); END IF; IF (NEW.itemsite_controlmethod NOT IN ('S','L')) THEN UPDATE itemsite SET itemsite_perishable = FALSE, itemsite_warrpurc = FALSE, itemsite_autoreg = FALSE, itemsite_lsseq_id = NULL WHERE (itemsite_id=NEW.itemsite_id); END IF; IF (NOT NEW.itemsite_loccntrl) THEN UPDATE itemsite SET itemsite_disallowblankwip = FALSE WHERE (itemsite_id=NEW.itemsite_id); END IF; IF (NOT NEW.itemsite_useparams) THEN UPDATE itemsite SET itemsite_reorderlevel = 0, itemsite_ordertoqty = 0, itemsite_minordqty = 0, itemsite_maxordqty = 0, itemsite_multordqty = 0, itemsite_useparamsmanual = FALSE WHERE (itemsite_id = NEW.itemsite_id); END IF; -- Integrity check IF (TG_OP = 'INSERT') THEN -- Handle MLC logic IF ( (NEW.itemsite_loccntrl) AND (NEW.itemsite_warehous_id IS NOT NULL) ) THEN IF (SELECT count(*)=0 FROM location WHERE ((location_warehous_id=NEW.itemsite_warehous_id) AND ( (NOT location_restrict) OR ( (location_restrict) AND (location_id IN ( SELECT locitem_location_id FROM locitem WHERE (locitem_item_id=NEW.itemsite_item_id) ) ) ) ))) THEN RAISE EXCEPTION 'You must first create at least one valid Location for this Item Site before it may be multiply located.'; END IF; END IF; --This could be made a table constraint later, but do not want to create a big problem --for users with problematic legacy data over a relatively trivial problem for now, --so we will just check moving forword. IF (NEW.itemsite_stocked AND NEW.itemsite_reorderlevel<=0) THEN RAISE EXCEPTION 'Stocked items must have postive reorder level specified.'; END IF; END IF; IF (TG_OP = 'UPDATE') THEN --This could be made a table constraint later, but do not want to create a big problem --for users with problematic legacy data over a relatively trivial problem for now, --so we will just check moving forword. IF ((NEW.itemsite_stocked) AND (NEW.itemsite_stocked != OLD.itemsite_stocked) --Avoid checking unless explicitly changed AND (NEW.itemsite_reorderlevel<=0)) THEN RAISE EXCEPTION 'Stocked items must have postive reorder level specified.'; END IF; END IF; IF (TG_OP = 'UPDATE') THEN -- Integrity check IF (NOT OLD.itemsite_loccntrl AND NEW.itemsite_loccntrl) THEN IF (SELECT count(*)=0 FROM location WHERE ((location_warehous_id=NEW.itemsite_warehous_id) AND ( (NOT location_restrict) OR ( (location_restrict) AND (location_id IN ( SELECT locitem_location_id FROM locitem WHERE (locitem_item_id=NEW.itemsite_item_id) ) ) ) ))) THEN RAISE EXCEPTION 'You must first create at least one valid Location for this Item Site before it may be multiply located.'; END IF; END IF; -- Update detail records based on control method changes _wasLocationControl := OLD.itemsite_loccntrl; _isLocationControl := NEW.itemsite_loccntrl; _wasLotSerial := OLD.itemsite_controlmethod IN ('S','L'); _isLotSerial := NEW.itemsite_controlmethod IN ('S','L'); _wasPerishable := OLD.itemsite_perishable; _isPerishable := NEW.itemsite_perishable; _state := 0; IF ( (_wasLocationControl) AND (_isLocationControl) ) THEN _state := 10; ELSIF ( (NOT _wasLocationControl) AND (NOT _isLocationControl) ) THEN _state := 20; ELSIF ( (NOT _wasLocationControl) AND (_isLocationControl) ) THEN _state := 30; ELSIF ( (_wasLocationControl) AND (NOT _isLocationControl) ) THEN _state := 40; END IF; IF ( (_wasLotSerial) AND (_isLotSerial) ) THEN _state := _state + 1; ELSIF ( (NOT _wasLotSerial) AND (NOT _isLotSerial) ) THEN _state := _state + 2; ELSIF ( (NOT _wasLotSerial) AND (_isLotSerial) ) THEN _state := _state + 3; ELSIF ( (_wasLotSerial) AND (NOT _isLotSerial) ) THEN _state := _state + 4; END IF; IF ( (_application = 'Standard') AND (_state IN (41, 43, 14, 34, 24, 42, 44)) ) THEN -- Check for Reservations IF (SELECT COUNT(*) > 0 FROM itemloc JOIN itemlocrsrv ON (itemlocrsrv_itemloc_id=itemloc_id) WHERE (itemloc_itemsite_id=OLD.itemsite_id)) THEN RAISE EXCEPTION 'Sales Order Reservations by Location exist for this Item Site'; END IF; END IF; IF (_state IN (41, 43)) THEN PERFORM consolidateLotSerial(OLD.itemsite_id); ELSIF (_state IN (14, 34)) THEN PERFORM consolidateLocations(OLD.itemsite_id); ELSIF (_state IN (24, 42, 44)) THEN RAISE NOTICE 'Deleting item site detail records,'; SELECT SUM(itemloc_qty) INTO _qty FROM itemloc, location WHERE ((itemloc_location_id=location_id) AND (NOT location_netable) AND (itemloc_itemsite_id=OLD.itemsite_id)); IF (_qty != 0) THEN UPDATE itemsite SET itemsite_qtyonhand = itemsite_qtyonhand + _qty, itemsite_nnqoh = itemsite_nnqoh - _qty WHERE (itemsite_id=OLD.itemsite_id); END IF; DELETE FROM itemloc WHERE (itemloc_itemsite_id=OLD.itemsite_id); END IF; IF (NEW.itemsite_qtyonhand != 0) THEN -- Handle detail creation -- Create itemloc records if they do not exist IF (_state IN (23, 32, 33)) THEN INSERT INTO itemloc ( itemloc_itemsite_id, itemloc_location_id, itemloc_expiration, itemloc_qty ) VALUES ( NEW.itemsite_id, -1, endOfTime(), NEW.itemsite_qtyonhand ); END IF; -- Handle Location distribution IF (_state IN (31, 32, 33, 34)) THEN IF (SELECT (COUNT(*)=1) FROM location WHERE ((location_id=NEW.itemsite_location_id) AND (location_warehous_id=NEW.itemsite_warehous_id) AND ( (NOT location_restrict) OR ( (location_restrict) AND (location_id IN ( SELECT locitem_location_id FROM locitem WHERE (locitem_item_id=NEW.itemsite_item_id) ) ) ) ))) THEN PERFORM initialDistribution(NEW.itemsite_id, NEW.itemsite_location_id); ELSE RAISE EXCEPTION 'A valid default location must be selected to distribute existing inventory to.'; END IF; END IF; -- Handle Lot/Serial distribution IF ( (_state = 13) OR (_state = 23) OR (_state = 33) OR (_state = 43) ) THEN RAISE NOTICE 'You should now use the Reassign Lot/Serial # window to assign Lot/Serial #s.'; END IF; END IF; IF (OLD.itemsite_costmethod='A' AND NEW.itemsite_costmethod='S') THEN -- TODO: Average costing cost method change SELECT stdcost(NEW.itemsite_item_id) * NEW.itemsite_qtyonhand INTO _cost; _variance := _cost - NEW.itemsite_value; NEW.itemsite_value := _cost; IF(_variance <> 0.0) THEN PERFORM insertGLTransaction( 'P/D', '', '', 'Itemsite converted from Average to Standard cost.', costcat_invcost_accnt_id, costcat_asset_accnt_id, NEW.itemsite_id, _variance, CURRENT_DATE ) FROM costcat WHERE(costcat_id=NEW.itemsite_costcat_id); UPDATE itemsite SET itemsite_value = _cost WHERE (itemsite_id = NEW.itemsite_id); END IF; END IF; END IF; -- Handle Perishable IF ( (_application = 'Standard') AND (_wasPerishable) AND (NOT _isPerishable) ) THEN UPDATE itemloc SET itemloc_expiration = endOfTime() WHERE (itemloc_itemsite_id = OLD.itemsite_id); PERFORM consolidateLotSerial(OLD.itemsite_id); END IF; -- If Planning Type changed to None then delete all Planned Orders IF ( (_application = 'Standard') AND (TG_OP = 'UPDATE') ) THEN IF (NEW.itemsite_planning_type = 'N' AND OLD.itemsite_planning_type <> 'N') THEN PERFORM deletePlannedOrder(planord_id, TRUE) FROM planord WHERE (planord_itemsite_id=NEW.itemsite_id); END IF; END IF; END IF; -- End Maintenance RETURN NEW; END; $$; ALTER FUNCTION public._itemsiteaftertrigger() OWNER TO admin; -- -- Name: _itemsitetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _itemsitetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _r RECORD; BEGIN -- Cache some information SELECT item_type INTO _r FROM item WHERE (item_id=NEW.itemsite_item_id); -- Override values to avoid invalid data combinations IF (_r.item_type IN ('J','R','S')) THEN NEW.itemsite_planning_type := 'N'; END IF; IF (_r.item_type = 'L') THEN NEW.itemsite_planning_type := 'S'; END IF; IF (TG_OP = 'UPDATE') THEN IF ( (NEW.itemsite_qtyonhand <> OLD.itemsite_qtyonhand) ) THEN IF (OLD.itemsite_freeze) THEN NEW.itemsite_qtyonhand := OLD.itemsite_qtyonhand; ELSE NEW.itemsite_datelastused := CURRENT_DATE; END IF; IF ( (NEW.itemsite_qtyonhand < 0) AND (OLD.itemsite_qtyonhand >= 0) AND (NEW.itemsite_eventfence > 0) ) THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'I', NEW.itemsite_id, warehous_id, (item_number || '/' || warehous_code) FROM evntnot, evnttype, item, whsinfo WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=NEW.itemsite_warehous_id) AND (NEW.itemsite_item_id=item_id) AND (NEW.itemsite_warehous_id=warehous_id) AND (evnttype_name='QOHBelowZero') ); END IF; END IF; IF ( (NEW.itemsite_value <> OLD.itemsite_value) AND (OLD.itemsite_freeze) ) THEN NEW.itemsite_value := OLD.itemsite_value; END IF; END IF; IF (NEW.itemsite_qtyonhand < 0 AND NEW.itemsite_costmethod = 'A') THEN RAISE EXCEPTION 'Itemsite (%) is set to use average costing and is not allowed to have a negative quantity on hand.', NEW.itemsite_id; ELSIF (NEW.itemsite_value < 0 AND NEW.itemsite_costmethod = 'A') THEN RAISE EXCEPTION 'This transaction results in a negative itemsite value. Itemsite (%) is set to use average costing and is not allowed to have a negative value.', NEW.itemsite_id; END IF; -- Handle the ChangeLog IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='ItemSiteChangeLog') ) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'IS', NEW.itemsite_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.itemsite_plancode_id <> NEW.itemsite_plancode_id) THEN PERFORM postComment( _cmnttypeid, 'IS', NEW.itemsite_id, ( 'Planner Code Changed from "' || oldplancode.plancode_code || '" to "' || newplancode.plancode_code || '"' ) ) FROM plancode AS oldplancode, plancode AS newplancode WHERE ( (oldplancode.plancode_id=OLD.itemsite_plancode_id) AND (newplancode.plancode_id=NEW.itemsite_plancode_id) ); END IF; IF (NEW.itemsite_reorderlevel <> OLD.itemsite_reorderlevel) THEN PERFORM postComment( _cmnttypeid, 'IS', NEW.itemsite_id, ( 'Reorder Level Changed from ' || formatQty(OLD.itemsite_reorderlevel) || ' to ' || formatQty(NEW.itemsite_reorderlevel ) ) ); END IF; IF (NEW.itemsite_ordertoqty <> OLD.itemsite_ordertoqty) THEN PERFORM postComment( _cmnttypeid, 'IS', NEW.itemsite_id, ( 'Order Up To Changed from ' || formatQty(OLD.itemsite_ordertoqty) || ' to ' || formatQty(NEW.itemsite_ordertoqty ) ) ); END IF; IF (NEW.itemsite_leadtime <> OLD.itemsite_leadtime) THEN PERFORM postComment( _cmnttypeid, 'IS', NEW.itemsite_id, ( 'Itemsite Leadtime Changed from ' || formatQty(OLD.itemsite_leadtime) || ' to ' || formatQty(NEW.itemsite_leadtime ) ) ); END IF; IF (NEW.itemsite_abcclass <> OLD.itemsite_abcclass) THEN PERFORM postComment( _cmnttypeid, 'IS', NEW.itemsite_id, ( 'Itemsite ABC Class Changed from ' || COALESCE(OLD.itemsite_abcclass, 'None') || ' to ' || COALESCE(NEW.itemsite_abcclass,'None') ) ); END IF; IF (NEW.itemsite_controlmethod <> OLD.itemsite_controlmethod) THEN PERFORM postComment( _cmnttypeid, 'IS', NEW.itemsite_id, ( 'Itemsite Control Method Changed from ' || COALESCE(OLD.itemsite_controlmethod,'None') || ' to ' || COALESCE(NEW.itemsite_controlmethod,'None') ) ); END IF; IF (OLD.itemsite_sold <> NEW.itemsite_sold) THEN PERFORM postComment( _cmnttypeid, 'IS', NEW.itemsite_id, CASE WHEN (NEW.itemsite_sold) THEN 'Sold Changed from FALSE to TRUE' ELSE 'Sold Changed from TRUE to FALSE' END ); END IF; IF (OLD.itemsite_active <> NEW.itemsite_active) THEN IF (NEW.itemsite_active) THEN PERFORM postComment(_cmnttypeid, 'IS', NEW.itemsite_id, 'Activated'); ELSE PERFORM postComment(_cmnttypeid, 'IS', NEW.itemsite_id, 'Deactivated'); END IF; END IF; END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._itemsitetrigger() OWNER TO admin; -- -- Name: _itemsrcaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _itemsrcaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainItemSources')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Item Sources.'; END IF; -- Set default to false for other item sources of this item IF (COALESCE(NEW.itemsrc_default, FALSE) = TRUE) THEN UPDATE itemsrc SET itemsrc_default = FALSE WHERE ( (itemsrc_item_id = NEW.itemsrc_item_id) AND (itemsrc_id <> NEW.itemsrc_id) ); END IF; RETURN NEW; END; $$; ALTER FUNCTION public._itemsrcaftertrigger() OWNER TO admin; -- -- Name: _itemsrcptrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _itemsrcptrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainItemSources')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Item Sources.'; END IF; -- Set defaults NEW.itemsrcp_curr_id := COALESCE(NEW.itemsrcp_curr_id,basecurrid()); RETURN NEW; END; $$; ALTER FUNCTION public._itemsrcptrigger() OWNER TO admin; -- -- Name: _itemsrctrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _itemsrctrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainItemSources')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Item Sources.'; END IF; -- Set defaults NEW.itemsrc_invvendoruomratio := COALESCE(NEW.itemsrc_invvendoruomratio,1); NEW.itemsrc_minordqty := COALESCE(NEW.itemsrc_minordqty,0); NEW.itemsrc_multordqty := COALESCE(NEW.itemsrc_multordqty,0); NEW.itemsrc_active := COALESCE(NEW.itemsrc_active,true); NEW.itemsrc_leadtime := COALESCE(NEW.itemsrc_leadtime,0); NEW.itemsrc_ranking := COALESCE(NEW.itemsrc_ranking,1); RETURN NEW; END; $$; ALTER FUNCTION public._itemsrctrigger() OWNER TO admin; -- -- Name: _itemsubtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _itemsubtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainItemMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Item Substitutes.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._itemsubtrigger() OWNER TO admin; -- -- Name: _itemtaxtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _itemtaxtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainItemMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Items.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._itemtaxtrigger() OWNER TO admin; -- -- Name: _itemtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _itemtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Override values to avoid invalid data combinations IF (NEW.item_type IN ('R','S','O','L','B')) THEN NEW.item_picklist := FALSE; END IF; IF (NEW.item_type IN ('F','S','O','L','B')) THEN NEW.item_picklist := FALSE; NEW.item_sold := FALSE; NEW.item_prodcat_id := -1; NEW.item_exclusive := false; NEW.item_listprice := 0; NEW.item_upccode := ''; NEW.item_prodweight := 0; NEW.item_packweight := 0; END IF; IF (NEW.item_type NOT IN ('M','R')) THEN NEW.item_config := false; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._itemtrigger() OWNER TO admin; -- -- Name: _itemuomconvtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _itemuomconvtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainItemMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Items.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._itemuomconvtrigger() OWNER TO admin; -- -- Name: _locationaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _locationaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _itemloc RECORD; BEGIN -- Maintain itemsite_qtyonhand and itemsite_nnqoh when location_netable changes IF (TG_OP = 'UPDATE') THEN IF (OLD.location_netable <> NEW.location_netable) THEN FOR _itemloc IN SELECT * FROM itemloc WHERE (itemloc_location_id=NEW.location_id) LOOP IF (NEW.location_netable) THEN UPDATE itemsite SET itemsite_qtyonhand = itemsite_qtyonhand + _itemloc.itemloc_qty, itemsite_nnqoh = itemsite_nnqoh - _itemloc.itemloc_qty WHERE (itemsite_id=_itemloc.itemloc_itemsite_id); ELSE UPDATE itemsite SET itemsite_qtyonhand = itemsite_qtyonhand - _itemloc.itemloc_qty, itemsite_nnqoh = itemsite_nnqoh + _itemloc.itemloc_qty WHERE (itemsite_id=_itemloc.itemloc_itemsite_id); END IF; END LOOP; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._locationaftertrigger() OWNER TO admin; -- -- Name: _locationtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _locationtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _checkId INTEGER; BEGIN -- Checks -- Start with privileges IF (TG_OP = 'INSERT') THEN SELECT checkPrivilege('MaintainLocations') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to add new Locations.'; END IF; ELSE SELECT checkPrivilege('MaintainLocations') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to alter a Location.'; END IF; END IF; -- Code is required IF ( (LENGTH(COALESCE(NEW.location_name,''))=0) AND (LENGTH(COALESCE(NEW.location_aisle,''))=0) AND (LENGTH(COALESCE(NEW.location_rack,''))=0) AND (LENGTH(COALESCE(NEW.location_bin,''))=0) ) THEN RAISE EXCEPTION 'You must supply a valid Location Identifier.'; END IF; -- Site is required IF (NEW.location_warehous_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Site.'; END IF; -- Location Identifier must be unique SELECT location_id INTO _checkId FROM location WHERE ( (UPPER(location_name)=UPPER(NEW.location_name)) AND (UPPER(location_aisle)=UPPER(NEW.location_aisle)) AND (UPPER(location_rack)=UPPER(NEW.location_rack)) AND (UPPER(location_bin)=UPPER(NEW.location_bin)) AND (location_warehous_id=NEW.location_warehous_id) AND (location_id<>NEW.location_id) ); IF (FOUND) THEN RAISE EXCEPTION 'You must supply a unique Location Identifier for this Site.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._locationtrigger() OWNER TO admin; -- -- Name: _metasqlaltertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _metasqlaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NOT (isDBA() OR checkPrivilege('MaintainMetaSQL'))) THEN RAISE EXCEPTION '% does not have privileges to maintain MetaSQL statements in %.%', getEffectiveXtUser(), TG_TABLE_SCHEMA, TG_TABLE_NAME; END IF; IF ((TG_OP = 'UPDATE' OR TG_OP = 'DELETE') AND NEW.metasql_grade <= 0 AND NOT isDBA()) THEN RAISE EXCEPTION 'You may not alter grade 0 metasql queries except using the xTuple Updater utility'; END IF; IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._metasqlaltertrigger() OWNER TO admin; -- -- Name: _metasqltrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _metasqltrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN NEW.metasql_lastuser := getEffectiveXtUser(); NEW.metasql_lastupdate := current_date; RETURN NEW; END; $$; ALTER FUNCTION public._metasqltrigger() OWNER TO admin; -- -- Name: _opheadaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _opheadaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN IF (TG_OP = 'DELETE') THEN DELETE FROM docass WHERE docass_source_id = OLD.ophead_id AND docass_source_type = 'OPP'; DELETE FROM docass WHERE docass_target_id = OLD.ophead_id AND docass_target_type = 'OPP'; END IF; -- Comments IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='OpportunityChangeLog') ) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'OPP', NEW.ophead_id, 'Created'); --- clear the number from the issue cache PERFORM clearNumberIssue('OpportunityNumber', NEW.ophead_number); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.ophead_active <> NEW.ophead_active) THEN IF (NEW.ophead_active) THEN PERFORM postComment(_cmnttypeid, 'OPP', NEW.ophead_id, 'Activated'); ELSE PERFORM postComment(_cmnttypeid, 'OPP', NEW.ophead_id, 'Deactivated'); END IF; END IF; IF (OLD.ophead_name <> NEW.ophead_name) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Name Changed from "' || OLD.ophead_name || '" to "' || NEW.ophead_name || '"' ) ); END IF; IF (OLD.ophead_owner_username <> NEW.ophead_owner_username) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Owner Name Changed from "' || OLD.ophead_owner_username || '" to "' || NEW.ophead_owner_username || '"' ) ); END IF; IF (OLD.ophead_probability_prcnt <> NEW.ophead_probability_prcnt) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Probability % Changed from "' || OLD.ophead_probability_prcnt || '" to "' || NEW.ophead_probability_prcnt || '"' ) ); END IF; IF (OLD.ophead_amount <> NEW.ophead_amount) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Amount Changed from "' || OLD.ophead_amount || '" to "' || NEW.ophead_amount || '"' ) ); END IF; IF (OLD.ophead_target_date <> NEW.ophead_target_date) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Target Date Changed from "' || OLD.ophead_target_date || '" to "' || NEW.ophead_target_date || '"' ) ); END IF; IF (OLD.ophead_actual_date <> NEW.ophead_actual_date) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Actual Date Changed from "' || OLD.ophead_actual_date || '" to "' || NEW.ophead_actual_date || '"' ) ); END IF; IF (OLD.ophead_crmacct_id <> NEW.ophead_crmacct_id) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'CRM Account Changed from "' || (SELECT crmacct_name FROM crmacct WHERE crmacct_id=OLD.ophead_crmacct_id) || '" (' || OLD.ophead_crmacct_id || ') to "' || (SELECT crmacct_name FROM crmacct WHERE crmacct_id=NEW.ophead_crmacct_id) || '" (' || NEW.ophead_crmacct_id || ')' ) ); END IF; IF (OLD.ophead_curr_id <> NEW.ophead_curr_id) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Currency Changed from "' || (SELECT curr_name FROM curr_symbol WHERE curr_id=OLD.ophead_curr_id) || '" (' || OLD.ophead_curr_id || ') to "' || (SELECT curr_name FROM curr_symbol WHERE curr_id=NEW.ophead_curr_id) || '" (' || NEW.ophead_curr_id || ')' ) ); END IF; IF (OLD.ophead_opstage_id <> NEW.ophead_opstage_id) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Stage Changed from "' || (SELECT opstage_name FROM opstage WHERE opstage_id=OLD.ophead_opstage_id) || '" (' || OLD.ophead_opstage_id || ') to "' || (SELECT opstage_name FROM opstage WHERE opstage_id=NEW.ophead_opstage_id) || '" (' || NEW.ophead_opstage_id || ')' ) ); END IF; IF (OLD.ophead_opsource_id <> NEW.ophead_opsource_id) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Source Changed from "' || (SELECT opsource_name FROM opsource WHERE opsource_id=OLD.ophead_opsource_id) || '" (' || OLD.ophead_opsource_id || ') to "' || (SELECT opsource_name FROM opsource WHERE opsource_id=NEW.ophead_opsource_id) || '" (' || NEW.ophead_opsource_id || ')' ) ); END IF; IF (OLD.ophead_optype_id <> NEW.ophead_optype_id) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Type Changed from "' || (SELECT optype_name FROM optype WHERE optype_id=OLD.ophead_optype_id) || '" (' || OLD.ophead_optype_id || ') to "' || (SELECT optype_name FROM optype WHERE optype_id=NEW.ophead_optype_id) || '" (' || NEW.ophead_optype_id || ')' ) ); END IF; END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._opheadaftertrigger() OWNER TO admin; -- -- Name: _opheadbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _opheadbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _rec record; _check boolean; _test text; BEGIN IF(TG_OP = 'DELETE') THEN _rec := OLD; ELSE _rec := NEW; END IF; -- Auto inactivate IF (TG_OP = 'UPDATE') THEN IF ( (NEW.ophead_opstage_id != OLD.ophead_opstage_id) AND (SELECT opstage_opinactive FROM opstage WHERE opstage_id=NEW.ophead_opstage_id) ) THEN NEW.ophead_active := FALSE; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._opheadbeforetrigger() OWNER TO admin; -- -- Name: _packbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _packbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF ((TG_OP = 'INSERT') AND (NEW.pack_head_id) IS NOT NULL)THEN PERFORM postComment(_cmnttypeid, 'S', NEW.pack_head_id, 'Added to Packing List Batch'); END IF; END IF; IF ((TG_OP = 'INSERT') OR (TG_OP = 'UPDATE')) THEN IF (NEW.pack_shiphead_id IS NOT NULL AND NEW.pack_shiphead_id NOT IN (SELECT shiphead_id FROM shiphead WHERE (shiphead_order_id=NEW.pack_head_id) AND (shiphead_order_type=NEW.pack_head_type))) THEN RAISE EXCEPTION 'Shipment does not exist for % id %', NEW.pack_head_type, NEW.pack_head_id; RETURN OLD; END IF; IF (NEW.pack_head_type = 'SO' AND NEW.pack_head_id IN (SELECT cohead_id FROM cohead)) THEN RETURN NEW; ELSEIF (NEW.pack_head_type = 'TO') THEN IF (NOT fetchMetricBool('MultiWhs')) THEN RAISE EXCEPTION 'Transfer Orders are not supported by this version of the application'; ELSEIF (NEW.pack_head_id IN (SELECT tohead_id FROM tohead)) THEN RETURN NEW; END IF; END IF; RAISE EXCEPTION '% with id % does not exist', NEW.pack_head_type, NEW.pack_head_id; RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._packbeforetrigger() OWNER TO admin; -- -- Name: _periodaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _periodaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _idoffirst INTEGER; _test INTEGER; BEGIN -- This trigger can easily cause an infinite loop -- because of this we have to be very careful to not -- do an update on the period table if no updates -- are absolutely needed so we don't just keep -- trigger ourselves again and again -- Figure out which period is the first one SELECT period_id INTO _idoffirst FROM period ORDER BY period_start LIMIT 1; -- If we didn't find anything there is nothing to do IF( NOT FOUND ) THEN RETURN NEW; END IF; -- do a select to see if there is at least one record that needs to be -- updated. If we do not find any then we can just leave without -- causing a retrigger of ourselves SELECT period_id INTO _test FROM period WHERE((COALESCE(period_initial, true) AND (NOT period_id=_idoffirst)) OR ((NOT COALESCE(period_initial, false)) AND (period_id=_idoffirst))) LIMIT 1; -- Nothing to update - get out of here IF( NOT FOUND ) THEN RETURN NEW; END IF; -- Update all the period records that already have the initial flag -- set and the one that we know should be the first. -- We don't have to be as careful here since we have already ruled -- out if don't need to update already. UPDATE period SET period_initial = (_idoffirst=period_id) WHERE((COALESCE(period_initial, true)) OR (period_id=_idoffirst)); RETURN NEW; END; $$; ALTER FUNCTION public._periodaftertrigger() OWNER TO admin; -- -- Name: _pkgcmdaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgcmdaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgcmdaftertrigger() OWNER TO admin; -- -- Name: _pkgcmdaltertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgcmdaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END IF; IF (TG_OP = 'INSERT') THEN RAISE EXCEPTION 'You may not create custom commands in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'UPDATE') THEN RAISE EXCEPTION 'You may not alter custom commands in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'DELETE') THEN RAISE EXCEPTION 'You may not delete custom commands from packages. Try deleting or disabling the package.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgcmdaltertrigger() OWNER TO admin; -- -- Name: _pkgcmdargaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgcmdargaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgcmdargaftertrigger() OWNER TO admin; -- -- Name: _pkgcmdargaltertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgcmdargaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END IF; IF (TG_OP = 'INSERT') THEN RAISE EXCEPTION 'You may not create command arguments in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'UPDATE') THEN RAISE EXCEPTION 'You may not alter command arguments in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'DELETE') THEN RAISE EXCEPTION 'You may not delete command arguments from packages. Try deleting or disabling the package.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgcmdargaltertrigger() OWNER TO admin; -- -- Name: _pkgcmdargbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgcmdargbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmdargid INTEGER; _debug BOOL := false; BEGIN IF (TG_OP = 'UPDATE') THEN RETURN NEW; ELSIF (TG_OP = 'INSERT') THEN RETURN NEW; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgcmdargbeforetrigger() OWNER TO admin; -- -- Name: _pkgcmdbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgcmdbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmdid INTEGER; _debug BOOL := false; BEGIN IF (TG_OP = 'UPDATE') THEN IF (_debug) THEN RAISE NOTICE 'OLD.cmd_name %, NEW.cmd_name %', OLD.cmd_name, NEW.cmd_name; END IF; IF (NEW.cmd_name != OLD.cmd_name) THEN SELECT cmd_id INTO _cmdid FROM cmd WHERE cmd_name=NEW.cmd_name; IF (FOUND) THEN RAISE EXCEPTION 'Cannot change command name % because another command with that name already exists.', NEW.cmd_name; END IF; END IF; ELSIF (TG_OP = 'INSERT') THEN IF (_debug) THEN RAISE NOTICE 'inserting NEW.cmd_name %', NEW.cmd_name; END IF; SELECT cmd_id INTO _cmdid FROM cmd WHERE cmd_name=NEW.cmd_name; IF (FOUND) THEN RAISE EXCEPTION 'Cannot create new command % because another command with that name already exists.', NEW.cmd_name; END IF; ELSIF (TG_OP = 'DELETE') THEN DELETE FROM cmdarg WHERE cmdarg_cmd_id=OLD.cmd_id; RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgcmdbeforetrigger() OWNER TO admin; -- -- Name: _pkgheadbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgheadbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; BEGIN IF (TG_OP = 'UPDATE') THEN NEW.pkghead_created := OLD.pkghead_created; NEW.pkghead_updated := CURRENT_TIMESTAMP; IF (NEW.pkghead_indev AND NOT userCanCreateUsers(getEffectiveXtUser())) THEN NEW.pkghead_indev = FALSE; END IF; ELSIF (TG_OP = 'INSERT') THEN NEW.pkghead_created := CURRENT_TIMESTAMP; NEW.pkghead_updated := NEW.pkghead_created; IF (NEW.pkghead_indev AND NOT userCanCreateUsers(getEffectiveXtUser())) THEN NEW.pkghead_indev = FALSE; END IF; ELSIF (TG_OP = 'DELETE') THEN DELETE FROM pkgdep WHERE pkgdep_pkghead_id=OLD.pkghead_id; EXECUTE 'DROP SCHEMA ' || OLD.pkghead_name || ' CASCADE'; RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgheadbeforetrigger() OWNER TO admin; -- -- Name: _pkgimageaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgimageaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgimageaftertrigger() OWNER TO admin; -- -- Name: _pkgimagealtertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgimagealtertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END IF; IF (TG_OP = 'INSERT') THEN RAISE EXCEPTION 'You may not create images in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'UPDATE') THEN RAISE EXCEPTION 'You may not alter images in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'DELETE') THEN RAISE EXCEPTION 'You may not delete images from packages. Try deleting or disabling the package.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgimagealtertrigger() OWNER TO admin; -- -- Name: _pkgimagebeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgimagebeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _imageid INTEGER; _debug BOOL := false; BEGIN IF (TG_OP = 'UPDATE') THEN IF (_debug) THEN RAISE NOTICE 'OLD.image_name %, NEW.image_name %', OLD.image_name, NEW.image_name; END IF; IF (NEW.image_name != OLD.image_name) THEN SELECT image_id INTO _imageid FROM image WHERE image_name=NEW.image_name; IF (FOUND) THEN RAISE EXCEPTION 'Cannot change image named % because another image with that name already exists.', NEW.image_name; END IF; END IF; ELSIF (TG_OP = 'INSERT') THEN IF (_debug) THEN RAISE NOTICE 'inserting NEW.image_name %', NEW.image_name; END IF; SELECT image_id INTO _imageid FROM image WHERE image_name=NEW.image_name; IF (FOUND) THEN RAISE EXCEPTION 'Cannot create new image % because another image with that name already exists.', NEW.image_name; END IF; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgimagebeforetrigger() OWNER TO admin; -- -- Name: _pkgitembeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgitembeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _functionargs TEXT; _group TEXT; _object TEXT; _schema TEXT; _debug BOOL := false; BEGIN IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN _object = NEW.pkgitem_name; SELECT LOWER(pkghead_name) INTO _schema FROM pkghead WHERE (pkghead_id=NEW.pkgitem_pkghead_id); IF (NOT FOUND) THEN _schema := 'public'; END IF; IF (NEW.pkgitem_type = 'F') THEN _object := SPLIT_PART(_object, '(', 1); ELSIF (NEW.pkgitem_type = 'M') THEN _group := SPLIT_PART(_object, '-', 1); _object := SPLIT_PART(_object, '-', 2); END IF; IF _debug THEN RAISE NOTICE '_schema % and _object %', _schema, _object; END IF; IF (NEW.pkgitem_type = 'C') THEN IF (NOT EXISTS(SELECT script_id FROM script WHERE ((script_id=NEW.pkgitem_item_id) AND (script_name=NEW.pkgitem_name)))) THEN RAISE EXCEPTION 'Cannot create Script % as a Package Item without a corresponding script record.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'D') THEN IF (NOT EXISTS(SELECT cmd_id FROM cmd WHERE ((cmd_id=NEW.pkgitem_item_id) AND (cmd_name=NEW.pkgitem_name)))) THEN RAISE EXCEPTION 'Cannot create Custom Command % as a Package Item without a corresponding cmd record.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'F') THEN IF (NOT EXISTS(SELECT pg_proc.oid FROM pg_proc, pg_namespace WHERE ((pg_proc.oid=NEW.pkgitem_item_id) AND (proname = (_object)) AND (pronamespace=pg_namespace.oid) AND (nspname=_schema)) )) THEN RAISE EXCEPTION 'Cannot create Function % (oid %) as a Package Item without a corresponding function in the database.', NEW.pkgitem_name, NEW.pkgitem_item_id; END IF; ELSIF (NEW.pkgitem_type = 'G') THEN IF (NOT EXISTS(SELECT pg_class.oid FROM pg_trigger, pg_class, pg_namespace WHERE ((tgname=_object) AND (tgrelid=pg_class.oid) AND (relnamespace=pg_namespace.oid) AND (nspname=_schema)))) THEN RAISE EXCEPTION 'Cannot create Trigger % as a Package Item without a corresponding trigger in the database.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'I') THEN IF (NOT EXISTS(SELECT image_id FROM image WHERE ((image_id=NEW.pkgitem_item_id) AND (image_name=NEW.pkgitem_name)))) THEN RAISE EXCEPTION 'Cannot create Image % as a Package Item without a corresponding image record.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'M') THEN IF (NOT EXISTS(SELECT metasql_id FROM metasql WHERE ((metasql_id=NEW.pkgitem_item_id) AND (metasql_group=_group) AND (metasql_name=_object)))) THEN RAISE EXCEPTION 'Cannot create MetaSQL statement % as a Package Item without a corresponding metasql record.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'P') THEN IF (NOT EXISTS(SELECT priv_id FROM priv WHERE ((priv_id=NEW.pkgitem_item_id) AND (priv_name=NEW.pkgitem_name)))) THEN RAISE EXCEPTION 'Cannot create Privilege % as a Package Item without a corresponding priv record.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'R') THEN IF (NOT EXISTS(SELECT report_id FROM report WHERE ((report_id=NEW.pkgitem_item_id) AND (report_name=NEW.pkgitem_name)))) THEN RAISE EXCEPTION 'Cannot create Report % as a Package Item without a corresponding report record.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'S') THEN IF (NOT EXISTS(SELECT oid FROM pg_namespace WHERE (LOWER(nspname)=LOWER(NEW.pkgitem_name)))) THEN RAISE EXCEPTION 'Cannot create Schema % as a Package Item without a corresponding schema in the database.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'T') THEN IF (NOT EXISTS(SELECT pg_class.oid FROM pg_class, pg_namespace WHERE ((relname=_object) AND (relnamespace=pg_namespace.oid) AND (relkind='r') AND (nspname=_schema)))) THEN RAISE EXCEPTION 'Cannot create Table % as a Package Item without a corresponding table in the database.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'U') THEN IF (NOT EXISTS(SELECT uiform_id FROM uiform WHERE ((uiform_id=NEW.pkgitem_item_id) AND (uiform_name=NEW.pkgitem_name)))) THEN RAISE EXCEPTION 'Cannot create User Interface Form % as a Package Item without a corresponding uiform record.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'V') THEN IF (NOT EXISTS(SELECT pg_class.oid FROM pg_class, pg_namespace WHERE ((relname=_object) AND (relnamespace=pg_namespace.oid) AND (relkind='v') AND (nspname=_schema)))) THEN RAISE EXCEPTION 'Cannot create View % as a Package Item without a corresponding view in the database.', NEW.pkgitem_name; END IF; ELSE RAISE EXCEPTION '"%" is not a valid type of package item.', NEW.pkgitem_type; END IF; ELSIF (TG_OP = 'DELETE') THEN IF _debug THEN RAISE NOTICE 'Deleting % % %', OLD.pkgitem_item_id, OLD.pkgitem_name, OLD.pkgitem_type; END IF; _object = OLD.pkgitem_name; SELECT pkghead_name INTO _schema FROM pkghead WHERE (pkghead_id=OLD.pkgitem_pkghead_id); IF (NOT FOUND) THEN _schema := 'public'; END IF; IF (OLD.pkgitem_type = 'F') THEN _object := SPLIT_PART(_object, '(', 1); ELSIF (OLD.pkgitem_type = 'M') THEN _group := SPLIT_PART(_object, '-', 1); _object := SPLIT_PART(_object, '-', 2); END IF; IF _debug THEN RAISE NOTICE '_schema % and _object %', _schema, _object; END IF; IF (OLD.pkgitem_type = 'C') THEN DELETE FROM script WHERE ((script_id=OLD.pkgitem_item_id) AND (script_name=OLD.pkgitem_name)); ELSIF (OLD.pkgitem_type = 'D') THEN DELETE FROM cmd WHERE ((cmd_id=OLD.pkgitem_item_id) AND (cmd_name=OLD.pkgitem_name)); ELSIF (OLD.pkgitem_type = 'F') THEN -- SELECT dropIfExists('FUNCTION', CAST (oid::regprocedure AS TEXT), _schema) PERFORM dropIfExists('FUNCTION', proname || '(' || oidvectortypes(proargtypes) || ')', _schema) FROM pg_proc WHERE (oid=OLD.pkgitem_item_id); ELSIF (OLD.pkgitem_type = 'G') THEN PERFORM dropIfExists('TRIGGER', _object, _schema); ELSIF (OLD.pkgitem_type = 'I') THEN DELETE FROM image WHERE ((image_id=OLD.pkgitem_item_id) AND (image_name=OLD.pkgitem_name)); ELSIF (OLD.pkgitem_type = 'M') THEN DELETE FROM metasql WHERE ((metasql_id=OLD.pkgitem_item_id) AND (metasql_group=_group) AND (metasql_name=_object)); ELSIF (OLD.pkgitem_type = 'P') THEN DELETE FROM priv WHERE ((priv_id=OLD.pkgitem_item_id) AND (priv_name=OLD.pkgitem_name)); ELSIF (OLD.pkgitem_type = 'R') THEN DELETE FROM report WHERE ((report_id=OLD.pkgitem_item_id) AND (report_name=OLD.pkgitem_name)); ELSIF (OLD.pkgitem_type = 'S') THEN PERFORM dropIfExists('SCHEMA', OLD.pkgitem_name, OLD.pkgitem_name); ELSIF (OLD.pkgitem_type = 'T') THEN PERFORM dropIfExists('TABLE', _object, _schema, true); ELSIF (OLD.pkgitem_type = 'U') THEN DELETE FROM uiform WHERE ((uiform_id=OLD.pkgitem_item_id) AND (uiform_name=OLD.pkgitem_name)); ELSIF (OLD.pkgitem_type = 'V') THEN PERFORM dropIfExists('VIEW', _object, _schema, true); ELSE RAISE EXCEPTION '"%" is not a valid type of package item.', OLD.pkgitem_type; END IF; RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgitembeforetrigger() OWNER TO admin; -- -- Name: _pkgmetasqlaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgmetasqlaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgmetasqlaftertrigger() OWNER TO admin; -- -- Name: _pkgmetasqlaltertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgmetasqlaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _isdba BOOLEAN := false; BEGIN SELECT rolsuper INTO _isdba FROM pg_roles WHERE (rolname=getEffectiveXtUser()); IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END IF; -- cannot combine IF's because plpgsql does not always evaluate left-to-right IF (TG_OP = 'INSERT') THEN IF (NEW.metasql_grade <= 0 AND NOT _isdba) THEN RAISE EXCEPTION 'You may not create grade 0 MetaSQL statements in packages except using the xTuple Updater utility'; END IF; ELSIF (TG_OP = 'UPDATE') THEN IF (NEW.metasql_grade <= 0 AND NOT _isdba) THEN RAISE EXCEPTION 'You may not alter grade 0 MetaSQL statements in packages except using the xTuple Updater utility'; END IF; ELSIF (TG_OP = 'DELETE') THEN IF (OLD.metasql_grade <= 0 AND NOT _isdba) THEN RAISE EXCEPTION 'You may not delete grade 0 MetaSQL statements from packages. Try deleting or disabling the package.'; ELSE RETURN OLD; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgmetasqlaltertrigger() OWNER TO admin; -- -- Name: _pkgmetasqlbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgmetasqlbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _metasqlid INTEGER; _isdba BOOLEAN := false; BEGIN SELECT rolsuper INTO _isdba FROM pg_roles WHERE (rolname=getEffectiveXtUser()); IF (NOT (_isdba OR checkPrivilege('MaintainMetaSQL'))) THEN RAISE EXCEPTION '% does not have privileges to maintain MetaSQL statements in %.% (DBA=%)', getEffectiveXtUser(), TG_TABLE_SCHEMA, TG_TABLE_NAME, _isdba; END IF; IF (TG_OP = 'UPDATE') THEN RAISE DEBUG 'update OLD %-%-%, NEW %-%-%', OLD.metasql_group, OLD.metasql_name, OLD.metasql_grade, NEW.metasql_group, NEW.metasql_name, NEW.metasql_grade; IF (NEW.metasql_name != OLD.metasql_name OR NEW.metasql_group != OLD.metasql_group OR NEW.metasql_grade != OLD.metasql_grade) THEN SELECT metasql_id INTO _metasqlid FROM metasql WHERE metasql_name=NEW.metasql_name AND metasql_group=NEW.metasql_group AND metasql_grade=NEW.metasql_grade; IF (FOUND) THEN RAISE EXCEPTION 'Cannot change the MetaSQL statement named %-%-% because another MetaSQL statement with that group, name and grade already exists.', NEW.metasql_group, NEW.metasql_name, NEW.metasql_grade; END IF; END IF; ELSIF (TG_OP = 'INSERT') THEN RAISE DEBUG 'insert NEW %-% %', NEW.metasql_group, NEW.metasql_name, NEW.metasql_grade; SELECT metasql_id INTO _metasqlid FROM metasql WHERE metasql_name=NEW.metasql_name AND metasql_group=NEW.metasql_group AND metasql_grade=NEW.metasql_grade; IF (FOUND) THEN RAISE EXCEPTION 'The new MetaSQL statement %-% % conflicts with an existing statement.', NEW.metasql_group, NEW.metasql_name, NEW.metasql_grade; END IF; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgmetasqlbeforetrigger() OWNER TO admin; -- -- Name: _pkgprivaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgprivaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgprivaftertrigger() OWNER TO admin; -- -- Name: _pkgprivaltertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgprivaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END IF; IF (TG_OP = 'INSERT') THEN RAISE EXCEPTION 'You may not create privileges in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'UPDATE') THEN RAISE EXCEPTION 'You may not alter privileges in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'DELETE') THEN RAISE EXCEPTION 'You may not delete privileges from packages. Try deleting or disabling the package.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgprivaltertrigger() OWNER TO admin; -- -- Name: _pkgprivbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgprivbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _privid INTEGER; _debug BOOL := false; BEGIN IF (TG_OP = 'UPDATE') THEN IF (_debug) THEN RAISE NOTICE 'OLD.priv_name %, NEW.priv_name %', OLD.priv_name, NEW.priv_name; END IF; IF (NEW.priv_name != OLD.priv_name) THEN SELECT priv_id INTO _privid FROM priv WHERE priv_name=NEW.priv_name; IF (FOUND) THEN RAISE EXCEPTION 'Cannot change privilege name % because another privilege with that name already exists.', NEW.priv_name; END IF; END IF; ELSIF (TG_OP = 'INSERT') THEN IF (_debug) THEN RAISE NOTICE 'inserting NEW.priv_name %', NEW.priv_name; END IF; SELECT priv_id INTO _privid FROM priv WHERE priv_name=NEW.priv_name; IF (FOUND) THEN RAISE EXCEPTION 'Cannot create new privilege % because another privilege with that name already exists.', NEW.priv_name; END IF; ELSIF (TG_OP = 'DELETE') THEN IF (_debug) THEN RAISE NOTICE 'deleting pkgpriv_id %', OLD.priv_id; END IF; DELETE FROM usrpriv WHERE usrpriv_priv_id=OLD.priv_id; DELETE FROM grppriv WHERE grppriv_priv_id=OLD.priv_id; RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgprivbeforetrigger() OWNER TO admin; -- -- Name: _pkgreportaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgreportaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgreportaftertrigger() OWNER TO admin; -- -- Name: _pkgreportaltertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgreportaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END IF; IF (TG_OP = 'INSERT') THEN RAISE EXCEPTION 'You may not create report definitions in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'UPDATE') THEN RAISE EXCEPTION 'You may not alter report definitions in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'DELETE') THEN RAISE EXCEPTION 'You may not delete report definitions from packages. Try deleting or disabling the package.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgreportaltertrigger() OWNER TO admin; -- -- Name: _pkgreportbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgreportbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _reportid INTEGER; _debug BOOL := false; BEGIN IF (TG_OP = 'UPDATE') THEN IF (_debug) THEN RAISE NOTICE 'update OLD % %, NEW % %', OLD.report_name, OLD.report_grade, NEW.report_name, NEW.report_grade; END IF; IF (NEW.report_name != OLD.report_name) THEN SELECT report_id INTO _reportid FROM report WHERE ((report_name=NEW.report_name) AND (report_grade=NEW.report_grade)); IF (FOUND) THEN RAISE EXCEPTION 'Cannot change report % % because another report with that name and grade already exists.', NEW.report_name, NEW.report_grade; END IF; END IF; ELSIF (TG_OP = 'INSERT') THEN IF (_debug) THEN RAISE NOTICE 'insert NEW % %', NEW.report_name, NEW.report_grade; END IF; SELECT report_id INTO _reportid FROM report WHERE ((report_name=NEW.report_name) AND (report_grade=NEW.report_grade)); IF (FOUND) THEN RAISE EXCEPTION 'Cannot create new report % % because another report with that name and grade already exists.', NEW.report_name, NEW.report_grade; END IF; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgreportbeforetrigger() OWNER TO admin; -- -- Name: _pkgscriptaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgscriptaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgscriptaftertrigger() OWNER TO admin; -- -- Name: _pkgscriptaltertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgscriptaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END IF; IF (TG_OP = 'INSERT') THEN RAISE EXCEPTION 'You may not create scripts in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'UPDATE') THEN RAISE EXCEPTION 'You may not alter scripts in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'DELETE') THEN RAISE EXCEPTION 'You may not delete scripts from packages. Try deleting or disabling the package.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgscriptaltertrigger() OWNER TO admin; -- -- Name: _pkgscriptbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkgscriptbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _scriptid INTEGER; _debug BOOL := false; BEGIN IF (TG_OP = 'UPDATE') THEN RETURN NEW; ELSIF (TG_OP = 'INSERT') THEN RETURN NEW; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkgscriptbeforetrigger() OWNER TO admin; -- -- Name: _pkguiformaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkguiformaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkguiformaftertrigger() OWNER TO admin; -- -- Name: _pkguiformaltertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkguiformaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END IF; IF (TG_OP = 'INSERT') THEN RAISE EXCEPTION 'You may not create forms in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'UPDATE') THEN RAISE EXCEPTION 'You may not alter forms in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'DELETE') THEN RAISE EXCEPTION 'You may not delete forms from packages. Try deleting or disabling the package.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkguiformaltertrigger() OWNER TO admin; -- -- Name: _pkguiformbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _pkguiformbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _uiformid INTEGER; _debug BOOL := false; BEGIN IF (TG_OP = 'UPDATE') THEN RETURN NEW; ELSIF (TG_OP = 'INSERT') THEN RETURN NEW; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._pkguiformbeforetrigger() OWNER TO admin; -- -- Name: _poheadtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _poheadtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _check BOOLEAN; _maint BOOLEAN := TRUE; BEGIN -- Check if we are doing maintenance IF (TG_OP = 'UPDATE') THEN IF ( (OLD.pohead_status != NEW.pohead_status) OR (OLD.pohead_printed != NEW.pohead_printed) ) THEN _maint := FALSE; END IF; END IF; -- Check IF ( (NOT _maint) AND (NOT checkPrivilege('MaintainPurchaseOrders')) AND (NOT checkPrivilege('PostPurchaseOrders')) AND (NOT checkPrivilege('PrintPurchaseOrders')) AND (NOT checkPrivilege('PostVouchers')) ) THEN RAISE EXCEPTION 'You do not have privileges to alter a Purchase Order.'; END IF; IF ( _maint AND (NOT checkPrivilege('MaintainPurchaseOrders')) ) THEN RAISE EXCEPTION 'You do not have privileges to alter a Purchase Order.'; END IF; IF (TG_OP = 'INSERT') THEN --- clear the number from the issue cache PERFORM clearNumberIssue('PoNumber', NEW.pohead_number); END IF; IF ( (TG_OP = 'INSERT') OR (TG_op = 'UPDATE') ) THEN IF (NOT ISNUMERIC(NEW.pohead_number) AND NEW.pohead_saved) THEN RAISE EXCEPTION 'Purchase Order Number must be numeric.'; END IF; END IF; IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='POChangeLog') ) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'P', NEW.pohead_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.pohead_terms_id <> NEW.pohead_terms_id) THEN PERFORM postComment( _cmnttypeid, 'P', NEW.pohead_id, ('Terms Changed from "' || oldterms.terms_code || '" to "' || newterms.terms_code || '"') ) FROM terms AS oldterms, terms AS newterms WHERE ( (oldterms.terms_id=OLD.pohead_terms_id) AND (newterms.terms_id=NEW.pohead_terms_id) ); END IF; ELSIF (TG_OP = 'DELETE') THEN DELETE FROM docass WHERE docass_source_id = OLD.pohead_id AND docass_source_type = 'P'; DELETE FROM docass WHERE docass_target_id = OLD.pohead_id AND docass_target_type = 'P'; DELETE FROM comment WHERE ( (comment_source='P') AND (comment_source_id=OLD.pohead_id) ); END IF; END IF; END IF; IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END; $$; ALTER FUNCTION public._poheadtrigger() OWNER TO admin; -- -- Name: _poheadtriggerafter(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _poheadtriggerafter() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (COALESCE(NEW.pohead_taxzone_id,-1) <> COALESCE(OLD.pohead_taxzone_id,-1)) THEN UPDATE poitem SET poitem_taxtype_id=getItemTaxType(itemsite_item_id,NEW.pohead_taxzone_id) FROM itemsite WHERE ((itemsite_id=poitem_itemsite_id) AND (poitem_pohead_id=NEW.pohead_id)); END IF; -- Do not update closed poitems IF (TG_OP = 'UPDATE') THEN IF (OLD.pohead_status != NEW.pohead_status) THEN UPDATE poitem SET poitem_status=NEW.pohead_status WHERE ( (poitem_pohead_id=NEW.pohead_id) AND (poitem_status <> 'C') ); END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._poheadtriggerafter() OWNER TO admin; -- -- Name: _poitemtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _poitemtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _status CHAR(1); _check BOOLEAN; _cnt INTEGER; _s RECORD; BEGIN -- Check IF ( (TG_OP = 'UPDATE') AND (NOT checkPrivilege('MaintainPurchaseOrders')) AND (NOT checkPrivilege('ChangePurchaseOrderQty')) AND (NOT checkPrivilege('EnterReceipts')) AND (NOT checkPrivilege('PostVouchers')) ) THEN RAISE EXCEPTION 'You do not have privileges to alter a Purchase Order.'; END IF; IF ( ( (TG_OP = 'INSERT') OR (TG_OP = 'DELETE') ) AND (NOT checkPrivilege('MaintainPurchaseOrders')) ) THEN RAISE EXCEPTION 'You do not have privileges to alter a Purchase Order.'; END IF; IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN SELECT pohead_status INTO _status FROM pohead WHERE (pohead_id=NEW.poitem_pohead_id); IF (NEW.poitem_itemsite_id=-1) THEN NEW.poitem_itemsite_id := NULL; END IF; IF (NEW.poitem_expcat_id=-1) THEN NEW.poitem_expcat_id := NULL; END IF; IF (NEW.poitem_itemsite_id IS NOT NULL AND NEW.poitem_expcat_id IS NOT NULL) THEN RAISE EXCEPTION 'A purchase order line may not include both an inventory and non-inventory item'; ELSIF (NEW.poitem_itemsite_id IS NULL AND NEW.poitem_expcat_id IS NULL) THEN RAISE EXCEPTION 'A purchase order line must specify either an inventory item or a non-inventory expense category'; ELSIF (NEW.poitem_qty_ordered IS NULL) THEN RAISE EXCEPTION 'A purchase order line must specify a quantity'; ELSIF (COALESCE(NEW.poitem_itemsite_id,-1) != -1) THEN SELECT (COUNT(item_id)=1) INTO _check FROM itemsite, item WHERE ((itemsite_id=NEW.poitem_itemsite_id) AND (itemsite_item_id=item_id) AND (item_type IN ('P','O','M','T'))); IF NOT (_check) THEN RAISE EXCEPTION 'The item is not a purchasable item type'; END IF; END IF; END IF; IF (TG_OP = 'INSERT') THEN IF (_status='C') THEN RAISE EXCEPTION 'New lines may not be inserted into a closed purchase order'; END IF; --Fetch and apply default item source data if applicable IF ((NEW.poitem_itemsrc_id IS NULL) AND (NEW.poitem_itemsite_id IS NOT NULL)) THEN IF (NEW.poitem_itemsrc_id IS NULL) THEN SELECT COUNT(itemsrc_id) INTO _cnt FROM pohead,itemsrc,itemsite WHERE ((pohead_id=NEW.poitem_pohead_id) AND (pohead_vend_id=itemsrc_vend_id) AND (itemsite_id=NEW.poitem_itemsite_id) AND (itemsite_item_id=itemsrc_item_id)); IF (_cnt = 1) THEN -- We found the one and only item source, so populate data for it SELECT itemsrc.* INTO _s FROM pohead,itemsrc,itemsite WHERE ((pohead_id=NEW.poitem_pohead_id) AND (pohead_vend_id=itemsrc_vend_id) AND (itemsite_id=NEW.poitem_itemsite_id) AND (itemsite_item_id=itemsrc_item_id)); IF (FOUND) THEN NEW.poitem_itemsrc_id := _s.itemsrc_id; NEW.poitem_vend_uom := _s.itemsrc_vend_uom; NEW.poitem_invvenduomratio := _s.itemsrc_invvendoruomratio; NEW.poitem_duedate := COALESCE(NEW.poitem_duedate, CURRENT_DATE + _s.itemsrc_leadtime); NEW.poitem_vend_item_number := COALESCE(NEW.poitem_vend_item_number,_s.itemsrc_vend_item_number); NEW.poitem_vend_item_descrip := COALESCE(NEW.poitem_vend_item_descrip,_s.itemsrc_vend_item_descrip); NEW.poitem_manuf_name := COALESCE(NEW.poitem_manuf_name,_s.itemsrc_manuf_name); NEW.poitem_manuf_item_number := COALESCE(NEW.poitem_manuf_item_number, _s.itemsrc_manuf_item_number); NEW.poitem_manuf_item_descrip := COALESCE(NEW.poitem_manuf_item_descrip, _s.itemsrc_manuf_item_descrip); END IF; ELSIF (_cnt > 1) THEN -- There are multiple sources, see if there is an exact match with provided vendor info. SELECT itemsrc.* INTO _s FROM pohead,itemsrc,itemsite WHERE ((pohead_id=NEW.poitem_pohead_id) AND (pohead_vend_id=itemsrc_vend_id) AND (itemsite_id=NEW.poitem_itemsite_id) AND (itemsite_item_id=itemsrc_item_id) AND (NEW.poitem_vend_item_number=itemsrc_vend_item_number) AND (COALESCE(NEW.poitem_manuf_name,'')=COALESCE(itemsrc_manuf_name,'')) AND (COALESCE(NEW.poitem_manuf_item_number,'')=COALESCE(itemsrc_manuf_item_number,''))); IF (FOUND) THEN NEW.poitem_itemsrc_id := _s.itemsrc_id; NEW.poitem_vend_uom := _s.itemsrc_vend_uom; NEW.poitem_invvenduomratio := _s.itemsrc_invvendoruomratio; NEW.poitem_duedate := COALESCE(NEW.poitem_duedate, CURRENT_DATE + _s.itemsrc_leadtime); NEW.poitem_vend_item_descrip := COALESCE(NEW.poitem_vend_item_descrip,_s.itemsrc_vend_item_descrip); NEW.poitem_manuf_item_descrip := COALESCE(NEW.poitem_manuf_item_descrip, _s.itemsrc_manuf_item_descrip); END IF; END IF; END IF; END IF; IF (NEW.poitem_duedate IS NULL) THEN RAISE EXCEPTION 'A due date is required'; END IF; --Set defaults NEW.poitem_linenumber := COALESCE(NEW.poitem_linenumber,( SELECT COALESCE(MAX(poitem_linenumber),0) + 1 FROM poitem WHERE (poitem_pohead_id=NEW.poitem_pohead_id))); NEW.poitem_status := _status; NEW.poitem_invvenduomratio := COALESCE(NEW.poitem_invvenduomratio,1); IF (NEW.poitem_invvenduomratio = 0.0) THEN NEW.poitem_invvenduomratio = 1.0; END IF; NEW.poitem_vend_item_number := COALESCE(NEW.poitem_vend_item_number,''); NEW.poitem_vend_item_descrip := COALESCE(NEW.poitem_vend_item_descrip,''); NEW.poitem_unitprice := COALESCE(NEW.poitem_unitprice,( SELECT itemsrcPrice(NEW.poitem_itemsrc_id, COALESCE(itemsite_warehous_id, -1), pohead_dropship, NEW.poitem_qty_ordered, pohead_curr_id, CURRENT_DATE) FROM itemsite, pohead WHERE ( (itemsite_id=NEW.poitem_itemsite_id) AND (pohead_id=NEW.poitem_pohead_id) )), 0.0); NEW.poitem_stdcost := COALESCE(NEW.poitem_stdcost,( SELECT stdcost(itemsite_item_id) FROM itemsite WHERE (itemsite_id=NEW.poitem_itemsite_id))); NEW.poitem_bom_rev_id := COALESCE(NEW.poitem_bom_rev_id,( SELECT getActiveRevId('BOM',itemsite_item_id) FROM itemsite WHERE (itemsite_id=NEW.poitem_itemsite_id))); NEW.poitem_boo_rev_id := COALESCE(NEW.poitem_boo_rev_id,( SELECT getActiveRevId('BOO',itemsite_item_id) FROM itemsite WHERE (itemsite_id=NEW.poitem_itemsite_id))); NEW.poitem_comments := COALESCE(NEW.poitem_comments,''); NEW.poitem_freight := COALESCE(NEW.poitem_freight,0); NEW.poitem_qty_received := 0; NEW.poitem_qty_returned := 0; NEW.poitem_qty_vouchered := 0; -- Insert Event Start INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'P', NEW.poitem_id, itemsite_warehous_id, (pohead_number || '-' || NEW.poitem_linenumber || ': ' || item_number) FROM evntnot, evnttype, itemsite, item, pohead WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (itemsite_id=NEW.poitem_itemsite_id) AND (itemsite_item_id=item_id) AND (NEW.poitem_pohead_id=pohead_id) AND (NEW.poitem_duedate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name='POitemCreate') ); -- Insert Event End END IF; IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='POChangeLog') ) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'P', NEW.poitem_pohead_id, ('Created Line #' || NEW.poitem_linenumber::TEXT)); PERFORM postComment(_cmnttypeid, 'PI', NEW.poitem_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (NEW.poitem_qty_ordered <> OLD.poitem_qty_ordered) THEN PERFORM postComment( _cmnttypeid, 'PI', NEW.poitem_id, ( 'Qty. Ordered Changed from ' || formatQty(OLD.poitem_qty_ordered) || ' to ' || formatQty(NEW.poitem_qty_ordered ) ) ); END IF; IF (NEW.poitem_unitprice <> OLD.poitem_unitprice) THEN PERFORM postComment( _cmnttypeid, 'PI', NEW.poitem_id, ( 'Unit Price Changed from ' || formatPurchPrice(OLD.poitem_unitprice) || ' to ' || formatPurchPrice(NEW.poitem_unitprice ) ) ); END IF; IF (NEW.poitem_duedate <> OLD.poitem_duedate) THEN PERFORM postComment( _cmnttypeid, 'PI', NEW.poitem_id, ( 'Due Date Changed from ' || formatDate(OLD.poitem_duedate) || ' to ' || formatDate(NEW.poitem_duedate ) ) ); END IF; IF (COALESCE(OLD.poitem_taxtype_id, -1) <> COALESCE(NEW.poitem_taxtype_id, -1)) THEN PERFORM postComment( _cmnttypeid, 'PI', NEW.poitem_id, ( 'Tax Type Changed from "' || COALESCE((SELECT taxtype_name FROM taxtype WHERE taxtype_id=OLD.poitem_taxtype_id), 'None') || '" (' || COALESCE(OLD.poitem_taxtype_id, 0) || ') to "' || COALESCE((SELECT taxtype_name FROM taxtype WHERE taxtype_id=NEW.poitem_taxtype_id), 'None') || '" (' || COALESCE(NEW.poitem_taxtype_id, 0) || ')' ) ); END IF; IF (NEW.poitem_status <> OLD.poitem_status) THEN IF (NEW.poitem_status = 'C') THEN PERFORM postComment(_cmnttypeid, 'PI', NEW.poitem_id, 'Closed'); ELSIF (NEW.poitem_status = 'O') THEN PERFORM postComment(_cmnttypeid, 'PI', NEW.poitem_id, 'Opened'); END IF; END IF; ELSIF (TG_OP = 'DELETE') THEN PERFORM postComment(_cmnttypeid, 'P', OLD.poitem_pohead_id, ('Deleted Line #' || OLD.poitem_linenumber::TEXT)); END IF; END IF; END IF; IF (TG_OP = 'DELETE') THEN IF (EXISTS(SELECT recv_id FROM recv WHERE ((recv_order_type='PO') AND (recv_orderitem_id=OLD.poitem_id) AND (recv_qty>0)))) THEN RAISE EXCEPTION 'Cannot delete an P/O Item which has been received'; END IF; DELETE FROM comment WHERE ( (comment_source='PI') AND (comment_source_id=OLD.poitem_id) ); DELETE FROM charass WHERE ((charass_target_type='PI') AND (charass_target_id=OLD.poitem_id)); IF (OLD.poitem_status = 'O') THEN IF ( (SELECT (count(*) < 1) FROM poitem WHERE ((poitem_pohead_id=OLD.poitem_pohead_id) AND (poitem_id != OLD.poitem_id) AND (poitem_status <> 'C')) ) ) THEN UPDATE pohead SET pohead_status = 'C' WHERE ((pohead_id=OLD.poitem_pohead_id) AND (pohead_status='O')); END IF; END IF; RETURN OLD; ELSE IF (TG_OP = 'UPDATE') THEN IF (NEW.poitem_itemsite_id != OLD.poitem_itemsite_id) THEN RAISE EXCEPTION 'You may not change the item site for a line item.'; ELSIF (NEW.poitem_expcat_id != OLD.poitem_expcat_id) THEN RAISE EXCEPTION 'You may not change the expense category for a line item.'; END IF; IF (OLD.poitem_status <> NEW.poitem_status) THEN IF ( (SELECT (count(*) < 1) FROM poitem WHERE ((poitem_pohead_id=NEW.poitem_pohead_id) AND (poitem_id != NEW.poitem_id) AND (poitem_status<>'C')) ) AND (NEW.poitem_status='C') ) THEN UPDATE pohead SET pohead_status = 'C' WHERE ((pohead_id=NEW.poitem_pohead_id) AND (pohead_status='O')); ELSE UPDATE pohead SET pohead_status = 'O' WHERE ((pohead_id=NEW.poitem_pohead_id) AND (pohead_status='C')); END IF; END IF; END IF; RETURN NEW; END IF; END; $$; ALTER FUNCTION public._poitemtrigger() OWNER TO admin; -- -- Name: _prjaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _prjaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (NOT FOUND) THEN RAISE EXCEPTION 'Comment type ChangeLog not found'; END IF; IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'J', NEW.prj_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.prj_start_date <> NEW.prj_start_date) THEN PERFORM postComment( _cmnttypeid, 'J', NEW.prj_id, ('Start Date Changed from ' || formatDate(OLD.prj_start_date) || ' to ' || formatDate(NEW.prj_start_date)) ); END IF; IF (OLD.prj_due_date <> NEW.prj_due_date) THEN PERFORM postComment( _cmnttypeid, 'J', NEW.prj_id, ('Due Date Changed from ' || formatDate(OLD.prj_due_date) || ' to ' || formatDate(NEW.prj_due_date)) ); END IF; IF (OLD.prj_assigned_date <> NEW.prj_assigned_date) THEN PERFORM postComment( _cmnttypeid, 'J', NEW.prj_id, ('Assigned Date Changed from ' || formatDate(OLD.prj_assigned_date) || ' to ' || formatDate(NEW.prj_assigned_date)) ); END IF; IF (OLD.prj_completed_date <> NEW.prj_completed_date) THEN PERFORM postComment( _cmnttypeid, 'J', NEW.prj_id, ('Completed Date Changed from ' || formatDate(OLD.prj_completed_date) || ' to ' || formatDate(NEW.prj_completed_date)) ); END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._prjaftertrigger() OWNER TO admin; -- -- Name: _prjbeforedeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _prjbeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _recurid INTEGER; _newparentid INTEGER; BEGIN IF (TG_OP = 'DELETE') THEN DELETE FROM docass WHERE docass_source_id = OLD.prj_id AND docass_source_type = 'J'; DELETE FROM docass WHERE docass_target_id = OLD.prj_id AND docass_target_type = 'J'; SELECT recur_id INTO _recurid FROM recur WHERE ((recur_parent_id=OLD.prj_id) AND (recur_parent_type='J')); IF (_recurid IS NOT NULL) THEN SELECT MIN(prj_id) INTO _newparentid FROM prj WHERE ((prj_recurring_prj_id=OLD.prj_id) AND (prj_id!=OLD.prj_id)); -- client is responsible for warning about deleting a recurring prj IF (_newparentid IS NULL) THEN DELETE FROM recur WHERE recur_id=_recurid; ELSE UPDATE recur SET recur_parent_id=_newparentid WHERE recur_id=_recurid; END IF; END IF; RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._prjbeforedeletetrigger() OWNER TO admin; -- -- Name: _prjtaskaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _prjtaskaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (NOT FOUND) THEN RAISE EXCEPTION 'Comment type ChangeLog not found'; END IF; IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'TA', NEW.prjtask_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.prjtask_start_date <> NEW.prjtask_start_date) THEN PERFORM postComment( _cmnttypeid, 'TA', NEW.prjtask_id, ('Start Date Changed from ' || formatDate(OLD.prjtask_start_date) || ' to ' || formatDate(NEW.prjtask_start_date)) ); END IF; IF (OLD.prjtask_due_date <> NEW.prjtask_due_date) THEN PERFORM postComment( _cmnttypeid, 'TA', NEW.prjtask_id, ('Due Date Changed from ' || formatDate(OLD.prjtask_due_date) || ' to ' || formatDate(NEW.prjtask_due_date)) ); END IF; IF (OLD.prjtask_assigned_date <> NEW.prjtask_assigned_date) THEN PERFORM postComment( _cmnttypeid, 'TA', NEW.prjtask_id, ('Assigned Date Changed from ' || formatDate(OLD.prjtask_assigned_date) || ' to ' || formatDate(NEW.prjtask_assigned_date)) ); END IF; IF (OLD.prjtask_completed_date <> NEW.prjtask_completed_date) THEN PERFORM postComment( _cmnttypeid, 'TA', NEW.prjtask_id, ('Completed Date Changed from ' || formatDate(OLD.prjtask_completed_date) || ' to ' || formatDate(NEW.prjtask_completed_date)) ); END IF; IF (OLD.prjtask_hours_actual != NEW.prjtask_hours_actual) THEN PERFORM postComment(_cmnttypeid, 'TA', NEW.prjtask_id, 'Actual Hours changed from ' || formatQty(OLD.prjtask_hours_actual) || ' to ' || formatQty(NEW.prjtask_hours_actual)); END IF; IF (OLD.prjtask_exp_actual != NEW.prjtask_exp_actual) THEN PERFORM postComment(_cmnttypeid, 'TA', NEW.prjtask_id, 'Actual Expense changed from ' || formatQty(OLD.prjtask_exp_actual) || ' to ' || formatQty(NEW.prjtask_exp_actual)); END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._prjtaskaftertrigger() OWNER TO admin; -- -- Name: _prjtasktrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _prjtasktrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Checks IF (NEW.prjtask_owner_username=getEffectiveXtUser()) THEN IF (NOT checkPrivilege('MaintainAllProjects') AND NOT checkPrivilege('MaintainPersonalProjects')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Projects.'; END IF; ELSIF (NOT checkPrivilege('MaintainAllProjects')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Projects.'; ELSIF (LENGTH(COALESCE(NEW.prjtask_number,'')) = 0) THEN RAISE EXCEPTION 'You must ender a valid number.'; ELSIF (LENGTH(COALESCE(NEW.prjtask_name,'')) = 0) THEN RAISE EXCEPTION 'You must ender a valid name.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._prjtasktrigger() OWNER TO admin; -- -- Name: _prospectafterdeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _prospectafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF EXISTS(SELECT 1 FROM quhead WHERE quhead_cust_id = OLD.prospect_id) AND NOT EXISTS (SELECT 1 FROM custinfo WHERE cust_id = OLD.prospect_id) THEN RAISE EXCEPTION '[xtuple: deleteProspect, -1]'; END IF; IF (fetchMetricBool('ProspectChangeLog')) THEN PERFORM postComment(cmnttype_id, 'PSPCT', OLD.prospect_id, 'Deleted "' || OLD.prospect_number || '"') FROM cmnttype WHERE (cmnttype_name='ChangeLog'); END IF; RETURN OLD; END; $$; ALTER FUNCTION public._prospectafterdeletetrigger() OWNER TO admin; -- -- Name: _prospectaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _prospectaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _custid INTEGER; _prospectid INTEGER; BEGIN IF (TG_OP = 'INSERT') THEN SELECT crmacct_cust_id, crmacct_prospect_id INTO _custid, _prospectid FROM crmacct WHERE crmacct_number=NEW.prospect_number; IF (_custid > 0 AND _custid != _prospectid) THEN RAISE EXCEPTION '[xtuple: createProspect, -2]'; END IF; IF (_prospectid > 0) THEN RAISE EXCEPTION '[xtuple: createProspect, -3]'; END IF; -- http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-UPSERT-EXAMPLE LOOP UPDATE crmacct SET crmacct_prospect_id=NEW.prospect_id, crmacct_cust_id=NULL, crmacct_name=NEW.prospect_name WHERE crmacct_number=NEW.prospect_number; IF (FOUND) THEN EXIT; END IF; BEGIN INSERT INTO crmacct(crmacct_number, crmacct_name, crmacct_active, crmacct_type, crmacct_prospect_id, crmacct_cntct_id_1 ) VALUES (NEW.prospect_number, NEW.prospect_name, NEW.prospect_active, 'O', NEW.prospect_id, NEW.prospect_cntct_id); EXIT; EXCEPTION WHEN unique_violation THEN -- do nothing, and loop to try the UPDATE again END; END LOOP; /* TODO: default characteristic assignments based on what? */ ELSIF (TG_OP = 'UPDATE') THEN UPDATE crmacct SET crmacct_number = NEW.prospect_number WHERE ((crmacct_prospect_id=NEW.prospect_id) AND (crmacct_number!=NEW.prospect_number)); UPDATE crmacct SET crmacct_name = NEW.prospect_name WHERE ((crmacct_prospect_id=NEW.prospect_id) AND (crmacct_name!=NEW.prospect_name)); END IF; IF (fetchMetricBool('ProspectChangeLog')) THEN SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (_cmnttypeid IS NOT NULL) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'PSPCT', NEW.prospect_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.prospect_active <> NEW.prospect_active) THEN PERFORM postComment(_cmnttypeid, 'PSPCT', NEW.prospect_id, CASE WHEN NEW.prospect_active THEN 'Activated' ELSE 'Deactivated' END); END IF; IF (OLD.prospect_number <> NEW.prospect_number) THEN PERFORM postComment(_cmnttypeid, 'PSPCT', NEW.prospect_id, 'Number changed from "' || OLD.prospect_number || '" to "' || NEW.prospect_number || '"'); END IF; IF (OLD.prospect_name <> NEW.prospect_name) THEN PERFORM postComment(_cmnttypeid, 'PSPCT', NEW.prospect_id, 'Name changed from "' || OLD.prospect_name || '" to "' || NEW.prospect_name || '"'); END IF; IF (OLD.prospect_cntct_id <> NEW.prospect_cntct_id) THEN PERFORM postComment(_cmnttypeid, 'PSPCT', NEW.prospect_id, 'Contact changed from "' || formatCntctName(OLD.prospect_cntct_id) || '" to "' || formatCntctName(NEW.prospect_cntct_id) || '"'); END IF; IF (OLD.prospect_taxauth_id <> NEW.prospect_taxauth_id) THEN PERFORM postComment(_cmnttypeid, 'PSPCT', NEW.prospect_id, 'Tax Authority changed from "' || (SELECT taxauth_code FROM taxauth WHERE taxauth_id=OLD.prospect_taxauth_id) || '" to "' || (SELECT taxauth_code FROM taxauth WHERE taxauth_id=NEW.prospect_taxauth_id) || '"'); END IF; IF (OLD.prospect_salesrep_id <> NEW.prospect_salesrep_id) THEN PERFORM postComment(_cmnttypeid, 'PSPCT', NEW.prospect_id, 'Sales Rep changed from "' || (SELECT salesrep_number FROM salesrep WHERE salesrep_id=OLD.prospect_salesrep_id) || '" to "' || (SELECT salesrep_number FROM salesrep WHERE salesrep_id=NEW.prospect_salesrep_id) || '"'); END IF; IF (OLD.prospect_warehous_id <> NEW.prospect_warehous_id) THEN PERFORM postComment(_cmnttypeid, 'PSPCT', NEW.prospect_id, 'Warehouse changed from "' || (SELECT warehous_code FROM whsinfo WHERE warehous_id=OLD.prospect_warehous_id) || '" to "' || (SELECT warehous_code FROM whsinfo WHERE warehous_id=NEW.prospect_warehous_id) || '"'); END IF; IF (OLD.prospect_taxzone_id <> NEW.prospect_taxzone_id) THEN PERFORM postComment(_cmnttypeid, 'PSPCT', NEW.prospect_id, 'Tax Zone changed from "' || (SELECT taxzone_code FROM taxzone WHERE taxzone_id=OLD.prospect_taxzone_id) || '" to "' || (SELECT taxzone_code FROM taxzone WHERE taxzone_id=NEW.prospect_taxzone_id) || '"'); END IF; END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._prospectaftertrigger() OWNER TO admin; -- -- Name: _prospectbeforedeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _prospectbeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NOT checkPrivilege('MaintainProspectMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Prospects.'; END IF; UPDATE crmacct SET crmacct_prospect_id = NULL WHERE crmacct_prospect_id = OLD.prospect_id; RETURN OLD; END; $$; ALTER FUNCTION public._prospectbeforedeletetrigger() OWNER TO admin; -- -- Name: _prospecttrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _prospecttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NOT checkPrivilege('MaintainProspectMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Prospects.'; END IF; IF (NEW.prospect_number IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Prospect Number.'; END IF; NEW.prospect_number := UPPER(NEW.prospect_number); RETURN NEW; END; $$; ALTER FUNCTION public._prospecttrigger() OWNER TO admin; -- -- Name: _prtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _prtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/EULA for the full text of the software license. BEGIN --- clear the number from the issue cache PERFORM clearNumberIssue('PrNumber', NEW.pr_number); RETURN NEW; END; $$; ALTER FUNCTION public._prtrigger() OWNER TO admin; -- -- Name: _quheadtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _quheadtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _oldHoldType TEXT; _newHoldType TEXT; _p RECORD; _a RECORD; _w RECORD; _shiptoId INTEGER; _addrId INTEGER; _prjId INTEGER; _check BOOLEAN; _numGen CHAR(1); BEGIN -- Checks SELECT checkPrivilege('MaintainQuotes') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to maintain Quotes.'; END IF; -- If this is imported, check the quote number IF (TG_OP = 'INSERT') THEN IF (NEW.quhead_imported) THEN SELECT fetchMetricText('QUNumberGeneration') INTO _numGen; IF ((NEW.quhead_number IS NULL) AND (_numGen='M')) THEN RAISE EXCEPTION 'You must supply a Quote Number.'; ELSE IF ((NEW.quhead_number IS NOT NULL) AND (_numGen='A')) THEN RAISE EXCEPTION 'You may not supply a new Quote Number xTuple will generate the number.'; ELSE IF ((NEW.quhead_number IS NULL) AND (_numGen='O')) THEN SELECT fetchqunumber() INTO NEW.quhead_number; ELSE IF (NEW.quhead_number IS NULL) THEN SELECT fetchsonumber() INTO NEW.quhead_number; END IF; END IF; END IF; END IF; END IF; IF (fetchMetricText('QUNumberGeneration') IN ('A','O')) THEN --- clear the number from the issue cache PERFORM clearNumberIssue('QuNumber', NEW.quhead_number); ELSIF (fetchMetricText('QUNumberGeneration') = 'S') THEN --- clear the number from the issue cache PERFORM clearNumberIssue('SoNumber', NEW.quhead_number); END IF; ELSE IF (TG_OP = 'UPDATE') THEN IF (NEW.quhead_number <> OLD.quhead_number) THEN RAISE EXCEPTION 'The order number may not be changed.'; END IF; END IF; END IF; IF (TG_OP IN ('INSERT','UPDATE')) THEN -- Get Customer data IF (NEW.quhead_shipto_id IS NULL) THEN SELECT * INTO _p FROM ( SELECT cust_number,cust_usespos,cust_blanketpos,cust_ffbillto, cust_ffshipto,cust_name,cust_salesrep_id,cust_terms_id,cust_shipvia, cust_commprcnt,cust_curr_id,cust_taxzone_id, addr_line1,addr_line2,addr_line3,addr_city,addr_state,addr_postalcode,addr_country, shipto_id,shipto_addr_id,shipto_name,shipto_salesrep_id,shipto_shipvia, shipto_shipchrg_id,shipto_shipform_id,shipto_commission,shipto_taxzone_id FROM custinfo LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) LEFT OUTER JOIN shiptoinfo ON ((cust_id=shipto_cust_id) AND shipto_default) WHERE (cust_id=NEW.quhead_cust_id) UNION SELECT prospect_number,false,false,true, true,prospect_name,prospect_salesrep_id,null,null, null,null,prospect_taxzone_id, addr_line1,addr_line2,addr_line3,addr_city,addr_state,addr_postalcode,addr_country, null,null,null,null,null, null,null,null,null FROM prospect LEFT OUTER JOIN cntct ON (prospect_cntct_id=cntct_id) LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) WHERE (prospect_id=NEW.quhead_cust_id)) AS data; ELSE SELECT cust_creditstatus,cust_number,cust_usespos,cust_blanketpos,cust_ffbillto, cust_ffshipto,cust_name,cust_salesrep_id,cust_terms_id,cust_shipvia, cust_shipchrg_id,cust_shipform_id,cust_commprcnt,cust_curr_id,cust_taxzone_id, addr_line1,addr_line2,addr_line3,addr_city,addr_state,addr_postalcode,addr_country, shipto_id,shipto_addr_id,shipto_name,shipto_salesrep_id,shipto_shipvia, shipto_shipchrg_id,shipto_shipform_id,shipto_commission,shipto_taxzone_id INTO _p FROM shiptoinfo,custinfo LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) WHERE ((cust_id=NEW.quhead_cust_id) AND (shipto_id=shipto_id)); END IF; -- If there is customer data, then we can get to work IF (FOUND) THEN -- Only check PO number for imports because UI checks when whole quote is saved IF (TG_OP = 'INSERT') THEN -- Set to defaults if values not provided NEW.quhead_shipto_id := COALESCE(NEW.quhead_shipto_id,_p.shipto_id); NEW.quhead_salesrep_id := COALESCE(NEW.quhead_salesrep_id,_p.shipto_salesrep_id,_p.cust_salesrep_id); NEW.quhead_terms_id := COALESCE(NEW.quhead_terms_id,_p.cust_terms_id); NEW.quhead_shipvia := COALESCE(NEW.quhead_shipvia,_p.shipto_shipvia,_p.cust_shipvia); NEW.quhead_commission := COALESCE(NEW.quhead_commission,_p.shipto_commission,_p.cust_commprcnt); NEW.quhead_quotedate := COALESCE(NEW.quhead_quotedate,current_date); NEW.quhead_packdate := COALESCE(NEW.quhead_packdate,NEW.quhead_quotedate); NEW.quhead_curr_id := COALESCE(NEW.quhead_curr_id,_p.cust_curr_id,basecurrid()); NEW.quhead_taxzone_id := COALESCE(NEW.quhead_taxzone_id,_p.shipto_taxzone_id,_p.cust_taxzone_id); NEW.quhead_freight := COALESCE(NEW.quhead_freight,0); NEW.quhead_custponumber := COALESCE(NEW.quhead_custponumber,''); NEW.quhead_ordercomments := COALESCE(NEW.quhead_ordercomments,''); NEW.quhead_shipcomments := COALESCE(NEW.quhead_shipcomments,''); NEW.quhead_shiptophone := COALESCE(NEW.quhead_shiptophone,''); NEW.quhead_misc := COALESCE(NEW.quhead_misc,0); NEW.quhead_misc_descrip := COALESCE(NEW.quhead_misc_descrip,''); IF ((NEW.quhead_warehous_id IS NULL) OR (NEW.quhead_fob IS NULL)) THEN IF (NEW.quhead_warehous_id IS NULL) THEN SELECT warehous_id,warehous_fob INTO _w FROM usrpref, whsinfo WHERE ((warehous_id=CAST(usrpref_value AS INTEGER)) AND (warehous_shipping) AND (warehous_active) AND (usrpref_username=getEffectiveXtUser()) AND (usrpref_name='PreferredWarehouse')); ELSE SELECT warehous_id,warehous_fob INTO _w FROM whsinfo WHERE (warehous_id=NEW.quhead_warehous_id); END IF; IF (FOUND) THEN NEW.quhead_warehous_id := COALESCE(NEW.quhead_warehous_id,_w.warehous_id); NEW.quhead_fob := COALESCE(NEW.quhead_fob,_w.warehous_fob); END IF; END IF; END IF; --Auto create project if applicable IF ((TG_OP = 'INSERT') AND (NEW.quhead_prj_id=-1)) THEN SELECT fetchMetricBool('AutoCreateProjectsForOrders') INTO _check; IF (_check) THEN SELECT NEXTVAL('prj_prj_id_seq') INTO _prjId; NEW.quhead_prj_id := _prjId; INSERT INTO prj (prj_id, prj_number, prj_name, prj_descrip, prj_so, prj_wo, prj_po) VALUES(_prjId, NEW.quhead_number, NEW.quhead_number, 'Auto Generated Project from Quote.', TRUE, TRUE, TRUE); END IF; END IF; -- Deal with Billing Address IF (TG_OP = 'INSERT') THEN IF (_p.cust_ffbillto) THEN -- If they didn't supply data, we'll put in the bill to address NEW.quhead_billtoname=COALESCE(NEW.quhead_billtoname,_p.cust_name,''); NEW.quhead_billtoaddress1=COALESCE(NEW.quhead_billtoaddress1,_p.addr_line1,''); NEW.quhead_billtoaddress2=COALESCE(NEW.quhead_billtoaddress2,_p.addr_line2,''); NEW.quhead_billtoaddress3=COALESCE(NEW.quhead_billtoaddress3,_p.addr_line3,''); NEW.quhead_billtocity=COALESCE(NEW.quhead_billtocity,_p.addr_city,''); NEW.quhead_billtostate=COALESCE(NEW.quhead_billtostate,_p.addr_state,''); NEW.quhead_billtozip=COALESCE(NEW.quhead_billtozip,_p.addr_postalcode,''); NEW.quhead_billtocountry=COALESCE(NEW.quhead_billtocountry,_p.addr_country,''); ELSE -- Free form not allowed, we're going to put in the address regardless NEW.quhead_billtoname=COALESCE(_p.cust_name,''); NEW.quhead_billtoaddress1=COALESCE(_p.addr_line1,''); NEW.quhead_billtoaddress2=COALESCE(_p.addr_line2,''); NEW.quhead_billtoaddress3=COALESCE(_p.addr_line3,''); NEW.quhead_billtocity=COALESCE(_p.addr_city,''); NEW.quhead_billtostate=COALESCE(_p.addr_state,''); NEW.quhead_billtozip=COALESCE(_p.addr_postalcode,''); NEW.quhead_billtocountry=COALESCE(_p.addr_country,''); END IF; END IF; -- Now let's look at Shipto Address -- If there's nothing in the address fields and there is a shipto id -- or there is a default address available, let's put in some shipto address data IF ((TG_OP = 'INSERT') AND NOT ((NEW.quhead_shipto_id IS NULL) AND NOT _p.cust_ffshipto) AND (NEW.quhead_shiptoname IS NULL) AND (NEW.quhead_shiptoaddress1 IS NULL) AND (NEW.quhead_shiptoaddress2 IS NULL) AND (NEW.quhead_shiptoaddress3 IS NULL) AND (NEW.quhead_shiptocity IS NULL) AND (NEW.quhead_shiptostate IS NULL) AND (NEW.quhead_shiptocountry IS NULL)) THEN IF ((NEW.quhead_shipto_id IS NULL) AND (_p.shipto_id IS NOT NULL)) THEN _shiptoId := _p.shipto_addr_id; ELSE _shiptoId := NEW.quhead_shipto_id; END IF; SELECT * INTO _a FROM shiptoinfo, addr WHERE ((shipto_id=_shiptoId) AND (addr_id=shipto_addr_id)); NEW.quhead_shiptoname := COALESCE(_p.shipto_name,''); NEW.quhead_shiptoaddress1 := COALESCE(_a.addr_line1,''); NEW.quhead_shiptoaddress2 := COALESCE(_a.addr_line2,''); NEW.quhead_shiptoaddress3 := COALESCE(_a.addr_line3,''); NEW.quhead_shiptocity := COALESCE(_a.addr_city,''); NEW.quhead_shiptostate := COALESCE(_a.addr_state,''); NEW.quhead_shiptozipcode := COALESCE(_a.addr_postalcode,''); NEW.quhead_shiptocountry := COALESCE(_a.addr_country,''); ELSE IF (_p.cust_ffshipto) THEN -- Use Address Save function to see if the new address entered matches -- data for the shipto number. If not that will insert new address for CRM SELECT SaveAddr( NULL, NULL, NEW.quhead_shiptoaddress1, NEW.quhead_shiptoaddress2, NEW.quhead_shiptoaddress3, NEW.quhead_shiptocity, NEW.quhead_shiptostate, NEW.quhead_shiptozipcode, NEW.quhead_shiptocountry, 'CHANGEONE') INTO _addrId; SELECT shipto_addr_id INTO _shiptoid FROM shiptoinfo WHERE (shipto_id=NEW.quhead_shipto_id); -- If the address passed doesn't match shipto address, then it's something else IF (_shiptoid <> _addrId) THEN NEW.quhead_shipto_id := NULL; END IF; ELSE SELECT quhead_shipto_id INTO _shiptoid FROM quhead WHERE (quhead_id=NEW.quhead_id); -- Get the shipto address IF (COALESCE(NEW.quhead_shipto_id,-1) <> COALESCE(_shiptoid,-1)) THEN SELECT * INTO _a FROM shiptoinfo LEFT OUTER JOIN cntct ON (shipto_cntct_id=cntct_id) LEFT OUTER JOIN addr ON (shipto_addr_id=addr_id) WHERE (shipto_id=NEW.quhead_shipto_id); IF (FOUND) THEN -- Free form not allowed so we're going to make sure address matches Shipto data NEW.quhead_shiptoname := COALESCE(_a.shipto_name,''); NEW.quhead_shiptophone := COALESCE(_a.cntct_phone,''); NEW.quhead_shiptoaddress1 := COALESCE(_a.addr_line1,''); NEW.quhead_shiptoaddress2 := COALESCE(_a.addr_line2,''); NEW.quhead_shiptoaddress3 := COALESCE(_a.addr_line3,''); NEW.quhead_shiptocity := COALESCE(_a.addr_city,''); NEW.quhead_shiptostate := COALESCE(_a.addr_state,''); NEW.quhead_shiptozipcode := COALESCE(_a.addr_postalcode,''); NEW.quhead_shiptocountry := COALESCE(_a.addr_country,''); ELSE -- If no shipto data and free form not allowed, this won't work RAISE EXCEPTION 'Free form Shipto is not allowed on this Customer. You must supply a valid Shipto ID.'; END IF; END IF; END IF; END IF; END IF; END IF; IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='SalesOrderChangeLog') ) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'Q', NEW.quhead_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.quhead_terms_id <> NEW.quhead_terms_id) THEN PERFORM postComment( _cmnttypeid, 'Q', NEW.quhead_id, ('Terms Changed from "' || oldterms.terms_code || '" to "' || newterms.terms_code || '"') ) FROM terms AS oldterms, terms AS newterms WHERE ( (oldterms.terms_id=OLD.quhead_terms_id) AND (newterms.terms_id=NEW.quhead_terms_id) ); END IF; ELSIF (TG_OP = 'DELETE') THEN DELETE FROM comment WHERE ( (comment_source='Q') AND (comment_source_id=OLD.quhead_id) ); END IF; END IF; END IF; IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END; $$; ALTER FUNCTION public._quheadtrigger() OWNER TO admin; -- -- Name: _quitemaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _quitemaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check NUMERIC; BEGIN --If auto calculate freight, recalculate quhead_freight IF (SELECT quhead_calcfreight FROM quhead WHERE (quhead_id=NEW.quitem_quhead_id)) THEN UPDATE quhead SET quhead_freight = (SELECT SUM(freightdata_total) FROM freightDetail('QU', quhead_id, quhead_cust_id, quhead_shipto_id, quhead_quotedate, quhead_shipvia, quhead_curr_id)) WHERE quhead_id=NEW.quitem_quhead_id; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._quitemaftertrigger() OWNER TO admin; -- -- Name: _quitembeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _quitembeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check NUMERIC; _itemNumber TEXT; BEGIN -- Check IF (NEW.quitem_scheddate IS NULL) THEN RAISE EXCEPTION 'A schedule date is required.'; END IF; -- If this is imported, go ahead and insert default characteristics IF ((TG_OP = 'INSERT') AND NEW.quitem_imported) THEN PERFORM updateCharAssignment('SI', NEW.quitem_id, char_id, charass_value) FROM ( SELECT DISTINCT char_id, char_name, charass_value FROM charass, char, itemsite, item WHERE ((itemsite_id=NEW.quitem_itemsite_id) AND (itemsite_item_id=item_id) AND (charass_target_type='I') AND (charass_target_id=item_id) AND (charass_default) AND (char_id=charass_char_id)) ORDER BY char_name) AS data; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._quitembeforetrigger() OWNER TO admin; -- -- Name: _quitemtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _quitemtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _check BOOLEAN; BEGIN -- Checks SELECT checkPrivilege('MaintainQuotes') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to maintain Quotes.'; END IF; IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='SalesOrderChangeLog') ) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); ELSE _cmnttypeid := -1; END IF; IF (TG_OP = 'INSERT') THEN IF (_cmnttypeid <> -1) THEN PERFORM postComment(_cmnttypeid, 'QI', NEW.quitem_id, 'Created'); END IF; RETURN NEW; ELSE IF (TG_OP = 'DELETE') THEN DELETE FROM comment WHERE ( (comment_source='QI') AND (comment_source_id=OLD.quitem_id) ); DELETE FROM charass WHERE ((charass_target_type='QI') AND (charass_target_id=OLD.quitem_id)); RETURN OLD; ELSE IF (TG_OP = 'UPDATE') THEN IF (NEW.quitem_qtyord <> OLD.quitem_qtyord) THEN IF (_cmnttypeid <> -1) THEN PERFORM postComment( _cmnttypeid, 'QI', NEW.quitem_id, ( 'Changed Qty. Ordered from ' || formatQty(OLD.quitem_qtyord) || ' to ' || formatQty(NEW.quitem_qtyord) ) ); END IF; END IF; IF (NEW.quitem_scheddate <> OLD.quitem_scheddate) THEN IF (_cmnttypeid <> -1) THEN PERFORM postComment( _cmnttypeid, 'QI', NEW.quitem_id, ( 'Changed Sched. Date from ' || formatDate(OLD.quitem_scheddate) || ' to ' || formatDate(NEW.quitem_scheddate)) ); END IF; END IF; END IF; END IF; END IF; -- NEW.quitem_lastupdated = CURRENT_TIMESTAMP; RETURN NEW; END; $$; ALTER FUNCTION public._quitemtrigger() OWNER TO admin; -- -- Name: _recuraftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _recuraftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _parentid INTEGER; _parenttype TEXT; BEGIN IF (TG_OP = 'DELETE') THEN IF (UPPER(OLD.recur_parent_type) = 'TODO') THEN UPDATE todoitem SET todoitem_recurring_todoitem_id=NULL WHERE (todoitem_recurring_todoitem_id=OLD.recur_parent_id); END IF; RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._recuraftertrigger() OWNER TO admin; -- -- Name: _reporttrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _reporttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN NEW.report_loaddate = CURRENT_TIMESTAMP; RETURN NEW; END; $$; ALTER FUNCTION public._reporttrigger() OWNER TO admin; -- -- Name: _salesrepafterdeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _salesrepafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN IF (SELECT fetchMetricValue('DefaultSalesRep') = OLD.salesrep_id) THEN RAISE EXCEPTION 'Cannot delete the default Sales Rep [xtuple: salesrep, -1, %]', OLD.salesrep_number; END IF; PERFORM postComment('ChangeLog', 'SR', OLD.salesrep_id, 'Deleted "' || OLD.salesrep_number || '"'); RETURN OLD; END; $$; ALTER FUNCTION public._salesrepafterdeletetrigger() OWNER TO admin; -- -- Name: _salesrepaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _salesrepaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN IF (TG_OP = 'INSERT') THEN -- http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-UPSERT-EXAMPLE LOOP UPDATE crmacct SET crmacct_salesrep_id=NEW.salesrep_id, crmacct_name=NEW.salesrep_name WHERE crmacct_number=NEW.salesrep_number; IF (FOUND) THEN EXIT; END IF; BEGIN INSERT INTO crmacct(crmacct_number, crmacct_name, crmacct_active, crmacct_type, crmacct_salesrep_id ) VALUES (NEW.salesrep_number, NEW.salesrep_name, NEW.salesrep_active, 'I', NEW.salesrep_id); EXIT; EXCEPTION WHEN unique_violation THEN -- do nothing, and loop to try the UPDATE again END; END LOOP; -- TODO: default characteristic assignments? ELSIF (TG_OP = 'UPDATE') THEN UPDATE crmacct SET crmacct_number = NEW.salesrep_number WHERE ((crmacct_salesrep_id=NEW.salesrep_id) AND (crmacct_number!=NEW.salesrep_number)); UPDATE crmacct SET crmacct_name = NEW.salesrep_name WHERE ((crmacct_salesrep_id=NEW.salesrep_id) AND (crmacct_name!=NEW.salesrep_name)); END IF; IF (fetchMetricBool('SalesRepChangeLog')) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment('ChangeLog', 'SR', NEW.salesrep_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.salesrep_active <> NEW.salesrep_active) THEN PERFORM postComment('ChangeLog', 'SR', NEW.salesrep_id, CASE WHEN NEW.salesrep_active THEN 'Activated' ELSE 'Deactivated' END); END IF; IF (OLD.salesrep_number <> NEW.salesrep_number) THEN PERFORM postComment('ChangeLog', 'SR', NEW.salesrep_id, 'Number changed from "' || OLD.salesrep_number || '" to "' || NEW.salesrep_number || '"'); END IF; IF (OLD.salesrep_name <> NEW.salesrep_name) THEN PERFORM postComment('ChangeLog', 'SR', NEW.salesrep_id, 'Name changed from "' || OLD.salesrep_name || '" to "' || NEW.salesrep_name || '"'); END IF; IF (OLD.salesrep_commission <> NEW.salesrep_commission) THEN PERFORM postComment('ChangeLog', 'SR', NEW.salesrep_id, 'Commission changed from "' || OLD.salesrep_commission || '" to "' || NEW.salesrep_commission || '"'); END IF; IF (OLD.salesrep_method <> NEW.salesrep_method) THEN PERFORM postComment('ChangeLog', 'SR', NEW.salesrep_id, 'Method changed from "' || OLD.salesrep_method || '" to "' || NEW.salesrep_method || '"'); END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._salesrepaftertrigger() OWNER TO admin; -- -- Name: _salesrepbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _salesrepbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF NOT (checkPrivilege('MaintainSalesReps')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Sales Reps.'; END IF; IF (TG_OP IN ('INSERT', 'UPDATE')) THEN IF (NEW.salesrep_number IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Sales Rep Number.'; END IF; IF (NEW.salesrep_commission IS NULL) THEN RAISE EXCEPTION 'You must supply a Commission Rate for this Sales Rep.'; END IF; IF (TG_OP = 'INSERT' AND fetchMetricText('CRMAccountNumberGeneration') IN ('A','O') AND isNumeric(NEW.salesrep_number)) THEN --- clear the number from the issue cache PERFORM clearNumberIssue('CRMAccountNumber', NEW.salesrep_number); END IF; NEW.salesrep_number = UPPER(NEW.salesrep_number); -- deprecated column salesrep_emp_id -- TODO: will this prevent breaking the crmacct-emp relationship? IF (TG_OP = 'UPDATE') THEN SELECT crmacct_emp_id INTO NEW.salesrep_emp_id FROM crmacct WHERE crmacct_salesrep_id = NEW.salesrep_id; END IF; ELSIF (TG_OP = 'DELETE') THEN UPDATE crmacct SET crmacct_salesrep_id = NULL WHERE crmacct_salesrep_id = OLD.salesrep_id; RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._salesrepbeforetrigger() OWNER TO admin; -- -- Name: _saletypebeforedeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _saletypebeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check TEXT; BEGIN -- Check to see if any sales orders are assigned to the passed saletype SELECT cohead_number INTO _check FROM cohead WHERE (cohead_saletype_id=OLD.saletype_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Assigned to Sales Order % and possibly more. [xtuple: deletesaletype, -1]', _check; END IF; -- Check to see if any quotes are assigned to the passed saletype SELECT quhead_number INTO _check FROM quhead WHERE (quhead_saletype_id=OLD.saletype_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Assigned to Quote % and possibly more. [xtuple: deletesaletype, -2]', _check; END IF; -- Check to see if any invoice are assigned to the passed saletype SELECT invchead_invcnumber INTO _check FROM invchead WHERE (invchead_saletype_id=OLD.saletype_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Assigned to Invoice % and possibly more. [xtuple: deletesaletype, -3]', _check; END IF; -- Check to see if any credit memos are assigned to the passed saletype SELECT cmhead_number INTO _check FROM cmhead WHERE (cmhead_saletype_id=OLD.saletype_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Assigned to Credit Memo % and possibly more. [xtuple: deletesaletype, -4]', _check; END IF; -- Check to see if any return ruthorizations are assigned to the passed saletype IF (fetchMetricBool('EnableReturnAuth')) THEN SELECT rahead_number INTO _check FROM rahead WHERE (rahead_saletype_id=OLD.saletype_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Assigned to Return Authorization % and possibly more returns. [xtuple: deleteSaleType, -5]', _check; END IF; END IF; RETURN OLD; END; $$; ALTER FUNCTION public._saletypebeforedeletetrigger() OWNER TO admin; -- -- Name: _shipdatasumtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _shipdatasumtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (LENGTH(TRIM(NEW.shipdatasum_shiphead_number)) = 0) THEN NEW.shipdatasum_shiphead_number = NULL; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._shipdatasumtrigger() OWNER TO admin; -- -- Name: _shipdatatrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _shipdatatrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _newShipdata_cohead_number INTEGER; _shipdatasum_shipper TEXT; _rows INTEGER; _cohead_id INTEGER; _shiphead_number TEXT; _headcount INTEGER; BEGIN -- This is where the shipper is identified and may need to be changed NEW.shipdata_cohead_number := TRIM(NEW.shipdata_cohead_number); IF (substring(NEW.shipdata_cosmisc_tracknum from 1 for 2) = '1Z') THEN _shipdatasum_shipper := 'UPS'; ELSE _shipdatasum_shipper := 'UNKNOWN'; END IF; IF (LENGTH(TRIM(NEW.shipdata_shiphead_number)) = 0) THEN NEW.shipdata_shiphead_number := NULL; END IF; IF (NEW.shipdata_cosmisc_tracknum = NEW.shipdata_cosmisc_packnum_tracknum) THEN IF (NEW.shipdata_void_ind = 'Y') THEN -- Delete the current shipdatasum DELETE FROM shipdatasum WHERE ((shipdatasum_cohead_number = NEW.shipdata_cohead_number) AND (shipdatasum_cosmisc_tracknum = NEW.shipdata_cosmisc_tracknum)); ELSIF (TG_OP = 'INSERT') THEN -- RAISE NOTICE 'Getting cohead_id (%)', NEW.shipdata_cohead_number; IF (NEW.shipdata_shiphead_number IS NULL) THEN SELECT cohead_id INTO _cohead_id FROM cohead WHERE cohead_number = NEW.shipdata_cohead_number; IF (FOUND) THEN -- RAISE NOTICE 'Getting shiphead number (%)', _cohead_id; SELECT count(shiphead_order_id), MAX(shiphead_number) INTO _headcount, _shiphead_number FROM shiphead WHERE ((shiphead_tracknum IS NULL OR shiphead_tracknum = '') AND ( shiphead_order_type = 'SO' and shiphead_order_id = _cohead_id) ); IF (_headcount = 1) THEN -- RAISE NOTICE 'Updating Shiphead Number (%)', _shiphead_number; NEW.shipdata_shiphead_number = _shiphead_number; ELSIF (_headcount > 1) THEN -- Trap for potential workflow problem. Can only infer shiphead from sales order number -- if shipping one at a time RAISE EXCEPTION 'Multiple shipments exist for this order. Please provide a specific a shipment number.'; END IF; END IF; END IF; INSERT INTO shipdatasum (shipdatasum_cohead_number, shipdatasum_cosmisc_tracknum, shipdatasum_cosmisc_packnum_tracknum, shipdatasum_weight, shipdatasum_base_freight, shipdatasum_total_freight, shipdatasum_base_freight_curr_id, shipdatasum_total_freight_curr_id, shipdatasum_shipper, shipdatasum_billing_option, shipdatasum_package_type, shipdatasum_shiphead_number) VALUES (NEW.shipdata_cohead_number, NEW.shipdata_cosmisc_tracknum, NEW.shipdata_cosmisc_packnum_tracknum, NEW.shipdata_weight, NEW.shipdata_base_freight, NEW.shipdata_total_freight, NEW.shipdata_base_freight_curr_id, NEW.shipdata_total_freight_curr_id, _shipdatasum_shipper, NEW.shipdata_billing_option, NEW.shipdata_package_type, NEW.shipdata_shiphead_number); ELSIF (TG_OP = 'UPDATE') THEN UPDATE shipdatasum SET shipdatasum_cohead_number=NEW.shipdata_cohead_number, shipdatasum_cosmisc_tracknum=NEW.shipdata_cosmisc_tracknum, shipdatasum_cosmisc_packnum_tracknum=NEW.shipdata_cosmisc_packnum_tracknum, shipdatasum_weight=NEW.shipdata_weight, shipdatasum_base_freight=NEW.shipdata_base_freight, shipdatasum_total_freight=NEW.shipdata_total_freight, shipdatasum_base_freight_curr_id=NEW.shipdata_base_freight_curr_id, shipdatasum_total_freight_curr_id=NEW.shipdata_total_freight_curr_id, shipdatasum_shipper=_shipdatasum_shipper, shipdatasum_billing_option=NEW.shipdata_billing_option, shipdatasum_package_type=NEW.shipdata_package_type, shipdatasum_shiphead_number=NEW.shipdata_shiphead_number WHERE ((TRIM(shipdatasum_cohead_number)=TRIM(OLD.shipdata_cohead_number)) AND (TRIM(shipdatasum_cosmisc_tracknum)=TRIM(OLD.shipdata_cosmisc_tracknum)) AND (TRIM(shipdatasum_cosmisc_packnum_tracknum)=TRIM(OLD.shipdata_cosmisc_packnum_tracknum))); GET DIAGNOSTICS _rows = ROW_COUNT; IF (_rows <= 0) THEN INSERT INTO shipdatasum (shipdatasum_cohead_number, shipdatasum_cosmisc_tracknum, shipdatasum_cosmisc_packnum_tracknum, shipdatasum_weight, shipdatasum_base_freight, shipdatasum_total_freight, shipdatasum_base_freight_curr_id, shipdatasum_total_freight_curr_id, shipdatasum_shipper, shipdatasum_billing_option, shipdatasum_package_type, shipdatasum_shiphead_number) VALUES (NEW.shipdata_cohead_number, NEW.shipdata_cosmisc_tracknum, NEW.shipdata_cosmisc_packnum_tracknum, NEW.shipdata_weight, NEW.shipdata_base_freight, NEW.shipdata_total_freight, NEW.shipdata_base_freight_curr_id, NEW.shipdata_total_freight_curr_id, _shipdatasum_shipper, NEW.shipdata_billing_option, NEW.shipdata_package_type, NEW.shipdata_shiphead_number); END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._shipdatatrigger() OWNER TO admin; -- -- Name: _shipformafterdeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _shipformafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (fetchMetricValue('DefaultShipFormId') = OLD.shipform_id) THEN RAISE EXCEPTION 'Cannot delete the default Shipping Form [xtuple: shipform, -1, %, %]', OLD.shipform_name, OLD.shipform_report_name; END IF; RETURN OLD; END; $$; ALTER FUNCTION public._shipformafterdeletetrigger() OWNER TO admin; -- -- Name: _shipheadbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _shipheadbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF ((TG_OP = 'INSERT') OR (TG_OP = 'UPDATE')) THEN IF (NEW.shiphead_order_type = 'SO' AND NEW.shiphead_order_id IN (SELECT cohead_id FROM cohead)) THEN RETURN NEW; ELSEIF (NEW.shiphead_order_type = 'TO' AND NEW.shiphead_order_id IN (SELECT tohead_id FROM tohead)) THEN RETURN NEW; END IF; RAISE EXCEPTION '% with id % does not exist', NEW.shiphead_order_type, NEW.shiphead_order_id; RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._shipheadbeforetrigger() OWNER TO admin; -- -- Name: _shiptoinfoaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _shiptoinfoaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN IF (NEW.shipto_default) THEN UPDATE shiptoinfo SET shipto_default = false WHERE ((shipto_cust_id=NEW.shipto_cust_id) AND (shipto_id <> NEW.shipto_id)); END IF; IF (SELECT fetchMetricBool('CustomerChangeLog')) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'C', NEW.shipto_cust_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.shipto_name <> NEW.shipto_name) THEN PERFORM postComment( _cmnttypeid, 'C', NEW.shipto_cust_id, ( NEW.shipto_name || ': Ship To Name Changed from "' || COALESCE(OLD.shipto_name, '') || '" to "' || COALESCE(NEW.shipto_name, '') || '"' ) ); END IF; IF (OLD.shipto_shipvia <> NEW.shipto_shipvia) THEN PERFORM postComment( _cmnttypeid, 'C', NEW.shipto_cust_id, ( NEW.shipto_name || ': Ship To ShipVia Changed from "' || COALESCE(OLD.shipto_shipvia, '') || '" to "' || COALESCE(NEW.shipto_shipvia, '') || '"' ) ); END IF; IF (COALESCE(OLD.shipto_taxzone_id, -1) <> COALESCE(NEW.shipto_taxzone_id, -1)) THEN PERFORM postComment( _cmnttypeid, 'C', NEW.shipto_cust_id, ( NEW.shipto_name || ': Ship To Tax Zone Changed from "' || COALESCE((SELECT taxzone_code FROM taxzone WHERE taxzone_id=OLD.shipto_taxzone_id), 'None') || '" to "' || COALESCE((SELECT taxzone_code FROM taxzone WHERE taxzone_id=NEW.shipto_taxzone_id), 'None') || '"' ) ); END IF; IF (OLD.shipto_shipzone_id <> NEW.shipto_shipzone_id) THEN PERFORM postComment( _cmnttypeid, 'C', NEW.shipto_cust_id, ( NEW.shipto_name || ': Ship To Shipping Zone Changed from "' || (SELECT shipzone_name FROM shipzone WHERE shipzone_id=OLD.shipto_shipzone_id) || '" to "' || (SELECT shipzone_name FROM shipzone WHERE shipzone_id=NEW.shipto_shipzone_id) || '"' ) ); END IF; IF (OLD.shipto_salesrep_id <> NEW.shipto_salesrep_id) THEN PERFORM postComment( _cmnttypeid, 'C', NEW.shipto_cust_id, ( NEW.shipto_name || ': Ship To Sales Rep Changed from "' || (SELECT salesrep_name FROM salesrep WHERE salesrep_id=OLD.shipto_salesrep_id) || '" to "' || (SELECT salesrep_name FROM salesrep WHERE salesrep_id=NEW.shipto_salesrep_id) || '"' ) ); END IF; IF (OLD.shipto_active <> NEW.shipto_active) THEN IF (NEW.shipto_active) THEN PERFORM postComment(_cmnttypeid, 'C', NEW.shipto_cust_id, (NEW.shipto_name || ': Ship To Activated')); ELSE PERFORM postComment(_cmnttypeid, 'C', NEW.shipto_cust_id, (NEW.shipto_name || ': Ship To Deactivated')); END IF; END IF; END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._shiptoinfoaftertrigger() OWNER TO admin; -- -- Name: _shipviaafterdeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _shipviaafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (SELECT fetchMetricValue('DefaultShipViaId') = OLD.shipvia_id) THEN RAISE EXCEPTION 'Cannot delete the default Ship-Via [xtuple: shipvia, -1, %]', OLD.shipvia_code; END IF; RETURN OLD; END; $$; ALTER FUNCTION public._shipviaafterdeletetrigger() OWNER TO admin; -- -- Name: _sltransaltertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _sltransaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _externalCompany BOOLEAN := false; _updated BOOLEAN := false; BEGIN IF(TG_OP='DELETE') THEN RAISE EXCEPTION 'You may not delete Journal Transactions once they have been created.'; ELSIF (TG_OP = 'UPDATE') THEN IF(OLD.sltrans_id != NEW.sltrans_id) THEN _updated := true; ELSIF(OLD.sltrans_date != NEW.sltrans_date) THEN _updated := true; ELSIF(OLD.sltrans_accnt_id != NEW.sltrans_accnt_id) THEN _updated := true; ELSIF(OLD.sltrans_amount != NEW.sltrans_amount) THEN _updated := true; ELSIF(OLD.sltrans_username != NEW.sltrans_username) THEN _updated := true; ELSIF( (OLD.sltrans_sequence IS NULL AND NEW.sltrans_sequence IS NOT NULL) OR (OLD.sltrans_sequence IS NOT NULL AND NEW.sltrans_sequence IS NULL) OR (COALESCE(OLD.sltrans_sequence,0) != COALESCE(NEW.sltrans_sequence,0)) ) THEN _updated := true; ELSIF( (OLD.sltrans_created IS NULL AND NEW.sltrans_created IS NOT NULL) OR (OLD.sltrans_created IS NOT NULL AND NEW.sltrans_created IS NULL) OR (COALESCE(OLD.sltrans_created,now()) != COALESCE(NEW.sltrans_created,now())) ) THEN _updated := true; ELSIF( (OLD.sltrans_source IS NULL AND NEW.sltrans_source IS NOT NULL) OR (OLD.sltrans_source IS NOT NULL AND NEW.sltrans_source IS NULL) OR (COALESCE(OLD.sltrans_source,'') != COALESCE(NEW.sltrans_source,'')) ) THEN _updated := true; ELSIF( (OLD.sltrans_docnumber IS NULL AND NEW.sltrans_docnumber IS NOT NULL) OR (OLD.sltrans_docnumber IS NOT NULL AND NEW.sltrans_docnumber IS NULL) OR (COALESCE(OLD.sltrans_docnumber,'') != COALESCE(NEW.sltrans_docnumber,'')) ) THEN _updated := true; ELSIF( (OLD.sltrans_doctype IS NULL AND NEW.sltrans_doctype IS NOT NULL) OR (OLD.sltrans_doctype IS NOT NULL AND NEW.sltrans_doctype IS NULL) OR (COALESCE(OLD.sltrans_doctype,'') != COALESCE(NEW.sltrans_doctype,'')) ) THEN _updated := true; END IF; IF(_updated) THEN RAISE EXCEPTION 'You may not alter some Journal Transaction fields once they have been created.'; END IF; ELSE RAISE EXCEPTION 'trigger for sltrans table called in unexpected state.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._sltransaltertrigger() OWNER TO admin; -- -- Name: _sltransinserttrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _sltransinserttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _reqNotes BOOLEAN; _externalCompany BOOLEAN := false; BEGIN -- Checks SELECT company_external INTO _externalCompany FROM company JOIN accnt ON (company_number=accnt_company) WHERE (accnt_id=NEW.sltrans_accnt_id); IF (_externalCompany) THEN RAISE EXCEPTION 'Transactions are not allowed for G/L Accounts with External Company segments.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._sltransinserttrigger() OWNER TO admin; -- -- Name: _soheadtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _soheadtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _p RECORD; _a RECORD; _w RECORD; _shiptoId INTEGER; _addrId INTEGER; _prjId INTEGER; _check BOOLEAN; _numGen CHAR(1); BEGIN -- Checks -- Start with privileges IF (TG_OP = 'INSERT') THEN IF ( (NOT checkPrivilege('MaintainSalesOrders')) AND (NOT checkPrivilege('EnterReceipts')) ) THEN RAISE EXCEPTION 'You do not have privileges to create a Sales Order.'; END IF; ELSIF (TG_OP = 'UPDATE') THEN IF ( (NOT checkPrivilege('MaintainSalesOrders')) AND (NOT checkPrivilege('IssueStockToShipping')) AND (NEW.cohead_holdtype = OLD.cohead_holdtype) ) THEN RAISE EXCEPTION 'You do not have privileges to alter a Sales Order.'; END IF; ELSE IF ( (NOT checkPrivilege('MaintainSalesOrders')) AND (NOT checkPrivilege('IssueStockToShipping')) ) THEN RAISE EXCEPTION 'You do not have privileges to alter a Sales Order.'; END IF; END IF; -- If this is imported, check the order number IF (TG_OP = 'INSERT') THEN IF (NEW.cohead_imported) THEN SELECT fetchMetricText('CONumberGeneration') INTO _numGen; IF ((NEW.cohead_number IS NULL) AND (_numGen='M')) THEN RAISE EXCEPTION 'You must supply an Order Number.'; ELSE IF (NEW.cohead_number IS NULL) THEN SELECT fetchsonumber() INTO NEW.cohead_number; END IF; END IF; END IF; IF (fetchMetricText('CONumberGeneration') IN ('A','O')) THEN --- clear the number from the issue cache PERFORM clearNumberIssue('SoNumber', NEW.cohead_number); END IF; ELSE IF (TG_OP = 'UPDATE') THEN IF (NEW.cohead_number <> OLD.cohead_number) THEN RAISE EXCEPTION 'The order number may not be changed.'; END IF; END IF; END IF; IF (TG_OP IN ('INSERT','UPDATE')) THEN -- Get Customer data IF (NEW.cohead_shipto_id IS NULL) THEN SELECT cust_creditstatus,cust_number,cust_usespos,cust_blanketpos,cust_ffbillto, cust_ffshipto,cust_name,cust_salesrep_id,cust_terms_id,cust_shipvia, cust_shipchrg_id,cust_shipform_id,cust_commprcnt,cust_curr_id,cust_taxzone_id, cntct.*,addr.*, shipto_id,shipto_addr_id,shipto_name,shipto_salesrep_id,shipto_shipvia, shipto_shipchrg_id,shipto_shipform_id,shipto_commission,shipto_taxzone_id INTO _p FROM custinfo LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) LEFT OUTER JOIN shiptoinfo ON ((cust_id=shipto_cust_id) AND shipto_default) WHERE (cust_id=NEW.cohead_cust_id); ELSE SELECT cust_creditstatus,cust_number,cust_usespos,cust_blanketpos,cust_ffbillto, cust_ffshipto,cust_name,cust_salesrep_id,cust_terms_id,cust_shipvia, cust_shipchrg_id,cust_shipform_id,cust_commprcnt,cust_curr_id,cust_taxzone_id, cntct.*,addr.*, shipto_id,shipto_addr_id,shipto_name,shipto_salesrep_id,shipto_shipvia, shipto_shipchrg_id,shipto_shipform_id,shipto_commission,shipto_taxzone_id INTO _p FROM shiptoinfo,custinfo LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) WHERE ((cust_id=NEW.cohead_cust_id) AND (shipto_id=NEW.cohead_shipto_id)); END IF; -- If there is customer data, then we can get to work IF (FOUND) THEN -- Check Credit IF (TG_OP = 'INSERT') THEN IF (_p.cust_creditstatus = 'H') THEN SELECT checkPrivilege('CreateSOForHoldCustomer') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'Customer % has been placed on a Credit Hold and you do not have privilege to create Sales Orders for Customers on Credit Hold. The selected Customer must be taken off of Credit Hold before you may create a new Sales Order for the Customer.',_p.cust_number; ELSE NEW.cohead_holdtype='C'; END IF; END IF; IF (_p.cust_creditstatus = 'W') THEN SELECT checkPrivilege('CreateSOForWarnCustomer') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'Customer % has been placed on a Credit Warning and you do not have privilege to create Sales Orders for Customers on Credit Warning. The selected Customer must be taken off of Credit Warning before you may create a new Sales Order for the Customer.',_p.cust_number; ELSE NEW.cohead_holdtype='C'; END IF; END IF; -- Set to defaults if values not provided NEW.cohead_shipto_id := COALESCE(NEW.cohead_shipto_id,_p.shipto_id); NEW.cohead_terms_id := COALESCE(NEW.cohead_terms_id,_p.cust_terms_id); NEW.cohead_orderdate := COALESCE(NEW.cohead_orderdate,current_date); NEW.cohead_packdate := COALESCE(NEW.cohead_packdate,NEW.cohead_orderdate); NEW.cohead_curr_id := COALESCE(NEW.cohead_curr_id,_p.cust_curr_id,basecurrid()); NEW.cohead_freight := COALESCE(NEW.cohead_freight,0); NEW.cohead_custponumber := COALESCE(NEW.cohead_custponumber,''); NEW.cohead_ordercomments := COALESCE(NEW.cohead_ordercomments,''); NEW.cohead_shipcomments := COALESCE(NEW.cohead_shipcomments,''); NEW.cohead_shiptophone := COALESCE(NEW.cohead_shiptophone,''); NEW.cohead_misc := COALESCE(NEW.cohead_misc,0); NEW.cohead_misc_descrip := COALESCE(NEW.cohead_misc_descrip,''); NEW.cohead_shipcomplete := COALESCE(NEW.cohead_shipcomplete,false); IF (_p.shipto_id IS NOT NULL) THEN -- Pull in over ride values NEW.cohead_salesrep_id := COALESCE(NEW.cohead_salesrep_id,_p.shipto_salesrep_id); NEW.cohead_shipvia := COALESCE(NEW.cohead_shipvia,_p.shipto_shipvia); NEW.cohead_shipchrg_id := COALESCE(NEW.cohead_shipchrg_id,_p.shipto_shipchrg_id); NEW.cohead_shipform_id := COALESCE(NEW.cohead_shipform_id,_p.shipto_shipform_id); NEW.cohead_commission := COALESCE(NEW.cohead_commission,_p.shipto_commission); IF (NEW.cohead_taxzone_id=-1) THEN NEW.cohead_taxzone_id := NULL; ELSE NEW.cohead_taxzone_id := COALESCE(NEW.cohead_taxzone_id,_p.shipto_taxzone_id); END IF; ELSE NEW.cohead_salesrep_id := COALESCE(NEW.cohead_salesrep_id,_p.cust_salesrep_id); NEW.cohead_shipvia := COALESCE(NEW.cohead_shipvia,_p.cust_shipvia); NEW.cohead_shipchrg_id := COALESCE(NEW.cohead_shipchrg_id,_p.cust_shipchrg_id); NEW.cohead_shipform_id := COALESCE(NEW.cohead_shipform_id,_p.cust_shipform_id); NEW.cohead_commission := COALESCE(NEW.cohead_commission,_p.cust_commprcnt); IF (NEW.cohead_taxzone_id=-1) THEN NEW.cohead_taxzone_id := NULL; ELSE NEW.cohead_taxzone_id := COALESCE(NEW.cohead_taxzone_id,_p.cust_taxzone_id); END IF; END IF; IF ((NEW.cohead_warehous_id IS NULL) OR (NEW.cohead_fob IS NULL)) THEN IF (NEW.cohead_warehous_id IS NULL) THEN SELECT warehous_id,warehous_fob INTO _w FROM usrpref, whsinfo WHERE ((warehous_id=CAST(usrpref_value AS INTEGER)) AND (warehous_shipping) AND (warehous_active) AND (usrpref_username=getEffectiveXtUser()) AND (usrpref_name='PreferredWarehouse')); ELSE SELECT warehous_id,warehous_fob INTO _w FROM whsinfo WHERE (warehous_id=NEW.cohead_warehous_id); END IF; IF (FOUND) THEN NEW.cohead_warehous_id := COALESCE(NEW.cohead_warehous_id,_w.warehous_id); NEW.cohead_fob := COALESCE(NEW.cohead_fob,_w.warehous_fob); END IF; END IF; END IF; -- Only Check P/O logic for imports, because UI checks when entire order is saved IF (NEW.cohead_imported) THEN -- Check for required Purchase Order IF (_p.cust_usespos AND ((NEW.cohead_custponumber IS NULL) OR (TRIM(BOTH FROM NEW.cohead_custponumber)=''))) THEN RAISE EXCEPTION 'You must enter a Customer P/O for this Sales Order.'; END IF; -- Check for duplicate Purchase Orders if not allowed IF (_p.cust_usespos AND NOT (_p.cust_blanketpos)) THEN SELECT cohead_id INTO _a FROM cohead WHERE ((cohead_cust_id=NEW.cohead_cust_id) AND (cohead_id<>NEW.cohead_id) AND (UPPER(cohead_custponumber) = UPPER(NEW.cohead_custponumber)) ) UNION SELECT quhead_id FROM quhead WHERE ((quhead_cust_id=NEW.cohead_cust_id) AND (quhead_id<>NEW.cohead_id) AND (UPPER(quhead_custponumber) = UPPER(NEW.cohead_custponumber)) ); IF (FOUND) THEN RAISE EXCEPTION 'This Customer does not use Blanket P/O Numbers and the P/O Number you entered has already been used for another Sales Order. Please verify the P/O Number and either enter a new P/O Number or add to the existing Sales Order.'; END IF; END IF; END IF; --Auto create project if applicable IF ((TG_OP = 'INSERT') AND (NEW.cohead_prj_id IS NULL)) THEN SELECT fetchMetricBool('AutoCreateProjectsForOrders') INTO _check; IF (_check) THEN SELECT NEXTVAL('prj_prj_id_seq') INTO _prjId; NEW.cohead_prj_id := _prjId; INSERT INTO prj (prj_id, prj_number, prj_name, prj_descrip, prj_status, prj_so, prj_wo, prj_po) VALUES(_prjId, NEW.cohead_number, NEW.cohead_number, 'Auto Generated Project from Sales Order.', 'O', TRUE, TRUE, TRUE); END IF; END IF; IF (TG_OP = 'UPDATE') THEN SELECT true INTO _check FROM coitem WHERE ( (coitem_status='C') AND (coitem_cohead_id=NEW.cohead_id) ) LIMIT 1; IF (NOT FOUND) THEN --Update project references on supply UPDATE pr SET pr_prj_id=NEW.cohead_prj_id FROM coitem WHERE ((coitem_cohead_id=NEW.cohead_id) AND (coitem_order_type='R') AND (coitem_order_id=pr_id)); PERFORM changeWoProject(coitem_order_id, NEW.cohead_prj_id, TRUE) FROM coitem WHERE ((coitem_cohead_id=NEW.cohead_id) AND (coitem_order_type='W')); ELSE IF NEW.cohead_prj_id <> COALESCE(OLD.cohead_prj_id,-1) THEN RAISE EXCEPTION 'You can not change the project ID on orders with closed lines.'; END IF; END IF; END IF; -- Deal with Billing Address IF (TG_OP = 'INSERT') THEN IF (_p.cust_ffbillto) THEN -- If they didn't supply data, we'll put in the bill to contact and address NEW.cohead_billto_cntct_id=COALESCE(NEW.cohead_billto_cntct_id,_p.cntct_id); NEW.cohead_billto_cntct_honorific=COALESCE(NEW.cohead_billto_cntct_honorific,_p.cntct_honorific,''); NEW.cohead_billto_cntct_first_name=COALESCE(NEW.cohead_billto_cntct_first_name,_p.cntct_first_name,''); NEW.cohead_billto_cntct_middle=COALESCE(NEW.cohead_billto_cntct_middle,_p.cntct_middle,''); NEW.cohead_billto_cntct_last_name=COALESCE(NEW.cohead_billto_cntct_last_name,_p.cntct_last_name,''); NEW.cohead_billto_cntct_phone=COALESCE(NEW.cohead_billto_cntct_phone,_p.cntct_phone,''); NEW.cohead_billto_cntct_title=COALESCE(NEW.cohead_billto_cntct_title,_p.cntct_title,''); NEW.cohead_billto_cntct_fax=COALESCE(NEW.cohead_billto_cntct_fax,_p.cntct_fax,''); NEW.cohead_billto_cntct_email=COALESCE(NEW.cohead_billto_cntct_email,_p.cntct_email,''); NEW.cohead_billtoname=COALESCE(NEW.cohead_billtoname,_p.cust_name,''); NEW.cohead_billtoaddress1=COALESCE(NEW.cohead_billtoaddress1,_p.addr_line1,''); NEW.cohead_billtoaddress2=COALESCE(NEW.cohead_billtoaddress2,_p.addr_line2,''); NEW.cohead_billtoaddress3=COALESCE(NEW.cohead_billtoaddress3,_p.addr_line3,''); NEW.cohead_billtocity=COALESCE(NEW.cohead_billtocity,_p.addr_city,''); NEW.cohead_billtostate=COALESCE(NEW.cohead_billtostate,_p.addr_state,''); NEW.cohead_billtozipcode=COALESCE(NEW.cohead_billtozipcode,_p.addr_postalcode,''); NEW.cohead_billtocountry=COALESCE(NEW.cohead_billtocountry,_p.addr_country,''); ELSE -- Free form not allowed, we're going to put in the address regardless NEW.cohead_billto_cntct_id=_p.cntct_id; NEW.cohead_billto_cntct_honorific=COALESCE(_p.cntct_honorific,''); NEW.cohead_billto_cntct_first_name=COALESCE(_p.cntct_first_name,''); NEW.cohead_billto_cntct_middle=COALESCE(_p.cntct_middle,''); NEW.cohead_billto_cntct_last_name=COALESCE(_p.cntct_last_name,''); NEW.cohead_billto_cntct_phone=COALESCE(_p.cntct_phone,''); NEW.cohead_billto_cntct_title=COALESCE(_p.cntct_title,''); NEW.cohead_billto_cntct_fax=COALESCE(_p.cntct_fax,''); NEW.cohead_billto_cntct_email=COALESCE(_p.cntct_email,''); NEW.cohead_billtoname=COALESCE(_p.cust_name,''); NEW.cohead_billtoaddress1=COALESCE(_p.addr_line1,''); NEW.cohead_billtoaddress2=COALESCE(_p.addr_line2,''); NEW.cohead_billtoaddress3=COALESCE(_p.addr_line3,''); NEW.cohead_billtocity=COALESCE(_p.addr_city,''); NEW.cohead_billtostate=COALESCE(_p.addr_state,''); NEW.cohead_billtozipcode=COALESCE(_p.addr_postalcode,''); NEW.cohead_billtocountry=COALESCE(_p.addr_country,''); END IF; END IF; -- Now let's look at Shipto Address -- If there's nothing in the address fields and there is a shipto id -- or there is a default address available, let's put in some shipto address data IF ((TG_OP = 'INSERT') AND NOT ((NEW.cohead_shipto_id IS NULL) AND NOT _p.cust_ffshipto) AND (NEW.cohead_shipto_cntct_id IS NULL) AND (NEW.cohead_shipto_cntct_honorific IS NULL) AND (NEW.cohead_shipto_cntct_first_name IS NULL) AND (NEW.cohead_shipto_cntct_middle IS NULL) AND (NEW.cohead_shipto_cntct_last_name IS NULL) AND (NEW.cohead_shipto_cntct_suffix IS NULL) AND (NEW.cohead_shipto_cntct_phone IS NULL) AND (NEW.cohead_shipto_cntct_title IS NULL) AND (NEW.cohead_shipto_cntct_fax IS NULL) AND (NEW.cohead_shipto_cntct_email IS NULL) AND (NEW.cohead_shiptoname IS NULL) AND (NEW.cohead_shiptoaddress1 IS NULL) AND (NEW.cohead_shiptoaddress2 IS NULL) AND (NEW.cohead_shiptoaddress3 IS NULL) AND (NEW.cohead_shiptocity IS NULL) AND (NEW.cohead_shiptostate IS NULL) AND (NEW.cohead_shiptocountry IS NULL)) THEN IF ((NEW.cohead_shipto_id IS NULL) AND (_p.shipto_id IS NOT NULL)) THEN _shiptoId := _p.shipto_addr_id; ELSE _shiptoId := NEW.cohead_shipto_id; END IF; SELECT * INTO _a FROM shiptoinfo LEFT OUTER JOIN addr ON (addr_id=shipto_addr_id) LEFT OUTER JOIN cntct ON (cntct_id=shipto_cntct_id) WHERE (shipto_id=_shiptoId); NEW.cohead_shipto_cntct_id := _a.cntct_id; NEW.cohead_shipto_cntct_honorific := COALESCE(_a.cntct_honorific,''); NEW.cohead_shipto_cntct_first_name := COALESCE(_a.cntct_first_name,''); NEW.cohead_shipto_cntct_middle := COALESCE(_a.cntct_middle,''); NEW.cohead_shipto_cntct_last_name := COALESCE(_a.cntct_last_name,''); NEW.cohead_shipto_cntct_suffix := COALESCE(_a.cntct_suffix,''); NEW.cohead_shipto_cntct_phone := COALESCE(_a.cntct_phone,''); NEW.cohead_shipto_cntct_title := COALESCE(_a.cntct_title,''); NEW.cohead_shipto_cntct_fax := COALESCE(_a.cntct_fax,''); NEW.cohead_shipto_cntct_email := COALESCE(_a.cntct_email,''); NEW.cohead_shiptoname := COALESCE(_p.shipto_name,''); NEW.cohead_shiptoaddress1 := COALESCE(_a.addr_line1,''); NEW.cohead_shiptoaddress2 := COALESCE(_a.addr_line2,''); NEW.cohead_shiptoaddress3 := COALESCE(_a.addr_line3,''); NEW.cohead_shiptocity := COALESCE(_a.addr_city,''); NEW.cohead_shiptostate := COALESCE(_a.addr_state,''); NEW.cohead_shiptozipcode := COALESCE(_a.addr_postalcode,''); NEW.cohead_shiptocountry := COALESCE(_a.addr_country,''); ELSE IF (_p.cust_ffshipto) THEN -- Use Address Save function to see if the new address entered matches -- data for the shipto number. If not that will insert new address for CRM SELECT SaveAddr( NULL, NULL, NEW.cohead_shiptoaddress1, NEW.cohead_shiptoaddress2, NEW.cohead_shiptoaddress3, NEW.cohead_shiptocity, NEW.cohead_shiptostate, NEW.cohead_shiptozipcode, NEW.cohead_shiptocountry, 'CHANGEONE') INTO _addrId; SELECT shipto_addr_id INTO _shiptoid FROM shiptoinfo WHERE (shipto_id=NEW.cohead_shipto_id); -- If the address passed doesn't match shipto address, then it's something else IF (_shiptoid <> _addrId) THEN NEW.cohead_shipto_id := NULL; END IF; ELSE SELECT cohead_shipto_id INTO _shiptoid FROM cohead WHERE (cohead_id=NEW.cohead_id); -- Get the shipto address IF (COALESCE(NEW.cohead_shipto_id,-1) <> COALESCE(_shiptoid,-1)) THEN SELECT * INTO _a FROM shiptoinfo LEFT OUTER JOIN cntct ON (shipto_cntct_id=cntct_id) LEFT OUTER JOIN addr ON (shipto_addr_id=addr_id) WHERE (shipto_id=NEW.cohead_shipto_id); IF (FOUND) THEN -- Free form not allowed so we're going to make sure address matches Shipto data NEW.cohead_shipto_cntct_id=_a.cntct_id; NEW.cohead_shipto_cntct_honorific=COALESCE(_a.cntct_honorific,''); NEW.cohead_shipto_cntct_first_name=COALESCE(_a.cntct_first_name,''); NEW.cohead_shipto_cntct_middle=COALESCE(_a.cntct_middle,''); NEW.cohead_shipto_cntct_last_name=COALESCE(_a.cntct_last_name,''); NEW.cohead_shipto_cntct_phone=COALESCE(_a.cntct_phone,''); NEW.cohead_shipto_cntct_title=COALESCE(_a.cntct_title,''); NEW.cohead_shipto_cntct_fax=COALESCE(_a.cntct_fax,''); NEW.cohead_shipto_cntct_email=COALESCE(_a.cntct_email,''); NEW.cohead_shiptoname := COALESCE(_a.shipto_name,''); NEW.cohead_shiptophone := COALESCE(_a.cntct_phone,''); NEW.cohead_shiptoaddress1 := COALESCE(_a.addr_line1,''); NEW.cohead_shiptoaddress2 := COALESCE(_a.addr_line2,''); NEW.cohead_shiptoaddress3 := COALESCE(_a.addr_line3,''); NEW.cohead_shiptocity := COALESCE(_a.addr_city,''); NEW.cohead_shiptostate := COALESCE(_a.addr_state,''); NEW.cohead_shiptozipcode := COALESCE(_a.addr_postalcode,''); NEW.cohead_shiptocountry := COALESCE(_a.addr_country,''); ELSE -- If no shipto data and free form not allowed, this won't work RAISE EXCEPTION 'Free form Shipto is not allowed on this Customer. You must supply a valid Shipto ID.'; END IF; END IF; END IF; END IF; END IF; END IF; IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='SalesOrderChangeLog') ) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment('ChangeLog', 'S', NEW.cohead_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.cohead_terms_id <> NEW.cohead_terms_id) THEN PERFORM postComment( 'ChangeLog', 'S', NEW.cohead_id, ('Terms Changed from "' || oldterms.terms_code || '" to "' || newterms.terms_code || '"') ) FROM terms AS oldterms, terms AS newterms WHERE ( (oldterms.terms_id=OLD.cohead_terms_id) AND (newterms.terms_id=NEW.cohead_terms_id) ); END IF; IF (OLD.cohead_shipvia <> NEW.cohead_shipvia) THEN PERFORM postComment ('ChangeLog', 'S', New.cohead_id, ('Shipvia Changed from "' || OLD.cohead_shipvia || '" to "' || NEW.cohead_shipvia || '"')); END IF; IF (OLD.cohead_holdtype <> NEW.cohead_holdtype) THEN PERFORM postComment( 'ChangeLog', 'S', NEW.cohead_id, ( 'Hold Type Changed from ' || (CASE OLD.cohead_holdtype WHEN('N') THEN 'No Hold' WHEN('C') THEN 'Credit Hold' WHEN('P') THEN 'Packing Hold' WHEN('S') THEN 'Shipping Hold' ELSE 'Unknown/Error' END) || ' to ' || (CASE NEW.cohead_holdtype WHEN('N') THEN 'No Hold' WHEN('C') THEN 'Credit Hold' WHEN('P') THEN 'Packing Hold' WHEN('S') THEN 'Shipping Hold' ELSE 'Unknown/Error' END) ) ); END IF; ELSIF (TG_OP = 'DELETE') THEN DELETE FROM docass WHERE docass_source_id = OLD.cohead_id AND docass_source_type = 'S'; DELETE FROM docass WHERE docass_target_id = OLD.cohead_id AND docass_target_type = 'S'; DELETE FROM comment WHERE ( (comment_source='S') AND (comment_source_id=OLD.cohead_id) ); END IF; END IF; IF (TG_OP = 'UPDATE') THEN IF ( (NOT (OLD.cohead_holdtype = 'N')) AND (NEW.cohead_holdtype='N') ) THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'S', NEW.cohead_id, NEW.cohead_warehous_id, NEW.cohead_number::TEXT FROM evntnot, evnttype WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=NEW.cohead_warehous_id) AND (evnttype_name='SoReleased') ); END IF; IF (OLD.cohead_ordercomments <> NEW.cohead_ordercomments) THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'S', NEW.cohead_id, NEW.cohead_warehous_id, NEW.cohead_number::TEXT FROM evntnot, evnttype WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=NEW.cohead_warehous_id) AND (evnttype_name='SoNotesChanged') ); END IF; IF ((OLD.cohead_shipchrg_id != NEW.cohead_shipchrg_id) OR (OLD.cohead_freight != NEW.cohead_freight) OR (OLD.cohead_shipvia != NEW.cohead_shipvia)) THEN UPDATE shiphead SET shiphead_shipchrg_id=NEW.cohead_shipchrg_id, shiphead_freight=NEW.cohead_freight, shiphead_shipvia=NEW.cohead_shipvia WHERE ((shiphead_order_type='SO') AND (shiphead_order_id=NEW.cohead_id) AND (NOT shiphead_shipped)); END IF; END IF; IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE NEW.cohead_lastupdated = CURRENT_TIMESTAMP; RETURN NEW; END IF; END; $$; ALTER FUNCTION public._soheadtrigger() OWNER TO admin; -- -- Name: _soheadtriggerafter(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _soheadtriggerafter() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (COALESCE(NEW.cohead_taxzone_id,-1) <> COALESCE(OLD.cohead_taxzone_id,-1)) THEN UPDATE coitem SET coitem_taxtype_id=getItemTaxType(itemsite_item_id,NEW.cohead_taxzone_id) FROM itemsite WHERE ((itemsite_id=coitem_itemsite_id) AND (coitem_cohead_id=NEW.cohead_id)); END IF; -- update comments on any associated drop ship POs IF (COALESCE(NEW.cohead_shipcomments, TEXT('')) <> COALESCE(OLD.cohead_shipcomments, TEXT(''))) THEN UPDATE pohead SET pohead_comments=NEW.cohead_shipcomments FROM poitem JOIN coitem ON (coitem_cohead_id=NEW.cohead_id AND coitem_order_type='P' AND coitem_order_id=poitem_id) WHERE (pohead_id=poitem_pohead_id); END IF; RETURN NEW; END; $$; ALTER FUNCTION public._soheadtriggerafter() OWNER TO admin; -- -- Name: _soitemafterdeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _soitemafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN IF (OLD.coitem_status = 'O') THEN IF ( (SELECT (count(*) < 1) FROM coitem WHERE ((coitem_cohead_id=OLD.coitem_cohead_id) AND (coitem_id != OLD.coitem_id) AND (coitem_status = 'O')) ) ) THEN UPDATE cohead SET cohead_status = 'C' WHERE ((cohead_id=OLD.coitem_cohead_id) AND (cohead_status='O')); END IF; END IF; RETURN OLD; END; $$; ALTER FUNCTION public._soitemafterdeletetrigger() OWNER TO admin; -- -- Name: _soitemaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _soitemaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check NUMERIC; _r RECORD; _kit BOOLEAN; _fractional BOOLEAN; _rec RECORD; _kstat TEXT; _pstat TEXT; _result INTEGER; _coitemid INTEGER; _itemsrcid INTEGER; _orderid INTEGER; BEGIN _rec := NEW; --Cache some information SELECT * INTO _r FROM cohead WHERE (cohead_id=_rec.coitem_cohead_id); --Determine if this is a kit for later processing SELECT COALESCE(item_type,'')='K', item_fractional INTO _kit, _fractional FROM itemsite, item WHERE((itemsite_item_id=item_id) AND (itemsite_id=_rec.coitem_itemsite_id)); _kit := COALESCE(_kit, false); _fractional := COALESCE(_fractional, false); IF (_kit) THEN -- Kit Processing IF (TG_OP = 'INSERT') THEN -- Create Sub Lines for Kit Components PERFORM explodeKit(NEW.coitem_cohead_id, NEW.coitem_linenumber, 0, NEW.coitem_itemsite_id, NEW.coitem_qtyord, NEW.coitem_scheddate, NEW.coitem_promdate, NEW.coitem_memo); IF (fetchMetricBool('KitComponentInheritCOS')) THEN -- Update kit line item COS UPDATE coitem SET coitem_cos_accnt_id = CASE WHEN (COALESCE(NEW.coitem_cos_accnt_id, -1) != -1) THEN NEW.coitem_cos_accnt_id WHEN (NEW.coitem_warranty) THEN resolveCOWAccount(NEW.coitem_itemsite_id, _r.cohead_cust_id, _r.cohead_saletype_id, _r.cohead_shipzone_id) ELSE resolveCOSAccount(NEW.coitem_itemsite_id, _r.cohead_cust_id, _r.cohead_saletype_id, _r.cohead_shipzone_id) END WHERE((coitem_cohead_id=NEW.coitem_cohead_id) AND (coitem_linenumber = NEW.coitem_linenumber) AND (coitem_subnumber > 0)); END IF; END IF; IF (TG_OP = 'UPDATE') THEN IF (NEW.coitem_qtyord <> OLD.coitem_qtyord) THEN -- Recreate Sub Lines for Kit Components FOR _coitemid IN SELECT coitem_id FROM coitem WHERE ( (coitem_cohead_id=OLD.coitem_cohead_id) AND (coitem_linenumber=OLD.coitem_linenumber) AND (coitem_subnumber > 0) ) LOOP SELECT deleteSoItem(_coitemid) INTO _result; IF (_result < 0) THEN RAISE EXCEPTION 'Error deleting kit components: deleteSoItem(integer) Error:%', _result; END IF; END LOOP; PERFORM explodeKit(NEW.coitem_cohead_id, NEW.coitem_linenumber, 0, NEW.coitem_itemsite_id, NEW.coitem_qtyord, NEW.coitem_scheddate, NEW.coitem_promdate); END IF; IF ( (NEW.coitem_qtyord <> OLD.coitem_qtyord) OR (NEW.coitem_cos_accnt_id <> OLD.coitem_cos_accnt_id) ) THEN IF (fetchMetricBool('KitComponentInheritCOS')) THEN -- Update kit line item COS UPDATE coitem SET coitem_cos_accnt_id = CASE WHEN (COALESCE(NEW.coitem_cos_accnt_id, -1) != -1) THEN NEW.coitem_cos_accnt_id WHEN (NEW.coitem_warranty) THEN resolveCOWAccount(NEW.coitem_itemsite_id, _r.cohead_cust_id, _r.cohead_saletype_id, _r.cohead_shipzone_id) ELSE resolveCOSAccount(NEW.coitem_itemsite_id, _r.cohead_cust_id, _r.cohead_saletype_id, _r.cohead_shipzone_id) END WHERE((coitem_cohead_id=NEW.coitem_cohead_id) AND (coitem_linenumber = NEW.coitem_linenumber) AND (coitem_subnumber > 0)); END IF; END IF; IF (NEW.coitem_scheddate <> OLD.coitem_scheddate) THEN -- Update kit line item Schedule Date UPDATE coitem SET coitem_scheddate = NEW.coitem_scheddate WHERE((coitem_cohead_id=NEW.coitem_cohead_id) AND (coitem_linenumber = NEW.coitem_linenumber) AND (coitem_subnumber > 0)); END IF; END IF; END IF; IF (TG_OP = 'INSERT') THEN -- Create Purchase Request if flagged to do so IF ((NEW.coitem_order_type='R') AND (NEW.coitem_order_id=-1)) THEN SELECT createpr(CAST(cohead_number AS INTEGER), 'S', NEW.coitem_id) INTO _orderid FROM cohead WHERE (cohead_id=NEW.coitem_cohead_id); IF (_orderid > 0) THEN UPDATE coitem SET coitem_order_id=_orderid WHERE (coitem_id=NEW.coitem_id); END IF; END IF; -- Create Purchase Order if flagged to do so IF ((NEW.coitem_order_type='P') AND (NEW.coitem_order_id=-1)) THEN SELECT itemsrc_id INTO _itemsrcid FROM itemsite JOIN itemsrc ON (itemsrc_item_id=itemsite_item_id AND itemsrc_default) WHERE (itemsite_id=NEW.coitem_itemsite_id); IF (FOUND) THEN SELECT createPurchaseToSale(NEW.coitem_id, _itemsrcid, itemsite_dropship, CASE WHEN (NEW.coitem_prcost=0.0) THEN NULL ELSE NEW.coitem_prcost END) INTO _orderid FROM itemsite WHERE (itemsite_id=NEW.coitem_itemsite_id); IF (_orderid > 0) THEN UPDATE coitem SET coitem_order_id=_orderid WHERE (coitem_id=NEW.coitem_id); END IF; END IF; END IF; END IF; IF (TG_OP = 'UPDATE') THEN IF (NEW.coitem_order_type = 'P') THEN --If soitem is cancelled IF ((NEW.coitem_status = 'X') AND (OLD.coitem_status <> 'X')) THEN --Generate the PoItemSoCancelled event INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'P', poitem_id, itemsite_warehous_id, (pohead_number || '-' || poitem_linenumber || ': ' || item_number) FROM evntnot JOIN evnttype ON (evntnot_evnttype_id=evnttype_id) JOIN itemsite ON (evntnot_warehous_id=itemsite_warehous_id) JOIN item ON (itemsite_item_id=item_id) JOIN poitem ON (poitem_itemsite_id=itemsite_id) JOIN pohead ON( poitem_pohead_id=pohead_id) WHERE( (poitem_id=OLD.coitem_order_id) AND (poitem_duedate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name='PoItemSoCancelled') ); END IF; END IF; END IF; IF (_rec.coitem_subnumber > 0) THEN SELECT coitem_status INTO _kstat FROM coitem WHERE((coitem_cohead_id=_rec.coitem_cohead_id) AND (coitem_linenumber=_rec.coitem_linenumber) AND (coitem_subnumber = 0)); IF ((SELECT count(*) FROM coitem WHERE((coitem_cohead_id=_rec.coitem_cohead_id) AND (coitem_linenumber=_rec.coitem_linenumber) AND (coitem_subnumber <> _rec.coitem_subnumber) AND (coitem_subnumber > 0) AND (coitem_status = 'O'))) > 0) THEN _pstat := 'O'; ELSE _pstat := _rec.coitem_status; END IF; END IF; IF(TG_OP = 'INSERT') THEN IF (_rec.coitem_subnumber > 0 AND _rec.coitem_status = 'O') THEN _pstat := 'O'; END IF; ELSIF (TG_OP = 'UPDATE') THEN IF (_rec.coitem_subnumber > 0 AND _rec.coitem_status = 'O') THEN _pstat := 'O'; END IF; IF ((NEW.coitem_status = 'C') AND (OLD.coitem_status <> 'C')) THEN IF(_kit) THEN UPDATE coitem SET coitem_status='C' WHERE((coitem_cohead_id=OLD.coitem_cohead_id) AND (coitem_linenumber=OLD.coitem_linenumber) AND (coitem_status='O') AND (coitem_subnumber > 0)); END IF; END IF; IF ((NEW.coitem_status = 'X') AND (OLD.coitem_status <> 'X')) THEN IF(_kit) THEN UPDATE coitem SET coitem_status='X' WHERE((coitem_cohead_id=OLD.coitem_cohead_id) AND (coitem_linenumber=OLD.coitem_linenumber) AND (coitem_status='O') AND (coitem_subnumber > 0)); END IF; END IF; IF(NEW.coitem_status = 'O' AND OLD.coitem_status <> 'O') THEN IF(_kit) THEN UPDATE coitem SET coitem_status='O' WHERE((coitem_cohead_id=OLD.coitem_cohead_id) AND (coitem_linenumber=OLD.coitem_linenumber) AND ((coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) > 0) AND (coitem_subnumber > 0)); END IF; END IF; END IF; IF ((_kstat IS NOT NULL) AND (_pstat IS NOT NULL) AND (_rec.coitem_subnumber > 0) AND (_kstat <> _pstat)) THEN UPDATE coitem SET coitem_status = _pstat WHERE((coitem_cohead_id=_rec.coitem_cohead_id) AND (coitem_linenumber=_rec.coitem_linenumber) AND (coitem_subnumber = 0)); END IF; --If auto calculate freight, recalculate cohead_freight IF (SELECT cohead_calcfreight FROM cohead WHERE (cohead_id=NEW.coitem_cohead_id)) THEN UPDATE cohead SET cohead_freight = COALESCE( (SELECT SUM(freightdata_total) FROM freightDetail('SO', cohead_id, cohead_cust_id, cohead_shipto_id, cohead_orderdate, cohead_shipvia, cohead_curr_id)), 0) WHERE cohead_id=NEW.coitem_cohead_id; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._soitemaftertrigger() OWNER TO admin; -- -- Name: _soitembeforedeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _soitembeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; _kit BOOLEAN := FALSE; _shipped BOOLEAN := FALSE; _coitemid INTEGER := 0; _result INTEGER := 0; BEGIN -- Check Priv IF NOT (checkPrivilege('MaintainSalesOrders')) THEN RAISE EXCEPTION 'You do not have privileges to alter a Sales Order.'; END IF; -- Cache some information SELECT * INTO _r FROM cohead, itemsite, item WHERE ( (cohead_id=OLD.coitem_cohead_id) AND (itemsite_id=OLD.coitem_itemsite_id) AND (item_id=itemsite_item_id) ); _kit := (COALESCE(_r.item_type,'')='K'); -- Check for shipped kit components IF(_kit AND OLD.coitem_status <> 'C' AND OLD.coitem_status <> 'X') THEN IF (EXISTS (SELECT coitem_id FROM coitem JOIN shipitem ON (shipitem_orderitem_id=coitem_id) JOIN shiphead ON (shiphead_id=shipitem_shiphead_id AND shiphead_order_type='SO') WHERE ((coitem_cohead_id=OLD.coitem_cohead_id) AND (coitem_linenumber=OLD.coitem_linenumber) AND (coitem_subnumber > 0)) GROUP BY coitem_id HAVING (SUM(shipitem_qty) > 0) LIMIT 1) ) THEN _shipped := TRUE; END IF; END IF; IF(_kit AND _shipped) THEN RAISE EXCEPTION 'You can not delete this Sales Order Line as it has several sub components that have already been shipped.'; END IF; DELETE FROM comment WHERE ( (comment_source='SI') AND (comment_source_id=OLD.coitem_id) ); DELETE FROM charass WHERE ((charass_target_type='SI') AND (charass_target_id=OLD.coitem_id)); -- Delete Sub Lines for Kit Components IF (OLD.coitem_subnumber = 0) THEN FOR _coitemid IN SELECT coitem_id FROM coitem WHERE ( (coitem_cohead_id=OLD.coitem_cohead_id) AND (coitem_linenumber=OLD.coitem_linenumber) AND (coitem_subnumber > 0) ) LOOP SELECT deleteSoItem(_coitemid) INTO _result; IF (_result < 0) THEN IF NOT (_r.itemsite_createsopo AND (_result = -10 OR _result = -20)) THEN RAISE EXCEPTION 'Error deleting kit components: deleteSoItem(integer) Error:%', _result; END IF; END IF; END LOOP; END IF; INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'S', OLD.coitem_id, _r.itemsite_warehous_id, (_r.cohead_number || '-' || OLD.coitem_linenumber) FROM evntnot, evnttype WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=_r.itemsite_warehous_id) AND (OLD.coitem_scheddate <= (CURRENT_DATE + _r.itemsite_eventfence)) AND (evnttype_name='SoitemCancelled') ); RETURN OLD; END; $$; ALTER FUNCTION public._soitembeforedeletetrigger() OWNER TO admin; -- -- Name: _soitembeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _soitembeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check NUMERIC; _itemNumber TEXT; _r RECORD; _kit BOOLEAN; BEGIN --Determine if this is a kit for later processing SELECT COALESCE(item_type,'')='K' INTO _kit FROM itemsite, item WHERE((itemsite_item_id=item_id) AND (itemsite_id=NEW.coitem_itemsite_id)); _kit := COALESCE(_kit, false); IF (TG_OP = 'INSERT') THEN -- If this is imported, go ahead and insert default characteristics IF (NEW.coitem_imported) THEN INSERT INTO charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_price) SELECT 'SI', NEW.coitem_id, char_id, charass_value, itemcharprice(item_id,char_id,charass_value,cohead_cust_id,cohead_shipto_id,NEW.coitem_qtyord,cohead_curr_id,cohead_orderdate) FROM ( SELECT DISTINCT char_id, char_name, charass_value, item_id, cohead_cust_id, cohead_shipto_id, cohead_curr_id, cohead_orderdate FROM cohead, charass, char, itemsite, item WHERE((itemsite_id=NEW.coitem_itemsite_id) AND (itemsite_item_id=item_id) AND (charass_target_type='I') AND (charass_target_id=item_id) AND (charass_default) AND (char_id=charass_char_id) AND (cohead_id=NEW.coitem_cohead_id)) ORDER BY char_name) AS data; END IF; END IF; -- Create work order and process if flagged to do so IF ((NEW.coitem_order_type='W') AND (NEW.coitem_order_id=-1)) THEN SELECT createwo(CAST(cohead_number AS INTEGER), NEW.coitem_itemsite_id, 1, -- priority validateOrderQty(NEW.coitem_itemsite_id, NEW.coitem_qtyord, TRUE), itemsite_leadtime, NEW.coitem_scheddate, NEW.coitem_memo, 'S', NEW.coitem_id, cohead_prj_id) INTO NEW.coitem_order_id FROM cohead, itemsite WHERE ((cohead_id=NEW.coitem_cohead_id) AND (itemsite_id=NEW.coitem_itemsite_id)); INSERT INTO charass (charass_target_type, charass_target_id, charass_char_id, charass_value) SELECT 'W', NEW.coitem_order_id, charass_char_id, charass_value FROM charass WHERE ((charass_target_type='SI') AND (charass_target_id=NEW.coitem_id)); END IF; IF (TG_OP = 'UPDATE') THEN -- Update P/R date if applicable IF (NEW.coitem_scheddate <> OLD.coitem_scheddate AND NEW.coitem_order_type='R' AND NEW.coitem_order_id > 1) THEN UPDATE pr SET pr_duedate = NEW.coitem_scheddate WHERE (pr_order_id=NEW.coitem_id AND pr_order_type='S'); END IF; -- If closing or cancelling and there is a job item work order, then close job and distribute remaining costs IF ((NEW.coitem_status = 'C' AND OLD.coitem_status <> 'C') OR (NEW.coitem_status = 'X' AND OLD.coitem_status <> 'X')) AND (OLD.coitem_order_id > -1) THEN SELECT wo_id, wo_wipvalue INTO _r FROM wo,itemsite,item WHERE ((wo_ordtype='S') AND (wo_ordid=OLD.coitem_id) AND (itemsite_id=wo_itemsite_id) AND (item_id=itemsite_item_id) AND (itemsite_costmethod = 'J')); IF (FOUND) THEN IF (_r.wo_wipvalue > 0) THEN -- Distribute to G/L, debit Cost of Sales, credit WIP PERFORM MIN(insertGLTransaction( 'W/O', 'WO', formatWoNumber(NEW.coitem_order_id), 'Job Closed Incomplete', costcat_wip_accnt_id, CASE WHEN (COALESCE(NEW.coitem_cos_accnt_id, -1) != -1) THEN NEW.coitem_cos_accnt_id WHEN (NEW.coitem_warranty=TRUE) THEN resolveCOWAccount(itemsite_id, cohead_cust_id, cohead_saletype_id, cohead_shipzone_id) ELSE resolveCOSAccount(itemsite_id, cohead_cust_id, cohead_saletype_id, cohead_shipzone_id) END, -1, _r.wo_wipvalue, current_date )) FROM itemsite, costcat, cohead WHERE ((itemsite_id=NEW.coitem_itemsite_id) AND (itemsite_costcat_id=costcat_id) AND (cohead_id=NEW.coitem_cohead_id)); END IF; UPDATE wo SET wo_status = 'C', wo_wipvalue = 0 WHERE (wo_id = _r.wo_id); END IF; END IF; -- Likewise, reopen the job if line reopened IF ((NEW.coitem_status != 'C' AND OLD.coitem_status = 'C') OR (NEW.coitem_status != 'X' AND OLD.coitem_status = 'X')) AND (OLD.coitem_order_id > -1) THEN UPDATE wo SET wo_status = 'I' FROM itemsite, item WHERE ((wo_ordtype = 'S') AND (wo_ordid=NEW.coitem_id) AND (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (itemsite_costmethod='J')); END IF; -- Handle links to Return Authorization IF (fetchMetricBool('EnableReturnAuth')) THEN SELECT * INTO _r FROM raitem,rahead WHERE ((raitem_new_coitem_id=NEW.coitem_id) AND (rahead_id=raitem_rahead_id)); IF (FOUND) THEN IF ((_r.raitem_qtyauthorized <> NEW.coitem_qtyord OR _r.raitem_qty_uom_id <> NEW.coitem_qty_uom_id OR _r.raitem_qty_invuomratio <> NEW.coitem_qty_invuomratio OR _r.raitem_price_uom_id <> NEW.coitem_price_uom_id OR _r.raitem_price_invuomratio <> NEW.coitem_price_invuomratio) AND NOT (NEW.coitem_status = 'X' AND _r.raitem_qtyauthorized = 0)) THEN RAISE EXCEPTION 'Quantities for line item % may only be changed on the Return Authorization that created it.',NEW.coitem_linenumber; END IF; IF (OLD.coitem_warranty <> NEW.coitem_warranty) THEN UPDATE raitem SET raitem_warranty = NEW.coitem_warranty WHERE((raitem_new_coitem_id=NEW.coitem_id) AND (raitem_warranty != NEW.coitem_warranty)); END IF; IF (OLD.coitem_cos_accnt_id <> NEW.coitem_cos_accnt_id) THEN UPDATE raitem SET raitem_cos_accnt_id = NEW.coitem_cos_accnt_id WHERE((raitem_new_coitem_id=NEW.coitem_id) AND (COALESCE(raitem_cos_accnt_id,-1) != COALESCE(NEW.coitem_cos_accnt_id,-1))); END IF; IF (OLD.coitem_taxtype_id <> NEW.coitem_taxtype_id) THEN UPDATE raitem SET raitem_taxtype_id = NEW.coitem_taxtype_id WHERE((raitem_new_coitem_id=NEW.coitem_id) AND (COALESCE(raitem_taxtype_id,-1) != COALESCE(NEW.coitem_taxtype_id,-1))); END IF; IF (OLD.coitem_scheddate <> NEW.coitem_scheddate) THEN UPDATE raitem SET raitem_scheddate = NEW.coitem_scheddate WHERE((raitem_new_coitem_id=NEW.coitem_id) AND (raitem_scheddate != NEW.coitem_scheddate)); END IF; IF (OLD.coitem_memo <> NEW.coitem_memo) THEN UPDATE raitem SET raitem_notes = NEW.coitem_memo WHERE((raitem_new_coitem_id=NEW.coitem_id) AND (raitem_notes != NEW.coitem_memo)); END IF; IF ((OLD.coitem_qtyshipped <> NEW.coitem_qtyshipped) AND (NEW.coitem_qtyshipped >= _r.raitem_qtyauthorized) AND ((_r.raitem_disposition = 'S') OR (_r.raitem_status = 'O') AND (_r.raitem_disposition IN ('P','V')) AND (_r.raitem_qtyreceived >= _r.raitem_qtyauthorized))) THEN UPDATE raitem SET raitem_status = 'C' WHERE (raitem_new_coitem_id=NEW.coitem_id); END IF; END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._soitembeforetrigger() OWNER TO admin; -- -- Name: _soitemtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _soitemtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _changelog BOOLEAN := FALSE; _check BOOLEAN; _kit BOOLEAN; _shipped BOOLEAN; _atShipping NUMERIC; _tmp INTEGER; _rec RECORD; BEGIN -- Check SELECT checkPrivilege('MaintainSalesOrders') OR checkPrivilege('ShipOrders') OR checkPrivilege('IssueStockToShipping') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to alter a Sales Order.'; END IF; IF ( SELECT fetchMetricBool('SalesOrderChangeLog') ) THEN _changelog := TRUE; END IF; IF (TG_OP IN ('INSERT','UPDATE')) THEN IF (NEW.coitem_scheddate IS NULL) THEN IF (fetchmetricbool('AllowASAPShipSchedules')) THEN NEW.coitem_scheddate := current_date; ELSE RAISE EXCEPTION 'A schedule date is required.'; END IF; END IF; END IF; _rec := NEW; SELECT COALESCE(item_type,'')='K' INTO _kit FROM itemsite, item WHERE((itemsite_item_id=item_id) AND (itemsite_id=_rec.coitem_itemsite_id)); _kit := COALESCE(_kit, false); _shipped := false; IF(_kit AND _rec.coitem_status <> 'C' AND _rec.coitem_status <> 'X') THEN SELECT coitem_id INTO _tmp FROM coitem JOIN shipitem ON (shipitem_orderitem_id=coitem_id) JOIN shiphead ON (shiphead_id=shipitem_shiphead_id AND shiphead_order_type='SO') WHERE((coitem_cohead_id=_rec.coitem_cohead_id) AND (coitem_linenumber=_rec.coitem_linenumber) AND (coitem_subnumber > 0)) GROUP BY coitem_id HAVING (SUM(shipitem_qty) > 0) LIMIT 1; IF (FOUND) THEN _shipped := true; END IF; END IF; IF (TG_OP ='UPDATE') THEN IF ((OLD.coitem_status <> 'C') AND (NEW.coitem_status = 'C')) THEN SELECT qtyAtShipping(NEW.coitem_id) INTO _atShipping; IF (_atShipping > 0) THEN RAISE EXCEPTION 'Line % cannot be Closed at this time as there is inventory at shipping.',NEW.coitem_linenumber; END IF; END IF; END IF; IF (TG_OP = 'INSERT') THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'S', NEW.coitem_id, itemsite_warehous_id, (cohead_number || '-' || NEW.coitem_linenumber) FROM evntnot, evnttype, itemsite, item, cohead WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (itemsite_id=NEW.coitem_itemsite_id) AND (itemsite_item_id=item_id) AND (NEW.coitem_cohead_id=cohead_id) AND (NEW.coitem_scheddate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name='SoitemCreated') ); IF (_changelog) THEN PERFORM postComment('ChangeLog', 'SI', NEW.coitem_id, 'Created'); END IF; --Set defaults if no values passed NEW.coitem_linenumber := COALESCE(NEW.coitem_linenumber, (SELECT (COALESCE(MAX(coitem_linenumber), 0) + 1) FROM coitem WHERE (coitem_cohead_id=NEW.coitem_cohead_id))); NEW.coitem_status := COALESCE(NEW.coitem_status,'O'); NEW.coitem_scheddate := COALESCE(NEW.coitem_scheddate, (SELECT MIN(coitem_scheddate) FROM coitem WHERE (coitem_cohead_id=NEW.coitem_cohead_id))); NEW.coitem_memo := COALESCE(NEW.coitem_memo,''); NEW.coitem_prcost := COALESCE(NEW.coitem_prcost,0); NEW.coitem_warranty := COALESCE(NEW.coitem_warranty,false); IF (NEW.coitem_status='O') THEN UPDATE cohead SET cohead_status = 'O' WHERE ((cohead_id=NEW.coitem_cohead_id) AND (cohead_status='C')); END IF; RETURN NEW; ELSIF (TG_OP = 'UPDATE') THEN IF (NEW.coitem_qtyord <> OLD.coitem_qtyord) THEN IF(_kit) THEN IF(_shipped) THEN RAISE EXCEPTION 'You can not change the qty ordered for a Kit item when one or more of its components have shipped inventory.'; END IF; END IF; INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number, evntlog_oldvalue, evntlog_newvalue ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'S', NEW.coitem_id, itemsite_warehous_id, (cohead_number || '-' || NEW.coitem_linenumber), OLD.coitem_qtyord, NEW.coitem_qtyord FROM evntnot, evnttype, itemsite, item, cohead WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (itemsite_id=NEW.coitem_itemsite_id) AND (itemsite_item_id=item_id) AND (NEW.coitem_cohead_id=cohead_id) AND ( (NEW.coitem_scheddate <= (CURRENT_DATE + itemsite_eventfence)) OR (OLD.coitem_scheddate <= (CURRENT_DATE + itemsite_eventfence)) ) AND (evnttype_name='SoitemQtyChanged') ); IF (_changelog) THEN PERFORM postComment( 'ChangeLog', 'SI', NEW.coitem_id, ( 'Changed Qty. Ordered from ' || formatQty(OLD.coitem_qtyord) || ' to ' || formatQty(NEW.coitem_qtyord) ) ); END IF; END IF; IF (NEW.coitem_scheddate <> OLD.coitem_scheddate) THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number, evntlog_olddate, evntlog_newdate ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'S', NEW.coitem_id, itemsite_warehous_id, (cohead_number || '-' || NEW.coitem_linenumber), OLD.coitem_scheddate, NEW.coitem_scheddate FROM evntnot, evnttype, itemsite, item, cohead WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (itemsite_id=NEW.coitem_itemsite_id) AND (itemsite_item_id=item_id) AND (NEW.coitem_cohead_id=cohead_id) AND ( (NEW.coitem_scheddate <= (CURRENT_DATE + itemsite_eventfence)) OR (OLD.coitem_scheddate <= (CURRENT_DATE + itemsite_eventfence)) ) AND (evnttype_name='SoitemSchedDateChanged') ); IF (_changelog) THEN PERFORM postComment( 'ChangeLog', 'SI', NEW.coitem_id, ( 'Changed Sched. Date from ' || formatDate(OLD.coitem_scheddate) || ' to ' || formatDate(NEW.coitem_scheddate)) ); END IF; END IF; IF ((NEW.coitem_status = 'C') AND (OLD.coitem_status <> 'C')) THEN NEW.coitem_closedate = CURRENT_TIMESTAMP; NEW.coitem_close_username = getEffectiveXtUser(); NEW.coitem_qtyreserved := 0; IF (_changelog) THEN PERFORM postComment('ChangeLog', 'SI', NEW.coitem_id, 'Closed'); END IF; END IF; IF ((NEW.coitem_status <> 'C') AND (OLD.coitem_status = 'C')) THEN NEW.coitem_closedate = NULL; NEW.coitem_close_username = NULL; IF (_changelog) THEN PERFORM postComment('ChangeLog', 'SI', NEW.coitem_id, 'Reopened'); END IF; END IF; IF ((NEW.coitem_status = 'X') AND (OLD.coitem_status <> 'X')) THEN IF ((OLD.coitem_order_type = 'W') AND (SELECT wo_status IN ('O', 'E', 'R') FROM wo WHERE (wo_id=OLD.coitem_order_id))) THEN -- Close any associated W/O PERFORM closeWo(OLD.coitem_order_id, FALSE, CURRENT_DATE); ELSIF (OLD.coitem_order_type = 'R') THEN -- Delete any associated P/R PERFORM deletePr(OLD.coitem_order_id); END IF; NEW.coitem_qtyreserved := 0; IF (_changelog) THEN PERFORM postComment('ChangeLog', 'SI', NEW.coitem_id, 'Canceled'); PERFORM postComment('ChangeLog', 'S', NEW.coitem_cohead_id, 'Line # '|| NEW.coitem_linenumber ||' Canceled'); END IF; INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'S', OLD.coitem_id, itemsite_warehous_id, (cohead_number || '-' || OLD.coitem_linenumber) FROM evntnot, evnttype, itemsite, item, cohead WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (itemsite_id=OLD.coitem_itemsite_id) AND (itemsite_item_id=item_id) AND (OLD.coitem_cohead_id=cohead_id) AND (OLD.coitem_scheddate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name='SoitemCancelled') ); END IF; IF ((NEW.coitem_qtyreserved <> OLD.coitem_qtyreserved) AND (_changelog)) THEN PERFORM postComment('ChangeLog', 'SI', NEW.coitem_id, 'Changed Qty Reserved to '|| NEW.coitem_qtyreserved); END IF; END IF; NEW.coitem_lastupdated = CURRENT_TIMESTAMP; -- Handle status for header IF (TG_OP = 'UPDATE') THEN IF (OLD.coitem_status <> NEW.coitem_status) THEN IF ( (SELECT (count(*) < 1) FROM coitem WHERE ((coitem_cohead_id=NEW.coitem_cohead_id) AND (coitem_id != NEW.coitem_id) AND (coitem_status='O')) ) AND (NEW.coitem_status<>'O') ) THEN UPDATE cohead SET cohead_status = 'C' WHERE ((cohead_id=NEW.coitem_cohead_id) AND (cohead_status='O')); ELSE UPDATE cohead SET cohead_status = 'O' WHERE ((cohead_id=NEW.coitem_cohead_id) AND (cohead_status='C')); END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._soitemtrigger() OWNER TO admin; -- -- Name: _taxauthafterdeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _taxauthafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (EXISTS(SELECT 1 FROM checkhead WHERE checkhead_recip_id = OLD.taxauth_id AND checkhead_recip_type='T')) THEN RAISE EXCEPTION 'Cannot delete the tax authority % because checks have been written to it [xtuple: deleteTaxAuthority, -7, %]', OLD.taxauth_number, OLD.taxauth_number; END IF; IF (fetchMetricValue('DefaultTaxAuthority') = OLD.taxauth_id) THEN RAISE EXCEPTION 'Cannot delete the default Tax Authority [xtuple: deleteTaxAuthority, -8, %]', OLD.taxauth_code; END IF; IF (fetchMetricBool('TaxAuthChangeLog')) THEN PERFORM postComment(cmnttype_id, 'TAXAUTH', OLD.taxauth_id, 'Deleted "' || OLD.taxauth_number || '"') FROM cmnttype WHERE (cmnttype_name='ChangeLog'); END IF; RETURN OLD; END; $$; ALTER FUNCTION public._taxauthafterdeletetrigger() OWNER TO admin; -- -- Name: _taxauthaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _taxauthaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN IF (TG_OP = 'INSERT') THEN -- http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-UPSERT-EXAMPLE LOOP UPDATE crmacct SET crmacct_taxauth_id=NEW.taxauth_id, crmacct_name=NEW.taxauth_name WHERE crmacct_number=NEW.taxauth_code; IF (FOUND) THEN EXIT; END IF; BEGIN INSERT INTO crmacct(crmacct_number, crmacct_name, crmacct_active, crmacct_type, crmacct_taxauth_id ) VALUES (NEW.taxauth_code, NEW.taxauth_name, TRUE, 'O', NEW.taxauth_id); EXIT; EXCEPTION WHEN unique_violation THEN -- do nothing, and loop to try the UPDATE again END; END LOOP; /* TODO: default characteristic assignments based on what? */ ELSIF (TG_OP = 'UPDATE') THEN UPDATE crmacct SET crmacct_number = NEW.taxauth_code WHERE ((crmacct_taxauth_id=NEW.taxauth_id) AND (crmacct_number!=NEW.taxauth_code)); UPDATE crmacct SET crmacct_name = NEW.taxauth_name WHERE ((crmacct_taxauth_id=NEW.taxauth_id) AND (crmacct_name!=NEW.taxauth_name)); END IF; IF (fetchMetricBool('TaxAuthChangeLog')) THEN SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (_cmnttypeid IS NOT NULL) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'TAXAUTH', NEW.taxauth_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.taxauth_code <> NEW.taxauth_code) THEN PERFORM postComment(_cmnttypeid, 'TAXAUTH', NEW.taxauth_id, 'Code changed from "' || OLD.taxauth_code || '" to "' || NEW.taxauth_code || '"'); END IF; IF (OLD.taxauth_name <> NEW.taxauth_name) THEN PERFORM postComment(_cmnttypeid, 'TAXAUTH', NEW.taxauth_id, 'Name changed from "' || OLD.taxauth_name || '" to "' || NEW.taxauth_name || '"'); END IF; IF (OLD.taxauth_extref <> NEW.taxauth_extref) THEN PERFORM postComment(_cmnttypeid, 'TAXAUTH', NEW.taxauth_id, 'External Ref. changed from "' || OLD.taxauth_extref || '" to "' || NEW.taxauth_extref || '"'); END IF; IF (OLD.taxauth_addr_id <> NEW.taxauth_addr_id) THEN PERFORM postComment(_cmnttypeid, 'TAXAUTH', NEW.taxauth_id, 'Address changed from ' || formatAddr(OLD.taxauth_addr_id) || ' to ' || formatAddr(NEW.taxauth_addr_id)); END IF; IF (OLD.taxauth_curr_id <> NEW.taxauth_curr_id) THEN PERFORM postComment(_cmnttypeid, 'TAXAUTH', NEW.taxauth_id, 'Currency changed from "' || currConcat(OLD.taxauth_curr_id) || '" to "' || currConcat(NEW.taxauth_curr_id) || '"'); END IF; IF (OLD.taxauth_county <> NEW.taxauth_county) THEN PERFORM postComment(_cmnttypeid, 'TAXAUTH', NEW.taxauth_id, 'County changed from "' || OLD.taxauth_county || '" to "' || NEW.taxauth_county || '"'); END IF; IF (OLD.taxauth_accnt_id <> NEW.taxauth_accnt_id) THEN PERFORM postComment(_cmnttypeid, 'TAXAUTH', NEW.taxauth_id, 'Account changed from "' || formatGLAccount(OLD.taxauth_accnt_id) || '" to "' || formatGLAccount(NEW.taxauth_accnt_id) || '"'); END IF; END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._taxauthaftertrigger() OWNER TO admin; -- -- Name: _taxauthbeforedeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _taxauthbeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NOT checkPrivilege('MaintainTaxAuthorities')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Tax Authorities.'; END IF; UPDATE crmacct SET crmacct_taxauth_id = NULL WHERE crmacct_taxauth_id = OLD.taxauth_id; RETURN OLD; END; $$; ALTER FUNCTION public._taxauthbeforedeletetrigger() OWNER TO admin; -- -- Name: _taxauthbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _taxauthbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NOT checkPrivilege('MaintainTaxAuthorities')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Tax Authorities.'; END IF; IF (NEW.taxauth_code IS NULL) THEN RAISE EXCEPTION 'You must supply a Tax Authority Code.'; END IF; IF (TG_OP = 'INSERT' AND fetchMetricText('CRMAccountNumberGeneration') IN ('A','O')) THEN PERFORM clearNumberIssue('CRMAccountNumber', NEW.taxauth_code); END IF; NEW.taxauth_code := UPPER(NEW.taxauth_code); RETURN NEW; END; $$; ALTER FUNCTION public._taxauthbeforetrigger() OWNER TO admin; -- -- Name: _termsafterdeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _termsafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (fetchMetricValue('DefaultTerms') = OLD.terms_id) THEN RAISE EXCEPTION 'Cannot delete the default Terms [xtuple: terms, -1, %]', OLD.terms_code; END IF; RETURN OLD; END; $$; ALTER FUNCTION public._termsafterdeletetrigger() OWNER TO admin; -- -- Name: _todoitemtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _todoitemtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _recurid INTEGER; _newparentid INTEGER; BEGIN IF (TG_OP = 'DELETE') THEN SELECT recur_id INTO _recurid FROM recur WHERE ((recur_parent_id=OLD.todoitem_id) AND (recur_parent_type='TODO')); IF (_recurid IS NOT NULL) THEN RAISE DEBUG 'recur_id for deleted todoitem = %', _recurid; SELECT todoitem_id INTO _newparentid FROM todoitem WHERE ((todoitem_recurring_todoitem_id=OLD.todoitem_id) AND (todoitem_id!=OLD.todoitem_id)) ORDER BY todoitem_due_date LIMIT 1; RAISE DEBUG '_newparentid for deleted todoitem = %', COALESCE(_newparentid, NULL); -- client is responsible for warning about deleting a recurring todoitem IF (_newparentid IS NULL) THEN DELETE FROM recur WHERE recur_id=_recurid; ELSE UPDATE recur SET recur_parent_id=_newparentid WHERE recur_id=_recurid; UPDATE todoitem SET todoitem_recurring_todoitem_id=_newparentid WHERE todoitem_recurring_todoitem_id=OLD.todoitem_id AND todoitem_id != OLD.todoitem_id; RAISE DEBUG 'reparented recurrence'; END IF; END IF; DELETE FROM alarm WHERE ((alarm_source='TODO') AND (alarm_source_id=OLD.todoitem_id)); DELETE FROM docass WHERE docass_source_id = OLD.todoitem_id AND docass_source_type = 'TODO'; DELETE FROM docass WHERE docass_target_id = OLD.todoitem_id AND docass_target_type = 'TODO'; RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._todoitemtrigger() OWNER TO admin; -- -- Name: _uomconvupdate(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _uomconvupdate() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN UPDATE itemuomconv SET itemuomconv_to_value = NEW.uomconv_to_value, itemuomconv_from_value = NEW.uomconv_from_value, itemuomconv_fractional = NEW.uomconv_fractional WHERE((itemuomconv_from_uom_id = NEW.uomconv_from_uom_id) AND (itemuomconv_to_uom_id = NEW.uomconv_to_uom_id)); RETURN NEW; END; $$; ALTER FUNCTION public._uomconvupdate() OWNER TO admin; -- -- Name: _usrprefaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _usrprefaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN -- http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-UPSERT-EXAMPLE IF (NEW.usrpref_name='active') THEN LOOP UPDATE crmacct SET crmacct_usr_username=NEW.usrpref_username WHERE crmacct_number=UPPER(NEW.usrpref_username); IF (FOUND) THEN EXIT; END IF; BEGIN INSERT INTO crmacct(crmacct_number, crmacct_active, crmacct_type, crmacct_usr_username ) VALUES (NEW.usrpref_username, NEW.usrpref_value::BOOL, 'I', NEW.usrpref_username); EXIT; EXCEPTION WHEN unique_violation THEN -- do nothing, and loop to try the UPDATE again END; END LOOP; ELSIF (NEW.usrpref_name='propername') THEN LOOP UPDATE crmacct SET crmacct_name=NEW.usrpref_value WHERE crmacct_number=UPPER(NEW.usrpref_username); IF (FOUND) THEN EXIT; END IF; BEGIN INSERT INTO crmacct(crmacct_number, crmacct_active, crmacct_name, crmacct_type, crmacct_usr_username ) VALUES (UPPER(NEW.usrpref_username), TRUE, NEW.usrpref_value, 'I', NEW.usrpref_username); EXIT; EXCEPTION WHEN unique_violation THEN -- do nothing, and loop to try the UPDATE again END; END LOOP; END IF; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._usrprefaftertrigger() OWNER TO admin; -- -- Name: _usrprefbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _usrprefbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF NOT (checkPrivilege('MaintainUsers') OR checkPrivilege('MaintainPreferencesOthers') OR (checkPrivilege('MaintainPreferencesSelf'))) THEN -- 2 IFs because plpgsql doesn't always evaluate boolean exprs left-to-right IF (TG_OP = 'DELETE') THEN IF NOT (OLD.usrpref_name LIKE '%/checked' OR OLD.usrpref_name LIKE '%/columnsShown') THEN RAISE EXCEPTION 'You do not have privileges to change this User Preference.'; END IF; ELSIF (NEW.usrpref_username = getEffectiveXtUser()) THEN IF NOT (NEW.usrpref_name LIKE '%/checked' OR NEW.usrpref_name LIKE '%/columnsShown') THEN RAISE EXCEPTION 'You do not have privileges to change this User Preference.'; END IF; END IF; END IF; IF (TG_OP IN ('INSERT', 'UPDATE')) THEN IF (NEW.usrpref_name = 'locale') THEN IF NOT EXISTS(SELECT locale_id FROM locale WHERE locale_id = NEW.usrpref_value::INTEGER) THEN RAISE EXCEPTION 'You must supply a valid Locale.'; END IF; ELSIF (NEW.usrpref_name IN ('agent', 'active')) THEN IF (NEW.usrpref_value NOT IN ('t', 'f')) THEN RAISE EXCEPTION '% must be either "t" or "f"', NEW.usrpref_name; END IF; END IF; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._usrprefbeforetrigger() OWNER TO admin; -- -- Name: _usrprivtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _usrprivtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _returnVal INTEGER; BEGIN -- This looks like a candidate for a foreign key but isn't. -- fkeys don't work if the foreign key value resides in a child of the -- table and not the table itself. IF ((TG_OP = 'UPDATE' OR TG_OP = 'INSERT') AND (NOT EXISTS(SELECT priv_id FROM priv WHERE (priv_id=NEW.usrpriv_priv_id)))) THEN RAISE EXCEPTION 'Privilege id % does not exist or is part of a disabled package.', NEW.usrpriv_priv_id; RETURN OLD; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._usrprivtrigger() OWNER TO admin; -- -- Name: _vendaddrtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _vendaddrtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _vendname TEXT; BEGIN -- Checks SELECT checkPrivilege('MaintainVendors') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to maintain Vendors.'; END IF; IF (TG_OP IN ('INSERT','UPDATE')) THEN IF (LENGTH(COALESCE(NEW.vendaddr_code, ''))=0) THEN RAISE EXCEPTION 'You must supply a valid Vendor Address Number.'; END IF; IF (LENGTH(COALESCE(NEW.vendaddr_name, ''))=0) THEN RAISE EXCEPTION 'You must supply a valid Vendor Address Name.'; END IF; IF (NEW.vendaddr_vend_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Vendor ID.'; END IF; SELECT vendaddr_code INTO _vendname FROM vendaddrinfo WHERE ( (vendaddr_vend_id=NEW.vendaddr_vend_id) AND (UPPER(vendaddr_code)=UPPER(NEW.vendaddr_code)) AND (vendaddr_id<>NEW.vendaddr_id) ); IF (FOUND) THEN RAISE EXCEPTION 'The Vendor Address Number entered cannot be used as it is in use.'; END IF; END IF; IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._vendaddrtrigger() OWNER TO admin; -- -- Name: _vendaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _vendaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN IF (TG_OP = 'INSERT') THEN -- http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-UPSERT-EXAMPLE LOOP UPDATE crmacct SET crmacct_vend_id=NEW.vend_id, crmacct_name=NEW.vend_name WHERE crmacct_number=NEW.vend_number; IF (FOUND) THEN EXIT; END IF; BEGIN INSERT INTO crmacct(crmacct_number, crmacct_name, crmacct_active, crmacct_type, crmacct_vend_id, crmacct_cntct_id_1, crmacct_cntct_id_2 ) VALUES (NEW.vend_number, NEW.vend_name, NEW.vend_active, 'O', NEW.vend_id, NEW.vend_cntct1_id, NEW.vend_cntct2_id); EXIT; EXCEPTION WHEN unique_violation THEN -- do nothing, and loop to try the UPDATE again END; END LOOP; /* TODO: default characteristic assignments based on vendgrp? */ ELSIF (TG_OP = 'UPDATE') THEN UPDATE crmacct SET crmacct_number = NEW.vend_number WHERE ((crmacct_vend_id=NEW.vend_id) AND (crmacct_number!=NEW.vend_number)); UPDATE crmacct SET crmacct_name = NEW.vend_name WHERE ((crmacct_vend_id=NEW.vend_id) AND (crmacct_name!=NEW.vend_name)); END IF; IF (fetchMetricBool('VendorChangeLog')) THEN SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (_cmnttypeid IS NOT NULL) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'V', NEW.vend_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.vend_number <> NEW.vend_number) THEN PERFORM postComment(_cmnttypeid, 'V', NEW.vend_id, ('Number Changed from "' || OLD.vend_number || '" to "' || NEW.vend_number || '"') ); END IF; IF (OLD.vend_name <> NEW.vend_name) THEN PERFORM postComment( _cmnttypeid, 'V', NEW.vend_id, ('Name Changed from "' || OLD.vend_name || '" to "' || NEW.vend_name || '"') ); END IF; IF (OLD.vend_active <> NEW.vend_active) THEN PERFORM postComment(_cmnttypeid, 'V', NEW.vend_id, CASE WHEN NEW.vend_active THEN 'Activated' ELSE 'Deactivated' END); END IF; END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._vendaftertrigger() OWNER TO admin; -- -- Name: _vendinfoafterdeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _vendinfoafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF EXISTS(SELECT 1 FROM checkhead WHERE ((checkhead_recip_id=OLD.vend_id) AND (checkhead_recip_type='V'))) THEN RAISE EXCEPTION '[xtuple: deleteVendor, -7]'; END IF; DELETE FROM taxreg WHERE ((taxreg_rel_type='V') AND (taxreg_rel_id=OLD.vend_id)); IF (fetchMetricBool('VendorChangeLog')) THEN PERFORM postComment(cmnttype_id, 'V', OLD.vend_id, ('Deleted "' || OLD.vend_number || '"')) FROM cmnttype WHERE (cmnttype_name='ChangeLog'); END IF; RETURN OLD; END; $$; ALTER FUNCTION public._vendinfoafterdeletetrigger() OWNER TO admin; -- -- Name: _vendinfobeforedeletetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _vendinfobeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF NOT (checkPrivilege('MaintainVendors')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Vendors.'; END IF; DELETE FROM itemsrcp WHERE itemsrcp_itemsrc_id IN (SELECT itemsrc_id FROM itemsrc WHERE itemsrc_vend_id=OLD.vend_id); DELETE FROM itemsrc WHERE (itemsrc_vend_id=OLD.vend_id); DELETE FROM vendaddrinfo WHERE (vendaddr_vend_id=OLD.vend_id); DELETE FROM docass WHERE docass_source_id = OLD.vend_id AND docass_source_type = 'V'; DELETE FROM docass WHERE docass_target_id = OLD.vend_id AND docass_target_type = 'V'; UPDATE crmacct SET crmacct_vend_id = NULL WHERE crmacct_vend_id = OLD.vend_id; RETURN OLD; END; $$; ALTER FUNCTION public._vendinfobeforedeletetrigger() OWNER TO admin; -- -- Name: _vendtrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _vendtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF NOT (checkPrivilege('MaintainVendors')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Vendors.'; END IF; IF (LENGTH(COALESCE(NEW.vend_number, ''))=0) THEN RAISE EXCEPTION 'You must supply a valid Vendor Number.'; END IF; IF (LENGTH(COALESCE(NEW.vend_name, ''))=0) THEN RAISE EXCEPTION 'You must supply a valid Vendor Name.'; END IF; IF (NEW.vend_vendtype_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Vendor Type ID.'; END IF; IF (NEW.vend_terms_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Terms Code ID.'; END IF; IF (TG_OP = 'INSERT' AND fetchMetricText('CRMAccountNumberGeneration') IN ('A','O')) THEN PERFORM clearNumberIssue('CRMAccountNumber', NEW.vend_number); END IF; NEW.vend_number := UPPER(NEW.vend_number); RETURN NEW; END; $$; ALTER FUNCTION public._vendtrigger() OWNER TO admin; -- -- Name: _vodistaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _vodistaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; BEGIN IF ( (TG_OP = 'UPDATE') OR (TG_OP = 'DELETE') ) THEN IF (OLD.vodist_tax_id <> -1) THEN -- Delete any existing voheadtax adjustment records DELETE FROM voheadtax WHERE ( (taxhist_parent_id=OLD.vodist_vohead_id) AND (taxhist_tax_id=OLD.vodist_tax_id) AND (taxhist_taxtype_id=getAdjustmentTaxTypeId()) ); END IF; END IF; IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; -- Cache Voucher Head SELECT * INTO _r FROM vohead WHERE (vohead_id=NEW.vodist_vohead_id); IF (NOT FOUND) THEN RAISE EXCEPTION 'Voucher head not found'; END IF; IF (NEW.vodist_tax_id <> -1) THEN -- Insert adjustment voheadtax INSERT INTO voheadtax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate ) VALUES ( NEW.vodist_vohead_id, getAdjustmentTaxTypeId(), NEW.vodist_tax_id, 0, NULL, 1, 0, 0, (NEW.vodist_amount * -1), _r.vohead_docdate ); END IF; RETURN NEW; END; $$; ALTER FUNCTION public._vodistaftertrigger() OWNER TO admin; -- -- Name: _vodistbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _vodistbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN IF (TG_OP = 'DELETE') THEN IF (OLD.vodist_tax_id <> -1) THEN -- Delete any existing voheadtax adjustment records DELETE FROM voheadtax WHERE ( (taxhist_parent_id=OLD.vodist_vohead_id) AND (taxhist_tax_id=OLD.vodist_tax_id) AND (taxhist_taxtype_id=getAdjustmentTaxTypeId()) ); END IF; RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._vodistbeforetrigger() OWNER TO admin; -- -- Name: _voheadaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _voheadaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN PERFORM releaseVoNumber(CAST(OLD.vohead_number AS INTEGER)); RETURN OLD; END IF; IF (TG_OP = 'INSERT') THEN PERFORM clearNumberIssue('VcNumber', NEW.vohead_number); RETURN NEW; END IF; IF (TG_OP = 'UPDATE') THEN IF ( (COALESCE(NEW.vohead_taxzone_id,-1) <> COALESCE(OLD.vohead_taxzone_id,-1)) OR (NEW.vohead_docdate <> OLD.vohead_docdate) OR (NEW.vohead_curr_id <> OLD.vohead_curr_id) ) THEN PERFORM calculateTaxHist( 'voitemtax', voitem_id, NEW.vohead_taxzone_id, voitem_taxtype_id, NEW.vohead_docdate, NEW.vohead_curr_id, (vodist_amount * -1) ) FROM voitem JOIN vodist ON ( (vodist_vohead_id=voitem_vohead_id) AND (vodist_poitem_id=voitem_poitem_id) ) WHERE (voitem_vohead_id = NEW.vohead_id); END IF; -- Touch any Misc Tax Distributions so voheadtax is recalculated IF (NEW.vohead_docdate <> OLD.vohead_docdate) THEN UPDATE vodist SET vodist_vohead_id=NEW.vohead_id WHERE ( (vodist_vohead_id=OLD.vohead_id) AND (vodist_tax_id <> -1) ); END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._voheadaftertrigger() OWNER TO admin; -- -- Name: _voheadbeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _voheadbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _recurid INTEGER; _newparentid INTEGER; BEGIN IF (TG_OP = 'DELETE') THEN IF (OLD.vohead_posted) THEN -- Cannot delete a posted voucher RAISE EXCEPTION 'Cannot delete a posted voucher'; END IF; /* TODO: is setting recv_invoiced and poreject_invoiced to FALSE correct? this behavior is inherited from the now-defunct deleteVoucher. */ UPDATE recv SET recv_vohead_id = NULL, recv_voitem_id = NULL, recv_invoiced = FALSE WHERE recv_vohead_id = OLD.vohead_id; UPDATE poreject SET poreject_vohead_id = NULL, poreject_voitem_id = NULL, poreject_invoiced = FALSE WHERE poreject_vohead_id = OLD.vohead_id; DELETE FROM vodist WHERE vodist_vohead_id = OLD.vohead_id; DELETE FROM voheadtax WHERE taxhist_parent_id = OLD.vohead_id; DELETE FROM voitem WHERE voitem_vohead_id = OLD.vohead_id; SELECT recur_id INTO _recurid FROM recur WHERE ((recur_parent_id=OLD.vohead_id) AND (recur_parent_type='V')); IF (_recurid IS NOT NULL) THEN SELECT vohead_id INTO _newparentid FROM vohead WHERE ((vohead_recurring_vohead_id=OLD.vohead_id) AND (vohead_id!=OLD.vohead_id)) ORDER BY vohead_docdate LIMIT 1; IF (_newparentid IS NULL) THEN DELETE FROM recur WHERE recur_id=_recurid; ELSE UPDATE recur SET recur_parent_id=_newparentid WHERE recur_id=_recurid; UPDATE vohead SET vohead_recurring_vohead_id=_newparentid WHERE vohead_recurring_vohead_id=OLD.vohead_id AND vohead_id!=OLD.vohead_id; END IF; END IF; RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._voheadbeforetrigger() OWNER TO admin; -- -- Name: _voitemaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _voitemaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; -- Cache Voucher Head SELECT * INTO _r FROM vohead WHERE (vohead_id=NEW.voitem_vohead_id); IF (NOT FOUND) THEN RAISE EXCEPTION 'Voucher head not found'; END IF; -- Calculate Tax PERFORM calculateTaxHist( 'voitemtax', NEW.voitem_id, COALESCE(_r.vohead_taxzone_id, -1), NEW.voitem_taxtype_id, COALESCE(_r.vohead_docdate, CURRENT_DATE), COALESCE(_r.vohead_curr_id, -1), COALESCE(SUM(vodist_amount * -1), 0) ) FROM vodist WHERE ( (vodist_vohead_id=_r.vohead_id) AND (vodist_poitem_id=NEW.voitem_poitem_id) ); RETURN NEW; END; $$; ALTER FUNCTION public._voitemaftertrigger() OWNER TO admin; -- -- Name: _voitembeforetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _voitembeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN IF (TG_OP = 'DELETE') THEN DELETE FROM voitemtax WHERE (taxhist_parent_id=OLD.voitem_id); RETURN OLD; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._voitembeforetrigger() OWNER TO admin; -- -- Name: _warehoustrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _warehoustrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _check BOOLEAN; _checkId INTEGER; BEGIN -- Checks -- Start with privileges IF (TG_OP = 'INSERT') THEN SELECT checkPrivilege('MaintainWarehouses') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to add new Sites.'; END IF; ELSE SELECT checkPrivilege('MaintainWarehouses') OR checkPrivilege('IssueCountTags') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to alter a Site.'; END IF; END IF; -- Code is required IF (LENGTH(COALESCE(NEW.warehous_code,''))=0) THEN RAISE EXCEPTION 'You must supply a valid Site Code.'; END IF; -- Sitetype is required IF (NEW.warehous_sitetype_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Site Type.'; END IF; -- Cost Category is required for Transit types IF ((NEW.warehous_transit) AND (NEW.warehous_costcat_id IS NULL)) THEN RAISE EXCEPTION 'You must supply a valid Cost Category for Transit Sites.'; END IF; -- Code must be unique SELECT warehous_id INTO _checkId FROM whsinfo WHERE ( (UPPER(warehous_code)=UPPER(NEW.warehous_code)) AND (warehous_id<>NEW.warehous_id) ); IF (FOUND) THEN RAISE EXCEPTION 'You must supply a unique Site Code.'; END IF; -- Count Tag Prefix must be unique IF (TG_OP = 'INSERT') THEN SELECT warehous_id INTO _checkId FROM whsinfo WHERE (warehous_counttag_prefix=NEW.warehous_counttag_prefix); ELSE SELECT warehous_id INTO _checkId FROM whsinfo WHERE ( (warehous_counttag_prefix=NEW.warehous_counttag_prefix) AND (warehous_id<>NEW.warehous_id) ); END IF; IF (FOUND) THEN RAISE EXCEPTION 'You must supply a unique Count Tag Prefix.'; END IF; -- Check Complete -- Change Log IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='WarehouseChangeLog') ) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'WH', NEW.warehous_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.warehous_code <> NEW.warehous_code) THEN PERFORM postComment( _cmnttypeid, 'WH', NEW.warehous_id, ('Code Changed from "' || OLD.warehous_code || '" to "' || NEW.warehous_code || '"') ); END IF; IF (OLD.warehous_descrip <> NEW.warehous_descrip) THEN PERFORM postComment( _cmnttypeid, 'WH', NEW.warehous_id, ( 'Description Changed from "' || OLD.warehous_descrip || '" to "' || NEW.warehous_descrip || '"' ) ); END IF; IF (OLD.warehous_active <> NEW.warehous_active) THEN IF (NEW.warehous_active) THEN PERFORM postComment(_cmnttypeid, 'WH', NEW.warehous_id, 'Activated'); ELSE PERFORM postComment(_cmnttypeid, 'WH', NEW.warehous_id, 'Deactivated'); END IF; END IF; END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._warehoustrigger() OWNER TO admin; -- -- Name: _whsezonetrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _whsezonetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _checkId INTEGER; BEGIN -- Checks -- Start with privileges IF (TG_OP = 'INSERT') THEN SELECT checkPrivilege('MaintainWarehouses') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to add new Site Zones.'; END IF; ELSE SELECT checkPrivilege('MaintainWarehouses') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to alter a Site Zone.'; END IF; END IF; -- Name is required IF (LENGTH(COALESCE(NEW.whsezone_name,''))=0) THEN RAISE EXCEPTION 'You must supply a valid Site Zone Name.'; END IF; -- Site is required IF (NEW.whsezone_warehous_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Site.'; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._whsezonetrigger() OWNER TO admin; -- -- Name: _womatlaftertrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _womatlaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN IF (TG_OP = 'INSERT') THEN -- Create any required P/R's PERFORM createPr('W', NEW.womatl_id) FROM itemsite WHERE ((itemsite_id=NEW.womatl_itemsite_id) AND (itemsite_createpr)); END IF; RETURN NEW; END; $$; ALTER FUNCTION public._womatlaftertrigger() OWNER TO admin; -- -- Name: _wotrigger(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION _wotrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='WorkOrderChangeLog') ) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); ELSE _cmnttypeid := -1; END IF; IF (TG_OP = 'INSERT') THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'W', NEW.wo_id, itemsite_warehous_id, (NEW.wo_number || '-' || NEW.wo_subnumber) FROM evntnot, evnttype, itemsite, item WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (itemsite_id=NEW.wo_itemsite_id) AND (itemsite_item_id=item_id) AND (NEW.wo_duedate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name='WoCreated') ); IF (_cmnttypeid <> -1) THEN PERFORM postComment(_cmnttypeid, 'W', NEW.wo_id, 'Created'); END IF; IF (fetchMetricText('WONumberGeneration') IN ('A','O')) THEN --- clear the number from the issue cache PERFORM clearNumberIssue('WoNumber', NEW.wo_number); END IF; RETURN NEW; ELSE IF (TG_OP = 'DELETE') THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'W', OLD.wo_id, itemsite_warehous_id, (OLD.wo_number || '-' || OLD.wo_subnumber) FROM evntnot, evnttype, itemsite, item WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (itemsite_id=OLD.wo_itemsite_id) AND (itemsite_item_id=item_id) AND (OLD.wo_duedate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name='WoCancelled') ); DELETE FROM docass WHERE docass_source_id = OLD.wo_id AND docass_source_type = 'W'; DELETE FROM docass WHERE docass_target_id = OLD.wo_id AND docass_target_type = 'W'; DELETE FROM comment WHERE ( (comment_source='W') AND (comment_source_id=OLD.wo_id) ); DELETE FROM charass WHERE ((charass_target_type='W') AND (charass_target_id=OLD.wo_id)); RETURN OLD; ELSE IF (TG_OP = 'UPDATE') THEN IF (NEW.wo_qtyord <> OLD.wo_qtyord) THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number, evntlog_oldvalue, evntlog_newvalue ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'W', NEW.wo_id, itemsite_warehous_id, (NEW.wo_number || '-' || NEW.wo_subnumber), OLD.wo_qtyord, NEW.wo_qtyord FROM evntnot, evnttype, itemsite, item WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (itemsite_id=NEW.wo_itemsite_id) AND (itemsite_item_id=item_id) AND ( (NEW.wo_duedate <= (CURRENT_DATE + itemsite_eventfence)) OR (OLD.wo_duedate <= (CURRENT_DATE + itemsite_eventfence)) ) AND (evnttype_name='WoQtyChanged') ); IF (_cmnttypeid <> -1) THEN PERFORM postComment( _cmnttypeid, 'W', NEW.wo_id, ( 'Qty. Ordered Changed from ' || formatQty(OLD.wo_qtyord) || ' to ' || formatQty(NEW.wo_qtyord ) ) ); END IF; END IF; IF (NEW.wo_duedate <> OLD.wo_duedate) THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number, evntlog_olddate, evntlog_newdate ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'W', NEW.wo_id, itemsite_warehous_id, (NEW.wo_number || '-' || NEW.wo_subnumber), OLD.wo_duedate, NEW.wo_duedate FROM evntnot, evnttype, itemsite, item WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (itemsite_id=NEW.wo_itemsite_id) AND (itemsite_item_id=item_id) AND ( (NEW.wo_duedate <= (CURRENT_DATE + itemsite_eventfence)) OR (OLD.wo_duedate <= (CURRENT_DATE + itemsite_eventfence)) ) AND (evnttype_name='WoDueDateChanged') ); IF (_cmnttypeid <> -1) THEN PERFORM postComment( _cmnttypeid, 'W', NEW.wo_id, ( 'Due Date Changed from ' || formatDate(OLD.wo_duedate) || ' to ' || formatDate(NEW.wo_duedate ) ) ); END IF; END IF; IF (NEW.wo_status <> OLD.wo_status) THEN IF (_cmnttypeid <> -1) THEN PERFORM postComment( _cmnttypeid, 'W', NEW.wo_id, ('Status Changed from ' || OLD.wo_status || ' to ' || NEW.wo_status) ); END IF; END IF; END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public._wotrigger() OWNER TO admin; -- -- Name: acknowledgemessage(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION acknowledgemessage(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pMsgid ALIAS FOR $1; BEGIN UPDATE msguser SET msguser_viewed=CURRENT_TIMESTAMP WHERE ( (msguser_msg_id=pMsgid) AND (msguser_username=getEffectiveXtUser()) ); RETURN TRUE; END; $_$; ALTER FUNCTION public.acknowledgemessage(integer) OWNER TO admin; -- -- Name: actcost(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION actcost(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN actCost($1, NULL, baseCurrId()); END; $_$; ALTER FUNCTION public.actcost(integer) OWNER TO admin; -- -- Name: actcost(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION actcost(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN actCost($1, $2, baseCurrId()); END; $_$; ALTER FUNCTION public.actcost(integer, integer) OWNER TO admin; -- -- Name: actcost(integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION actcost(integer, integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pBomitemid ALIAS FOR $2; pCurrid ALIAS FOR $3; _cost NUMERIC; BEGIN -- Return actual cost in the given currency at the current conversion rate SELECT SUM(CASE WHEN (bomitemcost_id IS NOT NULL) THEN ROUND(currToCurr(bomitemcost_curr_id, pCurrid, bomitemcost_actcost, CURRENT_DATE), 6) ELSE ROUND(currToCurr(itemcost_curr_id, pCurrid, itemcost_actcost, CURRENT_DATE), 6) END) INTO _cost FROM itemcost LEFT OUTER JOIN bomitemcost ON (bomitemcost_bomitem_id=pBomitemid AND bomitemcost_costelem_id=itemcost_costelem_id) WHERE (itemcost_item_id=pItemid); IF (_cost IS NULL) THEN RETURN 0; ELSE RETURN _cost; END IF; END; $_$; ALTER FUNCTION public.actcost(integer, integer, integer) OWNER TO admin; -- -- Name: addrusecount(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION addrusecount(integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAddrId ALIAS FOR $1; _fk RECORD; _r RECORD; _seq INTEGER; _col TEXT; _qry TEXT; _count INTEGER = 0; BEGIN -- Determine where this address is used by analyzing foreign key linkages -- TO DO: Can this be rationalized with cntctused(int)? FOR _fk IN SELECT pg_namespace.nspname AS schemaname, con.relname AS tablename, conkey AS seq, conrelid AS class_id FROM pg_constraint, pg_class f, pg_class con, pg_namespace WHERE confrelid=f.oid AND conrelid=con.oid AND f.relname = 'addr' AND con.relnamespace=pg_namespace.oid AND con.relname NOT IN ('pohead') -- exception(s) where address key doesn't actually drive document information LOOP -- Validate IF (ARRAY_UPPER(_fk.seq,1) > 1) THEN RAISE EXCEPTION 'Checks to tables where the address is one of multiple foreign key columns is not supported. Error on Table: %', pg_namespace.nspname || '.' || con.relname; END IF; _seq := _fk.seq[1]; -- Get the specific column name SELECT attname INTO _col FROM pg_attribute, pg_class WHERE ((attrelid=pg_class.oid) AND (pg_class.oid=_fk.class_id) AND (attnum=_seq)); -- See if there are dependencies _qry := 'SELECT * FROM ' || _fk.schemaname || '.' || _fk.tablename || ' WHERE ('|| _col || '=' || pAddrId || ');'; FOR _r IN EXECUTE _qry LOOP _count := _count + 1; END LOOP; END LOOP; RETURN _count; END; $_$; ALTER FUNCTION public.addrusecount(integer) OWNER TO admin; -- -- Name: addtaxtoglseries(integer, text, text, text, integer, date, date, text, integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION addtaxtoglseries(integer, text, text, text, integer, date, date, text, integer, text) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pSource ALIAS FOR $2; pDocType ALIAS FOR $3; pDocNumber ALIAS FOR $4; pCurrId ALIAS FOR $5; pExchDate ALIAS FOR $6; pDistDate ALIAS FOR $7; pTableName ALIAS FOR $8; pParentId ALIAS FOR $9; pNotes ALIAS FOR $10; _count INTEGER := 0; _baseTax NUMERIC := 0; _returnVal NUMERIC := 0; _t RECORD; _test INTEGER := 0; BEGIN -- This is just a fancy select statement on taxhist. -- Because all tax records tables inherit from taxhist, -- we can use the same select statement for all. -- https://www.postgresql.org/docs/8.1/static/ddl-inherit.html -- pTableName in the where clause narrows down the selection -- to the correct sub table. FOR _t IN SELECT * FROM taxhist JOIN tax ON (tax_id = taxhist_tax_id) JOIN pg_class ON (pg_class.oid = taxhist.tableoid) WHERE ( (taxhist_parent_id = pParentId) AND (relname = pTableName) ) LOOP _count := _count + 1; _baseTax := currToBase(pCurrId, _t.taxhist_tax, pExchDate); _returnVal := _returnVal + _baseTax; PERFORM insertIntoGLSeries( pSequence, pSource, pDocType, pDocNumber, _t.tax_sales_accnt_id, _baseTax, pDistDate, pNotes ); UPDATE taxhist SET taxhist_docdate=pExchDate, taxhist_distdate=pDistDate, taxhist_curr_id=pCurrId, taxhist_curr_rate=curr_rate FROM curr_rate WHERE ((taxhist_id=_t.taxhist_id) AND (pCurrId=curr_id) AND ( pExchDate BETWEEN curr_effective AND curr_expires) ); END LOOP; RETURN _returnVal; END; $_$; ALTER FUNCTION public.addtaxtoglseries(integer, text, text, text, integer, date, date, text, integer, text) OWNER TO admin; -- -- Name: addtopackinglistbatch(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION addtopackinglistbatch(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; returnVal INTEGER; BEGIN -- MIN because error codes are negative SELECT MIN(addToPackingListBatch('SO', pSoheadid, shiphead_id)) INTO returnVal FROM shiphead WHERE ((shiphead_order_id=pSoheadid) AND (NOT shiphead_shipped) AND (shiphead_order_type='SO')); IF (NOT FOUND OR returnVal IS NULL) THEN returnVal := addToPackingListBatch('SO', pSoheadid, NULL); END IF; RETURN returnVal; END; $_$; ALTER FUNCTION public.addtopackinglistbatch(integer) OWNER TO admin; -- -- Name: addtopackinglistbatch(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION addtopackinglistbatch(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN addToPackingListBatch('SO', $1, $2); END; $_$; ALTER FUNCTION public.addtopackinglistbatch(integer, integer) OWNER TO admin; -- -- Name: addtopackinglistbatch(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION addtopackinglistbatch(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pheadtype ALIAS FOR $1; pheadid ALIAS FOR $2; returnVal INTEGER; BEGIN -- MIN because error codes are negative SELECT MIN(addToPackingListBatch(pheadtype, pheadid, shiphead_id)) INTO returnVal FROM shiphead WHERE ((shiphead_order_id=pheadid) AND (NOT shiphead_shipped) AND (shiphead_order_type=pheadtype)); IF (NOT FOUND OR returnVal IS NULL) THEN returnVal := addToPackingListBatch(pheadtype, pheadid, NULL); END IF; RETURN returnVal; END; $_$; ALTER FUNCTION public.addtopackinglistbatch(text, integer) OWNER TO admin; -- -- Name: addtopackinglistbatch(text, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION addtopackinglistbatch(text, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pheadtype ALIAS FOR $1; pheadid ALIAS FOR $2; pshipheadid ALIAS FOR $3; _check INTEGER; BEGIN SELECT pack_id INTO _check FROM pack WHERE ((pack_head_id=pheadid) AND ((pack_shiphead_id=pshipheadid) OR (pshipheadid IS NULL AND pack_shiphead_id IS NULL)) AND (pack_head_type=pheadtype) ); IF (NOT FOUND) THEN INSERT INTO pack ( pack_head_type, pack_head_id, pack_shiphead_id, pack_printed ) VALUES ( pheadtype, pheadid, pshipheadid, FALSE ); -- Auto Firm Sales Orders conditionally based on metric IF ( (pheadtype = 'SO') AND (fetchMetricBool('FirmSalesOrderPackingList')) ) THEN UPDATE coitem SET coitem_firm=TRUE WHERE (coitem_cohead_id=pheadid); END IF; END IF; RETURN pheadid; END; $_$; ALTER FUNCTION public.addtopackinglistbatch(text, integer, integer) OWNER TO admin; -- -- Name: adjustinvvalue(integer, numeric, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION adjustinvvalue(integer, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pNewValue ALIAS FOR $2; pAccountid ALIAS FOR $3; _delta NUMERIC; _glreturn INTEGER; _invhistid INTEGER; _itemlocSeries INTEGER; BEGIN SELECT pNewValue - itemsite_value INTO _delta FROM itemsite WHERE (itemsite_id=pItemsiteid) FOR UPDATE; IF (NOT FOUND) THEN RETURN -1; END IF; SELECT insertGLTransaction('I/M', '', 'Post Value', 'Inventory Value Adjustment for ' || item_number, COALESCE (pAccountid, costcat_adjustment_accnt_id), costcat_asset_accnt_id, -1, _delta, CURRENT_DATE) INTO _glreturn FROM itemsite JOIN costcat ON (itemsite_costcat_id=costcat_id) JOIN item ON (itemsite_item_id=item_id) WHERE (itemsite_id=pItemsiteid); -- Create the AD transaction INSERT INTO invhist ( invhist_itemsite_id, invhist_transdate, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_docnumber, invhist_comments, invhist_invuom, invhist_unitcost, invhist_hasdetail, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_series ) SELECT itemsite_id, CURRENT_TIMESTAMP, 'AD', 0.0, itemsite_qtyonhand, itemsite_qtyonhand, '', 'Inventory Value Adjustment', uom_name, _delta, FALSE, itemsite_costmethod, itemsite_value, pNewValue, 0 FROM itemsite, item, uom WHERE ( (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_id=pItemsiteid) ); UPDATE itemsite SET itemsite_value=pNewValue WHERE (itemsite_id=pItemsiteid); RETURN 0; END; $_$; ALTER FUNCTION public.adjustinvvalue(integer, numeric, integer) OWNER TO admin; -- -- Name: adjustments(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION adjustments(text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTransType ALIAS FOR $1; BEGIN IF (pTransType IN ('CC', 'AD')) THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END; $_$; ALTER FUNCTION public.adjustments(text) OWNER TO admin; -- -- Name: allocatedforso(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION allocatedforso(integer, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pDate ALIAS FOR $2; BEGIN RETURN allocatedForSo(pItemsiteid, startOfTime(), pDate); END; $_$; ALTER FUNCTION public.allocatedforso(integer, date) OWNER TO admin; -- -- Name: allocatedforso(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION allocatedforso(integer, integer) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pDate ALIAS FOR $2; BEGIN RETURN allocatedForSo(pItemsiteid, startOfTime(), (CURRENT_DATE + pDate)); END; $_$; ALTER FUNCTION public.allocatedforso(integer, integer) OWNER TO admin; -- -- Name: allocatedforso(integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION allocatedforso(integer, date, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _qty NUMERIC; BEGIN SELECT COALESCE(SUM(noNeg(itemuomtouom(itemsite_item_id, coitem_qty_uom_id, NULL, coitem_qtyord - (coitem_qtyshipped + qtyAtShipping(coitem_id)) + coitem_qtyreturned))), 0.0) INTO _qty FROM coitem, itemsite, item WHERE ( (coitem_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (coitem_status='O') AND (coitem_itemsite_id=pItemsiteid) AND (coitem_scheddate BETWEEN pStartDate AND pEndDate) ); RETURN _qty; END; $_$; ALTER FUNCTION public.allocatedforso(integer, date, date) OWNER TO admin; -- -- Name: allocatedforwo(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION allocatedforwo(integer, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pDate ALIAS FOR $2; BEGIN RETURN allocatedForWo(pItemsiteid, startOfTime(), pDate); END; $_$; ALTER FUNCTION public.allocatedforwo(integer, date) OWNER TO admin; -- -- Name: allocatedforwo(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION allocatedforwo(integer, integer) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pLookAheadDays ALIAS FOR $2; BEGIN RETURN allocatedForWo(pItemsiteid, startOfTime(), (CURRENT_DATE + pLookaheadDays)); END; $_$; ALTER FUNCTION public.allocatedforwo(integer, integer) OWNER TO admin; -- -- Name: allocatedforwo(integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION allocatedforwo(integer, date, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _itemtype TEXT; _qty NUMERIC; BEGIN SELECT item_type INTO _itemtype FROM itemsite JOIN item ON (item_id=itemsite_item_id) WHERE (itemsite_id=pItemsiteid); IF (_itemtype != 'T') THEN SELECT COALESCE(SUM(noNeg(itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyreq - womatl_qtyiss))), 0.0) INTO _qty FROM womatl JOIN wo ON (wo_id=womatl_wo_id AND wo_status IN ('E','I','R')) JOIN itemsite ON (itemsite_id=womatl_itemsite_id) WHERE (womatl_itemsite_id=pItemsiteid) AND (womatl_duedate BETWEEN pStartDate AND pEndDate); ELSE SELECT COALESCE(SUM(noNeg(itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyreq))), 0.0) - ( SELECT COALESCE(SUM(invhist_invqty),0) FROM itemsite, item, wo, womatl LEFT OUTER JOIN womatlpost ON (womatl_id=womatlpost_womatl_id) LEFT OUTER JOIN invhist ON ((womatlpost_invhist_id=invhist_id) AND (invhist_invqty > 0)) WHERE ( (womatl_itemsite_id=pItemsiteid) AND (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (womatl_duedate BETWEEN pStartDate AND pEndDate) AND (wo_id=womatl_wo_id) AND (wo_status IN ('E','I','R')) ) ) INTO _qty FROM womatl JOIN wo ON (wo_id=womatl_wo_id AND wo_status IN ('E','I','R')) JOIN itemsite ON (itemsite_id=womatl_itemsite_id) WHERE (womatl_itemsite_id=pItemsiteid) AND (womatl_duedate BETWEEN pStartDate AND pEndDate); END IF; RETURN COALESCE(_qty,0); END; $_$; ALTER FUNCTION public.allocatedforwo(integer, date, date) OWNER TO admin; -- -- Name: alterencrypt(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION alterencrypt(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOldKey ALIAS FOR $1; pNewKey ALIAS FOR $2; _cc RECORD; _ccaud RECORD; _metricenc RECORD; num_updated INTEGER; BEGIN num_updated := 0; -- Update ccard FOR _cc IN SELECT ccard_id, decrypt(setbytea(ccard_name), setbytea(pOldKey), 'bf') AS ccard_name, decrypt(setbytea(ccard_address1), setbytea(pOldKey), 'bf') AS ccard_address1, decrypt(setbytea(ccard_address2), setbytea(pOldKey), 'bf') AS ccard_address2, decrypt(setbytea(ccard_city), setbytea(pOldKey), 'bf') AS ccard_city, decrypt(setbytea(ccard_state), setbytea(pOldKey), 'bf') AS ccard_state, decrypt(setbytea(ccard_zip), setbytea(pOldKey), 'bf') AS ccard_zip, decrypt(setbytea(ccard_country), setbytea(pOldKey), 'bf') AS ccard_country, decrypt(setbytea(ccard_number), setbytea(pOldKey), 'bf') AS ccard_number, decrypt(setbytea(ccard_month_expired), setbytea(pOldKey), 'bf') AS ccard_month_expired, decrypt(setbytea(ccard_year_expired), setbytea(pOldKey), 'bf') AS ccard_year_expired FROM ccard LOOP UPDATE ccard set ccard_name = encrypt(setbytea(_cc.ccard_name), setbytea(pNewKey), 'bf'), ccard_address1 = encrypt(setbytea(_cc.ccard_address1), setbytea(pNewKey), 'bf'), ccard_address2 = encrypt(setbytea(_cc.ccard_address2), setbytea(pNewKey), 'bf'), ccard_city = encrypt(setbytea(_cc.ccard_city), setbytea(pNewKey), 'bf'), ccard_state = encrypt(setbytea(_cc.ccard_state), setbytea(pNewKey), 'bf'), ccard_zip = encrypt(setbytea(_cc.ccard_zip), setbytea(pNewKey), 'bf'), ccard_country = encrypt(setbytea(_cc.ccard_country), setbytea(pNewKey), 'bf'), ccard_number = encrypt(setbytea(_cc.ccard_number), setbytea(pNewKey), 'bf'), ccard_month_expired = encrypt(setbytea(_cc.ccard_month_expired), setbytea(pNewKey), 'bf'), ccard_year_expired = encrypt(setbytea(_cc.ccard_year_expired), setbytea(pNewKey), 'bf') WHERE ccard_id = _cc.ccard_id; num_updated := num_updated + 1; END LOOP; -- Update ccardaud FOR _ccaud IN SELECT ccardaud_id, decrypt(setbytea(ccardaud_ccard_name_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_name_old, decrypt(setbytea(ccardaud_ccard_name_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_name_new, decrypt(setbytea(ccardaud_ccard_address1_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_address1_old, decrypt(setbytea(ccardaud_ccard_address1_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_address1_new, decrypt(setbytea(ccardaud_ccard_address2_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_address2_old, decrypt(setbytea(ccardaud_ccard_address2_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_address2_new, decrypt(setbytea(ccardaud_ccard_city_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_city_old, decrypt(setbytea(ccardaud_ccard_city_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_city_new, decrypt(setbytea(ccardaud_ccard_state_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_state_old, decrypt(setbytea(ccardaud_ccard_state_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_state_new, decrypt(setbytea(ccardaud_ccard_zip_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_zip_old, decrypt(setbytea(ccardaud_ccard_zip_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_zip_new, decrypt(setbytea(ccardaud_ccard_country_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_country_old, decrypt(setbytea(ccardaud_ccard_country_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_country_new, decrypt(setbytea(ccardaud_ccard_number_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_number_old, decrypt(setbytea(ccardaud_ccard_number_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_number_new, decrypt(setbytea(ccardaud_ccard_month_expired_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_month_expired_old, decrypt(setbytea(ccardaud_ccard_month_expired_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_month_expired_new, decrypt(setbytea(ccardaud_ccard_year_expired_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_year_expired_old, decrypt(setbytea(ccardaud_ccard_year_expired_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_year_expired_new FROM ccardaud LOOP UPDATE ccardaud set ccardaud_ccard_name_old = encrypt(setbytea(_ccaud.ccardaud_ccard_name_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_name_new = encrypt(setbytea(_ccaud.ccardaud_ccard_name_new), setbytea(pNewKey), 'bf'), ccardaud_ccard_address1_old = encrypt(setbytea(_ccaud.ccardaud_ccard_address1_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_address1_new = encrypt(setbytea(_ccaud.ccardaud_ccard_address1_new), setbytea(pNewKey), 'bf'), ccardaud_ccard_address2_old = encrypt(setbytea(_ccaud.ccardaud_ccard_address2_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_address2_new = encrypt(setbytea(_ccaud.ccardaud_ccard_address2_new), setbytea(pNewKey), 'bf'), ccardaud_ccard_city_old = encrypt(setbytea(_ccaud.ccardaud_ccard_city_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_city_new = encrypt(setbytea(_ccaud.ccardaud_ccard_city_new), setbytea(pNewKey), 'bf'), ccardaud_ccard_state_old = encrypt(setbytea(_ccaud.ccardaud_ccard_state_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_state_new = encrypt(setbytea(_ccaud.ccardaud_ccard_state_new), setbytea(pNewKey), 'bf'), ccardaud_ccard_zip_old = encrypt(setbytea(_ccaud.ccardaud_ccard_zip_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_zip_new = encrypt(setbytea(_ccaud.ccardaud_ccard_zip_new), setbytea(pNewKey), 'bf'), ccardaud_ccard_country_old = encrypt(setbytea(_ccaud.ccardaud_ccard_country_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_country_new = encrypt(setbytea(_ccaud.ccardaud_ccard_country_new), setbytea(pNewKey), 'bf'), ccardaud_ccard_number_old = encrypt(setbytea(_ccaud.ccardaud_ccard_number_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_number_new = encrypt(setbytea(_ccaud.ccardaud_ccard_number_new), setbytea(pNewKey), 'bf'), ccardaud_ccard_month_expired_old = encrypt(setbytea(_ccaud.ccardaud_ccard_month_expired_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_month_expired_new = encrypt(setbytea(_ccaud.ccardaud_ccard_month_expired_new), setbytea(pNewKey), 'bf'), ccardaud_ccard_year_expired_old = encrypt(setbytea(_ccaud.ccardaud_ccard_year_expired_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_year_expired_new = encrypt(setbytea(_ccaud.ccardaud_ccard_year_expired_new), setbytea(pNewKey), 'bf') WHERE ccardaud_id = _ccaud.ccardaud_id; num_updated := num_updated + 1; END LOOP; -- Update metricenc FOR _metricenc IN SELECT metricenc_id, decrypt(setbytea(metricenc_value), setbytea(pOldKey), 'bf') AS metricenc_value FROM metricenc LOOP UPDATE metricenc set metricenc_value = encrypt(setbytea(_metricenc.metricenc_value), setbytea(pNewKey), 'bf') WHERE metricenc_id = _metricenc.metricenc_id; num_updated := num_updated + 1; END LOOP; RETURN num_updated; END; $_$; ALTER FUNCTION public.alterencrypt(text, text) OWNER TO admin; -- -- Name: apaging(date, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION apaging(date, boolean) RETURNS SETOF apaging LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAsOfDate ALIAS FOR $1; pUseDocDate ALIAS FOR $2; _row apaging%ROWTYPE; _x RECORD; _returnVal INTEGER; _asOfDate DATE; BEGIN _asOfDate := COALESCE(pAsOfDate,current_date); FOR _x IN SELECT --report uses currency rate snapshot to convert all amounts to base based on apopen_docdate to ensure the same exchange rate --today and greater base: CASE WHEN((apopen_duedate >= DATE(_asOfDate))) THEN (((apopen_amount-apopen_paid+COALESCE(SUM(apapply_target_paid),0)))/apopen_curr_rate * CASE WHEN (apopen_doctype IN ('D', 'V')) THEN 1 ELSE -1 END) ELSE 0 END AS cur_val, --0 to 30 base CASE WHEN((apopen_duedate >= DATE(_asOfDate)-30) AND (apopen_duedate < DATE(_asOfDate))) THEN (((apopen_amount-apopen_paid+COALESCE(SUM(apapply_target_paid),0)))/apopen_curr_rate * CASE WHEN (apopen_doctype IN ('D', 'V')) THEN 1 ELSE -1 END) ELSE 0 END AS thirty_val, --30-60 base CASE WHEN((apopen_duedate >= DATE(_asOfDate)-60) AND (apopen_duedate < DATE(_asOfDate) - 30 )) THEN (((apopen_amount-apopen_paid+COALESCE(SUM(apapply_target_paid),0)))/apopen_curr_rate * CASE WHEN (apopen_doctype IN ('D', 'V')) THEN 1 ELSE -1 END) ELSE 0 END AS sixty_val, --60-90 base CASE WHEN((apopen_duedate >= DATE(_asOfDate)-90) AND (apopen_duedate < DATE(_asOfDate) - 60)) THEN (((apopen_amount-apopen_paid+COALESCE(SUM(apapply_target_paid),0)))/apopen_curr_rate * CASE WHEN (apopen_doctype IN ('D', 'V')) THEN 1 ELSE -1 END) ELSE 0 END AS ninety_val, --greater than 90 base: CASE WHEN((apopen_duedate > DATE(_asOfDate)-10000) AND (apopen_duedate < DATE(_asOfDate) - 90)) THEN (((apopen_amount-apopen_paid + COALESCE(SUM(apapply_target_paid),0)))/apopen_curr_rate * CASE WHEN (apopen_doctype IN ('D', 'V')) THEN 1 ELSE -1 END) ELSE 0 END AS plus_val, --total amount base: CASE WHEN((apopen_duedate > DATE(_asOfDate)-10000)) THEN (((apopen_amount-apopen_paid+COALESCE(SUM(apapply_target_paid),0)))/apopen_curr_rate * CASE WHEN (apopen_doctype IN ('D', 'V')) THEN 1 ELSE -1 END) ELSE 0 END AS total_val, --AP Open Amount base CASE WHEN apopen_doctype IN ('C', 'R') THEN (apopen_amount * -1) / apopen_curr_rate ELSE apopen_amount / apopen_curr_rate END AS apopen_amount, apopen_docdate, apopen_duedate, apopen_ponumber, apopen_invcnumber, apopen_docnumber, apopen_doctype, vend_id, vend_name, vend_number, vend_vendtype_id, vendtype_code, terms_descrip, determineDiscountDate(terms_id, apopen_docdate) AS discdate, noNeg(apopen_discountable_amount * CASE WHEN (CURRENT_DATE <= determineDiscountDate(terms_id, apopen_docdate)) THEN terms_discprcnt ELSE 0.0 END) AS disc_val, terms_discdays AS discdays, (terms_discprcnt * 100.0) AS discprcnt FROM vendinfo, vendtype, apopen LEFT OUTER JOIN terms ON (apopen_terms_id=terms_id) LEFT OUTER JOIN apapply ON (((apopen_id=apapply_target_apopen_id) OR (apopen_id=apapply_source_apopen_id)) AND (apapply_postdate >_asOfDate)) WHERE ( (apopen_vend_id = vend_id) AND (vend_vendtype_id=vendtype_id) AND (CASE WHEN (pUseDocDate) THEN apopen_docdate ELSE apopen_distdate END <= _asOfDate) AND (COALESCE(apopen_closedate,_asOfDate+1)>_asOfDate) ) GROUP BY apopen_id,apopen_docdate,apopen_duedate,apopen_ponumber, apopen_invcnumber, apopen_docnumber,apopen_doctype,apopen_paid, apopen_curr_id,apopen_amount,vend_id,vend_name,vend_number,vend_vendtype_id,vendtype_code,terms_descrip, apopen_curr_rate, terms_id, terms_discdays, terms_discprcnt, apopen_discountable_amount ORDER BY vend_number, apopen_duedate LOOP _row.apaging_docdate := _x.apopen_docdate; _row.apaging_duedate := _x.apopen_duedate; _row.apaging_ponumber := _x.apopen_ponumber; _row.apaging_invcnumber := _x.apopen_invcnumber; _row.apaging_docnumber := _x.apopen_docnumber; _row.apaging_doctype := _x.apopen_doctype; _row.apaging_vend_id := _x.vend_id; _row.apaging_vend_number := _x.vend_number; _row.apaging_vend_name := _x.vend_name; _row.apaging_vend_vendtype_id := _x.vend_vendtype_id; _row.apaging_vendtype_code := _x.vendtype_code; _row.apaging_terms_descrip := _x.terms_descrip; _row.apaging_apopen_amount := _x.apopen_amount; _row.apaging_cur_val := _x.cur_val; _row.apaging_thirty_val := _x.thirty_val; _row.apaging_sixty_val := _x.sixty_val; _row.apaging_ninety_val := _x.ninety_val; _row.apaging_plus_val := _x.plus_val; _row.apaging_total_val := _x.total_val; _row.apaging_discdate := _x.discdate; _row.apaging_disc_val := _x.disc_val; _row.apaging_discdays := _x.discdays; _row.apaging_discprcnt := _x.discprcnt; RETURN NEXT _row; END LOOP; RETURN; END; $_$; ALTER FUNCTION public.apaging(date, boolean) OWNER TO admin; -- -- Name: apapplied(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION apapplied(integer, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenid ALIAS FOR $1; pDate ALIAS FOR $2; _amount NUMERIC; BEGIN -- Return amount applied to an apopen in base currency as of apapply_postdate SELECT SUM(currtobase(apapply_curr_id,apapply_amount,apapply_postdate)) INTO _amount FROM apapply WHERE (((apapply_target_apopen_id = pApopenid) OR (apapply_source_apopen_id = pApopenid)) AND (((apapply_journalnumber=0) AND (apapply_postdate <= pDate)) OR EXISTS(SELECT * FROM gltrans WHERE ((gltrans_journalnumber=apapply_journalnumber) AND (gltrans_date <= pDate))))); IF (_amount IS NULL) THEN RETURN 0; ELSE RETURN _amount; END IF; END; $_$; ALTER FUNCTION public.apapplied(integer, date) OWNER TO admin; -- -- Name: apcheckpending(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION apcheckpending(integer) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenid ALIAS FOR $1; _qty NUMERIC := 0.0; BEGIN SELECT SUM(checkitem_amount + checkitem_discount) INTO _qty FROM checkitem JOIN checkhead ON (checkitem_checkhead_id=checkhead_id) WHERE ((checkitem_apopen_id=pApopenid) AND (NOT checkhead_deleted) AND (NOT checkhead_replaced) AND (NOT checkhead_posted)); RETURN COALESCE(_qty, 0.0); END; $_$; ALTER FUNCTION public.apcheckpending(integer) OWNER TO admin; -- -- Name: apcurrgain(integer, integer, numeric, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION apcurrgain(integer, integer, numeric, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenId ALIAS FOR $1; pCurrId ALIAS FOR $2; pValue ALIAS FOR $3; pDate ALIAS FOR $4; _start DATE; _end DATE; _gain NUMERIC; _r RECORD; BEGIN IF (pApopenId IS NULL OR pValue = 0) THEN RETURN 0; END IF; SELECT apopen_docdate, apopen_curr_rate INTO _r FROM apopen WHERE (apopen_id=pApopenId); IF (_r.apopen_docdate > pDate) THEN _gain := (currToBase(pCurrId, pValue, pDate) - (pValue / _r.apopen_curr_rate)) * -1; ELSE _gain := (pValue / _r.apopen_curr_rate) - currToBase(pCurrId, pValue, pDate); END IF; IF (_gain IS NULL) THEN RAISE EXCEPTION 'Error processing currency gain/loss.'; END IF; RETURN _gain; END; $_$; ALTER FUNCTION public.apcurrgain(integer, integer, numeric, date) OWNER TO admin; -- -- Name: applyapcreditmemotobalance(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION applyapcreditmemotobalance(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenid ALIAS FOR $1; _amount NUMERIC; _curr_id INTEGER; _curr_rate NUMERIC; _docdate DATE; _applyAmount NUMERIC; _r RECORD; _p RECORD; BEGIN -- Find the balance to apply SELECT (apopen_amount - apopen_paid - COALESCE(prepared,0.0) - COALESCE(selected,0.0) - COALESCE(SUM(currToCurr(apcreditapply_curr_id, apopen_curr_id, apcreditapply_amount, apopen_docdate)), 0)), apopen_curr_id, apopen_curr_rate, apopen_docdate INTO _amount, _curr_id, _curr_rate, _docdate FROM apopen LEFT OUTER JOIN apcreditapply ON (apcreditapply_source_apopen_id=apopen_id) LEFT OUTER JOIN (SELECT apopen_id AS selected_apopen_id, SUM(currToCurr(apselect_curr_id, apopen_curr_id, apselect_amount + apselect_discount, apselect_date)) AS selected FROM apselect JOIN apopen ON (apselect_apopen_id=apopen_id) GROUP BY apopen_id) AS sub1 ON (apopen_id=selected_apopen_id) LEFT OUTER JOIN (SELECT apopen_id AS prepared_apopen_id, SUM(checkitem_amount + checkitem_discount) AS prepared FROM checkhead JOIN checkitem ON (checkitem_checkhead_id=checkhead_id) JOIN apopen ON (checkitem_apopen_id=apopen_id) WHERE ((NOT checkhead_posted) AND (NOT checkhead_void)) GROUP BY apopen_id) AS sub2 ON (prepared_apopen_id=apopen_id) WHERE (apopen_id=pApopenid) GROUP BY apopen_amount, apopen_paid, apopen_curr_id, apopen_curr_rate, apopen_docdate, prepared, selected; IF (_amount < 0) THEN RETURN -1; END IF; -- Loop through the apopen items in order of due date FOR _r IN SELECT target.apopen_id AS apopenid, currToCurr(target.apopen_curr_id,source.apopen_curr_id, target.apopen_amount - target.apopen_paid - COALESCE(prepared,0.0) - COALESCE(selected,0.0) - COALESCE(applied,0.0), current_date) AS balance FROM apopen AS source, apopen AS target LEFT OUTER JOIN (SELECT apcreditapply_target_apopen_id AS applied_apopen_id, SUM(currToCurr(apcreditapply_curr_id, apopen_curr_id, apcreditapply_amount, apopen_docdate)) AS applied FROM apcreditapply JOIN apopen ON (apopen_id=apcreditapply_source_apopen_id) GROUP BY apcreditapply_target_apopen_id) AS sub3 ON (target.apopen_id=applied_apopen_id) LEFT OUTER JOIN (SELECT apopen_id AS selected_apopen_id, SUM(currToCurr(apselect_curr_id, apopen_curr_id, apselect_amount + apselect_discount, apselect_date)) AS selected FROM apselect JOIN apopen ON (apselect_apopen_id=apopen_id) GROUP BY apopen_id) AS sub1 ON (target.apopen_id=selected_apopen_id) LEFT OUTER JOIN (SELECT apopen_id AS prepared_apopen_id, SUM(checkitem_amount + checkitem_discount) AS prepared FROM checkhead JOIN checkitem ON (checkitem_checkhead_id=checkhead_id) JOIN apopen ON (checkitem_apopen_id=apopen_id) WHERE ((NOT checkhead_posted) AND (NOT checkhead_void)) GROUP BY apopen_id) AS sub2 ON (prepared_apopen_id=target.apopen_id) WHERE ( (source.apopen_vend_id=target.apopen_vend_id) AND (target.apopen_doctype IN ('V', 'D')) AND (target.apopen_open) AND (source.apopen_id=pApopenid) ) ORDER BY target.apopen_duedate, (target.apopen_amount - target.apopen_paid) LOOP -- Determine the amount to apply IF (_r.balance <= 0.0) THEN CONTINUE; ELSEIF (_r.balance > _amount) THEN _applyAmount := _amount; ELSE _applyAmount := _r.balance; END IF; -- Does an apcreditapply record already exist? SELECT apcreditapply_id, apcreditapply_amount * _curr_rate / currRate(apcreditapply_curr_id,_docdate) AS apcreditapply_amount INTO _p FROM apcreditapply WHERE ( (apcreditapply_target_apopen_id=_r.apopenid) AND (apcreditapply_source_apopen_id=pApopenid) ); IF (FOUND) THEN -- The following is depreciated, just skip the record -- Recalculate the amount to apply -- IF ((_r.balance - _p.apcreditapply_amount) > _amount) THEN -- _applyAmount := _amount; -- ELSE -- _applyAmount := (_r.balance - _p.apcreditapply_amount); -- END IF; -- Update the apcreditapply with the new amount to apply -- UPDATE apcreditapply -- SET apcreditapply_amount = (apcreditapply_amount + -- _applyAmount * currRate(apcreditapply_curr_id,_docdate) / _curr_rate) -- WHERE (apcreditapply_id=_p.apcreditapply_id); CONTINUE; ELSE -- Create a new apcreditapply record INSERT INTO apcreditapply ( apcreditapply_source_apopen_id, apcreditapply_target_apopen_id, apcreditapply_amount, apcreditapply_curr_id ) VALUES ( pApopenid, _r.apopenid, _applyAmount, _curr_id ); END IF; _amount := (_amount - _applyAmount); IF (_amount = 0) THEN EXIT; END IF; END LOOP; RETURN 1; END; $_$; ALTER FUNCTION public.applyapcreditmemotobalance(integer) OWNER TO admin; -- -- Name: applyapcredits(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION applyapcredits(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendId ALIAS FOR $1; _result INTEGER; _apopenid INTEGER; _r RECORD; BEGIN -- Fetch credit memo(s) for the vendor FOR _r IN SELECT apopen_id, apopen_duedate FROM apopen JOIN vendinfo ON (apopen_vend_id = vend_id) WHERE ((apopen_doctype = 'C') AND (apopen_status = 'O') AND (vend_id = pVendId)) ORDER BY apopen_duedate LOOP -- Apply credit memo(s) according to due date SELECT applyapcreditmemotobalance(_r.apopen_id) INTO _result; -- Post the credit memo if applied IF (_result = 1) THEN SELECT postapcreditmemoapplication(_r.apopen_id) INTO _apopenid; IF (_apopenid < 0) THEN RETURN -1; END IF; ELSE RETURN -1; END IF; END LOOP; RETURN 1; END; $_$; ALTER FUNCTION public.applyapcredits(integer) OWNER TO admin; -- -- Name: applyarcreditmemotobalance(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION applyarcreditmemotobalance(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAropenid ALIAS FOR $1; BEGIN RETURN applyARCreditMemoToBalance(pAropenid, NULL); END; $_$; ALTER FUNCTION public.applyarcreditmemotobalance(integer) OWNER TO admin; -- -- Name: applyarcreditmemotobalance(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION applyarcreditmemotobalance(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSourceAropenid ALIAS FOR $1; pTargetAropenid ALIAS FOR $2; _amount NUMERIC; _amountcurrid INTEGER; _applyAmount NUMERIC; _applycurrid INTEGER; _curr_rate NUMERIC; _r RECORD; _p RECORD; BEGIN -- Find the balance to apply SELECT (aropen_amount - COALESCE(SUM(currToCurr(arcreditapply_curr_id, aropen_curr_id, arcreditapply_amount, aropen_docdate)), 0) - aropen_paid - COALESCE(prepared,0.0) - COALESCE(cashapplied,0.0)), aropen_curr_id, aropen_curr_rate INTO _amount, _amountcurrid, _curr_rate FROM aropen LEFT OUTER JOIN arcreditapply ON (arcreditapply_source_aropen_id=aropen_id) LEFT OUTER JOIN (SELECT aropen_id AS prepared_aropen_id, SUM(checkitem_amount + checkitem_discount) AS prepared FROM checkhead JOIN checkitem ON (checkitem_checkhead_id=checkhead_id) JOIN aropen ON (checkitem_aropen_id=aropen_id) WHERE ((NOT checkhead_posted) AND (NOT checkhead_void)) GROUP BY aropen_id) AS sub1 ON (prepared_aropen_id=aropen_id) LEFT OUTER JOIN (SELECT aropen_id AS cash_aropen_id, SUM(cashrcptitem_amount + cashrcptitem_discount) * -1.0 AS cashapplied FROM cashrcpt JOIN cashrcptitem ON (cashrcptitem_cashrcpt_id=cashrcpt_id) JOIN aropen ON (cashrcptitem_aropen_id=aropen_id) WHERE (NOT cashrcpt_posted) AND (NOT cashrcpt_void) GROUP BY aropen_id ) AS sub2 ON (cash_aropen_id=aropen_id) WHERE (aropen_id=pSourceAropenid) GROUP BY aropen_amount, aropen_paid, aropen_curr_id, aropen_curr_rate, prepared, cashapplied; IF (_amount < 0) THEN RETURN -1; END IF; -- Loop through the aropen items in order of due date FOR _r IN SELECT target.aropen_id AS aropenid, currToCurr(target.aropen_curr_id,source.aropen_curr_id, (target.aropen_amount - target.aropen_paid - calcpendingarapplications(target.aropen_id)), current_date) AS balance, target.aropen_curr_id AS curr_id, target.aropen_docdate AS docdate FROM aropen AS target, aropen AS source WHERE ( (source.aropen_cust_id=target.aropen_cust_id) AND (target.aropen_doctype IN ('D', 'I')) AND (target.aropen_open) AND (source.aropen_id=pSourceAropenid) AND ((pTargetAropenid IS NULL) OR (target.aropen_id=pTargetAropenid)) ) ORDER BY target.aropen_duedate, target.aropen_docnumber LOOP -- Determine the amount to apply IF (_r.balance > _amount) THEN _applyAmount := _amount; ELSE _applyAmount := _r.balance; END IF; _applycurrid := _amountcurrid; -- Does an arcreditapply record already exist? SELECT arcreditapply_id, arcreditapply_amount, arcreditapply_amount * _curr_rate / currRate(arcreditapply_curr_id,_r.docdate) AS arcreditapply_amount_applycurr INTO _p FROM arcreditapply WHERE ( (arcreditapply_target_aropen_id=_r.aropenid) AND (arcreditapply_source_aropen_id=pSourceAropenid) ); IF (FOUND) THEN -- Offset the amount to apply by the amount already applied _applyAmount := (_applyAmount - _p.arcreditapply_amount_applycurr); IF (_applyAmount < 0) THEN _applyAmount := 0; END IF; -- Update the arcreditapply with the new amount to apply UPDATE arcreditapply SET arcreditapply_amount = (arcreditapply_amount + _applyAmount * currRate(arcreditapply_curr_id,_r.docdate) / _curr_rate) WHERE (arcreditapply_id=_p.arcreditapply_id); ELSE -- Create a new arcreditapply record INSERT INTO arcreditapply ( arcreditapply_source_aropen_id, arcreditapply_target_aropen_id, arcreditapply_amount, arcreditapply_curr_id ) VALUES ( pSourceAropenid, _r.aropenid, _applyAmount, _applycurrid ); END IF; _amount := _amount - currToCurr(_applycurrid, _amountcurrid, _applyAmount, _r.docdate); IF (_amount = 0) THEN EXIT; END IF; END LOOP; RETURN 1; END; $_$; ALTER FUNCTION public.applyarcreditmemotobalance(integer, integer) OWNER TO admin; -- -- Name: applycashreceiptlinebalance(integer, integer, numeric, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION applycashreceiptlinebalance(integer, integer, numeric, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCashrcptId ALIAS FOR $1; pAropenid ALIAS FOR $2; pAmount ALIAS FOR $3; pCurrId ALIAS FOR $4; _balance NUMERIC; _amount NUMERIC; _applyAmount NUMERIC := 0; _discount NUMERIC := 0; _discprct NUMERIC; _docDate DATE; _r RECORD; _doctype CHAR(1); BEGIN -- All calculations performed in currency of Cash Receipt -- Clear previously applied DELETE FROM cashrcptitem WHERE ((cashrcptitem_cashrcpt_id=pCashrcptId) AND (cashrcptitem_aropen_id=pAropenId)); -- Find the balance to apply SELECT (pAmount - (COALESCE(SUM(cashrcptitem_amount), 0) ) ), COALESCE(cashrcpt_docdate, current_date) INTO _amount, _docDate FROM cashrcpt LEFT OUTER JOIN cashrcptitem ON (cashrcptitem_cashrcpt_id = cashrcpt_id) WHERE (cashrcpt_id=pCashrcptid) GROUP BY cashrcpt_curr_id, cashrcpt_distdate, cashrcpt_docdate; SELECT (_amount - COALESCE(SUM(cashrcptmisc_amount), 0)) INTO _amount FROM cashrcptmisc WHERE (cashrcptmisc_cashrcpt_id=pCashrcptid); SELECT aropen_doctype INTO _doctype FROM aropen WHERE (aropen_id=pAropenId); RAISE DEBUG 'Amount (%) DocType (%)', _amount, _doctype; IF (_amount <= 0 AND _doctype IN ('I','D')) THEN RETURN 0; END IF; -- Determine Line balance SELECT currToCurr(aropen_curr_id, cashrcpt_curr_id, aropen_amount - aropen_paid, cashrcpt_distdate) - COALESCE((SELECT (SUM(cashrcptitem_amount) + SUM(cashrcptitem_discount)) FROM cashrcptitem, cashrcpt WHERE ((cashrcpt_id=cashrcptitem_cashrcpt_id) AND (NOT cashrcpt_void) AND (NOT cashrcpt_posted) AND (cashrcpt_id != pCashrcptId) AND (cashrcptitem_aropen_id=pAropenId))), 0) INTO _balance FROM aropen, cashrcpt WHERE ((aropen_id=pAropenId) AND (cashrcpt_id=pCashrcptId)); RAISE DEBUG 'Balance (%)', _balance; -- If Invoice or Debit Memo, determine Max Discount as per Terms IF (_doctype IN ('I','D')) THEN SELECT round(noNeg(_balance * CASE WHEN (_docDate <= determineDiscountDate(terms_id, aropen_docdate)) THEN COALESCE(terms_discprcnt, 0.0) ELSE 0.00 END - applied),2), CASE WHEN (_docDate <= determineDiscountDate(terms_id, aropen_docdate)) THEN COALESCE(terms_discprcnt, 0.0) ELSE 0.00 END INTO _discount, _discprct FROM aropen LEFT OUTER JOIN terms ON (terms_id=aropen_terms_id), (SELECT COALESCE(SUM(arapply_applied), 0.00) AS applied FROM arapply, aropen WHERE ((arapply_target_aropen_id=pAropenId) AND (arapply_source_aropen_id=pAropenId) AND (aropen_discount) ) ) AS data WHERE (aropen_id=pAropenId); -- Determine the amount to apply IF (_balance <= _amount + _discount) THEN _applyAmount := _balance - _discount; ELSE _discount := round((_amount / (1 - _discprct)) - _amount, 2); _applyAmount := _amount; END IF; ELSIF (_doctype IN ('C', 'R')) THEN -- Handle Credits, discounts don't apply here _applyAmount := _balance * -1; ELSE _applyAmount := _amount; END IF; IF (_applyAmount != 0) THEN -- Create a new cashrcptitem INSERT INTO cashrcptitem ( cashrcptitem_aropen_id, cashrcptitem_cashrcpt_id, cashrcptitem_amount,cashrcptitem_discount ) VALUES ( pAropenid, pCashrcptid, round(_applyAmount, 2), round(_discount, 2) ); END IF; RETURN abs(_applyAmount); END; $_$; ALTER FUNCTION public.applycashreceiptlinebalance(integer, integer, numeric, integer) OWNER TO admin; -- -- Name: applycashreceipttobalance(integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION applycashreceipttobalance(integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCashrcptid ALIAS FOR $1; pAmount ALIAS FOR $2; BEGIN RETURN applyCashReceiptToBalance(pCashrcptid, pAmount, baseCurrId() ); END; $_$; ALTER FUNCTION public.applycashreceipttobalance(integer, numeric) OWNER TO admin; -- -- Name: applycashreceipttobalance(integer, numeric, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION applycashreceipttobalance(integer, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCashrcptid ALIAS FOR $1; pAmount ALIAS FOR $2; pCurrId ALIAS FOR $3; BEGIN RETURN applyCashReceiptToBalance(pCashrcptid, pAmount, pCurrId, false); END; $_$; ALTER FUNCTION public.applycashreceipttobalance(integer, numeric, integer) OWNER TO admin; -- -- Name: applycashreceipttobalance(integer, numeric, integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION applycashreceipttobalance(integer, numeric, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCashrcptid ALIAS FOR $1; pAmount ALIAS FOR $2; pCurrId ALIAS FOR $3; pInclCredits ALIAS FOR $4; _amount NUMERIC; _applied NUMERIC := 0; _applyAmount NUMERIC; _discount NUMERIC; _discprct NUMERIC; _docDate DATE; _r RECORD; _toApply NUMERIC; BEGIN -- Apply open credits first if applicable IF (pInclCredits) THEN -- First find total debits unaccounted for by this receipt so we can apply as much credit -- as possible to clear, but no more SELECT coalesce(noNeg(sum(currToCurr(aropen_curr_id, cashrcpt_curr_id, aropen_amount - aropen_paid, cashrcpt_distdate) - COALESCE((SELECT (SUM(cashrcptitem_amount) + SUM(cashrcptitem_discount)) FROM cashrcptitem, cashrcpt WHERE ((cashrcpt_id=cashrcptitem_cashrcpt_id) AND (NOT cashrcpt_void) AND (NOT cashrcpt_posted) AND (cashrcpt_id != pCashrcptid) AND (cashrcptitem_aropen_id=aropen_id))), 0)) - pAmount),0) INTO _toApply FROM cashrcpt JOIN custinfo ON (cashrcpt_cust_id=cust_id) JOIN aropen ON (cust_id=aropen_cust_id) WHERE ((cashrcpt_id=pCashrcptid) AND (aropen_open) AND (aropen_doctype IN ('I','D'))); -- Loop through and apply credits until we account for all remaining debits we can FOR _r IN SELECT aropen_id FROM cashrcpt JOIN custinfo ON (cashrcpt_cust_id=cust_id) JOIN aropen ON (cust_id=aropen_cust_id) WHERE ((cashrcpt_id=pCashrcptid) AND (aropen_open) AND (aropen_doctype IN ('C','R'))) ORDER BY aropen_duedate, aropen_docnumber LOOP EXIT WHEN _toApply <= 0; _toApply := _toApply - applyCashReceiptLineBalance(pCashrcptid, _r.aropen_id, _toApply, pCurrId); END LOOP; END IF; -- Find the balance to apply SELECT (currToCurr(pCurrId, cashrcpt_curr_id, pAmount, cashrcpt_distdate) - (COALESCE(SUM(cashrcptitem_amount), 0) ) ), COALESCE(cashrcpt_docdate, current_date) INTO _amount, _docDate FROM cashrcpt LEFT OUTER JOIN cashrcptitem ON (cashrcptitem_cashrcpt_id = cashrcpt_id) WHERE (cashrcpt_id=pCashrcptid) GROUP BY cashrcpt_curr_id, cashrcpt_distdate, cashrcpt_docdate; SELECT (_amount - COALESCE(SUM(cashrcptmisc_amount), 0)) INTO _amount FROM cashrcptmisc WHERE (cashrcptmisc_cashrcpt_id=pCashrcptid); IF (_amount = 0) THEN RETURN 1; END IF; -- Loop through the aropen item in order of due date, searching only for -- aropen items that are open, for the current customer and have an outstanding balance FOR _r IN SELECT aropen_id, currToCurr(aropen_curr_id, cashrcpt_curr_id, aropen_amount - aropen_paid, cashrcpt_distdate) - COALESCE((SELECT SUM(cashrcptitem_amount) + SUM(cashrcptitem_discount) FROM cashrcptitem, cashrcpt WHERE ((cashrcpt_id=cashrcptitem_cashrcpt_id) AND (NOT cashrcpt_void) AND (NOT cashrcpt_posted) AND (cashrcpt_id != pCashrcptId) AND (cashrcptitem_aropen_id=aropen_id))), 0) AS balance, s.cashrcptitem_id AS cashrcptitem_id FROM cashrcpt, aropen LEFT OUTER JOIN cashrcptitem s ON (s.cashrcptitem_aropen_id=aropen_id AND s.cashrcptitem_cashrcpt_id=pCashrcptId) LEFT OUTER JOIN terms ON (aropen_terms_id=terms_id), (SELECT COALESCE(SUM(arapply_applied), 0.00) AS applied FROM arapply, aropen WHERE ((arapply_target_aropen_id=aropen_id) AND (arapply_source_aropen_id=aropen_id) AND (aropen_discount) ) ) AS data WHERE ( (aropen_cust_id=cashrcpt_cust_id) AND (aropen_doctype IN ('I', 'D')) AND (aropen_open) AND (cashrcpt_id=pCashrcptid) ) ORDER BY aropen_duedate, aropen_amount, balance LOOP -- Determine Max Discount as per Terms SELECT round(noNeg(_r.balance * CASE WHEN (_docDate <= determineDiscountDate(terms_id, aropen_docdate)) THEN terms_discprcnt ELSE 0.00 END - applied),2), CASE WHEN (_docDate <= determineDiscountDate(terms_id, aropen_docdate)) THEN terms_discprcnt ELSE 0.00 END INTO _discount, _discprct FROM aropen LEFT OUTER JOIN terms ON (terms_id=aropen_terms_id), (SELECT COALESCE(SUM(arapply_applied), 0.00) AS applied FROM arapply, aropen WHERE ((arapply_target_aropen_id=_r.aropen_id) AND (arapply_source_aropen_id=_r.aropen_id) AND (aropen_discount) ) ) AS data WHERE (aropen_id=_r.aropen_id); -- Determine the amount to apply IF (_r.balance <= _amount + _discount) THEN _applyAmount := _r.balance - _discount; ELSE _discount := round((_amount / (1 - _discprct)) - _amount, 2); _applyAmount := _amount; END IF; IF (_applyAmount > 0) THEN -- Does an cashrcptitem already exist? IF (_r.cashrcptitem_id IS NOT NULL) THEN -- Update the cashrcptitem with the new amount to apply UPDATE cashrcptitem SET cashrcptitem_amount = round(cashrcptitem_amount + _applyAmount, 2), cashrcptitem_discount = round(_discount, 2) WHERE (cashrcptitem_id=_r.cashrcptitem_id); ELSE -- Create a new cashrcptitem INSERT INTO cashrcptitem ( cashrcptitem_aropen_id, cashrcptitem_cashrcpt_id, cashrcptitem_amount, cashrcptitem_discount ) VALUES ( _r.aropen_id, pCashrcptid, round(_applyAmount, 2), round(_discount, 2) ); END IF; _amount := (_amount - _applyAmount); IF (round(_amount, 2) = 0) THEN EXIT; END IF; END IF; END LOOP; RETURN 1; END; $_$; ALTER FUNCTION public.applycashreceipttobalance(integer, numeric, integer, boolean) OWNER TO admin; -- -- Name: araging(date, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION araging(date, boolean) RETURNS SETOF araging LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAsOfDate ALIAS FOR $1; pUseDocDate ALIAS FOR $2; _row araging%ROWTYPE; BEGIN FOR _row IN SELECT * FROM araging(pAsOfDate, pUseDocDate, true) LOOP RETURN NEXT _row; END LOOP; RETURN; END; $_$; ALTER FUNCTION public.araging(date, boolean) OWNER TO admin; -- -- Name: araging(date, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION araging(date, boolean, boolean) RETURNS SETOF araging LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAsOfDate ALIAS FOR $1; pUseDocDate ALIAS FOR $2; pConvBaseCurr ALIAS FOR $3; _row araging%ROWTYPE; _x RECORD; _returnVal INTEGER; _asOfDate DATE; BEGIN _asOfDate := COALESCE(pAsOfDate,current_date); FOR _x IN SELECT aropen_docdate, aropen_duedate, aropen_ponumber, aropen_docnumber, aropen_doctype, cust_id, cust_name, cust_number, cust_custtype_id, custtype_code, terms_descrip, --if pConvBaseCurr is true then use currtobase to convert all amounts to base based on aropen_docdate to ensure the same exchange rate --otherwise use currtocurr to convert all amounts to customer's currency based on aropen_docdate to ensure the same exchange rate --today and greater: CASE WHEN((aropen_duedate >= DATE(_asOfDate))) THEN balance ELSE 0.0 END AS cur_val, --0 to 30 CASE WHEN((aropen_duedate >= DATE(_asOfDate)-30) AND (aropen_duedate < DATE(_asOfDate))) THEN balance ELSE 0.0 END AS thirty_val, --30-60 CASE WHEN((aropen_duedate >= DATE(_asOfDate)-60) AND (aropen_duedate < DATE(_asOfDate) - 30 )) THEN balance ELSE 0.0 END AS sixty_val, --60-90 CASE WHEN((aropen_duedate >= DATE(_asOfDate)-90) AND (aropen_duedate < DATE(_asOfDate) - 60)) THEN balance ELSE 0.0 END AS ninety_val, --greater than 90: CASE WHEN((aropen_duedate > DATE(_asOfDate)-10000) AND (aropen_duedate < DATE(_asOfDate) - 90)) THEN balance ELSE 0.0 END AS plus_val, --total amount: CASE WHEN((aropen_duedate > DATE(_asOfDate)-10000)) THEN balance ELSE 0.0 END AS total_val, --AR Open Amount base aropen_amount FROM ( SELECT (((aropen_amount - aropen_paid + COALESCE(SUM(arapply_target_paid),0))) / CASE WHEN (pConvBaseCurr) THEN aropen_curr_rate ELSE currRate(aropen_curr_id, cust_curr_id, aropen_docdate) END * CASE WHEN (aropen_doctype IN ('C', 'R')) THEN -1.0 ELSE 1.0 END) AS balance, ((aropen_amount) / CASE WHEN (pConvBaseCurr) THEN aropen_curr_rate ELSE currRate(aropen_curr_id, cust_curr_id, aropen_docdate) END * CASE WHEN (aropen_doctype IN ('C', 'R')) THEN -1.0 ELSE 1.0 END) AS aropen_amount, aropen_docdate, aropen_duedate, aropen_ponumber, aropen_docnumber, aropen_doctype, cust_id, cust_name, cust_number, cust_custtype_id, custtype_code, COALESCE(arterms.terms_descrip, custterms.terms_descrip, '') AS terms_descrip FROM aropen JOIN custinfo ON (cust_id=aropen_cust_id) JOIN custtype ON (custtype_id=cust_custtype_id) LEFT OUTER JOIN terms arterms ON (arterms.terms_id=aropen_terms_id) LEFT OUTER JOIN terms custterms ON (custterms.terms_id=cust_terms_id) LEFT OUTER JOIN arapply ON (((aropen_id=arapply_target_aropen_id) OR (aropen_id=arapply_source_aropen_id)) AND (arapply_distdate>_asOfDate)) WHERE ( (CASE WHEN (pUseDocDate) THEN aropen_docdate ELSE aropen_distdate END <= _asOfDate) AND (COALESCE(aropen_closedate,_asOfDate+1)>_asOfDate) ) GROUP BY aropen_id,aropen_docdate,aropen_duedate,aropen_ponumber,aropen_docnumber,aropen_doctype,aropen_paid, aropen_curr_id,aropen_amount,cust_id,cust_name,cust_number,cust_custtype_id,custtype_code, arterms.terms_descrip,custterms.terms_descrip, aropen_curr_rate, aropen_curr_id, cust_curr_id ORDER BY cust_number, aropen_duedate ) AS data LOOP _row.araging_docdate := _x.aropen_docdate; _row.araging_duedate := _x.aropen_duedate; _row.araging_ponumber := _x.aropen_ponumber; _row.araging_docnumber := _x.aropen_docnumber; _row.araging_doctype := _x.aropen_doctype; _row.araging_cust_id := _x.cust_id; _row.araging_cust_number := _x.cust_number; _row.araging_cust_name := _x.cust_name; _row.araging_cust_custtype_id := _x.cust_custtype_id; _row.araging_custtype_code := _x.custtype_code; _row.araging_terms_descrip := _x.terms_descrip; _row.araging_aropen_amount := _x.aropen_amount; _row.araging_cur_val := _x.cur_val; _row.araging_thirty_val := _x.thirty_val; _row.araging_sixty_val := _x.sixty_val; _row.araging_ninety_val := _x.ninety_val; _row.araging_plus_val := _x.plus_val; _row.araging_total_val := _x.total_val; RETURN NEXT _row; END LOOP; RETURN; END; $_$; ALTER FUNCTION public.araging(date, boolean, boolean) OWNER TO admin; -- -- Name: arapplied(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION arapplied(integer, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAropenid ALIAS FOR $1; pDate ALIAS FOR $2; _amount NUMERIC; BEGIN -- Return amount applied to an aropen in base currency item as of the parameter date SELECT SUM(currtobase(arapply_curr_id,arapply_applied,pDate)) INTO _amount FROM arapply WHERE (((arapply_target_aropen_id = pAropenid) OR (arapply_source_aropen_id = pAropenid)) AND (((arapply_journalnumber=0) AND (arapply_postdate <= pDate)) OR EXISTS(SELECT * FROM gltrans WHERE ((gltrans_journalnumber=arapply_journalnumber) AND (gltrans_date <= pDate))))); IF (_amount IS NULL) THEN RETURN 0; ELSE RETURN _amount; END IF; END; $_$; ALTER FUNCTION public.arapplied(integer, date) OWNER TO admin; -- -- Name: archivesaleshistory(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION archivesaleshistory(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSohistid ALIAS FOR $1; BEGIN INSERT INTO asohist ( asohist_id, asohist_cust_id, asohist_itemsite_id, asohist_shipdate, asohist_invcdate, asohist_duedate, asohist_promisedate, asohist_ordernumber, asohist_invcnumber, asohist_qtyshipped, asohist_unitprice, asohist_unitcost, asohist_billtoname, asohist_billtoaddress1, asohist_billtoaddress2, asohist_billtoaddress3, asohist_billtocity, asohist_billtostate, asohist_billtozip, asohist_shiptoname, asohist_shiptoaddress1, asohist_shiptoaddress2, asohist_shiptoaddress3, asohist_shiptocity, asohist_shiptostate, asohist_shiptozip, asohist_shipto_id, asohist_shipvia, asohist_salesrep_id, asohist_misc_type, asohist_misc_descrip, asohist_misc_id, asohist_commission, asohist_commissionpaid, asohist_doctype, asohist_orderdate, asohist_imported, asohist_ponumber, asohist_curr_id, asohist_taxtype_id, asohist_taxzone_id ) SELECT cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipdate, cohist_invcdate, cohist_duedate, cohist_promisedate, cohist_ordernumber, cohist_invcnumber, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_shipto_id, cohist_shipvia, cohist_salesrep_id, cohist_misc_type, cohist_misc_descrip, cohist_misc_id, cohist_commission, cohist_commissionpaid, cohist_doctype, cohist_orderdate, cohist_imported, cohist_ponumber, cohist_curr_id, cohist_taxtype_id, cohist_taxzone_id FROM cohist WHERE (cohist_id=pSohistid); INSERT INTO asohisttax ( taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM cohisttax WHERE (taxhist_parent_id=pSohistid); DELETE FROM cohisttax WHERE (taxhist_parent_id=pSohistid); DELETE FROM cohist WHERE (cohist_id=pSohistid); RETURN pSohistid; END; $_$; ALTER FUNCTION public.archivesaleshistory(integer) OWNER TO admin; -- -- Name: arcurrgain(integer, integer, numeric, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION arcurrgain(integer, integer, numeric, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAropenId ALIAS FOR $1; pCurrId ALIAS FOR $2; pValue ALIAS FOR $3; pDate ALIAS FOR $4; _start DATE; _end DATE; _gain NUMERIC; _r RECORD; BEGIN IF (pAropenId IS NULL OR pValue = 0) THEN RETURN 0; END IF; SELECT aropen_docdate, aropen_curr_id, aropen_curr_rate INTO _r FROM aropen WHERE (aropen_id=pAropenId); IF (_r.aropen_docdate > pDate) THEN _gain := (currToBase(pCurrId, pValue, pDate) - currToCurr(pCurrId,_r.aropen_curr_id, pValue, pDate) / _r.aropen_curr_rate) * -1; ELSE _gain := currToCurr(pCurrId,_r.aropen_curr_id, pValue, pDate) / _r.aropen_curr_rate - currToBase(pCurrId, pValue, pDate); END IF; IF (_gain IS NULL) THEN RAISE EXCEPTION 'Error processing currency gain/loss.'; END IF; RETURN _gain; END; $_$; ALTER FUNCTION public.arcurrgain(integer, integer, numeric, date) OWNER TO admin; -- -- Name: armor(bytea); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION armor(bytea) RETURNS text LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_armor'; ALTER FUNCTION public.armor(bytea) OWNER TO admin; -- -- Name: invbal; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE invbal ( invbal_id integer NOT NULL, invbal_period_id integer, invbal_itemsite_id integer, invbal_qoh_beginning numeric(18,6) NOT NULL, invbal_qoh_ending numeric(18,6) NOT NULL, invbal_qty_in numeric(18,6) NOT NULL, invbal_qty_out numeric(18,6) NOT NULL, invbal_value_beginning numeric(12,2) NOT NULL, invbal_value_ending numeric(12,2) NOT NULL, invbal_value_in numeric(12,2) NOT NULL, invbal_value_out numeric(12,2) NOT NULL, invbal_nn_beginning numeric(18,6) NOT NULL, invbal_nn_ending numeric(18,6) NOT NULL, invbal_nn_in numeric(18,6) NOT NULL, invbal_nn_out numeric(18,6) NOT NULL, invbal_nnval_beginning numeric(12,2) NOT NULL, invbal_nnval_ending numeric(12,2) NOT NULL, invbal_nnval_in numeric(12,2) NOT NULL, invbal_nnval_out numeric(12,2) NOT NULL, invbal_dirty boolean DEFAULT true NOT NULL ); ALTER TABLE public.invbal OWNER TO admin; -- -- Name: asofinvbal(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION asofinvbal(integer, date) RETURNS SETOF invbal LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteId ALIAS FOR $1; pAsofDate ALIAS FOR $2; _result invbal%ROWTYPE; _i RECORD; _h RECORD; _r RECORD; _prevCostmethod TEXT := 'A'; _prevDate TIMESTAMP WITH TIME ZONE; _runningQty NUMERIC := 0; _runningNn NUMERIC := 0; _runningValue NUMERIC := 0; _runningNnval NUMERIC := 0; BEGIN /* This is a base function to gather data. Because it is STABLE it should only need to be calculated once, even though it is likely to be called several times by other functions in parent query to present the various data. */ -- First make sure inventory balance is forward updated PERFORM forwardUpdateItemsite(pItemsiteId); -- Next find the previous period balace to use as a starting point SELECT invbal.*, period_start, itemsite_costmethod INTO _i FROM invbal JOIN itemsite ON (invbal_itemsite_id=itemsite_id) JOIN period ON (invbal_period_id=period_id) WHERE ((invbal_itemsite_id=pItemsiteId) AND (pAsofDate >= period_start)) ORDER BY period_start DESC LIMIT 1; _runningQty := _i.invbal_qoh_beginning; _runningNn := _i.invbal_nn_beginning; _runningValue := _i.invbal_value_beginning; _runningNnval := _i.invbal_nnval_beginning; _prevDate := _i.period_start; _prevCostmethod := _i.itemsite_costmethod; FOR _r IN SELECT invhist_id, invhist_created, invhist_invqty, invhist_transtype, invhist_unitcost, invhist_costmethod, itemsite_item_id, invhistSense(invhist_id) AS sense FROM invhist JOIN itemsite ON (itemsite_id=invhist_itemsite_id) WHERE ((invhist_itemsite_id=pItemsiteId) AND (invhist_transdate::date BETWEEN _i.period_start AND pAsofdate)) ORDER BY invhist_created, invhist_id LOOP -- Update balances changed by any standard cost update between transactions IF (_prevCostmethod = 'S' AND _runningQty != 0) THEN FOR _h IN SELECT costhist_oldcost, costhist_newcost FROM costhist JOIN item ON (costhist_item_id=item_id) JOIN itemsite ON (itemsite_item_id=item_id) WHERE ((itemsite_id=pItemsiteId) AND (costhist_date BETWEEN _prevDate AND _r.invhist_created) AND (costhist_type IN ('S','D'))) LOOP _runningValue := _runningValue + round((_h.costhist_newcost-_h.costhist_oldcost) * _runningQty,2); _runningNnval := _runningNnval + round((_h.costhist_newcost-_h.costhist_oldcost) * _runningNn,2); END LOOP; END IF; _prevDate := _r.invhist_created; _prevCostmethod := _r.invhist_costmethod; _runningQty := _runningQty + _r.invhist_invqty * _r.sense; _runningValue := _runningValue + round( _r.invhist_invqty * _r.sense * _r.invhist_unitcost,2); IF (_r.invhist_transtype = 'NN') THEN _runningNn := _runningNn + _r.invhist_invqty * -1; _runningNnval := _runningNnval + round( _r.invhist_invqty * -1 * _r.invhist_unitcost,2); END IF; END LOOP; _prevDate := COALESCE(_prevDate, _i.period_start); _prevCostmethod := COALESCE(_r.invhist_costmethod, _i.itemsite_costmethod); IF (_prevCostmethod = 'S' AND _runningQty != 0) THEN FOR _h IN SELECT costhist_oldcost, costhist_newcost FROM costhist JOIN item ON (costhist_item_id=item_id) JOIN itemsite ON (itemsite_item_id=item_id) WHERE ((itemsite_id=pItemsiteId) AND (costhist_date BETWEEN _prevDate AND CAST(pAsofDate + 1 AS TIMESTAMP WITH TIME ZONE)) AND (costhist_type IN ('S','D'))) LOOP _runningValue := _runningValue + round((_h.costhist_newcost-_h.costhist_oldcost) * _runningQty,2); _runningNnval := _runningNnval + round((_h.costhist_newcost-_h.costhist_oldcost) * _runningNn,2); END LOOP; END IF; _result := _i; _result.invbal_qoh_ending := _runningQty; _result.invbal_value_ending := _runningValue; _result.invbal_nn_ending := _runningNn; _result.invbal_nnval_ending := _runningNnval; RETURN NEXT _result; RETURN; END; $_$; ALTER FUNCTION public.asofinvbal(integer, date) OWNER TO admin; -- -- Name: asofinvnn(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION asofinvnn(integer, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteId ALIAS FOR $1; pAsofDate ALIAS FOR $2; _result NUMERIC; BEGIN SELECT invbal_nn_ending INTO _result FROM asofinvbal(pItemsiteId, pAsofDate); RETURN COALESCE(_result, 0); END; $_$; ALTER FUNCTION public.asofinvnn(integer, date) OWNER TO admin; -- -- Name: asofinvqty(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION asofinvqty(integer, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteId ALIAS FOR $1; pAsofDate ALIAS FOR $2; _result NUMERIC; BEGIN SELECT invbal_qoh_ending INTO _result FROM asofinvbal(pItemsiteId, pAsofDate); RETURN COALESCE(_result, 0); END; $_$; ALTER FUNCTION public.asofinvqty(integer, date) OWNER TO admin; -- -- Name: attachcontact(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION attachcontact(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pcntctId ALIAS FOR $1; pcrmacctId ALIAS FOR $2; BEGIN UPDATE cntct SET cntct_crmacct_id = pcrmacctId WHERE cntct_id = pcntctId; RETURN 0; END; $_$; ALTER FUNCTION public.attachcontact(integer, integer) OWNER TO admin; -- -- Name: attachquotetoopportunity(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION attachquotetoopportunity(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; pOpheadid ALIAS FOR $2; BEGIN -- Check Quote IF (NOT EXISTS(SELECT quhead_id FROM quhead WHERE (quhead_id=pQuheadid))) THEN RETURN -1; END IF; -- Check Opportunity IF (NOT EXISTS(SELECT ophead_id FROM ophead WHERE (ophead_id=pOpheadid))) THEN RETURN -2; END IF; -- Cannot attach if already attached IF (EXISTS(SELECT quhead_id FROM quhead WHERE ((quhead_id=pQuheadid) AND (quhead_ophead_id IS NOT NULL)))) THEN RETURN -3; END IF; UPDATE quhead SET quhead_ophead_id=pOpheadid WHERE (quhead_id=pQuheadid); RETURN 0; END; $_$; ALTER FUNCTION public.attachquotetoopportunity(integer, integer) OWNER TO admin; -- -- Name: attachsalesordertoopportunity(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION attachsalesordertoopportunity(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; pOpheadid ALIAS FOR $2; BEGIN -- Check Sales Order IF (NOT EXISTS(SELECT cohead_id FROM cohead WHERE (cohead_id=pSoheadid))) THEN RETURN -1; END IF; -- Check Opportunity IF (NOT EXISTS(SELECT ophead_id FROM ophead WHERE (ophead_id=pOpheadid))) THEN RETURN -2; END IF; -- Cannot attach if already attached IF (EXISTS(SELECT cohead_id FROM cohead WHERE ((cohead_id=pSoheadid) AND (cohead_ophead_id IS NOT NULL)))) THEN RETURN -3; END IF; UPDATE cohead SET cohead_ophead_id=pOpheadid WHERE (cohead_id=pSoheadid); RETURN 0; END; $_$; ALTER FUNCTION public.attachsalesordertoopportunity(integer, integer) OWNER TO admin; -- -- Name: averagesalesprice(integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION averagesalesprice(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _p RECORD; BEGIN -- Returns value in base currency -- ToDo: is cohist_shipdate the right DATE to use? SELECT SUM(cohist_qtyshipped * currToBase(cohist_curr_id, cohist_unitprice, cohist_shipdate)) AS totalsales, SUM(cohist_qtyshipped) AS totalship INTO _p FROM cohist WHERE ( (cohist_itemsite_id=pItemsiteid) AND (cohist_invcdate BETWEEN pStartDate AND pEndDate) ); IF ( (_p.totalship IS NULL) OR (_p.totalship = 0) ) THEN RETURN 0; ELSE RETURN (_p.totalsales / _p.totalship); END IF; END; $_$; ALTER FUNCTION public.averagesalesprice(integer, date, date) OWNER TO admin; -- -- Name: avgcost(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION avgcost(pitemsiteid integer) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _value NUMERIC; _qoh NUMERIC; _qohnn NUMERIC; BEGIN SELECT itemsite_value, itemsite_qtyonhand, itemsite_nnqoh INTO _value, _qoh, _qohnn FROM itemsite WHERE(itemsite_id=pItemsiteid); IF (_qoh = 0.0 AND _qohnn = 0.0) THEN RETURN 0.0; END IF; RETURN _value / (_qoh + _qohnn); END; $$; ALTER FUNCTION public.avgcost(pitemsiteid integer) OWNER TO admin; -- -- Name: balanceitemsite(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION balanceitemsite(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; _itemlocseries INTEGER; _balanced NUMERIC; _qoh NUMERIC; _nnQoh NUMERIC; BEGIN -- Make sure that that passed Itemsite is MLC or Lot/Serial controlled IF ( ( SELECT (NOT ( (itemsite_loccntrl) OR (itemsite_controlmethod IN ('L', 'S')) )) FROM itemsite WHERE (itemsite_id=pItemsiteid) ) ) THEN RETURN 0; END IF; IF ( ( SELECT itemsite_freeze FROM itemsite WHERE(itemsite_id=pItemsiteid) ) ) THEN RETURN -1; END IF; -- Calculate the Netable portion SELECT COALESCE(SUM(itemloc_qty), 0) INTO _balanced FROM itemloc LEFT OUTER JOIN location ON (itemloc_location_id=location_id) WHERE ( ( (location_id IS NULL) OR (location_netable) ) AND (itemloc_itemsite_id=pItemsiteid) ); -- Post an AD Transaction for the Netable portion SELECT invAdjustment( itemsite_id, (_balanced - itemsite_qtyonhand), 'Balance', 'Inventory Balance' ) INTO _itemlocseries FROM itemsite WHERE (itemsite_id=pItemsiteid); -- Post the invtrans records associated with the itemlocdist records PERFORM postInvhist(itemlocdist_invhist_id) FROM itemlocdist WHERE(itemlocdist_series=_itemlocseries); -- Kill the resultant distribution records DELETE FROM itemlocdist WHERE (itemlocdist_series=_itemlocseries); -- Calculate and write the Non-Netable portion directly SELECT COALESCE(SUM(itemloc_qty), 0) INTO _nnQoh FROM itemloc, location WHERE ( (itemloc_location_id=location_id) AND (NOT location_netable) AND (itemloc_itemsite_id=pItemsiteid) ); UPDATE itemsite SET itemsite_nnqoh = _nnQoh WHERE (itemsite_id=pItemsiteid); RETURN 1; END; $_$; ALTER FUNCTION public.balanceitemsite(integer) OWNER TO admin; -- -- Name: bomcontains(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION bomcontains(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pparentitemid ALIAS FOR $1; pchilditemid ALIAS FOR $2; _bomworksetid INTEGER; _result BOOLEAN; BEGIN _bomworksetid := indentedWhereUsed(pchilditemid); _result := EXISTS(SELECT bomwork_id FROM bomwork WHERE ((bomwork_set_id=_bomworksetid) AND (bomwork_item_id=pparentitemid) )); PERFORM deleteBOMWorkset(_bomworksetid); RETURN _result; END; $_$; ALTER FUNCTION public.bomcontains(integer, integer) OWNER TO admin; -- -- Name: bomhistsequence(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION bomhistsequence(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pHistid ALIAS FOR $1; _wid INTEGER; _seqnum TEXT; _bomhist RECORD; BEGIN _wid := pHistid; SELECT bomhist_parent_id AS parent, to_char(bomhist_seqnumber, '00009') AS seq INTO _bomhist FROM bomhist WHERE bomhist_seq_id=_wid; IF (FOUND) THEN _seqnum := _bomhist.seq; _wid := _bomhist.parent; WHILE (_wid != -1) LOOP SELECT bomhist_parent_id AS parent, to_char(bomhist_seqnumber, '00009') AS seq INTO _bomhist FROM bomhist WHERE bomhist_seq_id=_wid; IF (FOUND) THEN _seqnum := _bomhist.seq || '-' || _seqnum; _wid := _bomhist.parent; ELSE _wid := -1; END IF; END LOOP; ELSE _seqnum := ''::TEXT; END IF; RETURN _seqnum; END; $_$; ALTER FUNCTION public.bomhistsequence(integer) OWNER TO admin; -- -- Name: bomitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE bomitem ( bomitem_id integer DEFAULT nextval(('bomitem_bomitem_id_seq'::text)::regclass) NOT NULL, bomitem_parent_item_id integer NOT NULL, bomitem_seqnumber integer, bomitem_item_id integer NOT NULL, bomitem_qtyper numeric(20,8) NOT NULL, bomitem_scrap numeric(8,4) NOT NULL, bomitem_status character(1), bomitem_effective date NOT NULL, bomitem_expires date NOT NULL, bomitem_createwo boolean NOT NULL, bomitem_issuemethod character(1) NOT NULL, bomitem_schedatwooper boolean NOT NULL, bomitem_ecn text, bomitem_moddate date, bomitem_subtype character(1) NOT NULL, bomitem_uom_id integer NOT NULL, bomitem_rev_id integer DEFAULT (-1), bomitem_booitem_seq_id integer DEFAULT (-1), bomitem_char_id integer, bomitem_value text, bomitem_notes text, bomitem_ref text, bomitem_qtyfxd numeric(20,8) DEFAULT 0 NOT NULL, bomitem_issuewo boolean DEFAULT false NOT NULL, CONSTRAINT bomitem_bomitem_issuemethod_check CHECK ((((bomitem_issuemethod = 'M'::bpchar) OR (bomitem_issuemethod = 'S'::bpchar)) OR (bomitem_issuemethod = 'L'::bpchar))), CONSTRAINT bomitem_bomitem_subtype_check CHECK ((((bomitem_subtype = 'N'::bpchar) OR (bomitem_subtype = 'I'::bpchar)) OR (bomitem_subtype = 'B'::bpchar))) ); ALTER TABLE public.bomitem OWNER TO admin; -- -- Name: TABLE bomitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE bomitem IS 'Bill of Materials (BOM) component Items information'; -- -- Name: COLUMN bomitem.bomitem_qtyfxd; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN bomitem.bomitem_qtyfxd IS 'The fixed quantity required'; -- -- Name: bomitem(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION bomitem(integer) RETURNS SETOF bomitem LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT * FROM bomitem WHERE ((bomitem_parent_item_id=$1) AND (bomitem_rev_id=getActiveRevId('BOM',$1))); $_$; ALTER FUNCTION public.bomitem(integer) OWNER TO admin; -- -- Name: bomitem(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION bomitem(integer, integer) RETURNS SETOF bomitem LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT * FROM bomitem WHERE ((bomitem_parent_item_id=$1) AND (bomitem_rev_id=$2)); $_$; ALTER FUNCTION public.bomitem(integer, integer) OWNER TO admin; -- -- Name: bomlevelbyitem(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION bomlevelbyitem(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; _cnt INTEGER; _result INTEGER; _bomitem RECORD; BEGIN _cnt := 0; BEGIN FOR _bomitem IN SELECT bomitem_parent_item_id FROM bomitem WHERE ((bomitem_item_id=pItemid) AND (bomitem_rev_id=getActiveRevId('BOM',bomitem_parent_item_id)) AND (CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires - 1))) LOOP SELECT bomLevelByItem(_bomitem.bomitem_parent_item_id) + 1 INTO _result; IF (_result > _cnt) THEN _cnt := _result; END IF; END LOOP; EXCEPTION WHEN statement_too_complex THEN RAISE EXCEPTION 'potential recursive BOM found for item_id %', pItemid; END; return _cnt; END; $_$; ALTER FUNCTION public.bomlevelbyitem(integer) OWNER TO admin; -- -- Name: bomlevelbyitem(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION bomlevelbyitem(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pBomrevid ALIAS FOR $2; _cnt INTEGER; _result INTEGER; _bomitem RECORD; BEGIN _cnt := 0; BEGIN FOR _bomitem IN SELECT bomitem_parent_item_id FROM bomitem WHERE ((bomitem_item_id=pItemid) AND (bomitem_rev_id=pBomrevid) AND (CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires - 1))) LOOP SELECT bomLevelByItem(_bomitem.bomitem_parent_item_id, pBomrevid) + 1 INTO _result; IF (_result > _cnt) THEN _cnt := _result; END IF; END LOOP; EXCEPTION WHEN statement_too_complex THEN RAISE EXCEPTION 'potential recursive BOM found for item_id %', pItemid; END; return _cnt; END; $_$; ALTER FUNCTION public.bomlevelbyitem(integer, integer) OWNER TO admin; -- -- Name: bomworkeffective(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION bomworkeffective(integer, date) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE workid ALIAS FOR $1; effdate ALIAS FOR $2; _wid INTEGER; _bomwork RECORD; BEGIN _wid := workid; WHILE (_wid != -1) LOOP SELECT bomwork_parent_id AS parent, bomwork_effective AS effective INTO _bomwork FROM bomwork WHERE bomwork_id=_wid; IF (FOUND) THEN _wid := _bomwork.parent; IF (_bomwork.effective > effdate) THEN RETURN FALSE; END IF; ELSE _wid := -1; END IF; END LOOP; RETURN TRUE; END; $_$; ALTER FUNCTION public.bomworkeffective(integer, date) OWNER TO admin; -- -- Name: bomworkexpired(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION bomworkexpired(integer, date) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE workid ALIAS FOR $1; expdate ALIAS FOR $2; _wid INTEGER; _bomwork RECORD; BEGIN _wid := workid; WHILE (_wid != -1) LOOP SELECT bomwork_parent_id AS parent, bomwork_expires AS expires INTO _bomwork FROM bomwork WHERE bomwork_id=_wid; IF (FOUND) THEN _wid := _bomwork.parent; IF (_bomwork.expires <= expdate) THEN RETURN TRUE; END IF; ELSE _wid := -1; END IF; END LOOP; RETURN FALSE; END; $_$; ALTER FUNCTION public.bomworkexpired(integer, date) OWNER TO admin; -- -- Name: bomworkitemsequence(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION bomworkitemsequence(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWorkid ALIAS FOR $1; _wid INTEGER; _seqnum TEXT; _bomwork RECORD; BEGIN _wid := pWorkid; SELECT bomwork_parent_id AS parent, item_number AS seq INTO _bomwork FROM bomwork, item WHERE ((bomwork_id=_wid) AND (bomwork_item_id=item_id)); IF (FOUND) THEN _seqnum := _bomwork.seq; _wid := _bomwork.parent; WHILE (_wid != -1) LOOP SELECT bomwork_parent_id AS parent, item_number AS seq INTO _bomwork FROM bomwork, item WHERE ((bomwork_id=_wid) AND (bomwork_item_id=item_id)); IF (FOUND) THEN _seqnum := _bomwork.seq || '-' || _seqnum; _wid := _bomwork.parent; ELSE _wid := -1; END IF; END LOOP; ELSE _seqnum := ''::TEXT; END IF; RETURN _seqnum; END; $_$; ALTER FUNCTION public.bomworkitemsequence(integer) OWNER TO admin; -- -- Name: bomworksequence(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION bomworksequence(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWorkid ALIAS FOR $1; _wid INTEGER; _seqnum TEXT; _bomwork RECORD; BEGIN _wid := pWorkid; SELECT bomwork_parent_id AS parent, to_char(bomwork_seqnumber, '00009') AS seq INTO _bomwork FROM bomwork WHERE bomwork_id=_wid; IF (FOUND) THEN _seqnum := _bomwork.seq; _wid := _bomwork.parent; WHILE (_wid != -1) LOOP SELECT bomwork_parent_id AS parent, to_char(bomwork_seqnumber, '00009') AS seq INTO _bomwork FROM bomwork WHERE bomwork_id=_wid; IF (FOUND) THEN _seqnum := _bomwork.seq || '-' || _seqnum; _wid := _bomwork.parent; ELSE _wid := -1; END IF; END LOOP; ELSE _seqnum := ''::TEXT; END IF; RETURN _seqnum; END; $_$; ALTER FUNCTION public.bomworksequence(integer) OWNER TO admin; -- -- Name: buildinvbal(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION buildinvbal(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteId ALIAS FOR $1; _r RECORD; _prevCostmethod TEXT := 'A'; _prevDate TIMESTAMP WITH TIME ZONE; _runningQty NUMERIC := 0; _runningNn NUMERIC := 0; BEGIN -- Validate IF (SELECT (count(invhist_id) > 0) FROM invhist WHERE ((invhist_itemsite_id=pItemsiteId) AND (NOT invhist_posted))) THEN SELECT item_number, warehous_code INTO _r FROM itemsite JOIN item ON (item_id=itemsite_item_id) JOIN whsinfo ON (itemsite_warehous_id=warehous_id) WHERE (itemsite_id=pItemsiteId); RAISE EXCEPTION 'Unposted inventory transactions exist for % at % [xtuple: buildInvBal, -1, %, %]', _r.item_number, _r.warehous_code, _r.item_number, _r.warehous_code; END IF; -- Remove any old records DELETE FROM invbal WHERE invbal_itemsite_id=pItemsiteId; FOR _r IN SELECT invhist.*, itemsite_item_id, invhistSense(invhist_id) AS sense, item_number, warehous_code FROM invhist JOIN itemsite ON (itemsite_id=invhist_itemsite_id) JOIN item ON (itemsite_item_id=item_id) JOIN whsinfo ON (itemsite_warehous_id=warehous_id) WHERE (invhist_itemsite_id=pItemsiteId) ORDER BY invhist_created, invhist_id LOOP RAISE NOTICE 'Calculating balances for Item % at Site % against transaction %, transtype %, sense %, qty %, %', _r.item_number, _r.warehous_code, _r.invhist_id, _r.invhist_transtype, _r.sense, _r.invhist_invqty, _r.invhist_comments; -- Update balances changed by any standard cost update between transactions IF (_prevCostmethod = 'S' AND _runningQty != 0) THEN PERFORM postValueintoInvBalance(pItemsiteid, costhist_date::date, _runningQty, _runningNn, costhist_oldcost, costhist_newcost ) FROM costhist WHERE ((costhist_item_id=_r.itemsite_item_id) AND (costhist_date BETWEEN _prevDate AND _r.invhist_created) AND (costhist_type IN ('S','D'))); END IF; -- Post transaction into inventory balance table PERFORM postIntoInvBalance(_r.invhist_id); _prevDate := _r.invhist_created; _prevCostmethod := _r.invhist_costmethod; _runningQty := _runningQty + _r.invhist_invqty * _r.sense; IF (_r.invhist_transtype = 'NN') THEN _runningNn := _runningNn + _r.invhist_invqty * -1; END IF; END LOOP; -- Update balances changed by any standard cost since last transaction IF (_prevCostmethod = 'S' AND _runningQty != 0) THEN PERFORM postValueintoInvBalance(pItemsiteid, costhist_date::date, _runningQty, _runningNn, costhist_oldcost, costhist_newcost ) FROM costhist WHERE ((costhist_item_id=_r.itemsite_item_id) AND (costhist_date > _prevDate) AND (costhist_type IN ('S','D'))); END IF; -- Forward update changes through all the balances PERFORM forwardupdateitemsite(pItemsiteId); RETURN 1; END; $_$; ALTER FUNCTION public.buildinvbal(integer) OWNER TO admin; -- -- Name: buildsearchpath(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION buildsearchpath() RETURNS text LANGUAGE plpgsql AS $_$ DECLARE _path TEXT := ''; _schema TEXT; _seq INTEGER; BEGIN -- get the schemas as ordered by the administrator SELECT concatagg(quote_ident(schemaord_name) || ',') INTO _path FROM (SELECT schemaord_name FROM schemaord LEFT OUTER JOIN pkghead ON (schemaord_name=pkghead_name) WHERE (pkghead_id IS NULL OR (pkghead_id IS NOT NULL AND packageisenabled(pkghead_id))) ORDER BY schemaord_order ) AS xtspq; -- add others that we think/know we need -- TODO: is there a reason not to include public, api, or packages? FOR _schema, _seq IN SELECT pkghead_name AS schema, 0 AS seq FROM pkghead WHERE packageisenabled(pkghead_id) UNION ALL SELECT 'public', 1 UNION ALL SELECT 'api', 2 ORDER BY seq, schema LOOP IF (_path !~* (E'(^|\\W)' || _schema || E'(\\W|$)')) THEN _path := _path || ',' || quote_ident(_schema); END IF; END LOOP; -- remove extraneous spaces and commas _path = BTRIM(REGEXP_REPLACE(_path, '( ?, ?)+', ',', 'g'), ', '); RAISE DEBUG 'buildSearchPath() returning %', _path; RETURN _path; END; $_$; ALTER FUNCTION public.buildsearchpath() OWNER TO admin; -- -- Name: FUNCTION buildsearchpath(); Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON FUNCTION buildsearchpath() IS 'buildSearchPath() examines the schemaord and pkghead tables to build a search path string. It ensures that public, api, and all enabled packages are included even if they are not listed in the schemaord table. It returns the constructed search_path but does not set it.'; -- -- Name: calccashbudget(integer, integer, character); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calccashbudget(integer, integer, character) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAccntId ALIAS FOR $1; pPeriodId ALIAS FOR $2; pInterval ALIAS FOR $3; _accntType CHAR; _currentBudget NUMERIC; _priorBudget NUMERIC; _result NUMERIC; BEGIN SELECT accnt_type INTO _accntType FROM accnt WHERE (accnt_id=pAccntId); SELECT COALESCE(SUM(budget_amount),0) INTO _currentBudget FROM budget WHERE ((budget_accnt_id=pAccntId) AND (budget_period_id=pPeriodId)); IF (pInterval='M') THEN SELECT (COALESCE(SUM(budget_amount),0)) INTO _priorBudget FROM budget, (SELECT COALESCE(pp.period_id,-1) AS prior_period_id FROM period cp, period pp WHERE ((cp.period_id=pPeriodId) AND (cp.period_start > pp.period_start)) ORDER BY pp.period_start DESC LIMIT 1) AS data WHERE ((budget_accnt_id=pAccntId) AND (budget_period_id=prior_period_id)); ELSE IF (pInterval='Q') THEN SELECT (COALESCE(SUM(budget_amount),0)) INTO _priorBudget FROM budget, (SELECT COALESCE(pp.period_id,-1) AS prior_period_id FROM period cp, period pp WHERE ((cp.period_id=pPeriodId) AND (cp.period_start > pp.period_start) AND (pp.period_quarter= CASE WHEN cp.period_quarter > 1 THEN cp.period_quarter - 1 ELSE 4 END) AND (pp.period_start >= cp.period_start - interval '1 year')) ORDER BY pp.period_start DESC LIMIT 1) AS data WHERE ((budget_accnt_id=pAccntId) AND (budget_period_id=prior_period_id)); ELSE SELECT (COALESCE(SUM(budget_amount),0)) INTO _priorBudget FROM budget, (SELECT pp.period_id AS prior_period_id FROM period cp, period pp, yearperiod cy, yearperiod py WHERE ((cp.period_id=pPeriodId) AND (cp.period_yearperiod_id=cy.yearperiod_id) AND (pp.period_yearperiod_id=py.yearperiod_id) AND (cy.yearperiod_start > py.yearperiod_start)) ORDER BY pp.period_start DESC LIMIT 1) AS data WHERE ((budget_accnt_id=pAccntId) AND (budget_period_id=prior_period_id)); END IF; END IF; IF _accntType='A' THEN _result := ((_priorBudget-_currentBudget) * -1 ); ELSE IF (_accntType IN ('L','Q')) THEN _result := ((_priorBudget-_currentBudget) *-1); ELSE RETURN -1; END IF; END IF; RETURN _result; END; $_$; ALTER FUNCTION public.calccashbudget(integer, integer, character) OWNER TO admin; -- -- Name: calccmheadamt(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calccmheadamt(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmheadid ALIAS FOR $1; _amount NUMERIC := 0; BEGIN SELECT SUM(COALESCE(extprice, 0)) INTO _amount FROM cmhead JOIN creditmemoitem ON (cmhead_id=cmitem_cmhead_id) WHERE (cmhead_id=pCmheadid); RETURN _amount; END; $_$; ALTER FUNCTION public.calccmheadamt(integer) OWNER TO admin; -- -- Name: calccmheadtax(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calccmheadtax(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmheadid ALIAS FOR $1; _headamount NUMERIC := 0; _itemamount NUMERIC := 0; _amount NUMERIC := 0; BEGIN SELECT COALESCE(SUM(taxhist_tax), 0) INTO _headamount FROM cmhead JOIN cmheadtax ON (taxhist_parent_id=cmhead_id) WHERE (cmhead_id=pCmheadid); SELECT SUM(COALESCE(tax, 0)) INTO _itemamount FROM cmhead JOIN creditmemoitem ON (cmhead_id=cmitem_cmhead_id) WHERE (cmhead_id=pCmheadid); _amount := _headamount + _itemamount; RETURN (_amount * -1.0); END; $_$; ALTER FUNCTION public.calccmheadtax(integer) OWNER TO admin; -- -- Name: calccobillamt(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calccobillamt(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCobillid ALIAS FOR $1; _amount NUMERIC := 0; BEGIN SELECT COALESCE(round((cobill_qty * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio), 2), 0) INTO _amount FROM cobill JOIN coitem ON (coitem_id=cobill_coitem_id) WHERE (cobill_id=pCobillid); RETURN _amount; END; $_$; ALTER FUNCTION public.calccobillamt(integer) OWNER TO admin; -- -- Name: calccobilltax(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calccobilltax(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCobillid ALIAS FOR $1; _amount NUMERIC := 0; BEGIN SELECT COALESCE(calculateTax(cobmisc_taxzone_id, cobill_taxtype_id, cobmisc_shipdate, cobmisc_curr_id, calcCobillAmt(cobill_id)), 0) INTO _amount FROM cobill JOIN coitem ON (coitem_id=cobill_coitem_id) JOIN cobmisc ON (cobmisc_id=cobill_cobmisc_id) WHERE (cobill_id=pCobillid); RETURN _amount; END; $_$; ALTER FUNCTION public.calccobilltax(integer) OWNER TO admin; -- -- Name: calccobmiscamt(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calccobmiscamt(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCobmiscid ALIAS FOR $1; _amount NUMERIC := 0; BEGIN SELECT SUM(COALESCE(calcCobillAmt(cobill_id), 0)) INTO _amount FROM cobmisc JOIN cobill ON (cobmisc_id=cobill_cobmisc_id) WHERE (cobmisc_id=pCobmiscid); RETURN _amount; END; $_$; ALTER FUNCTION public.calccobmiscamt(integer) OWNER TO admin; -- -- Name: calccobmisctax(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calccobmisctax(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCobmiscid ALIAS FOR $1; _amount NUMERIC := 0; BEGIN SELECT SUM( COALESCE(calculateTax(cobmisc_taxzone_id, cobill_taxtype_id, cobmisc_shipdate, cobmisc_curr_id, COALESCE(round((cobill_qty * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio), 2), 0)) , 0) ) INTO _amount FROM cobmisc JOIN cobill ON (cobmisc_id=cobill_cobmisc_id) JOIN coitem ON (coitem_id=cobill_coitem_id) WHERE (cobmisc_id=pCobmiscid); RETURN _amount; END; $_$; ALTER FUNCTION public.calccobmisctax(integer) OWNER TO admin; -- -- Name: calcpendingarapplications(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calcpendingarapplications(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE paropenid ALIAS FOR $1; _arcreditsum NUMERIC; _aropencurrid INTEGER; _cashrcptsum NUMERIC; _sense INTEGER; BEGIN SELECT aropen_curr_id, (CASE WHEN aropen_doctype IN ('I','D') THEN 1 ELSE -1 END) INTO _aropencurrid, _sense FROM aropen WHERE (aropen_id=paropenid); SELECT SUM(currToCurr(cashrcpt_curr_id, _aropencurrid, cashrcptitem_amount + cashrcptitem_discount, coalesce(cashrcpt_applydate, cashrcpt_distdate))) * _sense INTO _cashrcptsum FROM cashrcptitem, cashrcpt WHERE ((cashrcptitem_cashrcpt_id=cashrcpt_id) AND (NOT cashrcpt_posted) AND (NOT cashrcpt_void) AND (cashrcptitem_aropen_id=paropenid) ); SELECT SUM(currToCurr(arcreditapply_curr_id, _aropencurrid, arcreditapply_amount, CURRENT_DATE)) INTO _arcreditsum FROM arcreditapply WHERE ((arcreditapply_target_aropen_id=paropenid) ); RETURN round(COALESCE(_cashrcptsum, 0) + COALESCE(_arcreditsum, 0),2); END; $_$; ALTER FUNCTION public.calcpendingarapplications(integer) OWNER TO admin; -- -- Name: calcquoteamt(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calcquoteamt(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; _subtotal NUMERIC := 0; _tax NUMERIC := 0; _freight NUMERIC := 0; _misc NUMERIC := 0; _amount NUMERIC := 0; BEGIN SELECT COALESCE(SUM(ROUND((quitem_qtyord * quitem_qty_invuomratio) * (quitem_price / quitem_price_invuomratio), 2)), 0) INTO _subtotal FROM quitem WHERE (quitem_quhead_id=pQuheadid); SELECT COALESCE(SUM(tax), 0) INTO _tax FROM ( SELECT ROUND(SUM(taxdetail_tax), 2) AS tax FROM tax JOIN calculateTaxDetailSummary('Q', pQuheadid, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id ) AS data; SELECT COALESCE(quhead_freight, 0), COALESCE(quhead_misc, 0) INTO _freight, _misc FROM quhead WHERE (quhead_id=pQuheadid); _amount := _subtotal + _tax + _freight + _misc; RETURN _amount; END; $_$; ALTER FUNCTION public.calcquoteamt(integer) OWNER TO admin; -- -- Name: calcsalesorderamt(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calcsalesorderamt(pcoheadid integer) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN calcSalesOrderAmt(pCoheadid, 'T'); END; $$; ALTER FUNCTION public.calcsalesorderamt(pcoheadid integer) OWNER TO admin; -- -- Name: calcsalesorderamt(integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calcsalesorderamt(pcoheadid integer, ptype text) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _subtotal NUMERIC := 0; _tax NUMERIC := 0; _freight NUMERIC := 0; _misc NUMERIC := 0; _credit NUMERIC := 0; _amount NUMERIC := 0; BEGIN -- pType: S = line item subtotal -- T = total -- B = balance due -- C = allocated credits -- X = tax SELECT COALESCE(SUM(ROUND((coitem_qtyord * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio), 2)), 0) INTO _subtotal FROM coitem WHERE (coitem_cohead_id=pCoheadid) AND (coitem_status != 'X'); SELECT COALESCE(SUM(tax), 0) INTO _tax FROM ( SELECT ROUND(SUM(taxdetail_tax), 2) AS tax FROM tax JOIN calculateTaxDetailSummary('S', pCoheadid, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id ) AS data; SELECT COALESCE(cohead_freight, 0), COALESCE(cohead_misc, 0), COALESCE(SUM(currToCurr(aropenalloc_curr_id, cohead_curr_id, aropenalloc_amount, CURRENT_DATE)),0) INTO _freight, _misc, _credit FROM cohead LEFT OUTER JOIN aropenalloc ON (aropenalloc_doctype='S' AND aropenalloc_doc_id=cohead_id) WHERE (cohead_id=pCoheadid) GROUP BY cohead_freight, cohead_misc, cohead_curr_id; _amount := CASE pType WHEN 'S' THEN (_subtotal) WHEN 'T' THEN (_subtotal + _tax + _freight + _misc) WHEN 'B' THEN (_subtotal + _tax + _freight + _misc - _credit) WHEN 'C' THEN (_credit) WHEN 'X' THEN (_tax) ELSE 0.0 END; RETURN _amount; END; $$; ALTER FUNCTION public.calcsalesorderamt(pcoheadid integer, ptype text) OWNER TO admin; -- -- Name: calcshipfreight(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calcshipfreight(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipheadId ALIAS FOR $1; _result NUMERIC := 0; _order RECORD; _shipment RECORD; _weights RECORD; _price RECORD; _sales RECORD; _freightid INTEGER; _totalprice NUMERIC; _includepkgweight BOOLEAN := FALSE; _freight RECORD; _debug BOOLEAN := false; BEGIN --Get shipment SELECT shiphead_order_id, shiphead_order_type, shiphead_freight INTO _shipment FROM shiphead WHERE (shiphead_id=pShipheadId); IF (NOT FOUND) THEN RAISE EXCEPTION 'Shipment not found'; END IF; IF (_shipment.shiphead_order_type = 'SO') THEN --Sales Orders --Get the order header information SELECT cust_id AS cust_id, custtype_id, custtype_code, shipto_id, shipto_num, cohead_orderdate AS orderdate, cohead_shipvia AS shipvia, shipto_shipzone_id AS shipzone_id, cohead_curr_id AS curr_id, currConcat(cohead_curr_id) AS currAbbr, cohead_calcfreight, cohead_freight INTO _order FROM cohead JOIN custinfo ON (cust_id=cohead_cust_id) JOIN custtype ON (custtype_id=cust_custtype_id) LEFT OUTER JOIN shiptoinfo ON (shipto_id=cohead_shipto_id) WHERE (cohead_id=_shipment.shiphead_order_id); IF (NOT FOUND) THEN RAISE EXCEPTION 'Order not found'; END IF; IF (_debug) THEN RAISE NOTICE 'cust_id = %', _order.cust_id; RAISE NOTICE 'custtype_id = %', _order.custtype_id; RAISE NOTICE 'shipto_id = %', _order.shipto_id; RAISE NOTICE 'shipto_num = %', _order.shipto_num; RAISE NOTICE 'orderdate = %', _order.orderdate; RAISE NOTICE 'shipvia = %', _order.shipvia; RAISE NOTICE 'shipzone_id = %', _order.shipzone_id; RAISE NOTICE 'curr_id = %', _order.curr_id; RAISE NOTICE 'currAbbr = %', _order.currAbbr; RAISE NOTICE 'calcfreight = %', _order.cohead_calcfreight; RAISE NOTICE 'freight = %', _order.cohead_freight; END IF; IF (NOT _order.cohead_calcfreight) THEN SELECT noNeg( _order.cohead_freight - COALESCE((SELECT SUM(shiphead_freight) FROM shiphead WHERE (shiphead_order_id = _shipment.shiphead_order_id) AND (shiphead_shipped='true')), 0) ) INTO _result; RETURN _result; END IF; SELECT fetchMetricBool('IncludePackageWeight') INTO _includepkgweight; --Calculate Sales Order freight --Get a list of aggregated weights from sites and --freight classes used on order lines FOR _weights IN SELECT CASE WHEN (_includePkgWeight) THEN SUM(shipitem_qty * (item_prodweight + item_packweight)) ELSE SUM(shipitem_qty * item_prodweight) END AS weight, itemsite_warehous_id, item_freightclass_id FROM shiphead JOIN shipitem ON (shipitem_shiphead_id=shiphead_id) JOIN coitem ON (shipitem_orderitem_id=coitem_id) JOIN itemsite ON (itemsite_id=coitem_itemsite_id) JOIN item ON (item_id=itemsite_item_id) WHERE ( (shiphead_id=pShipheadId) AND (item_freightclass_id IS NOT NULL) ) GROUP BY itemsite_warehous_id, item_freightclass_id LOOP IF (_debug) THEN RAISE NOTICE '_weights.weight - %', _weights.weight; RAISE NOTICE '_weights.itemsite_warehous_id = %', _weights.itemsite_warehous_id; RAISE NOTICE '_weights.item_freightclass_id = %', _weights.item_freightclass_id; END IF; -- First get a sales price if any so we when we find other prices -- we can determine if we want that price or this price. -- Check for a Sale Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, _order.curr_id, ipsfreight_price, _order.orderdate) ELSE currToCurr(ipshead_curr_id, _order.curr_id, (_weights.weight * ipsfreight_price), _order.orderdate) END AS price INTO _sales FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN sale ON (sale_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= _weights.weight) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=_weights.itemsite_warehous_id)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=_weights.item_freightclass_id)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=_order.shipzone_id)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=_order.shipvia)) AND (CURRENT_DATE BETWEEN sale_startdate AND sale_enddate) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_sales.price IS NOT NULL) THEN RAISE NOTICE 'Sales Price found, %', _sales.price; END IF; END IF; -- Check for a Customer Shipto Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, _order.curr_id, ipsfreight_price, _order.orderdate) ELSE currToCurr(ipshead_curr_id, _order.curr_id, (_weights.weight * ipsfreight_price), _order.orderdate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= _weights.weight) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=_weights.itemsite_warehous_id)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=_weights.item_freightclass_id)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=_order.shipzone_id)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=_order.shipvia)) AND (CURRENT_DATE BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsass_cust_id=_order.cust_id) AND (ipsass_shipto_id != -1) AND (ipsass_shipto_id=_order.shipto_id) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Shipto Price found, %', _price.price; END IF; END IF; IF (_price.price IS NULL) THEN -- Check for a Customer Shipto Pattern Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, _order.curr_id, ipsfreight_price, _order.orderdate) ELSE currToCurr(ipshead_curr_id, _order.curr_id, (_weights.weight * ipsfreight_price), _order.orderdate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= _weights.weight) AND (CURRENT_DATE BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsass_cust_id=_order.cust_id) AND (COALESCE(LENGTH(ipsass_shipto_pattern), 0) > 0) AND (_order.shipto_num ~ ipsass_shipto_pattern) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=_weights.itemsite_warehous_id)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=_weights.item_freightclass_id)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=_order.shipzone_id)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=_order.shipvia)) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Shipto Pattern Price found, %', _price.price; END IF; END IF; END IF; IF (_price.price IS NULL) THEN -- Check for a Customer Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, _order.curr_id, ipsfreight_price, _order.orderdate) ELSE currToCurr(ipshead_curr_id, _order.curr_id, (_weights.weight * ipsfreight_price), _order.orderdate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= _weights.weight) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=_weights.itemsite_warehous_id)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=_weights.item_freightclass_id)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=_order.shipzone_id)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=_order.shipvia)) AND (CURRENT_DATE BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsass_cust_id=_order.cust_id) AND (COALESCE(LENGTH(ipsass_shipto_pattern), 0) = 0) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Price found, %', _price.price; END IF; END IF; END IF; IF (_price.price IS NULL) THEN -- Check for a Customer Type Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, _order.curr_id, ipsfreight_price, _order.orderdate) ELSE currToCurr(ipshead_curr_id, _order.curr_id, (_weights.weight * ipsfreight_price), _order.orderdate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= _weights.weight) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=_weights.itemsite_warehous_id)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=_weights.item_freightclass_id)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=_order.shipzone_id)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=_order.shipvia)) AND (CURRENT_DATE BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsass_custtype_id=_order.custtype_id) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Type Price found, %', _price.price; END IF; END IF; END IF; IF (_price.price IS NULL) THEN -- Check for a Customer Type Pattern Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, _order.curr_id, ipsfreight_price, _order.orderdate) ELSE currToCurr(ipshead_curr_id, _order.curr_id, (_weights.weight * ipsfreight_price), _order.orderdate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= _weights.weight) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=_weights.itemsite_warehous_id)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=_weights.item_freightclass_id)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=_order.shipzone_id)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=_order.shipvia)) AND (CURRENT_DATE BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (COALESCE(LENGTH(ipsass_custtype_pattern), 0) > 0) AND (_order.custtype_code ~ ipsass_custtype_pattern) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Type Pattern Price found, %', _price.price; END IF; END IF; END IF; -- Select the lowest price IF ( (_price.price IS NOT NULL) AND ((_sales.price IS NULL) OR (_price.price < _sales.price)) ) THEN _freightid := _price.ipsfreight_id; _totalprice := _price.price; ELSE IF ( (_sales.price IS NOT NULL) AND ((_price.price IS NULL) OR (_sales.price <= _price.price)) ) THEN _freightid := _sales.ipsfreight_id; _totalprice := _sales.price; END IF; END IF; -- Total IF (_freightid IS NOT NULL) THEN _result := _result + _totalprice; END IF; END LOOP; RETURN ROUND(_result,2); END IF; IF (_shipment.shiphead_order_type = 'TO') THEN --Transfer Orders SELECT noNeg( (SELECT SUM(toitem_freight) + tohead_freight FROM tohead, toitem WHERE (toitem_tohead_id=tohead_id) AND (tohead_id = _shipment.shiphead_order_id) GROUP BY tohead_freight) - COALESCE((SELECT SUM(shiphead_freight) FROM shiphead WHERE (shiphead_order_id = _shipment.shiphead_order_id) AND (shiphead_shipped='true')), 0) ) INTO _result; RETURN _result; END IF; RETURN _result; END; $_$; ALTER FUNCTION public.calcshipfreight(integer) OWNER TO admin; -- -- Name: calctotalslipqty(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calctotalslipqty(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTagid ALIAS FOR $1; _qty NUMERIC := 0; BEGIN SELECT SUM(COALESCE(cntslip_qty, 0.0)) INTO _qty FROM cntslip WHERE (cntslip_cnttag_id=pTagid); RETURN _qty; END; $_$; ALTER FUNCTION public.calctotalslipqty(integer) OWNER TO admin; -- -- Name: calculatefreightdetail(integer, integer, text, integer, integer, text, date, text, integer, character varying, integer, integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calculatefreightdetail(integer, integer, text, integer, integer, text, date, text, integer, character varying, integer, integer, numeric) RETURNS SETOF freightdata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustId ALIAS FOR $1; pCustTypeId ALIAS FOR $2; pCustTypeCode ALIAS FOR $3; pShiptoId ALIAS FOR $4; pShipZoneId ALIAS FOR $5; pShiptoNum ALIAS FOR $6; pOrderDate ALIAS FOR $7; pShipVia ALIAS FOR $8; pCurrId ALIAS FOR $9; pCurrAbbr ALIAS FOR $10; pItemSiteWhsId ALIAS FOR $11; pItemFreightclassId ALIAS FOR $12; pWeight ALIAS FOR $13; _row freightData%ROWTYPE; _price RECORD; _sales RECORD; _freightid INTEGER; _totalprice NUMERIC; _asof DATE; _debug BOOLEAN := FALSE; BEGIN --Get pricing effectivity metric IF (SELECT fetchMetricText('soPriceEffective') = 'OrderDate') THEN _asof := pOrderDate; ELSE _asof := CURRENT_DATE; END IF; _freightid := NULL; _totalprice := 0.0; IF (_debug) THEN RAISE NOTICE 'pWeight - %', pWeight; RAISE NOTICE 'pItemSiteWhsId = %', pItemSiteWhsId; RAISE NOTICE 'pItemFreightclassId = %', pItemFreightclassId; END IF; -- First get a sales price if any so when we find other prices -- we can determine if we want that price or this sales price. -- Check for a Sale Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, pCurrId, ipsfreight_price, pOrderDate) ELSE currToCurr(ipshead_curr_id, pCurrId, (pWeight * ipsfreight_price), pOrderDate) END AS price INTO _sales FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN sale ON (sale_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= pWeight) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=pItemSiteWhsId)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=pItemFreightclassId)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=pShipZoneId)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=pShipVia)) AND (_asof BETWEEN sale_startdate AND sale_enddate) AND (pCustId IS NOT NULL) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_sales.price IS NOT NULL) THEN RAISE NOTICE 'Sales Price found, %', _sales.price; END IF; END IF; -- Check for a Customer Shipto Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, pCurrId, ipsfreight_price, pOrderDate) ELSE currToCurr(ipshead_curr_id, pCurrId, (pWeight * ipsfreight_price), pOrderDate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= pWeight) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=pItemSiteWhsId)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=pItemFreightclassId)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=pShipZoneId)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=pShipVia)) AND (_asof BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsass_shipto_id != -1) AND (ipsass_shipto_id=pShiptoId) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Shipto Price found, %', _price.price; END IF; END IF; IF (_price.price IS NULL) THEN -- Check for a Customer Shipto Pattern Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, pCurrId, ipsfreight_price, pOrderDate) ELSE currToCurr(ipshead_curr_id, pCurrId, (pWeight * ipsfreight_price), pOrderDate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= pWeight) AND (_asof BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsass_cust_id=pCustId) AND (COALESCE(LENGTH(ipsass_shipto_pattern), 0) > 0) AND (pShiptoNum ~ ipsass_shipto_pattern) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=pItemSiteWhsId)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=pItemFreightclassId)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=pShipZoneId)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=pShipVia)) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Shipto Pattern Price found, %', _price.price; END IF; END IF; END IF; IF (_price.price IS NULL) THEN -- Check for a Customer Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, pCurrId, ipsfreight_price, pOrderDate) ELSE currToCurr(ipshead_curr_id, pCurrId, (pWeight * ipsfreight_price), pOrderDate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= pWeight) AND((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=pItemSiteWhsId)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=pItemFreightclassId)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=pShipZoneId)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=pShipVia)) AND (_asof BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsass_cust_id=pCustId) AND (COALESCE(LENGTH(ipsass_shipto_pattern), 0) = 0) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Price found, %', _price.price; END IF; END IF; END IF; IF (_price.price IS NULL) THEN -- Check for a Customer Type Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, pCurrId, ipsfreight_price, pOrderDate) ELSE currToCurr(ipshead_curr_id, pCurrId, (pWeight * ipsfreight_price), pOrderDate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= pWeight) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=pItemSiteWhsId)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=pItemFreightclassId)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=pShipZoneId)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=pShipVia)) AND (_asof BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsass_custtype_id=pCustTypeId) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Type Price found, %', _price.price; END IF; END IF; END IF; IF (_price.price IS NULL) THEN -- Check for a Customer Type Pattern Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, pCurrId, ipsfreight_price, pOrderDate) ELSE currToCurr(ipshead_curr_id, pCurrId, (pWeight * ipsfreight_price), pOrderDate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= pWeight) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=pItemSiteWhsId)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=pItemFreightclassId)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=pShipZoneId)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=pShipVia)) AND (_asof BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (COALESCE(LENGTH(ipsass_custtype_pattern), 0) > 0) AND (pCustTypeCode ~ ipsass_custtype_pattern) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Type Pattern Price found, %', _price.price; END IF; END IF; END IF; -- Select the lowest price IF ( (_price.price IS NOT NULL) AND ((_sales.price IS NULL) OR (_price.price < _sales.price)) ) THEN _freightid := _price.ipsfreight_id; _totalprice := _price.price; ELSE IF ( (_sales.price IS NOT NULL) AND ((_price.price IS NULL) OR (_sales.price <= _price.price)) ) THEN _freightid := _sales.ipsfreight_id; _totalprice := _sales.price; END IF; END IF; IF (_debug) THEN RAISE NOTICE '_freightid = %', _freightid; RAISE NOTICE '_totalprice = %', _totalprice; END IF; -- Get information for the selected ipsfreight -- and return IF (_freightid IS NULL) THEN _row.freightdata_schedule := 'N/A'; _row.freightdata_from := ''; _row.freightdata_to := ''; _row.freightdata_shipvia := ''; _row.freightdata_freightclass := ''; _row.freightdata_weight := 0; _row.freightdata_uom := ''; _row.freightdata_price := 0; _row.freightdata_type := ''; _row.freightdata_total := 0; _row.freightdata_currency := ''; RETURN NEXT _row; ELSE SELECT ipshead_name AS freightdata_schedule, COALESCE(warehous_code, 'Any') AS freightdata_from, COALESCE(shipzone_name, 'Any') AS freightdata_to, COALESCE(ipsfreight_shipvia, 'Any') AS freightdata_shipvia, COALESCE(freightclass_code, 'Any') AS freightdata_freightclass, pWeight AS freightdata_weight, uom_name AS freightdata_uom, currToCurr(ipshead_curr_id, pCurrId, ipsfreight_price, pOrderDate) AS freightdata_price, CASE WHEN (ipsfreight_type='F') THEN 'Flat Rate' ELSE 'Per UOM' END AS freightdata_type, _totalprice AS freightdata_total, pCurrAbbr AS freightdata_currency INTO _row FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) LEFT OUTER JOIN uom ON (uom_item_weight) LEFT OUTER JOIN whsinfo ON (warehous_id=ipsfreight_warehous_id) LEFT OUTER JOIN shipzone ON (shipzone_id=ipsfreight_shipzone_id) LEFT OUTER JOIN freightclass ON (freightclass_id=ipsfreight_freightclass_id) WHERE (ipsfreight_id=_freightid); RETURN NEXT _row; END IF; RETURN; END; $_$; ALTER FUNCTION public.calculatefreightdetail(integer, integer, text, integer, integer, text, date, text, integer, character varying, integer, integer, numeric) OWNER TO admin; -- -- Name: calculatesubtax(integer, date, integer, numeric, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calculatesubtax(integer, date, integer, numeric, integer) RETURNS SETOF taxdetail LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxCodeId ALIAS FOR $1; pDate ALIAS FOR $2; pCurrId ALIAS FOR $3; pAmount ALIAS FOR $4; pLevel ALIAS FOR $5; _row taxdetail%ROWTYPE; _rownumber INTEGER := 1; _calc_tax Numeric :=0; _x RECORD; _y RECORD; BEGIN FOR _x IN SELECT tax_id, tax_code, tax_descrip, tax_basis_tax_id, taxrate_id, taxrate_percent, taxrate_curr_id, taxrate_amount, taxclass_id, taxclass_code, COALESCE(taxclass_sequence,0) AS taxclass_sequence, curr_id, curr_abbr FROM tax, taxrate, taxclass, curr_symbol WHERE ((tax_id = taxrate_tax_id) AND (tax_taxclass_id = taxclass_id) AND (taxrate_curr_id = curr_id) AND (tax_basis_tax_id = pTaxCodeId) AND (pDate BETWEEN taxrate_effective AND taxrate_expires) AND (taxrate_curr_id = pCurrId)) LOOP SELECT ROUND((_x.taxrate_percent * pAmount + currToCurr(_x.curr_id, pCurrId, _x.taxrate_amount, pDate)), 6) INTO _calc_tax; _row.taxdetail_tax_id = _x.tax_id; _row.taxdetail_tax_code = _x.tax_code; _row.taxdetail_tax_descrip = _x.tax_descrip; _row.taxdetail_tax_basis_tax_id = _x.tax_basis_tax_id ; _row.taxdetail_taxrate_percent = _x.taxrate_percent; _row.taxdetail_taxrate_amount = _x.taxrate_amount; _row.taxdetail_level = pLevel + 1; _row.taxdetail_taxclass_id = _x.taxclass_id ; _row.taxdetail_taxclass_code = _x.taxclass_code; _row.taxdetail_taxclass_sequence = _x.taxclass_sequence; _row.taxdetail_tax = _calc_tax; _row.taxdetail_curr_id = _x.curr_id; _row.taxdetail_curr_abbr = _x.curr_abbr; RETURN NEXT _row; _rownumber := _rownumber + 1; FOR _y IN SELECT * FROM calculateSubTax( _x.tax_id, pDate, pCurrId, _calc_tax, pLevel + 1) LOOP _row.taxdetail_tax_id = _y.taxdetail_tax_id; _row.taxdetail_tax_code = _y.taxdetail_tax_code; _row.taxdetail_tax_descrip = _y.taxdetail_tax_descrip; _row.taxdetail_tax_basis_tax_id = _y.taxdetail_tax_basis_tax_id ; _row.taxdetail_taxrate_percent = _y.taxdetail_taxrate_percent; _row.taxdetail_taxrate_amount = _y.taxdetail_taxrate_amount; _row.taxdetail_level = _y.taxdetail_level + 1; _row.taxdetail_taxclass_id = _y.taxdetail_taxclass_id ; _row.taxdetail_taxclass_code = _y.taxdetail_taxclass_code; _row.taxdetail_taxclass_sequence = _y.taxdetail_taxclass_sequence; _row.taxdetail_tax = _y.taxdetail_tax; _row.taxdetail_curr_id = _y.taxdetail_curr_id; _row.taxdetail_curr_abbr = _y.taxdetail_curr_abbr; RETURN NEXT _row; _rownumber := _rownumber + 1; END LOOP; END LOOP; END; $_$; ALTER FUNCTION public.calculatesubtax(integer, date, integer, numeric, integer) OWNER TO admin; -- -- Name: calculatetax(integer, integer, date, integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calculatetax(integer, integer, date, integer, numeric) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxZoneId ALIAS FOR $1; pTaxTypeId ALIAS FOR $2; pDate ALIAS FOR $3; pCurrId ALIAS FOR $4; pAmount ALIAS FOR $5; _tottax numeric := 0; -- total tax BEGIN SELECT COALESCE(ROUND(SUM(taxdetail_tax),6),0) INTO _tottax FROM calculateTaxDetail(pTaxZoneId, pTaxTypeId, pDate, pCurrId, pAmount); RETURN _tottax; END; $_$; ALTER FUNCTION public.calculatetax(integer, integer, date, integer, numeric) OWNER TO admin; -- -- Name: calculatetaxdetail(integer, integer, date, integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calculatetaxdetail(integer, integer, date, integer, numeric) RETURNS SETOF taxdetail LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxZoneId ALIAS FOR $1; pTaxTypeId ALIAS FOR $2; pDate ALIAS FOR $3; pCurrId ALIAS FOR $4; pAmount ALIAS FOR $5; _row taxdetail%ROWTYPE; _x RECORD; _y RECORD; _z RECORD; _currcum numeric := 0; -- Current cumulative tax _currseq numeric := 0; -- Current group sequence _prevcum numeric := 0; -- Previous cumulative tax _tax numeric := 0; -- Calculated tax amount _taxbasis numeric := 0; -- Used for calculating sub taxes BEGIN IF ((COALESCE(pTaxTypeId,-1) = -1) OR (COALESCE(pTaxZoneId,-1) = -1)) THEN RETURN; END IF; SELECT DISTINCT COALESCE(taxass_taxzone_id, -1) AS taxzone_id, COALESCE(taxass_taxtype_id, -1) AS taxtype_id, taxass_tax_id, CASE WHEN ((taxass_taxzone_id IS NOT NULL) AND (taxass_taxtype_id IS NOT NULL)) THEN 0 WHEN ((taxass_taxzone_id IS NOT NULL) AND (taxass_taxtype_id IS NULL)) THEN 1 WHEN ((taxass_taxzone_id IS NULL) AND (taxass_taxtype_id IS NOT NULL)) THEN 2 ELSE 3 END AS sequence INTO _x FROM taxass WHERE ((COALESCE(taxass_taxzone_id, pTaxZoneId, -1) = COALESCE(pTaxZoneId,-1)) AND (COALESCE(taxass_taxtype_id, pTaxTypeId, -1) = COALESCE(pTaxTypeId,-1))) ORDER BY sequence LIMIT 1; --Now loop through each tax detail record and return calculated result FOR _y IN SELECT --the data required by taxdetail type. Coalesce group sequence to 0 if no class. tax_id ,tax_code ,tax_descrip ,tax_basis_tax_id ,taxrate_percent ,taxrate_amount ,0 as taxdetail_level ,taxclass_id ,taxclass_code ,COALESCE(taxclass_sequence, 0) AS taxclass_sequence ,0 as taxdetail_tax ,curr_id ,curr_abbr FROM taxass, taxclass RIGHT OUTER JOIN tax LEFT OUTER JOIN taxrate ON (taxrate_tax_id=tax_id) ON (tax_taxclass_id=taxclass_id), curr_symbol WHERE taxass_tax_id=tax_id AND taxrate_curr_id=curr_id AND COALESCE(taxass_taxzone_id, -1) = _x.taxzone_id AND COALESCE(taxass_taxtype_id, -1) = _x.taxtype_id AND pDate BETWEEN COALESCE(taxrate_effective, startoftime()) AND COALESCE(taxrate_expires, endoftime()) ORDER BY COALESCE(taxclass_sequence, 0) LOOP -- If sequence has changed, cache the previous cumulative tax IF (_currseq != _x.sequence) THEN _prevcum := _currcum; END IF; -- Calculate the tax amount. Convert currency for flat rate amounts SELECT ROUND((_y.taxrate_percent * (pAmount + _prevcum) + currToCurr(_y.curr_id, pCurrId, _y.taxrate_amount, pDate)), 6) INTO _tax FROM tax JOIN taxrate ON (tax_id = taxrate_tax_id) WHERE (tax_id=_x.taxass_tax_id) AND (pDate BETWEEN COALESCE(taxrate_effective, startoftime()) AND COALESCE(taxrate_expires, endoftime())); --Map fields to _row _row.taxdetail_tax_id := _y.tax_id; _row.taxdetail_tax_code := _y.tax_code; _row.taxdetail_tax_descrip := _y.tax_descrip; _row.taxdetail_tax_basis_tax_id := _y.tax_basis_tax_id; _row.taxdetail_taxrate_percent := _y.taxrate_percent; _row.taxdetail_taxrate_amount := _y.taxrate_amount; _row.taxdetail_level := _y.taxdetail_level; _row.taxdetail_taxclass_id := _y.taxclass_id; _row.taxdetail_taxclass_code := _y.taxclass_code; _row.taxdetail_taxclass_sequence := _y.taxclass_sequence; _row.taxdetail_tax := _tax; _row.taxdetail_curr_id := _y.curr_id; _row.taxdetail_curr_abbr := _y.curr_abbr; RETURN NEXT _row; -- Increment cumulative balance and sequence number IF(_y.taxclass_sequence <> 0) THEN _currcum := _currcum + _tax; END IF; _currseq := _y.taxclass_sequence; -- Loop to Calculate sub taxes FOR _z IN SELECT * FROM calculateSubTax(_y.tax_id,pDate, pCurrId, _tax, 0) LOOP --Mapping of data _row.taxdetail_tax_id := _z.taxdetail_tax_id; _row.taxdetail_tax_code := _z.taxdetail_tax_code; _row.taxdetail_tax_descrip := _z.taxdetail_tax_descrip; _row.taxdetail_tax_basis_tax_id := _z.taxdetail_tax_basis_tax_id; _row.taxdetail_taxrate_percent := _z.taxdetail_taxrate_percent; _row.taxdetail_taxrate_amount := _z.taxdetail_taxrate_amount; _row.taxdetail_level := _z.taxdetail_level; _row.taxdetail_taxclass_id := _z.taxdetail_taxclass_id; _row.taxdetail_taxclass_code := _z.taxdetail_taxclass_code; _row.taxdetail_taxclass_sequence := _z.taxdetail_taxclass_sequence; _row.taxdetail_tax := _z.taxdetail_tax; _row.taxdetail_curr_id := _z.taxdetail_curr_id; _row.taxdetail_curr_abbr := _z.taxdetail_curr_abbr; RETURN NEXT _row; --Add to cumulative counter (_curcum) _currcum := _currcum + _z.taxdetail_tax ; END LOOP; END LOOP; END; $_$; ALTER FUNCTION public.calculatetaxdetail(integer, integer, date, integer, numeric) OWNER TO admin; -- -- Name: calculatetaxdetailline(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calculatetaxdetailline(text, integer) RETURNS SETOF taxdetail LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOrderType ALIAS FOR $1; pOrderId ALIAS FOR $2; _row taxdetail%ROWTYPE; _qry text; _totaltax numeric; _y RECORD; _table text; BEGIN _totaltax=0.0; IF pOrderType = 'II' THEN _table := 'invcitemtax'; ELSIF pOrderType = 'BI' THEN _table := 'cobilltax'; ELSIF pOrderType = 'CI' THEN _table := 'cmitemtax'; ELSIF pOrderType = 'VI' THEN _table := 'voitemtax'; ELSIF pOrderType = 'TI' THEN _table := 'toitemtax'; ELSIF pOrderType = 'AR' THEN _table := 'aropentax'; ELSIF pOrderType = 'AP' THEN _table := 'apopentax'; END IF; _qry := 'SELECT taxhist_tax_id as tax_id, tax_code, tax_descrip, taxhist_tax, COALESCE(taxhist_sequence,0) AS taxhist_sequence FROM taxhist JOIN tax ON (taxhist_tax_id=tax_id) JOIN pg_class ON (pg_class.oid=taxhist.tableoid) WHERE ( (taxhist_parent_id = ' || pOrderId || ') AND (relname=''' || _table || ''') );'; FOR _y IN EXECUTE _qry LOOP _row.taxdetail_tax_id=_y.tax_id; _row.taxdetail_tax_code = _y.tax_code; _row.taxdetail_tax_descrip = _y.tax_descrip; _row.taxdetail_tax = _y.taxhist_tax; _row.taxdetail_level= 0 ; _row.taxdetail_taxclass_sequence= _y.taxhist_sequence; _totaltax = _totaltax + _y.taxhist_tax; RETURN NEXT _row; END LOOP; END; $_$; ALTER FUNCTION public.calculatetaxdetailline(text, integer) OWNER TO admin; -- -- Name: calculatetaxdetailsummary(text, integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calculatetaxdetailsummary(text, integer, text) RETURNS SETOF taxdetail LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOrderType ALIAS FOR $1; pOrderId ALIAS FOR $2; pDisplayType ALIAS FOR $3; _row taxdetail%ROWTYPE; _qry text := ''; _qry1 text; _totaltax numeric; _x RECORD; _y RECORD; _table text; BEGIN _totaltax=0.0; IF pOrderType IN ('S','Q','RA','PO') THEN IF pOrderType = 'S' THEN _qry := 'SELECT ' || 'COALESCE(cohead_taxzone_id, -1) AS taxzone_id, cohead_orderdate AS order_date, cohead_curr_id AS curr_id, COALESCE(coitem_taxtype_id, -1) AS taxtype_id, ROUND((coitem_qtyord * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio),2) AS amount FROM cohead, coitem WHERE ( (coitem_cohead_id = ' || pOrderId || ') AND (' || 'cohead_id = coitem_cohead_id) AND ( coitem_status != ''X'') )'; ELSEIF pOrderType = 'Q' THEN _qry := 'SELECT ' || 'COALESCE(quhead_taxzone_id, -1) AS taxzone_id, quhead_quotedate AS order_date, quhead_curr_id AS curr_id, COALESCE(quitem_taxtype_id, -1) AS taxtype_id, ROUND((quitem_qtyord * quitem_qty_invuomratio) * (quitem_price / quitem_price_invuomratio),2) AS amount FROM quhead, quitem WHERE ( (quitem_quhead_id = ' || pOrderId || ') AND (quhead_id = quitem_quhead_id) )'; ELSEIF pOrderType = 'RA' THEN _qry := 'SELECT ' || 'COALESCE(rahead_taxzone_id, -1) AS taxzone_id, rahead_authdate AS order_date, rahead_curr_id AS curr_id, COALESCE(raitem_taxtype_id, -1) AS taxtype_id, ROUND((raitem_qtyauthorized * raitem_qty_invuomratio) * (raitem_unitprice / raitem_price_invuomratio),2) AS amount FROM rahead, raitem WHERE ( (raitem_rahead_id = ' || pOrderId || ') AND (rahead_id = raitem_rahead_id) )'; ELSEIF pOrderType = 'PO' THEN _qry := 'SELECT ' || 'COALESCE(pohead_taxzone_id, -1) AS taxzone_id, pohead_orderdate AS order_date, pohead_curr_id AS curr_id, COALESCE(poitem_taxtype_id, -1) AS taxtype_id, ROUND(poitem_qty_ordered * poitem_unitprice, 2) AS amount FROM pohead, poitem WHERE ( (poitem_pohead_id = ' || pOrderId || ') AND (pohead_id = poitem_pohead_id) )'; END IF; FOR _x IN EXECUTE _qry LOOP _qry1 := 'SELECT * from calculatetaxdetail(' || _x.taxzone_id || ',' || _x.taxtype_id || ',''' || _x.order_date || ''',' || _x.curr_id || ',' || _x.amount || ')'; FOR _y IN EXECUTE _qry1 LOOP _row.taxdetail_tax_id=_y.taxdetail_tax_id; _row.taxdetail_tax_code = _y.taxdetail_tax_code; _row.taxdetail_tax_descrip = _y.taxdetail_tax_descrip; _row.taxdetail_tax = _y.taxdetail_tax; _row.taxdetail_level=_y.taxdetail_level; _row.taxdetail_taxclass_sequence= _y.taxdetail_taxclass_sequence; _totaltax = _totaltax + _y.taxdetail_tax; RETURN NEXT _row; END LOOP; END LOOP; IF pDisplayType = 'T' AND pOrderType <> 'PO' THEN IF pOrderType = 'S' THEN _qry := 'SELECT COALESCE(cohead_taxzone_id, -1) AS taxzone_id, cohead_orderdate AS order_date, cohead_curr_id AS curr_id, cohead_freight AS freight FROM cohead WHERE cohead_id = ' || pOrderId ; ELSEIF pOrderType = 'Q' THEN _qry := 'SELECT COALESCE(quhead_taxzone_id, -1) AS taxzone_id, quhead_quotedate AS order_date, quhead_curr_id AS curr_id, COALESCE(quhead_freight,0) AS freight FROM quhead WHERE quhead_id = ' || pOrderId; ELSEIF pOrderType = 'RA' THEN _qry := 'SELECT COALESCE(rahead_taxzone_id, -1) AS taxzone_id, COALESCE(rahead_authdate,CURRENT_DATE) AS order_date, rahead_curr_id AS curr_id, COALESCE(rahead_freight,0) AS freight FROM rahead WHERE rahead_id = ' || pOrderId; END IF; FOR _x IN EXECUTE _qry LOOP _qry1 := 'SELECT * from calculatetaxdetail(' || _x.taxzone_id || ', getfreighttaxtypeid(),''' || _x.order_date || ''',' || _x.curr_id || ',' || _x.freight || ')'; FOR _y IN EXECUTE _qry1 LOOP _row.taxdetail_tax_id=_y.taxdetail_tax_id; _row.taxdetail_tax_code = _y.taxdetail_tax_code; _row.taxdetail_tax_descrip = _y.taxdetail_tax_descrip; _row.taxdetail_tax = _y.taxdetail_tax; _row.taxdetail_level=_y.taxdetail_level; _row.taxdetail_taxclass_sequence= _y.taxdetail_taxclass_sequence; _totaltax = _totaltax + _y.taxdetail_tax; RETURN NEXT _row; END LOOP; END LOOP; END IF; ELSEIF pOrderType IN ('I','B','CM', 'VO','TO') THEN IF (pOrderType='I') THEN _table := 'invcheadtax'; ELSIF (pOrderType='B') THEN _table := 'cobmisctax'; ELSIF (pOrderType='CM') THEN _table := 'cmheadtax'; ELSIF (pOrderType='VO') THEN _table := 'voheadtax'; ELSIF (pOrderType='TO') THEN _table := 'tohead'; END IF; IF pOrderType = 'I' AND (pDisplayType IN ('L','T')) THEN _qry := 'SELECT taxhist_tax_id as tax_id, tax_code, tax_descrip, taxhist_tax, taxhist_sequence FROM invchead, invcitemtax LEFT OUTER JOIN tax ON (taxhist_tax_id=tax_id) LEFT OUTER JOIN invcitem ON (invcitem_id=taxhist_parent_id) WHERE invcitem_invchead_id = ' || pOrderId || ' AND invchead_id = invcitem_invchead_id '; ELSIF pOrderType = 'B' AND (pDisplayType IN ('L','T')) THEN _qry := 'SELECT taxhist_tax_id as tax_id, tax_code, tax_descrip, taxhist_tax, taxhist_sequence FROM cobmisc, cobilltax LEFT OUTER JOIN tax ON (taxhist_tax_id=tax_id) LEFT OUTER JOIN cobill ON (cobill_id=taxhist_parent_id) WHERE cobill_cobmisc_id = ' || pOrderId || ' AND cobmisc_id = cobill_cobmisc_id '; ELSIF pOrderType = 'CM' AND (pDisplayType IN ('L','T')) THEN _qry := 'SELECT taxhist_tax_id as tax_id, tax_code, tax_descrip, taxhist_tax, taxhist_sequence FROM cmhead, cmitemtax LEFT OUTER JOIN tax ON (taxhist_tax_id=tax_id) LEFT OUTER JOIN cmitem ON (cmitem_id=taxhist_parent_id) WHERE cmitem_cmhead_id = ' || pOrderId || ' AND cmhead_id = cmitem_cmhead_id '; ELSIF pOrderType = 'VO' AND (pDisplayType IN ('L','T')) THEN _qry := 'SELECT taxhist_tax_id as tax_id, tax_code, tax_descrip, taxhist_tax, taxhist_sequence FROM vohead, voitemtax LEFT OUTER JOIN tax ON (taxhist_tax_id=tax_id) LEFT OUTER JOIN voitem ON (voitem_id=taxhist_parent_id) WHERE voitem_vohead_id = ' || pOrderId || ' AND vohead_id = voitem_vohead_id '; ELSIF pOrderType = 'TO' AND (pDisplayType IN ('L','T')) THEN _qry := 'SELECT taxhist_tax_id as tax_id, tax_code, tax_descrip, taxhist_tax, taxhist_sequence FROM tohead, toitemtax LEFT OUTER JOIN tax ON (taxhist_tax_id=tax_id) LEFT OUTER JOIN toitem ON (toitem_id=taxhist_parent_id) WHERE toitem_tohead_id = ' || pOrderId || ' AND tohead_id = toitem_tohead_id '; END IF; IF pDisplayType IN ('F','T') AND pOrderType <> 'VO' THEN IF (length(_qry) > 0) THEN _qry := _qry || ' UNION ALL '; END IF; _qry := _qry || 'SELECT taxhist_tax_id as tax_id, tax_code, tax_descrip, taxhist_tax, taxhist_sequence FROM taxhist JOIN tax ON (taxhist_tax_id=tax_id) JOIN pg_class ON (pg_class.oid=taxhist.tableoid) WHERE ( (taxhist_parent_id = ' || pOrderId || ') AND (taxhist_taxtype_id=getfreighttaxtypeid()) AND (relname=''' || _table || ''') )'; END IF; IF pDisplayType IN ('A','T') THEN IF (length(_qry) > 0) THEN _qry := _qry || ' UNION ALL '; END IF; _qry := _qry || 'SELECT taxhist_tax_id as tax_id, tax_code, tax_descrip, taxhist_tax, taxhist_sequence FROM taxhist JOIN tax ON (taxhist_tax_id=tax_id) JOIN pg_class ON (pg_class.oid=taxhist.tableoid) WHERE ( (taxhist_parent_id = ' || pOrderId || ') AND (taxhist_taxtype_id=getadjustmenttaxtypeid()) AND (relname=''' || _table || ''') )'; END IF; FOR _y IN EXECUTE _qry LOOP _row.taxdetail_tax_id=_y.tax_id; _row.taxdetail_tax_code = _y.tax_code; _row.taxdetail_tax_descrip = _y.tax_descrip; _row.taxdetail_tax = _y.taxhist_tax; _row.taxdetail_level= 0 ; _row.taxdetail_taxclass_sequence= COALESCE(_y.taxhist_sequence,0); _totaltax = _totaltax + _y.taxhist_tax; RETURN NEXT _row; END LOOP; END IF; END; $_$; ALTER FUNCTION public.calculatetaxdetailsummary(text, integer, text) OWNER TO admin; -- -- Name: calculatetaxhist(text, integer, integer, integer, date, integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calculatetaxhist(text, integer, integer, integer, date, integer, numeric) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTableName ALIAS FOR $1; pParentId ALIAS FOR $2; pTaxZoneId ALIAS FOR $3; pTaxTypeId ALIAS FOR $4; pDate ALIAS FOR $5; pCurrId ALIAS FOR $6; pAmount ALIAS FOR $7; _qry TEXT; BEGIN IF (pTableName IS NULL) THEN RAISE EXCEPTION 'A table name is required to calculate tax history'; ELSEIF (pParentId IS NULL) THEN RAISE EXCEPTION 'A parent ID is required to calculate tax history'; ELSEIF (pDate IS NULL) THEN RAISE EXCEPTION 'A date is required to calculate tax history'; ELSEIF (pAmount IS NULL) THEN RAISE EXCEPTION 'An amount is required to calculate tax history'; END IF; -- Build a query that deletes any previous tax history for this document record _qry := 'DELETE FROM ' || pTableName || ' WHERE taxhist_parent_id = ' || pParentId || ' AND taxhist_taxtype_id <> getadjustmenttaxtypeid();'; EXECUTE _qry; -- Next, build and execute query that inserts new rows. _qry := 'INSERT INTO ' || pTableName || ' ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate) SELECT ' || pParentId || ','; IF (pTaxTypeId IS NULL) THEN _qry := _qry || 'NULL'; ELSE _qry := _qry || pTaxTypeId; END If; _qry := _qry || ', taxdetail_tax_id,' || pAmount || ', taxdetail_tax_basis_tax_id, taxdetail_taxclass_sequence, taxdetail_taxrate_percent, taxdetail_taxrate_amount, taxdetail_tax, ''' || pDate || ''' FROM calculatetaxdetail(' || COALESCE(pTaxZoneId,-1) || ',' || COALESCE(pTaxTypeId,-1) ||',''' || pDate || ''',' || pCurrId || ',' || pAmount || ');'; EXECUTE _qry; RETURN true; END; $_$; ALTER FUNCTION public.calculatetaxhist(text, integer, integer, integer, date, integer, numeric) OWNER TO admin; -- -- Name: calcvoucheramt(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calcvoucheramt(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVoucherid ALIAS FOR $1; _amount NUMERIC := 0; BEGIN SELECT SUM(COALESCE(vodist_amount, 0)) INTO _amount FROM vodist WHERE (vodist_vohead_id=pVoucherid); RETURN _amount; END; $_$; ALTER FUNCTION public.calcvoucheramt(integer) OWNER TO admin; -- -- Name: calcvoucherfreight(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calcvoucherfreight(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVoucherid ALIAS FOR $1; _amount NUMERIC := 0; BEGIN SELECT SUM(COALESCE(voitem_freight, 0)) INTO _amount FROM voitem WHERE (voitem_vohead_id=pVoucherid); RETURN _amount; END; $_$; ALTER FUNCTION public.calcvoucherfreight(integer) OWNER TO admin; -- -- Name: calcvouchertax(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calcvouchertax(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVoucherid ALIAS FOR $1; _amount NUMERIC := 0; BEGIN SELECT COALESCE(calculateTax(vohead_taxzone_id, vohead_taxtype_id, vohead_docdate, vohead_curr_id, calcVoucherAmt(vohead_id)), 0) INTO _amount FROM vohead WHERE (vohead_id=pVoucherid); RETURN _amount; END; $_$; ALTER FUNCTION public.calcvouchertax(integer) OWNER TO admin; -- -- Name: calcwooperstartstub(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION calcwooperstartstub(integer, integer) RETURNS date LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoId ALIAS FOR $1; pBooitemSeqId ALIAS FOR $2; _result DATE; BEGIN IF ( SELECT ((metric_value='t') AND packageIsEnabled('xtmfg')) FROM metric WHERE(metric_name='Routings') ) THEN RETURN xtmfg.calcWooperStart(pWoId, pBooitemSeqId); END IF; RETURN null; END; $_$; ALTER FUNCTION public.calcwooperstartstub(integer, integer) OWNER TO admin; -- -- Name: cancelbillingselection(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION cancelbillingselection(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCobmiscid ALIAS FOR $1; BEGIN IF ( ( SELECT cobmisc_posted FROM cobmisc WHERE (cobmisc_id=pCobmiscid) ) ) THEN RETURN -1; END IF; DELETE FROM cobill WHERE (cobill_cobmisc_id=pCobmiscid); DELETE FROM cobmisc WHERE (cobmisc_id=pCobmiscid); RETURN 1; END; $_$; ALTER FUNCTION public.cancelbillingselection(integer) OWNER TO admin; -- -- Name: changeaccountingperioddates(integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION changeaccountingperioddates(integer, date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _check INTEGER; _r RECORD; BEGIN -- Check to make sure that the passed period is not closed IF ( ( SELECT period_closed FROM period WHERE (period_id=pPeriodid) ) ) THEN RETURN -1; END IF; -- Check to make sure that the passed start date does not fall -- into another period SELECT period_id INTO _check FROM period WHERE ( (pStartDate BETWEEN period_start AND period_end) AND (period_id <> pPeriodid) ) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; -- Check to make sure that the passed end date does not fall -- into another period SELECT period_id INTO _check FROM period WHERE ( (pEndDate BETWEEN period_start AND period_end) AND (period_id <> pPeriodid) ) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; -- Check to make sure that the new passed start and end dates do not -- orphan a posted G/L Transaction SELECT gltrans_id INTO _check FROM gltrans, period WHERE ( (gltrans_date BETWEEN period_start AND period_end) AND (gltrans_posted) AND (NOT (gltrans_date BETWEEN pStartDate AND pEndDate)) AND (period_id=pPeriodid) ) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; -- Alter the start and end dates of the pass period UPDATE period SET period_start=pStartDate, period_end=pEndDate WHERE (period_id=pPeriodid); -- Post any unposted G/L Transactions into the period FOR _r IN SELECT DISTINCT gltrans_sequence FROM gltrans WHERE ( (NOT gltrans_posted) AND (gltrans_date BETWEEN pStartDate AND pEndDate) ) LOOP PERFORM postIntoTrialBalance(_r.gltrans_sequence); END LOOP; -- All done RETURN 1; END; $_$; ALTER FUNCTION public.changeaccountingperioddates(integer, date, date) OWNER TO admin; -- -- Name: changeaccountingyearperioddates(integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION changeaccountingyearperioddates(integer, date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _check INTEGER; _checkBool BOOLEAN; _r RECORD; BEGIN -- Check to make sure that the passed yearperiod is not closed IF ( ( SELECT yearperiod_closed FROM yearperiod WHERE (yearperiod_id=pPeriodid) ) ) THEN RETURN -1; END IF; -- Check to make sure that the passed start date does not fall -- into another yearperiod SELECT yearperiod_id INTO _check FROM yearperiod WHERE ( (pStartDate BETWEEN yearperiod_start AND yearperiod_end) AND (yearperiod_id <> pPeriodid) ) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; -- Check to make sure that the passed end date does not fall -- into another yearperiod SELECT yearperiod_id INTO _check FROM yearperiod WHERE ( (pEndDate BETWEEN yearperiod_start AND yearperiod_end) AND (yearperiod_id <> pPeriodid) ) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; -- Check to make sure that the passed yearperiod is not closed IF ( ( SELECT (count(period_id) > 0) FROM period WHERE ((period_yearperiod_id=pPeriodid) AND (period_start < pStartDate OR period_end > pEndDate)) ) ) THEN RETURN -4; END IF; -- Make sure that the passed start is prior to the end date SELECT (pStartDate > pEndDate) INTO _checkBool; IF (_checkBool) THEN RETURN -5; END IF; -- Alter the start and end dates of the pass period UPDATE yearperiod SET yearperiod_start=pStartDate, yearperiod_end=pEndDate WHERE (yearperiod_id=pPeriodid); -- All done RETURN 1; END; $_$; ALTER FUNCTION public.changeaccountingyearperioddates(integer, date, date) OWNER TO admin; -- -- Name: changefkeypointers(text, text, integer, integer, text[], boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION changefkeypointers(text, text, integer, integer, text[], boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSchema ALIAS FOR $1; pTable ALIAS FOR $2; pSourceId ALIAS FOR $3; pTargetId ALIAS FOR $4; pIgnore ALIAS FOR $5; _purge BOOLEAN := COALESCE($6, FALSE); _counter INTEGER := 0; _count1 INTEGER := 0; _fk RECORD; _pk TEXT[]; BEGIN -- for all foreign keys that point to pSchema.pTable FOR _fk IN EXECUTE 'SELECT fkeyns.nspname AS schemaname, fkeytab.relname AS tablename, conkey, attname, typname FROM pg_constraint JOIN pg_class basetab ON (confrelid=basetab.oid) JOIN pg_namespace basens ON (basetab.relnamespace=basens.oid) JOIN pg_class fkeytab ON (conrelid=fkeytab.oid) JOIN pg_namespace fkeyns ON (fkeytab.relnamespace=fkeyns.oid) JOIN pg_attribute ON (attrelid=conrelid AND attnum=conkey[1]) JOIN pg_type ON (atttypid=pg_type.oid) WHERE basetab.relname = ' || quote_literal(pTable) || ' AND basens.nspname = ' || quote_literal(pSchema) || ' AND fkeytab.relname NOT IN (''' || ARRAY_TO_STRING(pIgnore, ''', ''') || ''')' LOOP IF (ARRAY_UPPER(_fk.conkey, 1) > 1) THEN RAISE EXCEPTION 'Cannot change the foreign key in %.% that refers to %.% because the foreign key constraint has multiple columns. [xtuple: changefkeypointers, -1, %.%, %.%]', _fk.schemaname, _fk.tablename, pSchema, pTable, _fk.schemaname, _fk.tablename, pSchema, pTable; END IF; -- optionally make a backup copy of the data IF (NOT _purge) THEN -- determine the primary key column of the fkey table _pk := primaryKeyFields(_fk.schemaname, _fk.tablename); IF (ARRAY_UPPER(_pk, 1) > 1) THEN RAISE EXCEPTION 'Cannot change foreign key references in %.% because it has a composite primary key. Try setting the purge option. [xtuple: changefkeypointers, -4, %.%]', _fk.schemaname, _fk.tablename, _fk.schemaname, _fk.tablename; END IF; -- make the backup copy EXECUTE 'INSERT INTO mrgundo ( mrgundo_schema, mrgundo_table, mrgundo_pkey_col, mrgundo_pkey_id, mrgundo_col, mrgundo_value, mrgundo_type, mrgundo_base_schema, mrgundo_base_table, mrgundo_base_id ) SELECT ' || quote_literal(_fk.schemaname) || ', ' || quote_literal(_fk.tablename) || ', ' || quote_literal(_pk[1]) || ', ' || _pk[1] || ', ' || quote_literal(_fk.attname) || ', ' || _fk.attname || ', ' || quote_literal(_fk.typname) || ', ' || quote_literal(pSchema) || ', ' || quote_literal(pTable) || ', ' || pTargetId || ' FROM ' || _fk.schemaname || '.' || _fk.tablename || ' WHERE ('|| _fk.attname || '=' || pSourceId || ');'; END IF; -- actually change the foreign keys to point to the desired base table record EXECUTE 'UPDATE ' || _fk.schemaname || '.' || _fk.tablename || ' SET ' || _fk.attname || '=' || pTargetId || ' WHERE (' || _fk.attname || '=' || pSourceId || ');'; GET DIAGNOSTICS _count1 = ROW_COUNT; _counter := _counter + _count1; END LOOP; RETURN _counter; END; $_$; ALTER FUNCTION public.changefkeypointers(text, text, integer, integer, text[], boolean) OWNER TO admin; -- -- Name: FUNCTION changefkeypointers(text, text, integer, integer, text[], boolean); Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON FUNCTION changefkeypointers(text, text, integer, integer, text[], boolean) IS 'Change the data in all tables with foreign key relationships so they point to the pSchema.pTable record with primary key pTargetId instead of the record with primary key pSourceId. Ignore any tables listed in pIgnore. If the final arg is TRUE, make a backup copy of the original data in the mrgundo table.'; -- -- Name: changepoitemduedate(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION changepoitemduedate(ppoitemid integer, pdate date) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN changePoitemDueDate(pPoitemid, pDate, false); END; $$; ALTER FUNCTION public.changepoitemduedate(ppoitemid integer, pdate date) OWNER TO admin; -- -- Name: changepoitemduedate(integer, date, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION changepoitemduedate(ppoitemid integer, pdate date, pbyso boolean) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF ( ( SELECT (poitem_status IN ('C')) FROM poitem WHERE (poitem_id=pPoitemid) ) ) THEN RETURN -1; END IF; UPDATE poitem SET poitem_duedate=pDate WHERE (poitem_id=pPoitemid); IF (pBySO) THEN --Generate the PoItemUpdatedBySo event INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'P', poitem_id, itemsite_warehous_id, (pohead_number || '-'|| poitem_linenumber || ': ' || item_number) FROM evntnot JOIN evnttype ON (evntnot_evnttype_id=evnttype_id) JOIN itemsite ON (evntnot_warehous_id=itemsite_warehous_id) JOIN item ON (itemsite_item_id=item_id) JOIN poitem ON (poitem_itemsite_id=itemsite_id) JOIN pohead ON (poitem_pohead_id=pohead_id) WHERE( (poitem_id=pPoitemid) AND (poitem_duedate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name='PoItemUpdatedBySo') ); END IF; RETURN pPoitemid; END; $$; ALTER FUNCTION public.changepoitemduedate(ppoitemid integer, pdate date, pbyso boolean) OWNER TO admin; -- -- Name: changepoitemqty(integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION changepoitemqty(ppoitemid integer, pqty numeric) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN changePoitemQty(pPoitemid, pQty, false); END; $$; ALTER FUNCTION public.changepoitemqty(ppoitemid integer, pqty numeric) OWNER TO admin; -- -- Name: changepoitemqty(integer, numeric, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION changepoitemqty(ppoitemid integer, pqty numeric, pbyso boolean) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN IF ( ( SELECT (poitem_status IN ('C')) FROM poitem WHERE (poitem_id=pPoitemid) ) ) THEN RETURN -1; END IF; UPDATE poitem SET poitem_qty_ordered=pQty WHERE (poitem_id=pPoitemid); IF (pBySO) THEN --Generate the PoItemUpdatedBySo event INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'P', poitem_id, itemsite_warehous_id, (pohead_number || '-'|| poitem_linenumber || ': ' || item_number) FROM evntnot JOIN evnttype ON (evntnot_evnttype_id=evnttype_id) JOIN itemsite ON (evntnot_warehous_id=itemsite_warehous_id) JOIN item ON (itemsite_item_id=item_id) JOIN poitem ON (poitem_itemsite_id=itemsite_id) JOIN pohead ON (poitem_pohead_id=pohead_id) WHERE( (poitem_id=pPoitemid) AND (poitem_duedate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name='PoItemUpdatedBySo') ); END IF; RETURN pPoitemid; END; $$; ALTER FUNCTION public.changepoitemqty(ppoitemid integer, pqty numeric, pbyso boolean) OWNER TO admin; -- -- Name: changeprdate(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION changeprdate(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrid ALIAS FOR $1; pDueDate ALIAS FOR $2; BEGIN UPDATE pr SET pr_duedate=pDueDate WHERE (pr_id=pPrid); RETURN 0; END; $_$; ALTER FUNCTION public.changeprdate(integer, date) OWNER TO admin; -- -- Name: changeprqty(integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION changeprqty(integer, numeric) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrid ALIAS FOR $1; pQty ALIAS FOR $2; BEGIN UPDATE pr SET pr_qtyreq=pQty WHERE (pr_id=pPrid); RETURN TRUE; END; $_$; ALTER FUNCTION public.changeprqty(integer, numeric) OWNER TO admin; -- -- Name: changeprqty(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION changeprqty(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pPrid ALIAS FOR $1; pDueDate ALIAS FOR $2; BEGIN UPDATE pr SET pr_duedate=pDueDate WHERE (pr_id=pPrid); RETURN 0; END; $_$; ALTER FUNCTION public.changeprqty(integer, date) OWNER TO admin; -- -- Name: changepseudofkeypointers(text, text, text, integer, text, text, integer, text, text, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION changepseudofkeypointers(text, text, text, integer, text, text, integer, text, text, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSchema ALIAS FOR $1; pTable ALIAS FOR $2; pFkeyCol ALIAS FOR $3; pSourceId ALIAS FOR $4; pBaseSchema ALIAS FOR $5; pBaseTable ALIAS FOR $6; pTargetId ALIAS FOR $7; pTypeCol ALIAS FOR $8; pType ALIAS FOR $9; _purge BOOLEAN := COALESCE($10, FALSE); _counter INTEGER := 0; _coltype TEXT; _pk TEXT[]; BEGIN IF (NOT _purge) THEN EXECUTE 'SELECT typname FROM pg_type JOIN pg_attribute ON (pg_type.oid=atttypid) JOIN pg_class ON (attrelid=pg_class.oid) JOIN pg_namespace ON (relnamespace=pg_namespace.oid) WHERE (relname=' || quote_literal(pTable) || ') AND (nspname=' || quote_literal(pSchema) || ') AND (attname=' || quote_literal(pFkeyCol) || ')' INTO _coltype; _pk := primaryKeyFields(pSchema, pTable); IF (ARRAY_UPPER(_pk, 1) > 1) THEN RAISE EXCEPTION 'Cannot change pseudo-foreign key references in %.% because it has a composite primary key. Try setting the purge option. [xtuple: changepseudofkeypointers, -1, %.%', pSchema, pTable, pSchema, pTable; END IF; EXECUTE 'INSERT INTO mrgundo ( mrgundo_schema, mrgundo_table, mrgundo_pkey_col, mrgundo_pkey_id, mrgundo_col, mrgundo_value, mrgundo_type, mrgundo_base_schema, mrgundo_base_table, mrgundo_base_id ) SELECT ' || quote_literal(pSchema) || ', ' || quote_literal(pTable) || ', ' || quote_literal(_pk[1]) || ', ' || quote_ident(_pk[1]) || ', ' || quote_literal(pFkeyCol) || ', ' || quote_ident(pFkeyCol) || ', ' || quote_literal(_coltype) || ', ' || quote_literal(pBaseSchema) || ', ' || quote_literal(pBaseTable) || ', ' || pTargetId || ' FROM ' || quote_ident(pSchema) || '.' || quote_ident(pTable) || ' WHERE (('|| quote_ident(pFkeyCol) || '=' || pSourceId || ') AND ('|| quote_ident(pTypeCol) || '=' || quote_literal(pType) || '));'; END IF; -- actually change the foreign keys to point to the desired base table record EXECUTE 'UPDATE ' || quote_ident(pSchema) || '.' || quote_ident(pTable) || ' SET ' || quote_ident(pFkeyCol) || '=' || pTargetId || ' WHERE ((' || quote_ident(pFkeyCol) || '=' || pSourceId || ') AND (' || quote_ident(pTypeCol) || '=' || quote_literal(pType) || '));'; GET DIAGNOSTICS _counter = ROW_COUNT; RETURN _counter; END; $_$; ALTER FUNCTION public.changepseudofkeypointers(text, text, text, integer, text, text, integer, text, text, boolean) OWNER TO admin; -- -- Name: FUNCTION changepseudofkeypointers(text, text, text, integer, text, text, integer, text, text, boolean); Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON FUNCTION changepseudofkeypointers(text, text, text, integer, text, text, integer, text, text, boolean) IS 'Change the data in pSchema.pTable with a pseudo-foreign key relationship to another (unnamed) table. Make pSchema.pTable point to the record with primary key pTargetId instead of the record with primary key pSourceId. pSchema.pTable cannot have a true foreign key relationship because it holds data that can point to any of several tables. The pType value in the pTypeCol column describes which table the data refer to (e.g. "T" may indicate that the current record refers to a "cntct"). If the final arg is TRUE, make a backup copy of the data in the mrgundo table.'; -- -- Name: changewodates(integer, date, date, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION changewodates(integer, date, date, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pStartDate ALIAS FOR $2; pDueDate ALIAS FOR $3; changeChildren ALIAS FOR $4; _p RECORD; returnCode INTEGER; _vtemp NUMERIC; BEGIN SELECT wo_status, wo_startdate, itemsite_warehous_id INTO _p FROM wo Inner Join itemsite on wo_itemsite_id=itemsite_id WHERE (wo_id=pWoid); IF (_p.wo_status = 'C') THEN returnCode := 0; ELSIF (_p.wo_status IN ('R','I')) THEN INSERT INTO evntlog (evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number, evntlog_olddate, evntlog_newdate) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'W', wo_id, itemsite_warehous_id, formatWoNumber(wo_id), wo_duedate, pDueDate FROM evntnot, evnttype, itemsite, item, wo WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (evnttype_name='RWoDueDateRequestChange') AND (wo_id=pWoid) ); returnCode := 0; END IF; -- Reschedule operations if routings enabled IF (fetchMetricBool('Routings')) THEN -- Reschedule wooper IF (fetchMetricBool('UseSiteCalendar')) THEN UPDATE xtmfg.wooper SET wooper_scheduled = calculatenextworkingdate(itemsite_warehous_id,DATE(pStartDate), CAST(calculateworkdays(itemsite_warehous_id, DATE(wo_startdate), DATE(wooper_scheduled)) as INTEGER)) FROM wo JOIN itemsite ON (wo_itemsite_id=itemsite_id) WHERE ( (wooper_wo_id=wo_id) AND (wo_id=pWoid) ); ELSE UPDATE xtmfg.wooper SET wooper_scheduled = (wooper_scheduled::DATE + (pStartDate - wo_startdate)) FROM wo WHERE ( (wooper_wo_id=wo_id) AND (wo_id=pWoid) ); END IF; -- Reschedule any womatl that is linked to wooper items -- and is set to be scheduled with the wooper in question UPDATE womatl SET womatl_duedate=wooper_scheduled FROM xtmfg.wooper WHERE ( (womatl_schedatwooper) AND (womatl_wooper_id=wooper_id) AND (womatl_wo_id=pWoid) ); END IF; -- Reschedule any womatl that is not linked to wooper items UPDATE womatl SET womatl_duedate=pStartDate WHERE ( (NOT womatl_schedatwooper) AND (womatl_wo_id=pWoid) ); -- Reschedule the W/O UPDATE wo SET wo_startdate=pStartDate, wo_duedate=pDueDate WHERE (wo_id=pWoid); -- Do the same for the children IF (changeChildren) THEN SELECT MAX(changeWoDates(wo_id, (pStartDate - itemsite_leadtime), pStartDate, TRUE)) INTO returnCode FROM wo, itemsite WHERE ( (wo_itemsite_id=itemsite_id) AND (wo_ordtype='W') AND (wo_ordid=pWoid) ); END IF; IF (returnCode IS NULL) THEN returnCode := 0; END IF; RETURN returnCode; END; $_$; ALTER FUNCTION public.changewodates(integer, date, date, boolean) OWNER TO admin; -- -- Name: changewoproject(integer, integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION changewoproject(integer, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pPrjid ALIAS FOR $2; changeChildren ALIAS FOR $3; woStatus CHAR(1); _result INTEGER; BEGIN SELECT wo_status INTO woStatus FROM wo WHERE (wo_id=pWoid); UPDATE wo SET wo_prj_id=pPrjid WHERE (wo_id=pWoid); IF (woStatus = 'E' AND changeChildren) THEN _result := ( SELECT MIN(changeWoProject(wo_id, pPrjid, TRUE)) FROM womatl, wo WHERE ((womatl_itemsite_id=wo_itemsite_id) AND (wo_ordtype='W') AND (womatl_wo_id=pWoid) AND (wo_ordid=pWoid)) ); UPDATE pr SET pr_prj_id=pPrjid FROM womatl WHERE ((womatl_wo_id=pWoid) AND (pr_order_type='W') AND (pr_order_id=womatl_id)); ELSE _result = 1; END IF; RETURN _result; END; $_$; ALTER FUNCTION public.changewoproject(integer, integer, boolean) OWNER TO admin; -- -- Name: changewoqty(integer, numeric, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION changewoqty(integer, numeric, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pQty ALIAS FOR $2; changeChildren ALIAS FOR $3; _r RECORD; _result INTEGER := 1; BEGIN SELECT wo_qtyord, wo_status, item_fractional INTO _r FROM wo JOIN itemsite ON (itemsite_id=wo_itemsite_id) JOIN item ON (item_id=itemsite_item_id) WHERE (wo_id=pWoid); IF (_r.wo_qtyord = pQty) THEN RETURN 0; END IF; IF (NOT _r.wo_status IN ('O','E','R','I')) THEN RETURN 1; END IF; IF (_r.wo_status IN ('R','I')) THEN INSERT INTO evntlog (evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number, evntlog_oldvalue, evntlog_newvalue) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'W', wo_id, itemsite_warehous_id, formatWoNumber(wo_id), wo_qtyord, pQty FROM evntnot, evnttype, itemsite, item, wo WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (evnttype_name='RWoQtyRequestChange') AND (wo_id=pWoid) ); _result = 0; END IF; UPDATE wo SET wo_qtyord=roundQty(_r.item_fractional, pQty) WHERE (wo_id=pWoid); UPDATE womatl SET womatl_qtyreq=(womatl_qtyfxd + wo_qtyord * womatl_qtyper) * (1 + womatl_scrap) FROM wo, itemsite WHERE ((womatl_wo_id=wo_id) AND (womatl_itemsite_id=itemsite_id) AND (wo_id=pWoid)); IF (fetchMetricBool('Routings')) THEN UPDATE xtmfg.wooper SET wooper_rntime = CASE WHEN ((booitem_rnqtyper = 0) OR (booitem_invproduomratio = 0)) THEN 0 WHEN (NOT booitem_rnrpt) THEN 0 ELSE ( ( booitem_rntime / booitem_rnqtyper / booitem_invproduomratio ) * wo_qtyord ) END FROM xtmfg.booitem, wo WHERE ((wooper_wo_id=wo_id) AND (wooper_booitem_id=booitem_id) AND (wo_id=pWoid)); END IF; IF (changeChildren) THEN _result := ( SELECT MIN(changeWoQty(wo_id, womatl_qtyreq, TRUE)) FROM womatl, wo WHERE ((womatl_itemsite_id=wo_itemsite_id) AND (wo_ordtype='W') AND (womatl_wo_id=pWoid) AND (wo_ordid=pWoid)) ); END IF; RETURN _result; END; $_$; ALTER FUNCTION public.changewoqty(integer, numeric, boolean) OWNER TO admin; -- -- Name: characteristicstostring(text, integer, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION characteristicstostring(text, integer, text, text) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTargetType ALIAS FOR $1; pTargetId ALIAS FOR $2; pValKeySep ALIAS FOR $3; pPairSep ALIAS FOR $4; _string TEXT := ''; _extra BOOLEAN := false; _r RECORD; BEGIN FOR _r IN SELECT char_name, charass_value FROM charass, char WHERE ((charass_char_id=char_id) AND (charass_target_type=pTargetType) AND (charass_target_id=pTargetId)) LOOP IF(_extra) THEN _string := _string || pPairSep; END IF; _extra := true; _string := _string || _r.char_name || pValKeySep || _r.charass_value; END LOOP; RETURN _string; END; $_$; ALTER FUNCTION public.characteristicstostring(text, integer, text, text) OWNER TO admin; -- -- Name: checkcreditmemositeprivs(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION checkcreditmemositeprivs(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmheadid ALIAS FOR $1; _check BOOLEAN; _result INTEGER; BEGIN IF (NOT fetchMetricBool('MultiWhs')) THEN RETURN true; END IF; IF (NOT fetchUsrPrefBool('selectedSites')) THEN RETURN true; END IF; SELECT COALESCE(COUNT(*), 0) INTO _result FROM ( SELECT cmitem_id FROM cmitem JOIN itemsite ON (itemsite_id=cmitem_itemsite_id) WHERE ( (cmitem_cmhead_id=pCmheadid) AND (itemsite_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) ) AS data; IF (_result > 0) THEN RETURN false; END IF; RETURN true; END; $_$; ALTER FUNCTION public.checkcreditmemositeprivs(integer) OWNER TO admin; -- -- Name: checkdetailformatted(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION checkdetailformatted(integer, integer) RETURNS SETOF checkdata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCheckheadid ALIAS FOR $1; pMaxLines ALIAS FOR $2; _row checkdata%ROWTYPE; _checkhead RECORD; _checkdetail RECORD; _rowcount INTEGER := 0; _page INTEGER := 1; _docnumber TEXT := ''; _docreference TEXT := ''; _docdate TEXT := ''; _docamount TEXT := ''; _docdiscount TEXT := ''; _docnetamount TEXT := ''; BEGIN -- Check header information SELECT checkhead_number AS checknumber, INITCAP(spellAmount(checkhead_amount, curr_id)) AS checkwords, formatDate(checkhead_checkdate) AS checkdate, formatMoney(checkhead_amount) AS checkamount, curr_symbol AS checkcurrsymbol, curr_abbr AS checkcurrabbr, curr_name AS checkcurrname, CASE WHEN checkhead_recip_type = 'C' THEN (SELECT cust_name FROM custinfo WHERE cust_id=checkhead_recip_id) WHEN checkhead_recip_type = 'T' THEN (SELECT taxauth_name FROM taxauth WHERE taxauth_id=checkhead_recip_id) WHEN checkhead_recip_type = 'V' THEN COALESCE((SELECT vendaddr_name FROM vendaddrinfo WHERE((UPPER(vendaddr_code)='REMIT') AND (vendaddr_vend_id=checkhead_recip_id))), (SELECT vend_name FROM vendinfo WHERE(vend_id=checkhead_recip_id))) END AS checkpayto, formatAddr(CASE WHEN checkhead_recip_type = 'C' THEN (SELECT cntct_addr_id FROM cntct, custinfo WHERE((cust_cntct_id=cntct_id) AND (cust_id=checkhead_recip_id))) WHEN checkhead_recip_type = 'T' THEN (SELECT taxauth_addr_id FROM taxauth WHERE(taxauth_id=checkhead_recip_id)) WHEN checkhead_recip_type = 'V' THEN COALESCE((SELECT vendaddr_addr_id FROM vendaddrinfo WHERE((UPPER(vendaddr_code)='REMIT') AND (vendaddr_vend_id=checkhead_recip_id))), (SELECT vend_addr_id FROM vendinfo WHERE(vend_id=checkhead_recip_id))) END) AS checkaddress, checkhead_for AS checkmemo INTO _checkhead FROM checkhead, curr_symbol WHERE((checkhead_curr_id = curr_id) AND (checkhead_id=pCheckheadid) ); IF (NOT FOUND) THEN RETURN; END IF; _row.checkdata_page := _page; _row.checkdata_checknumber := _checkhead.checknumber; _row.checkdata_checkwords := _checkhead.checkwords; _row.checkdata_checkdate := _checkhead.checkdate; _row.checkdata_checkamount := _checkhead.checkamount; _row.checkdata_checkcurrsymbol := _checkhead.checkcurrsymbol; _row.checkdata_checkcurrabbr := _checkhead.checkcurrabbr; _row.checkdata_checkcurrname := _checkhead.checkcurrname; _row.checkdata_checkpayto := _checkhead.checkpayto; _row.checkdata_checkaddress := _checkhead.checkaddress; _row.checkdata_checkmemo := _checkhead.checkmemo; -- Check item details FOR _checkdetail IN SELECT --VOUCHER------------- 1 AS ord, 1 AS sequence_value, checkitem_invcnumber, checkitem_ponumber, formatMoney(checkitem_amount) AS docnetamount, 'Invoice#: ' || vohead_invcnumber AS docnumber, formatDate(vohead_docdate) AS docdate, vohead_reference AS docreference, 'Voucher: ' || checkitem_vouchernumber AS vouchernumber, formatMoney(apopen_amount) AS docamount, formatMoney(checkitem_discount) AS docdiscount FROM checkitem, vohead, apopen WHERE ((checkitem_checkhead_id=pCheckheadid) AND (checkitem_vouchernumber = vohead_number) AND (apopen_docnumber = checkitem_vouchernumber) AND (apopen_doctype = 'V')) UNION SELECT --DEBIT MEMO ------------------------- 2 AS ord, 1 AS sequence_value, checkitem_invcnumber, checkitem_ponumber, formatMoney(checkitem_amount) AS f_amount, 'Debit Memo PO#: ' || checkitem_ponumber AS doc_number, '' AS f_docdate, 'Debit Memo: ' || checkitem_vouchernumber AS doc_reference, checkitem_vouchernumber AS vouchernumber, formatMoney(apopen_amount) AS amount, formatMoney(checkitem_discount) AS disc_cred FROM checkitem, apopen WHERE ((checkitem_checkhead_id=pCheckheadid) AND (checkitem_vouchernumber = apopen_docnumber) AND (apopen_doctype = 'D')) UNION SELECT --CREDITs-------------------------- 3 AS ord, 1 AS sequence_value, checkitem_invcnumber, checkitem_ponumber, formatMoney(checkitem_amount) AS f_amount, 'Invoice#: ' || vohead_invcnumber AS doc_number, formatDate(vohead_docdate) AS f_docdate, 'Credit Applied: ' || apapply_source_doctype || ' ' || apapply_source_docnumber AS doc_reference, 'Voucher ' || checkitem_vouchernumber AS vouchernumber, '' AS amount, formatMoney((apapply_amount)) AS disc_cred FROM checkitem, vohead, apapply WHERE ((checkitem_checkhead_id=pCheckheadid) AND (checkitem_vouchernumber = vohead_number) AND (apapply_target_docnumber = checkitem_vouchernumber )) UNION SELECT --NON-VENDOR----------------------- 4 AS ord, 1 AS sequence_value, checkitem_invcnumber, checkitem_ponumber, formatMoney(checkitem_amount) AS f_amount, checkitem_invcnumber AS doc_number, formatDate(checkitem_docdate) AS f_docdate, '' AS doc_reference, '' AS vouchernumber, '' AS amount, '' AS disc_cred FROM checkhead LEFT OUTER JOIN checkitem ON (checkitem_checkhead_id=checkhead_id) WHERE ((checkhead_id=pCheckheadid) AND (checkhead_recip_type != 'V')) LOOP IF (_rowcount = pMaxLines) THEN _row.checkdata_docnumber := _docnumber; _row.checkdata_docreference := _docreference; _row.checkdata_docdate := _docdate; _row.checkdata_docamount := _docamount; _row.checkdata_docdiscount := _docdiscount; _row.checkdata_docnetamount := _docnetamount; RETURN NEXT _row; -- update/reset some variables _rowcount = 0; _page := _page + 1; _docnumber := ''; _docreference := ''; _docdate := ''; _docamount := ''; _docdiscount := ''; _docnetamount := ''; _row.checkdata_page := _page; _row.checkdata_checknumber := _checkhead.checknumber; _row.checkdata_checkwords := 'VOID VOID PAGE '||_page||' OF CHECK #'||_checkhead.checknumber||' VOID VOID'; _row.checkdata_checkdate := 'VOID VOID VOID'; _row.checkdata_checkamount := 'VOID VOID VOID'; --_row.checkdata_checkcurrsymbol := _checkhead.checkcurrsymbol; --_row.checkdata_checkcurrabbr := _checkhead.checkcurrabbr; --_row.checkdata_checkcurrname := _checkhead.checkcurrname; _row.checkdata_checkpayto := 'VOID VOID VOID'; --_row.checkdata_checkaddress := _checkhead.checkaddress; _row.checkdata_checkmemo := 'VOID VOID PAGE '||_page||' OF CHECK #'||_checkhead.checknumber||' VOID VOID'; END IF; _rowcount := _rowcount + 1; _docnumber := _docnumber || _checkdetail.docnumber || E'\n'; _docreference := _docreference || _checkdetail.docreference || E'\n'; _docdate := _docdate || _checkdetail.docdate || E'\n'; _docamount := _docamount || _checkdetail.docamount || E'\n'; _docdiscount := _docdiscount || _checkdetail.docdiscount || E'\n'; _docnetamount := _docnetamount || _checkdetail.docnetamount || E'\n'; END LOOP; _row.checkdata_docnumber := _docnumber; _row.checkdata_docreference := _docreference; _row.checkdata_docdate := _docdate; _row.checkdata_docamount := _docamount; _row.checkdata_docdiscount := _docdiscount; _row.checkdata_docnetamount := _docnetamount; RETURN NEXT _row; RETURN; END; $_$; ALTER FUNCTION public.checkdetailformatted(integer, integer) OWNER TO admin; -- -- Name: checkinvoicesiteprivs(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION checkinvoicesiteprivs(integer) RETURNS boolean LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcheadid ALIAS FOR $1; _check BOOLEAN; _result INTEGER; BEGIN IF (NOT fetchMetricBool('MultiWhs')) THEN RETURN true; END IF; IF (NOT fetchUsrPrefBool('selectedSites')) THEN RETURN true; END IF; SELECT COALESCE(COUNT(*), 0) INTO _result FROM ( SELECT invcitem_id FROM invcitem WHERE ( (invcitem_invchead_id=pInvcheadid) AND (invcitem_warehous_id <> -1) AND (invcitem_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) ) AS data; IF (_result > 0) THEN RETURN false; END IF; RETURN true; END; $_$; ALTER FUNCTION public.checkinvoicesiteprivs(integer) OWNER TO admin; -- -- Name: checkpositeprivs(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION checkpositeprivs(integer) RETURNS boolean LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPoheadid ALIAS FOR $1; _check BOOLEAN; _result INTEGER; BEGIN IF (NOT fetchMetricBool('MultiWhs')) THEN RETURN true; END IF; IF (NOT fetchUsrPrefBool('selectedSites')) THEN RETURN true; END IF; SELECT COALESCE(COUNT(*), 0) INTO _result FROM ( SELECT poitem_id FROM poitem, itemsite WHERE ( (poitem_pohead_id=pPoheadid) AND (poitem_itemsite_id=itemsite_id) AND (itemsite_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) UNION SELECT pohead_warehous_id FROM pohead WHERE ( (pohead_id=pPoheadid) AND (pohead_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) ) AS data; IF (_result > 0) THEN RETURN false; END IF; RETURN true; END; $_$; ALTER FUNCTION public.checkpositeprivs(integer) OWNER TO admin; -- -- Name: checkprivilege(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION checkprivilege(text) RETURNS boolean LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrivilege ALIAS FOR $1; _result TEXT; BEGIN SELECT priv_id INTO _result FROM priv, grppriv, usrgrp WHERE((usrgrp_grp_id=grppriv_grp_id) AND (grppriv_priv_id=priv_id) AND (priv_name=pPrivilege) AND (usrgrp_username=getEffectiveXtUser())); IF (FOUND) THEN RETURN true; END IF; SELECT priv_id INTO _result FROM priv, usrpriv WHERE ((priv_id=usrpriv_priv_id) AND (priv_name=pPrivilege) AND (usrpriv_username=getEffectiveXtUser())); IF (FOUND) THEN RETURN true; ELSE RETURN false; END IF; END; $_$; ALTER FUNCTION public.checkprivilege(text) OWNER TO admin; -- -- Name: checkquotesiteprivs(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION checkquotesiteprivs(integer) RETURNS boolean LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; BEGIN RETURN checkQuoteSitePrivs(pQuheadid, NULL); END; $_$; ALTER FUNCTION public.checkquotesiteprivs(integer) OWNER TO admin; -- -- Name: checkquotesiteprivs(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION checkquotesiteprivs(integer, integer) RETURNS boolean LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; pWarehousid ALIAS FOR $2; _result INTEGER := 0; BEGIN -- RAISE NOTICE 'checkQuoteSitePrivs, pQuheadid = %', pQuheadid; -- RAISE NOTICE 'checkQuoteSitePrivs, pWarehousid = %', pWarehousid; IF (NOT fetchMetricBool('MultiWhs')) THEN RETURN true; END IF; IF ( (NOT fetchUsrPrefBool('selectedSites')) AND (pWarehousid IS NULL) ) THEN RETURN true; END IF; IF (pWarehousid IS NULL) THEN SELECT COALESCE(COUNT(*), 0) INTO _result FROM quitem JOIN itemsite ON (itemsite_id=quitem_itemsite_id) JOIN site() ON (warehous_id=itemsite_warehous_id) WHERE (quitem_quhead_id=pQuheadid); ELSE SELECT COALESCE(COUNT(*), 0) INTO _result FROM quitem JOIN itemsite ON (itemsite_id=quitem_itemsite_id) JOIN site() ON (warehous_id=itemsite_warehous_id) WHERE ( (quitem_quhead_id=pQuheadid) AND (itemsite_warehous_id=pWarehousid) ); END IF; IF (_result > 0) THEN RETURN true; END IF; RETURN false; END; $_$; ALTER FUNCTION public.checkquotesiteprivs(integer, integer) OWNER TO admin; -- -- Name: checkrasiteprivs(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION checkrasiteprivs(integer) RETURNS boolean LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pRaheadid ALIAS FOR $1; _check BOOLEAN; _result INTEGER; BEGIN IF (NOT fetchMetricBool('MultiWhs')) THEN RETURN true; END IF; IF (NOT fetchUsrPrefBool('selectedSites')) THEN RETURN true; END IF; SELECT COALESCE(COUNT(*), 0) INTO _result FROM ( SELECT raitem_id FROM raitem, itemsite WHERE ( (raitem_rahead_id=pRaheadid) AND (raitem_itemsite_id=itemsite_id) AND (itemsite_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) UNION SELECT raitem_id FROM raitem, itemsite WHERE ( (raitem_rahead_id=pRaheadid) AND (raitem_coitem_itemsite_id=itemsite_id) AND (itemsite_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) ) AS data; IF (_result > 0) THEN RETURN false; END IF; RETURN true; END; $_$; ALTER FUNCTION public.checkrasiteprivs(integer) OWNER TO admin; -- -- Name: checkshipmentsiteprivs(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION checkshipmentsiteprivs(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipheadid ALIAS FOR $1; _check BOOLEAN; _result INTEGER; BEGIN IF (NOT fetchMetricBool('MultiWhs')) THEN RETURN true; END IF; IF (NOT fetchUsrPrefBool('selectedSites')) THEN RETURN true; END IF; SELECT COALESCE(COUNT(*), 0) INTO _result FROM ( SELECT coitem_id FROM shipitem, coitem, itemsite WHERE ( (shipitem_shiphead_id=pShipheadid) AND (coitem_id=shipitem_orderitem_id) AND (coitem_itemsite_id=itemsite_id) AND (itemsite_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) UNION SELECT cohead_warehous_id FROM shipitem, coitem, cohead WHERE ( (shipitem_shiphead_id=pShipheadid) AND (coitem_id=shipitem_orderitem_id) AND (cohead_id=coitem_cohead_id) AND (cohead_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) ) AS data; IF (_result > 0) THEN RETURN false; END IF; RETURN true; END; $_$; ALTER FUNCTION public.checkshipmentsiteprivs(integer) OWNER TO admin; -- -- Name: checksositeprivs(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION checksositeprivs(integer) RETURNS boolean LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; _check BOOLEAN; _result INTEGER; BEGIN IF (NOT fetchMetricBool('MultiWhs')) THEN RETURN true; END IF; IF (NOT fetchUsrPrefBool('selectedSites')) THEN RETURN true; END IF; SELECT COALESCE(COUNT(*), 0) INTO _result FROM ( SELECT coitem_id FROM coitem, itemsite WHERE ( (coitem_cohead_id=pSoheadid) AND (coitem_itemsite_id=itemsite_id) AND (itemsite_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) UNION SELECT cohead_warehous_id FROM cohead WHERE ( (cohead_id=pSoheadid) AND (cohead_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) ) AS data; IF (_result > 0) THEN RETURN false; END IF; RETURN true; END; $_$; ALTER FUNCTION public.checksositeprivs(integer) OWNER TO admin; -- -- Name: checkvouchersiteprivs(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION checkvouchersiteprivs(integer) RETURNS boolean LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVoheadid ALIAS FOR $1; _check BOOLEAN; _result INTEGER; BEGIN IF (NOT fetchMetricBool('MultiWhs')) THEN RETURN true; END IF; IF (NOT fetchUsrPrefBool('selectedSites')) THEN RETURN true; END IF; SELECT COALESCE(COUNT(*), 0) INTO _result FROM ( SELECT voitem_id FROM voitem, poitem, itemsite WHERE ( (voitem_vohead_id=pVoheadid) AND (poitem_id=voitem_poitem_id) AND (poitem_itemsite_id=itemsite_id) AND (itemsite_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) UNION SELECT pohead_warehous_id FROM vohead, pohead WHERE ( (vohead_id=pVoheadid) AND (pohead_id=vohead_pohead_id) AND (pohead_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) ) AS data; IF (_result > 0) THEN RETURN false; END IF; RETURN true; END; $_$; ALTER FUNCTION public.checkvouchersiteprivs(integer) OWNER TO admin; -- -- Name: clearnumberissue(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION clearnumberissue(psequence text, pnumber integer) RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE __seqiss seqiss[]; __newiss seqiss[] := ARRAY[]::seqiss[]; _i INTEGER; _result BOOLEAN := FALSE; _interval TEXT := fetchMetricText('NumberIssueResetIntervalDays') || ' day'; _number INTEGER; BEGIN -- get the sequence to update SELECT orderseq_seqiss INTO __seqiss FROM orderseq WHERE (orderseq_name=psequence); IF (NOT FOUND) THEN RAISE EXCEPTION 'Invalid orderseq_name %', psequence; END IF; IF(ARRAY_LENGTH(COALESCE(__seqiss,__newiss),1) IS NULL) THEN RETURN FALSE; END IF; -- build a new array sans the number we are releasing FOR _i IN 1..ARRAY_LENGTH(__seqiss,1) LOOP IF((__seqiss[_i]).seqiss_number = pnumber) THEN _result = TRUE; -- don't bother re-adding stale numbers ELSIF (now() - _interval::INTERVAL > (__seqiss[_i]).seqiss_time) THEN IF (_number IS NULL) THEN _number := (__seqiss[_i]).seqiss_number; ELSE _number := LEAST((__seqiss[_i]).seqiss_number, _number); END IF; ELSE __newiss := __newiss || __seqiss[_i]; END IF; END LOOP; -- update the order sequence with the result UPDATE orderseq SET orderseq_seqiss = __newiss WHERE (orderseq_name=psequence); -- reset to any cleared stale number IF(_number IS NOT NULL) THEN UPDATE orderseq SET orderseq_number = _number WHERE (orderseq_name=psequence); END IF; RETURN _result; END; $$; ALTER FUNCTION public.clearnumberissue(psequence text, pnumber integer) OWNER TO admin; -- -- Name: clearnumberissue(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION clearnumberissue(psequence text, pnumber text) RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _castpnumber INTEGER; BEGIN -- for now, order numbers in the database are text but usually -- string representations of integers. allow for the occasional non-integer. BEGIN _castpnumber := CAST(pnumber AS INTEGER); EXCEPTION WHEN cannot_coerce OR invalid_text_representation THEN RAISE DEBUG 'clearNumberIssue(%, %) received an unexpected pnumber', psequence, pnumber; RETURN FALSE; END; RETURN clearNumberIssue(psequence, _castpnumber); END; $$; ALTER FUNCTION public.clearnumberissue(psequence text, pnumber text) OWNER TO admin; -- -- Name: clearpayment(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION clearpayment(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApselectid ALIAS FOR $1; BEGIN DELETE FROM apselect WHERE (apselect_id=pApselectid); RETURN 1; END; $_$; ALTER FUNCTION public.clearpayment(integer) OWNER TO admin; -- -- Name: closeaccountingperiod(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION closeaccountingperiod(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; _r RECORD; _nextPeriodid INTEGER; _trialbalid INTEGER; _ending NUMERIC; _currYear INTEGER; _nextYear INTEGER; BEGIN -- Bypass error checking is this the the initial period IF ( NOT ( SELECT period_initial FROM period WHERE (period_id=pPeriodid) ) ) THEN -- Check to make use that the period is not already closed IF ( ( SELECT period_closed FROM period WHERE (period_id=pPeriodid) ) ) THEN RETURN -1; END IF; -- Make sure that the day before this period belongs to another period SELECT prev.period_id AS periodid, prev.period_closed AS closed INTO _r FROM period AS prev, period AS curr WHERE ( (prev.period_end = (curr.period_start - 1)) AND (curr.period_id=pPeriodid) ); IF (NOT FOUND) THEN RETURN -2; END IF; -- Make sure that the previous period is closed IF (NOT _r.closed) THEN RETURN -3; END IF; END IF; -- Make sure that there the next period is defined SELECT next.period_id INTO _nextPeriodid FROM period AS next, period AS curr WHERE ( (next.period_start = (curr.period_end + 1)) AND (curr.period_id=pPeriodid) ); IF (NOT FOUND) THEN RETURN -4; END IF; -- Make sure that the user is not trying to prematurely close the Period IF ( ( SELECT (period_end >= CURRENT_DATE) FROM period WHERE (period_id=pPeriodid) ) ) THEN RETURN -5; END IF; SELECT yearperiod_id INTO _currYear FROM yearperiod, period WHERE ((period_end BETWEEN yearperiod_start and yearperiod_end) AND (period_id=pPeriodid)); IF (NOT FOUND) THEN _currYear := -1; END IF; SELECT yearperiod_id INTO _nextYear FROM yearperiod, period WHERE ((period_end BETWEEN yearperiod_start and yearperiod_end) AND (period_id=_nextPeriodid)); IF (NOT FOUND) THEN RETURN -6; END IF; -- Walk through the entire COA, calculating the ending balance and pushing -- it to the beginning balance for the next period FOR _r IN SELECT accnt_id, accnt_type IN ('E', 'R') AS revexp, trialbal_id, trialbal_beginning, trialbal_credits, trialbal_debits FROM accnt LEFT OUTER JOIN trialbal ON ( (trialbal_accnt_id=accnt_id) AND (trialbal_period_id=pPeriodid) ) ORDER BY accnt_id LOOP IF (_r.trialbal_id IS NULL) THEN _ending = 0; INSERT INTO trialbal ( trialbal_period_id, trialbal_accnt_id, trialbal_beginning, trialbal_ending, trialbal_dirty, trialbal_credits, trialbal_debits ) VALUES ( pPeriodid, _r.accnt_id, 0, 0, FALSE, 0, 0 ); ELSE _ending = (_r.trialbal_beginning - _r.trialbal_debits + _r.trialbal_credits); UPDATE trialbal SET trialbal_ending=_ending, trialbal_dirty = FALSE WHERE (trialbal_id=_r.trialbal_id); PERFORM forwardUpdateTrialBalance(_r.trialbal_id); END IF; IF (_r.revexp AND _currYear != _nextYear) THEN _ending := 0; END IF; -- Find the trialbal record for the next period SELECT trialbal_id INTO _trialbalid FROM trialbal WHERE ( (trialbal_period_id=_nextPeriodid) AND (trialbal_accnt_id=_r.accnt_id) ); IF (FOUND) THEN UPDATE trialbal SET trialbal_beginning = (_ending + trialbal_yearend), trialbal_ending = (_ending + trialbal_yearend - trialbal_debits + trialbal_credits) WHERE (trialbal_id=_trialbalid); ELSE INSERT INTO trialbal ( trialbal_period_id, trialbal_accnt_id, trialbal_beginning, trialbal_ending, trialbal_dirty, trialbal_credits, trialbal_debits ) VALUES(_nextPeriodid, _r.accnt_id, _ending, _ending, TRUE, 0, 0 ); END IF; END LOOP; -- Set the period_closed flag UPDATE period SET period_closed=TRUE WHERE (period_id=pPeriodid); RETURN pPeriodid; END; $_$; ALTER FUNCTION public.closeaccountingperiod(integer) OWNER TO admin; -- -- Name: closeaccountingyearperiod(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION closeaccountingyearperiod(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pYearPeriodid ALIAS FOR $1; _result INTEGER; BEGIN -- Check to make sure that the yearperiod is not already closed IF ( ( SELECT yearperiod_closed FROM yearperiod WHERE (yearperiod_id=pYearPeriodid) ) ) THEN RETURN -1; END IF; IF ( ( SELECT (count(period_id) > 0) FROM period WHERE ((period_yearperiod_id=pYearPeriodid) AND (NOT period_closed)) ) ) THEN RETURN -10; END IF; IF ( ( SELECT (count(yearperiod_id) > 0) FROM yearperiod WHERE ((yearperiod_end< ( SELECT yearperiod_end FROM yearperiod WHERE (yearperiod_id=pYearPeriodId)) ) AND (NOT yearperiod_closed)) ) ) THEN RETURN -11; END IF; -- Should we check for a previous yearperiod existing already ? -- If so then we should return -2 if one does not. -- If we did the previous yearperiod we should check to make sure that -- it is also closed. Returning -3 if it is not. -- Make sure that the user is not trying to prematurely close the YearPeriod IF ( ( SELECT (yearperiod_end >= CURRENT_DATE) FROM yearperiod WHERE (yearperiod_id=pYearPeriodid) ) ) THEN RETURN -5; END IF; -- Update the year end Retained Earnings SELECT updateRetainedEarnings(pYearPeriodid) INTO _result; IF (_result < 0) THEN RETURN _result; END IF; UPDATE yearperiod SET yearperiod_closed = TRUE WHERE yearperiod_id = pYearPeriodid; RETURN 0; END; $_$; ALTER FUNCTION public.closeaccountingyearperiod(integer) OWNER TO admin; -- -- Name: closepo(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION closepo(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPoheadid ALIAS FOR $1; BEGIN UPDATE poitem SET poitem_status='C' WHERE (poitem_pohead_id=pPoheadid); -- _poitemTrigger will close pohead when the last poitem is closed -- UPDATE pohead -- SET pohead_status='C' -- WHERE (pohead_id=pPoheadid); RETURN 1; END; $_$; ALTER FUNCTION public.closepo(integer) OWNER TO admin; -- -- Name: closewo(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION closewo(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pPostMaterialVariances ALIAS FOR $2; BEGIN RETURN closeWo(pWoid, pPostMaterialVariances, CURRENT_DATE); END; $_$; ALTER FUNCTION public.closewo(integer, boolean) OWNER TO admin; -- -- Name: closewo(integer, boolean, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION closewo(integer, boolean, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pPostMaterialVariances ALIAS FOR $2; pTransDate ALIAS FOR $3; _woNumber TEXT; _check CHAR; _itemlocSeries INTEGER := 0; BEGIN --If this is item type Job then we cannot close here SELECT itemsite_costmethod INTO _check FROM wo,itemsite WHERE ((wo_id=pWoid) AND (wo_itemsite_id=itemsite_id) AND (itemsite_costmethod = 'J')); IF (FOUND) THEN RAISE EXCEPTION 'Work orders for Job items are closed when all quantities are shipped'; END IF; SELECT formatWoNumber(pWoid) INTO _woNumber; -- If there are any tools issued on this job then we cannot close here IF ( SELECT (count(*) > 0) FROM womatl JOIN itemsite ON (womatl_itemsite_id=itemsite_id) JOIN item ON ((itemsite_item_id=item_id) AND (item_type='T')) WHERE ((womatl_wo_id=pWoid) AND (womatl_qtyiss > 0)) ) THEN RAISE EXCEPTION 'All Tools must be returned before the W/O can be closed'; END IF; -- Distribute any remaining wo_wipvalue to G/L - debit Inventory Cost, credit WIP PERFORM insertGLTransaction( 'W/O', 'WO', _woNumber, ('Manufacturing Inventory Cost Variance for ' || item_number), getPrjAccntId(wo_prj_id, costcat_wip_accnt_id), getPrjAccntId(wo_prj_id, costcat_invcost_accnt_id), -1, COALESCE(wo_wipvalue, 0), pTransDate ) FROM wo, itemsite, item, costcat WHERE ( (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (itemsite_costcat_id=costcat_id) AND (wo_id=pWoid) ); -- Distribute any remaining wo_brdvalue to G/L - debit Inventory Cost, credit WIP PERFORM insertGLTransaction( 'W/O', 'WO', _woNumber, ('Breeder Inventory Cost Variance for ' || item_number), getPrjAccntId(wo_prj_id, costcat_wip_accnt_id), CASE WHEN(itemsite_costmethod='A') THEN costcat_asset_accnt_id ELSE getPrjAccntId(wo_prj_id, costcat_invcost_accnt_id) END, -1, COALESCE(wo_brdvalue, 0), pTransDate ) FROM wo, itemsite, item, costcat WHERE ( (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (itemsite_costcat_id=costcat_id) AND (wo_id=pWoid) ); -- Don't bother with posting variances if the qtyrcv is 0 as -- they are meaningless. IF ( ( SELECT wo_qtyrcv FROM wo WHERE (wo_id=pWoid) ) > 0 ) THEN IF (pPostMaterialVariances) THEN -- Post womatl variances INSERT INTO womatlvar ( womatlvar_number, womatlvar_subnumber, womatlvar_posted, womatlvar_parent_itemsite_id, womatlvar_component_itemsite_id, womatlvar_qtyord, womatlvar_qtyrcv, womatlvar_qtyiss, womatlvar_qtyfxd, womatlvar_qtyper, womatlvar_scrap, womatlvar_wipscrap, womatlvar_bomitem_id, womatlvar_notes, womatlvar_ref ) SELECT wo_number, wo_subnumber, pTransDate, wo_itemsite_id, womatl_itemsite_id, wo_qtyord, wo_qtyrcv, itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyiss), itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyfxd), itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyper), womatl_scrap, itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtywipscrap), womatl_bomitem_id, womatl_notes, womatl_ref FROM wo, womatl, itemsite, item WHERE ((womatl_wo_id=wo_id) AND (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_type <> 'T') AND (wo_id=pWoid)); END IF; END IF; -- Delete any P/R's created for this W/O PERFORM deletePr('W', womatl_id) FROM womatl WHERE (womatl_wo_id=pWoid); UPDATE wo SET wo_wipvalue = 0, wo_brdvalue=0, wo_status='C' WHERE (wo_id=pWoid); RETURN 1; END; $_$; ALTER FUNCTION public.closewo(integer, boolean, date) OWNER TO admin; -- -- Name: cntct; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cntct ( cntct_id integer NOT NULL, cntct_crmacct_id integer, cntct_addr_id integer, cntct_first_name text, cntct_last_name text, cntct_honorific text, cntct_initials text, cntct_active boolean DEFAULT true, cntct_phone text, cntct_phone2 text, cntct_fax text, cntct_email text, cntct_webaddr text, cntct_notes text, cntct_title text, cntct_number text NOT NULL, cntct_middle text, cntct_suffix text, cntct_owner_username text, cntct_name text ); ALTER TABLE public.cntct OWNER TO admin; -- -- Name: TABLE cntct; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE cntct IS 'Contact - information on how to reach a living person'; -- -- Name: cntct(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION cntct() RETURNS SETOF cntct LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row cntct%ROWTYPE; _priv TEXT; _grant BOOLEAN; BEGIN -- This query will give us the most permissive privilege the user has been granted SELECT privilege, granted INTO _priv, _grant FROM privgranted WHERE privilege IN ('MaintainAllContacts','ViewAllContacts','MaintainPersonalContacts','ViewPersonalContacts') ORDER BY granted DESC, sequence LIMIT 1; -- If have an 'All' privilege return all results IF (_priv ~ 'All' AND _grant) THEN FOR _row IN SELECT * FROM cntct LOOP RETURN NEXT _row; END LOOP; -- Otherwise if have any other grant, must be personal privilege. ELSIF (_grant) THEN FOR _row IN SELECT * FROM cntct WHERE cntct_owner_username = getEffectiveXtUser() LOOP RETURN NEXT _row; END LOOP; END IF; RETURN; END; $$; ALTER FUNCTION public.cntct() OWNER TO admin; -- -- Name: FUNCTION cntct(); Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON FUNCTION cntct() IS 'A table function that returns Contact results according to privilege settings.'; -- -- Name: cntctdups(text, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION cntctdups(text, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) RETURNS SETOF cntctdup LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSearchText ALIAS FOR $1; pSearchContactName ALIAS FOR $2; pSearchPhone ALIAS FOR $3; pSearchEmail ALIAS FOR $4; pSearchNumber ALIAS FOR $5; pSearchName ALIAS FOR $6; pShowInactive ALIAS FOR $7; pIgnoreBlanks ALIAS FOR $8; pIndentedDups ALIAS FOR $9; pCheckHnfc ALIAS FOR $10; pCheckFirst ALIAS FOR $11; pCheckMiddle ALIAS FOR $12; pCheckLast ALIAS FOR $13; pCheckSuffix ALIAS FOR $14; pCheckPhone ALIAS FOR $15; pCheckEmail ALIAS FOR $16; _cntct cntctdup%ROWTYPE; _cntctdup cntctdup%ROWTYPE; _rec RECORD; _operator TEXT := ''; _clause TEXT; _qry TEXT := ''; _return BOOLEAN := true; _text TEXT; _first BOOLEAN := true; BEGIN -- Validate IF (pIndentedDups AND NOT pCheckHnfc AND NOT pCheckFirst AND NOT pCheckMiddle AND NOT pCheckLast AND NOT pCheckSuffix AND NOT pCheckEmail AND NOT pCheckPhone) THEN RETURN; END IF; _text = quote_literal(pSearchText); IF (pIndentedDups) THEN _qry := 'SELECT -1 AS cntct_id, -1 AS cntct_crmacct_id, -1 AS cntct_addr_id,'; IF (NOT pCheckFirst) THEN _qry := _qry || ''''' AS '; END IF; _qry := _qry || ' cntct_first_name,'; IF (NOT pCheckLast) THEN _qry := _qry || ''''' AS '; END IF; _qry := _qry || ' cntct_last_name,'; IF (NOT pCheckHnfc) THEN _qry := _qry || ''''' AS '; END IF; _qry := _qry || ' cntct_honorific,'; _qry := _qry || ' '''' AS cntct_initials,'; _qry := _qry || ' NULL AS cntct_active,'; IF (NOT pCheckPhone) THEN _qry := _qry || ''''' AS '; END IF; _qry := _qry || ' cntct_phone,'; IF (NOT pCheckPhone) THEN _qry := _qry || ''''' AS '; END IF; _qry := _qry || ' cntct_phone2,'; _qry := _qry || ' '''' AS cntct_fax,'; IF (NOT pCheckEmail) THEN _qry := _qry || ''''' AS '; END IF; _qry := _qry || ' cntct_email,'; _qry := _qry || ' '''' AS cntct_webaddr,'; _qry := _qry || ' '''' AS cntct_notes,'; _qry := _qry || ' '''' AS cntct_title,'; _qry := _qry || ' '''' AS cntct_number,'; IF (NOT pCheckMiddle) THEN _qry := _qry || ''''' AS '; END IF; _qry := _qry || ' cntct_middle,'; IF (NOT pCheckSuffix) THEN _qry := _qry || ''''' AS '; END IF; _qry := _qry || ' cntct_suffix,'; _qry := _qry || ' '''' AS cntct_owner_username,'; _qry := _qry || ' '''' AS cntct_name,'; _qry := _qry || ' '''' AS crmacct_number, '; _qry := _qry || ' '''' AS crmacct_name, '; _qry := _qry || ' NULL AS addr_id, NULL AS addr_active, '''' AS addr_line1, '''' AS addr_line2, '''' AS addr_line3, '''' AS addr_city, '''' AS addr_state, '''' AS addr_postalcode, '''' AS addr_country, '''' AS addr_notes, '''' AS addr_number, cntctdup_level FROM ('; END IF; _clause := 'SELECT cntct_id, cntct_crmacct_id, cntct_addr_id, UPPER(cntct_first_name) AS cntct_first_name, UPPER(cntct_last_name) AS cntct_last_name, UPPER(cntct_honorific) AS cntct_honorific, cntct_initials, cntct_active, cntct_phone, cntct_phone2, cntct_fax, UPPER(cntct_email) AS cntct_email, cntct_webaddr, cntct_notes, cntct_title, cntct_number, UPPER(cntct_middle) AS cntct_middle, UPPER(cntct_suffix) AS cntct_suffix, cntct_owner_username, cntct_name, crmacct_number, crmacct_name, addr.*, 0 AS cntctdup_level FROM cntct() LEFT OUTER JOIN crmacct ON (cntct_crmacct_id=crmacct_id) LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) WHERE '; IF (NOT pIndentedDups) THEN WHILE position('UPPER' in _clause) > 0 LOOP _clause := regexp_replace(_clause, 'UPPER', ''); END LOOP; END IF; _qry := _qry || _clause; IF (NOT pShowInactive) THEN _qry := _qry || ' cntct_active AND '; END IF; IF (pIgnoreBlanks) THEN _qry := _qry || ' (COALESCE(LENGTH(cntct_first_name || cntct_last_name),0) > 0) AND '; END IF; _qry := _qry || '(false '; IF (pSearchNumber) THEN _qry := _qry || ' OR (crmacct_number ~* ' || quote_literal(pSearchText) || ') '; END IF; IF (pSearchName) THEN _qry := _qry || ' OR (crmacct_name ~* ' || quote_literal(pSearchText) || ') '; END IF; IF (pSearchContactName) THEN _qry := _qry || ' OR (cntct_first_name || '' '' || cntct_last_name ~* ' || quote_literal(pSearchText) || ') '; END IF; IF (pSearchPhone) THEN _qry := _qry || ' OR (cntct_phone || '' '' || cntct_phone2 || '' '' || cntct_fax ~* ' || quote_literal(pSearchText) || ') '; END IF; IF (pSearchEmail) THEN _qry := _qry || ' OR (cntct_email ~* ' || quote_literal(pSearchText) || ') '; END IF; _qry := _qry || ' ) '; IF (pIndentedDups) THEN _qry := _qry || ') data'; _clause := ' GROUP BY cntctdup_level'; IF (pCheckHnfc) THEN _clause := _clause || ',cntct_honorific'; END IF; IF (pCheckFirst) THEN _clause := _clause || ',cntct_first_name'; END IF; IF (pCheckMiddle) THEN _clause := _clause || ',cntct_middle'; END IF; IF (pCheckLast) THEN _clause := _clause || ',cntct_last_name'; END IF; IF (pCheckSuffix) THEN _clause := _clause || ',cntct_suffix'; END IF; IF (pCheckEmail) THEN _clause := _clause || ',cntct_email'; END IF; IF (pCheckPhone) THEN _clause := _clause || ',cntct_phone'; _clause := _clause || ',cntct_phone2'; END IF; _qry := _qry || _clause; _clause := ' HAVING('; IF (pCheckHnfc) THEN _clause := _clause || 'OR COUNT(cntct_honorific) > 1 '; END IF; IF (pCheckFirst) THEN _clause := _clause || 'OR COUNT(cntct_first_name) > 1 '; END IF; IF (pCheckMiddle) THEN _clause := _clause || 'OR COUNT(cntct_middle) > 1 '; END IF; IF (pCheckLast) THEN _clause := _clause || 'OR COUNT(cntct_last_name) > 1 '; END IF; IF (pCheckSuffix) THEN _clause := _clause || 'OR COUNT(cntct_suffix) > 1 '; END IF; IF (pCheckEmail) THEN _clause := _clause || 'OR COUNT(cntct_email) > 1 '; END IF; IF (pCheckPhone) THEN _clause := _clause || 'OR (COUNT(cntct_phone) > 1 AND LENGTH(cntct_phone) > 0) '; _clause := _clause || 'OR (COUNT(cntct_phone2) > 1 AND LENGTH(cntct_phone2) > 0) '; END IF; _clause := _clause || ') '; _clause := overlay(_clause placing '' from 9 for 2); IF (pCheckHnfc) THEN _clause := _clause || 'AND LENGTH(cntct_honorific) > 0 '; END IF; IF (pCheckFirst) THEN _clause := _clause || 'AND LENGTH(cntct_first_name) > 0 '; END IF; IF (pCheckMiddle) THEN _clause := _clause || 'AND LENGTH(cntct_middle) > 0 '; END IF; IF (pCheckLast) THEN _clause := _clause || 'AND LENGTH(cntct_last_name) > 0 '; END IF; IF (pCheckSuffix) THEN _clause := _clause || 'AND LENGTH(cntct_suffix) > 0 '; END IF; IF (pCheckEmail) THEN _clause := _clause || 'AND LENGTH(cntct_email) > 0 '; END IF; _qry := _qry || _clause; END IF; _qry := _qry || ' ORDER BY cntct_last_name, cntct_first_name;'; -- raise exception '%',_qry; FOR _cntct IN EXECUTE _qry LOOP RETURN NEXT _cntct; -- If duplicates, get duplicates IF (pIndentedDups) THEN _qry := 'SELECT cntct.*, crmacct_number, crmacct_name, addr.*, 1 AS cntctdup_level FROM cntct() LEFT OUTER JOIN crmacct ON (cntct_crmacct_id=crmacct_id) LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) WHERE (true) '; IF (pCheckHnfc) THEN _qry := _qry || ' AND (UPPER(cntct_honorific)=' || quote_literal(_cntct.cntct_honorific) || ')'; END IF; IF (pCheckFirst) THEN _qry := _qry || ' AND (UPPER(cntct_first_name)=' || quote_literal(_cntct.cntct_first_name) || ')'; END IF; IF (pCheckMiddle) THEN _qry := _qry || ' AND (UPPER(cntct_middle)=' || quote_literal(_cntct.cntct_middle) || ')'; END IF; IF (pCheckLast) THEN _qry := _qry || ' AND (UPPER(cntct_last_name)=' || quote_literal(_cntct.cntct_last_name) || ')'; END IF; IF (pCheckSuffix) THEN _qry := _qry || ' AND (UPPER(cntct_suffix)=' || quote_literal(_cntct.cntct_suffix) || ')'; END IF; IF (pCheckPhone) THEN _qry := _qry || ' AND (cntct_phone=' || quote_literal(_cntct.cntct_phone) || ')'; END IF; IF (pCheckEmail) THEN _qry := _qry || ' AND (UPPER(cntct_email)=' || quote_literal(_cntct.cntct_email) || ')'; END IF; -- raise exception '%',_qry; FOR _cntctdup IN EXECUTE _qry LOOP RETURN NEXT _cntctdup; END LOOP; END IF; END LOOP; RETURN; END; $_$; ALTER FUNCTION public.cntctdups(text, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) OWNER TO admin; -- -- Name: cntctmerge(integer, integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION cntctmerge(integer, integer, boolean) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSourceCntctId ALIAS FOR $1; pTargetCntctId ALIAS FOR $2; pPurge ALIAS FOR $3; _fk RECORD; _pk RECORD; _sel RECORD; _seq INTEGER; _col TEXT; _pkcol TEXT; _qry TEXT; _multi BOOLEAN; BEGIN -- Validate IF (pSourceCntctId IS NULL) THEN RAISE EXCEPTION 'Source contact id can not be null'; ELSIF (pTargetCntctId IS NULL) THEN RAISE EXCEPTION 'Target contact id can not be null'; ELSIF (pPurge IS NULL) THEN RAISE EXCEPTION 'Purge flag can not be null'; END IF; -- Determine where this contact is used by analyzing foreign key linkages and update each FOR _fk IN SELECT pg_namespace.nspname AS schemaname, con.relname AS tablename, conkey AS seq, conrelid AS class_id FROM pg_constraint, pg_class f, pg_class con, pg_namespace WHERE confrelid=f.oid AND conrelid=con.oid AND f.relname = 'cntct' AND con.relnamespace=pg_namespace.oid AND con.relname NOT IN ('cntctsel', 'cntctmrgd', 'mrghist','trgthist') LOOP -- Validate IF (ARRAY_UPPER(_fk.seq,1) > 1) THEN RAISE EXCEPTION 'Updates to tables where the contact is one of multiple foreign key columns is not supported. Error on Table: %', pg_namespace.nspname || '.' || con.relname; END IF; _seq := _fk.seq[1]; -- Get the specific column name SELECT attname INTO _col FROM pg_attribute, pg_class WHERE ((attrelid=pg_class.oid) AND (pg_class.oid=_fk.class_id) AND (attnum=_seq)); IF (NOT pPurge) THEN -- Cache what we're going to do so we can restore if need be. -- Start by determining the primary key column for this table. _multi := false; _qry := 'SELECT pg_attribute.attname AS key FROM pg_attribute, pg_class WHERE pg_class.relnamespace = ( SELECT oid FROM pg_namespace WHERE pg_namespace.nspname = ''' || _fk.schemaname || ''') AND pg_class.oid IN ( SELECT indexrelid FROM pg_index WHERE indisprimary = true AND indrelid IN ( SELECT oid FROM pg_class WHERE lower(relname) = ''' || _fk.tablename || ''')) AND pg_attribute.attrelid = pg_class.oid AND pg_attribute.attisdropped = false ORDER BY pg_attribute.attnum;'; FOR _pk IN EXECUTE _qry LOOP IF (_multi) THEN RAISE EXCEPTION 'Reference tables with composite primary keys not supported. Try the merge and purge option.'; END IF; _pkcol := _pk.key; _multi := true; END LOOP; -- Gather and store the history _qry := 'INSERT INTO mrghist SELECT ' || pSourceCntctId || ', ''' || _fk.schemaname || '.' || _fk.tablename || ''', ''' || _pkcol || ''', ' || _pkcol || ', ''' || _col || ''' FROM ' || _fk.schemaname || '.' || _fk.tablename || ' WHERE (' || _col || '=' || pSourceCntctId || ');'; -- raise exception '%',_qry; EXECUTE _qry; END IF; -- Merge references _qry := 'UPDATE ' || _fk.schemaname || '.' || _fk.tablename || ' SET ' || _col || '=' || pTargetCntctId || ' WHERE (' || _col || '=' || pSourceCntctId || ');'; EXECUTE _qry; END LOOP; -- Merge cases with no foreign key IF (NOT pPurge) THEN INSERT INTO mrghist SELECT pSourceCntctId, 'comment', 'comment_id', comment_id, 'comment_source_id' FROM comment WHERE ((comment_source_id= pSourceCntctId) AND (comment_source='T')); INSERT INTO mrghist SELECT pSourceCntctId, 'docass', 'docass_id', docass_id, 'docass_source_id' FROM docass WHERE ((docass_source_id= pSourceCntctId) AND (docass_source_type='T')); INSERT INTO mrghist SELECT pSourceCntctId, 'docass', 'docass_id', docass_id, 'docass_target_id' FROM docass WHERE ((docass_target_id= pSourceCntctId) AND (docass_target_type='T')); INSERT INTO mrghist SELECT pSourceCntctId, 'vendinfo', 'vend_id', vend_id, 'vend_cntct1_id' FROM vendinfo WHERE (vend_cntct1_id=pSourceCntctId); INSERT INTO mrghist SELECT pSourceCntctId, 'vendinfo', 'vend_id', vend_id, 'vend_cntct2_id' FROM vendinfo WHERE (vend_cntct2_id=pSourceCntctId); IF (fetchMetricBool('EnableBatchManager') AND packageIsEnabled('xtbatch')) THEN INSERT INTO mrghist SELECT pSourceCntctId, 'xtbatch.emlassc', 'emlassc_id', emlassc_id, 'emlassc_assc_id' FROM xtbatch.emlassc WHERE ((emlassc_assc_id= pSourceCntctId) AND (emlassc_type='T')); END IF; END IF; UPDATE comment SET comment_source_id = pTargetCntctId WHERE ((comment_source = 'T') AND (comment_source_id = pSourceCntctId)); UPDATE docass SET docass_source_id = pTargetCntctId WHERE ((docass_source_type = 'T') AND (docass_source_id = pSourceCntctId)); UPDATE docass SET docass_target_id = pTargetCntctId WHERE ((docass_target_type = 'T') AND (docass_target_id = pSourceCntctId)); UPDATE vendinfo SET vend_cntct1_id = pTargetCntctId WHERE (vend_cntct1_id = pSourceCntctId); UPDATE vendinfo SET vend_cntct2_id = pTargetCntctId WHERE (vend_cntct2_id = pSourceCntctId); IF (fetchMetricBool('EnableBatchManager') AND packageIsEnabled('xtbatch')) THEN UPDATE xtbatch.emlassc SET emlassc_assc_id = pTargetCntctId WHERE ((emlassc_type = 'T') AND (emlassc_assc_id = pSourceCntctId)); END IF; IF (NOT pPurge) THEN -- Record that this has been merged if not already IF (SELECT (COUNT(cntctmrgd_cntct_id) = 0) FROM cntctmrgd WHERE (cntctmrgd_cntct_id=pSourceCntctId)) THEN INSERT INTO cntctmrgd VALUES (pSourceCntctId,false); END IF; END IF; -- Merge field detail to target SELECT * INTO _sel FROM cntctsel JOIN cntct ON (cntctsel_cntct_id=cntct_id) WHERE (cntctsel_cntct_id=pSourceCntctId); IF (FOUND) THEN IF (_sel.cntctsel_mrg_crmacct_id) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_crmacct_id', cntct_crmacct_id::text || '::integer' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_crmacct_id=_sel.cntct_crmacct_id WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_addr_id) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_addr_id', cntct_addr_id::text || '::integer' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_addr_id=_sel.cntct_addr_id WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_first_name) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_first_name', '''' || cntct_first_name || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_first_name=_sel.cntct_first_name WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_last_name) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_last_name', '''' || cntct_last_name || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_last_name=_sel.cntct_last_name WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_honorific) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_honorific', '''' || cntct_honorific || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_honorific=_sel.cntct_honorific WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_initials) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_initials', '''' || cntct_initials || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_initials=_sel.cntct_initials WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_phone) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_phone', '''' || cntct_phone || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_phone=_sel.cntct_phone WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_phone2) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_phone2', '''' || cntct_phone2 || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_phone2=_sel.cntct_phone2 WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_fax) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_fax', '''' || cntct_fax || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_fax=_sel.cntct_fax WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_email) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_email', '''' || cntct_email || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_email=_sel.cntct_email WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_webaddr) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_webaddr', '''' || cntct_webaddr || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_webaddr=_sel.cntct_webaddr WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_notes) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_notes', '''' || cntct_notes || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_notes=cntct_notes || ' ' || _sel.cntct_notes WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_title) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_title', '''' || cntct_title || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_title=_sel.cntct_title WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_middle) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_middle', '''' || cntct_middle || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_middle=_sel.cntct_middle WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_suffix) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_suffix', '''' || cntct_suffix || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_suffix=_sel.cntct_suffix WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_owner_username) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_owner_username', '''' || cntct_owner_username || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_owner_username=_sel.cntct_owner_username WHERE (cntct_id=pTargetCntctId); END IF; ELSE RAISE EXCEPTION 'Source Contact not Found'; END IF; -- Disposition source contact IF (pPurge) THEN DELETE FROM cntct WHERE cntct_id = pSourceCntctId; END IF; -- Deactivate contact UPDATE cntct SET cntct_active = false WHERE (cntct_id=pSourceCntctId); -- Clean up DELETE FROM cntctsel WHERE (cntctsel_cntct_id=pSourceCntctId); RETURN true; END; $_$; ALTER FUNCTION public.cntctmerge(integer, integer, boolean) OWNER TO admin; -- -- Name: cntctrestore(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION cntctrestore(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCntctId ALIAS FOR $1; _r RECORD; _qry TEXT; BEGIN -- Validate SELECT * INTO _r FROM cntctmrgd WHERE (cntctmrgd_cntct_id=pCntctId); IF (NOT FOUND) THEN RETURN false; END IF; -- Gather the list of affected records FOR _r IN SELECT * FROM mrghist WHERE (mrghist_cntct_id=pCntctId) LOOP -- Restore the old references _qry := 'UPDATE ' || _r.mrghist_table || ' SET ' || _r.mrghist_cntct_col || '=' || pCntctId || ' WHERE (' || _r.mrghist_pkey_col || '=' || _r.mrghist_pkey_id || ');'; EXECUTE _qry; END LOOP; -- Gather the list of affected fields FOR _r IN SELECT * FROM trgthist WHERE (trgthist_src_cntct_id=pCntctId) LOOP -- Restore the old values _qry := 'UPDATE cntct SET ' || _r.trgthist_col || '=' || _r.trgthist_value || ' WHERE (cntct_id=' || _r.trgthist_trgt_cntct_id || ');'; EXECUTE _qry; END LOOP; -- Clean up UPDATE cntct SET cntct_active=true WHERE (cntct_id=pCntctId); DELETE FROM mrghist WHERE (mrghist_cntct_id=pCntctId); DELETE FROM trgthist WHERE (trgthist_src_cntct_id=pCntctId); DELETE FROM cntctmrgd WHERE (cntctmrgd_cntct_id=pCntctId); RETURN true; END; $_$; ALTER FUNCTION public.cntctrestore(integer) OWNER TO admin; -- -- Name: cntctselect(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION cntctselect(integer, boolean) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCntctId ALIAS FOR $1; pTarget ALIAS FOR $2; BEGIN -- If target, delete any other targets IF (pTarget) THEN DELETE FROM cntctsel WHERE cntctsel_target; END IF; -- Delete any previous selection of this contact DELETE FROM cntctsel WHERE cntctsel_cntct_id=pCntctId; -- Add this contact in appropriate selection state INSERT INTO cntctsel VALUES (pCntctId,pTarget); RETURN true; END; $_$; ALTER FUNCTION public.cntctselect(integer, boolean) OWNER TO admin; -- -- Name: cntctselectcol(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION cntctselectcol(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCntctId ALIAS FOR $1; pColNumber ALIAS FOR $2; BEGIN IF (pColNumber = 2 OR pColNumber = 3) THEN UPDATE cntctsel SET cntctsel_mrg_crmacct_id=false WHERE (cntctsel_mrg_crmacct_id AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_crmacct_id=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 4) THEN UPDATE cntctsel SET cntctsel_mrg_honorific=false WHERE (cntctsel_mrg_honorific AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_honorific=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 5) THEN UPDATE cntctsel SET cntctsel_mrg_first_name=false WHERE (cntctsel_mrg_first_name AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_first_name=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 6) THEN UPDATE cntctsel SET cntctsel_mrg_middle=false WHERE (cntctsel_mrg_middle AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_middle=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 7) THEN UPDATE cntctsel SET cntctsel_mrg_last_name=false WHERE (cntctsel_mrg_last_name AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_last_name=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 8) THEN UPDATE cntctsel SET cntctsel_mrg_suffix=false WHERE (cntctsel_mrg_suffix AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_suffix=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 9) THEN UPDATE cntctsel SET cntctsel_mrg_initials=false WHERE (cntctsel_mrg_initials AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_initials=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 10) THEN UPDATE cntctsel SET cntctsel_mrg_phone=false WHERE (cntctsel_mrg_phone AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_phone=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 11) THEN UPDATE cntctsel SET cntctsel_mrg_phone2=false WHERE (cntctsel_mrg_phone2 AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_phone2=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 12) THEN UPDATE cntctsel SET cntctsel_mrg_fax=false WHERE (cntctsel_mrg_fax AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_fax=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 13) THEN UPDATE cntctsel SET cntctsel_mrg_email=false WHERE (cntctsel_mrg_email AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_email=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 14) THEN UPDATE cntctsel SET cntctsel_mrg_webaddr=false WHERE (cntctsel_mrg_webaddr AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_webaddr=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 15) THEN UPDATE cntctsel SET cntctsel_mrg_title=false WHERE (cntctsel_mrg_title AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_title=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 16) THEN UPDATE cntctsel SET cntctsel_mrg_owner_username=false WHERE (cntctsel_mrg_owner_username AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_owner_username=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 17) THEN UPDATE cntctsel SET cntctsel_mrg_notes=false WHERE (cntctsel_mrg_notes AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_notes=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber >= 18) THEN UPDATE cntctsel SET cntctsel_mrg_addr_id=false WHERE (cntctsel_mrg_addr_id AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_addr_id=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; END IF; RETURN false; END; $_$; ALTER FUNCTION public.cntctselectcol(integer, integer) OWNER TO admin; -- -- Name: cntctused(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION cntctused(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCntctId ALIAS FOR $1; _fk RECORD; _r RECORD; _seq INTEGER; _col TEXT; _qry TEXT; BEGIN -- Determine where this contact is used by analyzing foreign key linkages -- but ignore child tables and those with impermanent relationships FOR _fk IN SELECT pg_namespace.nspname AS schemaname, con.relname AS tablename, conkey AS seq, conrelid AS class_id FROM pg_constraint, pg_class f, pg_class con, pg_namespace WHERE confrelid=f.oid AND conrelid=con.oid AND f.relname = 'cntct' AND con.relnamespace=pg_namespace.oid AND con.relname NOT IN ('cntctaddr', 'cntctdata', 'cntcteml', 'cohead', 'pohead', 'quhead', 'tohead', 'cntctsel', 'cntctmrgd', 'mrghist', 'trgthist') LOOP -- Validate IF (ARRAY_UPPER(_fk.seq,1) > 1) THEN RAISE EXCEPTION 'Cannot check dependencies when the contact is one of multiple foreign key columns (%.%) [xtuple: fkeycheck, -1, %, %]', _fk.nspname, _fk.relname, _fk.nspname, _fk.relname; END IF; _seq := _fk.seq[1]; -- Get the specific column name SELECT attname INTO _col FROM pg_attribute, pg_class WHERE ((attrelid=pg_class.oid) AND (pg_class.oid=_fk.class_id) AND (attnum=_seq)); -- See if there are dependencies _qry := 'SELECT * FROM ' || _fk.schemaname || '.' || _fk.tablename || ' WHERE ('|| _col || '=' || pCntctId || ');'; FOR _r IN EXECUTE _qry LOOP RETURN true; END LOOP; END LOOP; RETURN false; END; $_$; ALTER FUNCTION public.cntctused(integer) OWNER TO admin; -- -- Name: coheadstatecolor(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION coheadstatecolor(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCoheadId ALIAS FOR $1; _shipheadid INTEGER; _result TEXT := ''; BEGIN IF (pCoheadid IS NULL) THEN RAISE EXCEPTION 'Customer Id is required.'; END IF; SELECT shiphead_id INTO _shipheadid FROM cohead JOIN shiphead ON ((shiphead_order_id=cohead_id) AND (shiphead_order_type='SO')) JOIN shipitem ON (shiphead_id=shipitem_shiphead_id) WHERE ((cohead_id=pCoheadId) AND (NOT shipitem_invoiced)) ORDER BY shiphead_id DESC LIMIT 1; IF (FOUND) THEN SELECT CASE WHEN ((shiphead_shipped) AND (COALESCE(shiphead_order_id,0) > 0) AND (SUM(noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned)) <= 0)) THEN 'altemphasis' WHEN ((COALESCE(cobmisc_cohead_id,0) > 0) AND (SUM(noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned)) > 0)) THEN 'error' WHEN (NOT shiphead_shipped) THEN 'emphasis' END INTO _result FROM cohead JOIN coitem ON (cohead_id=coitem_cohead_id) JOIN shiphead ON ((shiphead_order_id=cohead_id) AND (shiphead_order_type='SO')) JOIN shipitem ON (shiphead_id=shipitem_shiphead_id) LEFT OUTER JOIN (SELECT DISTINCT cobmisc_cohead_id FROM cobmisc) AS cobmisc ON (cobmisc_cohead_id=cohead_id) WHERE (shiphead_id=_shipheadid) GROUP BY shiphead_id,shiphead_shipped,shiphead_order_id,cobmisc_cohead_id ORDER BY shiphead_id DESC; ELSE _result := ''; END IF; RETURN _result; END; $_$; ALTER FUNCTION public.coheadstatecolor(integer) OWNER TO admin; -- -- Name: concataggsfunc(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION concataggsfunc(text, text) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE prevstate ALIAS FOR $1; newval ALIAS FOR $2; BEGIN RETURN prevstate || newval; END; $_$; ALTER FUNCTION public.concataggsfunc(text, text) OWNER TO admin; -- -- Name: consolidatelocations(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION consolidatelocations(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; _r RECORD; BEGIN UPDATE itemloc SET itemloc_consolflag = TRUE WHERE (itemloc_itemsite_id=pItemsiteid); FOR _r IN SELECT itemloc_location_id, SUM(itemloc_qty) AS qty FROM itemloc WHERE (itemloc_itemsite_id=pItemsiteid) GROUP BY itemloc_location_id LOOP INSERT INTO itemloc ( itemloc_itemsite_id, itemloc_location_id, itemloc_expiration, itemloc_qty, itemloc_consolflag ) VALUES ( pItemsiteid, _r.itemloc_location_id, endOfTime(), _r.qty, FALSE ); END LOOP; DELETE FROM itemloc WHERE ( (itemloc_itemsite_id=pItemsiteid) AND (itemloc_consolflag) ); RETURN 1; END; $_$; ALTER FUNCTION public.consolidatelocations(integer) OWNER TO admin; -- -- Name: convertcustomertoprospect(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION convertcustomertoprospect(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustId ALIAS FOR $1; _c RECORD; BEGIN SELECT * INTO _c FROM custinfo WHERE (cust_id=pCustId); INSERT INTO prospect ( prospect_id, prospect_active, prospect_number, prospect_name, prospect_cntct_id, prospect_taxzone_id, prospect_salesrep_id, prospect_warehous_id, prospect_comments ) VALUES ( _c.cust_id, _c.cust_active, _c.cust_number, _c.cust_name, _c.cust_cntct_id, _c.cust_taxzone_id, CASE WHEN(_c.cust_salesrep_id > 0) THEN _c.cust_salesrep_id ELSE NULL END, CASE WHEN(_c.cust_preferred_warehous_id > 0) THEN _c.cust_preferred_warehous_id ELSE NULL END, _c.cust_comments); DELETE FROM custinfo WHERE (cust_id=pCustId); RETURN pCustId; END; $_$; ALTER FUNCTION public.convertcustomertoprospect(integer) OWNER TO admin; -- -- Name: convertprospecttocustomer(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION convertprospecttocustomer(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN convertProspectToCustomer($1, FALSE); END; $_$; ALTER FUNCTION public.convertprospecttocustomer(integer) OWNER TO admin; -- -- Name: convertprospecttocustomer(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION convertprospecttocustomer(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pProspectId ALIAS FOR $1; pdoquotes ALIAS FOR $2; _p RECORD; _q RECORD; BEGIN SELECT * INTO _p FROM prospect WHERE (prospect_id=pProspectId); IF (EXISTS(SELECT cust_id FROM custinfo WHERE cust_id=pProspectId)) THEN RAISE EXCEPTION '[xtuple: convertProspectToCustomer, -10]'; END IF; INSERT INTO custinfo ( cust_id, cust_active, cust_number, cust_name, cust_cntct_id, cust_taxzone_id, cust_comments, cust_creditstatus, cust_salesrep_id, cust_preferred_warehous_id, cust_terms_id, cust_custtype_id, cust_shipform_id, cust_shipvia, cust_balmethod, cust_ffshipto, cust_backorder, cust_partialship, cust_creditlmt, cust_creditrating, cust_commprcnt, cust_discntprcnt, cust_blanketpos, cust_shipchrg_id, cust_ffbillto, cust_usespos, cust_emaildelivery, cust_autoupdatestatus,cust_autoholdorders, cust_soemaildelivery) SELECT _p.prospect_id, _p.prospect_active, _p.prospect_number, _p.prospect_name, _p.prospect_cntct_id, _p.prospect_taxzone_id, _p.prospect_comments, 'G', COALESCE(_p.prospect_salesrep_id, salesrep_id), COALESCE(_p.prospect_warehous_id, -1), FetchMetricValue('DefaultTerms'), FetchMetricValue('DefaultCustType'), FetchMetricValue('DefaultShipFormId'), COALESCE(FetchMetricValue('DefaultShipViaId'),-1), FetchMetricText('DefaultBalanceMethod'), FetchMetricBool('DefaultFreeFormShiptos'), FetchMetricBool('DefaultBackOrders'), FetchMetricBool('DefaultPartialShipments'), FetchMetricValue('SOCreditLimit'), FetchMetricText('SOCreditRate'), salesrep_commission, 0, false, -1,false,false,false,false, false, false FROM salesrep WHERE (salesrep_id=FetchMetricValue('DefaultSalesRep')); DELETE FROM prospect WHERE (prospect_id=pprospectId); IF (pdoquotes) THEN BEGIN FOR _q IN SELECT quhead_number, convertQuote(quhead_id) AS err FROM quhead WHERE ((COALESCE(quhead_expire, endOfTime()) >= CURRENT_DATE) AND (quhead_cust_id=pProspectId)) LOOP IF (_q.err < 0) THEN RAISE NOTICE 'Quote % for % didn''t convert to a Sales Order [xtuple: convertQuote, %]', _q.quhead_number, _p.prospect_number, _q.err; END IF; END LOOP; EXCEPTION WHEN OTHERS THEN RAISE NOTICE 'Ignored errors convering quotes: % %', SQLSTATE, SQLERRM; END; END IF; RETURN pProspectId; END; $_$; ALTER FUNCTION public.convertprospecttocustomer(integer, boolean) OWNER TO admin; -- -- Name: convertquote(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION convertquote(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; _soheadid INTEGER; _soitemid INTEGER; _orderid INTEGER; _ordertype CHARACTER(1); _creditstatus TEXT; _usespos BOOLEAN := false; _blanketpos BOOLEAN := true; _showConvertedQuote BOOLEAN := false; _prospectid INTEGER; _r RECORD; _soNum TEXT; BEGIN -- Check to make sure the quote has not expired IF (SELECT COALESCE(quhead_expire, endOfTime()) < CURRENT_DATE FROM quhead WHERE(quhead_id=pQuheadid)) THEN RETURN -6; END IF; -- Check to make sure that all of the quote items have a valid itemsite SELECT quitem_id INTO _r FROM quitem LEFT OUTER JOIN itemsite ON (quitem_itemsite_id=itemsite_id) WHERE ((itemsite_id IS NULL) AND (quitem_quhead_id=pQuheadid)); IF (FOUND) THEN INSERT INTO evntlog (evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'Q', quhead_id, quhead_warehous_id, quhead_number FROM evntnot, evnttype, quhead WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=quhead_warehous_id) AND (evnttype_name='CannotConvertQuote') AND (quhead_id=pQuheadid) ); RETURN -1; END IF; SELECT cust_creditstatus, cust_usespos, cust_blanketpos INTO _creditstatus, _usespos, _blanketpos FROM quhead, custinfo WHERE ((quhead_cust_id=cust_id) AND (quhead_id=pQuheadid)); IF (NOT FOUND) THEN SELECT prospect_id INTO _prospectid FROM quhead, prospect WHERE ((quhead_cust_id=prospect_id) AND (quhead_id=pQuheadid)); IF (NOT FOUND) THEN RETURN -2; ELSE RETURN -3; END IF; ELSIF (_creditstatus = 'H' AND NOT checkPrivilege('CreateSOForHoldCustomer')) THEN RETURN -4; ELSIF (_creditstatus = 'W' AND NOT checkPrivilege('CreateSOForWarnCustomer')) THEN RETURN -5; END IF; IF ( (_usespos) AND (NOT _blanketpos) ) THEN PERFORM cohead_id FROM quhead JOIN cohead ON ( (cohead_cust_id=quhead_cust_id) AND (UPPER(cohead_custponumber)=UPPER(quhead_custponumber)) ) WHERE (quhead_id=pQuheadid); IF (FOUND) THEN RAISE EXCEPTION 'Duplicate Customer PO'; END IF; END IF; PERFORM quhead_number, cohead_id FROM quhead, cohead WHERE quhead_id = pQuheadid AND cohead_number = quhead_number; IF (FOUND) THEN SELECT fetchSoNumber() INTO _soNum; ELSE SELECT quhead_number INTO _soNum FROM quhead WHERE quhead_id = pQuheadid; END IF; SELECT NEXTVAL('cohead_cohead_id_seq') INTO _soheadid; INSERT INTO cohead ( cohead_id, cohead_number, cohead_cust_id, cohead_orderdate, cohead_packdate, cohead_custponumber, cohead_warehous_id, cohead_billtoname, cohead_billtoaddress1, cohead_billtoaddress2, cohead_billtoaddress3, cohead_billtocity, cohead_billtostate, cohead_billtozipcode, cohead_billtocountry, cohead_shipto_id, cohead_shiptoname, cohead_shiptoaddress1, cohead_shiptoaddress2, cohead_shiptoaddress3, cohead_shiptocity, cohead_shiptostate, cohead_shiptozipcode, cohead_shiptocountry, cohead_salesrep_id, cohead_commission, cohead_terms_id, cohead_shipchrg_id, cohead_shipform_id, cohead_fob, cohead_shipvia, cohead_ordercomments, cohead_shipcomments, cohead_freight, cohead_misc, cohead_misc_accnt_id, cohead_misc_descrip, cohead_holdtype, cohead_wasquote, cohead_quote_number, cohead_prj_id, cohead_curr_id, cohead_taxzone_id, cohead_taxtype_id, cohead_shipto_cntct_id, cohead_shipto_cntct_honorific, cohead_shipto_cntct_first_name, cohead_shipto_cntct_middle, cohead_shipto_cntct_last_name, cohead_shipto_cntct_suffix, cohead_shipto_cntct_phone, cohead_shipto_cntct_title, cohead_shipto_cntct_fax, cohead_shipto_cntct_email, cohead_billto_cntct_id, cohead_billto_cntct_honorific, cohead_billto_cntct_first_name, cohead_billto_cntct_middle, cohead_billto_cntct_last_name, cohead_billto_cntct_suffix, cohead_billto_cntct_phone, cohead_billto_cntct_title, cohead_billto_cntct_fax, cohead_billto_cntct_email, cohead_ophead_id, cohead_calcfreight, cohead_saletype_id, cohead_shipzone_id ) SELECT _soheadid, _soNum, quhead_cust_id, CURRENT_DATE, quhead_packdate, quhead_custponumber, quhead_warehous_id, quhead_billtoname, quhead_billtoaddress1, quhead_billtoaddress2, quhead_billtoaddress3, quhead_billtocity, quhead_billtostate, quhead_billtozip, quhead_billtocountry, quhead_shipto_id, quhead_shiptoname, quhead_shiptoaddress1, quhead_shiptoaddress2, quhead_shiptoaddress3, quhead_shiptocity, quhead_shiptostate, quhead_shiptozipcode, quhead_shiptocountry, quhead_salesrep_id, quhead_commission, quhead_terms_id, cust_shipchrg_id, cust_shipform_id, quhead_fob, quhead_shipvia, quhead_ordercomments, quhead_shipcomments, quhead_freight, quhead_misc, quhead_misc_accnt_id, quhead_misc_descrip, 'N', TRUE, quhead_number, quhead_prj_id, quhead_curr_id, quhead_taxzone_id, quhead_taxtype_id, quhead_shipto_cntct_id, quhead_shipto_cntct_honorific, quhead_shipto_cntct_first_name, quhead_shipto_cntct_middle, quhead_shipto_cntct_last_name, quhead_shipto_cntct_suffix, quhead_shipto_cntct_phone, quhead_shipto_cntct_title, quhead_shipto_cntct_fax, quhead_shipto_cntct_email, quhead_billto_cntct_id, quhead_billto_cntct_honorific, quhead_billto_cntct_first_name, quhead_billto_cntct_middle, quhead_billto_cntct_last_name, quhead_billto_cntct_suffix, quhead_billto_cntct_phone, quhead_billto_cntct_title, quhead_billto_cntct_fax, quhead_billto_cntct_email, quhead_ophead_id, quhead_calcfreight, quhead_saletype_id, quhead_shipzone_id FROM quhead JOIN custinfo ON (cust_id=quhead_cust_id) WHERE (quhead_id=pQuheadid); UPDATE url SET url_source_id = _soheadid, url_source = 'S' WHERE ((url_source='Q') AND (url_source_id = pQuheadid)); UPDATE imageass SET imageass_source_id = _soheadid, imageass_source = 'S' WHERE ((imageass_source='Q') AND (imageass_source_id = pQuheadid)); UPDATE docass SET docass_source_id = _soheadid, docass_source_type = 'S' WHERE ((docass_source_type='Q') AND (docass_source_id = pQuheadid)); -- Copy Comments INSERT INTO comment ( comment_cmnttype_id, comment_source, comment_source_id, comment_date, comment_user, comment_text, comment_public ) SELECT comment_cmnttype_id, 'S', _soheadid, comment_date, comment_user, ('Quote-' || comment_text), comment_public FROM comment WHERE ( (comment_source='Q') AND (comment_source_id=pQuheadid) ); FOR _r IN SELECT quitem.*, quhead_number, quhead_prj_id, itemsite_item_id, itemsite_leadtime, itemsite_createsopo, itemsite_createsopr, item_type, COALESCE(quitem_itemsrc_id, itemsrc_id, -1) AS itemsrcid FROM quhead JOIN quitem ON (quitem_quhead_id=quhead_id) JOIN itemsite ON (itemsite_id=quitem_itemsite_id) JOIN item ON (item_id=itemsite_item_id) LEFT OUTER JOIN itemsrc ON ( (itemsrc_item_id=item_id) AND (itemsrc_default) ) WHERE (quhead_id=pQuheadid) ORDER BY quitem_linenumber LOOP SELECT NEXTVAL('coitem_coitem_id_seq') INTO _soitemid; INSERT INTO coitem ( coitem_id, coitem_cohead_id, coitem_linenumber, coitem_itemsite_id, coitem_status, coitem_scheddate, coitem_promdate, coitem_price, coitem_custprice, coitem_qtyord, coitem_qtyshipped, coitem_qtyreturned, coitem_qty_uom_id, coitem_qty_invuomratio, coitem_price_uom_id, coitem_price_invuomratio, coitem_unitcost, coitem_prcost, coitem_custpn, coitem_memo, coitem_taxtype_id, coitem_order_id ) VALUES ( _soitemid, _soheadid, _r.quitem_linenumber, _r.quitem_itemsite_id, 'O', _r.quitem_scheddate, _r.quitem_promdate, _r.quitem_price, _r.quitem_custprice, _r.quitem_qtyord, 0, 0, _r.quitem_qty_uom_id, _r.quitem_qty_invuomratio, _r.quitem_price_uom_id, _r.quitem_price_invuomratio, stdcost(_r.itemsite_item_id), _r.quitem_prcost, _r.quitem_custpn, _r.quitem_memo, _r.quitem_taxtype_id, -1 ); IF (fetchMetricBool('enablextcommissionission')) THEN PERFORM xtcommission.getSalesReps(quhead_cust_id, quhead_shipto_id, _r.itemsite_item_id, _r.quitem_price, _soitemid, 'SalesItem') FROM quhead WHERE (quhead_id=pQuheadid); END IF; INSERT INTO charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default, charass_price) SELECT 'SI', _soitemid, charass_char_id, charass_value, charass_default, charass_price FROM charass WHERE ((charass_target_type='QI') AND (charass_target_id=_r.quitem_id)); -- Copy Comments INSERT INTO comment ( comment_cmnttype_id, comment_source, comment_source_id, comment_date, comment_user, comment_text ) SELECT comment_cmnttype_id, 'SI', _soitemid, comment_date, comment_user, ('Quote-' || comment_text) FROM comment WHERE ( (comment_source='QI') AND (comment_source_id=_r.quitem_id) ); _orderid := -1; _ordertype := ''; IF (_r.quitem_createorder) THEN IF (_r.item_type IN ('M')) THEN SELECT createWo( CAST(_r.quhead_number AS INTEGER), supply.itemsite_id, 1, (_r.quitem_qtyord * _r.quitem_qty_invuomratio), _r.itemsite_leadtime, _r.quitem_scheddate, _r.quitem_memo, 'S', _soitemid, _r.quhead_prj_id ) INTO _orderId FROM itemsite sold, itemsite supply WHERE ((sold.itemsite_item_id=supply.itemsite_item_id) AND (supply.itemsite_warehous_id=_r.quitem_order_warehous_id) AND (sold.itemsite_id=_r.quitem_itemsite_id) ); _orderType := 'W'; INSERT INTO charass (charass_target_type, charass_target_id, charass_char_id, charass_value) SELECT 'W', _orderId, charass_char_id, charass_value FROM charass WHERE ((charass_target_type='QI') AND (charass_target_id=_r.quitem_id)); ELSIF ( (_r.item_type IN ('P', 'O')) AND (_r.itemsite_createsopr) ) THEN SELECT createPr( CAST(_r.quhead_number AS INTEGER), _r.quitem_itemsite_id, (_r.quitem_qtyord * _r.quitem_qty_invuomratio), _r.quitem_scheddate, '', 'S', _soitemid ) INTO _orderId; _orderType := 'R'; UPDATE pr SET pr_prj_id=_r.quhead_prj_id WHERE pr_id=_orderId; ELSIF ( (_r.item_type IN ('P', 'O')) AND (_r.itemsite_createsopo) ) THEN IF (_r.quitem_prcost=0) THEN SELECT createPurchaseToSale(_soitemid, _r.itemsrcid, _r.quitem_dropship) INTO _orderId; ELSE SELECT createPurchaseToSale(_soitemid, _r.itemsrcid, _r.quitem_dropship, _r.quitem_prcost) INTO _orderId; END IF; _orderType := 'P'; END IF; UPDATE coitem SET coitem_order_type=_ordertype, coitem_order_id=_orderid WHERE (coitem_id=_soitemid); END IF; END LOOP; SELECT metric_value INTO _showConvertedQuote FROM metric WHERE metric_name = 'ShowQuotesAfterSO'; IF (_showConvertedQuote) THEN UPDATE quhead SET quhead_status= 'C' WHERE (quhead_id = pQuheadid); ELSE PERFORM deleteQuote(pQuheadid); END IF; RETURN _soheadid; END; $_$; ALTER FUNCTION public.convertquote(integer) OWNER TO admin; -- -- Name: convertquotetoinvoice(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION convertquotetoinvoice(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; _iheadid INTEGER; _iitemid INTEGER; _orderid INTEGER; _ordertype CHARACTER(1); _creditstatus TEXT; _usespos BOOLEAN := false; _blanketpos BOOLEAN := true; _showConvertedQuote BOOLEAN := false; _prospectid INTEGER; _r RECORD; _inNum TEXT; BEGIN -- Check to make sure the quote has not expired IF (SELECT COALESCE(quhead_expire, endOfTime()) < CURRENT_DATE FROM quhead WHERE(quhead_id=pQuheadid)) THEN RETURN -6; END IF; -- Check to make sure that all of the quote items have a valid itemsite SELECT quitem_id INTO _r FROM quitem LEFT OUTER JOIN itemsite ON (quitem_itemsite_id=itemsite_id) WHERE ((itemsite_id IS NULL) AND (quitem_quhead_id=pQuheadid)); IF (FOUND) THEN INSERT INTO evntlog (evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'Q', quhead_id, quhead_warehous_id, quhead_number FROM evntnot, evnttype, quhead WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=quhead_warehous_id) AND (evnttype_name='CannotConvertQuote') AND (quhead_id=pQuheadid) ); RETURN -1; END IF; -- Get Credit Stat, Uses POs and Blanket POs SELECT cust_creditstatus, cust_usespos, cust_blanketpos INTO _creditstatus, _usespos, _blanketpos FROM quhead, custinfo WHERE ((quhead_cust_id=cust_id) AND (quhead_id=pQuheadid)); -- Check to see if customer or prospect IF (NOT FOUND) THEN SELECT prospect_id INTO _prospectid FROM quhead, prospect WHERE ((quhead_cust_id=prospect_id) AND (quhead_id=pQuheadid)); IF (NOT FOUND) THEN RETURN -2; ELSE RETURN -3; END IF; ELSIF (_creditstatus = 'H' AND NOT hasPriv('CreateSOForHoldCustomer')) THEN RETURN -4; ELSIF (_creditstatus = 'W' AND NOT hasPriv('CreateSOForWarnCustomer')) THEN RETURN -5; END IF; -- PO/blanket PO checks IF ( (_usespos) AND (NOT _blanketpos) ) THEN PERFORM invchead_id FROM quhead JOIN invchead ON ( (invchead_cust_id=quhead_cust_id) AND (UPPER(invchead_custponumber)=UPPER(quhead_custponumber)) ) WHERE (quhead_id=pQuheadid); IF (FOUND) THEN RAISE EXCEPTION 'Duplicate Customer PO'; END IF; END IF; --Check to see if an invoice exists with the quote number PERFORM quhead_number, invchead_id FROM quhead, invchead WHERE quhead_id = pQuheadid AND invchead_invcnumber = quhead_number; -- If it does then get a new Invoice number otherwise use the quote number as the invoice number IF (FOUND) THEN SELECT fetchinvcnumber() INTO _inNum; ELSE SELECT quhead_number INTO _inNum FROM quhead WHERE quhead_id = pQuheadid; END IF; --Insert quote info into invoice tables SELECT NEXTVAL('invchead_invchead_id_seq') INTO _iheadid; INSERT INTO invchead ( invchead_ordernumber, invchead_shipdate, invchead_recurring, invchead_id, invchead_invcnumber, invchead_cust_id, invchead_orderdate, invchead_ponumber, invchead_billto_name, invchead_billto_address1, invchead_billto_address2, invchead_billto_address3, invchead_billto_city, invchead_billto_state, invchead_billto_zipcode, invchead_billto_country, invchead_shipto_id, invchead_shipto_name, invchead_shipto_address1, invchead_shipto_address2, invchead_shipto_address3, invchead_shipto_city, invchead_shipto_state, invchead_shipto_zipcode, invchead_shipto_country, invchead_salesrep_id, invchead_commission, invchead_terms_id, invchead_shipchrg_id, invchead_fob, invchead_shipvia, invchead_notes, invchead_freight, invchead_misc_amount, invchead_misc_accnt_id, invchead_misc_descrip, invchead_prj_id, invchead_curr_id, invchead_taxzone_id, invchead_posted, invchead_printed, invchead_invcdate, invchead_saletype_id, invchead_shipzone_id --invchead_taxtype_id, --invchead_shipto_cntct_id, invchead_shipto_cntct_honorific, invchead_shipto_cntct_first_name, --invchead_shipto_cntct_middle, invchead_shipto_cntct_last_name, invchead_shipto_cntct_suffix, --invchead_shipto_cntct_phone, invchead_shipto_cntct_title, invchead_shipto_cntct_fax, --invchead_shipto_cntct_email, --invchead_billto_cntct_id, invchead_billto_cntct_honorific, --invchead_billto_cntct_first_name, invchead_billto_cntct_middle, invchead_billto_cntct_last_name, --invchead_billto_cntct_suffix, invchead_billto_cntct_phone, invchead_billto_cntct_title, --invchead_billto_cntct_fax, invchead_billto_cntct_email, --invchead_ophead_id, --invchead_calcfreight ) SELECT quhead_number, quhead_packdate, 'f', _iheadid, _inNum, quhead_cust_id, CURRENT_DATE, quhead_custponumber, quhead_billtoname, quhead_billtoaddress1, quhead_billtoaddress2, quhead_billtoaddress3, quhead_billtocity, quhead_billtostate, quhead_billtozip, quhead_billtocountry, quhead_shipto_id, quhead_shiptoname, quhead_shiptoaddress1, quhead_shiptoaddress2, quhead_shiptoaddress3, quhead_shiptocity, quhead_shiptostate, quhead_shiptozipcode, quhead_shiptocountry, quhead_salesrep_id, quhead_commission, quhead_terms_id, cust_shipchrg_id, quhead_fob, quhead_shipvia, quhead_ordercomments, quhead_freight, quhead_misc, quhead_misc_accnt_id, quhead_misc_descrip, quhead_prj_id, quhead_curr_id, quhead_taxzone_id, 'f','f',current_date, quhead_saletype_id, quhead_shipzone_id --quhead_shipto_cntct_id, quhead_shipto_cntct_honorific, --quhead_shipto_cntct_first_name, quhead_shipto_cntct_middle, quhead_shipto_cntct_last_name, --quhead_shipto_cntct_suffix, quhead_shipto_cntct_phone, quhead_shipto_cntct_title, --quhead_shipto_cntct_fax, quhead_shipto_cntct_email, quhead_billto_cntct_id, --quhead_billto_cntct_honorific, quhead_billto_cntct_first_name, quhead_billto_cntct_middle, --quhead_billto_cntct_last_name, quhead_billto_cntct_suffix, quhead_billto_cntct_phone, --quhead_billto_cntct_title, quhead_billto_cntct_fax, quhead_billto_cntct_email, quhead_ophead_id, --quhead_calcfreight FROM quhead JOIN custinfo ON (cust_id=quhead_cust_id) WHERE (quhead_id=pQuheadid); -- Attachments on Invoice not supported but leaving this in for future use: /* UPDATE url SET url_source_id = _iheadid, url_source = 'I' WHERE ((url_source='Q') AND (url_source_id = pQuheadid)); UPDATE imageass SET imageass_source_id = _iheadid, imageass_source = 'I' WHERE ((imageass_source='Q') AND (imageass_source_id = pQuheadid)); UPDATE docass SET docass_source_id = _iheadid, docass_source_type = 'I' WHERE ((docass_source_type='Q') AND (docass_source_id = pQuheadid)); */ -- Comments not supported on Invoice but leaving this in for future use: /* INSERT INTO comment ( comment_cmnttype_id, comment_source, comment_source_id, comment_date, comment_user, comment_text, comment_public ) SELECT comment_cmnttype_id, 'I', _iheadid, comment_date, comment_user, ('Quote-' || comment_text), comment_public FROM comment WHERE ( (comment_source='Q') AND (comment_source_id=pQuheadid) ); */ FOR _r IN SELECT quitem.*, quhead_number, quhead_prj_id, itemsite_item_id, itemsite_leadtime, itemsite_createsopo, itemsite_createsopr, item_type, COALESCE(quitem_itemsrc_id, itemsrc_id, -1) AS itemsrcid FROM quhead JOIN quitem ON (quitem_quhead_id=quhead_id) JOIN itemsite ON (itemsite_id=quitem_itemsite_id) JOIN item ON (item_id=itemsite_item_id) LEFT OUTER JOIN itemsrc ON ( (itemsrc_item_id=item_id) AND (itemsrc_default) ) WHERE (quhead_id=pQuheadid) LOOP SELECT NEXTVAL('invcitem_invcitem_id_seq') INTO _iitemid; INSERT INTO invcitem ( invcitem_id, invcitem_invchead_id, invcitem_linenumber, invcitem_item_id, invcitem_warehous_id, --invcitem_status, --invcitem_scheddate, invcitem_promdate, invcitem_price, invcitem_custprice, invcitem_ordered, invcitem_billed, invcitem_qty_uom_id, invcitem_qty_invuomratio, invcitem_price_uom_id, invcitem_price_invuomratio, invcitem_custpn, invcitem_notes, invcitem_taxtype_id ) VALUES ( _iitemid, _iheadid, _r.quitem_linenumber, (SELECT itemsite_item_id FROM itemsite WHERE itemsite_id = _r.quitem_itemsite_id), (SELECT itemsite_warehous_id FROM itemsite WHERE itemsite_id = _r.quitem_itemsite_id), --'O', --_r.quitem_scheddate, _r.quitem_promdate, _r.quitem_price, _r.quitem_custprice, _r.quitem_qtyord, _r.quitem_qtyord, _r.quitem_qty_uom_id, _r.quitem_qty_invuomratio, _r.quitem_price_uom_id, _r.quitem_price_invuomratio, _r.quitem_custpn, _r.quitem_memo, _r.quitem_taxtype_id ); IF (fetchMetricBool('enablextcommissionission')) THEN PERFORM xtcommission.getSalesReps(quhead_cust_id, quhead_shipto_id, _r.itemsite_item_id, _r.quitem_price, _iitemid, 'InvoiceItem') FROM quhead WHERE (quhead_id=pQuheadid); END IF; -- Chracteristics not supported on Invoice but leaving in for future use: /* INSERT INTO charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default, charass_price) SELECT 'SI', _iitemid, charass_char_id, charass_value, charass_default, charass_price FROM charass WHERE ((charass_target_type='QI') AND (charass_target_id=_r.quitem_id)); */ -- Comments not supported but leaving in for future use /* INSERT INTO comment ( comment_cmnttype_id, comment_source, comment_source_id, comment_date, comment_user, comment_text ) SELECT comment_cmnttype_id, 'SI', _iitemid, comment_date, comment_user, ('Quote-' || comment_text) FROM comment WHERE ( (comment_source='QI') AND (comment_source_id=_r.quitem_id) ); */ _orderid := -1; _ordertype := ''; IF (_r.quitem_createorder) THEN IF (_r.item_type IN ('M')) THEN SELECT createWo( CAST(_r.quhead_number AS INTEGER), supply.itemsite_id, 1, (_r.quitem_qtyord * _r.quitem_qty_invuomratio), _r.itemsite_leadtime, _r.quitem_scheddate, _r.quitem_memo, 'Q', _iitemid, _r.quhead_prj_id ) INTO _orderId FROM itemsite sold, itemsite supply WHERE ((sold.itemsite_item_id=supply.itemsite_item_id) AND (supply.itemsite_warehous_id=_r.quitem_order_warehous_id) AND (sold.itemsite_id=_r.quitem_itemsite_id) ); _orderType := 'W'; INSERT INTO charass (charass_target_type, charass_target_id, charass_char_id, charass_value) SELECT 'W', _orderId, charass_char_id, charass_value FROM charass WHERE ((charass_target_type='QI') AND (charass_target_id=_r.quitem_id)); ELSIF ( (_r.item_type IN ('P', 'O')) AND (_r.itemsite_createsopr) ) THEN SELECT createPr( CAST(_r.quhead_number AS INTEGER), _r.quitem_itemsite_id, (_r.quitem_qtyord * _r.quitem_qty_invuomratio), _r.quitem_scheddate, '', 'S', _iitemid ) INTO _orderId; _orderType := 'R'; UPDATE pr SET pr_prj_id=_r.quhead_prj_id WHERE pr_id=_orderId; ELSIF ( (_r.item_type IN ('P', 'O')) AND (_r.itemsite_createsopo) ) THEN IF (_r.quitem_prcost=0) THEN -- For now quote to invoice/dropship will not be supported but with the creation of a createPurchaseToQuote() version of createPurchaseToSale() -- it can be -- SELECT createPurchaseToSale(_iitemid, _r.itemsrcid, _r.quitem_dropship) INTO _orderId; RAISE EXCEPTION 'Quote contains one or more dropship items that may not be converted from a Quote to an Invoice'; ELSE -- For now quote to invoice/dropship will not be supported but with the creation of a createPurchaseToQuote() version of createPurchaseToSale() -- it can be -- SELECT createPurchaseToSale(_iitemid, _r.itemsrcid, _r.quitem_dropship, _r.quitem_prcost) INTO _orderId; RAISE EXCEPTION 'Quote contains one or more dropship items that may not be converted from a Quote to an Invoice'; END IF; _orderType := 'P'; END IF; -- UPDATE invcitem SET invcitem_order_type=_ordertype, invcitem_order_id=_orderid -- WHERE (invcitem_id=_iitemid); END IF; END LOOP; SELECT metric_value INTO _showConvertedQuote FROM metric WHERE metric_name = 'ShowQuotesAfterSO'; IF (_showConvertedQuote) THEN UPDATE quhead SET quhead_status= 'C' WHERE (quhead_id = pQuheadid); ELSE PERFORM deleteQuote(pQuheadid); END IF; RETURN _iheadid; END; $_$; ALTER FUNCTION public.convertquotetoinvoice(integer) OWNER TO admin; -- -- Name: copybom(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copybom(psitemid integer, ptitemid integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _result INTEGER; BEGIN SELECT copyBOM (pSItemid, PTItemid, FALSE) into _result; RETURN _result; END; $$; ALTER FUNCTION public.copybom(psitemid integer, ptitemid integer) OWNER TO admin; -- -- Name: copybom(integer, integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copybom(psitemid integer, ptitemid integer, pcopyusedat boolean) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _bh RECORD; _bi RECORD; _bomheadid INTEGER; _bomitemid INTEGER; _bomworksetid INTEGER; _temp INTEGER; _schedatwooper BOOLEAN; _booitemseqid INTEGER; BEGIN -- Cache source bomhead SELECT * INTO _bh FROM bomhead WHERE ((bomhead_item_id=pSItemid) AND (bomhead_rev_id=getActiveRevID('BOM', pSItemid))); IF (NOT FOUND) THEN RETURN -1; END IF; -- Make sure that source bomitems exist SELECT bomitem_id INTO _bomitemid FROM bomitem WHERE ((bomitem_parent_item_id=_bh.bomhead_item_id) AND (bomitem_rev_id=_bh.bomhead_rev_id)) LIMIT 1; IF (NOT FOUND) THEN RETURN -2; END IF; -- Make sure that target bomitems do not exist SELECT bomitem_id INTO _bomitemid FROM bomitem WHERE ((bomitem_parent_item_id=pTItemid) AND (bomitem_rev_id= -1)) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; -- Make sure that the parent is not used in the component at some level IF ( SELECT (item_type IN ('M', 'F')) FROM item WHERE (item_id=pSItemid) ) THEN SELECT indentedWhereUsed(pTItemid) INTO _bomworksetid; SELECT bomwork_id INTO _temp FROM bomwork WHERE ( (bomwork_set_id=_bomworksetid) AND (bomwork_item_id=pSItemid) ) LIMIT 1; IF (FOUND) THEN PERFORM deleteBOMWorkset(_bomworksetid); RETURN -4; END IF; PERFORM deleteBOMWorkset(_bomworksetid); END IF; -- Check for existing target bomhead SELECT bomhead_id INTO _bomheadid FROM bomhead WHERE ((bomhead_item_id=pTItemid) AND (bomhead_rev_id= -1)); IF (NOT FOUND) THEN INSERT INTO bomhead ( bomhead_item_id, bomhead_serial, bomhead_docnum, bomhead_batchsize, bomhead_requiredqtyper ) VALUES ( pTItemid, _bh.bomhead_serial, _bh.bomhead_docnum, _bh.bomhead_batchsize, _bh.bomhead_requiredqtyper ); END IF; FOR _bi IN SELECT bomitem.* FROM bomitem(pSItemid) WHERE (bomitem_expires>CURRENT_DATE) LOOP SELECT NEXTVAL('bomitem_bomitem_id_seq') INTO _bomitemid; IF (pCopyUsedAt) THEN _schedatwooper := _bi.bomitem_schedatwooper; _booitemseqid := _bi.bomitem_booitem_seq_id; ELSE _schedatwooper := FALSE; _booitemseqid := -1; END IF; INSERT INTO bomitem ( bomitem_id, bomitem_parent_item_id, bomitem_seqnumber, bomitem_item_id, bomitem_uom_id, bomitem_qtyfxd, bomitem_qtyper, bomitem_scrap, bomitem_schedatwooper, bomitem_booitem_seq_id, bomitem_effective, bomitem_expires, bomitem_ecn, bomitem_createwo, bomitem_issuemethod, bomitem_moddate, bomitem_subtype, bomitem_notes, bomitem_ref ) VALUES ( _bomitemid, pTItemid, _bi.bomitem_seqnumber, _bi.bomitem_item_id, _bi.bomitem_uom_id, _bi.bomitem_qtyfxd, _bi.bomitem_qtyper, _bi.bomitem_scrap, _schedatwooper, _booitemseqid, CURRENT_DATE, _bi.bomitem_expires, _bi.bomitem_ecn, _bi.bomitem_createwo, _bi.bomitem_issuemethod, CURRENT_DATE, _bi.bomitem_subtype, _bi.bomitem_notes, _bi.bomitem_ref ); INSERT INTO bomitemsub ( bomitemsub_bomitem_id, bomitemsub_item_id, bomitemsub_uomratio, bomitemsub_rank ) SELECT _bomitemid, bomitemsub_item_id, bomitemsub_uomratio, bomitemsub_rank FROM bomitemsub WHERE (bomitemsub_bomitem_id=_bi.bomitem_id); END LOOP; RETURN pTItemid; END; $$; ALTER FUNCTION public.copybom(psitemid integer, ptitemid integer, pcopyusedat boolean) OWNER TO admin; -- -- Name: copybudget(integer, text, text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copybudget(integer, text, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBudgheadid ALIAS FOR $1; pName ALIAS FOR $2; pDescrip ALIAS FOR $3; pInterval ALIAS FOR $4; _budgheadid INTEGER; _periodid INTEGER; _result INTEGER; BEGIN SELECT 1 INTO _result FROM budgitem WHERE ((budgitem_budghead_id=pBudgheadid) AND (nextPeriodByInterval(budgitem_period_id, pInterval)=-1)) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; SELECT nextval('budghead_budghead_id_seq') INTO _budgheadid; INSERT INTO budghead (budghead_id, budghead_name, budghead_descrip) VALUES(_budgheadid, pName, pDescrip); INSERT INTO budgitem (budgitem_budghead_id, budgitem_period_id, budgitem_accnt_id, budgitem_amount) SELECT _budgheadid, nextPeriodByInterval(budgitem_period_id, pInterval), budgitem_accnt_id, budgitem_amount FROM budgitem WHERE (budgitem_budghead_id=pBudgheadid); RETURN _budgheadid; END; $_$; ALTER FUNCTION public.copybudget(integer, text, text, integer) OWNER TO admin; -- -- Name: copycmd(integer, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copycmd(integer, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmdId ALIAS FOR $1; pModule ALIAS FOR $2; pTitle ALIAS FOR $3; _cmdId INTEGER; BEGIN SELECT nextval('cmd_cmd_id_seq') INTO _cmdId; INSERT INTO cmd SELECT _cmdId, pModule, pTitle, cmd_descrip, cmd_privname, cmd_executable FROM cmd WHERE (cmd_id=pCmdId); INSERT INTO cmdarg (cmdarg_cmd_id, cmdarg_order, cmdarg_arg) SELECT _cmdId, cmdarg_order, cmdarg_arg FROM cmdarg WHERE (cmdarg_cmd_id=pCmdId); RETURN 1; END; $_$; ALTER FUNCTION public.copycmd(integer, text, text) OWNER TO admin; -- -- Name: copycontract(integer, text, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copycontract(pcontrctid integer, pnumber text, peffective date, pexpires date) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _contrctid INTEGER; _itemsrcid INTEGER; _r RECORD; BEGIN INSERT INTO contrct ( contrct_number, contrct_vend_id, contrct_descrip, contrct_effective, contrct_expires, contrct_note ) SELECT pNumber, contrct_vend_id, contrct_descrip, pEffective, pExpires, contrct_note FROM contrct WHERE (contrct_id=pContrctid) RETURNING contrct_id INTO _contrctid; FOR _r IN SELECT * FROM itemsrc WHERE (itemsrc_contrct_id=pContrctid) LOOP INSERT INTO itemsrc ( itemsrc_item_id, itemsrc_vend_id, itemsrc_vend_item_number, itemsrc_vend_item_descrip, itemsrc_comments, itemsrc_vend_uom, itemsrc_invvendoruomratio, itemsrc_minordqty, itemsrc_multordqty, itemsrc_leadtime, itemsrc_ranking, itemsrc_active, itemsrc_manuf_name, itemsrc_manuf_item_number, itemsrc_manuf_item_descrip, itemsrc_default, itemsrc_upccode, itemsrc_effective, itemsrc_expires, itemsrc_contrct_id ) VALUES ( _r.itemsrc_item_id, _r.itemsrc_vend_id, _r.itemsrc_vend_item_number, _r.itemsrc_vend_item_descrip, _r.itemsrc_comments, _r.itemsrc_vend_uom, _r.itemsrc_invvendoruomratio, _r.itemsrc_minordqty, _r.itemsrc_multordqty, _r.itemsrc_leadtime, _r.itemsrc_ranking, _r.itemsrc_active, _r.itemsrc_manuf_name, _r.itemsrc_manuf_item_number, _r.itemsrc_manuf_item_descrip, _r.itemsrc_default, _r.itemsrc_upccode, pEffective, pExpires, _contrctid ) RETURNING itemsrc_id INTO _itemsrcid; INSERT INTO itemsrcp ( itemsrcp_itemsrc_id, itemsrcp_qtybreak, itemsrcp_price, itemsrcp_updated, itemsrcp_curr_id, itemsrcp_dropship, itemsrcp_warehous_id, itemsrcp_type, itemsrcp_discntprcnt, itemsrcp_fixedamtdiscount ) SELECT _itemsrcid, itemsrcp_qtybreak, itemsrcp_price, CURRENT_DATE, itemsrcp_curr_id, itemsrcp_dropship, itemsrcp_warehous_id, itemsrcp_type, itemsrcp_discntprcnt, itemsrcp_fixedamtdiscount FROM itemsrcp WHERE (itemsrcp_itemsrc_id=_r.itemsrc_id); END LOOP; RETURN _contrctid; END; $$; ALTER FUNCTION public.copycontract(pcontrctid integer, pnumber text, peffective date, pexpires date) OWNER TO admin; -- -- Name: copyfinancialgroup(integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copyfinancialgroup(integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSourceGroup ALIAS FOR $1; pFlheadid ALIAS FOR $2; pParentFlgrpid ALIAS FOR $3; _flgrpid INTEGER; BEGIN SELECT nextval('flgrp_flgrp_id_seq') INTO _flgrpid; -- Copy the group item INSERT INTO flgrp (flgrp_id, flgrp_flhead_id, flgrp_flgrp_id, flgrp_order, flgrp_name, flgrp_descrip, flgrp_subtotal, flgrp_summarize, flgrp_subtract, flgrp_showstart, flgrp_showend, flgrp_showdelta, flgrp_showbudget, flgrp_showdiff, flgrp_showcustom, flgrp_showstartprcnt, flgrp_showendprcnt, flgrp_showdeltaprcnt, flgrp_showbudgetprcnt, flgrp_showdiffprcnt, flgrp_showcustomprcnt, flgrp_usealtsubtotal, flgrp_altsubtotal,flgrp_prcnt_flgrp_id) SELECT _flgrpid, pFlheadid, pParentFlgrpid, flgrp_order, flgrp_name, flgrp_descrip, flgrp_subtotal, flgrp_summarize, flgrp_subtract, flgrp_showstart, flgrp_showend, flgrp_showdelta, flgrp_showbudget, flgrp_showdiff, flgrp_showcustom, flgrp_showstartprcnt, flgrp_showendprcnt, flgrp_showdeltaprcnt, flgrp_showbudgetprcnt, flgrp_showdiffprcnt, flgrp_showcustomprcnt, flgrp_usealtsubtotal, flgrp_altsubtotal,flgrp_prcnt_flgrp_id FROM flgrp WHERE (flgrp_id=pSourceGroup); -- Store temporary cross ref info EXECUTE ' INSERT INTO tmp_flgrpxref' || getEffectiveXtUser() || ' (flgrpxref_oldid,flgrpxref_newid) VALUES (' || pSourceGroup || ',' || _flgrpid || ');'; -- Copy any children flitems INSERT INTO flitem (flitem_flhead_id, flitem_flgrp_id, flitem_order, flitem_accnt_id, flitem_showstart, flitem_showend, flitem_showdelta, flitem_showbudget, flitem_showdiff, flitem_showcustom, flitem_subtract, flitem_showstartprcnt, flitem_showendprcnt, flitem_showdeltaprcnt, flitem_showbudgetprcnt, flitem_showdiffprcnt, flitem_showcustomprcnt, flitem_custom_source, flitem_company, flitem_profit, flitem_number, flitem_sub, flitem_type, flitem_subaccnttype_code, flitem_prcnt_flgrp_id) SELECT pFlheadid, _flgrpid, flitem_order, flitem_accnt_id, flitem_showstart, flitem_showend, flitem_showdelta, flitem_showbudget, flitem_showdiff, flitem_showcustom, flitem_subtract, flitem_showstartprcnt, flitem_showendprcnt, flitem_showdeltaprcnt, flitem_showbudgetprcnt, flitem_showdiffprcnt, flitem_showcustomprcnt, flitem_custom_source, flitem_company, flitem_profit, flitem_number, flitem_sub, flitem_type, flitem_subaccnttype_code, flitem_prcnt_flgrp_id FROM flitem WHERE (flitem_flgrp_id=pSourceGroup); -- Copy any children flspecs INSERT INTO flspec (flspec_flhead_id, flspec_flgrp_id, flspec_order, flspec_name, flspec_type, flspec_showstart, flspec_showend, flspec_showdelta, flspec_showbudget, flspec_showdiff, flspec_showcustom, flspec_subtract, flspec_showstartprcnt, flspec_showendprcnt, flspec_showdeltaprcnt, flspec_showbudgetprcnt, flspec_showdiffprcnt, flspec_showcustomprcnt, flspec_custom_source, flspec_prcnt_flgrp_id) SELECT pFlheadid, _flgrpid, flspec_order, flspec_name, flspec_type, flspec_showstart, flspec_showend, flspec_showdelta, flspec_showbudget, flspec_showdiff, flspec_showcustom, flspec_subtract, flspec_showstartprcnt, flspec_showendprcnt, flspec_showdeltaprcnt, flspec_showbudgetprcnt, flspec_showdiffprcnt, flspec_showcustomprcnt, flspec_custom_source, flspec_prcnt_flgrp_id FROM flspec WHERE (flspec_flgrp_id=pSourceGroup); -- Copy the groups PERFORM copyFinancialGroup(flgrp_id, pFlheadid, _flgrpid) FROM flgrp WHERE (flgrp_flgrp_id=pSourceGroup); RETURN _flgrpid; END; $_$; ALTER FUNCTION public.copyfinancialgroup(integer, integer, integer) OWNER TO admin; -- -- Name: copyfinanciallayout(integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copyfinanciallayout(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSourceFlheadid ALIAS FOR $1; pDestName ALIAS FOR $2; _flheadid INTEGER; _tblName TEXT; BEGIN -- Check for the flhead to be copy that it exists PERFORM flhead_id FROM flhead WHERE (flhead_id=pSourceFlheadid); IF (NOT FOUND) THEN RETURN -1; END IF; -- Check that the name is valid IF (pDestName IS NULL OR pDestName = '') THEN RETURN -2; END IF; -- Check for the name to copy to does not exist PERFORM flhead_id FROM flhead WHERE (flhead_name=pDestName); IF (FOUND) THEN RETURN -3; END IF; -- Copy the flhead record SELECT nextval('flhead_flhead_id_seq') INTO _flheadid; INSERT INTO flhead (flhead_id, flhead_name, flhead_descrip, flhead_showtotal, flhead_showstart, flhead_showend, flhead_showdelta, flhead_showbudget, flhead_showdiff, flhead_showcustom, flhead_custom_label, flhead_usealttotal, flhead_alttotal, flhead_usealtbegin, flhead_altbegin, flhead_usealtend, flhead_altend, flhead_usealtdebits, flhead_altdebits, flhead_usealtcredits, flhead_altcredits, flhead_usealtbudget, flhead_altbudget, flhead_usealtdiff, flhead_altdiff, flhead_type, flhead_active, flhead_sys ) SELECT _flheadid, pDestName, flhead_descrip, flhead_showtotal, flhead_showstart, flhead_showend, flhead_showdelta, flhead_showbudget, flhead_showdiff, flhead_showcustom, flhead_custom_label, flhead_usealttotal, flhead_alttotal, flhead_usealtbegin, flhead_altbegin, flhead_usealtend, flhead_altend, flhead_usealtdebits, flhead_altdebits, flhead_usealtcredits, flhead_altcredits, flhead_usealtbudget, flhead_altbudget, flhead_usealtdiff, flhead_altdiff, flhead_type, flhead_active, false FROM flhead WHERE (flhead_id=pSourceFlheadid); -- Create temporary table so old and new group ids can be stored SELECT relname FROM pg_class INTO _tblName WHERE relname = 'tmp_flgrpxref'; IF (_tblName IS NULL) THEN EXECUTE 'CREATE TEMPORARY TABLE tmp_flgrpxref' || getEffectiveXtUser() || ' ( flgrpxref_oldid int4, flgrpxref_newid int4 ) ON COMMIT DROP;'; END IF; -- Copy the top level groups PERFORM copyFinancialGroup(flgrp_id, _flheadid, -1) FROM flgrp WHERE ((flgrp_flhead_id=pSourceFlheadid) AND (flgrp_flgrp_id=-1)); -- Update Group Percent settings EXECUTE 'UPDATE flgrp SET flgrp_prcnt_flgrp_id=flgrpxref_newid FROM tmp_flgrpxref' || getEffectiveXtUser() || ' WHERE ((flgrp_flhead_id=' || _flheadid || ') AND (flgrp_prcnt_flgrp_id=flgrpxref_oldid));'; EXECUTE 'UPDATE flitem SET flitem_prcnt_flgrp_id=flgrpxref_newid FROM tmp_flgrpxref' || getEffectiveXtUser() || ' WHERE ((flitem_flhead_id=' || _flheadid || ') AND (flitem_prcnt_flgrp_id=flgrpxref_oldid));'; EXECUTE 'UPDATE flspec SET flspec_prcnt_flgrp_id=flgrpxref_newid FROM tmp_flgrpxref' || getEffectiveXtUser() || ' WHERE ((flspec_flhead_id=' || _flheadid || ') AND (flspec_prcnt_flgrp_id=flgrpxref_oldid));'; -- Copy Column Layounts INSERT INTO flcol (flcol_flhead_id, flcol_name, flcol_descrip, flcol_report_id, flcol_month, flcol_quarter, flcol_year, flcol_showdb, flcol_prcnt, flcol_priortype, flcol_priormonth, flcol_priorquarter, flcol_prioryear, flcol_priorprcnt, flcol_priordiff, flcol_priordiffprcnt, flcol_budget, flcol_budgetprcnt, flcol_budgetdiff, flcol_budgetdiffprcnt ) SELECT _flheadid,flcol_name,flcol_descrip, flcol_report_id,flcol_month,flcol_quarter, flcol_year,flcol_showdb,flcol_prcnt, flcol_priortype,flcol_priormonth,flcol_priorquarter, flcol_prioryear,flcol_priorprcnt,flcol_priordiff, flcol_priordiffprcnt,flcol_budget,flcol_budgetprcnt, flcol_budgetdiff,flcol_budgetdiffprcnt FROM flcol WHERE (flcol_flhead_id=pSourceFlheadid); RETURN _flheadid; END; $_$; ALTER FUNCTION public.copyfinanciallayout(integer, text) OWNER TO admin; -- -- Name: copyglseries(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copyglseries(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; _sequence INTEGER := fetchGLSequence(); _journal INTEGER; BEGIN SELECT gltrans_journalnumber INTO _journal FROM gltrans WHERE ( gltrans_sequence=pSequence ) LIMIT 1; IF (FOUND) THEN INSERT INTO glseries ( glseries_sequence, glseries_source, glseries_doctype, glseries_docnumber, glseries_notes, glseries_accnt_id, glseries_amount, glseries_distdate ) SELECT _sequence, gltrans_source, gltrans_doctype, gltrans_docnumber, gltrans_notes, gltrans_accnt_id, gltrans_amount, gltrans_date FROM gltrans WHERE ( gltrans_sequence=pSequence ); ELSE RAISE EXCEPTION 'g/l transaction sequence not found'; END IF; RETURN _sequence; END; $_$; ALTER FUNCTION public.copyglseries(integer) OWNER TO admin; -- -- Name: copyincdt(integer, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copyincdt(integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pparentid ALIAS FOR $1; ptimestamp TIMESTAMP WITH TIME ZONE := COALESCE($2, CURRENT_TIMESTAMP); _alarmid INTEGER; _incdtid INTEGER; _todoitemid INTEGER; BEGIN INSERT INTO incdt(incdt_number, incdt_crmacct_id, incdt_cntct_id, incdt_summary, incdt_descrip, incdt_item_id, incdt_timestamp, incdt_incdtcat_id, incdt_incdtseverity_id,incdt_incdtpriority_id, incdt_owner_username, incdt_recurring_incdt_id ) SELECT fetchIncidentNumber(), incdt_crmacct_id, incdt_cntct_id, incdt_summary, incdt_descrip, incdt_item_id, ptimestamp, incdt_incdtcat_id, incdt_incdtseverity_id,incdt_incdtpriority_id, incdt_owner_username, incdt_recurring_incdt_id FROM incdt WHERE (incdt_id=pparentid) RETURNING incdt_id INTO _incdtid; IF (_incdtid IS NULL) THEN RETURN -10; END IF; SELECT MIN(copyTodoitem(todoitem_id, CAST(ptimestamp AS DATE), _incdtid)) INTO _todoitemid FROM todoitem WHERE (todoitem_incdt_id=pparentid); IF (_todoitemid < 0) THEN RETURN _todoitemid; END IF; SELECT saveAlarm(NULL, NULL, CAST(ptimestamp AS DATE), CAST(alarm_time - DATE_TRUNC('day',alarm_time) AS TIME), alarm_time_offset, alarm_time_qualifier, alarm_event_recipient IS NOT NULL, alarm_event_recipient, alarm_email_recipient IS NOT NULL, alarm_email_recipient, alarm_sysmsg_recipient IS NOT NULL, alarm_sysmsg_recipient, 'INCDT', _incdtid, 'CHANGEONE') INTO _alarmid FROM alarm WHERE ((alarm_source='INCDT') AND (alarm_source_id=pparentid)); IF (_alarmid < 0) THEN RETURN _alarmid; END IF; INSERT INTO docass (docass_source_id, docass_source_type, docass_target_id, docass_target_type, docass_purpose ) SELECT _incdtid, 'INCDT', docass_target_id, docass_target_type, docass_purpose FROM docass WHERE ((docass_source_id=pparentid) AND (docass_source_type='INCDT')); RETURN _incdtid; END; $_$; ALTER FUNCTION public.copyincdt(integer, timestamp with time zone) OWNER TO admin; -- -- Name: copyinvoice(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copyinvoice(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcheadid ALIAS FOR $1; _invcheadid INTEGER; _invcnumber TEXT; _invcdate DATE := COALESCE($2, CURRENT_DATE); _i RECORD; _l RECORD; _invcitemid INTEGER; BEGIN SELECT * INTO _i FROM invchead WHERE(invchead_id=pInvcheadid); IF(NOT FOUND) THEN RETURN -1; END IF; _invcnumber := fetchInvcNumber(); _invcheadid := nextval('invchead_invchead_id_seq'); INSERT INTO invchead (invchead_id, invchead_cust_id, invchead_shipto_id, invchead_ordernumber, invchead_orderdate, invchead_posted, invchead_printed, invchead_invcnumber, invchead_invcdate, invchead_shipdate, invchead_ponumber, invchead_shipvia, invchead_fob, invchead_billto_name, invchead_billto_address1, invchead_billto_address2, invchead_billto_address3, invchead_billto_city, invchead_billto_state, invchead_billto_zipcode, invchead_billto_phone, invchead_shipto_name, invchead_shipto_address1, invchead_shipto_address2, invchead_shipto_address3, invchead_shipto_city, invchead_shipto_state, invchead_shipto_zipcode, invchead_shipto_phone, invchead_salesrep_id, invchead_commission, invchead_terms_id, invchead_freight, invchead_misc_amount, invchead_misc_descrip, invchead_misc_accnt_id, invchead_payment, invchead_paymentref, invchead_notes, invchead_billto_country, invchead_shipto_country, invchead_prj_id, invchead_curr_id, invchead_taxzone_id, invchead_recurring_invchead_id, invchead_saletype_id, invchead_shipzone_id) VALUES(_invcheadid, _i.invchead_cust_id, _i.invchead_shipto_id, _i.invchead_ordernumber, _i.invchead_orderdate, false, false, _invcnumber, _invcdate, _i.invchead_shipdate, _i.invchead_ponumber, _i.invchead_shipvia, _i.invchead_fob, _i.invchead_billto_name, _i.invchead_billto_address1, _i.invchead_billto_address2, _i.invchead_billto_address3, _i.invchead_billto_city, _i.invchead_billto_state, _i.invchead_billto_zipcode, _i.invchead_billto_phone, _i.invchead_shipto_name, _i.invchead_shipto_address1, _i.invchead_shipto_address2, _i.invchead_shipto_address3, _i.invchead_shipto_city, _i.invchead_shipto_state, _i.invchead_shipto_zipcode, _i.invchead_shipto_phone, _i.invchead_salesrep_id, _i.invchead_commission, _i.invchead_terms_id, _i.invchead_freight, _i.invchead_misc_amount, _i.invchead_misc_descrip, _i.invchead_misc_accnt_id, _i.invchead_payment, _i.invchead_paymentref, _i.invchead_notes, _i.invchead_billto_country, _i.invchead_shipto_country, _i.invchead_prj_id, _i.invchead_curr_id, _i.invchead_taxzone_id, _i.invchead_recurring_invchead_id, _i.invchead_saletype_id, _i.invchead_shipzone_id); FOR _l IN SELECT * FROM invcitem WHERE (invcitem_invchead_id=pInvcheadid) LOOP SELECT NEXTVAL('invcitem_invcitem_id_seq') INTO _invcitemid; INSERT INTO invcitem (invcitem_id, invcitem_invchead_id, invcitem_linenumber, invcitem_item_id, invcitem_warehous_id, invcitem_custpn, invcitem_number, invcitem_descrip, invcitem_ordered, invcitem_billed, invcitem_custprice, invcitem_price, invcitem_notes, invcitem_salescat_id, invcitem_taxtype_id, invcitem_qty_uom_id, invcitem_qty_invuomratio, invcitem_price_uom_id, invcitem_price_invuomratio, invcitem_coitem_id) VALUES (_invcitemid, _invcheadid, _l.invcitem_linenumber, _l.invcitem_item_id, _l.invcitem_warehous_id, _l.invcitem_custpn, _l.invcitem_number, _l.invcitem_descrip, _l.invcitem_ordered, _l.invcitem_billed, _l.invcitem_custprice, _l.invcitem_price, _l.invcitem_notes, _l.invcitem_salescat_id, _l.invcitem_taxtype_id, _l.invcitem_qty_uom_id, _l.invcitem_qty_invuomratio, _l.invcitem_price_uom_id, _l.invcitem_price_invuomratio, _l.invcitem_coitem_id); END LOOP; RETURN _invcheadid; END; $_$; ALTER FUNCTION public.copyinvoice(integer, date) OWNER TO admin; -- -- Name: copyitem(integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copyitem(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSItemid ALIAS FOR $1; pTItemNumber ALIAS FOR $2; _itemid INTEGER; _r RECORD; _id INTEGER; BEGIN SELECT NEXTVAL('item_item_id_seq') INTO _itemid; INSERT INTO item ( item_id, item_number, item_descrip1, item_descrip2, item_classcode_id, item_type, item_active, item_picklist, item_sold, item_fractional, item_maxcost, item_prodweight, item_packweight, item_prodcat_id,item_exclusive, item_listprice, item_listcost, item_config, item_comments, item_extdescrip, item_upccode, item_inv_uom_id, item_price_uom_id ) SELECT _itemid, pTItemNumber, item_descrip1, item_descrip2, item_classcode_id, item_type, item_active, item_picklist, item_sold, item_fractional, item_maxcost, item_prodweight, item_packweight, item_prodcat_id, item_exclusive, item_listprice, item_listcost, item_config, item_comments, item_extdescrip, item_upccode, item_inv_uom_id, item_price_uom_id FROM item WHERE (item_id=pSItemid); INSERT INTO imageass (imageass_source_id, imageass_source, imageass_image_id, imageass_purpose) SELECT _itemid, 'I', imageass_image_id, imageass_purpose FROM imageass WHERE ((imageass_source_id=pSItemid) AND (imageass_source='I')); INSERT INTO url (url_source_id, url_source, url_title, url_url) SELECT _itemid, 'I', url_title, url_url FROM url WHERE ((url_source_id=pSItemid) AND (url_source='I')); INSERT INTO itemtax (itemtax_item_id, itemtax_taxzone_id, itemtax_taxtype_id) SELECT _itemid, itemtax_taxzone_id, itemtax_taxtype_id FROM itemtax WHERE(itemtax_item_id=pSItemid); INSERT INTO charass ( charass_target_type, charass_target_id, charass_char_id, charass_value ) SELECT 'I', _itemid, charass_char_id, charass_value FROM charass WHERE ( (charass_target_type='I') AND (charass_target_id=pSItemid) ); FOR _r IN SELECT itemuomconv_id, itemuomconv_from_uom_id, itemuomconv_from_value, itemuomconv_to_uom_id, itemuomconv_to_value, itemuomconv_fractional FROM itemuomconv WHERE(itemuomconv_item_id=pSItemid) LOOP SELECT nextval('itemuomconv_itemuomconv_id_seq') INTO _id; INSERT INTO itemuomconv (itemuomconv_id, itemuomconv_item_id, itemuomconv_from_uom_id, itemuomconv_from_value, itemuomconv_to_uom_id, itemuomconv_to_value, itemuomconv_fractional) VALUES(_id, _itemid, _r.itemuomconv_from_uom_id, _r.itemuomconv_from_value, _r.itemuomconv_to_uom_id, _r.itemuomconv_to_value, _r.itemuomconv_fractional); INSERT INTO itemuom (itemuom_itemuomconv_id, itemuom_uomtype_id) SELECT _id, itemuom_uomtype_id FROM itemuom WHERE(itemuom_itemuomconv_id=_r.itemuomconv_id); END LOOP; RETURN _itemid; END; $_$; ALTER FUNCTION public.copyitem(integer, text) OWNER TO admin; -- -- Name: copyitem(integer, text, boolean, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copyitem(integer, text, boolean, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSItemid ALIAS FOR $1; pTItemNumber ALIAS FOR $2; pCopyBOM ALIAS FOR $3; pCopyBOO ALIAS FOR $4; -- deprecated - xtmfg-specific pCopyCosts ALIAS FOR $5; BEGIN RAISE NOTICE 'copyItem(INTEGER, TEXT, BOOLEAN, BOOLEAN, BOOLEAN) has been deprecated. Use copyItem(INTEGER, TEXT) or copyItem(INTEGER, TEXT, BOOLEAN, BOOLEAN) or a package-specific version instead.'; RETURN copyItem(pSItemid, pTItemNumber, pCopyBOM, pCopyCosts); END; $_$; ALTER FUNCTION public.copyitem(integer, text, boolean, boolean, boolean) OWNER TO admin; -- -- Name: copyitem(integer, text, boolean, boolean, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copyitem(integer, text, boolean, boolean, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSItemid ALIAS FOR $1; pTItemNumber ALIAS FOR $2; pCopyBOM ALIAS FOR $3; pCopyBOO ALIAS FOR $4; -- deprecated - xtmfg-specific pCopyCosts ALIAS FOR $5; pCopyUsedAt ALIAS FOR $6; -- deprecated - xtmfg-specific BEGIN RETURN copyItem(pSItemid, pTItemNumber, pCopyBOM, pCopyCosts); END; $_$; ALTER FUNCTION public.copyitem(integer, text, boolean, boolean, boolean, boolean) OWNER TO admin; -- -- Name: copyitem(integer, text, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copyitem(integer, text, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSItemid ALIAS FOR $1; pTItemNumber ALIAS FOR $2; pCopyBOM ALIAS FOR $3; pCopyCosts ALIAS FOR $4; _itemid INTEGER; BEGIN _itemid := copyItem(pSItemid, pTItemNumber); IF (pCopyBOM) THEN PERFORM copyBOM(pSItemid, _itemid, FALSE); END IF; IF (pCopyCosts) THEN INSERT INTO itemcost ( itemcost_item_id, itemcost_costelem_id, itemcost_lowlevel, itemcost_stdcost, itemcost_posted, itemcost_actcost, itemcost_curr_id, itemcost_updated ) SELECT _itemid, itemcost_costelem_id, itemcost_lowlevel, itemcost_stdcost, CURRENT_DATE, itemcost_actcost, itemcost_curr_id, CURRENT_DATE FROM itemcost WHERE (itemcost_item_id=pSItemid); END IF; RETURN _itemid; END; $_$; ALTER FUNCTION public.copyitem(integer, text, boolean, boolean) OWNER TO admin; -- -- Name: copyitemsite(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copyitemsite(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pitemsiteid ALIAS FOR $1; pdestwhsid ALIAS FOR $2; _destwhs whsinfo%ROWTYPE; _new itemsite%ROWTYPE; BEGIN -- make a copy of the old itemsite SELECT * INTO _new FROM itemsite WHERE (itemsite_id=pitemsiteid); IF (NOT FOUND) THEN RETURN -1; END IF; -- if there is no dest warehouse then perhaps the user is manually copying it IF (pdestwhsid IS NOT NULL) THEN SELECT * INTO _destwhs FROM whsinfo WHERE (warehous_id=pdestwhsid); IF (NOT FOUND) THEN RETURN -2; END IF; END IF; IF (NOT checkPrivilege('MaintainItemSites')) THEN RETURN -3; END IF; SELECT itemsite_id INTO _new.itemsite_id FROM itemsite WHERE ((itemsite_item_id=_new.itemsite_item_id) AND (itemsite_warehous_id=pdestwhsid OR (itemsite_warehous_id IS NULL AND pdestwhsid IS NULL))); IF (FOUND) THEN RETURN _new.itemsite_id; END IF; -- now override the things we know have to change _new.itemsite_id := NEXTVAL('itemsite_itemsite_id_seq'); _new.itemsite_warehous_id := pdestwhsid; _new.itemsite_qtyonhand := 0; _new.itemsite_value := 0; _new.itemsite_datelastcount := NULL; _new.itemsite_datelastused := NULL; _new.itemsite_nnqoh := 0; _new.itemsite_location_id := -1; IF (_destwhs.warehous_transit) THEN _new.itemsite_reorderlevel := 0; _new.itemsite_ordertoqty := 0; _new.itemsite_soldranking := NULL; _new.itemsite_posupply := FALSE; _new.itemsite_wosupply := FALSE; _new.itemsite_loccntrl := FALSE; _new.itemsite_safetystock := 0; _new.itemsite_minordqty := 0; _new.itemsite_multordqty := 0; _new.itemsite_leadtime := 0; _new.itemsite_controlmethod := 'R'; IF(_new.itemsite_costmethod='N') THEN _new.itemsite_costmethod := 'S'; END IF; _new.itemsite_active := TRUE; -- ? _new.itemsite_plancode_id := -1; -- ? _new.itemsite_costcat_id := -1; _new.itemsite_eventfence := 1; _new.itemsite_sold := FALSE; _new.itemsite_stocked := FALSE; _new.itemsite_location_id := -1; _new.itemsite_useparams := FALSE; _new.itemsite_useparamsmanual := FALSE; _new.itemsite_createpr := FALSE; _new.itemsite_location := NULL; _new.itemsite_location_comments := NULL; _new.itemsite_notes := 'Transit Warehouse'; _new.itemsite_nnqoh := 0; _new.itemsite_createwo := FALSE; _new.itemsite_costcat_id := _destwhs.warehous_costcat_id; END IF; INSERT INTO itemsite ( itemsite_id, itemsite_item_id, itemsite_warehous_id, itemsite_qtyonhand, itemsite_costmethod, itemsite_value, itemsite_reorderlevel, itemsite_ordertoqty, itemsite_cyclecountfreq, itemsite_datelastcount, itemsite_datelastused, itemsite_posupply, itemsite_wosupply, itemsite_loccntrl, itemsite_safetystock, itemsite_minordqty, itemsite_multordqty, itemsite_leadtime, itemsite_abcclass, itemsite_issuemethod, itemsite_controlmethod, itemsite_active, itemsite_plancode_id, itemsite_costcat_id, itemsite_eventfence, itemsite_sold, itemsite_stocked, itemsite_freeze, itemsite_location_id, itemsite_useparams, itemsite_useparamsmanual, itemsite_soldranking, itemsite_createpr, itemsite_location, itemsite_location_comments, itemsite_notes, itemsite_perishable, itemsite_nnqoh, itemsite_autoabcclass, itemsite_ordergroup, itemsite_disallowblankwip, itemsite_maxordqty, itemsite_mps_timefence, itemsite_createwo, itemsite_warrpurc, itemsite_autoreg, itemsite_planning_type, itemsite_supply_itemsite_id ) VALUES ( _new.itemsite_id, _new.itemsite_item_id, _new.itemsite_warehous_id, _new.itemsite_qtyonhand, _new.itemsite_costmethod, _new.itemsite_value, _new.itemsite_reorderlevel, _new.itemsite_ordertoqty, _new.itemsite_cyclecountfreq, _new.itemsite_datelastcount, _new.itemsite_datelastused, _new.itemsite_posupply, _new.itemsite_wosupply, _new.itemsite_loccntrl, _new.itemsite_safetystock, _new.itemsite_minordqty, _new.itemsite_multordqty, _new.itemsite_leadtime, _new.itemsite_abcclass, _new.itemsite_issuemethod, _new.itemsite_controlmethod, _new.itemsite_active, _new.itemsite_plancode_id, _new.itemsite_costcat_id, _new.itemsite_eventfence, _new.itemsite_sold, _new.itemsite_stocked, _new.itemsite_freeze, _new.itemsite_location_id, _new.itemsite_useparams, _new.itemsite_useparamsmanual, _new.itemsite_soldranking, _new.itemsite_createpr, _new.itemsite_location, _new.itemsite_location_comments, _new.itemsite_notes, _new.itemsite_perishable, _new.itemsite_nnqoh, _new.itemsite_autoabcclass, _new.itemsite_ordergroup, _new.itemsite_disallowblankwip, _new.itemsite_maxordqty, _new.itemsite_mps_timefence, _new.itemsite_createwo, _new.itemsite_warrpurc, _new.itemsite_autoreg, _new.itemsite_planning_type, _new.itemsite_supply_itemsite_id ); RETURN _new.itemsite_id; END; $_$; ALTER FUNCTION public.copyitemsite(integer, integer) OWNER TO admin; -- -- Name: copylocale(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copylocale(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLocaleid ALIAS FOR $1; _localecode TEXT; _localeid INTEGER; BEGIN SELECT locale_code INTO _localecode FROM locale WHERE (locale_id=pLocaleid); IF (NOT FOUND) THEN RAISE EXCEPTION 'Attempt to copy a non-existent locale-id.'; END IF; IF (EXISTS(SELECT locale_id FROM locale WHERE (locale_code = (_localecode || '-COPY')))) THEN RAISE EXCEPTION 'Attempt to copy a Locale Code that already exists.'; END IF; SELECT NEXTVAL('locale_locale_id_seq') INTO _localeid; INSERT INTO locale (locale_id, locale_code, locale_descrip, locale_lang_file, locale_dateformat, locale_currformat, locale_qtyformat, locale_comments, locale_qtyperformat, locale_salespriceformat, locale_extpriceformat, locale_timeformat, locale_timestampformat, local_costformat, locale_costformat, locale_purchpriceformat, locale_uomratioformat, locale_intervalformat, locale_lang_id, locale_country_id, locale_error_color, locale_warning_color, locale_emphasis_color, locale_altemphasis_color, locale_expired_color, locale_future_color, locale_curr_scale, locale_salesprice_scale, locale_purchprice_scale, locale_extprice_scale, locale_cost_scale, locale_qty_scale, locale_qtyper_scale, locale_uomratio_scale) SELECT _localeid, locale_code || '-COPY', '', locale_lang_file, locale_dateformat, locale_currformat, locale_qtyformat, locale_comments, locale_qtyperformat, locale_salespriceformat, locale_extpriceformat, locale_timeformat, locale_timestampformat, local_costformat, locale_costformat, locale_purchpriceformat, locale_uomratioformat, locale_intervalformat, locale_lang_id, locale_country_id, locale_error_color, locale_warning_color, locale_emphasis_color, locale_altemphasis_color, locale_expired_color, locale_future_color, locale_curr_scale, locale_salesprice_scale, locale_purchprice_scale, locale_extprice_scale, locale_cost_scale, locale_qty_scale, locale_qtyper_scale, locale_uomratio_scale FROM locale WHERE(locale_id=pLocaleid); RETURN _localeid; END; $_$; ALTER FUNCTION public.copylocale(integer) OWNER TO admin; -- -- Name: copypo(integer, integer, date, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copypo(integer, integer, date, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSrcid ALIAS FOR $1; pVendid ALIAS FOR $2; pOrderdate ALIAS FOR $3; pRecheckVendinfo ALIAS FOR $4; _tgtid INTEGER; _orderdate DATE; _head RECORD; _itemsrc RECORD; _lineitem RECORD; _qty NUMERIC; _unitprice NUMERIC; _uomratio NUMERIC; _vend_restrictpurch BOOLEAN; BEGIN SELECT * INTO _head FROM pohead WHERE pohead_id = pSrcid; IF (NOT FOUND) THEN RETURN -1; END IF; IF (_head.pohead_vend_id != pVendid) THEN RETURN -2; -- not supported now but should be in the future END IF; -- when enabled, set pRecheckVendinfo if vendors don't match IF (pOrderdate IS NULL) THEN _orderdate := CURRENT_DATE; ELSE _orderdate := pOrderdate; END IF; INSERT INTO pohead (pohead_status, pohead_number, pohead_orderdate, pohead_vend_id, pohead_fob, pohead_shipvia, pohead_freight, pohead_printed, pohead_terms_id, pohead_warehous_id, pohead_vendaddr_id, pohead_agent_username, pohead_curr_id, pohead_saved, pohead_taxtype_id, pohead_taxzone_id, pohead_dropship, pohead_vend_cntct_id, pohead_vend_cntct_honorific, pohead_vend_cntct_first_name, pohead_vend_cntct_middle, pohead_vend_cntct_last_name, pohead_vend_cntct_suffix, pohead_vend_cntct_phone, pohead_vend_cntct_title, pohead_vend_cntct_fax, pohead_vend_cntct_email, pohead_vendaddress1, pohead_vendaddress2, pohead_vendaddress3, pohead_vendcity, pohead_vendstate, pohead_vendzipcode, pohead_vendcountry, pohead_shipto_cntct_id, pohead_shipto_cntct_honorific, pohead_shipto_cntct_first_name, pohead_shipto_cntct_middle, pohead_shipto_cntct_last_name, pohead_shipto_cntct_suffix, pohead_shipto_cntct_phone, pohead_shipto_cntct_title, pohead_shipto_cntct_fax, pohead_shipto_cntct_email, pohead_shiptoaddress_id, pohead_shiptoaddress1, pohead_shiptoaddress2, pohead_shiptoaddress3, pohead_shiptocity, pohead_shiptostate, pohead_shiptozipcode, pohead_shiptocountry ) VALUES ( 'U', fetchPoNumber(), _orderdate, _head.pohead_vend_id, _head.pohead_fob, _head.pohead_shipvia, _head.pohead_freight, false, _head.pohead_terms_id, _head.pohead_warehous_id, _head.pohead_vendaddr_id, _head.pohead_agent_username, _head.pohead_curr_id, true, _head.pohead_taxtype_id, _head.pohead_taxzone_id, false, _head.pohead_vend_cntct_id, _head.pohead_vend_cntct_honorific, _head.pohead_vend_cntct_first_name, _head.pohead_vend_cntct_middle, _head.pohead_vend_cntct_last_name, _head.pohead_vend_cntct_suffix, _head.pohead_vend_cntct_phone, _head.pohead_vend_cntct_title, _head.pohead_vend_cntct_fax, _head.pohead_vend_cntct_email, _head.pohead_vendaddress1, _head.pohead_vendaddress2, _head.pohead_vendaddress3, _head.pohead_vendcity, _head.pohead_vendstate, _head.pohead_vendzipcode, _head.pohead_vendcountry, _head.pohead_shipto_cntct_id, _head.pohead_shipto_cntct_honorific, _head.pohead_shipto_cntct_first_name, _head.pohead_shipto_cntct_middle, _head.pohead_shipto_cntct_last_name, _head.pohead_shipto_cntct_suffix, _head.pohead_shipto_cntct_phone, _head.pohead_shipto_cntct_title, _head.pohead_shipto_cntct_fax, _head.pohead_shipto_cntct_email, _head.pohead_shiptoaddress_id, _head.pohead_shiptoaddress1, _head.pohead_shiptoaddress2, _head.pohead_shiptoaddress3, _head.pohead_shiptocity, _head.pohead_shiptostate, _head.pohead_shiptozipcode, _head.pohead_shiptocountry); _tgtid := CURRVAL('pohead_pohead_id_seq'); IF (pRecheckVendinfo) THEN SELECT vend_restrictpurch INTO _vend_restrictpurch FROM vendinfo WHERE (vend_id = pVendid); FOR _lineitem IN SELECT * FROM poitem WHERE (poitem_pohead_id = pSrcid) LOOP SELECT * INTO _itemsrc FROM itemsrc, itemsite WHERE (itemsrc_active AND (itemsrc_id = _lineitem.poitem_itemsrc_id) AND (itemsite_id = _lineitem.poitem_itemsite_id)); IF (NOT FOUND AND _vend_restrictpurch) THEN RETURN -3; END IF; -- handle changes to the uom ratio and consequent qty changes _uomratio := COALESCE(_itemsrc.itemsrc_invvendoruomratio, _lineitem.poitem_invvenduomratio); IF (_itemsrc.itemsrc_invvendoruomratio IS NULL OR _itemsrc.itemsrc_invvendoruomratio != _lineitem.poitem_invvenduomratio) THEN _qty := _lineitem.poitem_qty_ordered; ELSE _qty := _lineitem.poitem_qty_ordered * _lineitem.poitem_invvenduomratio / _itemsrc.itemsrc_invvendoruomratio; IF (_itemsrc.itemsrc_minordqty IS NOT NULL) THEN IF (_qty < _itemsrc.itemsrc_minordqty) THEN _qty := _itemsrc.itemsrc_minordqty; ELSIF (_itemsrc.itemsrc_multordqty > 0 AND _qty % _itemsrc.itemsrc_multordqty > 0) THEN _qty = _qty % _itemsrc.itemsrc_multordqty + _itemsrc.itemsrc_multordqty; END IF; END IF; END IF; IF (_itemsrc.itemsrc_id IS NULL) THEN _unitprice = _lineitem.poitem_unitprice; ELSE SELECT itemsrcPrice(_itemsrc.itemsrc_id, _head.pohead_warehous_id, _head.pohead_dropship, _lineitem.poitem_qty_ordered, _head.pohead_curr_id, CURRENT_DATE) INTO _unitprice; IF (_unitprice IS NULL) THEN RETURN -4; END IF; END IF; INSERT INTO poitem (poitem_status, poitem_pohead_id, poitem_linenumber, poitem_duedate, poitem_itemsite_id, poitem_vend_item_descrip, poitem_vend_uom, poitem_invvenduomratio, poitem_qty_ordered, poitem_unitprice, poitem_vend_item_number, poitem_comments, poitem_expcat_id, poitem_itemsrc_id, poitem_freight, poitem_stdcost, poitem_manuf_name, poitem_manuf_item_number, poitem_manuf_item_descrip, poitem_taxtype_id ) VALUES ( 'U', _tgtid, _lineitem.poitem_linenumber, _orderdate + COALESCE(_itemsrc.itemsrc_leadtime, 0), _lineitem.poitem_itemsite_id, COALESCE(_itemsrc.itemsrc_vend_item_descrip, _lineitem.poitem_vend_item_descrip), COALESCE(_itemsrc.itemsrc_vend_uom, _lineitem.poitem_vend_uom), COALESCE(_itemsrc.itemsrc_invvendoruomratio, _lineitem.poitem_invvenduomratio), _qty, _unitprice, COALESCE(_itemsrc.itemsrc_vend_item_number, _lineitem.poitem_vend_item_number), _lineitem.poitem_comments, _lineitem.poitem_expcat_id, COALESCE(_itemsrc.itemsrc_id, -1), _lineitem.poitem_freight, stdcost(_itemsrc.itemsite_item_id), COALESCE(_itemsrc.itemsrc_manuf_name, _lineitem.poitem_manuf_name), COALESCE(_itemsrc.itemsrc_manuf_item_number, _lineitem.poitem_manuf_item_number), COALESCE(_itemsrc.itemsrc_manuf_item_descrip, _lineitem.poitem_manuf_item_descrip), _lineitem.poitem_taxtype_id); END LOOP; ELSE INSERT INTO poitem (poitem_status, poitem_pohead_id, poitem_linenumber, poitem_duedate, poitem_itemsite_id, poitem_vend_item_descrip, poitem_vend_uom, poitem_invvenduomratio, poitem_qty_ordered, poitem_unitprice, poitem_vend_item_number, poitem_comments, poitem_expcat_id, poitem_itemsrc_id, poitem_freight, poitem_stdcost, poitem_manuf_name, poitem_manuf_item_number, poitem_manuf_item_descrip, poitem_taxtype_id ) SELECT 'U', _tgtid, poitem_linenumber, _orderdate + COALESCE(itemsrc_leadtime, 0), poitem_itemsite_id, poitem_vend_item_descrip, poitem_vend_uom, poitem_invvenduomratio, poitem_qty_ordered, poitem_unitprice, poitem_vend_item_number, poitem_comments, poitem_expcat_id, poitem_itemsrc_id, poitem_freight, stdcost(itemsite_item_id), poitem_manuf_name, poitem_manuf_item_number, poitem_manuf_item_descrip, poitem_taxtype_id FROM poitem LEFT OUTER JOIN itemsrc ON (itemsrc_id=poitem_itemsrc_id) LEFT OUTER JOIN itemsite ON (itemsite_id=poitem_itemsite_id) WHERE (poitem_pohead_id = pSrcid); END IF; -- Todo: recalculate tax? RETURN _tgtid; END; $_$; ALTER FUNCTION public.copypo(integer, integer, date, boolean) OWNER TO admin; -- -- Name: copypricingschedule(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copypricingschedule(pipsheadid integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _ipsheadid INTEGER; _ipsitemid INTEGER; _ipsfreightid INTEGER; _x RECORD; BEGIN _ipsheadid := nextval('ipshead_ipshead_id_seq'); INSERT INTO ipshead ( ipshead_id, ipshead_name, ipshead_descrip, ipshead_effective, ipshead_expires, ipshead_curr_id, ipshead_updated ) SELECT _ipsheadid, orig.ipshead_name || (SELECT CAST((COUNT(cnt.ipshead_id)+1) AS text) FROM ipshead cnt WHERE (SUBSTRING(cnt.ipshead_name FROM 0 FOR char_length(orig.ipshead_name)+1) = orig.ipshead_name)), orig.ipshead_descrip, orig.ipshead_effective, orig.ipshead_expires, orig.ipshead_curr_id, CURRENT_DATE FROM ipshead orig WHERE (orig.ipshead_id=pIpsheadId); FOR _x IN SELECT ipsitem_id FROM ipsiteminfo WHERE (ipsitem_ipshead_id=pIpsheadid) LOOP INSERT INTO ipsiteminfo (ipsitem_ipshead_id, ipsitem_item_id, ipsitem_prodcat_id, ipsitem_qtybreak, ipsitem_price, ipsitem_qty_uom_id, ipsitem_price_uom_id, ipsitem_discntprcnt, ipsitem_fixedamtdiscount, ipsitem_type, ipsitem_warehous_id) SELECT _ipsheadid, ipsitem_item_id, ipsitem_prodcat_id, ipsitem_qtybreak, ipsitem_price, ipsitem_qty_uom_id, ipsitem_price_uom_id, ipsitem_discntprcnt, ipsitem_fixedamtdiscount, ipsitem_type, ipsitem_warehous_id FROM ipsiteminfo WHERE (ipsitem_id=_x.ipsitem_id) RETURNING ipsitem_id INTO _ipsitemid; INSERT INTO ipsitemchar ( ipsitemchar_ipsitem_id, ipsitemchar_char_id, ipsitemchar_value, ipsitemchar_price) SELECT _ipsitemid, ipsitemchar_char_id, ipsitemchar_value, ipsitemchar_price FROM ipsitemchar WHERE (ipsitemchar_ipsitem_id=_x.ipsitem_id); END LOOP; FOR _x IN SELECT ipsfreight_id FROM ipsfreight WHERE (ipsfreight_ipshead_id=pIpsheadid) LOOP _ipsfreightid := nextval('ipsfreight_ipsfreight_id_seq'); INSERT INTO ipsfreight (ipsfreight_id, ipsfreight_ipshead_id, ipsfreight_qtybreak, ipsfreight_price, ipsfreight_type, ipsfreight_warehous_id, ipsfreight_shipzone_id,ipsfreight_freightclass_id, ipsfreight_shipvia) SELECT _ipsfreightid, _ipsheadid, ipsfreight_qtybreak, ipsfreight_price,ipsfreight_type, ipsfreight_warehous_id,ipsfreight_shipzone_id, ipsfreight_freightclass_id,ipsfreight_shipvia FROM ipsfreight WHERE (ipsfreight_id=_x.ipsfreight_id); END LOOP; RETURN _ipsheadid; END; $$; ALTER FUNCTION public.copypricingschedule(pipsheadid integer) OWNER TO admin; -- -- Name: copyprj(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copyprj(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pparentid ALIAS FOR $1; _counter INTEGER; _duedate DATE := COALESCE($2, CURRENT_DATE); _alarmid INTEGER; _i INTEGER; _newnumber TEXT; _p RECORD; _prjid INTEGER; _testnumber TEXT; BEGIN RAISE DEBUG 'copyPrj(%, %) entered', pparentid, _duedate; SELECT * INTO _p FROM prj WHERE (prj_id=pparentid); -- new number = old number up to but not including -, followed by _duedate -- e.g. REPAIR-FRIDGE becomes REPAIR-2010-05-15 -- but REPAIR_FRIDGE becomes REPAIR_FRIDGE-2010-05-15 IF (_p.prj_recurring_prj_id IS NULL) THEN _newnumber := _p.prj_number; ELSE _newnumber := SUBSTRING(_p.prj_number FROM '[^-]*'); IF (_newnumber IS NULL) THEN _newnumber := _p.prj_number; END IF; END IF; _newnumber := _newnumber || '-' || to_char(_duedate, 'YYYY-MM-DD'); RAISE DEBUG 'copyPrj checking if _newnumber % exists', _newnumber; SELECT MAX(prj_number) INTO _testnumber FROM prj WHERE (prj_number ~ ('^' || _newnumber)); IF (_testnumber = _newnumber) THEN _newnumber := _newnumber || '-001'; ELSIF (_testnumber IS NOT NULL) THEN _counter := CAST(SUBSTRING(_testnumber FROM '...$') AS INTEGER); _counter := _counter + 1; _newnumber := REGEXP_REPLACE(_testnumber, '...$', to_char(_counter, 'FM009')); END IF; RAISE DEBUG 'copyPrj _newnumber is now %', _newnumber; INSERT INTO prj( prj_number, prj_name, prj_descrip, prj_status, prj_so, prj_wo, prj_po, prj_owner_username, prj_due_date, prj_username, prj_recurring_prj_id ) SELECT _newnumber, _p.prj_name, _p.prj_descrip, 'P', _p.prj_so, _p.prj_wo, _p.prj_po, _p.prj_owner_username, _duedate, _p.prj_username, _p. prj_recurring_prj_id FROM prj WHERE (prj_id=pparentid) RETURNING prj_id INTO _prjid; IF (_prjid IS NULL) THEN RETURN -1; END IF; SELECT saveAlarm(NULL, NULL, _duedate, CAST(alarm_time - DATE_TRUNC('day',alarm_time) AS TIME), alarm_time_offset, alarm_time_qualifier, alarm_event_recipient IS NOT NULL, alarm_event_recipient, alarm_email_recipient IS NOT NULL, alarm_email_recipient, alarm_sysmsg_recipient IS NOT NULL, alarm_sysmsg_recipient, 'J', _prjid, 'CHANGEONE') INTO _alarmid FROM alarm WHERE ((alarm_source='J') AND (alarm_source_id=pparentid)); IF (_alarmid < 0) THEN RETURN _alarmid; END IF; RETURN _prjid; END; $_$; ALTER FUNCTION public.copyprj(integer, date) OWNER TO admin; -- -- Name: copyproject(integer, text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copyproject(integer, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrjId ALIAS FOR $1; pPrjNumber ALIAS FOR $2; pDueDateOffset ALIAS FOR $3; _prjid INTEGER; BEGIN IF (COALESCE(pPrjNumber, '') = '') THEN RETURN -1; END IF; IF (EXISTS(SELECT prj_id FROM prj WHERE UPPER(prj_number)=UPPER(pPrjNumber))) THEN RETURN -2; END IF; IF (NOT EXISTS(SELECT prj_id FROM prj WHERE prj_id=pPrjId)) THEN RETURN -3; END IF; SELECT NEXTVAL('prj_prj_id_seq') INTO _prjid; INSERT INTO prj ( prj_id, prj_number, prj_name, prj_descrip, prj_status, prj_so, prj_wo, prj_po, prj_owner_username, prj_start_date, prj_due_date, prj_assigned_date, prj_completed_date, prj_username, prj_recurring_prj_id, prj_crmacct_id, prj_cntct_id ) SELECT _prjid, UPPER(pPrjNumber), prj_name, prj_descrip, 'P', prj_so, prj_wo, prj_po, prj_owner_username, NULL, (prj_due_date + COALESCE(pDueDateOffset, 0)), CASE WHEN (prj_username IS NULL) THEN NULL ELSE CURRENT_DATE END, NULL, prj_username, prj_recurring_prj_id, prj_crmacct_id, prj_cntct_id FROM prj WHERE (prj_id=pPrjId); INSERT INTO prjtask ( prjtask_number, prjtask_name, prjtask_descrip, prjtask_prj_id, prjtask_anyuser, prjtask_status, prjtask_hours_budget, prjtask_hours_actual, prjtask_exp_budget, prjtask_exp_actual, prjtask_owner_username, prjtask_start_date, prjtask_due_date, prjtask_assigned_date, prjtask_completed_date, prjtask_username ) SELECT prjtask_number, prjtask_name, prjtask_descrip, _prjid, prjtask_anyuser, 'P', prjtask_hours_budget, 0.0, prjtask_exp_budget, 0.0, prjtask_owner_username, NULL, (prjtask_due_date + COALESCE(pDueDateOffset, 0)), CASE WHEN (prjtask_username IS NULL) THEN NULL ELSE CURRENT_DATE END, NULL, prjtask_username FROM prjtask WHERE (prjtask_prj_id=pPrjId); INSERT INTO docass ( docass_source_id, docass_source_type, docass_target_id, docass_target_type, docass_purpose ) SELECT _prjid, docass_source_type, docass_target_id, docass_target_type, docass_purpose FROM docass WHERE ((docass_source_id=pPrjId) AND (docass_source_type='J')); RETURN _prjid; END; $_$; ALTER FUNCTION public.copyproject(integer, text, integer) OWNER TO admin; -- -- Name: copyquote(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copyquote(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; pSchedDate ALIAS FOR $2; _quheadid INTEGER; _qunumber TEXT; BEGIN SELECT NEXTVAL('quhead_quhead_id_seq') INTO _quheadid; IF (fetchMetricText('QUNumberGeneration') = 'S') THEN SELECT fetchSoNumber() INTO _qunumber; ELSE SELECT fetchQuNumber() INTO _qunumber; END IF; INSERT INTO quhead ( quhead_id, quhead_number, quhead_cust_id, quhead_prj_id, quhead_quotedate, quhead_packdate, quhead_fob, quhead_warehous_id, quhead_terms_id, quhead_salesrep_id, quhead_custponumber, quhead_shipvia, quhead_shipto_id, quhead_shiptoname, quhead_shiptoaddress1, quhead_shiptoaddress2, quhead_shiptoaddress3, quhead_shiptocity, quhead_shiptostate, quhead_shiptozipcode, quhead_shiptophone, quhead_shiptocountry, quhead_billtoname, quhead_billtoaddress1, quhead_billtoaddress2, quhead_billtoaddress3, quhead_billtocity, quhead_billtostate, quhead_billtozip, quhead_misc_accnt_id, quhead_misc_descrip, quhead_misc, quhead_freight, quhead_commission, quhead_ordercomments, quhead_shipcomments, quhead_imported, quhead_curr_id, quhead_taxzone_id, quhead_taxtype_id, quhead_ophead_id, quhead_status, quhead_shipto_cntct_id, quhead_shipto_cntct_honorific, quhead_shipto_cntct_first_name, quhead_shipto_cntct_middle, quhead_shipto_cntct_last_name, quhead_shipto_cntct_suffix, quhead_shipto_cntct_phone, quhead_shipto_cntct_title, quhead_shipto_cntct_fax, quhead_shipto_cntct_email, quhead_billto_cntct_id, quhead_billto_cntct_honorific, quhead_billto_cntct_first_name, quhead_billto_cntct_middle, quhead_billto_cntct_last_name, quhead_billto_cntct_suffix, quhead_billto_cntct_phone, quhead_billto_cntct_title, quhead_billto_cntct_fax, quhead_billto_cntct_email ) SELECT _quheadid, _qunumber, quhead_cust_id, quhead_prj_id, CURRENT_DATE, COALESCE(pSchedDate, quhead_packdate), quhead_fob, quhead_warehous_id, quhead_terms_id, quhead_salesrep_id, quhead_custponumber, quhead_shipvia, quhead_shipto_id, quhead_shiptoname, quhead_shiptoaddress1, quhead_shiptoaddress2, quhead_shiptoaddress3, quhead_shiptocity, quhead_shiptostate, quhead_shiptozipcode, quhead_shiptophone, quhead_shiptocountry, quhead_billtoname, quhead_billtoaddress1, quhead_billtoaddress2, quhead_billtoaddress3, quhead_billtocity, quhead_billtostate, quhead_billtozip, quhead_misc_accnt_id, quhead_misc_descrip, quhead_misc, quhead_freight, quhead_commission, quhead_ordercomments, quhead_shipcomments, FALSE, quhead_curr_id, quhead_taxzone_id, quhead_taxtype_id, quhead_ophead_id, 'O', quhead_shipto_cntct_id, quhead_shipto_cntct_honorific, quhead_shipto_cntct_first_name, quhead_shipto_cntct_middle, quhead_shipto_cntct_last_name, quhead_shipto_cntct_suffix, quhead_shipto_cntct_phone, quhead_shipto_cntct_title, quhead_shipto_cntct_fax, quhead_shipto_cntct_email, quhead_billto_cntct_id, quhead_billto_cntct_honorific, quhead_billto_cntct_first_name, quhead_billto_cntct_middle, quhead_billto_cntct_last_name, quhead_billto_cntct_suffix, quhead_billto_cntct_phone, quhead_billto_cntct_title, quhead_billto_cntct_fax, quhead_billto_cntct_email FROM quhead WHERE (quhead_id=pQuheadid); INSERT INTO quitem ( quitem_quhead_id, quitem_linenumber, quitem_itemsite_id, quitem_scheddate, quitem_promdate, quitem_qtyord, quitem_price, quitem_custprice, quitem_unitcost, quitem_qty_uom_id, quitem_price_uom_id, quitem_qty_invuomratio, quitem_price_invuomratio, quitem_memo, quitem_custpn, quitem_imported, quitem_taxtype_id, quitem_createorder, quitem_order_warehous_id, quitem_item_id, quitem_prcost, quitem_dropship, quitem_itemsrc_id, quitem_pricemode ) SELECT _quheadid, quitem_linenumber, quitem_itemsite_id, COALESCE(pSchedDate, quitem_scheddate), quitem_promdate, quitem_qtyord, quitem_price, quitem_custprice, stdCost(itemsite_item_id), quitem_qty_uom_id, quitem_price_uom_id, quitem_qty_invuomratio, quitem_price_invuomratio, quitem_memo, quitem_custpn, FALSE, quitem_taxtype_id, quitem_createorder, quitem_order_warehous_id, quitem_item_id, quitem_prcost, quitem_dropship, quitem_itemsrc_id, quitem_pricemode FROM quitem, itemsite WHERE ( (quitem_itemsite_id=itemsite_id) AND (quitem_quhead_id=pQuheadid)); INSERT INTO charass (charass_target_type, charass_target_id, charass_char_id, charass_value) SELECT charass_target_type, b.quitem_id, charass_char_id, charass_value FROM quitem a, charass, quitem b WHERE ((charass_target_type='SI') AND (charass_target_id=a.quitem_id) AND (a.quitem_quhead_id=pQuheadid) AND (b.quitem_quhead_id=_quheadid) AND (a.quitem_linenumber=b.quitem_linenumber) ); RETURN _quheadid; END; $_$; ALTER FUNCTION public.copyquote(integer, date) OWNER TO admin; -- -- Name: copyso(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copyso(psoheadid integer, pscheddate date) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _soheadid INTEGER; _soitemid INTEGER; _soitem RECORD; BEGIN SELECT NEXTVAL('cohead_cohead_id_seq') INTO _soheadid; INSERT INTO cohead ( cohead_id, cohead_number, cohead_cust_id, cohead_custponumber, cohead_type, cohead_orderdate, cohead_warehous_id, cohead_shipto_id, cohead_shiptoname, cohead_shiptoaddress1, cohead_shiptoaddress2, cohead_shiptoaddress3, cohead_shiptoaddress4, cohead_shiptoaddress5, cohead_salesrep_id, cohead_terms_id, cohead_fob, cohead_shipvia, cohead_shiptocity, cohead_shiptostate, cohead_shiptozipcode, cohead_freight, cohead_misc, cohead_imported, cohead_ordercomments, cohead_shipcomments, cohead_shiptophone, cohead_shipchrg_id, cohead_shipform_id, cohead_billtoname, cohead_billtoaddress1, cohead_billtoaddress2, cohead_billtoaddress3, cohead_billtocity, cohead_billtostate, cohead_billtozipcode, cohead_misc_accnt_id, cohead_misc_descrip, cohead_commission, cohead_miscdate, cohead_holdtype, cohead_packdate, cohead_prj_id, cohead_wasquote, cohead_lastupdated, cohead_shipcomplete, cohead_created, cohead_creator, cohead_quote_number, cohead_billtocountry, cohead_shiptocountry, cohead_curr_id, cohead_calcfreight, cohead_shipto_cntct_id, cohead_shipto_cntct_honorific, cohead_shipto_cntct_first_name, cohead_shipto_cntct_middle, cohead_shipto_cntct_last_name, cohead_shipto_cntct_suffix, cohead_shipto_cntct_phone, cohead_shipto_cntct_title, cohead_shipto_cntct_fax, cohead_shipto_cntct_email, cohead_billto_cntct_id, cohead_billto_cntct_honorific, cohead_billto_cntct_first_name, cohead_billto_cntct_middle, cohead_billto_cntct_last_name, cohead_billto_cntct_suffix, cohead_billto_cntct_phone, cohead_billto_cntct_title, cohead_billto_cntct_fax, cohead_billto_cntct_email, cohead_taxzone_id, cohead_taxtype_id, cohead_ophead_id, cohead_status, cohead_saletype_id, cohead_shipzone_id ) SELECT _soheadid, fetchSoNumber(), cohead_cust_id, cohead_custponumber, cohead_type, CURRENT_DATE, cohead_warehous_id, cohead_shipto_id, cohead_shiptoname, cohead_shiptoaddress1, cohead_shiptoaddress2, cohead_shiptoaddress3, cohead_shiptoaddress4, cohead_shiptoaddress5, cohead_salesrep_id, cohead_terms_id, cohead_fob, cohead_shipvia, cohead_shiptocity, cohead_shiptostate, cohead_shiptozipcode, cohead_freight, cohead_misc, FALSE, cohead_ordercomments, cohead_shipcomments, cohead_shiptophone, cohead_shipchrg_id, cohead_shipform_id, cohead_billtoname, cohead_billtoaddress1, cohead_billtoaddress2, cohead_billtoaddress3, cohead_billtocity, cohead_billtostate, cohead_billtozipcode, cohead_misc_accnt_id, cohead_misc_descrip, cohead_commission, cohead_miscdate, cohead_holdtype, COALESCE(pSchedDate, cohead_packdate), cohead_prj_id, FALSE, cohead_lastupdated, cohead_shipcomplete, NULL, getEffectiveXtUser(), NULL, cohead_billtocountry, cohead_shiptocountry, cohead_curr_id, cohead_calcfreight, cohead_shipto_cntct_id, cohead_shipto_cntct_honorific, cohead_shipto_cntct_first_name, cohead_shipto_cntct_middle, cohead_shipto_cntct_last_name, cohead_shipto_cntct_suffix, cohead_shipto_cntct_phone, cohead_shipto_cntct_title, cohead_shipto_cntct_fax, cohead_shipto_cntct_email, cohead_billto_cntct_id, cohead_billto_cntct_honorific, cohead_billto_cntct_first_name, cohead_billto_cntct_middle, cohead_billto_cntct_last_name, cohead_billto_cntct_suffix, cohead_billto_cntct_phone, cohead_billto_cntct_title, cohead_billto_cntct_fax, cohead_billto_cntct_email, cohead_taxzone_id, cohead_taxtype_id, cohead_ophead_id, cohead_status, cohead_saletype_id, cohead_shipzone_id FROM cohead WHERE (cohead_id=pSoheadid); FOR _soitem IN SELECT * FROM coitem JOIN itemsite ON (itemsite_id=coitem_itemsite_id) WHERE ( (coitem_cohead_id=pSoheadid) AND (coitem_status <> 'X') AND (coitem_subnumber = 0) ) LOOP SELECT NEXTVAL('coitem_coitem_id_seq') INTO _soitemid; -- insert characteristics first so they can be copied to associated supply order INSERT INTO charass (charass_target_type, charass_target_id, charass_char_id, charass_value) SELECT charass_target_type, _soitemid, charass_char_id, charass_value FROM charass WHERE ((charass_target_type='SI') AND (charass_target_id=_soitem.coitem_id)); INSERT INTO coitem ( coitem_id, coitem_cohead_id, coitem_linenumber, coitem_itemsite_id, coitem_status, coitem_scheddate, coitem_promdate, coitem_qtyord, coitem_unitcost, coitem_price, coitem_custprice, coitem_qtyshipped, coitem_order_id, coitem_memo, coitem_imported, coitem_qtyreturned, coitem_closedate, coitem_custpn, coitem_order_type, coitem_close_username, -- coitem_lastupdated, coitem_substitute_item_id, coitem_created, coitem_creator, coitem_prcost, coitem_qty_uom_id, coitem_qty_invuomratio, coitem_price_uom_id, coitem_price_invuomratio, coitem_warranty, coitem_cos_accnt_id, coitem_qtyreserved, coitem_subnumber, coitem_firm, coitem_taxtype_id ) VALUES ( _soitemid, _soheadid, _soitem.coitem_linenumber, _soitem.coitem_itemsite_id, 'O', COALESCE(pSchedDate, _soitem.coitem_scheddate), _soitem.coitem_promdate, _soitem.coitem_qtyord, stdCost(_soitem.itemsite_item_id), _soitem.coitem_price, _soitem.coitem_custprice, 0.0, -1, _soitem.coitem_memo, FALSE, 0.0, NULL, _soitem.coitem_custpn, _soitem.coitem_order_type, NULL, -- NULL, _soitem.coitem_substitute_item_id, NULL, getEffectiveXtUser(), _soitem.coitem_prcost, _soitem.coitem_qty_uom_id, _soitem.coitem_qty_invuomratio, _soitem.coitem_price_uom_id, _soitem.coitem_price_invuomratio, _soitem.coitem_warranty, _soitem.coitem_cos_accnt_id, 0.0, _soitem.coitem_subnumber, _soitem.coitem_firm, _soitem.coitem_taxtype_id ); END LOOP; RETURN _soheadid; END; $$; ALTER FUNCTION public.copyso(psoheadid integer, pscheddate date) OWNER TO admin; -- -- Name: copytodoitem(integer, date, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copytodoitem(integer, date, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pparentid ALIAS FOR $1; _duedate DATE := COALESCE($2, CURRENT_DATE); pincdtid ALIAS FOR $3; _alarmid INTEGER; _todoitemid INTEGER; BEGIN INSERT INTO todoitem( todoitem_name, todoitem_description, todoitem_incdt_id, todoitem_creator_username, todoitem_status, todoitem_active, todoitem_due_date, todoitem_assigned_date, todoitem_seq, todoitem_notes, todoitem_crmacct_id, todoitem_ophead_id, todoitem_owner_username,todoitem_priority_id, todoitem_username, todoitem_recurring_todoitem_id ) SELECT todoitem_name, todoitem_description, CASE WHEN pincdtid IS NULL THEN todoitem_incdt_id ELSE pincdtid END, getEffectiveXtUser(), 'N', TRUE, _duedate, CASE WHEN (todoitem_username IS NOT NULL) THEN CURRENT_DATE ELSE NULL END, todoitem_seq, todoitem_notes, todoitem_crmacct_id, todoitem_ophead_id, todoitem_owner_username,todoitem_priority_id, todoitem_username, todoitem_recurring_todoitem_id FROM todoitem WHERE (todoitem_id=pparentid) RETURNING todoitem_id INTO _todoitemid; IF (_todoitemid IS NULL) THEN RETURN -10; END IF; SELECT saveAlarm(NULL, NULL, _duedate, CAST(alarm_time - DATE_TRUNC('day',alarm_time) AS TIME), alarm_time_offset, alarm_time_qualifier, alarm_event, alarm_event_recipient, alarm_email, alarm_email_recipient, alarm_sysmsg, alarm_sysmsg_recipient, 'TODO', _todoitemid, 'CHANGEONE') INTO _alarmid FROM alarm WHERE ((alarm_source='TODO') AND (alarm_source_id=pparentid)); IF (_alarmid < 0) THEN RETURN _alarmid; END IF; RETURN _todoitemid; END; $_$; ALTER FUNCTION public.copytodoitem(integer, date, integer) OWNER TO admin; -- -- Name: copyvoucher(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION copyvoucher(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVoheadid ALIAS FOR $1; _voheadid INTEGER; _vonumber TEXT; _vodate DATE := COALESCE($2, CURRENT_DATE); _i RECORD; _l RECORD; _vodistid INTEGER; BEGIN SELECT * INTO _i FROM vohead WHERE(vohead_id=pVoheadid); IF(NOT FOUND) THEN RETURN -1; END IF; _vonumber := fetchVoNumber(); _voheadid := nextval('vohead_vohead_id_seq'); INSERT INTO vohead (vohead_id, vohead_number, vohead_pohead_id, vohead_posted, vohead_duedate, vohead_invcnumber, vohead_amount, vohead_docdate, vohead_1099, vohead_distdate, vohead_reference, vohead_terms_id, vohead_vend_id, vohead_curr_id, vohead_adjtaxtype_id, vohead_freighttaxtype_id, vohead_gldistdate, vohead_misc, vohead_taxzone_id, vohead_taxtype_id, vohead_notes, vohead_recurring_vohead_id ) VALUES(_voheadid, _vonumber, _i.vohead_pohead_id, false, determineDueDate(_i.vohead_terms_id, _vodate), _i.vohead_invcnumber, _i.vohead_amount, _vodate, _i.vohead_1099, _vodate, _i.vohead_reference, _i.vohead_terms_id, _i.vohead_vend_id, _i.vohead_curr_id, _i.vohead_adjtaxtype_id, _i.vohead_freighttaxtype_id, _vodate, _i.vohead_misc, _i.vohead_taxzone_id, _i.vohead_taxtype_id, _i.vohead_notes, _i.vohead_recurring_vohead_id); FOR _l IN SELECT * FROM vodist WHERE (vodist_vohead_id=pVoheadid) LOOP SELECT NEXTVAL('vodist_vodist_id_seq') INTO _vodistid; INSERT INTO vodist (vodist_id, vodist_poitem_id, vodist_vohead_id, vodist_costelem_id, vodist_accnt_id, vodist_amount, vodist_qty, vodist_expcat_id, vodist_tax_id, vodist_discountable, vodist_notes) VALUES (_vodistid, _l.vodist_poitem_id, _voheadid, _l.vodist_costelem_id, _l.vodist_accnt_id, _l.vodist_amount, _l.vodist_qty, _l.vodist_expcat_id, _l.vodist_tax_id, _l.vodist_discountable, _l.vodist_notes); END LOOP; RETURN _voheadid; END; $_$; ALTER FUNCTION public.copyvoucher(integer, date) OWNER TO admin; -- -- Name: correctporeceipt(integer, numeric, numeric, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION correctporeceipt(integer, numeric, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPorecvid ALIAS FOR $1; pQty ALIAS FOR $2; pFreight ALIAS FOR $3; pItemlocSeries ALIAS FOR $4; BEGIN RETURN correctReceipt('PO', $1, $2, $3, $4, NULL, NULL); END; $_$; ALTER FUNCTION public.correctporeceipt(integer, numeric, numeric, integer) OWNER TO admin; -- -- Name: correctporeceipt(integer, numeric, numeric, integer, integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION correctporeceipt(integer, numeric, numeric, integer, integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN correctReceipt('PO', $1, $2, $3, $4, $5, $6); END; $_$; ALTER FUNCTION public.correctporeceipt(integer, numeric, numeric, integer, integer, date) OWNER TO admin; -- -- Name: correctproduction(integer, numeric, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION correctproduction(integer, numeric, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'correctProduction(INTEGER, NUMERIC, BOOLEAN, BOOLEAN) has been deprecated. Use corrrectProduction(INTEGER, NUMERIC, BOOLEAN, INTEGER) or a package-specific version instead.'; RETURN correctProduction($1, $2, $3, 0, now()); END; $_$; ALTER FUNCTION public.correctproduction(integer, numeric, boolean, boolean) OWNER TO admin; -- -- Name: correctproduction(integer, numeric, boolean, boolean, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION correctproduction(integer, numeric, boolean, boolean, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'correctProduction(INTEGER, NUMERIC, BOOLEAN, BOOLEAN, INTEGER) has been deprecated. Use corrrectProduction(INTEGER, NUMERIC, BOOLEAN, INTEGER) or a package-specific version instead.'; RETURN correctProduction($1, $2, $3, $5, now()); END; $_$; ALTER FUNCTION public.correctproduction(integer, numeric, boolean, boolean, integer) OWNER TO admin; -- -- Name: correctproduction(integer, numeric, boolean, integer, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION correctproduction(integer, numeric, boolean, integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pQty ALIAS FOR $2; pBackflush ALIAS FOR $3; pItemlocSeries ALIAS FOR $4; pGlDistTS ALIAS FOR $5; BEGIN RETURN correctProduction($1, $2, $3, $4, $5, NULL); END; $_$; ALTER FUNCTION public.correctproduction(integer, numeric, boolean, integer, timestamp with time zone) OWNER TO admin; -- -- Name: correctproduction(integer, numeric, boolean, integer, timestamp with time zone, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION correctproduction(integer, numeric, boolean, integer, timestamp with time zone, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pQty ALIAS FOR $2; pBackflush ALIAS FOR $3; pItemlocSeries ALIAS FOR $4; pGlDistTS ALIAS FOR $5; pInvhistId ALIAS FOR $6; _invhistid INTEGER; _itemlocSeries INTEGER; _r RECORD; _parentWIPAccntid INTEGER; _parentQty NUMERIC; _qty NUMERIC; _wipPost NUMERIC; _sense TEXT; _status TEXT; _type TEXT; _qtyfxd NUMERIC := 0; BEGIN -- Qty is positive for Assembly W/O -- Qty is negative for Disassembly W/O IF (pQty = 0) THEN RETURN pItemlocseries; ELSIF (pQty > 0) THEN _sense := 'from'; ELSE _sense := 'to'; END IF; SELECT item_type, roundQty(item_fractional, pQty), wo_status INTO _type, _parentQty, _status FROM wo JOIN itemsite ON (itemsite_id=wo_itemsite_id) JOIN item ON (item_id=itemsite_item_id) WHERE (wo_id=pWoid); IF (_status != 'I') THEN RETURN -1; END IF; IF (_type = 'J') THEN RETURN -2; END IF; IF (pItemlocSeries = 0) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; ELSE _itemlocSeries := pItemlocSeries; END IF; -- Calculate the WIP to correct SELECT CASE WHEN (wo_cosmethod = 'D') THEN wo_postedvalue ELSE round(((wo_postedvalue - wo_wipvalue) / wo_qtyrcv * _parentQty), 2) END INTO _wipPost FROM wo WHERE (wo_id=pWoid); -- Post the inventory transaction SELECT postInvTrans( itemsite_id, 'RM', (_parentQty * -1.0), 'W/O', 'WO', formatwonumber(pWoid), '', ('Correct Receive Inventory ' || item_number || ' ' || _sense || ' Manufacturing'), costcat_asset_accnt_id, getPrjAccntId(wo_prj_id, costcat_wip_accnt_id), _itemlocSeries, pGlDistTS, (_wipPost * -1.0), -- only used when cost is average pInvhistId) INTO _invhistid FROM wo JOIN itemsite ON (itemsite_id=wo_itemsite_id) JOIN item ON (item_id=itemsite_item_id) JOIN costcat ON (costcat_id=itemsite_costcat_id) WHERE (wo_id=pWoid); -- Decrease this W/O's qty. received and increase its WIP value UPDATE wo SET wo_qtyrcv = (wo_qtyrcv - _parentQty), wo_wipvalue = (wo_wipvalue + (CASE WHEN(itemsite_costmethod IN ('A','J')) THEN _wipPost WHEN(itemsite_costmethod='S') THEN stdcost(itemsite_item_id) * _parentQty ELSE 0.0 END)) FROM itemsite WHERE ( (wo_itemsite_id=itemsite_id) AND (wo_id=pWoid) ); IF (pBackflush) THEN FOR _r IN SELECT item_id, item_fractional, itemsite_id, itemsite_warehous_id, itemsite_controlmethod, itemsite_loccntrl, itemsite_costmethod, wo_qtyrcv, wo_prj_id, womatl_id, womatl_qtyfxd, womatl_qtyper, womatl_scrap, womatl_issuemethod, womatl_uom_id FROM wo JOIN womatl ON (womatl_wo_id=wo_id AND womatl_issuemethod='L') JOIN itemsite ON (itemsite_id=womatl_itemsite_id) JOIN item ON (item_id=itemsite_item_id) WHERE (wo_id=pWoid) LOOP -- Cache the qty to be issued -- If going back to beginning, unissue fixed qty as well IF (_r.wo_qtyrcv - _parentQty > 0) THEN _qtyfxd := 0; ELSE _qtyfxd := _r.womatl_qtyfxd; END IF; _qty = roundQty(_r.item_fractional, (_qtyfxd + _parentQty * _r.womatl_qtyper) * (1 + _r.womatl_scrap)); IF (_qty > 0) THEN SELECT returnWoMaterial(_r.womatl_id, _qty, _itemlocSeries, pGlDistTS) INTO _itemlocSeries; END IF; END LOOP; -- BEGIN ROB Decrease this W/O's WIP value for custom costing UPDATE wo SET wo_wipvalue = (wo_wipvalue - (itemcost_stdcost * _parentQty)) FROM costelem, itemcost, costcat, itemsite, item WHERE ((wo_id=pWoid) AND (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (costelem_id = itemcost_costelem_id) AND (itemcost_item_id = itemsite_item_id) AND (itemsite_costcat_id = costcat_id) AND (costelem_exp_accnt_id) IS NOT NULL AND (costelem_sys = false)); -- ROB Distribute to G/L - create Cost Variance, debit WIP PERFORM insertGLTransaction( 'W/O', 'WO', formatwonumber(pWoid), ('Correct Post Other Cost ' || item_number || ' ' || _sense || ' Manufacturing'), getPrjAccntId(wo_prj_id, costelem_exp_accnt_id), getPrjAccntId(wo_prj_id, costcat_wip_accnt_id), _invhistid, ((itemcost_stdcost * _parentQty)* -1), CURRENT_DATE ) FROM wo, costelem, itemcost, costcat, itemsite, item WHERE ((wo_id=pWoid) AND (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (costelem_id = itemcost_costelem_id) AND (itemcost_item_id = itemsite_item_id) AND (itemsite_costcat_id = costcat_id) AND (costelem_exp_accnt_id) IS NOT NULL AND (costelem_sys = false)); --End ROB END IF; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.correctproduction(integer, numeric, boolean, integer, timestamp with time zone, integer) OWNER TO admin; -- -- Name: correctreceipt(integer, numeric, numeric, integer, integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION correctreceipt(integer, numeric, numeric, integer, integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ BEGIN RETURN correctReceipt($1, $2, $3, $4, $5, $6, NULL); END; $_$; ALTER FUNCTION public.correctreceipt(integer, numeric, numeric, integer, integer, date) OWNER TO admin; -- -- Name: correctreceipt(integer, numeric, numeric, integer, integer, date, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION correctreceipt(integer, numeric, numeric, integer, integer, date, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE precvid ALIAS FOR $1; pQty ALIAS FOR $2; pFreight ALIAS FOR $3; _itemlocSeries INTEGER := COALESCE($4, 0); _currid INTEGER := $5; pEffective ALIAS FOR $6; pRecvCost ALIAS FOR $7; _freight NUMERIC; _qty NUMERIC; _invhistid INTEGER; _o RECORD; _r RECORD; _recvcost NUMERIC; _tmp INTEGER; _pricevar NUMERIC := 0.00; _journalNumber INTEGER := fetchJournalNumber('GL-MISC'); BEGIN SELECT recv_qty, recv_date::DATE AS recv_date, recv_freight_curr_id, recv_orderitem_id, round(currToCurr(recv_freight_curr_id, COALESCE(_currid, recv_freight_curr_id), recv_freight, recv_date::DATE),2) AS recv_freight, recv_posted, recv_order_type, COALESCE(itemsite_id, -1) AS itemsiteid, itemsite_item_id, itemsite_costmethod, itemsite_controlmethod, (recv_splitfrom_id IS NOT NULL OR (SELECT (count(*) > 0) FROM recv WHERE (recv_splitfrom_id=recv_id))) AS split INTO _r FROM recv LEFT OUTER JOIN itemsite ON (recv_itemsite_id=itemsite_id) WHERE (recv_id=precvid); IF (NOT FOUND) THEN RETURN _itemlocSeries; END IF; IF (NOT _r.recv_order_type IN ('PO', 'RA', 'TO')) THEN RETURN -11; END IF; IF (_r.split) THEN RETURN -12; END IF; SELECT currToBase(orderitem_unitcost_curr_id, orderitem_unitcost, _r.recv_date::DATE) AS unitprice_base, orderhead_number, orderitem_linenumber, orderhead_curr_id AS freight_curr_id, orderitem_orderhead_type, orderitem_qty_invuomratio INTO _o FROM orderhead, orderitem WHERE ((orderhead_id=orderitem_orderhead_id) AND (orderhead_type=orderitem_orderhead_type) AND (orderitem_id=_r.recv_orderitem_id) AND (orderitem_orderhead_type=_r.recv_order_type)); IF (NOT FOUND) THEN RETURN _itemlocSeries; END IF; -- Default to _o.orderitem_unitcost if recv_purchcost is not supplied -- Note: this should never happen, a value is always supplied if (pRecvCost IS NULL) THEN _recvcost := _o.orderitem_unitcost; ELSE -- Note: if the receipt has already been posted, pRecvCost will always -- equal the original recv_purchcost (cannot be modified in GUI) _recvcost := pRecvCost; END IF; IF (_r.recv_posted) THEN _qty := (pQty - _r.recv_qty); IF (_qty <> 0) THEN IF (_r.itemsiteid = -1) THEN PERFORM insertGLTransaction( _journalNumber,'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Non-Inventory from ' || _r.recv_order_type, expcat_liability_accnt_id, getPrjAccntId(poitem_prj_id, expcat_exp_accnt_id), -1, ROUND(_o.unitprice_base * _qty, 2), pEffective ) FROM poitem, expcat WHERE ((poitem_expcat_id=expcat_id) AND (poitem_id=_r.recv_orderitem_id) AND (_o.orderitem_orderhead_type='PO')); UPDATE recv SET recv_qty=pQty, recv_value=(recv_value + ROUND(_o.unitprice_base * _qty, 2)), recv_date = pEffective WHERE (recv_id=precvid); ELSEIF (_r.itemsite_controlmethod = 'N') THEN PERFORM insertGLTransaction( _journalNumber,'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Non-Controlled Inventory from ' || _r.recv_order_type, costcat_liability_accnt_id, getPrjAccntId(poitem_prj_id, costcat_exp_accnt_id), -1, ROUND(_o.unitprice_base * _qty, 2), pEffective ) FROM poitem, itemsite, costcat WHERE ((poitem_itemsite_id=itemsite_id) AND (itemsite_costcat_id=costcat_id) AND (poitem_id=_r.recv_orderitem_id) AND (_o.orderitem_orderhead_type='PO')); UPDATE recv SET recv_qty=pQty, recv_value=(recv_value + ROUND(_o.unitprice_base * _qty, 2)), recv_date = pEffective WHERE (recv_id=precvid); ELSE IF (_itemlocSeries = 0 OR _itemlocSeries IS NULL) THEN _itemlocSeries := NEXTVAL('itemloc_series_seq'); END IF; SELECT postInvTrans( itemsite_id, 'RP', (_qty * _o.orderitem_qty_invuomratio), 'S/R', _r.recv_order_type, _o.orderhead_number::TEXT || '-' || _o.orderitem_linenumber::TEXT, '', 'Receive Inventory from ' || _r.recv_order_type, costcat_asset_accnt_id, costcat_liability_accnt_id, _itemlocSeries, pEffective, ROUND(_recvcost * _qty, 2) -- alway passing since it is ignored if not average costed item ) INTO _tmp FROM itemsite, costcat WHERE ((itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsiteid) ); IF(_r.itemsite_costmethod='A') THEN UPDATE recv SET recv_qty=pQty, recv_value=(recv_value + _recvcost * _qty * _o.orderitem_qty_invuomratio), recv_date = pEffective WHERE(recv_id=precvid); ELSE UPDATE recv SET recv_qty=pQty, recv_value=(recv_value + stdcost(_r.itemsite_item_id) * _qty * _o.orderitem_qty_invuomratio), recv_date = pEffective WHERE(recv_id=precvid); END IF; END IF; IF (_r.recv_order_type = 'PO') THEN UPDATE poitem SET poitem_qty_received=(poitem_qty_received + _qty) WHERE (poitem_id=_r.recv_orderitem_id); ELSIF (_r.recv_order_type = 'RA' AND fetchMetricBool('EnableReturnAuth')) THEN UPDATE raitem SET raitem_qtyreceived=(raitem_qtyreceived + _qty) WHERE (raitem_id=_r.recv_orderitem_id); ELSIF (_r.recv_order_type = 'TO' AND fetchMetricBool('MultiWhs')) THEN UPDATE toitem SET toitem_qty_received=(toitem_qty_received + _qty) WHERE (toitem_id=_r.recv_orderitem_id); END IF; END IF; IF (fetchMetricBool('RecordPPVonReceipt')) THEN -- If the 'Purchase Price Variance on Receipt' option is true _invhistid := _tmp; -- Find the difference in the purchase price value expected from the P/O and the value of the transaction SELECT (((currToBase(pohead_curr_id, COALESCE(recv_purchcost, poitem_unitprice), recv_date::DATE)) * _qty) - (invhist_value_after - invhist_value_before)) INTO _pricevar FROM invhist, recv, pohead, poitem WHERE ((recv_orderitem_id=poitem_id) AND (poitem_pohead_id=pohead_id) AND (recv_id=precvid) AND (invhist_id = _invhistid)); -- If difference exists then IF (_pricevar <> 0.00) THEN -- Record an additional GL Transaction for the purchase price variance SELECT insertGLTransaction( _journalNumber, 'S/R', _r.recv_order_type, _o.orderhead_number, 'Purchase price variance adjusted for P/O ' || _o.orderhead_number || ' for item ' || _o.orderitem_linenumber::TEXT, costcat_liability_accnt_id, getPrjAccntId(poitem_prj_id, costcat_purchprice_accnt_id), -1, _pricevar, pEffective, false ) INTO _tmp FROM itemsite, costcat, poitem, recv WHERE ((itemsite_costcat_id=costcat_id) AND (recv_id=precvid) AND (recv_orderitem_id=poitem_id) AND (itemsite_id=recv_itemsite_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Could not insert G/L transaction: no cost category found for itemsite_id %', _r.itemsite_id; ELSIF (_tmp < 0 AND _tmp != -3) THEN -- error but not 0-value transaction RETURN _tmp; ELSE -- Posting to trial balance is deferred to prevent locking INSERT INTO itemlocpost ( itemlocpost_glseq, itemlocpost_itemlocseries) VALUES ( _tmp, _itemlocSeries ); END IF; END IF; END IF; _freight := (pFreight - _r.recv_freight); IF (_freight <> 0) THEN IF (_r.itemsiteid = -1) THEN PERFORM insertGLTransaction( _journalNumber,'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Non-Inventory Freight from ' || _r.recv_order_type, expcat_liability_accnt_id, getPrjAccntId(poitem_prj_id, expcat_freight_accnt_id), -1, ROUND(currToBase(_currid, _freight, pEffective), 2), pEffective ) FROM poitem, expcat WHERE ((poitem_expcat_id=expcat_id) AND (poitem_id=_r.recv_orderitem_id) AND (_r.recv_order_type='PO')); ELSE PERFORM insertGLTransaction(_journalNumber,'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Non-Inventory Freight from ' || _r.recv_order_type, costcat_liability_accnt_id, costcat_freight_accnt_id, -1, round(currToBase(_currid, _freight, pEffective), 2), pEffective ) FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsiteid) ); END IF; IF (_r.recv_order_type = 'PO') THEN UPDATE poitem SET poitem_freight_received=(poitem_freight_received + currToCurr(_currid, _o.freight_curr_id, _freight, pEffective)) WHERE (poitem_id=_r.recv_orderitem_id); -- raitem does not track freight ELSEIF (_r.recv_order_type = 'TO' AND fetchMetricBool('MultiWhs')) THEN UPDATE toitem SET toitem_freight_received=(toitem_freight_received + currToCurr(_currid, _o.freight_curr_id, _freight, pEffective)) WHERE (toitem_id=_r.recv_orderitem_id); END IF; UPDATE recv SET recv_freight=currToCurr(_currid, recv_freight_curr_id, pFreight, pEffective), recv_date = pEffective WHERE (recv_id=precvid); END IF; ELSE -- Receipt not posted yet UPDATE recv SET recv_qty=pQty, recv_freight=pFreight, recv_purchcost=_recvcost WHERE recv_id=precvid; END IF; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.correctreceipt(integer, numeric, numeric, integer, integer, date, numeric) OWNER TO admin; -- -- Name: cosbycustomervalue(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION cosbycustomervalue(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; pPeriodid ALIAS FOR $2; _value NUMERIC; _startDate DATE; _endDate DATE; BEGIN _startDate := findPeriodStart(pPeriodid); _endDate := findPeriodEnd(pPeriodid); -- Returns value in base currency -- ToDo: is cohist_shipdate the right DATE to use? SELECT SUM(cohist_qtyshipped * currToBase(cohist_curr_id, cohist_unitcost, cohist_shipdate)) INTO _value FROM cohist WHERE ( (cohist_cust_id=pCustid) AND (cohist_invcdate BETWEEN _startDate AND _endDate) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; ALTER FUNCTION public.cosbycustomervalue(integer, integer) OWNER TO admin; -- -- Name: costsbycustomerbyitemsite(integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION costsbycustomerbyitemsite(integer, integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pPeriodid ALIAS FOR $3; _value NUMERIC; _startDate DATE; _endDate DATE; BEGIN _startDate := findPeriodStart(pPeriodid); _endDate := findPeriodEnd(pPeriodid); -- Returns value in base currency -- ToDo: is cohist_shipdate the right DATE to use? SELECT SUM(cohist_qtyshipped * currToBase(cohist_curr_id, cohist_unitcost, cohist_shipdate)) INTO _value FROM cohist WHERE ( (cohist_itemsite_id<>pItemsiteid) AND (cohist_cust_id=pCustid) AND (cohist_invcdate BETWEEN _startDate AND _endDate) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; ALTER FUNCTION public.costsbycustomerbyitemsite(integer, integer, integer) OWNER TO admin; -- -- Name: costsbycustomervalue(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION costsbycustomervalue(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; pPeriodid ALIAS FOR $2; _value NUMERIC; _startDate DATE; _endDate DATE; BEGIN _startDate := findPeriodStart(pPeriodid); _endDate := findPeriodEnd(pPeriodid); -- Returns value in base currency -- ToDo: is cohist_shipdate the right DATE to use? SELECT SUM(cohist_qtyshipped * currToBase(cohist_curr_id, cohist_unitcost, cohist_shipdate)) INTO _value FROM cohist WHERE ( (cohist_itemsite_id<>-1) AND (cohist_cust_id=pCustid) AND (cohist_invcdate BETWEEN _startDate AND _endDate) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; ALTER FUNCTION public.costsbycustomervalue(integer, integer) OWNER TO admin; -- -- Name: costsbycustomervalue(integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION costsbycustomervalue(integer, integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; pPeriodid ALIAS FOR $2; pProdcatid ALIAS FOR $3; _value NUMERIC; _startDate DATE; _endDate DATE; BEGIN _startDate := findPeriodStart(pPeriodid); _endDate := findPeriodEnd(pPeriodid); -- Returns value in base currency -- ToDo: is cohist_shipdate the right DATE to use? SELECT SUM(cohist_qtyshipped * currToBase(cohist_curr_id, cohist_unitcost, cohist_shipdate)) INTO _value FROM cohist, itemsite, item WHERE ( (cohist_cust_id=pCustid) AND (cohist_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_prodcat_id=pProdcatid) AND (cohist_invcdate BETWEEN _startDate AND _endDate) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; ALTER FUNCTION public.costsbycustomervalue(integer, integer, integer) OWNER TO admin; -- -- Name: costsbycustomervalue(integer, integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION costsbycustomervalue(integer, integer, text) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; pPeriodid ALIAS FOR $2; pProdcat ALIAS FOR $3; _value NUMERIC; _startDate DATE; _endDate DATE; BEGIN _startDate := findPeriodStart(pPeriodid); _endDate := findPeriodEnd(pPeriodid); -- Returns value in base currency -- ToDo: is cohist_shipdate the right date to use? SELECT SUM(cohist_qtyshipped * currToBase(cohist_curr_id, cohist_unitcost, cohist_shipdate)) INTO _value FROM cohist, itemsite, item, prodcat WHERE ( (cohist_cust_id=pCustid) AND (cohist_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_prodcat_id=prodcat_id) AND (prodcat_code ~ pProdcat) AND (cohist_invcdate BETWEEN _startDate AND _endDate) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; ALTER FUNCTION public.costsbycustomervalue(integer, integer, text) OWNER TO admin; -- -- Name: createaccountingperiod(date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createaccountingperiod(date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStartDate ALIAS FOR $1; pEndDate ALIAS FOR $2; BEGIN RETURN createAccountingPeriod(pStartDate, pEndDate, NULL, NULL); END; $_$; ALTER FUNCTION public.createaccountingperiod(date, date) OWNER TO admin; -- -- Name: createaccountingperiod(date, date, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createaccountingperiod(date, date, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStartDate ALIAS FOR $1; pEndDate ALIAS FOR $2; pYearPeriodId ALIAS FOR $3; pQuarter ALIAS FOR $4; _periodid INTEGER; _check INTEGER; _r RECORD; _initial BOOLEAN; _number INTEGER; BEGIN -- Make that the passed start date doesn't fall into any existing period SELECT period_id INTO _check FROM period WHERE (pStartDate BETWEEN period_start AND period_end); IF (FOUND) THEN RETURN -1; END IF; -- Make that the passed end date doesn't fall into any existing period SELECT period_id INTO _check FROM period WHERE (pEndDate BETWEEN period_start AND period_end); IF (FOUND) THEN RETURN -2; END IF; -- Make that the passed start and end dates don't enclose an existing period SELECT period_id INTO _check FROM period WHERE ( (period_start >= pStartDate) AND (period_end <= pEndDate) ); IF (FOUND) THEN RETURN -3; END IF; -- Make sure period is inside fiscal year SELECT yearperiod_id INTO _check FROM yearperiod WHERE ((yearperiod_id=pYearPeriodId) AND (pStartDate>=yearperiod_start) AND (pEndDate<=yearperiod_end)); IF NOT (FOUND) THEN RETURN -4; END IF; -- Determine if this is the initial accounting period SELECT CASE WHEN(count(*) > 0) THEN FALSE ELSE TRUE END INTO _initial FROM period; -- Determine the next number SELECT COALESCE(MAX(period_number),0) + 1 INTO _number FROM period WHERE (period_yearperiod_id=pYearPeriodId); -- Create the new accounting period SELECT NEXTVAL('period_period_id_seq') INTO _periodid; INSERT INTO period ( period_id, period_start, period_end, period_closed, period_freeze, period_initial, period_number, period_yearperiod_id, period_quarter ) VALUES ( _periodid, pStartDate, pEndDate, FALSE, FALSE, _initial, _number, pYearPeriodId, pQuarter ); -- Post any unposted G/L Transactions into the new period FOR _r IN SELECT DISTINCT gltrans_sequence FROM gltrans WHERE ( (NOT gltrans_posted) AND (gltrans_date BETWEEN pStartDate AND pEndDate) ) LOOP PERFORM postIntoTrialBalance(_r.gltrans_sequence); END LOOP; RETURN _periodid; END; $_$; ALTER FUNCTION public.createaccountingperiod(date, date, integer, integer) OWNER TO admin; -- -- Name: createaccountingyearperiod(date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createaccountingyearperiod(date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStartDate ALIAS FOR $1; pEndDate ALIAS FOR $2; _yearperiodid INTEGER; _check INTEGER; _checkBool BOOLEAN; _r RECORD; _initial BOOLEAN; BEGIN -- Make that the passed start date doesn't fall into any existing yearperiod SELECT yearperiod_id INTO _check FROM yearperiod WHERE (pStartDate BETWEEN yearperiod_start AND yearperiod_end); IF (FOUND) THEN RETURN -1; END IF; -- Make that the passed end date doesn't fall into any existing yearperiod SELECT yearperiod_id INTO _check FROM yearperiod WHERE (pEndDate BETWEEN yearperiod_start AND yearperiod_end); IF (FOUND) THEN RETURN -2; END IF; -- Make that the passed start and end dates don't enclose an existing yearperiod SELECT yearperiod_id INTO _check FROM yearperiod WHERE ( (yearperiod_start >= pStartDate) AND (yearperiod_end <= pEndDate) ); IF (FOUND) THEN RETURN -3; END IF; -- Make sure that the passed start is prior to the end date SELECT (pStartDate > pEndDate) INTO _checkBool; IF (_checkBool) THEN RETURN -5; END IF; -- Determine if this is the initial accounting yearperiod SELECT CASE WHEN(count(*) > 0) THEN FALSE ELSE TRUE END INTO _initial FROM yearperiod; -- Create the new accounting yearperiod SELECT NEXTVAL('yearperiod_yearperiod_id_seq') INTO _yearperiodid; INSERT INTO yearperiod ( yearperiod_id, yearperiod_start, yearperiod_end, yearperiod_closed ) VALUES ( _yearperiodid, pStartDate, pEndDate, FALSE ); RETURN _yearperiodid; END; $_$; ALTER FUNCTION public.createaccountingyearperiod(date, date) OWNER TO admin; -- -- Name: createapchecks(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapchecks(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'createAPChecks() is deprecated - use createChecks() instead'; RETURN createChecks($1, $2); END; $_$; ALTER FUNCTION public.createapchecks(integer, date) OWNER TO admin; -- -- Name: createapcreditmemo(integer, text, text, date, numeric, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapcreditmemo(integer, text, text, date, numeric, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pDocNumber ALIAS FOR $2; pPoNumber ALIAS FOR $3; pDocDate ALIAS FOR $4; pAmount ALIAS FOR $5; pNotes ALIAS FOR $6; _result INTEGER; BEGIN SELECT createAPCreditMemo( pVendid, fetchJournalNumber('AP-MISC'), pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, -1, pDocDate, -1, baseCurrId() ) INTO _result; RETURN _result; END; $_$; ALTER FUNCTION public.createapcreditmemo(integer, text, text, date, numeric, text) OWNER TO admin; -- -- Name: createapcreditmemo(integer, integer, text, text, date, numeric, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapcreditmemo(integer, integer, text, text, date, numeric, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pDocNumber ALIAS FOR $3; pPoNumber ALIAS FOR $4; pDocDate ALIAS FOR $5; pAmount ALIAS FOR $6; pNotes ALIAS FOR $7; BEGIN RETURN createAPCreditMemo(pVendid, pJournalNumber, pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, -1, pDocDate, -1, baseCurrId() ); END; $_$; ALTER FUNCTION public.createapcreditmemo(integer, integer, text, text, date, numeric, text) OWNER TO admin; -- -- Name: createapcreditmemo(integer, text, text, date, numeric, text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapcreditmemo(integer, text, text, date, numeric, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pDocNumber ALIAS FOR $2; pPoNumber ALIAS FOR $3; pDocDate ALIAS FOR $4; pAmount ALIAS FOR $5; pNotes ALIAS FOR $6; pAccntid ALIAS FOR $7; _result INTEGER; BEGIN SELECT createAPCreditMemo( pVendid, fetchJournalNumber('AP-MISC'), pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDocDate, -1, baseCurrId() ) INTO _result; RETURN _result; END; $_$; ALTER FUNCTION public.createapcreditmemo(integer, text, text, date, numeric, text, integer) OWNER TO admin; -- -- Name: createapcreditmemo(integer, integer, text, text, date, numeric, text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapcreditmemo(integer, integer, text, text, date, numeric, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pDocNumber ALIAS FOR $3; pPoNumber ALIAS FOR $4; pDocDate ALIAS FOR $5; pAmount ALIAS FOR $6; pNotes ALIAS FOR $7; pAccntid ALIAS FOR $8; BEGIN RETURN createAPCreditMemo( pVendid, pJournalNumber, pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDocDate, -1, baseCurrId() ); END; $_$; ALTER FUNCTION public.createapcreditmemo(integer, integer, text, text, date, numeric, text, integer) OWNER TO admin; -- -- Name: createapcreditmemo(integer, text, text, date, numeric, text, integer, date, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapcreditmemo(integer, text, text, date, numeric, text, integer, date, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pDocNumber ALIAS FOR $2; pPoNumber ALIAS FOR $3; pDocDate ALIAS FOR $4; pAmount ALIAS FOR $5; pNotes ALIAS FOR $6; pAccntid ALIAS FOR $7; pDueDate ALIAS FOR $8; pTermsid ALIAS FOR $9; _result INTEGER; BEGIN SELECT createAPCreditMemo( pVendid, fetchJournalNumber('AP-MISC'), pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDueDate, pTermsid, baseCurrId() ) INTO _result; RETURN _result; END; $_$; ALTER FUNCTION public.createapcreditmemo(integer, text, text, date, numeric, text, integer, date, integer) OWNER TO admin; -- -- Name: createapcreditmemo(integer, integer, text, text, date, numeric, text, integer, date, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapcreditmemo(integer, integer, text, text, date, numeric, text, integer, date, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pDocNumber ALIAS FOR $3; pPoNumber ALIAS FOR $4; pDocDate ALIAS FOR $5; pAmount ALIAS FOR $6; pNotes ALIAS FOR $7; pAccntid ALIAS FOR $8; pDueDate ALIAS FOR $9; pTermsid ALIAS FOR $10; BEGIN RETURN createAPCreditMemo( pVendid, pJournalNumber, pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDueDate, pTermsid, baseCurrId() ); END; $_$; ALTER FUNCTION public.createapcreditmemo(integer, integer, text, text, date, numeric, text, integer, date, integer) OWNER TO admin; -- -- Name: createapcreditmemo(integer, integer, text, text, date, numeric, text, integer, date, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapcreditmemo(integer, integer, text, text, date, numeric, text, integer, date, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pDocNumber ALIAS FOR $3; pPoNumber ALIAS FOR $4; pDocDate ALIAS FOR $5; pAmount ALIAS FOR $6; pNotes ALIAS FOR $7; pAccntid ALIAS FOR $8; pDueDate ALIAS FOR $9; pTermsid ALIAS FOR $10; pCurrId ALIAS FOR $11; BEGIN RETURN createAPCreditMemo( NULL, pVendid, pJournalNumber, pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDueDate, pTermsid, pCurrId ); END; $_$; ALTER FUNCTION public.createapcreditmemo(integer, integer, text, text, date, numeric, text, integer, date, integer, integer) OWNER TO admin; -- -- Name: createapcreditmemo(integer, integer, integer, text, text, date, numeric, text, integer, date, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapcreditmemo(integer, integer, integer, text, text, date, numeric, text, integer, date, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pId ALIAS FOR $1; pVendid ALIAS FOR $2; pJournalNumber ALIAS FOR $3; pDocNumber ALIAS FOR $4; pPoNumber ALIAS FOR $5; pDocDate ALIAS FOR $6; pAmount ALIAS FOR $7; pNotes ALIAS FOR $8; pAccntid ALIAS FOR $9; pDueDate ALIAS FOR $10; pTermsid ALIAS FOR $11; pCurrId ALIAS FOR $12; _vendName TEXT; _apAccntid INTEGER; _prepaidAccntid INTEGER; _accntid INTEGER; _glSequence INTEGER; _journalNumber INTEGER; _apopenid INTEGER; _baseAmount NUMERIC; _taxBaseValue NUMERIC; _test INTEGER; BEGIN _apopenid := pId; SELECT findAPAccount(pVendid) INTO _apAccntid; SELECT findAPPrepaidAccount(pVendid) INTO _prepaidAccntid; SELECT vend_name INTO _vendName FROM vendinfo WHERE (vend_id=pVendid); _accntid := pAccntid; PERFORM accnt_id FROM accnt WHERE (accnt_id=_accntid); IF (FOUND) THEN _prepaidAccntid := _accntid; ELSE _accntid := -1; END IF; IF(pJournalNumber IS NULL) THEN SELECT fetchJournalNumber('AP-MISC') INTO _journalNumber; ELSE _journalNumber := pJournalNumber; END IF; SELECT fetchGLSequence() INTO _glSequence; IF (_apopenid IS NOT NULL) THEN UPDATE apopen SET apopen_username=getEffectiveXtUser(), apopen_journalnumber=_journalNumber, apopen_vend_id=pVendid, apopen_docnumber=pDocNumber, apopen_doctype='C', apopen_ponumber=pPoNumber, apopen_docdate=pDocDate, apopen_duedate=pDueDate, apopen_distdate=pDocDate, apopen_terms_id=pTermsid, apopen_amount=pAmount, apopen_paid=0, apopen_open=(pAmount <> 0), apopen_notes=pNotes, apopen_accnt_id=_accntid, apopen_curr_id=pCurrId, apopen_closedate=CASE WHEN (pAmount = 0) THEN pDocdate END WHERE apopen_id = _apopenid; ELSE SELECT NEXTVAL('apopen_apopen_id_seq') INTO _apopenid; INSERT INTO apopen ( apopen_id, apopen_username, apopen_journalnumber, apopen_vend_id, apopen_docnumber, apopen_doctype, apopen_ponumber, apopen_docdate, apopen_duedate, apopen_distdate, apopen_terms_id, apopen_amount, apopen_paid, apopen_open, apopen_notes, apopen_accnt_id, apopen_curr_id, apopen_closedate ) VALUES ( _apopenid, getEffectiveXtUser(), _journalNumber, pVendid, pDocNumber, 'C', pPoNumber, pDocDate, pDueDate, pDocDate, pTermsid, pAmount, 0, (pAmount <> 0), pNotes, _accntid, pCurrId, CASE WHEN (pAmount = 0) THEN pDocDate END ); END IF; _baseAmount := round(currToBase(pCurrId, pAmount, pDocDate), 2); -- Debit the A/P account for the full amount SELECT insertIntoGLSeries ( _glSequence, 'A/P', 'CM', pDocNumber, _apAccntid, (_baseAmount * -1), pDocDate, (_vendName || ' ' || pNotes) ) INTO _test; -- Credit the Tax account for the tax amount _taxBaseValue := addTaxToGLSeries(_glSequence, 'A/P', 'CM', pDocNumber, pCurrId, pDocDate, pDocDate, 'apopentax', _apopenid, _vendName); UPDATE apopentax SET taxhist_journalnumber = _journalNumber WHERE taxhist_parent_id=_apopenid; -- Credit the Prepaid account for the basis amount SELECT insertIntoGLSeries ( _glSequence, 'A/P', 'CM', pDocNumber, _prepaidAccntid, (_baseAmount - _taxBaseValue), pDocDate, (_vendName || ' ' || pNotes) ) INTO _test; -- Commit the GLSeries; SELECT postGLSeries(_glSequence, _journalNumber) INTO _test; IF (_test < 0) THEN DELETE FROM apopen WHERE (apopen_id=_apopenid); PERFORM deleteGLSeries(_glSequence); RAISE EXCEPTION 'postGLSeries commit failed with %', _test; END IF; RETURN pJournalNumber; END; $_$; ALTER FUNCTION public.createapcreditmemo(integer, integer, integer, text, text, date, numeric, text, integer, date, integer, integer) OWNER TO admin; -- -- Name: createapcreditmemoapplication(integer, integer, numeric, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapcreditmemoapplication(psourceapopenid integer, ptargetapopenid integer, pamount numeric, pcurrid integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _apCreditApplyId INTEGER; BEGIN IF (pAmount > (SELECT currToCurr(apopen_curr_id, pCurrId, ROUND(apopen_amount - apopen_paid, 2), apopen_docdate) FROM apopen WHERE (apopen_id=pTargetApopenId))) THEN RETURN -1; END IF; IF (pAmount > (SELECT ROUND((apopen_amount - apopen_paid) - COALESCE(SUM(currToCurr(apcreditapply_curr_id, apopen_curr_id, apcreditapply_amount, apopen_docdate)), 0), 2) FROM apopen LEFT OUTER JOIN apcreditapply ON ((apcreditapply_source_apopen_id=apopen_id) AND (apcreditapply_target_apopen_id<>pTargetApopenId)) WHERE (apopen_id=pSourceApopenId) GROUP BY apopen_amount, apopen_paid)) THEN RETURN -2; END IF; SELECT apcreditapply_id INTO _apCreditApplyId FROM apcreditapply WHERE ((apcreditapply_source_apopen_id=pSourceApopenId) AND (apcreditapply_target_apopen_id=pTargetApopenId)); IF (FOUND) THEN UPDATE apcreditapply SET apcreditapply_amount=pAmount, apcreditapply_curr_id=pCurrId WHERE (apcreditapply_id=_apCreditApplyId); ELSE INSERT INTO apcreditapply ( apcreditapply_source_apopen_id, apcreditapply_target_apopen_id, apcreditapply_amount, apcreditapply_curr_id ) VALUES ( pSourceApopenId, pTargetApopenId, pAmount, pCurrId) RETURNING apcreditapply_id INTO _apCreditApplyId; END IF; RETURN _apCreditApplyId; END; $$; ALTER FUNCTION public.createapcreditmemoapplication(psourceapopenid integer, ptargetapopenid integer, pamount numeric, pcurrid integer) OWNER TO admin; -- -- Name: createapdebitmemo(integer, text, text, date, numeric, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapdebitmemo(integer, text, text, date, numeric, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pDocNumber ALIAS FOR $2; pPoNumber ALIAS FOR $3; pDocDate ALIAS FOR $4; pAmount ALIAS FOR $5; pNotes ALIAS FOR $6; _result INTEGER; BEGIN SELECT createAPDebitMemo( pVendid, fetchJournalNumber('AP-MISC'), pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, -1, pDocDate, -1, baseCurrId() ) INTO _result; RETURN _result; END; $_$; ALTER FUNCTION public.createapdebitmemo(integer, text, text, date, numeric, text) OWNER TO admin; -- -- Name: createapdebitmemo(integer, integer, text, text, date, numeric, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapdebitmemo(integer, integer, text, text, date, numeric, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pDocNumber ALIAS FOR $3; pPoNumber ALIAS FOR $4; pDocDate ALIAS FOR $5; pAmount ALIAS FOR $6; pNotes ALIAS FOR $7; BEGIN RETURN createAPDebitMemo(pVendid, pJournalNumber, pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, -1, pDocDate, -1, baseCurrId() ); END; $_$; ALTER FUNCTION public.createapdebitmemo(integer, integer, text, text, date, numeric, text) OWNER TO admin; -- -- Name: createapdebitmemo(integer, text, text, date, numeric, text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapdebitmemo(integer, text, text, date, numeric, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pDocNumber ALIAS FOR $2; pPoNumber ALIAS FOR $3; pDocDate ALIAS FOR $4; pAmount ALIAS FOR $5; pNotes ALIAS FOR $6; pAccntid ALIAS FOR $7; _result INTEGER; BEGIN SELECT createAPDebitMemo( pVendid, fetchJournalNumber('AP-MISC'), pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDocDate, -1, baseCurrId() ) INTO _result; RETURN _result; END; $_$; ALTER FUNCTION public.createapdebitmemo(integer, text, text, date, numeric, text, integer) OWNER TO admin; -- -- Name: createapdebitmemo(integer, integer, text, text, date, numeric, text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapdebitmemo(integer, integer, text, text, date, numeric, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pDocNumber ALIAS FOR $3; pPoNumber ALIAS FOR $4; pDocDate ALIAS FOR $5; pAmount ALIAS FOR $6; pNotes ALIAS FOR $7; pAccntid ALIAS FOR $8; BEGIN RETURN createAPDebitMemo( pVendid, pJournalNumber, pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDocDate, -1, baseCurrId() ); END; $_$; ALTER FUNCTION public.createapdebitmemo(integer, integer, text, text, date, numeric, text, integer) OWNER TO admin; -- -- Name: createapdebitmemo(integer, text, text, date, numeric, text, integer, date, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapdebitmemo(integer, text, text, date, numeric, text, integer, date, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pDocNumber ALIAS FOR $2; pPoNumber ALIAS FOR $3; pDocDate ALIAS FOR $4; pAmount ALIAS FOR $5; pNotes ALIAS FOR $6; pAccntid ALIAS FOR $7; pDueDate ALIAS FOR $8; pTermsid ALIAS FOR $9; _result INTEGER; BEGIN SELECT createAPDebitMemo( pVendid, fetchJournalNumber('AP-MISC'), pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDueDate, pTermsid, baseCurrId() ) INTO _result; RETURN _result; END; $_$; ALTER FUNCTION public.createapdebitmemo(integer, text, text, date, numeric, text, integer, date, integer) OWNER TO admin; -- -- Name: createapdebitmemo(integer, integer, text, text, date, numeric, text, integer, date, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapdebitmemo(integer, integer, text, text, date, numeric, text, integer, date, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pDocNumber ALIAS FOR $3; pPoNumber ALIAS FOR $4; pDocDate ALIAS FOR $5; pAmount ALIAS FOR $6; pNotes ALIAS FOR $7; pAccntid ALIAS FOR $8; pDueDate ALIAS FOR $9; pTermsid ALIAS FOR $10; BEGIN RETURN createAPDebitMemo(pVendid, pJournalNumber, pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDueDate, pTermsid, baseCurrId() ); END; $_$; ALTER FUNCTION public.createapdebitmemo(integer, integer, text, text, date, numeric, text, integer, date, integer) OWNER TO admin; -- -- Name: createapdebitmemo(integer, integer, text, text, date, numeric, text, integer, date, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapdebitmemo(integer, integer, text, text, date, numeric, text, integer, date, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pDocNumber ALIAS FOR $3; pPoNumber ALIAS FOR $4; pDocDate ALIAS FOR $5; pAmount ALIAS FOR $6; pNotes ALIAS FOR $7; pAccntid ALIAS FOR $8; pDueDate ALIAS FOR $9; pTermsid ALIAS FOR $10; pCurrId ALIAS FOR $11; BEGIN RETURN createAPDebitMemo(NULL, pVendid, pJournalNumber, pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDueDate, pTermsid, pCurrId ); END; $_$; ALTER FUNCTION public.createapdebitmemo(integer, integer, text, text, date, numeric, text, integer, date, integer, integer) OWNER TO admin; -- -- Name: createapdebitmemo(integer, integer, integer, text, text, date, numeric, text, integer, date, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapdebitmemo(integer, integer, integer, text, text, date, numeric, text, integer, date, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pId ALIAS FOR $1; pVendid ALIAS FOR $2; pJournalNumber ALIAS FOR $3; pDocNumber ALIAS FOR $4; pPoNumber ALIAS FOR $5; pDocDate ALIAS FOR $6; pAmount ALIAS FOR $7; pNotes ALIAS FOR $8; pAccntid ALIAS FOR $9; pDueDate ALIAS FOR $10; pTermsid ALIAS FOR $11; pCurrId ALIAS FOR $12; _vendName TEXT; _apAccntid INTEGER; _prepaidAccntid INTEGER; _accntid INTEGER; _glSequence INTEGER; _journalNumber INTEGER; _apopenid INTEGER; _baseAmount NUMERIC; _taxBaseValue NUMERIC; _test INTEGER; BEGIN _apopenid := pId; SELECT findAPAccount(pVendid) INTO _apAccntid; SELECT findAPPrepaidAccount(pVendid) INTO _prepaidAccntid; SELECT vend_name INTO _vendName FROM vendinfo WHERE (vend_id=pVendid); _accntid := pAccntid; PERFORM accnt_id FROM accnt WHERE (accnt_id=_accntid); IF (FOUND) THEN _prepaidAccntid := _accntid; ELSE _accntid := -1; END IF; IF(pJournalNumber IS NULL) THEN SELECT fetchJournalNumber('AP-MISC') INTO _journalNumber; ELSE _journalNumber := pJournalNumber; END IF; SELECT fetchGLSequence() INTO _glSequence; IF (_apopenid IS NOT NULL) THEN UPDATE apopen SET apopen_username=getEffectiveXtUser(), apopen_journalnumber=_journalNumber, apopen_vend_id=pVendid, apopen_docnumber=pDocNumber, apopen_doctype='D', apopen_ponumber=pPoNumber, apopen_docdate=pDocDate, apopen_duedate=pDueDate, apopen_distdate=pDocDate, apopen_terms_id=pTermsid, apopen_amount=pAmount, apopen_paid=0, apopen_open=(pAmount <> 0), apopen_notes=pNotes, apopen_accnt_id=_accntid, apopen_curr_id=pCurrId, apopen_closedate=CASE WHEN (pAmount = 0) THEN pDocdate END WHERE apopen_id = _apopenid; ELSE SELECT NEXTVAL('apopen_apopen_id_seq') INTO _apopenid; INSERT INTO apopen ( apopen_id, apopen_username, apopen_journalnumber, apopen_vend_id, apopen_docnumber, apopen_doctype, apopen_ponumber, apopen_docdate, apopen_duedate, apopen_distdate, apopen_terms_id, apopen_amount, apopen_paid, apopen_discountable_amount, apopen_open, apopen_notes, apopen_accnt_id, apopen_curr_id, apopen_closedate ) VALUES ( _apopenid, getEffectiveXtUser(), _journalNumber, pVendid, pDocNumber, 'D', pPoNumber, pDocDate, pDueDate, pDocDate, pTermsid, pAmount, 0, 0, (pAmount <> 0), pNotes, _accntid, pCurrId, CASE WHEN (pAmount = 0) THEN pDocDate END ); END IF; _baseAmount := round(currToBase(pCurrId, pAmount, pDocDate), 2); -- Credit the A/P account for the full amount SELECT insertIntoGLSeries ( _glSequence, 'A/P', 'DM', pDocNumber, _apAccntid, _baseAmount, pDocDate, (_vendName || ' ' || pNotes) ) INTO _test; -- Debit the Tax account for the tax amount _taxBaseValue := addTaxToGLSeries(_glSequence, 'A/P', 'DM', pDocNumber, pCurrId, pDocDate, pDocDate, 'apopentax', _apopenid, _vendName); UPDATE apopentax SET taxhist_journalnumber = _journalNumber WHERE taxhist_parent_id=_apopenid; -- Debit the Prepaid account for the basis amount -- Note, the taxBaseValue is negative so it is added SELECT insertIntoGLSeries ( _glSequence, 'A/P', 'DM', pDocNumber, _prepaidAccntid, (_baseAmount + _taxBaseValue) * -1, pDocDate, (_vendName || ' ' || pNotes) ) INTO _test; -- Commit the GLSeries; SELECT postGLSeries(_glSequence, _journalNumber) INTO _test; IF (_test < 0) THEN DELETE FROM apopen WHERE (apopen_id=_apopenid); PERFORM deleteGLSeries(_glSequence); RAISE EXCEPTION 'postGLSeries commit failed with %', _test; END IF; RETURN _apopenid; END; $_$; ALTER FUNCTION public.createapdebitmemo(integer, integer, integer, text, text, date, numeric, text, integer, date, integer, integer) OWNER TO admin; -- -- Name: createapdiscount(integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapdiscount(integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenid ALIAS FOR $1; pAmount ALIAS FOR $2; _result INTEGER; BEGIN SELECT createAPDiscount(pApopenid, fetchJournalNumber('AP-MISC'), pAmount) INTO _result; RETURN _result; END; $_$; ALTER FUNCTION public.createapdiscount(integer, numeric) OWNER TO admin; -- -- Name: createapdiscount(integer, integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createapdiscount(integer, integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pAmount ALIAS FOR $3; _ap RECORD; _sequence INTEGER; _apopenid INTEGER; _apcreditapplyid INTEGER; _result INTEGER; _crAccnt INTEGER; _dbAccnt INTEGER; _reference TEXT; _discountDateAmt NUMERIC; BEGIN SELECT NEXTVAL('apopen_apopen_id_seq') INTO _apopenid; SELECT * INTO _ap FROM apopen WHERE (apopen_id = pApopenid); IF (NOT FOUND) THEN RETURN -1; END IF; _crAccnt := findAPDiscountAccount(_ap.apopen_vend_id); _dbAccnt := findAPAccount(_ap.apopen_vend_id); _reference := ('Discount for ' || _ap.apopen_doctype || ' ' || _ap.apopen_docnumber); SELECT fetchGLSequence() INTO _sequence; _discountDateAmt = round(pAmount / _ap.apopen_curr_rate, 2); PERFORM insertIntoGLSeries( _sequence, 'A/P', 'DS', _ap.apopen_docnumber, _dbAccnt, _discountDateAmt * -1, CURRENT_DATE, _reference); PERFORM insertIntoGLSeries( _sequence, 'A/P', 'DS', _ap.apopen_docnumber, _crAccnt, _discountDateAmt, CURRENT_DATE, _reference); PERFORM postGLSeries(_sequence, pJournalNumber); INSERT INTO apopen ( apopen_id, apopen_username, apopen_journalnumber, apopen_vend_id, apopen_docnumber, apopen_doctype, apopen_ponumber, apopen_docdate, apopen_duedate, apopen_distdate, apopen_terms_id, apopen_curr_id, apopen_amount, apopen_paid, apopen_open, apopen_notes, apopen_discount, apopen_curr_rate ) SELECT _apopenid, getEffectiveXtUser(), pJournalNumber, apopen_vend_id, apopen_docnumber, 'C', apopen_ponumber, CURRENT_DATE, CURRENT_DATE, CURRENT_DATE, -1, apopen_curr_id, pAmount, 0, TRUE, _reference, TRUE, apopen_curr_rate FROM apopen WHERE (apopen_id=pApopenid); SELECT apcreditapply_id INTO _apcreditapplyid FROM apcreditapply WHERE ( (apcreditapply_source_apopen_id=_apopenid) AND (apcreditapply_target_apopen_id=pApopenid) ); IF (FOUND) THEN UPDATE apcreditapply SET apcreditapply_amount=pAmount WHERE (apcreditapply_id=_apcreditapplyid); ELSE SELECT nextval('apcreditapply_apcreditapply_id_seq') INTO _apcreditapplyid; INSERT INTO apcreditapply ( apcreditapply_id, apcreditapply_source_apopen_id, apcreditapply_target_apopen_id, apcreditapply_amount, apcreditapply_curr_id ) VALUES ( _apcreditapplyid, _apopenid, pApopenid, pAmount, _ap.apopen_curr_id ); END IF; SELECT postAPCreditMemoApplication(_apopenid) INTO _result; IF (_result < 0) THEN RETURN _result; END IF; RETURN pJournalNumber; END; $_$; ALTER FUNCTION public.createapdiscount(integer, integer, numeric) OWNER TO admin; -- -- Name: createarcashdeposit(integer, text, text, date, numeric, text, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createarcashdeposit(integer, text, text, date, numeric, text, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; pDocNumber ALIAS FOR $2; pOrderNumber ALIAS FOR $3; pDocDate ALIAS FOR $4; pAmount ALIAS FOR $5; pNotes ALIAS FOR $6; pJournalNumber ALIAS FOR $7; pCurrId ALIAS FOR $8; _prepaidaccntid INTEGER; _deferredaccntid INTEGER; _glSequence INTEGER; _aropenid INTEGER; BEGIN IF (pAmount <= 0) THEN RETURN 0; END IF; _prepaidaccntid := findPrepaidAccount(pCustid); IF (_prepaidaccntid = -1) THEN RAISE EXCEPTION 'There was an error creating the Customer Deposit GL Transactions. No Prepaid Account is assigned.'; END IF; _deferredaccntid := findDeferredAccount(pCustid); IF (_deferredaccntid = -1) THEN RAISE EXCEPTION 'There was an error creating the Customer Deposit GL Transactions. No Deferred Account is assigned.'; END IF; SELECT NEXTVAL('aropen_aropen_id_seq') INTO _aropenid; SELECT insertGLTransaction( pJournalNumber, 'A/R', 'CD', pDocNumber, pNotes, _deferredaccntid, _prepaidaccntid, _aropenid, round(currToBase(pCurrId, pAmount, pDocDate), 2), pDocDate) INTO _glSequence; INSERT INTO aropen ( aropen_id, aropen_username, aropen_journalnumber, aropen_cust_id, aropen_docnumber, aropen_doctype, aropen_ordernumber, aropen_docdate, aropen_duedate, aropen_distdate, aropen_terms_id, aropen_salesrep_id, aropen_amount, aropen_paid, aropen_commission_due, aropen_commission_paid, aropen_applyto, aropen_ponumber, aropen_cobmisc_id, aropen_open, aropen_notes, aropen_rsncode_id, aropen_salescat_id, aropen_accnt_id, aropen_curr_id ) VALUES ( _aropenid, getEffectiveXtUser(), pJournalNumber, pCustid, pDocNumber, 'R', pOrderNumber, pDocDate, pDocDate, pDocDate, -1, NULL, round(pAmount, 2), 0, 0.0, FALSE, '', '', -1, TRUE, pNotes, -1, -1, -1, pCurrId ); RETURN _aropenid; END; $_$; ALTER FUNCTION public.createarcashdeposit(integer, text, text, date, numeric, text, integer, integer) OWNER TO admin; -- -- Name: createarcreditmemo(integer, integer, text, text, date, numeric, text, integer, integer, integer, date, integer, integer, numeric, integer, integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createarcreditmemo(pid integer, pcustid integer, pdocnumber text, pordernumber text, pdocdate date, pamount numeric, pnotes text, prsncodeid integer, psalescatid integer, paccntid integer, pduedate date, ptermsid integer, psalesrepid integer, pcommissiondue numeric DEFAULT 0, pjournalnumber integer DEFAULT NULL::integer, pcurrid integer DEFAULT basecurrid(), paraccntid integer DEFAULT NULL::integer, pcoccpayid integer DEFAULT NULL::integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _accntid INTEGER; _arAccntid INTEGER; _aropenid INTEGER; _cohistid INTEGER; _custName TEXT; _duedate DATE := COALESCE(pDueDate, pDocDate); _glSequence INTEGER; _journalNumber INTEGER; _prepaidAccntid INTEGER; _salescatid INTEGER; _taxBaseValue NUMERIC; _test INTEGER; _tmp INTEGER; BEGIN _aropenid := pId; IF (pAmount <= 0) THEN RETURN 0; END IF; _arAccntid := COALESCE(pARAccntid, findARAccount(pCustid)); _prepaidAccntid := findPrepaidAccount(pCustid); _accntid := pAccntid; _salescatid := pSalescatid; SELECT cust_name INTO _custName FROM custinfo WHERE (cust_id=pCustid); IF EXISTS(SELECT 1 FROM accnt WHERE (accnt_id=_accntid)) THEN _prepaidAccntid := _accntid; ELSE _accntid := -1; END IF; SELECT accnt_id INTO _tmp FROM salescat, accnt WHERE ((salescat_prepaid_accnt_id=accnt_id) AND (salescat_id=_salescatid)); IF (FOUND) THEN _accntid := -1; _prepaidAccntid := _tmp; ELSE _salescatid = -1; END IF; IF(pJournalNumber IS NULL) THEN SELECT fetchJournalNumber('AR-MISC') INTO _journalNumber; ELSE _journalNumber := pJournalNumber; END IF; _glSequence := fetchGLSequence(); -- CreatelUpdate aropen for full amount IF (_aropenid IS NOT NULL) THEN UPDATE aropen SET aropen_username=getEffectiveXtUser(), aropen_journalnumber=_journalNumber, aropen_cust_id=pCustid, aropen_docnumber=pDocNumber, aropen_doctype='C', aropen_ordernumber=pOrderNumber,aropen_docdate=pDocDate, aropen_duedate=_duedate, aropen_distdate=pDocDate, aropen_terms_id=pTermsid, aropen_salesrep_id=pSalesrepid, aropen_amount=round(pAmount, 2), aropen_paid=0, aropen_commission_due=pCommissiondue, aropen_commission_paid=FALSE, aropen_applyto='', aropen_ponumber='', aropen_cobmisc_id=-1, aropen_open=TRUE, aropen_notes=pNotes, aropen_rsncode_id=pRsncodeid, aropen_salescat_id=_salescatid, aropen_accnt_id=_accntid, aropen_curr_id=pCurrId WHERE aropen_id = pId; ELSE SELECT NEXTVAL('aropen_aropen_id_seq') INTO _aropenid; INSERT INTO aropen ( aropen_id, aropen_username, aropen_journalnumber, aropen_cust_id, aropen_docnumber, aropen_doctype, aropen_ordernumber, aropen_docdate, aropen_duedate, aropen_distdate, aropen_terms_id, aropen_salesrep_id, aropen_amount, aropen_paid, aropen_commission_due, aropen_commission_paid, aropen_applyto, aropen_ponumber, aropen_cobmisc_id, aropen_open, aropen_notes, aropen_rsncode_id, aropen_salescat_id, aropen_accnt_id, aropen_curr_id ) VALUES ( _aropenid, getEffectiveXtUser(), _journalNumber, pCustid, pDocNumber, 'C', pOrderNumber, pDocDate, _duedate, pDocDate, pTermsid, pSalesrepid, round(pAmount, 2), 0, pCommissiondue, FALSE, '', '', -1, TRUE, pNotes, pRsncodeid, _salescatid, _accntid, pCurrId ); END IF; -- Credit the A/R account for the full amount SELECT insertIntoGLSeries ( _glSequence, 'A/R', 'CM', pDocNumber, _arAccntid, round(currToBase(pCurrId, pAmount, pDocDate), 2), pDocDate, (_custName || ' ' || pNotes)) INTO _test; -- Debit the Tax account for the tax amount _taxBaseValue := addTaxToGLSeries(_glSequence, 'A/R', 'CM', pDocNumber, pCurrId, pDocDate, pDocDate, 'aropentax', _aropenid, (_custName || ' ' || pNotes)); UPDATE aropentax SET taxhist_journalnumber = _journalNumber WHERE taxhist_parent_id=_aropenid; -- Debit the Prepaid account for the basis amount -- Note, _taxBaseValue is negative so it is added to pAmount SELECT insertIntoGLSeries ( _glSequence, 'A/R', 'CM', pDocNumber, _prepaidAccntid, round(currToBase(pCurrId, pAmount * -1, pDocDate) + _taxBaseValue * -1, 2), pDocDate, (_custName || ' ' || pNotes)) INTO _test; -- Commit the GLSeries; SELECT postGLSeries(_glSequence, _journalNumber) INTO _test; IF (_test < 0) THEN DELETE FROM aropen WHERE (aropen_id=_aropenid); PERFORM deleteGLSeries(_glSequence); RAISE EXCEPTION 'postGLSeries commit failed with %', _test; END IF; -- Record Sales History INSERT INTO cohist ( cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_misc_type, cohist_misc_descrip, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_curr_id, cohist_sequence, cohist_cohead_ccpay_id) VALUES (CASE WHEN pCustid < 0 THEN NULL ELSE pCustid END, -1, -1, 'M', 'A/R Misc Credit Memo', pDocDate, '', pOrderNumber, '', pDocDate, 'C', pDocNumber, pDocDate, 1, (pAmount - _taxBaseValue) * -1, 0, CASE WHEN pSalesrepid < 0 THEN NULL ELSE pSalesrepid END, (pCommissiondue * -1.0), FALSE, pCurrId, _glSequence, pCoCcpayId) RETURNING cohist_id INTO _cohistid; INSERT INTO cohisttax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT _cohistid, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM aropentax WHERE (taxhist_parent_id=_aropenid); RETURN _aropenid; END; $$; ALTER FUNCTION public.createarcreditmemo(pid integer, pcustid integer, pdocnumber text, pordernumber text, pdocdate date, pamount numeric, pnotes text, prsncodeid integer, psalescatid integer, paccntid integer, pduedate date, ptermsid integer, psalesrepid integer, pcommissiondue numeric, pjournalnumber integer, pcurrid integer, paraccntid integer, pcoccpayid integer) OWNER TO admin; -- -- Name: createardebitmemo(integer, integer, integer, text, text, date, numeric, text, integer, integer, integer, date, integer, integer, numeric, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createardebitmemo(integer, integer, integer, text, text, date, numeric, text, integer, integer, integer, date, integer, integer, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pId ALIAS FOR $1; pCustid ALIAS FOR $2; pJournalNumber ALIAS FOR $3; pDocNumber ALIAS FOR $4; pOrderNumber ALIAS FOR $5; pDocDate ALIAS FOR $6; pAmount ALIAS FOR $7; pNotes ALIAS FOR $8; pRsncodeid ALIAS FOR $9; pSalescatid ALIAS FOR $10; pAccntid ALIAS FOR $11; pDueDate ALIAS FOR $12; pTermsid ALIAS FOR $13; pSalesrepid ALIAS FOR $14; pCommissiondue ALIAS FOR $15; pCurrId ALIAS FOR $16; _custName TEXT; _journalNumber INTEGER; _arAccntid INTEGER; _prepaidAccntid INTEGER; _salescatid INTEGER; _accntid INTEGER; _glSequence INTEGER; _aropenid INTEGER; _cohistid INTEGER; _tmp INTEGER; _test INTEGER; _taxBaseValue NUMERIC; BEGIN _aropenid=pId; IF (pAmount <= 0) THEN RETURN 0; END IF; SELECT findARAccount(pCustid) INTO _arAccntid; SELECT findPrepaidAccount(pCustid) INTO _prepaidAccntid; _accntid := pAccntid; _salescatid := pSalescatid; SELECT cust_name INTO _custName FROM custinfo WHERE (cust_id=pCustid); PERFORM accnt_id FROM accnt WHERE (accnt_id=_accntid); IF (FOUND) THEN _prepaidAccntid := _accntid; ELSE _accntid := -1; END IF; SELECT accnt_id INTO _tmp FROM salescat, accnt WHERE ((salescat_prepaid_accnt_id=accnt_id) AND (salescat_id=_salescatid)); IF (FOUND) THEN _accntid := -1; _prepaidAccntid := _tmp; ELSE _salescatid = -1; END IF; IF (pJournalNumber IS NULL) THEN _journalNumber := fetchJournalNumber('AR-MISC'); ELSE _journalNumber := pJournalNumber; END IF; SELECT fetchGLSequence() INTO _glSequence; -- CreatelUpdate aropen for full amount IF (_aropenid IS NOT NULL) THEN UPDATE aropen SET aropen_username=getEffectiveXtUser(), aropen_journalnumber=_journalNumber, aropen_cust_id=pCustid, aropen_docnumber=pDocNumber, aropen_doctype='D', aropen_ordernumber=pOrderNumber,aropen_docdate=pDocDate, aropen_duedate=pDueDate, aropen_distdate=pDocDate, aropen_terms_id=pTermsid, aropen_salesrep_id=pSalesrepid, aropen_amount=round(pAmount, 2), aropen_paid=0, aropen_commission_due=pCommissiondue, aropen_commission_paid=FALSE, aropen_applyto='', aropen_ponumber='', aropen_cobmisc_id=-1, aropen_open=TRUE, aropen_notes=pNotes, aropen_rsncode_id=pRsncodeid, aropen_salescat_id=_salescatid, aropen_accnt_id=_accntid, aropen_curr_id=pCurrId WHERE aropen_id = pId; ELSE SELECT NEXTVAL('aropen_aropen_id_seq') INTO _aropenid; INSERT INTO aropen ( aropen_id, aropen_username, aropen_journalnumber, aropen_cust_id, aropen_docnumber, aropen_doctype, aropen_ordernumber, aropen_docdate, aropen_duedate, aropen_distdate, aropen_terms_id, aropen_salesrep_id, aropen_amount, aropen_paid, aropen_commission_due, aropen_commission_paid, aropen_applyto, aropen_ponumber, aropen_cobmisc_id, aropen_open, aropen_notes, aropen_rsncode_id, aropen_salescat_id, aropen_accnt_id, aropen_curr_id ) VALUES ( _aropenid, getEffectiveXtUser(), _journalNumber, pCustid, pDocNumber, 'D', pOrderNumber, pDocDate, pDueDate, pDocDate, pTermsid, pSalesrepid, round(pAmount, 2), 0, pCommissiondue, FALSE, '', '', -1, TRUE, pNotes, pRsncodeid, _salescatid, _accntid, pCurrId ); END IF; -- Debit the A/R account for the full amount SELECT insertIntoGLSeries ( _glSequence, 'A/R', 'DM', pDocNumber, _arAccntid, round(currToBase(pCurrId, pAmount, pDocDate) * -1, 2), pDocDate, (_custName || ' ' || pNotes)) INTO _test; -- Credit the Tax account for the tax amount _taxBaseValue := addTaxToGLSeries(_glSequence, 'A/R', 'DM', pDocNumber, pCurrId, pDocDate, pDocDate, 'aropentax', _aropenid, (_custName || ' ' || pNotes)); UPDATE aropentax SET taxhist_journalnumber = _journalNumber WHERE taxhist_parent_id=_aropenid; -- Credit the Prepaid account for the basis amount SELECT insertIntoGLSeries ( _glSequence, 'A/R', 'DM', pDocNumber, _prepaidAccntid, round(currToBase(pCurrId, (pAmount), pDocDate), 2) - _taxBaseValue, pDocDate, (_custName || ' ' || pNotes)) INTO _test; -- Commit the GLSeries; SELECT postGLSeries(_glSequence, _journalNumber) INTO _test; IF (_test < 0) THEN DELETE FROM aropen WHERE (aropen_id=_aropenid); PERFORM deleteGLSeries(_glSequence); RAISE EXCEPTION 'postGLSeries commit failed with %', _test; END IF; -- Record Sales History SELECT nextval('cohist_cohist_id_seq') INTO _cohistid; INSERT INTO cohist ( cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_misc_type, cohist_misc_descrip, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_curr_id, cohist_sequence ) VALUES ( _cohistid, pCustid, -1, -1, 'M', 'A/R Misc Debit Memo', pDocDate, '', '', '', pDocDate, 'D', pDocNumber, pDocDate, 1, (pAmount - _taxBaseValue), 0, pSalesrepid, pCommissiondue, FALSE, pCurrId, _glSequence ); INSERT INTO cohisttax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT _cohistid, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM aropentax WHERE (taxhist_parent_id=_aropenid); RETURN _aropenid; END; $_$; ALTER FUNCTION public.createardebitmemo(integer, integer, integer, text, text, date, numeric, text, integer, integer, integer, date, integer, integer, numeric, integer) OWNER TO admin; -- -- Name: createbillingheader(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createbillingheader(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; _cobmiscid INTEGER; _cohead cohead%ROWTYPE; _miscApplied NUMERIC := 0.0; _freight NUMERIC; _freighttypeid INTEGER; _invcDate DATE; _schedDate DATE; _shipDate DATE; _shipVia TEXT; _tax NUMERIC; BEGIN -- Fetch cohead SELECT * INTO _cohead FROM cohead WHERE (cohead_id=pSoheadid); -- Check for an existing cobmisc SELECT cobmisc_id INTO _cobmiscid FROM cobmisc WHERE ( (NOT cobmisc_posted) AND (cobmisc_cohead_id=pSoheadid) ); IF (FOUND) THEN -- Find a Shipping-Entered freight charge SELECT SUM(currToCurr(shiphead_freight_curr_id, _cohead.cohead_curr_id, shiphead_freight, CURRENT_DATE)) INTO _freight FROM ( SELECT shiphead_id, shiphead_freight_curr_id, shiphead_freight FROM shiphead JOIN shipitem ON (shipitem_shiphead_id=shiphead_id AND NOT shipitem_invoiced) WHERE ((shiphead_order_type='SO') AND (shiphead_order_id=pSoheadid)) GROUP BY shiphead_id, shiphead_freight_curr_id, shiphead_freight) AS data; IF (_freight IS NOT NULL) THEN UPDATE cobmisc SET cobmisc_freight = _freight WHERE (cobmisc_id=_cobmiscid); END IF; RETURN _cobmiscid; END IF; -- Find misc charges that have already been applied for the S/O SELECT COALESCE(SUM(cobmisc_misc), 0.0) INTO _miscApplied FROM cobmisc WHERE (cobmisc_cohead_id=pSoheadid); SELECT NEXTVAL('cobmisc_cobmisc_id_seq') INTO _cobmiscid; -- Check for a valid shipdate SELECT MIN(shiphead_shipdate) INTO _shipDate FROM shiphead, shipitem WHERE ( (shipitem_shiphead_id=shiphead_id) AND (NOT shipitem_invoiced) AND (shiphead_shipped) AND (shiphead_order_type='SO') AND (shiphead_order_id=pSoheadid) ); -- Schema shouldn't allow, but we'll try for now IF (_shipDate IS NULL) THEN SELECT MAX(shipitem_shipdate) INTO _shipDate FROM shipitem, shiphead WHERE ( (shipitem_shiphead_id=shiphead_id) AND (shiphead_order_type='SO') AND (shiphead_order_id=pSoheadid) ); -- How about a transaction date IF (_shipDate IS NULL) THEN SELECT COALESCE(MAX(shipitem_transdate), CURRENT_DATE) INTO _shipDate FROM shipitem, shiphead WHERE ((shipitem_shiphead_id=shiphead_id) AND (shiphead_order_type='SO') AND (shiphead_order_id=pSoheadid) ); END IF; END IF; -- Get the earliest schedule date for this order. SELECT MIN(coitem_scheddate) INTO _schedDate FROM coitem WHERE ((coitem_status <> 'X') AND (coitem_cohead_id=pSoheadid)); IF (_schedDate IS NULL) THEN _schedDate := _shipDate; END IF; -- Find a Shipping-Entered freight charge SELECT SUM(currToCurr(shiphead_freight_curr_id, _cohead.cohead_curr_id, shiphead_freight, CURRENT_DATE)), shiphead_shipvia INTO _freight, _shipVia FROM ( SELECT shiphead_id, shiphead_freight_curr_id, shiphead_freight, shiphead_shipvia FROM shiphead JOIN shipitem ON (shipitem_shiphead_id=shiphead_id AND NOT shipitem_invoiced) WHERE ((shiphead_order_type='SO') AND (shiphead_order_id=pSoheadid)) GROUP BY shiphead_id, shiphead_freight_curr_id, shiphead_freight, shiphead_shipvia) AS data GROUP BY shiphead_shipvia; -- Nope, use the cohead freight charge IF (_freight IS NULL) THEN _freight := _cohead.cohead_freight; END IF; -- Finally, look for a Shipping-Entered Ship Via SELECT shiphead_shipvia INTO _shipVia FROM shiphead, shipitem WHERE ( (shipitem_shiphead_id=shiphead_id) AND (NOT shipitem_invoiced) AND (shiphead_order_type='SO') AND (shiphead_order_id=pSoheadid) ) LIMIT 1; IF (NOT FOUND) THEN _shipVia := _cohead.cohead_shipvia; END IF; --Determine any tax SELECT getFreightTaxTypeId() INTO _freighttypeid; SELECT SUM(COALESCE(taxdetail_tax, 0.00)) INTO _tax FROM calculatetaxdetail(_cohead.cohead_taxzone_id, _freighttypeid, _cohead.cohead_orderdate,_cohead.cohead_curr_id, _freight); -- Determine if we are using the _shipDate or _schedDate or current_date for the _invcDate IF( fetchMetricText('InvoiceDateSource')='scheddate') THEN _invcDate := _schedDate; ELSIF( fetchMetricText('InvoiceDateSource')='shipdate') THEN _invcDate := _shipDate; ELSE _invcDate := current_date; END IF; INSERT INTO cobmisc ( cobmisc_id, cobmisc_cohead_id, cobmisc_shipvia, cobmisc_freight, cobmisc_misc, cobmisc_payment ,cobmisc_notes,cobmisc_shipdate ,cobmisc_invcdate,cobmisc_posted ,cobmisc_misc_accnt_id ,cobmisc_misc_descrip,cobmisc_closeorder,cobmisc_curr_id ,cobmisc_taxtype_id,cobmisc_taxzone_id ) SELECT _cobmiscid,_cohead.cohead_id,_shipVia,_freight, CASE WHEN (_cohead.cohead_misc - _miscApplied = 0.0) THEN 0.0 ELSE (_cohead.cohead_misc - _miscApplied) END,0, _cohead.cohead_ordercomments,_shipDate,_invcDate,FALSE,_cohead.cohead_misc_accnt_id, _cohead.cohead_misc_descrip,NOT(cust_backorder),_cohead.cohead_curr_id, _cohead.cohead_taxtype_id,_cohead.cohead_taxzone_id FROM custinfo WHERE (cust_id=_cohead.cohead_cust_id); RETURN _cobmiscid; END; $_$; ALTER FUNCTION public.createbillingheader(integer) OWNER TO admin; -- -- Name: createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pBomitemid ALIAS FOR $1; pParentItemid ALIAS FOR $2; pComponentItemid ALIAS FOR $3; pSeqNumber ALIAS FOR $4; pIssueMethod ALIAS FOR $5; pUomId ALIAS FOR $6; pQtyPer ALIAS FOR $7; pScrap ALIAS FOR $8; pEffective ALIAS FOR $9; pExpires ALIAS FOR $10; pCreateWo ALIAS FOR $11; pBOOItemseqid ALIAS FOR $12; pSchedAtWooper ALIAS FOR $13; pECN ALIAS FOR $14; pSubType ALIAS FOR $15; pRevisionid ALIAS FOR $16; pCharId ALIAS FOR $17; pCharVal ALIAS FOR $18; _bomworksetid INTEGER; _temp INTEGER; _bomitemid INTEGER; BEGIN SELECT createBOMItem( pBomitemid, pParentItemid, pComponentItemid, pSeqNumber, pIssueMethod, pUomId, pQtyPer, pScrap, pEffective, pExpires, pCreateWo, pBOOItemseqid, pSchedAtWooper, pECN, pSubType, pRevisionid, pCharId, pCharVal, NULL, NULL ) INTO _bomitemid; RETURN _bomitemid; END; $_$; ALTER FUNCTION public.createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text) OWNER TO admin; -- -- Name: createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pBomitemid ALIAS FOR $1; pParentItemid ALIAS FOR $2; pComponentItemid ALIAS FOR $3; pSeqNumber ALIAS FOR $4; pIssueMethod ALIAS FOR $5; pUomId ALIAS FOR $6; pQtyPer ALIAS FOR $7; pScrap ALIAS FOR $8; pEffective ALIAS FOR $9; pExpires ALIAS FOR $10; pCreateWo ALIAS FOR $11; pBOOItemseqid ALIAS FOR $12; pSchedAtWooper ALIAS FOR $13; pECN ALIAS FOR $14; pSubType ALIAS FOR $15; pRevisionid ALIAS FOR $16; pCharId ALIAS FOR $17; pCharVal ALIAS FOR $18; pNotes ALIAS FOR $19; pRef ALIAS FOR $20; _bomworksetid INTEGER; _temp INTEGER; BEGIN -- Make sure that the parent and component are not the same IF (pParentItemid = pComponentItemid) THEN RETURN -1; END IF; -- Make sure that the parent is not used in the component at some level IF ( SELECT (item_type IN ('M', 'F')) FROM item WHERE (item_id=pComponentItemid) ) THEN SELECT indentedWhereUsed(pParentItemid) INTO _bomworksetid; SELECT bomwork_id INTO _temp FROM bomwork WHERE ( (bomwork_set_id=_bomworksetid) AND (bomwork_item_id=pComponentItemid) ) LIMIT 1; IF (FOUND) THEN PERFORM deleteBOMWorkset(_bomworksetid); RETURN -2; END IF; END IF; PERFORM deleteBOMWorkset(_bomworksetid); -- Create the BOM Item INSERT INTO bomitem ( bomitem_id, bomitem_parent_item_id, bomitem_item_id, bomitem_seqnumber, bomitem_issuemethod, bomitem_uom_id, bomitem_qtyper, bomitem_scrap, bomitem_effective, bomitem_expires, bomitem_createwo, bomitem_booitem_seq_id, bomitem_schedatwooper, bomitem_ecn, bomitem_subtype, bomitem_moddate, bomitem_rev_id, bomitem_char_id, bomitem_value, bomitem_notes, bomitem_ref ) VALUES ( pBomitemid, pParentItemid, pComponentItemid, pSeqNumber, pIssueMethod, pUomId, pQtyPer, pScrap, pEffective, pExpires, pCreateWo, pBOOItemseqid, COALESCE(pSchedAtWooper, FALSE), pECN, pSubType, CURRENT_DATE, pRevisionid, pCharId,pCharVal,pNotes, pRef ); RETURN pBomitemid; END; $_$; ALTER FUNCTION public.createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text) OWNER TO admin; -- -- Name: createbomitem(integer, integer, integer, character, integer, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createbomitem(integer, integer, integer, character, integer, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pBomitemid ALIAS FOR $1; pParentItemid ALIAS FOR $2; pComponentItemid ALIAS FOR $3; pIssueMethod ALIAS FOR $4; pUomId ALIAS FOR $5; pQtyPer ALIAS FOR $6; pScrap ALIAS FOR $7; pEffective ALIAS FOR $8; pExpires ALIAS FOR $9; pCreateWo ALIAS FOR $10; pBOOItemseqid ALIAS FOR $11; pSchedAtWooper ALIAS FOR $12; pECN ALIAS FOR $13; pSubType ALIAS FOR $14; pRevisionid ALIAS FOR $15; pCharId ALIAS FOR $16; pCharVal ALIAS FOR $17; pNotes ALIAS FOR $18; pRef ALIAS FOR $19; _seqNumber INTEGER; _bomitemid INTEGER; BEGIN -- Grab the next Sequence Number, if any SELECT MAX(bomitem_seqnumber) INTO _seqNumber FROM bomitem(pParentItemid,pRevisionid); IF (_seqNumber IS NOT NULL) THEN _seqNumber := (_seqNumber + 10); ELSE _seqNumber := 10; END IF; SELECT createBOMItem( pBomitemid, pParentItemid, pComponentItemid, _seqNumber, pIssueMethod, pUomId, pQtyPer, pScrap, pEffective, pExpires, pCreateWo, pBOOItemseqid, pSchedAtWooper, pECN, pSubType, pRevisionid, pCharId, pCharVal, pNotes, pRef ) INTO _bomitemid; RETURN _bomitemid; END; $_$; ALTER FUNCTION public.createbomitem(integer, integer, integer, character, integer, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text) OWNER TO admin; -- -- Name: createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBomitemid ALIAS FOR $1; pParentItemid ALIAS FOR $2; pComponentItemid ALIAS FOR $3; pSeqNumber ALIAS FOR $4; pIssueMethod ALIAS FOR $5; pUomId ALIAS FOR $6; pQtyFxd ALIAS FOR $7; pQtyPer ALIAS FOR $8; pScrap ALIAS FOR $9; pEffective ALIAS FOR $10; pExpires ALIAS FOR $11; pCreateWo ALIAS FOR $12; pBOOItemseqid ALIAS FOR $13; pSchedAtWooper ALIAS FOR $14; pECN ALIAS FOR $15; pSubType ALIAS FOR $16; pRevisionid ALIAS FOR $17; pCharId ALIAS FOR $18; pCharVal ALIAS FOR $19; pNotes ALIAS FOR $20; pRef ALIAS FOR $21; _bomworksetid INTEGER; _temp INTEGER; BEGIN -- Make sure that the parent and component are not the same IF (pParentItemid = pComponentItemid) THEN RETURN -1; END IF; -- Make sure that the parent is not used in the component at some level IF ( SELECT (item_type IN ('M', 'F')) FROM item WHERE (item_id=pComponentItemid) ) THEN SELECT indentedWhereUsed(pParentItemid) INTO _bomworksetid; SELECT bomwork_id INTO _temp FROM bomwork WHERE ( (bomwork_set_id=_bomworksetid) AND (bomwork_item_id=pComponentItemid) ) LIMIT 1; IF (FOUND) THEN PERFORM deleteBOMWorkset(_bomworksetid); RETURN -2; END IF; END IF; PERFORM deleteBOMWorkset(_bomworksetid); -- Create the BOM Item INSERT INTO bomitem ( bomitem_id, bomitem_parent_item_id, bomitem_item_id, bomitem_seqnumber, bomitem_issuemethod, bomitem_uom_id, bomitem_qtyfxd, bomitem_qtyper, bomitem_scrap, bomitem_effective, bomitem_expires, bomitem_createwo, bomitem_booitem_seq_id, bomitem_schedatwooper, bomitem_ecn, bomitem_subtype, bomitem_moddate, bomitem_rev_id, bomitem_char_id, bomitem_value, bomitem_notes, bomitem_ref ) VALUES ( pBomitemid, pParentItemid, pComponentItemid, pSeqNumber, pIssueMethod, pUomId, pQtyFxd, pQtyPer, pScrap, pEffective, pExpires, pCreateWo, pBOOItemseqid, COALESCE(pSchedAtWooper, FALSE), pECN, pSubType, CURRENT_DATE, pRevisionid, pCharId,pCharVal,pNotes, pRef ); RETURN pBomitemid; END; $_$; ALTER FUNCTION public.createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text) OWNER TO admin; -- -- Name: createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBomitemid ALIAS FOR $1; pParentItemid ALIAS FOR $2; pComponentItemid ALIAS FOR $3; pSeqNumber ALIAS FOR $4; pIssueMethod ALIAS FOR $5; pUomId ALIAS FOR $6; pQtyFxd ALIAS FOR $7; pQtyPer ALIAS FOR $8; pScrap ALIAS FOR $9; pEffective ALIAS FOR $10; pExpires ALIAS FOR $11; pCreateWo ALIAS FOR $12; pBOOItemseqid ALIAS FOR $13; pSchedAtWooper ALIAS FOR $14; pECN ALIAS FOR $15; pSubType ALIAS FOR $16; pRevisionid ALIAS FOR $17; pCharId ALIAS FOR $18; pCharVal ALIAS FOR $19; _bomworksetid INTEGER; _temp INTEGER; _bomitemid INTEGER; BEGIN SELECT createBOMItem( pBomitemid, pParentItemid, pComponentItemid, pSeqNumber, pIssueMethod, pUomId, pQtyFxd, pQtyPer, pScrap, pEffective, pExpires, pCreateWo, pBOOItemseqid, pSchedAtWooper, pECN, pSubType, pRevisionid, pCharId, pCharVal, NULL, NULL ) INTO _bomitemid; RETURN _bomitemid; END; $_$; ALTER FUNCTION public.createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text) OWNER TO admin; -- -- Name: createbomitem(integer, integer, integer, character, integer, numeric, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createbomitem(integer, integer, integer, character, integer, numeric, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBomitemid ALIAS FOR $1; pParentItemid ALIAS FOR $2; pComponentItemid ALIAS FOR $3; pIssueMethod ALIAS FOR $4; pUomId ALIAS FOR $5; pQtyFxd ALIAS FOR $6; pQtyPer ALIAS FOR $7; pScrap ALIAS FOR $8; pEffective ALIAS FOR $9; pExpires ALIAS FOR $10; pCreateWo ALIAS FOR $11; pBOOItemseqid ALIAS FOR $12; pSchedAtWooper ALIAS FOR $13; pECN ALIAS FOR $14; pSubType ALIAS FOR $15; pRevisionid ALIAS FOR $16; pCharId ALIAS FOR $17; pCharVal ALIAS FOR $18; pNotes ALIAS FOR $19; pRef ALIAS FOR $20; _seqNumber INTEGER; _bomitemid INTEGER; BEGIN -- Grab the next Sequence Number, if any SELECT MAX(bomitem_seqnumber) INTO _seqNumber FROM bomitem(pParentItemid,pRevisionid); IF (_seqNumber IS NOT NULL) THEN _seqNumber := (_seqNumber + 10); ELSE _seqNumber := 10; END IF; SELECT createBOMItem( pBomitemid, pParentItemid, pComponentItemid, _seqNumber, pIssueMethod, pUomId, pQtyFxd, pQtyPer, pScrap, pEffective, pExpires, pCreateWo, pBOOItemseqid, pSchedAtWooper, pECN, pSubType, pRevisionid, pCharId, pCharVal, pNotes, pRef ) INTO _bomitemid; RETURN _bomitemid; END; $_$; ALTER FUNCTION public.createbomitem(integer, integer, integer, character, integer, numeric, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text) OWNER TO admin; -- -- Name: createcheck(integer, text, integer, date, numeric, integer, integer, integer, text, text, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createcheck(integer, text, integer, date, numeric, integer, integer, integer, text, text, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankaccntid ALIAS FOR $1; pRecipType ALIAS FOR $2; pRecipId ALIAS FOR $3; pCheckDate ALIAS FOR $4; pAmount ALIAS FOR $5; pCurrid ALIAS FOR $6; pExpcatid ALIAS FOR $7; _journalNumber INTEGER := $8; pFor ALIAS FOR $9; pNotes ALIAS FOR $10; pMisc ALIAS FOR $11; _checkid INTEGER; BEGIN SELECT createCheck(pBankaccntid,pRecipType,pRecipId,pCheckDate,pAmount,pCurrid,pExpcatid,_journalNumber,pFor,pNotes,pMisc,NULL) INTO _checkid; RETURN _checkid; END; $_$; ALTER FUNCTION public.createcheck(integer, text, integer, date, numeric, integer, integer, integer, text, text, boolean) OWNER TO admin; -- -- Name: createcheck(integer, text, integer, date, numeric, integer, integer, integer, text, text, boolean, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createcheck(integer, text, integer, date, numeric, integer, integer, integer, text, text, boolean, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankaccntid ALIAS FOR $1; pRecipType ALIAS FOR $2; pRecipId ALIAS FOR $3; pCheckDate ALIAS FOR $4; pAmount ALIAS FOR $5; pCurrid ALIAS FOR $6; pExpcatid ALIAS FOR $7; _journalNumber INTEGER := $8; pFor ALIAS FOR $9; pNotes ALIAS FOR $10; pMisc ALIAS FOR $11; pAropenid ALIAS FOR $12; _checkid INTEGER; _check_curr_rate NUMERIC; _bankaccnt_currid INTEGER; BEGIN SELECT bankaccnt_curr_id,currRate(bankaccnt_curr_id,pCheckDate) INTO _bankaccnt_currid, _check_curr_rate FROM bankaccnt WHERE bankaccnt_id = pBankaccntid; IF (NOT FOUND) THEN RETURN -1; END IF; IF (pRecipType NOT IN ('C', 'T', 'V')) THEN RETURN -2; END IF; IF (pCheckDate IS NULL) THEN RETURN -3; END IF; IF (pAmount <= 0) THEN RETURN -4; END IF; IF (pCurrid IS NULL OR NOT EXISTS(SELECT * FROM curr_symbol WHERE (curr_id=pCurrid))) THEN RETURN -5; END IF; IF (pExpcatid IS NOT NULL AND NOT EXISTS(SELECT * FROM expcat WHERE (expcat_id=pExpcatid))) THEN RETURN -6; END IF; -- Do not assign Journal Number until check is posted -- if (_journalNumber IS NULL) THEN -- _journalNumber := fetchJournalNumber('AP-CK'); -- END IF; _checkid := NEXTVAL('checkhead_checkhead_id_seq'); INSERT INTO checkhead ( checkhead_id, checkhead_recip_type, checkhead_recip_id, checkhead_bankaccnt_id, checkhead_number, checkhead_amount, checkhead_checkdate, checkhead_misc, checkhead_expcat_id, checkhead_journalnumber, checkhead_for, checkhead_notes, checkhead_curr_id ) VALUES ( _checkid, pRecipType, pRecipId, pBankaccntid, -1, --fetchNextCheckNumber(pBankaccntid), currToCurr(pCurrid, _bankaccnt_currid, pAmount, pCheckDate), pCheckDate, COALESCE(pMisc, FALSE), pExpcatid, _journalNumber, pFor, pNotes, _bankaccnt_currid ); IF (pAropenid IS NOT NULL AND fetchmetricbool('EnableReturnAuth')) THEN INSERT INTO checkitem (checkitem_checkhead_id,checkitem_amount,checkitem_discount,checkitem_ponumber, checkitem_aropen_id,checkitem_docdate,checkitem_curr_id,checkitem_cmnumber, checkitem_ranumber, checkitem_curr_rate) SELECT _checkid, currToCurr(checkhead_curr_id, aropen_curr_id, pAmount, checkhead_checkdate), 0,cmhead_custponumber,pAropenid,aropen_docdate,aropen_curr_id,cmhead_number,rahead_number, 1 / (_check_curr_rate / aropen_curr_rate) FROM checkhead, aropen LEFT OUTER JOIN cmhead ON (aropen_docnumber=cmhead_number) LEFT OUTER JOIN rahead ON (cmhead_rahead_id=rahead_id) WHERE ((aropen_id=pAropenid) AND (checkhead_id=_checkid)); ELSIF (pAropenid IS NOT NULL) THEN INSERT INTO checkitem (checkitem_checkhead_id,checkitem_amount,checkitem_discount,checkitem_ponumber, checkitem_aropen_id,checkitem_docdate,checkitem_curr_id,checkitem_cmnumber, checkitem_ranumber, checkitem_curr_rate) SELECT _checkid,currToCurr(checkhead_curr_id, aropen_curr_id, pAmount, checkhead_checkdate), 0,cmhead_custponumber,pAropenid,aropen_docdate,aropen_curr_id,cmhead_number,NULL, 1 / (_check_curr_rate / aropen_curr_rate) FROM checkhead, aropen LEFT OUTER JOIN cmhead ON (aropen_docnumber=cmhead_number) WHERE ((aropen_id=pAropenid) AND (checkhead_id=_checkid)); END IF; RETURN _checkid; END; $_$; ALTER FUNCTION public.createcheck(integer, text, integer, date, numeric, integer, integer, integer, text, text, boolean, integer) OWNER TO admin; -- -- Name: createchecks(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createchecks(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankaccntid ALIAS FOR $1; pCheckDate ALIAS FOR $2; _v RECORD; _r RECORD; _c RECORD; _checkid INTEGER; _counter INTEGER := 0; _check_curr_id INTEGER; _check_curr_rate NUMERIC; BEGIN SELECT bankaccnt_curr_id, currRate(bankaccnt_curr_id, pCheckDate) INTO _check_curr_id, _check_curr_rate FROM bankaccnt WHERE ( bankaccnt_id = pBankaccntid ); FOR _v IN SELECT DISTINCT vend_id, vend_number, vend_name FROM apselect JOIN apopen ON (apselect_apopen_id=apopen_id) JOIN vendinfo ON (apopen_vend_id=vend_id) WHERE ((apselect_bankaccnt_id=pBankaccntid) AND (apselect_date <= pCheckDate)) LOOP -- if we owe this vendor anything (we might not) then create a check IF ((SELECT SUM(apselect_amount * _check_curr_rate / apopen_curr_rate) FROM apselect, apopen WHERE ((apselect_apopen_id=apopen_id) AND (apopen_vend_id=_v.vend_id) AND (apselect_bankaccnt_id=pBankaccntid)) ) > 0) THEN -- 0.01 is a temporary amount; we''ll update the check amount later _checkid := createCheck(pBankaccntid, 'V', _v.vend_id, pCheckDate, 0.01, _check_curr_id, NULL, NULL, '', '', FALSE); FOR _r IN SELECT apopen_id, apselect_id, apopen_docnumber, apopen_invcnumber, apopen_ponumber, apopen_docdate, apselect_curr_id, apselect_amount, apselect_discount FROM apselect, apopen WHERE ( (apselect_apopen_id=apopen_id) AND (apopen_vend_id=_v.vend_id) AND (apselect_bankaccnt_id=pBankaccntid) ) LOOP INSERT INTO checkitem ( checkitem_checkhead_id, checkitem_apopen_id, checkitem_vouchernumber, checkitem_invcnumber, checkitem_ponumber, checkitem_amount, checkitem_discount, checkitem_docdate, checkitem_curr_id, checkitem_curr_rate ) VALUES ( _checkid, _r.apopen_id, _r.apopen_docnumber, _r.apopen_invcnumber, _r.apopen_ponumber, _r.apselect_amount, _r.apselect_discount, _r.apopen_docdate, _r.apselect_curr_id, 1 / (_check_curr_rate / currRate(_r.apselect_curr_id, pCheckdate)) ); DELETE FROM apselect WHERE (apselect_id=_r.apselect_id); END LOOP; -- one check can pay for purchases on multiple dates in multiple currencies UPDATE checkhead SET checkhead_amount = (SELECT SUM(checkitem_amount / checkitem_curr_rate) FROM checkitem WHERE (checkitem_checkhead_id=checkhead_id)) WHERE (checkhead_id=_checkid); _counter := (_counter + 1); END IF; END LOOP; RETURN _counter; END; $_$; ALTER FUNCTION public.createchecks(integer, date) OWNER TO admin; -- -- Name: createcounttag(integer, text, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createcounttag(integer, text, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pComments ALIAS FOR $2; pPriority ALIAS FOR $3; pFreeze ALIAS FOR $4; BEGIN RETURN createCountTag(pItemsiteid, pComments, pPriority, pFreeze, NULL); END; $_$; ALTER FUNCTION public.createcounttag(integer, text, boolean, boolean) OWNER TO admin; -- -- Name: createcounttag(integer, text, boolean, boolean, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createcounttag(integer, text, boolean, boolean, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pComments ALIAS FOR $2; pPriority ALIAS FOR $3; pFreeze ALIAS FOR $4; pLocationid ALIAS FOR $5; _invcntid INTEGER; _whs RECORD; _type CHARACTER; _controlmethod CHARACTER; BEGIN SELECT item_type, itemsite_controlmethod INTO _type, _controlmethod FROM itemsite, item WHERE ((itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid)); IF (NOT FOUND OR _type IN ('F', 'R', 'L','J') OR _controlmethod = 'N') THEN RETURN 0; -- We simply do not do these item types. END IF; -- Test for existing tags IF (pLocationid IS NULL) THEN SELECT invcnt_id INTO _invcntid FROM invcnt WHERE ((NOT invcnt_posted) AND (invcnt_location_id IS NULL) AND (invcnt_itemsite_id=pItemsiteid)); ELSE SELECT invcnt_id INTO _invcntid FROM invcnt WHERE ((NOT invcnt_posted) AND (invcnt_itemsite_id=pItemsiteid) AND (invcnt_location_id=pLocationid)); END IF; IF (NOT FOUND) THEN SELECT NEXTVAL('invcnt_invcnt_id_seq') INTO _invcntid; SELECT whsinfo.* INTO _whs FROM whsinfo, itemsite WHERE ((warehous_id=itemsite_warehous_id) AND (itemsite_id=pItemsiteid)); INSERT INTO invcnt ( invcnt_id, invcnt_itemsite_id, invcnt_tagdate, invcnt_tagnumber, invcnt_tag_username, invcnt_posted, invcnt_priority, invcnt_comments, invcnt_location_id ) VALUES ( _invcntid, pItemsiteid, CURRENT_TIMESTAMP, (_whs.warehous_counttag_prefix || _whs.warehous_counttag_number::TEXT), getEffectiveXtUser(), FALSE, pPriority, pComments, pLocationid ); UPDATE whsinfo SET warehous_counttag_number=(warehous_counttag_number + 1) WHERE (warehous_id=_whs.warehous_id); IF (pFreeze) THEN UPDATE itemsite SET itemsite_freeze=TRUE WHERE (itemsite_id=pItemsiteid); END IF; END IF; RETURN _invcntid; END; $_$; ALTER FUNCTION public.createcounttag(integer, text, boolean, boolean, integer) OWNER TO admin; -- -- Name: createcustomer(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createcustomer(integer) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pcrmacctId ALIAS FOR $1; _custId INTEGER := 0; BEGIN IF (pcrmacctId < 0 OR pcrmacctId IS NULL) THEN RETURN -1; END IF; SELECT crmacct_cust_id INTO _custId FROM crmacct WHERE crmacct_id = pcrmacctId; IF (_custId IS NOT NULL AND _custId <= 0) THEN RETURN -2; END IF; INSERT INTO _customer (active, customer_number, customer_name) SELECT crmacct_active, crmacct_number, crmacct_name FROM crmacct WHERE crmacct_id = pcrmacctId; _custId := CURRVAL('cust_cust_id_seq'); UPDATE crmacct SET crmacct_prospect_id = NULL, crmacct_cust_id = _custId WHERE crmacct_id = pcrmacctId; RETURN _custId; END; $_$; ALTER FUNCTION public.createcustomer(integer) OWNER TO admin; -- -- Name: createcyclecountsbywarehouse(integer, integer, text, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createcyclecountsbywarehouse(integer, integer, text, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pMaxNumber ALIAS FOR $2; pComments ALIAS FOR $3; pPriority ALIAS FOR $4; pFreeze ALIAS FOR $5; BEGIN RETURN createCycleCountsByWarehouse(pWarehousid, pMaxNumber, pComments, pPriority, pFreeze, NULL, FALSE); END; $_$; ALTER FUNCTION public.createcyclecountsbywarehouse(integer, integer, text, boolean, boolean) OWNER TO admin; -- -- Name: createcyclecountsbywarehouse(integer, integer, integer, text, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createcyclecountsbywarehouse(integer, integer, integer, text, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pClasscodeid ALIAS FOR $2; pMaxNumber ALIAS FOR $3; pComments ALIAS FOR $4; pPriority ALIAS FOR $5; pFreeze ALIAS FOR $6; BEGIN RETURN createCycleCountsByWarehouseByClassCode(pWarehousid, pClasscodeid, pMaxNumber, pComments, pPriority, pFreeze, NULL, FALSE); END; $_$; ALTER FUNCTION public.createcyclecountsbywarehouse(integer, integer, integer, text, boolean, boolean) OWNER TO admin; -- -- Name: createcyclecountsbywarehouse(integer, text, integer, text, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createcyclecountsbywarehouse(integer, text, integer, text, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pClasscodePattern ALIAS FOR $2; pMaxNumber ALIAS FOR $3; pComments ALIAS FOR $4; pPriority ALIAS FOR $5; pFreeze ALIAS FOR $6; BEGIN RETURN createCycleCountsByWarehouseByClassCode(pWarehousid, pClasscodePattern, pMaxNumber, pComments, pPriority, pFreeze, NULL, FALSE); END; $_$; ALTER FUNCTION public.createcyclecountsbywarehouse(integer, text, integer, text, boolean, boolean) OWNER TO admin; -- -- Name: createcyclecountsbywarehouse(integer, integer, text, boolean, boolean, integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createcyclecountsbywarehouse(integer, integer, text, boolean, boolean, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pMaxNumber ALIAS FOR $2; pComments ALIAS FOR $3; pPriority ALIAS FOR $4; pFreeze ALIAS FOR $5; pLocationid ALIAS FOR $6; pIgnoreZeroBalance ALIAS FOR $7; _itemsites RECORD; _returnVal INTEGER; BEGIN IF (pLocationid IS NULL) THEN FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, itemsite_qtyonhand FROM itemsite, item WHERE ( (itemsite_active) AND (itemsite_item_id=item_id) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND (itemsite_id NOT IN ( SELECT invcnt_itemsite_id FROM invcnt, itemsite WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_warehous_id=pWarehousid) AND (invcnt_location_id IS NULL) AND (NOT invcnt_posted) ) ) ) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND ((pLocationid IS NULL) OR (validLocation(pLocationid, itemsite_id))) AND (itemsite_warehous_id=pWarehousid) ) ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass, item_number LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; ELSE FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, SUM(itemloc_qty) FROM itemsite, itemloc WHERE ( (itemsite_active) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND (pLocationid = itemloc_location_id) AND (itemloc_itemsite_id = itemsite_id) AND (itemsite_warehous_id=pWarehousid) ) GROUP BY itemsite_id, itemsite_warehous_id, itemsite_datelastcount, itemsite_cyclecountfreq, itemsite_abcclass ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; END IF; RETURN 0; END; $_$; ALTER FUNCTION public.createcyclecountsbywarehouse(integer, integer, text, boolean, boolean, integer, boolean) OWNER TO admin; -- -- Name: createcyclecountsbywarehousebyclasscode(integer, integer, integer, text, boolean, boolean, integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createcyclecountsbywarehousebyclasscode(integer, integer, integer, text, boolean, boolean, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pClasscodeid ALIAS FOR $2; pMaxNumber ALIAS FOR $3; pComments ALIAS FOR $4; pPriority ALIAS FOR $5; pFreeze ALIAS FOR $6; pLocationid ALIAS FOR $7; pIgnoreZeroBalance ALIAS FOR $8; _itemsites RECORD; _returnVal INTEGER; BEGIN IF (pLocationid IS NULL) THEN FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, itemsite_qtyonhand FROM itemsite, item WHERE ( (itemsite_active) AND (itemsite_item_id=item_id) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND (itemsite_id NOT IN ( SELECT invcnt_itemsite_id FROM invcnt, itemsite WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_warehous_id=pWarehousid) AND (invcnt_location_id IS NULL) AND (NOT invcnt_posted) ) ) ) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND ((pLocationid IS NULL) OR (validLocation(pLocationid, itemsite_id))) AND (itemsite_warehous_id=pWarehousid) AND (item_classcode_id=pClasscodeid) ) ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass, item_number LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; ELSE FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, SUM(itemloc_qty) FROM itemsite, item, itemloc WHERE ( (itemsite_active) AND (itemsite_item_id=item_id) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND (pLocationid = itemloc_location_id) AND (itemloc_itemsite_id = itemsite_id) AND (itemsite_warehous_id=pWarehousid) AND (item_classcode_id=pClasscodeid) ) GROUP BY itemsite_id, itemsite_warehous_id, itemsite_datelastcount, itemsite_cyclecountfreq, itemsite_abcclass ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; END IF; RETURN 0; END; $_$; ALTER FUNCTION public.createcyclecountsbywarehousebyclasscode(integer, integer, integer, text, boolean, boolean, integer, boolean) OWNER TO admin; -- -- Name: createcyclecountsbywarehousebyclasscode(integer, text, integer, text, boolean, boolean, integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createcyclecountsbywarehousebyclasscode(integer, text, integer, text, boolean, boolean, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pClasscodePattern ALIAS FOR $2; pMaxNumber ALIAS FOR $3; pComments ALIAS FOR $4; pPriority ALIAS FOR $5; pFreeze ALIAS FOR $6; pLocationid ALIAS FOR $7; pIgnoreZeroBalance ALIAS FOR $8; _itemsites RECORD; _returnVal INTEGER; BEGIN IF (pLocationid IS NULL) THEN FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, itemsite_qtyonhand FROM itemsite, item, classcode WHERE ( (itemsite_active) AND (itemsite_item_id=item_id) AND (item_classcode_id=classcode_id) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND (itemsite_id NOT IN ( SELECT invcnt_itemsite_id FROM invcnt, itemsite WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_warehous_id=pWarehousid) AND (invcnt_location_id IS NULL) AND (NOT invcnt_posted) ) ) ) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND ((pLocationid IS NULL) OR (validLocation(pLocationid, itemsite_id))) AND (itemsite_warehous_id=pWarehousid) AND (classcode_code ~ pClasscodePattern) ) ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass, item_number LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; ELSE FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, SUM(itemloc_qty) FROM itemsite, item, classcode, itemloc WHERE ( (itemsite_active) AND (itemsite_item_id=item_id) AND (item_classcode_id=classcode_id) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND (pLocationid = itemloc_location_id) AND (itemloc_itemsite_id = itemsite_id) AND (itemsite_warehous_id=pWarehousid) AND (classcode_code ~ pClasscodePattern) ) GROUP BY itemsite_id, itemsite_warehous_id, itemsite_datelastcount, itemsite_cyclecountfreq, itemsite_abcclass ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; END IF; RETURN 0; END; $_$; ALTER FUNCTION public.createcyclecountsbywarehousebyclasscode(integer, text, integer, text, boolean, boolean, integer, boolean) OWNER TO admin; -- -- Name: createcyclecountsbywarehousebyplannercode(integer, text, integer, text, boolean, boolean, integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createcyclecountsbywarehousebyplannercode(integer, text, integer, text, boolean, boolean, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pPlancodePattern ALIAS FOR $2; pMaxNumber ALIAS FOR $3; pComments ALIAS FOR $4; pPriority ALIAS FOR $5; pFreeze ALIAS FOR $6; pLocationid ALIAS FOR $7; pIgnoreZeroBalance ALIAS FOR $8; _itemsites RECORD; _returnVal INTEGER; BEGIN IF (pLocationid IS NULL) THEN FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, itemsite_qtyonhand FROM itemsite, item, plancode WHERE ( (itemsite_active) AND (itemsite_item_id=item_id) AND (itemsite_plancode_id=plancode_id) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND (itemsite_id NOT IN ( SELECT invcnt_itemsite_id FROM invcnt, itemsite WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_warehous_id=pWarehousid) AND (invcnt_location_id IS NULL) AND (NOT invcnt_posted) ) ) ) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND ((pLocationid IS NULL) OR (validLocation(pLocationid, itemsite_id))) AND (itemsite_warehous_id=pWarehousid) AND (plancode_code ~ pPlancodePattern) ) ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass, item_number LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; ELSE FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, SUM(itemloc_qty) FROM itemsite, plancode, itemloc WHERE ( (itemsite_active) AND (itemsite_plancode_id=plancode_id) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND (pLocationid = itemloc_location_id) AND (itemloc_itemsite_id = itemsite_id) AND (itemsite_warehous_id=pWarehousid) AND (plancode_code ~ pPlancodePattern) ) GROUP BY itemsite_id, itemsite_warehous_id, itemsite_datelastcount, itemsite_cyclecountfreq, itemsite_abcclass ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; END IF; RETURN 0; END; $_$; ALTER FUNCTION public.createcyclecountsbywarehousebyplannercode(integer, text, integer, text, boolean, boolean, integer, boolean) OWNER TO admin; -- -- Name: createcyclecountsbywarehousebyplannercode(integer, integer, integer, text, boolean, boolean, integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createcyclecountsbywarehousebyplannercode(integer, integer, integer, text, boolean, boolean, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pPlancodeid ALIAS FOR $2; pMaxNumber ALIAS FOR $3; pComments ALIAS FOR $4; pPriority ALIAS FOR $5; pFreeze ALIAS FOR $6; pLocationid ALIAS FOR $7; pIgnoreZeroBalance ALIAS FOR $8; _itemsites RECORD; _returnVal INTEGER; BEGIN IF (pLocationid IS NULL) THEN FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, itemsite_qtyonhand FROM itemsite, item WHERE ( (itemsite_active) AND (itemsite_item_id=item_id) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND (itemsite_id NOT IN ( SELECT invcnt_itemsite_id FROM invcnt, itemsite WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_warehous_id=pWarehousid) AND (invcnt_location_id IS NULL) AND (NOT invcnt_posted) ) ) ) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND ((pLocationid IS NULL) OR (validLocation(pLocationid, itemsite_id))) AND (itemsite_warehous_id=pWarehousid) AND (itemsite_plancode_id=pPlancodeid) ) ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass, item_number LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; ELSE FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, SUM(itemloc_qty) FROM itemsite, itemloc WHERE ( (itemsite_active) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND (itemloc_itemsite_id = itemsite_id) AND (itemsite_warehous_id=pWarehousid) AND (pLocationid = itemloc_location_id) AND (itemsite_plancode_id=pPlancodeid) ) GROUP BY itemsite_id, itemsite_warehous_id, itemsite_datelastcount, itemsite_cyclecountfreq, itemsite_abcclass ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; END IF; RETURN 0; END; $_$; ALTER FUNCTION public.createcyclecountsbywarehousebyplannercode(integer, integer, integer, text, boolean, boolean, integer, boolean) OWNER TO admin; -- -- Name: createfile(text, text, bytea); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createfile(text, text, bytea) RETURNS integer LANGUAGE plpgsql AS $_$ declare pTitle ALIAS FOR $1; pDescription ALIAS FOR $2; pStream ALIAS FOR $3; _id integer; begin _id := nextval('file_file_id_seq'); insert into file (file_id, file_title, file_descrip, file_stream) values (_id, pTitle, pDescription, pStream); return _id; end; $_$; ALTER FUNCTION public.createfile(text, text, bytea) OWNER TO admin; -- -- Name: createinvoice(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createinvoice(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCobmiscid ALIAS FOR $1; _invcheadid INTEGER; _invcitemid INTEGER; _qtyToInvoice NUMERIC; _r RECORD; _s RECORD; _lastlinenumber INTEGER := 1; BEGIN IF ( ( SELECT cobmisc_posted FROM cobmisc WHERE (cobmisc_id=pCobmiscid) ) ) THEN RETURN -1; END IF; SELECT NEXTVAL('invchead_invchead_id_seq') INTO _invcheadid; -- Give this selection a number if it has not been assigned one UPDATE cobmisc SET cobmisc_invcnumber=fetchInvcNumber() WHERE ( (cobmisc_invcnumber IS NULL) AND (cobmisc_id=pCobmiscid) ); -- Create the Invoice header INSERT INTO invchead ( invchead_id,invchead_cust_id,invchead_shipto_id,invchead_ordernumber,invchead_orderdate, invchead_posted,invchead_printed,invchead_invcnumber,invchead_invcdate,invchead_shipdate, invchead_ponumber,invchead_shipvia,invchead_fob,invchead_billto_name,invchead_billto_address1, invchead_billto_address2,invchead_billto_address3,invchead_billto_city,invchead_billto_state,invchead_billto_zipcode, invchead_billto_phone,invchead_billto_country,invchead_shipto_name,invchead_shipto_address1,invchead_shipto_address2, invchead_shipto_address3,invchead_shipto_city,invchead_shipto_state,invchead_shipto_zipcode,invchead_shipto_phone, invchead_shipto_country,invchead_salesrep_id,invchead_commission,invchead_terms_id,invchead_freight, invchead_misc_amount,invchead_misc_descrip,invchead_misc_accnt_id,invchead_payment, invchead_paymentref,invchead_notes,invchead_prj_id,invchead_curr_id, invchead_taxzone_id, invchead_shipchrg_id, invchead_saletype_id, invchead_shipzone_id ) SELECT _invcheadid,cohead_cust_id,cohead_shipto_id,cohead_number,cohead_orderdate, FALSE,FALSE,cobmisc_invcnumber,cobmisc_invcdate,cobmisc_shipdate, cohead_custponumber,cobmisc_shipvia,cohead_fob,cohead_billtoname,cohead_billtoaddress1, cohead_billtoaddress2,cohead_billtoaddress3,cohead_billtocity,cohead_billtostate,cohead_billtozipcode, cntct_phone AS cust_phone,cohead_billtocountry,cohead_shiptoname,cohead_shiptoaddress1,cohead_shiptoaddress2, cohead_shiptoaddress3,cohead_shiptocity,cohead_shiptostate,cohead_shiptozipcode,cohead_shipto_cntct_phone, cohead_shiptocountry,cohead_salesrep_id,COALESCE(cohead_commission,0),cohead_terms_id,cobmisc_freight, COALESCE(cobmisc_misc, 0.00),cobmisc_misc_descrip,cobmisc_misc_accnt_id,cobmisc_payment, cobmisc_paymentref,cobmisc_notes,cohead_prj_id,cobmisc_curr_id, cobmisc_taxzone_id, cohead_shipchrg_id, cohead_saletype_id, cohead_shipzone_id FROM cobmisc, cohead, custinfo LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) WHERE ( (cobmisc_cohead_id=cohead_id) AND (cohead_cust_id=cust_id) AND (cobmisc_id=pCobmiscid) ); INSERT INTO invcheadtax(taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate) SELECT _invcheadid,taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate FROM cobmisctax WHERE taxhist_parent_id = pCobmiscid AND taxhist_taxtype_id = getadjustmenttaxtypeid(); -- Create the Invoice items FOR _r IN SELECT coitem_id, coitem_linenumber, coitem_subnumber, coitem_custpn, coitem_qtyord, cobill_qty, coitem_qty_uom_id, coitem_qty_invuomratio, coitem_custprice, coitem_price, coitem_price_uom_id, coitem_price_invuomratio, coitem_memo, coitem_rev_accnt_id, itemsite_item_id, itemsite_warehous_id, cobill_taxtype_id, formatSoItemNumber(coitem_id) AS ordnumber FROM coitem, cobill, itemsite WHERE ( (cobill_coitem_id=coitem_id) AND (coitem_itemsite_id=itemsite_id) AND (cobill_cobmisc_id=pCobmiscid) ) ORDER BY coitem_linenumber, coitem_subnumber LOOP SELECT NEXTVAL('invcitem_invcitem_id_seq') INTO _invcitemid; INSERT INTO invcitem ( invcitem_id, invcitem_invchead_id, invcitem_linenumber, invcitem_item_id, invcitem_warehous_id, invcitem_custpn, invcitem_number, invcitem_descrip, invcitem_ordered, invcitem_billed, invcitem_qty_uom_id, invcitem_qty_invuomratio, invcitem_custprice, invcitem_price, invcitem_price_uom_id, invcitem_price_invuomratio, invcitem_notes, invcitem_taxtype_id, invcitem_coitem_id, invcitem_rev_accnt_id ) VALUES ( _invcitemid, _invcheadid, _lastlinenumber, _r.itemsite_item_id, _r.itemsite_warehous_id, _r.coitem_custpn, '', '', _r.coitem_qtyord, _r.cobill_qty, _r.coitem_qty_uom_id, _r.coitem_qty_invuomratio, _r.coitem_custprice, _r.coitem_price, _r.coitem_price_uom_id, _r.coitem_price_invuomratio, _r.coitem_memo, _r.cobill_taxtype_id, _r.coitem_id, _r.coitem_rev_accnt_id ); -- Find and mark any Lot/Serial invdetail records associated with this bill UPDATE invdetail SET invdetail_invcitem_id = _invcitemid WHERE (invdetail_id IN (SELECT invdetail_id FROM invhist JOIN invdetail ON (invdetail_invhist_id=invhist_id) WHERE ( (invhist_ordnumber = _r.ordnumber) AND (invhist_ordtype = 'SO') AND (invhist_transtype = 'SH') AND (invdetail_invcitem_id IS NULL) ) )); -- Mark any shipped, uninvoiced shipitems for the current coitem as invoiced _qtyToInvoice := _r.cobill_qty; FOR _s IN SELECT shipitem.*, shipitem_qty = _r.cobill_qty AS matched FROM shipitem, shiphead WHERE ((shipitem_shiphead_id=shiphead_id) AND (shipitem_orderitem_id=_r.coitem_id) AND (shiphead_shipped) AND (shiphead_order_type='SO') AND (NOT shipitem_invoiced)) ORDER BY matched DESC, shipitem_qty DESC FOR UPDATE LOOP IF (_qtyToInvoice >= _s.shipitem_qty) THEN UPDATE shipitem SET shipitem_invoiced=TRUE, shipitem_invcitem_id=_invcitemid WHERE (shipitem_id=_s.shipitem_id); _qtyToInvoice := _qtyToInvoice - _s.shipitem_qty; END IF; IF (_qtyToInvoice <= 0) THEN EXIT; END IF; END LOOP; UPDATE cobill SET cobill_invcnum=cobmisc_invcnumber, cobill_invcitem_id=invcitem_id FROM invcitem, coitem, cobmisc WHERE ((invcitem_linenumber=_lastlinenumber) AND (coitem_id=cobill_coitem_id) AND (cobmisc_id=cobill_cobmisc_id) AND (cobill_cobmisc_id=pCobmiscid) AND (invcitem_invchead_id=_invcheadid)); _lastlinenumber := _lastlinenumber + 1; END LOOP; -- Close all requested coitem's IF ( ( SELECT cobmisc_closeorder FROM cobmisc WHERE (cobmisc_id=pCobmiscid) ) ) THEN UPDATE coitem SET coitem_status='C' FROM cobmisc WHERE ( (coitem_status NOT IN ('C', 'X')) AND (coitem_cohead_id=cobmisc_cohead_id) AND (cobmisc_id=pCobmiscid) ); ELSE UPDATE coitem SET coitem_status='C' FROM cobill WHERE ( (cobill_coitem_id=coitem_id) AND (coitem_status <> 'X') AND (cobill_toclose) AND (cobill_cobmisc_id=pCobmiscid) ); END IF; -- Mark the cobmisc as posted UPDATE cobmisc SET cobmisc_posted=TRUE, cobmisc_invchead_id=_invcheadid WHERE (cobmisc_id=pCobmiscid); -- All done RETURN _invcheadid; END; $_$; ALTER FUNCTION public.createinvoice(integer) OWNER TO admin; -- -- Name: createinvoiceconsolidated(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createinvoiceconsolidated(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; _invcheadid INTEGER; _invcitemid INTEGER; _qtyToInvoice NUMERIC; _r RECORD; _s RECORD; _c RECORD; _i RECORD; _count INTEGER; _invcnumber INTEGER; _lastlinenumber INTEGER; BEGIN _count := 0; FOR _c IN SELECT min(cobmisc_id) AS cobmisc_id, count(*) AS cnt, -- there are the key values for consolidation cohead_billtoname, cohead_billtoaddress1, cohead_billtoaddress2, cohead_billtoaddress3, cohead_billtocity, cohead_billtostate, cohead_billtozipcode, cntct_phone AS cust_phone, cohead_billtocountry, cohead_salesrep_id, cohead_commission, cohead_terms_id, cobmisc_misc_accnt_id, cohead_prj_id, cobmisc_curr_id, cobmisc_taxzone_id, cohead_shipchrg_id, cohead_saletype_id, cohead_shipzone_id, -- the following are consolidated values to use in creating the header MIN(cohead_number) AS cohead_number, MIN(cohead_orderdate) AS cohead_orderdate, MIN(cobmisc_invcdate) AS cobmisc_invcdate, MIN(cobmisc_shipdate) AS cobmisc_shipdate, SUM(cobmisc_freight) AS cobmisc_freight, SUM(cobmisc_misc) AS cobmisc_misc, SUM(cobmisc_payment) AS cobmisc_payment FROM cobmisc JOIN cohead ON (cobmisc_cohead_id=cohead_id) JOIN custinfo ON (cohead_cust_id=cust_id) LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) WHERE(NOT cobmisc_posted AND (cohead_cust_id=pCustid) ) GROUP BY cohead_billtoname, cohead_billtoaddress1, cohead_billtoaddress2, cohead_billtoaddress3, cohead_billtocity, cohead_billtostate, cohead_billtozipcode, cust_phone, cohead_billtocountry, cohead_salesrep_id, cohead_commission, cohead_terms_id, cobmisc_misc_accnt_id, cohead_prj_id, cobmisc_curr_id, cobmisc_taxzone_id, cohead_shipchrg_id, cohead_saletype_id, cohead_shipzone_id LOOP IF(_c.cnt = 1) THEN PERFORM createInvoice(_c.cobmisc_id); _count := (_count + 1); ELSE SELECT NEXTVAL('invchead_invchead_id_seq'), fetchInvcNumber() INTO _invcheadid, _invcnumber; -- Create the Invoice header INSERT INTO invchead ( invchead_id, invchead_cust_id, invchead_shipto_id, invchead_ordernumber, invchead_orderdate, invchead_posted, invchead_printed, invchead_invcnumber, invchead_invcdate, invchead_shipdate, invchead_ponumber, invchead_shipvia, invchead_fob, invchead_billto_name, invchead_billto_address1, invchead_billto_address2, invchead_billto_address3, invchead_billto_city, invchead_billto_state, invchead_billto_zipcode, invchead_billto_phone, invchead_billto_country, invchead_shipto_name, invchead_shipto_address1, invchead_shipto_address2, invchead_shipto_address3, invchead_shipto_city, invchead_shipto_state, invchead_shipto_zipcode, invchead_shipto_phone, invchead_shipto_country, invchead_salesrep_id, invchead_commission, invchead_terms_id, invchead_freight, invchead_misc_amount, invchead_misc_descrip, invchead_misc_accnt_id, invchead_payment, invchead_paymentref, invchead_notes, invchead_prj_id, invchead_curr_id, invchead_taxzone_id, invchead_shipchrg_id, invchead_saletype_id, invchead_shipzone_id ) VALUES(_invcheadid, pCustid, -1, NULL, _c.cohead_orderdate, FALSE, FALSE, _invcnumber, _c.cobmisc_invcdate, _c.cobmisc_shipdate, 'MULTIPLE', '', '', _c.cohead_billtoname, _c.cohead_billtoaddress1, _c.cohead_billtoaddress2, _c.cohead_billtoaddress3, _c.cohead_billtocity, _c.cohead_billtostate, _c.cohead_billtozipcode, _c.cust_phone, _c.cohead_billtocountry, '', '', '', '', '', '', '', '', '', _c.cohead_salesrep_id, COALESCE(_c.cohead_commission, 0), _c.cohead_terms_id, _c.cobmisc_freight, _c.cobmisc_misc, CASE WHEN(_c.cobmisc_misc <> 0) THEN 'Multiple' ELSE '' END, _c.cobmisc_misc_accnt_id, _c.cobmisc_payment, '', 'Multiple Sales Order # Invoice', _c.cohead_prj_id, _c.cobmisc_curr_id, _c.cobmisc_taxzone_id, _c.cohead_shipchrg_id, _c.cohead_saletype_id, _c.cohead_shipzone_id ); _lastlinenumber := 1; FOR _i IN SELECT cobmisc_id FROM cobmisc JOIN cohead ON (cobmisc_cohead_id=cohead_id) JOIN custinfo ON (cohead_cust_id=cust_id) LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) WHERE(NOT cobmisc_posted AND (cohead_cust_id=pCustid) AND (COALESCE(cohead_billtoname,'') = COALESCE(_c.cohead_billtoname,'')) AND (COALESCE(cohead_billtoaddress1,'') = COALESCE(_c.cohead_billtoaddress1,'')) AND (COALESCE(cohead_billtoaddress2,'') = COALESCE(_c.cohead_billtoaddress2,'')) AND (COALESCE(cohead_billtoaddress3,'') = COALESCE(_c.cohead_billtoaddress3,'')) AND (COALESCE(cohead_billtocity,'') = COALESCE(_c.cohead_billtocity,'')) AND (COALESCE(cohead_billtostate,'') = COALESCE(_c.cohead_billtostate,'')) AND (COALESCE(cohead_billtozipcode,'') = COALESCE(_c.cohead_billtozipcode,'')) AND (COALESCE(cntct_phone,'') = COALESCE(_c.cust_phone,'')) AND (COALESCE(cohead_billtocountry,'') = COALESCE(_c.cohead_billtocountry,'')) AND (COALESCE(cohead_salesrep_id, 0) = COALESCE(_c.cohead_salesrep_id, 0)) AND (COALESCE(cohead_commission, 0) = COALESCE(_c.cohead_commission, 0)) AND (COALESCE(cohead_terms_id, 0) = COALESCE(_c.cohead_terms_id, 0)) AND (COALESCE(cobmisc_misc_accnt_id, 0) = COALESCE(_c.cobmisc_misc_accnt_id, 0)) AND (COALESCE(cohead_prj_id, 0) = COALESCE(_c.cohead_prj_id, 0)) AND (COALESCE(cobmisc_curr_id, 0) = COALESCE(_c.cobmisc_curr_id, 0)) AND (COALESCE(cobmisc_taxzone_id, 0) = COALESCE(_c.cobmisc_taxzone_id, 0)) AND (COALESCE(cohead_saletype_id, 0) = COALESCE(_c.cohead_saletype_id, 0)) AND (COALESCE(cohead_shipzone_id, 0) = COALESCE(_c.cohead_shipzone_id, 0)) ) LOOP -- Create the Invoice Head tax INSERT INTO invcheadtax(taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate) SELECT _invcheadid,taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate FROM cobmisctax WHERE taxhist_parent_id = _i.cobmisc_id AND taxhist_taxtype_id = getadjustmenttaxtypeid(); -- Give this selection a number if it has not been assigned one UPDATE cobmisc SET cobmisc_invcnumber=_invcnumber WHERE(cobmisc_id=_i.cobmisc_id); -- Create the Invoice items FOR _r IN SELECT coitem_id, coitem_linenumber, coitem_subnumber, coitem_custpn, coitem_qtyord, cobill_qty, coitem_qty_uom_id, coitem_qty_invuomratio, coitem_custprice, coitem_price, coitem_price_uom_id, coitem_price_invuomratio, coitem_memo, itemsite_item_id, itemsite_warehous_id, cobill_taxtype_id FROM cohead, coitem, cobill, itemsite WHERE((cobill_coitem_id=coitem_id) AND (cohead_id=coitem_cohead_id) AND (coitem_itemsite_id=itemsite_id) AND (cobill_cobmisc_id=_i.cobmisc_id) ) ORDER BY cohead_number, coitem_linenumber, coitem_subnumber LOOP SELECT NEXTVAL('invcitem_invcitem_id_seq') INTO _invcitemid; INSERT INTO invcitem ( invcitem_id, invcitem_invchead_id, invcitem_linenumber, invcitem_item_id, invcitem_warehous_id, invcitem_custpn, invcitem_number, invcitem_descrip, invcitem_ordered, invcitem_billed, invcitem_qty_uom_id, invcitem_qty_invuomratio, invcitem_custprice, invcitem_price, invcitem_price_uom_id, invcitem_price_invuomratio, invcitem_notes, invcitem_taxtype_id, invcitem_coitem_id ) VALUES ( _invcitemid, _invcheadid, _lastlinenumber, _r.itemsite_item_id, _r.itemsite_warehous_id, _r.coitem_custpn, '', '', _r.coitem_qtyord, _r.cobill_qty, _r.coitem_qty_uom_id, _r.coitem_qty_invuomratio, _r.coitem_custprice, _r.coitem_price, _r.coitem_price_uom_id, _r.coitem_price_invuomratio, _r.coitem_memo, _r.cobill_taxtype_id, _r.coitem_id ); -- Find and mark any Lot/Serial invdetail records associated with this bill UPDATE invdetail SET invdetail_invcitem_id = _invcitemid WHERE (invdetail_id IN (SELECT invdetail_id FROM coitem, cohead, invhist, invdetail WHERE ((coitem_cohead_id=cohead_id) AND (invdetail_invhist_id=invhist_id) AND (invhist_ordnumber = text(cohead_number||'-'||formatSoLineNumber(coitem_id))) AND (invdetail_invcitem_id IS NULL) AND (coitem_id=_r.coitem_id)) ) ); -- Mark any shipped, uninvoiced shipitems for the current coitem as invoiced _qtyToInvoice := _r.cobill_qty; FOR _s IN SELECT shipitem.*, shipitem_qty = _r.cobill_qty AS matched FROM shipitem, shiphead WHERE ((shipitem_shiphead_id=shiphead_id) AND (shipitem_orderitem_id=_r.coitem_id) AND (shiphead_shipped) AND (shiphead_order_type='SO') AND (NOT shipitem_invoiced)) ORDER BY matched DESC, shipitem_qty DESC FOR UPDATE LOOP IF (_qtyToInvoice >= _s.shipitem_qty) THEN UPDATE shipitem SET shipitem_invoiced=TRUE, shipitem_invcitem_id=_invcitemid WHERE (shipitem_id=_s.shipitem_id); _qtyToInvoice := _qtyToInvoice - _s.shipitem_qty; END IF; IF (_qtyToInvoice <= 0) THEN EXIT; END IF; END LOOP; UPDATE cobill SET cobill_invcnum=cobmisc_invcnumber, cobill_invcitem_id=invcitem_id FROM invcitem, coitem, cobmisc WHERE ((invcitem_linenumber=_lastlinenumber ) AND (coitem_id=cobill_coitem_id) AND (cobmisc_id=cobill_cobmisc_id) AND (cobill_cobmisc_id=_i.cobmisc_id) AND (invcitem_invchead_id=_invcheadid)); _lastlinenumber := _lastlinenumber + 1; END LOOP; -- Close all requested coitem's IF ( ( SELECT cobmisc_closeorder FROM cobmisc WHERE (cobmisc_id=_i.cobmisc_id) ) ) THEN UPDATE coitem SET coitem_status='C' FROM cobmisc WHERE ( (coitem_status NOT IN ('C', 'X')) AND (coitem_cohead_id=cobmisc_cohead_id) AND (cobmisc_id=_i.cobmisc_id) ); ELSE UPDATE coitem SET coitem_status='C' FROM cobill WHERE ( (cobill_coitem_id=coitem_id) AND (coitem_status <> 'X') AND (cobill_toclose) AND (cobill_cobmisc_id=_i.cobmisc_id) ); END IF; -- Mark the cobmisc as posted UPDATE cobmisc SET cobmisc_posted=TRUE, cobmisc_invchead_id=_invcheadid WHERE (cobmisc_id=_i.cobmisc_id); -- All done _count := (_count + 1); END LOOP; END IF; END LOOP; RETURN _count; END; $_$; ALTER FUNCTION public.createinvoiceconsolidated(integer) OWNER TO admin; -- -- Name: createinvoices(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createinvoices() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _counter INTEGER; _cobmisc RECORD; BEGIN _counter := 0; FOR _cobmisc IN SELECT cobmisc_id FROM cobmisc WHERE (NOT cobmisc_posted) LOOP PERFORM createinvoice(_cobmisc.cobmisc_id); _counter := (_counter + 1); END LOOP; RETURN _counter; END; $$; ALTER FUNCTION public.createinvoices() OWNER TO admin; -- -- Name: createinvoices(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createinvoices(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN createinvoices($1, false); END; $_$; ALTER FUNCTION public.createinvoices(integer) OWNER TO admin; -- -- Name: createinvoices(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createinvoices(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustTypeId ALIAS FOR $1; pConsolidate ALIAS FOR $2; _counter INTEGER; _tcounter INTEGER; _cobmisc RECORD; BEGIN _counter := 0; IF (pConsolidate) THEN FOR _cobmisc IN SELECT DISTINCT cust_id FROM cobmisc, cohead, custinfo WHERE((NOT cobmisc_posted) AND (cohead_id=cobmisc_cohead_id) AND (cust_id=cohead_cust_id) AND (cust_custtype_id=pCustTypeId)) LOOP SELECT createinvoiceConsolidated(_cobmisc.cust_id) INTO _tcounter; _counter := (_counter + _tcounter); END LOOP; ELSE FOR _cobmisc IN SELECT cobmisc_id FROM cobmisc, cohead, custinfo WHERE((NOT cobmisc_posted) AND (cohead_id=cobmisc_cohead_id) AND (cust_id=cohead_cust_id) AND (cust_custtype_id=pCustTypeId)) LOOP PERFORM createinvoice(_cobmisc.cobmisc_id); _counter := (_counter + 1); END LOOP; END IF; RETURN _counter; END; $_$; ALTER FUNCTION public.createinvoices(integer, boolean) OWNER TO admin; -- -- Name: createmiscapcheck(integer, integer, date, numeric, integer, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createmiscapcheck(integer, integer, date, numeric, integer, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'createMiscAPCheck() is deprecated - use createCheck() instead'; RETURN createCheck($1, 'V', $2, $3, $4, baseCurrId(), $5, NULL, $6, $7, FALSE); END; $_$; ALTER FUNCTION public.createmiscapcheck(integer, integer, date, numeric, integer, text, text) OWNER TO admin; -- -- Name: createmiscapcheck(integer, integer, date, numeric, integer, integer, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createmiscapcheck(integer, integer, date, numeric, integer, integer, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'createMiscAPCheck() is deprecated - use createCheck() instead'; RETURN createCheck($1, 'V', $2, $3, pAmount, $5, $6, NULL, $7, $8, FALSE); END; $_$; ALTER FUNCTION public.createmiscapcheck(integer, integer, date, numeric, integer, integer, text, text) OWNER TO admin; -- -- Name: createpkgschema(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createpkgschema(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pname ALIAS FOR $1; pcomment ALIAS FOR $2; _createtable TEXT; _debug BOOL := true; _namespaceoid INTEGER := -1; _tabs TEXT[] := ARRAY['cmd', 'cmdarg', 'image', 'metasql', 'priv', 'report', 'script', 'uiform'] ; _pkgtab TEXT; BEGIN IF (LENGTH(COALESCE(pname, '')) <= 0) THEN RAISE EXCEPTION 'Cannot create a schema for this package without a name.'; END IF; SELECT oid INTO _namespaceoid FROM pg_namespace WHERE (LOWER(nspname)=LOWER(pname)); IF (NOT FOUND) THEN EXECUTE 'CREATE SCHEMA ' || LOWER(pname); EXECUTE 'GRANT ALL ON SCHEMA ' || LOWER(pname) || ' TO GROUP xtrole;'; SELECT oid INTO _namespaceoid FROM pg_namespace WHERE (LOWER(nspname)=LOWER(pname)); END IF; FOR i IN ARRAY_LOWER(_tabs,1)..ARRAY_UPPER(_tabs,1) LOOP _pkgtab := pname || '.pkg' || _tabs[i]; IF NOT EXISTS(SELECT oid FROM pg_class WHERE ((relname=_pkgtab) AND (relnamespace=_namespaceoid))) THEN _createtable := 'CREATE TABLE ' || _pkgtab || ' () INHERITS (' || _tabs[i] || ');'; IF (_debug) THEN RAISE NOTICE '%', _createtable; END IF; EXECUTE _createtable; EXECUTE 'ALTER TABLE ' || _pkgtab || ' ALTER ' || _tabs[i] || '_id SET NOT NULL,' || ' ADD PRIMARY KEY (' || _tabs[i] || '_id),' || ' ALTER ' || _tabs[i] || '_id SET DEFAULT NEXTVAL(''' || _tabs[i] || '_' || _tabs[i] || '_id_seq'');'; EXECUTE 'REVOKE ALL ON ' || _pkgtab || ' FROM PUBLIC;'; EXECUTE 'GRANT ALL ON ' || _pkgtab || ' TO GROUP xtrole;'; IF (_tabs[i] = 'cmdarg') THEN EXECUTE 'ALTER TABLE ' || _pkgtab || ' ADD FOREIGN KEY (cmdarg_cmd_id) REFERENCES ' || pname || '.pkgcmd(cmd_id);'; END IF; EXECUTE 'SELECT dropIfExists(''TRIGGER'', ''pkg' || _tabs[i] || 'beforetrigger'', ''' || pname || ''');' ; EXECUTE 'CREATE TRIGGER pkg' || _tabs[i] || 'beforetrigger ' || 'BEFORE INSERT OR UPDATE OR DELETE ON ' || _pkgtab || ' FOR EACH ROW EXECUTE PROCEDURE _pkg' || _tabs[i] || 'beforetrigger();'; EXECUTE 'SELECT dropIfExists(''TRIGGER'', ''pkg' || _tabs[i] || 'altertrigger'', ''' || pname || ''');' ; EXECUTE 'CREATE TRIGGER pkg' || _tabs[i] || 'altertrigger ' || 'BEFORE INSERT OR UPDATE OR DELETE ON ' || _pkgtab || ' FOR EACH ROW EXECUTE PROCEDURE _pkg' || _tabs[i] || 'altertrigger();'; EXECUTE 'SELECT dropIfExists(''TRIGGER'', ''pkg' || _tabs[i] || 'aftertrigger'', ''' || pname || ''');' ; EXECUTE 'CREATE TRIGGER pkg' || _tabs[i] || 'aftertrigger ' || 'AFTER INSERT OR UPDATE OR DELETE ON ' || _pkgtab || ' FOR EACH ROW EXECUTE PROCEDURE _pkg' || _tabs[i] || 'aftertrigger();'; END IF; END LOOP; EXECUTE 'COMMENT ON SCHEMA ' || quote_ident(pname) || ' IS ' || quote_literal(pcomment) || ';'; RETURN _namespaceoid; END; $_$; ALTER FUNCTION public.createpkgschema(text, text) OWNER TO admin; -- -- Name: createpr(integer, integer, numeric, date, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createpr(integer, integer, numeric, date, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOrderNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pQty ALIAS FOR $3; pDueDate ALIAS FOR $4; pNotes ALIAS FOR $5; _prid INTEGER; BEGIN SELECT NEXTVAL('pr_pr_id_seq') INTO _prid; INSERT INTO pr ( pr_id, pr_number, pr_subnumber, pr_status, pr_order_type, pr_order_id, pr_itemsite_id, pr_qtyreq, pr_duedate, pr_releasenote ) VALUES ( _prid, pOrderNumber, nextPrSubnumber(pOrderNumber), 'O', 'M', -1, pItemsiteid, pQty, pDuedate, pNotes); RETURN _prid; END; $_$; ALTER FUNCTION public.createpr(integer, integer, numeric, date, text) OWNER TO admin; -- -- Name: createpr(integer, character, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createpr(integer, character, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOrderNumber ALIAS FOR $1; pParentType ALIAS FOR $2; pParentId ALIAS FOR $3; _parent RECORD; _prid INTEGER; _orderNumber INTEGER; BEGIN IF (pOrderNumber = -1) THEN SELECT fetchPrNumber() INTO _orderNumber; ELSE _orderNumber := pOrderNumber; END IF; IF (pParentType = 'W') THEN SELECT womatl_itemsite_id AS itemsiteid, itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyreq) AS qty, womatl_duedate AS duedate, wo_prj_id AS prjid, womatl_notes AS notes INTO _parent FROM wo, womatl, itemsite WHERE ((womatl_wo_id=wo_id) AND (womatl_itemsite_id=itemsite_id) AND (womatl_id=pParentId)); ELSIF (pParentType = 'S') THEN SELECT coitem_itemsite_id AS itemsiteid, (coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) AS qty, coitem_scheddate AS duedate, cohead_prj_id AS prjid, coitem_memo AS notes INTO _parent FROM coitem, cohead WHERE ((cohead_id=coitem_cohead_id) AND (coitem_id=pParentId)); ELSIF (pParentType = 'F') THEN SELECT planord_itemsite_id AS itemsiteid, planord_qty AS qty, planord_duedate AS duedate, NULL::INTEGER AS prjid, planord_comments AS notes INTO _parent FROM planord WHERE (planord_id=pParentId); ELSE RETURN -2; END IF; IF (NOT FOUND) THEN RETURN -1; END IF; SELECT NEXTVAL('pr_pr_id_seq') INTO _prid; INSERT INTO pr ( pr_id, pr_number, pr_subnumber, pr_status, pr_order_type, pr_order_id, pr_prj_id, pr_itemsite_id, pr_qtyreq, pr_duedate, pr_releasenote ) VALUES ( _prid, _orderNumber, nextPrSubnumber(_orderNumber), 'O', pParentType, pParentId, _parent.prjid, _parent.itemsiteid, validateOrderQty(_parent.itemsiteid, _parent.qty, TRUE), _parent.duedate, _parent.notes ); RETURN _prid; END; $_$; ALTER FUNCTION public.createpr(integer, character, integer) OWNER TO admin; -- -- Name: createpr(character, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createpr(character, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pParentType ALIAS FOR $1; pParentId ALIAS FOR $2; _orderNumber INTEGER; _prid INTEGER; BEGIN IF (pParentType = 'W') THEN SELECT wo_number INTO _orderNumber FROM wo, womatl WHERE ((womatl_wo_id=wo_id) AND (womatl_id=pParentId)); ELSIF (pParentType = 'S') THEN SELECT CAST(cohead_number AS INTEGER) INTO _orderNumber FROM cohead, coitem WHERE ((coitem_cohead_id=cohead_id) AND (coitem_id=pParentId)); ELSIF (pParentType = 'F') THEN SELECT fetchPrNumber() INTO _orderNumber; ELSE RETURN -2; END IF; IF (NOT FOUND) THEN RETURN -1; END IF; SELECT createPr(_orderNumber, pParentType, pParentId) INTO _prid; RETURN _prid; END; $_$; ALTER FUNCTION public.createpr(character, integer) OWNER TO admin; -- -- Name: createpr(integer, integer, numeric, date, text, character, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createpr(integer, integer, numeric, date, text, character, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOrderNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pQty ALIAS FOR $3; pDueDate ALIAS FOR $4; pNotes ALIAS FOR $5; pOrderType ALIAS FOR $6; pOrderId ALIAS FOR $7; _prid INTEGER; BEGIN SELECT NEXTVAL('pr_pr_id_seq') INTO _prid; INSERT INTO pr ( pr_id, pr_number, pr_subnumber, pr_status, pr_order_type, pr_order_id, pr_itemsite_id, pr_qtyreq, pr_duedate, pr_releasenote ) VALUES ( _prid, pOrderNumber, nextPrSubnumber(pOrderNumber), 'O', pOrderType, pOrderId, pItemsiteid, pQty, pDuedate, pNotes ); RETURN _prid; END; $_$; ALTER FUNCTION public.createpr(integer, integer, numeric, date, text, character, integer) OWNER TO admin; -- -- Name: createpr(integer, character, integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createpr(integer, character, integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOrderNumber ALIAS FOR $1; pParentType ALIAS FOR $2; pParentId ALIAS FOR $3; pParentNotes ALIAS FOR $4; _parent RECORD; _prid INTEGER; _orderNumber INTEGER; BEGIN IF (pOrderNumber = -1) THEN SELECT fetchPrNumber() INTO _orderNumber; ELSE _orderNumber := pOrderNumber; END IF; IF (pParentType = 'W') THEN SELECT womatl_itemsite_id AS itemsiteid, itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyreq) AS qty, womatl_duedate AS duedate, wo_prj_id AS prjid INTO _parent FROM wo, womatl, itemsite WHERE ((womatl_wo_id=wo_id) AND (womatl_itemsite_id=itemsite_id) AND (womatl_id=pParentId)); ELSIF (pParentType = 'S') THEN SELECT coitem_itemsite_id AS itemsiteid, (coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) AS qty, coitem_scheddate AS duedate, cohead_prj_id AS prjid INTO _parent FROM coitem, cohead WHERE ((cohead_id=coitem_cohead_id) AND (coitem_id=pParentId)); ELSIF (pParentType = 'F') THEN SELECT planord_itemsite_id AS itemsiteid, planord_qty AS qty, planord_duedate AS duedate, NULL::INTEGER AS prjid INTO _parent FROM planord WHERE (planord_id=pParentId); ELSE RETURN -2; END IF; IF (NOT FOUND) THEN RETURN -1; END IF; SELECT NEXTVAL('pr_pr_id_seq') INTO _prid; INSERT INTO pr ( pr_id, pr_number, pr_subnumber, pr_status, pr_order_type, pr_order_id, pr_prj_id, pr_itemsite_id, pr_qtyreq, pr_duedate, pr_releasenote ) VALUES ( _prid, _orderNumber, nextPrSubnumber(_orderNumber), 'O', pParentType, pParentId, _parent.prjid, _parent.itemsiteid, validateOrderQty(_parent.itemsiteid, _parent.qty, TRUE), _parent.duedate, pParentNotes ); RETURN _prid; END; $_$; ALTER FUNCTION public.createpr(integer, character, integer, text) OWNER TO admin; -- -- Name: createpriv(text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createpriv(text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pModule ALIAS FOR $1; pName ALIAS FOR $2; pDesc ALIAS FOR $3; _id INTEGER; BEGIN SELECT priv_id INTO _id FROM priv WHERE(priv_name=pName); IF (FOUND) THEN UPDATE priv SET priv_module=pModule, priv_descrip=pDesc WHERE(priv_id=_id); ELSE SELECT nextval('priv_priv_id_seq') INTO _id; INSERT INTO priv (priv_id, priv_module, priv_name, priv_descrip) VALUES(_id, pModule, pName, pDesc); END IF; RETURN _id; END; $_$; ALTER FUNCTION public.createpriv(text, text, text) OWNER TO admin; -- -- Name: createpurchasetosale(integer, integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createpurchasetosale(integer, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCoitemId ALIAS FOR $1; pItemSourceId ALIAS FOR $2; pDropShip ALIAS FOR $3; BEGIN RETURN createPurchaseToSale(pCoitemId, pItemSourceId, pDropShip, NULL, NULL, NULL); END; $_$; ALTER FUNCTION public.createpurchasetosale(integer, integer, boolean) OWNER TO admin; -- -- Name: createpurchasetosale(integer, integer, boolean, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createpurchasetosale(integer, integer, boolean, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCoitemId ALIAS FOR $1; pItemSourceId ALIAS FOR $2; pDropShip ALIAS FOR $3; pPrice ALIAS FOR $4; BEGIN RETURN createPurchaseToSale(pCoitemId, pItemSourceId, pDropShip, NULL, NULL, pPrice); END; $_$; ALTER FUNCTION public.createpurchasetosale(integer, integer, boolean, numeric) OWNER TO admin; -- -- Name: createpurchasetosale(integer, integer, boolean, numeric, date, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createpurchasetosale(integer, integer, boolean, numeric, date, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCoitemId ALIAS FOR $1; pItemSourceId ALIAS FOR $2; pDropShip ALIAS FOR $3; pQty ALIAS FOR $4; pDueDate ALIAS FOR $5; pPrice ALIAS FOR $6; _s RECORD; _w RECORD; _i RECORD; _shipto RECORD; _poheadid INTEGER := -1; _poitemid INTEGER := -1; _taxtypeid INTEGER := -1; _polinenumber INTEGER; _ponumber NUMERIC; _price NUMERIC; _temp INTEGER; BEGIN -- Check for existing poitem for this coitem SELECT poitem_id INTO _poitemid FROM poitem WHERE (poitem_order_id=pCoitemId) AND (poitem_order_type='S'); IF (FOUND) THEN RETURN _poitemid; END IF; SELECT *, COALESCE(roundQty(item_fractional, (coitem_qtyord * coitem_qty_invuomratio)), 0.0) AS orderqty INTO _s FROM cohead JOIN coitem ON (cohead_id = coitem_cohead_id) LEFT OUTER JOIN shiptoinfo ON (cohead_shipto_id = shipto_id) LEFT OUTER JOIN itemsite ON (coitem_itemsite_id = itemsite_id) LEFT OUTER JOIN item ON (item_id = itemsite_item_id) WHERE (coitem_id = pCoitemId); IF (NOT FOUND) THEN RETURN -1; END IF; SELECT * INTO _w FROM whsinfo JOIN addr ON (warehous_addr_id = addr_id) JOIN cntct ON (warehous_cntct_id = cntct_id) JOIN itemsite ON (warehous_id = itemsite_warehous_id) WHERE (itemsite_id = _s.itemsite_id); SELECT * INTO _i FROM itemsrc JOIN vendinfo ON (itemsrc_vend_id = vend_id) LEFT OUTER JOIN cntct ON (vend_cntct1_id = cntct_id) LEFT OUTER JOIN addr ON (vend_addr_id = addr_id) WHERE (itemsrc_id = pItemSourceId); IF (NOT FOUND) THEN RETURN -2; END IF; SELECT * INTO _shipto FROM shiptoinfo JOIN cntct ON (shipto_cntct_id = cntct_id) JOIN addr ON (shipto_addr_id = addr_id) RIGHT OUTER JOIN cohead ON (cohead_cust_id = shipto_cust_id) WHERE (cohead_id = _s.cohead_id) LIMIT 1; IF (pDropShip) THEN SELECT COALESCE(pohead_id, -1) INTO _temp FROM pohead WHERE ( (pohead_status = 'U') AND (pohead_vend_id = _i.itemsrc_vend_id) AND (pohead_shiptoaddress_id = _s.shipto_addr_id) ); ELSE SELECT COALESCE(pohead_id, -1) INTO _temp FROM pohead WHERE ( (pohead_status = 'U') AND (pohead_vend_id = _i.itemsrc_vend_id) AND (pohead_shiptoaddress_id = _w.addr_id) ); END IF; IF (FOUND) THEN _poheadid := _temp; UPDATE pohead SET pohead_dropship = pDropShip WHERE (pohead_id = _poheadid); ELSE SELECT NEXTVAL('pohead_pohead_id_seq') INTO _poheadid; SELECT fetchPoNumber() INTO _ponumber; IF (pDropShip) THEN INSERT INTO pohead ( pohead_id, pohead_number, pohead_status, pohead_dropship, pohead_agent_username, pohead_vend_id, pohead_taxzone_id, pohead_orderdate, pohead_curr_id, pohead_cohead_id, pohead_warehous_id, pohead_shipvia, pohead_terms_id, pohead_shipto_cntct_id, pohead_shipto_cntct_honorific, pohead_shipto_cntct_first_name, pohead_shipto_cntct_middle, pohead_shipto_cntct_last_name, pohead_shipto_cntct_suffix, pohead_shipto_cntct_phone, pohead_shipto_cntct_title, pohead_shipto_cntct_fax, pohead_shipto_cntct_email, pohead_shiptoaddress_id, pohead_shiptoaddress1, pohead_shiptoaddress2, pohead_shiptoaddress3, pohead_shiptocity, pohead_shiptostate, pohead_shiptozipcode, pohead_shiptocountry, pohead_vend_cntct_id, pohead_vend_cntct_honorific, pohead_vend_cntct_first_name, pohead_vend_cntct_middle, pohead_vend_cntct_last_name, pohead_vend_cntct_suffix, pohead_vend_cntct_phone, pohead_vend_cntct_title, pohead_vend_cntct_fax, pohead_vend_cntct_email, pohead_vendaddress1, pohead_vendaddress2, pohead_vendaddress3, pohead_vendcity, pohead_vendstate, pohead_vendzipcode, pohead_vendcountry, pohead_comments ) VALUES ( _poheadid, _ponumber, 'U', pDropShip, getEffectiveXtUser(), _i.itemsrc_vend_id, _i.vend_taxzone_id, CURRENT_DATE, COALESCE(_i.vend_curr_id, basecurrid()), _s.cohead_id, COALESCE(_s.cohead_warehous_id, -1), COALESCE(_i.vend_shipvia, TEXT('')), COALESCE(_i.vend_terms_id, -1), COALESCE(_s.cohead_shipto_cntct_id, _shipto.shipto_cntct_id), COALESCE(_s.cohead_shipto_cntct_honorific, _shipto.cntct_honorific), COALESCE(_s.cohead_shipto_cntct_first_name, _shipto.cntct_first_name), COALESCE(_s.cohead_shipto_cntct_middle, _shipto.cntct_middle), COALESCE(_s.cohead_shipto_cntct_last_name, _shipto.cntct_last_name), COALESCE(_s.cohead_shipto_cntct_suffix, _shipto.cntct_suffix), COALESCE(_s.cohead_shipto_cntct_phone, _shipto.cntct_phone), COALESCE(_s.cohead_shipto_cntct_title, _shipto.cntct_title), COALESCE(_s.cohead_shipto_cntct_fax, _shipto.cntct_fax), COALESCE(_s.cohead_shipto_cntct_email, _shipto.cntct_email), COALESCE(_s.shipto_addr_id, _shipto.addr_id), COALESCE(_s.cohead_shiptoaddress1, _shipto.addr_line1), COALESCE(_s.cohead_shiptoaddress2, _shipto.addr_line2), COALESCE(_s.cohead_shiptoaddress3, _shipto.addr_line3), COALESCE(_s.cohead_shiptocity, _shipto.addr_city), COALESCE(_s.cohead_shiptostate, _shipto.addr_state), COALESCE(_s.cohead_shiptozipcode, _shipto.addr_postalcode), COALESCE(_s.cohead_shiptocountry, _shipto.addr_country), _i.cntct_id, COALESCE(_i.cntct_honorific, TEXT('')), COALESCE(_i.cntct_first_name, TEXT('')), COALESCE(_i.cntct_middle, TEXT('')), COALESCE(_i.cntct_last_name, TEXT('')), COALESCE(_i.cntct_suffix, TEXT('')), COALESCE(_i.cntct_phone, TEXT('')), COALESCE(_i.cntct_title, TEXT('')), COALESCE(_i.cntct_fax, TEXT('')), COALESCE(_i.cntct_email, TEXT('')), COALESCE(_i.addr_line1, TEXT('')), COALESCE(_i.addr_line2, TEXT('')), COALESCE(_i.addr_line3, TEXT('')), COALESCE(_i.addr_city, TEXT('')), COALESCE(_i.addr_state, TEXT('')), COALESCE(_i.addr_postalcode, TEXT('')), COALESCE(_i.addr_country, TEXT('')), COALESCE(_s.cohead_shipcomments, TEXT('')) ); ELSE INSERT INTO pohead ( pohead_id, pohead_number, pohead_status, pohead_dropship, pohead_agent_username, pohead_vend_id, pohead_taxzone_id, pohead_orderdate, pohead_curr_id, pohead_cohead_id, pohead_warehous_id, pohead_shipvia, pohead_terms_id, pohead_shipto_cntct_id, pohead_shipto_cntct_honorific, pohead_shipto_cntct_first_name, pohead_shipto_cntct_middle, pohead_shipto_cntct_last_name, pohead_shipto_cntct_suffix, pohead_shipto_cntct_phone, pohead_shipto_cntct_title, pohead_shipto_cntct_fax, pohead_shipto_cntct_email, pohead_shiptoaddress_id, pohead_shiptoaddress1, pohead_shiptoaddress2, pohead_shiptoaddress3, pohead_shiptocity, pohead_shiptostate, pohead_shiptozipcode, pohead_shiptocountry, pohead_vend_cntct_id, pohead_vend_cntct_honorific, pohead_vend_cntct_first_name, pohead_vend_cntct_middle, pohead_vend_cntct_last_name, pohead_vend_cntct_suffix, pohead_vend_cntct_phone, pohead_vend_cntct_title, pohead_vend_cntct_fax, pohead_vend_cntct_email, pohead_vendaddress1, pohead_vendaddress2, pohead_vendaddress3, pohead_vendcity, pohead_vendstate, pohead_vendzipcode, pohead_vendcountry ) VALUES ( _poheadid, _ponumber, 'U', pDropShip, getEffectiveXtUser(), _i.itemsrc_vend_id, _i.vend_taxzone_id, CURRENT_DATE, COALESCE(_i.vend_curr_id, basecurrid()), _s.cohead_id, COALESCE(_s.cohead_warehous_id, -1), COALESCE(_i.vend_shipvia, TEXT('')), COALESCE(_i.vend_terms_id, -1), _w.cntct_id, _w.cntct_honorific, _w.cntct_first_name, _w.cntct_middle, _w.cntct_last_name, _w.cntct_suffix, _w.cntct_phone, _w.cntct_title, _w.cntct_fax, _w.cntct_email, _w.addr_id, _w.addr_line1, _w.addr_line2, _w.addr_line3, _w.addr_city, _w.addr_state, _w.addr_postalcode, _w.addr_country, _i.cntct_id, COALESCE(_i.cntct_honorific, TEXT('')), COALESCE(_i.cntct_first_name, TEXT('')), COALESCE(_i.cntct_middle, TEXT('')), COALESCE(_i.cntct_last_name, TEXT('')), COALESCE(_i.cntct_suffix, TEXT('')), COALESCE(_i.cntct_phone, TEXT('')), COALESCE(_i.cntct_title, TEXT('')), COALESCE(_i.cntct_fax, TEXT('')), COALESCE(_i.cntct_email, TEXT('')), COALESCE(_i.addr_line1, TEXT('')), COALESCE(_i.addr_line2, TEXT('')), COALESCE(_i.addr_line3, TEXT('')), COALESCE(_i.addr_city, TEXT('')), COALESCE(_i.addr_state, TEXT('')), COALESCE(_i.addr_postalcode, TEXT('')), COALESCE(_i.addr_country, TEXT('')) ); END IF; END IF; SELECT NEXTVAL('poitem_poitem_id_seq') INTO _poitemid; SELECT (COALESCE(MAX(poitem_linenumber), 0) + 1) INTO _polinenumber FROM poitem WHERE (poitem_pohead_id = _poheadid); SELECT COALESCE(itemtax_taxtype_id, -1) INTO _taxtypeid FROM itemtax WHERE (itemtax_item_id = _i.itemsrc_item_id); IF (pPrice IS NULL) THEN SELECT itemsrcPrice(pItemSourceId, COALESCE(_s.cohead_warehous_id, -1), pDropShip, COALESCE(pQty, _s.orderqty), COALESCE(_i.vend_curr_id, baseCurrId()), CURRENT_DATE) INTO _price; ELSE _price := pPrice; END IF; raise notice '_price=%', _price; IF (pDropShip) THEN INSERT INTO poitem ( poitem_id, poitem_status, poitem_pohead_id, poitem_linenumber, poitem_duedate, poitem_itemsite_id, poitem_vend_item_descrip, poitem_vend_uom, poitem_invvenduomratio, poitem_qty_ordered, poitem_unitprice, poitem_vend_item_number, poitem_itemsrc_id, poitem_order_id, poitem_order_type, poitem_prj_id, poitem_stdcost, poitem_manuf_name, poitem_manuf_item_number, poitem_manuf_item_descrip, poitem_taxtype_id, poitem_comments ) VALUES ( _poitemid, 'U', _poheadid, _polinenumber, COALESCE(pDueDate, _s.coitem_scheddate), _s.coitem_itemsite_id, COALESCE(_i.itemsrc_vend_item_descrip, TEXT('')), COALESCE(_i.itemsrc_vend_uom, TEXT('')), COALESCE(_i.itemsrc_invvendoruomratio, 1.00), (COALESCE(pQty, _s.orderqty) / COALESCE(_i.itemsrc_invvendoruomratio, 1.00)), _price, COALESCE(_i.itemsrc_vend_item_number, TEXT('')), pItemSourceId, pCoitemId, 'S', _s.cohead_prj_id, stdcost(_i.itemsrc_item_id), COALESCE(_i.itemsrc_manuf_name, TEXT('')), COALESCE(_i.itemsrc_manuf_item_number, TEXT('')), COALESCE(_i.itemsrc_manuf_item_descrip, TEXT('')), _taxtypeid, COALESCE(_s.coitem_memo, TEXT(''))); ELSE INSERT INTO poitem ( poitem_id, poitem_status, poitem_pohead_id, poitem_linenumber, poitem_duedate, poitem_itemsite_id, poitem_vend_item_descrip, poitem_vend_uom, poitem_invvenduomratio, poitem_qty_ordered, poitem_unitprice, poitem_vend_item_number, poitem_itemsrc_id, poitem_order_id, poitem_order_type, poitem_prj_id, poitem_stdcost, poitem_manuf_name, poitem_manuf_item_number, poitem_manuf_item_descrip, poitem_taxtype_id ) VALUES ( _poitemid, 'U', _poheadid, _polinenumber, COALESCE(pDueDate, _s.coitem_scheddate), _s.coitem_itemsite_id, COALESCE(_i.itemsrc_vend_item_descrip, TEXT('')), COALESCE(_i.itemsrc_vend_uom, TEXT('')), COALESCE(_i.itemsrc_invvendoruomratio, 1.00), (COALESCE(pQty, _s.orderqty) / COALESCE(_i.itemsrc_invvendoruomratio, 1.00)), _price, COALESCE(_i.itemsrc_vend_item_number, TEXT('')), pItemSourceId, pCoitemId, 'S', _s.cohead_prj_id, stdcost(_i.itemsrc_item_id), COALESCE(_i.itemsrc_manuf_name, TEXT('')), COALESCE(_i.itemsrc_manuf_item_number, TEXT('')), COALESCE(_i.itemsrc_manuf_item_descrip, TEXT('')), _taxtypeid ); END IF; -- Copy characteristics from the coitem to the poitem INSERT INTO charass ( charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default, charass_price ) SELECT 'PI', _poitemid, charass_char_id, charass_value, charass_default, charass_price FROM charass WHERE ( (charass_target_type='SI') AND (charass_target_id=pCoitemId) ); UPDATE coitem SET coitem_order_type = 'P', coitem_order_id = _poitemid WHERE ( coitem_id = pCoitemId ); -- Generate the PoItemCreatedBySo event notice INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id , 'P', poitem_id, itemsite_warehous_id, (pohead_number || '-' || poitem_linenumber || ': ' || item_number) FROM evntnot JOIN evnttype ON (evntnot_evnttype_id=evnttype_id) JOIN itemsite ON (evntnot_warehous_id=itemsite_warehous_id) JOIN item ON (itemsite_item_id=item_id) JOIN poitem ON (poitem_itemsite_id=itemsite_id) JOIN pohead ON (poitem_pohead_id=pohead_id) WHERE ( (poitem_id=_poitemid) AND (poitem_duedate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name='PoItemCreatedBySo') ); RETURN _poitemid; END; $_$; ALTER FUNCTION public.createpurchasetosale(integer, integer, boolean, numeric, date, numeric) OWNER TO admin; -- -- Name: createrecurringinvoices(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createrecurringinvoices() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'createRecurringInvoices() has been deprecated; use createRecurringItems(NULL, ''I'') instead.'; RETURN createRecurringItems(NULL, 'I'); END; $$; ALTER FUNCTION public.createrecurringinvoices() OWNER TO admin; -- -- Name: createrecurringitems(integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createrecurringitems(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pParentid ALIAS FOR $1; -- if NULL then all items with the given pType pType TEXT := UPPER($2); -- if NULL then all types -- if both are null then all items of all types _copystmt TEXT; _count INTEGER := 0; _countstmt TEXT; _existcnt INTEGER; _id INTEGER; _interval TEXT; _last TIMESTAMP WITH TIME ZONE; _loopcount INTEGER := 1; _maxstmt TEXT; _maxdate TIMESTAMP WITH TIME ZONE := endOfTime(); _result INTEGER := 0; _next TIMESTAMP WITH TIME ZONE; _r RECORD; _rt RECORD; _tmp INTEGER; BEGIN RAISE DEBUG 'createRecurringItems(%, %) entered', pParentid, pType; FOR _r IN SELECT * FROM recur WHERE ((COALESCE(recur_end, endOfTime()) >= CURRENT_TIMESTAMP) AND (pParentid IS NULL OR recur_parent_id=pParentid) AND (pType IS NULL OR UPPER(recur_parent_type)=UPPER(pType))) LOOP RAISE DEBUG 'createRecurringItems looking at recur %, %', _r.recur_id, _r.recur_parent_type; _r.recur_max := COALESCE(_r.recur_max, CAST(fetchMetricValue('RecurringInvoiceBuffer') AS INTEGER), 1); _interval := CASE _r.recur_period WHEN 'Y' THEN ' year' WHEN 'M' THEN ' month' WHEN 'W' THEN ' week' WHEN 'D' THEN ' day' WHEN 'H' THEN ' hour' WHEN 'm' THEN ' minute' ELSE NULL END; IF (_interval IS NULL OR COALESCE(_r.recur_freq, 0) <= 0) THEN RAISE EXCEPTION 'Unknown recurrence frequency % % ON % %', _r.recur_freq, _r.recur_period, _r.recur_parent_type, _r.recur_parent_id; END IF; SELECT * INTO _rt FROM recurtype WHERE (UPPER(recurtype_type)=UPPER(pType)); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count <= 0) THEN RETURN -10; END IF; -- if the recurrence type has a max lookahead window, use it IF (_r.recur_parent_type = 'I') THEN _maxdate := CURRENT_TIMESTAMP + CAST(fetchMetricText('RecurringInvoiceBuffer') || ' days' AS INTERVAL); END IF; IF (_r.recur_parent_type = 'V') THEN _maxdate := CURRENT_TIMESTAMP + CAST(fetchMetricText('RecurringVoucherBuffer') || ' days' AS INTERVAL); END IF; IF (_maxdate > _r.recur_end) THEN -- if recur_end is null, _maxdate is ok _maxdate = _r.recur_end; END IF; -- build statements dynamically from the recurtype table because packages -- might also require recurring items. this way the algorithm is fixed -- and the details are data-driven _countstmt := 'SELECT COUNT(*) FROM [fulltable]' || ' WHERE (($1=[table]_recurring_[table]_id)' || ' AND NOT([done]) ' || ' AND ([limit]));'; _countstmt := REPLACE(_countstmt, '[fulltable]', _rt.recurtype_table); _countstmt := REPLACE(_countstmt, '[table]', REGEXP_REPLACE(_rt.recurtype_table, E'.*\\.', '')); _countstmt := REPLACE(_countstmt, '[done]', _rt.recurtype_donecheck); _countstmt := REPLACE(_countstmt, '[limit]', COALESCE(_rt.recurtype_limit, 'TRUE')); _maxstmt := 'SELECT MAX([schedcol]) FROM [fulltable]' || ' WHERE (($1=[table]_recurring_[table]_id)' || ' AND ([limit]));'; _maxstmt := REPLACE(_maxstmt, '[schedcol]', _rt.recurtype_schedcol); _maxstmt := REPLACE(_maxstmt, '[fulltable]',_rt.recurtype_table); _maxstmt := REPLACE(_maxstmt, '[table]', REGEXP_REPLACE(_rt.recurtype_table, E'.*\\.', '')); _maxstmt := REPLACE(_maxstmt, '[limit]', COALESCE(_rt.recurtype_limit, 'TRUE')); _copystmt := 'SELECT [copy]($1, [datetime] [more]);'; _copystmt := REPLACE(_copystmt, '[copy]', _rt.recurtype_copyfunc); _copystmt := REPLACE(_copystmt, '[datetime]', CASE WHEN UPPER(_rt.recurtype_copyargs[2])='DATE' THEN 'CAST(''$2'' AS DATE)' ELSE '''$2''' END); -- 8.4+: -- _copystmt := REPLACE(_copystmt, '[more]', -- REPEAT(', NULL', -- array_length(_rt.recurtype_copyargs) - 2)); _tmp := CAST(REPLACE(REGEXP_REPLACE(array_dims(_rt.recurtype_copyargs), '.*:', ''), ']', '') AS INTEGER); _copystmt := REPLACE(_copystmt, '[more]', REPEAT(', NULL', _tmp - 2)); EXECUTE REPLACE(_countstmt, '$1', _r.recur_parent_id::TEXT) INTO _existcnt; EXECUTE REPLACE(_maxstmt, '$1', _r.recur_parent_id::TEXT) INTO _last; RAISE DEBUG E'% got %, % got %', _countstmt, _existcnt, _maxstmt, _last; _next := _last; _loopcount := 1; WHILE (_existcnt < _r.recur_max AND _next < _maxdate) LOOP _next := _last + CAST(_r.recur_freq * _loopcount || _interval AS INTERVAL); RAISE DEBUG 'createrecurringitems looping, existcnt = %, max = %, is % between % and %?', _existcnt, _r.recur_max, _next, _r.recur_start, _r.recur_end; IF (_next BETWEEN _r.recur_start AND _maxdate) THEN RAISE DEBUG 'createrecurringitems executing % with % and %', _copystmt, _r.recur_parent_id, _next; -- 8.4+: EXECUTE _copystmt INTO _id USING _r.recur_parent_id, _next; EXECUTE REPLACE(REPLACE(_copystmt, '$1', _r.recur_parent_id::TEXT), '$2', _next::TEXT) INTO _id; RAISE DEBUG 'Copying for % returned %', _next, _id; _result := _result + 1; _existcnt := _existcnt + 1; END IF; _loopcount := _loopcount + 1; END LOOP; END LOOP; RETURN _result; END; $_$; ALTER FUNCTION public.createrecurringitems(integer, text) OWNER TO admin; -- -- Name: createtodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createtodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN createTodoItem($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, NULL); END; $_$; ALTER FUNCTION public.createtodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, text) OWNER TO admin; -- -- Name: createtodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createtodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ptodoid ALIAS FOR $1; pusername ALIAS FOR $2; pname ALIAS FOR $3; pdesc ALIAS FOR $4; pincdtid ALIAS FOR $5; pcrmacctid ALIAS FOR $6; pOpheadid ALIAS FOR $7; pstarted ALIAS FOR $8; pdue ALIAS FOR $9; pstatus ALIAS FOR $10; passigned ALIAS FOR $11; pcompleted ALIAS FOR $12; ppriority ALIAS FOR $13; pnotes ALIAS FOR $14; powner ALIAS FOR $15; pcntctid ALIAS FOR $16; _todoid INTEGER; _priority INTEGER := ppriority; _status CHARACTER(1) := pstatus; _incdtid INTEGER := pincdtid; _crmacctid INTEGER := pcrmacctid; _opheadid INTEGER := pOpheadid; _assigned DATE := passigned; _result INTEGER; BEGIN IF (pusername IS NULL OR pusername = '') THEN RETURN -1; END IF; IF (pname IS NULL OR pname = '') THEN RETURN -2; END IF; IF (pdue IS NULL) THEN RETURN -3; END IF; IF (pcompleted IS NOT NULL) THEN _status := 'C'; ELSIF (pstatus IS NULL AND pstarted IS NOT NULL) THEN _status := 'I'; ELSIF (pstatus IS NULL) THEN _status := 'N'; END IF; IF (_incdtid <= 0) THEN _incdtid := NULL; END IF; IF (_crmacctid <= 0) THEN _crmacctid := NULL; END IF; IF (_opheadid <= 0) THEN _opheadid := NULL; END IF; IF (_priority <= 0) THEN _priority := NULL; END IF; IF (_assigned IS NULL) THEN _assigned := CURRENT_DATE; END IF; IF (ptodoid IS NULL) THEN SELECT NEXTVAL('todoitem_todoitem_id_seq') INTO _todoid; ELSE _todoid := ptodoid; END IF; INSERT INTO todoitem ( todoitem_id, todoitem_username, todoitem_name, todoitem_description, todoitem_incdt_id, todoitem_creator_username, todoitem_status, todoitem_active, todoitem_start_date, todoitem_due_date, todoitem_assigned_date, todoitem_completed_date, todoitem_priority_id, todoitem_notes, todoitem_crmacct_id, todoitem_ophead_id, todoitem_owner_username, todoitem_cntct_id ) VALUES ( _todoid, pusername, pname, pdesc, _incdtid, getEffectiveXtUser(), _status, TRUE, pstarted, pdue, _assigned, pcompleted, _priority, pnotes, _crmacctid, _opheadid, powner, pcntctid ); RETURN _todoid; END; $_$; ALTER FUNCTION public.createtodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, text, integer) OWNER TO admin; -- -- Name: createurl(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createurl(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ declare pTitle ALIAS FOR $1; pUrl ALIAS FOR $2; _id integer; begin _id := nextval('urlinfo_url_id_seq'); insert into urlinfo (url_id, url_title, url_url) values (_id, pTitle, pUrl); return _id; end; $_$; ALTER FUNCTION public.createurl(text, text) OWNER TO admin; -- -- Name: createuser(text, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createuser(pusername text, pcreateusers boolean) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (pCreateUsers) THEN EXECUTE 'CREATE USER "' || pUsername || '" CREATEROLE IN GROUP xtrole;'; ELSE EXECUTE 'CREATE USER "' || pUsername || '" NOCREATEROLE IN GROUP xtrole;'; END IF; RETURN 1; END; $$; ALTER FUNCTION public.createuser(pusername text, pcreateusers boolean) OWNER TO admin; -- -- Name: createwo(integer, integer, numeric, integer, date, text, character, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createwo(integer, integer, numeric, integer, date, text, character, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pQtyOrdered ALIAS FOR $3; pLeadTime ALIAS FOR $4; pDueDate ALIAS FOR $5; pProductionNotes ALIAS FOR $6; pParentType ALIAS FOR $7; pParentId ALIAS FOR $8; BEGIN RETURN createWo( pWoNumber, pItemsiteid, 1, pQtyOrdered, (pDueDate - pLeadTime), pDueDate, pProductionNotes, pParentType, pParentId, -1 ); END; $_$; ALTER FUNCTION public.createwo(integer, integer, numeric, integer, date, text, character, integer) OWNER TO admin; -- -- Name: createwo(integer, integer, numeric, integer, date, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createwo(integer, integer, numeric, integer, date, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pQtyOrdered ALIAS FOR $3; pLeadTime ALIAS FOR $4; pDueDate ALIAS FOR $5; pProductionNotes ALIAS FOR $6; BEGIN RETURN createWo( pWoNumber, pItemsiteid, 1, pQtyOrdered, (pDueDate - pLeadTime), pDueDate, pProductionNotes, NULL, NULL, -1 ); END; $_$; ALTER FUNCTION public.createwo(integer, integer, numeric, integer, date, text) OWNER TO admin; -- -- Name: createwo(integer, integer, numeric, date, date, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createwo(integer, integer, numeric, date, date, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pQtyOrdered ALIAS FOR $3; pStartDate ALIAS FOR $4; pDueDate ALIAS FOR $5; pProductionNotes ALIAS FOR $6; BEGIN RETURN createWo( pWoNumber, pItemsiteid, 1, pQtyOrdered, pStartDate, pDueDate, pProductionNotes, NULL, NULL, -1); END; $_$; ALTER FUNCTION public.createwo(integer, integer, numeric, date, date, text) OWNER TO admin; -- -- Name: createwo(integer, integer, integer, numeric, integer, date, text, character, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createwo(integer, integer, integer, numeric, integer, date, text, character, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pPriority ALIAS FOR $3; pQtyOrdered ALIAS FOR $4; pLeadTime ALIAS FOR $5; pDueDate ALIAS FOR $6; pProductionNotes ALIAS FOR $7; pParentType ALIAS FOR $8; pParentId ALIAS FOR $9; BEGIN RETURN createWo(pWoNumber, pItemsiteid, pPriority, pQtyOrdered, (pDueDate - pLeadTime), pDueDate, pProductionNotes, pParentType, pParentId, -1); END; $_$; ALTER FUNCTION public.createwo(integer, integer, integer, numeric, integer, date, text, character, integer) OWNER TO admin; -- -- Name: createwo(integer, integer, integer, numeric, integer, date, text, character, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createwo(integer, integer, integer, numeric, integer, date, text, character, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pPriority ALIAS FOR $3; pQtyOrdered ALIAS FOR $4; pLeadTime ALIAS FOR $5; pDueDate ALIAS FOR $6; pProductionNotes ALIAS FOR $7; pParentType ALIAS FOR $8; pParentId ALIAS FOR $9; pProjectId ALIAS FOR $10; BEGIN RETURN createWo(pWoNumber, pItemsiteid, pPriority, pQtyOrdered, (pDueDate - pLeadTime), pDueDate, pProductionNotes, pParentType, pParentId, pProjectId); END; $_$; ALTER FUNCTION public.createwo(integer, integer, integer, numeric, integer, date, text, character, integer, integer) OWNER TO admin; -- -- Name: createwo(integer, integer, integer, numeric, date, date, text, character, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createwo(integer, integer, integer, numeric, date, date, text, character, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pPriority ALIAS FOR $3; pQtyOrdered ALIAS FOR $4; pStartDate ALIAS FOR $5; pDueDate ALIAS FOR $6; pProductionNotes ALIAS FOR $7; pParentType ALIAS FOR $8; pParentId ALIAS FOR $9; pProjectId ALIAS FOR $10; _woid INTEGER; _result INTEGER; _parentType char(1); _bomrevid INTEGER; _boorevid INTEGER; BEGIN SELECT getActiveRevId('BOM',itemsite_item_id) INTO _bomrevid FROM itemsite WHERE (itemsite_id=pItemsiteid); SELECT getActiveRevId('BOO',itemsite_item_id) INTO _boorevid FROM itemsite WHERE (itemsite_id=pItemsiteid); RETURN createWo(pWoNumber, pItemsiteid, pPriority, pQtyOrdered, pStartDate, pDueDate, pProductionNotes, pParentType, pParentId, pProjectId, _bomrevid, _boorevid, NULL); END; $_$; ALTER FUNCTION public.createwo(integer, integer, integer, numeric, date, date, text, character, integer, integer) OWNER TO admin; -- -- Name: createwo(integer, integer, integer, numeric, integer, date, text, character, integer, integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createwo(integer, integer, integer, numeric, integer, date, text, character, integer, integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pPriority ALIAS FOR $3; pQtyOrdered ALIAS FOR $4; pLeadTime ALIAS FOR $5; pDueDate ALIAS FOR $6; pProductionNotes ALIAS FOR $7; pParentType ALIAS FOR $8; pParentId ALIAS FOR $9; pProjectId ALIAS FOR $10; pBomRevId ALIAS FOR $11; pBooRevId ALIAS FOR $12; BEGIN RETURN createWo(pWoNumber, pItemsiteid, pPriority, pQtyOrdered, (pDueDate - pLeadTime), pDueDate, pProductionNotes, pParentType, pParentId, pProjectId, pBomRevId, pBooRevId, NULL); END; $_$; ALTER FUNCTION public.createwo(integer, integer, integer, numeric, integer, date, text, character, integer, integer, integer, integer) OWNER TO admin; -- -- Name: createwo(integer, integer, integer, numeric, date, date, text, character, integer, integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createwo(integer, integer, integer, numeric, date, date, text, character, integer, integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pPriority ALIAS FOR $3; pQtyOrdered ALIAS FOR $4; pStartDate ALIAS FOR $5; pDueDate ALIAS FOR $6; pProductionNotes ALIAS FOR $7; pParentType ALIAS FOR $8; pParentId ALIAS FOR $9; pProjectId ALIAS FOR $10; pBomRevId ALIAS FOR $11; pBooRevId ALIAS FOR $12; BEGIN RETURN createWo(pWoNumber, pItemsiteid, pPriority, pQtyOrdered, pStartDate, pDueDate, pProductionNotes, pParentType, pParentId, pProjectId, pBomRevId, pBooRevId, NULL); END; $_$; ALTER FUNCTION public.createwo(integer, integer, integer, numeric, date, date, text, character, integer, integer, integer, integer) OWNER TO admin; -- -- Name: createwo(integer, integer, integer, numeric, date, date, text, character, integer, integer, integer, integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createwo(integer, integer, integer, numeric, date, date, text, character, integer, integer, integer, integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pPriority ALIAS FOR $3; pQtyOrdered ALIAS FOR $4; pStartDate ALIAS FOR $5; pDueDate ALIAS FOR $6; pProductionNotes ALIAS FOR $7; pParentType ALIAS FOR $8; pParentId ALIAS FOR $9; pProjectId ALIAS FOR $10; pBomRevId ALIAS FOR $11; pBooRevId ALIAS FOR $12; pCosMethod ALIAS FOR $13; _startDate DATE; _woid INTEGER; _result INTEGER; _parentType char(1); _parentId INTEGER; _cosmethod char(1); _itemsite RECORD; BEGIN _parentType := COALESCE(pParentType, ' '); _parentId := COALESCE(pParentId, -1); SELECT * INTO _itemsite FROM itemsite WHERE itemsite_id = pItemsiteid; -- Check to make sure the itemsite specified is supplied at itemsite IF (NOT _itemsite.itemsite_wosupply) THEN RETURN -1; END IF; -- Check to make sure if this is a job item that it is tied to a sales order -- Or if it is just an avarage costed item IF (pCosMethod IN ('D', 'P')) THEN _cosmethod := pCosMethod; ELSE IF (_itemsite.itemsite_costmethod = 'J') THEN IF (_parentType = ' ' OR _parentId = -1) THEN RAISE EXCEPTION 'Work Orders for Item Sites that are Job cost must have a parent order.'; ELSE SELECT COALESCE(itemsite_cosdefault,fetchmetrictext('JobItemCosDefault'),'D') INTO _cosmethod FROM itemsite WHERE itemsite_id=pItemsiteid; END IF; ELSIF (_itemsite.itemsite_costmethod = 'A') THEN _cosmethod := COALESCE(_itemsite.itemsite_cosdefault,fetchmetrictext('JobItemCosDefault'),'D'); END IF; END IF; -- Check to see if the site calendar metric is set, and if so adjust the start date if necessary IF (fetchmetricbool('UseSiteCalendar')) THEN _startDate := calculatenextworkingdate(_itemsite.itemsite_warehous_id, pStartDate, 0); IF (_startDate != pStartDate) THEN _startDate := calculatenextworkingdate(_itemsite.itemsite_warehous_id, pDueDate, -_itemsite.itemsite_leadtime); END IF; ELSE _startDate := pStartDate; END IF; -- Grab the next wo_id SELECT NEXTVAL('wo_wo_id_seq') INTO _woid; -- Create the W/O INSERT INTO wo ( wo_id, wo_number, wo_subnumber, wo_itemsite_id, wo_priority, wo_ordtype, wo_ordid, wo_status, wo_startdate, wo_duedate, wo_qtyord, wo_qtyrcv, wo_prodnotes, wo_prj_id, wo_bom_rev_id, wo_boo_rev_id, wo_cosmethod ) SELECT _woid, pWoNumber, nextWoSubnumber(pWoNumber), itemsite_id, pPriority, _parentType, pParentId, 'O', _startDate, pDueDate, roundQty(item_fractional, pQtyOrdered), 0, pProductionNotes, pProjectId, pBomRevid, pBooRevid, _cosmethod FROM itemsite, item WHERE ((itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid)); -- Explode the newly created W/O according to metrics IF ( ( SELECT (metric_value='t') FROM metric WHERE (metric_name='AutoExplodeWO') ) ) THEN SELECT explodeWo( _woid, ( SELECT (metric_value = 'M') FROM metric WHERE (metric_name='WOExplosionLevel') ) ) INTO _result; ELSE _result := _woid; END IF; RETURN _result; END; $_$; ALTER FUNCTION public.createwo(integer, integer, integer, numeric, date, date, text, character, integer, integer, integer, integer, text) OWNER TO admin; -- -- Name: createwomaterial(integer, integer, character, numeric, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createwomaterial(integer, integer, character, numeric, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pWoid ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pIssueMethod ALIAS FOR $3; pQtyPer ALIAS FOR $4; pScrap ALIAS FOR $5; _result INTEGER; BEGIN SELECT createWoMaterial(pWoid, pItemsiteid, pIssueMethod, item_inv_uom_id, pQtyPer, pScrap) INTO _result FROM itemsite JOIN item ON (itemsite_item_id=item_id) WHERE(itemsite_id=pItemsiteid); RETURN _result; END; $_$; ALTER FUNCTION public.createwomaterial(integer, integer, character, numeric, numeric) OWNER TO admin; -- -- Name: createwomaterial(integer, integer, character, integer, numeric, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createwomaterial(integer, integer, character, integer, numeric, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pWoid ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pIssueMethod ALIAS FOR $3; pUomId ALIAS FOR $4; pQtyPer ALIAS FOR $5; pScrap ALIAS FOR $6; _womatlid INTEGER; BEGIN SELECT createWoMaterial(pWoid,pItemsiteid,pIssueMethod,pUomId,pQtyPer,pScrap,-1, NULL, NULL) INTO _womatlid; RETURN _womatlid; END; $_$; ALTER FUNCTION public.createwomaterial(integer, integer, character, integer, numeric, numeric) OWNER TO admin; -- -- Name: createwomaterial(integer, integer, character, integer, numeric, numeric, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createwomaterial(integer, integer, character, integer, numeric, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pWoid ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pIssueMethod ALIAS FOR $3; pUomId ALIAS FOR $4; pQtyPer ALIAS FOR $5; pScrap ALIAS FOR $6; pBomitemId ALIAS FOR $7; _womatlid INTEGER; BEGIN _womatlid := (SELECT NEXTVAL('womatl_womatl_id_seq')); INSERT INTO womatl ( womatl_id, womatl_wo_id, womatl_itemsite_id, womatl_issuemethod, womatl_uom_id, womatl_qtyper, womatl_scrap, womatl_qtyreq, womatl_qtyiss, womatl_qtywipscrap, womatl_wooper_id, womatl_bomitem_id, womatl_duedate ) SELECT _womatlid, wo_id, pItemsiteid, pIssueMethod, pUomId, pQtyPer, pScrap, roundQty(item_fractional, (wo_qtyord * (pQtyPer * (1 + pScrap)))), 0, 0, -1, pBomitemId, wo_startdate FROM wo, itemsite, item WHERE ( (itemsite_item_id=item_id) AND (wo_id=pWoid) AND (itemsite_id=pItemsiteid) ); UPDATE wo SET wo_adhoc=TRUE WHERE (wo_id=pWoid); UPDATE wo SET wo_status='E' WHERE ( (wo_status='O') AND (wo_id=pWoid) ); RETURN _womatlid; END; $_$; ALTER FUNCTION public.createwomaterial(integer, integer, character, integer, numeric, numeric, integer) OWNER TO admin; -- -- Name: createwomaterial(integer, integer, character, integer, numeric, numeric, integer, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createwomaterial(integer, integer, character, integer, numeric, numeric, integer, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pWoid ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pIssueMethod ALIAS FOR $3; pUomId ALIAS FOR $4; pQtyPer ALIAS FOR $5; pScrap ALIAS FOR $6; pBomitemId ALIAS FOR $7; pNotes ALIAS FOR $8; pRef ALIAS FOR $9; _womatlid INTEGER; _p RECORD; BEGIN _womatlid := (SELECT NEXTVAL('womatl_womatl_id_seq')); INSERT INTO womatl ( womatl_id, womatl_wo_id, womatl_itemsite_id, womatl_issuemethod, womatl_uom_id, womatl_qtyper, womatl_scrap, womatl_qtyreq, womatl_qtyiss, womatl_qtywipscrap, womatl_wooper_id, womatl_bomitem_id, womatl_duedate, womatl_notes, womatl_ref ) SELECT _womatlid, wo_id, pItemsiteid, pIssueMethod, pUomId, pQtyPer, pScrap, roundQty(item_fractional, (wo_qtyord * (pQtyPer * (1 + pScrap)))), 0, 0, -1, pBomitemId, wo_startdate, pNotes, pRef FROM wo, itemsite, item WHERE ( (itemsite_item_id=item_id) AND (wo_id=pWoid) AND (itemsite_id=pItemsiteid) ); -- Handle all of the Phantom material requirements WHILE ( ( SELECT COUNT(*) FROM womatl, itemsite, item WHERE ( (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (womatl_wo_id=pWoid) AND (item_type='F') ) ) > 0 ) LOOP FOR _p IN SELECT wo_qtyord, wo_startdate, womatl_id, womatl_wooper_id FROM wo, womatl, itemsite, item WHERE ( (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_type='F') AND (womatl_wo_id=wo_id) AND (wo_id=pWoid) ) LOOP INSERT INTO womatl ( womatl_wo_id, womatl_itemsite_id, womatl_wooper_id, womatl_schedatwooper, womatl_duedate, womatl_uom_id, womatl_qtyper, womatl_scrap, womatl_qtyreq, womatl_qtyiss, womatl_qtywipscrap, womatl_lastissue, womatl_lastreturn, womatl_cost, womatl_picklist, womatl_createwo, womatl_issuemethod, womatl_notes, womatl_ref ) SELECT pWoid, cs.itemsite_id, _p.womatl_wooper_id, womatl_schedatwooper, womatl_duedate, bomitem_uom_id, (bomitem_qtyper * womatl_qtyper), bomitem_scrap, roundQty(itemuomfractionalbyuom(bomitem_item_id, bomitem_uom_id), (_p.wo_qtyord * bomitem_qtyper * womatl_qtyper * (1 + bomitem_scrap))), 0, 0, startOfTime(), startOfTime(), 0, ci.item_picklist, ( (ci.item_type='M') AND (bomitem_createwo) ), bomitem_issuemethod, bomitem_notes, bomitem_ref FROM wo, womatl, bomitem, itemsite AS cs, itemsite AS ps, item AS ci, item AS pi WHERE ( (womatl_itemsite_id=ps.itemsite_id) AND (womatl_wo_id=wo_id) AND (bomitem_parent_item_id=pi.item_id) AND (bomitem_item_id=ci.item_id) AND (ps.itemsite_warehous_id=cs.itemsite_warehous_id) AND (cs.itemsite_item_id=ci.item_id) AND (ps.itemsite_item_id=pi.item_id) AND (woEffectiveDate(_p.wo_startdate) BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (womatl_id=_p.womatl_id)); DELETE FROM womatl WHERE (womatl_id=_p.womatl_id); END LOOP; END LOOP; UPDATE wo SET wo_adhoc=TRUE WHERE (wo_id=pWoid); UPDATE wo SET wo_status='E' WHERE ( (wo_status='O') AND (wo_id=pWoid) ); RETURN _womatlid; END; $_$; ALTER FUNCTION public.createwomaterial(integer, integer, character, integer, numeric, numeric, integer, text, text) OWNER TO admin; -- -- Name: createwomaterial(integer, integer, character, numeric, numeric, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createwomaterial(integer, integer, character, numeric, numeric, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pIssueMethod ALIAS FOR $3; pQtyFxd ALIAS FOR $4; pQtyPer ALIAS FOR $5; pScrap ALIAS FOR $6; _result INTEGER; BEGIN SELECT createWoMaterial(pWoid, pItemsiteid, pIssueMethod, item_inv_uom_id, pQtyFxd, pQtyPer, pScrap) INTO _result FROM itemsite JOIN item ON (itemsite_item_id=item_id) WHERE(itemsite_id=pItemsiteid); RETURN _result; END; $_$; ALTER FUNCTION public.createwomaterial(integer, integer, character, numeric, numeric, numeric) OWNER TO admin; -- -- Name: createwomaterial(integer, integer, character, integer, numeric, numeric, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createwomaterial(integer, integer, character, integer, numeric, numeric, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pIssueMethod ALIAS FOR $3; pUomId ALIAS FOR $4; pQtyFxd ALIAS FOR $5; pQtyPer ALIAS FOR $6; pScrap ALIAS FOR $7; _womatlid INTEGER; BEGIN SELECT createWoMaterial(pWoid,pItemsiteid,pIssueMethod,pUomId,pQtyFxd,pQtyPer,pScrap,-1, NULL, NULL) INTO _womatlid; RETURN _womatlid; END; $_$; ALTER FUNCTION public.createwomaterial(integer, integer, character, integer, numeric, numeric, numeric) OWNER TO admin; -- -- Name: createwomaterial(integer, integer, character, integer, numeric, numeric, numeric, integer, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createwomaterial(integer, integer, character, integer, numeric, numeric, numeric, integer, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pIssueMethod ALIAS FOR $3; pUomId ALIAS FOR $4; pQtyFxd ALIAS FOR $5; pQtyPer ALIAS FOR $6; pScrap ALIAS FOR $7; pBomitemId ALIAS FOR $8; pNotes ALIAS FOR $9; pRef ALIAS FOR $10; _womatlid INTEGER; BEGIN SELECT createWoMaterial(pWoid,pItemsiteid,pIssueMethod,pUomId,pQtyFxd,pQtyPer,pScrap,pBomitemId,pNotes,pRef,NULL,NULL) INTO _womatlid; RETURN _womatlid; END; $_$; ALTER FUNCTION public.createwomaterial(integer, integer, character, integer, numeric, numeric, numeric, integer, text, text) OWNER TO admin; -- -- Name: createwomaterial(integer, integer, character, integer, numeric, numeric, numeric, integer, text, text, integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION createwomaterial(pwoid integer, pitemsiteid integer, pissuemethod character, puomid integer, pqtyfxd numeric, pqtyper numeric, pscrap numeric, pbomitemid integer, pnotes text, pref text, pwooperid integer, ppicklist boolean) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _womatlid INTEGER; _p RECORD; BEGIN _womatlid := (SELECT NEXTVAL('womatl_womatl_id_seq')); INSERT INTO womatl ( womatl_id, womatl_wo_id, womatl_itemsite_id, womatl_issuemethod, womatl_uom_id, womatl_qtyfxd, womatl_qtyper, womatl_scrap, womatl_qtyreq, womatl_qtyiss, womatl_qtywipscrap, womatl_wooper_id, womatl_bomitem_id, womatl_duedate, womatl_notes, womatl_ref, womatl_picklist ) SELECT _womatlid, wo_id, pItemsiteid, pIssueMethod, pUomId, pQtyFxd, pQtyPer, pScrap, roundQty(item_fractional, (pQtyFxd + wo_qtyord * pQtyPer) * (1 + pScrap) ), 0, 0, COALESCE(pWooperId, -1), pBomitemId, wo_startdate, pNotes, pRef, COALESCE(pPickList, item_picklist) FROM wo, itemsite JOIN item ON (item_id=itemsite_item_id) WHERE ( (wo_id=pWoid) AND (itemsite_id=pItemsiteid) ); -- Handle all of the Phantom material requirements WHILE ( ( SELECT COUNT(*) FROM womatl, itemsite, item WHERE ( (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (womatl_wo_id=pWoid) AND (item_type='F') ) ) > 0 ) LOOP FOR _p IN SELECT wo_qtyord, wo_startdate, womatl_id, womatl_wooper_id FROM wo, womatl, itemsite, item WHERE ( (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_type='F') AND (womatl_wo_id=wo_id) AND (wo_id=pWoid) ) LOOP INSERT INTO womatl ( womatl_wo_id, womatl_itemsite_id, womatl_wooper_id, womatl_schedatwooper, womatl_duedate, womatl_uom_id, womatl_qtyfxd, womatl_qtyper, womatl_scrap, womatl_qtyreq, womatl_qtyiss, womatl_qtywipscrap, womatl_lastissue, womatl_lastreturn, womatl_cost, womatl_picklist, womatl_createwo, womatl_issuemethod, womatl_notes, womatl_ref ) SELECT pWoid, cs.itemsite_id, _p.womatl_wooper_id, womatl_schedatwooper, womatl_duedate, bomitem_uom_id, bomitem_qtyfxd, (bomitem_qtyper * womatl_qtyper), bomitem_scrap, roundQty(itemuomfractionalbyuom(bomitem_item_id, bomitem_uom_id), ((bomitem_qtyfxd + _p.wo_qtyord * bomitem_qtyper) * womatl_qtyper * (1 + bomitem_scrap))), 0, 0, startOfTime(), startOfTime(), 0, ci.item_picklist, ( (ci.item_type='M') AND (bomitem_createwo) ), bomitem_issuemethod, bomitem_notes, bomitem_ref FROM wo, womatl, bomitem, itemsite AS cs, itemsite AS ps, item AS ci, item AS pi WHERE ( (womatl_itemsite_id=ps.itemsite_id) AND (womatl_wo_id=wo_id) AND (bomitem_parent_item_id=pi.item_id) AND (bomitem_item_id=ci.item_id) AND (ps.itemsite_warehous_id=cs.itemsite_warehous_id) AND (cs.itemsite_item_id=ci.item_id) AND (ps.itemsite_item_id=pi.item_id) AND (woEffectiveDate(_p.wo_startdate) BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (womatl_id=_p.womatl_id)); DELETE FROM womatl WHERE (womatl_id=_p.womatl_id); END LOOP; END LOOP; UPDATE wo SET wo_adhoc=TRUE WHERE (wo_id=pWoid); UPDATE wo SET wo_status='E' WHERE ( (wo_status='O') AND (wo_id=pWoid) ); RETURN _womatlid; END; $$; ALTER FUNCTION public.createwomaterial(pwoid integer, pitemsiteid integer, pissuemethod character, puomid integer, pqtyfxd numeric, pqtyper numeric, pscrap numeric, pbomitemid integer, pnotes text, pref text, pwooperid integer, ppicklist boolean) OWNER TO admin; -- -- Name: creditmemototal(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION creditmemototal(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCreditmemoId ALIAS FOR $1; _result NUMERIC; BEGIN -- TO DO: Add in line item taxes SELECT COALESCE(cmhead_freight,0.0) + COALESCE(cmhead_misc,0.0) + ( SELECT COALESCE(ROUND(SUM((cmitem_qtycredit * cmitem_qty_invuomratio) * cmitem_unitprice / cmitem_price_invuomratio), 2), 0.0) FROM cmitem WHERE (cmitem_cmhead_id=cmhead_id) ) + (SELECT COALESCE(SUM(tax) * -1, 0) AS tax FROM ( SELECT ROUND(SUM(taxdetail_tax),2) AS tax FROM tax JOIN calculateTaxDetailSummary('CM', cmhead_id, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id) AS data) INTO _result FROM cmhead WHERE (cmhead_id=pCreditmemoId); IF (NOT FOUND) THEN return 0; ELSE RETURN _result; END IF; END; $_$; ALTER FUNCTION public.creditmemototal(integer) OWNER TO admin; -- -- Name: crmacct; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE crmacct ( crmacct_id integer NOT NULL, crmacct_number text NOT NULL, crmacct_name text, crmacct_active boolean DEFAULT true, crmacct_type character(1), crmacct_cust_id integer, crmacct_competitor_id integer, crmacct_partner_id integer, crmacct_prospect_id integer, crmacct_vend_id integer, crmacct_cntct_id_1 integer, crmacct_cntct_id_2 integer, crmacct_parent_id integer, crmacct_notes text, crmacct_taxauth_id integer, crmacct_owner_username text, crmacct_emp_id integer, crmacct_salesrep_id integer, crmacct_usr_username text, CONSTRAINT crmacct_crmacct_number_check CHECK ((crmacct_number <> ''::text)), CONSTRAINT crmacct_crmacct_type_check CHECK ((crmacct_type = ANY (ARRAY['I'::bpchar, 'O'::bpchar]))), CONSTRAINT crmacct_crmacct_usr_username_check CHECK ((btrim(crmacct_usr_username) <> ''::text)), CONSTRAINT crmacct_owner_username_check CHECK ((btrim(crmacct_owner_username) <> ''::text)) ); ALTER TABLE public.crmacct OWNER TO admin; -- -- Name: TABLE crmacct; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE crmacct IS 'CRM Accounts are umbrella records that tie together people and organizations with whom we have business relationships.'; -- -- Name: COLUMN crmacct.crmacct_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacct.crmacct_id IS 'Internal ID of this CRM Account.'; -- -- Name: COLUMN crmacct.crmacct_number; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacct.crmacct_number IS 'Abbreviated human-readable identifier for this CRM Account.'; -- -- Name: COLUMN crmacct.crmacct_name; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacct.crmacct_name IS 'Long name of this CRM Account.'; -- -- Name: COLUMN crmacct.crmacct_active; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacct.crmacct_active IS 'This CRM Account is available for new activity.'; -- -- Name: COLUMN crmacct.crmacct_type; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacct.crmacct_type IS 'This indicates whether the CRM Account represents an organization or an individual person.'; -- -- Name: COLUMN crmacct.crmacct_cust_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacct.crmacct_cust_id IS 'If this is not null, this CRM Account is a Customer.'; -- -- Name: COLUMN crmacct.crmacct_competitor_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacct.crmacct_competitor_id IS 'For now, > 0 indicates this CRM Account is a competitor. Eventually this may become a foreign key to a table of competitors.'; -- -- Name: COLUMN crmacct.crmacct_partner_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacct.crmacct_partner_id IS 'For now, > 0 indicates this CRM Account is a partner. Eventually this may become a foreign key to a table of partners.'; -- -- Name: COLUMN crmacct.crmacct_prospect_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacct.crmacct_prospect_id IS 'If this is not null, this CRM Account is a Prospect.'; -- -- Name: COLUMN crmacct.crmacct_vend_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacct.crmacct_vend_id IS 'If this is not null, this CRM Account is a Vendor.'; -- -- Name: COLUMN crmacct.crmacct_cntct_id_1; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacct.crmacct_cntct_id_1 IS 'The primary contact for the CRM Account.'; -- -- Name: COLUMN crmacct.crmacct_cntct_id_2; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacct.crmacct_cntct_id_2 IS 'The secondary contact for the CRM Account.'; -- -- Name: COLUMN crmacct.crmacct_parent_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacct.crmacct_parent_id IS 'The internal ID of an (optional) parent CRM Account. For example, if the current CRM Account is a subsidiary of another company, the crmacct_parent_id points to the CRM Account representing that parent company.'; -- -- Name: COLUMN crmacct.crmacct_notes; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacct.crmacct_notes IS 'Free-form comments pertaining to the CRM Account.'; -- -- Name: COLUMN crmacct.crmacct_taxauth_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacct.crmacct_taxauth_id IS 'If this is not null, this CRM Account is a Tax Authority.'; -- -- Name: COLUMN crmacct.crmacct_owner_username; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacct.crmacct_owner_username IS 'The application User responsible for this CRM Account.'; -- -- Name: COLUMN crmacct.crmacct_emp_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacct.crmacct_emp_id IS 'If this is not null, this CRM Account is an Employee.'; -- -- Name: COLUMN crmacct.crmacct_salesrep_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacct.crmacct_salesrep_id IS 'If this is not null, this CRM Account is a Sales Rep.'; -- -- Name: COLUMN crmacct.crmacct_usr_username; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacct.crmacct_usr_username IS 'If this is not null, this CRM Account is an application User.'; -- -- Name: crmacct(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION crmacct() RETURNS SETOF crmacct LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row crmacct%ROWTYPE; _priv TEXT; _grant BOOLEAN; BEGIN -- This query will give us the most permissive privilege the user has been granted SELECT privilege, granted INTO _priv, _grant FROM privgranted WHERE privilege IN ('MaintainAllCRMAccounts','ViewAllCRMAccounts','MaintainPersonalCRMAccounts','ViewPersonalCRMAccounts') ORDER BY granted DESC, sequence LIMIT 1; -- If have an 'All' privilege return all results IF (_priv ~ 'All' AND _grant) THEN FOR _row IN SELECT * FROM crmacct LOOP RETURN NEXT _row; END LOOP; -- Otherwise if have any other grant, must be personal privilege. ELSIF (_grant) THEN FOR _row IN SELECT * FROM crmacct WHERE crmacct_owner_username = getEffectiveXtUser() LOOP RETURN NEXT _row; END LOOP; END IF; RETURN; END; $$; ALTER FUNCTION public.crmacct() OWNER TO admin; -- -- Name: FUNCTION crmacct(); Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON FUNCTION crmacct() IS 'A table function that returns CRM Account results according to privilege settings.'; -- -- Name: crypt(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION crypt(text, text) RETURNS text LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_crypt'; ALTER FUNCTION public.crypt(text, text) OWNER TO admin; -- -- Name: currconcat(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION currconcat(integer) RETURNS character varying LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE id ALIAS FOR $1; returnVal VARCHAR(15) := ''; BEGIN SELECT currConcat(curr_abbr, curr_symbol) INTO returnVal FROM curr_symbol WHERE curr_id = id; RETURN returnVal; END; $_$; ALTER FUNCTION public.currconcat(integer) OWNER TO admin; -- -- Name: currconcat(character varying, character varying); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION currconcat(character varying, character varying) RETURNS character varying LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE curr_abbr ALIAS FOR $1; curr_symbol ALIAS FOR $2; returnVal VARCHAR(15) := ''; BEGIN IF length(trim(curr_abbr)) > 0 AND length(trim(curr_symbol)) > 0 THEN returnVal := trim(curr_abbr) || ' - ' || trim(curr_symbol); ELSIF length(trim(curr_abbr)) > 0 THEN returnVal := curr_abbr; ELSIF length(trim(curr_symbol)) > 0 THEN returnVal := curr_symbol; END IF; RETURN returnVal; END; $_$; ALTER FUNCTION public.currconcat(character varying, character varying) OWNER TO admin; -- -- Name: currentapmemonumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION currentapmemonumber() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _number INTEGER; BEGIN SELECT orderseq_number INTO _number FROM orderseq WHERE (orderseq_name='APMemoNumber'); IF (NOT FOUND) THEN _number := 0; END IF; RETURN _number; END; $$; ALTER FUNCTION public.currentapmemonumber() OWNER TO admin; -- -- Name: currentarmemonumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION currentarmemonumber() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _number INTEGER; BEGIN SELECT orderseq_number INTO _number FROM orderseq WHERE (orderseq_name='ARMemoNumber'); IF (NOT FOUND) THEN _number := 0; END IF; RETURN _number; END; $$; ALTER FUNCTION public.currentarmemonumber() OWNER TO admin; -- -- Name: currentcashrcptnumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION currentcashrcptnumber() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _number INTEGER; BEGIN SELECT orderseq_number INTO _number FROM orderseq WHERE (orderseq_name='CashRcptNumber'); IF (NOT FOUND) THEN _number := 0; END IF; RETURN _number; END; $$; ALTER FUNCTION public.currentcashrcptnumber() OWNER TO admin; -- -- Name: currentnumber(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION currentnumber(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pName ALIAS FOR $1; _number INTEGER; BEGIN SELECT orderseq_number INTO _number FROM orderseq WHERE (orderseq_name=pName); IF (NOT FOUND) THEN _number := 0; END IF; RETURN _number; END; $_$; ALTER FUNCTION public.currentnumber(text) OWNER TO admin; -- -- Name: currexchangecheckoverlap(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION currexchangecheckoverlap() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE numberOfOverlaps INTEGER NOT NULL := 0; curr_string VARCHAR(16); new_id INTEGER; BEGIN new_id := NEW.curr_id; -- ensure that effective date <= expiration date IF NEW.curr_effective > NEW.curr_expires THEN RAISE EXCEPTION 'Effective date % must be earlier than expiration date %', NEW.curr_effective, NEW.curr_expires; END IF; -- ensure new exchange rate does not overlap in time with any others SELECT count(*) INTO numberOfOverlaps FROM curr_rate WHERE curr_id = NEW.curr_id AND curr_rate_id != NEW.curr_rate_id AND ( (curr_effective BETWEEN NEW.curr_effective AND NEW.curr_expires OR curr_expires BETWEEN NEW.curr_effective AND NEW.curr_expires) OR (curr_effective <= NEW.curr_effective AND curr_expires >= NEW.curr_expires) ); IF numberOfOverlaps > 0 THEN SELECT currConcat(curr_symbol, curr_abbr) INTO curr_string FROM curr_symbol WHERE curr_id = new_id; RAISE EXCEPTION 'The date range % to % overlaps with another date range.', NEW.curr_effective, NEW.curr_expires; END IF; RETURN NEW; END; $$; ALTER FUNCTION public.currexchangecheckoverlap() OWNER TO admin; -- -- Name: currgain(integer, numeric, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION currgain(integer, numeric, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pId ALIAS FOR $1; pValue ALIAS FOR $2; pStart ALIAS FOR $3; pEnd ALIAS FOR $4; _start DATE; _end DATE; _gain NUMERIC; _multiplier INTEGER := 1; BEGIN IF (pEnd = pStart OR pValue = 0) THEN RETURN 0; END IF; IF (pStart > pEnd) THEN _start := pEnd; _end := pStart; _multiplier := -1; ELSE _start := pStart; _end := pEnd; END IF; _gain := currToBase(pId, pValue, _start) - currToBase(pId, pValue, _end); IF (_gain IS NULL) THEN RAISE EXCEPTION 'Missing exchange rate for curr_id % on % or %', pId, _start, _end; END IF; RETURN _gain * _multiplier; END; $_$; ALTER FUNCTION public.currgain(integer, numeric, date, date) OWNER TO admin; -- -- Name: curronebase(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION curronebase() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE baseCount INTEGER := 0; BEGIN IF NEW.curr_base = TRUE THEN SELECT count(*) INTO baseCount FROM curr_symbol WHERE curr_base = TRUE AND curr_id != NEW.curr_id; IF baseCount > 0 THEN RAISE EXCEPTION 'Cannot make % - % the base currency because one is already defined.', NEW.curr_symbol, NEW.curr_abbr; ELSE SELECT count(*) INTO baseCount FROM curr_rate WHERE curr_id = NEW.curr_id; IF baseCount = 0 THEN -- put a row in the curr_rate table to avoid special-case -- code for converting base currency to base currency INSERT INTO curr_rate (curr_id, curr_rate, curr_effective, curr_expires) VALUES (NEW.curr_id, 1, startOfTime(), endOfTime()); END IF; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public.curronebase() OWNER TO admin; -- -- Name: currrate(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION currrate(integer, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN currRate($1, NULL, $2); END; $_$; ALTER FUNCTION public.currrate(integer, date) OWNER TO admin; -- -- Name: currrate(integer, integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION currrate(pfromcurr integer, ptocurr integer, pdate date) RETURNS numeric LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _fromRate NUMERIC := 1.0; _toRate NUMERIC := 1.0; _returnVal NUMERIC := 1.0; BEGIN IF pFromCurr = pToCurr THEN RETURN _returnVal; END IF; IF (pFromCurr IS NOT NULL) THEN SELECT curr_rate INTO _fromRate FROM curr_rate WHERE ( (curr_id=pFromCurr) AND (pDate BETWEEN curr_effective AND curr_expires) ); IF ( NOT FOUND) THEN RAISE EXCEPTION 'Currency exchange rate for currency % not found on %', pFromCurr, formatDate(pDate); END IF; END IF; IF (pToCurr IS NOT NULL) THEN SELECT curr_rate INTO _toRate FROM curr_rate WHERE ( (curr_id=pToCurr) AND (pDate BETWEEN curr_effective AND curr_expires) ); IF ( NOT FOUND) THEN RAISE EXCEPTION 'Currency exchange rate for currency % not found on %', pToCurr, formatDate(pDate); END IF; END IF; _returnVal := _fromRate / _toRate; RETURN _returnVal; END; $$; ALTER FUNCTION public.currrate(pfromcurr integer, ptocurr integer, pdate date) OWNER TO admin; -- -- Name: currtobase(integer, numeric, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION currtobase(integer, numeric, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pId ALIAS FOR $1; pValue ALIAS FOR $2; _date DATE; _output NUMERIC; BEGIN _date := $3; IF _date IS NULL THEN _date := 'now'; END IF; IF pValue = 0 OR pValue IS NULL THEN _output := 0; ELSIF (baseCurrId() = pId) THEN _output := pValue; ELSE SELECT pValue / curr_rate INTO _output FROM curr_rate WHERE curr_id = pId AND _date BETWEEN curr_effective AND curr_expires; IF (_output IS NULL OR NOT FOUND) THEN RAISE EXCEPTION 'No exchange rate for % on %', pId, _date; END IF; END IF; RETURN _output; END; $_$; ALTER FUNCTION public.currtobase(integer, numeric, date) OWNER TO admin; -- -- Name: currtocurr(integer, integer, numeric, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION currtocurr(integer, integer, numeric, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFromCurr ALIAS FOR $1; pToCurr ALIAS FOR $2; pValue ALIAS FOR $3; pEffective ALIAS FOR $4; _convertedValue NUMERIC; _fromRate NUMERIC; _toRate NUMERIC; BEGIN IF pFromCurr = pToCurr THEN RETURN pValue; END IF; IF pValue = 0 OR pValue IS NULL THEN RETURN 0; END IF; SELECT curr_rate INTO _fromRate FROM curr_rate WHERE curr_id = pFromCurr AND pEffective BETWEEN curr_effective AND curr_expires; IF (NOT FOUND) THEN RAISE EXCEPTION 'No exchange rate for % on %', pFromCurr, pEffective; END IF; SELECT curr_rate INTO _toRate FROM curr_rate WHERE curr_id = pToCurr AND pEffective BETWEEN curr_effective AND curr_expires; IF (NOT FOUND) THEN RAISE EXCEPTION 'No exchange rate for % on %', pToCurr, pEffective; END IF; _convertedValue := pValue * _toRate / _fromRate; RETURN _convertedValue; END; $_$; ALTER FUNCTION public.currtocurr(integer, integer, numeric, date) OWNER TO admin; -- -- Name: currtolocal(integer, numeric, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION currtolocal(integer, numeric, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pId ALIAS FOR $1; pValue ALIAS FOR $2; _date DATE; _output NUMERIC; BEGIN _date := $3; IF _date IS NULL THEN _date := 'now'; END IF; IF pValue = 0 OR pValue IS NULL THEN _output := 0; ELSIF (baseCurrId() = pId) THEN _output := pValue; ELSE SELECT pValue * curr_rate INTO _output FROM curr_rate WHERE curr_id = pId AND _date BETWEEN curr_effective AND curr_expires; IF (_output IS NULL OR NOT FOUND) THEN RAISE EXCEPTION 'No exchange rate for % on %', pId, _date; END IF; END IF; RETURN _output; END; $_$; ALTER FUNCTION public.currtolocal(integer, numeric, date) OWNER TO admin; -- -- Name: custitem(integer, integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION custitem(cust_id integer, shipto_id integer DEFAULT (-1), asof date DEFAULT ('now'::text)::date) RETURNS SETOF integer LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. -- Non Exclusive SELECT item_id FROM item WHERE (NOT item_exclusive) AND (item_sold) UNION -- Exclusive, Shipto match SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_item_id=item_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE (item_exclusive) AND (item_sold) AND ($2 != -1) AND (ipsass_shipto_id=$2) AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) UNION SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_prodcat_id=item_prodcat_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE (item_exclusive) AND (item_sold) AND ($2 != -1) AND (ipsass_shipto_id=$2) AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) UNION -- Exclusive, Shipto pattern match SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_item_id=item_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) JOIN shiptoinfo ON (shipto_num ~ ipsass_shipto_pattern) WHERE (item_exclusive) AND (item_sold) AND (COALESCE(length(ipsass_shipto_pattern), 0) > 0) AND (ipsass_cust_id=$1) AND ($2 != -1) AND (shipto_id=$2) AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) UNION SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_prodcat_id=item_prodcat_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) JOIN shiptoinfo ON (shipto_num ~ ipsass_shipto_pattern) WHERE (item_exclusive) AND (item_sold) AND (COALESCE(length(ipsass_shipto_pattern), 0) > 0) AND (ipsass_cust_id=$1) AND ($2 != -1) AND (shipto_id=$2) AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) UNION -- Exclusive, Customer match SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_item_id=item_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE (item_exclusive) AND (item_sold) AND (ipsass_cust_id=$1) AND (ipsass_shipto_id=-1) AND (ipsass_shipto_pattern='') AND (ipsass_custtype_id=-1) AND (ipsass_custtype_pattern='') AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) UNION SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_prodcat_id=item_prodcat_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE (item_exclusive) AND (item_sold) AND (ipsass_cust_id=$1) AND (ipsass_shipto_id=-1) AND (ipsass_shipto_pattern='') AND (ipsass_custtype_id=-1) AND (ipsass_custtype_pattern='') AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) UNION -- Exclusive, Customer Type match SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_item_id=item_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) JOIN custinfo ON (ipsass_custtype_id=cust_custtype_id) WHERE (item_exclusive) AND (item_sold) AND (cust_id=$1) AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) UNION SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_prodcat_id=item_prodcat_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) JOIN custinfo ON (ipsass_custtype_id=cust_custtype_id) WHERE (item_exclusive) AND (item_sold) AND (cust_id=$1) AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) UNION -- Exclusive, Customer Type pattern match SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_item_id=item_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) JOIN custtype ON (custtype_code ~ ipsass_custtype_pattern) JOIN custinfo ON (cust_custtype_id=custtype_id) WHERE (item_exclusive) AND (item_sold) AND (COALESCE(length(ipsass_custtype_pattern), 0) > 0) AND (cust_id=$1) AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) UNION SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_prodcat_id=item_prodcat_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) JOIN custtype ON (custtype_code ~ ipsass_custtype_pattern) JOIN custinfo ON (cust_custtype_id=custtype_id) WHERE (item_exclusive) AND (item_sold) AND (COALESCE(length(ipsass_custtype_pattern), 0) > 0) AND (cust_id=$1) AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) $_$; ALTER FUNCTION public.custitem(cust_id integer, shipto_id integer, asof date) OWNER TO admin; -- -- Name: customercanpurchase(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION customercanpurchase(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pitemid ALIAS FOR $1; pCustid ALIAS FOR $2; BEGIN RETURN customerCanPurchase(pitemid, pCustid, -1); END; $_$; ALTER FUNCTION public.customercanpurchase(integer, integer) OWNER TO admin; -- -- Name: customercanpurchase(integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION customercanpurchase(integer, integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pitemid ALIAS FOR $1; pCustid ALIAS FOR $2; pShiptoid AlIAS FOR $3; _id INTEGER; _item RECORD; BEGIN RETURN customerCanPurchase(pitemid, pCustid, pShiptoid, CURRENT_DATE); END; $_$; ALTER FUNCTION public.customercanpurchase(integer, integer, integer) OWNER TO admin; -- -- Name: customercanpurchase(integer, integer, integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION customercanpurchase(integer, integer, integer, date) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pitemid ALIAS FOR $1; pCustid ALIAS FOR $2; pShiptoid AlIAS FOR $3; pAsOf ALIAS FOR $4; _id INTEGER; _item RECORD; BEGIN SELECT item_sold, item_exclusive INTO _item FROM item WHERE(item_id=pItemid); -- Make sure that this is at least a sold Item IF (NOT _item.item_sold) THEN RETURN FALSE; END IF; -- Everyone can purchase a non-exclusive item IF (NOT _item.item_exclusive) THEN RETURN TRUE; END IF; IF(pShiptoid != -1) THEN -- Check for a shipto Assigned Price SELECT ipsitem_id INTO _id FROM ipsiteminfo, ipshead, ipsass WHERE((ipsitem_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsitem_item_id=pItemid) AND (ipsass_shipto_id != -1) AND (ipsass_shipto_id=pShiptoid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; SELECT ipsitem_id INTO _id FROM ipsiteminfo, item, ipshead, ipsass WHERE((ipsitem_ipshead_id=ipshead_id) AND (ipsitem_prodcat_id = item_prodcat_id) AND (ipsass_ipshead_id=ipshead_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (item_id=pItemid) AND (ipsass_shipto_id != -1) AND (ipsass_shipto_id=pShiptoid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; -- Check for a Shipto Pattern Assigned Price SELECT ipsitem_id INTO _id FROM ipsiteminfo, ipshead, ipsass, shiptoinfo WHERE((ipsitem_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (COALESCE(length(ipsass_shipto_pattern), 0) > 0) AND (shipto_num ~ ipsass_shipto_pattern) AND (ipsass_cust_id=pCustid) AND (ipsitem_item_id=pItemid) AND (shipto_id=pShiptoid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; SELECT ipsitem_id INTO _id FROM ipsiteminfo, item, ipshead, ipsass, shiptoinfo WHERE((ipsitem_ipshead_id=ipshead_id) AND (ipsitem_prodcat_id = item_prodcat_id) AND (ipsass_ipshead_id=ipshead_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (COALESCE(length(ipsass_shipto_pattern), 0) > 0) AND (shipto_num ~ ipsass_shipto_pattern) AND (ipsass_cust_id=pCustid) AND (item_id=pItemid) AND (shipto_id=pShiptoid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; END IF; -- Check for a Customer Assigned Price SELECT ipsitem_id INTO _id FROM ipsiteminfo, ipshead, ipsass WHERE((ipsitem_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsitem_item_id=pItemid) AND (COALESCE(length(ipsass_shipto_pattern), 0) = 0) AND (ipsass_cust_id=pCustid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; SELECT ipsitem_id INTO _id FROM ipsiteminfo, item, ipshead, ipsass WHERE((ipsitem_ipshead_id=ipshead_id) AND (ipsitem_prodcat_id = item_prodcat_id) AND (ipsass_ipshead_id=ipshead_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (item_id=pItemid) AND (COALESCE(length(ipsass_shipto_pattern), 0) = 0) AND (ipsass_cust_id=pCustid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; -- Check for a Customer Type Assigned Price SELECT ipsitem_id INTO _id FROM ipsiteminfo, ipshead, ipsass, custinfo WHERE( (ipsitem_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (ipsass_custtype_id != -1) AND (cust_custtype_id = ipsass_custtype_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsitem_item_id=pItemid) AND (cust_id=pCustid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; SELECT ipsitem_id INTO _id FROM ipsiteminfo, item, ipshead, ipsass, custinfo WHERE( (ipsitem_ipshead_id=ipshead_id) AND (ipsitem_prodcat_id = item_prodcat_id) AND (ipsass_ipshead_id=ipshead_id) AND (ipsass_custtype_id != -1) AND (cust_custtype_id = ipsass_custtype_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (item_id=pItemid) AND (cust_id=pCustid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; -- Check for a Customer Type Pattern Assigned Price SELECT ipsitem_id INTO _id FROM ipsiteminfo, ipshead, ipsass, custtype, custinfo WHERE((ipsitem_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (coalesce(length(ipsass_custtype_pattern), 0) > 0) AND (custtype_code ~ ipsass_custtype_pattern) AND (cust_custtype_id=custtype_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsitem_item_id=pItemid) AND (cust_id=pCustid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; SELECT ipsitem_id INTO _id FROM ipsiteminfo, item, ipshead, ipsass, custtype, custinfo WHERE((ipsitem_ipshead_id=ipshead_id) AND (ipsitem_prodcat_id = item_prodcat_id) AND (ipsass_ipshead_id=ipshead_id) AND (coalesce(length(ipsass_custtype_pattern), 0) > 0) AND (custtype_code ~ ipsass_custtype_pattern) AND (cust_custtype_id=custtype_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (item_id=pItemid) AND (cust_id=pCustid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; -- That's it, Sales don't count - yet RETURN FALSE; END; $_$; ALTER FUNCTION public.customercanpurchase(integer, integer, integer, date) OWNER TO admin; -- -- Name: dearmor(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION dearmor(text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_dearmor'; ALTER FUNCTION public.dearmor(text) OWNER TO admin; -- -- Name: decrypt(bytea, bytea, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION decrypt(bytea, bytea, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_decrypt'; ALTER FUNCTION public.decrypt(bytea, bytea, text) OWNER TO admin; -- -- Name: decrypt_iv(bytea, bytea, bytea, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION decrypt_iv(bytea, bytea, bytea, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_decrypt_iv'; ALTER FUNCTION public.decrypt_iv(bytea, bytea, bytea, text) OWNER TO admin; -- -- Name: defaultlocationname(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION defaultlocationname(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; _p RECORD; BEGIN SELECT itemsite_location_id, itemsite_location INTO _p FROM itemsite WHERE (itemsite_id=pItemsiteid); IF (NOT FOUND) THEN RETURN 'Error'; ELSIF (_p.itemsite_location_id = -1) THEN RETURN _p.itemsite_location; ELSE RETURN formatLocationName(_p.itemsite_location_id); END IF; END; $_$; ALTER FUNCTION public.defaultlocationname(integer) OWNER TO admin; -- -- Name: deleteaccount(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteaccount(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAccntid ALIAS FOR $1; _check INTEGER; BEGIN -- Check to see if the passed accnt is used in a Cost Category SELECT costcat_id INTO _check FROM costcat WHERE ( (costcat_asset_accnt_id=pAccntid) OR (costcat_liability_accnt_id=pAccntid) OR (costcat_adjustment_accnt_id=pAccntid) OR (costcat_purchprice_accnt_id=pAccntid) OR (costcat_laboroverhead_accnt_id=pAccntid) OR (costcat_scrap_accnt_id=pAccntid) OR (costcat_invcost_accnt_id=pAccntid) OR (costcat_wip_accnt_id=pAccntid) OR (costcat_shipasset_accnt_id=pAccntid) OR (costcat_mfgscrap_accnt_id=pAccntid) OR (costcat_transform_accnt_id=pAccntid) OR (costcat_freight_accnt_id=pAccntid) ) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Check to see if the passed accnt is used in a Sales Account Assignment SELECT salesaccnt_id INTO _check FROM salesaccnt WHERE ( (salesaccnt_sales_accnt_id=pAccntid) OR (salesaccnt_credit_accnt_id=pAccntid) OR (salesaccnt_cos_accnt_id=pAccntid) ) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; -- Check to see if the passed accnt is used in a A/R Account Assignment SELECT araccnt_id INTO _check FROM araccnt WHERE ( (araccnt_freight_accnt_id=pAccntid) OR (araccnt_ar_accnt_id=pAccntid) OR (araccnt_prepaid_accnt_id=pAccntid) ) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; -- Check to see if the passed accnt is used in a Warehouse IF EXISTS (SELECT 1 FROM whsinfo WHERE (warehous_default_accnt_id=pAccntid)) THEN RETURN -4; END IF; -- Check to see if the passed accnt is used in a Bank Account SELECT bankaccnt_id INTO _check FROM bankaccnt WHERE (bankaccnt_accnt_id=pAccntid) LIMIT 1; IF (FOUND) THEN RETURN -5; END IF; -- Check to see if the passed accnt is used in an Expense Category SELECT expcat_id INTO _check FROM expcat WHERE ( (expcat_exp_accnt_id=pAccntid) OR (expcat_liability_accnt_id=pAccntid) OR (expcat_purchprice_accnt_id=pAccntid) OR (expcat_freight_accnt_id=pAccntid) ) LIMIT 1; IF (FOUND) THEN RETURN -6; END IF; -- Check to see if the passed accnt is used in a Tax Code SELECT tax_id INTO _check FROM tax WHERE (tax_sales_accnt_id=pAccntid) LIMIT 1; IF (FOUND) THEN RETURN -7; END IF; -- Check to see if the passed accnt is used in a Standard Journal Item SELECT stdjrnlitem_id INTO _check FROM stdjrnlitem WHERE (stdjrnlitem_accnt_id=pAccntid) LIMIT 1; IF (FOUND) THEN RETURN -8; END IF; -- Check to see if the passed accnt is used in a A/P Account Assignment SELECT apaccnt_ap_accnt_id INTO _check FROM apaccnt WHERE ( (apaccnt_ap_accnt_id=pAccntid) OR (apaccnt_prepaid_accnt_id=pAccntid) OR (apaccnt_discount_accnt_id=pAccntid) ) LIMIT 1; IF (FOUND) THEN RETURN -9; END IF; -- Check to see if the passed accnt is used in an A/R Open Item record SELECT aropen_accnt_id INTO _check FROM aropen WHERE (aropen_accnt_id=pAccntid) LIMIT 1; IF (FOUND) THEN RETURN -11; END IF; -- Check to see if the passed accnt has been used in the G/L SELECT gltrans_accnt_id INTO _check FROM gltrans WHERE (gltrans_accnt_id=pAccntid) LIMIT 1; IF (FOUND) THEN RETURN -99; END IF; SELECT glseries_accnt_id INTO _check FROM glseries WHERE (glseries_accnt_id=pAccntid) LIMIT 1; IF (FOUND) THEN RETURN -99; END IF; SELECT trialbal_accnt_id INTO _check FROM trialbal WHERE (trialbal_accnt_id=pAccntid) AND (trialbal_beginning != 0 OR trialbal_ending != 0) LIMIT 1; IF (FOUND) THEN RETURN -99; END IF; SELECT cashrcptmisc_accnt_id INTO _check FROM cashrcptmisc WHERE (cashrcptmisc_accnt_id=pAccntid) LIMIT 1; IF (FOUND) THEN RETURN -99; END IF; -- Delete any non-critical use DELETE FROM flitem WHERE (flitem_accnt_id=pAccntid); -- only possible because of trialbal error-check above DELETE FROM trialbal WHERE (trialbal_accnt_id=pAccntid) AND (trialbal_beginning=0) AND (trialbal_ending=0); -- Delete the Account DELETE FROM accnt WHERE (accnt_id=pAccntid); RETURN 0; END; $_$; ALTER FUNCTION public.deleteaccount(integer) OWNER TO admin; -- -- Name: deleteaccountingperiod(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteaccountingperiod(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; _check RECORD; BEGIN -- Check to make sure that the passed period is not closed IF ( ( SELECT period_closed FROM period WHERE (period_id=pPeriodid) ) ) THEN RETURN -1; END IF; -- Check to make sure that there are not any posted G/L Transactions -- in the period. SELECT gltrans_id INTO _check FROM gltrans, period WHERE ( (gltrans_date BETWEEN period_start AND period_end) AND (gltrans_posted) AND (period_id=pPeriodid) ) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; SELECT b.period_id INTO _check FROM period AS a, period AS b WHERE((a.period_id=pPeriodid) AND (a.period_end < b.period_start)) LIMIT 1; IF (FOUND) THEN RETURN -5; END IF; -- Delete the period DELETE FROM period WHERE (period_id=pPeriodid); RETURN 1; END; $_$; ALTER FUNCTION public.deleteaccountingperiod(integer) OWNER TO admin; -- -- Name: deleteaccountingyearperiod(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteaccountingyearperiod(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; _check RECORD; BEGIN -- Check to make sure that the passed yearperiod is not closed IF ( ( SELECT yearperiod_closed FROM yearperiod WHERE (yearperiod_id=pPeriodid) ) ) THEN RETURN -1; END IF; -- this yearperiod is in use by existing periods IF (EXISTS(SELECT period_id FROM period WHERE (period_yearperiod_id=pPeriodid))) THEN RETURN -2; END IF; -- Delete the yearperiod DELETE FROM yearperiod WHERE (yearperiod_id=pPeriodid); RETURN 1; END; $_$; ALTER FUNCTION public.deleteaccountingyearperiod(integer) OWNER TO admin; -- -- Name: deleteaddress(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteaddress(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE paddrId ALIAS FOR $1; _count INTEGER := 0; BEGIN SELECT count(*) INTO _count FROM cntct WHERE (cntct_active AND (cntct_addr_id = paddrId)); IF (_count > 0) THEN RETURN -1; END IF; SELECT count(*) INTO _count FROM vendinfo WHERE (vend_active AND (vend_addr_id = paddrId)); IF (_count > 0) THEN RETURN -2; END IF; SELECT count(*) INTO _count FROM shiptoinfo WHERE (shipto_active AND (shipto_addr_id = paddrId)); IF (_count > 0) THEN RETURN -3; END IF; SELECT count(*) INTO _count FROM vendaddrinfo WHERE (vendaddr_addr_id = paddrId); IF (_count > 0) THEN RETURN -4; END IF; SELECT count(*) INTO _count FROM whsinfo WHERE (warehous_active AND (warehous_addr_id = paddrId)); IF (_count > 0) THEN RETURN -5; END IF; UPDATE cntct SET cntct_addr_id = NULL WHERE (cntct_addr_id = paddrId); UPDATE vendinfo SET vend_addr_id = NULL WHERE (vend_addr_id = paddrId); UPDATE shiptoinfo SET shipto_addr_id = NULL WHERE (shipto_addr_id =paddrId); UPDATE vendaddrinfo SET vendaddr_addr_id = NULL WHERE (vendaddr_addr_id = paddrId); UPDATE whsinfo SET warehous_addr_id = NULL WHERE (warehous_addr_id=paddrId); DELETE FROM addr WHERE addr_id = paddrId; RETURN 0; END; $_$; ALTER FUNCTION public.deleteaddress(integer) OWNER TO admin; -- -- Name: deleteapcheck(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteapcheck(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'deleteAPCheck() is deprecated - use deleteCheck() instead'; RETURN deleteCheck($1); END; $_$; ALTER FUNCTION public.deleteapcheck(integer) OWNER TO admin; -- -- Name: deletebankadjustmenttype(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletebankadjustmenttype(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankadjtypeid ALIAS FOR $1; _check INTEGER; BEGIN -- Check to see if the the adjustment type is being used in any adjustments SELECT bankadj_bankadjtype_id INTO _check FROM bankadj WHERE (bankadj_bankadjtype_id=pBankadjtypeid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Delete the Account DELETE FROM bankadjtype WHERE (bankadjtype_id=pbankadjtypeid); RETURN 0; END; $_$; ALTER FUNCTION public.deletebankadjustmenttype(integer) OWNER TO admin; -- -- Name: deletebankreconciliation(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletebankreconciliation(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pbankrecid ALIAS FOR $1; BEGIN DELETE FROM bankrecitem WHERE bankrecitem_bankrec_id=pbankrecid; DELETE FROM bankrec WHERE bankrec_id=pbankrecid; RETURN 0; END; $_$; ALTER FUNCTION public.deletebankreconciliation(integer) OWNER TO admin; -- -- Name: deletebom(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletebom(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; _result INTEGER; BEGIN IF (fetchmetricbool('RevControl')) THEN SELECT rev_id INTO _result FROM rev WHERE ((rev_target_id=pItemid) AND (rev_target_type = 'BOM')) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Bill of Materials has revision control records and may not be deleted.'; END IF; END IF; DELETE FROM bomhead WHERE (bomhead_item_id=pItemid); DELETE FROM bomitem WHERE (bomitem_parent_item_id=pItemid); RETURN 0; END; $_$; ALTER FUNCTION public.deletebom(integer) OWNER TO admin; -- -- Name: deletebomworkset(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletebomworkset(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWorksetid ALIAS FOR $1; BEGIN -- All done with the bomwork set indicated by pWorksetid, delete all of it DELETE FROM bomwork WHERE (bomwork_set_id=pWorksetid); RETURN 1; END; $_$; ALTER FUNCTION public.deletebomworkset(integer) OWNER TO admin; -- -- Name: deletebudget(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletebudget(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBudgheadid ALIAS FOR $1; BEGIN DELETE FROM budgitem WHERE (budgitem_budghead_id=pBudgheadid); DELETE FROM budghead WHERE (budghead_id=pBudgheadid); RETURN pBudgheadid; END; $_$; ALTER FUNCTION public.deletebudget(integer) OWNER TO admin; -- -- Name: deletebudgetitems(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletebudgetitems(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBudgheadid ALIAS FOR $1; BEGIN DELETE FROM budgitem WHERE (budgitem_budghead_id=pBudgheadid); RETURN pBudgheadid; END; $_$; ALTER FUNCTION public.deletebudgetitems(integer) OWNER TO admin; -- -- Name: deletecashrcpt(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletecashrcpt(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pcashrcptid ALIAS FOR $1; _ccreceipt BOOLEAN; BEGIN IF EXISTS(SELECT cashrcpt_id FROM cashrcpt JOIN ccpay ON (cashrcpt_cust_id=ccpay_cust_id) AND ((CASE WHEN TRIM(COALESCE(cashrcpt_docnumber, ''))='' THEN TEXT(cashrcpt_id) ELSE cashrcpt_docnumber END)=ccpay_order_number) WHERE ((cashrcpt_fundstype IN ('A', 'D', 'M', 'V')) AND (ccpay_status NOT IN ('D', 'X')) AND (ccpay_id NOT IN (SELECT payco_ccpay_id FROM payco)) AND (cashrcpt_id=pcashrcptid))) THEN RETURN -1; END IF; IF EXISTS(SELECT cashrcpt_id FROM cashrcpt WHERE ( (cashrcpt_id=pcashrcptid) AND (cashrcpt_posted) )) THEN RETURN -2; END IF; -- If there are applications for this Cash Receipt then -- it has been posted and reversed. Void instead of delete. IF EXISTS(SELECT cashrcpt_id FROM cashrcpt JOIN cashrcptitem ON (cashrcptitem_cashrcpt_id=cashrcpt_id) JOIN arapply ON ((arapply_reftype='CRA') AND (arapply_ref_id=cashrcptitem_id)) WHERE (cashrcpt_id=pcashrcptid)) OR EXISTS(SELECT cashrcpt_id FROM cashrcpt JOIN cashrcptmisc ON (cashrcptmisc_cashrcpt_id=cashrcpt_id) JOIN arapply ON ((arapply_reftype='CRD') AND (arapply_ref_id=cashrcptmisc_id)) WHERE (cashrcpt_id=pcashrcptid)) THEN UPDATE cashrcpt SET cashrcpt_void = TRUE WHERE (cashrcpt_id=pcashrcptid); RETURN 1; END IF; DELETE FROM cashrcptitem WHERE (cashrcptitem_cashrcpt_id=pcashrcptid); DELETE FROM cashrcptmisc WHERE (cashrcptmisc_cashrcpt_id=pcashrcptid); DELETE FROM cashrcpt WHERE (cashrcpt_id=pcashrcptid); RETURN 1; END; $_$; ALTER FUNCTION public.deletecashrcpt(integer) OWNER TO admin; -- -- Name: deletecharacteristic(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletecharacteristic(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCharid ALIAS FOR $1; _check INTEGER; _r RECORD; BEGIN -- Cache the specifics of the characteristic SELECT * INTO _r FROM char WHERE (char_id=pCharid); IF (NOT(FOUND)) THEN RETURN 0; END IF; -- If the passed characteristic is used SELECT * INTO _r FROM charass WHERE (charass_char_id=pCharid) LIMIT 1; IF (FOUND) THEN IF (_r.charass_target_type = 'I') THEN RETURN -1; ELSIF (_r.charass_target_type = 'C') THEN RETURN -2; ELSIF (_r.charass_target_type = 'ADDR') THEN RETURN -3; ELSIF (_r.charass_target_type = 'CNTCT') THEN RETURN -4; ELSIF (_r.charass_target_type = 'CRMACCT') THEN RETURN -5; ELSIF (_r.charass_target_type = 'INCDT ') THEN RETURN -6; ELSIF (_r.charass_target_type = 'EMP') THEN RETURN -7; ELSE RETURN -99; END IF; END IF; -- Delete the passed characterisitic DELETE FROM char WHERE (char_id=pCharid); RETURN pCharid; END; $_$; ALTER FUNCTION public.deletecharacteristic(integer) OWNER TO admin; -- -- Name: deletecheck(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletecheck(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCheckid ALIAS FOR $1; BEGIN IF (SELECT (NOT checkhead_void) OR checkhead_posted OR checkhead_replaced OR checkhead_deleted OR (checkhead_ach_batch IS NOT NULL AND checkhead_printed) FROM checkhead WHERE (checkhead_id=pCheckid) ) THEN RETURN -1; END IF; UPDATE checkhead SET checkhead_deleted=TRUE WHERE (checkhead_id=pCheckid); RETURN 1; END; $_$; ALTER FUNCTION public.deletecheck(integer) OWNER TO admin; -- -- Name: deleteclasscode(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteclasscode(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pClasscodeid ALIAS FOR $1; _check INTEGER; BEGIN -- Check to see if any items are assigned to the passed classcode SELECT item_id INTO _check FROM item WHERE (item_classcode_id=pClasscodeid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Delete the passed classcode DELETE FROM classcode WHERE (classcode_id=pClasscodeid); RETURN pClasscodeid; END; $_$; ALTER FUNCTION public.deleteclasscode(integer) OWNER TO admin; -- -- Name: deletecompany(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletecompany(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pcompanyid ALIAS FOR $1; BEGIN IF (EXISTS(SELECT accnt_id FROM accnt, company WHERE ((accnt_company=company_number) AND (company_id=pcompanyid)) )) THEN RETURN -1; END IF; DELETE FROM company WHERE (company_id=pcompanyid); RETURN pcompanyid; END; $_$; ALTER FUNCTION public.deletecompany(integer) OWNER TO admin; -- -- Name: deletecreditmemo(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletecreditmemo(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmheadid ALIAS FOR $1; BEGIN DELETE FROM cmitem WHERE (cmitem_cmhead_id=pCmheadid); DELETE FROM cmhead WHERE (cmhead_id=pCmheadid); RETURN TRUE; END; $_$; ALTER FUNCTION public.deletecreditmemo(integer) OWNER TO admin; -- -- Name: deletecustomer(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletecustomer(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; BEGIN PERFORM shipto_id FROM shiptoinfo WHERE (shipto_cust_id=pCustid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; PERFORM cohead_id FROM cohead WHERE (cohead_cust_id=pCustid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; PERFORM cmhead_id FROM cmhead WHERE (cmhead_cust_id=pCustid) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; PERFORM cohist_id FROM cohist WHERE (cohist_cust_id=pCustid) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; PERFORM aropen_id FROM aropen WHERE (aropen_cust_id=pCustid) LIMIT 1; IF (FOUND) THEN RETURN -5; END IF; PERFORM checkhead_recip_id FROM checkhead WHERE ((checkhead_recip_id=pCustid) AND (checkhead_recip_type='C')) LIMIT 1; IF (FOUND) THEN RETURN -6; END IF; PERFORM invchead_id FROM invchead WHERE(invchead_cust_id=pCustid) LIMIT 1; IF (FOUND) THEN RETURN -7; END IF; PERFORM quhead_id FROM quhead WHERE(quhead_cust_id=pCustid) LIMIT 1; IF (FOUND) THEN RETURN -8; END IF; DELETE FROM taxreg WHERE ((taxreg_rel_type='C') AND (taxreg_rel_id=pCustid)); DELETE FROM ipsass WHERE (ipsass_cust_id=pCustid); DELETE FROM custinfo WHERE (cust_id=pCustid); UPDATE crmacct SET crmacct_cust_id = NULL WHERE (crmacct_cust_id=pCustid); RETURN 0; END; $_$; ALTER FUNCTION public.deletecustomer(integer) OWNER TO admin; -- -- Name: deletecustomertype(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletecustomertype(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCusttypeid ALIAS FOR $1; BEGIN IF EXISTS(SELECT 1 FROM custinfo WHERE (cust_custtype_id=pCusttypeid)) THEN RETURN -1; END IF; DELETE FROM ipsass WHERE (ipsass_custtype_id=pCusttypeid); DELETE FROM salesaccnt WHERE (salesaccnt_custtype_id=pCusttypeid); DELETE FROM araccnt WHERE (araccnt_custtype_id=pCusttypeid); DELETE FROM custform WHERE (custform_custtype_id=pCusttypeid); DELETE FROM custtype WHERE (custtype_id=pCusttypeid); RETURN pCusttypeid; END; $_$; ALTER FUNCTION public.deletecustomertype(integer) OWNER TO admin; -- -- Name: deleteempgrp(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteempgrp(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pempgrpid ALIAS FOR $1; BEGIN -- Check to see if any employees are assigned to the passed empgrp PERFORM empgrpitem_emp_id FROM empgrpitem WHERE (empgrpitem_empgrp_id=pempgrpid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; DELETE FROM empgrp WHERE (empgrp_id=pempgrpid); RETURN 0; END; $_$; ALTER FUNCTION public.deleteempgrp(integer) OWNER TO admin; -- -- Name: deleteexpiredips(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteexpiredips() RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; BEGIN FOR _r IN SELECT ipshead_id FROM ipshead WHERE (ipshead_expires <= current_date) LOOP DELETE FROM ipsass WHERE (ipsass_ipshead_id=_r.ipshead_id); DELETE FROM ipsiteminfo WHERE (ipsitem_ipshead_id=_r.ipshead_id); DELETE FROM ipsfreight WHERE (ipsfreight_ipshead_id=_r.ipshead_id); DELETE FROM ipshead WHERE (ipshead_id=_r.ipshead_id); END LOOP; RETURN TRUE; END; $$; ALTER FUNCTION public.deleteexpiredips() OWNER TO admin; -- -- Name: deletefile(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletefile(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ declare pId ALIAS FOR $1; begin delete from file where ( file_id in ( select file_id from file join docass on (docass_target_id=file_id) and (docass_target_type='FILE') where ( docass_id = pId ) ) ); delete from docass where docass_id = pId; return true; end; $_$; ALTER FUNCTION public.deletefile(integer) OWNER TO admin; -- -- Name: deleteflgrp(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteflgrp(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlgrpid ALIAS FOR $1; _r RECORD; BEGIN FOR _r IN SELECT flgrp_id FROM flgrp WHERE (flgrp_flgrp_id=pFlgrpid) LOOP PERFORM deleteFlgrp(_r.flgrp_id); END LOOP; DELETE FROM flitem WHERE (flitem_flgrp_id=pFlgrpid); DELETE FROM flspec WHERE (flspec_flgrp_id=pFlgrpid); DELETE FROM flgrp WHERE (flgrp_id=pFlgrpid); RETURN 1; END; $_$; ALTER FUNCTION public.deleteflgrp(integer) OWNER TO admin; -- -- Name: deleteform(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteform(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFormid ALIAS FOR $1; _key TEXT; _check INTEGER; BEGIN -- Cache the key of the passed form SELECT form_key INTO _key FROM form WHERE (form_id=pFormid); IF (NOT(FOUND)) THEN RETURN 0; END IF; -- Handle checks based on the type of the form IF (_key='Chck') THEN SELECT bankaccnt_id INTO _check FROM bankaccnt WHERE (bankaccnt_check_form_id=pFormid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; END IF; -- Delete the form DELETE FROM form WHERE (form_id=pFormid); RETURN pFormid; END; $_$; ALTER FUNCTION public.deleteform(integer) OWNER TO admin; -- -- Name: deletefreightclass(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletefreightclass(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFreightClassid ALIAS FOR $1; _check INTEGER; BEGIN -- Check to see if any items are assigned to the passed freightclass SELECT item_id INTO _check FROM item WHERE (item_freightclass_id=pFreightClassid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Delete the passed freightclass DELETE FROM freightclass WHERE (freightclass_id=pFreightClassid); RETURN pFreightClassid; END; $_$; ALTER FUNCTION public.deletefreightclass(integer) OWNER TO admin; -- -- Name: deleteglseries(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteglseries(integer) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pSequence ALIAS FOR $1; BEGIN DELETE FROM glseries WHERE (glseries_sequence=pSequence); RETURN pSequence; END; $_$; ALTER FUNCTION public.deleteglseries(integer) OWNER TO admin; -- -- Name: deleteglseries(integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteglseries(integer, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pNotes ALIAS FOR $2; _trialbalid INTEGER; _count INTEGER; _r RECORD; BEGIN -- March through all of the G/L Transactions for the passed sequence FOR _r IN SELECT gltrans_id, gltrans_date, gltrans_accnt_id, gltrans_amount, gltrans_posted, gltrans_rec, accnt_forwardupdate, period_id, period_closed, period_freeze FROM accnt, gltrans LEFT OUTER JOIN period ON (gltrans_date BETWEEN period_start AND period_end) WHERE ( (gltrans_accnt_id=accnt_id) AND (NOT gltrans_deleted) AND (gltrans_sequence=pSequence) ) LOOP -- If we can post into a Trial Balance, do so IF ( (NOT _r.period_closed) AND ( (NOT _r.period_freeze) OR (checkPrivilege('PostFrozenPeriod')) ) AND ( NOT _r.gltrans_rec) AND ( _r.gltrans_posted ) ) THEN -- Try to find an existing trialbal SELECT trialbal_id INTO _trialbalid FROM trialbal WHERE ( (trialbal_period_id=_r.period_id) AND (trialbal_accnt_id=_r.gltrans_accnt_id) ); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count > 0) THEN -- We found a trialbal, update it with the G/L Transaction -- Note - two stage update to avoid any funny value caching logic IF (_r.gltrans_amount > 0) THEN UPDATE trialbal SET trialbal_credits = (trialbal_credits - _r.gltrans_amount) WHERE (trialbal_id=_trialbalid); ELSE UPDATE trialbal SET trialbal_debits = (trialbal_debits - (_r.gltrans_amount * -1)) WHERE (trialbal_id=_trialbalid); END IF; UPDATE trialbal SET trialbal_ending = (trialbal_beginning - trialbal_debits + trialbal_credits), trialbal_dirty=TRUE WHERE (trialbal_id=_trialbalid); ELSE RAISE EXCEPTION 'Can not delete G/L Series. Trial balance record not found.'; END IF; -- Forward update if we should IF (_r.accnt_forwardupdate AND fetchmetricbool('ManualForwardUpdate')) THEN PERFORM forwardUpdateTrialBalance(_trialbalid); END IF; -- Delete any bank reconciliation records if this was marked cleared but non reconciled DELETE FROM bankrecitem WHERE ((bankrecitem_source='GL') AND (bankrecitem_source_id=_r.gltrans_id)); -- Unflag any journals as posted as a result of this series UPDATE sltrans SET sltrans_posted=false, sltrans_gltrans_journalnumber=null FROM gltrans WHERE ((gltrans_sequence=pSequence) AND (sltrans_gltrans_journalnumber=gltrans_journalnumber)); -- Mark the G/L Transaction as deleted UPDATE gltrans SET gltrans_posted=false, gltrans_deleted=true, gltrans_notes=gltrans_notes || E'\n' || pNotes WHERE (gltrans_id=_r.gltrans_id); ELSIF (_r.period_freeze) THEN RAISE EXCEPTION 'Can not delete a G/L Transaction in a frozen period'; ELSIF (_r.period_closed) THEN RAISE EXCEPTION 'Can not delete a G/L Transaction on account % in a closed period', formatGlAccount(_r.gltrans_accnt_id); ELSIF (_r.gltrans_rec) THEN RAISE EXCEPTION 'Can not delete a G/L Transaction that has been reconciled'; ELSIF (NOT _r.gltrans_posted) THEN RAISE EXCEPTION 'Can not delete a G/L Transaction that has not been posted to Trial Balance'; END IF; END LOOP; RETURN true; END; $_$; ALTER FUNCTION public.deleteglseries(integer, text) OWNER TO admin; -- -- Name: deleteincident(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteincident(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pincdtid ALIAS FOR $1; _count INTEGER := 0; _incdtnbr INTEGER := 0; BEGIN SELECT COUNT(*) INTO _count FROM todoitem WHERE (todoitem_incdt_id=pincdtid); IF (_count > 0) THEN RETURN -1; END IF; DELETE FROM comment WHERE((comment_source='INCDT') AND (comment_source_id=pincdtid)); DELETE FROM incdthist WHERE (incdthist_incdt_id=pincdtid); DELETE FROM imageass WHERE ((imageass_source='INCDT') AND (imageass_source_id=pincdtid)); DELETE FROM url WHERE ((url_source='INCDT') AND (url_source_id=pincdtid)); SELECT incdt_number INTO _incdtnbr FROM incdt WHERE (incdt_id=pincdtid); DELETE FROM incdt WHERE (incdt_id=pincdtid); -- Incident #11538 needs to be fully resolved before release can be implemented -- PERFORM releaseIncidentNumber(_incdtnbr); RETURN 0; END; $_$; ALTER FUNCTION public.deleteincident(integer) OWNER TO admin; -- -- Name: deleteinvoice(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteinvoice(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcheadid ALIAS FOR $1; BEGIN UPDATE shipitem SET shipitem_invoiced=FALSE, shipitem_invcitem_id=NULL FROM invcitem WHERE ((shipitem_invoiced) AND (shipitem_invcitem_id=invcitem_id) AND (invcitem_invchead_id=pInvcheadid)); UPDATE coitem SET coitem_status = 'O' WHERE ((coitem_status = 'C') AND (coitem_id IN (SELECT cobill_coitem_id FROM cobill, invcitem WHERE ((cobill_invcitem_id=invcitem_id) AND (invcitem_invchead_id=pInvcheadid))))); UPDATE cobill SET cobill_invcnum=NULL, cobill_invcitem_id=NULL FROM invcitem WHERE ((cobill_invcitem_id=invcitem_id) AND (invcitem_invchead_id=pInvcheadid)); UPDATE invdetail SET invdetail_invcitem_id=NULL FROM invcitem WHERE ((invdetail_invcitem_id=invcitem_id) AND (invcitem_invchead_id=pInvcheadid)); UPDATE cobmisc SET cobmisc_invcnumber=NULL, cobmisc_invchead_id=NULL, cobmisc_posted=FALSE WHERE (cobmisc_invchead_id=pInvcheadid); DELETE FROM aropenalloc WHERE (aropenalloc_doctype='I') AND (aropenalloc_doc_id=pInvcheadid); DELETE FROM invcitem WHERE (invcitem_invchead_id=pInvcheadid); DELETE FROM invchead WHERE (invchead_id=pInvcheadid); RETURN pInvcheadid; END; $_$; ALTER FUNCTION public.deleteinvoice(integer) OWNER TO admin; -- -- Name: deleteipsitem(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteipsitem(pipsitemid integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN DELETE FROM ipsiteminfo WHERE ipsitem_id=pIpsItemId; RETURN 1; END; $$; ALTER FUNCTION public.deleteipsitem(pipsitemid integer) OWNER TO admin; -- -- Name: deleteipsprodcat(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteipsprodcat(pipsitemid integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN DELETE FROM ipsiteminfo WHERE ipsitem_id=pIpsItemId; RETURN 1; END; $$; ALTER FUNCTION public.deleteipsprodcat(pipsitemid integer) OWNER TO admin; -- -- Name: deleteitem(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteitem(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; _result INTEGER; BEGIN SELECT bomitem_id INTO _result FROM bomitem WHERE (bomitem_item_id=pItemid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; SELECT itemsite_id INTO _result FROM itemsite WHERE (itemsite_item_id=pItemid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; SELECT itemsub_id INTO _result FROM itemsub WHERE (itemsub_sub_item_id=pItemid) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; IF (fetchmetricbool('RevControl')) THEN SELECT rev_id INTO _result FROM rev WHERE ((rev_target_id=pItemid) AND (rev_target_type = 'BOM')) LIMIT 1; IF (FOUND) THEN RETURN -6; END IF; END IF; DELETE FROM bomhead WHERE (bomhead_item_id=pItemid); DELETE FROM bomitem WHERE (bomitem_item_id=pItemid); DELETE FROM itemcost WHERE (itemcost_item_id=pItemid); DELETE FROM costhist WHERE (costhist_item_id=pItemid); DELETE FROM itemsub WHERE (itemsub_parent_item_id=pItemid); DELETE FROM itemsub WHERE (itemsub_sub_item_id=pItemid); DELETE FROM itemsrcp WHERE (itemsrcp_itemsrc_id IN (SELECT itemsrc_id FROM itemsrc WHERE (itemsrc_item_id=pItemid))); DELETE FROM itemsrc WHERE (itemsrc_item_id=pItemid); DELETE FROM itemalias WHERE (itemalias_item_id=pItemid); DELETE FROM itemgrpitem WHERE (itemgrpitem_item_id=pItemid); DELETE FROM ipsiteminfo WHERE (ipsitem_item_id=pItemid); DELETE FROM imageass WHERE ( (imageass_source='I') AND (imageass_source_id=pItemid) ); DELETE FROM locitem WHERE (locitem_item_id=pItemid); DELETE FROM itemtax WHERE(itemtax_item_id=pItemid); DELETE FROM itemsite WHERE (itemsite_item_id=pItemid); DELETE FROM itemuom WHERE(itemuom_itemuomconv_id IN (SELECT itemuomconv_id FROM itemuomconv WHERE(itemuomconv_item_id=pItemid))); DELETE FROM itemuomconv WHERE(itemuomconv_item_id=pItemid); DELETE FROM item WHERE (item_id=pItemid); RETURN 0; END; $_$; ALTER FUNCTION public.deleteitem(integer) OWNER TO admin; -- -- Name: deleteitemcost(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteitemcost(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemId ALIAS FOR $1; pCostElemId ALIAS FOR $2; _itemcost_id INTEGER; _postcost_return BOOLEAN; _std_cost NUMERIC; BEGIN SELECT itemcost_id INTO _itemcost_id FROM itemcost WHERE ( (itemcost_item_id = pItemId) AND (itemcost_costelem_id = pCostElemId) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'itemcost % not found for. ', pItemId || ' & ' || pCostElemId; END IF; SELECT itemcost_stdcost INTO _std_cost FROM itemcost WHERE (itemcost_id = _itemcost_id); IF (_std_cost > 0) THEN --Actual Cost is updated to zero to ensure inventory is valued correctly PERFORM updateCost(_itemcost_id, 0); END IF; DELETE FROM itemcost WHERE (itemcost_id=_itemcost_id); RETURN _itemcost_id; END; $_$; ALTER FUNCTION public.deleteitemcost(integer, integer) OWNER TO admin; -- -- Name: deleteitemsite(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteitemsite(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; _result INTEGER; _lotserial BOOLEAN; _bbom BOOLEAN; _mfg BOOLEAN; _standard BOOLEAN; BEGIN IF ( ( SELECT ( (itemsite_qtyonhand <> 0) OR (itemsite_nnqoh <> 0) ) FROM itemsite WHERE (itemsite_id=pItemsiteid) ) ) THEN RETURN -9; END IF; SELECT metric_value='t' INTO _bbom FROM metric WHERE (metric_name='BBOM'); SELECT metric_value='t' INTO _lotserial FROM metric WHERE (metric_name='LotSerialControl'); SELECT metric_value NOT IN ('PostBooks', 'Standard') INTO _mfg FROM metric WHERE (metric_name='Application'); SELECT metric_value='Standard' INTO _standard FROM metric WHERE (metric_name='Application'); SELECT invhist_id INTO _result FROM invhist WHERE (invhist_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; IF (_lotserial) THEN SELECT lsdetail_id INTO _result FROM lsdetail WHERE (lsdetail_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; END IF; SELECT wo_id INTO _result FROM wo WHERE (wo_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; SELECT womatl_id INTO _result FROM womatl WHERE (womatl_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; SELECT womatlvar_id INTO _result FROM womatlvar WHERE ( (womatlvar_parent_itemsite_id=pItemsiteid) OR (womatlvar_component_itemsite_id=pItemsiteid) ) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; IF (_bbom) THEN SELECT brdvar_id INTO _result FROM xtmfg.brdvar WHERE ( (brdvar_itemsite_id=pItemsiteid) OR (brdvar_parent_itemsite_id=pItemsiteid) ) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; END IF; SELECT coitem_id INTO _result FROM coitem WHERE (coitem_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; SELECT cohist_id INTO _result FROM cohist WHERE (cohist_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; SELECT quitem_id INTO _result FROM quitem WHERE (quitem_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; SELECT cmitem_id INTO _result FROM cmitem WHERE (cmitem_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; SELECT poitem_id INTO _result FROM poitem WHERE (poitem_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; SELECT recv_id INTO _result FROM recv WHERE (recv_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; SELECT poreject_id INTO _result FROM poreject WHERE (poreject_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; SELECT pr_id INTO _result FROM pr WHERE (pr_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; IF (_mfg OR _standard) THEN SELECT planord_id INTO _result FROM planord WHERE (planord_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -5; END IF; END IF; IF (_mfg) THEN SELECT pschitem_id INTO _result FROM xtmfg.pschitem WHERE (pschitem_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -6; END IF; SELECT woopervar_id INTO _result FROM xtmfg.woopervar WHERE (woopervar_parent_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; END IF; IF (_mfg OR _standard) THEN SELECT itemsite_id INTO _result FROM itemsite WHERE (itemsite_supply_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -7; END IF; END IF; DELETE FROM invcnt WHERE (invcnt_itemsite_id=pItemsiteid); DELETE FROM itemloc WHERE (itemloc_itemsite_id=pItemsiteid); DELETE FROM itemlocdist WHERE (itemlocdist_itemsite_id=pItemsiteid); IF (_bbom) THEN DELETE FROM xtmfg.brddist WHERE (brddist_itemsite_id=pItemsiteid); END IF; DELETE FROM itemsite WHERE (itemsite_id=pItemsiteid); RETURN 0; END; $_$; ALTER FUNCTION public.deleteitemsite(integer) OWNER TO admin; -- -- Name: deleteitemuom(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteitemuom(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemuomid ALIAS FOR $1; BEGIN DELETE FROM itemuom WHERE itemuom_id=pItemuomid; RETURN 0; END; $_$; ALTER FUNCTION public.deleteitemuom(integer) OWNER TO admin; -- -- Name: deleteitemuomconv(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteitemuomconv(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemuomconvid ALIAS FOR $1; _fromuomid INTEGER; _invuomid INTEGER; _itemid INTEGER; _touomid INTEGER; BEGIN SELECT itemuomconv_item_id, item_inv_uom_id, itemuomconv_from_uom_id, itemuomconv_to_uom_id INTO _itemid, _invuomid, _fromuomid, _touomid FROM itemuomconv JOIN item ON (itemuomconv_item_id=item_id) WHERE (itemuomconv_id=pItemuomconvid); IF EXISTS(SELECT * FROM uomusedforitem(_itemid) WHERE ((uom_id IN (_fromuomid, _touomid)) AND (uom_id != _invuomid)) ) THEN RETURN -1; END IF; DELETE FROM itemuom WHERE itemuom_itemuomconv_id=pItemuomconvid; DELETE FROM itemuomconv WHERE itemuomconv_id=pItemuomconvid; RETURN 0; END; $_$; ALTER FUNCTION public.deleteitemuomconv(integer) OWNER TO admin; -- -- Name: deletelocation(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletelocation(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLocationid ALIAS FOR $1; _check INTEGER; BEGIN -- Check to see if any itemsite used the passed location as their default SELECT itemsite_id INTO _check FROM itemsite WHERE (itemsite_location_id=pLocationid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Check to see if any inventory is currently stored at the passed location SELECT itemloc_id INTO _check FROM itemloc WHERE (itemloc_location_id=pLocationid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; -- Check to see if any undistributed inventory transactions are currently posted at the passed location SELECT itemlocdist_id INTO _check FROM itemlocdist WHERE ( (itemlocdist_source_type='L') AND (itemlocdist_source_id=pLocationid) ) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; -- Check to see if the passed location has any Inventory Detail posted against it SELECT invdetail_id INTO _check FROM invdetail WHERE (invdetail_location_id=pLocationid) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; -- Delete any associated locitem records DELETE FROM locitem WHERE (locitem_location_id=pLocationid); -- Delete the location record DELETE FROM location WHERE (location_id=pLocationid); RETURN pLocationid; END; $_$; ALTER FUNCTION public.deletelocation(integer) OWNER TO admin; -- -- Name: deletemetasql(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletemetasql(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pid ALIAS FOR $1; BEGIN DELETE FROM metasql WHERE metasql_id = pid; RETURN 0; END; $_$; ALTER FUNCTION public.deletemetasql(integer) OWNER TO admin; -- -- Name: deleteopenrecurringitems(integer, text, timestamp with time zone, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteopenrecurringitems(integer, text, timestamp with time zone, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pParentid ALIAS FOR $1; pType TEXT := UPPER($2); pDatetime TIMESTAMP WITH TIME ZONE := COALESCE($3, startOfTime()); pInclParent BOOLEAN := COALESCE($4, FALSE); _count INTEGER := 0; _delchildstmt TEXT; _delparentstmt TEXT; _rt RECORD; _tmp INTEGER; BEGIN RAISE DEBUG 'deleteOpenRecurringItems(%, %, %)', pParentid, pType, pDatetime; IF (pParentid IS NULL) THEN RETURN -11; END IF; SELECT * INTO _rt FROM recurtype WHERE (UPPER(recurtype_type)=pType); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count <= 0) THEN RETURN -10; END IF; -- 2 deletes avoid reparenting problems if the parent gets deleted first IF (_rt.recurtype_delfunc IS NULL) THEN _delchildstmt := 'DELETE FROM [fulltable] ' || ' WHERE (NOT ([done])' || ' AND ([schedcol]>''$2'')' || ' AND ([table]_recurring_[table]_id=$1)' || ' AND ([table]_id!=$1));'; _delparentstmt := 'DELETE FROM [fulltable] USING recur' || ' WHERE (NOT ([done])' || ' AND ([schedcol]>''$2'')' || ' AND ([table]_recurring_[table]_id=$1)' || ' AND ([table]_id=$1));'; ELSE _delchildstmt := 'SELECT [delfunc]([table]_id)' || ' FROM [fulltable] ' || ' WHERE (NOT ([done])' || ' AND ([schedcol]>''$2'')' || ' AND ([table]_recurring_[table]_id=$1)' || ' AND ([table]_id!=$1));'; _delparentstmt := 'SELECT [delfunc]([table]_id)' || ' FROM [fulltable] ' || ' WHERE (NOT ([done])' || ' AND ([schedcol]>''$2'')' || ' AND ([table]_recurring_[table]_id=$1)' || ' AND ([table]_id!=$1));'; _delchildstmt := REPLACE(_delchildstmt, '[delfunc]', _rt.recurtype_delfunc); _delparentstmt := REPLACE(_delparentstmt, '[delfunc]', _rt.recurtype_delfunc); END IF; RAISE DEBUG '_delchildstmt has been set to %', _delchildstmt; _delchildstmt := REPLACE(_delchildstmt, '[fulltable]', _rt.recurtype_table); _delchildstmt := REPLACE(_delchildstmt, '[table]', REGEXP_REPLACE(_rt.recurtype_table, E'.*\\.', '')); _delchildstmt := REPLACE(_delchildstmt, '[done]', _rt.recurtype_donecheck); _delchildstmt := REPLACE(_delchildstmt, '[schedcol]', _rt.recurtype_schedcol); _delparentstmt := REPLACE(_delparentstmt, '[fulltable]', _rt.recurtype_table); _delparentstmt := REPLACE(_delparentstmt, '[table]', REGEXP_REPLACE(_rt.recurtype_table, E'.*\\.', '')); _delparentstmt := REPLACE(_delparentstmt, '[done]', _rt.recurtype_donecheck); _delparentstmt := REPLACE(_delparentstmt, '[schedcol]', _rt.recurtype_schedcol); RAISE DEBUG 'substitutions changed _delchildstmt to %', _delchildstmt; IF (_rt.recurtype_delfunc IS NULL) THEN -- 8.4+: EXECUTE _delchildstmt USING pDatetime, pType; RAISE DEBUG '% with % and %', _delchildstmt, pType, pDatetime; EXECUTE REPLACE(REPLACE(_delchildstmt, '$1', pParentid::TEXT), '$2', pDatetime::TEXT); GET DIAGNOSTICS _count = ROW_COUNT; IF (pInclParent) THEN -- 8.4+: EXECUTE _delparentstmt USING pDatetime, pType; RAISE DEBUG '% with % and %', _delparentstmt, pType, pDatetime; EXECUTE REPLACE(REPLACE(_delparentstmt, '$1', pParentid::TEXT), '$2', pDatetime::TEXT); GET DIAGNOSTICS _tmp = ROW_COUNT; _count := _count + _tmp; END IF; ELSE -- 8.4+: FOR _tmp IN EXECUTE _delchildstmt USING pDatetime, pType LOOP FOR _tmp IN EXECUTE REPLACE(REPLACE(_delchildstmt, '$1', pParentid::TEXT), '$2', pDatetime::TEXT) LOOP IF _tmp < 0 THEN RETURN _tmp; END IF; _count := _count + 1; END LOOP; IF (pInclParent) THEN -- 8.4+: EXECUTE _delparentstmt INTO _tmp USING pDatetime, pType; EXECUTE REPLACE(REPLACE(_delparentstmt, '$1', pParentid::TEXT), '$2', pDatetime::TEXT) INTO _tmp; IF (_tmp < 0) THEN RETURN _tmp; END IF; _count := _count + 1; END IF; END IF; RAISE DEBUG 'deleteOpenrecurringItems() returning %', _count; RETURN _count; END; $_$; ALTER FUNCTION public.deleteopenrecurringitems(integer, text, timestamp with time zone, boolean) OWNER TO admin; -- -- Name: deleteopportunity(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteopportunity(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOpheadid ALIAS FOR $1; _test INTEGER; BEGIN SELECT todoitem_id INTO _test FROM todoitem WHERE(todoitem_ophead_id=pOpheadid) LIMIT 1; IF(FOUND) THEN RETURN -1; END IF; SELECT quhead_id INTO _test FROM quhead WHERE(quhead_ophead_id=pOpheadid) LIMIT 1; IF(FOUND) THEN RETURN -2; END IF; SELECT cohead_id INTO _test FROM cohead WHERE(cohead_ophead_id=pOpheadid) LIMIT 1; IF(FOUND) THEN RETURN -3; END IF; DELETE FROM charass WHERE((charass_target_type='OPP') AND (charass_target_id=pOpheadid)); DELETE FROM comment WHERE((comment_source='OPP') AND (comment_source_id=pOpheadid)); DELETE FROM ophead WHERE(ophead_id=pOpheadid); return 0; END; $_$; ALTER FUNCTION public.deleteopportunity(integer) OWNER TO admin; -- -- Name: deletepackage(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletepackage(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ppkgheadid ALIAS FOR $1; _i INTEGER := 0; _pkgname TEXT; _r RECORD; _tabs TEXT[] := ARRAY['cmd', 'cmdarg', 'image', 'metasql', 'priv', 'report', 'script', 'uiform']; _debug BOOL := false; BEGIN IF (EXISTS(SELECT * FROM pkgdep WHERE (pkgdep_parent_pkghead_id=ppkgheadid))) THEN RETURN -1; END IF; SELECT pkghead_name INTO _pkgname FROM pkghead WHERE (pkghead_id=ppkgheadid); IF (NOT FOUND) THEN RETURN -2; END IF; IF (LOWER(_pkgname) = 'public' OR LOWER(_pkgname) = 'api') THEN RETURN -3; END IF; FOR _i IN ARRAY_LOWER(_tabs,1)..ARRAY_UPPER(_tabs,1) LOOP EXECUTE 'ALTER TABLE ' || _pkgname || '.pkg' || _tabs[_i] || ' DISABLE TRIGGER pkg' || _tabs[_i] || 'altertrigger;'; END LOOP; DELETE FROM pkghead WHERE pkghead_id=ppkgheadid; RETURN ppkgheadid; END; $_$; ALTER FUNCTION public.deletepackage(integer) OWNER TO admin; -- -- Name: deletepo(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletepo(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPoheadid ALIAS FOR $1; _poitemid INTEGER; BEGIN IF ( ( SELECT pohead_status FROM pohead WHERE (pohead_id=pPoheadid) ) = 'U' ) THEN -- Unlink from any Sales Orders UPDATE coitem SET coitem_order_type=NULL, coitem_order_id=NULL FROM poitem WHERE ( (coitem_order_type='P') AND (coitem_order_id=poitem_id) AND (poitem_pohead_id=pPoheadid) ); DELETE FROM poitem WHERE (poitem_pohead_id=pPoheadid); DELETE FROM pohead WHERE (pohead_id=pPoheadid); RETURN TRUE; ELSE RETURN FALSE; END IF; END; $_$; ALTER FUNCTION public.deletepo(integer) OWNER TO admin; -- -- Name: deletepoitem(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletepoitem(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPoitemid ALIAS FOR $1; _poheadid INTEGER := -1; _status CHARACTER; BEGIN SELECT poitem_pohead_id, poitem_status INTO _poheadid, _status FROM poitem WHERE (poitem_id=pPoitemid); IF NOT(FOUND) THEN RETURN 0; END IF; IF ( _status = 'U' ) THEN DELETE FROM poitem WHERE (poitem_id=pPoitemid); ELSE IF ( _status = 'O' ) THEN PERFORM recv_id FROM recv WHERE ( (recv_order_type='PO') AND (recv_orderitem_id=pPoitemid) ); IF (FOUND) THEN RETURN -10; ELSE RETURN -20; END IF; ELSE RETURN -10; END IF; END IF; PERFORM poitem_id FROM poitem WHERE poitem_pohead_id = _poheadid; IF NOT(FOUND) THEN DELETE FROM pohead WHERE (pohead_id = _poheadid); END IF; RETURN 0; END; $_$; ALTER FUNCTION public.deletepoitem(integer) OWNER TO admin; -- -- Name: deletepr(character, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletepr(character, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pParentType ALIAS FOR $1; pParentId ALIAS FOR $2; BEGIN DELETE FROM pr WHERE ((pr_status='O') AND (pr_order_type=pParentType) AND (pr_order_id=pParentId)); RETURN TRUE; END; $_$; ALTER FUNCTION public.deletepr(character, integer) OWNER TO admin; -- -- Name: deletepr(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletepr(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrid ALIAS FOR $1; BEGIN DELETE FROM pr WHERE ( (pr_status='O') AND (pr_id=pPrid) ); RETURN TRUE; END; $_$; ALTER FUNCTION public.deletepr(integer) OWNER TO admin; -- -- Name: deleteproductcategory(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteproductcategory(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pProdcatid ALIAS FOR $1; _check INTEGER; BEGIN -- Check to see if any items are assigned to the passed classcode SELECT item_id INTO _check FROM item WHERE (item_prodcat_id=pProdcatid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Delete any assocated records DELETE FROM salesaccnt WHERE (salesaccnt_prodcat_id=pProdcatid); -- Delete the passed prodcat DELETE FROM prodcat WHERE (prodcat_id=pProdcatid); RETURN pProdcatid; END; $_$; ALTER FUNCTION public.deleteproductcategory(integer) OWNER TO admin; -- -- Name: deleteprofitcenter(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteprofitcenter(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pid ALIAS FOR $1; BEGIN IF (EXISTS(SELECT accnt_id FROM accnt, prftcntr WHERE ((accnt_company=prftcntr_number) AND (prftcntr_id=pid)) )) THEN RETURN -1; END IF; DELETE FROM prftcntr WHERE (prftcntr_id=pid); RETURN pid; END; $_$; ALTER FUNCTION public.deleteprofitcenter(integer) OWNER TO admin; -- -- Name: deleteproject(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteproject(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrjid ALIAS FOR $1; _result INTEGER; BEGIN SELECT quhead_id INTO _result FROM quhead WHERE (quhead_prj_id=pPrjid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; SELECT cohead_id INTO _result FROM cohead WHERE (cohead_prj_id=pPrjid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; SELECT wo_id INTO _result FROM wo WHERE (wo_prj_id=pPrjid) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; SELECT pr_id INTO _result FROM pr WHERE (pr_prj_id=pPrjid) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; SELECT poitem_id INTO _result FROM poitem WHERE (poitem_prj_id=pPrjid) LIMIT 1; IF (FOUND) THEN RETURN -5; END IF; SELECT invchead_id INTO _result FROM invchead WHERE (invchead_prj_id=pPrjid) LIMIT 1; IF (FOUND) THEN RETURN -6; END IF; DELETE FROM comment WHERE ((comment_source='J') AND (comment_source_id=pPrjid)); DELETE FROM comment WHERE ((comment_source='TA') AND (comment_source_id IN ( SELECT prjtask_id FROM prjtask WHERE (prjtask_prj_id=pPrjId)))); DELETE FROM prjtask WHERE (prjtask_prj_id=pPrjid); UPDATE prj SET prj_recurring_prj_id=null WHERE(prj_recurring_prj_id=pPrjid); DELETE FROM prj WHERE (prj_id=pPrjid); RETURN pPrjid; END; $_$; ALTER FUNCTION public.deleteproject(integer) OWNER TO admin; -- -- Name: deleteprojecttask(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteprojecttask(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrjtaskid ALIAS FOR $1; _row RECORD; _result INTEGER; BEGIN SELECT * INTO _row FROM prjtask WHERE (prjtask_id=pPrjtaskid) LIMIT 1; IF (NOT FOUND) THEN RETURN -1; END IF; IF (COALESCE(_row.prjtask_hours_actual, 0.0) > 0.0) THEN RETURN -2; END IF; IF (COALESCE(_row.prjtask_exp_actual, 0.0) > 0.0) THEN RETURN -3; END IF; DELETE FROM comment WHERE ((comment_source='TA') AND (comment_source_id=pPrjtaskid)); DELETE FROM prjtask WHERE (prjtask_id=pPrjtaskid); RETURN 0; END; $_$; ALTER FUNCTION public.deleteprojecttask(integer) OWNER TO admin; -- -- Name: deleteqryhead(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteqryhead(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pqryheadid ALIAS FOR $1; BEGIN DELETE FROM qryitem WHERE (qryitem_qryhead_id=pqryheadid); DELETE FROM qryhead WHERE (qryhead_id=pqryheadid); RETURN pqryheadid; END; $_$; ALTER FUNCTION public.deleteqryhead(integer) OWNER TO admin; -- -- Name: deletequote(integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletequote(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; pQuoteNumber ALIAS FOR $2; _quNumberScheme TEXT; _quoteNumber TEXT; _quitemid INTEGER; _result INTEGER; BEGIN SELECT fetchMetricText('QUNumberGeneration') INTO _quNumberScheme; IF (pQuoteNumber IS NULL) THEN SELECT quhead_number INTO _quoteNumber FROM quhead WHERE (quhead_id=pQuheadid); ELSE _quoteNumber := pQuoteNumber; END IF; DELETE FROM quitem WHERE (quitem_quhead_id=pQuheadid); DELETE FROM quhead WHERE (quhead_id=pQuheadid); IF (_quoteNumber IS NOT NULL) THEN IF (_quNumberScheme IN ('A', 'O')) THEN -- do not release quote # if quote converted to sales order IF (NOT EXISTS (SELECT cohead_id FROM cohead WHERE (cohead_number=_quoteNumber))) THEN _result = releaseQuNumber(_quoteNumber); END IF; ELSEIF (_quNumberScheme = 'S') THEN _result = releaseSoNumber(_quoteNumber); END IF; END IF; -- Don't care about result of release number RETURN 0; END; $_$; ALTER FUNCTION public.deletequote(integer, text) OWNER TO admin; -- -- Name: deletequote(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletequote(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; BEGIN RETURN deleteQuote(pQuheadid, NULL::TEXT); END; $_$; ALTER FUNCTION public.deletequote(integer) OWNER TO admin; -- -- Name: deletequote(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletequote(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; pQuoteNumber ALIAS FOR $2; BEGIN RETURN deleteQuote(pQuheadid, pQuoteNumber::TEXT); END; $_$; ALTER FUNCTION public.deletequote(integer, integer) OWNER TO admin; -- -- Name: deleterecvfororder(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleterecvfororder(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; porderid ALIAS FOR $2; BEGIN DELETE FROM recv USING orderitem WHERE ((recv_orderitem_id=orderitem_id) AND (recv_order_type=orderitem_orderhead_type) AND (NOT recv_posted) AND (orderitem_orderhead_id=porderid) AND (orderitem_orderhead_type=pordertype)); RETURN 0; END; $_$; ALTER FUNCTION public.deleterecvfororder(text, integer) OWNER TO admin; -- -- Name: deletesalescategory(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletesalescategory(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSalescatid ALIAS FOR $1; BEGIN PERFORM invcitem_salescat_id FROM invchead, invcitem WHERE ( (invcitem_invchead_id=invchead_id) AND (NOT invchead_posted) AND (invcitem_salescat_id=pSalescatid) ); IF (FOUND) THEN RETURN -1; END IF; PERFORM invcitem_salescat_id FROM invchead, invcitem WHERE ( (invcitem_invchead_id=invchead_id) AND (invchead_posted) AND (invcitem_salescat_id=pSalescatid) ); IF (FOUND) THEN RETURN -2; END IF; PERFORM aropen_salescat_id FROM aropen WHERE (aropen_salescat_id=pSalescatid); IF (FOUND) THEN RETURN -3; END IF; DELETE FROM salescat WHERE (salescat_id=pSalescatid); RETURN 0; END; $_$; ALTER FUNCTION public.deletesalescategory(integer) OWNER TO admin; -- -- Name: deleteshippingcharge(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteshippingcharge(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipchrgid ALIAS FOR $1; BEGIN IF EXISTS(SELECT 1 FROM custinfo WHERE (cust_shipchrg_id=pShipchrgid)) THEN RETURN -1; END IF; DELETE FROM shipchrg WHERE (shipchrg_id=pShipchrgid); RETURN pShipchrgid; END; $_$; ALTER FUNCTION public.deleteshippingcharge(integer) OWNER TO admin; -- -- Name: deleteshippingchargetype(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteshippingchargetype(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipchrgid ALIAS FOR $1; _check INTEGER; BEGIN -- Check to see if the passed shipchrg is used as a default for any customers SELECT cust_id INTO _check FROM custinfo WHERE (cust_shipchrg_id=pShipchrgid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Check to see if the passed shipchrg is used as a default for any shiptos SELECT shipto_id INTO _check FROM shiptoinfo WHERE (shipto_shipchrg_id=pShipchrgid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; -- Check to see if the passed shipchrg is used on any sales orders SELECT cohead_id INTO _check FROM cohead WHERE (cohead_shipchrg_id=pShipchrgid) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; -- Check to see if the passed shipchrg is used on any shippers SELECT shiphead_id INTO _check FROM shiphead WHERE (shiphead_shipchrg_id=pShipchrgid) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; -- Check to see if the passed shipchrg is used on any invoices SELECT invchead_id INTO _check FROM invchead WHERE (invchead_shipchrg_id=pShipchrgid) LIMIT 1; IF (FOUND) THEN RETURN -5; END IF; -- Delete the passed shipchrg DELETE FROM shipchrg WHERE (shipchrg_id=pShipchrgid); RETURN pShipchrgid; END; $_$; ALTER FUNCTION public.deleteshippingchargetype(integer) OWNER TO admin; -- -- Name: deleteshipto(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteshipto(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShiptoid ALIAS FOR $1; BEGIN PERFORM asohist_id FROM asohist WHERE (asohist_shipto_id=pShiptoid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; PERFORM cohead_id FROM cohead WHERE (cohead_shipto_id=pShiptoid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; PERFORM cmhead_id FROM cmhead WHERE (cmhead_shipto_id=pShiptoid) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; PERFORM cohist_id FROM cohist WHERE (cohist_shipto_id=pShiptoid) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; PERFORM quhead_id FROM quhead WHERE (quhead_shipto_id=pShiptoid) LIMIT 1; IF (FOUND) THEN RETURN -5; END IF; PERFORM invchead_id FROM invchead WHERE (invchead_shipto_id=pShiptoid) LIMIT 1; IF (FOUND) THEN RETURN -6; END IF; DELETE FROM ipsass WHERE (ipsass_shipto_id=pShiptoid); DELETE FROM shiptoinfo WHERE (shipto_id=pShiptoid); RETURN 0; END; $_$; ALTER FUNCTION public.deleteshipto(integer) OWNER TO admin; -- -- Name: deleteso(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteso(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; BEGIN RETURN deleteSo(pSoheadid, NULL); END; $_$; ALTER FUNCTION public.deleteso(integer) OWNER TO admin; -- -- Name: deleteso(integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteso(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; pSonumber ALIAS FOR $2; _r RECORD; _coitemid INTEGER; _result INTEGER; _poStatus INTEGER := 0; BEGIN -- Get cohead SELECT * INTO _r FROM cohead WHERE (cohead_id=pSoheadid); IF (NOT FOUND) THEN RETURN 0; END IF; -- Cannot delete if credit card payments IF (EXISTS(SELECT ccpay_id FROM ccpay, payco WHERE ((ccpay_status IN ('C')) AND (ccpay_id=payco_ccpay_id) AND (payco_cohead_id=pSoheadid)))) THEN RETURN -1; END IF; -- Cannot delete if credit card history IF (EXISTS(SELECT ccpay_id FROM ccpay, payco WHERE ((ccpay_status != 'C') AND (ccpay_id=payco_ccpay_id) AND (payco_cohead_id=pSoheadid)))) THEN RETURN -2; END IF; -- Delete Sales Order Items FOR _coitemid IN SELECT coitem_id FROM coitem WHERE ( (coitem_cohead_id=pSoheadid) AND (coitem_subnumber=0) ) LOOP SELECT deleteSoItem(_coitemid) INTO _result; IF (_result < 0) THEN IF (_result = -20) THEN _poStatus := _poStatus - 1; ELSE RETURN _result; END IF; END IF; END LOOP; DELETE FROM pack WHERE (pack_head_id=pSoheadid and pack_head_type = 'SO'); DELETE FROM cohead WHERE (cohead_id=pSoheadid); IF (fetchMetricBool('AutoCreateProjectsForOrders')) THEN PERFORM deleteProject(_r.cohead_prj_id); END IF; DELETE FROM aropenalloc WHERE ((aropenalloc_doctype='S') AND (aropenalloc_doc_id=pSoheadid)); IF (COALESCE(pSonumber,'') != '') THEN _result = releaseSoNumber(pSonumber); ELSEIF (_r.cohead_number IS NOT NULL) THEN _result = releaseSoNumber(_r.cohead_number); END IF; IF (_poStatus < 0) THEN RETURN -20; ELSE RETURN 0; END IF; END; $_$; ALTER FUNCTION public.deleteso(integer, text) OWNER TO admin; -- -- Name: deletesoitem(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletesoitem(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoitemid ALIAS FOR $1; _r RECORD; _s RECORD; _result INTEGER; _deletePO INTEGER := 0; _recvId INTEGER := -1; _poStatus TEXT; _jobItem BOOLEAN; BEGIN -- Get coitem SELECT * INTO _r FROM coitem WHERE (coitem_id=pSoitemid); IF (NOT FOUND) THEN RETURN -999; END IF; -- Cannot delete if shipped IF (_r.coitem_qtyshipped > 0) THEN RETURN -101; END IF; -- Cannot delete if issued to shipping SELECT shipitem_id INTO _result FROM shipitem JOIN shiphead ON (shiphead_id=shipitem_shiphead_id AND shiphead_order_type='SO') WHERE (shipitem_orderitem_id=pSoitemid) LIMIT 1; IF (FOUND) THEN RETURN -102; END IF; -- Cannot delete if returned IF (fetchMetricBool('MultiWhs')) THEN SELECT raitem_id INTO _result FROM raitem WHERE ( (raitem_orig_coitem_id=pSoitemid) OR (raitem_new_coitem_id=pSoitemid) ) LIMIT 1; IF (FOUND) THEN RETURN -103; END IF; END IF; -- Cannot delete if any inventory history SELECT invhist_id INTO _result FROM invhist WHERE ( (invhist_ordnumber=formatSoNumber(pSoitemid)) AND (invhist_ordtype='SO') ) LIMIT 1; IF (FOUND) THEN RETURN -105; END IF; -- If Kit, check deletion of component items IF (_r.coitem_subnumber = 0) THEN FOR _s IN SELECT * FROM coitem WHERE ((coitem_cohead_id = _r.coitem_cohead_id) AND (coitem_linenumber = _r.coitem_linenumber) AND (coitem_subnumber > 0)) LOOP IF ((COALESCE(_s.coitem_order_id, -1) > 0) AND (_s.coitem_order_type = 'P')) THEN SELECT poitem_status, COALESCE(recv_id, -1) INTO _poStatus, _recvId FROM poitem LEFT OUTER JOIN recv ON ((recv_orderitem_id=poitem_id) AND (recv_order_type='PO')) WHERE (poitem_id = _s.coitem_order_id); IF ((_recvId > 0) OR (_poStatus = 'C')) THEN RETURN -10; ELSIF ((_recvId = -1) AND (_poStatus = 'O')) THEN _deletePO := _deletePO - 1; END IF; END IF; END LOOP; END IF; SELECT (itemsite_costmethod='J') INTO _jobItem FROM coitem JOIN itemsite ON (itemsite_id=coitem_itemsite_id) WHERE (coitem_id=pSoitemid); IF (_jobItem AND _r.coitem_order_type='W') THEN -- Delete associated Job Work Order SELECT deleteWo(_r.coitem_order_id, TRUE, TRUE) INTO _result; IF (_result < 0) THEN RETURN -104; END IF; ELSIF (_r.coitem_order_type='W') THEN -- Delete associated Job Work Order SELECT deleteWo(_r.coitem_order_id, TRUE) INTO _result; IF (_result < 0) THEN -- Cannot delete so break association PERFORM changeWoProject(_r.coitem_order_id, -1, TRUE); END IF; ELSIF (_r.coitem_order_type='R') THEN -- Delete associated Purchase Request PERFORM deletePr(_r.coitem_order_id); ELSIF (_r.coitem_order_type='P') THEN -- Delete associated Purchase Order Item SELECT deletepoitem(_r.coitem_order_id) INTO _result; IF ((_result < 0) AND (_result <> -20)) THEN RETURN _result; ELSIF (_result = -20) THEN _deletePO := _deletePO - 1; END IF; END IF; -- Delete the coitem DELETE FROM coitem WHERE (coitem_id=pSoitemid); IF (_deletePO < 0) THEN RETURN -20; ELSE RETURN 0; END IF; END; $_$; ALTER FUNCTION public.deletesoitem(integer) OWNER TO admin; -- -- Name: deletestandardjournal(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletestandardjournal(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStdjrnlid ALIAS FOR $1; BEGIN DELETE FROM stdjrnlitem WHERE (stdjrnlitem_stdjrnl_id=pStdjrnlid); DELETE FROM stdjrnlgrpitem WHERE (stdjrnlgrpitem_stdjrnl_id=pStdjrnlid); DELETE FROM stdjrnl WHERE (stdjrnl_id=pStdjrnlid); RETURN 1; END; $_$; ALTER FUNCTION public.deletestandardjournal(integer) OWNER TO admin; -- -- Name: deletestandardjournalgroup(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletestandardjournalgroup(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStdjrnlgrpid ALIAS FOR $1; BEGIN DELETE FROM stdjrnlgrpitem WHERE (stdjrnlgrpitem_stdjrnlgrp_id=pStdjrnlgrpid); DELETE FROM stdjrnlgrp WHERE (stdjrnlgrp_id=pStdjrnlgrpid); RETURN 1; END; $_$; ALTER FUNCTION public.deletestandardjournalgroup(integer) OWNER TO admin; -- -- Name: deletesubaccount(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletesubaccount(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pid ALIAS FOR $1; BEGIN IF (EXISTS(SELECT accnt_id FROM accnt, subaccnt WHERE ((accnt_company=subaccnt_number) AND (subaccnt_id=pid)) )) THEN RETURN -1; END IF; DELETE FROM subaccnt WHERE (subaccnt_id=pid); RETURN pid; END; $_$; ALTER FUNCTION public.deletesubaccount(integer) OWNER TO admin; -- -- Name: deletesubaccounttype(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletesubaccounttype(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSubAccntTypeid ALIAS FOR $1; _check INTEGER; BEGIN -- Check to see if the passed subaccnttype is used in any accounts SELECT accnt_id INTO _check FROM accnt, subaccnttype WHERE ( (accnt_subaccnttype_code=subaccnttype_code) AND (subaccnttype_id=pSubAccntTypeid) ) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Delete the Sub Account Type DELETE FROM subaccnttype WHERE (subaccnttype_id=pSubAccntTypeid); RETURN 0; END; $_$; ALTER FUNCTION public.deletesubaccounttype(integer) OWNER TO admin; -- -- Name: deletetax(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletetax(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ptaxid ALIAS FOR $1; BEGIN -- these checks allow nice error reporting instead of throwing an SQL error IF EXISTS(SELECT taxass_id FROM taxass WHERE (taxass_tax_id=ptaxid)) THEN RETURN -10; END IF; IF EXISTS(SELECT taxhist_id FROM taxhist WHERE (taxhist_tax_id=ptaxid)) THEN RETURN -20; END IF; DELETE FROM taxrate WHERE (taxrate_tax_id = ptaxid); DELETE FROM tax WHERE (tax_id = ptaxid); RETURN ptaxid; END; $_$; ALTER FUNCTION public.deletetax(integer) OWNER TO admin; -- -- Name: deletetaxclass(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletetaxclass(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxclassid ALIAS FOR $1; _result INTEGER; BEGIN -- Check to find if the tax class is used in any tax code SELECT tax_id INTO _result FROM tax WHERE (tax_taxclass_id = pTaxclassid); IF (FOUND) THEN RETURN -1; END IF; -- Delete the tax class if the above condition doesn't match DELETE FROM taxclass WHERE taxclass_id = pTaxclassid ; RETURN pTaxclassid; END; $_$; ALTER FUNCTION public.deletetaxclass(integer) OWNER TO admin; -- -- Name: deletetaxtype(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletetaxtype(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxtypeid ALIAS FOR $1; _result INTEGER; BEGIN SELECT taxtype_id INTO _result FROM taxtype WHERE ((taxtype_sys) AND (taxtype_id=pTaxtypeid)); IF (FOUND) THEN RETURN -1; END IF; SELECT taxass_id INTO _result FROM taxass WHERE (taxass_taxtype_id=pTaxtypeid); IF (FOUND) THEN RETURN -2; END IF; SELECT taxhist_id INTO _result FROM taxhist WHERE (taxhist_taxtype_id=pTaxtypeid); IF (FOUND) THEN RETURN -3; END IF; DELETE FROM taxtype WHERE (taxtype_id=pTaxtypeid); RETURN pTaxtypeid; END; $_$; ALTER FUNCTION public.deletetaxtype(integer) OWNER TO admin; -- -- Name: deletetaxzone(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletetaxzone(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxzoneid ALIAS FOR $1; _result INTEGER; BEGIN -- Check to find if the tax zone is used in any tax assignment SELECT taxass_id INTO _result FROM taxass WHERE (taxass_taxzone_id=pTaxzoneid); IF (FOUND) THEN RETURN -1; END IF; -- Check to find if the tax zone has been referenced in any tax registration SELECT taxreg_id INTO _result FROM taxreg WHERE (taxreg_taxzone_id=pTaxzoneid); IF (FOUND) THEN RETURN -2; END IF; -- Delete the tax zone if none of the above conditions match DELETE FROM taxzone WHERE taxzone_id = pTaxzoneid ; RETURN pTaxzoneid; END; $_$; ALTER FUNCTION public.deletetaxzone(integer) OWNER TO admin; -- -- Name: deletetodoitem(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletetodoitem(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ptodoItemId ALIAS FOR $1; BEGIN DELETE FROM alarm WHERE ( (alarm_source='TODO') AND (alarm_source_id=ptodoItemId) ); DELETE FROM todoitem WHERE todoitem_id = ptodoItemId; RETURN 0; END; $_$; ALTER FUNCTION public.deletetodoitem(integer) OWNER TO admin; -- -- Name: deleteunusedclasscodes(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteunusedclasscodes() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN DELETE FROM classcode WHERE (classcode_id NOT IN (SELECT DISTINCT item_classcode_id FROM item)); RETURN 0; END; $$; ALTER FUNCTION public.deleteunusedclasscodes() OWNER TO admin; -- -- Name: deleteunusedfreightclasses(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteunusedfreightclasses() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN DELETE FROM freightclass WHERE (freightclass_id NOT IN (SELECT DISTINCT COALESCE(item_freightclass_id, 0) FROM item)); RETURN 0; END; $$; ALTER FUNCTION public.deleteunusedfreightclasses() OWNER TO admin; -- -- Name: deleteunusedproductcategories(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteunusedproductcategories() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Delete any associated records DELETE FROM salesaccnt WHERE ( (salesaccnt_prodcat_id <> -1) AND (salesaccnt_prodcat_id NOT IN (SELECT DISTINCT item_prodcat_id FROM item)) ); DELETE FROM prodcat WHERE (prodcat_id NOT IN (SELECT DISTINCT item_prodcat_id FROM item)); RETURN 0; END; $$; ALTER FUNCTION public.deleteunusedproductcategories() OWNER TO admin; -- -- Name: deleteuom(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteuom(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUomid ALIAS FOR $1; BEGIN DELETE FROM uomconv WHERE uomconv_from_uom_id=pUomid; DELETE FROM uomconv WHERE uomconv_to_uom_id=pUomid; DELETE FROM uom WHERE uom_id=pUomid; RETURN 0; END; $_$; ALTER FUNCTION public.deleteuom(integer) OWNER TO admin; -- -- Name: deleteuomconv(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteuomconv(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUomconvid ALIAS FOR $1; BEGIN DELETE FROM uomconv WHERE uomconv_id=pUomconvid; RETURN 0; END; $_$; ALTER FUNCTION public.deleteuomconv(integer) OWNER TO admin; -- -- Name: deleteurl(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteurl(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ declare pId ALIAS FOR $1; begin delete from urlinfo where ( url_id in ( select url_id from urlinfo join docass on (docass_target_id=url_id) and (docass_target_type='URL') where ( docass_id = pId ) ) ); delete from docass where docass_id = pId; return true; end; $_$; ALTER FUNCTION public.deleteurl(integer) OWNER TO admin; -- -- Name: deleteuserpreference(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteuserpreference(text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrefname ALIAS FOR $1; _return BOOLEAN; BEGIN SELECT deleteUserPreference(getEffectiveXtUser(), pPrefname) INTO _return; RETURN _return; END; $_$; ALTER FUNCTION public.deleteuserpreference(text) OWNER TO admin; -- -- Name: deleteuserpreference(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deleteuserpreference(text, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pPrefname ALIAS FOR $2; BEGIN DELETE FROM usrpref WHERE ( (usrpref_username=pUsername) AND (usrpref_name=pPrefname) ); RETURN TRUE; END; $_$; ALTER FUNCTION public.deleteuserpreference(text, text) OWNER TO admin; -- -- Name: deletevendoraddress(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletevendoraddress(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendaddrid ALIAS FOR $1; _test INTEGER; BEGIN -- Check to see if the passed vendor address is used in pohead SELECT pohead_id INTO _test FROM pohead WHERE (pohead_vendaddr_id=pVendaddrid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Delete the passed vendor address DELETE FROM vendaddrinfo WHERE (vendaddr_id=pVendaddrid); RETURN 0; END; $_$; ALTER FUNCTION public.deletevendoraddress(integer) OWNER TO admin; -- -- Name: deletevendortype(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletevendortype(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendtypeid ALIAS FOR $1; _test INTEGER; BEGIN -- Check to see if the passed vendor type is used in vendinfo SELECT vend_id INTO _test FROM vendinfo WHERE (vend_vendtype_id=pVendtypeid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Delete the passed vendor type DELETE FROM vendtype WHERE (vendtype_id=pVendtypeid); RETURN 0; END; $_$; ALTER FUNCTION public.deletevendortype(integer) OWNER TO admin; -- -- Name: deletewo(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletewo(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; deleteChildren ALIAS FOR $2; BEGIN RETURN deleteWo(pWoid, deleteChildren, FALSE); END; $_$; ALTER FUNCTION public.deletewo(integer, boolean) OWNER TO admin; -- -- Name: deletewo(integer, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletewo(integer, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; deleteChildren ALIAS FOR $2; deleteForce ALIAS FOR $3; woStatus CHAR(1); itemType CHAR(1); ordtype CHAR(1); ordid INTEGER; returnCode INTEGER; _wotcCnt INTEGER; _routings BOOLEAN; BEGIN SELECT wo_status, wo_ordtype, wo_ordid, item_type INTO woStatus, ordtype, ordid, itemType FROM wo JOIN itemsite ON (itemsite_id=wo_itemsite_id) JOIN item ON (item_id=itemsite_item_id) WHERE (wo_id=pWoid); IF (NOT woStatus IN ('O', 'E', 'C')) THEN RETURN -3; END IF; IF (NOT deleteForce) THEN IF (itemType = 'J') THEN RETURN -2; END IF; END IF; SELECT fetchMetricBool('Routings') INTO _routings; IF _routings THEN SELECT count(*) INTO _wotcCnt FROM xtmfg.wotc WHERE (wotc_wo_id=pWoid); IF (_wotcCnt > 0) THEN RETURN -1; END IF; END IF; IF (woStatus = 'R') THEN INSERT INTO evntlog (evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'W', wo_id, itemsite_warehous_id, formatWoNumber(wo_id) FROM evntnot, evnttype, itemsite, item, wo WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (evnttype_name='RWoRequestCancel') AND (wo_id=pWoid) ); RETURN 0; ELSE IF (woStatus = 'E') THEN returnCode := (SELECT implodeWo(pWoid, FALSE)); END IF; END IF; IF (woStatus IN ('O', 'E', 'C')) THEN DELETE FROM womatl WHERE (womatl_wo_id=pWoid); IF _routings THEN DELETE FROM xtmfg.wooper WHERE (wooper_wo_id=pWoid); END IF; IF (ordtype = 'S') THEN UPDATE coitem SET coitem_order_type=NULL, coitem_order_id=NULL WHERE coitem_id=ordid; END IF; DELETE FROM wo WHERE (wo_id=pWoid); END IF; IF (deleteChildren) THEN returnCode := (SELECT MAX(deleteWo(wo_id, TRUE)) FROM wo WHERE ((wo_ordtype='W') AND (wo_ordid=pWoid))); END IF; RETURN 0; END; $_$; ALTER FUNCTION public.deletewo(integer, boolean, boolean) OWNER TO admin; -- -- Name: deletewomaterial(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION deletewomaterial(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; BEGIN UPDATE wo SET wo_adhoc=TRUE FROM womatl WHERE ((womatl_wo_id=wo_id) AND (womatl_id=pWomatlid)); -- Delete any created P/R for this Womatl PERFORM deletePr('W', pWomatlid); DELETE FROM womatl WHERE (womatl_id=pWomatlid); RETURN 0; END; $_$; ALTER FUNCTION public.deletewomaterial(integer) OWNER TO admin; -- -- Name: detachccpayfromso(integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION detachccpayfromso(integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pcoheadid ALIAS FOR $1; pwarehousid ALIAS FOR $2; pcustid ALIAS FOR $3; BEGIN RAISE NOTICE 'detachCCPayFromSO(INTEGER, INTEGER, INTEGER): deprecated'; RETURN 0; END; $_$; ALTER FUNCTION public.detachccpayfromso(integer, integer, integer) OWNER TO admin; -- -- Name: detachcontact(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION detachcontact(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pcntctId ALIAS FOR $1; pcrmacctId ALIAS FOR $2; BEGIN UPDATE cntct SET cntct_crmacct_id = NULL WHERE cntct_id = pcntctId AND cntct_crmacct_id = pcrmacctId; UPDATE crmacct SET crmacct_cntct_id_1 = NULL WHERE crmacct_id = pcrmacctId AND crmacct_cntct_id_1 = pcntctId; UPDATE crmacct SET crmacct_cntct_id_2 = NULL WHERE crmacct_id = pcrmacctId AND crmacct_cntct_id_2 = pcntctId; RETURN 0; END; $_$; ALTER FUNCTION public.detachcontact(integer, integer) OWNER TO admin; -- -- Name: detag(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION detag(text) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSource ALIAS FOR $1; _result TEXT := ''; BEGIN SELECT regexp_replace(pSource, E'<[^>]*>', '', 'g') INTO _result; RETURN _result; END; $_$; ALTER FUNCTION public.detag(text) OWNER TO admin; -- -- Name: detailednnqoh(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION detailednnqoh(integer, boolean) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pABS ALIAS FOR $2; _qoh NUMERIC; BEGIN IF (pABS) THEN SELECT SUM(noNeg(itemloc_qty)) INTO _qoh FROM itemloc, location WHERE ( (itemloc_location_id=location_id) AND (NOT location_netable) AND (itemloc_itemsite_id=pItemsiteid) ); ELSE SELECT SUM(itemloc_qty) INTO _qoh FROM itemloc, location WHERE ( (itemloc_location_id=location_id) AND (NOT location_netable) AND (itemloc_itemsite_id=pItemsiteid) ); END IF; IF (_qoh IS NULL) THEN _qoh := 0; END IF; RETURN _qoh; END; $_$; ALTER FUNCTION public.detailednnqoh(integer, boolean) OWNER TO admin; -- -- Name: detailedqoh(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION detailedqoh(integer, boolean) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pABS ALIAS FOR $2; _qoh NUMERIC; BEGIN IF (pABS) THEN SELECT SUM(noNeg(itemloc_qty)) INTO _qoh FROM itemloc LEFT OUTER JOIN location ON (itemloc_location_id=location_id) WHERE ( ( (location_id IS NULL) OR (location_netable) ) AND (itemloc_itemsite_id=pItemsiteid) ); ELSE SELECT SUM(itemloc_qty) INTO _qoh FROM itemloc LEFT OUTER JOIN location ON (itemloc_location_id=location_id) WHERE ( ( (location_id IS NULL) OR (location_netable) ) AND (itemloc_itemsite_id=pItemsiteid) ); END IF; IF (_qoh IS NULL) THEN _qoh := 0; END IF; RETURN _qoh; END; $_$; ALTER FUNCTION public.detailedqoh(integer, boolean) OWNER TO admin; -- -- Name: determinediscountdate(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION determinediscountdate(integer, date) RETURNS date LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTermsid ALIAS FOR $1; pSourceDate ALIAS FOR $2; _discDate DATE; _p RECORD; BEGIN SELECT terms_type, terms_discdays, terms_cutoffday INTO _p FROM terms WHERE (terms_id=pTermsid); IF (NOT FOUND) THEN _discDate := pSourceDate; -- Handle type D terms ELSIF (_p.terms_type = 'D') THEN _discDate := (pSourceDate + _p.terms_discdays); -- Handle type P terms ELSIF (_p.terms_type = 'P') THEN IF (date_part('day', pSourceDate) <= _p.terms_cutoffday) THEN _discDate := (DATE(date_trunc('month', pSourceDate)) + (_p.terms_discdays - 1)); ELSE _discDate := (DATE(date_trunc('month', pSourceDate)) + (_p.terms_discdays - 1) + INTERVAL '1 month'); END IF; -- Handle unknown terms ELSE _discDate := pSourceDate; END IF; RETURN _discDate; END; $_$; ALTER FUNCTION public.determinediscountdate(integer, date) OWNER TO admin; -- -- Name: determineduedate(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION determineduedate(integer, date) RETURNS date LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTermsid ALIAS FOR $1; pSourceDate ALIAS FOR $2; _dueDate DATE; _p RECORD; BEGIN SELECT terms_type, terms_duedays, terms_cutoffday INTO _p FROM terms WHERE (terms_id=pTermsid); IF (NOT FOUND) THEN _dueDate := pSourceDate; -- Handle type D terms ELSIF (_p.terms_type = 'D') THEN _dueDate := (pSourceDate + _p.terms_duedays); -- Handle type P terms ELSIF (_p.terms_type = 'P') THEN IF (date_part('day', pSourceDate) <= _p.terms_cutoffday) THEN _dueDate := (DATE(date_trunc('month', pSourceDate)) + (_p.terms_duedays - 1)); ELSE _dueDate := (DATE(date_trunc('month', pSourceDate)) + (_p.terms_duedays - 1) + INTERVAL '1 month'); END IF; -- Handle unknown terms ELSE _dueDate := pSourceDate; END IF; RETURN _dueDate; END; $_$; ALTER FUNCTION public.determineduedate(integer, date) OWNER TO admin; -- -- Name: digest(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION digest(text, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_digest'; ALTER FUNCTION public.digest(text, text) OWNER TO admin; -- -- Name: digest(bytea, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION digest(bytea, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_digest'; ALTER FUNCTION public.digest(bytea, text) OWNER TO admin; -- -- Name: disablepackage(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION disablepackage(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ppkgname ALIAS FOR $1; _i INTEGER := 0; _tabs TEXT[] := ARRAY['cmd', 'cmdarg', 'image', 'metasql', 'priv', 'report', 'script', 'uiform']; BEGIN IF (version() < 'PostgreSQL 8.2') THEN RETURN -1; END IF; FOR _i IN ARRAY_LOWER(_tabs,1)..ARRAY_UPPER(_tabs,1) LOOP EXECUTE 'ALTER TABLE ' || ppkgname || '.pkg' || _tabs[_i] || ' NO INHERIT public.' || _tabs[_i] || ';'; END LOOP; RETURN 0; END; $_$; ALTER FUNCTION public.disablepackage(text) OWNER TO admin; -- -- Name: disablepackage(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION disablepackage(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ppkgheadid ALIAS FOR $1; _pkgname TEXT; BEGIN SELECT pkghead_name INTO _pkgname FROM pkghead WHERE (pkghead_id=ppkgheadid); IF (NOT FOUND) THEN RETURN -2; END IF; RETURN disablePackage(_pkgname); END; $_$; ALTER FUNCTION public.disablepackage(integer) OWNER TO admin; -- -- Name: distributeitemlocseries(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION distributeitemlocseries(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemlocSeries ALIAS FOR $1; _distCounter INTEGER; _itemlocdist RECORD; _itemlocid INTEGER; _invhistid INTEGER; _check BOOLEAN; _debug BOOLEAN := true; BEGIN IF (_debug) THEN RAISE NOTICE 'distributeItemlocSeries, series=%', pItemlocSeries; END IF; _distCounter := 0; -- March through all of the itemlocdists for pItemlocSeries FOR _itemlocdist IN SELECT itemlocdist_id AS itemlocdistid, itemlocdist_source_type AS type, itemlocdist_source_id AS sourceid, itemlocdist_qty AS qty, itemlocdist_itemsite_id AS itemsiteid, itemsite_freeze, itemlocdist_invhist_id AS invhistid, itemlocdist_ls_id AS lotserialid, itemlocdist_expiration AS expiration, itemlocdist_flush, itemlocdist_warranty AS warranty, itemlocdist_series AS series FROM itemlocdist, itemsite WHERE ( (itemlocdist_itemsite_id=itemsite_id) AND (itemlocdist_series=pItemlocSeries) ) ORDER BY itemlocdist_flush DESC LOOP _distCounter := _distCounter + 1; IF (_debug) THEN RAISE NOTICE 'itemlocdist loop %', _distCounter; RAISE NOTICE 'itemlocdistid=%', _itemlocdist.itemlocdistid; RAISE NOTICE 'type=%', _itemlocdist.type; RAISE NOTICE 'sourceid=%', _itemlocdist.sourceid; RAISE NOTICE 'qty=%', _itemlocdist.qty; RAISE NOTICE 'itemsiteid=%', _itemlocdist.itemsiteid; RAISE NOTICE 'freeze=%', _itemlocdist.itemsite_freeze; RAISE NOTICE 'invhistid=%', _itemlocdist.invhistid; RAISE NOTICE 'lotserialid=%', _itemlocdist.lotserialid; RAISE NOTICE 'expiration=%', _itemlocdist.expiration; RAISE NOTICE 'flush=%', _itemlocdist.itemlocdist_flush; RAISE NOTICE 'warranty=%', _itemlocdist.warranty; END IF; -- Commit invhist to itemsite IF (NOT _itemlocdist.itemsite_freeze) THEN PERFORM postInvHist(_itemlocdist.invhistid); END IF; -- Mark the invhist tuple for the itemlocdist in question as having detail UPDATE invhist SET invhist_hasdetail=TRUE WHERE ( (NOT invhist_hasdetail) AND (invhist_id=_itemlocdist.invhistid) ); -- If this itemlocdist is a flush, write a invdetail tuple that records the empty IF (_itemlocdist.itemlocdist_flush) THEN INSERT INTO invdetail ( invdetail_invhist_id, invdetail_location_id, invdetail_ls_id, invdetail_qty, invdetail_qty_before, invdetail_qty_after, invdetail_expiration, invdetail_warrpurc ) SELECT _itemlocdist.invhistid, itemloc_location_id, itemloc_ls_id, (itemloc_qty * -1), itemloc_qty, 0, itemloc_expiration, _itemlocdist.warranty FROM itemloc WHERE ( (itemloc_qty <> 0) AND (itemloc_id=_itemlocdist.sourceid) ); -- Delete the flushed itemloc if its parent itemsite is not frozen IF (NOT _itemlocdist.itemsite_freeze) THEN DELETE FROM itemloc WHERE (itemloc_id=_itemlocdist.sourceid); END IF; ELSE -- If this is a location type distribution, check to see if the target itemloc -- already exists IF (_itemlocdist.type = 'L') THEN SELECT itemloc_id INTO _itemlocid FROM itemloc WHERE ( (itemloc_itemsite_id=_itemlocdist.itemsiteid) AND (itemloc_location_id=_itemlocdist.sourceid) AND (COALESCE(itemloc_ls_id,-1)=COALESCE(_itemlocdist.lotserialid,-1)) AND (COALESCE(itemloc_expiration,endOfTime())=COALESCE(_itemlocdist.expiration,endOfTime())) AND (COALESCE(itemloc_warrpurc,endoftime())=COALESCE(_itemlocdist.warranty,endoftime())) ); -- Nope, create it IF (NOT FOUND) THEN SELECT NEXTVAL('itemloc_itemloc_id_seq') INTO _itemlocid; INSERT INTO itemloc ( itemloc_id, itemloc_itemsite_id, itemloc_location_id, itemloc_qty, itemloc_ls_id, itemloc_expiration, itemloc_warrpurc ) VALUES ( _itemlocid, _itemlocdist.itemsiteid, _itemlocdist.sourceid, 0, _itemlocdist.lotserialid, _itemlocdist.expiration, _itemlocdist.warranty ); END IF; ELSE _itemlocid = _itemlocdist.sourceid; IF (_itemlocid IS NOT NULL AND (SELECT count(itemloc_id) = 0 FROM itemloc WHERE itemloc_id=_itemlocid)) THEN RAISE EXCEPTION 'No record to distribute against. Someone else may have already distributed this record.'; END IF; END IF; -- Record the invdetail INSERT INTO invdetail (invdetail_invhist_id, invdetail_location_id, invdetail_ls_id, invdetail_qty, invdetail_qty_before, invdetail_qty_after, invdetail_expiration, invdetail_warrpurc) SELECT _itemlocdist.invhistid, itemloc_location_id, _itemlocdist.lotserialid, _itemlocdist.qty, itemloc_qty, (itemloc_qty + _itemlocdist.qty), itemloc_expiration,_itemlocdist.warranty FROM itemloc WHERE (itemloc_id=_itemlocid); -- Update the itemloc_qty if its parent itemsite is not frozen IF (NOT _itemlocdist.itemsite_freeze) THEN UPDATE itemloc SET itemloc_qty = (itemloc_qty + _itemlocdist.qty) WHERE (itemloc_id=_itemlocid); END IF; -- Adjust QOH if this itemlocdist is to/from a non-netable location IF ( SELECT (NOT location_netable) FROM itemloc, location WHERE ( (itemloc_location_id=location_id) AND (itemloc_id=_itemlocid) ) ) THEN -- Record the netable->non-netable (or visaveras) invhist SELECT NEXTVAL('invhist_invhist_id_seq') INTO _invhistid; INSERT INTO invhist ( invhist_id, invhist_itemsite_id, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_docnumber, invhist_comments, invhist_invuom, invhist_unitcost, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_series ) SELECT _invhistid, itemsite_id, 'NN', (_itemlocdist.qty * -1), itemsite_qtyonhand, (itemsite_qtyonhand - _itemlocdist.qty), invhist_docnumber, invhist_comments, uom_name, stdCost(item_id), itemsite_costmethod, itemsite_value, (itemsite_value + (_itemlocdist.qty * -1 * CASE WHEN(itemsite_costmethod='A') THEN avgcost(itemsite_id) ELSE stdCost(itemsite_item_id) END)), _itemlocdist.series FROM item, itemsite, invhist, uom WHERE ((itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (itemsite_id=_itemlocdist.itemsiteid) AND (invhist_id=_itemlocdist.invhistid)); -- Adjust the parent itemsite IF (NOT _itemlocdist.itemsite_freeze) THEN UPDATE itemsite SET itemsite_qtyonhand = (itemsite_qtyonhand - _itemlocdist.qty), itemsite_nnqoh = (itemsite_nnqoh + _itemlocdist.qty) FROM itemloc WHERE ((itemloc_itemsite_id=itemsite_id) AND (itemloc_id=_itemlocid)); END IF; END IF; END IF; -- If, after the distribution, the target itemloc_qty = 0, delete the itemloc -- if its parent itemsite is not frozen IF (NOT _itemlocdist.itemsite_freeze) THEN DELETE FROM itemloc WHERE ( (itemloc_qty=0) AND (itemloc_id=_itemlocid) ); END IF; END LOOP; DELETE FROM itemlocdist WHERE (itemlocdist_series=pItemlocSeries); RETURN _distCounter; END; $_$; ALTER FUNCTION public.distributeitemlocseries(integer) OWNER TO admin; -- -- Name: distributetodefault(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION distributetodefault(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemlocdistid ALIAS FOR $1; BEGIN RETURN distributeToDefault(pItemlocdistid, 'O'); END; $_$; ALTER FUNCTION public.distributetodefault(integer) OWNER TO admin; -- -- Name: distributetodefault(integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION distributetodefault(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemlocdistid ALIAS FOR $1; pTranstype ALIAS FOR $2; _locationid INTEGER; _itemlocdistid INTEGER; _qty NUMERIC; BEGIN -- Make sure that the itemsite in question has a default location SELECT CASE WHEN (pTranstype='R') THEN itemsite_recvlocation_id WHEN (pTranstype='I') THEN itemsite_issuelocation_id ELSE itemsite_location_id END INTO _locationid FROM itemlocdist, itemsite WHERE ( (itemlocdist_itemsite_id=itemsite_id) AND (itemlocdist_id=pItemlocdistid) ); IF ( (NOT FOUND) OR (_locationid = -1) ) THEN RETURN -1; END IF; -- Determine the remaining qty required to distribute SELECT (p.itemlocdist_qty - COALESCE(SUM(c.itemlocdist_qty), 0)) INTO _qty FROM itemlocdist AS p LEFT OUTER JOIN itemlocdist AS c ON (c.itemlocdist_itemlocdist_id=p.itemlocdist_id) WHERE (p.itemlocdist_id=pItemlocdistid) GROUP BY p.itemlocdist_qty; IF (_qty = 0) THEN RETURN -2; END IF; -- Check to see if an itemlocdist with the correct location/lotserial/expiration already exists SELECT target.itemlocdist_id INTO _itemlocdistid FROM itemlocdist AS source, itemlocdist AS target, itemloc, itemsite WHERE ( (target.itemlocdist_source_type='L') AND (target.itemlocdist_source_id=_locationid) AND (target.itemlocdist_itemsite_id=source.itemlocdist_itemsite_id) AND (COALESCE(target.itemlocdist_ls_id)=COALESCE(source.itemlocdist_ls_id)) AND (target.itemlocdist_expiration=source.itemlocdist_expiration) AND (target.itemlocdist_itemlocdist_id=source.itemlocdist_itemlocdist_id) AND (target.itemlocdist_itemsite_id=itemsite_id) AND (source.itemlocdist_id=pItemlocdistid) ); IF (FOUND) THEN UPDATE itemlocdist SET itemlocdist_qty = (itemlocdist_qty + _qty) WHERE (itemlocdist_id=_itemlocdistid); RETURN _itemlocdistid; END IF; -- Create a new itemlocdist SELECT NEXTVAL('itemlocdist_itemlocdist_id_seq') INTO _itemlocdistid; INSERT INTO itemlocdist ( itemlocdist_id, itemlocdist_itemlocdist_id, itemlocdist_source_type, itemlocdist_ls_id, itemlocdist_expiration, itemlocdist_source_id, itemlocdist_itemsite_id, itemlocdist_qty ) SELECT _itemlocdistid, pItemlocdistid, 'L', itemlocdist_ls_id, itemlocdist_expiration, _locationid, itemlocdist_itemsite_id, _qty FROM itemlocdist WHERE (itemlocdist_id=pItemlocdistid); RETURN _itemlocdistid; END; $_$; ALTER FUNCTION public.distributetodefault(integer, text) OWNER TO admin; -- -- Name: distributetodefaultitemloc(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION distributetodefaultitemloc(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemlocdistid ALIAS FOR $1; BEGIN RETURN distributeToDefaultItemLoc(pItemlocdistid, 'O'); END; $_$; ALTER FUNCTION public.distributetodefaultitemloc(integer) OWNER TO admin; -- -- Name: distributetodefaultitemloc(integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION distributetodefaultitemloc(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemlocdistid ALIAS FOR $1; pTranstype ALIAS FOR $2; _itemlocid INTEGER; _itemlocdistid INTEGER; _qty NUMERIC; BEGIN -- Make sure that the itemsite in question has a default location SELECT itemloc_id INTO _itemlocid FROM itemlocdist, itemsite, itemloc WHERE ((itemlocdist_itemsite_id=itemsite_id) AND ( (itemsite_location_id=itemloc_location_id AND pTranstype='O') OR (itemsite_recvlocation_id=itemloc_location_id AND pTranstype='R') OR (itemsite_issuelocation_id=itemloc_location_id AND pTranstype='I') ) AND (itemloc_itemsite_id=itemsite_id) AND (itemlocdist_id=pItemlocdistid)); IF ( (NOT FOUND) OR (_itemlocid = -1) ) THEN RETURN -1; END IF; -- Determine the remaining qty required to distribute SELECT (p.itemlocdist_qty - COALESCE(SUM(c.itemlocdist_qty), 0)) INTO _qty FROM itemlocdist AS p LEFT OUTER JOIN itemlocdist AS c ON (c.itemlocdist_itemlocdist_id=p.itemlocdist_id) WHERE (p.itemlocdist_id=pItemlocdistid) GROUP BY p.itemlocdist_qty; IF (_qty = 0) THEN RETURN -2; END IF; -- Check to see if an itemlocdist with the correct location/lotserial/expiration already exists SELECT target.itemlocdist_id INTO _itemlocdistid FROM itemlocdist AS source, itemlocdist AS target WHERE ( (target.itemlocdist_source_type='I') AND (target.itemlocdist_source_id=_itemlocid) AND (COALESCE(target.itemlocdist_ls_id,-1)=COALESCE(source.itemlocdist_ls_id,-1)) AND (target.itemlocdist_expiration=source.itemlocdist_expiration) AND (target.itemlocdist_itemlocdist_id=source.itemlocdist_id) AND (source.itemlocdist_id=pItemlocdistid) ); IF (FOUND) THEN UPDATE itemlocdist SET itemlocdist_qty = (itemlocdist_qty + _qty) WHERE (itemlocdist_id=_itemlocdistid); RETURN _itemlocdistid; END IF; -- Create a new itemlocdist SELECT NEXTVAL('itemlocdist_itemlocdist_id_seq') INTO _itemlocdistid; INSERT INTO itemlocdist ( itemlocdist_id, itemlocdist_itemlocdist_id, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_qty, itemlocdist_expiration ) VALUES ( _itemlocdistid, pItemlocdistid, 'I', _itemlocid, _qty, endOfTime() ); RETURN _itemlocdistid; END; $_$; ALTER FUNCTION public.distributetodefaultitemloc(integer, text) OWNER TO admin; -- -- Name: distributetolocations(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION distributetolocations(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemlocdistid ALIAS FOR $1; _distCounter INTEGER; _itemlocdist RECORD; _itemlocid INTEGER; _runningQty NUMERIC; _tmp RECORD; BEGIN _distCounter := 0; _runningQty := 0; -- A scenario can occur where two people try to post distributions -- to the same itemsite against two or more lot/serial/mlc locations -- leading to a deadlock. This line tries to prevent that by locking -- ahead of time all the itemsites that the transaction will need -- before any of the other tables are locked individually. SELECT itemsite_id INTO _tmp FROM itemsite WHERE(itemsite_id in (SELECT DISTINCT itemlocdist_itemsite_id FROM itemlocdist WHERE(itemlocdist_id=pItemlocdistid))) FOR UPDATE; -- March through all of the itemlocdist owned by the passed parent itemlocdist FOR _itemlocdist IN SELECT c.itemlocdist_id AS itemlocdistid, c.itemlocdist_source_type AS type, c.itemlocdist_source_id AS sourceid, c.itemlocdist_qty AS qty, p.itemlocdist_itemsite_id AS itemsiteid, itemsite_freeze, p.itemlocdist_invhist_id AS invhistid, p.itemlocdist_ls_id AS lotserialid, p.itemlocdist_expiration AS expiration, p.itemlocdist_warranty AS warranty, p.itemlocdist_order_type AS ordertype, p.itemlocdist_order_id AS orderid, p.itemlocdist_series AS series FROM itemlocdist AS c, itemlocdist AS p, itemsite WHERE ( (c.itemlocdist_itemlocdist_id=p.itemlocdist_id) AND (p.itemlocdist_source_type='O') AND (p.itemlocdist_itemsite_id=itemsite_id) AND (p.itemlocdist_id=pItemlocdistid) ) LOOP _distCounter := _distCounter + 1; -- If the target for this itemlocdist is a location, check to see if the -- required itemloc already exists IF (_itemlocdist.type = 'L') THEN SELECT itemloc_id INTO _itemlocid FROM itemloc WHERE ( (itemloc_itemsite_id=_itemlocdist.itemsiteid) AND (itemloc_location_id=_itemlocdist.sourceid) AND (COALESCE(itemloc_ls_id, -1)=COALESCE(_itemlocdist.lotserialid, -1)) AND (COALESCE(itemloc_expiration,endOfTime())=COALESCE(_itemlocdist.expiration,endOfTime())) AND (COALESCE(itemloc_warrpurc,endoftime())=COALESCE(_itemlocdist.warranty,endoftime())) ); -- Nope, make it IF (NOT FOUND) THEN SELECT NEXTVAL('itemloc_itemloc_id_seq') INTO _itemlocid; INSERT INTO itemloc ( itemloc_id, itemloc_itemsite_id, itemloc_location_id, itemloc_qty, itemloc_ls_id, itemloc_expiration, itemloc_warrpurc ) VALUES ( _itemlocid, _itemlocdist.itemsiteid, _itemlocdist.sourceid, 0, _itemlocdist.lotserialid, _itemlocdist.expiration, _itemlocdist.warranty ); END IF; ELSE -- Yep, cache it _itemlocid = _itemlocdist.sourceid; IF (_itemlocid IS NOT NULL AND (SELECT count(itemloc_id) = 0 FROM itemloc WHERE itemloc_id=_itemlocid)) THEN RAISE EXCEPTION 'No record to distribute against. Someone else may have already distributed this record.'; END IF; END IF; -- Record the invdetail for this itemlocdist INSERT INTO invdetail ( invdetail_invhist_id, invdetail_location_id, invdetail_ls_id, invdetail_qty, invdetail_qty_before, invdetail_qty_after, invdetail_expiration, invdetail_warrpurc ) SELECT _itemlocdist.invhistid, itemloc_location_id, itemloc_ls_id, _itemlocdist.qty, itemloc_qty, (itemloc_qty + _itemlocdist.qty), itemloc_expiration,_itemlocdist.warranty FROM itemloc WHERE (itemloc_id=_itemlocid); -- Update the parent invhist to indicate that it has invdetail records UPDATE invhist SET invhist_hasdetail=TRUE WHERE ((invhist_hasdetail=FALSE) AND (invhist_id=_itemlocdist.invhistid)); -- Update the itemloc_qty if its parent itemsite is not frozen IF (NOT _itemlocdist.itemsite_freeze) THEN UPDATE itemloc SET itemloc_qty = (itemloc_qty + _itemlocdist.qty) WHERE (itemloc_id=_itemlocid); PERFORM postInvHist(_itemlocdist.invhistid); -- Handle reservation data IF ( (SELECT fetchMetricBool('EnableSOReservationsByLocation')) AND (_itemlocdist.qty < 0) ) THEN -- If a shipment on a sales order, record reservation change before updating -- so it can be reversed later if necessary IF (_itemlocdist.ordertype = 'SO') THEN INSERT INTO shipitemlocrsrv SELECT nextval('shipitemlocrsrv_shipitemlocrsrv_id_seq'), shipitem_id, itemloc_itemsite_id, itemloc_location_id, itemloc_ls_id, itemloc_expiration, itemloc_warrpurc, least(_itemlocdist.qty, itemlocrsrv_qty) FROM shipitem, itemloc JOIN itemlocrsrv ON (itemloc_id=itemlocrsrv_itemloc_id) WHERE ( (shipitem_invhist_id=_itemlocdist.invhistid) AND (itemloc_id=_itemlocid) AND (itemlocrsrv_source=_itemlocdist.ordertype) AND (itemlocrsrv_source_id=_itemlocdist.orderid) ); END IF; -- Update the itemloc reservation UPDATE itemlocrsrv SET itemlocrsrv_qty = (itemlocrsrv_qty + _itemlocdist.qty) WHERE ( (itemlocrsrv_itemloc_id=_itemlocid) AND (itemlocrsrv_source=_itemlocdist.ordertype) AND (itemlocrsrv_source_id=_itemlocdist.orderid) ); -- Delete reservation if fully distributed DELETE FROM itemlocrsrv WHERE ( (itemlocrsrv_itemloc_id=_itemlocid) AND (itemlocrsrv_source=_itemlocdist.ordertype) AND (itemlocrsrv_source_id=_itemlocdist.orderid) AND (itemlocrsrv_qty=0) ); END IF; END IF; -- Adjust QOH if this itemlocdist is to/from a non-netable location IF ( SELECT (NOT location_netable) FROM itemloc, location WHERE ((itemloc_location_id=location_id) AND (itemloc_id=_itemlocid)) ) THEN -- Record the invhist record for the netable->non-netable (or visaversa) INSERT INTO invhist ( invhist_itemsite_id, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_docnumber, invhist_comments, invhist_invuom, invhist_unitcost, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_series ) SELECT itemsite_id, 'NN', (_itemlocdist.qty * -1), itemsite_qtyonhand, (itemsite_qtyonhand - _itemlocdist.qty), invhist_docnumber, invhist_comments, uom_name, stdCost(item_id), itemsite_costmethod, itemsite_value, (itemsite_value + (_itemlocdist.qty * -1 * CASE WHEN(itemsite_costmethod='A') THEN avgcost(itemsite_id) ELSE stdCost(itemsite_item_id) END)), _itemlocdist.series FROM item, itemsite, invhist, uom WHERE ( (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (itemsite_id=_itemlocdist.itemsiteid) AND (invhist_id=_itemlocdist.invhistid) ); -- Update the itemsite_qoh IF (NOT _itemlocdist.itemsite_freeze) THEN UPDATE itemsite SET itemsite_qtyonhand = (itemsite_qtyonhand - _itemlocdist.qty), itemsite_nnqoh = (itemsite_nnqoh + _itemlocdist.qty) FROM itemloc WHERE ((itemloc_itemsite_id=itemsite_id) AND (itemloc_id=_itemlocid)); END IF; END IF; -- Cache the running qty. _runningQty := _runningQty + _itemlocdist.qty; -- Dene with the child itemlocdist, so delete it DELETE FROM itemlocdist WHERE (itemlocdist_id=_itemlocdist.itemlocdistid); -- If the target itemloc is now at qty=0, delete it if its parent -- itemsite is not frozen IF (NOT _itemlocdist.itemsite_freeze) THEN DELETE FROM itemloc WHERE ( (itemloc_qty=0) AND (itemloc_id=_itemlocid) ); END IF; END LOOP; -- If the running qty for the detailed distributions is the same as the -- total qty to distribute indicated by the parent itemlocdist, then the -- parent itemlocdist has been fully distributed and should be deleted. IF ( ( SELECT itemlocdist_qty FROM itemlocdist WHERE (itemlocdist_id=pItemlocdistid) ) = _runningQty) THEN DELETE FROM itemlocdist WHERE (itemlocdist_id=pItemlocdistid); ELSE -- There is still some more qty to distribute in the parent itemlocdist. -- Update the qty to distribute with the qty that has been distributed. UPDATE itemlocdist SET itemlocdist_qty = (itemlocdist_qty - _runningQty) WHERE (itemlocdist_id=pItemlocdistid); END IF; RETURN _distCounter; END; $_$; ALTER FUNCTION public.distributetolocations(integer) OWNER TO admin; -- -- Name: distributevoucherline(integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION distributevoucherline(integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVoucherId ALIAS FOR $1; pPoitemId ALIAS FOR $2; pCurrId ALIAS FOR $3; _count INTEGER; _costelemId INTEGER; _close BOOLEAN; _r RECORD; _qtyOrdered NUMERIC; _voitemId INTEGER; _taxtypeid INTEGER; BEGIN -- Make sure the P/O and Voucher are same currency SELECT COALESCE(COUNT(*),0) INTO _count FROM poitem JOIN pohead ON (pohead_id=poitem_pohead_id) WHERE ((poitem_id=pPoitemid) AND (pohead_curr_id=pCurrId)); IF (_count = 0) THEN RETURN -3; END IF; -- Validate and get cost element SELECT COALESCE(COUNT(*),0) INTO _count FROM itemcost, item, itemsite, poitem WHERE ((itemcost_item_id=item_id) AND (item_id=itemsite_item_id) AND (itemsite_id=poitem_itemsite_id) AND (poitem_id=pPoitemId)); IF (_count > 1) THEN RETURN -5; ELSEIF (_count = 1) THEN SELECT itemcost_costelem_id INTO _costelemId FROM itemcost, item, itemsite, poitem WHERE ((itemcost_item_id=item_id) AND (item_id=itemsite_item_id) AND (itemsite_id=poitem_itemsite_id) AND (poitem_id=pPoitemId)); ELSE SELECT costelem_id INTO _costelemId FROM costelem WHERE (costelem_type='Material'); END IF; -- Clear previous distributions UPDATE recv SET recv_vohead_id=NULL, recv_voitem_id=NULL WHERE ((recv_vohead_id=pVoucherId) AND (recv_orderitem_id=pPoitemId) AND (recv_order_type='PO')); UPDATE poreject SET poreject_vohead_id=NULL, poreject_voitem_id=NULL WHERE ((poreject_vohead_id=pVoucherId) AND (poreject_poitem_id=pPoitemId)); DELETE FROM vodist WHERE ((vodist_poitem_id=pPoitemId) AND (vodist_vohead_id=pVoucherId)); DELETE FROM voitem WHERE ((voitem_poitem_id=pPoitemId) AND (voitem_vohead_id=pVoucherId)); -- Determine Line balances SELECT COALESCE(SUM(qty_received),0) AS qty_received, COALESCE(SUM(qty_rejected),0) AS qty_rejected, COALESCE(SUM(qty_vouchered),0) AS qty_vouchered, round(COALESCE(SUM(balance),0),2) AS balance, round(COALESCE(SUM(freight),0),2) AS freight INTO _r FROM ( SELECT recv_qty AS qty_received, 0 AS qty_rejected, 0 AS qty_vouchered, (recv_qty * COALESCE(recv_purchcost, poitem_unitprice)) AS balance, recv_freight AS freight FROM poitem JOIN recv ON ((recv_orderitem_id=poitem_id) AND (recv_order_type='PO')) WHERE ( (recv_vohead_id IS NULL) AND (NOT recv_invoiced) AND (recv_posted) AND (poitem_id=pPoitemId) ) UNION ALL SELECT 0 AS qty_received, (poreject_qty) AS qty_rejected, 0 AS qty_vouchered, (poreject_qty * -1 * COALESCE(recv_purchcost, poitem_unitprice)) AS balance, 0 AS freight FROM poitem JOIN poreject ON (poreject_poitem_id=poitem_id) LEFT OUTER JOIN recv ON (recv_id=poreject_recv_id) WHERE ( (poreject_posted) AND (poreject_vohead_id IS NULL) AND (NOT poreject_invoiced) AND (poitem_id=pPoitemId) ) UNION ALL SELECT 0 AS qty_received, 0 AS qty_rejected, voitem_qty AS qty_vouchered, 0 AS balance, 0 AS freight FROM voitem, poitem WHERE ( (voitem_poitem_id=pPoitemId) AND (poitem_id=voitem_poitem_id) ) ) AS data; SELECT poitem_qty_ordered INTO _qtyOrdered FROM poitem WHERE (poitem_id=pPoitemId); IF _r.balance < 0 THEN RETURN -4; ELSEIF ( ((_r.qty_received <> 0) OR (_r.qty_received <> 0)) AND (_r.qty_received - _r.qty_rejected = 0) ) THEN RETURN -2; ELSEIF ((_r.qty_received - _r.qty_rejected) = 0) THEN RETURN 0; END IF; -- Determine whether to close P/O item IF (_r.qty_received -_r.qty_rejected + _r.qty_vouchered) >= _qtyOrdered THEN _close:=True; ELSE _close:=False; END IF; -- Create distribution INSERT INTO vodist (vodist_poitem_id,vodist_vohead_id,vodist_costelem_id,vodist_amount,vodist_qty,vodist_expcat_id) VALUES (pPoitemId,pVoucherId,_costelemId,_r.balance,(_r.qty_received -_r.qty_rejected),-1); -- Create voucher item SELECT poitem_taxtype_id INTO _taxtypeid FROM poitem WHERE (poitem_id=pPoitemId); SELECT NEXTVAL('voitem_voitem_id_seq') INTO _voitemId; INSERT INTO voitem (voitem_id,voitem_vohead_id,voitem_poitem_id,voitem_close,voitem_qty,voitem_freight, voitem_taxtype_id) VALUES (_voitemId,pVoucherId,pPoitemId,_close,(_r.qty_received -_r.qty_rejected),_r.freight, _taxtypeid); -- Tag receipt records UPDATE recv SET recv_vohead_id=pVoucherId, recv_voitem_id=_voitemId WHERE ((recv_orderitem_id=pPoitemId) AND (recv_order_type='PO') AND (recv_vohead_id IS NULL)); UPDATE poreject SET poreject_vohead_id=pVoucherId,poreject_voitem_id=_voitemId WHERE ((poreject_poitem_id=pPoitemId) AND (NOT poreject_invoiced) AND (poreject_vohead_id IS NULL)); RETURN 1; END; $_$; ALTER FUNCTION public.distributevoucherline(integer, integer, integer) OWNER TO admin; -- -- Name: dopostcosts(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION dopostcosts(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pMaterial ALIAS FOR $1; plowerMaterial ALIAS FOR $2; pdirectLabor ALIAS FOR $3; plowerDirectLabor ALIAS FOR $4; poverhead ALIAS FOR $5; plowerOverhead ALIAS FOR $6; pmachOverhead ALIAS FOR $7; plowerMachOverhead ALIAS FOR $8; pUser ALIAS FOR $9; plowerUser ALIAS FOR $10; prollUp ALIAS FOR $11; _item RECORD; _result INTEGER := 0; BEGIN PERFORM resetLowLevelCode(-1); FOR _item IN SELECT costUpdate_item_id FROM costUpdate ORDER BY costUpdate_lowlevel_code DESC LOOP PERFORM doPostCosts(_item.costUpdate_item_id, FALSE, pMaterial, plowerMaterial, pdirectLabor, plowerDirectLabor, poverhead, plowerOverhead, pmachOverhead, plowerMachOverhead, puser, plowerUser, prollUp); END LOOP; RETURN _result; END; $_$; ALTER FUNCTION public.dopostcosts(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) OWNER TO admin; -- -- Name: dopostcosts(integer, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION dopostcosts(integer, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemId ALIAS FOR $1; pResetLowLevel ALIAS FOR $2; pMaterial ALIAS FOR $3; plowerMaterial ALIAS FOR $4; pdirectLabor ALIAS FOR $5; plowerDirectLabor ALIAS FOR $6; poverhead ALIAS FOR $7; plowerOverhead ALIAS FOR $8; pmachOverhead ALIAS FOR $9; plowerMachOverhead ALIAS FOR $10; pUser ALIAS FOR $11; plowerUser ALIAS FOR $12; prollUp ALIAS FOR $13; _itemcost RECORD; _result INTEGER; BEGIN IF (pResetLowLevel) THEN PERFORM resetLowLevelCode(pItemId); END IF; FOR _itemcost IN SELECT itemcost_id, costelem_sys, costelem_type, itemcost_lowlevel, costUpdate_lowlevel_code, costUpdate_item_type FROM itemcost, costelem, costUpdate WHERE itemcost_item_id = pItemId AND costUpdate_item_id = itemcost_item_id AND itemcost_costelem_id = costelem_id LOOP IF (NOT _itemcost.costelem_sys) THEN IF ( (pUser) AND ( NOT _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; IF ( (plowerUser) AND ( _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; END IF; IF (_itemcost.costelem_type = 'Material') THEN IF ( (pMaterial) AND ( NOT _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; IF ( (plowerMaterial) AND ( _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; END IF; IF (_itemcost.costelem_type = 'Direct Labor') THEN IF ( (pdirectLabor) AND ( NOT _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; IF ( (plowerDirectLabor) AND ( _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; END IF; IF (_itemcost.costelem_type = 'Overhead') THEN IF ( (poverhead) AND ( NOT _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; IF ( (plowerOverhead) AND ( _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; END IF; IF (_itemcost.costelem_type = 'Machine Overhead') THEN IF ( (pmachOverhead) AND ( NOT _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; IF ( (plowerMachOverhead) AND ( _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; END IF; END LOOP; IF (prollUp) THEN PERFORM rollUpStandardCost(pItemId); _result := _result + 1; END IF; RETURN _result; END; $_$; ALTER FUNCTION public.dopostcosts(integer, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) OWNER TO admin; -- -- Name: doupdatecosts(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION doupdatecosts(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE plowerMaterial ALIAS FOR $1; pdirectLabor ALIAS FOR $2; plowerDirectLabor ALIAS FOR $3; poverhead ALIAS FOR $4; plowerOverhead ALIAS FOR $5; pmachOverhead ALIAS FOR $6; plowerMachOverhead ALIAS FOR $7; plowerUser ALIAS FOR $8; prollUp ALIAS FOR $9; BEGIN RETURN doUpdateCosts(plowerMaterial, pdirectLabor, plowerDirectLabor, poverhead, plowerOverhead, pmachOverhead, plowerMachOverhead, plowerUser, prollUp, TRUE); END; $_$; ALTER FUNCTION public.doupdatecosts(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) OWNER TO admin; -- -- Name: doupdatecosts(integer, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION doupdatecosts(integer, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemId ALIAS FOR $1; pResetLowLevel ALIAS FOR $2; plowerMaterial ALIAS FOR $3; pdirectLabor ALIAS FOR $4; plowerDirectLabor ALIAS FOR $5; poverhead ALIAS FOR $6; plowerOverhead ALIAS FOR $7; pmachOverhead ALIAS FOR $8; plowerMachOverhead ALIAS FOR $9; plowerUser ALIAS FOR $10; prollUp ALIAS FOR $11; BEGIN RETURN doUpdateCosts(pItemId, pResetLowLevel, plowerMaterial, pdirectLabor, plowerDirectLabor, poverhead, plowerOverhead, pmachOverhead, plowerMachOverhead, plowerUser, prollUp, TRUE); END; $_$; ALTER FUNCTION public.doupdatecosts(integer, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) OWNER TO admin; -- -- Name: doupdatecosts(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION doupdatecosts(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE plowerMaterial ALIAS FOR $1; pdirectLabor ALIAS FOR $2; plowerDirectLabor ALIAS FOR $3; poverhead ALIAS FOR $4; plowerOverhead ALIAS FOR $5; pmachOverhead ALIAS FOR $6; plowerMachOverhead ALIAS FOR $7; plowerUser ALIAS FOR $8; prollUp ALIAS FOR $9; pActual ALIAS FOR $10; _item RECORD; _bom RECORD; _result INTEGER := 0; BEGIN PERFORM resetLowLevelCode(-1); FOR _item IN SELECT costUpdate_item_id FROM costUpdate ORDER BY costUpdate_lowlevel_code DESC LOOP PERFORM doUpdateCosts(_item.costUpdate_item_id, false, plowerMaterial, pdirectLabor, plowerDirectLabor, poverhead, plowerOverhead, pmachOverhead, plowerMachOverhead, plowerUser, prollUp, pActual); END LOOP; RETURN _result; END; $_$; ALTER FUNCTION public.doupdatecosts(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) OWNER TO admin; -- -- Name: doupdatecosts(integer, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION doupdatecosts(integer, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemId ALIAS FOR $1; pResetLowLevel ALIAS FOR $2; plowerMaterial ALIAS FOR $3; pdirectLabor ALIAS FOR $4; plowerDirectLabor ALIAS FOR $5; poverhead ALIAS FOR $6; plowerOverhead ALIAS FOR $7; pmachOverhead ALIAS FOR $8; plowerMachOverhead ALIAS FOR $9; plowerUser ALIAS FOR $10; prollUp ALIAS FOR $11; pUpdateActual ALIAS FOR $12; _item RECORD; _bom RECORD; _result INTEGER := 0; _resultFromReset INTEGER; _counterNum INTEGER; _feedBackNum INTEGER; BEGIN IF (pResetLowLevel) THEN PERFORM resetLowLevelCode(pItemId); END IF; SELECT costUpdate_item_id AS item_id, costUpdate_item_type AS item_type INTO _item FROM costUpdate WHERE costUpdate_item_id = pItemId; IF ((plowerMaterial) AND ((_item.item_type <> 'P') AND (_item.item_type <> 'O'))) THEN PERFORM updateSorACost(_item.item_id, 'Material', TRUE, lowerCost(_item.item_id, 'Material', pUpdateActual), pUpdateActual); END IF; IF (pdirectLabor) THEN PERFORM updateSorACost(_item.item_id, 'Direct Labor', FALSE, xtmfg.directLaborCost(_item.item_id), pUpdateActual); END IF; IF (plowerDirectLabor) THEN PERFORM updateSorACost(_item.item_id, 'Direct Labor', TRUE, lowerCost(_item.item_id, 'Direct Labor', pUpdateActual), pUpdateActual); END IF; IF (poverhead) THEN PERFORM updateSorACost(_item.item_id, 'Overhead', FALSE, xtmfg.overheadCost(_item.item_id), pUpdateActual); END IF; IF (plowerOverhead) THEN PERFORM updateSorACost(_item.item_id, 'Overhead', TRUE, lowerCost(_item.item_id, 'Overhead', pUpdateActual), pUpdateActual); END IF; IF (pmachOverhead) THEN PERFORM updateSorACost(_item.item_id, 'Machine Overhead', FALSE, xtmfg.machineOverheadCost(_item.item_id), pUpdateActual); END IF; IF (plowerMachOverhead) THEN PERFORM updateSorACost(_item.item_id, 'Machine Overhead', TRUE, lowerCost(_item.item_id, 'Machine Overhead', pUpdateActual), pUpdateActual); END IF; IF (plowerUser) THEN PERFORM updateLowerUserCosts(_item.item_id, pUpdateActual); END IF; IF (prollUp) THEN PERFORM rollUpSorACost(_item.item_id, pUpdateActual); END IF; RETURN _result; END; $_$; ALTER FUNCTION public.doupdatecosts(integer, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) OWNER TO admin; -- -- Name: dropifexists(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION dropifexists(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN dropIfExists($1, $2, 'public'); END; $_$; ALTER FUNCTION public.dropifexists(text, text) OWNER TO admin; -- -- Name: dropifexists(text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION dropifexists(text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN dropIfExists($1, $2, $3, false); END; $_$; ALTER FUNCTION public.dropifexists(text, text, text) OWNER TO admin; -- -- Name: dropifexists(text, text, text, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION dropifexists(text, text, text, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pType ALIAS FOR $1; pObject ALIAS FOR $2; pSchema ALIAS FOR $3; pCascade ALIAS FOR $4; _table TEXT; _query TEXT; BEGIN IF (UPPER(pType) = 'INDEX') THEN _query = 'DROP INDEX ' || quote_ident(LOWER(pSchema)) || '.' || quote_ident(LOWER(pObject)); BEGIN EXECUTE _query; EXCEPTION WHEN undefined_object OR invalid_schema_name THEN RETURN 0; WHEN OTHERS THEN RAISE EXCEPTION '% %', SQLSTATE, SQLERRM; END; ELSEIF (UPPER(pType) = 'TABLE') THEN _query = 'DROP TABLE ' || quote_ident(LOWER(pSchema)) || '.' || quote_ident(LOWER(pObject)); IF (pCascade) THEN _query = _query || ' CASCADE'; END IF; BEGIN EXECUTE _query; EXCEPTION WHEN undefined_table OR invalid_schema_name THEN RETURN 0; WHEN OTHERS THEN RAISE EXCEPTION '% %', SQLSTATE, SQLERRM; END; ELSIF (UPPER(pType) = 'VIEW') THEN _query = 'DROP VIEW ' || quote_ident(LOWER(pSchema)) || '.' || quote_ident(LOWER(pObject)); IF (pCascade) THEN _query = _query || ' CASCADE'; END IF; BEGIN EXECUTE _query; EXCEPTION WHEN undefined_table OR invalid_schema_name THEN RETURN 0; WHEN OTHERS THEN RAISE EXCEPTION '% %', SQLSTATE, SQLERRM; END; ELSIF (UPPER(pType) = 'TRIGGER') THEN SELECT relname INTO _table FROM pg_trigger, pg_class WHERE ((tgrelid=pg_class.oid) AND (UPPER(tgname)=UPPER(pObject))); IF (NOT FOUND) THEN _table := '[no table]'; END IF; _query = 'DROP TRIGGER ' || quote_ident(LOWER(pObject)) || ' ON ' || quote_ident(LOWER(pSchema)) || '.' || quote_ident(LOWER(_table)); BEGIN EXECUTE _query; EXCEPTION WHEN undefined_object THEN RETURN 0; WHEN undefined_table OR invalid_schema_name THEN RETURN 0; WHEN OTHERS THEN RAISE EXCEPTION '% %', SQLSTATE, SQLERRM; END; ELSIF (UPPER(pType) = 'FUNCTION') THEN _query = 'DROP FUNCTION ' || (LOWER(pSchema)) || '.' || (LOWER(pObject)); BEGIN EXECUTE _query; EXCEPTION WHEN undefined_object OR undefined_function OR invalid_schema_name THEN RETURN 0; WHEN OTHERS THEN RAISE EXCEPTION '% %', SQLSTATE, SQLERRM; END; ELSIF (UPPER(pType) = 'CONSTRAINT') THEN IF( (SELECT count(*) FROM pg_constraint, pg_class, pg_namespace WHERE((conrelid=pg_class.oid) AND (connamespace=pg_namespace.oid) AND (conname=pObject) AND (nspname=pSchema)) ) > 1 ) THEN RAISE EXCEPTION 'dropIfExists called on constraint name that matches more than 1 constraint.'; END IF; SELECT relname INTO _table FROM pg_constraint, pg_class, pg_namespace WHERE ((conrelid=pg_class.oid) AND (connamespace=pg_namespace.oid) AND (conname=pObject) AND (nspname=pSchema)); IF (NOT FOUND) THEN RETURN 0; END IF; _query = 'ALTER TABLE ' || quote_ident(LOWER(pSchema)) || '.' || quote_ident(LOWER(_table)) || ' DROP CONSTRAINT ' || quote_ident(LOWER(pObject)); BEGIN EXECUTE _query; EXCEPTION WHEN undefined_table OR invalid_schema_name THEN RETURN 0; WHEN OTHERS THEN RAISE EXCEPTION '% %', SQLSTATE, SQLERRM; END; ELSIF (UPPER(pType) = 'SCHEMA') THEN _query = 'DROP SCHEMA ' || quote_ident(LOWER(pObject)); BEGIN EXECUTE _query; EXCEPTION WHEN invalid_schema_name THEN RETURN 0; WHEN OTHERS THEN RAISE EXCEPTION '% %', SQLSTATE, SQLERRM; END; ELSIF (UPPER(pType) = 'TYPE') THEN _query = 'DROP TYPE ' || quote_ident(LOWER(pSchema)) || '.' || quote_ident(LOWER(pObject)); IF (pCascade) THEN _query = _query || ' CASCADE'; END IF; BEGIN EXECUTE _query; EXCEPTION WHEN undefined_object OR invalid_schema_name THEN RETURN 0; WHEN OTHERS THEN RAISE EXCEPTION '% %', SQLSTATE, SQLERRM; END; ELSE RAISE EXCEPTION 'dropIfExists(%, %): unknown pType %', pType, pObject, pType; END IF; RETURN 1; END; $_$; ALTER FUNCTION public.dropifexists(text, text, text, boolean) OWNER TO admin; -- -- Name: dropifexists(text, text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION dropifexists(text, text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pType ALIAS FOR $1; pObject ALIAS FOR $2; pSchema ALIAS FOR $3; pRelation ALIAS FOR $4; _table TEXT; _query TEXT; BEGIN IF (UPPER(pType) = 'CONSTRAINT') THEN SELECT relname INTO _table FROM pg_constraint, pg_class, pg_namespace WHERE ((conrelid=pg_class.oid) AND (connamespace=pg_namespace.oid) AND (conname=pObject) AND (relname=pRelation) AND (nspname=pSchema)); IF (NOT FOUND) THEN RETURN 0; END IF; _query = 'ALTER TABLE ' || quote_ident(LOWER(pSchema)) || '.' || quote_ident(LOWER(pRelation)) || ' DROP CONSTRAINT ' || quote_ident(LOWER(pObject)); BEGIN EXECUTE _query; EXCEPTION WHEN undefined_table OR invalid_schema_name THEN RETURN 0; WHEN OTHERS THEN RAISE EXCEPTION '% %', SQLSTATE, SQLERRM; END; ELSE RAISE EXCEPTION 'dropIfExists(%, %, %, %): pType % is not supported when relation is specified', pType, pObject, pSchema, pRelation, pType; END IF; RETURN 1; END; $_$; ALTER FUNCTION public.dropifexists(text, text, text, text) OWNER TO admin; -- -- Name: dropstdopntable(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION dropstdopntable() RETURNS boolean LANGUAGE plpgsql AS $$ BEGIN IF((SELECT metric_value != 'Manufacturing' FROM metric WHERE metric_name = 'Application')) THEN PERFORM dropIfExists('TABLE', 'stdopn'); RETURN true; END IF; RETURN false; END; $$; ALTER FUNCTION public.dropstdopntable() OWNER TO admin; -- -- Name: editccnumber(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION editccnumber(text, text) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCcardnum ALIAS FOR $1; pCcardtype ALIAS FOR $2; card_length INTEGER; card_valid boolean := false; starting_digits TEXT; _sum INTEGER := 0; _digit INTEGER := 0; _timesTwo BOOLEAN := false; BEGIN -- Check the card type IF (pCcardtype NOT IN ('M', 'V', 'A', 'D')) THEN -- Unknown Card Type RETURN -1; END IF; card_length := length(pCcardnum); -- Process Master Card Checking length -- Process Master Card Starting digits IF (pCcardtype = 'M') THEN IF (card_length != 16) THEN -- Bad Card Length Card Type RETURN -2; END IF; starting_digits := substr(pCcardnum, 1, 2); IF (starting_digits < '51' OR starting_digits > '55') THEN -- Bad Starting digits RETURN -6; END IF; END IF; -- Process Visa Card Checking length -- Process Visa Card Starting digits IF (pCcardtype = 'V') THEN IF (card_length != 13 AND card_length != 16) THEN -- Bad Card Length Card Type RETURN -3; END IF; starting_digits := substr(pCcardnum, 1, 1); IF (starting_digits != '4') THEN -- Bad Starting digits RETURN -7; END IF; END IF; -- Process American Express Card Checking length -- Process American Express Card Starting digits IF (pCcardtype = 'A') THEN IF (card_length != 15) THEN -- Bad Card Length Card Type RETURN -4; END IF; starting_digits := substr(pCcardnum, 1, 2); IF (starting_digits != '34' AND starting_digits != '37') THEN -- Bad Starting digits RETURN -8; END IF; END IF; -- Process Discover Card Checking length -- Process Discover Card Starting digits IF (pCcardtype = 'D') THEN IF (card_length != 16) THEN -- Bad Card Length Card Type RETURN -5; END IF; starting_digits := substr(pCcardnum, 1, 4); IF (starting_digits != '6011') THEN -- Bad Starting digits RETURN -9; END IF; END IF; -- Now comes the fun part of doing the "check" for the check sum -- perform a luhn checksum FOR i IN REVERSE card_length .. 1 LOOP _digit := int4(substr(pCcardnum, i, 1)); IF (_timesTwo) THEN _digit := _digit * 2; IF (_digit > 9) THEN _digit := _digit - 9; END IF; END IF; _sum := _sum + _digit; _timesTwo := NOT _timesTwo; END LOOP; IF (mod(_sum, 10) != 0) THEN RETURN -10; END IF; RETURN 0; -- No Error END; $_$; ALTER FUNCTION public.editccnumber(text, text) OWNER TO admin; -- -- Name: enablepackage(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION enablepackage(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ppkgname ALIAS FOR $1; _i INTEGER := 0; _tabs TEXT[] := ARRAY['cmd', 'cmdarg', 'image', 'metasql', 'priv', 'report', 'script', 'uiform']; BEGIN IF (version() < 'PostgreSQL 8.2') THEN RETURN -1; END IF; FOR _i IN ARRAY_LOWER(_tabs,1)..ARRAY_UPPER(_tabs,1) LOOP EXECUTE 'ALTER TABLE ' || ppkgname || '.pkg' || _tabs[_i] || ' INHERIT public.' || _tabs[_i] || ';'; END LOOP; RETURN 0; END; $_$; ALTER FUNCTION public.enablepackage(text) OWNER TO admin; -- -- Name: enablepackage(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION enablepackage(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ppkgheadid ALIAS FOR $1; _pkgname TEXT; BEGIN SELECT pkghead_name INTO _pkgname FROM pkghead WHERE (pkghead_id=ppkgheadid); IF (NOT FOUND) THEN RETURN -2; END IF; RETURN enablePackage(_pkgname); END; $_$; ALTER FUNCTION public.enablepackage(integer) OWNER TO admin; -- -- Name: encrypt(bytea, bytea, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION encrypt(bytea, bytea, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_encrypt'; ALTER FUNCTION public.encrypt(bytea, bytea, text) OWNER TO admin; -- -- Name: encrypt_iv(bytea, bytea, bytea, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION encrypt_iv(bytea, bytea, bytea, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_encrypt_iv'; ALTER FUNCTION public.encrypt_iv(bytea, bytea, bytea, text) OWNER TO admin; -- -- Name: endoftime(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION endoftime() RETURNS date LANGUAGE sql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT DATE('2100-01-01') as result; $$; ALTER FUNCTION public.endoftime() OWNER TO admin; -- -- Name: entercount(integer, numeric, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION entercount(integer, numeric, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcntid ALIAS FOR $1; pQty ALIAS FOR $2; pComments ALIAS FOR $3; BEGIN UPDATE invcnt SET invcnt_qoh_after = pQty, invcnt_comments = CASE WHEN ( (LENGTH(invcnt_comments) = 0) AND (LENGTH(pComments) > 0) ) THEN pComments WHEN (LENGTH(pComments) > 0) THEN (invcnt_comments || E'\n' || pComments) ELSE invcnt_comments END, invcnt_cntdate = CURRENT_TIMESTAMP, invcnt_cnt_username = getEffectiveXtUser() WHERE (invcnt_id=pInvcntid); RETURN 0; END; $_$; ALTER FUNCTION public.entercount(integer, numeric, text) OWNER TO admin; -- -- Name: enterporeceipt(integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION enterporeceipt(integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN enterReceipt('PO', $1, $2, 0.0, '', NULL, NULL); END; $_$; ALTER FUNCTION public.enterporeceipt(integer, numeric) OWNER TO admin; -- -- Name: enterporeceipt(integer, numeric, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION enterporeceipt(integer, numeric, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN enterPoReceipt('PO', $1, $2, 0.0, $3, NULL, NULL); END; $_$; ALTER FUNCTION public.enterporeceipt(integer, numeric, text) OWNER TO admin; -- -- Name: enterporeceipt(integer, numeric, numeric, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION enterporeceipt(integer, numeric, numeric, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN enterPoReceipt('PO', $1, $2, $3, $4, NULL, NULL); END; $_$; ALTER FUNCTION public.enterporeceipt(integer, numeric, numeric, text) OWNER TO admin; -- -- Name: enterporeceipt(integer, numeric, numeric, text, integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION enterporeceipt(integer, numeric, numeric, text, integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN enterReceipt('PO', $1, $2, $3, $4, $5, $6); END; $_$; ALTER FUNCTION public.enterporeceipt(integer, numeric, numeric, text, integer, date) OWNER TO admin; -- -- Name: enterporeturn(integer, numeric, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION enterporeturn(integer, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN enterPoReturn($1, $2, $3, NULL); END; $_$; ALTER FUNCTION public.enterporeturn(integer, numeric, integer) OWNER TO admin; -- -- Name: enterporeturn(integer, numeric, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION enterporeturn(integer, numeric, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPoitemid ALIAS FOR $1; pQty ALIAS FOR $2; pRjctcodeid ALIAS FOR $3; pRecvid ALIAS FOR $4; _porejectid INTEGER; BEGIN SELECT NEXTVAL('poreject_poreject_id_seq') INTO _porejectid; INSERT INTO poreject ( poreject_id, poreject_date, poreject_ponumber, poreject_poitem_id, poreject_trans_username, poreject_agent_username, poreject_itemsite_id, poreject_vend_id, poreject_vend_item_number, poreject_vend_item_descrip, poreject_vend_uom, poreject_qty, poreject_rjctcode_id, poreject_posted, poreject_invoiced, poreject_recv_id ) SELECT _porejectid, CURRENT_TIMESTAMP, pohead_number, poitem_id, getEffectiveXtUser(), pohead_agent_username, poitem_itemsite_id, pohead_vend_id, poitem_vend_item_number, poitem_vend_item_descrip, poitem_vend_uom, pQty, pRjctcodeid, FALSE, FALSE, pRecvid FROM poitem JOIN pohead ON (pohead_id=poitem_pohead_id) WHERE (poitem_id=pPoitemid); RETURN _porejectid; END; $_$; ALTER FUNCTION public.enterporeturn(integer, numeric, integer, integer) OWNER TO admin; -- -- Name: enterreceipt(text, integer, numeric, numeric, text, integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION enterreceipt(text, integer, numeric, numeric, text, integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN enterReceipt($1, $2, $3, $4, $5, $6, $7, NULL); END; $_$; ALTER FUNCTION public.enterreceipt(text, integer, numeric, numeric, text, integer, date) OWNER TO admin; -- -- Name: enterreceipt(text, integer, numeric, numeric, text, integer, date, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION enterreceipt(text, integer, numeric, numeric, text, integer, date, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; porderitemid ALIAS FOR $2; pQty ALIAS FOR $3; pFreight ALIAS FOR $4; pNotes ALIAS FOR $5; pcurrid ALIAS FOR $6; -- NULL is handled by SELECT ... INTO _o precvdate ALIAS FOR $7; -- NULL is handled by INSERT INTO recv pRecvCost ALIAS FOR $8; _timestamp TIMESTAMP; _o RECORD; _recvid INTEGER; _warehouseid INTEGER; _recvcost NUMERIC; BEGIN IF(precvdate IS NULL OR precvdate = CURRENT_DATE) THEN _timestamp := CURRENT_TIMESTAMP; ELSE _timestamp := precvdate; END IF; SELECT NEXTVAL('recv_recv_id_seq') INTO _recvid; DELETE FROM recv WHERE ((NOT recv_posted) AND (recv_order_type=pordertype) AND (recv_orderitem_id=porderitemid) ); IF (pQty > 0) THEN IF (pordertype='PO') THEN SELECT pohead_number AS orderhead_number, poitem_id AS orderitem_id, pohead_agent_username AS orderhead_agent_username, CASE WHEN (poitem_itemsite_id = -1) THEN NULL ELSE poitem_itemsite_id END AS itemsite_id, vend_id, COALESCE(poitem_vend_item_number, '') AS vend_item_number, COALESCE(poitem_vend_item_descrip, '') AS vend_item_descrip, COALESCE(poitem_vend_uom, '') AS vend_uom, poitem_duedate AS duedate, poitem_unitprice AS orderitem_unitcost, pohead_curr_id AS orderitem_unitcost_curr_id, pohead_curr_id AS freight_curr_id, poitem_rlsd_duedate AS rlsd_duedate INTO _o FROM pohead JOIN poitem ON (pohead_id=poitem_pohead_id) JOIN vendinfo ON (pohead_vend_id=vend_id) WHERE (poitem_id=porderitemid); ELSIF (pordertype='RA') THEN SELECT rahead_number AS orderhead_number, raitem_id AS orderitem_id, ''::text AS orderhead_agent_username, raitem_itemsite_id AS itemsite_id, NULL::integer AS vend_id, ''::text AS vend_item_number, ''::text AS vend_item_descrip, ''::text AS vend_uom, raitem_scheddate AS duedate, raitem_unitprice AS orderitem_unitcost, rahead_curr_id AS orderitem_unitcost_curr_id, rahead_curr_id AS freight_curr_id, raitem_scheddate AS rlsd_duedate INTO _o FROM rahead JOIN raitem ON (rahead_id=raitem_rahead_id) WHERE (raitem_id=porderitemid); ELSIF (pordertype='TO') THEN SELECT tohead_number AS orderhead_number, toitem_id AS orderitem_id, tohead_agent_username AS orderhead_agent_username, itemsite_id, NULL::integer AS vend_id, ''::text AS vend_item_number, ''::text AS vend_item_descrip, ''::text AS vend_uom, toitem_duedate AS duedate, toitem_stdcost AS orderitem_unitcost, baseCurrId() AS orderitem_unitcost_curr_id, toitem_freight_curr_id AS freight_curr_id, toitem_duedate AS rlsd_duedate INTO _o FROM itemsite, tohead JOIN toitem ON (tohead_id=toitem_tohead_id) WHERE ((toitem_id=porderitemid) AND (tohead_dest_warehous_id=itemsite_warehous_id) AND (toitem_item_id=itemsite_item_id)); END IF; --Make sure user has site privileges IF ((FOUND) AND (_o.itemsite_id IS NOT NULL)) THEN SELECT warehous_id INTO _warehouseid FROM itemsite,site() WHERE ((itemsite_id=_o.itemsite_id) AND (warehous_id=itemsite_warehous_id)); IF (NOT FOUND) THEN RETURN 0; END IF; END IF; --Make sure we aren't trying to receive a Kit IF ((FOUND) AND (_o.itemsite_id IS NOT NULL)) THEN IF (SELECT (item_type='K') FROM itemsite, item WHERE ((itemsite_id=_o.itemsite_id) AND (item_id=itemsite_item_id))) THEN RETURN 0; END IF; END IF; IF (NOT FOUND) THEN RETURN -1; END IF; -- default to orderitem_unitcost if recv_purchcost is not specified IF(pRecvCost IS NULL) THEN _recvcost := _o.orderitem_unitcost; ELSE _recvcost := pRecvCost; END IF; INSERT INTO recv ( recv_id, recv_date, recv_order_number, recv_order_type, recv_orderitem_id, recv_trans_usr_name, recv_agent_username, recv_itemsite_id, recv_vend_id, recv_vend_item_number, recv_vend_item_descrip, recv_vend_uom, recv_qty, recv_duedate, recv_purchcost, recv_purchcost_curr_id, recv_notes, recv_freight, recv_freight_curr_id, recv_rlsd_duedate ) VALUES ( _recvid, _timestamp, _o.orderhead_number, pordertype, _o.orderitem_id::INTEGER, getEffectiveXtUser(), _o.orderhead_agent_username, _o.itemsite_id::INTEGER, _o.vend_id::INTEGER, _o.vend_item_number, _o.vend_item_descrip, _o.vend_uom, pQty, _o.duedate, _recvcost, _o.orderitem_unitcost_curr_id::INTEGER, pNotes, pFreight, _o.freight_curr_id::INTEGER, _o.rlsd_duedate); END IF; RETURN _recvid; END; $_$; ALTER FUNCTION public.enterreceipt(text, integer, numeric, numeric, text, integer, date, numeric) OWNER TO admin; -- -- Name: expirecreditcard(integer, bytea); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION expirecreditcard(integer, bytea) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCust ALIAS FOR $1; pKey ALIAS FOR $2; num_updated INTEGER; cc_year INTEGER; cc_month INTEGER; cc_year_t TEXT; cc_month_t TEXT; _dr RECORD; _cc RECORD; bf TEXT; BEGIN num_updated := 0; bf := 'bf'; select cast(date_part('year', CURRENT_DATE) AS INTEGER) AS check_year, cast(date_part('month', CURRENT_DATE) AS INTEGER) AS check_month INTO _dr; FOR _cc IN SELECT ccard_id, decrypt(setbytea(ccard_month_expired), setbytea(pKey), 'bf') AS ccard_month_expired, decrypt(setbytea(ccard_year_expired), setbytea(pKey), 'bf') AS ccard_year_expired FROM ccard WHERE ( (ccard_cust_id=pCust) AND (ccard_active) ) LOOP SELECT formatbytea(_cc.ccard_month_expired) INTO cc_month_t; SELECT formatbytea(_cc.ccard_year_expired) INTO cc_year_t; SELECT cast(cc_month_t AS INTEGER) INTO cc_month; SELECT cast(cc_year_t AS INTEGER) INTO cc_year; IF (cc_year < _dr.check_year) THEN -- We have an expired card UPDATE ccard set ccard_active = FALSE where ccard_id = _cc.ccard_id; num_updated := num_updated + 1; ELSIF (cc_year = _dr.check_year AND cc_month < _dr.check_month) THEN -- We have an expired card UPDATE ccard set ccard_active = FALSE where ccard_id = _cc.ccard_id; num_updated := num_updated + 1; END IF; END LOOP; RETURN num_updated; END; $_$; ALTER FUNCTION public.expirecreditcard(integer, bytea) OWNER TO admin; -- -- Name: explodebom(integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION explodebom(integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pParentid ALIAS FOR $2; pLevel ALIAS FOR $3; _revid INTEGER; BEGIN SELECT getActiveRevId('BOM',pItemid) INTO _revid; RETURN explodeBOM(pItemid, _revid, pParentid, pLevel); END; $_$; ALTER FUNCTION public.explodebom(integer, integer, integer) OWNER TO admin; -- -- Name: explodebom(integer, integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION explodebom(integer, integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pRevisionid ALIAS FOR $2; pParentid ALIAS FOR $3; pLevel ALIAS FOR $4; _bomworkid INTEGER; _level INTEGER; _p RECORD; _r RECORD; _temp TEXT; BEGIN _level := (pLevel + 1); -- Cache some parameters about the parent SELECT bomwork_item_id, bomwork_set_id, bomwork_qtyreq, bomwork_seqnumber, bomwork_effective, bomwork_expires INTO _p FROM bomwork WHERE (bomwork_id=pParentid); -- Step through all of the components of the parent component FOR _r IN SELECT bomitem.*, item_id, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyfxd) AS qtyfxd, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper) AS qtyper, CASE WHEN (_p.bomwork_effective > bomitem_effective) THEN _p.bomwork_effective ELSE bomitem_effective END AS effective, CASE WHEN (_p.bomwork_expires < bomitem_expires) THEN _p.bomwork_expires ELSE bomitem_expires END AS expires, stdcost(item_id, bomitem_id) AS standardcost, actcost(item_id, bomitem_id) AS actualcost FROM bomitem(pItemid, pRevisionid), item WHERE ( (bomitem_item_id=item_id) AND (bomitem_expires > _p.bomwork_effective) ) LOOP -- Insert the current component and some bomitem parameters into the bomwork set SELECT NEXTVAL('bomwork_bomwork_id_seq') INTO _bomworkid; INSERT INTO bomwork ( bomwork_id, bomwork_set_id, bomwork_parent_id, bomwork_level, bomwork_parent_seqnumber, bomwork_seqnumber, bomwork_item_id, bomwork_createwo, bomwork_qtyreq, bomwork_qtyfxd, bomwork_qtyper, bomwork_scrap, bomwork_issuemethod, bomwork_effective, bomwork_expires, bomwork_stdunitcost, bomwork_actunitcost, bomwork_notes, bomwork_ref, bomwork_bomitem_id, bomwork_ecn ) VALUES ( _bomworkid, _p.bomwork_set_id, pParentid, _level, _p.bomwork_seqnumber, _r.bomitem_seqnumber, _r.item_id, _r.bomitem_createwo, (_p.bomwork_qtyreq * _r.qtyper + _r.qtyfxd), _r.qtyfxd, _r.qtyper, _r.bomitem_scrap, _r.bomitem_issuemethod, _r.effective, _r.expires, _r.standardcost, _r.actualcost, _r.bomitem_notes, _r.bomitem_ref, _r.bomitem_id, _r.bomitem_ecn ); -- Recursively repeat for this component's components PERFORM explodeBOM(_r.item_id, _bomworkid, _level); END LOOP; RETURN 1; END; $_$; ALTER FUNCTION public.explodebom(integer, integer, integer, integer) OWNER TO admin; -- -- Name: explodekit(integer, integer, integer, integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION explodekit(integer, integer, integer, integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; pLinenumber ALIAS FOR $2; pSubnumber ALIAS FOR $3; pItemsiteid ALIAS FOR $4; pQty ALIAS FOR $5; BEGIN RETURN explodeKit(pSoheadid, pLinenumber, pSubnumber, pItemsiteid, pQty, CURRENT_DATE, NULL); END; $_$; ALTER FUNCTION public.explodekit(integer, integer, integer, integer, numeric) OWNER TO admin; -- -- Name: explodekit(integer, integer, integer, integer, numeric, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION explodekit(integer, integer, integer, integer, numeric, date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; pLinenumber ALIAS FOR $2; pSubnumber ALIAS FOR $3; pItemsiteid ALIAS FOR $4; pQty ALIAS FOR $5; pScheddate ALIAS FOR $6; pPromdate ALIAS FOR $7; BEGIN RETURN explodeKit(pSoheadid, pLinenumber, pSubnumber, pItemsiteid, pQty, CURRENT_DATE, NULL, ''); END; $_$; ALTER FUNCTION public.explodekit(integer, integer, integer, integer, numeric, date, date) OWNER TO admin; -- -- Name: explodekit(integer, integer, integer, integer, numeric, date, date, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION explodekit(integer, integer, integer, integer, numeric, date, date, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; pLinenumber ALIAS FOR $2; pSubnumber ALIAS FOR $3; pItemsiteid ALIAS FOR $4; pQty ALIAS FOR $5; pScheddate ALIAS FOR $6; pPromdate ALIAS FOR $7; pMemo ALIAS FOR $8; _subnumber INTEGER := COALESCE(pSubnumber,0); _revid INTEGER; _itemid INTEGER; _warehousid INTEGER; _item RECORD; _type TEXT; _coitemid INTEGER; _count INTEGER; _orderid INTEGER := 0; _itemsrcid INTEGER; BEGIN SELECT getActiveRevId('BOM',itemsite_item_id), itemsite_warehous_id, itemsite_item_id INTO _revid, _warehousid, _itemid FROM itemsite WHERE(itemsite_id=pItemsiteid); IF(NOT FOUND) THEN RAISE EXCEPTION 'No Item Site for the specified line was found.'; END IF; FOR _item IN SELECT bomitem_id, itemsite_id, itemsite_warehous_id, COALESCE((itemsite_active AND item_active), false) AS active, COALESCE((itemsite_sold AND item_sold), false) AS sold, item_id, item_type, item_price_uom_id, itemsite_createsopr,itemsite_createwo,itemsite_createsopo, itemsite_dropship, bomitem_uom_id, itemuomtouomratio(item_id, bomitem_uom_id, item_inv_uom_id) AS invuomratio, roundQty(itemuomfractionalbyuom(bomitem_item_id, bomitem_uom_id),(bomitem_qtyfxd + bomitem_qtyper * pQty) * (1 + bomitem_scrap)) AS qty FROM bomitem JOIN item ON (item_id=bomitem_item_id) LEFT OUTER JOIN itemsite ON ((itemsite_item_id=item_id) AND (itemsite_warehous_id=_warehousid)) WHERE((bomitem_parent_item_id=_itemid) AND (bomitem_rev_id=_revid) AND (CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires - 1))) ORDER BY bomitem_seqnumber LOOP IF (NOT _item.active) THEN RAISE EXCEPTION 'One or more of the components for the kit is inactive for the selected item site.'; ELSIF (NOT _item.sold) THEN RAISE EXCEPTION 'One or more of the components for the kit is not sold for the selected item site.'; ELSIF (_item.item_type='F') THEN SELECT explodeKit(pSoheadid, pLinenumber, _subnumber, _item.itemsite_id, _item.qty) INTO _subnumber; ELSE IF (_item.itemsite_createsopr) THEN _type := 'R'; ELSIF (_item.itemsite_createsopo) THEN _type := 'P'; ELSIF (_item.itemsite_createwo) THEN _type := 'W'; ELSE _type := NULL; END IF; _subnumber := _subnumber + 1; _coitemid = nextval('coitem_coitem_id_seq'); raise notice 'coitem id: %',_coitemid; INSERT INTO coitem (coitem_id, coitem_cohead_id, coitem_linenumber, coitem_subnumber, coitem_itemsite_id, coitem_status, coitem_scheddate, coitem_promdate, coitem_qtyord, coitem_qty_uom_id, coitem_qty_invuomratio, coitem_qtyshipped, coitem_qtyreturned, coitem_unitcost, coitem_custprice, coitem_price, coitem_price_uom_id, coitem_price_invuomratio, coitem_order_type, coitem_order_id, coitem_custpn, coitem_memo, coitem_prcost) VALUES (_coitemid, pSoheadid, pLinenumber, _subnumber, _item.itemsite_id, 'O', pScheddate, pPromdate, _item.qty, _item.bomitem_uom_id, _item.invuomratio, 0, 0, stdCost(_item.item_id), 0, 0, _item.item_price_uom_id, 1, _type, -1, '', pMemo, 0); IF (_item.itemsite_createsopr) THEN SELECT createPR(cohead_number::INTEGER, 'S', _coitemid) INTO _orderid FROM cohead WHERE (cohead_id=pSoheadid); IF (_orderid > 0) THEN UPDATE coitem SET coitem_order_id=_orderid WHERE (coitem_id=_coitemid); ELSE RAISE EXCEPTION 'Could not explode kit. CreatePR failed, result=%', _orderid; END IF; END IF; IF (_item.itemsite_createsopo) THEN SELECT itemsrc_id INTO _itemsrcid FROM itemsrc WHERE ((itemsrc_item_id=_item.item_id) AND (itemsrc_default)); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count > 0) THEN PERFORM createPurchaseToSale(_coitemid, _itemsrcid, _item.itemsite_dropship); ELSE RAISE WARNING 'One or more Kit items are flagged as purchase-to-order for this site, but no default item source is defined.'; END IF; END IF; END IF; END LOOP; RETURN _subnumber; END; $_$; ALTER FUNCTION public.explodekit(integer, integer, integer, integer, numeric, date, date, text) OWNER TO admin; -- -- Name: explodephantomorder(integer, integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION explodephantomorder(integer, integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPlanordid ALIAS FOR $1; pPhantomid ALIAS FOR $2; pQty ALIAS FOR $3; _b RECORD; BEGIN FOR _b IN SELECT planord_number, c.itemsite_id AS componentsiteid, calculatenextworkingdate(c.itemsite_warehous_id, planord_startdate, (c.itemsite_leadtime * -1)) AS startdate, planord_startdate AS duedate, bomitem_createwo, c.itemsite_planning_type AS planningtype, (itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, (bomitem_qtyfxd + pQty * bomitem_qtyper) * (1 + bomitem_scrap))) AS qtyreq, item_type FROM bomitem, planord, itemsite AS p, itemsite AS c, item WHERE ((bomitem_parent_item_id=p.itemsite_item_id) AND (bomitem_rev_id=getActiveRevId('BOM',bomitem_parent_item_id)) AND (bomitem_item_id=c.itemsite_item_id) AND (p.itemsite_warehous_id=c.itemsite_warehous_id) AND (c.itemsite_item_id=item_id) AND (woEffectiveDate(planord_startdate) BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (p.itemsite_id=pPhantomid) AND (planord_id=pPlanordid)) LOOP IF (_b.item_type = 'F') THEN PERFORM explodePhantomOrder(pPlanordid, _b.componentsiteid, _b.qtyreq); ELSE -- Create the Planned Requirement INSERT INTO planreq ( planreq_source, planreq_source_id, planreq_itemsite_id, planreq_qty ) VALUES ( 'P', pPlanordid, _b.componentsiteid, _b.qtyreq ); IF (_b.bomitem_createwo AND _b.planningtype != 'N') THEN PERFORM createPlannedOrder( pPlanordid, _b.planord_number, _b.componentsiteid, _b.qtyreq, _b.startdate, _b.duedate, FALSE, FALSE, NULL, NULL); END IF; END IF; END LOOP; RETURN pPlanordid; END; $_$; ALTER FUNCTION public.explodephantomorder(integer, integer, numeric) OWNER TO admin; -- -- Name: explodewo(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION explodewo(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pExplodeChildren ALIAS FOR $2; resultCode INTEGER; newWo RECORD; _newwoid INTEGER; _p RECORD; _r RECORD; _bbom BOOLEAN; BEGIN -- Find out if Breeder BOMs are enabled SELECT metric_value='t' INTO _bbom FROM metric WHERE (metric_name='BBOM'); -- Make sure that this W/O is Open SELECT wo_id INTO resultCode FROM wo WHERE ((wo_status='O') AND (wo_id=pWoid)); IF (NOT FOUND) THEN RETURN -4; END IF; -- Make sure that all Component Item Sites exist and are valid -- Item Sites must be active and not Job Costed SELECT bomitem_id INTO resultCode FROM wo, bomitem, itemsite WHERE ( (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=bomitem_parent_item_id) AND (woEffectiveDate(wo_startdate) BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (wo_id=pWoid) AND (bomitem_rev_id=wo_bom_rev_id) AND (bomitem_item_id NOT IN ( SELECT component.itemsite_item_id FROM itemsite AS component, itemsite AS parent WHERE ( (wo_itemsite_id=parent.itemsite_id) AND (parent.itemsite_item_id=bomitem_parent_item_id) AND (bomitem_item_id=component.itemsite_item_id) AND (woEffectiveDate(wo_startdate) BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (component.itemsite_active) AND (component.itemsite_warehous_id=parent.itemsite_warehous_id) ) ) ) ) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; -- If the Parent Item is a Breeder, make sure that all the -- Co-Product/By-Product Item Sites exist IF (_bbom) THEN IF ( ( SELECT (item_type='B') FROM wo, itemsite, item WHERE ( (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (wo_id=pWoid) ) ) ) THEN SELECT bbomitem_id INTO resultCode FROM wo, xtmfg.bbomitem, itemsite WHERE ( (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=bbomitem_parent_item_id) AND (woEffectiveDate(wo_startdate) BETWEEN bbomitem_effective AND (bbomitem_expires - 1)) AND (wo_id=pWoid) AND (bbomitem_item_id NOT IN ( SELECT component.itemsite_item_id FROM itemsite AS component, itemsite AS parent WHERE ( (wo_itemsite_id=parent.itemsite_id) AND (parent.itemsite_item_id=bbomitem_parent_item_id) AND (bbomitem_item_id=component.itemsite_item_id) AND (woEffectiveDate(wo_startdate) BETWEEN bbomitem_effective AND (bbomitem_expires - 1)) AND (component.itemsite_active) AND (component.itemsite_warehous_id=parent.itemsite_warehous_id) ) ) ) ) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; END IF; END IF; -- Create the W/O Material Requirements INSERT INTO womatl ( womatl_wo_id, womatl_bomitem_id, womatl_wooper_id, womatl_schedatwooper, womatl_itemsite_id, womatl_duedate, womatl_uom_id, womatl_qtyfxd, womatl_qtyper, womatl_scrap, womatl_qtyreq, womatl_qtyiss, womatl_qtywipscrap, womatl_lastissue, womatl_lastreturn, womatl_cost, womatl_picklist, womatl_createwo, womatl_issuewo, womatl_issuemethod, womatl_notes, womatl_ref ) SELECT wo_id, bomitem_id, bomitem_booitem_seq_id, bomitem_schedatwooper, cs.itemsite_id, CASE WHEN bomitem_schedatwooper THEN COALESCE(calcWooperStartStub(wo_id,bomitem_booitem_seq_id), wo_startdate) ELSE wo_startdate END, bomitem_uom_id, bomitem_qtyfxd, bomitem_qtyper, bomitem_scrap, roundQty(itemuomfractionalbyuom(bomitem_item_id, bomitem_uom_id), (bomitem_qtyfxd + bomitem_qtyper * wo_qtyord) * (1 + bomitem_scrap)), 0, 0, startOfTime(), startOfTime(), 0, item_picklist, ( (item_type='M') AND (bomitem_createwo) ), CASE WHEN ( (item_type='M') AND (bomitem_issuewo) ) THEN TRUE WHEN (cs.itemsite_costmethod='J') THEN TRUE ELSE FALSE END, bomitem_issuemethod, bomitem_notes, bomitem_ref FROM bomitem, wo, itemsite AS ps, itemsite AS cs, item WHERE ( (wo_itemsite_id=ps.itemsite_id) AND (bomitem_parent_item_id=ps.itemsite_item_id) AND (bomitem_item_id=cs.itemsite_item_id) AND (bomitem_rev_id=wo_bom_rev_id) AND (ps.itemsite_warehous_id=cs.itemsite_warehous_id) AND (cs.itemsite_item_id=item_id) AND (woEffectiveDate(wo_startdate) BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (wo_id=pWoid) AND ((bomitem_char_id IS NULL) OR EXISTS ( SELECT charass_id FROM coitem,charass WHERE ((charass_target_type='SI') AND (charass_target_id=coitem_id) AND (charass_char_id=bomitem_char_id) AND (charass_value=bomitem_value) AND (wo_ordtype='S') AND (coitem_id=wo_ordid)))) ); -- Update any created P/R's the have the project id as the parent WO. UPDATE pr SET pr_prj_id=wo_prj_id FROM womatl, wo WHERE ((wo_id=pWoid) AND (womatl_wo_id=wo_id) AND (pr_order_type='W') AND (pr_order_id=womatl_id)); -- If the parent Item is a Breeder, create the brddist -- records for the Co-Products and By-Products IF (_bbom) THEN INSERT INTO xtmfg.brddist ( brddist_wo_id, brddist_wo_qty, brddist_itemsite_id, brddist_stdqtyper, brddist_qty, brddist_posted ) SELECT wo_id, 0, cs.itemsite_id, bbomitem_qtyper, 0, FALSE FROM wo, xtmfg.bbomitem, itemsite AS ps, itemsite AS cs, item WHERE ( (bbomitem_parent_item_id=ps.itemsite_item_id) AND (wo_itemsite_id=ps.itemsite_id) AND (ps.itemsite_item_id=item_id) AND (item_type='B') AND (bbomitem_item_id=cs.itemsite_item_id) AND (cs.itemsite_warehous_id=ps.itemsite_warehous_id) AND (wo_id=pWoid) ); END IF; -- Insert the W/O Operations if routings enabled IF ( ( SELECT (metric_value='t') FROM metric WHERE (metric_name='Routings') ) ) THEN INSERT INTO xtmfg.wooper ( wooper_wo_id, wooper_booitem_id, wooper_seqnumber, wooper_wrkcnt_id, wooper_stdopn_id, wooper_descrip1, wooper_descrip2, wooper_toolref, wooper_sutime, wooper_sucosttype, wooper_surpt, wooper_rntime, wooper_rncosttype, wooper_rnrpt, wooper_rnqtyper, wooper_produom, wooper_invproduomratio, wooper_issuecomp, wooper_rcvinv, wooper_suconsumed, wooper_sucomplete, wooper_rnconsumed, wooper_rncomplete, wooper_qtyrcv, wooper_instruc, wooper_scheduled, wooper_wip_location_id ) SELECT wo_id, booitem_id, booitem_seqnumber, booitem_wrkcnt_id, booitem_stdopn_id, booitem_descrip1, booitem_descrip2, booitem_toolref, CASE WHEN (booitem_surpt) THEN booitem_sutime ELSE 0 END, booitem_sucosttype, booitem_surpt, CASE WHEN ((booitem_rnqtyper = 0) OR (booitem_invproduomratio = 0)) THEN 0 WHEN (NOT booitem_rnrpt) THEN 0 ELSE ( ( booitem_rntime / booitem_rnqtyper / booitem_invproduomratio ) * wo_qtyord ) END, booitem_rncosttype, booitem_rnrpt, CASE WHEN (booitem_rnqtyper = 0) THEN 0 WHEN (NOT booitem_rnrpt) THEN 0 ELSE (booitem_rntime / booitem_rnqtyper) END, booitem_produom, booitem_invproduomratio, booitem_issuecomp, booitem_rcvinv, 0::NUMERIC, FALSE, 0::NUMERIC, FALSE, 0::NUMERIC, booitem_instruc, calculatenextworkingdate(itemsite_warehous_id,wo_startdate,booitem_execday-1), booitem_wip_location_id FROM xtmfg.booitem, wo, itemsite WHERE ((wo_itemsite_id=itemsite_id) AND (itemsite_item_id=booitem_item_id) AND (booitem_rev_id=wo_boo_rev_id) AND (woEffectiveDate(wo_startdate) BETWEEN booitem_effective AND (booitem_expires - 1)) AND (wo_id=pWoid)); -- Update womatls item to link to wooper items when the respective -- bomitem record indicates a booitem issue link. UPDATE womatl SET womatl_wooper_id=wooper_id FROM wo,xtmfg.wooper,xtmfg.booitem WHERE ((womatl_wooper_id=booitem_seq_id) AND (wooper_booitem_id=booitem_id) AND (womatl_wo_id=wo_id) AND (wooper_wo_id=wo_id) AND (wo_boo_rev_id=booitem_rev_id) AND (wo_id=pWoid)); END IF; -- Handle all of the Phantom material requirements WHILE ( ( SELECT COUNT(*) FROM womatl, itemsite, item WHERE ( (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (womatl_wo_id=pWoid) AND (item_type='F') ) ) > 0 ) LOOP FOR _p IN SELECT wo_qtyord, wo_startdate, womatl_id, womatl_wooper_id FROM wo, womatl, itemsite, item WHERE ( (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_type='F') AND (womatl_wo_id=wo_id) AND (wo_id=pWoid) ) LOOP INSERT INTO womatl ( womatl_wo_id, womatl_itemsite_id, womatl_wooper_id, womatl_schedatwooper, womatl_duedate, womatl_uom_id, womatl_qtyfxd, womatl_qtyper, womatl_scrap, womatl_qtyreq, womatl_qtyiss, womatl_qtywipscrap, womatl_lastissue, womatl_lastreturn, womatl_cost, womatl_picklist, womatl_createwo, womatl_issuewo, womatl_issuemethod, womatl_notes, womatl_ref ) SELECT pWoid, cs.itemsite_id, _p.womatl_wooper_id, womatl_schedatwooper, womatl_duedate, bomitem_uom_id, bomitem_qtyfxd, (bomitem_qtyper * womatl_qtyper), bomitem_scrap, roundQty(itemuomfractionalbyuom(bomitem_item_id, bomitem_uom_id), (bomitem_qtyfxd + _p.wo_qtyord * bomitem_qtyper * womatl_qtyper) * (1 + bomitem_scrap)), 0, 0, startOfTime(), startOfTime(), 0, ci.item_picklist, ( (ci.item_type='M') AND (bomitem_createwo) ), ( (ci.item_type='M') AND (bomitem_issuewo) ), bomitem_issuemethod, bomitem_notes, bomitem_ref FROM womatl JOIN wo ON (wo_id=womatl_wo_id) JOIN itemsite ps ON (ps.itemsite_id=womatl_itemsite_id) JOIN item pi ON (pi.item_id=ps.itemsite_item_id) JOIN bomitem ON ( (bomitem_parent_item_id=pi.item_id) AND (woEffectiveDate(_p.wo_startdate) BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (bomitem_rev_id=getActiveRevId('BOM', pi.item_id)) ) JOIN item ci ON (ci.item_id=bomitem.bomitem_item_id) JOIN itemsite cs ON ( (cs.itemsite_item_id=ci.item_id) AND (cs.itemsite_warehous_id=ps.itemsite_warehous_id) ) WHERE (womatl_id=_p.womatl_id); DELETE FROM womatl WHERE (womatl_id=_p.womatl_id); END LOOP; END LOOP; -- Create W/Os for manufactured component items FOR newWo IN SELECT wo_number, nextWoSubnumber(wo_number) AS nextSubnumber, itemsite_id, itemsite_leadtime, womatl_duedate, womatl_wo_id, womatl_qtyreq, womatl_uom_id, wo_prj_id, item_id, item_inv_uom_id, womatl_id FROM womatl, wo, itemsite, item WHERE ( (womatl_wo_id=wo_id) AND (womatl_itemsite_id=itemsite_id) AND (womatl_createwo) AND (itemsite_wosupply) AND (itemsite_item_id=item_id) AND (wo_id=pWoid) ) ORDER BY womatl_id LOOP SELECT createWo( newWo.wo_number, newWo.itemsite_id, 1, itemuomtouom(newWo.item_id,newWo.womatl_uom_id,newWo.item_inv_uom_id,newWo.womatl_qtyreq), newWo.itemsite_leadtime, newWo.womatl_duedate, '', 'W', newWo.womatl_wo_id, newWo.wo_prj_id ) INTO _newwoid; UPDATE wo SET wo_womatl_id = newWo.womatl_id WHERE wo_id=_newwoid; END LOOP; UPDATE wo SET wo_status='E', wo_adhoc=FALSE WHERE (wo_id=pWoid); IF (pExplodeChildren) THEN SELECT MAX(explodeWo(wo_id, TRUE)) INTO resultCode FROM wo WHERE ( (wo_ordtype='W') AND (wo_ordid=pWoid) ); END IF; RETURN pWoid; END; $_$; ALTER FUNCTION public.explodewo(integer, boolean) OWNER TO admin; -- -- Name: explodewoeffective(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION explodewoeffective() RETURNS text LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _value TEXT; BEGIN SELECT metric_value INTO _value FROM metric WHERE (metric_name='ExplodeWOEffective'); RETURN _value; END; $$; ALTER FUNCTION public.explodewoeffective() OWNER TO admin; -- -- Name: fetchapmemonumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchapmemonumber() RETURNS integer LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('APMemoNumber')::INTEGER; $$; ALTER FUNCTION public.fetchapmemonumber() OWNER TO admin; -- -- Name: fetcharmemonumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetcharmemonumber() RETURNS text LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('ARMemoNumber'); $$; ALTER FUNCTION public.fetcharmemonumber() OWNER TO admin; -- -- Name: fetchcashrcptnumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchcashrcptnumber() RETURNS text LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('CashRcptNumber'); $$; ALTER FUNCTION public.fetchcashrcptnumber() OWNER TO admin; -- -- Name: fetchcmnumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchcmnumber() RETURNS text LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('CmNumber'); $$; ALTER FUNCTION public.fetchcmnumber() OWNER TO admin; -- -- Name: fetchcrmaccountnumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchcrmaccountnumber() RETURNS integer LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('CRMAccountNumber')::INTEGER; $$; ALTER FUNCTION public.fetchcrmaccountnumber() OWNER TO admin; -- -- Name: fetchdefaultfob(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchdefaultfob(pwarehousid integer) RETURNS text LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT warehous_fob FROM whsinfo WHERE (warehous_id=$1); $_$; ALTER FUNCTION public.fetchdefaultfob(pwarehousid integer) OWNER TO admin; -- -- Name: fetchdefaultshipvia(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchdefaultshipvia() RETURNS text LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal TEXT; BEGIN SELECT shipvia_code INTO _returnVal FROM shipvia WHERE shipvia_id= (SELECT CAST(metric_value AS integer) FROM metric WHERE metric_name = 'DefaultShipViaId'); RETURN _returnVal; END; $$; ALTER FUNCTION public.fetchdefaultshipvia() OWNER TO admin; -- -- Name: fetchglsequence(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchglsequence() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _sequence INTEGER; BEGIN SELECT NEXTVAL('gltrans_sequence_seq') INTO _sequence; RETURN _sequence; END; $$; ALTER FUNCTION public.fetchglsequence() OWNER TO admin; -- -- Name: fetchincidentnumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchincidentnumber() RETURNS integer LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('IncidentNumber')::integer; $$; ALTER FUNCTION public.fetchincidentnumber() OWNER TO admin; -- -- Name: fetchinvcnumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchinvcnumber() RETURNS integer LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('InvcNumber')::integer; $$; ALTER FUNCTION public.fetchinvcnumber() OWNER TO admin; -- -- Name: fetchitemuomconvtypes(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchitemuomconvtypes(integer) RETURNS text[] LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemUomConvId ALIAS FOR $1; _p RECORD; _result text[]; _cnt INTEGER; BEGIN _cnt := 0; FOR _p IN SELECT uomtype_name FROM itemuomconv, itemuom, uomtype WHERE ((itemuomconv_id=pItemUomConvId) AND (itemuomconv_id=itemuom_itemuomconv_id) AND (itemuom_uomtype_id=uomtype_id)) LOOP _result[_cnt] := _p.uomtype_name; _cnt := _cnt + 1; END LOOP; RETURN _result; END; $_$; ALTER FUNCTION public.fetchitemuomconvtypes(integer) OWNER TO admin; -- -- Name: fetchjournalnumber(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchjournalnumber(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUse ALIAS FOR $1; _number INTEGER; BEGIN SELECT nextval('journal_number_seq') INTO _number; INSERT INTO jrnluse (jrnluse_date, jrnluse_number, jrnluse_use) VALUES (CURRENT_TIMESTAMP, _number, pUse); RETURN _number; END; $_$; ALTER FUNCTION public.fetchjournalnumber(text) OWNER TO admin; -- -- Name: fetchmetricbool(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchmetricbool(text) RETURNS boolean LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _pMetricName ALIAS FOR $1; _returnVal BOOLEAN; BEGIN SELECT CASE WHEN MIN(metric_value) = 't' THEN true ELSE false END INTO _returnVal FROM metric WHERE metric_name = _pMetricName; RETURN _returnVal; END; $_$; ALTER FUNCTION public.fetchmetricbool(text) OWNER TO admin; -- -- Name: fetchmetrictext(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchmetrictext(text) RETURNS text LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _pMetricName ALIAS FOR $1; _returnVal TEXT; BEGIN SELECT metric_value::TEXT INTO _returnVal FROM metric WHERE metric_name = _pMetricName; RETURN _returnVal; END; $_$; ALTER FUNCTION public.fetchmetrictext(text) OWNER TO admin; -- -- Name: fetchmetricvalue(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchmetricvalue(text) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _pMetricName ALIAS FOR $1; _returnVal INTEGER; BEGIN SELECT CASE WHEN (isNumeric(metric_value)) THEN metric_value::INTEGER ELSE NULL END INTO _returnVal FROM metric WHERE metric_name = _pMetricName; RETURN _returnVal; END; $_$; ALTER FUNCTION public.fetchmetricvalue(text) OWNER TO admin; -- -- Name: fetchnextchecknumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchnextchecknumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankaccntid ALIAS FOR $1; _nextChkNumber INTEGER; BEGIN SELECT bankaccnt_nextchknum INTO _nextChkNumber FROM bankaccnt WHERE (bankaccnt_id=pBankaccntid); UPDATE bankaccnt SET bankaccnt_nextchknum = (bankaccnt_nextchknum + 1) WHERE (bankaccnt_id=pBankaccntid); RETURN _nextChkNumber; END; $_$; ALTER FUNCTION public.fetchnextchecknumber(integer) OWNER TO admin; -- -- Name: fetchnextnumber(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchnextnumber(text) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE psequence ALIAS FOR $1; _number TEXT; _numcol TEXT; _select TEXT; _table TEXT; _test TEXT; _nextnum INTEGER; _seqiss seqiss; __seqiss seqiss[]; _not_issued BOOLEAN; BEGIN SELECT CAST(orderseq_number AS text), orderseq_number, orderseq_table, orderseq_numcol, COALESCE(orderseq_seqiss, ARRAY[]::seqiss[]) INTO _number, _nextnum, _table, _numcol, __seqiss FROM orderseq WHERE (orderseq_name=psequence) FOR UPDATE; IF (NOT FOUND) THEN RAISE EXCEPTION 'Invalid orderseq_name %', psequence; END IF; LOOP _seqiss := (_nextnum, now()); SELECT count(*) = 0 INTO _not_issued FROM (SELECT UNNEST(__seqiss) AS issued) data WHERE (issued).seqiss_number = _nextnum; _nextnum := _nextnum + 1; -- Test if the number has been issued, but not committed IF (_not_issued) THEN -- Test if the number has been committed _select := 'SELECT ' || quote_ident(_numcol) || ' FROM ' || quote_ident(_table) || ' WHERE (' || quote_ident(_numcol) || '=' || quote_literal(_number) || ');'; EXECUTE _select INTO _test; IF (_test IS NULL OR NOT FOUND) THEN EXIT; END IF; END IF; -- Number in use, try again _number = _nextnum::text; END LOOP; UPDATE orderseq SET orderseq_number = _nextnum, orderseq_seqiss = orderseq_seqiss || _seqiss WHERE (orderseq_name=psequence); RETURN _number; END; $_$; ALTER FUNCTION public.fetchnextnumber(text) OWNER TO admin; -- -- Name: fetchponumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchponumber() RETURNS text LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('PoNumber'); $$; ALTER FUNCTION public.fetchponumber() OWNER TO admin; -- -- Name: fetchprefwarehousid(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchprefwarehousid() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _result INTEGER; BEGIN SELECT CAST(usrpref_value AS INTEGER) INTO _result FROM usrpref WHERE ((usrpref_username=getEffectiveXtUser()) AND (usrpref_name='PreferredWarehouse')); RETURN _result; END; $$; ALTER FUNCTION public.fetchprefwarehousid() OWNER TO admin; -- -- Name: fetchprnumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchprnumber() RETURNS integer LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('PrNumber')::INTEGER; $$; ALTER FUNCTION public.fetchprnumber() OWNER TO admin; -- -- Name: fetchqunumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchqunumber() RETURNS text LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('QuNumber'); $$; ALTER FUNCTION public.fetchqunumber() OWNER TO admin; -- -- Name: fetchshipmentnumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchshipmentnumber() RETURNS text LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _number TEXT; _test INTEGER; BEGIN LOOP SELECT CAST(nextval('shipment_number_seq') AS TEXT) INTO _number; SELECT shiphead_id INTO _test FROM shiphead WHERE (shiphead_number=_number); IF (NOT FOUND) THEN EXIT; END IF; END LOOP; RETURN _number; END; $$; ALTER FUNCTION public.fetchshipmentnumber() OWNER TO admin; -- -- Name: fetchsonumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchsonumber() RETURNS text LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('SoNumber'); $$; ALTER FUNCTION public.fetchsonumber() OWNER TO admin; -- -- Name: fetchtonumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchtonumber() RETURNS text LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('ToNumber'); $$; ALTER FUNCTION public.fetchtonumber() OWNER TO admin; -- -- Name: fetchusrprefbool(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchusrprefbool(text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _pPrefName ALIAS FOR $1; _returnVal BOOLEAN; BEGIN SELECT CASE WHEN MIN(usrpref_value) = 't' THEN true ELSE false END INTO _returnVal FROM usrpref WHERE ( (usrpref_username=getEffectiveXtUser()) AND (usrpref_name=_pPrefName) ); RETURN _returnVal; END; $_$; ALTER FUNCTION public.fetchusrprefbool(text) OWNER TO admin; -- -- Name: fetchvonumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchvonumber() RETURNS integer LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('VcNumber')::INTEGER; $$; ALTER FUNCTION public.fetchvonumber() OWNER TO admin; -- -- Name: fetchwonumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fetchwonumber() RETURNS integer LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('WoNumber')::INTEGER; $$; ALTER FUNCTION public.fetchwonumber() OWNER TO admin; -- -- Name: financialreport(integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION financialreport(integer, integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlheadid ALIAS FOR $1; pPeriodid ALIAS FOR $2; pPrjid ALIAS FOR $3; _result bool; BEGIN SELECT financialreport(pFlheadid,pPeriodid,'M', pPrjid) INTO _result; RETURN _result; END; $_$; ALTER FUNCTION public.financialreport(integer, integer, integer) OWNER TO admin; -- -- Name: financialreport(integer, integer, character, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION financialreport(integer, integer, character, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlheadid ALIAS FOR $1; pPeriodid ALIAS FOR $2; pInterval ALIAS FOR $3; pPrjid ALIAS FOR $4; _r RECORD; _t RECORD; _s RECORD; BEGIN -- Validate Interval IF pInterval <> 'M' AND pInterval <> 'Q' AND pInterval <> 'Y' THEN RAISE EXCEPTION 'Invalid Interval --> %', pInterval; END IF; -- Get rid of any old reporting done by this user for the specified criteria DELETE FROM flrpt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodId) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser())); -- Find out if we need to show a Grand Total and which if any of the values -- we want to show in that grand total. SELECT flhead_showtotal, CASE WHEN(flhead_showstart) THEN 0.00 ELSE NULL END AS beginning, CASE WHEN(flhead_showend) THEN 0.00 ELSE NULL END AS ending, CASE WHEN(flhead_showdelta) THEN 0.00 ELSE NULL END AS debits, CASE WHEN(flhead_showdelta) THEN 0.00 ELSE NULL END AS credits, CASE WHEN(flhead_showbudget) THEN 0.00 ELSE NULL END AS budget, CASE WHEN(flhead_showdiff) THEN 0.00 ELSE NULL END AS diff, CASE WHEN(flhead_showcustom) THEN 0.00 ELSE NULL END AS custom, CASE WHEN(flhead_usealttotal) THEN flhead_alttotal ELSE NULL END AS altname INTO _r FROM flhead WHERE (flhead_id=pFlheadid); IF (NOT FOUND) THEN return FALSE; END IF; -- If showing a Grand Total then create a record as a Group which acts -- as a parent to the whole report. This allows the code to update as -- it would for normal group total values. IF (_r.flhead_showtotal) THEN INSERT INTO flrpt (flrpt_flhead_id, flrpt_period_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_beginning, flrpt_ending, flrpt_debits, flrpt_credits, flrpt_budget, flrpt_diff, flrpt_custom, flrpt_altname, flrpt_interval ) VALUES (pFlheadid, pPeriodid, getEffectiveXtUser(), 0, -1, 'G', -1, _r.beginning, _r.ending, _r.debits, _r.credits, _r.budget, _r.diff, _r.custom, _r.altname, pInterval ); END IF; PERFORM insertFlGroup(pFlheadid, pPeriodid, -1, 0, FALSE, pInterval, pPrjid); -- go through the list of records that need percentages calculated and perform -- those calculations. FOR _t IN SELECT flrpt_order, CASE WHEN(flgrp_prcnt_flgrp_id = -1) THEN flgrp_flgrp_id ELSE flgrp_prcnt_flgrp_id END AS flgrp_id FROM flrpt, flgrp WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type='G') AND (flrpt_type_id=flgrp_id)) UNION SELECT flrpt_order, CASE WHEN(flitem_prcnt_flgrp_id = -1) THEN flitem_flgrp_id ELSE flitem_prcnt_flgrp_id END AS flgrp_id FROM flrpt, flitem WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type='I') AND (flrpt_type_id=flitem_id)) UNION SELECT flrpt_order, CASE WHEN(flspec_prcnt_flgrp_id = -1) THEN flspec_flgrp_id ELSE flspec_prcnt_flgrp_id END AS flgrp_id FROM flrpt, flspec WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type='S') AND (flrpt_type_id=flspec_id)) LOOP IF( (_t.flgrp_id=-1) OR (NOT (SELECT flgrp_summarize FROM flgrp WHERE flgrp_id=_t.flgrp_id)) ) THEN SELECT COALESCE(SUM(flrpt_beginning),0) AS beginningTotal, COALESCE(SUM(flrpt_ending),0) AS endingTotal, COALESCE(SUM(flrpt_debits),0) AS debitsTotal, COALESCE(SUM(flrpt_credits),0) AS creditsTotal, COALESCE(SUM(flrpt_budget),0) AS budgetTotal, COALESCE(SUM(flrpt_diff), 0) AS diffTotal, COALESCE(SUM(flrpt_custom), 0) AS customTotal INTO _s FROM flrpt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type != 'T') AND (flrpt_parent_id=_t.flgrp_id)); ELSE SELECT COALESCE(SUM(flrpt_beginning),0) AS beginningTotal, COALESCE(SUM(flrpt_ending),0) AS endingTotal, COALESCE(SUM(flrpt_debits),0) AS debitsTotal, COALESCE(SUM(flrpt_credits),0) AS creditsTotal, COALESCE(SUM(flrpt_budget),0) AS budgetTotal, COALESCE(SUM(flrpt_diff), 0) AS diffTotal, COALESCE(SUM(flrpt_custom), 0) AS customTotal INTO _s FROM flrpt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type = 'G') AND (flrpt_type_id=_t.flgrp_id)); END IF; UPDATE flrpt SET flrpt_beginningprcnt = flrpt_beginningprcnt + flrpt_beginning / CASE WHEN (_s.beginningTotal=0) THEN 1 ELSE _s.beginningTotal END, flrpt_endingprcnt = flrpt_endingprcnt + flrpt_ending / CASE WHEN (_s.endingTotal=0) THEN 1 ELSE _s.endingTotal END, flrpt_debitsprcnt = flrpt_debitsprcnt + flrpt_debits / CASE WHEN (_s.debitsTotal=0) THEN 1 ELSE _s.debitsTotal END, flrpt_creditsprcnt = flrpt_creditsprcnt + flrpt_credits / CASE WHEN (_s.creditsTotal=0) THEN 1 ELSE _s.creditsTotal END, flrpt_budgetprcnt = flrpt_budgetprcnt + flrpt_budget / CASE WHEN (_s.budgetTotal=0) THEN 1 ELSE _s.budgetTotal END, flrpt_diffprcnt = flrpt_diffprcnt + flrpt_diff / CASE WHEN (_s.diffTotal=0) THEN 1 ELSE _s.diffTotal END, flrpt_customprcnt = flrpt_customprcnt + flrpt_custom / CASE WHEN (_s.customTotal=0) THEN 1 ELSE _s.customTotal END WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_order=_t.flrpt_order)); END LOOP; -- Update any subtotal records to reflect the percentage values of the parents -- since those are calculated after the subtotal records were created. FOR _t IN SELECT a.flrpt_order AS flrpt_order, b.flrpt_beginningprcnt AS flrpt_beginningprcnt, b.flrpt_endingprcnt AS flrpt_endingprcnt, b.flrpt_debitsprcnt AS flrpt_debitsprcnt, b.flrpt_creditsprcnt AS flrpt_creditsprcnt, b.flrpt_budgetprcnt AS flrpt_budgetprcnt, b.flrpt_diffprcnt AS flrpt_diffprcnt, b.flrpt_customprcnt AS flrpt_customprcnt FROM flrpt AS a, flrpt AS b WHERE ((a.flrpt_flhead_id=pFlheadid) AND (a.flrpt_period_id=pPeriodid) AND (a.flrpt_interval=pInterval) AND (a.flrpt_username=getEffectiveXtUser()) AND (a.flrpt_type='T') AND (b.flrpt_flhead_id=a.flrpt_flhead_id) AND (b.flrpt_period_id=a.flrpt_period_id) AND (b.flrpt_interval=pInterval) AND (b.flrpt_username=a.flrpt_username) AND (b.flrpt_type='G') AND (b.flrpt_type_id=a.flrpt_parent_id)) LOOP UPDATE flrpt SET flrpt_beginningprcnt=flrpt_beginningprcnt + _t.flrpt_beginningprcnt, flrpt_endingprcnt=flrpt_endingprcnt + _t.flrpt_endingprcnt, flrpt_debitsprcnt=flrpt_debitsprcnt + _t.flrpt_debitsprcnt, flrpt_creditsprcnt=flrpt_creditsprcnt + _t.flrpt_creditsprcnt, flrpt_budgetprcnt=flrpt_budgetprcnt + _t.flrpt_budgetprcnt, flrpt_diffprcnt=flrpt_diffprcnt + _t.flrpt_diffprcnt, flrpt_customprcnt=flrpt_customprcnt + _t.flrpt_customprcnt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_order=_t.flrpt_order)); END LOOP; -- If showing a Grand total then move the record we created early to the -- end of the report and marked as a Total record. IF (_r.flhead_showtotal) THEN UPDATE flrpt SET flrpt_order = COALESCE((SELECT MAX(flrpt_order) FROM flrpt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser())) ), 0) + 1, flrpt_level = 0, flrpt_type = 'T' WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_order=0) AND (flrpt_level = -1) AND (flrpt_type = 'G') AND (flrpt_type_id=-1)); END IF; return TRUE; END; $_$; ALTER FUNCTION public.financialreport(integer, integer, character, integer) OWNER TO admin; -- -- Name: financialreport(integer, integer[], character, boolean, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION financialreport(integer, integer[], character, boolean, integer) RETURNS SETOF fltrenditem LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlheadId ALIAS FOR $1; pPeriodIds ALIAS FOR $2; pInterval ALIAS FOR $3; pShowNumbers ALIAS FOR $4; pPrjid ALIAS FOR $5; _row fltrenditem%ROWTYPE; _type CHAR; _p RECORD; _count INTEGER; _n NUMERIC; _fld NUMERIC[]; _grndttl NUMERIC; _i INTEGER; _first BOOLEAN; _prevlevel INTEGER; _subgrp INTEGER; BEGIN _first := true; _subgrp := 0; IF ARRAY_UPPER(pPeriodIds,1) <= 12 THEN _count := ARRAY_UPPER(pPeriodIds,1); ELSE _count := 12; END IF; --Get Type SELECT flhead_type FROM flhead INTO _type WHERE flhead_id=pFlheadId; --Build Financial Data FOR _i IN 1.._count LOOP PERFORM financialreport(pFlheadId,pPeriodIds[_i],pInterval,pPrjid); END LOOP; --Get Row Data FOR _p IN SELECT flrpt_flhead_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_parent_id, flrpt_accnt_id, formatindent(flgrp.flgrp_name,flrpt.flrpt_level) AS flrpt_name, CASE WHEN (flgrp_summarize AND (_type IN ('I','C'))) THEN (COALESCE(flrpt_diff,0)) WHEN (flgrp_summarize AND (_type = 'B')) THEN (COALESCE(flrpt_ending,0)) ELSE NULL END AS f_fld1, flgrp_summarize AS display FROM flrpt,flgrp WHERE ((flrpt_flhead_id=pFlheadId) AND (flgrp_id=flrpt_type_id) AND (flrpt_type='G') AND (flrpt_period_id=pPeriodIds[1]) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser())) UNION SELECT flrpt_flhead_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_parent_id, flrpt_accnt_id, formatindent(accnt_descrip,flrpt.flrpt_level) AS flrpt_name, CASE WHEN (_type IN ('I','C')) THEN (COALESCE(flrpt_diff,0)) WHEN (_type = 'B') THEN (COALESCE(flrpt_ending,0)) ELSE NULL END AS f_fld1, true AS display FROM flrpt,flitem,accnt WHERE ((flrpt_flhead_id=pFlheadId) AND (flrpt_accnt_id=accnt_id) AND (flitem_id=flrpt_type_id) AND (flrpt_type='I') AND (flrpt_period_id=pPeriodIds[1]) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser())) UNION SELECT flrpt_flhead_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_parent_id, flrpt_accnt_id, CASE WHEN (flrpt.flrpt_type='T' AND flrpt.flrpt_level=0) THEN COALESCE(flrpt.flrpt_altname, 'Total') WHEN (flrpt.flrpt_type='T') THEN formatindent(COALESCE(flrpt.flrpt_altname, 'Subtotal') ,flrpt.flrpt_level) ELSE formatindent(('Type ' || flrpt.flrpt_type || ' ' || text(flrpt.flrpt_type_id)), flrpt.flrpt_level) END AS flstmtitem_name, CASE WHEN (_type IN ('I','C')) THEN (COALESCE(flrpt_diff,0)) WHEN (_type = 'B') THEN (COALESCE(flrpt_ending,0)) ELSE NULL END AS f_fld1, true AS display FROM flrpt WHERE ((flrpt_flhead_id=pFlheadId) AND (flrpt_type NOT IN ('I','S','G')) AND (flrpt_period_id=pPeriodIds[1]) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser())) ORDER BY flrpt_order LOOP IF _type IN ('I','C') THEN _grndttl := _p.f_fld1; END IF; --Loop through and calculate period column values IF (_p.display) THEN FOR _i IN 2.._count LOOP SELECT CASE WHEN (_type IN ('I','C')) THEN COALESCE(flrpt_diff,0) WHEN (_type = 'B') THEN COALESCE(flrpt_ending,0) ELSE NULL END INTO _n FROM flrpt WHERE ((flrpt_flhead_id=pFlheadId) AND (flrpt_period_id=pPeriodIds[_i]) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_order=_p.flrpt_order)); _fld[_i-1] := _n; IF _type IN ('I','C') THEN _grndttl := _grndttl+_n; END IF; END LOOP; END IF; --Send it all back to the caller IF _prevlevel > _p.flrpt_level THEN _subgrp := _subgrp+1; END IF; _prevlevel:=_p.flrpt_level; _row.fltrenditem_subgrp := _subgrp; IF NOT _first THEN RETURN NEXT _row; END IF; _first := FALSE; _row.fltrenditem_flhead_id := _p.flrpt_flhead_id; _row.fltrenditem_username := _p.flrpt_username; _row.fltrenditem_order := _p.flrpt_order; _row.fltrenditem_level := _p.flrpt_level; _row.fltrenditem_type := _p.flrpt_type; _row.fltrenditem_type_id := _p.flrpt_type_id; _row.fltrenditem_parent_id := _p.flrpt_parent_id; _row.fltrenditem_accnt_id := _p.flrpt_accnt_id; _row.fltrenditem_name := _p.flrpt_name; IF (_p.display) THEN _row.fltrenditem_fld1 := (_p.f_fld1); _row.fltrenditem_fld2 := (_fld[1]); _row.fltrenditem_fld3 := (_fld[2]); _row.fltrenditem_fld4 := (_fld[3]); _row.fltrenditem_fld5 := (_fld[4]); _row.fltrenditem_fld6 := (_fld[5]); _row.fltrenditem_fld7 := (_fld[6]); _row.fltrenditem_fld8 := (_fld[7]); _row.fltrenditem_fld9 := (_fld[8]); _row.fltrenditem_fld10 := (_fld[9]); _row.fltrenditem_fld11 := (_fld[10]); _row.fltrenditem_fld12 := (_fld[11]); _row.fltrenditem_grndttl := (_grndttl); ELSE _row.fltrenditem_fld1 := NULL; _row.fltrenditem_fld2 := NULL; _row.fltrenditem_fld3 := NULL; _row.fltrenditem_fld4 := NULL; _row.fltrenditem_fld5 := NULL; _row.fltrenditem_fld6 := NULL; _row.fltrenditem_fld7 := NULL; _row.fltrenditem_fld8 := NULL; _row.fltrenditem_fld9 := NULL; _row.fltrenditem_fld10 := NULL; _row.fltrenditem_fld11 := NULL; _row.fltrenditem_fld12 := NULL; _row.fltrenditem_grndttl := NULL; END IF; END LOOP; _row.fltrenditem_subgrp := _subgrp + 1; RETURN NEXT _row; END; $_$; ALTER FUNCTION public.financialreport(integer, integer[], character, boolean, integer) OWNER TO admin; -- -- Name: financialreport(integer, integer, boolean, boolean, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION financialreport(integer, integer, boolean, boolean, integer) RETURNS SETOF flstmtitem LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlcolid ALIAS FOR $1; pPeriodid ALIAS FOR $2; pShowNumbers ALIAS FOR $3; pIndentName ALIAS FOR $4; pPrjid ALIAS FOR $5; _row flstmtitem%ROWTYPE; _p RECORD; _x RECORD; _priorMoPeriodId INTEGER; _priorQtPeriodId INTEGER; _priorYrPeriodId INTEGER; _first BOOLEAN; _prevlevel INTEGER; _subgrp INTEGER; _qtrInterval TEXT; _yrInterval TEXT; BEGIN _priorMoPeriodId := -1; _priorQtPeriodId := -1; _priorYrPeriodId := -1; _first := TRUE; _prevlevel :=0; _subgrp := 0; --Get Layout Data SELECT flhead_id,flhead_type, flcol_month,flcol_quarter,flcol_year,flcol_priortype, flcol_priormonth,flcol_priorquarter,flcol_prioryear, flcol_priordiff,flcol_priordiffprcnt,flcol_priorprcnt, flcol_budget,flcol_budgetdiff,flcol_budgetdiffprcnt, flcol_budgetprcnt INTO _p FROM flhead,flcol WHERE ((flcol_id=pFlcolid) AND (flhead_id=flcol_flhead_id)); IF (_p.flhead_type='B') THEN _qtrInterval := 'M'; _yrInterval := 'M'; ELSE _qtrInterval := 'Q'; _yrInterval := 'Y'; END IF; --Delete old data from all periods DELETE FROM flrpt WHERE ((flrpt_username=getEffectiveXtUser()) AND (flrpt_flhead_id=_p.flhead_id)); --Populate report data... --...for Month IF (_p.flcol_month) THEN PERFORM financialreport(_p.flhead_id,pPeriodid,'M',pPrjid); IF ((_p.flcol_priortype = 'P') AND (_p.flcol_priormonth)) THEN SELECT COALESCE(pp.period_id,-1) INTO _priorMoPeriodId FROM period cp, period pp WHERE ((cp.period_id=pPeriodId) AND (cp.period_start > pp.period_start)) ORDER BY pp.period_start DESC LIMIT 1; IF (_priorMoPeriodId IS NOT NULL) THEN PERFORM financialreport(_p.flhead_id,_priorMoPeriodId,'M',pPrjid); END IF; ELSE IF ((_p.flcol_priortype='Y')AND (_p.flcol_priormonth)) THEN SELECT COALESCE(pp.period_id,-1) INTO _priorMoPeriodId FROM period cp, period pp WHERE ((cp.period_id=pPeriodId) AND (cp.period_id != pp.period_id) AND (cp.period_start > pp.period_start) AND (cp.period_number = pp.period_number)) ORDER BY pp.period_start DESC LIMIT 1; IF (_priorMoPeriodId IS NOT NULL) THEN PERFORM financialreport(_p.flhead_id,_priorMoPeriodId,'M',pPrjid); END IF; END IF; END IF; END IF; --...for Quarter IF (_p.flcol_quarter) THEN PERFORM financialreport(_p.flhead_id,pPeriodid,'Q',pPrjid); END IF; IF ((_p.flcol_priortype='P') AND (_p.flcol_priorquarter)) THEN SELECT COALESCE(pp.period_id,-1) INTO _priorQtPeriodId FROM period cp, period pp WHERE ((cp.period_id=pPeriodId) AND (cp.period_start > pp.period_start) AND (pp.period_quarter= CASE WHEN cp.period_quarter > 1 THEN cp.period_quarter - 1 ELSE 4 END) AND (pp.period_start >= cp.period_start - interval '1 year')) ORDER BY pp.period_start DESC LIMIT 1; IF (_priorQtPeriodId IS NOT NULL) THEN PERFORM financialreport(_p.flhead_id,_priorQtPeriodId,'Q',pPrjid); END IF; ELSE IF ((_p.flcol_priortype='Y')AND (_p.flcol_priorquarter)) THEN SELECT pp.period_id INTO _priorQtPeriodId FROM period cp, period pp, yearperiod cy, yearperiod py WHERE ((cp.period_id=pPeriodId) AND (cp.period_yearperiod_id=cy.yearperiod_id) AND (pp.period_yearperiod_id=py.yearperiod_id) AND (cp.period_quarter=pp.period_quarter) AND (cy.yearperiod_start > py.yearperiod_start)) ORDER BY py.yearperiod_start DESC, pp.period_start DESC LIMIT 1; IF (_priorQtPeriodId IS NOT NULL) THEN PERFORM financialreport(_p.flhead_id,_priorQtPeriodId,'Q',pPrjid); END IF; END IF; END IF; --...for Year IF (_p.flcol_year) THEN PERFORM financialreport(_p.flhead_id,pPeriodid,'Y',pPrjid); END IF; IF (_p.flcol_prioryear='D') THEN SELECT COALESCE(pp.period_id,-1) INTO _priorYrPeriodId FROM period cp, period pp WHERE ((cp.period_id = pPeriodId) AND (cp.period_number = pp.period_number) AND (cp.period_start > pp.period_start)) ORDER BY pp.period_start DESC LIMIT 1; IF (_priorYrPeriodId IS NOT NULL) THEN PERFORM financialreport(_p.flhead_id,_priorYrPeriodId,'Y',pPrjid); END IF; ELSE IF (_p.flcol_prioryear='F') THEN SELECT pp.period_id INTO _priorYrPeriodId FROM period cp, period pp, yearperiod cy, yearperiod py WHERE ((cp.period_id=pPeriodId) AND (cp.period_yearperiod_id=cy.yearperiod_id) AND (pp.period_yearperiod_id=py.yearperiod_id) AND (cy.yearperiod_start > py.yearperiod_start)) ORDER BY pp.period_start DESC LIMIT 1; IF (_priorYrPeriodId IS NOT NULL) THEN PERFORM financialreport(_p.flhead_id,_priorYrPeriodId,'Y',pPrjid); END IF; END IF; END IF; --Return the data FOR _x IN SELECT flrpt.flrpt_flhead_id AS flstmtitem_flhead_id, flrpt.flrpt_period_id AS flstmtitem_period_id, flrpt.flrpt_username AS flstmtitem_username, flrpt.flrpt_order AS flstmtitem_order, flrpt.flrpt_level AS flstmtitem_level, flrpt.flrpt_type AS flstmtitem_type, flrpt.flrpt_type_id AS flstmtitem_type_id, flrpt.flrpt_parent_id AS flstmtitem_parent_id, NULL AS flstmtitem_accnt_id, CASE WHEN (pIndentName) THEN formatindent(flgrp.flgrp_name,flrpt.flrpt_level) ELSE flgrp.flgrp_name END AS flstmtitem_name, CASE WHEN (flgrp_summarize AND (flhead_type IN ('I','C'))) THEN (COALESCE(flrptmo.flrpt_diff,0)) WHEN (flgrp_summarize AND (flhead_type = 'B')) THEN (COALESCE(flrptmo.flrpt_ending,0)) ELSE NULL END AS flstmtitem_month, CASE WHEN (flgrp_summarize) THEN (COALESCE(flrptmo.flrpt_debits,0)) ELSE NULL END AS flstmtitem_monthdb, CASE WHEN (flgrp_summarize) THEN (COALESCE(flrptmo.flrpt_credits,0)) ELSE NULL END AS flstmtitem_monthcr, CASE WHEN (flgrp_summarize AND flgrp_showdiffprcnt) THEN (COALESCE(flrptmo.flrpt_diffprcnt,0)) WHEN (flgrp_summarize AND flgrp_showendprcnt) THEN (COALESCE(flrptmo.flrpt_endingprcnt,0)) ELSE NULL END AS flstmtitem_monthprcnt, CASE WHEN (flgrp_summarize) THEN (flrptmo.flrpt_budget) ELSE NULL END AS flstmtitem_monthbudget, CASE WHEN (flgrp_summarize) THEN (flrptmo.flrpt_budgetprcnt) ELSE NULL END AS flstmtitem_monthbudgetprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE((flrptmo.flrpt_diff-flrptmo.flrpt_budget),0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE((flrptmo.flrpt_ending-flrptmo.flrpt_budget),0)) ELSE NULL END AS flstmtitem_monthbudgetdiff, CASE WHEN (flgrp_summarize AND (flhead_type IN ('I','C')) AND (flrptmo.flrpt_budget > 0)) THEN (COALESCE(((flrptmo.flrpt_diff-flrptmo.flrpt_budget)/flrptmo.flrpt_budget),0)) WHEN (flgrp_summarize AND (flhead_type='B') AND (flrptmo.flrpt_budget > 0)) THEN (COALESCE(((flrptmo.flrpt_ending-flrptmo.flrpt_budget)/flrptmo.flrpt_budget),0)) WHEN (flgrp_summarize AND (flrptmo.flrpt_budget = 0)) THEN NULL ELSE NULL END AS flstmtitem_monthbudgetdiffprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE(flrptqt.flrpt_diff,0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE(flrptqt.flrpt_ending,0)) ELSE NULL END AS flstmtitem_qtr, CASE WHEN (flgrp_summarize) THEN (COALESCE(flrptqt.flrpt_debits,0)) ELSE NULL END AS flstmtitem_qtrdb, CASE WHEN (flgrp_summarize) THEN (COALESCE(flrptqt.flrpt_credits,0)) ELSE NULL END AS flstmtitem_qtrcr, CASE WHEN (flgrp_summarize AND flgrp_showdiffprcnt) THEN (flrptqt.flrpt_diffprcnt) WHEN (flgrp_summarize AND flgrp_showendprcnt) THEN (flrptqt.flrpt_endingprcnt) ELSE NULL END AS flstmtitem_qtrprcnt, CASE WHEN (flgrp_summarize) THEN (COALESCE(flrptqt.flrpt_budget,0)) ELSE NULL END AS flstmtitem_qtrbudget, CASE WHEN (flgrp_summarize) THEN (flrptqt.flrpt_budgetprcnt) ELSE NULL END AS flstmtitem_qtrbudgetprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE((flrptqt.flrpt_diff-flrptqt.flrpt_budget),0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE((flrptqt.flrpt_ending-flrptqt.flrpt_budget),0)) ELSE NULL END AS flstmtitem_qtrbudgetdiff, CASE WHEN (flgrp_summarize AND (flhead_type IN ('I','C')) AND (flrptqt.flrpt_budget > 0)) THEN (COALESCE(((flrptqt.flrpt_diff-flrptqt.flrpt_budget)/flrptqt.flrpt_budget),0)) WHEN (flgrp_summarize AND (flhead_type='B') AND (flrptqt.flrpt_budget > 0)) THEN (COALESCE(((flrptqt.flrpt_ending-flrptqt.flrpt_budget)/flrptqt.flrpt_budget),0)) ELSE NULL END AS flstmtitem_qtrbudgetdiffprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE(flrptyr.flrpt_diff,0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE(flrptyr.flrpt_ending,0)) ELSE NULL END AS flstmtitem_year, CASE WHEN (flgrp_summarize) THEN (COALESCE(flrptyr.flrpt_debits,0)) ELSE NULL END AS flstmtitem_yeardb, CASE WHEN (flgrp_summarize) THEN (COALESCE(flrptyr.flrpt_credits,0)) ELSE NULL END AS flstmtitem_yearcr, CASE WHEN (flgrp_summarize AND flgrp_showdiffprcnt) THEN (COALESCE(flrptyr.flrpt_diffprcnt,0)) WHEN (flgrp_summarize AND flgrp_showendprcnt) THEN (COALESCE(flrptyr.flrpt_endingprcnt,0)) ELSE NULL END AS flstmtitem_yearprcnt, CASE WHEN (flgrp_summarize) THEN (flrptyr.flrpt_budget) ELSE NULL END AS flstmtitem_yearbudget, CASE WHEN (flgrp_summarize) THEN (flrptyr.flrpt_budgetprcnt) ELSE NULL END AS flstmtitem_yearbudgetprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE((flrptyr.flrpt_diff-flrptyr.flrpt_budget),0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE((flrptyr.flrpt_ending-flrptyr.flrpt_budget),0)) ELSE NULL END AS flstmtitem_yearbudgetdiff, CASE WHEN (flgrp_summarize AND (flhead_type IN ('I','C')) AND (flrptyr.flrpt_budget > 0)) THEN (COALESCE(((flrptyr.flrpt_diff-flrptyr.flrpt_budget)/flrptyr.flrpt_budget),0)) WHEN (flgrp_summarize AND (flhead_type = 'B') AND (flrptyr.flrpt_budget > 0)) THEN (COALESCE(((flrptyr.flrpt_ending-flrptyr.flrpt_budget)/flrptyr.flrpt_budget),0)) WHEN (flgrp_summarize AND (flrptyr.flrpt_budget = 0)) THEN NULL ELSE NULL END AS flstmtitem_yearbudgetdiffprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE(flrptprmo.flrpt_diff,0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE(flrptprmo.flrpt_ending,0)) ELSE NULL END AS flstmtitem_prmonth, CASE WHEN (flgrp_summarize AND flgrp_showdiffprcnt) THEN (flrptprmo.flrpt_diffprcnt) WHEN (flgrp_summarize AND flgrp_showendprcnt) THEN (flrptprmo.flrpt_endingprcnt) ELSE NULL END AS flstmtitem_prmonthprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE(flrptmo.flrpt_diff-flrptprmo.flrpt_diff,0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE(flrptmo.flrpt_ending-flrptprmo.flrpt_ending,0)) ELSE NULL END AS flstmtitem_prmonthdiff, CASE WHEN (flgrp_summarize AND (flhead_type IN ('I','C')) AND (flrptprmo.flrpt_diff > 0)) THEN (COALESCE((flrptmo.flrpt_diff-flrptprmo.flrpt_diff)/flrptprmo.flrpt_diff,0)) WHEN (flgrp_summarize AND (flhead_type = 'B') AND (flrptprmo.flrpt_ending > 0)) THEN (COALESCE((flrptmo.flrpt_ending-flrptprmo.flrpt_ending)/flrptprmo.flrpt_ending,0)) WHEN (flgrp_summarize AND (flrptprmo.flrpt_ending = 0)) THEN NULL ELSE NULL END AS flstmtitem_prmonthdiffprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE(flrptprqt.flrpt_diff,0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE(flrptprqt.flrpt_ending,0)) ELSE NULL END AS flstmtitem_prqtr, CASE WHEN (flgrp_summarize AND flgrp_showdiffprcnt) THEN (flrptprqt.flrpt_diffprcnt) WHEN (flgrp_summarize AND flgrp_showendprcnt) THEN (flrptprqt.flrpt_endingprcnt) ELSE NULL END AS flstmtitem_prqtrprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE(flrptqt.flrpt_diff-flrptprqt.flrpt_diff,0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE(flrptqt.flrpt_ending-flrptprqt.flrpt_ending,0)) ELSE NULL END AS flstmtitem_prqtrdiff, CASE WHEN (flgrp_summarize AND (flhead_type IN ('I','C')) AND (flrptprqt.flrpt_diff > 0)) THEN (COALESCE((flrptqt.flrpt_diff-flrptprqt.flrpt_diff)/flrptprqt.flrpt_diff,0)) WHEN (flgrp_summarize AND (flhead_type = 'B') AND (flrptprqt.flrpt_ending > 0)) THEN (COALESCE((flrptqt.flrpt_ending-flrptprqt.flrpt_ending)/flrptprqt.flrpt_ending,0)) WHEN (flgrp_summarize AND (flrptprqt.flrpt_ending = 0)) THEN NULL ELSE NULL END AS flstmtitem_prqtrdiffprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE(flrptpryr.flrpt_diff,0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE(flrptpryr.flrpt_ending,0)) ELSE NULL END AS flstmtitem_pryear, CASE WHEN (flgrp_summarize AND flgrp_showdiffprcnt) THEN (flrptpryr.flrpt_diffprcnt) WHEN (flgrp_summarize AND flgrp_showendprcnt) THEN (flrptpryr.flrpt_endingprcnt) ELSE NULL END AS flstmtitem_pryearprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE(flrptyr.flrpt_diff-flrptpryr.flrpt_diff,0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE(flrptyr.flrpt_ending-flrptpryr.flrpt_ending,0)) ELSE NULL END AS flstmtitem_pryeardiff, CASE WHEN (flgrp_summarize AND (flhead_type IN ('I','C')) AND (flrptpryr.flrpt_diff > 0)) THEN (COALESCE((flrptyr.flrpt_diff-flrptpryr.flrpt_diff)/flrptpryr.flrpt_diff,0)) WHEN (flgrp_summarize AND (flhead_type = 'B' ) AND (flrptpryr.flrpt_ending > 0)) THEN (COALESCE((flrptyr.flrpt_ending-flrptpryr.flrpt_ending)/flrptpryr.flrpt_ending,0)) WHEN (flgrp_summarize AND (flrptpryr.flrpt_ending = 0)) THEN NULL ELSE NULL END AS flstmtitem_pryeardiffprcnt FROM flgrp,flhead, (SELECT DISTINCT flrpt_flhead_id, flrpt_period_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_parent_id FROM flrpt WHERE ((flrpt_type='G') AND (flrpt_flhead_id=_p.flhead_id) AND (flrpt_period_id=pPeriodId) AND (flrpt_username=getEffectiveXtUser()))) AS flrpt LEFT OUTER JOIN flrpt flrptmo ON ((flrptmo.flrpt_type=flrpt.flrpt_type) AND (flrptmo.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptmo.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptmo.flrpt_period_id=flrpt.flrpt_period_id) AND (flrptmo.flrpt_interval='M') AND (flrptmo.flrpt_username=flrpt.flrpt_username) AND (flrptmo.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptqt ON ((flrptqt.flrpt_type=flrpt.flrpt_type) AND (flrptqt.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptqt.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptqt.flrpt_period_id=flrpt.flrpt_period_id) AND (flrptqt.flrpt_interval=_qtrInterval) AND (flrptqt.flrpt_username=flrpt.flrpt_username) AND (flrptqt.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptyr ON ((flrptyr.flrpt_type=flrpt.flrpt_type) AND (flrptyr.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptyr.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptyr.flrpt_period_id=flrpt.flrpt_period_id) AND (flrptyr.flrpt_interval=_yrInterval) AND (flrptyr.flrpt_username=flrpt.flrpt_username) AND (flrptyr.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptprmo ON ((flrptprmo.flrpt_type=flrpt.flrpt_type) AND (flrptprmo.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptprmo.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptprmo.flrpt_period_id=_priorMoPeriodId) AND (flrptprmo.flrpt_interval='M') AND (flrptprmo.flrpt_username=flrpt.flrpt_username) AND (flrptprmo.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptprqt ON ((flrptprqt.flrpt_type=flrpt.flrpt_type) AND (flrptprqt.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptprqt.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptprqt.flrpt_period_id=_priorQtPeriodId) AND (flrptprqt.flrpt_interval='Q') AND (flrptprqt.flrpt_username=flrpt.flrpt_username) AND (flrptprqt.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptpryr ON ((flrptpryr.flrpt_type=flrpt.flrpt_type) AND (flrptpryr.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptpryr.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptpryr.flrpt_period_id=_priorYrPeriodId) AND (flrptpryr.flrpt_interval='Y') AND (flrptpryr.flrpt_username=flrpt.flrpt_username) AND (flrptpryr.flrpt_order=flrpt.flrpt_order)) WHERE ((flgrp_id = flrpt.flrpt_type_id) AND (flhead_id = flgrp_flhead_id)) UNION SELECT flrpt.flrpt_flhead_id AS flstmtitem_flhead_id, flrpt.flrpt_period_id AS flstmtitem_period_id, flrpt.flrpt_username AS flstmtitem_username, flrpt.flrpt_order AS flstmtitem_order, flrpt.flrpt_level AS flstmtitem_level, flrpt.flrpt_type AS flstmtitem_type, flrpt.flrpt_type_id AS flstmtitem_type_id, flrpt.flrpt_parent_id AS flstmtitem_parent_id, flrpt.flrpt_accnt_id AS flstmtitem_accnt_id, CASE WHEN (pIndentName) THEN formatindent(flrpt.flrpt_name,flrpt.flrpt_level) ELSE flrpt.flrpt_name END AS flstmtitem_name, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptmo.flrpt_diff,0)) ELSE (COALESCE(flrptmo.flrpt_ending,0)) END AS flstmtitem_month, (COALESCE(flrptmo.flrpt_debits,0)) AS flstmtitem_monthdb, (COALESCE(flrptmo.flrpt_credits,0)) AS flstmtitem_monthcr, CASE WHEN (flitem_showdiffprcnt) THEN (flrptmo.flrpt_diffprcnt) WHEN (flitem_showendprcnt) THEN (flrptmo.flrpt_endingprcnt) ELSE NULL END AS flstmtitem_monthprcnt, (COALESCE(flrptmo.flrpt_budget,0)) AS flstmtitem_monthbudget, (flrptmo.flrpt_budgetprcnt) AS flstmtitem_monthbudgetprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE((flrptmo.flrpt_diff-flrptmo.flrpt_budget),0)) ELSE (COALESCE((flrptmo.flrpt_ending-flrptmo.flrpt_budget),0)) END AS flstmtitem_monthbudgetdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptmo.flrpt_budget > 0)) THEN (COALESCE(((flrptmo.flrpt_diff-flrptmo.flrpt_budget)/flrptmo.flrpt_budget),0)) WHEN ((flhead_type='B') AND (flrptmo.flrpt_budget > 0)) THEN (COALESCE(((flrptmo.flrpt_ending-flrptmo.flrpt_budget)/flrptmo.flrpt_budget),0)) ELSE NULL END AS flstmtitem_monthbudgetdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptqt.flrpt_diff,0)) ELSE (COALESCE(flrptqt.flrpt_ending,0)) END AS flstmtitem_qtr, (COALESCE(flrptqt.flrpt_debits,0)) AS flstmtitem_qtrdb, (COALESCE(flrptqt.flrpt_credits,0)) AS flstmtitem_qtrcr, CASE WHEN (flitem_showdiffprcnt) THEN (COALESCE(flrptqt.flrpt_diffprcnt,0)) WHEN (flitem_showendprcnt) THEN (COALESCE(flrptqt.flrpt_endingprcnt,0)) ELSE NULL END AS flstmtitem_qtrprcnt, (COALESCE(flrptqt.flrpt_budget,0)) AS flstmtitem_qtrbudget, (flrptqt.flrpt_budgetprcnt) AS flstmtitem_qtrbudgetprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE((flrptqt.flrpt_diff-flrptqt.flrpt_budget),0)) ELSE (COALESCE((flrptqt.flrpt_ending-flrptqt.flrpt_budget),0)) END AS flstmtitem_qtrbudgetdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptqt.flrpt_budget > 0)) THEN (COALESCE(((flrptqt.flrpt_diff-flrptqt.flrpt_budget)/flrptqt.flrpt_budget),0)) WHEN ((flhead_type='B') AND (flrptqt.flrpt_budget > 0)) THEN (COALESCE(((flrptqt.flrpt_ending-flrptqt.flrpt_budget)/flrptqt.flrpt_budget),0)) ELSE NULL END AS flstmtitem_qtrbudgetdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptyr.flrpt_diff,0)) ELSE (COALESCE(flrptyr.flrpt_ending,0)) END AS flstmtitem_year, (COALESCE(flrptyr.flrpt_debits,0)) AS flstmtitem_yeardb, (COALESCE(flrptyr.flrpt_credits,0)) AS flstmtitem_yearcr, CASE WHEN (flitem_showdiffprcnt) THEN (flrptyr.flrpt_diffprcnt) WHEN (flitem_showendprcnt) THEN (flrptyr.flrpt_endingprcnt) ELSE NULL END AS flstmtitem_yearprcnt, (COALESCE(flrptyr.flrpt_budget,0)) AS flstmtitem_yearbudget, (flrptyr.flrpt_budgetprcnt) AS flstmtitem_yearbudgetprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE((flrptyr.flrpt_diff-flrptyr.flrpt_budget),0)) ELSE (COALESCE((flrptyr.flrpt_ending-flrptyr.flrpt_budget),0)) END AS flstmtitem_yearbudgetdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptyr.flrpt_budget > 0)) THEN (COALESCE(((flrptyr.flrpt_diff-flrptyr.flrpt_budget)/flrptyr.flrpt_budget),0)) WHEN ((flhead_type = 'B') AND (flrptyr.flrpt_budget > 0)) THEN (COALESCE(((flrptyr.flrpt_ending-flrptyr.flrpt_budget)/flrptyr.flrpt_budget),0)) ELSE NULL END AS flstmtitem_yearbudgetdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptprmo.flrpt_diff,0)) ELSE (COALESCE(flrptprmo.flrpt_ending,0)) END AS flstmtitem_prmonth, CASE WHEN (flitem_showdiffprcnt) THEN (flrptprmo.flrpt_diffprcnt) WHEN (flitem_showendprcnt) THEN (flrptprmo.flrpt_endingprcnt) ELSE NULL END AS flstmtitem_prmonthprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptmo.flrpt_diff-flrptprmo.flrpt_diff,0)) ELSE (COALESCE(flrptmo.flrpt_ending-flrptprmo.flrpt_ending,0)) END AS flstmtitem_prmonthdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptprmo.flrpt_diff > 0)) THEN (COALESCE((flrptmo.flrpt_diff-flrptprmo.flrpt_diff)/flrptprmo.flrpt_diff,0)) WHEN ((flhead_type = 'B') AND (flrptprmo.flrpt_ending > 0)) THEN (COALESCE((flrptmo.flrpt_ending-flrptprmo.flrpt_ending)/flrptprmo.flrpt_ending,0)) ELSE NULL END AS flstmtitem_prmonthdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptprqt.flrpt_diff,0)) ELSE (COALESCE(flrptprqt.flrpt_ending,0)) END AS flstmtitem_prqtr, CASE WHEN (flitem_showdiffprcnt) THEN (flrptprqt.flrpt_diffprcnt) WHEN (flitem_showendprcnt) THEN (flrptprqt.flrpt_endingprcnt) ELSE NULL END AS flstmtitem_prqtrprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptqt.flrpt_diff-flrptprqt.flrpt_diff,0)) ELSE (COALESCE(flrptqt.flrpt_ending-flrptprqt.flrpt_ending,0)) END AS flstmtitem_prqtrdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptprqt.flrpt_diff > 0)) THEN (COALESCE((flrptqt.flrpt_diff-flrptprqt.flrpt_diff)/flrptprqt.flrpt_diff,0)) WHEN ((flhead_type = 'B') AND (flrptprqt.flrpt_ending > 0)) THEN (COALESCE((flrptqt.flrpt_ending-flrptprqt.flrpt_ending)/flrptprqt.flrpt_ending,0)) ELSE NULL END AS flstmtitem_prqtrdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptpryr.flrpt_diff,0)) ELSE (COALESCE(flrptpryr.flrpt_ending,0)) END AS flstmtitem_pryear, CASE WHEN (flitem_showdiffprcnt) THEN (flrptpryr.flrpt_diffprcnt) WHEN (flitem_showendprcnt) THEN (flrptpryr.flrpt_endingprcnt) ELSE NULL END AS flstmtitem_pryearprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE((flrptyr.flrpt_diff-flrptpryr.flrpt_diff),0)) ELSE (COALESCE((flrptyr.flrpt_ending-flrptpryr.flrpt_ending),0)) END AS flstmtitem_pryeardiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptpryr.flrpt_diff > 0)) THEN (COALESCE((flrptyr.flrpt_diff-flrptpryr.flrpt_diff)/flrptpryr.flrpt_diff,0)) WHEN ((flhead_type = 'B' ) AND (flrptpryr.flrpt_ending > 0)) THEN (COALESCE((flrptyr.flrpt_ending-flrptpryr.flrpt_ending)/flrptpryr.flrpt_ending,0)) ELSE NULL END AS flstmtitem_pryeardiffprcnt FROM flitem,flhead, (SELECT DISTINCT flrpt_flhead_id, flrpt_period_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_parent_id, accnt_id AS flrpt_accnt_id, CASE WHEN (pShowNumbers) THEN (formatGLAccount(accnt_id) || '-' || accnt_descrip) ELSE accnt_descrip END AS flrpt_name FROM flrpt,accnt WHERE ((flrpt_type='I') AND (flrpt_flhead_id=_p.flhead_id) AND (flrpt_period_id=pPeriodid) AND (flrpt_username=getEffectiveXtUser()) AND (accnt_id=flrpt_accnt_id))) AS flrpt LEFT OUTER JOIN flrpt flrptmo ON ((flrptmo.flrpt_type=flrpt.flrpt_type) AND (flrptmo.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptmo.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptmo.flrpt_period_id=flrpt.flrpt_period_id) AND (flrptmo.flrpt_interval='M') AND (flrptmo.flrpt_username=flrpt.flrpt_username) AND (flrptmo.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptqt ON ((flrptqt.flrpt_type=flrpt.flrpt_type) AND (flrptqt.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptqt.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptqt.flrpt_period_id=flrpt.flrpt_period_id) AND (flrptqt.flrpt_interval=_qtrInterval) AND (flrptqt.flrpt_username=flrpt.flrpt_username) AND (flrptqt.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptyr ON ((flrptyr.flrpt_type=flrpt.flrpt_type) AND (flrptyr.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptyr.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptyr.flrpt_period_id=flrpt.flrpt_period_id) AND (flrptyr.flrpt_interval=_yrInterval) AND (flrptyr.flrpt_username=flrpt.flrpt_username) AND (flrptyr.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptprmo ON ((flrptprmo.flrpt_type=flrpt.flrpt_type) AND (flrptprmo.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptprmo.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptprmo.flrpt_period_id=_priorMoPeriodId) AND (flrptprmo.flrpt_interval='M') AND (flrptprmo.flrpt_username=flrpt.flrpt_username) AND (flrptprmo.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptprqt ON ((flrptprqt.flrpt_type=flrpt.flrpt_type) AND (flrptprqt.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptprqt.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptprqt.flrpt_period_id=_priorQtPeriodId) AND (flrptprqt.flrpt_interval='Q') AND (flrptprqt.flrpt_username=flrpt.flrpt_username) AND (flrptprqt.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptpryr ON ((flrptpryr.flrpt_type=flrpt.flrpt_type) AND (flrptpryr.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptpryr.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptpryr.flrpt_period_id=_priorYrPeriodId) AND (flrptpryr.flrpt_interval='Y') AND (flrptpryr.flrpt_username=flrpt.flrpt_username) AND (flrptpryr.flrpt_order=flrpt.flrpt_order) ) WHERE ((flitem_id = flrpt.flrpt_type_id) AND (flhead_id = flitem_flhead_id)) UNION SELECT flrpt.flrpt_flhead_id AS flstmtitem_flhead_id, flrpt.flrpt_period_id AS flstmtitem_period_id, flrpt.flrpt_username AS flstmtitem_username, flrpt.flrpt_order AS flstmtitem_order, flrpt.flrpt_level AS flstmtitem_level, flrpt.flrpt_type AS flstmtitem_type, flrpt.flrpt_type_id AS flstmtitem_type_id, flrpt.flrpt_parent_id AS flstmtitem_parent_id, NULL AS flstmtitem_accnt_id, CASE WHEN(flrpt.flrpt_type='T' AND flrpt.flrpt_level=0) THEN COALESCE(flrpt.flrpt_altname, 'Total') WHEN(flrpt.flrpt_type='T') THEN formatindent(COALESCE(flrpt.flrpt_altname, 'Subtotal') , (CASE WHEN pIndentName THEN flrpt.flrpt_level ELSE 0 END)) ELSE formatindent(('Type ' || flrpt.flrpt_type || ' ' || text(flrpt.flrpt_type_id)), (CASE WHEN pIndentName THEN flrpt.flrpt_level ELSE 0 END)) END AS flstmtitem_name, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptmo.flrpt_diff,0)) ELSE (COALESCE(flrptmo.flrpt_ending,0)) END AS flstmtitem_month, (COALESCE(flrptmo.flrpt_debits,0)) AS flstmtitem_monthdb, (COALESCE(flrptmo.flrpt_credits,0)) AS flstmtitem_monthcr, CASE WHEN (flhead_type IN ('I','C')) THEN (flrptmo.flrpt_diffprcnt) ELSE (flrptmo.flrpt_endingprcnt) END AS flstmtitem_monthprcnt, (COALESCE(flrptmo.flrpt_budget,0)) AS flstmtitem_monthbudget, (flrptmo.flrpt_budgetprcnt) AS flstmtitem_monthbudgetprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE((flrptmo.flrpt_diff-flrptmo.flrpt_budget),0)) ELSE (COALESCE((flrptmo.flrpt_ending-flrptmo.flrpt_budget),0)) END AS flstmtitem_monthbudgetdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptmo.flrpt_budget > 0)) THEN (COALESCE(((flrptmo.flrpt_diff-flrptmo.flrpt_budget)/flrptmo.flrpt_budget),0)) WHEN ((flhead_type='B') AND (flrptmo.flrpt_budget > 0)) THEN (COALESCE(((flrptmo.flrpt_ending-flrptmo.flrpt_budget)/flrptmo.flrpt_budget),0)) ELSE NULL END AS flstmtitem_monthbudgetdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptqt.flrpt_diff,0)) ELSE (COALESCE(flrptqt.flrpt_ending,0)) END AS flstmtitem_qtr, (COALESCE(flrptqt.flrpt_debits,0)) AS flstmtitem_qtrdb, (COALESCE(flrptqt.flrpt_credits,0)) AS flstmtitem_qtrcr, CASE WHEN (flhead_type IN ('I','C')) THEN (flrptqt.flrpt_diffprcnt) ELSE (flrptqt.flrpt_endingprcnt) END AS flstmtitem_qtrprcnt, (COALESCE(flrptqt.flrpt_budget,0)) AS flstmtitem_qtrbudget, (flrptqt.flrpt_budgetprcnt) AS flstmtitem_qtrbudgetprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE((flrptqt.flrpt_diff-flrptqt.flrpt_budget),0)) ELSE (COALESCE((flrptqt.flrpt_ending-flrptqt.flrpt_budget),0)) END AS flstmtitem_qtrbudgetdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptqt.flrpt_budget > 0)) THEN (COALESCE(((flrptqt.flrpt_diff-flrptqt.flrpt_budget)/flrptqt.flrpt_budget),0)) WHEN ((flhead_type='B') AND (flrptqt.flrpt_budget > 0)) THEN (COALESCE(((flrptqt.flrpt_ending-flrptqt.flrpt_budget)/flrptqt.flrpt_budget),0)) ELSE NULL END AS flstmtitem_qtrbudgetdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptyr.flrpt_diff,0)) ELSE (COALESCE(flrptyr.flrpt_ending,0)) END AS flstmtitem_year, (COALESCE(flrptyr.flrpt_debits,0)) AS flstmtitem_yeardb, (COALESCE(flrptyr.flrpt_credits,0)) AS flstmtitem_yearcr, CASE WHEN (flhead_type IN ('I','C')) THEN (flrptyr.flrpt_diffprcnt) ELSE (flrptyr.flrpt_endingprcnt) END AS flstmtitem_yearprcnt, (COALESCE(flrptyr.flrpt_budget,0)) AS flstmtitem_yearbudget, (flrptyr.flrpt_budgetprcnt) AS flstmtitem_yearbudgetprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE((flrptyr.flrpt_diff-flrptyr.flrpt_budget),0)) ELSE (COALESCE((flrptyr.flrpt_ending-flrptyr.flrpt_budget),0)) END AS flstmtitem_yearbudgetdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptyr.flrpt_budget > 0)) THEN (COALESCE(((flrptyr.flrpt_diff-flrptyr.flrpt_budget)/flrptyr.flrpt_budget),0)) WHEN ((flhead_type = 'B') AND (flrptyr.flrpt_budget > 0)) THEN (COALESCE(((flrptyr.flrpt_ending-flrptyr.flrpt_budget)/flrptyr.flrpt_budget),0)) ELSE NULL END AS flstmtitem_yearbudgetdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptprmo.flrpt_diff,0)) ELSE (COALESCE(flrptprmo.flrpt_ending,0)) END AS flstmtitem_prmonth, CASE WHEN (flhead_type IN ('I','C')) THEN (flrptprmo.flrpt_diffprcnt) ELSE (flrptprmo.flrpt_endingprcnt) END AS flstmtitem_prmonthprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptmo.flrpt_diff-flrptprmo.flrpt_diff,0)) ELSE (COALESCE(flrptmo.flrpt_ending-flrptprmo.flrpt_ending,0)) END AS flstmtitem_prmonthdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptprmo.flrpt_diff > 0)) THEN (COALESCE((flrptmo.flrpt_diff-flrptprmo.flrpt_diff)/flrptprmo.flrpt_diff,0)) WHEN ((flhead_type = 'B') AND (flrptprmo.flrpt_ending > 0)) THEN (COALESCE((flrptmo.flrpt_ending-flrptprmo.flrpt_ending)/flrptprmo.flrpt_ending,0)) ELSE NULL END AS flstmtitem_prmonthdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptprqt.flrpt_diff,0)) ELSE (COALESCE(flrptprqt.flrpt_ending,0)) END AS flstmtitem_prqtr, CASE WHEN (flhead_type IN ('I','C')) THEN (flrptprqt.flrpt_diffprcnt) ELSE (flrptprqt.flrpt_endingprcnt) END AS flstmtitem_prqtrprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptqt.flrpt_diff-flrptprqt.flrpt_diff,0)) ELSE (COALESCE(flrptqt.flrpt_ending-flrptprqt.flrpt_ending,0)) END AS flstmtitem_prqtrdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptprqt.flrpt_diff > 0)) THEN (COALESCE((flrptqt.flrpt_diff-flrptprqt.flrpt_diff)/flrptprqt.flrpt_diff,0)) WHEN ((flhead_type = 'B') AND (flrptprqt.flrpt_ending > 0)) THEN (COALESCE((flrptqt.flrpt_ending-flrptprqt.flrpt_ending)/flrptprqt.flrpt_ending,0)) ELSE NULL END AS flstmtitem_prqtrdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptpryr.flrpt_diff,0)) ELSE (COALESCE(flrptpryr.flrpt_ending,0)) END AS flstmtitem_pryear, CASE WHEN (flhead_type IN ('I','C')) THEN (flrptpryr.flrpt_diffprcnt) ELSE (flrptpryr.flrpt_endingprcnt) END AS flstmtitem_pryearprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptyr.flrpt_diff-flrptpryr.flrpt_diff,0)) ELSE (COALESCE(flrptyr.flrpt_ending-flrptpryr.flrpt_ending,0)) END AS flstmtitem_pryeardiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptpryr.flrpt_diff > 0)) THEN (COALESCE((flrptyr.flrpt_diff-flrptpryr.flrpt_diff)/flrptpryr.flrpt_diff,0)) WHEN ((flhead_type = 'B' ) AND (flrptpryr.flrpt_ending > 0)) THEN (COALESCE((flrptyr.flrpt_ending-flrptpryr.flrpt_ending)/flrptpryr.flrpt_ending,0)) ELSE NULL END AS flstmtitem_pryeardiffprcnt FROM flhead CROSS JOIN (SELECT DISTINCT flrpt_flhead_id, flrpt_period_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_parent_id, flrpt_altname FROM flrpt WHERE ((NOT (flrpt_type IN ('G','I','S'))) AND (flrpt_flhead_id=_p.flhead_id) AND (flrpt_period_id=pPeriodId) AND (flrpt_username=getEffectiveXtUser()))) AS flrpt LEFT OUTER JOIN flrpt flrptmo ON ((flrptmo.flrpt_type=flrpt.flrpt_type) AND (flrptmo.flrpt_order=flrpt.flrpt_order) AND (flrptmo.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptmo.flrpt_period_id=flrpt.flrpt_period_id) AND (flrptmo.flrpt_interval='M') AND (flrptmo.flrpt_username=flrpt.flrpt_username)) LEFT OUTER JOIN flrpt flrptqt ON ((flrptqt.flrpt_type=flrpt.flrpt_type) AND (flrptqt.flrpt_order=flrpt.flrpt_order) AND (flrptqt.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptqt.flrpt_period_id=flrpt.flrpt_period_id) AND (flrptqt.flrpt_interval=_qtrInterval) AND (flrptqt.flrpt_username=flrpt.flrpt_username)) LEFT OUTER JOIN flrpt flrptyr ON ((flrptyr.flrpt_type=flrpt.flrpt_type) AND (flrptyr.flrpt_order=flrpt.flrpt_order) AND (flrptyr.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptyr.flrpt_period_id=flrpt.flrpt_period_id) AND (flrptyr.flrpt_interval=_yrInterval) AND (flrptyr.flrpt_username=flrpt.flrpt_username)) LEFT OUTER JOIN flrpt flrptprmo ON ((flrptprmo.flrpt_type=flrpt.flrpt_type) AND (flrptprmo.flrpt_order=flrpt.flrpt_order) AND (flrptprmo.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptprmo.flrpt_period_id=_priorMoPeriodId) AND (flrptprmo.flrpt_interval='M') AND (flrptprmo.flrpt_username=flrpt.flrpt_username)) LEFT OUTER JOIN flrpt flrptprqt ON ((flrptprqt.flrpt_type=flrpt.flrpt_type) AND (flrptprqt.flrpt_order=flrpt.flrpt_order) AND (flrptprqt.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptprqt.flrpt_period_id=_priorQtPeriodId) AND (flrptprqt.flrpt_interval='Q') AND (flrptprqt.flrpt_username=flrpt.flrpt_username)) LEFT OUTER JOIN flrpt flrptpryr ON ((flrptpryr.flrpt_type=flrpt.flrpt_type) AND (flrptpryr.flrpt_order=flrpt.flrpt_order) AND (flrptpryr.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptpryr.flrpt_period_id=_priorYrPeriodId) AND (flrptpryr.flrpt_interval='Y') AND (flrptpryr.flrpt_username=flrpt.flrpt_username)) WHERE (flhead_id=flrpt.flrpt_flhead_id) ORDER BY flstmtitem_order LOOP IF _prevlevel > _x.flstmtitem_level THEN _subgrp := _subgrp+1; END IF; _prevlevel:=_x.flstmtitem_level; _row.flstmtitem_subgrp := _subgrp; IF NOT _first THEN RETURN NEXT _row; END IF; _first := FALSE; _row.flstmtitem_flhead_id := _x.flstmtitem_flhead_id; _row.flstmtitem_period_id := _x.flstmtitem_period_id; _row.flstmtitem_username := _x.flstmtitem_username; _row.flstmtitem_order := _x.flstmtitem_order; _row.flstmtitem_level := _x.flstmtitem_level; _row.flstmtitem_type := _x.flstmtitem_type; _row.flstmtitem_type_id := _x.flstmtitem_type_id; _row.flstmtitem_parent_id := _x.flstmtitem_parent_id; _row.flstmtitem_accnt_id := _x.flstmtitem_accnt_id; _row.flstmtitem_name := _x.flstmtitem_name; _row.flstmtitem_month := _x.flstmtitem_month; _row.flstmtitem_monthdb := _x.flstmtitem_monthdb; _row.flstmtitem_monthcr := _x.flstmtitem_monthcr; _row.flstmtitem_monthprcnt := _x.flstmtitem_monthprcnt; _row.flstmtitem_monthbudget := _x.flstmtitem_monthbudget; _row.flstmtitem_monthbudgetprcnt := _x.flstmtitem_monthbudgetprcnt; _row.flstmtitem_monthbudgetdiff := _x.flstmtitem_monthbudgetdiff; _row.flstmtitem_monthbudgetdiffprcnt := _x.flstmtitem_monthbudgetdiffprcnt; _row.flstmtitem_qtr := _x.flstmtitem_qtr; _row.flstmtitem_qtrdb := _x.flstmtitem_qtrdb; _row.flstmtitem_qtrcr := _x.flstmtitem_qtrcr; _row.flstmtitem_qtrprcnt := _x.flstmtitem_qtrprcnt; _row.flstmtitem_qtrbudget := _x.flstmtitem_qtrbudget; _row.flstmtitem_qtrbudgetprcnt := _x.flstmtitem_qtrbudgetprcnt; _row.flstmtitem_qtrbudgetdiff := _x.flstmtitem_qtrbudgetdiff; _row.flstmtitem_qtrbudgetdiffprcnt := _x.flstmtitem_qtrbudgetdiffprcnt; _row.flstmtitem_year := _x.flstmtitem_year; _row.flstmtitem_yeardb := _x.flstmtitem_yeardb; _row.flstmtitem_yearcr := _x.flstmtitem_yearcr; _row.flstmtitem_yearprcnt := _x.flstmtitem_yearprcnt; _row.flstmtitem_yearbudget := _x.flstmtitem_yearbudget; _row.flstmtitem_yearbudgetprcnt := _x.flstmtitem_yearbudgetprcnt; _row.flstmtitem_yearbudgetdiff := _x.flstmtitem_yearbudgetdiff; _row.flstmtitem_yearbudgetdiffprcnt := _x.flstmtitem_yearbudgetdiffprcnt; _row.flstmtitem_prmonth := _x.flstmtitem_prmonth; _row.flstmtitem_prmonthprcnt := _x.flstmtitem_prmonthprcnt; _row.flstmtitem_prmonthdiff := _x.flstmtitem_prmonthdiff; _row.flstmtitem_prmonthdiffprcnt := _x.flstmtitem_prmonthdiffprcnt; _row.flstmtitem_prqtr := _x.flstmtitem_prqtr; _row.flstmtitem_prqtrprcnt := _x.flstmtitem_prqtrprcnt; _row.flstmtitem_prqtrdiff := _x.flstmtitem_prqtrdiff; _row.flstmtitem_prqtrdiffprcnt := _x.flstmtitem_prqtrdiffprcnt; _row.flstmtitem_pryear := _x.flstmtitem_pryear; _row.flstmtitem_pryearprcnt := _x.flstmtitem_pryearprcnt; _row.flstmtitem_pryeardiff := _x.flstmtitem_pryeardiff; _row.flstmtitem_pryeardiffprcnt := _x.flstmtitem_pryeardiffprcnt; END LOOP; _row.flstmtitem_subgrp := _subgrp + 1; RETURN NEXT _row; END; $_$; ALTER FUNCTION public.financialreport(integer, integer, boolean, boolean, integer) OWNER TO admin; -- -- Name: findapaccount(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION findapaccount(integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; _accntid INTEGER; BEGIN IF (NOT fetchMetricBool('InterfaceAPToGL')) THEN RETURN 0; END IF; SELECT apaccnt_ap_accnt_id INTO _accntid FROM apaccnt JOIN vendinfo ON (apaccnt_vendtype_id=vend_vendtype_id) WHERE (vend_id=pVendid); IF (FOUND) THEN RETURN _accntid; END IF; SELECT apaccnt_ap_accnt_id INTO _accntid FROM apaccnt JOIN vendtype ON (vendtype_code ~ apaccnt_vendtype) JOIN vendinfo ON (vend_vendtype_id=vendtype_id) WHERE ((apaccnt_vendtype_id=-1) AND (vend_id=pVendid)); IF (FOUND) THEN RETURN _accntid; END IF; RETURN -1; END; $_$; ALTER FUNCTION public.findapaccount(integer) OWNER TO admin; -- -- Name: findapdiscountaccount(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION findapdiscountaccount(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; _accntid INTEGER; BEGIN IF (NOT fetchMetricBool('InterfaceAPToGL')) THEN RETURN 0; END IF; SELECT apaccnt_discount_accnt_id INTO _accntid FROM apaccnt JOIN vendinfo ON (apaccnt_vendtype_id=vend_vendtype_id) WHERE (vend_id=pVendid); IF (FOUND) THEN RETURN _accntid; END IF; SELECT apaccnt_discount_accnt_id INTO _accntid FROM apaccnt JOIN vendtype ON (vendtype_code ~ apaccnt_vendtype) JOIN vendinfo ON (vend_vendtype_id=vendtype_id) WHERE ((apaccnt_vendtype_id=-1) AND (vend_id=pVendid)); IF (FOUND) THEN RETURN _accntid; END IF; RETURN -1; END; $_$; ALTER FUNCTION public.findapdiscountaccount(integer) OWNER TO admin; -- -- Name: findapprepaidaccount(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION findapprepaidaccount(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; _accntid INTEGER; BEGIN IF (NOT fetchMetricBool('InterfaceAPToGL')) THEN RETURN 0; END IF; -- Check for a Vendor Type specific Account SELECT apaccnt_prepaid_accnt_id INTO _accntid FROM apaccnt JOIN vendinfo ON (apaccnt_vendtype_id=vend_vendtype_id) WHERE (vend_id=pVendid); IF (FOUND) THEN RETURN _accntid; END IF; -- Check for a Vendor Type pattern SELECT apaccnt_prepaid_accnt_id INTO _accntid FROM apaccnt JOIN vendtype ON (vendtype_code ~ apaccnt_vendtype) JOIN vendinfo ON (vend_vendtype_id=vendtype_id) WHERE ((apaccnt_vendtype_id=-1) AND (vend_id=pVendid)); IF (FOUND) THEN RETURN _accntid; END IF; RETURN -1; END; $_$; ALTER FUNCTION public.findapprepaidaccount(integer) OWNER TO admin; -- -- Name: findaraccount(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION findaraccount(integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; _accntid INTEGER; BEGIN IF (NOT fetchMetricBool('InterfaceARToGL')) THEN RETURN 0; END IF; -- Check for a Customer Type specific Account SELECT araccnt_ar_accnt_id INTO _accntid FROM araccnt, custinfo WHERE ( (araccnt_custtype_id=cust_custtype_id) AND (cust_id=pCustid) ); IF (FOUND) THEN RETURN _accntid; END IF; -- Check for a Customer Type pattern SELECT araccnt_ar_accnt_id INTO _accntid FROM araccnt, custinfo, custtype WHERE ( (custtype_code ~ araccnt_custtype) AND (araccnt_custtype_id=-1) AND (cust_custtype_id=custtype_id) AND (cust_id=pCustid) ); IF (FOUND) THEN RETURN _accntid; END IF; RETURN -1; END; $_$; ALTER FUNCTION public.findaraccount(integer) OWNER TO admin; -- -- Name: findardiscountaccount(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION findardiscountaccount(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; _accntid INTEGER; BEGIN IF (NOT fetchMetricBool('InterfaceARToGL')) THEN RETURN 0; END IF; -- Check for a Customer Type specific Account SELECT araccnt_discount_accnt_id INTO _accntid FROM araccnt, custinfo WHERE ( (araccnt_custtype_id=cust_custtype_id) AND (cust_id=pCustid) ); IF (FOUND) THEN RETURN _accntid; END IF; -- Check for a Customer Type pattern SELECT araccnt_discount_accnt_id INTO _accntid FROM araccnt, custinfo, custtype WHERE ( (custtype_code ~ araccnt_custtype) AND (cust_custtype_id=custtype_id) AND (araccnt_custtype_id=-1) AND (cust_id=pCustid) ); IF (FOUND) THEN RETURN _accntid; END IF; RETURN -1; END; $_$; ALTER FUNCTION public.findardiscountaccount(integer) OWNER TO admin; -- -- Name: findcalendarorigin(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION findcalendarorigin(integer) RETURNS date LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCalheadid ALIAS FOR $1; _originType CHAR(1); _origin DATE; BEGIN SELECT calhead_origin INTO _originType FROM calhead WHERE (calhead_id=pCalheadid); IF (NOT FOUND) THEN _origin := NULL; ELSIF (_originType = 'D') THEN _origin := CURRENT_DATE; ELSIF (_originType = 'E') THEN _origin := (CURRENT_DATE + 1); ELSIF (_originType = 'W') THEN _origin := (CURRENT_DATE - EXTRACT(DOW FROM CURRENT_DATE)::INTEGER); ELSIF (_originType = 'X') THEN _origin := ((CURRENT_DATE - EXTRACT(DOW FROM CURRENT_DATE)::INTEGER) + INTERVAL '1 week'); ELSIF (_originType = 'M') THEN _origin := date_trunc('month', CURRENT_DATE); ELSIF (_originType = 'N') THEN _origin := (date_trunc('month', CURRENT_DATE) + INTERVAL '1 month'); ELSIF (_originType = 'L') THEN _origin := (date_trunc('year', CURRENT_DATE) - INTERVAL '1 year'); ELSIF (_originType = 'Y') THEN _origin := date_trunc('year', CURRENT_DATE); ELSIF (_originType = 'Z') THEN _origin := (date_trunc('year', CURRENT_DATE) + INTERVAL '1 year'); ELSE _origin := NULL; END IF; RETURN _origin; END; $_$; ALTER FUNCTION public.findcalendarorigin(integer) OWNER TO admin; -- -- Name: findcustomerform(integer, character); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION findcustomerform(integer, character) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; pFormtype ALIAS FOR $2; _f RECORD; _found BOOLEAN; BEGIN -- Check for a Customer Type specific Form SELECT custform.* INTO _f FROM custform JOIN custinfo ON (custform_custtype_id=cust_custtype_id) WHERE (cust_id=pCustid); IF (FOUND) THEN _found := TRUE; ELSE -- Check for a Customer Type pattern SELECT custform.* INTO _f FROM custform JOIN custtype ON (custtype_code ~ custform_custtype) JOIN custinfo ON (cust_custtype_id=custtype_id) WHERE ((custform_custtype_id=-1) AND (cust_id=pCustid)); IF (FOUND) THEN _found := TRUE; ELSE _found := FALSE; END IF; END IF; IF (_found) THEN IF ( (pFormType = 'I') AND (_f.custform_invoice_report_name IS NOT NULL) ) THEN RETURN _f.custform_invoice_report_name; ELSIF ( (pFormType = 'C') AND (_f.custform_creditmemo_report_name IS NOT NULL) ) THEN RETURN _f.custform_creditmemo_report_name; ELSIF ( (pFormType = 'S') AND (_f.custform_statement_report_name IS NOT NULL) ) THEN RETURN _f.custform_statement_report_name; ELSIF ( (pFormType = 'Q') AND (_f.custform_quote_report_name IS NOT NULL) ) THEN RETURN _f.custform_quote_report_name; ELSIF ( (pFormType = 'P') AND (_f.custform_packinglist_report_name IS NOT NULL) ) THEN RETURN _f.custform_packinglist_report_name; ELSIF ( (pFormType = 'L') AND (_f.custform_sopicklist_report_name IS NOT NULL) ) THEN RETURN _f.custform_sopicklist_report_name; END IF; END IF; IF (pFormType = 'I') THEN RETURN 'Invoice'; ELSIF (pFormType = 'C') THEN RETURN 'CreditMemo'; ELSIF (pFormType = 'S') THEN RETURN 'Statement'; ELSIF (pFormType = 'Q') THEN RETURN 'Quote'; ELSIF (pFormType = 'P') THEN RETURN 'PackingList-Shipment'; ELSIF (pFormType = 'L') THEN RETURN 'PackingList'; END IF; END; $_$; ALTER FUNCTION public.findcustomerform(integer, character) OWNER TO admin; -- -- Name: finddeferredaccount(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION finddeferredaccount(integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; _accntid INTEGER; BEGIN IF (NOT fetchMetricBool('InterfaceARToGL')) THEN RETURN 0; END IF; -- Check for a Customer Type specific Account SELECT araccnt_deferred_accnt_id INTO _accntid FROM araccnt JOIN custinfo ON (araccnt_custtype_id=cust_custtype_id) WHERE (cust_id=pCustid); IF (FOUND) THEN RETURN _accntid; END IF; -- Check for a Customer Type pattern SELECT araccnt_deferred_accnt_id INTO _accntid FROM araccnt JOIN custtype ON (custtype_code ~ araccnt_custtype) JOIN custinfo ON (cust_custtype_id=custtype_id) WHERE ((araccnt_custtype_id=-1) AND (cust_id=pCustid)); IF (FOUND) THEN RETURN _accntid; END IF; RETURN -1; END; $_$; ALTER FUNCTION public.finddeferredaccount(integer) OWNER TO admin; -- -- Name: findfreightaccount(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION findfreightaccount(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; _accntid INTEGER; BEGIN IF (NOT fetchMetricBool('InterfaceARToGL')) THEN RETURN 0; END IF; -- Check for a Customer Type specific Account SELECT araccnt_freight_accnt_id INTO _accntid FROM araccnt, custinfo WHERE ( (araccnt_custtype_id=cust_custtype_id) AND (cust_id=pCustid) ); IF (FOUND) THEN RETURN _accntid; END IF; -- Check for a Customer Type pattern SELECT araccnt_freight_accnt_id INTO _accntid FROM araccnt, custinfo, custtype WHERE ( (custtype_code ~ araccnt_custtype) AND (cust_custtype_id=custtype_id) AND (araccnt_custtype_id=-1) AND (cust_id=pCustid) ); IF (FOUND) THEN RETURN _accntid; END IF; -- Find the default SELECT metric_value::INTEGER INTO _accntid FROM metric WHERE (metric_name='FreightAccount'); IF (FOUND) THEN RETURN _accntid; END IF; RETURN -1; END; $_$; ALTER FUNCTION public.findfreightaccount(integer) OWNER TO admin; -- -- Name: findperiodend(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION findperiodend(integer) RETURNS date LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCalitemid ALIAS FOR $1; _calType CHAR(1); _calItem RECORD; _start DATE; _loop INTEGER; BEGIN SELECT calhead_type INTO _calType FROM calhead, acalitem WHERE ((acalitem_calhead_id=calhead_id) AND (acalitem_id=pCalitemid)); IF (NOT FOUND) THEN SELECT calhead_type INTO _calType FROM calhead, rcalitem WHERE ((rcalitem_calhead_id=calhead_id) AND (rcalitem_id=pCalitemid)); IF (NOT FOUND) THEN RETURN NULL; END IF; END IF; IF (_calType = 'A') THEN RETURN ( SELECT (findPeriodStart(acalitem_id) + acalitem_periodlength - 1) FROM acalitem WHERE (acalitem_id=pCalitemid) ); ELSIF (_calType = 'R') THEN -- Grab the relative calitem's particulars SELECT rcalitem_periodtype, rcalitem_periodcount INTO _calitem FROM rcalitem WHERE (rcalitem_id=pCalitemid); IF (NOT FOUND) THEN RETURN NULL; END If; -- Grab the origin of the calitem SELECT findPeriodStart(pCalitemid) INTO _start; IF (_start IS NULL) THEN -- If days... ELSIF (_calitem.rcalitem_periodtype = 'D') THEN _start := (_start + _calitem.rcalitem_periodcount - 1); -- If weeks... (gotta be a better way) ELSIF (_calitem.rcalitem_periodtype = 'W') THEN _loop := _calitem.rcalitem_periodcount; WHILE (_loop > 0) LOOP _start := (_start + INTERVAL '1 week'); _loop := (_loop - 1); END LOOP; _start := (_start - 1); -- If months... (gotta be a better way) ELSIF (_calitem.rcalitem_periodtype = 'M') THEN _loop := _calitem.rcalitem_periodcount; WHILE (_loop > 0) LOOP _start := (_start + INTERVAL '1 month'); _loop := (_loop - 1); END LOOP; _start := (_start - 1); -- If years... (gotta be a better way) ELSIF (_calitem.rcalitem_periodtype = 'Y') THEN _loop := _calitem.rcalitem_periodcount; WHILE (_loop > 0) LOOP _start := (_start + INTERVAL '1 year'); _loop := (_loop - 1); END LOOP; _start := (_start - 1); ELSE _start := NULL; END IF; ELSE _start := NULL; END IF; RETURN _start; END; $_$; ALTER FUNCTION public.findperiodend(integer) OWNER TO admin; -- -- Name: findperiodstart(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION findperiodstart(integer) RETURNS date LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCalitemid ALIAS FOR $1; _calType CHAR(1); _calItem RECORD; _start DATE; _loop INTEGER; BEGIN SELECT calhead_type INTO _calType FROM calhead, acalitem WHERE ((acalitem_calhead_id=calhead_id) AND (acalitem_id=pCalitemid)); IF (NOT FOUND) THEN SELECT calhead_type INTO _calType FROM calhead, rcalitem WHERE ((rcalitem_calhead_id=calhead_id) AND (rcalitem_id=pCalitemid)); IF (NOT FOUND) THEN RETURN NULL; END IF; END IF; IF (_calType = 'A') THEN RETURN ( SELECT acalitem_periodstart FROM acalitem WHERE (acalitem_id=pCalitemid) ); ELSIF (_calType = 'R') THEN -- Grab the relative calitem's particulars SELECT rcalitem_offsettype, rcalitem_offsetcount INTO _calitem FROM rcalitem WHERE (rcalitem_id=pCalitemid); IF (NOT FOUND) THEN RETURN NULL; END If; -- Grab the origin of the calitem's parend calhead SELECT findCalendarOrigin(calhead_id) INTO _start FROM calhead, rcalitem WHERE ((rcalitem_calhead_id=calhead_id) AND (rcalitem_id=pCalitemid)); -- If days... IF (_calitem.rcalitem_offsettype = 'D') THEN _start := (_start + _calitem.rcalitem_offsetcount); -- If weeks... ELSIF (_calitem.rcalitem_offsettype = 'W') THEN _start := (_start + (_calitem.rcalitem_offsetcount * 7)); -- If months... (gotta be a better way) ELSIF (_calitem.rcalitem_offsettype = 'M') THEN _loop := _calitem.rcalitem_offsetcount; IF (_loop > 0) THEN WHILE (_loop > 0) LOOP _start := (_start + INTERVAL '1 month'); _loop := _loop - 1; END LOOP; ELSE WHILE (_loop < 0) LOOP _start := (_start - INTERVAL '1 month'); _loop := _loop + 1; END LOOP; END IF; -- If years... (gotta be a better way) ELSIF (_calitem.rcalitem_offsettype = 'Y') THEN _loop := _calitem.rcalitem_offsetcount; IF (_loop > 0) THEN WHILE (_loop > 0) LOOP _start := (_start + INTERVAL '1 year'); _loop := _loop - 1; END LOOP; ELSE WHILE (_loop < 0) LOOP _start := (_start - INTERVAL '1 year'); _loop := _loop + 1; END LOOP; END IF; ELSE _start := NULL; END IF; ELSE _start := NULL; END IF; RETURN _start; END; $_$; ALTER FUNCTION public.findperiodstart(integer) OWNER TO admin; -- -- Name: findprepaidaccount(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION findprepaidaccount(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; _accntid INTEGER; BEGIN IF (NOT fetchMetricBool('InterfaceARToGL')) THEN RETURN 0; END IF; -- Check for a Customer Type specific Account SELECT araccnt_prepaid_accnt_id INTO _accntid FROM araccnt JOIN custinfo ON (araccnt_custtype_id=cust_custtype_id) WHERE (cust_id=pCustid); IF (FOUND) THEN RETURN _accntid; END IF; -- Check for a Customer Type pattern SELECT araccnt_prepaid_accnt_id INTO _accntid FROM araccnt JOIN custtype ON (custtype_code ~ araccnt_custtype) JOIN custinfo ON (cust_custtype_id=custtype_id) WHERE ((araccnt_custtype_id=-1) AND (cust_id=pCustid) ); IF (FOUND) THEN RETURN _accntid; END IF; RETURN -1; END; $_$; ALTER FUNCTION public.findprepaidaccount(integer) OWNER TO admin; -- -- Name: findsalesaccnt(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION findsalesaccnt(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN findSalesAccnt($1, 'IS', $2, NULL, NULL); END; $_$; ALTER FUNCTION public.findsalesaccnt(integer, integer) OWNER TO admin; -- -- Name: findsalesaccnt(integer, text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION findsalesaccnt(integer, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN findSalesAccnt($1, $2, $3, NULL, NULL); END; $_$; ALTER FUNCTION public.findsalesaccnt(integer, text, integer) OWNER TO admin; -- -- Name: findsalesaccnt(integer, text, integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION findsalesaccnt(pid integer, pidtype text, pcustid integer, psaletypeid integer, pshipzoneid integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _s RECORD; BEGIN IF (pidType = 'I') THEN -- Check for a custtype specific rule SELECT salesaccnt_id, CASE WHEN (salesaccnt_warehous_id<>-1) THEN 1 ELSE 0 END + CASE WHEN (salesaccnt_custtype_id<>-1) THEN 2 ELSE 0 END + CASE WHEN (salesaccnt_prodcat_id<>-1) THEN 3 ELSE 0 END + CASE WHEN (salesaccnt_shipzone_id<>-1) THEN 4 ELSE 0 END + CASE WHEN (salesaccnt_saletype_id<>-1) THEN 5 ELSE 0 END AS orderby INTO _s FROM salesaccnt, item, prodcat, custinfo, custtype WHERE ( (salesaccnt_warehous_id=-1) AND (item_prodcat_id=prodcat_id) AND (cust_custtype_id=custtype_id) AND ( (salesaccnt_prodcat='.*') OR ( (salesaccnt_prodcat_id=-1) AND (salesaccnt_prodcat<>'') AND (prodcat_code ~ salesaccnt_prodcat) ) OR ( (salesaccnt_prodcat_id=prodcat_id) ) ) AND ( (salesaccnt_custtype='.*') OR ( (salesaccnt_custtype_id=-1) AND (salesaccnt_custtype<>'') AND (custtype_code ~ salesaccnt_custtype) ) OR ( (salesaccnt_custtype_id=custtype_id) ) ) AND ( (salesaccnt_shipzone_id=-1) OR (salesaccnt_shipzone_id=pShipzoneid) ) AND ( (salesaccnt_saletype_id=-1) OR (salesaccnt_saletype_id=pSaletypeid) ) AND (item_id=pid) AND (cust_id=pCustid) ) ORDER BY orderby DESC, salesaccnt_custtype DESC, salesaccnt_prodcat DESC, salesaccnt_saletype_id DESC, salesaccnt_shipzone_id DESC LIMIT 1; ELSIF (pidType = 'IS') THEN -- Check for a custtype specific rule SELECT salesaccnt_id, CASE WHEN (salesaccnt_warehous_id<>-1) THEN 1 ELSE 0 END + CASE WHEN (salesaccnt_custtype_id<>-1) THEN 2 ELSE 0 END + CASE WHEN (salesaccnt_prodcat_id<>-1) THEN 3 ELSE 0 END + CASE WHEN (salesaccnt_shipzone_id<>-1) THEN 4 ELSE 0 END + CASE WHEN (salesaccnt_saletype_id<>-1) THEN 5 ELSE 0 END AS orderby INTO _s FROM salesaccnt, itemsite, item, prodcat, custinfo, custtype WHERE ( ( (salesaccnt_warehous_id=-1) OR (salesaccnt_warehous_id=itemsite_warehous_id) ) AND (itemsite_item_id=item_id) AND (item_prodcat_id=prodcat_id) AND (cust_custtype_id=custtype_id) AND ( (salesaccnt_prodcat='.*') OR ( (salesaccnt_prodcat_id=-1) AND (salesaccnt_prodcat<>'') AND (prodcat_code ~ salesaccnt_prodcat) ) OR ( (salesaccnt_prodcat_id=prodcat_id) ) ) AND ( (salesaccnt_custtype='.*') OR ( (salesaccnt_custtype_id=-1) AND (salesaccnt_custtype<>'') AND (custtype_code ~ salesaccnt_custtype) ) OR ( (salesaccnt_custtype_id=custtype_id) ) ) AND ( (salesaccnt_shipzone_id=-1) OR (salesaccnt_shipzone_id=pShipzoneid) ) AND ( (salesaccnt_saletype_id=-1) OR (salesaccnt_saletype_id=pSaletypeid) ) AND (itemsite_id=pid) AND (cust_id=pCustid) ) ORDER BY orderby DESC, salesaccnt_custtype DESC, salesaccnt_prodcat DESC, salesaccnt_warehous_id DESC, salesaccnt_saletype_id DESC, salesaccnt_shipzone_id DESC LIMIT 1; ELSE RETURN -2; -- invalid pidType END IF; IF (FOUND) THEN RETURN _s.salesaccnt_id; END IF; RETURN -1; END; $$; ALTER FUNCTION public.findsalesaccnt(pid integer, pidtype text, pcustid integer, psaletypeid integer, pshipzoneid integer) OWNER TO admin; -- -- Name: findspecialfinancial(text, text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION findspecialfinancial(text, text, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUnit ALIAS FOR $1; pType ALIAS FOR $2; pPeriodid ALIAS FOR $3; _value NUMERIC; BEGIN _value := 0.00; IF ('OpenAR' = pType) THEN IF ( pUnit IN ('D','E') ) THEN SELECT SUM( CASE WHEN (aropen_doctype IN ('C', 'R')) THEN ((aropen_amount - aropen_paid) * -1) ELSE (aropen_amount - aropen_paid) END ) INTO _value FROM aropen, period WHERE ((aropen_open) AND (aropen_duedate BETWEEN period_start AND period_end) AND (period_id=pPeriodid)); IF ('E' = pUnit) THEN _value := 0.00 - _value; END IF; END IF; END IF; IF ('OpenAP' = pType) THEN IF ( pUnit IN ('C','E') ) THEN SELECT SUM( CASE WHEN (apopen_doctype='C') THEN ((apopen_amount - apopen_paid) * -1) ELSE (apopen_amount - apopen_paid) END ) INTO _value FROM apopen, period WHERE ((apopen_open) AND (apopen_duedate BETWEEN period_start AND period_end) AND (period_id=pPeriodid)); END IF; END IF; RETURN _value; END; $_$; ALTER FUNCTION public.findspecialfinancial(text, text, integer) OWNER TO admin; -- -- Name: first_agg(anyelement, anyelement); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION first_agg(anyelement, anyelement) RETURNS anyelement LANGUAGE sql STABLE AS $_$ SELECT CASE WHEN $1 IS NULL THEN $2 ELSE $1 END; $_$; ALTER FUNCTION public.first_agg(anyelement, anyelement) OWNER TO admin; -- -- Name: firstline(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION firstline(text) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSource ALIAS FOR $1; _result TEXT := ''; BEGIN SELECT regexp_replace(pSource, E'^(\r?\n)*([^\r\n]*)\r?\n.*', E'\\2') INTO _result; RETURN _result; END; $_$; ALTER FUNCTION public.firstline(text) OWNER TO admin; -- -- Name: fixacl(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION fixacl() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; _count INTEGER := 0; _oldgrp BOOLEAN := false; _objtype TEXT; _table TEXT; _schema TEXT; BEGIN IF EXISTS(SELECT 1 FROM pg_group WHERE groname = 'openmfg') THEN _oldgrp := true; END IF; FOR _r IN SELECT relname, nspname, relkind, CASE relkind WHEN 'r' THEN 1 WHEN 'v' THEN 2 WHEN 'S' THEN 3 ELSE 4 END AS seq FROM pg_catalog.pg_class c, pg_namespace n WHERE ((n.oid=c.relnamespace) AND (nspname in ('public', 'api') OR nspname in (SELECT pkghead_name FROM pkghead)) AND (relkind in ('S', 'r', 'v'))) ORDER BY seq LOOP _schema := quote_ident(_r.nspname); _table := quote_ident(_r.relname); RAISE DEBUG '%.%', _schema, _table; IF (_oldgrp) THEN EXECUTE 'REVOKE ALL ON ' || _schema || '.' || _table || ' FROM openmfg;'; END IF; EXECUTE 'REVOKE ALL ON ' || _schema || '.' || _table || ' FROM PUBLIC;'; EXECUTE 'GRANT ALL ON ' || _schema || '.' || _table || ' TO GROUP xtrole;'; _count := _count + 1; _objtype := CASE _r.relkind WHEN 'S' THEN 'SEQUENCE' WHEN 'r' THEN 'TABLE' WHEN 'v' THEN 'VIEW' ELSE NULL END; IF (_objtype IS NOT NULL) THEN BEGIN EXECUTE 'ALTER ' || _objtype || ' ' || _schema || '.' || _table || ' OWNER TO admin;'; EXCEPTION WHEN OTHERS THEN RAISE WARNING 'Could not change ownership of %.% to admin', _schema, _table; END; END IF; END LOOP; RETURN _count; END; $$; ALTER FUNCTION public.fixacl() OWNER TO admin; -- -- Name: formatabachecks(integer, integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatabachecks(integer, integer, text) RETURNS SETOF achline LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pbankaccntid ALIAS FOR $1; -- all unprinted checks for this bankaccnt pcheckheadid ALIAS FOR $2; -- but if 2nd arg not null then just 1 check penckey ALIAS FOR $3; _bank RECORD; _batchcount INTEGER := 0; _batchdate DATE; _check RECORD; _vendnumber TEXT; _vendname TEXT; _filenum TEXT; _prevsec TEXT; _row achline%ROWTYPE; _totalcr NUMERIC := 0; _totaldb NUMERIC := 0; _detailcount INTEGER := 0; -- count of type 1 entries _vendbsb TEXT; BEGIN -- General notes: -- Numeric values are formatted using RPAD(TO_CHAR(#, '0..0SG', #)). -- TO_CHAR(#, ...) (at least in the default server locale) puts a space at -- the beginning of the string for numbers >= 0 and '-' for numbers < 0. -- 'SG' pushes the sign char to the end, then RPAD cuts it off. -- This whole thing is for Australian bank transactions only, and generates entries for an ABA file. -- Currently restricted to checks to Vendor; there's no support for checks to -- customers or tax authorities, or for debits or corrections. -- This function has been adapted from the US-centric ACH formatACHChecks function. IF (NOT fetchMetricBool('ACHEnabled')) THEN RAISE EXCEPTION 'Cannot format the ABA file because the system is not configured for ABA file generation.'; END IF; IF (LENGTH(COALESCE(penckey, '')) <= 0) THEN RAISE EXCEPTION 'Cannot format the ABA file because there is no encryption key.'; END IF; SELECT * INTO _bank FROM bankaccnt WHERE (bankaccnt_id=pbankaccntid); IF (NOT FOUND) THEN RAISE EXCEPTION 'Could not find the bank information to create the ABA file.'; ELSIF (NOT _bank.bankaccnt_ach_enabled) THEN RAISE EXCEPTION 'Cannot format the ABA file because the Bank Account % is not configured for ABA transactions.', _bank.bankaccnt_name; ELSIF (LENGTH(COALESCE(_bank.bankaccnt_routing, '')) <= 0) THEN RAISE EXCEPTION 'Cannot format the ABA file because the Bank Account % has no BSB number.', _bank.bankaccnt_name; END IF; -- Check the BSB number is in the right format and then re-format for output. -- Valid format is \d{3}-\d{3}|\d{6}000 IF (_bank.bankaccnt_routing ~ E'^(\\d{3})(?:-(?=\\d{3}$)|(?=\\d{3}0{3}$))(\\d{3})(0{3})?$') THEN _bank.bankaccnt_routing := regexp_replace( _bank.bankaccnt_routing, E'^(\\d{3})(?:-(?=\\d{3}$)|(?=\\d{3}0{3}$))(\\d{3})(0{3})?$', E'\\1-\\2' ); ELSE RAISE EXCEPTION 'Cannot format the ABA file because the Bank Account % has an invalid BSB number.', _bank.bankaccnt_name; END IF; _filenum := LPAD(fetchNextNumber('ACHBatch'), 8, '0'); IF (COALESCE(_bank.bankaccnt_ach_lastdate,startOfTime()) < CURRENT_DATE OR _bank.bankaccnt_ach_lastfileid IS NULL) THEN _bank.bankaccnt_ach_lastfileid = '0'; ELSIF (_bank.bankaccnt_ach_lastfileid = '9') THEN _bank.bankaccnt_ach_lastfileid = 'A'; ELSIF (_bank.bankaccnt_ach_lastfileid = 'Z') THEN RAISE EXCEPTION 'Cannot write % check % to an ABA file because too many files have been written for this bank already today.', _bank.bankaccnt_name, _check.checkhead_number; ELSE _bank.bankaccnt_ach_lastfileid = CHR(ASCII(_bank.bankaccnt_ach_lastfileid) + 1); END IF; _row.achline_checkhead_id := NULL; _row.achline_batch := _filenum; _row.achline_type := 'HEADER'; _row.achline_value := RPAD( RPAD('0',18) -- Record Type 0 blank filled with 17 spaces || '01' -- Reel sequence number || RPAD(_bank.bankaccnt_bankname,3) -- Approved financial instition abbreviation. || RPAD('',7) -- blank filled || RPAD(fetchMetricText('ACHCompanyName'), 26) -- Name of user supplying ABA file || LPAD(fetchMetricText('ACHCompanyId'),6) -- User identification number APCA issued || RPAD('PAYMENT',12) -- description of entries on file -- currently only use payment description || TO_CHAR(CURRENT_DATE, 'DDMMYY'), -- date to be processed 120 -- blank filled to 120 characters ); RETURN NEXT _row; FOR _check IN SELECT * FROM checkhead JOIN vendinfo ON (checkhead_recip_type='V' AND checkhead_recip_id=vend_id AND vend_ach_enabled) JOIN curr_symbol ON (checkhead_curr_id=curr_id) LEFT OUTER JOIN crmacct ON (crmacct_vend_id=vend_id) WHERE ((checkhead_bankaccnt_id=pbankaccntid) AND (checkhead_amount > 0) AND (checkhead_id=pcheckheadid OR pcheckheadid IS NULL) AND NOT checkhead_posted AND NOT checkhead_replaced AND NOT checkhead_deleted AND NOT checkhead_void AND NOT checkhead_printed AND (LENGTH(COALESCE(checkhead_ach_batch,'')) <= 0) AND (curr_abbr='AUD')) ORDER BY checkhead_checkdate, vend_name LOOP IF (COALESCE(_check.checkhead_number, -1) <= 0 AND _bank.bankaccnt_ach_genchecknum) THEN _check.checkhead_number := fetchNextCheckNumber(_check.checkhead_bankaccnt_id); END IF; -- Although a crmacct record is not required for used in this function -- this code is retained for consistancy with the original formatachchecks function. IF (_check.crmacct_id IS NULL) THEN RAISE NOTICE 'Vendor % does not have a corresponding crmacct record.', _check.checkhead_recip_id; ELSIF (_check.crmacct_type IS NULL) THEN RAISE NOTICE 'crmacct for vendor % does not have a valid crmacct_type.', _check.checkhead_recip_id; END IF; _vendnumber := CASE WHEN _check.vend_ach_use_vendinfo THEN _check.vend_number ELSE _check.vend_ach_indiv_number END; _vendname := CASE WHEN _check.vend_ach_use_vendinfo THEN _check.vend_name ELSE _check.vend_ach_indiv_name END; IF (COALESCE(_check.vend_ach_routingnumber, '') = '') THEN RAISE EXCEPTION 'Cannot write % check % to an ABA file because the BSB number for % has not been supplied.', _bank.bankaccnt_name, _check.checkhead_number, _vendnumber; ELSIF (COALESCE(_check.vend_ach_accntnumber, '') = '') THEN RAISE EXCEPTION 'Cannot write % check % to an ABA file because the account number for % has not been supplied.', _bank.bankaccnt_name, _check.checkhead_number, _vendnumber; END IF; _check.vend_ach_routingnumber := decrypt(setbytea(_check.vend_ach_routingnumber), setbytea(penckey), 'bf'); _check.vend_ach_accntnumber := decrypt(setbytea(_check.vend_ach_accntnumber), setbytea(penckey), 'bf'); -- Check the BSB number is in the right format and then re-format for output. -- Valid format is \d{3}-\d{3}|\d{6}000 IF (formatbytea(_check.vend_ach_routingnumber) ~ E'^(\\d{3})(?:-(?=\\d{3}$)|(?=\\d{3}0{3}$))(\\d{3})(0{3})?$') THEN _vendbsb := regexp_replace( formatbytea(_check.vend_ach_routingnumber), E'^(\\d{3})(?:-(?=\\d{3}$)|(?=\\d{3}0{3}$))(\\d{3})(0{3})?$', E'\\1-\\2' ); ELSE RAISE EXCEPTION 'Cannot write % check % to an ABA file because the BSB number for % is not valid.', _bank.bankaccnt_name, _check.checkhead_number, _vendnumber; END IF; _row.achline_checkhead_id := _check.checkhead_id; _row.achline_batch := _filenum; _row.achline_type := 'DETAIL'; _totaldb := _totaldb + _check.checkhead_amount; -- Total debits for balancing entry _detailcount := _detailcount + 1; -- Detail record counter (type 1) _totalcr := _totalcr + _check.checkhead_amount; -- Total credits from payments _row.achline_value := RPAD('1' -- record type 1 || _vendbsb -- vendor BSB # || LPAD(formatbytea(_check.vend_ach_accntnumber), 9) -- vendor account no. ||' ' -- withholding tax indicator ||'50' -- transaction code, this should be calculated. || LPAD(to_char(_check.checkhead_amount,'FM99999999V99'),10,'0') -- amount || RPAD(_vendname, 32) -- vendor name || RPAD('Deposit',8) || RPAD('#' , 2) || LPAD (_filenum,8,' ') -- Lodgement Reference || _bank.bankaccnt_routing -- BSB # || RPAD(_bank.bankaccnt_accntnumber, 9) -- company account number || RPAD(fetchMetricText('ACHCompanyName'), 16) -- company account name || LPAD('', 8, '0'), -- Witholding Tax Amount 120 -- line width ); RETURN NEXT _row; UPDATE checkhead SET checkhead_ach_batch=_filenum, checkhead_number=_check.checkhead_number WHERE (checkhead_id=_check.checkhead_id); END LOOP; IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot write an ABA file for % because there are no checks pending in AUD for EFT-enabled Vendors.', _bank.bankaccnt_name; END IF; -- Place a final balancing detail record. -- Check that the balancing record actually balances. IF (_totalcr != _totaldb) THEN RAISE EXCEPTION 'Cannot write an ABA file for % because the total credits: % does not equal the total debits: %, file will not balance.', _bank.bankaccnt_name, _totalcr, _totaldb; END IF; _detailcount := _detailcount + 1; _row.achline_checkhead_id := NULL; _row.achline_batch := _filenum; _row.achline_type := 'BALANCING'; -- keep in sync with the other batchcontrol record format above -- THE FOLLOWING IS THE DEBIT BALANCING RECORD _row.achline_value := RPAD('1' -- record type 1 || _bank.bankaccnt_routing -- Austalian BSB # || LPAD(_bank.bankaccnt_accntnumber, 9) -- company account no. || ' ' -- withholding tax indicator || '13' -- transaction code || to_char(_totaldb,'FM09999999V99') -- the balancing amount || RPAD(fetchMetricText('ACHCompanyName'), 32) -- company name || RPAD('DIRECT DEPOSIT',18) || _bank.bankaccnt_routing -- Austalian BSB # || RPAD(_bank.bankaccnt_accntnumber, 9) -- company account number || RPAD(fetchMetricText('ACHCompanyName'), 16) -- company account name || LPAD('', 8, '0'), -- Witholding Tax Amount 120 -- line width ); RETURN NEXT _row; RAISE DEBUG 'formatABAChecks building TRAILER with _totaldb %, _totalcr %, _detailcount %', _totaldb, _totalcr, _detailcount; -- file control record _row.achline_checkhead_id := NULL; _row.achline_batch := _filenum; _row.achline_type := 'TRAILER'; _row.achline_value := RPAD('7' -- record type 7 || RPAD('999-999', 7) -- BSB format filler || RPAD('' , 12) -- blank || LPAD(to_char((_totaldb - _totalcr),'FM09999999V99'),10,'0') -- net total amount || LPAD(to_char(_totalcr, 'FM09999999V99'),10,'0') -- total credit amount || LPAD(to_char(_totaldb, 'FM09999999V99'),10,'0') -- total debit amount || RPAD('', 24) -- blank || RPAD(to_char(_detailcount, 'FM000000'), 6,'0'), -- count of type 1 records 120 -- blank fill ); RETURN NEXT _row; UPDATE bankaccnt SET bankaccnt_ach_lastdate=CURRENT_DATE, bankaccnt_ach_lastfileid=_bank.bankaccnt_ach_lastfileid WHERE (bankaccnt_id=_bank.bankaccnt_id); RETURN; END; $_$; ALTER FUNCTION public.formatabachecks(integer, integer, text) OWNER TO admin; -- -- Name: formatachchecks(integer, integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatachchecks(integer, integer, text) RETURNS SETOF achline LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pbankaccntid ALIAS FOR $1; -- all unprinted checks for this bankaccnt pcheckheadid ALIAS FOR $2; -- but if 2nd arg not null then just 1 check penckey ALIAS FOR $3; _bank RECORD; _batchcount INTEGER := 0; _batchcr NUMERIC := 0; _batchdate DATE; _batchdb NUMERIC := 0; _batchhash INTEGER := 0; _check RECORD; _ccdnumber TEXT; _ccdname TEXT; _entrycount INTEGER := 0; _filenum TEXT; _prevsec TEXT; _row achline%ROWTYPE; _rowcount INTEGER := 0; _sec TEXT; _serviceclass TEXT := '200'; -- 220 = credits, 225 = debits, 200 = mixed _totalcr NUMERIC := 0; _totaldb NUMERIC := 0; _totalentrycnt INTEGER := 0; _totalhash INTEGER := 0; _transactionprefix TEXT; BEGIN -- General notes: -- Numeric values are formatted using RPAD(TO_CHAR(#, '0..0SG', #)). -- TO_CHAR(#, ...) (at least in the default server locale) puts a space at -- the beginning of the string for numbers >= 0 and '-' for numbers < 0. -- 'SG' pushes the sign char to the end, then RPAD cuts it off. -- This whole thing is US-centric, as that's where the NACHA is. -- Currently restricted to checks to Vendor; there's no support for checks to -- customers or tax authorities, or for debits or corrections. IF (NOT fetchMetricBool('ACHEnabled')) THEN RAISE EXCEPTION 'Cannot format the ACH file because the system is not configured for ACH file generation.'; END IF; IF (LENGTH(COALESCE(penckey, '')) <= 0) THEN RAISE EXCEPTION 'Cannot format the ACH file because there is no encryption key.'; END IF; SELECT * INTO _bank FROM bankaccnt WHERE (bankaccnt_id=pbankaccntid); IF (NOT FOUND) THEN RAISE EXCEPTION 'Could not find the bank information to create the ACH file.'; ELSIF (NOT _bank.bankaccnt_ach_enabled) THEN RAISE EXCEPTION 'Cannot format the ACH file because the Bank Account % is not configured for ACH transactions.', _bank.bankaccnt_name; ELSIF (LENGTH(COALESCE(_bank.bankaccnt_routing, '')) <= 0) THEN RAISE EXCEPTION 'Cannot format the ACH file because the Bank Account % has no routing number.', _bank.bankaccnt_name; END IF; _filenum := LPAD(fetchNextNumber('ACHBatch'), 8, '0'); IF (COALESCE(_bank.bankaccnt_ach_lastdate,startOfTime()) < CURRENT_DATE OR _bank.bankaccnt_ach_lastfileid IS NULL) THEN _bank.bankaccnt_ach_lastfileid = '0'; ELSIF (_bank.bankaccnt_ach_lastfileid = '9') THEN _bank.bankaccnt_ach_lastfileid = 'A'; ELSIF (_bank.bankaccnt_ach_lastfileid = 'Z') THEN RAISE EXCEPTION 'Cannot write % check % to an ACH file because too many files have been written for this bank already today.', _bank.bankaccnt_name, _check.checkhead_number; ELSE _bank.bankaccnt_ach_lastfileid = CHR(ASCII(_bank.bankaccnt_ach_lastfileid) + 1); END IF; _rowcount := _rowcount + 1; _row.achline_checkhead_id := NULL; _row.achline_batch := _filenum; _row.achline_type := 'FILEHEADER'; _row.achline_value := RPAD('1' || '01' || RPAD(CASE WHEN _bank.bankaccnt_ach_desttype = 'B' THEN ' ' || _bank.bankaccnt_routing WHEN _bank.bankaccnt_ach_desttype = 'F' THEN ' ' || _bank.bankaccnt_ach_fed_dest ELSE _bank.bankaccnt_ach_dest END, 10) || RPAD(CASE WHEN _bank.bankaccnt_ach_origintype = 'B' THEN ' ' || _bank.bankaccnt_routing WHEN _bank.bankaccnt_ach_origintype = 'I' THEN formatAchCompanyId() ELSE _bank.bankaccnt_ach_origin END, 10) || TO_CHAR(CURRENT_DATE, 'YYMMDD') || TO_CHAR(CURRENT_TIMESTAMP, 'HH24MM') || UPPER(_bank.bankaccnt_ach_lastfileid) || '094' || '10' || '1' || RPAD(CASE WHEN _bank.bankaccnt_ach_desttype = 'B' THEN _bank.bankaccnt_bankname WHEN _bank.bankaccnt_ach_desttype = 'F' THEN 'Federal Reserve' ELSE _bank.bankaccnt_ach_destname END, 23) || RPAD(CASE WHEN _bank.bankaccnt_ach_origintype = 'B' THEN ' ' || _bank.bankaccnt_bankname WHEN _bank.bankaccnt_ach_origintype = 'I' THEN fetchMetricText('ACHCompanyName') ELSE _bank.bankaccnt_ach_originname END, 23) || RPAD(_filenum, 8), 94); RETURN NEXT _row; FOR _check IN SELECT * FROM checkhead JOIN vendinfo ON (checkhead_recip_type='V' AND checkhead_recip_id=vend_id AND vend_ach_enabled) JOIN curr_symbol ON (checkhead_curr_id=curr_id) LEFT OUTER JOIN crmacct ON (crmacct_vend_id=vend_id) WHERE ((checkhead_bankaccnt_id=pbankaccntid) AND (checkhead_amount > 0) AND (checkhead_id=pcheckheadid OR pcheckheadid IS NULL) AND NOT checkhead_posted AND NOT checkhead_replaced AND NOT checkhead_deleted AND NOT checkhead_void AND NOT checkhead_printed AND (LENGTH(COALESCE(checkhead_ach_batch,'')) <= 0) AND (curr_abbr='USD')) ORDER BY checkhead_checkdate, vend_name LOOP IF (COALESCE(_check.checkhead_number, -1) <= 0 AND _bank.bankaccnt_ach_genchecknum) THEN _check.checkhead_number := fetchNextCheckNumber(_check.checkhead_bankaccnt_id); END IF; _prevsec := _sec; IF (_check.crmacct_type = 'I') THEN _sec := 'PPD'; ELSE _sec := 'CCD'; IF (_check.crmacct_id IS NULL) THEN RAISE NOTICE 'Vendor % does not have a corresponding crmacct record.', _check.checkhead_recip_id; ELSIF (_check.crmacct_type IS NULL) THEN RAISE NOTICE 'crmacct for vendor % does not have a valid crmacct_type.', _check.checkhead_recip_id; END IF; END IF; _ccdnumber := CASE WHEN _check.vend_ach_use_vendinfo THEN _check.vend_number ELSE _check.vend_ach_indiv_number END; _ccdname := CASE WHEN _check.vend_ach_use_vendinfo THEN _check.vend_name ELSE _check.vend_ach_indiv_name END; IF (COALESCE(_check.vend_ach_routingnumber, '') = '') THEN RAISE EXCEPTION 'Cannot write % check % to an ACH file because the routing number for % has not been supplied.', _bank.bankaccnt_name, _check.checkhead_number, _ccdnumber; ELSIF (COALESCE(_check.vend_ach_accntnumber, '') = '') THEN RAISE EXCEPTION 'Cannot write % check % to an ACH file because the account number for % has not been supplied.', _bank.bankaccnt_name, _check.checkhead_number, _ccdnumber; END IF; _check.vend_ach_routingnumber := decrypt(setbytea(_check.vend_ach_routingnumber), setbytea(penckey), 'bf'); _check.vend_ach_accntnumber := decrypt(setbytea(_check.vend_ach_accntnumber), setbytea(penckey), 'bf'); _transactionprefix := CASE WHEN (_check.vend_ach_accnttype = 'K') THEN '2' WHEN (_check.vend_ach_accnttype = 'C') THEN '3' END; -- create separate batches for each check date and for PPD vs CCD IF (COALESCE(_batchdate, startOfTime()) != _check.checkhead_checkdate OR (_prevsec != _sec)) THEN IF (_batchcount > 0) THEN _rowcount := _rowcount + 1; _row.achline_checkhead_id := NULL; _row.achline_batch := _filenum; _row.achline_type := 'BATCHCONTROL'; -- keep in sync with the other batchcontrol record format below _row.achline_value := RPAD('8' || _serviceclass || RPAD(TO_CHAR(_entrycount, '000000SG'), 6) || RPAD(TO_CHAR(_batchhash % 10000000000, '0000000000SG'), 10) || RPAD(TO_CHAR(_batchdb, '0000000000V99SG'), 12) || RPAD(TO_CHAR(_batchcr, '0000000000V99SG'), 12) || RPAD(formatAchCompanyId(), 10) || RPAD(' ', 19) || RPAD(' ', 6) || RPAD(_bank.bankaccnt_routing, 8) || RPAD(TO_CHAR(_batchcount, '0000000SG'), 7), 94); RETURN NEXT _row; END IF; _batchhash := 0; _batchcr := 0; _batchdb := 0; _batchdate := _check.checkhead_checkdate; _entrycount := 0; _rowcount := _rowcount + 1; _batchcount := _batchcount + 1; _row.achline_checkhead_id := NULL; _row.achline_batch := _filenum; _row.achline_type := 'BATCHHEADER'; -- effective entry date = 1 or 2 banking days after the banking day -- of processing (the following accounts for weekends but not holidays) _row.achline_value := RPAD('5' || _serviceclass || RPAD(fetchMetricText('ACHCompanyName'), 16) || RPAD('', 20) -- TODO: find a use || RPAD(formatAchCompanyId(), 10) || _sec || RPAD('xTuple ERP', 10) || TO_CHAR(_check.checkhead_checkdate, 'YYMMDD') || TO_CHAR(CURRENT_DATE + COALESCE(_bank.bankaccnt_ach_leadtime,1) + CASE WHEN EXTRACT(DOW FROM CURRENT_DATE) = 5 THEN 2 WHEN EXTRACT(DOW FROM CURRENT_DATE) = 6 THEN 1 ELSE 0 END, 'YYMMDD') || RPAD('', 3) || '1' || RPAD(_bank.bankaccnt_routing, 8) || RPAD(TO_CHAR(_batchcount, '0000000SG'), 7), 94); RETURN NEXT _row; END IF; _row.achline_checkhead_id := _check.checkhead_id; _row.achline_batch := _filenum; _row.achline_type := _sec; IF (_sec = 'CCD' OR _sec = 'PPD') THEN _rowcount := _rowcount + 1; _entrycount := _entrycount + 1; _totalentrycnt := _totalentrycnt + 1; _batchhash := _batchhash + CAST(SUBSTRING(_bank.bankaccnt_routing FOR 8) AS INTEGER); _totalhash := _totalhash + CAST(SUBSTRING(_bank.bankaccnt_routing FOR 8) AS INTEGER); _batchdb := _batchdb + _check.checkhead_amount; _totaldb := _totaldb + _check.checkhead_amount; _row.achline_value := RPAD('6' || _transactionprefix || '7' -- debit || RPAD(_bank.bankaccnt_routing, 9) -- 2 fields || RPAD(_bank.bankaccnt_accntnumber, 17) || RPAD(TO_CHAR(_check.checkhead_amount, '00000000V99SG'), 10) || RPAD(fetchMetricText('ACHCompanyId'), 15) || RPAD(fetchMetricText('ACHCompanyName'), 22) || RPAD(TO_CHAR(_check.checkhead_id % 100, '00SG'), 2) -- last 2 digits of checkhead_id || '0' || RPAD(_bank.bankaccnt_routing, 9) -- split field || RPAD(TO_CHAR(_entrycount, '000000SG'), 15-9), 94); RETURN NEXT _row; _rowcount := _rowcount + 1; _entrycount := _entrycount + 1; _totalentrycnt := _totalentrycnt + 1; _batchhash := _batchhash + CAST(SUBSTRING(formatbytea(_check.vend_ach_routingnumber) FOR 8) AS INTEGER); _totalhash := _totalhash + CAST(SUBSTRING(formatbytea(_check.vend_ach_routingnumber) FOR 8) AS INTEGER); _totalcr := _totalcr + _check.checkhead_amount; _batchcr := _batchcr + _check.checkhead_amount; _row.achline_value := RPAD('6' || _transactionprefix || '2' -- credit || RPAD(formatbytea(_check.vend_ach_routingnumber), 9) -- 2 fields || RPAD(formatbytea(_check.vend_ach_accntnumber), 17) || RPAD(TO_CHAR(_check.checkhead_amount, '00000000V99SG'), 10) || RPAD(_ccdnumber, 15) || RPAD(_ccdname, 22) || RPAD(TO_CHAR(_check.checkhead_id % 100, '00SG'), 2) -- last 2 digits of checkhead_id || '0' || RPAD(_bank.bankaccnt_routing, 9) -- split field || RPAD(TO_CHAR(_entrycount, '000000SG'), 15-9), 94); RETURN NEXT _row; ELSE RAISE EXCEPTION 'Cannot write % check % to an ACH file because % is not a supported SEC code.', _bank.bankaccnt_name, _check.checkhead_number, _sec; END IF; UPDATE checkhead SET checkhead_ach_batch=_filenum, checkhead_number=_check.checkhead_number WHERE (checkhead_id=_check.checkhead_id); END LOOP; IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot write an ACH file for % because there are no checks pending in USD for ACH-enabled Vendors.', _bank.bankaccnt_name; END IF; -- place a final batch control record IF (_batchcount > 0) THEN _rowcount := _rowcount + 1; _row.achline_checkhead_id := NULL; _row.achline_batch := _filenum; _row.achline_type := 'BATCHCONTROL'; -- keep in sync with the other batchcontrol record format above _row.achline_value := RPAD('8' || _serviceclass || RPAD(TO_CHAR(_entrycount, '000000SG'), 6) || RPAD(TO_CHAR(_batchhash % 10000000000, '0000000000SG'), 10) || RPAD(TO_CHAR(_batchdb, '0000000000V99SG'), 12) || RPAD(TO_CHAR(_batchcr, '0000000000V99SG'), 12) || RPAD(formatAchCompanyId(), 10) || RPAD(' ', 19) || RPAD(' ', 6) || RPAD(_bank.bankaccnt_routing, 8) || RPAD(TO_CHAR(_batchcount, '0000000SG'), 7), 94); RETURN NEXT _row; END IF; -- and end with a file control record _rowcount := _rowcount + 1; _row.achline_checkhead_id := NULL; _row.achline_batch := _filenum; _row.achline_type := 'FILECONTROL'; _row.achline_value := RPAD('9' || RPAD(TO_CHAR(_batchcount, '000000SG'), 6) || RPAD(TO_CHAR(_rowcount, '000000SG'), 6) || RPAD(TO_CHAR(_totalentrycnt, '00000000SG'), 8) || RPAD(TO_CHAR(_totalhash % 10000000000, '0000000000SG'), 10) || RPAD(TO_CHAR(_totaldb, '0000000000V99SG'), 12) || RPAD(TO_CHAR(_totalcr, '0000000000V99SG'), 12) || RPAD('', 39), 94); RETURN NEXT _row; -- file must be a multiple of 10 lines long _row.achline_checkhead_id := NULL; _row.achline_batch := _filenum; _row.achline_type := 'BLOCKFILL'; WHILE (_rowcount % 10 > 0) LOOP _rowcount := _rowcount + 1; _row.achline_value := RPAD('99999999999999999999' || '99999999999999999999' || '99999999999999999999' || '99999999999999999999' || '99999999999999999999', 94); RETURN NEXT _row; END LOOP; UPDATE bankaccnt SET bankaccnt_ach_lastdate=CURRENT_DATE, bankaccnt_ach_lastfileid=_bank.bankaccnt_ach_lastfileid WHERE (bankaccnt_id=_bank.bankaccnt_id); RETURN; END; $_$; ALTER FUNCTION public.formatachchecks(integer, integer, text) OWNER TO admin; -- -- Name: formatachcompanyid(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatachcompanyid() RETURNS text LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN CASE WHEN fetchMetricText('ACHCompanyIdType') = 'D' THEN '3' WHEN fetchMetricText('ACHCompanyIdType') = 'E' THEN '1' WHEN fetchMetricText('ACHCompanyIdType') = 'O' THEN '9' END || CASE WHEN fetchMetricText('ACHCompanyIdType') = 'D' OR fetchMetricText('ACHCompanyIdType') = 'E' THEN REPLACE(fetchMetricText('ACHCompanyId'), '-', '') ELSE fetchMetricText('ACHCompanyId') END; END; $$; ALTER FUNCTION public.formatachcompanyid() OWNER TO admin; -- -- Name: formataddr(text, text, text, text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formataddr(text, text, text, text, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE f_addr1 ALIAS FOR $1; f_addr2 ALIAS FOR $2; f_addr3 ALIAS FOR $3; csz ALIAS FOR $4; line ALIAS FOR $5; BEGIN RETURN formatAddr(f_addr1, f_addr2, f_addr3, csz, '', line); END; $_$; ALTER FUNCTION public.formataddr(text, text, text, text, integer) OWNER TO admin; -- -- Name: formataddr(text, text, text, text, text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formataddr(text, text, text, text, text, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE f_addr1 ALIAS FOR $1; f_addr2 ALIAS FOR $2; f_addr3 ALIAS FOR $3; csz ALIAS FOR $4; country ALIAS FOR $5; line ALIAS FOR $6; i int:=0; BEGIN IF (LENGTH(TRIM(both from f_addr1)) > 0) THEN i:=i+1; END IF; IF (i=line) THEN RETURN f_addr1; END IF; IF (LENGTH(TRIM(both from f_addr2)) > 0) THEN i:=i+1; END IF; IF (i=line) THEN RETURN f_addr2; END IF; IF (LENGTH(TRIM(both from f_addr3)) > 0) THEN i:=i+1; END IF; IF (i=line) THEN RETURN f_addr3; END IF; IF (LENGTH(TRIM(both from csz)) > 0) THEN i:=i+1; END IF; IF (i=line) THEN RETURN csz; END IF; IF (LENGTH(TRIM(both from country)) > 0) THEN i:=i+1; END IF; IF (i=line) THEN RETURN country; END IF; RETURN ' '; END; $_$; ALTER FUNCTION public.formataddr(text, text, text, text, text, integer) OWNER TO admin; -- -- Name: formataddr(text, text, text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formataddr(text, text, text, text, text) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE f_addr1 ALIAS FOR $1; f_addr2 ALIAS FOR $2; f_addr3 ALIAS FOR $3; csz ALIAS FOR $4; country ALIAS FOR $5; addr TEXT:=''; BEGIN IF (LENGTH(TRIM(both from f_addr1)) > 0) THEN addr:=f_addr1; END IF; IF (LENGTH(TRIM(both from f_addr2)) > 0) THEN IF (LENGTH(TRIM(both from addr)) > 0) THEN addr:=addr || E'\n'; END IF; addr:=addr || f_addr2; END IF; IF (LENGTH(TRIM(both from f_addr3)) > 0) THEN IF (LENGTH(TRIM(both from addr)) > 0) THEN addr:=addr || E'\n'; END IF; addr:=addr || f_addr3; END IF; IF (LENGTH(TRIM(both from csz)) > 0) THEN IF (LENGTH(TRIM(both from addr)) > 0) THEN addr:=addr || E'\n'; END IF; addr:=addr || csz; END IF; IF (LENGTH(TRIM(both from country)) > 0) THEN IF (LENGTH(TRIM(both from addr)) > 0) THEN addr:=addr || E'\n'; END IF; addr:=addr || country; END IF; RETURN addr; END; $_$; ALTER FUNCTION public.formataddr(text, text, text, text, text) OWNER TO admin; -- -- Name: formataddr(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formataddr(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAddrId ALIAS FOR $1; _return TEXT; BEGIN -- US conventions SELECT formatAddr(addr_line1, addr_line2, addr_line3, addr_city || ', ' || addr_state || ' ' || addr_postalcode, addr_country) INTO _return FROM addr WHERE (addr_id=pAddrId); RETURN _return; END; $_$; ALTER FUNCTION public.formataddr(integer) OWNER TO admin; -- -- Name: formatboolyn(boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatboolyn(boolean) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBool ALIAS FOR $1; BEGIN IF (pBool) THEN RETURN 'Yes'; ELSE RETURN 'No'; END IF; END; $_$; ALTER FUNCTION public.formatboolyn(boolean) OWNER TO admin; -- -- Name: formatbooseq(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatbooseq(integer, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pBooitemSeqId ALIAS FOR $2; _result TEXT; BEGIN IF (fetchMetricBool('Routings')) THEN SELECT booitem_seqnumber::text INTO _result FROM xtmfg.booitem(pItemid) WHERE (booitem_seq_id=pBooitemSeqId); RETURN _result; ELSE RETURN NULL; END IF; END; $_$; ALTER FUNCTION public.formatbooseq(integer, integer) OWNER TO admin; -- -- Name: formatbytea(bytea); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatbytea(bytea) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pField ALIAS FOR $1; output_field TEXT; BEGIN output_field := pField; RETURN output_field; END; $_$; ALTER FUNCTION public.formatbytea(bytea) OWNER TO admin; -- -- Name: formatccdashes(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatccdashes(text, text) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCCard ALIAS FOR $1; pCCardType ALIAS FOR $2; _returnCard text; card_length integer; BEGIN IF (pCCardType = 'A') THEN _returnCard := pCCard; RETURN _returnCard; END IF; card_length := length(pCcard); if (card_length = 16) THEN _returnCard := substr(pCCard, 1, 4) || '-' || substr(pCCard, 5, 4) || '-' || substr(pCCard, 9, 4) || '-' || substr(pCCard, 13, 4); ELSE _returnCard := substr(pCCard, 1, 4) || '-' || substr(pCCard, 5, 4) || '-' || substr(pCCard, 9, 4) || '-' || substr(pCCard, 13, 1); END IF; RETURN _returnCard; END; $_$; ALTER FUNCTION public.formatccdashes(text, text) OWNER TO admin; -- -- Name: formatccnumber(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatccnumber(text) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCcardnum ALIAS FOR $1; card_length INTEGER; output_cardnum TEXT; BEGIN card_length := length(pCcardnum); IF (card_length = 13) THEN output_cardnum := '*********' || substr(pCcardnum, 10, 4); END IF; IF (card_length = 14) THEN output_cardnum := '**********' || substr(pCcardnum, 11, 4); END IF; IF (card_length = 15) THEN output_cardnum := '***********' || substr(pCcardnum, 12, 4); END IF; IF (card_length = 16) THEN output_cardnum := '************' || substr(pCcardnum, 13, 4); END IF; RETURN output_cardnum; END; $_$; ALTER FUNCTION public.formatccnumber(text) OWNER TO admin; -- -- Name: formatccnumber(bytea); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatccnumber(bytea) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCcardnum ALIAS FOR $1; card_length INTEGER; output_cardnum TEXT; BEGIN card_length := length(pCcardnum); IF (card_length = 13) THEN output_cardnum := '*********' || substr(pCcardnum, 10, 4); END IF; IF (card_length = 14) THEN output_cardnum := '**********' || substr(pCcardnum, 11, 4); END IF; IF (card_length = 15) THEN output_cardnum := '***********' || substr(pCcardnum, 12, 4); END IF; IF (card_length = 16) THEN output_cardnum := '************' || substr(pCcardnum, 13, 4); END IF; RETURN output_cardnum; END; $_$; ALTER FUNCTION public.formatccnumber(bytea) OWNER TO admin; -- -- Name: formatcntctname(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatcntctname(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCntctId ALIAS FOR $1; _r RECORD; _rows NUMERIC; BEGIN SELECT cntct_honorific, cntct_first_name, cntct_middle, cntct_last_name, cntct_suffix INTO _r FROM cntct WHERE (cntct_id=pCntctId); GET DIAGNOSTICS _rows = ROW_COUNT; IF (_rows = 0) THEN RETURN ''; END IF; RETURN formatCntctName(_r.cntct_honorific, _r.cntct_first_name, _r.cntct_middle, _r.cntct_last_name, _r.cntct_suffix); END; $_$; ALTER FUNCTION public.formatcntctname(integer) OWNER TO admin; -- -- Name: formatcntctname(text, text, text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatcntctname(text, text, text, text, text) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pHonorific ALIAS FOR $1; pFirstName ALIAS FOR $2; pMiddle ALIAS FOR $3; pLastName ALIAS FOR $4; pSuffix ALIAS FOR $5; _name TEXT := ''; BEGIN IF (LENGTH(TRIM(both from COALESCE(pHonorific,''))) > 0) THEN IF (POSITION('.' IN COALESCE(pHonorific, '')) > 0) THEN _name:= pHonorific; ELSE _name:= pHonorific || '.'; END IF; END IF; IF (LENGTH(TRIM(both from COALESCE(pFirstName,''))) > 0) THEN IF (LENGTH(TRIM(both from _name)) > 0) THEN _name:=_name || ' '; END IF; _name:=_name || pFirstName; END IF; IF (LENGTH(TRIM(both from COALESCE(pMiddle,''))) > 0) THEN IF (LENGTH(TRIM(both from _name)) > 0) THEN _name:=_name || ' '; END IF; IF (POSITION('.' IN COALESCE(pHonorific, '')) > 0) THEN _name:=_name || pMiddle; ELSE _name:=_name || pMiddle || '.'; END IF; END IF; IF (LENGTH(TRIM(both from COALESCE(pLastName,''))) > 0) THEN IF (LENGTH(TRIM(both from _name)) > 0) THEN _name:=_name || ' '; END IF; _name:=_name || pLastName; END IF; IF (LENGTH(TRIM(both from COALESCE(pSuffix,''))) > 0) THEN IF (LENGTH(TRIM(both from _name)) > 0) THEN _name:=_name || ' '; END IF; _name:=_name || pSuffix; END IF; RETURN _name; END; $_$; ALTER FUNCTION public.formatcntctname(text, text, text, text, text) OWNER TO admin; -- -- Name: formatcost(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatcost(numeric) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN formatNumeric($1, 'cost'); END;$_$; ALTER FUNCTION public.formatcost(numeric) OWNER TO admin; -- -- Name: formatcounttagbarcode(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatcounttagbarcode(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCnttagid ALIAS FOR $1; _barcode TEXT; BEGIN SELECT ( E'\138CTXX' || LTRIM(TO_CHAR(LENGTH(invcnt_tagnumber), '00')) || invcnt_tagnumber ) INTO _barcode FROM invcnt WHERE (invcnt_id=pCnttagid); RETURN _barcode; END; $_$; ALTER FUNCTION public.formatcounttagbarcode(integer) OWNER TO admin; -- -- Name: formatcreditmemonumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatcreditmemonumber(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmheadid ALIAS FOR $1; BEGIN RETURN ( SELECT COALESCE(cmhead_number::TEXT, '') FROM cmhead WHERE (cmhead_id=pCmheadid) ); END; $_$; ALTER FUNCTION public.formatcreditmemonumber(integer) OWNER TO admin; -- -- Name: formatdate(date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatdate(date) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT TO_CHAR($1, COALESCE((SELECT locale_dateformat FROM locale, usr WHERE ((usr_locale_id=locale_id) AND (usr_username=getEffectiveXtUser())) ), 'yyyy-mm-dd') ) AS result $_$; ALTER FUNCTION public.formatdate(date) OWNER TO admin; -- -- Name: formatdate(date, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatdate(date, text) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pDate ALIAS FOR $1; pString ALIAS FOR $2; BEGIN IF ( (pDate = startOfTime()) OR (pDate = endOfTime()) OR (pDate IS NULL) ) THEN RETURN pString; ELSE RETURN formatDate(pDate); END IF; END; $_$; ALTER FUNCTION public.formatdate(date, text) OWNER TO admin; -- -- Name: formatdate(timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatdate(timestamp with time zone) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT TO_CHAR($1, COALESCE((SELECT locale_dateformat FROM locale, usr WHERE ((usr_locale_id=locale_id) AND (usr_username=getEffectiveXtUser())) ), 'yyyy-mm-dd' )) AS result $_$; ALTER FUNCTION public.formatdate(timestamp with time zone) OWNER TO admin; -- -- Name: formatdatetime(timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatdatetime(timestamp with time zone) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT TO_CHAR($1, COALESCE((SELECT locale_timestampformat FROM locale, usr WHERE ((usr_locale_id=locale_id) AND (usr_username=getEffectiveXtUser())) ), 'yyyy-mm-dd HH24:MI:SS')) AS result $_$; ALTER FUNCTION public.formatdatetime(timestamp with time zone) OWNER TO admin; -- -- Name: formatdatetime(timestamp without time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatdatetime(timestamp without time zone) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT TO_CHAR($1, COALESCE((SELECT locale_timestampformat FROM locale, usr WHERE ((usr_locale_id=locale_id) AND (usr_username=getEffectiveXtUser())) ), 'yyyy-mm-dd HH24:MI:SS')) AS result $_$; ALTER FUNCTION public.formatdatetime(timestamp without time zone) OWNER TO admin; -- -- Name: formatextprice(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatextprice(numeric) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN formatNumeric($1, 'extprice'); END;$_$; ALTER FUNCTION public.formatextprice(numeric) OWNER TO admin; -- -- Name: formatflitemdescrip(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatflitemdescrip(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlitemId ALIAS FOR $1; _x RECORD; _descrip TEXT; BEGIN SELECT flitem_accnt_id, flitem_company, flitem_profit, flitem_number, flitem_sub, flitem_type, flitem_subaccnttype_code, accnt_id, accnt_descrip INTO _x FROM flitem LEFT OUTER JOIN accnt ON flitem_accnt_id=accnt_id WHERE flitem_id=pFlitemId; IF _x.flitem_accnt_id > -1 THEN SELECT (formatGLAccount(_x.accnt_id) || '-' || _x.accnt_descrip) INTO _descrip; ELSE _descrip:=''; IF _x.flitem_type = 'A' THEN _descrip:='Type=' || 'Asset'; ELSE IF _x.flitem_type='L' THEN _descrip:='Type=' || 'Liability'; ELSE IF _x.flitem_type='R' THEN _descrip:='Type=' || 'Revenue'; ELSE IF _x.flitem_type='E' THEN _descrip:='Type=' || 'Expense'; ELSE IF _x.flitem_type='Q' THEN _descrip:='Type=' || 'Equity'; END IF; END IF; END IF; END IF; END IF; IF _x.flitem_subaccnttype_code <> 'All' THEN IF (LENGTH(TRIM(both from _descrip)) > 0) THEN _descrip:=_descrip || ', '; END IF; _descrip:=_descrip || 'Sub Accnt Type=' || _x.flitem_subaccnttype_code; END IF; IF _x.flitem_company <> 'All' THEN IF (LENGTH(TRIM(both from _descrip)) > 0) THEN _descrip:=_descrip || ', '; END IF; _descrip:=_descrip || 'Company=' || _x.flitem_company; END IF; IF _x.flitem_profit <> 'All' THEN IF (LENGTH(TRIM(both from _descrip)) > 0) THEN _descrip:=_descrip || ', '; END IF; _descrip:=_descrip || 'Profit=' || _x.flitem_profit; END IF; IF _x.flitem_number <> 'All' THEN IF (LENGTH(TRIM(both from _descrip)) > 0) THEN _descrip:=_descrip || ', '; END IF; _descrip:=_descrip || 'Number=' || _x.flitem_number; END IF; IF _x.flitem_sub <> 'All' THEN IF (LENGTH(TRIM(both from _descrip)) > 0) THEN _descrip:=_descrip || ', '; END IF; _descrip:=_descrip || 'Sub Accnt=' || _x.flitem_sub; END IF; END IF; RETURN _descrip; END; $_$; ALTER FUNCTION public.formatflitemdescrip(integer) OWNER TO admin; -- -- Name: formatglaccount(text, text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatglaccount(text, text, text, text) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCompany ALIAS FOR $1; pProfit ALIAS FOR $2; pNumber ALIAS FOR $3; pSub ALIAS FOR $4; _number TEXT := ''; BEGIN IF ( ( SELECT metric_value::INTEGER FROM metric WHERE (metric_name='GLCompanySize') ) > 0 ) THEN _number := pCompany || '-'; END IF; IF ( ( SELECT metric_value::INTEGER FROM metric WHERE (metric_name='GLProfitSize') ) > 0 ) THEN _number := _number || pProfit || '-'; END IF; _number := _number || pNumber; IF ( ( SELECT metric_value::INTEGER FROM metric WHERE (metric_name='GLSubaccountSize') ) > 0 ) THEN _number := _number || '-' || pSub; END IF; RETURN _number; END; $_$; ALTER FUNCTION public.formatglaccount(text, text, text, text) OWNER TO admin; -- -- Name: formatglaccountlong(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatglaccountlong(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAccntid ALIAS FOR $1; _result TEXT; BEGIN SELECT (formatGLAccount(accnt_id) || '-' || accnt_descrip) INTO _result FROM accnt WHERE (accnt_id=pAccntid); RETURN _result; END; $_$; ALTER FUNCTION public.formatglaccountlong(integer) OWNER TO admin; -- -- Name: formatindent(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatindent(text, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pText ALIAS FOR $1; pIndent ALIAS FOR $2; _i INTEGER; _result TEXT; BEGIN _result := ''; _i := 0; WHILE _i < pIndent LOOP _result := _result || ' '; _i := _i + 1; END LOOP; _result := _result || pText; RETURN _result; END; $_$; ALTER FUNCTION public.formatindent(text, integer) OWNER TO admin; -- -- Name: formatinterval(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatinterval(numeric) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT TO_CHAR(('@ ' || trunc($1) || ' min ' || ($1 - trunc($1)) * 60 || ' sec')::INTERVAL, ( SELECT locale_intervalformat FROM locale, usr WHERE ((usr_locale_id=locale_id) AND (usr_username=getEffectiveXtUser())) ) ) AS result $_$; ALTER FUNCTION public.formatinterval(numeric) OWNER TO admin; -- -- Name: formatinterval(interval); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatinterval(interval) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT TO_CHAR($1, ( SELECT locale_intervalformat FROM locale, usr WHERE ((usr_locale_id=locale_id) AND (usr_username=getEffectiveXtUser())) ) ) AS result $_$; ALTER FUNCTION public.formatinterval(interval) OWNER TO admin; -- -- Name: formatinvcnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatinvcnumber(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCobmiscid ALIAS FOR $1; BEGIN RETURN ( SELECT COALESCE(cobmisc_invcnumber::TEXT, '') FROM cobmisc WHERE (cobmisc_id=pCobmiscid) ); END; $_$; ALTER FUNCTION public.formatinvcnumber(integer) OWNER TO admin; -- -- Name: formatitemsitebarcode(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatitemsitebarcode(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; _barcode TEXT; BEGIN SELECT ( E'\138ISXX' || LTRIM(TO_CHAR(LENGTH(item_number), '00')) || LENGTH(warehous_code)::TEXT || item_number || warehous_code ) INTO _barcode FROM itemsite, item, whsinfo WHERE ( (itemsite_item_id=item_id) AND (itemsite_warehous_id=warehous_id) AND (itemsite_id=pItemsiteid) ); RETURN _barcode; END; $_$; ALTER FUNCTION public.formatitemsitebarcode(integer) OWNER TO admin; -- -- Name: formatlocationbarcode(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatlocationbarcode(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLocationid ALIAS FOR $1; _barcode TEXT; BEGIN SELECT ( E'\138LOXX' || LENGTH(warehous_code)::TEXT || LTRIM(TO_CHAR(LENGTH(location_name::TEXT), '00')) || warehous_code || location_name ) INTO _barcode FROM location, whsinfo WHERE ( (location_warehous_id=warehous_id) AND (location_id=pLocationid) ); RETURN _barcode; END; $_$; ALTER FUNCTION public.formatlocationbarcode(integer) OWNER TO admin; -- -- Name: formatlocationcontentsbarcode(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatlocationcontentsbarcode(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLocationid ALIAS FOR $1; _barcode TEXT; BEGIN SELECT ( E'\138LOCN' || LENGTH(warehous_code)::TEXT || LTRIM(TO_CHAR(LENGTH(location_name), '00')) || warehous_code || location_name ) INTO _barcode FROM location, whsinfo WHERE ( (location_warehous_id=warehous_id) AND (location_id=pLocationid) ); RETURN _barcode; END; $_$; ALTER FUNCTION public.formatlocationcontentsbarcode(integer) OWNER TO admin; -- -- Name: formatlocationissuebarcode(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatlocationissuebarcode(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLocationid ALIAS FOR $1; _barcode TEXT; BEGIN SELECT ( E'\138LOIS' || LENGTH(warehous_code)::TEXT || LTRIM(TO_CHAR(LENGTH(location_name), '00')) || warehous_code || location_name ) INTO _barcode FROM location, whsinfo WHERE ( (location_warehous_id=warehous_id) AND (location_id=pLocationid) ); RETURN _barcode; END; $_$; ALTER FUNCTION public.formatlocationissuebarcode(integer) OWNER TO admin; -- -- Name: formatlotserialnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatlotserialnumber(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLotSerialId ALIAS FOR $1; _lotserial TEXT; BEGIN --See if lot serial control turned on (Postbooks will not ever have this) IF (fetchmetricbool('LotSerialControl')) THEN SELECT ls_number INTO _lotserial FROM ls WHERE (ls_id=pLotSerialId); END IF; RETURN COALESCE(_lotserial,''); END; $_$; ALTER FUNCTION public.formatlotserialnumber(integer) OWNER TO admin; -- -- Name: formatmoney(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatmoney(numeric) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN formatNumeric($1, 'curr'); END;$_$; ALTER FUNCTION public.formatmoney(numeric) OWNER TO admin; -- -- Name: formatnumeric(numeric, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatnumeric(numeric, text) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _value NUMERIC := $1; _type TEXT := LOWER(COALESCE($2, 'curr')); _abs NUMERIC; _magnitudecnt NUMERIC(1000); _wholefmt TEXT := '0'; _scale INTEGER; _neg TEXT; _decimal TEXT; _group TEXT; _string TEXT; _debug BOOL := false; _r RECORD; BEGIN -- If the value passed in is NULL then we want to pass back an empty string IF(_value IS NULL) THEN RETURN ''; END IF; SELECT * INTO _r FROM locale WHERE (locale_id=getUsrLocaleId()); _decimal := COALESCE(SUBSTRING(_r.locale_qtyformat FROM 1 FOR 1), '.'); _neg := COALESCE(SUBSTRING(_r.locale_qtyformat FROM 2 FOR 1), '-'); _group := COALESCE(SUBSTRING(_r.locale_qtyformat FROM 3 FOR 1), ','); _scale := CASE WHEN _type = 'cost' THEN _r.locale_cost_scale WHEN _type = 'extprice' THEN _r.locale_extprice_scale WHEN _type = 'percent' THEN _r.locale_percent_scale WHEN _type = 'purchprice' THEN _r.locale_purchprice_scale WHEN _type = 'qty' THEN _r.locale_qty_scale WHEN _type = 'qtyper' THEN _r.locale_qtyper_scale WHEN _type = 'salesprice' THEN _r.locale_salesprice_scale WHEN _type = 'uomratio' THEN _r.locale_uomratio_scale WHEN _type = 'weight' THEN _r.locale_weight_scale WHEN SUBSTRING(_type FOR 4) = 'curr' THEN _r.locale_curr_scale ELSE 2 END; _value := round(_value, _scale); _abs := ABS(_value); _magnitudecnt := TRUNC(_abs / 10); IF (_debug) THEN RAISE NOTICE '_value % _abs % _scale % _neg % _decimal % _group % ', _value, _abs, _scale, _decimal, _group, _scale; END IF; IF (_value < 0) THEN _string := _neg; ELSE _string := ''; END IF; WHILE (_magnitudecnt >= 1) LOOP _magnitudecnt := TRUNC(_magnitudecnt / 10); IF (LENGTH(_wholefmt) % 3 = 0) THEN _wholefmt := '"' || _group || '"' || _wholefmt; END IF; _wholefmt := '9' || _wholefmt; END LOOP; IF (_scale > 0) THEN _abs := (_abs * (10 ^ _scale)); _abs := TRUNC(_abs); _wholefmt := _wholefmt || '"' || _decimal || '"' || REPEAT('0', _scale); END IF; _wholefmt := 'FM' || _wholefmt; _string := _string || to_char(_abs, _wholefmt); RETURN _string; END;$_$; ALTER FUNCTION public.formatnumeric(numeric, text) OWNER TO admin; -- -- Name: formatperiodname(integer, character); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatperiodname(integer, character) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodId ALIAS FOR $1; pInterval ALIAS FOR $2; _result TEXT; BEGIN --...for Month IF (pInterval='M') THEN SELECT (CASE WHEN period_name='' THEN formatdate(period_start) || '-' || formatdate(period_end) ELSE period_name END) INTO _result FROM period WHERE (period_id=pPeriodId); RETURN _result; --...for Quarter ELSE IF (pInterval='Q') THEN SELECT ('Q' || period_quarter || '-' || EXTRACT(year from yearperiod_end)) INTO _result FROM period, yearperiod WHERE ((period_id=pPeriodId) AND (period_yearperiod_id=yearperiod_id)); RETURN _result; --...for Year ELSE SELECT EXTRACT(year FROM yearperiod_end) INTO _result FROM period,yearperiod WHERE ((period_id=pPeriodId) AND (period_yearperiod_id=yearperiod_id)); RETURN _result; END IF; END IF; RETURN 'Err'; END; $_$; ALTER FUNCTION public.formatperiodname(integer, character) OWNER TO admin; -- -- Name: formatplonumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatplonumber(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPlanordid ALIAS FOR $1; _result TEXT; BEGIN SELECT (TEXT(planord_number) || '-' || TEXT(planord_subnumber)) INTO _result FROM planord WHERE (planord_id=pPlanordid); RETURN _result; END; $_$; ALTER FUNCTION public.formatplonumber(integer) OWNER TO admin; -- -- Name: formatprcnt(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatprcnt(numeric) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT formatNumeric($1 * 100, 'percent') AS result $_$; ALTER FUNCTION public.formatprcnt(numeric) OWNER TO admin; -- -- Name: formatprice(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatprice(numeric) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT formatNumeric($1, 'salesprice') AS result; $_$; ALTER FUNCTION public.formatprice(numeric) OWNER TO admin; -- -- Name: formatpurchprice(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatpurchprice(numeric) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN formatNumeric($1, 'purchprice'); END;$_$; ALTER FUNCTION public.formatpurchprice(numeric) OWNER TO admin; -- -- Name: formatqty(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatqty(numeric) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN formatNumeric($1, 'qty'); END;$_$; ALTER FUNCTION public.formatqty(numeric) OWNER TO admin; -- -- Name: formatqtyper(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatqtyper(numeric) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN formatNumeric($1, 'qtyper'); END;$_$; ALTER FUNCTION public.formatqtyper(numeric) OWNER TO admin; -- -- Name: formatratio(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatratio(numeric) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT formatNumeric($1, 'uomratio'); $_$; ALTER FUNCTION public.formatratio(numeric) OWNER TO admin; -- -- Name: formatrevnumber(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatrevnumber(text, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pRevType ALIAS FOR $1; pRevId ALIAS FOR $2; _revision TEXT; BEGIN --See if revision control turned on (Postbooks will not ever have this) IF (fetchmetricbool('RevControl')) THEN SELECT rev_number INTO _revision FROM rev WHERE ((rev_target_type=pRevType) AND (rev_id=pRevId)); END IF; RETURN COALESCE(_revision,''); END; $_$; ALTER FUNCTION public.formatrevnumber(text, integer) OWNER TO admin; -- -- Name: formatsalesprice(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatsalesprice(numeric) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN formatNumeric($1, 'salesprice'); END;$_$; ALTER FUNCTION public.formatsalesprice(numeric) OWNER TO admin; -- -- Name: formatscrap(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatscrap(numeric) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT formatNumeric(($1 * 100), 'percent') AS result $_$; ALTER FUNCTION public.formatscrap(numeric) OWNER TO admin; -- -- Name: formatshipmentnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatshipmentnumber(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pshipheadid ALIAS FOR $1; BEGIN RETURN ( SELECT COALESCE(shiphead_number::TEXT, '') FROM shiphead WHERE (shiphead_id=pshipheadid) ); END; $_$; ALTER FUNCTION public.formatshipmentnumber(integer) OWNER TO admin; -- -- Name: formatsobarcode(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatsobarcode(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; _barcode TEXT; BEGIN SELECT ( E'\138SOXX' || LENGTH(TEXT(cohead_number)) || TEXT(cohead_number) ) INTO _barcode FROM cohead WHERE (cohead_id=pSoheadid); RETURN _barcode; END; $_$; ALTER FUNCTION public.formatsobarcode(integer) OWNER TO admin; -- -- Name: formatsoitembarcode(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatsoitembarcode(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoitemid ALIAS FOR $1; _barcode TEXT; BEGIN SELECT ( E'\138SOLI' || LENGTH(TEXT(cohead_number)) || LENGTH(formatsolinenumber(coitem_id)) || TEXT(cohead_number) || formatsolinenumber(coitem_id) ) INTO _barcode FROM cohead, coitem WHERE ( (coitem_cohead_id=cohead_id) AND (coitem_id=pSoitemid) ); RETURN _barcode; END; $_$; ALTER FUNCTION public.formatsoitembarcode(integer) OWNER TO admin; -- -- Name: formatsoitemnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatsoitemnumber(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE targetSoitemid ALIAS FOR $1; BEGIN RETURN ( SELECT (cohead_number::TEXT || '-' || formatsolinenumber(coitem_id)) FROM cohead, coitem WHERE ((coitem_cohead_id=cohead_id) AND (coitem_id=targetSoitemid)) ); END; $_$; ALTER FUNCTION public.formatsoitemnumber(integer) OWNER TO admin; -- -- Name: formatsonumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatsonumber(integer) RETURNS text LANGUAGE sql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT COALESCE((SELECT (text(cohead_number) || '-' || formatSoLineNumber(coitem_id)) FROM coitem JOIN cohead ON (coitem_cohead_id=cohead_id) WHERE (coitem_id=($1))),'DELETED'); $_$; ALTER FUNCTION public.formatsonumber(integer) OWNER TO admin; -- -- Name: formattime(timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formattime(timestamp with time zone) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT TO_CHAR($1, ( SELECT locale_timeformat FROM locale, usr WHERE ((usr_locale_id=locale_id) AND (usr_username=getEffectiveXtUser())) ) ) AS result $_$; ALTER FUNCTION public.formattime(timestamp with time zone) OWNER TO admin; -- -- Name: formattime(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formattime(numeric) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT LTRIM(TO_CHAR(COALESCE($1, 0), '999999990.0')); $_$; ALTER FUNCTION public.formattime(numeric) OWNER TO admin; -- -- Name: formatuomratio(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatuomratio(numeric) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN formatNumeric($1, 'uomratio'); END;$_$; ALTER FUNCTION public.formatuomratio(numeric) OWNER TO admin; -- -- Name: formatuserbarcode(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatuserbarcode(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUserid ALIAS FOR $1; _barcode TEXT; BEGIN SELECT formatUserBarcode(usr_username) INTO _barcode FROM usr WHERE(usr_id=pUserid); RETURN _barcode; END; $_$; ALTER FUNCTION public.formatuserbarcode(integer) OWNER TO admin; -- -- Name: formatuserbarcode(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatuserbarcode(text) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; _barcode TEXT; BEGIN _barcode := ( E'\138USER' || LENGTH(pUsername)::TEXT || pUsername ); RETURN _barcode; END; $_$; ALTER FUNCTION public.formatuserbarcode(text) OWNER TO admin; -- -- Name: formatweight(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatweight(numeric) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT formatNumeric($1, 'weight') AS result $_$; ALTER FUNCTION public.formatweight(numeric) OWNER TO admin; -- -- Name: formatwobarcode(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatwobarcode(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; _barcode TEXT; BEGIN SELECT ( E'\138WOXX' || LENGTH(wo_number::TEXT) || LENGTH(wo_subnumber::TEXT) || wo_number::TEXT || wo_subnumber::TEXT ) INTO _barcode FROM wo WHERE (wo_id=pWoid); RETURN _barcode; END; $_$; ALTER FUNCTION public.formatwobarcode(integer) OWNER TO admin; -- -- Name: formatwonumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatwonumber(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; BEGIN RETURN ( SELECT (wo_number::TEXT || '-' || wo_subnumber::TEXT) FROM wo WHERE (wo_id=pWoid) ); END; $_$; ALTER FUNCTION public.formatwonumber(integer) OWNER TO admin; -- -- Name: formatwooperseq(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION formatwooperseq(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWooperId ALIAS FOR $1; _result TEXT; BEGIN IF pWooperId = -1 THEN RETURN ''; ELSE SELECT wooper_seqnumber INTO _result FROM xtmfg.wooper WHERE (wooper_id=pWooperId); END IF; RETURN _result; END; $_$; ALTER FUNCTION public.formatwooperseq(integer) OWNER TO admin; -- -- Name: forwardupdateaccount(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION forwardupdateaccount(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAccntid ALIAS FOR $1; _r RECORD; _trialbalid INTEGER; BEGIN SELECT trialbal_id, trialbal_dirty, CASE WHEN (trialbal_dirty) THEN 0 ELSE 1 END AS dirty_seq INTO _r FROM trialbal, period WHERE ((trialbal_period_id=period_id) AND (trialbal_accnt_id=pAccntid)) ORDER BY dirty_seq, period_start LIMIT 1; IF (FOUND) THEN IF (_r.trialbal_dirty) THEN RETURN forwardUpdateTrialBalance(_r.trialbal_id); ELSE RETURN _r.trialbal_id; END IF; ELSE _trialbalid := nextval('trialbal_trialbal_id_seq'); INSERT INTO trialbal ( trialbal_id, trialbal_period_id, trialbal_accnt_id, trialbal_beginning, trialbal_ending, trialbal_debits, trialbal_credits, trialbal_dirty ) SELECT _trialbalid, period_id, pAccntid, 0, 0, 0, 0, FALSE FROM period ORDER BY period_start LIMIT 1; RETURN forwardUpdateTrialBalance(_trialbalid); END IF; RETURN -1; END; $_$; ALTER FUNCTION public.forwardupdateaccount(integer) OWNER TO admin; -- -- Name: forwardupdateinvbalance(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION forwardupdateinvbalance(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvbalid ALIAS FOR $1; _p RECORD; _r RECORD; _qohEnding NUMERIC; _valueEnding NUMERIC; _nnEnding NUMERIC; _nnvalEnding NUMERIC; BEGIN SELECT invbal_itemsite_id, invbal_qoh_ending, invbal_value_ending, invbal_nn_ending, invbal_nnval_ending, period_end INTO _p FROM invbal JOIN period ON (invbal_period_id=period_id) JOIN itemsite ON (invbal_itemsite_id=itemsite_id) WHERE (invbal_id=pInvbalid); _qohEnding = _p.invbal_qoh_ending; _valueEnding = _p.invbal_value_ending; _nnEnding = _p.invbal_nn_ending; _nnvalEnding = _p.invbal_nnval_ending; -- Find all of the subsequent periods and their inventory balance, if they exist FOR _r IN SELECT period_id, period_end, invbal_id, invbal_qty_in, invbal_qty_out, invbal_value_in, invbal_value_out, invbal_nn_in, invbal_nn_out, invbal_nnval_in, invbal_nnval_out FROM period LEFT OUTER JOIN invbal ON ( (invbal_period_id=period_id) AND (invbal_itemsite_id=_p.invbal_itemsite_id) ) WHERE (period_start > _p.period_end) ORDER BY period_start LOOP IF (_r.invbal_id IS NULL) THEN INSERT INTO invbal ( invbal_period_id, invbal_itemsite_id, invbal_qoh_beginning, invbal_qoh_ending, invbal_qty_in, invbal_qty_out, invbal_value_beginning, invbal_value_ending, invbal_value_in, invbal_value_out, invbal_nn_beginning, invbal_nn_ending, invbal_nn_in, invbal_nn_out, invbal_nnval_beginning, invbal_nnval_ending, invbal_nnval_in, invbal_nnval_out, invbal_dirty ) VALUES ( _r.period_id, _p.invbal_itemsite_id, _qohEnding, _qohEnding, 0, 0, _valueEnding, _valueEnding, 0, 0, _nnEnding, _nnEnding, 0, 0, _nnvalEnding, _nnvalEnding, 0, 0, FALSE ); ELSE UPDATE invbal SET invbal_qoh_beginning = (_qohEnding), invbal_qoh_ending = (_qohEnding + _r.invbal_qty_in - _r.invbal_qty_out), invbal_value_beginning = (_valueEnding), invbal_value_ending = (_valueEnding + _r.invbal_value_in - _r.invbal_value_out), invbal_nn_beginning = (_nnEnding), invbal_nn_ending = (_nnEnding + _r.invbal_nn_in - _r.invbal_nn_out), invbal_nnval_beginning = (_nnvalEnding), invbal_nnval_ending = (_nnvalEnding + _r.invbal_nnval_in - _r.invbal_nnval_out), invbal_dirty = FALSE WHERE (invbal_id=_r.invbal_id); _qohEnding = (_qohEnding + _r.invbal_qty_in - _r.invbal_qty_out); _valueEnding = (_valueEnding + _r.invbal_value_in - _r.invbal_value_out); _nnEnding = (_nnEnding + _r.invbal_nn_in - _r.invbal_nn_out); _nnvalEnding = (_nnvalEnding + _r.invbal_nnval_in - _r.invbal_nnval_out); END IF; END LOOP; UPDATE invbal SET invbal_dirty = false WHERE (invbal_id=pInvbalid); RETURN pInvbalid; END; $_$; ALTER FUNCTION public.forwardupdateinvbalance(integer) OWNER TO admin; -- -- Name: forwardupdateitemsite(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION forwardupdateitemsite(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteId ALIAS FOR $1; _r RECORD; _invbalid INTEGER; BEGIN SELECT invbal_id INTO _r FROM invbal JOIN period ON (invbal_period_id=period_id) WHERE (invbal_itemsite_id=pItemsiteid) ORDER BY period_start LIMIT 1; IF (FOUND) THEN RETURN forwardUpdateInvbalance(_r.invbal_id); ELSE _invbalid := nextval('invbal_invbal_id_seq'); INSERT INTO invbal ( invbal_id, invbal_period_id, invbal_itemsite_id, invbal_qoh_beginning, invbal_qoh_ending, invbal_qty_in, invbal_qty_out, invbal_value_beginning, invbal_value_ending, invbal_value_in, invbal_value_out, invbal_nn_beginning, invbal_nn_ending, invbal_nn_in, invbal_nn_out, invbal_nnval_beginning, invbal_nnval_ending, invbal_nnval_in, invbal_nnval_out, invbal_dirty ) SELECT _invbalid, period_id, pItemsiteid, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false FROM period ORDER BY period_start LIMIT 1; RETURN forwardUpdateInvbalance(_invbalid); END IF; RETURN -1; END; $_$; ALTER FUNCTION public.forwardupdateitemsite(integer) OWNER TO admin; -- -- Name: forwardupdatetrialbalance(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION forwardupdatetrialbalance(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTrialbalid ALIAS FOR $1; _p RECORD; _r RECORD; _ending NUMERIC; _prevYear INTEGER; _currYear INTEGER; _prevYearClosed BOOLEAN; _currYearClosed BOOLEAN; _result INTEGER; BEGIN SELECT trialbal_accnt_id, trialbal_ending, yearperiod_id, yearperiod_closed, period_end, accnt_type IN ('E', 'R') AS revexp INTO _p FROM trialbal, period, yearperiod, accnt WHERE ( (trialbal_period_id=period_id) AND (yearperiod_id=period_yearperiod_id) AND (trialbal_accnt_id=accnt_id) AND (trialbal_id=pTrialbalid) ); _ending = _p.trialbal_ending; SELECT yearperiod_id, yearperiod_closed INTO _prevYear, _prevYearClosed FROM yearperiod WHERE (_p.period_end BETWEEN yearperiod_start AND yearperiod_end); IF (NOT FOUND) THEN _prevYear := -1; _prevYearClosed := false; END IF; -- Find all of the subsequent periods and their trialbal, if they exist FOR _r IN SELECT period_id, period_end, trialbal_id, trialbal_debits, trialbal_credits, trialbal_yearend FROM period LEFT OUTER JOIN trialbal ON ( (trialbal_period_id=period_id) AND (trialbal_accnt_id=_p.trialbal_accnt_id) ) WHERE (period_start > _p.period_end) ORDER BY period_start LOOP SELECT yearperiod_id, yearperiod_closed INTO _currYear, _currYearClosed FROM yearperiod WHERE (_r.period_end BETWEEN yearperiod_start AND yearperiod_end); IF (NOT FOUND) THEN _currYear := -1; _currYearClosed := false; END IF; IF (_p.revexp AND _currYear != _prevYear) THEN _ending := 0; IF (_prevYearClosed) THEN SELECT updateRetainedEarnings(_prevYear) INTO _result; IF (_result < 0) THEN RETURN _result; END IF; END IF; END IF; _prevYear := _currYear; _prevYearClosed := _currYearClosed; IF (_r.trialbal_id IS NULL) THEN -- SELECT SUM(gltrans_amount) INTO _glAmount -- FROM gltrans -- WHERE ( (gltrans_date BETWEEN _r.period_start and _r.period_end ) -- AND (gltrans_accnt_id=_p.trialbal_accnt_id) -- AND (gltrans_posted) ); -- and change 2nd and 3rd VALUES line of INSERT to read -- _ending, _ending + _glAmount, -- noneg(0 - _glAmount), noneg(_glAmount), FALSE ); INSERT INTO trialbal ( trialbal_period_id, trialbal_accnt_id, trialbal_beginning, trialbal_ending, trialbal_debits, trialbal_credits, trialbal_dirty ) VALUES ( _r.period_id, _p.trialbal_accnt_id, _ending, _ending, 0, 0, FALSE ); ELSE UPDATE trialbal SET trialbal_beginning = (_ending + trialbal_yearend), trialbal_ending = (_ending + trialbal_yearend - _r.trialbal_debits + _r.trialbal_credits), trialbal_dirty = FALSE WHERE (trialbal_id=_r.trialbal_id); _ending = (_ending + _r.trialbal_yearend - _r.trialbal_debits + _r.trialbal_credits); END IF; END LOOP; UPDATE trialbal SET trialbal_dirty = FALSE WHERE (trialbal_id=pTrialbalid); RETURN pTrialbalid; END; $_$; ALTER FUNCTION public.forwardupdatetrialbalance(integer) OWNER TO admin; -- -- Name: freezeaccountingperiod(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION freezeaccountingperiod(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; BEGIN -- Check to make use that the period is not already frozen IF ( ( SELECT period_freeze FROM period WHERE (period_id=pPeriodid) ) ) THEN RETURN -2; END IF; -- Set the period_freeze flag UPDATE period SET period_freeze=TRUE WHERE (period_id=pPeriodid); RETURN pPeriodid; END; $_$; ALTER FUNCTION public.freezeaccountingperiod(integer) OWNER TO admin; -- -- Name: freightdetail(text, integer, integer, integer, date, text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION freightdetail(text, integer, integer, integer, date, text, integer) RETURNS SETOF freightdata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOrderType ALIAS FOR $1; pOrderId ALIAS FOR $2; pCustId ALIAS FOR $3; pShiptoId ALIAS FOR $4; pOrderDate ALIAS FOR $5; pShipVia ALIAS FOR $6; pCurrId ALIAS FOR $7; _row freightData%ROWTYPE; _order RECORD; _weights RECORD; _includepkgweight BOOLEAN := FALSE; _qry TEXT; _debug BOOLEAN := FALSE; BEGIN IF (_debug) THEN RAISE NOTICE 'pOrderType = %', pOrderType; RAISE NOTICE 'pOrderId = %', pOrderId; RAISE NOTICE 'pCustId = %', pCustId; RAISE NOTICE 'pShiptoId = %', pShiptoId; RAISE NOTICE 'pOrderDate = %', pOrderDate; RAISE NOTICE 'pShipVia = %', pShipVia; RAISE NOTICE 'pCurrId = %', pCurrId; END IF; SELECT fetchMetricBool('IncludePackageWeight') INTO _includepkgweight; --Get the order header information need to match --against price schedules IF (pOrderType = 'SO') THEN SELECT cust_id AS cust_id, custtype_id, custtype_code, COALESCE(shipto_id, -1) AS shipto_id, COALESCE(shipto_num, '') AS shipto_num, COALESCE(pOrderDate, cohead_orderdate) AS orderdate, COALESCE(pShipVia, cohead_shipvia) AS shipvia, shipto_shipzone_id AS shipzone_id, COALESCE(pCurrId, cohead_curr_id) AS curr_id, currConcat(COALESCE(pCurrId, cohead_curr_id)) AS currAbbr INTO _order FROM cohead JOIN custinfo ON (cust_id=COALESCE(pCustId, cohead_cust_id)) JOIN custtype ON (custtype_id=cust_custtype_id) LEFT OUTER JOIN shiptoinfo ON (shipto_id=COALESCE(pShiptoId, cohead_shipto_id)) WHERE (cohead_id=pOrderId); ELSIF (pOrderType = 'QU') THEN SELECT quhead_cust_id AS cust_id, custtype_id, custtype_code, COALESCE(shipto_id, -1) AS shipto_id, COALESCE(shipto_num, '') AS shipto_num, quhead_quotedate AS orderdate, quhead_shipvia AS shipvia, shipto_shipzone_id AS shipzone_id, quhead_curr_id AS curr_id, currConcat(quhead_curr_id) AS currAbbr INTO _order FROM quhead JOIN custinfo ON (cust_id=quhead_cust_id) JOIN custtype ON (custtype_id=cust_custtype_id) LEFT OUTER JOIN shiptoinfo ON (shipto_id=quhead_shipto_id) WHERE (quhead_id=pOrderId); ELSIF (pOrderType = 'RA') THEN SELECT cust_id AS cust_id, custtype_id, custtype_code, COALESCE(shipto_id, -1) AS shipto_id, COALESCE(shipto_num, '') AS shipto_num, COALESCE(pOrderDate, rahead_authdate) AS orderdate, ''::text AS shipvia, shipto_shipzone_id AS shipzone_id, COALESCE(pCurrId, rahead_curr_id) AS curr_id, currConcat(COALESCE(pCurrId, rahead_curr_id)) AS currAbbr INTO _order FROM rahead JOIN custinfo ON (cust_id=COALESCE(pCustId, rahead_cust_id)) JOIN custtype ON (custtype_id=cust_custtype_id) LEFT OUTER JOIN shiptoinfo ON (shipto_id=COALESCE(pShiptoId, rahead_shipto_id)) WHERE (rahead_id=pOrderId); ELSE RAISE EXCEPTION 'Invalid order type.'; END IF; IF (_debug) THEN RAISE NOTICE 'cust_id = %', _order.cust_id; RAISE NOTICE 'custtype_id = %', _order.custtype_id; RAISE NOTICE 'shipto_id = %', _order.shipto_id; RAISE NOTICE 'shipto_num = %', _order.shipto_num; RAISE NOTICE 'orderdate = %', _order.orderdate; RAISE NOTICE 'shipvia = %', _order.shipvia; RAISE NOTICE 'shipzone_id = %', _order.shipzone_id; RAISE NOTICE 'curr_id = %', _order.curr_id; RAISE NOTICE 'currAbbr = %', _order.currAbbr; END IF; --Get a list of aggregated weights from sites and --freight classes used on order lines IF (_includePkgWeight) THEN _qry := 'SELECT SUM(orderitem_qty_ordered * orderitem_qty_invuomratio * (item_prodweight + item_packweight)) AS weight, '; ELSE _qry := 'SELECT SUM(orderitem_qty_ordered * orderitem_qty_invuomratio * item_prodweight) AS weight, '; END IF; _qry := _qry || 'itemsite_warehous_id, COALESCE(item_freightclass_id, -1) AS item_freightclass_id FROM orderitem JOIN itemsite ON (itemsite_id=orderitem_itemsite_id) JOIN item ON (item_id=itemsite_item_id) '; IF (pOrderType = 'RA') THEN _qry := _qry || 'JOIN raitem ON ((orderitem_id=raitem_id) AND (raitem_disposition IN (''C'',''R'',''P''))) '; END IF; _qry := _qry || ' WHERE ( (orderitem_orderhead_type=' || quote_literal(pOrderType) || ') AND (orderitem_orderhead_id=' || quote_literal(pOrderId) || ') AND (orderitem_status <> ''X'') ) GROUP BY itemsite_warehous_id, item_freightclass_id;'; FOR _weights IN EXECUTE _qry LOOP _row := calculateFreightDetail( _order.cust_id, --pCustId _order.custtype_id, --pCustTypeId _order.custtype_code, --pCustTypeCode _order.shipto_id, --pShiptoId _order.shipzone_id, --pShipZoneId _order.shipto_num, --pShiptoNum _order.orderdate, --pOrderDate _order.shipvia, --pShipVia _order.curr_id, --pCurrId _order.currAbbr, --pCurrAbbr _weights.itemsite_warehous_id, --pItemSiteWhsId _weights.item_freightclass_id, --pItemFreightclassId _weights.weight --pWeight ); RETURN NEXT _row; END LOOP; RETURN; END; $_$; ALTER FUNCTION public.freightdetail(text, integer, integer, integer, date, text, integer) OWNER TO admin; -- -- Name: freightdetailquote(integer, text, integer, text, date, text, text, text[]); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION freightdetailquote(integer, text, integer, text, date, text, text, text[]) RETURNS SETOF freightdata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustId ALIAS FOR $1; pCustNumber ALIAS FOR $2; pShiptoId ALIAS FOR $3; pShiptoNum ALIAS FOR $4; pOrderDate ALIAS FOR $5; pShipVia ALIAS FOR $6; pItemArrayType ALIAS FOR $7; pItemQty ALIAS FOR $8; -- Array item_id format = ARRAY[['300','3'],['310','50']] -- Array item_number format = ARRAY[['YTRUCK1','3'],['RTRUCK1','50']] -- Array itemsite_id format = ARRAY[['293','3'],['302','50']] _cust RECORD; _shipto RECORD; _curr RECORD; _includepkgweight BOOLEAN := FALSE; _order_date DATE; _ship_via TEXT; _item_num RECORD; _item_id RECORD; _weights RECORD; _row freightData%ROWTYPE; _debug BOOLEAN := FALSE; BEGIN -- Parameters are setup to allow this function to be called multiple ways. -- Check parameters and lookup what is NULL. -- Check pCustId and pCustNumber. IF (pCustId IS NULL AND (pCustNumber IS NULL OR pCustNumber = '')) THEN RAISE EXCEPTION 'You must specify a Customer ID or Number to get a freight quote.'; ELSIF (pCustId IS NULL AND pCustNumber IS NOT NULL) THEN -- Get customer info using pCustNumber. SELECT cust_id, cust_number, custtype_id, custtype_code, cust_curr_id, cust_shipvia INTO _cust FROM custinfo LEFT JOIN custtype ON cust_custtype_id = custtype_id WHERE 1=1 AND cust_number = pCustNumber; ELSE -- Get customer info using pCustId. SELECT cust_id, cust_number, custtype_id, custtype_code, cust_curr_id, cust_shipvia INTO _cust FROM custinfo LEFT JOIN custtype ON cust_custtype_id = custtype_id WHERE 1=1 AND cust_id = pCustId; END IF; IF(NOT FOUND) THEN RAISE EXCEPTION 'Invalid Customer specified when trying to get a freight quote.'; END IF; -- Check pShiptoId and pShiptoNum. IF (pShiptoId IS NULL AND (pShiptoNum IS NULL OR pShiptoNum = '')) THEN -- Get Customer's default shipto. SELECT shipto_id, shipto_name, shipto_shipzone_id, shipto_shipvia, shipto_num INTO _shipto FROM shiptoinfo WHERE 1=1 AND shipto_cust_id = _cust.cust_id AND shipto_default; ELSIF (pShiptoId IS NULL AND pShiptoNum IS NOT NULL) THEN -- Get shipto info using pShiptoNum. SELECT shipto_id, shipto_name, shipto_shipzone_id, shipto_shipvia, shipto_num INTO _shipto FROM shiptoinfo WHERE 1=1 AND shipto_cust_id = _cust.cust_id AND shipto_num = pShiptoNum; ELSE -- Get shipto info using pShiptoId. SELECT shipto_id, shipto_name, shipto_shipzone_id, shipto_shipvia, shipto_num INTO _shipto FROM shiptoinfo WHERE 1=1 AND shipto_cust_id = _cust.cust_id AND shipto_id = pShiptoId; END IF; IF(NOT FOUND) THEN RAISE EXCEPTION 'Invalid Ship-to specified when trying to get a freight quote.'; END IF; -- Get curr info. SELECT curr_id, curr_abbr INTO _curr FROM curr_symbol WHERE 1=1 AND curr_id = _cust.cust_curr_id; IF(NOT FOUND) THEN RAISE EXCEPTION 'Could not find currency when trying to get a freight quote.'; END IF; -- Check pOrderDate. IF (pOrderDate IS NULL) THEN _order_date := CURRENT_DATE; ELSE _order_date := pOrderDate; END IF; -- Check pShipVia. IF (pShipVia IS NULL OR pShipVia = '') THEN IF (_shipto.shipto_shipvia IS NULL OR _shipto.shipto_shipvia = '') THEN _ship_via := _cust.cust_shipvia; ELSE _ship_via := _shipto.shipto_shipvia; END IF; ELSE _ship_via := pShipVia; END IF; -- Determine if package weight should be included in freight calculation. SELECT fetchMetricBool('IncludePackageWeight') INTO _includepkgweight; -- Check pItemQty. IF (pItemQty IS NULL OR array_upper(pItemQty,1) IS NULL) THEN -- Item Array is NULL. RAISE EXCEPTION 'You must specify an Item ID, Item Number or Itemsite ID to get a freight quote.'; ELSIF (pItemArrayType = 'item_number' AND (array_upper(pItemQty,1) > 0)) THEN -- Using item_number. FOR _weights IN -- Get a list of aggregated weights from sites and freight classes for items. SELECT CASE WHEN _includepkgweight THEN SUM(qty * (item_prodweight + item_packweight)) ELSE SUM(qty * (item_prodweight)) END AS weight, itemsite_warehous_id, COALESCE(item_freightclass_id, -1) AS item_freightclass_id FROM -- Create item_number -> qty record from array. (SELECT unnest((SELECT pItemQty[1:array_upper(pItemQty,1)][1])) AS item_number, unnest((SELECT pItemQty[1:array_upper(pItemQty,1)][2:array_ndims(pItemQty)]))::numeric AS qty ) AS itemnum_qty JOIN item USING (item_number) JOIN itemsite ON item_id=itemsite_item_id WHERE 1=1 AND itemsite_warehous_id = fetchprefwarehousid() GROUP BY itemsite_warehous_id, item_freightclass_id LOOP -- Calculate the freight detail for these item weights. _row := calculateFreightDetail( _cust.cust_id, --pCustId _cust.custtype_id, --pCustTypeId _cust.custtype_code, --pCustTypeCode _shipto.shipto_id, --pShiptoId _shipto.shipto_shipzone_id, --pShipZoneId _shipto.shipto_num, --pShiptoNum _order_date, --pOrderDate _ship_via, --pShipVia _curr.curr_id, --pCurrId _curr.curr_abbr, --pCurrAbbr _weights.itemsite_warehous_id, --pItemSiteWhsId _weights.item_freightclass_id, --pItemFreightclassId _weights.weight --pWeight ); RETURN NEXT _row; END LOOP; ELSIF (pItemArrayType = 'item_id' AND (array_upper(pItemQty,1) > 0)) THEN -- Using item_id. FOR _weights IN -- Get a list of aggregated weights from sites and freight classes for items. SELECT CASE WHEN _includepkgweight THEN SUM(qty * (item_prodweight + item_packweight)) ELSE SUM(qty * (item_prodweight)) END AS weight, itemsite_warehous_id, COALESCE(item_freightclass_id, -1) AS item_freightclass_id FROM -- Create item_id -> qty record from array. (SELECT unnest((SELECT pItemQty[1:array_upper(pItemQty,1)][1]))::integer AS item_id, unnest((SELECT pItemQty[1:array_upper(pItemQty,1)][2:array_ndims(pItemQty)]))::numeric AS qty ) AS itemid_qty JOIN item USING (item_id) JOIN itemsite ON item_id=itemsite_item_id WHERE 1=1 AND itemsite_warehous_id = fetchprefwarehousid() GROUP BY itemsite_warehous_id, item_freightclass_id LOOP -- Calculate the freight detail for these item weights. _row := calculateFreightDetail( _cust.cust_id, --pCustId _cust.custtype_id, --pCustTypeId _cust.custtype_code, --pCustTypeCode _shipto.shipto_id, --pShiptoId _shipto.shipto_shipzone_id, --pShipZoneId _shipto.shipto_num, --pShiptoNum _order_date, --pOrderDate _ship_via, --pShipVia _curr.curr_id, --pCurrId _curr.curr_abbr, --pCurrAbbr _weights.itemsite_warehous_id, --pItemSiteWhsId _weights.item_freightclass_id, --pItemFreightclassId _weights.weight --pWeight ); RETURN NEXT _row; END LOOP; ELSIF (pItemArrayType = 'itemsite_id' AND (array_upper(pItemQty,1) > 0)) THEN -- Using itemsite_id. FOR _weights IN -- Get a list of aggregated weights from sites and freight classes for items. SELECT CASE WHEN _includepkgweight THEN SUM(qty * (item_prodweight + item_packweight)) ELSE SUM(qty * (item_prodweight)) END AS weight, itemsite_warehous_id, COALESCE(item_freightclass_id, -1) AS item_freightclass_id FROM -- Create itemsite_id -> qty record from array. (SELECT unnest((SELECT pItemQty[1:array_upper(pItemQty,1)][1]))::integer AS itemsite_id, unnest((SELECT pItemQty[1:array_upper(pItemQty,1)][2:array_ndims(pItemQty)]))::numeric AS qty ) AS itemsiteid_qty JOIN itemsite USING (itemsite_id) JOIN item ON item_id=itemsite_item_id WHERE 1=1 GROUP BY itemsite_warehous_id, item_freightclass_id LOOP -- Calculate the freight detail for these item weights. _row := calculateFreightDetail( _cust.cust_id, --pCustId _cust.custtype_id, --pCustTypeId _cust.custtype_code, --pCustTypeCode _shipto.shipto_id, --pShiptoId _shipto.shipto_shipzone_id, --pShipZoneId _shipto.shipto_num, --pShiptoNum _order_date, --pOrderDate _ship_via, --pShipVia _curr.curr_id, --pCurrId _curr.curr_abbr, --pCurrAbbr _weights.itemsite_warehous_id, --pItemSiteWhsId _weights.item_freightclass_id, --pItemFreightclassId _weights.weight --pWeight ); RETURN NEXT _row; END LOOP; ELSE -- The item array provided is invalid. RAISE EXCEPTION 'The Item/Itemsite array provided when trying to get a freight quote is invalid.'; END IF; IF(NOT FOUND) THEN RAISE EXCEPTION 'Error trying to aggregated weights when getting a freight quote.'; END IF; -- Print debug. IF (_debug) THEN RAISE NOTICE 'pCustId = %', _cust.cust_id; RAISE NOTICE 'pCustTypeId = %', _cust.custtype_id; RAISE NOTICE 'pCustTypeCode = %', _cust.custtype_code; RAISE NOTICE 'pShiptoId = %', _shipto.shipto_id; RAISE NOTICE 'pShipZoneId = %', _shipto.shipto_shipzone_id; RAISE NOTICE 'pShiptoNum = %', _shipto.shipto_num; RAISE NOTICE 'pOrderDate = %', _order_date; RAISE NOTICE 'pShipVia = %', _ship_via; RAISE NOTICE 'pCurrId = %', _curr.curr_id; RAISE NOTICE 'pCurrAbbr = %', _curr.curr_abbr; END IF; RETURN; END; $_$; ALTER FUNCTION public.freightdetailquote(integer, text, integer, text, date, text, text, text[]) OWNER TO admin; -- -- Name: freightforrecv(text, integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION freightforrecv(text, integer, boolean) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; porderitemid ALIAS FOR $2; pposted ALIAS FOR $3; _freight NUMERIC; BEGIN IF (pordertype = 'TO' AND NOT fetchMetricBool('MultiWhs')) THEN RETURN 0; ELSIF (pordertype = 'RA' AND NOT fetchMetricBool('EnableReturnAuth')) THEN RETURN 0; END IF; SELECT SUM(COALESCE(recv_freight, 0)) INTO _freight FROM recv WHERE ((recv_orderitem_id=porderitemid) AND (recv_posted = pposted) AND (recv_order_type=pordertype)); RETURN COALESCE(_freight, 0.0); END; $_$; ALTER FUNCTION public.freightforrecv(text, integer, boolean) OWNER TO admin; -- -- Name: gen_salt(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION gen_salt(text) RETURNS text LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pg_gen_salt'; ALTER FUNCTION public.gen_salt(text) OWNER TO admin; -- -- Name: gen_salt(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION gen_salt(text, integer) RETURNS text LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pg_gen_salt_rounds'; ALTER FUNCTION public.gen_salt(text, integer) OWNER TO admin; -- -- Name: getactiverevid(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getactiverevid(text, integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTargetType ALIAS FOR $1; pTargetid ALIAS FOR $2; _revid INTEGER; BEGIN --See if revcontrol turned on IF (fetchmetricbool('RevControl')) THEN IF (pTargetType='BOM') THEN SELECT rev_id INTO _revid FROM rev WHERE ((rev_target_type='BOM') AND (rev_target_id=pTargetid) AND (rev_status='A')); IF (NOT FOUND) THEN _revid:=-1; END IF; ELSE IF (pTargetType='BOO') THEN SELECT rev_id INTO _revid FROM rev WHERE ((rev_target_type='BOO') AND (rev_target_id=pTargetid) AND (rev_status='A')); IF (NOT FOUND) THEN _revid:=-1; END IF; ELSE RAISE EXCEPTION 'Invalid Revision Type'; END IF; END IF; ELSE _revid:=-1; END IF; RETURN _revid; END; $_$; ALTER FUNCTION public.getactiverevid(text, integer) OWNER TO admin; -- -- Name: getaddrid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getaddrid(paddressnumber text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pAddressNumber IS NULL OR pAddressNumber = '') THEN RETURN NULL; END IF; SELECT addr_id INTO _returnVal FROM addr WHERE (addr_number=pAddressNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Address Number % not found.', pAddressNumber; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getaddrid(paddressnumber text) OWNER TO admin; -- -- Name: getadjustmenttaxtypeid(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getadjustmenttaxtypeid() RETURNS integer LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _taxtypeid INTEGER; BEGIN SELECT taxtype_id INTO _taxtypeid FROM taxtype WHERE (taxtype_name='Adjustment'); RETURN _taxtypeid; END; $$; ALTER FUNCTION public.getadjustmenttaxtypeid() OWNER TO admin; -- -- Name: getaropenid(text, character, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getaropenid(text, character, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustNumber ALIAS FOR $1; pDocType ALIAS FOR $2; pDocNumber ALIAS FOR $3; _returnVal INTEGER; BEGIN IF ((pCustNumber IS NULL) OR (pDocType IS NULL) OR (pDocNumber IS NULL)) THEN RETURN NULL; END IF; SELECT aropen_id INTO _returnVal FROM aropen WHERE ((aropen_cust_id=getCustId(pCustNumber,true)) AND (UPPER(aropen_doctype)=UPPER(pDocType)) AND (UPPER(aropen_docnumber)=UPPER(pDocNumber))); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'AR Open Item % not found.', pDocNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getaropenid(text, character, text) OWNER TO admin; -- -- Name: getbankaccntid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getbankaccntid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankAccntName ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pBankAccntName IS NULL) THEN RETURN NULL; END IF; SELECT bankaccnt_id INTO _returnVal FROM bankaccnt WHERE (UPPER(bankaccnt_name)=UPPER(pBankAccntName)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Bank Account % not found.', pBankAccntName; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getbankaccntid(text) OWNER TO admin; -- -- Name: getbomitemid(text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getbomitemid(text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemNumber ALIAS FOR $1; pRevision ALIAS FOR $2; pSeqNumber ALIAS FOR $3; _returnVal INTEGER; BEGIN IF ((pItemNumber IS NULL) OR (pSeqNumber IS NULL) OR (pItemNumber = '') OR (pSeqNumber = '') ) THEN RETURN NULL; END IF; SELECT bomitem_id INTO _returnVal FROM bomitem(getItemId(pItemNumber),COALESCE(getRevId('BOM',pItemNumber,pRevision))) WHERE (bomitem_seqnumber=pSeqNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Sequence % on Bill of Material % Revision % not found.', pSeqNumber, pItemNumber, pRevision; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getbomitemid(text, text, text) OWNER TO admin; -- -- Name: getbooitemseqid(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getbooitemseqid(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemNumber ALIAS FOR $1; pSeqNumber ALIAS FOR $2; _revid INTEGER; _returnVal INTEGER; BEGIN IF ((pItemNumber IS NULL) OR (pSeqNumber IS NULL)) THEN RETURN NULL; END IF; IF (NOT fetchMetricBool('Routings')) THEN RETURN -1; ELSE SELECT booitem_seq_id INTO _returnVal FROM booitem(getItemId(pItemNumber)) WHERE (booitem_seqnumber=CAST(pSeqNumber AS integer)); END IF; IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Boo Sequence % for Item % not found.', pSeqNumber, pItemNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getbooitemseqid(text, text) OWNER TO admin; -- -- Name: getbudgheadid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getbudgheadid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBudghead ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pBudghead IS NULL) THEN RETURN NULL; END IF; SELECT budghead_id INTO _returnVal FROM budghead WHERE (budghead_name=(pBudghead)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Budget % not found.', pBudghead; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getbudgheadid(text) OWNER TO admin; -- -- Name: getcashrcptid(text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcashrcptid(text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustNumber ALIAS FOR $1; pFundsType ALIAS FOR $2; pDocNumber ALIAS FOR $3; _returnVal INTEGER; BEGIN IF ((pCustNumber IS NULL) OR (pFundsType IS NULL) OR (pDocNumber IS NULL)) THEN RETURN NULL; END IF; SELECT cashrcpt_id INTO _returnVal FROM cashrcpt WHERE ((cashrcpt_cust_id=getCustId(pCustNumber,true)) AND (UPPER(cashrcpt_fundstype)=UPPER(pFundsType)) AND (UPPER(cashrcpt_docnumber)=UPPER(pDocNumber))); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Cash Receipt % not found.', pDocNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getcashrcptid(text, text, text) OWNER TO admin; -- -- Name: getcharid(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcharid(pchar text, ptype text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (COALESCE(pChar, '') = '') THEN RETURN NULL; END IF; SELECT char_id INTO _returnVal FROM char WHERE ((char_name=pChar) AND ((pType IN ('C','CT') AND char_customers) OR (pType IN ('I','SI','QI','W','PI','TI') AND char_items) OR (pType='CRMACCT' AND char_crmaccounts) OR (pType='ADDR' AND char_addresses) OR (pType='CNTCT' AND char_contacts) OR (pType='LS' AND char_lotserial) OR (pType='EMP' AND char_employees) OR (pType='INCDT' AND char_incidents) )) LIMIT 1; IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Characteristic % not found.', pChar; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getcharid(pchar text, ptype text) OWNER TO admin; -- -- Name: getclasscodeid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getclasscodeid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pClassCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pClassCode IS NULL) THEN RETURN NULL; END IF; SELECT classcode_id INTO _returnVal FROM classcode WHERE (classcode_code=pClassCode); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Class Code % not found.', pClassCode; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getclasscodeid(text) OWNER TO admin; -- -- Name: getcmheadid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcmheadid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCreditMemoNumber ALIAS FOR $1; BEGIN RETURN getCmheadId(pCreditMemoNumber, NULL); END; $_$; ALTER FUNCTION public.getcmheadid(text) OWNER TO admin; -- -- Name: getcmheadid(text, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcmheadid(text, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCreditMemoNumber ALIAS FOR $1; pPosted ALIAS FOR $2; _returnVal INTEGER; BEGIN IF (pCreditMemoNumber IS NULL) THEN RETURN NULL; END IF; SELECT cmhead_id INTO _returnVal FROM cmhead WHERE (UPPER(cmhead_number)=UPPER(pCreditMemoNumber)) AND ((pPosted IS NULL) OR (cmhead_posted=pPosted)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Credit Memo % not found.', pCreditMemoNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getcmheadid(text, boolean) OWNER TO admin; -- -- Name: getcmnttypeid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcmnttypeid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmntType ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (COALESCE(TRIM(pCmntType), '') = '') THEN RETURN NULL; END IF; SELECT cmnttype_id INTO _returnVal FROM cmnttype WHERE (cmnttype_name=pCmntType) LIMIT 1; IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Comment Type % not found.', pCmntType; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getcmnttypeid(text) OWNER TO admin; -- -- Name: getcntctid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcntctid(pcontactnumber text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN SELECT getCntctId(pContactNumber,true) INTO _returnVal; RETURN _returnVal; END; $$; ALTER FUNCTION public.getcntctid(pcontactnumber text) OWNER TO admin; -- -- Name: getcntctid(text, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcntctid(pcontactnumber text, pnotfounderr boolean) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (COALESCE(TRIM(pContactNumber), '') = '') THEN RETURN NULL; END IF; SELECT cntct_id INTO _returnVal FROM cntct WHERE (cntct_number=pContactNumber); IF (_returnVal IS NULL AND pNotFoundErr) THEN RAISE EXCEPTION 'Contact Number % not found.', pContactNumber; ELSIF (_returnVal IS NULL) THEN RETURN NULL; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getcntctid(pcontactnumber text, pnotfounderr boolean) OWNER TO admin; -- -- Name: getcoheadid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcoheadid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSalesOrderNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pSalesOrderNumber IS NULL) THEN RETURN NULL; END IF; SELECT cohead_id INTO _returnVal FROM cohead WHERE (cohead_number=pSalesOrderNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Sales Order % not found.', pSalesOrderNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getcoheadid(text) OWNER TO admin; -- -- Name: getcoitemid(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcoitemid(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSalesOrderNumber ALIAS FOR $1; pLineNumber ALIAS FOR $2; _linenumber INTEGER; _subnumber INTEGER; _returnVal INTEGER; BEGIN IF (pSalesOrderNumber IS NULL OR pLineNumber IS NULL) THEN RETURN NULL; END IF; --Parse Line Number IF (position('.' in pLineNumber) > 0) THEN _linenumber := CAST(substring(pLineNumber from 1 for position('.' in pLineNumber)-1) AS INTEGER); _subnumber := CAST(substring(pLineNumber from position('.' in pLineNumber)+1 for length(pLineNumber)) AS INTEGER); ELSE _linenumber := CAST(pLineNumber AS INTEGER); _subnumber := 0; END IF; SELECT coitem_id INTO _returnVal FROM cohead, coitem WHERE ((cohead_number=pSalesOrderNumber) AND (coitem_cohead_id=cohead_id) AND (coitem_linenumber=_linenumber) AND (coitem_subnumber=_subnumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Sales Order % not found.', pSalesOrderNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getcoitemid(text, text) OWNER TO admin; -- -- Name: getcontrcteffective(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcontrcteffective(pcontrctnumber text) RETURNS date LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal DATE; BEGIN IF (pContrctNumber IS NULL) THEN RETURN NULL; END IF; SELECT contrct_effective INTO _returnVal FROM contrct WHERE (contrct_number=pContrctNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Contract Number % not found.', pContrctNumber; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getcontrcteffective(pcontrctnumber text) OWNER TO admin; -- -- Name: getcontrctexpires(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcontrctexpires(pcontrctnumber text) RETURNS date LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal DATE; BEGIN IF (pContrctNumber IS NULL) THEN RETURN NULL; END IF; SELECT contrct_expires INTO _returnVal FROM contrct WHERE (contrct_number=pContrctNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Contract Number % not found.', pContrctNumber; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getcontrctexpires(pcontrctnumber text) OWNER TO admin; -- -- Name: getcontrctid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcontrctid(pcontrctnumber text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pContrctNumber IS NULL) THEN RETURN NULL; END IF; SELECT contrct_id INTO _returnVal FROM contrct WHERE (contrct_number=pContrctNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Contract Number % not found.', pContrctNumber; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getcontrctid(pcontrctnumber text) OWNER TO admin; -- -- Name: getcostcatid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcostcatid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCostCat ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pCostCat IS NULL) THEN RETURN NULL; END IF; SELECT costcat_id INTO _returnVal FROM costcat WHERE (costcat_code=pCostCat); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Cost Category Code % not found.', pCostCat; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getcostcatid(text) OWNER TO admin; -- -- Name: getcostelemid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcostelemid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCostElemType ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pCostElemType IS NULL) THEN RETURN NULL; END IF; SELECT costelem_id INTO _returnVal FROM costelem WHERE (costelem_type=pCostElemType); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Cost Element % not found.', pCostElemType; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getcostelemid(text) OWNER TO admin; -- -- Name: getcrmacctid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcrmacctid(pacctnumber text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pAcctNumber IS NULL) THEN RETURN NULL; END IF; SELECT crmacct_id INTO _returnVal FROM crmacct WHERE (UPPER(crmacct_number)=UPPER(pAcctNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'CRM Account Number % not found.', pAcctNumber; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getcrmacctid(pacctnumber text) OWNER TO admin; -- -- Name: getcurrid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcurrid(pcurrname text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pCurrName IS NULL) THEN RETURN NULL; END IF; SELECT curr_id INTO _returnVal FROM curr_symbol WHERE (curr_abbr=pCurrName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Currency % not found.', pCurrName; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getcurrid(pcurrname text) OWNER TO admin; -- -- Name: getcustid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcustid(pcustnumber text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN SELECT getCustId(pCustNumber,false) INTO _returnVal; RETURN _returnVal; END; $$; ALTER FUNCTION public.getcustid(pcustnumber text) OWNER TO admin; -- -- Name: getcustid(text, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcustid(pcustnumber text, pinclprospects boolean) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pCustNumber IS NULL) THEN RETURN NULL; END IF; SELECT cust_id INTO _returnVal FROM custinfo WHERE (cust_number=UPPER(pCustNumber)); IF (_returnVal IS NULL) THEN IF (pInclProspects) THEN SELECT prospect_id INTO _returnVal FROM prospect WHERE (UPPER(prospect_number)=UPPER(pCustNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Neither Customer nor Prospect Number % found.', pCustNumber; END IF; ELSE RAISE EXCEPTION 'Customer Number % not found.', pCustNumber; END IF; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getcustid(pcustnumber text, pinclprospects boolean) OWNER TO admin; -- -- Name: getcustnamefrominfo(text, text, text, text, text, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcustnamefrominfo(text, text, text, text, text, boolean) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _email TEXT := COALESCE(UPPER($1), ''); _company TEXT := COALESCE(UPPER($2), ''); _first TEXT := COALESCE(UPPER($3), ''); _last TEXT := COALESCE(UPPER($4), ''); _fullname TEXT := COALESCE(UPPER($5), ''); _generate BOOLEAN := COALESCE($6, FALSE); _counter INTEGER; _custcount INTEGER := 0; _custname TEXT; _candidate RECORD; _r RECORD; BEGIN IF (_email != '') THEN SELECT count(*), cust_name INTO _custcount, _custname FROM custinfo LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) WHERE (UPPER(cntct_email)=_email) GROUP BY cust_name; IF (NOT FOUND) THEN _custcount := 0; ELSIF(_custcount = 1) THEN RETURN _custname; END IF; END IF; IF (_company != '') THEN SELECT count(*), cust_name INTO _custcount, _custname FROM custinfo WHERE (UPPER(cust_name)=_company) GROUP BY cust_name; IF (NOT FOUND) THEN _custcount := 0; ELSIF(_custcount = 1) THEN RETURN _custname; END IF; END IF; IF (_fullname = '' AND (_first != '' OR _last != '')) THEN _fullname := TRIM(_first || ' ' || _last); END IF; IF (_custcount <= 0 AND _fullname != '') THEN SELECT count(*), cust_name INTO _custcount, _custname FROM custinfo WHERE (UPPER(cust_name)=_fullname) GROUP BY cust_name; IF (NOT FOUND) THEN _custcount := 0; ELSIF(_custcount = 1) THEN RETURN _custname; END IF; END IF; IF (_custcount > 1) THEN RAISE EXCEPTION 'Found % possible Customers for % and % and %', _custcount, _email, _company, _fullname; END IF; IF (_custcount <= 0 AND _generate) THEN IF (_company != '') THEN RETURN _company; ELSIF (_email != '') THEN RETURN _email; ELSIF (_fullname != '') THEN RETURN _fullname; ELSE RAISE EXCEPTION 'Could not generate a new Customer Name without an email address or the name of a company or person'; END IF; END IF; IF (_custname IS NULL OR _custname = '') THEN RAISE EXCEPTION 'Could not find Customer Name for % and %', _company, _fullname; END IF; RETURN _custname; END; $_$; ALTER FUNCTION public.getcustnamefrominfo(text, text, text, text, text, boolean) OWNER TO admin; -- -- Name: getcustnumberfrominfo(text, text, text, text, text, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcustnumberfrominfo(text, text, text, text, text, boolean) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _email TEXT := COALESCE(UPPER($1), ''); _company TEXT := COALESCE(UPPER($2), ''); _first TEXT := COALESCE(UPPER($3), ''); _last TEXT := COALESCE(UPPER($4), ''); _fullname TEXT := COALESCE(UPPER($5), TRIM(_first || ' ' || _last)); _generate BOOLEAN := COALESCE($6, FALSE); _counter INTEGER; _custcount INTEGER := 0; _custnumber TEXT; _candidate TEXT := ''; _loopmax INTEGER := 0; _minlength INTEGER := 5; _maxlength INTEGER := 8; _numformat TEXT := ''; _testme TEXT; BEGIN IF (_email != '') THEN SELECT count(*), cust_number INTO _custcount, _custnumber FROM custinfo LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) WHERE (UPPER(cntct_email)=_email) GROUP BY cust_number; IF (NOT FOUND) THEN _custcount := 0; ELSIF(_custcount = 1) THEN RETURN _custnumber; END IF; END IF; IF (_company != '') THEN SELECT count(*), cust_number INTO _custcount, _custnumber FROM custinfo WHERE (UPPER(cust_name)=_company) GROUP BY cust_number; IF (NOT FOUND) THEN _custcount := 0; ELSIF(_custcount = 1) THEN RETURN _custnumber; END IF; END IF; IF (_fullname = '' AND (_first != '' OR _last != '')) THEN _fullname := TRIM(_first || ' ' || _last); END IF; IF (_custcount <= 0 AND _fullname != '') THEN SELECT count(*), cust_number INTO _custcount, _custnumber FROM custinfo WHERE (UPPER(cust_name)=_fullname) GROUP BY cust_number; IF (NOT FOUND) THEN _custcount := 0; ELSIF(_custcount = 1) THEN RETURN _custnumber; END IF; END IF; IF (_custcount > 1) THEN RAISE EXCEPTION 'Found % possible Customers for % and % and %', _custcount, _email, _company, _fullname; END IF; IF (_custcount <= 0 AND _generate) THEN IF (_maxlength < _minlength) THEN RAISE EXCEPTION 'Fix getCustNumberFromInfo: max length < min length'; END IF; IF (_company != '') THEN _candidate := _company; ELSIF (_email != '') THEN _candidate := SUBSTRING(_email FOR POSITION('@' IN _email) - 1); ELSIF (_last != '') THEN _candidate := _last; IF (_first != '') THEN _candidate := _candidate || _first; END IF; ELSIF (_fullname != '' AND (POSITION(' ' IN _fullname) > 0)) THEN _candidate := SUBSTRING(_fullname FROM POSITION(' ' IN _fullname) + 1) || SUBSTRING(_fullname FOR POSITION(' ' IN _fullname) - 1); END IF; WHILE (POSITION(' ' IN _candidate) > 0) LOOP _candidate := SUBSTRING(_candidate FOR POSITION(' ' IN _candidate) - 1) || SUBSTRING(_candidate FROM POSITION(' ' IN _candidate) + 1); END LOOP; FOR _counter IN _minlength.._maxlength LOOP _testme := SUBSTRING(_candidate FOR _counter); IF (NOT EXISTS(SELECT cust_number FROM custinfo WHERE (cust_number=_testme))) THEN _custnumber := _testme; EXIT; END IF; END LOOP; IF (_custnumber IS NULL OR _custnumber = '') THEN IF (LENGTH(_candidate) < _minlength) THEN _minlength := LENGTH(_candidate); END IF; FOR _counter IN _minlength.._maxlength LOOP _loopmax := _loopmax * 10 + 9; _numformat := _numformat || '0'; END LOOP; FOR _counter IN 1.._loopmax LOOP _testme := SUBSTRING(_candidate FOR _minlength) || TRIM(TO_CHAR(_counter, _numformat)); IF (NOT EXISTS(SELECT cust_number FROM custinfo WHERE (cust_number=_testme))) THEN _custnumber := _testme; EXIT; END IF; END LOOP; END IF; IF (_custnumber IS NULL OR _custnumber = '') THEN RAISE EXCEPTION 'Could not generate a new Customer Number'; END IF; END IF; IF (_custnumber IS NULL OR _custnumber = '') THEN RAISE EXCEPTION 'Could not find Customer Number for % and % and %', _email, _company, _fullname; END IF; RETURN _custnumber; END; $_$; ALTER FUNCTION public.getcustnumberfrominfo(text, text, text, text, text, boolean) OWNER TO admin; -- -- Name: getcusttypeid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getcusttypeid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustTypeCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pCustTypeCode IS NULL) THEN RETURN NULL; END IF; SELECT custtype_id INTO _returnVal FROM custtype WHERE (custtype_code=pCustTypeCode); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Customer Type % not found.', pCustTypeCode; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getcusttypeid(text) OWNER TO admin; -- -- Name: getdeptid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getdeptid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pDeptNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (COALESCE(TRIM(pDeptNumber), '') = '') THEN RETURN NULL; END IF; SELECT dept_id INTO _returnVal FROM dept WHERE (UPPER(dept_number)=UPPER(pDeptNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Department % not found.', pDeptNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getdeptid(text) OWNER TO admin; -- -- Name: getediprofileid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getediprofileid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pEdiProfileName ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pEdiProfileName IS NULL) THEN RETURN NULL; END IF; SELECT pkghead_id INTO _returnVal FROM pkghead WHERE(pkghead_name='xtbatch'); IF(NOT FOUND) THEN RETURN NULL; END IF; SELECT ediprofile_id INTO _returnVal FROM xtbatch.ediprofile WHERE (ediprofile_name=pEdiProfileName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'EDI Profile % not found.', pEdiProfileName; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getediprofileid(text) OWNER TO admin; -- -- Name: getediprofilename(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getediprofilename(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pEdiProfileId ALIAS FOR $1; _returnVal TEXT; BEGIN IF (pEdiProfileId IS NULL) THEN RETURN NULL; END IF; SELECT pkghead_name INTO _returnVal FROM pkghead WHERE(pkghead_name='xtbatch'); IF(NOT FOUND) THEN RETURN NULL; END IF; SELECT ediprofile_name INTO _returnVal FROM xtbatch.ediprofile WHERE (ediprofile_id=pEdiProfileId); RETURN _returnVal; END; $_$; ALTER FUNCTION public.getediprofilename(integer) OWNER TO admin; -- -- Name: getempid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getempid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pEmpCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (COALESCE(TRIM(pEmpCode), '') = '') THEN RETURN NULL; END IF; SELECT emp_id INTO _returnVal FROM emp WHERE (UPPER(emp_code)=UPPER(pEmpCode)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Employee % not found.', pEmpCode; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getempid(text) OWNER TO admin; -- -- Name: getexpcatid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getexpcatid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pExpcatCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (COALESCE(TRIM(pExpcatCode), '') = '') THEN RETURN NULL; END IF; SELECT expcat_id INTO _returnVal FROM expcat WHERE (expcat_code=UPPER(pExpcatCode)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Expense Category % not found.', pExpcatCode; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getexpcatid(text) OWNER TO admin; -- -- Name: getflcoldata(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getflcoldata(integer, integer) RETURNS SETOF flcoldata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlcolid ALIAS FOR $1; pPeriodid ALIAS FOR $2; _row flcoldata%ROWTYPE; _r RECORD; _start DATE; _end DATE; _col INTEGER := 1; _mult INTEGER; BEGIN --Get Layout Data SELECT * INTO _r FROM flcol WHERE (flcol_id=pFlcolid); -- Handle Month... IF (_r.flcol_month) THEN SELECT period_start, period_end INTO _start, _end FROM period WHERE (period_id=pPeriodid); IF (_r.flcol_showdb) THEN -- Debits Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; -- Credits Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; END IF; -- Month Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; -- These don't have drill down IF (_r.flcol_prcnt) THEN _col := _col + 1; END IF; IF (_r.flcol_budget) THEN _col := _col + 1; IF (_r.flcol_budgetprcnt) THEN _col := _col + 1; END IF; IF (_r.flcol_budgetdiff) THEN _col := _col + 1; END IF; IF (_r.flcol_budgetdiffprcnt) THEN _col := _col + 1; END IF; END IF; END IF; -- Handle Quarter... IF (_r.flcol_quarter) THEN SELECT min(qtr.period_start), max(qtr.period_end) INTO _start, _end FROM period p JOIN period qtr ON (p.period_quarter=qtr.period_quarter) AND (p.period_yearperiod_id=qtr.period_yearperiod_id) WHERE (p.period_id=pPeriodid); IF (_r.flcol_showdb) THEN -- Debits Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; -- Credits Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; END IF; -- Quarter Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; -- These don't have drill down IF (_r.flcol_prcnt) THEN _col := _col + 1; END IF; IF (_r.flcol_budget) THEN _col := _col + 1; IF (_r.flcol_budgetprcnt) THEN _col := _col + 1; END IF; IF (_r.flcol_budgetdiff) THEN _col := _col + 1; END IF; IF (_r.flcol_budgetdiffprcnt) THEN _col := _col + 1; END IF; END IF; END IF; -- Handle Year... IF (_r.flcol_year) THEN SELECT yearperiod_start, period_end INTO _start, _end FROM period p JOIN yearperiod ON (period_yearperiod_id=yearperiod_id) WHERE (p.period_id=pPeriodid); IF (_r.flcol_showdb) THEN -- Debits Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; -- Credits Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; END IF; -- Year Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; -- These don't have drill down IF (_r.flcol_prcnt) THEN _col := _col + 1; END IF; IF (_r.flcol_budget) THEN _col := _col + 1; IF (_r.flcol_budgetprcnt) THEN _col := _col + 1; END IF; IF (_r.flcol_budgetdiff) THEN _col := _col + 1; END IF; IF (_r.flcol_budgetdiffprcnt) THEN _col := _col + 1; END IF; END IF; END IF; -- Handle Prior Month... IF (_r.flcol_priormonth) THEN SELECT prv.period_start, prv.period_end INTO _start, _end FROM period p JOIN period prv ON (prv.period_start < p.period_start) WHERE (p.period_id=pPeriodid) ORDER BY prv.period_start DESC LIMIT 1; -- Prior Month Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; -- These don't have drill down IF (_r.flcol_priorprcnt) THEN _col := _col + 1; END IF; IF (_r.flcol_priordiff) THEN _col := _col + 1; END IF; IF (_r.flcol_priordiffprcnt) THEN _col := _col + 1; END IF; END IF; -- Handle Prior Quarter... IF (_r.flcol_priorquarter) THEN IF (_r.flcol_priortype = 'P') THEN -- Prior Quarter SELECT min(period_start), max(period_end) INTO _start, _end FROM ( SELECT prv.period_start, prv.period_end, prv.period_quarter, prv.period_yearperiod_id FROM period p JOIN period prv ON (prv.period_start < p.period_start) AND (prv.period_quarter != p.period_quarter) WHERE (p.period_id=pPeriodid)) data GROUP BY period_quarter, period_yearperiod_id ORDER BY min(period_start) DESC LIMIT 1; ELSE -- Prior Year Quarter SELECT min(period_start), max(period_end) INTO _start, _end FROM ( SELECT prv.period_start, prv.period_end, prv.period_quarter, prv.period_yearperiod_id FROM period p JOIN period prv ON (prv.period_start < p.period_start) AND (prv.period_yearperiod_id != p.period_yearperiod_id) AND (prv.period_quarter = p.period_quarter) WHERE (p.period_id=pPeriodid)) data GROUP BY period_quarter, period_yearperiod_id ORDER BY min(period_start) DESC LIMIT 1; END IF; -- Prior Quarter Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; -- These don't have drill down IF (_r.flcol_priorprcnt) THEN _col := _col + 1; END IF; IF (_r.flcol_priordiff) THEN _col := _col + 1; END IF; IF (_r.flcol_priordiffprcnt) THEN _col := _col + 1; END IF; END IF; -- Handle Prior Year... IF (_r.flcol_prioryear IN ('D','F')) THEN IF (_r.flcol_prioryear = 'D') THEN -- Prior Year to Date SELECT yearperiod_start, prv.period_end INTO _start, _end FROM period p JOIN period prv ON (prv.period_number = p.period_number) AND (prv.period_yearperiod_id != p.period_yearperiod_id) AND (prv.period_start < p.period_start) JOIN yearperiod ON (prv.period_yearperiod_id=yearperiod_id) WHERE (p.period_id=pPeriodid) ORDER BY prv.period_start DESC LIMIT 1; ELSE -- Prior Full Year SELECT prv.yearperiod_start, prv.yearperiod_end INTO _start, _end FROM period p JOIN yearperiod cur ON (cur.yearperiod_id=p.period_yearperiod_id) JOIN yearperiod prv ON (prv.yearperiod_start < cur.yearperiod_start) WHERE (p.period_id=pPeriodid) ORDER BY prv.yearperiod_start DESC LIMIT 1; END IF; -- Prior Year Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; END IF; RETURN; END; $_$; ALTER FUNCTION public.getflcoldata(integer, integer) OWNER TO admin; -- -- Name: getflcoldata(character, integer[], boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getflcoldata(character, integer[], boolean) RETURNS SETOF flcoldata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInterval ALIAS FOR $1; pPeriodids ALIAS FOR $2; pBudgets ALIAS FOR $3; _row flcoldata%ROWTYPE; _r RECORD; _start DATE; _end DATE; _col INTEGER := 1; _count INTEGER; _i INTEGER := 1; _incr INTEGER := 1; BEGIN IF (pBudgets) THEN _col := 2; _incr := 2; END IF; _count := ARRAY_UPPER(pPeriodIds,1); IF (pInterval = 'M') THEN FOR _i IN 1.._count LOOP SELECT period_start, period_end INTO _start, _end FROM period WHERE (period_id=pPeriodids[_i]); _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + _incr; END LOOP; ELSIF (pInterval = 'Q') THEN FOR _i IN 1.._count LOOP SELECT min(qtr.period_start), max(qtr.period_end) INTO _start, _end FROM period cur JOIN period qtr ON (cur.period_yearperiod_id=qtr.period_yearperiod_id) AND (cur.period_quarter=qtr.period_quarter) WHERE (cur.period_id=pPeriodids[_i]); _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + _incr; END LOOP; ELSE FOR _i IN 1.._count LOOP SELECT yearperiod_start, yearperiod_end INTO _start, _end FROM period JOIN yearperiod ON (period_yearperiod_id=yearperiod_id) WHERE (period_id=pPeriodids[_i]); _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + _incr; END LOOP; END IF; RETURN; END; $_$; ALTER FUNCTION public.getflcoldata(character, integer[], boolean) OWNER TO admin; -- -- Name: getflstmthead(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getflstmthead(integer, integer) RETURNS SETOF flstmthead LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlcolid ALIAS FOR $1; pPeriodid ALIAS FOR $2; _row flstmthead%ROWTYPE; _p RECORD; _month TEXT; _qtr TEXT; _year TEXT; _prmonth TEXT; _prqtr TEXT; _pryear TEXT; _err TEXT; BEGIN SELECT 'No Data' INTO _err; --Get Layout Data SELECT flcol_priortype, flcol_prioryear INTO _p FROM flcol WHERE (flcol_id=pFlcolid); --get data... --...for current Month SELECT (CASE WHEN period_name='' THEN formatdate(period_start) || '-' || formatdate(period_end) ELSE period_name END) INTO _month FROM period WHERE (period_id=pPeriodId); IF _month IS NULL THEN _month := _err; END IF; --...for Quarter SELECT ('Q' || period_quarter || '-' || EXTRACT(year from yearperiod_end)) INTO _qtr FROM period, yearperiod WHERE ((period_id=pPeriodId) AND (period_yearperiod_id=yearperiod_id)); IF _qtr IS NULL THEN _qtr := _err; END IF; --...for Year SELECT COALESCE((CASE WHEN period_name='' THEN (formatdate(period_start) || '-' || formatdate(period_end) || ' YTD') ELSE (period_name || ' YTD') END),'No Data') INTO _year FROM period WHERE (period_id=pPeriodId); IF _year IS NULL THEN _year := _err; END IF; --...for prior month IF (_p.flcol_priortype = 'P') THEN SELECT (CASE WHEN pp.period_name='' THEN formatdate(pp.period_start) || '-' || formatdate(pp.period_end) ELSE pp.period_name END) INTO _prmonth FROM period cp, period pp WHERE ((cp.period_id=pPeriodId) AND (cp.period_start > pp.period_start)) ORDER BY pp.period_start DESC LIMIT 1; ELSE SELECT (CASE WHEN pp.period_name='' THEN formatdate(pp.period_start) || '-' || formatdate(pp.period_end) ELSE pp.period_name END) INTO _prmonth FROM period cp, period pp WHERE ((cp.period_id=pPeriodId) AND (cp.period_id != pp.period_id) AND (cp.period_start > pp.period_start) AND (cp.period_number = pp.period_number)) ORDER BY pp.period_start DESC LIMIT 1; END IF; IF _prmonth IS NULL THEN _prmonth := _err; END IF; --...for prior quarter IF (_p.flcol_priortype='P') THEN SELECT ('Q' || pp.period_quarter || '-' || EXTRACT(year from yearperiod_end)) INTO _prqtr FROM period cp, period pp, yearperiod WHERE ((cp.period_id=pPeriodId) AND (cp.period_start > pp.period_start) AND (pp.period_quarter= CASE WHEN cp.period_quarter > 1 THEN cp.period_quarter - 1 ELSE 4 END) AND (pp.period_start >= cp.period_start - interval '1 year') AND (pp.period_yearperiod_id=yearperiod_id)) ORDER BY pp.period_start DESC LIMIT 1; ELSE SELECT ('Q' || pp.period_quarter || '-' || EXTRACT(year from pp.period_start)) INTO _prqtr FROM period cp, period pp, yearperiod cy, yearperiod py WHERE ((cp.period_id=pPeriodId) AND (cp.period_yearperiod_id=cy.yearperiod_id) AND (pp.period_yearperiod_id=py.yearperiod_id) AND (cp.period_quarter=pp.period_quarter) AND (cy.yearperiod_start > py.yearperiod_start)) ORDER BY py.yearperiod_start DESC, pp.period_start DESC LIMIT 1; END IF; IF _prqtr IS NULL THEN _prqtr := _err; END IF; --...for prior year IF (_p.flcol_prioryear='F') THEN SELECT (EXTRACT(year from py.yearperiod_end)||'') INTO _pryear FROM period cp, yearperiod cy, yearperiod py WHERE ((cp.period_id=pPeriodId) AND (cp.period_yearperiod_id = cy.yearperiod_id) AND (cy.yearperiod_start > py.yearperiod_start)) ORDER BY py.yearperiod_start DESC LIMIT 1; ELSE SELECT (CASE WHEN pp.period_name='' THEN formatdate(pp.period_start) || '-' || formatdate(pp.period_end) || ' YTD' ELSE pp.period_name || ' YTD' END) INTO _pryear FROM period cp, period pp WHERE ((cp.period_id=pPeriodId) AND (cp.period_number = pp.period_number) AND (cp.period_start > pp.period_start)) ORDER BY pp.period_start DESC LIMIT 1; END IF; IF _pryear IS NULL THEN _pryear := _err; END IF; -- RETURN RESULTS SELECT flhead_id AS flstmthead_flhead_id, flcol_id AS flstmthead_flcol_id, pPeriodid AS flstmthead_period, getEffectiveXtUser() AS flstmthead_username, CASE WHEN flhead_type = 'I' THEN 'Income Statement' WHEN flhead_type = 'B' THEN 'Balance Sheet' WHEN flhead_type = 'C' THEN 'Cash Flow Statement' ELSE 'N/A' END AS flstmthead_flhead_typedescrip1, CASE WHEN flhead_type = 'I' THEN 'Income' WHEN flhead_type = 'B' THEN 'Balance' WHEN flhead_type = 'C' THEN 'Cash' ELSE 'N/A' END AS flstmthead_flhead_typedescrip2, flhead_name AS flstmthead_flhead_name, flcol_name AS flstmthead_flcol_name, _month AS flstmthead_month, _qtr AS flstmthead_qtr, _year AS flstmthead_year, _prmonth AS flstmthead_prmonth, _prqtr AS flstmthead_prqtr, _pryear AS flstmthead_pryear INTO _p FROM flhead,flcol WHERE ((flcol_id=pFlcolid) AND (flhead_id=flcol_flhead_id)); _row.flstmthead_flhead_id := _p.flstmthead_flhead_id; _row.flstmthead_flcol_id := _p.flstmthead_flcol_id; _row.flstmthead_period_id := _p.flstmthead_period; _row.flstmthead_username := _p.flstmthead_username; _row.flstmthead_typedescrip1 := _p.flstmthead_flhead_typedescrip1; _row.flstmthead_typedescrip2 := _p.flstmthead_flhead_typedescrip2; _row.flstmthead_flhead_name := _p.flstmthead_flhead_name; _row.flstmthead_flcol_name := _p.flstmthead_flcol_name; _row.flstmthead_month := _p.flstmthead_month; _row.flstmthead_qtr := _p.flstmthead_qtr; _row.flstmthead_year := _p.flstmthead_year; _row.flstmthead_prmonth := _p.flstmthead_prmonth; _row.flstmthead_prqtr := _p.flstmthead_prqtr; _row.flstmthead_pryear := _p.flstmthead_pryear; RETURN NEXT _row; END; $_$; ALTER FUNCTION public.getflstmthead(integer, integer) OWNER TO admin; -- -- Name: getfltrendhead(integer, integer[], character); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getfltrendhead(integer, integer[], character) RETURNS SETOF fltrendhead LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlheadid ALIAS FOR $1; pPeriodids ALIAS FOR $2; pInterval ALIAS FOR $3; _row fltrendhead%ROWTYPE; _p RECORD; _count INTEGER; _i INTEGER; _t TEXT; _fld TEXT[]; _type CHAR; BEGIN -- Validate Interval IF pInterval <> 'M' AND pInterval <> 'Q' AND pInterval <> 'Y' THEN RAISE EXCEPTION 'Invalid Interval --> %', pInterval; END IF; IF ARRAY_UPPER(pPeriodIds,1) <= 12 THEN _count := ARRAY_UPPER(pPeriodIds,1); ELSE _count := 12; END IF; SELECT flhead_type INTO _type FROM flhead WHERE flhead_id = pFlheadId; --get data... --...for Month IF (pInterval = 'M') THEN FOR _i IN 1.._count LOOP SELECT (CASE WHEN period_name='' THEN formatdate(period_start) || '-' || formatdate(period_end) ELSE period_name END) INTO _t FROM period WHERE (period_id=pPeriodIds[_i]); _fld[_i] := _t; END LOOP; --...for Quarter ELSE IF (pInterval = 'Q') THEN FOR _i IN 1.._count LOOP SELECT ('Q' || period_quarter || '-' || EXTRACT(year from yearperiod_end)) INTO _t FROM period, yearperiod WHERE ((period_id=pPeriodIds[_i]) AND (period_yearperiod_id=yearperiod_id)); _fld[_i] := _t; END LOOP; --...for Year ELSE FOR _i IN 1.._count LOOP SELECT (EXTRACT(year from yearperiod_end)||'') INTO _t FROM period, yearperiod WHERE ((period_id=pPeriodIds[_i]) AND (period_yearperiod_id=yearperiod_id)); _fld[_i] := _t; END LOOP; END IF; END IF; -- RETURN RESULTS SELECT flhead_id AS fltrendhead_flhead_id, getEffectiveXtUser() AS fltrendhead_username, CASE WHEN flhead_type = 'I' THEN 'Income Statement' WHEN flhead_type = 'B' THEN 'Balance Sheet' WHEN flhead_type = 'C' THEN 'Cash Flow Statement' ELSE 'Ad Hoc' END AS fltrendhead_flhead_typedescrip, flhead_name AS fltrendhead_flhead_name INTO _p FROM flhead WHERE (flhead_id=pFlheadId); _row.fltrendhead_flhead_id := _p.fltrendhead_flhead_id; _row.fltrendhead_username := _p.fltrendhead_username; _row.fltrendhead_typedescrip := _p.fltrendhead_flhead_typedescrip; _row.fltrendhead_flhead_name := _p.fltrendhead_flhead_name; _row.fltrendhead_fld1 := _fld[1]; _row.fltrendhead_fld2 := _fld[2]; _row.fltrendhead_fld3 := _fld[3]; _row.fltrendhead_fld4 := _fld[4]; _row.fltrendhead_fld5 := _fld[5]; _row.fltrendhead_fld6 := _fld[6]; _row.fltrendhead_fld7 := _fld[7]; _row.fltrendhead_fld8 := _fld[8]; _row.fltrendhead_fld9 := _fld[9]; _row.fltrendhead_fld10 := _fld[10]; _row.fltrendhead_fld11 := _fld[11]; _row.fltrendhead_fld12 := _fld[12]; IF (_type IN ('I','C')) THEN _row.fltrendhead_grndttl := 'Total'; END IF; RETURN NEXT _row; END; $_$; ALTER FUNCTION public.getfltrendhead(integer, integer[], character) OWNER TO admin; -- -- Name: getfreightclassid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getfreightclassid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFreightClassCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pFreightClassCode IS NULL) THEN RETURN NULL; END IF; SELECT freightclass_id INTO _returnVal FROM freightclass WHERE (freightclass_code=pFreightClassCode); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Freight Class % not found.', pFreightClassCode; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getfreightclassid(text) OWNER TO admin; -- -- Name: getfreighttaxtypeid(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getfreighttaxtypeid() RETURNS integer LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _taxtypeid INTEGER; BEGIN SELECT taxtype_id INTO _taxtypeid FROM taxtype WHERE (taxtype_name='Freight'); RETURN _taxtypeid; END; $$; ALTER FUNCTION public.getfreighttaxtypeid() OWNER TO admin; -- -- Name: getgainlossaccntid(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getgainlossaccntid(integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAccntId ALIAS FOR $1; _returnVal INTEGER; BEGIN IF ( (pAccntId = 0) OR (pAccntId IS NULL) ) THEN RETURN 0; END IF; IF (fetchMetricValue('GLCompanySize') = 0) THEN _returnVal := fetchMetricValue('CurrencyGainLossAccount')::integer; ELSE SELECT company_gainloss_accnt_id INTO _returnVal FROM company JOIN accnt ON (company_number=accnt_company) WHERE (accnt_id=pAccntId); END IF; IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Currency Gain/Loss Account not found for %', formatGlAccountLong(pAccntId); END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getgainlossaccntid(integer) OWNER TO admin; -- -- Name: getglaccntid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getglaccntid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pGlAccnt ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pGlAccnt IS NULL) THEN RETURN NULL; END IF; SELECT accnt_id INTO _returnVal FROM accnt WHERE (formatglaccount(accnt_id)=pGlAccnt); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Account Number % not found.', pGlAccnt; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getglaccntid(text) OWNER TO admin; -- -- Name: getglaccntid(text, text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getglaccntid(text, text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCompany ALIAS FOR $1; pProfit ALIAS FOR $2; pGlAccnt ALIAS FOR $3; pSub ALIAS FOR $4; _account TEXT; _returnVal INTEGER; BEGIN IF (pGlAccnt IS NULL) THEN RETURN NULL; END IF; IF (pCompany is not null) THEN _account := pCompany || '-'; END IF; IF (pProfit is not null) THEN _account := _account || pProfit || '-'; END IF; IF (pGlAccnt is not null) THEN if (_account is null) then _account := pGlAccnt; else _account := _account || pGlAccnt; end if; END IF; IF (pSub is not null) THEN _account := _account || '-' || pSub; END IF; SELECT accnt_id INTO _returnVal FROM accnt WHERE (formatglaccount(accnt_id)=_account); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Account Number % not found.', _account; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getglaccntid(text, text, text, text) OWNER TO admin; -- -- Name: getimageid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getimageid(pimagename text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (COALESCE(TRIM(pImageName), '') = '') THEN RETURN NULL; END IF; SELECT image_id INTO _returnVal FROM image WHERE (image_name=pImageName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Image % not found.', pImageName; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getimageid(pimagename text) OWNER TO admin; -- -- Name: getincdtcatid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getincdtcatid(pincdtcatname text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pIncdtCatName IS NULL) THEN RETURN NULL; END IF; SELECT incdtcat_id INTO _returnVal FROM incdtcat WHERE (incdtcat_name=pIncdtCatName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Incident Category Name % not found.', pIncdtCatName; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getincdtcatid(pincdtcatname text) OWNER TO admin; -- -- Name: getincdtcrmacctid(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getincdtcrmacctid(pincidentnumber integer) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pIncidentNumber IS NULL) THEN RETURN NULL; END IF; SELECT incdt_crmacct_id INTO _returnVal FROM incdt WHERE (incdt_number=pIncidentNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Incident Number % not found.', pIncidentNumber; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getincdtcrmacctid(pincidentnumber integer) OWNER TO admin; -- -- Name: getincdtpriorityid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getincdtpriorityid(pincdtpriorityname text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pIncdtPriorityName IS NULL) THEN RETURN NULL; END IF; SELECT incdtpriority_id INTO _returnVal FROM incdtpriority WHERE (incdtpriority_name=pIncdtPriorityName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Incident Priority Name % not found.', pIncdtPriorityName; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getincdtpriorityid(pincdtpriorityname text) OWNER TO admin; -- -- Name: getincdtresolutionid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getincdtresolutionid(pincdtresolutionname text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pIncdtResolutionName IS NULL) THEN RETURN NULL; END IF; SELECT incdtresolution_id INTO _returnVal FROM incdtresolution WHERE (incdtresolution_name=pIncdtResolutionName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Incident Resolution Name % not found.', pIncdtResolutionName; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getincdtresolutionid(pincdtresolutionname text) OWNER TO admin; -- -- Name: getincdtseverityid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getincdtseverityid(pincdtseverityname text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pIncdtSeverityName IS NULL) THEN RETURN NULL; END IF; SELECT incdtseverity_id INTO _returnVal FROM incdtseverity WHERE (incdtseverity_name=pIncdtSeverityName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Incident Severity Name % not found.', pIncdtSeverityName; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getincdtseverityid(pincdtseverityname text) OWNER TO admin; -- -- Name: getincidentid(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getincidentid(pincidentnumber integer) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pIncidentNumber IS NULL) THEN RETURN NULL; END IF; SELECT incdt_id INTO _returnVal FROM incdt WHERE (incdt_number=pIncidentNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Incident Number % not found.', pIncidentNumber; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getincidentid(pincidentnumber integer) OWNER TO admin; -- -- Name: getinvcheadid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getinvcheadid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pInvcNumber IS NULL) THEN RETURN NULL; END IF; SELECT invchead_id INTO _returnVal FROM invchead WHERE (UPPER(invchead_invcnumber)=UPPER(pInvcNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Invoice % not found.', pInvcNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getinvcheadid(text) OWNER TO admin; -- -- Name: getinvcitemlotserial(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getinvcitemlotserial(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcitemid ALIAS FOR $1; _lotserial text; _r RECORD; _first BOOLEAN; _newMethod BOOLEAN; BEGIN --Test to see if Lot/Serial Enabled SELECT metric_value INTO _lotserial FROM metric WHERE ((metric_name='LotSerialControl') AND (metric_value ='t')); IF (FOUND) THEN _lotserial := ''; _first := true; -- Two ways of doing this: old method and new method -- First, find out if new method employed. -- (new method is more accurate, but unfortunately no -- way to migrate or correct old data. Have to keep -- old method in case someone reprints an old invoice.) SELECT (COUNT(*) > 0) INTO _newMethod FROM shipitem WHERE ((shipitem_invcitem_id=pInvcitemid) AND (shipitem_invhist_id IS NOT NULL)); IF (_newMethod) THEN FOR _r IN SELECT DISTINCT ls_number FROM invdetail, invhist, shipitem, ls WHERE ((shipitem_invcitem_id=pInvcitemid) AND (shipitem_invhist_id=invhist_id) AND (invhist_id=invdetail_invhist_id) AND (invdetail_ls_id=ls_id)) LOOP IF (_first = false) THEN _lotserial := _lotserial || ', '; END IF; _lotserial := _lotserial || _r.ls_number; _first := false; END LOOP; RETURN _lotserial; ELSE -- Handle it old way FOR _r IN SELECT DISTINCT ls_number FROM ls, invdetail JOIN invhist ON (invdetail_invhist_id=invhist_id) WHERE ((invhist_transtype='SH') AND (invdetail_invcitem_id=pInvcitemid) AND (invdetail_ls_id=ls_id)) LOOP IF (_first = false) THEN _lotserial := _lotserial || ', '; END IF; _lotserial := _lotserial || _r.ls_number; _first := false; END LOOP; RETURN _lotserial; END IF; ELSE RETURN ''; END IF; END $_$; ALTER FUNCTION public.getinvcitemlotserial(integer) OWNER TO admin; -- -- Name: getipsheadid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getipsheadid(pipsname text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pIpsName IS NULL) THEN RETURN NULL; END IF; SELECT ipshead_id INTO _returnVal FROM ipshead WHERE (ipshead_name=pIpsName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Pricing Schedule % not found.', pIpsName; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getipsheadid(pipsname text) OWNER TO admin; -- -- Name: getipsitemid(text, text, numeric, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getipsitemid(pipsname text, pitemnumber text, pqtybreak numeric, pqtyuom text, ppriceuom text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pIpsName IS NULL AND pItemNumber IS NULL AND pQtyBreak IS NULL AND pQtyUom IS NULL AND pPriceUom IS NULL) THEN RETURN NULL; END IF; SELECT ipsitem_id INTO _returnVal FROM ipsiteminfo WHERE ((ipsitem_ipshead_id=getIpsheadId(pIpsName)) AND (ipsitem_item_id=getItemId(pItemNumber)) AND (ipsitem_qtybreak=pQtyBreak) AND (ipsitem_qty_uom_id=getUomId(pQtyUom)) AND (ipsitem_price_uom_id=getUomId(pPriceUom))); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Pricing Schedule Item for Schedule %, Item %,Qt Break %,Qty UOM %, Price UOM % not found.', pIpsName, pItemNumber, pQtyBreak, pQtyUom, pPriceUom; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getipsitemid(pipsname text, pitemnumber text, pqtybreak numeric, pqtyuom text, ppriceuom text) OWNER TO admin; -- -- Name: getipsprodcatid(text, text, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getipsprodcatid(pipsname text, pprodcat text, pqtybreak numeric) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pIpsName IS NULL AND pProdCat IS NULL AND pQtyBreak IS NULL) THEN RETURN NULL; END IF; SELECT ipsitem_id INTO _returnVal FROM ipsiteminfo WHERE ((ipsitem_ipshead_id=getIpsheadId(pIpsName)) AND (ipsitem_prodcat_id=getProdcatId(pProdCat)) AND (ipsitem_qtybreak=pQtyBreak)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Pricing Schedule Product Category for Schedule %, Product Category %,Qt Break % not found.', pIpsName, pProdCat, pQtyBreak; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getipsprodcatid(pipsname text, pprodcat text, pqtybreak numeric) OWNER TO admin; -- -- Name: getitemid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getitemid(text) RETURNS integer LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pItemNumber IS NULL) THEN RETURN NULL; END IF; SELECT item_id INTO _returnVal FROM item WHERE (item_number=UPPER(pItemNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Item % not found.', pItemNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getitemid(text) OWNER TO admin; -- -- Name: getitemidfromupc(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getitemidfromupc(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemUPC ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pItemUPC IS NULL) THEN RETURN NULL; END IF; SELECT item_id INTO _returnVal FROM item WHERE (item_upccode=UPPER(pItemUPC)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Item % not found.', pItemUPC; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getitemidfromupc(text) OWNER TO admin; -- -- Name: getitemsiteid(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getitemsiteid(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehouseCode ALIAS FOR $1; pItemNumber ALIAS FOR $2; _returnVal INTEGER; BEGIN SELECT getItemsiteId(pWarehouseCode,pItemNumber,'ALL') INTO _returnVal; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getitemsiteid(text, text) OWNER TO admin; -- -- Name: getitemsiteid(text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getitemsiteid(text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehouseCode ALIAS FOR $1; pItemNumber ALIAS FOR $2; pType ALIAS FOR $3; _type TEXT; _p RECORD; BEGIN IF ((pWarehouseCode IS NULL) OR (pItemNumber IS NULL)) THEN RETURN NULL; END IF; IF UPPER(pType) NOT IN ('ALL','ACTIVE','SOLD') THEN RAISE EXCEPTION 'Invalid Type %. Valid Itemsite types are ALL and SOLD', pType; END IF; SELECT * INTO _p FROM itemsite, item WHERE ((itemsite_item_id=item_id) AND (itemsite_warehous_id=getWarehousId(pWarehouseCode,'ALL')) AND (item_number=UPPER(pItemNumber))); IF NOT (FOUND) THEN RAISE EXCEPTION 'Item % not found in Warehouse %', pItemNumber, pWarehouseCode; ELSIF ((UPPER(pType)='ACTIVE') OR (UPPER(pType)='SOLD')) THEN IF NOT (_p.item_active) THEN RAISE EXCEPTION 'Item % is inactive.', pItemNumber; ELSE IF NOT (_p.itemsite_active) THEN RAISE EXCEPTION 'Item % is inactive in Warehouse %', pItemNumber, pWarehouseCode; ELSE IF ((UPPER(pType)='SOLD') AND NOT _p.item_sold) THEN RAISE EXCEPTION 'Item % is not sold', pItemNumber; ELSE IF ((UPPER(pType)='SOLD') AND NOT _p.itemsite_sold) THEN RAISE EXCEPTION 'Item % is not sold from Warehouse %', pItemNumber, pWarehouseCode; END IF; END IF; END IF; END IF; END IF; RETURN _p.itemsite_id; END; $_$; ALTER FUNCTION public.getitemsiteid(text, text, text) OWNER TO admin; -- -- Name: getitemsrcid(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getitemsrcid(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemNumber ALIAS FOR $1; pVendNumber ALIAS FOR $2; _returnVal INTEGER; BEGIN IF ((pItemNumber IS NULL) OR (pVendNumber IS NULL)) THEN RETURN NULL; END IF; SELECT itemsrc_id INTO _returnVal FROM itemsrc WHERE ((itemsrc_item_id=getItemId(pItemNumber)) AND (itemsrc_vend_id=getVendId(pVendNumber))); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Item Source Item % Vendor % not found.', pItemNumber,pVendNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getitemsrcid(text, text) OWNER TO admin; -- -- Name: getlasttrialbalid(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getlasttrialbalid(integer, integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAccntId ALIAS FOR $1; pPeriodId ALIAS FOR $2; _p RECORD; _accntType TEXT; _result NUMERIC; BEGIN SELECT period_end,period_yearperiod_id INTO _p FROM period WHERE period_id=pPeriodId; SELECT accnt_type INTO _accntType FROM accnt WHERE accnt_id=pAccntId; IF (_accntType IN ('R','E')) THEN SELECT trialbal_id INTO _result FROM trialbal WHERE ((trialbal_accnt_id=pAccntId) AND (trialbal_period_id=pPeriodId)); ELSE SELECT trialbal_id INTO _result FROM (SELECT trialbal_id FROM trialbal,period WHERE ((trialbal_accnt_id=pAccntId) AND (trialbal_period_id=period_id) AND (period_end <= _p.period_end) AND (period_yearperiod_id=_p.period_yearperiod_id)) ORDER BY period_end DESC) AS data; END IF; RETURN _result; END; $_$; ALTER FUNCTION public.getlasttrialbalid(integer, integer) OWNER TO admin; -- -- Name: getlocationid(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getlocationid(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehouse ALIAS FOR $1; pLocation ALIAS FOR $2; _returnVal INTEGER; BEGIN IF (pLocation IS NULL) THEN RETURN NULL; END IF; SELECT location_id INTO _returnVal FROM location WHERE ((location_warehous_id=getWarehousId(pWarehouse,'ACTIVE')) AND (formatLocationname(location_id)=pLocation)) LIMIT 1; IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Location % not found in Warehouse %.', pLocation, pWarehouse; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getlocationid(text, text) OWNER TO admin; -- -- Name: getlotserialid(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getlotserialid(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemNumber ALIAS FOR $1; pLotSerialNumber ALIAS FOR $2; _returnVal INTEGER; BEGIN IF ((pItemNumber IS NULL) OR (pLotSerialNumber IS NULL) OR (pLotSerialNumber='')) THEN RETURN NULL; END IF; SELECT ls_id INTO _returnVal FROM ls WHERE ((ls_item_id=getItemId(pItemNumber)) AND (UPPER(ls_number)=UPPER(pLotSerialNumber))); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'LotSerial % not found.', pLotSerialNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getlotserialid(text, text) OWNER TO admin; -- -- Name: getopheadid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getopheadid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOpHeadName ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pOpHeadName IS NULL) THEN RETURN NULL; END IF; SELECT ophead_id INTO _returnVal FROM ophead WHERE (UPPER(ophead_name)=UPPER(pOpHeadName)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Opportunity % not found.', pOpHeadName; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getopheadid(text) OWNER TO admin; -- -- Name: getpacklistcharname(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getpacklistcharname(integer, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipheadId ALIAS FOR $1; pOrderItemId ALIAS FOR $2; _charname text; _r RECORD; _first BOOLEAN; BEGIN -- If transfer order, get out SELECT shiphead_order_type INTO _r FROM shiphead WHERE ((shiphead_id=pShipheadId) AND (shiphead_order_type='TO')); IF (FOUND) THEN RETURN ''; END IF; _charname := ''; _first := true; FOR _r IN SELECT char_name FROM char, charass WHERE ((char_id=charass_char_id) AND (charass_target_type='SI') AND (charass_target_id=pOrderItemId)) LOOP IF (_first = false) THEN _charname := _charname || ' '; END IF; _charname := _charname || _r.char_name; _first := false; END LOOP; RETURN _charname; END $_$; ALTER FUNCTION public.getpacklistcharname(integer, integer) OWNER TO admin; -- -- Name: getpacklistcharvalue(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getpacklistcharvalue(integer, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipheadId ALIAS FOR $1; pOrderItemId ALIAS FOR $2; _charval text; _r RECORD; _first BOOLEAN; BEGIN -- If transfer order, get out SELECT shiphead_order_type INTO _r FROM shiphead WHERE ((shiphead_id=pShipheadId) AND (shiphead_order_type='TO')); IF (FOUND) THEN RETURN ''; END IF; _charval := ''; _first := true; FOR _r IN SELECT charass_value FROM char, charass WHERE ((char_id=charass_char_id) AND (charass_target_type='SI') AND (charass_target_id=pOrderItemId)) LOOP IF (_first = false) THEN _charval := _charval || ' '; END IF; _charval := _charval || _r.charass_value; _first := false; END LOOP; RETURN _charval; END $_$; ALTER FUNCTION public.getpacklistcharvalue(integer, integer) OWNER TO admin; -- -- Name: getpacklistitemlotserial(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getpacklistitemlotserial(integer, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipheadId ALIAS FOR $1; pOrderItemId ALIAS FOR $2; _lotserial text; _r RECORD; _first BOOLEAN; BEGIN --Test to see if Lot/Serial Enabled SELECT metric_value INTO _lotserial FROM metric WHERE ((metric_name='LotSerialControl') AND (metric_value ='t')); IF (FOUND) THEN _lotserial := ''; _first := true; FOR _r IN SELECT DISTINCT ls_number FROM invdetail, invhist, shipitem, ls WHERE ((shipitem_shiphead_id=pShipheadId) AND (shipitem_orderitem_id=pOrderItemId) AND (shipitem_invhist_id=invhist_id) AND (invhist_id=invdetail_invhist_id) AND (invdetail_ls_id=ls_id)) LOOP IF (_first = false) THEN _lotserial := _lotserial || ', '; END IF; _lotserial := _lotserial || _r.ls_number; _first := false; END LOOP; RETURN _lotserial; ELSE RETURN ''; END IF; END $_$; ALTER FUNCTION public.getpacklistitemlotserial(integer, integer) OWNER TO admin; -- -- Name: getperiodid(integer, character); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getperiodid(integer, character) RETURNS SETOF integer LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodId ALIAS FOR $1; pInterval ALIAS FOR $2; _x RECORD; BEGIN -- Validate Interval IF pInterval <> 'M' AND pInterval <> 'Q' AND pInterval <> 'Y' THEN RAISE EXCEPTION 'Invalid Interval --> %', pInterval; END IF; IF pInterval='M' THEN RETURN NEXT pPeriodId; ELSE IF pInterval='Q' THEN FOR _x IN SELECT qp.period_id AS period_id FROM period cp, period qp WHERE ((cp.period_id=pPeriodId) AND (cp.period_yearperiod_id=qp.period_yearperiod_id) AND (cp.period_quarter=qp.period_quarter) AND (cp.period_start>=qp.period_start)) ORDER BY qp.period_start LOOP RETURN NEXT _x.period_id; END LOOP; ELSE FOR _x IN SELECT yp.period_id AS period_id FROM period cp, period yp WHERE ((cp.period_id=pPeriodId) AND (cp.period_yearperiod_id=yp.period_yearperiod_id) AND (cp.period_start>=yp.period_start)) ORDER BY yp.period_start LOOP RETURN NEXT _x.period_id; END LOOP; END IF; END IF; RETURN; END; $_$; ALTER FUNCTION public.getperiodid(integer, character) OWNER TO admin; -- -- Name: getperiodid(date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getperiodid(date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodDate ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pPeriodDate IS NULL) THEN RETURN NULL; END IF; SELECT period_id INTO _returnVal FROM period WHERE ((pPeriodDate) between period_start AND period_end); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Period for % not found.', pPeriodDate; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getperiodid(date) OWNER TO admin; -- -- Name: getpkgheadid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getpkgheadid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ppkgname ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (ppkgname IS NULL) THEN RETURN NULL; END IF; SELECT pkghead_id INTO _returnVal FROM pkghead WHERE (UPPER(pkghead_name)=UPPER(ppkgname)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Package % not found.', ppkgname; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getpkgheadid(text) OWNER TO admin; -- -- Name: getplancodeid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getplancodeid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPlanCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pPlanCode IS NULL) THEN RETURN NULL; END IF; SELECT plancode_id INTO _returnVal FROM plancode WHERE (plancode_code=pPlanCode); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Plan Code % not found.', pPlanCode; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getplancodeid(text) OWNER TO admin; -- -- Name: getpoheadid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getpoheadid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPurchaseOrderNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pPurchaseOrderNumber IS NULL) THEN RETURN NULL; END IF; SELECT pohead_id INTO _returnVal FROM pohead WHERE (pohead_number=pPurchaseOrderNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Purchase Order % not found.', pPurchaseOrderNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getpoheadid(text) OWNER TO admin; -- -- Name: getpoitemid(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getpoitemid(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPurchaseOrderNumber ALIAS FOR $1; pLineNumber ALIAS FOR $2; _returnVal INTEGER; BEGIN IF (pPurchaseOrderNumber IS NULL OR pLineNumber IS NULL) THEN RETURN NULL; END IF; SELECT poitem_id INTO _returnVal FROM pohead, poitem WHERE ((pohead_number=pPurchaseOrderNumber) AND (poitem_pohead_id=pohead_id) AND (poitem_linenumber=pLineNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Purchase Order % not found.', pSalesOrderNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getpoitemid(text, integer) OWNER TO admin; -- -- Name: getprjaccntid(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getprjaccntid(integer, integer) RETURNS integer LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrjid ALIAS FOR $1; pAccntid ALIAS FOR $2; BEGIN -- Project Accounting is required to fully implement this functionality RETURN pAccntId; END; $_$; ALTER FUNCTION public.getprjaccntid(integer, integer) OWNER TO admin; -- -- Name: getprjid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getprjid(pprjnumber text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pPrjNumber IS NULL) THEN RETURN NULL; END IF; SELECT prj_id INTO _returnVal FROM prj WHERE (prj_number=pPrjNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Project Number % not found.', pPrjNumber; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getprjid(pprjnumber text) OWNER TO admin; -- -- Name: getprjtaskid(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getprjtaskid(pprjnumber text, ptasknumber text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pPrjNumber IS NULL OR pTaskNumber IS NULL) THEN RETURN NULL; END IF; SELECT prjtask_id INTO _returnVal FROM prjtask JOIN prj ON (prj_id=prjtask_prj_id) WHERE ((prj_number=pPrjNumber) AND (prjtask_number=pTaskNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Project Task Number %-% not found.', pPrjNumber, pTaskNumber; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getprjtaskid(pprjnumber text, ptasknumber text) OWNER TO admin; -- -- Name: getprodcatid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getprodcatid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pProdCat ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pProdCat IS NULL) THEN RETURN NULL; END IF; SELECT prodcat_id INTO _returnVal FROM prodcat WHERE (prodcat_code=pProdCat); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Product Category % not found.', pProdCat; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getprodcatid(text) OWNER TO admin; -- -- Name: getprospectid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getprospectid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pProspectNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pProspectNumber IS NULL) THEN RETURN NULL; END IF; SELECT prospect_id INTO _returnVal FROM prospect WHERE(UPPER(prospect_number)=UPPER(pProspectNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Prospect Number % found.', pProspectNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getprospectid(text) OWNER TO admin; -- -- Name: getquoteid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getquoteid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuoteNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pQuoteNumber IS NULL) THEN RETURN NULL; END IF; SELECT quhead_id INTO _returnVal FROM quhead WHERE (quhead_number=pQuoteNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Quote Number % not found.', pQuoteNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getquoteid(text) OWNER TO admin; -- -- Name: getquotelineitemid(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getquotelineitemid(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuoteNumber ALIAS FOR $1; pLineNumber ALIAS FOR $2; _returnVal INTEGER; BEGIN IF ((pQuoteNumber IS NULL) OR (pLineNumber IS NULL)) THEN RETURN NULL; END IF; SELECT quitem_id INTO _returnVal FROM quhead, quitem WHERE ((quhead_number=pQuoteNumber) AND (quhead_id=quitem_quhead_id) AND (quitem_linenumber=pLineNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Quote Line Item %-%not found.', pQuoteNumber,pLineNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getquotelineitemid(text, integer) OWNER TO admin; -- -- Name: getrevid(text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getrevid(text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pType ALIAS FOR $1; pItemNumber ALIAS FOR $2; pRevision ALIAS FOR $3; _returnVal INTEGER; BEGIN IF (pItemNumber IS NULL) THEN RETURN NULL; END IF; IF (NOT fetchMetricBool('RevControl')) THEN RETURN -1; ELSIF ( (pRevision IS NULL) OR (LENGTH(pRevision)=0) ) THEN SELECT getActiveRevId(pType, getItemId(pItemNumber)) INTO _returnVal; ELSE IF (pType='BOM') THEN SELECT rev_id INTO _returnVal FROM item, bomhead, rev WHERE ((item_id=bomhead_item_id) AND (bomhead_rev_id=rev_id) AND (UPPER(item_number)=UPPER(pItemNumber)) AND (rev_number=pRevision)); ELSIF (pType='BOO') THEN SELECT rev_id INTO _returnVal FROM item, xtmfg.boohead, rev WHERE ((item_id=boohead_item_id) AND (boohead_rev_id=rev_id) AND (UPPER(item_number)=UPPER(pItemNumber)) AND (rev_number=pRevision)); ELSE RAISE EXCEPTION 'Invalid Revision Type.'; END IF; END IF; IF (_returnVal IS NULL) THEN RAISE EXCEPTION '% revision % for % not found.', pType, pRevision, pItemNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getrevid(text, text, text) OWNER TO admin; -- -- Name: getrsnid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getrsnid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pRsnCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pRsnCode IS NULL) THEN RETURN NULL; END IF; SELECT rsncode_id INTO _returnVal FROM rsncode WHERE (rsncode_code=pRsnCode); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Reason Code % not found.', pRsnCode; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getrsnid(text) OWNER TO admin; -- -- Name: getsalescatid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getsalescatid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSalesCatName ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pSalesCatName IS NULL) THEN RETURN NULL; END IF; SELECT salescat_id INTO _returnVal FROM salescat WHERE (salescat_name=pSalesCatName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Sales Category % not found.', pSalesCatName; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getsalescatid(text) OWNER TO admin; -- -- Name: getsaleslineitemid(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getsaleslineitemid(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN getSalesLineItemId($1, $2, 0); END $_$; ALTER FUNCTION public.getsaleslineitemid(text, integer) OWNER TO admin; -- -- Name: getsaleslineitemid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getsaleslineitemid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSalesOrderItem ALIAS FOR $1; _delpos INTEGER = 0; _order TEXT; _part TEXT; _ln INTEGER; _sn INTEGER; BEGIN IF (pSalesOrderItem IS NULL) THEN RETURN NULL; END IF; _delpos := strpos(pSalesOrderItem, '-'); IF (_delpos > 0) THEN _order := substr(pSalesOrderItem, 1, (_delpos - 1)); _part := substr(pSalesOrderItem, (_delpos + 1)); _delpos := strpos(_part, '.'); IF (_delpos > 0) THEN _ln := CAST(substr(_part, 1, (_delpos - 1)) AS INTEGER); _sn := CAST(substr(_part, (_delpos + 1)) AS INTEGER); ELSE _ln := CAST(_part AS INTEGER); _sn := 0; END IF; RETURN getSalesLineItemId( _order, _ln, _sn ); END IF; RETURN 0; END; $_$; ALTER FUNCTION public.getsaleslineitemid(text) OWNER TO admin; -- -- Name: getsaleslineitemid(text, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getsaleslineitemid(text, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSalesOrderNumber ALIAS FOR $1; pLineNumber ALIAS FOR $2; pSubNumber ALIAS FOR $3; _returnVal INTEGER; BEGIN IF ((pSalesOrderNumber IS NULL) OR (pLineNumber IS NULL)) THEN RETURN NULL; END IF; SELECT coitem_id INTO _returnVal FROM cohead, coitem WHERE ((cohead_number=pSalesOrderNumber) AND (cohead_id=coitem_cohead_id) AND (coitem_linenumber=pLineNumber) AND (coitem_subnumber=pSubNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Sales Line Item %-%not found.', pSalesOrderNumber,pLineNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getsaleslineitemid(text, integer, integer) OWNER TO admin; -- -- Name: getsalesorderid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getsalesorderid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSalesOrderNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pSalesOrderNumber IS NULL) THEN RETURN NULL; END IF; SELECT cohead_id INTO _returnVal FROM cohead WHERE (cohead_number=pSalesOrderNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Sales Order Number % not found.', pSalesOrderNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getsalesorderid(text) OWNER TO admin; -- -- Name: getsalesrepid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getsalesrepid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSalesRepNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pSalesRepNumber IS NULL) THEN RETURN NULL; END IF; SELECT salesrep_id INTO _returnVal FROM salesrep WHERE (salesrep_number=pSalesRepNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Sales Rep Number % not found.', pSalesRepNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getsalesrepid(text) OWNER TO admin; -- -- Name: getsaletypeid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getsaletypeid(psaletype text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pSaleType IS NULL) THEN RETURN NULL; END IF; SELECT saletype_id INTO _returnVal FROM saletype WHERE (saletype_code=UPPER(pSaleType)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Sale Type % not found.', pSaleType; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getsaletypeid(psaletype text) OWNER TO admin; -- -- Name: getshiftid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getshiftid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShiftNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (COALESCE(TRIM(pShiftNumber), '') = '') THEN RETURN NULL; END IF; SELECT shift_id INTO _returnVal FROM shift WHERE (UPPER(shift_number)=UPPER(pShiftNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Shift % not found.', pShiftNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getshiftid(text) OWNER TO admin; -- -- Name: getshipchrgid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getshipchrgid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipChrgName ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pShipChrgName IS NULL) THEN RETURN NULL; END IF; SELECT shipchrg_id INTO _returnVal FROM shipchrg WHERE (shipchrg_name=pShipChrgName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Ship Charge % not found.', pShipChrgName; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getshipchrgid(text) OWNER TO admin; -- -- Name: getshipformid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getshipformid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipFormName ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pShipFormName IS NULL) THEN RETURN NULL; END IF; SELECT shipform_id INTO _returnVal FROM shipform WHERE (shipform_name=pShipFormName) LIMIT 1; IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Ship Form % not found.', pShipFormName; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getshipformid(text) OWNER TO admin; -- -- Name: getshipheadid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getshipheadid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipmentNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pShipmentNumber IS NULL OR pShipmentNumber = '') THEN RETURN NULL; END IF; SELECT shiphead_id INTO _returnVal FROM shiphead WHERE (shiphead_number=pShipmentNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Shipment % not found.', pShipmentNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getshipheadid(text) OWNER TO admin; -- -- Name: getshiptoid(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getshiptoid(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustNumber ALIAS FOR $1; pShiptoNumber ALIAS FOR $2; _returnVal INTEGER; BEGIN IF ((pCustNumber IS NULL) OR (pShiptoNumber IS NULL)) THEN RETURN NULL; END IF; SELECT shipto_id INTO _returnVal FROM shiptoinfo WHERE ((shipto_cust_id=getCustId(pCustNumber,true)) AND (UPPER(shipto_num)=UPPER(pShiptoNumber))); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Shipto % not found.', pShiptoNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getshiptoid(text, text) OWNER TO admin; -- -- Name: getshiptonumberfrominfo(text, text, text, text, text, text, text, text, text, text, text, text, text, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getshiptonumberfrominfo(text, text, text, text, text, text, text, text, text, text, text, text, text, boolean, boolean) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _custname TEXT := COALESCE(TRIM(UPPER( $1)), ''); _email TEXT := COALESCE(TRIM(UPPER( $2)), ''); _company TEXT := COALESCE(TRIM(UPPER( $3)), ''); _first TEXT := COALESCE(TRIM(UPPER( $4)), ''); _last TEXT := COALESCE(TRIM(UPPER( $5)), ''); _fullname TEXT := COALESCE(TRIM(UPPER( $6)), ''); _addr1 TEXT := COALESCE(TRIM(UPPER( $7)), ''); _addr2 TEXT := COALESCE(TRIM(UPPER( $8)), ''); _addr3 TEXT := COALESCE(TRIM(UPPER( $9)), ''); _city TEXT := COALESCE(TRIM(UPPER($10)), ''); _state TEXT := COALESCE(TRIM(UPPER($11)), ''); _postalcode TEXT := COALESCE(TRIM(UPPER($12)), ''); _country TEXT := COALESCE(TRIM(UPPER($13)), ''); _generate BOOLEAN := COALESCE($14, FALSE); _create BOOLEAN := COALESCE($15, FALSE); _citytrunc TEXT; _counter INTEGER; _custid INTEGER; _custnumber TEXT; _candidate TEXT; _r RECORD; _statetrunc TEXT; BEGIN IF (_custname = '') THEN _custname := getCustNameFromInfo(_email, _company, _first, _last, _fullname, FALSE); END IF; SELECT COUNT(*) INTO _counter FROM custinfo, shiptoinfo, addr WHERE ((UPPER(cust_name)=UPPER(_custname)) AND UPPER(shipto_name)=UPPER(_fullname) AND (cust_id=shipto_cust_id) AND (shipto_addr_id=addr_id)); IF (_counter = 1) THEN SELECT shipto_num INTO _candidate FROM custinfo, shiptoinfo, addr WHERE ((UPPER(cust_name)=UPPER(_custname)) AND UPPER(shipto_name)=UPPER(_fullname) AND (cust_id=shipto_cust_id) AND (shipto_addr_id=addr_id)); RETURN _candidate; ELSE SELECT COUNT(*) INTO _counter FROM custinfo, shiptoinfo, addr WHERE ((UPPER(cust_name)=UPPER(_custname)) AND (cust_id=shipto_cust_id) AND (shipto_addr_id=addr_id)); IF (_counter = 1) THEN SELECT shipto_num INTO _candidate FROM custinfo, shiptoinfo, addr WHERE ((UPPER(cust_name)=UPPER(_custname)) AND (cust_id=shipto_cust_id) AND (shipto_addr_id=addr_id)); RETURN _candidate; ELSIF (_counter > 1) THEN SELECT shipto_num, CASE WHEN (UPPER(addr_country) = _country) THEN 1 ELSE 0 END + CASE WHEN (UPPER(addr_postalcode) = _postalcode) THEN 1 ELSE 0 END + CASE WHEN (UPPER(addr_state) = _state) THEN 1 ELSE 0 END + CASE WHEN (UPPER(addr_city) = _city) THEN 1 ELSE 0 END + CASE WHEN (UPPER(addr_line3) = _addr3) THEN 1 ELSE 0 END + CASE WHEN (UPPER(addr_line2) = _addr2) THEN 1 ELSE 0 END + CASE WHEN (UPPER(addr_line1) = _addr1) THEN 1 ELSE 0 END AS maxquotient INTO _candidate, _counter FROM custinfo, shiptoinfo, addr WHERE ((UPPER(cust_name)=_custname) AND (cust_id=shipto_cust_id) AND (shipto_addr_id=addr_id)) ORDER BY maxquotient desc LIMIT 1; RETURN _candidate; END IF; END IF; IF (_generate) THEN SELECT cust_number, cust_id INTO _custnumber, _custid FROM custinfo WHERE (UPPER(cust_name)=_custname); -- keep the number short _citytrunc := SUBSTRING(_city FOR 5); _statetrunc := SUBSTRING(_state FOR 5); IF (LENGTH(_citytrunc) > 0 AND NOT EXISTS(SELECT UPPER(shipto_num) FROM shiptoinfo WHERE ((shipto_cust_id=_custid) AND (UPPER(shipto_num)=_citytrunc)) )) THEN _candidate := _citytrunc; ELSIF (LENGTH(_last || _citytrunc) > 0 AND NOT EXISTS(SELECT UPPER(shipto_num) FROM shiptoinfo WHERE ((shipto_cust_id=_custid) AND (UPPER(shipto_num)=_last || _citytrunc)) )) THEN _candidate := _last || _citytrunc; ELSIF (LENGTH(_statetrunc) > 0 AND NOT EXISTS(SELECT UPPER(shipto_num) FROM shiptoinfo WHERE ((shipto_cust_id=_custid) AND (UPPER(shipto_num)=_statetrunc)) )) THEN _candidate := _statetrunc; ELSIF (LENGTH(_last || _statetrunc) > 0 AND NOT EXISTS(SELECT UPPER(shipto_num) FROM shiptoinfo WHERE ((shipto_cust_id=_custid) AND (UPPER(shipto_num)=_last || _statetrunc)) )) THEN _candidate := _last || _statetrunc; ELSIF (LENGTH(_citytrunc || _statetrunc) > 0 AND NOT EXISTS(SELECT UPPER(shipto_num) FROM shiptoinfo WHERE ((shipto_cust_id=_custid) AND (UPPER(shipto_num)=_citytrunc || _statetrunc)) )) THEN _candidate := _citytrunc || _statetrunc; ELSE SELECT CAST(COALESCE(MAX(CAST(shipto_num AS INTEGER)), 0) + 1 AS TEXT) INTO _candidate FROM shiptoinfo WHERE ((shipto_cust_id=_custid) AND (shipto_num~'^[0-9]*$')); END IF; IF (_create) THEN INSERT INTO api.custshipto ( customer_number, shipto_number, name, address1, address2, address3, city, state, postal_code, country, address_change, first, last, email, edi_profile ) VALUES ( _custnumber, _candidate, _candidate, _addr1, _addr2, _addr3, _city, _state, _postalcode, _country, 'CHANGEONE', _first, _last, LOWER(_email), 'No EDI' ); END IF; RETURN _candidate; END IF; RETURN ''; END; $_$; ALTER FUNCTION public.getshiptonumberfrominfo(text, text, text, text, text, text, text, text, text, text, text, text, text, boolean, boolean) OWNER TO admin; -- -- Name: getshipviaid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getshipviaid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipViaCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pShipViaCode IS NULL) THEN RETURN NULL; END IF; SELECT shipvia_id INTO _returnVal FROM shipvia WHERE (shipvia_code=pShipViaCode); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'ShipVia Code % not found.', pShipViaCode; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getshipviaid(text) OWNER TO admin; -- -- Name: getshipzoneid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getshipzoneid(pshipzonename text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pShipZoneName IS NULL) THEN RETURN NULL; END IF; SELECT shipzone_id INTO _returnVal FROM shipzone WHERE (shipzone_name=pShipZoneName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Ship Zone % not found.', pShipZoneName; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getshipzoneid(pshipzonename text) OWNER TO admin; -- -- Name: getsitetypeid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getsitetypeid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSiteType ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pSiteType IS NULL) THEN RETURN NULL; END IF; SELECT sitetype_id INTO _returnVal FROM sitetype WHERE (sitetype_name=pSiteType); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Site Type % not found.', pSiteType; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getsitetypeid(text) OWNER TO admin; -- -- Name: getsoscheddate(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getsoscheddate(integer) RETURNS date LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCoheadid ALIAS FOR $1; _minscheddate DATE; BEGIN SELECT MIN(coitem_scheddate) INTO _minscheddate FROM coitem WHERE ( (coitem_cohead_id=pCoheadid) AND (coitem_status NOT IN ('C', 'X')) ); RETURN _minscheddate; END; $_$; ALTER FUNCTION public.getsoscheddate(integer) OWNER TO admin; -- -- Name: getsostatus(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getsostatus(integer) RETURNS character LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCoheadid ALIAS FOR $1; _result char(1); BEGIN SELECT cohead_status INTO _result FROM cohead WHERE (cohead_id=pCoheadid); RETURN _result; END; $_$; ALTER FUNCTION public.getsostatus(integer) OWNER TO admin; -- -- Name: getsubtax(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getsubtax(integer, integer) RETURNS SETOF subtax LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxCodeId ALIAS FOR $1; pLevel ALIAS FOR $2; _row subtax%ROWTYPE; _x RECORD; _y RECORD; BEGIN FOR _x IN --Select all tax codes whose calculation basis is pTaxCodeId SELECT tax_id, tax_code, tax_descrip FROM tax WHERE tax_basis_tax_id = pTaxCodeId LOOP _row.subtax_taxcode_id := _x.tax_id; _row.subtax_taxcode_code := _x.tax_code; _row.subtax_taxcode_descrip := _x.tax_descrip; _row.subtax_taxcode_level := pLevel + 1; RETURN NEXT _row; FOR _y IN SELECT * from getSubTax(_x.tax_id, pLevel + 1) --This is the recursive part. LOOP _row.subtax_taxcode_id := _y.subtax_taxcode_id; _row.subtax_taxcode_code := _y.subtax_taxcode_code ; _row.subtax_taxcode_descrip := _y.subtax_taxcode_descrip; _row.subtax_taxcode_level := pLevel + 2; RETURN NEXT _row; END LOOP; END LOOP; END; $_$; ALTER FUNCTION public.getsubtax(integer, integer) OWNER TO admin; -- -- Name: gettaxauthid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION gettaxauthid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxAuthCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pTaxAuthCode IS NULL) THEN RETURN NULL; END IF; SELECT taxauth_id INTO _returnVal FROM taxauth WHERE (taxauth_code=pTaxAuthCode); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Tax Authority % not found.', pTaxAuthCode; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.gettaxauthid(text) OWNER TO admin; -- -- Name: gettaxid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION gettaxid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pTaxCode IS NULL) THEN RETURN NULL; END IF; SELECT tax_id INTO _returnVal FROM tax WHERE (tax_code=pTaxCode); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Tax Code % not found.', pTaxCode; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.gettaxid(text) OWNER TO admin; -- -- Name: gettaxtypeid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION gettaxtypeid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxType ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pTaxType IS NULL) THEN RETURN NULL; END IF; SELECT taxtype_id INTO _returnVal FROM taxtype WHERE (taxtype_name=pTaxType); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Tax Type % not found.', pTaxType; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.gettaxtypeid(text) OWNER TO admin; -- -- Name: gettaxzoneid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION gettaxzoneid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxZone ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pTaxZone IS NULL) THEN RETURN NULL; END IF; SELECT taxzone_id INTO _returnVal FROM taxzone WHERE (taxzone_code=pTaxZone); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Tax Zone % not found.', pTaxZone; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.gettaxzoneid(text) OWNER TO admin; -- -- Name: gettermsid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION gettermsid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTermsCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pTermsCode IS NULL) THEN RETURN NULL; END IF; SELECT terms_id INTO _returnVal FROM terms WHERE (terms_code=pTermsCode); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Terms Code % not found.', pTermsCode; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.gettermsid(text) OWNER TO admin; -- -- Name: getunassignedaccntid(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getunassignedaccntid() RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _test INTEGER; _returnVal INTEGER; BEGIN SELECT fetchMetricValue('UnassignedAccount') INTO _test; IF (_test IS NULL) THEN RAISE EXCEPTION 'Metric not found for UnassignedAccount'; END IF; SELECT accnt_id INTO _returnVal FROM accnt WHERE (accnt_id=_test); IF (NOT FOUND) THEN RAISE EXCEPTION 'Metric UnassignedAccount is an invalid G/L Account'; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getunassignedaccntid() OWNER TO admin; -- -- Name: getuomid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getuomid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUom ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pUom IS NULL) THEN RETURN NULL; END IF; SELECT uom_id INTO _returnVal FROM uom WHERE (uom_name=pUom); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Unit of Measure % not found.', pUom; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getuomid(text) OWNER TO admin; -- -- Name: getuomtypeid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getuomtypeid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUomType ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pUomType IS NULL) THEN RETURN NULL; END IF; SELECT uomtype_id INTO _returnVal FROM uomtype WHERE (UPPER(uomtype_name)=UPPER(pUomType)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Unit of Measuer Type % not found.', pUomType; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getuomtypeid(text) OWNER TO admin; -- -- Name: getuomtypeid(text[]); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getuomtypeid(text[]) RETURNS integer[] LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUomTypes ALIAS FOR $1; _returnVal INTEGER[]; _val INTEGER; _i INTEGER; BEGIN IF (pUomTypes IS NULL) OR (ARRAY_UPPER(pUomTypes,1) = 0) THEN RETURN NULL; END IF; FOR _i IN 1..ARRAY_UPPER(pUomTypes,1) LOOP SELECT uomtype_id INTO _val FROM uomtype WHERE (UPPER(uomtype_name)=UPPER(pUomTypes[_i])); IF (_val IS NULL) THEN RAISE EXCEPTION 'Unit of Measure Type % not found.', pUomTypes[_i]; ELSE _returnVal[_i] := _val; END IF; END LOOP; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getuomtypeid(text[]) OWNER TO admin; -- -- Name: getusrid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getusrid(pusr text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN SELECT usr_id INTO _returnVal FROM usr WHERE (usr_username=COALESCE(pUsr, getEffectiveXtUser())); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'User % not found.', pUsr; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getusrid(pusr text) OWNER TO admin; -- -- Name: getusrlocaleid(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getusrlocaleid() RETURNS integer LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN SELECT CAST(usrpref_value AS INTEGER) FROM usrpref WHERE (usrpref_username=getEffectiveXTUser()) AND (usrpref_name='locale_id') INTO _returnVal; IF (_returnVal IS NULL) THEN SELECT locale_id FROM locale WHERE (LOWER(locale_code) = 'default') LIMIT 1 INTO _returnVal; END IF; IF (_returnVal IS NULL) THEN SELECT locale_id FROM locale ORDER BY locale_id LIMIT 1 INTO _returnVal; END IF; IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'User Locale not found.'; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getusrlocaleid() OWNER TO admin; -- -- Name: getvendaddrid(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getvendaddrid(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendNumber ALIAS FOR $1; pVendAddrCode ALIAS FOR $2; _returnVal INTEGER; BEGIN IF ( (pVendNumber IS NULL) OR (pVendAddrCode IS NULL) ) THEN RETURN NULL; END IF; SELECT vendaddr_id INTO _returnVal FROM vendaddrinfo JOIN vendinfo ON (vend_id=vendaddr_vend_id) WHERE ( (vendaddr_code=pVendAddrCode) AND (vend_number=pVendNumber) ); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Vendor Number % Address % not found.', pVendNumber, pVendAddrCode; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getvendaddrid(text, text) OWNER TO admin; -- -- Name: getvendid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getvendid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pVendNumber IS NULL) THEN RETURN NULL; END IF; SELECT vend_id INTO _returnVal FROM vendinfo WHERE (vend_number=pVendNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Vendor Number % not found.', pVendNumber; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getvendid(text) OWNER TO admin; -- -- Name: getvendtypeid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getvendtypeid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendTypeCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pVendTypeCode IS NULL) THEN RETURN NULL; END IF; SELECT vendtype_id INTO _returnVal FROM vendtype WHERE (UPPER(vendtype_code)=UPPER(pVendTypeCode)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Vendor Type % not found.', pVendTypeCode; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getvendtypeid(text) OWNER TO admin; -- -- Name: getwarehousid(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getwarehousid(pwarehouscode text, ptype text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _active BOOL; _shipping BOOL; _returnVal INTEGER; BEGIN IF (pWarehousCode IS NULL) THEN RETURN NULL; END IF; IF (UPPER(pType) NOT IN ('ALL','ACTIVE','SHIPPING')) THEN RAISE EXCEPTION 'Warehouse lookip type % not valid. Valid types are ALL, ACTIVE and SHIPPING', pType; END IF; SELECT warehous_id, warehous_active, warehous_shipping INTO _returnVal, _active, _shipping FROM site() WHERE (warehous_code=UPPER(pWarehousCode)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Warehouse Code % not found.', pWarehousCode; ELSE IF ((pType='SHIPPING') AND (_shipping=false)) THEN RAISE EXCEPTION 'Warehouse Code % is not a vaild shipping warehouse.', pWarehousCode; ELSE IF ((pType IN ('SHIPPING','ACTIVE')) AND (_active=false)) THEN RAISE EXCEPTION 'Warehouse Code % is inactive.', pWarehousCode; END IF; END IF; END IF; RETURN _returnVal; END; $$; ALTER FUNCTION public.getwarehousid(pwarehouscode text, ptype text) OWNER TO admin; -- -- Name: getwhsezoneid(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION getwhsezoneid(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWhseCode ALIAS FOR $1; pWhseZoneName ALIAS FOR $2; _returnVal INTEGER; BEGIN IF ((pWhseCode IS NULL) OR (pWhseZoneName IS NULL)) THEN RETURN NULL; END IF; SELECT whsezone_id INTO _returnVal FROM whsezone WHERE ( (whsezone_warehous_id=getWarehousId(pWhseCode, 'ACTIVE')) AND (UPPER(whsezone_name)=UPPER(pWhseZoneName)) ); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Whsezone % not found.', pWhseZoneName; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.getwhsezoneid(text, text) OWNER TO admin; -- -- Name: grantallmodulecmnttypesource(integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION grantallmodulecmnttypesource(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmnttypeid ALIAS FOR $1; pModuleName ALIAS FOR $2; _source RECORD; _sourceCounter INTEGER; BEGIN _sourceCounter := 0; FOR _source IN SELECT source_id FROM source WHERE (source_module=pModuleName) LOOP IF (SELECT grantCmnttypeSource(pCmnttypeid, _source.source_id)) THEN _sourceCounter := _sourceCounter + 1; END IF; END LOOP; RETURN _sourceCounter; END; $_$; ALTER FUNCTION public.grantallmodulecmnttypesource(integer, text) OWNER TO admin; -- -- Name: grantallmodulepriv(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION grantallmodulepriv(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pModuleName ALIAS FOR $2; _priv RECORD; _privCounter INTEGER; BEGIN _privCounter := 0; FOR _priv IN SELECT priv_id FROM priv WHERE (priv_module=pModuleName) LOOP IF (SELECT grantPriv(pUsername, _priv.priv_id)) THEN _privCounter := _privCounter + 1; END IF; END LOOP; RETURN _privCounter; END; $_$; ALTER FUNCTION public.grantallmodulepriv(text, text) OWNER TO admin; -- -- Name: grantallmoduleprivgroup(integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION grantallmoduleprivgroup(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pGrpid ALIAS FOR $1; pModuleName ALIAS FOR $2; _priv RECORD; _privCounter INTEGER; BEGIN _privCounter := 0; FOR _priv IN SELECT priv_id FROM priv WHERE (priv_module=pModuleName) LOOP IF (SELECT grantPrivGroup(pGrpid, _priv.priv_id)) THEN _privCounter := _privCounter + 1; END IF; END LOOP; RETURN _privCounter; END; $_$; ALTER FUNCTION public.grantallmoduleprivgroup(integer, text) OWNER TO admin; -- -- Name: grantcmnttypesource(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION grantcmnttypesource(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmnttypeid ALIAS FOR $1; pSourceid ALIAS FOR $2; _test INTEGER; BEGIN SELECT cmnttypesource_id INTO _test FROM cmnttypesource WHERE ( (cmnttypesource_cmnttype_id=pCmnttypeid) AND (cmnttypesource_source_id=pSourceid) ); IF (FOUND) THEN RETURN FALSE; END IF; INSERT INTO cmnttypesource ( cmnttypesource_cmnttype_id, cmnttypesource_source_id ) VALUES ( pCmnttypeid, pSourceid ); RETURN TRUE; END; $_$; ALTER FUNCTION public.grantcmnttypesource(integer, integer) OWNER TO admin; -- -- Name: grantgroup(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION grantgroup(text, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pGrpid ALIAS FOR $2; _test INTEGER; BEGIN SELECT usrgrp_id INTO _test FROM usrgrp WHERE ( (usrgrp_username=pUsername) AND (usrgrp_grp_id=pGrpid) ); IF (FOUND) THEN RETURN FALSE; END IF; INSERT INTO usrgrp ( usrgrp_username, usrgrp_grp_id ) VALUES ( pUsername, pGrpid ); RETURN TRUE; END; $_$; ALTER FUNCTION public.grantgroup(text, integer) OWNER TO admin; -- -- Name: grantpriv(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION grantpriv(text, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pPrivid ALIAS FOR $2; _test INTEGER; BEGIN SELECT usrpriv_id INTO _test FROM usrpriv WHERE ( (usrpriv_username=pUsername) AND (usrpriv_priv_id=pPrivid) ); IF (FOUND) THEN RETURN FALSE; END IF; INSERT INTO usrpriv ( usrpriv_username, usrpriv_priv_id ) VALUES ( pUsername, pPrivid ); NOTIFY "usrprivUpdated"; RETURN TRUE; END; $_$; ALTER FUNCTION public.grantpriv(text, integer) OWNER TO admin; -- -- Name: grantpriv(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION grantpriv(text, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pPrivname ALIAS FOR $2; _test INTEGER; BEGIN SELECT usrpriv_id INTO _test FROM usrpriv JOIN priv ON (usrpriv_priv_id=priv_id) WHERE ((usrpriv_username=pUsername) AND (priv_name=pPrivname) ); IF (FOUND) THEN RETURN FALSE; END IF; INSERT INTO usrpriv ( usrpriv_username, usrpriv_priv_id ) SELECT pUsername, priv_id FROM priv WHERE (priv_name=pPrivname); NOTIFY "usrprivUpdated"; RETURN TRUE; END; $_$; ALTER FUNCTION public.grantpriv(text, text) OWNER TO admin; -- -- Name: grantprivgroup(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION grantprivgroup(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pGrpid ALIAS FOR $1; pPrivid ALIAS FOR $2; _test INTEGER; BEGIN SELECT grppriv_id INTO _test FROM grppriv WHERE ( (grppriv_grp_id=pGrpid) AND (grppriv_priv_id=pPrivid) ); IF (FOUND) THEN RETURN FALSE; END IF; INSERT INTO grppriv ( grppriv_grp_id, grppriv_priv_id ) VALUES ( pGrpid, pPrivid ); RETURN TRUE; END; $_$; ALTER FUNCTION public.grantprivgroup(integer, integer) OWNER TO admin; -- -- Name: hasalarms(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION hasalarms() RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _alarm RECORD; _batchId INTEGER; _evntlogordtype TEXT; _evnttypeid INTEGER; _evnttypename TEXT; _fromEmail TEXT; _itemid INTEGER; _longsource TEXT; _msgId INTEGER; _recipient TEXT; _recipientPart INTEGER; _returnVal BOOLEAN := FALSE; _summary TEXT; _whsId INTEGER := -1; BEGIN FOR _alarm IN SELECT * FROM alarm WHERE ((alarm_creator=getEffectiveXtUser()) AND (CURRENT_TIMESTAMP > alarm_trigger)) LOOP _returnVal := TRUE; IF (_alarm.alarm_source = 'TODO') THEN SELECT (todoitem_name || '-' || todoitem_description), 'T', 'TodoAlarm', 'To-Do Item' INTO _summary, _evntlogordtype, _evnttypename, _longsource FROM todoitem WHERE (todoitem_id = _alarm.alarm_source_id); ELSIF (_alarm.alarm_source = 'INCDT') THEN SELECT (incdt_number || '-' || incdt_summary), 'I', 'IncidentAlarm', 'Incident' INTO _summary, _evntlogordtype, _evnttypename, _longsource FROM incdt WHERE (incdt_id = _alarm.alarm_source_id); ELSIF (_alarm.alarm_source = 'J') THEN SELECT (prj_number || ' ' || prj_name || '-' || prjtask_name), 'J', 'TaskAlarm', 'Project Task' INTO _summary, _evntlogordtype, _evnttypename, _longsource FROM prjtask JOIN prj ON (prj_id=prjtask_prj_id) WHERE (prjtask_id = _alarm.alarm_source_id); ELSE CONTINUE; -- there's nothing to do for this iteration of the loop END IF; -- if event alarm IF (_alarm.alarm_event) THEN SELECT evnttype_id INTO _evnttypeid FROM evnttype WHERE (evnttype_name=_evnttypename); _recipientPart := 1; LOOP _recipient := SPLIT_PART(_alarm.alarm_event_recipient, ',', _recipientPart); EXIT WHEN (LENGTH(_recipient) = 0); SELECT usrpref_value INTO _whsId FROM usrpref WHERE ( (usrpref_username = _recipient) AND (usrpref_name = 'PreferredWarehouse') ); INSERT INTO evntlog (evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) VALUES (CURRENT_TIMESTAMP, _recipient, _evnttypeid, _evntlogordtype, _alarm.alarm_source_id, _whsId, _summary); _recipientPart := _recipientPart + 1; END LOOP; END IF; IF (_alarm.alarm_email) THEN SELECT usr_email INTO _fromEmail FROM usr WHERE (usr_username = _alarm.alarm_creator); _recipientPart := 1; LOOP _recipient := SPLIT_PART(_alarm.alarm_email_recipient, ',', _recipientPart); EXIT WHEN (LENGTH(_recipient) <= 0); _batchId := xtbatch.submitEmailToBatch(_fromEmail, _recipient, '', _summary, 'Alarm reminder for ' || _longsource || '.', NULL, CURRENT_TIMESTAMP, FALSE, NULL, NULL); _recipientPart := _recipientPart + 1; END LOOP; END IF; IF (_alarm.alarm_sysmsg) THEN _recipientPart := 1; LOOP _recipient := SPLIT_PART(_alarm.alarm_sysmsg_recipient, ',', _recipientPart); EXIT WHEN (LENGTH(_recipient) <= 0); _msgId := postMessage(_recipient, (_longsource || ' - ' || _summary)); _recipientPart := _recipientPart + 1; END LOOP; END IF; DELETE FROM alarm WHERE alarm_id=_alarm.alarm_id; END LOOP; RETURN _returnVal; END; $$; ALTER FUNCTION public.hasalarms() OWNER TO admin; -- -- Name: hasevents(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION hasevents() RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN PERFORM evntlog_id FROM evntlog WHERE ( (evntlog_dispatched IS NULL) AND (evntlog_username=getEffectiveXtUser()) ) LIMIT 1; RETURN FOUND; END; $$; ALTER FUNCTION public.hasevents() OWNER TO admin; -- -- Name: hasmessages(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION hasmessages() RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN PERFORM msguser_id FROM msg, msguser WHERE ( (msguser_username=getEffectiveXtUser()) AND (msguser_msg_id=msg_id) AND (CURRENT_TIMESTAMP BETWEEN msg_scheduled AND msg_expires) AND (msguser_viewed IS NULL) ) LIMIT 1; RETURN FOUND; END; $$; ALTER FUNCTION public.hasmessages() OWNER TO admin; -- -- Name: haspriv(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION haspriv(text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrivName ALIAS FOR $1; _result INTEGER; _returnVal BOOLEAN; BEGIN RAISE NOTICE 'hasPriv(TEXT) is deprecated. Use checkPrivilege(TEXT) instead.'; SELECT priv_id INTO _result FROM priv, grppriv, usrgrp WHERE((usrgrp_grp_id=grppriv_grp_id) AND (grppriv_priv_id=priv_id) AND (priv_name=pPrivName) AND (usrgrp_username=getEffectiveXtUser())); IF (FOUND) THEN RETURN true; END IF; SELECT COALESCE(usrpriv_id, 0) != 0 INTO _returnVal FROM priv LEFT OUTER JOIN usrpriv ON (priv_id=usrpriv_priv_id AND usrpriv_username = getEffectiveXtUser()) WHERE (priv_name=pPrivName); IF (_returnVal IS NULL) THEN _returnVal := FALSE; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.haspriv(text) OWNER TO admin; -- -- Name: hasprivonobject(text, text, integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION hasprivonobject(pprivtype text, pobjecttype text, pobjectid integer DEFAULT NULL::integer, puser text DEFAULT NULL::text) RETURNS boolean LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _haspriv BOOLEAN := FALSE; _privfound BOOLEAN := FALSE; _pkey TEXT[]; _privdesc RECORD; _qstr TEXT; BEGIN IF UPPER(pPrivType) NOT IN ('CREATE', 'EDIT', 'VIEW', 'DELETE') THEN RAISE EXCEPTION 'Cannot check if user has % on % [xtuple: hasPrivOnObject, -1, %, %]', pPrivType, pObjectType, pPrivType, pObjectType; END IF; /* TODO: create privdesc table? can't do it yet because this is a fix for a minor release NOTE: only include tables that have a single integer column as pkey NOTE: some of these are part of proprietary extensions. how do we make them part of the extension? */ FOR _privdesc IN WITH privdesc AS ( SELECT 'ADDR' AS otype, 'public' AS masterschema, 'addr' AS mastertable, 'MaintainAddressMasters' AS editall, 'ViewAddressMasters' AS viewall, NULL AS ownerfield, NULL AS editmine, NULL AS viewmine UNION ALL SELECT 'BBH', 'xtmfg', 'bbom', 'MaintainBBOMs', 'ViewBBOMs', NULL, NULL, NULL UNION ALL SELECT 'BBI', 'xtmfg', 'bbom', 'MaintainBBOMs', 'ViewBBOMs', NULL, NULL, NULL UNION ALL SELECT 'BMH', 'public', 'bom', 'MaintainBOMs', 'ViewBOMs', NULL, NULL, NULL UNION ALL SELECT 'BMI', 'public', 'bom', 'MaintainBOMs', 'ViewBOMs', NULL, NULL, NULL UNION ALL SELECT 'BOH', 'xtmfg', 'boo', 'MaintainBOOs', 'ViewBOOs', NULL, NULL, NULL UNION ALL SELECT 'BOI', 'xtmfg', 'boo', 'MaintainBOOs', 'ViewBOOs', NULL, NULL, NULL UNION ALL SELECT 'C', 'public', 'custinfo', 'MaintainCustomerMasters', 'ViewCustomerMasters', NULL, NULL, NULL UNION ALL SELECT 'CRMA', 'public', 'crmacct', 'MaintainAllCRMAccounts', 'ViewAllCRMAccounts', 'crmacct_owner_username', 'MaintainPersonalCRMAccounts', 'ViewPersonalCRMAccounts' UNION ALL SELECT 'EMP', 'public', 'emp', 'MaintainEmployees', 'ViewEmployees', NULL, NULL, NULL UNION ALL SELECT 'I', 'public', 'item', 'MaintainItemMasters', 'ViewItemMasters', NULL, NULL, NULL UNION ALL SELECT 'INCDT', 'public', 'incdt', 'MaintainAllIncidents', 'ViewAllIncidents', 'incdt_owner_username', 'MaintainPersonalIncidents', 'ViewPersonalIncidents' UNION ALL SELECT 'IR', 'public', 'itemsrc', 'MaintainItemSources', 'ViewItemSources', NULL, NULL, NULL UNION ALL SELECT 'IS', 'public', 'itemsite', 'MaintainItemSites', 'ViewItemSites', NULL, NULL, NULL UNION ALL SELECT 'J', 'public', 'prj', 'MaintainAllProjects', 'ViewAllProjects', 'prj_owner_username', 'MaintainPersonalProjects', 'ViewPersonalProjects' UNION ALL SELECT 'J', 'public', 'prj', 'MaintainAllProjects', 'ViewAllProjects', 'prj_username', 'MaintainPersonalProjects', 'ViewPersonalProjects' UNION ALL SELECT 'L', 'public', 'location', 'MaintainLocations', 'ViewLocations', NULL, NULL, NULL UNION ALL SELECT 'OPP', 'public', 'ophead', 'MaintainAllOpportunities', 'ViewAllOpportunities', 'ophead_owner_username', 'MaintainPersonalOpportunities', 'ViewPersonalOpportunities' UNION ALL SELECT 'P', 'public', 'pohead', 'MaintainPurchaseOrders', 'ViewPurchaseOrders', NULL, NULL, NULL UNION ALL SELECT 'PI', 'public', 'pohead', 'MaintainPurchaseOrders', 'ViewPurchaseOrders', NULL, NULL, NULL UNION ALL SELECT 'Q', 'public', 'quhead', 'MaintainQuotes', 'ViewQuotes', NULL, NULL, NULL UNION ALL SELECT 'QI', 'public', 'quhead', 'MaintainQuotes', 'ViewQuotes', NULL, NULL, NULL UNION ALL SELECT 'RA', 'public', 'rahead', 'MaintainReturns', 'ViewReturns', NULL, NULL, NULL UNION ALL SELECT 'RI', 'public', 'rahead', 'MaintainReturns', 'ViewReturns', NULL, NULL, NULL UNION ALL SELECT 'S', 'public', 'cohead', 'MaintainSalesOrders', 'ViewSalesOrders', NULL, NULL, NULL UNION ALL SELECT 'SI', 'public', 'cohead', 'MaintainSalesOrders', 'ViewSalesOrders', NULL, NULL, NULL UNION ALL SELECT 'T', 'public', 'cntct', 'MaintainAllContacts', 'ViewAllContacts', 'cntct_owner_username', 'MaintainPersonalContacts', 'ViewPersonalContacts' UNION ALL SELECT 'TE', 'te', 'tehead', 'MaintainTimeExpense', 'ViewTimeExpenseHistory', 'tehead_username', 'MaintainTimeExpenseSelf', NULL UNION ALL SELECT 'TE', 'te', 'tehead', 'MaintainTimeExpenseOthers', 'ViewTimeExpenseHistory', 'tehead_username', 'MaintainTimeExpenseSelf', NULL UNION ALL SELECT 'TI', 'public', 'tohead', 'MaintainTransferOrders', 'ViewTransferOrders', NULL, NULL, NULL UNION ALL SELECT 'TO', 'public', 'tohead', 'MaintainTransferOrders', 'ViewTransferOrders', NULL, NULL, NULL UNION ALL SELECT 'TODO', 'public', 'todoitem', 'MaintainAllToDoItems', 'ViewAllToDoItems', 'todoitem_owner_username', 'MaintainPersonalToDoItems', 'ViewPersonalToDoItems' UNION ALL SELECT 'V', 'public', 'vendinfo', 'MaintainVendors', 'ViewVendors', NULL, NULL, NULL UNION ALL SELECT 'W', 'public', 'wo', 'MaintainWorkOrders', 'ViewWorkOrders', NULL, NULL, NULL UNION ALL SELECT 'WH', 'public', 'whsinfo', 'MaintainWarehouses', 'ViewWarehouses', NULL, NULL, NULL) -- UNION ALL SELECT 'LS', 'public', 'ls', NULL, NULL, NULL, NULL, NULL -- UNION ALL SELECT 'P', 'public', 'pohead', 'MaintainPostedPurchaseOrders', 'ViewPurchaseOrders', NULL, NULL, NULL -- additional criteria? -- UNION ALL SELECT 'PI', 'public', 'pohead', 'MaintainPostedPurchaseOrders', 'ViewPurchaseOrders', NULL, NULL, NULL -- additional criteria? SELECT * FROM privdesc WHERE otype = pObjectType LOOP _privfound := TRUE; RAISE DEBUG '% % % % % % %', _privdesc.otype, _privdesc.masterschema, _privdesc.mastertable, _privdesc.editall, _privdesc.viewall, _privdesc.editmine, _privdesc.viewmine; IF checkPrivilege(CASE UPPER(pPrivType) WHEN 'CREATE' THEN _privdesc.editall WHEN 'EDIT' THEN _privdesc.editall WHEN 'DELETE' THEN _privdesc.editall WHEN 'VIEW' THEN _privdesc.viewall END) THEN _haspriv = TRUE; ELSIF checkPrivilege(CASE UPPER(pPrivType) WHEN 'CREATE' THEN _privdesc.editmine WHEN 'EDIT' THEN _privdesc.editmine WHEN 'DELETE' THEN _privdesc.editmine WHEN 'VIEW' THEN _privdesc.viewmine END) THEN IF pObjectId IS NULL THEN _haspriv = TRUE; ELSE _pkey := primaryKeyFields(_privdesc.masterschema, _privdesc.mastertable); -- SELECT ... FROM schema.table WHERE pkeyfield = pObjectId AND ownerfield = pUser _qstr := 'SELECT EXISTS(SELECT 1 FROM ' || quote_ident(_privdesc.masterschema) || '.' || quote_ident(_privdesc.mastertable) || ' WHERE ' || quote_ident(_pkey[1]) || ' = ' || pObjectId || ' AND ' || quote_ident(_privdesc.ownerfield) || '= ' || quote_literal(COALESCE(pUser, getEffectiveXtUser())) || ');'; RAISE DEBUG '%', _qstr; EXECUTE _qstr INTO _haspriv; END IF; END IF; EXIT WHEN _haspriv; END LOOP; RETURN _haspriv OR NOT _privfound; END; $$; ALTER FUNCTION public.hasprivonobject(pprivtype text, pobjecttype text, pobjectid integer, puser text) OWNER TO admin; -- -- Name: FUNCTION hasprivonobject(pprivtype text, pobjecttype text, pobjectid integer, puser text); Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON FUNCTION hasprivonobject(pprivtype text, pobjecttype text, pobjectid integer, puser text) IS 'Return if a user has permission to view or edit a specific database object. pPrivType is either CREATE, EDIT, DELETE, or VIEW, and controls which privilege is checked. pObjectType is one of the string constants used by the Documents widget, such as ADDR for Addresses. pObjectId is the internal id of the record in the table associated with pObjectType (defaults to NULL). pUser is the username to be checked for those pObjectTypes that restrict access to individual users (NULL == current user and is the default).'; -- -- Name: hmac(text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION hmac(text, text, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_hmac'; ALTER FUNCTION public.hmac(text, text, text) OWNER TO admin; -- -- Name: hmac(bytea, bytea, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION hmac(bytea, bytea, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_hmac'; ALTER FUNCTION public.hmac(bytea, bytea, text) OWNER TO admin; -- -- Name: implodewo(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION implodewo(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; implodeChildren ALIAS FOR $2; resultCode INTEGER; _wotcCnt INTEGER; _routings BOOLEAN; BEGIN SELECT metric_value='t' INTO _routings FROM metric WHERE (metric_name='Routings'); IF ((SELECT wo_id FROM wo WHERE ((wo_status='E') AND (wo_id=pWoid))) IS NULL) THEN RETURN 0; END IF; IF (_routings) THEN SELECT count(*) INTO _wotcCnt FROM xtmfg.wotc WHERE (wotc_wo_id=pWoid); IF (_wotcCnt > 0) THEN RETURN -1; END IF; END IF; -- Delete any created P/R's for this W/O PERFORM deletePr('W', womatl_id) FROM womatl WHERE (womatl_wo_id=pWoid); DELETE FROM womatl WHERE (womatl_id IN ( SELECT womatl_id FROM womatl, wo WHERE ((womatl_wo_id=wo_id) AND (wo_status='E') AND (wo_id=pWoid)) )); IF _routings THEN DELETE FROM xtmfg.wooper WHERE (wooper_id IN ( SELECT wooper_id FROM xtmfg.wooper, wo WHERE ((wooper_wo_id=wo_id) AND (wo_status='E') AND (wo_id=pWoid)) )); END IF; UPDATE wo SET wo_status='O' WHERE (wo_id=pWoid); IF (implodeChildren) THEN resultCode := (SELECT MAX(implodeWo(wo_id, TRUE)) FROM wo WHERE ((wo_ordtype='W') AND (wo_ordid=pWoid))); resultCode := (SELECT MAX(deleteWo(wo_id, TRUE)) FROM wo WHERE ((wo_ordtype='W') AND (wo_ordid=pWoid))); END IF; RETURN 0; END; $_$; ALTER FUNCTION public.implodewo(integer, boolean) OWNER TO admin; -- -- Name: incdt; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE incdt ( incdt_id integer NOT NULL, incdt_number integer NOT NULL, incdt_crmacct_id integer, incdt_cntct_id integer, incdt_summary text, incdt_descrip text, incdt_item_id integer, incdt_timestamp timestamp without time zone DEFAULT now() NOT NULL, incdt_status character(1) DEFAULT 'N'::bpchar NOT NULL, incdt_assigned_username text, incdt_incdtcat_id integer, incdt_incdtseverity_id integer, incdt_incdtpriority_id integer, incdt_incdtresolution_id integer, incdt_lotserial text, incdt_ls_id integer, incdt_aropen_id integer, incdt_owner_username text, incdt_recurring_incdt_id integer, incdt_updated timestamp without time zone DEFAULT now() NOT NULL, incdt_prj_id integer, incdt_public boolean ); ALTER TABLE public.incdt OWNER TO admin; -- -- Name: TABLE incdt; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE incdt IS 'Incident table'; -- -- Name: COLUMN incdt.incdt_lotserial; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN incdt.incdt_lotserial IS 'incdt_lotserial is deprecated'; -- -- Name: COLUMN incdt.incdt_recurring_incdt_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN incdt.incdt_recurring_incdt_id IS 'The first incdt record in the series if this is a recurring Incident. If the incdt_recurring_incdt_id is the same as the incdt_id, this record is the first in the series.'; -- -- Name: incdt(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION incdt() RETURNS SETOF incdt LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row incdt%ROWTYPE; _priv TEXT; _grant BOOLEAN; BEGIN -- This query will give us the most permissive privilege the user has been granted SELECT privilege, granted INTO _priv, _grant FROM privgranted WHERE privilege IN ('MaintainAllIncidents','ViewAllIncidents','MaintainPersonalIncidents','ViewPersonalIncidents') ORDER BY granted DESC, sequence LIMIT 1; -- If have an 'All' privilege return all results IF (_priv ~ 'All' AND _grant) THEN FOR _row IN SELECT * FROM incdt LOOP RETURN NEXT _row; END LOOP; -- Otherwise if have any other grant, must be personal privilege. ELSIF (_grant) THEN FOR _row IN SELECT * FROM incdt WHERE getEffectiveXtUser() IN (incdt_owner_username, incdt_assigned_username) LOOP RETURN NEXT _row; END LOOP; END IF; RETURN; END; $$; ALTER FUNCTION public.incdt() OWNER TO admin; -- -- Name: FUNCTION incdt(); Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON FUNCTION incdt() IS 'A table function that returns Incident results according to privilege settings.'; -- -- Name: indentedbom(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION indentedbom(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; _revid INTEGER; BEGIN SELECT getActiveRevId('BOM',pItemid) INTO _revid; RETURN indentedBOM(pItemid, _revid); END; $_$; ALTER FUNCTION public.indentedbom(integer) OWNER TO admin; -- -- Name: indentedbom(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION indentedbom(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pRevisionid ALIAS FOR $2; _bomworkid INTEGER; _indexid INTEGER; _r RECORD; _batchsize NUMERIC; BEGIN -- Get the batch quantity SELECT COALESCE( ( SELECT bomhead_batchsize FROM bomhead WHERE ((bomhead_item_id=pItemId) AND (bomhead_rev_id=pRevisionid)) LIMIT 1),1) INTO _batchsize; -- Check on the temporary workspace -- PERFORM maintainBOMWorkspace(); -- Grab a new index for this bomwork set SELECT NEXTVAL('misc_index_seq') INTO _indexid; -- Step through all of the components of the passed pItemid FOR _r IN SELECT bomitem.*, item_id, itemuomtouom(item_id, item_inv_uom_id, NULL, (bomitem_qtyfxd/_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') AS qtyreq, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyfxd) AS qtyfxd, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper) AS qtyper, stdcost(item_id, bomitem_id) AS standardcost, actcost(item_id, bomitem_id) AS actualcost FROM bomitem(pItemId, pRevisionid), item WHERE ( (bomitem_item_id=item_id) ) LOOP -- Insert the component and bomitem parameters SELECT NEXTVAL('bomwork_bomwork_id_seq') INTO _bomworkid; INSERT INTO bomwork ( bomwork_id, bomwork_set_id, bomwork_parent_id, bomwork_level, bomwork_parent_seqnumber, bomwork_seqnumber, bomwork_item_id, bomwork_createwo, bomwork_qtyreq, bomwork_qtyfxd, bomwork_qtyper, bomwork_scrap, bomwork_issuemethod, bomwork_effective, bomwork_expires, bomwork_stdunitcost, bomwork_actunitcost, bomwork_char_id, bomwork_value, bomwork_notes, bomwork_ref, bomwork_bomitem_id, bomwork_ecn ) VALUES ( _bomworkid, _indexid, -1, 1, 0, _r.bomitem_seqnumber, _r.item_id, _r.bomitem_createwo, _r.qtyreq, _r.qtyfxd, _r.qtyper, _r.bomitem_scrap, _r.bomitem_issuemethod, _r.bomitem_effective, _r.bomitem_expires, _r.standardcost, _r.actualcost, _r.bomitem_char_id, _r.bomitem_value, _r.bomitem_notes, _r.bomitem_ref, _r.bomitem_id, _r.bomitem_ecn ); -- Explode the components of the current component PERFORM explodeBOM(_r.item_id, _bomworkid, 1); END LOOP; -- Return a key to the result RETURN _indexid; END; $_$; ALTER FUNCTION public.indentedbom(integer, integer) OWNER TO admin; -- -- Name: indentedbom(integer, integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION indentedbom(integer, integer, integer, integer) RETURNS SETOF bomdata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pRevisionid ALIAS FOR $2; pExpiredDays ALIAS FOR $3; pFutureDays ALIAS FOR $4; _row bomdata%ROWTYPE; _bomworksetid INTEGER; _x RECORD; _check CHAR(1); _inactive BOOLEAN := FALSE; _batchsize NUMERIC; BEGIN IF (pRevisionid != -1) THEN --Is this a deactivated revision? SELECT rev_status INTO _check FROM rev WHERE ((rev_id=pRevisionid) AND (rev_status='I')); IF (FOUND) THEN _inactive := TRUE; END IF; END IF; -- Get the batch quantity SELECT COALESCE( ( SELECT bomhead_batchsize FROM bomhead WHERE ((bomhead_item_id=pItemId) AND (bomhead_rev_id=pRevisionid)) LIMIT 1),1) INTO _batchsize; IF NOT (_inactive) THEN --We can explode this out based on current data SELECT indentedBOM(pItemid, pRevisionid) INTO _bomworksetid; FOR _x IN SELECT bomwork_id, bomwork_parent_id, bomwork_level, bomworkSequence(bomwork_id) AS seq_ord, bomwork_seqnumber, item_id, item_number, uom_name, item_descrip1, item_descrip2, (item_descrip1 || ' ' || item_descrip2) AS itemdescription, bomwork_qtyreq, bomwork_qtyfxd, bomwork_qtyper, bomwork_scrap, bomwork_createwo, CASE WHEN (bomwork_issuemethod='S') THEN 'Push' WHEN (bomwork_issuemethod='L') THEN 'Pull' WHEN (bomwork_issuemethod='M') THEN 'Mixed' ELSE 'Special' END AS issuemethod, bomwork_effective, bomwork_expires, (bomwork_expires <= CURRENT_DATE) AS expired, (bomwork_effective > CURRENT_DATE) AS future, bomwork_actunitcost AS actunitcost, bomwork_stdunitcost AS stdunitcost, CASE WHEN item_type NOT IN ('R','T') THEN itemuomtouom(item_id, item_inv_uom_id, NULL, (bomwork_qtyfxd/_batchsize + bomwork_qtyper) * (1 + bomwork_scrap), 'qtyper') * bomwork_actunitcost ELSE 0.0 END AS actextendedcost, CASE WHEN item_type NOT IN ('R','T') THEN itemuomtouom(item_id, item_inv_uom_id, NULL, (bomwork_qtyfxd/_batchsize + bomwork_qtyper) * (1 + bomwork_scrap), 'qtyper') * bomwork_stdunitcost ELSE 0.0 END AS stdextendedcost, bomwork_char_id, bomwork_value, bomwork_notes, bomwork_ref, bomwork_bomitem_id, bomwork_ecn FROM bomwork, item, uom WHERE ( (bomwork_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (bomwork_set_id=_bomworksetid) ) AND (bomwork_expires > (CURRENT_DATE - pExpiredDays)) AND (bomwork_effective <= (CURRENT_DATE + pFutureDays)) UNION SELECT -1, -1, 1, '0', NULL,-1, costelem_type AS bomdata_item_number, '', '', '', '', NULL, NULL, NULL, NULL, NULL, '', NULL, NULL, false, false, currToBase(itemcost_curr_id, itemcost_actcost, CURRENT_DATE) AS actunitcost, itemcost_stdcost AS stdunitcost, currToBase(itemcost_curr_id, itemcost_actcost, CURRENT_DATE) AS actextendedcost, itemcost_stdcost AS stdextendedcost, NULL, NULL,NULL,NULL, NULL,NULL FROM itemcost, costelem WHERE ( (itemcost_costelem_id=costelem_id) AND (NOT itemcost_lowlevel) AND (itemcost_item_id=pItemid) ) ORDER BY seq_ord LOOP _row.bomdata_bomwork_id := _x.bomwork_id; _row.bomdata_bomwork_parent_id := _x.bomwork_parent_id; _row.bomdata_bomwork_level := _x.bomwork_level; _row.bomdata_bomwork_seqnumber := _x.bomwork_seqnumber; _row.bomdata_bomitem_id := _x.bomwork_bomitem_id; _row.bomdata_item_id := _x.item_id; _row.bomdata_item_number := _x.item_number; _row.bomdata_uom_name := _x.uom_name; _row.bomdata_item_descrip1 := _x.item_descrip1; _row.bomdata_item_descrip2 := _x.item_descrip2; _row.bomdata_itemdescription := _x.itemdescription; _row.bomdata_batchsize := _batchsize; _row.bomdata_qtyreq := _x.bomwork_qtyreq; _row.bomdata_qtyfxd := _x.bomwork_qtyfxd; _row.bomdata_qtyper := _x.bomwork_qtyper; _row.bomdata_scrap := _x.bomwork_scrap; _row.bomdata_createchild := _x.bomwork_createwo; _row.bomdata_issuemethod := _x.issuemethod; _row.bomdata_effective := _x.bomwork_effective; _row.bomdata_expires := _x.bomwork_expires; _row.bomdata_expired := _x.expired; _row.bomdata_future := _x.future; _row.bomdata_actunitcost := _x.actunitcost; _row.bomdata_stdunitcost := _x.stdunitcost; _row.bomdata_actextendedcost := _x.actextendedcost; _row.bomdata_stdextendedcost := _x.stdextendedcost; _row.bomdata_ecn := _x.bomwork_ecn; _row.bomdata_char_id := _x.bomwork_char_id; _row.bomdata_value := _x.bomwork_value; _row.bomdata_notes := _x.bomwork_notes; _row.bomdata_ref := _x.bomwork_ref; RETURN NEXT _row; END LOOP; PERFORM deleteBOMWorkset(_bomworksetid); ELSE -- Use historical snapshot for inactive revisions FOR _x IN SELECT bomhist_id, bomhist_parent_id, bomhist_level, bomhistSequence(bomhist_seq_id) AS seq_ord, bomhist_seqnumber, item_id, item_number, uom_name, item_descrip1, item_descrip2, (item_descrip1 || ' ' || item_descrip2) AS itemdescription, bomhist_qtyreq, bomhist_qtyfxd, bomhist_qtyper, bomhist_scrap, bomhist_createwo, CASE WHEN (bomhist_issuemethod='S') THEN 'Push' WHEN (bomhist_issuemethod='L') THEN 'Pull' WHEN (bomhist_issuemethod='M') THEN 'Mixed' ELSE 'Special' END AS issuemethod, bomhist_effective, bomhist_expires, (bomhist_expires <= CURRENT_DATE) AS expired, (bomhist_effective > CURRENT_DATE) AS future, bomhist_actunitcost AS actunitcost, bomhist_stdunitcost AS stdunitcost, CASE WHEN item_type NOT IN ('R','T') THEN (bomist_qtyfxd/_batchsize + bomhist_qtyper) * (1 + bomhist_scrap) * bomhist_actunitcost ELSE 0 END AS actextendedcost, CASE WHEN item_type NOT IN ('R','T') THEN (bomist_qtyfxd/_batchsize + bomhist_qtyper) * (1 + bomhist_scrap) * bomhist_stdunitcost ELSE 0 END AS stdextendedcost, bomhist_char_id, bomhist_value, bomhist_notes, bomhist_ref FROM bomhist, item, uom WHERE ( (bomhist_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (bomhist_rev_id=pRevisionid) ) AND (bomhist_expires > (CURRENT_DATE - pExpiredDays)) AND (bomhist_effective <= (CURRENT_DATE + pFutureDays)) UNION SELECT -1, -1, 1, '0', NULL,-1, costelem_type AS bomdata_item_number, '', '', '', '', NULL, NULL, NULL, NULL, false, '', NULL, NULL, false, false, bomhist_actunitcost AS actunitcost, bomhist_stdunitcost AS stdunitcost, bomhist_actunitcost AS actextendedcost, bomhist_stdunitcost AS stdextendedcost, NULL,NULL,NULL,NULL FROM bomhist, costelem WHERE ((bomhist_rev_id=pRevisionid) AND (costelem_id=bomhist_item_id)) ORDER BY seq_ord LOOP _row.bomdata_bomwork_id := _x.bomhist_id; _row.bomdata_bomwork_parent_id := _x.bomhist_parent_id; _row.bomdata_bomwork_level := _x.bomhist_level; _row.bomdata_bomwork_seqnumber := _x.bomhist_seqnumber; _row.bomdata_bomitem_id := -1; _row.bomdata_item_id := _x.item_id; _row.bomdata_item_number := _x.item_number; _row.bomdata_uom_name := _x.uom_name; _row.bomdata_item_descrip1 := _x.item_descrip1; _row.bomdata_item_descrip2 := _x.item_descrip2; _row.bomdata_itemdescription := _x.itemdescription; _row.bomdata_batchsize := _batchsize; _row.bomdata_qtyreq := _x.bomhist_qtyreq; _row.bomdata_qtyfxd := _x.bomist_qtyfxd; _row.bomdata_qtyper := _x.bomhist_qtyper; _row.bomdata_scrap := _x.bomhist_scrap; _row.bomdata_createchild := _x.bomhist_createwo; _row.bomdata_issuemethod := _x.issuemethod; _row.bomdata_effective := _x.bomhist_effective; _row.bomdata_expires := _x.bomhist_expires; _row.bomdata_expired := _x.expired; _row.bomdata_future := _x.future; _row.bomdata_actunitcost := _x.actunitcost; _row.bomdata_stdunitcost := _x.stdunitcost; _row.bomdata_actextendedcost := _x.actextendedcost; _row.bomdata_stdextendedcost := _x.stdextendedcost; _row.bomdata_ecn := ''; _row.bomdata_char_id := _x.bomhist_char_id; _row.bomdata_value := _x.bomhist_value; _row.bomdata_notes := _x.bomhist_notes; _row.bomdata_ref := _x.bomhist_ref; RETURN NEXT _row; END LOOP; END IF; RETURN; END; $_$; ALTER FUNCTION public.indentedbom(integer, integer, integer, integer) OWNER TO admin; -- -- Name: indentedwhereused(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION indentedwhereused(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; _indexid INTEGER; _level INTEGER; BEGIN -- Check on the temporary workspace -- PERFORM maintainBOMWorkspace(); _indexid := (SELECT NEXTVAL('misc_index_seq')); _level := 1; INSERT INTO bomwork ( bomwork_set_id, bomwork_parent_id, bomwork_level, bomwork_seqnumber, bomwork_item_id, bomwork_item_type, bomwork_createwo, bomwork_qtyfxd, bomwork_qtyper, bomwork_scrap, bomwork_issuemethod, bomwork_effective, bomwork_expires, bomwork_status, bomwork_stdunitcost, bomwork_actunitcost ) SELECT _indexid, -1, 1, bomitem_seqnumber, item_id, item_type, bomitem_createwo, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyfxd), (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper), bomitem_scrap, bomitem_issuemethod, bomitem_effective, bomitem_expires, 'U', stdcost(item_id), actcost(item_id) FROM bomitem, item WHERE ((bomitem_item_id=pItemid) AND (bomitem_parent_item_id=item_id) AND (CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (bomitem_rev_id=getActiveRevId('BOM',bomitem_parent_item_id))); WHILE ( ( SELECT count(*) FROM bomwork WHERE ((bomwork_item_type IN ('M', 'F')) AND (bomwork_status='U') AND (bomwork_set_id=_indexid)) ) > 0) LOOP _level := _level + 1; INSERT INTO bomwork ( bomwork_set_id, bomwork_parent_id, bomwork_level, bomwork_seqnumber, bomwork_item_id, bomwork_item_type, bomwork_createwo, bomwork_qtyfxd, bomwork_qtyper, bomwork_scrap, bomwork_issuemethod, bomwork_effective, bomwork_expires, bomwork_status, bomwork_stdunitcost, bomwork_actunitcost ) SELECT _indexid, bomwork_id, _level, bomitem_seqnumber, item_id, item_type, bomitem_createwo, (bomwork_qtyper * (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyfxd)), (bomwork_qtyper * (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper)), bomitem_scrap, bomitem_issuemethod, CASE WHEN bomitem_effective < bomwork_effective THEN bomwork_effective ELSE bomitem_effective END, CASE WHEN bomitem_expires > bomwork_expires THEN bomwork_expires ELSE bomitem_expires END, 'N', stdcost(item_id), actcost(item_id) FROM bomwork JOIN bomitem ON ( (bomitem_item_id=bomwork_item_id) AND (CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (bomitem_rev_id=getActiveRevId('BOM',bomitem_parent_item_id)) ) JOIN item ON (item_id=bomitem_parent_item_id) WHERE ((bomwork_status='U') AND (bomwork_item_type IN ('M', 'F'))); UPDATE bomwork SET bomwork_status='C' WHERE ((bomwork_status='U') AND (bomwork_set_id=_indexid)); UPDATE bomwork SET bomwork_status='U' WHERE ((bomwork_status='N') AND (bomwork_set_id=_indexid)); END LOOP; RETURN _indexid; END; $_$; ALTER FUNCTION public.indentedwhereused(integer) OWNER TO admin; -- -- Name: indentedwo(integer, boolean, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION indentedwo(integer, boolean, boolean, boolean) RETURNS SETOF wodata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pwoid ALIAS FOR $1; pshowops ALIAS FOR $2; pshowmatl ALIAS FOR $3; pshowindent ALIAS FOR $4; _row wodata%ROWTYPE; _subrow wodata%ROWTYPE; _opx wodata%ROWTYPE; _x RECORD; _level INTEGER; BEGIN --The wodata_id_type column is used to indicate the source of the wodata_id --there are three different tables used wo, womatl and womatlvar --wodata_id_type = 1 = wo_id --wodata_id_type = 2 = womatl_id --wodata_id_type = 3 = wooper_id --initialise values _level := 0; --get top level works orders FOR _x IN SELECT wo_id,wo_number,wo_subnumber,wo_status,wo_startdate, wo_duedate,wo_adhoc,wo_itemsite_id,itemsite_qtyonhand, wo_qtyord,wo_qtyrcv,wo_prodnotes, item_number, item_descrip1, item_descrip2, uom_name FROM wo, itemsite, item, uom WHERE ((wo_id = pwoid) AND (itemsite_id = wo_itemsite_id) AND (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id)) ORDER BY wo_number, wo_subnumber LOOP _row.wodata_id := _x.wo_id; _row.wodata_id_type := 1; _row.wodata_number := _x.wo_number; _row.wodata_subnumber := _x.wo_subnumber; _row.wodata_itemnumber := _x.item_number; _row.wodata_descrip := _x.item_descrip1 || '-' || _x.item_descrip2; _row.wodata_status := _x.wo_status; _row.wodata_startdate := _x.wo_startdate; _row.wodata_duedate := _x.wo_duedate; _row.wodata_adhoc := _x.wo_adhoc; _row.wodata_itemsite_id := _x.wo_itemsite_id; _row.wodata_qoh := _x.itemsite_qtyonhand; _row.wodata_short := noneg(_x.wo_qtyord - _x.wo_qtyrcv); _row.wodata_qtyrcv := _x.wo_qtyrcv; _row.wodata_qtyordreq := _x.wo_qtyord; _row.wodata_qtyuom := _x.uom_name; _row.wodata_scrap := 0; _row.wodata_notes := _x.wo_prodnotes; _row.wodata_level := _level; RETURN NEXT _row; IF (pshowmatl AND NOT pshowops) THEN --expand materials FOR _subrow IN SELECT * FROM indentedwomatl(pwoid, _level) LOOP RETURN NEXT _subrow; END LOOP; END IF; IF ((pshowmatl OR pshowindent) AND NOT pshowops) THEN --expand next level down FOR _subrow IN SELECT * FROM indentedwo(_x.wo_id, NULL, _level + 1, pshowmatl, pshowindent) LOOP RETURN NEXT _subrow; END LOOP; END IF; IF (pshowops) THEN --expand materials not on operations IF (pshowmatl) THEN FOR _subrow IN SELECT * FROM indentedwomatl(pwoid, -1, _level) LOOP RETURN NEXT _subrow; END LOOP; END IF; IF (pshowmatl OR pshowindent) THEN --expand next level down FOR _subrow IN SELECT * FROM indentedwo(_x.wo_id, -1, _level + 1, pshowmatl, pshowindent) LOOP RETURN NEXT _subrow; END LOOP; END IF; --expand opeartions FOR _opx IN SELECT * FROM xtmfg.indentedwoops(pwoid,_level) LOOP RETURN NEXT _opx; IF (pshowmatl) THEN --expand materials on operations FOR _subrow IN SELECT * FROM indentedwomatl(pwoid, _opx.wodata_id, _level + 1) LOOP RETURN NEXT _subrow; END LOOP; END IF; IF (pshowmatl OR pshowindent) THEN --expand next level down FOR _subrow IN SELECT * FROM indentedwo(_x.wo_id, _opx.wodata_id, _level + 2, pshowmatl, pshowindent) LOOP RETURN NEXT _subrow; END LOOP; END IF; END LOOP; END IF; END LOOP; RETURN; END; $_$; ALTER FUNCTION public.indentedwo(integer, boolean, boolean, boolean) OWNER TO admin; -- -- Name: indentedwo(integer, integer, integer, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION indentedwo(integer, integer, integer, boolean, boolean) RETURNS SETOF wodata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pwoid ALIAS FOR $1; pwooperid ALIAS FOR $2; plevel ALIAS FOR $3; pshowmatl ALIAS FOR $4; pshowindent ALIAS FOR $5; _row wodata%ROWTYPE; _opx wodata%ROWTYPE; _x RECORD; _subx RECORD; _index INTEGER; _level INTEGER; _qry TEXT; BEGIN --The wodata id column is used to indicate the source of the id --there are three different tables used wo, womatl and womatlvar --wodata_id_type = 1 = wo_id --wodata_id_type = 2 = womatl_id --wodata_id_type = 3 = wooper_id _level := (plevel + 1); --find all WO with the ordid of the next level up _qry := 'SELECT wo_id,wo_number,wo_subnumber,wo_status,wo_startdate,wo_duedate, wo_adhoc,wo_itemsite_id,itemsite_qtyonhand,wo_qtyord,wo_qtyrcv, wo_prodnotes, item_number,item_descrip1, item_descrip2, uom_name, womatl_qtyiss, womatl_scrap, womatl_wooper_id FROM itemsite, wo, item, uom, womatl WHERE ((wo_ordid = ' || pwoid || ') AND (wo_ordtype = ''W'') AND (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (wo_womatl_id=womatl_id) AND (wo_itemsite_id = itemsite_id) '; IF (pwooperid IS NOT NULL) THEN _qry := _qry || ' AND (womatl_wooper_id=' || pwooperid || ') '; END IF; _qry := _qry || ') ORDER BY wo_number, wo_subnumber'; /* if (pwooperid IS NOT NULL) THEN raise exception 'stop %',_qry; END IF;*/ FOR _x IN EXECUTE _qry LOOP _row.wodata_id := _x.wo_id; _row.wodata_id_type := 1; _row.wodata_number := _x.wo_number; _row.wodata_subnumber := _x.wo_subnumber; _row.wodata_itemnumber := _x.item_number; _row.wodata_descrip := _x.item_descrip1 || '-' || _x.item_descrip2; _row.wodata_status := _x.wo_status; _row.wodata_startdate := _x.wo_startdate; _row.wodata_duedate := _x.wo_duedate; _row.wodata_adhoc := _x.wo_adhoc; _row.wodata_itemsite_id := _x.wo_itemsite_id; _row.wodata_qoh := _x.itemsite_qtyonhand; _row.wodata_short := noneg(_x.wo_qtyord - _x.wo_qtyrcv); _row.wodata_qtyiss := _x.womatl_qtyiss; _row.wodata_qtyrcv := _x.wo_qtyrcv; _row.wodata_qtyordreq := _x.wo_qtyord; _row.wodata_scrap := _x.womatl_scrap; _row.wodata_notes := _x.wo_prodnotes; _row.wodata_level := plevel; RETURN NEXT _row; --if indentation require expand next level IF (pshowindent AND pwooperid IS NULL) THEN IF (pshowmatl AND pshowindent) THEN --get materials for this level FOR _subx IN SELECT * FROM indentedwomatl(_x.wo_id, plevel) LOOP RETURN NEXT _subx; END LOOP; END IF; IF (pshowindent) THEN --expand lower levels FOR _subx IN SELECT * FROM indentedwo(_x.wo_id, NULL, _level, pshowmatl, pshowindent ) LOOP RETURN NEXT _subx; END LOOP; END IF; ELSIF (pshowindent) THEN --Handle operations --expand materials not on operations IF (pshowmatl) THEN FOR _subx IN SELECT * FROM indentedwomatl(_x.wo_id, -1, plevel) LOOP RETURN NEXT _subx; END LOOP; END IF; --expand next level down not on operations FOR _subx IN SELECT * FROM indentedwo(_x.wo_id, -1, _level, pshowmatl, pshowindent) LOOP RETURN NEXT _subx; END LOOP; --expand operations FOR _opx IN SELECT * FROM xtmfg.indentedwoops(_x.wo_id,plevel) LOOP RETURN NEXT _opx; IF (pshowmatl) THEN --expand materials on operations FOR _subx IN SELECT * FROM indentedwomatl(_x.wo_id, _opx.wodata_id, _level) LOOP RETURN NEXT _subx; -- raise exception 'stop %',_opx.wodata_id; END LOOP; END IF; --expand next level down FOR _subx IN SELECT * FROM indentedwo(_x.wo_id, _opx.wodata_id, _level + 2, pshowmatl, pshowindent) LOOP RETURN NEXT _subx; END LOOP; END LOOP; END IF; END LOOP; RETURN; END; $_$; ALTER FUNCTION public.indentedwo(integer, integer, integer, boolean, boolean) OWNER TO admin; -- -- Name: indentedwomatl(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION indentedwomatl(integer, integer) RETURNS SETOF wodata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pwoid ALIAS FOR $1; plevel ALIAS FOR $2; _subx RECORD; BEGIN FOR _subx IN SELECT * FROM indentedwomatl(pwoid, NULL::integer, plevel) LOOP RETURN NEXT _subx; END LOOP; RETURN; END; $_$; ALTER FUNCTION public.indentedwomatl(integer, integer) OWNER TO admin; -- -- Name: indentedwomatl(integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION indentedwomatl(integer, integer, integer) RETURNS SETOF wodata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pwoid ALIAS FOR $1; pwooperid ALIAS FOR $2; plevel ALIAS FOR $3; _status TEXT; _subrow wodata%ROWTYPE; _subx RECORD; _level INTEGER; _qry TEXT; BEGIN --The wodata id column is used to indicate the source of the id --there are three different tables used wo, womatl and womatlvar --wodata_id_type = 1 = wo_id --wodata_id_type = 2 = womatl_id --wodata_id_type = 3 = wooper_id _qry := 'SELECT womatl_id, wo_number, wo_subnumber, wo_startdate, womatl_duedate, womatl_itemsite_id, itemsite_qtyonhand, womatl_qtyreq, womatl_qtyiss, womatl_qtyper, womatl_qtyreq, womatl_scrap, womatl_ref, womatl_notes, item_number, item_descrip1, item_descrip2, uom_name FROM womatl, wo, itemsite, item, uom WHERE ((wo_id = womatl_wo_id) AND (wo_id = ' || pwoid || ') AND (womatl_itemsite_id = itemsite_id) AND (itemsite_item_id=item_id) AND (womatl_uom_id=uom_id) '; -- Need to display in case child w/o is deleted -- AND (NOT womatl_createwo OR womatl_createwo IS NULL) '; IF (pwooperid IS NOT NULL) THEN _qry := _qry || 'AND (womatl_wooper_id=' || pwooperid || ')'; END IF; _qry := _qry || ') ORDER BY item_number;'; _level := plevel + 1; SELECT wo_status FROM wo WHERE wo_id = pwoid LIMIT 1 INTO _status; FOR _subx IN EXECUTE _qry LOOP _subrow.wodata_id := _subx.womatl_id; _subrow.wodata_id_type := 2; _subrow.wodata_number := _subx.wo_number; _subrow.wodata_subnumber := _subx.wo_subnumber; _subrow.wodata_itemnumber := _subx.item_number; _subrow.wodata_descrip := _subx.item_descrip1 || '-' || _subx.item_descrip2; _subrow.wodata_status := _status; _subrow.wodata_startdate := _subx.wo_startdate; _subrow.wodata_duedate := _subx.womatl_duedate; _subrow.wodata_itemsite_id := _subx.womatl_itemsite_id; _subrow.wodata_qoh := _subx.itemsite_qtyonhand; IF((_subx.itemsite_qtyonhand > (_subx.womatl_qtyreq - _subx.womatl_qtyiss))) THEN _subrow.wodata_short := 0; ELSE _subrow.wodata_short := (_subx.womatl_qtyreq - _subx.womatl_qtyiss) - _subx.itemsite_qtyonhand; END IF; _subrow.wodata_qtyper := _subx.womatl_qtyper; _subrow.wodata_qtyiss := _subx.womatl_qtyiss; _subrow.wodata_qtyordreq := _subx.womatl_qtyreq; _subrow.wodata_qtyuom := _subx.uom_name; _subrow.wodata_scrap := _subx.womatl_scrap; _subrow.wodata_notes := _subx.womatl_notes; _subrow.wodata_ref := _subx.womatl_ref; _subrow.wodata_level := _level; RETURN NEXT _subrow; END LOOP; RETURN; END; $_$; ALTER FUNCTION public.indentedwomatl(integer, integer, integer) OWNER TO admin; -- -- Name: initeffectivextuser(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION initeffectivextuser() RETURNS void LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Effective users use a temporary table to store the user information -- and this function, called by the other functions, makes sure the temp -- tables exist first. PERFORM * FROM pg_catalog.pg_class WHERE relname = 'effective_user' AND relnamespace = pg_catalog.pg_my_temp_schema(); IF NOT FOUND THEN CREATE TEMPORARY TABLE effective_user ( effective_key TEXT, effective_value TEXT ); CREATE UNIQUE INDEX effective_user_pkey ON effective_user (effective_key); END IF; END; $$; ALTER FUNCTION public.initeffectivextuser() OWNER TO admin; -- -- Name: initialdistribution(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION initialdistribution(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pLocationid ALIAS FOR $2; _itemlocid INTEGER; _invhistid INTEGER; _itemlocSeries INTEGER; _r RECORD; BEGIN -- Make sure the passed itemsite points to a real item IF ( (SELECT (item_type IN ('R', 'F') OR itemsite_costmethod = 'J') FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ) ) ) THEN RETURN 0; END IF; _itemlocSeries := NEXTVAL('itemloc_series_seq'); -- Reassign the location_id for all existing itemlocs if -- the passed itemsite is already lot/serial controlled IF ( ( SELECT (itemsite_controlmethod IN ('L', 'S')) FROM itemsite WHERE (itemsite_id=pItemsiteid) ) ) THEN FOR _r IN SELECT itemloc_id, itemloc_ls_id, itemloc_qty FROM itemloc WHERE (itemloc_itemsite_id=pItemsiteid) LOOP -- Create the RL transaction SELECT NEXTVAL('invhist_invhist_id_seq') INTO _invhistid; INSERT INTO invhist ( invhist_id, invhist_itemsite_id, invhist_series, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_comments, invhist_invuom, invhist_unitcost, invhist_hasdetail, invhist_costmethod, invhist_value_before, invhist_value_after ) SELECT _invhistid, itemsite_id, _itemlocSeries, 'RL', 0, _r.itemloc_qty, _r.itemloc_qty, 'Initial Distribution', uom_name, stdCost(item_id), TRUE, itemsite_costmethod, itemsite_value, itemsite_value FROM item, itemsite, uom WHERE ( (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (itemsite_id=pItemsiteid) ); -- Update the itemloc UPDATE itemloc SET itemloc_location_id=pLocationid WHERE (itemloc_id=_r.itemloc_id); -- Record the detail transaction INSERT INTO invdetail ( invdetail_invhist_id, invdetail_location_id, invdetail_ls_id, invdetail_qty, invdetail_qty_before, invdetail_qty_after ) VALUES ( _invhistid, pLocationid, _r.itemloc_ls_id, _r.itemloc_qty, 0, _r.itemloc_qty ); -- Adjust QOH if this itemlocdist is to/from a non-netable location IF ( SELECT (NOT location_netable) FROM location WHERE (location_id=pLocationid) ) THEN INSERT INTO invhist ( invhist_itemsite_id, invhist_series, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_comments, invhist_invuom, invhist_unitcost, invhist_costmethod, invhist_value_before, invhist_value_after ) SELECT itemsite_id, _itemlocSeries, 'NN', (_r.itemloc_qty * -1), _r.itemloc_qty, 0, 'Initial Distribution', uom_name, stdCost(item_id), itemsite_costmethod, itemsite_value, itemsite_value FROM itemsite, item, uom WHERE ( (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (itemsite_id=pItemsiteid) ); UPDATE itemsite SET itemsite_nnqoh = (itemsite_nnqoh + _r.itemloc_qty), itemsite_qtyonhand = (itemsite_qtyonhand - _r.itemloc_qty) WHERE (itemsite_id=pItemsiteid); END IF; END LOOP; ELSE -- The passed itemsite is not lot/serial controlled -- Make sure that there are not any stagnent itemlocs DELETE FROM itemloc WHERE (itemloc_itemsite_id=pItemsiteid); -- Create the RL transaction SELECT NEXTVAL('invhist_invhist_id_seq') INTO _invhistid; INSERT INTO invhist ( invhist_id, invhist_itemsite_id, invhist_series, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_comments, invhist_invuom, invhist_unitcost, invhist_hasdetail, invhist_costmethod, invhist_value_before, invhist_value_after ) SELECT _invhistid, itemsite_id, _itemlocSeries, 'RL', 0, itemsite_qtyonhand, itemsite_qtyonhand, 'Initial Distribution', uom_name, stdCost(item_id), TRUE, itemsite_costmethod, itemsite_value, itemsite_value FROM item, itemsite, uom WHERE ( (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (itemsite_id=pItemsiteid) ); -- Create the itemloc SELECT NEXTVAL('itemloc_itemloc_id_seq') INTO _itemlocid; INSERT INTO itemloc ( itemloc_id, itemloc_itemsite_id, itemloc_location_id, itemloc_expiration, itemloc_qty ) SELECT _itemlocid, itemsite_id, pLocationid, endOfTime(), itemsite_qtyonhand FROM itemsite WHERE (itemsite_id=pItemsiteid); -- Record the detail transaction INSERT INTO invdetail ( invdetail_invhist_id, invdetail_location_id, invdetail_qty, invdetail_qty_before, invdetail_qty_after ) SELECT _invhistid, pLocationid, itemsite_qtyonhand, 0, itemsite_qtyonhand FROM itemsite WHERE (itemsite_id=pItemsiteid); -- Adjust QOH if this itemlocdist is to/from a non-netable location IF ( SELECT (NOT location_netable) FROM location WHERE (location_id=pLocationid) ) THEN INSERT INTO invhist ( invhist_itemsite_id, invhist_series, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_comments, invhist_invuom, invhist_unitcost, invhist_costmethod, invhist_value_before, invhist_value_after ) SELECT itemsite_id, _itemlocSeries, 'NN', (itemloc_qty * -1), itemloc_qty, 0, 'Initial Distribution', uom_name, stdCost(item_id), itemsite_costmethod, itemsite_value, itemsite_value FROM itemloc, itemsite, item, uom WHERE ( (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (itemloc_itemsite_id=itemsite_id) AND (itemloc_id=_itemlocid) ); UPDATE itemsite SET itemsite_nnqoh = itemsite_qtyonhand, itemsite_qtyonhand = 0 FROM itemloc WHERE ( (itemloc_itemsite_id=itemsite_id) AND (itemloc_id=_itemlocid) ); END IF; END IF; RETURN _itemlocid; END; $_$; ALTER FUNCTION public.initialdistribution(integer, integer) OWNER TO admin; -- -- Name: apopen; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE apopen ( apopen_id integer DEFAULT nextval(('"apopen_apopen_id_seq"'::text)::regclass) NOT NULL, apopen_docdate date, apopen_duedate date, apopen_terms_id integer, apopen_vend_id integer, apopen_doctype character(1), apopen_docnumber text, apopen_amount numeric(20,2), apopen_notes text, apopen_posted boolean, apopen_reference text, apopen_invcnumber text, apopen_ponumber text, apopen_journalnumber integer, apopen_paid numeric(20,2) DEFAULT 0, apopen_open boolean, apopen_username text, apopen_discount boolean DEFAULT false NOT NULL, apopen_accnt_id integer DEFAULT (-1), apopen_curr_id integer DEFAULT basecurrid(), apopen_closedate date, apopen_distdate date, apopen_void boolean DEFAULT false NOT NULL, apopen_curr_rate numeric NOT NULL, apopen_discountable_amount numeric(20,2) DEFAULT 0, apopen_status text, CONSTRAINT apopen_apopen_status_check CHECK ((((apopen_status = 'O'::text) OR (apopen_status = 'H'::text)) OR (apopen_status = 'C'::text))), CONSTRAINT apopen_apopen_status_notnull CHECK ((apopen_status IS NOT NULL)) ); ALTER TABLE public.apopen OWNER TO admin; -- -- Name: TABLE apopen; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE apopen IS 'Accounts Payable (A/P) open Items information'; -- -- Name: curr_symbol; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE curr_symbol ( curr_id integer NOT NULL, curr_base boolean DEFAULT false NOT NULL, curr_name character varying(50) NOT NULL, curr_symbol character varying(9) NOT NULL, curr_abbr character varying(3) NOT NULL ); ALTER TABLE public.curr_symbol OWNER TO admin; -- -- Name: TABLE curr_symbol; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE curr_symbol IS 'Currency Names, Symbols, and Abbreviations'; -- -- Name: terms; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE terms ( terms_id integer DEFAULT nextval(('terms_terms_id_seq'::text)::regclass) NOT NULL, terms_code text NOT NULL, terms_descrip text, terms_type character(1), terms_duedays integer, terms_discdays integer, terms_discprcnt numeric(10,6), terms_cutoffday integer, terms_ap boolean, terms_ar boolean, CONSTRAINT terms_terms_code_check CHECK ((terms_code <> ''::text)) ); ALTER TABLE public.terms OWNER TO admin; -- -- Name: TABLE terms; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE terms IS 'Billing Terms information'; -- -- Name: vendinfo; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE vendinfo ( vend_id integer DEFAULT nextval(('vend_vend_id_seq'::text)::regclass) NOT NULL, vend_name text, vend_lastpurchdate date, vend_active boolean, vend_po boolean, vend_comments text, vend_pocomments text, vend_number text NOT NULL, vend_1099 boolean, vend_exported boolean, vend_fobsource character(1), vend_fob text, vend_terms_id integer, vend_shipvia text, vend_vendtype_id integer, vend_qualified boolean, vend_ediemail text, vend_ediemailbody text, vend_edisubject text, vend_edifilename text, vend_accntnum text, vend_emailpodelivery boolean, vend_restrictpurch boolean, vend_edicc text, vend_curr_id integer DEFAULT basecurrid(), vend_cntct1_id integer, vend_cntct2_id integer, vend_addr_id integer, vend_match boolean DEFAULT false NOT NULL, vend_ach_enabled boolean DEFAULT false NOT NULL, vend_ach_accnttype text, vend_ach_use_vendinfo boolean DEFAULT true NOT NULL, vend_ach_indiv_number text DEFAULT ''::text NOT NULL, vend_ach_indiv_name text DEFAULT ''::text NOT NULL, vend_ediemailhtml boolean DEFAULT false NOT NULL, vend_ach_routingnumber bytea DEFAULT '\\000'::bytea NOT NULL, vend_ach_accntnumber bytea DEFAULT '\\000'::bytea NOT NULL, vend_taxzone_id integer, vend_accnt_id integer, vend_expcat_id integer DEFAULT (-1), vend_tax_id integer DEFAULT (-1), CONSTRAINT vendinfo_vend_ach_accnttype_check CHECK (((vend_ach_accnttype = 'K'::text) OR (vend_ach_accnttype = 'C'::text))), CONSTRAINT vendinfo_vend_number_check CHECK ((vend_number <> ''::text)) ); ALTER TABLE public.vendinfo OWNER TO admin; -- -- Name: TABLE vendinfo; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE vendinfo IS 'Vendor information'; -- -- Name: COLUMN vendinfo.vend_ach_accnttype; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN vendinfo.vend_ach_accnttype IS 'Type of bank account: K = checKing, C = Cash = savings. These values were chosen to be consistent with bankaccnt_type.'; SET search_path = api, pg_catalog; -- -- Name: apmemo; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW apmemo AS SELECT vendinfo.vend_number AS vendor_number, apopen.apopen_docdate AS document_date, apopen.apopen_duedate AS due_date, CASE WHEN (apopen.apopen_doctype = 'C'::bpchar) THEN 'Credit Memo'::text ELSE 'Debit Memo'::text END AS document_type, apopen.apopen_docnumber AS document_number, apopen.apopen_ponumber AS po_number, apopen.apopen_journalnumber AS journal_number, terms.terms_code AS terms, curr.curr_abbr AS currency, apopen.apopen_amount AS amount, apopen.apopen_paid AS paid, (apopen.apopen_amount - apopen.apopen_paid) AS balance, apopen.apopen_notes AS notes, CASE WHEN (apopen.apopen_accnt_id = (-1)) THEN NULL::text ELSE public.formatglaccount(apopen.apopen_accnt_id) END AS alternate_prepaid_account FROM (((public.apopen LEFT JOIN public.vendinfo ON ((vendinfo.vend_id = apopen.apopen_vend_id))) LEFT JOIN public.curr_symbol curr ON ((curr.curr_id = apopen.apopen_curr_id))) LEFT JOIN public.terms ON ((terms.terms_id = apopen.apopen_terms_id))) WHERE (apopen.apopen_doctype = ANY (ARRAY['C'::bpchar, 'D'::bpchar])); ALTER TABLE api.apmemo OWNER TO admin; -- -- Name: VIEW apmemo; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW apmemo IS 'A/P Credit and Debit Memo'; SET search_path = public, pg_catalog; -- -- Name: insertapmemo(api.apmemo); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertapmemo(api.apmemo) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNew ALIAS FOR $1; _result INTEGER; BEGIN IF (pNew.document_type = 'Credit Memo') THEN SELECT createAPCreditMemo( getVendId(pNew.vendor_number), pNew.document_number, pNew.po_number, pNew.document_date, pNew.amount, pNew.notes, getGLAccntId(pNew.alternate_prepaid_account), pNew.due_date, getTermsId(pNew.terms) ) INTO _result; IF (_result <= 0) THEN RAISE EXCEPTION 'Function createAPCreditMemo failed with result = %', _result; END IF; ELSE IF (pNew.document_type = 'Debit Memo') THEN SELECT createAPDebitMemo( null, getVendId(pNew.vendor_number), pNew.journal_number, pNew.document_number, pNew.po_number, pNew.document_date, pNew.amount, pNew.notes, getGLAccntId(pNew.alternate_prepaid_account), pNew.due_date, getTermsId(pNew.terms), COALESCE(getCurrId(pNew.currency), baseCurrId()) ) INTO _result; IF (_result <= 0) THEN RAISE EXCEPTION 'Function createAPDebitMemo failed with result = %', _result; END IF; ELSE RAISE EXCEPTION 'Function insertAPMemo failed, invalid Document Type'; END IF; END IF; RETURN TRUE; END; $_$; ALTER FUNCTION public.insertapmemo(api.apmemo) OWNER TO admin; -- -- Name: aropen; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE aropen ( aropen_id integer DEFAULT nextval(('"aropen_aropen_id_seq"'::text)::regclass) NOT NULL, aropen_docdate date NOT NULL, aropen_duedate date NOT NULL, aropen_terms_id integer, aropen_cust_id integer, aropen_doctype character(1), aropen_docnumber text, aropen_applyto text, aropen_ponumber text, aropen_amount numeric(20,2) NOT NULL, aropen_notes text, aropen_posted boolean DEFAULT false NOT NULL, aropen_salesrep_id integer, aropen_commission_due numeric(20,2), aropen_commission_paid boolean DEFAULT false, aropen_ordernumber text, aropen_cobmisc_id integer DEFAULT (-1), aropen_journalnumber integer, aropen_paid numeric(20,2) DEFAULT 0, aropen_open boolean, aropen_username text, aropen_rsncode_id integer, aropen_salescat_id integer DEFAULT (-1), aropen_accnt_id integer DEFAULT (-1), aropen_curr_id integer DEFAULT basecurrid(), aropen_closedate date, aropen_distdate date, aropen_curr_rate numeric NOT NULL, aropen_discount boolean DEFAULT false NOT NULL ); ALTER TABLE public.aropen OWNER TO admin; -- -- Name: TABLE aropen; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE aropen IS 'Accounts Receivable (A/R) open Items information'; -- -- Name: custinfo; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE custinfo ( cust_id integer DEFAULT nextval(('cust_cust_id_seq'::text)::regclass) NOT NULL, cust_active boolean NOT NULL, cust_custtype_id integer, cust_salesrep_id integer, cust_commprcnt numeric(10,6), cust_name text, cust_creditlmt integer, cust_creditrating text, cust_financecharge boolean, cust_backorder boolean NOT NULL, cust_partialship boolean NOT NULL, cust_terms_id integer, cust_discntprcnt numeric(10,6) NOT NULL, cust_balmethod character(1) NOT NULL, cust_ffshipto boolean NOT NULL, cust_shipform_id integer, cust_shipvia text, cust_blanketpos boolean NOT NULL, cust_shipchrg_id integer NOT NULL, cust_creditstatus character(1) NOT NULL, cust_comments text, cust_ffbillto boolean NOT NULL, cust_usespos boolean NOT NULL, cust_number text NOT NULL, cust_dateadded date DEFAULT ('now'::text)::date, cust_exported boolean DEFAULT false, cust_emaildelivery boolean DEFAULT false, cust_ediemail text, cust_edisubject text, cust_edifilename text, cust_ediemailbody text, cust_autoupdatestatus boolean NOT NULL, cust_autoholdorders boolean NOT NULL, cust_edicc text, cust_ediprofile_id integer, cust_preferred_warehous_id integer DEFAULT (-1) NOT NULL, cust_curr_id integer DEFAULT basecurrid(), cust_creditlmt_curr_id integer DEFAULT basecurrid(), cust_cntct_id integer, cust_corrcntct_id integer, cust_soemaildelivery boolean DEFAULT false, cust_soediemail text, cust_soedisubject text, cust_soedifilename text, cust_soediemailbody text, cust_soedicc text, cust_soediprofile_id integer, cust_gracedays integer, cust_ediemailhtml boolean DEFAULT false NOT NULL, cust_soediemailhtml boolean DEFAULT false NOT NULL, cust_taxzone_id integer, CONSTRAINT custinfo_balmethod_check CHECK (((cust_balmethod = 'B'::bpchar) OR (cust_balmethod = 'O'::bpchar))), CONSTRAINT custinfo_creditstatus_check CHECK ((((cust_creditstatus = 'G'::bpchar) OR (cust_creditstatus = 'W'::bpchar)) OR (cust_creditstatus = 'H'::bpchar))), CONSTRAINT custinfo_cust_number_check CHECK ((cust_number <> ''::text)) ); ALTER TABLE public.custinfo OWNER TO admin; -- -- Name: TABLE custinfo; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE custinfo IS 'Customer information'; -- -- Name: COLUMN custinfo.cust_ediemail; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custinfo.cust_ediemail IS 'Deprecated column - DO NOT USE'; -- -- Name: COLUMN custinfo.cust_edisubject; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custinfo.cust_edisubject IS 'Deprecated column - DO NOT USE'; -- -- Name: COLUMN custinfo.cust_edifilename; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custinfo.cust_edifilename IS 'Deprecated column - DO NOT USE'; -- -- Name: COLUMN custinfo.cust_ediemailbody; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custinfo.cust_ediemailbody IS 'Deprecated column - DO NOT USE'; -- -- Name: COLUMN custinfo.cust_edicc; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custinfo.cust_edicc IS 'Deprecated column - DO NOT USE'; -- -- Name: COLUMN custinfo.cust_ediprofile_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custinfo.cust_ediprofile_id IS 'Deprecated column - DO NOT USE'; -- -- Name: COLUMN custinfo.cust_soediemail; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custinfo.cust_soediemail IS 'Deprecated column - DO NOT USE'; -- -- Name: COLUMN custinfo.cust_soedisubject; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custinfo.cust_soedisubject IS 'Deprecated column - DO NOT USE'; -- -- Name: COLUMN custinfo.cust_soedifilename; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custinfo.cust_soedifilename IS 'Deprecated column - DO NOT USE'; -- -- Name: COLUMN custinfo.cust_soediemailbody; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custinfo.cust_soediemailbody IS 'Deprecated column - DO NOT USE'; -- -- Name: COLUMN custinfo.cust_soedicc; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custinfo.cust_soedicc IS 'Deprecated column - DO NOT USE'; -- -- Name: COLUMN custinfo.cust_soediprofile_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custinfo.cust_soediprofile_id IS 'Deprecated column - DO NOT USE'; -- -- Name: COLUMN custinfo.cust_ediemailhtml; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custinfo.cust_ediemailhtml IS 'Deprecated column - DO NOT USE'; -- -- Name: COLUMN custinfo.cust_soediemailhtml; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custinfo.cust_soediemailhtml IS 'Deprecated column - DO NOT USE'; -- -- Name: rsncode; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE rsncode ( rsncode_id integer NOT NULL, rsncode_code text NOT NULL, rsncode_descrip text, rsncode_doctype text, CONSTRAINT rsncode_rsncode_code_check CHECK ((rsncode_code <> ''::text)) ); ALTER TABLE public.rsncode OWNER TO admin; -- -- Name: TABLE rsncode; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE rsncode IS 'Debit/Credit Memo Reason Code information'; -- -- Name: salescat; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE salescat ( salescat_id integer NOT NULL, salescat_active boolean, salescat_name text NOT NULL, salescat_descrip text, salescat_sales_accnt_id integer, salescat_prepaid_accnt_id integer, salescat_ar_accnt_id integer, CONSTRAINT salescat_salescat_name_check CHECK ((salescat_name <> ''::text)) ); ALTER TABLE public.salescat OWNER TO admin; -- -- Name: TABLE salescat; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE salescat IS 'Sales Category information'; -- -- Name: salesrep; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE salesrep ( salesrep_id integer DEFAULT nextval(('salesrep_salesrep_id_seq'::text)::regclass) NOT NULL, salesrep_active boolean, salesrep_number text NOT NULL, salesrep_name text, salesrep_commission numeric(8,4), salesrep_method character(1), salesrep_emp_id integer, CONSTRAINT salesrep_salesrep_number_check CHECK ((salesrep_number <> ''::text)) ); ALTER TABLE public.salesrep OWNER TO admin; -- -- Name: TABLE salesrep; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE salesrep IS 'Sales Representative information'; -- -- Name: COLUMN salesrep.salesrep_emp_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN salesrep.salesrep_emp_id IS 'DEPRECATED - the relationship between Sales Rep and Employee is now maintained through the crmacct table.'; SET search_path = api, pg_catalog; -- -- Name: armemo; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW armemo AS SELECT custinfo.cust_number AS customer_number, aropen.aropen_docdate AS document_date, aropen.aropen_duedate AS due_date, CASE WHEN (aropen.aropen_doctype = 'C'::bpchar) THEN 'Credit Memo'::text ELSE 'Debit Memo'::text END AS document_type, aropen.aropen_docnumber AS document_number, aropen.aropen_applyto AS order_number, aropen.aropen_journalnumber AS journal_number, rsncode.rsncode_code AS reason_code, terms.terms_code AS terms, salesrep.salesrep_number AS sales_rep, curr.curr_abbr AS currency, aropen.aropen_amount AS amount, aropen.aropen_paid AS paid, (aropen.aropen_amount - aropen.aropen_paid) AS balance, aropen.aropen_commission_due AS commission_due, aropen.aropen_commission_paid AS commission_paid, aropen.aropen_notes AS notes, salescat.salescat_name AS alternate_prepaid_sales_category, CASE WHEN (aropen.aropen_accnt_id = (-1)) THEN NULL::text ELSE public.formatglaccount(aropen.aropen_accnt_id) END AS alternate_prepaid_account FROM ((((((public.aropen LEFT JOIN public.custinfo ON ((custinfo.cust_id = aropen.aropen_cust_id))) LEFT JOIN public.curr_symbol curr ON ((curr.curr_id = aropen.aropen_curr_id))) LEFT JOIN public.salesrep ON ((salesrep.salesrep_id = aropen.aropen_salesrep_id))) LEFT JOIN public.terms ON ((terms.terms_id = aropen.aropen_terms_id))) LEFT JOIN public.salescat ON ((salescat.salescat_id = aropen.aropen_salescat_id))) LEFT JOIN public.rsncode ON ((rsncode.rsncode_id = aropen.aropen_rsncode_id))) WHERE (aropen.aropen_doctype = ANY (ARRAY['C'::bpchar, 'D'::bpchar])); ALTER TABLE api.armemo OWNER TO admin; -- -- Name: VIEW armemo; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW armemo IS 'A/R Credit and Debit Memo'; SET search_path = public, pg_catalog; -- -- Name: insertarmemo(api.armemo); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertarmemo(api.armemo) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNew ALIAS FOR $1; _result INTEGER; BEGIN IF (pNew.document_type = 'Credit Memo') THEN SELECT createARCreditMemo( NULL, getCustId(pNew.customer_number), pNew.document_number, pNew.order_number, pNew.document_date, pNew.amount, pNew.notes, getRsnId(pNew.reason_code), getSalescatId(pNew.alternate_prepaid_sales_category), getGLAccntId(pNew.alternate_prepaid_account), pNew.due_date, getTermsId(pNew.terms), getSalesrepId(pNew.sales_rep), pNew.commission_due, pNew.journal_number, COALESCE(getCurrId(pNew.currency), baseCurrId()) ) INTO _result; IF (_result <= 0) THEN RAISE EXCEPTION 'Function createARCreditMemo failed with result = %', _result; END IF; ELSE IF (pNew.document_type = 'Debit Memo') THEN SELECT createARDebitMemo( null, getCustId(pNew.customer_number), pNew.journal_number, pNew.document_number, pNew.order_number, pNew.document_date, pNew.amount, pNew.notes, getRsnId(pNew.reason_code), getSalescatId(pNew.alternate_prepaid_sales_category), getGLAccntId(pNew.alternate_prepaid_account), pNew.due_date, getTermsId(pNew.terms), getSalesrepId(pNew.sales_rep), pNew.commission_due, COALESCE(getCurrId(pNew.currency), baseCurrId()) ) INTO _result; IF (_result <= 0) THEN RAISE EXCEPTION 'Function createARDebitMemo failed with result = %', _result; END IF; ELSE RAISE EXCEPTION 'Function insertARMemo failed, invalid Document Type'; END IF; END IF; RETURN TRUE; END; $_$; ALTER FUNCTION public.insertarmemo(api.armemo) OWNER TO admin; -- -- Name: insertccard(text, boolean, text, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertccard(text, boolean, text, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustomer ALIAS FOR $1; pActive ALIAS FOR $2; pType ALIAS FOR $3; pNumber ALIAS FOR $4; pName ALIAS FOR $5; pAddr1 ALIAS FOR $6; pAddr2 ALIAS FOR $7; pCity ALIAS FOR $8; pState ALIAS FOR $9; pPostal ALIAS FOR $10; pCountry ALIAS FOR $11; pMonth ALIAS FOR $12; pYear ALIAS FOR $13; pKey ALIAS FOR $14; _type CHAR; _number TEXT; _month INTEGER; _year INTEGER; _result INTEGER; BEGIN --Initialize _number = CAST(encode(pNumber, 'escape') AS text); _month = CAST(encode(pMonth, 'escape') AS integer); _year = CAST(encode(pYear, 'escape') AS integer); -- Check Card holder info IF (pName IS NULL) THEN RAISE EXCEPTION 'The name of the card holder must be entered'; END IF; IF (pAddr1 IS NULL OR pAddr1 = '') THEN RAISE EXCEPTION 'The first address line must be entered'; END IF; IF (pCity IS NULL OR pCity = '') THEN RAISE EXCEPTION 'The city must be entered'; END IF; IF (pState IS NULL OR pState = '') THEN RAISE EXCEPTION 'The state must be entered'; END IF; IF (pPostal IS NULL OR pPostal = '') THEN RAISE EXCEPTION 'The zip code must be entered'; END IF; IF (pCountry IS NULL OR pCountry = '') THEN RAISE EXCEPTION 'The country must be entered'; END IF; IF (pMonth IS NULL OR pMonth = '') THEN RAISE EXCEPTION 'The Expiration Month must be entered'; END IF; IF (_month < 1 OR _month > 12) THEN RAISE EXCEPTION 'Valid Expiration Months are 01 through 12'; END IF; IF (LENGTH(_year::text) <> 4) THEN RAISE EXCEPTION 'Valid Expiration Years are CCYY in format'; END IF; IF (_year < 1970 OR _year > 2100) THEN RAISE EXCEPTION 'Valid Expiration Years are 1970 through 2100'; END IF; -- Check Number Length IF ((NOT _number ~ '[0-9]{13,16}') OR (LENGTH(_number) = 14) OR (LENGTH(_number) > 16)) THEN RAISE EXCEPTION 'The credit card number must be all numeric (no spaces or hyphens) and must be 13, 15 or 16 characters in length'; END IF; -- Convert Type IF (pType = 'Visa') THEN _type = 'V'; ELSE IF (pType = 'Master Card') THEN _type = 'M'; ELSE IF (pType = 'American Express') THEN _type = 'A'; ELSE IF (pType = 'Discover') THEN _type = 'D'; ELSE RAISE EXCEPTION 'You must select Master Card, Visa, American Express or Discover as the credit card type.'; END IF; END IF; END IF; END IF; -- Check Card Specific Data SELECT editccnumber(_number, _type) INTO _result; IF (_result = -1) THEN RAISE EXCEPTION 'You must select Master Card, Visa, American Express or Discover as the credit card type.'; END IF; IF (_result = -2) THEN RAISE EXCEPTION 'The length of a Master Card credit card number has to be 16 digits.'; END IF; IF (_result = -3) THEN RAISE EXCEPTION 'The length of a Visa credit card number has to be either 13 or 16 digits.'; END IF; IF (_result = -4) THEN RAISE EXCEPTION 'The length of an American Express credit card number has to be 15 digits.'; END IF; IF (_result = -5) THEN RAISE EXCEPTION 'The length of a Discover credit card number has to be 16 digits.'; END IF; IF (_result = -6) THEN RAISE EXCEPTION 'The first two digits for a valid Master Card number must be between 51 and 55'; END IF; IF (_result = -7) THEN RAISE EXCEPTION 'The first digit for a valid Visa number must be 4'; END IF; IF (_result = -8) THEN RAISE EXCEPTION 'The first two digits for a valid American Express number must be 34 or 37.'; END IF; IF (_result = -9) THEN RAISE EXCEPTION 'The first four digits for a valid Discover Express number must be 6011.'; END IF; IF ((_result = -10) AND NOT fetchmetricbool('CCTest')) THEN RAISE EXCEPTION 'The credit card number that you have provided is not valid.'; END IF; IF (_result < -10) THEN RAISE EXCEPTION 'Invalid Credit Card Information'; END IF; -- Insert Record INSERT INTO ccard ( ccard_seq, ccard_cust_id, ccard_active, ccard_name, ccard_address1, ccard_address2, ccard_city, ccard_state, ccard_zip, ccard_country, ccard_number, ccard_month_expired, ccard_year_expired, ccard_type) VALUES ((SELECT COALESCE(MAX(ccard_seq), 0) + 10 FROM ccard WHERE (ccard_cust_id =getCustId(pCustomer))), getCustId(pCustomer), COALESCE(pActive), encrypt(setbytea(pName), setbytea(pKey), 'bf'), encrypt(setbytea(pAddr1), setbytea(pKey), 'bf'), encrypt(setbytea(pAddr2), setbytea(pKey), 'bf'), encrypt(setbytea(pCity), setbytea(pKey), 'bf'), encrypt(setbytea(pState), setbytea(pKey), 'bf'), encrypt(setbytea(pPostal), setbytea(pKey), 'bf'), encrypt(setbytea(pCountry), setbytea(pKey), 'bf'), encrypt(setbytea(pNumber), setbytea(pKey), 'bf'), encrypt(setbytea(pMonth), setbytea(pKey), 'bf'), encrypt(setbytea(pYear), setbytea(pKey), 'bf'), _type ); RETURN true; END; $_$; ALTER FUNCTION public.insertccard(text, boolean, text, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, text) OWNER TO admin; -- -- Name: FUNCTION insertccard(text, boolean, text, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, text); Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON FUNCTION insertccard(text, boolean, text, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, text) IS 'This function is generally used to support the _custcreditcard API view'; -- -- Name: cmhead; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cmhead ( cmhead_id integer DEFAULT nextval(('cmhead_cmhead_id_seq'::text)::regclass) NOT NULL, cmhead_number text NOT NULL, cmhead_posted boolean, cmhead_invcnumber text, cmhead_custponumber text, cmhead_cust_id integer, cmhead_docdate date, cmhead_shipto_id integer, cmhead_shipto_name text, cmhead_shipto_address1 text, cmhead_shipto_address2 text, cmhead_shipto_address3 text, cmhead_shipto_city text, cmhead_shipto_state text, cmhead_shipto_zipcode text, cmhead_salesrep_id integer, cmhead_freight numeric(16,4), cmhead_misc numeric(16,4), cmhead_comments text, cmhead_printed boolean, cmhead_billtoname text, cmhead_billtoaddress1 text, cmhead_billtoaddress2 text, cmhead_billtoaddress3 text, cmhead_billtocity text, cmhead_billtostate text, cmhead_billtozip text, cmhead_hold boolean, cmhead_commission numeric(8,4), cmhead_misc_accnt_id integer, cmhead_misc_descrip text, cmhead_rsncode_id integer, cmhead_curr_id integer DEFAULT basecurrid(), cmhead_freighttaxtype_id integer, cmhead_gldistdate date, cmhead_billtocountry text, cmhead_shipto_country text, cmhead_rahead_id integer, cmhead_taxzone_id integer, cmhead_prj_id integer, cmhead_void boolean DEFAULT false, cmhead_saletype_id integer, cmhead_shipzone_id integer, CONSTRAINT cmhead_cmhead_number_check CHECK ((cmhead_number <> ''::text)) ); ALTER TABLE public.cmhead OWNER TO admin; -- -- Name: TABLE cmhead; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE cmhead IS 'S/O Credit Memo header information'; -- -- Name: COLUMN cmhead.cmhead_freighttaxtype_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN cmhead.cmhead_freighttaxtype_id IS 'Deprecated column - DO NOT USE'; -- -- Name: COLUMN cmhead.cmhead_saletype_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN cmhead.cmhead_saletype_id IS 'Associated sale type for credit memo.'; -- -- Name: COLUMN cmhead.cmhead_shipzone_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN cmhead.cmhead_shipzone_id IS 'Associated shipping zone for credit memo.'; -- -- Name: shiptoinfo; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE shiptoinfo ( shipto_id integer DEFAULT nextval(('shipto_shipto_id_seq'::text)::regclass) NOT NULL, shipto_cust_id integer NOT NULL, shipto_name text, shipto_salesrep_id integer, shipto_comments text, shipto_shipcomments text, shipto_shipzone_id integer, shipto_shipvia text, shipto_commission numeric(10,4) NOT NULL, shipto_shipform_id integer, shipto_shipchrg_id integer, shipto_active boolean NOT NULL, shipto_default boolean, shipto_num text, shipto_ediprofile_id integer, shipto_cntct_id integer, shipto_addr_id integer, shipto_taxzone_id integer ); ALTER TABLE public.shiptoinfo OWNER TO admin; -- -- Name: TABLE shiptoinfo; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE shiptoinfo IS 'Ship-To information'; -- -- Name: COLUMN shiptoinfo.shipto_ediprofile_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN shiptoinfo.shipto_ediprofile_id IS 'Deprecated column - DO NOT USE'; -- -- Name: taxzone; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE taxzone ( taxzone_id integer NOT NULL, taxzone_code text NOT NULL, taxzone_descrip text, CONSTRAINT taxzone_taxzone_code_check CHECK ((taxzone_code <> ''::text)) ); ALTER TABLE public.taxzone OWNER TO admin; -- -- Name: TABLE taxzone; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE taxzone IS 'Tax zone information'; -- -- Name: COLUMN taxzone.taxzone_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxzone.taxzone_id IS 'Primary key'; -- -- Name: COLUMN taxzone.taxzone_code; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxzone.taxzone_code IS 'Code'; -- -- Name: COLUMN taxzone.taxzone_descrip; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxzone.taxzone_descrip IS 'Description'; SET search_path = api, pg_catalog; -- -- Name: creditmemo; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW creditmemo AS SELECT cmhead.cmhead_number AS memo_number, CASE WHEN (cmhead.cmhead_invcnumber = '-1'::text) THEN ''::text ELSE cmhead.cmhead_invcnumber END AS apply_to, cmhead.cmhead_docdate AS memo_date, CASE WHEN cmhead.cmhead_posted THEN 'Posted'::text ELSE 'Unposted'::text END AS status, salesrep.salesrep_number AS sales_rep, cmhead.cmhead_commission AS commission, COALESCE(taxzone.taxzone_code, 'None'::text) AS tax_zone, COALESCE(rsncode.rsncode_code, 'None'::text) AS reason_code, cmhead.cmhead_hold AS on_hold, custinfo.cust_number AS customer_number, cmhead.cmhead_billtoname AS billto_name, cmhead.cmhead_billtoaddress1 AS billto_address1, cmhead.cmhead_billtoaddress2 AS billto_address2, cmhead.cmhead_billtoaddress3 AS billto_address3, cmhead.cmhead_billtocity AS billto_city, cmhead.cmhead_billtostate AS billto_state, cmhead.cmhead_billtozip AS billto_postal_code, cmhead.cmhead_billtocountry AS billto_country, shiptoinfo.shipto_num AS shipto_number, cmhead.cmhead_shipto_name AS shipto_name, cmhead.cmhead_shipto_address1 AS shipto_address1, cmhead.cmhead_shipto_address2 AS shipto_address2, cmhead.cmhead_shipto_address3 AS shipto_address3, cmhead.cmhead_shipto_city AS shipto_city, cmhead.cmhead_shipto_state AS shipto_state, cmhead.cmhead_shipto_zipcode AS shipto_postal_code, cmhead.cmhead_shipto_country AS shipto_country, cmhead.cmhead_custponumber AS customer_po_number, cmhead.cmhead_comments AS notes, curr.curr_abbr AS currency, cmhead.cmhead_misc_descrip AS misc_charge_description, cmhead.cmhead_misc AS misc_charge_amount, CASE WHEN (cmhead.cmhead_misc_accnt_id = (-1)) THEN ''::text ELSE public.formatglaccount(cmhead.cmhead_misc_accnt_id) END AS misc_charge_credit_account, cmhead.cmhead_freight AS freight FROM ((((((public.cmhead LEFT JOIN public.custinfo ON ((custinfo.cust_id = cmhead.cmhead_cust_id))) LEFT JOIN public.shiptoinfo ON ((shiptoinfo.shipto_id = cmhead.cmhead_shipto_id))) LEFT JOIN public.curr_symbol curr ON ((curr.curr_id = cmhead.cmhead_curr_id))) LEFT JOIN public.salesrep ON ((salesrep.salesrep_id = cmhead.cmhead_salesrep_id))) LEFT JOIN public.taxzone ON ((taxzone.taxzone_id = cmhead.cmhead_taxzone_id))) LEFT JOIN public.rsncode ON ((rsncode.rsncode_id = cmhead.cmhead_rsncode_id))); ALTER TABLE api.creditmemo OWNER TO admin; -- -- Name: VIEW creditmemo; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW creditmemo IS 'Credit Memo Header'; SET search_path = public, pg_catalog; -- -- Name: insertcreditmemo(api.creditmemo); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertcreditmemo(api.creditmemo) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNew ALIAS FOR $1; BEGIN -- NOTE: (SELECT getCustId(...)) seems redundant, but it actually produces -- a HUGE performance increase because it makes the Postgres query planner -- use an index scan rather than an sequential table scan on cust_id INSERT INTO cmhead ( cmhead_number, cmhead_posted, cmhead_invcnumber, cmhead_custponumber, cmhead_cust_id, cmhead_docdate, cmhead_shipto_id, cmhead_shipto_name, cmhead_shipto_address1, cmhead_shipto_address2, cmhead_shipto_address3, cmhead_shipto_city, cmhead_shipto_state, cmhead_shipto_zipcode, cmhead_shipto_country, cmhead_salesrep_id, cmhead_freight, cmhead_misc, cmhead_comments, cmhead_printed, cmhead_billtoname, cmhead_billtoaddress1, cmhead_billtoaddress2, cmhead_billtoaddress3, cmhead_billtocity, cmhead_billtostate, cmhead_billtozip, cmhead_billtocountry, cmhead_hold, cmhead_commission, cmhead_misc_accnt_id, cmhead_misc_descrip, cmhead_rsncode_id, cmhead_curr_id, cmhead_taxzone_id, cmhead_gldistdate, cmhead_rahead_id ) SELECT (CASE -- use a case here so we don't unnecessarily fetch a new CM number WHEN pNew.memo_number IS NULL THEN fetchCMNumber() ELSE pNew.memo_number END), FALSE, -- posted pNew.apply_to, pNew.customer_po_number, cust_id, COALESCE(pNew.memo_date, CURRENT_DATE), COALESCE(shipto_id,-1), pNew.shipto_name, pNew.shipto_address1, pNew.shipto_address2, pNew.shipto_address3, pNew.shipto_city, pNew.shipto_state, pNew.shipto_postal_code, pNew.shipto_country, COALESCE(getSalesRepId(pNew.sales_rep),shipto_salesrep_id,cust_salesrep_id), COALESCE(pNew.freight, 0), COALESCE(pNew.misc_charge_amount, 0), pNew.notes, FALSE, -- printed COALESCE(pNew.billto_name, invchead_billto_name, cust_name), COALESCE(pNew.billto_address1, invchead_billto_address1, addr_line1), COALESCE(pNew.billto_address2, invchead_billto_address2, addr_line2), COALESCE(pNew.billto_address3, invchead_billto_address3, addr_line3), COALESCE(pNew.billto_city, invchead_billto_city, addr_city), COALESCE(pNew.billto_state, invchead_billto_state, addr_state), COALESCE(pNew.billto_postal_code, invchead_billto_zipcode, addr_postalcode), COALESCE(pNew.billto_country, invchead_billto_country, addr_country), COALESCE(pNew.on_hold, FALSE), COALESCE(pNew.commission, 0), COALESCE(getGlAccntId(pNew.misc_charge_credit_account),-1), pNew.misc_charge_description, (SELECT rsncode_id FROM rsncode WHERE rsncode_code = pNew.reason_code), COALESCE(getCurrId(pNew.currency),cust_curr_id,basecurrid()), CASE WHEN pNew.tax_zone = 'None' THEN NULL ELSE COALESCE(getTaxZoneID(pNew.tax_zone),cust_taxzone_id) END, NULL, NULL FROM custinfo LEFT OUTER JOIN shiptoinfo ON (shipto_id=(SELECT CASE WHEN getShiptoId(pNew.customer_number,pNew.shipto_number) IS NOT NULL THEN getShiptoId(pNew.customer_number,pNew.shipto_number) ELSE (SELECT shipto_id FROM shiptoinfo WHERE shipto_cust_id=cust_id AND shipto_default) END)) LEFT OUTER JOIN invchead ON (invchead_id=getInvcheadId(pNEW.apply_to)) LEFT OUTER JOIN cntct ON (cntct_id=cust_cntct_id) LEFT OUTER JOIN addr ON (addr_id=cntct_addr_id) WHERE cust_id = (CASE WHEN pNew.customer_number IS NOT NULL THEN (SELECT getCustId(pNew.customer_number)) ELSE (SELECT invchead_cust_id FROM invchead WHERE invchead_invcnumber = pNew.apply_to) END); RETURN TRUE; END; $_$; ALTER FUNCTION public.insertcreditmemo(api.creditmemo) OWNER TO admin; -- -- Name: cmitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cmitem ( cmitem_id integer DEFAULT nextval(('cmitem_cmitem_id_seq'::text)::regclass) NOT NULL, cmitem_cmhead_id integer NOT NULL, cmitem_linenumber integer NOT NULL, cmitem_itemsite_id integer NOT NULL, cmitem_qtycredit numeric(18,6) NOT NULL, cmitem_qtyreturned numeric(18,6) NOT NULL, cmitem_unitprice numeric(16,4) NOT NULL, cmitem_comments text, cmitem_rsncode_id integer, cmitem_taxtype_id integer, cmitem_qty_uom_id integer NOT NULL, cmitem_qty_invuomratio numeric(20,10) NOT NULL, cmitem_price_uom_id integer NOT NULL, cmitem_price_invuomratio numeric(20,10) NOT NULL, cmitem_raitem_id integer, cmitem_updateinv boolean DEFAULT true NOT NULL ); ALTER TABLE public.cmitem OWNER TO admin; -- -- Name: TABLE cmitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE cmitem IS 'S/O Credit Memo Line Item information'; SET search_path = api, pg_catalog; -- -- Name: creditmemoline; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW creditmemoline AS SELECT cmhead.cmhead_number AS memo_number, cmitem.cmitem_linenumber AS line_number, item.item_number, whsinfo.warehous_code AS recv_site, rsncode.rsncode_code AS reason_code, cmitem.cmitem_qtyreturned AS qty_returned, cmitem.cmitem_qtycredit AS qty_to_credit, COALESCE(qty_uom.uom_name, 'None'::text) AS qty_uom, cmitem.cmitem_unitprice AS net_unit_price, COALESCE(price_uom.uom_name, 'None'::text) AS price_uom, COALESCE(taxtype.taxtype_name, 'None'::text) AS tax_type, cmitem.cmitem_comments AS notes FROM ((((((((public.cmitem LEFT JOIN public.cmhead ON ((cmitem.cmitem_cmhead_id = cmhead.cmhead_id))) LEFT JOIN public.itemsite ON ((itemsite.itemsite_id = cmitem.cmitem_itemsite_id))) LEFT JOIN public.item ON ((item.item_id = itemsite.itemsite_item_id))) LEFT JOIN public.whsinfo ON ((whsinfo.warehous_id = itemsite.itemsite_warehous_id))) LEFT JOIN public.rsncode ON ((rsncode.rsncode_id = cmitem.cmitem_rsncode_id))) LEFT JOIN public.taxtype ON ((taxtype.taxtype_id = cmitem.cmitem_taxtype_id))) LEFT JOIN public.uom qty_uom ON ((qty_uom.uom_id = cmitem.cmitem_qty_uom_id))) LEFT JOIN public.uom price_uom ON ((price_uom.uom_id = cmitem.cmitem_price_uom_id))); ALTER TABLE api.creditmemoline OWNER TO admin; -- -- Name: VIEW creditmemoline; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW creditmemoline IS 'Credit Memo Line'; SET search_path = public, pg_catalog; -- -- Name: insertcreditmemoline(api.creditmemoline); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertcreditmemoline(api.creditmemoline) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNew ALIAS FOR $1; _check INTEGER; _r RECORD; BEGIN SELECT cmhead_id INTO _check FROM cmhead WHERE (cmhead_id=getCmheadId(pNew.memo_number, FALSE)); IF (NOT FOUND) THEN RAISE EXCEPTION 'Credit Memo # % not found', pNew.memo_number; END IF; INSERT INTO cmitem ( cmitem_cmhead_id, cmitem_linenumber, cmitem_itemsite_id, cmitem_qtycredit, cmitem_qtyreturned, cmitem_unitprice, cmitem_comments, cmitem_rsncode_id, cmitem_taxtype_id, cmitem_qty_uom_id, cmitem_qty_invuomratio, cmitem_price_uom_id, cmitem_price_invuomratio ) SELECT cmhead_id, COALESCE(pNew.line_number, (SELECT (COALESCE(MAX(cmitem_linenumber), 0) + 1) FROM cmitem WHERE (cmitem_cmhead_id=cmhead_id))), COALESCE(itemsite_id, -1), COALESCE(pNew.qty_to_credit, 0), COALESCE(pNew.qty_returned, 0), COALESCE(pNew.net_unit_price, 0), pNew.notes, getRsnId(pNew.reason_code), taxtype_id, COALESCE(getUomId(pNew.qty_uom), item_inv_uom_id), CASE WHEN item_id IS NOT NULL THEN itemuomtouomratio(item_id, COALESCE(getUomId(pNew.qty_uom),item_inv_uom_id),item_inv_uom_id) ELSE 1 END, COALESCE(getUomId(pNew.price_uom),item_price_uom_id), CASE WHEN item_id IS NOT NULL THEN itemuomtouomratio(item_id, COALESCE(getUomId(pNew.price_uom),item_price_uom_id),item_price_uom_id) ELSE 1 END FROM cmhead LEFT OUTER JOIN item ON (item_id=getItemId(pNew.item_number)) LEFT OUTER JOIN itemsite ON (itemsite_item_id=item_id AND itemsite_warehous_id=getWarehousId(pNew.recv_site, 'ALL')) LEFT OUTER JOIN taxtype ON (taxtype_id=CASE WHEN pNew.tax_type IS NULL THEN getItemTaxType(item_id,cmhead_taxzone_id) WHEN pNew.tax_type = 'None' THEN NULL ELSE getTaxTypeId(pNew.tax_type) END) WHERE (cmhead_id=getCmheadId(pNew.memo_number, FALSE)); RETURN TRUE; END; $_$; ALTER FUNCTION public.insertcreditmemoline(api.creditmemoline) OWNER TO admin; -- -- Name: insertflgroup(integer, integer, integer, integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertflgroup(integer, integer, integer, integer, boolean) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlheadid ALIAS FOR $1; pPeriodid ALIAS FOR $2; pFlgrpid ALIAS FOR $3; pLevel ALIAS FOR $4; pSummarize ALIAS FOR $5; BEGIN RETURN insertFlGroup(pFlheadid, pPeriodid, pFlgrpid, pLevel, pSummarize, NULL); END; $_$; ALTER FUNCTION public.insertflgroup(integer, integer, integer, integer, boolean) OWNER TO admin; -- -- Name: insertflgroup(integer, integer, integer, integer, boolean, character); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertflgroup(integer, integer, integer, integer, boolean, character) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlheadid ALIAS FOR $1; pPeriodid ALIAS FOR $2; pFlgrpid ALIAS FOR $3; pLevel ALIAS FOR $4; pSummarize ALIAS FOR $5; pInterval ALIAS FOR $6; BEGIN RETURN insertFlGroup(pFlheadid, pPeriodid, pFlgrpid, pLevel, pSummarize, pInterval, NULL); END; $_$; ALTER FUNCTION public.insertflgroup(integer, integer, integer, integer, boolean, character) OWNER TO admin; -- -- Name: insertflgroup(integer, integer, integer, integer, boolean, character, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertflgroup(integer, integer, integer, integer, boolean, character, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlheadid ALIAS FOR $1; pPeriodid ALIAS FOR $2; pFlgrpid ALIAS FOR $3; pLevel ALIAS FOR $4; pSummarize ALIAS FOR $5; pInterval ALIAS FOR $6; pPrjid ALIAS FOR $7; _subtotal BOOLEAN; _r RECORD; _g RECORD; _all BOOLEAN; BEGIN _all = COALESCE(pPrjid,-1) = -1; -- Check to see if this group wants a subtotal _subtotal := FALSE; IF (pFlgrpid != -1) THEN SELECT COALESCE(flgrp_subtotal, FALSE) INTO _subtotal FROM flgrp WHERE ((flgrp_flhead_id=pFlheadid) AND (flgrp_id=pFlgrpid)); END IF; FOR _r IN SELECT 'G' AS type, flgrp_id AS type_id, flgrp_order AS orderby, flgrp_summarize AS summarize, flgrp_subtract AS subtract, CASE WHEN(flgrp_summarize AND (NOT flgrp_showstart)) THEN NULL ELSE 0.00 END AS beginning, CASE WHEN(flgrp_summarize AND (NOT flgrp_showend)) THEN NULL ELSE 0.00 END AS ending, CASE WHEN(flgrp_summarize AND (NOT flgrp_showdelta)) THEN NULL ELSE 0.00 END AS debits, CASE WHEN(flgrp_summarize AND (NOT flgrp_showdelta)) THEN NULL ELSE 0.00 END AS credits, CASE WHEN(flgrp_summarize AND (NOT flgrp_showbudget)) THEN NULL ELSE 0.00 END AS budget, CASE WHEN(flgrp_summarize AND (NOT flgrp_showdiff)) THEN NULL ELSE 0.00 END AS diff, CASE WHEN(flgrp_summarize AND (NOT flgrp_showcustom)) THEN NULL ELSE 0.00 END AS custom, CASE WHEN(flgrp_showstartprcnt) THEN 0.00 ELSE NULL END AS beginningprcnt, CASE WHEN(flgrp_showendprcnt) THEN 0.00 ELSE NULL END AS endingprcnt, CASE WHEN(flgrp_showdeltaprcnt) THEN 0.00 ELSE NULL END AS debitsprcnt, CASE WHEN(flgrp_showdeltaprcnt) THEN 0.00 ELSE NULL END AS creditsprcnt, CASE WHEN(flgrp_showbudgetprcnt) THEN 0.00 ELSE NULL END AS budgetprcnt, CASE WHEN(flgrp_showdiffprcnt) THEN 0.00 ELSE NULL END AS diffprcnt, CASE WHEN(flgrp_showcustomprcnt) THEN 0.00 ELSE NULL END AS customprcnt, -1 AS accnt_id, '' AS accnt_number FROM flgrp WHERE ((flgrp_flgrp_id=pFlgrpid) AND (flgrp_flhead_id=pFlheadid)) UNION ALL SELECT 'I' AS type, flitem_id AS type_id, flitem_order AS orderby, FALSE AS summarize, flitem_subtract AS subtract, CASE WHEN (flitem_showstart AND (first_trialbal_id IS NULL)) THEN 0.00 WHEN (flitem_showstart) THEN normalizeTrialBal(first_trialbal_id, 'B') ELSE NULL END AS beginning, CASE WHEN (flitem_showend AND (last_trialbal_id IS NULL)) THEN 0.00 WHEN (flitem_showend) THEN normalizeTrialBal(last_trialbal_id, 'E') ELSE NULL END AS ending, CASE WHEN (flitem_showdelta) THEN sum_trialbal_debits ELSE NULL END AS debits, CASE WHEN (flitem_showdelta) THEN sum_trialbal_credits ELSE NULL END AS credits, CASE WHEN ((flitem_showbudget) AND (accnt_type IN ('R','E')) AND flhead_type IN ('I','C','A')) THEN COALESCE(sum_budget_amount,0) WHEN ((flitem_showbudget) AND (accnt_type IN ('R','E')) AND flhead_type = 'B' ) THEN (SELECT COALESCE(SUM(b.budget_amount),0) FROM budget b, (SELECT ytd.period_id AS ytd_period_id FROM period cp, period ytd WHERE ((cp.period_id = last_flitem_period_id) AND (ytd.period_start <= cp.period_start) AND (ytd.period_yearperiod_id = cp.period_yearperiod_id))) AS periods WHERE ((b.budget_accnt_id=accnt_id) AND (b.budget_period_id=ytd_period_id))) WHEN ((flitem_showbudget) AND (accnt_type IN ('A','L','Q')) AND flhead_type = 'C') THEN calccashbudget(accnt_id,last_flitem_period_id,pInterval) ELSE COALESCE(last_budget_amount,0) END AS budget, CASE WHEN (flitem_showdiff AND (first_trialbal_id IS NULL)) THEN 0.00 WHEN (flitem_showdiff) THEN COALESCE(normalizeTrialBal(last_trialbal_id, 'E') - normalizeTrialBal(first_trialbal_id, 'B'), 0.00) ELSE NULL END AS diff, CASE WHEN (NOT flitem_showcustom) THEN NULL WHEN (flitem_custom_source='S' AND (first_trialbal_id IS NOT NULL)) THEN normalizeTrialBal(first_trialbal_id, 'B') WHEN (flitem_custom_source='E' AND (first_trialbal_id IS NOT NULL)) THEN normalizeTrialBal(last_trialbal_id, 'E') WHEN (flitem_custom_source='D') THEN sum_trialbal_debits WHEN (flitem_custom_source='C') THEN sum_trialbal_credits WHEN (flitem_custom_source='B') THEN ( CASE WHEN (accnt_type IN ('R','E')) THEN sum_budget_amount ELSE last_budget_amount END) WHEN (flitem_custom_source='F' AND (first_trialbal_id IS NOT NULL)) THEN COALESCE(normalizeTrialBal(last_trialbal_id, 'E') - normalizeTrialBal(first_trialbal_id, 'B'), 0.00) ELSE 0.00 END AS custom, CASE WHEN(flitem_showstartprcnt) THEN 0.00 ELSE NULL END AS beginningprcnt, CASE WHEN(flitem_showendprcnt) THEN 0.00 ELSE NULL END AS endingprcnt, CASE WHEN(flitem_showdeltaprcnt) THEN 0.00 ELSE NULL END AS debitsprcnt, CASE WHEN(flitem_showdeltaprcnt) THEN 0.00 ELSE NULL END AS creditsprcnt, CASE WHEN(flitem_showbudgetprcnt) THEN 0.00 ELSE NULL END AS budgetprcnt, CASE WHEN(flitem_showdiffprcnt) THEN 0.00 ELSE NULL END AS diffprcnt, CASE WHEN(flitem_showcustomprcnt) THEN 0.00 ELSE NULL END AS customprcnt, accnt_id, public.formatglaccount(accnt_id) AS accnt_number FROM (SELECT flhead_type,flitem_id,flitem_order,flitem_subtract,flitem_showstart,flitem_showend, flitem_showdelta,flitem_showbudget,flitem_showdiff,flitem_showcustom, flitem_custom_source,flitem_showstartprcnt,flitem_showendprcnt,flitem_showdeltaprcnt, flitem_showbudgetprcnt,flitem_showdiffprcnt,flitem_showcustomprcnt, accnt_id,accnt_type, FIRST(trialbal_id) AS first_trialbal_id, LAST(trialbal_id) AS last_trialbal_id, SUM(trialbal_debits) AS sum_trialbal_debits, SUM(trialbal_credits) AS sum_trialbal_credits, LAST(flitem_period_id) AS last_flitem_period_id, SUM(budget_amount) AS sum_budget_amount, LAST(budget_amount) AS last_budget_amount FROM (SELECT period_id AS flitem_period_id, period_start,flhead_type,flitem_id,flitem_order,flitem_subtract,flitem_showstart,flitem_showend, flitem_showdelta,flitem_showbudget,flitem_showdiff,flitem_showcustom, flitem_custom_source,flitem_showstartprcnt,flitem_showendprcnt,flitem_showdeltaprcnt, flitem_showbudgetprcnt,flitem_showdiffprcnt,flitem_showcustomprcnt, accnt_id,accnt_type,COALESCE(trialbal_id,getlasttrialbalid(accnt_id,period_id)) as trialbal_id,COALESCE(trialbal_debits,0) as trialbal_debits, COALESCE(trialbal_credits,0) AS trialbal_credits,COALESCE(budget_amount,0) AS budget_amount FROM (SELECT period_id, period_start, flhead_type, flitem_id,flitem_order,flitem_subtract,flitem_showstart,flitem_showend, flitem_showdelta,flitem_showbudget,flitem_showdiff,flitem_showcustom,flitem_custom_source,flitem_showstartprcnt, flitem_showendprcnt,flitem_showdeltaprcnt,flitem_showbudgetprcnt,flitem_showdiffprcnt,flitem_showcustomprcnt, accnt_id, accnt_type FROM period,flaccnt WHERE ((flitem_flhead_id=pFlheadid) AND (flitem_flgrp_id=pFlgrpid) AND (_all OR prj_id=pPrjId) AND (period_id IN (SELECT * FROM getperiodid(pPeriodId,pInterval)))) ORDER BY flitem_id ) AS flitem LEFT OUTER JOIN trialbal ON ((trialbal_accnt_id=accnt_id) AND (trialbal_period_id=period_id)) LEFT OUTER JOIN budget ON ((budget_accnt_id=accnt_id) AND (budget_period_id=period_id)) ORDER BY accnt_id, period_start) AS data GROUP BY flhead_type,flitem_id,flitem_order,flitem_subtract,flitem_showstart,flitem_showend, flitem_showdelta,flitem_showbudget,flitem_showdiff,flitem_showcustom, flitem_custom_source,flitem_showstartprcnt,flitem_showendprcnt,flitem_showdeltaprcnt, flitem_showbudgetprcnt,flitem_showdiffprcnt,flitem_showcustomprcnt,accnt_id,accnt_type) AS agg UNION ALL SELECT 'S' AS type, flspec_id AS type_id, flspec_order AS orderby, FALSE AS summarize, flspec_subtract AS subtract, CASE WHEN (flspec_showstart) THEN findSpecialFinancial('S', flspec_type, pPeriodid) ELSE NULL END AS beginning, CASE WHEN (flspec_showend) THEN findSpecialFinancial('E', flspec_type, pPeriodid) ELSE NULL END AS ending, CASE WHEN (flspec_showdelta) THEN findSpecialFinancial('D', flspec_type, pPeriodid) ELSE NULL END AS debits, CASE WHEN (flspec_showdelta) THEN findSpecialFinancial('C', flspec_type, pPeriodid) ELSE NULL END AS credits, CASE WHEN (flspec_showbudget) THEN findSpecialFinancial('B', flspec_type, pPeriodid) ELSE NULL END AS budget, CASE WHEN (flspec_showdiff) THEN findSpecialFinancial('E', flspec_type, pPeriodid) - findSpecialFinancial('S', flspec_type, pPeriodid) ELSE NULL END AS diff, CASE WHEN (NOT flspec_showcustom) THEN NULL WHEN (flspec_custom_source='F') THEN findSpecialFinancial('E', flspec_type, pPeriodid) - findSpecialFinancial('S', flspec_type, pPeriodid) WHEN (flspec_custom_source IN ('S', 'E', 'D', 'C', 'B')) THEN findSpecialFinancial(flspec_custom_source, flspec_type, pPeriodid) ELSE 0.00 END AS custom, CASE WHEN(flspec_showstartprcnt) THEN 0.00 ELSE NULL END AS beginningprcnt, CASE WHEN(flspec_showendprcnt) THEN 0.00 ELSE NULL END AS endingprcnt, CASE WHEN(flspec_showdeltaprcnt) THEN 0.00 ELSE NULL END AS debitsprcnt, CASE WHEN(flspec_showdeltaprcnt) THEN 0.00 ELSE NULL END AS creditsprcnt, CASE WHEN(flspec_showbudgetprcnt) THEN 0.00 ELSE NULL END AS budgetprcnt, CASE WHEN(flspec_showdiffprcnt) THEN 0.00 ELSE NULL END AS diffprcnt, CASE WHEN(flspec_showcustomprcnt) THEN 0.00 ELSE NULL END AS customprcnt, -1 AS accnt_id, '' AS accnt_number FROM flspec WHERE ((flspec_flgrp_id=pFlgrpid) AND (flspec_flhead_id=pFlheadid)) ORDER BY orderby, accnt_number LOOP IF (_r.type = 'G') THEN -- Create a record for the items sub items to be attached to and be able to update the total INSERT INTO flrpt (flrpt_flhead_id, flrpt_period_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_beginning, flrpt_ending, flrpt_debits, flrpt_credits, flrpt_budget, flrpt_diff, flrpt_custom, flrpt_beginningprcnt, flrpt_endingprcnt, flrpt_debitsprcnt, flrpt_creditsprcnt, flrpt_budgetprcnt, flrpt_diffprcnt, flrpt_customprcnt, flrpt_parent_id, flrpt_interval) VALUES (pFlheadid, pPeriodid, getEffectiveXtUser(), (COALESCE(( SELECT MAX(flrpt_order) FROM flrpt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser())) ), 1) + 1), pLevel, _r.type, _r.type_id, _r.beginning, _r.ending, _r.debits, _r.credits, _r.budget, _r.diff, _r.custom, _r.beginningprcnt, _r.endingprcnt, _r.debitsprcnt, _r.creditsprcnt, _r.budgetprcnt, _r.diffprcnt, _r.customprcnt, pFlgrpid, pInterval); PERFORM insertFlGroup(pFlheadid, pPeriodid, _r.type_id, (pLevel + 1), (pSummarize OR _r.summarize), pInterval, pPrjid); -- Update the parent item SELECT COALESCE(flrpt_beginning, 0.00) AS beginning, COALESCE(flrpt_ending, 0.00) AS ending, COALESCE(flrpt_debits, 0.00) AS debits, COALESCE(flrpt_credits, 0.00) AS credits, COALESCE(flrpt_budget, 0.00) AS budget, COALESCE(flrpt_diff, 0.00) AS diff, COALESCE(flrpt_custom, 0.00) AS custom INTO _g FROM flrpt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type=_r.type) AND (flrpt_type_id=_r.type_id)); IF (_r.subtract) THEN UPDATE flrpt SET flrpt_beginning = flrpt_beginning - _g.beginning, flrpt_ending = flrpt_ending - _g.ending, flrpt_debits = flrpt_debits - _g.debits, flrpt_credits = flrpt_credits - _g.credits, flrpt_budget = flrpt_budget - _g.budget, flrpt_diff = flrpt_diff - _g.diff, flrpt_custom = flrpt_custom - _g.custom WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type='G') AND (flrpt_type_id=pFlgrpid)); ELSE UPDATE flrpt SET flrpt_beginning = flrpt_beginning + _g.beginning, flrpt_ending = flrpt_ending + _g.ending, flrpt_debits = flrpt_debits + _g.debits, flrpt_credits = flrpt_credits + _g.credits, flrpt_budget = flrpt_budget + _g.budget, flrpt_diff = flrpt_diff + _g.diff, flrpt_custom = flrpt_custom + _g.custom WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type='G') AND (flrpt_type_id=pFlgrpid)); END IF; -- If we are summarizing then we need to remove the record we created now that we have updated the total IF (pSummarize) THEN DELETE FROM flrpt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type=_r.type) AND (flrpt_type_id=_r.type_id)); END IF; ELSE IF (_r.type = 'I' OR _r.type = 'S' ) THEN -- If we are not summarizing then create a new entry for this record IF (NOT pSummarize) THEN INSERT INTO flrpt (flrpt_flhead_id, flrpt_period_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_beginning, flrpt_ending, flrpt_debits, flrpt_credits, flrpt_budget, flrpt_diff, flrpt_custom, flrpt_beginningprcnt, flrpt_endingprcnt, flrpt_debitsprcnt, flrpt_creditsprcnt, flrpt_budgetprcnt, flrpt_diffprcnt, flrpt_customprcnt, flrpt_parent_id,flrpt_accnt_id,flrpt_interval) VALUES (pFlheadid, pPeriodid, getEffectiveXtUser(), (COALESCE(( SELECT MAX(flrpt_order) FROM flrpt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser())) ), 1) + 1), pLevel, _r.type, _r.type_id, _r.beginning, _r.ending, _r.debits, _r.credits, _r.budget, _r.diff, _r.custom, _r.beginningprcnt, _r.endingprcnt, _r.debitsprcnt, _r.creditsprcnt, _r.budgetprcnt, _r.diffprcnt, _r.customprcnt, pFlgrpid,_r.accnt_id,pInterval); END IF; -- Update the parent item IF (_r.subtract) THEN UPDATE flrpt SET flrpt_beginning = flrpt_beginning - COALESCE(_r.beginning, 0.00), flrpt_ending = flrpt_ending - COALESCE(_r.ending, 0.00), flrpt_debits = flrpt_debits - COALESCE(_r.debits, 0.00), flrpt_credits = flrpt_credits - COALESCE(_r.credits, 0.00), flrpt_budget = flrpt_budget - COALESCE(_r.budget, 0.00), flrpt_diff = flrpt_diff - COALESCE(_r.diff, 0.00), flrpt_custom = flrpt_custom - COALESCE(_r.custom, 0.00) WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type='G') AND (flrpt_type_id=pFlgrpid)); ELSE UPDATE flrpt SET flrpt_beginning = flrpt_beginning + COALESCE(_r.beginning, 0.00), flrpt_ending = flrpt_ending + COALESCE(_r.ending, 0.00), flrpt_debits = flrpt_debits + COALESCE(_r.debits, 0.00), flrpt_credits = flrpt_credits + COALESCE(_r.credits, 0.00), flrpt_budget = flrpt_budget + COALESCE(_r.budget, 0.00), flrpt_diff = flrpt_diff + COALESCE(_r.diff, 0.00), flrpt_custom = flrpt_custom + COALESCE(_r.custom, 0.00) WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_interval=pInterval) AND (flrpt_period_id=pPeriodid) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type='G') AND (flrpt_type_id=pFlgrpid)); END IF; END IF; END IF; END LOOP; IF (NOT pSummarize) THEN -- If this group wants a summarized line create it here. IF (_subtotal) THEN INSERT INTO flrpt (flrpt_flhead_id, flrpt_period_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_beginning, flrpt_ending, flrpt_debits, flrpt_credits, flrpt_budget, flrpt_diff, flrpt_custom, flrpt_beginningprcnt, flrpt_endingprcnt, flrpt_debitsprcnt, flrpt_creditsprcnt, flrpt_budgetprcnt, flrpt_diffprcnt, flrpt_customprcnt, flrpt_parent_id, flrpt_altname,flrpt_interval ) SELECT pFlheadid, pPeriodid, getEffectiveXtUser(), (COALESCE(( SELECT MAX(flrpt_order) FROM flrpt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser())) ), 1) + 1), pLevel, 'T', -1, CASE WHEN (flgrp_showstart) THEN flrpt_beginning ELSE NULL END, CASE WHEN (flgrp_showend) THEN flrpt_ending ELSE NULL END, CASE WHEN (flgrp_showdelta) THEN flrpt_debits ELSE NULL END, CASE WHEN (flgrp_showdelta) THEN flrpt_credits ELSE NULL END, CASE WHEN (flgrp_showbudget) THEN flrpt_budget ELSE NULL END, CASE WHEN (flgrp_showdiff) THEN flrpt_diff ELSE NULL END, CASE WHEN (flgrp_showcustom) THEN flrpt_custom ELSE NULL END, CASE WHEN (flgrp_showstartprcnt) THEN flrpt_beginningprcnt ELSE NULL END, CASE WHEN (flgrp_showendprcnt) THEN flrpt_endingprcnt ELSE NULL END, CASE WHEN (flgrp_showdeltaprcnt) THEN flrpt_debitsprcnt ELSE NULL END, CASE WHEN (flgrp_showdeltaprcnt) THEN flrpt_creditsprcnt ELSE NULL END, CASE WHEN (flgrp_showbudgetprcnt) THEN flrpt_budgetprcnt ELSE NULL END, CASE WHEN (flgrp_showdiffprcnt) THEN flrpt_diffprcnt ELSE NULL END, CASE WHEN (flgrp_showcustomprcnt) THEN flrpt_customprcnt ELSE NULL END, pFlgrpid, CASE WHEN (flgrp_usealtsubtotal) THEN flgrp_altsubtotal ELSE NULL END, pInterval FROM flrpt, flgrp WHERE ((flrpt_flhead_id=flgrp_flhead_id) AND (flrpt_type_id=flgrp_id) AND (flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type='G') AND (flrpt_type_id=pFlgrpid)); END IF; END IF; return TRUE; END; $_$; ALTER FUNCTION public.insertflgroup(integer, integer, integer, integer, boolean, character, integer) OWNER TO admin; -- -- Name: insertgltransaction(text, text, text, text, integer, integer, integer, numeric, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertgltransaction(text, text, text, text, integer, integer, integer, numeric, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSource ALIAS FOR $1; pDocType ALIAS FOR $2; pDocNumber ALIAS FOR $3; pNotes ALIAS FOR $4; pCreditid ALIAS FOR $5; pDebitid ALIAS FOR $6; pMiscid ALIAS FOR $7; pAmount ALIAS FOR $8; pDistDate ALIAS FOR $9; _return INTEGER; BEGIN SELECT insertGLTransaction( fetchJournalNumber('GL-MISC'), pSource, pDocType, pDocNumber, pNotes, pCreditid, pDebitid, pMiscid, pAmount, pDistDate) INTO _return; RETURN _return; END; $_$; ALTER FUNCTION public.insertgltransaction(text, text, text, text, integer, integer, integer, numeric, date) OWNER TO admin; -- -- Name: insertgltransaction(integer, text, text, text, text, integer, integer, integer, numeric, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertgltransaction(integer, text, text, text, text, integer, integer, integer, numeric, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pJournalNumber ALIAS FOR $1; pSource ALIAS FOR $2; pDocType ALIAS FOR $3; pDocNumber ALIAS FOR $4; pNotes ALIAS FOR $5; pCreditid ALIAS FOR $6; pDebitid ALIAS FOR $7; pMiscid ALIAS FOR $8; pAmount ALIAS FOR $9; pDistDate ALIAS FOR $10; _return INTEGER; BEGIN SELECT insertGLTransaction( pJournalNumber, pSource, pDocType, pDocNumber, pNotes, pCreditid, pDebitid, pMiscid, pAmount, pDistDate, TRUE) INTO _return; RETURN _return; END; $_$; ALTER FUNCTION public.insertgltransaction(integer, text, text, text, text, integer, integer, integer, numeric, date) OWNER TO admin; -- -- Name: insertgltransaction(text, text, text, text, integer, integer, integer, numeric, date, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertgltransaction(text, text, text, text, integer, integer, integer, numeric, date, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSource ALIAS FOR $1; pDocType ALIAS FOR $2; pDocNumber ALIAS FOR $3; pNotes ALIAS FOR $4; pCreditid ALIAS FOR $5; pDebitid ALIAS FOR $6; pMiscid ALIAS FOR $7; pAmount ALIAS FOR $8; pDistDate ALIAS FOR $9; pPostTrialBal ALIAS FOR $10; _return INTEGER; BEGIN SELECT insertGLTransaction( fetchJournalNumber('GL-MISC'), pSource, pDocType, pDocNumber, pNotes, pCreditid, pDebitid, pMiscid, pAmount, pDistDate, pPostTrialBal) INTO _return; RETURN _return; END; $_$; ALTER FUNCTION public.insertgltransaction(text, text, text, text, integer, integer, integer, numeric, date, boolean) OWNER TO admin; -- -- Name: insertgltransaction(integer, text, text, text, text, integer, integer, integer, numeric, date, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertgltransaction(integer, text, text, text, text, integer, integer, integer, numeric, date, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pJournalNumber ALIAS FOR $1; pSource ALIAS FOR $2; pDocType ALIAS FOR $3; pDocNumber ALIAS FOR $4; pNotes ALIAS FOR $5; pCreditid ALIAS FOR $6; pDebitid ALIAS FOR $7; pMiscid ALIAS FOR $8; pAmount ALIAS FOR $9; pDistDate ALIAS FOR $10; pPostTrialBal ALIAS FOR $11; _return INTEGER; BEGIN SELECT insertGLTransaction( pJournalNumber, pSource, pDocType, pDocNumber, pNotes, pCreditid, pDebitid, pMiscid, pAmount, pDistDate, pPostTrialBal, false) INTO _return; RETURN _return; END; $_$; ALTER FUNCTION public.insertgltransaction(integer, text, text, text, text, integer, integer, integer, numeric, date, boolean) OWNER TO admin; -- -- Name: insertgltransaction(integer, text, text, text, text, integer, integer, integer, numeric, date, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertgltransaction(integer, text, text, text, text, integer, integer, integer, numeric, date, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pJournalNumber ALIAS FOR $1; pSource ALIAS FOR $2; pDocType ALIAS FOR $3; pDocNumber ALIAS FOR $4; pNotes ALIAS FOR $5; pCreditid ALIAS FOR $6; pDebitid ALIAS FOR $7; pMiscid ALIAS FOR $8; pAmount ALIAS FOR $9; pDistDate ALIAS FOR $10; pPostTrialBal ALIAS FOR $11; pOnlyGL ALIAS FOR $12; _debitid INTEGER; _creditid INTEGER; _sequence INTEGER; _check INTEGER; BEGIN -- Check GL Interface metric IF (fetchMetricBool('InterfaceToGL') = false AND pSource IN ('I/M', 'P/D', 'S/R', 'W/O')) THEN RETURN 0; END IF; IF (fetchMetricBool('InterfaceAPToGL') = false AND pSource = 'A/P') THEN RETURN 0; END IF; IF (fetchMetricBool('InterfaceARToGL') = false AND pSource IN ('A/R', 'S/O', 'S/R')) THEN RETURN 0; END IF; -- Is there anything to post? -- ToDo - 2 should really be the scale of the base currency IF (round(pAmount, 2) = 0) THEN RETURN -3; END IF; /* Make sure we don't create an imbalance across companies. The 'IgnoreCompanyBalance' metric is a back door mechanism to allow legacy users to create transactions accross companies if they have been using the company segment for something else and they MUST continue to be able to do so. It can only be implemented by direct sql update to the metric table and should otherwise be discouraged. */ IF (COALESCE(fetchMetricValue('GLCompanySize'),0) > 0 AND fetchMetricBool('IgnoreCompany') = false) THEN IF (SELECT (COALESCE(d.accnt_company,'') != COALESCE(c.accnt_company,'')) FROM accnt d, accnt c WHERE ((d.accnt_id=pDebitid) AND (c.accnt_id=pCreditid))) THEN RAISE EXCEPTION 'G/L Transaction can not be posted because accounts % and % reference two differnt companies.', formatGlaccount(pDebitid), formatGlaccount(pCreditid); END IF; END IF; -- Validate pDebitid IF (pDebitid IN (SELECT accnt_id FROM accnt)) THEN _debitid := pDebitid; ELSE SELECT getUnassignedAccntId() INTO _debitid; END IF; -- Validate pCreditid IF (pCreditid IN (SELECT accnt_id FROM accnt)) THEN _creditid := pCreditid; ELSE SELECT getUnassignedAccntId() INTO _creditid; END IF; -- refuse to accept postings into closed periods IF (SELECT BOOL_AND(COALESCE(period_closed, FALSE)) FROM accnt LEFT OUTER JOIN period ON (pDistDate BETWEEN period_start AND period_end) WHERE (accnt_id IN (_creditid, _debitid))) THEN RAISE EXCEPTION 'Cannot post to closed period (%).', pDistDate; RETURN -4; -- remove raise exception when all callers check return code END IF; -- refuse to accept postings into frozen periods without proper priv IF (SELECT NOT BOOL_AND(checkPrivilege('PostFrozenPeriod')) AND BOOL_AND(COALESCE(period_freeze, FALSE)) FROM accnt LEFT OUTER JOIN period ON (pDistDate BETWEEN period_start AND period_end) WHERE (accnt_id IN (_creditid, _debitid))) THEN RAISE EXCEPTION 'Cannot post to frozen period (%).', pDistDate; RETURN -4; -- remove raise exception when all callers check return code END IF; -- refuse to accept postings into nonexistent periods IF NOT EXISTS(SELECT period_id FROM period WHERE (pDistDate BETWEEN period_start AND period_end)) THEN RAISE EXCEPTION 'Cannot post to nonexistent period (%).', pDistDate; END IF; -- Grab a sequence for the pair SELECT fetchGLSequence() INTO _sequence; IF (NOT pOnlyGL AND fetchMetricBool('UseJournals')) THEN -- First the credit INSERT INTO sltrans ( sltrans_journalnumber, sltrans_posted, sltrans_created, sltrans_date, sltrans_sequence, sltrans_accnt_id, sltrans_source, sltrans_doctype, sltrans_docnumber, sltrans_notes, sltrans_misc_id, sltrans_amount ) VALUES ( pJournalNumber, FALSE, CURRENT_TIMESTAMP, pDistDate, _sequence, _creditid, pSource, pDocType, pDocNumber, pNotes, pMiscid, pAmount ); -- Now the debit INSERT INTO sltrans ( sltrans_journalnumber, sltrans_posted, sltrans_created, sltrans_date, sltrans_sequence, sltrans_accnt_id, sltrans_source, sltrans_doctype, sltrans_docnumber, sltrans_notes, sltrans_misc_id, sltrans_amount ) VALUES ( pJournalNumber, FALSE, CURRENT_TIMESTAMP, pDistDate, _sequence, _debitid, pSource, pDocType, pDocNumber, pNotes, pMiscid, (pAmount * -1) ); ELSE -- First the credit INSERT INTO gltrans ( gltrans_journalnumber, gltrans_posted, gltrans_exported, gltrans_created, gltrans_date, gltrans_sequence, gltrans_accnt_id, gltrans_source, gltrans_doctype, gltrans_docnumber, gltrans_notes, gltrans_misc_id, gltrans_amount ) VALUES ( pJournalNumber, FALSE, FALSE, CURRENT_TIMESTAMP, pDistDate, _sequence, _creditid, pSource, pDocType, pDocNumber, pNotes, pMiscid, pAmount ); -- Now the debit INSERT INTO gltrans ( gltrans_journalnumber, gltrans_posted, gltrans_exported, gltrans_created, gltrans_date, gltrans_sequence, gltrans_accnt_id, gltrans_source, gltrans_doctype, gltrans_docnumber, gltrans_notes, gltrans_misc_id, gltrans_amount ) VALUES ( pJournalNumber, FALSE, FALSE, CURRENT_TIMESTAMP, pDistDate, _sequence, _debitid, pSource, pDocType, pDocNumber, pNotes, pMiscid, (pAmount * -1) ); IF (pPostTrialBal) THEN PERFORM postIntoTrialBalance(_sequence); END IF; END IF; RETURN _sequence; END; $_$; ALTER FUNCTION public.insertgltransaction(integer, text, text, text, text, integer, integer, integer, numeric, date, boolean, boolean) OWNER TO admin; -- -- Name: insertintoglseries(integer, text, text, text, integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertintoglseries(integer, text, text, text, integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pSource ALIAS FOR $2; pDocType ALIAS FOR $3; pDocNumber ALIAS FOR $4; pAccntid ALIAS FOR $5; pAmount ALIAS FOR $6; _returnValue INTEGER; BEGIN SELECT insertIntoGLSeries( pSequence, pSource, pDocType, pDocNumber, pAccntid, pAmount, CURRENT_DATE, '' ) INTO _returnValue; RETURN _returnValue; END; $_$; ALTER FUNCTION public.insertintoglseries(integer, text, text, text, integer, numeric) OWNER TO admin; -- -- Name: insertintoglseries(integer, text, text, text, integer, numeric, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertintoglseries(integer, text, text, text, integer, numeric, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pSource ALIAS FOR $2; pDocType ALIAS FOR $3; pDocNumber ALIAS FOR $4; pAccntid ALIAS FOR $5; pAmount ALIAS FOR $6; pDistDate ALIAS FOR $7; _returnValue INTEGER; BEGIN SELECT insertIntoGLSeries( pSequence, pSource, pDocType, pDocNumber, pAccntid, pAmount, pDistDate, '' ) INTO _returnValue; RETURN _returnValue; END; $_$; ALTER FUNCTION public.insertintoglseries(integer, text, text, text, integer, numeric, date) OWNER TO admin; -- -- Name: insertintoglseries(integer, text, text, text, integer, numeric, date, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertintoglseries(integer, text, text, text, integer, numeric, date, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pSource ALIAS FOR $2; pDocType ALIAS FOR $3; pDocNumber ALIAS FOR $4; pAccntid ALIAS FOR $5; pAmount ALIAS FOR $6; pDistDate ALIAS FOR $7; pNotes ALIAS FOR $8; _returnValue INTEGER; BEGIN SELECT insertIntoGLSeries( pSequence, pSource, pDocType, pDocNumber, pAccntid, pAmount, pDistDate, pNotes, NULL ) INTO _returnValue; RETURN _returnValue; END; $_$; ALTER FUNCTION public.insertintoglseries(integer, text, text, text, integer, numeric, date, text) OWNER TO admin; -- -- Name: insertintoglseries(integer, text, text, text, integer, numeric, date, text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertintoglseries(integer, text, text, text, integer, numeric, date, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pSource ALIAS FOR $2; pDocType ALIAS FOR $3; pDocNumber ALIAS FOR $4; pAccntid ALIAS FOR $5; pAmount ALIAS FOR $6; pDistDate ALIAS FOR $7; pNotes ALIAS FOR $8; pMiscid ALIAS FOR $9; _glseriesid INTEGER; BEGIN -- Check GL Interface metric IF (fetchMetricBool('InterfaceToGL') = false AND pSource IN ('I/M', 'P/D', 'S/R', 'W/O')) THEN RETURN 0; END IF; IF (fetchMetricBool('InterfaceAPToGL') = false AND pSource = 'A/P') THEN RETURN 0; END IF; IF (fetchMetricBool('InterfaceARToGL') = false AND pSource IN ('A/R', 'S/O', 'S/R')) THEN RETURN 0; END IF; -- Verify the target accnt IF ( (pAccntid IS NULL) OR (pAccntid = -1) ) THEN RETURN -1; END IF; -- refuse to accept postings into closed periods IF (SELECT BOOL_AND(COALESCE(period_closed, FALSE)) FROM accnt LEFT OUTER JOIN period ON (pDistDate BETWEEN period_start AND period_end) WHERE (accnt_id = pAccntid)) THEN RAISE EXCEPTION 'Cannot post to closed period (%).', pDistDate; RETURN -4; -- remove raise exception when all callers check return code END IF; -- refuse to accept postings into frozen periods without proper priv IF (SELECT NOT BOOL_AND(checkPrivilege('PostFrozenPeriod')) AND BOOL_AND(COALESCE(period_freeze, FALSE)) FROM accnt LEFT OUTER JOIN period ON (pDistDate BETWEEN period_start AND period_end) WHERE (accnt_id = pAccntid)) THEN RAISE EXCEPTION 'Cannot post to frozen period (%).', pDistDate; RETURN -4; -- remove raise exception when all callers check return code END IF; -- refuse to accept postings into nonexistent periods IF NOT EXISTS(SELECT period_id FROM period WHERE (pDistDate BETWEEN period_start AND period_end)) THEN RAISE EXCEPTION 'Cannot post to nonexistent period (%).', pDistDate; END IF; -- Insert into the glseries SELECT NEXTVAL('glseries_glseries_id_seq') INTO _glseriesid; INSERT INTO glseries ( glseries_id, glseries_sequence, glseries_source, glseries_doctype, glseries_docnumber, glseries_accnt_id, glseries_amount, glseries_distdate, glseries_notes, glseries_misc_id ) VALUES ( _glseriesid, pSequence, pSource, pDocType, pDocNumber, pAccntid, pAmount, pDistDate, pNotes, pMiscid ); RETURN _glseriesid; END; $_$; ALTER FUNCTION public.insertintoglseries(integer, text, text, text, integer, numeric, date, text, integer) OWNER TO admin; -- -- Name: invchead; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE invchead ( invchead_id integer NOT NULL, invchead_cust_id integer NOT NULL, invchead_shipto_id integer, invchead_ordernumber text, invchead_orderdate date, invchead_posted boolean NOT NULL, invchead_printed boolean NOT NULL, invchead_invcnumber text NOT NULL, invchead_invcdate date NOT NULL, invchead_shipdate date, invchead_ponumber text, invchead_shipvia text, invchead_fob text, invchead_billto_name text, invchead_billto_address1 text, invchead_billto_address2 text, invchead_billto_address3 text, invchead_billto_city text, invchead_billto_state text, invchead_billto_zipcode text, invchead_billto_phone text, invchead_shipto_name text, invchead_shipto_address1 text, invchead_shipto_address2 text, invchead_shipto_address3 text, invchead_shipto_city text, invchead_shipto_state text, invchead_shipto_zipcode text, invchead_shipto_phone text, invchead_salesrep_id integer, invchead_commission numeric(20,10) NOT NULL, invchead_terms_id integer, invchead_freight numeric(16,2) NOT NULL, invchead_misc_amount numeric(16,2) NOT NULL, invchead_misc_descrip text, invchead_misc_accnt_id integer, invchead_payment numeric(16,2), invchead_paymentref text, invchead_notes text, invchead_billto_country text, invchead_shipto_country text, invchead_prj_id integer, invchead_curr_id integer DEFAULT basecurrid(), invchead_gldistdate date, invchead_recurring boolean DEFAULT false NOT NULL, invchead_recurring_interval integer, invchead_recurring_type text, invchead_recurring_until date, invchead_recurring_invchead_id integer, invchead_shipchrg_id integer, invchead_taxzone_id integer, invchead_void boolean DEFAULT false, invchead_saletype_id integer, invchead_shipzone_id integer, CONSTRAINT invchead_invchead_invcnumber_check CHECK ((invchead_invcnumber <> ''::text)) ); ALTER TABLE public.invchead OWNER TO admin; -- -- Name: TABLE invchead; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE invchead IS 'Invoice header information'; -- -- Name: COLUMN invchead.invchead_recurring; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN invchead.invchead_recurring IS 'Deprecated.'; -- -- Name: COLUMN invchead.invchead_recurring_interval; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN invchead.invchead_recurring_interval IS 'Deprecated.'; -- -- Name: COLUMN invchead.invchead_recurring_type; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN invchead.invchead_recurring_type IS 'Deprecated.'; -- -- Name: COLUMN invchead.invchead_recurring_until; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN invchead.invchead_recurring_until IS 'Deprecated.'; -- -- Name: COLUMN invchead.invchead_saletype_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN invchead.invchead_saletype_id IS 'Associated sale type for invoice.'; -- -- Name: COLUMN invchead.invchead_shipzone_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN invchead.invchead_shipzone_id IS 'Associated shipping zone for invoice.'; -- -- Name: prj; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE prj ( prj_id integer NOT NULL, prj_number text NOT NULL, prj_name text NOT NULL, prj_descrip text, prj_status character(1) NOT NULL, prj_so boolean, prj_wo boolean, prj_po boolean, prj_owner_username text, prj_start_date date, prj_due_date date, prj_assigned_date date, prj_completed_date date, prj_username text, prj_recurring_prj_id integer, prj_crmacct_id integer, prj_cntct_id integer, CONSTRAINT prj_prj_number_check CHECK ((prj_number <> ''::text)), CONSTRAINT prj_prj_status_check CHECK ((prj_status = ANY (ARRAY['P'::bpchar, 'O'::bpchar, 'C'::bpchar]))) ); ALTER TABLE public.prj OWNER TO admin; -- -- Name: TABLE prj; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE prj IS 'Project information'; -- -- Name: COLUMN prj.prj_recurring_prj_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN prj.prj_recurring_prj_id IS 'The first prj record in the series if this is a recurring Project. If the prj_recurring_prj_id is the same as the prj_id, this record is the first in the series.'; -- -- Name: saletype; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE saletype ( saletype_id integer NOT NULL, saletype_code text NOT NULL, saletype_descr text, saletype_active boolean DEFAULT true NOT NULL ); ALTER TABLE public.saletype OWNER TO admin; -- -- Name: TABLE saletype; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE saletype IS 'Type or Origination of Sale.'; -- -- Name: COLUMN saletype.saletype_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN saletype.saletype_id IS 'Sequence identifier for sale type.'; -- -- Name: COLUMN saletype.saletype_code; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN saletype.saletype_code IS 'User defined identifier for sale type.'; -- -- Name: COLUMN saletype.saletype_descr; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN saletype.saletype_descr IS 'Description for sale type.'; -- -- Name: COLUMN saletype.saletype_active; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN saletype.saletype_active IS 'Boolean to deactivate a sale type.'; -- -- Name: shipzone; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE shipzone ( shipzone_id integer DEFAULT nextval(('shipzone_shipzone_id_seq'::text)::regclass) NOT NULL, shipzone_name text NOT NULL, shipzone_descrip text, CONSTRAINT shipzone_shipzone_name_check CHECK ((shipzone_name <> ''::text)) ); ALTER TABLE public.shipzone OWNER TO admin; -- -- Name: TABLE shipzone; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE shipzone IS 'Shipping Zone information'; SET search_path = api, pg_catalog; -- -- Name: invoice; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW invoice AS SELECT invchead.invchead_invcnumber AS invoice_number, invchead.invchead_ordernumber AS order_number, invchead.invchead_invcdate AS invoice_date, invchead.invchead_shipdate AS ship_date, invchead.invchead_orderdate AS order_date, saletype.saletype_code AS sale_type, salesrep.salesrep_number AS sales_rep, invchead.invchead_commission AS commission, COALESCE(taxzone.taxzone_code, 'None'::text) AS tax_zone, terms.terms_code AS terms, custinfo.cust_number AS customer_number, invchead.invchead_billto_name AS billto_name, invchead.invchead_billto_address1 AS billto_address1, invchead.invchead_billto_address2 AS billto_address2, invchead.invchead_billto_address3 AS billto_address3, invchead.invchead_billto_city AS billto_city, invchead.invchead_billto_state AS billto_state, invchead.invchead_billto_zipcode AS billto_postal_code, invchead.invchead_billto_country AS billto_country, invchead.invchead_billto_phone AS billto_phone, shiptoinfo.shipto_num AS shipto_number, invchead.invchead_shipto_name AS shipto_name, invchead.invchead_shipto_address1 AS shipto_address1, invchead.invchead_shipto_address2 AS shipto_address2, invchead.invchead_shipto_address3 AS shipto_address3, invchead.invchead_shipto_city AS shipto_city, invchead.invchead_shipto_state AS shipto_state, invchead.invchead_shipto_zipcode AS shipto_postal_code, invchead.invchead_shipto_country AS shipto_country, shipzone.shipzone_name AS shipto_shipzone, invchead.invchead_shipto_phone AS shipto_phone, invchead.invchead_ponumber AS po_number, invchead.invchead_shipvia AS ship_via, prj.prj_number AS project_number, invchead.invchead_fob AS fob, invchead.invchead_misc_descrip AS misc_charge_description, invchead.invchead_misc_amount AS misc_charge, CASE WHEN (invchead.invchead_misc_accnt_id = (-1)) THEN NULL::text ELSE public.formatglaccount(invchead.invchead_misc_accnt_id) END AS misc_charge_account_number, invchead.invchead_freight AS freight, curr.curr_abbr AS currency, invchead.invchead_payment AS payment, invchead.invchead_notes AS notes FROM (((((((((public.invchead LEFT JOIN public.custinfo ON ((custinfo.cust_id = invchead.invchead_cust_id))) LEFT JOIN public.shiptoinfo ON ((shiptoinfo.shipto_id = invchead.invchead_shipto_id))) LEFT JOIN public.prj ON ((prj.prj_id = invchead.invchead_prj_id))) LEFT JOIN public.curr_symbol curr ON ((curr.curr_id = invchead.invchead_curr_id))) LEFT JOIN public.salesrep ON ((salesrep.salesrep_id = invchead.invchead_salesrep_id))) LEFT JOIN public.terms ON ((terms.terms_id = invchead.invchead_terms_id))) LEFT JOIN public.taxzone ON ((taxzone.taxzone_id = invchead.invchead_taxzone_id))) LEFT JOIN public.saletype ON ((invchead.invchead_saletype_id = saletype.saletype_id))) LEFT JOIN public.shipzone ON ((invchead.invchead_shipzone_id = shipzone.shipzone_id))); ALTER TABLE api.invoice OWNER TO admin; -- -- Name: VIEW invoice; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW invoice IS ' This view can be used as an interface to import Invioce Header data directly into the system. Required fields will be checked and default values will be populated'; SET search_path = public, pg_catalog; -- -- Name: insertinvoice(api.invoice); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertinvoice(api.invoice) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNew ALIAS FOR $1; BEGIN -- NOTE: (SELECT getCustId(...)) seems redundant, but it actually produces -- a HUGE performance increase because it makes the Postgres query planner -- use an index scan rather than an sequential table scan on cust_id INSERT INTO invchead ( invchead_invcnumber, invchead_ordernumber, invchead_invcdate, invchead_shipdate, invchead_orderdate, invchead_printed, invchead_posted, invchead_salesrep_id, invchead_commission, invchead_taxzone_id, invchead_terms_id, invchead_cust_id, invchead_billto_name, invchead_billto_address1, invchead_billto_address2, invchead_billto_address3, invchead_billto_city, invchead_billto_state, invchead_billto_zipcode, invchead_billto_country, invchead_billto_phone, invchead_shipto_id, invchead_shipto_name, invchead_shipto_address1, invchead_shipto_address2, invchead_shipto_address3, invchead_shipto_city, invchead_shipto_state, invchead_shipto_zipcode, invchead_shipto_country, invchead_shipto_phone, invchead_ponumber, invchead_shipvia, invchead_prj_id, invchead_fob, invchead_misc_descrip, invchead_misc_amount, invchead_misc_accnt_id, invchead_freight, invchead_curr_id, invchead_payment, invchead_notes, invchead_saletype_id, invchead_shipzone_id ) SELECT (CASE -- use a case here so we don't unnecessarily fetch a new invoice number WHEN pNew.invoice_number IS NULL THEN CAST(fetchInvcNumber() AS TEXT) WHEN pNew.invoice_number = '' THEN CAST(fetchInvcNumber() AS TEXT) ELSE pNew.invoice_number END), pNew.order_number, COALESCE(pNew.invoice_date, CURRENT_DATE), pNew.ship_date, pNew.order_date, FALSE, FALSE, COALESCE(getSalesRepId(pNew.sales_rep),shipto_salesrep_id,cust_salesrep_id), COALESCE(pNew.commission, 0), CASE WHEN pNew.tax_zone = 'None' THEN NULL ELSE COALESCE(getTaxZoneId(pNew.tax_zone),shipto_taxzone_id,cust_taxzone_id) END, COALESCE(getTermsId(pNew.terms),cust_terms_id), (SELECT getCustId(pNew.customer_number)), COALESCE(pNew.billto_name, cohead_billtoname, cust_name), COALESCE(pNew.billto_address1, cohead_billtoaddress1, addr_line1), COALESCE(pNew.billto_address2, cohead_billtoaddress2, addr_line2), COALESCE(pNew.billto_address3, cohead_billtoaddress3, addr_line3), COALESCE(pNew.billto_city, cohead_billtocity, addr_city), COALESCE(pNew.billto_state, cohead_billtostate, addr_state), COALESCE(pNew.billto_postal_code, cohead_billtozipcode, addr_postalcode), COALESCE(pNew.billto_country, cohead_billtocountry, addr_country), COALESCE(pNew.billto_phone, ''), COALESCE(shipto_id,-1), pNew.shipto_name, pNew.shipto_address1, pNew.shipto_address2, pNew.shipto_address3, pNew.shipto_city, pNew.shipto_state, pNew.shipto_postal_code, pNew.shipto_country, pNew.shipto_phone, COALESCE(pNew.po_number, ''), COALESCE(pNew.ship_via,shipto_shipvia,cust_shipvia), COALESCE(getPrjId(pNew.project_number),-1), COALESCE(pNew.fob,fetchDefaultFob(( SELECT CAST(usrpref_value AS INTEGER) FROM usrpref, whsinfo WHERE ((warehous_id=CAST(usrpref_value AS INTEGER)) AND (warehous_shipping) AND (warehous_active) AND (usrpref_username=getEffectiveXtUser()) AND (usrpref_name='PreferredWarehouse') ) ))), pNew.misc_charge_description, COALESCE(pNew.misc_charge, 0), COALESCE(getGlAccntId(pNew.misc_charge_account_number),-1), COALESCE(pNew.freight, 0), COALESCE(getCurrId(pNew.currency),( SELECT cust_curr_id FROM custinfo WHERE (cust_id=(SELECT getCustId(pNew.customer_number))) ),basecurrid()), COALESCE(pNew.payment,0), COALESCE(pNew.notes,''), getSaleTypeId(pNew.sale_type), getShipZoneId(pNew.shipto_shipzone) FROM custinfo LEFT OUTER JOIN shiptoinfo ON (shipto_id=(SELECT CASE WHEN getShiptoId(pNew.customer_number,pNew.shipto_number) IS NOT NULL THEN getShiptoId(pNew.customer_number,pNew.shipto_number) ELSE (SELECT shipto_id FROM shiptoinfo WHERE shipto_cust_id=cust_id AND shipto_default) END)) LEFT OUTER JOIN cohead ON (cohead_number=pNEW.order_number) LEFT OUTER JOIN cntct ON (cntct_id=cust_cntct_id) LEFT OUTER JOIN addr ON (addr_id=cntct_addr_id) WHERE cust_id = (SELECT getCustId(pNew.customer_number)); RETURN TRUE; END; $_$; ALTER FUNCTION public.insertinvoice(api.invoice) OWNER TO admin; -- -- Name: invcitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE invcitem ( invcitem_id integer NOT NULL, invcitem_invchead_id integer NOT NULL, invcitem_linenumber integer, invcitem_item_id integer, invcitem_warehous_id integer DEFAULT (-1), invcitem_custpn text, invcitem_number text, invcitem_descrip text, invcitem_ordered numeric(20,6) NOT NULL, invcitem_billed numeric(20,6) NOT NULL, invcitem_custprice numeric(20,4), invcitem_price numeric(20,4) NOT NULL, invcitem_notes text, invcitem_salescat_id integer, invcitem_taxtype_id integer, invcitem_qty_uom_id integer, invcitem_qty_invuomratio numeric(20,10) NOT NULL, invcitem_price_uom_id integer, invcitem_price_invuomratio numeric(20,10) NOT NULL, invcitem_coitem_id integer, invcitem_updateinv boolean DEFAULT false, invcitem_rev_accnt_id integer ); ALTER TABLE public.invcitem OWNER TO admin; -- -- Name: TABLE invcitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE invcitem IS 'Invoice Line Item information'; SET search_path = api, pg_catalog; -- -- Name: invoiceline; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW invoiceline AS SELECT invchead.invchead_invcnumber AS invoice_number, invcitem.invcitem_linenumber AS line_number, item.item_number, invcitem.invcitem_number AS misc_item_number, whsinfo.warehous_code AS site, invcitem.invcitem_descrip AS misc_item_description, salescat.salescat_name AS sales_category, invcitem.invcitem_custpn AS customer_part_number, invcitem.invcitem_ordered AS qty_ordered, invcitem.invcitem_billed AS qty_billed, invcitem.invcitem_updateinv AS update_inventory, invcitem.invcitem_price AS net_unit_price, COALESCE(taxtype.taxtype_name, 'None'::text) AS tax_type, COALESCE(qty_uom.uom_name, 'None'::text) AS qty_uom, COALESCE(price_uom.uom_name, 'None'::text) AS price_uom, invcitem.invcitem_notes AS notes, CASE WHEN (invcitem.invcitem_rev_accnt_id IS NOT NULL) THEN public.formatglaccount(invcitem.invcitem_rev_accnt_id) ELSE NULL::text END AS alternate_rev_account FROM (((((((public.invcitem LEFT JOIN public.invchead ON ((invcitem.invcitem_invchead_id = invchead.invchead_id))) LEFT JOIN public.item ON ((item.item_id = invcitem.invcitem_item_id))) LEFT JOIN public.whsinfo ON ((invcitem.invcitem_warehous_id = whsinfo.warehous_id))) LEFT JOIN public.salescat ON ((salescat.salescat_id = invcitem.invcitem_salescat_id))) LEFT JOIN public.taxtype ON ((taxtype.taxtype_id = invcitem.invcitem_taxtype_id))) LEFT JOIN public.uom qty_uom ON ((qty_uom.uom_id = invcitem.invcitem_qty_uom_id))) LEFT JOIN public.uom price_uom ON ((price_uom.uom_id = invcitem.invcitem_price_uom_id))); ALTER TABLE api.invoiceline OWNER TO admin; -- -- Name: VIEW invoiceline; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW invoiceline IS ' This view can be used as an interface to import Invoice Line Items data directly into the system. Required fields will be checked and default values will be populated'; SET search_path = public, pg_catalog; -- -- Name: insertinvoicelineitem(api.invoiceline); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertinvoicelineitem(api.invoiceline) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNew ALIAS FOR $1; _r RECORD; BEGIN INSERT INTO invcitem ( invcitem_invchead_id, invcitem_linenumber, invcitem_item_id, invcitem_warehous_id, invcitem_custpn, invcitem_number, invcitem_descrip, invcitem_ordered, invcitem_billed, invcitem_updateinv, invcitem_custprice, invcitem_price, invcitem_notes, invcitem_salescat_id, invcitem_taxtype_id, invcitem_qty_uom_id, invcitem_qty_invuomratio, invcitem_price_uom_id, invcitem_price_invuomratio, invcitem_rev_accnt_id ) SELECT invchead_id, COALESCE(pNew.line_number,( SELECT (COALESCE(MAX(invcitem_linenumber), 0) + 1) FROM invcitem WHERE (invcitem_invchead_id=invchead_id) )), COALESCE(item_id, -1), COALESCE(getwarehousid(pNew.site,'ALL'),-1), pNew.customer_part_number, (CASE WHEN item_id IS NULL THEN pNew.misc_item_number ELSE NULL END), (CASE WHEN item_id IS NULL THEN pNew.misc_item_description ELSE NULL END), pNew.qty_ordered, COALESCE(pNew.qty_billed, 0), COALESCE(pNew.update_inventory,FALSE), 0, -- invcitem_custprice COALESCE(pNew.net_unit_price,itemPrice(item_id,invchead_cust_id, invchead_shipto_id,pNew.qty_ordered,invchead_curr_id,invchead_orderdate)), COALESCE(pNew.notes,''), CASE WHEN item_id IS NULL THEN (SELECT salescat_id FROM salescat WHERE salescat_name = pNew.sales_category) ELSE NULL END, taxtype_id, CASE WHEN item_id IS NOT NULL THEN COALESCE((SELECT uom_id FROM uom WHERE (uom_name=pNew.qty_uom)), item_price_uom_id) ELSE NULL END, CASE WHEN item_id IS NOT NULL THEN itemuomtouomratio(item_id, COALESCE((SELECT uom_id FROM uom WHERE uom_name=pNew.qty_uom),item_price_uom_id), item_price_uom_id ) ELSE 1 END, CASE WHEN item_id IS NOT NULL THEN COALESCE((SELECT uom_id FROM uom WHERE uom_name=pNew.price_uom),item_price_uom_id) ELSE NULL END, CASE WHEN item_id IS NOT NULL THEN itemuomtouomratio(item_id, COALESCE((SELECT uom_id FROM uom WHERE uom_name=pNew.price_uom),item_price_uom_id), item_price_uom_id ) ELSE 1 END, getGlAccntId(pNew.alternate_rev_account) FROM invchead LEFT OUTER JOIN item ON (item_id=getItemId(pNew.item_number)) LEFT OUTER JOIN taxtype ON (taxtype_id=CASE WHEN pNew.tax_type IS NULL THEN getItemTaxType(item_id,invchead_taxzone_id) WHEN pNew.tax_type = 'None' THEN NULL ELSE (SELECT taxtype_id FROM taxtype WHERE taxtype_name=pNew.tax_type) END) WHERE (invchead_invcnumber=pNew.invoice_number) AND (invchead_posted=FALSE); RETURN TRUE; END; $_$; ALTER FUNCTION public.insertinvoicelineitem(api.invoiceline) OWNER TO admin; -- -- Name: insertitemcost(integer, integer, integer, numeric, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertitemcost(integer, integer, integer, numeric, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemId ALIAS FOR $1; pCostElemId ALIAS FOR $2; pCurrId ALIAS FOR $3; pCost ALIAS FOR $4; pPostToStandard ALIAS FOR $5; _itemcost_id INTEGER; _update_return INTEGER; _postcost_return BOOLEAN; --This function is used with the api.itemcost View for updating and inserting --into the itemcosts table BEGIN IF (pCost IS NULL OR pCost < 0) THEN RAISE EXCEPTION 'itemcost Actual Cost Invalid ', pCost; END IF; -- Check for uniqueness SELECT itemcost_id INTO _itemcost_id FROM itemcost WHERE ( (itemcost_item_id = pItemId) AND (itemcost_costelem_id = pCostElemId) AND (NOT itemcost_lowlevel) ); IF (FOUND) THEN RAISE EXCEPTION 'itemcost already exists for this Item and Cost Element'; END IF; -- Check for valid combination of item_type and costelem_type IF (SELECT (COUNT(*) > 0) FROM item, costelem WHERE (item_id=pItemId) AND (costelem_id=pCostElemId) AND (item_type IN ('M', 'F', 'B', 'C', 'T')) AND (costelem_type IN ('Material'))) THEN RAISE EXCEPTION 'itemcost of this type is invalid for Manufactured Item'; END IF; IF (SELECT (COUNT(*) > 0) FROM item, costelem WHERE (item_id=pItemId) AND (costelem_id=pCostElemId) AND (item_type IN ('O', 'P')) AND (costelem_type IN ('Direct Labor', 'Overhead', 'Machine Overhead'))) THEN RAISE EXCEPTION 'itemcost of this type is invalid for Purchased Item'; END IF; IF (pCost > 0) THEN SELECT NEXTVAL('itemcost_itemcost_id_seq') INTO _itemcost_id; INSERT INTO itemcost ( itemcost_id, itemcost_item_id, itemcost_costelem_id, itemcost_lowlevel, itemcost_stdcost, itemcost_posted, itemcost_actcost, itemcost_updated, itemcost_curr_id ) VALUES ( _itemcost_id, pItemId, pCostElemId, FALSE, 0, startOfTime(), pCost, CURRENT_DATE, pCurrId ); --Only Post Cost to standard if the parameter is set to true IF (pPostToStandard) THEN IF (NOT checkPrivilege('PostStandardCosts')) THEN RAISE EXCEPTION 'You do not have privileges to poststandard itemcosts. Set api.itemcost post_to_standard to false'; END IF; SELECT postcost(_itemcost_id) INTO _postcost_return; IF (NOT _postcost_return) THEN RETURN -2; END IF; END IF; ELSE RETURN -1; END IF; RETURN _itemcost_id; END; $_$; ALTER FUNCTION public.insertitemcost(integer, integer, integer, numeric, boolean) OWNER TO admin; -- -- Name: insertsalesline(api.salesline); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION insertsalesline(api.salesline) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNEW ALIAS FOR $1; _r RECORD; BEGIN IF (NOT EXISTS (SELECT cohead_id FROM cohead WHERE cohead_number=pNEW.order_number)) THEN RAISE EXCEPTION 'Function insertSalesLine failed because Sales Order % not found', pNEW.order_number; END IF; IF (NOT EXISTS (SELECT item_id FROM item WHERE item_number=pNEW.item_number)) THEN RAISE EXCEPTION 'Function insertSalesLine failed because Item Number % not found', pNEW.item_number; END IF; SELECT * INTO _r FROM cohead, itemsite, item, whsinfo WHERE ((cohead_number=pNEW.order_number) AND (itemsite_warehous_id=warehous_id AND (itemsite_item_id=item_id) AND (itemsite_active) AND (item_number=pNEW.item_number) AND (warehous_active) AND (warehous_id=COALESCE(getWarehousId(pNEW.sold_from_site,'ALL'),cohead_warehous_id,fetchprefwarehousid())))); IF (NOT FOUND) THEN RAISE EXCEPTION 'Function insertSalesLine failed with unknown failure to retrieve Sales Order'; END IF; INSERT INTO coitem ( coitem_cohead_id, coitem_linenumber, coitem_itemsite_id, coitem_status, coitem_scheddate, coitem_promdate, coitem_qtyord, coitem_qty_uom_id, coitem_qty_invuomratio, coitem_qtyshipped, coitem_unitcost, coitem_price, coitem_price_uom_id, coitem_price_invuomratio, coitem_custprice, coitem_order_id, coitem_memo, coitem_imported, coitem_qtyreturned, coitem_custpn, coitem_order_type, coitem_substitute_item_id, coitem_prcost, coitem_taxtype_id, coitem_warranty, coitem_cos_accnt_id, coitem_rev_accnt_id) VALUES ( _r.cohead_id, pNEW.line_number::INTEGER, _r.itemsite_id, pNEW.status, pNEW.scheduled_date, pNEW.promise_date, pNEW.qty_ordered, COALESCE(getUomId(pNEW.qty_uom),_r.item_inv_uom_id), itemuomtouomratio(_r.item_id,COALESCE(getUomId(pNEW.qty_uom),_r.item_inv_uom_id),_r.item_inv_uom_id), 0, stdCost(_r.item_id), COALESCE(pNEW.net_unit_price,itemPrice(_r.item_id,_r.cohead_cust_id, _r.cohead_shipto_id,pNEW.qty_ordered,_r.cohead_curr_id,_r.cohead_orderdate)), COALESCE(getUomId(pNEW.price_uom),_r.item_price_uom_id), itemuomtouomratio(_r.item_id,COALESCE(getUomId(pNEW.price_uom),_r.item_price_uom_id),_r.item_price_uom_id), itemPrice(_r.item_id,_r.cohead_cust_id,_r.cohead_shipto_id,pNEW.qty_ordered,_r.cohead_curr_id,_r.cohead_orderdate), -1, pNEW.notes, true, 0, pNEW.customer_pn, CASE WHEN ((pNEW.create_order AND (_r.item_type = 'M')) OR ((pNEW.create_order IS NULL) AND _r.itemsite_createwo)) THEN 'W' WHEN ((pNEW.create_order AND (_r.item_type = 'P')) OR ((pNEW.create_order IS NULL) AND _r.itemsite_createsopr)) THEN 'R' WHEN ((pNEW.create_order AND (_r.item_type = 'P') AND (_r.itemsite_createsopo)) OR ((pNEW.create_order IS NULL) AND _r.itemsite_createsopo)) THEN 'P' END, getitemid(pNEW.substitute_for), pNEW.overwrite_po_price, COALESCE(getTaxTypeId(pNEW.tax_type), getItemTaxType(_r.itemsite_item_id, _r.cohead_taxzone_id)), pNEW.warranty, getGlAccntId(pNEW.alternate_cos_account), getGlAccntId(pNEW.alternate_rev_account) ); RETURN TRUE; END; $_$; ALTER FUNCTION public.insertsalesline(api.salesline) OWNER TO admin; -- -- Name: intervaltominutes(interval); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION intervaltominutes(interval) RETURNS numeric LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT (EXTRACT(DAY FROM $1) * 24 * 60 + EXTRACT(HOUR FROM $1) * 60 + EXTRACT(MINUTE FROM $1) + ROUND((EXTRACT(SECOND FROM $1) / 60)::NUMERIC, 4))::NUMERIC AS result $_$; ALTER FUNCTION public.intervaltominutes(interval) OWNER TO admin; -- -- Name: invadjustment(integer, numeric, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION invadjustment(integer, numeric, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN invAdjustment($1, $2, $3, $4, CURRENT_TIMESTAMP, NULL); END; $_$; ALTER FUNCTION public.invadjustment(integer, numeric, text, text) OWNER TO admin; -- -- Name: invadjustment(integer, numeric, text, text, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION invadjustment(integer, numeric, text, text, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN invAdjustment($1, $2, $3, $4, $5, NULL); END; $_$; ALTER FUNCTION public.invadjustment(integer, numeric, text, text, timestamp with time zone) OWNER TO admin; -- -- Name: invadjustment(integer, numeric, text, text, timestamp with time zone, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION invadjustment(integer, numeric, text, text, timestamp with time zone, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pQty ALIAS FOR $2; pDocumentNumber ALIAS FOR $3; pComments ALIAS FOR $4; pGlDistTS ALIAS FOR $5; pCostValue ALIAS FOR $6; _invhistid INTEGER; _itemlocSeries INTEGER; BEGIN -- Make sure the passed itemsite points to a real item IF ( ( SELECT (item_type IN ('R', 'F') OR itemsite_costmethod = 'J') FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ) ) ) THEN RETURN 0; END IF; SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; SELECT postInvTrans( itemsite_id, 'AD', pQty, 'I/M', 'AD', pDocumentNumber, '', ('Miscellaneous Adjustment for item ' || item_number || E'\n' || pComments), costcat_asset_accnt_id, costcat_adjustment_accnt_id, _itemlocSeries, pGlDistTS, pCostValue) INTO _invhistid FROM itemsite, item, costcat WHERE ( (itemsite_item_id=item_id) AND (itemsite_costcat_id=costcat_id) AND (itemsite_id=pItemsiteid) ); RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.invadjustment(integer, numeric, text, text, timestamp with time zone, numeric) OWNER TO admin; -- -- Name: invexpense(integer, numeric, integer, text, text, timestamp with time zone, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION invexpense(pitemsiteid integer, pqty numeric, pexpcatid integer, pdocumentnumber text, pcomments text, pgldistts timestamp with time zone DEFAULT now(), pprjid integer DEFAULT NULL::integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _invhistid INTEGER; _itemlocSeries INTEGER; BEGIN -- Make sure the passed itemsite points to a real item IF ( ( SELECT (item_type IN ('R', 'F') OR itemsite_costmethod = 'J') FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ) ) ) THEN RETURN 0; END IF; SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; SELECT postInvTrans( itemsite_id, 'EX', pQty, 'I/M', 'EX', pDocumentNumber, '', CASE WHEN (pQty < 0) THEN ('Reverse Material Expense for item ' || item_number || E'\n' || pComments) ELSE ('Material Expense for item ' || item_number || E'\n' || pComments) END, getPrjAccntId(pPrjid, expcat_exp_accnt_id), costcat_asset_accnt_id, _itemlocSeries, pGlDistTS) INTO _invhistid FROM itemsite, item, costcat, expcat WHERE ( (itemsite_item_id=item_id) AND (itemsite_costcat_id=costcat_id) AND (itemsite_id=pItemsiteid) AND (expcat_id=pExpcatid) ); INSERT INTO invhistexpcat (invhistexpcat_invhist_id, invhistexpcat_expcat_id) VALUES (_invhistid, pExpcatid); RETURN _itemlocSeries; END; $$; ALTER FUNCTION public.invexpense(pitemsiteid integer, pqty numeric, pexpcatid integer, pdocumentnumber text, pcomments text, pgldistts timestamp with time zone, pprjid integer) OWNER TO admin; -- -- Name: invhistsense(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION invhistsense(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvhistId ALIAS FOR $1; _count INTEGER; _row RECORD; _sense INTEGER; BEGIN SELECT invhist_transtype, invhist_ordnumber, itemsite_warehous_id INTO _row FROM invhist JOIN itemsite ON (itemsite_id=invhist_itemsite_id) WHERE (invhist_id=pInvhistId); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count = 0) THEN RAISE EXCEPTION 'Record not found for invhist_id=%',pInvhistId; END IF; -- increase inventory: AD RM RT RP RR RS RX RB TR -- decrease inventory: IM IB IT SH SI EX RI -- TS and TR are special: shipShipment and recallShipment should not change -- QOH at the Transfer Order src whs (as this was done by issueToShipping) -- but postReceipt should change QOH at the transit whs IF (_row.invhist_transtype='TS') THEN _sense := CASE WHEN (SELECT tohead_trns_warehous_id=_row.itemsite_warehous_id FROM tohead WHERE (tohead_number=_row.invhist_ordnumber)) THEN -1 ELSE 0 END; ELSIF (_row.invhist_transtype='TR') THEN _sense := CASE WHEN (SELECT tohead_src_warehous_id=_row.itemsite_warehous_id FROM tohead WHERE (tohead_number=_row.invhist_ordnumber)) THEN 0 ELSE 1 END; ELSIF (_row.invhist_transtype IN ('IM', 'IB', 'IT', 'SH', 'SI', 'EX', 'RI')) THEN _sense := -1; ELSE _sense := 1; END IF; RETURN _sense; END; $_$; ALTER FUNCTION public.invhistsense(integer) OWNER TO admin; -- -- Name: invhisttrig(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION invhisttrig() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Need to allow 'temporary' negative for average costed item that has been frozen. -- Check at itemsite after all of the transactions have been thawed will ensure -- that final Qty On Hand is positive. -- IF (NEW.invhist_qoh_after < 0 AND NEW.invhist_costmethod = 'A') THEN -- RAISE EXCEPTION 'Invhist (%) is recording with average costing and is not allowed to have a negative quantity on hand.', NEW.invhist_id; -- END IF; IF ( ( SELECT itemsite_freeze FROM itemsite WHERE (itemsite_id=NEW.invhist_itemsite_id) ) ) THEN NEW.invhist_posted = FALSE; END IF; -- never change the created timestamp, which defaults to CURRENT_TIMESTAMP IF (TG_OP != 'INSERT') THEN NEW.invhist_created = OLD.invhist_created; ELSE -- Always need a series id for distribution posting IF (NEW.invhist_series IS NULL) THEN RAISE EXCEPTION 'Column invhist_series may not be null.'; END IF; END IF; RETURN NEW; END; $$; ALTER FUNCTION public.invhisttrig() OWNER TO admin; -- -- Name: invoicetotal(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION invoicetotal(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvoiceId ALIAS FOR $1; _linesum NUMERIC; _linetax NUMERIC; _result NUMERIC; _allocated NUMERIC; _posted BOOLEAN; BEGIN SELECT SUM(ROUND(COALESCE((invcitem_billed * invcitem_qty_invuomratio) * (invcitem_price / COALESCE(invcitem_price_invuomratio,1)), 0),2)) INTO _linesum FROM invcitem WHERE (invcitem_invchead_id=pInvoiceId); -- TODO: why sum on the result of select round(sum(), 2)? SELECT SUM(tax) INTO _linetax FROM (SELECT ROUND(SUM(COALESCE(taxdetail_tax, 0)),2) AS tax FROM tax JOIN calculateTaxDetailSummary('I', pInvoiceId, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id) AS data; SELECT noNeg(invchead_freight + invchead_misc_amount + COALESCE(_linetax, 0) + COALESCE(_linesum, 0)), invchead_posted INTO _result, _posted FROM invchead WHERE (invchead_id=pInvoiceId); IF NOT FOUND THEN RETURN 0; END IF; IF (_posted) THEN SELECT COALESCE(SUM(currToCurr(arapply_curr_id, aropen_curr_id, arapply_applied, aropen_docdate)),0) INTO _allocated FROM arapply, aropen, invchead WHERE ( (invchead_posted) AND (invchead_id=pInvoiceId) AND (aropen_docnumber=invchead_invcnumber) AND (aropen_doctype='I') AND (arapply_target_aropen_id=aropen_id) AND (arapply_reftype='S') AND (invchead_posted) ) ; ELSE SELECT COALESCE(SUM(CASE WHEN((aropen_amount - aropen_paid) >= currToCurr(aropenalloc_curr_id, aropen_curr_id, aropenalloc_amount, aropen_docdate)) THEN currToCurr(aropenalloc_curr_id, invchead_curr_id, aropenalloc_amount, aropen_docdate) ELSE currToCurr(aropen_curr_id, invchead_curr_id, aropen_amount - aropen_paid, aropen_docdate) END),0) INTO _allocated FROM invchead LEFT OUTER JOIN cohead ON (cohead_number=invchead_ordernumber) JOIN aropenalloc ON ((aropenalloc_doctype='I' AND aropenalloc_doc_id=invchead_id) OR (aropenalloc_doctype='S' AND aropenalloc_doc_id=cohead_id)) JOIN aropen ON (aropen_id=aropenalloc_aropen_id AND (aropen_amount - aropen_paid) > 0.0) WHERE ( (NOT invchead_posted) AND (invchead_id=pInvoiceId) ); END IF; RETURN _result - COALESCE(_allocated, 0); END; $_$; ALTER FUNCTION public.invoicetotal(integer) OWNER TO admin; -- -- Name: invreceipt(integer, numeric, text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION invreceipt(integer, numeric, text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN invReceipt($1, $2, $3, $4, $5, CURRENT_TIMESTAMP, NULL); END; $_$; ALTER FUNCTION public.invreceipt(integer, numeric, text, text, text) OWNER TO admin; -- -- Name: invreceipt(integer, numeric, text, text, text, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION invreceipt(integer, numeric, text, text, text, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN invReceipt($1, $2, $3, $4, $5, $6, NULL); END; $_$; ALTER FUNCTION public.invreceipt(integer, numeric, text, text, text, timestamp with time zone) OWNER TO admin; -- -- Name: invreceipt(integer, numeric, text, text, text, timestamp with time zone, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION invreceipt(integer, numeric, text, text, text, timestamp with time zone, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pQty ALIAS FOR $2; pOrdernumber ALIAS FOR $3; pDocumentNumber ALIAS FOR $4; pComments ALIAS FOR $5; pGlDistTS ALIAS FOR $6; pCostValue ALIAS FOR $7; _invhistid INTEGER; _itemlocSeries INTEGER; BEGIN -- Make sure the passed itemsite points to a real item IF ( ( SELECT (item_type IN ('R', 'F') OR itemsite_costmethod = 'J') FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ) ) ) THEN RETURN 0; END IF; SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; SELECT postInvTrans( itemsite_id, 'RX', pQty, 'I/M', 'RX', pDocumentNumber, '', ('Miscellaneous Receipt for item ' || item_number || E'\n' || pComments), costcat_asset_accnt_id, costcat_liability_accnt_id, _itemlocSeries, pGlDistTS, pCostValue) INTO _invhistid FROM itemsite, item, costcat WHERE ( (itemsite_item_id=item_id) AND (itemsite_costcat_id=costcat_id) AND (itemsite_id=pItemsiteid) ); RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.invreceipt(integer, numeric, text, text, text, timestamp with time zone, numeric) OWNER TO admin; -- -- Name: invscrap(integer, numeric, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION invscrap(integer, numeric, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN invScrap($1, $2, $3, $4, CURRENT_TIMESTAMP); END; $_$; ALTER FUNCTION public.invscrap(integer, numeric, text, text) OWNER TO admin; -- -- Name: invscrap(integer, numeric, text, text, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION invscrap(integer, numeric, text, text, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN invScrap($1, $2, $3, $4, $5, NULL); END; $_$; ALTER FUNCTION public.invscrap(integer, numeric, text, text, timestamp with time zone) OWNER TO admin; -- -- Name: invscrap(integer, numeric, text, text, timestamp with time zone, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION invscrap(integer, numeric, text, text, timestamp with time zone, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN invScrap($1, $2, $3, $4, $5, $6, NULL); END; $_$; ALTER FUNCTION public.invscrap(integer, numeric, text, text, timestamp with time zone, integer) OWNER TO admin; -- -- Name: invscrap(integer, numeric, text, text, timestamp with time zone, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION invscrap(integer, numeric, text, text, timestamp with time zone, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pQty ALIAS FOR $2; pDocumentNumber ALIAS FOR $3; pComments ALIAS FOR $4; pGlDistTS ALIAS FOR $5; pInvHistId ALIAS FOR $6; pPrjid ALIAS FOR $7; _invhistid INTEGER; _itemlocSeries INTEGER; BEGIN -- Make sure the passed itemsite points to a real item IF ( ( SELECT (item_type IN ('R', 'F') OR itemsite_costmethod = 'J') FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ) ) ) THEN RETURN 0; END IF; IF (pInvHistId IS NOT NULL) THEN SELECT invhist_series INTO _itemlocSeries FROM invhist WHERE invhist_id=pInvHistId; ELSE SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; END IF; SELECT postInvTrans( itemsite_id, 'SI', pQty, 'I/M', 'SI', pDocumentNumber, '', CASE WHEN (pQty < 0) THEN ('Reverse Material Scrap for item ' || item_number || E'\n' || pComments) ELSE ('Material Scrap for item ' || item_number || E'\n' || pComments) END, getPrjAccntId(pPrjid, costcat_scrap_accnt_id), costcat_asset_accnt_id, _itemlocSeries, pGlDistTS, NULL, pInvHistId) INTO _invhistid FROM itemsite, item, costcat WHERE ( (itemsite_item_id=item_id) AND (itemsite_costcat_id=costcat_id) AND (itemsite_id=pItemsiteid) ); RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.invscrap(integer, numeric, text, text, timestamp with time zone, integer, integer) OWNER TO admin; -- -- Name: isdba(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION isdba(text DEFAULT NULL::text) RETURNS boolean LANGUAGE sql AS $_$ SELECT (datdba=pg_roles.oid OR rolsuper) AS issuper FROM pg_database, pg_roles WHERE ((datname=current_database()) AND (rolname=COALESCE($1, getEffectiveXtUser()))); $_$; ALTER FUNCTION public.isdba(text) OWNER TO admin; -- -- Name: ismulticurr(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION ismulticurr() RETURNS boolean LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN (SELECT (count(*) > 1) FROM curr_symbol); END; $$; ALTER FUNCTION public.ismulticurr() OWNER TO admin; -- -- Name: isnumeric(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION isnumeric(text) RETURNS boolean LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pText ALIAS FOR $1; _cursor INTEGER; BEGIN IF ( (LENGTH(pText) = 0) OR (pText IS NULL) ) THEN RETURN FALSE; END IF; FOR _cursor IN 1..LENGTH(pText) LOOP IF (SUBSTRING(pText FROM _cursor FOR 1) NOT IN ( '0', '1', '2', '3', '4', '5' ,'6' ,'7' ,'8' ,'9' )) THEN RETURN FALSE; END IF; END LOOP; RETURN TRUE; END; $_$; ALTER FUNCTION public.isnumeric(text) OWNER TO admin; -- -- Name: issueallbalancetoshipping(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION issueallbalancetoshipping(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN issueAllBalanceToShipping('SO', $1, 0, NULL); END; $_$; ALTER FUNCTION public.issueallbalancetoshipping(integer) OWNER TO admin; -- -- Name: issueallbalancetoshipping(text, integer, integer, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION issueallbalancetoshipping(text, integer, integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; pheadid ALIAS FOR $2; _itemlocSeries INTEGER := $3; _timestamp TIMESTAMP WITH TIME ZONE := $4; _s RECORD; BEGIN IF (pordertype = 'SO') THEN FOR _s IN SELECT coitem_id, noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned - ( SELECT COALESCE(SUM(shipitem_qty), 0) FROM shipitem, shiphead WHERE ( (shipitem_orderitem_id=coitem_id) AND (shipitem_shiphead_id=shiphead_id) AND (NOT shiphead_shipped) AND (shiphead_order_type=pordertype) ) ) ) AS balance FROM coitem LEFT OUTER JOIN (itemsite JOIN item ON (itemsite_item_id=item_id)) ON (coitem_itemsite_id=itemsite_id) WHERE ( (coitem_status NOT IN ('C','X')) AND (item_type != 'K') AND (coitem_cohead_id=pheadid) ) LOOP IF (_s.balance <> 0) THEN _itemlocSeries := issueToShipping(pordertype, _s.coitem_id, _s.balance, _itemlocSeries, _timestamp); IF (_itemlocSeries < 0) THEN EXIT; END IF; END IF; END LOOP; ELSEIF (pordertype = 'TO') THEN FOR _s IN SELECT toitem_id, noNeg( toitem_qty_ordered - toitem_qty_shipped - ( SELECT COALESCE(SUM(shipitem_qty), 0) FROM shipitem, shiphead WHERE ( (shipitem_orderitem_id=toitem_id) AND (shipitem_shiphead_id=shiphead_id) AND (NOT shiphead_shipped) AND (shiphead_order_type=pordertype) ) ) ) AS balance FROM toitem WHERE ( (toitem_status NOT IN ('C','X')) AND (toitem_tohead_id=pheadid) ) LOOP IF (_s.balance <> 0) THEN _itemlocSeries := issueToShipping(pordertype, _s.toitem_id, _s.balance, _itemlocSeries, _timestamp); IF (_itemlocSeries < 0) THEN EXIT; END IF; END IF; END LOOP; ELSE RETURN -1; END IF; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.issueallbalancetoshipping(text, integer, integer, timestamp with time zone) OWNER TO admin; -- -- Name: issuelinebalancetoshipping(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION issuelinebalancetoshipping(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN issueLineBalanceToShipping('SO', $1, NULL); END; $_$; ALTER FUNCTION public.issuelinebalancetoshipping(integer) OWNER TO admin; -- -- Name: issuelinebalancetoshipping(text, integer, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION issuelinebalancetoshipping(text, integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN issueLineBalanceToShipping($1, $2, $3, 0, NULL); END; $_$; ALTER FUNCTION public.issuelinebalancetoshipping(text, integer, timestamp with time zone) OWNER TO admin; -- -- Name: issuelinebalancetoshipping(text, integer, timestamp with time zone, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION issuelinebalancetoshipping(text, integer, timestamp with time zone, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; pitemid ALIAS FOR $2; ptimestamp ALIAS FOR $3; pitemlocseries ALIAS FOR $4; pinvhistid ALIAS FOR $5; _itemlocSeries INTEGER := 0; _qty NUMERIC; BEGIN _itemlocSeries := COALESCE(pitemlocseries,0); IF (pordertype = 'SO') THEN SELECT noNeg( coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned - ( SELECT COALESCE(SUM(shipitem_qty), 0) FROM shipitem, shiphead WHERE ((shipitem_orderitem_id=coitem_id) AND (shipitem_shiphead_id=shiphead_id) AND (NOT shiphead_shipped) ) ) ) INTO _qty FROM coitem WHERE (coitem_id=pitemid); ELSEIF (pordertype = 'TO') THEN SELECT noNeg( toitem_qty_ordered - toitem_qty_shipped - ( SELECT COALESCE(SUM(shipitem_qty), 0) FROM shipitem, shiphead WHERE ( (shipitem_orderitem_id=toitem_id) AND (shipitem_shiphead_id=shiphead_id) AND (NOT shiphead_shipped) ) ) ) INTO _qty FROM toitem WHERE (toitem_id=pitemid); ELSE RETURN -1; END IF; IF (_qty > 0) THEN _itemlocSeries := issueToShipping(pordertype, pitemid, _qty, _itemlocSeries, ptimestamp, pinvhistid); END IF; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.issuelinebalancetoshipping(text, integer, timestamp with time zone, integer, integer) OWNER TO admin; -- -- Name: issues(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION issues(text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTransType ALIAS FOR $1; BEGIN IF (pTransType IN ('IM', 'IB', 'IT')) THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END; $_$; ALTER FUNCTION public.issues(text) OWNER TO admin; -- -- Name: issuetoshipping(integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION issuetoshipping(integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN issueToShipping('SO', $1, $2, 0, CURRENT_TIMESTAMP); END; $_$; ALTER FUNCTION public.issuetoshipping(integer, numeric) OWNER TO admin; -- -- Name: issuetoshipping(integer, numeric, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION issuetoshipping(integer, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN issueToShipping('SO', $1, $2, $3, CURRENT_TIMESTAMP); END; $_$; ALTER FUNCTION public.issuetoshipping(integer, numeric, integer) OWNER TO admin; -- -- Name: issuetoshipping(text, integer, numeric, integer, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION issuetoshipping(text, integer, numeric, integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN issueToShipping($1, $2, $3, $4, $5, NULL); END; $_$; ALTER FUNCTION public.issuetoshipping(text, integer, numeric, integer, timestamp with time zone) OWNER TO admin; -- -- Name: issuetoshipping(text, integer, numeric, integer, timestamp with time zone, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION issuetoshipping(text, integer, numeric, integer, timestamp with time zone, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; pitemid ALIAS FOR $2; pQty ALIAS FOR $3; _itemlocSeries INTEGER := $4; _timestamp TIMESTAMP WITH TIME ZONE := $5; pinvhistid ALIAS FOR $6; _coholdtype TEXT; _invhistid INTEGER; _shipheadid INTEGER; _shipnumber INTEGER; _cntctid INTEGER; _p RECORD; _m RECORD; _value NUMERIC; _warehouseid INTEGER; _shipitemid INTEGER; _freight NUMERIC; BEGIN IF (_timestamp IS NULL) THEN _timestamp := CURRENT_TIMESTAMP; END IF; IF (_itemlocSeries = 0) THEN _itemlocSeries := NEXTVAL('itemloc_series_seq'); END IF; IF (pordertype = 'SO') THEN -- Check site security SELECT warehous_id INTO _warehouseid FROM coitem,itemsite,site() WHERE ((coitem_id=pitemid) AND (itemsite_id=coitem_itemsite_id) AND (warehous_id=itemsite_warehous_id)); IF (NOT FOUND) THEN RETURN 0; END IF; -- Check for average cost items going negative IF ( SELECT ( (itemsite_costmethod='A') AND ((itemsite_qtyonhand - round(pQty * coitem_qty_invuomratio, 6)) < 0.0) ) FROM coitem JOIN itemsite ON (itemsite_id=coitem_itemsite_id) WHERE (coitem_id=pitemid) ) THEN RETURN -20; END IF; -- Check auto registration IF ( SELECT COALESCE(itemsite_autoreg, FALSE) FROM coitem JOIN itemsite ON (itemsite_id=coitem_itemsite_id) WHERE (coitem_id=pitemid) ) THEN SELECT COALESCE(crmacct_cntct_id_1, -1) INTO _cntctid FROM coitem JOIN cohead ON (cohead_id=coitem_cohead_id) JOIN crmacct ON (crmacct_cust_id=cohead_cust_id) WHERE (coitem_id=pitemid); IF (_cntctid = -1) THEN RETURN -15; END IF; END IF; SELECT shiphead_id INTO _shipheadid FROM shiphead, coitem WHERE ((shiphead_order_id=coitem_cohead_id) AND (NOT shiphead_shipped) AND (coitem_id=pitemid) AND (shiphead_order_type=pordertype)); IF (NOT FOUND) THEN SELECT NEXTVAL('shiphead_shiphead_id_seq') INTO _shipheadid; _shipnumber := fetchShipmentNumber(); IF (_shipnumber < 0) THEN RETURN -10; END IF; SELECT cohead_holdtype INTO _coholdtype FROM cohead, coitem WHERE ((cohead_id=coitem_cohead_id) AND (coitem_id=pitemid)); IF (_coholdtype = 'C') THEN RETURN -12; ELSIF (_coholdtype = 'P') THEN RETURN -13; ELSIF (_coholdtype = 'R') THEN RETURN -14; END IF; INSERT INTO shiphead ( shiphead_id, shiphead_number, shiphead_order_id, shiphead_order_type, shiphead_shipped, shiphead_sfstatus, shiphead_shipvia, shiphead_shipchrg_id, shiphead_freight, shiphead_freight_curr_id, shiphead_shipdate, shiphead_notes, shiphead_shipform_id ) SELECT _shipheadid, _shipnumber, coitem_cohead_id, pordertype, FALSE, 'N', cohead_shipvia, CASE WHEN (cohead_shipchrg_id <= 0) THEN NULL ELSE cohead_shipchrg_id END, cohead_freight, cohead_curr_id, _timestamp::DATE, cohead_shipcomments, CASE WHEN cohead_shipform_id = -1 THEN NULL ELSE cohead_shipform_id END FROM cohead, coitem WHERE ((coitem_cohead_id=cohead_id) AND (coitem_id=pitemid) ); UPDATE pack SET pack_shiphead_id = _shipheadid, pack_printed = FALSE FROM coitem WHERE ((pack_head_id=coitem_cohead_id) AND (pack_shiphead_id IS NULL) AND (pack_head_type='SO') AND (coitem_id=pitemid)); ELSE UPDATE pack SET pack_printed = FALSE FROM coitem WHERE ((pack_head_id=coitem_cohead_id) AND (pack_shiphead_id=_shipheadid) AND (pack_head_type='SO') AND (coitem_id=pitemid)); END IF; -- Handle g/l transaction SELECT postInvTrans( itemsite_id, 'SH', (pQty * coitem_qty_invuomratio), 'S/R', porderType, formatSoNumber(coitem_id), shiphead_number, ('Issue ' || item_number || ' to Shipping for customer ' || cohead_billtoname), getPrjAccntId(cohead_prj_id, costcat_shipasset_accnt_id), costcat_asset_accnt_id, _itemlocSeries, _timestamp, NULL, pinvhistid ) INTO _invhistid FROM coitem, cohead, itemsite, item, costcat, shiphead WHERE ( (coitem_cohead_id=cohead_id) AND (coitem_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (itemsite_costcat_id=costcat_id) AND (coitem_id=pitemid) AND (shiphead_id=_shipheadid) ); SELECT (invhist_unitcost * invhist_invqty) INTO _value FROM invhist WHERE (invhist_id=_invhistid); _shipitemid := nextval('shipitem_shipitem_id_seq'); INSERT INTO shipitem ( shipitem_id, shipitem_shiphead_id, shipitem_orderitem_id, shipitem_qty, shipitem_transdate, shipitem_trans_username, shipitem_invoiced, shipitem_value, shipitem_invhist_id ) VALUES ( _shipitemid, _shipheadid, pitemid, pQty, _timestamp, getEffectiveXtUser(), FALSE, _value, CASE WHEN _invhistid = -1 THEN NULL ELSE _invhistid END ); -- Handle reservation IF (fetchmetricbool('EnableSOReservations')) THEN -- Remember what was reserved so we can re-reserve if this issue is returned INSERT INTO shipitemrsrv (shipitemrsrv_shipitem_id, shipitemrsrv_qty) SELECT _shipitemid, least(pQty,coitem_qtyreserved) FROM coitem WHERE ((coitem_id=pitemid) AND (coitem_qtyreserved > 0)); -- Update sales order UPDATE coitem SET coitem_qtyreserved = noNeg(coitem_qtyreserved - pQty) WHERE(coitem_id=pitemid); END IF; -- Calculate shipment freight SELECT calcShipFreight(_shipheadid) INTO _freight; UPDATE shiphead SET shiphead_freight=_freight WHERE (shiphead_id=_shipheadid); ELSEIF (pordertype = 'TO') THEN -- Check site security IF (fetchMetricBool('MultiWhs')) THEN SELECT warehous_id INTO _warehouseid FROM toitem, tohead, site() WHERE ( (toitem_id=pitemid) AND (tohead_id=toitem_tohead_id) AND (warehous_id=tohead_src_warehous_id) ); IF (NOT FOUND) THEN RETURN 0; END IF; END IF; SELECT postInvTrans( itemsite_id, 'SH', pQty, 'S/R', pordertype, formatToNumber(toitem_id), '', 'Issue to Shipping', costcat_shipasset_accnt_id, costcat_asset_accnt_id, _itemlocSeries, _timestamp) INTO _invhistid FROM tohead, toitem, itemsite, costcat WHERE ((tohead_id=toitem_tohead_id) AND (itemsite_item_id=toitem_item_id) AND (itemsite_warehous_id=tohead_src_warehous_id) AND (itemsite_costcat_id=costcat_id) AND (toitem_id=pitemid) ); SELECT shiphead_id INTO _shipheadid FROM shiphead, toitem WHERE ((shiphead_order_id=toitem_tohead_id) AND (NOT shiphead_shipped) AND (toitem_id=pitemid) AND (shiphead_order_type=pordertype)); IF (NOT FOUND) THEN _shipheadid := NEXTVAL('shiphead_shiphead_id_seq'); _shipnumber := fetchShipmentNumber(); IF (_shipnumber < 0) THEN RETURN -10; END IF; INSERT INTO shiphead ( shiphead_id, shiphead_number, shiphead_order_id, shiphead_order_type, shiphead_shipped, shiphead_sfstatus, shiphead_shipvia, shiphead_shipchrg_id, shiphead_freight, shiphead_freight_curr_id, shiphead_shipdate, shiphead_notes, shiphead_shipform_id ) SELECT _shipheadid, _shipnumber, tohead_id, pordertype, FALSE, 'N', tohead_shipvia, tohead_shipchrg_id, tohead_freight + SUM(toitem_freight), tohead_freight_curr_id, _timestamp::DATE, tohead_shipcomments, tohead_shipform_id FROM tohead, toitem WHERE ((toitem_tohead_id=tohead_id) AND (tohead_id IN (SELECT toitem_tohead_id FROM toitem WHERE (toitem_id=pitemid))) ) GROUP BY tohead_id, tohead_shipvia, tohead_shipchrg_id, tohead_freight, tohead_freight_curr_id, tohead_shipcomments, tohead_shipform_id; END IF; INSERT INTO shipitem ( shipitem_shiphead_id, shipitem_orderitem_id, shipitem_qty, shipitem_transdate, shipitem_trans_username, shipitem_value, shipitem_invhist_id ) SELECT _shipheadid, pitemid, pQty, _timestamp, getEffectiveXtUser(), invhist_invqty * invhist_unitcost, _invhistid FROM toitem, item, invhist WHERE ((toitem_id=pitemid) AND (item_id=toitem_item_id) AND (invhist_id=_invhistid)); ELSE RETURN -11; END IF; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.issuetoshipping(text, integer, numeric, integer, timestamp with time zone, integer) OWNER TO admin; -- -- Name: issuewomaterial(integer, numeric, integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION issuewomaterial(integer, numeric, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; pItemlocSeries ALIAS FOR $3; pMarkPush ALIAS FOR $4; _itemlocSeries INTEGER; BEGIN RETURN issueWoMaterial(pWomatlid, pQty, pItemlocSeries,now()); END; $_$; ALTER FUNCTION public.issuewomaterial(integer, numeric, integer, boolean) OWNER TO admin; -- -- Name: issuewomaterial(integer, numeric, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION issuewomaterial(integer, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; pItemlocSeries ALIAS FOR $3; _p RECORD; _invhistid INTEGER; _itemlocSeries INTEGER; BEGIN RETURN issueWoMaterial(pWomatlid, pQty, pItemlocSeries, now()); END; $_$; ALTER FUNCTION public.issuewomaterial(integer, numeric, integer) OWNER TO admin; -- -- Name: issuewomaterial(integer, numeric, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION issuewomaterial(integer, numeric, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; pMarkPush ALIAS FOR $3; _itemlocSeries INTEGER; BEGIN RETURN issueWoMaterial(pWomatlid, pQty, pMarkPush, now()); END; $_$; ALTER FUNCTION public.issuewomaterial(integer, numeric, boolean) OWNER TO admin; -- -- Name: issuewomaterial(integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION issuewomaterial(integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; _itemlocSeries INTEGER; BEGIN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; RETURN issueWoMaterial(pWomatlid, pQty, _itemlocSeries); END; $_$; ALTER FUNCTION public.issuewomaterial(integer, numeric) OWNER TO admin; -- -- Name: issuewomaterial(integer, numeric, integer, boolean, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION issuewomaterial(integer, numeric, integer, boolean, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; pItemlocSeries ALIAS FOR $3; pMarkPush ALIAS FOR $4; pGlDistTS ALIAS FOR $5; _itemlocSeries INTEGER; BEGIN SELECT issueWoMaterial(pWomatlid, pQty, pItemlocSeries, pGlDistTS) INTO _itemlocSeries; IF (pMarkPush) THEN UPDATE womatl SET womatl_issuemethod='S' WHERE ((womatl_issuemethod='M') AND (womatl_id=pWomatlid)); END IF; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.issuewomaterial(integer, numeric, integer, boolean, timestamp with time zone) OWNER TO admin; -- -- Name: issuewomaterial(integer, numeric, integer, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION issuewomaterial(integer, numeric, integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN issueWoMaterial($1, $2, $3, $4, NULL); END; $_$; ALTER FUNCTION public.issuewomaterial(integer, numeric, integer, timestamp with time zone) OWNER TO admin; -- -- Name: issuewomaterial(integer, numeric, boolean, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION issuewomaterial(integer, numeric, boolean, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; pMarkPush ALIAS FOR $3; pGlDistTS ALIAS FOR $4; _itemlocSeries INTEGER; BEGIN SELECT issueWoMaterial(pWomatlid, pQty, 0, pGlDistTS) INTO _itemlocSeries; IF (_itemlocSeries < 0) THEN RETURN _itemlocSeries; END IF; IF (pMarkPush) THEN UPDATE womatl SET womatl_issuemethod='S' WHERE ((womatl_issuemethod='M') AND (womatl_id=pWomatlid)); END IF; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.issuewomaterial(integer, numeric, boolean, timestamp with time zone) OWNER TO admin; -- -- Name: issuewomaterial(integer, numeric, integer, timestamp with time zone, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION issuewomaterial(integer, numeric, integer, timestamp with time zone, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; pItemlocSeries ALIAS FOR $3; pGlDistTS ALIAS FOR $4; pInvhistid ALIAS FOR $5; _p RECORD; _invhistid INTEGER; _itemlocSeries INTEGER; BEGIN SELECT item_id, itemsite_id AS c_itemsite_id, wo_itemsite_id AS p_itemsite_id, itemsite_loccntrl, itemsite_controlmethod, womatl_wo_id, womatl_qtyreq, itemsite_item_id, womatl_uom_id, wo_prj_id, roundQty(item_fractional, itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, pQty)) AS qty, formatWoNumber(wo_id) AS woNumber, CASE WHEN(itemsite_costmethod='J' AND item_type='P' AND poitem_id IS NOT NULL) THEN poitem_unitprice WHEN(itemsite_costmethod IN ('A','J')) THEN avgcost(itemsite_id) WHEN(itemsite_costmethod='S') THEN stdcost(itemsite_item_id) ELSE 0.0 END AS cost, womatl_issuemethod AS issueMethod INTO _p FROM womatl JOIN wo ON (wo_id=womatl_wo_id) JOIN itemsite ON (itemsite_id=womatl_itemsite_id) JOIN item ON (item_id=itemsite_item_id) LEFT OUTER JOIN poitem ON (poitem_order_id=womatl_id AND poitem_order_type='W') WHERE (womatl_id=pWomatlid); IF (pQty < 0) THEN RETURN pItemlocSeries; END IF; IF (pItemlocSeries <> 0) THEN _itemlocSeries := pItemlocSeries; ELSE SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; END IF; SELECT postInvTrans( ci.itemsite_id, 'IM', _p.qty, 'W/O', 'WO', _p.woNumber, '', ('Material ' || item_number || ' Issue to Work Order'), getPrjAccntId(_p.wo_prj_id, pc.costcat_wip_accnt_id), cc.costcat_asset_accnt_id, _itemlocSeries, pGlDistTS, NULL, pInvhistid ) INTO _invhistid FROM itemsite AS ci, itemsite AS pi, costcat AS cc, costcat AS pc, item WHERE ( (ci.itemsite_costcat_id=cc.costcat_id) AND (pi.itemsite_costcat_id=pc.costcat_id) AND (ci.itemsite_id=_p.c_itemsite_id) AND (pi.itemsite_id=_p.p_itemsite_id) AND (ci.itemsite_item_id=item_id) ); -- Create linkage to the transaction created IF (_invhistid != -1) THEN INSERT INTO womatlpost (womatlpost_womatl_id,womatlpost_invhist_id) VALUES (pWomatlid,_invhistid); END IF; -- Increase the parent W/O's WIP value by the value of the issued components UPDATE wo SET wo_wipvalue = (wo_wipvalue + (_p.cost * _p.qty)), wo_postedvalue = (wo_postedvalue + (_p.cost * _p.qty)) WHERE (wo_id=_p.womatl_wo_id); UPDATE womatl SET womatl_qtyiss = (womatl_qtyiss + itemuomtouom(_p.itemsite_item_id, NULL, _p.womatl_uom_id, _p.qty)), womatl_lastissue = pGlDistTS::DATE WHERE (womatl_id=pWomatlid); UPDATE wo SET wo_status='I' WHERE ( (wo_status <> 'I') AND (wo_id=_p.womatl_wo_id) ); RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.issuewomaterial(integer, numeric, integer, timestamp with time zone, integer) OWNER TO admin; -- -- Name: issuewomaterialbatch(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION issuewomaterialbatch(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; _itemlocSeries INTEGER; _r RECORD; _woNumber TEXT; BEGIN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; FOR _r IN SELECT womatl_id, CASE WHEN (womatl_qtyreq >= 0) THEN roundQty(itemuomfractionalbyuom(item_id, womatl_uom_id), noNeg(womatl_qtyreq - womatl_qtyiss)) ELSE roundQty(itemuomfractionalbyuom(item_id, womatl_uom_id), noNeg(womatl_qtyiss * -1)) END AS qty FROM womatl, itemsite, item WHERE ( (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (womatl_issuemethod IN ('S', 'M')) AND (womatl_wo_id=pWoid) ) LOOP IF (_r.qty > 0) THEN SELECT issueWoMaterial(_r.womatl_id, _r.qty, _itemlocSeries, TRUE) INTO _itemlocSeries; END IF; END LOOP; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.issuewomaterialbatch(integer) OWNER TO admin; -- -- Name: itemaltcapinvrat(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemaltcapinvrat(integer) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; BEGIN RETURN itemUOMRatioByType(pItemid, 'AltCapacity'); END; $_$; ALTER FUNCTION public.itemaltcapinvrat(integer) OWNER TO admin; -- -- Name: itemaltcapuom(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemaltcapuom(integer) RETURNS text LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; BEGIN RETURN itemUOMByType(pItemid, 'AltCapacity'); END; $_$; ALTER FUNCTION public.itemaltcapuom(integer) OWNER TO admin; -- -- Name: itemcapinvrat(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemcapinvrat(integer) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; BEGIN RETURN itemUOMRatioByType(pItemid, 'Capacity'); END; $_$; ALTER FUNCTION public.itemcapinvrat(integer) OWNER TO admin; -- -- Name: itemcapuom(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemcapuom(integer) RETURNS text LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; BEGIN RETURN itemUOMByType(pItemid, 'Capacity'); END; $_$; ALTER FUNCTION public.itemcapuom(integer) OWNER TO admin; -- -- Name: itemcharprice(integer, integer, text, integer, integer, numeric, integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemcharprice(integer, integer, text, integer, integer, numeric, integer, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCharid ALIAS FOR $2; pCharValue ALIAS FOR $3; pCustid ALIAS FOR $4; pShiptoid ALIAS FOR $5; pQty ALIAS FOR $6; pCurrid ALIAS FOR $7; pEffective ALIAS FOR $8; BEGIN RETURN itemCharPrice(pItemid, pCharid, pCharValue, pCustid, pShiptoid, pQty, pCurrid, CURRENT_DATE, CURRENT_DATE); END; $_$; ALTER FUNCTION public.itemcharprice(integer, integer, text, integer, integer, numeric, integer, date) OWNER TO admin; -- -- Name: itemcharprice(integer, integer, text, integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemcharprice(integer, integer, text, integer, numeric) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCharid ALIAS FOR $2; pCharValue ALIAS FOR $3; pCustid ALIAS FOR $4; pQty ALIAS FOR $5; BEGIN RETURN itemCharPrice(pItemid, pCharid, pCharValue, pCustid, -1, pQty, baseCurrId(), CURRENT_DATE); END; $_$; ALTER FUNCTION public.itemcharprice(integer, integer, text, integer, numeric) OWNER TO admin; -- -- Name: itemcharprice(integer, integer, text, integer, integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemcharprice(integer, integer, text, integer, integer, numeric) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCharid ALIAS FOR $2; pCharValue ALIAS FOR $3; pCustid ALIAS FOR $4; pShiptoid ALIAS FOR $5; pQty ALIAS FOR $6; BEGIN RETURN itemCharPrice(pItemid, pCharid, pCharValue, pCustid, pShiptoid, pQty, baseCurrId(), CURRENT_DATE); END; $_$; ALTER FUNCTION public.itemcharprice(integer, integer, text, integer, integer, numeric) OWNER TO admin; -- -- Name: itemcharprice(integer, integer, text, integer, integer, numeric, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemcharprice(integer, integer, text, integer, integer, numeric, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCharid ALIAS FOR $2; pCharValue ALIAS FOR $3; pCustid ALIAS FOR $4; pShiptoid ALIAS FOR $5; pQty ALIAS FOR $6; pCurrid ALIAS FOR $7; BEGIN RETURN itemCharPrice(pItemid, pCharid, pCharValue, pCustid, pShiptoid, pQty, pCurrid, CURRENT_DATE); END; $_$; ALTER FUNCTION public.itemcharprice(integer, integer, text, integer, integer, numeric, integer) OWNER TO admin; -- -- Name: itemcharprice(integer, integer, text, integer, integer, numeric, integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemcharprice(integer, integer, text, integer, integer, numeric, integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCharid ALIAS FOR $2; pCharValue ALIAS FOR $3; pCustid ALIAS FOR $4; pShiptoid ALIAS FOR $5; pQty ALIAS FOR $6; pCurrid ALIAS FOR $7; pEffective ALIAS FOR $8; pAsOf ALIAS FOR $9; _price NUMERIC; _sales NUMERIC; _item RECORD; _iteminvpricerat NUMERIC; BEGIN -- If the charass_value passed in is NULL, we can skip this function IF (pCharValue IS NULL) THEN RETURN 0; END IF; -- Return the itemCharPrice in the currency passed in as pCurrid -- Get a value here so we do not have to call the function several times SELECT iteminvpricerat(pItemid) INTO _iteminvpricerat; -- First get a sales price if any so we when we find other prices -- we can determine if we want that price or this price. -- Check for a Sale Price SELECT currToCurr(ipshead_curr_id, pCurrid, ipsprice_price - (ipsprice_price * cust_discntprcnt), pEffective) INTO _sales FROM ( SELECT ipsitem_ipshead_id AS ipsprice_ipshead_id, itemuomtouom(ipsitem_item_id, ipsitem_qty_uom_id, NULL, ipsitem_qtybreak) AS ipsprice_qtybreak, (ipsitemchar_price * itemuomtouomratio(ipsitem_item_id, NULL, ipsitem_price_uom_id)) * _iteminvpricerat AS ipsprice_price FROM ipsiteminfo,ipsitemchar WHERE((ipsitem_item_id=pItemid) AND (ipsitemchar_char_id=pCharid) AND (ipsitemchar_value=pCharValue) AND (ipsitemchar_ipsitem_id=ipsitem_id)) ) AS ipsprice, ipshead, sale, custinfo WHERE ( (ipsprice_ipshead_id=ipshead_id) AND (sale_ipshead_id=ipshead_id) AND (pAsOf BETWEEN sale_startdate AND sale_enddate) AND (ipsprice_qtybreak <= pQty) AND (cust_id=pCustid) ) ORDER BY ipsprice_qtybreak DESC, ipsprice_price ASC LIMIT 1; -- Check for a Customer Shipto Price SELECT currToCurr(ipshead_curr_id, pCurrid, ipsprice_price, pEffective) INTO _price FROM ( SELECT ipsitem_ipshead_id AS ipsprice_ipshead_id, itemuomtouom(ipsitem_item_id, ipsitem_qty_uom_id, NULL, ipsitem_qtybreak) AS ipsprice_qtybreak, (ipsitemchar_price * itemuomtouomratio(ipsitem_item_id, NULL, ipsitem_price_uom_id)) * _iteminvpricerat AS ipsprice_price FROM ipsiteminfo,ipsitemchar WHERE ((ipsitem_item_id=pItemid) AND (ipsitemchar_char_id=pCharid) AND (ipsitemchar_value=pCharValue) AND (ipsitemchar_ipsitem_id=ipsitem_id)) ) AS ipsprice, ipshead, ipsass WHERE ( (ipsprice_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsprice_qtybreak <= pQty) AND (ipsass_shipto_id != -1) AND (ipsass_shipto_id=pShiptoid) ) ORDER BY ipsprice_qtybreak DESC, ipsprice_price ASC LIMIT 1; IF (_price IS NOT NULL) THEN IF ((_sales IS NOT NULL) AND (_sales < _price)) THEN RETURN _sales; END IF; RETURN _price; END IF; -- Check for a Customer Shipto Pattern Price SELECT currToCurr(ipshead_curr_id, pCurrid, ipsprice_price, pEffective) INTO _price FROM ( SELECT ipsitem_ipshead_id AS ipsprice_ipshead_id, itemuomtouom(ipsitem_item_id, ipsitem_qty_uom_id, NULL, ipsitem_qtybreak) AS ipsprice_qtybreak, (ipsitemchar_price * itemuomtouomratio(ipsitem_item_id, NULL, ipsitem_price_uom_id)) * _iteminvpricerat AS ipsprice_price FROM ipsiteminfo,ipsitemchar WHERE ((ipsitem_item_id=pItemid) AND (ipsitemchar_char_id=pCharid) AND (ipsitemchar_value=pCharValue) AND (ipsitemchar_ipsitem_id=ipsitem_id)) ) AS ipsprice, ipshead, ipsass, shiptoinfo WHERE ( (ipsprice_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsprice_qtybreak <= pQty) AND (COALESCE(length(ipsass_shipto_pattern), 0) > 0) AND (shipto_num ~ ipsass_shipto_pattern) AND (ipsass_cust_id=pCustid) AND (shipto_id=pShiptoid) ) ORDER BY ipsprice_qtybreak DESC, ipsprice_price ASC LIMIT 1; IF (_price IS NOT NULL) THEN IF ((_sales IS NOT NULL) AND (_sales < _price)) THEN RETURN _sales; END IF; RETURN _price; END IF; -- Check for a Customer Price SELECT currToCurr(ipshead_curr_id, pCurrid, ipsprice_price, pEffective) INTO _price FROM ( SELECT ipsitem_ipshead_id AS ipsprice_ipshead_id, itemuomtouom(ipsitem_item_id, ipsitem_qty_uom_id, NULL, ipsitem_qtybreak) AS ipsprice_qtybreak, (ipsitemchar_price * itemuomtouomratio(ipsitem_item_id, NULL, ipsitem_price_uom_id)) * _iteminvpricerat AS ipsprice_price FROM ipsiteminfo,ipsitemchar WHERE ((ipsitem_item_id=pItemid) AND (ipsitemchar_char_id=pCharid) AND (ipsitemchar_value=pCharValue) AND (ipsitemchar_ipsitem_id=ipsitem_id)) ) AS ipsprice, ipshead, ipsass WHERE ( (ipsprice_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsprice_qtybreak <= pQty) AND (COALESCE(length(ipsass_shipto_pattern), 0) = 0) AND (ipsass_cust_id=pCustid) ) ORDER BY ipsprice_qtybreak DESC, ipsprice_price ASC LIMIT 1; IF (_price IS NOT NULL) THEN IF ((_sales IS NOT NULL) AND (_sales < _price)) THEN RETURN _sales; END IF; RETURN _price; END IF; -- Check for a Customer Type Price SELECT currToCurr(ipshead_curr_id, pCurrid, ipsprice_price, pEffective) INTO _price FROM ( SELECT ipsitem_ipshead_id AS ipsprice_ipshead_id, itemuomtouom(ipsitem_item_id, ipsitem_qty_uom_id, NULL, ipsitem_qtybreak) AS ipsprice_qtybreak, (ipsitemchar_price * itemuomtouomratio(ipsitem_item_id, NULL, ipsitem_price_uom_id)) * _iteminvpricerat AS ipsprice_price FROM ipsiteminfo,ipsitemchar WHERE((ipsitem_item_id=pItemid) AND (ipsitemchar_char_id=pCharid) AND (ipsitemchar_value=pCharValue) AND (ipsitemchar_ipsitem_id=ipsitem_id)) ) AS ipsprice, ipshead, ipsass, custinfo WHERE ( (ipsprice_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (ipsass_custtype_id=cust_custtype_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsprice_qtybreak <= pQty) AND (cust_id=pCustid) ) ORDER BY ipsprice_qtybreak DESC, ipsprice_price ASC LIMIT 1; IF (_price IS NOT NULL) THEN IF ((_sales IS NOT NULL) AND (_sales < _price)) THEN RETURN _sales; END IF; RETURN _price; END IF; -- Check for a Customer Type Pattern Price SELECT currToCurr(ipshead_curr_id, pCurrid, ipsprice_price, pEffective) INTO _price FROM ( SELECT ipsitem_ipshead_id AS ipsprice_ipshead_id, itemuomtouom(ipsitem_item_id, ipsitem_qty_uom_id, NULL, ipsitem_qtybreak) AS ipsprice_qtybreak, (ipsitemchar_price * itemuomtouomratio(ipsitem_item_id, NULL, ipsitem_price_uom_id)) * _iteminvpricerat AS ipsprice_price FROM ipsiteminfo,ipsitemchar WHERE ((ipsitem_item_id=pItemid) AND (ipsitemchar_char_id=pCharid) AND (ipsitemchar_value=pCharValue) AND (ipsitemchar_ipsitem_id=ipsitem_id)) ) AS ipsprice, ipshead, ipsass, custtype, custinfo WHERE ( (ipsprice_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (coalesce(length(ipsass_custtype_pattern), 0) > 0) AND (custtype_code ~ ipsass_custtype_pattern) AND (cust_custtype_id=custtype_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsprice_qtybreak <= pQty) AND (cust_id=pCustid) ) ORDER BY ipsprice_qtybreak DESC, ipsprice_price ASC LIMIT 1; IF (_price IS NOT NULL) THEN IF ((_sales IS NOT NULL) AND (_sales < _price)) THEN RETURN _sales; END IF; RETURN _price; END IF; -- If we have not found another price yet and we have a -- sales price we will use that. IF (_sales IS NOT NULL) THEN RETURN _sales; END IF; -- Check for a list price SELECT MIN(currToLocal(pCurrid, charass_price - (charass_price * COALESCE(cust_discntprcnt, 0)), pEffective)) AS price, item_exclusive INTO _item FROM charass,item LEFT OUTER JOIN custinfo ON (cust_id=pCustid) WHERE ((item_id=pItemid) AND (charass_char_id=pCharid) AND (charass_value=pCharValue) AND (charass_target_type='I') AND (charass_target_id=item_id)) GROUP BY item_exclusive; IF (FOUND) THEN IF (NOT _item.item_exclusive) THEN IF (_item.price < 0) THEN RETURN 0; ELSE RETURN _item.price; END IF; ELSE RETURN 0; END IF; ELSE RETURN 0; END IF; END; $_$; ALTER FUNCTION public.itemcharprice(integer, integer, text, integer, integer, numeric, integer, date, date) OWNER TO admin; -- -- Name: itemcharvalue(integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemcharvalue(integer, text) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCharName ALIAS FOR $2; _value TEXT; BEGIN SELECT charass_value INTO _value FROM charass, char WHERE ( (charass_char_id=char_id) AND (charass_target_type='I') AND (charass_target_id=pItemid) AND (char_name=pCharName) ); IF (NOT FOUND) THEN _value = ''; END IF; RETURN _value; END; $_$; ALTER FUNCTION public.itemcharvalue(integer, text) OWNER TO admin; -- -- Name: itemcost(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemcost(integer) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; _cost NUMERIC; BEGIN SELECT CASE WHEN (itemsite_costmethod='A' AND itemsite_qtyonhand != 0.0) THEN (itemsite_value / itemsite_qtyonhand) WHEN (itemsite_costmethod='A' AND itemsite_qtyonhand = 0.0) THEN 0.0 WHEN (itemsite_costmethod='N') THEN 0.0 ELSE stdCost(itemsite_item_id) END INTO _cost FROM itemsite WHERE(itemsite_id=pItemsiteid); RETURN _cost; END; $_$; ALTER FUNCTION public.itemcost(integer) OWNER TO admin; -- -- Name: iteminventoryuominuse(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION iteminventoryuominuse(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; _uomid INTEGER; _result INTEGER; BEGIN SELECT item_inv_uom_id INTO _uomid FROM item WHERE(item_id=pItemid); SELECT itemuomconv_id INTO _result FROM itemuomconv WHERE(itemuomconv_item_id=pItemid) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; SELECT itemsite_id INTO _result FROM itemsite WHERE ( (itemsite_item_id=pItemid) AND ((itemsite_qtyonhand <> 0) OR (itemsite_nnqoh <> 0)) ) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; RETURN FALSE; END; $_$; ALTER FUNCTION public.iteminventoryuominuse(integer) OWNER TO admin; -- -- Name: iteminvpricerat(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION iteminvpricerat(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; _fromUomid INTEGER; _toUomid INTEGER; _ratio NUMERIC; BEGIN IF(pItemid IS NULL) THEN RETURN 1.0; END IF; SELECT item_inv_uom_id, item_price_uom_id INTO _fromUomid, _toUomid FROM item WHERE(item_id=pItemid); IF(NOT FOUND) THEN RAISE EXCEPTION 'No item record found for item_id %', pItemid; END IF; IF(_fromUomid = _toUomid) THEN RETURN 1.0; END IF; -- Return the ration as inventory / price SELECT CASE WHEN(itemuomconv_from_uom_id=_fromUomid) THEN itemuomconv_from_value / itemuomconv_to_value ELSE itemuomconv_to_value / itemuomconv_from_value END INTO _ratio FROM itemuomconv WHERE((((itemuomconv_from_uom_id=_fromUomid) AND (itemuomconv_to_uom_id=_toUomid)) OR ((itemuomconv_from_uom_id=_toUomid) AND (itemuomconv_to_uom_id=_fromUomid))) AND (itemuomconv_item_id=pItemid)); IF(NOT FOUND) THEN RAISE EXCEPTION 'No itemuomconv record found for item_id % to item_price_uomid %', pItemid, _toUomid; END IF; RETURN _ratio; END; $_$; ALTER FUNCTION public.iteminvpricerat(integer) OWNER TO admin; -- -- Name: itemipsprice(integer, integer, integer, numeric, integer, integer, integer, date, date, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemipsprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pqtyuom integer, ppriceuom integer, pcurrid integer, peffective date, pasof date, psiteid integer) RETURNS SETOF itemprice LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row itemprice%ROWTYPE; _sale RECORD; _ips RECORD; _item RECORD; _cust RECORD; _shipto RECORD; _iteminvpricerat NUMERIC := 1.0; _listprice NUMERIC := 0.0; _qty NUMERIC; _asof DATE; _wholesalepricecosting BOOLEAN := false; _long30markups BOOLEAN := false; _itempricingprecedence BOOLEAN := false; BEGIN _wholesalepricecosting := fetchMetricBool('WholesalePriceCosting'); _long30markups := fetchMetricBool('Long30Markups'); _itempricingprecedence := fetchMetricBool('ItemPricingPrecedence'); -- Return the itemPrice in the currency passed in as pCurrid _qty := itemuomtouom(pItemid, pQtyUOM, NULL, pQty); -- If no as of passed, use current date _asof := COALESCE(pAsOf, CURRENT_DATE); -- Cache Item, Customer and Shipto SELECT item.*, itemCost(itemsite_id) AS invcost INTO _item FROM item LEFT OUTER JOIN itemsite ON (itemsite_item_id=item_id AND itemsite_warehous_id=pSiteid) WHERE (item_id=pItemid); SELECT * INTO _cust FROM custinfo JOIN custtype ON (custtype_id=cust_custtype_id) WHERE (cust_id=pCustid); SELECT * INTO _shipto FROM shiptoinfo WHERE (shipto_id=pShiptoid); -- Get a value here so we do not have to call the function several times SELECT itemuomtouomratio(pItemid, pPriceUOM, _item.item_price_uom_id) AS ratio INTO _iteminvpricerat; -- First get a sales price if any so we when we find other prices -- we can determine if we want that price or this price. -- Check for a Sale Price SELECT INTO _sale currToCurr(ipshead_curr_id, pCurrid, ipsprice_price, pEffective) AS rightprice, ipsitem_type AS righttype FROM ( SELECT ipsitem_ipshead_id AS ipsprice_ipshead_id, ipsitem_type, CASE WHEN (ipsitem_type = 'N') THEN (ipsitem_price * itemuomtouomratio(_item.item_id, pPriceUOM, ipsitem_price_uom_id)) WHEN (ipsitem_type = 'D') THEN noNeg(_item.item_listprice - (_item.item_listprice * ipsitem_discntprcnt) - ipsitem_fixedamtdiscount) * _iteminvpricerat WHEN ((ipsitem_type = 'M') AND (ipsitem_discntprcnt <= 0.5) AND _long30markups AND _wholesalepricecosting) THEN (_item.item_listcost / (1.0 - ipsitem_discntprcnt) + ipsitem_fixedamtdiscount) * _iteminvpricerat WHEN ((ipsitem_type = 'M') AND (ipsitem_discntprcnt <= 0.5) AND _long30markups) THEN (_item.invcost / (1.0 - ipsitem_discntprcnt) + ipsitem_fixedamtdiscount) * _iteminvpricerat WHEN (ipsitem_type = 'M' AND _wholesalepricecosting) THEN (_item.item_listcost + (_item.item_listcost * ipsitem_discntprcnt) + ipsitem_fixedamtdiscount) * _iteminvpricerat WHEN (ipsitem_type = 'M') THEN (_item.invcost + (_item.invcost * ipsitem_discntprcnt) + ipsitem_fixedamtdiscount) * _iteminvpricerat ELSE 0.00 END AS ipsprice_price, CASE WHEN (ipsitem_item_id=_item.item_id) THEN itemuomtouom(ipsitem_item_id, ipsitem_qty_uom_id, NULL, ipsitem_qtybreak) ELSE ipsitem_qtybreak END AS ipsprice_qtybreak, (COALESCE(ipsitem_price_uom_id, -1)=COALESCE(pPriceUOM,-1)) AS uommatched, CASE WHEN (_itempricingprecedence) THEN (COALESCE(ipsitem_item_id, -1)=_item.item_id) ELSE true END AS itemmatched FROM ipsiteminfo WHERE(ipsitem_item_id=_item.item_id) OR (ipsitem_prodcat_id=_item.item_prodcat_id) ) AS ipsprice, ipshead, ipsass, sale WHERE ( (ipsprice_ipshead_id=ipshead_id) AND (sale_ipshead_id=ipsprice_ipshead_id) AND (_asof BETWEEN sale_startdate AND sale_enddate) AND (ipsprice_qtybreak <= _qty) AND (ipsass_ipshead_id=ipshead_id) AND ( (ipsass_shipto_id=_shipto.shipto_id) OR ((COALESCE(LENGTH(ipsass_shipto_pattern), 0) > 0) AND (_shipto.shipto_num ~ ipsass_shipto_pattern)) OR (ipsass_cust_id=_cust.cust_id) OR (ipsass_custtype_id=_cust.cust_custtype_id) OR ((COALESCE(LENGTH(ipsass_custtype_pattern), 0) > 0) AND (_cust.custtype_code ~ ipsass_custtype_pattern)) ) ) ORDER BY itemmatched DESC, uommatched DESC, ipsprice_qtybreak DESC, ipsprice_price ASC LIMIT 1; -- Find the best Price Schedule Price SELECT INTO _ips currToCurr(ipshead_curr_id, pCurrid, protoprice, pEffective) AS rightprice, ipsitem_type AS righttype FROM ( SELECT *, CASE WHEN (COALESCE(ipsass_shipto_id, -1) > 0) THEN 1 WHEN (COALESCE(LENGTH(ipsass_shipto_pattern), 0) > 0) THEN 2 WHEN (COALESCE(ipsass_cust_id, -1) > 0) THEN 3 WHEN (COALESCE(ipsass_custtype_id, -1) > 0) THEN 4 WHEN (COALESCE(LENGTH(ipsass_custtype_pattern), 0) > 0) THEN 5 ELSE 99 END AS assignseq, CASE WHEN (ipsitem_type = 'N') THEN (ipsitem_price * itemuomtouomratio(_item.item_id, pPriceUOM, ipsitem_price_uom_id)) WHEN (ipsitem_type = 'D') THEN noNeg(_item.item_listprice - (_item.item_listprice * ipsitem_discntprcnt) - ipsitem_fixedamtdiscount) * _iteminvpricerat WHEN ((ipsitem_type = 'M') AND (ipsitem_discntprcnt <= 0.5) AND _long30markups AND _wholesalepricecosting) THEN (_item.item_listcost / (1.0 - ipsitem_discntprcnt) + ipsitem_fixedamtdiscount) * _iteminvpricerat WHEN ((ipsitem_type = 'M') AND (ipsitem_discntprcnt <= 0.5) AND _long30markups) THEN (_item.invcost / (1.0 - ipsitem_discntprcnt) + ipsitem_fixedamtdiscount) * _iteminvpricerat WHEN (ipsitem_type = 'M' AND _wholesalepricecosting) THEN (_item.item_listcost + (_item.item_listcost * ipsitem_discntprcnt) + ipsitem_fixedamtdiscount) * _iteminvpricerat WHEN (ipsitem_type = 'M') THEN (_item.invcost + (_item.invcost * ipsitem_discntprcnt) + ipsitem_fixedamtdiscount) * _iteminvpricerat ELSE 0.00 END AS protoprice, CASE WHEN (ipsitem_item_id=_item.item_id) THEN itemuomtouom(ipsitem_item_id, ipsitem_qty_uom_id, NULL, ipsitem_qtybreak) ELSE ipsitem_qtybreak END AS protoqtybreak, (COALESCE(ipsitem_price_uom_id, -1)=COALESCE(pPriceUOM,-1)) AS uommatched, CASE WHEN (_itempricingprecedence) THEN (COALESCE(ipsitem_item_id, -1)=_item.item_id) ELSE true END AS itemmatched FROM ipsass JOIN ipshead ON (ipshead_id=ipsass_ipshead_id) JOIN ipsiteminfo ON (ipsitem_ipshead_id=ipshead_id) WHERE ((ipsitem_item_id=_item.item_id) OR (ipsitem_prodcat_id=_item.item_prodcat_id)) AND (_asof BETWEEN ipshead_effective AND ipshead_expires) AND ((ipsitem_warehous_id=pSiteid) OR (ipsitem_warehous_id IS NULL)) AND ( (ipsass_shipto_id=_shipto.shipto_id) OR ((COALESCE(LENGTH(ipsass_shipto_pattern), 0) > 0) AND (_shipto.shipto_num ~ ipsass_shipto_pattern)) OR (ipsass_cust_id=_cust.cust_id) OR (ipsass_custtype_id=_cust.cust_custtype_id) OR ((COALESCE(LENGTH(ipsass_custtype_pattern), 0) > 0) AND (_cust.custtype_code ~ ipsass_custtype_pattern)) ) ) AS proto WHERE (protoqtybreak <= pQty) ORDER BY assignseq, itemmatched DESC, protoqtybreak DESC, rightprice LIMIT 1; IF (_ips.rightprice IS NOT NULL) THEN IF ((_sale.rightprice IS NOT NULL) AND (_sale.rightprice < _ips.rightprice)) THEN RAISE DEBUG 'itemprice, item=%, cust=%, shipto=%, sale price= %', pItemid, pCustid, pShiptoid, _sale.rightprice; _row.itemprice_price := _sale.rightprice; _row.itemprice_type := _sale.righttype; RETURN NEXT _row; END IF; RAISE DEBUG 'itemprice, item=%, cust=%, shipto=%, schedule price= %', pItemid, pCustid, pShiptoid, _ips.rightprice; _row.itemprice_price := _ips.rightprice; _row.itemprice_type := _ips.righttype; RETURN NEXT _row; END IF; -- If item is exclusive then list list price does not apply IF (_item.item_exclusive) THEN RAISE DEBUG 'itemprice, item=%, cust=%, shipto=%, item exclusive, price=-9999', pItemid, pCustid, pShiptoid; _row.itemprice_price := -9999.0; _row.itemprice_type := ''; RETURN NEXT _row; END IF; -- Check for a list price _listprice := noNeg(currToLocal(pCurrid, _item.item_listprice - (_item.item_listprice * COALESCE(_cust.cust_discntprcnt, 0.0)), pEffective) * itemuomtouomratio(pItemid, pPriceUOM, _item.item_price_uom_id)); RAISE DEBUG 'itemprice, item=%, cust=%, shipto=%, list price= %', pItemid, pCustid, pShiptoid, _listprice; _row.itemprice_price := _listprice; _row.itemprice_type := 'P'; RETURN NEXT _row; RETURN; END; $$; ALTER FUNCTION public.itemipsprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pqtyuom integer, ppriceuom integer, pcurrid integer, peffective date, pasof date, psiteid integer) OWNER TO admin; -- -- Name: itemlocdistqty(text, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemlocdistqty(text, integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTypes ALIAS FOR $1; pLocationid ALIAS FOR $2; pParentid ALIAS FOR $3; _qty NUMERIC := 0; _tempQty NUMERIC; BEGIN IF (strpos(pTypes, 'L') > 0) THEN SELECT COALESCE(SUM(itemlocdist_qty), 0) INTO _tempQty FROM itemlocdist WHERE ( (itemlocdist_source_type='L') AND (itemlocdist_source_id=pLocationid) AND (itemlocdist_itemlocdist_id=pParentid) ); _qty := (_qty + _tempQty); END IF; IF (strpos(pTypes, 'I') > 0) THEN SELECT COALESCE(SUM(itemlocdist_qty), 0) INTO _tempQty FROM itemlocdist, itemloc WHERE ( (itemlocdist_source_type='I') AND (itemlocdist_source_id=itemloc_id) AND (itemloc_location_id=pLocationid) AND (itemlocdist_itemlocdist_id=pParentid) ); _qty := (_qty + _tempQty); END IF; RETURN _qty; END; $_$; ALTER FUNCTION public.itemlocdistqty(text, integer, integer) OWNER TO admin; -- -- Name: itemlocdistqty(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemlocdistqty(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLocationid ALIAS FOR $1; pParentid ALIAS FOR $2; _qty NUMERIC; _tempQty NUMERIC; BEGIN SELECT COALESCE(SUM(itemlocdist_qty), 0) INTO _qty FROM itemlocdist WHERE ( (itemlocdist_source_type='L') AND (itemlocdist_source_id=pLocationid) AND (itemlocdist_itemlocdist_id=pParentid) ); SELECT COALESCE(SUM(itemlocdist_qty), 0) INTO _tempQty FROM itemlocdist, itemloc WHERE ( (itemlocdist_source_type='I') AND (itemlocdist_source_id=itemloc_id) AND (itemloc_location_id=pLocationid) AND (itemlocdist_itemlocdist_id=pParentid) ); _qty := (_qty + _tempQty); RETURN _qty; END; $_$; ALTER FUNCTION public.itemlocdistqty(integer, integer) OWNER TO admin; -- -- Name: itemprice(integer, integer, integer, numeric, integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pcurrid integer, peffective date) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _item RECORD; BEGIN SELECT item_inv_uom_id, item_price_uom_id INTO _item FROM item WHERE(item_id=pItemid); IF (FOUND) THEN RETURN itemPrice(pItemid, pCustid, pShiptoid, pQty, _item.item_inv_uom_id, _item.item_price_uom_id, pCurrid, pEffective); END IF; RETURN -9999; END; $$; ALTER FUNCTION public.itemprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pcurrid integer, peffective date) OWNER TO admin; -- -- Name: itemprice(integer, integer, integer, numeric, integer, integer, integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pqtyuom integer, ppriceuom integer, pcurrid integer, peffective date) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN RETURN itemPrice(pItemid, pCustid, pShiptoid, pQty, pQtyUOM, pPriceUOM, pCurrid, pEffective, CURRENT_DATE); END; $$; ALTER FUNCTION public.itemprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pqtyuom integer, ppriceuom integer, pcurrid integer, peffective date) OWNER TO admin; -- -- Name: itemprice(integer, integer, integer, numeric, integer, integer, integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pqtyuom integer, ppriceuom integer, pcurrid integer, peffective date, pasof date) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN RETURN itemPrice(pItemid, pCustid, pShiptoid, pQty, pQtyUOM, pPriceUOM, pCurrid, pEffective, pAsOf, NULL); END; $$; ALTER FUNCTION public.itemprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pqtyuom integer, ppriceuom integer, pcurrid integer, peffective date, pasof date) OWNER TO admin; -- -- Name: itemprice(integer, integer, integer, numeric, integer, integer, integer, date, date, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pqtyuom integer, ppriceuom integer, pcurrid integer, peffective date, pasof date, psiteid integer) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; BEGIN SELECT * FROM itemIpsPrice(pItemid, pCustid, pShiptoid, pQty, pQtyUOM, pPriceUOM, pCurrid, pEffective, pAsOf, pSiteid) INTO _r; RETURN _r.itemprice_price; END; $$; ALTER FUNCTION public.itemprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pqtyuom integer, ppriceuom integer, pcurrid integer, peffective date, pasof date, psiteid integer) OWNER TO admin; -- -- Name: itemsellinguom(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemsellinguom(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; BEGIN RETURN itemUOMByType(pItemid, 'Selling'); END; $_$; ALTER FUNCTION public.itemsellinguom(integer) OWNER TO admin; -- -- Name: itemsrcprice(integer, numeric, integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemsrcprice(pitemsrcid integer, pqty numeric, pcurrid integer, peffective date) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _price NUMERIC := 0.0; BEGIN SELECT itemsrcPrice(pItemsrcid, -1, FALSE, pQty, pCurrid, pEffective) INTO _price; RETURN _price; END; $$; ALTER FUNCTION public.itemsrcprice(pitemsrcid integer, pqty numeric, pcurrid integer, peffective date) OWNER TO admin; -- -- Name: itemsrcprice(integer, integer, boolean, numeric, integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemsrcprice(pitemsrcid integer, psiteid integer, pdropship boolean, pqty numeric, pcurrid integer, peffective date) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _price NUMERIC := 0.0; _r RECORD; _effective DATE; BEGIN -- If no pEffective passed, use current date _effective := COALESCE(pEffective, CURRENT_DATE); -- Cache Itemsrc and Item SELECT * INTO _r FROM itemsrc JOIN item ON (item_id=itemsrc_item_id) WHERE (itemsrc_id=pItemsrcid); IF (NOT FOUND) THEN RAISE EXCEPTION 'itemsrc % not found.', pItemsrcid; END IF; -- Determine price SELECT currToCurr(itemsrcp_curr_id, pCurrid, price, _effective) INTO _price FROM ( SELECT *, CASE itemsrcp_type WHEN ('N') THEN itemsrcp_price WHEN ('D') THEN (_r.item_listcost - (_r.item_listcost * itemsrcp_discntprcnt) - itemsrcp_fixedamtdiscount) ELSE 0.0 END AS price FROM itemsrcp WHERE ( (itemsrcp_itemsrc_id=_r.itemsrc_id) AND ((itemsrcp_warehous_id=pSiteid) OR (itemsrcp_warehous_id=-1)) AND ((itemsrcp_dropship=pDropship) OR (NOT itemsrcp_dropship)) AND (itemsrcp_qtybreak <= pQty) ) ORDER BY itemsrcp_qtybreak DESC LIMIT 1 ) AS data ; RETURN _price; END; $$; ALTER FUNCTION public.itemsrcprice(pitemsrcid integer, psiteid integer, pdropship boolean, pqty numeric, pcurrid integer, peffective date) OWNER TO admin; -- -- Name: itemuombytype(integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemuombytype(integer, text) RETURNS text LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pUomtype ALIAS FOR $2; _uom TEXT; BEGIN SELECT uom_name INTO _uom FROM ( SELECT uom_name FROM item JOIN itemuomconv ON (itemuomconv_item_id=item_id) JOIN itemuom ON (itemuom_itemuomconv_id=itemuomconv_id) JOIN uomtype ON (itemuom_uomtype_id=uomtype_id) JOIN uom ON (itemuomconv_to_uom_id=uom_id) WHERE((item_id=pItemid) AND (uomtype_name=pUomtype) AND (item_inv_uom_id != itemuomconv_to_uom_id)) UNION SELECT uom_name FROM item JOIN itemuomconv ON (itemuomconv_item_id=item_id) JOIN itemuom ON (itemuom_itemuomconv_id=itemuomconv_id) JOIN uomtype ON (itemuom_uomtype_id=uomtype_id) JOIN uom ON (itemuomconv_from_uom_id=uom_id) WHERE((item_id=pItemid) AND (uomtype_name=pUomtype) AND (item_inv_uom_id != itemuomconv_from_uom_id))) data LIMIT 1; IF (NOT FOUND) THEN SELECT uom_name INTO _uom FROM item JOIN uom ON (item_inv_uom_id=uom_id) WHERE(item_id=pItemid); END IF; RETURN _uom; END; $_$; ALTER FUNCTION public.itemuombytype(integer, text) OWNER TO admin; -- -- Name: itemuomfractionalbytype(integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemuomfractionalbytype(integer, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pUomtype ALIAS FOR $2; _frac BOOLEAN; BEGIN SELECT itemuomconv_fractional INTO _frac FROM item JOIN itemuomconv ON (itemuomconv_item_id=item_id) JOIN itemuom ON (itemuom_itemuomconv_id=itemuomconv_id) JOIN uomtype ON (itemuom_uomtype_id=uomtype_id) WHERE((item_id=pItemid) AND (uomtype_name=pUomtype)) LIMIT 1; IF (NOT FOUND) THEN SELECT item_fractional INTO _frac FROM item JOIN uom ON (item_inv_uom_id=uom_id) WHERE(item_id=pItemid); END IF; RETURN _frac; END; $_$; ALTER FUNCTION public.itemuomfractionalbytype(integer, text) OWNER TO admin; -- -- Name: itemuomfractionalbyuom(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemuomfractionalbyuom(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pUomid ALIAS FOR $2; _frac BOOLEAN; BEGIN SELECT itemuomconv_fractional INTO _frac FROM item JOIN itemuomconv ON (itemuomconv_item_id=item_id) WHERE((item_id=pItemid) AND ((itemuomconv_from_uom_id=item_inv_uom_id AND itemuomconv_to_uom_id=pUomid) OR (itemuomconv_to_uom_id=item_inv_uom_id AND itemuomconv_from_uom_id=pUomid))) LIMIT 1; IF (NOT FOUND) THEN SELECT item_fractional INTO _frac FROM item JOIN uom ON (item_inv_uom_id=uom_id) WHERE(item_id=pItemid); END IF; RETURN _frac; END; $_$; ALTER FUNCTION public.itemuomfractionalbyuom(integer, integer) OWNER TO admin; -- -- Name: itemuomratiobytype(integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemuomratiobytype(integer, text) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pUomtype ALIAS FOR $2; _ratio NUMERIC; BEGIN -- Return the ration as alternate / inventory uom SELECT CASE WHEN(itemuomconv_from_uom_id=item_inv_uom_id) THEN itemuomconv_to_value / itemuomconv_from_value ELSE itemuomconv_from_value / itemuomconv_to_value END INTO _ratio FROM item JOIN itemuomconv ON (itemuomconv_item_id=item_id) JOIN itemuom ON (itemuom_itemuomconv_id=itemuomconv_id) JOIN uomtype ON (itemuom_uomtype_id=uomtype_id) WHERE((item_id=pItemid) AND (uomtype_name=pUomtype)) LIMIT 1; IF (NOT FOUND) THEN _ratio := 1.0; END IF; RETURN _ratio; END; $_$; ALTER FUNCTION public.itemuomratiobytype(integer, text) OWNER TO admin; -- -- Name: itemuomtouom(integer, integer, integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemuomtouom(integer, integer, integer, numeric) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN itemuomtouom($1, $2, $3, $4, 'qty'); END; $_$; ALTER FUNCTION public.itemuomtouom(integer, integer, integer, numeric) OWNER TO admin; -- -- Name: itemuomtouom(integer, integer, integer, numeric, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemuomtouom(pitemid integer, puomidfrom integer, puomidto integer, pqtyfrom numeric, plocale text) RETURNS numeric LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _uomidFrom INTEGER; _uomidTo INTEGER; _uomidInv INTEGER; _valueFrom NUMERIC := 0.0; _valueTo NUMERIC := 0.0; _value NUMERIC := 0.0; _item RECORD; _conv RECORD; _frac BOOLEAN := FALSE; BEGIN SELECT item_inv_uom_id, item_fractional INTO _item FROM item WHERE(item_id=pItemid); IF(NOT FOUND) THEN RAISE EXCEPTION 'No item record was found for item id %', pItemid; END IF; _uomidFrom := COALESCE(pUomidFrom, _item.item_inv_uom_id); _uomidTo := COALESCE(pUomidTo, _item.item_inv_uom_id); _uomidInv := _item.item_inv_uom_id; -- Should we round the qty here or not? IF(_uomidFrom = _uomidTo) THEN -- Both from/to are the same. If it is the item inv uom -- then use the item fractional value otherwise assume -- it is fractional for now so the user gets the same value back. IF(_uomidFrom = _item.item_inv_uom_id) THEN _frac := _item.item_fractional; ELSE _frac := true; END IF; RETURN roundLocale(_frac, pQtyFrom, pLocale); END IF; -- Try a direct conversion SELECT itemuomconv_from_uom_id, itemuomconv_from_value, itemuomconv_to_uom_id, itemuomconv_to_value, itemuomconv_fractional INTO _conv FROM itemuomconv WHERE(((itemuomconv_from_uom_id=_uomidFrom AND itemuomconv_to_uom_id=_uomidTo) OR (itemuomconv_from_uom_id=_uomidTo AND itemuomconv_to_uom_id=_uomidFrom)) AND (itemuomconv_item_id=pItemid)); IF(FOUND) THEN IF(_conv.itemuomconv_from_uom_id=_uomidFrom) THEN _valueFrom := _conv.itemuomconv_from_value; _valueTo := _conv.itemuomconv_to_value; ELSE _valueFrom := _conv.itemuomconv_to_value; _valueTo := _conv.itemuomconv_from_value; END IF; -- If we are converting to the item inv uom use the item fractional value -- otherwise use the conversion fractional value. if(_uomidTo = _uomidInv) THEN _frac := _item.item_fractional; ELSE _frac := _conv.itemuomconv_fractional; END IF; _value := roundLocale(_frac, ((_valueTo/_valueFrom) * pQtyFrom), pLocale); ELSE -- Try to convert the from uom to the inventory uom SELECT itemuomconv_from_uom_id, itemuomconv_from_value, itemuomconv_to_uom_id, itemuomconv_to_value, itemuomconv_fractional INTO _conv FROM itemuomconv WHERE(((itemuomconv_from_uom_id=_uomidFrom AND itemuomconv_to_uom_id=_uomidInv) OR (itemuomconv_from_uom_id=_uomidInv AND itemuomconv_to_uom_id=_uomidFrom)) AND (itemuomconv_item_id=pItemid)); IF(NOT FOUND) THEN RAISE EXCEPTION 'A conversion for item_id % from uom_id % to inv_uom_id % was not found.', pItemid, _uomidFrom, _uomidInv; END IF; IF(_conv.itemuomconv_from_uom_id=_uomidInv) THEN _valueFrom := _conv.itemuomconv_from_value; _valueTo := _conv.itemuomconv_to_value; ELSE _valueFrom := _conv.itemuomconv_to_value; _valueTo := _conv.itemuomconv_from_value; END IF; _value := (_valueTo / _valueFrom); IF (_conv.itemuomconv_fractional OR _item.item_fractional) THEN _frac := TRUE; END IF; -- Try to convert the to uom to the inventory uom SELECT itemuomconv_from_uom_id, itemuomconv_from_value, itemuomconv_to_uom_id, itemuomconv_to_value, itemuomconv_fractional INTO _conv FROM itemuomconv WHERE(((itemuomconv_from_uom_id=_uomidInv AND itemuomconv_to_uom_id=_uomidTo) OR (itemuomconv_from_uom_id=_uomidTo AND itemuomconv_to_uom_id=_uomidInv)) AND (itemuomconv_item_id=pItemid)); IF(NOT FOUND) THEN RAISE EXCEPTION 'A conversion for item_id % from uom_id % to inv_uom_id % was not found.', pItemid, _uomidTo, _uomidInv; END IF; IF(_conv.itemuomconv_from_uom_id=_uomidInv) THEN _valueFrom := _conv.itemuomconv_from_value; _valueTo := _conv.itemuomconv_to_value; ELSE _valueFrom := _conv.itemuomconv_to_value; _valueTo := _conv.itemuomconv_from_value; END IF; _value := _value * (_valueTo / _valueFrom); IF (_conv.itemuomconv_fractional OR _item.item_fractional) THEN _frac := TRUE; END IF; _value := roundLocale(_frac, (_value * pQtyFrom), pLocale); END IF; RETURN _value; END; $$; ALTER FUNCTION public.itemuomtouom(pitemid integer, puomidfrom integer, puomidto integer, pqtyfrom numeric, plocale text) OWNER TO admin; -- -- Name: itemuomtouomratio(integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION itemuomtouomratio(pitemid integer, puomidfrom integer, puomidto integer) RETURNS numeric LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _uomidFrom INTEGER; _uomidTo INTEGER; _uomidInv INTEGER; _valueFrom NUMERIC := 0.0; _valueTo NUMERIC := 0.0; _value NUMERIC := 0.0; _item RECORD; _conv RECORD; BEGIN SELECT item_inv_uom_id INTO _item FROM item WHERE(item_id=pItemid); IF(NOT FOUND) THEN RAISE EXCEPTION 'No item record was found for item id %', pItemid; END IF; _uomidFrom := COALESCE(pUomidFrom, _item.item_inv_uom_id); _uomidTo := COALESCE(pUomidTo, _item.item_inv_uom_id); _uomidInv := _item.item_inv_uom_id; IF(_uomidFrom = _uomidTo) THEN RETURN 1.0; END IF; -- Try a direct conversion SELECT itemuomconv_from_uom_id, itemuomconv_from_value, itemuomconv_to_uom_id, itemuomconv_to_value INTO _conv FROM itemuomconv WHERE(((itemuomconv_from_uom_id=_uomidFrom AND itemuomconv_to_uom_id=_uomidTo) OR (itemuomconv_from_uom_id=_uomidTo AND itemuomconv_to_uom_id=_uomidFrom)) AND (itemuomconv_item_id=pItemid)); IF(FOUND) THEN IF(_conv.itemuomconv_from_uom_id=_uomidFrom) THEN _valueFrom := _conv.itemuomconv_from_value; _valueTo := _conv.itemuomconv_to_value; ELSE _valueFrom := _conv.itemuomconv_to_value; _valueTo := _conv.itemuomconv_from_value; END IF; _value := (_valueTo / _valueFrom); ELSE -- Try to convert the from uom to the inventory uom SELECT itemuomconv_from_uom_id, itemuomconv_from_value, itemuomconv_to_uom_id, itemuomconv_to_value INTO _conv FROM itemuomconv WHERE(((itemuomconv_from_uom_id=_uomidFrom AND itemuomconv_to_uom_id=_uomidInv) OR (itemuomconv_from_uom_id=_uomidInv AND itemuomconv_to_uom_id=_uomidFrom)) AND (itemuomconv_item_id=pItemid)); IF(NOT FOUND) THEN RAISE EXCEPTION 'A conversion for item_id % from uom_id % to inv_uom_id % was not found.', pItemid, _uomidFrom, _uomidInv; END IF; IF(_conv.itemuomconv_from_uom_id=_uomidInv) THEN _valueFrom := _conv.itemuomconv_from_value; _valueTo := _conv.itemuomconv_to_value; ELSE _valueFrom := _conv.itemuomconv_to_value; _valueTo := _conv.itemuomconv_from_value; END IF; _value := (_valueTo / _valueFrom); -- Try to convert the to uom to the inventory uom SELECT itemuomconv_from_uom_id, itemuomconv_from_value, itemuomconv_to_uom_id, itemuomconv_to_value INTO _conv FROM itemuomconv WHERE(((itemuomconv_from_uom_id=_uomidInv AND itemuomconv_to_uom_id=_uomidTo) OR (itemuomconv_from_uom_id=_uomidTo AND itemuomconv_to_uom_id=_uomidInv)) AND (itemuomconv_item_id=pItemid)); IF(NOT FOUND) THEN RAISE EXCEPTION 'A conversion for item_id % from uom_id % to inv_uom_id % was not found.', pItemid, _uomidTo, _uomidInv; END IF; IF(_conv.itemuomconv_from_uom_id=_uomidInv) THEN _valueFrom := _conv.itemuomconv_from_value; _valueTo := _conv.itemuomconv_to_value; ELSE _valueFrom := _conv.itemuomconv_to_value; _valueTo := _conv.itemuomconv_from_value; END IF; _value := _value * (_valueTo / _valueFrom); END IF; RETURN _value; END; $$; ALTER FUNCTION public.itemuomtouomratio(pitemid integer, puomidfrom integer, puomidto integer) OWNER TO admin; -- -- Name: last_agg(anyelement, anyelement); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION last_agg(anyelement, anyelement) RETURNS anyelement LANGUAGE sql STABLE AS $_$ SELECT $2; $_$; ALTER FUNCTION public.last_agg(anyelement, anyelement) OWNER TO admin; -- -- Name: login(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION login() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _p RECORD; BEGIN RETURN login(false); END; $$; ALTER FUNCTION public.login() OWNER TO admin; -- -- Name: login(boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION login(boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _setSearchPath ALIAS FOR $1; _p RECORD; BEGIN PERFORM pg_try_advisory_lock(datid::integer, procpid) FROM pg_stat_activity WHERE(procpid = pg_backend_pid()); -- This is new to version 9.0 and higher and will error on older versions IF (select CAST(split_part(split_part(version(), ' ', 2),'.',1) AS integer) >= 9) THEN SET bytea_output TO escape; END IF; -- this is temporary until either qt fixes the postgres driver or we find & -- fix all of the places in our app that can write strings with backslashes SET standard_conforming_strings TO false; SELECT usr_id, userCanLogin(usr_username) AS usr_active INTO _p FROM usr WHERE (usr_username=getEffectiveXtUser()); IF (NOT FOUND) THEN RETURN -1; ELSIF (NOT _p.usr_active) THEN IF(SELECT metric_value='AdminOnly' FROM metric WHERE metric_name='AllowedUserLogins') THEN RETURN -3; END IF; RETURN -2; END IF; IF (_setSearchPath) THEN IF EXISTS(SELECT 1 FROM pg_proc JOIN pg_namespace ON (pronamespace=pg_namespace.oid) WHERE nspname='public' AND proname='buildsearchpath') THEN EXECUTE 'SET SEARCH_PATH TO ' || public.buildSearchPath(); END IF; END IF; RETURN 1; END; $_$; ALTER FUNCTION public.login(boolean) OWNER TO admin; -- -- Name: logout(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION logout() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN PERFORM pg_advisory_unlock(datid::integer, procpid) FROM pg_stat_activity WHERE(procpid = pg_backend_pid()); RETURN 0; END; $$; ALTER FUNCTION public.logout() OWNER TO admin; -- -- Name: lowercost(integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION lowercost(integer, text) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCosttype ALIAS FOR $2; BEGIN RETURN lowerCost(pItemid, pCosttype, TRUE); END; $_$; ALTER FUNCTION public.lowercost(integer, text) OWNER TO admin; -- -- Name: lowercost(integer, text, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION lowercost(integer, text, boolean) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCosttype ALIAS FOR $2; pActual ALIAS FOR $3; _type CHAR(1); _actCost NUMERIC; _actCost1 NUMERIC; _actCost2 NUMERIC; _stdCost NUMERIC; _stdCost1 NUMERIC; _stdCost2 NUMERIC; _cost NUMERIC; _cost1 NUMERIC; _cost2 NUMERIC; _batchsize NUMERIC; BEGIN SELECT item_type INTO _type FROM item WHERE (item_id=pItemid); _batchsize := COALESCE( ( SELECT bomhead_batchsize FROM bomhead WHERE ((bomhead_item_id=pItemId) AND (bomhead_rev_id=getActiveRevId('BOM',pItemId))) LIMIT 1), 1); -- find the lowercost in the base currency at the current conversion rate IF (_type IN ('M', 'F', 'B', 'T')) THEN IF (pActual) THEN SELECT SUM( CASE WHEN (bomitemcost_id IS NOT NULL AND bc.costelem_id IS NOT NULL) THEN round(currToBase(bomitemcost_curr_id, bomitemcost_actcost, CURRENT_DATE),6) * itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, (bomitem_qtyfxd/_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') ELSE round(currToBase(itemcost_curr_id, itemcost_actcost, CURRENT_DATE),6) * itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, (bomitem_qtyfxd/_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') END ) INTO _cost FROM bomitem(pItemid) JOIN item ON (item_id=bomitem_item_id AND item_type <> 'T') JOIN itemcost ON (itemcost_item_id=bomitem_item_id) JOIN costelem ic ON (ic.costelem_id=itemcost_costelem_id AND ic.costelem_type=pCosttype) LEFT OUTER JOIN bomitemcost ON (bomitemcost_bomitem_id=bomitem_id) LEFT OUTER JOIN costelem bc ON (bc.costelem_id=bomitemcost_costelem_id AND bc.costelem_type=pCosttype) WHERE ( CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires - 1) ); ELSE SELECT SUM( CASE WHEN (bomitemcost_id IS NOT NULL AND bc.costelem_id IS NOT NULL) THEN bomitemcost_stdcost * itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, (bomitem_qtyfxd/_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') ELSE itemcost_stdcost * itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, (bomitem_qtyfxd/_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') END ) INTO _cost FROM bomitem(pItemid) JOIN item ON (item_id=bomitem_item_id AND item_type <> 'T') JOIN itemcost ON (itemcost_item_id=bomitem_item_id) JOIN costelem ON (costelem_id=itemcost_costelem_id AND costelem_type=pCosttype) LEFT OUTER JOIN bomitemcost ON (bomitemcost_bomitem_id=bomitem_id) LEFT OUTER JOIN costelem bc ON (bc.costelem_id=bomitemcost_costelem_id AND bc.costelem_type=pCosttype) WHERE ( CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires - 1) ); END IF; IF (NOT FOUND) THEN _cost := NULL; END IF; ELSIF (_type IN ('C')) THEN SELECT SUM(CASE WHEN (bbomitem_qtyper = 0) THEN 0 ELSE currToBase(itemcost_curr_id, itemcost_actcost, CURRENT_DATE) / bbomitem_qtyper * bbomitem_costabsorb END), SUM(CASE WHEN (bbomitem_qtyper = 0) THEN 0 ELSE itemcost_stdcost / bbomitem_qtyper * bbomitem_costabsorb END) INTO _actCost1, _stdCost1 FROM itemcost JOIN costelem ON (itemcost_costelem_id=costelem_id) JOIN xtmfg.bbomitem ON (bbomitem_parent_item_id=itemcost_item_id) WHERE ( (bbomitem_item_id=pItemid) AND (CURRENT_DATE BETWEEN bbomitem_effective AND (bbomitem_expires - 1)) AND (costelem_type=pCosttype) ); SELECT SUM(CASE WHEN (t.bbomitem_qtyper = 0) THEN 0 ELSE currToBase(itemcost_curr_id, itemcost_actcost, CURRENT_DATE) * s.bbomitem_qtyper / t.bbomitem_qtyper * t.bbomitem_costabsorb END), SUM(CASE WHEN (t.bbomitem_qtyper = 0) THEN 0 ELSE itemcost_stdcost * s.bbomitem_qtyper / t.bbomitem_qtyper * t.bbomitem_costabsorb END) INTO _actCost2, _stdCost2 FROM costelem JOIN itemcost ON (costelem_id=itemcost_costelem_id) JOIN xtmfg.bbomitem AS s ON (itemcost_item_id=s.bbomitem_item_id) JOIN xtmfg.bbomitem AS t ON (s.bbomitem_parent_item_id=t.bbomitem_parent_item_id) JOIN item ON (s.bbomitem_item_id=item_id) WHERE ( (t.bbomitem_item_id=pItemid) AND ( CURRENT_DATE BETWEEN s.bbomitem_effective AND (s.bbomitem_expires - 1) ) AND ( CURRENT_DATE BETWEEN t.bbomitem_effective AND (t.bbomitem_expires - 1) ) AND (item_type='Y') AND (costelem_type=pCosttype) ); IF (pActual) THEN _cost = _actCost; _cost1 = _actCost1; _cost2 = _actCost2; ELSE _cost = _stdCost; _cost1 = _stdCost1; _cost2 = _stdCost2; -- should this be std or act? END IF; IF (_cost1 IS NULL AND _cost2 IS NULL) THEN _cost = NULL; ELSE _cost = COALESCE(_cost1, 0) + COALESCE(_cost2, 0); END IF; ELSE RETURN NULL; END IF; RETURN round(_cost,6); END; $_$; ALTER FUNCTION public.lowercost(integer, text, boolean) OWNER TO admin; -- -- Name: maintainbomworkspace(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION maintainbomworkspace() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _test TEXT; BEGIN SELECT tablename INTO _test FROM pg_tables WHERE (tablename='bomwork'); IF (NOT FOUND) THEN CREATE TEMPORARY TABLE bomwork ( bomwork_id INTEGER, bomwork_set_id INTEGER, bomwork_parent_id INTEGER, bomwork_seqnumber INTEGER, bomwork_parent_seqnumber INTEGER, bomwork_item_id INTEGER, bomwork_item_type CHARACTER(1), bomwork_status CHARACTER(1), bomwork_qtyper NUMERIC(20, 8), bomwork_scrap NUMERIC(20, 10), bomwork_level INTEGER, bomwork_effective DATE, bomwork_expires DATE, bomwork_stdunitcost NUMERIC(16, 4), bomwork_actunitcost NUMERIC(16, 4), bomwork_createwo BOOLEAN, bomwork_issuemethod CHARACTER(1) ); CREATE INDEX bomwork_set_id_idx ON bomwork(bomwork_set_id); END IF; RETURN 1; END; $$; ALTER FUNCTION public.maintainbomworkspace() OWNER TO admin; -- -- Name: markapcheckasposted(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION markapcheckasposted(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'markAPCheckAsPosted() is deprecated - use markCheckAsPosted() instead'; RETURN markCheckAsPosted($1); END; $_$; ALTER FUNCTION public.markapcheckasposted(integer) OWNER TO admin; -- -- Name: markapcheckasprinted(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION markapcheckasprinted(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'markAPCheckAsPrinted() is deprecated - use markCheckAsPrinted()'; RETURN markCheckAsPrinted($1); END; $_$; ALTER FUNCTION public.markapcheckasprinted(integer) OWNER TO admin; -- -- Name: markcheckasposted(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION markcheckasposted(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCheckid ALIAS FOR $1; BEGIN UPDATE checkhead SET checkhead_posted=TRUE WHERE (checkhead_id=pCheckid); RETURN 1; END; $_$; ALTER FUNCTION public.markcheckasposted(integer) OWNER TO admin; -- -- Name: markcheckasprinted(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION markcheckasprinted(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCheckid ALIAS FOR $1; BEGIN UPDATE checkhead SET checkhead_printed=TRUE WHERE (checkhead_id=pCheckid); RETURN 1; END; $_$; ALTER FUNCTION public.markcheckasprinted(integer) OWNER TO admin; -- -- Name: massexpirebomitem(integer, date, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION massexpirebomitem(integer, date, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pExpireDate ALIAS FOR $2; pECN ALIAS FOR $3; BEGIN UPDATE bomitem SET bomitem_expires=pExpireDate WHERE ( (bomitem_expires >= CURRENT_DATE) AND (bomitem_item_id=pItemid) AND (bomitem_rev_id=getActiveRevId('BOM',bomitem_parent_item_id)) ); RETURN TRUE; END; $_$; ALTER FUNCTION public.massexpirebomitem(integer, date, text) OWNER TO admin; -- -- Name: massreplacebomitem(integer, integer, date, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION massreplacebomitem(integer, integer, date, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNewItemid ALIAS FOR $1; pOriginalItemid ALIAS FOR $2; pEffectiveDate ALIAS FOR $3; pECN ALIAS FOR $4; _effectiveDate DATE; _result INTEGER; BEGIN _effectiveDate := COALESCE(pEffectiveDate, CURRENT_DATE); IF (BOMContains(pOriginalItemid, pNewItemid) OR BOMContains(pNewItemid, pOriginalItemid)) THEN RETURN -1; END IF; INSERT INTO bomitem ( bomitem_parent_item_id, bomitem_seqnumber, bomitem_item_id, bomitem_qtyfxd, bomitem_qtyper, bomitem_uom_id, bomitem_scrap, bomitem_effective, bomitem_expires, bomitem_ecn, bomitem_createwo, bomitem_issuemethod, bomitem_subtype, bomitem_booitem_seq_id, bomitem_schedatwooper, bomitem_moddate, bomitem_rev_id, bomitem_char_id, bomitem_value ) SELECT bomitem_parent_item_id, bomitem_seqnumber, pNewItemid, bomitem_qtyfxd, bomitem_qtyper, bomitem_uom_id, bomitem_scrap, _effectiveDate, endOfTime(), pECN, bomitem_createwo, bomitem_issuemethod, 'I', bomitem_booitem_seq_id, bomitem_schedatwooper, CURRENT_DATE, getActiveRevId('BOM',bomitem_parent_item_id), bomitem_char_id, bomitem_value FROM bomitem WHERE ( (_effectiveDate < bomitem_expires) AND (bomitem_item_id=pOriginalItemid) AND (bomitem_rev_id=getActiveRevId('BOM',bomitem_parent_item_id)) ); UPDATE bomitem SET bomitem_expires=_effectiveDate WHERE ( (_effectiveDate < bomitem_expires) AND (bomitem_item_id=pOriginalItemid) AND (bomitem_rev_id=getActiveRevid('BOM',bomitem_parent_item_id)) ); RETURN 1; END; $_$; ALTER FUNCTION public.massreplacebomitem(integer, integer, date, text) OWNER TO admin; -- -- Name: merge2crmaccts(integer, integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION merge2crmaccts(integer, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSourceId ALIAS FOR $1; pTargetId ALIAS FOR $2; _purge BOOLEAN := COALESCE($3, FALSE); _coldesc RECORD; _count INTEGER := 0; _hassubtype BOOLEAN; _mrgcol BOOLEAN; _result INTEGER := 0; _sel RECORD; _colname TEXT; _tmpid INTEGER; BEGIN -- Validate IF (pSourceId = pTargetId) THEN RAISE NOTICE 'Tried to merge a CRM Account with itself: %.', pSourceId; RETURN 0; ELSIF (pSourceId IS NULL) THEN RAISE EXCEPTION 'Merge source id cannot be null [xtuple: merge, -1]'; ELSIF NOT(EXISTS(SELECT 1 FROM crmacct WHERE crmacct_id=pSourceId)) THEN RAISE EXCEPTION 'Merge source % not found [xtuple: merge, -2, %]', pSourceId, pSourceId; ELSIF (pTargetId IS NULL) THEN RAISE EXCEPTION 'Merge target id cannot be null [xtuple: merge, -3]'; ELSIF NOT(EXISTS(SELECT 1 FROM crmacct WHERE crmacct_id=pTargetId)) THEN RAISE EXCEPTION 'Merge target % not found [xtuple: merge, -4, %]', pTargetId, pTargetId; ELSIF NOT(EXISTS(SELECT 1 FROM crmacctsel WHERE (crmacctsel_src_crmacct_id=pSourceId) AND (crmacctsel_dest_crmacct_id=pTargetId))) THEN RAISE EXCEPTION 'Source % and target % have not been selected for merging [xtuple: merge, -5, %, %]', pSourceId, pTargetId, pSourceId, pTargetId; END IF; _result:= changeFkeyPointers('public', 'crmacct', pSourceId, pTargetId, ARRAY[ 'crmacctsel', 'crmacctmrgd' ], _purge) + changePseudoFKeyPointers('public', 'alarm', 'alarm_source_id', pSourceId, 'public', 'crmacct', pTargetId, 'alarm_source', 'CRMA', _purge) + changePseudoFKeyPointers('public', 'charass', 'charass_target_id', pSourceId, 'public', 'crmacct', pTargetId, 'charass_target_type', 'CRMACCT', _purge) + changePseudoFKeyPointers('public', 'comment', 'comment_source_id', pSourceId, 'public', 'crmacct', pTargetId, 'comment_source', 'CRMA', _purge) + changePseudoFKeyPointers('public', 'docass', 'docass_source_id', pSourceId, 'public', 'crmacct', pTargetId, 'docass_source_type', 'CRMA', _purge) + changePseudoFKeyPointers('public', 'docass', 'docass_target_id', pSourceId, 'public', 'crmacct', pTargetId, 'docass_target_type', 'CRMA', _purge) + changePseudoFKeyPointers('public', 'imageass', 'imageass_source_id', pSourceId, 'public', 'crmacct', pTargetId, 'imageass_source', 'CRMA', _purge) ; -- TODO: find a generic way to handle pseudofkeys in packages - see 9401 IF (fetchMetricBool('EnableBatchManager') AND packageIsEnabled('xtbatch')) THEN _result:= _result + changePseudoFKeyPointers('xtbatch', 'emlassc', 'emlassc_assc_id', pSourceId, 'public', 'crmacct', pTargetId, 'emlassc_type', 'CRMA', _purge); END IF; -- back up all of the values in the target record that are about to be changed FOR _coldesc IN SELECT attname, typname FROM pg_attribute JOIN pg_type ON (atttypid=pg_type.oid) JOIN pg_class ON (attrelid=pg_class.oid) JOIN pg_namespace ON (relnamespace=pg_namespace.oid) WHERE (attnum >= 0) AND (relname='crmacct') AND (nspname='public') AND (attname NOT IN ('crmacct_id', 'crmacct_number')) LOOP -- if we're supposed to merge this column at all EXECUTE 'SELECT ' || quote_ident('crmacctsel_mrg_' || _coldesc.attname) || ' FROM crmacctsel WHERE ((crmacctsel_src_crmacct_id=' || pSourceId || ') AND (crmacctsel_dest_crmacct_id=' || pTargetId || '))' INTO _mrgcol; IF (_mrgcol) THEN _colname := REPLACE(_coldesc.attname, 'crmacctsel_mrg_', ''); -- optionally back up the old value from the destination -- we'll back up the old value from the source further down IF (NOT _purge) THEN BEGIN EXECUTE 'INSERT INTO mrgundo ( mrgundo_schema, mrgundo_table, mrgundo_pkey_col, mrgundo_pkey_id, mrgundo_col, mrgundo_value, mrgundo_type, mrgundo_base_schema, mrgundo_base_table, mrgundo_base_id ) SELECT ''public'', ''crmacct'', ''crmacct_id'', crmacct_id, ' || quote_literal(_colname) || ', ' || quote_ident(_colname) || ', ' || quote_literal(_coldesc.typname) || ', ''public'', ''crmacct'', crmacct_id FROM crmacct WHERE (crmacct_id=' || pTargetId || ');' ; EXCEPTION WHEN unique_violation THEN RAISE EXCEPTION 'Could not make a backup copy of % when merging % into % [xtuple: merge, -8, %, %, public, crmacct, %]', _colname, pSourceId, pTargetId, _colname, pSourceId, pTargetId; END; END IF; -- TODO: what do we do about users? /* update the destination crmacct in one of 3 different ways: - crmacct_notes might be concatenated from more than one source record - foreign keys to crm account subtype records (e.g. crmacct_cust_id) must not leave orphaned records and must avoid uniqueness violations - some fields can simply be updated in place */ IF (_colname = 'crmacct_notes') THEN EXECUTE 'UPDATE crmacct dest SET ' || quote_ident(_colname) || '=dest.' || quote_ident(_colname) || E' || E''\\n'' || src.' || _colname || ' FROM crmacct src JOIN crmacctsel ON (src.crmacct_id=crmacctsel_src_crmacct_id) WHERE ((dest.crmacct_id=crmacctsel_dest_crmacct_id) AND (dest.crmacct_id!=crmacctsel_src_crmacct_id));'; ELSIF (_colname IN ('crmacct_cust_id', 'crmacct_prospect_id', 'crmacct_vend_id', 'crmacct_taxauth_id', 'crmacct_emp_id', 'crmacct_salesrep_id')) THEN IF (_colname IN ('crmacct_cust_id', 'crmacct_prospect_id')) THEN EXECUTE 'SELECT src.' || quote_ident(_colname) || ' IS NOT NULL AND (dest.crmacct_prospect_id IS NOT NULL OR dest.crmacct_cust_id IS NOT NULL) FROM crmacct src JOIN crmacctsel ON (src.crmacct_id=crmacctsel_src_crmacct_id) JOIN crmacct dest ON (crmacctsel_dest_crmacct_id=dest.crmacct_id) WHERE ((src.crmacct_id=' || pSourceId || ') AND (dest.crmacct_id=' || pTargetId || '))' INTO _hassubtype; IF (_hassubtype) THEN RAISE EXCEPTION 'Cannot merge two CRM Accounts that both refer to Customers and/or Prospects [xtuple: merge, -6, %, %]', pSourceId, pTargetId; END IF; ELSE EXECUTE 'SELECT src.' || quote_ident(_colname) || ' IS NOT NULL AND dest.'|| quote_ident(_colname) || ' IS NOT NULL FROM crmacct src JOIN crmacctsel ON (src.crmacct_id=crmacctsel_src_crmacct_id) JOIN crmacct dest ON (crmacctsel_dest_crmacct_id=dest.crmacct_id) WHERE ((src.crmacct_id=' || pSourceId || ') AND (dest.crmacct_id=' || pTargetId || '))' INTO _hassubtype; IF (_hassubtype) THEN RAISE EXCEPTION 'Cannot merge CRM Accounts until the % child records have been merged [xtuple: merge, -7, %, %, %]', _colname, _colname, pSourceId, pTargetId; END IF; END IF; /* clearing the source separately from setting the target avoids problems with triggers updating the wrong records */ EXECUTE 'SELECT ' || quote_ident(_colname) || ' FROM crmacct WHERE crmacct_id=' || pSourceId INTO _tmpid; -- now we have the data to back up the source IF (NOT _purge) THEN BEGIN EXECUTE 'INSERT INTO mrgundo ( mrgundo_schema, mrgundo_table, mrgundo_pkey_col, mrgundo_pkey_id, mrgundo_col, mrgundo_value, mrgundo_type, mrgundo_base_schema, mrgundo_base_table, mrgundo_base_id ) SELECT ''public'', ''crmacct'', ''crmacct_id'', crmacct_id, ' || quote_literal(_colname) || ', ' || quote_ident(_colname) || ', ' || quote_literal(_coldesc.typname) || ', ''public'', ''crmacct'', ' || pTargetId || ' FROM crmacct WHERE (crmacct_id=' || pSourceId || ');' ; EXCEPTION WHEN unique_violation THEN RAISE EXCEPTION 'Could not make a backup copy of % when merging % into % [xtuple: merge, -8, %, %, public, crmacct, %]', _colname, pSourceId, pTargetId, _colname, pSourceId, pTargetId; END; END IF; EXECUTE 'UPDATE crmacct SET ' || quote_ident(_colname) || '=NULL WHERE (crmacct_id=' || pSourceId || ');'; EXECUTE 'UPDATE crmacct SET ' || quote_ident(_colname) || '=' || quote_literal(_tmpid) || ' WHERE (crmacct_id=' || pTargetId || ');'; ELSE EXECUTE 'UPDATE crmacct dest SET ' || quote_ident(_colname) || ' =src.' || quote_ident(_colname) || ' FROM crmacct src WHERE ((dest.crmacct_id=' || pTargetId || ') AND (src.crmacct_id=' || pSourceId || '));'; END IF; GET DIAGNOSTICS _count = ROW_COUNT; _result := _result + _count; END IF; END LOOP; IF (_purge) THEN DELETE FROM crmacct WHERE crmacct = pSourceId; ELSE INSERT INTO mrgundo ( mrgundo_schema, mrgundo_table, mrgundo_pkey_col, mrgundo_pkey_id, mrgundo_col, mrgundo_value, mrgundo_type, mrgundo_base_schema, mrgundo_base_table, mrgundo_base_id ) SELECT 'public', 'crmacct', 'crmacct_id', pSourceId, 'crmacct_active', crmacct_active, 'bool', 'public', 'crmacct', pTargetId FROM crmacct WHERE crmacct_active AND (crmacct_id = pSourceId); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count > 0) THEN _result := _result + _count; UPDATE crmacct SET crmacct_active = false WHERE (crmacct_id=pSourceId); END IF; -- make a special record of the source crm account so we can delete it later INSERT INTO mrgundo ( mrgundo_schema, mrgundo_table, mrgundo_pkey_col, mrgundo_pkey_id, mrgundo_col, mrgundo_value, mrgundo_type, mrgundo_base_schema, mrgundo_base_table, mrgundo_base_id ) VALUES ( 'public', 'crmacct', 'crmacct_id', pSourceId, NULL, NULL, NULL, 'public', 'crmacct', pTargetId); END IF; DELETE FROM crmacctsel WHERE (crmacctsel_src_crmacct_id=pSourceId); RETURN _result; END; $_$; ALTER FUNCTION public.merge2crmaccts(integer, integer, boolean) OWNER TO admin; -- -- Name: FUNCTION merge2crmaccts(integer, integer, boolean); Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON FUNCTION merge2crmaccts(integer, integer, boolean) IS 'This function merges two crmacct records as decribed in crmacctsel records. For each field in the crmacctsel record marked TRUE, the data are copied from the crmacct record with crmacct_id=pSourceId to the record with crmacct_id=pTargetId. If the purge argument is TRUE, the source record is deleted. If it is FALSE, then mrgundo records are created so the merge can later be undone.'; -- -- Name: mergecrmaccts(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION mergecrmaccts(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTargetId ALIAS FOR $1; _purge BOOLEAN := COALESCE($2, FALSE); _retval INTEGER; BEGIN /* if crmacctsel says the target should not keep its original notes, clear them. notes are special because the merge allows concatenating them from multiple sources. this needs to be kept in sync with merge2crmaccts' similar check. */ IF NOT (SELECT crmacctsel_mrg_crmacct_notes FROM crmacctsel WHERE crmacctsel_src_crmacct_id=crmacctsel_dest_crmacct_id AND crmacctsel_dest_crmacct_id=pTargetId) THEN IF (NOT _purge) THEN INSERT INTO mrgundo ( mrgundo_schema, mrgundo_table, mrgundo_pkey_col, mrgundo_pkey_id, mrgundo_col, mrgundo_value, mrgundo_type, mrgundo_base_schema, mrgundo_base_table, mrgundo_base_id) SELECT 'public', 'crmacct', crmacct_id, 'public', 'crmacct', 'crmacct_id', crmacct_id, 'crmacct_notes', crmacct_notes, 'text', 'public', 'crmacct', crmacct_id FROM crmacct WHERE (crmacct_id=pTargetId); END IF; UPDATE crmacct SET crmacct_notes = '' WHERE (crmacct_id=pTargetId); END IF; -- merge the data from the various source records SELECT SUM(merge2crmaccts(crmacctsel_src_crmacct_id, pTargetId, _purge)) INTO _retval FROM crmacctsel WHERE ((crmacctsel_dest_crmacct_id=pTargetId) AND (crmacctsel_dest_crmacct_id!=crmacctsel_src_crmacct_id)); DELETE FROM crmacctsel WHERE crmacctsel_dest_crmacct_id=pTargetId; RETURN COALESCE(_retval, 0); END; $_$; ALTER FUNCTION public.mergecrmaccts(integer, boolean) OWNER TO admin; -- -- Name: FUNCTION mergecrmaccts(integer, boolean); Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON FUNCTION mergecrmaccts(integer, boolean) IS 'This function uses the crmacctsel table to merge multiple crmacct records together. Only the merges into the specified target account are performed. Most of the work is done by repeated calls to the merge2crmaccts function. If the purge argument is FALSE, data are kept to allow reversing the merge.'; -- -- Name: movebomitemdown(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION movebomitemdown(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBomitemid ALIAS FOR $1; _nextBomitem RECORD; BEGIN SELECT nextbomitem.bomitem_seqnumber AS next_seqnumber, thisbomitem.bomitem_seqnumber AS this_seqnumber, thisbomitem.bomitem_parent_item_id AS parent_item_id, thisbomitem.bomitem_rev_id AS rev_id INTO _nextBomitem FROM bomitem AS nextbomitem, bomitem AS thisbomitem WHERE ((nextbomitem.bomitem_seqnumber > thisbomitem.bomitem_seqnumber) AND (nextbomitem.bomitem_parent_item_id=thisbomitem.bomitem_parent_item_id) AND (nextbomitem.bomitem_rev_id=thisbomitem.bomitem_rev_id) AND (thisbomitem.bomitem_id=pBomitemid)) ORDER BY next_seqnumber LIMIT 1; IF (FOUND) THEN -- Swap the seqnumber of the current bomitem and the next bomitem -- There is the potential for multiple bomitems with the same seqnumber UPDATE bomitem SET bomitem_seqnumber=0 WHERE (bomitem_seqnumber=_nextBomitem.next_seqnumber) AND (bomitem_parent_item_id=_nextBomitem.parent_item_id) AND (bomitem_rev_id=_nextBomitem.rev_id); UPDATE bomitem SET bomitem_seqnumber=_nextBomitem.next_seqnumber WHERE (bomitem_seqnumber=_nextBomitem.this_seqnumber) AND (bomitem_parent_item_id=_nextBomitem.parent_item_id) AND (bomitem_rev_id=_nextBomitem.rev_id); UPDATE bomitem SET bomitem_seqnumber=_nextBomitem.this_seqnumber WHERE (bomitem_seqnumber=0) AND (bomitem_parent_item_id=_nextBomitem.parent_item_id) AND (bomitem_rev_id=_nextBomitem.rev_id); END IF; RETURN 1; END; $_$; ALTER FUNCTION public.movebomitemdown(integer) OWNER TO admin; -- -- Name: movebomitemup(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION movebomitemup(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBomitemid ALIAS FOR $1; _nextBomitem RECORD; BEGIN SELECT nextbomitem.bomitem_seqnumber AS next_seqnumber, thisbomitem.bomitem_seqnumber AS this_seqnumber, thisbomitem.bomitem_parent_item_id AS parent_item_id, thisbomitem.bomitem_rev_id AS rev_id INTO _nextBomitem FROM bomitem AS nextbomitem, bomitem AS thisbomitem WHERE ((nextbomitem.bomitem_seqnumber < thisbomitem.bomitem_seqnumber) AND (nextbomitem.bomitem_parent_item_id=thisbomitem.bomitem_parent_item_id) AND (nextbomitem.bomitem_rev_id=thisbomitem.bomitem_rev_id) AND (thisbomitem.bomitem_id=pBomitemid)) ORDER BY next_seqnumber DESC LIMIT 1; IF (FOUND) THEN -- Swap the seqnumber of the current bomitem and the next bomitem -- There is the potential for multiple bomitems with the same seqnumber UPDATE bomitem SET bomitem_seqnumber=0 WHERE (bomitem_seqnumber=_nextBomitem.next_seqnumber) AND (bomitem_parent_item_id=_nextBomitem.parent_item_id) AND (bomitem_rev_id=_nextBomitem.rev_id); UPDATE bomitem SET bomitem_seqnumber=_nextBomitem.next_seqnumber WHERE (bomitem_seqnumber=_nextBomitem.this_seqnumber) AND (bomitem_parent_item_id=_nextBomitem.parent_item_id) AND (bomitem_rev_id=_nextBomitem.rev_id); UPDATE bomitem SET bomitem_seqnumber=_nextBomitem.this_seqnumber WHERE (bomitem_seqnumber=0) AND (bomitem_parent_item_id=_nextBomitem.parent_item_id) AND (bomitem_rev_id=_nextBomitem.rev_id); END IF; RETURN 1; END; $_$; ALTER FUNCTION public.movebomitemup(integer) OWNER TO admin; -- -- Name: moveccarddown(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION moveccarddown(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCcardid ALIAS FOR $1; _nextCcard RECORD; BEGIN SELECT nextCcard.ccard_id, nextCcard.ccard_seq AS next_seqnumber, thisCcard.ccard_seq AS this_seqnumber INTO _nextCcard FROM Ccard AS nextCcard, Ccard AS thisCcard WHERE ((nextCcard.ccard_seq > thisCcard.ccard_seq) AND (nextCcard.ccard_cust_id=thisCcard.ccard_cust_id) AND (thisCcard.ccard_id=pCcardid)) ORDER BY next_seqnumber LIMIT 1; IF (FOUND) THEN -- Swap the seqnumber of the current Ccard and the next Ccard UPDATE Ccard SET ccard_seq=_nextCcard.next_seqnumber WHERE (ccard_id=pCcardid); UPDATE Ccard SET ccard_seq=_nextCcard.this_seqnumber WHERE (ccard_id=_nextCcard.ccard_id); END IF; RETURN 1; END; $_$; ALTER FUNCTION public.moveccarddown(integer) OWNER TO admin; -- -- Name: moveccardup(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION moveccardup(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCcardid ALIAS FOR $1; _nextCcard RECORD; BEGIN SELECT nextCcard.ccard_id AS ccard_id, nextCcard.ccard_seq AS next_seqnumber, thisCcard.ccard_seq AS this_seqnumber INTO _nextCcard FROM ccard AS nextCcard, ccard AS thisCcard WHERE ((nextCcard.ccard_seq < thisCcard.ccard_seq) AND (nextCcard.ccard_cust_id=thisCcard.ccard_cust_id) AND (thisCcard.ccard_id=pCcardid)) ORDER BY next_seqnumber DESC LIMIT 1; IF (FOUND) THEN -- Swap the seqnumber of the current Ccard and the next Ccard UPDATE Ccard SET ccard_seq=_nextCcard.next_seqnumber WHERE (ccard_id=pCcardid); UPDATE Ccard SET ccard_seq=_nextCcard.this_seqnumber WHERE (ccard_id=_nextCcard.ccard_id); END IF; RETURN 1; END; $_$; ALTER FUNCTION public.moveccardup(integer) OWNER TO admin; -- -- Name: moveflgroupdown(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION moveflgroupdown(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlgrpid ALIAS FOR $1; _from RECORD; _to RECORD; BEGIN SELECT flgrp_id AS id, flgrp_flhead_id AS flhead_id, flgrp_flgrp_id AS flgrp_id, flgrp_order AS ord INTO _from FROM flgrp WHERE (flgrp_id=pFlgrpid); IF (NOT FOUND) THEN RETURN -1; END IF; SELECT id, type, ord INTO _to FROM (SELECT flitem_id AS id, 'I' AS type, flitem_order AS ord FROM flitem WHERE ((flitem_flgrp_id=_from.flgrp_id) AND (flitem_flhead_id=_from.flhead_id)) UNION SELECT flgrp_id AS id, 'G' AS type, flgrp_order AS ord FROM flgrp WHERE ((flgrp_flgrp_id=_from.flgrp_id) AND (flgrp_flhead_id=_from.flhead_id)) UNION SELECT flspec_id AS id, 'S' AS type, flspec_order AS ord FROM flspec WHERE ((flspec_flgrp_id=_from.flgrp_id) AND (flspec_flhead_id=_from.flhead_id)) ) AS data WHERE (ord > _from.ord) ORDER BY ord LIMIT 1; IF (FOUND) THEN UPDATE flgrp SET flgrp_order=_to.ord WHERE (flgrp_id=_from.id); IF (_to.type='I') THEN UPDATE flitem SET flitem_order=_from.ord WHERE (flitem_id=_to.id); ELSE IF (_to.type='G') THEN UPDATE flgrp SET flgrp_order=_from.ord WHERE (flgrp_id=_to.id); ELSE IF (_to.type='S') THEN UPDATE flspec SET flspec_order=_from.ord WHERE (flspec_id=_to.id); END IF; END IF; END IF; END IF; RETURN 0; END; $_$; ALTER FUNCTION public.moveflgroupdown(integer) OWNER TO admin; -- -- Name: moveflgroupup(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION moveflgroupup(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlgrpid ALIAS FOR $1; _from RECORD; _to RECORD; BEGIN SELECT flgrp_id AS id, flgrp_flhead_id AS flhead_id, flgrp_flgrp_id AS flgrp_id, flgrp_order AS ord INTO _from FROM flgrp WHERE (flgrp_id=pFlgrpid); IF (NOT FOUND) THEN RETURN -1; END IF; SELECT id, type, ord INTO _to FROM (SELECT flitem_id AS id, 'I' AS type, flitem_order AS ord FROM flitem WHERE ((flitem_flgrp_id=_from.flgrp_id) AND (flitem_flhead_id=_from.flhead_id)) UNION SELECT flgrp_id AS id, 'G' AS type, flgrp_order AS ord FROM flgrp WHERE ((flgrp_flgrp_id=_from.flgrp_id) AND (flgrp_flhead_id=_from.flhead_id)) UNION SELECT flspec_id AS id, 'S' AS type, flspec_order AS ord FROM flspec WHERE ((flspec_flgrp_id=_from.flgrp_id) AND (flspec_flhead_id=_from.flhead_id)) ) AS data WHERE (ord < _from.ord) ORDER BY ord DESC LIMIT 1; IF (FOUND) THEN UPDATE flgrp SET flgrp_order=_to.ord WHERE (flgrp_id=_from.id); IF (_to.type='I') THEN UPDATE flitem SET flitem_order=_from.ord WHERE (flitem_id=_to.id); ELSE IF (_to.type='G') THEN UPDATE flgrp SET flgrp_order=_from.ord WHERE (flgrp_id=_to.id); ELSE IF (_to.type='S') THEN UPDATE flspec SET flspec_order=_from.ord WHERE (flspec_id=_to.id); END IF; END IF; END IF; END IF; RETURN 0; END; $_$; ALTER FUNCTION public.moveflgroupup(integer) OWNER TO admin; -- -- Name: moveflitemdown(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION moveflitemdown(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlitemid ALIAS FOR $1; _from RECORD; _to RECORD; BEGIN SELECT flitem_id AS id, flitem_flhead_id AS flhead_id, flitem_flgrp_id AS flgrp_id, flitem_order AS ord INTO _from FROM flitem WHERE (flitem_id=pFlitemid); IF (NOT FOUND) THEN RETURN -1; END IF; SELECT id, type, ord INTO _to FROM (SELECT flitem_id AS id, 'I' AS type, flitem_order AS ord FROM flitem WHERE ((flitem_flgrp_id=_from.flgrp_id) AND (flitem_flhead_id=_from.flhead_id)) UNION SELECT flgrp_id AS id, 'G' AS type, flgrp_order AS ord FROM flgrp WHERE ((flgrp_flgrp_id=_from.flgrp_id) AND (flgrp_flhead_id=_from.flhead_id)) UNION SELECT flspec_id AS id, 'S' AS type, flspec_order AS ord FROM flspec WHERE ((flspec_flgrp_id=_from.flgrp_id) AND (flspec_flhead_id=_from.flhead_id)) ) AS data WHERE (ord > _from.ord) ORDER BY ord LIMIT 1; IF (FOUND) THEN UPDATE flitem SET flitem_order=_to.ord WHERE (flitem_id=_from.id); IF (_to.type='I') THEN UPDATE flitem SET flitem_order=_from.ord WHERE (flitem_id=_to.id); ELSE IF (_to.type='G') THEN UPDATE flgrp SET flgrp_order=_from.ord WHERE (flgrp_id=_to.id); ELSE IF (_to.type='S') THEN UPDATE flspec SET flspec_order=_from.ord WHERE (flspec_id=_to.id); END IF; END IF; END IF; END IF; RETURN 0; END; $_$; ALTER FUNCTION public.moveflitemdown(integer) OWNER TO admin; -- -- Name: moveflitemup(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION moveflitemup(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlitemid ALIAS FOR $1; _from RECORD; _to RECORD; BEGIN SELECT flitem_id AS id, flitem_flhead_id AS flhead_id, flitem_flgrp_id AS flgrp_id, flitem_order AS ord INTO _from FROM flitem WHERE (flitem_id=pFlitemid); IF (NOT FOUND) THEN RETURN -1; END IF; SELECT id, type, ord INTO _to FROM (SELECT flitem_id AS id, 'I' AS type, flitem_order AS ord FROM flitem WHERE ((flitem_flgrp_id=_from.flgrp_id) AND (flitem_flhead_id=_from.flhead_id)) UNION SELECT flgrp_id AS id, 'G' AS type, flgrp_order AS ord FROM flgrp WHERE ((flgrp_flgrp_id=_from.flgrp_id) AND (flgrp_flhead_id=_from.flhead_id)) UNION SELECT flspec_id AS id, 'S' AS type, flspec_order AS ord FROM flspec WHERE ((flspec_flgrp_id=_from.flgrp_id) AND (flspec_flhead_id=_from.flhead_id)) ) AS data WHERE (ord < _from.ord) ORDER BY ord DESC LIMIT 1; IF (FOUND) THEN UPDATE flitem SET flitem_order=_to.ord WHERE (flitem_id=_from.id); IF (_to.type='I') THEN UPDATE flitem SET flitem_order=_from.ord WHERE (flitem_id=_to.id); ELSE IF (_to.type='G') THEN UPDATE flgrp SET flgrp_order=_from.ord WHERE (flgrp_id=_to.id); ELSE IF (_to.type='S') THEN UPDATE flspec SET flspec_order=_from.ord WHERE (flspec_id=_to.id); END IF; END IF; END IF; END IF; RETURN 0; END; $_$; ALTER FUNCTION public.moveflitemup(integer) OWNER TO admin; -- -- Name: moveflspecdown(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION moveflspecdown(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlspecid ALIAS FOR $1; _from RECORD; _to RECORD; BEGIN SELECT flspec_id AS id, flspec_flhead_id AS flhead_id, flspec_flgrp_id AS flgrp_id, flspec_order AS ord INTO _from FROM flspec WHERE (flspec_id=pFlspecid); IF (NOT FOUND) THEN RETURN -1; END IF; SELECT id, type, ord INTO _to FROM (SELECT flitem_id AS id, 'I' AS type, flitem_order AS ord FROM flitem WHERE ((flitem_flgrp_id=_from.flgrp_id) AND (flitem_flhead_id=_from.flhead_id)) UNION SELECT flgrp_id AS id, 'G' AS type, flgrp_order AS ord FROM flgrp WHERE ((flgrp_flgrp_id=_from.flgrp_id) AND (flgrp_flhead_id=_from.flhead_id)) UNION SELECT flspec_id AS id, 'S' AS type, flspec_order AS ord FROM flspec WHERE ((flspec_flgrp_id=_from.flgrp_id) AND (flspec_flhead_id=_from.flhead_id)) ) AS data WHERE (ord > _from.ord) ORDER BY ord LIMIT 1; IF (FOUND) THEN UPDATE flspec SET flspec_order=_to.ord WHERE (flspec_id=_from.id); IF (_to.type='I') THEN UPDATE flitem SET flitem_order=_from.ord WHERE (flitem_id=_to.id); ELSE IF (_to.type='G') THEN UPDATE flgrp SET flgrp_order=_from.ord WHERE (flgrp_id=_to.id); ELSE IF (_to.type='S') THEN UPDATE flspec SET flspec_order=_from.ord WHERE (flspec_id=_to.id); END IF; END IF; END IF; END IF; RETURN 0; END; $_$; ALTER FUNCTION public.moveflspecdown(integer) OWNER TO admin; -- -- Name: moveflspecup(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION moveflspecup(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlspecid ALIAS FOR $1; _from RECORD; _to RECORD; BEGIN SELECT flspec_id AS id, flspec_flhead_id AS flhead_id, flspec_flgrp_id AS flgrp_id, flspec_order AS ord INTO _from FROM flspec WHERE (flspec_id=pFlspecid); IF (NOT FOUND) THEN RETURN -1; END IF; SELECT id, type, ord INTO _to FROM (SELECT flitem_id AS id, 'I' AS type, flitem_order AS ord FROM flitem WHERE ((flitem_flgrp_id=_from.flgrp_id) AND (flitem_flhead_id=_from.flhead_id)) UNION SELECT flgrp_id AS id, 'G' AS type, flgrp_order AS ord FROM flgrp WHERE ((flgrp_flgrp_id=_from.flgrp_id) AND (flgrp_flhead_id=_from.flhead_id)) UNION SELECT flspec_id AS id, 'S' AS type, flspec_order AS ord FROM flspec WHERE ((flspec_flgrp_id=_from.flgrp_id) AND (flspec_flhead_id=_from.flhead_id)) ) AS data WHERE (ord < _from.ord) ORDER BY ord DESC LIMIT 1; IF (FOUND) THEN UPDATE flspec SET flspec_order=_to.ord WHERE (flspec_id=_from.id); IF (_to.type='I') THEN UPDATE flitem SET flitem_order=_from.ord WHERE (flitem_id=_to.id); ELSE IF (_to.type='G') THEN UPDATE flgrp SET flgrp_order=_from.ord WHERE (flgrp_id=_to.id); ELSE IF (_to.type='S') THEN UPDATE flspec SET flspec_order=_from.ord WHERE (flspec_id=_to.id); END IF; END IF; END IF; END IF; RETURN 0; END; $_$; ALTER FUNCTION public.moveflspecup(integer) OWNER TO admin; -- -- Name: movescript(integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION movescript(integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pscriptid ALIAS FOR $1; poldpkgid ALIAS FOR $2; pnewpkgid ALIAS FOR $3; _deletestr TEXT; _destination TEXT; _insertstr TEXT; _rows INTEGER; _selectstr TEXT; _source TEXT; _record RECORD; BEGIN IF (poldpkgid = pnewpkgid) THEN RETURN 0; END IF; IF (poldpkgid = -1) THEN _source = 'public.script'; ELSE SELECT pkghead_name || '.pkgscript' INTO _source FROM pkghead WHERE pkghead_id=poldpkgid; IF NOT FOUND THEN RETURN -1; END IF; END IF; IF (pnewpkgid = -1) THEN _destination = 'public.script'; ELSE SELECT pkghead_name || '.pkgscript' INTO _destination FROM pkghead WHERE pkghead_id=pnewpkgid; IF NOT FOUND THEN RETURN -2; END IF; END IF; _selectstr := ' SELECT * FROM ' || _source || ' WHERE script_id = ' || pscriptid; EXECUTE _selectstr INTO _record; _deletestr := 'DELETE FROM ONLY ' || _source || ' WHERE script_id = ' || pscriptid; EXECUTE _deletestr; GET DIAGNOSTICS _rows = ROW_COUNT; RAISE NOTICE '% rows from %', _rows, _deletestr; IF (_rows < 1) THEN RETURN -3; ELSIF (_rows > 1) THEN RAISE EXCEPTION 'Tried to delete % scripts with the id % when there should be exactly 1', _rows, pscriptid; END IF; _insertstr := 'INSERT INTO ' || _destination || ' (script_id, script_name, script_order, script_enabled, ' || ' script_source, script_notes) VALUES (' || _record.script_id || ',' || quote_literal(_record.script_name) || ',' || _record.script_order || ',' || _record.script_enabled || ',' || quote_literal(_record.script_source) || ',' || quote_literal(_record.script_notes ) || ');' ; EXECUTE _insertstr; GET DIAGNOSTICS _rows = ROW_COUNT; RAISE NOTICE '% rows from %', _rows, _insertstr; IF (_rows < 1) THEN RETURN -4; ELSIF (_rows > 1) THEN RAISE EXCEPTION 'Tried to insert % scripts with the id % when there should be exactly 1', _rows, pscriptid; END IF; RETURN pscriptid; END; $_$; ALTER FUNCTION public.movescript(integer, integer, integer) OWNER TO admin; -- -- Name: moveuiform(integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION moveuiform(integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE puiformid ALIAS FOR $1; poldpkgid ALIAS FOR $2; pnewpkgid ALIAS FOR $3; _deletestr TEXT; _destination TEXT; _insertstr TEXT; _rows INTEGER; _selectstr TEXT; _source TEXT; _record RECORD; BEGIN IF (poldpkgid = pnewpkgid) THEN RETURN 0; END IF; IF (poldpkgid = -1) THEN _source = 'public.uiform'; ELSE SELECT pkghead_name || '.pkguiform' INTO _source FROM pkghead WHERE pkghead_id=poldpkgid; IF NOT FOUND THEN RETURN -1; END IF; END IF; IF (pnewpkgid = -1) THEN _destination = 'public.uiform'; ELSE SELECT pkghead_name || '.pkguiform' INTO _destination FROM pkghead WHERE pkghead_id=pnewpkgid; IF NOT FOUND THEN RETURN -2; END IF; END IF; _selectstr := ' SELECT * FROM ' || _source || ' WHERE uiform_id = ' || puiformid; EXECUTE _selectstr INTO _record; _deletestr := 'DELETE FROM ONLY ' || _source || ' WHERE uiform_id = ' || puiformid; EXECUTE _deletestr; GET DIAGNOSTICS _rows = ROW_COUNT; RAISE NOTICE '% rows from %', _rows, _deletestr; IF (_rows < 1) THEN RETURN -3; ELSIF (_rows > 1) THEN RAISE EXCEPTION 'Tried to delete % uiforms with the id % when there should be exactly 1', _rows, puiformid; END IF; _insertstr := 'INSERT INTO ' || _destination || ' (uiform_id, uiform_name, uiform_order, uiform_enabled, ' || ' uiform_source, uiform_notes) VALUES (' || _record.uiform_id || ',' || quote_literal(_record.uiform_name) || ',' || _record.uiform_order || ',' || _record.uiform_enabled || ',' || quote_literal(_record.uiform_source) || ',' || quote_literal(_record.uiform_notes ) || ');' ; EXECUTE _insertstr; GET DIAGNOSTICS _rows = ROW_COUNT; RAISE NOTICE '% rows from %', _rows, _insertstr; IF (_rows < 1) THEN RETURN -4; ELSIF (_rows > 1) THEN RAISE EXCEPTION 'Tried to insert % uiforms with the id % when there should be exactly 1', _rows, puiformid; END IF; RETURN puiformid; END; $_$; ALTER FUNCTION public.moveuiform(integer, integer, integer) OWNER TO admin; -- -- Name: moveupdown(integer, text, text, text, text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION moveupdown(pid integer, pschema text, ptable text, pseqcol text, pjoincol text, pextra text, pdir text) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE _keyfield TEXT; _keysize INTEGER; _qry TEXT; _r RECORD; _rowcnt INTEGER; _schema TEXT := COALESCE(pSchema, 'public'); BEGIN RAISE DEBUG 'moveUpDown(%, %, %, %, %, %, %) entered', pId, pSchema, pTable, pSeqCol, pJoinCol, pExtra, pDir; IF (UPPER(pDir) NOT IN ('UP', 'DOWN')) THEN RAISE EXCEPTION 'Cannot change the order of records; unsure what % means for sequencing [xtuple: moveUpDown, -1, %, %.%]', pDir, pDir, _schema, pTable; END IF; SELECT attname, ARRAY_UPPER(conkey, 1) INTO _keyfield, _keysize FROM pg_attribute JOIN pg_constraint ON (attrelid=conrelid AND attnum=conkey[1]) JOIN pg_class ON (conrelid=pg_class.oid) JOIN pg_namespace ON (relnamespace=pg_namespace.oid) WHERE ((contype='p') AND (nspname=_schema) AND (relname=pTable)); RAISE DEBUG 'SELECT attname... returned %, %', _keyfield, _keysize; IF (_keysize > 1) THEN RAISE EXCEPTION 'Cannot change the order of records because %.% has a composite primary key [xtuple: moveUpDown, -2, %.%]', _schema, pTable, _schema, pTable; END IF; /* SELECT next._keyfield AS nextid, next.pSeqCol AS nextseq, this.pSeqCol AS thisseq FROM _schema.pTable AS next, _schema.pTable AS this WHERE (this._keyfield=$1) AND (next.pSeqCol [> or <] this.pSeqCol) [ AND (next.pJoinCol=this.pJoinCol) ] [ AND (pExtra) ] ORDER BY nextseq [ DESC or ASC ] LIMIT 1; */ _qry := 'SELECT next.' || quote_ident(_keyfield) || ' AS nextid, next.' || quote_ident(pSeqCol) || ' AS nextseq, this.' || quote_ident(pSeqCol) || ' AS thisseq FROM ' || _schema || '.' || quote_ident(pTable) || ' AS next, ' || _schema || '.' || quote_ident(pTable) || ' AS this WHERE ((this.' || quote_ident(_keyfield) || '=$1) AND (next.' || quote_ident(pSeqCol) || CASE pDir WHEN 'UP' THEN ' < ' ELSE ' > ' END || 'this.' || quote_ident(pSeqCol) || ')' || CASE WHEN pJoinCol IS NULL THEN '' ELSE ' AND (next.' || quote_ident(pJoinCol) || '=this.' || quote_ident(pJoinCol) || ')' END || ' AND (' || COALESCE(pExtra, 'TRUE') || ')) ORDER BY nextseq ' || CASE pDir WHEN 'UP' THEN 'DESC' ELSE 'ASC' END || ' LIMIT 1;'; RAISE DEBUG 'moveUpDown about to use % when running %', pId, _qry; EXECUTE _qry INTO _r USING pId; GET DIAGNOSTICS _rowcnt = ROW_COUNT; RAISE DEBUG 'next id %, next seq %, this id %, this seq %', _r.nextid, _r.nextseq, pId, _r.thisseq; IF (_rowcnt > 0) THEN _qry := 'UPDATE ' || _schema || '.' || quote_ident(pTable) || ' SET ' || pSeqCol || '=CAST($1 AS INTEGER) WHERE (' || quote_ident(_keyfield) || '=$2);'; EXECUTE _qry USING -1, _r.nextid; EXECUTE _qry USING _r.nextseq, pId; EXECUTE _qry USING _r.thisseq, _r.nextid; RETURN _r.nextid; END IF; RETURN pId; END; $_$; ALTER FUNCTION public.moveupdown(pid integer, pschema text, ptable text, pseqcol text, pjoincol text, pextra text, pdir text) OWNER TO admin; -- -- Name: FUNCTION moveupdown(pid integer, pschema text, ptable text, pseqcol text, pjoincol text, pextra text, pdir text); Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON FUNCTION moveupdown(pid integer, pschema text, ptable text, pseqcol text, pjoincol text, pextra text, pdir text) IS 'moveUpDown moves a particular record up or down in an ordered list. pId argument names the record to move. pSchema (uses public if NULL) and pTable name the table holding the list. pSeqCol is the column that holds the sequence number. pJoinCol is the column that distinguishes one list from another in the same table, or NULL if the table holds only one list. pExtra is an extra join clause that may be required, or NULL. pDir is either UP, meaning move the pId record closer to the beginning, or DOWN. Returns the id of the record with which pId was swapped, or pId if the record was already at the end in the specified direction.'; -- -- Name: nextperiodbyinterval(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION nextperiodbyinterval(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; pInterval ALIAS FOR $2; _periodid INTEGER; BEGIN SELECT b.period_id INTO _periodid FROM period AS a, period AS b WHERE ((a.period_id=pPeriodid) AND (b.period_start >= a.period_start)) ORDER BY b.period_start LIMIT 1 OFFSET pInterval; IF (NOT FOUND) THEN RETURN -1; END IF; RETURN _periodid; END; $_$; ALTER FUNCTION public.nextperiodbyinterval(integer, integer) OWNER TO admin; -- -- Name: nextprsubnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION nextprsubnumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrNumber ALIAS FOR $1; _subNumber INTEGER; BEGIN SELECT MAX(pr_subnumber) INTO _subNumber FROM pr WHERE (pr_number=pPrNumber); IF (_subNumber IS NULL) THEN _subNumber := 0; END IF; RETURN (_subNumber + 1); END; $_$; ALTER FUNCTION public.nextprsubnumber(integer) OWNER TO admin; -- -- Name: nextwosubnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION nextwosubnumber(integer) RETURNS integer LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT COALESCE((MAX(wo_subnumber) + 1), 1) FROM wo WHERE (wo_number=($1)); $_$; ALTER FUNCTION public.nextwosubnumber(integer) OWNER TO admin; -- -- Name: noneg(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION noneg(numeric) RETURNS numeric LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pValue ALIAS FOR $1; BEGIN IF (pValue < 0) THEN RETURN 0; ELSE RETURN pValue; END IF; END; $_$; ALTER FUNCTION public.noneg(numeric) OWNER TO admin; -- -- Name: nopos(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION nopos(numeric) RETURNS numeric LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pValue ALIAS FOR $1; BEGIN IF (pValue > 0) THEN RETURN 0; ELSE RETURN pValue; END IF; END; $_$; ALTER FUNCTION public.nopos(numeric) OWNER TO admin; -- -- Name: normalizetrialbal(integer, character); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION normalizetrialbal(integer, character) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTrialbalid ALIAS FOR $1; pSide ALIAS FOR $2; _value NUMERIC; _r RECORD; BEGIN SELECT accnt_type, trialbal_beginning, trialbal_ending INTO _r FROM trialbal, accnt WHERE ( (trialbal_accnt_id=accnt_id) AND (trialbal_id=pTrialbalid) ); IF (NOT FOUND) THEN RETURN -1; END IF; -- If we are looking for the Ending Balance, cache it IF (pSide = 'E') THEN _value = _r.trialbal_ending; -- We had better been looking for the Beginning Balance! ELSE _value = _r.trialbal_beginning; END IF; -- If the accnt_type is Asset or Expense, swap the sense IF (_r.accnt_type IN ('A', 'E')) THEN _value := (_value * -1); END IF; RETURN _value; END; $_$; ALTER FUNCTION public.normalizetrialbal(integer, character) OWNER TO admin; -- -- Name: numofdatabaseusers(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION numofdatabaseusers() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _count INTEGER; BEGIN SELECT count(*) INTO _count FROM pg_stat_activity, pg_locks WHERE((database=datid) AND (classid=datid) AND (objsubid=2) AND (procpid = pg_backend_pid())); IF (_count IS NULL) THEN _count := 0; END IF; RETURN _count; END; $$; ALTER FUNCTION public.numofdatabaseusers() OWNER TO admin; -- -- Name: numofserverusers(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION numofserverusers() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _count INTEGER; BEGIN SELECT COUNT(*) INTO _count FROM pg_stat_activity; IF (_count IS NULL) THEN _count := 0; END IF; RETURN _count; END; $$; ALTER FUNCTION public.numofserverusers() OWNER TO admin; -- -- Name: openaccountingperiod(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION openaccountingperiod(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; _r RECORD; BEGIN -- Check to make use that the period is closed IF ( ( SELECT (NOT period_closed) FROM period WHERE (period_id=pPeriodid) ) ) THEN RETURN -1; END IF; IF ( ( SELECT (count(period_id) > 0) FROM period WHERE ((period_end > ( SELECT period_end FROM period WHERE (period_id=pPeriodId)) ) AND (period_closed)) ) ) THEN RETURN -3; END IF; -- Make sure the year is open IF ( ( SELECT (yearperiod_closed) FROM yearperiod JOIN period ON (period_yearperiod_id=yearperiod_id) WHERE (period_id=pPeriodid) ) ) THEN RETURN -4; END IF; -- Reset the period_closed flag UPDATE period SET period_closed=FALSE WHERE (period_id=pPeriodid); -- Post any unposted G/L Transactions into the new period FOR _r IN SELECT DISTINCT gltrans_sequence FROM gltrans, period WHERE ( (NOT gltrans_posted) AND (gltrans_date BETWEEN period_start AND period_end) AND (period_id=pPeriodid) ) LOOP PERFORM postIntoTrialBalance(_r.gltrans_sequence); END LOOP; RETURN pPeriodid; END; $_$; ALTER FUNCTION public.openaccountingperiod(integer) OWNER TO admin; -- -- Name: openaccountingyearperiod(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION openaccountingyearperiod(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pYearPeriodId ALIAS FOR $1; _r RECORD; BEGIN -- Check to make use that the yearperiod is closed IF ( ( SELECT (NOT yearperiod_closed) FROM yearperiod WHERE (yearperiod_id=pYearPeriodId) ) ) THEN RETURN -1; END IF; IF ( ( SELECT (count(yearperiod_id) > 0) FROM yearperiod WHERE ((yearperiod_end> ( SELECT yearperiod_end FROM yearperiod WHERE (yearperiod_id=pYearPeriodId)) ) AND (yearperiod_closed)) ) ) THEN RETURN -2; END IF; -- Reset the yearperiod_closed flag UPDATE yearperiod SET yearperiod_closed=FALSE WHERE (yearperiod_id=pYearPeriodId); RETURN pYearPeriodid; END; $_$; ALTER FUNCTION public.openaccountingyearperiod(integer) OWNER TO admin; -- -- Name: openapitemsvalue(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION openapitemsvalue(pvendid integer, pperiodid integer) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _value NUMERIC; BEGIN SELECT SUM( (apopen_amount - apopen_paid) / apopen_curr_rate * CASE WHEN (apopen_doctype IN ('D', 'V')) THEN 1 ELSE -1 END ) INTO _value FROM apopen WHERE ( (apopen_open) AND (apopen_vend_id=pVendid) AND (apopen_duedate BETWEEN findPeriodStart(pPeriodid) AND findPeriodEnd(pPeriodid)) ); RETURN COALESCE(_value, 0.0); END; $$; ALTER FUNCTION public.openapitemsvalue(pvendid integer, pperiodid integer) OWNER TO admin; -- -- Name: openaritemsvalue(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION openaritemsvalue(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; pPeriodid ALIAS FOR $2; _value NUMERIC; BEGIN SELECT SUM( CASE WHEN (aropen_doctype IN ('C', 'R')) THEN ((aropen_amount - aropen_paid) * -1) ELSE (aropen_amount - aropen_paid) END ) INTO _value FROM aropen WHERE ( (aropen_open) AND (aropen_cust_id=pCustid) AND (aropen_duedate BETWEEN findPeriodStart(pPeriodid) AND findPeriodEnd(pPeriodid)) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; ALTER FUNCTION public.openaritemsvalue(integer, integer) OWNER TO admin; -- -- Name: openrecurringitems(integer, text, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION openrecurringitems(integer, text, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pParentid ALIAS FOR $1; pType TEXT := UPPER($2); pDatetime TIMESTAMP WITH TIME ZONE := COALESCE($3, CURRENT_TIMESTAMP); _count INTEGER := -1; _countstmt TEXT; _rt RECORD; BEGIN IF (pParentid IS NULL) THEN RETURN -11; END IF; SELECT * INTO _rt FROM recurtype WHERE (UPPER(recurtype_type)=pType); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count <= 0) THEN RETURN -10; END IF; _countstmt := 'SELECT COUNT(*) FROM [fulltable]' || ' WHERE (NOT ([done])' || ' AND ([schedcol]>=''$1'')' || ' AND ([table]_recurring_[table]_id=''$2''));'; _countstmt := REPLACE(_countstmt, '[fulltable]', _rt.recurtype_table); _countstmt := REPLACE(_countstmt, '[table]', REGEXP_REPLACE(_rt.recurtype_table, E'.*\\.', '')); _countstmt := REPLACE(_countstmt, '[done]', _rt.recurtype_donecheck); _countstmt := REPLACE(_countstmt, '[schedcol]', _rt.recurtype_schedcol); -- 8.4+: EXECUTE _countstmt INTO _count USING pDatetime, pParentid; EXECUTE REPLACE(REPLACE(_countstmt, '$1', pDatetime::TEXT), '$2', pParentid::TEXT) INTO _count; RETURN _count; END; $_$; ALTER FUNCTION public.openrecurringitems(integer, text, timestamp with time zone) OWNER TO admin; -- -- Name: ophead; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE ophead ( ophead_id integer NOT NULL, ophead_name text NOT NULL, ophead_crmacct_id integer, ophead_owner_username text, ophead_opstage_id integer, ophead_opsource_id integer, ophead_optype_id integer, ophead_probability_prcnt integer, ophead_amount numeric(20,4), ophead_target_date date, ophead_actual_date date, ophead_notes text, ophead_curr_id integer, ophead_active boolean DEFAULT true, ophead_cntct_id integer, ophead_username text, ophead_start_date date, ophead_assigned_date date, ophead_priority_id integer, ophead_number text NOT NULL, CONSTRAINT ophead_ophead_number_check CHECK ((ophead_number <> ''::text)) ); ALTER TABLE public.ophead OWNER TO admin; -- -- Name: TABLE ophead; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE ophead IS 'Opportunity header.'; -- -- Name: ophead(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION ophead() RETURNS SETOF ophead LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row ophead%ROWTYPE; _priv TEXT; _grant BOOLEAN; BEGIN -- This query will give us the most permissive privilege the user has been granted SELECT privilege, granted INTO _priv, _grant FROM privgranted WHERE privilege IN ('MaintainAllOpportunities','ViewAllOpportunities','MaintainPersonalOpportunities','ViewPersonalOpportunities') ORDER BY granted DESC, sequence LIMIT 1; -- If have an 'All' privilege return all results IF (_priv ~ 'All' AND _grant) THEN FOR _row IN SELECT * FROM ophead LOOP RETURN NEXT _row; END LOOP; -- Otherwise if have any other grant, must be personal privilege. ELSIF (_grant) THEN FOR _row IN SELECT * FROM ophead WHERE getEffectiveXtUser() IN (ophead_owner_username, ophead_username) LOOP RETURN NEXT _row; END LOOP; END IF; RETURN; END; $$; ALTER FUNCTION public.ophead() OWNER TO admin; -- -- Name: FUNCTION ophead(); Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON FUNCTION ophead() IS 'A table function that returns Opportunity results according to privilege settings.'; -- -- Name: orderedbypo(integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION orderedbypo(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _qty NUMERIC; BEGIN SELECT COALESCE(SUM(noNeg(poitem_qty_ordered - poitem_qty_received) * poitem_invvenduomratio), 0.0) INTO _qty FROM poitem WHERE ( (poitem_itemsite_id=pItemsiteid) AND (poitem_status <> 'C') AND (poitem_duedate BETWEEN pStartDate AND pEndDate) ); RETURN _qty; END; $_$; ALTER FUNCTION public.orderedbypo(integer, date, date) OWNER TO admin; -- -- Name: orderedbypo(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION orderedbypo(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pLookAhead ALIAS FOR $2; _qty NUMERIC; BEGIN SELECT orderedByPo(pItemsiteid, startOfTime(), (CURRENT_DATE + pLookAhead)) INTO _qty; RETURN _qty; END; $_$; ALTER FUNCTION public.orderedbypo(integer, integer) OWNER TO admin; -- -- Name: orderedbywo(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION orderedbywo(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pLookAheadDays ALIAS FOR $2; BEGIN RETURN orderedByWo(pItemsiteid, startOfTime(), (CURRENT_DATE + pLookAheadDays)); END; $_$; ALTER FUNCTION public.orderedbywo(integer, integer) OWNER TO admin; -- -- Name: orderedbywo(integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION orderedbywo(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _itemType CHARACTER(1); _qty NUMERIC := 0; BEGIN SELECT item_type INTO _itemType FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ); IF (_itemType NOT IN ('C','T')) THEN SELECT COALESCE(SUM(noNeg(wo_qtyord - wo_qtyrcv)), 0.0) INTO _qty FROM wo WHERE ( (wo_status <> 'C') AND (wo_itemsite_id=pItemsiteid) AND (wo_duedate BETWEEN pStartDate AND pEndDate) ); ELSIF (_itemType = 'C') THEN SELECT COALESCE(SUM((noNeg(wo_qtyord - wo_qtyrcv) * brddist_stdqtyper)), 0.0) INTO _qty FROM wo, xtmfg.brddist WHERE ( (wo_status <> 'C') AND (brddist_wo_id=wo_id) AND (brddist_itemsite_id=pItemsiteid) AND (wo_duedate BETWEEN pStartDate AND pEndDate) ); ELSIF (_itemType = 'T' AND fetchMetricBool('Routings')) THEN -- Tooling: Determine quantity already returned SELECT -- Qty Required COALESCE(SUM(noNeg(womatl_qtyreq)),0) - -- Qty Returned (SELECT COALESCE(SUM(abs(invhist_invqty)),0) FROM wo JOIN womatl ON (womatl_wo_id=wo_id) JOIN womatlpost ON (womatl_id=womatlpost_womatl_id) JOIN invhist ON ((womatlpost_invhist_id=invhist_id) AND (invhist_invqty < 0)) LEFT OUTER JOIN xtmfg.wooper ON (womatl_wooper_id=wooper_id) WHERE ( NOT (COALESCE(wooper_rncomplete,wo_status = 'C')) AND (womatl_itemsite_id=pItemsiteid) AND (wo_duedate BETWEEN pStartDate AND pEndDate) ) ) INTO _qty FROM wo JOIN womatl ON (womatl_wo_id=wo_id) LEFT OUTER JOIN xtmfg.wooper ON (womatl_wooper_id=wooper_id) WHERE ( NOT (COALESCE(wooper_rncomplete,wo_status = 'C')) AND (womatl_itemsite_id=pItemsiteid) AND (wo_duedate BETWEEN pStartDate AND pEndDate) ) GROUP BY womatl_qtyreq; ELSIF (_itemType = 'T') THEN -- Tooling: Determine quantity already returned SELECT -- Qty Required COALESCE(SUM(noNeg(womatl_qtyreq)),0) - -- Qty Returned (SELECT COALESCE(SUM(abs(invhist_invqty)),0) FROM wo JOIN womatl ON (womatl_wo_id=wo_id) JOIN womatlpost ON (womatl_id=womatlpost_womatl_id) JOIN invhist ON ((womatlpost_invhist_id=invhist_id) AND (invhist_invqty < 0)) WHERE ( NOT (wo_status = 'C') AND (womatl_itemsite_id=pItemsiteid) AND (wo_duedate BETWEEN pStartDate AND pEndDate) ) ) INTO _qty FROM wo JOIN womatl ON (womatl_wo_id=wo_id) WHERE ( NOT (wo_status = 'C') AND (womatl_itemsite_id=pItemsiteid) AND (wo_duedate BETWEEN pStartDate AND pEndDate) ) GROUP BY womatl_qtyreq; END IF; RETURN COALESCE(_qty,0); END; $_$; ALTER FUNCTION public.orderedbywo(integer, date, date) OWNER TO admin; -- -- Name: orderhead(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION orderhead() RETURNS SETOF ordhead LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row ordhead%ROWTYPE; _query TEXT; BEGIN _query := ' SELECT DISTINCT * FROM ( SELECT pohead_id AS orderhead_id, ''PO'' AS orderhead_type, pohead_number AS orderhead_number, pohead_status AS orderhead_status, pohead_orderdate AS orderhead_orderdate, (SELECT count(*) FROM poitem WHERE poitem_pohead_id=pohead_id) AS orderhead_linecount, pohead_vend_id AS orderhead_from_id, vend_name AS orderhead_from, NULL AS orderhead_to_id, '''' AS orderhead_to, pohead_curr_id AS orderhead_curr_id, pohead_agent_username AS orderhead_agent_username, pohead_shipvia AS orderhead_shipvia FROM pohead LEFT OUTER JOIN vendinfo ON (pohead_vend_id=vend_id) UNION SELECT cohead_id AS orderhead_id, ''SO'' AS orderhead_type, cohead_number AS orderhead_number, COALESCE(coitem_status,''C'') AS orderhead_status, cohead_orderdate AS orderhead_orderdate, (SELECT count(*) FROM coitem WHERE coitem_cohead_id=cohead_id) AS orderhead_linecount, NULL AS orderhead_from_id, '''' AS orderhead_from, cohead_cust_id AS orderhead_to_id, cust_name AS orderhead_to, cohead_curr_id AS orderhead_curr_id, '''' AS orderhead_agent_username, cohead_shipvia AS orderhead_shipvia FROM cohead LEFT OUTER JOIN custinfo ON (cohead_cust_id=cust_id) LEFT OUTER JOIN coitem ON ((cohead_id=coitem_cohead_id) AND (coitem_status=''O''))'; IF (fetchmetricbool('MultiWhs')) THEN _query := _query || ' UNION SELECT tohead_id AS orderhead_id, ''TO'' AS orderhead_type, tohead_number AS orderhead_number, tohead_status AS orderhead_status, tohead_orderdate AS orderhead_orderdate, (SELECT count(*) FROM toitem WHERE toitem_tohead_id=tohead_id) AS orderhead_linecount, tohead_src_warehous_id AS orderhead_from_id, tohead_srcname AS orderhead_from, tohead_dest_warehous_id AS orderhead_to_id, tohead_destname AS orderhead_to, tohead_freight_curr_id AS orderhead_curr_id, tohead_agent_username AS orderhead_agent_username, tohead_shipvia AS orderhead_shipvia FROM tohead'; END IF; IF (fetchmetricbool('EnableReturnAuth')) THEN _query := _query || ' UNION SELECT rahead_id AS orderhead_id, ''RA'' AS orderhead_type, rahead_number AS orderhead_number, COALESCE(raitem_status,''C'') AS orderhead_status, rahead_authdate AS orderhead_orderdate, (SELECT count(*) FROM raitem WHERE raitem_rahead_id=rahead_id) AS orderhead_linecount, rahead_cust_id AS orderhead_from_id, cust_name AS orderhead_from, NULL AS orderhead_to_id, '''' AS orderhead_to, rahead_curr_id AS orderhead_curr_id, '''' AS orderhead_agent_username, '''' AS orderhead_shipvia FROM rahead LEFT OUTER JOIN custinfo ON (rahead_cust_id=cust_id) LEFT OUTER JOIN raitem ON ((rahead_id=raitem_rahead_id) AND (raitem_status=''O''))'; END IF; _query := _query || ') AS data ORDER BY orderhead_type, orderhead_number ;'; FOR _row IN EXECUTE _query LOOP RETURN NEXT _row; END LOOP; RETURN; END; $$; ALTER FUNCTION public.orderhead() OWNER TO admin; -- -- Name: orderitem(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION orderitem() RETURNS SETOF orditem LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row orditem%ROWTYPE; _query TEXT; BEGIN _query := ' SELECT poitem_id AS orderitem_id, ''PO'' AS orderitem_orderhead_type, poitem_pohead_id AS orderitem_orderhead_id, poitem_linenumber AS orderitem_linenumber, poitem_status AS orderitem_status, poitem_itemsite_id AS orderitem_itemsite_id, poitem_duedate AS orderitem_scheddate, poitem_qty_ordered AS orderitem_qty_ordered, poitem_qty_returned AS orderitem_qty_shipped, poitem_qty_received AS orderitem_qty_received, uom_id AS orderitem_qty_uom_id, poitem_invvenduomratio AS orderitem_qty_invuomratio, poitem_unitprice AS orderitem_unitcost, pohead_curr_id AS orderitem_unitcost_curr_id, poitem_freight AS orderitem_freight, poitem_freight_received AS orderitem_freight_received, pohead_curr_id AS orderitem_freight_curr_id FROM poitem LEFT OUTER JOIN pohead ON (poitem_pohead_id=pohead_id) LEFT OUTER JOIN uom ON (uom_name=poitem_vend_uom) UNION SELECT coitem_id AS orderitem_id, ''SO'' AS orderitem_orderhead_type, coitem_cohead_id AS orderitem_orderhead_id, coitem_linenumber AS orderitem_linenumber, coitem_status AS orderitem_status, coitem_itemsite_id AS orderitem_itemsite_id, coitem_scheddate AS orderitem_scheddate, coitem_qtyord AS orderitem_qty_ordered, coitem_qtyshipped AS orderitem_qty_shipped, coitem_qtyreturned AS orderitem_qty_received, coitem_qty_uom_id AS orderitem_qty_uom_id, coitem_qty_invuomratio AS orderitem_qty_invuomratio, coitem_unitcost AS orderitem_unitcost, basecurrid() AS orderitem_unitcost_curr_id, NULL AS orderitem_freight, NULL AS orderitem_freight_received, basecurrid() AS orderitem_freight_curr_id FROM coitem'; IF (fetchmetricbool('MultiWhs')) THEN _query := _query || ' UNION SELECT toitem_id AS orderitem_id, ''TO'' AS orderitem_orderhead_type, toitem_tohead_id AS orderitem_orderhead_id, toitem_linenumber AS orderitem_linenumber, toitem_status AS orderitem_status, itemsite_id AS orderitem_itemsite_id, toitem_duedate AS orderitem_scheddate, toitem_qty_ordered AS orderitem_qty_ordered, toitem_qty_shipped AS orderitem_qty_shipped, toitem_qty_received AS orderitem_qty_received, uom_id AS orderitem_qty_uom_id, 1 AS orderitem_qty_invuomratio, toitem_stdcost AS orderitem_unitcost, basecurrid() AS orderitem_unitcost_curr_id, toitem_freight AS orderitem_freight, toitem_freight_received AS orderitem_freight_received, toitem_freight_curr_id AS orderitem_freight_curr_id FROM tohead, itemsite, toitem LEFT OUTER JOIN uom ON (uom_name=toitem_uom) WHERE ((toitem_tohead_id=tohead_id) AND (tohead_src_warehous_id=itemsite_warehous_id) AND (toitem_item_id=itemsite_item_id)) '; END IF; IF (fetchmetricbool('EnableReturnAuth')) THEN _query := _query || ' UNION SELECT raitem_id AS orderitem_id, ''RA'' AS orderitem_orderhead_type, raitem_rahead_id AS orderitem_orderhead_id, raitem_linenumber AS orderitem_linenumber, raitem_status AS orderitem_status, raitem_itemsite_id AS orderitem_itemsite_id, raitem_scheddate AS orderitem_scheddate, raitem_qtyauthorized AS orderitem_qty_ordered, 0 AS orderitem_qty_shipped, raitem_qtyreceived AS orderitem_qty_received, raitem_qty_uom_id AS orderitem_qty_uom_id, raitem_qty_invuomratio AS orderitem_qty_invuomratio, raitem_unitprice AS orderitem_unitcost, basecurrid() AS orderitem_unitcost_curr_id, NULL AS orderitem_freight, NULL AS orderitem_freight_received, basecurrid() AS orderitem_freight_curr_id FROM raitem'; END IF; FOR _row IN EXECUTE _query LOOP RETURN NEXT _row; END LOOP; RETURN; END; $$; ALTER FUNCTION public.orderitem() OWNER TO admin; -- -- Name: orderitemdata(text, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION orderitemdata(text, integer, integer) RETURNS SETOF orderitemtype LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOrdertype ALIAS FOR $1; pOrderheadid ALIAS FOR $2; pOrderitemid ALIAS FOR $3; _row orderitemtype%ROWTYPE; _set RECORD; BEGIN IF(UPPER(pOrdertype)='PO') THEN FOR _set IN SELECT poitem_id AS orderitem_id, 'PO' AS orderitem_orderhead_type, poitem_pohead_id AS orderitem_orderhead_id, poitem_linenumber AS orderitem_linenumber, poitem_status AS orderitem_status, poitem_itemsite_id AS orderitem_itemsite_id, poitem_duedate AS orderitem_scheddate, poitem_qty_ordered AS orderitem_qty_ordered, poitem_qty_returned AS orderitem_qty_shipped, poitem_qty_received AS orderitem_qty_received, uom_id AS orderitem_qty_uom_id, poitem_invvenduomratio AS orderitem_qty_invuomratio, poitem_unitprice AS orderitem_unitcost, (SELECT pohead_curr_id FROM pohead WHERE pohead_id=poitem_pohead_id) AS orderitem_unitcost_curr_id, poitem_freight AS orderitem_freight, poitem_freight_received AS orderitem_freight_received, (SELECT pohead_curr_id FROM pohead WHERE pohead_id=poitem_pohead_id) AS orderitem_freight_curr_id FROM poitem LEFT OUTER JOIN uom ON (uom_name=poitem_vend_uom) WHERE(((pOrderheadid IS NULL) OR (poitem_pohead_id=pOrderheadid)) AND ((pOrderitemid IS NULL) OR (poitem_id=pOrderitemid))) LOOP _row.orderitem_id := _set.orderitem_id; _row.orderitem_orderhead_type := _set.orderitem_orderhead_type; _row.orderitem_orderhead_id := _set.orderitem_orderhead_id; _row.orderitem_linenumber := _set.orderitem_linenumber; _row.orderitem_status := _set.orderitem_status; _row.orderitem_itemsite_id := _set.orderitem_itemsite_id; _row.orderitem_scheddate := _set.orderitem_scheddate; _row.orderitem_qty_ordered := _set.orderitem_qty_ordered; _row.orderitem_qty_shipped := _set.orderitem_qty_shipped; _row.orderitem_qty_received := _set.orderitem_qty_received; _row.orderitem_qty_uom_id := _set.orderitem_qty_uom_id; _row.orderitem_qty_invuomratio := _set.orderitem_qty_invuomratio; _row.orderitem_unitcost := _set.orderitem_unitcost; _row.orderitem_unitcost_curr_id := _set.orderitem_unitcost_curr_id; _row.orderitem_freight := _set.orderitem_freight; _row.orderitem_freight_received := _set.orderitem_freight_received; _row.orderitem_freight_curr_id := _set.orderitem_freight_curr_id; RETURN NEXT _row; END LOOP; ELSEIF(UPPER(pOrdertype)='SO') THEN FOR _set IN SELECT coitem_id AS orderitem_id, 'SO' AS orderitem_orderhead_type, coitem_cohead_id AS orderitem_orderhead_id, coitem_linenumber AS orderitem_linenumber, coitem_status AS orderitem_status, coitem_itemsite_id AS orderitem_itemsite_id, coitem_scheddate AS orderitem_scheddate, coitem_qtyord AS orderitem_qty_ordered, coitem_qtyshipped AS orderitem_qty_shipped, coitem_qtyreturned AS orderitem_qty_received, coitem_qty_uom_id AS orderitem_qty_uom_id, coitem_qty_invuomratio AS orderitem_qty_invuomratio, coitem_unitcost AS orderitem_unitcost, basecurrid() AS orderitem_unitcost_curr_id, NULL AS orderitem_freight, NULL AS orderitem_freight_received, basecurrid() AS orderitem_freight_curr_id FROM coitem WHERE(((pOrderheadid IS NULL) OR (coitem_cohead_id=pOrderheadid)) AND ((pOrderitemid IS NULL) OR (coitem_id=pOrderitemid))) LOOP _row.orderitem_id := _set.orderitem_id; _row.orderitem_orderhead_type := _set.orderitem_orderhead_type; _row.orderitem_orderhead_id := _set.orderitem_orderhead_id; _row.orderitem_linenumber := _set.orderitem_linenumber; _row.orderitem_status := _set.orderitem_status; _row.orderitem_itemsite_id := _set.orderitem_itemsite_id; _row.orderitem_scheddate := _set.orderitem_scheddate; _row.orderitem_qty_ordered := _set.orderitem_qty_ordered; _row.orderitem_qty_shipped := _set.orderitem_qty_shipped; _row.orderitem_qty_received := _set.orderitem_qty_received; _row.orderitem_qty_uom_id := _set.orderitem_qty_uom_id; _row.orderitem_qty_invuomratio := _set.orderitem_qty_invuomratio; _row.orderitem_unitcost := _set.orderitem_unitcost; _row.orderitem_unitcost_curr_id := _set.orderitem_unitcost_curr_id; _row.orderitem_freight := _set.orderitem_freight; _row.orderitem_freight_received := _set.orderitem_freight_received; _row.orderitem_freight_curr_id := _set.orderitem_freight_curr_id; RETURN NEXT _row; END LOOP; ELSEIF(UPPER(pOrdertype)='RA') THEN FOR _set IN SELECT raitem_id AS orderitem_id, 'RA' AS orderitem_orderhead_type, raitem_rahead_id AS orderitem_orderhead_id, raitem_linenumber AS orderitem_linenumber, raitem_status AS orderitem_status, raitem_itemsite_id AS orderitem_itemsite_id, raitem_scheddate AS orderitem_scheddate, raitem_qtyauthorized AS orderitem_qty_ordered, 0 AS orderitem_qty_shipped, raitem_qtyreceived AS orderitem_qty_received, raitem_qty_uom_id AS orderitem_qty_uom_id, raitem_qty_invuomratio AS orderitem_qty_invuomratio, raitem_unitprice AS orderitem_unitcost, basecurrid() AS orderitem_unitcost_curr_id, NULL AS orderitem_freight, NULL AS orderitem_freight_received, basecurrid() AS orderitem_freight_curr_id FROM raitem WHERE(((pOrderheadid IS NULL) OR (raitem_rahead_id=pOrderheadid)) AND ((pOrderitemid IS NULL) OR (raitem_id=pOrderitemid))) LOOP _row.orderitem_id := _set.orderitem_id; _row.orderitem_orderhead_type := _set.orderitem_orderhead_type; _row.orderitem_orderhead_id := _set.orderitem_orderhead_id; _row.orderitem_linenumber := _set.orderitem_linenumber; _row.orderitem_status := _set.orderitem_status; _row.orderitem_itemsite_id := _set.orderitem_itemsite_id; _row.orderitem_scheddate := _set.orderitem_scheddate; _row.orderitem_qty_ordered := _set.orderitem_qty_ordered; _row.orderitem_qty_shipped := _set.orderitem_qty_shipped; _row.orderitem_qty_received := _set.orderitem_qty_received; _row.orderitem_qty_uom_id := _set.orderitem_qty_uom_id; _row.orderitem_qty_invuomratio := _set.orderitem_qty_invuomratio; _row.orderitem_unitcost := _set.orderitem_unitcost; _row.orderitem_unitcost_curr_id := _set.orderitem_unitcost_curr_id; _row.orderitem_freight := _set.orderitem_freight; _row.orderitem_freight_received := _set.orderitem_freight_received; _row.orderitem_freight_curr_id := _set.orderitem_freight_curr_id; RETURN NEXT _row; END LOOP; ELSEIF(UPPER(pOrdertype)='TO') THEN FOR _set IN SELECT toitem_id AS orderitem_id, 'TO' AS orderitem_orderhead_type, toitem_tohead_id AS orderitem_orderhead_id, toitem_linenumber AS orderitem_linenumber, toitem_status AS orderitem_status, itemsite_id AS orderitem_itemsite_id, toitem_duedate AS orderitem_scheddate, toitem_qty_ordered AS orderitem_qty_ordered, toitem_qty_shipped AS orderitem_qty_shipped, toitem_qty_received AS orderitem_qty_received, uom_id AS orderitem_qty_uom_id, 1 AS orderitem_qty_invuomratio, toitem_stdcost AS orderitem_unitcost, basecurrid() AS orderitem_unitcost_curr_id, toitem_freight AS orderitem_freight, toitem_freight_received AS orderitem_freight_received, toitem_freight_curr_id AS orderitem_freight_curr_id FROM tohead, itemsite, toitem LEFT OUTER JOIN uom ON (uom_name=toitem_uom) WHERE((toitem_tohead_id=tohead_id) AND (tohead_src_warehous_id=itemsite_warehous_id) AND (toitem_item_id=itemsite_item_id) AND ((pOrderheadid IS NULL) OR (toitem_tohead_id=pOrderheadid)) AND ((pOrderitemid IS NULL) OR (toitem_id=pOrderitemid))) LOOP _row.orderitem_id := _set.orderitem_id; _row.orderitem_orderhead_type := _set.orderitem_orderhead_type; _row.orderitem_orderhead_id := _set.orderitem_orderhead_id; _row.orderitem_linenumber := _set.orderitem_linenumber; _row.orderitem_status := _set.orderitem_status; _row.orderitem_itemsite_id := _set.orderitem_itemsite_id; _row.orderitem_scheddate := _set.orderitem_scheddate; _row.orderitem_qty_ordered := _set.orderitem_qty_ordered; _row.orderitem_qty_shipped := _set.orderitem_qty_shipped; _row.orderitem_qty_received := _set.orderitem_qty_received; _row.orderitem_qty_uom_id := _set.orderitem_qty_uom_id; _row.orderitem_qty_invuomratio := _set.orderitem_qty_invuomratio; _row.orderitem_unitcost := _set.orderitem_unitcost; _row.orderitem_unitcost_curr_id := _set.orderitem_unitcost_curr_id; _row.orderitem_freight := _set.orderitem_freight; _row.orderitem_freight_received := _set.orderitem_freight_received; _row.orderitem_freight_curr_id := _set.orderitem_freight_curr_id; RETURN NEXT _row; END LOOP; END IF; RETURN; END; $_$; ALTER FUNCTION public.orderitemdata(text, integer, integer) OWNER TO admin; -- -- Name: packageisenabled(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION packageisenabled(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT COUNT(*) >= 8 FROM pg_inherits, pg_class, pg_namespace, pkghead WHERE ((inhrelid=pg_class.oid) AND (relnamespace=pg_namespace.oid) AND (nspname=lower(pkghead_name)) AND (pkghead_id=$1)); $_$; ALTER FUNCTION public.packageisenabled(integer) OWNER TO admin; -- -- Name: packageisenabled(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION packageisenabled(text) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT COUNT(*) >= 8 FROM pg_inherits, pg_class, pg_namespace WHERE ((inhrelid=pg_class.oid) AND (relnamespace=pg_namespace.oid) AND (nspname=lower($1))); $_$; ALTER FUNCTION public.packageisenabled(text) OWNER TO admin; -- -- Name: pgp_key_id(bytea); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pgp_key_id(bytea) RETURNS text LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_key_id_w'; ALTER FUNCTION public.pgp_key_id(bytea) OWNER TO admin; -- -- Name: pgp_pub_decrypt(bytea, bytea); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pgp_pub_decrypt(bytea, bytea) RETURNS text LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_pub_decrypt_text'; ALTER FUNCTION public.pgp_pub_decrypt(bytea, bytea) OWNER TO admin; -- -- Name: pgp_pub_decrypt(bytea, bytea, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pgp_pub_decrypt(bytea, bytea, text) RETURNS text LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_pub_decrypt_text'; ALTER FUNCTION public.pgp_pub_decrypt(bytea, bytea, text) OWNER TO admin; -- -- Name: pgp_pub_decrypt(bytea, bytea, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pgp_pub_decrypt(bytea, bytea, text, text) RETURNS text LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_pub_decrypt_text'; ALTER FUNCTION public.pgp_pub_decrypt(bytea, bytea, text, text) OWNER TO admin; -- -- Name: pgp_pub_decrypt_bytea(bytea, bytea); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pgp_pub_decrypt_bytea(bytea, bytea) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_pub_decrypt_bytea'; ALTER FUNCTION public.pgp_pub_decrypt_bytea(bytea, bytea) OWNER TO admin; -- -- Name: pgp_pub_decrypt_bytea(bytea, bytea, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pgp_pub_decrypt_bytea(bytea, bytea, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_pub_decrypt_bytea'; ALTER FUNCTION public.pgp_pub_decrypt_bytea(bytea, bytea, text) OWNER TO admin; -- -- Name: pgp_pub_decrypt_bytea(bytea, bytea, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pgp_pub_decrypt_bytea(bytea, bytea, text, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_pub_decrypt_bytea'; ALTER FUNCTION public.pgp_pub_decrypt_bytea(bytea, bytea, text, text) OWNER TO admin; -- -- Name: pgp_pub_encrypt(text, bytea); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pgp_pub_encrypt(text, bytea) RETURNS bytea LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pgp_pub_encrypt_text'; ALTER FUNCTION public.pgp_pub_encrypt(text, bytea) OWNER TO admin; -- -- Name: pgp_pub_encrypt(text, bytea, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pgp_pub_encrypt(text, bytea, text) RETURNS bytea LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pgp_pub_encrypt_text'; ALTER FUNCTION public.pgp_pub_encrypt(text, bytea, text) OWNER TO admin; -- -- Name: pgp_pub_encrypt_bytea(bytea, bytea); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pgp_pub_encrypt_bytea(bytea, bytea) RETURNS bytea LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pgp_pub_encrypt_bytea'; ALTER FUNCTION public.pgp_pub_encrypt_bytea(bytea, bytea) OWNER TO admin; -- -- Name: pgp_pub_encrypt_bytea(bytea, bytea, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pgp_pub_encrypt_bytea(bytea, bytea, text) RETURNS bytea LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pgp_pub_encrypt_bytea'; ALTER FUNCTION public.pgp_pub_encrypt_bytea(bytea, bytea, text) OWNER TO admin; -- -- Name: pgp_sym_decrypt(bytea, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pgp_sym_decrypt(bytea, text) RETURNS text LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_sym_decrypt_text'; ALTER FUNCTION public.pgp_sym_decrypt(bytea, text) OWNER TO admin; -- -- Name: pgp_sym_decrypt(bytea, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pgp_sym_decrypt(bytea, text, text) RETURNS text LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_sym_decrypt_text'; ALTER FUNCTION public.pgp_sym_decrypt(bytea, text, text) OWNER TO admin; -- -- Name: pgp_sym_decrypt_bytea(bytea, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pgp_sym_decrypt_bytea(bytea, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_sym_decrypt_bytea'; ALTER FUNCTION public.pgp_sym_decrypt_bytea(bytea, text) OWNER TO admin; -- -- Name: pgp_sym_decrypt_bytea(bytea, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pgp_sym_decrypt_bytea(bytea, text, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_sym_decrypt_bytea'; ALTER FUNCTION public.pgp_sym_decrypt_bytea(bytea, text, text) OWNER TO admin; -- -- Name: pgp_sym_encrypt(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pgp_sym_encrypt(text, text) RETURNS bytea LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pgp_sym_encrypt_text'; ALTER FUNCTION public.pgp_sym_encrypt(text, text) OWNER TO admin; -- -- Name: pgp_sym_encrypt(text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pgp_sym_encrypt(text, text, text) RETURNS bytea LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pgp_sym_encrypt_text'; ALTER FUNCTION public.pgp_sym_encrypt(text, text, text) OWNER TO admin; -- -- Name: pgp_sym_encrypt_bytea(bytea, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pgp_sym_encrypt_bytea(bytea, text) RETURNS bytea LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pgp_sym_encrypt_bytea'; ALTER FUNCTION public.pgp_sym_encrypt_bytea(bytea, text) OWNER TO admin; -- -- Name: pgp_sym_encrypt_bytea(bytea, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pgp_sym_encrypt_bytea(bytea, text, text) RETURNS bytea LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pgp_sym_encrypt_bytea'; ALTER FUNCTION public.pgp_sym_encrypt_bytea(bytea, text, text) OWNER TO admin; -- -- Name: pkgmaybemodified(name); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION pkgmaybemodified(name) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pschemaname ALIAS FOR $1; _returnval BOOLEAN; BEGIN SELECT pkghead_indev INTO _returnval FROM pkghead WHERE (pkghead_name=pschemaname); IF (NOT FOUND) THEN RETURN FALSE; END IF; RETURN _returnval; END; $_$; ALTER FUNCTION public.pkgmaybemodified(name) OWNER TO admin; -- -- Name: plpgsql_call_handler(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION plpgsql_call_handler() RETURNS language_handler LANGUAGE c AS '$libdir/plpgsql', 'plpgsql_call_handler'; ALTER FUNCTION public.plpgsql_call_handler() OWNER TO admin; -- -- Name: plpgsql_validator(oid); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION plpgsql_validator(oid) RETURNS void LANGUAGE c AS '$libdir/plpgsql', 'plpgsql_validator'; ALTER FUNCTION public.plpgsql_validator(oid) OWNER TO admin; -- -- Name: postapcheck(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postapcheck(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'postAPCheck() is deprecated - use postCheck() instead'; RETURN postCheck($1, fetchJournalNumber('AP-CK')); END; $_$; ALTER FUNCTION public.postapcheck(integer) OWNER TO admin; -- -- Name: postapcheck(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postapcheck(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'postAPCheck() is deprecated - use postCheck() instead'; RETURN postCheck($1, $2); END; $_$; ALTER FUNCTION public.postapcheck(integer, integer) OWNER TO admin; -- -- Name: postapchecks(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postapchecks(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'postAPChecks() is deprecated - use postChecks() instead'; RETURN postChecks($1); END; $_$; ALTER FUNCTION public.postapchecks(integer) OWNER TO admin; -- -- Name: postapcreditmemoapplication(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postapcreditmemoapplication(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenid ALIAS FOR $1; _src RECORD; _r RECORD; _totalAmount NUMERIC := 0.0; _exchGain NUMERIC := 0.0; _apaccntid INTEGER; BEGIN SELECT apopen_docnumber, (apopen_amount - apopen_paid) AS balance, -- SUM(currtocurr(apcreditapply_curr_id, apopen_curr_id, -- apcreditapply_amount, CURRENT_DATE)) AS toApply, SUM(apcreditapply_amount) AS toApply, apopen_curr_rate INTO _src FROM apopen, apcreditapply WHERE ( (apcreditapply_source_apopen_id=apopen_id) AND (apopen_id=pApopenid) ) GROUP BY apopen_docnumber, apopen_amount, apopen_paid, apopen_curr_rate; IF (NOT FOUND) THEN RETURN -1; ELSIF (_src.toApply = 0) THEN RETURN -2; ELSIF (_src.toApply > _src.balance) THEN RETURN -3; -- ELSIF (_src.toApply IS NULL AND _src.junk IS NOT NULL) THEN -- RETURN -4; -- missing exchange rate ELSIF (_src.toApply IS NULL) THEN RETURN -6; -- amount to apply is NULL for some unknown reason END IF; SELECT apopen_id, apopen_vend_id, apopen_docnumber, apopen_doctype, apopen_amount, apopen_curr_id, apopen_curr_rate, apopen_docdate, apopen_accnt_id INTO _src FROM apopen WHERE (apopen_id=pApopenid); IF (NOT FOUND) THEN RETURN -5; END IF; FOR _r IN SELECT apcreditapply_id, apcreditapply_target_apopen_id, apcreditapply_amount AS apply_amountSource, currToCurr(apcreditapply_curr_id, apopen_curr_id, apcreditapply_amount, CURRENT_DATE) AS apply_amountTarget, apopen_id, apopen_doctype, apopen_docnumber, apopen_curr_id, apopen_curr_rate, apopen_docdate FROM apcreditapply, apopen WHERE ( (apcreditapply_source_apopen_id=pApopenid) AND (apcreditapply_target_apopen_id=apopen_id) ) LOOP IF (_r.apply_amountTarget IS NULL) THEN RETURN -4; -- missing exchange rate END IF; IF (_r.apply_amountTarget > 0) THEN -- Update the apopen item to post the paid amount UPDATE apopen SET apopen_paid = (apopen_paid + _r.apply_amountTarget) WHERE (apopen_id=_r.apcreditapply_target_apopen_id); UPDATE apopen SET apopen_open = false, apopen_closedate = current_date WHERE ( (apopen_id=_r.apcreditapply_target_apopen_id) AND (apopen_amount <= apopen_paid) ); -- Cache the running amount posted _totalAmount := (_totalAmount + _r.apply_amountSource); -- Record the application INSERT INTO apapply ( apapply_vend_id, apapply_amount, apapply_source_apopen_id, apapply_source_doctype, apapply_source_docnumber, apapply_target_apopen_id, apapply_target_doctype, apapply_target_docnumber, apapply_postdate, apapply_journalnumber, apapply_username, apapply_curr_id ) VALUES ( _src.apopen_vend_id, round(_r.apply_amountSource, 2), pApopenid, 'C', _src.apopen_docnumber, _r.apopen_id, _r.apopen_doctype, _r.apopen_docnumber, CURRENT_DATE, 0, getEffectiveXtUser(), _src.apopen_curr_id ); END IF; -- Delete the posted apcreditapply record DELETE FROM apcreditapply WHERE (apcreditapply_id=_r.apcreditapply_id); END LOOP; -- Record the amount posted and mark the source apopen as closed if it is completely posted UPDATE apopen SET apopen_paid = (apopen_paid + _totalAmount) WHERE (apopen_id=pApopenid); UPDATE apopen SET apopen_open = false, apopen_closedate = current_date WHERE ( (apopen_id=pApopenid) AND (apopen_amount <= apopen_paid) ); IF (_r.apopen_curr_id = _src.apopen_curr_id) THEN IF (_r.apopen_docdate > _src.apopen_docdate) THEN _exchGain := (_totalAmount / _r.apopen_curr_rate - _totalAmount / _src.apopen_curr_rate) * -1; ELSE _exchGain := _totalAmount / _src.apopen_curr_rate - _totalAmount / _r.apopen_curr_rate; END IF; END IF; IF (_src.apopen_accnt_id > -1) THEN _apaccntid := _src.apopen_accnt_id; ELSE _apaccntid := findAPAccount(_src.apopen_vend_id); END IF; PERFORM insertGLTransaction(fetchJournalNumber('AP-MISC'), 'A/P', 'CM', _src.apopen_docnumber, 'CM Application', _apaccntid, getGainLossAccntId(_apaccntid), -1, _exchGain, CURRENT_DATE); RETURN pApopenid; END; $_$; ALTER FUNCTION public.postapcreditmemoapplication(integer) OWNER TO admin; -- -- Name: postapopenitems(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postapopenitems() RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN UPDATE apopen SET apopen_posted=TRUE WHERE (NOT apopen_posted); RETURN TRUE; END; $$; ALTER FUNCTION public.postapopenitems() OWNER TO admin; -- -- Name: postarcreditmemoapplication(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postarcreditmemoapplication(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAropenid ALIAS FOR $1; BEGIN RETURN postARCreditMemoApplication(pAropenid, CURRENT_DATE); END; $_$; ALTER FUNCTION public.postarcreditmemoapplication(integer) OWNER TO admin; -- -- Name: postarcreditmemoapplication(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postarcreditmemoapplication(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAropenid ALIAS FOR $1; _applyDate DATE := COALESCE($2, CURRENT_DATE); _p RECORD; _r RECORD; _totalAmount NUMERIC := 0; _totalTarget NUMERIC := 0; _exchGain NUMERIC := 0; _result NUMERIC; _araccntid INTEGER; BEGIN SELECT aropen_docnumber, ROUND(aropen_amount - aropen_paid, 2) AS balance, aropen_open, aropen_curr_rate, ROUND(SUM(currToCurr(arcreditapply_curr_id, aropen_curr_id, COALESCE(arcreditapply_amount, 0), _applyDate)), 2) AS toApply INTO _p FROM aropen, arcreditapply WHERE ( (arcreditapply_source_aropen_id=aropen_id) AND (aropen_id=pAropenid) ) GROUP BY aropen_docnumber, aropen_amount, aropen_paid, aropen_open, aropen_curr_rate; IF (NOT FOUND) THEN RETURN -1; ELSIF (_p.toApply = 0) THEN RETURN -2; ELSIF (_p.toApply > _p.balance) THEN RETURN -3; END IF; SELECT aropen_cust_id, aropen_docnumber, aropen_doctype, aropen_amount, aropen_curr_id, aropen_docdate, aropen_accnt_id, aropen_cust_id, aropen_curr_rate INTO _p FROM aropen WHERE (aropen_id=pAropenid); IF (NOT FOUND) THEN RETURN -5; END IF; FOR _r IN SELECT arcreditapply_id, arcreditapply_target_aropen_id, arcreditapply_amount AS arcreditapply_amountSource, arcreditapply_reftype, arcreditapply_ref_id, currToCurr(arcreditapply_curr_id, aropen_curr_id, arcreditapply_amount, _applyDate) AS arcreditapply_amountTarget, aropen_id, aropen_doctype, aropen_docnumber, aropen_docdate, aropen_curr_rate FROM arcreditapply, aropen WHERE ( (arcreditapply_source_aropen_id=pAropenid) AND (arcreditapply_target_aropen_id=aropen_id) ) LOOP IF (_r.arcreditapply_amountTarget IS NULL) THEN RETURN -4; END IF; IF (_r.arcreditapply_amountTarget > 0) THEN -- Update the aropen item to post the paid amount UPDATE aropen SET aropen_paid = round(aropen_paid + _r.arcreditapply_amountTarget, 2) WHERE (aropen_id=_r.arcreditapply_target_aropen_id); UPDATE aropen SET aropen_open = (round(aropen_amount, 2) > round(aropen_paid, 2)) WHERE (aropen_id=_r.arcreditapply_target_aropen_id); -- Cache the running amount posted _totalAmount := (_totalAmount + _r.arcreditapply_amountSource); _totalTarget := (_totalTarget + _r.arcreditapply_amountTarget); -- Record the application INSERT INTO arapply ( arapply_cust_id, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_fundstype, arapply_refnumber, arapply_applied, arapply_closed, arapply_postdate, arapply_distdate, arapply_journalnumber, arapply_username, arapply_curr_id, arapply_reftype, arapply_ref_id ) VALUES ( _p.aropen_cust_id, pAropenid, _p.aropen_doctype, _p.aropen_docnumber, _r.aropen_id, _r.aropen_doctype, _r.aropen_docnumber, '', '', round(_r.arcreditapply_amountSource, 2), TRUE, _applyDate, _applyDate, 0, getEffectiveXtUser(), _p.aropen_curr_id, _r.arcreditapply_reftype, _r.arcreditapply_ref_id ); END IF; -- Delete the posted arcreditapply record DELETE FROM arcreditapply WHERE (arcreditapply_id=_r.arcreditapply_id); IF (_r.aropen_docdate > _p.aropen_docdate) THEN _exchGain := (_totalTarget / _r.aropen_curr_rate - _totalAmount / _p.aropen_curr_rate) * -1; ELSE _exchGain := _totalAmount / _p.aropen_curr_rate - _totalTarget / _r.aropen_curr_rate; END IF; IF (_p.aropen_accnt_id > -1) THEN _araccntid := _p.aropen_accnt_id; ELSE _araccntid := findARAccount(_p.aropen_cust_id); END IF; IF (_exchGain <> 0) THEN PERFORM insertGLTransaction(fetchJournalNumber('AR-MISC'), 'A/R', 'CR', _p.aropen_docnumber, 'CM Application', _araccntid, getGainLossAccntId(_araccntid), -1, _exchGain * -1, _applyDate); END IF; END LOOP; -- TODO: If this is a Customer Deposit (aropen_doctype='R') -- the we need to convert the total to a base transaction IF(_p.aropen_doctype='R') THEN SELECT insertGLTransaction(fetchJournalNumber('AR-MISC'), 'A/R', 'CD', _p.aropen_docnumber, 'CM Application', cr.accnt_id, db.accnt_id, -1, currToBase(_p.aropen_curr_id, _totalAmount, _p.aropen_docdate), _applyDate) INTO _result FROM accnt AS cr, accnt AS db WHERE ((db.accnt_id = findDeferredAccount(_p.aropen_cust_id)) AND (cr.accnt_id = findARAccount(_p.aropen_cust_id)) ); IF(NOT FOUND OR _result < 0) THEN RAISE EXCEPTION 'There was an error posting the Customer Deposit GL Transactions.'; END IF; END IF; -- Record the amount posted and mark the source aropen as closed if it is completely posted UPDATE aropen SET aropen_paid = round(aropen_paid + _totalAmount, 2) WHERE (aropen_id=pAropenid); UPDATE aropen SET aropen_open = (round(aropen_amount, 2) > round(aropen_paid, 2)) WHERE (aropen_id=pAropenid); RETURN pAropenid; END; $_$; ALTER FUNCTION public.postarcreditmemoapplication(integer, date) OWNER TO admin; -- -- Name: postaropenitems(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postaropenitems() RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN UPDATE aropen SET aropen_posted=TRUE WHERE (NOT aropen_posted); RETURN TRUE; END; $$; ALTER FUNCTION public.postaropenitems() OWNER TO admin; -- -- Name: postbankadjustment(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postbankadjustment(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankadjid ALIAS FOR $1; _sequence INTEGER; _r RECORD; BEGIN -- Post the G/L transaction SELECT insertGLTransaction( fetchJournalNumber('GL-MISC'), 'G/L', 'AD', bankadj_docnumber, (bankadjtype_name || '-' || bankadj_notes), bankadjtype_accnt_id, bankaccnt_accnt_id, bankadj_id, round(currToBase(bankaccnt_curr_id, CASE WHEN(bankadjtype_iscredit) THEN (bankadj_amount * -1) ELSE bankadj_amount END, bankadj_date), 2), bankadj_date, TRUE, TRUE ) INTO _sequence FROM bankadj, bankaccnt, bankadjtype WHERE ( (bankadj_bankaccnt_id=bankaccnt_id) AND (bankadj_bankadjtype_id=bankadjtype_id) AND (NOT bankadj_posted) AND (bankadj_id=pBankadjid) ); IF ( NOT FOUND ) THEN RETURN -1; END IF; IF (_sequence >= 0) THEN -- Update the bankadj record with this sequence and mark it posted UPDATE bankadj SET bankadj_sequence = _sequence, bankadj_posted = TRUE WHERE bankadj_id=pBankadjid; END IF; RETURN _sequence; END; $_$; ALTER FUNCTION public.postbankadjustment(integer) OWNER TO admin; -- -- Name: postbankreconciliation(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postbankreconciliation(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankrecid ALIAS FOR $1; _accntid INTEGER; _sequence INTEGER; _gltransid INTEGER; _r RECORD; BEGIN -- Check the accnt information to make sure it is valid SELECT accnt_id INTO _accntid FROM bankrec, bankaccnt, accnt WHERE ( (bankaccnt_accnt_id=accnt_id) AND (bankrec_bankaccnt_id=bankaccnt_id) AND (bankrec_id=pBankrecid) ); IF ( NOT FOUND ) THEN RETURN -1; END IF; -- Delete any bankrecitem records that are not marked as cleared for cleanliness DELETE FROM bankrecitem WHERE ( (NOT bankrecitem_cleared) AND (bankrecitem_bankrec_id=pBankrecid) ); -- Post any bankadj items that were marked as cleared and convert the bankrecitem FOR _r IN SELECT bankrecitem_id, bankrecitem_source_id FROM bankrecitem, bankadj WHERE ( (bankrecitem_source = 'AD') AND (bankrecitem_source_id=bankadj_id) AND (bankrecitem_cleared) AND (NOT bankadj_posted) AND (bankrecitem_bankrec_id=pBankrecid) ) LOOP SELECT postBankAdjustment(_r.bankrecitem_source_id) INTO _sequence; IF (_sequence < 0) THEN RETURN -10; END IF; SELECT gltrans_id INTO _gltransid FROM gltrans WHERE ( (gltrans_sequence=_sequence) AND (gltrans_accnt_id=_accntid) ); IF ( NOT FOUND ) THEN RETURN -11; END IF; UPDATE bankrecitem SET bankrecitem_source = 'GL', bankrecitem_source_id=_gltransid WHERE (bankrecitem_id=_r.bankrecitem_id); END LOOP; -- Mark all the gltrans items that have been cleared as reconciled. UPDATE gltrans SET gltrans_rec = TRUE WHERE ( (gltrans_id IN (SELECT bankrecitem_source_id FROM bankrecitem WHERE ((bankrecitem_source = 'GL') AND (bankrecitem_cleared) AND (bankrecitem_bankrec_id=pBankrecid) ) ) ) AND (gltrans_accnt_id=_accntid) ) ; -- Mark all the sltrans items that have been cleared as reconciled. UPDATE sltrans SET sltrans_rec = TRUE WHERE ( (sltrans_id IN (SELECT bankrecitem_source_id FROM bankrecitem WHERE ((bankrecitem_source = 'SL') AND (bankrecitem_cleared) AND (bankrecitem_bankrec_id=pBankrecid) ) ) ) AND (sltrans_accnt_id=_accntid) ) ; -- Mark the bankrec record as posted UPDATE bankrec SET bankrec_posted = TRUE, bankrec_postdate = now() WHERE (bankrec_id=pBankrecid); RETURN pBankrecid; END; $_$; ALTER FUNCTION public.postbankreconciliation(integer) OWNER TO admin; -- -- Name: postbillingselection(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postbillingselection(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCobmiscid ALIAS FOR $1; BEGIN RAISE NOTICE 'postBillingselection(integer) has been deprecated. Please use createInvoice(integer).'; RETURN createInvoice(pCobmiscid); END; $_$; ALTER FUNCTION public.postbillingselection(integer) OWNER TO admin; -- -- Name: postbillingselectionconsolidated(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postbillingselectionconsolidated(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; BEGIN RAISE NOTICE 'postBillingselectionConsolidated(integer) has been deprecated. Please use createInvoiceConsolidated(integer).'; RETURN createInvoiceConsolidated(pCustid); END; $_$; ALTER FUNCTION public.postbillingselectionconsolidated(integer) OWNER TO admin; -- -- Name: postbillingselections(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postbillingselections() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'postBillingselections() has been deprecated. Please use createInvoices().'; RETURN createInvoices(); END; $$; ALTER FUNCTION public.postbillingselections() OWNER TO admin; -- -- Name: postbillingselections(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postbillingselections(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'postBillingselections(int) has been deprecated. Please use createInvoices(int).'; RETURN createInvoices($1, false); END; $_$; ALTER FUNCTION public.postbillingselections(integer) OWNER TO admin; -- -- Name: postbillingselections(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postbillingselections(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustTypeId ALIAS FOR $1; pConsolidate ALIAS FOR $2; BEGIN RAISE NOTICE 'postBillingselections(int,bool) has been deprecated. Please use createInvoices(int,bool).'; RETURN createInvoices(pCustTypeId, pConsolidate); END; $_$; ALTER FUNCTION public.postbillingselections(integer, boolean) OWNER TO admin; -- -- Name: postcashreceipt(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postcashreceipt(pcashrcptid integer, pjournalnumber integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _ccpayid INTEGER; _cctype TEXT; _p RECORD; _r RECORD; _t RECORD; _v RECORD; _postToAR NUMERIC; _postToMisc NUMERIC; _postToCM NUMERIC; _posted_base NUMERIC := 0; _posted NUMERIC := 0; _sequence INTEGER; _aropenid INTEGER; _arMemoNumber TEXT; _arAccntid INTEGER; _closed BOOLEAN; _debitAccntid INTEGER; _exchGain NUMERIC; _comment TEXT; _predist BOOLEAN; _check INTEGER; BEGIN _posted := 0; _posted_base := 0; SELECT fetchGLSequence() INTO _sequence; SELECT accnt_id INTO _arAccntid FROM cashrcpt, accnt, salescat WHERE ((cashrcpt_salescat_id=salescat_id) AND (salescat_ar_accnt_id=accnt_id) AND (cashrcpt_id=pCashrcptid)); IF (NOT FOUND) THEN SELECT accnt_id INTO _arAccntid FROM cashrcpt LEFT OUTER JOIN accnt ON (accnt_id=findARAccount(cashrcpt_cust_id)) WHERE ( (findARAccount(cashrcpt_cust_id)=0 OR accnt_id > 0) -- G/L interface might be disabled AND (cashrcpt_id=pCashrcptid) ); IF (NOT FOUND) THEN RETURN -5; END IF; END IF; SELECT cashrcpt_cust_id, (cust_number||'-'||cust_name) AS custnote, cashrcpt_fundstype, cashrcpt_number, cashrcpt_docnumber, cashrcpt_distdate, cashrcpt_amount, cashrcpt_discount, (cashrcpt_amount / cashrcpt_curr_rate) AS cashrcpt_amount_base, (cashrcpt_discount / cashrcpt_curr_rate) AS cashrcpt_discount_base, cashrcpt_notes, cashrcpt_bankaccnt_id AS bankaccnt_id, accnt_id AS prepaid_accnt_id, cashrcpt_usecustdeposit, COALESCE(cashrcpt_applydate, cashrcpt_distdate) AS applydate, cashrcpt_curr_id, cashrcpt_curr_rate, cashrcpt_posted, cashrcpt_void INTO _p FROM cashrcpt LEFT OUTER JOIN custinfo ON (cashrcpt_cust_id=cust_id) LEFT OUTER JOIN accnt ON (accnt_id=findPrepaidAccount(cashrcpt_cust_id)) WHERE ( (findPrepaidAccount(cashrcpt_cust_id)=0 OR accnt_id > 0) -- G/L interface might be disabled AND (cashrcpt_id=pCashrcptid) ); IF (NOT FOUND) THEN RETURN -7; END IF; IF (COALESCE(_p.cashrcpt_distdate > _p.applydate, false)) THEN RAISE EXCEPTION 'Cannot post cashrcpt % because application date is before distribution date.', _p.cashrcpt_docnumber; END IF; IF (COALESCE(_p.cashrcpt_posted, false)) THEN RAISE EXCEPTION 'Cannot post cashrcpt % because the document has already been posted.', _p.cashrcpt_docnumber; END IF; IF (COALESCE(_p.cashrcpt_void, false)) THEN RAISE EXCEPTION 'Cannot post cashrcpt % because the document has been voided.', _p.cashrcpt_docnumber; END IF; _predist := COALESCE(_p.cashrcpt_distdate < _p.applydate, false); IF (_p.cashrcpt_fundstype IN ('A', 'D', 'M', 'V')) THEN SELECT ccpay_id, ccpay_type INTO _ccpayid, _cctype FROM ccpay WHERE ((ccpay_r_ordernum IN (CAST(pCashrcptid AS TEXT), _p.cashrcpt_docnumber)) AND (ccpay_status IN ('C', 'A'))); IF NOT FOUND THEN -- the following select seems to work except for xikar - bug 8848. why? -- raise warning so there is some visibility if people fall into this path. SELECT ccpay_id, ccpay_type INTO _ccpayid, _cctype FROM ccpay WHERE ((ccpay_order_number IN (CAST(pCashrcptid AS TEXT), _p.cashrcpt_docnumber)) AND (ccpay_status IN ('C', 'A'))); IF (NOT FOUND) THEN RETURN -8; ELSE RAISE NOTICE 'PostCashReceipt() found ccpay_id % for order number %/% (ref 8848).', _ccpayid, pCashrcptid, _p.cashrcpt_docnumber; END IF; END IF; -- If there is a ccpay entry and the card was charged directly, use the prepaid account IF (_cctype = 'C' ) THEN _debitAccntid := findPrepaidAccount(_p.cashrcpt_cust_id); -- If there is a ccpay entry and the card was preauthed and then charged, use the Bank account ELSE SELECT accnt_id INTO _debitAccntid FROM cashrcpt, bankaccnt, accnt WHERE ( (cashrcpt_bankaccnt_id=bankaccnt_id) AND (bankaccnt_accnt_id=accnt_id) AND (cashrcpt_id=pCashrcptid) ); IF (NOT FOUND) THEN RETURN -6; END IF; END IF; ELSE SELECT accnt_id INTO _debitAccntid FROM cashrcpt, bankaccnt, accnt WHERE ( (cashrcpt_bankaccnt_id=bankaccnt_id) AND (bankaccnt_accnt_id=accnt_id) AND (cashrcpt_id=pCashrcptid) ); IF (NOT FOUND) THEN RETURN -6; END IF; END IF; -- Determine the amount to post to A/R Open Items SELECT COALESCE(SUM(cashrcptitem_amount), 0) INTO _postToAR FROM cashrcptitem JOIN aropen ON (aropen_id=cashrcptitem_aropen_id) WHERE (cashrcptitem_cashrcpt_id=pCashrcptid); IF (NOT FOUND) THEN _postToAR := 0; END IF; -- Determine the amount to post to Misc. Distributions SELECT COALESCE(SUM(cashrcptmisc_amount), 0) INTO _postToMisc FROM cashrcptmisc WHERE (cashrcptmisc_cashrcpt_id=pCashrcptid); IF (NOT FOUND) THEN _postToMisc := 0; END IF; -- Determine the amount to post to Discount Credit Memo SELECT COALESCE(SUM(cashrcptitem_discount), 0) INTO _postToCM FROM cashrcptitem JOIN aropen ON ( (aropen_id=cashrcptitem_aropen_id) AND (aropen_doctype IN ('I', 'D')) ) WHERE (cashrcptitem_cashrcpt_id=pCashrcptid); IF (NOT FOUND) THEN _postToCM := 0; END IF; -- Check to see if the C/R is over applied IF ((_postToAR + _postToMisc) > _p.cashrcpt_amount) THEN RETURN -1; END IF; -- Check to see if the C/R is positive amount IF (_p.cashrcpt_amount <= 0) THEN RETURN -2; END IF; -- Distribute A/R Applications FOR _r IN SELECT aropen_id, aropen_doctype, aropen_docnumber, aropen_docdate, aropen_duedate, aropen_curr_id, aropen_curr_rate, aropen_amount, round(aropen_amount - aropen_paid, 2) <= round(currToCurr(_p.cashrcpt_curr_id, aropen_curr_id,abs(cashrcptitem_amount + cashrcptitem_discount),_p.cashrcpt_distdate),2) AS closed, cashrcptitem_id, cashrcptitem_amount, cashrcptitem_discount, (cashrcptitem_amount / _p.cashrcpt_curr_rate) AS cashrcptitem_amount_base, (cashrcptitem_discount / _p.cashrcpt_curr_rate) AS cashrcptitem_discount_base, round(aropen_paid + currToCurr(_p.cashrcpt_curr_id, aropen_curr_id,abs(cashrcptitem_amount),_p.cashrcpt_distdate),2) AS new_paid, round(currToCurr(_p.cashrcpt_curr_id, aropen_curr_id,cashrcptitem_discount,_p.cashrcpt_distdate),2) AS new_discount FROM cashrcptitem JOIN aropen ON (aropen_id=cashrcptitem_aropen_id) WHERE ((cashrcptitem_cashrcpt_id=pCashrcptid) AND (NOT _predist OR aropen_doctype IN ('C','R'))) LOOP -- Handle discount IF (_r.cashrcptitem_discount_base > 0) THEN PERFORM postCashReceiptDisc(_r.cashrcptitem_id, pJournalNumber); END IF; -- Update the aropen item to post the paid amount UPDATE aropen SET aropen_paid = _r.new_paid + _r.new_discount, aropen_open = (NOT _r.closed), aropen_closedate = CASE WHEN _r.closed THEN _p.cashrcpt_distdate END WHERE (aropen_id=_r.aropen_id); -- Cache the running amount posted _posted_base := _posted_base + _r.cashrcptitem_amount_base; _posted := _posted + _r.cashrcptitem_amount; -- Record the cashrcpt application IF (_r.aropen_doctype IN ('I','D')) THEN INSERT INTO arapply ( arapply_cust_id, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_fundstype, arapply_refnumber, arapply_reftype, arapply_ref_id, arapply_applied, arapply_closed, arapply_postdate, arapply_distdate, arapply_journalnumber, arapply_username, arapply_curr_id ) VALUES ( _p.cashrcpt_cust_id, -1, 'K', _p.cashrcpt_number, _r.aropen_id, _r.aropen_doctype, _r.aropen_docnumber, _p.cashrcpt_fundstype, _p.cashrcpt_docnumber, 'CRA', _r.cashrcptitem_id, round(_r.cashrcptitem_amount, 2), _r.closed, _p.applydate, _p.cashrcpt_distdate, pJournalNumber, getEffectiveXtUser(), _p.cashrcpt_curr_id); ELSE INSERT INTO arapply ( arapply_cust_id, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_fundstype, arapply_refnumber, arapply_reftype, arapply_ref_id, arapply_applied, arapply_closed, arapply_postdate, arapply_distdate, arapply_journalnumber, arapply_username, arapply_curr_id ) VALUES ( _p.cashrcpt_cust_id, _r.aropen_id, _r.aropen_doctype, _r.aropen_docnumber, -1, 'R', _p.cashrcpt_number, '', '', 'CRA', _r.cashrcptitem_id, round(abs(_r.cashrcptitem_amount), 2), _r.closed, _p.applydate, _p.cashrcpt_distdate, pJournalNumber, getEffectiveXtUser(), _p.cashrcpt_curr_id ); END IF; _exchGain := arCurrGain(_r.aropen_id,_p.cashrcpt_curr_id, abs(_r.cashrcptitem_amount), _p.cashrcpt_distdate); PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CR', (_r.aropen_doctype || '-' || _r.aropen_docnumber), CASE WHEN _r.aropen_doctype != 'R' THEN _arAccntid ELSE findDeferredAccount(_p.cashrcpt_cust_id) END, round(_r.cashrcptitem_amount_base + _exchGain, 2), _p.cashrcpt_distdate, _p.custnote, pCashrcptid ); IF (_exchGain <> 0) THEN PERFORM insertIntoGLSeries(_sequence, 'A/R', 'CR', _r.aropen_doctype || '-' || _r.aropen_docnumber, getGainLossAccntId( CASE WHEN _r.aropen_doctype != 'R' THEN _arAccntid ELSE findDeferredAccount(_p.cashrcpt_cust_id) END ), round(_exchGain, 2) * -1, _p.cashrcpt_distdate, _p.custnote, pCashrcptid); END IF; END LOOP; -- Distribute Misc. Applications FOR _r IN SELECT cashrcptmisc_id, cashrcptmisc_accnt_id, cashrcptmisc_amount, (cashrcptmisc_amount / cashrcpt_curr_rate) AS cashrcptmisc_amount_base, cashrcptmisc_notes, cashrcpt_curr_id FROM cashrcptmisc JOIN cashrcpt ON (cashrcptmisc_cashrcpt_id = cashrcpt_id) WHERE (cashrcptmisc_cashrcpt_id=pCashrcptid) LOOP -- Cache the running amount posted _posted_base := (_posted_base + _r.cashrcptmisc_amount_base); _posted := (_posted + _r.cashrcptmisc_amount); -- Record the cashrcpt application INSERT INTO arapply ( arapply_cust_id, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_fundstype, arapply_refnumber, arapply_applied, arapply_closed, arapply_postdate, arapply_distdate, arapply_journalnumber, arapply_username, arapply_curr_id, arapply_reftype, arapply_ref_id ) VALUES ( _p.cashrcpt_cust_id, -1, 'K', '', -1, 'Misc.', '', _p.cashrcpt_fundstype, _p.cashrcpt_docnumber, round(_r.cashrcptmisc_amount, 2), TRUE, _p.applydate, _p.cashrcpt_distdate, pJournalNumber, getEffectiveXtUser(), _r.cashrcpt_curr_id, 'CRD', _r.cashrcptmisc_id ); PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CR', _r.cashrcptmisc_notes, _r.cashrcptmisc_accnt_id, round(_r.cashrcptmisc_amount_base, 2), _p.cashrcpt_distdate, _p.custnote, pCashrcptid ); END LOOP; -- Post any remaining Cash to an A/R Cash Despoit (Credit Memo) -- this credit memo may absorb an occasional currency exchange rounding error IF (round(_posted_base, 2) < round(_p.cashrcpt_amount_base, 2)) THEN _comment := ('Unapplied from ' || _p.cashrcpt_fundstype || '-' || _p.cashrcpt_docnumber); PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CR', _comment, _p.prepaid_accnt_id, round(_p.cashrcpt_amount_base, 2) - round(_posted_base, 2), _p.cashrcpt_distdate, _p.custnote, pCashrcptid ); SELECT fetchArMemoNumber() INTO _arMemoNumber; IF(_p.cashrcpt_usecustdeposit) THEN -- Post Customer Deposit SELECT createARCashDeposit(_p.cashrcpt_cust_id, _arMemoNumber, '', _p.cashrcpt_distdate, (_p.cashrcpt_amount - _posted), _comment, pJournalNumber, _p.cashrcpt_curr_id) INTO _aropenid; ELSE -- Post A/R Credit Memo _aropenid := createARCreditMemo(NULL, _p.cashrcpt_cust_id, _arMemoNumber, '', _p.cashrcpt_distdate, (_p.cashrcpt_amount - _posted), _comment, -1, -1, -1, _p.cashrcpt_distdate, -1, NULL, 0, pJournalNumber, _p.cashrcpt_curr_id, _arAccntid); END IF; IF (_ccpayid IS NOT NULL) THEN INSERT INTO payaropen (payaropen_ccpay_id, payaropen_aropen_id, payaropen_amount, payaropen_curr_id ) VALUES (_ccpayid, _aropenid, _p.cashrcpt_amount, _p.cashrcpt_curr_id); END IF; -- Create Cash Receipt Item to capture posting IF (_predist=false) THEN INSERT INTO cashrcptitem ( cashrcptitem_cashrcpt_id, cashrcptitem_aropen_id, cashrcptitem_amount, cashrcptitem_applied ) VALUES ( pCashrcptid, _aropenid, (_p.cashrcpt_amount - _posted), false ); END IF; ELSIF (round(_posted_base, 2) > round((_p.cashrcpt_amount_base), 2)) THEN PERFORM insertIntoGLSeries(_sequence, 'A/R', 'CR', 'Currency Exchange Rounding - ' || _p.cashrcpt_docnumber, getGainLossAccntId(_debitAccntid), round(_posted_base, 2) - round((_p.cashrcpt_amount_base + _p.cashrcpt_discount_base), 2), _p.cashrcpt_distdate, _p.custnote, pCashrcptid); END IF; -- Debit Cash PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CR', (_p.cashrcpt_fundstype || '-' || _p.cashrcpt_docnumber), _debitAccntid, round(_p.cashrcpt_amount_base, 2) * -1, _p.cashrcpt_distdate, _p.custnote, pCashrcptid ); PERFORM postGLSeries(_sequence, pJournalNumber); -- convert the cashrcptitem records to applications against the cm/cd if we are _predist IF(_predist=true) THEN FOR _r IN SELECT * FROM cashrcptitem WHERE ((cashrcptitem_cashrcpt_id=pCashrcptid) AND (cashrcptitem_amount > 0)) LOOP -- Handle discount if applicable IF (_r.cashrcptitem_discount > 0) THEN PERFORM postCashReceiptDisc(_r.cashrcptitem_id, pJournalNumber); END IF; INSERT INTO arcreditapply (arcreditapply_source_aropen_id, arcreditapply_target_aropen_id, arcreditapply_amount, arcreditapply_curr_id) VALUES(_aropenid, _r.cashrcptitem_aropen_id, _r.cashrcptitem_amount, _p.cashrcpt_curr_id); _posted := (_posted + _r.cashrcptitem_amount); END LOOP; PERFORM postArCreditMemoApplication(_aropenid, _p.applydate); -- If there is any left over go ahead and create an additional cashrcptitem record for it with the amount IF (round(_posted, 2) < round(_p.cashrcpt_amount, 2)) THEN INSERT INTO cashrcptitem ( cashrcptitem_cashrcpt_id, cashrcptitem_aropen_id, cashrcptitem_amount, cashrcptitem_applied ) VALUES ( pCashrcptid, _aropenid, (_p.cashrcpt_amount - _posted), false ); END IF; END IF; -- Update the posted cashrcpt UPDATE cashrcpt SET cashrcpt_posted=TRUE, cashrcpt_posteddate=CURRENT_DATE, cashrcpt_postedby=getEffectiveXtUser() WHERE (cashrcpt_id=pCashrcptid); RETURN 1; END; $$; ALTER FUNCTION public.postcashreceipt(pcashrcptid integer, pjournalnumber integer) OWNER TO admin; -- -- Name: postcashreceiptdisc(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postcashreceiptdisc(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCashrcptItemId ALIAS FOR $1; pJournalNumber ALIAS FOR $2; _r RECORD; _t RECORD; _v RECORD; _ardiscountid INTEGER; _arMemoNumber TEXT; _arAccntid INTEGER; _discountAccntid INTEGER; _comment TEXT; _discprcnt NUMERIC; _check INTEGER; BEGIN -- Fetch base records for processing SELECT aropen_id, aropen_doctype, aropen_amount, cashrcptitem_discount, cashrcpt_cust_id, cashrcpt_distdate, cashrcpt_applydate, cashrcpt_curr_id, cashrcpt_fundstype, cashrcpt_docnumber, round(currToCurr(cashrcpt_curr_id, aropen_curr_id, cashrcptitem_discount, cashrcpt_distdate),2) AS aropen_discount INTO _r FROM cashrcptitem JOIN cashrcpt ON (cashrcptitem_cashrcpt_id=cashrcpt_id) JOIN aropen ON ( (aropen_id=cashrcptitem_aropen_id) AND (aropen_doctype IN ('I', 'D')) ) WHERE (cashrcptitem_id=pCashrcptItemId); -- Get discount account _discountAccntid := findardiscountaccount(_r.cashrcpt_cust_id); IF (_r.cashrcptitem_discount > 0) THEN -- Determine discount percentage _discprcnt := _r.aropen_discount / _r.aropen_amount; SELECT fetchArMemoNumber() INTO _arMemoNumber; _comment := 'Discount Credit from ' || _r.cashrcpt_fundstype || '-' || _r.cashrcpt_docnumber; -- Create misc credit memo record _ardiscountid := nextval('aropen_aropen_id_seq'); INSERT INTO aropen ( aropen_id, aropen_docdate, aropen_duedate, aropen_doctype, aropen_docnumber, aropen_curr_id, aropen_posted, aropen_amount) VALUES ( _ardiscountid, _r.cashrcpt_distdate, _r.cashrcpt_distdate, 'C', _arMemoNumber, _r.cashrcpt_curr_id, false,_r.cashrcptitem_discount); IF (fetchMetricBool('CreditTaxDiscount')) THEN -- proportional tax credits calculated and implemented for the credit memo generated by the discount IF (_r.aropen_doctype = 'I') THEN -- Tax for invoices SELECT aropen_cobmisc_id AS invcheadid, invchead_curr_id, invchead_invcdate INTO _t FROM aropen LEFT OUTER JOIN invchead ON (aropen_cobmisc_id = invchead_id) LEFT OUTER JOIN invcitem ON (invchead_id = invcitem_invchead_id) WHERE aropen_id = _r.aropen_id; FOR _v IN SELECT tax_sales_accnt_id, tax_id, round(sum(taxdetail_tax), 2) AS tax, currToBase(_t.invchead_curr_id, round(sum(taxdetail_tax), 2), _t.invchead_invcdate) AS taxbasevalue FROM tax JOIN calculateTaxDetailSummary('I', _t.invcheadid, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id, tax_sales_accnt_id LOOP INSERT INTO aropentax( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_basis) VALUES ( _ardiscountid, getadjustmenttaxtypeid(), _v.tax_id, 0.00, 0.00, (round((_v.tax * _discprcnt), 2) * -1), _r.cashrcpt_distdate, 0.00); END LOOP; ELSIF (_r.aropen_doctype = 'D') THEN -- Tax for debit memos INSERT INTO aropentax( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_basis) SELECT _ardiscountid, taxhist_taxtype_id, taxhist_tax_id, 0.00, 0.00, (round((taxhist_tax * _discprcnt), 2) * -1), _r.cashrcpt_distdate, 0.00 FROM aropentax WHERE (taxhist_parent_id=_r.aropen_id); END IF; END IF; -- End taxes -- Create credit memo for discount SELECT createARCreditMemo(_ardiscountid, _r.cashrcpt_cust_id, _arMemoNumber, '', _r.cashrcpt_distdate, _r.cashrcptitem_discount, _comment, -1, -1, _discountAccntid, _r.cashrcpt_distdate, -1, NULL, 0, pJournalNumber, _r.cashrcpt_curr_id) INTO _ardiscountid; -- Apply discount credit memo INSERT INTO arcreditapply ( arcreditapply_source_aropen_id, arcreditapply_target_aropen_id, arcreditapply_amount, arcreditapply_curr_id ) VALUES ( _ardiscountid, _r.aropen_id, _r.cashrcptitem_discount, _r.cashrcpt_curr_id ); SELECT postARCreditMemoApplication(_ardiscountid, _r.cashrcpt_applydate) INTO _check; IF (_check < 0) THEN RAISE EXCEPTION 'Error posting discount credit memo application. Code %', _check; END IF; END IF; -- End handle Discount RETURN 1; END; $_$; ALTER FUNCTION public.postcashreceiptdisc(integer, integer) OWNER TO admin; -- -- Name: postcccashreceipt(integer, integer, text, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postcccashreceipt(pccpay integer, pdocid integer, pdoctype text DEFAULT NULL::text, pamount numeric DEFAULT NULL::numeric) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _aropenid INTEGER; _bankaccnt_id INTEGER; _c RECORD; _ccOrderDesc TEXT; _journal INTEGER; _realaccnt INTEGER; _return INTEGER := 0; BEGIN SELECT * INTO _c FROM ccpay, ccard, custinfo WHERE ( (ccpay_id = pCCpay) AND (ccpay_ccard_id = ccard_id) AND (ccpay_cust_id = cust_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot find the Credit Card transaction information [xtuple: postCCcashReceipt, -11, %]', pCCpay; END IF; IF (pamount IS NOT NULL) THEN _c.ccpay_amount = pamount; END IF; SELECT bankaccnt_id, bankaccnt_accnt_id INTO _bankaccnt_id, _realaccnt FROM ccbank JOIN bankaccnt ON (ccbank_bankaccnt_id=bankaccnt_id) WHERE (ccbank_ccard_type=_c.ccard_type); IF (_bankaccnt_id IS NULL) THEN RAISE EXCEPTION 'Cannot find the default Bank Account for this Credit Card [xtuple: postCCcredit, -1, %]', _c.ccard_type; END IF; _ccOrderDesc := (_c.ccard_type || '-' || _c.ccpay_order_number::TEXT || '-' || _c.ccpay_order_number_seq::TEXT); _journal := fetchJournalNumber('C/R'); IF (pdoctype = 'cashrcpt') THEN IF (COALESCE(pdocid, -1) < 0) THEN INSERT INTO cashrcpt ( cashrcpt_cust_id, cashrcpt_amount, cashrcpt_curr_id, cashrcpt_fundstype, cashrcpt_docnumber, cashrcpt_notes, cashrcpt_distdate, cashrcpt_bankaccnt_id, cashrcpt_usecustdeposit ) VALUES ( _c.ccpay_cust_id, _c.ccpay_amount, _c.ccpay_curr_id, _c.ccard_type, _c.ccpay_r_ordernum, _ccOrderDesc, CURRENT_DATE, _bankaccnt_id, fetchMetricBool('EnableCustomerDeposits')) RETURNING cashrcpt_id INTO _return; ELSE UPDATE cashrcpt SET cashrcpt_cust_id=_c.ccpay_cust_id, cashrcpt_amount=_c.ccpay_amount, cashrcpt_curr_id=_c.ccpay_curr_id, cashrcpt_fundstype=_c.ccard_type, cashrcpt_docnumber=_c.ccpay_r_ordernum, cashrcpt_notes=_ccOrderDesc, cashrcpt_distdate=CURRENT_DATE, cashrcpt_bankaccnt_id=_bankaccnt_id WHERE (cashrcpt_id=pdocid); _return := pdocid; END IF; ELSIF (pdoctype = 'cohead') THEN SELECT createARCreditMemo(NULL, _c.ccpay_cust_id, fetchArMemoNumber(), cohead_number, CURRENT_DATE, _c.ccpay_amount, 'Unapplied from ' || _ccOrderDesc, NULL, NULL, NULL, CURRENT_DATE, NULL, cohead_salesrep_id, NULL, _journal, _c.ccpay_curr_id, NULL, pCCpay) INTO _aropenid FROM cohead WHERE cohead_id = pdocid; IF (COALESCE(_aropenid, -1) < 0) THEN -- coalesce handles not-found case RAISE EXCEPTION '[xtuple: createARCreditMemo, %]', _aropenid; END IF; INSERT INTO payaropen (payaropen_ccpay_id, payaropen_aropen_id, payaropen_amount, payaropen_curr_id) VALUES (pccpay, _aropenid, _c.ccpay_amount, _c.ccpay_curr_id); INSERT INTO aropenalloc (aropenalloc_aropen_id, aropenalloc_doctype, aropenalloc_doc_id, aropenalloc_amount, aropenalloc_curr_id) VALUES (_aropenid, 'S', pdocid, _c.ccpay_amount, _c.ccpay_curr_id); _return := _aropenid; END IF; PERFORM insertGLTransaction(_journal, 'A/R', 'CR', _ccOrderDesc, ('Cash Receipt from Credit Card ' || _c.cust_name), findPrepaidAccount(_c.ccpay_cust_id), _realaccnt, NULL, ROUND(currToBase(_c.ccpay_curr_id, _c.ccpay_amount, _c.ccpay_transaction_datetime::DATE),2), CURRENT_DATE); RETURN _return; END; $$; ALTER FUNCTION public.postcccashreceipt(pccpay integer, pdocid integer, pdoctype text, pamount numeric) OWNER TO admin; -- -- Name: postcccredit(integer, text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postcccredit(integer, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCCpay ALIAS FOR $1; preftype ALIAS FOR $2; prefid ALIAS FOR $3; _c RECORD; _ccOrderDesc TEXT; _cglaccnt INTEGER; _dglaccnt INTEGER; _glseriesres INTEGER; _notes TEXT := 'Credit via Credit Card'; _r RECORD; _sequence INTEGER; _dmaropenid INTEGER; BEGIN IF ((preftype = 'cohead') AND NOT EXISTS(SELECT cohead_id FROM cohead WHERE (cohead_id=prefid))) THEN RAISE EXCEPTION 'Cannot find original Sales Order for this Credit Card credit [xtuple: postCCcredit, -2, %, %, %]', pCCpay, preftype, prefid; ELSIF ((preftype = 'aropen') AND NOT EXISTS(SELECT aropen_id FROM aropen WHERE (aropen_id=prefid))) THEN RAISE EXCEPTION 'Cannot find original A/R Open record for this Credit Card credit [xtuple: postCCcredit, -2, %, %, %]', pCCpay, preftype, prefid; ELSIF ((preftype = 'cmhead') AND NOT EXISTS(SELECT cmhead_id FROM cmhead WHERE cmhead_id=prefid)) THEN RAISE EXCEPTION 'Cannot find original Credit Memo record for this Credit Card credit [xtuple: postCCcredit, -2, %, %, %]', pCCpay, preftype, prefid; END IF; SELECT * INTO _c FROM ccpay JOIN ccard ON (ccpay_ccard_id = ccard_id) JOIN ccbank ON (ccard_type=ccbank_ccard_type) WHERE (ccpay_id = pCCpay); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot find the record for this Credit Card credit [xtuple: postCCcredit, -3, %, %, %]', pCCpay, preftype, prefid; END IF; IF (preftype = 'cohead') THEN _dglaccnt := findPrepaidAccount(_c.ccpay_cust_id); ELSE _dglaccnt := findARAccount(_c.ccpay_cust_id); END IF; SELECT bankaccnt_accnt_id INTO _cglaccnt FROM bankaccnt WHERE (bankaccnt_id=_c.ccbank_bankaccnt_id); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot find the default Bank Account for this Credit Card [xtuple: postCCcredit, -1, %]', pCCpay; END IF; IF (_c.ccpay_type != 'R') THEN RAISE EXCEPTION 'This Credit Card transaction is not a credit/refund [xtuple: postCCcredit, -4, %]', pCCpay; END IF; _sequence := fetchGLSequence(); IF (_c.ccpay_r_ref IS NOT NULL) THEN _ccOrderDesc := (_c.ccard_type || '-' || _c.ccpay_r_ref); ELSE _ccOrderDesc := (_c.ccard_type || '-' || _c.ccpay_order_number::TEXT || '-' || COALESCE(_c.ccpay_order_number_seq::TEXT, '')); END IF; _glseriesres := insertIntoGLSeries(_sequence, 'A/R', 'CC', _ccOrderDesc, _dglaccnt, ROUND(currToBase(_c.ccpay_curr_id, _c.ccpay_amount, _c.ccpay_transaction_datetime::DATE), 2) * -1, CURRENT_DATE, _notes); IF (_glseriesres < 0) THEN RAISE EXCEPTION 'Could not write debit side of Credit Card credit to the G/L [xtuple: insertIntoGLSeries, %]', _glseriesres; END IF; _glseriesres := insertIntoGLSeries(_sequence, 'A/R', 'CC', _ccOrderDesc, _cglaccnt, ROUND(currToBase(_c.ccpay_curr_id, _c.ccpay_amount, _c.ccpay_transaction_datetime::DATE),2), CURRENT_DATE, _notes); IF (_glseriesres < 0) THEN RAISE EXCEPTION 'Could not write credit side of Credit Card credit to the G/L [xtuple: insertIntoGLSeries, %]', _glseriesres; END IF; _glseriesres := postGLSeries(_sequence, fetchJournalNumber('C/R') ); IF (_glseriesres < 0) THEN RAISE EXCEPTION 'Could not post Credit Card credit to the G/L [xtuple: postglseries, %]', _glseriesres; END IF; IF (preftype = 'aropen') THEN SELECT * INTO _r FROM aropen WHERE (aropen_id=prefid); ELSE SELECT aropen.* INTO _r FROM ccpay n JOIN ccpay o ON (o.ccpay_id=n.ccpay_ccpay_id) JOIN payaropen ON (payaropen_ccpay_id=o.ccpay_id) JOIN aropen ON (payaropen_aropen_id=aropen_id) WHERE (n.ccpay_id=pCCpay); END IF; IF (FOUND) THEN SELECT createardebitmemo( NULL, _r.aropen_cust_id, NULL, fetchARMemoNumber(), _r.aropen_ordernumber, current_date, _c.ccpay_amount, _notes, -1, -1, -1, CURRENT_DATE, -1, NULL, 0, _r.aropen_curr_id) INTO _dmaropenid; IF (_r.aropen_open) THEN PERFORM applyARCreditMemoToBalance(_r.aropen_id, _dmaropenid); PERFORM postARCreditMemoApplication(_r.aropen_id); END IF; END IF; IF (preftype = 'cohead') THEN INSERT INTO payco ( payco_ccpay_id, payco_cohead_id, payco_amount, payco_curr_id ) VALUES ( pCCpay, prefid, 0 - _c.ccpay_amount, _c.ccpay_curr_id ); END IF; RETURN 0; END; $_$; ALTER FUNCTION public.postcccredit(integer, text, integer) OWNER TO admin; -- -- Name: postccvoid(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postccvoid(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pccpayid ALIAS FOR $1; BEGIN -- for now this is very simple: mark the ccpay record voided. -- in the future this might be expanded to back out changes to other tables -- but for now the VOID request is sent to the credit card processing company -- before those other tables are modified. UPDATE ccpay SET ccpay_status = 'V' WHERE (ccpay_id=pccpayid); IF (NOT FOUND) THEN RETURN -1; END IF; RETURN 0; END; $_$; ALTER FUNCTION public.postccvoid(integer) OWNER TO admin; -- -- Name: postcheck(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postcheck(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pcheckid ALIAS FOR $1; _journalNumber INTEGER := $2; _amount_base NUMERIC := 0; _credit_glaccnt INTEGER; _exchGain NUMERIC := 0; _exchGainTmp NUMERIC := 0; _gltransNote TEXT; _p RECORD; _r RECORD; _t RECORD; _sequence INTEGER; _test INTEGER; _cm BOOLEAN; _amount_check NUMERIC := 0; BEGIN _cm := FALSE; SELECT fetchGLSequence() INTO _sequence; IF (_journalNumber IS NULL) THEN _journalNumber := fetchJournalNumber('AP-CK'); END IF; SELECT checkhead.*, checkhead_amount / checkhead_curr_rate AS checkhead_amount_base, bankaccnt_accnt_id AS bankaccntid INTO _p FROM checkhead JOIN bankaccnt ON (checkhead_bankaccnt_id=bankaccnt_id) WHERE (checkhead_id=pcheckid); IF (FOUND) THEN IF (_p.checkhead_recip_type = 'V') THEN SELECT vend_number AS checkrecip_number, vend_name AS checkrecip_name, findAPAccount(vend_id) AS checkrecip_accnt_id, 'A/P'::text AS checkrecip_gltrans_source INTO _t FROM vendinfo WHERE (vend_id=_p.checkhead_recip_id); ELSIF (_p.checkhead_recip_type = 'C') THEN SELECT cust_number AS checkrecip_number, cust_name AS checkrecip_name, findARAccount(cust_id) AS checkrecip_accnt_id, 'A/R'::text AS checkrecip_gltrans_source INTO _t FROM custinfo WHERE (cust_id=_p.checkhead_recip_id); ELSIF (_p.checkhead_recip_type = 'T') THEN SELECT taxauth_code AS checkrecip_number, taxauth_name AS checkrecip_name, taxauth_accnt_id AS checkrecip_accnt_id, 'G/L'::text AS checkrecip_gltrans_source INTO _t FROM taxauth WHERE (taxauth_id=_p.checkhead_recip_id); ELSE RETURN -11; END IF; ELSE RETURN -11; END IF; IF (_p.checkhead_posted) THEN RETURN -10; END IF; IF (_p.checkhead_recip_type = 'C') THEN SELECT checkitem_id FROM checkitem INTO _test WHERE (checkitem_checkhead_id=pcheckid) LIMIT 1; IF (FOUND) THEN _cm := TRUE; END IF; END IF; _gltransNote := _t.checkrecip_number || '-' || _t.checkrecip_name; IF (_p.checkhead_misc AND NOT _cm) THEN IF (COALESCE(_p.checkhead_expcat_id, -1) < 0) THEN IF (_p.checkhead_recip_type = 'V') THEN PERFORM createAPCreditMemo( _p.checkhead_recip_id, _journalNumber, CAST(fetchAPMemoNumber() AS text), '', _p.checkhead_checkdate, _p.checkhead_amount, _gltransNote || ' ' || _p.checkhead_notes, -1, _p.checkhead_checkdate, -1, _p.checkhead_curr_id ); _credit_glaccnt := findAPPrepaidAccount(_p.checkhead_recip_id); ELSIF (_p.checkhead_recip_type = 'C') THEN PERFORM createARDebitMemo(NULL, _p.checkhead_recip_id, NULL, fetchARMemoNumber(), '', _p.checkhead_checkdate, _p.checkhead_amount, _gltransNote || ' ' || _p.checkhead_notes, -1, -1, -1, _p.checkhead_checkdate, -1, NULL, 0, _p.checkhead_curr_id ); _credit_glaccnt := findPrepaidAccount(_p.checkhead_recip_id); ELSIF (_p.checkhead_recip_type = 'T') THEN -- TODO: should we create a credit memo for the tax authority? how? _credit_glaccnt := _t.checkrecip_accnt_id; END IF; -- recip type ELSE IF (_cm) THEN _credit_glaccnt := findARAccount(_p.checkhead_recip_id); ELSE SELECT expcat_exp_accnt_id INTO _credit_glaccnt FROM expcat WHERE (expcat_id=_p.checkhead_expcat_id); IF (NOT FOUND) THEN RETURN -12; END IF; END IF; END IF; IF (COALESCE(_credit_glaccnt, -1) < 0) THEN RETURN -13; END IF; PERFORM insertIntoGLSeries( _sequence, _t.checkrecip_gltrans_source, 'CK', CAST(_p.checkhead_number AS TEXT), _credit_glaccnt, round(_p.checkhead_amount_base, 2) * -1, _p.checkhead_checkdate, _gltransNote, pcheckid ); _amount_base := _p.checkhead_amount_base; ELSE FOR _r IN SELECT checkitem_amount, checkitem_discount, CASE WHEN (checkitem_apopen_id IS NOT NULL) THEN checkitem_amount / apopen_curr_rate ELSE currToBase(checkitem_curr_id, checkitem_amount, COALESCE(checkitem_docdate, _p.checkhead_checkdate)) END AS checkitem_amount_base, currTocurr(checkitem_curr_id, _p.checkhead_curr_id, checkitem_amount, _p.checkhead_checkdate) AS amount_check, apopen_id, apopen_doctype, apopen_docnumber, aropen_id, aropen_doctype, aropen_docnumber, checkitem_curr_id, checkitem_curr_rate, apopen_curr_rate, COALESCE(checkitem_docdate, _p.checkhead_checkdate) AS docdate FROM (checkitem LEFT OUTER JOIN apopen ON (checkitem_apopen_id=apopen_id)) LEFT OUTER JOIN aropen ON (checkitem_aropen_id=aropen_id) WHERE (checkitem_checkhead_id=pcheckid) LOOP _exchGainTmp := 0; IF (_r.apopen_id IS NOT NULL) THEN -- take the discount if specified before we do anything else IF(_r.checkitem_discount > 0.0) THEN PERFORM createAPDiscount(_r.apopen_id, _r.checkitem_discount); END IF; UPDATE apopen SET apopen_paid = round(apopen_paid + _r.checkitem_amount, 2), apopen_open = round(apopen_amount, 2) > round(apopen_paid + _r.checkitem_amount, 2), apopen_closedate = CASE WHEN (round(apopen_amount, 2) <= round(apopen_paid + _r.checkitem_amount, 2)) THEN _p.checkhead_checkdate END WHERE (apopen_id=_r.apopen_id); -- Post the application INSERT INTO apapply ( apapply_vend_id, apapply_postdate, apapply_username, apapply_source_apopen_id, apapply_source_doctype, apapply_source_docnumber, apapply_target_apopen_id, apapply_target_doctype, apapply_target_docnumber, apapply_journalnumber, apapply_amount, apapply_curr_id, apapply_checkhead_id ) VALUES ( _p.checkhead_recip_id, _p.checkhead_checkdate, getEffectiveXtUser(), -1, 'K', _p.checkhead_number, _r.apopen_id, _r.apopen_doctype, _r.apopen_docnumber, _journalNumber, _r.checkitem_amount, _r.checkitem_curr_id, _p.checkhead_id ); END IF; -- if check item's apopen_id is not null IF (_r.aropen_id IS NOT NULL) THEN UPDATE aropen SET aropen_paid = round(aropen_paid + _r.checkitem_amount, 2), aropen_open = round(aropen_amount, 2) > round(aropen_paid + _r.checkitem_amount, 2), aropen_closedate = CASE WHEN (round(aropen_amount, 2) <= round(aropen_paid + _r.checkitem_amount, 2)) THEN _p.checkhead_checkdate END WHERE (aropen_id=_r.aropen_id); -- Post the application INSERT INTO arapply ( arapply_cust_id, arapply_postdate, arapply_distdate, arapply_username, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_journalnumber, arapply_applied, arapply_curr_id ) VALUES ( _p.checkhead_recip_id, _p.checkhead_checkdate, _p.checkhead_checkdate, getEffectiveXtUser(), _r.aropen_id,_r.aropen_doctype, _r.aropen_docnumber, -1, 'K',_p.checkhead_number , _journalNumber, _r.checkitem_amount, _r.checkitem_curr_id ); END IF; -- if check item's aropen_id is not null IF (_r.apopen_id IS NOT NULL) THEN SELECT apCurrGain(_r.apopen_id,_r.checkitem_curr_id, _r.checkitem_amount, _p.checkhead_checkdate) INTO _exchGainTmp; ELSIF (_r.aropen_id IS NOT NULL) THEN SELECT arCurrGain(_r.aropen_id,_r.checkitem_curr_id, _r.checkitem_amount, _p.checkhead_checkdate) INTO _exchGainTmp; END IF; _exchGain := _exchGain + _exchGainTmp; PERFORM insertIntoGLSeries( _sequence, _t.checkrecip_gltrans_source, 'CK', CAST(_p.checkhead_number AS TEXT), _t.checkrecip_accnt_id, round(_r.checkitem_amount_base, 2) * -1, _p.checkhead_checkdate, _gltransNote, pcheckid ); IF (_exchGainTmp <> 0) THEN PERFORM insertIntoGLSeries( _sequence, _t.checkrecip_gltrans_source, 'CK', CAST(_p.checkhead_number AS TEXT), getGainLossAccntId(_t.checkrecip_accnt_id), round(_exchGainTmp,2), _p.checkhead_checkdate, _gltransNote, pcheckid ); END IF; _amount_check := (_amount_check + _r.amount_check); _amount_base := (_amount_base + _r.checkitem_amount_base); END LOOP; IF( (_amount_check - _p.checkhead_amount) <> 0.0 ) THEN _exchGainTmp := currToBase(_p.checkhead_curr_id, _amount_check - _p.checkhead_amount, _p.checkhead_checkdate); _exchGain := _exchGain + _exchGainTmp; END IF; -- ensure that the check balances, attribute rounding errors to gain/loss IF round(_amount_base, 2) - round(_exchGain, 2) <> round(_p.checkhead_amount_base, 2) THEN IF round(_amount_base - _exchGain, 2) = round(_p.checkhead_amount_base, 2) THEN PERFORM insertIntoGLSeries( _sequence, _t.checkrecip_gltrans_source, 'CK', CAST(_p.checkhead_number AS TEXT), getGainLossAccntId(_p.bankaccntid), round(_amount_base, 2) - round(_exchGain, 2) - round(_p.checkhead_amount_base, 2), _p.checkhead_checkdate, _gltransNote, pcheckid ); ELSE RAISE EXCEPTION 'checkhead_id % does not balance (% - % <> %)', pcheckid, _amount_base, _exchGain, _p.checkhead_amount_base; END IF; END IF; END IF; PERFORM insertIntoGLSeries( _sequence, _t.checkrecip_gltrans_source, 'CK', CAST(_p.checkhead_number AS TEXT), _p.bankaccntid, round(_p.checkhead_amount_base, 2), _p.checkhead_checkdate, _gltransNote, pcheckid ); PERFORM postGLSeries(_sequence, _journalNumber); UPDATE checkhead SET checkhead_posted=TRUE, checkhead_journalnumber=_journalNumber WHERE (checkhead_id=pcheckid); RETURN _journalNumber; END; $_$; ALTER FUNCTION public.postcheck(integer, integer) OWNER TO admin; -- -- Name: postchecks(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postchecks(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankaccntid ALIAS FOR $1; _journalNumber INTEGER; BEGIN SELECT fetchJournalNumber('AP-CK') INTO _journalNumber; PERFORM postCheck(checkhead_id, _journalNumber) FROM checkhead WHERE ( (NOT checkhead_void) AND (NOT checkhead_posted) AND (checkhead_printed) AND (checkhead_bankaccnt_id=pBankaccntid) ); RETURN _journalNumber; END; $_$; ALTER FUNCTION public.postchecks(integer) OWNER TO admin; -- -- Name: postcomment(integer, text, integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postcomment(pcmnttypeid integer, psource text, psourceid integer, ptext text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN RETURN postComment(pCmnttypeid, pSource, pSourceid, pText, NULL); END $$; ALTER FUNCTION public.postcomment(pcmnttypeid integer, psource text, psourceid integer, ptext text) OWNER TO admin; -- -- Name: postcomment(integer, text, integer, text, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postcomment(pcmnttypeid integer, psource text, psourceid integer, ptext text, ppublic boolean) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _commentid INTEGER; _public BOOLEAN; BEGIN _public := COALESCE(pPublic, fetchmetricbool('CommentPublicDefault')); INSERT INTO comment ( comment_cmnttype_id, comment_source, comment_source_id, comment_date, comment_user, comment_text, comment_public ) VALUES ( pCmnttypeid, pSource, pSourceid, CURRENT_TIMESTAMP, getEffectiveXtUser(), pText, _public ) RETURNING comment_id INTO _commentid; RETURN _commentid; END; $$; ALTER FUNCTION public.postcomment(pcmnttypeid integer, psource text, psourceid integer, ptext text, ppublic boolean) OWNER TO admin; -- -- Name: postcomment(text, text, integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postcomment(pcmnttypename text, psource text, psourceid integer, ptext text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name=pCmnttypename); IF (NOT FOUND) THEN RAISE EXCEPTION 'Comment type % not found.', pCmnttypename; END IF; RETURN postComment(_cmnttypeid, pSource, pSourceid, pText, NULL); END $$; ALTER FUNCTION public.postcomment(pcmnttypename text, psource text, psourceid integer, ptext text) OWNER TO admin; -- -- Name: postcost(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postcost(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemcostid ALIAS FOR $1; _p RECORD; BEGIN SELECT round(currToBase(itemcost_curr_id, itemcost_actcost, CURRENT_DATE),6) AS newcost, itemcost_curr_id, CURRENT_DATE AS effective, item_number, itemcost_stdcost AS oldcost INTO _p FROM itemcost, item WHERE ((itemcost_item_id=item_id) AND (itemcost_id=pItemcostid)); IF (_p.newcost IS NULL) THEN RAISE EXCEPTION 'There is no valid Exchange Rate for this currency. (%, %)', _p.itemcost_curr_id, _p.effective; RETURN FALSE; END IF; RETURN updateStdCost(pItemcostid, _p.newcost, _p.oldcost, 'Post Cost', ('Post Actual Cost to Standard for item ' || _p.item_number)); END; $_$; ALTER FUNCTION public.postcost(integer) OWNER TO admin; -- -- Name: postcountslip(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postcountslip(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCntslipid ALIAS FOR $1; _p RECORD; _comments TEXT; _temp TEXT; BEGIN SELECT itemsite_loccntrl, itemsite_controlmethod, cntslip_posted, cntslip_lotserial, cntslip_comments, cntslip_number, cntslip_qty INTO _p FROM cntslip, invcnt, itemsite WHERE ( (cntslip_cnttag_id=invcnt_id) AND (invcnt_itemsite_id=itemsite_id) AND (cntslip_id=pCntslipid) ); IF (NOT _p.cntslip_posted) THEN SELECT ( E'\nCount Slip #' || _p.cntslip_number || ' counted ' || formatQty(_p.cntslip_qty) ) INTO _comments; -- Add the Location name if the itemsite is MLC IF (_p.itemsite_loccntrl) THEN SELECT ( ', Location:' || location_name ) INTO _temp FROM location, cntslip WHERE ( (cntslip_location_id=location_id) AND (cntslip_id=pCntslipid) ); _comments := (_comments || _temp); END IF; -- Add the Lot/Serial if the itemsite is Lot or Serial controlled IF (_p.itemsite_controlmethod = 'L') THEN _comments := (_comments || ( ', Lot #:' || _p.cntslip_lotserial)); ELSIF (_p.itemsite_controlmethod = 'S') THEN _comments := (_comments || ( ', Serial #:' || _p.cntslip_lotserial)); END IF; _comments := (_comments || ' ' || _p.cntslip_comments); UPDATE cntslip SET cntslip_posted=TRUE WHERE (cntslip_id=pCntslipid); UPDATE invcnt SET invcnt_qoh_after = ( COALESCE(invcnt_qoh_after, 0) + cntslip_qty), invcnt_comments = (invcnt_comments || _comments) FROM cntslip WHERE ( (cntslip_cnttag_id=invcnt_id) AND (cntslip_id=pCntslipid) ); RETURN 1; ELSE RETURN -1; END IF; END; $_$; ALTER FUNCTION public.postcountslip(integer) OWNER TO admin; -- -- Name: postcounttag(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postcounttag(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcntid ALIAS FOR $1; pThaw ALIAS FOR $2; _avgCostingMethod TEXT; _invhistid INTEGER; _postDate TIMESTAMP; _runningQty NUMERIC; _errorCode INTEGER; _itemlocSeries INTEGER := 0; _hasDetail BOOLEAN; _p RECORD; _itemloc RECORD; _cntslip RECORD; _lsid INTEGER; BEGIN SELECT COALESCE(fetchMetricText('CountAvgCostMethod'), 'STD') INTO _avgCostingMethod; SELECT invcnt_id, invcnt_tagnumber, invcnt_qoh_after, invcnt_location_id, item_number, itemsite_id, itemsite_freeze, itemsite_qtyonhand, itemsite_loccntrl, itemsite_location_id, CASE WHEN (itemsite_costmethod = 'N') THEN 0 WHEN ( (itemsite_costmethod = 'A') AND (itemsite_qtyonhand = 0) AND (_avgCostingMethod = 'ACT') ) THEN actcost(itemsite_item_id) WHEN ( (itemsite_costmethod = 'A') AND (_avgCostingMethod IN ('ACT', 'AVG')) ) THEN avgcost(itemsite_id) ELSE stdcost(itemsite_item_id) END AS cost, itemsite_costmethod, itemsite_controlmethod, itemsite_value INTO _p FROM invcnt, itemsite, item WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (invcnt_qoh_after IS NOT NULL) AND (NOT invcnt_posted) AND (invcnt_id=pInvcntid) ); IF (FOUND) THEN -- If the invcnt_location_id is not null then -- call a separate function so as not to affect -- the existing functionality. IF (_p.invcnt_location_id IS NOT NULL) THEN RETURN postCountTagLocation(pInvcntid, pThaw); END IF; SELECT NEXTVAL('invhist_invhist_id_seq') INTO _invhistid; IF (_p.itemsite_freeze) THEN SELECT invcnt_tagdate INTO _postDate FROM invcnt WHERE (invcnt_id=pInvcntid) ; ELSE _postDate = CURRENT_TIMESTAMP; END IF; _hasDetail = FALSE; -- Post the detail indicated by cntslips IF ( (_p.itemsite_loccntrl) OR (_p.itemsite_controlmethod IN ('L', 'S')) ) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; -- Adjust any existing detail to 0 FOR _itemloc IN SELECT itemloc_id, itemloc_location_id, itemloc_ls_id, itemloc_qty FROM itemloc WHERE (itemloc_itemsite_id=_p.itemsite_id) LOOP _hasDetail = TRUE; -- Create the itemlocdist flushing records INSERT INTO itemlocdist ( itemlocdist_series, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_expiration, itemlocdist_itemsite_id, itemlocdist_invhist_id, itemlocdist_flush ) VALUES ( _itemlocSeries, 'I', _itemloc.itemloc_id, endOfTime(), _p.itemsite_id, _invhistid, TRUE ); END LOOP; -- Clear the running detail Qty _runningQty := 0; -- Adjust the detail to the cntslip indicated value FOR _cntslip IN SELECT cntslip_location_id, cntslip_lotserial, cntslip_lotserial_expiration, cntslip_lotserial_warrpurc, SUM(cntslip_qty) AS qty, itemsite_item_id FROM cntslip, invcnt, itemsite WHERE ((cntslip_cnttag_id=pInvcntid) AND (cntslip_cnttag_id=invcnt_id) AND (invcnt_itemsite_id=itemsite_id)) GROUP BY cntslip_location_id, cntslip_lotserial, cntslip_lotserial_expiration, cntslip_lotserial_warrpurc,itemsite_item_id LOOP -- Handle the LotSerial IF (LENGTH(_cntslip.cntslip_lotserial)>0) THEN SELECT ls_id INTO _lsid FROM ls WHERE ((ls_item_id=_cntslip.itemsite_item_id) AND (UPPER(ls_number)=UPPER(_cntslip.cntslip_lotserial))); IF (NOT FOUND) THEN _lsid := NEXTVAL('ls_ls_id_seq'); INSERT INTO ls VALUES (_lsid,_cntslip.itemsite_item_id,UPPER(_cntslip.cntslip_lotserial)); END IF; END IF; -- Track the running Qty _runningQty := (_runningQty + _cntslip.qty); _hasDetail = TRUE; -- Create the itemlocdist populating record INSERT INTO itemlocdist ( itemlocdist_series, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_itemsite_id, itemlocdist_ls_id, itemlocdist_expiration, itemlocdist_warranty, itemlocdist_qty, itemlocdist_invhist_id ) VALUES ( _itemlocSeries, 'L', _cntslip.cntslip_location_id, _p.itemsite_id, _lsid, COALESCE(_cntslip.cntslip_lotserial_expiration, endOfTime()), _cntslip.cntslip_lotserial_warrpurc,_cntslip.qty, _invhistid ); END LOOP; IF (_runningQty > _p.invcnt_qoh_after) THEN -- The total Count Slip Qty is greater than the Count Tag Qty, -- Don't post the Count. _errorCode = -1; ELSIF ( (_runningQty < _p.invcnt_qoh_after) AND (_p.itemsite_controlmethod IN ('L', 'S')) ) THEN -- The total Count Slip Qty is less than the Count Tag Qty, -- and the Item Site is Lot/Serial controlled. -- Don't post the Count. _errorCode = -2; ELSIF (_runningQty < _p.invcnt_qoh_after) THEN IF ( (NOT _p.itemsite_loccntrl) OR (_p.itemsite_location_id = -1) ) THEN -- The total Count Slip Qty is less than the Count Tag Qty, -- and there isn't a default location to post into. -- Don't post the Count. _errorCode = -3; ELSIF ( SELECT (metric_value='f') FROM metric WHERE (metric_name='PostCountTagToDefault') ) THEN -- The total Count Slip Qty is less than the Count Tag Qty, -- and we don't post Count Tags to default Locations -- Don't post the Count. _errorCode = -4; ELSE -- Distribute the remaining qty into the default location. INSERT INTO itemlocdist ( itemlocdist_series, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_itemsite_id, itemlocdist_expiration, itemlocdist_qty, itemlocdist_invhist_id ) SELECT _itemlocSeries, 'L', _p.itemsite_location_id, _p.itemsite_id, endOfTime(), (_p.invcnt_qoh_after - _runningQty), _invhistid; _hasDetail = TRUE; _errorCode = 0; END IF; ELSE -- The Count Slip Qty. must equal the Count Tag Qty. _errorCode = 0; END IF; -- If we shouldn't post the count then delete the itemlocdist records, -- and return with the error. IF (_errorCode <> 0) THEN DELETE FROM itemlocdist WHERE (itemlocdist_series=_itemlocSeries); RETURN _errorCode; END IF; END IF; -- Mod. the Count Tag. UPDATE invcnt SET invcnt_qoh_before=_p.itemsite_qtyonhand, invcnt_postdate=_postDate, invcnt_posted=TRUE, invcnt_invhist_id=_invhistid, invcnt_post_username=getEffectiveXtUser() WHERE (invcnt_id=pInvcntid); -- Create the CC transaction INSERT INTO invhist ( invhist_id, invhist_itemsite_id, invhist_transdate, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_docnumber, invhist_comments, invhist_invuom, invhist_unitcost, invhist_hasdetail, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_series ) SELECT _invhistid, itemsite_id, _postDate, 'CC', (invcnt_qoh_after - invcnt_qoh_before), invcnt_qoh_before, invcnt_qoh_after, invcnt_tagnumber, invcnt_comments, uom_name, _p.cost, _hasDetail, _p.itemsite_costmethod, _p.itemsite_value, _p.itemsite_value + (_p.cost * (invcnt_qoh_after - invcnt_qoh_before)), _itemlocSeries FROM itemsite, invcnt, item, uom WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (invcnt_id=pInvcntid) ); IF ( SELECT metric_value FROM metric WHERE ((metric_name = 'EnableAsOfQOH') AND (metric_value = 't'))) THEN IF (NOT postIntoInvBalance(_invhistid)) THEN RAISE EXCEPTION 'Post into Inventory Balance for invhist_id=% was unsuccessful',_invhistid; END IF; END IF; -- Update the QOH -- Avoid negative value when average cost item UPDATE itemsite SET itemsite_qtyonhand=_p.invcnt_qoh_after, itemsite_nnqoh = 0, itemsite_value = CASE WHEN ((itemsite_costmethod='A') AND (_p.itemsite_value + (_p.cost * (_p.invcnt_qoh_after - itemsite_qtyonhand))) < 0.0) THEN 0.0 ELSE (_p.itemsite_value + (_p.cost * (_p.invcnt_qoh_after - itemsite_qtyonhand))) END, itemsite_datelastcount=_postDate WHERE (itemsite_id=_p.itemsite_id); -- Post the detail, if any IF (_hasDetail) THEN PERFORM distributeItemlocSeries(_itemlocSeries); END IF; -- Thaw the itemsite if it's frozen IF (pThaw) THEN PERFORM thawItemSite(invcnt_itemsite_id) FROM invcnt WHERE (invcnt_id=pInvcntid); END IF; -- Distribute to G/L PERFORM insertGLTransaction( 'I/M', 'CT', _p.invcnt_tagnumber, ('Post Count Tag #' || _p.invcnt_tagnumber || ' for Item ' || _p.item_number), costcat_adjustment_accnt_id, costcat_asset_accnt_id, _invhistid, ( (_p.invcnt_qoh_after - _p.itemsite_qtyonhand) * _p.cost), _postDate::DATE ) FROM invcnt, itemsite, costcat WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_costcat_id=costcat_id) AND (invcnt_id=pInvcntid) ); RETURN 0; ELSE RETURN -9; END IF; END; $_$; ALTER FUNCTION public.postcounttag(integer, boolean) OWNER TO admin; -- -- Name: postcounttaglocation(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postcounttaglocation(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcntid ALIAS FOR $1; pThaw ALIAS FOR $2; _avgCostingMethod TEXT; _invhistid INTEGER; _postDate TIMESTAMP; _runningQty NUMERIC; _errorCode INTEGER; _itemlocSeries INTEGER := 0; _hasDetail BOOLEAN; _p RECORD; _itemloc RECORD; _cntslip RECORD; _origLocQty NUMERIC; _netable BOOLEAN; _lsid INTEGER; BEGIN SELECT COALESCE(fetchMetricText('CountAvgCostMethod'), 'STD') INTO _avgCostingMethod; SELECT invcnt_id, invcnt_tagnumber, invcnt_qoh_after, invcnt_location_id, invcnt_tagdate, item_number, itemsite_id, itemsite_freeze, itemsite_qtyonhand, itemsite_loccntrl, COALESCE(invcnt_location_id, -1) AS itemsite_location_id, CASE WHEN (itemsite_costmethod = 'N') THEN 0 WHEN ( (itemsite_costmethod = 'A') AND (itemsite_qtyonhand = 0) AND (_avgCostingMethod = 'ACT') ) THEN actcost(itemsite_item_id) WHEN ( (itemsite_costmethod = 'A') AND (_avgCostingMethod IN ('ACT', 'AVG')) ) THEN avgcost(itemsite_id) ELSE stdcost(itemsite_item_id) END AS cost, itemsite_costmethod, itemsite_controlmethod, itemsite_value INTO _p FROM invcnt, itemsite, item WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (invcnt_qoh_after IS NOT NULL) AND (NOT invcnt_posted) AND (invcnt_id=pInvcntid) ); IF (NOT FOUND) THEN RETURN -9; END IF; SELECT COALESCE(SUM(itemloc_qty),0.0), location_netable INTO _origLocQty,_netable FROM itemloc,location WHERE ((itemloc_itemsite_id=_p.itemsite_id) AND (location_id=itemloc_location_id) AND (itemloc_location_id=_p.invcnt_location_id)) GROUP BY location_netable; IF (NOT FOUND) THEN _origLocQty := 0.0; _netable := TRUE; END IF; SELECT NEXTVAL('invhist_invhist_id_seq') INTO _invhistid; IF (_p.itemsite_freeze) THEN _postDate := _p.invcnt_tagdate; ELSE _postDate := CURRENT_TIMESTAMP; END IF; _hasDetail = FALSE; -- Post the detail indicated by cntslips IF ( (_p.itemsite_loccntrl) OR (_p.itemsite_controlmethod IN ('L', 'S')) ) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; -- Adjust any existing detail to 0 FOR _itemloc IN SELECT itemloc_id, itemloc_location_id, itemloc_ls_id, itemloc_qty FROM itemloc WHERE ((itemloc_itemsite_id=_p.itemsite_id) AND (itemloc_location_id=_p.invcnt_location_id)) LOOP _hasDetail = TRUE; -- Create the itemlocdist flushing records INSERT INTO itemlocdist ( itemlocdist_series, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_expiration, itemlocdist_itemsite_id, itemlocdist_invhist_id, itemlocdist_flush ) VALUES ( _itemlocSeries, 'I', _itemloc.itemloc_id, endOfTime(), _p.itemsite_id, _invhistid, TRUE ); END LOOP; -- Clear the running detail Qty _runningQty := 0; -- Adjust the detail to the cntslip indicated value FOR _cntslip IN SELECT cntslip_location_id, cntslip_lotserial, cntslip_lotserial_expiration, cntslip_lotserial_warrpurc, SUM(cntslip_qty) AS qty, itemsite_item_id FROM cntslip,invcnt,itemsite WHERE ((cntslip_cnttag_id=pInvcntid) AND (cntslip_cnttag_id=invcnt_id) AND (invcnt_itemsite_id=itemsite_id)) GROUP BY cntslip_location_id, cntslip_lotserial, cntslip_lotserial_expiration, cntslip_lotserial_warrpurc, itemsite_item_id LOOP -- Handle the LotSerial IF (LENGTH(_cntslip.cntslip_lotserial)>0) THEN SELECT ls_id INTO _lsid FROM ls WHERE ((ls_item_id=_cntslip.itemsite_item_id) AND (UPPER(ls_number)=UPPER(_cntslip.cntslip_lotserial))); IF (NOT FOUND) THEN _lsid := NEXTVAL('ls_ls_id_seq'); INSERT INTO ls VALUES (_lsid,_cntslip.itemsite_item_id,UPPER(_cntslip.cntslip_lotserial)); END IF; END IF; -- Track the running Qty _runningQty := (_runningQty + _cntslip.qty); _hasDetail = TRUE; -- Create the itemlocdist populating record INSERT INTO itemlocdist ( itemlocdist_series, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_itemsite_id, itemlocdist_ls_id, itemlocdist_expiration, itemlocdist_warranty, itemlocdist_qty, itemlocdist_invhist_id ) VALUES ( _itemlocSeries, 'L', _cntslip.cntslip_location_id, _p.itemsite_id, _lsid, COALESCE(_cntslip.cntslip_lotserial_expiration, endOfTime()), _cntslip.cntslip_lotserial_warrpurc, _cntslip.qty, _invhistid ); END LOOP; IF (_runningQty > _p.invcnt_qoh_after) THEN -- The total Count Slip Qty is greater than the Count Tag Qty, -- Don't post the Count. _errorCode = -1; ELSIF ( (_runningQty < _p.invcnt_qoh_after) AND (_p.itemsite_controlmethod IN ('L', 'S')) ) THEN -- The total Count Slip Qty is less than the Count Tag Qty, -- and the Item Site is Lot/Serial controlled. -- Don't post the Count. _errorCode = -2; ELSIF (_runningQty < _p.invcnt_qoh_after) THEN IF ( (NOT _p.itemsite_loccntrl) OR (_p.itemsite_location_id = -1) ) THEN -- The total Count Slip Qty is less than the Count Tag Qty, -- and there isn't a default location to post into. -- Don't post the Count. _errorCode = -3; ELSIF ( SELECT (metric_value='f') FROM metric WHERE (metric_name='PostCountTagToDefault') ) THEN -- The total Count Slip Qty is less than the Count Tag Qty, -- and we don't post Count Tags to default Locations -- Don't post the Count. _errorCode = -4; ELSE -- Distribute the remaining qty into the default location. INSERT INTO itemlocdist ( itemlocdist_series, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_itemsite_id, itemlocdist_ls_id, itemlocdist_expiration, itemlocdist_qty, itemlocdist_invhist_id ) SELECT _itemlocSeries, 'L', _p.itemsite_location_id, _p.itemsite_id, _lsid, endOfTime(), (_p.invcnt_qoh_after - _runningQty), _invhistid; _hasDetail = TRUE; _errorCode = 0; END IF; ELSE -- The Count Slip Qty. must equal the Count Tag Qty. _errorCode = 0; END IF; -- If we shouldn't post the count then delete the itemlocdist records, -- and return with the error. IF (_errorCode <> 0) THEN DELETE FROM itemlocdist WHERE (itemlocdist_series=_itemlocSeries); RETURN _errorCode; END IF; END IF; -- Mod. the Count Tag. UPDATE invcnt SET invcnt_qoh_before=_origLocQty, invcnt_postdate=_postDate, invcnt_posted=TRUE, invcnt_invhist_id=_invhistid, invcnt_post_username=getEffectiveXtUser() WHERE (invcnt_id=pInvcntid); -- Create the CC transaction INSERT INTO invhist ( invhist_id, invhist_itemsite_id, invhist_transdate, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_docnumber, invhist_comments, invhist_invuom, invhist_unitcost, invhist_hasdetail, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_series ) SELECT _invhistid, itemsite_id, _postDate, 'CC', (invcnt_qoh_after - invcnt_qoh_before), invcnt_qoh_before, invcnt_qoh_after, invcnt_tagnumber, invcnt_comments, uom_name, _p.cost, _hasDetail, _p.itemsite_costmethod, _p.itemsite_value, _p.itemsite_value + (_p.cost * (invcnt_qoh_after - invcnt_qoh_before)), _itemlocSeries FROM itemsite, invcnt, item, uom WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (invcnt_id=pInvcntid) ); -- Update the QOH IF (_netable) THEN UPDATE itemsite SET itemsite_qtyonhand= itemsite_qtyonhand + (_p.invcnt_qoh_after - _origLocQty), itemsite_datelastcount=_postDate WHERE (itemsite_id=_p.itemsite_id); ELSE UPDATE itemsite SET itemsite_nnqoh = itemsite_nnqoh - _origLocQty, itemsite_qtyonhand = itemsite_qtyonhand + _p.invcnt_qoh_after, itemsite_datelastcount=_postDate WHERE (itemsite_id=_p.itemsite_id); END IF; -- Post the detail, if any IF (_hasDetail) THEN PERFORM distributeItemlocSeries(_itemlocSeries); END IF; -- Thaw the itemsite if it's frozen IF (pThaw) THEN PERFORM thawItemSite(invcnt_itemsite_id) FROM invcnt WHERE (invcnt_id=pInvcntid); END IF; -- Distribute to G/L PERFORM insertGLTransaction( 'I/M', 'CT', _p.invcnt_tagnumber, ('Post Count Tag #' || _p.invcnt_tagnumber || ' for Item ' || _p.item_number), costcat_adjustment_accnt_id, costcat_asset_accnt_id, _invhistid, ( (_p.invcnt_qoh_after - _origLocQty) * _p.cost), CURRENT_DATE ) FROM invcnt, itemsite, costcat WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_costcat_id=costcat_id) AND (invcnt_id=pInvcntid) ); RETURN 0; END; $_$; ALTER FUNCTION public.postcounttaglocation(integer, boolean) OWNER TO admin; -- -- Name: postcounttaglocation(integer, boolean, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postcounttaglocation(integer, boolean, text) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pInvcntid ALIAS FOR $1; pThaw ALIAS FOR $2; pAvgCostingMethod ALIAS FOR $3; _invhistid INTEGER; _postDate TIMESTAMP; _runningQty NUMERIC; _errorCode INTEGER; _itemlocSeries INTEGER := 0; _hasDetail BOOLEAN; _p RECORD; _itemloc RECORD; _cntslip RECORD; _origLocQty NUMERIC; _netable BOOLEAN; _lsid INTEGER; BEGIN SELECT invcnt_id, invcnt_tagnumber, invcnt_qoh_after, invcnt_location_id, invcnt_tagdate, item_number, itemsite_id, itemsite_freeze, itemsite_qtyonhand, itemsite_loccntrl, COALESCE(invcnt_location_id, -1) AS itemsite_location_id, CASE WHEN (itemsite_costmethod = 'N') THEN 0 WHEN ( (itemsite_costmethod = 'A') AND (itemsite_qtyonhand = 0) AND (pAvgCostingMethod = 'ACT') ) THEN actcost(itemsite_item_id) WHEN ( (itemsite_costmethod = 'A') AND (pAvgCostingMethod IN ('ACT', 'AVG')) ) THEN avgcost(itemsite_id) ELSE stdcost(itemsite_item_id) END AS cost, itemsite_costmethod, itemsite_controlmethod, itemsite_value INTO _p FROM invcnt, itemsite, item WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (invcnt_qoh_after IS NOT NULL) AND (NOT invcnt_posted) AND (invcnt_id=pInvcntid) ); IF (NOT FOUND) THEN RETURN -9; END IF; SELECT COALESCE(SUM(itemloc_qty),0.0), location_netable INTO _origLocQty,_netable FROM itemloc,location WHERE ((itemloc_itemsite_id=_p.itemsite_id) AND (location_id=itemloc_location_id) AND (itemloc_location_id=_p.invcnt_location_id)) GROUP BY location_netable; IF (NOT FOUND) THEN _origLocQty := 0.0; _netable := TRUE; END IF; SELECT NEXTVAL('invhist_invhist_id_seq') INTO _invhistid; IF (_p.itemsite_freeze) THEN _postDate := _p.invcnt_tagdate; ELSE _postDate := CURRENT_TIMESTAMP; END IF; _hasDetail = FALSE; -- Post the detail indicated by cntslips IF ( (_p.itemsite_loccntrl) OR (_p.itemsite_controlmethod IN ('L', 'S')) ) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; -- Adjust any existing detail to 0 FOR _itemloc IN SELECT itemloc_id, itemloc_location_id, itemloc_ls_id, itemloc_qty FROM itemloc WHERE ((itemloc_itemsite_id=_p.itemsite_id) AND (itemloc_location_id=_p.invcnt_location_id)) LOOP _hasDetail = TRUE; -- Create the itemlocdist flushing records INSERT INTO itemlocdist ( itemlocdist_series, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_expiration, itemlocdist_itemsite_id, itemlocdist_invhist_id, itemlocdist_flush ) VALUES ( _itemlocSeries, 'I', _itemloc.itemloc_id, endOfTime(), _p.itemsite_id, _invhistid, TRUE ); END LOOP; -- Clear the running detail Qty _runningQty := 0; -- Adjust the detail to the cntslip indicated value FOR _cntslip IN SELECT cntslip_location_id, cntslip_lotserial, cntslip_lotserial_expiration, cntslip_lotserial_warrpurc, SUM(cntslip_qty) AS qty, itemsite_item_id FROM cntslip,invcnt,itemsite WHERE ((cntslip_cnttag_id=pInvcntid) AND (cntslip_cnttag_id=invcnt_id) AND (invcnt_itemsite_id=itemsite_id)) GROUP BY cntslip_location_id, cntslip_lotserial, cntslip_lotserial_expiration, cntslip_lotserial_warrpurc, itemsite_item_id LOOP -- Handle the LotSerial IF (LENGTH(_cntslip.cntslip_lotserial)>0) THEN SELECT ls_id INTO _lsid FROM ls WHERE ((ls_item_id=_cntslip.itemsite_item_id) AND (UPPER(ls_number)=UPPER(_cntslip.cntslip_lotserial))); IF (NOT FOUND) THEN _lsid := NEXTVAL('ls_ls_id_seq'); INSERT INTO ls VALUES (_lsid,_cntslip.itemsite_item_id,UPPER(_cntslip.cntslip_lotserial)); END IF; END IF; -- Track the running Qty _runningQty := (_runningQty + _cntslip.qty); _hasDetail = TRUE; -- Create the itemlocdist populating record INSERT INTO itemlocdist ( itemlocdist_series, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_itemsite_id, itemlocdist_ls_id, itemlocdist_expiration, itemlocdist_warranty, itemlocdist_qty, itemlocdist_invhist_id ) VALUES ( _itemlocSeries, 'L', _cntslip.cntslip_location_id, _p.itemsite_id, _lsid, COALESCE(_cntslip.cntslip_lotserial_expiration, endOfTime()), _cntslip.cntslip_lotserial_warrpurc, _cntslip.qty, _invhistid ); END LOOP; IF (_runningQty > _p.invcnt_qoh_after) THEN -- The total Count Slip Qty is greater than the Count Tag Qty, -- Don't post the Count. _errorCode = -1; ELSIF ( (_runningQty < _p.invcnt_qoh_after) AND (_p.itemsite_controlmethod IN ('L', 'S')) ) THEN -- The total Count Slip Qty is less than the Count Tag Qty, -- and the Item Site is Lot/Serial controlled. -- Don't post the Count. _errorCode = -2; ELSIF (_runningQty < _p.invcnt_qoh_after) THEN IF ( (NOT _p.itemsite_loccntrl) OR (_p.itemsite_location_id = -1) ) THEN -- The total Count Slip Qty is less than the Count Tag Qty, -- and there isn't a default location to post into. -- Don't post the Count. _errorCode = -3; ELSIF ( SELECT (metric_value='f') FROM metric WHERE (metric_name='PostCountTagToDefault') ) THEN -- The total Count Slip Qty is less than the Count Tag Qty, -- and we don't post Count Tags to default Locations -- Don't post the Count. _errorCode = -4; ELSE -- Distribute the remaining qty into the default location. INSERT INTO itemlocdist ( itemlocdist_series, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_itemsite_id, itemlocdist_ls_id, itemlocdist_expiration, itemlocdist_qty, itemlocdist_invhist_id ) SELECT _itemlocSeries, 'L', _p.itemsite_location_id, _p.itemsite_id, _lsid, endOfTime(), (_p.invcnt_qoh_after - _runningQty), _invhistid; _hasDetail = TRUE; _errorCode = 0; END IF; ELSE -- The Count Slip Qty. must equal the Count Tag Qty. _errorCode = 0; END IF; -- If we shouldn't post the count then delete the itemlocdist records, -- and return with the error. IF (_errorCode <> 0) THEN DELETE FROM itemlocdist WHERE (itemlocdist_series=_itemlocSeries); RETURN _errorCode; END IF; END IF; -- Mod. the Count Tag. UPDATE invcnt SET invcnt_qoh_before=_origLocQty, invcnt_postdate=_postDate, invcnt_posted=TRUE, invcnt_invhist_id=_invhistid, invcnt_post_username=CURRENT_USER WHERE (invcnt_id=pInvcntid); -- Create the CC transaction INSERT INTO invhist ( invhist_id, invhist_itemsite_id, invhist_transdate, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_docnumber, invhist_comments, invhist_invuom, invhist_unitcost, invhist_hasdetail, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_series ) SELECT _invhistid, itemsite_id, _postDate, 'CC', (invcnt_qoh_after - invcnt_qoh_before), invcnt_qoh_before, invcnt_qoh_after, invcnt_tagnumber, invcnt_comments, uom_name, _p.cost, _hasDetail, _p.itemsite_costmethod, _p.itemsite_value, _p.itemsite_value + (_p.cost * (invcnt_qoh_after - invcnt_qoh_before)), _itemlocSeries FROM itemsite, invcnt, item, uom WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (invcnt_id=pInvcntid) ); -- Update the QOH IF (_netable) THEN UPDATE itemsite SET itemsite_qtyonhand= itemsite_qtyonhand + (_p.invcnt_qoh_after - _origLocQty), itemsite_datelastcount=_postDate WHERE (itemsite_id=_p.itemsite_id); ELSE UPDATE itemsite SET itemsite_nnqoh = itemsite_nnqoh - _origLocQty, itemsite_qtyonhand = itemsite_qtyonhand + _p.invcnt_qoh_after, itemsite_datelastcount=_postDate WHERE (itemsite_id=_p.itemsite_id); END IF; -- Post the detail, if any IF (_hasDetail) THEN PERFORM distributeItemlocSeries(_itemlocSeries); END IF; -- Thaw the itemsite if it's frozen IF (pThaw) THEN PERFORM thawItemSite(invcnt_itemsite_id) FROM invcnt WHERE (invcnt_id=pInvcntid); END IF; -- Distribute to G/L PERFORM insertGLTransaction( 'I/M', 'CT', _p.invcnt_tagnumber, ('Post Count Tag #' || _p.invcnt_tagnumber || ' for Item ' || _p.item_number), costcat_adjustment_accnt_id, costcat_asset_accnt_id, _invhistid, ( (_p.invcnt_qoh_after - _origLocQty) * _p.cost), CURRENT_DATE ) FROM invcnt, itemsite, costcat WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_costcat_id=costcat_id) AND (invcnt_id=pInvcntid) ); RETURN 0; END; $_$; ALTER FUNCTION public.postcounttaglocation(integer, boolean, text) OWNER TO admin; -- -- Name: postcounttags(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postcounttags(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pThaw ALIAS FOR $2; _invcnt RECORD; _result INTEGER := 0; _return INTEGER := 0; BEGIN FOR _invcnt IN SELECT invcnt_id FROM invcnt, itemsite WHERE ( (invcnt_itemsite_id=itemsite_id) AND ( (pWarehousid=-1) OR (itemsite_warehous_id=pWarehousid) ) AND (invcnt_qoh_after IS NOT NULL) AND (NOT invcnt_posted) ) LOOP SELECT postCountTag(_invcnt.invcnt_id, pThaw) INTO _result; IF (_result < _return) THEN _return := _result; END IF; END LOOP; RETURN _return; END; $_$; ALTER FUNCTION public.postcounttags(integer, boolean) OWNER TO admin; -- -- Name: postcreditmemo(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postcreditmemo(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmheadid ALIAS FOR $1; pItemlocSeries ALIAS FOR $2; _return INTEGER; BEGIN SELECT postCreditMemo(pCmheadid, fetchJournalNumber('AR-CM'), pItemlocSeries) INTO _return; RETURN _return; END; $_$; ALTER FUNCTION public.postcreditmemo(integer, integer) OWNER TO admin; -- -- Name: postcreditmemo(integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postcreditmemo(integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmheadid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pItemlocSeries ALIAS FOR $3; _r RECORD; _p RECORD; _aropenid INTEGER; _cohistid INTEGER; _sequence INTEGER; _itemlocSeries INTEGER; _invhistid INTEGER; _test INTEGER; _totalAmount NUMERIC := 0; _commissionDue NUMERIC := 0; _toApply NUMERIC; _toClose BOOLEAN; _glDate DATE; _taxBaseValue NUMERIC := 0; BEGIN -- Cache some parameters SELECT cmhead.*, findARAccount(cmhead_cust_id) AS ar_accnt_id, ( SELECT COALESCE(SUM(taxhist_tax), 0) FROM cmheadtax WHERE ( (taxhist_parent_id = cmhead_id) AND (taxhist_taxtype_id = getAdjustmentTaxtypeId()) ) ) AS adjtax INTO _p FROM cmhead WHERE (cmhead_id=pCmheadid); IF (_p.cmhead_posted) THEN RETURN -10; END IF; IF (_p.cmhead_hold) THEN RETURN -11; END IF; _glDate := COALESCE(_p.cmhead_gldistdate, _p.cmhead_docdate); _itemlocSeries = pItemlocSeries; SELECT fetchGLSequence() INTO _sequence; -- Start by handling taxes FOR _r IN SELECT tax_sales_accnt_id, round(sum(taxdetail_tax),2) AS tax, currToBase(_p.cmhead_curr_id, round(sum(taxdetail_tax),2), _p.cmhead_docdate) AS taxbasevalue FROM tax JOIN calculateTaxDetailSummary('CM', pCmheadid, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id, tax_sales_accnt_id LOOP PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CM', _p.cmhead_number, _r.tax_sales_accnt_id, _r.taxbasevalue, _glDate, _p.cmhead_billtoname ); _totalAmount := _totalAmount + _r.tax * -1; END LOOP; -- Update item tax records with posting data UPDATE cmitemtax SET taxhist_docdate=_p.cmhead_docdate, taxhist_distdate=_glDate, taxhist_curr_id=_p.cmhead_curr_id, taxhist_curr_rate=curr_rate, taxhist_journalnumber=pJournalNumber FROM cmhead JOIN cmitem ON (cmhead_id=cmitem_cmhead_id), curr_rate WHERE ((cmhead_id=pCmheadId) AND (taxhist_parent_id=cmitem_id) AND (_p.cmhead_curr_id=curr_id) AND (_p.cmhead_docdate BETWEEN curr_effective AND curr_expires) ); -- Update Header taxes (Freight and Adjustments) with posting data UPDATE cmheadtax SET taxhist_docdate=_p.cmhead_docdate, taxhist_distdate=_glDate, taxhist_curr_id=_p.cmhead_curr_id, taxhist_curr_rate=curr_rate, taxhist_journalnumber=pJournalNumber FROM curr_rate WHERE ((taxhist_parent_id=pCmheadId) AND (_p.cmhead_curr_id=curr_id) AND (_p.cmhead_docdate BETWEEN curr_effective AND curr_expires) ); -- Process line items -- Always use std cost FOR _r IN SELECT *, stdCost(item_id) AS std_cost FROM creditmemoitem WHERE ( (cmitem_cmhead_id=pCmheadid) AND (cmitem_qtycredit <> 0 ) ) LOOP -- Calcuate the Commission to be debited _commissionDue := (_commissionDue + (_r.extprice * _p.cmhead_commission)); IF (_r.extprice <> 0) THEN -- Debit the Sales Account for the current cmitem SELECT insertIntoGLSeries( _sequence, 'A/R', 'CM', _p.cmhead_number, CASE WHEN _p.cmhead_rahead_id IS NULL THEN getPrjAccntId(_p.cmhead_prj_id, salesaccnt_credit_accnt_id) ELSE getPrjAccntId(_p.cmhead_prj_id, salesaccnt_returns_accnt_id) END, round(currToBase(_p.cmhead_curr_id, _r.extprice * -1, _p.cmhead_docdate), 2), _glDate, _p.cmhead_billtoname) INTO _test FROM salesaccnt WHERE (salesaccnt_id=findSalesAccnt(_r.cmitem_itemsite_id, 'IS', _p.cmhead_cust_id, _p.cmhead_saletype_id, _p.cmhead_shipzone_id)); IF (NOT FOUND) THEN PERFORM deleteGLSeries(_sequence); RETURN -12; END IF; END IF; -- Record Sales History for this C/M Item SELECT nextval('cohist_cohist_id_seq') INTO _cohistid; INSERT INTO cohist ( cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_curr_id, cohist_taxtype_id, cohist_taxzone_id, cohist_shipzone_id, cohist_saletype_id ) VALUES ( _cohistid, _p.cmhead_cust_id, _r.cmitem_itemsite_id, _p.cmhead_shipto_id, _p.cmhead_docdate, '', _p.cmhead_number, _p.cmhead_custponumber, _p.cmhead_docdate, 'C', _p.cmhead_invcnumber, _p.cmhead_docdate, (_r.qty * -1), _r.unitprice, _r.std_cost, _p.cmhead_salesrep_id, (_p.cmhead_commission * _r.extprice * -1), FALSE, _p.cmhead_billtoname, _p.cmhead_billtoaddress1, _p.cmhead_billtoaddress2, _p.cmhead_billtoaddress3, _p.cmhead_billtocity, _p.cmhead_billtostate, _p.cmhead_billtozip, _p.cmhead_shipto_name, _p.cmhead_shipto_address1, _p.cmhead_shipto_address2, _p.cmhead_shipto_address3, _p.cmhead_shipto_city, _p.cmhead_shipto_state, _p.cmhead_shipto_zipcode, _p.cmhead_curr_id, _r.cmitem_taxtype_id, _p.cmhead_taxzone_id, _p.cmhead_shipzone_id, _p.cmhead_saletype_id ); INSERT INTO cohisttax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT _cohistid, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM cmitemtax WHERE (taxhist_parent_id=_r.cmitem_id); _totalAmount := _totalAmount + round(_r.extprice, 2); END LOOP; -- Credit the Misc. Account for Miscellaneous Charges IF (_p.cmhead_misc <> 0) THEN SELECT insertIntoGLSeries( _sequence, 'A/R', 'CM', _p.cmhead_number, getPrjAccntId(_p.cmhead_prj_id, accnt_id), round(currToBase(_p.cmhead_curr_id, _p.cmhead_misc * -1, _p.cmhead_docdate), 2), _glDate, _p.cmhead_billtoname) INTO _test FROM accnt WHERE (accnt_id=_p.cmhead_misc_accnt_id); -- If the Misc. Charges Account was not found then punt IF (NOT FOUND) THEN PERFORM deleteGLSeries(_sequence); RETURN -14; END IF; -- Record the Sales History for any Misc. Charge INSERT INTO cohist ( cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_misc_type, cohist_misc_descrip, cohist_misc_id, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_curr_id, cohist_shipzone_id, cohist_saletype_id ) VALUES ( _p.cmhead_cust_id, -1, _p.cmhead_shipto_id, 'M', _p.cmhead_misc_descrip, _p.cmhead_misc_accnt_id, _p.cmhead_docdate, '', _p.cmhead_number, _p.cmhead_custponumber, _p.cmhead_docdate, 'C', _p.cmhead_invcnumber, _p.cmhead_docdate, 1, (_p.cmhead_misc * -1), (_p.cmhead_misc * -1), _p.cmhead_salesrep_id, 0, FALSE, _p.cmhead_billtoname, _p.cmhead_billtoaddress1, _p.cmhead_billtoaddress2, _p.cmhead_billtoaddress3, _p.cmhead_billtocity, _p.cmhead_billtostate, _p.cmhead_billtozip, _p.cmhead_shipto_name, _p.cmhead_shipto_address1, _p.cmhead_shipto_address2, _p.cmhead_shipto_address3, _p.cmhead_shipto_city, _p.cmhead_shipto_state, _p.cmhead_shipto_zipcode, _p.cmhead_curr_id, _p.cmhead_shipzone_id, _p.cmhead_saletype_id ); -- Cache the Misc. Amount distributed _totalAmount := _totalAmount + _p.cmhead_misc; END IF; -- Credit Tax Adjustments IF (_p.adjtax <> 0) THEN -- Record the Sales History for Tax Adjustment SELECT nextval('cohist_cohist_id_seq') INTO _cohistid; INSERT INTO cohist ( cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_misc_type, cohist_misc_descrip, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_curr_id, cohist_taxtype_id, cohist_taxzone_id, cohist_shipzone_id, cohist_saletype_id ) VALUES ( _cohistid, _p.cmhead_cust_id, -1, _p.cmhead_shipto_id, 'T', 'Misc Tax Adjustment', _p.cmhead_docdate, '', _p.cmhead_number, _p.cmhead_custponumber, _p.cmhead_docdate, 'C', _p.cmhead_invcnumber, _p.cmhead_docdate, 0, 0, 0, _p.cmhead_salesrep_id, 0, FALSE, _p.cmhead_billtoname, _p.cmhead_billtoaddress1, _p.cmhead_billtoaddress2, _p.cmhead_billtoaddress3, _p.cmhead_billtocity, _p.cmhead_billtostate, _p.cmhead_billtozip, _p.cmhead_shipto_name, _p.cmhead_shipto_address1, _p.cmhead_shipto_address2, _p.cmhead_shipto_address3, _p.cmhead_shipto_city, _p.cmhead_shipto_state, _p.cmhead_shipto_zipcode, _p.cmhead_curr_id, getAdjustmentTaxtypeId(), _p.cmhead_taxzone_id, _p.cmhead_shipzone_id, _p.cmhead_saletype_id ); INSERT INTO cohisttax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT _cohistid, taxhist_taxtype_id, taxhist_tax_id, (taxhist_basis * -1), taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM cmheadtax WHERE ( (taxhist_parent_id=_p.cmhead_id) AND (taxhist_taxtype_id=getAdjustmentTaxtypeId()) ); END IF; -- Debit the Freight Account IF (_p.cmhead_freight <> 0) THEN SELECT insertIntoGLSeries( _sequence, 'A/R', 'CM', _p.cmhead_number, getPrjAccntId(_p.cmhead_prj_id, accnt_id), round(currToBase(_p.cmhead_curr_id, _p.cmhead_freight * -1, _p.cmhead_docdate), 2), _glDate, _p.cmhead_billtoname) INTO _test FROM accnt WHERE (accnt_id=findFreightAccount(_p.cmhead_cust_id)); -- If the Freight Charges Account was not found then punt IF (NOT FOUND) THEN PERFORM deleteGLSeries(_sequence); RETURN -16; END IF; -- Cache the Amount Distributed to Freight _totalAmount := _totalAmount + _p.cmhead_freight; -- Record the Sales History for any Freight SELECT nextval('cohist_cohist_id_seq') INTO _cohistid; INSERT INTO cohist ( cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_misc_type, cohist_misc_descrip, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_curr_id, cohist_taxtype_id, cohist_taxzone_id, cohist_shipzone_id, cohist_saletype_id ) VALUES ( _cohistid, _p.cmhead_cust_id, -1, _p.cmhead_shipto_id, 'F', 'Freight Charge', _p.cmhead_docdate, '', _p.cmhead_number, _p.cmhead_custponumber, _p.cmhead_docdate, 'C', _p.cmhead_invcnumber, _p.cmhead_docdate, 1, (_p.cmhead_freight * -1), (_p.cmhead_freight * -1), _p.cmhead_salesrep_id, 0, FALSE, _p.cmhead_billtoname, _p.cmhead_billtoaddress1, _p.cmhead_billtoaddress2, _p.cmhead_billtoaddress3, _p.cmhead_billtocity, _p.cmhead_billtostate, _p.cmhead_billtozip, _p.cmhead_shipto_name, _p.cmhead_shipto_address1, _p.cmhead_shipto_address2, _p.cmhead_shipto_address3, _p.cmhead_shipto_city, _p.cmhead_shipto_state, _p.cmhead_shipto_zipcode, _p.cmhead_curr_id, getFreightTaxtypeId(), _p.cmhead_taxzone_id, _p.cmhead_shipzone_id, _p.cmhead_saletype_id ); INSERT INTO cohisttax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT _cohistid, taxhist_taxtype_id, taxhist_tax_id, (taxhist_basis * -1), taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM cmheadtax WHERE ( (taxhist_parent_id=_p.cmhead_id) AND (taxhist_taxtype_id=getFreightTaxtypeId()) ); END IF; _totalAmount := _totalAmount; -- Credit the A/R for the total Amount IF (_totalAmount <> 0) THEN IF (_p.ar_accnt_id != -1) THEN PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CM', _p.cmhead_number, _p.ar_accnt_id, round(currToBase(_p.cmhead_curr_id, _totalAmount, _p.cmhead_docdate), 2), _glDate, _p.cmhead_billtoname); ELSE PERFORM deleteGLSeries(_sequence); RETURN -18; END IF; END IF; -- Commit the GLSeries; PERFORM postGLSeries(_sequence, pJournalNumber); -- Create the Invoice aropen item SELECT NEXTVAL('aropen_aropen_id_seq') INTO _aropenid; INSERT INTO aropen ( aropen_id, aropen_username, aropen_journalnumber, aropen_open, aropen_posted, aropen_cust_id, aropen_ponumber, aropen_docnumber, aropen_applyto, aropen_doctype, aropen_docdate, aropen_duedate, aropen_distdate, aropen_terms_id, aropen_amount, aropen_paid, aropen_salesrep_id, aropen_commission_due, aropen_commission_paid, aropen_ordernumber, aropen_notes, aropen_rsncode_id, aropen_curr_id ) SELECT _aropenid, getEffectiveXtUser(), pJournalNumber, TRUE, FALSE, cmhead_cust_id, cmhead_custponumber, cmhead_number, CASE WHEN (cmhead_invcnumber='-1') THEN 'OPEN' ELSE (cmhead_invcnumber::TEXT) END, 'C', cmhead_docdate, cmhead_docdate, _glDate, -1, _totalAmount, 0, cmhead_salesrep_id, (_commissionDue * -1), FALSE, cmhead_number::TEXT, cmhead_comments, cmhead_rsncode_id, cmhead_curr_id FROM cmhead WHERE (cmhead_id=pCmheadid); -- Handle the Inventory and G/L Transactions for any returned Inventory where cmitem_updateinv is true FOR _r IN SELECT cmitem_itemsite_id AS itemsite_id, cmitem_id, (cmitem_qtyreturned * cmitem_qty_invuomratio) AS qty, cmhead_number, cmhead_cust_id AS cust_id, item_number, cmhead_saletype_id AS saletype_id, cmhead_shipzone_id AS shipzone_id, stdCost(item_id) AS std_cost, cmhead_prj_id, itemsite_costmethod FROM cmhead, cmitem, itemsite, item WHERE ( (cmitem_cmhead_id=cmhead_id) AND (cmitem_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (cmitem_qtyreturned <> 0) AND (cmitem_updateinv) AND (cmhead_id=pCmheadid) ) LOOP -- Return credited stock to inventory IF (_itemlocSeries = 0) THEN _itemlocSeries := NEXTVAL('itemloc_series_seq'); END IF; IF (_r.itemsite_costmethod != 'J') THEN SELECT postInvTrans(itemsite_id, 'RS', _r.qty, 'S/O', 'CM', _r.cmhead_number, '', ('Credit Return ' || _r.item_number), costcat_asset_accnt_id, getPrjAccntId(_r.cmhead_prj_id, resolveCOSAccount(itemsite_id, _r.cust_id, _r.saletype_id, _r.shipzone_id)), _itemlocSeries, _glDate, _r.std_cost) INTO _invhistid FROM itemsite, costcat WHERE ((itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id)); ELSE RAISE DEBUG 'postCreditMemo(%, %, %) tried to postInvTrans a %-costed item', pCmheadid, pJournalNumber, pItemlocSeries, _r.itemsite_costmethod; END IF; END LOOP; -- Update coitem to reflect the returned qty where cmitem_updateinv is true FOR _r IN SELECT cmitem_qtyreturned, cmitem_itemsite_id, cohead_id FROM cmitem, cmhead, invchead, cohead WHERE ( (cmitem_cmhead_id=cmhead_id) AND (cmhead_invcnumber=invchead_invcnumber) AND (invchead_ordernumber=cohead_number) AND (cmitem_qtyreturned <> 0) AND (cmitem_updateinv) AND (cmhead_id=pCmheadid) ) LOOP UPDATE coitem SET coitem_qtyreturned = (coitem_qtyreturned + _r.cmitem_qtyreturned) WHERE coitem_id IN ( SELECT coitem_id FROM coitem WHERE ( (coitem_cohead_id=_r.cohead_id) AND (coitem_itemsite_id = _r.cmitem_itemsite_id) ) LIMIT 1 ); END LOOP; -- Mark the cmhead as posted UPDATE cmhead SET cmhead_posted=TRUE, cmhead_gldistdate=_glDate WHERE (cmhead_id=pCmheadid); -- Find the apply-to document and make the application SELECT cmhead_number, cmhead_curr_id, cmhead_docdate, aropen_id, aropen_cust_id, aropen_docnumber, currToCurr(aropen_curr_id, cmhead_curr_id, aropen_amount - aropen_paid, cmhead_docdate) AS balance INTO _p FROM aropen, cmhead WHERE ( (aropen_doctype='I') AND (aropen_docnumber=cmhead_invcnumber) AND (cmhead_id=pCmheadid) ); IF (FOUND) THEN IF round(_totalAmount, 2) <= round(_p.balance, 2) THEN _toApply = _totalAmount; ELSE _toApply = _p.balance; END IF; UPDATE aropen SET aropen_paid = round(aropen_paid + currToCurr(_p.cmhead_curr_id, aropen_curr_id, _toApply, _p.cmhead_docdate), 2) WHERE (aropen_id=_p.aropen_id); -- Alter the new A/R Open Item to reflect the application UPDATE aropen SET aropen_paid = round(currToCurr(_p.cmhead_curr_id, aropen_curr_id, _toApply, _p.cmhead_docdate), 2) WHERE (aropen_id=_aropenid); -- Record the application INSERT INTO arapply ( arapply_cust_id, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_fundstype, arapply_refnumber, arapply_applied, arapply_closed, arapply_postdate, arapply_distdate, arapply_journalnumber, arapply_curr_id ) VALUES ( _p.aropen_cust_id, _aropenid, 'C', _p.cmhead_number, _p.aropen_id, 'I', _p.aropen_docnumber, '', '', round(_toApply, 2), _toClose, CURRENT_DATE, _p.cmhead_docdate, 0, _p.cmhead_curr_id ); END IF; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.postcreditmemo(integer, integer, integer) OWNER TO admin; -- -- Name: postcreditmemos(boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postcreditmemos(boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPostUnprinted ALIAS FOR $1; _cmhead RECORD; _result INTEGER; _return INTEGER := 0; _itemlocSeries INTEGER := 0; BEGIN _itemlocSeries := 0; FOR _cmhead IN SELECT cmhead_id FROM cmhead WHERE ( (NOT cmhead_posted) AND (NOT cmhead_hold) AND (checkCreditMemoSitePrivs(cmhead_id)) AND ((pPostUnprinted) OR (cmhead_printed)) ) LOOP SELECT postCreditMemo(_cmhead.cmhead_id, _itemlocSeries) INTO _result; IF (_result < _return) THEN _return := _result; END IF; END LOOP; RETURN _return; END; $_$; ALTER FUNCTION public.postcreditmemos(boolean) OWNER TO admin; -- -- Name: postcreditmemos(boolean, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postcreditmemos(boolean, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPostUnprinted ALIAS FOR $1; pJournalNumber ALIAS FOR $2; _r RECORD; _itemlocSeries INTEGER := 0; BEGIN _itemlocSeries := 0; FOR _r IN SELECT cmhead_id FROM cmhead WHERE ( (NOT cmhead_posted) AND (NOT cmhead_hold) AND (checkCreditMemoSitePrivs(cmhead_id)) AND ((pPostUnprinted) OR (cmhead_printed)) ) LOOP SELECT postCreditMemo(_r.cmhead_id, pJournalNumber, _itemlocSeries) INTO _itemlocSeries; END LOOP; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.postcreditmemos(boolean, integer) OWNER TO admin; -- -- Name: postglseries(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postglseries(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; _journalNumber INTEGER; _returnValue INTEGER; BEGIN SELECT postGLSeries(pSequence, fetchJournalNumber('G/L')) INTO _returnValue; RETURN _returnValue; END; $_$; ALTER FUNCTION public.postglseries(integer) OWNER TO admin; -- -- Name: postglseries(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postglseries(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pJournalNumber ALIAS FOR $2; _returnValue INTEGER; BEGIN SELECT postGLSeries(pSequence, pJournalNumber, true) INTO _returnValue; RETURN _returnValue; END; $_$; ALTER FUNCTION public.postglseries(integer, integer) OWNER TO admin; -- -- Name: postglseries(integer, integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postglseries(integer, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pPostZero ALIAS FOR $3; _glseries RECORD; _transCount INTEGER := 0; _delta NUMERIC; _discrepDate DATE; _discrepAccntid INTEGER; _rows INTEGER; BEGIN /* Make sure we don't create an imbalance across companies. The 'IgnoreCompanyBalance' metric is a back door mechanism to allow legacy users to create transactions accross companies if they have been using the company segment for something else and they MUST continue to be able to do so. It can only be implemented by direct sql update to the metric table and should otherwise be discouraged. */ IF (COALESCE(fetchMetricValue('GLCompanySize'),0) > 0 AND fetchMetricBool('IgnoreCompany') = false) THEN SELECT count(accnt_company) INTO _rows FROM ( SELECT DISTINCT accnt_company FROM accnt JOIN glseries ON (glseries_accnt_id=accnt_id) WHERE (glseries_sequence=pSequence)) _data; IF (_rows > 1) THEN RAISE EXCEPTION 'G/L Series can not be posted because multiple companies are referenced in the same series.'; END IF; END IF; -- Make sure that we balance SELECT SUM(glseries_amount), MAX(glseries_distdate) INTO _delta, _discrepDate FROM glseries WHERE (glseries_sequence=pSequence); IF ( _delta <> 0 ) THEN IF (COALESCE(fetchMetricValue('GLCompanySize'),0) = 0) THEN SELECT accnt_id INTO _discrepAccntid FROM accnt, metric WHERE ((metric_name='GLSeriesDiscrepancyAccount') AND (accnt_id=CAST(metric_value AS INTEGER))); ELSE SELECT company_dscrp_accnt_id INTO _discrepAccntid FROM company JOIN accnt ON (accnt_company=company_number) JOIN glseries ON (glseries_accnt_id=accnt_id) WHERE (glseries_sequence=pSequence) LIMIT 1; END IF; IF (NOT FOUND) THEN RETURN -5; END IF; INSERT INTO glseries ( glseries_sequence, glseries_source, glseries_doctype, glseries_docnumber, glseries_accnt_id, glseries_amount, glseries_distdate, glseries_notes ) SELECT glseries_sequence, glseries_source, glseries_doctype, glseries_docnumber, _discrepAccntid, (_delta * -1), _discrepDate, 'G/L Series Discrepancy' FROM glseries WHERE (glseries_sequence=pSequence) LIMIT 1; END IF; -- March through the glseries members, posting them one at a time FOR _glseries IN SELECT glseries_source, glseries_doctype, glseries_docnumber, glseries_accnt_id, glseries_distdate, glseries_notes, glseries_misc_id, SUM(glseries_amount) as amount FROM glseries WHERE ((glseries_amount<>0.0) AND (glseries_sequence=pSequence)) GROUP BY glseries_source, glseries_doctype, glseries_docnumber, glseries_accnt_id, glseries_distdate, glseries_notes, glseries_misc_id LOOP -- refuse to accept postings into closed periods IF (SELECT BOOL_AND(COALESCE(period_closed, FALSE)) FROM accnt LEFT OUTER JOIN period ON (_glseries.glseries_distdate BETWEEN period_start AND period_end) WHERE (accnt_id = _glseries.glseries_accnt_id)) THEN RAISE EXCEPTION 'Cannot post to closed period (%).', _glseries.glseries_distdate; RETURN -4; -- remove raise exception when all callers check return code END IF; -- refuse to accept postings into frozen periods without proper priv IF (SELECT NOT BOOL_AND(checkPrivilege('PostFrozenPeriod')) AND BOOL_AND(COALESCE(period_freeze, FALSE)) FROM accnt LEFT OUTER JOIN period ON (_glseries.glseries_distdate BETWEEN period_start AND period_end) WHERE (accnt_id = _glseries.glseries_accnt_id)) THEN RAISE EXCEPTION 'Cannot post to frozen period (%).', _glseries.glseries_distdate; RETURN -4; -- remove raise exception when all callers check return code END IF; -- refuse to accept postings into nonexistent periods IF NOT EXISTS(SELECT period_id FROM period WHERE (_glseries.glseries_distdate BETWEEN period_start AND period_end)) THEN RAISE EXCEPTION 'Cannot post to nonexistent period (%).', pDistDate; END IF; IF (_glseries.amount != 0 OR pPostZero) THEN IF (fetchMetricBool('UseJournals')) THEN INSERT INTO sltrans ( sltrans_posted, sltrans_created, sltrans_date, sltrans_misc_id, sltrans_sequence, sltrans_accnt_id, sltrans_source, sltrans_notes, sltrans_doctype, sltrans_docnumber, sltrans_amount, sltrans_journalnumber ) VALUES ( FALSE, CURRENT_TIMESTAMP, _glseries.glseries_distdate, _glseries.glseries_misc_id, pSequence, _glseries.glseries_accnt_id, _glseries.glseries_source, _glseries.glseries_notes, _glseries.glseries_doctype, _glseries.glseries_docnumber, _glseries.amount, pJournalNumber ); ELSE INSERT INTO gltrans ( gltrans_posted, gltrans_exported, gltrans_created, gltrans_date, gltrans_misc_id, gltrans_sequence, gltrans_accnt_id, gltrans_source, gltrans_notes, gltrans_doctype, gltrans_docnumber, gltrans_amount, gltrans_journalnumber ) VALUES ( FALSE, FALSE, CURRENT_TIMESTAMP, _glseries.glseries_distdate, _glseries.glseries_misc_id, pSequence, _glseries.glseries_accnt_id, _glseries.glseries_source, _glseries.glseries_notes, _glseries.glseries_doctype, _glseries.glseries_docnumber, _glseries.amount, pJournalNumber ); END IF; _transCount := _transCount + 1; END IF; END LOOP; -- Delete all of the posted glseries members DELETE FROM glseries WHERE (glseries_sequence=pSequence); PERFORM postIntoTrialBalance(pSequence); RETURN _transCount; END; $_$; ALTER FUNCTION public.postglseries(integer, integer, boolean) OWNER TO admin; -- -- Name: postglseriesnosumm(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postglseriesnosumm(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; _journalNumber INTEGER; _returnValue INTEGER; BEGIN SELECT postGLSeriesNoSumm(pSequence, fetchJournalNumber('G/L')) INTO _returnValue; RETURN _returnValue; END; $_$; ALTER FUNCTION public.postglseriesnosumm(integer) OWNER TO admin; -- -- Name: postglseriesnosumm(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postglseriesnosumm(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pJournalNumber ALIAS FOR $2; _glseries RECORD; _transCount INTEGER := 0; _rows INTEGER; BEGIN /* Make sure we don't create an imbalance across companies. The 'IgnoreCompanyBalance' metric is a back door mechanism to allow legacy users to create transactions accross companies if they have been using the company segment for something else and they MUST continue to be able to do so. It can only be implemented by direct sql update to the metric table and should otherwise be discouraged. */ IF (COALESCE(fetchMetricValue('GLCompanySize'),0) > 0 AND fetchMetricBool('IgnoreCompany') = false) THEN SELECT count(accnt_company) INTO _rows FROM ( SELECT DISTINCT accnt_company FROM accnt JOIN glseries ON (glseries_accnt_id=accnt_id) WHERE (glseries_sequence=pSequence)) _data; IF (_rows > 1) THEN RAISE EXCEPTION 'G/L Series can not be posted because multiple companies are referenced in the same series.'; END IF; END IF; -- Make sure that we balance IF ( ( SELECT SUM(glseries_amount) FROM glseries WHERE (glseries_sequence=pSequence) ) <> 0 ) THEN RETURN -1; END IF; -- March through the glseries members, posting them one at a time FOR _glseries IN SELECT glseries_source, glseries_doctype, glseries_docnumber, glseries_accnt_id, glseries_distdate, glseries_notes, glseries_misc_id, glseries_amount as amount FROM glseries WHERE ((glseries_amount<>0.0) AND (glseries_sequence=pSequence)) LOOP -- refuse to accept postings into closed periods IF (SELECT BOOL_AND(COALESCE(period_closed, FALSE)) FROM accnt LEFT OUTER JOIN period ON (_glseries.glseries_distdate BETWEEN period_start AND period_end) WHERE (accnt_id = _glseries.glseries_accnt_id)) THEN RAISE EXCEPTION 'Cannot post to closed period (%).', _glseries.glseries_distdate; RETURN -4; -- remove raise exception when all callers check return code END IF; -- refuse to accept postings into frozen periods without proper priv IF (SELECT NOT BOOL_AND(checkPrivilege('PostFrozenPeriod')) AND BOOL_AND(COALESCE(period_freeze, FALSE)) FROM accnt LEFT OUTER JOIN period ON (_glseries.glseries_distdate BETWEEN period_start AND period_end) WHERE (accnt_id = _glseries.glseries_accnt_id)) THEN RAISE EXCEPTION 'Cannot post to frozen period (%).', _glseries.glseries_distdate; RETURN -4; -- remove raise exception when all callers check return code END IF; -- refuse to accept postings into nonexistent periods IF NOT EXISTS(SELECT period_id FROM period WHERE (_glseries.glseries_distdate BETWEEN period_start AND period_end)) THEN RAISE EXCEPTION 'Cannot post to nonexistent period (%).', pDistDate; END IF; IF (fetchMetricBool('UseJournals')) THEN INSERT INTO sltrans ( sltrans_posted, sltrans_created, sltrans_date, sltrans_misc_id, sltrans_sequence, sltrans_accnt_id, sltrans_source, sltrans_notes, sltrans_doctype, sltrans_docnumber, sltrans_amount, sltrans_journalnumber ) VALUES ( FALSE, CURRENT_TIMESTAMP, _glseries.glseries_distdate, _glseries.glseries_misc_id, pSequence, _glseries.glseries_accnt_id, _glseries.glseries_source, _glseries.glseries_notes, _glseries.glseries_doctype, _glseries.glseries_docnumber, _glseries.amount, pJournalNumber ); ELSE INSERT INTO gltrans ( gltrans_posted, gltrans_exported, gltrans_created, gltrans_date, gltrans_misc_id, gltrans_sequence, gltrans_accnt_id, gltrans_source, gltrans_notes, gltrans_doctype, gltrans_docnumber, gltrans_amount, gltrans_journalnumber ) VALUES ( FALSE, FALSE, CURRENT_TIMESTAMP, _glseries.glseries_distdate, _glseries.glseries_misc_id, pSequence, _glseries.glseries_accnt_id, _glseries.glseries_source, _glseries.glseries_notes, _glseries.glseries_doctype, _glseries.glseries_docnumber, _glseries.amount, pJournalNumber ); END IF; _transCount := _transCount + 1; END LOOP; -- Delete all of the posted glseries members DELETE FROM glseries WHERE (glseries_sequence=pSequence); PERFORM postIntoTrialBalance(pSequence); RETURN _transCount; END; $_$; ALTER FUNCTION public.postglseriesnosumm(integer, integer) OWNER TO admin; -- -- Name: postintoinvbalance(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postintoinvbalance(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvhistId ALIAS FOR $1; _invbalid INTEGER; _r RECORD; _count INTEGER; _qty NUMERIC; BEGIN -- Grab the invhist record to post -- Special fix for transit sites when transtype=TS and invqty<0 -- Set the sense to 1 to correct invhist populated incorrectly. SELECT invhist.*, CASE WHEN (invhist_transtype='TS' AND invhist_invqty < 0.0 AND warehous_transit) THEN 1 ELSE invhistSense(invhist_id) END AS sense, period_id INTO _r FROM invhist JOIN itemsite ON (itemsite_id=invhist_itemsite_id) JOIN whsinfo ON (warehous_id=itemsite_warehous_id) LEFT OUTER JOIN period ON (invhist_transdate::date BETWEEN period_start AND period_end) WHERE ( invhist_id=pInvhistId ); GET DIAGNOSTICS _count = ROW_COUNT; -- If we can post into a Inv Balance, do so IF ( _count > 0 ) THEN -- Validate IF (_r.period_id IS NULL) THEN RAISE EXCEPTION 'No accounting period exists for invhist_id %, transaction date %. Transaction can not be posted.', _r.invhist_id, formatDate(_r.invhist_transdate); END IF; -- If cycle count, then we need to reference balance which needs to be accurate -- IF (_r.invhist_transtype = 'CC') THEN -- PERFORM forwardupdateitemsite(_r.invhist_itemsite_id); -- END IF; -- Try to find an existing invbal SELECT invbal_id, -- CASE WHEN (_r.invhist_transtype != 'CC') THEN _r.invhist_invqty ELSE _r.invhist_invqty - invbal_qoh_ending END _r.invhist_invqty INTO _invbalid, _qty FROM invbal WHERE ( (invbal_period_id=_r.period_id) AND (invbal_itemsite_id=_r.invhist_itemsite_id) ); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count > 0) THEN -- We found a invbal, update it with the Inventory Transaction -- Note - two stage update to avoid any funny value caching logic IF (_r.sense * _qty > 0) THEN UPDATE invbal SET invbal_qty_in = (invbal_qty_in + abs(_qty)), invbal_value_in = (invbal_value_in + abs(_qty) * _r.invhist_unitcost) WHERE (invbal_id=_invbalid); ELSIF (_r.sense * _qty < 0) THEN UPDATE invbal SET invbal_qty_out = (invbal_qty_out + abs(_qty)), invbal_value_out = (invbal_value_out + abs(_qty) * _r.invhist_unitcost) WHERE (invbal_id=_invbalid); END IF; -- Non-netable transactions have their own balances IF (_r.invhist_transtype = 'NN') THEN UPDATE invbal SET invbal_nn_in = (invbal_nn_in + _qty * -1), invbal_nnval_in = (invbal_nnval_in + _qty * -1 * _r.invhist_unitcost) WHERE (invbal_id=_invbalid); END IF; UPDATE invbal SET invbal_qoh_ending = (invbal_qoh_beginning + invbal_qty_in - invbal_qty_out), invbal_value_ending = (invbal_value_beginning + invbal_value_in - invbal_value_out), invbal_nn_ending = (invbal_nn_beginning + invbal_nn_in - invbal_nn_out), invbal_nnval_ending = (invbal_nnval_beginning + invbal_nnval_in - invbal_nnval_out), invbal_dirty=true WHERE (invbal_id=_invbalid); ELSE -- No existing invbal, make one SELECT NEXTVAL('invbal_invbal_id_seq') INTO _invbalid; INSERT INTO invbal ( invbal_id, invbal_itemsite_id, invbal_period_id, invbal_qoh_beginning, invbal_qoh_ending, invbal_qty_in, invbal_qty_out, invbal_value_beginning, invbal_value_ending, invbal_value_in, invbal_value_out, invbal_nn_beginning, invbal_nn_ending, invbal_nn_in, invbal_nn_out, invbal_nnval_beginning, invbal_nnval_ending, invbal_nnval_in, invbal_nnval_out, invbal_dirty ) VALUES ( _invbalid, _r.invhist_itemsite_id, _r.period_id, -- Netable 0, _r.invhist_invqty * _r.sense, CASE WHEN (_r.sense > 0) THEN _r.invhist_invqty ELSE 0 END, CASE WHEN (_r.sense < 0) THEN (_r.invhist_invqty) ELSE 0 END, 0, _r.invhist_invqty * _r.invhist_unitcost * _r.sense, CASE WHEN (_r.sense > 0) THEN _r.invhist_invqty * _r.invhist_unitcost ELSE 0 END, CASE WHEN (_r.sense < 0) THEN (_r.invhist_invqty * _r.invhist_unitcost) ELSE 0 END, -- Non netable 0, CASE WHEN (_r.invhist_transtype='NN') THEN _r.invhist_invqty * -1 ELSE 0 END, CASE WHEN (_r.sense > 0 AND _r.invhist_transtype='NN') THEN _r.invhist_invqty * -1 ELSE 0 END, CASE WHEN (_r.sense < 0 AND _r.invhist_transtype='NN') THEN _r.invhist_invqty * -1 ELSE 0 END, 0, CASE WHEN (_r.invhist_transtype='NN') THEN _r.invhist_invqty * _r.invhist_unitcost * -1 ELSE 0 END, CASE WHEN (_r.sense > 0 AND _r.invhist_transtype='NN') THEN _r.invhist_invqty * -1 * _r.invhist_unitcost ELSE 0 END, CASE WHEN (_r.sense < 0 AND _r.invhist_transtype='NN') THEN (_r.invhist_invqty * -1 * _r.invhist_unitcost) ELSE 0 END, true ); END IF; ELSE RETURN FALSE; END IF; RETURN TRUE; END; $_$; ALTER FUNCTION public.postintoinvbalance(integer) OWNER TO admin; -- -- Name: postintotrialbalance(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postintotrialbalance(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; _trialbalid INTEGER; _r RECORD; BEGIN -- March through all of the G/L Transactions for the passed sequence that are not posted FOR _r IN SELECT gltrans_id, gltrans_date, gltrans_accnt_id, gltrans_amount, accnt_forwardupdate, period_id, period_closed, period_freeze FROM accnt, gltrans LEFT OUTER JOIN period ON (gltrans_date BETWEEN period_start AND period_end) WHERE ( (gltrans_accnt_id=accnt_id) AND (NOT gltrans_posted) AND (NOT gltrans_deleted) AND (gltrans_sequence=pSequence) ) LOOP -- If we can post into a Trial Balance, do so IF ( (NOT _r.period_closed) AND ( (NOT _r.period_freeze) OR (checkPrivilege('PostFrozenPeriod')) ) ) THEN -- Try to find an existing trialbal SELECT trialbal_id INTO _trialbalid FROM trialbal WHERE ( (trialbal_period_id=_r.period_id) AND (trialbal_accnt_id=_r.gltrans_accnt_id) ); IF (FOUND) THEN -- We found a trialbal, update it with the G/L Transaction -- Note - two stage update to avoid any funny value caching logic IF (_r.gltrans_amount > 0) THEN UPDATE trialbal SET trialbal_credits = (trialbal_credits + _r.gltrans_amount) WHERE (trialbal_id=_trialbalid); ELSE UPDATE trialbal SET trialbal_debits = (trialbal_debits + (_r.gltrans_amount * -1)) WHERE (trialbal_id=_trialbalid); END IF; UPDATE trialbal SET trialbal_ending = (trialbal_beginning - trialbal_debits + trialbal_credits), trialbal_dirty=TRUE WHERE (trialbal_id=_trialbalid); ELSE -- No existing trialbal, make one SELECT NEXTVAL('trialbal_trialbal_id_seq') INTO _trialbalid; INSERT INTO trialbal ( trialbal_id, trialbal_accnt_id, trialbal_period_id, trialbal_beginning, trialbal_dirty, trialbal_ending, trialbal_credits, trialbal_debits ) VALUES ( _trialbalid, _r.gltrans_accnt_id, _r.period_id, 0, TRUE, _r.gltrans_amount, CASE WHEN (_r.gltrans_amount > 0) THEN _r.gltrans_amount ELSE 0 END, CASE WHEN (_r.gltrans_amount < 0) THEN (_r.gltrans_amount * -1) ELSE 0 END ); END IF; -- Forward update if we should IF (_r.accnt_forwardupdate AND fetchmetricbool('ManualForwardUpdate')) THEN PERFORM forwardUpdateTrialBalance(_trialbalid); END IF; -- Mark the G/L Transaction as posted UPDATE gltrans SET gltrans_posted=TRUE WHERE (gltrans_id=_r.gltrans_id); END IF; END LOOP; RETURN 1; END; $_$; ALTER FUNCTION public.postintotrialbalance(integer) OWNER TO admin; -- -- Name: postinvhist(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postinvhist(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvhistId ALIAS FOR $1; _r RECORD; BEGIN IF ( SELECT metric_value FROM metric WHERE ((metric_name = 'EnableAsOfQOH') AND (metric_value = 't'))) THEN IF (NOT postIntoInvBalance(pInvhistId)) THEN RAISE EXCEPTION 'Post into Inventory Balance for invhist_id=% was unsuccessful',pInvhistId; END IF; END IF; --Update itemsite qoh and change posted flag UPDATE itemsite SET itemsite_qtyonhand = (itemsite_qtyonhand + (invhist_invqty * invhistSense(invhist_id))), itemsite_value = itemsite_value + invhist_value_after - invhist_value_before FROM invhist WHERE ( (itemsite_id=invhist_itemsite_id) AND (invhist_id=pInvhistId) AND (NOT invhist_posted) ); --Flag as posted UPDATE invhist SET invhist_posted=TRUE WHERE ( (invhist_id=pInvhistId) AND (invhist_posted=FALSE) ); RETURN TRUE; END; $_$; ALTER FUNCTION public.postinvhist(integer) OWNER TO admin; -- -- Name: postinvoice(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postinvoice(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcheadid ALIAS FOR $1; _return INTEGER; BEGIN SELECT postInvoice(pInvcheadid, fetchJournalNumber('AR-IN')) INTO _return; RETURN _return; END; $_$; ALTER FUNCTION public.postinvoice(integer) OWNER TO admin; -- -- Name: postinvoice(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postinvoice(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcheadid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; _itemlocSeries INTEGER; _return INTEGER; BEGIN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; SELECT postInvoice(pInvcheadid, pJournalNumber, _itemlocseries) INTO _return; RETURN _return; END; $_$; ALTER FUNCTION public.postinvoice(integer, integer) OWNER TO admin; -- -- Name: postinvoice(integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postinvoice(integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcheadid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pItemlocSeries ALIAS FOR $3; _aropenid INTEGER; _cohistid INTEGER; _itemlocSeries INTEGER := 0; _invhistid INTEGER := 0; _amount NUMERIC; _roundedBase NUMERIC; _sequence INTEGER; _r RECORD; _p RECORD; _test INTEGER; _totalAmount NUMERIC := 0; _totalRoundedBase NUMERIC := 0; _totalAmountBase NUMERIC := 0; _appliedAmount NUMERIC := 0; _commissionDue NUMERIC := 0; _tmpAccntId INTEGER; _tmpCurrId INTEGER; _firstExchDate DATE; _glDate DATE; _exchGain NUMERIC := 0; BEGIN IF ( ( SELECT invchead_posted FROM invchead WHERE (invchead_id=pInvcheadid) ) ) THEN RETURN -10; END IF; -- Cache some parameters SELECT invchead.*, fetchGLSequence() AS sequence, findFreightAccount(invchead_cust_id) AS freightaccntid, findARAccount(invchead_cust_id) AS araccntid, ( SELECT COALESCE(SUM(taxhist_tax), 0) FROM invcheadtax WHERE ( (taxhist_parent_id = invchead_id) AND (taxhist_taxtype_id = getFreightTaxtypeId()) ) ) AS freighttax, ( SELECT COALESCE(SUM(taxhist_tax), 0) FROM invcheadtax WHERE ( (taxhist_parent_id = invchead_id) AND (taxhist_taxtype_id = getAdjustmentTaxtypeId()) ) ) AS adjtax INTO _p FROM invchead WHERE (invchead_id=pInvcheadid); _itemlocSeries = pItemlocSeries; _glDate := COALESCE(_p.invchead_gldistdate, _p.invchead_invcdate); IF (_p.invchead_salesrep_id < 0) THEN RAISE NOTICE 'Patch negative invchead_salesrep_id until invchead_salesrep_id is a true fkey'; _p.invchead_salesrep_id := NULL; END IF; -- the 1st MC iteration used the cohead_orderdate so we could get curr exch -- gain/loss between the sales and invoice dates, but see issue 3892. leave -- this condition TRUE until we make this configurable or decide not to. IF TRUE THEN _firstExchDate := _p.invchead_invcdate; ELSE -- can we save a select by using: _firstExchDate := _p.invchead_orderdate; SELECT cohead_orderdate INTO _firstExchDate FROM cohead JOIN invchead ON (cohead_number = invchead_ordernumber) WHERE (invchead_id = pInvcheadid); END IF; -- Start by handling taxes FOR _r IN SELECT tax_sales_accnt_id, round(sum(taxdetail_tax),2) AS tax, currToBase(_p.invchead_curr_id, round(sum(taxdetail_tax),2), _firstExchDate) AS taxbasevalue FROM tax JOIN calculateTaxDetailSummary('I', pInvcheadid, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id, tax_sales_accnt_id LOOP PERFORM insertIntoGLSeries( _p.sequence, 'A/R', 'IN', _p.invchead_invcnumber, _r.tax_sales_accnt_id, _r.taxbasevalue, _glDate, _p.invchead_billto_name ); _totalAmount := _totalAmount + _r.tax; _totalRoundedBase := _totalRoundedBase + _r.taxbasevalue; END LOOP; -- Update item tax records with posting data UPDATE invcitemtax SET taxhist_docdate=_firstExchDate, taxhist_distdate=_glDate, taxhist_curr_id=_p.invchead_curr_id, taxhist_curr_rate=curr_rate, taxhist_journalnumber=pJournalNumber FROM invchead JOIN invcitem ON (invchead_id=invcitem_invchead_id), curr_rate WHERE ((invchead_id=pInvcheadId) AND (taxhist_parent_id=invcitem_id) AND (_p.invchead_curr_id=curr_id) AND ( _firstExchDate BETWEEN curr_effective AND curr_expires) ); -- Update Invchead taxes (Freight and Adjustments) with posting data UPDATE invcheadtax SET taxhist_docdate=_firstExchDate, taxhist_distdate=_glDate, taxhist_curr_id=_p.invchead_curr_id, taxhist_curr_rate=curr_rate, taxhist_journalnumber=pJournalNumber FROM curr_rate WHERE ((taxhist_parent_id=pInvcheadid) AND (_p.invchead_curr_id=curr_id) AND ( _firstExchDate BETWEEN curr_effective AND curr_expires) ); -- March through the Non-Misc. Invcitems FOR _r IN SELECT * FROM invoiceitem WHERE ( (invcitem_invchead_id = pInvcheadid) AND (invcitem_item_id <> -1) ) LOOP -- Cache the amount due for this line _amount := _r.extprice; IF (_amount > 0) THEN -- Credit the Sales Account for the invcitem item IF (_r.invcitem_rev_accnt_id IS NOT NULL) THEN SELECT getPrjAccntId(_p.invchead_prj_id, _r.invcitem_rev_accnt_id) INTO _tmpAccntId; ELSEIF (_r.itemsite_id IS NULL) THEN SELECT getPrjAccntId(_p.invchead_prj_id, salesaccnt_sales_accnt_id) INTO _tmpAccntId FROM salesaccnt WHERE (salesaccnt_id=findSalesAccnt(_r.invcitem_item_id, 'I', _p.invchead_cust_id, _p.invchead_saletype_id, _p.invchead_shipzone_id)); ELSE SELECT getPrjAccntId(_p.invchead_prj_id, salesaccnt_sales_accnt_id) INTO _tmpAccntId FROM salesaccnt WHERE (salesaccnt_id=findSalesAccnt(_r.itemsite_id, 'IS', _p.invchead_cust_id, _p.invchead_saletype_id, _p.invchead_shipzone_id)); END IF; -- If the Sales Account Assignment was not found then punt IF (NOT FOUND) THEN PERFORM deleteGLSeries(_p.sequence); DELETE FROM cohist WHERE ((cohist_sequence=_p.sequence) AND (cohist_invcnumber=_p.invchead_invcnumber)); RETURN -11; END IF; _roundedBase := round(currToBase(_p.invchead_curr_id, _amount, _firstExchDate), 2); SELECT insertIntoGLSeries( _p.sequence, 'A/R', 'IN', _p.invchead_invcnumber, _tmpAccntId, _roundedBase, _glDate, _p.invchead_billto_name ) INTO _test; _totalAmount := (_totalAmount + _amount); _totalRoundedBase := _totalRoundedBase + _roundedBase; _commissionDue := (_commissionDue + (_amount * _p.invchead_commission)); END IF; _totalAmount := _totalAmount; _totalRoundedBase := _totalRoundedBase; -- Record Sales History for this S/O Item SELECT nextval('cohist_cohist_id_seq') INTO _cohistid; INSERT INTO cohist ( cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_curr_id, cohist_sequence, cohist_taxtype_id, cohist_taxzone_id, cohist_shipzone_id, cohist_saletype_id ) VALUES ( _cohistid, _p.invchead_cust_id, _r.itemsite_id, _p.invchead_shipto_id, _p.invchead_shipdate, _p.invchead_shipvia, COALESCE(_p.invchead_ordernumber, _r.cohead_number), _p.invchead_ponumber, _p.invchead_orderdate, 'I', _p.invchead_invcnumber, _p.invchead_invcdate, _r.qty, _r.unitprice, _r.unitcost, _p.invchead_salesrep_id, (_p.invchead_commission * _r.extprice), FALSE, _p.invchead_billto_name, _p.invchead_billto_address1, _p.invchead_billto_address2, _p.invchead_billto_address3, _p.invchead_billto_city, _p.invchead_billto_state, _p.invchead_billto_zipcode, _p.invchead_shipto_name, _p.invchead_shipto_address1, _p.invchead_shipto_address2, _p.invchead_shipto_address3, _p.invchead_shipto_city, _p.invchead_shipto_state, _p.invchead_shipto_zipcode, _p.invchead_curr_id, _p.sequence, _r.invcitem_taxtype_id, _p.invchead_taxzone_id, _p.invchead_shipzone_id, _p.invchead_saletype_id ); INSERT INTO cohisttax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT _cohistid, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM invcitemtax WHERE (taxhist_parent_id=_r.invcitem_id); END LOOP; -- March through the Misc. Invcitems FOR _r IN SELECT * FROM invoiceitem JOIN salescat ON (salescat_id = invcitem_salescat_id) WHERE ( (invcitem_item_id = -1) AND (invcitem_invchead_id=pInvcheadid) ) LOOP -- Cache the amount due for this line and the commission due for such _amount := _r.extprice; IF (_amount > 0) THEN -- Credit the Sales Account for the invcitem item _roundedBase = round(currToBase(_p.invchead_curr_id, _amount, _firstExchDate), 2); SELECT insertIntoGLSeries( _p.sequence, 'A/R', 'IN', _p.invchead_invcnumber, getPrjAccntId(_p.invchead_prj_id, COALESCE(_r.invcitem_rev_accnt_id, _r.salescat_sales_accnt_id)), _roundedBase, _glDate, _p.invchead_billto_name ) INTO _test; IF (_test < 0) THEN PERFORM deleteGLSeries(_p.sequence); DELETE FROM cohist WHERE ((cohist_sequence=_p.sequence) AND (cohist_invcnumber=_p.invchead_invcnumber)); RETURN _test; END IF; _totalAmount := (_totalAmount + _amount); _totalRoundedBase := _totalRoundedBase + _roundedBase; _commissionDue := (_commissionDue + (_amount * _p.invchead_commission)); END IF; -- Record Sales History for this S/O Item SELECT nextval('cohist_cohist_id_seq') INTO _cohistid; INSERT INTO cohist ( cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_misc_type, cohist_misc_descrip, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_curr_id, cohist_sequence, cohist_taxtype_id, cohist_taxzone_id, cohist_shipzone_id, cohist_saletype_id ) VALUES ( _cohistid, _p.invchead_cust_id, -1, _p.invchead_shipto_id, 'M', (_r.invcitem_number || '-' || _r.invcitem_descrip), _p.invchead_shipdate, _p.invchead_shipvia, COALESCE(_p.invchead_ordernumber, _r.cohead_number), _p.invchead_ponumber, _p.invchead_orderdate, 'I', _p.invchead_invcnumber, _p.invchead_invcdate, _r.qty, _r.unitprice, 0, _p.invchead_salesrep_id, (_p.invchead_commission * _r.extprice), FALSE, _p.invchead_billto_name, _p.invchead_billto_address1, _p.invchead_billto_address2, _p.invchead_billto_address3, _p.invchead_billto_city, _p.invchead_billto_state, _p.invchead_billto_zipcode, _p.invchead_shipto_name, _p.invchead_shipto_address1, _p.invchead_shipto_address2, _p.invchead_shipto_address3, _p.invchead_shipto_city, _p.invchead_shipto_state, _p.invchead_shipto_zipcode, _p.invchead_curr_id, _p.sequence, _r.invcitem_taxtype_id, _p.invchead_taxzone_id, _p.invchead_shipzone_id, _p.invchead_saletype_id ); INSERT INTO cohisttax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT _cohistid, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM invcitemtax WHERE (taxhist_parent_id=_r.invcitem_id); END LOOP; -- Credit the Freight Account for Freight Charges IF (_p.invchead_freight <> 0) THEN IF (_p.freightaccntid <> -1) THEN _roundedBase = round(currToBase(_p.invchead_curr_id, _p.invchead_freight, _firstExchDate), 2); SELECT insertIntoGLSeries( _p.sequence, 'A/R', 'IN', _p.invchead_invcnumber, getPrjAccntId(_p.invchead_prj_id,_p.freightaccntid), _roundedBase, _glDate, _p.invchead_billto_name ) INTO _test; -- Cache the Freight Amount distributed _totalAmount := (_totalAmount + _p.invchead_freight); _totalRoundedBase := _totalRoundedBase + _roundedBase; ELSE _test := -14; END IF; -- If the Freight Account was not found then punt IF (_test < 0) THEN PERFORM deleteGLSeries(_p.sequence); DELETE FROM cohist WHERE ((cohist_sequence=_p.sequence) AND (cohist_invcnumber=_p.invchead_invcnumber)); RETURN _test; END IF; -- Record Sales History for the Freight SELECT nextval('cohist_cohist_id_seq') INTO _cohistid; INSERT INTO cohist ( cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_misc_type, cohist_misc_descrip, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_curr_id, cohist_sequence, cohist_taxtype_id, cohist_taxzone_id, cohist_shipzone_id, cohist_saletype_id ) VALUES ( _cohistid, _p.invchead_cust_id, -1, _p.invchead_shipto_id, 'F', 'Freight', _p.invchead_shipdate, _p.invchead_shipvia, _p.invchead_ordernumber, _p.invchead_ponumber, _p.invchead_orderdate, 'I', _p.invchead_invcnumber, _p.invchead_invcdate, 1, _p.invchead_freight, _p.invchead_freight, _p.invchead_salesrep_id, 0, FALSE, _p.invchead_billto_name, _p.invchead_billto_address1, _p.invchead_billto_address2, _p.invchead_billto_address3, _p.invchead_billto_city, _p.invchead_billto_state, _p.invchead_billto_zipcode, _p.invchead_shipto_name, _p.invchead_shipto_address1, _p.invchead_shipto_address2, _p.invchead_shipto_address3, _p.invchead_shipto_city, _p.invchead_shipto_state, _p.invchead_shipto_zipcode, _p.invchead_curr_id, _p.sequence, getFreightTaxtypeId(), _p.invchead_taxzone_id, _p.invchead_shipzone_id, _p.invchead_saletype_id ); INSERT INTO cohisttax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT _cohistid, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM invcheadtax WHERE ( (taxhist_parent_id=_p.invchead_id) AND (taxhist_taxtype_id=getFreightTaxtypeId()) ); END IF; -- Credit the Misc. Account for Miscellaneous Charges IF (_p.invchead_misc_amount <> 0) THEN _roundedBase := round(currToBase(_p.invchead_curr_id, _p.invchead_misc_amount, _firstExchDate), 2); SELECT insertIntoGLSeries( _p.sequence, 'A/R', 'IN', _p.invchead_invcnumber, getPrjAccntId(_p.invchead_prj_id, _p.invchead_misc_accnt_id), _roundedBase, _glDate, _p.invchead_billto_name ) INTO _test; -- If the Misc. Charges Account was not found then punt IF (_test < 0) THEN PERFORM deleteGLSeries(_p.sequence); DELETE FROM cohist WHERE ((cohist_sequence=_p.sequence) AND (cohist_invcnumber=_p.invchead_invcnumber)); RETURN _test; END IF; -- Cache the Misc. Amount distributed _totalAmount := (_totalAmount + _p.invchead_misc_amount); _totalRoundedBase := _totalRoundedBase + _roundedBase; -- Record Sales History for the Misc. Charge INSERT INTO cohist ( cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_misc_type, cohist_misc_descrip, cohist_misc_id, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_curr_id, cohist_sequence, cohist_shipzone_id, cohist_saletype_id ) VALUES ( _p.invchead_cust_id, -1, _p.invchead_shipto_id, 'M', _p.invchead_misc_descrip, _p.invchead_misc_accnt_id, _p.invchead_shipdate, _p.invchead_shipvia, _p.invchead_ordernumber, _p.invchead_ponumber, _p.invchead_orderdate, 'I', _p.invchead_invcnumber, _p.invchead_invcdate, 1, _p.invchead_misc_amount, _p.invchead_misc_amount, _p.invchead_salesrep_id, 0, FALSE, _p.invchead_billto_name, _p.invchead_billto_address1, _p.invchead_billto_address2, _p.invchead_billto_address3, _p.invchead_billto_city, _p.invchead_billto_state, _p.invchead_billto_zipcode, _p.invchead_shipto_name, _p.invchead_shipto_address1, _p.invchead_shipto_address2, _p.invchead_shipto_address3, _p.invchead_shipto_city, _p.invchead_shipto_state, _p.invchead_shipto_zipcode, _p.invchead_curr_id, _p.sequence, _p.invchead_shipzone_id, _p.invchead_saletype_id ); END IF; -- Record Sales History for the Tax Adjustment IF (_p.adjtax <> 0) THEN SELECT nextval('cohist_cohist_id_seq') INTO _cohistid; INSERT INTO cohist ( cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_misc_type, cohist_misc_descrip, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_curr_id, cohist_sequence, cohist_taxtype_id, cohist_taxzone_id, cohist_shipzone_id, cohist_saletype_id ) VALUES ( _cohistid, _p.invchead_cust_id, -1, _p.invchead_shipto_id, 'T', 'Misc Tax Adjustment', _p.invchead_shipdate, _p.invchead_shipvia, _p.invchead_ordernumber, _p.invchead_ponumber, _p.invchead_orderdate, 'I', _p.invchead_invcnumber, _p.invchead_invcdate, 1, 0.0, 0.0, _p.invchead_salesrep_id, 0, FALSE, _p.invchead_billto_name, _p.invchead_billto_address1, _p.invchead_billto_address2, _p.invchead_billto_address3, _p.invchead_billto_city, _p.invchead_billto_state, _p.invchead_billto_zipcode, _p.invchead_shipto_name, _p.invchead_shipto_address1, _p.invchead_shipto_address2, _p.invchead_shipto_address3, _p.invchead_shipto_city, _p.invchead_shipto_state, _p.invchead_shipto_zipcode, _p.invchead_curr_id, _p.sequence, getAdjustmentTaxtypeId(), _p.invchead_taxzone_id, _p.invchead_shipzone_id, _p.invchead_saletype_id ); INSERT INTO cohisttax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT _cohistid, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM invcheadtax WHERE ( (taxhist_parent_id=_p.invchead_id) AND (taxhist_taxtype_id=getAdjustmentTaxtypeId()) ); END IF; -- ToDo: handle rounding errors _exchGain := currGain(_p.invchead_curr_id, _totalAmount, _firstExchDate, _glDate); IF (_exchGain <> 0) THEN SELECT insertIntoGLSeries( _p.sequence, 'A/R', 'IN', _p.invchead_invcnumber, getGainLossAccntId(_p.araccntid), round(_exchGain, 2) * -1, _glDate, _p.invchead_billto_name ) INTO _test ; IF (_test < 0) THEN PERFORM deleteGLSeries(_p.sequence); DELETE FROM cohist WHERE ((cohist_sequence=_p.sequence) AND (cohist_invcnumber=_p.invchead_invcnumber)); RETURN _test; END IF; END IF; -- Debit A/R for the total Amount IF (_totalRoundedBase <> 0) THEN IF (_p.araccntid != -1) THEN PERFORM insertIntoGLSeries( _p.sequence, 'A/R', 'IN', _p.invchead_invcnumber, _p.araccntid, round(_totalRoundedBase * -1, 2), _glDate, _p.invchead_billto_name ); ELSE PERFORM deleteGLSeries(_p.sequence); DELETE FROM cohist WHERE ((cohist_sequence=_p.sequence) AND (cohist_invcnumber=_p.invchead_invcnumber)); RETURN -17; END IF; END IF; -- Commit the GLSeries; SELECT postGLSeries(_p.sequence, pJournalNumber) INTO _test; IF (_test < 0) THEN PERFORM deleteGLSeries(_p.sequence); DELETE FROM cohist WHERE ((cohist_sequence=_p.sequence) AND (cohist_invcnumber=_p.invchead_invcnumber)); RETURN _test; END IF; -- Create the Invoice aropen item SELECT nextval('aropen_aropen_id_seq') INTO _aropenid; INSERT INTO aropen ( aropen_id, aropen_username, aropen_journalnumber, aropen_open, aropen_posted, aropen_cust_id, aropen_ponumber, aropen_docnumber, aropen_applyto, aropen_doctype, aropen_docdate, aropen_duedate, aropen_distdate, aropen_terms_id, aropen_amount, aropen_paid, aropen_salesrep_id, aropen_commission_due, aropen_commission_paid, aropen_ordernumber, aropen_notes, aropen_cobmisc_id, aropen_curr_id ) VALUES ( _aropenid, getEffectiveXtUser(), pJournalNumber, TRUE, FALSE, _p.invchead_cust_id, _p.invchead_ponumber, _p.invchead_invcnumber, _p.invchead_invcnumber, 'I', _p.invchead_invcdate, determineDueDate(_p.invchead_terms_id, _p.invchead_invcdate), _glDate, _p.invchead_terms_id, round(_totalAmount, 2), 0, _p.invchead_salesrep_id, _commissionDue, FALSE, _p.invchead_ordernumber::text, _p.invchead_notes, pInvcheadid, _p.invchead_curr_id ); -- Handle the Inventory and G/L Transactions for any billed Inventory where invcitem_updateinv is true FOR _r IN SELECT itemsite_id AS itemsite_id, invcitem_id, (invcitem_billed * invcitem_qty_invuomratio) AS qty, invchead_invcnumber, invchead_cust_id AS cust_id, item_number, invchead_saletype_id AS saletype_id, invchead_shipzone_id AS shipzone_id, invchead_prj_id, itemsite_costmethod FROM invchead JOIN invcitem ON ( (invcitem_invchead_id=invchead_id) AND (invcitem_billed <> 0) AND (invcitem_updateinv) ) JOIN itemsite ON ( (itemsite_item_id=invcitem_item_id) AND (itemsite_warehous_id=invcitem_warehous_id) ) JOIN item ON (item_id=invcitem_item_id) WHERE (invchead_id=pInvcheadid) LOOP -- Issue billed stock from inventory IF (_itemlocSeries = 0) THEN _itemlocSeries := NEXTVAL('itemloc_series_seq'); END IF; IF (_r.itemsite_costmethod != 'J') THEN SELECT postInvTrans(itemsite_id, 'SH', _r.qty, 'S/O', 'IN', _r.invchead_invcnumber, '', ('Invoice Billed ' || _r.item_number), getPrjAccntId(_r.invchead_prj_id, resolveCOSAccount(itemsite_id, _r.cust_id, _r.saletype_id, _r.shipzone_id)), costcat_asset_accnt_id, _itemlocSeries, _glDate) INTO _invhistid FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id) ); ELSE RAISE DEBUG 'postInvoice(%, %, %) tried to postInvTrans a %-costed item', pInvcheadid, pJournalNumber, pItemlocSeries, _r.itemsite_costmethod; END IF; END LOOP; -- Mark the invoice as posted UPDATE invchead SET invchead_posted=TRUE, invchead_gldistdate=_glDate WHERE (invchead_id=pInvcheadid); IF (_totalAmount > 0) THEN -- get a list of allocated CMs FOR _r IN SELECT aropen_id, CASE WHEN((aropen_amount - aropen_paid) >= aropenalloc_amount / (1 / aropen_curr_rate / currRate(aropenalloc_curr_id,_firstExchDate))) THEN aropenalloc_amount / (1 / aropen_curr_rate / currRate(aropenalloc_curr_id,_firstExchDate)) ELSE (aropen_amount - aropen_paid) END AS balance, aropen_curr_id, aropen_curr_rate, aropenalloc_doctype, aropenalloc_doc_id FROM aropenalloc, aropen WHERE ( (aropenalloc_aropen_id=aropen_id) AND ((aropenalloc_doctype='S' AND aropenalloc_doc_id=(SELECT cohead_id FROM cohead WHERE cohead_number=_p.invchead_ordernumber)) OR (aropenalloc_doctype='I' AND aropenalloc_doc_id=_p.invchead_id)) ) LOOP _appliedAmount := _r.balance; IF (_totalAmount < _appliedAmount / (1 / currRate(_r.aropen_curr_id,_firstExchDate) / _r.aropen_curr_rate)) THEN _appliedAmount := _totalAmount; _tmpCurrId := _p.invchead_curr_id; ELSE _tmpCurrId := _r.aropen_curr_id; END IF; -- ignore if no appliable balance IF (_appliedAmount > 0) THEN -- create an arcreditapply record linking the source c/m and the target invoice -- for an amount that is equal to the balance on the invoice or the balance on -- c/m whichever is greater. INSERT INTO arcreditapply (arcreditapply_source_aropen_id, arcreditapply_target_aropen_id, arcreditapply_amount, arcreditapply_curr_id, arcreditapply_reftype, arcreditapply_ref_id) VALUES(_r.aropen_id, _aropenid, _appliedAmount, _tmpCurrId, 'S', _r.aropenalloc_doc_id); -- call postARCreditMemoApplication(aropen_id of C/M) SELECT postARCreditMemoApplication(_r.aropen_id) into _test; -- if no error decrement the balance and contiue on IF (_test >= 0) THEN _totalAmount := _totalAmount - currToCurr(_tmpCurrId, _p.invchead_curr_id, _appliedAmount, _firstExchDate); END IF; END IF; END LOOP; END IF; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.postinvoice(integer, integer, integer) OWNER TO admin; -- -- Name: postinvoices(boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postinvoices(boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPostUnprinted ALIAS FOR $1; BEGIN RETURN postInvoices(pPostUnprinted, FALSE); END; $_$; ALTER FUNCTION public.postinvoices(boolean) OWNER TO admin; -- -- Name: postinvoices(boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postinvoices(boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPostUnprinted ALIAS FOR $1; pInclZeros ALIAS FOR $2; BEGIN RETURN postInvoices(pPostUnprinted, pInclZeros, fetchJournalNumber('AR-IN')); END; $_$; ALTER FUNCTION public.postinvoices(boolean, boolean) OWNER TO admin; -- -- Name: postinvoices(boolean, boolean, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postinvoices(boolean, boolean, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPostUnprinted ALIAS FOR $1; pInclZeros ALIAS FOR $2; pJournalNumber ALIAS FOR $3; _invcheadid INTEGER; _itemlocSeries INTEGER; _counter INTEGER; _r RECORD; BEGIN _itemlocSeries := 0; IF (pInclZeros) THEN FOR _invcheadid IN SELECT invchead_id FROM invchead WHERE ( (NOT invchead_posted) AND (checkInvoiceSitePrivs(invchead_id)) AND (pPostUnprinted OR invchead_printed) ) LOOP SELECT postInvoice(_invcheadid, pJournalNumber, _itemlocSeries) INTO _itemlocSeries; IF (_itemlocSeries < 0) THEN RETURN _itemlocSeries; END IF; END LOOP; ELSE FOR _invcheadid IN SELECT invchead_id FROM invchead LEFT OUTER JOIN invcitem ON (invchead_id=invcitem_invchead_id) LEFT OUTER JOIN item ON (invcitem_item_id=item_id) WHERE((NOT invchead_posted) AND (checkInvoiceSitePrivs(invchead_id)) AND (pPostUnprinted OR invchead_printed)) GROUP BY invchead_id, invchead_freight, invchead_misc_amount HAVING (COALESCE(SUM(round((invcitem_billed * invcitem_qty_invuomratio) * (invcitem_price / CASE WHEN (item_id IS NULL) THEN 1 ELSE invcitem_price_invuomratio END), 2)),0) + invchead_freight + invchead_misc_amount) > 0 LOOP SELECT postInvoice(_invcheadid, pJournalNumber, _itemlocSeries) INTO _itemlocSeries; IF (_itemlocSeries < 0) THEN RETURN _itemlocSeries; END IF; END LOOP; END IF; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.postinvoices(boolean, boolean, integer) OWNER TO admin; -- -- Name: postinvtrans(integer, text, numeric, text, text, text, text, text, integer, integer, integer, timestamp with time zone, numeric, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postinvtrans(pitemsiteid integer, ptranstype text, pqty numeric, pmodule text, pordertype text, pordernumber text, pdocnumber text, pcomments text, pdebitid integer, pcreditid integer, pitemlocseries integer, ptimestamp timestamp with time zone DEFAULT now(), pcostovrld numeric DEFAULT NULL::numeric, pinvhistid integer DEFAULT NULL::integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. -- pInvhistid is the original transaction to be returned, reversed, etc. DECLARE _creditid INTEGER; _debitid INTEGER; _glreturn INTEGER; _invhistid INTEGER; _itemlocdistid INTEGER; _r RECORD; _sense INTEGER; -- direction in which to adjust inventory QOH _t RECORD; _timestamp TIMESTAMP WITH TIME ZONE; _xferwhsid INTEGER; BEGIN -- Cache item and itemsite info SELECT CASE WHEN(itemsite_costmethod IN ('A','J')) THEN COALESCE(abs(pCostOvrld / pQty), avgcost(itemsite_id)) ELSE stdCost(itemsite_item_id) END AS cost, itemsite_costmethod, itemsite_qtyonhand, itemsite_warehous_id, ( (item_type = 'R') OR (itemsite_controlmethod = 'N') ) AS nocontrol, (itemsite_controlmethod IN ('L', 'S')) AS lotserial, (itemsite_loccntrl) AS loccntrl, itemsite_freeze AS frozen INTO _r FROM itemsite JOIN item ON (item_id=itemsite_item_id) WHERE (itemsite_id=pItemsiteid); --Post the Inventory Transactions IF (_r.nocontrol) THEN RETURN -1; -- non-fatal error so dont throw an exception? END IF; IF (COALESCE(pItemlocSeries,0) = 0) THEN RAISE EXCEPTION 'Transaction series must be provided'; END IF; SELECT NEXTVAL('invhist_invhist_id_seq') INTO _invhistid; IF ((pTimestamp IS NULL) OR (CAST(pTimestamp AS date)=CURRENT_DATE)) THEN _timestamp := CURRENT_TIMESTAMP; ELSE _timestamp := pTimestamp; END IF; IF (pTransType = 'TS' OR pTransType = 'TR') THEN SELECT * INTO _t FROM tohead WHERE (tohead_number=pDocNumber); IF (pTransType = 'TS') THEN _xferwhsid := CASE WHEN (_t.tohead_src_warehous_id=_r.itemsite_warehous_id) THEN _t.tohead_trns_warehous_id WHEN (_t.tohead_trns_warehous_id=_r.itemsite_warehous_id AND pComments ~* 'recall') THEN _t.tohead_src_warehous_id WHEN (_t.tohead_trns_warehous_id=_r.itemsite_warehous_id) THEN _t.tohead_dest_warehous_id WHEN (_t.tohead_dest_warehous_id=_r.itemsite_warehous_id) THEN _t.tohead_trns_warehous_id ELSE NULL END; ELSIF (pTransType = 'TR') THEN _xferwhsid := CASE WHEN (_t.tohead_src_warehous_id=_r.itemsite_warehous_id) THEN _t.tohead_trns_warehous_id WHEN (_t.tohead_trns_warehous_id=_r.itemsite_warehous_id AND pComments ~* 'recall') THEN _t.tohead_dest_warehous_id WHEN (_t.tohead_trns_warehous_id=_r.itemsite_warehous_id) THEN _t.tohead_src_warehous_id WHEN (_t.tohead_dest_warehous_id=_r.itemsite_warehous_id) THEN _t.tohead_trns_warehous_id ELSE NULL END; END IF; END IF; -- increase inventory: AD RM RT RP RR RS RX RB TR -- decrease inventory: IM IB IT SH SI EX RI -- TS and TR are special: shipShipment and recallShipment should not change -- QOH at the Transfer Order src whs (as this was done by issueToShipping) -- but postReceipt should change QOH at the transit whs IF (pTransType='TS') THEN _sense := CASE WHEN (SELECT tohead_trns_warehous_id=_r.itemsite_warehous_id FROM tohead WHERE (tohead_number=pDocNumber)) THEN -1 ELSE 0 END; ELSIF (pTransType='TR') THEN _sense := CASE WHEN (SELECT tohead_src_warehous_id=_r.itemsite_warehous_id FROM tohead WHERE (tohead_number=pDocNumber)) THEN 0 ELSE 1 END; ELSIF (pTransType IN ('IM', 'IB', 'IT', 'SH', 'SI', 'EX', 'RI')) THEN _sense := -1; ELSE _sense := 1; END IF; IF((_r.itemsite_costmethod='A') AND (_r.itemsite_qtyonhand + round(_sense * pQty, 6)) < 0) THEN -- Can not let average costed itemsites go negative RAISE EXCEPTION 'This transaction will cause an Average Costed item to go negative which is not allowed [xtuple: postinvtrans, -2]'; END IF; INSERT INTO invhist ( invhist_id, invhist_itemsite_id, invhist_transtype, invhist_transdate, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_ordtype, invhist_ordnumber, invhist_docnumber, invhist_comments, invhist_invuom, invhist_unitcost, invhist_xfer_warehous_id, invhist_posted, invhist_series ) SELECT _invhistid, itemsite_id, pTransType, _timestamp, pQty, itemsite_qtyonhand, (itemsite_qtyonhand + (_sense * pQty)), itemsite_costmethod, itemsite_value, itemsite_value + (_r.cost * _sense * pQty), pOrderType, pOrderNumber, pDocNumber, pComments, uom_name, _r.cost, _xferwhsid, FALSE, pItemlocSeries FROM itemsite, item, uom WHERE ( (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_id=pItemsiteid) ); IF (pCreditid IN (SELECT accnt_id FROM accnt)) THEN _creditid = pCreditid; ELSE SELECT warehous_default_accnt_id INTO _creditid FROM itemsite, whsinfo WHERE ( (itemsite_warehous_id=warehous_id) AND (itemsite_id=pItemsiteid) ); END IF; IF (pDebitid IN (SELECT accnt_id FROM accnt)) THEN _debitid = pDebitid; ELSE SELECT warehous_default_accnt_id INTO _debitid FROM itemsite, whsinfo WHERE ( (itemsite_warehous_id=warehous_id) AND (itemsite_id=pItemsiteid) ); END IF; -- Post the G/L Transaction IF (_creditid <> _debitid) THEN SELECT insertGLTransaction(pModule, pOrderType, pOrderNumber, pComments, _creditid, _debitid, _invhistid, (_r.cost * pQty), _timestamp::DATE, FALSE) INTO _glreturn; END IF; -- Distribute this if this itemsite is controlled IF ( _r.lotserial OR _r.loccntrl ) THEN _itemlocdistid := nextval('itemlocdist_itemlocdist_id_seq'); INSERT INTO itemlocdist ( itemlocdist_id, itemlocdist_itemsite_id, itemlocdist_source_type, itemlocdist_reqlotserial, itemlocdist_distlotserial, itemlocdist_expiration, itemlocdist_qty, itemlocdist_series, itemlocdist_invhist_id, itemlocdist_order_type, itemlocdist_order_id ) SELECT _itemlocdistid, pItemsiteid, 'O', (((pQty * _sense) > 0) AND _r.lotserial), ((pQty * _sense) < 0), endOfTime(), (_sense * pQty), pItemlocSeries, _invhistid, pOrderType, CASE WHEN pOrderType='SO' THEN getSalesLineItemId(pOrderNumber) ELSE NULL END; -- populate distributions if invhist_id parameter passed to undo IF (pInvhistid IS NOT NULL) THEN INSERT INTO itemlocdist ( itemlocdist_itemlocdist_id, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_itemsite_id, itemlocdist_ls_id, itemlocdist_expiration, itemlocdist_qty, itemlocdist_series, itemlocdist_invhist_id ) SELECT _itemlocdistid, 'L', COALESCE(invdetail_location_id, -1), invhist_itemsite_id, invdetail_ls_id, COALESCE(invdetail_expiration, endoftime()), (invdetail_qty * -1.0), pItemlocSeries, _invhistid FROM invhist JOIN invdetail ON (invdetail_invhist_id=invhist_id) WHERE (invhist_id=pInvhistid); IF ( _r.lotserial) THEN INSERT INTO lsdetail ( lsdetail_itemsite_id, lsdetail_ls_id, lsdetail_created, lsdetail_source_type, lsdetail_source_id, lsdetail_source_number ) SELECT invhist_itemsite_id, invdetail_ls_id, CURRENT_TIMESTAMP, 'I', _itemlocdistid, '' FROM invhist JOIN invdetail ON (invdetail_invhist_id=invhist_id) WHERE (invhist_id=pInvhistid); END IF; PERFORM distributeitemlocseries(pItemlocSeries); END IF; END IF; -- end of distributions -- These records will be used for posting G/L transactions to trial balance after records committed. -- If we try to do it now concurrency locking prevents any transactions while -- user enters item distribution information. Cant have that. INSERT INTO itemlocpost ( itemlocpost_glseq, itemlocpost_itemlocseries) VALUES ( _glreturn, pItemlocSeries ); RETURN _invhistid; END; $$; ALTER FUNCTION public.postinvtrans(pitemsiteid integer, ptranstype text, pqty numeric, pmodule text, pordertype text, pordernumber text, pdocnumber text, pcomments text, pdebitid integer, pcreditid integer, pitemlocseries integer, ptimestamp timestamp with time zone, pcostovrld numeric, pinvhistid integer) OWNER TO admin; -- -- Name: postitemlocseries(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postitemlocseries(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemlocseries ALIAS FOR $1; _result INTEGER; BEGIN PERFORM postIntoTrialBalance(itemlocpost_glseq) FROM ( SELECT DISTINCT itemlocpost_glseq, gltrans_accnt_id FROM itemlocpost JOIN gltrans ON (itemlocpost_glseq=gltrans_sequence) WHERE (itemlocpost_itemlocseries=pItemlocseries) ORDER BY gltrans_accnt_id ) AS data; PERFORM postInvHist(invhist_id) FROM invhist JOIN itemsite ON (invhist_itemsite_id=itemsite_id) WHERE ( (invhist_series=pItemlocseries) AND ( NOT invhist_posted) AND ( NOT itemsite_freeze) ); DELETE FROM itemlocpost WHERE (itemlocpost_itemlocseries=pItemlocseries); RETURN TRUE; END; $_$; ALTER FUNCTION public.postitemlocseries(integer) OWNER TO admin; -- -- Name: postjournals(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postjournals(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; _transCount INTEGER := 0; _journalnumber INTEGER := fetchJournalNumber('J/P'); _sequence INTEGER := fetchGLSequence(); _sltrans RECORD; BEGIN -- Make sure that we balance IF (SELECT SUM(sltrans_amount) != 0 FROM sltrans WHERE ((NOT sltrans_posted ) AND (sltrans_sequence=pSequence))) THEN RAISE EXCEPTION 'Can not post journals. Transactions do not balance in selected date range.'; END IF; -- March through the sltrans members, posting them one at a time FOR _sltrans IN SELECT sltrans_source, sltrans_accnt_id, SUM(sltrans_amount) as amount FROM sltrans WHERE ((sltrans_amount<>0.0) AND (NOT sltrans_posted) AND (sltrans_sequence=pSequence)) GROUP BY sltrans_source, sltrans_accnt_id LOOP -- refuse to accept postings into closed periods IF (SELECT BOOL_AND(COALESCE(period_closed, FALSE)) FROM accnt LEFT OUTER JOIN period ON (CURRENT_DATE BETWEEN period_start AND period_end) WHERE (accnt_id = _sltrans.sltrans_accnt_id)) THEN RAISE EXCEPTION 'Cannot post to closed period (%).', _sltrans.sltrans_distdate; RETURN -4; -- remove raise exception when all callers check return code END IF; -- refuse to accept postings into frozen periods without proper priv IF (SELECT NOT BOOL_AND(checkPrivilege('PostFrozenPeriod')) AND BOOL_AND(COALESCE(period_freeze, FALSE)) FROM accnt LEFT OUTER JOIN period ON (CURRENT_DATE BETWEEN period_start AND period_end) WHERE (accnt_id = _sltrans.sltrans_accnt_id)) THEN RAISE EXCEPTION 'Cannot post to frozen period (%).', _sltrans.sltrans_distdate; RETURN -4; -- remove raise exception when all callers check return code END IF; IF (_sltrans.amount != 0) THEN INSERT INTO gltrans ( gltrans_posted, gltrans_exported, gltrans_created, gltrans_date, gltrans_sequence, gltrans_accnt_id, gltrans_source, gltrans_notes, gltrans_doctype, gltrans_docnumber, gltrans_amount, gltrans_journalnumber, gltrans_rec ) VALUES ( FALSE, FALSE, CURRENT_TIMESTAMP, CURRENT_DATE, _sequence, _sltrans.sltrans_accnt_id, _sltrans.sltrans_source, 'Journal Posting', 'JP', _journalnumber, _sltrans.amount, _journalnumber, TRUE ); _transCount := _transCount + 1; END IF; END LOOP; -- Update all of the posted sltrans members UPDATE sltrans SET sltrans_posted=true, sltrans_gltrans_journalnumber=_journalnumber WHERE ((NOT sltrans_posted) AND (sltrans_sequence=pSequence)); PERFORM postIntoTrialBalance(_sequence); RETURN _journalnumber; END; $_$; ALTER FUNCTION public.postjournals(integer) OWNER TO admin; -- -- Name: postjournals(text[], date, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postjournals(text[], date, date, date) RETURNS SETOF integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSources ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; pDistDate ALIAS FOR $4; _i INTEGER; BEGIN FOR _i IN 1..ARRAY_UPPER(pSources,1) LOOP RETURN NEXT postJournals(pSources[_i], pStartDate, pEndDate, pDistDate); END LOOP; RETURN; END; $_$; ALTER FUNCTION public.postjournals(text[], date, date, date) OWNER TO admin; -- -- Name: postjournals(text, date, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postjournals(text, date, date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSource ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; pDistDate ALIAS FOR $4; _transCount INTEGER := 0; _journalnumber INTEGER := fetchJournalNumber('J/P'); _sequence INTEGER := fetchGLSequence(); _sltrans RECORD; BEGIN -- Make sure that we balance IF (SELECT SUM(sltrans_amount) != 0 FROM sltrans WHERE ((NOT sltrans_posted ) AND (sltrans_source=pSource) AND (sltrans_date BETWEEN pStartDate AND pEndDate))) THEN RAISE EXCEPTION 'Can not post journals. Transactions do not balance in selected date range.'; END IF; -- March through the sltrans members, posting them one at a time FOR _sltrans IN SELECT sltrans_source, sltrans_accnt_id, SUM(sltrans_amount) as amount FROM sltrans WHERE ((sltrans_amount<>0.0) AND (NOT sltrans_posted) AND (sltrans_source=pSource) AND (sltrans_date BETWEEN pStartDate AND pEndDate)) GROUP BY sltrans_source, sltrans_accnt_id LOOP -- refuse to accept postings into frozen periods if any of the accounts disallow it IF (SELECT NOT BOOL_AND(checkPrivilege('PostFrozenPeriod')) AND BOOL_AND(COALESCE(period_freeze, FALSE)) FROM accnt LEFT OUTER JOIN period ON (pDistDate BETWEEN period_start AND period_end) WHERE (accnt_id = _sltrans.sltrans_accnt_id)) THEN RAISE EXCEPTION 'Cannot post to frozen period (%).', _sltrans.sltrans_distdate; RETURN -4; -- remove raise exception when all callers check return code END IF; IF (_sltrans.amount != 0) THEN INSERT INTO gltrans ( gltrans_posted, gltrans_exported, gltrans_created, gltrans_date, gltrans_sequence, gltrans_accnt_id, gltrans_source, gltrans_notes, gltrans_doctype, gltrans_docnumber, gltrans_amount, gltrans_journalnumber ) VALUES ( FALSE, FALSE, CURRENT_TIMESTAMP, pDistDate, _sequence, _sltrans.sltrans_accnt_id, _sltrans.sltrans_source, 'Journal Posting', 'JP', _journalnumber, _sltrans.amount, _journalnumber ); _transCount := _transCount + 1; END IF; END LOOP; -- Update all of the posted sltrans members UPDATE sltrans SET sltrans_posted=true, sltrans_gltrans_journalnumber=_journalnumber WHERE ((NOT sltrans_posted) AND (sltrans_source=pSource) AND (sltrans_date BETWEEN pStartDate AND pEndDate)); PERFORM postIntoTrialBalance(_sequence); RETURN _journalnumber; END; $_$; ALTER FUNCTION public.postjournals(text, date, date, date) OWNER TO admin; -- -- Name: postmessage(timestamp without time zone, timestamp without time zone, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postmessage(timestamp without time zone, timestamp without time zone, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pScheduled ALIAS FOR $1; pExpires ALIAS FOR $2; pText ALIAS FOR $3; _msgid INTEGER; BEGIN SELECT NEXTVAL('msg_msg_id_seq') INTO _msgid; INSERT INTO msg (msg_id, msg_posted, msg_scheduled, msg_expires, msg_username, msg_text) VALUES (_msgid, CURRENT_TIMESTAMP, pScheduled, pExpires, getEffectiveXtUser(), pText); INSERT INTO msguser ( msguser_msg_id, msguser_username ) SELECT _msgid, usr_username FROM usr WHERE (usr_username <> getEffectiveXtUser()); NOTIFY "messagePosted"; RETURN _msgid; END; $_$; ALTER FUNCTION public.postmessage(timestamp without time zone, timestamp without time zone, text) OWNER TO admin; -- -- Name: postmessage(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postmessage(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pText ALIAS FOR $2; _msgid INTEGER; BEGIN SELECT NEXTVAL('msg_msg_id_seq') INTO _msgid; INSERT INTO msg (msg_id, msg_posted, msg_scheduled, msg_expires, msg_username, msg_text) VALUES (_msgid, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, endOfTime(), getEffectiveXtUser(), pText); INSERT INTO msguser ( msguser_msg_id, msguser_username ) VALUES ( _msgid, pUsername ); NOTIFY "messagePosted"; RETURN _msgid; END; $_$; ALTER FUNCTION public.postmessage(text, text) OWNER TO admin; -- -- Name: postmessage(timestamp without time zone, timestamp without time zone, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postmessage(timestamp without time zone, timestamp without time zone, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pScheduled ALIAS FOR $1; pExpires ALIAS FOR $2; pUsername ALIAS FOR $3; pText ALIAS FOR $4; _msgid INTEGER; BEGIN SELECT NEXTVAL('msg_msg_id_seq') INTO _msgid; INSERT INTO msg (msg_id, msg_posted, msg_scheduled, msg_expires, msg_username, msg_text) VALUES (_msgid, CURRENT_TIMESTAMP, pScheduled, pExpires, getEffectiveXtUser(), pText); INSERT INTO msguser ( msguser_msg_id, msguser_username ) VALUES ( _msgid, pUsername ); NOTIFY "messagePosted"; RETURN _msgid; END; $_$; ALTER FUNCTION public.postmessage(timestamp without time zone, timestamp without time zone, text, text) OWNER TO admin; -- -- Name: postmisccount(integer, numeric, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postmisccount(pitemsiteid integer, pqty numeric, pcomments text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pQty ALIAS FOR $2; pComments ALIAS FOR $3; _invcntid INTEGER; _result INTEGER; BEGIN -- Make sure the passed itemsite points to a real item IF ( ( SELECT (item_type IN ('R', 'F') OR itemsite_costmethod = 'J') FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ) ) ) THEN RETURN 0; END IF; SELECT invcnt_id INTO _invcntid FROM invcnt WHERE ( (NOT invcnt_posted) AND (invcnt_itemsite_id=pItemsiteid) ); IF (_invcntid IS NULL) THEN _invcntid := NEXTVAL('invcnt_invcnt_id_seq'); INSERT INTO invcnt ( invcnt_id, invcnt_itemsite_id, invcnt_tagdate, invcnt_qoh_before, invcnt_qoh_after, invcnt_tag_username, invcnt_cntdate, invcnt_cnt_username, invcnt_postdate, invcnt_post_username, invcnt_posted, invcnt_priority, invcnt_comments ) SELECT _invcntid, pItemsiteid, now(), itemsite_qtyonhand, pQty, getEffectiveXtUser(), now(), getEffectiveXtUser(), now(), getEffectiveXtUser(), FALSE, FALSE, pComments FROM itemsite WHERE (itemsite_id=pItemsiteid); SELECT postCountTag(_invcntid, FALSE) INTO _result; IF (_result < 0) THEN DELETE FROM invcnt WHERE (invcnt_id=_invcntid); END IF; RETURN _result; ELSE RETURN -2; END IF; END; $_$; ALTER FUNCTION public.postmisccount(pitemsiteid integer, pqty numeric, pcomments text) OWNER TO admin; -- -- Name: postpogltransactions(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postpogltransactions() RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN UPDATE gltrans SET gltrans_exported=TRUE WHERE ( (NOT gltrans_exported) AND (gltrans_source='A/P') AND (gltrans_doctype IN ('VO')) ); RETURN TRUE; END; $$; ALTER FUNCTION public.postpogltransactions() OWNER TO admin; -- -- Name: postporeceipt(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postporeceipt(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN postReceipt($1, $2); END; $_$; ALTER FUNCTION public.postporeceipt(integer, integer) OWNER TO admin; -- -- Name: postporeceipts(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postporeceipts(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN postReceipts('PO', $1, NULL); END; $_$; ALTER FUNCTION public.postporeceipts(integer) OWNER TO admin; -- -- Name: postporeturncreditmemo(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postporeturncreditmemo(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPorejectId ALIAS FOR $1; BEGIN RETURN postPoReturnCreditMemo(pPorejectId, NULL); END; $_$; ALTER FUNCTION public.postporeturncreditmemo(integer) OWNER TO admin; -- -- Name: postporeturncreditmemo(integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postporeturncreditmemo(integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPorejectId ALIAS FOR $1; pAmount ALIAS FOR $2; _p RECORD; _a RECORD; _itemsiteId INTEGER; _docNumber TEXT; _sequence INTEGER; _journalNumber INTEGER; _apopenid INTEGER; _exchGainItem NUMERIC; _itemAmount_base NUMERIC; _itemAmount NUMERIC; _glseriesTotal NUMERIC; _tmpTotal NUMERIC; _test INTEGER; _exchDate DATE; _tax RECORD; _taxAmount NUMERIC := 0; _taxAmount_base NUMERIC; _apaccntid INTEGER; BEGIN --Set things up SELECT NEXTVAL('apopen_apopen_id_seq') INTO _apopenid; SELECT fetchGLSequence() INTO _sequence; SELECT fetchJournalNumber('AP-MISC') INTO _journalNumber; SELECT fetchapmemonumber() INTO _docNumber; _glseriesTotal := 0; --Get poreject data SELECT pohead_vend_id, pohead_number, pohead_curr_id, pohead_orderdate, pohead_taxzone_id, poitem_id, poitem_itemsite_id,poitem_expcat_id, poitem_taxtype_id, itemsite_costcat_id, poreject_qty, poreject_date, ('Return of Item ' || COALESCE(item_number,poitem_vend_item_number) || ', qty. ' || formatqty(poreject_qty)) AS notes, poreject_value AS value, currToBase(pohead_curr_id,(poitem_unitprice * poreject_qty),CURRENT_DATE) AS itemAmount_base, (poitem_unitprice * poreject_qty) AS itemAmount INTO _p FROM pohead, poreject, poitem LEFT OUTER JOIN itemsite ON (poitem_itemsite_id=itemsite_id) LEFT OUTER JOIN item ON (itemsite_item_id=item_id) WHERE ((poreject_poitem_id=poitem_id) AND (pohead_id=poitem_pohead_id) AND (poreject_id=pPorejectId)); _itemAmount := _p.itemAmount; _itemAmount_base := _p.itemAmount_base; IF (pAmount IS NOT NULL) THEN _itemAmount := pAmount; _itemAmount_base := currToBase(_p.pohead_curr_id, pAmount, CURRENT_DATE); END IF; -- Grab the G/L Accounts IF (COALESCE(_p.poitem_itemsite_id, -1) = -1) THEN SELECT pp.accnt_id AS pp_accnt_id, lb.accnt_id AS lb_accnt_id INTO _a FROM expcat, accnt AS pp, accnt AS lb WHERE ( (expcat_purchprice_accnt_id=pp.accnt_id) AND (expcat_liability_accnt_id=lb.accnt_id) AND (expcat_id=_p.poitem_expcat_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Post Credit Memo due to unassigned G/L Accounts.'; END IF; ELSE SELECT pp.accnt_id AS pp_accnt_id, lb.accnt_id AS lb_accnt_id INTO _a FROM costcat, accnt AS pp, accnt AS lb WHERE ( (costcat_purchprice_accnt_id=pp.accnt_id) AND (costcat_liability_accnt_id=lb.accnt_id) AND (costcat_id=_p.itemsite_costcat_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Post Credit Memo due to unassigned G/L Accounts.'; END IF; END IF; -- AP Open Item record INSERT INTO apopen ( apopen_id, apopen_username, apopen_journalnumber, apopen_vend_id, apopen_docnumber, apopen_doctype, apopen_ponumber, apopen_docdate, apopen_duedate, apopen_distdate, apopen_terms_id, apopen_amount, apopen_paid, apopen_open, apopen_notes, apopen_accnt_id, apopen_curr_id, apopen_closedate ) VALUES ( _apopenid, getEffectiveXtUser(), _journalNumber, _p.pohead_vend_id, _docNumber, 'C', _p.pohead_number, CURRENT_DATE, CURRENT_DATE, CURRENT_DATE, -1, round(_itemAmount, 2), 0, (round(_itemAmount, 2) <> 0), _p.notes, -1, _p.pohead_curr_id, CASE WHEN (round(_itemAmount, 2) = 0) THEN _p.poreject_date END ); -- Taxes FOR _tax IN SELECT taxdetail_tax_id, sum(taxdetail_tax) AS taxdetail_tax, currToBase(_p.pohead_curr_id, round(sum(taxdetail_tax),2), current_date) AS taxbasevalue FROM calculateTaxDetail(_p.pohead_taxzone_id, _p.poitem_taxtype_id, current_date, _p.pohead_curr_id, _itemAmount) GROUP BY taxdetail_tax_id LOOP INSERT INTO apopentax (taxhist_basis,taxhist_percent,taxhist_amount,taxhist_docdate, taxhist_tax_id, taxhist_tax, taxhist_taxtype_id, taxhist_parent_id, taxhist_journalnumber ) VALUES (0, 0, 0, current_date, _tax.taxdetail_tax_id, _tax.taxdetail_tax, getadjustmenttaxtypeid(), _apopenid, _journalNumber); _taxAmount := _taxAmount + _tax.taxdetail_tax; END LOOP; _taxAmount_base := addTaxToGLSeries(_sequence, 'A/P', 'CM', _docNumber, _p.pohead_curr_id, current_date, current_date, 'apopentax', _apopenid, _p.notes); UPDATE apopen SET apopen_amount = round(_itemAmount + _taxAmount,2) WHERE (apopen_id = _apopenid); -- Distribute from the clearing account PERFORM insertIntoGLSeries( _sequence, 'A/P', 'CM', _docNumber, _a.lb_accnt_id, round(_p.value, 2), current_date, _p.notes ); _glseriesTotal := _glseriesTotal + round(_p.value, 2); -- Distribute the remaining variance to the Purchase Price Variance account IF (round(_itemAmount_base, 2) <> round(_p.value, 2)) THEN _tmpTotal := round(_itemAmount_base, 2) - round(_p.value, 2); PERFORM insertIntoGLSeries( _sequence, 'A/P', 'CM', _docNumber, _a.pp_accnt_id, _tmpTotal, current_date, _p.notes ); _glseriesTotal := _glseriesTotal + _tmpTotal; END IF; -- Post the reject item for this P/O Item as Invoiced UPDATE poreject SET poreject_invoiced=TRUE WHERE poreject_id=pPorejectId; -- Update the qty vouchered field UPDATE poitem SET poitem_qty_vouchered = (poitem_qty_vouchered - _p.poreject_qty) WHERE (poitem_id=_p.poitem_id); -- Post to A/P SELECT findAPAccount(_p.pohead_vend_id) INTO _apaccntid; IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Post Credit Memo due to an unassigned A/P Account.'; END IF; SELECT insertIntoGLSeries( _sequence, 'A/P', 'CM', _docNumber, _apaccntid, round(_itemAmount_base + _taxAmount_base, 2) *-1, current_date, _p.notes ) INTO _test; IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Post Credit Memo.'; END IF; -- Clean up loose ends _glseriesTotal := _glseriesTotal + round(_itemAmount_base, 2)*-1; IF (round(_glseriesTotal, 2) != 0) THEN PERFORM insertIntoGLSeries(_sequence, 'A/P', 'CM', 'Currency Exchange Rounding - ' || _docNumber, getGainLossAccntId(_apaccntid), round(_glseriesTotal, 2) * -1, current_date, _p.notes); END IF; -- Post it all PERFORM postGLSeries(_sequence, _journalNumber); RETURN _journalNumber; END; $_$; ALTER FUNCTION public.postporeturncreditmemo(integer, numeric) OWNER TO admin; -- -- Name: postporeturns(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postporeturns(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPoheadid ALIAS FOR $1; _itemlocSeries INTEGER; _p RECORD; _returnval INTEGER; BEGIN _itemlocSeries := 0; SELECT postPoReturns(pPoheadid,false) INTO _itemlocseries; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.postporeturns(integer) OWNER TO admin; -- -- Name: postporeturns(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postporeturns(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPoheadid ALIAS FOR $1; pCreateMemo ALIAS FOR $2; _itemlocSeries INTEGER; _p RECORD; _returnval INTEGER; _tmp INTEGER; _pricevar NUMERIC := 0.00; _invhistid INTEGER; _journalNumber INTEGER := fetchJournalNumber('GL-MISC'); BEGIN _itemlocSeries := 0; FOR _p IN SELECT pohead_number, pohead_curr_id, poreject_id, poitem_prj_id, poreject_poitem_id, poitem_id, poitem_expcat_id, poitem_linenumber, currToBase(COALESCE(recv_purchcost_curr_id, pohead_curr_id), COALESCE(recv_purchcost, poitem_unitprice), pohead_orderdate) AS poitem_unitprice_base, COALESCE(itemsite_id, -1) AS itemsiteid, poitem_invvenduomratio, SUM(poreject_qty) AS totalqty, itemsite_item_id, itemsite_costmethod, itemsite_controlmethod, recv_date FROM pohead JOIN poitem ON (poitem_pohead_id=pohead_id) JOIN poreject ON (poreject_poitem_id=poitem_id AND NOT poreject_posted) LEFT OUTER JOIN itemsite ON (poitem_itemsite_id=itemsite_id) LEFT OUTER JOIN recv ON (recv_id=poreject_recv_id) WHERE (pohead_id=pPoheadid) GROUP BY poreject_id, pohead_number, poreject_poitem_id, poitem_id, poitem_prj_id, poitem_expcat_id, poitem_linenumber, poitem_unitprice, pohead_curr_id, pohead_orderdate, itemsite_id, poitem_invvenduomratio, itemsite_item_id, itemsite_costmethod, itemsite_controlmethod, recv_date, recv_purchcost_curr_id, recv_purchcost LOOP IF (_p.itemsiteid = -1) THEN SELECT insertGLTransaction( 'S/R', 'PO', _p.pohead_number, 'Return Non-Inventory to P/O', expcat_liability_accnt_id, getPrjAccntId(_p.poitem_prj_id, expcat_exp_accnt_id), -1, round(_p.poitem_unitprice_base * _p.totalqty * -1, 2), CURRENT_DATE ) INTO _returnval FROM expcat WHERE (expcat_id=_p.poitem_expcat_id); UPDATE poreject SET poreject_posted=TRUE, poreject_value= round(_p.poitem_unitprice_base * _p.totalqty, 2) WHERE (poreject_id=_p.poreject_id); ELSEIF (_p.itemsite_controlmethod='N') THEN SELECT insertGLTransaction('S/R', 'PO', _p.pohead_number, 'Return Non-Controlled Inventory from PO', costcat_liability_accnt_id, getPrjAccntId(_p.poitem_prj_id, costcat_exp_accnt_id), -1, round((_p.poitem_unitprice_base * _p.totalqty * -1), 2), CURRENT_DATE ) INTO _returnval FROM itemsite, costcat WHERE((itemsite_costcat_id=costcat_id) AND (itemsite_id=_p.itemsiteid)); IF (_returnval = -3) THEN -- zero value transaction _returnval := 0; END IF; UPDATE poreject SET poreject_posted=TRUE, poreject_value= round(_p.poitem_unitprice_base * _p.totalqty, 2) WHERE (poreject_id=_p.poreject_id); ELSE IF (_itemlocSeries = 0) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; END IF; SELECT postInvTrans( itemsite_id, 'RP', (_p.totalqty * _p.poitem_invvenduomratio * -1), 'S/R', 'PO', (_p.pohead_number || '-' || _p.poitem_linenumber::TEXT), '', 'Return Inventory to P/O', costcat_asset_accnt_id, costcat_liability_accnt_id, _itemlocSeries, CURRENT_TIMESTAMP) INTO _returnval FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_p.itemsiteid) ); UPDATE poreject SET poreject_posted=TRUE, poreject_value=(invhist_unitcost *_p.totalqty * _p.poitem_invvenduomratio) FROM invhist WHERE ((poreject_id=_p.poreject_id) AND (invhist_id=_returnval)); END IF; IF (_returnval < 0) THEN RETURN _returnval; END IF; UPDATE poitem SET poitem_qty_returned=(poitem_qty_returned + _p.totalqty), poitem_status='O' WHERE (poitem_id=_p.poitem_id); IF (fetchMetricBool('RecordPPVonReceipt')) THEN -- If the 'Purchase Price Variance on Receipt' option is true _invhistid := _returnval; -- Find the difference in the purchase price value expected from the P/O and the value of the transaction SELECT ((_p.poitem_unitprice_base * poitem_qty_returned) - (invhist_value_before - invhist_value_after)) INTO _pricevar FROM invhist, poitem WHERE ((invhist_id = _invhistid) AND (poitem_id=_p.poitem_id)); -- If difference exists then IF (_pricevar <> 0.00) THEN -- Record an additional GL Transaction for the purchase price variance SELECT insertGLTransaction( _journalNumber, 'S/R', 'PO', _p.pohead_number, 'Purchase price variance adjusted for P/O ' || _p.pohead_number || ' for item ' || _p.poitem_linenumber::TEXT, costcat_liability_accnt_id, getPrjAccntId(_p.poitem_prj_id, costcat_purchprice_accnt_id), -1, _pricevar, CURRENT_DATE, false ) INTO _tmp FROM itemsite, costcat, poitem WHERE ((itemsite_costcat_id=costcat_id) AND (itemsite_id=poitem_itemsite_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Could not insert G/L transaction: no cost category found for itemsite_id %', _p.itemsiteid; ELSIF (_tmp < 0 AND _tmp != -3) THEN -- error but not 0-value transaction RETURN _tmp; ELSE -- Posting to trial balance is deferred to prevent locking INSERT INTO itemlocpost ( itemlocpost_glseq, itemlocpost_itemlocseries) VALUES ( _tmp, _itemlocSeries ); END IF; END IF; END IF; IF (pCreateMemo) THEN SELECT postPoReturnCreditMemo(_p.poreject_id) INTO _returnval; END IF; IF (_returnval < 0) THEN RETURN _returnval; END IF; END LOOP; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.postporeturns(integer, boolean) OWNER TO admin; -- -- Name: postproduction(integer, numeric, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postproduction(integer, numeric, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'postProduction(INTEGER, NUMERIC, BOOLEAN, BOOLEAN) is deprecated. please use postProduction(INTEGER, NUMERIC, BOOLEAN, INTEGER, TIMESTAMP WITH TIME ZONE) instead'; RETURN postProduction($1, $2, $3, 0, now()); END; $_$; ALTER FUNCTION public.postproduction(integer, numeric, boolean, boolean) OWNER TO admin; -- -- Name: postproduction(integer, numeric, boolean, boolean, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postproduction(integer, numeric, boolean, boolean, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'postProduction(INTEGER, NUMERIC, BOOLEAN, BOOLEAN, INTEGER) is deprecated. please use postProduction(INTEGER, NUMERIC, BOOLEAN, INTEGER, TIMESTAMP WITH TIME ZONE) instead'; RETURN postProduction($1, $2, $3, $5, now()); END; $_$; ALTER FUNCTION public.postproduction(integer, numeric, boolean, boolean, integer) OWNER TO admin; -- -- Name: postproduction(integer, numeric, boolean, boolean, integer, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postproduction(integer, numeric, boolean, boolean, integer, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'postProduction(INTEGER, NUMERIC, BOOLEAN, BOOLEAN, INTEGER, TEXT, TEXT) is deprecated. please use postProduction(INTEGER, NUMERIC, BOOLEAN, INTEGER, TIMESTAMP WITH TIME ZONE) instead'; RETURN postProduction($1, $2, $3, $5, now()); END; $_$; ALTER FUNCTION public.postproduction(integer, numeric, boolean, boolean, integer, text, text) OWNER TO admin; -- -- Name: postproduction(integer, numeric, boolean, integer, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postproduction(integer, numeric, boolean, integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pQty ALIAS FOR $2; pBackflush ALIAS FOR $3; pItemlocSeries ALIAS FOR $4; pGlDistTS ALIAS FOR $5; _test INTEGER; _invhistid INTEGER; _itemlocSeries INTEGER; _parentQty NUMERIC; _r RECORD; _sense TEXT; _wipPost NUMERIC; _woNumber TEXT; _ucost NUMERIC; BEGIN IF (pQty = 0) THEN RETURN 0; ELSIF (pQty > 0) THEN _sense = 'from'; ELSE _sense = 'to'; END IF; IF ( ( SELECT wo_status FROM wo WHERE (wo_id=pWoid) ) NOT IN ('R','E','I') ) THEN RETURN -1; END IF; -- Make sure that all Component Item Sites exist SELECT bomitem_id INTO _test FROM wo, bomitem, itemsite WHERE ( (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=bomitem_parent_item_id) AND (woEffectiveDate(wo_startdate) BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (wo_id=pWoid) AND (bomitem_rev_id=wo_bom_rev_id) AND (bomitem_item_id NOT IN ( SELECT component.itemsite_item_id FROM itemsite AS component, itemsite AS parent WHERE ( (wo_itemsite_id=parent.itemsite_id) AND (parent.itemsite_item_id=bomitem_parent_item_id) AND (bomitem_item_id=component.itemsite_item_id) AND (woEffectiveDate(wo_startdate) BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (bomitem_rev_id=wo_bom_rev_id) AND (component.itemsite_active) AND (component.itemsite_warehous_id=parent.itemsite_warehous_id) ) ) ) ) LIMIT 1; IF (FOUND AND pBackflush) THEN RETURN -2; END IF; SELECT formatWoNumber(pWoid) INTO _woNumber; SELECT roundQty(item_fractional, pQty) INTO _parentQty FROM wo, itemsite, item WHERE ((wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (wo_id=pWoid)); -- Create the material receipt transaction IF (pItemlocSeries = 0) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; ELSE _itemlocSeries = pItemlocSeries; END IF; IF (pBackflush) THEN FOR _r IN SELECT womatl_id, womatl_qtyiss + (CASE WHEN (womatl_qtywipscrap > ((womatl_qtyfxd + (_parentQty + wo_qtyrcv) * womatl_qtyper) * womatl_scrap)) THEN (womatl_qtyfxd + (_parentQty + wo_qtyrcv) * womatl_qtyper) * womatl_scrap ELSE womatl_qtywipscrap END) AS consumed, (womatl_qtyfxd + ((_parentQty + wo_qtyrcv) * womatl_qtyper)) * (1 + womatl_scrap) AS expected FROM womatl, wo, itemsite, item WHERE ((womatl_issuemethod IN ('L', 'M')) AND (womatl_wo_id=pWoid) AND (womatl_wo_id=wo_id) AND (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id)) LOOP -- Don't issue more than should have already been consumed at this point IF (pQty > 0) THEN IF (noNeg(_r.expected - _r.consumed) > 0) THEN SELECT issueWoMaterial(_r.womatl_id, noNeg(_r.expected - _r.consumed), _itemlocSeries, pGlDistTS) INTO _itemlocSeries; END IF; ELSE -- Used by postMiscProduction of disassembly SELECT returnWoMaterial(_r.womatl_id, (_r.expected * -1.0), _itemlocSeries, CURRENT_TIMESTAMP, true) INTO _itemlocSeries; END IF; UPDATE womatl SET womatl_issuemethod='L' WHERE ( (womatl_issuemethod='M') AND (womatl_id=_r.womatl_id) ); END LOOP; END IF; SELECT CASE WHEN (pQty < 0 AND itemsite_costmethod='S') THEN stdcost(itemsite_item_id) * pQty WHEN (pQty < 0) THEN avgcost(itemsite_id) * pQty WHEN (wo_cosmethod = 'D') THEN wo_wipvalue ELSE round((wo_wipvalue - (wo_postedvalue / wo_qtyord * (wo_qtyord - CASE WHEN (wo_qtyord < wo_qtyrcv + pQty) THEN wo_qtyord ELSE wo_qtyrcv + pQty END ))),2) END INTO _wipPost FROM wo JOIN itemsite ON (wo_itemsite_id=itemsite_id) WHERE (wo_id=pWoid); SELECT postInvTrans( itemsite_id, 'RM', _parentQty, 'W/O', 'WO', _woNumber, '', ('Receive Inventory ' || item_number || ' ' || _sense || ' Manufacturing'), costcat_asset_accnt_id, getPrjAccntId(wo_prj_id, costcat_wip_accnt_id), _itemlocSeries, pGlDistTS, -- the following is only actually used when the item is average or job costed _wipPost ) INTO _invhistid FROM wo, itemsite, item, costcat WHERE ( (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (itemsite_costcat_id=costcat_id) AND (wo_id=pWoid) ); IF (pQty < 0 ) THEN _wipPost := _wipPost * -1; END IF; -- Increase this W/O's received qty decrease its WIP value UPDATE wo SET wo_qtyrcv = (wo_qtyrcv + _parentQty), wo_wipvalue = (wo_wipvalue - (CASE WHEN (itemsite_costmethod IN ('A','J')) THEN _wipPost WHEN (itemsite_costmethod='S') THEN (stdcost(itemsite_item_id) * _parentQty) ELSE 0.0 END)) FROM itemsite, item WHERE ((wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (wo_id=pWoid)); -- ROB Increase this W/O's WIP value for custom costing SELECT SUM(itemcost_stdcost * _parentQty) INTO _ucost FROM wo JOIN itemsite ON (itemsite_id=wo_itemsite_id) JOIN itemcost ON (itemcost_item_id=itemsite_item_id) JOIN costelem ON ((costelem_id=itemcost_costelem_id) AND (costelem_exp_accnt_id IS NOT NULL) AND (NOT costelem_sys)) WHERE (wo_id=pWoid); UPDATE wo SET wo_wipvalue = (wo_wipvalue + coalesce(_ucost,0)) WHERE (wo_id=pWoid); -- ROB Distribute to G/L - create Cost Variance, debit WIP PERFORM insertGLTransaction( 'W/O', 'WO', _woNumber, ('Post Other Cost ' || item_number || ' ' || _sense || ' Manufacturing'), getPrjAccntId(wo_prj_id, costelem_exp_accnt_id), getPrjAccntId(wo_prj_id,costcat_wip_accnt_id), _invhistid, (itemcost_stdcost * _parentQty), pGlDistTS::DATE ) FROM wo, costelem, itemcost, costcat, itemsite, item WHERE ((wo_id=pWoid) AND (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (costelem_id = itemcost_costelem_id) AND (itemcost_item_id = itemsite_item_id) AND (itemsite_costcat_id = costcat_id) AND (costelem_exp_accnt_id) IS NOT NULL AND (costelem_sys = false)); --End -- Make sure the W/O is at issue status UPDATE wo SET wo_status='I' WHERE (wo_id=pWoid); RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.postproduction(integer, numeric, boolean, integer, timestamp with time zone) OWNER TO admin; -- -- Name: postreceipt(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postreceipt(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2011 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE precvid ALIAS FOR $1; _itemlocSeries INTEGER := COALESCE($2, 0); _freightAccnt INTEGER; _glDate TIMESTAMP WITH TIME ZONE; _o RECORD; _ordertypeabbr TEXT; _r RECORD; _ra RECORD; _recvinvqty NUMERIC := 0.00; _recvvalue NUMERIC := 0.00; _pricevar NUMERIC := 0.00; _tmp INTEGER; _toitemitemid INTEGER; _coheadid INTEGER; _coitemid INTEGER; _linenumber INTEGER; _invhistid INTEGER; _shipheadid INTEGER; _ship BOOLEAN; _i RECORD; BEGIN SELECT recv_id, recv_order_type, recv_orderitem_id, recv_qty, round(currToBase(recv_freight_curr_id, recv_freight, recv_date::DATE), 2) AS recv_freight_base, recv_freight, recv_freight_curr_id, recv_date, recv_gldistdate, itemsite_id, itemsite_item_id, item_inv_uom_id, itemsite_costmethod, itemsite_controlmethod, vend_name, item_number, item_fractional INTO _r FROM recv LEFT OUTER JOIN itemsite ON (recv_itemsite_id=itemsite_id) LEFT OUTER JOIN item ON (itemsite_item_id=item_id) LEFT OUTER JOIN vendinfo ON (recv_vend_id=vend_id) WHERE ((recv_id=precvid) AND (NOT recv_posted)); IF (NOT FOUND) THEN IF (_itemlocSeries = 0) THEN RETURN -10; END IF; RETURN _itemlocSeries; ELSEIF (_r.recv_qty <= 0) THEN RETURN -11; ELSIF (_r.recv_order_type ='PO') THEN _ordertypeabbr := ('P/O for ' || _r.vend_name || ' for item ' || _r.item_number); SELECT pohead_number AS orderhead_number, poitem_id AS orderitem_id, poitem_linenumber AS orderitem_linenumber, currToBase(pohead_curr_id, COALESCE(recv_purchcost, poitem_unitprice), recv_date::DATE) AS item_unitprice_base, poitem_invvenduomratio AS invvenduomratio, pohead_orderdate AS orderdate, pohead_dropship, poitem_prj_id AS prj_id INTO _o FROM recv, pohead, poitem WHERE ((recv_orderitem_id=poitem_id) AND (poitem_pohead_id=pohead_id) AND (NOT recv_posted) AND (recv_id=precvid)); ELSIF (_r.recv_order_type ='RA') THEN _ordertypeabbr := 'R/A for item ' || _r.item_number; SELECT rahead_id AS orderhead_id, rahead_number AS orderhead_number, raitem_id AS orderitem_id, raitem_linenumber AS orderitem_linenumber, currToBase(rahead_curr_id, raitem_unitprice, recv_date::DATE) AS item_unitprice_base, raitem_qty_invuomratio AS invvenduomratio, rahead_authdate AS orderdate, raitem_unitcost AS unitcost, rahead_prj_id AS prj_id INTO _o FROM recv, rahead, raitem WHERE ((recv_orderitem_id=raitem_id) AND (raitem_rahead_id=rahead_id) AND (NOT recv_posted) AND (recv_id=precvid)); ELSIF (_r.recv_order_type ='TO') THEN _ordertypeabbr := 'T/O for item ' || _r.item_number; SELECT tohead_number AS orderhead_number, toitem_id AS orderitem_id, toitem_linenumber AS orderitem_linenumber, toitem_stdcost AS item_unitprice_base, 1.0 AS invvenduomratio, tohead_orderdate AS orderdate, NULL AS prj_id INTO _o FROM recv, tohead, toitem WHERE ((recv_orderitem_id=toitem_id) AND (toitem_tohead_id=tohead_id) AND (NOT recv_posted) AND (recv_id=precvid)); ELSE RETURN -13; -- don't know how to handle this order type END IF; IF (NOT FOUND) THEN IF (_itemlocSeries = 0) THEN RETURN -10; END IF; RETURN _itemlocSeries; END IF; IF (_itemlocSeries = 0) THEN _itemlocSeries := NEXTVAL('itemloc_series_seq'); ELSEIF (_itemlocSeries < 0) THEN RETURN _itemlocSeries; END IF; _glDate := COALESCE(_r.recv_gldistdate, _r.recv_date); _recvinvqty := roundQty(_r.item_fractional, (_r.recv_qty * _o.invvenduomratio)); IF ( (_r.recv_order_type = 'PO') AND (_r.itemsite_id = -1 OR _r.itemsite_id IS NULL OR _r.itemsite_controlmethod = 'N') ) THEN IF (_r.itemsite_id IS NOT NULL) THEN SELECT insertGLTransaction( fetchJournalNumber('GL-MISC'), 'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Non-Controlled Inventory from ' || _ordertypeabbr, costcat_liability_accnt_id, getPrjAccntId(_o.prj_id, costcat_exp_accnt_id), -1, round((_o.item_unitprice_base * _r.recv_qty),2), _glDate::DATE, false ) INTO _tmp FROM poitem, itemsite, costcat WHERE((poitem_itemsite_id=itemsite_id) AND (itemsite_costcat_id=costcat_id) AND (poitem_id=_o.orderitem_id)); ELSE SELECT insertGLTransaction(fetchJournalNumber('GL-MISC'), 'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Non-Inventory from ' || 'P/O for ' || _r.vend_name || ' for ' || expcat_code, expcat_liability_accnt_id, getPrjAccntId(_o.prj_id, expcat_exp_accnt_id), -1, round((_o.item_unitprice_base * _r.recv_qty),2), _glDate::DATE, false ) INTO _tmp FROM poitem, expcat WHERE((poitem_expcat_id=expcat_id) AND (poitem_id=_o.orderitem_id)); END IF; IF (_tmp < 0 AND _tmp != -3) THEN -- error but not 0-value transaction RETURN _tmp; ELSE -- Posting to trial balance is deferred to prevent locking INSERT INTO itemlocpost ( itemlocpost_glseq, itemlocpost_itemlocseries) VALUES ( _tmp, _itemlocSeries ); END IF; SELECT insertGLTransaction( fetchJournalNumber('GL-MISC'), 'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Non-Inventory Freight from ' || _ordertypeabbr, expcat_liability_accnt_id, getPrjAccntId(_o.prj_id, expcat_freight_accnt_id), -1, _r.recv_freight_base, _glDate::DATE, false ), expcat_freight_accnt_id INTO _tmp, _freightAccnt FROM poitem, expcat WHERE((poitem_expcat_id=expcat_id) AND (poitem_id=_o.orderitem_id)); IF (_tmp < 0 AND _tmp != -3) THEN -- error but not 0-value transaction RETURN _tmp; ELSE -- Posting to trial balance is deferred to prevent locking INSERT INTO itemlocpost ( itemlocpost_glseq, itemlocpost_itemlocseries) VALUES ( _tmp, _itemlocSeries ); END IF; _recvvalue := ROUND((_o.item_unitprice_base * _r.recv_qty),2); UPDATE poitem SET poitem_qty_received = (poitem_qty_received + _r.recv_qty), poitem_freight_received = (poitem_freight_received + _r.recv_freight_base) WHERE (poitem_id=_o.orderitem_id); ELSEIF ( (_r.recv_order_type = 'RA') AND (_r.itemsite_id = -1 OR _r.itemsite_id IS NULL OR _r.itemsite_controlmethod = 'N') ) THEN RAISE NOTICE 'itemsite controlmethod is %, cannot post receipt.', _r.itemsite_controlmethod; RETURN -14; -- otherwise how do we get the accounts? ELSEIF ( (_r.recv_order_type = 'TO') AND (_r.itemsite_id = -1 OR _r.itemsite_id IS NULL) ) THEN RAISE NOTICE 'itemsite missing'; RETURN -14; -- otherwise how do we get the accounts? ELSE -- not ELSIF: some code is shared between diff order types IF (_r.recv_order_type = 'PO') THEN SELECT postInvTrans( itemsite_id, 'RP'::TEXT, _recvinvqty, 'S/R'::TEXT, _r.recv_order_type::TEXT, _o.orderhead_number::TEXT || '-' || _o.orderitem_linenumber::TEXT, ''::TEXT, 'Receive Inventory from ' || _ordertypeabbr, costcat_asset_accnt_id, costcat_liability_accnt_id, _itemlocSeries, _glDate, round((_o.item_unitprice_base * _r.recv_qty),2) -- always passing this in since it is ignored if it is not average costed item ) INTO _tmp FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Could not post inventory transaction: no cost category found for itemsite_id %', _r.itemsite_id; ELSIF (_tmp < -1) THEN -- less than -1 because -1 means it is a none controlled item IF(_tmp = -3) THEN RETURN -12; -- The GL trans value was 0 which means we likely do not have a std cost END IF; RETURN _tmp; END IF; -- If the 'Purchase Price Variance on Receipt' option is true IF (fetchMetricBool('RecordPPVonReceipt')) THEN _invhistid := _tmp; -- Find the difference in the purchase price value expected from the P/O and the value of the transaction SELECT ((_o.item_unitprice_base * _r.recv_qty) - (invhist_value_after - invhist_value_before)) INTO _pricevar FROM invhist WHERE (invhist_id = _invhistid); -- If difference exists then IF (_pricevar <> 0.00) THEN -- Record an additional GL Transaction for the purchase price variance SELECT insertGLTransaction( fetchJournalNumber('GL-MISC'), 'S/R', _r.recv_order_type, _o.orderhead_number, 'Purchase price variance adjusted for P/O ' || _o.orderhead_number || ' for item ' || _r.item_number, costcat_liability_accnt_id, getPrjAccntId(_o.prj_id, costcat_purchprice_accnt_id), -1, _pricevar, _glDate::DATE, false ) INTO _tmp FROM itemsite, costcat WHERE ((itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Could not insert G/L transaction: no cost category found for itemsite_id %', _r.itemsite_id; ELSIF (_tmp < 0 AND _tmp != -3) THEN -- error but not 0-value transaction RETURN _tmp; ELSE -- Posting to trial balance is deferred to prevent locking INSERT INTO itemlocpost ( itemlocpost_glseq, itemlocpost_itemlocseries) VALUES ( _tmp, _itemlocSeries ); END IF; END IF; END IF; SELECT insertGLTransaction(fetchJournalNumber('GL-MISC'), 'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Inventory Freight from ' || _o.orderhead_number || ' for item ' || _r.item_number, costcat_liability_accnt_id, getPrjAccntId(_o.prj_id, costcat_freight_accnt_id), -1, _r.recv_freight_base, _glDate::DATE, false ), costcat_freight_accnt_id INTO _tmp, _freightAccnt FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Could not insert G/L transaction: no cost category found for itemsite_id %', _r.itemsite_id; ELSIF (_tmp < 0 AND _tmp != -3) THEN -- error but not 0-value transaction RETURN _tmp; ELSE -- Posting to trial balance is deferred to prevent locking INSERT INTO itemlocpost ( itemlocpost_glseq, itemlocpost_itemlocseries) VALUES ( _tmp, _itemlocSeries ); END IF; UPDATE poitem SET poitem_qty_received = (poitem_qty_received + _r.recv_qty), poitem_freight_received = (poitem_freight_received + _r.recv_freight_base) WHERE (poitem_id=_o.orderitem_id); ELSIF (_r.recv_order_type = 'RA') THEN SELECT rahead.*, raitem.* INTO _ra FROM rahead, raitem WHERE ((rahead_id=raitem_rahead_id) AND (raitem_id=_r.recv_orderitem_id)); SELECT postInvTrans(_r.itemsite_id, 'RR', _recvinvqty, 'S/R', _r.recv_order_type, _ra.rahead_number::TEXT || '-' || _ra.raitem_linenumber::TEXT, '', 'Receive Inventory from ' || _ordertypeabbr, costcat_asset_accnt_id, CASE WHEN(COALESCE(_ra.raitem_cos_accnt_id, -1) != -1) THEN getPrjAccntId(_o.prj_id, _ra.raitem_cos_accnt_id) WHEN (_ra.raitem_warranty) THEN getPrjAccntId(_o.prj_id, resolveCOWAccount(_r.itemsite_id, _ra.rahead_cust_id, _ra.rahead_saletype_id, _ra.rahead_shipzone_id)) ELSE getPrjAccntId(_o.prj_id, resolveCORAccount(_r.itemsite_id, _ra.rahead_cust_id, _ra.rahead_saletype_id, _ra.rahead_shipzone_id)) END, _itemlocSeries, _glDate, COALESCE(_o.unitcost,stdcost(itemsite_item_id)) * _recvinvqty) INTO _tmp FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Could not post inventory transaction: no cost category found for itemsite_id %', _r.itemsite_id; ELSIF (_tmp < -1) THEN -- less than -1 because -1 means it is a none controlled item IF(_tmp = -3) THEN RAISE NOTICE 'The GL trans value was 0 which means we likely do not have a std cost'; RETURN -12; -- The GL trans value was 0 which means we likely do not have a std cost END IF; RETURN _tmp; END IF; INSERT INTO rahist (rahist_itemsite_id, rahist_date, rahist_descrip, rahist_qty, rahist_uom_id, rahist_source, rahist_source_id, rahist_rahead_id ) VALUES (_r.itemsite_id, _glDate, 'Receive Inventory from ' || _ordertypeabbr, _recvinvqty, _r.item_inv_uom_id, 'RR', _r.recv_id, _ra.rahead_id ); SELECT insertGLTransaction(fetchJournalNumber('GL-MISC'), 'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Inventory Freight from ' || _o.orderhead_number || ' for item ' || _r.item_number, costcat_liability_accnt_id, getPrjAccntId(_o.prj_id, costcat_freight_accnt_id), -1, _r.recv_freight_base, _glDate::DATE, false ), costcat_freight_accnt_id INTO _tmp, _freightAccnt FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id) ); IF (_tmp < 0 AND _tmp != -3) THEN -- error but not 0-value transaction RETURN _tmp; ELSE -- Posting to trial balance is deferred to prevent locking INSERT INTO itemlocpost ( itemlocpost_glseq, itemlocpost_itemlocseries) VALUES ( _tmp, _itemlocSeries ); END IF; INSERT INTO rahist (rahist_date, rahist_descrip, rahist_source, rahist_source_id, rahist_curr_id, rahist_amount, rahist_rahead_id ) VALUES (_glDate, 'Receive Inventory Freight from ' || _ordertypeabbr, 'RR', _r.recv_id, _r.recv_freight_curr_id, _r.recv_freight, _ra.rahead_id ); UPDATE raitem SET raitem_qtyreceived = (raitem_qtyreceived + _r.recv_qty) WHERE (raitem_id=_o.orderitem_id); -- Expire date doesn't mean anything once the RA is received -- WARNING: INSERTING 'NULL' MIGHT CAUSE PROBLEMS!! UPDATE rahead SET rahead_expiredate = NULL WHERE (rahead_id=_o.orderhead_id); -- Look for 'ship' lines SELECT (count(*) > 0) INTO _ship FROM raitem WHERE ((raitem_disposition = 'S') AND (raitem_new_coitem_id IS NULL) AND (raitem_rahead_id=_ra.rahead_id)); -- If receiving a qty on a shippable and upon receipt item, create coitem IF ((_ra.rahead_timing='R') AND (_ship OR ( (_ra.raitem_disposition IN ('P','V')) AND (_ra.raitem_new_coitem_id IS NULL) AND (_ra.raitem_qtyauthorized > 0)))) THEN IF (_ra.rahead_new_cohead_id IS NOT NULL) THEN _coheadid = _ra.rahead_new_cohead_id; ELSE -- No header, so create a Sales Order header first. SELECT nextval('cohead_cohead_id_seq') INTO _coheadid; INSERT INTO cohead ( cohead_id,cohead_number,cohead_cust_id,cohead_custponumber, cohead_orderdate,cohead_salesrep_id,cohead_terms_id, cohead_shipvia,cohead_shipto_id,cohead_shiptoname, cohead_shiptoaddress1,cohead_shiptoaddress2,cohead_shiptoaddress3, cohead_shiptocity,cohead_shiptostate,cohead_shiptozipcode, cohead_shiptocountry,cohead_freight,cohead_shiptophone, cohead_shipto_cntct_id, cohead_shipto_cntct_honorific, cohead_shipto_cntct_first_name, cohead_shipto_cntct_middle, cohead_shipto_cntct_last_name, cohead_shipto_cntct_suffix, cohead_shipto_cntct_phone, cohead_shipto_cntct_title, cohead_shipto_cntct_fax, cohead_shipto_cntct_email, cohead_shipchrg_id, cohead_shipform_id,cohead_billtoname, cohead_billtoaddress1,cohead_billtoaddress2,cohead_billtoaddress3, cohead_billtocity,cohead_billtostate,cohead_billtozipcode, cohead_billtocountry,cohead_misc_accnt_id,cohead_misc_descrip, cohead_commission,cohead_holdtype,cohead_prj_id,cohead_shipcomplete, cohead_curr_id,cohead_taxzone_id,cohead_saletype_id,cohead_shipzone_id) SELECT _coheadid,fetchsonumber(),rahead_cust_id,rahead_custponumber, current_date,rahead_salesrep_id,COALESCE(cohead_terms_id,cust_terms_id), COALESCE(cohead_shipvia,cust_shipvia),rahead_shipto_id,rahead_shipto_name, rahead_shipto_address1,rahead_shipto_address2,rahead_shipto_address3, rahead_shipto_city,rahead_shipto_state,rahead_shipto_zipcode, rahead_shipto_country,0,COALESCE(cohead_shiptophone,''), cntct_id, cntct_honorific, cntct_first_name, cntct_middle, cntct_last_name, cntct_suffix, cntct_phone, cntct_title, cntct_fax, cntct_email, COALESCE(cohead_shipchrg_id,cust_shipchrg_id), COALESCE(cohead_shipform_id,cust_shipform_id), rahead_billtoname,rahead_billtoaddress1,rahead_billtoaddress2,rahead_billtoaddress3, rahead_billtocity,rahead_billtostate,rahead_billtozip, rahead_billtocountry,NULL,'',rahead_commission, 'N', rahead_prj_id, COALESCE(cohead_shipcomplete, CASE WHEN cust_partialship THEN false ELSE true END),rahead_curr_id,rahead_taxzone_id,rahead_saletype_id,rahead_shipzone_id FROM rahead JOIN custinfo ON (rahead_cust_id=cust_id) LEFT OUTER JOIN cohead ON (rahead_orig_cohead_id=cohead_id) LEFT OUTER JOIN shiptoinfo ON (rahead_shipto_id=shipto_id) LEFT OUTER JOIN cntct ON (shipto_cntct_id=cntct_id) WHERE (rahead_id=_ra.rahead_id); UPDATE rahead SET rahead_new_cohead_id=_coheadid WHERE rahead_id=_ra.rahead_id; END IF; -- Now enter the line item(s) IF (_ra.raitem_disposition IN ('P','V')) AND (_ra.raitem_new_coitem_id IS NULL) AND (_ra.raitem_qtyauthorized > 0) THEN SELECT nextval('coitem_coitem_id_seq') INTO _coitemid; SELECT COALESCE(MAX(coitem_linenumber),0)+1 INTO _linenumber FROM coitem WHERE (coitem_cohead_id=_coheadid); INSERT INTO coitem ( coitem_id,coitem_cohead_id,coitem_linenumber,coitem_itemsite_id, coitem_status,coitem_scheddate,coitem_promdate, coitem_qtyord, coitem_unitcost,coitem_price,coitem_custprice,coitem_qtyshipped, coitem_order_id,coitem_memo,coitem_qtyreturned, coitem_taxtype_id,coitem_qty_uom_id,coitem_qty_invuomratio, coitem_price_uom_id,coitem_price_invuomratio,coitem_warranty, coitem_cos_accnt_id,coitem_order_type, coitem_custpn) SELECT _coitemid,_coheadid,_linenumber,_ra.raitem_coitem_itemsite_id, 'O',_ra.raitem_scheddate,_ra.raitem_scheddate,_ra.raitem_qtyauthorized, stdcost(itemsite_item_id),COALESCE(_ra.raitem_saleprice,0),0,0, -1,_ra.raitem_notes,0, _ra.raitem_taxtype_id,_ra.raitem_qty_uom_id,_ra.raitem_qty_invuomratio, _ra.raitem_price_uom_id,_ra.raitem_price_invuomratio,_ra.raitem_warranty, _ra.raitem_cos_accnt_id, CASE WHEN itemsite_createwo THEN 'W' ELSE NULL END, _ra.raitem_custpn FROM itemsite WHERE (itemsite_id=_ra.raitem_coitem_itemsite_id); UPDATE raitem SET raitem_new_coitem_id=_coitemid WHERE (raitem_id=_ra.raitem_id); END IF; -- Create items to ship that have no direct relation to receipts. IF (_ship) THEN FOR _i IN SELECT raitem_id FROM raitem WHERE ((raitem_rahead_id=_ra.rahead_id) AND (raitem_disposition = 'S') AND (raitem_new_coitem_id IS NULL)) LOOP SELECT nextval('coitem_coitem_id_seq') INTO _coitemid; SELECT COALESCE(MAX(coitem_linenumber),0)+1 INTO _linenumber FROM coitem WHERE (coitem_cohead_id=_coheadid); INSERT INTO coitem ( coitem_id,coitem_cohead_id,coitem_linenumber,coitem_itemsite_id, coitem_status,coitem_scheddate,coitem_promdate, coitem_qtyord, coitem_unitcost,coitem_price,coitem_custprice,coitem_qtyshipped, coitem_order_id,coitem_memo,coitem_qtyreturned, coitem_taxtype_id,coitem_qty_uom_id,coitem_qty_invuomratio, coitem_price_uom_id,coitem_price_invuomratio,coitem_warranty, coitem_cos_accnt_id,coitem_order_type,coitem_custpn) SELECT _coitemid,_coheadid,_linenumber,raitem_coitem_itemsite_id, 'O',raitem_scheddate,raitem_scheddate,raitem_qtyauthorized, stdcost(itemsite_item_id),COALESCE(raitem_saleprice,0),0,0, -1,raitem_notes,0, raitem_taxtype_id,raitem_qty_uom_id,raitem_qty_invuomratio, raitem_price_uom_id,raitem_price_invuomratio,raitem_warranty, raitem_cos_accnt_id, CASE WHEN itemsite_createwo THEN 'W' ELSE NULL END,raitem_custpn FROM raitem JOIN itemsite ON (itemsite_id=raitem_itemsite_id) WHERE (raitem_id=_i.raitem_id); UPDATE raitem SET raitem_new_coitem_id=_coitemid WHERE (raitem_id=_i.raitem_id); END LOOP; END IF; END IF; ELSIF (_r.recv_order_type = 'TO' AND fetchMetricBool('MultiWhs')) THEN SELECT interWarehouseTransfer(toitem_item_id, tohead_trns_warehous_id, tohead_dest_warehous_id, _r.recv_qty, 'TO', formatToNumber(toitem_id), 'Receive from Transit To Dest Warehouse', _itemlocSeries, _glDate ) INTO _tmp FROM tohead, toitem WHERE ((tohead_id=toitem_tohead_id) AND (toitem_id=_r.recv_orderitem_id)); IF (_tmp < 0) THEN RETURN _tmp; END IF; SELECT insertGLTransaction(fetchJournalNumber('GL-MISC'), 'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Inventory Freight from ' || _o.orderhead_number || ' for item ' || _r.item_number, costcat_toliability_accnt_id, costcat_freight_accnt_id, -1, _r.recv_freight_base, _glDate::DATE, false ), costcat_freight_accnt_id INTO _tmp, _freightAccnt FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id) ); IF (_tmp < 0 AND _tmp != -3) THEN -- error but not 0-value transaction RETURN _tmp; ELSE -- Posting to trial balance is deferred to prevent locking INSERT INTO itemlocpost ( itemlocpost_glseq, itemlocpost_itemlocseries) VALUES ( _tmp, _itemlocSeries ); END IF; UPDATE toitem SET toitem_qty_received = (toitem_qty_received + _r.recv_qty), toitem_freight_received = (toitem_freight_received + currToCurr(_r.recv_freight_curr_id, toitem_freight_curr_id, _r.recv_freight, _glDate::DATE)) WHERE (toitem_id=_o.orderitem_id); END IF; IF(_r.itemsite_costmethod='A') THEN _recvvalue := ROUND((_o.item_unitprice_base * _r.recv_qty),2); ELSIF (fetchMetricBool('RecordPPVonReceipt')) THEN _recvvalue := ROUND((_o.item_unitprice_base * _r.recv_qty), 2); ELSE _recvvalue := ROUND(stdcost(_r.itemsite_item_id) * _recvinvqty, 2); END IF; END IF; UPDATE recv SET recv_value=_recvvalue, recv_recvcost=_recvvalue / recv_qty, recv_posted=TRUE, recv_gldistdate=_glDate::DATE WHERE (recv_id=precvid); IF (_r.recv_order_type = 'PO') THEN -- If this is a drop-shipped PO, then Issue the item to Shipping and Ship the item IF (_o.pohead_dropship = TRUE) THEN -- Generate the PoItemDropShipped event INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'P', _o.orderitem_id, evntnot_warehous_id, (pohead_number || '-' || poitem_linenumber || ': ' || item_number) FROM evntnot JOIN evnttype ON (evntnot_evnttype_id = evnttype_id) JOIN itemsite ON (evntnot_warehous_id = itemsite_warehous_id) JOIN item ON (itemsite_item_id = item_id) JOIN poitem ON (poitem_itemsite_id = itemsite_id) JOIN pohead ON (poitem_pohead_id = pohead_id) WHERE( (poitem_id = _o.orderitem_id) AND (poitem_duedate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name = 'PoItemDropShipped') ); END IF; END IF; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.postreceipt(integer, integer) OWNER TO admin; -- -- Name: postreceipts(text, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postreceipts(text, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; porderid ALIAS FOR $2; _itemlocSeries INTEGER := $3; _qtyToRecv NUMERIC; _r RECORD; BEGIN SELECT SUM(qtyToReceive(pordertype, recv_orderitem_id)) INTO _qtyToRecv FROM recv, orderitem WHERE ((recv_orderitem_id=orderitem_id) AND (recv_order_type=pordertype) AND (orderitem_orderhead_type=pordertype) AND (orderitem_orderhead_id=porderid)); IF (_qtyToRecv <= 0) THEN RETURN -11; END IF; IF (_itemlocSeries IS NULL OR _itemlocSeries <= 0) THEN _itemlocSeries := NEXTVAL('itemloc_series_seq'); END IF; FOR _r IN SELECT postReceipt(recv_id, _itemlocSeries) AS postResult FROM recv, orderitem WHERE ((recv_orderitem_id=orderitem_id) AND (orderitem_orderhead_id=porderid) AND (orderitem_orderhead_type=pordertype) AND (NOT recv_posted) -- Check for multiple users receiving the same order AND (recv_trans_usr_name=getEffectiveXtUser()) AND (recv_order_type=pordertype)) LOOP IF (_r.postResult < 0 AND _r.postResult != -11) THEN RETURN _r.postResult; -- fail on 1st error but ignore lines with qty == 0 END IF; END LOOP; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.postreceipts(text, integer, integer) OWNER TO admin; -- -- Name: postsogltransactions(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postsogltransactions() RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN UPDATE gltrans SET gltrans_exported=TRUE WHERE ( (NOT gltrans_exported) AND (gltrans_source='A/R') AND (gltrans_doctype IN ('IN', 'CM')) ); RETURN TRUE; END; $$; ALTER FUNCTION public.postsogltransactions() OWNER TO admin; -- -- Name: postsoitemproduction(integer, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postsoitemproduction(integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoitemId ALIAS FOR $1; pGlDistTS ALIAS FOR $2; _qty NUMERIC; BEGIN -- Issuing all, so determine line balance SELECT noNeg( coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned - ( SELECT COALESCE(SUM(shipitem_qty), 0) FROM shipitem, shiphead WHERE ((shipitem_orderitem_id=coitem_id) AND (shipitem_shiphead_id=shiphead_id) AND (NOT shiphead_shipped) ) ) ) INTO _qty FROM coitem WHERE (coitem_id=pSoitemId); RETURN postSoItemProduction($1, _qty, $2); END; $_$; ALTER FUNCTION public.postsoitemproduction(integer, timestamp with time zone) OWNER TO admin; -- -- Name: postsoitemproduction(integer, numeric, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postsoitemproduction(integer, numeric, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoitemId ALIAS FOR $1; pQty ALIAS FOR $2; pGlDistTS ALIAS FOR $3; _itemlocSeries INTEGER := 0; BEGIN --If this cost method is not Job then we are using the wrong function IF (NOT EXISTS(SELECT itemsite_costmethod FROM coitem,itemsite WHERE ((coitem_id=pSoitemId) AND (coitem_itemsite_id=itemsite_id) AND (itemsite_costmethod = 'J')))) THEN RAISE EXCEPTION 'The postSoLineBalanceProduction function may only be used with Job costed item sites'; END IF; IF (pQty > 0) THEN SELECT COALESCE(postProduction(wo_id, (pQty * coitem_qty_invuomratio), true, 0, pGlDistTS),-1) INTO _itemlocSeries FROM wo, coitem WHERE ((wo_ordid=pSoItemid) AND (wo_ordtype='S') AND (coitem_id=pSoItemid)); UPDATE wo SET wo_status = 'C' WHERE ((wo_ordid=pSoItemid) AND (wo_ordtype='S') AND (wo_qtyrcv >= wo_qtyord)); END IF; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.postsoitemproduction(integer, numeric, timestamp with time zone) OWNER TO admin; -- -- Name: poststandardjournal(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION poststandardjournal(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStdjrnlid ALIAS FOR $1; pDate ALIAS FOR $2; _returnValue INTEGER; BEGIN SELECT postStandardJournal(pStdjrnlid, pDate, FALSE, fetchGLSequence()) INTO _returnValue; RETURN _returnValue; END; $_$; ALTER FUNCTION public.poststandardjournal(integer, date) OWNER TO admin; -- -- Name: poststandardjournal(integer, date, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION poststandardjournal(integer, date, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStdjrnlid ALIAS FOR $1; pDate ALIAS FOR $2; pGlSequence ALIAS FOR $3; BEGIN RETURN postStandardJournal(pStdjrnlid, pDate, FALSE, pGLSequence); END; $_$; ALTER FUNCTION public.poststandardjournal(integer, date, integer) OWNER TO admin; -- -- Name: poststandardjournal(integer, date, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION poststandardjournal(integer, date, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStdjrnlid ALIAS FOR $1; pDate ALIAS FOR $2; pReverse ALIAS FOR $3; _returnValue INTEGER; BEGIN RETURN postStandardJournal(pStdjrnlid, pDate, pReverse, fetchGLSequence()); END; $_$; ALTER FUNCTION public.poststandardjournal(integer, date, boolean) OWNER TO admin; -- -- Name: poststandardjournal(integer, date, boolean, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION poststandardjournal(integer, date, boolean, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStdjrnlid ALIAS FOR $1; pDate ALIAS FOR $2; pReverse ALIAS FOR $3; pGlSequence ALIAS FOR $4; BEGIN INSERT INTO glseries ( glseries_sequence, glseries_source, glseries_doctype, glseries_docnumber, glseries_notes, glseries_accnt_id, glseries_amount, glseries_distdate ) SELECT pGlSequence, 'G/L', 'ST', stdjrnl_name, stdjrnlitem_notes, stdjrnlitem_accnt_id, CASE WHEN (pReverse=TRUE) THEN (stdjrnlitem_amount * -1) ELSE stdjrnlitem_amount END, pDate FROM stdjrnlitem, stdjrnl WHERE ( (stdjrnlitem_stdjrnl_id=stdjrnl_id) AND (stdjrnl_id=pStdjrnlid) ); RETURN pGlSequence; END; $_$; ALTER FUNCTION public.poststandardjournal(integer, date, boolean, integer) OWNER TO admin; -- -- Name: poststandardjournalgroup(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION poststandardjournalgroup(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStdjrnlgrpid ALIAS FOR $1; pDate ALIAS FOR $2; BEGIN RETURN postStandardJournalGroup(pStdjrnlgrpid, pDate, FALSE); END; $_$; ALTER FUNCTION public.poststandardjournalgroup(integer, date) OWNER TO admin; -- -- Name: poststandardjournalgroup(integer, date, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION poststandardjournalgroup(integer, date, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStdjrnlgrpid ALIAS FOR $1; pDate ALIAS FOR $2; pReverse ALIAS FOR $3; _r RECORD; _glSequence INTEGER := -1; BEGIN FOR _r IN SELECT stdjrnlgrpitem_id, stdjrnlgrpitem_stdjrnl_id FROM stdjrnlgrpitem WHERE ( (stdjrnlgrpitem_stdjrnlgrp_id=pStdjrnlgrpid) AND (CURRENT_DATE BETWEEN stdjrnlgrpitem_effective AND (stdjrnlgrpitem_expires - 1)) AND ( (stdjrnlgrpitem_toapply = -1) OR (stdjrnlgrpitem_toapply > stdjrnlgrpitem_applied) ) ) LOOP IF (_glSequence = -1) THEN SELECT fetchGLSequence() INTO _glSequence; END IF; PERFORM postStandardJournal(_r.stdjrnlgrpitem_stdjrnl_id, pDate, pReverse, _glSequence); UPDATE stdjrnlgrpitem SET stdjrnlgrpitem_applied=(stdjrnlgrpitem_applied + 1) WHERE (stdjrnlgrpitem_id=_r.stdjrnlgrpitem_id); END LOOP; RETURN _glSequence; END; $_$; ALTER FUNCTION public.poststandardjournalgroup(integer, date, boolean) OWNER TO admin; -- -- Name: postvalueintoinvbalance(integer, date, numeric, numeric, numeric, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postvalueintoinvbalance(integer, date, numeric, numeric, numeric, numeric) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteId ALIAS FOR $1; pDate ALIAS FOR $2; pQoh ALIAS FOR $3; pNn ALIAS FOR $4; pOldCost ALIAS FOR $5; pNewCost ALIAS FOR $6; _invbalid INTEGER; _r RECORD; _count INTEGER; _valChange NUMERIC; _nnvalChange NUMERIC; BEGIN -- Grab the costhist record to post SELECT period_id INTO _r FROM period WHERE (pDate BETWEEN period_start AND period_end); GET DIAGNOSTICS _count = ROW_COUNT; -- Find an inventory balance to post into IF ( _count > 0 ) THEN -- Try to find an existing invbal SELECT invbal_id INTO _invbalid FROM invbal WHERE ( (invbal_period_id=_r.period_id) AND (invbal_itemsite_id=pItemsiteId) ); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count = 0) THEN -- Wasn't there, so forward update PERFORM forwardUpdateItemsite(pItemsiteId); -- Try to find an existing invbal again SELECT invbal_id INTO _invbalid FROM invbal WHERE ( (invbal_period_id=_r.period_id) AND (invbal_itemsite_id=pItemsiteId) ); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count = 0) THEN RAISE EXCEPTION 'An inventory balance record was not found for updating standard costs'; END IF; END IF; _valChange := round((pNewCost - pOldCost) * pQoh, 2); _nnvalChange := round((pNewCost - pOldCost) * pNn, 2); -- We found an invbal, update it with the change IF (_valChange > 0) THEN UPDATE invbal SET invbal_value_in = (invbal_value_in + _valChange) WHERE (invbal_id=_invbalid); ELSE UPDATE invbal SET invbal_value_out = (invbal_value_out - _valChange) WHERE (invbal_id=_invbalid); END IF; IF (_nnvalChange > 0) THEN UPDATE invbal SET invbal_nnval_in = (invbal_nnval_in + _nnvalChange) WHERE (invbal_id=_invbalid); ELSE UPDATE invbal SET invbal_nnval_out = (invbal_nnval_out - _nnvalChange) WHERE (invbal_id=_invbalid); END IF; UPDATE invbal SET invbal_value_ending = (invbal_value_beginning + invbal_value_in - invbal_value_out), invbal_nnval_ending = (invbal_nnval_beginning + invbal_nnval_in - invbal_nnval_out), invbal_dirty=true WHERE (invbal_id=_invbalid); ELSE RAISE EXCEPTION 'No period exists for date %.', pDate; END IF; RETURN TRUE; END; $_$; ALTER FUNCTION public.postvalueintoinvbalance(integer, date, numeric, numeric, numeric, numeric) OWNER TO admin; -- -- Name: postvoucher(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postvoucher(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVoheadid ALIAS FOR $1; pPostCosts ALIAS FOR $2; BEGIN RETURN postVoucher(pVoheadid, fetchJournalNumber('AP-VO'), pPostCosts); END; $_$; ALTER FUNCTION public.postvoucher(integer, boolean) OWNER TO admin; -- -- Name: postvoucher(integer, integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postvoucher(integer, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVoheadid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pPostCosts ALIAS FOR $3; _sequence INTEGER; _totalAmount_base NUMERIC; _totalAmount NUMERIC; _itemAmount_base NUMERIC; _itemAmount NUMERIC; _totalDiscountableAmount NUMERIC; _test INTEGER; _a RECORD; _d RECORD; _g RECORD; _p RECORD; _r RECORD; _costx RECORD; _pPostCosts BOOLEAN; _pExplain BOOLEAN; _pLowLevel BOOLEAN; _exchGainFreight NUMERIC; _taxBaseValue NUMERIC; _firstExchDateFreight DATE; _tmpTotal NUMERIC; _glDate DATE; BEGIN RAISE DEBUG 'postVoucher(%, %, %)', pVoheadid, pJournalNumber, pPostCosts; _pPostCosts := TRUE; _totalAmount_base := 0; _totalAmount := 0; _totalDiscountableAmount := 0; SELECT fetchGLSequence() INTO _sequence; -- Cache Voucher Infomation SELECT vohead.*, vend_number || '-' || vend_name || ' ' || vohead_reference AS glnotes, COALESCE(pohead_orderdate, vohead_docdate) AS pohead_orderdate, COALESCE(pohead_curr_id, vohead_curr_id) AS pohead_curr_id INTO _p FROM vendinfo, vohead LEFT OUTER JOIN pohead ON (vohead_pohead_id = pohead_id) WHERE ( (vohead_id=pVoheadid) AND (vend_id=vohead_vend_id) ) FOR UPDATE OF vohead; IF (_p.vohead_posted) THEN RAISE EXCEPTION 'Cannot post Voucher #% as it is already posted [xtuple: postVoucher, -10, %]', _p.vohead_number, _p.vohead_number; END IF; _glDate := COALESCE(_p.vohead_gldistdate, _p.vohead_distdate); -- If the vohead_distdate is NULL, assume that this is a NULL vohead and quietly delete it IF (_p.vohead_distdate IS NULL) THEN DELETE FROM vohead WHERE vohead_id = pVoheadid; RETURN 0; END IF; IF (_p.vohead_amount <= 0) THEN RAISE EXCEPTION 'Cannot Post Voucher #% for a negative or zero amount (%) [xtuple: postVoucher, -1, %, %]', _p.vohead_number, _p.vohead_amount, _p.vohead_number, _p.vohead_amount; END IF; -- there is no currency gain/loss on items, see issue 3892, -- but there might be on freight, which is first encountered at p/o receipt SELECT recv_date::DATE INTO _firstExchDateFreight FROM recv WHERE (recv_vohead_id = pVoheadid); SELECT round(SUM(amount),4) INTO _tmpTotal FROM ( SELECT SUM(vodist_amount) AS amount FROM vodist WHERE ( (vodist_vohead_id=pVoheadid) AND (vodist_tax_id=-1) ) UNION ALL SELECT SUM(voitem_freight) AS amount FROM voitem WHERE (voitem_vohead_id=pVoheadid) UNION ALL SELECT SUM(tax*-1) FROM (SELECT round(sum(taxdetail_tax),2) AS tax, currToBase(_p.vohead_curr_id, round(sum(taxdetail_tax),2), _p.vohead_docdate) AS taxbasevalue FROM tax JOIN calculateTaxDetailSummary('VO', pVoheadid, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id, tax_sales_accnt_id ) AS taxdata ) AS data; IF (_tmpTotal IS NULL OR _tmpTotal <= 0) THEN RAISE EXCEPTION 'Cannot Post Voucher #% with negative or zero distributions (%) [xtuple: postVoucher, -2, %, %]', _p.vohead_number, _tmpTotal, _p.vohead_number, _tmpTotal; END IF; IF (_tmpTotal > _p.vohead_amount) THEN RAISE EXCEPTION 'Cannot Post Voucher #% with distributions greater than the voucher amount (% > %) [xtuple: postVoucher, -3, %, %, %]', _p.vohead_number, _tmpTotal, _p.vohead_amount, _p.vohead_number, _tmpTotal, _p.vohead_amount; END IF; IF (_tmpTotal < _p.vohead_amount) THEN RAISE EXCEPTION 'Cannot Post Voucher #% with distributions less than the voucher amount (% < %) [xtuple: postVoucher, -4, %, %, %]', _p.vohead_number, _tmpTotal, _p.vohead_amount, _p.vohead_number, _tmpTotal, _p.vohead_amount; END IF; SELECT DISTINCT poitem_linenumber INTO _test FROM vodist, voitem, poitem WHERE ( (vodist_poitem_id=poitem_id) AND (voitem_poitem_id=poitem_id) AND (voitem_vohead_id=vodist_vohead_id) AND ((poitem_qty_received - poitem_qty_vouchered) = 0) AND (vodist_vohead_id=pVoheadid) ) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Cannot Post Voucher #% as one or more of the line items have already been fully vouchered. Check P/O Line #% [postVoucher, -6, %, %]', _p.vohead_number, _test, _p.vohead_number, _test; END IF; -- Start by handling taxes FOR _r IN SELECT tax_sales_accnt_id, round(sum(taxdetail_tax),2) AS tax, currToBase(_p.vohead_curr_id, round(sum(taxdetail_tax),2), _p.vohead_docdate) AS taxbasevalue FROM tax JOIN calculateTaxDetailSummary('VO', pVoheadid, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id, tax_sales_accnt_id LOOP PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', _p.vohead_number, _r.tax_sales_accnt_id, _r.taxbasevalue, _glDate, _p.glnotes ); RAISE DEBUG 'postVoucher: _r.tax=%', _r.tax; _totalAmount_base := (_totalAmount_base - _r.taxbasevalue); _totalAmount := (_totalAmount - _r.tax); END LOOP; -- Update item tax records with posting data UPDATE voitemtax SET taxhist_docdate=_p.vohead_docdate, taxhist_distdate=_glDate, taxhist_curr_id=_p.vohead_curr_id, taxhist_curr_rate=curr_rate, taxhist_journalnumber=pJournalNumber FROM vohead JOIN voitem ON (vohead_id=voitem_vohead_id), curr_rate WHERE ((vohead_id=pVoheadId) AND (taxhist_parent_id=voitem_id) AND (_p.vohead_curr_id=curr_id) AND (_p.vohead_docdate BETWEEN curr_effective AND curr_expires) ); -- Update Misc distributions with posting data UPDATE voheadtax SET taxhist_docdate=_p.vohead_docdate, taxhist_distdate=_glDate, taxhist_curr_id=_p.vohead_curr_id, taxhist_curr_rate=curr_rate, taxhist_journalnumber=pJournalNumber FROM curr_rate WHERE ((taxhist_parent_id=pVoheadid) AND (_p.vohead_curr_id=curr_id) AND (_p.vohead_docdate BETWEEN curr_effective AND curr_expires) ); -- Loop through the vodist records for the passed vohead that -- are posted against a P/O Item FOR _g IN SELECT DISTINCT poitem_id, voitem_id, voitem_qty, poitem_expcat_id, poitem_invvenduomratio, poitem_prj_id, COALESCE(itemsite_id, -1) AS itemsiteid, COALESCE(itemsite_costcat_id, -1) AS costcatid, COALESCE(itemsite_item_id, -1) AS itemsite_item_id, (SELECT SUM(value) FROM ( SELECT SUM(recv_value) AS value FROM recv WHERE (recv_voitem_id=voitem_id) UNION SELECT SUM(poreject_value)*-1 AS value FROM poreject WHERE (poreject_voitem_id=voitem_id)) as data) AS value_base, (poitem_freight_received - poitem_freight_vouchered) / (poitem_qty_received - poitem_qty_vouchered) * voitem_qty AS vouchered_freight, currToBase(_p.pohead_curr_id, (poitem_freight_received - poitem_freight_vouchered) / (poitem_qty_received - poitem_qty_vouchered) * voitem_qty, _firstExchDateFreight ) AS vouchered_freight_base, voitem_freight, currToBase(_p.vohead_curr_id, voitem_freight, _p.vohead_distdate) AS voitem_freight_base FROM vodist, voitem, poitem LEFT OUTER JOIN itemsite ON (poitem_itemsite_id=itemsite_id) WHERE ( (vodist_poitem_id=poitem_id) AND (voitem_poitem_id=poitem_id) AND (voitem_vohead_id=vodist_vohead_id) AND (vodist_vohead_id=pVoheadid)) LOOP -- Grab the G/L Accounts IF (_g.costcatid = -1) THEN SELECT getPrjAccntId(_g.poitem_prj_id, pp.accnt_id) AS pp_accnt_id, lb.accnt_id AS lb_accnt_id, fr.accnt_id AS freight_accnt_id INTO _a FROM expcat, accnt AS pp, accnt AS lb, accnt AS fr WHERE ( (expcat_purchprice_accnt_id=pp.accnt_id) AND (expcat_liability_accnt_id=lb.accnt_id) AND (expcat_freight_accnt_id=fr.accnt_id) AND (expcat_id=_g.poitem_expcat_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Post Voucher #% due to unassigned G/L Accounts [xtuple: postVoucher, -7, %]', _p.vohead_number, _p.vohead_number; END IF; ELSE SELECT getPrjAccntId(_g.poitem_prj_id, costcat_purchprice_accnt_id) AS pp_accnt_id, getPrjAccntId(_g.poitem_prj_id, costcat_liability_accnt_id) AS lb_accnt_id, getPrjAccntId(_g.poitem_prj_id, costcat_freight_accnt_id) AS freight_accnt_id INTO _a FROM costcat WHERE (costcat_id=_g.costcatid); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Post Voucher #% due to unassigned G/L Accounts [xtuple: postVoucher, -8, %]', _p.vohead_number, _p.vohead_number; END IF; END IF; -- Clear the Item Amount accumulator _itemAmount_base := 0; _itemAmount := 0; -- Figure out the total posted value for this line item FOR _d IN SELECT vodist_id, vodist_amount, vodist_discountable, _p.vohead_curr_id, vodist_costelem_id, currToBase(_p.vohead_curr_id, vodist_amount, _p.vohead_distdate) AS vodist_amount_base FROM vodist WHERE ( (vodist_vohead_id=pVoheadid) AND (vodist_poitem_id=_g.poitem_id) ) LOOP _pExplain := FALSE; SELECT * INTO _costx FROM itemcost WHERE ( (itemcost_item_id = _g.itemsite_item_id) AND (itemcost_costelem_id = _d.vodist_costelem_id) ); IF (FOUND) THEN _pExplain := _costx.itemcost_lowlevel; END IF; -- Post the cost to the Actual if requested -- IF ( (pPostCosts) AND (_d.vodist_costelem_id <> -1) ) THEN IF ( (_d.vodist_costelem_id <> -1) AND (_g.itemsite_item_id <> -1) ) THEN PERFORM updateCost( _g.itemsite_item_id, _d.vodist_costelem_id, _pExplain, (_d.vodist_amount / (_g.voitem_qty * _g.poitem_invvenduomratio)), _p.vohead_curr_id ); END IF; -- Add the Distribution Amount to the Item Amount RAISE DEBUG 'postVoucher: _d.vodist_amount=%', _d.vodist_amount; _itemAmount_base := _itemAmount_base + ROUND(_d.vodist_amount_base, 2); _itemAmount := _itemAmount + _d.vodist_amount; IF (_d.vodist_discountable) THEN _totalDiscountableAmount := (_totalDiscountableAmount + _d.vodist_amount); END IF; END LOOP; -- Distribute from the clearing account PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), _a.lb_accnt_id, round(_g.value_base + _g.vouchered_freight_base, 2) * -1, _glDate, _p.glnotes ); -- Attribute the correct portion to currency gain/loss _exchGainFreight := 0; SELECT currGain(_p.pohead_curr_id, _g.vouchered_freight, _firstExchDateFreight, _p.vohead_distdate ) INTO _exchGainFreight; IF (round(_exchGainFreight, 2) <> 0) THEN PERFORM insertIntoGLSeries(_sequence, 'A/P', 'VO', text(_p.vohead_number), getGainLossAccntId(_a.lb_accnt_id), round(_exchGainFreight, 2), _glDate, _p.glnotes); END IF; -- Distribute the remaining variance to the Purchase Price Variance account IF (round(_itemAmount_base, 2) <> round(_g.value_base, 2)) THEN _tmpTotal := round(_itemAmount_base, 2) - round(_g.value_base, 2); PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), _a.pp_accnt_id, _tmpTotal * -1, _glDate, _p.glnotes ); END IF; -- Distribute the remaining freight variance to the Purchase Price Variance account IF (round(_g.voitem_freight_base + _exchGainFreight, 2) <> round(_g.vouchered_freight_base, 2)) THEN _tmpTotal := round(_g.voitem_freight_base + _exchGainFreight, 2) - round(_g.vouchered_freight_base, 2); PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), _a.freight_accnt_id, _tmpTotal * -1, _glDate, _p.glnotes ); END IF; -- Add the distribution amount to the total amount to distribute RAISE DEBUG 'postVoucher: _itemAmount=%', _itemAmount; _totalAmount_base := (_totalAmount_base + _itemAmount_base + _g.voitem_freight_base); _totalAmount := (_totalAmount + _itemAmount + _g.voitem_freight); -- Post all the Tagged Receivings for this P/O Item as Invoiced and -- record the purchase and receive costs -- Comment out because recv cost is set at receiving now. UPDATE recv SET recv_invoiced=TRUE, recv_recvcost_curr_id=basecurrid(), recv_recvcost=round(_g.value_base / _g.voitem_qty, 2) FROM poitem WHERE ((recv_orderitem_id=poitem_id) AND (recv_order_type='PO') AND (recv_orderitem_id=_g.poitem_id) AND (recv_vohead_id=pVoheadid) ); -- Post all the Tagged Rejections for this P/O Item as Invoiced UPDATE poreject SET poreject_invoiced=TRUE WHERE ( (poreject_poitem_id=_g.poitem_id) AND (poreject_vohead_id=pVoheadid) ); -- Update the qty and freight vouchered fields UPDATE poitem SET poitem_qty_vouchered = (poitem_qty_vouchered + _g.voitem_qty), poitem_freight_vouchered = (poitem_freight_vouchered + _g.vouchered_freight) WHERE (poitem_id=_g.poitem_id); END LOOP; -- Loop through the vodist records for the passed vohead that -- are not posted against a P/O Item -- Skip the tax distributions FOR _d IN SELECT vodist_id, vodist_discountable, currToBase(_p.vohead_curr_id, vodist_amount, _p.vohead_distdate) AS vodist_amount_base, vodist_amount, vodist_accnt_id, vodist_expcat_id FROM vodist WHERE ( (vodist_vohead_id=pVoheadid) AND (vodist_poitem_id=-1) AND (vodist_tax_id=-1) ) LOOP -- Distribute from the misc. account IF (_d.vodist_accnt_id = -1) THEN PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), expcat_exp_accnt_id, round(_d.vodist_amount_base, 2) * -1, _glDate, _p.glnotes ) FROM expcat WHERE (expcat_id=_d.vodist_expcat_id); ELSE PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), _d.vodist_accnt_id, round(_d.vodist_amount_base, 2) * -1, _glDate, _p.glnotes ); END IF; -- Add the Distribution Amount to the Total Amount RAISE DEBUG 'postVoucher: _d.vodist_amount=%', _d.vodist_amount; _totalAmount_base := _totalAmount_base + ROUND(_d.vodist_amount_base, 2); _totalAmount := _totalAmount + _d.vodist_amount; IF (_d.vodist_discountable) THEN _totalDiscountableAmount := (_totalDiscountableAmount + _d.vodist_amount); END IF; END LOOP; SELECT insertIntoGLSeries( _sequence, 'A/P', 'VO', text(vohead_number), accnt_id, round(_totalAmount_base, 2), _glDate, _p.glnotes ) INTO _test FROM vohead LEFT OUTER JOIN accnt ON (accnt_id=findAPAccount(vohead_vend_id)) WHERE ( (findAPAccount(vohead_vend_id)=0 OR accnt_id > 0) -- G/L interface might be disabled AND (vohead_id=pVoheadid) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Post Voucher #% due to an unassigned A/P Account [xtuple: postVoucher, -9, %]', _p.vohead_number, _p.vohead_number; END IF; PERFORM postGLSeries(_sequence, pJournalNumber); -- Create the A/P Open Item RAISE DEBUG 'postVoucher: _totalAmount=%, _totalDiscountableAmount=%', _totalAmount, _totalDiscountableAmount; INSERT INTO apopen ( apopen_journalnumber, apopen_docdate, apopen_duedate, apopen_distdate, apopen_open, apopen_terms_id, apopen_vend_id, apopen_doctype, apopen_docnumber, apopen_invcnumber, apopen_ponumber, apopen_reference, apopen_amount, apopen_paid, apopen_notes, apopen_username, apopen_posted, apopen_curr_id, apopen_discountable_amount ) -- TODO: SELECT pJournalNumber, vohead_docdate, vohead_duedate, _glDate, TRUE, vohead_terms_id, vohead_vend_id, 'V', vohead_number, vohead_invcnumber, COALESCE(TEXT(pohead_number), 'Misc.'), vohead_reference, round(_totalAmount, 2), 0, '', getEffectiveXtUser(), FALSE, vohead_curr_id, round(_totalDiscountableAmount, 2) FROM vohead LEFT OUTER JOIN pohead ON (vohead_pohead_id=pohead_id) WHERE (vohead_id=pVoheadid); -- Close all of the P/O Items that should be closed by this Voucher UPDATE poitem SET poitem_status='C' FROM voitem WHERE ( (voitem_poitem_id=poitem_id) AND (voitem_close) AND (voitem_vohead_id=pVoheadid) ); -- Check the P/O items and if they are all closed go ahead -- and close the P/O head. IF ( (SELECT (count(*) < 1) FROM vohead, poitem WHERE ((vohead_pohead_id=poitem_pohead_id) AND (poitem_status<>'C') AND (vohead_id=pVoheadid) ) ) ) THEN PERFORM closePo(vohead_pohead_id) FROM vohead WHERE (vohead_id=pVoheadid); END IF; -- Set the vohead as posted UPDATE vohead SET vohead_posted=TRUE, vohead_gldistdate=_glDate WHERE (vohead_id=pVoheadid); RETURN pJournalNumber; END; $_$; ALTER FUNCTION public.postvoucher(integer, integer, boolean) OWNER TO admin; -- -- Name: postvouchers(boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION postvouchers(boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPostCosts ALIAS FOR $1; _journalNumber INTEGER; BEGIN SELECT fetchJournalNumber('AP-VO') INTO _journalNumber; PERFORM postVoucher(vohead_id, _journalNumber, pPostCosts) FROM vohead WHERE (NOT vohead_posted); RETURN _journalNumber; END; $_$; ALTER FUNCTION public.postvouchers(boolean) OWNER TO admin; -- -- Name: primarykeyfields(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION primarykeyfields(text, text) RETURNS text[] LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSchema ALIAS FOR $1; pRelation ALIAS FOR $2; _colname TEXT; _counter INTEGER := 0; _result TEXT[]; BEGIN EXECUTE 'SELECT ARRAY(SELECT attname FROM pg_attribute JOIN pg_class idx ON (attrelid = idx.oid) JOIN pg_namespace ON (idx.relnamespace = pg_namespace.oid) JOIN pg_index ON (idx.oid = indexrelid) JOIN pg_class tab ON (indrelid = tab.oid) WHERE NOT attisdropped AND nspname = ''' || pSchema || ''' AND indisprimary AND LOWER(tab.relname) = ''' || pRelation || ''' ORDER BY attnum);' INTO _result; RETURN _result; END; $_$; ALTER FUNCTION public.primarykeyfields(text, text) OWNER TO admin; -- -- Name: FUNCTION primarykeyfields(text, text); Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON FUNCTION primarykeyfields(text, text) IS 'Return an array containing the names of the primary key fields of pSchema.pRelation. The first key field is in _result[1].'; -- -- Name: prj(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION prj() RETURNS SETOF prj LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row prj%ROWTYPE; _priv TEXT; _grant BOOLEAN; BEGIN -- This query will give us the most permissive privilege the user has been granted SELECT privilege, granted INTO _priv, _grant FROM privgranted WHERE privilege IN ('MaintainAllProjects','ViewAllProjects','MaintainPersonalProjects','ViewPersonalProjects') ORDER BY granted DESC, sequence LIMIT 1; -- If have an 'All' privilege return all results IF (_priv ~ 'All' AND _grant) THEN FOR _row IN SELECT * FROM prj LOOP RETURN NEXT _row; END LOOP; -- Otherwise if have any other grant, must be personal privilege. ELSIF (_grant) THEN FOR _row IN SELECT * FROM prj WHERE getEffectiveXtUser() IN (prj_owner_username, prj_username) LOOP RETURN NEXT _row; END LOOP; END IF; RETURN; END; $$; ALTER FUNCTION public.prj() OWNER TO admin; -- -- Name: FUNCTION prj(); Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON FUNCTION prj() IS 'A table function that returns Project results according to privilege settings.'; -- -- Name: prjtask; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE prjtask ( prjtask_id integer NOT NULL, prjtask_number text NOT NULL, prjtask_name text NOT NULL, prjtask_descrip text, prjtask_prj_id integer NOT NULL, prjtask_anyuser boolean, prjtask_status character(1) NOT NULL, prjtask_hours_budget numeric(18,6) NOT NULL, prjtask_hours_actual numeric(18,6) NOT NULL, prjtask_exp_budget numeric(16,4) NOT NULL, prjtask_exp_actual numeric(16,4) NOT NULL, prjtask_owner_username text, prjtask_start_date date, prjtask_due_date date, prjtask_assigned_date date, prjtask_completed_date date, prjtask_username text, CONSTRAINT prjtask_prjtask_status_check CHECK ((prjtask_status = ANY (ARRAY['P'::bpchar, 'O'::bpchar, 'C'::bpchar]))) ); ALTER TABLE public.prjtask OWNER TO admin; -- -- Name: TABLE prjtask; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE prjtask IS 'Project Task information'; -- -- Name: prjtask(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION prjtask() RETURNS SETOF prjtask LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row prjtask%ROWTYPE; _priv TEXT; _grant BOOLEAN; BEGIN -- This query will give us the most permissive privilege the user has been granted SELECT privilege, granted INTO _priv, _grant FROM privgranted WHERE privilege IN ('MaintainAllProjects','ViewAllProjects','MaintainPersonalProjects','ViewPersonalProjects') ORDER BY granted DESC, sequence LIMIT 1; -- If have an 'All' privilege return all results IF (_priv ~ 'All' AND _grant) THEN FOR _row IN SELECT * FROM prjtask LOOP RETURN NEXT _row; END LOOP; -- Otherwise if have any other grant, must be personal privilege. ELSIF (_grant) THEN FOR _row IN SELECT prjtask.* FROM prjtask JOIN prj ON prj_id=prjtask_prj_id WHERE getEffectiveXtUser() IN (prjtask_owner_username,prjtask_username,prj_username,prj_owner_username) LOOP RETURN NEXT _row; END LOOP; END IF; RETURN; END; $$; ALTER FUNCTION public.prjtask() OWNER TO admin; -- -- Name: FUNCTION prjtask(); Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON FUNCTION prjtask() IS 'A table function that returns Project results according to privilege settings.'; -- -- Name: purgecreditmemos(date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION purgecreditmemos(date) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCutoffDate ALIAS FOR $1; BEGIN DELETE FROM cmitem WHERE (cmitem_id IN ( SELECT cmitem_id FROM cmitem, cmhead WHERE ( (cmitem_cmhead_id=cmhead_id) AND (cmhead_posted) AND (cmhead_printed) AND (cmhead_docdate<=pCutoffDate) AND (checkCreditMemoSitePrivs(cmhead_id)) ) ) ); DELETE FROM cmhead WHERE ( (cmhead_posted) AND (cmhead_printed) AND (cmhead_docdate<=pCutoffDate) AND (checkCreditMemoSitePrivs(cmhead_id)) ); RETURN TRUE; END; $_$; ALTER FUNCTION public.purgecreditmemos(date) OWNER TO admin; -- -- Name: purgecrmacctmerge(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION purgecrmacctmerge(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pDestid ALIAS FOR $1; _result INTEGER := 0; _tmpcount INTEGER := 0; BEGIN IF EXISTS(SELECT 1 FROM crmacctsel WHERE crmacctsel_dest_crmacct_id=pDestid) THEN DELETE FROM crmacctsel WHERE crmacctsel_dest_crmacct_id = pDestid; GET DIAGNOSTICS _result = ROW_COUNT; ELSIF EXISTS(SELECT 1 FROM mrgundo WHERE mrgundo_base_schema='public' AND mrgundo_base_table='crmacct' AND mrgundo_base_id=pDestid) THEN DELETE FROM crmacct WHERE crmacct_id IN ( SELECT mrgundo_pkey_id FROM mrgundo WHERE mrgundo_schema = 'public' AND mrgundo_table = 'crmacct' and mrgundo_pkey_col = 'crmacct_id' AND mrgundo_col IS NULL AND mrgundo_base_schema = 'public' AND mrgundo_base_table = 'crmacct' AND mrgundo_base_id = pDestid) AND crmacct_id != pDestid; GET DIAGNOSTICS _result = ROW_COUNT; DELETE FROM mrgundo WHERE mrgundo_base_schema ='public' AND mrgundo_base_table ='crmacct' AND mrgundo_base_id = pDestid; GET DIAGNOSTICS _tmpcount = ROW_COUNT; _result := _result + _tmpcount; END IF; RETURN _result; END; $_$; ALTER FUNCTION public.purgecrmacctmerge(integer) OWNER TO admin; -- -- Name: purgeinvoicerecord(date, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION purgeinvoicerecord(date, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCutoffDate ALIAS FOR $1; pInvcheadId ALIAS FOR $2; _r RECORD; _ra RECORD; _raheadid INTEGER; _result INTEGER; _debug BOOLEAN := FALSE; BEGIN -- Purge records where the entire Invoice, Billing, Shipper, Sales Order -- chain of associated documents are closed and complete FOR _r IN SELECT invchead_id, cobmisc_id, shiphead_id, ordershipped.cohead_id AS ordship_id, orderinvoiced.cohead_id AS ordinv_id FROM invchead LEFT OUTER JOIN invcitem ON (invcitem_invchead_id=invchead_id) LEFT OUTER JOIN cobmisc ON (cobmisc_invcnumber::TEXT=invchead_invcnumber) LEFT OUTER JOIN shipitem ON (shipitem_invcitem_id=invcitem_id) LEFT OUTER JOIN shiphead ON (shiphead_id=shipitem_shiphead_id) LEFT OUTER JOIN cohead ordershipped ON (ordershipped.cohead_id=shiphead_order_id) LEFT OUTER JOIN coitem ON (coitem_id=invcitem_coitem_id) LEFT OUTER JOIN cohead orderinvoiced ON (orderinvoiced.cohead_id=coitem_cohead_id) WHERE ( (invchead_id = pInvcheadId) AND (invchead_posted) AND (checkInvoiceSitePrivs(invchead_id)) ) GROUP BY invchead_id, cobmisc_id, shiphead_id, ordship_id, ordinv_id LOOP -- Check Billing -- Billing header (cobmisc) must be posted SELECT cobmisc_id INTO _result FROM cobmisc WHERE ( (cobmisc_id=_r.cobmisc_id) AND (NOT cobmisc_posted) ); IF (FOUND) THEN RETURN 'Billing not closed'; END IF; -- Billing line items (cobill), associated Invoice line items, and -- associated Sales Order line items must be closed, posted, and after cutoff date SELECT cobill_id INTO _result FROM cobill JOIN invcitem ON (invcitem_id=cobill_invcitem_id) JOIN invchead ON ( (invchead_id=invcitem_invchead_id) AND ((NOT invchead_posted) OR (invchead_invcdate > pCutoffDate)) ) JOIN coitem ON ( (coitem_id=cobill_coitem_id) AND (coitem_status NOT IN ('C', 'X')) ) WHERE (cobill_cobmisc_id=_r.cobmisc_id); IF (FOUND) THEN RETURN 'Invoice/Sales Order associated with Billing not closed'; END IF; -- Check Shipping -- Shipping header (shiphead) must be shipped SELECT shiphead_id INTO _result FROM shiphead WHERE ( (shiphead_id=_r.shiphead_id) AND (NOT shiphead_shipped) ); IF (FOUND) THEN RETURN 'Shipper not closed'; END IF; -- Shipping line items (shipitem) and associated Sales Order line items -- must be closed SELECT shiphead_id INTO _result FROM shiphead, cohead, coitem WHERE ( (shiphead_id=_r.shiphead_id) AND ( (shiphead_order_type='SO') AND (shiphead_order_id=cohead_id) ) AND (coitem_cohead_id=cohead_id) AND (coitem_status NOT IN ('C', 'X')) ); IF (FOUND) THEN RETURN 'Sales Order associated with Shipper not closed'; END IF; -- Shipping line items (shipitem) and associated Invoices must be posted -- and after cutoff date SELECT shiphead_id INTO _result FROM shiphead JOIN shipitem ON (shipitem_shiphead_id=shiphead_id) JOIN invcitem ON (invcitem_id=shipitem_invcitem_id) JOIN invchead ON ( (invchead_id=invcitem_invchead_id) AND ((NOT invchead_posted) OR (invchead_invcdate > pCutoffDate)) ) WHERE (shiphead_id=_r.shiphead_id); IF (FOUND) THEN RETURN 'Invoice associated with Shipper not closed'; END IF; -- Check Sales Order -- Sales Order line items (coitem) must be closed SELECT cohead_id INTO _result FROM cohead JOIN coitem ON ( (coitem_cohead_id=cohead_id) AND (coitem_status NOT IN ('C', 'X')) ) WHERE (cohead_id=_r.ordship_id); IF (FOUND) THEN RETURN 'Shipped Sales Order not closed'; END IF; SELECT cohead_id INTO _result FROM cohead JOIN coitem ON ( (coitem_cohead_id=cohead_id) AND (coitem_status NOT IN ('C', 'X')) ) WHERE (cohead_id=_r.ordinv_id); IF (FOUND) THEN RETURN 'Invoiced Sales Order not closed'; END IF; IF (fetchMetricBool('MultiWhs')) THEN -- Check Original Return Authorization and cross check to New Sales Order SELECT rahead_id INTO _result FROM rahead JOIN raitem ON ( (raitem_rahead_id=rahead_id) AND (raitem_status NOT IN ('C', 'X')) ) JOIN coitem ON ( (coitem_id=raitem_new_coitem_id) AND (coitem_status NOT IN ('C', 'X')) ) JOIN invcitem ON (invcitem_coitem_id=coitem_id) JOIN invchead ON ( (invchead_id=invcitem_invchead_id) AND ((NOT invchead_posted) OR (invchead_invcdate > pCutoffDate)) ) WHERE (rahead_orig_cohead_id=_r.ordship_id); IF (FOUND) THEN RETURN 'Shipped Original Return Authorization not closed'; END IF; SELECT rahead_id INTO _result FROM rahead JOIN raitem ON ( (raitem_rahead_id=rahead_id) AND (raitem_status NOT IN ('C', 'X')) ) JOIN coitem ON ( (coitem_id=raitem_new_coitem_id) AND (coitem_status NOT IN ('C', 'X')) ) JOIN invcitem ON (invcitem_coitem_id=coitem_id) JOIN invchead ON ( (invchead_id=invcitem_invchead_id) AND ((NOT invchead_posted) OR (invchead_invcdate > pCutoffDate)) ) WHERE (rahead_orig_cohead_id=_r.ordinv_id); IF (FOUND) THEN RETURN 'Invoiced Original Return Authorization not closed'; END IF; -- Check New Return Authorization SELECT rahead_id INTO _result FROM rahead JOIN raitem ON ( (raitem_rahead_id=rahead_id) AND (NOT raitem_status IN ('C', 'X')) ) JOIN coitem ON ( (coitem_id=raitem_orig_coitem_id) AND (NOT coitem_status IN ('C', 'X')) ) JOIN invcitem ON (invcitem_coitem_id=coitem_id) JOIN invchead ON ( (invchead_id=invcitem_invchead_id) AND ((NOT invchead_posted) OR (invchead_invcdate > pCutoffDate)) ) WHERE (rahead_new_cohead_id=_r.ordship_id); IF (FOUND) THEN RETURN 'Shipped New Return Authorization not closed'; END IF; SELECT rahead_id INTO _result FROM rahead JOIN raitem ON ( (raitem_rahead_id=rahead_id) AND (NOT raitem_status IN ('C', 'X')) ) JOIN coitem ON ( (coitem_id=raitem_orig_coitem_id) AND (NOT coitem_status IN ('C', 'X')) ) JOIN invcitem ON (invcitem_coitem_id=coitem_id) JOIN invchead ON ( (invchead_id=invcitem_invchead_id) AND ((NOT invchead_posted) OR (invchead_invcdate > pCutoffDate)) ) WHERE (rahead_new_cohead_id=_r.ordinv_id); IF (FOUND) THEN RETURN 'Invoiced New Return Authorization not closed'; END IF; END IF; -- Check Lot/Serial Registration IF (fetchMetricBool('MultiWhs')) THEN -- Registration associated with Sales Order must be expired SELECT lsreg_id INTO _result FROM lsreg WHERE ( (lsreg_cohead_id=_r.ordship_id) AND (lsreg_expiredate > CURRENT_DATE) ); IF (FOUND) THEN RETURN 'Shipped Sales Order Lot/Serial Registration not closed'; END IF; SELECT lsreg_id INTO _result FROM lsreg WHERE ( (lsreg_cohead_id=_r.ordinv_id) AND (lsreg_expiredate > CURRENT_DATE) ); IF (FOUND) THEN RETURN 'Invoiced Sales Order Lot/Serial Registration not closed'; END IF; -- Registration associated with Shipping must be expired SELECT lsreg_id INTO _result FROM lsreg WHERE ( (lsreg_cohead_id=_r.shiphead_id) AND (lsreg_expiredate > CURRENT_DATE) ); IF (FOUND) THEN RETURN 'Shipper Lot/Serial Registration not closed'; END IF; END IF; IF (fetchMetricBool('MultiWhs')) THEN -- Registration associated with Original Return Authorization must be expired SELECT rahead_id INTO _result FROM rahead JOIN raitem ON (raitem_rahead_id=rahead_id) JOIN raitemls ON (raitemls_raitem_id=raitem_id) JOIN lsreg ON ( (lsreg_ls_id=raitemls_ls_id) AND (lsreg_expiredate > CURRENT_DATE) ) WHERE (rahead_orig_cohead_id=_r.ordship_id); IF (FOUND) THEN RETURN 'Shipped Original Return Authorization Lot/Serial Registration not closed'; END IF; SELECT rahead_id INTO _result FROM rahead JOIN raitem ON (raitem_rahead_id=rahead_id) JOIN raitemls ON (raitemls_raitem_id=raitem_id) JOIN lsreg ON ( (lsreg_ls_id=raitemls_ls_id) AND (lsreg_expiredate > CURRENT_DATE) ) WHERE (rahead_orig_cohead_id=_r.ordinv_id); IF (FOUND) THEN RETURN 'Invoiced Original Return Authorization Lot/Serial Registration not closed'; END IF; -- Registration associated with New Return Authorization must be expired SELECT rahead_id INTO _result FROM rahead JOIN raitem ON (raitem_rahead_id=rahead_id) JOIN raitemls ON (raitemls_raitem_id=raitem_id) JOIN lsreg ON ( (lsreg_ls_id=raitemls_ls_id) AND (lsreg_expiredate > CURRENT_DATE) ) WHERE (rahead_new_cohead_id=_r.ordship_id); IF (FOUND) THEN RETURN 'Shipped New Return Authorization Lot/Serial Registration not closed'; END IF; SELECT rahead_id INTO _result FROM rahead JOIN raitem ON (raitem_rahead_id=rahead_id) JOIN raitemls ON (raitemls_raitem_id=raitem_id) JOIN lsreg ON ( (lsreg_ls_id=raitemls_ls_id) AND (lsreg_expiredate > CURRENT_DATE) ) WHERE (rahead_new_cohead_id=_r.ordinv_id); IF (FOUND) THEN RETURN 'Invoiced New Return Authorization Lot/Serial Registration not closed'; END IF; END IF; -- Cash Advances associated with Sales Order cannot exist SELECT aropenalloc_doc_id INTO _result FROM aropenalloc WHERE ((aropenalloc_doctype='S') AND (aropenalloc_doc_id=_r.ordship_id)); IF (FOUND) THEN RETURN 'Shipped Cash Advance not closed'; END IF; SELECT aropenalloc_doc_id INTO _result FROM aropenalloc WHERE ((aropenalloc_doctype='S') AND (aropenalloc_doc_id=_r.ordinv_id)); IF (FOUND) THEN RETURN 'Invoiced Cash Advance not closed'; END IF; END LOOP; -- Everything is OK, delete the chain FOR _r IN SELECT invchead_id, cobmisc_id, shiphead_id, ordershipped.cohead_id AS ordship_id, orderinvoiced.cohead_id AS ordinv_id FROM invchead LEFT OUTER JOIN invcitem ON (invcitem_invchead_id=invchead_id) LEFT OUTER JOIN cobmisc ON (cobmisc_invcnumber::TEXT=invchead_invcnumber) LEFT OUTER JOIN shipitem ON (shipitem_invcitem_id=invcitem_id) LEFT OUTER JOIN shiphead ON (shiphead_id=shipitem_shiphead_id) LEFT OUTER JOIN cohead ordershipped ON (ordershipped.cohead_id=shiphead_order_id) LEFT OUTER JOIN coitem ON (coitem_id=invcitem_coitem_id) LEFT OUTER JOIN cohead orderinvoiced ON (orderinvoiced.cohead_id=coitem_cohead_id) WHERE ( (invchead_id = pInvcheadId) AND (invchead_posted) AND (checkInvoiceSitePrivs(invchead_id)) ) GROUP BY invchead_id, cobmisc_id, shiphead_id, ordship_id, ordinv_id LOOP IF (fetchMetricBool('MultiWhs')) THEN FOR _ra IN SELECT rahead_id FROM rahead WHERE (rahead_orig_cohead_id=_r.ordship_id) LOOP IF (_debug) THEN RAISE NOTICE 'Deleting Original Return head id %', _ra.rahead_id; END IF; DELETE FROM raitemls WHERE (raitemls_raitem_id IN (SELECT raitem_id FROM raitem WHERE (raitem_rahead_id=_ra.rahead_id))); DELETE FROM rahist WHERE (rahist_rahead_id=_ra.rahead_id); DELETE FROM raitem WHERE (raitem_rahead_id=_ra.rahead_id); DELETE FROM rahead WHERE (rahead_id=_ra.rahead_id); END LOOP; FOR _ra IN SELECT rahead_id FROM rahead WHERE (rahead_orig_cohead_id=_r.ordinv_id) LOOP IF (_debug) THEN RAISE NOTICE 'Deleting Original Return head id %', _ra.rahead_id; END IF; DELETE FROM raitemls WHERE (raitemls_raitem_id IN (SELECT raitem_id FROM raitem WHERE (raitem_rahead_id=_ra.rahead_id))); DELETE FROM rahist WHERE (rahist_rahead_id=_ra.rahead_id); DELETE FROM raitem WHERE (raitem_rahead_id=_ra.rahead_id); DELETE FROM rahead WHERE (rahead_id=_ra.rahead_id); END LOOP; FOR _ra IN SELECT rahead_id FROM rahead WHERE (rahead_new_cohead_id=_r.ordship_id) LOOP IF (_debug) THEN RAISE NOTICE 'Deleting New Return head id %', _ra.rahead_id; END IF; DELETE FROM raitemls WHERE (raitemls_raitem_id IN (SELECT raitem_id FROM raitem WHERE (raitem_rahead_id=_ra.rahead_id))); DELETE FROM rahist WHERE (rahist_rahead_id=_ra.rahead_id); DELETE FROM raitem WHERE (raitem_rahead_id=_ra.rahead_id); DELETE FROM rahead WHERE (rahead_id=_ra.rahead_id); END LOOP; FOR _ra IN SELECT rahead_id FROM rahead WHERE (rahead_new_cohead_id=_r.ordinv_id) LOOP IF (_debug) THEN RAISE NOTICE 'Deleting New Return head id %', _ra.rahead_id; END IF; DELETE FROM raitemls WHERE (raitemls_raitem_id IN (SELECT raitem_id FROM raitem WHERE (raitem_rahead_id=_ra.rahead_id))); DELETE FROM rahist WHERE (rahist_rahead_id=_ra.rahead_id); DELETE FROM raitem WHERE (raitem_rahead_id=_ra.rahead_id); DELETE FROM rahead WHERE (rahead_id=_ra.rahead_id); END LOOP; END IF; IF (fetchMetricBool('MultiWhs')) THEN IF (_debug) THEN RAISE NOTICE 'Deleting Lot/Serial Registrations'; END IF; DELETE FROM lsreg WHERE (lsreg_cohead_id=_r.ordship_id); DELETE FROM lsreg WHERE (lsreg_cohead_id=_r.ordinv_id); DELETE FROM lsreg WHERE (lsreg_shiphead_id=_r.shiphead_id); END IF; IF (_debug) THEN RAISE NOTICE 'Deleting Shipped Sales Order head id %', _r.ordship_id; END IF; DELETE FROM payco WHERE (payco_cohead_id=_r.ordship_id); -- Delete kit components first DELETE FROM coitem WHERE (coitem_cohead_id=_r.ordship_id AND coitem_subnumber > 0); DELETE FROM coitem WHERE (coitem_cohead_id=_r.ordship_id); DELETE FROM cohead WHERE (cohead_id=_r.ordship_id); IF (_debug) THEN RAISE NOTICE 'Deleting Sales Order head id %', _r.ordinv_id; END IF; DELETE FROM payco WHERE (payco_cohead_id=_r.ordinv_id); -- Delete kit components first DELETE FROM coitem WHERE (coitem_cohead_id=_r.ordinv_id AND coitem_subnumber > 0); DELETE FROM coitem WHERE (coitem_cohead_id=_r.ordinv_id); DELETE FROM cohead WHERE (cohead_id=_r.ordinv_id); IF (_debug) THEN RAISE NOTICE 'Deleting Ship head id %', _r.shiphead_id; END IF; DELETE FROM shipitem WHERE (shipitem_shiphead_id=_r.shiphead_id); DELETE FROM pack WHERE (pack_shiphead_id=_r.shiphead_id); DELETE FROM shiphead WHERE (shiphead_id=_r.shiphead_id); IF (_debug) THEN RAISE NOTICE 'Deleting Billing head id %', _r.cobmisc_id; END IF; DELETE FROM cobill WHERE (cobill_cobmisc_id=_r.cobmisc_id); DELETE FROM cobmisc WHERE (cobmisc_id=_r.cobmisc_id); END LOOP; -- Everything is OK, delete the Invoice IF (_debug) THEN RAISE NOTICE 'Deleting Invoice head id %', _r.invchead_id; END IF; DELETE FROM invcitem WHERE (invcitem_invchead_id=_r.invchead_id); DELETE FROM invchead WHERE (invchead_id=_r.invchead_id); RETURN 'Purged'; END; $_$; ALTER FUNCTION public.purgeinvoicerecord(date, integer) OWNER TO admin; -- -- Name: purgeinvoicerecords(date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION purgeinvoicerecords(date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCutoffDate ALIAS FOR $1; BEGIN -- Remove the shipitem records DELETE FROM shipitem WHERE (shipitem_invcitem_id IN (SELECT invcitem_id FROM invcitem WHERE invcitem_invchead_id IN ( SELECT invchead_id FROM invchead WHERE ( (invchead_invcdate <= pCutoffDate) AND (checkInvoiceSitePrivs(invchead_id)) AND (invchead_posted) ) ) ) ); -- Remove the cobill and cobmisc records DELETE FROM cobill WHERE (cobill_cobmisc_id IN ( SELECT cobmisc_id FROM cobmisc, invchead WHERE ( (invchead_invcnumber=cobmisc_invcnumber::TEXT) AND (checkInvoiceSitePrivs(invchead_id)) AND (cobmisc_invcdate <= pCutoffDate) AND (cobmisc_posted)) ) ); DELETE FROM cobmisc WHERE ( (checkInvoiceSitePrivs(getInvcheadId(cobmisc_invcnumber::TEXT))) AND (cobmisc_invcdate <= pCutoffDate) AND (cobmisc_posted) ); -- Remove the invchead and invcitem records DELETE FROM invcitem WHERE (invcitem_invchead_id IN ( SELECT invchead_id FROM invchead WHERE ( (invchead_invcdate <= pCutoffDate) AND (checkInvoiceSitePrivs(invchead_id)) AND (invchead_posted) ) ) ); DELETE FROM invchead WHERE ( (invchead_invcdate <= pCutoffDate) AND (checkInvoiceSitePrivs(invchead_id)) AND (invchead_posted) ); RETURN 1; END; $_$; ALTER FUNCTION public.purgeinvoicerecords(date) OWNER TO admin; -- -- Name: purgepostedcountslips(date, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION purgepostedcountslips(date, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCutoffDate ALIAS FOR $1; pWarehousid ALIAS FOR $2; BEGIN IF (pWarehousid = -1) THEN DELETE FROM cntslip WHERE (cntslip_id IN ( SELECT cntslip_id FROM cntslip, invcnt WHERE ( (cntslip_cnttag_id=invcnt_id) AND (invcnt_posted) AND (cntslip_posted) AND (date(invcnt_postdate) <= pCutoffDate) ) ) ); ELSE DELETE FROM cntslip WHERE (cntslip_id IN ( SELECT cntslip_id FROM invcnt, itemsite WHERE ( (cntslip_cnttag_id=invcnt_id) AND (invcnt_posted) AND (cntslip_posted) AND (invcnt_itemsite_id=itemsite_id) AND (date(invcnt_postdate) <= pCutoffDate) AND (itemsite_warehous_id=pWarehousid) ) ) ); END IF; RETURN 1; END; $_$; ALTER FUNCTION public.purgepostedcountslips(date, integer) OWNER TO admin; -- -- Name: purgepostedcounttags(date, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION purgepostedcounttags(date, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCutoffDate ALIAS FOR $1; pWarehousid ALIAS FOR $2; BEGIN IF (pWarehousid = -1) THEN DELETE FROM cntslip WHERE (cntslip_cnttag_id IN ( SELECT invcnt_id FROM invcnt WHERE ( (invcnt_posted) AND (date(invcnt_postdate) <= pCutoffDate) ) ) ); DELETE FROM invcnt WHERE ((invcnt_posted) AND (date(invcnt_postdate) <= pCutoffDate)); ELSE DELETE FROM cntslip WHERE (cntslip_cnttag_id IN ( SELECT invcnt_id FROM invcnt, itemsite WHERE ( (invcnt_posted) AND (invcnt_itemsite_id=itemsite_id) AND (date(invcnt_postdate) <= pCutoffDate) AND (itemsite_warehous_id=pWarehousid) ) ) ); DELETE FROM invcnt WHERE (invcnt_id IN ( SELECT invcnt_id FROM invcnt, itemsite WHERE ( (invcnt_posted) AND (invcnt_itemsite_id=itemsite_id) AND (date(invcnt_postdate) <= pCutoffDate) AND (itemsite_warehous_id=pWarehousid) ) ) ); END IF; RETURN 1; END; $_$; ALTER FUNCTION public.purgepostedcounttags(date, integer) OWNER TO admin; -- -- Name: purgeshipments(date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION purgeshipments(date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pcutoff ALIAS FOR $1; _r RECORD; BEGIN -- Used for transfer orders shipments (which are never invoiced) FOR _r IN SELECT shiphead_id FROM shiphead WHERE ( (shiphead_order_type='TO') AND (shiphead_shipped) AND (shiphead_shipdate <= pcutoff) ) LOOP DELETE FROM shipitem WHERE (shipitem_shiphead_id=_r.shiphead_id); DELETE FROM shiphead WHERE (shiphead_id=_r.shiphead_id); END LOOP; RETURN 0; END; $_$; ALTER FUNCTION public.purgeshipments(date) OWNER TO admin; -- -- Name: qtyallocated(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION qtyallocated(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pLookAheaddays ALIAS FOR $2; BEGIN RETURN qtyAllocated(pItemsiteid, startOfTime(), (CURRENT_DATE + pLookAheadDays)); END; $_$; ALTER FUNCTION public.qtyallocated(integer, integer) OWNER TO admin; -- -- Name: qtyallocated(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION qtyallocated(integer, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pDate ALIAS FOR $2; BEGIN RETURN qtyAllocated(pItemsiteid, startOfTime(), pDate); END; $_$; ALTER FUNCTION public.qtyallocated(integer, date) OWNER TO admin; -- -- Name: qtyallocated(integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION qtyallocated(integer, date, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; BEGIN IF ( fetchMetricBool('MultiWhs')) THEN IF ( SELECT item_sold FROM itemsite, item WHERE ((itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid)) ) THEN RETURN (allocatedForTo(pItemsiteid, pStartDate, pEndDate) + allocatedForWo(pItemsiteid, pStartDate, pEndDate) + allocatedForSo(pItemsiteid, pStartDate, pEndDate)); ELSE RETURN (allocatedForTo(pItemsiteid, pStartDate, pEndDate) + allocatedForWo(pItemsiteid, pStartDate, pEndDate)); END IF; ELSE IF ( SELECT item_sold FROM itemsite, item WHERE ((itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid)) ) THEN RETURN (allocatedForWo(pItemsiteid, pStartDate, pEndDate) + allocatedForSo(pItemsiteid, pStartDate, pEndDate)); ELSE RETURN (allocatedForWo(pItemsiteid, pStartDate, pEndDate)); END IF; END IF; END; $_$; ALTER FUNCTION public.qtyallocated(integer, date, date) OWNER TO admin; -- -- Name: qtyatshipping(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION qtyatshipping(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN qtyAtShipping('SO', $1); END; $_$; ALTER FUNCTION public.qtyatshipping(integer) OWNER TO admin; -- -- Name: qtyatshipping(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION qtyatshipping(text, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN qtyAtShipping($1, $2, 'U'); END; $_$; ALTER FUNCTION public.qtyatshipping(text, integer) OWNER TO admin; -- -- Name: qtyatshipping(text, integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION qtyatshipping(text, integer, text) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; plineitemid ALIAS FOR $2; pstatus ALIAS FOR $3; _qty NUMERIC := 0.0; BEGIN -- pstatus U=unshipped -- S=shipped -- B=both unshipped and shipped IF (pordertype NOT IN ('SO', 'TO')) THEN RAISE EXCEPTION '% is not a valid order type', pordertype; END IF; IF (pstatus NOT IN ('U', 'S', 'B')) THEN RAISE EXCEPTION '% is not a valid status', pstatus; END IF; SELECT COALESCE(SUM(shipitem_qty), 0.0) INTO _qty FROM shipitem, shiphead WHERE ((shipitem_shiphead_id=shiphead_id) AND (shiphead_order_type=pordertype) AND (shipitem_orderitem_id=plineitemid) AND (((shiphead_shipped) AND (pstatus IN ('S', 'B'))) OR ((NOT shiphead_shipped) AND (pstatus IN ('U', 'B')))) ); RETURN _qty; END; $_$; ALTER FUNCTION public.qtyatshipping(text, integer, text) OWNER TO admin; -- -- Name: qtyavailable(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION qtyavailable(integer, integer) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pLookAheadDays ALIAS FOR $2; BEGIN RETURN ( ( SELECT itemsite_qtyonhand FROM itemsite WHERE (itemsite_id=pItemsiteid) ) + (SELECT qtyOrdered(pItemsiteid, pLookAheadDays)) - (SELECT qtyAllocated(pitemsiteid, pLookAheadDays)) ); END; $_$; ALTER FUNCTION public.qtyavailable(integer, integer) OWNER TO admin; -- -- Name: qtyavailable(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION qtyavailable(integer, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pDate ALIAS FOR $2; BEGIN RETURN ( ( SELECT itemsite_qtyonhand FROM itemsite WHERE (itemsite_id=pItemsiteid) ) + (SELECT qtyOrdered(pItemsiteid, (pDate - CURRENT_DATE))) - (SELECT qtyAllocated(pItemsiteid, (pDate - CURRENT_DATE))) ); END; $_$; ALTER FUNCTION public.qtyavailable(integer, date) OWNER TO admin; -- -- Name: qtyinshipment(text, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION qtyinshipment(text, integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; plineitemid ALIAS FOR $2; pshipheadid ALIAS FOR $3; _qty NUMERIC; BEGIN IF (pordertype NOT IN ('SO', 'TO')) THEN RAISE EXCEPTION '% is not a valid order type', pordertype; END IF; IF (pshipheadid IS NULL) THEN RAISE EXCEPTION 'Cannot calculate quantity in a shipment with a NULL shipment'; END IF; SELECT SUM(COALESCE(shipitem_qty, 0.0)) INTO _qty FROM shipitem, shiphead WHERE ((shipitem_shiphead_id=shiphead_id) AND (shiphead_order_type=pordertype) AND (shipitem_orderitem_id=plineitemid) AND (shiphead_id=pshipheadid)); IF (NOT FOUND) THEN RAISE NOTICE 'Quantity of % item % is 0 because shipment % does not exist.', pordertype, plineitemid, pshipheadid; END IF; RETURN _qty; END; $_$; ALTER FUNCTION public.qtyinshipment(text, integer, integer) OWNER TO admin; -- -- Name: qtylocation(integer, integer, date, date, integer, text, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION qtylocation(integer, integer, date, date, integer, text, integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLocationId ALIAS FOR $1; pLsId ALIAS FOR $2; pExpiration ALIAS FOR $3; pWarranty ALIAS FOR $4; pItemsiteId ALIAS FOR $5; pOrderType ALIAS FOR $6; pOrderId ALIAS FOR $7; pItemlocdistId ALIAS FOR $8; _qty NUMERIC = 0.0; _qtyDist NUMERIC = 0.0; _qtyReserved NUMERIC = 0.0; BEGIN -- Summarize itemloc qty for this location/itemsite SELECT COALESCE(SUM(itemloc_qty), 0) INTO _qty FROM itemloc WHERE ( (itemloc_itemsite_id=pItemsiteId) AND (itemloc_location_id=pLocationId) AND (COALESCE(itemloc_ls_id, -1)=COALESCE(pLsId, itemloc_ls_id, -1)) AND (COALESCE(itemloc_expiration, endoftime())=COALESCE(pExpiration, itemloc_expiration, endoftime())) AND (COALESCE(itemloc_warrpurc, endoftime())=COALESCE(pWarranty, itemloc_warrpurc, endoftime())) ); -- Summarize qty distributed but not yet committed by previous distributions SELECT COALESCE(SUM(loc.itemlocdist_qty), 0) INTO _qtyDist FROM itemlocdist loc JOIN itemlocdist ls ON ((ls.itemlocdist_source_type='O') AND (ls.itemlocdist_id=loc.itemlocdist_itemlocdist_id)) WHERE ( (ls.itemlocdist_itemsite_id=pItemsiteId) AND (loc.itemlocdist_source_type='L') AND (loc.itemlocdist_source_id=pLocationId) AND (COALESCE(ls.itemlocdist_ls_id, -1)=COALESCE(pLsId, ls.itemlocdist_ls_id, -1)) AND (COALESCE(ls.itemlocdist_expiration, endoftime())=COALESCE(pExpiration, ls.itemlocdist_expiration, endoftime())) AND (COALESCE(ls.itemlocdist_warranty, endoftime())=COALESCE(pWarranty, ls.itemlocdist_warranty, endoftime())) AND (ls.itemlocdist_id != pItemlocdistId ) ); -- Summarize itemlocrsrv qty for this location/itemsite -- that is reserved for a different order IF (fetchMetricBool('EnableSOReservationsByLocation')) THEN SELECT COALESCE(SUM(itemlocrsrv_qty), 0) INTO _qtyReserved FROM itemloc JOIN itemlocrsrv ON ( (itemlocrsrv_itemloc_id=itemloc_id) AND ((itemlocrsrv_source <> COALESCE(pOrderType, '')) OR (itemlocrsrv_source_id <> COALESCE(pOrderId, -1))) ) WHERE ( (itemloc_itemsite_id=pItemsiteId) AND (itemloc_location_id=pLocationId) AND (COALESCE(itemloc_ls_id, -1)=COALESCE(pLsId, itemloc_ls_id, -1)) AND (COALESCE(itemloc_expiration, endoftime())=COALESCE(pExpiration, itemloc_expiration, endoftime())) AND (COALESCE(itemloc_warrpurc, endoftime())=COALESCE(pWarranty, itemloc_warrpurc, endoftime())) ); END IF; RETURN (_qty + _qtyDist - _qtyReserved); END; $_$; ALTER FUNCTION public.qtylocation(integer, integer, date, date, integer, text, integer, integer) OWNER TO admin; -- -- Name: qtyordered(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION qtyordered(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pLookahead ALIAS FOR $2; _itemType TEXT; _result NUMERIC; BEGIN RETURN qtyOrdered(pItemsiteid, startOfTime(), (CURRENT_DATE + pLookahead)); END; $_$; ALTER FUNCTION public.qtyordered(integer, integer) OWNER TO admin; -- -- Name: qtyordered(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION qtyordered(integer, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pDate ALIAS FOR $2; BEGIN RETURN qtyOrdered(pItemsiteid, startOfTime(), pDate); END; $_$; ALTER FUNCTION public.qtyordered(integer, date) OWNER TO admin; -- -- Name: qtyordered(integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION qtyordered(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _itemType TEXT; BEGIN SELECT item_type INTO _itemType FROM item, itemsite WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ); IF ( SELECT metric_value FROM metric WHERE ((metric_name = 'MultiWhs') AND (metric_value = 't'))) THEN RETURN orderedByPo(pItemsiteid, pStartDate, pEndDate) + orderedByWo(pItemsiteid, pStartDate, pEndDate) + orderedByTo(pItemsiteid, pStartDate, pEndDate); ELSE RETURN orderedByPo(pItemsiteid, pStartDate, pEndDate) + orderedByWo(pItemsiteid, pStartDate, pEndDate); END IF; END; $_$; ALTER FUNCTION public.qtyordered(integer, date, date) OWNER TO admin; -- -- Name: qtypr(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION qtypr(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pLookahead ALIAS FOR $2; BEGIN RETURN qtypr(pItemsiteid, startOfTime(), (CURRENT_DATE + pLookahead)); END; $_$; ALTER FUNCTION public.qtypr(integer, integer) OWNER TO admin; -- -- Name: qtypr(integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION qtypr(integer, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pDate ALIAS FOR $2; BEGIN RETURN qtypr(pItemsiteid, startOfTime(), pDate); END; $_$; ALTER FUNCTION public.qtypr(integer, date) OWNER TO admin; -- -- Name: qtypr(integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION qtypr(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _prtotal NUMERIC; BEGIN SELECT SUM(pr_qtyreq) INTO _prtotal FROM pr WHERE ((pr_status = 'O') AND (pr_itemsite_id=pItemsiteid) AND (pr_duedate BETWEEN pStartDate AND pEndDate)); IF (_prtotal IS NULL) THEN RETURN 0.0; END IF; RETURN _prtotal; END; $_$; ALTER FUNCTION public.qtypr(integer, date, date) OWNER TO admin; -- -- Name: qtytoreceive(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION qtytoreceive(text, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; porderitemid ALIAS FOR $2; _qty NUMERIC; BEGIN IF (pordertype = 'TO' AND NOT fetchMetricBool('MultiWhs')) THEN RETURN 0; END IF; IF (pordertype = 'RA' AND NOT fetchMetricBool('EnableReturnAuth')) THEN RETURN 0; END IF; SELECT SUM(recv_qty) INTO _qty FROM recv WHERE ((recv_orderitem_id=porderitemid) AND (NOT recv_posted) AND (recv_order_type=pordertype)); RETURN COALESCE(_qty, 0.0); END; $_$; ALTER FUNCTION public.qtytoreceive(text, integer) OWNER TO admin; -- -- Name: recallshipment(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION recallshipment(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN recallShipment($1, CURRENT_TIMESTAMP); END; $_$; ALTER FUNCTION public.recallshipment(integer) OWNER TO admin; -- -- Name: recallshipment(integer, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION recallshipment(integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pshipheadid ALIAS FOR $1; _timestamp TIMESTAMP WITH TIME ZONE := $2; _allInvoiced BOOLEAN; _invoicePosted BOOLEAN; _in RECORD; _co RECORD; _cobill RECORD; _h RECORD; _result INTEGER; _invhistid INTEGER; _itemlocSeries INTEGER; _qty NUMERIC; _qtyToBill NUMERIC; _shiphead RECORD; _to RECORD; _ti RECORD; _value NUMERIC; BEGIN IF (_timestamp IS NULL) THEN _timestamp := CURRENT_TIMESTAMP; END IF; SELECT * INTO _shiphead FROM shiphead WHERE (shiphead_id=pshipheadid); IF (NOT FOUND OR NOT _shiphead.shiphead_shipped) THEN RETURN -1; END IF; IF (_shiphead.shiphead_order_type = 'SO') THEN SELECT cohead_number AS head_number, cohead_cust_id AS cust_id, cohead_prj_id AS prj_id, cohead_saletype_id AS saletype_id, cohead_shipzone_id AS shipzone_id INTO _h FROM cohead WHERE (cohead_id=_shiphead.shiphead_order_id); IF (NOT FOUND) THEN RETURN -1; END IF; SELECT COALESCE(BOOL_AND(shipitem_invoiced), FALSE) INTO _allInvoiced FROM cobill, shipitem WHERE ((cobill_coitem_id=shipitem_orderitem_id) AND (shipitem_shiphead_id=pshipheadid)); IF (_allInvoiced AND NOT checkPrivilege('RecallInvoicedShipment')) THEN RETURN -2; END IF; -- Check for any associated posted Invoices SELECT COALESCE(BOOL_AND(invchead_posted), FALSE) INTO _invoicePosted FROM shipitem JOIN invcitem ON (invcitem_id=shipitem_invcitem_id) JOIN invchead ON (invchead_id=invcitem_invchead_id) WHERE (shipitem_shiphead_id=pshipheadid); IF (_invoicePosted) THEN RETURN -4; END IF; -- Delete any associated unposted Invoices FOR _in IN SELECT DISTINCT invchead_id FROM shipitem JOIN invcitem ON (invcitem_id=shipitem_invcitem_id) JOIN invchead ON ( (invchead_id=invcitem_invchead_id) AND (NOT invchead_posted) ) WHERE (shipitem_shiphead_id=pshipheadid) LOOP SELECT deleteInvoice(_in.invchead_id) INTO _result; IF (_result < 0) THEN RETURN _result; END IF; END LOOP; FOR _co IN SELECT coitem_id, coitem_itemsite_id, coitem_qty_invuomratio, coitem_warranty, coitem_cos_accnt_id, itemsite_controlmethod FROM coitem JOIN itemsite ON (coitem_itemsite_id=itemsite_id) WHERE(coitem_id IN (SELECT shipitem_orderitem_id FROM shipitem, shiphead WHERE((shipitem_shiphead_id=shiphead_id) AND (shiphead_shipped) AND (shiphead_id=pshipheadid)))) FOR UPDATE LOOP SELECT SUM(shipitem_qty),SUM(COALESCE(shipitem_value, 0)) INTO _qty, _value FROM shipitem WHERE ( (shipitem_orderitem_id=_co.coitem_id) AND (shipitem_shiphead_id=pshipheadid) ); UPDATE coitem SET coitem_qtyshipped = (coitem_qtyshipped - _qty) WHERE (coitem_id=_co.coitem_id); _qtyToBill := _qty; FOR _cobill IN SELECT cobill_id, cobill_qty FROM cobill, shipitem WHERE ((cobill_coitem_id=shipitem_orderitem_id) AND (shipitem_shiphead_id=pshipheadid) AND (cobill_coitem_id=_co.coitem_id)) FOR UPDATE LOOP IF (noNeg(_cobill.cobill_qty - _qtyToBill) = 0) THEN DELETE FROM cobill WHERE (cobill_id=_cobill.cobill_id); ELSE UPDATE cobill SET cobill_qty = noNeg(cobill_qty - _qtyToBill) WHERE (cobill_id=_cobill.cobill_id); END IF; _qtyToBill = _qtyToBill - _cobill.cobill_qty; EXIT WHEN (_qtyToBill <= 0.0); END LOOP; -- Check to see if all of the cobills have been deleted for this cobmisc IF (EXISTS(SELECT cobmisc_id FROM cobmisc JOIN cobill ON (cobill_cobmisc_id=cobmisc_id) WHERE (cobmisc_cohead_id=_shiphead.shiphead_order_id AND NOT cobmisc_posted))) THEN -- Lines exist, update the freight UPDATE cobmisc SET cobmisc_freight = (cobmisc_freight - _shiphead.shiphead_freight) WHERE (cobmisc_cohead_id=_shiphead.shiphead_order_id AND NOT cobmisc_posted); ELSE -- No lines exist, delete the cobmisc DELETE FROM cobmisc WHERE (cobmisc_cohead_id=_shiphead.shiphead_order_id AND NOT cobmisc_posted); END IF; -- Distribute to G/L, debit Shipping Asset, credit COS IF (_co.itemsite_controlmethod != 'N') THEN PERFORM insertGLTransaction( 'S/R', _shiphead.shiphead_order_type, _h.head_number::TEXT, 'Recall Shipment', CASE WHEN(COALESCE(_co.coitem_cos_accnt_id, -1) != -1) THEN getPrjAccntId(_h.prj_id, _co.coitem_cos_accnt_id) WHEN(_co.coitem_warranty = TRUE) THEN getPrjAccntId(_h.prj_id, resolveCOWAccount(itemsite_id, _h.cust_id, _h.saletype_id, _h.shipzone_id)) ELSE getPrjAccntId(_h.prj_id, resolveCOSAccount(itemsite_id, _h.cust_id, _h.saletype_id, _h.shipzone_id)) END, getPrjAccntId(_h.prj_id,costcat_shipasset_accnt_id), -1, _value, _timestamp::DATE ) FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_co.coitem_itemsite_id) ); END IF; END LOOP; -- Kit billing selection -- Set kit billing qty to zero since kits are shipped complete FOR _cobill IN SELECT cobill_id, cobill_qty FROM shipitem JOIN coitem sub ON (sub.coitem_id=shipitem_orderitem_id) JOIN coitem kit ON (kit.coitem_id <> sub.coitem_id AND kit.coitem_cohead_id = sub.coitem_cohead_id AND kit.coitem_linenumber = sub.coitem_linenumber AND kit.coitem_subnumber = 0) JOIN cobill ON (cobill_coitem_id=kit.coitem_id) WHERE (shipitem_shiphead_id=pshipheadid) AND (sub.coitem_subnumber > 0) GROUP BY cobill_id, cobill_qty LOOP UPDATE cobill SET cobill_qty = 0.0 WHERE (cobill_id=_cobill.cobill_id); END LOOP; ELSEIF (_shiphead.shiphead_order_type = 'TO') THEN SELECT * INTO _to FROM tohead WHERE (tohead_id=_shiphead.shiphead_order_id); IF (NOT FOUND) THEN RETURN -1; END IF; IF (_to.tohead_status = 'C') THEN RETURN -6; END IF; FOR _ti IN SELECT toitem_id, sis.itemsite_id AS src_itemsite_id, tis.itemsite_id AS trns_itemsite_id, scc.costcat_shipasset_accnt_id AS src_shipasset_accnt_id, tcc.costcat_asset_accnt_id AS trns_asset_accnt_id, itemcost(tis.itemsite_id) AS trns_cost, SUM(shipitem_qty) AS recall_qty FROM shipitem JOIN toitem ON (toitem_id=shipitem_orderitem_id) JOIN itemsite sis ON (sis.itemsite_item_id=toitem_item_id AND sis.itemsite_warehous_id=_to.tohead_src_warehous_id) JOIN itemsite tis ON (tis.itemsite_item_id=toitem_item_id AND tis.itemsite_warehous_id=_to.tohead_trns_warehous_id) JOIN costcat scc ON (scc.costcat_id=sis.itemsite_costcat_id) JOIN costcat tcc ON (tcc.costcat_id=tis.itemsite_costcat_id) WHERE (shipitem_shiphead_id=pshipheadid) GROUP BY toitem_id, sis.itemsite_id, tis.itemsite_id, scc.costcat_shipasset_accnt_id, tcc.costcat_asset_accnt_id LOOP _itemlocSeries := NEXTVAL('itemloc_series_seq'); SELECT postInvTrans(_ti.src_itemsite_id, 'TS', (_ti.recall_qty * -1.0), 'I/M', _shiphead.shiphead_order_type, formatToNumber(_ti.toitem_id), _to.tohead_number, 'Recall TO Shipment To Src Warehouse', _ti.trns_asset_accnt_id, _ti.src_shipasset_accnt_id, _itemlocSeries, _timestamp, (_ti.trns_cost * _ti.recall_qty * -1.0)) INTO _invhistid; IF (_invhistid < 0) THEN RETURN _invhistid; END IF; -- post the inventory history if lot/serial or location control PERFORM postItemlocseries(_itemlocSeries); -- record inventory history and qoh changes at transit warehouse but -- there is only one g/l account to touch SELECT postInvTrans(_ti.trns_itemsite_id, 'TR', (_ti.recall_qty * -1.0), 'I/M', _shiphead.shiphead_order_type, formatToNumber(_ti.toitem_id), _to.tohead_number, 'Recall TO Shipment From Transit Warehouse', _ti.trns_asset_accnt_id, _ti.trns_asset_accnt_id, _itemlocSeries, _timestamp, (_ti.trns_cost * _ti.recall_qty * -1.0)) INTO _invhistid; IF (_invhistid < 0) THEN RETURN _invhistid; END IF; -- post the inventory history if lot/serial or location control PERFORM postItemlocseries(_itemlocSeries); UPDATE toitem SET toitem_qty_shipped = (toitem_qty_shipped - _ti.recall_qty) WHERE (toitem_id=_ti.toitem_id); UPDATE shipitem SET shipitem_shipdate=NULL, shipitem_shipped=FALSE, shipitem_value=(shipitem_qty * _ti.trns_cost) WHERE ((shipitem_orderitem_id=_ti.toitem_id) AND (shipitem_shiphead_id=pshipheadid)); DELETE FROM recv WHERE ((recv_orderitem_id=_ti.toitem_id) AND (recv_order_type='TO') AND (NOT recv_posted)); END LOOP; END IF; UPDATE shiphead SET shiphead_shipped=FALSE WHERE (shiphead_id=pshipheadid); RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.recallshipment(integer, timestamp with time zone) OWNER TO admin; -- -- Name: recallwo(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION recallwo(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; recallChildren ALIAS FOR $2; returnCode INTEGER; BEGIN UPDATE wo SET wo_status='E' WHERE ((wo_status='R') AND (wo_id=pWoid)); IF (recallChildren) THEN returnCode := (SELECT MAX(recallWo(wo_id, TRUE)) FROM wo WHERE ((wo_ordtype='W') AND (wo_ordid=pWoid))); END IF; RETURN 0; END; $_$; ALTER FUNCTION public.recallwo(integer, boolean) OWNER TO admin; -- -- Name: receipts(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION receipts(text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTransType ALIAS FOR $1; BEGIN IF (pTransType IN ('RM', 'RB', 'RT', 'RP', 'RR', 'RX', 'TR')) THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END; $_$; ALTER FUNCTION public.receipts(text) OWNER TO admin; -- -- Name: releaseapmemonumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releaseapmemonumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('APMemoNumber', $1::INTEGER) > 0; $_$; ALTER FUNCTION public.releaseapmemonumber(integer) OWNER TO admin; -- -- Name: releasearmemonumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releasearmemonumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. select releaseNumber('ARMemoNumber', $1::INTEGER) > 0; $_$; ALTER FUNCTION public.releasearmemonumber(integer) OWNER TO admin; -- -- Name: releasecashrcptnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releasecashrcptnumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('CashRcptNumber', $1) > 0; $_$; ALTER FUNCTION public.releasecashrcptnumber(integer) OWNER TO admin; -- -- Name: releasecmnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releasecmnumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('CmNumber', $1) > 0; $_$; ALTER FUNCTION public.releasecmnumber(integer) OWNER TO admin; -- -- Name: releasecmnumber(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releasecmnumber(text) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('CmNumber', $1::INTEGER) > 0; $_$; ALTER FUNCTION public.releasecmnumber(text) OWNER TO admin; -- -- Name: releasecrmaccountnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releasecrmaccountnumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('CRMAccountNumber', $1::INTEGER) > 0; $_$; ALTER FUNCTION public.releasecrmaccountnumber(integer) OWNER TO admin; -- -- Name: releaseincidentnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releaseincidentnumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('IncidentNumber', $1) = 1; $_$; ALTER FUNCTION public.releaseincidentnumber(integer) OWNER TO admin; -- -- Name: releaseinvcnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releaseinvcnumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('InvcNumber', $1) > 0; $_$; ALTER FUNCTION public.releaseinvcnumber(integer) OWNER TO admin; -- -- Name: releaseinvcnumber(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releaseinvcnumber(text) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('InvcNumber', $1::INTEGER) > 0; $_$; ALTER FUNCTION public.releaseinvcnumber(text) OWNER TO admin; -- -- Name: releasenumber(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releasenumber(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE psequence ALIAS FOR $1; pnumber ALIAS FOR $2; BEGIN -- drop the number back into the pool if it was not committed PERFORM clearNumberIssue(psequence, pnumber); UPDATE orderseq SET orderseq_number = LEAST(pnumber, orderseq_number) WHERE (orderseq_name=psequence); RETURN 1; END; $_$; ALTER FUNCTION public.releasenumber(text, integer) OWNER TO admin; -- -- Name: releaseponumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releaseponumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('PoNumber', $1) > 0; $_$; ALTER FUNCTION public.releaseponumber(integer) OWNER TO admin; -- -- Name: releaseponumber(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releaseponumber(text) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('PoNumber', $1::INTEGER) > 0; $_$; ALTER FUNCTION public.releaseponumber(text) OWNER TO admin; -- -- Name: releaseprnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releaseprnumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('PrNumber', $1) > 0; $_$; ALTER FUNCTION public.releaseprnumber(integer) OWNER TO admin; -- -- Name: releasepurchaseorder(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releasepurchaseorder(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPoheadid ALIAS FOR $1; BEGIN IF ( ( SELECT (COUNT(*) = 0) FROM poitem WHERE ( (poitem_pohead_id=pPoheadid) AND (poitem_status='U') ) ) ) THEN RETURN -1; END IF; IF ( ( SELECT (pohead_status='U') FROM pohead WHERE (pohead_id=pPoheadid) ) ) THEN --update status and store the date that the order was released on UPDATE pohead SET pohead_status='O', pohead_released = current_date WHERE (pohead_id=pPoheadid); END IF; --update status and store the duedates at release UPDATE poitem SET poitem_status='O', poitem_rlsd_duedate = poitem_duedate WHERE (poitem_pohead_id=pPoheadid); RETURN 1; END; $_$; ALTER FUNCTION public.releasepurchaseorder(integer) OWNER TO admin; -- -- Name: releasequnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releasequnumber(integer) RETURNS integer LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('QuNumber', $1); $_$; ALTER FUNCTION public.releasequnumber(integer) OWNER TO admin; -- -- Name: releasequnumber(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releasequnumber(text) RETURNS integer LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('QuNumber', $1::INTEGER); $_$; ALTER FUNCTION public.releasequnumber(text) OWNER TO admin; -- -- Name: releaseshipmentnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releaseshipmentnumber(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _test INTEGER; BEGIN -- Check to see if a Shipment exists with the passed number SELECT shiphead_id INTO _test FROM shiphead WHERE (shiphead_number=pNumber); IF (FOUND) THEN RETURN FALSE; END IF; -- Check to see if ShipmentNumber orderseq has been incremented past the passed number SELECT orderseq_number INTO _test FROM orderseq WHERE (orderseq_name='ShipmentNumber'); IF ((_test - 1) <> pNumber) THEN RETURN FALSE; END IF; -- Decrement the orderseq, releasing the passed number UPDATE orderseq SET orderseq_number = (orderseq_number - 1) WHERE (orderseq_name='ShipmentNumber'); RETURN TRUE; END; $_$; ALTER FUNCTION public.releaseshipmentnumber(integer) OWNER TO admin; -- -- Name: releasesohead(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releasesohead(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; BEGIN DELETE FROM soheadlock WHERE ( (soheadlock_sohead_id=pSoheadid) AND (soheadlock_username=getEffectiveXtUser()) AND (soheadlock_procpid=pg_backend_pid()) ); RETURN TRUE; END; $_$; ALTER FUNCTION public.releasesohead(integer) OWNER TO admin; -- -- Name: releasesonumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releasesonumber(integer) RETURNS integer LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('SoNumber', $1); $_$; ALTER FUNCTION public.releasesonumber(integer) OWNER TO admin; -- -- Name: releasesonumber(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releasesonumber(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (COALESCE($1, '') = '' OR $1 ~ '[^0-9]') THEN --do nothing; RETURN 1; ELSE RETURN releaseNumber('SoNumber', $1::INTEGER); END IF; END; $_$; ALTER FUNCTION public.releasesonumber(text) OWNER TO admin; -- -- Name: releaseunusedbillingheader(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releaseunusedbillingheader(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCobmiscid ALIAS FOR $1; _p RECORD; BEGIN IF ( ( SELECT cobmisc_posted FROM cobmisc WHERE (cobmisc_id=pCobmiscid) ) ) THEN RETURN -1; END IF; SELECT cobill_id INTO _p FROM cobill WHERE (cobill_cobmisc_id=pCobmiscid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; DELETE FROM cobmisc WHERE (cobmisc_id=pCobmiscid); RETURN 0; END; $_$; ALTER FUNCTION public.releaseunusedbillingheader(integer) OWNER TO admin; -- -- Name: releasevonumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releasevonumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('VcNumber', $1) > 0; $_$; ALTER FUNCTION public.releasevonumber(integer) OWNER TO admin; -- -- Name: releasewo(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releasewo(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; releaseChildren ALIAS FOR $2; returnCode INTEGER; BEGIN UPDATE wo SET wo_status='R' WHERE ((wo_status='E') AND (wo_id=pWoid)); IF (releaseChildren) THEN returnCode := (SELECT MAX(releaseWo(wo_id, TRUE)) FROM wo WHERE ((wo_ordtype='W') AND (wo_ordid=pWoid))); END IF; RETURN 0; END; $_$; ALTER FUNCTION public.releasewo(integer, boolean) OWNER TO admin; -- -- Name: releasewonumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION releasewonumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('WoNumber', $1) > 0; $_$; ALTER FUNCTION public.releasewonumber(integer) OWNER TO admin; -- -- Name: relocateinventory(integer, integer, integer, numeric, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION relocateinventory(integer, integer, integer, numeric, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN relocateInventory($1, $2, $3, $4, $5, CURRENT_TIMESTAMP); END; $_$; ALTER FUNCTION public.relocateinventory(integer, integer, integer, numeric, text) OWNER TO admin; -- -- Name: relocateinventory(integer, integer, integer, numeric, text, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION relocateinventory(integer, integer, integer, numeric, text, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSourceItemlocid ALIAS FOR $1; pTargetLocationid ALIAS FOR $2; pItemsiteid ALIAS FOR $3; pQty ALIAS FOR $4; pComments ALIAS FOR $5; _GlDistTS TIMESTAMP WITH TIME ZONE := $6; _targetItemlocid INTEGER; _invhistid INTEGER; _p RECORD; _qty NUMERIC; _itemlocSeries INTEGER := NEXTVAL('itemloc_series_seq'); BEGIN IF ((_GlDistTS IS NULL) OR (CAST(_GlDistTS AS date)=CURRENT_DATE)) THEN _GlDistTS := CURRENT_TIMESTAMP; END IF; -- Make sure the passed itemsite points to a real item IF ( ( SELECT (item_type IN ('R', 'F') OR itemsite_costmethod = 'J') FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ) ) ) THEN RETURN 0; END IF; -- Cache some parameters SELECT itemloc_ls_id, itemloc_itemsite_id AS itemsiteid, itemloc_expiration, itemloc_warrpurc, itemloc_qty, sourceloc.location_netable AS sourcenet, targetloc.location_netable AS targetnet INTO _p FROM itemloc, location AS sourceloc, location AS targetloc WHERE ( (itemloc_location_id=sourceloc.location_id) AND (targetloc.location_id=pTargetLocationid) AND (itemloc_id=pSourceItemlocid) ); -- Check to make sure the qty being transfered exists IF (_p.itemloc_qty < pQty) THEN RETURN -1; END IF; -- Create the RL transaction SELECT NEXTVAL('invhist_invhist_id_seq') INTO _invhistid; INSERT INTO invhist ( invhist_id, invhist_itemsite_id, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_comments, invhist_transdate, invhist_invuom, invhist_unitcost, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_series) SELECT _invhistid, itemsite_id, 'RL', 0, itemsite_qtyonhand, itemsite_qtyonhand, pComments, _GlDistTS, uom_name, CASE WHEN (itemsite_costmethod='A') THEN avgcost(itemsite_id) ELSE stdCost(item_id) END, itemsite_costmethod, itemsite_value, itemsite_value, _itemlocSeries FROM item, itemsite, uom WHERE ((itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (itemsite_id=pItemsiteid)); -- Relocate the inventory from the source and record the transactions INSERT INTO invdetail ( invdetail_invhist_id, invdetail_location_id, invdetail_ls_id, invdetail_qty, invdetail_qty_before, invdetail_qty_after, invdetail_expiration, invdetail_warrpurc ) SELECT _invhistid, itemloc_location_id, itemloc_ls_id, (pQty * -1), itemloc_qty, (itemloc_qty - pQty), itemloc_expiration, itemloc_warrpurc FROM itemloc WHERE (itemloc_id=pSourceItemlocid); UPDATE itemloc SET itemloc_qty=(itemloc_qty - pQty) FROM itemsite WHERE ( (itemloc_itemsite_id=itemsite_id) AND (NOT itemsite_freeze) AND (itemloc_id=pSourceItemlocid) ); -- Check to see if there is anything left at the source Itemloc and delete if not DELETE FROM itemloc WHERE ( (itemloc_qty=0) AND (itemloc_id=pSourceItemlocid) ); -- Check to see if any of the current Lot/Serial #/Expiration exists at the target location SELECT itemloc_id INTO _targetItemlocid FROM itemloc WHERE ( (COALESCE(itemloc_ls_id, -1)=COALESCE(_p.itemloc_ls_id,-1)) AND (COALESCE(itemloc_expiration,endOfTime())=COALESCE(_p.itemloc_expiration,endOfTime())) AND (COALESCE(itemloc_warrpurc,endOfTime())=COALESCE(_p.itemloc_warrpurc,endOfTime())) AND (itemloc_itemsite_id=pItemsiteid) AND (itemloc_location_id=pTargetLocationid) ); IF (NOT FOUND) THEN SELECT NEXTVAL('itemloc_itemloc_id_seq') INTO _targetItemlocid; INSERT INTO itemloc ( itemloc_id, itemloc_itemsite_id, itemloc_location_id, itemloc_ls_id, itemloc_expiration, itemloc_warrpurc, itemloc_qty ) VALUES ( _targetItemlocid, pItemsiteid, pTargetLocationid, _p.itemloc_ls_id, _p.itemloc_expiration, _p.itemloc_warrpurc, 0 ); END IF; -- Relocate the inventory to the resultant target and record the transactions INSERT INTO invdetail ( invdetail_invhist_id, invdetail_location_id, invdetail_ls_id, invdetail_qty, invdetail_qty_before, invdetail_qty_after, invdetail_expiration, invdetail_warrpurc ) SELECT _invhistid, pTargetLocationid, _p.itemloc_ls_id, pQty, itemloc_qty, (itemloc_qty + pQty), _p.itemloc_expiration, _p.itemloc_warrpurc FROM itemloc WHERE (itemloc_id=_targetItemlocid); UPDATE itemloc SET itemloc_qty=(itemloc_qty + pQty) FROM itemsite WHERE ( (itemloc_itemsite_id=itemsite_id) AND (NOT itemsite_freeze) AND (itemloc_id=_targetItemlocid) ); UPDATE invhist SET invhist_hasdetail=TRUE WHERE (invhist_id=_invhistid); -- Post in incomming or outgoing NN transaction if required IF (_p.sourcenet <> _p.targetnet) THEN IF (_p.targetnet) THEN _qty = (pQty * -1); ELSE _qty = pQty; END IF; INSERT INTO invhist ( invhist_itemsite_id, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_docnumber, invhist_comments, invhist_transdate, invhist_invuom, invhist_unitcost, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_series) SELECT itemsite_id, 'NN', (_qty * -1), itemsite_qtyonhand, (itemsite_qtyonhand - _qty), '', '', _GlDistTS, uom_name, CASE WHEN (itemsite_costmethod='A') THEN avgcost(itemsite_id) ELSE stdCost(item_id) END, itemsite_costmethod, itemsite_value, itemsite_value, _itemlocSeries FROM item, itemsite, uom WHERE ( (itemsite_item_id=item_id) ANd (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (itemsite_id=_p.itemsiteid) ); UPDATE itemsite SET itemsite_qtyonhand = (itemsite_qtyonhand - _qty), itemsite_nnqoh = (itemsite_nnqoh + _qty) WHERE (itemsite_id=_p.itemsiteid); END IF; -- Check to see if there is anything left at the target Itemloc and delete if not -- Could be zero if relocate increased a negative quantity to zero DELETE FROM itemloc WHERE ( (itemloc_qty=0) AND (itemloc_id=_targetItemlocid) ); -- Return the invhist_id RETURN _invhistid; END; $_$; ALTER FUNCTION public.relocateinventory(integer, integer, integer, numeric, text, timestamp with time zone) OWNER TO admin; -- -- Name: reorderdate(integer, integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION reorderdate(integer, integer, boolean) RETURNS date LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pLookAhead ALIAS FOR $2; pIncludePlanned ALIAS FOR $3; _runningAvailability NUMERIC; _reorderLevel NUMERIC; _availability RECORD; BEGIN -- Make sure that we know how to handle the passed part IF ( SELECT (NOT (item_type IN ('M', 'P'))) FROM item, itemsite WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ) ) THEN RETURN NULL; END IF; -- Load the initial QOH SELECT itemsite_qtyonhand INTO _runningAvailability FROM itemsite WHERE (itemsite_id=pItemsiteid); -- Grab the Reorder Level, if any IF ( ( SELECT itemsite_useparams FROM itemsite WHERE (itemsite_id=pItemsiteid) ) ) THEN SELECT itemsite_reorderlevel INTO _reorderLevel FROM itemsite WHERE (itemsite_id=pItemsiteid); ELSE _reorderLevel := 0; END IF; -- If we are already below the Reorder Level then we should order ASAP IF (_runningAvailability <= _reorderLevel) THEN RETURN CURRENT_DATE; END IF; -- Grab all of the availability trigger points FOR _availability IN SELECT 1 AS seq, wo_duedate AS orderdate, (noNeg(wo_qtyord - wo_qtyrcv)) AS balance FROM wo WHERE ((wo_status IN ('O', 'E', 'R', 'I')) AND (wo_duedate <= (CURRENT_DATE + pLookAhead)) AND (wo_itemsite_id=pItemsiteid)) UNION SELECT 2 AS seq, womatl_duedate AS orderdate, (noNeg(itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyreq - womatl_qtyiss)) * -1) AS balance FROM womatl, wo, itemsite WHERE ((wo_status IN ('O', 'E', 'R', 'I')) AND (womatl_wo_id=wo_id) AND (womatl_itemsite_id=itemsite_id) AND (womatl_duedate <= (CURRENT_DATE + pLookahead)) AND (womatl_itemsite_id=pItemsiteid)) UNION SELECT 1 AS seq, poitem_duedate AS orderdate, (noNeg(poitem_qty_ordered - poitem_qty_received) * poitem_invvenduomratio) AS balance FROM pohead, poitem WHERE ((poitem_pohead_id=pohead_id) AND (poitem_status = 'O') AND (poitem_duedate <= (CURRENT_DATE + pLookAhead)) AND (poitem_itemsite_id=pItemsiteid)) UNION SELECT 2 AS seq, coitem_scheddate AS orderdate, (noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * -1) AS balance FROM coitem, cohead WHERE ((coitem_status = 'O') AND (coitem_cohead_id=cohead_id) AND (coitem_scheddate <= (CURRENT_DATE + pLookAhead)) AND (coitem_itemsite_id=pItemsiteid)) UNION SELECT 2 AS seq, planord_startdate AS orderdate, (planreq_qty * -1) AS balance FROM planreq, planord WHERE ( (pIncludePlanned) AND (planreq_source='P') AND (planreq_source_id=planord_id) AND (planord_startdate <= (CURRENT_DATE + pLookAhead)) AND (planord_itemsite_id=pItemsiteid) ) UNION SELECT 1 AS seq, planord_duedate AS orderdate, planord_qty AS balance FROM planord WHERE ( (pIncludePlanned) AND (planord_duedate <= (CURRENT_DATE + pLookAhead)) AND (planord_itemsite_id=pItemsiteid) ) ORDER BY orderdate, seq LOOP -- Calculate the new projected availability _runningAvailability := (_runningAvailability + _availability.balance); -- Check to see if the project availability drop below the reorder level IF (_runningAvailability < _reorderLevel) THEN RETURN _availability.orderdate; END IF; END LOOP; -- The reorder level was not reached within the look ahead period RETURN NULL; END; $_$; ALTER FUNCTION public.reorderdate(integer, integer, boolean) OWNER TO admin; -- -- Name: replaceallvoidedapchecks(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION replaceallvoidedapchecks(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'replaceAllVoidedAPChecks() is deprecated - use replaceAllVoidedChecks() instead'; RETURN replaceAllVoidedChecks($1); END; $_$; ALTER FUNCTION public.replaceallvoidedapchecks(integer) OWNER TO admin; -- -- Name: replaceallvoidedchecks(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION replaceallvoidedchecks(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankaccntid ALIAS FOR $1; _returnValue INTEGER := 0; BEGIN SELECT MIN(replaceVoidedCheck(checkhead_id)) INTO _returnValue FROM checkhead WHERE ( (checkhead_void) AND (NOT checkhead_posted) AND (NOT checkhead_replaced) AND (NOT checkhead_deleted) AND (checkhead_bankaccnt_id=pBankaccntid) ); RETURN _returnValue; END; $_$; ALTER FUNCTION public.replaceallvoidedchecks(integer) OWNER TO admin; -- -- Name: replacevoidedapcheck(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION replacevoidedapcheck(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'replaceVoidedAPCheck() is deprecated - use replaceVoidedCheck()'; RETURN replaceVoidedCheck($1); END; $_$; ALTER FUNCTION public.replacevoidedapcheck(integer) OWNER TO admin; -- -- Name: replacevoidedcheck(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION replacevoidedcheck(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCheckid ALIAS FOR $1; _newCheckid INTEGER; BEGIN IF ( ( SELECT ( (NOT checkhead_void) OR checkhead_posted OR checkhead_replaced ) FROM checkhead WHERE (checkhead_id=pCheckid) ) ) THEN RETURN -1; END IF; -- has someone created a new check for one of the items while this was void? IF EXISTS (SELECT dup.checkitem_id FROM checkitem orig, checkitem dup, checkhead AS duphead WHERE ((COALESCE(orig.checkitem_aropen_id,-1)=COALESCE(dup.checkitem_aropen_id,-1)) AND (COALESCE(orig.checkitem_apopen_id,-1)=COALESCE(dup.checkitem_apopen_id,-1)) AND (orig.checkitem_checkhead_id!=dup.checkitem_checkhead_id) AND (dup.checkitem_checkhead_id=duphead.checkhead_id) AND (NOT duphead.checkhead_void) AND (orig.checkitem_checkhead_id=pCheckid))) THEN RETURN -2; END IF; SELECT NEXTVAL('checkhead_checkhead_id_seq') INTO _newCheckid; INSERT INTO checkhead ( checkhead_id, checkhead_recip_id, checkhead_recip_type, checkhead_bankaccnt_id, checkhead_checkdate, checkhead_number, checkhead_amount, checkhead_for, checkhead_journalnumber, checkhead_notes, checkhead_misc, checkhead_expcat_id, checkhead_curr_id ) SELECT _newCheckid, checkhead_recip_id, checkhead_recip_type, checkhead_bankaccnt_id, checkhead_checkdate, -1, -- fetchNextCheckNumber(checkhead_bankaccnt_id), checkhead_amount, checkhead_for, checkhead_journalnumber, checkhead_notes || ' Replaces voided check ' || checkhead_number, checkhead_misc, checkhead_expcat_id, checkhead_curr_id FROM checkhead WHERE (checkhead_id=pCheckid); INSERT INTO checkitem ( checkitem_checkhead_id, checkitem_amount, checkitem_discount, checkitem_ponumber, checkitem_vouchernumber, checkitem_invcnumber, checkitem_apopen_id, checkitem_aropen_id, checkitem_docdate, checkitem_curr_id, checkitem_curr_rate ) SELECT _newCheckid, checkitem_amount, checkitem_discount, checkitem_ponumber, checkitem_vouchernumber, checkitem_invcnumber, checkitem_apopen_id, checkitem_aropen_id, checkitem_docdate, checkitem_curr_id, checkitem_curr_rate FROM checkitem WHERE (checkitem_checkhead_id=pCheckid); UPDATE checkhead SET checkhead_replaced=TRUE WHERE (checkhead_id=pCheckid); RETURN _newCheckid; END; $_$; ALTER FUNCTION public.replacevoidedcheck(integer) OWNER TO admin; -- -- Name: reprioritizewo(integer, integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION reprioritizewo(integer, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pPriority ALIAS FOR $2; pChangeChildren ALIAS FOR $3; _status CHAR(1); _result INTEGER; BEGIN SELECT wo_status INTO _status FROM wo WHERE (wo_id=pWoid); IF (NOT (_status IN ('O', 'E','R','I'))) THEN return -1; END IF; UPDATE wo SET wo_priority=pPriority WHERE (wo_id=pWoid); IF ( (_status IN ('E','R','I')) AND (pChangeChildren) ) THEN SELECT COALESCE(MIN(reprioritizeWo(wo_id, pPriority, TRUE)), 1) INTO _result FROM wo WHERE ( (wo_ordtype='W') AND (wo_ordid=pWoid) ); ELSE _result = 1; END IF; RETURN _result; END; $_$; ALTER FUNCTION public.reprioritizewo(integer, integer, boolean) OWNER TO admin; -- -- Name: resetdbobjperms(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION resetdbobjperms(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pObjname ALIAS FOR $1; BEGIN EXECUTE 'ALTER TABLE ' || pObjname || ' OWNER TO ' || getEffectiveXtUser() || ';'; EXECUTE 'REVOKE ALL ON ' || pObjname || ' FROM PUBLIC;'; EXECUTE 'GRANT ALL ON ' || pObjname || ' TO GROUP xtrole;'; RETURN 1; END; $_$; ALTER FUNCTION public.resetdbobjperms(text) OWNER TO admin; -- -- Name: resetdbobjperms(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION resetdbobjperms() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _count INTEGER := 0; BEGIN SELECT SUM(resetDBObjPerms(nspname || '.' || relname)) INTO _count FROM pg_catalog.pg_class, pg_catalog.pg_namespace WHERE (relkind IN ('r', 'S', 'v') AND (relnamespace=pg_namespace.oid) AND (nspname IN ('public', 'api'))); RETURN _count; END; $$; ALTER FUNCTION public.resetdbobjperms() OWNER TO admin; -- -- Name: resetlowlevelcode(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION resetlowlevelcode(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemId ALIAS FOR $1; _result INTEGER; _counterNum INTEGER := 1; _feedBackNum INTEGER := 1; _r RECORD; BEGIN DELETE FROM costUpdate; IF pItemId = -1 THEN -- -1 is an invalid item_id => do them all INSERT INTO costUpdate ( costUpdate_item_id, costUpdate_item_type ) SELECT item_id, item_type FROM item; -- Recalculate the Item Lowlevel codes WHILE _feedBackNum > 0 LOOP SELECT updateLowlevel(_counterNum) INTO _feedBackNum; _counterNum := _counterNum + 1; END LOOP; ELSE INSERT INTO costUpdate ( costUpdate_item_id, costUpdate_item_type ) SELECT item_id, item_type FROM item WHERE (item_id=pItemId); FOR _r IN SELECT item_id, bomdata_bomwork_level, item_type FROM item, indentedBOM(pItemId, getActiveRevId('BOM',pItemId),0,0) WHERE (bomdata_item_id=item_id) ORDER BY bomdata_bomwork_level LOOP -- this only works because of the ORDER BY in the loop SELECT UPDATE costUpdate SET costupdate_lowlevel_code = _r.bomdata_bomwork_level WHERE (costupdate_item_id=_r.item_id); IF (NOT FOUND) THEN INSERT INTO costUpdate ( costUpdate_item_id, costUpdate_lowlevel_code, costUpdate_item_type ) VALUES ( _r.item_id, _r.bomdata_bomwork_level, _r.item_type ); END IF; END LOOP; END IF; SELECT count(*) INTO _result FROM costUpdate; RETURN _result; END; $_$; ALTER FUNCTION public.resetlowlevelcode(integer) OWNER TO admin; -- -- Name: resetqohbalance(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION resetqohbalance(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN resetQOHBalance($1, CURRENT_TIMESTAMP); END; $_$; ALTER FUNCTION public.resetqohbalance(integer) OWNER TO admin; -- -- Name: resetqohbalance(integer, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION resetqohbalance(integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pGlDistTS ALIAS FOR $2; _invhistid INTEGER; _itemlocSeries INTEGER; BEGIN IF ( ( SELECT ( (itemsite_controlmethod IN ('L', 'S')) OR (item_type = 'R') OR (itemsite_costmethod = 'J') OR (itemsite_loccntrl) OR (itemsite_qtyonhand > 0) ) FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ) ) ) THEN RETURN 0; END IF; _itemlocSeries := NEXTVAL('itemloc_series_seq'); SELECT postInvTrans( itemsite_id, 'AD', (itemsite_qtyonhand * -1), 'I/M', '', '', 'RESET', 'Reset QOH Balance to 0', costcat_asset_accnt_id, costcat_adjustment_accnt_id, _itemlocSeries, pGlDistTS ) INTO _invhistid FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=pItemsiteid) ); PERFORM postItemLocSeries(_itemlocSeries); RETURN _invhistid; END; $_$; ALTER FUNCTION public.resetqohbalance(integer, timestamp with time zone) OWNER TO admin; -- -- Name: resolvecosaccount(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION resolvecosaccount(integer, integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN resolveCOSAccount($1, $2, -1, -1); END; $_$; ALTER FUNCTION public.resolvecosaccount(integer, integer) OWNER TO admin; -- -- Name: resolvecosaccount(integer, integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION resolvecosaccount(pitemsiteid integer, pcustid integer, psaletypeid integer, pshipzoneid integer) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _salesaccntid INTEGER; _accntid INTEGER; BEGIN SELECT findSalesAccnt(pItemsiteid, 'IS', pCustid, pSaletypeid, pShipzoneid) INTO _salesaccntid; IF (_salesaccntid = -1) THEN SELECT getUnassignedAccntId() INTO _accntid; ELSE SELECT salesaccnt_cos_accnt_id INTO _accntid FROM salesaccnt WHERE (salesaccnt_id=_salesaccntid); END IF; RETURN _accntid; END; $$; ALTER FUNCTION public.resolvecosaccount(pitemsiteid integer, pcustid integer, psaletypeid integer, pshipzoneid integer) OWNER TO admin; -- -- Name: resolvecowaccount(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION resolvecowaccount(integer, integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN resolveCOWAccount($1, $2, -1, -1); END; $_$; ALTER FUNCTION public.resolvecowaccount(integer, integer) OWNER TO admin; -- -- Name: resolvecowaccount(integer, integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION resolvecowaccount(pitemsiteid integer, pcustid integer, psaletypeid integer, pshipzoneid integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _salesaccntid INTEGER; _accntid INTEGER; BEGIN SELECT findSalesAccnt(pItemsiteid, 'IS', pCustid, pSaletypeid, pShipzoneid) INTO _salesaccntid; IF (_salesaccntid = -1) THEN SELECT getUnassignedAccntId() INTO _accntid; ELSE SELECT salesaccnt_cow_accnt_id INTO _accntid FROM salesaccnt WHERE (salesaccnt_id=_salesaccntid); END IF; RETURN _accntid; END; $$; ALTER FUNCTION public.resolvecowaccount(pitemsiteid integer, pcustid integer, psaletypeid integer, pshipzoneid integer) OWNER TO admin; -- -- Name: resolvecreditaccount(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION resolvecreditaccount(integer, integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN resolveCreditAccount($1, $2, -1, -1); END; $_$; ALTER FUNCTION public.resolvecreditaccount(integer, integer) OWNER TO admin; -- -- Name: resolvecreditaccount(integer, integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION resolvecreditaccount(pitemsiteid integer, pcustid integer, psaletypeid integer, pshipzoneid integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _salesaccntid INTEGER; _accntid INTEGER; BEGIN SELECT findSalesAccnt(pItemsiteid, 'IS', pCustid, pSaletypeid, pShipzoneid) INTO _salesaccntid; IF (_salesaccntid = -1) THEN SELECT getUnassignedAccntId() INTO _accntid; ELSE SELECT salesaccnt_credit_accnt_id INTO _accntid FROM salesaccnt WHERE (salesaccnt_id=_salesaccntid); END IF; RETURN _accntid; END; $$; ALTER FUNCTION public.resolvecreditaccount(pitemsiteid integer, pcustid integer, psaletypeid integer, pshipzoneid integer) OWNER TO admin; -- -- Name: resolvesalesaccount(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION resolvesalesaccount(integer, integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN resolveSalesAccount($1, $2, -1, -1); END; $_$; ALTER FUNCTION public.resolvesalesaccount(integer, integer) OWNER TO admin; -- -- Name: resolvesalesaccount(integer, integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION resolvesalesaccount(pitemsiteid integer, pcustid integer, psaletypeid integer, pshipzoneid integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _salesaccntid INTEGER; _accntid INTEGER; BEGIN SELECT findSalesAccnt(pItemsiteid, 'IS', pCustid, pSaletypeid, pShipzoneid) INTO _salesaccntid; IF (_salesaccntid = -1) THEN SELECT getUnassignedAccntId() INTO _accntid; ELSE SELECT salesaccnt_sales_accnt_id INTO _accntid FROM salesaccnt WHERE (salesaccnt_id=_salesaccntid); END IF; RETURN _accntid; END; $$; ALTER FUNCTION public.resolvesalesaccount(pitemsiteid integer, pcustid integer, psaletypeid integer, pshipzoneid integer) OWNER TO admin; -- -- Name: restoresaleshistory(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION restoresaleshistory(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAsohistid ALIAS FOR $1; BEGIN INSERT INTO cohist ( cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipdate, cohist_invcdate, cohist_duedate, cohist_promisedate, cohist_ordernumber, cohist_invcnumber, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_shipto_id, cohist_shipvia, cohist_salesrep_id, cohist_misc_type, cohist_misc_descrip, cohist_misc_id, cohist_commission, cohist_commissionpaid, cohist_doctype, cohist_orderdate, cohist_imported, cohist_ponumber, cohist_curr_id, cohist_taxtype_id, cohist_taxzone_id ) SELECT asohist_id, CASE asohist_cust_id WHEN -1 THEN NULL ELSE asohist_cust_id END, asohist_itemsite_id, asohist_shipdate, asohist_invcdate, asohist_duedate, asohist_promisedate, asohist_ordernumber, asohist_invcnumber, asohist_qtyshipped, asohist_unitprice, asohist_unitcost, asohist_billtoname, asohist_billtoaddress1, asohist_billtoaddress2, asohist_billtoaddress3, asohist_billtocity, asohist_billtostate, asohist_billtozip, asohist_shiptoname, asohist_shiptoaddress1, asohist_shiptoaddress2, asohist_shiptoaddress3, asohist_shiptocity, asohist_shiptostate, asohist_shiptozip, asohist_shipto_id, asohist_shipvia, CASE asohist_salesrep_id WHEN -1 THEN NULL ELSE asohist_salesrep_id END, asohist_misc_type, asohist_misc_descrip, asohist_misc_id, asohist_commission, asohist_commissionpaid, asohist_doctype, asohist_orderdate, asohist_imported, asohist_ponumber, asohist_curr_id, asohist_taxtype_id, asohist_taxzone_id FROM asohist WHERE (asohist_id=pAsohistid); INSERT INTO cohisttax ( taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM asohisttax WHERE (taxhist_parent_id=pAsohistid); DELETE FROM asohisttax WHERE (taxhist_parent_id=pAsohistid); DELETE FROM asohist WHERE (asohist_id=pAsohistid); RETURN pAsohistid; END; $_$; ALTER FUNCTION public.restoresaleshistory(integer) OWNER TO admin; -- -- Name: returncompleteshipment(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION returncompleteshipment(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN returnCompleteShipment($1, 0, CURRENT_TIMESTAMP); END; $_$; ALTER FUNCTION public.returncompleteshipment(integer) OWNER TO admin; -- -- Name: returncompleteshipment(integer, integer, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION returncompleteshipment(integer, integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pshipheadid ALIAS FOR $1; _itemlocSeries INTEGER := $2; _timestamp TIMESTAMP WITH TIME ZONE := $3; _r RECORD; _result RECORD; _shiphead_number TEXT := ''; _count INTEGER := 0; _countsum INTEGER := 0; BEGIN FOR _r IN SELECT shipitem_id FROM shipitem, shiphead WHERE ( (shipitem_shiphead_id=shiphead_id) AND (NOT shiphead_shipped) AND (shiphead_id=pshipheadid) ) LOOP _itemlocSeries := returnShipmentTransaction(_r.shipitem_id, _itemlocSeries, _timestamp); END LOOP; FOR _result IN SELECT shiphead_number FROM shiphead WHERE ( (shiphead_id=pshipheadid) ) LOOP _shiphead_number := _result.shiphead_number; END LOOP; SELECT COUNT(*) INTO _count FROM shipdata WHERE(shipdata_shiphead_number=_shiphead_number); SELECT COUNT(*) INTO _countsum FROM shipdatasum WHERE(shipdatasum_shiphead_number=_shiphead_number); IF (_count > 0) THEN DELETE FROM shipdata WHERE(shipdata_shiphead_number=_shiphead_number); END IF; IF (_countsum > 0) THEN DELETE FROM shipdatasum WHERE(shipdatasum_shiphead_number=_shiphead_number); END IF; DELETE FROM pack WHERE(pack_shiphead_id=pshipheadid); DELETE FROM shiphead WHERE (shiphead_id=pshipheadid); RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.returncompleteshipment(integer, integer, timestamp with time zone) OWNER TO admin; -- -- Name: returnitemshipments(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION returnitemshipments(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN returnItemShipments('SO', $1, $2, CURRENT_TIMESTAMP); END; $_$; ALTER FUNCTION public.returnitemshipments(integer, integer) OWNER TO admin; -- -- Name: returnitemshipments(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION returnitemshipments(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN returnItemShipments('SO', $1, 0, CURRENT_TIMESTAMP); END; $_$; ALTER FUNCTION public.returnitemshipments(integer) OWNER TO admin; -- -- Name: returnitemshipments(text, integer, integer, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION returnitemshipments(text, integer, integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; pitemid ALIAS FOR $2; _itemlocSeries INTEGER := $3; _timestamp TIMESTAMP WITH TIME ZONE := $4; _invhistid INTEGER; _r RECORD; BEGIN IF (COALESCE(_itemlocSeries,0) = 0 ) THEN _itemlocSeries := NEXTVAL('itemloc_series_seq'); END IF; FOR _r IN SELECT shipitem_id FROM shipitem JOIN shiphead ON (shiphead_id=shipitem_shiphead_id) WHERE ((NOT shiphead_shipped) AND (shiphead_order_type=pordertype) AND (shipitem_orderitem_id=pitemid)) LOOP SELECT returnShipmentTransaction(_r.shipitem_id, _itemlocSeries, _timestamp) INTO _itemlocSeries; IF (_itemlocSeries < 0) THEN RETURN _itemlocSeries; END IF; END LOOP; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.returnitemshipments(text, integer, integer, timestamp with time zone) OWNER TO admin; -- -- Name: returnshipmenttransaction(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION returnshipmenttransaction(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN returnShipmentTransaction($1, 0, CURRENT_TIMESTAMP); END; $_$; ALTER FUNCTION public.returnshipmenttransaction(integer) OWNER TO admin; -- -- Name: returnshipmenttransaction(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION returnshipmenttransaction(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN returnShipmentTransaction($1, $2, CURRENT_TIMESTAMP); END; $_$; ALTER FUNCTION public.returnshipmenttransaction(integer, integer) OWNER TO admin; -- -- Name: returnshipmenttransaction(integer, integer, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION returnshipmenttransaction(integer, integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipitemId ALIAS FOR $1; pItemlocSeries ALIAS FOR $2; pTimestamp ALIAS FOR $3; _itemlocSeries INTEGER; _invhistid INTEGER; _itemlocrsrvid INTEGER; _coheadid INTEGER; _rows INTEGER; _r RECORD; _rsrv RECORD; BEGIN IF (COALESCE(pItemlocSeries, 0) = 0 ) THEN _itemlocSeries := NEXTVAL('itemloc_series_seq'); ELSE _itemlocSeries := pItemlocSeries; END IF; -- Find the shipment transaction record SELECT shipitem.*, shiphead_id, shiphead_number, shiphead_order_type, invhist_series, itemsite_loccntrl, itemsite_costmethod, itemsite_controlmethod, cohead_prj_id AS prj_id INTO _r FROM shipitem JOIN shiphead ON (shiphead_id=shipitem_shiphead_id) JOIN invhist ON (invhist_id=shipitem_invhist_id) JOIN itemsite ON (itemsite_id=invhist_itemsite_id) LEFT OUTER JOIN cohead ON ((shiphead_order_type = 'SO') AND (shiphead_order_id = cohead_id)) WHERE ((NOT shiphead_shipped) AND (shipitem_id=pShipitemId)); GET DIAGNOSTICS _rows = ROW_COUNT; IF (_rows = 0 ) THEN -- Was it a non-controlled sales order item? SELECT shipitem.*, shiphead_id, shiphead_number, shiphead_order_type, itemsite_loccntrl, itemsite_costmethod, itemsite_controlmethod, cohead_prj_id AS prj_id INTO _r FROM shipitem JOIN shiphead ON (shiphead_id=shipitem_shiphead_id) JOIN coitem ON (shipitem_orderitem_id=coitem_id) JOIN cohead ON (cohead_id=coitem_cohead_id) JOIN itemsite ON (itemsite_id=coitem_itemsite_id) WHERE ((NOT shiphead_shipped) AND (shipitem_id=pShipitemId) AND (shiphead_order_type = 'SO')); END IF; GET DIAGNOSTICS _rows = ROW_COUNT; IF (_rows = 0 AND fetchmetricbool('MultiWhs') ) THEN -- Was it a non-controlled transfer order item? SELECT shipitem.*, shiphead_id, shiphead_number, shiphead_order_type, itemsite_loccntrl, itemsite_costmethod, itemsite_controlmethod, NULL AS prj_id INTO _r FROM shipitem JOIN shiphead ON (shiphead_id=shipitem_shiphead_id) JOIN toitem ON (shipitem_orderitem_id=toitem_id) JOIN itemsite ON (itemsite_id=coitem_itemsite_id) WHERE ((NOT shiphead_shipped) AND (shipitem_id=pShipitemId) AND (shiphead_order_type = 'TO')); END IF; IF (_rows > 0 ) THEN IF (_r.shiphead_order_type = 'SO') THEN -- Handle inventory transaction IF (_r.itemsite_controlmethod != 'N' OR _r.itemsite_costmethod = 'J') THEN SELECT postInvTrans( itemsite_id, 'RS', (_r.shipitem_qty * coitem_qty_invuomratio), 'S/R', _r.shiphead_order_type, formatSoNumber(_r.shipitem_orderitem_id), shiphead_number, 'Return from Shipping', costcat_asset_accnt_id, getPrjAccntId(_r.prj_id, costcat_shipasset_accnt_id), _itemlocSeries, pTimestamp, _r.shipitem_value, _r.shipitem_invhist_id ) INTO _invhistid FROM coitem, itemsite, costcat, shiphead, shipitem WHERE ((coitem_itemsite_id=itemsite_id) AND (itemsite_costcat_id=costcat_id) AND (coitem_id=_r.shipitem_orderitem_id) AND (shiphead_order_type=_r.shiphead_order_type) AND (shiphead_id=shipitem_shiphead_id) AND (shipitem_orderitem_id=_r.shipitem_orderitem_id)); -- We know the distribution so post this through so the any w/o activity knows about it PERFORM postItemlocseries(_itemlocSeries); END IF; IF (_r.itemsite_costmethod = 'J') THEN -- Reopen the work order UPDATE wo SET wo_status = 'I' WHERE ((wo_ordtype='S') AND (wo_ordid=_r.shipitem_orderitem_id)); -- Job cost, so correct Production Posting referencing original receipt for reverse info. PERFORM correctProduction(wo_id, invhist_invqty, false, _itemlocSeries, pTimestamp, invhist_id) FROM wo, invhist WHERE ((wo_ordtype = 'S') AND (wo_ordid = _r.shipitem_orderitem_id) AND (invhist_series=_r.invhist_series) AND (invhist_transtype='RM')); -- Return eligble material PERFORM returnWoMaterial(womatlpost_womatl_id, _itemlocSeries, pTimestamp, womatlpost_invhist_id) FROM womatlpost, invhist m, invhist s WHERE ((womatlpost_invhist_id=m.invhist_id) AND (m.invhist_series=s.invhist_series) AND (m.invhist_transtype='IM') AND (s.invhist_id=_r.shipitem_invhist_id)); END IF; -- end Job Costing ELSIF (_r.shiphead_order_type = 'TO') THEN SELECT postInvTrans(itemsite_id, 'RS', _r.shipitem_qty, 'S/R', _r.shiphead_order_type, formatToNumber(toitem_id), tohead_number, 'Return from Shipping', costcat_asset_accnt_id, costcat_shipasset_accnt_id, _itemlocSeries, pTimestamp, _r.shipitem_value, _r.shipitem_invhist_id ) INTO _invhistid FROM toitem, tohead, itemsite, costcat WHERE ((toitem_item_id=itemsite_item_id) AND (toitem_tohead_id=tohead_id) AND (tohead_src_warehous_id=itemsite_warehous_id) AND (itemsite_costcat_id=costcat_id) AND (toitem_id=_r.shipitem_orderitem_id)); ELSE -- Don't know what kind of order this is RETURN -11; END IF; UPDATE shiphead SET shiphead_sfstatus='D' WHERE ((shiphead_id=_r.shiphead_id) AND (shiphead_sfstatus='P')); -- Handle reservation if applicable IF (fetchmetricbool('EnableSOReservations')) THEN UPDATE coitem SET coitem_qtyreserved = (coitem_qtyreserved + shipitemrsrv_qty) FROM shipitemrsrv WHERE ((coitem_id=_r.shipitem_orderitem_id) AND (shipitemrsrv_shipitem_id=_r.shipitem_id)); -- Handle location reservations if applicable FOR _rsrv IN SELECT * FROM shipitemlocrsrv WHERE (shipitemlocrsrv_shipitem_id=_r.shipitem_id) LOOP -- See if a reservation record still exists SELECT itemlocrsrv_id, itemlocrsrv_qty INTO _itemlocrsrvid FROM itemlocrsrv JOIN itemloc ON (itemlocrsrv_itemloc_id=itemloc_id) WHERE ((itemlocrsrv_source = 'SO') AND (itemlocrsrv_source_id = _r.shipitem_orderitem_id ) AND (itemloc_itemsite_id=_rsrv.shipitemlocrsrv_itemsite_id) AND (itemloc_location_id=_rsrv.shipitemlocrsrv_location_id) AND (COALESCE(itemloc_ls_id, -1)=COALESCE(_rsrv.shipitemlocrsrv_ls_id, -1)) AND (COALESCE(itemloc_expiration, endOfTime())=COALESCE(_rsrv.shipitemlocrsrv_expiration, endOfTime())) AND (COALESCE(itemloc_warrpurc, endoftime())=COALESCE(_rsrv.shipitemlocrsrv_warrpurc, endoftime())) ); GET DIAGNOSTICS _rows = ROW_COUNT; IF (_rows > 0 ) THEN -- Update existing UPDATE itemlocrsrv SET itemlocrsrv_qty = (itemlocrsrv_qty + _rsrv.shipitemlocrsrv_qty) WHERE (itemlocrsrv_id=_itemlocrsvrid); ELSE -- Recreate record INSERT INTO itemlocrsrv SELECT nextval('itemlocrsrv_itemlocrsrv_id_seq'), 'SO', _r.shipitem_orderitem_id, itemloc_id, _rsrv.shipitemlocrsrv_qty FROM itemloc WHERE ((itemloc_itemsite_id=_rsrv.shipitemlocrsrv_itemsite_id) AND (itemloc_location_id=_rsrv.shipitemlocrsrv_location_id) AND (COALESCE(itemloc_ls_id, -1)=COALESCE(_rsrv.shipitemlocrsrv_ls_id, -1)) AND (COALESCE(itemloc_expiration, endOfTime())=COALESCE(_rsrv.shipitemlocrsrv_expiration, endOfTime())) AND (COALESCE(itemloc_warrpurc, endoftime())=COALESCE(_rsrv.shipitemlocrsrv_warrpurc, endoftime())) ); END IF; END LOOP; END IF; DELETE FROM shipitem WHERE (shipitem_id = _r.shipitem_id ); -- Clean up if this is the last shipitem on the shipment IF (NOT EXISTS(SELECT shipitem_shiphead_id FROM shipitem WHERE (shipitem_shiphead_id=_r.shiphead_id))) THEN DELETE FROM shipdata WHERE(shipdata_shiphead_number=_r.shiphead_number); DELETE FROM shipdatasum WHERE(shipdatasum_shiphead_number=_r.shiphead_number); DELETE FROM pack WHERE(pack_shiphead_id=_r.shiphead_id); DELETE FROM shiphead WHERE (shiphead_id=_r.shiphead_id); END IF; END IF; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.returnshipmenttransaction(integer, integer, timestamp with time zone) OWNER TO admin; -- -- Name: returnwomaterial(integer, numeric, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION returnwomaterial(integer, numeric, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; pGlDistTS ALIAS FOR $3; _itemlocSeries INTEGER; BEGIN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; RETURN returnWoMaterial(pWomatlid, pQty, _itemlocSeries, pGlDistTS); END; $_$; ALTER FUNCTION public.returnwomaterial(integer, numeric, timestamp with time zone) OWNER TO admin; -- -- Name: returnwomaterial(integer, integer, timestamp with time zone, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION returnwomaterial(integer, integer, timestamp with time zone, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pItemlocSeries ALIAS FOR $2; pGlDistTS ALIAS FOR $3; pInvhistId ALIAS FOR $4; _woNumber TEXT; _invhistid INTEGER; _itemlocSeries INTEGER; _invqty NUMERIC; _womatlqty NUMERIC; _cost NUMERIC := 0; _rows INTEGER; BEGIN _itemlocSeries := 0; SELECT invhist_invqty, invhist_invqty * invhist_unitcost INTO _invqty, _cost FROM invhist WHERE (invhist_id=pInvhistId); GET DIAGNOSTICS _rows = ROW_COUNT; IF (_rows = 0) THEN RAISE EXCEPTION 'No transaction found for invhist_id %', pInvhistId; END IF; SELECT itemuomtouom(itemsite_item_id, NULL, womatl_uom_id, _invqty) INTO _womatlqty FROM womatl, itemsite WHERE((womatl_itemsite_id=itemsite_id) AND (womatl_id=pWomatlid)); GET DIAGNOSTICS _rows = ROW_COUNT; IF (_rows = 0) THEN _womatlqty := _invqty; END IF; IF ( SELECT ( CASE WHEN (womatl_qtyreq >= 0) THEN womatl_qtyiss < _womatlqty ELSE womatl_qtyiss > _womatlqty END ) FROM womatl WHERE ( womatl_id=pWomatlid ) ) THEN RETURN pItemlocSeries; END IF; SELECT formatWoNumber(womatl_wo_id) INTO _woNumber FROM womatl WHERE (womatl_id=pWomatlid); IF (pItemlocSeries = 0) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; ELSE _itemlocSeries = pItemlocSeries; END IF; -- Post the transaction SELECT postInvTrans( ci.itemsite_id, 'IM', (_invqty * -1), 'W/O', 'WO', _woNumber, '', ('Return ' || item_number || ' from Work Order'), getPrjAccntId(wo_prj_id, pc.costcat_wip_accnt_id), cc.costcat_asset_accnt_id, _itemlocSeries, pGlDistTS, -- Cost will be ignored by Standard Cost items sites _cost, pInvhistId) INTO _invhistid FROM womatl, wo, itemsite AS ci, costcat AS cc, itemsite AS pi, costcat AS pc, item WHERE((womatl_itemsite_id=ci.itemsite_id) AND (ci.itemsite_costcat_id=cc.costcat_id) AND (womatl_wo_id=wo_id) AND (wo_itemsite_id=pi.itemsite_id) AND (pi.itemsite_costcat_id=pc.costcat_id) AND (ci.itemsite_item_id=item_id) AND (womatl_id=pWomatlid) ); -- Create linkage to the transaction created INSERT INTO womatlpost (womatlpost_womatl_id,womatlpost_invhist_id) VALUES (pWomatlid,_invhistid); -- Decrease the parent W/O's WIP value by the value of the returned components UPDATE wo SET wo_wipvalue = (wo_wipvalue - (CASE WHEN(itemsite_costmethod IN ('A','J')) THEN _cost WHEN(itemsite_costmethod='S') THEN stdcost(itemsite_item_id) * _invqty ELSE 0.0 END )), wo_postedvalue = (wo_postedvalue - (CASE WHEN(itemsite_costmethod IN ('A','J')) THEN _cost WHEN(itemsite_costmethod='S') THEN stdcost(itemsite_item_id) * _invqty ELSE 0.0 END )) FROM womatl, itemsite WHERE ( (wo_id=womatl_wo_id) AND (womatl_itemsite_id=itemsite_id) AND (womatl_id=pWomatlid) ); UPDATE womatl SET womatl_qtyiss = (womatl_qtyiss - _womatlqty), womatl_lastreturn = CURRENT_DATE WHERE (womatl_id=pWomatlid); RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.returnwomaterial(integer, integer, timestamp with time zone, integer) OWNER TO admin; -- -- Name: FUNCTION returnwomaterial(integer, integer, timestamp with time zone, integer); Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON FUNCTION returnwomaterial(integer, integer, timestamp with time zone, integer) IS 'Returns material by reversing a specific historical transaction'; -- -- Name: returnwomaterial(integer, numeric, integer, timestamp with time zone, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION returnwomaterial(integer, numeric, integer, timestamp with time zone, boolean DEFAULT false) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; pItemlocSeries ALIAS FOR $3; pGlDistTS ALIAS FOR $4; pReqStdCost ALIAS FOR $5; _woNumber TEXT; _invhistid INTEGER; _itemlocSeries INTEGER; _qty NUMERIC; _cost NUMERIC := 0; BEGIN _itemlocSeries := 0; IF ( SELECT ( CASE WHEN (womatl_qtyreq >= 0) THEN womatl_qtyiss < pQty ELSE womatl_qtyiss > pQty END ) FROM womatl WHERE ( womatl_id=pWomatlid ) ) THEN RETURN pItemlocSeries; END IF; SELECT itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, pQty) INTO _qty FROM womatl, itemsite WHERE((womatl_itemsite_id=itemsite_id) AND (womatl_id=pWomatlid)); IF (NOT FOUND) THEN _qty := pQty; END IF; SELECT formatWoNumber(womatl_wo_id) INTO _woNumber FROM womatl WHERE (womatl_id=pWomatlid); IF (pItemlocSeries = 0) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; ELSE _itemlocSeries = pItemlocSeries; END IF; -- Get the cost average IF (pReqStdCost) THEN SELECT stdcost(itemsite_item_id) * _qty INTO _cost FROM womatl, itemsite WHERE((womatl_itemsite_id=itemsite_id) AND (womatl_id=pWomatlid)); ELSE SELECT SUM(invhist_value_before - invhist_value_after) / SUM(invhist_qoh_before - invhist_qoh_after) * _qty INTO _cost FROM invhist, womatlpost, womatl WHERE((womatlpost_womatl_id=womatl_id) AND (womatlpost_invhist_id=invhist_id) AND (invhist_qoh_before > invhist_qoh_after) AND (womatl_id=pWomatlId)); END IF; _cost := COALESCE(_cost, 0); -- make sure it's not a null value -- Post the transaction SELECT postInvTrans( ci.itemsite_id, 'IM', (_qty * -1), 'W/O', 'WO', _woNumber, '', ('Return ' || item_number || ' from Work Order'), getPrjAccntId(wo_prj_id, pc.costcat_wip_accnt_id), cc.costcat_asset_accnt_id, _itemlocSeries, pGlDistTS, -- Cost will be ignored by Standard Cost items sites _cost) INTO _invhistid FROM womatl, wo, itemsite AS ci, costcat AS cc, itemsite AS pi, costcat AS pc, item WHERE((womatl_itemsite_id=ci.itemsite_id) AND (ci.itemsite_costcat_id=cc.costcat_id) AND (womatl_wo_id=wo_id) AND (wo_itemsite_id=pi.itemsite_id) AND (pi.itemsite_costcat_id=pc.costcat_id) AND (ci.itemsite_item_id=item_id) AND (womatl_id=pWomatlid) ); -- Create linkage to the transaction created IF (_invhistid != -1) THEN INSERT INTO womatlpost (womatlpost_womatl_id,womatlpost_invhist_id) VALUES (pWomatlid,_invhistid); END IF; -- Decrease the parent W/O's WIP value by the value of the returned components UPDATE wo SET wo_wipvalue = (wo_wipvalue - (CASE WHEN(itemsite_costmethod IN ('A','J')) THEN _cost WHEN(itemsite_costmethod='S') THEN stdcost(itemsite_item_id) * _qty ELSE 0.0 END )), wo_postedvalue = (wo_postedvalue - (CASE WHEN(itemsite_costmethod IN ('A','J')) THEN _cost WHEN(itemsite_costmethod='S') THEN stdcost(itemsite_item_id) * _qty ELSE 0.0 END )) FROM womatl, itemsite WHERE ( (wo_id=womatl_wo_id) AND (womatl_itemsite_id=itemsite_id) AND (womatl_id=pWomatlid) ); UPDATE womatl SET womatl_qtyiss = (womatl_qtyiss - pQty), womatl_lastreturn = CURRENT_DATE WHERE (womatl_id=pWomatlid); RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.returnwomaterial(integer, numeric, integer, timestamp with time zone, boolean) OWNER TO admin; -- -- Name: returnwomaterialbatch(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION returnwomaterialbatch(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; _itemlocSeries INTEGER; _woid INTEGER; _r RECORD; BEGIN SELECT wo_id INTO _woid FROM wo WHERE ( (wo_status IN ('E','I')) AND (wo_id=pWoid) ); IF (FOUND) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; FOR _r IN SELECT womatl_id, CASE WHEN wo_qtyord >= 0 THEN womatl_qtyiss ELSE ((womatl_qtyreq - womatl_qtyiss) * -1) END AS qty FROM wo, womatl, itemsite WHERE ((wo_id=womatl_wo_id) AND (womatl_itemsite_id=itemsite_id) AND ( (wo_qtyord < 0) OR (womatl_issuemethod IN ('S','M')) ) AND (womatl_wo_id=pWoid)) LOOP IF (_r.qty != 0) THEN PERFORM returnWoMaterial(_r.womatl_id, _r.qty, _itemlocSeries, now()); END IF; END LOOP; -- Reset the W/O Status to E UPDATE wo SET wo_status='E' WHERE (wo_id=pWoid); RETURN _itemlocSeries; ELSE RETURN -1; END IF; END; $_$; ALTER FUNCTION public.returnwomaterialbatch(integer) OWNER TO admin; -- -- Name: reversecashreceipt(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION reversecashreceipt(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCashrcptid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; _p RECORD; _r RECORD; _postToAR NUMERIC; _postToMisc NUMERIC; _posted_base NUMERIC := 0; _posted NUMERIC := 0; _sequence INTEGER; _aropenid INTEGER; _arMemoNumber TEXT; _arAccntid INTEGER; _closed BOOLEAN; _debitAccntid INTEGER; _exchGain NUMERIC; _comment TEXT; BEGIN _posted := 0; _posted_base := 0; SELECT fetchGLSequence() INTO _sequence; SELECT accnt_id INTO _arAccntid FROM cashrcpt, accnt, salescat WHERE ((cashrcpt_salescat_id=salescat_id) AND (salescat_ar_accnt_id=accnt_id) AND (cashrcpt_id=pCashrcptid)); IF (NOT FOUND) THEN SELECT accnt_id INTO _arAccntid FROM cashrcpt, accnt WHERE ( (findARAccount(cashrcpt_cust_id)=accnt_id) AND (cashrcpt_id=pCashrcptid) ); IF (NOT FOUND) THEN RETURN -5; END IF; END IF; SELECT cashrcpt_cust_id, ('Reverse Cash Receipt posting for ' || cust_number||'-'||cust_name) AS custnote, cashrcpt_fundstype, cashrcpt_number, cashrcpt_docnumber, cashrcpt_distdate, cashrcpt_amount, cashrcpt_discount, (cashrcpt_amount / cashrcpt_curr_rate) AS cashrcpt_amount_base, (cashrcpt_discount / cashrcpt_curr_rate) AS cashrcpt_discount_base, cashrcpt_notes, cashrcpt_bankaccnt_id AS bankaccnt_id, accnt_id AS prepaid_accnt_id, cashrcpt_usecustdeposit, cashrcpt_curr_id, cashrcpt_curr_rate INTO _p FROM accnt, cashrcpt LEFT OUTER JOIN custinfo ON (cashrcpt_cust_id=cust_id) WHERE ( (findPrepaidAccount(cashrcpt_cust_id)=accnt_id) AND (cashrcpt_id=pCashrcptid) ); IF (NOT FOUND) THEN RETURN -7; END IF; IF (_p.cashrcpt_fundstype IN ('A', 'D', 'M', 'V')) THEN IF NOT EXISTS(SELECT ccpay_id FROM ccpay WHERE ((ccpay_order_number=CAST(pCashrcptid AS TEXT)) AND (ccpay_status IN ('C', 'A')))) THEN RETURN -8; END IF; _debitAccntid := findPrepaidAccount(_p.cashrcpt_cust_id); ELSE SELECT accnt_id INTO _debitAccntid FROM cashrcpt, bankaccnt, accnt WHERE ( (cashrcpt_bankaccnt_id=bankaccnt_id) AND (bankaccnt_accnt_id=accnt_id) AND (cashrcpt_id=pCashrcptid) ); IF (NOT FOUND) THEN RETURN -6; END IF; END IF; -- Determine the amount to post to A/R Open Items SELECT COALESCE(SUM(cashrcptitem_amount),0) INTO _postToAR FROM cashrcptitem JOIN aropen ON (aropen_id=cashrcptitem_aropen_id) WHERE ((cashrcptitem_cashrcpt_id=pCashrcptid) AND (cashrcptitem_applied)); IF (NOT FOUND) THEN _postToAR := 0; END IF; -- Determine the amount to post to Misc. Distributions SELECT COALESCE(SUM(cashrcptmisc_amount),0) INTO _postToMisc FROM cashrcptmisc WHERE (cashrcptmisc_cashrcpt_id=pCashrcptid); IF (NOT FOUND) THEN _postToMisc := 0; END IF; -- Check to see if the C/R is over applied IF ((_postToAR + _postToMisc) > _p.cashrcpt_amount) THEN RETURN -1; END IF; -- Check to see if the C/R is positive amount IF (_p.cashrcpt_amount <= 0) THEN RETURN -2; END IF; -- Distribute A/R Applications FOR _r IN SELECT aropen_id, aropen_doctype, aropen_docnumber, aropen_docdate, aropen_duedate, aropen_curr_id, aropen_curr_rate, round(aropen_amount - aropen_paid, 2) <= round(aropen_paid + currToCurr(_p.cashrcpt_curr_id, aropen_curr_id,abs(cashrcptitem_amount + cashrcptitem_discount),_p.cashrcpt_distdate),2) AS closed, cashrcptitem_id, cashrcptitem_amount, cashrcptitem_discount, (cashrcptitem_amount / _p.cashrcpt_curr_rate) AS cashrcptitem_amount_base, (cashrcptitem_discount / _p.cashrcpt_curr_rate) AS cashrcptitem_discount_base, round(aropen_paid - currToCurr(_p.cashrcpt_curr_id, aropen_curr_id,abs(cashrcptitem_amount),_p.cashrcpt_distdate),2) AS new_paid, round(currToCurr(_p.cashrcpt_curr_id, aropen_curr_id,abs(cashrcptitem_discount),_p.cashrcpt_distdate),2) AS new_discount FROM cashrcptitem JOIN aropen ON (cashrcptitem_aropen_id=aropen_id) WHERE ((cashrcptitem_cashrcpt_id=pCashrcptid) AND (cashrcptitem_applied)) LOOP -- Handle discount IF (_r.cashrcptitem_discount_base > 0) THEN PERFORM reverseCashReceiptDisc(_r.cashrcptitem_id, pJournalNumber); END IF; -- Update the aropen item to post the paid amount UPDATE aropen SET aropen_paid = _r.new_paid - _r.new_discount, aropen_open = TRUE, aropen_closedate = NULL WHERE (aropen_id=_r.aropen_id); -- Cache the running amount posted _posted_base := _posted_base + _r.cashrcptitem_amount_base; _posted := _posted + _r.cashrcptitem_amount; -- Record the cashrcpt application IF (_r.aropen_doctype IN ('I','D')) THEN INSERT INTO arapply ( arapply_cust_id, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_fundstype, arapply_refnumber, arapply_reftype, arapply_ref_id, arapply_applied, arapply_closed, arapply_postdate, arapply_distdate, arapply_journalnumber, arapply_username, arapply_curr_id ) VALUES ( _p.cashrcpt_cust_id, -1, 'K', _p.cashrcpt_number, _r.aropen_id, _r.aropen_doctype, _r.aropen_docnumber, _p.cashrcpt_fundstype, _p.cashrcpt_docnumber, 'CRA', _r.cashrcptitem_id, (round(_r.cashrcptitem_amount, 2) * -1.0), _r.closed, CURRENT_DATE, _p.cashrcpt_distdate, pJournalNumber, getEffectiveXtUser(), _p.cashrcpt_curr_id ); ELSE INSERT INTO arapply ( arapply_cust_id, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_fundstype, arapply_refnumber, arapply_reftype, arapply_ref_id, arapply_applied, arapply_closed, arapply_postdate, arapply_distdate, arapply_journalnumber, arapply_username, arapply_curr_id ) VALUES ( _p.cashrcpt_cust_id, _r.aropen_id, _r.aropen_doctype, _r.aropen_docnumber, -1, 'R', _p.cashrcpt_number, '', '', 'CRA', _r.cashrcptitem_id, (round(abs(_r.cashrcptitem_amount), 2) * -1.0), _r.closed, CURRENT_DATE, _p.cashrcpt_distdate, pJournalNumber, getEffectiveXtUser(), _p.cashrcpt_curr_id ); END IF; _exchGain := arCurrGain(_r.aropen_id,_p.cashrcpt_curr_id, abs(_r.cashrcptitem_amount), _p.cashrcpt_distdate); PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CR', (_r.aropen_doctype || '-' || _r.aropen_docnumber), CASE WHEN _r.aropen_doctype != 'R' THEN _arAccntid ELSE findDeferredAccount(_p.cashrcpt_cust_id) END, (round(_r.cashrcptitem_amount_base + _exchGain, 2) * -1.0), _p.cashrcpt_distdate, _p.custnote ); IF (_exchGain <> 0) THEN PERFORM insertIntoGLSeries(_sequence, 'A/R', 'CR', _r.aropen_doctype || '-' || _r.aropen_docnumber, getGainLossAccntId( CASE WHEN _r.aropen_doctype != 'R' THEN _arAccntid ELSE findDeferredAccount(_p.cashrcpt_cust_id) END ), round(_exchGain, 2), _p.cashrcpt_distdate, _p.custnote); END IF; END LOOP; -- Distribute Misc. Applications FOR _r IN SELECT cashrcptmisc_id, cashrcptmisc_accnt_id, cashrcptmisc_amount, (cashrcptmisc_amount / _p.cashrcpt_curr_rate) AS cashrcptmisc_amount_base, cashrcptmisc_notes FROM cashrcptmisc WHERE (cashrcptmisc_cashrcpt_id=pCashrcptid) LOOP -- Cache the running amount posted _posted_base := (_posted_base + _r.cashrcptmisc_amount_base); _posted := (_posted + _r.cashrcptmisc_amount); -- Record the cashrcpt application INSERT INTO arapply ( arapply_cust_id, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_fundstype, arapply_refnumber, arapply_applied, arapply_closed, arapply_postdate, arapply_distdate, arapply_journalnumber, arapply_username, arapply_curr_id, arapply_reftype, arapply_ref_id ) VALUES ( _p.cashrcpt_cust_id, -1, 'K', '', -1, 'Misc.', '', _p.cashrcpt_fundstype, _p.cashrcpt_docnumber, (round(_r.cashrcptmisc_amount, 2) * -1.0), TRUE, CURRENT_DATE, _p.cashrcpt_distdate, pJournalNumber, getEffectiveXtUser(), _p.cashrcpt_curr_id, 'CRD', _r.cashrcptmisc_id ); PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CR', _r.cashrcptmisc_notes, _r.cashrcptmisc_accnt_id, (round(_r.cashrcptmisc_amount_base, 2) * -1.0), _p.cashrcpt_distdate, _p.custnote ); END LOOP; -- Post any remaining Cash to an A/R Debit Memo -- this credit memo may absorb an occasional currency exchange rounding error IF (round(_posted_base, 2) < round(_p.cashrcpt_amount_base, 2)) THEN _comment := ('Unapplied from ' || _p.cashrcpt_fundstype || '-' || _p.cashrcpt_docnumber); PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CR', _comment, _p.prepaid_accnt_id, ((round(_p.cashrcpt_amount_base, 2) - round(_posted_base, 2)) * -1.0), _p.cashrcpt_distdate, _p.custnote ); SELECT fetchArMemoNumber() INTO _arMemoNumber; -- Post A/R Debit Memo SELECT createARDebitMemo(NULL, _p.cashrcpt_cust_id, pJournalNumber, _arMemoNumber, '', _p.cashrcpt_distdate, (_p.cashrcpt_amount - _posted), _comment, -1, -1, -1, _p.cashrcpt_distdate, -1, NULL, 0, _p.cashrcpt_curr_id) INTO _aropenid; -- Create Cash Receipt Item to capture posting INSERT INTO cashrcptitem ( cashrcptitem_cashrcpt_id, cashrcptitem_aropen_id, cashrcptitem_amount ) VALUES ( pCashrcptid, _aropenid, ((_p.cashrcpt_amount - _posted) * 1.0) ); ELSIF (round(_posted_base, 2) > round(_p.cashrcpt_amount_base, 2)) THEN PERFORM insertIntoGLSeries(_sequence, 'A/R', 'CR', 'Currency Exchange Rounding - ' || _p.cashrcpt_docnumber, getGainLossAccntId(_debitAccntid), ((round(_posted_base, 2) - round((_p.cashrcpt_amount_base + _p.cashrcpt_discount_base), 2)) * 1.0), _p.cashrcpt_distdate, _p.custnote); END IF; -- Debit Cash PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CR', (_p.cashrcpt_fundstype || '-' || _p.cashrcpt_docnumber), _debitAccntid, round(_p.cashrcpt_amount_base, 2), _p.cashrcpt_distdate, _p.custnote ); PERFORM postGLSeries(_sequence, pJournalNumber); -- Update and void the posted cashrcpt UPDATE cashrcpt SET cashrcpt_posted=FALSE, cashrcpt_posteddate=NULL, cashrcpt_postedby=NULL, cashrcpt_void=TRUE WHERE (cashrcpt_id=pCashrcptid); RETURN 1; END; $_$; ALTER FUNCTION public.reversecashreceipt(integer, integer) OWNER TO admin; -- -- Name: reversecashreceiptdisc(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION reversecashreceiptdisc(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCashrcptItemId ALIAS FOR $1; pJournalNumber ALIAS FOR $2; _r RECORD; _t RECORD; _v RECORD; _ardiscountid INTEGER; _arMemoNumber TEXT; _arAccntid INTEGER; _discountAccntid INTEGER; _comment TEXT; _discprcnt NUMERIC; _check INTEGER; BEGIN -- Fetch base records for processing SELECT aropen_id, aropen_doctype, aropen_amount, cashrcptitem_discount, cashrcpt_cust_id, cashrcpt_distdate, cashrcpt_applydate, cashrcpt_curr_id, cashrcpt_fundstype, cashrcpt_docnumber, round(currToCurr(cashrcpt_curr_id, aropen_curr_id, cashrcptitem_discount, cashrcpt_distdate),2) AS aropen_discount INTO _r FROM cashrcptitem JOIN cashrcpt ON (cashrcptitem_cashrcpt_id=cashrcpt_id) JOIN aropen ON ( (aropen_id=cashrcptitem_aropen_id) AND (aropen_doctype IN ('I', 'D')) ) WHERE (cashrcptitem_id=pCashrcptItemId); -- Get discount account _discountAccntid := findardiscountaccount(_r.cashrcpt_cust_id); IF (_r.cashrcptitem_discount > 0) THEN -- Determine discount percentage _discprcnt := _r.aropen_discount / _r.aropen_amount; SELECT fetchArMemoNumber() INTO _arMemoNumber; _comment := 'Discount Credit Reversal from ' || _r.cashrcpt_fundstype || '-' || _r.cashrcpt_docnumber; -- Create misc debit memo record _ardiscountid := nextval('aropen_aropen_id_seq'); INSERT INTO aropen ( aropen_id, aropen_docdate, aropen_duedate, aropen_doctype, aropen_docnumber, aropen_curr_id, aropen_posted, aropen_amount ) VALUES ( _ardiscountid, _r.cashrcpt_distdate, _r.cashrcpt_distdate, 'D', _arMemoNumber, _r.cashrcpt_curr_id, false,_r.cashrcptitem_discount); IF (fetchMetricBool('CreditTaxDiscount')) THEN -- proportional tax credits calculated and implemented for the debit memo generated by the discount IF (_r.aropen_doctype = 'I') THEN -- Tax for invoices SELECT aropen_cobmisc_id AS invcheadid, invchead_curr_id, invchead_invcdate INTO _t FROM aropen LEFT OUTER JOIN invchead ON (aropen_cobmisc_id = invchead_id) LEFT OUTER JOIN invcitem ON (invchead_id = invcitem_invchead_id) WHERE aropen_id = _r.aropen_id; FOR _v IN SELECT tax_sales_accnt_id, tax_id, round(sum(taxdetail_tax), 2) AS tax, currToBase(_t.invchead_curr_id, round(sum(taxdetail_tax), 2), _t.invchead_invcdate) AS taxbasevalue FROM tax JOIN calculateTaxDetailSummary('I', _t.invcheadid, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id, tax_sales_accnt_id LOOP INSERT INTO aropentax( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_basis) VALUES ( _ardiscountid, getadjustmenttaxtypeid(), _v.tax_id, 0.00, 0.00, (round((_v.tax * _discprcnt), 2)), _r.cashrcpt_distdate, 0.00); END LOOP; ELSIF (_r.aropen_doctype = 'D') THEN -- Tax for debit memos INSERT INTO aropentax( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_basis) SELECT _ardiscountid, taxhist_taxtype_id, taxhist_tax_id, 0.00, 0.00, (round((taxhist_tax * _discprcnt), 2)), _r.cashrcpt_distdate, 0.00 FROM aropentax WHERE (taxhist_parent_id=_r.aropen_id); END IF; END IF; -- End taxes -- Create debit memo for discount SELECT createARDebitMemo(_ardiscountid, _r.cashrcpt_cust_id, pJournalNumber, _arMemoNumber, '', _r.cashrcpt_distdate, _r.cashrcptitem_discount, _comment, -1, -1, _discountAccntid, _r.cashrcpt_distdate, -1, NULL, 0, _r.cashrcpt_curr_id) INTO _ardiscountid; END IF; -- End handle Discount RETURN 1; END; $_$; ALTER FUNCTION public.reversecashreceiptdisc(integer, integer) OWNER TO admin; -- -- Name: reverseglseries(integer, date, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION reverseglseries(integer, date, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pDistDate ALIAS FOR $2; pNotes ALIAS FOR $3; _sequence INTEGER := fetchGLSequence(); _journal INTEGER; BEGIN IF (SELECT COUNT(gltrans_sequence) > 0 FROM gltrans WHERE gltrans_sequence = pSequence) THEN SELECT fetchJournalNumber(jrnluse_use) INTO _journal FROM gltrans JOIN jrnluse ON (gltrans_journalnumber=jrnluse_number) WHERE (gltrans_sequence=pSequence) LIMIT 1; INSERT INTO gltrans (gltrans_created, gltrans_posted, gltrans_exported, gltrans_date, gltrans_sequence, gltrans_accnt_id, gltrans_source, gltrans_docnumber, gltrans_misc_id, gltrans_amount, gltrans_notes, gltrans_journalnumber, gltrans_doctype) SELECT CURRENT_TIMESTAMP, FALSE, FALSE, pDistDate, _sequence, gltrans_accnt_id, gltrans_source, gltrans_docnumber, gltrans_misc_id, (gltrans_amount * -1), pNotes, _journal, gltrans_doctype FROM gltrans WHERE (gltrans_sequence=pSequence); PERFORM postIntoTrialBalance(_sequence); ELSE SELECT fetchJournalNumber(jrnluse_use) INTO _journal FROM sltrans JOIN jrnluse ON (sltrans_journalnumber=jrnluse_number) WHERE (sltrans_sequence=pSequence) LIMIT 1; INSERT INTO sltrans (sltrans_created, sltrans_posted, sltrans_date, sltrans_sequence, sltrans_accnt_id, sltrans_source, sltrans_docnumber, sltrans_misc_id, sltrans_amount, sltrans_notes, sltrans_journalnumber, sltrans_doctype) SELECT CURRENT_TIMESTAMP, FALSE, pDistDate, _sequence, sltrans_accnt_id, sltrans_source, sltrans_docnumber, sltrans_misc_id, (sltrans_amount * -1), pNotes, _journal, sltrans_doctype FROM sltrans WHERE (sltrans_sequence=pSequence); END IF; RETURN _journal; END; $_$; ALTER FUNCTION public.reverseglseries(integer, date, text) OWNER TO admin; -- -- Name: revokeallmodulecmnttypesource(integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION revokeallmodulecmnttypesource(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmnttypeid ALIAS FOR $1; pModuleName ALIAS FOR $2; BEGIN DELETE FROM cmnttypesource WHERE (cmnttypesource_id IN ( SELECT cmnttypesource_id FROM cmnttypesource, source WHERE ( (cmnttypesource_source_id=source_id) AND (cmnttypesource_cmnttype_id=pCmnttypeid) AND (source_module=pModuleName) ) ) ); RETURN 1; END; $_$; ALTER FUNCTION public.revokeallmodulecmnttypesource(integer, text) OWNER TO admin; -- -- Name: revokeallmodulepriv(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION revokeallmodulepriv(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pModuleName ALIAS FOR $2; BEGIN DELETE FROM usrpriv WHERE (usrpriv_id IN ( SELECT usrpriv_id FROM usrpriv, priv WHERE ( (usrpriv_priv_id=priv_id) AND (usrpriv_username=pUsername) AND (priv_module=pModuleName) ) ) ); NOTIFY "usrprivUpdated"; RETURN 1; END; $_$; ALTER FUNCTION public.revokeallmodulepriv(text, text) OWNER TO admin; -- -- Name: revokeallmoduleprivgroup(integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION revokeallmoduleprivgroup(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pGrpid ALIAS FOR $1; pModuleName ALIAS FOR $2; BEGIN DELETE FROM grppriv WHERE (grppriv_id IN ( SELECT grppriv_id FROM grppriv, priv WHERE ( (grppriv_priv_id=priv_id) AND (grppriv_grp_id=pGrpid) AND (priv_module=pModuleName) ) ) ); RETURN 1; END; $_$; ALTER FUNCTION public.revokeallmoduleprivgroup(integer, text) OWNER TO admin; -- -- Name: revokecmnttypesource(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION revokecmnttypesource(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmnttypeid ALIAS FOR $1; pSourceid ALIAS FOR $2; BEGIN DELETE FROM cmnttypesource WHERE ( (cmnttypesource_cmnttype_id=pCmnttypeid) AND (cmnttypesource_source_id=pSourceid) ); RETURN TRUE; END; $_$; ALTER FUNCTION public.revokecmnttypesource(integer, integer) OWNER TO admin; -- -- Name: revokegroup(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION revokegroup(text, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pGrpid ALIAS FOR $2; BEGIN DELETE FROM usrgrp WHERE ( (usrgrp_username=pUsername) AND (usrgrp_grp_id=pGrpid) ); RETURN TRUE; END; $_$; ALTER FUNCTION public.revokegroup(text, integer) OWNER TO admin; -- -- Name: revokepriv(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION revokepriv(text, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pPrivid ALIAS FOR $2; BEGIN DELETE FROM usrpriv WHERE ( (usrpriv_username=pUsername) AND (usrpriv_priv_id=pPrivid) ); NOTIFY "usrprivUpdated"; RETURN TRUE; END; $_$; ALTER FUNCTION public.revokepriv(text, integer) OWNER TO admin; -- -- Name: revokepriv(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION revokepriv(text, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pPrivname ALIAS FOR $2; BEGIN DELETE FROM usrpriv WHERE ( (usrpriv_username=pUsername) AND (usrpriv_priv_id IN (SELECT priv_id FROM priv WHERE priv_name=pPrivname) )); NOTIFY "usrprivUpdated"; RETURN TRUE; END; $_$; ALTER FUNCTION public.revokepriv(text, text) OWNER TO admin; -- -- Name: revokeprivgroup(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION revokeprivgroup(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pGrpid ALIAS FOR $1; pPrivid ALIAS FOR $2; BEGIN DELETE FROM grppriv WHERE ( (grppriv_grp_id=pGrpid) AND (grppriv_priv_id=pPrivid) ); NOTIFY "usrprivUpdated"; RETURN TRUE; END; $_$; ALTER FUNCTION public.revokeprivgroup(integer, integer) OWNER TO admin; -- -- Name: rollupactualcost(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION rollupactualcost(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; BEGIN RETURN rollUpSorACost(pitemid, TRUE); END; $_$; ALTER FUNCTION public.rollupactualcost(integer) OWNER TO admin; -- -- Name: rollupsoracost(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION rollupsoracost(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pActual ALIAS FOR $2; _counter INTEGER; _setid INTEGER; _consumers RECORD; BEGIN _counter := 0; SELECT indentedWhereUsed(pItemid) INTO _setid; FOR _consumers IN SELECT bomwork_item_id FROM bomwork WHERE (bomwork_set_id=_setid) ORDER BY bomwork_level LOOP PERFORM updateSorACost( _consumers.bomwork_item_id, costelem_type, TRUE, lowerCost(_consumers.bomwork_item_id, costelem_type, pActual), pActual ) FROM costelem WHERE (costelem_sys); PERFORM updateLowerUserCosts(_consumers.bomwork_item_id, pActual); _counter := _counter + 1; END LOOP; PERFORM deleteBOMWorkset(_setid); RETURN _counter; END; $_$; ALTER FUNCTION public.rollupsoracost(integer, boolean) OWNER TO admin; -- -- Name: rollupstandardcost(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION rollupstandardcost(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; BEGIN RETURN rollUpSorACost(pItemid, FALSE); END; $_$; ALTER FUNCTION public.rollupstandardcost(integer) OWNER TO admin; -- -- Name: roundcost(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION roundcost(pcost numeric) RETURNS numeric LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _scale INTEGER; BEGIN IF (pCost IS NULL) THEN RETURN NULL; END IF; SELECT locale_cost_scale INTO _scale FROM locale WHERE (locale_id=getUsrLocaleId()); RETURN ROUND(pCost, _scale); END; $$; ALTER FUNCTION public.roundcost(pcost numeric) OWNER TO admin; -- -- Name: roundlocale(boolean, numeric, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION roundlocale(pfractional boolean, pqty numeric, plocale text) RETURNS numeric LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; _scale INTEGER; BEGIN IF (pFractional) THEN SELECT * INTO _r FROM locale WHERE (locale_id=getUsrLocaleId()); _scale := CASE pLocale WHEN 'qtyper' THEN _r.locale_qtyper_scale WHEN 'cost' THEN _r.locale_cost_scale ELSE _r.locale_qty_scale END; RETURN ROUND(pQty, _scale); ELSE IF (TRUNC(pQty) < pQty) THEN RETURN (TRUNC(pQty) + 1); ELSE RETURN TRUNC(pQty); END IF; END IF; END; $$; ALTER FUNCTION public.roundlocale(pfractional boolean, pqty numeric, plocale text) OWNER TO admin; -- -- Name: roundqty(boolean, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION roundqty(pfractional boolean, pqty numeric) RETURNS numeric LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _scale INTEGER; BEGIN SELECT locale_qty_scale INTO _scale FROM locale WHERE (locale_id=getUsrLocaleId()); IF (pFractional) THEN RETURN ROUND(pQty, _scale); ELSE IF (TRUNC(pQty) < ROUND(pQty, _scale)) THEN RETURN (TRUNC(pQty) + 1); ELSE RETURN TRUNC(pQty); END IF; END IF; END; $$; ALTER FUNCTION public.roundqty(pfractional boolean, pqty numeric) OWNER TO admin; -- -- Name: roundsale(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION roundsale(psale numeric) RETURNS numeric LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _scale INTEGER; BEGIN IF (pSale IS NULL) THEN RETURN NULL; END IF; SELECT locale_salesprice_scale INTO _scale FROM locale WHERE (locale_id=getUsrLocaleId()); RETURN ROUND(pSale, _scale); END; $$; ALTER FUNCTION public.roundsale(psale numeric) OWNER TO admin; -- -- Name: roundup(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION roundup(numeric) RETURNS numeric LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pValue ALIAS FOR $1; _checkValue integer; BEGIN _checkValue := pValue::integer; IF (_checkValue::numeric < pValue) THEN RETURN (_checkValue + 1)::numeric; ELSE RETURN _checkValue::numeric; END IF; END; $_$; ALTER FUNCTION public.roundup(numeric) OWNER TO admin; -- -- Name: saveaddr(integer, text, text, text, text, text, text, text, text, boolean, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION saveaddr(integer, text, text, text, text, text, text, text, text, boolean, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAddrId ALIAS FOR $1; pNumber ALIAS FOR $2; pAddr1 ALIAS FOR $3; pAddr2 ALIAS FOR $4; pAddr3 ALIAS FOR $5; pCity ALIAS FOR $6; pState ALIAS FOR $7; pPostalCode ALIAS FOR $8; pCountry ALIAS FOR $9; pActive ALIAS FOR $10; pNotes ALIAS FOR $11; pFlag ALIAS FOR $12; _addrId INTEGER; _addrNumber INTEGER; _flag TEXT; _p RECORD; _cnt INTEGER; _notes TEXT; BEGIN --Validate IF ((pFlag IS NULL) OR (pFlag = '') OR (pFlag = 'CHECK') OR (pFlag = 'CHANGEONE') OR (pFlag = 'CHANGEALL')) THEN IF (pFlag='') THEN _flag := 'CHECK'; ELSE _flag := COALESCE(pFlag,'CHECK'); END IF; ELSE RAISE EXCEPTION 'Invalid Flag (%). Valid flags are CHECK, CHANGEONE or CHANGEALL', pFlag; END IF; _notes := COALESCE(pNotes,''); --If there is nothing here, get out IF ( (pNumber = '' OR pNumber IS NULL) AND (pAddr1 = '' OR pAddr1 IS NULL) AND (pAddr2 = '' OR pAddr2 IS NULL) AND (pAddr3 = '' OR pAddr3 IS NULL) AND (pCity = '' OR pCity IS NULL) AND (pState = '' OR pState IS NULL) AND (pPostalCode = '' OR pPostalCode IS NULL) AND (pCountry = '' OR pCountry IS NULL) ) THEN RETURN NULL; END IF; _addrId := COALESCE(pAddrId,-1); --If we have an ID see if anything has changed, if not get out IF (_addrId >= 0) THEN SELECT * FROM addr INTO _p WHERE ((pAddrId=addr_id) AND (COALESCE(pNumber,addr_number)=addr_number) AND (COALESCE(pAddr1, '')=COALESCE(addr_line1, '')) AND (COALESCE(pAddr2, '')=COALESCE(addr_line2, '')) AND (COALESCE(pAddr3, '')=COALESCE(addr_line3, '')) AND (COALESCE(pCity, '')=COALESCE(addr_city, '')) AND (COALESCE(pState, '')=COALESCE(addr_state, '')) AND (COALESCE(pPostalCode, '')=COALESCE(addr_postalcode, '')) AND (COALESCE(pCountry, '')=COALESCE(addr_country, '')) AND (pActive=addr_active) AND (_notes=COALESCE(addr_notes,''))); IF (FOUND) THEN RETURN _addrId; END IF; END IF; --Check to see if duplicate address exists SELECT addr_id, addr_notes INTO _p FROM addr WHERE ((_addrId <> addr_id) AND (COALESCE(UPPER(addr_line1),'') = COALESCE(UPPER(pAddr1),'')) AND (COALESCE(UPPER(addr_line2),'') = COALESCE(UPPER(pAddr2),'')) AND (COALESCE(UPPER(addr_line3),'') = COALESCE(UPPER(pAddr3),'')) AND (COALESCE(UPPER(addr_city),'') = COALESCE(UPPER(pCity),'')) AND (COALESCE(UPPER(addr_state),'') = COALESCE(UPPER(pState),'')) AND (COALESCE(UPPER(addr_postalcode),'') = COALESCE(UPPER(pPostalcode),'')) AND (COALESCE(UPPER(addr_country),'') = COALESCE(UPPER(pCountry),''))); IF (FOUND) THEN --Note: To prevent overwriting of existing notes, the application --needs to load any existing notes for a matching address before altering them. IF (_notes <> _p.addr_notes) THEN UPDATE addr SET addr_notes=addr_notes || ' ' || _notes WHERE addr_id=_p.addr_id; END IF; RETURN _p.addr_id; --A matching address exits END IF; IF (_addrId < 0) THEN _flag := 'CHANGEONE'; END IF; IF (_flag = 'CHECK') THEN IF addrUseCount(_addrId) > 1 THEN RETURN -2; ELSIF (SELECT COUNT(addr_id)=0 FROM addr WHERE (addr_id=_addrId)) THEN _flag := 'CHANGEONE'; ELSE _flag := 'CHANGEALL'; END IF; END IF; IF (_flag = 'CHANGEALL') THEN _addrNumber := pNumber; IF (_addrNumber IS NULL) THEN SELECT addr_number INTO _addrNumber FROM addr WHERE(addr_id = _addrId); IF (_addrNumber IS NULL) THEN _addrNumber := fetchNextNumber('AddressNumber'); END IF; END IF; UPDATE addr SET addr_line1 = pAddr1, addr_line2 = pAddr2, addr_line3 = pAddr3, addr_city = pCity, addr_state = pState, addr_postalcode = pPostalcode, addr_country = pCountry, addr_active = pActive, addr_notes = pNotes WHERE addr_id = _addrId; RETURN _addrId; ELSE SELECT NEXTVAL('addr_addr_id_seq') INTO _addrId; IF (_flag = 'CHANGEONE') THEN _addrNumber := fetchNextNumber('AddressNumber'); ELSE _addrNumber := COALESCE(pNumber::text,fetchNextNumber('AddressNumber')); END IF; INSERT INTO addr ( addr_id, addr_number, addr_line1, addr_line2, addr_line3, addr_city, addr_state, addr_postalcode, addr_country, addr_active, addr_notes ) VALUES ( _addrId, _addrNumber, pAddr1, pAddr2, pAddr3, pCity, pState, pPostalcode, pCountry, pActive, _notes); RETURN _addrId; END IF; END; $_$; ALTER FUNCTION public.saveaddr(integer, text, text, text, text, text, text, text, text, boolean, text, text) OWNER TO admin; -- -- Name: saveaddr(integer, text, text, text, text, text, text, text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION saveaddr(integer, text, text, text, text, text, text, text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAddrId ALIAS FOR $1; pNumber ALIAS FOR $2; pAddr1 ALIAS FOR $3; pAddr2 ALIAS FOR $4; pAddr3 ALIAS FOR $5; pCity ALIAS FOR $6; pState ALIAS FOR $7; pPostalCode ALIAS FOR $8; pCountry ALIAS FOR $9; pFlag ALIAS FOR $10; _returnVal INTEGER; BEGIN SELECT saveAddr(pAddrId,pNumber, pAddr1,pAddr2,pAddr3,pCity,pState,pPostalCode,pCountry,true,'',pFlag) INTO _returnVal; RETURN _returnVal; END; $_$; ALTER FUNCTION public.saveaddr(integer, text, text, text, text, text, text, text, text, text) OWNER TO admin; -- -- Name: savealarm(integer, text, date, time without time zone, integer, text, boolean, text, boolean, text, boolean, text, text, integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION savealarm(integer, text, date, time without time zone, integer, text, boolean, text, boolean, text, boolean, text, text, integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAlarmId ALIAS FOR $1; pAlarmNumber ALIAS FOR $2; pDate ALIAS FOR $3; pTime ALIAS FOR $4; pOffset ALIAS FOR $5; pQualifier ALIAS FOR $6; pEvent ALIAS FOR $7; pEventRecipient ALIAS FOR $8; pEmail ALIAS FOR $9; pEmailRecipient ALIAS FOR $10; pSysmsg ALIAS FOR $11; pSysmsgRecipient ALIAS FOR $12; pSource ALIAS FOR $13; pSourceId ALIAS FOR $14; pFlag ALIAS FOR $15; _alarmId INTEGER; _alarmNumber TEXT; _alarmTime TIMESTAMP; _alarmInterval INTERVAL; _alarmTrigger TIMESTAMP; _isNew BOOLEAN; _flag TEXT; _alarmCount INTEGER := 0; _debug BOOLEAN := false; BEGIN IF (_debug) THEN RAISE NOTICE 'pAlarmId = %', pAlarmId; RAISE NOTICE 'pAlarmNumber = %', pAlarmNumber; RAISE NOTICE 'pDate = %', pDate; RAISE NOTICE 'pTime = %', pTime; RAISE NOTICE 'pOffset = %', pOffset; RAISE NOTICE 'pQualifier = %', pQualifier; RAISE NOTICE 'pEvent = %', pEvent; RAISE NOTICE 'pEventRecipient = %', pEventRecipient; RAISE NOTICE 'pEmail = %', pEmail; RAISE NOTICE 'pEmailRecipient = %', pEmailRecipient; RAISE NOTICE 'pSysmsg = %', pSysmsg; RAISE NOTICE 'pSysmsgRecipient = %', pSysmsgRecipient; RAISE NOTICE 'pSource = %', pSource; RAISE NOTICE 'pSourceId = %', pSourceId; RAISE NOTICE 'pFlag = %', pFlag; END IF; --Validate IF ((pFlag IS NULL) OR (pFlag = '') OR (pFlag = 'CHECK') OR (pFlag = 'CHANGEONE') OR (pFlag = 'CHANGEALL')) THEN IF (pFlag='') THEN _flag := 'CHECK'; ELSE _flag := COALESCE(pFlag,'CHECK'); END IF; ELSE RAISE EXCEPTION 'Invalid Flag (%). Valid flags are CHECK, CHANGEONE or CHANGEALL', pFlag; END IF; --If there is nothing here get out IF ( (pAlarmId IS NULL OR pAlarmId = -1) AND (pOffset IS NULL) AND (pSourceId IS NULL) AND (COALESCE(pQualifier, '') = '') AND (COALESCE(pEventRecipient, '') = '') AND (COALESCE(pEmailRecipient, '') = '') AND (COALESCE(pSysmsgRecipient, '') = '') AND (COALESCE(pSource, '') = '') ) THEN RETURN NULL; END IF; IF (pAlarmId IS NULL OR pAlarmId = -1) THEN _isNew := true; _alarmId := nextval('alarm_alarm_id_seq'); _alarmNumber := fetchNextNumber('AlarmNumber'); ELSE SELECT COUNT(alarm_id) INTO _alarmCount FROM alarm WHERE ((alarm_id=pAlarmId) AND (alarm_source=pSource) AND (alarm_source_id=pSourceId)); -- ask whether new or update if name changes -- but only if this isn't a new record with a pre-allocated id IF (_alarmCount < 1 AND _flag = 'CHECK') THEN IF (EXISTS(SELECT alarm_id FROM alarm WHERE (alarm_id=pAlarmId))) THEN RETURN -10; ELSE _isNew := true; _alarmNumber := fetchNextNumber('AlarmNumber'); END IF; ELSIF (_flag = 'CHANGEONE') THEN _isNew := true; _alarmId := nextval('alarm_alarm_id_seq'); _alarmNumber := fetchNextNumber('AlarmNumber'); END IF; END IF; _alarmNumber := COALESCE(_alarmNumber,pAlarmNumber,fetchNextNumber('AlarmNumber')); _alarmTime := COALESCE(pDate, CURRENT_DATE) + COALESCE(pTime, CURRENT_TIME); IF (COALESCE(pOffset, 0) > 0) THEN _alarmInterval := CASE WHEN (pQualifier IN ('MB', 'MA')) THEN CAST(pOffset AS TEXT) || ' minutes' WHEN (pQualifier IN ('HB', 'HA')) THEN CAST(pOffset AS TEXT) || ' hours' WHEN (pQualifier IN ('DB', 'DA')) THEN CAST(pOffset AS TEXT) || ' days' ELSE '' END; _alarmTrigger := CASE WHEN (pQualifier IN ('MB', 'HB', 'DB')) THEN _alarmTime - _alarmInterval WHEN (pQualifier IN ('MA', 'HA', 'DA')) THEN _alarmTime + _alarmInterval ELSE _alarmTime END; ELSE _alarmTrigger := _alarmTime; END IF; IF (_isNew) THEN _alarmId := COALESCE(_alarmId,pAlarmId,nextval('alarm_alarm_id_seq')); INSERT INTO alarm ( alarm_id,alarm_number, alarm_event, alarm_email, alarm_sysmsg, alarm_trigger, alarm_time, alarm_time_offset, alarm_time_qualifier, alarm_creator, alarm_event_recipient, alarm_email_recipient, alarm_sysmsg_recipient, alarm_source, alarm_source_id ) VALUES ( _alarmId, _alarmNumber, pEvent, pEmail, pSysmsg, _alarmTrigger, _alarmTime, pOffset, pQualifier, getEffectiveXtUser(), pEventRecipient, pEmailRecipient, pSysmsgRecipient, pSource, pSourceId ); RETURN _alarmId; ELSE UPDATE alarm SET alarm_number=_alarmNumber, alarm_event=COALESCE(pEvent, alarm_event), alarm_email=COALESCE(pEmail, alarm_event), alarm_sysmsg=COALESCE(pSysmsg, alarm_event), alarm_trigger=_alarmTrigger, alarm_time=_alarmTime, alarm_time_offset=COALESCE(pOffset, alarm_time_offset), alarm_time_qualifier=COALESCE(pQualifier, alarm_time_qualifier), alarm_event_recipient=COALESCE(pEventRecipient, alarm_event_recipient), alarm_email_recipient=COALESCE(pEmailRecipient, alarm_email_recipient), alarm_sysmsg_recipient=COALESCE(pSysmsgRecipient, alarm_sysmsg_recipient) WHERE (alarm_id=pAlarmId); RETURN pAlarmId; END IF; END; $_$; ALTER FUNCTION public.savealarm(integer, text, date, time without time zone, integer, text, boolean, text, boolean, text, boolean, text, text, integer, text) OWNER TO admin; -- -- Name: savebomhead(integer, text, date, text, numeric, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION savebomhead(integer, text, date, text, numeric, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pRevision ALIAS FOR $2; pRevisionDate ALIAS FOR $3; pDocumentNumber ALIAS FOR $4; pBatchSize ALIAS FOR $5; pRequiredQtyPer ALIAS FOR $6; _seq INTEGER; _p RECORD; _revid INTEGER; BEGIN IF (NOT fetchMetricBool('RevControl')) THEN -- Deal with BOM if Rev Control Turned off SELECT bomhead_id INTO _seq FROM bomhead WHERE (bomhead_item_id=pItemid); IF (NOT FOUND) THEN -- No bomhead exists _seq := NEXTVAL('bomhead_bomhead_id_seq'); INSERT INTO bomhead (bomhead_id,bomhead_item_id,bomhead_docnum,bomhead_revision, bomhead_revisiondate,bomhead_batchsize,bomhead_requiredqtyper,bomhead_rev_id) VALUES (_seq,pItemid, pDocumentNumber, pRevision, pRevisionDate, pBatchSize, pRequiredQtyPer,-1); ELSE UPDATE bomhead SET bomhead_revision = pRevision, bomhead_revisiondate = pRevisionDate, bomhead_docnum = pDocumentNumber, bomhead_batchsize = pBatchSize, bomhead_requiredqtyper = pRequiredQtyPer WHERE (bomhead_id=_seq); END IF; RETURN _seq; ELSE -- Deal with Revision Control IF (COALESCE(pRevision,'') = '' AND getActiveRevId('BOM',pItemid) != -1) THEN RAISE EXCEPTION 'Revision Control records exist for item. You must provide a new or existing revision number.'; END IF; SELECT * INTO _p FROM bomhead LEFT OUTER JOIN rev ON (bomhead_rev_id=rev_id), item WHERE ((bomhead_item_id=pItemid) AND (COALESCE(bomhead_revision,'')=COALESCE(pRevision,'')) AND (bomhead_item_id=item_id)); IF (NOT FOUND) THEN -- This is a new bomhead record IF LENGTH(pRevision) > 0 THEN -- We need to create a revision record SELECT createbomrev(pItemid, pRevision) INTO _revid; UPDATE bomhead SET bomhead_revisiondate = pRevisiondate, bomhead_docnum = pDocumentNumber, bomhead_batchsize = pBatchsize, bomhead_requiredqtyper = pRequiredqtyper WHERE (bomhead_rev_id=_revid); SELECT bomhead_id INTO _seq FROM bomhead WHERE (bomhead_rev_id=_revid); RETURN _seq; ELSE -- Just create a regular bom header record _seq := NEXTVAL('bomhead_bomhead_id_seq'); INSERT INTO bomhead (bomhead_id,bomhead_item_id,bomhead_docnum,bomhead_revision, bomhead_revisiondate,bomhead_batchsize,bomhead_requiredqtyper,bomhead_rev_id) VALUES (_seq,pItemid, pDocumentNumber, pRevision, pRevisionDate, pBatchSize, pRequiredQtyPer,-1); RETURN _seq; END IF; ELSE -- We need to update a record IF (_p.rev_status = 'I') THEN RAISE EXCEPTION 'Revision % for % is inactive. Update not allowed.', _p.rev_number, _p.item_number; ELSIF (COALESCE(pRevision,'') = COALESCE(_p.bomhead_revision,'')) THEN -- No change, just update UPDATE bomhead SET bomhead_revisiondate = pRevisiondate, bomhead_docnum = pDocumentNumber, bomhead_batchsize = pBatchSize, bomhead_requiredqtyper = pRequiredqtyper WHERE (bomhead_id=_p.bomhead_id); RETURN _p.bomhead_id; ELSE -- Need a new revision SELECT createbomrev(pItemid, pRevision) INTO _revid; UPDATE bomhead SET bomhead_revisiondate = pRevisiondate, bomhead_docnum = pDocumentNumber, bomhead_batchsize = pBatchSize, bomhead_requiredqtyper = pRequiredqtyper WHERE (bomhead_rev_id=_revid); SELECT bomhead_id INTO _seq FROM bomhead WHERE (bomhead_rev_id=_revid); RETURN _seq; END IF; END IF; END IF; RETURN _seq; END; $_$; ALTER FUNCTION public.savebomhead(integer, text, date, text, numeric, numeric) OWNER TO admin; -- -- Name: savecntct(integer, text, integer, integer, text, text, text, text, text, text, boolean, text, text, text, text, text, text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION savecntct(pcntctid integer, pcontactnumber text, pcrmacctid integer, paddrid integer, phonorific text, pfirstname text, pmiddlename text, plastname text, psuffix text, pinitials text, pactive boolean, pphone text, pphone2 text, pfax text, pemail text, pwebaddr text, pnotes text, ptitle text, pflag text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN SELECT saveCntct( pCntctId, pContactNumber, pCrmAcctId, pAddrId, pHonorific, pFirstName, pMiddleName, pLastName, pSuffix, pInitials, pActive, pPhone, pPhone2, pFax, pEmail, pWebAddr, pNotes, pTitle, pFlag, NULL) INTO _returnVal; RETURN _returnVal; END; $$; ALTER FUNCTION public.savecntct(pcntctid integer, pcontactnumber text, pcrmacctid integer, paddrid integer, phonorific text, pfirstname text, pmiddlename text, plastname text, psuffix text, pinitials text, pactive boolean, pphone text, pphone2 text, pfax text, pemail text, pwebaddr text, pnotes text, ptitle text, pflag text) OWNER TO admin; -- -- Name: savecntct(integer, text, integer, text, text, text, text, text, text, text, text, text, text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION savecntct(pcntctid integer, pcontactnumber text, paddrid integer, phonorific text, pfirstname text, pmiddlename text, plastname text, psuffix text, pphone text, pphone2 text, pfax text, pemail text, pwebaddr text, ptitle text, pflag text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN SELECT saveCntct(pCntctId,pContactNumber,NULL,pAddrId,pHonorific,pFirstName,pMiddleName,pLastName,pSuffix,NULL, NULL,pPhone,pPhone2,pFax,pEmail,pWebAddr,NULL,pTitle,pFlag, NULL) INTO _returnVal; RETURN _returnVal; END; $$; ALTER FUNCTION public.savecntct(pcntctid integer, pcontactnumber text, paddrid integer, phonorific text, pfirstname text, pmiddlename text, plastname text, psuffix text, pphone text, pphone2 text, pfax text, pemail text, pwebaddr text, ptitle text, pflag text) OWNER TO admin; -- -- Name: savecntct(integer, text, integer, integer, text, text, text, text, text, text, boolean, text, text, text, text, text, text, text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION savecntct(pcntctid integer, pcontactnumber text, pcrmacctid integer, paddrid integer, phonorific text, pfirstname text, pmiddlename text, plastname text, psuffix text, pinitials text, pactive boolean, pphone text, pphone2 text, pfax text, pemail text, pwebaddr text, pnotes text, ptitle text, pflag text, pownerusername text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cntctId INTEGER; _cntctNumber TEXT; _isNew BOOLEAN; _flag TEXT; _contactCount INTEGER := 0; BEGIN --Validate IF ((pFlag IS NULL) OR (pFlag = '') OR (pFlag = 'CHECK') OR (pFlag = 'CHANGEONE') OR (pFlag = 'CHANGEALL')) THEN IF (pFlag='') THEN _flag := 'CHECK'; ELSE _flag := COALESCE(pFlag,'CHECK'); END IF; ELSE RAISE EXCEPTION 'Invalid Flag (%). Valid flags are CHECK, CHANGEONE or CHANGEALL', pFlag; END IF; --If there is nothing here get out IF ( (pCntctId IS NULL OR pCntctId = -1) AND (pAddrId IS NULL) AND (COALESCE(pFirstName, '') = '') AND (COALESCE(pMiddleName, '') = '') AND (COALESCE(pLastName, '') = '') AND (COALESCE(pSuffix, '') = '') AND (COALESCE(pHonorific, '') = '') AND (COALESCE(pInitials, '') = '') AND (COALESCE(pPhone, '') = '') AND (COALESCE(pPhone2, '') = '') AND (COALESCE(pFax, '') = '') AND (COALESCE(pEmail, '') = '') AND (COALESCE(pWebAddr, '') = '') AND (COALESCE(pNotes, '') = '') AND (COALESCE(pTitle, '') = '') ) THEN RETURN NULL; END IF; IF (pCntctId IS NULL OR pCntctId = -1) THEN _isNew := true; _cntctId := nextval('cntct_cntct_id_seq'); _cntctNumber := COALESCE(pContactNumber,fetchNextNumber('ContactNumber')); ELSE SELECT COUNT(cntct_id) INTO _contactCount FROM cntct WHERE ((cntct_id=pCntctId) AND (cntct_first_name=pFirstName) AND (cntct_last_name=pLastName)); -- ask whether new or update if name changes -- but only if this isn't a new record with a pre-allocated id IF (_contactCount < 1 AND _flag = 'CHECK') THEN IF (EXISTS(SELECT cntct_id FROM cntct WHERE (cntct_id=pCntctId))) THEN RETURN -10; ELSE _isNew := true; _cntctNumber := fetchNextNumber('ContactNumber'); END IF; ELSIF (_flag = 'CHANGEONE') THEN _isNew := true; _cntctId := nextval('cntct_cntct_id_seq'); _cntctNumber := fetchNextNumber('ContactNumber'); ELSIF (_flag = 'CHANGEALL') THEN _isNew := false; END IF; END IF; IF (pContactNumber = '') THEN _cntctNumber := fetchNextNumber('ContactNumber'); ELSE _cntctNumber := COALESCE(_cntctNumber,pContactNumber,fetchNextNumber('ContactNumber')); END IF; IF (_isNew) THEN _cntctId := COALESCE(_cntctId,pCntctId,nextval('cntct_cntct_id_seq')); INSERT INTO cntct ( cntct_id,cntct_number, cntct_crmacct_id,cntct_addr_id,cntct_first_name, cntct_last_name,cntct_honorific,cntct_initials, cntct_active,cntct_phone,cntct_phone2, cntct_fax,cntct_email,cntct_webaddr, cntct_notes,cntct_title,cntct_middle,cntct_suffix, cntct_owner_username ) VALUES ( _cntctId, COALESCE(_cntctNumber,fetchNextNumber('ContactNumber')) ,pCrmAcctId,pAddrId, pFirstName,pLastName,pHonorific, pInitials,COALESCE(pActive,true),pPhone,pPhone2,pFax, pEmail,pWebAddr,pNotes,pTitle,pMiddleName,pSuffix,pOwnerUsername ); RETURN _cntctId; ELSE UPDATE cntct SET cntct_number=COALESCE(_cntctNumber,fetchNextNumber('ContactNumber')), cntct_crmacct_id=COALESCE(pCrmAcctId,cntct_crmacct_id), cntct_addr_id=COALESCE(pAddrId,cntct_addr_id), cntct_first_name=COALESCE(pFirstName,cntct_first_name), cntct_last_name=COALESCE(pLastName,cntct_last_name), cntct_honorific=COALESCE(pHonorific,cntct_honorific), cntct_initials=COALESCE(pInitials,cntct_initials), cntct_active=COALESCE(pActive,cntct_active), cntct_phone=COALESCE(pPhone,cntct_phone), cntct_phone2=COALESCE(pPhone2,cntct_phone2), cntct_fax=COALESCE(pFax,cntct_fax), cntct_email=COALESCE(pEmail,cntct_email), cntct_webaddr=COALESCE(pWebAddr,cntct_webaddr), cntct_notes=COALESCE(pNotes,cntct_notes), cntct_title=COALESCE(pTitle,cntct_title), cntct_middle=COALESCE(pMiddleName,cntct_middle), cntct_suffix=COALESCE(pSuffix,cntct_suffix), cntct_owner_username=COALESCE(pOwnerUsername, cntct_owner_username) WHERE (cntct_id=pCntctId); RETURN pCntctId; END IF; END; $$; ALTER FUNCTION public.savecntct(pcntctid integer, pcontactnumber text, pcrmacctid integer, paddrid integer, phonorific text, pfirstname text, pmiddlename text, plastname text, psuffix text, pinitials text, pactive boolean, pphone text, pphone2 text, pfax text, pemail text, pwebaddr text, pnotes text, ptitle text, pflag text, pownerusername text) OWNER TO admin; -- -- Name: saveimageass(text, integer, character, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION saveimageass(text, integer, character, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSource ALIAS FOR $1; pSourceId ALIAS FOR $2; pPurpose ALIAS FOR $3; pImageid ALIAS FOR $4; _imageassId INTEGER = 0; BEGIN -- See if this link already exists SELECT imageass_id INTO _imageassId FROM imageass WHERE ((imageass_source_id=pSourceId) AND (imageass_source=pSource) AND (imageass_image_id=pImageId) AND (imageass_purpose=pPurpose)); IF (FOUND) THEN RETURN _imageassId; END IF; -- See if a record with this purpose already exists (item only) IF (pSource = 'I' AND pPurpose != 'M') THEN SELECT imageass_id INTO _imageassId FROM imageass WHERE ((imageass_source_id=pSourceId) AND (imageass_source=pSource) AND (imageass_purpose=pPurpose)); END IF; IF (_imageassId > 0) THEN UPDATE imageass SET imageass_image_id=pImageId WHERE (imageass_id=_imageassId); ELSE _imageassId := NEXTVAL('imageass_imageass_id_seq'); INSERT INTO imageass VALUES (_imageassId,pSourceId,pSource,pImageid,CASE WHEN pSource='I' THEN pPurpose ELSE 'M' END); END IF; RETURN _imageassId; END; $_$; ALTER FUNCTION public.saveimageass(text, integer, character, integer) OWNER TO admin; -- -- Name: saveipsitem(integer, integer, integer, numeric, numeric, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION saveipsitem(integer, integer, integer, numeric, numeric, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pIpsItemId ALIAS FOR $1; pIpsHeadId ALIAS FOR $2; pItemId ALIAS FOR $3; pQtyBreak ALIAS FOR $4; pPrice ALIAS FOR $5; pQtyUomId ALIAS FOR $6; pPriceUomId ALIAS FOR $7; _ipsitemid INTEGER; _new BOOLEAN; BEGIN -- Validation IF (SELECT COUNT(item_id)=0 FROM item WHERE (item_id=pItemId)) THEN RAISE EXCEPTION 'You must provide a valid Item'; ELSIF (COALESCE(pQtyBreak,0) < 0) THEN RAISE EXCEPTION 'Quantity can not be a negative value'; ELSIF (COALESCE(pPrice,0) < 0) THEN RAISE EXCEPTION 'Price must be a negative value'; ELSIF ((pQtyUomId IS NOT NULL) AND (SELECT COUNT(item_id)=0 FROM (SELECT item_id FROM item WHERE ((item_id=pItemId) AND (item_inv_uom_id=pQtyUomId)) UNION SELECT item_id FROM item,itemuomconv,itemuom,uomtype WHERE ((item_id=pItemId) AND (itemuomconv_item_id=item_id) AND (itemuomconv_from_uom_id=pQtyUomId) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (itemuom_uomtype_id=uomtype_id) AND (uomtype_name='Selling')) UNION SELECT item_id FROM item,itemuomconv,itemuom,uomtype WHERE ((item_id=pItemId) AND (itemuomconv_item_id=item_id) AND (itemuomconv_to_uom_id=pQtyUomId) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (itemuom_uomtype_id=uomtype_id) AND (uomtype_name='Selling'))) AS data)) THEN RAISE EXCEPTION 'Qty UOM Must be a valid Selling UOM for the Item'; ELSIF ((pPriceUomId IS NOT NULL) AND (SELECT COUNT(item_id)=0 FROM (SELECT item_id FROM item WHERE ((item_id=pItemId) AND (item_inv_uom_id=pPriceUomId)) UNION SELECT item_id FROM item,itemuomconv,itemuom,uomtype WHERE ((item_id=pItemId) AND (itemuomconv_item_id=item_id) AND (itemuomconv_from_uom_id=pPriceUomId) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (itemuom_uomtype_id=uomtype_id) AND (uomtype_name='Selling')) UNION SELECT item_id FROM item,itemuomconv,itemuom,uomtype WHERE ((item_id=pItemId) AND (itemuomconv_item_id=item_id) AND (itemuomconv_to_uom_id=pPriceUomId) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (itemuom_uomtype_id=uomtype_id) AND (uomtype_name='Selling'))) AS data)) THEN RAISE EXCEPTION 'Price UOM Must be a valid Selling UOM for the Item'; END IF; _new := TRUE; IF (pIpsItemId IS NOT NULL) THEN SELECT ipsitem_id INTO _ipsitemid FROM ipsitem WHERE (ipsitem_id=pIpsItemId); IF (FOUND) THEN _new := FALSE; ELSE RAISE EXCEPTION 'Pricing Schedule Item not found.'; END IF; ELSE SELECT ipsitem_id INTO _ipsitemid FROM ipsitem WHERE ((ipsitem_ipshead_id = pIpsheadId) AND (ipsitem_item_id = pItemId) AND (ipsitem_qtybreak = pQtyBreak) AND (ipsitem_qty_uom_id = COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId))) AND (ipsitem_price_uom_id = CASE WHEN (pQtyUomId = (SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) THEN COALESCE(pPriceUomId,pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) ELSE COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) END)); END IF; IF (FOUND) THEN _new := false; ELSE _ipsitemid := nextval('ipsitem_ipsitem_id_seq'); END IF; IF (_new) THEN INSERT INTO ipsitem ( ipsitem_id, ipsitem_ipshead_id, ipsitem_item_id, ipsitem_qtybreak, ipsitem_price, ipsitem_qty_uom_id, ipsitem_price_uom_id, ipsitem_discntprcnt, ipsitem_fixedamtdiscount) VALUES ( _ipsitemid, pIpsheadId, pItemId, pQtyBreak, pPrice, COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)), CASE WHEN (pQtyUomId = (SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) THEN COALESCE(pPriceUomId,pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) ELSE COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) END, 0.0, 0.0); ELSE UPDATE ipsitem SET ipsitem_qtybreak = pQtyBreak, ipsitem_price = pPrice, ipsitem_qty_uom_id = COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)), ipsitem_price_uom_id = CASE WHEN (pQtyUomId = (SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) THEN COALESCE(pPriceUomId,pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) ELSE COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) END WHERE (ipsitem_id=_ipsitemid); END IF; RETURN _ipsitemid; END; $_$; ALTER FUNCTION public.saveipsitem(integer, integer, integer, numeric, numeric, integer, integer) OWNER TO admin; -- -- Name: saveipsitem(integer, integer, integer, numeric, numeric, integer, integer, numeric, numeric, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION saveipsitem(pipsitemid integer, pipsheadid integer, pitemid integer, pqtybreak numeric, pprice numeric, pqtyuomid integer, ppriceuomid integer, ppercent numeric, pfixedamt numeric, ptype text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _ipsitemid INTEGER; _new BOOLEAN; BEGIN -- Validation IF (SELECT COUNT(item_id)=0 FROM item WHERE (item_id=pItemId)) THEN RAISE EXCEPTION 'You must provide a valid Item'; ELSIF (COALESCE(pQtyBreak,0) < 0) THEN RAISE EXCEPTION 'Quantity can not be a negative value'; ELSIF (COALESCE(pPrice,0) < 0) THEN RAISE EXCEPTION 'Price must be a negative value'; ELSIF ((pQtyUomId IS NOT NULL) AND (SELECT COUNT(item_id)=0 FROM (SELECT item_id FROM item WHERE ((item_id=pItemId) AND (item_inv_uom_id=pQtyUomId)) UNION SELECT item_id FROM item,itemuomconv,itemuom,uomtype WHERE ((item_id=pItemId) AND (itemuomconv_item_id=item_id) AND (itemuomconv_from_uom_id=pQtyUomId) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (itemuom_uomtype_id=uomtype_id) AND (uomtype_name='Selling')) UNION SELECT item_id FROM item,itemuomconv,itemuom,uomtype WHERE ((item_id=pItemId) AND (itemuomconv_item_id=item_id) AND (itemuomconv_to_uom_id=pQtyUomId) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (itemuom_uomtype_id=uomtype_id) AND (uomtype_name='Selling'))) AS data)) THEN RAISE EXCEPTION 'Qty UOM Must be a valid Selling UOM for the Item'; ELSIF ((pPriceUomId IS NOT NULL) AND (SELECT COUNT(item_id)=0 FROM (SELECT item_id FROM item WHERE ((item_id=pItemId) AND (item_inv_uom_id=pPriceUomId)) UNION SELECT item_id FROM item,itemuomconv,itemuom,uomtype WHERE ((item_id=pItemId) AND (itemuomconv_item_id=item_id) AND (itemuomconv_from_uom_id=pPriceUomId) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (itemuom_uomtype_id=uomtype_id) AND (uomtype_name='Selling')) UNION SELECT item_id FROM item,itemuomconv,itemuom,uomtype WHERE ((item_id=pItemId) AND (itemuomconv_item_id=item_id) AND (itemuomconv_to_uom_id=pPriceUomId) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (itemuom_uomtype_id=uomtype_id) AND (uomtype_name='Selling'))) AS data)) THEN RAISE EXCEPTION 'Price UOM Must be a valid Selling UOM for the Item'; END IF; _new := TRUE; IF (pIpsItemId IS NOT NULL) THEN SELECT ipsitem_id INTO _ipsitemid FROM ipsiteminfo WHERE (ipsitem_id=pIpsItemId); IF (FOUND) THEN _new := FALSE; ELSE RAISE EXCEPTION 'Pricing Schedule Item not found.'; END IF; ELSE SELECT ipsitem_id INTO _ipsitemid FROM ipsiteminfo WHERE ((ipsitem_ipshead_id = pIpsheadId) AND (ipsitem_item_id = pItemId) AND (ipsitem_qtybreak = pQtyBreak) AND (ipsitem_qty_uom_id = COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId))) AND (ipsitem_price_uom_id = CASE WHEN (pQtyUomId = (SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) THEN COALESCE(pPriceUomId,pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) ELSE COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) END)); END IF; IF (FOUND) THEN _new := false; END IF; IF (_new) THEN INSERT INTO ipsiteminfo ( ipsitem_ipshead_id, ipsitem_item_id, ipsitem_qtybreak, ipsitem_price, ipsitem_qty_uom_id, ipsitem_price_uom_id, ipsitem_discntprcnt, ipsitem_fixedamtdiscount, ipsitem_type) VALUES ( pIpsheadId, pItemId, pQtyBreak, pPrice, COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)), CASE WHEN (pQtyUomId = (SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) THEN COALESCE(pPriceUomId,pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) ELSE COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) END, pPercent, pFixedAmt, pType) RETURNING ipsitem_id INTO _ipsitemid; ELSE UPDATE ipsiteminfo SET ipsitem_qtybreak = pQtyBreak, ipsitem_price = pPrice, ipsitem_qty_uom_id = COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)), ipsitem_price_uom_id = CASE WHEN (pQtyUomId = (SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) THEN COALESCE(pPriceUomId,pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) ELSE COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) END, ipsitem_discntprcnt=pPercent, ipsitem_fixedamtdiscount=pFixedAmt, ipsitem_type=pType WHERE (ipsitem_id=_ipsitemid); END IF; RETURN _ipsitemid; END; $$; ALTER FUNCTION public.saveipsitem(pipsitemid integer, pipsheadid integer, pitemid integer, pqtybreak numeric, pprice numeric, pqtyuomid integer, ppriceuomid integer, ppercent numeric, pfixedamt numeric, ptype text) OWNER TO admin; -- -- Name: saveipsprodcat(integer, integer, integer, numeric, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION saveipsprodcat(integer, integer, integer, numeric, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pIpsProdcatId ALIAS FOR $1; pIpsHeadId ALIAS FOR $2; pProdCatId ALIAS FOR $3; pQtyBreak ALIAS FOR $4; pDiscount ALIAS FOR $5; _ipsprodcatid INTEGER; _new BOOLEAN; BEGIN -- Validation IF (SELECT COUNT(*)=0 FROM prodcat WHERE (prodcat_id=pProdcatId)) THEN RAISE EXCEPTION 'You must provide a valid Product Category'; ELSIF (COALESCE(pQtyBreak,0) < 0) THEN RAISE EXCEPTION 'Quantity can not be a negative value'; ELSIF (COALESCE(pDiscount,0) < 0) THEN RAISE EXCEPTION 'Discount must be a negative value'; END IF; _new := TRUE; IF (pIpsProdcatId IS NOT NULL) THEN SELECT ipsprodcat_id INTO _ipsprodcatid FROM ipsprodcat WHERE (ipsprodcat_id=pIpsprodcatId); IF (FOUND) THEN _new := FALSE; ELSE RAISE EXCEPTION 'Pricing Schedule Product Category not found'; END IF; ELSE SELECT ipsprodcat_id INTO _ipsprodcatid FROM ipsprodcat WHERE ((ipsprodcat_ipshead_id=pIpsheadId) AND (ipsprodcat_prodcat_id=pProdcatId) AND (ipsprodcat_qtybreak=pQtyBreak)); IF (FOUND) THEN _new := false; ELSE _ipsprodcatid := nextval('ipsprodcat_ipsprodcat_id_seq'); END IF; END IF; IF (_new) THEN INSERT INTO ipsprodcat ( ipsprodcat_id, ipsprodcat_ipshead_id, ipsprodcat_prodcat_id, ipsprodcat_qtybreak, ipsprodcat_discntprcnt) VALUES ( _ipsprodcatid, pIpsheadId, pProdcatId, pQtyBreak, pDiscount * .01); ELSE UPDATE ipsprodcat SET ipsprodcat_qtybreak = pQtyBreak, ipsprodcat_discntprcnt = pDiscount * .01 WHERE (ipsprodcat_id=_ipsprodcatid); END IF; RETURN _ipsprodcatid; END; $_$; ALTER FUNCTION public.saveipsprodcat(integer, integer, integer, numeric, numeric) OWNER TO admin; -- -- Name: saveipsprodcat(integer, integer, integer, numeric, numeric, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION saveipsprodcat(integer, integer, integer, numeric, numeric, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pIpsProdcatId ALIAS FOR $1; pIpsHeadId ALIAS FOR $2; pProdCatId ALIAS FOR $3; pQtyBreak ALIAS FOR $4; pDiscount ALIAS FOR $5; pFixedAmtDiscount ALIAS FOR $6; _ipsprodcatid INTEGER; _new BOOLEAN; BEGIN -- Validation IF (SELECT COUNT(*)=0 FROM prodcat WHERE (prodcat_id=pProdcatId)) THEN RAISE EXCEPTION 'You must provide a valid Product Category'; ELSIF (COALESCE(pQtyBreak,0) < 0) THEN RAISE EXCEPTION 'Quantity can not be a negative value'; ELSIF (COALESCE(pDiscount,0) < 0) THEN RAISE EXCEPTION 'Discount must be a negative value'; END IF; _new := TRUE; IF (pIpsProdcatId IS NOT NULL) THEN SELECT ipsprodcat_id INTO _ipsprodcatid FROM ipsprodcat WHERE (ipsprodcat_id=pIpsprodcatId); IF (FOUND) THEN _new := FALSE; ELSE RAISE EXCEPTION 'Pricing Schedule Product Category not found'; END IF; ELSE SELECT ipsprodcat_id INTO _ipsprodcatid FROM ipsprodcat WHERE ((ipsprodcat_ipshead_id=pIpsheadId) AND (ipsprodcat_prodcat_id=pProdcatId) AND (ipsprodcat_qtybreak=pQtyBreak)); IF (FOUND) THEN _new := false; ELSE _ipsprodcatid := nextval('ipsprodcat_ipsprodcat_id_seq'); END IF; END IF; IF (_new) THEN INSERT INTO ipsprodcat ( ipsprodcat_id, ipsprodcat_ipshead_id, ipsprodcat_prodcat_id, ipsprodcat_qtybreak, ipsprodcat_discntprcnt, ipsprodcat_fixedamtdiscount) VALUES ( _ipsprodcatid, pIpsheadId, pProdcatId, pQtyBreak, pDiscount * .01, pFixedAmtDiscount); ELSE UPDATE ipsprodcat SET ipsprodcat_qtybreak = pQtyBreak, ipsprodcat_discntprcnt = pDiscount * .01, ipsprodcat_fixedamtdiscount = pFixedAmtDiscount WHERE (ipsprodcat_id=_ipsprodcatid); END IF; RETURN _ipsprodcatid; END; $_$; ALTER FUNCTION public.saveipsprodcat(integer, integer, integer, numeric, numeric, numeric) OWNER TO admin; -- -- Name: saveipsprodcat(integer, integer, integer, numeric, numeric, numeric, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION saveipsprodcat(pipsprodcatid integer, pipsheadid integer, pprodcatid integer, pqtybreak numeric, pdiscount numeric, pfixedamtdiscount numeric, ptype text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _ipsitemid INTEGER; _new BOOLEAN; BEGIN -- Validation IF (SELECT COUNT(*)=0 FROM prodcat WHERE (prodcat_id=pProdcatId)) THEN RAISE EXCEPTION 'You must provide a valid Product Category'; ELSIF (COALESCE(pQtyBreak,0) < 0) THEN RAISE EXCEPTION 'Quantity can not be a negative value'; ELSIF (COALESCE(pDiscount,0) < 0) THEN RAISE EXCEPTION 'Discount must be a negative value'; END IF; _new := TRUE; IF (pIpsProdcatId IS NOT NULL) THEN SELECT ipsitem_id INTO _ipsitemid FROM ipsiteminfo WHERE (ipsprodcat_id=pIpsprodcatId); IF (FOUND) THEN _new := FALSE; ELSE RAISE EXCEPTION 'Pricing Schedule Product Category not found'; END IF; ELSE SELECT ipsitem_id INTO _ipsitemid FROM ipsiteminfo WHERE ((ipsitem_ipshead_id=pIpsheadId) AND (ipsitem_prodcat_id=pProdcatId) AND (ipsitem_qtybreak=pQtyBreak)); IF (FOUND) THEN _new := false; ELSE _ipsitemid := nextval('ipsitem_ipsitem_id_seq'); END IF; END IF; IF (_new) THEN INSERT INTO ipsiteminfo ( ipsitem_id, ipsitem_ipshead_id, ipsitem_prodcat_id, ipsitem_qtybreak, ipsitem_price, ipsitem_discntprcnt, ipsitem_fixedamtdiscount, ipsitem_type) VALUES ( _ipsitemid, pIpsheadId, pProdcatId, pQtyBreak, 0.0, pDiscount * .01, pFixedAmtDiscount, pType); ELSE UPDATE ipsiteminfo SET ipsitem_qtybreak = pQtyBreak, ipsitem_discntprcnt = pDiscount * .01, ipsitem_fixedamtdiscount = pFixedAmtDiscount, ipsitem_type = pType WHERE (ipsitem_id=_ipsitemid); END IF; RETURN _ipsitemid; END; $$; ALTER FUNCTION public.saveipsprodcat(pipsprodcatid integer, pipsheadid integer, pprodcatid integer, pqtybreak numeric, pdiscount numeric, pfixedamtdiscount numeric, ptype text) OWNER TO admin; -- -- Name: saveitemimage(integer, character, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION saveitemimage(integer, character, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pPurpose ALIAS FOR $2; pImageid ALIAS FOR $3; _itemimageId INTEGER; BEGIN -- See if a record with this purpose already exists SELECT imageass_id INTO _itemimageId FROM imageass WHERE ( (imageass_source='I') AND (imageass_source_id=pItemid) AND (imageass_purpose=pPurpose) ); IF (FOUND) THEN UPDATE imageass SET imageass_image_id=pImageId WHERE (imageass_id=_itemimageId); ELSE _itemimageId := NEXTVAL('imageass_imageass_id_seq'); INSERT INTO imageass VALUES (_itemimageId,pItemid,'I',pImageid,pPurpose); END IF; RETURN _itemimageId; END; $_$; ALTER FUNCTION public.saveitemimage(integer, character, integer) OWNER TO admin; -- -- Name: saveitemuomconv(integer, integer, numeric, integer, numeric, boolean, integer[]); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION saveitemuomconv(integer, integer, numeric, integer, numeric, boolean, integer[]) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemId ALIAS FOR $1; pFromUomId ALIAS FOR $2; pFromValue ALIAS FOR $3; pToUomId ALIAS FOR $4; pToValue ALIAS FOR $5; pFractional ALIAS FOR $6; pUomTypes ALIAS FOR $7; _p RECORD; _fromUomId INTEGER; _fromValue NUMERIC; _toUomId INTEGER; _toValue NUMERIC; _fractional BOOLEAN; _seq INTEGER; _i INTEGER; _uomtype TEXT; BEGIN -- Make sure we have some itemtypes IF (pUomTypes IS NULL) OR (ARRAY_UPPER(pUomTypes,1) = 0) THEN RAISE EXCEPTION 'You must include at least one item type.'; END IF; -- If this is a global UOM, over-ride with global data. SELECT * INTO _p FROM uomconv WHERE ((((uomconv_from_uom_id=pFromUomId) AND (uomconv_to_uom_id=pToUomId)) OR ((uomconv_from_uom_id=pToUomId) AND (uomconv_to_uom_id=pFromUomId)))); IF (FOUND) THEN _fromUomId := _p.uomconv_from_uom_id; _toUomId := _p.uomconv_to_uom_id; _fromValue := _p.uomconv_from_value; _toValue := _p.uomconv_to_value; _fractional := _p.uomconv_fractional; RAISE NOTICE 'Defaulted to global Unit of Measure conversion ratios.'; ELSE _fromUomId := pFromUomId; _fromValue := pFromValue; _toUomId := pToUomId; _toValue := pToValue; _fractional := pFractional; END IF; -- See if an item conversion exists going the other way SELECT f.uom_name AS f_uom, t.uom_name as t_uom INTO _p FROM itemuomconv,uom f, uom t WHERE ((itemuomconv_item_id=pItemId) AND (itemuomconv_from_uom_id=_toUomId) AND (itemuomconv_to_uom_id=_fromUomId) AND (f.uom_id=itemuomconv_from_uom_id) AND (t.uom_id=itemuomconv_to_uom_id)); IF (FOUND) THEN RAISE EXCEPTION 'Unit of measure conversion already exists going from % to %.',_p.f_uom,_p.t_uom; END IF; -- See if an item conversion record exists SELECT * INTO _p FROM itemuomconv WHERE ((itemuomconv_item_id=pItemId) AND (itemuomconv_from_uom_id=_fromUomId) AND (itemuomconv_to_uom_id=_toUomId)); -- Update if found IF (FOUND) THEN UPDATE itemuomconv SET itemuomconv_from_value=_fromValue, itemuomconv_to_value=_toValue, itemuomconv_fractional=_fractional WHERE (itemuomconv_id=_p.itemuomconv_id); _seq := _p.itemuomconv_id; --Delete old type list DELETE FROM itemuom WHERE itemuom_itemuomconv_id=_p.itemuomconv_id; ELSE -- Otherwise create a new one SELECT NEXTVAL('itemuomconv_itemuomconv_id_seq') INTO _seq; INSERT INTO itemuomconv VALUES (_seq, pItemId,_fromUomId,_fromValue,_toUomId,_toValue,_fractional); END IF; -- Build new type list FOR _i IN 1..ARRAY_UPPER(pUomTypes,1) LOOP SELECT uomtype_name INTO _uomtype FROM itemuomconv, itemuom, uomtype WHERE ((itemuom_uomtype_id=uomtype_id) AND (itemuomconv_id=itemuom_itemuomconv_id) AND (itemuomconv_item_id=pItemId) AND (uomtype_name != 'Selling') AND (itemuom_uomtype_id=pUomTypes[_i])); IF (FOUND) THEN RAISE EXCEPTION 'Unit of Measure Type % is already used on this item',_uomtype; ELSE INSERT INTO itemuom (itemuom_itemuomconv_id,itemuom_uomtype_id) VALUES (_seq,pUomTypes[_i]); END IF; END LOOP; RETURN _seq; END; $_$; ALTER FUNCTION public.saveitemuomconv(integer, integer, numeric, integer, numeric, boolean, integer[]) OWNER TO admin; -- -- Name: savemetasql(text, text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION savemetasql(text, text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN saveMetasql($1, $2, $3, $4, true, NULL, 0); END; $_$; ALTER FUNCTION public.savemetasql(text, text, text, text) OWNER TO admin; -- -- Name: savemetasql(text, text, text, text, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION savemetasql(text, text, text, text, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN saveMetasql($1, $2, $3, $4, $5, NULL, 0); END; $_$; ALTER FUNCTION public.savemetasql(text, text, text, text, boolean) OWNER TO admin; -- -- Name: savemetasql(text, text, text, text, boolean, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION savemetasql(text, text, text, text, boolean, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN saveMetasql($1, $2, $3, $4, $5, $6, 0); END; $_$; ALTER FUNCTION public.savemetasql(text, text, text, text, boolean, text) OWNER TO admin; -- -- Name: savemetasql(text, text, text, text, boolean, text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION savemetasql(text, text, text, text, boolean, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pGroup ALIAS FOR $1; pName ALIAS FOR $2; pNotes ALIAS FOR $3; pQuery ALIAS FOR $4; pSystem ALIAS FOR $5; pSchema ALIAS FOR $6; pGrade ALIAS FOR $7; _metasqlid INTEGER; _debug BOOL := false; _grade INTEGER; _insertstr TEXT; _table TEXT; BEGIN --See if Query already exists SELECT metasql_id INTO _metasqlid FROM metasql WHERE ((metasql_group=pGroup) AND (metasql_name=pName) AND (metasql_grade=pGrade)); IF (FOUND) THEN IF (_debug) THEN RAISE NOTICE 'update metasql'; END IF; UPDATE metasql SET metasql_group=pGroup, metasql_name=pName, metasql_notes=pNotes, metasql_query=pQuery WHERE (metasql_id=_metasqlid); ELSE IF (COALESCE(pSchema, 'public') = 'public' OR TRIM(pSchema) = '') THEN _table := 'metasql'; ELSE _table := pSchema || '.pkgmetasql'; END IF; IF (pGrade IS NULL) THEN SELECT MAX(metasql_grade) + 1 INTO _grade FROM metasql WHERE ((metasql_group=pGroup) AND (metasql_name=pName)); ELSE _grade := pGrade; END IF; _insertstr := 'INSERT INTO ' || _table || ' (metasql_group, metasql_name, metasql_notes, ' || ' metasql_query, metasql_grade) VALUES (' || COALESCE(quote_literal(pGroup),'NULL') || ',' || COALESCE(quote_literal(pName), 'NULL') || ',' || COALESCE(quote_literal(pNotes), 'NULL') || ',' || COALESCE(quote_literal(pQuery), 'NULL') ||',' || COALESCE(quote_literal(_grade), 'NULL') || ') RETURNING metasql_id;' ; IF (_debug) THEN RAISE NOTICE '%', _insertstr; END IF; EXECUTE _insertstr INTO _metasqlid; END IF; RETURN _metasqlid; END; $_$; ALTER FUNCTION public.savemetasql(text, text, text, text, boolean, text, integer) OWNER TO admin; -- -- Name: scraps(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION scraps(text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTransType ALIAS FOR $1; BEGIN IF (pTransType IN ('SI', 'SM', 'EX')) THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END; $_$; ALTER FUNCTION public.scraps(text) OWNER TO admin; -- -- Name: scrapwomaterial(integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION scrapwomaterial(integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN scrapWoMaterial($1, $2, CURRENT_TIMESTAMP); END; $_$; ALTER FUNCTION public.scrapwomaterial(integer, numeric) OWNER TO admin; -- -- Name: scrapwomaterial(integer, numeric, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION scrapwomaterial(integer, numeric, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; pGlDistTS ALIAS FOR $3; _costmethod CHAR(1); _scrapValue NUMERIC; _r RECORD; BEGIN -- Validate IF (pQty <= 0) THEN RAISE EXCEPTION 'Scrap quantity must be a positive number'; ELSIF ( ( SELECT (womatl_qtyiss < pQty) FROM womatl WHERE (womatl_id=pWomatlid) ) ) THEN RAISE EXCEPTION 'You may not scrap more material than has been issued'; END IF; -- Get the wip G/L account SELECT costcat_wip_accnt_id INTO _r FROM womatl, wo, itemsite, costcat WHERE((womatl_wo_id=wo_id) AND (wo_itemsite_id=itemsite_id) AND (itemsite_costcat_id=costcat_id) AND (womatl_id=pWomatlid)); -- Calculate scrap value SELECT itemsite_costmethod INTO _costmethod FROM womatl JOIN itemsite ON (womatl_itemsite_id=itemsite_id) WHERE (womatl_id=pWomatlid); IF (_costmethod = 'S') THEN SELECT ROUND((stdCost(itemsite_item_id) * itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, pQty)),2) INTO _scrapValue FROM womatl JOIN itemsite ON (womatl_itemsite_id=itemsite_id) WHERE (womatl_id=pWomatlid); ELSIF (_costmethod = 'A') THEN SELECT ROUND((SUM(invhist_invqty * invhist_unitcost)-womatl_scrapvalue)/ (CASE WHEN (SUM(invhist_invqty)-itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtywipscrap) = 0) THEN 1 ELSE SUM(invhist_invqty)-itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtywipscrap) END),2) * itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, pQty) INTO _scrapValue FROM womatl JOIN womatlpost ON (womatl_id=womatlpost_womatl_id) JOIN invhist ON (womatlpost_invhist_id=invhist_id) JOIN itemsite ON (womatl_itemsite_id=itemsite_id) WHERE (womatl_id=pWomatlid) GROUP BY itemsite_item_id,womatl_uom_id,womatl_qtywipscrap,womatl_scrapvalue; ELSE RAISE EXCEPTION 'Cost method not supported to scrap this item'; END IF; -- Distribute to G/L PERFORM insertGLTransaction( 'W/O', 'WO', formatWoNumber(womatl_wo_id), ('Scrap ' || item_number || ' from Work Order'), getPrjAccntId(wo_prj_id, _r.costcat_wip_accnt_id), getPrjAccntId(wo_prj_id, costcat_mfgscrap_accnt_id), -1, _scrapValue, date(pGlDistTS) ) FROM wo, womatl, itemsite, item, costcat WHERE ( (wo_id=womatl_wo_id) AND (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (itemsite_costcat_id=costcat_id) AND (womatl_id=pWomatlid) ); UPDATE womatl SET womatl_qtywipscrap=(womatl_qtywipscrap + pQty), womatl_scrapvalue = womatl_scrapvalue + _scrapValue, womatl_qtyiss=(womatl_qtyiss - pQty) WHERE (womatl_id=pWomatlid); UPDATE wo SET wo_wipvalue = wo_wipvalue-_scrapValue, wo_postedvalue = wo_postedvalue-_scrapValue FROM womatl WHERE ((womatl_id=pWomatlid) AND (wo_id=womatl_wo_id)); RETURN pWomatlid; END; $_$; ALTER FUNCTION public.scrapwomaterial(integer, numeric, timestamp with time zone) OWNER TO admin; -- -- Name: selectbalanceforbilling(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION selectbalanceforbilling(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; _returnval BOOLEAN := TRUE; _doSelect BOOLEAN; _result INTEGER; _soitem RECORD; BEGIN FOR _soitem IN -- Get the shipments for this SO. Kits are not shipped SELECT cust_partialship, coitem_id, coitem_linenumber, 'NOTK' AS item_type, SUM(shipitem_qty) AS qty, ( (SUM(shipitem_qty) >= (coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned + SUM(shipitem_qty))) OR (NOT cust_partialship) ) AS toclose FROM cohead JOIN custinfo ON (cust_id=cohead_cust_id) JOIN coitem ON (coitem_cohead_id=cohead_id) JOIN shipitem ON ( (shipitem_orderitem_id=coitem_id) AND (NOT shipitem_invoiced) ) JOIN shiphead ON ( (shiphead_id=shipitem_shiphead_id) AND (shiphead_order_type='SO') AND (shiphead_shipped) ) WHERE (cohead_id=pSoheadid) GROUP BY cust_partialship, coitem_id, item_type, coitem_linenumber, coitem_qtyord, coitem_qtyshipped, coitem_qtyreturned UNION -- Get the Kits for this SO SELECT cust_partialship, coitem_id, coitem_linenumber, 'K' AS item_type, coitem_qtyord AS qty, TRUE AS toclose FROM cohead JOIN custinfo ON (cust_id=cohead_cust_id) JOIN coitem ON (coitem_cohead_id=cohead_id AND coitem_status='O') JOIN itemsite ON (itemsite_id=coitem_itemsite_id) JOIN item ON ( (item_id=itemsite_item_id) AND (item_type='K') ) WHERE (cohead_id=pSoheadid) LOOP _doSelect := true; IF(_soitem.item_type = 'K') THEN -- see if all the sub items are shipped SELECT coitem_id INTO _result FROM coitem WHERE((coitem_cohead_id=pSoheadid) AND (coitem_linenumber=_soitem.coitem_linenumber) AND (coitem_subnumber > 0) AND ((coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) > 0)) LIMIT 1; IF( FOUND ) THEN _doSelect := false; END IF; END IF; IF (_doSelect) THEN -- do as much as we can but still report errors if they occur IF (selectForBilling(_soitem.coitem_id, _soitem.qty, _soitem.toclose) < 0) THEN _returnval := FALSE; END IF; END IF; END LOOP; RETURN _returnval; END; $_$; ALTER FUNCTION public.selectbalanceforbilling(integer) OWNER TO admin; -- -- Name: selectdiscountitemsforpayment(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION selectdiscountitemsforpayment(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pBankaccntid ALIAS FOR $2; _currid INTEGER; _r RECORD; BEGIN SELECT bankaccnt_curr_id INTO _currid FROM bankaccnt WHERE (bankaccnt_id=pBankaccntid); FOR _r IN SELECT apopen_id FROM apopen, terms WHERE((CURRENT_DATE <= determineDiscountDate(apopen_terms_id, apopen_docdate)) AND (terms_discprcnt > 0.0) AND (apopen_terms_id=terms_id) AND (apopen_open) AND (apopen_status = 'O') AND (apopen_doctype IN ('V', 'D')) AND (apopen_vend_id=pVendid) AND (apopen_curr_id=_currid) ) LOOP PERFORM selectPayment(_r.apopen_id, pBankaccntid); END LOOP; RETURN 1; END; $_$; ALTER FUNCTION public.selectdiscountitemsforpayment(integer, integer) OWNER TO admin; -- -- Name: selectdueitemsforpayment(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION selectdueitemsforpayment(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pBankaccntid ALIAS FOR $2; _currid INTEGER; BEGIN SELECT bankaccnt_curr_id INTO _currid FROM bankaccnt WHERE (bankaccnt_id=pBankaccntid); PERFORM selectPayment(apopen_id, pBankaccntid) FROM apopen WHERE((apopen_open) AND (apopen_vend_id=pVendid) AND (apopen_duedate <= CURRENT_DATE) AND (apopen_status = 'O') AND (apopen_doctype IN ('V', 'D')) AND (apopen_curr_id=_currid) ); RETURN 1; END; $_$; ALTER FUNCTION public.selectdueitemsforpayment(integer, integer) OWNER TO admin; -- -- Name: selectforbilling(integer, numeric, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION selectforbilling(integer, numeric, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoitemid ALIAS FOR $1; pQty ALIAS FOR $2; pClose ALIAS FOR $3; _itemid INTEGER := NULL; _taxzoneid INTEGER := NULL; _taxid INTEGER := NULL; _taxtypeid INTEGER := NULL; BEGIN SELECT cobmisc_taxzone_id, item_id, coitem_taxtype_id INTO _taxzoneid, _itemid, _taxtypeid FROM cobmisc, coitem, itemsite, item WHERE ((cobmisc_cohead_id = coitem_cohead_id) AND (NOT cobmisc_posted) AND (coitem_itemsite_id = itemsite_id) AND (itemsite_item_id = item_id) AND (coitem_id = pSoitemid) ) LIMIT 1; RETURN selectforbilling(pSoitemid, pQty, pClose, _taxtypeid); END; $_$; ALTER FUNCTION public.selectforbilling(integer, numeric, boolean) OWNER TO admin; -- -- Name: selectforbilling(integer, numeric, boolean, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION selectforbilling(integer, numeric, boolean, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoitemid ALIAS FOR $1; pQty ALIAS FOR $2; pClose ALIAS FOR $3; ptaxtypeid ALIAS FOR $4; _cobillid INTEGER; _r RECORD; BEGIN -- Get some information SELECT cobmisc_id, cobmisc_taxzone_id, coitem_id, coitem_price, coitem_price_invuomratio AS invpricerat, coitem_qty_invuomratio, item_id INTO _r FROM cobmisc, coitem, itemsite, item, site() WHERE ((cobmisc_cohead_id = coitem_cohead_id) AND (NOT cobmisc_posted) AND (coitem_itemsite_id = itemsite_id) AND (itemsite_item_id = item_id) AND (coitem_id = pSoitemid) AND (itemsite_warehous_id = warehous_id) ) LIMIT 1; -- check to make sure the qty to bill for is not less than -- the total un-invoiced shipped amount IF ((SELECT (pQty < SUM(shipitem_qty)) FROM shipitem, shiphead, coitem WHERE ( (shipitem_shiphead_id=shiphead_id) AND (shiphead_order_type='SO') AND (shiphead_order_id=coitem_cohead_id) AND (shipitem_orderitem_id=coitem_id) AND (shiphead_shipped) AND (NOT shipitem_invoiced) AND (coitem_id=pSoitemid) ) ) ) THEN RETURN -1; END IF; SELECT cobill_id INTO _cobillid FROM cobill, cobmisc, coitem WHERE ((cobill_cobmisc_id = cobmisc_id) AND (cobmisc_cohead_id = coitem_cohead_id) AND (cobill_coitem_id = coitem_id) AND (NOT cobmisc_posted) AND (coitem_id = pSoitemid)); IF (FOUND) THEN UPDATE cobill SET cobill_selectdate = CURRENT_DATE, cobill_select_username = getEffectiveXtUser(), cobill_qty = pQty, cobill_toclose = pClose, cobill_taxtype_id = ptaxtypeid WHERE (cobill_id=_cobillid); ELSE SELECT NEXTVAL('cobill_cobill_id_seq') INTO _cobillid; INSERT INTO cobill (cobill_id, cobill_coitem_id, cobill_cobmisc_id, cobill_selectdate, cobill_select_username, cobill_qty, cobill_toclose, cobill_taxtype_id) VALUES (_cobillid, _r.coitem_id, _r.cobmisc_id, CURRENT_DATE, getEffectiveXtUser(), pQty, pClose, ptaxtypeid); END IF; RETURN _cobillid; END; $_$; ALTER FUNCTION public.selectforbilling(integer, numeric, boolean, integer) OWNER TO admin; -- -- Name: selectpayment(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION selectpayment(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenid ALIAS FOR $1; pBankaccntid ALIAS FOR $2; _p RECORD; _apselectid INTEGER; _amount NUMERIC; _discount NUMERIC; BEGIN SELECT apopen_amount, apopen_paid, apopen_doctype, apopen_docdate, apopen_curr_id, apopen_amount - apopen_paid - COALESCE((SELECT SUM(currToCurr(checkitem_curr_id, apopen_curr_id, checkitem_amount + checkitem_discount, checkhead_checkdate)) FROM checkitem, checkhead WHERE((checkitem_checkhead_id=checkhead_id) AND (checkitem_apopen_id=apopen_id) AND (NOT checkhead_deleted) AND (NOT checkhead_replaced) AND (NOT checkhead_posted)) ),0) AS balance, noNeg(COALESCE(apopen_discountable_amount, 0) * CASE WHEN (CURRENT_DATE <= determineDiscountDate(apopen_terms_id, apopen_docdate)) THEN terms_discprcnt ELSE 0.0 END - discount_applied) AS discount_available INTO _p FROM apopen LEFT OUTER JOIN terms ON (apopen_terms_id=terms_id), (SELECT COALESCE(SUM(apapply_amount),0) AS discount_applied FROM apapply, apopen WHERE((apapply_target_apopen_id=pApopenid) AND (apapply_source_apopen_id=apopen_id) AND (apopen_discount)) ) AS data WHERE(apopen_id=pApopenid); IF(NOT FOUND OR (NOT _p.apopen_doctype IN ('V','D'))) THEN RETURN -1; END IF; _discount := round(_p.discount_available, 2); _amount := noNeg(round(_p.balance, 2) - _discount); IF (round(_p.balance,2) < (_discount + _amount)) THEN RETURN -2; END IF; IF (_amount > 0) THEN SELECT apselect_id INTO _apselectid FROM apselect WHERE (apselect_apopen_id=pApopenid); IF (FOUND) THEN UPDATE apselect SET apselect_amount=_amount, apselect_discount=_discount, apselect_curr_id = _p.apopen_curr_id WHERE(apselect_id=_apselectid); ELSE SELECT NEXTVAL('apselect_apselect_id_seq') INTO _apselectid; INSERT INTO apselect ( apselect_id, apselect_apopen_id, apselect_amount, apselect_discount, apselect_bankaccnt_id, apselect_curr_id, apselect_date ) VALUES ( _apselectid, pApopenid, _amount, _discount, pBankaccntid, _p.apopen_curr_id, _p.apopen_docdate ); END IF; ELSE _apselectid := 0; END IF; RETURN _apselectid; END; $_$; ALTER FUNCTION public.selectpayment(integer, integer) OWNER TO admin; -- -- Name: selectuninvoicedshipment(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION selectuninvoicedshipment(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipheadid ALIAS FOR $1; _cobmiscid INTEGER; _coheadid INTEGER; _r RECORD; _cobillid INTEGER; BEGIN -- make a cobmisc head if it doesn't already exist for this cohead SELECT shiphead_order_id, createBillingHeader(shiphead_order_id) INTO _coheadid, _cobmiscid FROM shiphead JOIN shipitem ON (shipitem_shiphead_id=shiphead_id) WHERE (shiphead_shipped AND NOT shipitem_invoiced AND (shiphead_id=pShipheadid)); -- Grab all of the uninvoiced shipitem records FOR _r IN SELECT cohead_id, coitem_id, SUM(shipitem_qty) AS qty, coitem_price, coitem_price_invuomratio AS invpricerat, coitem_qty_invuomratio, item_id, ( ((coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) <= 0) OR (NOT cust_partialship) ) AS toclose, coitem_taxtype_id FROM shiphead, shipitem, coitem, cohead, custinfo, itemsite, item WHERE ( (shipitem_shiphead_id=shiphead_id) AND (shipitem_orderitem_id=coitem_id) AND (coitem_cohead_id=cohead_id) AND (shiphead_shipped) AND (NOT shipitem_invoiced) AND (coitem_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (cohead_cust_id=cust_id) AND (item_type != 'K') AND (cohead_id=_coheadid) AND (shiphead_id=pShipheadid) ) GROUP BY cohead_id, coitem_id, cust_partialship, coitem_taxtype_id, coitem_qtyord, coitem_qtyshipped, coitem_qtyreturned, coitem_price, invpricerat, coitem_qty_invuomratio, item_id UNION SELECT cohead_id, coitem_id, coitem_qtyord AS qty, coitem_price, coitem_price_invuomratio AS invpricerat, coitem_qty_invuomratio, item_id, true AS toclose, coitem_taxtype_id FROM shiphead, cohead, custinfo, itemsite, item, coitem AS kit WHERE((shiphead_order_id=cohead_id) AND (coitem_cohead_id=cohead_id) AND (coitem_status='O') AND (shiphead_shipped) AND (coitem_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (cohead_cust_id=cust_id) AND (item_type = 'K') AND (cohead_id=_coheadid) AND (shiphead_id=pShipheadid) AND (coitem_linenumber NOT IN (SELECT sub.coitem_linenumber FROM coitem AS sub WHERE sub.coitem_cohead_id=cohead_id -- cohead for kit AND sub.coitem_linenumber=kit.coitem_linenumber AND sub.coitem_subnumber > 0 AND ((sub.coitem_qtyord - sub.coitem_qtyshipped + sub.coitem_qtyreturned) > 0) LIMIT 1) )) GROUP BY cohead_id, coitem_id, cust_partialship, coitem_taxtype_id, coitem_qtyord, coitem_qtyshipped, coitem_qtyreturned, coitem_price, invpricerat, coitem_qty_invuomratio, item_id, coitem_linenumber LOOP SELECT cobill_id INTO _cobillid FROM cobill, cobmisc, coitem WHERE ((cobill_cobmisc_id=cobmisc_id) AND (cobmisc_cohead_id=coitem_cohead_id) AND (cobill_coitem_id=coitem_id) AND (NOT cobmisc_posted) AND (cobill_cobmisc_id=_cobmiscid) AND (coitem_id=_r.coitem_id)) LIMIT 1; IF (FOUND) THEN UPDATE cobill SET cobill_selectdate = CURRENT_DATE, cobill_select_username = getEffectiveXtUser(), cobill_qty = cobill_qty + _r.qty, cobill_toclose = _r.toclose, cobill_taxtype_id = _r.coitem_taxtype_id WHERE (cobill_id=_cobillid); ELSE -- Now insert the cobill line INSERT INTO cobill ( cobill_cobmisc_id, cobill_coitem_id, cobill_selectdate, cobill_select_username, cobill_qty, cobill_toclose, cobill_taxtype_id ) VALUES ( _cobmiscid, _r.coitem_id, CURRENT_DATE, getEffectiveXtUser(), _r.qty, _r.toclose, _r.coitem_taxtype_id ); END IF; END LOOP; RETURN _cobmiscid; END; $_$; ALTER FUNCTION public.selectuninvoicedshipment(integer) OWNER TO admin; -- -- Name: selectuninvoicedshipments(integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION selectuninvoicedshipments(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pCusttype ALIAS FOR $2; _r RECORD; _recordCounter INTEGER := 0; BEGIN -- Grab all of the uninvoiced shipitem records FOR _r IN SELECT DISTINCT shiphead_id FROM shiphead, shipitem, coitem, itemsite, cohead, custinfo, custtype WHERE ( (shiphead_order_type='SO') AND (shipitem_shiphead_id=shiphead_id) AND (shipitem_orderitem_id=coitem_id) AND (coitem_itemsite_id=itemsite_id) AND (coitem_status <> 'C') AND (coitem_cohead_id=cohead_id) AND (cohead_cust_id=cust_id) AND (cust_custtype_id=custtype_id) AND ( (pWarehousid = -1) OR (itemsite_warehous_id=pWarehousid) ) AND (custtype_code ~ pCusttype) AND (shiphead_shipped) AND (NOT shipitem_invoiced) AND (coitem_id NOT IN ( SELECT cobill_coitem_id FROM cobmisc, cobill WHERE ((cobill_cobmisc_id=cobmisc_id) AND (NOT cobmisc_posted) ) ) ) ) LOOP PERFORM selectUninvoicedShipment(_r.shiphead_id); _recordCounter := _recordCounter + 1; END LOOP; RETURN _recordCounter; END; $_$; ALTER FUNCTION public.selectuninvoicedshipments(integer, text) OWNER TO admin; -- -- Name: selectuninvoicedshipments(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION selectuninvoicedshipments(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; _r RECORD; _recordCounter INTEGER := 0; BEGIN -- Grab all of the uninvoiced shipitem records FOR _r IN SELECT DISTINCT shiphead_id FROM shiphead, shipitem, coitem, itemsite WHERE ( (shiphead_order_type='SO') AND (shipitem_shiphead_id=shiphead_id) AND (shipitem_orderitem_id=coitem_id) AND (coitem_itemsite_id=itemsite_id) AND (coitem_status <> 'C') AND ( (pWarehousid = -1) OR (itemsite_warehous_id=pWarehousid) ) AND (shiphead_shipped) AND (NOT shipitem_invoiced) AND (coitem_id NOT IN ( SELECT cobill_coitem_id FROM cobmisc, cobill WHERE ((cobill_cobmisc_id=cobmisc_id) AND (NOT cobmisc_posted) ) ) ) ) LOOP PERFORM selectUninvoicedShipment(_r.shiphead_id); _recordCounter := _recordCounter + 1; END LOOP; RETURN _recordCounter; END; $_$; ALTER FUNCTION public.selectuninvoicedshipments(integer) OWNER TO admin; -- -- Name: selectuninvoicedshipments(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION selectuninvoicedshipments(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pCusttypeid ALIAS FOR $2; _r RECORD; _recordCounter INTEGER := 0; BEGIN -- Grab all of the uninvoiced shipitem records FOR _r IN SELECT DISTINCT shiphead_id FROM shiphead, shipitem, coitem, itemsite, cohead, custinfo WHERE ( (shiphead_order_type='SO') AND (shipitem_shiphead_id=shiphead_id) AND (shipitem_orderitem_id=coitem_id) AND (coitem_itemsite_id=itemsite_id) AND (coitem_status <> 'C') AND (coitem_cohead_id=cohead_id) AND (cohead_cust_id=cust_id) AND (cust_custtype_id=pCusttypeid) AND ( (pWarehousid = -1) OR (itemsite_warehous_id=pWarehousid) ) AND (shiphead_shipped) AND (NOT shipitem_invoiced) AND (coitem_id NOT IN ( SELECT cobill_coitem_id FROM cobmisc, cobill WHERE ((cobill_cobmisc_id=cobmisc_id) AND (NOT cobmisc_posted) ) ) ) ) LOOP PERFORM selectUninvoicedShipment(_r.shiphead_id); _recordCounter := _recordCounter + 1; END LOOP; RETURN _recordCounter; END; $_$; ALTER FUNCTION public.selectuninvoicedshipments(integer, integer) OWNER TO admin; -- -- Name: setapjournalnumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setapjournalnumber() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _journalNumber INTEGER; _r RECORD; BEGIN -- Fetch the next Journal Number SELECT fetchJournalNumber('A/P') INTO _journalNumber; -- Walk through all of the A/P Open Items FOR _r IN SELECT apopen_id, apopen_docnumber FROM apopen WHERE (NOT apopen_posted) LOOP -- Set the Journal Number for all of the G/L Transactions -- for the A/P Open Item UPDATE gltrans SET gltrans_journalnumber=_journalNumber WHERE ( (gltrans_source='P/O') AND (gltrans_doctype IN ('VO')) AND (gltrans_docnumber=_r.apopen_docnumber) AND (NOT gltrans_exported) ); -- Set the Journal Number for the A/P Open Item UPDATE apopen SET apopen_journalnumber=_journalNumber WHERE (apopen_id=_r.apopen_id); END LOOP; RETURN _journalNumber; END; $$; ALTER FUNCTION public.setapjournalnumber() OWNER TO admin; -- -- Name: setarjournalnumber(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setarjournalnumber() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _journalNumber INTEGER; _r RECORD; BEGIN -- Fetch the next Journal Number SELECT fetchJournalNumber('A/R') INTO _journalNumber; -- Walk through all of the A/R Open Items FOR _r IN SELECT aropen_id, aropen_docnumber FROM aropen WHERE (NOT aropen_posted) LOOP -- Set the Journal Number for all of the G/L Transactions -- for the A/R Open Item UPDATE gltrans SET gltrans_journalnumber=_journalNumber WHERE ( (gltrans_source='S/O') AND (gltrans_doctype IN ('CM', 'IN')) AND (gltrans_docnumber=_r.aropen_docnumber) AND (NOT gltrans_exported) ); -- Set the Journal Number for the A/R Open Item UPDATE aropen SET aropen_journalnumber=_journalNumber WHERE (aropen_id=_r.aropen_id); END LOOP; RETURN _journalNumber; END; $$; ALTER FUNCTION public.setarjournalnumber() OWNER TO admin; -- -- Name: setbudget(integer, integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setbudget(integer, integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; pAccntid ALIAS FOR $2; pAmount ALIAS FOR $3; BEGIN RETURN setBudget(1, pPeriodid, pAccntid, pAmount); END; $_$; ALTER FUNCTION public.setbudget(integer, integer, numeric) OWNER TO admin; -- -- Name: setbudget(integer, integer, integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setbudget(integer, integer, integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBudgheadid ALIAS FOR $1; pPeriodid ALIAS FOR $2; pAccntid ALIAS FOR $3; pAmount ALIAS FOR $4; _budgetid INTEGER; BEGIN SELECT budgitem_id INTO _budgetid FROM budgitem WHERE ((budgitem_period_id=pPeriodid) AND (budgitem_budghead_id=pBudgheadid) AND (budgitem_accnt_id=pAccntid)); IF (FOUND) THEN UPDATE budgitem SET budgitem_amount = pAmount WHERE (budgitem_id=_budgetid); ELSE SELECT nextval('budgitem_budgitem_id_seq') INTO _budgetid; INSERT INTO budgitem (budgitem_id, budgitem_budghead_id, budgitem_period_id, budgitem_accnt_id, budgitem_amount) VALUES(_budgetid, pBudgheadid, pPeriodid, pAccntid, pAmount); END IF; RETURN _budgetid; END; $_$; ALTER FUNCTION public.setbudget(integer, integer, integer, numeric) OWNER TO admin; -- -- Name: setbytea(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setbytea(text) RETURNS bytea LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pMetricName ALIAS FOR $1; _value bytea; BEGIN _value := decode(pMetricName, 'escape'); RETURN _value; END; $_$; ALTER FUNCTION public.setbytea(text) OWNER TO admin; -- -- Name: setbytea(bytea); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setbytea(bytea) RETURNS bytea LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pMetricName ALIAS FOR $1; _value bytea; BEGIN _value := pMetricName; RETURN _value; END; $_$; ALTER FUNCTION public.setbytea(bytea) OWNER TO admin; -- -- Name: setccbankaccnt(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setccbankaccnt(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pccardtype ALIAS FOR $1; pbankaccntid ALIAS FOR $2; _ccbankid INTEGER; _numfound INTEGER; BEGIN RAISE DEBUG 'setCCBankAccount(%, %) entered', pccardtype, pbankaccntid; UPDATE ccbank SET ccbank_bankaccnt_id=pbankaccntid WHERE ccbank_ccard_type=pccardtype RETURNING ccbank_id INTO _ccbankid; GET DIAGNOSTICS _numfound = ROW_COUNT; IF (_numfound <= 0) THEN INSERT INTO ccbank (ccbank_ccard_type, ccbank_bankaccnt_id) VALUES (pccardtype, pbankaccntid) RETURNING _ccbankid; END IF; RETURN _ccbankid; END; $_$; ALTER FUNCTION public.setccbankaccnt(text, integer) OWNER TO admin; -- -- Name: seteffectivextuser(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION seteffectivextuser(text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; BEGIN PERFORM initEffectiveXtUser(); PERFORM * FROM effective_user WHERE effective_key = 'username'; IF FOUND THEN UPDATE effective_user SET effective_value = pUsername WHERE effective_key = 'username'; ELSE INSERT INTO effective_user (effective_key, effective_value) VALUES('username', pUsername); END IF; RETURN true; END; $_$; ALTER FUNCTION public.seteffectivextuser(text) OWNER TO admin; -- -- Name: setgljournalnumber(date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setgljournalnumber(date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStartDate ALIAS FOR $1; pEndDate ALIAS FOR $2; _journalNumber INTEGER; BEGIN -- Fetch the next Journal Number SELECT fetchJournalNumber('G/L') INTO _journalNumber; -- Set the Journal Number for all of the unposted G/L Transactions -- in the passed date range. UPDATE gltrans SET gltrans_journalnumber=_journalNumber WHERE ( (NOT gltrans_exported) AND (gltrans_date BETWEEN pStartDate and pEndDate) ); RETURN _journalNumber; END; $_$; ALTER FUNCTION public.setgljournalnumber(date, date) OWNER TO admin; -- -- Name: setmetric(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setmetric(text, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pMetricName ALIAS FOR $1; pMetricValue ALIAS FOR $2; _metricid INTEGER; BEGIN SELECT metric_id INTO _metricid FROM metric WHERE (metric_name=pMetricName); IF (FOUND) THEN UPDATE metric SET metric_value=pMetricValue WHERE (metric_id=_metricid); ELSE INSERT INTO metric (metric_name, metric_value) VALUES (pMetricName, pMetricValue); END IF; RETURN TRUE; END; $_$; ALTER FUNCTION public.setmetric(text, text) OWNER TO admin; -- -- Name: setmetricenc(text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setmetricenc(text, text, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pMetricName ALIAS FOR $1; pMetricValue ALIAS FOR $2; pMetricEnc ALIAS FOR $3; _metricid INTEGER; _value bytea; _key bytea; BEGIN _value = decode(pMetricValue, 'escape'); _key = decode(pMetricEnc, 'escape'); SELECT metricenc_id INTO _metricid FROM metricenc WHERE (metricenc_name=pMetricName); IF (FOUND) THEN UPDATE metricenc SET metricenc_value=encrypt(_value, _key, 'bf') WHERE (metricenc_id=_metricid); ELSE INSERT INTO metricenc (metricenc_name, metricenc_value) VALUES (pMetricName, encrypt(_value, _key, 'bf')); END IF; RETURN TRUE; END; $_$; ALTER FUNCTION public.setmetricenc(text, text, text) OWNER TO admin; -- -- Name: setnextapmemonumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setnextapmemonumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='APMemoNumber'); IF (FOUND) THEN UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_id=_orderseqid); ELSE INSERT INTO orderseq (orderseq_name, orderseq_number) VALUES ('APMemoNumber', pNumber); END IF; RETURN 1; END; $_$; ALTER FUNCTION public.setnextapmemonumber(integer) OWNER TO admin; -- -- Name: setnextarmemonumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setnextarmemonumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='ARMemoNumber'); IF (FOUND) THEN UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_id=_orderseqid); ELSE INSERT INTO orderseq (orderseq_name, orderseq_number) VALUES ('ARMemoNumber', pNumber); END IF; RETURN 1; END; $_$; ALTER FUNCTION public.setnextarmemonumber(integer) OWNER TO admin; -- -- Name: setnextcashrcptnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setnextcashrcptnumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='CashRcptNumber'); IF (FOUND) THEN UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_id=_orderseqid); ELSE INSERT INTO orderseq (orderseq_name, orderseq_number) VALUES ('CashRcptNumber', pNumber); END IF; RETURN 1; END; $_$; ALTER FUNCTION public.setnextcashrcptnumber(integer) OWNER TO admin; -- -- Name: setnextchecknumber(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setnextchecknumber(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankaccntid ALIAS FOR $1; pNextCheckNumber ALIAS FOR $2; BEGIN UPDATE bankaccnt SET bankaccnt_nextchknum=pNextCheckNumber WHERE (bankaccnt_id=pBankaccntid); RETURN TRUE; END; $_$; ALTER FUNCTION public.setnextchecknumber(integer, integer) OWNER TO admin; -- -- Name: setnextcmnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setnextcmnumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='CmNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'CmNumber', pNumber); ELSE UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_name='CmNumber'); END IF; RETURN _orderseqid; END; $_$; ALTER FUNCTION public.setnextcmnumber(integer) OWNER TO admin; -- -- Name: setnextcrmaccountnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setnextcrmaccountnumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='CRMAccountNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'CRMAccountNumber', pNumber); ELSE UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_name='CRMAccountNumber'); END IF; RETURN _orderseqid; END; $_$; ALTER FUNCTION public.setnextcrmaccountnumber(integer) OWNER TO admin; -- -- Name: setnextincidentnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setnextincidentnumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='IncidentNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'IncidentNumber', pNumber); ELSE UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_name='IncidentNumber'); END IF; RETURN _orderseqid; END; $_$; ALTER FUNCTION public.setnextincidentnumber(integer) OWNER TO admin; -- -- Name: setnextinvcnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setnextinvcnumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='InvcNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'InvcNumber', pNumber); ELSE UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_name='InvcNumber'); END IF; RETURN _orderseqid; END; $_$; ALTER FUNCTION public.setnextinvcnumber(integer) OWNER TO admin; -- -- Name: setnextnumber(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setnextnumber(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE psequence ALIAS FOR $1; pnumber ALIAS FOR $2; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name=psequence); IF (NOT FOUND) THEN INSERT INTO orderseq (orderseq_name, orderseq_number, orderseq_table, orderseq_numcol) VALUES (psequence, pnumber, CASE WHEN (psequence='APMemoNumber') THEN 'apopen' WHEN (psequence='ARMemoNumber') THEN 'aropen' WHEN (psequence='CmNumber') THEN 'cmhead' WHEN (psequence='IncidentNumber') THEN 'incdt' WHEN (psequence='InvcNumber') THEN 'invchead' WHEN (psequence='JournalNumber') THEN 'gltrans' WHEN (psequence='PlanNumber') THEN 'planord' WHEN (psequence='PoNumber') THEN 'pohead' WHEN (psequence='PrNumber') THEN 'pr' WHEN (psequence='QuNumber') THEN 'quhead' WHEN (psequence='ShipmentNumber') THEN 'shiphead' WHEN (psequence='SoNumber') THEN 'cohead' WHEN (psequence='ToNumber') THEN 'tohead' WHEN (psequence='VcNumber') THEN 'vohead' WHEN (psequence='WoNumber') THEN 'wo' ELSE '' END, CASE WHEN (psequence='APMemoNumber') THEN 'apopen_docnumber' WHEN (psequence='ARMemoNumber') THEN 'aropen_docnumber' WHEN (psequence='CmNumber') THEN 'cmhead_number' WHEN (psequence='IncidentNumber') THEN 'incdt_number' WHEN (psequence='InvcNumber') THEN 'invchead_invcnumber' WHEN (psequence='JournalNumber') THEN 'gltrans_journalnumber' WHEN (psequence='PlanNumber') THEN 'planord_number' WHEN (psequence='PoNumber') THEN 'pohead_number' WHEN (psequence='PrNumber') THEN 'pr_number' WHEN (psequence='QuNumber') THEN 'quhead_number' WHEN (psequence='ShipmentNumber') THEN 'shiphead_number' WHEN (psequence='SoNumber') THEN 'cohead_number' WHEN (psequence='ToNumber') THEN 'tohead_number' WHEN (psequence='VcNumber') THEN 'vohead_number' WHEN (psequence='WoNumber') THEN 'wo_number' ELSE '' END ); ELSE UPDATE orderseq SET orderseq_number=pnumber WHERE (orderseq_name=psequence); END IF; RETURN 0; END; $_$; ALTER FUNCTION public.setnextnumber(text, integer) OWNER TO admin; -- -- Name: setnextponumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setnextponumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='PoNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'PoNumber', pNumber); ELSE UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_name='PoNumber'); END IF; RETURN _orderseqid; END; $_$; ALTER FUNCTION public.setnextponumber(integer) OWNER TO admin; -- -- Name: setnextprnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setnextprnumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='PrNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'PrNumber', pNumber); ELSE UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_name='PrNumber'); END IF; RETURN _orderseqid; END; $_$; ALTER FUNCTION public.setnextprnumber(integer) OWNER TO admin; -- -- Name: setnextqunumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setnextqunumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='QuNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'QuNumber', pQuNumber); ELSE UPDATE orderseq SET orderseq_number=pQuNumber WHERE (orderseq_name='QuNumber'); END IF; RETURN _orderseqid; END; $_$; ALTER FUNCTION public.setnextqunumber(integer) OWNER TO admin; -- -- Name: setnextshipmentnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setnextshipmentnumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipmentNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='ShipmentNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'ShipmentNumber', pShipmentNumber); ELSE UPDATE orderseq SET orderseq_number=pShipmentNumber WHERE (orderseq_name='ShipmentNumber'); END IF; RETURN _orderseqid; END; $_$; ALTER FUNCTION public.setnextshipmentnumber(integer) OWNER TO admin; -- -- Name: setnextsonumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setnextsonumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='SoNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'SoNumber', pSoNumber); ELSE UPDATE orderseq SET orderseq_number=pSoNumber WHERE (orderseq_name='SoNumber'); END IF; RETURN _orderseqid; END; $_$; ALTER FUNCTION public.setnextsonumber(integer) OWNER TO admin; -- -- Name: setnextvcnumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setnextvcnumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='VcNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'VcNumber', pNumber); ELSE UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_name='VcNumber'); END IF; RETURN _orderseqid; END; $_$; ALTER FUNCTION public.setnextvcnumber(integer) OWNER TO admin; -- -- Name: setnextwonumber(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setnextwonumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='WoNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'WoNumber', pWoNumber); ELSE UPDATE orderseq SET orderseq_number=pWoNumber WHERE (orderseq_name='WoNumber'); END IF; RETURN _orderseqid; END; $_$; ALTER FUNCTION public.setnextwonumber(integer) OWNER TO admin; -- -- Name: setusercancreateusers(text, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setusercancreateusers(pusername text, pcreateuser boolean) RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (pCreateUser) THEN EXECUTE 'ALTER USER "' || pUsername || '" CREATEROLE;'; ELSE EXECUTE 'ALTER USER "' || pUsername || '" NOCREATEROLE;'; END IF; RETURN TRUE; END; $$; ALTER FUNCTION public.setusercancreateusers(pusername text, pcreateuser boolean) OWNER TO admin; -- -- Name: setuserpreference(text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setuserpreference(text, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrefName ALIAS FOR $1; pPrefValue ALIAS FOR $2; BEGIN RETURN setUserPreferences(getEffectiveXtUser(), pPrefName, pPrefValue); END; $_$; ALTER FUNCTION public.setuserpreference(text, text) OWNER TO admin; -- -- Name: setuserpreference(text, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION setuserpreference(text, text, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pPrefName ALIAS FOR $2; pPrefValue ALIAS FOR $3; _usrprefid INTEGER; BEGIN SELECT usrpref_id INTO _usrprefid FROM usrpref WHERE ( (usrpref_username=pUsername) AND (usrpref_name=pPrefName) ); IF (FOUND) THEN UPDATE usrpref SET usrpref_value=pPrefValue WHERE (usrpref_id=_usrprefid); ELSE INSERT INTO usrpref (usrpref_username, usrpref_name, usrpref_value) VALUES (pUsername, pPrefName, pPrefValue); END IF; RETURN TRUE; END; $_$; ALTER FUNCTION public.setuserpreference(text, text, text) OWNER TO admin; -- -- Name: shipments(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION shipments(text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTransType ALIAS FOR $1; BEGIN IF (pTransType IN ('SC', 'SV', 'SH', 'RS', 'TS')) THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END; $_$; ALTER FUNCTION public.shipments(text) OWNER TO admin; -- -- Name: shipshipment(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION shipshipment(integer) RETURNS integer LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT shipShipment($1, CURRENT_TIMESTAMP); $_$; ALTER FUNCTION public.shipshipment(integer) OWNER TO admin; -- -- Name: shipshipment(integer, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION shipshipment(integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pshipheadid ALIAS FOR $1; _timestamp TIMESTAMP WITH TIME ZONE := $2; _billedQty NUMERIC; _c RECORD; _coholdtype TEXT; _gldate DATE; _invhistid INTEGER; _itemlocSeries INTEGER; _lineitemsToClose INTEGER[]; _newQty NUMERIC; _result INTEGER; _s RECORD; _shipcomplete BOOLEAN; _shiphead RECORD; _ti RECORD; _to RECORD; _variance NUMERIC; _k RECORD; BEGIN IF (_timestamp IS NULL) THEN _timestamp := CURRENT_TIMESTAMP; END IF; _gldate := _timestamp::DATE; SELECT * INTO _shiphead FROM shiphead WHERE (shiphead_id=pshipheadid); IF (NOT FOUND) THEN RETURN -50; END IF; IF (_shiphead.shiphead_order_type = 'SO') THEN SELECT cohead_shipcomplete, cohead_holdtype INTO _shipcomplete, _coholdtype FROM cohead, shiphead WHERE ((shiphead_order_id=cohead_id) AND (NOT shiphead_shipped) AND (shiphead_order_type=_shiphead.shiphead_order_type) AND (shiphead_id=pshipheadid)); IF (_coholdtype = 'C') THEN RETURN -12; ELSIF (_coholdtype = 'P') THEN RETURN -13; ELSIF (_coholdtype = 'R') THEN RETURN -14; ELSIF (_coholdtype = 'S') THEN RETURN -15; END IF; ---Must Ship Kit components (coitem_subnumber <> 0 complete--------------- IF (( -- Test to see if order's customer accepts backorders and partials -- If not then test for shipping kit components complete SELECT cohead_number FROM shiphead, cohead, custinfo WHERE (shiphead_order_id = cohead_id) AND (cohead_cust_id = cust_id) AND (shiphead_order_type = 'SO') AND (cust_partialship) AND (cust_backorder) AND (shiphead_id = pshipheadid) ) IS NULL) THEN FOR _k IN SELECT (coitem_qtyord - (COALESCE(SUM(shipitem_qty),0) + (coitem_qtyshipped - coitem_qtyreturned))) AS remain FROM (coitem LEFT OUTER JOIN (itemsite JOIN item ON (itemsite_item_id=item_id)) ON (coitem_itemsite_id=itemsite_id)) LEFT OUTER JOIN shipitem ON (shipitem_orderitem_id=coitem_id AND shipitem_shiphead_id=pshipheadid) WHERE ((coitem_status NOT IN ('C','X')) AND (item_type != 'K') AND (coitem_cohead_id=_shiphead.shiphead_order_id) AND (coitem_subnumber <> 0) ) GROUP BY coitem_id, coitem_qtyshipped, coitem_qtyord, coitem_qtyreturned LOOP IF (_k.remain > 0) THEN RAISE EXCEPTION 'Kit component item not shipped complete. Kits must be shipped and shipped complete or closed on the order.'; END IF; END LOOP; END IF; ---End-------------------------------------------------------------------- IF ( _shipcomplete ) THEN FOR _c IN SELECT (coitem_qtyord - (COALESCE(SUM(shipitem_qty),0) + (coitem_qtyshipped - coitem_qtyreturned))) AS remain FROM (coitem LEFT OUTER JOIN (itemsite JOIN item ON (itemsite_item_id=item_id)) ON (coitem_itemsite_id=itemsite_id)) LEFT OUTER JOIN shipitem ON (shipitem_orderitem_id=coitem_id AND shipitem_shiphead_id=pshipheadid) WHERE ((coitem_status<>'X') AND (item_type != 'K') AND (coitem_cohead_id=_shiphead.shiphead_order_id)) GROUP BY coitem_id, coitem_qtyshipped, coitem_qtyord, coitem_qtyreturned LOOP IF (_c.remain > 0) THEN RETURN -99; END IF; END LOOP; END IF; FOR _c IN SELECT coitem_id, cohead_number, cohead_cust_id, cohead_billtoname, cohead_prj_id, cohead_saletype_id, cohead_shipzone_id, itemsite_id, itemsite_item_id, coitem_qty_invuomratio, coitem_warranty, coitem_cos_accnt_id, SUM(shipitem_qty) AS _qty, SUM(shipitem_value) AS _value FROM coitem, cohead, shiphead, shipitem, itemsite WHERE ( (coitem_cohead_id=cohead_id) AND (coitem_itemsite_id=itemsite_id) AND (shiphead_order_id=cohead_id) AND (shipitem_shiphead_id=shiphead_id) AND (shipitem_orderitem_id=coitem_id) AND (NOT shiphead_shipped) AND (shiphead_id=pshipheadid) ) GROUP BY coitem_id, coitem_qty_invuomratio, cohead_number, cohead_cust_id, cohead_billtoname, itemsite_id, itemsite_item_id, coitem_warranty, coitem_cos_accnt_id, cohead_prj_id, cohead_saletype_id, cohead_shipzone_id LOOP IF _c._value > 0 THEN -- Distribute to G/L, credit Shipping Asset, debit COS SELECT MIN(insertGLTransaction( 'S/R', 'SH', _shiphead.shiphead_number, ('Ship Order ' || _c.cohead_number || ' for Customer ' || _c.cohead_billtoname), getPrjAccntId(_c.cohead_prj_id, costcat_shipasset_accnt_id), CASE WHEN (COALESCE(_c.coitem_cos_accnt_id, -1) != -1) THEN getPrjAccntId(_c.cohead_prj_id, _c.coitem_cos_accnt_id) WHEN (_c.coitem_warranty=TRUE) THEN getPrjAccntId(_c.cohead_prj_id, resolveCOWAccount(itemsite_id, _c.cohead_cust_id, _c.cohead_saletype_id, _c.cohead_shipzone_id)) ELSE getPrjAccntId(_c.cohead_prj_id, resolveCOSAccount(itemsite_id, _c.cohead_cust_id, _c.cohead_saletype_id, _c.cohead_shipzone_id)) END, -1, _c._value, _gldate )) INTO _result FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_c.itemsite_id) ); IF (_result < 0 AND _result != -3) THEN -- ignore -3 as it just means it's not posting a 0 value RETURN _result; END IF; END IF; UPDATE coitem SET coitem_qtyshipped = (coitem_qtyshipped + _c._qty) WHERE (coitem_id=_c.coitem_id); -- check to see if we have more invoiced than shipped items -- if we do we will need to mark some of these records as invoiced SELECT noNeg(( SELECT COALESCE(SUM(cobill_qty), 0.0) FROM cobill, cobmisc, coitem WHERE ( (cobill_cobmisc_id=cobmisc_id) AND (cobmisc_cohead_id=coitem_cohead_id) AND (cobill_coitem_id=coitem_id) AND (cobmisc_posted) AND (coitem_id=_c.coitem_id) ) ) - ( SELECT COALESCE(SUM(shipitem_qty), 0.0) FROM shipitem, shiphead, coitem WHERE ( (shipitem_shiphead_id=shiphead_id) AND (shiphead_order_id=coitem_cohead_id) AND (shipitem_orderitem_id=coitem_id) AND (shiphead_order_type=_shiphead.shiphead_order_type) AND (shiphead_shipped) AND (coitem_id=_c.coitem_id) ) ) ) INTO _billedQty; IF (_billedQty > 0.0) THEN FOR _s IN SELECT shipitem_id, shipitem_qty FROM shipitem, shiphead WHERE ( (shipitem_shiphead_id=shiphead_id) AND (shipitem_orderitem_id=_c.coitem_id) AND (shiphead_order_type=_shiphead.shiphead_order_type) AND (NOT shiphead_shipped) AND (shiphead_id=pshipheadid) ) ORDER BY shipitem_qty LOOP IF (_billedQty > 0.0) THEN IF (_billedQty >= _s.shipitem_qty) THEN UPDATE shipitem SET shipitem_invoiced=TRUE WHERE shipitem_id=_s.shipitem_id; -- must wait to close coitems until after shiphead_shipped -> true _lineitemsToClose := _lineitemsToClose || _c.coitem_id; ELSE _newQty := _s.shipitem_qty - _billedQty; UPDATE shipitem SET shipitem_invoiced=TRUE, shipitem_qty=_billedQty WHERE shipitem_id=_s.shipitem_id; INSERT INTO shipitem ( shipitem_orderitem_id, shipitem_shipdate, shipitem_qty, shipitem_transdate, shipitem_invoiced, shipitem_shiphead_id, shipitem_trans_username) SELECT shipitem_orderitem_id, shipitem_shipdate, _newQty, shipitem_transdate, FALSE, shipitem_shiphead_id, shipitem_trans_username FROM shipitem WHERE (shipitem_id=_s.shipitem_id); END IF; _billedQty := _billedQty - _s.shipitem_qty; END IF; END LOOP; END IF; END LOOP; ELSEIF (_shiphead.shiphead_order_type = 'TO') THEN IF (_shiphead.shiphead_shipped) THEN RETURN -8; END IF; SELECT tohead.* INTO _to FROM tohead WHERE (tohead_id=_shiphead.shiphead_order_id); IF ( _to.tohead_shipcomplete ) THEN -- use sufficientInventory...()? FOR _ti IN SELECT (toitem_qty_ordered - (COALESCE(SUM(shipitem_qty),0) + toitem_qty_shipped)) AS remain FROM toitem LEFT OUTER JOIN shipitem ON (shipitem_orderitem_id=toitem_id) WHERE ((toitem_status<>'X') AND (toitem_tohead_id=_shiphead.shiphead_order_id)) GROUP BY toitem_qty_shipped, toitem_qty_ordered LOOP IF (_ti.remain > 0) THEN RETURN -99; END IF; END LOOP; END IF; FOR _ti IN SELECT toitem_id, toitem_item_id, SUM(shipitem_qty) AS qty, SUM(shipitem_value) AS value FROM toitem, shipitem WHERE ((toitem_tohead_id=_to.tohead_id) AND (shipitem_orderitem_id=toitem_id) AND (shipitem_shiphead_id=pshipheadid)) GROUP BY toitem_id, toitem_item_id LOOP IF (NOT EXISTS(SELECT itemsite_id FROM itemsite WHERE ((itemsite_item_id=_ti.toitem_item_id) AND (itemsite_warehous_id = _to.tohead_trns_warehous_id)) )) THEN RETURN -6; END IF; _itemlocSeries := NEXTVAL('itemloc_series_seq'); SELECT postInvTrans(si.itemsite_id, 'TS', _ti.qty, 'I/M', _shiphead.shiphead_order_type, formatToNumber(_ti.toitem_id), _to.tohead_number, 'Ship from Src to Transit Warehouse', tc.costcat_asset_accnt_id, sc.costcat_shipasset_accnt_id, _itemlocSeries, _timestamp, _ti.value) INTO _invhistid FROM itemsite AS ti, costcat AS tc, itemsite AS si, costcat AS sc WHERE ( (ti.itemsite_costcat_id=tc.costcat_id) AND (si.itemsite_costcat_id=sc.costcat_id) AND (ti.itemsite_item_id=_ti.toitem_item_id) AND (si.itemsite_item_id=_ti.toitem_item_id) AND (ti.itemsite_warehous_id=_to.tohead_trns_warehous_id) AND (si.itemsite_warehous_id=_to.tohead_src_warehous_id) ); --We do not need to distribute lot/serial info for transit, post trans and discard dist detail PERFORM postIntoTrialBalance(itemlocpost_glseq) FROM itemlocpost WHERE (itemlocpost_itemlocseries=_itemlocSeries); PERFORM postInvHist(_invhistid); DELETE FROM itemlocdist WHERE (itemlocdist_series=_itemlocSeries); DELETE FROM itemlocpost WHERE (itemlocpost_itemlocSeries=_itemlocSeries); IF (_result < 0) THEN RETURN _result; END IF; -- record inventory history and qoh changes at transit warehouse but -- there is only one g/l account to touch SELECT postInvTrans(ti.itemsite_id, 'TR', _ti.qty, 'I/M', _shiphead.shiphead_order_type, formatToNumber(_ti.toitem_id), _to.tohead_number, 'Receive into Transit from Src Warehouse', tc.costcat_asset_accnt_id, tc.costcat_asset_accnt_id, _itemlocSeries, _timestamp, _ti.value) INTO _invhistid FROM itemsite AS ti, costcat AS tc WHERE ((ti.itemsite_costcat_id=tc.costcat_id) AND (ti.itemsite_item_id=_ti.toitem_item_id) AND (ti.itemsite_warehous_id=_to.tohead_trns_warehous_id)); --We do not need to distribute lot/serial info for transit, post trans and discard dist detail PERFORM postIntoTrialBalance(itemlocpost_glseq) FROM itemlocpost WHERE (itemlocpost_itemlocseries=_itemlocSeries); PERFORM postInvHist(_invhistid); DELETE FROM itemlocdist WHERE (itemlocdist_series=_itemlocSeries); DELETE FROM itemlocpost WHERE (itemlocpost_itemlocSeries=_itemlocSeries); --See if there was a change in values during the transfer, if so record the variance SELECT (invhist_invqty * invhist_unitcost - _ti.value) INTO _variance FROM invhist WHERE (invhist_id=_invhistid); IF (_variance > 0) THEN PERFORM insertGLTransaction( 'S/R', _shiphead.shiphead_order_type, _to.tohead_number, 'Transfer Order - Transfer Variance', tc.costcat_invcost_accnt_id, tc.costcat_asset_accnt_id, _invhistid, _variance, CAST(_timestamp AS DATE) ) FROM itemsite AS ti, costcat AS tc WHERE ( (ti.itemsite_costcat_id=tc.costcat_id) AND (ti.itemsite_item_id=_ti.toitem_item_id) AND (ti.itemsite_warehous_id=_to.tohead_trns_warehous_id) ); END IF; IF (_result < 0) THEN RETURN _result; END IF; UPDATE shipitem SET shipitem_shipdate=_timestamp, shipitem_shipped=TRUE WHERE ((shipitem_orderitem_id=_ti.toitem_id) AND (shipitem_shiphead_id=pshipheadid)); UPDATE toitem SET toitem_qty_shipped = (toitem_qty_shipped + _ti.qty) WHERE (toitem_id=_ti.toitem_id); END LOOP; END IF; UPDATE shiphead SET shiphead_shipped=TRUE, shiphead_shipdate=_gldate WHERE (shiphead_id=pshipheadid); -- now try to close line items that are fully shipped and invoiced IF (_shiphead.shiphead_order_type = 'SO') THEN UPDATE coitem SET coitem_status='C' WHERE ((coitem_id = ANY (_lineitemsToClose)) AND (coitem_qtyshipped >= coitem_qtyord)); END IF; RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.shipshipment(integer, timestamp with time zone) OWNER TO admin; -- -- Name: singlecharacteristicstostring(text, integer, text, text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION singlecharacteristicstostring(text, integer, text, text, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTargetType ALIAS FOR $1; pTargetId ALIAS FOR $2; pValKeySep ALIAS FOR $3; pPairSep ALIAS FOR $4; pCharId ALIAS FOR $5; _string TEXT := ''; _extra BOOLEAN := false; _r RECORD; BEGIN FOR _r IN SELECT char_name, charass_value FROM charass, char WHERE ((charass_char_id=char_id) AND (charass_char_id=pCharId) AND (charass_target_type=pTargetType) AND (charass_target_id=pTargetId)) LOOP IF(_extra) THEN _string := _string || pPairSep; END IF; _extra := true; _string := _string || _r.char_name || pValKeySep || _r.charass_value; END LOOP; RETURN _string; END; $_$; ALTER FUNCTION public.singlecharacteristicstostring(text, integer, text, text, integer) OWNER TO admin; -- -- Name: singlelevelbom(integer, integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION singlelevelbom(integer, integer, integer, integer) RETURNS SETOF bomdata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pRevisionid ALIAS FOR $2; pExpiredDays ALIAS FOR $3; pFutureDays ALIAS FOR $4; _row bomdata%ROWTYPE; _bomworksetid INTEGER; _x RECORD; _check CHAR(1); _inactive BOOLEAN; _batchsize NUMERIC; BEGIN _inactive := FALSE; IF (pRevisionid != -1) THEN --Is this a deactivated revision? SELECT rev_status INTO _check FROM rev WHERE ((rev_id=pRevisionid) AND (rev_status='I')); IF (FOUND) THEN _inactive := TRUE; END IF; END IF; -- Get the batch quantity SELECT COALESCE( ( SELECT bomhead_batchsize FROM bomhead WHERE ((bomhead_item_id=pItemId) AND (bomhead_rev_id=pRevisionid))),1) INTO _batchsize; IF NOT (_inactive) THEN FOR _x IN SELECT bomitem_id, bomitem_seqnumber, bomitem_seqnumber AS f_bomitem_seqnumber, item_id, item_number, uom_name, item_descrip1, item_descrip2, (item_descrip1 || ' ' || item_descrip2) AS itemdescription, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyfxd) AS qtyfxd, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper) AS qtyper, bomitem_scrap, bomitem_createwo, CASE WHEN (bomitem_issuemethod='S') THEN 'Push' WHEN (bomitem_issuemethod='L') THEN 'Pull' WHEN (bomitem_issuemethod='M') THEN 'Mixed' ELSE 'Special' END AS issuemethod, bomitem_effective, bomitem_expires, CASE WHEN (bomitem_expires <= CURRENT_DATE) THEN TRUE ELSE FALSE END AS expired, CASE WHEN (bomitem_effective > CURRENT_DATE) THEN TRUE ELSE FALSE END AS future, actcost(bomitem_item_id, bomitem_id) AS actunitcost, stdcost(bomitem_item_id, bomitem_id) AS stdunitcost, CASE WHEN item_type NOT IN ('R','T') THEN itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, (bomitem_qtyfxd/_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') * actcost(bomitem_item_id, bomitem_id) ELSE 0.0 END AS actextendedcost, CASE WHEN item_type NOT IN ('R','T') THEN itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, (bomitem_qtyfxd/_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') * stdcost(bomitem_item_id, bomitem_id) ELSE 0.0 END AS stdextendedcost, bomitem_char_id, bomitem_value, bomitem_notes, bomitem_ref FROM bomitem(pItemid,pRevisionid), item, uom WHERE ( (item_inv_uom_id=uom_id) AND (bomitem_item_id=item_id) AND (bomitem_expires > (CURRENT_DATE - pExpiredDays)) AND (bomitem_effective <= (CURRENT_DATE + pFutureDays)) ) UNION SELECT -1, -1, NULL, -1, costelem_type AS bomdata_item_number, '', '', '', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, false,false, currToBase(itemcost_curr_id, itemcost_actcost, CURRENT_DATE) AS actunitcost, itemcost_stdcost AS stdunitcost, currToBase(itemcost_curr_id, itemcost_actcost, CURRENT_DATE) AS actextendedcost, itemcost_stdcost AS stdextendedcost, NULL, NULL, NULL, NULL FROM itemcost, costelem WHERE ( (itemcost_costelem_id=costelem_id) AND (NOT itemcost_lowlevel) AND (itemcost_item_id=pItemid) ) ORDER BY bomitem_seqnumber, bomitem_effective, item_number LOOP _row.bomdata_bomitem_id := _x.bomitem_id; _row.bomdata_bomwork_seqnumber := _x.f_bomitem_seqnumber; _row.bomdata_item_id := _x.item_id; _row.bomdata_item_number := _x.item_number; _row.bomdata_uom_name := _x.uom_name; _row.bomdata_item_descrip1 := _x.item_descrip1; _row.bomdata_item_descrip2 := _x.item_descrip2; _row.bomdata_itemdescription := _x.itemdescription; _row.bomdata_batchsize := _batchsize; _row.bomdata_qtyfxd := _x.qtyfxd; _row.bomdata_qtyper := _x.qtyper; _row.bomdata_scrap := _x.bomitem_scrap; _row.bomdata_createchild := _x.bomitem_createwo; _row.bomdata_issuemethod := _x.issuemethod; _row.bomdata_effective := _x.bomitem_effective; _row.bomdata_expires := _x.bomitem_expires; _row.bomdata_expired := _x.expired; _row.bomdata_future := _x.future; _row.bomdata_actunitcost := _x.actunitcost; _row.bomdata_stdunitcost := _x.stdunitcost; _row.bomdata_actextendedcost := _x.actextendedcost; _row.bomdata_stdextendedcost := _x.stdextendedcost; _row.bomdata_char_id := _x.bomitem_char_id; _row.bomdata_value := _x.bomitem_value; _row.bomdata_notes := _x.bomitem_notes; _row.bomdata_ref := _x.bomitem_ref; RETURN NEXT _row; END LOOP; ELSE -- Use historical snapshot for inactive revisions FOR _x IN SELECT bomitem_id, bomitem_seqnumber, bomitem_seqnumber AS f_bomitem_seqnumber, item_id, item_number, uom_name, item_descrip1, item_descrip2, (item_descrip1 || ' ' || item_descrip2) AS itemdescription, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyfxd) AS qtyfxd, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper) AS qtyper, bomitem_scrap, bomitem_createwo, CASE WHEN (bomitem_issuemethod='S') THEN 'Push' WHEN (bomitem_issuemethod='L') THEN 'Pull' WHEN (bomitem_issuemethod='M') THEN 'Mixed' ELSE 'Special' END AS issuemethod, bomitem_effective, bomitem_expires, CASE WHEN (bomitem_expires <= CURRENT_DATE) THEN TRUE ELSE FALSE END AS expired, CASE WHEN (bomitem_effective > CURRENT_DATE) THEN TRUE ELSE FALSE END AS future, actcost(bomitem_item_id) AS actunitcost, stdcost(bomitem_item_id) AS stdunitcost, CASE WHEN item_type NOT IN ('R','T') THEN itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, (bomitem_qtyfxd/_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') * actcost(bomitem_item_id) ELSE 0.0 END AS actextendedcost, CASE WHEN item_type NOT IN ('R','T') THEN itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, (bomitem_qtyfxd/_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') * stdcost(bomitem_item_id) ELSE 0.0 END AS stdextendedcost, bomitem_char_id, bomitem_value, bomitem_notes, bomitem_ref FROM bomitem(pItemid,pRevisionid), item, uom WHERE ( (item_inv_uom_id=uom_id) AND (bomitem_item_id=item_id) AND (bomitem_expires > (CURRENT_DATE - pExpiredDays)) AND (bomitem_effective <= (CURRENT_DATE + pFutureDays)) ) UNION SELECT -1, -1, NULL, -1, costelem_type AS bomdata_item_number, '', '', '', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, false,false, bomhist_actunitcost AS actunitcost, bomhist_stdunitcost AS stdunitcost, bomhist_actunitcost AS actextendedcost, bomhist_stdunitcost AS stdextendedcost, NULL, NULL, NULL, NULL FROM bomhist, costelem WHERE ( (bomhist_item_id=costelem_id) AND (bomhist_item_type='E') AND (bomhist_rev_id=pRevisionid) ) ORDER BY bomitem_seqnumber, bomitem_effective, item_number LOOP _row.bomdata_bomitem_id := _x.bomitem_id; _row.bomdata_bomwork_seqnumber := _x.f_bomitem_seqnumber; _row.bomdata_item_id := _x.item_id; _row.bomdata_item_number := _x.item_number; _row.bomdata_uom_name := _x.uom_name; _row.bomdata_item_descrip1 := _x.item_descrip1; _row.bomdata_item_descrip2 := _x.item_descrip2; _row.bomdata_itemdescription := _x.itemdescription; _row.bomdata_batchsize := _batchsize; _row.bomdata_qtyfxd := _x.qtyfxd; _row.bomdata_qtyper := _x.qtyper; _row.bomdata_scrap := _x.bomitem_scrap; _row.bomdata_createchild := _x.bomitem_createwo; _row.bomdata_issuemethod := _x.issuemethod; _row.bomdata_effective := _x.bomitem_effective; _row.bomdata_expires := _x.bomitem_expires; _row.bomdata_expired := _x.expired; _row.bomdata_future := _x.future; _row.bomdata_actunitcost := _x.actunitcost; _row.bomdata_stdunitcost := _x.stdunitcost; _row.bomdata_actextendedcost := _x.actextendedcost; _row.bomdata_stdextendedcost := _x.stdextendedcost; _row.bomdata_char_id := _x.bomitem_char_id; _row.bomdata_value := _x.bomitem_value; _row.bomdata_notes := _x.bomitem_notes; _row.bomdata_ref := _x.bomitem_ref; RETURN NEXT _row; END LOOP; END IF; RETURN; END; $_$; ALTER FUNCTION public.singlelevelbom(integer, integer, integer, integer) OWNER TO admin; -- -- Name: site(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION site() RETURNS SETOF whsinfo LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row whsinfo%ROWTYPE; _r RECORD; BEGIN IF ( (fetchMetricBool('MultiWhs')) AND (SELECT (COUNT(usrpref_id)=1) FROM usrpref WHERE ((usrpref_name='selectedSites') AND (usrpref_value='t') AND (usrpref_username=getEffectiveXtUser()))) ) THEN FOR _r IN SELECT * FROM whsinfo,usrsite WHERE ((warehous_id=usrsite_warehous_id) AND (usrsite_username=getEffectiveXtUser())) LOOP _row.warehous_id:=_r.warehous_id; _row.warehous_code:=_r.warehous_code; _row.warehous_descrip:=_r.warehous_descrip; _row.warehous_fob:=_r.warehous_fob; _row.warehous_active:=_r.warehous_active; _row.warehous_counttag_prefix:=_r.warehous_counttag_prefix; _row.warehous_counttag_number:=_r.warehous_counttag_number; _row.warehous_bol_prefix:=_r.warehous_bol_prefix; _row.warehous_bol_number:=_r.warehous_bol_number; _row.warehous_shipping:=_r.warehous_shipping; _row.warehous_useslips:=_r.warehous_useslips; _row.warehous_usezones:=_r.warehous_usezones; _row.warehous_aislesize:=_r.warehous_aislesize; _row.warehous_racksize:=_r.warehous_racksize; _row.warehous_binsize:=_r.warehous_binsize; _row.warehous_binalpha:=_r.warehous_binalpha; _row.warehous_locationsize:=_r.warehous_locationsize; _row.warehous_locationalpha:=_r.warehous_locationalpha; _row.warehous_enforcearbl:=_r.warehous_enforcearbl; _row.warehous_default_accnt_id:=_r.warehous_default_accnt_id; _row.warehous_shipping_commission:=_r.warehous_shipping_commission; _row.warehous_cntct_id:=_r.warehous_cntct_id; _row.warehous_addr_id:=_r.warehous_addr_id; _row.warehous_taxzone_id:=_r.warehous_taxzone_id; _row.warehous_transit:=_r.warehous_transit; _row.warehous_shipform_id:=_r.warehous_shipform_id; _row.warehous_shipvia_id:=_r.warehous_shipvia_id; _row.warehous_shipcomments:=_r.warehous_shipcomments; _row.warehous_costcat_id:=_r.warehous_costcat_id; _row.warehous_sitetype_id:=_r.warehous_sitetype_id; RETURN NEXT _row; END LOOP; ELSE FOR _r IN SELECT * FROM whsinfo LOOP _row.warehous_id:=_r.warehous_id; _row.warehous_code:=_r.warehous_code; _row.warehous_descrip:=_r.warehous_descrip; _row.warehous_fob:=_r.warehous_fob; _row.warehous_active:=_r.warehous_active; _row.warehous_counttag_prefix:=_r.warehous_counttag_prefix; _row.warehous_counttag_number:=_r.warehous_counttag_number; _row.warehous_bol_prefix:=_r.warehous_bol_prefix; _row.warehous_bol_number:=_r.warehous_bol_number; _row.warehous_shipping:=_r.warehous_shipping; _row.warehous_useslips:=_r.warehous_useslips; _row.warehous_usezones:=_r.warehous_usezones; _row.warehous_aislesize:=_r.warehous_aislesize; _row.warehous_racksize:=_r.warehous_racksize; _row.warehous_binsize:=_r.warehous_binsize; _row.warehous_binalpha:=_r.warehous_binalpha; _row.warehous_locationsize:=_r.warehous_locationsize; _row.warehous_locationalpha:=_r.warehous_locationalpha; _row.warehous_enforcearbl:=_r.warehous_enforcearbl; _row.warehous_default_accnt_id:=_r.warehous_default_accnt_id; _row.warehous_shipping_commission:=_r.warehous_shipping_commission; _row.warehous_cntct_id:=_r.warehous_cntct_id; _row.warehous_addr_id:=_r.warehous_addr_id; _row.warehous_taxzone_id:=_r.warehous_taxzone_id; _row.warehous_transit:=_r.warehous_transit; _row.warehous_shipform_id:=_r.warehous_shipform_id; _row.warehous_shipvia_id:=_r.warehous_shipvia_id; _row.warehous_shipcomments:=_r.warehous_shipcomments; _row.warehous_costcat_id:=_r.warehous_costcat_id; _row.warehous_sitetype_id:=_r.warehous_sitetype_id; RETURN NEXT _row; END LOOP; END IF; RETURN; END; $$; ALTER FUNCTION public.site() OWNER TO admin; -- -- Name: snoozemessage(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION snoozemessage(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pMsgid ALIAS FOR $1; snooze INTERVAL := '10 minutes'; BEGIN UPDATE msg SET msg_scheduled=(msg_scheduled + snooze) WHERE (msg_id=pMsgid); RETURN TRUE; END; $_$; ALTER FUNCTION public.snoozemessage(integer) OWNER TO admin; -- -- Name: spellamount(numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION spellamount(numeric) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN spellAmount($1, baseCurrId()); END; $_$; ALTER FUNCTION public.spellamount(numeric) OWNER TO admin; -- -- Name: spellamount(numeric, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION spellamount(numeric, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pN ALIAS FOR $1; pCurrId ALIAS FOR $2; _t text; _dollars text; _cents text; _l integer; _p integer; _words text; _word text; _hundreds char; _tens char; _ones char; _fractionalPartName text; _curr curr_symbol%ROWTYPE; BEGIN _t := ltrim(to_char(pN, '999999999990D99'),' '); IF strpos(_t, '.') > 0 THEN _dollars := split_part(_t, '.', 1); _cents := split_part(_t, '.', 2); ELSIF strpos(_t, ',') > 0 THEN _dollars := split_part(_t, ',', 1); _cents := split_part(_t, ',', 2); END IF; _p := 0; _l := length(_dollars); _words := ''; WHILE (_p < _l) LOOP IF((_l - _p - 2) < 1) THEN _hundreds := '0'; ELSE _hundreds := substr(_dollars, _l - _p - 2, 1); END IF; IF((_l - _p - 1) < 1) THEN _tens := '0'; ELSE _tens := substr(_dollars, _l - _p - 1, 1); END IF; IF((_l - _p) < 1) THEN _ones := '0'; ELSE _ones := substr(_dollars, _l - _p, 1); END IF; IF(_hundreds != '0' OR _tens != '0' OR _ones != '0') THEN IF (_p = 3) THEN _words := 'thousand ' || _words; ELSIF (_p = 6) THEN _words := 'million ' || _words; ELSIF (_p = 9) THEN _words := 'billion ' || _words; END IF; _word := ''; IF(_tens = '1') THEN IF(_ones = '0') THEN _word := 'ten'; ELSIF(_ones = '1') THEN _word := 'eleven'; ELSIF(_ones = '2') THEN _word := 'twelve'; ELSIF(_ones = '3') THEN _word := 'thirteen'; ELSIF(_ones = '4') THEN _word := 'fourteen'; ELSIF(_ones = '5') THEN _word := 'fifteen'; ELSIF(_ones = '6') THEN _word := 'sixteen'; ELSIF(_ones = '7') THEN _word := 'seventeen'; ELSIF(_ones = '8') THEN _word := 'eighteen'; ELSIF(_ones = '9') THEN _word := 'nineteen'; ELSE _word := 'ERROR'; END IF; ELSE IF(_ones = '1') THEN _word := 'one'; ELSIF(_ones = '2') THEN _word := 'two'; ELSIF(_ones = '3') THEN _word := 'three'; ELSIF(_ones = '4') THEN _word := 'four'; ELSIF(_ones = '5') THEN _word := 'five'; ELSIF(_ones = '6') THEN _word := 'six'; ELSIF(_ones = '7') THEN _word := 'seven'; ELSIF(_ones = '8') THEN _word := 'eight'; ELSIF(_ones = '9') THEN _word := 'nine'; ELSIF(_ones != '0') THEN _word := 'ERROR'; END IF; if(_tens != '0') THEN _word := '-' || _word; END IF; IF(_tens = '2') THEN _word := 'twenty' || _word; ELSIF(_tens = '3') THEN _word := 'thirty' || _word; ELSIF(_tens = '4') THEN _word := 'forty' || _word; ELSIF(_tens = '5') THEN _word := 'fifty' || _word; ELSIF(_tens = '6') THEN _word := 'sixty' || _word; ELSIF(_tens = '7') THEN _word := 'seventy' || _word; ELSIF(_tens = '8') THEN _word := 'eighty' || _word; ELSIF(_tens = '9') THEN _word := 'ninety' || _word; ELSIF(_tens != '0' AND _tens != '1') THEN _word := 'ERROR' || _word; END IF; END IF; if(_word != '') THEN _words := _word || ' ' || _words; END IF; _word := ''; IF(_hundreds = '1') THEN _word := 'one hundred'; ELSIF(_hundreds = '2') THEN _word := 'two hundred'; ELSIF(_hundreds = '3') THEN _word := 'three hundred'; ELSIF(_hundreds = '4') THEN _word := 'four hundred'; ELSIF(_hundreds = '5') THEN _word := 'five hundred'; ELSIF(_hundreds = '6') THEN _word := 'six hundred'; ELSIF(_hundreds = '7') THEN _word := 'seven hundred'; ELSIF(_hundreds = '8') THEN _word := 'eight hundred'; ELSIF(_hundreds = '9') THEN _word := 'nine hundred'; ELSIF(_hundreds != '0') THEN _words := 'ERROR'; END IF; if(_word != '') THEN _words := _word || ' ' || _words; END IF; END IF; _p := _p + 3; END LOOP; _words := rtrim(_words, ' '); IF(_words = '') THEN _words := 'zero'; END IF; SELECT * INTO _curr FROM curr_symbol WHERE curr_id = pCurrId; IF(_words = 'one') AND TRIM(_curr.curr_name) ~ '.*s' THEN _word := rtrim(_curr.curr_name, ' s'); ELSE _word := trim(_curr.curr_name); END IF; IF _curr.curr_abbr = 'USD' OR _curr.curr_abbr = 'CAD' THEN IF (_cents = '1') THEN _fractionalPartName = ' cent'; ELSE _fractionalPartName = ' cents'; END IF; ELSE _fractionalPartName = ' / 100 '; END IF; RETURN _words || ' ' || _word || ' and ' || _cents || _fractionalPartName; END; $_$; ALTER FUNCTION public.spellamount(numeric, integer) OWNER TO admin; -- -- Name: splitreceipt(integer, numeric, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION splitreceipt(integer, numeric, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE precvid ALIAS FOR $1; pqty ALIAS FOR $2; pfreight ALIAS FOR $3; _check RECORD; _seq INTEGER; BEGIN -- validate IF (COALESCE(pQty,0) <= 0) THEN RETURN -7; END IF; SELECT * INTO _check FROM recv WHERE (recv_id=precvid); IF (FOUND) THEN IF (_check.recv_order_type != 'PO') THEN RETURN -1; ELSIF ( NOT _check.recv_posted) THEN RETURN -2; ELSIF ( (_check.recv_invoiced) OR (_check.recv_vohead_id IS NOT NULL) OR (_check.recv_voitem_id IS NOT NULL) ) THEN RETURN -3; ELSIF (pqty >= _check.recv_qty) THEN RETURN -4; ELSIF (COALESCE(pfreight,0) > _check.recv_freight) THEN RETURN -5; END IF; ELSE RETURN -6; END IF; -- Create new receipt record _seq := nextval('recv_recv_id_seq'); INSERT INTO recv SELECT _seq, recv_order_type,recv_order_number, recv_orderitem_id, recv_agent_username, recv_itemsite_id, recv_vend_id, recv_vend_item_number, recv_vend_item_descrip, recv_vend_uom, recv_purchcost, recv_purchcost_curr_id, recv_duedate, pqty, recv_recvcost, recv_recvcost_curr_id, COALESCE(pfreight,0), recv_freight_curr_id, recv_date, ROUND(recv_value/recv_qty * pqty, 2), TRUE, FALSE, NULL, NULL, recv_trans_usr_name, recv_notes, recv_gldistdate, precvid FROM recv WHERE (recv_id=precvid); -- Update qty and value of old record UPDATE recv SET recv_qty = recv_qty-pqty, recv_value = recv_value - ROUND(recv_value/recv_qty * pqty, 2), recv_freight = recv_freight - COALESCE(pfreight,0) WHERE (recv_id=precvid); RETURN _seq; END; $_$; ALTER FUNCTION public.splitreceipt(integer, numeric, numeric) OWNER TO admin; -- -- Name: splitrecurrence(integer, text, timestamp with time zone); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION splitrecurrence(integer, text, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pParentid ALIAS FOR $1; pType TEXT := UPPER($2); pDatetime TIMESTAMP WITH TIME ZONE := COALESCE($3, CURRENT_TIMESTAMP); _count INTEGER; _newrecurid INTEGER; _newparentid INTEGER; _newparentstmt TEXT; _rt RECORD; _updchildstmt TEXT; BEGIN IF (pParentid IS NULL) THEN RETURN -11; END IF; SELECT * INTO _rt FROM recurtype WHERE (UPPER(recurtype_type)=pType); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count <= 0) THEN RETURN -10; END IF; _newparentstmt := 'SELECT [table]_id FROM [fulltable]' || ' WHERE (([table]_recurring_[table]_id=$1)' || ' AND NOT ([done])' || ' AND ([schedcol]>=''$2''))' || ' ORDER BY [schedcol]' || ' LIMIT 1;'; _newparentstmt := REPLACE(_newparentstmt, '[fulltable]', _rt.recurtype_table); _newparentstmt := REPLACE(_newparentstmt, '[table]', REGEXP_REPLACE(_rt.recurtype_table, E'.*\\.', '')); _newparentstmt := REPLACE(_newparentstmt, '[done]', _rt.recurtype_donecheck); _newparentstmt := REPLACE(_newparentstmt, '[schedcol]', _rt.recurtype_schedcol); _updchildstmt := 'UPDATE [fulltable] SET [table]_recurring_[table]_id=$1' || ' WHERE (([table]_recurring_[table]_id=$2)' || ' AND NOT ([done])' || ' AND ([schedcol] > ''$3''));'; _updchildstmt := REPLACE(_updchildstmt, '[fulltable]', _rt.recurtype_table); _updchildstmt := REPLACE(_updchildstmt, '[table]', REGEXP_REPLACE(_rt.recurtype_table, E'.*\\.', '')); _updchildstmt := REPLACE(_updchildstmt, '[done]', _rt.recurtype_donecheck); _updchildstmt := REPLACE(_updchildstmt, '[schedcol]', _rt.recurtype_schedcol); -- 8.4+: EXECUTE _newparentstmt INTO _newparentid USING pParentid, pDatetime; EXECUTE REPLACE(REPLACE(_newparentstmt, '$1', pParentid::TEXT), '$2', pDatetime::TEXT) INTO _newparentid; -- if nothing to split IF (_newparentid = pParentid OR _newparentid IS NULL) THEN SELECT recur_id INTO _newrecurid FROM recur WHERE ((recur_parent_id=pParentid) AND (recur_parent_type=pType)); ELSE INSERT INTO recur (recur_parent_id, recur_parent_type, recur_period, recur_freq, recur_start, recur_end, recur_max, recur_data ) SELECT _newparentid, pType, recur_period, recur_freq, pDatetime, recur_end, recur_max, recur_data FROM recur WHERE ((recur_parent_id=pParentid) AND (recur_parent_type=pType)) RETURNING recur_id INTO _newrecurid; UPDATE recur SET recur_end=pDatetime WHERE ((recur_parent_id=pParentid) AND (recur_parent_type=pType)); -- 8.4+: EXECUTE _updchildstmt USING _newparentid, pParentid, pDatetime; EXECUTE REPLACE(REPLACE(REPLACE(_updchildstmt, '$1', _newparentid::TEXT), '$2', pParentid::TEXT), '$3', pDatetime::TEXT); END IF; RETURN _newrecurid; END; $_$; ALTER FUNCTION public.splitrecurrence(integer, text, timestamp with time zone) OWNER TO admin; -- -- Name: startoftime(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION startoftime() RETURNS date LANGUAGE sql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT DATE('1970-01-01') AS return; $$; ALTER FUNCTION public.startoftime() OWNER TO admin; -- -- Name: stdcost(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION stdcost(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN stdCost($1, NULL); END; $_$; ALTER FUNCTION public.stdcost(integer) OWNER TO admin; -- -- Name: stdcost(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION stdcost(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pBomitemid ALIAS FOR $2; _cost NUMERIC; BEGIN SELECT SUM(COALESCE(bomitemcost_stdcost, itemcost_stdcost)) INTO _cost FROM itemcost LEFT OUTER JOIN bomitemcost ON (bomitemcost_bomitem_id=pBomitemid AND bomitemcost_costelem_id=itemcost_costelem_id) WHERE (itemcost_item_id=pItemid); IF (_cost IS NULL) THEN RETURN 0; ELSE RETURN _cost; END IF; END; $_$; ALTER FUNCTION public.stdcost(integer, integer) OWNER TO admin; -- -- Name: sufficientinventorytoshipitem(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION sufficientinventorytoshipitem(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; porderitemid ALIAS FOR $2; BEGIN RETURN sufficientInventoryToShipItem(pordertype, porderitemid, NULL); END; $_$; ALTER FUNCTION public.sufficientinventorytoshipitem(text, integer) OWNER TO admin; -- -- Name: sufficientinventorytoshipitem(text, integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION sufficientinventorytoshipitem(text, integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; porderitemid ALIAS FOR $2; pqty ALIAS FOR $3; _returnVal INTEGER; _isqtyavail BOOLEAN; BEGIN IF (porderitemid IS NULL) THEN RETURN -1; END IF; IF (pordertype = 'SO') THEN IF ( SELECT fetchMetricBool('EnableSOReservations') ) THEN IF (SELECT (itemsite_costmethod = 'J') FROM coitem JOIN itemsite ON (coitem_itemsite_id=itemsite_id) WHERE (coitem_id=porderitemid)) THEN RETURN 0; END IF; SELECT (((COALESCE(pqty, roundQty(item_fractional, noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned - qtyAtShipping(pordertype, coitem_id) ))) - coitem_qtyreserved) * coitem_qty_invuomratio ) <= itemsite_qtyonhand) AND (((COALESCE(pqty, roundQty(item_fractional, noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned - qtyAtShipping(pordertype, coitem_id) ))) - coitem_qtyreserved) * coitem_qty_invuomratio ) <= qtyunreserved(itemsite_id)) INTO _isqtyavail FROM coitem, itemsite, item WHERE ((coitem_itemsite_id=itemsite_id) AND (coitem_status <> 'X') AND (NOT ((item_type IN ('R','J')) OR (itemsite_controlmethod = 'N'))) AND (itemsite_item_id=item_id) AND (coitem_id=porderitemid)); ELSE SELECT (COALESCE(pqty, roundQty(item_fractional, noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned - qtyAtShipping(pordertype, coitem_id) - coitem_qtyreserved ) * coitem_qty_invuomratio ) ) <= itemsite_qtyonhand) INTO _isqtyavail FROM coitem, itemsite, item WHERE ((coitem_itemsite_id=itemsite_id) AND (coitem_status <> 'X') AND (NOT ((item_type IN ('R','J')) OR (itemsite_controlmethod = 'N'))) AND (itemsite_item_id=item_id) AND (coitem_id=porderitemid)); END IF; ELSEIF (pordertype = 'TO') THEN SELECT (COALESCE(pqty, roundQty(item_fractional, noNeg(toitem_qty_ordered - toitem_qty_shipped - qtyAtShipping(pordertype, toitem_id) ) ) ) <= itemsite_qtyonhand) INTO _isqtyavail FROM toitem, tohead, itemsite, item WHERE ((toitem_tohead_id=tohead_id) AND (tohead_src_warehous_id=itemsite_warehous_id) AND (toitem_item_id=itemsite_item_id) AND (itemsite_warehous_id=tohead_src_warehous_id) AND (itemsite_item_id=item_id) AND (toitem_status <> 'X') AND (NOT ((item_type IN ('R','J')) OR (itemsite_controlmethod = 'N'))) AND (toitem_id=porderitemid)); ELSE RETURN -11; END IF; IF (NOT _isqtyavail) THEN RETURN -2; END IF; IF (pordertype = 'SO') THEN SELECT (COALESCE((SELECT SUM(itemloc_qty) FROM itemloc WHERE (itemloc_itemsite_id=itemsite_id)), 0.0) >= roundQty(item_fractional, COALESCE(pQty, noNeg( coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned - qtyAtShipping(pordertype, coitem_id) )) * coitem_qty_invuomratio )) INTO _isqtyavail FROM coitem, itemsite, item WHERE ((coitem_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (NOT ((item_type ='R') OR (itemsite_controlmethod = 'N'))) AND ((itemsite_controlmethod IN ('L', 'S')) OR (itemsite_loccntrl)) AND (coitem_id=porderitemid)); ELSEIF (pordertype = 'TO') THEN SELECT (COALESCE((SELECT SUM(itemloc_qty) FROM itemloc WHERE (itemloc_itemsite_id=itemsite_id)), 0.0) >= roundQty(item_fractional, noNeg( toitem_qty_ordered - toitem_qty_shipped - qtyAtShipping(pordertype, toitem_id) ) )) INTO _isqtyavail FROM toitem, tohead, itemsite, item WHERE ((toitem_tohead_id=tohead_id) AND (tohead_src_warehous_id=itemsite_warehous_id) AND (toitem_item_id=itemsite_item_id) AND (itemsite_item_id=item_id) AND (toitem_status <> 'X') AND (NOT ((item_type ='R') OR (itemsite_costmethod = 'J') OR (itemsite_controlmethod = 'N'))) AND ((itemsite_controlmethod IN ('L', 'S')) OR (itemsite_loccntrl)) AND (toitem_id=porderitemid)); END IF; IF (NOT _isqtyavail) THEN RETURN -3; END IF; RETURN 0; END; $_$; ALTER FUNCTION public.sufficientinventorytoshipitem(text, integer, numeric) OWNER TO admin; -- -- Name: sufficientinventorytoshiporder(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION sufficientinventorytoshiporder(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; porderid ALIAS FOR $2; _s RECORD; _returnVal INTEGER := 0; BEGIN IF (pordertype = 'SO') THEN FOR _s IN SELECT coitem_id FROM coitem JOIN itemsite ON (coitem_itemsite_id=itemsite_id) WHERE((coitem_cohead_id=porderid) AND (itemsite_costmethod != 'J')) LOOP _returnVal := sufficientInventoryToShipItem(pordertype, _s.coitem_id); EXIT WHEN (_returnVal < 0); END LOOP; ELSEIF (pordertype = 'TO') THEN FOR _s IN SELECT toitem_id FROM toitem WHERE(toitem_tohead_id=porderid) LOOP _returnVal := sufficientInventoryToShipItem(pordertype, _s.toitem_id); EXIT WHEN (_returnVal < 0); END LOOP; END IF; RETURN _returnVal; END; $_$; ALTER FUNCTION public.sufficientinventorytoshiporder(text, integer) OWNER TO admin; -- -- Name: summarizedbom(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summarizedbom(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; _revid INTEGER; BEGIN SELECT getActiveRevId('BOM',pItemid) INTO _revid; RETURN summarizedBOM(pItemid, _revid); END; $_$; ALTER FUNCTION public.summarizedbom(integer) OWNER TO admin; -- -- Name: summarizedbom(integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summarizedbom(integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pExpired ALIAS FOR $2; pFuture ALIAS FOR $3; _revid INTEGER; BEGIN SELECT getActiveRevId('BOM',pItemid) INTO _revid; RETURN summarizedBOM(pItemid, _revid, pExpired, pFuture); END; $_$; ALTER FUNCTION public.summarizedbom(integer, integer, integer) OWNER TO admin; -- -- Name: summarizedbom(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summarizedbom(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pRevisionid ALIAS FOR $2; _bomworkid INTEGER; _indexid INTEGER; _r RECORD; BEGIN -- Check on the temporary workspace -- PERFORM maintainBOMWorkspace(); -- Grab a new index for this bomwork set SELECT NEXTVAL('misc_index_seq') INTO _indexid; -- Step through all of the components of the passed pItemid FOR _r IN SELECT bomitem.*, item_id, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyfxd) AS qtyfxd, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper) AS qtyper, stdcost(item_id, bomitem_id) AS standardcost, actcost(item_id, bomitem_id) AS actualcost FROM bomitem(pItemid, pRevisionid), item WHERE (bomitem_item_id=item_id) LOOP -- Insert the component and bomitem parameters SELECT NEXTVAL('bomwork_bomwork_id_seq') INTO _bomworkid; INSERT INTO bomwork ( bomwork_id, bomwork_set_id, bomwork_parent_id, bomwork_level, bomwork_parent_seqnumber, bomwork_seqnumber, bomwork_item_id, bomwork_createwo, bomwork_qtyreq, bomwork_qtyfxd, bomwork_qtyper, bomwork_scrap, bomwork_issuemethod, bomwork_effective, bomwork_expires, bomwork_stdunitcost, bomwork_actunitcost ) VALUES ( _bomworkid, _indexid, -1, 1, 0, _r.bomitem_seqnumber, _r.item_id, _r.bomitem_createwo, (_r.qtyfxd + _r.qtyper), _r.qtyfxd, _r.qtyper, _r.bomitem_scrap, _r.bomitem_issuemethod, _r.bomitem_effective, _r.bomitem_expires, _r.standardcost, _r.actualcost, _r.bomitem_char_id, _r.bomitem_value, _r.bomitem_notes, _r.bomitem_ref, _r.bomitem_id, _r.bomitem_ecn ); -- Explode the components of the current component PERFORM explodeBOM(_r.item_id, _bomworkid, 1); END LOOP; -- Return a key to the result RETURN _indexid; END; $_$; ALTER FUNCTION public.summarizedbom(integer, integer) OWNER TO admin; -- -- Name: summarizedbom(integer, integer, integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summarizedbom(integer, integer, integer, integer) RETURNS SETOF bomdata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pRevisionid ALIAS FOR $2; pExpiredDays INTEGER := COALESCE($3, 0); pFutureDays INTEGER := COALESCE($4, 0); _row bomdata%ROWTYPE; _bomworksetid INTEGER; _x RECORD; _check CHAR(1); _inactive BOOLEAN := FALSE; _batchsize NUMERIC; BEGIN IF (pRevisionid != -1) THEN --Is this a deactivated revision? SELECT rev_status INTO _check FROM rev WHERE ((rev_id=pRevisionid) AND (rev_status='I')); IF (FOUND) THEN _inactive := TRUE; END IF; END IF; -- Get the batch quantity SELECT COALESCE( ( SELECT bomhead_batchsize FROM bomhead WHERE ((bomhead_item_id=pItemId) AND (bomhead_rev_id=pRevisionid))),1) INTO _batchsize; IF NOT (_inactive) THEN --We can explode this out based on current data SELECT indentedBOM(pItemid, pRevisionid) INTO _bomworksetid; FOR _x IN SELECT item_number, uom_name, item_descrip1, item_descrip2, (item_descrip1 || ' ' || item_descrip2) AS itemdescription, SUM(bomwork_qtyreq) AS qtyreq, SUM(bomwork_qtyfxd * (1 + bomwork_scrap)) AS qtyfxd, SUM(bomwork_qtyper * (1 + bomwork_scrap)) AS qtyper, MAX(bomwork_actunitcost) AS actunitcost, MAX(bomwork_stdunitcost) AS stdunitcost, CASE WHEN item_type NOT IN ('R','T') THEN SUM(bomwork_actunitcost * bomwork_qtyreq) ELSE 0 END AS actextendedcost, CASE WHEN item_type NOT IN ('R','T') THEN SUM(bomwork_stdunitcost * bomwork_qtyreq) ELSE 0 END AS stdextendedcost, bomwork_effective, bomwork_expires, bomwork_effective > CURRENT_DATE AS future, bomwork_expires <= CURRENT_DATE AS expired FROM ( SELECT item_number, item_type, uom_name, item_descrip1, item_descrip2, bomwork_qtyreq, bomwork_qtyfxd, bomwork_qtyper, bomwork_scrap, bomwork_actunitcost, bomwork_stdunitcost, CASE WHEN (bomwork_effective > CURRENT_DATE) THEN (CURRENT_DATE + 1) ELSE CURRENT_DATE END AS bomwork_effective, CASE WHEN (bomwork_expires <= CURRENT_DATE) THEN (CURRENT_DATE - 1) ELSE (CURRENT_DATE + 1) END AS bomwork_expires FROM bomwork, item, uom WHERE ( (bomwork_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (bomwork_set_id=_bomworksetid) ) AND (bomwork_expires > (CURRENT_DATE - pExpiredDays)) AND (bomwork_effective <= (CURRENT_DATE + pFutureDays)) ) AS data GROUP BY item_number, uom_name, item_type, item_descrip1, item_descrip2, bomwork_effective, bomwork_expires ORDER BY item_number LOOP _row.bomdata_item_number := _x.item_number; _row.bomdata_uom_name := _x.uom_name; _row.bomdata_item_descrip1 := _x.item_descrip1; _row.bomdata_item_descrip2 := _x.item_descrip2; _row.bomdata_itemdescription := _x.itemdescription; _row.bomdata_qtyreq := _x.qtyreq; _row.bomdata_qtyfxd := _x.qtyfxd; _row.bomdata_qtyper := _x.qtyper; _row.bomdata_actunitcost := _x.actunitcost; _row.bomdata_stdunitcost := _x.stdunitcost; _row.bomdata_actextendedcost := _x.actextendedcost; _row.bomdata_stdextendedcost := _x.stdextendedcost; _row.bomdata_effective := _x.bomwork_effective; _row.bomdata_expires := _x.bomwork_expires; _row.bomdata_future := _x.future; _row.bomdata_expired := _x.expired; RETURN NEXT _row; END LOOP; PERFORM deleteBOMWorkset(_bomworksetid); ELSE -- Use historical snapshot for inactive revisions FOR _x IN SELECT item_number, uom_name, item_descrip1, item_descrip2, (item_descrip1 || ' ' || item_descrip2) AS itemdescription, SUM(bomhist_qtyreq * (1 + bomhist_scrap)) AS qtyreq, SUM(bomhist_qtyfxd * (1 + bomhist_scrap)) AS qtyfxd, SUM(bomhist_qtyper * (1 + bomhist_scrap)) AS qtyper, MAX(bomhist_actunitcost) AS actunitcost, MAX(bomhist_stdunitcost) AS stdunitcost, CASE WHEN item_type NOT IN ('R','T') THEN MAX(bomhist_actunitcost) * SUM((bomhist_qtyfxd/_batchsize + bomhist_qtyper) * (1 + bomhist_scrap)) ELSE 0 END AS actextendedcost, CASE WHEN item_type NOT IN ('R','T') THEN MAX(bomhist_stdunitcost) * SUM((bomhist_qtyfxd/_batchsize + bomhist_qtyper) * (1 + bomhist_scrap)) ELSE 0 END AS stdextendedcost FROM bomhist, item, uom WHERE ( (bomhist_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (bomhist_rev_id=pRevisionid) ) AND (bomhist_expires > (CURRENT_DATE - pExpiredDays)) AND (bomhist_effective <= (CURRENT_DATE + pFutureDays)) GROUP BY item_number, uom_name, item_type, item_descrip1, item_descrip2 ORDER BY item_number LOOP _row.bomdata_item_number := _x.item_number; _row.bomdata_uom_name := _x.uom_name; _row.bomdata_item_descrip1 := _x.item_descrip1; _row.bomdata_item_descrip2 := _x.item_descrip2; _row.bomdata_itemdescription := _x.itemdescription; _row.bomdata_qtyreq := _x.qtyreq; _row.bomdata_qtyfxd := _x.qtyfxd; _row.bomdata_qtyper := _x.qtyper; _row.bomdata_actunitcost := _x.actunitcost; _row.bomdata_stdunitcost := _x.stdunitcost; _row.bomdata_actextendedcost := _x.actextendedcost; _row.bomdata_stdextendedcost := _x.stdextendedcost; RETURN NEXT _row; END LOOP; END IF; RETURN; END; $_$; ALTER FUNCTION public.summarizedbom(integer, integer, integer, integer) OWNER TO admin; -- -- Name: summarizetransactions(integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summarizetransactions(integer, date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _startDate DATE; _endDate DATE; _invhist RECORD; _itemuom TEXT; _transCounter INTEGER; _itemlocSeries INTEGER; BEGIN -- Cache the uom_name SELECT uom_name INTO _itemuom FROM itemsite, item, uom WHERE ((itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_id=pItemsiteid)); -- Can't summarize into the future... IF (pEndDate > CURRENT_DATE) THEN _endDate := CURRENT_DATE; ELSE _endDate := pEndDate; END IF; -- Verify date bounds IF (pStartDate > pEndDate) THEN _startDate := pEndDate; ELSE _startDate := pStartDate; END IF; -- Verify that history is not referenced elsewhere SELECT invhist_id INTO _transCounter FROM invhist JOIN womatlpost ON (womatlpost_invhist_id=invhist_id) WHERE ((invhist_itemsite_id=pItemsiteid) AND (invhist_transdate::DATE BETWEEN _startDate AND _endDate)) LIMIT 1; IF (FOUND) THEN RETURN 0; END IF; SELECT invhist_id INTO _transCounter FROM invhist JOIN shipitem ON (shipitem_invhist_id=invhist_id) WHERE ((invhist_itemsite_id=pItemsiteid) AND (invhist_transdate::DATE BETWEEN _startDate AND _endDate)) LIMIT 1; IF (FOUND) THEN RETURN 0; END IF; _transCounter := 0; _itemlocSeries := NEXTVAL('itemloc_series_seq'); FOR _invhist IN SELECT invhist_transtype, invhist_costmethod, SUM(invhist_invqty) AS qty FROM invhist WHERE ((invhist_itemsite_id=pItemsiteid) AND (invhist_transdate::DATE BETWEEN _startDate AND _endDate)) GROUP BY invhist_transtype, invhist_costmethod LOOP DELETE FROM invhist WHERE ((invhist_transdate::DATE BETWEEN _startDate AND _endDate) AND (invhist_transtype=_invhist.invhist_transtype) AND (invhist_itemsite_id=pItemsiteid)); INSERT INTO invhist ( invhist_itemsite_id, invhist_transdate, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_invuom, invhist_user, invhist_ordnumber, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_series ) VALUES ( pItemsiteid, _endDate, _invhist.invhist_transtype, _invhist.qty, 0, 0, _itemuom, getEffectiveXtUser(), 'Summary', _invhist.invhist_costmethod, 0, 0, _itemlocSeries ); _transCounter := (_transCounter + 1); END LOOP; RETURN _transCounter; END; $_$; ALTER FUNCTION public.summarizetransactions(integer, date, date) OWNER TO admin; -- -- Name: summdemand(integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summdemand(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _value NUMERIC; BEGIN SELECT SUM(wo_qtyord - wo_qtyrcv) INTO _value FROM wo WHERE ( (wo_itemsite_id=pItemsiteid) AND (wo_status IN ('R', 'I')) AND (wo_startdate::DATE BETWEEN pStartDate AND pEndDate) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; ALTER FUNCTION public.summdemand(integer, date, date) OWNER TO admin; -- -- Name: summdemand(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summdemand(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pCalitemid ALIAS FOR $2; _value NUMERIC; BEGIN SELECT summDemand(pItemsiteid, findPeriodStart(pCalitemid), findPeriodEnd(pCalitemid)) INTO _value; RETURN _value; END; $_$; ALTER FUNCTION public.summdemand(integer, integer) OWNER TO admin; -- -- Name: summprod(integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summprod(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _value NUMERIC; BEGIN SELECT SUM(invhist_invqty) INTO _value FROM invhist WHERE ( (invhist_itemsite_id=pItemsiteid) AND (invhist_transtype IN ('RM', 'RB')) AND (invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; ALTER FUNCTION public.summprod(integer, date, date) OWNER TO admin; -- -- Name: summprod(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summprod(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pCalitemid ALIAS FOR $2; _value NUMERIC; BEGIN SELECT summProd(pItemsiteid, findPeriodStart(pCalitemid), findPeriodEnd(pCalitemid)) INTO _value; RETURN _value; END; $_$; ALTER FUNCTION public.summprod(integer, integer) OWNER TO admin; -- -- Name: summtransa(integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summtransa(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _value NUMERIC; BEGIN SELECT SUM(invhist_invqty) INTO _value FROM invhist WHERE ((invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND (invhist_transtype IN ('AD', 'CC')) AND (invhist_itemsite_id=pItemsiteid)); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; ALTER FUNCTION public.summtransa(integer, date, date) OWNER TO admin; -- -- Name: summtransa(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summtransa(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pCalitemid ALIAS FOR $2; _value NUMERIC; BEGIN SELECT summTransA(pItemsiteid, findPeriodStart(pCalitemid), findPeriodEnd(pCalitemid)) INTO _value; RETURN _value; END; $_$; ALTER FUNCTION public.summtransa(integer, integer) OWNER TO admin; -- -- Name: summtransc(integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summtransc(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDAte ALIAS FOR $3; _value NUMERIC; BEGIN SELECT SUM(invhist_invqty) INTO _value FROM invhist WHERE ((invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND (invhist_transtype IN ('SI')) AND (invhist_itemsite_id=pItemsiteid)); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; ALTER FUNCTION public.summtransc(integer, date, date) OWNER TO admin; -- -- Name: summtransc(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summtransc(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pCalitemid ALIAS FOR $2; _value NUMERIC; BEGIN SELECT summTransC(pItemsiteid, findPeriodStart(pCalitemid), findPeriodEnd(pCalitemid)) INTO _value; RETURN _value; END; $_$; ALTER FUNCTION public.summtransc(integer, integer) OWNER TO admin; -- -- Name: summtransi(integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summtransi(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _value NUMERIC; BEGIN SELECT SUM(invhist_invqty) INTO _value FROM invhist WHERE ((invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND (invhist_transtype IN ('IM', 'IC')) AND (invhist_itemsite_id=pItemsiteid)); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; ALTER FUNCTION public.summtransi(integer, date, date) OWNER TO admin; -- -- Name: summtransi(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summtransi(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pCalitemid ALIAS FOR $2; _value NUMERIC; BEGIN SELECT summTransI(pItemsiteid, findPeriodStart(pCalitemid), findPeriodEnd(pCalitemid)) INTO _value; RETURN _value; END; $_$; ALTER FUNCTION public.summtransi(integer, integer) OWNER TO admin; -- -- Name: summtransr(integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summtransr(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _value NUMERIC; BEGIN SELECT SUM(invhist_invqty) INTO _value FROM invhist WHERE ((invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND (invhist_transtype IN ('RM', 'RP', 'RX')) AND (invhist_itemsite_id=pItemsiteid) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; ALTER FUNCTION public.summtransr(integer, date, date) OWNER TO admin; -- -- Name: summtransr(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summtransr(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pCalitemid ALIAS FOR $2; _value NUMERIC; BEGIN SELECT summTransR(pItemsiteid, findPeriodStart(pCalitemid), findPeriodEnd(pCalitemid)) INTO _value; RETURN _value; END; $_$; ALTER FUNCTION public.summtransr(integer, integer) OWNER TO admin; -- -- Name: summtranss(integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summtranss(pitemsiteid integer, pstartdate date, penddate date) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _value NUMERIC; BEGIN SELECT SUM( CASE WHEN (invhist_transtype = 'RS') THEN (invhist_invqty * -1) ELSE (invhist_invqty) END ) INTO _value FROM invhist WHERE ( (invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND (invhist_transtype IN ('SC', 'SH', 'SV', 'RS')) AND (invhist_ordtype != 'TO') AND (invhist_itemsite_id=pItemsiteid) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $$; ALTER FUNCTION public.summtranss(pitemsiteid integer, pstartdate date, penddate date) OWNER TO admin; -- -- Name: summtranss(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summtranss(pitemsiteid integer, pcalitemid integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pCalitemid ALIAS FOR $2; _value NUMERIC; BEGIN SELECT summTransS(pItemsiteid, findPeriodStart(pCalitemid), findPeriodEnd(pCalitemid)) INTO _value; RETURN _value; END; $_$; ALTER FUNCTION public.summtranss(pitemsiteid integer, pcalitemid integer) OWNER TO admin; -- -- Name: summtranst(integer, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summtranst(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _value NUMERIC; BEGIN SELECT SUM( CASE WHEN (invhist_transtype = 'TS') THEN (invhist_invqty * -1) ELSE (invhist_invqty) END ) INTO _value FROM invhist WHERE ( (invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND (invhist_transtype IN ('TS', 'TR', 'TW')) AND (invhist_itemsite_id=pItemsiteid) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; ALTER FUNCTION public.summtranst(integer, date, date) OWNER TO admin; -- -- Name: summtranst(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION summtranst(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pCalitemid ALIAS FOR $2; _value NUMERIC; BEGIN SELECT summTransT(pItemsiteid, findPeriodStart(pCalitemid), findPeriodEnd(pCalitemid)) INTO _value; RETURN _value; END; $_$; ALTER FUNCTION public.summtranst(integer, integer) OWNER TO admin; -- -- Name: taxassignments(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION taxassignments(integer, integer) RETURNS SETOF taxassign LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxZoneId ALIAS FOR $1; pTaxTypeId ALIAS FOR $2; _row taxassign%ROWTYPE; _qry text; _x RECORD; _y RECORD; _z RECORD; BEGIN _qry = 'SELECT DISTINCT COALESCE(taxass_taxzone_id, -1) AS taxass_taxzone_id, COALESCE(taxass_taxtype_id, -1) AS taxass_taxtype_id, '; _qry = _qry || 'taxzone_code, taxtype_name FROM taxass LEFT OUTER JOIN taxzone ON (taxass_taxzone_id=taxzone_id) '; _qry = _qry || 'LEFT OUTER JOIN taxtype ON (taxass_taxtype_id=taxtype_id) '; IF ((pTaxZoneId > 0) OR (pTaxTypeId > 0)) THEN _qry := _qry || ' WHERE '; IF (pTaxZoneId > 0) THEN _qry := _qry || ' (taxass_taxzone_id = ' || pTaxZoneId ||')'; IF (pTaxTypeId > 0) THEN _qry := _qry || ' AND '; END IF; END IF; IF (pTaxTypeId > 0) THEN _qry := _qry || ' (taxass_taxtype_id = ' || pTaxTypeId || ')'; END IF; END IF; --This first query gets all the distinct tax zone and type groupings as if it were its own table. --This allows us to have a level 0 record as pictured in Tax Assignments window that code assignements will --Subordinate to. FOR _x IN EXECUTE _qry LOOP --Map values to _row here _row.taxassign_taxzone_id = _x.taxass_taxzone_id; _row.taxassign_taxtype_id = _x.taxass_taxtype_id; _row.taxassign_level = 0; _row.taxassign_zone_code = _x.taxzone_code; _row.taxassign_type_descrip = _x.taxtype_name; _row.taxassign_taxclass_code = ''; _row.taxassign_taxclass_sequence = NULL; RETURN NEXT _row; --so we get a level tax zone/type 0 record. -- Now get all the tax code assignments that belong to this Zone and Type pair FOR _y IN SELECT taxass_id, COALESCE(taxzone_id, -1) AS taxzone_id, tax_id, tax_code, tax_descrip, COALESCE(taxtype_id, -1) AS taxtype_id, taxzone_code, taxtype_descrip, taxclass_code, COALESCE(taxclass_sequence, 0) AS taxclass_sequence FROM taxass JOIN tax LEFT OUTER JOIN taxclass ON (tax_taxclass_id = taxclass_id) ON (taxass_tax_id = tax_id) LEFT OUTER JOIN taxzone ON (taxass_taxzone_id = taxzone_id) LEFT OUTER JOIN taxtype ON (taxass_taxtype_id = taxtype_id) WHERE COALESCE(taxass_taxzone_id, -1) = _x.taxass_taxzone_id AND COALESCE(taxass_taxtype_id, -1) = _x.taxass_taxtype_id LOOP --Map results to _row _row.taxassign_taxzone_id = _y.taxzone_id; _row.taxassign_taxtype_id = _y.taxtype_id; _row.taxassign_level = 1; _row.taxassign_zone_code = _y.tax_code; _row.taxassign_type_descrip = _y.tax_descrip; _row.taxassign_taxclass_code = _y.taxclass_code; _row.taxassign_taxclass_sequence = _y.taxclass_sequence; RETURN NEXT _row; --to get code detail record; FOR _z IN SELECT * FROM getsubtax(_y.tax_id, 1) --a new recursive function described above LOOP --Map results to _row _row.taxassign_taxzone_id = _y.taxzone_id; _row.taxassign_taxtype_id = _y.taxtype_id; _row.taxassign_level = _z.subtax_taxcode_level; _row.taxassign_zone_code = _z.subtax_taxcode_code; _row.taxassign_type_descrip = _z.subtax_taxcode_descrip; _row.taxassign_taxclass_code = _y.taxclass_code; _row.taxassign_taxclass_sequence = _y.taxclass_sequence; RETURN NEXT _row; END LOOP; END LOOP; END LOOP; END; $_$; ALTER FUNCTION public.taxassignments(integer, integer) OWNER TO admin; -- -- Name: thawaccountingperiod(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION thawaccountingperiod(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; _r RECORD; BEGIN -- Check to make sure that the period is frozen IF ( ( SELECT (NOT period_freeze) FROM period WHERE (period_id=pPeriodid) ) ) THEN RETURN -2; END IF; -- Check to make sure that the period is not closed IF ( ( SELECT (period_closed) FROM period WHERE (period_id=pPeriodid) ) ) THEN RETURN -1; END IF; -- Reset the period_freeze flag UPDATE period SET period_freeze=FALSE WHERE (period_id=pPeriodid); -- Post any unposted G/L Transactions into the period FOR _r IN SELECT DISTINCT gltrans_sequence FROM gltrans, accnt, period WHERE ( (gltrans_accnt_id=accnt_id) AND (NOT gltrans_posted) AND (gltrans_date BETWEEN period_start AND period_end) AND (period_id=pPeriodid) ) LOOP PERFORM postIntoTrialBalance(_r.gltrans_sequence); END LOOP; RETURN pPeriodid; END; $_$; ALTER FUNCTION public.thawaccountingperiod(integer) OWNER TO admin; -- -- Name: thawitemsite(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION thawitemsite(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; _qoh NUMERIC := 0; _netable_qoh NUMERIC := 0; _nonnetable_qoh NUMERIC := 0; _value NUMERIC := 0; _itemlocid INTEGER; _itemloc RECORD; _invhist RECORD; _coarse RECORD; _fine RECORD; BEGIN IF ( SELECT itemsite_freeze FROM itemsite WHERE (itemsite_id=pItemsiteid) ) THEN SELECT invhist_id INTO _invhist FROM invhist WHERE ( (invhist_itemsite_id=pItemsiteid) AND (NOT invhist_posted) ) LIMIT 1; IF (NOT FOUND) THEN UPDATE itemsite SET itemsite_freeze=FALSE WHERE (itemsite_id=pItemsiteid); END IF; -- Run through any invdetail if this itemsite is still MLC and/or Lot/Serial IF ( SELECT ( (itemsite_loccntrl) OR (itemsite_controlmethod IN ('L', 'S')) ) FROM itemsite WHERE (itemsite_id=pItemsiteid) ) THEN -- Grab all of the itemsite/location/lot/serial combinations -- that have unposted detail FOR _coarse IN SELECT DISTINCT invdetail_location_id, invdetail_ls_id, invdetail_expiration, invdetail_warrpurc FROM invhist, invdetail WHERE ( (invdetail_invhist_id=invhist_id) AND (NOT invhist_posted) AND (invhist_itemsite_id=pItemsiteid) ) ORDER BY invdetail_location_id, invdetail_ls_id LOOP -- Cache the initial qty of the itemloc specified by the -- itemsite/location/lot/serial SELECT itemloc_id, itemloc_qty, COALESCE(location_netable, TRUE) AS location_netable INTO _itemloc FROM itemloc LEFT OUTER JOIN location ON (location_id=itemloc_location_id) WHERE ( (itemloc_itemsite_id=pItemsiteid) AND (itemloc_location_id=_coarse.invdetail_location_id) AND (COALESCE(itemloc_ls_id,-1)=COALESCE(_coarse.invdetail_ls_id,-1)) AND (COALESCE(itemloc_expiration,endOfTime())=COALESCE(_coarse.invdetail_expiration,endOfTime())) AND (COALESCE(itemloc_warrpurc,endOfTime())=COALESCE(_coarse.invdetail_warrpurc,endOfTime())) ); -- If the itemloc in question cannot be found, create it IF (NOT FOUND) THEN SELECT NEXTVAL('itemloc_itemloc_id_seq') INTO _itemlocid; INSERT INTO itemloc ( itemloc_id, itemloc_itemsite_id, itemloc_location_id, itemloc_ls_id, itemloc_qty, itemloc_expiration ) VALUES ( _itemlocid, pItemsiteid, _coarse.invdetail_location_id, _coarse.invdetail_ls_id, 0, endOfTime() ); _qoh := 0.0; _netable_qoh := 0.0; _nonnetable_qoh := 0.0; ELSE _itemlocid := _itemloc.itemloc_id; _qoh := _itemloc.itemloc_qty; IF (_itemloc.location_netable) THEN _netable_qoh := _itemloc.itemloc_qty; ELSE _nonnetable_qoh := _itemloc.itemloc_qty; END IF; END IF; -- Now step through each unposted invdetail record for a given -- itemsite/location/lot/serial FOR _fine IN SELECT invdetail_id, invdetail_qty FROM invhist, invdetail WHERE ( (invdetail_invhist_id=invhist_id) AND (NOT invhist_posted) AND (invhist_itemsite_id=pItemsiteid) AND (invdetail_location_id=_coarse.invdetail_location_id) AND (COALESCE(invdetail_ls_id,-1)=COALESCE(_coarse.invdetail_ls_id,-1)) AND (COALESCE(invdetail_expiration,endOfTime())=COALESCE(_coarse.invdetail_expiration,endOfTime())) AND (COALESCE(invdetail_warrpurc,endOfTime())=COALESCE(_coarse.invdetail_warrpurc,endOfTime())) ) ORDER BY invhist_transdate LOOP -- Update the running qoh fields in the detail record UPDATE invdetail SET invdetail_qty_before = _qoh, invdetail_qty_after = (_qoh + invdetail_qty) WHERE (invdetail_id=_fine.invdetail_id); -- Update the running qoh _qoh = (_qoh + _fine.invdetail_qty); IF (_itemloc.location_netable) THEN _netable_qoh := (_netable_qoh + _fine.invdetail_qty); ELSE _nonnetable_qoh := (_nonnetable_qoh + _fine.invdetail_qty); END IF; END LOOP; -- If the running qoh end up at 0, delete the itemloc in question IF (_qoh = 0) THEN DELETE FROM itemloc WHERE (itemloc_id=_itemlocid); -- Otherwise, update the itemloc in question with the resultant qty ELSE UPDATE itemloc SET itemloc_qty=_qoh WHERE (itemloc_id=_itemlocid); END IF; END LOOP; END IF; -- Cache the inital qoh of the itemsite SELECT itemsite_qtyonhand, itemsite_value INTO _qoh, _value FROM itemsite WHERE (itemsite_id=pItemsiteid); -- We have to un-freeze the itemsite before update-ing its QOH -- so that that itemsite trigger won't block the QOH update. -- Also so the invhist trigger won't block the posted update. UPDATE itemsite SET itemsite_freeze=FALSE WHERE (itemsite_id=pItemsiteid); FOR _invhist IN SELECT invhist_id, invhist_qoh_before, invhist_qoh_after, invhist_value_before, invhist_value_after FROM invhist WHERE((invhist_itemsite_id=pItemsiteid) AND (NOT invhist_posted)) ORDER BY invhist_transdate LOOP UPDATE invhist SET invhist_qoh_before = _qoh, invhist_qoh_after = ( _qoh + _invhist.invhist_qoh_after - _invhist.invhist_qoh_before ), invhist_value_before = _value, invhist_value_after = ( _value + _invhist.invhist_value_after - _invhist.invhist_value_before ), invhist_posted = TRUE WHERE (invhist_id=_invhist.invhist_id); _qoh := (_qoh + (_invhist.invhist_qoh_after - _invhist.invhist_qoh_before)); _value := (_value + (_invhist.invhist_value_after - _invhist.invhist_value_before)); END LOOP; -- _qoh can be used for the netable qoh because of the negative NN transactions UPDATE itemsite SET itemsite_qtyonhand = _qoh, itemsite_nnqoh = _nonnetable_qoh, itemsite_value = CASE WHEN ((itemsite_costmethod='A') AND (_value < 0.0)) THEN 0.0 ELSE _value END WHERE(itemsite_id=pItemsiteid); END IF; RETURN pItemsiteid; END; $_$; ALTER FUNCTION public.thawitemsite(integer) OWNER TO admin; -- -- Name: todoitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE todoitem ( todoitem_id integer NOT NULL, todoitem_name text NOT NULL, todoitem_description text, todoitem_incdt_id integer, todoitem_creator_username text DEFAULT geteffectivextuser() NOT NULL, todoitem_status character(1), todoitem_active boolean DEFAULT true NOT NULL, todoitem_start_date date, todoitem_due_date date, todoitem_assigned_date date, todoitem_completed_date date, todoitem_seq integer DEFAULT 0 NOT NULL, todoitem_notes text, todoitem_crmacct_id integer, todoitem_ophead_id integer, todoitem_owner_username text, todoitem_priority_id integer, todoitem_username text, todoitem_recurring_todoitem_id integer, todoitem_cntct_id integer ); ALTER TABLE public.todoitem OWNER TO admin; -- -- Name: TABLE todoitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE todoitem IS 'To-Do List items.'; -- -- Name: COLUMN todoitem.todoitem_recurring_todoitem_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN todoitem.todoitem_recurring_todoitem_id IS 'The first todoitem record in the series if this is a recurring To-Do item. If the todoitem_recurring_todoitem_id is the same as the todoitem_id, this record is the first in the series.'; -- -- Name: todoitem(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION todoitem() RETURNS SETOF todoitem LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row todoitem%ROWTYPE; _priv TEXT; _grant BOOLEAN; BEGIN -- This query will give us the most permissive privilege the user has been granted SELECT privilege, granted INTO _priv, _grant FROM privgranted WHERE privilege IN ('MaintainAllToDoItems','ViewAllToDoItems','MaintainPersonalToDoItems','ViewPersonalToDoItems') ORDER BY granted DESC, sequence LIMIT 1; -- If have an 'All' privilege return all results IF (_priv ~ 'All' AND _grant) THEN FOR _row IN SELECT * FROM todoitem LOOP RETURN NEXT _row; END LOOP; -- Otherwise if have any other grant, must be personal privilege. ELSIF (_grant) THEN FOR _row IN SELECT * FROM todoitem WHERE getEffectiveXtUser() IN (todoitem_owner_username, todoitem_username) LOOP RETURN NEXT _row; END LOOP; END IF; RETURN; END; $$; ALTER FUNCTION public.todoitem() OWNER TO admin; -- -- Name: FUNCTION todoitem(); Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON FUNCTION todoitem() IS 'A table function that returns To Do Items results according to privilege settings.'; -- -- Name: todoitemmove(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION todoitemmove(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ptodoItemId ALIAS FOR $1; pHowFar ALIAS FOR $2; -- -1 moves toward front of list, +1 toward back _howFar INTEGER := pHowFar; _username TEXT; _currseq INTEGER; BEGIN SELECT todoitem_username, todoitem_seq INTO _username, _currseq FROM todoitem WHERE todoitem_id = ptodoItemId; IF NOT FOUND THEN RETURN -1; END IF; IF (_currseq + pHowFar <= 0) THEN _howFar = 1 - _currseq; -- move to beginning END IF; UPDATE todoitem SET todoitem_seq=todoitem_seq - _howFar WHERE todoitem_seq >= _currseq + _howFar AND todoitem_id != ptodoItemId AND todoitem_username = _username AND todoitem_status != 'C'; UPDATE todoitem SET todoitem_seq=_currseq + _howFar WHERE todoitem_id = ptodoItemId; RETURN 0; END; $_$; ALTER FUNCTION public.todoitemmove(integer, integer) OWNER TO admin; -- -- Name: todoitemmovedown(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION todoitemmovedown(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ptodoItemId ALIAS FOR $1; BEGIN RETURN todoItemMove(ptodoItemId, 1); -- move toward end of list END; $_$; ALTER FUNCTION public.todoitemmovedown(integer) OWNER TO admin; -- -- Name: todoitemmoveup(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION todoitemmoveup(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ptodoItemId ALIAS FOR $1; BEGIN RETURN todoItemMove(ptodoItemId, -1); -- move toward front of list END; $_$; ALTER FUNCTION public.todoitemmoveup(integer) OWNER TO admin; -- -- Name: togglebankreccleared(integer, text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION togglebankreccleared(integer, text, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ DECLARE pBankrecid ALIAS FOR $1; pSource ALIAS FOR $2; pSourceid ALIAS FOR $3; _cleared BOOLEAN; _r RECORD; BEGIN SELECT bankrecitem_id, bankrecitem_cleared INTO _r FROM bankrecitem WHERE ( (bankrecitem_bankrec_id=pBankrecid) AND (bankrecitem_source=pSource) AND (bankrecitem_source_id=pSourceid) ); IF ( NOT FOUND ) THEN _cleared := TRUE; INSERT INTO bankrecitem (bankrecitem_bankrec_id, bankrecitem_source, bankrecitem_source_id, bankrecitem_cleared) VALUES (pBankrecid, pSource, pSourceid, _cleared); ELSE _cleared := (NOT _r.bankrecitem_cleared); UPDATE bankrecitem SET bankrecitem_cleared=_cleared WHERE (bankrecitem_id=_r.bankrecitem_id); END IF; RETURN _cleared; END; $_$; ALTER FUNCTION public.togglebankreccleared(integer, text, integer) OWNER TO admin; -- -- Name: togglebankreccleared(integer, text, integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION togglebankreccleared(integer, text, integer, numeric) RETURNS boolean LANGUAGE plpgsql AS $_$ DECLARE pBankrecid ALIAS FOR $1; pSource ALIAS FOR $2; pSourceid ALIAS FOR $3; pCurrrate ALIAS FOR $4; _cleared BOOLEAN; _r RECORD; BEGIN SELECT bankrecitem_id, bankrecitem_cleared INTO _r FROM bankrecitem WHERE ( (bankrecitem_bankrec_id=pBankrecid) AND (bankrecitem_source=pSource) AND (bankrecitem_source_id=pSourceid) ); IF ( NOT FOUND ) THEN _cleared := TRUE; INSERT INTO bankrecitem (bankrecitem_bankrec_id, bankrecitem_source, bankrecitem_source_id, bankrecitem_cleared, bankrecitem_curr_rate) VALUES (pBankrecid, pSource, pSourceid, _cleared, pCurrrate); ELSE _cleared := (NOT _r.bankrecitem_cleared); UPDATE bankrecitem SET bankrecitem_cleared=_cleared, bankrecitem_curr_rate=pCurrrate WHERE (bankrecitem_id=_r.bankrecitem_id); END IF; RETURN _cleared; END; $_$; ALTER FUNCTION public.togglebankreccleared(integer, text, integer, numeric) OWNER TO admin; -- -- Name: togglebankreccleared(integer, text, integer, numeric, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION togglebankreccleared(integer, text, integer, numeric, numeric) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankrecid ALIAS FOR $1; pSource ALIAS FOR $2; pSourceid ALIAS FOR $3; pCurrrate ALIAS FOR $4; pAmount ALIAS FOR $5; _cleared BOOLEAN; _r RECORD; BEGIN SELECT bankrecitem_id, bankrecitem_cleared INTO _r FROM bankrecitem WHERE ( (bankrecitem_bankrec_id=pBankrecid) AND (bankrecitem_source=pSource) AND (bankrecitem_source_id=pSourceid) ); IF ( NOT FOUND ) THEN _cleared := TRUE; INSERT INTO bankrecitem (bankrecitem_bankrec_id, bankrecitem_source, bankrecitem_source_id, bankrecitem_cleared, bankrecitem_curr_rate, bankrecitem_amount) VALUES (pBankrecid, pSource, pSourceid, _cleared, pCurrrate, pAmount); ELSE _cleared := FALSE; DELETE FROM bankrecitem WHERE bankrecitem_id = _r.bankrecitem_id; END IF; RETURN _cleared; END; $_$; ALTER FUNCTION public.togglebankreccleared(integer, text, integer, numeric, numeric) OWNER TO admin; -- -- Name: togglebomitemcost(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION togglebomitemcost(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBomitemid ALIAS FOR $1; pEnabled ALIAS FOR $2; BEGIN IF (pEnabled) THEN INSERT INTO bomitemcost (bomitemcost_bomitem_id, bomitemcost_costelem_id, bomitemcost_lowlevel, bomitemcost_stdcost, bomitemcost_posted, bomitemcost_actcost, bomitemcost_updated, bomitemcost_curr_id) SELECT bomitem_id, itemcost_costelem_id, itemcost_lowlevel, itemcost_stdcost, itemcost_posted, itemcost_actcost, itemcost_updated, itemcost_curr_id FROM bomitem JOIN itemcost ON (itemcost_item_id=bomitem_item_id) WHERE (bomitem_id=pBomitemid); ELSE DELETE FROM bomitemcost WHERE (bomitemcost_bomitem_id=pBomitemid); END IF; RETURN 0; END; $_$; ALTER FUNCTION public.togglebomitemcost(integer, boolean) OWNER TO admin; -- -- Name: tonumeric(text, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION tonumeric(text, numeric) RETURNS numeric LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pText ALIAS FOR $1; pDefault ALIAS FOR $2; BEGIN IF (isNumeric(pText)) THEN RETURN TO_NUMBER(pText, '999999999999'); ELSE RETURN pDefault; END IF; END; $_$; ALTER FUNCTION public.tonumeric(text, numeric) OWNER TO admin; -- -- Name: transitwhs(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION transitwhs() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _id INTEGER; BEGIN _id = fetchMetricValue('TransitWarehouse'); IF (_id IS NOT NULL AND EXISTS(SELECT warehous_id FROM whsinfo WHERE (warehous_id=_id)) ) THEN RETURN _id; END IF; SELECT warehous_id INTO _id FROM whsinfo WHERE warehous_transit; IF (NOT FOUND) THEN _id := NEXTVAL('warehous_warehous_id_seq'); INSERT INTO whsinfo ( warehous_id, warehous_code, warehous_descrip, --warehous_fob, warehous_active, --warehous_counttag_prefix, --warehous_counttag_number, --warehous_bol_prefix, --warehous_bol_number, warehous_shipping, warehous_useslips, warehous_usezones, --warehous_aislesize, --warehous_aislealpha, --warehous_racksize, --warehous_rackalpha, --warehous_binsize, --warehous_binalpha, --warehous_locationsize, --warehous_locationalpha, warehous_enforcearbl, warehous_default_accnt_id, --warehous_shipping_commission, --warehous_cntct_id, --warehous_addr_id, warehous_taxzone_id ) VALUES ( _id, 'TRANSIT', 'Intermediate Warehouse for Inter-Warehouse Transfers', --text, TRUE, --text, --integer, --text, --integer, TRUE, FALSE, FALSE, --integer, --boolean, --integer, --boolean, --integer, --boolean, --integer, --boolean, FALSE, fetchMetricValue('UnassignedAccount'), --numeric(8,4) default 0.00, --integer, --integer, NULL ); END IF; PERFORM setMetric('TransitWarehouse', _id); RETURN _id; END; $$; ALTER FUNCTION public.transitwhs() OWNER TO admin; -- -- Name: transtype(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION transtype(text, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTransType ALIAS FOR $1; pTargetType ALIAS FOR $2; BEGIN IF (pTargetType = 255) THEN RETURN TRUE; ELSIF (pTargetType = 1) THEN RETURN receipts(pTransType); ELSIF (pTargetType = 2) THEN RETURN issues(pTransType); ELSIF (pTargetType = 4) THEN RETURN shipments(pTransType); ELSIF (pTargetType = 8) THEN RETURN adjustments(pTransType); ELSIF (pTargetType = 16) THEN RETURN transfers(pTransType); ELSIF (pTargetType = 32) THEN RETURN scraps(pTransType); ELSE RETURN TRUE; END IF; END; $_$; ALTER FUNCTION public.transtype(text, integer) OWNER TO admin; -- -- Name: trylock(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION trylock(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pKey1 ALIAS FOR $1; pKey2 ALIAS FOR $2; _pid integer; BEGIN /* The standard try lock ignores locks made by the current user in same session. Check for ANY lock on this id, whether by this user or not */ SELECT pid INTO _pid FROM pg_locks WHERE ((classid=pKey1) AND (objid=pKey2) AND (objsubid=2)); IF (FOUND) THEN RETURN false; ELSE RETURN pg_try_advisory_lock(pKey1,pKey2); END IF; END; $_$; ALTER FUNCTION public.trylock(integer, integer) OWNER TO admin; -- -- Name: undomerge(text, text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION undomerge(text, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSchema ALIAS FOR $1; pTable ALIAS FOR $2; pId ALIAS FOR $3; _qry TEXT; _r RECORD; _result INTEGER; BEGIN FOR _r IN SELECT * FROM mrgundo WHERE mrgundo_base_schema = pSchema AND mrgundo_base_table = pTable AND mrgundo_base_id = pId AND mrgundo_col IS NOT NULL -- NULL mrgundo_col signals a row to delete on purge LOOP IF (_r.mrgundo_value IS NULL) THEN _qry := 'UPDATE ' || quote_ident(_r.mrgundo_schema) || '.' || quote_ident(_r.mrgundo_table) || ' SET ' || quote_ident(_r.mrgundo_col) || '= NULL WHERE (' || _r.mrgundo_pkey_col || '=' || _r.mrgundo_pkey_id || ');'; ELSE _qry := 'UPDATE ' || quote_ident(_r.mrgundo_schema) || '.' || quote_ident(_r.mrgundo_table) || ' SET ' || quote_ident(_r.mrgundo_col) || '= CAST(' || quote_literal(_r.mrgundo_value) || ' AS ' || quote_ident(_r.mrgundo_type) || ') WHERE (' || _r.mrgundo_pkey_col || '=' || _r.mrgundo_pkey_id || ');'; END IF; EXECUTE _qry; END LOOP; DELETE FROM mrgundo WHERE mrgundo_base_schema = pSchema AND mrgundo_base_table = pTable AND mrgundo_base_id = pId; GET DIAGNOSTICS _result = ROW_COUNT; RETURN _result; END; $_$; ALTER FUNCTION public.undomerge(text, text, integer) OWNER TO admin; -- -- Name: uomusedforitem(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION uomusedforitem(integer) RETURNS SETOF uom LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pitemid ALIAS FOR $1; _row uom%ROWTYPE; BEGIN FOR _row IN SELECT DISTINCT * FROM uom WHERE uom_id IN ( SELECT bomitem_uom_id AS uom_id FROM bomitem WHERE (bomitem_item_id=pitemid) UNION SELECT cmitem_qty_uom_id FROM cmitem, itemsite WHERE ((cmitem_itemsite_id=itemsite_id) AND (itemsite_item_id=pitemid)) UNION SELECT cmitem_price_uom_id FROM cmitem, itemsite WHERE ((cmitem_itemsite_id=itemsite_id) AND (itemsite_item_id=pitemid)) UNION SELECT coitem_qty_uom_id FROM coitem, itemsite WHERE ((coitem_itemsite_id=itemsite_id) AND (itemsite_item_id=pitemid)) UNION SELECT coitem_price_uom_id FROM coitem, itemsite WHERE ((coitem_itemsite_id=itemsite_id) AND (itemsite_item_id=pitemid)) UNION SELECT invcitem_qty_uom_id FROM invcitem WHERE ((invcitem_item_id=pitemid)) UNION SELECT invcitem_price_uom_id FROM invcitem WHERE ((invcitem_item_id=pitemid)) UNION SELECT ipsitem_qty_uom_id FROM ipsiteminfo WHERE (ipsitem_item_id=pitemid) UNION SELECT ipsitem_price_uom_id FROM ipsiteminfo WHERE (ipsitem_item_id=pitemid) UNION SELECT quitem_qty_uom_id FROM quitem, itemsite WHERE ((quitem_itemsite_id=itemsite_id) AND (itemsite_item_id=pitemid)) UNION SELECT quitem_price_uom_id FROM quitem, itemsite WHERE ((quitem_itemsite_id=itemsite_id) AND (itemsite_item_id=pitemid)) UNION SELECT womatl_uom_id FROM womatl, itemsite WHERE ((womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=pitemid)) ) LOOP RETURN NEXT _row; END LOOP; IF (fetchmetricbool('MultiWhs')) THEN FOR _row IN SELECT DISTINCT * FROM uom WHERE uom_id IN ( SELECT rahist_uom_id FROM rahist, itemsite WHERE ((rahist_itemsite_id=itemsite_id) AND (itemsite_item_id=pitemid)) ) LOOP RETURN NEXT _row; END LOOP; END IF; RETURN; END; $_$; ALTER FUNCTION public.uomusedforitem(integer) OWNER TO admin; -- -- Name: updateabcclass(text, numeric, numeric, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updateabcclass(text, numeric, numeric, date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pClassCodePattern ALIAS FOR $1; pACutoff ALIAS FOR $2; pBCutoff ALIAS FOR $3; pStartDate ALIAS FOR $4; pEndDate ALIAS FOR $5; _result INTEGER; BEGIN SELECT updateABCClass(pClassCodePattern, -1, pACutoff, pBCutoff, pStartDate, pEndDate) INTO _result; RETURN _result; END; $_$; ALTER FUNCTION public.updateabcclass(text, numeric, numeric, date, date) OWNER TO admin; -- -- Name: updateabcclass(text, integer, numeric, numeric, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updateabcclass(text, integer, numeric, numeric, date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pClassCodePattern ALIAS FOR $1; pWarehousid ALIAS FOR $2; pACutoff ALIAS FOR $3; pBCutoff ALIAS FOR $4; pStartDate ALIAS FOR $5; pEndDate ALIAS FOR $6; _updateCount INTEGER; _totalValue NUMERIC; _cumulativeValue NUMERIC; _itemsite RECORD; BEGIN SELECT COUNT(*) INTO _updateCount FROM itemsite, item, classcode WHERE ( (itemsite_item_id=item_id) AND (item_classcode_id=classcode_id) AND (itemsite_autoabcclass) AND (classcode_code ~ pClassCodePattern) AND ((itemsite_warehous_id=pWarehousid) OR (pWarehousid=-1)) ); IF (_updateCount IS NULL) THEN RETURN 0; ELSE UPDATE itemsite SET itemsite_abcclass='T' FROM item, classcode WHERE ( (itemsite_item_id=item_id) AND (item_classcode_id=classcode_id) AND (itemsite_autoabcclass) AND (classcode_code ~ pClassCodePattern) AND ((itemsite_warehous_id=pWarehousid) OR (pWarehousid=-1)) ); SELECT SUM(ABS(invhist_qoh_before - invhist_qoh_after) * invhist_unitcost) INTO _totalValue FROM invhist, itemsite, item, classcode WHERE ( (invhist_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_classcode_id=classcode_id) AND (invhist_analyze) AND (invhist_transtype ~ '^[IR]') AND (itemsite_autoabcclass) AND (classcode_code ~ pClassCodePattern) AND (invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND ((itemsite_warehous_id=pWarehousid) OR (pWarehousid=-1)) ); IF ( (_totalValue IS NULL) OR (_totalValue = 0) ) THEN UPDATE itemsite SET itemsite_abcclass='A' WHERE (itemsite_abcclass='T'); ELSE _cumulativeValue := 0; FOR _itemsite IN SELECT itemsite_id, item_number, SUM(ABS(invhist_qoh_before - invhist_qoh_after) * invhist_unitcost) AS value FROM invhist, itemsite, item, classcode WHERE ( (invhist_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_classcode_id=classcode_id) AND (invhist_analyze) AND (invhist_transtype ~ '^[IR]') AND (itemsite_autoabcclass) AND (classcode_code ~ pClassCodePattern) AND (invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND ((itemsite_warehous_id=pWarehousid) OR (pWarehousid=-1)) ) GROUP BY itemsite_id, item_number ORDER BY value DESC LOOP IF (_itemsite.value IS NOT NULL) THEN _cumulativeValue := _cumulativeValue + _itemsite.value; END IF; IF ((_cumulativeValue / _totalValue) <= pACutoff) THEN UPDATE itemsite SET itemsite_abcclass='A' WHERE (itemsite_id=_itemsite.itemsite_id); ELSE IF ((_cumulativeValue / _totalValue) <= pBCutoff) THEN UPDATE itemsite SET itemsite_abcclass='B' WHERE (itemsite_id=_itemsite.itemsite_id); ELSE UPDATE itemsite SET itemsite_abcclass='C' WHERE (itemsite_id=_itemsite.itemsite_id); END IF; END IF; END LOOP; UPDATE itemsite SET itemsite_abcclass='C' WHERE (itemsite_abcclass='T'); END IF; END IF; RETURN _updateCount; END; $_$; ALTER FUNCTION public.updateabcclass(text, integer, numeric, numeric, date, date) OWNER TO admin; -- -- Name: updateabcclass(integer, numeric, numeric, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updateabcclass(integer, numeric, numeric, date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pClasscodeid ALIAS FOR $1; pACutoff ALIAS FOR $2; pBCutoff ALIAS FOR $3; pStartDate ALIAS FOR $4; pEndDate ALIAS FOR $5; _result INTEGER; BEGIN SELECT updateABCClass(pClassCodeid, -1, pACutoff, pBCutoff, pStartDate, pEndDate) INTO _result; RETURN _result; END; $_$; ALTER FUNCTION public.updateabcclass(integer, numeric, numeric, date, date) OWNER TO admin; -- -- Name: updateabcclass(integer, integer, numeric, numeric, date, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updateabcclass(integer, integer, numeric, numeric, date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pClasscodeid ALIAS FOR $1; pWarehousid ALIAS FOR $2; pACutoff ALIAS FOR $3; pBCutoff ALIAS FOR $4; pStartDate ALIAS FOR $5; pEndDate ALIAS FOR $6; _updateCount INTEGER; _totalValue NUMERIC; _cumulativeValue NUMERIC; _itemsite RECORD; BEGIN SELECT COUNT(*) INTO _updateCount FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND ((item_classcode_id=pClasscodeid) OR (pClasscodeid=-1)) AND ((itemsite_warehous_id=pWarehousid) OR (pWarehousid=-1)) ); IF (_updateCount IS NULL) THEN _updateCount := 0; ELSE UPDATE itemsite SET itemsite_abcclass='T' FROM item WHERE ( (itemsite_item_id=item_id) AND ((item_classcode_id=pClasscodeid) OR (pClasscodeid=-1)) AND ((itemsite_warehous_id=pWarehousid) OR (pWarehousid=-1)) ); SELECT SUM(ABS(invhist_qoh_before - invhist_qoh_after) * invhist_unitcost) INTO _totalValue FROM invhist, itemsite, item WHERE ( (invhist_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (invhist_analyze) AND (invhist_transtype ~ '^[IR]') AND ((item_classcode_id=pClasscodeid) OR (pClasscodeid=-1)) AND (invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND ((itemsite_warehous_id=pWarehousid) OR (pWarehousid=-1)) ); IF ( (_totalValue IS NULL) OR (_totalValue = 0) ) THEN UPDATE itemsite SET itemsite_abcclass='A' WHERE (itemsite_abcclass='T'); ELSE _cumulativeValue := 0; FOR _itemsite IN SELECT itemsite_id, item_number, SUM(ABS(invhist_qoh_before - invhist_qoh_after) * invhist_unitcost) AS value FROM invhist, itemsite, item WHERE ( (invhist_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (invhist_analyze) AND (invhist_transtype ~ '^[IR]') AND ((item_classcode_id=pClasscodeid) OR (pClasscodeid=-1)) AND (invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND ((itemsite_warehous_id=pWarehousid) OR (pWarehousid=-1)) ) GROUP BY itemsite_id, item_number ORDER BY value DESC LOOP IF (_itemsite.value IS NOT NULL) THEN _cumulativeValue := _cumulativeValue + _itemsite.value; END IF; IF ((_cumulativeValue / _totalValue) <= pACutoff) THEN UPDATE itemsite SET itemsite_abcclass='A' WHERE (itemsite_id=_itemsite.itemsite_id); ELSE IF ((_cumulativeValue / _totalValue) <= pBCutoff) THEN UPDATE itemsite SET itemsite_abcclass='B' WHERE (itemsite_id=_itemsite.itemsite_id); ELSE UPDATE itemsite SET itemsite_abcclass='C' WHERE (itemsite_id=_itemsite.itemsite_id); END IF; END IF; END LOOP; UPDATE itemsite SET itemsite_abcclass='C' WHERE (itemsite_abcclass='T'); END IF; END IF; RETURN _updateCount; END; $_$; ALTER FUNCTION public.updateabcclass(integer, integer, numeric, numeric, date, date) OWNER TO admin; -- -- Name: updatecharassignment(text, integer, integer, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatecharassignment(text, integer, integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTargetType ALIAS FOR $1; pTargetId ALIAS FOR $2; pCharId ALIAS FOR $3; pValue ALIAS FOR $4; _charassid INTEGER; BEGIN SELECT updateCharAssignment(pTargetType, pTargetId, pCharId, pValue, 0) INTO _charassid; RETURN _charassid; END; $_$; ALTER FUNCTION public.updatecharassignment(text, integer, integer, text) OWNER TO admin; -- -- Name: updatecharassignment(text, integer, integer, text, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatecharassignment(text, integer, integer, text, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTargetType ALIAS FOR $1; pTargetId ALIAS FOR $2; pCharId ALIAS FOR $3; pValue ALIAS FOR $4; pPrice ALIAS FOR $5; _charassid INTEGER; _charassprice NUMERIC; _explodedJob BOOLEAN = FALSE; _value TEXT; BEGIN -- Check for Valid Assignment IF (pTargetType='SI') THEN SELECT (item_config AND wo_status != 'O') INTO _explodedJob FROM coitem,itemsite,item,wo WHERE ((coitem_id=pTargetId) AND (itemsite_id=coitem_itemsite_id) AND (item_id=itemsite_item_id) AND (wo_ordtype='S') AND (wo_ordid=coitem_id)); END IF; SELECT charass_id,charass_value INTO _charassid, _value FROM charass WHERE ((charass_target_type=pTargetType) AND (charass_target_id=pTargetId) AND (charass_char_id=pCharId) ) LIMIT 1; IF (FOUND) THEN IF (_explodedJob AND pValue != _value) THEN RAISE EXCEPTION 'Characteristic may not be updated for Configured Item with exploded Work Order.'; ELSIF(COALESCE(pValue, '')!='') THEN UPDATE charass SET charass_value = pValue, charass_price = pPrice WHERE (charass_id=_charassid); ELSE DELETE FROM charass WHERE (charass_id=_charassid); _charassid := 0; END IF; ELSE IF ( (_explodedJob) AND (COALESCE(pValue, '')!='') ) THEN RAISE EXCEPTION 'Characteristics may not be updated for Configured Item with exploded Work Order.'; ELSIF(COALESCE(pValue, '')!='') THEN SELECT nextval('charass_charass_id_seq') INTO _charassid; INSERT INTO charass (charass_id, charass_target_type, charass_target_id, charass_char_id, charass_value, charass_price) VALUES(_charassid, pTargetType, pTargetId, pCharId, pValue, pPrice); ELSE _charassid := 0; END IF; END IF; RETURN _charassid; END; $_$; ALTER FUNCTION public.updatecharassignment(text, integer, integer, text, numeric) OWNER TO admin; -- -- Name: updatecost(integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatecost(integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemcostid ALIAS FOR $1; pCost ALIAS FOR $2; BEGIN RETURN updateCost(pItemcostid, pCost, baseCurrId()); END; $_$; ALTER FUNCTION public.updatecost(integer, numeric) OWNER TO admin; -- -- Name: updatecost(integer, text, boolean, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatecost(integer, text, boolean, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE returnVal INTEGER; BEGIN SELECT updateCost($1, $2, $3, $4, baseCurrId()) INTO returnVal; RETURN returnVal; END; $_$; ALTER FUNCTION public.updatecost(integer, text, boolean, numeric) OWNER TO admin; -- -- Name: updatecost(integer, integer, boolean, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatecost(integer, integer, boolean, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE returnVal INTEGER; BEGIN SELECT updateCost($1, $2, $3, $4, baseCurrId()) INTO returnVal; RETURN returnVal; END; $_$; ALTER FUNCTION public.updatecost(integer, integer, boolean, numeric) OWNER TO admin; -- -- Name: updatecost(integer, numeric, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatecost(integer, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemcostid ALIAS FOR $1; pCost ALIAS FOR $2; pCurrId ALIAS FOR $3; BEGIN IF ( ( SELECT (itemcost_stdcost > 0) FROM itemcost WHERE (itemcost_id=pItemcostid) ) OR (pCost > 0) ) THEN UPDATE itemcost SET itemcost_actcost=pCost, itemcost_updated=CURRENT_DATE, itemcost_curr_id=pCurrId WHERE (itemcost_id=pItemcostid); RETURN pItemcostid; ELSE DELETE FROM itemcost WHERE (itemcost_id=pItemcostid); RETURN -1; END IF; END; $_$; ALTER FUNCTION public.updatecost(integer, numeric, integer) OWNER TO admin; -- -- Name: updatecost(integer, text, boolean, numeric, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatecost(integer, text, boolean, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCosttype ALIAS FOR $2; pLevel ALIAS FOR $3; pCost ALIAS FOR $4; pCurrid ALIAS FOR $5; _cost NUMERIC; _currId INTEGER; _p RECORD; _itemcostid INTEGER; BEGIN IF (pCost IS NULL) THEN _cost = 0; ELSE _cost = pCost; END IF; IF (pCurrId IS NULL) THEN _currId := baseCurrID(); ELSE _currId := pCurrId; END IF; SELECT itemcost_id, itemcost_stdcost INTO _p FROM itemcost, costelem WHERE ( (itemcost_costelem_id=costelem_id) AND (itemcost_item_id=pItemid) AND (itemcost_lowlevel=pLevel) AND (costelem_type=pCosttype) ); IF (NOT FOUND) THEN IF (_cost > 0) THEN SELECT NEXTVAL('itemcost_itemcost_id_seq') INTO _itemcostid; INSERT INTO itemcost ( itemcost_id, itemcost_item_id, itemcost_costelem_id, itemcost_lowlevel, itemcost_stdcost, itemcost_posted, itemcost_actcost, itemcost_updated, itemcost_curr_id ) SELECT _itemcostid, pItemid, costelem_id, pLevel, 0, startOfTime(), _cost, CURRENT_DATE, _currId FROM costelem WHERE (costelem_type=pCosttype); RETURN _itemcostid; ELSE RETURN -1; END IF; ELSIF ( (_p.itemcost_stdcost > 0) OR (_cost > 0) ) THEN UPDATE itemcost SET itemcost_actcost=_cost, itemcost_curr_id = _currId, itemcost_updated=CURRENT_DATE WHERE (itemcost_id=_p.itemcost_id); RETURN _p.itemcost_id; ELSE DELETE FROM itemcost WHERE (itemcost_id=_p.itemcost_id); RETURN -1; END IF; END; $_$; ALTER FUNCTION public.updatecost(integer, text, boolean, numeric, integer) OWNER TO admin; -- -- Name: updatecost(integer, integer, boolean, numeric, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatecost(integer, integer, boolean, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCostelemid ALIAS FOR $2; pLevel ALIAS FOR $3; pCost ALIAS FOR $4; pCurrid ALIAS FOR $5; _cost NUMERIC; _currId INTEGER; _p RECORD; _itemcostid INTEGER; BEGIN IF (pCost IS NULL) THEN _cost = 0; ELSE _cost = pCost; END IF; IF (pCurrId IS NULL) THEN _currId := baseCurrID(); ELSE _currId := pCurrId; END IF; SELECT itemcost_id, itemcost_stdcost INTO _p FROM itemcost WHERE ((itemcost_costelem_id=pCostelemid) AND (itemcost_item_id=pItemid) AND (itemcost_lowlevel=pLevel) ); IF (NOT FOUND) THEN IF (_cost > 0) THEN SELECT NEXTVAL('itemcost_itemcost_id_seq') INTO _itemcostid; INSERT INTO itemcost ( itemcost_id, itemcost_item_id, itemcost_costelem_id, itemcost_lowlevel, itemcost_stdcost, itemcost_posted, itemcost_actcost, itemcost_updated, itemcost_curr_id ) SELECT _itemcostid, pItemid, costelem_id, pLevel, 0, startOfTime(), _cost, CURRENT_DATE, _currId FROM costelem WHERE (costelem_id=pCostelemid); RETURN _itemcostid; ELSE RETURN -1; END IF; ELSIF ( (_p.itemcost_stdcost > 0) OR (_cost > 0) ) THEN UPDATE itemcost SET itemcost_actcost=_cost, itemcost_curr_id = _currId, itemcost_updated=CURRENT_DATE WHERE (itemcost_id=_p.itemcost_id); RETURN _p.itemcost_id; ELSE DELETE FROM itemcost WHERE (itemcost_id=_p.itemcost_id); RETURN -1; END IF; END; $_$; ALTER FUNCTION public.updatecost(integer, integer, boolean, numeric, integer) OWNER TO admin; -- -- Name: updatecreditmemoline(api.creditmemoline, api.creditmemoline); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatecreditmemoline(api.creditmemoline, api.creditmemoline) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNew ALIAS FOR $1; pOld ALIAS FOR $2; _check INTEGER; _r RECORD; BEGIN SELECT cmitem_id INTO _check FROM cmitem WHERE ( (cmitem_cmhead_id=getCmheadId(pOld.memo_number, FALSE)) AND (cmitem_linenumber=pOld.line_number) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Credit Memo # % Line Number # not found', pOld.memo_number, pOld.line_number; END IF; UPDATE cmitem SET cmitem_itemsite_id=COALESCE(itemsite_id, -1), cmitem_qtycredit=pNew.qty_to_credit, cmitem_qtyreturned=pNew.qty_returned, cmitem_unitprice=pNew.net_unit_price, cmitem_comments=pNew.notes, cmitem_rsncode_id=getRsnId(pNew.reason_code), cmitem_taxtype_id=taxtype_id, cmitem_qty_uom_id=COALESCE(getUomId(pNew.qty_uom), item_inv_uom_id), cmitem_qty_invuomratio=CASE WHEN item_id IS NOT NULL THEN itemuomtouomratio(item_id, COALESCE(getUomId(pNew.qty_uom),item_inv_uom_id),item_inv_uom_id) ELSE 1 END, cmitem_price_uom_id=COALESCE(getUomId(pNew.price_uom),item_price_uom_id), cmitem_price_invuomratio=CASE WHEN item_id IS NOT NULL THEN itemuomtouomratio(item_id, COALESCE(getUomId(pNew.price_uom),item_price_uom_id),item_price_uom_id) ELSE 1 END FROM cmhead LEFT OUTER JOIN item ON (item_id=getItemId(pNew.item_number)) LEFT OUTER JOIN itemsite ON (itemsite_item_id=item_id AND itemsite_warehous_id=getWarehousId(pNew.recv_site, 'ALL')) LEFT OUTER JOIN taxtype ON (taxtype_id=CASE WHEN pNew.tax_type IS NULL THEN getItemTaxType(item_id,cmhead_taxzone_id) WHEN pNew.tax_type = 'None' THEN NULL ELSE getTaxTypeId(pNew.tax_type) END) WHERE cmitem_cmhead_id=cmhead_id AND cmhead_number=pOld.memo_number AND cmitem_linenumber=pOld.line_number AND cmhead_posted=FALSE; RETURN TRUE; END; $_$; ALTER FUNCTION public.updatecreditmemoline(api.creditmemoline, api.creditmemoline) OWNER TO admin; -- -- Name: updatecustomprivs(); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatecustomprivs() RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; BEGIN FOR _r IN SELECT priv_id FROM priv WHERE ((priv_name IN (SELECT priv_name FROM priv WHERE (priv_module='Custom') EXCEPT SELECT ('Custom'||cmd_privname) FROM cmd)) AND (priv_module='Custom')) LOOP -- TODO: something here DELETE FROM grppriv WHERE grppriv_priv_id=_r.priv_id; DELETE FROM usrpriv WHERE usrpriv_priv_id=_r.priv_id; DELETE FROM priv WHERE priv_id=_r.priv_id; END LOOP; FOR _r IN SELECT ('Custom'||cmd_privname) AS privname FROM cmd EXCEPT SELECT priv_name FROM priv WHERE (priv_module='Custom') LOOP -- TODO: something here INSERT INTO priv (priv_module, priv_name, priv_descrip) VALUES ('Custom', _r.privname, 'Auto Generated Custom Priv.'); END LOOP; RETURN TRUE; END; $$; ALTER FUNCTION public.updatecustomprivs() OWNER TO admin; -- -- Name: updateinvoicelineitem(api.invoiceline, api.invoiceline); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updateinvoicelineitem(api.invoiceline, api.invoiceline) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNew ALIAS FOR $1; pOld ALIAS FOR $2; _r RECORD; BEGIN UPDATE invcitem SET invcitem_linenumber=pNew.line_number, invcitem_item_id=COALESCE(item_id, -1), invcitem_custpn=pNew.customer_part_number, invcitem_number=(CASE WHEN item_id IS NULL THEN pNew.misc_item_number ELSE NULL END), invcitem_warehous_id=(CASE WHEN invcitem_warehous_id IS NULL THEN COALESCE(getwarehousid(pNew.site,'ALL'),-1) ELSE NULL END), invcitem_descrip=(CASE WHEN item_id IS NULL THEN pNew.misc_item_description ELSE NULL END), invcitem_ordered=pNew.qty_ordered, invcitem_billed=COALESCE(pNew.qty_billed, 0), invcitem_updateinv=COALESCE(pNew.update_inventory,FALSE), invcitem_price=COALESCE(pNew.net_unit_price,itemPrice(item_id,invchead_cust_id, invchead_shipto_id,pNew.qty_ordered,invchead_curr_id,invchead_orderdate)), invcitem_notes=COALESCE(pNew.notes,''), invcitem_salescat_id=CASE WHEN item_id IS NULL THEN (SELECT salescat_id FROM salescat WHERE salescat_name = pNew.sales_category) ELSE NULL END, invcitem_taxtype_id=taxtype_id, invcitem_qty_uom_id=CASE WHEN item_id IS NOT NULL THEN COALESCE((SELECT uom_id FROM uom WHERE (uom_name=pNew.qty_uom)), item_price_uom_id) ELSE NULL END, invcitem_qty_invuomratio=CASE WHEN item_id IS NOT NULL THEN itemuomtouomratio(item_id, COALESCE((SELECT uom_id FROM uom WHERE uom_name=pNew.qty_uom),item_price_uom_id), item_price_uom_id ) ELSE 1 END, invcitem_price_uom_id=CASE WHEN item_id IS NOT NULL THEN COALESCE((SELECT uom_id FROM uom WHERE uom_name=pNew.price_uom),item_price_uom_id) ELSE NULL END, invcitem_price_invuomratio=CASE WHEN item_id IS NOT NULL THEN itemuomtouomratio(item_id, COALESCE((SELECT uom_id FROM uom WHERE uom_name=pNew.price_uom),item_price_uom_id), item_price_uom_id ) ELSE 1 END, invcitem_rev_accnt_id=getGlAccntId(alternate_rev_account) FROM invchead LEFT OUTER JOIN item ON (item_id=getItemId(pNew.item_number)) LEFT OUTER JOIN taxtype ON (taxtype_id=CASE WHEN pNew.tax_type IS NULL THEN getItemTaxType(item_id,invchead_taxzone_id) WHEN pNew.tax_type = 'None' THEN NULL ELSE (SELECT taxtype_id FROM taxtype WHERE taxtype_name=pNew.tax_type) END) WHERE invcitem_invchead_id=invchead_id AND invcitem_linenumber=pOld.line_number AND invchead_invcnumber=pOld.invoice_number AND invchead_posted=FALSE; RETURN TRUE; END; $_$; ALTER FUNCTION public.updateinvoicelineitem(api.invoiceline, api.invoiceline) OWNER TO admin; -- -- Name: updateitemcost(integer, integer, integer, numeric, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updateitemcost(integer, integer, integer, numeric, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemId ALIAS FOR $1; pCostElemId ALIAS FOR $2; pCurrId ALIAS FOR $3; pCost ALIAS FOR $4; pPostToStandard ALIAS FOR $5; _itemcost_id INTEGER; _update_return INTEGER; _postcost_return BOOLEAN; --This function is used with the api.itemcost View for updating --the itemcost table BEGIN SELECT itemcost_id INTO _itemcost_id FROM itemcost WHERE ( (itemcost_item_id = pItemId) AND (itemcost_costelem_id = pCostElemId) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'itemcost % not found for. ', pItemId || ' & ' || pCostElemId; END IF; IF (pCost IS NULL OR pCost < 0) THEN RAISE EXCEPTION 'itemcost Actual Cost Invalid ', pCost; END IF; IF (pCost > 0) THEN UPDATE itemcost SET itemcost_actcost=pCost, itemcost_curr_id = pCurrId WHERE (itemcost_id=_itemcost_id); --Only Post Cost to standard if the parameter is set to true IF (pPostToStandard) THEN IF (NOT checkPrivilege('PostStandardCosts')) THEN RAISE EXCEPTION 'You do not have privileges to poststandard itemcosts. Set api.itemcost post_to_standard to false'; END IF; SELECT postcost(_itemcost_id) INTO _postcost_return; IF (NOT _postcost_return) THEN RETURN -2; END IF; END IF; ELSE RETURN -1; END IF; RETURN _itemcost_id; END; $_$; ALTER FUNCTION public.updateitemcost(integer, integer, integer, numeric, boolean) OWNER TO admin; -- -- Name: updateitemsiteleadtime(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updateitemsiteleadtime(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pPad ALIAS FOR $2; _p RECORD; _materialLeadTime INTEGER; _productionLeadTime INTEGER; _leadTime INTEGER; BEGIN SELECT item_type, itemsite_wosupply INTO _p FROM item, itemsite WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pitemsiteid) ); IF ( (_p.item_type IN ('M', 'P')) ) THEN IF (_p.item_type = 'M') THEN SELECT COALESCE(MAX(component.itemsite_leadtime), 0) INTO _materialLeadTime FROM bomitem, itemsite AS parent, itemsite AS component WHERE ( (bomitem_parent_item_id=parent.itemsite_item_id) AND (bomitem_rev_id=getActiveRevId('BOM',bomitem_parent_item_id)) AND (bomitem_item_id=component.itemsite_item_id) AND (parent.itemsite_warehous_id=component.itemsite_warehous_id) AND (parent.itemsite_id=pItemsiteid) ); SELECT COALESCE(MAX(booitem_execday), 0) INTO _productionLeadTime FROM xtmfg.booitem, itemsite WHERE ( (booitem_item_id=itemsite_item_id) AND (booitem_rev_id=getActiveRevId('BOO',booitem_item_id)) AND (itemsite_id=pItemsiteid) ); _leadTime := (_materialLeadTime + _productionLeadTime + pPad); ELSIF (_p.item_type IN ('P')) THEN SELECT COALESCE(MAX(itemsrc_leadtime), 0) INTO _leadTime FROM itemsrc, itemsite WHERE ( (itemsite_item_id=itemsrc_item_id) AND (itemsite_id=pItemsiteid) ); _leadTime := (_leadTime + pPad); END IF; ELSE _leadTime = pPad; END IF; UPDATE itemsite SET itemsite_leadtime=_leadTime WHERE (itemsite_id=pItemsiteid); RETURN _leadTime; END; $_$; ALTER FUNCTION public.updateitemsiteleadtime(integer, integer) OWNER TO admin; -- -- Name: updatelistprice(integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatelistprice(integer, numeric) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pUpdateBy ALIAS FOR $2; BEGIN UPDATE item SET item_listprice = (item_listprice * pUpdateBy) WHERE (item_id=pItemid); RETURN 1; END; $_$; ALTER FUNCTION public.updatelistprice(integer, numeric) OWNER TO admin; -- -- Name: updatelowerusercosts(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatelowerusercosts(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; BEGIN RETURN updateLowerUserCosts(pItemid, TRUE); END; $_$; ALTER FUNCTION public.updatelowerusercosts(integer) OWNER TO admin; -- -- Name: updatelowerusercosts(integer, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatelowerusercosts(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pUpdateActual ALIAS FOR $2; _bomitem RECORD; _type CHAR(1); BEGIN SELECT item_type INTO _type FROM item WHERE (item_id=pItemid); IF (_type IN ('M', 'F', 'B', 'T')) THEN FOR _bomitem IN SELECT DISTINCT costelem_type FROM ( SELECT COALESCE(bc.costelem_type, ic.costelem_type) AS costelem_type FROM bomitem(pItemid) JOIN item ON (item_id=bomitem_item_id AND item_type <> 'T') JOIN itemcost ON (itemcost_item_id=bomitem_item_id) JOIN costelem ic ON (ic.costelem_id=itemcost_costelem_id AND NOT ic.costelem_sys) LEFT OUTER JOIN bomitemcost ON (bomitemcost_bomitem_id=bomitem_id) LEFT OUTER JOIN costelem bc ON (bc.costelem_id=bomitemcost_costelem_id AND NOT bc.costelem_sys) WHERE ( CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires - 1) ) UNION SELECT costelem_type FROM itemcost, costelem WHERE ( (itemcost_costelem_id=costelem_id) AND (itemcost_item_id=pItemid) ) ) AS data LOOP PERFORM updateSorACost( pItemid, _bomitem.costelem_type, TRUE, lowerCost(pItemid, _bomitem.costelem_type, pUpdateActual), pUpdateActual); END LOOP; ELSIF (_type = 'C') THEN FOR _bomitem IN SELECT DISTINCT costelem_type FROM ( SELECT costelem_type FROM itemcost, costelem, xtmfg.bbomitem WHERE ( (bbomitem_item_id=pItemid) AND ( CURRENT_DATE BETWEEN bbomitem_effective AND (bbomitem_expires - 1) ) AND (NOT costelem_sys) AND (bbomitem_item_id=itemcost_item_id) AND (itemcost_costelem_id=costelem_id) ) UNION SELECT costelem_type FROM itemcost, costelem, xtmfg.bbomitem AS t, xtmfg.bbomitem AS s WHERE ( (t.bbomitem_item_id=pItemid) AND ( CURRENT_DATE BETWEEN s.bbomitem_effective AND (s.bbomitem_expires - 1) ) AND ( CURRENT_DATE BETWEEN t.bbomitem_effective AND (t.bbomitem_expires - 1) ) AND (s.bbomitem_parent_item_id=t.bbomitem_parent_item_id) AND (NOT costelem_sys) AND (s.bbomitem_item_id=itemcost_item_id) AND (itemcost_costelem_id=costelem_id) ) ) AS data LOOP PERFORM updateSorACost( pItemid, _bomitem.costelem_type, TRUE, lowerCost(pItemid, _bomitem.costelem_type, pUpdateActual), pUpdateActual); END LOOP; END IF; RETURN 1; END; $_$; ALTER FUNCTION public.updatelowerusercosts(integer, boolean) OWNER TO admin; -- -- Name: updatelowlevel(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatelowlevel(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLowlevel ALIAS FOR $1; _num_back INTEGER; BEGIN UPDATE costUpdate SET costUpdate_lowlevel_code = (pLowlevel + 1) WHERE costUpdate_item_id IN ( SELECT bomitem_item_id FROM bomitem JOIN costUpdate ON (bomitem_parent_item_id = costUpdate_item_id) WHERE ((costUpdate_lowlevel_code = pLowlevel) AND (bomitem_rev_id=getActiveRevId('BOM',bomitem_parent_item_id)) AND (CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires - 1)))) AND costUpdate_lowlevel_code >= pLowlevel; GET DIAGNOSTICS _num_back = ROW_COUNT; RETURN _num_back; END; $_$; ALTER FUNCTION public.updatelowlevel(integer) OWNER TO admin; -- -- Name: updateoutlevel(integer, integer, integer[]); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updateoutlevel(integer, integer, integer[]) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pDays ALIAS FOR $2; pPeriods ALIAS FOR $3; _cursor INTEGER; _periodid INTEGER; _usage NUMERIC; _totalUsage NUMERIC; _totalDays INTEGER; _outLevel NUMERIC; _averageUsage NUMERIC; BEGIN _cursor := 1; _totalUsage := 0; _totalDays := 0; _periodid = pPeriods[_cursor]; WHILE (_periodid IS NOT NULL) LOOP SELECT COALESCE(SUM(invhist_invqty), 0) INTO _usage FROM invhist WHERE ( (invhist_itemsite_id=pItemsiteid) AND ( invhist_transdate::DATE BETWEEN findPeriodStart(_periodid) AND findPeriodEnd(_periodid) ) AND (invhist_transtype IN ('SH', 'IM')) ); _totalUsage := (_totalUsage + _usage); _totalDays := ( _totalDays + ( findPeriodEnd(_periodid) - findPeriodStart(_periodid) + 1 ) ); _cursor := (_cursor + 1); _periodid = pPeriods[_cursor]; END LOOP; IF (_totalDays > 0) THEN _outLevel := round(_totalUsage / _totalDays * pDays); IF (_outLevel > 0) THEN UPDATE itemsite SET itemsite_ordertoqty = _outLevel WHERE (itemsite_id=pItemsiteid); ELSE UPDATE itemsite SET itemsite_ordertoqty = 0 WHERE (itemsite_id=pItemsiteid); END IF; RETURN TRUE; ELSE RETURN FALSE; END IF; END; $_$; ALTER FUNCTION public.updateoutlevel(integer, integer, integer[]) OWNER TO admin; -- -- Name: updateprice(integer, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updateprice(integer, numeric) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pIpsitemid ALIAS FOR $1; pUpdateBy ALIAS FOR $2; BEGIN RETURN updatePrice(pIpsitemid, 'P', pUpdateBy); END; $_$; ALTER FUNCTION public.updateprice(integer, numeric) OWNER TO admin; -- -- Name: updateprice(integer, character, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updateprice(integer, character, numeric) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pIpsitemid ALIAS FOR $1; pUpdateType ALIAS FOR $2; pUpdateBy ALIAS FOR $3; BEGIN IF (pUpdateType IN('V')) THEN UPDATE ipsitem SET ipsitem_price = (ipsitem_price + pUpdateBy) WHERE (ipsitem_id=pIpsitemid); RETURN 1; ELSE UPDATE ipsitem SET ipsitem_price = (ipsitem_price * pUpdateBy) WHERE (ipsitem_id=pIpsitemid); RETURN 1; END IF; END; $_$; ALTER FUNCTION public.updateprice(integer, character, numeric) OWNER TO admin; -- -- Name: updatepricesbypricingschedule(integer, character, numeric, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatepricesbypricingschedule(pipsheadid integer, pupdatetype character, pupdateby numeric, pupdatecharprices boolean) RETURNS numeric LANGUAGE plpgsql AS $$ DECLARE _percentMultiplier NUMERIC; _currencyDecimals INTEGER; _itemRows INTEGER :=0; _charRows INTEGER :=0; BEGIN IF NOT (checkPrivilege('MaintainPricingSchedules')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Price Schedules.'; END IF; -- Get the current user's currency precision SELECT COALESCE(locale_curr_scale, 2) INTO _currencyDecimals FROM locale, usr WHERE usr_locale_id = locale_id AND usr_username = CURRENT_USER; IF (pUpdateType = 'V') THEN UPDATE ipsitem SET ipsitem_price = noNeg(ROUND( (ipsitem_price + pUpdateBy), _currencyDecimals)) WHERE (ipsitem_ipshead_id = pIpsHeadId); GET DIAGNOSTICS _itemRows = ROW_COUNT; ELSE _percentMultiplier := (1.0 + (pUpdateBy / 100.0)); UPDATE ipsitem SET ipsitem_price = noNeg(ROUND( (ipsitem_price * _percentMultiplier), _currencyDecimals)) WHERE (ipsitem_ipshead_id = pIpsHeadId); GET DIAGNOSTICS _itemRows = ROW_COUNT; IF (pUpdateCharPrices) THEN UPDATE ipsitemchar SET ipsitemchar_price = noNeg(ROUND( (ipsitemchar_price * _percentMultiplier), _currencyDecimals)) FROM ipsitem WHERE ipsitemchar_ipsitem_id = ipsitem_id AND ipsitem_ipshead_id = pIpsHeadId; GET DIAGNOSTICS _charRows = ROW_COUNT; END IF; END IF; RETURN _itemRows + _charRows; END; $$; ALTER FUNCTION public.updatepricesbypricingschedule(pipsheadid integer, pupdatetype character, pupdateby numeric, pupdatecharprices boolean) OWNER TO admin; -- -- Name: updatepricesbyproductcategory(integer, text, character, numeric, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatepricesbyproductcategory(pprodcatid integer, pprodcatpattern text, pupdatetype character, pupdateby numeric, pupdatecharprices boolean) RETURNS numeric LANGUAGE plpgsql AS $$ DECLARE _percentMultiplier NUMERIC; _currencyDecimals INTEGER; _itemRows INTEGER :=0; _charRows INTEGER :=0; BEGIN IF NOT (checkPrivilege('MaintainPricingSchedules')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Price Schedules.'; END IF; -- Get the current user's currency precision SELECT COALESCE(locale_curr_scale, 2) INTO _currencyDecimals FROM locale, usr WHERE usr_locale_id = locale_id AND usr_username = CURRENT_USER; _percentMultiplier := (1.0 + (pUpdateBy / 100.0)); IF (pUpdateType = 'V') THEN IF (pProdCatId IS NOT NULL) THEN -- Specified category id UPDATE ipsitem SET ipsitem_price = noNeg(ROUND( (ipsitem_price + pUpdateBy), _currencyDecimals )) FROM item WHERE ipsitem_item_id = item_id AND item_prodcat_id = pProdCatId; ELSIF (pProdCatPattern IS NOT NULL) THEN -- Pattern match category UPDATE ipsitem SET ipsitem_price = noNeg(ROUND( (ipsitem_price + pUpdateBy), _currencyDecimals )) FROM item WHERE ipsitem_item_id = item_id AND item_prodcat_id IN ( SELECT prodcat_id FROM prodcat WHERE (prodcat_code ~ pProdCatPattern) ); ELSE -- All categories UPDATE ipsitem SET ipsitem_price = noNeg(ROUND( (ipsitem_price + pUpdateBy), _currencyDecimals )); END IF; GET DIAGNOSTICS _itemRows = ROW_COUNT; ELSE IF (pProdCatId IS NOT NULL) THEN -- Specified category id UPDATE ipsitem SET ipsitem_price = noNeg(ROUND( (ipsitem_price * _percentMultiplier), _currencyDecimals )) FROM item WHERE ipsitem_item_id = item_id AND item_prodcat_id = pProdCatId; GET DIAGNOSTICS _itemRows = ROW_COUNT; IF(pUpdateCharPrices) THEN UPDATE ipsitemchar SET ipsitemchar_price = noNeg(ROUND( (ipsitemchar_price * _percentMultiplier), _currencyDecimals )) FROM ipsitem, item WHERE item_prodcat_id = pProdCatId AND ipsitem_item_id = item_id AND ipsitemchar_ipsitem_id = ipsitem_id; GET DIAGNOSTICS _charRows = ROW_COUNT; END IF; ELSIF (pProdCatPattern IS NOT NULL) THEN -- Pattern match category UPDATE ipsitem SET ipsitem_price = noNeg(ROUND( (ipsitem_price * _percentMultiplier), _currencyDecimals )) FROM item WHERE item_prodcat_id IN ( SELECT prodcat_id FROM prodcat WHERE (prodcat_code ~ pProdCatPattern ) ) AND ipsitem_item_id = item_id; GET DIAGNOSTICS _itemRows = ROW_COUNT; IF(pUpdateCharPrices) THEN UPDATE ipsitemchar SET ipsitemchar_price = noNeg(ROUND( (ipsitemchar_price * _percentMultiplier), _currencyDecimals )) FROM ipsitem, item WHERE item_prodcat_id IN ( SELECT prodcat_id FROM prodcat WHERE (prodcat_code ~ pProdCatPattern ) ) AND ipsitem_item_id = item_id AND ipsitemchar_ipsitem_id = ipsitem_id; GET DIAGNOSTICS _charRows = ROW_COUNT; END IF; ELSE -- All categories UPDATE ipsitem SET ipsitem_price = noNeg(ROUND( (ipsitem_price * _percentMultiplier), _currencyDecimals )); GET DIAGNOSTICS _itemRows = ROW_COUNT; IF(pUpdateCharPrices) THEN UPDATE ipsitemchar SET ipsitemchar_price = noNeg(ROUND( (ipsitemchar_price * _percentMultiplier), _currencyDecimals )); GET DIAGNOSTICS _charRows = ROW_COUNT; END IF; END IF; END IF; RETURN _itemRows + _charRows; END; $$; ALTER FUNCTION public.updatepricesbyproductcategory(pprodcatid integer, pprodcatpattern text, pupdatetype character, pupdateby numeric, pupdatecharprices boolean) OWNER TO admin; -- -- Name: updatereorderlevel(integer, integer, integer[]); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatereorderlevel(integer, integer, integer[]) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pDays ALIAS FOR $2; pPeriods ALIAS FOR $3; _cursor INTEGER; _periodid INTEGER; _usage NUMERIC; _totalUsage NUMERIC; _totalDays INTEGER; _reorderLevel INTEGER; _averageUsage NUMERIC; _result TEXT; BEGIN _cursor := 1; _totalUsage := 0; _totalDays := 0; _periodid = pPeriods[_cursor]; WHILE (_periodid IS NOT NULL) LOOP SELECT COALESCE(SUM(invhist_invqty), 0) INTO _usage FROM invhist WHERE ( (invhist_itemsite_id=pItemsiteid) AND ( invhist_transdate::DATE BETWEEN findPeriodStart(_periodid) AND findPeriodEnd(_periodid) ) AND (invhist_transtype IN ('SH', 'IM')) ); _totalUsage := (_totalUsage + _usage); _totalDays := ( _totalDays + ( findPeriodEnd(_periodid) - findPeriodStart(_periodid) + 1 ) ); _cursor := (_cursor + 1); _periodid = pPeriods[_cursor]; END LOOP; IF (_totalDays > 0) THEN _reorderLevel := round(_totalUsage / _totalDays * pDays); SELECT itemsite_stocked INTO _result from itemsite WHERE (itemsite_id=pItemsiteid); IF (_reorderLevel = 0 AND _result='t') THEN _reorderLevel := 1; END IF; IF (_reorderLevel > 0) THEN UPDATE itemsite SET itemsite_reorderlevel = _reorderLevel WHERE (itemsite_id=pItemsiteid); ELSE UPDATE itemsite SET itemsite_reorderlevel = 0 WHERE (itemsite_id=pItemsiteid); END IF; RETURN TRUE; ELSE RETURN FALSE; END IF; END; $_$; ALTER FUNCTION public.updatereorderlevel(integer, integer, integer[]) OWNER TO admin; -- -- Name: updatereorderlevel(integer[], integer, boolean, integer[]); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatereorderlevel(integer[], integer, boolean, integer[]) RETURNS SETOF reordlvl LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteids ALIAS FOR $1; pDays ALIAS FOR $2; pAddLeadtime ALIAS FOR $3; pPeriodIds ALIAS FOR $4; _icursor INTEGER := 1; _pcursor INTEGER := 1; _totalUsage NUMERIC := 0; _totalDays INTEGER := 0; _reorderLevel INTEGER := 0; _result TEXT; _usage NUMERIC; _averageUsage NUMERIC; _row reordlvl %ROWTYPE; BEGIN -- Validate IF (pItemsiteIds[1] IS NULL OR pPeriodIds[1] IS NULL) THEN RETURN; END IF; -- Calculate total days FOR _pcursor IN 1..ARRAY_UPPER(pPeriodIds,1) LOOP _totalDays := ( _totalDays + ( findPeriodEnd(pPeriodIds[_pcursor]) - findPeriodStart(pPeriodIds[_pcursor]) + 1 ) ); END LOOP; -- Loop through each itemsite id FOR _icursor IN 1..ARRAY_UPPER(pItemsiteIds,1) LOOP -- Get itemsite data SELECT itemsite_id, item_id, warehous_code, item_number, item_descrip1, itemsite_leadtime, 0, itemsite_reorderlevel, 0, 0, 0 INTO _row FROM itemsite JOIN item ON (itemsite_item_id=item_id) JOIN whsinfo ON (itemsite_warehous_id=warehous_id) WHERE (itemsite_id=pItemsiteIds[_icursor]); IF (FOUND) THEN IF (pAddLeadtime) THEN _row.reordlvl_daysofstock := pDays + _row.reordlvl_leadtime; ELSE _row.reordlvl_daysofstock := pDays; END IF; -- Loop through each period id FOR _pcursor IN 1..ARRAY_UPPER(pPeriodIds,1) LOOP -- Sum days and usage shipping and inventory transactions SELECT COALESCE(SUM(invhist_invqty), 0) INTO _usage FROM invhist WHERE ( (invhist_itemsite_id=pItemsiteIds[_icursor]) AND ( invhist_transdate::DATE BETWEEN findPeriodStart(pPeriodIds[_pcursor]) AND findPeriodEnd(pPeriodIds[_pcursor]) ) AND (invhist_transtype IN ('SH', 'IM')) ); _totalUsage := (_totalUsage + _usage); END LOOP; -- Calculate reorder level IF (_totalDays > 0) THEN _reorderLevel := round(_totalUsage / _totalDays * _row.reordlvl_daysofstock); END IF; IF (_reorderLevel <= 0) THEN _reorderLevel := 0; END IF; SELECT itemsite_stocked INTO _result from itemsite WHERE (itemsite_id=pItemsiteIds[_icursor]); IF (_reorderLevel = 0 AND _result='t') THEN _reorderLevel := 1; END IF; -- Set values _row.reordlvl_total_days := _totalDays; _row.reordlvl_total_usage := _totalUsage; _row.reordlvl_calc_level := _reorderLevel; -- Return result RETURN NEXT _row; END IF; _usage := 0; _averageUsage := 0; _totalUsage := 0; _reorderLevel := 0; END LOOP; RETURN; END; $_$; ALTER FUNCTION public.updatereorderlevel(integer[], integer, boolean, integer[]) OWNER TO admin; -- -- Name: updateretainedearnings(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updateretainedearnings(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pYearPeriodid ALIAS FOR $1; _r RECORD; _n RECORD; _c RECORD; _beginningPeriodid INTEGER; _trialbalid INTEGER; _accntid INTEGER; _totalProfitLoss NUMERIC; _periodid INTEGER; _forwardupdate INTEGER; BEGIN -- First thing we need to do is to get the yearperiod SELECT * INTO _r FROM yearperiod where yearperiod_id = pYearPeriodid; IF (NOT FOUND) THEN RETURN -6; END IF; -- Now we need to find the next yearperiod SELECT * INTO _n FROM yearperiod WHERE yearperiod_start = _r.yearperiod_end + interval '1 day'; IF (NOT FOUND) THEN RETURN -4; END IF; -- Now we have to find where to stick the end of year data SELECT period_id INTO _periodid FROM period WHERE period_start = _n.yearperiod_start; IF (NOT FOUND) THEN RETURN -8; END IF; -- Loop through companies and process each one IF (coalesce(fetchMetricValue('GLCompanySize'),0) = 0) THEN -- Process for installs not using company segment -- Now we need to get the default account number for year end closing SELECT CAST ( metric_value AS integer ) INTO _accntid FROM metric WHERE metric_name = 'YearEndEquityAccount'; IF (NOT FOUND) THEN RETURN -7; END IF; -- So far so good. Now we need to calculate the profit-loss for the year that we are closing SELECT SUM(gltrans_amount) INTO _totalProfitLoss FROM gltrans, accnt WHERE ( (gltrans_accnt_id = accnt_id) AND (accnt_type IN ( 'R', 'E' ) ) AND (gltrans_posted) AND (NOT gltrans_deleted) AND (gltrans_date between _r.yearperiod_start and _r.yearperiod_end ) ); IF (_totalProfitLoss IS NULL) THEN _totalProfitLoss := 0; END IF; -- Get the trailbal_id SELECT trialbal_id INTO _trialbalid FROM trialbal WHERE ( (trialbal_period_id = _periodid ) AND (trialbal_accnt_id = _accntid) ); IF (NOT FOUND) THEN RETURN -9; END IF; -- Lets do the update for the trialbal UPDATE trialbal SET trialbal_beginning = trialbal_beginning - trialbal_yearend + _totalProfitLoss, trialbal_ending = trialbal_beginning - trialbal_yearend - trialbal_debits + trialbal_credits + _totalProfitLoss, trialbal_yearend = _totalProfitLoss WHERE trialbal_id = _trialbalid; -- Now the forward update SELECT forwardupdatetrialbalance(_trialbalid) INTO _forwardupdate; ELSE -- Process for a multi-company set up FOR _c IN SELECT company_number, company_yearend_accnt_id FROM company LOOP -- Calculate the profit-loss for the year that we are closing SELECT SUM(gltrans_amount) INTO _totalProfitLoss FROM gltrans, accnt WHERE ( (gltrans_accnt_id = accnt_id) AND (accnt_type IN ( 'R', 'E' ) ) AND (gltrans_posted) AND (NOT gltrans_deleted) AND (accnt_company = _c.company_number) AND (gltrans_date between _r.yearperiod_start and _r.yearperiod_end ) ); IF(_totalProfitLoss IS NULL) THEN _totalProfitLoss := 0; END IF; -- Get the trailbal_id SELECT trialbal_id INTO _trialbalid FROM trialbal JOIN accnt ON (trialbal_accnt_id=accnt_id) WHERE ( (trialbal_period_id = _periodid ) AND (trialbal_accnt_id = _c.company_yearend_accnt_id) ); IF (NOT FOUND) THEN -- Create a trial balance record SELECT NEXTVAL('trialbal_trialbal_id_seq') INTO _trialbalid; INSERT INTO trialbal ( trialbal_id, trialbal_accnt_id, trialbal_period_id, trialbal_beginning, trialbal_dirty, trialbal_ending, trialbal_credits, trialbal_debits, trialbal_yearend ) VALUES ( _trialbalid, _c.company_yearend_accnt_id, _periodid, _totalProfitLoss, TRUE, _totalProfitLoss, 0, 0, _totalProfitLoss ); ELSE -- Lets do the update for the trialbal UPDATE trialbal SET trialbal_beginning = trialbal_beginning - trialbal_yearend + _totalProfitLoss, trialbal_ending = trialbal_beginning - trialbal_yearend - trialbal_debits + trialbal_credits + _totalProfitLoss, trialbal_yearend = _totalProfitLoss WHERE trialbal_id = _trialbalid; END IF; -- Now the forward update SELECT forwardupdatetrialbalance(_trialbalid) INTO _forwardupdate; END LOOP; END IF; RETURN 0; END; $_$; ALTER FUNCTION public.updateretainedearnings(integer) OWNER TO admin; -- -- Name: updatesoracost(integer, text, boolean, numeric, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatesoracost(integer, text, boolean, numeric, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCosttype ALIAS FOR $2; pLevel ALIAS FOR $3; pCost ALIAS FOR $4; pUpdateActual ALIAS FOR $5; BEGIN IF (pUpdateActual) THEN RETURN updateCost(pItemid, pCosttype, pLevel, pCost); ELSE RETURN updateStdCost(pItemid, pCosttype, pLevel, pCost); END IF; END; $_$; ALTER FUNCTION public.updatesoracost(integer, text, boolean, numeric, boolean) OWNER TO admin; -- -- Name: updatestdcost(integer, numeric, numeric, text, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatestdcost(integer, numeric, numeric, text, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemcostid ALIAS FOR $1; pNewcost ALIAS FOR $2; pOldcost ALIAS FOR $3; pDocNumber ALIAS FOR $4; pNotes ALIAS FOR $5; _itemcostid INTEGER; _r RECORD; _newcost NUMERIC; _oldcost NUMERIC; BEGIN IF (pNewcost IS NULL) THEN _newcost := 0; ELSE _newcost := pNewcost; END IF; IF (pOldcost IS NULL) THEN _oldcost := 0; ELSE _oldcost := pOldcost; END IF; IF (_newcost > 0) THEN UPDATE itemcost SET itemcost_stdcost=_newcost, itemcost_posted=CURRENT_DATE WHERE (itemcost_id=pItemcostid); END IF; -- Distribute to G/L, debit Inventory Asset, credit Inventory Cost Variance FOR _r IN SELECT itemsite_id, (itemsite_qtyonhand + itemsite_nnqoh) AS totalQty, costcat_invcost_accnt_id, costcat_asset_accnt_id, itemsite_costmethod FROM itemcost, itemsite, costcat WHERE ( (itemsite_item_id=itemcost_item_id) AND (itemsite_costcat_id=costcat_id) AND (itemsite_costmethod != 'A') AND ((itemsite_qtyonhand + itemsite_nnqoh) <> 0) AND (itemcost_id=pItemcostid) ) LOOP -- IF (_newcost <> _oldcost) THEN -- RAISE NOTICE 'itemcost_id = %, Qty = %, Old Cost = %, New Cost = %', pItemcostid, _r.totalQty, _oldcost, _newcost; -- END IF; PERFORM insertGLTransaction( 'P/D', '', pDocNumber, pNotes, _r.costcat_invcost_accnt_id, _r.costcat_asset_accnt_id, _r.itemsite_id, ((_newcost - _oldcost) * _r.totalQty), CURRENT_DATE ); -- Update Itemsite Value if not Average Cost IF (_r.itemsite_costmethod <> 'A') THEN -- RAISE NOTICE 'itemsite_id = %, Qty = %, New Cost = %', _r.itemsite_id, _r.totalQty, _newcost; UPDATE itemsite SET itemsite_value=(_r.totalQty * stdCost(itemsite_item_id)) WHERE (itemsite_id=_r.itemsite_id); END IF; END LOOP; IF (_newcost = 0) THEN DELETE FROM itemcost WHERE (itemcost_id=pItemcostid); RETURN FALSE; END IF; IF ( SELECT metric_value FROM metric WHERE ((metric_name = 'EnableAsOfQOH') AND (metric_value = 't'))) THEN IF (pNewcost IS NOT NULL) THEN _newcost := pNewcost; END IF; IF (pOldcost IS NULL) THEN _oldcost := 0; ELSE _oldcost := pOldcost; END IF; -- Distribute to G/L, debit Inventory Asset, credit Inventory Cost Variance PERFORM postValueIntoInvBalance( itemsite_id, current_date, asofinvqty(itemsite_id,current_date), asofinvnn(itemsite_id,current_date), _oldcost, _newcost) FROM itemsite JOIN item ON (itemsite_item_id=item_id) JOIN itemcost ON (itemcost_item_id=item_id) WHERE((itemsite_costmethod = 'S') AND (itemcost_id=pItemcostid)); END IF; RETURN TRUE; END; $_$; ALTER FUNCTION public.updatestdcost(integer, numeric, numeric, text, text) OWNER TO admin; -- -- Name: updatestdcost(integer, text, boolean, numeric); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatestdcost(integer, text, boolean, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCostType ALIAS FOR $2; pLevel ALIAS FOR $3; pCost ALIAS FOR $4; _newCost NUMERIC; _oldCost NUMERIC := 0; _itemcostid INTEGER; _updateRet BOOLEAN; _itemNumber TEXT; BEGIN IF (pCost IS NULL) THEN _newCost = 0; ELSE _newCost = pCost; END IF; SELECT itemcost_id, itemcost_stdCost, item_number INTO _itemcostid, _oldCost, _itemNumber FROM itemcost, costelem, item WHERE ((itemcost_costelem_id=costelem_id) AND (itemcost_item_id=item_id) AND (item_id=pItemid) AND (itemcost_lowlevel=pLevel) AND (costelem_type=pCosttype)); -- RAISE NOTICE 'updateStdCost(%, %, %, %) has itemcost_id % and stdcost %', -- pItemid, pCostType, plevel, _newCost, _itemcostid, _oldCost; IF (NOT FOUND) AND (_newCost > 0) THEN SELECT NEXTVAL('itemcost_itemcost_id_seq') INTO _itemcostid; RAISE NOTICE 'updateStdCost() inserting itemcost_id %', _itemcostid; INSERT INTO itemcost (itemcost_id, itemcost_item_id, itemcost_costelem_id, itemcost_lowlevel, itemcost_stdcost, itemcost_posted, itemcost_actcost, itemcost_updated) SELECT _itemcostid, pItemid, costelem_id, pLevel, _newCost, CURRENT_DATE, 0, CURRENT_DATE FROM costelem WHERE (costelem_type=pCosttype); END IF; IF (_itemcostid IS NOT NULL) THEN SELECT updateStdCost(_itemcostid, _newCost, _oldCost, 'Post Cost', ('Set Standard Cost - ' || pCosttype || ' for item ' || _itemNumber)) INTO _updateRet; IF (_updateRet) THEN RETURN _itemcostid; END IF; END IF; RETURN -1; END; $_$; ALTER FUNCTION public.updatestdcost(integer, text, boolean, numeric) OWNER TO admin; -- -- Name: updatetodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, boolean, text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatetodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, boolean, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN updateTodoItem($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, NULL); END; $_$; ALTER FUNCTION public.updatetodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, boolean, text) OWNER TO admin; -- -- Name: updatetodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, boolean, text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION updatetodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, boolean, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ptodoitemid ALIAS FOR $1; pusername ALIAS FOR $2; pname ALIAS FOR $3; pdesc ALIAS FOR $4; pincdtid ALIAS FOR $5; pcrmacctid ALIAS FOR $6; pOpheadid ALIAS FOR $7; pstarted ALIAS FOR $8; pdue ALIAS FOR $9; pstatus ALIAS FOR $10; passigned ALIAS FOR $11; pcompleted ALIAS FOR $12; ppriority ALIAS FOR $13; pnotes ALIAS FOR $14; pactive ALIAS FOR $15; powner ALIAS FOR $16; pcntctid ALIAS FOR $17; _priority INTEGER := ppriority; _status CHARACTER(1) := pstatus; _incdtid INTEGER := pincdtid; _crmacctid INTEGER := pcrmacctid; _opheadid INTEGER := pOpheadid; _assigned DATE := passigned; _active BOOL := pactive; _result INTEGER; BEGIN IF (pusername IS NULL OR pusername = '') THEN RETURN -1; END IF; IF (pname IS NULL OR pname = '') THEN RETURN -2; END IF; IF (pdue IS NULL) THEN RETURN -3; END IF; IF (ptodoitemid IS NULL OR ptodoitemid <= 0) THEN RETURN -10; END IF; IF (pcompleted IS NOT NULL) THEN _status := 'C'; ELSIF (pstatus IS NULL AND pstarted IS NOT NULL) THEN _status := 'I'; ELSIF (pstatus IS NULL) THEN _status := 'N'; END IF; IF (_incdtid <= 0) THEN _incdtid := NULL; END IF; IF (_crmacctid <= 0) THEN _crmacctid := NULL; END IF; IF (_opheadid <= 0) THEN _opheadid := NULL; END IF; IF (_priority <= 0) THEN _priority := NULL; END IF; IF (_assigned IS NULL) THEN _assigned := CURRENT_DATE; END IF; IF (_active IS NULL) THEN _active := TRUE; END IF; UPDATE todoitem SET todoitem_username=pusername, todoitem_name=pname, todoitem_description=pdesc, todoitem_incdt_id=_incdtid, todoitem_status=_status, todoitem_active=_active, todoitem_start_date=pstarted, todoitem_due_date=pdue, todoitem_assigned_date=_assigned, todoitem_completed_date=pcompleted, todoitem_priority_id=_priority, todoitem_notes=pnotes, todoitem_crmacct_id=_crmacctid, todoitem_ophead_id=_opheadid, todoitem_owner_username=powner, todoitem_cntct_id=pcntctid WHERE (todoitem_id=ptodoitemid); RETURN ptodoitemid; END; $_$; ALTER FUNCTION public.updatetodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, boolean, text, integer) OWNER TO admin; -- -- Name: usedefaultlocation(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION usedefaultlocation(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; _p RECORD; BEGIN SELECT itemsite_location_id, LENGTH(itemsite_location) AS locationlength INTO _p FROM itemsite WHERE (itemsite_id=pItemsiteid); IF (NOT FOUND) THEN RETURN FALSE; ELSIF (_p.itemsite_location_id <> -1) THEN RETURN TRUE; ELSIF (_p.locationlength > 0) THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END; $_$; ALTER FUNCTION public.usedefaultlocation(integer) OWNER TO admin; -- -- Name: usercancreateusers(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION usercancreateusers(text) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT rolcreaterole OR rolsuper FROM pg_roles WHERE rolname=($1); $_$; ALTER FUNCTION public.usercancreateusers(text) OWNER TO admin; -- -- Name: usercanlogin(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION usercanlogin(pusername text) RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _isactive BOOLEAN; _mode TEXT; BEGIN IF (isDBA(pUsername) OR userCanCreateUsers(pUsername)) THEN RETURN TRUE; ELSIF (pg_has_role(pUsername, 'xtrole', 'member')) THEN _mode := COALESCE(fetchMetricText('AllowedUserLogins'), ''); IF (_mode = 'AdminOnly') THEN RETURN FALSE; -- administrators were checked above END IF; IF (_mode NOT IN ('AdminOnly','ActiveOnly','Any')) THEN _mode := 'ActiveOnly'; END IF; SELECT (usrpref_value = 't') INTO _isactive FROM usrpref WHERE usrpref_username = pUsername AND usrpref_name = 'active'; IF (_isactive OR _mode = 'Any') THEN RETURN TRUE; END IF; END IF; RETURN FALSE; END; $$; ALTER FUNCTION public.usercanlogin(pusername text) OWNER TO admin; -- -- Name: userid(text); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION userid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; _userId INTEGER; BEGIN SELECT usesysid INTO _userId FROM pg_user WHERE (usename=pUsername); IF (FOUND) THEN RETURN _userId; ELSE RETURN -1; END IF; END; $_$; ALTER FUNCTION public.userid(text) OWNER TO admin; -- -- Name: validateorderqty(integer, numeric, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION validateorderqty(integer, numeric, boolean) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pQty ALIAS FOR $2; pManual ALIAS FOR $3; _p RECORD; _qty NUMERIC; BEGIN _qty := pQty; SELECT itemsite_useparams, CASE WHEN (itemsite_useparams) THEN itemsite_useparamsmanual ELSE FALSE END AS itemsite_useparamsmanual, CASE WHEN (itemsite_useparams) THEN itemsite_minordqty ELSE 0.0 END AS itemsite_minordqty, CASE WHEN (itemsite_useparams) THEN itemsite_multordqty ELSE 0.0 END AS itemsite_multordqty, item_fractional, item_type INTO _p FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ); IF ( (pManual AND (_p.itemsite_useparamsmanual)) OR ((NOT pManual) AND (_p.itemsite_useparams)) ) THEN IF (_qty < _p.itemsite_minordqty) THEN _qty := _p.itemsite_minordqty; END IF; IF ( (_p.itemsite_multordqty > 0) AND ((_qty % _p.itemsite_multordqty) > 0) ) THEN _qty := ((TRUNC(_qty / _p.itemsite_multordqty) * _p.itemsite_multordqty) + _p.itemsite_multordqty); END IF; END IF; _qty := roundQty(_p.item_fractional, _qty); RETURN _qty; END; $_$; ALTER FUNCTION public.validateorderqty(integer, numeric, boolean) OWNER TO admin; -- -- Name: validlocation(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION validlocation(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLocationid ALIAS FOR $1; pItemsiteid ALIAS FOR $2; _p RECORD; BEGIN SELECT location_restrict INTO _p FROM location, itemsite WHERE ( (location_warehous_id=itemsite_warehous_id) AND (itemsite_id=pItemsiteid) AND (location_id=pLocationid) ); IF (FOUND) THEN IF (_p.location_restrict) THEN SELECT locitem_id INTO _p FROM locitem, itemsite WHERE ( (locitem_item_id=itemsite_item_id) AND (itemsite_id=pItemsiteid) AND (locitem_location_id=pLocationid) ); IF (FOUND) THEN RETURN TRUE; END IF; ELSE RETURN TRUE; END IF; ELSE RETURN FALSE; END IF; RETURN FALSE; END; $_$; ALTER FUNCTION public.validlocation(integer, integer) OWNER TO admin; -- -- Name: valueatshipping(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION valueatshipping(plineitemid integer) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN valueAtShipping('SO', plineitemid); END; $$; ALTER FUNCTION public.valueatshipping(plineitemid integer) OWNER TO admin; -- -- Name: valueatshipping(text, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION valueatshipping(pordertype text, plineitemid integer) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _value NUMERIC := 0.0; BEGIN IF (pordertype NOT IN ('SO', 'TO')) THEN RAISE EXCEPTION '% is not a valid order type', pordertype; END IF; SELECT COALESCE(SUM(shipitem_value), 0.0) INTO _value FROM shipitem JOIN shiphead ON (shipitem_shiphead_id=shiphead_id) WHERE ( (NOT shiphead_shipped) AND (shiphead_order_type=pordertype) AND (shipitem_orderitem_id=plineitemid) ); RETURN _value; END; $$; ALTER FUNCTION public.valueatshipping(pordertype text, plineitemid integer) OWNER TO admin; -- -- Name: voidapcheck(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION voidapcheck(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'voidAPCheck() is deprecated - use voidCheck() instead'; RETURN voidCheck($1); END; $_$; ALTER FUNCTION public.voidapcheck(integer) OWNER TO admin; -- -- Name: voidapopenvoucher(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION voidapopenvoucher(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenid ALIAS FOR $1; BEGIN RETURN voidApopenVoucher(pApopenid, fetchJournalNumber('AP-VO')); END; $_$; ALTER FUNCTION public.voidapopenvoucher(integer) OWNER TO admin; -- -- Name: voidapopenvoucher(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION voidapopenvoucher(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; _apopenid INTEGER; _apcreditapplyid INTEGER; _reference TEXT; _result INTEGER; _sequence INTEGER; _totalAmount_base NUMERIC; _totalAmount NUMERIC; _itemAmount_base NUMERIC; _itemAmount NUMERIC; _test INTEGER; _a RECORD; _d RECORD; _g RECORD; _p RECORD; _n RECORD; _r RECORD; _costx RECORD; _pExplain BOOLEAN; _pLowLevel BOOLEAN; _exchGainFreight NUMERIC; _firstExchDateFreight DATE; _tmpTotal NUMERIC; _glDate DATE; BEGIN _totalAmount_base := 0; _totalAmount := 0; SELECT fetchGLSequence() INTO _sequence; -- Cache APOpen Information SELECT apopen.* INTO _n FROM apopen WHERE ( (apopen_doctype='V') AND (apopen_id=pApopenid) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Void Voucher #% as apopen not found', pApopenid; END IF; -- Cache Voucher Infomation SELECT vohead.*, vend_number || '-' || vend_name || ' ' || vohead_reference AS glnotes, COALESCE(pohead_orderdate, vohead_docdate) AS pohead_orderdate, COALESCE(pohead_curr_id, vohead_curr_id) AS pohead_curr_id INTO _p FROM vohead JOIN vendinfo ON (vend_id=vohead_vend_id) LEFT OUTER JOIN pohead ON (vohead_pohead_id = pohead_id) WHERE (vohead_number=_n.apopen_docnumber); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Void Voucher #% as vohead not found', _n.apopen_docnumber; END IF; _glDate := COALESCE(_p.vohead_gldistdate, _p.vohead_distdate); -- there is no currency gain/loss on items, see issue 3892, -- but there might be on freight, which is first encountered at p/o receipt SELECT recv_date::DATE INTO _firstExchDateFreight FROM recv WHERE (recv_vohead_id = _p.vohead_id); -- Start by handling taxes FOR _r IN SELECT tax_sales_accnt_id, round(sum(taxdetail_tax),2) AS tax, currToBase(_p.vohead_curr_id, round(sum(taxdetail_tax),2), _p.vohead_docdate) AS taxbasevalue FROM tax JOIN calculateTaxDetailSummary('VO', _p.vohead_id, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id, tax_sales_accnt_id LOOP PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', _p.vohead_number, _r.tax_sales_accnt_id, (_r.taxbasevalue * -1), _glDate, _p.glnotes ); _totalAmount_base := (_totalAmount_base - _r.taxbasevalue); _totalAmount := (_totalAmount - _r.tax); END LOOP; -- Loop through the vodist records for the passed vohead that -- are posted against a P/O Item FOR _g IN SELECT DISTINCT poitem_id, voitem_qty, poitem_expcat_id, poitem_invvenduomratio, COALESCE(itemsite_id, -1) AS itemsiteid, COALESCE(itemsite_costcat_id, -1) AS costcatid, COALESCE(itemsite_item_id, -1) AS itemsite_item_id, (SELECT SUM(value) FROM ( SELECT SUM(recv_value) AS value FROM recv WHERE (recv_voitem_id=voitem_id) UNION SELECT SUM(poreject_value)*-1 AS value FROM poreject WHERE (poreject_voitem_id=voitem_id)) as data) AS value_base, (poitem_freight_vouchered / poitem_qty_vouchered) * voitem_qty AS vouchered_freight, currToBase(_p.pohead_curr_id, (poitem_freight_vouchered / poitem_qty_vouchered) * voitem_qty, _firstExchDateFreight ) AS vouchered_freight_base, voitem_freight, currToBase(_p.vohead_curr_id, voitem_freight, _p.vohead_distdate) AS voitem_freight_base FROM vodist, voitem, poitem LEFT OUTER JOIN itemsite ON (poitem_itemsite_id=itemsite_id) WHERE ( (vodist_poitem_id=poitem_id) AND (voitem_poitem_id=poitem_id) AND (voitem_vohead_id=vodist_vohead_id) AND (vodist_vohead_id=_p.vohead_id)) LOOP -- Grab the G/L Accounts IF (_g.costcatid = -1) THEN SELECT pp.accnt_id AS pp_accnt_id, lb.accnt_id AS lb_accnt_id INTO _a FROM expcat, accnt AS pp, accnt AS lb WHERE ( (expcat_purchprice_accnt_id=pp.accnt_id) AND (expcat_liability_accnt_id=lb.accnt_id) AND (expcat_id=_g.poitem_expcat_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Void Voucher #% due to unassigned G/L Accounts.', _p.vohead_number; END IF; ELSE SELECT pp.accnt_id AS pp_accnt_id, lb.accnt_id AS lb_accnt_id INTO _a FROM costcat, accnt AS pp, accnt AS lb WHERE ( (costcat_purchprice_accnt_id=pp.accnt_id) AND (costcat_liability_accnt_id=lb.accnt_id) AND (costcat_id=_g.costcatid) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Void Voucher #% due to unassigned G/L Accounts.', _p.vohead_number; END IF; END IF; -- Clear the Item Amount accumulator _itemAmount_base := 0; _itemAmount := 0; -- Figure out the total posted value for this line item FOR _d IN SELECT vodist_id, vodist_amount, _p.vohead_curr_id, vodist_costelem_id, currToBase(_p.vohead_curr_id, vodist_amount, _p.vohead_distdate) AS vodist_amount_base FROM vodist WHERE ( (vodist_vohead_id=_p.vohead_id) AND (vodist_poitem_id=_g.poitem_id) ) LOOP _pExplain := TRUE; SELECT * INTO _costx FROM itemcost WHERE ( (itemcost_item_id = _g.itemsite_item_id) AND (itemcost_costelem_id = _d.vodist_costelem_id) ); IF (FOUND) THEN _pExplain := _costx.itemcost_lowlevel; END IF; -- Add the Distribution Amount to the Item Amount _itemAmount_base := _itemAmount_base + ROUND(_d.vodist_amount_base, 2); _itemAmount := _itemAmount + _d.vodist_amount; END LOOP; -- Distribute from the clearing account PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), _a.lb_accnt_id, round(_g.value_base + _g.vouchered_freight_base, 2), _glDate, _p.glnotes ); -- Attribute the correct portion to currency gain/loss _exchGainFreight := 0; SELECT currGain(_p.pohead_curr_id, _g.vouchered_freight, _firstExchDateFreight, _p.vohead_distdate ) INTO _exchGainFreight; IF (round(_exchGainFreight, 2) <> 0) THEN PERFORM insertIntoGLSeries(_sequence, 'A/P', 'VO', text(_p.vohead_number), getGainLossAccntId(_a.lb_accnt_id), round(_exchGainFreight, 2) * -1, _glDate, _p.glnotes); END IF; -- Distribute the remaining variance to the Purchase Price Variance account IF (round(_itemAmount_base, 2) <> round(_g.value_base, 2)) THEN _tmpTotal := round(_itemAmount_base, 2) - round(_g.value_base, 2); PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), _a.pp_accnt_id, _tmpTotal, _glDate, _p.glnotes ); END IF; -- Distribute the remaining freight variance to the Purchase Price Variance account IF (round(_g.voitem_freight_base + _exchGainFreight, 2) <> round(_g.vouchered_freight_base, 2)) THEN _tmpTotal := round(_g.voitem_freight_base + _exchGainFreight, 2) - round(_g.vouchered_freight_base, 2); PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), _a.pp_accnt_id, _tmpTotal, _glDate, _p.glnotes ); END IF; -- Add the distribution amount to the total amount to distribute _totalAmount_base := (_totalAmount_base + _itemAmount_base + _g.voitem_freight_base); _totalAmount := (_totalAmount + _itemAmount + _g.voitem_freight); -- Reverse the posting for all the Tagged Receivings for this P/O Item UPDATE recv SET recv_invoiced=FALSE, recv_recvcost_curr_id=basecurrid(), recv_recvcost=0, recv_vohead_id=NULL, recv_voitem_id=NULL FROM poitem WHERE ( (recv_orderitem_id=poitem_id) AND (recv_order_type='PO') AND (recv_orderitem_id=_g.poitem_id) AND (recv_vohead_id=_p.vohead_id) ); -- Reverse the posting for all the Tagged Rejections for this P/O Item UPDATE poreject SET poreject_invoiced=FALSE, poreject_vohead_id=NULL, poreject_voitem_id=NULL WHERE ( (poreject_poitem_id=_g.poitem_id) AND (poreject_vohead_id=_p.vohead_id) ); -- Update the qty and freight vouchered fields UPDATE poitem SET poitem_qty_vouchered = (poitem_qty_vouchered - _g.voitem_qty), poitem_freight_vouchered = (poitem_freight_vouchered - _g.voitem_freight) WHERE (poitem_id=_g.poitem_id); END LOOP; -- Loop through the vodist records for the passed vohead that -- are not posted against a P/O Item -- Skip the tax distributions FOR _d IN SELECT vodist_id, currToBase(_p.vohead_curr_id, vodist_amount, _p.vohead_distdate) AS vodist_amount_base, vodist_amount, vodist_accnt_id, vodist_expcat_id FROM vodist WHERE ( (vodist_vohead_id=_p.vohead_id) AND (vodist_poitem_id=-1) AND (vodist_tax_id=-1) ) LOOP -- Distribute from the misc. account IF (_d.vodist_accnt_id = -1) THEN PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), expcat_exp_accnt_id, round(_d.vodist_amount_base, 2), _glDate, _p.glnotes ) FROM expcat WHERE (expcat_id=_d.vodist_expcat_id); ELSE PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), _d.vodist_accnt_id, round(_d.vodist_amount_base, 2), _glDate, _p.glnotes ); END IF; -- Add the Distribution Amount to the Total Amount _totalAmount_base := _totalAmount_base + ROUND(_d.vodist_amount_base, 2); _totalAmount := _totalAmount + _d.vodist_amount; END LOOP; SELECT insertIntoGLSeries( _sequence, 'A/P', 'VO', text(vohead_number), accnt_id, round(_totalAmount_base, 2) * -1, _glDate, _p.glnotes ) INTO _test FROM vohead LEFT OUTER JOIN accnt ON (accnt_id=findAPAccount(vohead_vend_id)) WHERE ( (findAPAccount(vohead_vend_id)=0 OR accnt_id > 0) -- G/L interface might be disabled AND (vohead_id=_p.vohead_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Void Voucher #% due to an unassigned A/P Account.', _p.vohead_number; END IF; PERFORM postGLSeries(_sequence, pJournalNumber); -- Create the A/P Open Item SELECT NEXTVAL('apopen_apopen_id_seq') INTO _apopenid; _reference := ('Void Voucher #' || _n.apopen_docnumber); INSERT INTO apopen ( apopen_id, apopen_username, apopen_journalnumber, apopen_vend_id, apopen_docnumber, apopen_doctype, apopen_ponumber, apopen_docdate, apopen_duedate, apopen_distdate, apopen_terms_id, apopen_curr_id, apopen_amount, apopen_paid, apopen_open, apopen_notes, apopen_discount, apopen_curr_rate ) SELECT _apopenid, getEffectiveXtUser(), pJournalnumber, apopen_vend_id, apopen_docnumber, 'C', apopen_ponumber, CURRENT_DATE, CURRENT_DATE, CURRENT_DATE, -1, apopen_curr_id, apopen_amount - apopen_paid, 0, TRUE, _reference, TRUE, apopen_curr_rate FROM apopen WHERE (apopen_id=_n.apopen_id); SELECT apcreditapply_id INTO _apcreditapplyid FROM apcreditapply WHERE ( (apcreditapply_source_apopen_id=_apopenid) AND (apcreditapply_target_apopen_id=_n.apopen_id) ); IF (FOUND) THEN UPDATE apcreditapply SET apcreditapply_amount=_n.apopen_amount-_n.apopen_paid WHERE (apcreditapply_id=_apcreditapplyid); ELSE SELECT nextval('apcreditapply_apcreditapply_id_seq') INTO _apcreditapplyid; INSERT INTO apcreditapply ( apcreditapply_id, apcreditapply_source_apopen_id, apcreditapply_target_apopen_id, apcreditapply_amount, apcreditapply_curr_id ) VALUES ( _apcreditapplyid, _apopenid, _n.apopen_id, _n.apopen_amount-_n.apopen_paid, _n.apopen_curr_id ); END IF; SELECT postAPCreditMemoApplication(_apopenid) INTO _result; IF (_result < 0) THEN RAISE EXCEPTION 'Credit application failed with result %.', _result; END IF; -- Reopen all of the P/O Items that were closed by this Voucher UPDATE poitem SET poitem_status='O' FROM voitem WHERE ( (voitem_poitem_id=poitem_id) AND (voitem_close) AND (voitem_vohead_id=_p.vohead_id) ); -- Reopen the P/O UPDATE pohead SET pohead_status='O' WHERE (pohead_id=_p.vohead_pohead_id); -- Mark as voided UPDATE apopen SET apopen_void=TRUE WHERE (apopen_id=_n.apopen_id); RETURN pJournalNumber; END; $_$; ALTER FUNCTION public.voidapopenvoucher(integer, integer) OWNER TO admin; -- -- Name: voidcheck(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION voidcheck(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCheckid ALIAS FOR $1; BEGIN IF ( SELECT (checkhead_void OR checkhead_posted OR checkhead_replaced) FROM checkhead WHERE (checkhead_id=pCheckid) ) THEN RETURN -1; END IF; UPDATE checkhead SET checkhead_void=TRUE WHERE (checkhead_id=pCheckid); RETURN 1; END; $_$; ALTER FUNCTION public.voidcheck(integer) OWNER TO admin; -- -- Name: voidcreditmemo(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION voidcreditmemo(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmheadid ALIAS FOR $1; _r RECORD; _p RECORD; _n RECORD; _glSequence INTEGER := 0; _glJournal INTEGER := 0; _itemlocSeries INTEGER := 0; _invhistid INTEGER; _test INTEGER; _amount NUMERIC; _roundedBase NUMERIC; _totalAmount NUMERIC := 0; _totalRoundedBase NUMERIC := 0; _commissionDue NUMERIC := 0; _toApply NUMERIC; _toClose BOOLEAN; _glDate DATE; _taxBaseValue NUMERIC := 0; BEGIN -- Cache C/M information SELECT cmhead.*, findARAccount(cmhead_cust_id) AS ar_accnt_id, ( SELECT COALESCE(SUM(taxhist_tax), 0) FROM cmheadtax WHERE ( (taxhist_parent_id = cmhead_id) AND (taxhist_taxtype_id = getAdjustmentTaxtypeId()) ) ) AS adjtax INTO _p FROM cmhead WHERE (cmhead_id=pCmheadid); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Void Credit Memo as cmhead not found'; END IF; IF (NOT _p.cmhead_posted) THEN RETURN -10; END IF; -- Cache AROpen Information SELECT aropen.* INTO _n FROM aropen WHERE ( (aropen_doctype='C') AND (aropen_docnumber=_p.cmhead_number) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Void Credit Memo as aropen not found'; END IF; -- Check for ARApplications SELECT arapply_id INTO _test FROM arapply WHERE (arapply_target_aropen_id=_n.aropen_id) OR (arapply_source_aropen_id=_n.aropen_id) LIMIT 1; IF (FOUND) THEN RETURN -20; END IF; _glDate := COALESCE(_p.cmhead_gldistdate, _p.cmhead_docdate); SELECT fetchGLSequence() INTO _glSequence; SELECT fetchJournalNumber('AR-IN') INTO _glJournal; -- Start by handling taxes (reverse sense) FOR _r IN SELECT tax_sales_accnt_id, round(sum(taxdetail_tax),2) AS tax, currToBase(_p.cmhead_curr_id, round(sum(taxdetail_tax),2), _p.cmhead_docdate) AS taxbasevalue FROM tax JOIN calculateTaxDetailSummary('CM', _p.cmhead_id, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id, tax_sales_accnt_id LOOP PERFORM insertIntoGLSeries( _glSequence, 'A/R', 'CM', _p.cmhead_number, _r.tax_sales_accnt_id, (_r.taxbasevalue * -1.0), _glDate, ('Void-' || _p.cmhead_billtoname) ); _totalAmount := _totalAmount + _r.tax * -1; _totalRoundedBase := _totalRoundedBase + _r.taxbasevalue * -1; END LOOP; -- Process line items FOR _r IN SELECT * FROM creditmemoitem WHERE ( (cmitem_cmhead_id=_p.cmhead_id) AND (cmitem_qtycredit <> 0 ) ) LOOP IF (_r.extprice <> 0) THEN -- Debit the Sales Account for the current cmitem (reverse sense) _roundedBase := round(currToBase(_p.cmhead_curr_id, _r.extprice, _p.cmhead_docdate), 2); SELECT insertIntoGLSeries( _glSequence, 'A/R', 'CM', _p.cmhead_number, CASE WHEN _p.cmhead_rahead_id IS NULL THEN getPrjAccntId(_p.cmhead_prj_id, salesaccnt_credit_accnt_id) ELSE getPrjAccntId(_p.cmhead_prj_id, salesaccnt_returns_accnt_id) END, _roundedBase, _glDate, ('Void-' || _p.cmhead_billtoname) ) INTO _test FROM salesaccnt WHERE (salesaccnt_id=findSalesAccnt(_r.cmitem_itemsite_id, 'IS', _p.cmhead_cust_id, _p.cmhead_saletype_id, _p.cmhead_shipzone_id)); IF (NOT FOUND) THEN PERFORM deleteGLSeries(_glSequence); RETURN -11; END IF; END IF; _totalAmount := _totalAmount + round(_r.extprice, 2); _totalRoundedBase := _totalRoundedBase + _roundedBase; END LOOP; -- Credit the Misc. Account for Miscellaneous Charges (reverse sense) IF (_p.cmhead_misc <> 0) THEN _roundedBase := round(currToBase(_p.cmhead_curr_id, _p.cmhead_misc, _p.cmhead_docdate), 2); SELECT insertIntoGLSeries( _glSequence, 'A/R', 'CM', _p.cmhead_number, getPrjAccntId(_p.cmhead_prj_id, accnt_id), _roundedBase, _glDate, ('Void-' ||_p.cmhead_billtoname) ) INTO _test FROM accnt WHERE (accnt_id=_p.cmhead_misc_accnt_id); -- If the Misc. Charges Account was not found then punt IF (NOT FOUND) THEN PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; -- Cache the Misc. Amount distributed _totalAmount := _totalAmount + _p.cmhead_misc; _totalRoundedBase := _totalRoundedBase + _roundedBase; END IF; -- Debit the Freight Account (reverse sense) IF (_p.cmhead_freight <> 0) THEN _roundedBase := round(currToBase(_p.cmhead_curr_id, _p.cmhead_freight, _p.cmhead_docdate), 2); SELECT insertIntoGLSeries( _glSequence, 'A/R', 'CM', _p.cmhead_number, getPrjAccntId(_p.cmhead_prj_id, accnt_id), _roundedBase, _glDate, ('Void-' || _p.cmhead_billtoname) ) INTO _test FROM accnt WHERE (accnt_id=findFreightAccount(_p.cmhead_cust_id)); -- If the Freight Charges Account was not found then punt IF (NOT FOUND) THEN PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; -- Cache the Amount Distributed to Freight _totalAmount := _totalAmount + _p.cmhead_freight; _totalRoundedBase := _totalRoundedBase + _roundedBase; END IF; _totalAmount := _totalAmount; -- Credit the A/R for the total Amount (reverse sense) IF (_totalAmount <> 0) THEN IF (_p.ar_accnt_id != -1) THEN SELECT insertIntoGLSeries( _glSequence, 'A/R', 'CM', _p.cmhead_number, _p.ar_accnt_id, (_totalRoundedBase * -1.0), _glDate, ('Void-' || _p.cmhead_billtoname) ) INTO _test; ELSE PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; END IF; -- Commit the GLSeries; SELECT postGLSeries(_glSequence, _glJournal) INTO _test; IF (_test < 0) THEN PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; -- Delete sales history DELETE FROM cohisttax WHERE (taxhist_parent_id IN (SELECT cohist_id FROM cohist WHERE (cohist_doctype='C' AND cohist_ordernumber=_p.cmhead_number))); DELETE FROM cohist WHERE (cohist_doctype='C' AND cohist_ordernumber=_p.cmhead_number); -- Delete the Invoice aropen item DELETE FROM aropen WHERE (aropen_doctype='C' AND aropen_docnumber=_p.cmhead_number); -- Handle the Inventory and G/L Transactions for any returned Inventory where cmitem_updateinv is true (reverse sense) FOR _r IN SELECT cmitem_itemsite_id AS itemsite_id, cmitem_id, (cmitem_qtyreturned * cmitem_qty_invuomratio) AS qty, cmhead_number, cmhead_cust_id AS cust_id, item_number, cmhead_prj_id AS prj_id, cmhead_saletype_id AS saletype_id, cmhead_shipzone_id AS shipzone_id FROM cmhead, cmitem, itemsite, item WHERE ( (cmitem_cmhead_id=cmhead_id) AND (cmitem_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (cmitem_qtyreturned <> 0) AND (cmitem_updateinv) AND (cmhead_id=_p.cmhead_id) ) LOOP -- Return credited stock to inventory IF (_itemlocSeries = 0) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; END IF; SELECT postInvTrans( itemsite_id, 'RS', (_r.qty * -1), 'S/O', 'CM', _r.cmhead_number, '', ('Credit Voided ' || _r.item_number), costcat_asset_accnt_id, getPrjAccntId(_r.prj_id, resolveCOSAccount(itemsite_id, _r.cust_id, _r.saletype_id, _r.shipzone_id)), _itemlocSeries, _glDate) INTO _invhistid FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id) ); END LOOP; -- Update coitem to reflect the returned qty where cmitem_updateinv is true (reverse sense) FOR _r IN SELECT cmitem_qtyreturned, cmitem_itemsite_id, cohead_id FROM cmitem, cmhead, invchead, cohead WHERE ( (cmitem_cmhead_id=cmhead_id) AND (cmhead_invcnumber=invchead_invcnumber) AND (invchead_ordernumber=cohead_number) AND (cmitem_qtyreturned <> 0) AND (cmitem_updateinv) AND (cmhead_id=_p.cmhead_id) ) LOOP UPDATE coitem SET coitem_qtyreturned = (coitem_qtyreturned + (_r.cmitem_qtyreturned * -1.0)) WHERE coitem_id IN ( SELECT coitem_id FROM coitem WHERE ( (coitem_cohead_id=_r.cohead_id) AND (coitem_itemsite_id = _r.cmitem_itemsite_id) ) LIMIT 1 ); END LOOP; -- Mark the cmhead as voided UPDATE cmhead SET cmhead_void=TRUE WHERE (cmhead_id=_p.cmhead_id); RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.voidcreditmemo(integer) OWNER TO admin; -- -- Name: voidinvoice(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION voidinvoice(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcheadid ALIAS FOR $1; _glSequence INTEGER := 0; _glJournal INTEGER := 0; _itemlocSeries INTEGER := 0; _aropenid INTEGER := 0; _invhistid INTEGER := 0; _amount NUMERIC; _roundedBase NUMERIC; _r RECORD; _p RECORD; _n RECORD; _test INTEGER; _totalAmount NUMERIC := 0; _totalRoundedBase NUMERIC := 0; _totalAmountBase NUMERIC := 0; _appliedAmount NUMERIC := 0; _commissionDue NUMERIC := 0; _tmpAccntId INTEGER; _tmpCurrId INTEGER; _firstExchDate DATE; _glDate DATE; _exchGain NUMERIC := 0; BEGIN -- Cache Invoice information SELECT invchead.*, findFreightAccount(invchead_cust_id) AS freightaccntid, findARAccount(invchead_cust_id) AS araccntid, aropen_id, ( SELECT COALESCE(SUM(taxhist_tax), 0) FROM invcheadtax WHERE ( (taxhist_parent_id = invchead_id) AND (taxhist_taxtype_id = getFreightTaxtypeId()) ) ) AS freighttax, ( SELECT COALESCE(SUM(taxhist_tax), 0) FROM invcheadtax WHERE ( (taxhist_parent_id = invchead_id) AND (taxhist_taxtype_id = getAdjustmentTaxtypeId()) ) ) AS adjtax INTO _p FROM invchead JOIN aropen ON (aropen_doctype='I' AND aropen_docnumber=invchead_invcnumber) WHERE (invchead_id=pInvcheadid); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Void Invoice as invchead not found'; END IF; IF (NOT _p.invchead_posted) THEN RETURN -10; END IF; -- Cache AROpen Information SELECT aropen.* INTO _n FROM aropen WHERE ( (aropen_doctype='I') AND (aropen_docnumber=_p.invchead_invcnumber) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Void Invoice as aropen not found'; END IF; -- Check for ARApplications SELECT arapply_id INTO _test FROM arapply WHERE (arapply_target_aropen_id=_n.aropen_id) LIMIT 1; IF (FOUND) THEN RETURN -20; END IF; SELECT fetchGLSequence() INTO _glSequence; SELECT fetchJournalNumber('AR-IN') INTO _glJournal; _glDate := COALESCE(_p.invchead_gldistdate, _p.invchead_invcdate); -- the 1st MC iteration used the cohead_orderdate so we could get curr exch -- gain/loss between the sales and invoice dates, but see issue 3892. leave -- this condition TRUE until we make this configurable or decide not to. IF TRUE THEN _firstExchDate := _p.invchead_invcdate; ELSE -- can we save a select by using: _firstExchDate := _p.invchead_orderdate; SELECT cohead_orderdate INTO _firstExchDate FROM cohead WHERE (cohead_number = _p.invchead_ordernumber); END IF; -- Start by handling taxes (reverse sense) FOR _r IN SELECT tax_sales_accnt_id, round(sum(taxdetail_tax),2) AS tax, currToBase(_p.invchead_curr_id, round(sum(taxdetail_tax),2), _firstExchDate) AS taxbasevalue FROM tax JOIN calculateTaxDetailSummary('I', _p.invchead_id, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id, tax_sales_accnt_id LOOP PERFORM insertIntoGLSeries( _glSequence, 'A/R', 'IN', _p.invchead_invcnumber, _r.tax_sales_accnt_id, (_r.taxbasevalue * -1.0), _glDate, ('Void-' || _p.invchead_billto_name) ); _totalAmount := _totalAmount + _r.tax; _totalRoundedBase := _totalRoundedBase + _r.taxbasevalue; END LOOP; -- March through the Non-Misc. Invcitems FOR _r IN SELECT * FROM invoiceitem WHERE ( (invcitem_invchead_id = _p.invchead_id) AND (invcitem_item_id <> -1) ) LOOP -- Cache the amount due for this line _amount := _r.extprice; IF (_amount > 0) THEN -- Credit the Sales Account for the invcitem item (reverse sense) IF (_r.itemsite_id IS NULL) THEN SELECT getPrjAccntId(_p.invchead_prj_id, salesaccnt_sales_accnt_id) INTO _tmpAccntId FROM salesaccnt WHERE (salesaccnt_id=findSalesAccnt(_r.invcitem_item_id, 'I', _p.invchead_cust_id, _p.invchead_saletype_id, _p.invchead_shipzone_id)); ELSE SELECT getPrjAccntId(_p.invchead_prj_id, salesaccnt_sales_accnt_id) INTO _tmpAccntId FROM salesaccnt WHERE (salesaccnt_id=findSalesAccnt(_r.itemsite_id, 'IS', _p.invchead_cust_id, _p.invchead_saletype_id, _p.invchead_shipzone_id)); END IF; -- If the Sales Account Assignment was not found then punt IF (NOT FOUND) THEN PERFORM deleteGLSeries(_glSequence); RETURN -11; END IF; _roundedBase := round(currToBase(_p.invchead_curr_id, _amount, _firstExchDate), 2); SELECT insertIntoGLSeries( _glSequence, 'A/R', 'IN', _p.invchead_invcnumber, _tmpAccntId, (_roundedBase * -1.0), _glDate, ('Void-' || _p.invchead_billto_name) ) INTO _test; _totalAmount := (_totalAmount + _amount); _totalRoundedBase := _totalRoundedBase + _roundedBase; _commissionDue := (_commissionDue + (_amount * _p.invchead_commission)); END IF; _totalAmount := _totalAmount; _totalRoundedBase := _totalRoundedBase; END LOOP; -- March through the Misc. Invcitems FOR _r IN SELECT * FROM invoiceitem JOIN salescat ON (salescat_id = invcitem_salescat_id) WHERE ( (invcitem_item_id = -1) AND (invcitem_invchead_id=_p.invchead_id) ) LOOP -- Cache the amount due for this line and the commission due for such _amount := _r.extprice; IF (_amount > 0) THEN -- Credit the Sales Account for the invcitem item (reverse sense) _roundedBase = round(currToBase(_p.invchead_curr_id, _amount, _firstExchDate), 2); SELECT insertIntoGLSeries( _glSequence, 'A/R', 'IN', _p.invchead_invcnumber, getPrjAccntId(_p.invchead_prj_id, _r.salescat_sales_accnt_id), (_roundedBase * -1.0), _glDate, ('Void-' || _p.invchead_billto_name) ) INTO _test; IF (_test < 0) THEN PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; _totalAmount := (_totalAmount + _amount); _totalRoundedBase := _totalRoundedBase + _roundedBase; _commissionDue := (_commissionDue + (_amount * _p.invchead_commission)); END IF; END LOOP; -- Credit the Freight Account for Freight Charges (reverse sense) IF (_p.invchead_freight <> 0) THEN IF (_p.freightaccntid <> -1) THEN _roundedBase = round(currToBase(_p.invchead_curr_id, _p.invchead_freight, _firstExchDate), 2); SELECT insertIntoGLSeries( _glSequence, 'A/R', 'IN', _p.invchead_invcnumber, getPrjAccntId(_p.invchead_prj_id,_p.freightaccntid), (_roundedBase * -1.0), _glDate, ('Void-' || _p.invchead_billto_name) ) INTO _test; -- Cache the Freight Amount distributed _totalAmount := (_totalAmount + _p.invchead_freight); _totalRoundedBase := _totalRoundedBase + _roundedBase; ELSE _test := -14; END IF; -- If the Freight Account was not found then punt IF (_test < 0) THEN PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; END IF; -- Credit the Misc. Account for Miscellaneous Charges (reverse sense) IF (_p.invchead_misc_amount <> 0) THEN _roundedBase := round(currToBase(_p.invchead_curr_id, _p.invchead_misc_amount, _firstExchDate), 2); SELECT insertIntoGLSeries( _glSequence, 'A/R', 'IN', _p.invchead_invcnumber, getPrjAccntId(_p.invchead_prj_id, _p.invchead_misc_accnt_id), (_roundedBase * -1.0), _glDate, ('Void-' || _p.invchead_billto_name) ) INTO _test; -- If the Misc. Charges Account was not found then punt IF (_test < 0) THEN PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; -- Cache the Misc. Amount distributed _totalAmount := (_totalAmount + _p.invchead_misc_amount); _totalRoundedBase := _totalRoundedBase + _roundedBase; END IF; -- ToDo: handle rounding errors (reverse sense) _exchGain := currGain(_p.invchead_curr_id, _totalAmount, _firstExchDate, _glDate); IF (_exchGain <> 0) THEN SELECT insertIntoGLSeries( _glSequence, 'A/R', 'IN', _p.invchead_invcnumber, getGainLossAccntId(_p.araccntid), round(_exchGain, 2), _glDate, ('Void-' || _p.invchead_billto_name) ) INTO _test ; IF (_test < 0) THEN PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; END IF; -- Debit A/R for the total Amount (reverse sense) IF (_totalRoundedBase <> 0) THEN IF (_p.araccntid != -1) THEN SELECT insertIntoGLSeries( _glSequence, 'A/R', 'IN', _p.invchead_invcnumber, _p.araccntid, round(_totalRoundedBase, 2), _glDate, ('Void-' || _p.invchead_billto_name) ) INTO _test; ELSE PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; END IF; -- Commit the GLSeries; SELECT postGLSeries(_glSequence, _glJournal) INTO _test; IF (_test < 0) THEN PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; -- Delete sales history DELETE FROM cohisttax WHERE (taxhist_parent_id IN (SELECT cohist_id FROM cohist WHERE (cohist_doctype='I' AND cohist_invcnumber=_p.invchead_invcnumber))); DELETE FROM cohist WHERE (cohist_doctype='I' AND cohist_invcnumber=_p.invchead_invcnumber); -- Create the Credit aropen item SELECT nextval('aropen_aropen_id_seq') INTO _aropenid; INSERT INTO aropen ( aropen_id, aropen_username, aropen_journalnumber, aropen_open, aropen_posted, aropen_cust_id, aropen_ponumber, aropen_docnumber, aropen_applyto, aropen_doctype, aropen_docdate, aropen_duedate, aropen_distdate, aropen_terms_id, aropen_amount, aropen_paid, aropen_salesrep_id, aropen_commission_due, aropen_commission_paid, aropen_ordernumber, aropen_notes, aropen_cobmisc_id, aropen_curr_id ) VALUES ( _aropenid, getEffectiveXtUser(), _glJournal, TRUE, FALSE, _p.invchead_cust_id, _p.invchead_ponumber, _p.invchead_invcnumber, _p.invchead_invcnumber, 'C', _p.invchead_invcdate, determineDueDate(_p.invchead_terms_id, _p.invchead_invcdate), _glDate, _p.invchead_terms_id, round(_totalAmount, 2), round(_totalAmount, 2), _p.invchead_salesrep_id, _commissionDue, FALSE, _p.invchead_ordernumber::text, _p.invchead_notes, pInvcheadid, _p.invchead_curr_id ); -- Alter the Invoice A/R Open Item to reflect the application UPDATE aropen SET aropen_paid = round(_totalAmount, 2) WHERE (aropen_id=_p.aropen_id); -- Record the application INSERT INTO arapply ( arapply_cust_id, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_fundstype, arapply_refnumber, arapply_applied, arapply_closed, arapply_postdate, arapply_distdate, arapply_journalnumber, arapply_curr_id ) VALUES ( _p.invchead_cust_id, _aropenid, 'C', _p.invchead_invcnumber, _p.aropen_id, 'I', _p.invchead_invcnumber, '', '', round(_totalAmount, 2), TRUE, CURRENT_DATE, _p.invchead_invcdate, 0, _p.invchead_curr_id ); -- Handle the Inventory and G/L Transactions for any billed Inventory where invcitem_updateinv is true (reverse sense) FOR _r IN SELECT itemsite_id AS itemsite_id, invcitem_id, (invcitem_billed * invcitem_qty_invuomratio) AS qty, invchead_invcnumber, invchead_cust_id AS cust_id, item_number, invchead_prj_id AS prj_id, invchead_saletype_id AS saletype_id, invchead_shipzone_id AS shipzone_id FROM invchead JOIN invcitem ON ( (invcitem_invchead_id=invchead_id) AND (invcitem_billed <> 0) AND (invcitem_updateinv) ) JOIN itemsite ON ( (itemsite_item_id=invcitem_item_id) AND (itemsite_warehous_id=invcitem_warehous_id) ) JOIN item ON (item_id=invcitem_item_id) WHERE (invchead_id=_p.invchead_id) LOOP -- Issue billed stock from inventory IF (_itemlocSeries = 0) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; END IF; SELECT postInvTrans( itemsite_id, 'SH', (_r.qty * -1.0), 'S/O', 'IN', _r.invchead_invcnumber, '', ('Invoice Voided ' || _r.item_number), getPrjAccntId(_r.prj_id, resolveCOSAccount(itemsite_id, _r.cust_id, _r.saletype_id, _r.shipzone_id)), costcat_asset_accnt_id, _itemlocSeries, _glDate) INTO _invhistid FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id) ); END LOOP; -- Reopen Billing UPDATE shipitem SET shipitem_invoiced=FALSE, shipitem_invcitem_id=NULL WHERE (shipitem_invcitem_id IN (SELECT invcitem_id FROM invcitem WHERE (invcitem_invchead_id=_p.invchead_id))); UPDATE cobill SET cobill_invcnum=NULL, cobill_invcitem_id=NULL WHERE (cobill_invcitem_id IN (SELECT invcitem_id FROM invcitem WHERE (invcitem_invchead_id=_p.invchead_id))); UPDATE cobmisc SET cobmisc_posted=FALSE, cobmisc_invcnumber=NULL, cobmisc_invchead_id=NULL WHERE (cobmisc_invchead_id=_p.invchead_id); -- Mark the invoice as voided UPDATE invchead SET invchead_void=TRUE, invchead_notes=(invchead_notes || 'Voided on ' || current_date || ' by ' || getEffectiveXtUser()) WHERE (invchead_id=_p.invchead_id); RETURN _itemlocSeries; END; $_$; ALTER FUNCTION public.voidinvoice(integer) OWNER TO admin; -- -- Name: voidpostedapcheck(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION voidpostedapcheck(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'voidPostedAPCheck() is deprecated - use voidPostedCheck() instead'; RETURN voidPostedCheck($1, fetchJournalNumber('AP-CK'), CURRENT_DATE); END; $_$; ALTER FUNCTION public.voidpostedapcheck(integer) OWNER TO admin; -- -- Name: voidpostedapcheck(integer, integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION voidpostedapcheck(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'voidPostedAPCheck() is deprecated - use voidPostedCheck() instead'; RETURN voidPostedCheck($1, $2, CURRENT_DATE); END; $_$; ALTER FUNCTION public.voidpostedapcheck(integer, integer) OWNER TO admin; -- -- Name: voidpostedapcheck(integer, integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION voidpostedapcheck(integer, integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'voidPostedAPCheck() is deprecated - use voidPostedCheck() instead'; RETURN voidPostedCheck($1, $2, $3); END; $_$; ALTER FUNCTION public.voidpostedapcheck(integer, integer, date) OWNER TO admin; -- -- Name: voidpostedcheck(integer, integer, date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION voidpostedcheck(integer, integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCheckid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pVoidDate ALIAS FOR $3; _amount_base NUMERIC := 0; _result INTEGER; _apopenid INTEGER; _credit_glaccnt INTEGER; _docnumber TEXT; _exchGain NUMERIC := 0; _exchGainTmp NUMERIC := 0; _gltransNote TEXT; _p RECORD; _r RECORD; _sequence INTEGER; _amount_check NUMERIC := 0; BEGIN SELECT fetchGLSequence() INTO _sequence; SELECT checkhead.*, checkhead_amount / checkhead_curr_rate AS checkhead_amount_base, bankaccnt_accnt_id AS bankaccntid, findPrepaidAccount(checkhead_recip_id) AS prepaidaccntid, checkrecip.* INTO _p FROM bankaccnt, checkhead LEFT OUTER JOIN checkrecip ON ((checkrecip_type=checkhead_recip_type) AND (checkrecip_id=checkhead_recip_id)) WHERE ((checkhead_bankaccnt_id=bankaccnt_id) AND (checkhead_id=pCheckid)); IF (NOT _p.checkhead_posted) THEN RETURN -10; END IF; IF (_p.checkrecip_id IS NULL) THEN -- outer join failed RETURN -11; END IF; -- Cannot void if already reconciled SELECT trans_id INTO _result FROM ( SELECT gltrans_id AS trans_id FROM gltrans WHERE ((gltrans_doctype='CK') AND (gltrans_misc_id=_p.checkhead_id) AND (gltrans_rec)) UNION ALL SELECT sltrans_id AS trans_id FROM sltrans WHERE ((sltrans_doctype='CK') AND (sltrans_misc_id=_p.checkhead_id) AND (sltrans_rec)) ) AS data; IF (FOUND) THEN RETURN -14; END IF; _gltransNote := 'Void Posted Check #' || _p.checkhead_number || ' ' || _p.checkrecip_number || '-' || _p.checkrecip_name; IF (_p.checkhead_misc) THEN IF (COALESCE(_p.checkhead_expcat_id, -1) < 0) THEN IF (_p.checkhead_recip_type = 'V') THEN PERFORM createAPDebitMemo(_p.checkhead_recip_id, pJournalNumber, CAST(fetchAPMemoNumber() AS text), '', pVoidDate, _p.checkhead_amount, _gltransNote || ' '|| _p.checkhead_notes, -1, pVoidDate, -1, _p.checkhead_curr_id ); _credit_glaccnt := findAPPrepaidAccount(_p.checkhead_recip_id); ELSIF (_p.checkhead_recip_type = 'C') THEN PERFORM createARCreditMemo(NULL, _p.checkhead_recip_id, fetchARMemoNumber(), '', pVoidDate, _p.checkhead_amount, _gltransNote || ' '|| _p.checkhead_notes, -1, -1, -1, pVoidDate, -1, NULL, 0.0, pJournalNumber, _p.checkhead_curr_id ); _credit_glaccnt := _p.prepaidaccntid; ELSIF (_p.checkhead_recip_type = 'T') THEN -- TODO: should we create a debit memo for the tax authority? how? _credit_glaccnt := _p.checkrecip_accnt_id; END IF; -- recip type ELSE SELECT expcat_exp_accnt_id INTO _credit_glaccnt FROM expcat WHERE (expcat_id=_p.checkhead_expcat_id); IF (NOT FOUND) THEN RETURN -12; END IF; END IF; IF (COALESCE(_credit_glaccnt, -1) < 0) THEN RETURN -13; END IF; PERFORM insertIntoGLSeries( _sequence, _p.checkrecip_gltrans_source, 'CK', text(_p.checkhead_number), _credit_glaccnt, round(_p.checkhead_amount_base, 2), pVoidDate, _gltransNote, pCheckid); _amount_base := _p.checkhead_amount_base; ELSE FOR _r IN SELECT checkitem_amount, checkitem_discount, CASE WHEN (checkitem_apopen_id IS NOT NULL) THEN checkitem_amount / apopen_curr_rate ELSE currToBase(checkitem_curr_id, checkitem_amount, COALESCE(checkitem_docdate, _p.checkhead_checkdate)) END AS checkitem_amount_base, checkitem_amount / checkitem_curr_rate AS amount_check, apopen_id, apopen_doctype, apopen_docnumber, apopen_curr_rate, apopen_docdate, aropen_id, aropen_doctype, aropen_docnumber, checkitem_curr_id, checkitem_curr_rate, COALESCE(checkitem_docdate, _p.checkhead_checkdate) AS docdate FROM (checkitem LEFT OUTER JOIN apopen ON (checkitem_apopen_id=apopen_id)) LEFT OUTER JOIN aropen ON (checkitem_aropen_id=aropen_id) WHERE (checkitem_checkhead_id=pcheckid) LOOP _exchGainTmp := 0; IF (_r.apopen_id IS NOT NULL) THEN -- undo the APDiscount Credit Memo if a discount was taken IF(_r.checkitem_discount > 0) THEN SELECT NEXTVAL('apopen_apopen_id_seq') INTO _apopenid; SELECT fetchAPMemoNumber() INTO _docnumber; INSERT INTO apopen ( apopen_id, apopen_username, apopen_journalnumber, apopen_vend_id, apopen_docnumber, apopen_doctype, apopen_ponumber, apopen_docdate, apopen_duedate, apopen_distdate, apopen_terms_id, apopen_amount, apopen_paid, apopen_open, apopen_notes, apopen_accnt_id, apopen_curr_id, apopen_discount, apopen_curr_rate, apopen_closedate ) VALUES ( _apopenid, getEffectiveXtUser(), pJournalNumber, _p.checkhead_recip_id, _docnumber, 'D', '', pVoidDate, pVoidDate, pVoidDate, -1, _r.checkitem_discount, _r.checkitem_discount, FALSE, ('Reverse Posted Discount ' || _r.apopen_doctype || ' ' || _r.apopen_docnumber), -1, _p.checkhead_curr_id, TRUE, _r.apopen_curr_rate, current_date ); PERFORM insertIntoGLSeries( _sequence, _p.checkrecip_gltrans_source, 'DS', _r.apopen_docnumber, findAPDiscountAccount(_p.checkhead_recip_id), round(_r.checkitem_discount / _r.apopen_curr_rate, 2) * -1, pVoidDate, _gltransNote, pCheckid); PERFORM insertIntoGLSeries( _sequence, _p.checkrecip_gltrans_source, 'DS', _r.apopen_docnumber, findAPAccount(_p.checkhead_recip_id), round(_r.checkitem_discount / _r.apopen_curr_rate, 2), pVoidDate, _gltransNote, pCheckid); -- Post the application INSERT INTO apapply ( apapply_vend_id, apapply_postdate, apapply_username, apapply_source_apopen_id, apapply_source_doctype, apapply_source_docnumber, apapply_target_apopen_id, apapply_target_doctype, apapply_target_docnumber, apapply_journalnumber, apapply_amount, apapply_curr_id ) VALUES ( _p.checkhead_recip_id, pVoidDate, getEffectiveXtUser(), _apopenid, 'D', _docnumber, _r.apopen_id, _r.apopen_doctype, _r.apopen_docnumber, pJournalNumber, (_r.checkitem_discount * -1), _r.checkitem_curr_id ); END IF; -- discount was taken UPDATE apopen SET apopen_paid = round(apopen_paid - (_r.checkitem_amount + noNeg(_r.checkitem_discount)), 2), apopen_open = round(apopen_amount, 2) > round(apopen_paid - (_r.checkitem_amount + noNeg(_r.checkitem_discount)), 2), apopen_closedate = CASE WHEN (round(apopen_amount, 2) > round(apopen_paid - (_r.checkitem_amount + noNeg(_r.checkitem_discount)))) THEN NULL ELSE apopen_closedate END WHERE (apopen_id=_r.apopen_id); -- Post the application INSERT INTO apapply ( apapply_vend_id, apapply_postdate, apapply_username, apapply_source_apopen_id, apapply_source_doctype, apapply_source_docnumber, apapply_target_apopen_id, apapply_target_doctype, apapply_target_docnumber, apapply_journalnumber, apapply_amount, apapply_curr_id ) VALUES ( _p.checkhead_recip_id, pVoidDate, getEffectiveXtUser(), -1, 'K', _p.checkhead_number, _r.apopen_id, _r.apopen_doctype, _r.apopen_docnumber, pJournalNumber, (_r.checkitem_amount * -1), _r.checkitem_curr_id ); END IF; -- if check item's apopen_id is not null IF (_r.aropen_id IS NOT NULL) THEN UPDATE aropen SET aropen_paid = round(aropen_paid -_r.checkitem_amount, 2), aropen_open = round(aropen_amount, 2) > round(aropen_paid - _r.checkitem_amount, 2) WHERE (aropen_id=_r.aropen_id); -- Post the application INSERT INTO arapply ( arapply_cust_id, arapply_postdate, arapply_distdate, arapply_username, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_journalnumber, arapply_applied, arapply_curr_id ) VALUES ( _p.checkhead_recip_id, pVoidDate, pVoidDate, getEffectiveXtUser(), -1, 'K', _p.checkhead_number, _r.aropen_id, _r.aropen_doctype, _r.aropen_docnumber, pJournalNumber, (_r.checkitem_amount * -1), _r.checkitem_curr_id ); END IF; -- if check item's aropen_id is not null -- calculate currency gain/loss IF (_r.apopen_id IS NOT NULL) THEN IF (_p.checkhead_curr_id = _r.checkitem_curr_id) THEN IF (_r.apopen_docdate > _p.checkhead_checkdate) THEN _exchGainTmp := ((_r.checkitem_amount/_p.checkhead_curr_rate) - (_r.checkitem_amount / _r.apopen_curr_rate)) * -1; ELSE _exchGainTmp := ((_r.checkitem_amount / _r.apopen_curr_rate) - (_r.checkitem_amount/_p.checkhead_curr_rate)); END IF; ELSE -- unusual condition where bank overridden and different currency from voucher IF (_r.apopen_docdate > _p.checkhead_checkdate) THEN _exchGainTmp := ((_r.checkitem_amount/_r.checkitem_curr_rate) - (_r.checkitem_amount / _r.apopen_curr_rate)) * -1; ELSE _exchGainTmp := ((_r.checkitem_amount / _r.apopen_curr_rate) - (_r.checkitem_amount/_r.checkitem_curr_rate)); END IF; END IF; ELSE SELECT arCurrGain(_r.aropen_id,_r.checkitem_curr_id, _r.checkitem_amount, _p.checkhead_checkdate) INTO _exchGainTmp; END IF; _exchGain := _exchGain + _exchGainTmp; PERFORM insertIntoGLSeries( _sequence, _p.checkrecip_gltrans_source, 'CK', text(_p.checkhead_number), _p.checkrecip_accnt_id, round(_r.checkitem_amount_base, 2), pVoidDate, _gltransNote, pCheckid); IF (_exchGainTmp <> 0) THEN PERFORM insertIntoGLSeries( _sequence, _p.checkrecip_gltrans_source, 'CK', text(_p.checkhead_number), getGainLossAccntId(_p.checkrecip_accnt_id), round(_exchGainTmp, 2) * -1, pVoidDate, _gltransNote, pCheckid); END IF; _amount_check := (_amount_check + _r.amount_check); _amount_base := (_amount_base + _r.checkitem_amount_base); END LOOP; IF( (_amount_check - _p.checkhead_amount) <> 0.0 ) THEN _exchGainTmp := (_amount_check - _p.checkhead_amount) / _p.checkhead_curr_rate; _exchGain := _exchGain + _exchGainTmp; END IF; -- ensure that the check balances, attribute rounding errors to gain/loss IF round(_amount_base, 2) - round(_exchGain, 2) <> round(_p.checkhead_amount_base, 2) THEN IF round(_amount_base - _exchGain, 2) = round(_p.checkhead_amount_base, 2) THEN PERFORM insertIntoGLSeries( _sequence, _p.checkrecip_gltrans_source, 'CK', text(_p.checkhead_number), getGainLossAccntId(_p.bankaccntid), (round(_amount_base, 2) - round(_exchGain, 2) - round(_p.checkhead_amount_base, 2)) * -1, pVoidDate, _gltransNote, pCheckid); ELSE RAISE EXCEPTION 'checkhead_id % does not balance (% - % <> %)', pCheckid, _amount_base, _exchGain, _p.checkhead_amount_base; END IF; END IF; END IF; PERFORM insertIntoGLSeries( _sequence, _p.checkrecip_gltrans_source, 'CK', text(_p.checkhead_number), _p.bankaccntid, round(_p.checkhead_amount_base, 2) * -1, pVoidDate, _gltransNote, pCheckid); PERFORM postGLSeries(_sequence, pJournalNumber); UPDATE gltrans SET gltrans_misc_id=pCheckid WHERE gltrans_sequence=_sequence; UPDATE checkhead SET checkhead_posted=false, checkhead_void=true, checkhead_journalnumber=pJournalNumber WHERE (checkhead_id=pCheckid); RETURN pJournalNumber; END; $_$; ALTER FUNCTION public.voidpostedcheck(integer, integer, date) OWNER TO admin; -- -- Name: woeffectivedate(date); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION woeffectivedate(date) RETURNS date LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStartDate ALIAS FOR $1; BEGIN IF (explodeWoEffective() = 'E') THEN RETURN CURRENT_DATE; ELSE RETURN pStartDate; END IF; END; $_$; ALTER FUNCTION public.woeffectivedate(date) OWNER TO admin; -- -- Name: woinvavail(integer, boolean, boolean, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION woinvavail(integer, boolean, boolean, boolean, boolean) RETURNS SETOF woinvav LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pwoid ALIAS FOR $1; pshowchildindent ALIAS FOR $2; pshowchildsum ALIAS FOR $3; pshowshortage ALIAS FOR $4; pshowlowinventory ALIAS FOR $5; _row woinvav%ROWTYPE; _subrow woinvav%ROWTYPE; _wonumber TEXT; _x RECORD; _subx RECORD; _qry TEXT; BEGIN IF(pshowchildindent) THEN --get top level order FOR _x IN SELECT wo_id, itemsite_id, item_type, wo_number, wo_subnumber, item_number, item_descrip1, item_descrip2, uom_name, qoh, wobalance, allocated, ordered, reorderlevel, (qoh + ordered - wobalance) AS woavail, (qoh + ordered - allocated) AS totalavail FROM(SELECT wo_id, itemsite_id, item_type, wo_number, wo_subnumber, item_number, item_descrip1, item_descrip2, uom_name, noNeg(itemsite_qtyonhand) AS qoh, noNeg(wo_qtyord - wo_qtyrcv) AS wobalance, qtyAllocated(itemsite_id, wo_duedate) AS allocated, qtyOrdered(itemsite_id, wo_duedate) AS ordered, CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel ELSE 0.0 END AS reorderlevel FROM wo, itemsite, item, uom WHERE ((wo_id = pwoid) AND (itemsite_id = wo_itemsite_id) AND (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id)) ORDER BY wo_number, wo_subnumber) AS data LOOP _row.woinvav_itemsite_id := _x.itemsite_id; _row.woinvav_womatl_id := -1; _row.woinvav_type := _x.item_type; _row.woinvav_item_wo_number := _x.wo_number || '-' || _x.wo_subnumber; _row.woinvav_descrip := _x.item_descrip1 || ' ' || _x.item_descrip2; _row.woinvav_uomname := _x.uom_name; _row.woinvav_qoh := _x.qoh; _row.woinvav_balance := _x.wobalance; _row.woinvav_allocated := _x.allocated; _row.woinvav_ordered := _x.ordered; _row.woinvav_woavail := _x.woavail; _row.woinvav_totalavail := _x.totalavail; _row.woinvav_reorderlevel := _x.reorderlevel; _row.woinvav_level := 0; RETURN NEXT _row; --get materials for this level FOR _subx IN SELECT * FROM woinvavailmatl(_x.wo_id, 1, pshowshortage, pshowlowinventory) LOOP RETURN NEXT _subx; END LOOP; FOR _subx IN SELECT * FROM woinvavail(_x.wo_id, 1, pshowshortage, pshowlowinventory) LOOP RETURN NEXT _subx; END LOOP; END LOOP; ELSE SELECT wo_number FROM wo WHERE wo_id=pwoid LIMIT 1 INTO _wonumber; --display a single level sum of work order requirements _qry := 'SELECT wo_id, itemsite_id, womatl_id, item_type, wo_number, item_number, item_descrip1, item_descrip2, uom_name, qoh, wobalance, allocated, ordered, reorderlevel, (qoh + ordered - wobalance) AS woavail, (qoh + ordered - allocated) AS totalavail FROM (SELECT wo_id, itemsite_id, womatl_id, item_type, wo_number, item_number, item_descrip1, item_descrip2, uom_name, noNeg(itemsite_qtyonhand) AS qoh, noNeg(itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyreq - womatl_qtyiss)) AS wobalance, qtyAllocated(itemsite_id, womatl_duedate) AS allocated, qtyOrdered(itemsite_id, womatl_duedate) AS ordered, CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel ELSE 0.0 END AS reorderlevel FROM wo, womatl, itemsite, item, uom WHERE (womatl_wo_id=wo_id) AND (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) '; IF(pshowchildsum) THEN _qry := _qry || ' AND (wo_number=' || _wonumber || ')'; ELSE _qry := _qry || ' AND (womatl_wo_id=' || pwoid || ')'; END IF; _qry := _qry || ' ORDER BY item_number) AS data '; IF(pshowshortage) THEN _qry := _qry || ' WHERE (((qoh + ordered - allocated) < 0) OR ((qoh + ordered - wobalance) < 0)) '; END IF; IF(pshowlowinventory AND NOT pshowshortage) THEN _qry := _qry || ' WHERE (((qoh - allocated) < 0) OR ((qoh - wobalance) < 0)) '; END IF; FOR _x IN EXECUTE _qry LOOP _row.woinvav_itemsite_id := _x.itemsite_id; _row.woinvav_womatl_id := _x.womatl_id; _row.woinvav_type := _x.item_type; _row.woinvav_item_wo_number := _x.item_number; _row.woinvav_descrip := _x.item_descrip1 || ' ' || _x.item_descrip2; _row.woinvav_uomname := _x.uom_name; _row.woinvav_qoh := _x.qoh; _row.woinvav_balance := _x.wobalance; _row.woinvav_allocated := _x.allocated; _row.woinvav_ordered := _x.ordered; _row.woinvav_woavail := _x.woavail; _row.woinvav_totalavail := _x.totalavail; _row.woinvav_reorderlevel := _x.reorderlevel; _row.woinvav_level := 0; RETURN NEXT _row; END LOOP; END IF; RETURN; END; $_$; ALTER FUNCTION public.woinvavail(integer, boolean, boolean, boolean, boolean) OWNER TO admin; -- -- Name: woinvavail(integer, integer, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION woinvavail(integer, integer, boolean, boolean) RETURNS SETOF woinvav LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pwoid ALIAS FOR $1; plevel ALIAS FOR $2; pshowshortage ALIAS FOR $3; pshowlowinventory ALIAS FOR $4; _row woinvav%ROWTYPE; _x RECORD; _subx RECORD; _index INTEGER; _level INTEGER; _qry TEXT; BEGIN FOR _x IN SELECT wo_id, itemsite_id, item_type, wo_number, wo_subnumber, item_number, item_descrip1, item_descrip2, uom_name, qoh, wobalance, allocated, ordered, reorderlevel, (qoh + ordered - wobalance) AS woavail, (qoh + ordered - allocated) AS totalavail FROM(SELECT wo_id, itemsite_id, item_type, wo_number, wo_subnumber, item_number, item_descrip1, item_descrip2, uom_name, noNeg(itemsite_qtyonhand) AS qoh, noNeg(wo_qtyord - wo_qtyrcv) AS wobalance, qtyAllocated(itemsite_id, wo_duedate) AS allocated, qtyOrdered(itemsite_id, wo_duedate) AS ordered, CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel ELSE 0.0 END AS reorderlevel FROM wo, itemsite, item, uom WHERE ((wo_ordid = pwoid) AND NOT (wo_status = 'C') AND (itemsite_id = wo_itemsite_id) AND (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id)) ORDER BY wo_number, wo_subnumber) AS data LOOP _row.woinvav_itemsite_id := _x.itemsite_id; _row.woinvav_womatl_id := -1; _row.woinvav_type := _x.item_type; _row.woinvav_item_wo_number := _x.wo_number || '-' || _x.wo_subnumber; _row.woinvav_descrip := _x.item_descrip1 || ' ' || _x.item_descrip2; _row.woinvav_uomname := _x.uom_name; _row.woinvav_qoh := _x.qoh; _row.woinvav_balance := _x.wobalance; _row.woinvav_allocated := _x.allocated; _row.woinvav_ordered := _x.ordered; _row.woinvav_woavail := _x.woavail; _row.woinvav_totalavail := _x.totalavail; _row.woinvav_reorderlevel := _x.reorderlevel; _row.woinvav_level := plevel; RETURN NEXT _row; --get materials for this level FOR _subx IN SELECT * FROM woinvavailmatl(_x.wo_id, plevel + 1, pshowshortage, pshowlowinventory) LOOP RETURN NEXT _subx; END LOOP; --get next level wo FOR _subx IN SELECT * FROM woinvavail(_x.wo_id, plevel + 1, pshowshortage, pshowlowinventory) LOOP RETURN NEXT _subx; END LOOP; END LOOP; RETURN; END; $_$; ALTER FUNCTION public.woinvavail(integer, integer, boolean, boolean) OWNER TO admin; -- -- Name: woinvavailmatl(integer, integer, boolean, boolean); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION woinvavailmatl(integer, integer, boolean, boolean) RETURNS SETOF woinvav LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pwoid ALIAS FOR $1; plevel ALIAS FOR $2; pshowshortage ALIAS FOR $3; pshowlowinventory ALIAS FOR $4; _subrow woinvav%ROWTYPE; _subx RECORD; _qry TEXT; BEGIN _qry := 'SELECT itemsite_id, womatl_id, item_type, wo_number, wo_subnumber, womatl_ref, womatl_notes, item_number, item_descrip1, item_descrip2, uom_name, qoh, wobalance, allocated, ordered, (qoh + ordered - wobalance) AS woavail, (qoh + ordered - allocated) AS totalavail, reorderlevel FROM(SELECT itemsite_id, womatl_id, item_type, wo_number, wo_subnumber, womatl_ref, womatl_notes, item_number, item_descrip1, item_descrip2, uom_name, noNeg(itemsite_qtyonhand) AS qoh, noNeg(itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyreq - womatl_qtyiss)) AS wobalance, qtyAllocated(itemsite_id, womatl_duedate) AS allocated, qtyOrdered(itemsite_id, womatl_duedate) AS ordered, CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel ELSE 0.0 END AS reorderlevel FROM womatl, wo, itemsite, item, uom WHERE ((wo_id = womatl_wo_id) AND (womatl_itemsite_id = itemsite_id) AND (itemsite_item_id=item_id) AND (womatl_uom_id=uom_id) AND (NOT womatl_createwo OR womatl_createwo IS NULL))'; _qry := _qry || ' AND (wo_id=' || pwoid || ') ORDER BY item_number) AS data'; IF(pshowshortage) THEN _qry := _qry || ' WHERE (((qoh + ordered - allocated) < 0) OR ((qoh + ordered - wobalance) < 0)) '; END IF; IF(pshowlowinventory AND NOT pshowshortage) THEN _qry := _qry || ' WHERE (((qoh - allocated) < 0) OR ((qoh - wobalance) < 0)) '; END IF; FOR _subx IN EXECUTE _qry LOOP _subrow.woinvav_itemsite_id := _subx.itemsite_id; _subrow.woinvav_womatl_id := _subx.womatl_id; _subrow.woinvav_type := _subx.item_type; _subrow.woinvav_item_wo_number := _subx.item_number; _subrow.woinvav_descrip := _subx.item_descrip1 || ' ' || _subx.item_descrip2; _subrow.woinvav_uomname := _subx.uom_name; _subrow.woinvav_qoh := _subx.qoh; _subrow.woinvav_balance := _subx.wobalance; _subrow.woinvav_allocated := _subx.allocated; _subrow.woinvav_ordered := _subx.ordered; _subrow.woinvav_woavail := _subx.woavail; _subrow.woinvav_totalavail := _subx.totalavail; _subrow.woinvav_reorderlevel := _subx.reorderlevel; _subrow.woinvav_level := plevel; RETURN NEXT _subrow; END LOOP; RETURN; END; $_$; ALTER FUNCTION public.woinvavailmatl(integer, integer, boolean, boolean) OWNER TO admin; -- -- Name: wostarted(integer); Type: FUNCTION; Schema: public; Owner: admin -- CREATE FUNCTION wostarted(pwoid integer) RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _result BOOLEAN := FALSE; BEGIN -- is it really this simple? SELECT (wo_wipvalue > 0) INTO _result FROM wo WHERE wo_id=pWoid; RETURN COALESCE(_result, FALSE); END; $$; ALTER FUNCTION public.wostarted(pwoid integer) OWNER TO admin; SET search_path = te, pg_catalog; -- -- Name: calcrate(numeric, character); Type: FUNCTION; Schema: te; Owner: admin -- CREATE FUNCTION calcrate(numeric, character) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAmount ALIAS FOR $1; pPeriod ALIAS FOR $2; _state integer; _count integer; BEGIN -- Convert amount to hourly rate IF (pPeriod = 'H') THEN -- hourly RETURN round(pAmount,2); ELSIF (pPeriod = 'D') THEN -- daily RETURN round(pAmount / 8, 2); ELSIF (pPeriod = 'W') THEN -- weekly RETURN round(pAmount / 40, 2); ELSIF (pPeriod = 'BW') THEN -- bi-weekly RETURN round(pAmount / 80, 2); ELSIF (pPeriod = 'M') THEN -- monthly RETURN round(pAmount / 160, 2); ELSIF (pPeriod = 'Y') THEN -- annually RETURN round(pAmount / 2080, 2); ELSE RAISE EXCEPTION 'Unknown period type passed: %', pPeriod; END IF; END; $_$; ALTER FUNCTION te.calcrate(numeric, character) OWNER TO admin; -- -- Name: copyitem(integer, text); Type: FUNCTION; Schema: te; Owner: admin -- CREATE FUNCTION copyitem(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSItemid ALIAS FOR $1; pTItemNumber ALIAS FOR $2; _itemid INTEGER; _r RECORD; _id INTEGER; BEGIN _itemid := public.copyItem(pSItemid, pTItemNumber); INSERT INTO te.teexp SELECT _itemid, teexp_expcat_id, teexp_accnt_id FROM te.teexp src WHERE (src.teexp_id=pSItemid); RETURN _itemid; END; $_$; ALTER FUNCTION te.copyitem(integer, text) OWNER TO admin; -- -- Name: invoicesheets(integer[]); Type: FUNCTION; Schema: te; Owner: admin -- CREATE FUNCTION invoicesheets(integer[]) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pHeadIDs ALIAS FOR $1; _invcnum text; _invcheadid integer; _invcitemid integer; _s record; _t record; _linenum integer; BEGIN -- Loop through time sheet items with matching criteria and make invoices FOR _s in SELECT DISTINCT teitem_cust_id, teitem_po, prj_id, teitem_curr_id FROM te.tehead JOIN te.teitem ON (teitem_tehead_id=tehead_id AND teitem_billable) JOIN prjtask ON (teitem_prjtask_id=prjtask_id) JOIN prj ON (prjtask_prj_id=prj_id) WHERE ((tehead_id IN (SELECT * FROM te.unnest(pHeadIDs) ) ) AND (teitem_billable) AND (teitem_invcitem_id IS NULL)) -- loop thru records and create invoices by customer, by PO for the provided headid LOOP --select nextval('invchead_invchead_id_seq') into _invcid; _invcnum := CAST(fetchInvcNumber() AS TEXT); _invcheadid := nextval('invchead_invchead_id_seq'); _linenum := 1; INSERT INTO invchead SELECT _invcheadid, cust_id, -1, '', current_date, false, false, _invcnum, current_date, current_date, _s.teitem_po, '', '', cust_name, COALESCE(addr_line1,''), COALESCE(addr_line2,''), COALESCE(addr_line3,''), COALESCE(addr_city,''), COALESCE(addr_state,''), COALESCE(addr_postalcode,''), cntct_phone, '', '', '', '', '', '', '', '', cust_salesrep_id, salesrep_commission, cust_terms_id, 0, 0, '', -1, 0, '', '', COALESCE(addr_country,''), '', _s.prj_id, _s.teitem_curr_id, current_date, false, null, null, null, null, null, cust_taxzone_id FROM custinfo JOIN salesrep ON (cust_salesrep_id=salesrep_id) LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) WHERE (cust_id=_s.teitem_cust_id); -- loop thru all lines of the sheet FOR _t IN SELECT teitem_id, teitem_linenumber, tehead_warehous_id, teitem_type, tehead_emp_id, cust_taxzone_id, item_number, teitem_cust_id, teitem_po, teitem_item_id, teitem_qty, teitem_uom_id, teitem_rate, teitem_notes FROM te.teitem JOIN te.tehead ON (teitem_tehead_id = tehead_id) JOIN custinfo ON (cust_id = teitem_cust_id) JOIN item ON (item_id = teitem_item_id) JOIN prjtask ON (teitem_prjtask_id=prjtask_id) JOIN prj ON (prjtask_prj_id=prj_id) WHERE ((tehead_id IN (SELECT * FROM te.unnest(pHeadIDs) ) ) AND (teitem_billable) AND (teitem_invcitem_id IS NULL) AND (item_id = teitem_item_id) AND (teitem_cust_id = _s.teitem_cust_id) AND (teitem_po = _s.teitem_po) AND (prj_id = _s.prj_id) AND (teitem_curr_id = _s.teitem_curr_id)) ORDER BY teitem_linenumber LOOP _invcitemid := nextval('invcitem_invcitem_id_seq'); INSERT INTO invcitem SELECT _invcitemid, _invcheadid, _linenum, _t.teitem_item_id, _t.tehead_warehous_id, '', '', '', _t.teitem_qty, _t.teitem_qty, _t.teitem_rate, _t.teitem_rate, _t.teitem_notes, -1, getItemTaxType(item_id, _t.cust_taxzone_id), _t.teitem_uom_id, itemuomtouomratio(item_id, _t.teitem_uom_id, item_inv_uom_id), _t.teitem_uom_id, itemuomtouomratio(item_id, _t.teitem_uom_id, item_inv_uom_id), null FROM item WHERE (item_id=_t.teitem_item_id); _linenum := _linenum + 1; -- Update the time sheet item record UPDATE te.teitem SET teitem_invcitem_id = _invcitemid WHERE (teitem_id = _t.teitem_id); END LOOP; END LOOP; RETURN 1; END; $_$; ALTER FUNCTION te.invoicesheets(integer[]) OWNER TO admin; -- -- Name: postsheet(integer, text, text); Type: FUNCTION; Schema: te; Owner: admin -- CREATE FUNCTION postsheet(integer, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTeheadId ALIAS FOR $1; pPhrase1 ALIAS FOR $2; pPhrase2 ALIAS FOR $3; _r record; _notes TEXT; _value NUMERIC; _olaccntid INTEGER; _expaccntid INTEGER; _count INTEGER; BEGIN -- Validate: No posting for contractors IF (SELECT (count(teemp_id) > 0) FROM te.tehead JOIN te.teemp ON (tehead_emp_id=teemp_emp_id) WHERE ((tehead_id=pTeheadId) AND (teemp_contractor))) THEN RAISE EXCEPTION 'Time and Expense Sheets can not be posted for contractors. Voucher instead.'; END IF; -- Get labor and overhead account SELECT accnt_id INTO _olaccntid FROM accnt WHERE (accnt_id=fetchmetricvalue('PrjLaborAndOverhead')); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count = 0) THEN RAISE EXCEPTION 'No valid Project Labor and Overhead Account Defined'; END IF; -- Get applicable time sheets FOR _r IN SELECT tehead_number, teitem_id, teitem_linenumber, teitem_type, teitem_notes, item_descrip1, teitem_qty, teexp_expcat_id, teexp_accnt_id, emp_code, emp_wage, emp_wage_period, prj_id, prj_number FROM te.tehead JOIN te.teitem ON (teitem_tehead_id=tehead_id) JOIN item ON (teitem_item_id=item_id) JOIN te.teexp ON (teitem_item_id=teexp_id) JOIN emp ON (tehead_emp_id=emp_id) JOIN prjtask ON (prjtask_id=teitem_prjtask_id) JOIN prj ON (prj_id=prjtask_prj_id) WHERE ((tehead_id = pTeheadId) AND (NOT teitem_posted) AND (teitem_vodist_id IS NULL) AND (teitem_type = 'T')) LOOP -- Determine value _value := te.calcRate(_r.emp_wage, _r.emp_wage_period) * _r.teitem_qty; -- Determine G/L account to post to IF (_r.teexp_accnt_id > 1) THEN _expaccntid := getPrjAccntId(_r.prj_id, _r.teexp_accnt_id); ELSE SELECT getPrjAccntId(_r.prj_id, expcat_exp_accnt_id) INTO _expaccntid FROM expcat WHERE (expcat_id=_r.teexp_expcat_id); END IF; -- Execute the posting _notes := (pPhrase1 || _r.item_descrip1 || '/' || _r.emp_code || pPhrase2 || ' ' || _r.prj_number); PERFORM insertGLTransaction( 'T/E', 'TE', _r.tehead_number, _notes, _olaccntid, _expaccntid, -1, _value, current_date ); -- Update the time sheet item UPDATE te.teitem SET teitem_posted = true, teitem_postedvalue = teitem_postedvalue + _value WHERE (teitem_id=_r.teitem_id); END LOOP; RETURN 1; END; $_$; ALTER FUNCTION te.postsheet(integer, text, text) OWNER TO admin; -- -- Name: sheetstate(integer, character); Type: FUNCTION; Schema: te; Owner: admin -- CREATE FUNCTION sheetstate(integer, character) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTeheadId ALIAS FOR $1; pType ALIAS FOR $2; _state INTEGER := -1; BEGIN -- Check and return the process state of the sheet -- 1 = All processed -- 0 = Processing required -- -1 = Not Applicable IF (pType = 'I') THEN SELECT MIN(CASE teitem_invcitem_id IS NULL WHEN TRUE THEN 0 ELSE 1 END) INTO _state FROM te.teitem WHERE ((teitem_tehead_id=pTeheadId) AND (teitem_billable) AND (teitem_qty >= 0)); ELSIF (pType = 'V') THEN -- todo: why outer join then check teitem_type and vend_id is not null? SELECT MIN(CASE teitem_vodist_id IS NULL WHEN TRUE THEN 0 ELSE 1 END) INTO _state FROM te.tehead JOIN emp ON (tehead_emp_id=emp_id) LEFT OUTER JOIN te.teemp ON (emp_id=teemp_emp_id) LEFT OUTER JOIN te.teitem ON (teitem_tehead_id=tehead_id) LEFT OUTER JOIN vendinfo ON (UPPER(emp_number)=UPPER(vend_number)) WHERE ((teitem_tehead_id=pTeheadId) AND ((teitem_type = 'E' AND NOT teitem_prepaid) OR (teitem_type = 'T' AND COALESCE(teemp_contractor,false))) AND (vend_id IS NOT NULL) AND (teitem_qty > 0)); ELSIF (pType = 'P') THEN SELECT MIN(CASE teitem_posted WHEN FALSE THEN 0 ELSE 1 END) INTO _state FROM te.teitem JOIN te.tehead ON (teitem_tehead_id=tehead_id) JOIN te.teemp ON (tehead_emp_id=teemp_emp_id) WHERE ((teitem_tehead_id=pTeheadId) AND (teitem_type = 'T') AND (NOT teemp_contractor)); ELSE -- TODO: either make ErrorReporter::error find this or use xtuple RAISE EXCEPTION 'Unknown process type % [xtte: sheetstate, -2, %]', pType, pType; END IF; RETURN _state; END; $_$; ALTER FUNCTION te.sheetstate(integer, character) OWNER TO admin; -- -- Name: triggertehead(); Type: FUNCTION; Schema: te; Owner: admin -- CREATE FUNCTION triggertehead() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; _sense INTEGER := 0; BEGIN -- Determine whether we are adding or subtracting totals IF (TG_OP = 'UPDATE') THEN IF (OLD.tehead_status = 'O' AND NEW.tehead_status = 'A') THEN -- Approving so add _sense := 1; ELSIF (OLD.tehead_status = 'A' AND NEW.tehead_status = 'O') THEN -- Unapproving so subtract _sense := -1; END IF; END IF; IF (_sense != 0) THEN -- Loop thru all lines of the sheet and update project FOR _r in SELECT teitem_prjtask_id, teitem_type, teitem_qty, teitem_total FROM te.teitem WHERE teitem_tehead_id = NEW.tehead_id LOOP IF (_r.teitem_type = 'T') THEN UPDATE prjtask SET prjtask_hours_actual = prjtask_hours_actual + _r.teitem_qty * _sense WHERE prjtask_id = _r.teitem_prjtask_id; ELSE UPDATE prjtask SET prjtask_exp_actual = prjtask_exp_actual + _r.teitem_total * _sense WHERE prjtask_id = _r.teitem_prjtask_id; END IF; END LOOP; END IF; RETURN NEW; END; $$; ALTER FUNCTION te.triggertehead() OWNER TO admin; -- -- Name: triggerteitem(); Type: FUNCTION; Schema: te; Owner: admin -- CREATE FUNCTION triggerteitem() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; _status CHAR(1) := 'O'; BEGIN -- Validate whether we can take this action IF (TG_OP = 'UPDATE') THEN IF ((OLD.teitem_type != NEW.teitem_type) OR (OLD.teitem_workdate != NEW.teitem_workdate) OR (OLD.teitem_cust_id != NEW.teitem_cust_id) OR (OLD.teitem_po != NEW.teitem_po) OR (OLD.teitem_item_id != NEW.teitem_item_id) OR (OLD.teitem_qty != NEW.teitem_qty) OR (OLD.teitem_rate != NEW.teitem_rate) OR (OLD.teitem_total != NEW.teitem_total) OR (OLD.teitem_billable != NEW.teitem_billable) OR (OLD.teitem_prepaid != NEW.teitem_prepaid) OR (OLD.teitem_notes != NEW.teitem_notes)) THEN SELECT tehead_status INTO _status FROM te.tehead WHERE tehead_id=NEW.teitem_tehead_id; END IF; ELSIF (TG_OP = 'INSERT') THEN SELECT tehead_status INTO _status FROM te.tehead WHERE tehead_id=NEW.teitem_tehead_id; ELSE -- Must be delete SELECT tehead_status INTO _status FROM te.tehead WHERE tehead_id=OLD.teitem_tehead_id; END IF; IF (_status != 'O') THEN RAISE EXCEPTION 'Time and Expense Sheets may only be edited or deleted when the status is Open'; END IF; _status := 'C'; -- Update header status, default is to close if all processing complete IF (TG_OP = 'UPDATE') THEN IF ((COALESCE(OLD.teitem_invcitem_id,-1) != COALESCE(NEW.teitem_invcitem_id,-1)) OR (COALESCE(OLD.teitem_vodist_id,-1) != COALESCE(NEW.teitem_vodist_id,-1)) OR (OLD.teitem_posted != NEW.teitem_posted)) THEN SELECT te.sheetstate(NEW.teitem_tehead_id, 'I') AS invoiced, te.sheetstate(NEW.teitem_tehead_id, 'V') AS vouchered, te.sheetstate(NEW.teitem_tehead_id, 'P') AS posted INTO _r; IF (_r.invoiced = 0 OR _r.vouchered = 0 OR _r.posted = 0) THEN _status := 'A'; -- Something is still open, so approved END IF; UPDATE te.tehead SET tehead_status = _status WHERE (tehead_id=NEW.teitem_tehead_id); END IF; END IF; -- Update header with last use info IF (TG_OP = 'DELETE') THEN UPDATE te.tehead SET tehead_lastupdated=('now'::text)::timestamp(6) with time zone WHERE (tehead_id=OLD.teitem_tehead_id); ELSE UPDATE te.tehead SET tehead_lastupdated=('now'::text)::timestamp(6) with time zone, tehead_username=current_user WHERE (tehead_id=NEW.teitem_tehead_id); END IF; RETURN NEW; END; $$; ALTER FUNCTION te.triggerteitem() OWNER TO admin; -- -- Name: triggerteprj(); Type: FUNCTION; Schema: te; Owner: admin -- CREATE FUNCTION triggerteprj() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _update BOOLEAN := false; BEGIN IF (TG_OP = 'INSERT') THEN _update = true; ELSIF (TG_OP = 'UPDATE') THEN IF (COALESCE(OLD.teprj_cust_id,-1) != COALESCE(NEW.teprj_cust_id,-1)) THEN _update = true; END IF; END IF; IF (_update) THEN UPDATE te.teprjtask SET teprjtask_cust_id=NEW.teprj_cust_id FROM prjtask WHERE ((teprjtask_prjtask_id=prjtask_id) AND (prjtask_prj_id=NEW.teprj_prj_id)); END IF; RETURN NEW; END; $$; ALTER FUNCTION te.triggerteprj() OWNER TO admin; -- -- Name: unnest(anyarray); Type: FUNCTION; Schema: te; Owner: admin -- CREATE FUNCTION unnest(anyarray) RETURNS SETOF anyelement LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT $1[i] FROM generate_series(array_lower($1,1), array_upper($1,1)) i; $_$; ALTER FUNCTION te.unnest(anyarray) OWNER TO admin; -- -- Name: vouchersheet(integer); Type: FUNCTION; Schema: te; Owner: admin -- CREATE FUNCTION vouchersheet(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pHeadID ALIAS FOR $1; _distamt NUMERIC; _glaccnt INTEGER; _notes TEXT; _s RECORD; _total NUMERIC := 0; _v RECORD; _vodistid INTEGER; _voheadid INTEGER; BEGIN FOR _v IN -- distinct filters duplicate rows returned because of the teitem join -- TODO: can we push the teitem down into the loop and avoid the distinct? SELECT DISTINCT tehead_id, tehead_number, tehead_weekending, tehead_notes, teitem_curr_id, emp_wage, emp_wage_period, vend_id, vend_taxzone_id, vend_terms_id, vend_number, vend_1099, COALESCE(teemp_contractor, false) AS isContractor FROM te.tehead JOIN te.teitem ON (teitem_tehead_id=tehead_id) JOIN emp ON (tehead_emp_id=emp_id) JOIN vendinfo ON (UPPER(emp_number)=UPPER(vend_number)) LEFT OUTER JOIN te.teemp ON (emp_id=teemp_emp_id) WHERE ((tehead_id = pHeadID) AND (teitem_prepaid = false) AND (teitem_vodist_id IS NULL) AND (teitem_type = 'E' OR (COALESCE(teemp_contractor,false) AND (teitem_empcost > 0 OR emp_wage > 0 )))) LOOP INSERT INTO vohead (vohead_id, vohead_number, vohead_vend_id, vohead_distdate, vohead_docdate, vohead_duedate, vohead_terms_id, vohead_taxzone_id, vohead_invcnumber, vohead_reference, vohead_amount, vohead_1099, vohead_curr_id, vohead_notes, vohead_posted, vohead_misc, vohead_pohead_id) VALUES (DEFAULT, fetchVoNumber(), _v.vend_id, _v.tehead_weekending, _v.tehead_weekending, determineDueDate(_v.vend_terms_id, _v.tehead_weekending), _v.vend_terms_id, _v.vend_taxzone_id, 'N/A', ('T&E Sheet ' || _v.tehead_number), 0, _v.vend_1099, _v.teitem_curr_id, _v.tehead_notes, false, true, -1) RETURNING vohead_id INTO _voheadid; FOR _s IN SELECT teitem_id, teitem_linenumber, teitem_workdate, teitem_type, item_number, teitem_item_id, teitem_qty, prjtask_prj_id, CASE WHEN teitem_empcost > 0 THEN teitem_empcost ELSE te.calcRate(_v.emp_wage, _v.emp_wage_period) END AS rate, teitem_total, teitem_type, teexp_expcat_id, teexp_accnt_id FROM te.teitem JOIN te.teexp ON (teitem_item_id=teexp_id) JOIN item ON (teitem_item_id=item_id) JOIN prjtask ON (teitem_prjtask_id=prjtask_id) WHERE ((teitem_tehead_id = _v.tehead_id) AND (teitem_curr_id = _v.teitem_curr_id) AND (teitem_prepaid = false) AND (teitem_vodist_id IS NULL) AND (teitem_type = 'E' OR (_v.isContractor AND (teitem_empcost > 0 OR _v.emp_wage > 0 )))) -- Loop thru records and create vouchers by supplier for the provided headid LOOP -- insert vodist records here _vodistid = nextval('vodist_vodist_id_seq'); -- Map expense directly to account so we can get project account mapping if applicable IF (_s.teexp_accnt_id > 1) THEN _glaccnt := getPrjAccntId(_s.prjtask_prj_id, _s.teexp_accnt_id); ELSE SELECT getPrjAccntId(_s.prjtask_prj_id, expcat_exp_accnt_id) INTO _glaccnt FROM expcat WHERE (expcat_id=_s.teexp_expcat_id); END IF; IF (_s.teitem_type = 'T') THEN -- Time sheet record _notes := formatdate(_s.teitem_workdate) || E'\t' || _s.item_number || E'\t' || formatQty(_s.teitem_qty) || ' hours' || E'\t'; _distamt := _s.rate * _s.teitem_qty; ELSE -- Expense record _notes := formatdate(_s.teitem_workdate) || E'\t' || _s.item_number || E'\t' || E'\t'; _distamt := _s.teitem_total; END IF; INSERT INTO vodist (vodist_id, vodist_vohead_id, vodist_poitem_id, vodist_costelem_id, vodist_accnt_id, vodist_amount, vodist_expcat_id, vodist_notes) VALUES (_vodistid, _voheadid, -1, -1, _glaccnt, _distamt, -1, _notes); _total := _total + _distamt; -- Update the te.teitem record with the relationship UPDATE te.teitem SET teitem_vodist_id = _vodistid WHERE teitem_id = _s.teitem_id; END LOOP; UPDATE vohead SET vohead_amount = _total WHERE (vohead_id=_voheadid); _total := 0; END LOOP; RETURN 1; END; $_$; ALTER FUNCTION te.vouchersheet(integer) OWNER TO admin; SET search_path = xtdesktop, pg_catalog; -- -- Name: fetchwelcomehtml(); Type: FUNCTION; Schema: xtdesktop; Owner: admin -- CREATE FUNCTION fetchwelcomehtml() RETURNS text LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _html TEXT; BEGIN _html := '

Welcome to xTuple


You are not connected to the internet at this time

'; RETURN _html; END; $$; ALTER FUNCTION xtdesktop.fetchwelcomehtml() OWNER TO admin; SET search_path = public, pg_catalog; -- -- Name: concatagg(text); Type: AGGREGATE; Schema: public; Owner: admin -- CREATE AGGREGATE concatagg(text) ( SFUNC = concataggsfunc, STYPE = text, INITCOND = '' ); ALTER AGGREGATE public.concatagg(text) OWNER TO admin; -- -- Name: first(anyelement); Type: AGGREGATE; Schema: public; Owner: admin -- CREATE AGGREGATE first(anyelement) ( SFUNC = first_agg, STYPE = anyelement ); ALTER AGGREGATE public.first(anyelement) OWNER TO admin; -- -- Name: last(anyelement); Type: AGGREGATE; Schema: public; Owner: admin -- CREATE AGGREGATE last(anyelement) ( SFUNC = last_agg, STYPE = anyelement ); ALTER AGGREGATE public.last(anyelement) OWNER TO admin; -- -- Name: addr; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE addr ( addr_id integer NOT NULL, addr_active boolean DEFAULT true, addr_line1 text DEFAULT ''::text, addr_line2 text DEFAULT ''::text, addr_line3 text DEFAULT ''::text, addr_city text DEFAULT ''::text, addr_state text DEFAULT ''::text, addr_postalcode text DEFAULT ''::text, addr_country text DEFAULT ''::text, addr_notes text DEFAULT ''::text, addr_number text NOT NULL, CONSTRAINT addr_addr_number_check CHECK ((addr_number <> ''::text)) ); ALTER TABLE public.addr OWNER TO admin; -- -- Name: TABLE addr; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE addr IS 'Postal Address'; SET search_path = api, pg_catalog; -- -- Name: account; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW account AS SELECT (c.crmacct_number)::character varying AS account_number, p.crmacct_number AS parent_account, c.crmacct_name AS account_name, c.crmacct_active AS active, CASE WHEN (c.crmacct_type = 'O'::bpchar) THEN 'Organization'::text ELSE 'Individual'::text END AS type, pc.cntct_number AS primary_contact_number, pc.cntct_honorific AS primary_contact_honorific, pc.cntct_first_name AS primary_contact_first, pc.cntct_middle AS primary_contact_middle, pc.cntct_last_name AS primary_contact_last, pc.cntct_suffix AS primary_contact_suffix, pc.cntct_title AS primary_contact_job_title, pc.cntct_phone AS primary_contact_voice, pc.cntct_fax AS primary_contact_fax, pc.cntct_email AS primary_contact_email, ''::text AS primary_contact_change, m.addr_number AS primary_contact_address_number, m.addr_line1 AS primary_contact_address1, m.addr_line2 AS primary_contact_address2, m.addr_line3 AS primary_contact_address3, m.addr_city AS primary_contact_city, m.addr_state AS primary_contact_state, m.addr_postalcode AS primary_contact_postalcode, m.addr_country AS primary_contact_country, ''::text AS primary_contact_address_change, sc.cntct_number AS secondary_contact_number, sc.cntct_honorific AS secondary_contact_honorific, sc.cntct_first_name AS secondary_contact_first, sc.cntct_middle AS secondary_contact_middle, sc.cntct_last_name AS secondary_contact_last, sc.cntct_suffix AS secondary_contact_suffix, sc.cntct_title AS secondary_contact_job_title, sc.cntct_phone AS secondary_contact_voice, sc.cntct_fax AS secondary_contact_fax, sc.cntct_email AS secondary_contact_email, sc.cntct_webaddr AS secondary_contact_web, ''::text AS secondary_contact_change, s.addr_number AS secondary_contact_address_number, s.addr_line1 AS secondary_contact_address1, s.addr_line2 AS secondary_contact_address2, s.addr_line3 AS secondary_contact_address3, s.addr_city AS secondary_contact_city, s.addr_state AS secondary_contact_state, s.addr_postalcode AS secondary_contact_postalcode, s.addr_country AS secondary_contact_country, ''::text AS secondary_contact_address_change, c.crmacct_notes AS notes FROM (((((public.crmacct c LEFT JOIN public.crmacct p ON ((c.crmacct_id = p.crmacct_parent_id))) LEFT JOIN public.cntct pc ON ((c.crmacct_cntct_id_1 = pc.cntct_id))) LEFT JOIN public.addr m ON ((pc.cntct_addr_id = m.addr_id))) LEFT JOIN public.cntct sc ON ((c.crmacct_cntct_id_2 = sc.cntct_id))) LEFT JOIN public.addr s ON ((sc.cntct_addr_id = s.addr_id))); ALTER TABLE api.account OWNER TO admin; -- -- Name: VIEW account; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW account IS 'Account'; SET search_path = public, pg_catalog; -- -- Name: char; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE "char" ( char_id integer NOT NULL, char_name text NOT NULL, char_items boolean, char_options boolean, char_attributes boolean, char_lotserial boolean, char_notes text, char_customers boolean, char_crmaccounts boolean, char_addresses boolean, char_contacts boolean, char_opportunity boolean, char_employees boolean DEFAULT false, char_mask text, char_validator text, char_incidents boolean DEFAULT false, char_type integer DEFAULT 0 NOT NULL, char_order integer DEFAULT 0 NOT NULL, char_search boolean DEFAULT true NOT NULL, CONSTRAINT char_char_name_check CHECK ((char_name <> ''::text)) ); ALTER TABLE public."char" OWNER TO admin; -- -- Name: TABLE "char"; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE "char" IS 'Characteristic information'; -- -- Name: charass; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE charass ( charass_id integer NOT NULL, charass_target_type text, charass_target_id integer, charass_char_id integer, charass_value text, charass_default boolean DEFAULT false NOT NULL, charass_price numeric(16,4) DEFAULT 0 NOT NULL ); ALTER TABLE public.charass OWNER TO admin; -- -- Name: TABLE charass; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE charass IS 'Characteristic assignment information'; SET search_path = api, pg_catalog; -- -- Name: accountchar; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW accountchar AS SELECT (crmacct.crmacct_number)::character varying AS account_number, ("char".char_name)::character varying AS characteristic, charass.charass_value AS value FROM public.crmacct, public."char", public.charass WHERE ((('CRMACCT'::text = charass.charass_target_type) AND (crmacct.crmacct_id = charass.charass_target_id)) AND (charass.charass_char_id = "char".char_id)); ALTER TABLE api.accountchar OWNER TO admin; -- -- Name: VIEW accountchar; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW accountchar IS 'Account Characteristics'; SET search_path = public, pg_catalog; -- -- Name: cmnttype; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cmnttype ( cmnttype_id integer NOT NULL, cmnttype_name text NOT NULL, cmnttype_descrip text NOT NULL, cmnttype_usedin text, cmnttype_sys boolean DEFAULT false NOT NULL, cmnttype_editable boolean DEFAULT false NOT NULL, cmnttype_order integer, CONSTRAINT cmnttype_cmnttype_name_check CHECK ((cmnttype_name <> ''::text)) ); ALTER TABLE public.cmnttype OWNER TO admin; -- -- Name: TABLE cmnttype; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE cmnttype IS 'Comment Type information'; -- -- Name: comment; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE comment ( comment_id integer DEFAULT nextval(('"comment_comment_id_seq"'::text)::regclass) NOT NULL, comment_source_id integer, comment_date timestamp with time zone, comment_user text, comment_text text, comment_cmnttype_id integer, comment_source text, comment_public boolean ); ALTER TABLE public.comment OWNER TO admin; -- -- Name: TABLE comment; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE comment IS 'Comment information'; SET search_path = api, pg_catalog; -- -- Name: accountcomment; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW accountcomment AS SELECT (crmacct.crmacct_number)::character varying AS account_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.crmacct, public.cmnttype, public.comment WHERE (((comment.comment_source = 'CRMA'::text) AND (comment.comment_source_id = crmacct.crmacct_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); ALTER TABLE api.accountcomment OWNER TO admin; -- -- Name: VIEW accountcomment; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW accountcomment IS 'Account Comment'; SET search_path = public, pg_catalog; -- -- Name: docass; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE docass ( docass_id integer NOT NULL, docass_source_id integer NOT NULL, docass_source_type text NOT NULL, docass_target_id integer NOT NULL, docass_target_type text DEFAULT 'URL'::text NOT NULL, docass_purpose character(1) DEFAULT 'S'::bpchar NOT NULL, CONSTRAINT docass_docass_purpose_check CHECK (((((((((docass_purpose = 'I'::bpchar) OR (docass_purpose = 'E'::bpchar)) OR (docass_purpose = 'M'::bpchar)) OR (docass_purpose = 'P'::bpchar)) OR (docass_purpose = 'A'::bpchar)) OR (docass_purpose = 'C'::bpchar)) OR (docass_purpose = 'S'::bpchar)) OR (docass_purpose = 'D'::bpchar))) ); ALTER TABLE public.docass OWNER TO admin; -- -- Name: TABLE docass; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE docass IS 'Document Assignement References'; -- -- Name: file; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE file ( file_id integer NOT NULL, file_title text NOT NULL, file_stream bytea, file_descrip text NOT NULL ); ALTER TABLE public.file OWNER TO admin; -- -- Name: urlinfo; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE urlinfo ( url_id integer NOT NULL, url_title text NOT NULL, url_url text NOT NULL ); ALTER TABLE public.urlinfo OWNER TO admin; -- -- Name: url; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW url AS SELECT docass.docass_id AS url_id, docass.docass_source_id AS url_source_id, docass.docass_source_type AS url_source, file.file_title AS url_title, file.file_descrip AS url_url, file.file_stream AS url_stream FROM (file JOIN docass ON (((docass.docass_target_id = file.file_id) AND (docass.docass_target_type = 'FILE'::text)))) UNION ALL SELECT docass.docass_id AS url_id, docass.docass_source_id AS url_source_id, docass.docass_source_type AS url_source, urlinfo.url_title, urlinfo.url_url, NULL::unknown AS url_stream FROM (urlinfo JOIN docass ON (((docass.docass_target_id = urlinfo.url_id) AND (docass.docass_target_type = 'URL'::text)))); ALTER TABLE public.url OWNER TO admin; SET search_path = api, pg_catalog; -- -- Name: accountfile; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW accountfile AS SELECT crmacct.crmacct_number AS account_number, url.url_title AS title, url.url_url AS url FROM public.crmacct, public.url WHERE ((crmacct.crmacct_id = url.url_source_id) AND (url.url_source = 'CRMA'::text)); ALTER TABLE api.accountfile OWNER TO admin; -- -- Name: VIEW accountfile; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW accountfile IS 'Account File'; SET search_path = public, pg_catalog; -- -- Name: docass_docass_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE docass_docass_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.docass_docass_id_seq OWNER TO admin; -- -- Name: docass_docass_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE docass_docass_id_seq OWNED BY docass.docass_id; -- -- Name: docass_docass_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('docass_docass_id_seq', 1, true); -- -- Name: image; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE image ( image_id integer DEFAULT nextval(('"image_image_id_seq"'::text)::regclass) NOT NULL, image_name text, image_descrip text, image_data text ); ALTER TABLE public.image OWNER TO admin; -- -- Name: TABLE image; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE image IS 'Image information'; -- -- Name: imageass; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE imageass ( imageass_id integer DEFAULT nextval('docass_docass_id_seq'::regclass) NOT NULL, imageass_source_id integer NOT NULL, imageass_source text NOT NULL, imageass_image_id integer NOT NULL, imageass_purpose character(1) NOT NULL, CONSTRAINT imageass_imageass_purpose_check CHECK (((((((((imageass_purpose = 'I'::bpchar) OR (imageass_purpose = 'E'::bpchar)) OR (imageass_purpose = 'M'::bpchar)) OR (imageass_purpose = 'P'::bpchar)) OR (imageass_purpose = 'A'::bpchar)) OR (imageass_purpose = 'C'::bpchar)) OR (imageass_purpose = 'D'::bpchar)) OR (imageass_purpose = 'S'::bpchar))) ); ALTER TABLE public.imageass OWNER TO admin; -- -- Name: TABLE imageass; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE imageass IS 'Image Assignement References'; SET search_path = api, pg_catalog; -- -- Name: accountimage; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW accountimage AS SELECT crmacct.crmacct_number AS account_number, image.image_name FROM public.crmacct, public.imageass, public.image WHERE (((crmacct.crmacct_id = imageass.imageass_source_id) AND (imageass.imageass_source = 'CRMA'::text)) AND (imageass.imageass_image_id = image.image_id)); ALTER TABLE api.accountimage OWNER TO admin; -- -- Name: VIEW accountimage; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW accountimage IS 'Account Image'; -- -- Name: address; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW address AS SELECT (addr.addr_number)::character varying AS address_number, addr.addr_line1 AS address1, addr.addr_line2 AS address2, addr.addr_line3 AS address3, addr.addr_city AS city, addr.addr_state AS state, addr.addr_postalcode AS postal_code, addr.addr_country AS country, addr.addr_active AS active, addr.addr_notes AS notes, ''::text AS change FROM public.addr; ALTER TABLE api.address OWNER TO admin; -- -- Name: VIEW address; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW address IS 'Address'; -- -- Name: addresschar; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW addresschar AS SELECT (addr.addr_number)::character varying AS address_number, ("char".char_name)::character varying AS characteristic, charass.charass_value AS value FROM public.addr, public."char", public.charass WHERE ((('ADDR'::text = charass.charass_target_type) AND (addr.addr_id = charass.charass_target_id)) AND (charass.charass_char_id = "char".char_id)); ALTER TABLE api.addresschar OWNER TO admin; -- -- Name: VIEW addresschar; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW addresschar IS 'Address Characteristics'; -- -- Name: addresscomment; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW addresscomment AS SELECT (addr.addr_number)::character varying AS address_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.addr, public.cmnttype, public.comment WHERE (((comment.comment_source = 'ADDR'::text) AND (comment.comment_source_id = addr.addr_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); ALTER TABLE api.addresscomment OWNER TO admin; -- -- Name: VIEW addresscomment; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW addresscomment IS 'Address Comment'; SET search_path = public, pg_catalog; -- -- Name: bomhead; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE bomhead ( bomhead_id integer DEFAULT nextval(('"bomhead_bomhead_id_seq"'::text)::regclass) NOT NULL, bomhead_item_id integer NOT NULL, bomhead_serial integer, bomhead_docnum text, bomhead_revision text, bomhead_revisiondate date, bomhead_batchsize numeric(18,6), bomhead_requiredqtyper numeric(20,8), bomhead_rev_id integer DEFAULT (-1), CONSTRAINT bomhead_bomhead_batchsize_check CHECK ((bomhead_batchsize > (0)::numeric)) ); ALTER TABLE public.bomhead OWNER TO admin; -- -- Name: TABLE bomhead; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE bomhead IS 'Bill of Materials (BOM) header information'; SET search_path = api, pg_catalog; -- -- Name: bom; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW bom AS SELECT (item.item_number)::character varying AS item_number, (bomhead.bomhead_revision)::character varying AS revision, bomhead.bomhead_docnum AS document_number, bomhead.bomhead_revisiondate AS revision_date, bomhead.bomhead_batchsize AS batch_size, bomhead.bomhead_requiredqtyper AS total_qty_per FROM public.bomhead, public.item WHERE (bomhead.bomhead_item_id = item.item_id); ALTER TABLE api.bom OWNER TO admin; -- -- Name: VIEW bom; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW bom IS 'Bill of Material Header'; -- -- Name: bomitem; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW bomitem AS SELECT bomitem.bomitem_id AS id, (p.item_number)::character varying AS bom_item_number, (bomhead.bomhead_revision)::character varying AS bom_revision, bomitem.bomitem_seqnumber AS sequence_number, i.item_number, CASE WHEN (bomitem.bomitem_effective = public.startoftime()) THEN 'Always'::text ELSE public.formatdate(bomitem.bomitem_effective) END AS effective, CASE WHEN (bomitem.bomitem_expires = public.endoftime()) THEN 'Never'::text ELSE public.formatdate(bomitem.bomitem_expires) END AS expires, bomitem.bomitem_qtyper AS qty_per, uom.uom_name AS issue_uom, bomitem.bomitem_scrap AS scrap, bomitem.bomitem_createwo AS create_child_wo, CASE WHEN (bomitem.bomitem_issuemethod = 'M'::bpchar) THEN 'Mixed'::text WHEN (bomitem.bomitem_issuemethod = 'L'::bpchar) THEN 'Pull'::text WHEN (bomitem.bomitem_issuemethod = 'S'::bpchar) THEN 'Push'::text ELSE NULL::text END AS issue_method, public.formatbooseq(p.item_id, bomitem.bomitem_booitem_seq_id) AS used_at, bomitem.bomitem_schedatwooper AS schedule_at_wo_operation, bomitem.bomitem_ecn AS ecn_number, bomitem.bomitem_notes AS notes, bomitem.bomitem_ref AS reference, CASE WHEN (bomitem.bomitem_subtype = 'N'::bpchar) THEN 'No'::text WHEN (bomitem.bomitem_subtype = 'I'::bpchar) THEN 'Item-Defined'::text WHEN (bomitem.bomitem_subtype = 'B'::bpchar) THEN 'BOM-Defined'::text ELSE NULL::text END AS substitutions, "char".char_name AS characteristic, bomitem.bomitem_value AS value FROM ((public.bomitem LEFT JOIN public.bomhead ON (((bomitem.bomitem_parent_item_id = bomhead.bomhead_item_id) AND (bomitem.bomitem_rev_id = bomhead.bomhead_rev_id)))) LEFT JOIN public."char" ON ((bomitem.bomitem_char_id = "char".char_id))), public.item p, public.item i, public.uom WHERE (((bomitem.bomitem_parent_item_id = p.item_id) AND (bomitem.bomitem_item_id = i.item_id)) AND (bomitem.bomitem_uom_id = uom.uom_id)) ORDER BY p.item_number, bomitem.bomitem_seqnumber; ALTER TABLE api.bomitem OWNER TO admin; -- -- Name: VIEW bomitem; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW bomitem IS 'Bill of Material Item'; -- -- Name: bomitemcomment; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW bomitemcomment AS SELECT bomitem.bomitem_id, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM (public.bomitem LEFT JOIN public.bomhead ON (((bomitem.bomitem_parent_item_id = bomhead.bomhead_item_id) AND (bomitem.bomitem_rev_id = bomhead.bomhead_rev_id)))), public.item, public.cmnttype, public.comment WHERE ((((comment.comment_source = 'BMI'::text) AND (comment.comment_source_id = bomitem.bomitem_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)) AND (bomitem.bomitem_parent_item_id = item.item_id)) ORDER BY item.item_number, bomhead.bomhead_revision, bomitem.bomitem_seqnumber, comment.comment_date; ALTER TABLE api.bomitemcomment OWNER TO admin; -- -- Name: VIEW bomitemcomment; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW bomitemcomment IS 'Bill of Material Comment'; SET search_path = public, pg_catalog; -- -- Name: bomitemsub; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE bomitemsub ( bomitemsub_id integer NOT NULL, bomitemsub_bomitem_id integer NOT NULL, bomitemsub_item_id integer NOT NULL, bomitemsub_uomratio numeric(20,10) NOT NULL, bomitemsub_rank integer NOT NULL ); ALTER TABLE public.bomitemsub OWNER TO admin; -- -- Name: TABLE bomitemsub; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE bomitemsub IS 'Bill of Materials (BOM) defined Substitutions information'; SET search_path = api, pg_catalog; -- -- Name: bomitemsubstitute; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW bomitemsubstitute AS SELECT bomitem.bomitem_id, (p.item_number)::character varying AS bom_item_number, (bomhead.bomhead_revision)::character varying AS bom_revision, bomitem.bomitem_seqnumber AS sequence_number, (s.item_number)::character varying AS substitute_item_number, bomitemsub.bomitemsub_uomratio AS sub_parent_uom_ratio, bomitemsub.bomitemsub_rank AS ranking FROM public.item p, public.item s, (public.bomitem LEFT JOIN public.bomhead ON (((bomitem.bomitem_parent_item_id = bomhead.bomhead_item_id) AND (bomitem.bomitem_rev_id = bomhead.bomhead_rev_id)))), public.bomitemsub WHERE (((p.item_id = bomitem.bomitem_parent_item_id) AND (s.item_id = bomitemsub.bomitemsub_item_id)) AND (bomitemsub.bomitemsub_bomitem_id = bomitem.bomitem_id)); ALTER TABLE api.bomitemsubstitute OWNER TO admin; -- -- Name: VIEW bomitemsubstitute; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW bomitemsubstitute IS 'Bill of Material Item Substitute'; SET search_path = public, pg_catalog; -- -- Name: budghead; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE budghead ( budghead_id integer NOT NULL, budghead_name text NOT NULL, budghead_descrip text, CONSTRAINT budghead_budghead_name_check CHECK ((budghead_name <> ''::text)) ); ALTER TABLE public.budghead OWNER TO admin; SET search_path = api, pg_catalog; -- -- Name: budget; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW budget AS SELECT budghead.budghead_name AS name, budghead.budghead_descrip AS description FROM public.budghead ORDER BY budghead.budghead_name; ALTER TABLE api.budget OWNER TO admin; -- -- Name: VIEW budget; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW budget IS 'Budget Header'; SET search_path = public, pg_catalog; -- -- Name: accnt; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE accnt ( accnt_id integer DEFAULT nextval(('accnt_accnt_id_seq'::text)::regclass) NOT NULL, accnt_number text, accnt_descrip text, accnt_comments text, accnt_profit text, accnt_sub text, accnt_type character(1) NOT NULL, accnt_extref text, accnt_company text, accnt_forwardupdate boolean, accnt_subaccnttype_code text, accnt_curr_id integer DEFAULT basecurrid(), accnt_active boolean DEFAULT true NOT NULL, accnt_name text, CONSTRAINT accnt_accnt_type_check CHECK ((accnt_type = ANY (ARRAY['A'::bpchar, 'E'::bpchar, 'L'::bpchar, 'Q'::bpchar, 'R'::bpchar]))) ); ALTER TABLE public.accnt OWNER TO admin; -- -- Name: TABLE accnt; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE accnt IS 'General Ledger (G/L) Account Number information'; -- -- Name: budgitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE budgitem ( budgitem_id integer NOT NULL, budgitem_budghead_id integer NOT NULL, budgitem_period_id integer NOT NULL, budgitem_accnt_id integer NOT NULL, budgitem_amount numeric(20,4) NOT NULL ); ALTER TABLE public.budgitem OWNER TO admin; -- -- Name: period; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE period ( period_id integer NOT NULL, period_start date, period_end date, period_closed boolean, period_freeze boolean, period_initial boolean DEFAULT false, period_name text, period_yearperiod_id integer, period_quarter integer, period_number integer NOT NULL ); ALTER TABLE public.period OWNER TO admin; -- -- Name: TABLE period; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE period IS 'Accounting Period information'; SET search_path = api, pg_catalog; -- -- Name: budgetentry; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW budgetentry AS SELECT budghead.budghead_name AS name, public.formatglaccount(accnt.accnt_id) AS account, period.period_start, budgitem.budgitem_amount AS amount FROM public.budgitem, public.budghead, public.period, public.accnt WHERE (((budgitem.budgitem_budghead_id = budghead.budghead_id) AND (budgitem.budgitem_period_id = period.period_id)) AND (budgitem.budgitem_accnt_id = accnt.accnt_id)) ORDER BY budghead.budghead_name, period.period_start, public.formatglaccount(accnt.accnt_id); ALTER TABLE api.budgetentry OWNER TO admin; -- -- Name: VIEW budgetentry; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW budgetentry IS 'Budget Entry'; SET search_path = public, pg_catalog; -- -- Name: bankaccnt; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE bankaccnt ( bankaccnt_id integer NOT NULL, bankaccnt_name text NOT NULL, bankaccnt_descrip text, bankaccnt_bankname text, bankaccnt_accntnumber text, bankaccnt_ar boolean, bankaccnt_ap boolean, bankaccnt_nextchknum integer, bankaccnt_type character(1), bankaccnt_accnt_id integer, bankaccnt_check_form_id integer, bankaccnt_userec boolean, bankaccnt_rec_accnt_id integer, bankaccnt_curr_id integer DEFAULT basecurrid(), bankaccnt_notes text, bankaccnt_routing text DEFAULT ''::text NOT NULL, bankaccnt_ach_enabled boolean DEFAULT false NOT NULL, bankaccnt_ach_origin text DEFAULT ''::text NOT NULL, bankaccnt_ach_genchecknum boolean DEFAULT false NOT NULL, bankaccnt_ach_leadtime integer, bankaccnt_ach_lastdate date, bankaccnt_ach_lastfileid character(1), bankaccnt_ach_origintype text, bankaccnt_ach_originname text, bankaccnt_ach_desttype text, bankaccnt_ach_fed_dest text, bankaccnt_ach_destname text, bankaccnt_ach_dest text, CONSTRAINT bankaccnt_bankaccnt_name_check CHECK ((bankaccnt_name <> ''::text)) ); ALTER TABLE public.bankaccnt OWNER TO admin; -- -- Name: TABLE bankaccnt; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE bankaccnt IS 'Bank Account information'; -- -- Name: cashrcpt; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cashrcpt ( cashrcpt_id integer NOT NULL, cashrcpt_cust_id integer NOT NULL, cashrcpt_amount numeric(20,2) NOT NULL, cashrcpt_fundstype character(1) NOT NULL, cashrcpt_docnumber text, cashrcpt_bankaccnt_id integer NOT NULL, cashrcpt_notes text, cashrcpt_distdate date DEFAULT ('now'::text)::date, cashrcpt_salescat_id integer DEFAULT (-1), cashrcpt_curr_id integer DEFAULT basecurrid(), cashrcpt_usecustdeposit boolean DEFAULT false NOT NULL, cashrcpt_void boolean DEFAULT false NOT NULL, cashrcpt_number text NOT NULL, cashrcpt_docdate date, cashrcpt_posted boolean DEFAULT false NOT NULL, cashrcpt_posteddate date, cashrcpt_postedby text, cashrcpt_applydate date, cashrcpt_discount numeric(20,2) DEFAULT 0.00 NOT NULL, cashrcpt_curr_rate numeric NOT NULL, CONSTRAINT cashrcpt_cashrcpt_number_check CHECK ((cashrcpt_number <> ''::text)) ); ALTER TABLE public.cashrcpt OWNER TO admin; -- -- Name: TABLE cashrcpt; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE cashrcpt IS 'Temporary table for storing Cash Receipt information before Cash Receipts are posted'; SET search_path = api, pg_catalog; -- -- Name: cashreceipt; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW cashreceipt AS SELECT (custinfo.cust_number)::character varying AS customer_number, CASE WHEN (cashrcpt.cashrcpt_fundstype = 'C'::bpchar) THEN 'Check'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'T'::bpchar) THEN 'Certified Check'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'M'::bpchar) THEN 'Master Card'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'V'::bpchar) THEN 'Visa'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'A'::bpchar) THEN 'American Express'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'D'::bpchar) THEN 'Discover Card'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'R'::bpchar) THEN 'Other Credit Card'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'K'::bpchar) THEN 'Cash'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'W'::bpchar) THEN 'Wire Transfer'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'O'::bpchar) THEN 'Other'::character varying ELSE NULL::character varying END AS funds_type, (cashrcpt.cashrcpt_docnumber)::character varying AS check_document_number, custinfo.cust_name AS customer_name, m.addr_line1 AS customer_address, curr_symbol.curr_abbr AS currency, cashrcpt.cashrcpt_amount AS amount_received, bankaccnt.bankaccnt_name AS post_to, public.formatdate(cashrcpt.cashrcpt_distdate) AS distribution_date, CASE WHEN cashrcpt.cashrcpt_usecustdeposit THEN 'Customer Deposit'::text ELSE 'Credit Memo'::text END AS apply_balance_as, salescat.salescat_name AS sales_category, cashrcpt.cashrcpt_notes AS notes FROM ((((((public.cashrcpt LEFT JOIN public.custinfo ON ((custinfo.cust_id = cashrcpt.cashrcpt_cust_id))) LEFT JOIN public.cntct mc ON ((custinfo.cust_cntct_id = mc.cntct_id))) LEFT JOIN public.addr m ON ((mc.cntct_addr_id = m.addr_id))) LEFT JOIN public.curr_symbol ON ((curr_symbol.curr_id = cashrcpt.cashrcpt_curr_id))) LEFT JOIN public.bankaccnt ON ((bankaccnt.bankaccnt_id = cashrcpt.cashrcpt_bankaccnt_id))) LEFT JOIN public.salescat ON ((salescat.salescat_id = cashrcpt.cashrcpt_salescat_id))); ALTER TABLE api.cashreceipt OWNER TO admin; -- -- Name: VIEW cashreceipt; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW cashreceipt IS ' This view can be used as an interface to import Cash Receipt data directly into the system. Required fields will be checked and default values will be populated'; SET search_path = public, pg_catalog; -- -- Name: cashrcptitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cashrcptitem ( cashrcptitem_id integer NOT NULL, cashrcptitem_cashrcpt_id integer NOT NULL, cashrcptitem_aropen_id integer NOT NULL, cashrcptitem_amount numeric(20,2) NOT NULL, cashrcptitem_discount numeric(20,2) DEFAULT 0.00 NOT NULL, cashrcptitem_applied boolean DEFAULT true ); ALTER TABLE public.cashrcptitem OWNER TO admin; -- -- Name: TABLE cashrcptitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE cashrcptitem IS 'Temporary table for storing information about applications of Cash Receipts before Cash Receipts are posted'; SET search_path = api, pg_catalog; -- -- Name: cashreceiptapply; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW cashreceiptapply AS SELECT (custinfo.cust_number)::character varying AS customer_number, CASE WHEN (cashrcpt.cashrcpt_fundstype = 'C'::bpchar) THEN 'Check'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'T'::bpchar) THEN 'Certified Check'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'M'::bpchar) THEN 'Master Card'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'V'::bpchar) THEN 'Visa'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'A'::bpchar) THEN 'American Express'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'D'::bpchar) THEN 'Discover Card'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'R'::bpchar) THEN 'Other Credit Card'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'K'::bpchar) THEN 'Cash'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'W'::bpchar) THEN 'Wire Transfer'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'O'::bpchar) THEN 'Other'::character varying ELSE NULL::character varying END AS funds_type, (cashrcpt.cashrcpt_docnumber)::character varying AS check_document_number, (aropen.aropen_doctype)::character varying AS doc_type, (aropen.aropen_docnumber)::character varying AS doc_number, custinfo.cust_name AS customer_name, m.addr_line1 AS customer_address, public.formatdate(aropen.aropen_docdate) AS doc_date, public.formatdate(aropen.aropen_duedate) AS due_date, curr_symbol.curr_abbr AS currency, aropen.aropen_amount AS open_amount, cashrcptitem.cashrcptitem_amount AS amount_to_apply, cashrcptitem.cashrcptitem_discount FROM ((((((public.cashrcptitem LEFT JOIN public.cashrcpt ON ((cashrcpt.cashrcpt_id = cashrcptitem.cashrcptitem_cashrcpt_id))) LEFT JOIN public.custinfo ON ((custinfo.cust_id = cashrcpt.cashrcpt_cust_id))) LEFT JOIN public.cntct mc ON ((custinfo.cust_cntct_id = mc.cntct_id))) LEFT JOIN public.addr m ON ((mc.cntct_addr_id = m.addr_id))) LEFT JOIN public.curr_symbol ON ((curr_symbol.curr_id = cashrcpt.cashrcpt_curr_id))) LEFT JOIN public.aropen ON ((aropen.aropen_id = cashrcptitem.cashrcptitem_aropen_id))); ALTER TABLE api.cashreceiptapply OWNER TO admin; -- -- Name: VIEW cashreceiptapply; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW cashreceiptapply IS ' This view can be used as an interface to import Cash Receipt Application data directly into the system. Required fields will be checked and default values will be populated'; SET search_path = public, pg_catalog; -- -- Name: cashrcptmisc; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cashrcptmisc ( cashrcptmisc_id integer NOT NULL, cashrcptmisc_cashrcpt_id integer NOT NULL, cashrcptmisc_accnt_id integer NOT NULL, cashrcptmisc_amount numeric(20,2) NOT NULL, cashrcptmisc_notes text ); ALTER TABLE public.cashrcptmisc OWNER TO admin; -- -- Name: TABLE cashrcptmisc; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE cashrcptmisc IS 'Cash Receipt Miscellaneous Application information'; SET search_path = api, pg_catalog; -- -- Name: cashreceiptapplymisc; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW cashreceiptapplymisc AS SELECT (custinfo.cust_number)::character varying AS customer_number, CASE WHEN (cashrcpt.cashrcpt_fundstype = 'C'::bpchar) THEN 'Check'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'T'::bpchar) THEN 'Certified Check'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'M'::bpchar) THEN 'Master Card'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'V'::bpchar) THEN 'Visa'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'A'::bpchar) THEN 'American Express'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'D'::bpchar) THEN 'Discover Card'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'R'::bpchar) THEN 'Other Credit Card'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'K'::bpchar) THEN 'Cash'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'W'::bpchar) THEN 'Wire Transfer'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'O'::bpchar) THEN 'Other'::character varying ELSE NULL::character varying END AS funds_type, (cashrcpt.cashrcpt_docnumber)::character varying AS check_document_number, (public.formatglaccount(accnt.accnt_id))::character varying AS account, custinfo.cust_name AS customer_name, m.addr_line1 AS customer_address, accnt.accnt_descrip AS account_description, curr_symbol.curr_abbr AS currency, cashrcptmisc.cashrcptmisc_amount AS amount_to_distribute, cashrcptmisc.cashrcptmisc_notes AS notes FROM ((((((public.cashrcptmisc LEFT JOIN public.cashrcpt ON ((cashrcpt.cashrcpt_id = cashrcptmisc.cashrcptmisc_cashrcpt_id))) LEFT JOIN public.custinfo ON ((custinfo.cust_id = cashrcpt.cashrcpt_cust_id))) LEFT JOIN public.cntct mc ON ((custinfo.cust_cntct_id = mc.cntct_id))) LEFT JOIN public.addr m ON ((mc.cntct_addr_id = m.addr_id))) LEFT JOIN public.curr_symbol ON ((curr_symbol.curr_id = cashrcpt.cashrcpt_curr_id))) LEFT JOIN public.accnt ON ((accnt.accnt_id = cashrcptmisc.cashrcptmisc_accnt_id))); ALTER TABLE api.cashreceiptapplymisc OWNER TO admin; -- -- Name: VIEW cashreceiptapplymisc; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW cashreceiptapplymisc IS ' This view can be used as an interface to import Cash Receipt Miscellaneous Application data directly into the system. Required fields will be checked and default values will be populated'; -- -- Name: contact; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW contact AS SELECT (cntct.cntct_number)::character varying AS contact_number, cntct.cntct_honorific AS honorific, cntct.cntct_first_name AS first, cntct.cntct_middle AS middle, cntct.cntct_last_name AS last, cntct.cntct_suffix AS suffix, cntct.cntct_initials AS initials, crmacct.crmacct_number AS crm_account, cntct.cntct_active AS active, cntct.cntct_title AS job_title, cntct.cntct_phone AS voice, cntct.cntct_phone2 AS alternate, cntct.cntct_fax AS fax, cntct.cntct_email AS email, cntct.cntct_webaddr AS web, ''::text AS contact_change, addr.addr_number AS address_number, addr.addr_line1 AS address1, addr.addr_line2 AS address2, addr.addr_line3 AS address3, addr.addr_city AS city, addr.addr_state AS state, addr.addr_postalcode AS postal_code, addr.addr_country AS country, cntct.cntct_notes AS notes, ''::text AS address_change FROM ((public.cntct LEFT JOIN public.addr ON ((cntct.cntct_addr_id = addr.addr_id))) LEFT JOIN public.crmacct ON ((cntct.cntct_crmacct_id = crmacct.crmacct_id))); ALTER TABLE api.contact OWNER TO admin; -- -- Name: VIEW contact; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW contact IS 'Contact'; -- -- Name: contactchar; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW contactchar AS SELECT cntct.cntct_number AS contact_number, ("char".char_name)::character varying AS characteristic, charass.charass_value AS value FROM public.cntct, public."char", public.charass WHERE ((('CNTCT'::text = charass.charass_target_type) AND (cntct.cntct_id = charass.charass_target_id)) AND (charass.charass_char_id = "char".char_id)); ALTER TABLE api.contactchar OWNER TO admin; -- -- Name: VIEW contactchar; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW contactchar IS 'Contact Characteristics'; -- -- Name: contactcomment; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW contactcomment AS SELECT cntct.cntct_number AS contact_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.cntct, public.cmnttype, public.comment WHERE (((comment.comment_source = 'T'::text) AND (comment.comment_source_id = cntct.cntct_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); ALTER TABLE api.contactcomment OWNER TO admin; -- -- Name: VIEW contactcomment; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW contactcomment IS 'Contact Comment'; -- -- Name: custchar; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW custchar AS SELECT (custinfo.cust_number)::character varying AS customer_number, ("char".char_name)::character varying AS characteristic, charass.charass_value AS value FROM public.custinfo, public."char", public.charass WHERE ((('C'::text = charass.charass_target_type) AND (custinfo.cust_id = charass.charass_target_id)) AND (charass.charass_char_id = "char".char_id)); ALTER TABLE api.custchar OWNER TO admin; -- -- Name: VIEW custchar; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW custchar IS 'Customer Characteristics'; -- -- Name: custcomment; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW custcomment AS SELECT (custinfo.cust_number)::character varying AS customer_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.custinfo, public.cmnttype, public.comment WHERE (((comment.comment_source = 'C'::text) AND (comment.comment_source_id = custinfo.cust_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); ALTER TABLE api.custcomment OWNER TO admin; -- -- Name: VIEW custcomment; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW custcomment IS 'Customer Comment'; SET search_path = public, pg_catalog; -- -- Name: ccard; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE ccard ( ccard_id integer NOT NULL, ccard_seq integer DEFAULT 10 NOT NULL, ccard_cust_id integer NOT NULL, ccard_active boolean DEFAULT true, ccard_name bytea, ccard_address1 bytea, ccard_address2 bytea, ccard_city bytea, ccard_state bytea, ccard_zip bytea, ccard_country bytea, ccard_number bytea, ccard_debit boolean DEFAULT false, ccard_month_expired bytea, ccard_year_expired bytea, ccard_type character(1) NOT NULL, ccard_date_added timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, ccard_lastupdated timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, ccard_added_by_username text DEFAULT geteffectivextuser() NOT NULL, ccard_last_updated_by_username text DEFAULT geteffectivextuser() NOT NULL ); ALTER TABLE public.ccard OWNER TO admin; -- -- Name: TABLE ccard; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE ccard IS 'Credit Card Information - all bytea data is encrypted'; SET search_path = api, pg_catalog; -- -- Name: custcreditcard; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW custcreditcard AS SELECT (custinfo.cust_number)::character varying AS customer_number, CASE WHEN (ccard.ccard_type = 'V'::bpchar) THEN 'Visa'::text WHEN (ccard.ccard_type = 'M'::bpchar) THEN 'Master Card'::text WHEN (ccard.ccard_type = 'A'::bpchar) THEN 'American Express'::text WHEN (ccard.ccard_type = 'D'::bpchar) THEN 'Discover'::text ELSE 'Not Supported'::text END AS credit_card_type, ccard.ccard_active AS active, ccard.ccard_number AS credit_card_number, ccard.ccard_name AS name, ccard.ccard_address1 AS street_address1, ccard.ccard_address2 AS street_address2, ccard.ccard_city AS city, ccard.ccard_state AS state, ccard.ccard_zip AS postal_code, ccard.ccard_country AS country, ccard.ccard_month_expired AS expiration_month, ccard.ccard_year_expired AS expiration_year, ''::text AS key FROM public.ccard, public.custinfo WHERE (ccard.ccard_cust_id = custinfo.cust_id); ALTER TABLE api.custcreditcard OWNER TO admin; -- -- Name: VIEW custcreditcard; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW custcreditcard IS 'Customer Credit Cards.'; SET search_path = public, pg_catalog; -- -- Name: custtype; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE custtype ( custtype_id integer DEFAULT nextval(('custtype_custtype_id_seq'::text)::regclass) NOT NULL, custtype_code text NOT NULL, custtype_descrip text NOT NULL, custtype_char boolean DEFAULT false NOT NULL, CONSTRAINT custtype_custtype_code_check CHECK ((custtype_code <> ''::text)) ); ALTER TABLE public.custtype OWNER TO admin; -- -- Name: TABLE custtype; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE custtype IS 'Customer Type information'; -- -- Name: shipchrg; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE shipchrg ( shipchrg_id integer NOT NULL, shipchrg_name text NOT NULL, shipchrg_descrip text, shipchrg_custfreight boolean, shipchrg_handling character(1), CONSTRAINT shipchrg_shipchrg_name_check CHECK ((shipchrg_name <> ''::text)) ); ALTER TABLE public.shipchrg OWNER TO admin; -- -- Name: TABLE shipchrg; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE shipchrg IS 'Shipping Charge information'; -- -- Name: shipform; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE shipform ( shipform_id integer DEFAULT nextval(('"shipform_shipform_id_seq"'::text)::regclass) NOT NULL, shipform_name text NOT NULL, shipform_report_id integer, shipform_report_name text, CONSTRAINT shipform_shipform_name_check CHECK ((shipform_name <> ''::text)) ); ALTER TABLE public.shipform OWNER TO admin; -- -- Name: TABLE shipform; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE shipform IS 'Shipping Form information'; -- -- Name: COLUMN shipform.shipform_report_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN shipform.shipform_report_id IS 'Obsolete -- reference shipform_report_name instead.'; SET search_path = api, pg_catalog; -- -- Name: customer; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW customer AS SELECT (custinfo.cust_number)::character varying AS customer_number, custtype.custtype_code AS customer_type, custinfo.cust_name AS customer_name, custinfo.cust_active AS active, salesrep.salesrep_number AS sales_rep, (custinfo.cust_commprcnt * (100)::numeric) AS commission, custinfo.cust_shipvia AS ship_via, shipform.shipform_name AS ship_form, shipchrg.shipchrg_name AS shipping_charges, custinfo.cust_backorder AS accepts_backorders, custinfo.cust_partialship AS accepts_partial_shipments, custinfo.cust_ffshipto AS allow_free_form_shipto, custinfo.cust_ffbillto AS allow_free_form_billto, whsinfo.warehous_code AS preferred_selling_site, taxzone.taxzone_code AS default_tax_zone, terms.terms_code AS default_terms, CASE WHEN (custinfo.cust_balmethod = 'B'::bpchar) THEN 'Balance Forward'::text ELSE 'Open Item'::text END AS balance_method, custinfo.cust_discntprcnt AS default_discount, dc.curr_abbr AS default_currency, clc.curr_abbr AS credit_limit_currency, custinfo.cust_creditlmt AS credit_limit, CASE WHEN (COALESCE(custinfo.cust_gracedays, 0) > 0) THEN custinfo.cust_gracedays ELSE NULL::integer END AS alternate_grace_days, custinfo.cust_creditrating AS credit_rating, CASE WHEN (custinfo.cust_creditstatus = 'G'::bpchar) THEN 'In Good Standing'::text WHEN (custinfo.cust_creditstatus = 'W'::bpchar) THEN 'On Credit Warning'::text ELSE 'On Credit Hold'::text END AS credit_status, custinfo.cust_autoupdatestatus AS credit_status_exceed_warn, custinfo.cust_autoholdorders AS credit_status_exceed_hold, custinfo.cust_usespos AS uses_purchase_orders, custinfo.cust_blanketpos AS uses_blanket_pos, mc.cntct_number AS billing_contact_number, mc.cntct_honorific AS billing_contact_honorific, mc.cntct_first_name AS billing_contact_first, mc.cntct_middle AS billing_contact_middle, mc.cntct_last_name AS billing_contact_last, mc.cntct_suffix AS billing_contact_suffix, mc.cntct_title AS billing_contact_job_title, mc.cntct_phone AS billing_contact_voice, mc.cntct_phone2 AS billing_contact_alternate, mc.cntct_fax AS billing_contact_fax, mc.cntct_email AS billing_contact_email, mc.cntct_webaddr AS billing_contact_web, ''::text AS billing_contact_change, m.addr_number AS billing_contact_address_number, m.addr_line1 AS billing_contact_address1, m.addr_line2 AS billing_contact_address2, m.addr_line3 AS billing_contact_address3, m.addr_city AS billing_contact_city, m.addr_state AS billing_contact_state, m.addr_postalcode AS billing_contact_postalcode, m.addr_country AS billing_contact_country, ''::text AS billing_contact_address_change, cc.cntct_number AS correspond_contact_number, cc.cntct_honorific AS correspond_contact_honorific, cc.cntct_first_name AS correspond_contact_first, cc.cntct_middle AS correspond_contact_middle, cc.cntct_last_name AS correspond_contact_last, cc.cntct_suffix AS correspond_contact_suffix, cc.cntct_title AS correspond_contact_job_title, cc.cntct_phone AS correspond_contact_voice, cc.cntct_phone2 AS correspond_contact_alternate, cc.cntct_fax AS correspond_contact_fax, cc.cntct_email AS correspond_contact_email, cc.cntct_webaddr AS correspond_contact_web, ''::text AS correspond_contact_change, c.addr_number AS correspond_contact_address_number, c.addr_line1 AS correspond_contact_address1, c.addr_line2 AS correspond_contact_address2, c.addr_line3 AS correspond_contact_address3, c.addr_city AS correspond_contact_city, c.addr_state AS correspond_contact_state, c.addr_postalcode AS correspond_contact_postalcode, c.addr_country AS correspond_contact_country, ''::text AS correspond_contact_address_change, custinfo.cust_comments AS notes FROM ((((((((public.custinfo LEFT JOIN public.shipchrg ON ((custinfo.cust_shipchrg_id = shipchrg.shipchrg_id))) LEFT JOIN public.whsinfo ON ((custinfo.cust_preferred_warehous_id = whsinfo.warehous_id))) LEFT JOIN public.cntct mc ON ((custinfo.cust_cntct_id = mc.cntct_id))) LEFT JOIN public.addr m ON ((mc.cntct_addr_id = m.addr_id))) LEFT JOIN public.cntct cc ON ((custinfo.cust_corrcntct_id = cc.cntct_id))) LEFT JOIN public.addr c ON ((cc.cntct_addr_id = c.addr_id))) LEFT JOIN public.taxzone ON ((custinfo.cust_taxzone_id = taxzone.taxzone_id))) LEFT JOIN public.shipform ON ((custinfo.cust_shipform_id = shipform.shipform_id))), public.custtype, public.salesrep, public.curr_symbol dc, public.curr_symbol clc, public.terms WHERE (((((custinfo.cust_custtype_id = custtype.custtype_id) AND (custinfo.cust_salesrep_id = salesrep.salesrep_id)) AND (custinfo.cust_curr_id = dc.curr_id)) AND (custinfo.cust_creditlmt_curr_id = clc.curr_id)) AND (custinfo.cust_terms_id = terms.terms_id)); ALTER TABLE api.customer OWNER TO admin; -- -- Name: VIEW customer; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW customer IS 'Customer'; SET search_path = public, pg_catalog; -- -- Name: taxauth; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE taxauth ( taxauth_id integer NOT NULL, taxauth_code text NOT NULL, taxauth_name text, taxauth_extref text, taxauth_addr_id integer, taxauth_curr_id integer, taxauth_county text, taxauth_accnt_id integer, CONSTRAINT taxauth_taxauth_code_check CHECK ((taxauth_code <> ''::text)) ); ALTER TABLE public.taxauth OWNER TO admin; -- -- Name: TABLE taxauth; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE taxauth IS 'The Tax Authority table.'; -- -- Name: COLUMN taxauth.taxauth_curr_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxauth.taxauth_curr_id IS 'The required currency for recording tax information as. NULL means no preference.'; -- -- Name: taxreg; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE taxreg ( taxreg_id integer NOT NULL, taxreg_rel_id integer NOT NULL, taxreg_rel_type character(1), taxreg_taxauth_id integer, taxreg_number text NOT NULL, taxreg_taxzone_id integer, taxreg_effective date DEFAULT startoftime(), taxreg_expires date DEFAULT endoftime(), taxreg_notes text DEFAULT ''::text, CONSTRAINT taxreg_taxreg_number_check CHECK ((taxreg_number <> ''::text)) ); ALTER TABLE public.taxreg OWNER TO admin; -- -- Name: TABLE taxreg; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE taxreg IS 'Stores Tax Registration numbers related to objects and a given tax authority. The rel_id specifies the object id and teh rel_type specifies the object type. See column comment for additional detail on types.'; -- -- Name: COLUMN taxreg.taxreg_rel_type; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxreg.taxreg_rel_type IS 'The type of relation this record is for. Known values are C=Customer, V=Vendor, NULL=This Manufacturer in which case taxreg_rel_id is meaningless and should be -1.'; SET search_path = api, pg_catalog; -- -- Name: customertaxreg; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW customertaxreg AS SELECT (custinfo.cust_number)::character varying AS customer_number, (COALESCE(taxzone.taxzone_code, 'Any'::text))::character varying AS tax_zone, (taxauth.taxauth_code)::character varying AS tax_authority, taxreg.taxreg_number AS registration_number, CASE WHEN (taxreg.taxreg_effective = public.startoftime()) THEN 'Always'::text ELSE public.formatdate(taxreg.taxreg_effective) END AS start_date, CASE WHEN (taxreg.taxreg_expires = public.endoftime()) THEN 'Never'::text ELSE public.formatdate(taxreg.taxreg_expires) END AS end_date, taxreg.taxreg_notes AS notes FROM (((public.taxreg LEFT JOIN public.custinfo ON ((custinfo.cust_id = taxreg.taxreg_rel_id))) LEFT JOIN public.taxauth ON ((taxauth.taxauth_id = taxreg.taxreg_taxauth_id))) LEFT JOIN public.taxzone ON ((taxzone.taxzone_id = taxreg.taxreg_taxzone_id))) WHERE (taxreg.taxreg_rel_type = 'C'::bpchar) ORDER BY custinfo.cust_number, taxreg.taxreg_number; ALTER TABLE api.customertaxreg OWNER TO admin; -- -- Name: VIEW customertaxreg; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW customertaxreg IS 'Customer Tax Registrations'; -- -- Name: customertype; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW customertype AS SELECT (custtype.custtype_code)::character varying AS code, custtype.custtype_descrip AS description, custtype.custtype_char AS enable_characteristics_profile FROM public.custtype ORDER BY custtype.custtype_code; ALTER TABLE api.customertype OWNER TO admin; -- -- Name: VIEW customertype; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW customertype IS 'Customer Type'; -- -- Name: customertypechar; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW customertypechar AS SELECT (custtype.custtype_code)::character varying AS customer_type, ("char".char_name)::character varying AS characteristic, charass.charass_value AS value, charass.charass_default AS is_default FROM public.custtype, public."char", public.charass WHERE ((('CT'::text = charass.charass_target_type) AND (custtype.custtype_id = charass.charass_target_id)) AND (charass.charass_char_id = "char".char_id)); ALTER TABLE api.customertypechar OWNER TO admin; -- -- Name: VIEW customertypechar; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW customertypechar IS 'Customer Type Characteristics'; -- -- Name: custshipto; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW custshipto AS SELECT (custinfo.cust_number)::character varying AS customer_number, (shiptoinfo.shipto_num)::character varying AS shipto_number, shiptoinfo.shipto_active AS active, shiptoinfo.shipto_name AS name, shiptoinfo.shipto_default AS default_flag, addr.addr_number AS address_number, addr.addr_line1 AS address1, addr.addr_line2 AS address2, addr.addr_line3 AS address3, addr.addr_city AS city, addr.addr_state AS state, addr.addr_postalcode AS postal_code, addr.addr_country AS country, ''::text AS address_change, cntct.cntct_number AS contact_number, cntct.cntct_honorific AS honorific, cntct.cntct_first_name AS first, cntct.cntct_middle AS middle, cntct.cntct_last_name AS last, cntct.cntct_suffix AS suffix, cntct.cntct_title AS job_title, cntct.cntct_phone AS phone, cntct.cntct_fax AS fax, cntct.cntct_email AS email, ''::text AS contact_change, salesrep.salesrep_number AS sales_rep, (shiptoinfo.shipto_commission * 100.0) AS commission, shipzone.shipzone_name AS zone, taxzone.taxzone_code AS tax_zone, shiptoinfo.shipto_shipvia AS ship_via, shipform.shipform_name AS ship_form, shipchrg.shipchrg_name AS shipping_charges, CASE WHEN (shiptoinfo.shipto_ediprofile_id = (-1)) THEN 'No EDI'::text WHEN (shiptoinfo.shipto_ediprofile_id = (-2)) THEN 'Use Customer Master'::text ELSE public.getediprofilename(shiptoinfo.shipto_ediprofile_id) END AS edi_profile, shiptoinfo.shipto_comments AS general_notes, shiptoinfo.shipto_shipcomments AS shipping_notes FROM public.custinfo, ((((((public.shiptoinfo LEFT JOIN public.shipchrg ON ((shiptoinfo.shipto_shipchrg_id = shipchrg.shipchrg_id))) LEFT JOIN public.cntct ON ((shiptoinfo.shipto_cntct_id = cntct.cntct_id))) LEFT JOIN public.addr ON ((shiptoinfo.shipto_addr_id = addr.addr_id))) LEFT JOIN public.taxzone ON ((shiptoinfo.shipto_taxzone_id = taxzone.taxzone_id))) LEFT JOIN public.shipzone ON ((shiptoinfo.shipto_shipzone_id = shipzone.shipzone_id))) LEFT JOIN public.salesrep ON ((shiptoinfo.shipto_salesrep_id = salesrep.salesrep_id))), public.shipform WHERE ((custinfo.cust_id = shiptoinfo.shipto_cust_id) AND (custinfo.cust_shipform_id = shipform.shipform_id)); ALTER TABLE api.custshipto OWNER TO admin; -- -- Name: VIEW custshipto; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW custshipto IS 'Customer Shipto Address'; -- -- Name: custtax; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW custtax AS SELECT (custinfo.cust_number)::character varying AS customer_number, (taxauth.taxauth_code)::character varying AS tax_authority, taxreg.taxreg_number AS registration_number FROM public.custinfo, public.taxauth, public.taxreg WHERE (((taxreg.taxreg_rel_type = 'C'::bpchar) AND (taxreg.taxreg_rel_id = custinfo.cust_id)) AND (taxreg.taxreg_taxauth_id = taxauth.taxauth_id)); ALTER TABLE api.custtax OWNER TO admin; -- -- Name: VIEW custtax; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW custtax IS 'Customer Tax Registration'; SET search_path = public, pg_catalog; -- -- Name: dept; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE dept ( dept_id integer NOT NULL, dept_number text NOT NULL, dept_name text NOT NULL, CONSTRAINT dept_dept_number_check CHECK ((dept_number <> ''::text)) ); ALTER TABLE public.dept OWNER TO admin; -- -- Name: TABLE dept; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE dept IS 'List of Departments'; -- -- Name: emp; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE emp ( emp_id integer NOT NULL, emp_code text NOT NULL, emp_number text NOT NULL, emp_active boolean DEFAULT true NOT NULL, emp_cntct_id integer, emp_warehous_id integer, emp_mgr_emp_id integer, emp_wage_type text NOT NULL, emp_wage numeric, emp_wage_curr_id integer DEFAULT basecurrid(), emp_wage_period text NOT NULL, emp_dept_id integer, emp_shift_id integer, emp_notes text, emp_image_id integer, emp_username text, emp_extrate numeric, emp_extrate_period text NOT NULL, emp_startdate date DEFAULT ('now'::text)::date, emp_name text NOT NULL, CONSTRAINT emp_check CHECK (((((COALESCE(emp_wage_type, ''::text) = ''::text) OR (COALESCE(emp_wage_type, ''::text) = 'H'::text)) OR (COALESCE(emp_wage_type, ''::text) = 'S'::text)) AND ((COALESCE(emp_wage, (0)::numeric) = (0)::numeric) OR ((COALESCE(emp_wage_type, ''::text) <> ''::text) AND (emp_wage IS NOT NULL))))), CONSTRAINT emp_emp_code_check CHECK ((emp_code <> ''::text)), CONSTRAINT emp_emp_number_check CHECK ((emp_number <> ''::text)), CONSTRAINT emp_emp_wage_period_check CHECK ((((((((COALESCE(emp_wage_period, ''::text) = ''::text) OR (COALESCE(emp_wage_period, ''::text) = 'H'::text)) OR (COALESCE(emp_wage_period, ''::text) = 'D'::text)) OR (COALESCE(emp_wage_period, ''::text) = 'W'::text)) OR (COALESCE(emp_wage_period, ''::text) = 'BW'::text)) OR (COALESCE(emp_wage_period, ''::text) = 'M'::text)) OR (COALESCE(emp_wage_period, ''::text) = 'Y'::text))) ); ALTER TABLE public.emp OWNER TO admin; -- -- Name: TABLE emp; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE emp IS 'Employee table describing the basic properties of an employee. Employees need not be system users.'; -- -- Name: COLUMN emp.emp_code; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN emp.emp_code IS 'Short, human-readable name for employee. This value is kept synchronized with usr_username and salesrep_number, and so is unique across all three tables emp, usr, and salesrep.'; -- -- Name: COLUMN emp.emp_number; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN emp.emp_number IS 'Official employee number. This might be used for ID badges, payroll accounting, or other purposes.'; -- -- Name: COLUMN emp.emp_mgr_emp_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN emp.emp_mgr_emp_id IS 'Internal ID of this employee''s manager/supervisor.'; -- -- Name: COLUMN emp.emp_wage_type; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN emp.emp_wage_type IS 'The nature of the wage or employment agreement. ''H'' indicates this employee is paid on an hourly basis (or some other period) while ''S'' indicates this employee is salaried.'; -- -- Name: COLUMN emp.emp_wage_period; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN emp.emp_wage_period IS 'The periodicity of wage payment: ''H'' for hourly, ''D'' for daily, ''W'' for weekly, ''BW'' for biweekly, ''M'' for monthly, ''Y'' for yearly.'; -- -- Name: COLUMN emp.emp_username; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN emp.emp_username IS 'DEPRECATED - the relationship between Employee and User is now maintained through the crmacct table.'; -- -- Name: COLUMN emp.emp_extrate_period; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN emp.emp_extrate_period IS 'The periodicity of external rate payment: ''H'' for hourly, ''D'' for daily, ''W'' for weekly, ''BW'' for biweekly, ''M'' for monthly, ''Y'' for yearly.'; -- -- Name: shift; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE shift ( shift_id integer NOT NULL, shift_number text NOT NULL, shift_name text NOT NULL, CONSTRAINT shift_shift_number_check CHECK ((shift_number <> ''::text)) ); ALTER TABLE public.shift OWNER TO admin; -- -- Name: TABLE shift; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE shift IS 'List of work Shifts'; SET search_path = api, pg_catalog; -- -- Name: employee; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW employee AS SELECT (e.emp_code)::character varying AS code, (e.emp_number)::character varying AS number, e.emp_active AS active, e.emp_startdate AS start_date, cntct.cntct_number AS contact_number, cntct.cntct_honorific AS honorific, cntct.cntct_first_name AS first, cntct.cntct_middle AS middle, cntct.cntct_last_name AS last, cntct.cntct_suffix AS suffix, cntct.cntct_title AS job_title, cntct.cntct_phone AS voice, cntct.cntct_phone2 AS alternate, cntct.cntct_fax AS fax, cntct.cntct_email AS email, cntct.cntct_webaddr AS web, ''::text AS contact_change, addr.addr_number AS address_number, addr.addr_line1 AS address1, addr.addr_line2 AS address2, addr.addr_line3 AS address3, addr.addr_city AS city, addr.addr_state AS state, addr.addr_postalcode AS postalcode, addr.addr_country AS country, ''::text AS address_change, whsinfo.warehous_code AS site, m.emp_code AS manager_code, CASE WHEN (e.emp_wage_type = 'H'::text) THEN 'Hourly'::text WHEN (e.emp_wage_type = 'S'::text) THEN 'Salaried'::text WHEN (e.emp_wage_type IS NULL) THEN NULL::text ELSE 'Error'::text END AS wage_type, e.emp_wage AS wage, curr_symbol.curr_abbr AS wage_currency, CASE WHEN (e.emp_wage_period = 'H'::text) THEN 'Hour'::text WHEN (e.emp_wage_period = 'D'::text) THEN 'Day'::text WHEN (e.emp_wage_period = 'W'::text) THEN 'Week'::text WHEN (e.emp_wage_period = 'BW'::text) THEN 'Biweek'::text WHEN (e.emp_wage_period = 'M'::text) THEN 'Month'::text WHEN (e.emp_wage_period = 'Y'::text) THEN 'Year'::text WHEN (e.emp_wage_period IS NULL) THEN NULL::text ELSE 'Error'::text END AS wage_period, dept.dept_number AS department, shift.shift_number AS shift, (crmacct.crmacct_usr_username IS NOT NULL) AS is_user, (salesrep.salesrep_id IS NOT NULL) AS is_salesrep, (vendinfo.vend_id IS NOT NULL) AS is_vendor, e.emp_notes AS notes, image.image_name AS image, e.emp_extrate AS rate, curr_symbol.curr_abbr AS billing_currency, CASE WHEN (e.emp_extrate_period = 'H'::text) THEN 'Hour'::text WHEN (e.emp_extrate_period = 'D'::text) THEN 'Day'::text WHEN (e.emp_extrate_period = 'W'::text) THEN 'Week'::text WHEN (e.emp_extrate_period = 'BW'::text) THEN 'Biweek'::text WHEN (e.emp_extrate_period = 'M'::text) THEN 'Month'::text WHEN (e.emp_extrate_period = 'Y'::text) THEN 'Year'::text WHEN (e.emp_extrate_period IS NULL) THEN NULL::text ELSE 'Error'::text END AS billing_period FROM (((((((((((public.emp e JOIN public.crmacct ON ((e.emp_id = crmacct.crmacct_emp_id))) LEFT JOIN public.cntct ON ((e.emp_cntct_id = cntct.cntct_id))) LEFT JOIN public.addr ON ((cntct.cntct_addr_id = addr.addr_id))) LEFT JOIN public.whsinfo ON ((e.emp_warehous_id = whsinfo.warehous_id))) LEFT JOIN public.emp m ON ((e.emp_mgr_emp_id = m.emp_id))) LEFT JOIN public.dept ON ((e.emp_dept_id = dept.dept_id))) LEFT JOIN public.shift ON ((e.emp_shift_id = shift.shift_id))) LEFT JOIN public.salesrep ON ((crmacct.crmacct_salesrep_id = salesrep.salesrep_id))) LEFT JOIN public.vendinfo ON ((crmacct.crmacct_vend_id = vendinfo.vend_id))) LEFT JOIN public.image ON ((e.emp_image_id = image.image_id))) JOIN public.curr_symbol ON ((e.emp_wage_curr_id = curr_symbol.curr_id))); ALTER TABLE api.employee OWNER TO admin; -- -- Name: VIEW employee; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW employee IS 'Employee'; -- -- Name: employeechar; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW employeechar AS SELECT (emp.emp_code)::character varying AS employee_code, ("char".char_name)::character varying AS characteristic, charass.charass_value AS value FROM public.emp, public."char", public.charass WHERE ((('EMP'::text = charass.charass_target_type) AND (emp.emp_id = charass.charass_target_id)) AND (charass.charass_char_id = "char".char_id)); ALTER TABLE api.employeechar OWNER TO admin; -- -- Name: VIEW employeechar; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW employeechar IS 'Employee Characteristics'; -- -- Name: employeecomment; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW employeecomment AS SELECT (emp.emp_code)::character varying AS code, (cmnttype.cmnttype_name)::character varying AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.emp, public.cmnttype, public.comment WHERE (((comment.comment_source = 'EMP'::text) AND (comment.comment_source_id = emp.emp_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); ALTER TABLE api.employeecomment OWNER TO admin; -- -- Name: VIEW employeecomment; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW employeecomment IS 'Employee Comment'; SET search_path = public, pg_catalog; -- -- Name: shipdata; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE shipdata ( shipdata_cohead_number text NOT NULL, shipdata_cosmisc_tracknum text NOT NULL, shipdata_cosmisc_packnum_tracknum text NOT NULL, shipdata_weight numeric(16,4), shipdata_base_freight numeric(16,4), shipdata_total_freight numeric(16,4), shipdata_shipper text DEFAULT 'UPS'::text, shipdata_billing_option text, shipdata_package_type text, shipdata_void_ind character(1) NOT NULL, shipdata_lastupdated timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, shipdata_shiphead_number text, shipdata_base_freight_curr_id integer DEFAULT basecurrid(), shipdata_total_freight_curr_id integer DEFAULT basecurrid() ); ALTER TABLE public.shipdata OWNER TO admin; -- -- Name: TABLE shipdata; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE shipdata IS 'Shipping Interface information - note that the shipdata_cohead_nember is text and not int. That is due to ODBC chopping off during the transfer'; SET search_path = api, pg_catalog; -- -- Name: extshipmaint; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW extshipmaint AS SELECT (shipdata.shipdata_cohead_number)::character varying AS so_number, (shipdata.shipdata_shiphead_number)::character varying AS shipment_number, (shipdata.shipdata_shipper)::character varying AS shipper, (shipdata.shipdata_cosmisc_packnum_tracknum)::character varying AS package_tracking_number, shipdata.shipdata_void_ind AS void, shipdata.shipdata_billing_option AS billing_option, shipdata.shipdata_weight AS weight, shipdata.shipdata_base_freight AS base_freight, base.curr_abbr AS base_freight_currency, shipdata.shipdata_total_freight AS total_freight, total.curr_abbr AS total_freight_currency, shipdata.shipdata_package_type AS package_type, shipdata.shipdata_cosmisc_tracknum AS tracking_number, shipdata.shipdata_lastupdated AS last_updated FROM public.shipdata, public.curr_symbol base, public.curr_symbol total WHERE ((shipdata.shipdata_base_freight_curr_id = base.curr_id) AND (shipdata.shipdata_total_freight_curr_id = total.curr_id)) ORDER BY shipdata.shipdata_cohead_number, shipdata.shipdata_shiphead_number; ALTER TABLE api.extshipmaint OWNER TO admin; -- -- Name: VIEW extshipmaint; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW extshipmaint IS 'External Shipping Maintenance'; SET search_path = public, pg_catalog; -- -- Name: freightclass; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE freightclass ( freightclass_id integer NOT NULL, freightclass_code text NOT NULL, freightclass_descrip text, CONSTRAINT freightclass_freightclass_code_check CHECK ((freightclass_code <> ''::text)) ); ALTER TABLE public.freightclass OWNER TO admin; -- -- Name: TABLE freightclass; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE freightclass IS 'This table is the freight price schedules.'; -- -- Name: ipsfreight; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE ipsfreight ( ipsfreight_id integer NOT NULL, ipsfreight_ipshead_id integer NOT NULL, ipsfreight_qtybreak numeric DEFAULT 0 NOT NULL, ipsfreight_price numeric DEFAULT 0 NOT NULL, ipsfreight_type character(1) NOT NULL, ipsfreight_warehous_id integer, ipsfreight_shipzone_id integer, ipsfreight_freightclass_id integer, ipsfreight_shipvia text ); ALTER TABLE public.ipsfreight OWNER TO admin; -- -- Name: ipshead; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE ipshead ( ipshead_id integer DEFAULT nextval(('"ipshead_ipshead_id_seq"'::text)::regclass) NOT NULL, ipshead_name text NOT NULL, ipshead_descrip text, ipshead_effective date, ipshead_expires date, ipshead_curr_id integer DEFAULT basecurrid() NOT NULL, ipshead_updated date, CONSTRAINT ipshead_ipshead_name_check CHECK ((ipshead_name <> ''::text)) ); ALTER TABLE public.ipshead OWNER TO admin; -- -- Name: TABLE ipshead; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE ipshead IS 'Pricing Schedule header information'; SET search_path = api, pg_catalog; -- -- Name: freightpricingscheduleitem; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW freightpricingscheduleitem AS SELECT (ipshead.ipshead_name)::character varying AS pricing_schedule, ipsfreight.ipsfreight_qtybreak AS qty_break, (qtyuom.uom_name)::character varying AS qty_uom, ipsfreight.ipsfreight_price AS price, CASE WHEN (ipsfreight.ipsfreight_type = 'F'::bpchar) THEN 'Flat Rate'::text ELSE 'Price Per UOM'::text END AS price_type, COALESCE(whsinfo.warehous_code, 'Any'::text) AS from_site, COALESCE(shipzone.shipzone_name, 'Any'::text) AS to_shipzone, COALESCE(ipsfreight.ipsfreight_shipvia, 'Any'::text) AS ship_via, COALESCE(freightclass.freightclass_code, 'Any'::text) AS freight_class FROM (((((public.ipsfreight JOIN public.ipshead ON ((ipsfreight.ipsfreight_ipshead_id = ipshead.ipshead_id))) LEFT JOIN public.uom qtyuom ON (qtyuom.uom_item_weight)) LEFT JOIN public.whsinfo ON ((whsinfo.warehous_id = ipsfreight.ipsfreight_warehous_id))) LEFT JOIN public.shipzone ON ((shipzone.shipzone_id = ipsfreight.ipsfreight_shipzone_id))) LEFT JOIN public.freightclass ON ((freightclass.freightclass_id = ipsfreight.ipsfreight_freightclass_id))); ALTER TABLE api.freightpricingscheduleitem OWNER TO admin; -- -- Name: VIEW freightpricingscheduleitem; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW freightpricingscheduleitem IS 'Freight Pricing Schedule Item'; -- -- Name: glaccount; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW glaccount AS SELECT (accnt.accnt_company)::character varying AS company, (accnt.accnt_profit)::character varying AS profit_center, (accnt.accnt_number)::character varying AS account_number, (accnt.accnt_sub)::character varying AS sub_account, accnt.accnt_descrip AS description, accnt.accnt_extref AS ext_reference, CASE WHEN (accnt.accnt_type = 'A'::bpchar) THEN 'Asset'::text WHEN (accnt.accnt_type = 'L'::bpchar) THEN 'Liability'::text WHEN (accnt.accnt_type = 'E'::bpchar) THEN 'Expense'::text WHEN (accnt.accnt_type = 'R'::bpchar) THEN 'Revenue'::text WHEN (accnt.accnt_type = 'Q'::bpchar) THEN 'Equity'::text ELSE '?'::text END AS type, accnt.accnt_subaccnttype_code AS sub_type, accnt.accnt_forwardupdate AS forward_update_trial_balances, accnt.accnt_comments AS notes FROM public.accnt ORDER BY accnt.accnt_company, accnt.accnt_profit, accnt.accnt_number, accnt.accnt_sub; ALTER TABLE api.glaccount OWNER TO admin; -- -- Name: VIEW glaccount; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW glaccount IS 'GL Account'; SET search_path = public, pg_catalog; -- -- Name: incdtcat; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE incdtcat ( incdtcat_id integer NOT NULL, incdtcat_name text NOT NULL, incdtcat_order integer, incdtcat_descrip text, incdtcat_ediprofile_id integer, CONSTRAINT incdtcat_incdtcat_name_check CHECK ((incdtcat_name <> ''::text)) ); ALTER TABLE public.incdtcat OWNER TO admin; -- -- Name: TABLE incdtcat; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE incdtcat IS 'Incident Category table'; -- -- Name: incdtpriority; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE incdtpriority ( incdtpriority_id integer NOT NULL, incdtpriority_name text NOT NULL, incdtpriority_order integer, incdtpriority_descrip text, CONSTRAINT incdtpriority_incdtpriority_name_check CHECK ((incdtpriority_name <> ''::text)) ); ALTER TABLE public.incdtpriority OWNER TO admin; -- -- Name: TABLE incdtpriority; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE incdtpriority IS 'Incident Priority table'; -- -- Name: incdtresolution; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE incdtresolution ( incdtresolution_id integer NOT NULL, incdtresolution_name text NOT NULL, incdtresolution_order integer, incdtresolution_descrip text, CONSTRAINT incdtresolution_incdtresolution_name_check CHECK ((incdtresolution_name <> ''::text)) ); ALTER TABLE public.incdtresolution OWNER TO admin; -- -- Name: TABLE incdtresolution; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE incdtresolution IS 'Incident Resolution table'; -- -- Name: incdtseverity; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE incdtseverity ( incdtseverity_id integer NOT NULL, incdtseverity_name text NOT NULL, incdtseverity_order integer, incdtseverity_descrip text, CONSTRAINT incdtseverity_incdtseverity_name_check CHECK ((incdtseverity_name <> ''::text)) ); ALTER TABLE public.incdtseverity OWNER TO admin; -- -- Name: TABLE incdtseverity; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE incdtseverity IS 'Incident Severity table'; SET search_path = api, pg_catalog; -- -- Name: incident; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW incident AS SELECT incdt.incdt_number AS incident_number, incdtcat.incdtcat_name AS category, incdt.incdt_summary AS description, crmacct.crmacct_number AS crm_account, incdt.incdt_assigned_username AS assigned_to, CASE WHEN (incdt.incdt_status = 'N'::bpchar) THEN 'New'::text WHEN (incdt.incdt_status = 'F'::bpchar) THEN 'Feedback'::text WHEN (incdt.incdt_status = 'C'::bpchar) THEN 'Confirmed'::text WHEN (incdt.incdt_status = 'A'::bpchar) THEN 'Assigned'::text WHEN (incdt.incdt_status = 'R'::bpchar) THEN 'Resolved'::text WHEN (incdt.incdt_status = 'L'::bpchar) THEN 'Closed'::text ELSE '?'::text END AS status, incdtseverity.incdtseverity_name AS severity, incdtpriority.incdtpriority_name AS priority, incdtresolution.incdtresolution_name AS resolution, cntct.cntct_number AS contact_number, cntct.cntct_honorific AS honorific, cntct.cntct_first_name AS first, cntct.cntct_middle AS middle, cntct.cntct_last_name AS last, cntct.cntct_suffix AS suffix, cntct.cntct_title AS job_title, cntct.cntct_phone AS phone, cntct.cntct_fax AS fax, cntct.cntct_email AS email, ''::text AS contact_change, incdt.incdt_descrip AS notes, item.item_number, incdt.incdt_lotserial AS lot_serial_number, CASE WHEN (aropen.aropen_doctype = 'C'::bpchar) THEN 'C/M'::text WHEN (aropen.aropen_doctype = 'D'::bpchar) THEN 'D/M'::text WHEN (aropen.aropen_doctype = 'I'::bpchar) THEN 'Invoice'::text WHEN (aropen.aropen_doctype = 'R'::bpchar) THEN 'C/D'::text ELSE ''::text END AS ar_doc_type, aropen.aropen_docnumber AS ar_doc_number FROM ((((((((public.incdt LEFT JOIN public.incdtcat ON ((incdtcat.incdtcat_id = incdt.incdt_incdtcat_id))) LEFT JOIN public.crmacct ON ((crmacct.crmacct_id = incdt.incdt_crmacct_id))) LEFT JOIN public.incdtseverity ON ((incdtseverity.incdtseverity_id = incdt.incdt_incdtseverity_id))) LEFT JOIN public.incdtpriority ON ((incdtpriority.incdtpriority_id = incdt.incdt_incdtpriority_id))) LEFT JOIN public.incdtresolution ON ((incdtresolution.incdtresolution_id = incdt.incdt_incdtresolution_id))) LEFT JOIN public.cntct ON ((cntct.cntct_id = incdt.incdt_cntct_id))) LEFT JOIN public.item ON ((item.item_id = incdt.incdt_item_id))) LEFT JOIN public.aropen ON ((aropen.aropen_id = incdt.incdt_aropen_id))); ALTER TABLE api.incident OWNER TO admin; -- -- Name: VIEW incident; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW incident IS 'Incident'; -- -- Name: incidentchar; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW incidentchar AS SELECT incdt.incdt_number AS incident_number, ("char".char_name)::character varying AS characteristic, charass.charass_value AS value FROM public.incdt, public."char", public.charass WHERE ((('INCDT'::text = charass.charass_target_type) AND (incdt.incdt_id = charass.charass_target_id)) AND (charass.charass_char_id = "char".char_id)); ALTER TABLE api.incidentchar OWNER TO admin; -- -- Name: VIEW incidentchar; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW incidentchar IS 'Incident Characteristics'; -- -- Name: incidentcomment; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW incidentcomment AS SELECT incdt.incdt_number AS incident_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text, comment.comment_public AS public FROM public.incdt, public.cmnttype, public.comment WHERE (((comment.comment_source = 'INCDT'::text) AND (comment.comment_source_id = incdt.incdt_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); ALTER TABLE api.incidentcomment OWNER TO admin; -- -- Name: VIEW incidentcomment; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW incidentcomment IS 'Incident Comment'; -- -- Name: incidentfile; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW incidentfile AS SELECT incdt.incdt_number AS incident_number, url.url_title AS title, url.url_url AS url FROM public.incdt, public.url WHERE ((incdt.incdt_id = url.url_source_id) AND (url.url_source = 'INCDT'::text)); ALTER TABLE api.incidentfile OWNER TO admin; -- -- Name: VIEW incidentfile; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW incidentfile IS 'Incident File'; -- -- Name: incidentimage; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW incidentimage AS SELECT incdt.incdt_number AS incident_number, image.image_name FROM public.incdt, public.imageass, public.image WHERE (((incdt.incdt_id = imageass.imageass_source_id) AND (imageass.imageass_source = 'INCDT'::text)) AND (imageass.imageass_image_id = image.image_id)); ALTER TABLE api.incidentimage OWNER TO admin; -- -- Name: VIEW incidentimage; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW incidentimage IS 'Incident Image'; SET search_path = public, pg_catalog; -- -- Name: classcode; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE classcode ( classcode_id integer DEFAULT nextval(('classcode_classcode_id_seq'::text)::regclass) NOT NULL, classcode_code text NOT NULL, classcode_descrip text, classcode_mfg boolean, classcode_creator text, classcode_created timestamp without time zone, classcode_modifier text, classcode_modified timestamp without time zone, classcode_type text, CONSTRAINT classcode_classcode_code_check CHECK ((classcode_code <> ''::text)) ); ALTER TABLE public.classcode OWNER TO admin; -- -- Name: TABLE classcode; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE classcode IS 'Class Code information'; -- -- Name: prodcat; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE prodcat ( prodcat_id integer DEFAULT nextval(('prodcat_prodcat_id_seq'::text)::regclass) NOT NULL, prodcat_code text NOT NULL, prodcat_descrip text, CONSTRAINT prodcat_prodcat_code_check CHECK ((prodcat_code <> ''::text)) ); ALTER TABLE public.prodcat OWNER TO admin; -- -- Name: TABLE prodcat; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE prodcat IS 'Product Category information'; SET search_path = api, pg_catalog; -- -- Name: item; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW item AS SELECT (item.item_number)::character varying AS item_number, item.item_active AS active, item.item_descrip1 AS description1, item.item_descrip2 AS description2, CASE WHEN (item.item_type = 'P'::bpchar) THEN 'Purchased'::text WHEN (item.item_type = 'M'::bpchar) THEN 'Manufactured'::text WHEN (item.item_type = 'J'::bpchar) THEN 'Job'::text WHEN (item.item_type = 'K'::bpchar) THEN 'Kit'::text WHEN (item.item_type = 'F'::bpchar) THEN 'Phantom'::text WHEN (item.item_type = 'R'::bpchar) THEN 'Reference'::text WHEN (item.item_type = 'S'::bpchar) THEN 'Costing'::text WHEN (item.item_type = 'T'::bpchar) THEN 'Tooling'::text WHEN (item.item_type = 'O'::bpchar) THEN 'Outside Process'::text WHEN (item.item_type = 'L'::bpchar) THEN 'Planning'::text WHEN (item.item_type = 'B'::bpchar) THEN 'Breeder'::text WHEN (item.item_type = 'C'::bpchar) THEN 'Co-Product'::text WHEN (item.item_type = 'Y'::bpchar) THEN 'By-Product'::text ELSE NULL::text END AS item_type, item.item_maxcost AS maximum_desired_cost, classcode.classcode_code AS class_code, i.uom_name AS inventory_uom, item.item_picklist AS pick_list_item, item.item_fractional AS fractional, item.item_config AS configured, item.item_sold AS item_is_sold, prodcat.prodcat_code AS product_category, item.item_exclusive AS exclusive, item.item_listprice AS list_price, item.item_listcost AS list_cost, p.uom_name AS list_price_uom, item.item_upccode AS upc_code, item.item_prodweight AS product_weight, item.item_packweight AS packaging_weight, item.item_comments AS notes, item.item_extdescrip AS ext_description FROM (public.item LEFT JOIN public.prodcat ON ((item.item_prodcat_id = prodcat.prodcat_id))), public.classcode, public.uom i, public.uom p WHERE (((item.item_classcode_id = classcode.classcode_id) AND (item.item_inv_uom_id = i.uom_id)) AND (item.item_price_uom_id = p.uom_id)) ORDER BY (item.item_number)::character varying; ALTER TABLE api.item OWNER TO admin; -- -- Name: VIEW item; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW item IS 'Item'; SET search_path = public, pg_catalog; -- -- Name: itemalias; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE itemalias ( itemalias_id integer DEFAULT nextval(('"itemalias_itemalias_id_seq"'::text)::regclass) NOT NULL, itemalias_item_id integer NOT NULL, itemalias_number text NOT NULL, itemalias_comments text, itemalias_usedescrip boolean NOT NULL, itemalias_descrip1 text, itemalias_descrip2 text, CONSTRAINT itemalias_itemalias_number_check CHECK ((itemalias_number <> ''::text)) ); ALTER TABLE public.itemalias OWNER TO admin; -- -- Name: TABLE itemalias; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE itemalias IS 'Item Alias information'; SET search_path = api, pg_catalog; -- -- Name: itemalias; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW itemalias AS SELECT (item.item_number)::character varying AS item_number, itemalias.itemalias_number AS alias_number, itemalias.itemalias_usedescrip AS use_description, itemalias.itemalias_descrip1 AS description1, itemalias.itemalias_descrip2 AS description2, itemalias.itemalias_comments AS comments FROM public.item, public.itemalias WHERE (item.item_id = itemalias.itemalias_item_id); ALTER TABLE api.itemalias OWNER TO admin; -- -- Name: VIEW itemalias; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW itemalias IS 'Item Alias'; -- -- Name: itemchar; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW itemchar AS SELECT (item.item_number)::character varying AS item_number, ("char".char_name)::character varying AS characteristic, charass.charass_value AS value, charass.charass_default AS is_default FROM public.item, public."char", public.charass WHERE ((('I'::text = charass.charass_target_type) AND (item.item_id = charass.charass_target_id)) AND (charass.charass_char_id = "char".char_id)); ALTER TABLE api.itemchar OWNER TO admin; -- -- Name: VIEW itemchar; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW itemchar IS 'Item Characteristic'; -- -- Name: itemcomment; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW itemcomment AS SELECT (item.item_number)::character varying AS item_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.item, public.cmnttype, public.comment WHERE (((comment.comment_source = 'I'::text) AND (comment.comment_source_id = item.item_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); ALTER TABLE api.itemcomment OWNER TO admin; -- -- Name: VIEW itemcomment; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW itemcomment IS 'Item Comments'; SET search_path = public, pg_catalog; -- -- Name: costelem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE costelem ( costelem_id integer DEFAULT nextval(('costelem_costelem_id_seq'::text)::regclass) NOT NULL, costelem_type text NOT NULL, costelem_sys boolean, costelem_po boolean, costelem_active boolean, costelem_exp_accnt_id integer, costelem_cost_item_id integer, CONSTRAINT costelem_costelem_type_check CHECK ((costelem_type <> ''::text)) ); ALTER TABLE public.costelem OWNER TO admin; -- -- Name: TABLE costelem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE costelem IS 'Costing Element information'; -- -- Name: itemcost; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE itemcost ( itemcost_id integer DEFAULT nextval(('itemcost_itemcost_id_seq'::text)::regclass) NOT NULL, itemcost_item_id integer NOT NULL, itemcost_costelem_id integer NOT NULL, itemcost_lowlevel boolean DEFAULT false NOT NULL, itemcost_stdcost numeric(16,6) DEFAULT 0 NOT NULL, itemcost_posted date, itemcost_actcost numeric(16,6) DEFAULT 0 NOT NULL, itemcost_updated date, itemcost_curr_id integer DEFAULT basecurrid() NOT NULL ); ALTER TABLE public.itemcost OWNER TO admin; -- -- Name: TABLE itemcost; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE itemcost IS 'Item Cost information'; SET search_path = api, pg_catalog; -- -- Name: itemcost; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW itemcost AS SELECT (item.item_number)::character varying(100) AS item_number, (costelem.costelem_type)::character varying(100) AS costing_element, itemcost.itemcost_actcost AS actual_cost, curr_symbol.curr_abbr AS currency, false AS post_to_standard FROM (((public.itemcost LEFT JOIN public.item ON ((itemcost.itemcost_item_id = item.item_id))) LEFT JOIN public.costelem ON ((itemcost.itemcost_costelem_id = costelem.costelem_id))) LEFT JOIN public.curr_symbol ON ((itemcost.itemcost_curr_id = curr_symbol.curr_id))) ORDER BY (item.item_number)::character varying(100), (costelem.costelem_type)::character varying(100); ALTER TABLE api.itemcost OWNER TO admin; -- -- Name: VIEW itemcost; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW itemcost IS 'Item Cost'; -- -- Name: itemfile; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW itemfile AS SELECT (item.item_number)::character varying AS item_number, url.url_title AS title, url.url_url AS url FROM public.item, public.url WHERE ((item.item_id = url.url_source_id) AND (url.url_source = 'I'::text)); ALTER TABLE api.itemfile OWNER TO admin; -- -- Name: VIEW itemfile; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW itemfile IS 'Item File'; -- -- Name: itemimage; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW itemimage AS SELECT (item.item_number)::character varying AS item_number, CASE WHEN (imageass.imageass_purpose = 'P'::bpchar) THEN 'Product Description'::text WHEN (imageass.imageass_purpose = 'I'::bpchar) THEN 'Inventory Description'::text WHEN (imageass.imageass_purpose = 'E'::bpchar) THEN 'Engineering Reference'::text WHEN (imageass.imageass_purpose = 'M'::bpchar) THEN 'Miscellaneous'::text ELSE 'Other'::text END AS purpose, image.image_name FROM public.item, public.imageass, public.image WHERE (((item.item_id = imageass.imageass_source_id) AND (imageass.imageass_source = 'I'::text)) AND (imageass.imageass_image_id = image.image_id)); ALTER TABLE api.itemimage OWNER TO admin; -- -- Name: VIEW itemimage; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW itemimage IS 'Item Image'; SET search_path = public, pg_catalog; -- -- Name: costcat; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE costcat ( costcat_id integer DEFAULT nextval(('costcat_costcat_id_seq'::text)::regclass) NOT NULL, costcat_code text NOT NULL, costcat_descrip text, costcat_asset_accnt_id integer, costcat_liability_accnt_id integer, costcat_adjustment_accnt_id integer, costcat_matusage_accnt_id integer, costcat_purchprice_accnt_id integer, costcat_laboroverhead_accnt_id integer, costcat_scrap_accnt_id integer, costcat_invcost_accnt_id integer, costcat_wip_accnt_id integer, costcat_shipasset_accnt_id integer, costcat_mfgscrap_accnt_id integer, costcat_transform_accnt_id integer, costcat_freight_accnt_id integer, costcat_toliability_accnt_id integer, costcat_exp_accnt_id integer, CONSTRAINT costcat_costcat_code_check CHECK ((costcat_code <> ''::text)) ); ALTER TABLE public.costcat OWNER TO admin; -- -- Name: TABLE costcat; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE costcat IS 'Cost Category information'; -- -- Name: location; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE location ( location_id integer DEFAULT nextval(('location_location_id_seq'::text)::regclass) NOT NULL, location_warehous_id integer NOT NULL, location_name text NOT NULL, location_descrip text, location_restrict boolean, location_netable boolean, location_whsezone_id integer, location_aisle text, location_rack text, location_bin text ); ALTER TABLE public.location OWNER TO admin; -- -- Name: TABLE location; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE location IS 'Warehouse Location information'; -- -- Name: plancode; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE plancode ( plancode_id integer DEFAULT nextval(('plancode_plancode_id_seq'::text)::regclass) NOT NULL, plancode_code text NOT NULL, plancode_name text, plancode_mpsexplosion character(1), plancode_consumefcst boolean, plancode_mrpexcp_resched boolean, plancode_mrpexcp_delete boolean, CONSTRAINT plancode_plancode_code_check CHECK ((plancode_code <> ''::text)) ); ALTER TABLE public.plancode OWNER TO admin; -- -- Name: TABLE plancode; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE plancode IS 'Planner Code information'; SET search_path = api, pg_catalog; -- -- Name: itemsite; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW itemsite AS SELECT (item.item_number)::character varying AS item_number, (whsinfo.warehous_code)::character varying AS site, itemsite.itemsite_active AS active, itemsite.itemsite_wosupply AS wo_supplied_at_site, itemsite.itemsite_createwo AS create_wos, itemsite.itemsite_posupply AS po_supplied_at_site, itemsite.itemsite_createpr AS create_prs, itemsite.itemsite_createsopr AS create_soprs, itemsite.itemsite_createsopo AS create_sopos, itemsite.itemsite_dropship AS dropship, itemsite.itemsite_sold AS sold_from_site, itemsite.itemsite_soldranking AS ranking, CASE WHEN (itemsite.itemsite_costmethod = 'N'::bpchar) THEN 'None'::text WHEN (itemsite.itemsite_costmethod = 'A'::bpchar) THEN 'Average'::text WHEN (itemsite.itemsite_costmethod = 'S'::bpchar) THEN 'Standard'::text WHEN (itemsite.itemsite_costmethod = 'J'::bpchar) THEN 'Job'::text ELSE NULL::text END AS cost_method, CASE WHEN (itemsite.itemsite_controlmethod = 'N'::bpchar) THEN 'None'::text WHEN (itemsite.itemsite_controlmethod = 'R'::bpchar) THEN 'Regular'::text WHEN (itemsite.itemsite_controlmethod = 'S'::bpchar) THEN 'Serial #'::text WHEN (itemsite.itemsite_controlmethod = 'L'::bpchar) THEN 'Lot #'::text ELSE NULL::text END AS control_method, plancode.plancode_code AS planner_code, costcat.costcat_code AS cost_category, itemsite.itemsite_stocked AS stocked, itemsite.itemsite_abcclass AS abc_class, itemsite.itemsite_autoabcclass AS allow_automatic_updates, itemsite.itemsite_cyclecountfreq AS cycl_cnt_freq, itemsite.itemsite_eventfence AS event_fence, itemsite.itemsite_loccntrl AS multiple_location_control, public.formatlocationname(itemsite.itemsite_location_id) AS location, itemsite.itemsite_location AS user_defined_location, itemsite.itemsite_location_comments AS location_comment, itemsite.itemsite_disallowblankwip AS disallow_blank_wip_locations, itemsite.itemsite_useparams AS enforce_order_parameters, itemsite.itemsite_reorderlevel AS reorder_level, itemsite.itemsite_ordertoqty AS order_up_to, itemsite.itemsite_minordqty AS minimum_order, itemsite.itemsite_maxordqty AS maximum_order, itemsite.itemsite_multordqty AS order_multiple, itemsite.itemsite_useparamsmanual AS enforce_on_manual_orders, CASE WHEN (itemsite.itemsite_planning_type = 'N'::bpchar) THEN 'None'::text WHEN (itemsite.itemsite_planning_type = 'M'::bpchar) THEN 'MRP'::text WHEN (itemsite.itemsite_planning_type = 'S'::bpchar) THEN 'MPS'::text ELSE NULL::text END AS planning_system, itemsite.itemsite_ordergroup AS group_mps_mrp_orders, itemsite.itemsite_ordergroup_first AS first_group, itemsite.itemsite_mps_timefence AS mps_time_fence, itemsite.itemsite_leadtime AS lead_time, itemsite.itemsite_safetystock AS safety_stock, COALESCE((SELECT whsinfo.warehous_code FROM (public.itemsite supplysite JOIN public.whsinfo ON ((whsinfo.warehous_id = supplysite.itemsite_warehous_id))) WHERE (supplysite.itemsite_id = itemsite.itemsite_supply_itemsite_id)), 'None'::text) AS supplied_from_site, itemsite.itemsite_notes AS notes, itemsite.itemsite_perishable AS perishable, itemsite.itemsite_warrpurc AS require_warranty, itemsite.itemsite_autoreg AS auto_register FROM public.item, (public.itemsite LEFT JOIN public.location ON ((itemsite.itemsite_location_id = location.location_id))), public.plancode, public.costcat, public.whsinfo WHERE ((((item.item_id = itemsite.itemsite_item_id) AND (itemsite.itemsite_plancode_id = plancode.plancode_id)) AND (itemsite.itemsite_costcat_id = costcat.costcat_id)) AND (itemsite.itemsite_warehous_id = whsinfo.warehous_id)); ALTER TABLE api.itemsite OWNER TO admin; -- -- Name: VIEW itemsite; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW itemsite IS 'Item Site'; -- -- Name: itemsitecomment; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW itemsitecomment AS SELECT (item.item_number)::character varying AS item_number, (whsinfo.warehous_code)::character varying AS site, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.itemsite, public.item, public.whsinfo, public.cmnttype, public.comment WHERE ((itemsite.itemsite_item_id = item.item_id) AND ((((itemsite.itemsite_warehous_id = whsinfo.warehous_id) AND (comment.comment_source = 'IS'::text)) AND (comment.comment_source_id = itemsite.itemsite_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id))); ALTER TABLE api.itemsitecomment OWNER TO admin; -- -- Name: VIEW itemsitecomment; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW itemsitecomment IS 'Item Site Comments'; SET search_path = public, pg_catalog; -- -- Name: contrct; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE contrct ( contrct_id integer NOT NULL, contrct_number text NOT NULL, contrct_vend_id integer NOT NULL, contrct_descrip text, contrct_effective date NOT NULL, contrct_expires date NOT NULL, contrct_note text ); ALTER TABLE public.contrct OWNER TO admin; -- -- Name: TABLE contrct; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE contrct IS 'Grouping of Item Sources for a Vendor with common effective and expiration dates.'; -- -- Name: COLUMN contrct.contrct_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN contrct.contrct_id IS 'Sequence identifier for contract.'; -- -- Name: COLUMN contrct.contrct_number; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN contrct.contrct_number IS 'User defined identifier for contract.'; -- -- Name: COLUMN contrct.contrct_vend_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN contrct.contrct_vend_id IS 'Vendor associated with contract.'; -- -- Name: COLUMN contrct.contrct_descrip; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN contrct.contrct_descrip IS 'Description for contract.'; -- -- Name: COLUMN contrct.contrct_effective; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN contrct.contrct_effective IS 'Effective date for contract. Constraint for overlap.'; -- -- Name: COLUMN contrct.contrct_expires; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN contrct.contrct_expires IS 'Expiration date for contract. Constraint for overlap.'; -- -- Name: COLUMN contrct.contrct_note; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN contrct.contrct_note IS 'Notes for contract.'; -- -- Name: itemsrc; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE itemsrc ( itemsrc_id integer DEFAULT nextval(('"itemsrc_itemsrc_id_seq"'::text)::regclass) NOT NULL, itemsrc_item_id integer NOT NULL, itemsrc_vend_id integer NOT NULL, itemsrc_vend_item_number text, itemsrc_vend_item_descrip text, itemsrc_comments text, itemsrc_vend_uom text NOT NULL, itemsrc_invvendoruomratio numeric(20,10) NOT NULL, itemsrc_minordqty numeric(18,6) NOT NULL, itemsrc_multordqty numeric(18,6) NOT NULL, itemsrc_leadtime integer NOT NULL, itemsrc_ranking integer NOT NULL, itemsrc_active boolean NOT NULL, itemsrc_manuf_name text DEFAULT ''::text NOT NULL, itemsrc_manuf_item_number text DEFAULT ''::text NOT NULL, itemsrc_manuf_item_descrip text, itemsrc_default boolean, itemsrc_upccode text, itemsrc_effective date DEFAULT startoftime() NOT NULL, itemsrc_expires date DEFAULT endoftime() NOT NULL, itemsrc_contrct_id integer ); ALTER TABLE public.itemsrc OWNER TO admin; -- -- Name: TABLE itemsrc; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE itemsrc IS 'Item Source information'; -- -- Name: COLUMN itemsrc.itemsrc_effective; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN itemsrc.itemsrc_effective IS 'Effective date for item source. Constraint for overlap.'; -- -- Name: COLUMN itemsrc.itemsrc_expires; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN itemsrc.itemsrc_expires IS 'Expiration date for item source. Constraint for overlap.'; -- -- Name: COLUMN itemsrc.itemsrc_contrct_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN itemsrc.itemsrc_contrct_id IS 'Associated contract for item source. Inherits effective, expiration dates.'; SET search_path = api, pg_catalog; -- -- Name: itemsource; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW itemsource AS SELECT (item.item_number)::character varying AS item_number, (vendinfo.vend_number)::character varying AS vendor, itemsrc.itemsrc_vend_item_number AS vendor_item_number, itemsrc.itemsrc_active AS active, itemsrc.itemsrc_default, itemsrc.itemsrc_vend_uom AS vendor_uom, itemsrc.itemsrc_invvendoruomratio AS inventory_vendor_uom_ratio, itemsrc.itemsrc_minordqty AS minimum_order, itemsrc.itemsrc_multordqty AS order_multiple, itemsrc.itemsrc_ranking AS vendor_ranking, itemsrc.itemsrc_leadtime AS lead_time, itemsrc.itemsrc_comments AS notes, itemsrc.itemsrc_vend_item_descrip AS vendor_description, itemsrc.itemsrc_manuf_name AS manufacturer_name, itemsrc.itemsrc_manuf_item_number AS manufacturer_item_number, itemsrc.itemsrc_manuf_item_descrip AS manufacturer_description, itemsrc.itemsrc_upccode AS bar_code, contrct.contrct_number AS contract_number, itemsrc.itemsrc_effective AS effective_date, itemsrc.itemsrc_expires AS expires_date FROM (((public.itemsrc LEFT JOIN public.item ON ((itemsrc.itemsrc_item_id = item.item_id))) LEFT JOIN public.vendinfo ON ((itemsrc.itemsrc_vend_id = vendinfo.vend_id))) LEFT JOIN public.contrct ON ((itemsrc.itemsrc_contrct_id = contrct.contrct_id))) ORDER BY (item.item_number)::character varying(100), (vendinfo.vend_number)::character varying(100); ALTER TABLE api.itemsource OWNER TO admin; -- -- Name: VIEW itemsource; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW itemsource IS 'Item Source'; SET search_path = public, pg_catalog; -- -- Name: itemsrcp; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE itemsrcp ( itemsrcp_id integer DEFAULT nextval(('itemsrcp_itemsrcp_id_seq'::text)::regclass) NOT NULL, itemsrcp_itemsrc_id integer NOT NULL, itemsrcp_qtybreak numeric(18,6) NOT NULL, itemsrcp_price numeric(16,6), itemsrcp_updated date, itemsrcp_curr_id integer DEFAULT basecurrid() NOT NULL, itemsrcp_dropship boolean DEFAULT false NOT NULL, itemsrcp_warehous_id integer DEFAULT (-1) NOT NULL, itemsrcp_type character(1) NOT NULL, itemsrcp_discntprcnt numeric(16,6), itemsrcp_fixedamtdiscount numeric(16,6), CONSTRAINT valid_itemsrcp_type CHECK ((itemsrcp_type = ANY (ARRAY['N'::bpchar, 'D'::bpchar]))) ); ALTER TABLE public.itemsrcp OWNER TO admin; -- -- Name: TABLE itemsrcp; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE itemsrcp IS 'Item Source Price information'; -- -- Name: COLUMN itemsrcp.itemsrcp_dropship; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN itemsrcp.itemsrcp_dropship IS 'Used to determine if item source price applies only to drop ship purchase orders.'; -- -- Name: COLUMN itemsrcp.itemsrcp_warehous_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN itemsrcp.itemsrcp_warehous_id IS 'Used to determine if item source price applies only to specific site on purchase orders.'; -- -- Name: COLUMN itemsrcp.itemsrcp_type; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN itemsrcp.itemsrcp_type IS 'Pricing type for item source price. Valid values are N-nominal and D-discount.'; -- -- Name: COLUMN itemsrcp.itemsrcp_discntprcnt; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN itemsrcp.itemsrcp_discntprcnt IS 'Discount percent for item source price.'; -- -- Name: COLUMN itemsrcp.itemsrcp_fixedamtdiscount; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN itemsrcp.itemsrcp_fixedamtdiscount IS 'Fixed amount discount for item source price.'; SET search_path = api, pg_catalog; -- -- Name: itemsourceprice; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW itemsourceprice AS SELECT (item.item_number)::character varying AS item_number, (vendinfo.vend_number)::character varying AS vendor, itemsrcp.itemsrcp_qtybreak AS qty_break, CASE WHEN (itemsrcp.itemsrcp_type = 'N'::bpchar) THEN 'Nominal'::text ELSE 'Discount'::text END AS pricing_type, CASE WHEN (itemsrcp.itemsrcp_warehous_id = (-1)) THEN 'All'::text ELSE whsinfo.warehous_code END AS pricing_site, itemsrcp.itemsrcp_dropship AS dropship_only, itemsrcp.itemsrcp_price AS price_per_unit, curr_symbol.curr_abbr AS currency, (itemsrcp.itemsrcp_discntprcnt * 100.0) AS discount_percent, itemsrcp.itemsrcp_fixedamtdiscount AS discount_fixed_amount FROM (((((public.itemsrcp LEFT JOIN public.itemsrc ON ((itemsrc.itemsrc_id = itemsrcp.itemsrcp_itemsrc_id))) LEFT JOIN public.item ON ((itemsrc.itemsrc_item_id = item.item_id))) LEFT JOIN public.vendinfo ON ((itemsrc.itemsrc_vend_id = vendinfo.vend_id))) LEFT JOIN public.curr_symbol ON ((itemsrcp.itemsrcp_curr_id = curr_symbol.curr_id))) LEFT JOIN public.whsinfo ON ((itemsrcp.itemsrcp_warehous_id = whsinfo.warehous_id))) ORDER BY (item.item_number)::character varying(100), (vendinfo.vend_number)::character varying(100); ALTER TABLE api.itemsourceprice OWNER TO admin; -- -- Name: VIEW itemsourceprice; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW itemsourceprice IS 'Item Source Price'; SET search_path = public, pg_catalog; -- -- Name: itemsub; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE itemsub ( itemsub_id integer DEFAULT nextval(('itemsub_itemsub_id_seq'::text)::regclass) NOT NULL, itemsub_parent_item_id integer NOT NULL, itemsub_sub_item_id integer NOT NULL, itemsub_uomratio numeric(20,10) NOT NULL, itemsub_rank integer NOT NULL ); ALTER TABLE public.itemsub OWNER TO admin; -- -- Name: TABLE itemsub; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE itemsub IS 'Item Substitutes information'; SET search_path = api, pg_catalog; -- -- Name: itemsubstitute; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW itemsubstitute AS SELECT (p.item_number)::character varying AS root_item_number, (s.item_number)::character varying AS substitute_item_number, itemsub.itemsub_uomratio AS sub_parent_uom_ratio, itemsub.itemsub_rank AS ranking FROM public.item p, public.item s, public.itemsub WHERE ((p.item_id = itemsub.itemsub_parent_item_id) AND (s.item_id = itemsub.itemsub_sub_item_id)); ALTER TABLE api.itemsubstitute OWNER TO admin; -- -- Name: VIEW itemsubstitute; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW itemsubstitute IS 'Item Substitute'; SET search_path = public, pg_catalog; -- -- Name: itemtax; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE itemtax ( itemtax_id integer NOT NULL, itemtax_item_id integer NOT NULL, itemtax_taxtype_id integer NOT NULL, itemtax_taxzone_id integer ); ALTER TABLE public.itemtax OWNER TO admin; -- -- Name: TABLE itemtax; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE itemtax IS 'This table associates tax types in a specified tax authority for the given item.'; SET search_path = api, pg_catalog; -- -- Name: itemtaxtype; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW itemtaxtype AS SELECT (item.item_number)::character varying AS item_number, CASE WHEN (taxzone.taxzone_id IS NULL) THEN 'Any'::character varying ELSE (taxzone.taxzone_code)::character varying END AS tax_zone, taxtype.taxtype_name AS tax_type FROM public.item, (public.itemtax LEFT JOIN public.taxzone ON ((itemtax.itemtax_taxzone_id = taxzone.taxzone_id))), public.taxtype WHERE ((item.item_id = itemtax.itemtax_item_id) AND (itemtax.itemtax_taxtype_id = taxtype.taxtype_id)); ALTER TABLE api.itemtaxtype OWNER TO admin; -- -- Name: VIEW itemtaxtype; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW itemtaxtype IS 'Item Tax Type'; SET search_path = public, pg_catalog; -- -- Name: itemuomconv; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE itemuomconv ( itemuomconv_id integer NOT NULL, itemuomconv_item_id integer NOT NULL, itemuomconv_from_uom_id integer NOT NULL, itemuomconv_from_value numeric(20,10) NOT NULL, itemuomconv_to_uom_id integer NOT NULL, itemuomconv_to_value numeric(20,10) NOT NULL, itemuomconv_fractional boolean DEFAULT false NOT NULL, CONSTRAINT itemuomconv_uom CHECK ((itemuomconv_from_uom_id <> itemuomconv_to_uom_id)) ); ALTER TABLE public.itemuomconv OWNER TO admin; -- -- Name: TABLE itemuomconv; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE itemuomconv IS 'UOM conversion information. From Unit to To Unit with a value per.'; SET search_path = api, pg_catalog; -- -- Name: itemuomconversion; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW itemuomconversion AS SELECT (item.item_number)::character varying AS item_number, (f.uom_name)::character varying AS uom, itemuomconv.itemuomconv_from_value AS uom_value, p.uom_name AS per_uom, itemuomconv.itemuomconv_to_value AS per_uom_value, itemuomconv.itemuomconv_fractional AS fractional, public.fetchitemuomconvtypes(itemuomconv.itemuomconv_id) AS selected_types FROM public.item, public.itemuomconv, public.uom f, public.uom p WHERE (((item.item_id = itemuomconv.itemuomconv_item_id) AND (itemuomconv.itemuomconv_from_uom_id = f.uom_id)) AND (itemuomconv.itemuomconv_to_uom_id = p.uom_id)); ALTER TABLE api.itemuomconversion OWNER TO admin; -- -- Name: VIEW itemuomconversion; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW itemuomconversion IS 'Item Unit of Measure Conversion'; SET search_path = public, pg_catalog; -- -- Name: gltrans; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE gltrans ( gltrans_id integer DEFAULT nextval(('"gltrans_gltrans_id_seq"'::text)::regclass) NOT NULL, gltrans_exported boolean, gltrans_created timestamp with time zone, gltrans_date date NOT NULL, gltrans_sequence integer, gltrans_accnt_id integer NOT NULL, gltrans_source text, gltrans_docnumber text, gltrans_misc_id integer, gltrans_amount numeric(20,2) NOT NULL, gltrans_notes text, gltrans_journalnumber integer, gltrans_posted boolean NOT NULL, gltrans_doctype text, gltrans_rec boolean DEFAULT false NOT NULL, gltrans_username text DEFAULT geteffectivextuser() NOT NULL, gltrans_deleted boolean DEFAULT false ); ALTER TABLE public.gltrans OWNER TO admin; -- -- Name: TABLE gltrans; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE gltrans IS 'General Ledger (G/L) transaction information'; SET search_path = api, pg_catalog; -- -- Name: journalentry; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW journalentry AS SELECT curr_symbol.curr_abbr AS currency, c.gltrans_amount AS amount, c.gltrans_date AS dist_date, c.gltrans_docnumber AS doc_number, public.formatglaccount(da.accnt_id) AS debit, public.formatglaccount(ca.accnt_id) AS credit, c.gltrans_notes AS notes FROM public.gltrans d, public.gltrans c, public.accnt da, public.accnt ca, public.curr_symbol WHERE ((((((((d.gltrans_sequence = c.gltrans_sequence) AND (d.gltrans_accnt_id = da.accnt_id)) AND (c.gltrans_accnt_id = ca.accnt_id)) AND (d.gltrans_amount < (0)::numeric)) AND (c.gltrans_amount > (0)::numeric)) AND (d.gltrans_doctype = 'JE'::text)) AND (c.gltrans_doctype = 'JE'::text)) AND (curr_symbol.curr_id = public.basecurrid())) ORDER BY d.gltrans_date DESC; ALTER TABLE api.journalentry OWNER TO admin; -- -- Name: VIEW journalentry; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW journalentry IS 'Journal Entry'; SET search_path = public, pg_catalog; -- -- Name: whsezone; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE whsezone ( whsezone_id integer NOT NULL, whsezone_warehous_id integer NOT NULL, whsezone_name text NOT NULL, whsezone_descrip text ); ALTER TABLE public.whsezone OWNER TO admin; -- -- Name: TABLE whsezone; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE whsezone IS 'Warehouse Zone information'; SET search_path = api, pg_catalog; -- -- Name: location; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW location AS SELECT (whsinfo.warehous_code)::character varying AS site, (location.location_aisle)::character varying AS aisle, (location.location_rack)::character varying AS rack, (location.location_bin)::character varying AS bin, (location.location_name)::character varying AS location, whsezone.whsezone_name AS zone, location.location_netable AS netable, location.location_restrict AS restricted, location.location_descrip AS description FROM ((public.location LEFT JOIN public.whsinfo ON ((whsinfo.warehous_id = location.location_warehous_id))) LEFT JOIN public.whsezone ON ((whsezone.whsezone_id = location.location_whsezone_id))); ALTER TABLE api.location OWNER TO admin; -- -- Name: VIEW location; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW location IS 'Location'; -- -- Name: misccounttag; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW misccounttag AS SELECT 'This view is for inserts only'::text AS site, 'This view is for inserts only'::text AS item_number, (0)::numeric AS quantity, 'This view is for inserts only'::text AS comment; ALTER TABLE api.misccounttag OWNER TO admin; -- -- Name: VIEW misccounttag; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW misccounttag IS 'Miscellaneous Count Tag'; -- -- Name: pricingschedule; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW pricingschedule AS SELECT (ipshead.ipshead_name)::character varying AS name, ipshead.ipshead_descrip AS description, public.formatdate(ipshead.ipshead_effective, 'Always'::text) AS effective, public.formatdate(ipshead.ipshead_expires, 'Never'::text) AS expires, curr_symbol.curr_abbr AS currency FROM public.ipshead, public.curr_symbol WHERE (curr_symbol.curr_id = ipshead.ipshead_curr_id); ALTER TABLE api.pricingschedule OWNER TO admin; -- -- Name: VIEW pricingschedule; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW pricingschedule IS 'Pricing Schedule'; SET search_path = public, pg_catalog; -- -- Name: ipsass; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE ipsass ( ipsass_id integer NOT NULL, ipsass_ipshead_id integer NOT NULL, ipsass_cust_id integer, ipsass_custtype_id integer, ipsass_custtype_pattern text, ipsass_shipto_id integer DEFAULT (-1), ipsass_shipto_pattern text ); ALTER TABLE public.ipsass OWNER TO admin; -- -- Name: TABLE ipsass; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE ipsass IS 'Pricing Schedule assignment information'; SET search_path = api, pg_catalog; -- -- Name: pricingscheduleassign; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW pricingscheduleassign AS SELECT (COALESCE(custinfo.cust_number, 'Any'::text))::character varying AS customer_number, (COALESCE(shiptoinfo.shipto_num, 'Any'::text))::character varying AS customer_shipto, (COALESCE(ipsass.ipsass_shipto_pattern, 'N/A'::text))::character varying AS customer_shipto_pattern, (COALESCE(custtype.custtype_code, 'N/A'::text))::character varying AS customer_type, (COALESCE(ipsass.ipsass_custtype_pattern, 'N/A'::text))::character varying AS customer_type_pattern, (ipshead.ipshead_name)::character varying AS pricing_schedule FROM ((((public.ipshead JOIN public.ipsass ON ((ipshead.ipshead_id = ipsass.ipsass_ipshead_id))) LEFT JOIN public.custinfo ON ((ipsass.ipsass_cust_id = custinfo.cust_id))) LEFT JOIN public.custtype ON ((ipsass.ipsass_custtype_id = custtype.custtype_id))) LEFT JOIN public.shiptoinfo ON ((ipsass.ipsass_shipto_id = shiptoinfo.shipto_id))) ORDER BY (COALESCE(custinfo.cust_number, 'Any'::text))::character varying, (COALESCE(shiptoinfo.shipto_num, 'Any'::text))::character varying, (COALESCE(custtype.custtype_code, 'N/A'::text))::character varying, (COALESCE(ipsass.ipsass_custtype_pattern, 'N/A'::text))::character varying, (ipshead.ipshead_name)::character varying; ALTER TABLE api.pricingscheduleassign OWNER TO admin; -- -- Name: VIEW pricingscheduleassign; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW pricingscheduleassign IS 'Pricing Schedule Assignments'; SET search_path = public, pg_catalog; -- -- Name: ipsiteminfo; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE ipsiteminfo ( ipsitem_id integer DEFAULT nextval(('"ipsitem_ipsitem_id_seq"'::text)::regclass) NOT NULL, ipsitem_ipshead_id integer, ipsitem_item_id integer, ipsitem_qtybreak numeric(18,6) NOT NULL, ipsitem_price numeric(16,4) NOT NULL, ipsitem_qty_uom_id integer, ipsitem_price_uom_id integer, ipsitem_discntprcnt numeric(10,6) DEFAULT 0.00 NOT NULL, ipsitem_fixedamtdiscount numeric(16,4) DEFAULT 0.00 NOT NULL, ipsitem_prodcat_id integer, ipsitem_type character(1) NOT NULL, ipsitem_warehous_id integer, CONSTRAINT valid_ipsitem_type CHECK ((ipsitem_type = ANY (ARRAY['N'::bpchar, 'D'::bpchar, 'M'::bpchar]))) ); ALTER TABLE public.ipsiteminfo OWNER TO admin; -- -- Name: TABLE ipsiteminfo; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE ipsiteminfo IS 'Pricing Schedule Item information'; -- -- Name: COLUMN ipsiteminfo.ipsitem_prodcat_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ipsiteminfo.ipsitem_prodcat_id IS 'Product category for pricing schedule item.'; -- -- Name: COLUMN ipsiteminfo.ipsitem_type; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ipsiteminfo.ipsitem_type IS 'Pricing type for pricing schedule item. Valid values are N-nominal, D-discount, and M-markup'; -- -- Name: COLUMN ipsiteminfo.ipsitem_warehous_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ipsiteminfo.ipsitem_warehous_id IS 'Site for pricing schedule item which enables pricing by site.'; SET search_path = api, pg_catalog; -- -- Name: pricingscheduleitem; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW pricingscheduleitem AS SELECT (ipshead.ipshead_name)::character varying AS pricing_schedule, CASE WHEN (COALESCE(ipsiteminfo.ipsitem_item_id, (-1)) > 0) THEN 'Item'::character varying ELSE 'Product Category'::character varying END AS type, (COALESCE(item.item_number, ''::text))::character varying AS item_number, (COALESCE(prodcat.prodcat_code, ''::text))::character varying AS product_category, ipsiteminfo.ipsitem_qtybreak AS qty_break, (qtyuom.uom_name)::character varying AS qty_uom, (priceuom.uom_name)::character varying AS price_uom, ipsiteminfo.ipsitem_price AS price, ipsiteminfo.ipsitem_discntprcnt AS percent, ipsiteminfo.ipsitem_fixedamtdiscount AS fixedamt, CASE WHEN (ipsiteminfo.ipsitem_type = 'N'::bpchar) THEN 'Nominal'::character varying WHEN (ipsiteminfo.ipsitem_type = 'D'::bpchar) THEN 'Discount'::character varying WHEN (ipsiteminfo.ipsitem_type = 'M'::bpchar) THEN 'Markup'::character varying ELSE NULL::character varying END AS pricing_type FROM (((((public.ipsiteminfo JOIN public.ipshead ON ((ipsiteminfo.ipsitem_ipshead_id = ipshead.ipshead_id))) LEFT JOIN public.item ON ((ipsiteminfo.ipsitem_item_id = item.item_id))) LEFT JOIN public.prodcat ON ((ipsiteminfo.ipsitem_prodcat_id = prodcat.prodcat_id))) LEFT JOIN public.uom qtyuom ON ((ipsiteminfo.ipsitem_qty_uom_id = qtyuom.uom_id))) LEFT JOIN public.uom priceuom ON ((ipsiteminfo.ipsitem_price_uom_id = priceuom.uom_id))); ALTER TABLE api.pricingscheduleitem OWNER TO admin; -- -- Name: VIEW pricingscheduleitem; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW pricingscheduleitem IS 'Pricing Schedule Item'; SET search_path = public, pg_catalog; -- -- Name: ipsitemchar; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE ipsitemchar ( ipsitemchar_id integer NOT NULL, ipsitemchar_ipsitem_id integer NOT NULL, ipsitemchar_char_id integer NOT NULL, ipsitemchar_value text NOT NULL, ipsitemchar_price numeric(16,4) ); ALTER TABLE public.ipsitemchar OWNER TO admin; -- -- Name: TABLE ipsitemchar; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE ipsitemchar IS 'Item Price Schedule Characteristic Prices.'; SET search_path = api, pg_catalog; -- -- Name: pricingscheduleitemchar; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW pricingscheduleitemchar AS SELECT (ipshead.ipshead_name)::character varying AS pricing_schedule, (item.item_number)::character varying AS item_number, ipsiteminfo.ipsitem_qtybreak AS qty_break, (qtyuom.uom_name)::character varying AS qty_uom, (priceuom.uom_name)::character varying AS price_uom, ("char".char_name)::character varying AS characteristic, (ipsitemchar.ipsitemchar_value)::character varying AS value, ipsitemchar.ipsitemchar_price AS price FROM public.ipshead, public.ipsiteminfo, public.ipsitemchar, public.item, public."char", public.uom qtyuom, public.uom priceuom WHERE ((((((ipshead.ipshead_id = ipsiteminfo.ipsitem_ipshead_id) AND (ipsiteminfo.ipsitem_id = ipsitemchar.ipsitemchar_ipsitem_id)) AND (ipsiteminfo.ipsitem_item_id = item.item_id)) AND (ipsiteminfo.ipsitem_qty_uom_id = qtyuom.uom_id)) AND (ipsiteminfo.ipsitem_price_uom_id = priceuom.uom_id)) AND (ipsitemchar.ipsitemchar_char_id = "char".char_id)); ALTER TABLE api.pricingscheduleitemchar OWNER TO admin; -- -- Name: VIEW pricingscheduleitemchar; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW pricingscheduleitemchar IS 'Pricing Schedule Item Characteristics'; -- -- Name: project; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW project AS SELECT prj.prj_number AS number, prj.prj_name AS name, prj.prj_descrip AS description, prj.prj_owner_username AS owner, prj.prj_username AS assigned_to, prj.prj_so AS sales_orders, prj.prj_wo AS work_orders, prj.prj_po AS purchase_orders, CASE WHEN (prj.prj_status = 'P'::bpchar) THEN 'Concept'::text WHEN (prj.prj_status = 'O'::bpchar) THEN 'In-Process'::text WHEN (prj.prj_status = 'C'::bpchar) THEN 'Closed'::text ELSE 'Error'::text END AS status, prj.prj_due_date AS due, prj.prj_assigned_date AS assigned, prj.prj_start_date AS started, prj.prj_completed_date AS completed FROM public.prj; ALTER TABLE api.project OWNER TO admin; -- -- Name: VIEW project; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW project IS 'Project'; -- -- Name: projectcomment; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW projectcomment AS SELECT (prj.prj_number)::character varying AS project_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.prj, public.cmnttype, public.comment WHERE (((comment.comment_source = 'J'::text) AND (comment.comment_source_id = prj.prj_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); ALTER TABLE api.projectcomment OWNER TO admin; -- -- Name: VIEW projectcomment; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW projectcomment IS 'Project Comment'; SET search_path = public, pg_catalog; -- -- Name: cust_cust_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cust_cust_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.cust_cust_id_seq OWNER TO admin; -- -- Name: cust_cust_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cust_cust_id_seq', 96, true); -- -- Name: prospect; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE prospect ( prospect_id integer DEFAULT nextval('cust_cust_id_seq'::regclass) NOT NULL, prospect_active boolean DEFAULT true NOT NULL, prospect_number text NOT NULL, prospect_name text NOT NULL, prospect_cntct_id integer, prospect_comments text, prospect_created date DEFAULT ('now'::text)::date NOT NULL, prospect_salesrep_id integer, prospect_warehous_id integer, prospect_taxzone_id integer, CONSTRAINT prospect_prospect_number_check CHECK ((prospect_number <> ''::text)) ); ALTER TABLE public.prospect OWNER TO admin; -- -- Name: TABLE prospect; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE prospect IS 'Prospect Information'; SET search_path = api, pg_catalog; -- -- Name: prospect; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW prospect AS SELECT (prospect.prospect_number)::character varying AS prospect_number, prospect.prospect_name, prospect.prospect_active AS active, salesrep.salesrep_number AS sales_rep, whsinfo.warehous_code AS site_code, taxzone.taxzone_code AS default_tax_zone, prospect.prospect_comments AS notes, cntct.cntct_number AS contact_number, cntct.cntct_honorific AS contact_honorific, cntct.cntct_first_name AS contact_first, cntct.cntct_middle AS contact_middle, cntct.cntct_last_name AS contact_last, cntct.cntct_suffix AS contact_suffix, cntct.cntct_title AS contact_job_title, cntct.cntct_phone AS contact_voice, cntct.cntct_phone2 AS contact_alternate, cntct.cntct_fax AS contact_fax, cntct.cntct_email AS contact_email, cntct.cntct_webaddr AS contact_web, ''::text AS contact_change, addr.addr_number AS contact_address_number, addr.addr_line1 AS contact_address1, addr.addr_line2 AS contact_address2, addr.addr_line3 AS contact_address3, addr.addr_city AS contact_city, addr.addr_state AS contact_state, addr.addr_postalcode AS contact_postalcode, addr.addr_country AS contact_country, ''::text AS contact_address_change FROM (((((public.prospect LEFT JOIN public.cntct ON ((prospect.prospect_cntct_id = cntct.cntct_id))) LEFT JOIN public.addr ON ((cntct.cntct_addr_id = addr.addr_id))) LEFT JOIN public.taxzone ON ((prospect.prospect_taxzone_id = taxzone.taxzone_id))) LEFT JOIN public.salesrep ON ((prospect.prospect_salesrep_id = salesrep.salesrep_id))) LEFT JOIN public.whsinfo ON ((prospect.prospect_warehous_id = whsinfo.warehous_id))); ALTER TABLE api.prospect OWNER TO admin; -- -- Name: VIEW prospect; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW prospect IS 'Prospect'; SET search_path = public, pg_catalog; -- -- Name: expcat; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE expcat ( expcat_id integer NOT NULL, expcat_code text NOT NULL, expcat_descrip text, expcat_exp_accnt_id integer, expcat_liability_accnt_id integer, expcat_active boolean, expcat_purchprice_accnt_id integer, expcat_freight_accnt_id integer, CONSTRAINT expcat_expcat_code_check CHECK ((expcat_code <> ''::text)) ); ALTER TABLE public.expcat OWNER TO admin; -- -- Name: TABLE expcat; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE expcat IS 'Expense Category information'; -- -- Name: womatl; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE womatl ( womatl_id integer DEFAULT nextval(('womatl_womatl_id_seq'::text)::regclass) NOT NULL, womatl_wo_id integer, womatl_itemsite_id integer, womatl_qtyper numeric(20,8) NOT NULL, womatl_scrap numeric(8,4) NOT NULL, womatl_qtyreq numeric(18,6) NOT NULL, womatl_qtyiss numeric(18,6) NOT NULL, womatl_qtywipscrap numeric(18,6) NOT NULL, womatl_lastissue date, womatl_lastreturn date, womatl_cost numeric(16,6), womatl_picklist boolean, womatl_status character(1), womatl_imported boolean DEFAULT false, womatl_createwo boolean, womatl_issuemethod character(1), womatl_wooper_id integer, womatl_bomitem_id integer, womatl_duedate date, womatl_schedatwooper boolean, womatl_uom_id integer NOT NULL, womatl_notes text, womatl_ref text, womatl_scrapvalue numeric(16,6) DEFAULT 0, womatl_qtyfxd numeric(20,8) DEFAULT 0 NOT NULL, womatl_issuewo boolean DEFAULT false NOT NULL ); ALTER TABLE public.womatl OWNER TO admin; -- -- Name: TABLE womatl; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE womatl IS 'Work Order Material Requirements information'; -- -- Name: COLUMN womatl.womatl_qtyfxd; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN womatl.womatl_qtyfxd IS 'The fixed quantity required'; SET search_path = api, pg_catalog; -- -- Name: purchaseline; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW purchaseline AS SELECT (pohead.pohead_number)::character varying AS order_number, poitem.poitem_linenumber AS line_number, item.item_number, whsinfo.warehous_code AS site, expcat.expcat_code AS expense_category, poitem.poitem_qty_ordered AS qty_ordered, poitem.poitem_unitprice AS unit_price, poitem.poitem_freight AS freight, poitem.poitem_duedate AS due_date, prj.prj_number AS project_number, poitem.poitem_vend_item_number AS vend_item_number, poitem.poitem_vend_item_descrip AS vendor_description, poitem.poitem_manuf_name AS manufacturer_name, poitem.poitem_manuf_item_number AS manufacturer_item_number, poitem.poitem_manuf_item_descrip AS manufacturer_description, poitem.poitem_comments AS notes, public.formatrevnumber('BOM'::text, poitem.poitem_bom_rev_id) AS bill_of_materials_revision, public.formatrevnumber('BOO'::text, poitem.poitem_boo_rev_id) AS bill_of_operations_revision, public.formatsonumber(coitem.coitem_id) AS sales_order_number, public.formatwonumber(womatl.womatl_wo_id) AS work_order_number FROM ((((((((public.pohead JOIN public.poitem ON ((pohead.pohead_id = poitem.poitem_pohead_id))) LEFT JOIN public.prj ON ((poitem.poitem_prj_id = prj.prj_id))) LEFT JOIN public.expcat ON ((poitem.poitem_expcat_id = expcat.expcat_id))) LEFT JOIN public.itemsite ON ((poitem.poitem_itemsite_id = itemsite.itemsite_id))) LEFT JOIN public.item ON ((itemsite.itemsite_item_id = item.item_id))) LEFT JOIN public.whsinfo ON ((itemsite.itemsite_warehous_id = whsinfo.warehous_id))) LEFT JOIN public.coitem ON (((coitem.coitem_id = poitem.poitem_order_id) AND (poitem.poitem_order_type = 'S'::bpchar)))) LEFT JOIN public.womatl ON (((womatl.womatl_id = poitem.poitem_order_id) AND (poitem.poitem_order_type = 'W'::bpchar)))) ORDER BY pohead.pohead_number, poitem.poitem_linenumber; ALTER TABLE api.purchaseline OWNER TO admin; -- -- Name: VIEW purchaseline; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW purchaseline IS 'Purchase Order Line'; -- -- Name: purchaselinechar; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW purchaselinechar AS SELECT (data.order_number)::character varying AS order_number, data.line_number, data.characteristic, COALESCE(pi.charass_value, i3.charass_value) AS value FROM (((((SELECT DISTINCT "char".char_id, poitem.poitem_id, poitem.poitem_itemsite_id, pohead.pohead_number AS order_number, poitem.poitem_linenumber AS line_number, "char".char_name AS characteristic FROM public.pohead, public.poitem, public.itemsite, public.item, public.charass, public."char" WHERE ((((((pohead.pohead_id = poitem.poitem_pohead_id) AND (poitem.poitem_itemsite_id = itemsite.itemsite_id)) AND (itemsite.itemsite_item_id = item.item_id)) AND (charass.charass_char_id = "char".char_id)) AND (charass.charass_target_type = 'I'::text)) AND (charass.charass_target_id = item.item_id))) data LEFT JOIN public.charass pi ON ((((data.poitem_id = pi.charass_target_id) AND ('PI'::text = pi.charass_target_type)) AND (pi.charass_char_id = data.char_id)))) LEFT JOIN public.itemsite i1 ON ((data.poitem_itemsite_id = i1.itemsite_id))) LEFT JOIN public.item i2 ON ((i1.itemsite_item_id = i2.item_id))) LEFT JOIN public.charass i3 ON (((((i2.item_id = i3.charass_target_id) AND ('I'::text = i3.charass_target_type)) AND (i3.charass_char_id = data.char_id)) AND i3.charass_default))) ORDER BY (data.order_number)::character varying, data.line_number, data.characteristic; ALTER TABLE api.purchaselinechar OWNER TO admin; -- -- Name: VIEW purchaselinechar; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW purchaselinechar IS 'Purchase Order Line Item Characteristic'; -- -- Name: purchaselinecomment; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW purchaselinecomment AS SELECT (pohead.pohead_number)::character varying AS order_number, poitem.poitem_linenumber AS line_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.pohead, public.poitem, public.cmnttype, public.comment WHERE ((((pohead.pohead_id = poitem.poitem_pohead_id) AND (comment.comment_source = 'PI'::text)) AND (comment.comment_source_id = poitem.poitem_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)) ORDER BY pohead.pohead_number, poitem.poitem_linenumber, comment.comment_date DESC; ALTER TABLE api.purchaselinecomment OWNER TO admin; -- -- Name: VIEW purchaselinecomment; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW purchaselinecomment IS 'Purchase Order Line Item Comment'; SET search_path = public, pg_catalog; -- -- Name: tax; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE tax ( tax_id integer DEFAULT nextval(('"tax_tax_id_seq"'::text)::regclass) NOT NULL, tax_code text NOT NULL, tax_descrip text, tax_sales_accnt_id integer, tax_taxclass_id integer, tax_taxauth_id integer, tax_basis_tax_id integer, CONSTRAINT tax_tax_code_check CHECK ((tax_code <> ''::text)) ); ALTER TABLE public.tax OWNER TO admin; -- -- Name: TABLE tax; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE tax IS 'Tax information'; -- -- Name: COLUMN tax.tax_sales_accnt_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN tax.tax_sales_accnt_id IS 'Deprecated column - DO NOT USE'; -- -- Name: vendaddrinfo; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE vendaddrinfo ( vendaddr_id integer DEFAULT nextval(('vendaddr_vendaddr_id_seq'::text)::regclass) NOT NULL, vendaddr_vend_id integer, vendaddr_code text, vendaddr_name text, vendaddr_comments text, vendaddr_cntct_id integer, vendaddr_addr_id integer, vendaddr_taxzone_id integer ); ALTER TABLE public.vendaddrinfo OWNER TO admin; -- -- Name: TABLE vendaddrinfo; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE vendaddrinfo IS 'Vendor Address information'; SET search_path = api, pg_catalog; -- -- Name: purchaseorder; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW purchaseorder AS SELECT (pohead.pohead_number)::character varying AS order_number, pohead.pohead_orderdate AS order_date, terms.terms_code AS terms, taxzone.taxzone_code AS tax_zone, whsinfo.warehous_code AS receiving_site, pohead.pohead_agent_username AS purchasing_agent, vendinfo.vend_number AS vendor_number, COALESCE(ua.vendaddr_code, 'MAIN'::text) AS alt_address, pohead.pohead_fob AS fob, pohead.pohead_shipvia AS ship_via, curr_symbol.curr_abbr AS currency, (SELECT COALESCE(sum(data.tax), 0.00) AS tax FROM (SELECT round(sum(calculatetaxdetailsummary.taxdetail_tax), 2) AS tax FROM (public.tax JOIN public.calculatetaxdetailsummary('PO'::text, pohead.pohead_id, 'T'::text) calculatetaxdetailsummary(taxdetail_tax_id, taxdetail_tax_code, taxdetail_tax_descrip, taxdetail_tax_basis_tax_id, taxdetail_taxrate_percent, taxdetail_taxrate_amount, taxdetail_level, taxdetail_taxclass_id, taxdetail_taxclass_code, taxdetail_taxclass_sequence, taxdetail_tax, taxdetail_curr_id, taxdetail_curr_abbr) ON ((calculatetaxdetailsummary.taxdetail_tax_id = tax.tax_id))) GROUP BY tax.tax_id) data) AS tax, pohead.pohead_freight AS freight, pohead.pohead_comments AS notes, pohead.pohead_dropship AS dropship, vc.cntct_number AS vend_contact_number, pohead.pohead_vend_cntct_honorific AS vend_cntct_honorific, pohead.pohead_vend_cntct_first_name AS vend_cntct_first_name, pohead.pohead_vend_cntct_middle AS vend_cntct_middle, pohead.pohead_vend_cntct_last_name AS vend_cntct_last_name, pohead.pohead_vend_cntct_suffix AS vend_cntct_suffix, pohead.pohead_vend_cntct_phone AS vend_cntct_phone, pohead.pohead_vend_cntct_title AS vend_cntct_title, pohead.pohead_vend_cntct_fax AS vend_cntct_fax, pohead.pohead_vend_cntct_email AS vend_cntct_email, pohead.pohead_vendaddress1 AS vendaddress1, pohead.pohead_vendaddress2 AS vendaddress2, pohead.pohead_vendaddress3 AS vendaddress3, pohead.pohead_vendcity AS vendcity, pohead.pohead_vendstate AS vendstate, pohead.pohead_vendzipcode AS vendzipcode, pohead.pohead_vendcountry AS vendcountry, sc.cntct_number AS shipto_contact_number, pohead.pohead_shipto_cntct_honorific AS shipto_cntct_honorific, pohead.pohead_shipto_cntct_first_name AS shipto_cntct_first_name, pohead.pohead_shipto_cntct_middle AS shipto_cntct_middle, pohead.pohead_shipto_cntct_last_name AS shipto_cntct_last_name, pohead.pohead_shipto_cntct_suffix AS shipto_cntct_suffix, pohead.pohead_shipto_cntct_phone AS shipto_cntct_phone, pohead.pohead_shipto_cntct_title AS shipto_cntct_title, pohead.pohead_shipto_cntct_fax AS shipto_cntct_fax, pohead.pohead_shipto_cntct_email AS shipto_cntct_email, addr.addr_number AS shiptoaddress_number, pohead.pohead_shiptoaddress1 AS shiptoaddress1, pohead.pohead_shiptoaddress2 AS shiptoaddress2, pohead.pohead_shiptoaddress3 AS shiptoaddress3, pohead.pohead_shiptocity AS shiptocity, pohead.pohead_shiptostate AS shiptostate, pohead.pohead_shiptozipcode AS shiptozipcode, pohead.pohead_shiptocountry AS shiptocountry, cohead.cohead_number AS sales_order_number FROM ((((((((((public.pohead LEFT JOIN public.cntct vc ON ((pohead.pohead_vend_cntct_id = vc.cntct_id))) LEFT JOIN public.cntct sc ON ((pohead.pohead_shipto_cntct_id = sc.cntct_id))) LEFT JOIN public.addr ON ((pohead.pohead_shiptoaddress_id = addr.addr_id))) LEFT JOIN public.terms ON ((pohead.pohead_terms_id = terms.terms_id))) LEFT JOIN public.taxzone ON ((pohead.pohead_taxzone_id = taxzone.taxzone_id))) LEFT JOIN public.whsinfo ON ((pohead.pohead_warehous_id = whsinfo.warehous_id))) LEFT JOIN public.vendaddrinfo ua ON ((pohead.pohead_vendaddr_id = ua.vendaddr_id))) LEFT JOIN public.cohead ON ((pohead.pohead_cohead_id = cohead.cohead_id))) JOIN public.vendinfo ON ((pohead.pohead_vend_id = vendinfo.vend_id))) JOIN public.curr_symbol ON ((pohead.pohead_curr_id = curr_symbol.curr_id))) ORDER BY pohead.pohead_number; ALTER TABLE api.purchaseorder OWNER TO admin; -- -- Name: VIEW purchaseorder; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW purchaseorder IS 'Purchase Order'; -- -- Name: purchaseordercomment; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW purchaseordercomment AS SELECT (pohead.pohead_number)::character varying AS order_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.pohead, public.cmnttype, public.comment WHERE (((comment.comment_source = 'P'::text) AND (comment.comment_source_id = pohead.pohead_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); ALTER TABLE api.purchaseordercomment OWNER TO admin; -- -- Name: VIEW purchaseordercomment; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW purchaseordercomment IS 'Purchase Order Comment'; SET search_path = public, pg_catalog; -- -- Name: quhead; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE quhead ( quhead_id integer DEFAULT nextval(('"quhead_quhead_id_seq"'::text)::regclass) NOT NULL, quhead_number text NOT NULL, quhead_cust_id integer NOT NULL, quhead_quotedate date, quhead_shipto_id integer, quhead_shiptoname text, quhead_shiptoaddress1 text, quhead_shiptoaddress2 text, quhead_shiptoaddress3 text, quhead_shiptocity text, quhead_shiptostate text, quhead_shiptozipcode text, quhead_shiptophone text, quhead_salesrep_id integer, quhead_terms_id integer, quhead_freight numeric(16,4), quhead_ordercomments text, quhead_shipcomments text, quhead_billtoname text, quhead_billtoaddress1 text, quhead_billtoaddress2 text, quhead_billtoaddress3 text, quhead_billtocity text, quhead_billtostate text, quhead_billtozip text, quhead_commission numeric(16,4), quhead_custponumber text, quhead_fob text, quhead_shipvia text, quhead_warehous_id integer, quhead_packdate date, quhead_prj_id integer, quhead_misc numeric(16,4) DEFAULT 0 NOT NULL, quhead_misc_accnt_id integer, quhead_misc_descrip text, quhead_billtocountry text, quhead_shiptocountry text, quhead_curr_id integer DEFAULT basecurrid(), quhead_imported boolean DEFAULT false, quhead_expire date, quhead_calcfreight boolean DEFAULT false NOT NULL, quhead_shipto_cntct_id integer, quhead_shipto_cntct_honorific text, quhead_shipto_cntct_first_name text, quhead_shipto_cntct_middle text, quhead_shipto_cntct_last_name text, quhead_shipto_cntct_suffix text, quhead_shipto_cntct_phone text, quhead_shipto_cntct_title text, quhead_shipto_cntct_fax text, quhead_shipto_cntct_email text, quhead_billto_cntct_id integer, quhead_billto_cntct_honorific text, quhead_billto_cntct_first_name text, quhead_billto_cntct_middle text, quhead_billto_cntct_last_name text, quhead_billto_cntct_suffix text, quhead_billto_cntct_phone text, quhead_billto_cntct_title text, quhead_billto_cntct_fax text, quhead_billto_cntct_email text, quhead_taxzone_id integer, quhead_taxtype_id integer, quhead_ophead_id integer, quhead_status text, quhead_saletype_id integer, quhead_shipzone_id integer, CONSTRAINT quhead_check CHECK ((((quhead_misc = (0)::numeric) AND (quhead_misc_accnt_id IS NULL)) OR ((quhead_misc <> (0)::numeric) AND (quhead_misc_accnt_id IS NOT NULL)))), CONSTRAINT quhead_quhead_number_check CHECK ((quhead_number <> ''::text)), CONSTRAINT quhead_quhead_status_check CHECK ((((quhead_status = 'O'::text) OR (quhead_status = 'C'::text)) OR (quhead_status = 'X'::text))) ); ALTER TABLE public.quhead OWNER TO admin; -- -- Name: TABLE quhead; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE quhead IS 'Quote header information'; -- -- Name: COLUMN quhead.quhead_saletype_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN quhead.quhead_saletype_id IS 'Associated sale type for quote.'; -- -- Name: COLUMN quhead.quhead_shipzone_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN quhead.quhead_shipzone_id IS 'Associated shipping zone for quote.'; SET search_path = api, pg_catalog; -- -- Name: quote; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW quote AS SELECT (quhead.quhead_number)::character varying AS quote_number, whsinfo.warehous_code AS site, quhead.quhead_quotedate AS quote_date, quhead.quhead_packdate AS pack_date, saletype.saletype_code AS sale_type, salesrep.salesrep_number AS sales_rep, quhead.quhead_commission AS commission, taxzone.taxzone_code AS tax_zone, taxtype.taxtype_name AS tax_type, terms.terms_code AS terms, prj.prj_number AS project_number, COALESCE(custinfo.cust_number, prospect.prospect_number) AS customer_number, quhead.quhead_billtoname AS billto_name, quhead.quhead_billtoaddress1 AS billto_address1, quhead.quhead_billtoaddress2 AS billto_address2, quhead.quhead_billtoaddress3 AS billto_address3, quhead.quhead_billtocity AS billto_city, quhead.quhead_billtostate AS billto_state, quhead.quhead_billtozip AS billto_postal_code, quhead.quhead_billtocountry AS billto_country, shiptoinfo.shipto_num AS shipto_number, quhead.quhead_shiptoname AS shipto_name, quhead.quhead_shiptophone AS shipto_phone, quhead.quhead_shiptoaddress1 AS shipto_address1, quhead.quhead_shiptoaddress2 AS shipto_address2, quhead.quhead_shiptoaddress3 AS shipto_address3, quhead.quhead_shiptocity AS shipto_city, quhead.quhead_shiptostate AS shipto_state, quhead.quhead_shiptozipcode AS shipto_postal_code, quhead.quhead_shiptocountry AS shipto_country, shipzone.shipzone_name AS shipto_shipzone, quhead.quhead_custponumber AS cust_po_number, quhead.quhead_fob AS fob, quhead.quhead_shipvia AS ship_via, curr_symbol.curr_abbr AS currency, quhead.quhead_misc_descrip AS misc_charge_description, CASE WHEN (quhead.quhead_misc_accnt_id IS NULL) THEN NULL::text ELSE public.formatglaccount(quhead.quhead_misc_accnt_id) END AS misc_account_number, quhead.quhead_misc AS misc_charge, quhead.quhead_freight AS freight, quhead.quhead_ordercomments AS order_notes, quhead.quhead_shipcomments AS shipping_notes, false AS add_to_packing_list_batch, quhead.quhead_expire AS expire_date, CASE WHEN (quhead.quhead_status = 'C'::text) THEN 'Converted'::text ELSE 'Open'::text END AS status FROM public.curr_symbol, (((((((((((public.quhead LEFT JOIN public.whsinfo ON ((quhead.quhead_warehous_id = whsinfo.warehous_id))) LEFT JOIN public.prj ON ((quhead.quhead_prj_id = prj.prj_id))) LEFT JOIN public.shiptoinfo ON ((quhead.quhead_shipto_id = shiptoinfo.shipto_id))) LEFT JOIN public.taxzone ON ((quhead.quhead_taxzone_id = taxzone.taxzone_id))) LEFT JOIN public.taxtype ON ((quhead.quhead_taxtype_id = taxtype.taxtype_id))) LEFT JOIN public.custinfo ON ((quhead.quhead_cust_id = custinfo.cust_id))) LEFT JOIN public.prospect ON ((quhead.quhead_cust_id = prospect.prospect_id))) LEFT JOIN public.salesrep ON ((quhead.quhead_salesrep_id = salesrep.salesrep_id))) LEFT JOIN public.terms ON ((quhead.quhead_terms_id = terms.terms_id))) LEFT JOIN public.saletype ON ((quhead.quhead_saletype_id = saletype.saletype_id))) LEFT JOIN public.shipzone ON ((quhead.quhead_shipzone_id = shipzone.shipzone_id))) WHERE (quhead.quhead_curr_id = curr_symbol.curr_id); ALTER TABLE api.quote OWNER TO admin; -- -- Name: VIEW quote; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW quote IS 'Quote'; -- -- Name: quotecomment; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW quotecomment AS SELECT quhead.quhead_number AS quote_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.quhead, public.cmnttype, public.comment WHERE (((comment.comment_source = 'Q'::text) AND (comment.comment_source_id = quhead.quhead_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); ALTER TABLE api.quotecomment OWNER TO admin; -- -- Name: VIEW quotecomment; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW quotecomment IS 'Quote Comment'; SET search_path = public, pg_catalog; -- -- Name: quitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE quitem ( quitem_id integer DEFAULT nextval(('"quitem_quitem_id_seq"'::text)::regclass) NOT NULL, quitem_quhead_id integer, quitem_linenumber integer, quitem_itemsite_id integer, quitem_scheddate date, quitem_qtyord numeric(18,6), quitem_unitcost numeric(16,6), quitem_price numeric(16,4), quitem_custprice numeric(16,4), quitem_memo text, quitem_custpn text, quitem_createorder boolean, quitem_order_warehous_id integer, quitem_item_id integer, quitem_prcost numeric(16,6), quitem_imported boolean DEFAULT false, quitem_qty_uom_id integer NOT NULL, quitem_qty_invuomratio numeric(20,10) NOT NULL, quitem_price_uom_id integer NOT NULL, quitem_price_invuomratio numeric(20,10) NOT NULL, quitem_promdate date, quitem_taxtype_id integer, quitem_dropship boolean DEFAULT false, quitem_itemsrc_id integer, quitem_pricemode character(1) DEFAULT 'D'::bpchar NOT NULL, CONSTRAINT valid_quitem_pricemode CHECK ((quitem_pricemode = ANY (ARRAY['D'::bpchar, 'M'::bpchar]))) ); ALTER TABLE public.quitem OWNER TO admin; -- -- Name: TABLE quitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE quitem IS 'Quote Line Item information'; -- -- Name: COLUMN quitem.quitem_pricemode; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN quitem.quitem_pricemode IS 'Pricing mode for quote item. Valid values are D-discount, and M-markup'; SET search_path = api, pg_catalog; -- -- Name: quoteline; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW quoteline AS SELECT quhead.quhead_number AS quote_number, quitem.quitem_linenumber AS line_number, l.item_number, quitem.quitem_custpn AS customer_pn, i.warehous_code AS sold_from_site, quitem.quitem_qtyord AS qty_ordered, q.uom_name AS qty_uom, quitem.quitem_price AS net_unit_price, p.uom_name AS price_uom, quitem.quitem_scheddate AS scheduled_date, COALESCE((SELECT taxtype.taxtype_name FROM public.taxtype WHERE (taxtype.taxtype_id = public.getitemtaxtype(l.item_id, quhead.quhead_taxzone_id))), 'None'::text) AS tax_type, CASE WHEN (quitem.quitem_price = (0)::numeric) THEN '100'::text WHEN (quitem.quitem_custprice = (0)::numeric) THEN 'N/A'::text ELSE (round((((1)::numeric - (quitem.quitem_price / quitem.quitem_custprice)) * (100)::numeric), 4))::text END AS discount_pct_from_list, quitem.quitem_createorder AS create_order, s.warehous_code AS supplying_site, quitem.quitem_prcost AS overwrite_po_price, quitem.quitem_memo AS notes FROM public.quhead, public.uom q, public.uom p, (public.quitem LEFT JOIN public.whsinfo s ON ((quitem.quitem_order_warehous_id = s.warehous_id))), public.itemsite il, public.item l, public.whsinfo i WHERE ((((((quhead.quhead_id = quitem.quitem_quhead_id) AND (quitem.quitem_itemsite_id = il.itemsite_id)) AND (il.itemsite_item_id = l.item_id)) AND (il.itemsite_warehous_id = i.warehous_id)) AND (quitem.quitem_qty_uom_id = q.uom_id)) AND (quitem.quitem_price_uom_id = p.uom_id)) ORDER BY quhead.quhead_number, quitem.quitem_linenumber; ALTER TABLE api.quoteline OWNER TO admin; -- -- Name: VIEW quoteline; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW quoteline IS 'Quote Line Item'; -- -- Name: quotelinechar; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW quotelinechar AS SELECT DISTINCT quhead.quhead_number AS quote_number, quitem.quitem_linenumber AS line_number, "char".char_name AS characteristic, COALESCE((SELECT b.charass_value FROM public.charass b WHERE (((b.charass_target_type = 'QI'::text) AND (b.charass_target_id = quitem.quitem_id)) AND (b.charass_char_id = "char".char_id))), (SELECT c.charass_value FROM public.charass c WHERE ((((c.charass_target_type = 'I'::text) AND (c.charass_target_id = item.item_id)) AND c.charass_default) AND (c.charass_char_id = "char".char_id)) LIMIT 1)) AS value FROM public.quhead, public.quitem, public.itemsite, public.item, public.charass a, public."char" WHERE ((((((quhead.quhead_id = quitem.quitem_quhead_id) AND (quitem.quitem_itemsite_id = itemsite.itemsite_id)) AND (itemsite.itemsite_item_id = item.item_id)) AND (a.charass_char_id = "char".char_id)) AND (a.charass_target_type = 'I'::text)) AND (a.charass_target_id = item.item_id)) ORDER BY quhead.quhead_number, quitem.quitem_linenumber, "char".char_name; ALTER TABLE api.quotelinechar OWNER TO admin; -- -- Name: VIEW quotelinechar; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW quotelinechar IS 'Quote Line Item Characteristics'; -- -- Name: quotelinecomment; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW quotelinecomment AS SELECT quhead.quhead_number AS quote_number, quitem.quitem_linenumber AS line_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.quhead, public.quitem, public.cmnttype, public.comment WHERE ((((quhead.quhead_id = quitem.quitem_quhead_id) AND (comment.comment_source = 'QI'::text)) AND (comment.comment_source_id = quitem.quitem_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)) ORDER BY quhead.quhead_number, quitem.quitem_linenumber, comment.comment_date DESC; ALTER TABLE api.quotelinecomment OWNER TO admin; -- -- Name: VIEW quotelinecomment; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW quotelinecomment IS 'Quote Line Item Comment'; SET search_path = public, pg_catalog; -- -- Name: aropenalloc; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE aropenalloc ( aropenalloc_aropen_id integer NOT NULL, aropenalloc_doctype character(1) NOT NULL, aropenalloc_doc_id integer NOT NULL, aropenalloc_amount numeric(20,2) DEFAULT 0.00 NOT NULL, aropenalloc_curr_id integer DEFAULT basecurrid() ); ALTER TABLE public.aropenalloc OWNER TO admin; SET search_path = api, pg_catalog; -- -- Name: salescredit; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW salescredit AS SELECT custinfo.cust_number AS customer_number, aropen.aropen_docnumber AS cm_number, cohead.cohead_number AS so_number, (aropenalloc.aropenalloc_amount)::numeric(16,4) AS amount, curr.curr_abbr AS currency FROM ((((public.aropenalloc LEFT JOIN public.aropen ON ((aropen.aropen_id = aropenalloc.aropenalloc_aropen_id))) LEFT JOIN public.custinfo ON ((custinfo.cust_id = aropen.aropen_cust_id))) LEFT JOIN public.cohead ON (((aropenalloc.aropenalloc_doctype = 'S'::bpchar) AND (cohead.cohead_id = aropenalloc.aropenalloc_doc_id)))) LEFT JOIN public.curr_symbol curr ON ((curr.curr_id = aropenalloc.aropenalloc_curr_id))) WHERE (aropenalloc.aropenalloc_doctype = 'S'::bpchar); ALTER TABLE api.salescredit OWNER TO admin; -- -- Name: VIEW salescredit; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW salescredit IS 'Payments (credit memos) pre-applied to sales orders'; SET search_path = public, pg_catalog; -- -- Name: cohist; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cohist ( cohist_id integer DEFAULT nextval(('cohist_cohist_id_seq'::text)::regclass) NOT NULL, cohist_cust_id integer, cohist_itemsite_id integer, cohist_shipdate date, cohist_shipvia text, cohist_ordernumber text, cohist_orderdate date, cohist_invcnumber text, cohist_invcdate date, cohist_qtyshipped numeric(18,6), cohist_unitprice numeric(16,4), cohist_shipto_id integer, cohist_salesrep_id integer, cohist_duedate date, cohist_imported boolean DEFAULT false, cohist_billtoname text, cohist_billtoaddress1 text, cohist_billtoaddress2 text, cohist_billtoaddress3 text, cohist_billtocity text, cohist_billtostate text, cohist_billtozip text, cohist_shiptoname text, cohist_shiptoaddress1 text, cohist_shiptoaddress2 text, cohist_shiptoaddress3 text, cohist_shiptocity text, cohist_shiptostate text, cohist_shiptozip text, cohist_commission numeric(16,4), cohist_commissionpaid boolean, cohist_unitcost numeric(18,6), cohist_misc_type character(1), cohist_misc_descrip text, cohist_misc_id integer, cohist_doctype text, cohist_promisedate date, cohist_ponumber text, cohist_curr_id integer DEFAULT basecurrid(), cohist_sequence integer, cohist_taxtype_id integer, cohist_taxzone_id integer, cohist_cohead_ccpay_id integer, cohist_saletype_id integer, cohist_shipzone_id integer ); ALTER TABLE public.cohist OWNER TO admin; -- -- Name: TABLE cohist; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE cohist IS 'Sales Order history'; -- -- Name: COLUMN cohist.cohist_cohead_ccpay_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN cohist.cohist_cohead_ccpay_id IS 'Credit card payments made at sales order time (as opposed to invoice time) need special treatment. This field allows checking for this case.'; -- -- Name: COLUMN cohist.cohist_saletype_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN cohist.cohist_saletype_id IS 'Associated sale type for sales history.'; -- -- Name: COLUMN cohist.cohist_shipzone_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN cohist.cohist_shipzone_id IS 'Associated shipping zone for sales history.'; -- -- Name: taxhist; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE taxhist ( taxhist_id integer NOT NULL, taxhist_parent_id integer NOT NULL, taxhist_taxtype_id integer, taxhist_tax_id integer NOT NULL, taxhist_basis numeric(16,2) NOT NULL, taxhist_basis_tax_id integer, taxhist_sequence integer, taxhist_percent numeric(10,6) NOT NULL, taxhist_amount numeric(16,2) NOT NULL, taxhist_tax numeric(16,6) NOT NULL, taxhist_docdate date NOT NULL, taxhist_distdate date, taxhist_curr_id integer, taxhist_curr_rate numeric, taxhist_journalnumber integer ); ALTER TABLE public.taxhist OWNER TO admin; -- -- Name: TABLE taxhist; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE taxhist IS 'A table type to record tax transaction history. Inherited by other tables that actually record history. As the parent, queries can be run against it that will join all child tables. '; -- -- Name: COLUMN taxhist.taxhist_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxhist.taxhist_id IS 'Primary key'; -- -- Name: COLUMN taxhist.taxhist_parent_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxhist.taxhist_parent_id IS 'Source parent id.'; -- -- Name: COLUMN taxhist.taxhist_taxtype_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxhist.taxhist_taxtype_id IS 'Tax type id'; -- -- Name: COLUMN taxhist.taxhist_tax_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxhist.taxhist_tax_id IS 'Tax code id.'; -- -- Name: COLUMN taxhist.taxhist_basis; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxhist.taxhist_basis IS 'Base price amount on which the tax calculation is based.'; -- -- Name: COLUMN taxhist.taxhist_basis_tax_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxhist.taxhist_basis_tax_id IS 'Tax rate calculation basis. If null, then the amount of the parent document, otherwise calculated on the result amount of the tax code id referenced.'; -- -- Name: COLUMN taxhist.taxhist_amount; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxhist.taxhist_amount IS 'Flat tax amount.'; -- -- Name: COLUMN taxhist.taxhist_tax; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxhist.taxhist_tax IS 'Calculated tax amount.'; -- -- Name: COLUMN taxhist.taxhist_docdate; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxhist.taxhist_docdate IS 'The date of the parent document.'; -- -- Name: COLUMN taxhist.taxhist_distdate; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxhist.taxhist_distdate IS 'The G/L distribution date of the parent document.'; -- -- Name: taxhist_taxhist_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE taxhist_taxhist_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.taxhist_taxhist_id_seq OWNER TO admin; -- -- Name: taxhist_taxhist_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE taxhist_taxhist_id_seq OWNED BY taxhist.taxhist_id; -- -- Name: taxhist_taxhist_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('taxhist_taxhist_id_seq', 1, false); -- -- Name: cohisttax; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cohisttax ( ) INHERITS (taxhist); ALTER TABLE public.cohisttax OWNER TO admin; SET search_path = api, pg_catalog; -- -- Name: saleshistory; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW saleshistory AS SELECT custinfo.cust_number AS customer_number, item.item_number, whsinfo.warehous_code AS site_code, cohist.cohist_shipdate AS ship_date, cohist.cohist_shipvia AS ship_via, cohist.cohist_ordernumber AS order_number, cohist.cohist_ponumber AS purchase_order_number, cohist.cohist_orderdate AS order_date, cohist.cohist_invcnumber AS invoice_number, cohist.cohist_invcdate AS invoice_date, cohist.cohist_qtyshipped AS quantity_shipped, cohist.cohist_unitprice AS unit_price, shiptoinfo.shipto_num AS shipto_number, salesrep.salesrep_number AS sales_rep, cohist.cohist_duedate AS due_date, cohist.cohist_promisedate AS promise_date, cohist.cohist_imported AS imported, cohist.cohist_billtoname AS billto_name, cohist.cohist_billtoaddress1 AS billto_address1, cohist.cohist_billtoaddress2 AS billto_address2, cohist.cohist_billtoaddress3 AS billto_address3, cohist.cohist_billtocity AS billto_city, cohist.cohist_billtostate AS billto_state, cohist.cohist_billtozip AS billto_zip, cohist.cohist_shiptoname AS shipto_name, cohist.cohist_shiptoaddress1 AS shipto_address1, cohist.cohist_shiptoaddress2 AS shipto_address2, cohist.cohist_shiptoaddress3 AS shipto_address3, cohist.cohist_shiptocity AS shipto_city, cohist.cohist_shiptostate AS shipto_state, cohist.cohist_shiptozip AS shipto_zip, cohist.cohist_commission AS commission, cohist.cohist_commissionpaid AS commission_paid, cohist.cohist_unitcost AS unit_cost, CASE WHEN (cohist.cohist_misc_type IS NULL) THEN ''::text WHEN (cohist.cohist_misc_type = 'M'::bpchar) THEN 'Misc. Charge'::text WHEN (cohist.cohist_misc_type = 'F'::bpchar) THEN 'Freight'::text ELSE 'Unknown'::text END AS misc_type, cohist.cohist_misc_descrip AS misc_description, CASE WHEN (cohist.cohist_misc_id IS NULL) THEN ''::text WHEN (cohist.cohist_misc_type = 'M'::bpchar) THEN public.formatglaccount(cohist.cohist_misc_id) ELSE 'Unknown'::text END AS misc_info, taxzone.taxzone_code AS tax_zone, taxtype.taxtype_name AS tax_type, CASE WHEN (cohist.cohist_doctype = 'I'::text) THEN 'Invoice'::text WHEN (cohist.cohist_doctype = 'C'::text) THEN 'Credit Memo'::text ELSE 'Unknown'::text END AS document_type, curr_symbol.curr_abbr AS currency, cohist.cohist_sequence AS gl_sequence, (SELECT sum(cohisttax.taxhist_tax) AS sum FROM public.cohisttax WHERE (cohisttax.taxhist_parent_id = cohist.cohist_id)) AS tax FROM (((((((((public.cohist LEFT JOIN public.custinfo ON ((cohist.cohist_cust_id = custinfo.cust_id))) LEFT JOIN public.shiptoinfo ON ((cohist.cohist_shipto_id = shiptoinfo.shipto_id))) LEFT JOIN public.taxzone ON ((cohist.cohist_taxzone_id = taxzone.taxzone_id))) LEFT JOIN public.taxtype ON ((cohist.cohist_taxtype_id = taxtype.taxtype_id))) LEFT JOIN public.salesrep ON ((cohist.cohist_salesrep_id = salesrep.salesrep_id))) LEFT JOIN public.itemsite ON ((cohist.cohist_itemsite_id = itemsite.itemsite_id))) LEFT JOIN public.item ON ((itemsite.itemsite_item_id = item.item_id))) LEFT JOIN public.whsinfo ON ((itemsite.itemsite_warehous_id = whsinfo.warehous_id))) LEFT JOIN public.curr_symbol ON ((cohist.cohist_curr_id = curr_symbol.curr_id))); ALTER TABLE api.saleshistory OWNER TO admin; -- -- Name: VIEW saleshistory; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW saleshistory IS 'Sales History'; -- -- Name: saleslinechar; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW saleslinechar AS SELECT (data.order_number)::character varying AS order_number, data.line_number, data.characteristic, COALESCE(si.charass_value, i3.charass_value) AS value, (COALESCE(si.charass_price, public.itemcharprice(data.item_id, data.char_id, COALESCE(si.charass_value, i3.charass_value), data.cohead_cust_id, data.cohead_shipto_id, data.coitem_qtyord, data.cohead_curr_id, data.cohead_orderdate), (0)::numeric))::numeric(16,4) AS price FROM (((((SELECT DISTINCT cohead.cohead_cust_id, cohead.cohead_shipto_id, cohead.cohead_curr_id, cohead.cohead_orderdate, coitem.coitem_id, coitem.coitem_itemsite_id, coitem.coitem_qtyord, "char".char_id, item.item_id, cohead.cohead_number AS order_number, CASE WHEN (coitem.coitem_subnumber = 0) THEN ((coitem.coitem_linenumber)::character varying)::text ELSE ((((coitem.coitem_linenumber)::character varying)::text || ('.'::character varying)::text) || ((coitem.coitem_subnumber)::character varying)::text) END AS line_number, "char".char_name AS characteristic FROM public.cohead, public.coitem, public.itemsite, public.item, public.charass, public."char" WHERE ((((((cohead.cohead_id = coitem.coitem_cohead_id) AND (coitem.coitem_itemsite_id = itemsite.itemsite_id)) AND (itemsite.itemsite_item_id = item.item_id)) AND (charass.charass_char_id = "char".char_id)) AND (charass.charass_target_type = 'I'::text)) AND (charass.charass_target_id = item.item_id))) data LEFT JOIN public.charass si ON ((((data.coitem_id = si.charass_target_id) AND ('SI'::text = si.charass_target_type)) AND (si.charass_char_id = data.char_id)))) LEFT JOIN public.itemsite i1 ON ((data.coitem_itemsite_id = i1.itemsite_id))) LEFT JOIN public.item i2 ON ((i1.itemsite_item_id = i2.item_id))) LEFT JOIN public.charass i3 ON (((((i2.item_id = i3.charass_target_id) AND ('I'::text = i3.charass_target_type)) AND (i3.charass_char_id = data.char_id)) AND i3.charass_default))) ORDER BY (data.order_number)::character varying, data.line_number, data.characteristic; ALTER TABLE api.saleslinechar OWNER TO admin; -- -- Name: VIEW saleslinechar; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW saleslinechar IS 'Sales Order Line Item Characteristic'; -- -- Name: saleslinecomment; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW saleslinecomment AS SELECT (cohead.cohead_number)::character varying AS order_number, CASE WHEN (coitem.coitem_subnumber = 0) THEN ((coitem.coitem_linenumber)::character varying)::text ELSE ((((coitem.coitem_linenumber)::character varying)::text || ('.'::character varying)::text) || ((coitem.coitem_subnumber)::character varying)::text) END AS line_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.cohead, public.coitem, public.cmnttype, public.comment WHERE ((((cohead.cohead_id = coitem.coitem_cohead_id) AND (comment.comment_source = 'SI'::text)) AND (comment.comment_source_id = coitem.coitem_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)) ORDER BY cohead.cohead_number, coitem.coitem_linenumber, comment.comment_date DESC; ALTER TABLE api.saleslinecomment OWNER TO admin; -- -- Name: VIEW saleslinecomment; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW saleslinecomment IS 'Sales Order Line Item Comment'; -- -- Name: salesorder; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW salesorder AS SELECT (cohead.cohead_number)::character varying AS order_number, whsinfo.warehous_code AS site, cohead.cohead_orderdate AS order_date, cohead.cohead_packdate AS pack_date, saletype.saletype_code AS sale_type, salesrep.salesrep_number AS sales_rep, cohead.cohead_commission AS commission, COALESCE(taxzone.taxzone_code, 'None'::text) AS tax_zone, terms.terms_code AS terms, prj.prj_number AS project_number, custinfo.cust_number AS customer_number, bc.cntct_number AS billto_contact_number, cohead.cohead_billto_cntct_honorific AS billto_contact_name, cohead.cohead_billto_cntct_first_name AS billto_contact_first, cohead.cohead_billto_cntct_middle AS billto_contact_middle, cohead.cohead_billto_cntct_last_name AS billto_contact_last, cohead.cohead_billto_cntct_suffix AS billto_contact_suffix, cohead.cohead_billto_cntct_phone AS billto_contact_phone, cohead.cohead_billto_cntct_title AS billto_contact_title, cohead.cohead_billto_cntct_fax AS billto_contct_fax, cohead.cohead_billto_cntct_email AS billto_contact_email, cohead.cohead_billtoname AS billto_name, cohead.cohead_billtoaddress1 AS billto_address1, cohead.cohead_billtoaddress2 AS billto_address2, cohead.cohead_billtoaddress3 AS billto_address3, cohead.cohead_billtocity AS billto_city, cohead.cohead_billtostate AS billto_state, cohead.cohead_billtozipcode AS billto_postal_code, cohead.cohead_billtocountry AS billto_country, shiptoinfo.shipto_num AS shipto_number, sc.cntct_number AS shipto_contact_number, cohead.cohead_shipto_cntct_honorific AS shipto_contact_honorific, cohead.cohead_shipto_cntct_first_name AS shipto_contact_first, cohead.cohead_shipto_cntct_middle AS shipto_contact_middle, cohead.cohead_shipto_cntct_last_name AS shipto_contact_last, cohead.cohead_shipto_cntct_suffix AS shipto_contact_suffix, cohead.cohead_shipto_cntct_phone AS shipto_contact_phone, cohead.cohead_shipto_cntct_title AS shipto_contact_title, cohead.cohead_shipto_cntct_fax AS shipto_contact_fax, cohead.cohead_shipto_cntct_email AS shipto_contact_email, cohead.cohead_shiptoname AS shipto_name, cohead.cohead_shiptophone AS shipto_phone, cohead.cohead_shiptoaddress1 AS shipto_address1, cohead.cohead_shiptoaddress2 AS shipto_address2, cohead.cohead_shiptoaddress3 AS shipto_address3, cohead.cohead_shiptocity AS shipto_city, cohead.cohead_shiptostate AS shipto_state, cohead.cohead_shiptozipcode AS shipto_postal_code, cohead.cohead_shiptocountry AS shipto_country, shipzone.shipzone_name AS shipto_shipzone, cohead.cohead_custponumber AS cust_po_number, cohead.cohead_fob AS fob, cohead.cohead_shipvia AS ship_via, CASE WHEN (cohead.cohead_holdtype = 'N'::bpchar) THEN 'None'::text WHEN (cohead.cohead_holdtype = 'C'::bpchar) THEN 'Credit'::text WHEN (cohead.cohead_holdtype = 'S'::bpchar) THEN 'Shipping'::text WHEN (cohead.cohead_holdtype = 'P'::bpchar) THEN 'Packing'::text WHEN (cohead.cohead_holdtype = 'R'::bpchar) THEN 'Return'::text ELSE 'Error'::text END AS hold_type, shipchrg.shipchrg_name AS shipping_chgs, shipform.shipform_name AS shipping_form, cohead.cohead_shipcomplete AS ship_complete, curr_symbol.curr_abbr AS currency, cohead.cohead_misc_descrip AS misc_charge_description, CASE WHEN (cohead.cohead_misc_accnt_id IS NULL) THEN NULL::text ELSE public.formatglaccount(cohead.cohead_misc_accnt_id) END AS misc_account_number, cohead.cohead_misc AS misc_charge, cohead.cohead_freight AS freight, cohead.cohead_calcfreight AS calculate_freight, cohead.cohead_ordercomments AS order_notes, cohead.cohead_shipcomments AS shipping_notes, false AS add_to_packing_list_batch FROM (((((((((public.cohead LEFT JOIN public.cntct bc ON ((cohead.cohead_billto_cntct_id = bc.cntct_id))) LEFT JOIN public.cntct sc ON ((cohead.cohead_shipto_cntct_id = sc.cntct_id))) LEFT JOIN public.whsinfo ON ((cohead.cohead_warehous_id = whsinfo.warehous_id))) LEFT JOIN public.prj ON ((cohead.cohead_prj_id = prj.prj_id))) LEFT JOIN public.shiptoinfo ON ((cohead.cohead_shipto_id = shiptoinfo.shipto_id))) LEFT JOIN public.shipchrg ON ((cohead.cohead_shipchrg_id = shipchrg.shipchrg_id))) LEFT JOIN public.taxzone ON ((cohead.cohead_taxzone_id = taxzone.taxzone_id))) LEFT JOIN public.saletype ON ((cohead.cohead_saletype_id = saletype.saletype_id))) LEFT JOIN public.shipzone ON ((cohead.cohead_shipzone_id = shipzone.shipzone_id))), public.custinfo, public.shipform, public.salesrep, public.terms, public.curr_symbol WHERE (((((cohead.cohead_cust_id = custinfo.cust_id) AND (cohead.cohead_shipform_id = shipform.shipform_id)) AND (cohead.cohead_salesrep_id = salesrep.salesrep_id)) AND (cohead.cohead_terms_id = terms.terms_id)) AND (cohead.cohead_curr_id = curr_symbol.curr_id)); ALTER TABLE api.salesorder OWNER TO admin; -- -- Name: VIEW salesorder; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW salesorder IS 'Sales Order'; -- -- Name: salesordercomment; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW salesordercomment AS SELECT (cohead.cohead_number)::character varying AS order_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.cohead, public.cmnttype, public.comment WHERE (((comment.comment_source = 'S'::text) AND (comment.comment_source_id = cohead.cohead_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); ALTER TABLE api.salesordercomment OWNER TO admin; -- -- Name: VIEW salesordercomment; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW salesordercomment IS 'Sales Order Comment'; -- -- Name: salesrep; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW salesrep AS SELECT (salesrep.salesrep_number)::character varying AS number, salesrep.salesrep_active AS active, salesrep.salesrep_name AS name, (salesrep.salesrep_commission * (100)::numeric) AS commission_percent, emp.emp_number AS employee FROM (public.salesrep LEFT JOIN public.emp ON ((emp.emp_id = salesrep.salesrep_emp_id))) ORDER BY salesrep.salesrep_number; ALTER TABLE api.salesrep OWNER TO admin; -- -- Name: VIEW salesrep; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW salesrep IS 'Sales Rep'; SET search_path = public, pg_catalog; -- -- Name: shipvia; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE shipvia ( shipvia_id integer DEFAULT nextval(('shipvia_shipvia_id_seq'::text)::regclass) NOT NULL, shipvia_code text NOT NULL, shipvia_descrip text, CONSTRAINT shipvia_shipvia_code_check CHECK ((shipvia_code <> ''::text)) ); ALTER TABLE public.shipvia OWNER TO admin; -- -- Name: TABLE shipvia; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE shipvia IS 'Ship Via information'; -- -- Name: sitetype; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE sitetype ( sitetype_id integer NOT NULL, sitetype_name text NOT NULL, sitetype_descrip text, CONSTRAINT sitetype_sitetype_name_check CHECK ((sitetype_name <> ''::text)) ); ALTER TABLE public.sitetype OWNER TO admin; -- -- Name: TABLE sitetype; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE sitetype IS 'This table is the different types of sites.'; SET search_path = api, pg_catalog; -- -- Name: site; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW site AS SELECT (whsinfo.warehous_code)::character varying AS code, st.sitetype_name AS type, whsinfo.warehous_active AS active, whsinfo.warehous_descrip AS description, m.addr_number AS address_number, m.addr_line1 AS address1, m.addr_line2 AS address2, m.addr_line3 AS address3, m.addr_city AS city, m.addr_state AS state, m.addr_postalcode AS postal_code, m.addr_country AS country, ''::text AS address_change, c.cntct_number AS contact_number, c.cntct_honorific AS honorific, c.cntct_first_name AS first, c.cntct_middle AS middle, c.cntct_last_name AS last, c.cntct_suffix AS suffix, c.cntct_title AS job_title, c.cntct_phone AS phone, c.cntct_fax AS fax, c.cntct_email AS email, ''::text AS contact_change, public.formatglaccount(a.accnt_id) AS post_unassigned_transactions_to, a.accnt_descrip AS post_unassigned_transactions_to_description, whsinfo.warehous_transit AS transit_type, CASE WHEN whsinfo.warehous_transit THEN false ELSE true END AS inventory_type, CASE WHEN whsinfo.warehous_transit THEN ''::text ELSE whsinfo.warehous_bol_prefix END AS next_bill_of_lading_prefix, CASE WHEN whsinfo.warehous_transit THEN 0 ELSE whsinfo.warehous_bol_number END AS next_bill_of_lading_number, CASE WHEN whsinfo.warehous_transit THEN false ELSE whsinfo.warehous_shipping END AS shipping_site, CASE WHEN whsinfo.warehous_transit THEN ''::text ELSE whsinfo.warehous_counttag_prefix END AS next_count_tag_prefix, CASE WHEN whsinfo.warehous_transit THEN 0 ELSE whsinfo.warehous_counttag_number END AS next_count_tag_number, CASE WHEN whsinfo.warehous_transit THEN false ELSE whsinfo.warehous_useslips END AS force_the_use_of_count_slips, CASE WHEN whsinfo.warehous_transit THEN false ELSE whsinfo.warehous_usezones END AS force_the_use_of_zones, CASE WHEN whsinfo.warehous_transit THEN 0 ELSE whsinfo.warehous_sequence END AS scheduling_sequence, CASE WHEN whsinfo.warehous_transit THEN (0)::numeric ELSE (whsinfo.warehous_shipping_commission * 100.0) END AS shipping_commission, CASE WHEN whsinfo.warehous_transit THEN ''::text ELSE t.taxzone_code END AS tax_zone, CASE WHEN whsinfo.warehous_transit THEN ''::text ELSE whsinfo.warehous_fob END AS default_fob, CASE WHEN whsinfo.warehous_transit THEN s.shipvia_code ELSE ''::text END AS default_ship_via, CASE WHEN whsinfo.warehous_transit THEN f.shipform_name ELSE ''::text END AS default_shipping_form, CASE WHEN whsinfo.warehous_transit THEN cc.costcat_code ELSE ''::text END AS default_cost_category, CASE WHEN whsinfo.warehous_transit THEN whsinfo.warehous_shipcomments ELSE ''::text END AS shipping_comments, CASE WHEN whsinfo.warehous_transit THEN false ELSE whsinfo.warehous_enforcearbl END AS enforce_arbl_naming_convention, CASE WHEN whsinfo.warehous_transit THEN 0 WHEN whsinfo.warehous_enforcearbl THEN whsinfo.warehous_aislesize ELSE 0 END AS aisle_size, CASE WHEN whsinfo.warehous_transit THEN false WHEN (whsinfo.warehous_enforcearbl AND whsinfo.warehous_aislealpha) THEN true ELSE false END AS aisle_allow_alpha_characters, CASE WHEN whsinfo.warehous_transit THEN 0 WHEN whsinfo.warehous_enforcearbl THEN whsinfo.warehous_racksize ELSE 0 END AS rack_size, CASE WHEN whsinfo.warehous_transit THEN false WHEN (whsinfo.warehous_enforcearbl AND whsinfo.warehous_rackalpha) THEN true ELSE false END AS rack_allow_alpha_characters, CASE WHEN whsinfo.warehous_transit THEN 0 WHEN whsinfo.warehous_enforcearbl THEN whsinfo.warehous_binsize ELSE 0 END AS bin_size, CASE WHEN whsinfo.warehous_transit THEN false WHEN (whsinfo.warehous_enforcearbl AND whsinfo.warehous_binalpha) THEN true ELSE false END AS bin_allow_alpha_characters, CASE WHEN whsinfo.warehous_transit THEN 0 WHEN whsinfo.warehous_enforcearbl THEN whsinfo.warehous_locationsize ELSE 0 END AS location_size, CASE WHEN whsinfo.warehous_transit THEN false WHEN (whsinfo.warehous_enforcearbl AND whsinfo.warehous_locationalpha) THEN true ELSE false END AS location_allow_alpha_characters FROM ((((((((public.whsinfo LEFT JOIN public.addr m ON ((whsinfo.warehous_addr_id = m.addr_id))) LEFT JOIN public.cntct c ON ((whsinfo.warehous_cntct_id = c.cntct_id))) LEFT JOIN public.accnt a ON ((whsinfo.warehous_default_accnt_id = a.accnt_id))) LEFT JOIN public.taxzone t ON ((whsinfo.warehous_taxzone_id = t.taxzone_id))) LEFT JOIN public.shipvia s ON ((whsinfo.warehous_shipvia_id = s.shipvia_id))) LEFT JOIN public.shipform f ON ((whsinfo.warehous_shipform_id = f.shipform_id))) LEFT JOIN public.costcat cc ON ((whsinfo.warehous_costcat_id = cc.costcat_id))) LEFT JOIN public.sitetype st ON ((whsinfo.warehous_sitetype_id = st.sitetype_id))) ORDER BY whsinfo.warehous_code; ALTER TABLE api.site OWNER TO admin; -- -- Name: VIEW site; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW site IS 'Site'; -- -- Name: sitezone; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW sitezone AS SELECT (whsinfo.warehous_code)::character varying AS site, (whsezone.whsezone_name)::character varying AS name, whsezone.whsezone_descrip AS description FROM (public.whsezone LEFT JOIN public.whsinfo ON ((whsinfo.warehous_id = whsezone.whsezone_warehous_id))); ALTER TABLE api.sitezone OWNER TO admin; -- -- Name: VIEW sitezone; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW sitezone IS 'Site Zone'; -- -- Name: task; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW task AS SELECT prj.prj_number AS project_number, prjtask.prjtask_number AS number, CASE WHEN (prjtask.prjtask_status = 'P'::bpchar) THEN 'Concept'::text WHEN (prjtask.prjtask_status = 'O'::bpchar) THEN 'In-Process'::text WHEN (prjtask.prjtask_status = 'C'::bpchar) THEN 'Closed'::text ELSE 'Error'::text END AS status, prjtask.prjtask_name AS name, prjtask.prjtask_descrip AS description, prjtask.prjtask_owner_username AS owner, prjtask.prjtask_username AS assigned_to, prjtask.prjtask_hours_budget AS hours_budgeted, prjtask.prjtask_hours_actual AS hours_actual, prjtask.prjtask_exp_budget AS expenses_budgeted, prjtask.prjtask_exp_actual AS expenses_actual, prjtask.prjtask_due_date AS due, prjtask.prjtask_assigned_date AS assigned, prjtask.prjtask_start_date AS started, prjtask.prjtask_completed_date AS completed FROM (public.prjtask JOIN public.prj ON ((prj.prj_id = prjtask.prjtask_prj_id))); ALTER TABLE api.task OWNER TO admin; -- -- Name: VIEW task; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW task IS 'Task'; -- -- Name: taskcomment; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW taskcomment AS SELECT (prj.prj_number)::character varying AS project_number, (prjtask.prjtask_number)::character varying AS task_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.prj, public.prjtask, public.cmnttype, public.comment WHERE ((((comment.comment_source = 'TA'::text) AND (prj.prj_id = prjtask.prjtask_prj_id)) AND (comment.comment_source_id = prjtask.prjtask_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); ALTER TABLE api.taskcomment OWNER TO admin; -- -- Name: VIEW taskcomment; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW taskcomment IS 'Task Comment'; -- -- Name: todo; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW todo AS SELECT todoitem.todoitem_id AS task_number, todoitem.todoitem_owner_username AS owner, todoitem.todoitem_username AS assigned_to, todoitem.todoitem_name AS task_name, incdtpriority.incdtpriority_name AS priority, incdt.incdt_number AS incident, ophead.ophead_name AS opportunity, crmacct.crmacct_number AS account, public.formatdate(todoitem.todoitem_due_date) AS date_due, public.formatdate(todoitem.todoitem_assigned_date) AS date_assigned, public.formatdate(todoitem.todoitem_start_date) AS date_started, public.formatdate(todoitem.todoitem_completed_date) AS date_completed, CASE WHEN (todoitem.todoitem_status = 'P'::bpchar) THEN 'Pending Input'::text WHEN (todoitem.todoitem_status = 'D'::bpchar) THEN 'Deferred'::text ELSE 'Neither'::text END AS status, todoitem.todoitem_active AS active, todoitem.todoitem_description AS description, todoitem.todoitem_notes AS notes FROM ((((public.todoitem LEFT JOIN public.incdt ON ((incdt.incdt_id = todoitem.todoitem_incdt_id))) LEFT JOIN public.ophead ON ((ophead.ophead_id = todoitem.todoitem_ophead_id))) LEFT JOIN public.crmacct ON ((crmacct.crmacct_id = todoitem.todoitem_crmacct_id))) LEFT JOIN public.incdtpriority ON ((incdtpriority.incdtpriority_id = todoitem.todoitem_priority_id))); ALTER TABLE api.todo OWNER TO admin; -- -- Name: VIEW todo; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW todo IS 'To-Do List'; SET search_path = public, pg_catalog; -- -- Name: vendtype; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE vendtype ( vendtype_id integer NOT NULL, vendtype_code text NOT NULL, vendtype_descrip text, CONSTRAINT vendtype_vendtype_code_check CHECK ((vendtype_code <> ''::text)) ); ALTER TABLE public.vendtype OWNER TO admin; -- -- Name: TABLE vendtype; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE vendtype IS 'Vendor Type information'; SET search_path = api, pg_catalog; -- -- Name: vendor; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW vendor AS SELECT (vendinfo.vend_number)::character varying AS vendor_number, vendtype.vendtype_code AS vendor_type, vendinfo.vend_name AS vendor_name, vendinfo.vend_active AS active, vendinfo.vend_accntnum AS account_number, addr.addr_number AS address_number, addr.addr_line1 AS address1, addr.addr_line2 AS address2, addr.addr_line3 AS address3, addr.addr_city AS city, addr.addr_state AS state, addr.addr_postalcode AS postalcode, addr.addr_country AS country, ''::text AS address_change, terms.terms_code AS default_terms, vendinfo.vend_shipvia AS ship_via, curr_symbol.curr_abbr AS default_currency, CASE WHEN (vendinfo.vend_fobsource = 'W'::bpchar) THEN 'Receiving Site'::text ELSE vendinfo.vend_fob END AS default_fob, vendinfo.vend_po AS sells_purchase_order_items, vendinfo.vend_restrictpurch AS may_only_sell_item_source, vendinfo.vend_qualified AS qualified, vendinfo.vend_match AS matching_vo_po_amounts, vendinfo.vend_1099 AS receives_1099, taxzone.taxzone_code AS default_tax_zone, CASE WHEN (accnt.accnt_id IS NULL) THEN 'N/A'::text ELSE public.formatglaccount(accnt.accnt_id) END AS default_dist_gl_account, CASE WHEN (expcat.expcat_id IS NULL) THEN 'N/A'::text ELSE expcat.expcat_code END AS default_dist_expense_category, CASE WHEN (tax.tax_id IS NULL) THEN 'N/A'::text ELSE tax.tax_code END AS default_dist_tax_code, c1.cntct_number AS contact1_number, c1.cntct_honorific AS contact1_honorific, c1.cntct_first_name AS contact1_first, c1.cntct_middle AS contact1_middle, c1.cntct_last_name AS contact1_last, c1.cntct_suffix AS contact1_suffix, c1.cntct_title AS contact1_job_title, c1.cntct_phone AS contact1_voice, c1.cntct_phone2 AS contact1_alternate, c1.cntct_fax AS contact1_fax, c1.cntct_email AS contact1_email, c1.cntct_webaddr AS contact1_web, ''::text AS contact1_change, c2.cntct_number AS contact2_number, c2.cntct_honorific AS contact2_honorific, c2.cntct_first_name AS contact2_first, c2.cntct_middle AS contact2_middle, c2.cntct_last_name AS contact2_last, c2.cntct_suffix AS contact2_suffix, c2.cntct_title AS contact2_job_title, c2.cntct_phone AS contact2_voice, c2.cntct_phone2 AS contact2_alternate, c2.cntct_fax AS contact2_fax, c2.cntct_email AS contact2_email, c2.cntct_webaddr AS contact2_web, ''::text AS contact2_change, vendinfo.vend_comments AS notes, vendinfo.vend_pocomments AS po_comments, vendinfo.vend_emailpodelivery AS allow_email_po_delivery, vendinfo.vend_ediemail AS po_edi_email, vendinfo.vend_edicc AS po_edi_cc, vendinfo.vend_edisubject AS po_edi_subject, vendinfo.vend_edifilename AS po_edi_filename, vendinfo.vend_ediemailbody AS po_edi_emailbody FROM ((((((((((public.vendinfo LEFT JOIN public.addr ON ((vendinfo.vend_addr_id = addr.addr_id))) LEFT JOIN public.cntct c1 ON ((vendinfo.vend_cntct1_id = c1.cntct_id))) LEFT JOIN public.cntct c2 ON ((vendinfo.vend_cntct2_id = c2.cntct_id))) LEFT JOIN public.taxzone ON ((vendinfo.vend_taxzone_id = taxzone.taxzone_id))) LEFT JOIN public.curr_symbol ON ((vendinfo.vend_curr_id = curr_symbol.curr_id))) LEFT JOIN public.terms ON ((vendinfo.vend_terms_id = terms.terms_id))) LEFT JOIN public.vendtype ON ((vendinfo.vend_vendtype_id = vendtype.vendtype_id))) LEFT JOIN public.accnt ON ((vendinfo.vend_accnt_id = accnt.accnt_id))) LEFT JOIN public.expcat ON ((vendinfo.vend_expcat_id = expcat.expcat_id))) LEFT JOIN public.tax ON ((vendinfo.vend_tax_id = tax.tax_id))) ORDER BY vendinfo.vend_number; ALTER TABLE api.vendor OWNER TO admin; -- -- Name: VIEW vendor; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW vendor IS 'vendor'; -- -- Name: vendoraddress; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW vendoraddress AS SELECT (vendinfo.vend_number)::character varying AS vendor_number, vendinfo.vend_name AS vendor_name, (vendaddrinfo.vendaddr_code)::character varying AS vendor_address_number, vendaddrinfo.vendaddr_name AS vendor_address_name, addr.addr_number AS address_number, addr.addr_line1 AS address1, addr.addr_line2 AS address2, addr.addr_line3 AS address3, addr.addr_city AS city, addr.addr_state AS state, addr.addr_postalcode AS postalcode, addr.addr_country AS country, ''::text AS address_change, cntct.cntct_number AS contact_number, cntct.cntct_honorific AS contact_honorific, cntct.cntct_first_name AS contact_first, cntct.cntct_middle AS contact_middle, cntct.cntct_last_name AS contact_last, cntct.cntct_suffix AS contact_suffix, cntct.cntct_title AS contact_job_title, cntct.cntct_phone AS contact_voice, cntct.cntct_phone2 AS contact_alternate, cntct.cntct_fax AS contact_fax, cntct.cntct_email AS contact_email, cntct.cntct_webaddr AS contact_web, ''::text AS contact_change, vendaddrinfo.vendaddr_comments AS notes FROM (((public.vendaddrinfo LEFT JOIN public.vendinfo ON ((vendinfo.vend_id = vendaddrinfo.vendaddr_vend_id))) LEFT JOIN public.addr ON ((vendaddrinfo.vendaddr_addr_id = addr.addr_id))) LEFT JOIN public.cntct ON ((vendaddrinfo.vendaddr_cntct_id = cntct.cntct_id))) ORDER BY vendaddrinfo.vendaddr_code; ALTER TABLE api.vendoraddress OWNER TO admin; -- -- Name: VIEW vendoraddress; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW vendoraddress IS 'vendor address'; -- -- Name: vendortype; Type: VIEW; Schema: api; Owner: admin -- CREATE VIEW vendortype AS SELECT (vendtype.vendtype_code)::character varying AS code, vendtype.vendtype_descrip AS description FROM public.vendtype ORDER BY vendtype.vendtype_code; ALTER TABLE api.vendortype OWNER TO admin; -- -- Name: VIEW vendortype; Type: COMMENT; Schema: api; Owner: admin -- COMMENT ON VIEW vendortype IS 'Vendor Type'; SET search_path = public, pg_catalog; -- -- Name: cmd; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cmd ( cmd_id integer NOT NULL, cmd_module text NOT NULL, cmd_title text NOT NULL, cmd_descrip text, cmd_privname text, cmd_executable text NOT NULL, cmd_name text ); ALTER TABLE public.cmd OWNER TO admin; -- -- Name: TABLE cmd; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE cmd IS 'Custom menu command table.'; -- -- Name: cmd_cmd_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cmd_cmd_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.cmd_cmd_id_seq OWNER TO admin; -- -- Name: cmd_cmd_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE cmd_cmd_id_seq OWNED BY cmd.cmd_id; -- -- Name: cmd_cmd_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cmd_cmd_id_seq', 6, true); -- -- Name: cmd_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE cmd ALTER COLUMN cmd_id SET DEFAULT nextval('cmd_cmd_id_seq'::regclass); SET search_path = fixcountry, pg_catalog; -- -- Name: pkgcmd; Type: TABLE; Schema: fixcountry; Owner: admin; Tablespace: -- CREATE TABLE pkgcmd ( cmd_id integer DEFAULT nextval('public.cmd_cmd_id_seq'::regclass) ) INHERITS (public.cmd); ALTER TABLE fixcountry.pkgcmd OWNER TO admin; SET search_path = public, pg_catalog; -- -- Name: cmdarg; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cmdarg ( cmdarg_id integer NOT NULL, cmdarg_cmd_id integer NOT NULL, cmdarg_order integer NOT NULL, cmdarg_arg text NOT NULL ); ALTER TABLE public.cmdarg OWNER TO admin; -- -- Name: TABLE cmdarg; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE cmdarg IS 'Command argument for custom menu command table.'; -- -- Name: cmdarg_cmdarg_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cmdarg_cmdarg_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.cmdarg_cmdarg_id_seq OWNER TO admin; -- -- Name: cmdarg_cmdarg_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE cmdarg_cmdarg_id_seq OWNED BY cmdarg.cmdarg_id; -- -- Name: cmdarg_cmdarg_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cmdarg_cmdarg_id_seq', 6, true); -- -- Name: cmdarg_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE cmdarg ALTER COLUMN cmdarg_id SET DEFAULT nextval('cmdarg_cmdarg_id_seq'::regclass); SET search_path = fixcountry, pg_catalog; -- -- Name: pkgcmdarg; Type: TABLE; Schema: fixcountry; Owner: admin; Tablespace: -- CREATE TABLE pkgcmdarg ( cmdarg_id integer DEFAULT nextval('public.cmdarg_cmdarg_id_seq'::regclass) ) INHERITS (public.cmdarg); ALTER TABLE fixcountry.pkgcmdarg OWNER TO admin; SET search_path = public, pg_catalog; -- -- Name: image_image_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE image_image_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.image_image_id_seq OWNER TO admin; -- -- Name: image_image_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('image_image_id_seq', 6631, true); SET search_path = fixcountry, pg_catalog; -- -- Name: pkgimage; Type: TABLE; Schema: fixcountry; Owner: admin; Tablespace: -- CREATE TABLE pkgimage ( image_id integer DEFAULT nextval('public.image_image_id_seq'::regclass) ) INHERITS (public.image); ALTER TABLE fixcountry.pkgimage OWNER TO admin; SET search_path = public, pg_catalog; -- -- Name: metasql; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE metasql ( metasql_id integer NOT NULL, metasql_group text, metasql_name text, metasql_notes text, metasql_query text, metasql_lastuser text, metasql_lastupdate date, metasql_grade integer DEFAULT 0 NOT NULL ); ALTER TABLE public.metasql OWNER TO admin; -- -- Name: TABLE metasql; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE metasql IS 'MetaSQL Table'; -- -- Name: metasql_metasql_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE metasql_metasql_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.metasql_metasql_id_seq OWNER TO admin; -- -- Name: metasql_metasql_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE metasql_metasql_id_seq OWNED BY metasql.metasql_id; -- -- Name: metasql_metasql_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('metasql_metasql_id_seq', 479, true); -- -- Name: metasql_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE metasql ALTER COLUMN metasql_id SET DEFAULT nextval('metasql_metasql_id_seq'::regclass); SET search_path = fixcountry, pg_catalog; -- -- Name: pkgmetasql; Type: TABLE; Schema: fixcountry; Owner: admin; Tablespace: -- CREATE TABLE pkgmetasql ( metasql_id integer DEFAULT nextval('public.metasql_metasql_id_seq'::regclass) ) INHERITS (public.metasql); ALTER TABLE fixcountry.pkgmetasql OWNER TO admin; SET search_path = public, pg_catalog; -- -- Name: priv; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE priv ( priv_id integer DEFAULT nextval(('priv_priv_id_seq'::text)::regclass) NOT NULL, priv_module text, priv_name text, priv_descrip text, priv_seq integer ); ALTER TABLE public.priv OWNER TO admin; -- -- Name: TABLE priv; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE priv IS 'System Privilege information'; -- -- Name: priv_priv_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE priv_priv_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.priv_priv_id_seq OWNER TO admin; -- -- Name: priv_priv_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('priv_priv_id_seq', 644, true); SET search_path = fixcountry, pg_catalog; -- -- Name: pkgpriv; Type: TABLE; Schema: fixcountry; Owner: admin; Tablespace: -- CREATE TABLE pkgpriv ( priv_id integer DEFAULT nextval('public.priv_priv_id_seq'::regclass) ) INHERITS (public.priv); ALTER TABLE fixcountry.pkgpriv OWNER TO admin; SET search_path = public, pg_catalog; -- -- Name: report; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE report ( report_id integer DEFAULT nextval(('report_report_id_seq'::text)::regclass) NOT NULL, report_name text, report_sys boolean, report_source text, report_descrip text, report_grade integer NOT NULL, report_loaddate timestamp without time zone ); ALTER TABLE public.report OWNER TO admin; -- -- Name: TABLE report; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE report IS 'Report definition information'; -- -- Name: report_report_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE report_report_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.report_report_id_seq OWNER TO admin; -- -- Name: report_report_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('report_report_id_seq', 478, true); SET search_path = fixcountry, pg_catalog; -- -- Name: pkgreport; Type: TABLE; Schema: fixcountry; Owner: admin; Tablespace: -- CREATE TABLE pkgreport ( report_id integer DEFAULT nextval('public.report_report_id_seq'::regclass) ) INHERITS (public.report); ALTER TABLE fixcountry.pkgreport OWNER TO admin; SET search_path = public, pg_catalog; -- -- Name: script; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE script ( script_id integer NOT NULL, script_name text NOT NULL, script_order integer NOT NULL, script_enabled boolean DEFAULT false NOT NULL, script_source text NOT NULL, script_notes text ); ALTER TABLE public.script OWNER TO admin; -- -- Name: script_script_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE script_script_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.script_script_id_seq OWNER TO admin; -- -- Name: script_script_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE script_script_id_seq OWNED BY script.script_id; -- -- Name: script_script_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('script_script_id_seq', 132, true); -- -- Name: script_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE script ALTER COLUMN script_id SET DEFAULT nextval('script_script_id_seq'::regclass); SET search_path = fixcountry, pg_catalog; -- -- Name: pkgscript; Type: TABLE; Schema: fixcountry; Owner: admin; Tablespace: -- CREATE TABLE pkgscript ( script_id integer DEFAULT nextval('public.script_script_id_seq'::regclass) ) INHERITS (public.script); ALTER TABLE fixcountry.pkgscript OWNER TO admin; SET search_path = public, pg_catalog; -- -- Name: uiform; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE uiform ( uiform_id integer NOT NULL, uiform_name text NOT NULL, uiform_order integer NOT NULL, uiform_enabled boolean DEFAULT false NOT NULL, uiform_source text NOT NULL, uiform_notes text ); ALTER TABLE public.uiform OWNER TO admin; -- -- Name: uiform_uiform_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE uiform_uiform_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.uiform_uiform_id_seq OWNER TO admin; -- -- Name: uiform_uiform_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE uiform_uiform_id_seq OWNED BY uiform.uiform_id; -- -- Name: uiform_uiform_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('uiform_uiform_id_seq', 64, true); -- -- Name: uiform_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE uiform ALTER COLUMN uiform_id SET DEFAULT nextval('uiform_uiform_id_seq'::regclass); SET search_path = fixcountry, pg_catalog; -- -- Name: pkguiform; Type: TABLE; Schema: fixcountry; Owner: admin; Tablespace: -- CREATE TABLE pkguiform ( uiform_id integer DEFAULT nextval('public.uiform_uiform_id_seq'::regclass) ) INHERITS (public.uiform); ALTER TABLE fixcountry.pkguiform OWNER TO admin; SET search_path = public, pg_catalog; -- -- Name: acalitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE acalitem ( acalitem_id integer DEFAULT nextval(('"xcalitem_xcalitem_id_seq"'::text)::regclass) NOT NULL, acalitem_calhead_id integer, acalitem_periodstart date, acalitem_periodlength integer, acalitem_name text ); ALTER TABLE public.acalitem OWNER TO admin; -- -- Name: TABLE acalitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE acalitem IS 'Absolute Calendar Item information'; -- -- Name: accnt_accnt_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE accnt_accnt_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.accnt_accnt_id_seq OWNER TO admin; -- -- Name: accnt_accnt_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('accnt_accnt_id_seq', 136, true); -- -- Name: addr_addr_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE addr_addr_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.addr_addr_id_seq OWNER TO admin; -- -- Name: addr_addr_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE addr_addr_id_seq OWNED BY addr.addr_id; -- -- Name: addr_addr_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('addr_addr_id_seq', 3, true); -- -- Name: address; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW address AS SELECT addresses.addr_id, addresses.addr_active, addresses.addr_line1, addresses.addr_line2, addresses.addr_line3, addresses.addr_city, addresses.addr_state, addresses.addr_postalcode, addresses.addr_country, addresses.addr_notes, addresses.addr_number, addresses.crmacct_id, addresses.crmacct_number, addresses.crmacct_name FROM ((((SELECT base.addr_id, base.addr_active, base.addr_line1, base.addr_line2, base.addr_line3, base.addr_city, base.addr_state, base.addr_postalcode, base.addr_country, base.addr_notes, base.addr_number, base.crmacct_id, base.crmacct_number, base.crmacct_name FROM ((((SELECT addr.addr_id, addr.addr_active, addr.addr_line1, addr.addr_line2, addr.addr_line3, addr.addr_city, addr.addr_state, addr.addr_postalcode, addr.addr_country, addr.addr_notes, addr.addr_number, COALESCE(crmacct.crmacct_id, (-1)) AS crmacct_id, crmacct.crmacct_number, crmacct.crmacct_name FROM ((addr LEFT JOIN cntct ON ((cntct.cntct_addr_id = addr.addr_id))) LEFT JOIN crmacct ON ((crmacct.crmacct_id = cntct.cntct_crmacct_id))) EXCEPT SELECT addr.addr_id, addr.addr_active, addr.addr_line1, addr.addr_line2, addr.addr_line3, addr.addr_city, addr.addr_state, addr.addr_postalcode, addr.addr_country, addr.addr_notes, addr.addr_number, (-1), NULL::unknown, NULL::unknown FROM ((addr JOIN vendinfo ON ((vendinfo.vend_addr_id = addr.addr_id))) JOIN crmacct ON ((vendinfo.vend_id = crmacct.crmacct_vend_id)))) EXCEPT SELECT addr.addr_id, addr.addr_active, addr.addr_line1, addr.addr_line2, addr.addr_line3, addr.addr_city, addr.addr_state, addr.addr_postalcode, addr.addr_country, addr.addr_notes, addr.addr_number, (-1), NULL::unknown, NULL::unknown FROM ((addr JOIN vendaddrinfo ON ((vendaddrinfo.vendaddr_addr_id = addr.addr_id))) JOIN crmacct ON ((vendaddrinfo.vendaddr_vend_id = crmacct.crmacct_vend_id)))) EXCEPT SELECT addr.addr_id, addr.addr_active, addr.addr_line1, addr.addr_line2, addr.addr_line3, addr.addr_city, addr.addr_state, addr.addr_postalcode, addr.addr_country, addr.addr_notes, addr.addr_number, (-1), NULL::unknown, NULL::unknown FROM ((addr JOIN taxauth ON ((taxauth.taxauth_addr_id = addr.addr_id))) JOIN crmacct ON ((taxauth.taxauth_id = crmacct.crmacct_taxauth_id)))) EXCEPT SELECT addr.addr_id, addr.addr_active, addr.addr_line1, addr.addr_line2, addr.addr_line3, addr.addr_city, addr.addr_state, addr.addr_postalcode, addr.addr_country, addr.addr_notes, addr.addr_number, (-1), NULL::unknown, NULL::unknown FROM ((addr JOIN shiptoinfo ON ((shiptoinfo.shipto_addr_id = addr.addr_id))) JOIN crmacct ON ((shiptoinfo.shipto_cust_id = crmacct.crmacct_cust_id)))) base UNION SELECT addr.addr_id, addr.addr_active, addr.addr_line1, addr.addr_line2, addr.addr_line3, addr.addr_city, addr.addr_state, addr.addr_postalcode, addr.addr_country, addr.addr_notes, addr.addr_number, crmacct.crmacct_id, crmacct.crmacct_number, crmacct.crmacct_name FROM ((addr JOIN vendinfo ON ((vendinfo.vend_addr_id = addr.addr_id))) JOIN crmacct ON ((vendinfo.vend_id = crmacct.crmacct_vend_id)))) UNION SELECT addr.addr_id, addr.addr_active, addr.addr_line1, addr.addr_line2, addr.addr_line3, addr.addr_city, addr.addr_state, addr.addr_postalcode, addr.addr_country, addr.addr_notes, addr.addr_number, crmacct.crmacct_id, crmacct.crmacct_number, crmacct.crmacct_name FROM ((addr JOIN vendaddrinfo ON ((vendaddrinfo.vendaddr_addr_id = addr.addr_id))) JOIN crmacct ON ((vendaddrinfo.vendaddr_vend_id = crmacct.crmacct_vend_id)))) UNION SELECT addr.addr_id, addr.addr_active, addr.addr_line1, addr.addr_line2, addr.addr_line3, addr.addr_city, addr.addr_state, addr.addr_postalcode, addr.addr_country, addr.addr_notes, addr.addr_number, crmacct.crmacct_id, crmacct.crmacct_number, crmacct.crmacct_name FROM ((addr JOIN taxauth ON ((taxauth.taxauth_addr_id = addr.addr_id))) JOIN crmacct ON ((taxauth.taxauth_id = crmacct.crmacct_taxauth_id)))) UNION SELECT addr.addr_id, addr.addr_active, addr.addr_line1, addr.addr_line2, addr.addr_line3, addr.addr_city, addr.addr_state, addr.addr_postalcode, addr.addr_country, addr.addr_notes, addr.addr_number, crmacct.crmacct_id, crmacct.crmacct_number, crmacct.crmacct_name FROM ((addr JOIN shiptoinfo ON ((shiptoinfo.shipto_addr_id = addr.addr_id))) JOIN crmacct ON ((shiptoinfo.shipto_cust_id = crmacct.crmacct_cust_id)))) addresses ORDER BY addresses.addr_country, addresses.addr_state, addresses.addr_postalcode, addresses.addr_line1, addresses.addr_line2, addresses.addr_line3; ALTER TABLE public.address OWNER TO admin; -- -- Name: alarm; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE alarm ( alarm_id integer NOT NULL, alarm_number text NOT NULL, alarm_event boolean DEFAULT false NOT NULL, alarm_email boolean DEFAULT false NOT NULL, alarm_sysmsg boolean DEFAULT false NOT NULL, alarm_trigger timestamp with time zone, alarm_time timestamp with time zone, alarm_time_offset integer, alarm_time_qualifier text, alarm_creator text, alarm_event_recipient text, alarm_email_recipient text, alarm_sysmsg_recipient text, alarm_source text, alarm_source_id integer ); ALTER TABLE public.alarm OWNER TO admin; -- -- Name: TABLE alarm; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE alarm IS 'This table is the open alarms.'; -- -- Name: alarm_alarm_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE alarm_alarm_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.alarm_alarm_id_seq OWNER TO admin; -- -- Name: alarm_alarm_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE alarm_alarm_id_seq OWNED BY alarm.alarm_id; -- -- Name: alarm_alarm_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('alarm_alarm_id_seq', 1, false); -- -- Name: apaccnt; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE apaccnt ( apaccnt_id integer NOT NULL, apaccnt_vendtype_id integer, apaccnt_vendtype text, apaccnt_ap_accnt_id integer NOT NULL, apaccnt_prepaid_accnt_id integer, apaccnt_discount_accnt_id integer ); ALTER TABLE public.apaccnt OWNER TO admin; -- -- Name: TABLE apaccnt; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE apaccnt IS 'Accounts Payable (A/P) Account assignment information'; -- -- Name: apaccnt_apaccnt_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE apaccnt_apaccnt_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.apaccnt_apaccnt_id_seq OWNER TO admin; -- -- Name: apaccnt_apaccnt_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE apaccnt_apaccnt_id_seq OWNED BY apaccnt.apaccnt_id; -- -- Name: apaccnt_apaccnt_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('apaccnt_apaccnt_id_seq', 20, true); -- -- Name: apapply; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE apapply ( apapply_id integer NOT NULL, apapply_vend_id integer, apapply_postdate date, apapply_username text, apapply_source_apopen_id integer, apapply_source_doctype text, apapply_source_docnumber text, apapply_target_apopen_id integer, apapply_target_doctype text, apapply_target_docnumber text, apapply_journalnumber integer, apapply_amount numeric(20,2), apapply_curr_id integer DEFAULT basecurrid(), apapply_target_paid numeric(20,2), apapply_checkhead_id integer ); ALTER TABLE public.apapply OWNER TO admin; -- -- Name: TABLE apapply; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE apapply IS 'Applications (e.g., Payments, A/P Credit Memos) made to Accounts Payable (A/P) Documents'; -- -- Name: COLUMN apapply.apapply_source_apopen_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN apapply.apapply_source_apopen_id IS 'If apapply_source_doctype is "C" (credit memo) then apapply_source_apopen_id acts as a foreign key to the apopen table. If the source doctype is "K" (check) then the apapply_source_apopen_id acts as a foreign key to the checkhead table. If the apapply_source_apopen_id is -1 then the internal id of the source document is not known (always the case for checks posted before release 3.2.0BETA).'; -- -- Name: apapply_apapply_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE apapply_apapply_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.apapply_apapply_id_seq OWNER TO admin; -- -- Name: apapply_apapply_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE apapply_apapply_id_seq OWNED BY apapply.apapply_id; -- -- Name: apapply_apapply_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('apapply_apapply_id_seq', 1, false); -- -- Name: checkhead; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE checkhead ( checkhead_id integer NOT NULL, checkhead_recip_id integer NOT NULL, checkhead_recip_type text NOT NULL, checkhead_bankaccnt_id integer NOT NULL, checkhead_printed boolean DEFAULT false NOT NULL, checkhead_checkdate date NOT NULL, checkhead_number integer NOT NULL, checkhead_amount numeric(20,2) NOT NULL, checkhead_void boolean DEFAULT false NOT NULL, checkhead_replaced boolean DEFAULT false NOT NULL, checkhead_posted boolean DEFAULT false NOT NULL, checkhead_rec boolean DEFAULT false NOT NULL, checkhead_misc boolean DEFAULT false NOT NULL, checkhead_expcat_id integer, checkhead_for text NOT NULL, checkhead_notes text NOT NULL, checkhead_journalnumber integer, checkhead_curr_id integer DEFAULT basecurrid() NOT NULL, checkhead_deleted boolean DEFAULT false NOT NULL, checkhead_ach_batch text, checkhead_curr_rate numeric NOT NULL, CONSTRAINT checkhead_checkhead_amount_check CHECK ((checkhead_amount > (0)::numeric)), CONSTRAINT checkhead_checkhead_recip_type_check CHECK ((((checkhead_recip_type = 'C'::text) OR (checkhead_recip_type = 'V'::text)) OR (checkhead_recip_type = 'T'::text))) ); ALTER TABLE public.checkhead OWNER TO admin; -- -- Name: TABLE checkhead; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE checkhead IS 'Accounts Payable Check Information'; -- -- Name: apchk; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW apchk AS SELECT checkhead.checkhead_id AS apchk_id, checkhead.checkhead_recip_id AS apchk_vend_id, checkhead.checkhead_bankaccnt_id AS apchk_bankaccnt_id, checkhead.checkhead_printed AS apchk_printed, checkhead.checkhead_checkdate AS apchk_checkdate, checkhead.checkhead_number AS apchk_number, checkhead.checkhead_amount AS apchk_amount, checkhead.checkhead_void AS apchk_void, checkhead.checkhead_replaced AS apchk_replaced, checkhead.checkhead_posted AS apchk_posted, checkhead.checkhead_rec AS apchk_rec, checkhead.checkhead_misc AS apchk_misc, checkhead.checkhead_expcat_id AS apchk_expcat_id, checkhead.checkhead_for AS apchk_for, checkhead.checkhead_notes AS apchk_notes, checkhead.checkhead_journalnumber AS apchk_journalnumber, checkhead.checkhead_curr_id AS apchk_curr_id, checkhead.checkhead_deleted AS apchk_deleted FROM checkhead WHERE (checkhead.checkhead_recip_type = 'V'::text); ALTER TABLE public.apchk OWNER TO admin; -- -- Name: checkitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE checkitem ( checkitem_id integer NOT NULL, checkitem_checkhead_id integer NOT NULL, checkitem_amount numeric(20,2) DEFAULT 0.0 NOT NULL, checkitem_discount numeric(20,2) DEFAULT 0.0 NOT NULL, checkitem_ponumber text, checkitem_vouchernumber text, checkitem_invcnumber text, checkitem_apopen_id integer, checkitem_aropen_id integer, checkitem_docdate date, checkitem_curr_id integer DEFAULT basecurrid() NOT NULL, checkitem_cmnumber text, checkitem_ranumber text, checkitem_curr_rate numeric, CONSTRAINT checkitem_check CHECK ((NOT ((checkitem_apopen_id IS NOT NULL) AND (checkitem_aropen_id IS NOT NULL)))) ); ALTER TABLE public.checkitem OWNER TO admin; -- -- Name: TABLE checkitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE checkitem IS 'Accounts Payable Check Line Item Information'; -- -- Name: apchkitem; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW apchkitem AS SELECT checkitem.checkitem_id AS apchkitem_id, checkitem.checkitem_checkhead_id AS apchkitem_apchk_id, checkitem.checkitem_vouchernumber AS apchkitem_vouchernumber, checkitem.checkitem_ponumber AS apchkitem_ponumber, checkitem.checkitem_amount AS apchkitem_amount, checkitem.checkitem_invcnumber AS apchkitem_invcnumber, checkitem.checkitem_apopen_id AS apchkitem_apopen_id, checkitem.checkitem_docdate AS apchkitem_docdate, checkitem.checkitem_curr_id AS apchkitem_curr_id, checkitem.checkitem_discount AS apchkitem_discount FROM checkhead, checkitem WHERE ((checkitem.checkitem_checkhead_id = checkhead.checkhead_id) AND (checkhead.checkhead_recip_type = 'V'::text)); ALTER TABLE public.apchkitem OWNER TO admin; -- -- Name: apcreditapply; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE apcreditapply ( apcreditapply_id integer NOT NULL, apcreditapply_source_apopen_id integer, apcreditapply_target_apopen_id integer, apcreditapply_amount numeric(20,2), apcreditapply_curr_id integer DEFAULT basecurrid() ); ALTER TABLE public.apcreditapply OWNER TO admin; -- -- Name: TABLE apcreditapply; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE apcreditapply IS 'Temporary table for storing details of Accounts Payable (A/P) Credit Memo applications before those applications are posted'; -- -- Name: apcreditapply_apcreditapply_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE apcreditapply_apcreditapply_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.apcreditapply_apcreditapply_id_seq OWNER TO admin; -- -- Name: apcreditapply_apcreditapply_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE apcreditapply_apcreditapply_id_seq OWNED BY apcreditapply.apcreditapply_id; -- -- Name: apcreditapply_apcreditapply_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('apcreditapply_apcreditapply_id_seq', 1, false); -- -- Name: apmemo; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW apmemo AS SELECT apopen.apopen_id, apopen.apopen_docnumber FROM apopen WHERE (apopen.apopen_doctype = ANY (ARRAY['D'::bpchar, 'C'::bpchar])); ALTER TABLE public.apmemo OWNER TO admin; -- -- Name: apopen_apopen_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE apopen_apopen_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.apopen_apopen_id_seq OWNER TO admin; -- -- Name: apopen_apopen_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('apopen_apopen_id_seq', 70, true); -- -- Name: apopentax; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE apopentax ( ) INHERITS (taxhist); ALTER TABLE public.apopentax OWNER TO admin; -- -- Name: apselect; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE apselect ( apselect_id integer NOT NULL, apselect_apopen_id integer NOT NULL, apselect_amount numeric(20,2) NOT NULL, apselect_bankaccnt_id integer, apselect_curr_id integer DEFAULT basecurrid(), apselect_date date, apselect_discount numeric(20,2) DEFAULT 0.0 NOT NULL ); ALTER TABLE public.apselect OWNER TO admin; -- -- Name: TABLE apselect; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE apselect IS 'Temporary table for storing details of Accounts Payable (A/P) Payment selections'; -- -- Name: apselect_apselect_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE apselect_apselect_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.apselect_apselect_id_seq OWNER TO admin; -- -- Name: apselect_apselect_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE apselect_apselect_id_seq OWNED BY apselect.apselect_id; -- -- Name: apselect_apselect_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('apselect_apselect_id_seq', 501, true); -- -- Name: araccnt; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE araccnt ( araccnt_id integer DEFAULT nextval(('araccnt_araccnt_id_seq'::text)::regclass) NOT NULL, araccnt_custtype_id integer, araccnt_custtype text, araccnt_freight_accnt_id integer, araccnt_ar_accnt_id integer, araccnt_prepaid_accnt_id integer, araccnt_deferred_accnt_id integer, araccnt_discount_accnt_id integer ); ALTER TABLE public.araccnt OWNER TO admin; -- -- Name: TABLE araccnt; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE araccnt IS 'Accounts Receivable (A/R) Account assignment information'; -- -- Name: araccnt_araccnt_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE araccnt_araccnt_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.araccnt_araccnt_id_seq OWNER TO admin; -- -- Name: araccnt_araccnt_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('araccnt_araccnt_id_seq', 39, true); -- -- Name: arapply; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE arapply ( arapply_id integer NOT NULL, arapply_postdate date, arapply_cust_id integer, arapply_source_doctype text, arapply_source_docnumber text, arapply_target_doctype text, arapply_target_docnumber text, arapply_fundstype text, arapply_refnumber text, arapply_applied numeric(20,2), arapply_closed boolean, arapply_journalnumber text, arapply_source_aropen_id integer, arapply_target_aropen_id integer, arapply_username text, arapply_curr_id integer DEFAULT basecurrid(), arapply_distdate date NOT NULL, arapply_target_paid numeric(20,2), arapply_reftype text, arapply_ref_id integer ); ALTER TABLE public.arapply OWNER TO admin; -- -- Name: TABLE arapply; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE arapply IS 'Applications (e.g., Cash Receipts, A/R Credit Memos) made to Accounts Receivable (A/R) Documents'; -- -- Name: arapply_arapply_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE arapply_arapply_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.arapply_arapply_id_seq OWNER TO admin; -- -- Name: arapply_arapply_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE arapply_arapply_id_seq OWNED BY arapply.arapply_id; -- -- Name: arapply_arapply_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('arapply_arapply_id_seq', 1, false); -- -- Name: cashrcptitem_cashrcptitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cashrcptitem_cashrcptitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.cashrcptitem_cashrcptitem_id_seq OWNER TO admin; -- -- Name: cashrcptitem_cashrcptitem_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE cashrcptitem_cashrcptitem_id_seq OWNED BY cashrcptitem.cashrcptitem_id; -- -- Name: cashrcptitem_cashrcptitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cashrcptitem_cashrcptitem_id_seq', 170, true); -- -- Name: arcreditapply; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE arcreditapply ( arcreditapply_id integer DEFAULT nextval('cashrcptitem_cashrcptitem_id_seq'::regclass) NOT NULL, arcreditapply_source_aropen_id integer, arcreditapply_target_aropen_id integer, arcreditapply_amount numeric(20,2), arcreditapply_curr_id integer DEFAULT basecurrid(), arcreditapply_reftype text, arcreditapply_ref_id integer ); ALTER TABLE public.arcreditapply OWNER TO admin; -- -- Name: TABLE arcreditapply; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE arcreditapply IS 'Temporary table for storing details of Accounts Receivable (A/R) Credit Memo applications before those applications are posted'; -- -- Name: arcreditapply_arcreditapply_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE arcreditapply_arcreditapply_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.arcreditapply_arcreditapply_id_seq OWNER TO admin; -- -- Name: arcreditapply_arcreditapply_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE arcreditapply_arcreditapply_id_seq OWNED BY arcreditapply.arcreditapply_id; -- -- Name: arcreditapply_arcreditapply_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('arcreditapply_arcreditapply_id_seq', 1, false); -- -- Name: armemo; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW armemo AS SELECT aropen.aropen_id, aropen.aropen_docnumber FROM aropen WHERE (aropen.aropen_doctype = ANY (ARRAY['D'::bpchar, 'C'::bpchar, 'R'::bpchar])) UNION SELECT cmhead.cmhead_id AS aropen_id, cmhead.cmhead_number AS aropen_docnumber FROM cmhead; ALTER TABLE public.armemo OWNER TO admin; -- -- Name: aropen_aropen_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE aropen_aropen_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.aropen_aropen_id_seq OWNER TO admin; -- -- Name: aropen_aropen_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('aropen_aropen_id_seq', 292, true); -- -- Name: aropentax; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE aropentax ( ) INHERITS (taxhist); ALTER TABLE public.aropentax OWNER TO admin; -- -- Name: asohist; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE asohist ( asohist_id integer NOT NULL, asohist_cust_id integer, asohist_itemsite_id integer, asohist_shipdate date, asohist_invcdate date, asohist_duedate date, asohist_promisedate date, asohist_ordernumber text, asohist_invcnumber text, asohist_qtyshipped numeric(18,6), asohist_unitprice numeric(16,4), asohist_unitcost numeric(16,6), asohist_billtoname text, asohist_billtoaddress1 text, asohist_billtoaddress2 text, asohist_billtoaddress3 text, asohist_billtocity text, asohist_billtostate text, asohist_billtozip text, asohist_shiptoname text, asohist_shiptoaddress1 text, asohist_shiptoaddress2 text, asohist_shiptoaddress3 text, asohist_shiptocity text, asohist_shiptostate text, asohist_shiptozip text, asohist_shipto_id integer, asohist_shipvia text, asohist_salesrep_id integer, asohist_misc_type character(1), asohist_misc_descrip text, asohist_misc_id integer, asohist_commission numeric(16,4), asohist_commissionpaid boolean, asohist_doctype text, asohist_orderdate date, asohist_imported boolean, asohist_ponumber text, asohist_curr_id integer DEFAULT basecurrid(), asohist_taxtype_id integer, asohist_taxzone_id integer ); ALTER TABLE public.asohist OWNER TO admin; -- -- Name: TABLE asohist; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE asohist IS 'Archived Sales history'; -- -- Name: asohist_asohist_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE asohist_asohist_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.asohist_asohist_id_seq OWNER TO admin; -- -- Name: asohist_asohist_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE asohist_asohist_id_seq OWNED BY asohist.asohist_id; -- -- Name: asohist_asohist_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('asohist_asohist_id_seq', 1, false); -- -- Name: asohisttax; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE asohisttax ( ) INHERITS (taxhist); ALTER TABLE public.asohisttax OWNER TO admin; -- -- Name: atlasmap; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE atlasmap ( atlasmap_id integer NOT NULL, atlasmap_name text NOT NULL, atlasmap_filter text NOT NULL, atlasmap_filtertype text NOT NULL, atlasmap_atlas text NOT NULL, atlasmap_map text NOT NULL, atlasmap_headerline boolean DEFAULT false NOT NULL, CONSTRAINT atlasmap_atlasmap_name_check CHECK ((atlasmap_name <> ''::text)) ); ALTER TABLE public.atlasmap OWNER TO admin; -- -- Name: TABLE atlasmap; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE atlasmap IS 'Describes heuristics for finding a CSVImp atlas for a given CSV file. When looking for a CSV Atlas to use when importing a CSV file, the first atlasmap record found that matches the CSV file is used to select the Atlas file and Map in that Atlas to import the CSV file.'; -- -- Name: COLUMN atlasmap.atlasmap_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN atlasmap.atlasmap_id IS 'The internal id of this CSVImp atlas mapping.'; -- -- Name: COLUMN atlasmap.atlasmap_name; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN atlasmap.atlasmap_name IS 'The human-readable name of this atlas mapping.'; -- -- Name: COLUMN atlasmap.atlasmap_filter; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN atlasmap.atlasmap_filter IS 'A regular expression that should match the CSV file. Which part of the file that matches is determined by the filter type.'; -- -- Name: COLUMN atlasmap.atlasmap_filtertype; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN atlasmap.atlasmap_filtertype IS 'A description of what aspect of the CSV file the filter should be compared with. Handled values are: ''filename'' - the filter is matched against the name of the file; and ''firstline'' - the filter is matched against the first line of the file contents.'; -- -- Name: COLUMN atlasmap.atlasmap_atlas; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN atlasmap.atlasmap_atlas IS 'The name of the CSVImp Atlas file. This should be a simple pathname, not an absolute or relative name if possible. The full path will be determined by concatenating the operating-system-specific CSV Atlas default directory with the value here unless this is an absolute pathname.'; -- -- Name: COLUMN atlasmap.atlasmap_map; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN atlasmap.atlasmap_map IS 'The name of the Map inside the Atlas to use if the filter and filter type match the CVS file.'; -- -- Name: COLUMN atlasmap.atlasmap_headerline; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN atlasmap.atlasmap_headerline IS 'An indicator of whether the first line of the CSV file should be treated as a header line or as data.'; -- -- Name: atlasmap_atlasmap_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE atlasmap_atlasmap_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.atlasmap_atlasmap_id_seq OWNER TO admin; -- -- Name: atlasmap_atlasmap_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE atlasmap_atlasmap_id_seq OWNED BY atlasmap.atlasmap_id; -- -- Name: atlasmap_atlasmap_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('atlasmap_atlasmap_id_seq', 1, false); -- -- Name: backup_usr; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE backup_usr ( usr_id integer, usr_username text, usr_propername text, usr_passwd text, usr_locale_id integer, usr_initials text, usr_agent boolean, usr_active boolean, usr_email text, usr_dept_id integer, usr_shift_id integer, usr_window text ); ALTER TABLE public.backup_usr OWNER TO admin; -- -- Name: bankaccnt_bankaccnt_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE bankaccnt_bankaccnt_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.bankaccnt_bankaccnt_id_seq OWNER TO admin; -- -- Name: bankaccnt_bankaccnt_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE bankaccnt_bankaccnt_id_seq OWNED BY bankaccnt.bankaccnt_id; -- -- Name: bankaccnt_bankaccnt_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('bankaccnt_bankaccnt_id_seq', 13, true); -- -- Name: bankadj; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE bankadj ( bankadj_id integer NOT NULL, bankadj_bankaccnt_id integer NOT NULL, bankadj_bankadjtype_id integer NOT NULL, bankadj_created timestamp without time zone DEFAULT now() NOT NULL, bankadj_username text DEFAULT geteffectivextuser() NOT NULL, bankadj_date date NOT NULL, bankadj_docnumber text, bankadj_amount numeric(10,2) NOT NULL, bankadj_notes text, bankadj_sequence integer, bankadj_posted boolean DEFAULT false NOT NULL, bankadj_curr_id integer DEFAULT basecurrid(), bankadj_curr_rate numeric ); ALTER TABLE public.bankadj OWNER TO admin; -- -- Name: TABLE bankadj; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE bankadj IS 'Bank Adjustments information'; -- -- Name: bankadj_bankadj_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE bankadj_bankadj_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.bankadj_bankadj_id_seq OWNER TO admin; -- -- Name: bankadj_bankadj_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE bankadj_bankadj_id_seq OWNED BY bankadj.bankadj_id; -- -- Name: bankadj_bankadj_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('bankadj_bankadj_id_seq', 1, false); -- -- Name: bankadjtype; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE bankadjtype ( bankadjtype_id integer NOT NULL, bankadjtype_name text NOT NULL, bankadjtype_descrip text, bankadjtype_accnt_id integer NOT NULL, bankadjtype_iscredit boolean DEFAULT false NOT NULL, CONSTRAINT bankadjtype_bankadjtype_name_check CHECK ((bankadjtype_name <> ''::text)) ); ALTER TABLE public.bankadjtype OWNER TO admin; -- -- Name: TABLE bankadjtype; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE bankadjtype IS 'Bank Adjustment Types information'; -- -- Name: bankadjtype_bankadjtype_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE bankadjtype_bankadjtype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.bankadjtype_bankadjtype_id_seq OWNER TO admin; -- -- Name: bankadjtype_bankadjtype_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE bankadjtype_bankadjtype_id_seq OWNED BY bankadjtype.bankadjtype_id; -- -- Name: bankadjtype_bankadjtype_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('bankadjtype_bankadjtype_id_seq', 1, false); -- -- Name: bankrec; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE bankrec ( bankrec_id integer NOT NULL, bankrec_created timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, bankrec_username text DEFAULT geteffectivextuser() NOT NULL, bankrec_bankaccnt_id integer, bankrec_opendate date, bankrec_enddate date, bankrec_openbal numeric(20,2), bankrec_endbal numeric(20,2), bankrec_posted boolean DEFAULT false, bankrec_postdate timestamp without time zone ); ALTER TABLE public.bankrec OWNER TO admin; -- -- Name: TABLE bankrec; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE bankrec IS 'Bank Reconciliation posting history'; -- -- Name: bankrec_bankrec_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE bankrec_bankrec_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.bankrec_bankrec_id_seq OWNER TO admin; -- -- Name: bankrec_bankrec_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE bankrec_bankrec_id_seq OWNED BY bankrec.bankrec_id; -- -- Name: bankrec_bankrec_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('bankrec_bankrec_id_seq', 1, false); -- -- Name: bankrecitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE bankrecitem ( bankrecitem_id integer NOT NULL, bankrecitem_bankrec_id integer NOT NULL, bankrecitem_source text NOT NULL, bankrecitem_source_id integer NOT NULL, bankrecitem_cleared boolean DEFAULT false, bankrecitem_curr_rate numeric, bankrecitem_amount numeric ); ALTER TABLE public.bankrecitem OWNER TO admin; -- -- Name: TABLE bankrecitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE bankrecitem IS 'Posted Bank Reconciliation Line Item information'; -- -- Name: bankrecitem_bankrecitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE bankrecitem_bankrecitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.bankrecitem_bankrecitem_id_seq OWNER TO admin; -- -- Name: bankrecitem_bankrecitem_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE bankrecitem_bankrecitem_id_seq OWNED BY bankrecitem.bankrecitem_id; -- -- Name: bankrecitem_bankrecitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('bankrecitem_bankrecitem_id_seq', 1, false); -- -- Name: bomhead_bomhead_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE bomhead_bomhead_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.bomhead_bomhead_id_seq OWNER TO admin; -- -- Name: bomhead_bomhead_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('bomhead_bomhead_id_seq', 54, true); -- -- Name: bomitem_bomitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE bomitem_bomitem_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.bomitem_bomitem_id_seq OWNER TO admin; -- -- Name: bomitem_bomitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('bomitem_bomitem_id_seq', 167, true); -- -- Name: bomitemcost; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE bomitemcost ( bomitemcost_id integer NOT NULL, bomitemcost_bomitem_id integer NOT NULL, bomitemcost_costelem_id integer NOT NULL, bomitemcost_lowlevel boolean DEFAULT false NOT NULL, bomitemcost_stdcost numeric(16,6) DEFAULT 0 NOT NULL, bomitemcost_posted date, bomitemcost_actcost numeric(16,6) DEFAULT 0 NOT NULL, bomitemcost_updated date, bomitemcost_curr_id integer DEFAULT basecurrid() NOT NULL ); ALTER TABLE public.bomitemcost OWNER TO admin; -- -- Name: TABLE bomitemcost; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE bomitemcost IS 'Bomitem Cost information'; -- -- Name: bomitemcost_bomitemcost_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE bomitemcost_bomitemcost_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.bomitemcost_bomitemcost_id_seq OWNER TO admin; -- -- Name: bomitemcost_bomitemcost_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE bomitemcost_bomitemcost_id_seq OWNED BY bomitemcost.bomitemcost_id; -- -- Name: bomitemcost_bomitemcost_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('bomitemcost_bomitemcost_id_seq', 1, false); -- -- Name: bomitemsub_bomitemsub_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE bomitemsub_bomitemsub_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.bomitemsub_bomitemsub_id_seq OWNER TO admin; -- -- Name: bomitemsub_bomitemsub_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE bomitemsub_bomitemsub_id_seq OWNED BY bomitemsub.bomitemsub_id; -- -- Name: bomitemsub_bomitemsub_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('bomitemsub_bomitemsub_id_seq', 1, false); -- -- Name: bomwork; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE bomwork ( bomwork_id integer NOT NULL, bomwork_set_id integer, bomwork_seqnumber integer, bomwork_item_id integer, bomwork_item_type character(1), bomwork_qtyper numeric(20,8), bomwork_scrap numeric(20,10), bomwork_status character(1), bomwork_level integer, bomwork_parent_id integer, bomwork_effective date, bomwork_expires date, bomwork_stdunitcost numeric(16,6), bomwork_actunitcost numeric(16,6), bomwork_parent_seqnumber integer, bomwork_createwo boolean, bomwork_issuemethod character(1), bomwork_char_id integer, bomwork_value text, bomwork_notes text, bomwork_ref text, bomwork_bomitem_id integer, bomwork_ecn text, bomwork_qtyfxd numeric(20,8) DEFAULT 0 NOT NULL, bomwork_qtyreq numeric(20,8) DEFAULT 0 NOT NULL ); ALTER TABLE public.bomwork OWNER TO admin; -- -- Name: TABLE bomwork; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE bomwork IS 'Temporary table for storing information requested by Bill of Materials (BOM) displays and reports'; -- -- Name: COLUMN bomwork.bomwork_qtyfxd; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN bomwork.bomwork_qtyfxd IS 'The fixed quantity required'; -- -- Name: COLUMN bomwork.bomwork_qtyreq; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN bomwork.bomwork_qtyreq IS 'The total quantity required'; -- -- Name: bomwork_bomwork_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE bomwork_bomwork_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.bomwork_bomwork_id_seq OWNER TO admin; -- -- Name: bomwork_bomwork_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE bomwork_bomwork_id_seq OWNED BY bomwork.bomwork_id; -- -- Name: bomwork_bomwork_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('bomwork_bomwork_id_seq', 1, false); -- -- Name: budget; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW budget AS SELECT budgitem.budgitem_id AS budget_id, budgitem.budgitem_period_id AS budget_period_id, budgitem.budgitem_accnt_id AS budget_accnt_id, budgitem.budgitem_amount AS budget_amount FROM budgitem; ALTER TABLE public.budget OWNER TO admin; -- -- Name: budghead_budghead_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE budghead_budghead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.budghead_budghead_id_seq OWNER TO admin; -- -- Name: budghead_budghead_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE budghead_budghead_id_seq OWNED BY budghead.budghead_id; -- -- Name: budghead_budghead_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('budghead_budghead_id_seq', 2, true); -- -- Name: budgitem_budgitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE budgitem_budgitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.budgitem_budgitem_id_seq OWNER TO admin; -- -- Name: budgitem_budgitem_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE budgitem_budgitem_id_seq OWNED BY budgitem.budgitem_id; -- -- Name: budgitem_budgitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('budgitem_budgitem_id_seq', 1, true); -- -- Name: calhead; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE calhead ( calhead_id integer DEFAULT nextval(('"calhead_calhead_id_seq"'::text)::regclass) NOT NULL, calhead_type character(1), calhead_name text NOT NULL, calhead_descrip text, calhead_origin character(1), CONSTRAINT calhead_calhead_name_check CHECK ((calhead_name <> ''::text)) ); ALTER TABLE public.calhead OWNER TO admin; -- -- Name: TABLE calhead; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE calhead IS 'Calendar header information'; -- -- Name: calhead_calhead_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE calhead_calhead_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.calhead_calhead_id_seq OWNER TO admin; -- -- Name: calhead_calhead_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('calhead_calhead_id_seq', 48, true); -- -- Name: carrier_carrier_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE carrier_carrier_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.carrier_carrier_id_seq OWNER TO admin; -- -- Name: carrier_carrier_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('carrier_carrier_id_seq', 15, true); -- -- Name: cashrcpt_cashrcpt_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cashrcpt_cashrcpt_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.cashrcpt_cashrcpt_id_seq OWNER TO admin; -- -- Name: cashrcpt_cashrcpt_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE cashrcpt_cashrcpt_id_seq OWNED BY cashrcpt.cashrcpt_id; -- -- Name: cashrcpt_cashrcpt_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cashrcpt_cashrcpt_id_seq', 112, true); -- -- Name: cashrcptmisc_cashrcptmisc_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cashrcptmisc_cashrcptmisc_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.cashrcptmisc_cashrcptmisc_id_seq OWNER TO admin; -- -- Name: cashrcptmisc_cashrcptmisc_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE cashrcptmisc_cashrcptmisc_id_seq OWNED BY cashrcptmisc.cashrcptmisc_id; -- -- Name: cashrcptmisc_cashrcptmisc_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cashrcptmisc_cashrcptmisc_id_seq', 26, true); -- -- Name: ccard_ccard_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE ccard_ccard_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.ccard_ccard_id_seq OWNER TO admin; -- -- Name: ccard_ccard_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE ccard_ccard_id_seq OWNED BY ccard.ccard_id; -- -- Name: ccard_ccard_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('ccard_ccard_id_seq', 1, false); -- -- Name: ccardaud; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE ccardaud ( ccardaud_id integer NOT NULL, ccardaud_ccard_id integer, ccardaud_ccard_seq_old integer, ccardaud_ccard_seq_new integer, ccardaud_ccard_cust_id_old integer, ccardaud_ccard_cust_id_new integer, ccardaud_ccard_active_old boolean, ccardaud_ccard_active_new boolean, ccardaud_ccard_name_old bytea, ccardaud_ccard_name_new bytea, ccardaud_ccard_address1_old bytea, ccardaud_ccard_address1_new bytea, ccardaud_ccard_address2_old bytea, ccardaud_ccard_address2_new bytea, ccardaud_ccard_city_old bytea, ccardaud_ccard_city_new bytea, ccardaud_ccard_state_old bytea, ccardaud_ccard_state_new bytea, ccardaud_ccard_zip_old bytea, ccardaud_ccard_zip_new bytea, ccardaud_ccard_country_old bytea, ccardaud_ccard_country_new bytea, ccardaud_ccard_number_old bytea, ccardaud_ccard_number_new bytea, ccardaud_ccard_debit_old boolean, ccardaud_ccard_debit_new boolean, ccardaud_ccard_month_expired_old bytea, ccardaud_ccard_month_expired_new bytea, ccardaud_ccard_year_expired_old bytea, ccardaud_ccard_year_expired_new bytea, ccardaud_ccard_type_old character(1), ccardaud_ccard_type_new character(1), ccardaud_ccard_last_updated timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, ccardaud_ccard_last_updated_by_username text DEFAULT geteffectivextuser() NOT NULL ); ALTER TABLE public.ccardaud OWNER TO admin; -- -- Name: TABLE ccardaud; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE ccardaud IS 'Credit Card Information tracking data'; -- -- Name: ccardaud_ccardaud_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE ccardaud_ccardaud_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.ccardaud_ccardaud_id_seq OWNER TO admin; -- -- Name: ccardaud_ccardaud_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE ccardaud_ccardaud_id_seq OWNED BY ccardaud.ccardaud_id; -- -- Name: ccardaud_ccardaud_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('ccardaud_ccardaud_id_seq', 1, false); -- -- Name: ccbank; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE ccbank ( ccbank_id integer NOT NULL, ccbank_ccard_type text NOT NULL, ccbank_bankaccnt_id integer, CONSTRAINT ccbank_ccbank_ccard_type_check CHECK ((ccbank_ccard_type = ANY (ARRAY['A'::text, 'D'::text, 'M'::text, 'P'::text, 'V'::text]))) ); ALTER TABLE public.ccbank OWNER TO admin; -- -- Name: ccbank_ccbank_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE ccbank_ccbank_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.ccbank_ccbank_id_seq OWNER TO admin; -- -- Name: ccbank_ccbank_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE ccbank_ccbank_id_seq OWNED BY ccbank.ccbank_id; -- -- Name: ccbank_ccbank_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('ccbank_ccbank_id_seq', 5, true); -- -- Name: ccpay; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE ccpay ( ccpay_id integer NOT NULL, ccpay_ccard_id integer, ccpay_cust_id integer, ccpay_amount numeric(20,2) DEFAULT 0.00 NOT NULL, ccpay_auth boolean DEFAULT true NOT NULL, ccpay_status character(1) NOT NULL, ccpay_type character(1) NOT NULL, ccpay_auth_charge character(1) NOT NULL, ccpay_order_number text, ccpay_order_number_seq integer, ccpay_r_avs text, ccpay_r_ordernum text, ccpay_r_error text, ccpay_r_approved text, ccpay_r_code text, ccpay_r_message text, ccpay_yp_r_time timestamp without time zone, ccpay_r_ref text, ccpay_yp_r_tdate text, ccpay_r_tax text, ccpay_r_shipping text, ccpay_yp_r_score integer, ccpay_transaction_datetime timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, ccpay_by_username text DEFAULT geteffectivextuser() NOT NULL, ccpay_curr_id integer DEFAULT basecurrid(), ccpay_ccpay_id integer ); ALTER TABLE public.ccpay OWNER TO admin; -- -- Name: TABLE ccpay; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE ccpay IS 'Track Credit Card PAYments, although really this table tracs communications with Credit Card processing companies. Records in this table may progress from preauthorizations through captures to credits, or they may simply remain in their original state if there is no further processing.'; -- -- Name: COLUMN ccpay.ccpay_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_id IS 'Internal ID of this ccpay record.'; -- -- Name: COLUMN ccpay.ccpay_ccard_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_ccard_id IS 'Internal ID of the Credit Card used for this transaction.'; -- -- Name: COLUMN ccpay.ccpay_cust_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_cust_id IS 'Internal ID of the Customer owning the Credit Card'; -- -- Name: COLUMN ccpay.ccpay_amount; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_amount IS 'Actual amount of this transaction.'; -- -- Name: COLUMN ccpay.ccpay_auth; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_auth IS 'Boolean indicator of whether this transaction started out as a pre-authorization or not.'; -- -- Name: COLUMN ccpay.ccpay_status; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_status IS 'The status of the last attempted transaction for this record. Values include A = Authorized, C = Charged, D = Declined or otherwise rejected, V = Voided, X = Error.'; -- -- Name: COLUMN ccpay.ccpay_type; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_type IS 'The most recent type of transaction attempted with this record. Values include A = Authorize, C = Capture or Charge, R = cRedit, V = reVerse or Void.'; -- -- Name: COLUMN ccpay.ccpay_auth_charge; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_auth_charge IS 'The original type of transaction attempted with this record. Values are the same as for ccpay_type.'; -- -- Name: COLUMN ccpay.ccpay_order_number; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_order_number IS 'The original xTuple ERP order for which this credit card transaction applies. This will usually be either a Sales Order number or Credit Memo number.'; -- -- Name: COLUMN ccpay.ccpay_order_number_seq; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_order_number_seq IS 'A sequence number to differentiate between different transactions for the same ccpay_order_number. For example, if a Customer makes a down payment and a final payment for a single order, there will be two distinct ccpay records with the same ccpay_order_number but different ccpay_order_number_seq values (1 and 2, respectively).'; -- -- Name: COLUMN ccpay.ccpay_r_avs; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_r_avs IS 'The Address Verification System code returned by the credit card processing company.'; -- -- Name: COLUMN ccpay.ccpay_r_ordernum; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_r_ordernum IS 'A transaction ID returned by the credit card processing company to be used when referring to this transaction later. It may be used for voiding, crediting, or capturing previous transactions.'; -- -- Name: COLUMN ccpay.ccpay_r_error; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_r_error IS 'Error message, if any, describing why this record failed to be processed properly.'; -- -- Name: COLUMN ccpay.ccpay_r_approved; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_r_approved IS 'English text stating whether the transaction was approved, declined, hit an error, or was held for review. Specific values differ depending on the credit card processor.'; -- -- Name: COLUMN ccpay.ccpay_r_code; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_r_code IS 'The transaction Approval code returned by the credit card processor. Specific values differ depending on the credit card processor.'; -- -- Name: COLUMN ccpay.ccpay_r_message; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_r_message IS 'Additional text that describes the status of the transaction. This may be empty.'; -- -- Name: COLUMN ccpay.ccpay_yp_r_time; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_yp_r_time IS 'The time the transaction was posted according to the credit card processing company. May be blank.'; -- -- Name: COLUMN ccpay.ccpay_r_ref; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_r_ref IS 'An additional reference number assigned to this transaction by the credit card processing company.'; -- -- Name: COLUMN ccpay.ccpay_yp_r_tdate; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_yp_r_tdate IS 'The date the transaction was posted according to the credit card processing company. May be blank.'; -- -- Name: COLUMN ccpay.ccpay_r_tax; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_r_tax IS '[ deprecated ]'; -- -- Name: COLUMN ccpay.ccpay_r_shipping; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_r_shipping IS '[ deprecated ]'; -- -- Name: COLUMN ccpay.ccpay_yp_r_score; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_yp_r_score IS 'A potential fraud score returned by the credit card company. May be blank.'; -- -- Name: COLUMN ccpay.ccpay_transaction_datetime; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_transaction_datetime IS 'The date and time this record was created, unless explicitly set by the application.'; -- -- Name: COLUMN ccpay.ccpay_by_username; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_by_username IS 'The user who created this record, unless explicitly set by the application.'; -- -- Name: COLUMN ccpay.ccpay_curr_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_curr_id IS 'The internal ID of the currency of the ccpay_amount.'; -- -- Name: COLUMN ccpay.ccpay_ccpay_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN ccpay.ccpay_ccpay_id IS 'Foreign key to another ccpay record. This will have a value if a new ccpay record is created to record a Refund for part or all of another ccpay record.'; -- -- Name: ccpay_ccpay_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE ccpay_ccpay_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.ccpay_ccpay_id_seq OWNER TO admin; -- -- Name: ccpay_ccpay_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE ccpay_ccpay_id_seq OWNED BY ccpay.ccpay_id; -- -- Name: ccpay_ccpay_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('ccpay_ccpay_id_seq', 1, false); -- -- Name: char_char_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE char_char_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.char_char_id_seq OWNER TO admin; -- -- Name: char_char_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE char_char_id_seq OWNED BY "char".char_id; -- -- Name: char_char_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('char_char_id_seq', 15, true); -- -- Name: charass_charass_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE charass_charass_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.charass_charass_id_seq OWNER TO admin; -- -- Name: charass_charass_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE charass_charass_id_seq OWNED BY charass.charass_id; -- -- Name: charass_charass_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('charass_charass_id_seq', 1, false); -- -- Name: charopt; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE charopt ( charopt_id integer NOT NULL, charopt_char_id integer, charopt_value text NOT NULL, charopt_order integer DEFAULT 0 NOT NULL ); ALTER TABLE public.charopt OWNER TO admin; -- -- Name: TABLE charopt; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE charopt IS 'Stores list options for characteristics'; -- -- Name: COLUMN charopt.charopt_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN charopt.charopt_id IS 'Primary key'; -- -- Name: COLUMN charopt.charopt_char_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN charopt.charopt_char_id IS 'Reference to char table'; -- -- Name: COLUMN charopt.charopt_value; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN charopt.charopt_value IS 'Option value'; -- -- Name: COLUMN charopt.charopt_order; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN charopt.charopt_order IS 'Option sort order'; -- -- Name: charopt_charopt_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE charopt_charopt_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.charopt_charopt_id_seq OWNER TO admin; -- -- Name: charopt_charopt_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE charopt_charopt_id_seq OWNED BY charopt.charopt_id; -- -- Name: charopt_charopt_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('charopt_charopt_id_seq', 3, true); -- -- Name: checkhead_checkhead_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE checkhead_checkhead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.checkhead_checkhead_id_seq OWNER TO admin; -- -- Name: checkhead_checkhead_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE checkhead_checkhead_id_seq OWNED BY checkhead.checkhead_id; -- -- Name: checkhead_checkhead_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('checkhead_checkhead_id_seq', 1, false); -- -- Name: checkitem_checkitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE checkitem_checkitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.checkitem_checkitem_id_seq OWNER TO admin; -- -- Name: checkitem_checkitem_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE checkitem_checkitem_id_seq OWNED BY checkitem.checkitem_id; -- -- Name: checkitem_checkitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('checkitem_checkitem_id_seq', 1, false); -- -- Name: checkrecip; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW checkrecip AS (SELECT custinfo.cust_id AS checkrecip_id, 'C' AS checkrecip_type, custinfo.cust_number AS checkrecip_number, custinfo.cust_name AS checkrecip_name, 'A/R' AS checkrecip_gltrans_source, findaraccount(custinfo.cust_id) AS checkrecip_accnt_id, cntct.cntct_addr_id AS checkrecip_addr_id FROM (custinfo LEFT JOIN cntct ON ((custinfo.cust_cntct_id = cntct.cntct_id))) UNION ALL SELECT taxauth.taxauth_id AS checkrecip_id, 'T' AS checkrecip_type, taxauth.taxauth_code AS checkrecip_number, taxauth.taxauth_name AS checkrecip_name, 'G/L' AS checkrecip_gltrans_source, taxauth.taxauth_accnt_id AS checkrecip_accnt_id, taxauth.taxauth_addr_id AS checkrecip_addr_id FROM taxauth) UNION ALL SELECT vendinfo.vend_id AS checkrecip_id, 'V' AS checkrecip_type, vendinfo.vend_number AS checkrecip_number, vendinfo.vend_name AS checkrecip_name, 'A/P' AS checkrecip_gltrans_source, findapaccount(vendinfo.vend_id) AS checkrecip_accnt_id, vendaddrinfo.vendaddr_addr_id AS checkrecip_addr_id FROM (vendinfo LEFT JOIN vendaddrinfo ON (((vendinfo.vend_id = vendaddrinfo.vendaddr_vend_id) AND (upper(vendaddrinfo.vendaddr_code) = 'REMIT'::text)))); ALTER TABLE public.checkrecip OWNER TO admin; -- -- Name: classcode_classcode_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE classcode_classcode_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.classcode_classcode_id_seq OWNER TO admin; -- -- Name: classcode_classcode_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('classcode_classcode_id_seq', 36, true); -- -- Name: cmhead_cmhead_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cmhead_cmhead_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.cmhead_cmhead_id_seq OWNER TO admin; -- -- Name: cmhead_cmhead_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cmhead_cmhead_id_seq', 206, true); -- -- Name: cmheadtax; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cmheadtax ( ) INHERITS (taxhist); ALTER TABLE public.cmheadtax OWNER TO admin; -- -- Name: cmitem_cmitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cmitem_cmitem_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.cmitem_cmitem_id_seq OWNER TO admin; -- -- Name: cmitem_cmitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cmitem_cmitem_id_seq', 83, true); -- -- Name: cmitemtax; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cmitemtax ( ) INHERITS (taxhist); ALTER TABLE public.cmitemtax OWNER TO admin; -- -- Name: cmnttype_cmnttype_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cmnttype_cmnttype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.cmnttype_cmnttype_id_seq OWNER TO admin; -- -- Name: cmnttype_cmnttype_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE cmnttype_cmnttype_id_seq OWNED BY cmnttype.cmnttype_id; -- -- Name: cmnttype_cmnttype_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cmnttype_cmnttype_id_seq', 3, true); -- -- Name: cmnttypesource; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cmnttypesource ( cmnttypesource_id integer NOT NULL, cmnttypesource_cmnttype_id integer, cmnttypesource_source_id integer ); ALTER TABLE public.cmnttypesource OWNER TO admin; -- -- Name: TABLE cmnttypesource; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE cmnttypesource IS 'Comment Type/Source association'; -- -- Name: cmnttypesource_cmnttypesource_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cmnttypesource_cmnttypesource_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.cmnttypesource_cmnttypesource_id_seq OWNER TO admin; -- -- Name: cmnttypesource_cmnttypesource_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE cmnttypesource_cmnttypesource_id_seq OWNED BY cmnttypesource.cmnttypesource_id; -- -- Name: cmnttypesource_cmnttypesource_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cmnttypesource_cmnttypesource_id_seq', 76, true); -- -- Name: cntct_cntct_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cntct_cntct_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.cntct_cntct_id_seq OWNER TO admin; -- -- Name: cntct_cntct_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE cntct_cntct_id_seq OWNED BY cntct.cntct_id; -- -- Name: cntct_cntct_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cntct_cntct_id_seq', 2, true); -- -- Name: cntctaddr; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cntctaddr ( cntctaddr_id integer NOT NULL, cntctaddr_cntct_id integer, cntctaddr_primary boolean NOT NULL, cntctaddr_addr_id integer NOT NULL, cntctaddr_type character(2) NOT NULL ); ALTER TABLE public.cntctaddr OWNER TO admin; -- -- Name: cntctaddr_cntctaddr_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cntctaddr_cntctaddr_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.cntctaddr_cntctaddr_id_seq OWNER TO admin; -- -- Name: cntctaddr_cntctaddr_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE cntctaddr_cntctaddr_id_seq OWNED BY cntctaddr.cntctaddr_id; -- -- Name: cntctaddr_cntctaddr_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cntctaddr_cntctaddr_id_seq', 1, false); -- -- Name: cntctdata; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cntctdata ( cntctdata_id integer NOT NULL, cntctdata_cntct_id integer, cntctdata_primary boolean NOT NULL, cntctdata_text text NOT NULL, cntctdata_type character(2) NOT NULL ); ALTER TABLE public.cntctdata OWNER TO admin; -- -- Name: cntctdata_cntctdata_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cntctdata_cntctdata_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.cntctdata_cntctdata_id_seq OWNER TO admin; -- -- Name: cntctdata_cntctdata_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE cntctdata_cntctdata_id_seq OWNED BY cntctdata.cntctdata_id; -- -- Name: cntctdata_cntctdata_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cntctdata_cntctdata_id_seq', 1, false); -- -- Name: cntcteml; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cntcteml ( cntcteml_id integer NOT NULL, cntcteml_cntct_id integer, cntcteml_primary boolean DEFAULT false NOT NULL, cntcteml_email text NOT NULL ); ALTER TABLE public.cntcteml OWNER TO admin; -- -- Name: TABLE cntcteml; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE cntcteml IS 'Stores email addresses for contacts'; -- -- Name: COLUMN cntcteml.cntcteml_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN cntcteml.cntcteml_id IS 'Primary key'; -- -- Name: COLUMN cntcteml.cntcteml_cntct_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN cntcteml.cntcteml_cntct_id IS 'Reference to contact table'; -- -- Name: COLUMN cntcteml.cntcteml_primary; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN cntcteml.cntcteml_primary IS 'Flags whether this is the primary email address'; -- -- Name: COLUMN cntcteml.cntcteml_email; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN cntcteml.cntcteml_email IS 'Alternate information'; -- -- Name: cntcteml_cntcteml_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cntcteml_cntcteml_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.cntcteml_cntcteml_id_seq OWNER TO admin; -- -- Name: cntcteml_cntcteml_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE cntcteml_cntcteml_id_seq OWNED BY cntcteml.cntcteml_id; -- -- Name: cntcteml_cntcteml_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cntcteml_cntcteml_id_seq', 1, false); -- -- Name: cntctmrgd; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cntctmrgd ( cntctmrgd_cntct_id integer NOT NULL, cntctmrgd_error boolean DEFAULT false ); ALTER TABLE public.cntctmrgd OWNER TO admin; -- -- Name: cntctsel; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cntctsel ( cntctsel_cntct_id integer NOT NULL, cntctsel_target boolean, cntctsel_mrg_crmacct_id boolean DEFAULT false, cntctsel_mrg_addr_id boolean DEFAULT false, cntctsel_mrg_first_name boolean DEFAULT false, cntctsel_mrg_last_name boolean DEFAULT false, cntctsel_mrg_honorific boolean DEFAULT false, cntctsel_mrg_initials boolean DEFAULT false, cntctsel_mrg_phone boolean DEFAULT false, cntctsel_mrg_phone2 boolean DEFAULT false, cntctsel_mrg_fax boolean DEFAULT false, cntctsel_mrg_email boolean DEFAULT false, cntctsel_mrg_webaddr boolean DEFAULT false, cntctsel_mrg_notes boolean DEFAULT false, cntctsel_mrg_title boolean DEFAULT false, cntctsel_mrg_middle boolean DEFAULT false, cntctsel_mrg_suffix boolean DEFAULT false, cntctsel_mrg_owner_username boolean DEFAULT false ); ALTER TABLE public.cntctsel OWNER TO admin; -- -- Name: cntslip_cntslip_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cntslip_cntslip_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.cntslip_cntslip_id_seq OWNER TO admin; -- -- Name: cntslip_cntslip_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cntslip_cntslip_id_seq', 97, true); -- -- Name: cobill; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cobill ( cobill_id integer DEFAULT nextval(('cobill_cobill_id_seq'::text)::regclass) NOT NULL, cobill_coitem_id integer, cobill_selectdate timestamp with time zone, cobill_qty numeric(18,6), cobill_invcnum integer, cobill_toclose boolean, cobill_cobmisc_id integer, cobill_select_username text, cobill_invcitem_id integer, cobill_taxtype_id integer ); ALTER TABLE public.cobill OWNER TO admin; -- -- Name: TABLE cobill; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE cobill IS 'Billing Selection Line Item information'; -- -- Name: cobill_cobill_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cobill_cobill_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.cobill_cobill_id_seq OWNER TO admin; -- -- Name: cobill_cobill_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cobill_cobill_id_seq', 528, true); -- -- Name: cobilltax; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cobilltax ( ) INHERITS (taxhist); ALTER TABLE public.cobilltax OWNER TO admin; -- -- Name: cobmisc; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cobmisc ( cobmisc_id integer DEFAULT nextval(('cobmisc_cobmisc_id_seq'::text)::regclass) NOT NULL, cobmisc_cohead_id integer, cobmisc_shipvia text, cobmisc_freight numeric(16,4), cobmisc_misc numeric(16,4), cobmisc_payment numeric(16,4), cobmisc_paymentref text, cobmisc_notes text, cobmisc_shipdate date, cobmisc_invcnumber integer, cobmisc_invcdate date, cobmisc_posted boolean, cobmisc_misc_accnt_id integer, cobmisc_misc_descrip text, cobmisc_closeorder boolean, cobmisc_curr_id integer DEFAULT basecurrid(), cobmisc_invchead_id integer, cobmisc_taxzone_id integer, cobmisc_taxtype_id integer ); ALTER TABLE public.cobmisc OWNER TO admin; -- -- Name: TABLE cobmisc; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE cobmisc IS 'General information about Billing Selections'; -- -- Name: cobmisc_cobmisc_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cobmisc_cobmisc_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.cobmisc_cobmisc_id_seq OWNER TO admin; -- -- Name: cobmisc_cobmisc_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cobmisc_cobmisc_id_seq', 204, true); -- -- Name: cobmisctax; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE cobmisctax ( ) INHERITS (taxhist); ALTER TABLE public.cobmisctax OWNER TO admin; -- -- Name: cohead_cohead_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cohead_cohead_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.cohead_cohead_id_seq OWNER TO admin; -- -- Name: cohead_cohead_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cohead_cohead_id_seq', 2952, true); -- -- Name: cohist_cohist_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cohist_cohist_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.cohist_cohist_id_seq OWNER TO admin; -- -- Name: cohist_cohist_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cohist_cohist_id_seq', 493, true); -- -- Name: coitem_coitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE coitem_coitem_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.coitem_coitem_id_seq OWNER TO admin; -- -- Name: coitem_coitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('coitem_coitem_id_seq', 564, true); -- -- Name: comment_comment_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE comment_comment_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.comment_comment_id_seq OWNER TO admin; -- -- Name: comment_comment_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('comment_comment_id_seq', 63, true); -- -- Name: company; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE company ( company_id integer NOT NULL, company_number text NOT NULL, company_descrip text, company_external boolean DEFAULT false NOT NULL, company_server text, company_port integer, company_database text, company_curr_id integer, company_yearend_accnt_id integer, company_gainloss_accnt_id integer, company_dscrp_accnt_id integer, company_unrlzgainloss_accnt_id integer, CONSTRAINT company_company_number_check CHECK ((company_number <> ''::text)) ); ALTER TABLE public.company OWNER TO admin; -- -- Name: TABLE company; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE company IS 'Company information'; -- -- Name: company_company_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE company_company_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.company_company_id_seq OWNER TO admin; -- -- Name: company_company_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE company_company_id_seq OWNED BY company.company_id; -- -- Name: company_company_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('company_company_id_seq', 1, true); -- -- Name: contrct_contrct_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE contrct_contrct_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.contrct_contrct_id_seq OWNER TO admin; -- -- Name: contrct_contrct_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE contrct_contrct_id_seq OWNED BY contrct.contrct_id; -- -- Name: contrct_contrct_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('contrct_contrct_id_seq', 1, false); -- -- Name: shiphead; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE shiphead ( shiphead_id integer NOT NULL, shiphead_order_id integer NOT NULL, shiphead_order_type text NOT NULL, shiphead_number text NOT NULL, shiphead_shipvia text, shiphead_freight numeric(16,4) DEFAULT 0.0 NOT NULL, shiphead_freight_curr_id integer DEFAULT basecurrid() NOT NULL, shiphead_notes text, shiphead_shipped boolean DEFAULT false NOT NULL, shiphead_shipdate date, shiphead_shipchrg_id integer, shiphead_shipform_id integer, shiphead_sfstatus character(1) NOT NULL, shiphead_tracknum text, CONSTRAINT shiphead_shiphead_number_check CHECK ((shiphead_number <> ''::text)), CONSTRAINT shiphead_shiphead_order_type_check CHECK (((shiphead_order_type = 'SO'::text) OR (shiphead_order_type = 'TO'::text))), CONSTRAINT shiphead_shiphead_sfstatus_check CHECK ((((shiphead_sfstatus = 'D'::bpchar) OR (shiphead_sfstatus = 'N'::bpchar)) OR (shiphead_sfstatus = 'P'::bpchar))) ); ALTER TABLE public.shiphead OWNER TO admin; -- -- Name: TABLE shiphead; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE shiphead IS 'General information about Shipments'; -- -- Name: shipitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE shipitem ( shipitem_id integer NOT NULL, shipitem_orderitem_id integer NOT NULL, shipitem_shiphead_id integer NOT NULL, shipitem_qty numeric(18,6) NOT NULL, shipitem_shipped boolean DEFAULT false NOT NULL, shipitem_shipdate timestamp with time zone, shipitem_transdate timestamp with time zone, shipitem_trans_username text, shipitem_invoiced boolean DEFAULT false NOT NULL, shipitem_invcitem_id integer, shipitem_value numeric(18,6), shipitem_invhist_id integer ); ALTER TABLE public.shipitem OWNER TO admin; -- -- Name: TABLE shipitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE shipitem IS 'Information about Shipment Line Items'; -- -- Name: coship; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW coship AS SELECT shipitem.shipitem_id AS coship_id, shipitem.shipitem_orderitem_id AS coship_coitem_id, shipitem.shipitem_shipdate AS coship_shipdate, shipitem.shipitem_qty AS coship_qty, shipitem.shipitem_transdate AS coship_transdate, shipitem.shipitem_shipped AS coship_shipped, shipitem.shipitem_invoiced AS coship_invoiced, shipitem.shipitem_shiphead_id AS coship_cosmisc_id, shipitem.shipitem_trans_username AS coship_trans_username, shipitem.shipitem_invcitem_id AS coship_invcitem_id FROM shipitem, shiphead WHERE ((shipitem.shipitem_shiphead_id = shiphead.shiphead_id) AND (shiphead.shiphead_order_type = 'SO'::text)); ALTER TABLE public.coship OWNER TO admin; -- -- Name: coship_coship_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE coship_coship_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.coship_coship_id_seq OWNER TO admin; -- -- Name: coship_coship_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('coship_coship_id_seq', 441, true); -- -- Name: cosmisc; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW cosmisc AS SELECT shiphead.shiphead_id AS cosmisc_id, shiphead.shiphead_order_id AS cosmisc_cohead_id, shiphead.shiphead_shipvia AS cosmisc_shipvia, shiphead.shiphead_freight AS cosmisc_freight, shiphead.shiphead_notes AS cosmisc_notes, shiphead.shiphead_shipdate AS cosmisc_shipdate, shiphead.shiphead_shipchrg_id AS cosmisc_shipchrg_id, shiphead.shiphead_shipform_id AS cosmisc_shipform_id, shiphead.shiphead_shipped AS cosmisc_shipped, shiphead.shiphead_sfstatus AS cosmisc_sfstatus, shiphead.shiphead_tracknum AS cosmisc_tracknum, shiphead.shiphead_number AS cosmisc_number FROM shiphead WHERE (shiphead.shiphead_order_type = 'SO'::text); ALTER TABLE public.cosmisc OWNER TO admin; -- -- Name: cosmisc_cosmisc_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cosmisc_cosmisc_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.cosmisc_cosmisc_id_seq OWNER TO admin; -- -- Name: cosmisc_cosmisc_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cosmisc_cosmisc_id_seq', 202, true); -- -- Name: cosrc_cosrc_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cosrc_cosrc_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.cosrc_cosrc_id_seq OWNER TO admin; -- -- Name: cosrc_cosrc_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cosrc_cosrc_id_seq', 1, false); -- -- Name: costcat_costcat_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE costcat_costcat_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.costcat_costcat_id_seq OWNER TO admin; -- -- Name: costcat_costcat_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('costcat_costcat_id_seq', 30, true); -- -- Name: costelem_costelem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE costelem_costelem_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.costelem_costelem_id_seq OWNER TO admin; -- -- Name: costelem_costelem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('costelem_costelem_id_seq', 23, true); -- -- Name: costhist; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE costhist ( costhist_id integer DEFAULT nextval(('"costhist_costhist_id_seq"'::text)::regclass) NOT NULL, costhist_item_id integer, costhist_costelem_id integer, costhist_type character(1), costhist_date timestamp with time zone, costhist_oldcost numeric(16,6), costhist_newcost numeric(16,6), costhist_lowlevel boolean, costhist_oldcurr_id integer DEFAULT basecurrid(), costhist_newcurr_id integer DEFAULT basecurrid(), costhist_username text ); ALTER TABLE public.costhist OWNER TO admin; -- -- Name: TABLE costhist; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE costhist IS 'Item Cost history'; -- -- Name: costhist_costhist_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE costhist_costhist_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.costhist_costhist_id_seq OWNER TO admin; -- -- Name: costhist_costhist_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('costhist_costhist_id_seq', 992, true); -- -- Name: costupdate; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE costupdate ( costupdate_item_id integer, costupdate_lowlevel_code integer DEFAULT 1 NOT NULL, costupdate_item_type character(1) ); ALTER TABLE public.costupdate OWNER TO admin; -- -- Name: TABLE costupdate; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE costupdate IS 'Scratch area for sequencing the updating of item costs'; -- -- Name: country; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE country ( country_id integer NOT NULL, country_abbr character(2), country_name text, country_curr_abbr character(3), country_curr_name text, country_curr_number character(3), country_curr_symbol character varying(9), country_qt_number integer, CONSTRAINT country_country_abbr_check CHECK ((country_abbr <> ''::bpchar)), CONSTRAINT country_country_name_check CHECK ((country_name <> ''::text)) ); ALTER TABLE public.country OWNER TO admin; -- -- Name: TABLE country; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE country IS 'Basic information and properties about countries.'; -- -- Name: country_country_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE country_country_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.country_country_id_seq OWNER TO admin; -- -- Name: country_country_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE country_country_id_seq OWNED BY country.country_id; -- -- Name: country_country_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('country_country_id_seq', 242, true); -- -- Name: salesaccnt; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE salesaccnt ( salesaccnt_id integer DEFAULT nextval(('"salesaccnt_salesaccnt_id_seq"'::text)::regclass) NOT NULL, salesaccnt_custtype_id integer, salesaccnt_prodcat_id integer, salesaccnt_warehous_id integer, salesaccnt_sales_accnt_id integer, salesaccnt_credit_accnt_id integer, salesaccnt_cos_accnt_id integer, salesaccnt_custtype text, salesaccnt_prodcat text, salesaccnt_returns_accnt_id integer, salesaccnt_cor_accnt_id integer, salesaccnt_cow_accnt_id integer, salesaccnt_saletype_id integer, salesaccnt_shipzone_id integer ); ALTER TABLE public.salesaccnt OWNER TO admin; -- -- Name: TABLE salesaccnt; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE salesaccnt IS 'Sales Account assignment information'; -- -- Name: COLUMN salesaccnt.salesaccnt_saletype_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN salesaccnt.salesaccnt_saletype_id IS 'Associated sale type for sales account.'; -- -- Name: COLUMN salesaccnt.salesaccnt_shipzone_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN salesaccnt.salesaccnt_shipzone_id IS 'Associated shipping zone for sales account.'; -- -- Name: creditmemoeditlist; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW creditmemoeditlist AS ((((SELECT cmhead.cmhead_id AS orderid, (-2) AS itemid, ('C/M-'::text || formatcreditmemonumber(cmhead.cmhead_id)) AS documentnumber, custinfo.cust_number, cmhead.cmhead_billtoname AS billtoname, cmhead.cmhead_number AS ordernumber, (-1) AS linenumber, '' AS item, '' AS itemdescrip, '' AS iteminvuom, '' AS qtytobill, '' AS price, formatmoney((((calccmheadamt(cmhead.cmhead_id) + cmhead.cmhead_freight) + cmhead.cmhead_misc) + calccmheadtax(cmhead.cmhead_id))) AS extprice, 'Credit' AS sence, COALESCE((SELECT formatglaccountlong(accnt.accnt_id) AS formatglaccountlong FROM accnt WHERE (accnt.accnt_id = findaraccount(custinfo.cust_id))), 'Not Assigned'::text) AS account FROM custinfo, cmhead WHERE ((((cmhead.cmhead_cust_id = custinfo.cust_id) AND (cmhead.cmhead_cust_id = custinfo.cust_id)) AND (NOT cmhead.cmhead_posted)) AND (NOT cmhead.cmhead_hold)) UNION SELECT cmhead.cmhead_id AS orderid, (-1) AS itemid, '' AS documentnumber, '' AS cust_number, '' AS billtoname, cmhead.cmhead_number AS ordernumber, (-1) AS linenumber, 'Freight' AS item, 'Freight Charge' AS itemdescrip, '' AS iteminvuom, '' AS qtytobill, formatmoney(cmhead.cmhead_freight) AS price, formatmoney(cmhead.cmhead_freight) AS extprice, 'Debit' AS sence, CASE WHEN (accnt.accnt_id IS NULL) THEN 'Not Assigned'::text ELSE formatglaccountlong(accnt.accnt_id) END AS account FROM (cmhead LEFT JOIN accnt ON ((accnt.accnt_id = findfreightaccount(cmhead.cmhead_cust_id)))) WHERE (((NOT cmhead.cmhead_posted) AND (NOT cmhead.cmhead_hold)) AND (cmhead.cmhead_freight <> (0)::numeric))) UNION SELECT cmhead.cmhead_id AS orderid, (-1) AS itemid, '' AS documentnumber, '' AS cust_number, '' AS billtoname, cmhead.cmhead_number AS ordernumber, (-1) AS linenumber, 'Misc. Charge' AS item, cmhead.cmhead_misc_descrip AS itemdescrip, '' AS iteminvuom, '' AS qtytobill, formatmoney(cmhead.cmhead_misc) AS price, formatmoney(cmhead.cmhead_misc) AS extprice, 'Debit' AS sence, formatglaccountlong(cmhead.cmhead_misc_accnt_id) AS account FROM cmhead WHERE (((NOT cmhead.cmhead_posted) AND (NOT cmhead.cmhead_hold)) AND (cmhead.cmhead_misc <> (0)::numeric))) UNION SELECT cmhead.cmhead_id AS orderid, (-1) AS itemid, '' AS documentnumber, '' AS cust_number, '' AS billtoname, cmhead.cmhead_number AS ordernumber, (-1) AS linenumber, 'Sales Tax' AS item, tax.tax_descrip AS itemdescrip, '' AS iteminvuom, '' AS qtytobill, formatmoney((cmheadtax.taxhist_tax * (-1.0))) AS price, formatmoney((cmheadtax.taxhist_tax * (-1.0))) AS extprice, 'Debit' AS sence, CASE WHEN (accnt.accnt_id IS NULL) THEN 'Not Assigned'::text ELSE ((formatglaccountlong(accnt.accnt_id) || ' - '::text) || accnt.accnt_descrip) END AS account FROM (((cmhead JOIN cmheadtax ON ((cmheadtax.taxhist_parent_id = cmhead.cmhead_id))) JOIN tax ON ((tax.tax_id = cmheadtax.taxhist_tax_id))) LEFT JOIN accnt ON ((accnt.accnt_id = tax.tax_sales_accnt_id))) WHERE ((NOT cmhead.cmhead_posted) AND (NOT cmhead.cmhead_hold))) UNION SELECT cmhead.cmhead_id AS orderid, (-1) AS itemid, '' AS documentnumber, '' AS cust_number, '' AS billtoname, cmhead.cmhead_number AS ordernumber, (-1) AS linenumber, 'Sales Tax' AS item, tax.tax_descrip AS itemdescrip, '' AS iteminvuom, '' AS qtytobill, formatmoney((cmitemtax.taxhist_tax * (-1.0))) AS price, formatmoney((cmitemtax.taxhist_tax * (-1.0))) AS extprice, 'Debit' AS sence, CASE WHEN (accnt.accnt_id IS NULL) THEN 'Not Assigned'::text ELSE ((formatglaccountlong(accnt.accnt_id) || ' - '::text) || accnt.accnt_descrip) END AS account FROM ((((cmhead JOIN cmitem ON ((cmitem.cmitem_cmhead_id = cmhead.cmhead_id))) JOIN cmitemtax ON ((cmitemtax.taxhist_parent_id = cmitem.cmitem_id))) JOIN tax ON ((tax.tax_id = cmitemtax.taxhist_tax_id))) LEFT JOIN accnt ON ((accnt.accnt_id = tax.tax_sales_accnt_id))) WHERE ((NOT cmhead.cmhead_posted) AND (NOT cmhead.cmhead_hold))) UNION SELECT cmhead.cmhead_id AS orderid, cmitem.cmitem_id AS itemid, '' AS documentnumber, '' AS cust_number, '' AS billtoname, cmhead.cmhead_number AS ordernumber, cmitem.cmitem_linenumber AS linenumber, item.item_number AS item, item.item_descrip1 AS itemdescrip, uom.uom_name AS iteminvuom, formatqty(COALESCE((cmitem.cmitem_qtycredit * cmitem.cmitem_qty_invuomratio), (0)::numeric)) AS qtytobill, formatprice(COALESCE((cmitem.cmitem_unitprice / cmitem.cmitem_price_invuomratio), (0)::numeric)) AS price, formatmoney(COALESCE(round(((cmitem.cmitem_qtycredit * cmitem.cmitem_qty_invuomratio) * (cmitem.cmitem_unitprice / cmitem.cmitem_price_invuomratio)), 2), (0)::numeric)) AS extprice, 'Debit' AS sence, COALESCE((SELECT formatglaccountlong(accnt.accnt_id) AS formatglaccountlong FROM accnt, salesaccnt WHERE ((salesaccnt.salesaccnt_sales_accnt_id = accnt.accnt_id) AND (salesaccnt.salesaccnt_id = findsalesaccnt(cmitem.cmitem_itemsite_id, 'IS'::text, cmhead.cmhead_cust_id, cmhead.cmhead_saletype_id, cmhead.cmhead_shipzone_id)))), 'Not Assigned'::text) AS account FROM item, itemsite, cmhead, cmitem, uom WHERE ((((((cmitem.cmitem_cmhead_id = cmhead.cmhead_id) AND (cmitem.cmitem_itemsite_id = itemsite.itemsite_id)) AND (itemsite.itemsite_item_id = item.item_id)) AND (item.item_inv_uom_id = uom.uom_id)) AND (NOT cmhead.cmhead_posted)) AND (NOT cmhead.cmhead_hold)) ORDER BY 6, 7; ALTER TABLE public.creditmemoeditlist OWNER TO admin; -- -- Name: creditmemoitem; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW creditmemoitem AS SELECT cmitem.cmitem_id, cmitem.cmitem_cmhead_id, cmitem.cmitem_linenumber, cmitem.cmitem_itemsite_id, cmitem.cmitem_qtycredit, cmitem.cmitem_qtyreturned, cmitem.cmitem_unitprice, cmitem.cmitem_comments, cmitem.cmitem_rsncode_id, cmitem.cmitem_taxtype_id, cmitem.cmitem_qty_uom_id, cmitem.cmitem_qty_invuomratio, cmitem.cmitem_price_uom_id, cmitem.cmitem_price_invuomratio, cmitem.cmitem_raitem_id, cmitem.cmitem_updateinv, itemsite.itemsite_item_id AS item_id, COALESCE((cmitem.cmitem_qtycredit * cmitem.cmitem_qty_invuomratio), (0)::numeric) AS qty, COALESCE((cmitem.cmitem_unitprice / cmitem.cmitem_price_invuomratio), (0)::numeric) AS unitprice, COALESCE(round(((cmitem.cmitem_qtycredit * cmitem.cmitem_qty_invuomratio) * (cmitem.cmitem_unitprice / cmitem.cmitem_price_invuomratio)), 2), (0)::numeric) AS extprice, currtobase(cmhead.cmhead_curr_id, COALESCE(round(((cmitem.cmitem_qtycredit * cmitem.cmitem_qty_invuomratio) * (cmitem.cmitem_unitprice / cmitem.cmitem_price_invuomratio)), 2), (0)::numeric), cmhead.cmhead_docdate) AS baseextprice, (SELECT COALESCE(sum(cmitemtax.taxhist_tax), (0)::numeric) AS "coalesce" FROM cmitemtax WHERE (cmitemtax.taxhist_parent_id = cmitem.cmitem_id)) AS tax, CASE WHEN (itemsite.itemsite_costmethod = 'A'::bpchar) THEN avgcost(itemsite.itemsite_id) ELSE stdcost(itemsite.itemsite_item_id) END AS unitcost FROM ((cmitem JOIN cmhead ON ((cmhead.cmhead_id = cmitem.cmitem_cmhead_id))) LEFT JOIN itemsite ON ((itemsite.itemsite_id = cmitem.cmitem_itemsite_id))); ALTER TABLE public.creditmemoitem OWNER TO admin; -- -- Name: VIEW creditmemoitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON VIEW creditmemoitem IS 'Single point for credit memo item (cmitem) calculations.'; -- -- Name: crmacct_crmacct_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE crmacct_crmacct_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.crmacct_crmacct_id_seq OWNER TO admin; -- -- Name: crmacct_crmacct_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE crmacct_crmacct_id_seq OWNED BY crmacct.crmacct_id; -- -- Name: crmacct_crmacct_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('crmacct_crmacct_id_seq', 26, true); -- -- Name: crmacctsel; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE crmacctsel ( crmacctsel_src_crmacct_id integer NOT NULL, crmacctsel_dest_crmacct_id integer, crmacctsel_mrg_crmacct_active boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_cntct_id_1 boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_cntct_id_2 boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_competitor_id boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_cust_id boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_emp_id boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_name boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_notes boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_owner_username boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_parent_id boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_partner_id boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_prospect_id boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_salesrep_id boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_taxauth_id boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_type boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_usr_username boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_vend_id boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_number boolean DEFAULT false NOT NULL ); ALTER TABLE public.crmacctsel OWNER TO admin; -- -- Name: TABLE crmacctsel; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE crmacctsel IS 'This table records the proposed conditions of a CRM Account merge. When this merge is performed, the BOOLEAN columns in this table indicate which values in the crmacct table will be copied to the target record. Data in this table are temporary and will be removed by a purge.'; -- -- Name: COLUMN crmacctsel.crmacctsel_src_crmacct_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacctsel.crmacctsel_src_crmacct_id IS 'This is the internal ID of the CRM Account record the data will come from during the merge.'; -- -- Name: COLUMN crmacctsel.crmacctsel_dest_crmacct_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN crmacctsel.crmacctsel_dest_crmacct_id IS 'This is the internal ID of the CRM Account record the data will go to during the merge. If crmacctsel_src_crmacct_id = crmacctsel_dest_crmacct_id, they indicate which crmacct record is the destination of the merge, meaning this is the record that will remain in the database after the merge has been completed and the intermediate data have been purged.'; -- -- Name: curr_rate; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE curr_rate ( curr_rate_id integer NOT NULL, curr_id integer NOT NULL, curr_rate numeric(16,8) NOT NULL, curr_effective date NOT NULL, curr_expires date NOT NULL, CONSTRAINT curr_rate_curr_rate_check CHECK ((curr_rate > (0)::numeric)) ); ALTER TABLE public.curr_rate OWNER TO admin; -- -- Name: TABLE curr_rate; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE curr_rate IS 'Exchange Rates Between Base and Foreign Currencies'; -- -- Name: curr_rate_curr_rate_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE curr_rate_curr_rate_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.curr_rate_curr_rate_id_seq OWNER TO admin; -- -- Name: curr_rate_curr_rate_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE curr_rate_curr_rate_id_seq OWNED BY curr_rate.curr_rate_id; -- -- Name: curr_rate_curr_rate_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('curr_rate_curr_rate_id_seq', 1, true); -- -- Name: curr_symbol_curr_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE curr_symbol_curr_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.curr_symbol_curr_id_seq OWNER TO admin; -- -- Name: curr_symbol_curr_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE curr_symbol_curr_id_seq OWNED BY curr_symbol.curr_id; -- -- Name: curr_symbol_curr_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('curr_symbol_curr_id_seq', 1, true); -- -- Name: cust; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW cust AS SELECT custinfo.cust_id, custinfo.cust_active, custinfo.cust_custtype_id, custinfo.cust_salesrep_id, custinfo.cust_commprcnt, custinfo.cust_name, m.addr_line1 AS cust_address1, m.addr_line2 AS cust_address2, m.addr_line3 AS cust_address3, m.addr_city AS cust_city, m.addr_state AS cust_state, m.addr_postalcode AS cust_zipcode, btrim(((mc.cntct_first_name || ' '::text) || mc.cntct_last_name)) AS cust_contact, mc.cntct_phone AS cust_phone, mc.cntct_fax AS cust_fax, mc.cntct_email AS cust_email, c.addr_line1 AS cust_corraddress1, c.addr_line2 AS cust_corraddress2, c.addr_line3 AS cust_corraddress3, c.addr_city AS cust_corrcity, c.addr_state AS cust_corrstate, c.addr_postalcode AS cust_corrzipcode, btrim(((cc.cntct_first_name || ' '::text) || cc.cntct_last_name)) AS cust_corrcontact, cc.cntct_phone AS cust_corrphone, cc.cntct_fax AS cust_corrfax, cc.cntct_email AS cust_corremail, custinfo.cust_creditlmt, custinfo.cust_creditrating, custinfo.cust_financecharge, custinfo.cust_backorder, custinfo.cust_partialship, custinfo.cust_terms_id, custinfo.cust_discntprcnt, custinfo.cust_taxzone_id, custinfo.cust_balmethod, custinfo.cust_ffshipto, custinfo.cust_shipform_id, custinfo.cust_shipvia, custinfo.cust_blanketpos, custinfo.cust_shipchrg_id, custinfo.cust_creditstatus, custinfo.cust_comments, custinfo.cust_ffbillto, m.addr_country AS cust_country, c.addr_country AS cust_corrcountry, custinfo.cust_usespos, custinfo.cust_number, custinfo.cust_dateadded, custinfo.cust_exported, custinfo.cust_emaildelivery, custinfo.cust_ediemail, custinfo.cust_edisubject, custinfo.cust_edifilename, custinfo.cust_ediemailbody, custinfo.cust_autoupdatestatus, custinfo.cust_autoholdorders, custinfo.cust_edicc, custinfo.cust_ediprofile_id, custinfo.cust_preferred_warehous_id, custinfo.cust_curr_id, custinfo.cust_creditlmt_curr_id FROM ((((custinfo LEFT JOIN cntct mc ON ((custinfo.cust_cntct_id = mc.cntct_id))) LEFT JOIN addr m ON ((mc.cntct_addr_id = m.addr_id))) LEFT JOIN cntct cc ON ((custinfo.cust_corrcntct_id = cc.cntct_id))) LEFT JOIN addr c ON ((cc.cntct_addr_id = c.addr_id))); ALTER TABLE public.cust OWNER TO admin; -- -- Name: cust_serial_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE cust_serial_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.cust_serial_seq OWNER TO admin; -- -- Name: cust_serial_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('cust_serial_seq', 1, false); -- -- Name: custform; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE custform ( custform_id integer DEFAULT nextval(('"custform_custform_id_seq"'::text)::regclass) NOT NULL, custform_custtype_id integer, custform_custtype text, custform_invoice_report_id integer, custform_creditmemo_report_id integer, custform_quote_report_id integer, custform_packinglist_report_id integer, custform_statement_report_id integer, custform_sopicklist_report_id integer, custform_invoice_report_name text, custform_creditmemo_report_name text, custform_quote_report_name text, custform_packinglist_report_name text, custform_statement_report_name text, custform_sopicklist_report_name text ); ALTER TABLE public.custform OWNER TO admin; -- -- Name: TABLE custform; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE custform IS 'Customer Form assignment information'; -- -- Name: COLUMN custform.custform_invoice_report_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custform.custform_invoice_report_id IS 'Obsolete -- reference custform_invoice_report_name instead.'; -- -- Name: COLUMN custform.custform_creditmemo_report_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custform.custform_creditmemo_report_id IS 'Obsolete -- reference custform_creditmemo_report_name instead.'; -- -- Name: COLUMN custform.custform_quote_report_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custform.custform_quote_report_id IS 'Obsolete -- reference custform_quote_report_name instead.'; -- -- Name: COLUMN custform.custform_packinglist_report_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custform.custform_packinglist_report_id IS 'Obsolete -- reference custform_packinglist_report_name instead.'; -- -- Name: COLUMN custform.custform_statement_report_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custform.custform_statement_report_id IS 'Obsolete -- reference custform_statement_report_name instead.'; -- -- Name: COLUMN custform.custform_sopicklist_report_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN custform.custform_sopicklist_report_id IS 'Obsolete -- reference custform_sopicklist_report_name instead.'; -- -- Name: custform_custform_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE custform_custform_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.custform_custform_id_seq OWNER TO admin; -- -- Name: custform_custform_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('custform_custform_id_seq', 8, true); -- -- Name: custgrp; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE custgrp ( custgrp_id integer DEFAULT nextval(('"custgrp_custgrp_id_seq"'::text)::regclass) NOT NULL, custgrp_name text NOT NULL, custgrp_descrip text, CONSTRAINT custgrp_custgrp_name_check CHECK ((custgrp_name <> ''::text)) ); ALTER TABLE public.custgrp OWNER TO admin; -- -- Name: TABLE custgrp; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE custgrp IS 'Customer Group information'; -- -- Name: custgrp_custgrp_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE custgrp_custgrp_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.custgrp_custgrp_id_seq OWNER TO admin; -- -- Name: custgrp_custgrp_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('custgrp_custgrp_id_seq', 24, true); -- -- Name: custgrpitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE custgrpitem ( custgrpitem_id integer DEFAULT nextval(('"custgrpitem_custgrpitem_id_seq"'::text)::regclass) NOT NULL, custgrpitem_custgrp_id integer, custgrpitem_cust_id integer ); ALTER TABLE public.custgrpitem OWNER TO admin; -- -- Name: TABLE custgrpitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE custgrpitem IS 'Customer Group Item information'; -- -- Name: custgrpitem_custgrpitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE custgrpitem_custgrpitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.custgrpitem_custgrpitem_id_seq OWNER TO admin; -- -- Name: custgrpitem_custgrpitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('custgrpitem_custgrpitem_id_seq', 47, true); -- -- Name: custtype_custtype_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE custtype_custtype_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.custtype_custtype_id_seq OWNER TO admin; -- -- Name: custtype_custtype_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('custtype_custtype_id_seq', 18, true); -- -- Name: dept_dept_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE dept_dept_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.dept_dept_id_seq OWNER TO admin; -- -- Name: dept_dept_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE dept_dept_id_seq OWNED BY dept.dept_id; -- -- Name: dept_dept_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('dept_dept_id_seq', 2, true); -- -- Name: destination; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE destination ( destination_id integer DEFAULT nextval(('"destination_destination_id_seq"'::text)::regclass) NOT NULL, destination_name text, destination_city text, destination_state text, destination_comments text ); ALTER TABLE public.destination OWNER TO admin; -- -- Name: TABLE destination; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE destination IS 'Destination information'; -- -- Name: destination_destination_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE destination_destination_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.destination_destination_id_seq OWNER TO admin; -- -- Name: destination_destination_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('destination_destination_id_seq', 12, true); -- -- Name: wo; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE wo ( wo_id integer DEFAULT nextval(('wo_wo_id_seq'::text)::regclass) NOT NULL, wo_number integer, wo_subnumber integer, wo_status character(1), wo_itemsite_id integer, wo_startdate date, wo_duedate date, wo_ordtype character(1), wo_ordid integer, wo_qtyord numeric(18,6), wo_qtyrcv numeric(18,6), wo_adhoc boolean, wo_itemcfg_series integer, wo_imported boolean, wo_wipvalue numeric(16,6) DEFAULT 0, wo_postedvalue numeric(16,6) DEFAULT 0, wo_prodnotes text, wo_prj_id integer, wo_priority integer DEFAULT 1 NOT NULL, wo_brdvalue numeric(16,6) DEFAULT 0, wo_bom_rev_id integer DEFAULT (-1), wo_boo_rev_id integer DEFAULT (-1), wo_cosmethod character(1), wo_womatl_id integer, wo_username text DEFAULT geteffectivextuser(), CONSTRAINT chk_wo_cosmethod CHECK ((((wo_cosmethod = NULL::bpchar) OR (wo_cosmethod = 'D'::bpchar)) OR (wo_cosmethod = 'P'::bpchar))) ); ALTER TABLE public.wo OWNER TO admin; -- -- Name: TABLE wo; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE wo IS 'Work Order information'; -- -- Name: docinfo; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW docinfo AS (((((((((((((((((((((((((((((SELECT imageass.imageass_id AS id, (image.image_id)::text AS target_number, 'IMG' AS target_type, imageass.imageass_image_id AS target_id, imageass.imageass_source AS source_type, imageass.imageass_source_id AS source_id, image.image_name AS name, image.image_descrip AS description, imageass.imageass_purpose AS purpose FROM imageass, image WHERE (imageass.imageass_image_id = image.image_id) UNION ALL SELECT url.url_id AS id, (url.url_id)::text AS target_number, 'URL' AS target_type, url.url_id AS target_id, url.url_source AS source_type, url.url_source_id AS source_id, url.url_title AS name, url.url_url AS description, 'S' AS purpose FROM url WHERE (url.url_stream IS NULL)) UNION ALL SELECT url.url_id AS id, (url.url_id)::text AS target_number, 'FILE' AS target_type, url.url_id AS target_id, url.url_source AS source_type, url.url_source_id AS source_id, url.url_title AS name, url.url_url AS description, 'S' AS purpose FROM url WHERE (url.url_stream IS NOT NULL)) UNION ALL SELECT docass.docass_id AS id, (incdt.incdt_number)::text AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, incdt.incdt_summary AS name, firstline(incdt.incdt_descrip) AS description, docass.docass_purpose AS purpose FROM docass, incdt WHERE ((docass.docass_target_type = 'INCDT'::text) AND (docass.docass_target_id = incdt.incdt_id))) UNION ALL SELECT docass.docass_id AS id, (incdt.incdt_number)::text AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, incdt.incdt_summary AS name, firstline(incdt.incdt_descrip) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, incdt WHERE ((docass.docass_source_type = 'INCDT'::text) AND (docass.docass_source_id = incdt.incdt_id))) UNION ALL SELECT docass.docass_id AS id, (todoitem.todoitem_id)::text AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, todoitem.todoitem_name AS name, firstline(todoitem.todoitem_description) AS description, docass.docass_purpose AS purpose FROM docass, todoitem WHERE ((docass.docass_target_type = 'TODO'::text) AND (docass.docass_target_id = todoitem.todoitem_id))) UNION ALL SELECT docass.docass_id AS id, (todoitem.todoitem_id)::text AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, todoitem.todoitem_name AS name, firstline(todoitem.todoitem_description) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, todoitem WHERE ((docass.docass_source_type = 'TODO'::text) AND (docass.docass_source_id = todoitem.todoitem_id))) UNION ALL SELECT docass.docass_id AS id, prj.prj_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, prj.prj_name AS name, firstline(prj.prj_descrip) AS description, docass.docass_purpose AS purpose FROM docass, prj WHERE ((docass.docass_target_type = 'J'::text) AND (docass.docass_target_id = prj.prj_id))) UNION ALL SELECT docass.docass_id AS id, prj.prj_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, prj.prj_name AS name, firstline(prj.prj_descrip) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, prj WHERE ((docass.docass_source_type = 'J'::text) AND (docass.docass_source_id = prj.prj_id))) UNION ALL SELECT docass.docass_id AS id, item.item_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, firstline(item.item_descrip1) AS name, firstline(item.item_descrip2) AS description, docass.docass_purpose AS purpose FROM docass, item WHERE ((docass.docass_target_type = 'I'::text) AND (docass.docass_target_id = item.item_id))) UNION ALL SELECT docass.docass_id AS id, item.item_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, firstline(item.item_descrip1) AS name, firstline(item.item_descrip2) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, item WHERE ((docass.docass_source_type = 'I'::text) AND (docass.docass_source_id = item.item_id))) UNION ALL SELECT docass.docass_id AS id, crmacct.crmacct_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, crmacct.crmacct_name AS name, firstline(crmacct.crmacct_notes) AS description, docass.docass_purpose AS purpose FROM docass, crmacct WHERE ((docass.docass_target_type = 'CRMA'::text) AND (docass.docass_target_id = crmacct.crmacct_id))) UNION ALL SELECT docass.docass_id AS id, crmacct.crmacct_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, crmacct.crmacct_name AS name, firstline(crmacct.crmacct_notes) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, crmacct WHERE ((docass.docass_source_type = 'CRMA'::text) AND (docass.docass_source_id = crmacct.crmacct_id))) UNION SELECT docass.docass_id AS id, custinfo.cust_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, custinfo.cust_name AS name, firstline(custinfo.cust_comments) AS description, docass.docass_purpose AS purpose FROM docass, custinfo WHERE ((docass.docass_target_type = 'C'::text) AND (docass.docass_target_id = custinfo.cust_id))) UNION ALL SELECT docass.docass_id AS id, custinfo.cust_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, custinfo.cust_name AS name, firstline(custinfo.cust_comments) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, custinfo WHERE ((docass.docass_source_type = 'C'::text) AND (docass.docass_source_id = custinfo.cust_id))) UNION ALL SELECT docass.docass_id AS id, vendinfo.vend_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, vendinfo.vend_name AS name, firstline(vendinfo.vend_comments) AS description, docass.docass_purpose AS purpose FROM docass, vendinfo WHERE ((docass.docass_target_type = 'V'::text) AND (docass.docass_target_id = vendinfo.vend_id))) UNION ALL SELECT docass.docass_id AS id, vendinfo.vend_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, vendinfo.vend_name AS name, firstline(vendinfo.vend_comments) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, vendinfo WHERE ((docass.docass_source_type = 'V'::text) AND (docass.docass_source_id = vendinfo.vend_id))) UNION ALL SELECT docass.docass_id AS id, cntct.cntct_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, cntct.cntct_name AS name, cntct.cntct_title AS description, docass.docass_purpose AS purpose FROM docass, cntct WHERE ((docass.docass_target_type = 'T'::text) AND (docass.docass_target_id = cntct.cntct_id))) UNION ALL SELECT docass.docass_id AS id, cntct.cntct_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, cntct.cntct_name AS name, cntct.cntct_title AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, cntct WHERE ((docass.docass_source_type = 'T'::text) AND (docass.docass_source_id = cntct.cntct_id))) UNION ALL SELECT docass.docass_id AS id, (ophead.ophead_id)::text AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, ophead.ophead_name AS name, firstline(ophead.ophead_notes) AS description, docass.docass_purpose AS purpose FROM docass, ophead WHERE ((docass.docass_target_type = 'OPP'::text) AND (docass.docass_target_id = ophead.ophead_id))) UNION ALL SELECT docass.docass_id AS id, (ophead.ophead_id)::text AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, ophead.ophead_name AS name, firstline(ophead.ophead_notes) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, ophead WHERE ((docass.docass_source_type = 'OPP'::text) AND (docass.docass_source_id = ophead.ophead_id))) UNION ALL SELECT docass.docass_id AS id, quhead.quhead_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, custinfo.cust_name AS name, firstline(quhead.quhead_ordercomments) AS description, docass.docass_purpose AS purpose FROM docass, quhead, custinfo WHERE (((docass.docass_target_type = 'Q'::text) AND (docass.docass_target_id = quhead.quhead_id)) AND (custinfo.cust_id = quhead.quhead_cust_id))) UNION ALL SELECT docass.docass_id AS id, quhead.quhead_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, custinfo.cust_name AS name, firstline(quhead.quhead_ordercomments) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, quhead, custinfo WHERE (((docass.docass_source_type = 'Q'::text) AND (docass.docass_source_id = quhead.quhead_id)) AND (custinfo.cust_id = quhead.quhead_cust_id))) UNION ALL SELECT docass.docass_id AS id, cohead.cohead_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, custinfo.cust_name AS name, firstline(cohead.cohead_ordercomments) AS description, docass.docass_purpose AS purpose FROM docass, cohead, custinfo WHERE (((docass.docass_target_type = 'S'::text) AND (docass.docass_target_id = cohead.cohead_id)) AND (custinfo.cust_id = cohead.cohead_cust_id))) UNION ALL SELECT docass.docass_id AS id, cohead.cohead_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, custinfo.cust_name AS name, firstline(cohead.cohead_ordercomments) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, cohead, custinfo WHERE (((docass.docass_source_type = 'S'::text) AND (docass.docass_source_id = cohead.cohead_id)) AND (custinfo.cust_id = cohead.cohead_cust_id))) UNION ALL SELECT docass.docass_id AS id, pohead.pohead_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, vendinfo.vend_name AS name, firstline(pohead.pohead_comments) AS description, docass.docass_purpose AS purpose FROM docass, pohead, vendinfo WHERE (((docass.docass_target_type = 'P'::text) AND (docass.docass_target_id = pohead.pohead_id)) AND (vendinfo.vend_id = pohead.pohead_vend_id))) UNION ALL SELECT docass.docass_id AS id, pohead.pohead_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, vendinfo.vend_name AS name, firstline(pohead.pohead_comments) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, pohead, vendinfo WHERE (((docass.docass_source_type = 'P'::text) AND (docass.docass_source_id = pohead.pohead_id)) AND (vendinfo.vend_id = pohead.pohead_vend_id))) UNION ALL SELECT docass.docass_id AS id, formatwonumber(wo.wo_id) AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, item.item_descrip1 AS name, item.item_descrip2 AS description, docass.docass_purpose AS purpose FROM docass, wo, itemsite, item WHERE ((((docass.docass_target_type = 'W'::text) AND (docass.docass_target_id = wo.wo_id)) AND (wo.wo_itemsite_id = itemsite.itemsite_id)) AND (itemsite.itemsite_item_id = item.item_id))) UNION ALL SELECT docass.docass_id AS id, formatwonumber(wo.wo_id) AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, item.item_descrip1 AS name, item.item_descrip2 AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, wo, itemsite, item WHERE ((((docass.docass_source_type = 'W'::text) AND (docass.docass_source_id = wo.wo_id)) AND (wo.wo_itemsite_id = itemsite.itemsite_id)) AND (itemsite.itemsite_item_id = item.item_id))) UNION ALL SELECT docass.docass_id AS id, emp.emp_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, cntct.cntct_name AS name, cntct.cntct_title AS description, docass.docass_purpose AS purpose FROM docass, (emp LEFT JOIN cntct ON ((emp.emp_cntct_id = cntct.cntct_id))) WHERE ((docass.docass_target_type = 'EMP'::text) AND (docass.docass_target_id = emp.emp_id))) UNION ALL SELECT docass.docass_id AS id, emp.emp_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, cntct.cntct_name AS name, cntct.cntct_title AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, (emp LEFT JOIN cntct ON ((emp.emp_cntct_id = cntct.cntct_id))) WHERE ((docass.docass_source_type = 'EMP'::text) AND (docass.docass_source_id = emp.emp_id)); ALTER TABLE public.docinfo OWNER TO admin; -- -- Name: emp_emp_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE emp_emp_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.emp_emp_id_seq OWNER TO admin; -- -- Name: emp_emp_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE emp_emp_id_seq OWNED BY emp.emp_id; -- -- Name: emp_emp_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('emp_emp_id_seq', 2, true); -- -- Name: empgrp; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE empgrp ( empgrp_id integer NOT NULL, empgrp_name text NOT NULL, empgrp_descrip text NOT NULL, CONSTRAINT empgrp_empgrp_name_check CHECK ((empgrp_name <> ''::text)) ); ALTER TABLE public.empgrp OWNER TO admin; -- -- Name: empgrp_empgrp_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE empgrp_empgrp_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.empgrp_empgrp_id_seq OWNER TO admin; -- -- Name: empgrp_empgrp_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE empgrp_empgrp_id_seq OWNED BY empgrp.empgrp_id; -- -- Name: empgrp_empgrp_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('empgrp_empgrp_id_seq', 1, false); -- -- Name: empgrpitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE empgrpitem ( empgrpitem_id integer NOT NULL, empgrpitem_empgrp_id integer NOT NULL, empgrpitem_emp_id integer NOT NULL ); ALTER TABLE public.empgrpitem OWNER TO admin; -- -- Name: empgrpitem_empgrpitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE empgrpitem_empgrpitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.empgrpitem_empgrpitem_id_seq OWNER TO admin; -- -- Name: empgrpitem_empgrpitem_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE empgrpitem_empgrpitem_id_seq OWNED BY empgrpitem.empgrpitem_id; -- -- Name: empgrpitem_empgrpitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('empgrpitem_empgrpitem_id_seq', 1, false); -- -- Name: evntlog; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE evntlog ( evntlog_id integer DEFAULT nextval(('evntlog_evntlog_id_seq'::text)::regclass) NOT NULL, evntlog_evnttime timestamp with time zone, evntlog_evnttype_id integer, evntlog_ord_id integer, evntlog_dispatched timestamp with time zone, evntlog_action text, evntlog_warehous_id integer, evntlog_number text, evntlog_newvalue numeric(20,10), evntlog_oldvalue numeric(20,10), evntlog_newdate date, evntlog_olddate date, evntlog_ordtype character(2), evntlog_username text ); ALTER TABLE public.evntlog OWNER TO admin; -- -- Name: TABLE evntlog; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE evntlog IS 'Event Notification history'; -- -- Name: evntlog_evntlog_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE evntlog_evntlog_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.evntlog_evntlog_id_seq OWNER TO admin; -- -- Name: evntlog_evntlog_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('evntlog_evntlog_id_seq', 262, true); -- -- Name: evntnot; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE evntnot ( evntnot_id integer DEFAULT nextval(('evntnot_evntnot_id_seq'::text)::regclass) NOT NULL, evntnot_evnttype_id integer, evntnot_warehous_id integer, evntnot_username text ); ALTER TABLE public.evntnot OWNER TO admin; -- -- Name: TABLE evntnot; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE evntnot IS 'Temporary table for storing information about user Event Notification selections'; -- -- Name: evntnot_evntnot_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE evntnot_evntnot_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.evntnot_evntnot_id_seq OWNER TO admin; -- -- Name: evntnot_evntnot_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('evntnot_evntnot_id_seq', 819, true); -- -- Name: evnttype; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE evnttype ( evnttype_id integer DEFAULT nextval(('evnttype_evnttype_id_seq'::text)::regclass) NOT NULL, evnttype_name text NOT NULL, evnttype_descrip text, evnttype_module text, CONSTRAINT evnttype_evnttype_name_check CHECK ((evnttype_name <> ''::text)) ); ALTER TABLE public.evnttype OWNER TO admin; -- -- Name: TABLE evnttype; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE evnttype IS 'Event Type information'; -- -- Name: evnttype_evnttype_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE evnttype_evnttype_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.evnttype_evnttype_id_seq OWNER TO admin; -- -- Name: evnttype_evnttype_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('evnttype_evnttype_id_seq', 45, true); -- -- Name: expcat_expcat_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE expcat_expcat_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.expcat_expcat_id_seq OWNER TO admin; -- -- Name: expcat_expcat_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE expcat_expcat_id_seq OWNED BY expcat.expcat_id; -- -- Name: expcat_expcat_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('expcat_expcat_id_seq', 19, true); -- -- Name: file_file_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE file_file_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.file_file_id_seq OWNER TO admin; -- -- Name: file_file_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE file_file_id_seq OWNED BY file.file_id; -- -- Name: file_file_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('file_file_id_seq', 1, false); -- -- Name: filter; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE filter ( filter_id integer NOT NULL, filter_screen text NOT NULL, filter_value text NOT NULL, filter_username text, filter_name text NOT NULL, filter_selected boolean DEFAULT false ); ALTER TABLE public.filter OWNER TO admin; -- -- Name: filter_filter_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE filter_filter_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.filter_filter_id_seq OWNER TO admin; -- -- Name: filter_filter_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE filter_filter_id_seq OWNED BY filter.filter_id; -- -- Name: filter_filter_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('filter_filter_id_seq', 1, false); -- -- Name: flhead; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE flhead ( flhead_id integer NOT NULL, flhead_name text NOT NULL, flhead_descrip text, flhead_showtotal boolean DEFAULT false NOT NULL, flhead_showstart boolean DEFAULT true NOT NULL, flhead_showend boolean DEFAULT true NOT NULL, flhead_showdelta boolean DEFAULT true NOT NULL, flhead_showbudget boolean DEFAULT true NOT NULL, flhead_showdiff boolean DEFAULT false NOT NULL, flhead_showcustom boolean DEFAULT false NOT NULL, flhead_custom_label text, flhead_usealttotal boolean DEFAULT false NOT NULL, flhead_alttotal text, flhead_usealtbegin boolean DEFAULT false NOT NULL, flhead_altbegin text, flhead_usealtend boolean DEFAULT false NOT NULL, flhead_altend text, flhead_usealtdebits boolean DEFAULT false NOT NULL, flhead_altdebits text, flhead_usealtcredits boolean DEFAULT false NOT NULL, flhead_altcredits text, flhead_usealtbudget boolean DEFAULT false NOT NULL, flhead_altbudget text, flhead_usealtdiff boolean DEFAULT false NOT NULL, flhead_altdiff text, flhead_type character(1) DEFAULT 'A'::bpchar NOT NULL, flhead_active boolean DEFAULT true NOT NULL, flhead_sys boolean DEFAULT false, flhead_notes text DEFAULT ''::text, CONSTRAINT flhead_flhead_name_check CHECK ((flhead_name <> ''::text)) ); ALTER TABLE public.flhead OWNER TO admin; -- -- Name: TABLE flhead; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE flhead IS 'Financial Layout header information'; -- -- Name: flitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE flitem ( flitem_id integer NOT NULL, flitem_flhead_id integer, flitem_flgrp_id integer, flitem_order integer, flitem_accnt_id integer, flitem_showstart boolean, flitem_showend boolean, flitem_showdelta boolean, flitem_showbudget boolean DEFAULT false NOT NULL, flitem_subtract boolean DEFAULT false NOT NULL, flitem_showstartprcnt boolean DEFAULT false NOT NULL, flitem_showendprcnt boolean DEFAULT false NOT NULL, flitem_showdeltaprcnt boolean DEFAULT false NOT NULL, flitem_showbudgetprcnt boolean DEFAULT false NOT NULL, flitem_prcnt_flgrp_id integer DEFAULT (-1) NOT NULL, flitem_showdiff boolean DEFAULT false NOT NULL, flitem_showdiffprcnt boolean DEFAULT false NOT NULL, flitem_showcustom boolean DEFAULT false NOT NULL, flitem_showcustomprcnt boolean DEFAULT false NOT NULL, flitem_custom_source character(1), flitem_company text, flitem_profit text, flitem_number text, flitem_sub text, flitem_type character(1), flitem_subaccnttype_code text ); ALTER TABLE public.flitem OWNER TO admin; -- -- Name: TABLE flitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE flitem IS 'Financial Layout Account information'; -- -- Name: flaccnt; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW flaccnt AS SELECT flhead.flhead_type, flitem.flitem_id, flitem.flitem_flhead_id, flitem.flitem_flgrp_id, flitem.flitem_order, flitem.flitem_accnt_id, flitem.flitem_showstart, flitem.flitem_showend, flitem.flitem_showdelta, flitem.flitem_showbudget, flitem.flitem_subtract, flitem.flitem_showstartprcnt, flitem.flitem_showendprcnt, flitem.flitem_showdeltaprcnt, flitem.flitem_showbudgetprcnt, flitem.flitem_prcnt_flgrp_id, flitem.flitem_showdiff, flitem.flitem_showdiffprcnt, flitem.flitem_showcustom, flitem.flitem_showcustomprcnt, flitem.flitem_custom_source, flitem.flitem_company, flitem.flitem_profit, flitem.flitem_number, flitem.flitem_sub, flitem.flitem_type, flitem.flitem_subaccnttype_code, accnt.accnt_id, accnt.accnt_type, accnt.accnt_company, accnt.accnt_profit, accnt.accnt_number, accnt.accnt_sub, (-1) AS prj_id FROM ((flhead JOIN flitem ON ((flhead.flhead_id = flitem.flitem_flhead_id))) JOIN accnt ON ((flitem.flitem_accnt_id = accnt.accnt_id))) UNION ALL SELECT flhead.flhead_type, flitem.flitem_id, flitem.flitem_flhead_id, flitem.flitem_flgrp_id, flitem.flitem_order, flitem.flitem_accnt_id, flitem.flitem_showstart, flitem.flitem_showend, flitem.flitem_showdelta, flitem.flitem_showbudget, flitem.flitem_subtract, flitem.flitem_showstartprcnt, flitem.flitem_showendprcnt, flitem.flitem_showdeltaprcnt, flitem.flitem_showbudgetprcnt, flitem.flitem_prcnt_flgrp_id, flitem.flitem_showdiff, flitem.flitem_showdiffprcnt, flitem.flitem_showcustom, flitem.flitem_showcustomprcnt, flitem.flitem_custom_source, flitem.flitem_company, flitem.flitem_profit, flitem.flitem_number, flitem.flitem_sub, flitem.flitem_type, flitem.flitem_subaccnttype_code, accnt.accnt_id, accnt.accnt_type, accnt.accnt_company, accnt.accnt_profit, accnt.accnt_number, accnt.accnt_sub, (-1) AS prj_id FROM (flhead JOIN flitem ON ((flhead.flhead_id = flitem.flitem_flhead_id))), accnt WHERE (((((((flitem.flitem_accnt_id = (-1)) AND ((flitem.flitem_type = ''::bpchar) OR (accnt.accnt_type = flitem.flitem_type))) AND ((flitem.flitem_company = 'All'::text) OR (accnt.accnt_company = flitem.flitem_company))) AND ((flitem.flitem_profit = 'All'::text) OR (accnt.accnt_profit = flitem.flitem_profit))) AND ((flitem.flitem_number = 'All'::text) OR (accnt.accnt_number = flitem.flitem_number))) AND ((flitem.flitem_sub = 'All'::text) OR (accnt.accnt_sub = flitem.flitem_sub))) AND ((flitem.flitem_subaccnttype_code = 'All'::text) OR (accnt.accnt_subaccnttype_code = flitem.flitem_subaccnttype_code))) ORDER BY 30, 31, 32, 33; ALTER TABLE public.flaccnt OWNER TO admin; -- -- Name: flcol; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE flcol ( flcol_id integer NOT NULL, flcol_flhead_id integer NOT NULL, flcol_name text, flcol_descrip text, flcol_report_id integer, flcol_month boolean, flcol_quarter boolean, flcol_year boolean, flcol_showdb boolean, flcol_prcnt boolean, flcol_priortype character(1), flcol_priormonth boolean, flcol_priorquarter boolean, flcol_prioryear character(1), flcol_priorprcnt boolean, flcol_priordiff boolean, flcol_priordiffprcnt boolean, flcol_budget boolean, flcol_budgetprcnt boolean, flcol_budgetdiff boolean, flcol_budgetdiffprcnt boolean ); ALTER TABLE public.flcol OWNER TO admin; -- -- Name: flcol_flcol_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE flcol_flcol_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.flcol_flcol_id_seq OWNER TO admin; -- -- Name: flcol_flcol_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE flcol_flcol_id_seq OWNED BY flcol.flcol_id; -- -- Name: flcol_flcol_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('flcol_flcol_id_seq', 24, true); -- -- Name: flgrp; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE flgrp ( flgrp_id integer NOT NULL, flgrp_flhead_id integer, flgrp_flgrp_id integer, flgrp_order integer, flgrp_name text, flgrp_descrip text, flgrp_subtotal boolean DEFAULT false NOT NULL, flgrp_summarize boolean DEFAULT false NOT NULL, flgrp_subtract boolean DEFAULT false NOT NULL, flgrp_showstart boolean DEFAULT true NOT NULL, flgrp_showend boolean DEFAULT true NOT NULL, flgrp_showdelta boolean DEFAULT true NOT NULL, flgrp_showbudget boolean DEFAULT true NOT NULL, flgrp_showstartprcnt boolean DEFAULT false NOT NULL, flgrp_showendprcnt boolean DEFAULT false NOT NULL, flgrp_showdeltaprcnt boolean DEFAULT false NOT NULL, flgrp_showbudgetprcnt boolean DEFAULT false NOT NULL, flgrp_prcnt_flgrp_id integer DEFAULT (-1) NOT NULL, flgrp_showdiff boolean DEFAULT false NOT NULL, flgrp_showdiffprcnt boolean DEFAULT false NOT NULL, flgrp_showcustom boolean DEFAULT false NOT NULL, flgrp_showcustomprcnt boolean DEFAULT false NOT NULL, flgrp_usealtsubtotal boolean DEFAULT false NOT NULL, flgrp_altsubtotal text ); ALTER TABLE public.flgrp OWNER TO admin; -- -- Name: TABLE flgrp; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE flgrp IS 'Financial Layout Group information'; -- -- Name: flgrp_flgrp_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE flgrp_flgrp_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.flgrp_flgrp_id_seq OWNER TO admin; -- -- Name: flgrp_flgrp_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE flgrp_flgrp_id_seq OWNED BY flgrp.flgrp_id; -- -- Name: flgrp_flgrp_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('flgrp_flgrp_id_seq', 111, true); -- -- Name: flhead_flhead_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE flhead_flhead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.flhead_flhead_id_seq OWNER TO admin; -- -- Name: flhead_flhead_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE flhead_flhead_id_seq OWNED BY flhead.flhead_id; -- -- Name: flhead_flhead_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('flhead_flhead_id_seq', 16, true); -- -- Name: flitem_flitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE flitem_flitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.flitem_flitem_id_seq OWNER TO admin; -- -- Name: flitem_flitem_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE flitem_flitem_id_seq OWNED BY flitem.flitem_id; -- -- Name: flitem_flitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('flitem_flitem_id_seq', 255, true); -- -- Name: flnotes; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE flnotes ( flnotes_id integer NOT NULL, flnotes_flhead_id integer, flnotes_period_id integer, flnotes_notes text DEFAULT ''::text ); ALTER TABLE public.flnotes OWNER TO admin; -- -- Name: flnotes_flnotes_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE flnotes_flnotes_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.flnotes_flnotes_id_seq OWNER TO admin; -- -- Name: flnotes_flnotes_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE flnotes_flnotes_id_seq OWNED BY flnotes.flnotes_id; -- -- Name: flnotes_flnotes_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('flnotes_flnotes_id_seq', 1, false); -- -- Name: flrpt; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE flrpt ( flrpt_flhead_id integer NOT NULL, flrpt_period_id integer NOT NULL, flrpt_username text NOT NULL, flrpt_order integer NOT NULL, flrpt_level integer NOT NULL, flrpt_type text NOT NULL, flrpt_type_id integer NOT NULL, flrpt_beginning numeric, flrpt_ending numeric, flrpt_debits numeric, flrpt_credits numeric, flrpt_budget numeric, flrpt_beginningprcnt numeric, flrpt_endingprcnt numeric, flrpt_debitsprcnt numeric, flrpt_creditsprcnt numeric, flrpt_budgetprcnt numeric, flrpt_parent_id integer, flrpt_diff numeric, flrpt_diffprcnt numeric, flrpt_custom numeric, flrpt_customprcnt numeric, flrpt_altname text, flrpt_accnt_id integer, flrpt_interval character(1), flrpt_id integer NOT NULL ); ALTER TABLE public.flrpt OWNER TO admin; -- -- Name: TABLE flrpt; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE flrpt IS 'Scratch table where financial reporting information is processed before being displayed.'; -- -- Name: flrpt_flrpt_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE flrpt_flrpt_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.flrpt_flrpt_id_seq OWNER TO admin; -- -- Name: flrpt_flrpt_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE flrpt_flrpt_id_seq OWNED BY flrpt.flrpt_id; -- -- Name: flrpt_flrpt_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('flrpt_flrpt_id_seq', 2378, true); -- -- Name: flspec; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE flspec ( flspec_id integer NOT NULL, flspec_flhead_id integer NOT NULL, flspec_flgrp_id integer NOT NULL, flspec_order integer NOT NULL, flspec_name text, flspec_type text, flspec_showstart boolean DEFAULT true NOT NULL, flspec_showend boolean DEFAULT true NOT NULL, flspec_showdelta boolean DEFAULT true NOT NULL, flspec_showbudget boolean DEFAULT false NOT NULL, flspec_subtract boolean DEFAULT false NOT NULL, flspec_showstartprcnt boolean DEFAULT false NOT NULL, flspec_showendprcnt boolean DEFAULT false NOT NULL, flspec_showdeltaprcnt boolean DEFAULT false NOT NULL, flspec_showbudgetprcnt boolean DEFAULT false NOT NULL, flspec_showdiff boolean DEFAULT false NOT NULL, flspec_showdiffprcnt boolean DEFAULT false NOT NULL, flspec_prcnt_flgrp_id integer DEFAULT (-1) NOT NULL, flspec_showcustom boolean DEFAULT false NOT NULL, flspec_showcustomprcnt boolean DEFAULT false NOT NULL, flspec_custom_source character(1) ); ALTER TABLE public.flspec OWNER TO admin; -- -- Name: TABLE flspec; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE flspec IS 'Financial Layout Special entries.'; -- -- Name: flspec_flspec_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE flspec_flspec_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.flspec_flspec_id_seq OWNER TO admin; -- -- Name: flspec_flspec_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE flspec_flspec_id_seq OWNED BY flspec.flspec_id; -- -- Name: flspec_flspec_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('flspec_flspec_id_seq', 1, false); -- -- Name: form; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE form ( form_id integer DEFAULT nextval(('"form_form_id_seq"'::text)::regclass) NOT NULL, form_name text NOT NULL, form_descrip text, form_report_id integer, form_key character varying(4), form_report_name text, CONSTRAINT form_form_name_check CHECK ((form_name <> ''::text)) ); ALTER TABLE public.form OWNER TO admin; -- -- Name: TABLE form; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE form IS 'Form information'; -- -- Name: COLUMN form.form_report_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN form.form_report_id IS 'Obsolete -- reference form_report_name instead.'; -- -- Name: form_form_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE form_form_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.form_form_id_seq OWNER TO admin; -- -- Name: form_form_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('form_form_id_seq', 22, true); -- -- Name: freightclass_freightclass_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE freightclass_freightclass_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.freightclass_freightclass_id_seq OWNER TO admin; -- -- Name: freightclass_freightclass_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE freightclass_freightclass_id_seq OWNED BY freightclass.freightclass_id; -- -- Name: freightclass_freightclass_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('freightclass_freightclass_id_seq', 1, false); -- -- Name: glseries; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE glseries ( glseries_id integer DEFAULT nextval(('"glseries_glseries_id_seq"'::text)::regclass) NOT NULL, glseries_sequence integer, glseries_doctype character(2), glseries_docnumber text, glseries_accnt_id integer, glseries_amount numeric(20,2), glseries_source text, glseries_distdate date, glseries_notes text, glseries_misc_id integer ); ALTER TABLE public.glseries OWNER TO admin; -- -- Name: TABLE glseries; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE glseries IS 'Temporary table for storing information about General Ledger (G/L) Series Entries before Series Entries are posted'; -- -- Name: glseries_glseries_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE glseries_glseries_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.glseries_glseries_id_seq OWNER TO admin; -- -- Name: glseries_glseries_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('glseries_glseries_id_seq', 1563, true); -- -- Name: gltrans_gltrans_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE gltrans_gltrans_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.gltrans_gltrans_id_seq OWNER TO admin; -- -- Name: gltrans_gltrans_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('gltrans_gltrans_id_seq', 7008, true); -- -- Name: gltrans_sequence_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE gltrans_sequence_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.gltrans_sequence_seq OWNER TO admin; -- -- Name: gltrans_sequence_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('gltrans_sequence_seq', 3583, true); -- -- Name: grp; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE grp ( grp_id integer NOT NULL, grp_name text NOT NULL, grp_descrip text, CONSTRAINT grp_grp_name_check CHECK ((grp_name <> ''::text)) ); ALTER TABLE public.grp OWNER TO admin; -- -- Name: TABLE grp; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE grp IS 'This table is the basic group information.'; -- -- Name: grp_grp_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE grp_grp_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.grp_grp_id_seq OWNER TO admin; -- -- Name: grp_grp_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE grp_grp_id_seq OWNED BY grp.grp_id; -- -- Name: grp_grp_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('grp_grp_id_seq', 1, true); -- -- Name: grppriv; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE grppriv ( grppriv_id integer NOT NULL, grppriv_grp_id integer NOT NULL, grppriv_priv_id integer NOT NULL ); ALTER TABLE public.grppriv OWNER TO admin; -- -- Name: TABLE grppriv; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE grppriv IS 'This is a specific priv for a specific group.'; -- -- Name: grppriv_grppriv_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE grppriv_grppriv_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.grppriv_grppriv_id_seq OWNER TO admin; -- -- Name: grppriv_grppriv_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE grppriv_grppriv_id_seq OWNED BY grppriv.grppriv_id; -- -- Name: grppriv_grppriv_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('grppriv_grppriv_id_seq', 374, true); -- -- Name: hnfc; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE hnfc ( hnfc_id integer NOT NULL, hnfc_code text NOT NULL, CONSTRAINT hnfc_hnfc_code_check CHECK ((hnfc_code <> ''::text)) ); ALTER TABLE public.hnfc OWNER TO admin; -- -- Name: TABLE hnfc; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE hnfc IS 'List of personal titles/honorifics used in cntct table.'; -- -- Name: hnfc_hnfc_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE hnfc_hnfc_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.hnfc_hnfc_id_seq OWNER TO admin; -- -- Name: hnfc_hnfc_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE hnfc_hnfc_id_seq OWNED BY hnfc.hnfc_id; -- -- Name: hnfc_hnfc_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('hnfc_hnfc_id_seq', 5, true); -- -- Name: incdt_incdt_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE incdt_incdt_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.incdt_incdt_id_seq OWNER TO admin; -- -- Name: incdt_incdt_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE incdt_incdt_id_seq OWNED BY incdt.incdt_id; -- -- Name: incdt_incdt_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('incdt_incdt_id_seq', 1, false); -- -- Name: incdtcat_incdtcat_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE incdtcat_incdtcat_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.incdtcat_incdtcat_id_seq OWNER TO admin; -- -- Name: incdtcat_incdtcat_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE incdtcat_incdtcat_id_seq OWNED BY incdtcat.incdtcat_id; -- -- Name: incdtcat_incdtcat_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('incdtcat_incdtcat_id_seq', 1, true); -- -- Name: incdthist; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE incdthist ( incdthist_id integer NOT NULL, incdthist_incdt_id integer NOT NULL, incdthist_change character(1), incdthist_target_id integer, incdthist_timestamp timestamp without time zone DEFAULT now() NOT NULL, incdthist_username text DEFAULT geteffectivextuser() NOT NULL, incdthist_descrip text ); ALTER TABLE public.incdthist OWNER TO admin; -- -- Name: TABLE incdthist; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE incdthist IS 'Incident history changes'; -- -- Name: incdthist_incdthist_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE incdthist_incdthist_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.incdthist_incdthist_id_seq OWNER TO admin; -- -- Name: incdthist_incdthist_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE incdthist_incdthist_id_seq OWNED BY incdthist.incdthist_id; -- -- Name: incdthist_incdthist_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('incdthist_incdthist_id_seq', 1, false); -- -- Name: incdtpriority_incdtpriority_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE incdtpriority_incdtpriority_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.incdtpriority_incdtpriority_id_seq OWNER TO admin; -- -- Name: incdtpriority_incdtpriority_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE incdtpriority_incdtpriority_id_seq OWNED BY incdtpriority.incdtpriority_id; -- -- Name: incdtpriority_incdtpriority_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('incdtpriority_incdtpriority_id_seq', 5, true); -- -- Name: incdtresolution_incdtresolution_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE incdtresolution_incdtresolution_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.incdtresolution_incdtresolution_id_seq OWNER TO admin; -- -- Name: incdtresolution_incdtresolution_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE incdtresolution_incdtresolution_id_seq OWNED BY incdtresolution.incdtresolution_id; -- -- Name: incdtresolution_incdtresolution_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('incdtresolution_incdtresolution_id_seq', 4, true); -- -- Name: incdtseverity_incdtseverity_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE incdtseverity_incdtseverity_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.incdtseverity_incdtseverity_id_seq OWNER TO admin; -- -- Name: incdtseverity_incdtseverity_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE incdtseverity_incdtseverity_id_seq OWNED BY incdtseverity.incdtseverity_id; -- -- Name: incdtseverity_incdtseverity_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('incdtseverity_incdtseverity_id_seq', 5, true); -- -- Name: invbal_invbal_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE invbal_invbal_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.invbal_invbal_id_seq OWNER TO admin; -- -- Name: invbal_invbal_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE invbal_invbal_id_seq OWNED BY invbal.invbal_id; -- -- Name: invbal_invbal_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('invbal_invbal_id_seq', 1, false); -- -- Name: invc_invc_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE invc_invc_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.invc_invc_id_seq OWNER TO admin; -- -- Name: invc_invc_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('invc_invc_id_seq', 1, false); -- -- Name: invchead_invchead_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE invchead_invchead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.invchead_invchead_id_seq OWNER TO admin; -- -- Name: invchead_invchead_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE invchead_invchead_id_seq OWNED BY invchead.invchead_id; -- -- Name: invchead_invchead_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('invchead_invchead_id_seq', 2, true); -- -- Name: invcheadtax; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE invcheadtax ( ) INHERITS (taxhist); ALTER TABLE public.invcheadtax OWNER TO admin; -- -- Name: invcitem_invcitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE invcitem_invcitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.invcitem_invcitem_id_seq OWNER TO admin; -- -- Name: invcitem_invcitem_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE invcitem_invcitem_id_seq OWNED BY invcitem.invcitem_id; -- -- Name: invcitem_invcitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('invcitem_invcitem_id_seq', 1, false); -- -- Name: invcitemtax; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE invcitemtax ( ) INHERITS (taxhist); ALTER TABLE public.invcitemtax OWNER TO admin; -- -- Name: invcnt_invcnt_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE invcnt_invcnt_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.invcnt_invcnt_id_seq OWNER TO admin; -- -- Name: invcnt_invcnt_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('invcnt_invcnt_id_seq', 213, true); -- -- Name: invdetail; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE invdetail ( invdetail_id integer DEFAULT nextval(('"invdetail_invdetail_id_seq"'::text)::regclass) NOT NULL, invdetail_transtype character(2), invdetail_invhist_id integer, invdetail_location_id integer, invdetail_qty numeric(18,6), invdetail_comments text, invdetail_qty_before numeric(18,6), invdetail_qty_after numeric(18,6), invdetail_invcitem_id integer, invdetail_expiration date, invdetail_warrpurc date, invdetail_ls_id integer ); ALTER TABLE public.invdetail OWNER TO admin; -- -- Name: TABLE invdetail; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE invdetail IS 'Detailed Inventory transaction information for Lot/Serial and Multiple Location Control (MLC) Items'; -- -- Name: invdetail_invdetail_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE invdetail_invdetail_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.invdetail_invdetail_id_seq OWNER TO admin; -- -- Name: invdetail_invdetail_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('invdetail_invdetail_id_seq', 1326, true); -- -- Name: invhist; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE invhist ( invhist_id integer DEFAULT nextval(('invhist_invhist_id_seq'::text)::regclass) NOT NULL, invhist_itemsite_id integer, invhist_transdate timestamp with time zone DEFAULT ('now'::text)::timestamp(6) with time zone, invhist_transtype character(2), invhist_invqty numeric(18,6), invhist_invuom text, invhist_ordnumber text, invhist_docnumber text, invhist_qoh_before numeric(18,6), invhist_qoh_after numeric(18,6), invhist_unitcost numeric(16,6), invhist_acct_id integer, invhist_xfer_warehous_id integer, invhist_comments text, invhist_posted boolean DEFAULT true, invhist_imported boolean, invhist_hasdetail boolean DEFAULT false, invhist_ordtype text, invhist_analyze boolean DEFAULT true, invhist_user text DEFAULT geteffectivextuser(), invhist_created timestamp with time zone DEFAULT now() NOT NULL, invhist_costmethod character(1) NOT NULL, invhist_value_before numeric(12,2) NOT NULL, invhist_value_after numeric(12,2) NOT NULL, invhist_series integer ); ALTER TABLE public.invhist OWNER TO admin; -- -- Name: TABLE invhist; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE invhist IS 'Inventory transaction history'; -- -- Name: invhist_invhist_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE invhist_invhist_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.invhist_invhist_id_seq OWNER TO admin; -- -- Name: invhist_invhist_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('invhist_invhist_id_seq', 2859, true); -- -- Name: invhistexpcat; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE invhistexpcat ( invhistexpcat_id integer NOT NULL, invhistexpcat_invhist_id integer NOT NULL, invhistexpcat_expcat_id integer NOT NULL ); ALTER TABLE public.invhistexpcat OWNER TO admin; -- -- Name: TABLE invhistexpcat; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE invhistexpcat IS 'Track the relationship between an EX transaction in the invhist table and the corresponding Expense Category.'; -- -- Name: invhistexpcat_invhistexpcat_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE invhistexpcat_invhistexpcat_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.invhistexpcat_invhistexpcat_id_seq OWNER TO admin; -- -- Name: invhistexpcat_invhistexpcat_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE invhistexpcat_invhistexpcat_id_seq OWNED BY invhistexpcat.invhistexpcat_id; -- -- Name: invhistexpcat_invhistexpcat_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('invhistexpcat_invhistexpcat_id_seq', 1, false); -- -- Name: invoiceitem; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW invoiceitem AS SELECT invcitem.invcitem_id, invcitem.invcitem_invchead_id, invcitem.invcitem_linenumber, invcitem.invcitem_item_id, invcitem.invcitem_warehous_id, invcitem.invcitem_custpn, invcitem.invcitem_number, invcitem.invcitem_descrip, invcitem.invcitem_ordered, invcitem.invcitem_billed, invcitem.invcitem_custprice, invcitem.invcitem_price, invcitem.invcitem_notes, invcitem.invcitem_salescat_id, invcitem.invcitem_taxtype_id, invcitem.invcitem_qty_uom_id, invcitem.invcitem_qty_invuomratio, invcitem.invcitem_price_uom_id, invcitem.invcitem_price_invuomratio, invcitem.invcitem_coitem_id, invcitem.invcitem_updateinv, invcitem.invcitem_rev_accnt_id, itemsite.itemsite_id, cohead.cohead_number, COALESCE((invcitem.invcitem_billed * invcitem.invcitem_qty_invuomratio), (0)::numeric) AS qty, COALESCE((invcitem.invcitem_price / invcitem.invcitem_price_invuomratio), (0)::numeric) AS unitprice, COALESCE(round(((invcitem.invcitem_billed * invcitem.invcitem_qty_invuomratio) * (invcitem.invcitem_price / invcitem.invcitem_price_invuomratio)), 2), (0)::numeric) AS extprice, currtobase(invchead.invchead_curr_id, COALESCE(round(((invcitem.invcitem_billed * invcitem.invcitem_qty_invuomratio) * (invcitem.invcitem_price / invcitem.invcitem_price_invuomratio)), 2), (0)::numeric), invchead.invchead_invcdate) AS baseextprice, (SELECT COALESCE(sum(invcitemtax.taxhist_tax), (0)::numeric) AS "coalesce" FROM invcitemtax WHERE (invcitemtax.taxhist_parent_id = invcitem.invcitem_id)) AS tax, ((SELECT COALESCE(sum(shipitem.shipitem_value), (itemcost(itemsite.itemsite_id) * invcitem.invcitem_billed), (0)::numeric) AS "coalesce" FROM shipitem WHERE (shipitem.shipitem_invcitem_id = invcitem.invcitem_id)) / CASE WHEN (invcitem.invcitem_billed <> (0)::numeric) THEN (invcitem.invcitem_billed * invcitem.invcitem_qty_invuomratio) ELSE (1)::numeric END) AS unitcost FROM ((((invcitem JOIN invchead ON ((invchead.invchead_id = invcitem.invcitem_invchead_id))) LEFT JOIN coitem ON ((coitem.coitem_id = invcitem.invcitem_coitem_id))) LEFT JOIN cohead ON ((cohead.cohead_id = coitem.coitem_cohead_id))) LEFT JOIN itemsite ON (((itemsite.itemsite_item_id = invcitem.invcitem_item_id) AND (itemsite.itemsite_warehous_id = invcitem.invcitem_warehous_id)))); ALTER TABLE public.invoiceitem OWNER TO admin; -- -- Name: VIEW invoiceitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON VIEW invoiceitem IS 'Single point for invoice item (invcitem) calculations.'; -- -- Name: ipsass_ipsass_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE ipsass_ipsass_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.ipsass_ipsass_id_seq OWNER TO admin; -- -- Name: ipsass_ipsass_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE ipsass_ipsass_id_seq OWNED BY ipsass.ipsass_id; -- -- Name: ipsass_ipsass_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('ipsass_ipsass_id_seq', 1, false); -- -- Name: ipsctyp_ipsctyp_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE ipsctyp_ipsctyp_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.ipsctyp_ipsctyp_id_seq OWNER TO admin; -- -- Name: ipsctyp_ipsctyp_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('ipsctyp_ipsctyp_id_seq', 16, true); -- -- Name: ipscust_ipscust_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE ipscust_ipscust_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.ipscust_ipscust_id_seq OWNER TO admin; -- -- Name: ipscust_ipscust_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('ipscust_ipscust_id_seq', 21, true); -- -- Name: ipsfreight_ipsfreight_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE ipsfreight_ipsfreight_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.ipsfreight_ipsfreight_id_seq OWNER TO admin; -- -- Name: ipsfreight_ipsfreight_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE ipsfreight_ipsfreight_id_seq OWNED BY ipsfreight.ipsfreight_id; -- -- Name: ipsfreight_ipsfreight_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('ipsfreight_ipsfreight_id_seq', 1, false); -- -- Name: ipshead_ipshead_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE ipshead_ipshead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.ipshead_ipshead_id_seq OWNER TO admin; -- -- Name: ipshead_ipshead_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('ipshead_ipshead_id_seq', 58, true); -- -- Name: ipsitem_ipsitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE ipsitem_ipsitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.ipsitem_ipsitem_id_seq OWNER TO admin; -- -- Name: ipsitem_ipsitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('ipsitem_ipsitem_id_seq', 75, true); -- -- Name: ipsitemchar_ipsitemchar_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE ipsitemchar_ipsitemchar_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.ipsitemchar_ipsitemchar_id_seq OWNER TO admin; -- -- Name: ipsitemchar_ipsitemchar_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE ipsitemchar_ipsitemchar_id_seq OWNED BY ipsitemchar.ipsitemchar_id; -- -- Name: ipsitemchar_ipsitemchar_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('ipsitemchar_ipsitemchar_id_seq', 1, false); -- -- Name: ipsprice; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW ipsprice AS SELECT ipsiteminfo.ipsitem_id AS ipsprice_id, 'I' AS ipsprice_source, ipsiteminfo.ipsitem_ipshead_id AS ipsprice_ipshead_id, ipsiteminfo.ipsitem_item_id AS ipsprice_item_id, itemuomtouom(ipsiteminfo.ipsitem_item_id, ipsiteminfo.ipsitem_qty_uom_id, NULL::integer, ipsiteminfo.ipsitem_qtybreak) AS ipsprice_qtybreak, CASE WHEN (ipsiteminfo.ipsitem_type = 'N'::bpchar) THEN ((ipsiteminfo.ipsitem_price * itemuomtouomratio(ipsiteminfo.ipsitem_item_id, NULL::integer, ipsiteminfo.ipsitem_price_uom_id)) * iteminvpricerat(ipsiteminfo.ipsitem_item_id)) WHEN (ipsiteminfo.ipsitem_type = 'D'::bpchar) THEN ((item.item_listprice - (item.item_listprice * ipsiteminfo.ipsitem_discntprcnt)) - ipsiteminfo.ipsitem_fixedamtdiscount) WHEN (ipsiteminfo.ipsitem_type = 'M'::bpchar) THEN ((item.item_listcost + (item.item_listcost * ipsiteminfo.ipsitem_discntprcnt)) + ipsiteminfo.ipsitem_fixedamtdiscount) ELSE NULL::numeric END AS ipsprice_price, ipsiteminfo.ipsitem_qtybreak AS ipsprice_uomqtybreak, ipsiteminfo.ipsitem_qty_uom_id AS ipsprice_uomqtybreak_uom_id, CASE WHEN (ipsiteminfo.ipsitem_type = 'N'::bpchar) THEN ipsiteminfo.ipsitem_price WHEN (ipsiteminfo.ipsitem_type = 'D'::bpchar) THEN ((item.item_listprice - (item.item_listprice * ipsiteminfo.ipsitem_discntprcnt)) - ipsiteminfo.ipsitem_fixedamtdiscount) WHEN (ipsiteminfo.ipsitem_type = 'M'::bpchar) THEN ((item.item_listcost + (item.item_listcost * ipsiteminfo.ipsitem_discntprcnt)) + ipsiteminfo.ipsitem_fixedamtdiscount) ELSE NULL::numeric END AS ipsprice_uomprice, ipsiteminfo.ipsitem_price_uom_id AS ipsprice_uomprice_uom_id, ipsiteminfo.ipsitem_discntprcnt AS ipsprice_discountpercent, ipsiteminfo.ipsitem_fixedamtdiscount AS ipsprice_discountfixed, ipsiteminfo.ipsitem_type AS ipsprice_type FROM (ipsiteminfo JOIN item ON ((item.item_id = ipsiteminfo.ipsitem_item_id))) UNION SELECT ipsiteminfo.ipsitem_id AS ipsprice_id, 'P' AS ipsprice_source, ipsiteminfo.ipsitem_ipshead_id AS ipsprice_ipshead_id, item.item_id AS ipsprice_item_id, ipsiteminfo.ipsitem_qtybreak AS ipsprice_qtybreak, CASE WHEN (ipsiteminfo.ipsitem_type = 'D'::bpchar) THEN ((item.item_listprice - (item.item_listprice * ipsiteminfo.ipsitem_discntprcnt)) - ipsiteminfo.ipsitem_fixedamtdiscount) WHEN (ipsiteminfo.ipsitem_type = 'M'::bpchar) THEN ((item.item_listcost + (item.item_listcost * ipsiteminfo.ipsitem_discntprcnt)) + ipsiteminfo.ipsitem_fixedamtdiscount) ELSE NULL::numeric END AS ipsprice_price, ipsiteminfo.ipsitem_qtybreak AS ipsprice_uomqtybreak, item.item_inv_uom_id AS ipsprice_uomqtybreak_uom_id, CASE WHEN (ipsiteminfo.ipsitem_type = 'D'::bpchar) THEN ((item.item_listprice - (item.item_listprice * ipsiteminfo.ipsitem_discntprcnt)) - ipsiteminfo.ipsitem_fixedamtdiscount) WHEN (ipsiteminfo.ipsitem_type = 'M'::bpchar) THEN ((item.item_listcost + (item.item_listcost * ipsiteminfo.ipsitem_discntprcnt)) + ipsiteminfo.ipsitem_fixedamtdiscount) ELSE NULL::numeric END AS ipsprice_uomprice, item.item_price_uom_id AS ipsprice_uomprice_uom_id, ipsiteminfo.ipsitem_discntprcnt AS ipsprice_discountpercent, ipsiteminfo.ipsitem_fixedamtdiscount AS ipsprice_discountfixed, ipsiteminfo.ipsitem_type AS ipsprice_type FROM (ipsiteminfo JOIN item ON ((ipsiteminfo.ipsitem_prodcat_id = item.item_prodcat_id))); ALTER TABLE public.ipsprice OWNER TO admin; -- -- Name: ipsprodcat_bak; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE ipsprodcat_bak ( ipsprodcat_id integer NOT NULL, ipsprodcat_ipshead_id integer NOT NULL, ipsprodcat_prodcat_id integer NOT NULL, ipsprodcat_qtybreak numeric(18,6) NOT NULL, ipsprodcat_discntprcnt numeric(10,6) NOT NULL, ipsprodcat_fixedamtdiscount numeric(16,4) DEFAULT 0.00 NOT NULL ); ALTER TABLE public.ipsprodcat_bak OWNER TO admin; -- -- Name: TABLE ipsprodcat_bak; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE ipsprodcat_bak IS 'Pricing Schedule Product Category information.'; -- -- Name: ipsprodcat_ipsprodcat_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE ipsprodcat_ipsprodcat_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.ipsprodcat_ipsprodcat_id_seq OWNER TO admin; -- -- Name: ipsprodcat_ipsprodcat_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE ipsprodcat_ipsprodcat_id_seq OWNED BY ipsprodcat_bak.ipsprodcat_id; -- -- Name: ipsprodcat_ipsprodcat_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('ipsprodcat_ipsprodcat_id_seq', 1, false); -- -- Name: item_item_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE item_item_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.item_item_id_seq OWNER TO admin; -- -- Name: item_item_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('item_item_id_seq', 300, true); -- -- Name: itemalias_itemalias_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itemalias_itemalias_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.itemalias_itemalias_id_seq OWNER TO admin; -- -- Name: itemalias_itemalias_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itemalias_itemalias_id_seq', 15, true); -- -- Name: itematr_itematr_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itematr_itematr_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.itematr_itematr_id_seq OWNER TO admin; -- -- Name: itematr_itematr_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itematr_itematr_id_seq', 29, true); -- -- Name: itemcost_itemcost_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itemcost_itemcost_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.itemcost_itemcost_id_seq OWNER TO admin; -- -- Name: itemcost_itemcost_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itemcost_itemcost_id_seq', 299, true); -- -- Name: itemfrez_itemfrez_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itemfrez_itemfrez_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.itemfrez_itemfrez_seq OWNER TO admin; -- -- Name: itemfrez_itemfrez_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itemfrez_itemfrez_seq', 1, false); -- -- Name: itemgrp; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE itemgrp ( itemgrp_id integer DEFAULT nextval(('"itemgrp_itemgrp_id_seq"'::text)::regclass) NOT NULL, itemgrp_name text NOT NULL, itemgrp_descrip text, CONSTRAINT itemgrp_itemgrp_name_check CHECK ((itemgrp_name <> ''::text)) ); ALTER TABLE public.itemgrp OWNER TO admin; -- -- Name: TABLE itemgrp; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE itemgrp IS 'Item Group information'; -- -- Name: itemgrp_itemgrp_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itemgrp_itemgrp_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.itemgrp_itemgrp_id_seq OWNER TO admin; -- -- Name: itemgrp_itemgrp_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itemgrp_itemgrp_id_seq', 19, true); -- -- Name: itemgrpitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE itemgrpitem ( itemgrpitem_id integer DEFAULT nextval(('"itemgrpitem_itemgrpitem_id_seq"'::text)::regclass) NOT NULL, itemgrpitem_itemgrp_id integer, itemgrpitem_item_id integer ); ALTER TABLE public.itemgrpitem OWNER TO admin; -- -- Name: TABLE itemgrpitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE itemgrpitem IS 'Item Group Item information'; -- -- Name: itemgrpitem_itemgrpitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itemgrpitem_itemgrpitem_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.itemgrpitem_itemgrpitem_id_seq OWNER TO admin; -- -- Name: itemgrpitem_itemgrpitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itemgrpitem_itemgrpitem_id_seq', 112, true); -- -- Name: itemimage; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW itemimage AS SELECT imageass.imageass_id AS itemimage_id, imageass.imageass_source_id AS itemimage_item_id, imageass.imageass_image_id AS itemimage_image_id, imageass.imageass_purpose AS itemimage_purpose FROM imageass WHERE (imageass.imageass_source = 'I'::text); ALTER TABLE public.itemimage OWNER TO admin; -- -- Name: VIEW itemimage; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON VIEW itemimage IS 'Itemimage view for legacy support. Use of itemimage is deprecated. Use imageass table for future development'; -- -- Name: itemimage_itemimage_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itemimage_itemimage_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.itemimage_itemimage_id_seq OWNER TO admin; -- -- Name: itemimage_itemimage_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itemimage_itemimage_id_seq', 20, true); -- -- Name: itemloc; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE itemloc ( itemloc_id integer DEFAULT nextval(('"itemloc_itemloc_id_seq"'::text)::regclass) NOT NULL, itemloc_itemsite_id integer NOT NULL, itemloc_location_id integer NOT NULL, itemloc_qty numeric(18,6) NOT NULL, itemloc_expiration date NOT NULL, itemloc_consolflag boolean, itemloc_ls_id integer, itemloc_warrpurc date ); ALTER TABLE public.itemloc OWNER TO admin; -- -- Name: TABLE itemloc; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE itemloc IS 'Detailed Location information for Lot/Serial and Multiple Location Control (MLC) Items'; -- -- Name: itemloc_itemloc_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itemloc_itemloc_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.itemloc_itemloc_id_seq OWNER TO admin; -- -- Name: itemloc_itemloc_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itemloc_itemloc_id_seq', 511, true); -- -- Name: itemloc_series_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itemloc_series_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.itemloc_series_seq OWNER TO admin; -- -- Name: itemloc_series_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itemloc_series_seq', 1022, true); -- -- Name: itemlocdist; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE itemlocdist ( itemlocdist_id integer DEFAULT nextval(('"itemlocdist_itemlocdist_id_seq"'::text)::regclass) NOT NULL, itemlocdist_itemlocdist_id integer, itemlocdist_source_type character(1), itemlocdist_source_id integer, itemlocdist_qty numeric(18,6), itemlocdist_series integer, itemlocdist_invhist_id integer, itemlocdist_itemsite_id integer, itemlocdist_reqlotserial boolean DEFAULT false, itemlocdist_flush boolean DEFAULT false, itemlocdist_expiration date, itemlocdist_distlotserial boolean, itemlocdist_warranty date, itemlocdist_ls_id integer, itemlocdist_order_type text, itemlocdist_order_id integer ); ALTER TABLE public.itemlocdist OWNER TO admin; -- -- Name: TABLE itemlocdist; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE itemlocdist IS 'Temporary table for storing information about Inventory distributions involving Lot/Serial and Multiple Location Control (MLC) Items'; -- -- Name: itemlocdist_itemlocdist_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itemlocdist_itemlocdist_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.itemlocdist_itemlocdist_id_seq OWNER TO admin; -- -- Name: itemlocdist_itemlocdist_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itemlocdist_itemlocdist_id_seq', 2133, true); -- -- Name: itemlocpost; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE itemlocpost ( itemlocpost_id integer NOT NULL, itemlocpost_itemlocseries integer, itemlocpost_glseq integer ); ALTER TABLE public.itemlocpost OWNER TO admin; -- -- Name: TABLE itemlocpost; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE itemlocpost IS 'Temporary table for storing information about Inventory distribution G/L postings involving Lot/Serial and Multiple Location Control (MLC) Items'; -- -- Name: itemlocpost_itemlocpost_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itemlocpost_itemlocpost_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.itemlocpost_itemlocpost_id_seq OWNER TO admin; -- -- Name: itemlocpost_itemlocpost_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE itemlocpost_itemlocpost_id_seq OWNED BY itemlocpost.itemlocpost_id; -- -- Name: itemlocpost_itemlocpost_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itemlocpost_itemlocpost_id_seq', 1, false); -- -- Name: itemopn_itemopn_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itemopn_itemopn_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.itemopn_itemopn_id_seq OWNER TO admin; -- -- Name: itemopn_itemopn_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itemopn_itemopn_id_seq', 39, true); -- -- Name: itemsite_itemsite_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itemsite_itemsite_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.itemsite_itemsite_id_seq OWNER TO admin; -- -- Name: itemsite_itemsite_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itemsite_itemsite_id_seq', 292, true); -- -- Name: itemsrc_itemsrc_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itemsrc_itemsrc_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.itemsrc_itemsrc_id_seq OWNER TO admin; -- -- Name: itemsrc_itemsrc_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itemsrc_itemsrc_id_seq', 83, true); -- -- Name: itemsrcp_itemsrcp_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itemsrcp_itemsrcp_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.itemsrcp_itemsrcp_id_seq OWNER TO admin; -- -- Name: itemsrcp_itemsrcp_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itemsrcp_itemsrcp_id_seq', 84, true); -- -- Name: itemsub_itemsub_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itemsub_itemsub_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.itemsub_itemsub_id_seq OWNER TO admin; -- -- Name: itemsub_itemsub_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itemsub_itemsub_id_seq', 16, true); -- -- Name: itemtax_itemtax_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itemtax_itemtax_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.itemtax_itemtax_id_seq OWNER TO admin; -- -- Name: itemtax_itemtax_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE itemtax_itemtax_id_seq OWNED BY itemtax.itemtax_id; -- -- Name: itemtax_itemtax_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itemtax_itemtax_id_seq', 1, false); -- -- Name: itemtrans; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE itemtrans ( itemtrans_id integer NOT NULL, itemtrans_source_item_id integer, itemtrans_target_item_id integer ); ALTER TABLE public.itemtrans OWNER TO admin; -- -- Name: TABLE itemtrans; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE itemtrans IS 'Item Transformation information'; -- -- Name: itemtrans_itemtrans_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itemtrans_itemtrans_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.itemtrans_itemtrans_id_seq OWNER TO admin; -- -- Name: itemtrans_itemtrans_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE itemtrans_itemtrans_id_seq OWNED BY itemtrans.itemtrans_id; -- -- Name: itemtrans_itemtrans_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itemtrans_itemtrans_id_seq', 1, false); -- -- Name: itemuom; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE itemuom ( itemuom_id integer NOT NULL, itemuom_itemuomconv_id integer NOT NULL, itemuom_uomtype_id integer NOT NULL ); ALTER TABLE public.itemuom OWNER TO admin; -- -- Name: TABLE itemuom; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE itemuom IS 'A UOM type relation for a specific conversion.'; -- -- Name: itemuom_itemuom_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itemuom_itemuom_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.itemuom_itemuom_id_seq OWNER TO admin; -- -- Name: itemuom_itemuom_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE itemuom_itemuom_id_seq OWNED BY itemuom.itemuom_id; -- -- Name: itemuom_itemuom_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itemuom_itemuom_id_seq', 1, false); -- -- Name: itemuomconv_itemuomconv_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE itemuomconv_itemuomconv_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.itemuomconv_itemuomconv_id_seq OWNER TO admin; -- -- Name: itemuomconv_itemuomconv_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE itemuomconv_itemuomconv_id_seq OWNED BY itemuomconv.itemuomconv_id; -- -- Name: itemuomconv_itemuomconv_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('itemuomconv_itemuomconv_id_seq', 1, false); -- -- Name: journal_number_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE journal_number_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.journal_number_seq OWNER TO admin; -- -- Name: journal_number_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('journal_number_seq', 2274, true); -- -- Name: jrnluse; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE jrnluse ( jrnluse_id integer DEFAULT nextval(('"jrnluse_jrnluse_id_seq"'::text)::regclass) NOT NULL, jrnluse_date timestamp without time zone, jrnluse_number integer, jrnluse_use text ); ALTER TABLE public.jrnluse OWNER TO admin; -- -- Name: TABLE jrnluse; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE jrnluse IS 'Journal entry and use information'; -- -- Name: jrnluse_jrnluse_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE jrnluse_jrnluse_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.jrnluse_jrnluse_id_seq OWNER TO admin; -- -- Name: jrnluse_jrnluse_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('jrnluse_jrnluse_id_seq', 280, true); -- -- Name: labeldef; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE labeldef ( labeldef_id integer NOT NULL, labeldef_name text NOT NULL, labeldef_papersize text NOT NULL, labeldef_columns integer NOT NULL, labeldef_rows integer NOT NULL, labeldef_width integer NOT NULL, labeldef_height integer NOT NULL, labeldef_start_offset_x integer NOT NULL, labeldef_start_offset_y integer NOT NULL, labeldef_horizontal_gap integer NOT NULL, labeldef_vertical_gap integer NOT NULL ); ALTER TABLE public.labeldef OWNER TO admin; -- -- Name: labeldef_labeldef_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE labeldef_labeldef_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.labeldef_labeldef_id_seq OWNER TO admin; -- -- Name: labeldef_labeldef_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE labeldef_labeldef_id_seq OWNED BY labeldef.labeldef_id; -- -- Name: labeldef_labeldef_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('labeldef_labeldef_id_seq', 4, true); -- -- Name: labelform; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE labelform ( labelform_id integer DEFAULT nextval(('"labelform_labelform_id_seq"'::text)::regclass) NOT NULL, labelform_name text NOT NULL, labelform_report_id integer, labelform_perpage integer, labelform_report_name text, CONSTRAINT labelform_labelform_name_check CHECK ((labelform_name <> ''::text)) ); ALTER TABLE public.labelform OWNER TO admin; -- -- Name: TABLE labelform; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE labelform IS 'Label Form information'; -- -- Name: COLUMN labelform.labelform_report_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN labelform.labelform_report_id IS 'Obsolete -- reference labelform_report_name instead.'; -- -- Name: labelform_labelform_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE labelform_labelform_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.labelform_labelform_id_seq OWNER TO admin; -- -- Name: labelform_labelform_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('labelform_labelform_id_seq', 6, true); -- -- Name: lang; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE lang ( lang_id integer NOT NULL, lang_qt_number integer, lang_abbr3 text, lang_abbr2 text, lang_name text NOT NULL ); ALTER TABLE public.lang OWNER TO admin; -- -- Name: TABLE lang; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE lang IS 'Table mapping ISO 639-1 and 639-2 language codes to Qt''s enum QLocale::Language integer values. See http://www.loc.gov/standards/iso639-2/php/code_list.php and the QLocale documentation..'; -- -- Name: COLUMN lang.lang_abbr3; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN lang.lang_abbr3 IS 'ISO 639-2 code for language. Where there is a choice between bibliographic (B) and terminology (T) usage, this value is the T code'; -- -- Name: COLUMN lang.lang_abbr2; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN lang.lang_abbr2 IS 'ISO 639-1 code for language'; -- -- Name: COLUMN lang.lang_name; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN lang.lang_name IS 'Name of a human language, taken from the ISO 639-2 documentation'; -- -- Name: lang_lang_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE lang_lang_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.lang_lang_id_seq OWNER TO admin; -- -- Name: lang_lang_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE lang_lang_id_seq OWNED BY lang.lang_id; -- -- Name: lang_lang_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('lang_lang_id_seq', 499, true); -- -- Name: locale; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE locale ( locale_id integer DEFAULT nextval(('locale_locale_id_seq'::text)::regclass) NOT NULL, locale_code text NOT NULL, locale_descrip text, locale_lang_file text, locale_dateformat text, locale_currformat text, locale_qtyformat text, locale_comments text, locale_qtyperformat text, locale_salespriceformat text, locale_extpriceformat text, locale_timeformat text, locale_timestampformat text, local_costformat text, locale_costformat text, locale_purchpriceformat text, locale_uomratioformat text, locale_intervalformat text, locale_lang_id integer, locale_country_id integer, locale_error_color text, locale_warning_color text, locale_emphasis_color text, locale_altemphasis_color text, locale_expired_color text, locale_future_color text, locale_curr_scale integer, locale_salesprice_scale integer, locale_purchprice_scale integer, locale_extprice_scale integer, locale_cost_scale integer, locale_qty_scale integer, locale_qtyper_scale integer, locale_uomratio_scale integer, locale_percent_scale integer DEFAULT 2, locale_weight_scale integer DEFAULT 2 NOT NULL, CONSTRAINT locale_locale_code_check CHECK ((locale_code <> ''::text)) ); ALTER TABLE public.locale OWNER TO admin; -- -- Name: TABLE locale; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE locale IS 'The locale table holds information required to show data to the user in a localized format. Colors are either names documented by the WWW Consortium or RGB colors. Format for RGB colors is #RGB, #RRGGBB, or #RRRGGGBBB, where the letters R, G, and B stand for hexidecimal digits.'; -- -- Name: COLUMN locale.locale_lang_file; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_lang_file IS 'Deprecated'; -- -- Name: COLUMN locale.locale_dateformat; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_dateformat IS 'Deprecated'; -- -- Name: COLUMN locale.locale_currformat; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_currformat IS 'Deprecated'; -- -- Name: COLUMN locale.locale_qtyformat; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_qtyformat IS 'Deprecated'; -- -- Name: COLUMN locale.locale_qtyperformat; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_qtyperformat IS 'Deprecated'; -- -- Name: COLUMN locale.locale_salespriceformat; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_salespriceformat IS 'Deprecated'; -- -- Name: COLUMN locale.locale_extpriceformat; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_extpriceformat IS 'Deprecated'; -- -- Name: COLUMN locale.locale_timeformat; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_timeformat IS 'Deprecated'; -- -- Name: COLUMN locale.locale_timestampformat; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_timestampformat IS 'Deprecated'; -- -- Name: COLUMN locale.local_costformat; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.local_costformat IS 'Deprecated'; -- -- Name: COLUMN locale.locale_costformat; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_costformat IS 'Deprecated'; -- -- Name: COLUMN locale.locale_purchpriceformat; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_purchpriceformat IS 'Deprecated'; -- -- Name: COLUMN locale.locale_uomratioformat; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_uomratioformat IS 'Deprecated'; -- -- Name: COLUMN locale.locale_intervalformat; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_intervalformat IS 'Deprecated'; -- -- Name: COLUMN locale.locale_error_color; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_error_color IS 'Color to use to mark data that require immediate attention.'; -- -- Name: COLUMN locale.locale_warning_color; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_warning_color IS 'Color to use to mark data that require attention soon.'; -- -- Name: COLUMN locale.locale_emphasis_color; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_emphasis_color IS 'Color to use to mark data that need to stand out but are not in error.'; -- -- Name: COLUMN locale.locale_altemphasis_color; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_altemphasis_color IS 'Color to use to mark data that need to stand out and be differentiated from other emphasized data.'; -- -- Name: COLUMN locale.locale_expired_color; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_expired_color IS 'Color to use to mark data that are no longer current.'; -- -- Name: COLUMN locale.locale_future_color; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_future_color IS 'Color to use to mark data that will not be effective until some point in the future.'; -- -- Name: COLUMN locale.locale_curr_scale; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_curr_scale IS 'Number of decimal places to show when displaying Currency values.'; -- -- Name: COLUMN locale.locale_salesprice_scale; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_salesprice_scale IS 'Number of decimal places to show when displaying Sales Prices.'; -- -- Name: COLUMN locale.locale_purchprice_scale; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_purchprice_scale IS 'Number of decimal places to show when displaying Purchase Prices.'; -- -- Name: COLUMN locale.locale_extprice_scale; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_extprice_scale IS 'Number of decimal places to show when displaying Extended Prices.'; -- -- Name: COLUMN locale.locale_cost_scale; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_cost_scale IS 'Number of decimal places to show when displaying Costs.'; -- -- Name: COLUMN locale.locale_qty_scale; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_qty_scale IS 'Number of decimal places to show when displaying Quantities.'; -- -- Name: COLUMN locale.locale_qtyper_scale; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_qtyper_scale IS 'Number of decimal places to show when displaying Quantities Per.'; -- -- Name: COLUMN locale.locale_uomratio_scale; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN locale.locale_uomratio_scale IS 'Number of decimal places to show when displaying UOM Ratios.'; -- -- Name: locale_locale_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE locale_locale_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.locale_locale_id_seq OWNER TO admin; -- -- Name: locale_locale_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('locale_locale_id_seq', 29, true); -- -- Name: location_location_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE location_location_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.location_location_id_seq OWNER TO admin; -- -- Name: location_location_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('location_location_id_seq', 121, true); -- -- Name: locitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE locitem ( locitem_id integer DEFAULT nextval(('"locitem_locitem_id_seq"'::text)::regclass) NOT NULL, locitem_location_id integer, locitem_item_id integer ); ALTER TABLE public.locitem OWNER TO admin; -- -- Name: TABLE locitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE locitem IS 'Restricted Warehouse Location Allowable Items information'; -- -- Name: locitem_locitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE locitem_locitem_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.locitem_locitem_id_seq OWNER TO admin; -- -- Name: locitem_locitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('locitem_locitem_id_seq', 21, true); -- -- Name: log_log_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE log_log_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.log_log_id_seq OWNER TO admin; -- -- Name: log_log_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('log_log_id_seq', 747, true); -- -- Name: metric; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE metric ( metric_id integer DEFAULT nextval(('metric_metric_id_seq'::text)::regclass) NOT NULL, metric_name text NOT NULL, metric_value text, metric_module text, CONSTRAINT metric_metric_name_check CHECK ((metric_name <> ''::text)) ); ALTER TABLE public.metric OWNER TO admin; -- -- Name: TABLE metric; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE metric IS 'Application-wide settings information'; -- -- Name: metric_metric_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE metric_metric_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.metric_metric_id_seq OWNER TO admin; -- -- Name: metric_metric_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('metric_metric_id_seq', 300, true); -- -- Name: metricenc; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE metricenc ( metricenc_id integer NOT NULL, metricenc_name text NOT NULL, metricenc_value bytea, metricenc_module text, CONSTRAINT metricenc_metricenc_name_check CHECK ((metricenc_name <> ''::text)) ); ALTER TABLE public.metricenc OWNER TO admin; -- -- Name: TABLE metricenc; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE metricenc IS 'Application-wide settings information encrypted data'; -- -- Name: metricenc_metricenc_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE metricenc_metricenc_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.metricenc_metricenc_id_seq OWNER TO admin; -- -- Name: metricenc_metricenc_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE metricenc_metricenc_id_seq OWNED BY metricenc.metricenc_id; -- -- Name: metricenc_metricenc_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('metricenc_metricenc_id_seq', 1, false); -- -- Name: misc_index_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE misc_index_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.misc_index_seq OWNER TO admin; -- -- Name: misc_index_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('misc_index_seq', 1166, true); -- -- Name: mrghist; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE mrghist ( mrghist_cntct_id integer NOT NULL, mrghist_table text NOT NULL, mrghist_pkey_col text NOT NULL, mrghist_pkey_id integer NOT NULL, mrghist_cntct_col text NOT NULL ); ALTER TABLE public.mrghist OWNER TO admin; -- -- Name: mrgundo; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE mrgundo ( mrgundo_base_schema text, mrgundo_base_table text, mrgundo_base_id integer, mrgundo_schema text, mrgundo_table text, mrgundo_pkey_col text, mrgundo_pkey_id integer, mrgundo_col text, mrgundo_value text, mrgundo_type text ); ALTER TABLE public.mrgundo OWNER TO admin; -- -- Name: TABLE mrgundo; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE mrgundo IS 'This table keeps track of the original values of changes made while merging two records. It is a generalization of mrghist and trgthist, which are specific to merging contacts. The schema, table, and pkey_id columns uniquely identify the record that was changed while the _base_ columns identify the merge target. The _base_ columns are required to allow finding all of the records that pertain to a particular merge (e.g. find changes to the comment table that pertain to a crmacct merge).'; -- -- Name: COLUMN mrgundo.mrgundo_base_schema; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN mrgundo.mrgundo_base_schema IS 'The schema in which the merge target resides.'; -- -- Name: COLUMN mrgundo.mrgundo_base_table; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN mrgundo.mrgundo_base_table IS 'The table in which the merge target resides.'; -- -- Name: COLUMN mrgundo.mrgundo_base_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN mrgundo.mrgundo_base_id IS 'The internal id of the merge target record.'; -- -- Name: COLUMN mrgundo.mrgundo_schema; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN mrgundo.mrgundo_schema IS 'The name of the schema in which the modified table resides.'; -- -- Name: COLUMN mrgundo.mrgundo_table; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN mrgundo.mrgundo_table IS 'The name of the table that was modified during a merge.'; -- -- Name: COLUMN mrgundo.mrgundo_pkey_col; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN mrgundo.mrgundo_pkey_col IS 'The name of the primary key column in the modified table. This could be derived during the undo processing but it is simpler just to store it during the merge.'; -- -- Name: COLUMN mrgundo.mrgundo_pkey_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN mrgundo.mrgundo_pkey_id IS 'The primary key of the modified record.'; -- -- Name: COLUMN mrgundo.mrgundo_col; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN mrgundo.mrgundo_col IS 'The column that was modified.'; -- -- Name: COLUMN mrgundo.mrgundo_value; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN mrgundo.mrgundo_value IS 'The value of the column before the change.'; -- -- Name: COLUMN mrgundo.mrgundo_type; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN mrgundo.mrgundo_type IS 'The data type of the modified column. This could be derived during the undo processing but it is simpler just to store it during the merge.'; -- -- Name: msg; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE msg ( msg_id integer DEFAULT nextval(('"msg_msg_id_seq"'::text)::regclass) NOT NULL, msg_posted timestamp with time zone, msg_scheduled timestamp with time zone, msg_text text, msg_expires timestamp with time zone, msg_username text ); ALTER TABLE public.msg OWNER TO admin; -- -- Name: TABLE msg; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE msg IS 'System Message information'; -- -- Name: msg_msg_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE msg_msg_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.msg_msg_id_seq OWNER TO admin; -- -- Name: msg_msg_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('msg_msg_id_seq', 16, true); -- -- Name: msguser; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE msguser ( msguser_id integer DEFAULT nextval(('"msguser_msguser_id_seq"'::text)::regclass) NOT NULL, msguser_msg_id integer, msguser_viewed timestamp with time zone, msguser_username text ); ALTER TABLE public.msguser OWNER TO admin; -- -- Name: TABLE msguser; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE msguser IS 'System Message user information'; -- -- Name: msguser_msguser_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE msguser_msguser_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.msguser_msguser_id_seq OWNER TO admin; -- -- Name: msguser_msguser_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('msguser_msguser_id_seq', 12, true); -- -- Name: nvend_nvend_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE nvend_nvend_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.nvend_nvend_id_seq OWNER TO admin; -- -- Name: nvend_nvend_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('nvend_nvend_id_seq', 1, false); -- -- Name: obsolete_tax; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE obsolete_tax ( tax_id integer DEFAULT nextval(('"tax_tax_id_seq"'::text)::regclass) NOT NULL, tax_code text, tax_descrip text, tax_ratea numeric(8,4), tax_sales_accnt_id integer, tax_freight boolean DEFAULT false NOT NULL, tax_cumulative boolean DEFAULT false NOT NULL, tax_rateb numeric(8,4), tax_salesb_accnt_id integer, tax_ratec numeric(8,4), tax_salesc_accnt_id integer ); ALTER TABLE public.obsolete_tax OWNER TO admin; -- -- Name: TABLE obsolete_tax; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE obsolete_tax IS 'Tax information. Obsolete table structure.'; -- -- Name: COLUMN obsolete_tax.tax_freight; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN obsolete_tax.tax_freight IS 'Deprecated in 2.1 and moved to taxsel table where taxtype is the system defined Freight.'; -- -- Name: ophead_ophead_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE ophead_ophead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.ophead_ophead_id_seq OWNER TO admin; -- -- Name: ophead_ophead_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE ophead_ophead_id_seq OWNED BY ophead.ophead_id; -- -- Name: ophead_ophead_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('ophead_ophead_id_seq', 1, true); -- -- Name: opsource; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE opsource ( opsource_id integer NOT NULL, opsource_name text NOT NULL, opsource_descrip text, CONSTRAINT opsource_opsource_name_check CHECK ((opsource_name <> ''::text)) ); ALTER TABLE public.opsource OWNER TO admin; -- -- Name: TABLE opsource; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE opsource IS 'Opportunity Lead Source values.'; -- -- Name: opsource_opsource_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE opsource_opsource_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.opsource_opsource_id_seq OWNER TO admin; -- -- Name: opsource_opsource_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE opsource_opsource_id_seq OWNED BY opsource.opsource_id; -- -- Name: opsource_opsource_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('opsource_opsource_id_seq', 1, false); -- -- Name: opstage; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE opstage ( opstage_id integer NOT NULL, opstage_name text NOT NULL, opstage_descrip text, opstage_order integer DEFAULT 0 NOT NULL, opstage_opinactive boolean DEFAULT false, CONSTRAINT opstage_opstage_name_check CHECK ((opstage_name <> ''::text)) ); ALTER TABLE public.opstage OWNER TO admin; -- -- Name: TABLE opstage; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE opstage IS 'Opportunity stage values.'; -- -- Name: opstage_opstage_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE opstage_opstage_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.opstage_opstage_id_seq OWNER TO admin; -- -- Name: opstage_opstage_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE opstage_opstage_id_seq OWNED BY opstage.opstage_id; -- -- Name: opstage_opstage_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('opstage_opstage_id_seq', 1, false); -- -- Name: optype; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE optype ( optype_id integer NOT NULL, optype_name text NOT NULL, optype_descrip text, CONSTRAINT optype_optype_name_check CHECK ((optype_name <> ''::text)) ); ALTER TABLE public.optype OWNER TO admin; -- -- Name: TABLE optype; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE optype IS 'Opportunity Type values.'; -- -- Name: optype_optype_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE optype_optype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.optype_optype_id_seq OWNER TO admin; -- -- Name: optype_optype_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE optype_optype_id_seq OWNED BY optype.optype_id; -- -- Name: optype_optype_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('optype_optype_id_seq', 1, false); -- -- Name: orderhead; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW orderhead AS SELECT DISTINCT data.orderhead_id, data.orderhead_type, data.orderhead_number, data.orderhead_status, data.orderhead_orderdate, data.orderhead_linecount, data.orderhead_from_id, data.orderhead_from, data.orderhead_to_id, data.orderhead_to, data.orderhead_curr_id, data.orderhead_agent_username, data.orderhead_shipvia FROM (SELECT pohead.pohead_id AS orderhead_id, 'PO'::text AS orderhead_type, pohead.pohead_number AS orderhead_number, pohead.pohead_status AS orderhead_status, pohead.pohead_orderdate AS orderhead_orderdate, (SELECT count(*) AS count FROM poitem WHERE (poitem.poitem_pohead_id = pohead.pohead_id)) AS orderhead_linecount, pohead.pohead_vend_id AS orderhead_from_id, vendinfo.vend_name AS orderhead_from, NULL::integer AS orderhead_to_id, ''::text AS orderhead_to, pohead.pohead_curr_id AS orderhead_curr_id, pohead.pohead_agent_username AS orderhead_agent_username, pohead.pohead_shipvia AS orderhead_shipvia FROM (pohead LEFT JOIN vendinfo ON ((pohead.pohead_vend_id = vendinfo.vend_id))) UNION ALL SELECT cohead.cohead_id AS orderhead_id, 'SO'::text AS orderhead_type, cohead.cohead_number AS orderhead_number, cohead.cohead_status AS orderhead_status, cohead.cohead_orderdate AS orderhead_orderdate, (SELECT count(*) AS count FROM coitem WHERE (coitem.coitem_cohead_id = cohead.cohead_id)) AS orderhead_linecount, NULL::unknown AS orderhead_from_id, ''::text AS orderhead_from, cohead.cohead_cust_id AS orderhead_to_id, CASE WHEN (length(cohead.cohead_shiptoname) > 0) THEN cohead.cohead_shiptoname ELSE cohead.cohead_billtoname END AS orderhead_to, cohead.cohead_curr_id AS orderhead_curr_id, ''::text AS orderhead_agent_username, cohead.cohead_shipvia AS orderhead_shipvia FROM cohead) data; ALTER TABLE public.orderhead OWNER TO admin; -- -- Name: VIEW orderhead; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON VIEW orderhead IS 'Union of all orders for use by widgets and stored procedures which process multiple types of order'; -- -- Name: orderitem; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW orderitem AS (SELECT poitem.poitem_id AS orderitem_id, 'PO' AS orderitem_orderhead_type, poitem.poitem_pohead_id AS orderitem_orderhead_id, poitem.poitem_linenumber AS orderitem_linenumber, poitem.poitem_status AS orderitem_status, poitem.poitem_itemsite_id AS orderitem_itemsite_id, poitem.poitem_duedate AS orderitem_scheddate, poitem.poitem_qty_ordered AS orderitem_qty_ordered, poitem.poitem_qty_returned AS orderitem_qty_shipped, poitem.poitem_qty_received AS orderitem_qty_received, uom.uom_id AS orderitem_qty_uom_id, poitem.poitem_invvenduomratio AS orderitem_qty_invuomratio, poitem.poitem_unitprice AS orderitem_unitcost, pohead.pohead_curr_id AS orderitem_unitcost_curr_id, poitem.poitem_freight AS orderitem_freight, poitem.poitem_freight_received AS orderitem_freight_received, pohead.pohead_curr_id AS orderitem_freight_curr_id FROM ((poitem LEFT JOIN pohead ON ((poitem.poitem_pohead_id = pohead.pohead_id))) LEFT JOIN uom ON ((uom.uom_name = poitem.poitem_vend_uom))) UNION ALL SELECT coitem.coitem_id AS orderitem_id, 'SO' AS orderitem_orderhead_type, coitem.coitem_cohead_id AS orderitem_orderhead_id, coitem.coitem_linenumber AS orderitem_linenumber, coitem.coitem_status AS orderitem_status, coitem.coitem_itemsite_id AS orderitem_itemsite_id, coitem.coitem_scheddate AS orderitem_scheddate, coitem.coitem_qtyord AS orderitem_qty_ordered, coitem.coitem_qtyshipped AS orderitem_qty_shipped, coitem.coitem_qtyreturned AS orderitem_qty_received, coitem.coitem_qty_uom_id AS orderitem_qty_uom_id, coitem.coitem_qty_invuomratio AS orderitem_qty_invuomratio, coitem.coitem_unitcost AS orderitem_unitcost, basecurrid() AS orderitem_unitcost_curr_id, NULL::unknown AS orderitem_freight, NULL::unknown AS orderitem_freight_received, basecurrid() AS orderitem_freight_curr_id FROM coitem) UNION ALL SELECT quitem.quitem_id AS orderitem_id, 'QU' AS orderitem_orderhead_type, quitem.quitem_quhead_id AS orderitem_orderhead_id, quitem.quitem_linenumber AS orderitem_linenumber, 'O' AS orderitem_status, quitem.quitem_itemsite_id AS orderitem_itemsite_id, quitem.quitem_scheddate AS orderitem_scheddate, quitem.quitem_qtyord AS orderitem_qty_ordered, 0 AS orderitem_qty_shipped, 0 AS orderitem_qty_received, quitem.quitem_qty_uom_id AS orderitem_qty_uom_id, quitem.quitem_qty_invuomratio AS orderitem_qty_invuomratio, quitem.quitem_unitcost AS orderitem_unitcost, basecurrid() AS orderitem_unitcost_curr_id, NULL::unknown AS orderitem_freight, NULL::unknown AS orderitem_freight_received, basecurrid() AS orderitem_freight_curr_id FROM quitem; ALTER TABLE public.orderitem OWNER TO admin; -- -- Name: VIEW orderitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON VIEW orderitem IS 'Union of all order line items for use by widgets and stored procedures which process multiple types of order'; -- -- Name: orderseq; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE orderseq ( orderseq_id integer DEFAULT nextval(('orderseq_orderseq_id_seq'::text)::regclass) NOT NULL, orderseq_name text NOT NULL, orderseq_number integer, orderseq_table text, orderseq_numcol text, orderseq_seqiss seqiss[], CONSTRAINT orderseq_orderseq_name_check CHECK ((orderseq_name <> ''::text)) ); ALTER TABLE public.orderseq OWNER TO admin; -- -- Name: TABLE orderseq; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE orderseq IS 'Configuration information for common numbering sequences'; -- -- Name: orderseq_orderseq_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE orderseq_orderseq_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.orderseq_orderseq_id_seq OWNER TO admin; -- -- Name: orderseq_orderseq_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('orderseq_orderseq_id_seq', 23, true); -- -- Name: pack; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE pack ( pack_id integer NOT NULL, pack_head_id integer NOT NULL, pack_head_type text NOT NULL, pack_shiphead_id integer, pack_printed boolean DEFAULT false NOT NULL, CONSTRAINT pack_pack_head_type_check CHECK (((pack_head_type = 'SO'::text) OR (pack_head_type = 'TO'::text))) ); ALTER TABLE public.pack OWNER TO admin; -- -- Name: TABLE pack; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE pack IS 'Temporary table for storing information about Orders added to the Packing List Batch'; -- -- Name: pack_pack_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE pack_pack_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.pack_pack_id_seq OWNER TO admin; -- -- Name: pack_pack_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE pack_pack_id_seq OWNED BY pack.pack_id; -- -- Name: pack_pack_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('pack_pack_id_seq', 1, true); -- -- Name: payaropen; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE payaropen ( payaropen_ccpay_id integer NOT NULL, payaropen_aropen_id integer NOT NULL, payaropen_amount numeric(20,2) DEFAULT 0.00 NOT NULL, payaropen_curr_id integer DEFAULT basecurrid() ); ALTER TABLE public.payaropen OWNER TO admin; -- -- Name: TABLE payaropen; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE payaropen IS 'Credit Card payment to credit memo join table'; -- -- Name: payco; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE payco ( payco_ccpay_id integer NOT NULL, payco_cohead_id integer NOT NULL, payco_amount numeric(20,2) DEFAULT 0.00 NOT NULL, payco_curr_id integer DEFAULT basecurrid() ); ALTER TABLE public.payco OWNER TO admin; -- -- Name: TABLE payco; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE payco IS 'Credit Card payment to sales order join table'; -- -- Name: period_period_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE period_period_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.period_period_id_seq OWNER TO admin; -- -- Name: period_period_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE period_period_id_seq OWNED BY period.period_id; -- -- Name: period_period_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('period_period_id_seq', 123, true); -- -- Name: pkgdep; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE pkgdep ( pkgdep_id integer NOT NULL, pkgdep_pkghead_id integer NOT NULL, pkgdep_parent_pkghead_id integer NOT NULL ); ALTER TABLE public.pkgdep OWNER TO admin; -- -- Name: TABLE pkgdep; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE pkgdep IS 'Package Dependencies list describing which packages are dependent on which other packages.'; -- -- Name: COLUMN pkgdep.pkgdep_pkghead_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN pkgdep.pkgdep_pkghead_id IS 'This is the internal ID of a package which requires at least one other package to be installed first to operate successfully'; -- -- Name: COLUMN pkgdep.pkgdep_parent_pkghead_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN pkgdep.pkgdep_parent_pkghead_id IS 'This is the internal ID of a package which must be installed for the package pointed to by pkgdep_pkghead_id to operate successfully.'; -- -- Name: pkgdep_pkgdep_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE pkgdep_pkgdep_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.pkgdep_pkgdep_id_seq OWNER TO admin; -- -- Name: pkgdep_pkgdep_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE pkgdep_pkgdep_id_seq OWNED BY pkgdep.pkgdep_id; -- -- Name: pkgdep_pkgdep_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('pkgdep_pkgdep_id_seq', 1, true); -- -- Name: pkghead; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE pkghead ( pkghead_id integer NOT NULL, pkghead_name text NOT NULL, pkghead_descrip text, pkghead_version text NOT NULL, pkghead_developer text NOT NULL, pkghead_notes text, pkghead_created timestamp with time zone, pkghead_updated timestamp with time zone, pkghead_indev boolean DEFAULT false NOT NULL, CONSTRAINT pkghead_pkghead_name_check CHECK ((pkghead_name <> ''::text)) ); ALTER TABLE public.pkghead OWNER TO admin; -- -- Name: TABLE pkghead; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE pkghead IS 'Information about non-core Packages added to the database'; -- -- Name: COLUMN pkghead.pkghead_indev; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN pkghead.pkghead_indev IS 'Flag indicating whether the contents of this package may be modified in-place - this package is /in dev/elopment.'; -- -- Name: pkghead_pkghead_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE pkghead_pkghead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.pkghead_pkghead_id_seq OWNER TO admin; -- -- Name: pkghead_pkghead_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE pkghead_pkghead_id_seq OWNED BY pkghead.pkghead_id; -- -- Name: pkghead_pkghead_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('pkghead_pkghead_id_seq', 7, true); -- -- Name: pkgitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE pkgitem ( pkgitem_id integer NOT NULL, pkgitem_pkghead_id integer, pkgitem_type text, pkgitem_item_id integer NOT NULL, pkgitem_name text NOT NULL, pkgitem_descrip text, CONSTRAINT pkgitem_pkgitem_type_check CHECK (((((((((((((pkgitem_type = 'C'::text) OR (pkgitem_type = 'D'::text)) OR (pkgitem_type = 'F'::text)) OR (pkgitem_type = 'G'::text)) OR (pkgitem_type = 'I'::text)) OR (pkgitem_type = 'M'::text)) OR (pkgitem_type = 'P'::text)) OR (pkgitem_type = 'R'::text)) OR (pkgitem_type = 'S'::text)) OR (pkgitem_type = 'T'::text)) OR (pkgitem_type = 'U'::text)) OR (pkgitem_type = 'V'::text))) ); ALTER TABLE public.pkgitem OWNER TO admin; -- -- Name: TABLE pkgitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE pkgitem IS 'Deprecated - the pkgitem table is no longer used to track package contents. It has been replaced by direct queries to the database schema and component tables. This table will be removed when all users have switched to Updater 2.2.0 or later.'; -- -- Name: pkgitem_pkgitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE pkgitem_pkgitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.pkgitem_pkgitem_id_seq OWNER TO admin; -- -- Name: pkgitem_pkgitem_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE pkgitem_pkgitem_id_seq OWNED BY pkgitem.pkgitem_id; -- -- Name: pkgitem_pkgitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('pkgitem_pkgitem_id_seq', 1, false); -- -- Name: plancode_plancode_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE plancode_plancode_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.plancode_plancode_id_seq OWNER TO admin; -- -- Name: plancode_plancode_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('plancode_plancode_id_seq', 26, true); -- -- Name: planord_planord_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE planord_planord_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.planord_planord_id_seq OWNER TO admin; -- -- Name: planord_planord_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('planord_planord_id_seq', 1022, true); -- -- Name: pohead_pohead_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE pohead_pohead_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.pohead_pohead_id_seq OWNER TO admin; -- -- Name: pohead_pohead_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('pohead_pohead_id_seq', 344, true); -- -- Name: poitem_poitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE poitem_poitem_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.poitem_poitem_id_seq OWNER TO admin; -- -- Name: poitem_poitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('poitem_poitem_id_seq', 426, true); -- -- Name: recv; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE recv ( recv_id integer NOT NULL, recv_order_type text NOT NULL, recv_order_number text NOT NULL, recv_orderitem_id integer NOT NULL, recv_agent_username text, recv_itemsite_id integer, recv_vend_id integer, recv_vend_item_number text, recv_vend_item_descrip text, recv_vend_uom text, recv_purchcost numeric(16,6), recv_purchcost_curr_id integer, recv_duedate date, recv_qty numeric(18,6), recv_recvcost numeric(16,6), recv_recvcost_curr_id integer, recv_freight numeric(16,4), recv_freight_curr_id integer, recv_date timestamp with time zone, recv_value numeric(18,6), recv_posted boolean DEFAULT false NOT NULL, recv_invoiced boolean DEFAULT false NOT NULL, recv_vohead_id integer, recv_voitem_id integer, recv_trans_usr_name text DEFAULT geteffectivextuser() NOT NULL, recv_notes text, recv_gldistdate date, recv_splitfrom_id integer, recv_rlsd_duedate date, CONSTRAINT recv_recv_order_type_check CHECK ((((recv_order_type = 'PO'::text) OR (recv_order_type = 'RA'::text)) OR (recv_order_type = 'TO'::text))) ); ALTER TABLE public.recv OWNER TO admin; -- -- Name: TABLE recv; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE recv IS 'Information about Received Orders.'; -- -- Name: porecv; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW porecv AS SELECT recv.recv_id AS porecv_id, recv.recv_date AS porecv_date, recv.recv_rlsd_duedate AS porecv_rlsd_duedate, pohead.pohead_orderdate AS porecv_orderdate, pohead.pohead_released AS porecv_released, recv.recv_order_number AS porecv_ponumber, recv.recv_itemsite_id AS porecv_itemsite_id, recv.recv_vend_id AS porecv_vend_id, item.item_number AS porecv_item_number, recv.recv_vend_item_number AS porecv_vend_item_number, COALESCE(item.item_descrip1, recv.recv_vend_item_descrip) AS porecv_vend_item_descrip, recv.recv_vend_uom AS porecv_vend_uom, recv.recv_qty AS porecv_qty, recv.recv_posted AS porecv_posted, recv.recv_invoiced AS porecv_invoiced, (pg_user.usesysid)::integer AS porecv_trans_usr_id, recv.recv_orderitem_id AS porecv_poitem_id, NULL::integer AS porecv_linenumber, recv.recv_purchcost AS porecv_purchcost, recv.recv_vohead_id AS porecv_vohead_id, recv.recv_recvcost AS porecv_recvcost, recv.recv_duedate AS porecv_duedate, recv.recv_agent_username AS porecv_agent_username, recv.recv_notes AS porecv_notes, recv.recv_freight AS porecv_freight, recv.recv_freight_curr_id AS porecv_curr_id, recv.recv_gldistdate AS porecv_gldistdate, recv.recv_voitem_id AS porecv_voitem_id, recv.recv_value AS porecv_value FROM ((((recv LEFT JOIN pg_user ON ((recv.recv_trans_usr_name = (pg_user.usename)::text))) LEFT JOIN pohead ON ((recv.recv_order_number = pohead.pohead_number))) LEFT JOIN itemsite ON ((recv.recv_itemsite_id = itemsite.itemsite_id))) LEFT JOIN item ON ((itemsite.itemsite_item_id = item.item_id))) WHERE (recv.recv_order_type = 'PO'::text); ALTER TABLE public.porecv OWNER TO admin; -- -- Name: porecv_porecv_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE porecv_porecv_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.porecv_porecv_id_seq OWNER TO admin; -- -- Name: porecv_porecv_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('porecv_porecv_id_seq', 127, true); -- -- Name: poreject; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE poreject ( poreject_id integer DEFAULT nextval(('"poreject_poreject_id_seq"'::text)::regclass) NOT NULL, poreject_date timestamp with time zone, poreject_ponumber text, poreject_itemsite_id integer, poreject_vend_id integer, poreject_vend_item_number text, poreject_vend_item_descrip text, poreject_vend_uom text, poreject_qty numeric(18,6), poreject_posted boolean, poreject_rjctcode_id integer, poreject_poitem_id integer, poreject_invoiced boolean, poreject_vohead_id integer, poreject_agent_username text, poreject_voitem_id integer, poreject_value numeric(18,6), poreject_trans_username text, poreject_recv_id integer ); ALTER TABLE public.poreject OWNER TO admin; -- -- Name: TABLE poreject; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE poreject IS 'The poreject table describes Purchase Order Items that were returned to Vendors.'; -- -- Name: COLUMN poreject.poreject_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN poreject.poreject_id IS 'This is the internal id of this poreject record'; -- -- Name: COLUMN poreject.poreject_date; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN poreject.poreject_date IS 'This is the date and time the return was entered into the database'; -- -- Name: COLUMN poreject.poreject_ponumber; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN poreject.poreject_ponumber IS 'This is the number of the original Purchase Order of this item'; -- -- Name: COLUMN poreject.poreject_itemsite_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN poreject.poreject_itemsite_id IS 'This is the Item Site into which the item had been received'; -- -- Name: COLUMN poreject.poreject_vend_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN poreject.poreject_vend_id IS 'This is the Vendor from which the item had been purchased'; -- -- Name: COLUMN poreject.poreject_vend_item_number; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN poreject.poreject_vend_item_number IS 'This is the Vendor''s item number for this item'; -- -- Name: COLUMN poreject.poreject_vend_item_descrip; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN poreject.poreject_vend_item_descrip IS 'This is the Vendor''s description of this item'; -- -- Name: COLUMN poreject.poreject_vend_uom; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN poreject.poreject_vend_uom IS 'This is the Unit of Measure in which the Vendor sold this item'; -- -- Name: COLUMN poreject.poreject_qty; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN poreject.poreject_qty IS 'This is the quantity of the item that was returned'; -- -- Name: COLUMN poreject.poreject_posted; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN poreject.poreject_posted IS 'This indicates whether or not the return has been recorded in the General Ledger, Inventory History, and Purchase Order Item'; -- -- Name: COLUMN poreject.poreject_rjctcode_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN poreject.poreject_rjctcode_id IS 'This indicates the reason for the return'; -- -- Name: COLUMN poreject.poreject_poitem_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN poreject.poreject_poitem_id IS 'This is the internal id of the original Purchase Order Item'; -- -- Name: COLUMN poreject.poreject_invoiced; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN poreject.poreject_invoiced IS 'This indicates whether the Credit Memo associated with the return has been posted'; -- -- Name: COLUMN poreject.poreject_vohead_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN poreject.poreject_vohead_id IS 'This is the Voucher associated with the Purchase Order Item'; -- -- Name: COLUMN poreject.poreject_agent_username; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN poreject.poreject_agent_username IS 'This is the Purchase Order Agent responsible for the original Purchase Order'; -- -- Name: COLUMN poreject.poreject_voitem_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN poreject.poreject_voitem_id IS 'This is the Voucher Item associated with the Purchase Order Item'; -- -- Name: COLUMN poreject.poreject_value; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN poreject.poreject_value IS 'This is the value (in base currency) of the return at the time it was posted to the General Ledger'; -- -- Name: COLUMN poreject.poreject_trans_username; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN poreject.poreject_trans_username IS 'This is the user who recorded the return'; -- -- Name: poreject_poreject_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE poreject_poreject_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.poreject_poreject_id_seq OWNER TO admin; -- -- Name: poreject_poreject_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('poreject_poreject_id_seq', 41, true); -- -- Name: potype; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE potype ( potype_id integer NOT NULL, potype_name text, potype_descrip text ); ALTER TABLE public.potype OWNER TO admin; -- -- Name: TABLE potype; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE potype IS 'Purchase Order Type information'; -- -- Name: potype_potype_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE potype_potype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.potype_potype_id_seq OWNER TO admin; -- -- Name: potype_potype_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE potype_potype_id_seq OWNED BY potype.potype_id; -- -- Name: potype_potype_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('potype_potype_id_seq', 1, false); -- -- Name: pr; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE pr ( pr_id integer DEFAULT nextval(('"pr_pr_id_seq"'::text)::regclass) NOT NULL, pr_number integer, pr_subnumber integer, pr_status character(1), pr_order_type character(1), pr_order_id integer, pr_poitem_id integer, pr_duedate date, pr_itemsite_id integer, pr_qtyreq numeric(18,6), pr_prj_id integer, pr_releasenote text, pr_createdate timestamp without time zone DEFAULT now() ); ALTER TABLE public.pr OWNER TO admin; -- -- Name: TABLE pr; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE pr IS 'Purchase Request information'; -- -- Name: pr_pr_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE pr_pr_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.pr_pr_id_seq OWNER TO admin; -- -- Name: pr_pr_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('pr_pr_id_seq', 185, true); -- -- Name: prftcntr; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE prftcntr ( prftcntr_id integer NOT NULL, prftcntr_number text NOT NULL, prftcntr_descrip text, CONSTRAINT prftcntr_prftcntr_number_check CHECK ((prftcntr_number <> ''::text)) ); ALTER TABLE public.prftcntr OWNER TO admin; -- -- Name: TABLE prftcntr; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE prftcntr IS 'Profit Center information'; -- -- Name: prftcntr_prftcntr_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE prftcntr_prftcntr_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.prftcntr_prftcntr_id_seq OWNER TO admin; -- -- Name: prftcntr_prftcntr_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE prftcntr_prftcntr_id_seq OWNED BY prftcntr.prftcntr_id; -- -- Name: prftcntr_prftcntr_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('prftcntr_prftcntr_id_seq', 1, true); -- -- Name: usrgrp; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE usrgrp ( usrgrp_id integer NOT NULL, usrgrp_grp_id integer NOT NULL, usrgrp_username text NOT NULL ); ALTER TABLE public.usrgrp OWNER TO admin; -- -- Name: TABLE usrgrp; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE usrgrp IS 'This is which group a user belongs to.'; -- -- Name: usrpriv; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE usrpriv ( usrpriv_id integer DEFAULT nextval(('usrpriv_usrpriv_id_seq'::text)::regclass) NOT NULL, usrpriv_priv_id integer, usrpriv_username text ); ALTER TABLE public.usrpriv OWNER TO admin; -- -- Name: TABLE usrpriv; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE usrpriv IS 'User Privileges information'; -- -- Name: privgranted; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW privgranted AS SELECT priv.priv_name AS privilege, (COALESCE(usrpriv.usrpriv_priv_id, grppriv.grppriv_priv_id, (-1)) > 0) AS granted, priv.priv_seq AS sequence FROM ((priv LEFT JOIN usrpriv ON (((priv.priv_id = usrpriv.usrpriv_priv_id) AND (usrpriv.usrpriv_username = geteffectivextuser())))) LEFT JOIN (SELECT DISTINCT grppriv.grppriv_priv_id FROM (grppriv JOIN usrgrp ON (((grppriv.grppriv_grp_id = usrgrp.usrgrp_grp_id) AND (usrgrp.usrgrp_username = geteffectivextuser()))))) grppriv ON ((grppriv.grppriv_priv_id = priv.priv_id))); ALTER TABLE public.privgranted OWNER TO admin; -- -- Name: prj_prj_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE prj_prj_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.prj_prj_id_seq OWNER TO admin; -- -- Name: prj_prj_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE prj_prj_id_seq OWNED BY prj.prj_id; -- -- Name: prj_prj_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('prj_prj_id_seq', 1, true); -- -- Name: prjtask_prjtask_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE prjtask_prjtask_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.prjtask_prjtask_id_seq OWNER TO admin; -- -- Name: prjtask_prjtask_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE prjtask_prjtask_id_seq OWNED BY prjtask.prjtask_id; -- -- Name: prjtask_prjtask_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('prjtask_prjtask_id_seq', 1, false); -- -- Name: prjtaskuser; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE prjtaskuser ( prjtaskuser_id integer NOT NULL, prjtaskuser_prjtask_id integer, prjtaskuser_username text ); ALTER TABLE public.prjtaskuser OWNER TO admin; -- -- Name: TABLE prjtaskuser; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE prjtaskuser IS 'Project Task user information'; -- -- Name: prjtaskuser_prjtaskuser_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE prjtaskuser_prjtaskuser_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.prjtaskuser_prjtaskuser_id_seq OWNER TO admin; -- -- Name: prjtaskuser_prjtaskuser_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE prjtaskuser_prjtaskuser_id_seq OWNED BY prjtaskuser.prjtaskuser_id; -- -- Name: prjtaskuser_prjtaskuser_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('prjtaskuser_prjtaskuser_id_seq', 1, false); -- -- Name: prodcat_prodcat_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE prodcat_prodcat_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.prodcat_prodcat_id_seq OWNER TO admin; -- -- Name: prodcat_prodcat_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('prodcat_prodcat_id_seq', 30, true); -- -- Name: qryhead; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE qryhead ( qryhead_id integer NOT NULL, qryhead_name text NOT NULL, qryhead_descrip text, qryhead_notes text, qryhead_username text DEFAULT geteffectivextuser() NOT NULL, qryhead_updated date DEFAULT ('now'::text)::date NOT NULL, CONSTRAINT qryhead_qryhead_name_check CHECK ((qryhead_name <> ''::text)) ); ALTER TABLE public.qryhead OWNER TO admin; -- -- Name: TABLE qryhead; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE qryhead IS 'A header record for a set of queries to be run sequentially. One use is for data export.'; -- -- Name: COLUMN qryhead.qryhead_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN qryhead.qryhead_id IS 'The primary key, holding an internal value used to cross-reference this table.'; -- -- Name: COLUMN qryhead.qryhead_name; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN qryhead.qryhead_name IS 'The user-assigned short name for this set of queries.'; -- -- Name: COLUMN qryhead.qryhead_descrip; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN qryhead.qryhead_descrip IS 'A long description of the purpose of this set of queries.'; -- -- Name: COLUMN qryhead.qryhead_notes; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN qryhead.qryhead_notes IS 'General information about this queryset.'; -- -- Name: COLUMN qryhead.qryhead_username; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN qryhead.qryhead_username IS 'The name of the user who last modified this qryhead record.'; -- -- Name: COLUMN qryhead.qryhead_updated; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN qryhead.qryhead_updated IS 'The date this qryhead was last modified.'; -- -- Name: qryhead_qryhead_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE qryhead_qryhead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.qryhead_qryhead_id_seq OWNER TO admin; -- -- Name: qryhead_qryhead_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE qryhead_qryhead_id_seq OWNED BY qryhead.qryhead_id; -- -- Name: qryhead_qryhead_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('qryhead_qryhead_id_seq', 1, false); -- -- Name: qryitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE qryitem ( qryitem_id integer NOT NULL, qryitem_qryhead_id integer NOT NULL, qryitem_name text NOT NULL, qryitem_order integer NOT NULL, qryitem_src text NOT NULL, qryitem_group text, qryitem_detail text NOT NULL, qryitem_notes text DEFAULT ''::text NOT NULL, qryitem_username text DEFAULT geteffectivextuser() NOT NULL, qryitem_updated date DEFAULT ('now'::text)::date NOT NULL, CONSTRAINT qryitem_qryitem_detail_check CHECK ((btrim(qryitem_detail) <> ''::text)), CONSTRAINT qryitem_qryitem_src_check CHECK ((qryitem_src = ANY (ARRAY['REL'::text, 'MQL'::text, 'CUSTOM'::text]))) ); ALTER TABLE public.qryitem OWNER TO admin; -- -- Name: TABLE qryitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE qryitem IS 'The description of a query to be run as part of a set (see qryhead).'; -- -- Name: COLUMN qryitem.qryitem_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN qryitem.qryitem_id IS 'The primary key, holding an internal value used to cross-reference this table.'; -- -- Name: COLUMN qryitem.qryitem_qryhead_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN qryitem.qryitem_qryhead_id IS 'The primary key of the query set to which this individual query belongs.'; -- -- Name: COLUMN qryitem.qryitem_order; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN qryitem.qryitem_order IS 'The order in which query items within a query set should be run.'; -- -- Name: COLUMN qryitem.qryitem_src; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN qryitem.qryitem_src IS 'The source of the query. If the qryitem_src is "REL" then the qryitem_group and _detail name a particular table or view and all rows will be returned. If the source is "MQL" then the qryitem_group and _detail name a pre-defined MetaSQL query in the metasql table. If the source is "CUSTOM" then the qryitem_detail contains the full MetaSQL text of the query to run.'; -- -- Name: COLUMN qryitem.qryitem_group; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN qryitem.qryitem_group IS 'Information to help find the query to run. If the qryitem_src is "REL" then this is the schema in which to find the table or view to query and all rows will be returned (the qryitem_detail names the table or view). If the qryitem_src is "MQL" then this is the group of the query in the metasql table to run (the name is in qryitem_detail). If the qryitem_src IS "CUSTOM" then this ignored.'; -- -- Name: COLUMN qryitem.qryitem_detail; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN qryitem.qryitem_detail IS 'The particular query to run. If the qryitem_src is "REL" then this is the name of the table or view to query and all rows will be returned. If the qryitem_src is "MQL" then this is the name of the query in the metasql table to run. If the qryitem_src IS "CUSTOM" then this is the actual MetaSQL query text to be parsed and run.'; -- -- Name: COLUMN qryitem.qryitem_notes; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN qryitem.qryitem_notes IS 'General information about this query.'; -- -- Name: COLUMN qryitem.qryitem_username; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN qryitem.qryitem_username IS 'The name of the user who last modified this qryitem record.'; -- -- Name: COLUMN qryitem.qryitem_updated; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN qryitem.qryitem_updated IS 'The date this qryitem was last modified.'; -- -- Name: qryitem_qryitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE qryitem_qryitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.qryitem_qryitem_id_seq OWNER TO admin; -- -- Name: qryitem_qryitem_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE qryitem_qryitem_id_seq OWNED BY qryitem.qryitem_id; -- -- Name: qryitem_qryitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('qryitem_qryitem_id_seq', 1, false); -- -- Name: quhead_quhead_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE quhead_quhead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.quhead_quhead_id_seq OWNER TO admin; -- -- Name: quhead_quhead_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('quhead_quhead_id_seq', 86, true); -- -- Name: quitem_quitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE quitem_quitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.quitem_quitem_id_seq OWNER TO admin; -- -- Name: quitem_quitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('quitem_quitem_id_seq', 89, true); -- -- Name: rcalitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE rcalitem ( rcalitem_id integer DEFAULT nextval(('"xcalitem_xcalitem_id_seq"'::text)::regclass) NOT NULL, rcalitem_calhead_id integer, rcalitem_offsettype character(1), rcalitem_offsetcount integer, rcalitem_periodtype character(1), rcalitem_periodcount integer, rcalitem_name text ); ALTER TABLE public.rcalitem OWNER TO admin; -- -- Name: TABLE rcalitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE rcalitem IS 'Relative Calendar Item information'; -- -- Name: recur; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE recur ( recur_id integer NOT NULL, recur_parent_id integer NOT NULL, recur_parent_type text NOT NULL, recur_period text NOT NULL, recur_freq integer DEFAULT 1 NOT NULL, recur_start timestamp with time zone DEFAULT now(), recur_end timestamp with time zone, recur_max integer, recur_data text, CONSTRAINT recur_recur_period_check CHECK ((recur_period = ANY (ARRAY['m'::text, 'H'::text, 'D'::text, 'W'::text, 'M'::text, 'Y'::text, 'C'::text]))) ); ALTER TABLE public.recur OWNER TO admin; -- -- Name: TABLE recur; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE recur IS 'Track recurring events and objects.'; -- -- Name: COLUMN recur.recur_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN recur.recur_id IS 'Internal ID of this recurrence record.'; -- -- Name: COLUMN recur.recur_parent_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN recur.recur_parent_id IS 'The internal ID of the event/object that recurs.'; -- -- Name: COLUMN recur.recur_parent_type; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN recur.recur_parent_type IS 'The table in which the parent event or object is stored.'; -- -- Name: COLUMN recur.recur_period; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN recur.recur_period IS 'With recur_freq, how often this event recurs. Values are "m" for every minute, "H" for every hour, "D" for daily, "W" for weekly, "M" for monthly, "Y" for yearly, and "C" for customized or complex.'; -- -- Name: COLUMN recur.recur_freq; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN recur.recur_freq IS 'With recur_period, how often this event recurs. Values are integers counts of recur_periods. For example, if recur_freq = 2 and recur_period = w then the event recurs every 2 weeks.'; -- -- Name: COLUMN recur.recur_start; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN recur.recur_start IS 'The first date/time when the event should occur.'; -- -- Name: COLUMN recur.recur_end; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN recur.recur_end IS 'The last date/time when the event should occur. NULL means there is no end date/time and the event should recur forever.'; -- -- Name: COLUMN recur.recur_max; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN recur.recur_max IS 'The maximum number of recurrence events to create at one time. If this is NULL then when new events are created, a system-wide default will limit the number.'; -- -- Name: COLUMN recur.recur_data; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN recur.recur_data IS 'Not yet used and format still undetermined. Additional data to describe how to apply the period and frequency, particularly when period = "C".'; -- -- Name: recur_recur_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE recur_recur_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.recur_recur_id_seq OWNER TO admin; -- -- Name: recur_recur_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE recur_recur_id_seq OWNED BY recur.recur_id; -- -- Name: recur_recur_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('recur_recur_id_seq', 1, false); -- -- Name: recurtype; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE recurtype ( recurtype_id integer NOT NULL, recurtype_type text NOT NULL, recurtype_table text NOT NULL, recurtype_donecheck text NOT NULL, recurtype_schedcol text NOT NULL, recurtype_limit text, recurtype_copyfunc text NOT NULL, recurtype_copyargs text[] NOT NULL, recurtype_delfunc text ); ALTER TABLE public.recurtype OWNER TO admin; -- -- Name: TABLE recurtype; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE recurtype IS 'Describes the properties of recurring items/events in way that can be used by stored procedures to maintain the recurrence.'; -- -- Name: COLUMN recurtype.recurtype_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN recurtype.recurtype_id IS 'The internal id of this recurrence description.'; -- -- Name: COLUMN recurtype.recurtype_type; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN recurtype.recurtype_type IS 'A code value used by the RecurrenceWidget and the code that uses it to describe the item/event that will recur. Examples include "INCDT" for CRM Incidents and "J" for Projects.'; -- -- Name: COLUMN recurtype.recurtype_table; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN recurtype.recurtype_table IS 'The table that holds the item/event that will recur.'; -- -- Name: COLUMN recurtype.recurtype_donecheck; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN recurtype.recurtype_donecheck IS 'A boolean expression that returns TRUE if an individual item/event record in the recurtype_table has already been completed.'; -- -- Name: COLUMN recurtype.recurtype_schedcol; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN recurtype.recurtype_schedcol IS 'The name of the column in the recurtype_table holding the date or timestamp by which the item is scheduled to be completed or at which the event is supposed to occur.'; -- -- Name: COLUMN recurtype.recurtype_limit; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN recurtype.recurtype_limit IS 'A boolean expression that returns TRUE if the current user should see the row in the recurtype_table. NULL indicates there is no specific limitation. For example, the maintainance of recurring TODO items should restricted to those items belonging to the user unless s/he has been granted the privilege to modify other people''s todo lists.'; -- -- Name: COLUMN recurtype.recurtype_copyfunc; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN recurtype.recurtype_copyfunc IS 'The name of the function to copy an existing item/event record. The copy function is expected to take at least 2 arguments: the id of the item to copy and the new date/timestamp. If the function accepts more than 2, it must be able to accept NULL values for the 3rd and following arguments.'; -- -- Name: COLUMN recurtype.recurtype_copyargs; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN recurtype.recurtype_copyargs IS 'An abbreviated argument list for the copy function. This is used to determine whether the second argument must be cast to a date or a timestamp, and to figure out how many additional arguments to pass.'; -- -- Name: COLUMN recurtype.recurtype_delfunc; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN recurtype.recurtype_delfunc IS 'The name of the function to delete an existing item/event record. The function is expected to take exactly one argument: the id of the item to delete. NULL indicates there is no delete function and that an SQL DELETE statement can be used. In this case, the id column name will be built as the recurtype_table concatenated with the "_id" suffix.'; -- -- Name: recurtype_recurtype_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE recurtype_recurtype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.recurtype_recurtype_id_seq OWNER TO admin; -- -- Name: recurtype_recurtype_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE recurtype_recurtype_id_seq OWNED BY recurtype.recurtype_id; -- -- Name: recurtype_recurtype_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('recurtype_recurtype_id_seq', 5, true); -- -- Name: recv_recv_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE recv_recv_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.recv_recv_id_seq OWNER TO admin; -- -- Name: recv_recv_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE recv_recv_id_seq OWNED BY recv.recv_id; -- -- Name: recv_recv_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('recv_recv_id_seq', 1, true); -- -- Name: remitto; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW remitto AS SELECT (SELECT metric.metric_value FROM metric WHERE (metric.metric_name = 'remitto_name'::text)) AS remitto_name, (SELECT metric.metric_value FROM metric WHERE (metric.metric_name = 'remitto_address1'::text)) AS remitto_address1, (SELECT metric.metric_value FROM metric WHERE (metric.metric_name = 'remitto_address2'::text)) AS remitto_address2, (SELECT metric.metric_value FROM metric WHERE (metric.metric_name = 'remitto_address3'::text)) AS remitto_address3, (((((SELECT metric.metric_value FROM metric WHERE (metric.metric_name = 'remitto_city'::text)) || ' '::text) || (SELECT metric.metric_value FROM metric WHERE (metric.metric_name = 'remitto_state'::text))) || ' '::text) || (SELECT metric.metric_value FROM metric WHERE (metric.metric_name = 'remitto_zipcode'::text))) AS remitto_citystatezip, (SELECT metric.metric_value FROM metric WHERE (metric.metric_name = 'remitto_country'::text)) AS remitto_country, (SELECT metric.metric_value FROM metric WHERE (metric.metric_name = 'remitto_phone'::text)) AS remitto_phone; ALTER TABLE public.remitto OWNER TO admin; -- -- Name: rjctcode; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE rjctcode ( rjctcode_id integer DEFAULT nextval(('"rjctcode_rjctcode_id_seq"'::text)::regclass) NOT NULL, rjctcode_code text NOT NULL, rjctcode_descrip text, CONSTRAINT rjctcode_rjctcode_code_check CHECK ((rjctcode_code <> ''::text)) ); ALTER TABLE public.rjctcode OWNER TO admin; -- -- Name: TABLE rjctcode; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE rjctcode IS 'Reject Code information'; -- -- Name: rjctcode_rjctcode_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE rjctcode_rjctcode_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.rjctcode_rjctcode_id_seq OWNER TO admin; -- -- Name: rjctcode_rjctcode_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('rjctcode_rjctcode_id_seq', 18, true); -- -- Name: rsncode_rsncode_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE rsncode_rsncode_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.rsncode_rsncode_id_seq OWNER TO admin; -- -- Name: rsncode_rsncode_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE rsncode_rsncode_id_seq OWNED BY rsncode.rsncode_id; -- -- Name: rsncode_rsncode_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('rsncode_rsncode_id_seq', 4, true); -- -- Name: sale; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE sale ( sale_id integer DEFAULT nextval(('"sale_sale_id_seq"'::text)::regclass) NOT NULL, sale_name text NOT NULL, sale_descrip text, sale_ipshead_id integer, sale_startdate date, sale_enddate date, CONSTRAINT sale_sale_name_check CHECK ((sale_name <> ''::text)) ); ALTER TABLE public.sale OWNER TO admin; -- -- Name: TABLE sale; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE sale IS 'Sale information'; -- -- Name: sale_sale_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE sale_sale_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.sale_sale_id_seq OWNER TO admin; -- -- Name: sale_sale_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('sale_sale_id_seq', 12, true); -- -- Name: salesaccnt_salesaccnt_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE salesaccnt_salesaccnt_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.salesaccnt_salesaccnt_id_seq OWNER TO admin; -- -- Name: salesaccnt_salesaccnt_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('salesaccnt_salesaccnt_id_seq', 32, true); -- -- Name: salescat_salescat_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE salescat_salescat_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.salescat_salescat_id_seq OWNER TO admin; -- -- Name: salescat_salescat_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE salescat_salescat_id_seq OWNED BY salescat.salescat_id; -- -- Name: salescat_salescat_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('salescat_salescat_id_seq', 2, true); -- -- Name: saleshistory; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW saleshistory AS SELECT cohist.cohist_id, cohist.cohist_cust_id, cohist.cohist_itemsite_id, cohist.cohist_shipdate, cohist.cohist_shipvia, cohist.cohist_ordernumber, cohist.cohist_orderdate, cohist.cohist_invcnumber, cohist.cohist_invcdate, cohist.cohist_qtyshipped, cohist.cohist_unitprice, cohist.cohist_shipto_id, cohist.cohist_salesrep_id, cohist.cohist_duedate, cohist.cohist_imported, cohist.cohist_billtoname, cohist.cohist_billtoaddress1, cohist.cohist_billtoaddress2, cohist.cohist_billtoaddress3, cohist.cohist_billtocity, cohist.cohist_billtostate, cohist.cohist_billtozip, cohist.cohist_shiptoname, cohist.cohist_shiptoaddress1, cohist.cohist_shiptoaddress2, cohist.cohist_shiptoaddress3, cohist.cohist_shiptocity, cohist.cohist_shiptostate, cohist.cohist_shiptozip, cohist.cohist_commission, cohist.cohist_commissionpaid, cohist.cohist_unitcost, cohist.cohist_misc_type, cohist.cohist_misc_descrip, cohist.cohist_misc_id, cohist.cohist_doctype, cohist.cohist_promisedate, cohist.cohist_ponumber, cohist.cohist_curr_id, cohist.cohist_sequence, cohist.cohist_taxtype_id, cohist.cohist_taxzone_id, cohist.cohist_cohead_ccpay_id, cohist.cohist_saletype_id, cohist.cohist_shipzone_id, CASE WHEN (cohist.cohist_invcnumber = '-1'::text) THEN 'Credit'::text ELSE cohist.cohist_invcnumber END AS invoicenumber, custinfo.cust_id, custinfo.cust_number, custinfo.cust_name, custinfo.cust_curr_id, custinfo.cust_custtype_id, custtype.custtype_code, custtype.custtype_descrip, salesrep.salesrep_number, salesrep.salesrep_name, shipzone.shipzone_id, shipzone.shipzone_name, shipzone.shipzone_descrip, itemsite.itemsite_warehous_id, itemsite.itemsite_item_id, item.item_id, item.item_number, item.item_descrip1, ((item.item_descrip1 || ' '::text) || item.item_descrip2) AS itemdescription, item.item_prodcat_id, site.warehous_code, site.warehous_descrip, prodcat.prodcat_code, currtobase(cohist.cohist_curr_id, cohist.cohist_commission, cohist.cohist_invcdate) AS basecommission, currtobase(cohist.cohist_curr_id, cohist.cohist_unitprice, cohist.cohist_invcdate) AS baseunitprice, currtocurr(cohist.cohist_curr_id, custinfo.cust_curr_id, cohist.cohist_unitprice, cohist.cohist_invcdate) AS custunitprice, round((cohist.cohist_qtyshipped * cohist.cohist_unitprice), 2) AS extprice, round((cohist.cohist_qtyshipped * currtobase(cohist.cohist_curr_id, cohist.cohist_unitprice, cohist.cohist_invcdate)), 2) AS baseextprice, round((cohist.cohist_qtyshipped * currtocurr(cohist.cohist_curr_id, custinfo.cust_curr_id, cohist.cohist_unitprice, cohist.cohist_invcdate)), 2) AS custextprice, round((cohist.cohist_qtyshipped * cohist.cohist_unitcost), 4) AS extcost, currconcat(cohist.cohist_curr_id) AS currabbr, 'Return'::text AS cohist_invcdate_xtnullrole, 'qty'::text AS cohist_qtyshipped_xtnumericrole, 'salesprice'::text AS cohist_unitprice_xtnumericrole, 'salesprice'::text AS baseunitprice_xtnumericrole, 'curr'::text AS custunitprice_xtnumericrole, 'curr'::text AS custextprice_xtnumericrole, 'curr'::text AS extprice_xtnumericrole, 'curr'::text AS baseextprice_xtnumericrole, 'cost'::text AS cohist_unitcost_xtnumericrole, 'curr'::text AS extcost_xtnumericrole, 'curr'::text AS cohist_commission_xtnumericrole, 'curr'::text AS basecommission_xtnumericrole, 0 AS cohist_qtyshipped_xttotalrole, 0 AS custextprice_xttotalrole, 0 AS baseextprice_xttotalrole, 0 AS extcost_xttotalrole, 0 AS basecommission_xttotalrole FROM (((((((((cohist JOIN custinfo ON ((custinfo.cust_id = cohist.cohist_cust_id))) JOIN custtype ON ((custtype.custtype_id = custinfo.cust_custtype_id))) JOIN salesrep ON ((salesrep.salesrep_id = cohist.cohist_salesrep_id))) JOIN itemsite ON ((itemsite.itemsite_id = cohist.cohist_itemsite_id))) JOIN site() site(warehous_id, warehous_code, warehous_descrip, warehous_fob, warehous_active, warehous_counttag_prefix, warehous_counttag_number, warehous_bol_prefix, warehous_bol_number, warehous_shipping, warehous_useslips, warehous_usezones, warehous_aislesize, warehous_aislealpha, warehous_racksize, warehous_rackalpha, warehous_binsize, warehous_binalpha, warehous_locationsize, warehous_locationalpha, warehous_enforcearbl, warehous_default_accnt_id, warehous_shipping_commission, warehous_cntct_id, warehous_addr_id, warehous_transit, warehous_shipform_id, warehous_shipvia_id, warehous_shipcomments, warehous_costcat_id, warehous_sitetype_id, warehous_taxzone_id, warehous_sequence) ON ((site.warehous_id = itemsite.itemsite_warehous_id))) JOIN item ON ((item.item_id = itemsite.itemsite_item_id))) JOIN prodcat ON ((prodcat.prodcat_id = item.item_prodcat_id))) LEFT JOIN shiptoinfo ON ((shiptoinfo.shipto_id = cohist.cohist_shipto_id))) LEFT JOIN shipzone ON ((shipzone.shipzone_id = shiptoinfo.shipto_shipzone_id))); ALTER TABLE public.saleshistory OWNER TO admin; -- -- Name: VIEW saleshistory; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON VIEW saleshistory IS 'Single point for sales history calculations.'; -- -- Name: saleshistorymisc; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW saleshistorymisc AS SELECT cohist.cohist_id, cohist.cohist_cust_id, cohist.cohist_itemsite_id, cohist.cohist_shipdate, cohist.cohist_shipvia, cohist.cohist_ordernumber, cohist.cohist_orderdate, cohist.cohist_invcnumber, cohist.cohist_invcdate, cohist.cohist_qtyshipped, cohist.cohist_unitprice, cohist.cohist_shipto_id, cohist.cohist_salesrep_id, cohist.cohist_duedate, cohist.cohist_imported, cohist.cohist_billtoname, cohist.cohist_billtoaddress1, cohist.cohist_billtoaddress2, cohist.cohist_billtoaddress3, cohist.cohist_billtocity, cohist.cohist_billtostate, cohist.cohist_billtozip, cohist.cohist_shiptoname, cohist.cohist_shiptoaddress1, cohist.cohist_shiptoaddress2, cohist.cohist_shiptoaddress3, cohist.cohist_shiptocity, cohist.cohist_shiptostate, cohist.cohist_shiptozip, cohist.cohist_commission, cohist.cohist_commissionpaid, cohist.cohist_unitcost, cohist.cohist_misc_type, cohist.cohist_misc_descrip, cohist.cohist_misc_id, cohist.cohist_doctype, cohist.cohist_promisedate, cohist.cohist_ponumber, cohist.cohist_curr_id, cohist.cohist_sequence, cohist.cohist_taxtype_id, cohist.cohist_taxzone_id, cohist.cohist_cohead_ccpay_id, cohist.cohist_saletype_id, cohist.cohist_shipzone_id, CASE WHEN (cohist.cohist_invcnumber = '-1'::text) THEN 'Credit'::text ELSE cohist.cohist_invcnumber END AS invoicenumber, custinfo.cust_id, custinfo.cust_number, custinfo.cust_name, custinfo.cust_curr_id, custinfo.cust_custtype_id, custtype.custtype_code, salesrep.salesrep_number, salesrep.salesrep_name, shipzone.shipzone_id, shipzone.shipzone_name, itemsite.itemsite_warehous_id, itemsite.itemsite_item_id, item.item_number, item.item_descrip1, ((item.item_descrip1 || ' '::text) || item.item_descrip2) AS itemdescription, item.item_prodcat_id, site.warehous_code, prodcat.prodcat_code, currtobase(cohist.cohist_curr_id, cohist.cohist_commission, cohist.cohist_invcdate) AS basecommission, currtobase(cohist.cohist_curr_id, cohist.cohist_unitprice, cohist.cohist_invcdate) AS baseunitprice, currtocurr(cohist.cohist_curr_id, custinfo.cust_curr_id, cohist.cohist_unitprice, cohist.cohist_invcdate) AS custunitprice, round((cohist.cohist_qtyshipped * cohist.cohist_unitprice), 2) AS extprice, round((cohist.cohist_qtyshipped * currtobase(cohist.cohist_curr_id, cohist.cohist_unitprice, cohist.cohist_invcdate)), 2) AS baseextprice, round((cohist.cohist_qtyshipped * currtocurr(cohist.cohist_curr_id, custinfo.cust_curr_id, cohist.cohist_unitprice, cohist.cohist_invcdate)), 2) AS custextprice, round((cohist.cohist_qtyshipped * cohist.cohist_unitcost), 4) AS extcost, currconcat(cohist.cohist_curr_id) AS currabbr, 'Return'::text AS cohist_invcdate_xtnullrole, 'qty'::text AS cohist_qtyshipped_xtnumericrole, 'salesprice'::text AS cohist_unitprice_xtnumericrole, 'salesprice'::text AS baseunitprice_xtnumericrole, 'curr'::text AS custunitprice_xtnumericrole, 'curr'::text AS custextprice_xtnumericrole, 'curr'::text AS extprice_xtnumericrole, 'curr'::text AS baseextprice_xtnumericrole, 'cost'::text AS cohist_unitcost_xtnumericrole, 'curr'::text AS extcost_xtnumericrole, 'curr'::text AS cohist_commission_xtnumericrole, 'curr'::text AS basecommission_xtnumericrole, 0 AS cohist_qtyshipped_xttotalrole, 0 AS custextprice_xttotalrole, 0 AS baseextprice_xttotalrole, 0 AS extcost_xttotalrole, 0 AS basecommission_xttotalrole FROM (((((((((cohist JOIN custinfo ON ((custinfo.cust_id = cohist.cohist_cust_id))) JOIN custtype ON ((custtype.custtype_id = custinfo.cust_custtype_id))) JOIN salesrep ON ((salesrep.salesrep_id = cohist.cohist_salesrep_id))) LEFT JOIN itemsite ON ((itemsite.itemsite_id = cohist.cohist_itemsite_id))) LEFT JOIN site() site(warehous_id, warehous_code, warehous_descrip, warehous_fob, warehous_active, warehous_counttag_prefix, warehous_counttag_number, warehous_bol_prefix, warehous_bol_number, warehous_shipping, warehous_useslips, warehous_usezones, warehous_aislesize, warehous_aislealpha, warehous_racksize, warehous_rackalpha, warehous_binsize, warehous_binalpha, warehous_locationsize, warehous_locationalpha, warehous_enforcearbl, warehous_default_accnt_id, warehous_shipping_commission, warehous_cntct_id, warehous_addr_id, warehous_transit, warehous_shipform_id, warehous_shipvia_id, warehous_shipcomments, warehous_costcat_id, warehous_sitetype_id, warehous_taxzone_id, warehous_sequence) ON ((site.warehous_id = itemsite.itemsite_warehous_id))) LEFT JOIN item ON ((item.item_id = itemsite.itemsite_item_id))) LEFT JOIN prodcat ON ((prodcat.prodcat_id = item.item_prodcat_id))) LEFT JOIN shiptoinfo ON ((shiptoinfo.shipto_id = cohist.cohist_shipto_id))) LEFT JOIN shipzone ON ((shipzone.shipzone_id = shiptoinfo.shipto_shipzone_id))); ALTER TABLE public.saleshistorymisc OWNER TO admin; -- -- Name: VIEW saleshistorymisc; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON VIEW saleshistorymisc IS 'Single point for sales history (including misc. items) calculations.'; -- -- Name: salesrep_salesrep_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE salesrep_salesrep_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.salesrep_salesrep_id_seq OWNER TO admin; -- -- Name: salesrep_salesrep_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('salesrep_salesrep_id_seq', 29, true); -- -- Name: saletype_saletype_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE saletype_saletype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.saletype_saletype_id_seq OWNER TO admin; -- -- Name: saletype_saletype_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE saletype_saletype_id_seq OWNED BY saletype.saletype_id; -- -- Name: saletype_saletype_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('saletype_saletype_id_seq', 3, true); -- -- Name: schemaord; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE schemaord ( schemaord_id integer NOT NULL, schemaord_name text NOT NULL, schemaord_order integer NOT NULL, CONSTRAINT schemaord_schemaord_name_check CHECK ((length(schemaord_name) > 0)), CONSTRAINT schemaord_schemaord_name_check1 CHECK ((schemaord_name <> ''::text)) ); ALTER TABLE public.schemaord OWNER TO admin; -- -- Name: TABLE schemaord; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE schemaord IS 'Set the order in which db schemas will appear in the search path after login'; -- -- Name: schemaord_schemaord_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE schemaord_schemaord_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.schemaord_schemaord_id_seq OWNER TO admin; -- -- Name: schemaord_schemaord_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE schemaord_schemaord_id_seq OWNED BY schemaord.schemaord_id; -- -- Name: schemaord_schemaord_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('schemaord_schemaord_id_seq', 1, false); -- -- Name: sequence; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE sequence ( sequence_value integer ); ALTER TABLE public.sequence OWNER TO admin; -- -- Name: TABLE sequence; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE sequence IS 'Pre-populated list of sequence numbers (1-1000) used for printing Labels and other uses'; -- -- Name: shift_shift_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE shift_shift_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.shift_shift_id_seq OWNER TO admin; -- -- Name: shift_shift_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE shift_shift_id_seq OWNED BY shift.shift_id; -- -- Name: shift_shift_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('shift_shift_id_seq', 1, true); -- -- Name: shipchrg_shipchrg_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE shipchrg_shipchrg_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.shipchrg_shipchrg_id_seq OWNER TO admin; -- -- Name: shipchrg_shipchrg_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE shipchrg_shipchrg_id_seq OWNED BY shipchrg.shipchrg_id; -- -- Name: shipchrg_shipchrg_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('shipchrg_shipchrg_id_seq', 5, true); -- -- Name: shipdatasum; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE shipdatasum ( shipdatasum_cohead_number text NOT NULL, shipdatasum_cosmisc_tracknum text NOT NULL, shipdatasum_cosmisc_packnum_tracknum text NOT NULL, shipdatasum_weight numeric(16,4), shipdatasum_base_freight numeric(16,4), shipdatasum_total_freight numeric(16,4), shipdatasum_shipper text DEFAULT 'UPS'::text, shipdatasum_billing_option text, shipdatasum_package_type text, shipdatasum_lastupdated timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, shipdatasum_shipped boolean DEFAULT false, shipdatasum_shiphead_number text, shipdatasum_base_freight_curr_id integer DEFAULT basecurrid(), shipdatasum_total_freight_curr_id integer DEFAULT basecurrid() ); ALTER TABLE public.shipdatasum OWNER TO admin; -- -- Name: TABLE shipdatasum; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE shipdatasum IS 'Shipping Interface information.'; -- -- Name: shipform_shipform_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE shipform_shipform_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.shipform_shipform_id_seq OWNER TO admin; -- -- Name: shipform_shipform_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('shipform_shipform_id_seq', 12, true); -- -- Name: shiphead_shiphead_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE shiphead_shiphead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.shiphead_shiphead_id_seq OWNER TO admin; -- -- Name: shiphead_shiphead_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE shiphead_shiphead_id_seq OWNED BY shiphead.shiphead_id; -- -- Name: shiphead_shiphead_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('shiphead_shiphead_id_seq', 1, false); -- -- Name: shipitem_shipitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE shipitem_shipitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.shipitem_shipitem_id_seq OWNER TO admin; -- -- Name: shipitem_shipitem_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE shipitem_shipitem_id_seq OWNED BY shipitem.shipitem_id; -- -- Name: shipitem_shipitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('shipitem_shipitem_id_seq', 1, false); -- -- Name: shipment_number_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE shipment_number_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.shipment_number_seq OWNER TO admin; -- -- Name: shipment_number_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('shipment_number_seq', 80000, true); -- -- Name: shipto; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW shipto AS SELECT shiptoinfo.shipto_id, shiptoinfo.shipto_cust_id, shiptoinfo.shipto_name, m.addr_line1 AS shipto_address1, m.addr_line2 AS shipto_address2, m.addr_line3 AS shipto_address3, m.addr_city AS shipto_city, m.addr_state AS shipto_state, m.addr_postalcode AS shipto_zipcode, shiptoinfo.shipto_taxzone_id, shiptoinfo.shipto_salesrep_id, c1.cntct_phone AS shipto_phone, shiptoinfo.shipto_comments, shiptoinfo.shipto_shipcomments, btrim(((c1.cntct_first_name || ' '::text) || c1.cntct_last_name)) AS shipto_contact, c1.cntct_fax AS shipto_fax, c1.cntct_email AS shipto_email, shiptoinfo.shipto_shipzone_id, shiptoinfo.shipto_shipvia, shiptoinfo.shipto_commission, shiptoinfo.shipto_shipform_id, shiptoinfo.shipto_shipchrg_id, shiptoinfo.shipto_active, shiptoinfo.shipto_default, shiptoinfo.shipto_num, shiptoinfo.shipto_ediprofile_id, m.addr_country AS shipto_country FROM ((shiptoinfo LEFT JOIN cntct c1 ON ((shiptoinfo.shipto_cntct_id = c1.cntct_id))) LEFT JOIN addr m ON ((shiptoinfo.shipto_addr_id = m.addr_id))); ALTER TABLE public.shipto OWNER TO admin; -- -- Name: shipto_shipto_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE shipto_shipto_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.shipto_shipto_id_seq OWNER TO admin; -- -- Name: shipto_shipto_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('shipto_shipto_id_seq', 30, true); -- -- Name: shipvia_shipvia_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE shipvia_shipvia_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.shipvia_shipvia_id_seq OWNER TO admin; -- -- Name: shipvia_shipvia_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('shipvia_shipvia_id_seq', 24, true); -- -- Name: shipzone_shipzone_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE shipzone_shipzone_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.shipzone_shipzone_id_seq OWNER TO admin; -- -- Name: shipzone_shipzone_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('shipzone_shipzone_id_seq', 45, true); -- -- Name: sitetype_sitetype_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE sitetype_sitetype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.sitetype_sitetype_id_seq OWNER TO admin; -- -- Name: sitetype_sitetype_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE sitetype_sitetype_id_seq OWNED BY sitetype.sitetype_id; -- -- Name: sitetype_sitetype_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('sitetype_sitetype_id_seq', 1, true); -- -- Name: sltrans; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE sltrans ( sltrans_id integer DEFAULT nextval('gltrans_gltrans_id_seq'::regclass) NOT NULL, sltrans_created timestamp with time zone, sltrans_date date NOT NULL, sltrans_sequence integer, sltrans_accnt_id integer NOT NULL, sltrans_source text, sltrans_docnumber text, sltrans_misc_id integer, sltrans_amount numeric(20,2) NOT NULL, sltrans_notes text, sltrans_journalnumber integer, sltrans_posted boolean NOT NULL, sltrans_doctype text, sltrans_username text DEFAULT geteffectivextuser() NOT NULL, sltrans_gltrans_journalnumber integer, sltrans_rec boolean DEFAULT false NOT NULL ); ALTER TABLE public.sltrans OWNER TO admin; -- -- Name: TABLE sltrans; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE sltrans IS 'Journal transaction information'; -- -- Name: sltrans_backup; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE sltrans_backup ( sltrans_old_id integer, sltrans_new_id integer ); ALTER TABLE public.sltrans_backup OWNER TO admin; -- -- Name: TABLE sltrans_backup; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE sltrans_backup IS 'backup cross references of old and new ids for sltrans 4.0 upgrade.'; -- -- Name: sopack; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW sopack AS SELECT pack.pack_id AS sopack_id, pack.pack_head_id AS sopack_sohead_id, pack.pack_printed AS sopack_printed, pack.pack_shiphead_id AS sopack_cosmisc_id FROM pack WHERE (pack.pack_head_type = 'SO'::text); ALTER TABLE public.sopack OWNER TO admin; -- -- Name: sopack_sopack_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE sopack_sopack_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.sopack_sopack_id_seq OWNER TO admin; -- -- Name: sopack_sopack_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('sopack_sopack_id_seq', 60, true); -- -- Name: source; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE source ( source_id integer NOT NULL, source_module text, source_name text NOT NULL, source_descrip text, CONSTRAINT source_source_name_check CHECK ((source_name <> ''::text)) ); ALTER TABLE public.source OWNER TO admin; -- -- Name: TABLE source; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE source IS 'Tax class information'; -- -- Name: COLUMN source.source_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN source.source_id IS 'Primary key'; -- -- Name: COLUMN source.source_module; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN source.source_module IS 'Application module'; -- -- Name: COLUMN source.source_name; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN source.source_name IS 'Name'; -- -- Name: COLUMN source.source_descrip; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN source.source_descrip IS 'Description'; -- -- Name: source_source_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE source_source_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.source_source_id_seq OWNER TO admin; -- -- Name: source_source_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE source_source_id_seq OWNED BY source.source_id; -- -- Name: source_source_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('source_source_id_seq', 38, true); -- -- Name: state; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE state ( state_id integer NOT NULL, state_name text NOT NULL, state_abbr text, state_country_id integer, CONSTRAINT state_state_name_check CHECK ((state_name <> ''::text)) ); ALTER TABLE public.state OWNER TO admin; -- -- Name: TABLE state; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE state IS 'List of states, provinces, and territories associated with various countries.'; -- -- Name: state_state_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE state_state_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.state_state_id_seq OWNER TO admin; -- -- Name: state_state_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE state_state_id_seq OWNED BY state.state_id; -- -- Name: state_state_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('state_state_id_seq', 158, true); -- -- Name: status; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE status ( status_id integer NOT NULL, status_type text NOT NULL, status_code character(1) NOT NULL, status_name text, status_seq integer, status_color text DEFAULT 'white'::text ); ALTER TABLE public.status OWNER TO admin; -- -- Name: status_status_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE status_status_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.status_status_id_seq OWNER TO admin; -- -- Name: status_status_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE status_status_id_seq OWNED BY status.status_id; -- -- Name: status_status_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('status_status_id_seq', 6, true); -- -- Name: stdjrnl; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE stdjrnl ( stdjrnl_id integer NOT NULL, stdjrnl_name text NOT NULL, stdjrnl_descrip text, stdjrnl_notes text, CONSTRAINT stdjrnl_stdjrnl_name_check CHECK ((stdjrnl_name <> ''::text)) ); ALTER TABLE public.stdjrnl OWNER TO admin; -- -- Name: TABLE stdjrnl; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE stdjrnl IS 'Standard Journal information'; -- -- Name: stdjrnl_stdjrnl_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE stdjrnl_stdjrnl_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.stdjrnl_stdjrnl_id_seq OWNER TO admin; -- -- Name: stdjrnl_stdjrnl_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE stdjrnl_stdjrnl_id_seq OWNED BY stdjrnl.stdjrnl_id; -- -- Name: stdjrnl_stdjrnl_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('stdjrnl_stdjrnl_id_seq', 30, true); -- -- Name: stdjrnlgrp; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE stdjrnlgrp ( stdjrnlgrp_id integer NOT NULL, stdjrnlgrp_name text NOT NULL, stdjrnlgrp_descrip text, CONSTRAINT stdjrnlgrp_stdjrnlgrp_name_check CHECK ((stdjrnlgrp_name <> ''::text)) ); ALTER TABLE public.stdjrnlgrp OWNER TO admin; -- -- Name: TABLE stdjrnlgrp; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE stdjrnlgrp IS 'Standard Journal Group information'; -- -- Name: stdjrnlgrp_stdjrnlgrp_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE stdjrnlgrp_stdjrnlgrp_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.stdjrnlgrp_stdjrnlgrp_id_seq OWNER TO admin; -- -- Name: stdjrnlgrp_stdjrnlgrp_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE stdjrnlgrp_stdjrnlgrp_id_seq OWNED BY stdjrnlgrp.stdjrnlgrp_id; -- -- Name: stdjrnlgrp_stdjrnlgrp_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('stdjrnlgrp_stdjrnlgrp_id_seq', 12, true); -- -- Name: stdjrnlgrpitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE stdjrnlgrpitem ( stdjrnlgrpitem_id integer NOT NULL, stdjrnlgrpitem_stdjrnl_id integer, stdjrnlgrpitem_toapply integer, stdjrnlgrpitem_applied integer, stdjrnlgrpitem_effective date, stdjrnlgrpitem_expires date, stdjrnlgrpitem_stdjrnlgrp_id integer ); ALTER TABLE public.stdjrnlgrpitem OWNER TO admin; -- -- Name: TABLE stdjrnlgrpitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE stdjrnlgrpitem IS 'Standard Journal Group Item information'; -- -- Name: stdjrnlgrpitem_stdjrnlgrpitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE stdjrnlgrpitem_stdjrnlgrpitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.stdjrnlgrpitem_stdjrnlgrpitem_id_seq OWNER TO admin; -- -- Name: stdjrnlgrpitem_stdjrnlgrpitem_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE stdjrnlgrpitem_stdjrnlgrpitem_id_seq OWNED BY stdjrnlgrpitem.stdjrnlgrpitem_id; -- -- Name: stdjrnlgrpitem_stdjrnlgrpitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('stdjrnlgrpitem_stdjrnlgrpitem_id_seq', 18, true); -- -- Name: stdjrnlitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE stdjrnlitem ( stdjrnlitem_id integer NOT NULL, stdjrnlitem_stdjrnl_id integer NOT NULL, stdjrnlitem_accnt_id integer NOT NULL, stdjrnlitem_amount numeric(20,2) NOT NULL, stdjrnlitem_notes text ); ALTER TABLE public.stdjrnlitem OWNER TO admin; -- -- Name: TABLE stdjrnlitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE stdjrnlitem IS 'Standard Journal Item information'; -- -- Name: stdjrnlitem_stdjrnlitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE stdjrnlitem_stdjrnlitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.stdjrnlitem_stdjrnlitem_id_seq OWNER TO admin; -- -- Name: stdjrnlitem_stdjrnlitem_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE stdjrnlitem_stdjrnlitem_id_seq OWNED BY stdjrnlitem.stdjrnlitem_id; -- -- Name: stdjrnlitem_stdjrnlitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('stdjrnlitem_stdjrnlitem_id_seq', 28, true); -- -- Name: subaccnt; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE subaccnt ( subaccnt_id integer NOT NULL, subaccnt_number text NOT NULL, subaccnt_descrip text, CONSTRAINT subaccnt_subaccnt_number_check CHECK ((subaccnt_number <> ''::text)) ); ALTER TABLE public.subaccnt OWNER TO admin; -- -- Name: TABLE subaccnt; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE subaccnt IS 'Subaccount information'; -- -- Name: subaccnt_subaccnt_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE subaccnt_subaccnt_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.subaccnt_subaccnt_id_seq OWNER TO admin; -- -- Name: subaccnt_subaccnt_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE subaccnt_subaccnt_id_seq OWNED BY subaccnt.subaccnt_id; -- -- Name: subaccnt_subaccnt_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('subaccnt_subaccnt_id_seq', 1, true); -- -- Name: subaccnttype; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE subaccnttype ( subaccnttype_id integer NOT NULL, subaccnttype_accnt_type character(1) NOT NULL, subaccnttype_code text NOT NULL, subaccnttype_descrip text ); ALTER TABLE public.subaccnttype OWNER TO admin; -- -- Name: TABLE subaccnttype; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE subaccnttype IS 'User defined Sub Account Types.'; -- -- Name: subaccnttype_subaccnttype_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE subaccnttype_subaccnttype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.subaccnttype_subaccnttype_id_seq OWNER TO admin; -- -- Name: subaccnttype_subaccnttype_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE subaccnttype_subaccnttype_id_seq OWNED BY subaccnttype.subaccnttype_id; -- -- Name: subaccnttype_subaccnttype_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('subaccnttype_subaccnttype_id_seq', 19, true); -- -- Name: tax_tax_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE tax_tax_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.tax_tax_id_seq OWNER TO admin; -- -- Name: tax_tax_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('tax_tax_id_seq', 13, true); -- -- Name: taxass; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE taxass ( taxass_id integer NOT NULL, taxass_taxzone_id integer, taxass_taxtype_id integer, taxass_tax_id integer NOT NULL ); ALTER TABLE public.taxass OWNER TO admin; -- -- Name: TABLE taxass; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE taxass IS 'The tax assignment table associates different tax zones and tax types to a given set of tax codes.'; -- -- Name: COLUMN taxass.taxass_taxzone_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxass.taxass_taxzone_id IS 'The id of the tax zone. If NULL any tax zone will apply.'; -- -- Name: COLUMN taxass.taxass_taxtype_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxass.taxass_taxtype_id IS 'The id of the tax type. If NULL any tax type will apply.'; -- -- Name: COLUMN taxass.taxass_tax_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxass.taxass_tax_id IS 'The id of the tax code.'; -- -- Name: taxass_taxass_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE taxass_taxass_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.taxass_taxass_id_seq OWNER TO admin; -- -- Name: taxass_taxass_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE taxass_taxass_id_seq OWNED BY taxass.taxass_id; -- -- Name: taxass_taxass_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('taxass_taxass_id_seq', 1, false); -- -- Name: taxauth_taxauth_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE taxauth_taxauth_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.taxauth_taxauth_id_seq OWNER TO admin; -- -- Name: taxauth_taxauth_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE taxauth_taxauth_id_seq OWNED BY taxauth.taxauth_id; -- -- Name: taxauth_taxauth_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('taxauth_taxauth_id_seq', 1, true); -- -- Name: taxclass; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE taxclass ( taxclass_id integer NOT NULL, taxclass_code text NOT NULL, taxclass_descrip text, taxclass_sequence integer, CONSTRAINT taxclass_taxclass_code_check CHECK ((taxclass_code <> ''::text)) ); ALTER TABLE public.taxclass OWNER TO admin; -- -- Name: TABLE taxclass; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE taxclass IS 'Tax class information'; -- -- Name: COLUMN taxclass.taxclass_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxclass.taxclass_id IS 'Primary key'; -- -- Name: COLUMN taxclass.taxclass_code; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxclass.taxclass_code IS 'Code'; -- -- Name: COLUMN taxclass.taxclass_descrip; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxclass.taxclass_descrip IS 'Description'; -- -- Name: COLUMN taxclass.taxclass_sequence; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxclass.taxclass_sequence IS 'Group sequence'; -- -- Name: taxclass_taxclass_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE taxclass_taxclass_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.taxclass_taxclass_id_seq OWNER TO admin; -- -- Name: taxclass_taxclass_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE taxclass_taxclass_id_seq OWNED BY taxclass.taxclass_id; -- -- Name: taxclass_taxclass_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('taxclass_taxclass_id_seq', 3, true); -- -- Name: taxrate; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE taxrate ( taxrate_id integer NOT NULL, taxrate_tax_id integer NOT NULL, taxrate_percent numeric(10,6) NOT NULL, taxrate_curr_id integer, taxrate_amount numeric(16,2) NOT NULL, taxrate_effective date, taxrate_expires date ); ALTER TABLE public.taxrate OWNER TO admin; -- -- Name: TABLE taxrate; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE taxrate IS 'Tax rates.'; -- -- Name: COLUMN taxrate.taxrate_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxrate.taxrate_id IS 'Primary key.'; -- -- Name: COLUMN taxrate.taxrate_tax_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxrate.taxrate_tax_id IS 'The id of the parent tax code.'; -- -- Name: COLUMN taxrate.taxrate_percent; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxrate.taxrate_percent IS 'Tax rate percentage.'; -- -- Name: COLUMN taxrate.taxrate_curr_id; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxrate.taxrate_curr_id IS 'The currency id of the flat rate amount.'; -- -- Name: COLUMN taxrate.taxrate_amount; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxrate.taxrate_amount IS 'Flat tax rate amount.'; -- -- Name: COLUMN taxrate.taxrate_effective; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxrate.taxrate_effective IS 'The effective date of the tax rate. NULL value means always.'; -- -- Name: COLUMN taxrate.taxrate_expires; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN taxrate.taxrate_expires IS 'The expire date of the tax rate. NULL value means never.'; -- -- Name: taxrate_taxrate_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE taxrate_taxrate_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.taxrate_taxrate_id_seq OWNER TO admin; -- -- Name: taxrate_taxrate_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE taxrate_taxrate_id_seq OWNED BY taxrate.taxrate_id; -- -- Name: taxrate_taxrate_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('taxrate_taxrate_id_seq', 1, true); -- -- Name: taxreg_taxreg_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE taxreg_taxreg_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.taxreg_taxreg_id_seq OWNER TO admin; -- -- Name: taxreg_taxreg_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE taxreg_taxreg_id_seq OWNED BY taxreg.taxreg_id; -- -- Name: taxreg_taxreg_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('taxreg_taxreg_id_seq', 1, false); -- -- Name: taxtype_taxtype_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE taxtype_taxtype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.taxtype_taxtype_id_seq OWNER TO admin; -- -- Name: taxtype_taxtype_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE taxtype_taxtype_id_seq OWNED BY taxtype.taxtype_id; -- -- Name: taxtype_taxtype_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('taxtype_taxtype_id_seq', 3, true); -- -- Name: taxzone_taxzone_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE taxzone_taxzone_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.taxzone_taxzone_id_seq OWNER TO admin; -- -- Name: taxzone_taxzone_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE taxzone_taxzone_id_seq OWNED BY taxzone.taxzone_id; -- -- Name: taxzone_taxzone_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('taxzone_taxzone_id_seq', 2, true); -- -- Name: terms_terms_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE terms_terms_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.terms_terms_id_seq OWNER TO admin; -- -- Name: terms_terms_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('terms_terms_id_seq', 43, true); -- -- Name: todoitem_todoitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE todoitem_todoitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.todoitem_todoitem_id_seq OWNER TO admin; -- -- Name: todoitem_todoitem_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE todoitem_todoitem_id_seq OWNED BY todoitem.todoitem_id; -- -- Name: todoitem_todoitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('todoitem_todoitem_id_seq', 1, false); -- -- Name: trgthist; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE trgthist ( trgthist_src_cntct_id integer NOT NULL, trgthist_trgt_cntct_id integer NOT NULL, trgthist_col text NOT NULL, trgthist_value text NOT NULL ); ALTER TABLE public.trgthist OWNER TO admin; -- -- Name: trialbal; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE trialbal ( trialbal_id integer NOT NULL, trialbal_period_id integer, trialbal_accnt_id integer, trialbal_beginning numeric(20,2), trialbal_ending numeric(20,2), trialbal_credits numeric(20,2), trialbal_debits numeric(20,2), trialbal_dirty boolean, trialbal_yearend numeric(20,2) DEFAULT 0.00 NOT NULL ); ALTER TABLE public.trialbal OWNER TO admin; -- -- Name: TABLE trialbal; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE trialbal IS 'Trial Balance information'; -- -- Name: trialbal_trialbal_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE trialbal_trialbal_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.trialbal_trialbal_id_seq OWNER TO admin; -- -- Name: trialbal_trialbal_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE trialbal_trialbal_id_seq OWNED BY trialbal.trialbal_id; -- -- Name: trialbal_trialbal_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('trialbal_trialbal_id_seq', 9147, true); -- -- Name: uom_uom_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE uom_uom_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.uom_uom_id_seq OWNER TO admin; -- -- Name: uom_uom_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE uom_uom_id_seq OWNED BY uom.uom_id; -- -- Name: uom_uom_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('uom_uom_id_seq', 8, true); -- -- Name: uomconv; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE uomconv ( uomconv_id integer NOT NULL, uomconv_from_uom_id integer NOT NULL, uomconv_from_value numeric(20,10) NOT NULL, uomconv_to_uom_id integer NOT NULL, uomconv_to_value numeric(20,10) NOT NULL, uomconv_fractional boolean DEFAULT false NOT NULL ); ALTER TABLE public.uomconv OWNER TO admin; -- -- Name: TABLE uomconv; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE uomconv IS 'UOM conversion information. From Unit to To Unit with a value per ratio.'; -- -- Name: uomconv_uomconv_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE uomconv_uomconv_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.uomconv_uomconv_id_seq OWNER TO admin; -- -- Name: uomconv_uomconv_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE uomconv_uomconv_id_seq OWNED BY uomconv.uomconv_id; -- -- Name: uomconv_uomconv_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('uomconv_uomconv_id_seq', 1, true); -- -- Name: uomtype; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE uomtype ( uomtype_id integer NOT NULL, uomtype_name text NOT NULL, uomtype_descrip text, uomtype_multiple boolean DEFAULT false NOT NULL, CONSTRAINT uomtype_uomtype_name_check CHECK ((uomtype_name <> ''::text)) ); ALTER TABLE public.uomtype OWNER TO admin; -- -- Name: TABLE uomtype; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE uomtype IS 'UOM Type values.'; -- -- Name: uomtype_uomtype_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE uomtype_uomtype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.uomtype_uomtype_id_seq OWNER TO admin; -- -- Name: uomtype_uomtype_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE uomtype_uomtype_id_seq OWNED BY uomtype.uomtype_id; -- -- Name: uomtype_uomtype_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('uomtype_uomtype_id_seq', 4, true); -- -- Name: urlinfo_url_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE urlinfo_url_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.urlinfo_url_id_seq OWNER TO admin; -- -- Name: urlinfo_url_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE urlinfo_url_id_seq OWNED BY urlinfo.url_id; -- -- Name: urlinfo_url_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('urlinfo_url_id_seq', 1, false); -- -- Name: usrpref; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE usrpref ( usrpref_id integer DEFAULT nextval(('usrpref_usrpref_id_seq'::text)::regclass) NOT NULL, usrpref_name text, usrpref_value text, usrpref_username text ); ALTER TABLE public.usrpref OWNER TO admin; -- -- Name: TABLE usrpref; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE usrpref IS 'User Preferences information'; -- -- Name: usr; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW usr AS SELECT (pg_user.usesysid)::integer AS usr_id, (pg_user.usename)::text AS usr_username, COALESCE((SELECT usrpref.usrpref_value FROM usrpref WHERE ((usrpref.usrpref_username = (pg_user.usename)::text) AND (usrpref.usrpref_name = 'propername'::text))), ''::text) AS usr_propername, NULL::text AS usr_passwd, COALESCE((SELECT (usrpref.usrpref_value)::integer AS usrpref_value FROM usrpref WHERE ((usrpref.usrpref_username = (pg_user.usename)::text) AND (usrpref.usrpref_name = 'locale_id'::text))), COALESCE((SELECT locale.locale_id FROM locale WHERE (lower(locale.locale_code) = 'default'::text) LIMIT 1), (SELECT locale.locale_id FROM locale ORDER BY locale.locale_id LIMIT 1))) AS usr_locale_id, COALESCE((SELECT usrpref.usrpref_value FROM usrpref WHERE ((usrpref.usrpref_username = (pg_user.usename)::text) AND (usrpref.usrpref_name = 'initials'::text))), ''::text) AS usr_initials, COALESCE((SELECT CASE WHEN (usrpref.usrpref_value = 't'::text) THEN true ELSE false END AS "case" FROM usrpref WHERE ((usrpref.usrpref_username = (pg_user.usename)::text) AND (usrpref.usrpref_name = 'agent'::text))), false) AS usr_agent, COALESCE((SELECT CASE WHEN (usrpref.usrpref_value = 't'::text) THEN true ELSE false END AS "case" FROM usrpref WHERE ((usrpref.usrpref_username = (pg_user.usename)::text) AND (usrpref.usrpref_name = 'active'::text))), usercanlogin((pg_user.usename)::text)) AS usr_active, COALESCE((SELECT usrpref.usrpref_value FROM usrpref WHERE ((usrpref.usrpref_username = (pg_user.usename)::text) AND (usrpref.usrpref_name = 'email'::text))), ''::text) AS usr_email, COALESCE((SELECT usrpref.usrpref_value FROM usrpref WHERE ((usrpref.usrpref_username = (pg_user.usename)::text) AND (usrpref.usrpref_name = 'window'::text))), ''::text) AS usr_window FROM pg_user; ALTER TABLE public.usr OWNER TO admin; -- -- Name: usr_bak; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE usr_bak ( usr_id integer DEFAULT nextval(('usr_usr_id_seq'::text)::regclass) NOT NULL, usr_username text NOT NULL, usr_propername text, usr_passwd text, usr_locale_id integer NOT NULL, usr_initials text, usr_agent boolean NOT NULL, usr_active boolean NOT NULL, usr_email text, usr_window text ); ALTER TABLE public.usr_bak OWNER TO admin; -- -- Name: TABLE usr_bak; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE usr_bak IS 'User information'; -- -- Name: usr_usr_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE usr_usr_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.usr_usr_id_seq OWNER TO admin; -- -- Name: usr_usr_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('usr_usr_id_seq', 9, true); -- -- Name: usrgrp_usrgrp_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE usrgrp_usrgrp_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.usrgrp_usrgrp_id_seq OWNER TO admin; -- -- Name: usrgrp_usrgrp_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE usrgrp_usrgrp_id_seq OWNED BY usrgrp.usrgrp_id; -- -- Name: usrgrp_usrgrp_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('usrgrp_usrgrp_id_seq', 1, true); -- -- Name: usrpref_usrpref_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE usrpref_usrpref_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.usrpref_usrpref_id_seq OWNER TO admin; -- -- Name: usrpref_usrpref_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('usrpref_usrpref_id_seq', 421, true); -- -- Name: usrpriv_usrpriv_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE usrpriv_usrpriv_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.usrpriv_usrpriv_id_seq OWNER TO admin; -- -- Name: usrpriv_usrpriv_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('usrpriv_usrpriv_id_seq', 2879, true); -- -- Name: vend; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW vend AS SELECT vendinfo.vend_id, vendinfo.vend_name, m.addr_line1 AS vend_address1, m.addr_line2 AS vend_address2, m.addr_line3 AS vend_address3, m.addr_city AS vend_city, m.addr_state AS vend_state, m.addr_postalcode AS vend_zip, btrim(((c1.cntct_first_name || ' '::text) || c1.cntct_last_name)) AS vend_contact1, c1.cntct_phone AS vend_phone1, btrim(((c2.cntct_first_name || ' '::text) || c2.cntct_last_name)) AS vend_contact2, c2.cntct_phone AS vend_phone2, vendinfo.vend_lastpurchdate, vendinfo.vend_active, vendinfo.vend_po, vendinfo.vend_comments, vendinfo.vend_pocomments, vendinfo.vend_number, c1.cntct_fax AS vend_fax1, c2.cntct_fax AS vend_fax2, c1.cntct_email AS vend_email1, c2.cntct_email AS vend_email2, vendinfo.vend_1099, vendinfo.vend_exported, vendinfo.vend_fobsource, vendinfo.vend_fob, vendinfo.vend_terms_id, vendinfo.vend_shipvia, vendinfo.vend_vendtype_id, vendinfo.vend_qualified, vendinfo.vend_ediemail, vendinfo.vend_ediemailbody, vendinfo.vend_edisubject, vendinfo.vend_edifilename, vendinfo.vend_accntnum, vendinfo.vend_emailpodelivery, vendinfo.vend_restrictpurch, vendinfo.vend_edicc, m.addr_country AS vend_country, vendinfo.vend_curr_id, vendinfo.vend_taxzone_id FROM (((vendinfo LEFT JOIN cntct c1 ON ((vendinfo.vend_cntct1_id = c1.cntct_id))) LEFT JOIN addr m ON ((vendinfo.vend_addr_id = m.addr_id))) LEFT JOIN cntct c2 ON ((vendinfo.vend_cntct2_id = c2.cntct_id))); ALTER TABLE public.vend OWNER TO admin; -- -- Name: vend_vend_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE vend_vend_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.vend_vend_id_seq OWNER TO admin; -- -- Name: vend_vend_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('vend_vend_id_seq', 78, true); -- -- Name: vendaddr; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW vendaddr AS SELECT vendaddrinfo.vendaddr_id, vendaddrinfo.vendaddr_vend_id, vendaddrinfo.vendaddr_code, vendaddrinfo.vendaddr_name, m.addr_line1 AS vendaddr_address1, m.addr_line2 AS vendaddr_address2, m.addr_line3 AS vendaddr_address3, btrim(((c1.cntct_first_name || ' '::text) || c1.cntct_last_name)) AS vendaddr_contact1, c1.cntct_phone AS vendaddr_phone1, c1.cntct_fax AS vendaddr_fax1, m.addr_city AS vendaddr_city, m.addr_state AS vendaddr_state, m.addr_postalcode AS vendaddr_zipcode, m.addr_country AS vendaddr_country FROM ((vendaddrinfo LEFT JOIN cntct c1 ON ((vendaddrinfo.vendaddr_cntct_id = c1.cntct_id))) LEFT JOIN addr m ON ((vendaddrinfo.vendaddr_addr_id = m.addr_id))); ALTER TABLE public.vendaddr OWNER TO admin; -- -- Name: vendaddr_vendaddr_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE vendaddr_vendaddr_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.vendaddr_vendaddr_id_seq OWNER TO admin; -- -- Name: vendaddr_vendaddr_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('vendaddr_vendaddr_id_seq', 33, true); -- -- Name: vendtype_vendtype_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE vendtype_vendtype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.vendtype_vendtype_id_seq OWNER TO admin; -- -- Name: vendtype_vendtype_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE vendtype_vendtype_id_seq OWNED BY vendtype.vendtype_id; -- -- Name: vendtype_vendtype_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('vendtype_vendtype_id_seq', 20, true); -- -- Name: vodist; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE vodist ( vodist_id integer DEFAULT nextval(('"vodist_vodist_id_seq"'::text)::regclass) NOT NULL, vodist_poitem_id integer, vodist_vohead_id integer, vodist_costelem_id integer, vodist_accnt_id integer, vodist_amount numeric(18,6), vodist_qty numeric(18,6), vodist_expcat_id integer DEFAULT (-1), vodist_tax_id integer DEFAULT (-1), vodist_discountable boolean DEFAULT true NOT NULL, vodist_notes text ); ALTER TABLE public.vodist OWNER TO admin; -- -- Name: TABLE vodist; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE vodist IS 'Voucher distribution information'; -- -- Name: vodist_vodist_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE vodist_vodist_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.vodist_vodist_id_seq OWNER TO admin; -- -- Name: vodist_vodist_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('vodist_vodist_id_seq', 117, true); -- -- Name: vohead; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE vohead ( vohead_id integer DEFAULT nextval(('vohead_vohead_id_seq'::text)::regclass) NOT NULL, vohead_number text NOT NULL, vohead_pohead_id integer, vohead_posted boolean, vohead_duedate date, vohead_invcnumber text, vohead_amount numeric(16,4), vohead_docdate date, vohead_1099 boolean, vohead_distdate date, vohead_reference text, vohead_terms_id integer, vohead_vend_id integer, vohead_curr_id integer DEFAULT basecurrid(), vohead_adjtaxtype_id integer, vohead_freighttaxtype_id integer, vohead_gldistdate date, vohead_misc boolean, vohead_taxzone_id integer, vohead_taxtype_id integer, vohead_notes text, vohead_recurring_vohead_id integer, CONSTRAINT vohead_vohead_number_check CHECK ((vohead_number <> ''::text)) ); ALTER TABLE public.vohead OWNER TO admin; -- -- Name: TABLE vohead; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE vohead IS 'Voucher header information'; -- -- Name: vohead_vohead_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE vohead_vohead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.vohead_vohead_id_seq OWNER TO admin; -- -- Name: vohead_vohead_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('vohead_vohead_id_seq', 174, true); -- -- Name: voheadtax; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE voheadtax ( ) INHERITS (taxhist); ALTER TABLE public.voheadtax OWNER TO admin; -- -- Name: voitem; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE voitem ( voitem_id integer DEFAULT nextval(('"voitem_voitem_id_seq"'::text)::regclass) NOT NULL, voitem_vohead_id integer, voitem_poitem_id integer, voitem_close boolean, voitem_qty numeric(18,6), voitem_freight numeric(16,4) DEFAULT 0.0 NOT NULL, voitem_taxtype_id integer ); ALTER TABLE public.voitem OWNER TO admin; -- -- Name: TABLE voitem; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE voitem IS 'Voucher Line Item information'; -- -- Name: voitem_voitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE voitem_voitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.voitem_voitem_id_seq OWNER TO admin; -- -- Name: voitem_voitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('voitem_voitem_id_seq', 110, true); -- -- Name: voitemtax; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE voitemtax ( ) INHERITS (taxhist); ALTER TABLE public.voitemtax OWNER TO admin; -- -- Name: warehous; Type: VIEW; Schema: public; Owner: admin -- CREATE VIEW warehous AS SELECT whsinfo.warehous_id, whsinfo.warehous_code, whsinfo.warehous_descrip, m.addr_line1 AS warehous_addr1, m.addr_line2 AS warehous_addr2, m.addr_line3 AS warehous_addr3, m.addr_city AS warehous_addr4, m.addr_city AS warehous_city, m.addr_state AS warehous_state, m.addr_postalcode AS warehous_zip, m.addr_country AS warehous_country, whsinfo.warehous_fob, whsinfo.warehous_active, whsinfo.warehous_sitetype_id, whsinfo.warehous_counttag_prefix, whsinfo.warehous_counttag_number, whsinfo.warehous_bol_prefix, whsinfo.warehous_bol_number, whsinfo.warehous_shipping, whsinfo.warehous_useslips, whsinfo.warehous_usezones, whsinfo.warehous_aislesize, whsinfo.warehous_aislealpha, whsinfo.warehous_racksize, whsinfo.warehous_rackalpha, whsinfo.warehous_binsize, whsinfo.warehous_binalpha, whsinfo.warehous_locationsize, whsinfo.warehous_locationalpha, whsinfo.warehous_enforcearbl, whsinfo.warehous_default_accnt_id, whsinfo.warehous_shipping_commission FROM ((whsinfo LEFT JOIN cntct c1 ON ((whsinfo.warehous_cntct_id = c1.cntct_id))) LEFT JOIN addr m ON ((whsinfo.warehous_addr_id = m.addr_id))); ALTER TABLE public.warehous OWNER TO admin; -- -- Name: warehous_warehous_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE warehous_warehous_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.warehous_warehous_id_seq OWNER TO admin; -- -- Name: warehous_warehous_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('warehous_warehous_id_seq', 35, true); -- -- Name: whsezone_whsezone_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE whsezone_whsezone_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.whsezone_whsezone_id_seq OWNER TO admin; -- -- Name: whsezone_whsezone_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE whsezone_whsezone_id_seq OWNED BY whsezone.whsezone_id; -- -- Name: whsezone_whsezone_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('whsezone_whsezone_id_seq', 6, true); -- -- Name: wo_wo_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE wo_wo_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.wo_wo_id_seq OWNER TO admin; -- -- Name: wo_wo_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('wo_wo_id_seq', 445, true); -- -- Name: womatl_womatl_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE womatl_womatl_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.womatl_womatl_id_seq OWNER TO admin; -- -- Name: womatl_womatl_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('womatl_womatl_id_seq', 1292, true); -- -- Name: womatlpost; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE womatlpost ( womatlpost_id integer NOT NULL, womatlpost_womatl_id integer, womatlpost_invhist_id integer ); ALTER TABLE public.womatlpost OWNER TO admin; -- -- Name: TABLE womatlpost; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE womatlpost IS 'Table to tie work order to work order material transactions for efficient queries'; -- -- Name: womatlpost_womatlpost_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE womatlpost_womatlpost_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.womatlpost_womatlpost_id_seq OWNER TO admin; -- -- Name: womatlpost_womatlpost_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE womatlpost_womatlpost_id_seq OWNED BY womatlpost.womatlpost_id; -- -- Name: womatlpost_womatlpost_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('womatlpost_womatlpost_id_seq', 1, false); -- -- Name: womatlvar; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE womatlvar ( womatlvar_id integer DEFAULT nextval(('"womatlvar_womatlvar_id_seq"'::text)::regclass) NOT NULL, womatlvar_number integer, womatlvar_subnumber integer, womatlvar_posted date, womatlvar_parent_itemsite_id integer, womatlvar_component_itemsite_id integer, womatlvar_qtyord numeric(18,6), womatlvar_qtyrcv numeric(18,6), womatlvar_qtyiss numeric(18,6), womatlvar_qtyper numeric(18,6), womatlvar_scrap numeric(18,6), womatlvar_wipscrap numeric(18,6), womatlvar_bomitem_id integer, womatlvar_ref text, womatlvar_notes text, womatlvar_qtyfxd numeric(20,8) DEFAULT 0 NOT NULL ); ALTER TABLE public.womatlvar OWNER TO admin; -- -- Name: TABLE womatlvar; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE womatlvar IS 'Work Order Material Requirements Variance information'; -- -- Name: COLUMN womatlvar.womatlvar_qtyfxd; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON COLUMN womatlvar.womatlvar_qtyfxd IS 'The fixed quantity required'; -- -- Name: womatlvar_womatlvar_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE womatlvar_womatlvar_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ALTER TABLE public.womatlvar_womatlvar_id_seq OWNER TO admin; -- -- Name: womatlvar_womatlvar_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('womatlvar_womatlvar_id_seq', 44, true); -- -- Name: xcalitem_xcalitem_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE xcalitem_xcalitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.xcalitem_xcalitem_id_seq OWNER TO admin; -- -- Name: xcalitem_xcalitem_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('xcalitem_xcalitem_id_seq', 145, true); -- -- Name: xsltmap; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE xsltmap ( xsltmap_id integer NOT NULL, xsltmap_name text NOT NULL, xsltmap_doctype text NOT NULL, xsltmap_system text NOT NULL, xsltmap_import text NOT NULL, xsltmap_export text DEFAULT ''::text NOT NULL, CONSTRAINT xsltmap_check CHECK (((xsltmap_doctype <> ''::text) OR (xsltmap_system <> ''::text))), CONSTRAINT xsltmap_xsltmap_importexport_check CHECK (((xsltmap_import <> ''::text) OR (xsltmap_export <> ''::text))), CONSTRAINT xsltmap_xsltmap_name_check CHECK ((xsltmap_name <> ''::text)) ); ALTER TABLE public.xsltmap OWNER TO admin; -- -- Name: TABLE xsltmap; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE xsltmap IS 'Mapping of XML System identifiers to XSLT transformation files'; -- -- Name: xsltmap_xsltmap_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE xsltmap_xsltmap_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.xsltmap_xsltmap_id_seq OWNER TO admin; -- -- Name: xsltmap_xsltmap_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE xsltmap_xsltmap_id_seq OWNED BY xsltmap.xsltmap_id; -- -- Name: xsltmap_xsltmap_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('xsltmap_xsltmap_id_seq', 1, true); -- -- Name: yearperiod; Type: TABLE; Schema: public; Owner: admin; Tablespace: -- CREATE TABLE yearperiod ( yearperiod_id integer NOT NULL, yearperiod_start date NOT NULL, yearperiod_end date NOT NULL, yearperiod_closed boolean DEFAULT false NOT NULL ); ALTER TABLE public.yearperiod OWNER TO admin; -- -- Name: TABLE yearperiod; Type: COMMENT; Schema: public; Owner: admin -- COMMENT ON TABLE yearperiod IS 'Accounting Year Periods information'; -- -- Name: yearperiod_yearperiod_id_seq; Type: SEQUENCE; Schema: public; Owner: admin -- CREATE SEQUENCE yearperiod_yearperiod_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE public.yearperiod_yearperiod_id_seq OWNER TO admin; -- -- Name: yearperiod_yearperiod_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: admin -- ALTER SEQUENCE yearperiod_yearperiod_id_seq OWNED BY yearperiod.yearperiod_id; -- -- Name: yearperiod_yearperiod_id_seq; Type: SEQUENCE SET; Schema: public; Owner: admin -- SELECT pg_catalog.setval('yearperiod_yearperiod_id_seq', 9, true); SET search_path = te, pg_catalog; -- -- Name: pkgcmd; Type: TABLE; Schema: te; Owner: admin; Tablespace: -- CREATE TABLE pkgcmd ( cmd_id integer DEFAULT nextval('public.cmd_cmd_id_seq'::regclass) ) INHERITS (public.cmd); ALTER TABLE te.pkgcmd OWNER TO admin; -- -- Name: pkgcmdarg; Type: TABLE; Schema: te; Owner: admin; Tablespace: -- CREATE TABLE pkgcmdarg ( cmdarg_id integer DEFAULT nextval('public.cmdarg_cmdarg_id_seq'::regclass) ) INHERITS (public.cmdarg); ALTER TABLE te.pkgcmdarg OWNER TO admin; -- -- Name: pkgimage; Type: TABLE; Schema: te; Owner: admin; Tablespace: -- CREATE TABLE pkgimage ( image_id integer DEFAULT nextval('public.image_image_id_seq'::regclass) ) INHERITS (public.image); ALTER TABLE te.pkgimage OWNER TO admin; -- -- Name: pkgmetasql; Type: TABLE; Schema: te; Owner: admin; Tablespace: -- CREATE TABLE pkgmetasql ( metasql_id integer DEFAULT nextval('public.metasql_metasql_id_seq'::regclass) ) INHERITS (public.metasql); ALTER TABLE te.pkgmetasql OWNER TO admin; -- -- Name: pkgpriv; Type: TABLE; Schema: te; Owner: admin; Tablespace: -- CREATE TABLE pkgpriv ( priv_id integer DEFAULT nextval('public.priv_priv_id_seq'::regclass) ) INHERITS (public.priv); ALTER TABLE te.pkgpriv OWNER TO admin; -- -- Name: pkgreport; Type: TABLE; Schema: te; Owner: admin; Tablespace: -- CREATE TABLE pkgreport ( report_id integer DEFAULT nextval('public.report_report_id_seq'::regclass) ) INHERITS (public.report); ALTER TABLE te.pkgreport OWNER TO admin; -- -- Name: pkgscript; Type: TABLE; Schema: te; Owner: admin; Tablespace: -- CREATE TABLE pkgscript ( script_id integer DEFAULT nextval('public.script_script_id_seq'::regclass) ) INHERITS (public.script); ALTER TABLE te.pkgscript OWNER TO admin; -- -- Name: pkguiform; Type: TABLE; Schema: te; Owner: admin; Tablespace: -- CREATE TABLE pkguiform ( uiform_id integer DEFAULT nextval('public.uiform_uiform_id_seq'::regclass) ) INHERITS (public.uiform); ALTER TABLE te.pkguiform OWNER TO admin; -- -- Name: tecustrate; Type: TABLE; Schema: te; Owner: admin; Tablespace: -- CREATE TABLE tecustrate ( tecustrate_cust_id integer NOT NULL, tecustrate_rate numeric(16,4) NOT NULL, tecustrate_id integer NOT NULL, tecustrate_curr_id integer DEFAULT public.basecurrid() NOT NULL ); ALTER TABLE te.tecustrate OWNER TO admin; -- -- Name: TABLE tecustrate; Type: COMMENT; Schema: te; Owner: admin -- COMMENT ON TABLE tecustrate IS 'Default Customer Billing rate for Time/Expense'; -- -- Name: tecustrate_tecustrate_id_seq; Type: SEQUENCE; Schema: te; Owner: admin -- CREATE SEQUENCE tecustrate_tecustrate_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE te.tecustrate_tecustrate_id_seq OWNER TO admin; -- -- Name: tecustrate_tecustrate_id_seq; Type: SEQUENCE OWNED BY; Schema: te; Owner: admin -- ALTER SEQUENCE tecustrate_tecustrate_id_seq OWNED BY tecustrate.tecustrate_id; -- -- Name: tecustrate_tecustrate_id_seq; Type: SEQUENCE SET; Schema: te; Owner: admin -- SELECT pg_catalog.setval('tecustrate_tecustrate_id_seq', 1, false); -- -- Name: teemp; Type: TABLE; Schema: te; Owner: admin; Tablespace: -- CREATE TABLE teemp ( teemp_id integer NOT NULL, teemp_emp_id integer, teemp_contractor boolean DEFAULT false ); ALTER TABLE te.teemp OWNER TO admin; -- -- Name: teemp_teemp_id_seq; Type: SEQUENCE; Schema: te; Owner: admin -- CREATE SEQUENCE teemp_teemp_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE te.teemp_teemp_id_seq OWNER TO admin; -- -- Name: teemp_teemp_id_seq; Type: SEQUENCE OWNED BY; Schema: te; Owner: admin -- ALTER SEQUENCE teemp_teemp_id_seq OWNED BY teemp.teemp_id; -- -- Name: teemp_teemp_id_seq; Type: SEQUENCE SET; Schema: te; Owner: admin -- SELECT pg_catalog.setval('teemp_teemp_id_seq', 1, false); -- -- Name: teexp; Type: TABLE; Schema: te; Owner: admin; Tablespace: -- CREATE TABLE teexp ( teexp_id integer NOT NULL, teexp_expcat_id integer, teexp_accnt_id integer ); ALTER TABLE te.teexp OWNER TO admin; -- -- Name: TABLE teexp; Type: COMMENT; Schema: te; Owner: admin -- COMMENT ON TABLE teexp IS 'Expense/Item'; -- -- Name: timesheet_seq; Type: SEQUENCE; Schema: te; Owner: admin -- CREATE SEQUENCE timesheet_seq START WITH 1000 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE te.timesheet_seq OWNER TO admin; -- -- Name: timesheet_seq; Type: SEQUENCE SET; Schema: te; Owner: admin -- SELECT pg_catalog.setval('timesheet_seq', 1000, false); -- -- Name: tehead; Type: TABLE; Schema: te; Owner: admin; Tablespace: -- CREATE TABLE tehead ( tehead_id integer NOT NULL, tehead_number text DEFAULT nextval('timesheet_seq'::regclass), tehead_weekending date, tehead_lastupdated timestamp without time zone DEFAULT now() NOT NULL, tehead_notes text, tehead_status character(1) DEFAULT 'O'::bpchar NOT NULL, tehead_emp_id integer, tehead_warehous_id integer NOT NULL, tehead_username text DEFAULT "current_user"() NOT NULL, CONSTRAINT tehead_tehead_status_check CHECK ((tehead_status = ANY (ARRAY['O'::bpchar, 'A'::bpchar, 'C'::bpchar]))) ); ALTER TABLE te.tehead OWNER TO admin; -- -- Name: TABLE tehead; Type: COMMENT; Schema: te; Owner: admin -- COMMENT ON TABLE tehead IS 'time/expense header'; -- -- Name: tehead_tehead_id_seq; Type: SEQUENCE; Schema: te; Owner: admin -- CREATE SEQUENCE tehead_tehead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE te.tehead_tehead_id_seq OWNER TO admin; -- -- Name: tehead_tehead_id_seq; Type: SEQUENCE OWNED BY; Schema: te; Owner: admin -- ALTER SEQUENCE tehead_tehead_id_seq OWNED BY tehead.tehead_id; -- -- Name: tehead_tehead_id_seq; Type: SEQUENCE SET; Schema: te; Owner: admin -- SELECT pg_catalog.setval('tehead_tehead_id_seq', 1, false); -- -- Name: teitem; Type: TABLE; Schema: te; Owner: admin; Tablespace: -- CREATE TABLE teitem ( teitem_id integer NOT NULL, teitem_tehead_id integer, teitem_linenumber integer NOT NULL, teitem_type character(1) NOT NULL, teitem_workdate date, teitem_cust_id integer, teitem_vend_id integer, teitem_po text, teitem_item_id integer NOT NULL, teitem_qty numeric NOT NULL, teitem_rate numeric NOT NULL, teitem_total numeric NOT NULL, teitem_prjtask_id numeric, teitem_lastupdated timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, teitem_billable boolean, teitem_prepaid boolean, teitem_notes text, teitem_posted boolean DEFAULT false, teitem_curr_id integer DEFAULT public.basecurrid() NOT NULL, teitem_uom_id integer, teitem_invcitem_id integer, teitem_vodist_id integer, teitem_postedvalue numeric DEFAULT 0 NOT NULL, teitem_empcost numeric ); ALTER TABLE te.teitem OWNER TO admin; -- -- Name: TABLE teitem; Type: COMMENT; Schema: te; Owner: admin -- COMMENT ON TABLE teitem IS 'time/expense detail'; -- -- Name: COLUMN teitem.teitem_type; Type: COMMENT; Schema: te; Owner: admin -- COMMENT ON COLUMN teitem.teitem_type IS 'T or E'; -- -- Name: COLUMN teitem.teitem_vend_id; Type: COMMENT; Schema: te; Owner: admin -- COMMENT ON COLUMN teitem.teitem_vend_id IS 'future use - for payment of vendor for expenses'; -- -- Name: COLUMN teitem.teitem_prepaid; Type: COMMENT; Schema: te; Owner: admin -- COMMENT ON COLUMN teitem.teitem_prepaid IS 'Used for expenses only. CC paid expenses would be prepaid.'; -- -- Name: teitem_teitem_id_seq; Type: SEQUENCE; Schema: te; Owner: admin -- CREATE SEQUENCE teitem_teitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE te.teitem_teitem_id_seq OWNER TO admin; -- -- Name: teitem_teitem_id_seq; Type: SEQUENCE OWNED BY; Schema: te; Owner: admin -- ALTER SEQUENCE teitem_teitem_id_seq OWNED BY teitem.teitem_id; -- -- Name: teitem_teitem_id_seq; Type: SEQUENCE SET; Schema: te; Owner: admin -- SELECT pg_catalog.setval('teitem_teitem_id_seq', 1, false); -- -- Name: teprj; Type: TABLE; Schema: te; Owner: admin; Tablespace: -- CREATE TABLE teprj ( teprj_id integer NOT NULL, teprj_prj_id integer, teprj_cust_id integer, teprj_rate numeric, teprj_curr_id integer ); ALTER TABLE te.teprj OWNER TO admin; -- -- Name: TABLE teprj; Type: COMMENT; Schema: te; Owner: admin -- COMMENT ON TABLE teprj IS 't/e information for projects'; -- -- Name: teprj_teprj_id_seq; Type: SEQUENCE; Schema: te; Owner: admin -- CREATE SEQUENCE teprj_teprj_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE te.teprj_teprj_id_seq OWNER TO admin; -- -- Name: teprj_teprj_id_seq; Type: SEQUENCE OWNED BY; Schema: te; Owner: admin -- ALTER SEQUENCE teprj_teprj_id_seq OWNED BY teprj.teprj_id; -- -- Name: teprj_teprj_id_seq; Type: SEQUENCE SET; Schema: te; Owner: admin -- SELECT pg_catalog.setval('teprj_teprj_id_seq', 1, false); -- -- Name: teprjtask; Type: TABLE; Schema: te; Owner: admin; Tablespace: -- CREATE TABLE teprjtask ( teprjtask_id integer NOT NULL, teprjtask_cust_id integer, teprjtask_rate numeric, teprjtask_item_id integer, teprjtask_prjtask_id integer, teprjtask_curr_id integer DEFAULT public.basecurrid() ); ALTER TABLE te.teprjtask OWNER TO admin; -- -- Name: TABLE teprjtask; Type: COMMENT; Schema: te; Owner: admin -- COMMENT ON TABLE teprjtask IS 't/e information for tasks'; -- -- Name: teprjtask_teprjtask_id_seq; Type: SEQUENCE; Schema: te; Owner: admin -- CREATE SEQUENCE teprjtask_teprjtask_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ALTER TABLE te.teprjtask_teprjtask_id_seq OWNER TO admin; -- -- Name: teprjtask_teprjtask_id_seq; Type: SEQUENCE OWNED BY; Schema: te; Owner: admin -- ALTER SEQUENCE teprjtask_teprjtask_id_seq OWNED BY teprjtask.teprjtask_id; -- -- Name: teprjtask_teprjtask_id_seq; Type: SEQUENCE SET; Schema: te; Owner: admin -- SELECT pg_catalog.setval('teprjtask_teprjtask_id_seq', 1, false); SET search_path = xtdesktop, pg_catalog; -- -- Name: pkgcmd; Type: TABLE; Schema: xtdesktop; Owner: admin; Tablespace: -- CREATE TABLE pkgcmd ( cmd_id integer DEFAULT nextval('public.cmd_cmd_id_seq'::regclass) ) INHERITS (public.cmd); ALTER TABLE xtdesktop.pkgcmd OWNER TO admin; -- -- Name: pkgcmdarg; Type: TABLE; Schema: xtdesktop; Owner: admin; Tablespace: -- CREATE TABLE pkgcmdarg ( cmdarg_id integer DEFAULT nextval('public.cmdarg_cmdarg_id_seq'::regclass) ) INHERITS (public.cmdarg); ALTER TABLE xtdesktop.pkgcmdarg OWNER TO admin; -- -- Name: pkgimage; Type: TABLE; Schema: xtdesktop; Owner: admin; Tablespace: -- CREATE TABLE pkgimage ( image_id integer DEFAULT nextval('public.image_image_id_seq'::regclass) ) INHERITS (public.image); ALTER TABLE xtdesktop.pkgimage OWNER TO admin; -- -- Name: pkgmetasql; Type: TABLE; Schema: xtdesktop; Owner: admin; Tablespace: -- CREATE TABLE pkgmetasql ( metasql_id integer DEFAULT nextval('public.metasql_metasql_id_seq'::regclass) ) INHERITS (public.metasql); ALTER TABLE xtdesktop.pkgmetasql OWNER TO admin; -- -- Name: pkgpriv; Type: TABLE; Schema: xtdesktop; Owner: admin; Tablespace: -- CREATE TABLE pkgpriv ( priv_id integer DEFAULT nextval('public.priv_priv_id_seq'::regclass) ) INHERITS (public.priv); ALTER TABLE xtdesktop.pkgpriv OWNER TO admin; -- -- Name: pkgreport; Type: TABLE; Schema: xtdesktop; Owner: admin; Tablespace: -- CREATE TABLE pkgreport ( report_id integer DEFAULT nextval('public.report_report_id_seq'::regclass) ) INHERITS (public.report); ALTER TABLE xtdesktop.pkgreport OWNER TO admin; -- -- Name: pkgscript; Type: TABLE; Schema: xtdesktop; Owner: admin; Tablespace: -- CREATE TABLE pkgscript ( script_id integer DEFAULT nextval('public.script_script_id_seq'::regclass) ) INHERITS (public.script); ALTER TABLE xtdesktop.pkgscript OWNER TO admin; -- -- Name: pkguiform; Type: TABLE; Schema: xtdesktop; Owner: admin; Tablespace: -- CREATE TABLE pkguiform ( uiform_id integer DEFAULT nextval('public.uiform_uiform_id_seq'::regclass) ) INHERITS (public.uiform); ALTER TABLE xtdesktop.pkguiform OWNER TO admin; SET search_path = public, pg_catalog; -- -- Name: addr_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE addr ALTER COLUMN addr_id SET DEFAULT nextval('addr_addr_id_seq'::regclass); -- -- Name: alarm_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE alarm ALTER COLUMN alarm_id SET DEFAULT nextval('alarm_alarm_id_seq'::regclass); -- -- Name: apaccnt_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE apaccnt ALTER COLUMN apaccnt_id SET DEFAULT nextval('apaccnt_apaccnt_id_seq'::regclass); -- -- Name: apapply_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE apapply ALTER COLUMN apapply_id SET DEFAULT nextval('apapply_apapply_id_seq'::regclass); -- -- Name: apcreditapply_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE apcreditapply ALTER COLUMN apcreditapply_id SET DEFAULT nextval('apcreditapply_apcreditapply_id_seq'::regclass); -- -- Name: apselect_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE apselect ALTER COLUMN apselect_id SET DEFAULT nextval('apselect_apselect_id_seq'::regclass); -- -- Name: arapply_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE arapply ALTER COLUMN arapply_id SET DEFAULT nextval('arapply_arapply_id_seq'::regclass); -- -- Name: asohist_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE asohist ALTER COLUMN asohist_id SET DEFAULT nextval('asohist_asohist_id_seq'::regclass); -- -- Name: atlasmap_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE atlasmap ALTER COLUMN atlasmap_id SET DEFAULT nextval('atlasmap_atlasmap_id_seq'::regclass); -- -- Name: bankaccnt_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE bankaccnt ALTER COLUMN bankaccnt_id SET DEFAULT nextval('bankaccnt_bankaccnt_id_seq'::regclass); -- -- Name: bankadj_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE bankadj ALTER COLUMN bankadj_id SET DEFAULT nextval('bankadj_bankadj_id_seq'::regclass); -- -- Name: bankadjtype_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE bankadjtype ALTER COLUMN bankadjtype_id SET DEFAULT nextval('bankadjtype_bankadjtype_id_seq'::regclass); -- -- Name: bankrec_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE bankrec ALTER COLUMN bankrec_id SET DEFAULT nextval('bankrec_bankrec_id_seq'::regclass); -- -- Name: bankrecitem_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE bankrecitem ALTER COLUMN bankrecitem_id SET DEFAULT nextval('bankrecitem_bankrecitem_id_seq'::regclass); -- -- Name: bomitemcost_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE bomitemcost ALTER COLUMN bomitemcost_id SET DEFAULT nextval('bomitemcost_bomitemcost_id_seq'::regclass); -- -- Name: bomitemsub_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE bomitemsub ALTER COLUMN bomitemsub_id SET DEFAULT nextval('bomitemsub_bomitemsub_id_seq'::regclass); -- -- Name: bomwork_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE bomwork ALTER COLUMN bomwork_id SET DEFAULT nextval('bomwork_bomwork_id_seq'::regclass); -- -- Name: budghead_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE budghead ALTER COLUMN budghead_id SET DEFAULT nextval('budghead_budghead_id_seq'::regclass); -- -- Name: budgitem_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE budgitem ALTER COLUMN budgitem_id SET DEFAULT nextval('budgitem_budgitem_id_seq'::regclass); -- -- Name: cashrcpt_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE cashrcpt ALTER COLUMN cashrcpt_id SET DEFAULT nextval('cashrcpt_cashrcpt_id_seq'::regclass); -- -- Name: cashrcptitem_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE cashrcptitem ALTER COLUMN cashrcptitem_id SET DEFAULT nextval('cashrcptitem_cashrcptitem_id_seq'::regclass); -- -- Name: cashrcptmisc_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE cashrcptmisc ALTER COLUMN cashrcptmisc_id SET DEFAULT nextval('cashrcptmisc_cashrcptmisc_id_seq'::regclass); -- -- Name: ccard_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE ccard ALTER COLUMN ccard_id SET DEFAULT nextval('ccard_ccard_id_seq'::regclass); -- -- Name: ccardaud_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE ccardaud ALTER COLUMN ccardaud_id SET DEFAULT nextval('ccardaud_ccardaud_id_seq'::regclass); -- -- Name: ccbank_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE ccbank ALTER COLUMN ccbank_id SET DEFAULT nextval('ccbank_ccbank_id_seq'::regclass); -- -- Name: ccpay_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE ccpay ALTER COLUMN ccpay_id SET DEFAULT nextval('ccpay_ccpay_id_seq'::regclass); -- -- Name: char_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE "char" ALTER COLUMN char_id SET DEFAULT nextval('char_char_id_seq'::regclass); -- -- Name: charass_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE charass ALTER COLUMN charass_id SET DEFAULT nextval('charass_charass_id_seq'::regclass); -- -- Name: charopt_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE charopt ALTER COLUMN charopt_id SET DEFAULT nextval('charopt_charopt_id_seq'::regclass); -- -- Name: checkhead_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE checkhead ALTER COLUMN checkhead_id SET DEFAULT nextval('checkhead_checkhead_id_seq'::regclass); -- -- Name: checkitem_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE checkitem ALTER COLUMN checkitem_id SET DEFAULT nextval('checkitem_checkitem_id_seq'::regclass); -- -- Name: cmnttype_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE cmnttype ALTER COLUMN cmnttype_id SET DEFAULT nextval('cmnttype_cmnttype_id_seq'::regclass); -- -- Name: cmnttypesource_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE cmnttypesource ALTER COLUMN cmnttypesource_id SET DEFAULT nextval('cmnttypesource_cmnttypesource_id_seq'::regclass); -- -- Name: cntct_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE cntct ALTER COLUMN cntct_id SET DEFAULT nextval('cntct_cntct_id_seq'::regclass); -- -- Name: cntctaddr_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE cntctaddr ALTER COLUMN cntctaddr_id SET DEFAULT nextval('cntctaddr_cntctaddr_id_seq'::regclass); -- -- Name: cntctdata_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE cntctdata ALTER COLUMN cntctdata_id SET DEFAULT nextval('cntctdata_cntctdata_id_seq'::regclass); -- -- Name: cntcteml_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE cntcteml ALTER COLUMN cntcteml_id SET DEFAULT nextval('cntcteml_cntcteml_id_seq'::regclass); -- -- Name: company_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE company ALTER COLUMN company_id SET DEFAULT nextval('company_company_id_seq'::regclass); -- -- Name: contrct_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE contrct ALTER COLUMN contrct_id SET DEFAULT nextval('contrct_contrct_id_seq'::regclass); -- -- Name: country_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE country ALTER COLUMN country_id SET DEFAULT nextval('country_country_id_seq'::regclass); -- -- Name: crmacct_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE crmacct ALTER COLUMN crmacct_id SET DEFAULT nextval('crmacct_crmacct_id_seq'::regclass); -- -- Name: curr_rate_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE curr_rate ALTER COLUMN curr_rate_id SET DEFAULT nextval('curr_rate_curr_rate_id_seq'::regclass); -- -- Name: curr_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE curr_symbol ALTER COLUMN curr_id SET DEFAULT nextval('curr_symbol_curr_id_seq'::regclass); -- -- Name: dept_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE dept ALTER COLUMN dept_id SET DEFAULT nextval('dept_dept_id_seq'::regclass); -- -- Name: docass_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE docass ALTER COLUMN docass_id SET DEFAULT nextval('docass_docass_id_seq'::regclass); -- -- Name: emp_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE emp ALTER COLUMN emp_id SET DEFAULT nextval('emp_emp_id_seq'::regclass); -- -- Name: empgrp_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE empgrp ALTER COLUMN empgrp_id SET DEFAULT nextval('empgrp_empgrp_id_seq'::regclass); -- -- Name: empgrpitem_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE empgrpitem ALTER COLUMN empgrpitem_id SET DEFAULT nextval('empgrpitem_empgrpitem_id_seq'::regclass); -- -- Name: expcat_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE expcat ALTER COLUMN expcat_id SET DEFAULT nextval('expcat_expcat_id_seq'::regclass); -- -- Name: file_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE file ALTER COLUMN file_id SET DEFAULT nextval('file_file_id_seq'::regclass); -- -- Name: filter_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE filter ALTER COLUMN filter_id SET DEFAULT nextval('filter_filter_id_seq'::regclass); -- -- Name: flcol_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE flcol ALTER COLUMN flcol_id SET DEFAULT nextval('flcol_flcol_id_seq'::regclass); -- -- Name: flgrp_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE flgrp ALTER COLUMN flgrp_id SET DEFAULT nextval('flgrp_flgrp_id_seq'::regclass); -- -- Name: flhead_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE flhead ALTER COLUMN flhead_id SET DEFAULT nextval('flhead_flhead_id_seq'::regclass); -- -- Name: flitem_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE flitem ALTER COLUMN flitem_id SET DEFAULT nextval('flitem_flitem_id_seq'::regclass); -- -- Name: flnotes_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE flnotes ALTER COLUMN flnotes_id SET DEFAULT nextval('flnotes_flnotes_id_seq'::regclass); -- -- Name: flrpt_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE flrpt ALTER COLUMN flrpt_id SET DEFAULT nextval('flrpt_flrpt_id_seq'::regclass); -- -- Name: flspec_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE flspec ALTER COLUMN flspec_id SET DEFAULT nextval('flspec_flspec_id_seq'::regclass); -- -- Name: freightclass_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE freightclass ALTER COLUMN freightclass_id SET DEFAULT nextval('freightclass_freightclass_id_seq'::regclass); -- -- Name: grp_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE grp ALTER COLUMN grp_id SET DEFAULT nextval('grp_grp_id_seq'::regclass); -- -- Name: grppriv_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE grppriv ALTER COLUMN grppriv_id SET DEFAULT nextval('grppriv_grppriv_id_seq'::regclass); -- -- Name: hnfc_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE hnfc ALTER COLUMN hnfc_id SET DEFAULT nextval('hnfc_hnfc_id_seq'::regclass); -- -- Name: incdt_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE incdt ALTER COLUMN incdt_id SET DEFAULT nextval('incdt_incdt_id_seq'::regclass); -- -- Name: incdtcat_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE incdtcat ALTER COLUMN incdtcat_id SET DEFAULT nextval('incdtcat_incdtcat_id_seq'::regclass); -- -- Name: incdthist_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE incdthist ALTER COLUMN incdthist_id SET DEFAULT nextval('incdthist_incdthist_id_seq'::regclass); -- -- Name: incdtpriority_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE incdtpriority ALTER COLUMN incdtpriority_id SET DEFAULT nextval('incdtpriority_incdtpriority_id_seq'::regclass); -- -- Name: incdtresolution_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE incdtresolution ALTER COLUMN incdtresolution_id SET DEFAULT nextval('incdtresolution_incdtresolution_id_seq'::regclass); -- -- Name: incdtseverity_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE incdtseverity ALTER COLUMN incdtseverity_id SET DEFAULT nextval('incdtseverity_incdtseverity_id_seq'::regclass); -- -- Name: invbal_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE invbal ALTER COLUMN invbal_id SET DEFAULT nextval('invbal_invbal_id_seq'::regclass); -- -- Name: invchead_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE invchead ALTER COLUMN invchead_id SET DEFAULT nextval('invchead_invchead_id_seq'::regclass); -- -- Name: invcitem_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE invcitem ALTER COLUMN invcitem_id SET DEFAULT nextval('invcitem_invcitem_id_seq'::regclass); -- -- Name: invhistexpcat_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE invhistexpcat ALTER COLUMN invhistexpcat_id SET DEFAULT nextval('invhistexpcat_invhistexpcat_id_seq'::regclass); -- -- Name: ipsass_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE ipsass ALTER COLUMN ipsass_id SET DEFAULT nextval('ipsass_ipsass_id_seq'::regclass); -- -- Name: ipsfreight_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE ipsfreight ALTER COLUMN ipsfreight_id SET DEFAULT nextval('ipsfreight_ipsfreight_id_seq'::regclass); -- -- Name: ipsitemchar_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE ipsitemchar ALTER COLUMN ipsitemchar_id SET DEFAULT nextval('ipsitemchar_ipsitemchar_id_seq'::regclass); -- -- Name: ipsprodcat_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE ipsprodcat_bak ALTER COLUMN ipsprodcat_id SET DEFAULT nextval('ipsprodcat_ipsprodcat_id_seq'::regclass); -- -- Name: itemlocpost_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE itemlocpost ALTER COLUMN itemlocpost_id SET DEFAULT nextval('itemlocpost_itemlocpost_id_seq'::regclass); -- -- Name: itemtax_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE itemtax ALTER COLUMN itemtax_id SET DEFAULT nextval('itemtax_itemtax_id_seq'::regclass); -- -- Name: itemtrans_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE itemtrans ALTER COLUMN itemtrans_id SET DEFAULT nextval('itemtrans_itemtrans_id_seq'::regclass); -- -- Name: itemuom_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE itemuom ALTER COLUMN itemuom_id SET DEFAULT nextval('itemuom_itemuom_id_seq'::regclass); -- -- Name: itemuomconv_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE itemuomconv ALTER COLUMN itemuomconv_id SET DEFAULT nextval('itemuomconv_itemuomconv_id_seq'::regclass); -- -- Name: labeldef_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE labeldef ALTER COLUMN labeldef_id SET DEFAULT nextval('labeldef_labeldef_id_seq'::regclass); -- -- Name: lang_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE lang ALTER COLUMN lang_id SET DEFAULT nextval('lang_lang_id_seq'::regclass); -- -- Name: metricenc_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE metricenc ALTER COLUMN metricenc_id SET DEFAULT nextval('metricenc_metricenc_id_seq'::regclass); -- -- Name: ophead_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE ophead ALTER COLUMN ophead_id SET DEFAULT nextval('ophead_ophead_id_seq'::regclass); -- -- Name: opsource_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE opsource ALTER COLUMN opsource_id SET DEFAULT nextval('opsource_opsource_id_seq'::regclass); -- -- Name: opstage_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE opstage ALTER COLUMN opstage_id SET DEFAULT nextval('opstage_opstage_id_seq'::regclass); -- -- Name: optype_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE optype ALTER COLUMN optype_id SET DEFAULT nextval('optype_optype_id_seq'::regclass); -- -- Name: pack_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE pack ALTER COLUMN pack_id SET DEFAULT nextval('pack_pack_id_seq'::regclass); -- -- Name: period_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE period ALTER COLUMN period_id SET DEFAULT nextval('period_period_id_seq'::regclass); -- -- Name: pkgdep_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE pkgdep ALTER COLUMN pkgdep_id SET DEFAULT nextval('pkgdep_pkgdep_id_seq'::regclass); -- -- Name: pkghead_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE pkghead ALTER COLUMN pkghead_id SET DEFAULT nextval('pkghead_pkghead_id_seq'::regclass); -- -- Name: pkgitem_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE pkgitem ALTER COLUMN pkgitem_id SET DEFAULT nextval('pkgitem_pkgitem_id_seq'::regclass); -- -- Name: potype_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE potype ALTER COLUMN potype_id SET DEFAULT nextval('potype_potype_id_seq'::regclass); -- -- Name: prftcntr_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE prftcntr ALTER COLUMN prftcntr_id SET DEFAULT nextval('prftcntr_prftcntr_id_seq'::regclass); -- -- Name: prj_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE prj ALTER COLUMN prj_id SET DEFAULT nextval('prj_prj_id_seq'::regclass); -- -- Name: prjtask_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE prjtask ALTER COLUMN prjtask_id SET DEFAULT nextval('prjtask_prjtask_id_seq'::regclass); -- -- Name: prjtaskuser_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE prjtaskuser ALTER COLUMN prjtaskuser_id SET DEFAULT nextval('prjtaskuser_prjtaskuser_id_seq'::regclass); -- -- Name: qryhead_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE qryhead ALTER COLUMN qryhead_id SET DEFAULT nextval('qryhead_qryhead_id_seq'::regclass); -- -- Name: qryitem_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE qryitem ALTER COLUMN qryitem_id SET DEFAULT nextval('qryitem_qryitem_id_seq'::regclass); -- -- Name: recur_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE recur ALTER COLUMN recur_id SET DEFAULT nextval('recur_recur_id_seq'::regclass); -- -- Name: recurtype_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE recurtype ALTER COLUMN recurtype_id SET DEFAULT nextval('recurtype_recurtype_id_seq'::regclass); -- -- Name: recv_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE recv ALTER COLUMN recv_id SET DEFAULT nextval('recv_recv_id_seq'::regclass); -- -- Name: rsncode_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE rsncode ALTER COLUMN rsncode_id SET DEFAULT nextval('rsncode_rsncode_id_seq'::regclass); -- -- Name: salescat_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE salescat ALTER COLUMN salescat_id SET DEFAULT nextval('salescat_salescat_id_seq'::regclass); -- -- Name: saletype_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE saletype ALTER COLUMN saletype_id SET DEFAULT nextval('saletype_saletype_id_seq'::regclass); -- -- Name: schemaord_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE schemaord ALTER COLUMN schemaord_id SET DEFAULT nextval('schemaord_schemaord_id_seq'::regclass); -- -- Name: shift_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE shift ALTER COLUMN shift_id SET DEFAULT nextval('shift_shift_id_seq'::regclass); -- -- Name: shipchrg_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE shipchrg ALTER COLUMN shipchrg_id SET DEFAULT nextval('shipchrg_shipchrg_id_seq'::regclass); -- -- Name: shiphead_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE shiphead ALTER COLUMN shiphead_id SET DEFAULT nextval('shiphead_shiphead_id_seq'::regclass); -- -- Name: shipitem_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE shipitem ALTER COLUMN shipitem_id SET DEFAULT nextval('shipitem_shipitem_id_seq'::regclass); -- -- Name: sitetype_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE sitetype ALTER COLUMN sitetype_id SET DEFAULT nextval('sitetype_sitetype_id_seq'::regclass); -- -- Name: source_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE source ALTER COLUMN source_id SET DEFAULT nextval('source_source_id_seq'::regclass); -- -- Name: state_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE state ALTER COLUMN state_id SET DEFAULT nextval('state_state_id_seq'::regclass); -- -- Name: status_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE status ALTER COLUMN status_id SET DEFAULT nextval('status_status_id_seq'::regclass); -- -- Name: stdjrnl_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE stdjrnl ALTER COLUMN stdjrnl_id SET DEFAULT nextval('stdjrnl_stdjrnl_id_seq'::regclass); -- -- Name: stdjrnlgrp_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE stdjrnlgrp ALTER COLUMN stdjrnlgrp_id SET DEFAULT nextval('stdjrnlgrp_stdjrnlgrp_id_seq'::regclass); -- -- Name: stdjrnlgrpitem_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE stdjrnlgrpitem ALTER COLUMN stdjrnlgrpitem_id SET DEFAULT nextval('stdjrnlgrpitem_stdjrnlgrpitem_id_seq'::regclass); -- -- Name: stdjrnlitem_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE stdjrnlitem ALTER COLUMN stdjrnlitem_id SET DEFAULT nextval('stdjrnlitem_stdjrnlitem_id_seq'::regclass); -- -- Name: subaccnt_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE subaccnt ALTER COLUMN subaccnt_id SET DEFAULT nextval('subaccnt_subaccnt_id_seq'::regclass); -- -- Name: subaccnttype_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE subaccnttype ALTER COLUMN subaccnttype_id SET DEFAULT nextval('subaccnttype_subaccnttype_id_seq'::regclass); -- -- Name: taxass_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE taxass ALTER COLUMN taxass_id SET DEFAULT nextval('taxass_taxass_id_seq'::regclass); -- -- Name: taxauth_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE taxauth ALTER COLUMN taxauth_id SET DEFAULT nextval('taxauth_taxauth_id_seq'::regclass); -- -- Name: taxclass_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE taxclass ALTER COLUMN taxclass_id SET DEFAULT nextval('taxclass_taxclass_id_seq'::regclass); -- -- Name: taxhist_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE taxhist ALTER COLUMN taxhist_id SET DEFAULT nextval('taxhist_taxhist_id_seq'::regclass); -- -- Name: taxrate_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE taxrate ALTER COLUMN taxrate_id SET DEFAULT nextval('taxrate_taxrate_id_seq'::regclass); -- -- Name: taxreg_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE taxreg ALTER COLUMN taxreg_id SET DEFAULT nextval('taxreg_taxreg_id_seq'::regclass); -- -- Name: taxtype_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE taxtype ALTER COLUMN taxtype_id SET DEFAULT nextval('taxtype_taxtype_id_seq'::regclass); -- -- Name: taxzone_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE taxzone ALTER COLUMN taxzone_id SET DEFAULT nextval('taxzone_taxzone_id_seq'::regclass); -- -- Name: todoitem_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE todoitem ALTER COLUMN todoitem_id SET DEFAULT nextval('todoitem_todoitem_id_seq'::regclass); -- -- Name: trialbal_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE trialbal ALTER COLUMN trialbal_id SET DEFAULT nextval('trialbal_trialbal_id_seq'::regclass); -- -- Name: uom_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE uom ALTER COLUMN uom_id SET DEFAULT nextval('uom_uom_id_seq'::regclass); -- -- Name: uomconv_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE uomconv ALTER COLUMN uomconv_id SET DEFAULT nextval('uomconv_uomconv_id_seq'::regclass); -- -- Name: uomtype_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE uomtype ALTER COLUMN uomtype_id SET DEFAULT nextval('uomtype_uomtype_id_seq'::regclass); -- -- Name: url_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE urlinfo ALTER COLUMN url_id SET DEFAULT nextval('urlinfo_url_id_seq'::regclass); -- -- Name: usrgrp_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE usrgrp ALTER COLUMN usrgrp_id SET DEFAULT nextval('usrgrp_usrgrp_id_seq'::regclass); -- -- Name: vendtype_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE vendtype ALTER COLUMN vendtype_id SET DEFAULT nextval('vendtype_vendtype_id_seq'::regclass); -- -- Name: whsezone_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE whsezone ALTER COLUMN whsezone_id SET DEFAULT nextval('whsezone_whsezone_id_seq'::regclass); -- -- Name: womatlpost_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE womatlpost ALTER COLUMN womatlpost_id SET DEFAULT nextval('womatlpost_womatlpost_id_seq'::regclass); -- -- Name: xsltmap_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE xsltmap ALTER COLUMN xsltmap_id SET DEFAULT nextval('xsltmap_xsltmap_id_seq'::regclass); -- -- Name: yearperiod_id; Type: DEFAULT; Schema: public; Owner: admin -- ALTER TABLE yearperiod ALTER COLUMN yearperiod_id SET DEFAULT nextval('yearperiod_yearperiod_id_seq'::regclass); SET search_path = te, pg_catalog; -- -- Name: tecustrate_id; Type: DEFAULT; Schema: te; Owner: admin -- ALTER TABLE tecustrate ALTER COLUMN tecustrate_id SET DEFAULT nextval('tecustrate_tecustrate_id_seq'::regclass); -- -- Name: teemp_id; Type: DEFAULT; Schema: te; Owner: admin -- ALTER TABLE teemp ALTER COLUMN teemp_id SET DEFAULT nextval('teemp_teemp_id_seq'::regclass); -- -- Name: tehead_id; Type: DEFAULT; Schema: te; Owner: admin -- ALTER TABLE tehead ALTER COLUMN tehead_id SET DEFAULT nextval('tehead_tehead_id_seq'::regclass); -- -- Name: teitem_id; Type: DEFAULT; Schema: te; Owner: admin -- ALTER TABLE teitem ALTER COLUMN teitem_id SET DEFAULT nextval('teitem_teitem_id_seq'::regclass); -- -- Name: teprj_id; Type: DEFAULT; Schema: te; Owner: admin -- ALTER TABLE teprj ALTER COLUMN teprj_id SET DEFAULT nextval('teprj_teprj_id_seq'::regclass); -- -- Name: teprjtask_id; Type: DEFAULT; Schema: te; Owner: admin -- ALTER TABLE teprjtask ALTER COLUMN teprjtask_id SET DEFAULT nextval('teprjtask_teprjtask_id_seq'::regclass); SET search_path = fixcountry, pg_catalog; -- -- Data for Name: pkgcmd; Type: TABLE DATA; Schema: fixcountry; Owner: admin -- COPY pkgcmd (cmd_id, cmd_module, cmd_title, cmd_descrip, cmd_privname, cmd_executable, cmd_name) FROM stdin; \. -- -- Data for Name: pkgcmdarg; Type: TABLE DATA; Schema: fixcountry; Owner: admin -- COPY pkgcmdarg (cmdarg_id, cmdarg_cmd_id, cmdarg_order, cmdarg_arg) FROM stdin; \. -- -- Data for Name: pkgimage; Type: TABLE DATA; Schema: fixcountry; Owner: admin -- COPY pkgimage (image_id, image_name, image_descrip, image_data) FROM stdin; \. -- -- Data for Name: pkgmetasql; Type: TABLE DATA; Schema: fixcountry; Owner: admin -- COPY pkgmetasql (metasql_id, metasql_group, metasql_name, metasql_notes, metasql_query, metasql_lastuser, metasql_lastupdate, metasql_grade) FROM stdin; 449 fixcountry strictcountrycheck select details about countries used throughout the database that do not match country.country_name a copy of crm_strictcountrycheck to avoid problems later if someone disables or removes the fixCountry package -- Group: fixcountry\n-- Name: strictcountrycheck\n-- Notes: select details about countries used throughout the database\n-- that do not match country.country_name\n-- a copy of crm_strictcountrycheck to avoid problems later if\n-- someone disables or removes the fixCountry package\n\nSELECT SUM(counter) AS counter FROM (\n\n SELECT COUNT(*) AS counter\n addr_id, 'Address' AS type, addr_number AS number, addr_country AS country, '' AS detail\n \n FROM addr\n WHERE addr_country != ''\n AND addr_country NOT IN (SELECT country_name\n FROM country\n WHERE country_name IS NOT NULL)\n UNION ALL\n SELECT COUNT(*)\n cmhead_id, 'Credit Memo', cmhead_number, cmhead_billtocountry, 'Bill-To'\n \n FROM cmhead\n WHERE cmhead_billtocountry != ''\n AND cmhead_billtocountry NOT IN (SELECT country_name\n FROM country\n WHERE country_name IS NOT NULL)\n AND (NOT cmhead_posted) \n UNION ALL\n SELECT COUNT(*)\n cmhead_id, 'Credit Memo', cmhead_number, cmhead_billtocountry, 'Ship-To'\n \n FROM cmhead\n WHERE cmhead_shipto_country != ''\n AND cmhead_shipto_country NOT IN (SELECT country_name\n FROM country\n WHERE country_name IS NOT NULL)\n AND (NOT cmhead_posted) \n UNION ALL\n SELECT COUNT(*)\n invchead_id, 'Invoice', invchead_invcnumber, invchead_billto_country, 'Bill-To'\n \n FROM invchead\n WHERE invchead_billto_country != ''\n AND invchead_billto_country NOT IN (SELECT country_name\n FROM country\n WHERE country_name IS NOT NULL)\n AND (NOT invchead_posted) \n UNION ALL\n SELECT COUNT(*)\n invchead_id, 'Invoice', invchead_invcnumber, invchead_shipto_country, 'Ship-To'\n \n FROM invchead\n WHERE invchead_shipto_country != ''\n AND invchead_shipto_country NOT IN (SELECT country_name\n FROM country\n WHERE country_name IS NOT NULL)\n AND (NOT invchead_posted) \n UNION ALL\n SELECT COUNT(*)\n quhead_id, 'Quote', CAST(quhead_number AS TEXT), quhead_billtocountry, 'Bill-To'\n \n FROM quhead\n WHERE quhead_billtocountry != ''\n AND quhead_billtocountry NOT IN (SELECT country_name\n FROM country\n WHERE country_name IS NOT NULL)\n AND (quhead_expire>=CURRENT_DATE) \n UNION ALL\n SELECT COUNT(*)\n quhead_id, 'Quote', CAST(quhead_number AS TEXT), quhead_shiptocountry, 'Ship-To'\n \n FROM quhead\n WHERE quhead_shiptocountry != ''\n AND quhead_shiptocountry NOT IN (SELECT country_name\n FROM country\n WHERE country_name IS NOT NULL)\n AND (quhead_expire>=CURRENT_DATE) \n UNION ALL\n SELECT COUNT(*)\n cohead_id, 'Sales Order', cohead_number, cohead_billtocountry, 'Bill-To'\n \n FROM cohead\n WHERE cohead_billtocountry != ''\n AND cohead_billtocountry NOT IN (SELECT country_name\n FROM country\n WHERE country_name IS NOT NULL)\n \n AND cohead_id IN (SELECT coitem_cohead_id\n FROM coitem\n WHERE COALESCE(coitem_status, 'O')='O')\n \n UNION ALL\n SELECT COUNT(*)\n cohead_id, 'Sales Order', cohead_number, cohead_shiptocountry, 'Ship-To'\n \n FROM cohead\n WHERE cohead_shiptocountry != ''\n AND cohead_shiptocountry NOT IN (SELECT country_name\n FROM country\n WHERE country_name IS NOT NULL)\n \n AND cohead_id IN (SELECT coitem_cohead_id\n FROM coitem\n WHERE COALESCE(coitem_status, 'O')='O')\n \n\n\n) AS dummy;\n\n \N \N 0 \. -- -- Data for Name: pkgpriv; Type: TABLE DATA; Schema: fixcountry; Owner: admin -- COPY pkgpriv (priv_id, priv_module, priv_name, priv_descrip, priv_seq) FROM stdin; \. -- -- Data for Name: pkgreport; Type: TABLE DATA; Schema: fixcountry; Owner: admin -- COPY pkgreport (report_id, report_name, report_sys, report_source, report_descrip, report_grade, report_loaddate) FROM stdin; \. -- -- Data for Name: pkgscript; Type: TABLE DATA; Schema: fixcountry; Owner: admin -- COPY pkgscript (script_id, script_name, script_order, script_enabled, script_source, script_notes) FROM stdin; 124 initMenu 0 t function sFixCountries()\n{\n try {\n var newdlg = toolbox.openWindow("fixCountries", 0, Qt.Window, Qt.NonModal);\n } catch(e) { print("sFixCountries exception: " + e); }\n}\n\nvar _crmutilsmenu = mainwindow.findChild("menu.crm.utilities");\nvar fixCountriesAction = _crmutilsmenu.addAction(\n qsTr("Fix Countries before setting Strict Countries option"));\nfixCountriesAction.enabled = privileges.value("MaintainAddresses") &&\n privileges.value("MaintainCreditMemos") &&\n privileges.value("MaintainMiscInvoices")&&\n privileges.value("MaintainSalesOrders") &&\n privileges.value("MaintainQuotes");\n\nfixCountriesAction.triggered.connect(sFixCountries);\n 125 fixCountries 0 t var _addCountry = mywindow.findChild("_addCountry");\nvar _edit = mywindow.findChild("_edit");\nvar _fixAbbr = mywindow.findChild("_fixAbbr");\nvar _fixBulk = mywindow.findChild("_fixBulk");\nvar _fixCase = mywindow.findChild("_fixCase");\nvar _list = mywindow.findChild("_list");\nvar _query = mywindow.findChild("_query");\nvar _showAll = mywindow.findChild("_showAll");\n\n_list.addColumn("Record Type", -1, Qt.AlignLeft, true, "type");\n_list.addColumn("Number", -1, Qt.AlignLeft, true, "number");\n_list.addColumn("Country", -1, Qt.AlignLeft, true, "country");\n_list.addColumn("Details", -1, Qt.AlignLeft, true, "detail");\n\nfunction sAddCountry()\n{\n try {\n var params = new Object;;\n params.mode = "new";\n\n var newdlg = toolbox.openWindow("country", mywindow, Qt.Dialog, Qt.WindowModal);\n toolbox.lastWindow().set(params);\n newdlg.exec();\n } catch (e) { print("sAddCountry exception: " + e); }\n}\n\nfunction openEditorWindow(pwindow, pidname, pparent)\n{\n try {\n var params = new Object;\n params[pidname] = _list.id();\n if (pidname == 'quhead_id')\n params.mode = "editQuote";\n else\n params.mode = "edit";\n\n var newdlg = toolbox.openWindow(pwindow, pparent, Qt.Dialog, Qt.WindowModal);\n toolbox.lastWindow().set(params);\n newdlg.exec();\n } catch(e) { print("openEditorWindow exception (" + e.lineNumber + "): " + e); }\n}\n\nfunction sEdit()\n{\n try {\n var currentItem = _list.currentItem();\n\n switch (currentItem.text(0))\n {\n case 'Address':\n openEditorWindow("address", "addr_id", mywindow);\n break;\n\n case 'Credit Memo':\n openEditorWindow("creditMemo", "cmhead_id", 0);\n break;\n\n case 'Invoice':\n openEditorWindow("invoice", "invchead_id", mywindow);\n break;\n\n case 'Quote':\n openEditorWindow("salesOrder", "quhead_id", 0);\n break;\n\n case 'Sales Order':\n openEditorWindow("salesOrder", "sohead_id", 0);\n break;\n }\n sFillList();\n } catch (e) { print("sEdit() exception: " + e); }\n}\n\nfunction sFixBulk()\n{\n print("sFixBulk() entered");\n try {\n var params = new Object;\n if (_showAll.checked)\n params.showAll = true;\n\n var newdlg = toolbox.openWindow("bulkFixCountry", mywindow,\n Qt.WindowModal, Qt.Dialog);\n toolbox.lastWindow().set(params);\n\n sFillList();\n } catch (e) { print("sFixBulk() exception: " + e); }\n}\n\nfunction sFixCase()\n{\n try {\n if (QMessageBox.question(mywindow, qsTr("Are you sure?"),\n qsTr("

Are you sure that you want to change all "\n + "countries that appear to be correct except "\n + "for upper- and lower-case differences in a "\n + "batch?

(This change will obey the status "\n + "of the 'Show closed records' check box."),\n QMessageBox.Yes, QMessageBox.No) == QMessageBox.No)\n return;\n\n var params = new Object;\n if (_showAll.checked)\n params.showAll = true;\n\n var qry = toolbox.executeQuery(\n "UPDATE addr SET addr_country = country_name"\n + " FROM country "\n + " WHERE addr_country != ''"\n + " AND UPPER(addr_country) = UPPER(country_name)"\n + " AND addr_country != country_name;", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Address: " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n "UPDATE cmhead SET cmhead_billtocountry = country_name"\n + " FROM country "\n + " WHERE cmhead_billtocountry != ''"\n + " AND UPPER(cmhead_billtocountry) = UPPER(country_name)"\n + " AND cmhead_billtocountry != country_name"\n + ' '\n + " AND NOT cmhead_posted"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Credit Memo (Bill-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n "UPDATE cmhead SET cmhead_shipto_country = country_name"\n + " FROM country "\n + " WHERE cmhead_shipto_country != ''"\n + " AND UPPER(cmhead_shipto_country) = UPPER(country_name)"\n + " AND cmhead_shipto_country != country_name"\n + ' '\n + " AND NOT cmhead_posted"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Credit Memo (Ship-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n "UPDATE invchead SET invchead_billto_country = country_name"\n + " FROM country "\n + " WHERE invchead_billto_country != ''"\n + " AND UPPER(invchead_billto_country) = UPPER(country_name)"\n + " AND invchead_billto_country != country_name"\n + ' '\n + " AND NOT invchead_posted"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Invoice (Bill-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n "UPDATE invchead SET invchead_shipto_country = country_name"\n + " FROM country "\n + " WHERE invchead_shipto_country != ''"\n + " AND UPPER(invchead_shipto_country) = UPPER(country_name)"\n + " AND invchead_shipto_country != country_name"\n + ' '\n + " AND NOT invchead_posted"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Invoice (Ship-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n "UPDATE quhead SET quhead_billtocountry = country_name"\n + " FROM country"\n + " WHERE quhead_billtocountry != ''"\n + " AND UPPER(quhead_billtocountry) = UPPER(country_name)"\n + " AND quhead_billtocountry != country_name"\n + ' '\n + " AND quhead_expire >= CURRENT_DATE"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Quote (Bill-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n "UPDATE quhead SET quhead_shiptocountry = country_name"\n + " FROM country"\n + " WHERE quhead_shiptocountry != ''"\n + " AND UPPER(quhead_shiptocountry) = UPPER(country_name)"\n + " AND quhead_shiptocountry != country_name"\n + ' '\n + " AND quhead_expire >= CURRENT_DATE"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Quote (Ship-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n "UPDATE cohead SET cohead_billtocountry = country_name"\n + ' FROM country , coitem'\n + " WHERE cohead_billtocountry != ''"\n + " AND UPPER(cohead_billtocountry) = UPPER(country_name)"\n + " AND cohead_billtocountry != country_name"\n + ' '\n + " AND cohead_id=coitem_cohead_id AND COALESCE(coitem_status, 'O')='O'"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Sales Order (Bill-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n "UPDATE cohead SET cohead_shiptocountry = country_name"\n + ' FROM country , coitem'\n + " WHERE cohead_shiptocountry != ''"\n + " AND UPPER(cohead_shiptocountry) = UPPER(country_name)"\n + " AND cohead_shiptocountry != country_name"\n + ' '\n + " AND cohead_id=coitem_cohead_id AND COALESCE(coitem_status, 'O')='O'"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Sales Order (Ship-To): " + qry.lastError().text);\n\n } catch (e) { QMessageBox.critical(mywindow, "sFixCase() exception", e); }\n\n sFillList();\n}\n\nfunction sFixAbbr()\n{\n try {\n if (QMessageBox.question(mywindow, qsTr("Are you sure?"),\n qsTr("

Are you sure that you want to replace all "\n + "country abbreviations to the corresponding "\n + "full country names?

(This change will obey "\n + "the status of the 'Show closed records' "\n + "check box."),\n QMessageBox.Yes, QMessageBox.No) == QMessageBox.No)\n return;\n\n var params = new Object;\n if (_showAll.checked)\n params.showAll = true;\n\n var qry = toolbox.executeQuery(\n "UPDATE addr SET addr_country = country_name"\n + " FROM country "\n + " WHERE addr_country != ''"\n + " AND UPPER(addr_country) = UPPER(country_abbr);", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Address: " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n "UPDATE cmhead SET cmhead_billtocountry = country_name"\n + " FROM country "\n + " WHERE cmhead_billtocountry != ''"\n + " AND UPPER(cmhead_billtocountry) = UPPER(country_abbr)"\n + ' '\n + " AND NOT cmhead_posted"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Credit Memo (Bill-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n "UPDATE cmhead SET cmhead_shipto_country = country_name"\n + " FROM country "\n + " WHERE cmhead_shipto_country != ''"\n + " AND UPPER(cmhead_shipto_country) = UPPER(country_abbr)"\n + ' '\n + " AND NOT cmhead_posted"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Credit Memo (Ship-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n "UPDATE invchead SET invchead_billto_country = country_name"\n + " FROM country "\n + " WHERE invchead_billto_country != ''"\n + " AND UPPER(invchead_billto_country) = UPPER(country_abbr)"\n + ' '\n + " AND NOT invchead_posted"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Invoice (Bill-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n "UPDATE invchead SET invchead_shipto_country = country_name"\n + " FROM country "\n + " WHERE invchead_shipto_country != ''"\n + " AND UPPER(invchead_shipto_country) = UPPER(country_abbr)"\n + ' '\n + " AND NOT invchead_posted"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Invoice (Ship-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n "UPDATE quhead SET quhead_billtocountry = country_name"\n + " FROM country"\n + " WHERE quhead_billtocountry != ''"\n + " AND UPPER(quhead_billtocountry) = UPPER(country_abbr)"\n + ' '\n + " AND quhead_expire >= CURRENT_DATE"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Quote (Bill-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n "UPDATE quhead SET quhead_shiptocountry = country_name"\n + " FROM country"\n + " WHERE quhead_shiptocountry != ''"\n + " AND UPPER(quhead_shiptocountry) = UPPER(country_abbr)"\n + ' '\n + " AND quhead_expire >= CURRENT_DATE"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Quote (Ship-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n "UPDATE cohead SET cohead_billtocountry = country_name"\n + ' FROM country , coitem'\n + " WHERE cohead_billtocountry != ''"\n + " AND UPPER(cohead_billtocountry) = UPPER(country_abbr)"\n + ' '\n + " AND cohead_id=coitem_cohead_id AND COALESCE(coitem_status, 'O')='O'"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Sales Order (Bill-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n "UPDATE cohead SET cohead_shiptocountry = country_name"\n + ' FROM country , coitem'\n + " WHERE cohead_shiptocountry != ''"\n + " AND UPPER(cohead_shiptocountry) = UPPER(country_abbr)"\n + ' '\n + " AND cohead_id=coitem_cohead_id AND COALESCE(coitem_status, 'O')='O'"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Sales Order (Ship-To): " + qry.lastError().text);\n\n } catch (e)\n {\n QMessageBox.critical(mywindow, "sFixAbbr() exception", e);\n }\n sFillList();\n}\n\nfunction sFillList()\n{\n try {\n var params = new Object;\n if (_showAll.checked)\n params.showAll = true;\n\n var qry = toolbox.executeDbQuery('fixcountry', 'strictcountrycheck', params);\n _list.populate(qry);\n if (qry.lastError().type != 0)\n {\n QMessageBox.critical(mywindow, qsTr("Database Error"),\n qry.lastError().text);\n return;\n }\n } catch (e) { print("sFillList exception: " + e); }\n}\n\n_addCountry.clicked.connect(sAddCountry);\n_edit.clicked.connect(sEdit);\n_fixAbbr.clicked.connect(sFixAbbr);\n_fixBulk.clicked.connect(sFixBulk);\n_fixCase.clicked.connect(sFixCase);\n_query.clicked.connect(sFillList);\n_showAll.toggled.connect(sFillList);\n\nsFillList();\n\nif (QMessageBox.question(mywindow, qsTr("Backed Up?"),\n qsTr("

Have you backed up your database? "\n + "You really should back up your database "\n + "before running this utility."),\n QMessageBox.Yes, QMessageBox.No) == QMessageBox.No)\n mywindow.close()\n\n 126 bulkFixCountry 0 t var _buttons = mywindow.findChild("_buttons");\nvar _oldCountry = mywindow.findChild("_oldCountry");\nvar _newCountry = mywindow.findChild("_newCountry");\nvar _params;\n\nfunction set(params)\n{\n _params = params;\n var qry = toolbox.executeQuery(\n "SELECT MIN(id), country, country AS code "\n + " FROM ("\n + " SELECT addr_id AS id, addr_country AS country"\n + " FROM addr"\n + " WHERE addr_country != ''"\n + " AND addr_country NOT IN (SELECT country_name"\n + " FROM country"\n + " WHERE country_name IS NOT NULL)"\n + " UNION ALL"\n + " SELECT cmhead_id, cmhead_billtocountry"\n + " FROM cmhead"\n + " WHERE cmhead_billtocountry != ''"\n + " AND cmhead_billtocountry NOT IN (SELECT country_name"\n + " FROM country"\n + " WHERE country_name IS NOT NULL)"\n + ' AND (NOT cmhead_posted) '\n + " UNION ALL"\n + " SELECT cmhead_id, cmhead_shipto_country"\n + " FROM cmhead"\n + " WHERE cmhead_shipto_country != ''"\n + " AND cmhead_shipto_country NOT IN (SELECT country_name"\n + " FROM country"\n + " WHERE country_name IS NOT NULL)"\n + ' AND (NOT cmhead_posted) '\n + " UNION ALL"\n + " SELECT invchead_id, invchead_billto_country"\n + " FROM invchead"\n + " WHERE invchead_billto_country != ''"\n + " AND invchead_billto_country NOT IN (SELECT country_name"\n + " FROM country"\n + " WHERE country_name IS NOT NULL)"\n + ' AND (NOT invchead_posted) '\n + " UNION ALL"\n + " SELECT invchead_id, invchead_shipto_country"\n + " FROM invchead"\n + " WHERE invchead_shipto_country != ''"\n + " AND invchead_shipto_country NOT IN (SELECT country_name"\n + " FROM country"\n + " WHERE country_name IS NOT NULL)"\n + ' AND (NOT invchead_posted) '\n + " UNION ALL"\n + " SELECT quhead_id, quhead_billtocountry"\n + " FROM quhead"\n + " WHERE quhead_billtocountry != ''"\n + " AND quhead_billtocountry NOT IN (SELECT country_name"\n + " FROM country"\n + " WHERE country_name IS NOT NULL)"\n + ' AND (quhead_expire>=CURRENT_DATE) '\n + " UNION ALL"\n + " SELECT quhead_id, quhead_shiptocountry"\n + " FROM quhead"\n + " WHERE quhead_shiptocountry != ''"\n + " AND quhead_shiptocountry NOT IN (SELECT country_name"\n + " FROM country"\n + " WHERE country_name IS NOT NULL)"\n + ' AND (quhead_expire>=CURRENT_DATE) '\n + " UNION ALL"\n + " SELECT cohead_id, cohead_billtocountry"\n + " FROM cohead"\n + " WHERE cohead_billtocountry != ''"\n + " AND cohead_billtocountry NOT IN (SELECT country_name"\n + " FROM country"\n + " WHERE country_name IS NOT NULL)"\n + ' '\n + " AND cohead_id IN (SELECT coitem_cohead_id"\n + " FROM coitem"\n + " WHERE COALESCE(coitem_status, 'O')='O')"\n + ' '\n + " UNION ALL"\n + " SELECT cohead_id, cohead_shiptocountry"\n + " FROM cohead"\n + " WHERE cohead_shiptocountry != ''"\n + " AND cohead_shiptocountry NOT IN (SELECT country_name"\n + " FROM country"\n + " WHERE country_name IS NOT NULL)"\n + ' '\n + " AND cohead_id IN (SELECT coitem_cohead_id"\n + " FROM coitem"\n + " WHERE COALESCE(coitem_status, 'O')='O')"\n + ' '\n + ") AS dummy "\n + "GROUP BY country "\n + "ORDER BY country;",\n\n params);\n _oldCountry.populate(qry);\n if (qry.lastError().type != 0)\n toolbox.messageBox("warning", mywindow, qsTr("Database Error"),\n qry.lastError().text);\n}\n\nfunction sSave()\n{\n try {\n var params = _params;\n params.oldCountry = _oldCountry.currentText;\n params.newCountry = _newCountry.currentText;\n\n var qry = toolbox.executeQuery(\n 'UPDATE addr SET addr_country = '\n + ' WHERE addr_country = ;', params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Address: " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n 'UPDATE cmhead SET cmhead_billtocountry = '\n + ' WHERE cmhead_billtocountry = '\n + ' '\n + " AND NOT cmhead_posted"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Credit Memo (Bill-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n 'UPDATE cmhead SET cmhead_shipto_country = '\n + ' WHERE cmhead_shipto_country = '\n + ' '\n + " AND NOT cmhead_posted"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Credit Memo (Ship-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n 'UPDATE invchead SET invchead_billto_country = '\n + ' WHERE invchead_billto_country = '\n + ' '\n + " AND NOT invchead_posted"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Invoice (Bill-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n 'UPDATE invchead SET invchead_shipto_country = '\n + ' WHERE invchead_shipto_country = '\n + ' '\n + " AND NOT invchead_posted"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Invoice (Ship-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n 'UPDATE quhead SET quhead_billtocountry = '\n + ' WHERE quhead_billtocountry = '\n + ' '\n + " AND quhead_expire >= CURRENT_DATE"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Quote (Bill-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n 'UPDATE quhead SET quhead_shiptocountry = '\n + ' WHERE quhead_shiptocountry = '\n + ' '\n + " AND quhead_expire >= CURRENT_DATE"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Quote (Ship-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n 'UPDATE cohead SET cohead_billtocountry = '\n + ' WHERE cohead_billtocountry = '\n + ' '\n + " AND cohead_id IN (SELECT coitem_cohead_id"\n + " FROM coitem"\n + " WHERE COALESCE(coitem_status, 'O')='O')"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Sales Order (Bill-To): " + qry.lastError().text);\n\n qry = toolbox.executeQuery(\n 'UPDATE cohead SET cohead_shiptocountry = '\n + ' WHERE cohead_shiptocountry = '\n + ' '\n + " AND cohead_id IN (SELECT coitem_cohead_id"\n + " FROM coitem"\n + " WHERE COALESCE(coitem_status, 'O')='O')"\n + " ", params);\n if (qry.lastError().type != 0)\n throw new Error("Error updating Sales Order (Ship-To): " + qry.lastError().text);\n\n }\n catch (e)\n {\n toolbox.messageBox("critical", mywindow,\n "bulkFixCountry::sSave() exception", e);\n\n }\n mywindow.close();\n}\n\n_buttons.accepted.connect(sSave);\n_buttons.rejected.connect(mywindow, "close()");\n \. -- -- Data for Name: pkguiform; Type: TABLE DATA; Schema: fixcountry; Owner: admin -- COPY pkguiform (uiform_id, uiform_name, uiform_order, uiform_enabled, uiform_source, uiform_notes) FROM stdin; 58 fixCountries 0 t \n\n fixCountries\n \n \n \n 0\n 0\n 800\n 600\n \n \n \n \n 1000\n 16777215\n \n \n \n fixCountries\n \n \n \n \n \n \n \n Query\n \n \n \n \n \n \n Qt::Vertical\n \n \n QSizePolicy::Fixed\n \n \n \n 20\n 15\n \n \n \n \n \n \n \n Fix Case Differences\n \n \n \n \n \n \n Replace Abbreviations\n \n \n \n \n \n \n Bulk Replace\n \n \n \n \n \n \n Qt::Vertical\n \n \n QSizePolicy::Fixed\n \n \n \n 20\n 15\n \n \n \n \n \n \n \n false\n \n \n Edit Selection\n \n \n \n \n \n \n Add Country\n \n \n \n \n \n \n Qt::Vertical\n \n \n \n 20\n 40\n \n \n \n \n \n \n \n \n \n \n 0\n 3\n \n \n \n \n \n \n \n Show closed records\n \n \n true\n \n \n \n \n \n \n <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd">\n<html><head><meta name="qrichtext" content="1" /><style type="text/css">\np, li { white-space: pre-wrap; }\n</style></head><body style=" font-family:'Lucida Grande'; font-size:13pt; font-weight:400; font-style:normal;">\n<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">You must fix the countries in the following records before turning on Strict Country Checking (System &gt; Configure Modules &gt; CRM...).</p>\n<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p>\n<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Here is a short description of your options (assume the <span style=" font-style:italic;">country</span> table has a country named 'Homeland' with the abbreviation 'HL'):</p>\n<ul style="-qt-list-indent: 1;"><li style=" margin-top:12px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Query</span> will requery the database for records with invalid countries.</li>\n<li style=" font-weight:600;" style=" margin-top:1px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Fix Case Differences<span style=" font-weight:400;"> will change all occurrences of 'HOMELAND' or 'HomeLand' to 'Homeland'.</span></li>\n<li style=" margin-top:1px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Replace Abbreviations</span> will change all occurrences of 'HL' to 'Homeland'.</li>\n<li style=" margin-top:1px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Bulk Replace</span> will replace all occurrences of an invalid country that you choose with a valid country that you choose.</li>\n<li style=" margin-top:1px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Edit Selection</span> will open the selected record for you to fix. If a changed address remains on the list, delete duplicates with CRM &gt; Address &gt; List....</li>\n<li style=" margin-top:1px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Add Country</span> is for the rare case where you must add a new country. Try not to use this.</li>\n<li style=" margin-top:1px; margin-bottom:12px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Show closed records</span> will show historical data, such as closed sales orders and posted credit memos &amp; invoices. These will continue to print properly if you don't fix them, but you will have to change the country if you edit and save them with Strict Country Checking turned on.</li></ul></body></html>\n \n \n Qt::RichText\n \n \n true\n \n \n \n \n \n \n \n XCheckBox\n QCheckBox\n

xcheckbox.h
\n \n \n XTreeWidget\n QTreeWidget\n
xtreewidget.h
\n
\n \n \n _list\n _showAll\n _query\n _fixCase\n _fixAbbr\n _edit\n _addCountry\n \n \n \n \n _list\n valid(bool)\n _edit\n setEnabled(bool)\n \n \n 551\n 512\n \n \n 616\n 503\n \n \n \n \n\n 59 bulkFixCountry 0 t \n\n bulkFixCountry\n \n \n \n 0\n 0\n 427\n 162\n \n \n \n Bulk Fix Invalid Country\n \n \n \n \n \n \n \n Replace all instances of this:\n \n \n _oldCountry\n \n \n \n \n \n \n with this country:\n \n \n _newCountry\n \n \n \n \n \n \n true\n \n \n XComboBox::Countries\n \n \n \n \n \n \n \n \n \n \n \n Qt::Vertical\n \n \n QDialogButtonBox::Cancel|QDialogButtonBox::SaveAll\n \n \n false\n \n \n \n \n \n \n \n XComboBox\n QComboBox\n
xcombobox.h
\n
\n
\n \n \n
\n \. SET search_path = public, pg_catalog; -- -- Data for Name: acalitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY acalitem (acalitem_id, acalitem_calhead_id, acalitem_periodstart, acalitem_periodlength, acalitem_name) FROM stdin; \. -- -- Data for Name: accnt; Type: TABLE DATA; Schema: public; Owner: admin -- COPY accnt (accnt_id, accnt_number, accnt_descrip, accnt_comments, accnt_profit, accnt_sub, accnt_type, accnt_extref, accnt_company, accnt_forwardupdate, accnt_subaccnttype_code, accnt_curr_id, accnt_active, accnt_name) FROM stdin; 83 1950 Unassigned Inv Transactions 01 01 A 01 t IN 1 t 01-01-1950-01 89 1930 Transform Clearing 01 01 A 01 t IN 1 t 01-01-1930-01 91 8910 Inventory Adjustment 01 01 E 01 t EXP 1 t 01-01-8910-01 92 8920 Inventory Scrap 01 01 E 01 t EXP 1 t 01-01-8920-01 93 8930 Manufacturing Scrap 01 01 E 01 t EXP 1 t 01-01-8930-01 94 2320 Accrued Labor and Overhead Costs 01 01 L 01 t CL 1 t 01-01-2320-01 96 1260 Shipping Asset 01 01 A 01 t IN 1 t 01-01-1260-01 98 6550 P/O Line Item Freight Expense 01 01 E 01 t EXP 1 t 01-01-6550-01 99 2000 Accounts Payable 01 01 L 01 t AP 1 t 01-01-2000-01 101 4900 Promotions and Discounts Taken 01 01 R 01 t SI 1 t 01-01-4900-01 103 4000 Revenue 01 01 R 01 t SI 1 t 01-01-4000-01 104 2440 Prepaid Receivables 01 01 L 01 t CL 1 t 01-01-2440-01 105 2490 Freight Liability - Sales 01 01 L 01 t CL 1 t 01-01-2490-01 107 2450 Credit Memo 01 01 L 01 t CL 1 t 01-01-2450-01 108 5000 Cost of Goods Sold 01 01 E 01 t COGS 1 t 01-01-5000-01 110 6750 Finance Fees and Expenses 01 01 E 01 t EXP 1 t 01-01-6750-01 111 1500 Fixed Assets 01 01 A 01 t FA 1 t 01-01-1500-01 116 2700 Long Term Note Payable 01 01 L 01 t LTL 1 t 01-01-2700-01 88 1470 Material Usage Variance 01 01 A 01 t IN 1 t 01-01-1470-01 117 4050 State Sales Tax Revenue 01 01 R 01 t SI 1 t 01-01-4050-01 118 4060 Shipping Charges Revenue 01 01 R 01 t SI 1 t 01-01-4060-01 119 6050 State Sales Tax Expense 01 01 E 01 t EXP 1 t 01-01-6050-01 122 5500 Currency Gain Loss 01 01 E 01 t EXP 1 t 01-01-5500-01 97 6000 Office Supplies 01 01 E 01 t EXP 1 t 01-01-6000-01 123 5550 G/L Discrepancy Holds tiny amounts caused by rounding errors. 01 01 E 01 t EXP 1 t 01-01-5550-01 102 2360 State Sales Tax Liability 01 01 L 01 t CL 1 t 01-01-2360-01 124 2100 Customer Deposits 01 01 L 01 t CL 1 t 01-01-2100-01 95 2480 P/O Liability Clearing 01 01 L 01 t CL 1 t 01-01-2480-01 84 3030 Retained Earnings Year End 01 01 Q 01 t ERE 1 t 01-01-3030-01 113 3010 Paid-In Capital 01 01 Q 01 t EDC 1 t 01-01-3010-01 86 1210 Inventory Asset \n 01 01 A 01 t IN 1 t 01-01-1210-01 85 1250 WIP Asset 01 01 A 01 t IN 1 t 01-01-1250-01 109 1000 Cash at Bank 01 01 A 01 t CA 1 t 01-01-1000-01 125 1600 Accumulated Depreciation 01 01 A 01-01-1600-01 01 f AD 1 t 01-01-1600-01 106 1100 Accounts Receivable 01 01 A 01 t AR 1 t 01-01-1100-01 127 6020 Shop Supplies 01 01 E 01-01-6020-01 01 f EXP 1 t 01-01-6020-01 120 6060 Inbound Freight Expense 01 01 E 01-01-6060-01 01 t EXP 1 t 01-01-6060-01 128 6070 Outbound Freight Expense 01 01 E 01-01-6070-01 01 f EXP 1 t 01-01-6070-01 112 6400 Depreciation Expense 01 01 E 01 t DEP 1 t 01-01-6400-01 129 4010 Service Revenue 01 01 R 01-01-4010-01 01 f SI 1 t 01-01-4010-01 121 4800 Customer Credits 01 01 R 01-01-4800-01 01 t SI 1 t 01-01-4800-01 130 4810 Customer Discounts 01 01 R 01-01-4810-01 01 f SI 1 t 01-01-4810-01 131 6100 Expensed Inventory 01 01 E 01 f EXP 1 t 01-01-6100-01 132 6200 Prepaid Expense 01 01 E 01 f EXP 1 t 01-01-6200-01 133 5010 Inventory Cost Variance 01 01 E 01 f COGS 1 t 01-01-5010-01 134 5030 Transform Clearing Expense 01 01 E 01 f COGS 1 t 01-01-5030-01 135 5020 Purchase Price Variance 01 01 E 01 f COGS 1 t 01-01-5020-01 126 8980 Purchase Expense Variance 01 01 E 01-01-8980-01 01 f COGS 1 t 01-01-8980-01 136 2600 Project Labor and Overhead 01 01 L 01 f CL 1 t 01-01-2600-01 \. -- -- Data for Name: addr; Type: TABLE DATA; Schema: public; Owner: admin -- COPY addr (addr_id, addr_active, addr_line1, addr_line2, addr_line3, addr_city, addr_state, addr_postalcode, addr_country, addr_notes, addr_number) FROM stdin; 2 t Warehouse Address Line 1 Warehouse Address Line 2 Warehouse Address Line 3 Warehouse Address Line 4 VA 9999-9999 United States 2 1 t Warehouse Address Line 1 Warehouse Address Line 2 Warehouse Address Line 3 Warehouse Address Line 4 United States 1 3 t Accounts Receivable Moving Forward Business Park 12100 Let's Go Norfolk VA 23100 United States 3 \. -- -- Data for Name: alarm; Type: TABLE DATA; Schema: public; Owner: admin -- COPY alarm (alarm_id, alarm_number, alarm_event, alarm_email, alarm_sysmsg, alarm_trigger, alarm_time, alarm_time_offset, alarm_time_qualifier, alarm_creator, alarm_event_recipient, alarm_email_recipient, alarm_sysmsg_recipient, alarm_source, alarm_source_id) FROM stdin; \. -- -- Data for Name: apaccnt; Type: TABLE DATA; Schema: public; Owner: admin -- COPY apaccnt (apaccnt_id, apaccnt_vendtype_id, apaccnt_vendtype, apaccnt_ap_accnt_id, apaccnt_prepaid_accnt_id, apaccnt_discount_accnt_id) FROM stdin; 20 -1 .* 99 132 101 \. -- -- Data for Name: apapply; Type: TABLE DATA; Schema: public; Owner: admin -- COPY apapply (apapply_id, apapply_vend_id, apapply_postdate, apapply_username, apapply_source_apopen_id, apapply_source_doctype, apapply_source_docnumber, apapply_target_apopen_id, apapply_target_doctype, apapply_target_docnumber, apapply_journalnumber, apapply_amount, apapply_curr_id, apapply_target_paid, apapply_checkhead_id) FROM stdin; \. -- -- Data for Name: apcreditapply; Type: TABLE DATA; Schema: public; Owner: admin -- COPY apcreditapply (apcreditapply_id, apcreditapply_source_apopen_id, apcreditapply_target_apopen_id, apcreditapply_amount, apcreditapply_curr_id) FROM stdin; \. -- -- Data for Name: apopen; Type: TABLE DATA; Schema: public; Owner: admin -- COPY apopen (apopen_id, apopen_docdate, apopen_duedate, apopen_terms_id, apopen_vend_id, apopen_doctype, apopen_docnumber, apopen_amount, apopen_notes, apopen_posted, apopen_reference, apopen_invcnumber, apopen_ponumber, apopen_journalnumber, apopen_paid, apopen_open, apopen_username, apopen_discount, apopen_accnt_id, apopen_curr_id, apopen_closedate, apopen_distdate, apopen_void, apopen_curr_rate, apopen_discountable_amount, apopen_status) FROM stdin; \. -- -- Data for Name: apopentax; Type: TABLE DATA; Schema: public; Owner: admin -- COPY apopentax (taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber) FROM stdin; \. -- -- Data for Name: apselect; Type: TABLE DATA; Schema: public; Owner: admin -- COPY apselect (apselect_id, apselect_apopen_id, apselect_amount, apselect_bankaccnt_id, apselect_curr_id, apselect_date, apselect_discount) FROM stdin; \. -- -- Data for Name: araccnt; Type: TABLE DATA; Schema: public; Owner: admin -- COPY araccnt (araccnt_id, araccnt_custtype_id, araccnt_custtype, araccnt_freight_accnt_id, araccnt_ar_accnt_id, araccnt_prepaid_accnt_id, araccnt_deferred_accnt_id, araccnt_discount_accnt_id) FROM stdin; 39 -1 .* 118 106 121 124 130 \. -- -- Data for Name: arapply; Type: TABLE DATA; Schema: public; Owner: admin -- COPY arapply (arapply_id, arapply_postdate, arapply_cust_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_doctype, arapply_target_docnumber, arapply_fundstype, arapply_refnumber, arapply_applied, arapply_closed, arapply_journalnumber, arapply_source_aropen_id, arapply_target_aropen_id, arapply_username, arapply_curr_id, arapply_distdate, arapply_target_paid, arapply_reftype, arapply_ref_id) FROM stdin; \. -- -- Data for Name: arcreditapply; Type: TABLE DATA; Schema: public; Owner: admin -- COPY arcreditapply (arcreditapply_id, arcreditapply_source_aropen_id, arcreditapply_target_aropen_id, arcreditapply_amount, arcreditapply_curr_id, arcreditapply_reftype, arcreditapply_ref_id) FROM stdin; \. -- -- Data for Name: aropen; Type: TABLE DATA; Schema: public; Owner: admin -- COPY aropen (aropen_id, aropen_docdate, aropen_duedate, aropen_terms_id, aropen_cust_id, aropen_doctype, aropen_docnumber, aropen_applyto, aropen_ponumber, aropen_amount, aropen_notes, aropen_posted, aropen_salesrep_id, aropen_commission_due, aropen_commission_paid, aropen_ordernumber, aropen_cobmisc_id, aropen_journalnumber, aropen_paid, aropen_open, aropen_username, aropen_rsncode_id, aropen_salescat_id, aropen_accnt_id, aropen_curr_id, aropen_closedate, aropen_distdate, aropen_curr_rate, aropen_discount) FROM stdin; \. -- -- Data for Name: aropenalloc; Type: TABLE DATA; Schema: public; Owner: admin -- COPY aropenalloc (aropenalloc_aropen_id, aropenalloc_doctype, aropenalloc_doc_id, aropenalloc_amount, aropenalloc_curr_id) FROM stdin; \. -- -- Data for Name: aropentax; Type: TABLE DATA; Schema: public; Owner: admin -- COPY aropentax (taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber) FROM stdin; \. -- -- Data for Name: asohist; Type: TABLE DATA; Schema: public; Owner: admin -- COPY asohist (asohist_id, asohist_cust_id, asohist_itemsite_id, asohist_shipdate, asohist_invcdate, asohist_duedate, asohist_promisedate, asohist_ordernumber, asohist_invcnumber, asohist_qtyshipped, asohist_unitprice, asohist_unitcost, asohist_billtoname, asohist_billtoaddress1, asohist_billtoaddress2, asohist_billtoaddress3, asohist_billtocity, asohist_billtostate, asohist_billtozip, asohist_shiptoname, asohist_shiptoaddress1, asohist_shiptoaddress2, asohist_shiptoaddress3, asohist_shiptocity, asohist_shiptostate, asohist_shiptozip, asohist_shipto_id, asohist_shipvia, asohist_salesrep_id, asohist_misc_type, asohist_misc_descrip, asohist_misc_id, asohist_commission, asohist_commissionpaid, asohist_doctype, asohist_orderdate, asohist_imported, asohist_ponumber, asohist_curr_id, asohist_taxtype_id, asohist_taxzone_id) FROM stdin; \. -- -- Data for Name: asohisttax; Type: TABLE DATA; Schema: public; Owner: admin -- COPY asohisttax (taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber) FROM stdin; \. -- -- Data for Name: atlasmap; Type: TABLE DATA; Schema: public; Owner: admin -- COPY atlasmap (atlasmap_id, atlasmap_name, atlasmap_filter, atlasmap_filtertype, atlasmap_atlas, atlasmap_map, atlasmap_headerline) FROM stdin; \. -- -- Data for Name: backup_usr; Type: TABLE DATA; Schema: public; Owner: admin -- COPY backup_usr (usr_id, usr_username, usr_propername, usr_passwd, usr_locale_id, usr_initials, usr_agent, usr_active, usr_email, usr_dept_id, usr_shift_id, usr_window) FROM stdin; 1 mfgadmin OpenMFG Administrator \N 3 ADMIN t t matherton@openmfg.com 2 1 2 admin Administrator 3 ADMIN t t admin@xtuple.com 2 1 \N \. -- -- Data for Name: bankaccnt; Type: TABLE DATA; Schema: public; Owner: admin -- COPY bankaccnt (bankaccnt_id, bankaccnt_name, bankaccnt_descrip, bankaccnt_bankname, bankaccnt_accntnumber, bankaccnt_ar, bankaccnt_ap, bankaccnt_nextchknum, bankaccnt_type, bankaccnt_accnt_id, bankaccnt_check_form_id, bankaccnt_userec, bankaccnt_rec_accnt_id, bankaccnt_curr_id, bankaccnt_notes, bankaccnt_routing, bankaccnt_ach_enabled, bankaccnt_ach_origin, bankaccnt_ach_genchecknum, bankaccnt_ach_leadtime, bankaccnt_ach_lastdate, bankaccnt_ach_lastfileid, bankaccnt_ach_origintype, bankaccnt_ach_originname, bankaccnt_ach_desttype, bankaccnt_ach_fed_dest, bankaccnt_ach_destname, bankaccnt_ach_dest) FROM stdin; 13 Bank Bank Bank 0000000000 t t 5000 K 109 21 \N \N 1 \N f f \N \N \N I \N \N \N \N \N \. -- -- Data for Name: bankadj; Type: TABLE DATA; Schema: public; Owner: admin -- COPY bankadj (bankadj_id, bankadj_bankaccnt_id, bankadj_bankadjtype_id, bankadj_created, bankadj_username, bankadj_date, bankadj_docnumber, bankadj_amount, bankadj_notes, bankadj_sequence, bankadj_posted, bankadj_curr_id, bankadj_curr_rate) FROM stdin; \. -- -- Data for Name: bankadjtype; Type: TABLE DATA; Schema: public; Owner: admin -- COPY bankadjtype (bankadjtype_id, bankadjtype_name, bankadjtype_descrip, bankadjtype_accnt_id, bankadjtype_iscredit) FROM stdin; \. -- -- Data for Name: bankrec; Type: TABLE DATA; Schema: public; Owner: admin -- COPY bankrec (bankrec_id, bankrec_created, bankrec_username, bankrec_bankaccnt_id, bankrec_opendate, bankrec_enddate, bankrec_openbal, bankrec_endbal, bankrec_posted, bankrec_postdate) FROM stdin; \. -- -- Data for Name: bankrecitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY bankrecitem (bankrecitem_id, bankrecitem_bankrec_id, bankrecitem_source, bankrecitem_source_id, bankrecitem_cleared, bankrecitem_curr_rate, bankrecitem_amount) FROM stdin; \. -- -- Data for Name: bomhead; Type: TABLE DATA; Schema: public; Owner: admin -- COPY bomhead (bomhead_id, bomhead_item_id, bomhead_serial, bomhead_docnum, bomhead_revision, bomhead_revisiondate, bomhead_batchsize, bomhead_requiredqtyper, bomhead_rev_id) FROM stdin; \. -- -- Data for Name: bomitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY bomitem (bomitem_id, bomitem_parent_item_id, bomitem_seqnumber, bomitem_item_id, bomitem_qtyper, bomitem_scrap, bomitem_status, bomitem_effective, bomitem_expires, bomitem_createwo, bomitem_issuemethod, bomitem_schedatwooper, bomitem_ecn, bomitem_moddate, bomitem_subtype, bomitem_uom_id, bomitem_rev_id, bomitem_booitem_seq_id, bomitem_char_id, bomitem_value, bomitem_notes, bomitem_ref, bomitem_qtyfxd, bomitem_issuewo) FROM stdin; \. -- -- Data for Name: bomitemcost; Type: TABLE DATA; Schema: public; Owner: admin -- COPY bomitemcost (bomitemcost_id, bomitemcost_bomitem_id, bomitemcost_costelem_id, bomitemcost_lowlevel, bomitemcost_stdcost, bomitemcost_posted, bomitemcost_actcost, bomitemcost_updated, bomitemcost_curr_id) FROM stdin; \. -- -- Data for Name: bomitemsub; Type: TABLE DATA; Schema: public; Owner: admin -- COPY bomitemsub (bomitemsub_id, bomitemsub_bomitem_id, bomitemsub_item_id, bomitemsub_uomratio, bomitemsub_rank) FROM stdin; \. -- -- Data for Name: bomwork; Type: TABLE DATA; Schema: public; Owner: admin -- COPY bomwork (bomwork_id, bomwork_set_id, bomwork_seqnumber, bomwork_item_id, bomwork_item_type, bomwork_qtyper, bomwork_scrap, bomwork_status, bomwork_level, bomwork_parent_id, bomwork_effective, bomwork_expires, bomwork_stdunitcost, bomwork_actunitcost, bomwork_parent_seqnumber, bomwork_createwo, bomwork_issuemethod, bomwork_char_id, bomwork_value, bomwork_notes, bomwork_ref, bomwork_bomitem_id, bomwork_ecn, bomwork_qtyfxd, bomwork_qtyreq) FROM stdin; \. -- -- Data for Name: budghead; Type: TABLE DATA; Schema: public; Owner: admin -- COPY budghead (budghead_id, budghead_name, budghead_descrip) FROM stdin; 1 Default Default budget for conversion \. -- -- Data for Name: budgitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY budgitem (budgitem_id, budgitem_budghead_id, budgitem_period_id, budgitem_accnt_id, budgitem_amount) FROM stdin; \. -- -- Data for Name: calhead; Type: TABLE DATA; Schema: public; Owner: admin -- COPY calhead (calhead_id, calhead_type, calhead_name, calhead_descrip, calhead_origin) FROM stdin; 47 R 8WEEK_FORWARD 8 Week Forward Calendar D 48 R 3MONTH_BACK 3 Months Back Calendar D \. -- -- Data for Name: cashrcpt; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cashrcpt (cashrcpt_id, cashrcpt_cust_id, cashrcpt_amount, cashrcpt_fundstype, cashrcpt_docnumber, cashrcpt_bankaccnt_id, cashrcpt_notes, cashrcpt_distdate, cashrcpt_salescat_id, cashrcpt_curr_id, cashrcpt_usecustdeposit, cashrcpt_void, cashrcpt_number, cashrcpt_docdate, cashrcpt_posted, cashrcpt_posteddate, cashrcpt_postedby, cashrcpt_applydate, cashrcpt_discount, cashrcpt_curr_rate) FROM stdin; \. -- -- Data for Name: cashrcptitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cashrcptitem (cashrcptitem_id, cashrcptitem_cashrcpt_id, cashrcptitem_aropen_id, cashrcptitem_amount, cashrcptitem_discount, cashrcptitem_applied) FROM stdin; \. -- -- Data for Name: cashrcptmisc; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cashrcptmisc (cashrcptmisc_id, cashrcptmisc_cashrcpt_id, cashrcptmisc_accnt_id, cashrcptmisc_amount, cashrcptmisc_notes) FROM stdin; \. -- -- Data for Name: ccard; Type: TABLE DATA; Schema: public; Owner: admin -- COPY ccard (ccard_id, ccard_seq, ccard_cust_id, ccard_active, ccard_name, ccard_address1, ccard_address2, ccard_city, ccard_state, ccard_zip, ccard_country, ccard_number, ccard_debit, ccard_month_expired, ccard_year_expired, ccard_type, ccard_date_added, ccard_lastupdated, ccard_added_by_username, ccard_last_updated_by_username) FROM stdin; \. -- -- Data for Name: ccardaud; Type: TABLE DATA; Schema: public; Owner: admin -- COPY ccardaud (ccardaud_id, ccardaud_ccard_id, ccardaud_ccard_seq_old, ccardaud_ccard_seq_new, ccardaud_ccard_cust_id_old, ccardaud_ccard_cust_id_new, ccardaud_ccard_active_old, ccardaud_ccard_active_new, ccardaud_ccard_name_old, ccardaud_ccard_name_new, ccardaud_ccard_address1_old, ccardaud_ccard_address1_new, ccardaud_ccard_address2_old, ccardaud_ccard_address2_new, ccardaud_ccard_city_old, ccardaud_ccard_city_new, ccardaud_ccard_state_old, ccardaud_ccard_state_new, ccardaud_ccard_zip_old, ccardaud_ccard_zip_new, ccardaud_ccard_country_old, ccardaud_ccard_country_new, ccardaud_ccard_number_old, ccardaud_ccard_number_new, ccardaud_ccard_debit_old, ccardaud_ccard_debit_new, ccardaud_ccard_month_expired_old, ccardaud_ccard_month_expired_new, ccardaud_ccard_year_expired_old, ccardaud_ccard_year_expired_new, ccardaud_ccard_type_old, ccardaud_ccard_type_new, ccardaud_ccard_last_updated, ccardaud_ccard_last_updated_by_username) FROM stdin; \. -- -- Data for Name: ccbank; Type: TABLE DATA; Schema: public; Owner: admin -- COPY ccbank (ccbank_id, ccbank_ccard_type, ccbank_bankaccnt_id) FROM stdin; 4 P \N 1 A \N 2 D \N 3 M \N 5 V \N \. -- -- Data for Name: ccpay; Type: TABLE DATA; Schema: public; Owner: admin -- COPY ccpay (ccpay_id, ccpay_ccard_id, ccpay_cust_id, ccpay_amount, ccpay_auth, ccpay_status, ccpay_type, ccpay_auth_charge, ccpay_order_number, ccpay_order_number_seq, ccpay_r_avs, ccpay_r_ordernum, ccpay_r_error, ccpay_r_approved, ccpay_r_code, ccpay_r_message, ccpay_yp_r_time, ccpay_r_ref, ccpay_yp_r_tdate, ccpay_r_tax, ccpay_r_shipping, ccpay_yp_r_score, ccpay_transaction_datetime, ccpay_by_username, ccpay_curr_id, ccpay_ccpay_id) FROM stdin; \. -- -- Data for Name: char; Type: TABLE DATA; Schema: public; Owner: admin -- COPY "char" (char_id, char_name, char_items, char_options, char_attributes, char_lotserial, char_notes, char_customers, char_crmaccounts, char_addresses, char_contacts, char_opportunity, char_employees, char_mask, char_validator, char_incidents, char_type, char_order, char_search) FROM stdin; 14 Lot Test Results f f f t Lot Test Results f f f f f f \N \N f 0 10 t 13 Cusotmer Feedback f f f f Feedback From Customer t f f f f f \N \N f 0 10 t 15 Item Color t f f f Item Color f f f f f f \N \N f 1 10 t \. -- -- Data for Name: charass; Type: TABLE DATA; Schema: public; Owner: admin -- COPY charass (charass_id, charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default, charass_price) FROM stdin; \. -- -- Data for Name: charopt; Type: TABLE DATA; Schema: public; Owner: admin -- COPY charopt (charopt_id, charopt_char_id, charopt_value, charopt_order) FROM stdin; 1 15 Red 10 2 15 Green 20 3 15 Blue 30 \. -- -- Data for Name: checkhead; Type: TABLE DATA; Schema: public; Owner: admin -- COPY checkhead (checkhead_id, checkhead_recip_id, checkhead_recip_type, checkhead_bankaccnt_id, checkhead_printed, checkhead_checkdate, checkhead_number, checkhead_amount, checkhead_void, checkhead_replaced, checkhead_posted, checkhead_rec, checkhead_misc, checkhead_expcat_id, checkhead_for, checkhead_notes, checkhead_journalnumber, checkhead_curr_id, checkhead_deleted, checkhead_ach_batch, checkhead_curr_rate) FROM stdin; \. -- -- Data for Name: checkitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY checkitem (checkitem_id, checkitem_checkhead_id, checkitem_amount, checkitem_discount, checkitem_ponumber, checkitem_vouchernumber, checkitem_invcnumber, checkitem_apopen_id, checkitem_aropen_id, checkitem_docdate, checkitem_curr_id, checkitem_cmnumber, checkitem_ranumber, checkitem_curr_rate) FROM stdin; \. -- -- Data for Name: classcode; Type: TABLE DATA; Schema: public; Owner: admin -- COPY classcode (classcode_id, classcode_code, classcode_descrip, classcode_mfg, classcode_creator, classcode_created, classcode_modifier, classcode_modified, classcode_type) FROM stdin; 35 SOLD Sold Items \N \N \N \N \N \N 34 OUTSIDE PROCESS Outside Process \N \N \N \N \N \N 36 SUB ASSEMBLY Sub Assembly \N \N \N \N \N \N 33 COMPONENT Component \N \N \N \N \N \N \. -- -- Data for Name: cmd; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cmd (cmd_id, cmd_module, cmd_title, cmd_descrip, cmd_privname, cmd_executable, cmd_name) FROM stdin; \. -- -- Data for Name: cmdarg; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cmdarg (cmdarg_id, cmdarg_cmd_id, cmdarg_order, cmdarg_arg) FROM stdin; \. -- -- Data for Name: cmhead; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cmhead (cmhead_id, cmhead_number, cmhead_posted, cmhead_invcnumber, cmhead_custponumber, cmhead_cust_id, cmhead_docdate, cmhead_shipto_id, cmhead_shipto_name, cmhead_shipto_address1, cmhead_shipto_address2, cmhead_shipto_address3, cmhead_shipto_city, cmhead_shipto_state, cmhead_shipto_zipcode, cmhead_salesrep_id, cmhead_freight, cmhead_misc, cmhead_comments, cmhead_printed, cmhead_billtoname, cmhead_billtoaddress1, cmhead_billtoaddress2, cmhead_billtoaddress3, cmhead_billtocity, cmhead_billtostate, cmhead_billtozip, cmhead_hold, cmhead_commission, cmhead_misc_accnt_id, cmhead_misc_descrip, cmhead_rsncode_id, cmhead_curr_id, cmhead_freighttaxtype_id, cmhead_gldistdate, cmhead_billtocountry, cmhead_shipto_country, cmhead_rahead_id, cmhead_taxzone_id, cmhead_prj_id, cmhead_void, cmhead_saletype_id, cmhead_shipzone_id) FROM stdin; \. -- -- Data for Name: cmheadtax; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cmheadtax (taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber) FROM stdin; \. -- -- Data for Name: cmitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cmitem (cmitem_id, cmitem_cmhead_id, cmitem_linenumber, cmitem_itemsite_id, cmitem_qtycredit, cmitem_qtyreturned, cmitem_unitprice, cmitem_comments, cmitem_rsncode_id, cmitem_taxtype_id, cmitem_qty_uom_id, cmitem_qty_invuomratio, cmitem_price_uom_id, cmitem_price_invuomratio, cmitem_raitem_id, cmitem_updateinv) FROM stdin; \. -- -- Data for Name: cmitemtax; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cmitemtax (taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber) FROM stdin; \. -- -- Data for Name: cmnttype; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cmnttype (cmnttype_id, cmnttype_name, cmnttype_descrip, cmnttype_usedin, cmnttype_sys, cmnttype_editable, cmnttype_order) FROM stdin; 1 General General Comment ICVPL t f \N 2 ChangeLog Change Log ICVP t f \N 3 Notes to Comment Used by certain triggers to automatically create/update comment with content of notes. \N t f \N \. -- -- Data for Name: cmnttypesource; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cmnttypesource (cmnttypesource_id, cmnttypesource_cmnttype_id, cmnttypesource_source_id) FROM stdin; 8 1 1 9 2 1 10 1 2 11 2 2 12 1 3 13 2 3 14 1 4 15 2 4 16 1 5 17 2 5 18 1 6 19 2 6 20 1 7 21 2 7 22 1 8 23 2 8 24 1 9 25 2 9 26 1 10 27 2 10 28 1 11 29 2 11 30 1 12 31 2 12 32 1 13 33 2 13 34 1 14 35 2 14 36 1 15 37 2 15 38 1 16 39 2 16 40 1 17 41 2 17 42 1 18 43 2 18 44 1 19 45 2 19 46 1 20 47 2 20 48 1 21 49 2 21 50 1 22 51 2 22 52 1 23 53 2 23 54 1 24 55 2 24 56 1 25 57 2 25 58 1 26 59 2 26 60 1 27 61 2 27 62 1 28 63 2 28 64 1 29 65 2 29 66 1 30 67 2 30 68 1 31 69 2 31 70 1 32 71 2 32 72 1 33 73 2 33 74 1 34 75 2 34 76 3 12 \. -- -- Data for Name: cntct; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cntct (cntct_id, cntct_crmacct_id, cntct_addr_id, cntct_first_name, cntct_last_name, cntct_honorific, cntct_initials, cntct_active, cntct_phone, cntct_phone2, cntct_fax, cntct_email, cntct_webaddr, cntct_notes, cntct_title, cntct_number, cntct_middle, cntct_suffix, cntct_owner_username, cntct_name) FROM stdin; 2 \N 2 Main Warehouse \N \N t \N \N \N \N 2 \N \N \N Main Warehouse \. -- -- Data for Name: cntctaddr; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cntctaddr (cntctaddr_id, cntctaddr_cntct_id, cntctaddr_primary, cntctaddr_addr_id, cntctaddr_type) FROM stdin; \. -- -- Data for Name: cntctdata; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cntctdata (cntctdata_id, cntctdata_cntct_id, cntctdata_primary, cntctdata_text, cntctdata_type) FROM stdin; \. -- -- Data for Name: cntcteml; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cntcteml (cntcteml_id, cntcteml_cntct_id, cntcteml_primary, cntcteml_email) FROM stdin; \. -- -- Data for Name: cntctmrgd; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cntctmrgd (cntctmrgd_cntct_id, cntctmrgd_error) FROM stdin; \. -- -- Data for Name: cntctsel; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cntctsel (cntctsel_cntct_id, cntctsel_target, cntctsel_mrg_crmacct_id, cntctsel_mrg_addr_id, cntctsel_mrg_first_name, cntctsel_mrg_last_name, cntctsel_mrg_honorific, cntctsel_mrg_initials, cntctsel_mrg_phone, cntctsel_mrg_phone2, cntctsel_mrg_fax, cntctsel_mrg_email, cntctsel_mrg_webaddr, cntctsel_mrg_notes, cntctsel_mrg_title, cntctsel_mrg_middle, cntctsel_mrg_suffix, cntctsel_mrg_owner_username) FROM stdin; \. -- -- Data for Name: cntslip; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cntslip (cntslip_id, cntslip_cnttag_id, cntslip_entered, cntslip_posted, cntslip_number, cntslip_qty, cntslip_comments, cntslip_location_id, cntslip_lotserial, cntslip_lotserial_expiration, cntslip_lotserial_warrpurc, cntslip_username) FROM stdin; \. -- -- Data for Name: cobill; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cobill (cobill_id, cobill_coitem_id, cobill_selectdate, cobill_qty, cobill_invcnum, cobill_toclose, cobill_cobmisc_id, cobill_select_username, cobill_invcitem_id, cobill_taxtype_id) FROM stdin; \. -- -- Data for Name: cobilltax; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cobilltax (taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber) FROM stdin; \. -- -- Data for Name: cobmisc; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cobmisc (cobmisc_id, cobmisc_cohead_id, cobmisc_shipvia, cobmisc_freight, cobmisc_misc, cobmisc_payment, cobmisc_paymentref, cobmisc_notes, cobmisc_shipdate, cobmisc_invcnumber, cobmisc_invcdate, cobmisc_posted, cobmisc_misc_accnt_id, cobmisc_misc_descrip, cobmisc_closeorder, cobmisc_curr_id, cobmisc_invchead_id, cobmisc_taxzone_id, cobmisc_taxtype_id) FROM stdin; \. -- -- Data for Name: cobmisctax; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cobmisctax (taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber) FROM stdin; \. -- -- Data for Name: cohead; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cohead (cohead_id, cohead_number, cohead_cust_id, cohead_custponumber, cohead_type, cohead_orderdate, cohead_warehous_id, cohead_shipto_id, cohead_shiptoname, cohead_shiptoaddress1, cohead_shiptoaddress2, cohead_shiptoaddress3, cohead_shiptoaddress4, cohead_shiptoaddress5, cohead_salesrep_id, cohead_terms_id, cohead_fob, cohead_shipvia, cohead_shiptocity, cohead_shiptostate, cohead_shiptozipcode, cohead_freight, cohead_misc, cohead_imported, cohead_ordercomments, cohead_shipcomments, cohead_shiptophone, cohead_shipchrg_id, cohead_shipform_id, cohead_billtoname, cohead_billtoaddress1, cohead_billtoaddress2, cohead_billtoaddress3, cohead_billtocity, cohead_billtostate, cohead_billtozipcode, cohead_misc_accnt_id, cohead_misc_descrip, cohead_commission, cohead_miscdate, cohead_holdtype, cohead_packdate, cohead_prj_id, cohead_wasquote, cohead_lastupdated, cohead_shipcomplete, cohead_created, cohead_creator, cohead_quote_number, cohead_billtocountry, cohead_shiptocountry, cohead_curr_id, cohead_calcfreight, cohead_shipto_cntct_id, cohead_shipto_cntct_honorific, cohead_shipto_cntct_first_name, cohead_shipto_cntct_middle, cohead_shipto_cntct_last_name, cohead_shipto_cntct_suffix, cohead_shipto_cntct_phone, cohead_shipto_cntct_title, cohead_shipto_cntct_fax, cohead_shipto_cntct_email, cohead_billto_cntct_id, cohead_billto_cntct_honorific, cohead_billto_cntct_first_name, cohead_billto_cntct_middle, cohead_billto_cntct_last_name, cohead_billto_cntct_suffix, cohead_billto_cntct_phone, cohead_billto_cntct_title, cohead_billto_cntct_fax, cohead_billto_cntct_email, cohead_taxzone_id, cohead_taxtype_id, cohead_ophead_id, cohead_status, cohead_saletype_id, cohead_shipzone_id) FROM stdin; \. -- -- Data for Name: cohist; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cohist (cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_orderdate, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_shipto_id, cohist_salesrep_id, cohist_duedate, cohist_imported, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_commission, cohist_commissionpaid, cohist_unitcost, cohist_misc_type, cohist_misc_descrip, cohist_misc_id, cohist_doctype, cohist_promisedate, cohist_ponumber, cohist_curr_id, cohist_sequence, cohist_taxtype_id, cohist_taxzone_id, cohist_cohead_ccpay_id, cohist_saletype_id, cohist_shipzone_id) FROM stdin; \. -- -- Data for Name: cohisttax; Type: TABLE DATA; Schema: public; Owner: admin -- COPY cohisttax (taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber) FROM stdin; \. -- -- Data for Name: coitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY coitem (coitem_id, coitem_cohead_id, coitem_linenumber, coitem_itemsite_id, coitem_status, coitem_scheddate, coitem_promdate, coitem_qtyord, coitem_unitcost, coitem_price, coitem_custprice, coitem_qtyshipped, coitem_order_id, coitem_memo, coitem_imported, coitem_qtyreturned, coitem_closedate, coitem_custpn, coitem_order_type, coitem_close_username, coitem_lastupdated, coitem_substitute_item_id, coitem_created, coitem_creator, coitem_prcost, coitem_qty_uom_id, coitem_qty_invuomratio, coitem_price_uom_id, coitem_price_invuomratio, coitem_warranty, coitem_cos_accnt_id, coitem_qtyreserved, coitem_subnumber, coitem_firm, coitem_taxtype_id, coitem_rev_accnt_id, coitem_pricemode) FROM stdin; \. -- -- Data for Name: comment; Type: TABLE DATA; Schema: public; Owner: admin -- COPY comment (comment_id, comment_source_id, comment_date, comment_user, comment_text, comment_cmnttype_id, comment_source, comment_public) FROM stdin; 39 2 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 40 3 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 41 4 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 42 5 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 43 6 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 44 7 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 45 8 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 46 9 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 47 10 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 48 11 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 49 12 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 50 13 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 51 14 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 52 15 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 53 16 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 54 17 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 55 18 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 56 19 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 57 20 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 58 21 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 59 22 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 60 23 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 61 24 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 62 25 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f 63 26 2011-08-19 11:27:57.826966-04 admin Created by admin 2 CRMA f \. -- -- Data for Name: company; Type: TABLE DATA; Schema: public; Owner: admin -- COPY company (company_id, company_number, company_descrip, company_external, company_server, company_port, company_database, company_curr_id, company_yearend_accnt_id, company_gainloss_accnt_id, company_dscrp_accnt_id, company_unrlzgainloss_accnt_id) FROM stdin; 1 01 Company 01 f \N \N \N \N 84 122 123 \N \. -- -- Data for Name: contrct; Type: TABLE DATA; Schema: public; Owner: admin -- COPY contrct (contrct_id, contrct_number, contrct_vend_id, contrct_descrip, contrct_effective, contrct_expires, contrct_note) FROM stdin; \. -- -- Data for Name: costcat; Type: TABLE DATA; Schema: public; Owner: admin -- COPY costcat (costcat_id, costcat_code, costcat_descrip, costcat_asset_accnt_id, costcat_liability_accnt_id, costcat_adjustment_accnt_id, costcat_matusage_accnt_id, costcat_purchprice_accnt_id, costcat_laboroverhead_accnt_id, costcat_scrap_accnt_id, costcat_invcost_accnt_id, costcat_wip_accnt_id, costcat_shipasset_accnt_id, costcat_mfgscrap_accnt_id, costcat_transform_accnt_id, costcat_freight_accnt_id, costcat_toliability_accnt_id, costcat_exp_accnt_id) FROM stdin; 30 CATEGORY1 Cost Category 1 86 95 91 88 135 94 92 133 85 96 93 89 98 \N 131 \. -- -- Data for Name: costelem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY costelem (costelem_id, costelem_type, costelem_sys, costelem_po, costelem_active, costelem_exp_accnt_id, costelem_cost_item_id) FROM stdin; 3 Material t t t \N -1 4 Direct Labor t f t \N -1 6 Machine Overhead t f t \N -1 5 Overhead t f t \N -1 \. -- -- Data for Name: costhist; Type: TABLE DATA; Schema: public; Owner: admin -- COPY costhist (costhist_id, costhist_item_id, costhist_costelem_id, costhist_type, costhist_date, costhist_oldcost, costhist_newcost, costhist_lowlevel, costhist_oldcurr_id, costhist_newcurr_id, costhist_username) FROM stdin; 979 295 19 D 2004-03-19 15:23:23.224219-05 1.500000 0.000000 f 1 1 \N 980 296 20 D 2004-03-19 15:23:23.224219-05 0.300000 0.000000 f 1 1 \N 981 297 20 D 2004-03-19 15:23:23.224219-05 0.250000 0.000000 f 1 1 \N 982 294 20 D 2004-03-19 15:23:23.224219-05 0.100000 0.000000 f 1 1 \N 983 293 20 D 2004-03-19 15:23:23.224219-05 0.100000 0.000000 f 1 1 \N 984 298 4 D 2004-03-19 15:23:23.224219-05 0.333300 0.000000 f 1 1 \N 985 298 5 D 2004-03-19 15:23:23.224219-05 0.333300 0.000000 f 1 1 \N 986 298 20 D 2004-03-19 15:23:23.224219-05 0.550000 0.000000 t 1 1 \N 987 292 4 D 2004-03-19 15:23:23.224219-05 0.850000 0.000000 f 1 1 \N 988 292 5 D 2004-03-19 15:23:23.224219-05 0.850000 0.000000 f 1 1 \N 989 292 4 D 2004-03-19 15:23:23.224219-05 0.333300 0.000000 t 1 1 \N 990 292 19 D 2004-03-19 15:23:23.224219-05 0.015000 0.000000 t 1 1 \N 991 292 5 D 2004-03-19 15:23:23.224219-05 0.333300 0.000000 t 1 1 \N 992 292 20 D 2004-03-19 15:23:23.224219-05 1.050000 0.000000 t 1 1 \N \. -- -- Data for Name: costupdate; Type: TABLE DATA; Schema: public; Owner: admin -- COPY costupdate (costupdate_item_id, costupdate_lowlevel_code, costupdate_item_type) FROM stdin; \. -- -- Data for Name: country; Type: TABLE DATA; Schema: public; Owner: admin -- COPY country (country_id, country_abbr, country_name, country_curr_abbr, country_curr_name, country_curr_number, country_curr_symbol, country_qt_number) FROM stdin; 214 \N \N XTS Code reserved for testing 963 \N \N 5 AD Andorra EUR Euro 978 € 5 228 AE United Arab Emirates AED UAE Dirham 784 \N 223 1 AF Afghanistan AFN Afghani 971 \N 1 9 AG Antigua And Barbuda XCD East Caribbean Dollar 951 $ 9 7 AI Anguilla XCD East Caribbean Dollar 951 $ 7 2 AL Albania ALL Lek 8 \N 2 11 AM Armenia AMD Armenian Dram 51 \N 11 154 AN Netherlands Antilles ANG Netherlands Antillian Guilder 532 ƒ 152 6 AO Angola AOA Kwanza 973 \N 6 8 AQ Antarctica \N \N \N \N 8 10 AR Argentina ARS Argentine Peso 32 $ 10 4 AS American Samoa USD US Dollar 840 $ 4 14 AT Austria EUR Euro 978 € 14 13 AU Australia AUD Australian Dollar 36 $ 13 12 AW Aruba AWG Aruban Guilder 533 ƒ 12 15 AZ Azerbaijan AZN Azerbaijanian Manat 944 \N 15 27 BA Bosnia And Herzegovina BAM Convertible Marks 977 \N 27 19 BB Barbados BBD Barbados Dollar 52 $ 19 18 BD Bangladesh BDT Taka 50 \N 18 21 BE Belgium EUR Euro 978 € 21 35 BF Burkina Faso XOF CFA Franc BCEAO 952 \N 34 34 BG Bulgaria BGN Bulgarian Lev 975 \N 33 17 BH Bahrain BHD Bahraini Dinar 48 \N 17 36 BI Burundi BIF Burundi Franc 108 \N 35 23 BJ Benin XOF CFA Franc BCEAO 952 \N 23 24 BM Bermuda BMD Bermudian Dollar 60 $ 24 33 BN Brunei Darussalam BND Brunei Dollar 96 $ 32 26 BO Bolivia BOB Boliviano 68 $ 26 30 BR Brazil BRL Brazilian Real 986 R$ 30 16 BS Bahamas BSD Bahamian Dollar 44 $ 16 25 BT Bhutan BTN Ngultrum 64 \N 25 29 BV Bouvet Island NOK Norwegian Krone 578 \N 29 28 BW Botswana BWP Pula 72 \N 28 20 BY Belarus BYR Belarussian Ruble 974 \N 20 22 BZ Belize BZD Belize Dollar 84 $ 22 39 CA Canada CAD Canadian Dollar 124 $ 38 47 CC Cocos (Keeling) Islands AUD Australian Dollar 36 $ 46 51 CD Congo, The Democratic Republic Of CDF Franc Congolais 976 \N 49 42 CF Central African Republic XAF CFA Franc BEAC 950 \N 41 50 CG Congo XAF CFA Franc BEAC 950 \N 50 209 CH Switzerland CHF Swiss Franc 756 \N 206 107 CI Ivory Coast XOF CFA Frank BCEA 952 \N 53 52 CK Cook Islands NZD New Zealand Dollar 554 $ 51 44 CL Chile CLP Chilean Peso 152 $ 43 38 CM Cameroon XAF CFA Franc BEAC 950 \N 37 45 CN China CNY Yuan Renminbi 156 \N 44 48 CO Colombia COP Colombian Peso 170 ₱ 47 53 CR Costa Rica CRC Costa Rican Colon 188 ₡ 52 55 CU Cuba CUP Cuban Peso 192 ₱ 55 40 CV Cape Verde CVE Cape Verde Escudo 132 \N 39 46 CX Christmas Island AUD Australian Dollar 36 $ 45 56 CY Cyprus CYP Cyprus Pound 196 £ 56 57 CZ Czech Republic CZK Czech Koruna 203 \N 57 81 DE Germany EUR Euro 978 € 82 59 DJ Djibouti DJF Djibouti Franc 262 \N 59 58 DK Denmark DKK Danish Krone 208 kr 58 60 DM Dominica XCD East Caribbean Dollar 951 $ 60 61 DO Dominican Republic DOP Dominican Peso 214 ₱ 61 3 DZ Algeria DZD Algerian Dinar 12 \N 3 63 EC Ecuador USD US Dollar 840 $ 63 68 EE Estonia EEK Kroon 233 \N 68 64 EG Egypt EGP Egyptian Pound 818 £ 64 239 EH Western Sahara MAD Moroccan Dirham 504 \N 236 67 ER Eritrea ERN Nakfa 232 \N 67 202 ES Spain EUR Euro 978 € 197 69 ET Ethiopia ETB Ethiopian Birr 230 \N 69 73 FI Finland EUR Euro 978 € 73 72 FJ Fiji FJD Fiji Dollar 242 $ 72 70 FK Falkland Islands (Malvinas) FKP Falkland Islands Pound 238 £ 70 141 FM Micronesia, Federated States Of USD US Dollar 840 $ 140 71 FO Faroe Islands DKK Danish Krone 208 \N 71 74 FR France EUR Euro 978 € 74 78 GA Gabon XAF CFA Franc BEAC 950 \N 79 86 GD Grenada XCD East Caribbean Dollar 951 $ 87 80 GE Georgia GEL Lari 981 \N 81 75 GF French Guiana EUR Euro 978 € 76 82 GH Ghana GHC Cedi 288 \N 83 83 GI Gibraltar GIP Gibraltar Pound 292 £ 84 85 GL Greenland DKK Danish Krone 208 \N 86 79 GM Gambia GMD Dalasi 270 \N 80 90 GN Guinea GNF Guinea Franc 324 \N 91 87 GP Guadeloupe EUR Euro 978 € 88 66 GQ Equatorial Guinea XAF CFA Franc BEAC 950 \N 66 84 GR Greece EUR Euro 978 € 85 201 GS South Georgia And The South Sandwich Islands GBP Pound Sterling 826 \N 196 89 GT Guatemala GTQ Quetzal 320 \N 90 88 GU Guam USD US Dollar 840 $ 89 91 GW Guinea-Bissau XOF CFA Franc BCEAO 952 \N 92 92 GY Guyana GYD Guyana Dollar 328 $ 93 97 HK Hong Kong HKD Hong Kong Dollar 344 $ 97 94 HM Heard Island And Mcdonald Islands AUD Australian Dollar 36 $ 95 96 HN Honduras HNL Lempira 340 \N 96 54 HR Croatia HRK Croatian Kuna 191 \N 54 93 HT Haiti HTG Gourde 332 \N 94 98 HU Hungary HUF Forint 348 \N 98 101 ID Indonesia IDR Indonesia Rupiah 360 \N 101 104 IE Ireland EUR Euro 978 € 104 105 IL Israel ILS New Israeli Sheqel 376 ₪ 105 100 IN India INR Indian Rupee 356 ₨ 100 31 IO British Indian Ocean Territory USD US Dollar 840 $ 31 103 IQ Iraq IQD Iraqi Dinar 368 \N 103 102 IR Iran IRR Iranian Rial 364 ﷼ 102 99 IS Iceland ISK Iceland Krona 352 \N 99 106 IT Italy EUR Euro 978 € 106 108 JM Jamaica JMD Jamaican Dollar 388 $ 107 110 JO Jordan JOD Jordanian Dinar 400 \N 109 109 JP Japan JPY Yen 392 ¥ 108 112 KE Kenya KES Kenyan Shilling 404 \N 111 117 KG Kyrgyzstan KGS Som 417 \N 116 37 KH Cambodia KHR Riel 116 ៛ 36 113 KI Kiribati AUD Australian Dollar 36 $ 112 49 KM Comoros KMF Comoro Franc 174 \N 48 183 KN Saint Kitts And Nevis XCD East Caribbean Dollar 951 $ 180 114 KP Korea, Democratic Peoples Republic Of KPW North Korean Won 408 ₩ 113 115 KR Korea, Republic Of KRW South Korean Won 410 ₩ 114 116 KW Kuwait KWD Kuwaiti Dinar 414 \N 115 41 KY Cayman Islands KYD Cayman Islands Dollar 136 $ 40 111 KZ Kazakhstan KZT Tenge 398 \N 110 118 LA Laos LAK Kip 418 ₭ 117 120 LB Lebanon LBP Lebanese Pound 422 £ 119 184 LC Saint Lucia XCD East Caribbean Dollar 951 $ 181 124 LI Liechtenstein CHF Swiss Franc 756 \N 123 203 LK Sri Lanka LKR Sri Lanka Rupee 144 ௹ 198 122 LR Liberia LRD Liberian Dollar 430 $ 121 121 LS Lesotho LSL Loti 426 \N 120 125 LT Lithuania LTL Lithuanian Litas 440 \N 124 126 LU Luxembourg EUR Euro 978 € 125 119 LV Latvia LVL Latvian Lats 428 \N 118 123 LY Libyan Arab Jamahiriya LYD Libyan Dinar 434 \N 122 147 MA Morocco MAD Moroccan Dirham 504 \N 145 143 MC Monaco EUR Euro 978 € 142 142 MD Moldova MDL Moldovan Leu 498 \N 141 145 ME Montenegro EUR Euro 978 € 241 129 MG Madagascar MGA Malagascy Ariary 969 \N 128 135 MH Marshall Islands USD US Dollar 840 $ 134 128 MK Macedonia, Former Yugoslav Republic Of MKD Denar 807 \N 127 133 ML Mali XOF CFA Franc BCEAO 952 \N 132 149 MM Myanmar MMK Kyat 104 \N 147 144 MN Mongolia MNT Tugrik 496 ₮ 143 127 MO Macao MOP Pataca 446 \N 126 162 MP Northern Mariana Islands USD US Dollar 840 $ 160 136 MQ Martinique EUR Euro 978 € 135 137 MR Mauritania MRO Ouguiya 478 \N 136 146 MS Montserrat XCD East Caribbean Dollar 951 $ 144 134 MT Malta MTL Maltese Lira 470 ₤ 133 138 MU Mauritius MUR Mauritius Rupee 480 ₨ 137 132 MV Maldives MVR Rufiyaa 462 \N 131 130 MW Malawi MWK Malawi Kwacha 454 \N 129 140 MX Mexico MXN Mexican Peso 484 $ 139 131 MY Malaysia MYR Malaysian Ringgit 458 \N 130 148 MZ Mozambique MZN Metical 943 \N 146 150 NA Namibia NAD Namibian Dollar 516 $ 148 155 NC New Caledonia XPF CFP Franc 953 \N 153 158 NE Niger XOF CFA Franc BCEAO 952 \N 156 161 NF Norfolk Island AUD Australian Dollar 36 $ 159 159 NG Nigeria NGN Naira 566 ₦ 157 157 NI Nicaragua NIO Cordoba Oro 558 \N 155 153 NL Netherlands EUR Euro 978 € 151 163 NO Norway NOK Norwegian Krone 578 \N 161 152 NP Nepal NPR Nepalese Rupee 524 ₨ 150 151 NR Nauru AUD Australian Dollar 36 $ 149 160 NU Niue NZD New Zealand Dollar 554 $ 158 156 NZ New Zealand NZD New Zealand Dollar 554 $ 154 164 OM Oman OMR Rial Omani 512 ﷼ 162 168 PA Panama PAB Balboa 590 \N 166 171 PE Peru PEN Nuevo Sol 604 S/. 169 76 PF French Polynesia XPF CFP Franc 953 \N 77 169 PG Papua New Guinea PGK Kina 598 \N 167 172 PH Philippines PHP Philippine Peso 608 ₱ 170 165 PK Pakistan PKR Pakistan Rupee 586 ₨ 163 174 PL Poland PLN Zloty 985 \N 172 185 PM Saint Pierre And Miquelon EUR Euro 978 € 200 173 PN Pitcairn NZD New Zealand Dollar 554 $ 171 176 PR Puerto Rico USD US Dollar 840 $ 174 167 PS Palestinian Territories \N \N \N \N 165 175 PT Portugal EUR Euro 978 € 173 166 PW Palau USD US Dollar 840 $ 164 170 PY Paraguay PYG Guarani 600 \N 168 177 QA Qatar QAR Qatari Rial 634 \N 175 178 RE Reunion EUR Euro 978 € 176 179 RO Romania RON New Leu 946 \N 177 192 RS Serbia RSD Serbian Dinar 941 \N 241 180 RU Russian Federation RUB Russian Ruble 643 \N 178 181 RW Rwanda RWF Rwanda Franc 646 \N 179 190 SA Saudi Arabia SAR Saudi Riyal 682 ﷼ 186 198 SB Solomon Islands SBD Solomon Islands Dollar 90 $ 193 193 SC Seychelles SCR Seychelles Rupee 690 ₨ 188 204 SD Sudan SDD Sudanese Dinar 736 \N 201 208 SE Sweden SEK Swedish Krona 752 kr 205 195 SG Singapore SGD Singapore Dollar 702 $ 190 182 SH Saint Helena SHP Saint Helena Pound 654 £ 199 197 SI Slovenia SIT Tolar 705 \N 192 206 SJ Svalbard And Jan Mayen NOK Norwegian Krone 578 \N 203 196 SK Slovakia SKK Slovak Koruna 703 \N 191 194 SL Sierra Leone SLL Leone 694 \N 189 188 SM San Marino EUR Euro 978 € 184 191 SN Senegal XOF CFA Franc BCEAO 952 \N 187 199 SO Somalia SOS Somali Shilling 706 \N 194 205 SR Suriname SRD Surinam Dollar 968 $ 202 189 ST Sao Tome And Principe STD Dobra 678 \N 185 65 SV El Salvador SVC El Salvador Colon 222 ₡ 65 210 SY Syria SYP Syrian Pound 760 £ 207 207 SZ Swaziland SZL Lilangeni 748 \N 204 224 TC Turks And Caicos Islands USD US Dollar 840 $ 219 43 TD Chad XAF CFA Franc BEAC 950 \N 42 77 TF French Southern Territories EUR Euro 978 € 78 217 TG Togo XOF CFA Franc BCEAO 952 \N 212 215 TH Thailand THB Baht 764 ฿ 211 212 TJ Tajikistan TJS Somoni 972 \N 209 218 TK Tokelau NZD New Zealand Dollar 554 $ 213 216 TL Timor-Leste USD US Dollar 840 $ 62 223 TM Turkmenistan TMM Turkmenistan Manat 795 \N 218 221 TN Tunisia TND Tunisian Dinar 788 \N 216 219 TO Tonga TOP Paanga 776 \N 214 62 TP East Timor IDR Indonesia Rupiah 360 \N 62 222 TR Turkey TRY New Turkish Lira 949 ₤ 217 220 TT Trinidad And Tobago TTD Trinidad and Tobago Dollar 780 $ 215 225 TV Tuvalu AUD Australian Dollar 36 $ 220 211 TW Taiwan TWD New Taiwan Dollar 901 $ 208 213 TZ Tanzania TZS Tanzanian Shilling 834 \N 210 227 UA Ukraine UAH Hryvnia 980 \N 222 226 UG Uganda UGX Uganda Shilling 800 \N 221 229 UK United Kingdom GBP Pound Sterling 826 £ 224 232 UM U.S. Minor Outlying Islands USD US Dollar 840 $ 226 230 US United States USD US Dollar 840 $ 225 231 UY Uruguay UYU Peso Uruguayo 858 ₱ 227 234 UZ Uzbekistan UZS Uzbekistan Sum 860 \N 228 95 VA Holy See (Vatican City State) EUR Euro 978 € 230 186 VC Saint Vincent And The Grenadines XCD East Caribbean Dollar 951 $ 182 236 VE Venezuela VEB Bolivar 862 \N 231 32 VG British Virgin Islands USD US Dollar 840 $ 233 233 VI U.S. Virgin Islands USD US Dollar 840 $ 234 237 VN Viet Nam VND Dong 704 ₫ 232 235 VU Vanuatu VUV Vatu 548 \N 229 238 WF Wallis And Futuna XPF CFP Franc 953 \N 235 187 WS Samoa WST Tala 882 \N 183 240 YE Yemen YER Yemeni Rial 886 ﷼ 237 139 YT Mayotte EUR Euro 978 € 138 200 ZA South Africa ZAR Rand 710 R 195 241 ZM Zambia ZMK Zambian Kwacha 894 \N 239 242 ZW Zimbabwe ZWD Zimbabwe Dollar 716 $ 240 \. -- -- Data for Name: crmacct; Type: TABLE DATA; Schema: public; Owner: admin -- COPY crmacct (crmacct_id, crmacct_number, crmacct_name, crmacct_active, crmacct_type, crmacct_cust_id, crmacct_competitor_id, crmacct_partner_id, crmacct_prospect_id, crmacct_vend_id, crmacct_cntct_id_1, crmacct_cntct_id_2, crmacct_parent_id, crmacct_notes, crmacct_taxauth_id, crmacct_owner_username, crmacct_emp_id, crmacct_salesrep_id, crmacct_usr_username) FROM stdin; 2 10 Inside Sales t I \N \N \N \N \N \N \N \N \N \N \N \N 29 \N 4 MFGADMIN OpenMFG Administrator t I \N \N \N \N \N \N \N \N \N \N \N 1 \N mfgadmin 3 ADMIN Administrator t I \N \N \N \N \N \N \N \N \N \N admin 2 \N admin 1 SALES TAX State Sales Tax Authority t O \N \N \N \N 78 \N \N \N 1 admin \N \N \N \. -- -- Data for Name: crmacctsel; Type: TABLE DATA; Schema: public; Owner: admin -- COPY crmacctsel (crmacctsel_src_crmacct_id, crmacctsel_dest_crmacct_id, crmacctsel_mrg_crmacct_active, crmacctsel_mrg_crmacct_cntct_id_1, crmacctsel_mrg_crmacct_cntct_id_2, crmacctsel_mrg_crmacct_competitor_id, crmacctsel_mrg_crmacct_cust_id, crmacctsel_mrg_crmacct_emp_id, crmacctsel_mrg_crmacct_name, crmacctsel_mrg_crmacct_notes, crmacctsel_mrg_crmacct_owner_username, crmacctsel_mrg_crmacct_parent_id, crmacctsel_mrg_crmacct_partner_id, crmacctsel_mrg_crmacct_prospect_id, crmacctsel_mrg_crmacct_salesrep_id, crmacctsel_mrg_crmacct_taxauth_id, crmacctsel_mrg_crmacct_type, crmacctsel_mrg_crmacct_usr_username, crmacctsel_mrg_crmacct_vend_id, crmacctsel_mrg_crmacct_number) FROM stdin; \. -- -- Data for Name: curr_rate; Type: TABLE DATA; Schema: public; Owner: admin -- COPY curr_rate (curr_rate_id, curr_id, curr_rate, curr_effective, curr_expires) FROM stdin; 1 1 1.00000000 1970-01-01 2100-01-01 \. -- -- Data for Name: curr_symbol; Type: TABLE DATA; Schema: public; Owner: admin -- COPY curr_symbol (curr_id, curr_base, curr_name, curr_symbol, curr_abbr) FROM stdin; 1 t Base Currency - Change As Necessary $ USD \. -- -- Data for Name: custform; Type: TABLE DATA; Schema: public; Owner: admin -- COPY custform (custform_id, custform_custtype_id, custform_custtype, custform_invoice_report_id, custform_creditmemo_report_id, custform_quote_report_id, custform_packinglist_report_id, custform_statement_report_id, custform_sopicklist_report_id, custform_invoice_report_name, custform_creditmemo_report_name, custform_quote_report_name, custform_packinglist_report_name, custform_statement_report_name, custform_sopicklist_report_name) FROM stdin; 8 -1 .* 1 3 172 80 261 346 Invoice CreditMemo Quote PackingList Statement PickingListSOClosedLines \. -- -- Data for Name: custgrp; Type: TABLE DATA; Schema: public; Owner: admin -- COPY custgrp (custgrp_id, custgrp_name, custgrp_descrip) FROM stdin; \. -- -- Data for Name: custgrpitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY custgrpitem (custgrpitem_id, custgrpitem_custgrp_id, custgrpitem_cust_id) FROM stdin; \. -- -- Data for Name: custinfo; Type: TABLE DATA; Schema: public; Owner: admin -- COPY custinfo (cust_id, cust_active, cust_custtype_id, cust_salesrep_id, cust_commprcnt, cust_name, cust_creditlmt, cust_creditrating, cust_financecharge, cust_backorder, cust_partialship, cust_terms_id, cust_discntprcnt, cust_balmethod, cust_ffshipto, cust_shipform_id, cust_shipvia, cust_blanketpos, cust_shipchrg_id, cust_creditstatus, cust_comments, cust_ffbillto, cust_usespos, cust_number, cust_dateadded, cust_exported, cust_emaildelivery, cust_ediemail, cust_edisubject, cust_edifilename, cust_ediemailbody, cust_autoupdatestatus, cust_autoholdorders, cust_edicc, cust_ediprofile_id, cust_preferred_warehous_id, cust_curr_id, cust_creditlmt_curr_id, cust_cntct_id, cust_corrcntct_id, cust_soemaildelivery, cust_soediemail, cust_soedisubject, cust_soedifilename, cust_soediemailbody, cust_soedicc, cust_soediprofile_id, cust_gracedays, cust_ediemailhtml, cust_soediemailhtml, cust_taxzone_id) FROM stdin; \. -- -- Data for Name: custtype; Type: TABLE DATA; Schema: public; Owner: admin -- COPY custtype (custtype_id, custtype_code, custtype_descrip, custtype_char) FROM stdin; 18 NORMAL Normal Customer f \. -- -- Data for Name: dept; Type: TABLE DATA; Schema: public; Owner: admin -- COPY dept (dept_id, dept_number, dept_name) FROM stdin; 1 MFG Manufacturing 2 ADM Administration \. -- -- Data for Name: destination; Type: TABLE DATA; Schema: public; Owner: admin -- COPY destination (destination_id, destination_name, destination_city, destination_state, destination_comments) FROM stdin; \. -- -- Data for Name: docass; Type: TABLE DATA; Schema: public; Owner: admin -- COPY docass (docass_id, docass_source_id, docass_source_type, docass_target_id, docass_target_type, docass_purpose) FROM stdin; \. -- -- Data for Name: emp; Type: TABLE DATA; Schema: public; Owner: admin -- COPY emp (emp_id, emp_code, emp_number, emp_active, emp_cntct_id, emp_warehous_id, emp_mgr_emp_id, emp_wage_type, emp_wage, emp_wage_curr_id, emp_wage_period, emp_dept_id, emp_shift_id, emp_notes, emp_image_id, emp_username, emp_extrate, emp_extrate_period, emp_startdate, emp_name) FROM stdin; 2 ADMIN admin t \N \N \N H \N 1 H 2 1 \N \N admin \N H \N Administrator 1 MFGADMIN mfgadmin t \N \N \N H \N 1 H 2 1 \N \N mfgadmin \N H \N OpenMFG Administrator \. -- -- Data for Name: empgrp; Type: TABLE DATA; Schema: public; Owner: admin -- COPY empgrp (empgrp_id, empgrp_name, empgrp_descrip) FROM stdin; \. -- -- Data for Name: empgrpitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY empgrpitem (empgrpitem_id, empgrpitem_empgrp_id, empgrpitem_emp_id) FROM stdin; \. -- -- Data for Name: evntlog; Type: TABLE DATA; Schema: public; Owner: admin -- COPY evntlog (evntlog_id, evntlog_evnttime, evntlog_evnttype_id, evntlog_ord_id, evntlog_dispatched, evntlog_action, evntlog_warehous_id, evntlog_number, evntlog_newvalue, evntlog_oldvalue, evntlog_newdate, evntlog_olddate, evntlog_ordtype, evntlog_username) FROM stdin; \. -- -- Data for Name: evntnot; Type: TABLE DATA; Schema: public; Owner: admin -- COPY evntnot (evntnot_id, evntnot_evnttype_id, evntnot_warehous_id, evntnot_username) FROM stdin; 782 -1 35 mfgadmin 783 4 35 mfgadmin 784 15 35 mfgadmin 785 13 35 mfgadmin 786 11 35 mfgadmin 787 10 35 mfgadmin 788 12 35 mfgadmin 789 14 35 mfgadmin 790 5 35 mfgadmin 791 6 35 mfgadmin 792 7 35 mfgadmin 793 8 35 mfgadmin 795 3 35 mfgadmin 796 1 35 mfgadmin 798 2 35 mfgadmin 801 24 35 mfgadmin 802 22 35 mfgadmin 803 25 35 mfgadmin 804 23 35 mfgadmin 805 9 35 mfgadmin 806 26 35 mfgadmin 807 28 35 mfgadmin 808 27 35 mfgadmin 809 31 35 mfgadmin 810 32 35 mfgadmin 812 29 35 mfgadmin 813 30 35 mfgadmin 814 16 35 mfgadmin 815 17 35 mfgadmin 816 21 35 mfgadmin 817 18 35 mfgadmin 818 19 35 mfgadmin 819 20 35 mfgadmin \. -- -- Data for Name: evnttype; Type: TABLE DATA; Schema: public; Owner: admin -- COPY evnttype (evnttype_id, evnttype_name, evnttype_descrip, evnttype_module) FROM stdin; 1 WoDueDateChanged Work Order Due Date Changed W/O 2 WoQtyChanged Work Order Qty. Changed W/O 3 WoCreated Work Order Created W/O 4 QOHBelowZero QOH Dropped to a Negative Value I/M 5 RWoDueDateRequestChange Request to Change Released Due Date W/O 6 RWoQtyRequestChange Request to Change Released W/O Qty. W/O 7 RWoRequestCancel Request to Cancel Released W/O W/O 8 WoCancelled Work Order Canceled W/O 9 CannotDistributeTransToGL Cannot Distribute an Inventory Transaction to the G/L G/L 10 SoitemQtyChanged Sales Order Qty. Changed S/O 11 SoitemCreated Sales Order Item Added S/O 12 SoitemSchedDateChanged Sales Order Item Ship Date Changed S/O 13 SoitemCancelled Sales Order Item Cancelled S/O 14 SoReleased Sales Order Released S/O 16 CannotConvertQuote Cannot Convert a Quote to a Sales Order S/O 17 DetachCCPayFromSO Detached Credit Card payment from S/O S/O 18 WODoubleClockIn User clocked in to a Work Order without having previously clocked out W/O 19 WODoubleClockOut User clocked out of a Work Order without having previously clocked in W/O 20 WOClockInOnClosedJob User clocked in to a closed Work Order W/O 21 WOClockOutWNoClockIn User clocked out of a Work Order on which s/he was not clocked in W/O 22 NewIncident New Incident Created CRM 23 UpdatedIncident Incident Modified CRM 24 ClosedIncident Incident Closed CRM 25 ReopenedIncident Incident Which had been closed previously is being reopened CRM 26 ToCommentsChanged Transfer Order Comments Changed I/M 27 ToitemCreated Transfer Order Item Created I/M 29 ToitemQtyChanged Transfer Order Item Qty. Changed I/M 30 ToitemSchedDateChanged Transfer Order Item Ship Date Changed I/M 31 ToitemNoDestItemSite Transfer Order Item created without an Item Site at the Destination Warehouse. I/M 32 ToitemNoTransitItemSite Transfer Order Item created without an Item Site at the Transit Warehouse. I/M 28 ToitemCancelled Transfer Order Item Cancelled I/M 15 SoNotesChanged Sales Order Order Comments Changed S/O 33 POitemCreate Purchase Order Purchased Item Line Added P/O 34 TodoAlarm To-Do Item Alarm CRM 35 IncidentAlarm Incident Alarm CRM 36 TaskAlarm Project Task Alarm CRM 37 CostExceedsMaxDesired Cost Exceeds Max Desired P/D 38 PoItemCreatedBySo Purchase Order Item Created by a Sales Order P/O 39 PoItemUpdatedBySo Purchase Order Item Updated by a Sales Order P/O 40 PoItemSoCancelled The Sales Order item has been cancelled for a linked Purchase Item P/O 41 PoItemDropShipped A Purchase Order Item has been Drop Shipped P/O 42 CashReceiptPosted A Cash Receipt has been posted G/L 45 NewCustomer A new Customer has been created S/O \. -- -- Data for Name: expcat; Type: TABLE DATA; Schema: public; Owner: admin -- COPY expcat (expcat_id, expcat_code, expcat_descrip, expcat_exp_accnt_id, expcat_liability_accnt_id, expcat_active, expcat_purchprice_accnt_id, expcat_freight_accnt_id) FROM stdin; 16 SALES_TAX Sales Tax (Clear Liability) 102 95 t 126 98 19 FREIGHT_OUTBOUND Outbound Freight Expense 128 95 t 126 98 15 SUPPLIES_OFFICE Office Supplies 97 95 t 126 98 17 FREIGHT_INBOUND Inbound Freight Expense 120 95 t 126 98 18 SUPPLIES_SHOP Shop Supplies 97 95 t 126 98 \. -- -- Data for Name: file; Type: TABLE DATA; Schema: public; Owner: admin -- COPY file (file_id, file_title, file_stream, file_descrip) FROM stdin; \. -- -- Data for Name: filter; Type: TABLE DATA; Schema: public; Owner: admin -- COPY filter (filter_id, filter_screen, filter_value, filter_username, filter_name, filter_selected) FROM stdin; \. -- -- Data for Name: flcol; Type: TABLE DATA; Schema: public; Owner: admin -- COPY flcol (flcol_id, flcol_flhead_id, flcol_name, flcol_descrip, flcol_report_id, flcol_month, flcol_quarter, flcol_year, flcol_showdb, flcol_prcnt, flcol_priortype, flcol_priormonth, flcol_priorquarter, flcol_prioryear, flcol_priorprcnt, flcol_priordiff, flcol_priordiffprcnt, flcol_budget, flcol_budgetprcnt, flcol_budgetdiff, flcol_budgetdiffprcnt) FROM stdin; 1 14 Current Current Month 331 t f f f t P f f N f f f f f f f 2 14 Current, Budget Current to Budget 332 t f f f f P f f N f f f t f t t 3 14 Current, Prior Month Current to Prior Month End 333 t f f f f P t f N f t t f f f f 4 14 Current, Prior Quarter Current to Prior Quarter End 342 t f f f f P f t N f t t f f f f 5 14 Current, Prior Year Current to Prior Year End 334 t f f f f P f f F f t t f f f f 6 14 Current, Year Ago Current to Month Prior Year 333 t f f f f Y t f N f t t f f f f 7 15 Month Current Month 331 t f f f t P f f N f f f f f f f 8 15 Month, Budget Current Month to Budget 332 t f f f f P f f N f f f t f t t 9 15 Month, Prior Month Current Month to Prior Month 333 t f f f f P t f N f t t f f f f 10 15 Month, YTD Month and Year to Date 330 t f t f t P f f N f f f f f f f 11 15 Month, QTD Month and Quarter to Date 335 t t f f t P f f N f f f f f f f 12 15 QTD, Budget Quarter to Date to Budget 337 f t f f f P f f N f f f t f t t 13 15 QTD, Prior Quarter Quarter to Date to Prior Quarter 338 f t f f f P f t N f t t f f f f 14 15 YTD Year To Date 339 f f t f t P f f N f f f f f f f 15 15 YTD, Budget Year to Date to Budget 340 f f t f f P f f N f f f t f t t 16 15 YTD, Prior Full Year Year to Date to Prior Full Year 341 f f t f f P f f F f t t f f f f 17 15 Month, Prior Year Month Current Month to Same Month Prior Year 333 t f f f f Y t f N f t t f f f f 19 15 YTD, Prior Year YTD Year to Date to Year to Date Prior Year 341 f f t f f P f f D f t t f f f f 20 15 QTD Quarter to Date 336 f t f f t P f f N f f f f f f f 18 15 QTD, Prior Year Quarter Quarter to Date to Same Quarter Prior Year 338 f t f f f Y f t N f t t f f f f 21 16 Current Current Period 331 t f f f t P f f N f f f f f f f 22 16 Current Period, YTD Current Period, YTD 330 t f t f f Y f f N f f f f f f f 23 16 Current, Prior Period Current, Prior Period 333 t f f f t P t f N f f f f f f f 24 16 Current Quarter, Prior Year Quarter Current Quarter, Prior Year Quarter 338 f t f f f Y f t N f f f f f f f \. -- -- Data for Name: flgrp; Type: TABLE DATA; Schema: public; Owner: admin -- COPY flgrp (flgrp_id, flgrp_flhead_id, flgrp_flgrp_id, flgrp_order, flgrp_name, flgrp_descrip, flgrp_subtotal, flgrp_summarize, flgrp_subtract, flgrp_showstart, flgrp_showend, flgrp_showdelta, flgrp_showbudget, flgrp_showstartprcnt, flgrp_showendprcnt, flgrp_showdeltaprcnt, flgrp_showbudgetprcnt, flgrp_prcnt_flgrp_id, flgrp_showdiff, flgrp_showdiffprcnt, flgrp_showcustom, flgrp_showcustomprcnt, flgrp_usealtsubtotal, flgrp_altsubtotal) FROM stdin; 87 14 -1 1 ASSETS ASSETS t f f f t f t f f f f -1 f f f f t Total Assets 88 14 -1 2 LIABILITIES AND OWNERS EQUITY LIABILITIES AND OWNERS EQUITY t f t f t f t f f f f -1 f f f f t Total Liabilities and Owners Equity 89 14 88 1 LIABILITIES LIABILITIES t f f f t f t f t f t -1 f f f f t Total Liabilities 90 14 88 2 OWNERS EQUITY OWNERS EQUITY t f f f t f t f t f t -1 f f f f t Total Owners Equity 91 14 90 2 Net Income f t f f t f t f t f t -1 f f f f f 92 15 -1 1 INCOME INCOME t f f f f f t f f f f -1 t f f f t Net Income 93 15 92 2 REVENUE REVENUE t f f f f f t f f f f -1 t f f f t Total Net Revenue 94 15 92 3 EXPENSES EXPENSES t f t f f f t f f f f -1 t f f f t Total Net Expenses 96 16 -1 2 CASH POSITION CASH POSITION t f t f f t t f f t t -1 t t f f t TOTAL CASH POSITION 98 16 95 2 Cash Flow From Investing Activities Cash Flow From Investing Activities t f t f f t t f f t t -1 t t f f t Total Cash Flow From Investing Activities 99 16 95 3 Cash Flow from Financing Activities Cash Flow from Financing Activities t f f f f t t f f t t -1 t t f f t Total Cash Flow from Financing Activities 105 16 97 6 Change in Current Liability Change in Current Liability t f f f f t t f f t t -1 t t f f t Total Change in Current Liability 106 16 97 7 Accounts Payable Accounts Payable t f f f f t t f f t t -1 t t f f t Total Accounts Payable 107 16 98 1 Property Plant and Equipment Property Plant and Equipment t f f f f t t f f t t -1 t t f f t Total Property Plant and Equipment 108 16 98 2 Other Assets Other Assets t f f f f t t f f t t -1 t t f f t Total Other Assets 109 16 99 1 Long Term Debt Long Term Debt t f f f f t t f f t t -1 t t f f t Total Long Term Debt 110 16 99 2 Common Stock and Equity t f f f f t t f f t t -1 t t f f t Total Common Stock and Equity 97 16 95 1 Cash Flow From Operating Activities Cash Flow From Operating Activities t f f f f t t f f t t -1 t t f f t Total Cash Flow From Operating Activities 95 16 -1 1 STATEMENT OF CASH FLOWS STATEMENT OF CASH FLOWS t f f f f t t f f t t -1 t t f f t TOTAL STATEMENT OF CASH FLOWS 111 16 100 1 Net Income Net Income t t f f f t t f f t t -1 t t f f f 100 16 97 1 Cash Flow From Operating Activities Cash Flow From Operating Activities t f f f f t t f f t t -1 t t f f t Total Cash Flow From Operating Activities 101 16 97 2 Charges Not Using Cash Charges Not Using Cash t f f f f t t f f t t -1 t t f f t Total Charges Not Using Cash 102 16 97 3 Changes in Current Assets Changes in Current Assets t f t f f t t f f t t -1 t t f f t Total Changes in Current Assets 103 16 97 4 Net Receivables Net Receivables t f t f f t t f f t t -1 t t f f t Total Net Receivables 104 16 97 5 Inventory Inventory t f t f f t t f f t t -1 t t f f t Total Inventory \. -- -- Data for Name: flhead; Type: TABLE DATA; Schema: public; Owner: admin -- COPY flhead (flhead_id, flhead_name, flhead_descrip, flhead_showtotal, flhead_showstart, flhead_showend, flhead_showdelta, flhead_showbudget, flhead_showdiff, flhead_showcustom, flhead_custom_label, flhead_usealttotal, flhead_alttotal, flhead_usealtbegin, flhead_altbegin, flhead_usealtend, flhead_altend, flhead_usealtdebits, flhead_altdebits, flhead_usealtcredits, flhead_altcredits, flhead_usealtbudget, flhead_altbudget, flhead_usealtdiff, flhead_altdiff, flhead_type, flhead_active, flhead_sys, flhead_notes) FROM stdin; 14 Basic Balance Sheet Balance Sheet Template f f f f f f f \N f \N f \N f \N f \N f \N f \N f \N B t t 15 Basic Income Statement Income Statement Template f f f f f f f f f f f f f f I t t 16 Basic Statement of Cash Flows Basic Statement of Cash Flows t f f t t t f t CHECKSUM (TOTAL STA. OF CASH FLOWS - TOTAL CASH) f f f f f f C t t \. -- -- Data for Name: flitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY flitem (flitem_id, flitem_flhead_id, flitem_flgrp_id, flitem_order, flitem_accnt_id, flitem_showstart, flitem_showend, flitem_showdelta, flitem_showbudget, flitem_subtract, flitem_showstartprcnt, flitem_showendprcnt, flitem_showdeltaprcnt, flitem_showbudgetprcnt, flitem_prcnt_flgrp_id, flitem_showdiff, flitem_showdiffprcnt, flitem_showcustom, flitem_showcustomprcnt, flitem_custom_source, flitem_company, flitem_profit, flitem_number, flitem_sub, flitem_type, flitem_subaccnttype_code) FROM stdin; 237 14 87 1 -1 f t f t f f t f t -1 t f f f S All All All All A All 238 14 89 1 -1 f t f t f f t f t -1 t f f f S All All All All L All 239 14 90 1 -1 f t f t f f t f t -1 t f f f S All All All All Q All 240 14 91 1 -1 f t f t f f f f f -1 t f f f S All All All All R All 241 14 91 2 -1 f t f t t f f f f -1 t f f f S All All All All E All 242 15 93 1 -1 f f f t f f f f t -1 t t f f S All All All All R All 243 15 94 1 -1 f f f t f f f f t -1 t t f f S All All All All E All 245 16 111 2 -1 f f t t t f f t t -1 t t f f S All All All All E All 244 16 111 1 -1 f f t t f f f t t -1 t t f f S All All All All R All 246 16 101 1 -1 f f t t f f f t t -1 t t f f S All All All All E DEP 247 16 102 1 -1 f f t t f f f t t -1 t t f f S All All All All A CAS 248 16 103 1 -1 f f t t f f f t t -1 t t f f S All All All All A AR 249 16 104 1 -1 f f t t f f f t t -1 t t f f S All All All All A IN 250 16 105 1 -1 f f t t f f f t t -1 t t f f S All All All All L CL 251 16 106 1 -1 f f t t f f f t t -1 t t f f S All All All All L AP 252 16 107 1 -1 f f t t f f f t t -1 t t f f S All All All All A FA 253 16 109 1 -1 f f t t f f f t t -1 t t f f S All All All All L LTL 254 16 110 1 -1 f f t t f f f t t -1 t t f f S All All All All Q All 255 16 96 1 -1 f f t t f f f t t -1 t t f f S All All All All A CA \. -- -- Data for Name: flnotes; Type: TABLE DATA; Schema: public; Owner: admin -- COPY flnotes (flnotes_id, flnotes_flhead_id, flnotes_period_id, flnotes_notes) FROM stdin; \. -- -- Data for Name: flrpt; Type: TABLE DATA; Schema: public; Owner: admin -- COPY flrpt (flrpt_flhead_id, flrpt_period_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_beginning, flrpt_ending, flrpt_debits, flrpt_credits, flrpt_budget, flrpt_beginningprcnt, flrpt_endingprcnt, flrpt_debitsprcnt, flrpt_creditsprcnt, flrpt_budgetprcnt, flrpt_parent_id, flrpt_diff, flrpt_diffprcnt, flrpt_custom, flrpt_customprcnt, flrpt_altname, flrpt_accnt_id, flrpt_interval, flrpt_id) FROM stdin; 7 32 jsmith 4 2 I 12 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 1 7 32 jsmith 2 0 G 12 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 2 7 32 jsmith 3 1 G 13 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 3 7 32 jsmith 5 2 I 13 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 4 7 32 jsmith 6 2 I 14 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 5 7 32 jsmith 7 2 I 15 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 6 7 32 jsmith 8 2 I 16 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 7 7 32 jsmith 9 2 I 17 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 8 7 32 jsmith 10 2 I 18 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 9 7 32 jsmith 11 2 I 19 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 10 7 32 jsmith 12 2 I 20 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 11 7 32 jsmith 13 2 I 21 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 12 7 32 jsmith 14 2 I 22 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 13 7 32 jsmith 16 1 G 14 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 14 7 32 jsmith 17 2 I 23 \N 0.00 \N \N 0.00 \N \N \N \N \N 14 \N \N \N \N \N \N \N 15 7 32 jsmith 19 1 G 15 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 16 7 32 jsmith 22 0 G 16 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 17 7 32 jsmith 23 1 G 17 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 16 \N \N \N \N \N \N \N 18 7 32 jsmith 24 2 G 18 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 \N \N \N \N \N \N \N 19 7 32 jsmith 25 3 I 24 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 20 7 32 jsmith 26 3 I 25 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 21 7 32 jsmith 27 3 I 26 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 22 7 32 jsmith 28 3 I 27 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 23 7 32 jsmith 29 3 I 28 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 24 7 32 jsmith 30 3 I 29 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 25 7 32 jsmith 32 2 G 20 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 \N \N \N \N \N \N \N 26 7 32 jsmith 35 1 G 21 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 16 \N \N \N \N \N \N \N 27 7 32 jsmith 36 2 G 22 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 28 7 32 jsmith 37 3 I 30 \N 0.00 \N \N 0.00 \N \N \N \N \N 22 \N \N \N \N \N \N \N 29 7 32 jsmith 39 2 G 23 \N 0.00 \N \N 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 30 7 32 jsmith 40 2 G 24 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 31 7 32 jsmith 41 3 I 31 \N 0.00 \N \N 0.00 \N \N \N \N \N 24 \N \N \N \N \N \N \N 32 7 32 jsmith 42 3 I 45 \N 0.00 \N \N 0.00 \N \N \N \N \N 24 \N \N \N \N \N \N \N 33 7 32 jsmith 21 1 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 34 7 32 jsmith 15 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 35 7 32 jsmith 18 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 14 \N \N \N \N \N \N \N 36 7 32 jsmith 20 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 15 \N \N \N \N \N \N \N 37 7 32 jsmith 45 1 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 16 \N \N \N \N \N \N \N 38 7 32 jsmith 34 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 17 \N \N \N \N \N \N \N 39 7 32 jsmith 31 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 40 7 32 jsmith 33 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 20 \N \N \N \N \N \N \N 41 7 32 jsmith 44 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 42 7 32 jsmith 38 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 22 \N \N \N \N \N \N \N 43 7 32 jsmith 43 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 24 \N \N \N \N \N \N \N 44 7 33 jsmith 2 0 G 12 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 45 7 33 jsmith 3 1 G 13 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 46 7 33 jsmith 4 2 I 12 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 47 7 33 jsmith 5 2 I 13 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 48 7 33 jsmith 6 2 I 14 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 49 7 33 jsmith 7 2 I 15 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 50 7 33 jsmith 8 2 I 16 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 51 7 33 jsmith 9 2 I 17 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 52 7 33 jsmith 10 2 I 18 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 53 7 33 jsmith 11 2 I 19 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 54 7 33 jsmith 12 2 I 20 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 55 7 33 jsmith 13 2 I 21 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 56 7 33 jsmith 14 2 I 22 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 57 7 33 jsmith 16 1 G 14 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 58 7 33 jsmith 17 2 I 23 \N 0.00 \N \N 0.00 \N \N \N \N \N 14 \N \N \N \N \N \N \N 59 7 33 jsmith 19 1 G 15 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 60 7 33 jsmith 22 0 G 16 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 61 7 33 jsmith 23 1 G 17 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 16 \N \N \N \N \N \N \N 62 7 33 jsmith 24 2 G 18 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 \N \N \N \N \N \N \N 63 7 33 jsmith 25 3 I 24 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 64 7 33 jsmith 26 3 I 25 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 65 7 33 jsmith 27 3 I 26 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 66 7 33 jsmith 28 3 I 27 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 67 7 33 jsmith 29 3 I 28 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 68 7 33 jsmith 30 3 I 29 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 69 7 33 jsmith 32 2 G 20 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 \N \N \N \N \N \N \N 70 7 33 jsmith 35 1 G 21 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 16 \N \N \N \N \N \N \N 71 7 33 jsmith 36 2 G 22 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 72 7 33 jsmith 37 3 I 30 \N 0.00 \N \N 0.00 \N \N \N \N \N 22 \N \N \N \N \N \N \N 73 7 33 jsmith 39 2 G 23 \N 0.00 \N \N 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 74 7 33 jsmith 40 2 G 24 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 75 7 33 jsmith 41 3 I 31 \N 0.00 \N \N 0.00 \N \N \N \N \N 24 \N \N \N \N \N \N \N 76 7 33 jsmith 42 3 I 45 \N 0.00 \N \N 0.00 \N \N \N \N \N 24 \N \N \N \N \N \N \N 77 7 33 jsmith 21 1 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 78 7 33 jsmith 15 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 79 7 33 jsmith 18 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 14 \N \N \N \N \N \N \N 80 7 33 jsmith 20 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 15 \N \N \N \N \N \N \N 81 7 33 jsmith 45 1 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 16 \N \N \N \N \N \N \N 82 7 33 jsmith 34 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 17 \N \N \N \N \N \N \N 83 7 33 jsmith 31 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 84 7 33 jsmith 33 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 20 \N \N \N \N \N \N \N 85 7 33 jsmith 44 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 86 7 33 jsmith 38 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 22 \N \N \N \N \N \N \N 87 7 33 jsmith 43 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 24 \N \N \N \N \N \N \N 88 7 34 jsmith 2 0 G 12 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 89 7 34 jsmith 3 1 G 13 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 90 7 34 jsmith 4 2 I 12 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 91 7 34 jsmith 5 2 I 13 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 92 7 34 jsmith 6 2 I 14 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 93 7 34 jsmith 7 2 I 15 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 94 7 34 jsmith 8 2 I 16 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 95 7 34 jsmith 9 2 I 17 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 96 7 34 jsmith 10 2 I 18 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 97 7 34 jsmith 11 2 I 19 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 98 7 34 jsmith 12 2 I 20 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 99 7 34 jsmith 13 2 I 21 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 100 7 34 jsmith 14 2 I 22 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 101 7 34 jsmith 16 1 G 14 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 102 7 34 jsmith 17 2 I 23 \N 0.00 \N \N 0.00 \N \N \N \N \N 14 \N \N \N \N \N \N \N 103 7 34 jsmith 19 1 G 15 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 104 7 34 jsmith 22 0 G 16 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 105 7 34 jsmith 23 1 G 17 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 16 \N \N \N \N \N \N \N 106 7 34 jsmith 24 2 G 18 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 \N \N \N \N \N \N \N 107 7 34 jsmith 25 3 I 24 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 108 7 34 jsmith 26 3 I 25 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 109 7 34 jsmith 27 3 I 26 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 110 7 34 jsmith 28 3 I 27 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 111 7 34 jsmith 29 3 I 28 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 112 7 34 jsmith 30 3 I 29 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 113 7 34 jsmith 32 2 G 20 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 \N \N \N \N \N \N \N 114 7 34 jsmith 35 1 G 21 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 16 \N \N \N \N \N \N \N 115 7 34 jsmith 36 2 G 22 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 116 7 34 jsmith 37 3 I 30 \N 0.00 \N \N 0.00 \N \N \N \N \N 22 \N \N \N \N \N \N \N 117 7 34 jsmith 39 2 G 23 \N 0.00 \N \N 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 118 7 34 jsmith 40 2 G 24 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 119 7 34 jsmith 41 3 I 31 \N 0.00 \N \N 0.00 \N \N \N \N \N 24 \N \N \N \N \N \N \N 120 7 34 jsmith 42 3 I 45 \N 0.00 \N \N 0.00 \N \N \N \N \N 24 \N \N \N \N \N \N \N 121 7 34 jsmith 21 1 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 122 7 34 jsmith 15 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 123 7 34 jsmith 18 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 14 \N \N \N \N \N \N \N 124 7 34 jsmith 20 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 15 \N \N \N \N \N \N \N 125 7 34 jsmith 45 1 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 16 \N \N \N \N \N \N \N 126 7 34 jsmith 34 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 17 \N \N \N \N \N \N \N 127 7 34 jsmith 31 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 128 7 34 jsmith 33 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 20 \N \N \N \N \N \N \N 129 7 34 jsmith 44 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 130 7 34 jsmith 38 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 22 \N \N \N \N \N \N \N 131 7 34 jsmith 43 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 24 \N \N \N \N \N \N \N 132 7 35 jsmith 2 0 G 12 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 133 7 35 jsmith 3 1 G 13 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 134 7 35 jsmith 4 2 I 12 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 135 7 35 jsmith 5 2 I 13 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 136 7 35 jsmith 6 2 I 14 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 137 7 35 jsmith 7 2 I 15 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 138 7 35 jsmith 8 2 I 16 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 139 7 35 jsmith 9 2 I 17 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 140 7 35 jsmith 10 2 I 18 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 141 7 35 jsmith 11 2 I 19 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 142 7 35 jsmith 12 2 I 20 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 143 7 35 jsmith 13 2 I 21 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 144 7 35 jsmith 14 2 I 22 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 145 7 35 jsmith 16 1 G 14 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 146 7 35 jsmith 17 2 I 23 \N 0.00 \N \N 0.00 \N \N \N \N \N 14 \N \N \N \N \N \N \N 147 7 35 jsmith 19 1 G 15 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 148 7 35 jsmith 22 0 G 16 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 149 7 35 jsmith 23 1 G 17 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 16 \N \N \N \N \N \N \N 150 7 35 jsmith 24 2 G 18 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 \N \N \N \N \N \N \N 151 7 35 jsmith 25 3 I 24 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 152 7 35 jsmith 26 3 I 25 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 153 7 35 jsmith 27 3 I 26 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 154 7 35 jsmith 28 3 I 27 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 155 7 35 jsmith 29 3 I 28 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 156 7 35 jsmith 30 3 I 29 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 157 7 35 jsmith 32 2 G 20 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 \N \N \N \N \N \N \N 158 7 35 jsmith 35 1 G 21 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 16 \N \N \N \N \N \N \N 159 7 35 jsmith 36 2 G 22 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 160 7 35 jsmith 37 3 I 30 \N 0.00 \N \N 0.00 \N \N \N \N \N 22 \N \N \N \N \N \N \N 161 7 35 jsmith 39 2 G 23 \N 0.00 \N \N 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 162 7 35 jsmith 40 2 G 24 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 163 7 35 jsmith 41 3 I 31 \N 0.00 \N \N 0.00 \N \N \N \N \N 24 \N \N \N \N \N \N \N 164 7 35 jsmith 42 3 I 45 \N 0.00 \N \N 0.00 \N \N \N \N \N 24 \N \N \N \N \N \N \N 165 7 35 jsmith 21 1 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 166 7 35 jsmith 15 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 167 7 35 jsmith 18 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 14 \N \N \N \N \N \N \N 168 7 35 jsmith 20 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 15 \N \N \N \N \N \N \N 169 7 35 jsmith 45 1 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 16 \N \N \N \N \N \N \N 170 7 35 jsmith 34 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 17 \N \N \N \N \N \N \N 171 7 35 jsmith 31 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 172 7 35 jsmith 33 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 20 \N \N \N \N \N \N \N 173 7 35 jsmith 44 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 174 7 35 jsmith 38 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 22 \N \N \N \N \N \N \N 175 7 35 jsmith 43 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 24 \N \N \N \N \N \N \N 176 7 36 jsmith 2 0 G 12 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 177 7 36 jsmith 3 1 G 13 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 178 7 36 jsmith 4 2 I 12 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 179 7 36 jsmith 5 2 I 13 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 180 7 36 jsmith 6 2 I 14 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 181 7 36 jsmith 7 2 I 15 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 182 7 36 jsmith 8 2 I 16 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 183 7 36 jsmith 9 2 I 17 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 184 7 36 jsmith 10 2 I 18 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 185 7 36 jsmith 11 2 I 19 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 186 7 36 jsmith 12 2 I 20 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 187 7 36 jsmith 13 2 I 21 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 188 7 36 jsmith 14 2 I 22 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 189 7 36 jsmith 16 1 G 14 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 190 7 36 jsmith 17 2 I 23 \N 0.00 \N \N 0.00 \N \N \N \N \N 14 \N \N \N \N \N \N \N 191 7 36 jsmith 19 1 G 15 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 192 7 36 jsmith 22 0 G 16 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 193 7 36 jsmith 23 1 G 17 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 16 \N \N \N \N \N \N \N 194 7 36 jsmith 24 2 G 18 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 \N \N \N \N \N \N \N 195 7 36 jsmith 25 3 I 24 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 196 7 36 jsmith 26 3 I 25 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 197 7 36 jsmith 27 3 I 26 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 198 7 36 jsmith 28 3 I 27 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 199 7 36 jsmith 29 3 I 28 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 200 7 36 jsmith 30 3 I 29 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 201 7 36 jsmith 32 2 G 20 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 \N \N \N \N \N \N \N 202 7 36 jsmith 35 1 G 21 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 16 \N \N \N \N \N \N \N 203 7 36 jsmith 36 2 G 22 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 204 7 36 jsmith 37 3 I 30 \N 0.00 \N \N 0.00 \N \N \N \N \N 22 \N \N \N \N \N \N \N 205 7 36 jsmith 39 2 G 23 \N 0.00 \N \N 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 206 7 36 jsmith 40 2 G 24 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 207 7 36 jsmith 41 3 I 31 \N 0.00 \N \N 0.00 \N \N \N \N \N 24 \N \N \N \N \N \N \N 208 7 36 jsmith 42 3 I 45 \N 0.00 \N \N 0.00 \N \N \N \N \N 24 \N \N \N \N \N \N \N 209 7 36 jsmith 21 1 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 12 \N \N \N \N \N \N \N 210 7 36 jsmith 15 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 13 \N \N \N \N \N \N \N 211 7 36 jsmith 18 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 14 \N \N \N \N \N \N \N 212 7 36 jsmith 20 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 15 \N \N \N \N \N \N \N 213 7 36 jsmith 45 1 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 16 \N \N \N \N \N \N \N 214 7 36 jsmith 34 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 17 \N \N \N \N \N \N \N 215 7 36 jsmith 31 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 18 \N \N \N \N \N \N \N 216 7 36 jsmith 33 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 20 \N \N \N \N \N \N \N 217 7 36 jsmith 44 2 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 21 \N \N \N \N \N \N \N 218 7 36 jsmith 38 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 22 \N \N \N \N \N \N \N 219 7 36 jsmith 43 3 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 24 \N \N \N \N \N \N \N 220 4 34 jsmith 1 0 G 3 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 221 4 34 jsmith 2 1 G 4 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 222 4 34 jsmith 3 2 I 2 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 223 4 34 jsmith 4 2 I 3 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 224 4 34 jsmith 6 1 G 5 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 225 4 34 jsmith 7 2 I 4 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 5 \N \N \N \N \N \N \N 226 4 34 jsmith 8 1 G 6 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 227 4 34 jsmith 10 0 G 7 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 228 4 34 jsmith 11 1 G 8 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 229 4 34 jsmith 12 2 I 5 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 230 4 34 jsmith 13 2 I 6 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 231 4 34 jsmith 14 2 I 7 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 232 4 34 jsmith 15 2 I 8 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 233 4 34 jsmith 16 2 I 9 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 234 4 34 jsmith 17 2 I 10 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 235 4 34 jsmith 18 2 I 11 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 236 4 34 jsmith 21 0 G 9 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 237 4 34 jsmith 5 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 238 4 34 jsmith 9 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 239 4 34 jsmith 19 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 240 4 34 jsmith 20 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 241 4 34 jsmith 22 0 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N \N \N \N \N \N \N \N \N 242 4 35 jsmith 1 0 G 3 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 243 4 35 jsmith 2 1 G 4 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 244 4 35 jsmith 3 2 I 2 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 245 4 35 jsmith 4 2 I 3 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 246 4 35 jsmith 6 1 G 5 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 247 4 35 jsmith 7 2 I 4 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 5 \N \N \N \N \N \N \N 248 4 35 jsmith 8 1 G 6 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 249 4 35 jsmith 10 0 G 7 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 250 4 35 jsmith 11 1 G 8 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 251 4 35 jsmith 12 2 I 5 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 252 4 35 jsmith 13 2 I 6 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 253 4 35 jsmith 14 2 I 7 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 254 4 35 jsmith 15 2 I 8 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 255 4 35 jsmith 16 2 I 9 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 256 4 35 jsmith 17 2 I 10 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 257 4 35 jsmith 18 2 I 11 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 258 4 35 jsmith 21 0 G 9 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 259 4 35 jsmith 5 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 260 4 35 jsmith 9 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 261 4 35 jsmith 19 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 262 4 35 jsmith 20 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 263 4 35 jsmith 22 0 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N \N \N \N \N \N \N \N \N 264 4 36 jsmith 1 0 G 3 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 265 4 36 jsmith 2 1 G 4 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 266 4 36 jsmith 3 2 I 2 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 267 4 36 jsmith 4 2 I 3 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 268 4 36 jsmith 6 1 G 5 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 269 4 36 jsmith 7 2 I 4 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 5 \N \N \N \N \N \N \N 270 4 36 jsmith 8 1 G 6 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 271 4 36 jsmith 10 0 G 7 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 272 4 36 jsmith 11 1 G 8 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 273 4 36 jsmith 12 2 I 5 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 274 4 36 jsmith 13 2 I 6 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 275 4 36 jsmith 14 2 I 7 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 276 4 36 jsmith 15 2 I 8 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 277 4 36 jsmith 16 2 I 9 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 278 4 36 jsmith 17 2 I 10 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 279 4 36 jsmith 18 2 I 11 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 280 4 36 jsmith 21 0 G 9 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 281 4 36 jsmith 5 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 282 4 36 jsmith 9 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 283 4 36 jsmith 19 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 284 4 36 jsmith 20 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 285 4 36 jsmith 22 0 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N \N \N \N \N \N \N \N \N 286 4 37 jsmith 1 0 G 3 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 287 4 37 jsmith 2 1 G 4 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 288 4 37 jsmith 3 2 I 2 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 289 4 37 jsmith 4 2 I 3 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 290 4 37 jsmith 6 1 G 5 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 291 4 37 jsmith 7 2 I 4 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 5 \N \N \N \N \N \N \N 292 4 37 jsmith 8 1 G 6 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 293 4 37 jsmith 10 0 G 7 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 294 4 37 jsmith 11 1 G 8 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 295 4 37 jsmith 12 2 I 5 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 296 4 37 jsmith 13 2 I 6 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 297 4 37 jsmith 14 2 I 7 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 298 4 37 jsmith 15 2 I 8 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 299 4 37 jsmith 16 2 I 9 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 300 4 37 jsmith 17 2 I 10 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 301 4 37 jsmith 18 2 I 11 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 302 4 37 jsmith 21 0 G 9 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 303 4 37 jsmith 5 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 304 4 37 jsmith 9 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 305 4 37 jsmith 19 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 306 4 37 jsmith 20 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 307 4 37 jsmith 22 0 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N \N \N \N \N \N \N \N \N 308 4 38 jsmith 1 0 G 3 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 309 4 38 jsmith 2 1 G 4 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 310 4 38 jsmith 3 2 I 2 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 311 4 38 jsmith 4 2 I 3 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 312 4 38 jsmith 6 1 G 5 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 313 4 38 jsmith 7 2 I 4 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 5 \N \N \N \N \N \N \N 314 4 38 jsmith 8 1 G 6 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 315 4 38 jsmith 10 0 G 7 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 316 4 38 jsmith 11 1 G 8 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 317 4 38 jsmith 12 2 I 5 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 318 4 38 jsmith 13 2 I 6 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 319 4 38 jsmith 14 2 I 7 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 320 4 38 jsmith 15 2 I 8 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 321 4 38 jsmith 16 2 I 9 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 322 4 38 jsmith 17 2 I 10 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 323 4 38 jsmith 18 2 I 11 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 324 4 38 jsmith 21 0 G 9 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 325 4 38 jsmith 5 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 326 4 38 jsmith 9 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 327 4 38 jsmith 19 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 328 4 38 jsmith 20 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 329 4 38 jsmith 22 0 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N \N \N \N \N \N \N \N \N 330 4 39 jsmith 1 0 G 3 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 331 4 39 jsmith 2 1 G 4 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 332 4 39 jsmith 3 2 I 2 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 333 4 39 jsmith 4 2 I 3 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 334 4 39 jsmith 6 1 G 5 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 335 4 39 jsmith 7 2 I 4 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 5 \N \N \N \N \N \N \N 336 4 39 jsmith 8 1 G 6 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 337 4 39 jsmith 10 0 G 7 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 338 4 39 jsmith 11 1 G 8 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 339 4 39 jsmith 12 2 I 5 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 340 4 39 jsmith 13 2 I 6 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 341 4 39 jsmith 14 2 I 7 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 342 4 39 jsmith 15 2 I 8 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 343 4 39 jsmith 16 2 I 9 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 344 4 39 jsmith 17 2 I 10 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 345 4 39 jsmith 18 2 I 11 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 346 4 39 jsmith 21 0 G 9 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 347 4 39 jsmith 5 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 348 4 39 jsmith 9 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 349 4 39 jsmith 19 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 350 4 39 jsmith 20 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 351 4 39 jsmith 22 0 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N \N \N \N \N \N \N \N \N 352 4 40 jsmith 1 0 G 3 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 353 4 40 jsmith 2 1 G 4 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 354 4 40 jsmith 3 2 I 2 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 355 4 40 jsmith 4 2 I 3 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 356 4 40 jsmith 6 1 G 5 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 357 4 40 jsmith 7 2 I 4 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 5 \N \N \N \N \N \N \N 358 4 40 jsmith 8 1 G 6 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 359 4 40 jsmith 10 0 G 7 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 360 4 40 jsmith 11 1 G 8 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 361 4 40 jsmith 12 2 I 5 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 362 4 40 jsmith 13 2 I 6 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 363 4 40 jsmith 14 2 I 7 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 364 4 40 jsmith 15 2 I 8 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 365 4 40 jsmith 16 2 I 9 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 366 4 40 jsmith 17 2 I 10 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 367 4 40 jsmith 18 2 I 11 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 368 4 40 jsmith 21 0 G 9 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 369 4 40 jsmith 5 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 370 4 40 jsmith 9 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 371 4 40 jsmith 19 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 372 4 40 jsmith 20 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 373 4 40 jsmith 22 0 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N \N \N \N \N \N \N \N \N 374 4 41 jsmith 1 0 G 3 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 375 4 41 jsmith 2 1 G 4 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 376 4 41 jsmith 3 2 I 2 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 377 4 41 jsmith 4 2 I 3 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 378 4 41 jsmith 6 1 G 5 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 379 4 41 jsmith 7 2 I 4 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 5 \N \N \N \N \N \N \N 380 4 41 jsmith 8 1 G 6 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 381 4 41 jsmith 10 0 G 7 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 382 4 41 jsmith 11 1 G 8 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 383 4 41 jsmith 12 2 I 5 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 384 4 41 jsmith 13 2 I 6 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 385 4 41 jsmith 14 2 I 7 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 386 4 41 jsmith 15 2 I 8 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 387 4 41 jsmith 16 2 I 9 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 388 4 41 jsmith 17 2 I 10 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 389 4 41 jsmith 18 2 I 11 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 390 4 41 jsmith 21 0 G 9 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 391 4 41 jsmith 5 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 392 4 41 jsmith 9 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 393 4 41 jsmith 19 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 394 4 41 jsmith 20 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 395 4 41 jsmith 22 0 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N \N \N \N \N \N \N \N \N 396 4 32 jsmith 1 0 G 3 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 397 4 32 jsmith 2 1 G 4 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 398 4 32 jsmith 3 2 I 2 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 399 4 32 jsmith 4 2 I 3 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 400 4 32 jsmith 6 1 G 5 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 401 4 32 jsmith 7 2 I 4 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 5 \N \N \N \N \N \N \N 402 4 32 jsmith 8 1 G 6 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 403 4 32 jsmith 10 0 G 7 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 404 4 32 jsmith 11 1 G 8 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 405 4 32 jsmith 12 2 I 5 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 406 4 32 jsmith 13 2 I 6 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 407 4 32 jsmith 14 2 I 7 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 408 4 32 jsmith 15 2 I 8 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 409 4 32 jsmith 16 2 I 9 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 410 4 32 jsmith 17 2 I 10 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 411 4 32 jsmith 18 2 I 11 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 412 4 32 jsmith 21 0 G 9 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 413 4 32 jsmith 5 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 414 4 32 jsmith 9 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 415 4 32 jsmith 19 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 416 4 32 jsmith 20 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 417 4 32 jsmith 22 0 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N \N \N \N \N \N \N \N \N 418 4 33 jsmith 1 0 G 3 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 419 4 33 jsmith 2 1 G 4 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 420 4 33 jsmith 3 2 I 2 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 421 4 33 jsmith 4 2 I 3 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 422 4 33 jsmith 6 1 G 5 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 423 4 33 jsmith 7 2 I 4 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 5 \N \N \N \N \N \N \N 424 4 33 jsmith 8 1 G 6 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 \N \N \N \N \N \N \N 425 4 33 jsmith 10 0 G 7 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 \N \N \N \N \N \N \N 426 4 33 jsmith 11 1 G 8 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 427 4 33 jsmith 12 2 I 5 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 428 4 33 jsmith 13 2 I 6 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 429 4 33 jsmith 14 2 I 7 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 430 4 33 jsmith 15 2 I 8 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 431 4 33 jsmith 16 2 I 9 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 432 4 33 jsmith 17 2 I 10 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 433 4 33 jsmith 18 2 I 11 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 434 4 33 jsmith 21 0 G 9 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 435 4 33 jsmith 5 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 \N \N \N \N \N \N \N 436 4 33 jsmith 9 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 \N \N \N \N \N \N \N 437 4 33 jsmith 19 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 \N \N \N \N \N \N \N 438 4 33 jsmith 20 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 \N \N \N \N \N \N \N 439 4 33 jsmith 22 0 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N \N \N \N \N \N \N \N \N 440 9 30 jsmith 1 0 G 26 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 441 9 30 jsmith 2 1 G 28 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 26 \N \N \N \N \N \N \N 442 9 30 jsmith 3 2 I 42 \N 0.00 \N \N \N \N \N \N \N \N 28 \N \N \N \N \N \N \N 443 9 30 jsmith 5 1 G 30 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 26 \N \N \N \N \N \N \N 444 9 30 jsmith 6 2 G 31 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 30 \N \N \N \N \N \N \N 445 9 30 jsmith 7 3 I 43 \N 0.00 \N \N \N \N \N \N \N \N 31 \N \N \N \N \N \N \N 446 9 30 jsmith 9 2 G 32 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 30 \N \N \N \N \N \N \N 447 9 30 jsmith 10 3 I 44 \N 0.00 \N \N \N \N \N \N \N \N 32 \N \N \N \N \N \N \N 448 9 30 jsmith 12 2 G 34 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 30 \N \N \N \N \N \N \N 449 9 30 jsmith 14 0 G 35 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 450 9 30 jsmith 4 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 28 \N \N \N \N \N \N \N 451 9 30 jsmith 8 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 31 \N \N \N \N \N \N \N 452 9 30 jsmith 11 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 32 \N \N \N \N \N \N \N 453 9 30 jsmith 13 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 30 \N \N \N \N \N \N \N 454 9 30 jsmith 15 0 T -1 \N 0.00 \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N 455 9 46 jsmith 1 0 G 26 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 456 9 46 jsmith 2 1 G 28 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 26 \N \N \N \N \N \N \N 457 9 46 jsmith 3 2 I 42 \N 0.00 \N \N \N \N \N \N \N \N 28 \N \N \N \N \N \N \N 458 9 46 jsmith 5 1 G 30 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 26 \N \N \N \N \N \N \N 459 9 46 jsmith 6 2 G 31 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 30 \N \N \N \N \N \N \N 460 9 46 jsmith 7 3 I 43 \N 0.00 \N \N \N \N \N \N \N \N 31 \N \N \N \N \N \N \N 461 9 46 jsmith 9 2 G 32 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 30 \N \N \N \N \N \N \N 462 9 46 jsmith 10 3 I 44 \N 0.00 \N \N \N \N \N \N \N \N 32 \N \N \N \N \N \N \N 463 9 46 jsmith 12 2 G 34 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 30 \N \N \N \N \N \N \N 464 9 46 jsmith 14 0 G 35 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 465 9 46 jsmith 4 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 28 \N \N \N \N \N \N \N 466 9 46 jsmith 13 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 30 \N \N \N \N \N \N \N 467 9 46 jsmith 8 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 31 \N \N \N \N \N \N \N 468 9 46 jsmith 11 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 32 \N \N \N \N \N \N \N 469 9 46 jsmith 15 0 T -1 \N 0.00 \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N 470 9 29 jsmith 1 0 G 26 0.00 500.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 471 9 29 jsmith 2 1 G 28 0.00 500.00 0.00 0.00 0.00 \N \N \N \N \N 26 \N \N \N \N \N \N \N 472 9 29 jsmith 3 2 I 42 \N 500.00 \N \N \N \N \N \N \N \N 28 \N \N \N \N \N \N \N 473 9 29 jsmith 5 1 G 30 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 26 \N \N \N \N \N \N \N 474 9 29 jsmith 6 2 G 31 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 30 \N \N \N \N \N \N \N 475 9 29 jsmith 7 3 I 43 \N 0.00 \N \N \N \N \N \N \N \N 31 \N \N \N \N \N \N \N 476 9 29 jsmith 9 2 G 32 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 30 \N \N \N \N \N \N \N 477 9 29 jsmith 10 3 I 44 \N 0.00 \N \N \N \N \N \N \N \N 32 \N \N \N \N \N \N \N 478 9 29 jsmith 12 2 G 34 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 30 \N \N \N \N \N \N \N 479 9 29 jsmith 14 0 G 35 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 480 9 29 jsmith 4 2 T -1 \N 500.00 \N \N \N \N \N \N \N \N 28 \N \N \N \N \N \N \N 481 9 29 jsmith 13 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 30 \N \N \N \N \N \N \N 482 9 29 jsmith 8 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 31 \N \N \N \N \N \N \N 483 9 29 jsmith 11 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 32 \N \N \N \N \N \N \N 484 9 29 jsmith 15 0 T -1 \N 500.00 \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N 485 9 28 jsmith 1 0 G 26 0.00 206.07 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 486 9 28 jsmith 2 1 G 28 0.00 200.00 0.00 0.00 0.00 \N \N \N \N \N 26 \N \N \N \N \N \N \N 487 9 28 jsmith 3 2 I 42 \N 200.00 \N \N \N \N \N \N \N \N 28 \N \N \N \N \N \N \N 488 9 28 jsmith 5 1 G 30 0.00 6.07 0.00 0.00 0.00 \N \N \N \N \N 26 \N \N \N \N \N \N \N 489 9 28 jsmith 6 2 G 31 0.00 1.07 0.00 0.00 0.00 \N \N \N \N \N 30 \N \N \N \N \N \N \N 490 9 28 jsmith 7 3 I 43 \N 1.07 \N \N \N \N \N \N \N \N 31 \N \N \N \N \N \N \N 491 9 28 jsmith 9 2 G 32 0.00 5.00 0.00 0.00 0.00 \N \N \N \N \N 30 \N \N \N \N \N \N \N 492 9 28 jsmith 10 3 I 44 \N 5.00 \N \N \N \N \N \N \N \N 32 \N \N \N \N \N \N \N 493 9 28 jsmith 12 2 G 34 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 30 \N \N \N \N \N \N \N 494 9 28 jsmith 14 0 G 35 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 \N \N \N \N \N \N \N 495 9 28 jsmith 4 2 T -1 \N 200.00 \N \N \N \N \N \N \N \N 28 \N \N \N \N \N \N \N 496 9 28 jsmith 13 2 T -1 \N 6.07 \N \N \N \N \N \N \N \N 30 \N \N \N \N \N \N \N 497 9 28 jsmith 8 3 T -1 \N 1.07 \N \N \N \N \N \N \N \N 31 \N \N \N \N \N \N \N 498 9 28 jsmith 11 3 T -1 \N 5.00 \N \N \N \N \N \N \N \N 32 \N \N \N \N \N \N \N 499 9 28 jsmith 15 0 T -1 \N 206.07 \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N \N 500 7 31 jsmith 1 0 G 12 0.00 1000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 1000.00 \N \N \N \N 501 7 31 jsmith 2 1 G 13 0.00 1000.00 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 1000.00 \N \N \N \N 502 7 31 jsmith 3 2 I 12 \N 2000.00 \N \N \N \N \N \N \N \N 13 \N \N 2000.00 \N \N \N \N 503 7 31 jsmith 4 2 I 13 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 504 7 31 jsmith 5 2 I 14 \N -1000.00 \N \N \N \N \N \N \N \N 13 \N \N -1000.00 \N \N \N \N 505 7 31 jsmith 6 2 I 15 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 506 7 31 jsmith 7 2 I 16 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 507 7 31 jsmith 8 2 I 17 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 508 7 31 jsmith 9 2 I 18 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 509 7 31 jsmith 10 2 I 19 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 510 7 31 jsmith 11 2 I 20 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 511 7 31 jsmith 12 2 I 21 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 512 7 31 jsmith 13 2 I 22 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 513 7 31 jsmith 15 1 G 14 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 0.00 \N \N \N \N 514 7 31 jsmith 16 2 I 23 \N 0.00 \N \N \N \N \N \N \N \N 14 \N \N 0.00 \N \N \N \N 515 7 31 jsmith 18 1 G 15 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 0.00 \N \N \N \N 516 7 31 jsmith 21 0 G 16 0.00 1000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 1000.00 \N \N \N \N 517 7 31 jsmith 22 1 G 17 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 16 0.00 \N 0.00 \N \N \N \N 518 7 31 jsmith 23 2 G 18 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 0.00 \N 0.00 \N \N \N \N 519 7 31 jsmith 24 3 I 24 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 520 7 31 jsmith 25 3 I 25 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 521 7 31 jsmith 26 3 I 26 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 522 7 31 jsmith 27 3 I 27 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 523 7 31 jsmith 28 3 I 28 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 524 7 31 jsmith 29 3 I 29 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 525 7 31 jsmith 31 2 G 20 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 0.00 \N 0.00 \N \N \N \N 526 7 31 jsmith 34 1 G 21 0.00 1000.00 0.00 0.00 0.00 \N \N \N \N \N 16 0.00 \N 1000.00 \N \N \N \N 527 7 31 jsmith 35 2 G 22 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 21 0.00 \N 0.00 \N \N \N \N 528 7 31 jsmith 36 3 I 30 \N 0.00 \N \N \N \N \N \N \N \N 22 \N \N 0.00 \N \N \N \N 529 7 31 jsmith 38 2 G 23 \N 1000.00 \N \N \N \N \N \N \N \N 21 \N \N 1000.00 \N \N \N \N 530 7 31 jsmith 39 2 G 24 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 21 0.00 \N 0.00 \N \N \N \N 531 7 31 jsmith 40 3 I 31 \N 0.00 \N \N \N \N \N \N \N \N 24 \N \N 0.00 \N \N \N \N 532 7 31 jsmith 41 3 I 45 \N 0.00 \N \N \N \N \N \N \N \N 24 \N \N 0.00 \N \N \N \N 533 7 31 jsmith 14 2 T -1 \N 1000.00 \N \N \N \N \N \N \N \N 13 \N \N 1000.00 \N \N \N \N 534 7 31 jsmith 17 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 14 \N \N 0.00 \N \N \N \N 535 7 31 jsmith 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 15 \N \N 0.00 \N \N \N \N 536 7 31 jsmith 20 1 T -1 \N 1000.00 \N \N \N \N \N \N \N \N 12 \N \N 1000.00 \N \N \N \N 537 7 31 jsmith 30 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 538 7 31 jsmith 32 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 20 \N \N 0.00 \N \N \N \N 539 7 31 jsmith 33 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 17 \N \N 0.00 \N \N \N \N 540 7 31 jsmith 37 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 22 \N \N 0.00 \N \N \N \N 541 7 31 jsmith 42 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 24 \N \N 0.00 \N \N \N \N 542 7 31 jsmith 43 2 T -1 \N 1000.00 \N \N \N \N \N \N \N \N 21 \N \N 1000.00 \N \N \N \N 543 7 31 jsmith 44 1 T -1 \N 1000.00 \N \N \N \N \N \N \N \N 16 \N \N 1000.00 \N \N \N \N 544 7 31 jsmith 45 0 T -1 \N 0.00 \N \N \N \N \N \N \N \N \N 0.00 \N 0.00 \N \N \N \N 545 11 31 jsmith 1 0 G 44 0.00 1000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 1000.00 \N \N \N \N 546 11 31 jsmith 2 1 G 45 0.00 1000.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 1000.00 \N \N \N \N 547 11 31 jsmith 3 2 I 65 \N 2000.00 \N \N \N \N \N \N \N \N 45 \N \N 2000.00 \N \N \N \N 548 11 31 jsmith 4 2 I 66 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 549 11 31 jsmith 5 2 I 67 \N -1000.00 \N \N \N \N \N \N \N \N 45 \N \N -1000.00 \N \N \N \N 550 11 31 jsmith 6 2 I 68 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 551 11 31 jsmith 7 2 I 69 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 552 11 31 jsmith 8 2 I 70 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 553 11 31 jsmith 9 2 I 71 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 554 11 31 jsmith 10 2 I 72 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 555 11 31 jsmith 11 2 I 73 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 556 11 31 jsmith 12 2 I 74 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 557 11 31 jsmith 13 2 I 75 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 558 11 31 jsmith 15 1 G 46 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 559 11 31 jsmith 16 2 I 76 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 560 11 31 jsmith 18 1 G 47 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 561 11 31 jsmith 21 0 G 36 0.00 1000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 1000.00 \N \N \N \N 562 11 31 jsmith 22 1 G 37 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 0.00 \N \N \N \N 563 11 31 jsmith 23 2 G 38 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 564 11 31 jsmith 24 3 I 47 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 565 11 31 jsmith 25 3 I 46 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 566 11 31 jsmith 26 3 I 48 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 567 11 31 jsmith 27 3 I 49 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 568 11 31 jsmith 28 3 I 50 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 569 11 31 jsmith 29 3 I 51 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 570 11 31 jsmith 31 2 G 39 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 571 11 31 jsmith 34 1 G 40 0.00 1000.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 1000.00 \N \N \N \N 572 11 31 jsmith 35 2 G 41 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 0.00 \N \N \N \N 573 11 31 jsmith 36 3 I 52 \N 0.00 \N \N \N \N \N \N \N \N 41 \N \N 0.00 \N \N \N \N 574 11 31 jsmith 38 2 G 42 \N 1000.00 \N \N \N \N \N \N \N \N 40 \N \N 1000.00 \N \N \N \N 575 11 31 jsmith 39 2 G 43 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 0.00 \N \N \N \N 576 11 31 jsmith 40 3 I 63 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 577 11 31 jsmith 41 3 I 64 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 578 11 31 jsmith 14 2 T -1 \N 1000.00 \N \N \N \N \N \N \N \N 45 \N \N 1000.00 \N \N \N \N 579 11 31 jsmith 17 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 580 11 31 jsmith 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 47 \N \N 0.00 \N \N \N \N 581 11 31 jsmith 20 1 T -1 \N 1000.00 \N \N \N \N \N \N \N \N 44 \N \N 1000.00 \N \N \N \N 582 11 31 jsmith 30 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 583 11 31 jsmith 32 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 584 11 31 jsmith 33 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 37 \N \N 0.00 \N \N \N \N 585 11 31 jsmith 37 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 41 \N \N 0.00 \N \N \N \N 586 11 31 jsmith 42 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 587 11 31 jsmith 43 2 T -1 \N 1000.00 \N \N \N \N \N \N \N \N 40 \N \N 1000.00 \N \N \N \N 588 11 31 jsmith 44 1 T -1 \N 1000.00 \N \N \N \N \N \N \N \N 36 \N \N 1000.00 \N \N \N \N 589 11 31 jsmith 45 0 T -1 \N 0.00 \N \N \N \N \N \N \N \N \N \N \N 0.00 \N \N \N \N 590 4 31 jsmith 1 0 G 3 0.00 1000.00 0.00 0.00 0.00 \N 0.50000000000000000000 \N \N 0.00000000000000000000 -1 1000.00 0.50000000000000000000 1000.00 0.50000000000000000000 \N \N \N 591 4 31 jsmith 2 1 G 4 0.00 2000.00 0.00 0.00 0.00 \N \N \N \N \N 3 2000.00 1.00000000000000000000 2000.00 1.00000000000000000000 \N \N \N 592 4 31 jsmith 3 2 I 2 0.00 2000.00 \N \N 0.00 \N 1.00000000000000000000 \N \N 0.00000000000000000000 4 2000.00 1.00000000000000000000 2000.00 1.00000000000000000000 \N \N \N 593 4 31 jsmith 4 2 I 3 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 594 4 31 jsmith 6 1 G 5 0.00 -1000.00 0.00 0.00 0.00 \N \N \N \N \N 3 -1000.00 \N -1000.00 \N \N \N \N 595 4 31 jsmith 7 2 I 4 \N 1000.00 \N \N 0.00 \N 0.50000000000000000000 \N \N 0.00000000000000000000 5 1000.00 0.50000000000000000000 1000.00 0.50000000000000000000 \N \N \N 596 4 31 jsmith 8 1 G 6 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 0.00 \N 0.00 \N \N \N \N 597 4 31 jsmith 10 0 G 7 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 598 4 31 jsmith 11 1 G 8 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 599 4 31 jsmith 12 2 I 5 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 600 4 31 jsmith 13 2 I 6 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 601 4 31 jsmith 14 2 I 7 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 602 4 31 jsmith 15 2 I 8 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 603 4 31 jsmith 16 2 I 9 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 604 4 31 jsmith 17 2 I 10 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 605 4 31 jsmith 18 2 I 11 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 606 4 31 jsmith 20 0 G 9 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 607 4 31 jsmith 5 2 T -1 \N 2000.00 \N \N \N \N \N \N \N \N 4 2000.00 1.00000000000000000000 2000.00 1.00000000000000000000 \N \N \N 608 4 31 jsmith 9 1 T -1 \N 1000.00 \N \N 0.00 \N 0.50000000000000000000 \N \N 0.00000000000000000000 3 1000.00 0.50000000000000000000 1000.00 0.50000000000000000000 \N \N \N 609 4 31 jsmith 19 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 610 4 31 jsmith 21 0 T -1 0.00 1000.00 \N \N 0.00 \N \N \N \N \N \N 1000.00 \N 1000.00 \N \N \N \N 611 7 47 jsmith 1 0 G 12 0.00 15000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 15000.00 \N \N \N \N 612 7 47 jsmith 2 1 G 13 0.00 15000.00 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 15000.00 \N \N \N \N 613 7 47 jsmith 3 2 I 12 \N 8000.00 \N \N \N \N \N \N \N \N 13 \N \N 8000.00 \N \N \N \N 614 7 47 jsmith 4 2 I 13 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 615 7 47 jsmith 5 2 I 14 \N 7000.00 \N \N \N \N \N \N \N \N 13 \N \N 7000.00 \N \N \N \N 616 7 47 jsmith 6 2 I 15 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 617 7 47 jsmith 7 2 I 16 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 618 7 47 jsmith 8 2 I 17 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 619 7 47 jsmith 9 2 I 18 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 620 7 47 jsmith 10 2 I 19 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 621 7 47 jsmith 11 2 I 20 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 622 7 47 jsmith 12 2 I 21 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 623 7 47 jsmith 13 2 I 22 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 624 7 47 jsmith 15 1 G 14 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 0.00 \N \N \N \N 625 7 47 jsmith 16 2 I 23 \N 0.00 \N \N \N \N \N \N \N \N 14 \N \N 0.00 \N \N \N \N 626 7 47 jsmith 18 1 G 15 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 0.00 \N \N \N \N 627 7 47 jsmith 21 0 G 16 0.00 15000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 15000.00 \N \N \N \N 628 7 47 jsmith 22 1 G 17 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 16 0.00 \N 0.00 \N \N \N \N 629 7 47 jsmith 23 2 G 18 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 0.00 \N 0.00 \N \N \N \N 630 7 47 jsmith 24 3 I 24 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 631 7 47 jsmith 25 3 I 25 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 632 7 47 jsmith 26 3 I 26 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 633 7 47 jsmith 27 3 I 27 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 634 7 47 jsmith 28 3 I 28 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 635 7 47 jsmith 29 3 I 29 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 636 7 47 jsmith 31 2 G 20 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 0.00 \N 0.00 \N \N \N \N 637 7 47 jsmith 34 1 G 21 0.00 15000.00 0.00 0.00 0.00 \N \N \N \N \N 16 0.00 \N 15000.00 \N \N \N \N 638 7 47 jsmith 35 2 G 22 0.00 10000.00 0.00 0.00 0.00 \N \N \N \N \N 21 0.00 \N 10000.00 \N \N \N \N 639 7 47 jsmith 36 3 I 30 \N 10000.00 \N \N \N \N \N \N \N \N 22 \N \N 10000.00 \N \N \N \N 640 7 47 jsmith 38 2 G 23 \N 5000.00 \N \N \N \N \N \N \N \N 21 \N \N 5000.00 \N \N \N \N 641 7 47 jsmith 39 2 G 24 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 21 0.00 \N 0.00 \N \N \N \N 642 7 47 jsmith 40 3 I 31 \N 0.00 \N \N \N \N \N \N \N \N 24 \N \N 0.00 \N \N \N \N 643 7 47 jsmith 41 3 I 45 \N 0.00 \N \N \N \N \N \N \N \N 24 \N \N 0.00 \N \N \N \N 644 7 47 jsmith 14 2 T -1 \N 15000.00 \N \N \N \N \N \N \N \N 13 \N \N 15000.00 \N \N \N \N 645 7 47 jsmith 17 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 14 \N \N 0.00 \N \N \N \N 646 7 47 jsmith 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 15 \N \N 0.00 \N \N \N \N 647 7 47 jsmith 20 1 T -1 \N 15000.00 \N \N \N \N \N \N \N \N 12 \N \N 15000.00 \N \N \N \N 648 7 47 jsmith 30 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 649 7 47 jsmith 32 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 20 \N \N 0.00 \N \N \N \N 650 7 47 jsmith 33 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 17 \N \N 0.00 \N \N \N \N 651 7 47 jsmith 37 3 T -1 \N 10000.00 \N \N \N \N \N \N \N \N 22 \N \N 10000.00 \N \N \N \N 652 7 47 jsmith 42 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 24 \N \N 0.00 \N \N \N \N 653 7 47 jsmith 43 2 T -1 \N 15000.00 \N \N \N \N \N \N \N \N 21 \N \N 15000.00 \N \N \N \N 654 7 47 jsmith 44 1 T -1 \N 15000.00 \N \N \N \N \N \N \N \N 16 \N \N 15000.00 \N \N \N \N 655 7 47 jsmith 45 0 T -1 \N 0.00 \N \N \N \N \N \N \N \N \N 0.00 \N 0.00 \N \N \N \N 656 7 48 jsmith 4 2 I 13 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 657 7 48 jsmith 1 0 G 12 0.00 18000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 18000.00 \N \N \N \N 658 7 48 jsmith 2 1 G 13 0.00 18000.00 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 18000.00 \N \N \N \N 659 7 48 jsmith 3 2 I 12 \N 14000.00 \N \N \N \N \N \N \N \N 13 \N \N 14000.00 \N \N \N \N 660 7 48 jsmith 5 2 I 14 \N 4000.00 \N \N \N \N \N \N \N \N 13 \N \N 4000.00 \N \N \N \N 661 7 48 jsmith 6 2 I 15 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 662 7 48 jsmith 7 2 I 16 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 663 7 48 jsmith 8 2 I 17 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 664 7 48 jsmith 9 2 I 18 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 665 7 48 jsmith 10 2 I 19 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 666 7 48 jsmith 11 2 I 20 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 667 7 48 jsmith 12 2 I 21 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 668 7 48 jsmith 13 2 I 22 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 669 7 48 jsmith 15 1 G 14 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 0.00 \N \N \N \N 670 7 48 jsmith 16 2 I 23 \N 0.00 \N \N \N \N \N \N \N \N 14 \N \N 0.00 \N \N \N \N 671 7 48 jsmith 18 1 G 15 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 0.00 \N \N \N \N 672 7 48 jsmith 21 0 G 16 0.00 18000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 18000.00 \N \N \N \N 673 7 48 jsmith 22 1 G 17 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 16 0.00 \N 0.00 \N \N \N \N 674 7 48 jsmith 23 2 G 18 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 0.00 \N 0.00 \N \N \N \N 675 7 48 jsmith 24 3 I 24 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 676 7 48 jsmith 25 3 I 25 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 677 7 48 jsmith 26 3 I 26 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 678 7 48 jsmith 27 3 I 27 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 679 7 48 jsmith 28 3 I 28 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 680 7 48 jsmith 29 3 I 29 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 681 7 48 jsmith 31 2 G 20 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 0.00 \N 0.00 \N \N \N \N 682 7 48 jsmith 34 1 G 21 0.00 18000.00 0.00 0.00 0.00 \N \N \N \N \N 16 0.00 \N 18000.00 \N \N \N \N 683 7 48 jsmith 35 2 G 22 0.00 10000.00 0.00 0.00 0.00 \N \N \N \N \N 21 0.00 \N 10000.00 \N \N \N \N 684 7 48 jsmith 36 3 I 30 \N 10000.00 \N \N \N \N \N \N \N \N 22 \N \N 10000.00 \N \N \N \N 685 7 48 jsmith 38 2 G 23 \N 3000.00 \N \N \N \N \N \N \N \N 21 \N \N 3000.00 \N \N \N \N 686 7 48 jsmith 39 2 G 24 0.00 5000.00 0.00 0.00 0.00 \N \N \N \N \N 21 0.00 \N 5000.00 \N \N \N \N 687 7 48 jsmith 40 3 I 31 \N 5000.00 \N \N \N \N \N \N \N \N 24 \N \N 5000.00 \N \N \N \N 688 7 48 jsmith 41 3 I 45 \N 0.00 \N \N \N \N \N \N \N \N 24 \N \N 0.00 \N \N \N \N 689 7 48 jsmith 14 2 T -1 \N 18000.00 \N \N \N \N \N \N \N \N 13 \N \N 18000.00 \N \N \N \N 690 7 48 jsmith 17 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 14 \N \N 0.00 \N \N \N \N 691 7 48 jsmith 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 15 \N \N 0.00 \N \N \N \N 692 7 48 jsmith 20 1 T -1 \N 18000.00 \N \N \N \N \N \N \N \N 12 \N \N 18000.00 \N \N \N \N 693 7 48 jsmith 30 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 694 7 48 jsmith 32 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 20 \N \N 0.00 \N \N \N \N 695 7 48 jsmith 33 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 17 \N \N 0.00 \N \N \N \N 696 7 48 jsmith 37 3 T -1 \N 10000.00 \N \N \N \N \N \N \N \N 22 \N \N 10000.00 \N \N \N \N 697 7 48 jsmith 42 3 T -1 \N 5000.00 \N \N \N \N \N \N \N \N 24 \N \N 5000.00 \N \N \N \N 698 7 48 jsmith 43 2 T -1 \N 18000.00 \N \N \N \N \N \N \N \N 21 \N \N 18000.00 \N \N \N \N 699 7 48 jsmith 44 1 T -1 \N 18000.00 \N \N \N \N \N \N \N \N 16 \N \N 18000.00 \N \N \N \N 700 7 48 jsmith 45 0 T -1 \N 0.00 \N \N \N \N \N \N \N \N \N 0.00 \N 0.00 \N \N \N \N 701 7 46 jsmith 1 0 G 12 0.00 39000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 39000.00 \N \N \N \N 702 7 46 jsmith 2 1 G 13 0.00 39000.00 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 39000.00 \N \N \N \N 703 7 46 jsmith 3 2 I 12 \N 36000.00 \N \N \N \N \N \N \N \N 13 \N \N 36000.00 \N \N \N \N 704 7 46 jsmith 4 2 I 13 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 705 7 46 jsmith 5 2 I 14 \N 3000.00 \N \N \N \N \N \N \N \N 13 \N \N 3000.00 \N \N \N \N 706 7 46 jsmith 6 2 I 15 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 707 7 46 jsmith 7 2 I 16 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 708 7 46 jsmith 8 2 I 17 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 709 7 46 jsmith 9 2 I 18 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 710 7 46 jsmith 10 2 I 19 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 711 7 46 jsmith 11 2 I 20 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 712 7 46 jsmith 12 2 I 21 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 713 7 46 jsmith 13 2 I 22 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 714 7 46 jsmith 15 1 G 14 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 0.00 \N \N \N \N 715 7 46 jsmith 16 2 I 23 \N 0.00 \N \N \N \N \N \N \N \N 14 \N \N 0.00 \N \N \N \N 716 7 46 jsmith 18 1 G 15 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 0.00 \N \N \N \N 717 7 46 jsmith 21 0 G 16 0.00 39000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 36000.00 \N \N \N \N 718 7 46 jsmith 22 1 G 17 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 16 0.00 \N 0.00 \N \N \N \N 719 7 46 jsmith 23 2 G 18 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 0.00 \N 0.00 \N \N \N \N 720 7 46 jsmith 24 3 I 24 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 721 7 46 jsmith 25 3 I 25 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 722 7 46 jsmith 26 3 I 26 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 723 7 46 jsmith 27 3 I 27 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 724 7 46 jsmith 28 3 I 28 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 725 7 46 jsmith 29 3 I 29 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 726 7 46 jsmith 31 2 G 20 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 0.00 \N 0.00 \N \N \N \N 727 7 46 jsmith 34 1 G 21 0.00 39000.00 0.00 0.00 0.00 \N \N \N \N \N 16 0.00 \N 36000.00 \N \N \N \N 728 7 46 jsmith 35 2 G 22 0.00 20000.00 0.00 0.00 0.00 \N \N \N \N \N 21 0.00 \N 20000.00 \N \N \N \N 729 7 46 jsmith 36 3 I 30 \N 20000.00 \N \N \N \N \N \N \N \N 22 \N \N 20000.00 \N \N \N \N 730 7 46 jsmith 38 2 G 23 \N 14000.00 \N \N \N \N \N \N \N \N 21 \N \N 11000.00 \N \N \N \N 731 7 46 jsmith 39 2 G 24 0.00 5000.00 0.00 0.00 0.00 \N \N \N \N \N 21 0.00 \N 5000.00 \N \N \N \N 732 7 46 jsmith 40 3 I 31 \N 5000.00 \N \N \N \N \N \N \N \N 24 \N \N 5000.00 \N \N \N \N 733 7 46 jsmith 41 3 I 45 \N 0.00 \N \N \N \N \N \N \N \N 24 \N \N 0.00 \N \N \N \N 734 7 46 jsmith 14 2 T -1 \N 39000.00 \N \N \N \N \N \N \N \N 13 \N \N 39000.00 \N \N \N \N 735 7 46 jsmith 17 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 14 \N \N 0.00 \N \N \N \N 736 7 46 jsmith 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 15 \N \N 0.00 \N \N \N \N 737 7 46 jsmith 20 1 T -1 \N 39000.00 \N \N \N \N \N \N \N \N 12 \N \N 39000.00 \N \N \N \N 738 7 46 jsmith 30 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 739 7 46 jsmith 32 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 20 \N \N 0.00 \N \N \N \N 740 7 46 jsmith 33 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 17 \N \N 0.00 \N \N \N \N 741 7 46 jsmith 37 3 T -1 \N 20000.00 \N \N \N \N \N \N \N \N 22 \N \N 20000.00 \N \N \N \N 742 7 46 jsmith 42 3 T -1 \N 5000.00 \N \N \N \N \N \N \N \N 24 \N \N 5000.00 \N \N \N \N 743 7 46 jsmith 43 2 T -1 \N 39000.00 \N \N \N \N \N \N \N \N 21 \N \N 36000.00 \N \N \N \N 744 7 46 jsmith 44 1 T -1 \N 39000.00 \N \N \N \N \N \N \N \N 16 \N \N 36000.00 \N \N \N \N 745 7 46 jsmith 45 0 T -1 \N 0.00 \N \N \N \N \N \N \N \N \N 0.00 \N 3000.00 \N \N \N \N 746 7 29 jsmith 10 2 I 19 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 747 7 29 jsmith 1 0 G 12 0.00 39000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 39000.00 \N \N \N \N 748 7 29 jsmith 2 1 G 13 0.00 39000.00 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 39000.00 \N \N \N \N 749 7 29 jsmith 3 2 I 12 \N 36000.00 \N \N \N \N \N \N \N \N 13 \N \N 36000.00 \N \N \N \N 750 7 29 jsmith 4 2 I 13 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 751 7 29 jsmith 5 2 I 14 \N 3000.00 \N \N \N \N \N \N \N \N 13 \N \N 3000.00 \N \N \N \N 752 7 29 jsmith 6 2 I 15 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 753 7 29 jsmith 7 2 I 16 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 754 7 29 jsmith 8 2 I 17 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 755 7 29 jsmith 9 2 I 18 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 756 7 29 jsmith 11 2 I 20 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 757 7 29 jsmith 12 2 I 21 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 758 7 29 jsmith 13 2 I 22 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 759 7 29 jsmith 15 1 G 14 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 0.00 \N \N \N \N 760 7 29 jsmith 16 2 I 23 \N 0.00 \N \N \N \N \N \N \N \N 14 \N \N 0.00 \N \N \N \N 761 7 29 jsmith 18 1 G 15 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 0.00 \N \N \N \N 762 7 29 jsmith 21 0 G 16 0.00 39000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 25000.00 \N \N \N \N 763 7 29 jsmith 22 1 G 17 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 16 0.00 \N 0.00 \N \N \N \N 764 7 29 jsmith 23 2 G 18 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 0.00 \N 0.00 \N \N \N \N 765 7 29 jsmith 24 3 I 24 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 766 7 29 jsmith 25 3 I 25 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 767 7 29 jsmith 26 3 I 26 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 768 7 29 jsmith 27 3 I 27 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 769 7 29 jsmith 28 3 I 28 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 770 7 29 jsmith 29 3 I 29 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 771 7 29 jsmith 31 2 G 20 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 0.00 \N 0.00 \N \N \N \N 772 7 29 jsmith 34 1 G 21 0.00 39000.00 0.00 0.00 0.00 \N \N \N \N \N 16 0.00 \N 25000.00 \N \N \N \N 773 7 29 jsmith 35 2 G 22 0.00 20000.00 0.00 0.00 0.00 \N \N \N \N \N 21 0.00 \N 20000.00 \N \N \N \N 774 7 29 jsmith 36 3 I 30 \N 20000.00 \N \N \N \N \N \N \N \N 22 \N \N 20000.00 \N \N \N \N 775 7 29 jsmith 38 2 G 23 \N 14000.00 \N \N \N \N \N \N \N \N 21 \N \N 0.00 \N \N \N \N 776 7 29 jsmith 39 2 G 24 0.00 5000.00 0.00 0.00 0.00 \N \N \N \N \N 21 0.00 \N 5000.00 \N \N \N \N 777 7 29 jsmith 40 3 I 31 \N 5000.00 \N \N \N \N \N \N \N \N 24 \N \N 5000.00 \N \N \N \N 778 7 29 jsmith 41 3 I 45 \N 0.00 \N \N \N \N \N \N \N \N 24 \N \N 0.00 \N \N \N \N 779 7 29 jsmith 14 2 T -1 \N 39000.00 \N \N \N \N \N \N \N \N 13 \N \N 39000.00 \N \N \N \N 780 7 29 jsmith 17 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 14 \N \N 0.00 \N \N \N \N 781 7 29 jsmith 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 15 \N \N 0.00 \N \N \N \N 782 7 29 jsmith 20 1 T -1 \N 39000.00 \N \N \N \N \N \N \N \N 12 \N \N 39000.00 \N \N \N \N 783 7 29 jsmith 30 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 784 7 29 jsmith 32 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 20 \N \N 0.00 \N \N \N \N 785 7 29 jsmith 33 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 17 \N \N 0.00 \N \N \N \N 786 7 29 jsmith 37 3 T -1 \N 20000.00 \N \N \N \N \N \N \N \N 22 \N \N 20000.00 \N \N \N \N 787 7 29 jsmith 42 3 T -1 \N 5000.00 \N \N \N \N \N \N \N \N 24 \N \N 5000.00 \N \N \N \N 788 7 29 jsmith 43 2 T -1 \N 39000.00 \N \N \N \N \N \N \N \N 21 \N \N 25000.00 \N \N \N \N 789 7 29 jsmith 44 1 T -1 \N 39000.00 \N \N \N \N \N \N \N \N 16 \N \N 25000.00 \N \N \N \N 790 7 29 jsmith 45 0 T -1 \N 0.00 \N \N \N \N \N \N \N \N \N 0.00 \N 14000.00 \N \N \N \N 791 7 28 jsmith 1 0 G 12 0.00 1043286.24 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 1043286.24 \N \N \N \N 792 7 28 jsmith 2 1 G 13 0.00 1043286.24 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 1043286.24 \N \N \N \N 793 7 28 jsmith 3 2 I 12 \N 1027222.11 \N \N \N \N \N \N \N \N 13 \N \N 1027222.11 \N \N \N \N 794 7 28 jsmith 4 2 I 13 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 795 7 28 jsmith 5 2 I 14 \N 22195.81 \N \N \N \N \N \N \N \N 13 \N \N 22195.81 \N \N \N \N 796 7 28 jsmith 6 2 I 15 \N -1.06 \N \N \N \N \N \N \N \N 13 \N \N -1.06 \N \N \N \N 797 7 28 jsmith 7 2 I 16 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 798 7 28 jsmith 8 2 I 17 \N -76.85 \N \N \N \N \N \N \N \N 13 \N \N -76.85 \N \N \N \N 799 7 28 jsmith 9 2 I 18 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 800 7 28 jsmith 10 2 I 19 \N -6053.79 \N \N \N \N \N \N \N \N 13 \N \N -6053.79 \N \N \N \N 801 7 28 jsmith 11 2 I 20 \N 0.02 \N \N \N \N \N \N \N \N 13 \N \N 0.02 \N \N \N \N 802 7 28 jsmith 12 2 I 21 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 803 7 28 jsmith 13 2 I 22 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 804 7 28 jsmith 15 1 G 14 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 0.00 \N \N \N \N 805 7 28 jsmith 16 2 I 23 \N 0.00 \N \N \N \N \N \N \N \N 14 \N \N 0.00 \N \N \N \N 806 7 28 jsmith 18 1 G 15 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 0.00 \N \N \N \N 807 7 28 jsmith 21 0 G 16 0.00 1043286.24 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 1029286.24 \N \N \N \N 808 7 28 jsmith 22 1 G 17 0.00 829.11 0.00 0.00 0.00 \N \N \N \N \N 16 0.00 \N 829.11 \N \N \N \N 809 7 28 jsmith 23 2 G 18 0.00 829.11 0.00 0.00 0.00 \N \N \N \N \N 17 0.00 \N 829.11 \N \N \N \N 810 7 28 jsmith 24 3 I 24 \N 250.00 \N \N \N \N \N \N \N \N 18 \N \N 250.00 \N \N \N \N 811 7 28 jsmith 25 3 I 25 \N 151.99 \N \N \N \N \N \N \N \N 18 \N \N 151.99 \N \N \N \N 812 7 28 jsmith 26 3 I 26 \N 0.00 \N \N \N \N \N \N \N \N 18 \N \N 0.00 \N \N \N \N 813 7 28 jsmith 27 3 I 27 \N 216.74 \N \N \N \N \N \N \N \N 18 \N \N 216.74 \N \N \N \N 814 7 28 jsmith 28 3 I 28 \N 238.77 \N \N \N \N \N \N \N \N 18 \N \N 238.77 \N \N \N \N 815 7 28 jsmith 29 3 I 29 \N -28.39 \N \N \N \N \N \N \N \N 18 \N \N -28.39 \N \N \N \N 816 7 28 jsmith 31 2 G 20 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 0.00 \N 0.00 \N \N \N \N 817 7 28 jsmith 34 1 G 21 0.00 1042457.13 0.00 0.00 0.00 \N \N \N \N \N 16 0.00 \N 1028457.13 \N \N \N \N 818 7 28 jsmith 35 2 G 22 0.00 1020000.00 0.00 0.00 0.00 \N \N \N \N \N 21 0.00 \N 1020000.00 \N \N \N \N 819 7 28 jsmith 36 3 I 30 \N 1020000.00 \N \N \N \N \N \N \N \N 22 \N \N 1020000.00 \N \N \N \N 820 7 28 jsmith 38 2 G 23 \N 17457.13 \N \N \N \N \N \N \N \N 21 \N \N 3457.13 \N \N \N \N 821 7 28 jsmith 39 2 G 24 0.00 5000.00 0.00 0.00 0.00 \N \N \N \N \N 21 0.00 \N 5000.00 \N \N \N \N 822 7 28 jsmith 40 3 I 31 \N 5000.00 \N \N \N \N \N \N \N \N 24 \N \N 5000.00 \N \N \N \N 823 7 28 jsmith 41 3 I 45 \N 0.00 \N \N \N \N \N \N \N \N 24 \N \N 0.00 \N \N \N \N 824 7 28 jsmith 14 2 T -1 \N 1043286.24 \N \N \N \N \N \N \N \N 13 \N \N 1043286.24 \N \N \N \N 825 7 28 jsmith 17 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 14 \N \N 0.00 \N \N \N \N 826 7 28 jsmith 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 15 \N \N 0.00 \N \N \N \N 827 7 28 jsmith 20 1 T -1 \N 1043286.24 \N \N \N \N \N \N \N \N 12 \N \N 1043286.24 \N \N \N \N 828 7 28 jsmith 30 3 T -1 \N 829.11 \N \N \N \N \N \N \N \N 18 \N \N 829.11 \N \N \N \N 829 7 28 jsmith 32 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 20 \N \N 0.00 \N \N \N \N 830 7 28 jsmith 33 2 T -1 \N 829.11 \N \N \N \N \N \N \N \N 17 \N \N 829.11 \N \N \N \N 831 7 28 jsmith 37 3 T -1 \N 1020000.00 \N \N \N \N \N \N \N \N 22 \N \N 1020000.00 \N \N \N \N 832 7 28 jsmith 42 3 T -1 \N 5000.00 \N \N \N \N \N \N \N \N 24 \N \N 5000.00 \N \N \N \N 833 7 28 jsmith 43 2 T -1 \N 1042457.13 \N \N \N \N \N \N \N \N 21 \N \N 1028457.13 \N \N \N \N 834 7 28 jsmith 44 1 T -1 \N 1043286.24 \N \N \N \N \N \N \N \N 16 \N \N 1029286.24 \N \N \N \N 835 7 28 jsmith 45 0 T -1 \N 0.00 \N \N \N \N \N \N \N \N \N 0.00 \N 14000.00 \N \N \N \N 836 7 30 jsmith 4 2 I 13 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 837 7 30 jsmith 1 0 G 12 0.00 1046057.66 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 1046057.66 \N \N \N \N 838 7 30 jsmith 2 1 G 13 0.00 1046057.66 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 1046057.66 \N \N \N \N 839 7 30 jsmith 3 2 I 12 \N 1030080.94 \N \N \N \N \N \N \N \N 13 \N \N 1030080.94 \N \N \N \N 840 7 30 jsmith 5 2 I 14 \N 70516.91 \N \N \N \N \N \N \N \N 13 \N \N 70516.91 \N \N \N \N 841 7 30 jsmith 6 2 I 15 \N -1.03 \N \N \N \N \N \N \N \N 13 \N \N -1.03 \N \N \N \N 842 7 30 jsmith 7 2 I 16 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 843 7 30 jsmith 8 2 I 17 \N -48695.01 \N \N \N \N \N \N \N \N 13 \N \N -48695.01 \N \N \N \N 844 7 30 jsmith 9 2 I 18 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 845 7 30 jsmith 10 2 I 19 \N -5868.79 \N \N \N \N \N \N \N \N 13 \N \N -5868.79 \N \N \N \N 846 7 30 jsmith 11 2 I 20 \N 24.64 \N \N \N \N \N \N \N \N 13 \N \N 24.64 \N \N \N \N 847 7 30 jsmith 12 2 I 21 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 848 7 30 jsmith 13 2 I 22 \N 0.00 \N \N \N \N \N \N \N \N 13 \N \N 0.00 \N \N \N \N 849 7 30 jsmith 15 1 G 14 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 0.00 \N \N \N \N 850 7 30 jsmith 16 2 I 23 \N 0.00 \N \N \N \N \N \N \N \N 14 \N \N 0.00 \N \N \N \N 851 7 30 jsmith 18 1 G 15 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 12 0.00 \N 0.00 \N \N \N \N 852 7 30 jsmith 21 0 G 16 0.00 1046057.66 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 1046057.66 \N \N \N \N 853 7 30 jsmith 22 1 G 17 0.00 726.06 0.00 0.00 0.00 \N \N \N \N \N 16 0.00 \N 726.06 \N \N \N \N 854 7 30 jsmith 23 2 G 18 0.00 726.06 0.00 0.00 0.00 \N \N \N \N \N 17 0.00 \N 726.06 \N \N \N \N 855 7 30 jsmith 24 3 I 24 \N -0.40 \N \N \N \N \N \N \N \N 18 \N \N -0.40 \N \N \N \N 856 7 30 jsmith 25 3 I 25 \N 215.73 \N \N \N \N \N \N \N \N 18 \N \N 215.73 \N \N \N \N 857 7 30 jsmith 26 3 I 26 \N -125.00 \N \N \N \N \N \N \N \N 18 \N \N -125.00 \N \N \N \N 858 7 30 jsmith 27 3 I 27 \N 335.48 \N \N \N \N \N \N \N \N 18 \N \N 335.48 \N \N \N \N 859 7 30 jsmith 28 3 I 28 \N 351.14 \N \N \N \N \N \N \N \N 18 \N \N 351.14 \N \N \N \N 860 7 30 jsmith 29 3 I 29 \N -50.89 \N \N \N \N \N \N \N \N 18 \N \N -50.89 \N \N \N \N 861 7 30 jsmith 31 2 G 20 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 17 0.00 \N 0.00 \N \N \N \N 862 7 30 jsmith 34 1 G 21 0.00 1045331.60 0.00 0.00 0.00 \N \N \N \N \N 16 0.00 \N 1045331.60 \N \N \N \N 863 7 30 jsmith 35 2 G 22 0.00 1020000.00 0.00 0.00 0.00 \N \N \N \N \N 21 0.00 \N 1020000.00 \N \N \N \N 864 7 30 jsmith 36 3 I 30 \N 1020000.00 \N \N \N \N \N \N \N \N 22 \N \N 1020000.00 \N \N \N \N 865 7 30 jsmith 38 2 G 23 \N 2874.47 \N \N \N \N \N \N \N \N 21 \N \N 2874.47 \N \N \N \N 866 11 38 mfgadmin 34 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N Total Long Term Liabilities \N \N 867 7 30 jsmith 39 2 G 24 0.00 22457.13 0.00 0.00 0.00 \N \N \N \N \N 21 0.00 \N 22457.13 \N \N \N \N 868 7 30 jsmith 40 3 I 31 \N 22457.13 \N \N \N \N \N \N \N \N 24 \N \N 22457.13 \N \N \N \N 869 7 30 jsmith 41 3 I 45 \N 0.00 \N \N \N \N \N \N \N \N 24 \N \N 0.00 \N \N \N \N 870 7 30 jsmith 14 2 T -1 \N 1046057.66 \N \N \N \N \N \N \N \N 13 \N \N 1046057.66 \N \N \N \N 871 7 30 jsmith 17 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 14 \N \N 0.00 \N \N \N \N 872 7 30 jsmith 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 15 \N \N 0.00 \N \N \N \N 873 7 30 jsmith 20 1 T -1 \N 1046057.66 \N \N \N \N \N \N \N \N 12 \N \N 1046057.66 \N \N \N \N 874 7 30 jsmith 30 3 T -1 \N 726.06 \N \N \N \N \N \N \N \N 18 \N \N 726.06 \N \N \N \N 875 7 30 jsmith 32 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 20 \N \N 0.00 \N \N \N \N 876 7 30 jsmith 33 2 T -1 \N 726.06 \N \N \N \N \N \N \N \N 17 \N \N 726.06 \N \N \N \N 877 7 30 jsmith 37 3 T -1 \N 1020000.00 \N \N \N \N \N \N \N \N 22 \N \N 1020000.00 \N \N \N \N 878 7 30 jsmith 42 3 T -1 \N 22457.13 \N \N \N \N \N \N \N \N 24 \N \N 22457.13 \N \N \N \N 879 7 30 jsmith 43 2 T -1 \N 1045331.60 \N \N \N \N \N \N \N \N 21 \N \N 1045331.60 \N \N \N \N 880 7 30 jsmith 44 1 T -1 \N 1046057.66 \N \N \N \N \N \N \N \N 16 \N \N 1046057.66 \N \N \N \N 881 7 30 jsmith 45 0 T -1 \N 0.00 \N \N \N \N \N \N \N \N \N 0.00 \N 0.00 \N \N \N \N 882 11 39 jsmith 1 0 G 44 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 883 11 39 jsmith 2 1 G 45 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 884 11 39 jsmith 3 2 I 65 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 885 11 39 jsmith 4 2 I 66 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 886 11 39 jsmith 5 2 I 67 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 887 11 39 jsmith 6 2 I 68 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 888 11 39 jsmith 7 2 I 69 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 889 11 39 jsmith 8 2 I 70 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 890 11 39 jsmith 9 2 I 71 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 891 11 39 jsmith 10 2 I 72 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 892 11 39 jsmith 11 2 I 73 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 893 11 39 jsmith 12 2 I 74 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 894 11 39 jsmith 13 2 I 75 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 895 11 39 jsmith 15 1 G 46 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 896 11 39 jsmith 16 2 I 76 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 897 11 39 jsmith 18 1 G 47 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 898 11 39 jsmith 21 0 G 36 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 899 11 39 jsmith 22 1 G 37 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 0.00 \N \N \N \N 900 11 39 jsmith 23 2 G 38 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 901 11 39 jsmith 24 3 I 47 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 902 11 39 jsmith 25 3 I 46 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 903 11 39 jsmith 26 3 I 48 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 904 11 39 jsmith 27 3 I 49 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 905 11 39 jsmith 28 3 I 50 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 906 11 39 jsmith 29 3 I 51 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 907 11 39 jsmith 31 2 G 39 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 908 11 39 jsmith 32 3 I 140 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 909 11 39 jsmith 35 1 G 40 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 0.00 \N \N \N \N 910 11 39 jsmith 36 2 G 41 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 0.00 \N \N \N \N 911 11 39 jsmith 37 3 I 52 \N 0.00 \N \N \N \N \N \N \N \N 41 \N \N 0.00 \N \N \N \N 912 11 39 jsmith 39 2 G 42 \N 0.00 \N \N \N \N \N \N \N \N 40 \N \N 0.00 \N \N \N \N 913 11 39 jsmith 40 2 G 43 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 0.00 \N \N \N \N 914 11 39 jsmith 41 3 I 63 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 915 11 39 jsmith 42 3 I 64 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 916 11 39 jsmith 20 1 T -1 \N 0.00 \N \N \N \N \N \N \N \N 44 \N \N 0.00 \N \N \N \N 917 11 39 jsmith 14 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 918 11 39 jsmith 17 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 919 11 39 jsmith 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 47 \N \N 0.00 \N \N \N \N 920 11 39 jsmith 45 1 T -1 \N 0.00 \N \N \N \N \N \N \N \N 36 \N \N 0.00 \N \N \N \N 921 11 39 jsmith 34 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 37 \N \N 0.00 \N \N \N \N 922 11 39 jsmith 30 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 923 11 39 jsmith 33 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 924 11 39 jsmith 44 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 40 \N \N 0.00 \N \N \N \N 925 11 39 jsmith 38 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 41 \N \N 0.00 \N \N \N \N 926 11 39 jsmith 43 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 927 11 39 jsmith 46 0 T -1 \N 0.00 \N \N \N \N \N \N \N \N \N \N \N 0.00 \N \N \N \N 928 11 34 jsmith 1 0 G 44 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 929 11 34 jsmith 2 1 G 45 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 930 11 34 jsmith 3 2 I 65 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 931 11 34 jsmith 4 2 I 66 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 932 11 34 jsmith 5 2 I 67 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 933 11 34 jsmith 6 2 I 68 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 934 11 34 jsmith 7 2 I 69 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 935 11 34 jsmith 8 2 I 70 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 936 11 34 jsmith 9 2 I 71 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 937 11 34 jsmith 10 2 I 72 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 938 11 34 jsmith 11 2 I 73 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 939 11 34 jsmith 12 2 I 74 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 940 11 34 jsmith 13 2 I 75 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 941 11 34 jsmith 15 1 G 46 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 942 11 34 jsmith 16 2 I 76 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 943 11 34 jsmith 18 1 G 47 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 944 11 34 jsmith 21 0 G 36 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 945 11 34 jsmith 22 1 G 37 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 0.00 \N \N \N \N 946 11 34 jsmith 23 2 G 38 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 947 11 34 jsmith 24 3 I 47 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 948 11 34 jsmith 25 3 I 46 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 949 11 34 jsmith 26 3 I 48 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 950 11 34 jsmith 27 3 I 49 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 951 11 34 jsmith 28 3 I 50 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 952 11 34 jsmith 29 3 I 51 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 953 11 34 jsmith 31 2 G 39 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 954 11 34 jsmith 32 3 I 140 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 955 11 34 jsmith 35 1 G 40 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 0.00 \N \N \N \N 956 11 34 jsmith 36 2 G 41 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 0.00 \N \N \N \N 957 11 34 jsmith 37 3 I 52 \N 0.00 \N \N \N \N \N \N \N \N 41 \N \N 0.00 \N \N \N \N 958 11 34 jsmith 39 2 G 42 \N 0.00 \N \N \N \N \N \N \N \N 40 \N \N 0.00 \N \N \N \N 959 11 34 jsmith 40 2 G 43 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 0.00 \N \N \N \N 960 11 34 jsmith 41 3 I 63 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 961 11 34 jsmith 42 3 I 64 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 962 11 34 jsmith 14 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 963 11 34 jsmith 17 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 964 11 34 jsmith 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 47 \N \N 0.00 \N \N \N \N 965 11 34 jsmith 20 1 T -1 \N 0.00 \N \N \N \N \N \N \N \N 44 \N \N 0.00 \N \N \N \N 966 11 34 jsmith 30 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 967 11 34 jsmith 33 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 968 11 34 jsmith 34 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 37 \N \N 0.00 \N \N \N \N 969 11 34 jsmith 38 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 41 \N \N 0.00 \N \N \N \N 970 11 34 jsmith 43 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 971 11 34 jsmith 44 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 40 \N \N 0.00 \N \N \N \N 972 11 34 jsmith 45 1 T -1 \N 0.00 \N \N \N \N \N \N \N \N 36 \N \N 0.00 \N \N \N \N 973 11 34 jsmith 46 0 T -1 \N 0.00 \N \N \N \N \N \N \N \N \N \N \N 0.00 \N \N \N \N 974 11 35 jsmith 1 0 G 44 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 975 11 35 jsmith 2 1 G 45 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 976 11 35 jsmith 3 2 I 65 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 977 11 35 jsmith 4 2 I 66 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 978 11 35 jsmith 5 2 I 67 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 979 11 35 jsmith 6 2 I 68 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 980 11 35 jsmith 7 2 I 69 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 981 11 35 jsmith 8 2 I 70 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 982 11 35 jsmith 9 2 I 71 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 983 11 35 jsmith 10 2 I 72 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 984 11 35 jsmith 11 2 I 73 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 985 11 35 jsmith 12 2 I 74 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 986 11 35 jsmith 13 2 I 75 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 987 11 35 jsmith 15 1 G 46 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 988 11 35 jsmith 16 2 I 76 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 989 11 35 jsmith 18 1 G 47 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 990 11 35 jsmith 21 0 G 36 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 991 11 35 jsmith 22 1 G 37 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 0.00 \N \N \N \N 992 11 35 jsmith 23 2 G 38 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 993 11 35 jsmith 24 3 I 47 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 994 11 35 jsmith 25 3 I 46 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 995 11 35 jsmith 26 3 I 48 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 996 11 35 jsmith 27 3 I 49 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 997 11 35 jsmith 28 3 I 50 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 998 11 35 jsmith 29 3 I 51 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 999 11 35 jsmith 31 2 G 39 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 1000 11 35 jsmith 32 3 I 140 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 1001 11 35 jsmith 35 1 G 40 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 0.00 \N \N \N \N 1002 11 35 jsmith 36 2 G 41 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 0.00 \N \N \N \N 1003 11 35 jsmith 37 3 I 52 \N 0.00 \N \N \N \N \N \N \N \N 41 \N \N 0.00 \N \N \N \N 1004 11 35 jsmith 39 2 G 42 \N 0.00 \N \N \N \N \N \N \N \N 40 \N \N 0.00 \N \N \N \N 1005 11 35 jsmith 40 2 G 43 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 0.00 \N \N \N \N 1006 11 35 jsmith 41 3 I 63 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 1007 11 35 jsmith 42 3 I 64 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 1008 11 35 jsmith 14 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1009 11 35 jsmith 17 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 1010 11 35 jsmith 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 47 \N \N 0.00 \N \N \N \N 1011 11 35 jsmith 20 1 T -1 \N 0.00 \N \N \N \N \N \N \N \N 44 \N \N 0.00 \N \N \N \N 1012 11 35 jsmith 30 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1013 11 35 jsmith 33 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 1014 11 35 jsmith 34 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 37 \N \N 0.00 \N \N \N \N 1015 11 35 jsmith 38 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 41 \N \N 0.00 \N \N \N \N 1016 11 35 jsmith 43 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 1017 11 35 jsmith 44 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 40 \N \N 0.00 \N \N \N \N 1018 11 35 jsmith 45 1 T -1 \N 0.00 \N \N \N \N \N \N \N \N 36 \N \N 0.00 \N \N \N \N 1019 11 35 jsmith 46 0 T -1 \N 0.00 \N \N \N \N \N \N \N \N \N \N \N 0.00 \N \N \N \N 1020 11 47 jsmith 1 0 G 44 0.00 15000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 15000.00 \N \N \N \N 1021 11 47 jsmith 2 1 G 45 0.00 15000.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 15000.00 \N \N \N \N 1022 11 47 jsmith 3 2 I 65 \N 8000.00 \N \N \N \N \N \N \N \N 45 \N \N 8000.00 \N \N \N \N 1023 11 47 jsmith 4 2 I 66 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1024 11 47 jsmith 5 2 I 67 \N 7000.00 \N \N \N \N \N \N \N \N 45 \N \N 7000.00 \N \N \N \N 1025 11 47 jsmith 6 2 I 68 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1026 11 47 jsmith 7 2 I 69 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1027 11 47 jsmith 8 2 I 70 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1028 11 47 jsmith 9 2 I 71 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1029 11 47 jsmith 10 2 I 72 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1030 11 47 jsmith 11 2 I 73 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1031 11 47 jsmith 12 2 I 74 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1032 11 47 jsmith 13 2 I 75 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1033 11 47 jsmith 15 1 G 46 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 1034 11 47 jsmith 16 2 I 76 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 1035 11 47 jsmith 18 1 G 47 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 1036 11 47 jsmith 21 0 G 36 0.00 15000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 15000.00 \N \N \N \N 1037 11 47 jsmith 22 1 G 37 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 0.00 \N \N \N \N 1038 11 47 jsmith 23 2 G 38 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 1039 11 47 jsmith 24 3 I 47 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1040 11 47 jsmith 25 3 I 46 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1041 11 47 jsmith 26 3 I 48 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1042 11 47 jsmith 27 3 I 49 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1043 11 47 jsmith 28 3 I 50 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1044 11 47 jsmith 29 3 I 51 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1045 11 47 jsmith 30 3 I 215 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1046 11 47 jsmith 32 2 G 39 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 1047 11 47 jsmith 33 3 I 140 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 1048 11 47 jsmith 36 1 G 40 0.00 15000.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 15000.00 \N \N \N \N 1049 11 47 jsmith 37 2 G 41 0.00 10000.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 10000.00 \N \N \N \N 1050 11 47 jsmith 38 3 I 52 \N 10000.00 \N \N \N \N \N \N \N \N 41 \N \N 10000.00 \N \N \N \N 1051 11 47 jsmith 40 2 G 42 \N 5000.00 \N \N \N \N \N \N \N \N 40 \N \N 5000.00 \N \N \N \N 1052 11 47 jsmith 41 2 G 43 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 0.00 \N \N \N \N 1053 11 47 jsmith 42 3 I 63 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 1054 11 47 jsmith 43 3 I 64 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 1055 11 47 jsmith 14 2 T -1 \N 15000.00 \N \N \N \N \N \N \N \N 45 \N \N 15000.00 \N \N \N \N 1056 11 47 jsmith 17 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 1057 11 47 jsmith 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 47 \N \N 0.00 \N \N \N \N 1058 11 47 jsmith 20 1 T -1 \N 15000.00 \N \N \N \N \N \N \N \N 44 \N \N 15000.00 \N \N \N \N 1059 11 47 jsmith 31 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1060 11 47 jsmith 34 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 1061 11 47 jsmith 35 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 37 \N \N 0.00 \N \N \N \N 1062 11 47 jsmith 39 3 T -1 \N 10000.00 \N \N \N \N \N \N \N \N 41 \N \N 10000.00 \N \N \N \N 1063 11 47 jsmith 44 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 1064 11 47 jsmith 45 2 T -1 \N 15000.00 \N \N \N \N \N \N \N \N 40 \N \N 15000.00 \N \N \N \N 1065 11 47 jsmith 46 1 T -1 \N 15000.00 \N \N \N \N \N \N \N \N 36 \N \N 15000.00 \N \N \N \N 1066 11 47 jsmith 47 0 T -1 \N 0.00 \N \N \N \N \N \N \N \N \N \N \N 0.00 \N \N \N \N 1067 11 48 jsmith 1 0 G 44 0.00 18000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 18000.00 \N \N \N \N 1068 11 48 jsmith 2 1 G 45 0.00 18000.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 18000.00 \N \N \N \N 1069 11 48 jsmith 3 2 I 65 \N 14000.00 \N \N \N \N \N \N \N \N 45 \N \N 14000.00 \N \N \N \N 1070 11 48 jsmith 4 2 I 66 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1071 11 48 jsmith 5 2 I 67 \N 4000.00 \N \N \N \N \N \N \N \N 45 \N \N 4000.00 \N \N \N \N 1072 11 48 jsmith 6 2 I 68 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1073 11 48 jsmith 7 2 I 69 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1074 11 48 jsmith 8 2 I 70 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1075 11 48 jsmith 9 2 I 71 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1076 11 48 jsmith 10 2 I 72 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1077 11 48 jsmith 11 2 I 73 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1078 11 48 jsmith 12 2 I 74 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1079 11 48 jsmith 13 2 I 75 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1080 11 48 jsmith 15 1 G 46 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 1081 11 48 jsmith 16 2 I 76 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 1082 11 48 jsmith 18 1 G 47 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 1083 11 48 jsmith 21 0 G 36 0.00 18000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 18000.00 \N \N \N \N 1084 11 48 jsmith 22 1 G 37 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 0.00 \N \N \N \N 1085 11 48 jsmith 23 2 G 38 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 1086 11 48 jsmith 24 3 I 47 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1087 11 48 jsmith 25 3 I 46 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1088 11 48 jsmith 26 3 I 48 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1089 11 48 jsmith 27 3 I 49 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1090 11 48 jsmith 28 3 I 50 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1091 11 48 jsmith 29 3 I 51 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1092 11 48 jsmith 30 3 I 215 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1093 11 48 jsmith 32 2 G 39 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 1094 11 48 jsmith 33 3 I 140 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 1095 11 48 jsmith 36 1 G 40 0.00 18000.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 18000.00 \N \N \N \N 1096 11 48 jsmith 37 2 G 41 0.00 10000.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 10000.00 \N \N \N \N 1097 11 48 jsmith 38 3 I 52 \N 10000.00 \N \N \N \N \N \N \N \N 41 \N \N 10000.00 \N \N \N \N 1098 11 48 jsmith 40 2 G 42 \N 3000.00 \N \N \N \N \N \N \N \N 40 \N \N 3000.00 \N \N \N \N 1099 11 48 jsmith 41 2 G 43 0.00 5000.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 5000.00 \N \N \N \N 1100 11 48 jsmith 42 3 I 63 \N 5000.00 \N \N \N \N \N \N \N \N 43 \N \N 5000.00 \N \N \N \N 1101 11 48 jsmith 43 3 I 64 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 1102 11 48 jsmith 14 2 T -1 \N 18000.00 \N \N \N \N \N \N \N \N 45 \N \N 18000.00 \N \N \N \N 1103 11 48 jsmith 17 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 1104 11 48 jsmith 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 47 \N \N 0.00 \N \N \N \N 1105 11 48 jsmith 20 1 T -1 \N 18000.00 \N \N \N \N \N \N \N \N 44 \N \N 18000.00 \N \N \N \N 1106 11 48 jsmith 31 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1107 11 48 jsmith 34 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 1108 11 48 jsmith 35 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 37 \N \N 0.00 \N \N \N \N 1109 11 48 jsmith 39 3 T -1 \N 10000.00 \N \N \N \N \N \N \N \N 41 \N \N 10000.00 \N \N \N \N 1110 11 48 jsmith 44 3 T -1 \N 5000.00 \N \N \N \N \N \N \N \N 43 \N \N 5000.00 \N \N \N \N 1111 11 48 jsmith 45 2 T -1 \N 18000.00 \N \N \N \N \N \N \N \N 40 \N \N 18000.00 \N \N \N \N 1112 11 48 jsmith 46 1 T -1 \N 18000.00 \N \N \N \N \N \N \N \N 36 \N \N 18000.00 \N \N \N \N 1113 11 48 jsmith 47 0 T -1 \N 0.00 \N \N \N \N \N \N \N \N \N \N \N 0.00 \N \N \N \N 1114 11 46 jsmith 1 0 G 44 0.00 39000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 39000.00 \N \N \N \N 1115 11 46 jsmith 2 1 G 45 0.00 39000.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 39000.00 \N \N \N \N 1116 11 46 jsmith 3 2 I 65 \N 36000.00 \N \N \N \N \N \N \N \N 45 \N \N 36000.00 \N \N \N \N 1117 11 46 jsmith 4 2 I 66 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1118 11 46 jsmith 5 2 I 67 \N 3000.00 \N \N \N \N \N \N \N \N 45 \N \N 3000.00 \N \N \N \N 1119 11 46 jsmith 6 2 I 68 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1120 11 46 jsmith 7 2 I 69 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1121 11 46 jsmith 8 2 I 70 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1122 11 46 jsmith 9 2 I 71 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1123 11 46 jsmith 10 2 I 72 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1124 11 46 jsmith 11 2 I 73 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1125 11 46 jsmith 12 2 I 74 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1126 11 46 jsmith 13 2 I 75 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1127 11 46 jsmith 15 1 G 46 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 1128 11 46 jsmith 16 2 I 76 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 1129 11 46 jsmith 18 1 G 47 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 1130 11 46 jsmith 21 0 G 36 0.00 39000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 39000.00 \N \N \N \N 1131 11 46 jsmith 22 1 G 37 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 0.00 \N \N \N \N 1132 11 46 jsmith 23 2 G 38 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 1133 11 46 jsmith 24 3 I 47 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1134 11 46 jsmith 25 3 I 46 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1135 11 46 jsmith 26 3 I 48 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1136 11 46 jsmith 27 3 I 49 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1137 11 46 jsmith 28 3 I 50 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1138 11 46 jsmith 29 3 I 51 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1139 11 46 jsmith 30 3 I 215 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1140 11 46 jsmith 32 2 G 39 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 1141 11 46 jsmith 33 3 I 140 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 1142 11 46 jsmith 36 1 G 40 0.00 39000.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 39000.00 \N \N \N \N 1143 11 46 jsmith 37 2 G 41 0.00 20000.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 20000.00 \N \N \N \N 1144 11 46 jsmith 38 3 I 52 \N 20000.00 \N \N \N \N \N \N \N \N 41 \N \N 20000.00 \N \N \N \N 1145 11 46 jsmith 40 2 G 42 \N 14000.00 \N \N \N \N \N \N \N \N 40 \N \N 14000.00 \N \N \N \N 1146 11 46 jsmith 41 2 G 43 0.00 5000.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 5000.00 \N \N \N \N 1147 11 46 jsmith 42 3 I 63 \N 5000.00 \N \N \N \N \N \N \N \N 43 \N \N 5000.00 \N \N \N \N 1148 11 46 jsmith 43 3 I 64 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 1149 11 46 jsmith 14 2 T -1 \N 39000.00 \N \N \N \N \N \N \N \N 45 \N \N 39000.00 \N \N \N \N 1150 11 46 jsmith 17 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 1151 11 46 jsmith 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 47 \N \N 0.00 \N \N \N \N 1152 11 46 jsmith 20 1 T -1 \N 39000.00 \N \N \N \N \N \N \N \N 44 \N \N 39000.00 \N \N \N \N 1153 11 46 jsmith 31 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1154 11 46 jsmith 34 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 1155 11 46 jsmith 35 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 37 \N \N 0.00 \N \N \N \N 1156 11 46 jsmith 39 3 T -1 \N 20000.00 \N \N \N \N \N \N \N \N 41 \N \N 20000.00 \N \N \N \N 1157 11 46 jsmith 44 3 T -1 \N 5000.00 \N \N \N \N \N \N \N \N 43 \N \N 5000.00 \N \N \N \N 1158 11 46 jsmith 45 2 T -1 \N 39000.00 \N \N \N \N \N \N \N \N 40 \N \N 39000.00 \N \N \N \N 1159 11 46 jsmith 46 1 T -1 \N 39000.00 \N \N \N \N \N \N \N \N 36 \N \N 39000.00 \N \N \N \N 1160 11 46 jsmith 47 0 T -1 \N 0.00 \N \N \N \N \N \N \N \N \N \N \N 0.00 \N \N \N \N 1161 11 29 jsmith 1 0 G 44 0.00 40000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 40000.00 \N \N \N \N 1162 11 29 jsmith 2 1 G 45 0.00 40000.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 40000.00 \N \N \N \N 1163 11 29 jsmith 3 2 I 65 \N 38000.00 \N \N \N \N \N \N \N \N 45 \N \N 38000.00 \N \N \N \N 1164 11 29 jsmith 4 2 I 66 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1165 11 29 jsmith 5 2 I 67 \N 2000.00 \N \N \N \N \N \N \N \N 45 \N \N 2000.00 \N \N \N \N 1166 11 29 jsmith 6 2 I 68 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1167 11 29 jsmith 7 2 I 69 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1168 11 29 jsmith 8 2 I 70 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1169 11 29 jsmith 9 2 I 71 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1170 11 29 jsmith 10 2 I 72 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1171 11 29 jsmith 11 2 I 73 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1172 11 29 jsmith 12 2 I 74 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1173 11 29 jsmith 13 2 I 75 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1174 11 29 jsmith 15 1 G 46 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 1175 11 29 jsmith 16 2 I 76 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 1176 11 29 jsmith 18 1 G 47 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 1177 11 29 jsmith 21 0 G 36 0.00 40000.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 40000.00 \N \N \N \N 1178 11 29 jsmith 22 1 G 37 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 0.00 \N \N \N \N 1179 11 29 jsmith 23 2 G 38 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 1180 11 29 jsmith 24 3 I 47 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1181 11 29 jsmith 25 3 I 46 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1182 11 29 jsmith 26 3 I 48 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1183 11 29 jsmith 27 3 I 49 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1184 11 29 jsmith 28 3 I 50 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1185 11 29 jsmith 29 3 I 51 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1186 11 29 jsmith 30 3 I 215 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1187 11 29 jsmith 32 2 G 39 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 1188 11 29 jsmith 33 3 I 140 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 1189 11 29 jsmith 36 1 G 40 0.00 40000.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 40000.00 \N \N \N \N 1190 11 29 jsmith 37 2 G 41 0.00 20000.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 20000.00 \N \N \N \N 1191 11 29 jsmith 38 3 I 52 \N 20000.00 \N \N \N \N \N \N \N \N 41 \N \N 20000.00 \N \N \N \N 1192 11 29 jsmith 40 2 G 42 \N 15000.00 \N \N \N \N \N \N \N \N 40 \N \N 15000.00 \N \N \N \N 1193 11 29 jsmith 41 2 G 43 0.00 5000.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 5000.00 \N \N \N \N 1194 11 29 jsmith 42 3 I 63 \N 5000.00 \N \N \N \N \N \N \N \N 43 \N \N 5000.00 \N \N \N \N 1195 11 29 jsmith 43 3 I 64 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 1196 11 29 jsmith 14 2 T -1 \N 40000.00 \N \N \N \N \N \N \N \N 45 \N \N 40000.00 \N \N \N \N 1197 11 29 jsmith 17 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 1198 11 29 jsmith 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 47 \N \N 0.00 \N \N \N \N 1199 11 29 jsmith 20 1 T -1 \N 40000.00 \N \N \N \N \N \N \N \N 44 \N \N 40000.00 \N \N \N \N 1200 11 29 jsmith 31 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1201 11 29 jsmith 34 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 1202 11 29 jsmith 35 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 37 \N \N 0.00 \N \N \N \N 1203 11 29 jsmith 39 3 T -1 \N 20000.00 \N \N \N \N \N \N \N \N 41 \N \N 20000.00 \N \N \N \N 1204 11 29 jsmith 44 3 T -1 \N 5000.00 \N \N \N \N \N \N \N \N 43 \N \N 5000.00 \N \N \N \N 1205 11 29 jsmith 45 2 T -1 \N 40000.00 \N \N \N \N \N \N \N \N 40 \N \N 40000.00 \N \N \N \N 1206 11 29 jsmith 46 1 T -1 \N 40000.00 \N \N \N \N \N \N \N \N 36 \N \N 40000.00 \N \N \N \N 1207 11 29 jsmith 47 0 T -1 \N 0.00 \N \N \N \N \N \N \N \N \N \N \N 0.00 \N \N \N \N 1208 11 28 jsmith 4 2 I 66 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1209 11 28 jsmith 1 0 G 44 0.00 1044286.24 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 1044286.24 \N \N \N \N 1210 11 28 jsmith 2 1 G 45 0.00 1044286.24 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 1044286.24 \N \N \N \N 1211 11 28 jsmith 3 2 I 65 \N 1029222.11 \N \N \N \N \N \N \N \N 45 \N \N 1029222.11 \N \N \N \N 1212 11 28 jsmith 5 2 I 67 \N 21195.81 \N \N \N \N \N \N \N \N 45 \N \N 21195.81 \N \N \N \N 1213 11 28 jsmith 6 2 I 68 \N -1.06 \N \N \N \N \N \N \N \N 45 \N \N -1.06 \N \N \N \N 1214 11 28 jsmith 7 2 I 69 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1215 11 28 jsmith 8 2 I 70 \N -76.85 \N \N \N \N \N \N \N \N 45 \N \N -76.85 \N \N \N \N 1216 11 28 jsmith 9 2 I 71 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1217 11 28 jsmith 10 2 I 72 \N -6053.79 \N \N \N \N \N \N \N \N 45 \N \N -6053.79 \N \N \N \N 1218 11 28 jsmith 11 2 I 73 \N 0.02 \N \N \N \N \N \N \N \N 45 \N \N 0.02 \N \N \N \N 1219 11 28 jsmith 12 2 I 74 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1220 11 28 jsmith 13 2 I 75 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1221 11 28 jsmith 15 1 G 46 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 1222 11 28 jsmith 16 2 I 76 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 1223 11 28 jsmith 18 1 G 47 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 1224 11 28 jsmith 21 0 G 36 0.00 1044286.24 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 1044286.24 \N \N \N \N 1225 11 28 jsmith 22 1 G 37 0.00 829.11 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 829.11 \N \N \N \N 1226 11 28 jsmith 23 2 G 38 0.00 829.11 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 829.11 \N \N \N \N 1227 11 28 jsmith 24 3 I 47 \N 250.00 \N \N \N \N \N \N \N \N 38 \N \N 250.00 \N \N \N \N 1228 11 28 jsmith 25 3 I 46 \N 151.99 \N \N \N \N \N \N \N \N 38 \N \N 151.99 \N \N \N \N 1229 11 28 jsmith 26 3 I 48 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1230 11 28 jsmith 27 3 I 49 \N 216.74 \N \N \N \N \N \N \N \N 38 \N \N 216.74 \N \N \N \N 1231 11 28 jsmith 28 3 I 50 \N 238.77 \N \N \N \N \N \N \N \N 38 \N \N 238.77 \N \N \N \N 1232 11 28 jsmith 29 3 I 51 \N -28.39 \N \N \N \N \N \N \N \N 38 \N \N -28.39 \N \N \N \N 1233 11 28 jsmith 30 3 I 215 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1234 11 28 jsmith 32 2 G 39 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 1235 11 28 jsmith 33 3 I 140 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 1236 11 28 jsmith 36 1 G 40 0.00 1043457.13 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 1043457.13 \N \N \N \N 1237 11 28 jsmith 37 2 G 41 0.00 1020000.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 1020000.00 \N \N \N \N 1238 11 28 jsmith 38 3 I 52 \N 1020000.00 \N \N \N \N \N \N \N \N 41 \N \N 1020000.00 \N \N \N \N 1239 11 28 jsmith 40 2 G 42 \N 18457.13 \N \N \N \N \N \N \N \N 40 \N \N 18457.13 \N \N \N \N 1240 11 28 jsmith 41 2 G 43 0.00 5000.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 5000.00 \N \N \N \N 1241 11 28 jsmith 42 3 I 63 \N 5000.00 \N \N \N \N \N \N \N \N 43 \N \N 5000.00 \N \N \N \N 1242 11 28 jsmith 43 3 I 64 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 1243 11 28 jsmith 14 2 T -1 \N 1044286.24 \N \N \N \N \N \N \N \N 45 \N \N 1044286.24 \N \N \N \N 1244 11 28 jsmith 17 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 1245 11 28 jsmith 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 47 \N \N 0.00 \N \N \N \N 1246 11 28 jsmith 20 1 T -1 \N 1044286.24 \N \N \N \N \N \N \N \N 44 \N \N 1044286.24 \N \N \N \N 1247 11 28 jsmith 31 3 T -1 \N 829.11 \N \N \N \N \N \N \N \N 38 \N \N 829.11 \N \N \N \N 1248 11 28 jsmith 34 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 1249 11 28 jsmith 35 2 T -1 \N 829.11 \N \N \N \N \N \N \N \N 37 \N \N 829.11 \N \N \N \N 1250 11 28 jsmith 39 3 T -1 \N 1020000.00 \N \N \N \N \N \N \N \N 41 \N \N 1020000.00 \N \N \N \N 1251 11 28 jsmith 44 3 T -1 \N 5000.00 \N \N \N \N \N \N \N \N 43 \N \N 5000.00 \N \N \N \N 1252 11 28 jsmith 45 2 T -1 \N 1043457.13 \N \N \N \N \N \N \N \N 40 \N \N 1043457.13 \N \N \N \N 1253 11 28 jsmith 46 1 T -1 \N 1044286.24 \N \N \N \N \N \N \N \N 36 \N \N 1044286.24 \N \N \N \N 1254 11 28 jsmith 47 0 T -1 \N 0.00 \N \N \N \N \N \N \N \N \N \N \N 0.00 \N \N \N \N 1255 11 30 jsmith 1 0 G 44 0.00 1053916.70 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 1053916.70 \N \N \N \N 1256 11 30 jsmith 2 1 G 45 0.00 1052916.70 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 1052916.70 \N \N \N \N 1257 11 30 jsmith 3 2 I 65 \N 1038296.40 \N \N \N \N \N \N \N \N 45 \N \N 1038296.40 \N \N \N \N 1258 11 30 jsmith 4 2 I 66 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1259 11 30 jsmith 5 2 I 67 \N 79945.44 \N \N \N \N \N \N \N \N 45 \N \N 79945.44 \N \N \N \N 1260 11 30 jsmith 6 2 I 68 \N -6.01 \N \N \N \N \N \N \N \N 45 \N \N -6.01 \N \N \N \N 1261 11 30 jsmith 7 2 I 69 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1262 11 30 jsmith 8 2 I 70 \N -59430.98 \N \N \N \N \N \N \N \N 45 \N \N -59430.98 \N \N \N \N 1263 11 30 jsmith 9 2 I 71 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1264 11 30 jsmith 10 2 I 72 \N -5912.79 \N \N \N \N \N \N \N \N 45 \N \N -5912.79 \N \N \N \N 1265 11 30 jsmith 11 2 I 73 \N 24.64 \N \N \N \N \N \N \N \N 45 \N \N 24.64 \N \N \N \N 1266 11 30 jsmith 12 2 I 74 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1267 11 30 jsmith 13 2 I 75 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1268 11 30 jsmith 15 1 G 46 0.00 1000.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 1000.00 \N \N \N \N 1269 11 30 jsmith 16 2 I 76 \N 1000.00 \N \N \N \N \N \N \N \N 46 \N \N 1000.00 \N \N \N \N 1270 11 30 jsmith 18 1 G 47 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 1271 11 30 jsmith 21 0 G 36 0.00 1053916.70 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 1053916.70 \N \N \N \N 1272 11 30 jsmith 22 1 G 37 0.00 5990.10 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 5990.10 \N \N \N \N 1273 11 30 jsmith 23 2 G 38 0.00 990.10 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 990.10 \N \N \N \N 1274 11 30 jsmith 24 3 I 47 \N -0.40 \N \N \N \N \N \N \N \N 38 \N \N -0.40 \N \N \N \N 1275 11 30 jsmith 25 3 I 46 \N 313.13 \N \N \N \N \N \N \N \N 38 \N \N 313.13 \N \N \N \N 1276 11 30 jsmith 26 3 I 48 \N -125.00 \N \N \N \N \N \N \N \N 38 \N \N -125.00 \N \N \N \N 1277 11 30 jsmith 27 3 I 49 \N 397.22 \N \N \N \N \N \N \N \N 38 \N \N 397.22 \N \N \N \N 1278 11 30 jsmith 28 3 I 50 \N 456.04 \N \N \N \N \N \N \N \N 38 \N \N 456.04 \N \N \N \N 1279 11 30 jsmith 29 3 I 51 \N -50.89 \N \N \N \N \N \N \N \N 38 \N \N -50.89 \N \N \N \N 1280 11 30 jsmith 30 3 I 215 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 1281 11 30 jsmith 32 2 G 39 0.00 5000.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 5000.00 \N \N \N \N 1282 11 30 jsmith 33 3 I 140 \N 5000.00 \N \N \N \N \N \N \N \N 39 \N \N 5000.00 \N \N \N \N 1283 11 30 jsmith 36 1 G 40 0.00 1047926.60 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 1047926.60 \N \N \N \N 1284 11 30 jsmith 37 2 G 41 0.00 1020000.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 1020000.00 \N \N \N \N 1285 11 30 jsmith 38 3 I 52 \N 1020000.00 \N \N \N \N \N \N \N \N 41 \N \N 1020000.00 \N \N \N \N 1286 11 30 jsmith 40 2 G 42 \N 4469.47 \N \N \N \N \N \N \N \N 40 \N \N 4469.47 \N \N \N \N 1287 11 30 jsmith 41 2 G 43 0.00 23457.13 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 23457.13 \N \N \N \N 1288 11 30 jsmith 42 3 I 63 \N 23457.13 \N \N \N \N \N \N \N \N 43 \N \N 23457.13 \N \N \N \N 1289 11 30 jsmith 43 3 I 64 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 1290 11 30 jsmith 14 2 T -1 \N 1052916.70 \N \N \N \N \N \N \N \N 45 \N \N 1052916.70 \N \N \N \N 1291 11 30 jsmith 17 2 T -1 \N 1000.00 \N \N \N \N \N \N \N \N 46 \N \N 1000.00 \N \N \N \N 1292 11 30 jsmith 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 47 \N \N 0.00 \N \N \N \N 1293 11 30 jsmith 20 1 T -1 \N 1053916.70 \N \N \N \N \N \N \N \N 44 \N \N 1053916.70 \N \N \N \N 1294 11 30 jsmith 31 3 T -1 \N 990.10 \N \N \N \N \N \N \N \N 38 \N \N 990.10 \N \N \N \N 1295 11 30 jsmith 34 3 T -1 \N 5000.00 \N \N \N \N \N \N \N \N 39 \N \N 5000.00 \N \N \N \N 1296 11 30 jsmith 35 2 T -1 \N 5990.10 \N \N \N \N \N \N \N \N 37 \N \N 5990.10 \N \N \N \N 1297 11 30 jsmith 39 3 T -1 \N 1020000.00 \N \N \N \N \N \N \N \N 41 \N \N 1020000.00 \N \N \N \N 1298 11 30 jsmith 44 3 T -1 \N 23457.13 \N \N \N \N \N \N \N \N 43 \N \N 23457.13 \N \N \N \N 1299 11 30 jsmith 45 2 T -1 \N 1047926.60 \N \N \N \N \N \N \N \N 40 \N \N 1047926.60 \N \N \N \N 1300 11 30 jsmith 46 1 T -1 \N 1053916.70 \N \N \N \N \N \N \N \N 36 \N \N 1053916.70 \N \N \N \N 1301 11 30 jsmith 47 0 T -1 \N 0.00 \N \N \N \N \N \N \N \N \N \N \N 0.00 \N \N \N \N 1302 4 47 jsmith 1 0 G 3 0.00 6000.00 0.00 0.00 0.00 \N 0.66666666666666666667 \N \N 0.00000000000000000000 -1 6000.00 0.66666666666666666667 6000.00 0.66666666666666666667 \N \N \N 1303 4 47 jsmith 2 1 G 4 0.00 9000.00 0.00 0.00 0.00 \N \N \N \N \N 3 9000.00 1.00000000000000000000 9000.00 1.00000000000000000000 \N \N \N 1304 4 47 jsmith 3 2 I 2 0.00 9000.00 \N \N 0.00 \N 1.00000000000000000000 \N \N 0.00000000000000000000 4 9000.00 1.00000000000000000000 9000.00 1.00000000000000000000 \N \N \N 1305 4 47 jsmith 4 2 I 3 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1306 4 47 jsmith 6 1 G 5 0.00 -3000.00 0.00 0.00 0.00 \N \N \N \N \N 3 -3000.00 \N -3000.00 \N \N \N \N 1307 4 47 jsmith 7 2 I 4 \N 3000.00 \N \N 0.00 \N 0.33333333333333333333 \N \N 0.00000000000000000000 5 3000.00 0.33333333333333333333 3000.00 0.33333333333333333333 \N \N \N 1308 4 47 jsmith 8 1 G 6 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 0.00 \N 0.00 \N \N \N \N 1309 4 47 jsmith 10 0 G 7 0.00 1000.00 0.00 0.00 0.00 \N \N \N \N \N -1 1000.00 \N 1000.00 \N \N \N \N 1310 4 47 jsmith 11 1 G 8 0.00 1000.00 0.00 0.00 0.00 \N 0.11111111111111111111 \N \N 0.00000000000000000000 7 1000.00 0.11111111111111111111 1000.00 0.11111111111111111111 \N \N \N 1311 4 47 jsmith 12 2 I 5 \N 1000.00 \N \N 0.00 \N 0.11111111111111111111 \N \N 0.00000000000000000000 8 1000.00 0.11111111111111111111 1000.00 0.11111111111111111111 \N \N \N 1312 4 47 jsmith 13 2 I 6 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1313 4 47 jsmith 14 2 I 7 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1314 4 47 jsmith 15 2 I 8 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1315 4 47 jsmith 16 2 I 9 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1316 4 47 jsmith 17 2 I 10 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1317 4 47 jsmith 18 2 I 11 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1318 4 47 jsmith 20 0 G 9 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 1319 4 47 jsmith 5 2 T -1 \N 9000.00 \N \N \N \N \N \N \N \N 4 9000.00 1.00000000000000000000 9000.00 1.00000000000000000000 \N \N \N 1320 4 47 jsmith 9 1 T -1 \N 6000.00 \N \N 0.00 \N 0.66666666666666666667 \N \N 0.00000000000000000000 3 6000.00 0.66666666666666666667 6000.00 0.66666666666666666667 \N \N \N 1321 4 47 jsmith 19 2 T -1 \N 1000.00 \N \N 0.00 \N 0.11111111111111111111 \N \N 0.00000000000000000000 8 1000.00 0.11111111111111111111 1000.00 0.11111111111111111111 \N \N \N 1322 4 47 jsmith 21 0 T -1 0.00 5000.00 \N \N 0.00 \N \N \N \N \N \N 5000.00 \N 5000.00 \N \N \N \N 1323 4 48 jsmith 1 0 G 3 0.00 3000.00 0.00 0.00 0.00 \N 0.50000000000000000000 \N \N 0.00000000000000000000 -1 3000.00 0.50000000000000000000 3000.00 0.50000000000000000000 \N \N \N 1324 4 48 jsmith 2 1 G 4 0.00 6000.00 0.00 0.00 0.00 \N \N \N \N \N 3 6000.00 1.00000000000000000000 6000.00 1.00000000000000000000 \N \N \N 1325 4 48 jsmith 3 2 I 2 0.00 6000.00 \N \N 0.00 \N 1.00000000000000000000 \N \N 0.00000000000000000000 4 6000.00 1.00000000000000000000 6000.00 1.00000000000000000000 \N \N \N 1326 4 48 jsmith 4 2 I 3 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1327 4 48 jsmith 6 1 G 5 0.00 -3000.00 0.00 0.00 0.00 \N \N \N \N \N 3 -3000.00 \N -3000.00 \N \N \N \N 1328 4 48 jsmith 7 2 I 4 \N 3000.00 \N \N 0.00 \N 0.50000000000000000000 \N \N 0.00000000000000000000 5 3000.00 0.50000000000000000000 3000.00 0.50000000000000000000 \N \N \N 1329 4 48 jsmith 8 1 G 6 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 0.00 \N 0.00 \N \N \N \N 1330 4 48 jsmith 10 0 G 7 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 1331 4 48 jsmith 11 1 G 8 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1332 4 48 jsmith 12 2 I 5 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1333 4 48 jsmith 13 2 I 6 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1334 4 48 jsmith 14 2 I 7 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1335 4 48 jsmith 15 2 I 8 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1336 4 48 jsmith 16 2 I 9 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1337 4 48 jsmith 17 2 I 10 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1338 4 48 jsmith 18 2 I 11 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1339 4 48 jsmith 20 0 G 9 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 1340 4 48 jsmith 5 2 T -1 \N 6000.00 \N \N \N \N \N \N \N \N 4 6000.00 1.00000000000000000000 6000.00 1.00000000000000000000 \N \N \N 1341 4 48 jsmith 9 1 T -1 \N 3000.00 \N \N 0.00 \N 0.50000000000000000000 \N \N 0.00000000000000000000 3 3000.00 0.50000000000000000000 3000.00 0.50000000000000000000 \N \N \N 1342 4 48 jsmith 19 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1343 4 48 jsmith 21 0 T -1 0.00 3000.00 \N \N 0.00 \N \N \N \N \N \N 3000.00 \N 3000.00 \N \N \N \N 1344 4 46 jsmith 1 0 G 3 6000.00 14000.00 0.00 0.00 0.00 \N 0.77777777777777777778 \N \N 0.00000000000000000000 -1 11000.00 0.91666666666666666667 11000.00 0.91666666666666666667 \N \N \N 1345 4 46 jsmith 2 1 G 4 6000.00 18000.00 0.00 0.00 0.00 \N \N \N \N \N 3 12000.00 1.00000000000000000000 12000.00 1.00000000000000000000 \N \N \N 1346 4 46 jsmith 3 2 I 2 6000.00 18000.00 \N \N 0.00 \N 1.00000000000000000000 \N \N 0.00000000000000000000 4 12000.00 1.00000000000000000000 12000.00 1.00000000000000000000 \N \N \N 1347 4 46 jsmith 4 2 I 3 \N 0.00 \N \N 0.00 \N 0.000000000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.000000000000000000000000 0.00 0.000000000000000000000000 \N \N \N 1348 4 46 jsmith 6 1 G 5 0.00 -4000.00 0.00 0.00 0.00 \N \N \N \N \N 3 -1000.00 \N -1000.00 \N \N \N \N 1349 4 46 jsmith 7 2 I 4 \N 4000.00 \N \N 0.00 \N 0.22222222222222222222 \N \N 0.00000000000000000000 5 1000.00 0.08333333333333333333 1000.00 0.08333333333333333333 \N \N \N 1350 4 46 jsmith 8 1 G 6 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 0.00 \N 0.00 \N \N \N \N 1351 4 46 jsmith 10 0 G 7 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 1352 4 46 jsmith 11 1 G 8 0.00 0.00 0.00 0.00 0.00 \N 0.000000000000000000000000 \N \N 0.00000000000000000000 7 0.00 0.000000000000000000000000 0.00 0.000000000000000000000000 \N \N \N 1353 4 46 jsmith 12 2 I 5 \N 0.00 \N \N 0.00 \N 0.000000000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.000000000000000000000000 0.00 0.000000000000000000000000 \N \N \N 1354 4 46 jsmith 13 2 I 6 \N 0.00 \N \N 0.00 \N 0.000000000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.000000000000000000000000 0.00 0.000000000000000000000000 \N \N \N 1355 4 46 jsmith 14 2 I 7 \N 0.00 \N \N 0.00 \N 0.000000000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.000000000000000000000000 0.00 0.000000000000000000000000 \N \N \N 1356 4 46 jsmith 15 2 I 8 \N 0.00 \N \N 0.00 \N 0.000000000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.000000000000000000000000 0.00 0.000000000000000000000000 \N \N \N 1357 4 46 jsmith 16 2 I 9 \N 0.00 \N \N 0.00 \N 0.000000000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.000000000000000000000000 0.00 0.000000000000000000000000 \N \N \N 1358 4 46 jsmith 17 2 I 10 \N 0.00 \N \N 0.00 \N 0.000000000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.000000000000000000000000 0.00 0.000000000000000000000000 \N \N \N 1359 4 46 jsmith 18 2 I 11 \N 0.00 \N \N 0.00 \N 0.000000000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.000000000000000000000000 0.00 0.000000000000000000000000 \N \N \N 1360 4 46 jsmith 20 0 G 9 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 1361 4 46 jsmith 5 2 T -1 \N 18000.00 \N \N \N \N \N \N \N \N 4 12000.00 1.00000000000000000000 12000.00 1.00000000000000000000 \N \N \N 1362 4 46 jsmith 9 1 T -1 \N 14000.00 \N \N 0.00 \N 0.77777777777777777778 \N \N 0.00000000000000000000 3 11000.00 0.91666666666666666667 11000.00 0.91666666666666666667 \N \N \N 1363 4 46 jsmith 19 2 T -1 \N 0.00 \N \N 0.00 \N 0.000000000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.000000000000000000000000 0.00 0.000000000000000000000000 \N \N \N 1364 4 46 jsmith 21 0 T -1 6000.00 14000.00 \N \N 0.00 \N \N \N \N \N \N 11000.00 \N 11000.00 \N \N \N \N 1365 4 29 jsmith 1 0 G 3 18000.00 15500.00 0.00 0.00 0.00 \N 0.75609756097560975610 \N \N 0.00000000000000000000 -1 1500.00 0.60000000000000000000 1500.00 0.60000000000000000000 \N \N \N 1366 4 29 jsmith 2 1 G 4 18000.00 20500.00 0.00 0.00 0.00 \N \N \N \N \N 3 2500.00 1.00000000000000000000 2500.00 1.00000000000000000000 \N \N \N 1367 4 29 jsmith 3 2 I 2 18000.00 20500.00 \N \N 0.00 \N 1.00000000000000000000 \N \N 0.00000000000000000000 4 2500.00 1.00000000000000000000 2500.00 1.00000000000000000000 \N \N \N 1368 4 29 jsmith 4 2 I 3 \N 0.00 \N \N 0.00 \N 0.000000000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1369 4 29 jsmith 6 1 G 5 0.00 -5000.00 0.00 0.00 0.00 \N \N \N \N \N 3 -1000.00 \N -1000.00 \N \N \N \N 1370 4 29 jsmith 7 2 I 4 \N 5000.00 \N \N 0.00 \N 0.24390243902439024390 \N \N 0.00000000000000000000 5 1000.00 0.40000000000000000000 1000.00 0.40000000000000000000 \N \N \N 1371 4 29 jsmith 8 1 G 6 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 0.00 \N 0.00 \N \N \N \N 1372 4 29 jsmith 10 0 G 7 0.00 500.00 0.00 0.00 0.00 \N \N \N \N \N -1 500.00 \N 500.00 \N \N \N \N 1373 4 29 jsmith 11 1 G 8 0.00 500.00 0.00 0.00 0.00 \N 0.02439024390243902439 \N \N 0.00000000000000000000 7 500.00 0.20000000000000000000 500.00 0.20000000000000000000 \N \N \N 1374 4 29 jsmith 12 2 I 5 \N 500.00 \N \N 0.00 \N 0.02439024390243902439 \N \N 0.00000000000000000000 8 500.00 0.20000000000000000000 500.00 0.20000000000000000000 \N \N \N 1375 4 29 jsmith 13 2 I 6 \N 0.00 \N \N 0.00 \N 0.000000000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1376 4 29 jsmith 14 2 I 7 \N 0.00 \N \N 0.00 \N 0.000000000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1377 4 29 jsmith 15 2 I 8 \N 0.00 \N \N 0.00 \N 0.000000000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1378 4 29 jsmith 16 2 I 9 \N 0.00 \N \N 0.00 \N 0.000000000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1379 4 29 jsmith 17 2 I 10 \N 0.00 \N \N 0.00 \N 0.000000000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1380 4 29 jsmith 18 2 I 11 \N 0.00 \N \N 0.00 \N 0.000000000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1381 4 29 jsmith 20 0 G 9 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 1382 4 29 jsmith 5 2 T -1 \N 20500.00 \N \N \N \N \N \N \N \N 4 2500.00 1.00000000000000000000 2500.00 1.00000000000000000000 \N \N \N 1383 4 29 jsmith 9 1 T -1 \N 15500.00 \N \N 0.00 \N 0.75609756097560975610 \N \N 0.00000000000000000000 3 1500.00 0.60000000000000000000 1500.00 0.60000000000000000000 \N \N \N 1384 4 29 jsmith 19 2 T -1 \N 500.00 \N \N 0.00 \N 0.02439024390243902439 \N \N 0.00000000000000000000 8 500.00 0.20000000000000000000 500.00 0.20000000000000000000 \N \N \N 1385 4 29 jsmith 21 0 T -1 18000.00 15000.00 \N \N 0.00 \N \N \N \N \N \N 1000.00 \N 1000.00 \N \N \N \N 1386 4 28 jsmith 1 0 G 3 20500.00 19203.19 0.00 0.00 0.00 \N 0.75198695206096347987 \N \N 0.00000000000000000000 -1 3703.19 0.73525592661716237144 3703.19 0.73525592661716237144 \N \N \N 1387 4 28 jsmith 2 1 G 4 20500.00 25536.60 0.00 0.00 0.00 \N \N \N \N \N 3 5036.60 1.00000000000000000000 5036.60 1.00000000000000000000 \N \N \N 1388 4 28 jsmith 3 2 I 2 20500.00 25255.20 \N \N 0.00 \N 0.98898052207419938441 \N \N 0.00000000000000000000 4 4755.20 0.94412897589643807330 4755.20 0.94412897589643807330 \N \N \N 1389 4 28 jsmith 4 2 I 3 \N 281.40 \N \N 0.00 \N 0.01101947792580061559 \N \N 0.00000000000000000000 4 281.40 0.05587102410356192670 281.40 0.05587102410356192670 \N \N \N 1390 4 28 jsmith 6 1 G 5 0.00 -6333.41 0.00 0.00 0.00 \N \N \N \N \N 3 -1333.41 \N -1333.41 \N \N \N \N 1391 4 28 jsmith 7 2 I 4 \N 6333.41 \N \N 0.00 \N 0.24801304793903652013 \N \N 0.00000000000000000000 5 1333.41 0.26474407338283762856 1333.41 0.26474407338283762856 \N \N \N 1392 4 28 jsmith 8 1 G 6 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 0.00 \N 0.00 \N \N \N \N 1393 4 28 jsmith 10 0 G 7 0.00 746.06 0.00 0.00 0.00 \N \N \N \N \N -1 246.06 \N 246.06 \N \N \N \N 1394 4 28 jsmith 11 1 G 8 0.00 746.06 0.00 0.00 0.00 \N 0.02921532232168730371 \N \N 0.00000000000000000000 7 246.06 0.04885438589524679347 246.06 0.04885438589524679347 \N \N \N 1395 4 28 jsmith 12 2 I 5 \N 700.00 \N \N 0.00 \N 0.02741163663134481489 \N \N 0.00000000000000000000 8 200.00 0.03970932772108168209 200.00 0.03970932772108168209 \N \N \N 1396 4 28 jsmith 13 2 I 6 \N 0.00 \N \N 0.00 \N 0.000000000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1397 4 28 jsmith 14 2 I 7 \N 29.99 \N \N 0.00 \N 0.00117439283224861571 \N \N 0.00000000000000000000 8 29.99 0.00595441369177619823 29.99 0.00595441369177619823 \N \N \N 1398 4 28 jsmith 15 2 I 8 \N 0.00 \N \N 0.00 \N 0.000000000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1399 4 28 jsmith 16 2 I 9 \N 5.00 \N \N 0.00 \N 0.00019579740450960582 \N \N 0.00000000000000000000 8 5.00 0.00099273319302704205 5.00 0.00099273319302704205 \N \N \N 1400 4 28 jsmith 17 2 I 10 \N 1.07 \N \N 0.00 \N 0.000041900644565055645622 \N \N 0.00000000000000000000 8 1.07 0.00021244490330778700 1.07 0.00021244490330778700 \N \N \N 1401 4 28 jsmith 18 2 I 11 \N 10.00 \N \N 0.00 \N 0.00039159480901921164 \N \N 0.00000000000000000000 8 10.00 0.00198546638605408410 10.00 0.00198546638605408410 \N \N \N 1402 4 28 jsmith 20 0 G 9 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 1403 4 28 jsmith 5 2 T -1 \N 25536.60 \N \N \N \N \N \N \N \N 4 5036.60 1.00000000000000000000 5036.60 1.00000000000000000000 \N \N \N 1404 4 28 jsmith 9 1 T -1 \N 19203.19 \N \N 0.00 \N 0.75198695206096347987 \N \N 0.00000000000000000000 3 3703.19 0.73525592661716237144 3703.19 0.73525592661716237144 \N \N \N 1405 4 28 jsmith 19 2 T -1 \N 746.06 \N \N 0.00 \N 0.02921532232168730371 \N \N 0.00000000000000000000 8 246.06 0.04885438589524679347 246.06 0.04885438589524679347 \N \N \N 1406 4 28 jsmith 21 0 T -1 20500.00 18457.13 \N \N 0.00 \N \N \N \N \N \N 3457.13 \N 3457.13 \N \N \N \N 1407 4 30 jsmith 1 0 G 3 0.00 4212.49 0.00 0.00 0.00 \N 0.66370408417284549720 \N \N 0.00000000000000000000 -1 4212.49 0.66370408417284549720 4212.49 0.66370408417284549720 \N \N \N 1408 4 30 jsmith 2 1 G 4 0.00 6346.94 0.00 0.00 0.00 \N \N \N \N \N 3 6346.94 1.00000000000000000000 6346.94 1.00000000000000000000 \N \N \N 1409 4 30 jsmith 3 2 I 2 0.00 6344.54 \N \N 0.00 \N 0.99962186502472057401 \N \N 0.00000000000000000000 4 6344.54 0.99962186502472057401 6344.54 0.99962186502472057401 \N \N \N 1410 4 30 jsmith 4 2 I 3 \N 2.40 \N \N 0.00 \N 0.00037813497527942599 \N \N 0.00000000000000000000 4 2.40 0.00037813497527942599 2.40 0.00037813497527942599 \N \N \N 1411 4 30 jsmith 6 1 G 5 0.00 -2134.45 0.00 0.00 0.00 \N \N \N \N \N 3 -2134.45 \N -2134.45 \N \N \N \N 1412 4 30 jsmith 7 2 I 4 \N 2134.45 \N \N 0.00 \N 0.33629591582715450280 \N \N 0.00000000000000000000 5 2134.45 0.33629591582715450280 2134.45 0.33629591582715450280 \N \N \N 1413 4 30 jsmith 8 1 G 6 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 0.00 \N 0.00 \N \N \N \N 1414 4 30 jsmith 10 0 G 7 0.00 -256.98 0.00 0.00 0.00 \N \N \N \N \N -1 -256.98 \N -256.98 \N \N \N \N 1415 4 30 jsmith 11 1 G 8 0.00 -256.98 0.00 0.00 0.00 \N -0.04048880247804453800 \N \N 0.00000000000000000000 7 -256.98 -0.04048880247804453800 -256.98 -0.04048880247804453800 \N \N \N 1416 4 30 jsmith 12 2 I 5 \N 1010.00 \N \N 0.00 \N 0.15913180209675843792 \N \N 0.00000000000000000000 8 1010.00 0.15913180209675843792 1010.00 0.15913180209675843792 \N \N \N 1417 4 30 jsmith 13 2 I 6 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1418 4 30 jsmith 14 2 I 7 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1419 4 30 jsmith 15 2 I 8 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1420 4 30 jsmith 16 2 I 9 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1421 4 30 jsmith 17 2 I 10 \N 5.00 \N \N 0.00 \N 0.00078778119849880415 \N \N 0.00000000000000000000 8 5.00 0.00078778119849880415 5.00 0.00078778119849880415 \N \N \N 1422 4 30 jsmith 18 2 I 11 \N -1271.98 \N \N 0.00 \N -0.20040838577330178007 \N \N 0.00000000000000000000 8 -1271.98 -0.20040838577330178007 -1271.98 -0.20040838577330178007 \N \N \N 1423 4 30 jsmith 20 0 G 9 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 1424 4 30 jsmith 5 2 T -1 \N 6346.94 \N \N \N \N \N \N \N \N 4 6346.94 1.00000000000000000000 6346.94 1.00000000000000000000 \N \N \N 1425 4 30 jsmith 9 1 T -1 \N 4212.49 \N \N 0.00 \N 0.66370408417284549720 \N \N 0.00000000000000000000 3 4212.49 0.66370408417284549720 4212.49 0.66370408417284549720 \N \N \N 1426 4 30 jsmith 19 2 T -1 \N -256.98 \N \N 0.00 \N -0.04048880247804453800 \N \N 0.00000000000000000000 8 -256.98 -0.04048880247804453800 -256.98 -0.04048880247804453800 \N \N \N 1427 4 30 jsmith 21 0 T -1 0.00 4469.47 \N \N 0.00 \N \N \N \N \N \N 4469.47 \N 4469.47 \N \N \N \N 1428 13 47 jsmith 1 0 G 60 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 8000.00 \N 8000.00 \N \N \N \N 1429 13 47 jsmith 2 1 G 61 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 -2000.00 \N -2000.00 \N \N \N \N 1430 13 47 jsmith 3 2 G 62 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 5000.00 \N 5000.00 \N \N \N \N 1431 13 47 jsmith 4 3 G 63 \N \N \N \N \N \N \N \N \N \N 62 5000.00 \N 5000.00 \N \N \N \N 1432 13 47 jsmith 6 2 G 65 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1433 13 47 jsmith 7 3 I 119 \N \N \N \N \N \N \N \N \N \N 65 0.00 \N 0.00 \N \N \N \N 1434 13 47 jsmith 9 2 G 66 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1435 13 47 jsmith 10 2 G 67 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1436 13 47 jsmith 12 2 G 68 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1437 13 47 jsmith 13 3 I 120 \N \N \N \N \N \N \N \N \N \N 68 0.00 \N 0.00 \N \N \N \N 1438 13 47 jsmith 15 2 G 69 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 7000.00 \N 7000.00 \N \N \N \N 1439 13 47 jsmith 16 3 I 121 \N \N \N \N \N \N \N \N \N \N 69 7000.00 \N 7000.00 \N \N \N \N 1440 13 47 jsmith 17 3 I 122 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1441 13 47 jsmith 18 3 I 123 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1442 13 47 jsmith 19 3 I 124 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1443 13 47 jsmith 20 3 I 137 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1444 13 47 jsmith 21 3 I 138 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1445 13 47 jsmith 23 2 G 72 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1446 13 47 jsmith 24 3 I 125 \N \N \N \N \N \N \N \N \N \N 72 0.00 \N 0.00 \N \N \N \N 1447 13 47 jsmith 26 2 G 70 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1448 13 47 jsmith 27 2 G 71 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1449 13 47 jsmith 28 3 I 126 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1450 13 47 jsmith 29 3 I 127 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1451 13 47 jsmith 30 3 I 128 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1452 13 47 jsmith 31 3 I 129 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1453 13 47 jsmith 32 3 I 130 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1454 13 47 jsmith 33 3 I 131 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1455 13 47 jsmith 35 2 G 73 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1456 13 47 jsmith 37 2 G 74 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1457 13 47 jsmith 48 3 I 133 \N \N \N \N \N \N \N \N \N \N 79 0.00 \N 0.00 \N \N \N \N 1458 13 47 jsmith 39 2 G 75 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1459 13 47 jsmith 40 3 I 132 \N \N \N \N \N \N \N \N \N \N 75 0.00 \N 0.00 \N \N \N \N 1460 13 47 jsmith 42 2 G 76 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1461 13 47 jsmith 44 2 G 77 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1462 13 47 jsmith 46 1 G 78 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 0.00 \N 0.00 \N \N \N \N 1463 13 47 jsmith 47 2 G 79 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1464 13 47 jsmith 50 2 G 80 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1465 13 47 jsmith 52 2 G 81 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1466 13 47 jsmith 54 1 G 82 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 10000.00 \N 10000.00 \N \N \N \N 1467 13 47 jsmith 55 2 G 83 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1468 13 47 jsmith 56 3 I 139 \N \N \N \N \N \N \N \N \N \N 83 0.00 \N 0.00 \N \N \N \N 1469 13 47 jsmith 58 2 G 84 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 10000.00 \N 10000.00 \N \N \N \N 1470 13 47 jsmith 59 3 I 134 \N \N \N \N \N \N \N \N \N \N 84 10000.00 \N 10000.00 \N \N \N \N 1471 13 47 jsmith 60 3 I 135 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1472 13 47 jsmith 61 3 I 136 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1473 13 47 jsmith 63 2 G 85 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1474 13 47 jsmith 66 0 G 86 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 -8000.00 \N -8000.00 \N \N \N \N 1475 13 47 jsmith 67 1 I 108 \N \N \N \N \N \N \N \N \N \N 86 8000.00 \N 8000.00 \N \N \N \N 1476 13 47 jsmith 5 3 T -1 \N \N \N \N \N \N \N \N \N \N 62 5000.00 \N 5000.00 \N \N \N \N 1477 13 47 jsmith 8 3 T -1 \N \N \N \N \N \N \N \N \N \N 65 0.00 \N 0.00 \N \N \N \N 1478 13 47 jsmith 11 3 T -1 \N \N \N \N \N \N \N \N \N \N 67 0.00 \N 0.00 \N \N \N \N 1479 13 47 jsmith 14 3 T -1 \N \N \N \N \N \N \N \N \N \N 68 0.00 \N 0.00 \N \N \N \N 1480 13 47 jsmith 22 3 T -1 \N \N \N \N \N \N \N \N \N \N 69 7000.00 \N 7000.00 \N \N \N \N 1481 13 47 jsmith 25 3 T -1 \N \N \N \N \N \N \N \N \N \N 72 0.00 \N 0.00 \N \N \N \N 1482 13 47 jsmith 34 3 T -1 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1483 13 47 jsmith 36 3 T -1 \N \N \N \N \N \N \N \N \N \N 73 0.00 \N 0.00 \N \N \N \N 1484 13 47 jsmith 38 3 T -1 \N \N \N \N \N \N \N \N \N \N 74 0.00 \N 0.00 \N \N \N \N 1485 13 47 jsmith 41 3 T -1 \N \N \N \N \N \N \N \N \N \N 75 0.00 \N 0.00 \N \N \N \N 1486 13 47 jsmith 43 3 T -1 \N \N \N \N \N \N \N \N \N \N 76 0.00 \N 0.00 \N \N \N \N 1487 13 47 jsmith 45 2 T -1 \N \N \N \N \N \N \N \N \N \N 61 -2000.00 \N -2000.00 \N \N \N \N 1488 13 47 jsmith 49 3 T -1 \N \N \N \N \N \N \N \N \N \N 79 0.00 \N 0.00 \N \N \N \N 1489 13 47 jsmith 51 3 T -1 \N \N \N \N \N \N \N \N \N \N 80 0.00 \N 0.00 \N \N \N \N 1490 13 47 jsmith 53 2 T -1 \N \N \N \N \N \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1491 13 47 jsmith 57 3 T -1 \N \N \N \N \N \N \N \N \N \N 83 0.00 \N 0.00 \N \N \N \N 1492 13 47 jsmith 62 3 T -1 \N \N \N \N \N \N \N \N \N \N 84 10000.00 \N 10000.00 \N \N \N \N 1493 13 47 jsmith 64 2 T -1 \N \N \N \N \N \N \N \N \N \N 82 10000.00 \N 10000.00 \N \N \N \N 1494 13 47 jsmith 65 1 T -1 \N \N \N \N \N \N \N \N \N \N 60 8000.00 \N 8000.00 \N \N \N \N 1495 13 47 jsmith 68 0 T -1 \N \N \N \N \N \N \N \N \N \N \N 0.00 \N 0.00 \N \N \N \N 1496 13 48 jsmith 1 0 G 60 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 6000.00 \N 6000.00 \N \N \N \N 1497 13 48 jsmith 2 1 G 61 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 6000.00 \N 6000.00 \N \N \N \N 1498 13 48 jsmith 3 2 G 62 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 3000.00 \N 3000.00 \N \N \N \N 1499 13 48 jsmith 4 3 G 63 \N \N \N \N \N \N \N \N \N \N 62 3000.00 \N 3000.00 \N \N \N \N 1500 13 48 jsmith 6 2 G 65 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1501 13 48 jsmith 7 3 I 119 \N \N \N \N \N \N \N \N \N \N 65 0.00 \N 0.00 \N \N \N \N 1502 13 48 jsmith 9 2 G 66 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1503 13 48 jsmith 10 2 G 67 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1504 13 48 jsmith 12 2 G 68 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1505 13 48 jsmith 13 3 I 120 \N \N \N \N \N \N \N \N \N \N 68 0.00 \N 0.00 \N \N \N \N 1506 13 29 jsmith 61 3 I 136 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1507 13 48 jsmith 15 2 G 69 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 -3000.00 \N -3000.00 \N \N \N \N 1508 13 48 jsmith 16 3 I 121 \N \N \N \N \N \N \N \N \N \N 69 -3000.00 \N -3000.00 \N \N \N \N 1509 13 48 jsmith 17 3 I 122 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1510 13 48 jsmith 18 3 I 123 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1511 13 48 jsmith 19 3 I 124 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1512 13 48 jsmith 20 3 I 137 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1513 13 48 jsmith 21 3 I 138 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1514 13 48 jsmith 23 2 G 72 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1515 13 48 jsmith 24 3 I 125 \N \N \N \N \N \N \N \N \N \N 72 0.00 \N 0.00 \N \N \N \N 1516 13 48 jsmith 26 2 G 70 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1517 13 48 jsmith 27 2 G 71 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1518 13 48 jsmith 28 3 I 126 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1519 13 48 jsmith 29 3 I 127 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1520 13 48 jsmith 30 3 I 128 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1521 13 48 jsmith 31 3 I 129 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1522 13 48 jsmith 32 3 I 130 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1523 13 48 jsmith 33 3 I 131 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1524 13 48 jsmith 35 2 G 73 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1525 13 48 jsmith 37 2 G 74 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1526 13 48 jsmith 39 2 G 75 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1527 13 48 jsmith 40 3 I 132 \N \N \N \N \N \N \N \N \N \N 75 0.00 \N 0.00 \N \N \N \N 1528 13 48 jsmith 42 2 G 76 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1529 13 48 jsmith 44 2 G 77 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1530 13 48 jsmith 46 1 G 78 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 0.00 \N 0.00 \N \N \N \N 1531 13 48 jsmith 47 2 G 79 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1532 13 48 jsmith 48 3 I 133 \N \N \N \N \N \N \N \N \N \N 79 0.00 \N 0.00 \N \N \N \N 1533 13 48 jsmith 50 2 G 80 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1534 13 48 jsmith 52 2 G 81 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1535 13 48 jsmith 54 1 G 82 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 0.00 \N 0.00 \N \N \N \N 1536 13 48 jsmith 55 2 G 83 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1537 13 48 jsmith 56 3 I 139 \N \N \N \N \N \N \N \N \N \N 83 0.00 \N 0.00 \N \N \N \N 1538 13 48 jsmith 58 2 G 84 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1539 13 48 jsmith 59 3 I 134 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1540 13 48 jsmith 60 3 I 135 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1541 13 48 jsmith 61 3 I 136 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1542 13 48 jsmith 63 2 G 85 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1543 13 48 jsmith 66 0 G 86 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 -6000.00 \N -6000.00 \N \N \N \N 1544 13 48 jsmith 67 1 I 108 \N \N \N \N \N \N \N \N \N \N 86 6000.00 \N 6000.00 \N \N \N \N 1545 13 48 jsmith 5 3 T -1 \N \N \N \N \N \N \N \N \N \N 62 3000.00 \N 3000.00 \N \N \N \N 1546 13 48 jsmith 8 3 T -1 \N \N \N \N \N \N \N \N \N \N 65 0.00 \N 0.00 \N \N \N \N 1547 13 48 jsmith 11 3 T -1 \N \N \N \N \N \N \N \N \N \N 67 0.00 \N 0.00 \N \N \N \N 1548 13 48 jsmith 14 3 T -1 \N \N \N \N \N \N \N \N \N \N 68 0.00 \N 0.00 \N \N \N \N 1549 13 48 jsmith 22 3 T -1 \N \N \N \N \N \N \N \N \N \N 69 -3000.00 \N -3000.00 \N \N \N \N 1550 13 48 jsmith 25 3 T -1 \N \N \N \N \N \N \N \N \N \N 72 0.00 \N 0.00 \N \N \N \N 1551 13 48 jsmith 34 3 T -1 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1552 13 48 jsmith 36 3 T -1 \N \N \N \N \N \N \N \N \N \N 73 0.00 \N 0.00 \N \N \N \N 1553 13 48 jsmith 38 3 T -1 \N \N \N \N \N \N \N \N \N \N 74 0.00 \N 0.00 \N \N \N \N 1554 13 48 jsmith 41 3 T -1 \N \N \N \N \N \N \N \N \N \N 75 0.00 \N 0.00 \N \N \N \N 1555 13 48 jsmith 43 3 T -1 \N \N \N \N \N \N \N \N \N \N 76 0.00 \N 0.00 \N \N \N \N 1556 13 48 jsmith 45 2 T -1 \N \N \N \N \N \N \N \N \N \N 61 6000.00 \N 6000.00 \N \N \N \N 1557 13 48 jsmith 49 3 T -1 \N \N \N \N \N \N \N \N \N \N 79 0.00 \N 0.00 \N \N \N \N 1558 13 48 jsmith 51 3 T -1 \N \N \N \N \N \N \N \N \N \N 80 0.00 \N 0.00 \N \N \N \N 1559 13 48 jsmith 53 2 T -1 \N \N \N \N \N \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1560 13 48 jsmith 57 3 T -1 \N \N \N \N \N \N \N \N \N \N 83 0.00 \N 0.00 \N \N \N \N 1561 13 48 jsmith 62 3 T -1 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1562 13 48 jsmith 64 2 T -1 \N \N \N \N \N \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1563 13 48 jsmith 65 1 T -1 \N \N \N \N \N \N \N \N \N \N 60 6000.00 \N 6000.00 \N \N \N \N 1564 13 48 jsmith 68 0 T -1 \N \N \N \N \N \N \N \N \N \N \N 0.00 \N 0.00 \N \N \N \N 1565 13 46 jsmith 1 0 G 60 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 22000.00 \N 22000.00 \N \N \N \N 1566 13 46 jsmith 2 1 G 61 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 12000.00 \N 12000.00 \N \N \N \N 1567 13 46 jsmith 3 2 G 62 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 11000.00 \N 11000.00 \N \N \N \N 1568 13 46 jsmith 4 3 G 63 \N \N \N \N \N \N \N \N \N \N 62 11000.00 \N 11000.00 \N \N \N \N 1569 13 46 jsmith 6 2 G 65 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1570 13 46 jsmith 7 3 I 119 \N \N \N \N \N \N \N \N \N \N 65 0.00 \N 0.00 \N \N \N \N 1571 13 46 jsmith 9 2 G 66 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1572 13 46 jsmith 10 2 G 67 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1573 13 46 jsmith 12 2 G 68 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1574 13 46 jsmith 13 3 I 120 \N \N \N \N \N \N \N \N \N \N 68 0.00 \N 0.00 \N \N \N \N 1575 13 46 jsmith 15 2 G 69 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 -1000.00 \N -1000.00 \N \N \N \N 1576 13 46 jsmith 16 3 I 121 \N \N \N \N \N \N \N \N \N \N 69 -1000.00 \N -1000.00 \N \N \N \N 1577 13 46 jsmith 17 3 I 122 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1578 13 46 jsmith 18 3 I 123 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1579 13 46 jsmith 19 3 I 124 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1580 13 46 jsmith 20 3 I 137 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1581 13 46 jsmith 21 3 I 138 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1582 13 46 jsmith 23 2 G 72 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1583 13 46 jsmith 24 3 I 125 \N \N \N \N \N \N \N \N \N \N 72 0.00 \N 0.00 \N \N \N \N 1584 13 46 jsmith 26 2 G 70 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1585 13 46 jsmith 27 2 G 71 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1586 13 46 jsmith 28 3 I 126 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1587 13 46 jsmith 29 3 I 127 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1588 13 46 jsmith 30 3 I 128 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1589 13 46 jsmith 31 3 I 129 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1590 13 46 jsmith 32 3 I 130 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1591 13 46 jsmith 33 3 I 131 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1592 13 46 jsmith 35 2 G 73 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1593 13 46 jsmith 37 2 G 74 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1594 13 46 jsmith 39 2 G 75 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1595 13 46 jsmith 40 3 I 132 \N \N \N \N \N \N \N \N \N \N 75 0.00 \N 0.00 \N \N \N \N 1596 13 46 jsmith 42 2 G 76 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1597 13 46 jsmith 44 2 G 77 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1598 13 46 jsmith 46 1 G 78 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 0.00 \N 0.00 \N \N \N \N 1599 13 46 jsmith 47 2 G 79 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1600 13 46 jsmith 48 3 I 133 \N \N \N \N \N \N \N \N \N \N 79 0.00 \N 0.00 \N \N \N \N 1601 13 46 jsmith 50 2 G 80 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1602 13 46 jsmith 52 2 G 81 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1603 13 46 jsmith 54 1 G 82 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 10000.00 \N 10000.00 \N \N \N \N 1604 13 46 jsmith 55 2 G 83 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1605 13 46 jsmith 56 3 I 139 \N \N \N \N \N \N \N \N \N \N 83 0.00 \N 0.00 \N \N \N \N 1606 13 46 jsmith 58 2 G 84 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 10000.00 \N 10000.00 \N \N \N \N 1607 13 46 jsmith 59 3 I 134 \N \N \N \N \N \N \N \N \N \N 84 10000.00 \N 10000.00 \N \N \N \N 1608 13 46 jsmith 60 3 I 135 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1609 13 46 jsmith 61 3 I 136 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1610 13 46 jsmith 63 2 G 85 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1611 13 46 jsmith 66 0 G 86 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 -22000.00 \N -22000.00 \N \N \N \N 1612 13 46 jsmith 67 1 I 108 \N \N \N \N \N \N \N \N \N \N 86 22000.00 \N 22000.00 \N \N \N \N 1613 13 46 jsmith 5 3 T -1 \N \N \N \N \N \N \N \N \N \N 62 11000.00 \N 11000.00 \N \N \N \N 1614 13 46 jsmith 8 3 T -1 \N \N \N \N \N \N \N \N \N \N 65 0.00 \N 0.00 \N \N \N \N 1615 13 46 jsmith 11 3 T -1 \N \N \N \N \N \N \N \N \N \N 67 0.00 \N 0.00 \N \N \N \N 1616 13 46 jsmith 14 3 T -1 \N \N \N \N \N \N \N \N \N \N 68 0.00 \N 0.00 \N \N \N \N 1617 13 46 jsmith 22 3 T -1 \N \N \N \N \N \N \N \N \N \N 69 -1000.00 \N -1000.00 \N \N \N \N 1618 13 46 jsmith 25 3 T -1 \N \N \N \N \N \N \N \N \N \N 72 0.00 \N 0.00 \N \N \N \N 1619 13 46 jsmith 34 3 T -1 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1620 13 46 jsmith 36 3 T -1 \N \N \N \N \N \N \N \N \N \N 73 0.00 \N 0.00 \N \N \N \N 1621 13 46 jsmith 38 3 T -1 \N \N \N \N \N \N \N \N \N \N 74 0.00 \N 0.00 \N \N \N \N 1622 13 46 jsmith 41 3 T -1 \N \N \N \N \N \N \N \N \N \N 75 0.00 \N 0.00 \N \N \N \N 1623 13 46 jsmith 43 3 T -1 \N \N \N \N \N \N \N \N \N \N 76 0.00 \N 0.00 \N \N \N \N 1624 13 46 jsmith 45 2 T -1 \N \N \N \N \N \N \N \N \N \N 61 12000.00 \N 12000.00 \N \N \N \N 1625 13 46 jsmith 49 3 T -1 \N \N \N \N \N \N \N \N \N \N 79 0.00 \N 0.00 \N \N \N \N 1626 13 46 jsmith 51 3 T -1 \N \N \N \N \N \N \N \N \N \N 80 0.00 \N 0.00 \N \N \N \N 1627 13 46 jsmith 53 2 T -1 \N \N \N \N \N \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1628 13 46 jsmith 57 3 T -1 \N \N \N \N \N \N \N \N \N \N 83 0.00 \N 0.00 \N \N \N \N 1629 13 46 jsmith 62 3 T -1 \N \N \N \N \N \N \N \N \N \N 84 10000.00 \N 10000.00 \N \N \N \N 1630 13 46 jsmith 64 2 T -1 \N \N \N \N \N \N \N \N \N \N 82 10000.00 \N 10000.00 \N \N \N \N 1631 13 46 jsmith 65 1 T -1 \N \N \N \N \N \N \N \N \N \N 60 22000.00 \N 22000.00 \N \N \N \N 1632 13 46 jsmith 68 0 T -1 \N \N \N \N \N \N \N \N \N \N \N 0.00 \N 0.00 \N \N \N \N 1633 13 29 jsmith 1 0 G 60 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 2000.00 \N 2000.00 \N \N \N \N 1634 13 29 jsmith 2 1 G 61 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 2000.00 \N 2000.00 \N \N \N \N 1635 13 29 jsmith 3 2 G 62 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 1000.00 \N 1000.00 \N \N \N \N 1636 13 29 jsmith 4 3 G 63 \N \N \N \N \N \N \N \N \N \N 62 1000.00 \N 1000.00 \N \N \N \N 1637 13 29 jsmith 6 2 G 65 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1638 13 29 jsmith 7 3 I 119 \N \N \N \N \N \N \N \N \N \N 65 0.00 \N 0.00 \N \N \N \N 1639 13 29 jsmith 9 2 G 66 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1640 13 29 jsmith 10 2 G 67 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1641 13 29 jsmith 12 2 G 68 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1642 13 29 jsmith 13 3 I 120 \N \N \N \N \N \N \N \N \N \N 68 0.00 \N 0.00 \N \N \N \N 1643 13 29 jsmith 15 2 G 69 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 -1000.00 \N -1000.00 \N \N \N \N 1644 13 29 jsmith 16 3 I 121 \N \N \N \N \N \N \N \N \N \N 69 -1000.00 \N -1000.00 \N \N \N \N 1645 13 29 jsmith 17 3 I 122 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1646 13 29 jsmith 18 3 I 123 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1647 13 29 jsmith 19 3 I 124 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1648 13 29 jsmith 20 3 I 137 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1649 13 29 jsmith 21 3 I 138 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1650 13 29 jsmith 23 2 G 72 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1651 13 29 jsmith 24 3 I 125 \N \N \N \N \N \N \N \N \N \N 72 0.00 \N 0.00 \N \N \N \N 1652 13 29 jsmith 26 2 G 70 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1653 13 29 jsmith 27 2 G 71 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1654 13 29 jsmith 28 3 I 126 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1655 13 29 jsmith 29 3 I 127 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1656 13 29 jsmith 30 3 I 128 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1657 13 29 jsmith 31 3 I 129 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1658 13 29 jsmith 32 3 I 130 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1659 13 29 jsmith 33 3 I 131 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1660 13 29 jsmith 35 2 G 73 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1661 13 29 jsmith 37 2 G 74 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1662 13 29 jsmith 39 2 G 75 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1663 13 29 jsmith 40 3 I 132 \N \N \N \N \N \N \N \N \N \N 75 0.00 \N 0.00 \N \N \N \N 1664 13 29 jsmith 42 2 G 76 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1665 13 29 jsmith 44 2 G 77 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1666 13 29 jsmith 46 1 G 78 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 0.00 \N 0.00 \N \N \N \N 1667 13 29 jsmith 47 2 G 79 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1668 13 29 jsmith 48 3 I 133 \N \N \N \N \N \N \N \N \N \N 79 0.00 \N 0.00 \N \N \N \N 1669 13 29 jsmith 50 2 G 80 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1670 13 29 jsmith 52 2 G 81 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1671 13 29 jsmith 54 1 G 82 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 0.00 \N 0.00 \N \N \N \N 1672 13 29 jsmith 55 2 G 83 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1673 13 29 jsmith 56 3 I 139 \N \N \N \N \N \N \N \N \N \N 83 0.00 \N 0.00 \N \N \N \N 1674 13 29 jsmith 58 2 G 84 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1675 13 29 jsmith 59 3 I 134 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1676 13 29 jsmith 60 3 I 135 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1677 13 29 jsmith 63 2 G 85 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1678 13 29 jsmith 62 3 T -1 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1679 13 29 jsmith 66 0 G 86 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 -2000.00 \N -2000.00 \N \N \N \N 1680 13 29 jsmith 67 1 I 108 \N \N \N \N \N \N \N \N \N \N 86 2000.00 \N 2000.00 \N \N \N \N 1681 13 29 jsmith 5 3 T -1 \N \N \N \N \N \N \N \N \N \N 62 1000.00 \N 1000.00 \N \N \N \N 1682 13 29 jsmith 8 3 T -1 \N \N \N \N \N \N \N \N \N \N 65 0.00 \N 0.00 \N \N \N \N 1683 13 29 jsmith 11 3 T -1 \N \N \N \N \N \N \N \N \N \N 67 0.00 \N 0.00 \N \N \N \N 1684 13 29 jsmith 14 3 T -1 \N \N \N \N \N \N \N \N \N \N 68 0.00 \N 0.00 \N \N \N \N 1685 13 29 jsmith 22 3 T -1 \N \N \N \N \N \N \N \N \N \N 69 -1000.00 \N -1000.00 \N \N \N \N 1686 13 29 jsmith 25 3 T -1 \N \N \N \N \N \N \N \N \N \N 72 0.00 \N 0.00 \N \N \N \N 1687 13 29 jsmith 34 3 T -1 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1688 13 29 jsmith 36 3 T -1 \N \N \N \N \N \N \N \N \N \N 73 0.00 \N 0.00 \N \N \N \N 1689 13 29 jsmith 38 3 T -1 \N \N \N \N \N \N \N \N \N \N 74 0.00 \N 0.00 \N \N \N \N 1690 13 29 jsmith 41 3 T -1 \N \N \N \N \N \N \N \N \N \N 75 0.00 \N 0.00 \N \N \N \N 1691 13 29 jsmith 43 3 T -1 \N \N \N \N \N \N \N \N \N \N 76 0.00 \N 0.00 \N \N \N \N 1692 13 29 jsmith 45 2 T -1 \N \N \N \N \N \N \N \N \N \N 61 2000.00 \N 2000.00 \N \N \N \N 1693 13 29 jsmith 49 3 T -1 \N \N \N \N \N \N \N \N \N \N 79 0.00 \N 0.00 \N \N \N \N 1694 13 29 jsmith 51 3 T -1 \N \N \N \N \N \N \N \N \N \N 80 0.00 \N 0.00 \N \N \N \N 1695 13 29 jsmith 53 2 T -1 \N \N \N \N \N \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1696 13 29 jsmith 57 3 T -1 \N \N \N \N \N \N \N \N \N \N 83 0.00 \N 0.00 \N \N \N \N 1697 13 29 jsmith 64 2 T -1 \N \N \N \N \N \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1698 13 29 jsmith 65 1 T -1 \N \N \N \N \N \N \N \N \N \N 60 2000.00 \N 2000.00 \N \N \N \N 1699 13 29 jsmith 68 0 T -1 \N \N \N \N \N \N \N \N \N \N \N 0.00 \N 0.00 \N \N \N \N 1700 13 28 jsmith 1 0 G 60 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 991222.11 \N 991222.11 \N \N \N \N 1701 13 28 jsmith 2 1 G 61 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 -8777.89 \N -8777.89 \N \N \N \N 1702 13 28 jsmith 3 2 G 62 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 3457.13 \N 3457.13 \N \N \N \N 1703 13 28 jsmith 4 3 G 63 \N \N \N \N \N \N \N \N \N \N 62 3457.13 \N 3457.13 \N \N \N \N 1704 13 28 jsmith 6 2 G 65 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1705 13 28 jsmith 7 3 I 119 \N \N \N \N \N \N \N \N \N \N 65 0.00 \N 0.00 \N \N \N \N 1706 13 28 jsmith 9 2 G 66 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1707 13 28 jsmith 10 2 G 67 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1708 13 28 jsmith 12 2 G 68 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1709 13 28 jsmith 13 3 I 120 \N \N \N \N \N \N \N \N \N \N 68 0.00 \N 0.00 \N \N \N \N 1710 13 28 jsmith 15 2 G 69 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 13064.13 \N 13064.13 \N \N \N \N 1711 13 28 jsmith 16 3 I 121 \N \N \N \N \N \N \N \N \N \N 69 19195.81 \N 19195.81 \N \N \N \N 1712 13 28 jsmith 17 3 I 122 \N \N \N \N \N \N \N \N \N \N 69 -76.85 \N -76.85 \N \N \N \N 1713 13 28 jsmith 18 3 I 123 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1714 13 28 jsmith 19 3 I 124 \N \N \N \N \N \N \N \N \N \N 69 -6053.79 \N -6053.79 \N \N \N \N 1715 13 28 jsmith 20 3 I 137 \N \N \N \N \N \N \N \N \N \N 69 0.02 \N 0.02 \N \N \N \N 1716 13 28 jsmith 21 3 I 138 \N \N \N \N \N \N \N \N \N \N 69 -1.06 \N -1.06 \N \N \N \N 1717 13 28 jsmith 23 2 G 72 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1718 13 28 jsmith 24 3 I 125 \N \N \N \N \N \N \N \N \N \N 72 0.00 \N 0.00 \N \N \N \N 1719 13 28 jsmith 26 2 G 70 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1720 13 28 jsmith 27 2 G 71 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 590.34 \N 590.34 \N \N \N \N 1721 13 28 jsmith 28 3 I 126 \N \N \N \N \N \N \N \N \N \N 71 250.00 \N 250.00 \N \N \N \N 1722 13 28 jsmith 29 3 I 127 \N \N \N \N \N \N \N \N \N \N 71 151.99 \N 151.99 \N \N \N \N 1723 13 28 jsmith 30 3 I 128 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1724 13 28 jsmith 31 3 I 129 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1725 13 28 jsmith 32 3 I 130 \N \N \N \N \N \N \N \N \N \N 71 216.74 \N 216.74 \N \N \N \N 1726 13 28 jsmith 33 3 I 131 \N \N \N \N \N \N \N \N \N \N 71 -28.39 \N -28.39 \N \N \N \N 1727 13 28 jsmith 35 2 G 73 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1728 13 28 jsmith 37 2 G 74 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1729 13 28 jsmith 39 2 G 75 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 238.77 \N 238.77 \N \N \N \N 1730 13 28 jsmith 40 3 I 132 \N \N \N \N \N \N \N \N \N \N 75 238.77 \N 238.77 \N \N \N \N 1731 13 28 jsmith 42 2 G 76 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1732 13 28 jsmith 44 2 G 77 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1733 13 28 jsmith 46 1 G 78 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 0.00 \N 0.00 \N \N \N \N 1734 13 28 jsmith 47 2 G 79 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1735 13 28 jsmith 48 3 I 133 \N \N \N \N \N \N \N \N \N \N 79 0.00 \N 0.00 \N \N \N \N 1736 13 28 jsmith 50 2 G 80 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1737 13 28 jsmith 52 2 G 81 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1738 13 28 jsmith 54 1 G 82 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 1000000.00 \N 1000000.00 \N \N \N \N 1739 13 28 jsmith 55 2 G 83 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1740 13 28 jsmith 56 3 I 139 \N \N \N \N \N \N \N \N \N \N 83 0.00 \N 0.00 \N \N \N \N 1741 13 28 jsmith 58 2 G 84 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 1000000.00 \N 1000000.00 \N \N \N \N 1742 13 28 jsmith 59 3 I 134 \N \N \N \N \N \N \N \N \N \N 84 1000000.00 \N 1000000.00 \N \N \N \N 1743 13 28 jsmith 60 3 I 135 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1744 13 28 jsmith 61 3 I 136 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1745 13 28 jsmith 63 2 G 85 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1746 13 28 jsmith 66 0 G 86 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 -991222.11 \N -991222.11 \N \N \N \N 1747 13 28 jsmith 67 1 I 108 \N \N \N \N \N \N \N \N \N \N 86 991222.11 \N 991222.11 \N \N \N \N 1748 13 28 jsmith 5 3 T -1 \N \N \N \N \N \N \N \N \N \N 62 3457.13 \N 3457.13 \N \N \N \N 1749 13 28 jsmith 8 3 T -1 \N \N \N \N \N \N \N \N \N \N 65 0.00 \N 0.00 \N \N \N \N 1750 13 28 jsmith 11 3 T -1 \N \N \N \N \N \N \N \N \N \N 67 0.00 \N 0.00 \N \N \N \N 1751 13 28 jsmith 14 3 T -1 \N \N \N \N \N \N \N \N \N \N 68 0.00 \N 0.00 \N \N \N \N 1752 13 28 jsmith 22 3 T -1 \N \N \N \N \N \N \N \N \N \N 69 13064.13 \N 13064.13 \N \N \N \N 1753 13 28 jsmith 25 3 T -1 \N \N \N \N \N \N \N \N \N \N 72 0.00 \N 0.00 \N \N \N \N 1754 13 28 jsmith 34 3 T -1 \N \N \N \N \N \N \N \N \N \N 71 590.34 \N 590.34 \N \N \N \N 1755 13 28 jsmith 36 3 T -1 \N \N \N \N \N \N \N \N \N \N 73 0.00 \N 0.00 \N \N \N \N 1756 13 28 jsmith 38 3 T -1 \N \N \N \N \N \N \N \N \N \N 74 0.00 \N 0.00 \N \N \N \N 1757 13 28 jsmith 41 3 T -1 \N \N \N \N \N \N \N \N \N \N 75 238.77 \N 238.77 \N \N \N \N 1758 13 28 jsmith 43 3 T -1 \N \N \N \N \N \N \N \N \N \N 76 0.00 \N 0.00 \N \N \N \N 1759 13 28 jsmith 45 2 T -1 \N \N \N \N \N \N \N \N \N \N 61 -8777.89 \N -8777.89 \N \N \N \N 1760 13 28 jsmith 49 3 T -1 \N \N \N \N \N \N \N \N \N \N 79 0.00 \N 0.00 \N \N \N \N 1761 13 28 jsmith 51 3 T -1 \N \N \N \N \N \N \N \N \N \N 80 0.00 \N 0.00 \N \N \N \N 1762 13 28 jsmith 53 2 T -1 \N \N \N \N \N \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1763 13 28 jsmith 57 3 T -1 \N \N \N \N \N \N \N \N \N \N 83 0.00 \N 0.00 \N \N \N \N 1764 13 28 jsmith 62 3 T -1 \N \N \N \N \N \N \N \N \N \N 84 1000000.00 \N 1000000.00 \N \N \N \N 1765 13 28 jsmith 64 2 T -1 \N \N \N \N \N \N \N \N \N \N 82 1000000.00 \N 1000000.00 \N \N \N \N 1766 13 28 jsmith 65 1 T -1 \N \N \N \N \N \N \N \N \N \N 60 991222.11 \N 991222.11 \N \N \N \N 1767 13 28 jsmith 68 0 T -1 \N \N \N \N \N \N \N \N \N \N \N 0.00 \N 0.00 \N \N \N \N 1768 13 30 jsmith 1 0 G 60 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 9074.29 \N 9074.29 \N \N \N \N 1769 13 30 jsmith 2 1 G 61 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 5074.29 \N 5074.29 \N \N \N \N 1770 13 30 jsmith 3 2 G 62 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 4469.47 \N 4469.47 \N \N \N \N 1771 13 30 jsmith 4 3 G 63 \N \N \N \N \N \N \N \N \N \N 62 4469.47 \N 4469.47 \N \N \N \N 1772 13 30 jsmith 6 2 G 65 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1773 13 30 jsmith 7 3 I 119 \N \N \N \N \N \N \N \N \N \N 65 0.00 \N 0.00 \N \N \N \N 1774 13 30 jsmith 9 2 G 66 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1775 13 30 jsmith 10 2 G 67 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1776 13 30 jsmith 12 2 G 68 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1777 13 30 jsmith 13 3 I 120 \N \N \N \N \N \N \N \N \N \N 68 0.00 \N 0.00 \N \N \N \N 1778 13 30 jsmith 15 2 G 69 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 -443.83 \N -443.83 \N \N \N \N 1779 13 30 jsmith 16 3 I 121 \N \N \N \N \N \N \N \N \N \N 69 58749.63 \N 58749.63 \N \N \N \N 1780 13 30 jsmith 17 3 I 122 \N \N \N \N \N \N \N \N \N \N 69 -59354.13 \N -59354.13 \N \N \N \N 1781 13 30 jsmith 18 3 I 123 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1782 13 30 jsmith 19 3 I 124 \N \N \N \N \N \N \N \N \N \N 69 141.00 \N 141.00 \N \N \N \N 1783 13 30 jsmith 20 3 I 137 \N \N \N \N \N \N \N \N \N \N 69 24.62 \N 24.62 \N \N \N \N 1784 13 30 jsmith 21 3 I 138 \N \N \N \N \N \N \N \N \N \N 69 -4.95 \N -4.95 \N \N \N \N 1785 13 30 jsmith 23 2 G 72 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1786 13 30 jsmith 24 3 I 125 \N \N \N \N \N \N \N \N \N \N 72 0.00 \N 0.00 \N \N \N \N 1787 13 30 jsmith 26 2 G 70 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1788 13 30 jsmith 27 2 G 71 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 -56.28 \N -56.28 \N \N \N \N 1789 13 30 jsmith 28 3 I 126 \N \N \N \N \N \N \N \N \N \N 71 -250.40 \N -250.40 \N \N \N \N 1790 13 30 jsmith 29 3 I 127 \N \N \N \N \N \N \N \N \N \N 71 161.14 \N 161.14 \N \N \N \N 1791 13 30 jsmith 30 3 I 128 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1792 13 30 jsmith 31 3 I 129 \N \N \N \N \N \N \N \N \N \N 71 -125.00 \N -125.00 \N \N \N \N 1793 13 30 jsmith 32 3 I 130 \N \N \N \N \N \N \N \N \N \N 71 180.48 \N 180.48 \N \N \N \N 1794 13 30 jsmith 33 3 I 131 \N \N \N \N \N \N \N \N \N \N 71 -22.50 \N -22.50 \N \N \N \N 1795 13 30 jsmith 35 2 G 73 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1796 13 30 jsmith 37 2 G 74 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1797 13 30 jsmith 39 2 G 75 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 217.27 \N 217.27 \N \N \N \N 1798 13 30 jsmith 40 3 I 132 \N \N \N \N \N \N \N \N \N \N 75 217.27 \N 217.27 \N \N \N \N 1799 13 30 jsmith 42 2 G 76 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1800 13 30 jsmith 44 2 G 77 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1801 13 30 jsmith 46 1 G 78 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 1000.00 \N 1000.00 \N \N \N \N 1802 13 30 jsmith 47 2 G 79 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 1000.00 \N 1000.00 \N \N \N \N 1803 13 30 jsmith 48 3 I 133 \N \N \N \N \N \N \N \N \N \N 79 1000.00 \N 1000.00 \N \N \N \N 1804 13 30 jsmith 50 2 G 80 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1805 13 30 jsmith 52 2 G 81 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1806 13 30 jsmith 54 1 G 82 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 5000.00 \N 5000.00 \N \N \N \N 1807 13 30 jsmith 55 2 G 83 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 5000.00 \N 5000.00 \N \N \N \N 1808 13 30 jsmith 56 3 I 139 \N \N \N \N \N \N \N \N \N \N 83 5000.00 \N 5000.00 \N \N \N \N 1809 13 30 jsmith 58 2 G 84 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1810 13 30 jsmith 59 3 I 134 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1811 13 30 jsmith 60 3 I 135 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1812 13 30 jsmith 61 3 I 136 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1813 13 30 jsmith 63 2 G 85 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1814 13 30 jsmith 66 0 G 86 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 -9074.29 \N -9074.29 \N \N \N \N 1815 13 30 jsmith 67 1 I 108 \N \N \N \N \N \N \N \N \N \N 86 9074.29 \N 9074.29 \N \N \N \N 1816 13 30 jsmith 5 3 T -1 \N \N \N \N \N \N \N \N \N \N 62 4469.47 \N 4469.47 \N \N \N \N 1817 13 30 jsmith 8 3 T -1 \N \N \N \N \N \N \N \N \N \N 65 0.00 \N 0.00 \N \N \N \N 1818 13 30 jsmith 11 3 T -1 \N \N \N \N \N \N \N \N \N \N 67 0.00 \N 0.00 \N \N \N \N 1819 13 30 jsmith 14 3 T -1 \N \N \N \N \N \N \N \N \N \N 68 0.00 \N 0.00 \N \N \N \N 1820 13 30 jsmith 22 3 T -1 \N \N \N \N \N \N \N \N \N \N 69 -443.83 \N -443.83 \N \N \N \N 1821 13 30 jsmith 25 3 T -1 \N \N \N \N \N \N \N \N \N \N 72 0.00 \N 0.00 \N \N \N \N 1822 13 30 jsmith 34 3 T -1 \N \N \N \N \N \N \N \N \N \N 71 -56.28 \N -56.28 \N \N \N \N 1823 13 30 jsmith 36 3 T -1 \N \N \N \N \N \N \N \N \N \N 73 0.00 \N 0.00 \N \N \N \N 1824 13 30 jsmith 38 3 T -1 \N \N \N \N \N \N \N \N \N \N 74 0.00 \N 0.00 \N \N \N \N 1825 13 30 jsmith 41 3 T -1 \N \N \N \N \N \N \N \N \N \N 75 217.27 \N 217.27 \N \N \N \N 1826 13 30 jsmith 43 3 T -1 \N \N \N \N \N \N \N \N \N \N 76 0.00 \N 0.00 \N \N \N \N 1827 13 30 jsmith 45 2 T -1 \N \N \N \N \N \N \N \N \N \N 61 5074.29 \N 5074.29 \N \N \N \N 1828 13 30 jsmith 49 3 T -1 \N \N \N \N \N \N \N \N \N \N 79 1000.00 \N 1000.00 \N \N \N \N 1829 13 30 jsmith 51 3 T -1 \N \N \N \N \N \N \N \N \N \N 80 0.00 \N 0.00 \N \N \N \N 1830 13 30 jsmith 53 2 T -1 \N \N \N \N \N \N \N \N \N \N 78 1000.00 \N 1000.00 \N \N \N \N 1831 13 30 jsmith 57 3 T -1 \N \N \N \N \N \N \N \N \N \N 83 5000.00 \N 5000.00 \N \N \N \N 1832 13 30 jsmith 62 3 T -1 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1833 13 30 jsmith 64 2 T -1 \N \N \N \N \N \N \N \N \N \N 82 5000.00 \N 5000.00 \N \N \N \N 1834 13 30 jsmith 65 1 T -1 \N \N \N \N \N \N \N \N \N \N 60 9074.29 \N 9074.29 \N \N \N \N 1835 13 30 jsmith 68 0 T -1 \N \N \N \N \N \N \N \N \N \N \N 0.00 \N 0.00 \N \N \N \N 1836 13 37 mfgadmin 13 3 I 120 \N \N \N \N \N \N \N \N \N \N 68 0.00 \N 0.00 \N \N \N \N 1837 4 39 mfgadmin 1 0 G 3 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1838 4 39 mfgadmin 2 1 G 4 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N \N 3 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1839 4 39 mfgadmin 3 2 I 2 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1840 4 39 mfgadmin 4 2 I 224 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1841 4 39 mfgadmin 5 2 I 225 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1842 4 39 mfgadmin 6 2 I 228 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.00000000000000000000 0.00 \N \N \N \N 1843 4 39 mfgadmin 7 2 I 3 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1844 4 39 mfgadmin 9 1 G 5 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1845 4 39 mfgadmin 10 2 I 4 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 5 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1846 4 39 mfgadmin 13 0 G 7 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1847 4 39 mfgadmin 14 1 G 8 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1848 4 39 mfgadmin 15 2 I 231 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1849 4 39 mfgadmin 16 2 I 232 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1850 4 39 mfgadmin 17 2 I 5 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1851 4 39 mfgadmin 18 2 I 8 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1852 4 39 mfgadmin 19 2 I 226 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1853 4 39 mfgadmin 20 2 I 227 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1854 4 39 mfgadmin 21 2 I 7 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1855 4 39 mfgadmin 22 2 I 6 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1856 4 39 mfgadmin 23 2 I 11 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1857 4 39 mfgadmin 24 2 I 9 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1858 4 39 mfgadmin 25 2 I 10 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1859 4 39 mfgadmin 8 2 T -1 \N 0.00 \N \N \N \N 0.00000000000000000000 \N \N \N 4 0.00 0.00000000000000000000 0.00 0.00000000000000000000 Total Sales \N \N 1860 4 39 mfgadmin 11 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 5 0.00 0.00000000000000000000 0.00 0.00000000000000000000 Total Cost of Goods Sold \N \N 1861 4 39 mfgadmin 12 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 0.00 0.00000000000000000000 0.00 0.00000000000000000000 Total Net Revenue \N \N 1862 4 39 mfgadmin 26 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 Total General Expenses \N \N 1863 4 39 mfgadmin 27 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 0.00 0.00000000000000000000 0.00 0.00000000000000000000 Total Expenses \N \N 1864 4 39 mfgadmin 28 0 T -1 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N \N 0.00 \N 0.00 \N Net Income \N \N 1865 4 38 mfgadmin 22 2 I 6 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1866 4 38 mfgadmin 23 2 I 11 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1867 4 38 mfgadmin 24 2 I 9 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1868 4 38 mfgadmin 25 2 I 10 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1869 4 38 mfgadmin 8 2 T -1 \N 0.00 \N \N \N \N 0.00000000000000000000 \N \N \N 4 0.00 0.00000000000000000000 0.00 0.00000000000000000000 Total Sales \N \N 1870 4 38 mfgadmin 16 2 I 232 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1871 4 37 mfgadmin 1 0 G 3 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1872 4 37 mfgadmin 2 1 G 4 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1873 4 37 mfgadmin 3 2 I 2 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1874 4 37 mfgadmin 4 2 I 224 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1875 4 37 mfgadmin 5 2 I 225 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1876 4 37 mfgadmin 6 2 I 228 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.00000000000000000000 0.00 \N \N \N \N 1877 4 37 mfgadmin 7 2 I 3 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1878 4 37 mfgadmin 9 1 G 5 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 0.00 \N 0.00 \N \N \N \N 1879 4 37 mfgadmin 10 2 I 4 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 5 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1880 4 37 mfgadmin 11 1 G 6 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 3 0.00 \N 0.00 \N \N \N \N 1881 4 37 mfgadmin 13 0 G 7 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 1882 4 37 mfgadmin 14 1 G 8 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1883 4 37 mfgadmin 15 2 I 231 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1884 4 37 mfgadmin 16 2 I 232 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1885 4 37 mfgadmin 17 2 I 5 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1886 4 37 mfgadmin 18 2 I 8 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1887 4 37 mfgadmin 19 2 I 226 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1888 4 37 mfgadmin 20 2 I 227 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1889 4 37 mfgadmin 21 2 I 7 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1890 4 37 mfgadmin 22 2 I 6 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1891 4 37 mfgadmin 23 2 I 11 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1892 4 37 mfgadmin 24 2 I 9 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1893 4 37 mfgadmin 25 2 I 10 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1894 4 37 mfgadmin 27 0 G 9 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 1895 4 37 mfgadmin 8 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 4 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1896 4 37 mfgadmin 12 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1897 4 37 mfgadmin 26 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1898 4 37 mfgadmin 28 0 T -1 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N \N 0.00 \N 0.00 \N \N \N \N 1899 13 37 mfgadmin 1 0 G 60 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 1900 13 37 mfgadmin 2 1 G 61 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 0.00 \N 0.00 \N \N \N \N 1901 13 37 mfgadmin 3 2 G 62 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1902 13 37 mfgadmin 4 3 G 63 \N \N \N \N \N \N \N \N \N \N 62 0.00 \N 0.00 \N \N \N \N 1903 13 37 mfgadmin 40 3 I 132 \N \N \N \N \N \N \N \N \N \N 75 0.00 \N 0.00 \N \N \N \N 1904 13 37 mfgadmin 6 2 G 65 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1905 13 37 mfgadmin 7 3 I 119 \N \N \N \N \N \N \N \N \N \N 65 0.00 \N 0.00 \N \N \N \N 1906 13 37 mfgadmin 9 2 G 66 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1907 13 37 mfgadmin 10 2 G 67 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1908 13 37 mfgadmin 12 2 G 68 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1909 13 37 mfgadmin 15 2 G 69 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1910 13 37 mfgadmin 16 3 I 121 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1911 13 37 mfgadmin 17 3 I 122 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1912 13 37 mfgadmin 18 3 I 123 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1913 13 37 mfgadmin 19 3 I 124 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1914 13 37 mfgadmin 20 3 I 137 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1915 13 37 mfgadmin 21 3 I 138 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1916 13 37 mfgadmin 23 2 G 72 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1917 13 37 mfgadmin 24 3 I 125 \N \N \N \N \N \N \N \N \N \N 72 0.00 \N 0.00 \N \N \N \N 1918 13 37 mfgadmin 26 2 G 70 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1919 13 37 mfgadmin 27 2 G 71 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1920 13 37 mfgadmin 28 3 I 126 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1921 13 37 mfgadmin 29 3 I 127 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1922 13 37 mfgadmin 30 3 I 128 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1923 13 37 mfgadmin 31 3 I 129 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1924 13 37 mfgadmin 32 3 I 130 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1925 13 37 mfgadmin 33 3 I 131 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1926 13 37 mfgadmin 35 2 G 73 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1927 13 37 mfgadmin 37 2 G 74 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1928 13 37 mfgadmin 39 2 G 75 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1929 13 37 mfgadmin 42 2 G 76 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1930 13 37 mfgadmin 44 2 G 77 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1931 13 37 mfgadmin 46 1 G 78 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 0.00 \N 0.00 \N \N \N \N 1932 13 37 mfgadmin 47 2 G 79 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1933 13 37 mfgadmin 48 3 I 133 \N \N \N \N \N \N \N \N \N \N 79 0.00 \N 0.00 \N \N \N \N 1934 13 37 mfgadmin 50 2 G 80 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1935 13 37 mfgadmin 52 2 G 81 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1936 13 37 mfgadmin 54 1 G 82 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 60 0.00 \N 0.00 \N \N \N \N 1937 13 37 mfgadmin 55 2 G 83 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1938 13 37 mfgadmin 56 3 I 139 \N \N \N \N \N \N \N \N \N \N 83 0.00 \N 0.00 \N \N \N \N 1939 13 37 mfgadmin 58 2 G 84 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1940 13 37 mfgadmin 59 3 I 134 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1941 13 37 mfgadmin 60 3 I 135 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1942 13 37 mfgadmin 61 3 I 136 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1943 13 37 mfgadmin 63 2 G 85 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1944 13 37 mfgadmin 66 0 G 86 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 1945 13 37 mfgadmin 67 1 I 108 \N \N \N \N \N \N \N \N \N \N 86 0.00 \N 0.00 \N \N \N \N 1946 13 37 mfgadmin 5 3 T -1 \N \N \N \N \N \N \N \N \N \N 62 0.00 \N 0.00 \N \N \N \N 1947 13 37 mfgadmin 8 3 T -1 \N \N \N \N \N \N \N \N \N \N 65 0.00 \N 0.00 \N \N \N \N 1948 13 37 mfgadmin 11 3 T -1 \N \N \N \N \N \N \N \N \N \N 67 0.00 \N 0.00 \N \N \N \N 1949 13 37 mfgadmin 14 3 T -1 \N \N \N \N \N \N \N \N \N \N 68 0.00 \N 0.00 \N \N \N \N 1950 13 37 mfgadmin 22 3 T -1 \N \N \N \N \N \N \N \N \N \N 69 0.00 \N 0.00 \N \N \N \N 1951 13 37 mfgadmin 25 3 T -1 \N \N \N \N \N \N \N \N \N \N 72 0.00 \N 0.00 \N \N \N \N 1952 13 37 mfgadmin 34 3 T -1 \N \N \N \N \N \N \N \N \N \N 71 0.00 \N 0.00 \N \N \N \N 1953 13 37 mfgadmin 36 3 T -1 \N \N \N \N \N \N \N \N \N \N 73 0.00 \N 0.00 \N \N \N \N 1954 13 37 mfgadmin 38 3 T -1 \N \N \N \N \N \N \N \N \N \N 74 0.00 \N 0.00 \N \N \N \N 1955 13 37 mfgadmin 41 3 T -1 \N \N \N \N \N \N \N \N \N \N 75 0.00 \N 0.00 \N \N \N \N 1956 13 37 mfgadmin 43 3 T -1 \N \N \N \N \N \N \N \N \N \N 76 0.00 \N 0.00 \N \N \N \N 1957 13 37 mfgadmin 45 2 T -1 \N \N \N \N \N \N \N \N \N \N 61 0.00 \N 0.00 \N \N \N \N 1958 13 37 mfgadmin 49 3 T -1 \N \N \N \N \N \N \N \N \N \N 79 0.00 \N 0.00 \N \N \N \N 1959 13 37 mfgadmin 51 3 T -1 \N \N \N \N \N \N \N \N \N \N 80 0.00 \N 0.00 \N \N \N \N 1960 13 37 mfgadmin 53 2 T -1 \N \N \N \N \N \N \N \N \N \N 78 0.00 \N 0.00 \N \N \N \N 1961 13 37 mfgadmin 57 3 T -1 \N \N \N \N \N \N \N \N \N \N 83 0.00 \N 0.00 \N \N \N \N 1962 13 37 mfgadmin 62 3 T -1 \N \N \N \N \N \N \N \N \N \N 84 0.00 \N 0.00 \N \N \N \N 1963 13 37 mfgadmin 64 2 T -1 \N \N \N \N \N \N \N \N \N \N 82 0.00 \N 0.00 \N \N \N \N 1964 13 37 mfgadmin 65 1 T -1 \N \N \N \N \N \N \N \N \N \N 60 0.00 \N 0.00 \N \N \N \N 1965 13 37 mfgadmin 68 0 T -1 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N \N 0.00 \N 0.00 \N \N \N \N 1966 4 38 mfgadmin 11 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 5 0.00 0.00000000000000000000 0.00 0.00000000000000000000 Total Cost of Goods Sold \N \N 1967 4 38 mfgadmin 12 1 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 0.00 0.00000000000000000000 0.00 0.00000000000000000000 Total Net Revenue \N \N 1968 4 38 mfgadmin 26 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 Total General Expense \N \N 1969 4 38 mfgadmin 27 1 T -1 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 7 \N \N 0.00 0.00000000000000000000 Total Expenses \N \N 1970 4 38 mfgadmin 28 0 T -1 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N \N 0.00 \N 0.00 \N Net Income \N \N 1971 4 38 mfgadmin 1 0 G 3 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 -1 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1972 4 38 mfgadmin 2 1 G 4 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N \N 3 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1973 4 38 mfgadmin 3 2 I 2 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1974 4 38 mfgadmin 4 2 I 224 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1975 4 38 mfgadmin 5 2 I 225 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1976 4 38 mfgadmin 6 2 I 228 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.00000000000000000000 0.00 \N \N \N \N 1977 4 38 mfgadmin 7 2 I 3 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 4 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1978 4 38 mfgadmin 9 1 G 5 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 3 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1979 4 38 mfgadmin 10 2 I 4 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 5 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1980 4 38 mfgadmin 13 0 G 7 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 0.00000000000000000000 \N \N \N 1981 4 38 mfgadmin 14 1 G 8 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 7 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1982 4 38 mfgadmin 15 2 I 231 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1983 4 38 mfgadmin 17 2 I 5 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1984 4 38 mfgadmin 18 2 I 8 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1985 4 38 mfgadmin 19 2 I 226 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1986 4 38 mfgadmin 20 2 I 227 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1987 4 38 mfgadmin 21 2 I 7 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 8 0.00 0.00000000000000000000 0.00 0.00000000000000000000 \N \N \N 1988 11 39 mfgadmin 9 2 I 71 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1989 11 39 mfgadmin 10 2 I 72 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1990 11 39 mfgadmin 11 2 I 73 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1991 11 39 mfgadmin 12 2 I 74 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1992 11 39 mfgadmin 13 2 I 75 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 1993 11 39 mfgadmin 15 1 G 46 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 1994 11 39 mfgadmin 16 2 I 76 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 1995 11 39 mfgadmin 18 1 G 47 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 1996 11 39 mfgadmin 21 0 G 36 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 1997 11 39 mfgadmin 22 1 G 37 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 0.00 \N \N \N \N 1998 11 39 mfgadmin 23 2 G 38 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 1999 11 39 mfgadmin 24 3 I 47 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2000 11 39 mfgadmin 25 3 I 46 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2001 11 39 mfgadmin 26 3 I 48 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2002 11 39 mfgadmin 27 3 I 49 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2003 11 39 mfgadmin 28 3 I 50 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2004 11 39 mfgadmin 29 3 I 51 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2005 11 39 mfgadmin 30 3 I 215 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2006 11 39 mfgadmin 32 2 G 39 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 2007 11 39 mfgadmin 33 3 I 140 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 2008 11 39 mfgadmin 36 1 G 40 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 0.00 \N \N \N \N 2009 11 39 mfgadmin 37 2 G 41 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 0.00 \N \N \N \N 2010 11 39 mfgadmin 38 3 I 52 \N 0.00 \N \N \N \N \N \N \N \N 41 \N \N 0.00 \N \N \N \N 2011 11 39 mfgadmin 40 2 G 42 \N 0.00 \N \N \N \N \N \N \N \N 40 \N \N 0.00 \N \N \N \N 2012 11 39 mfgadmin 41 2 G 43 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 0.00 \N \N \N \N 2013 11 39 mfgadmin 42 3 I 63 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 2014 11 39 mfgadmin 43 3 I 64 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 2015 11 39 mfgadmin 14 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N Total Current Assets \N \N 2016 11 39 mfgadmin 17 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N Total Fixed Assets \N \N 2017 11 39 mfgadmin 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 47 \N \N 0.00 \N Total Other Assets \N \N 2018 11 39 mfgadmin 20 1 T -1 \N 0.00 \N \N \N \N \N \N \N \N 44 \N \N 0.00 \N Total Assets \N \N 2019 11 39 mfgadmin 31 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N Total Current Liabilities \N \N 2020 11 39 mfgadmin 34 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N Total Long Term Liabilities \N \N 2021 11 39 mfgadmin 35 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 37 \N \N 0.00 \N Total Liabilities \N \N 2022 11 39 mfgadmin 39 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 41 \N \N 0.00 \N Total Shareholders Equity \N \N 2023 11 39 mfgadmin 44 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N Total Retained Earnings \N \N 2024 11 39 mfgadmin 45 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 40 \N \N 0.00 \N Total Owners Equity \N \N 2025 11 39 mfgadmin 46 1 T -1 \N 0.00 \N \N \N \N \N \N \N \N 36 \N \N 0.00 \N Total Liabilities and Owners Equity \N \N 2026 11 39 mfgadmin 47 0 T -1 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N \N 0.00 \N 0.00 \N Balance Check Sum \N \N 2027 11 39 mfgadmin 1 0 G 44 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 2028 11 39 mfgadmin 2 1 G 45 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 2029 11 39 mfgadmin 3 2 I 65 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2030 11 39 mfgadmin 4 2 I 66 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2031 11 39 mfgadmin 5 2 I 67 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2032 11 39 mfgadmin 6 2 I 68 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2033 11 39 mfgadmin 7 2 I 69 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2034 11 39 mfgadmin 8 2 I 70 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2035 11 38 mfgadmin 37 2 G 41 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 0.00 \N \N \N \N 2036 11 38 mfgadmin 38 3 I 52 \N 0.00 \N \N \N \N \N \N \N \N 41 \N \N 0.00 \N \N \N \N 2037 11 38 mfgadmin 40 2 G 42 \N 0.00 \N \N \N \N \N \N \N \N 40 \N \N 0.00 \N \N \N \N 2038 11 38 mfgadmin 41 2 G 43 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 0.00 \N \N \N \N 2039 11 38 mfgadmin 42 3 I 63 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 2040 11 38 mfgadmin 43 3 I 64 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 2041 11 38 mfgadmin 14 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N Total Current Assets \N \N 2042 11 38 mfgadmin 17 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N Total Fixed Assets \N \N 2043 11 38 mfgadmin 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 47 \N \N 0.00 \N Total Other Assets \N \N 2044 11 38 mfgadmin 20 1 T -1 \N 0.00 \N \N \N \N \N \N \N \N 44 \N \N 0.00 \N Total Assets \N \N 2045 11 38 mfgadmin 31 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N Total Current Liabilities \N \N 2046 11 38 mfgadmin 35 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 37 \N \N 0.00 \N Total Liabilities \N \N 2047 11 38 mfgadmin 39 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 41 \N \N 0.00 \N Total Shareholders Equity \N \N 2048 11 38 mfgadmin 44 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N Total Retained Earnings \N \N 2049 11 38 mfgadmin 45 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 40 \N \N 0.00 \N Total Owners Equity \N \N 2050 11 38 mfgadmin 46 1 T -1 \N 0.00 \N \N \N \N \N \N \N \N 36 \N \N 0.00 \N Total Liabilities and Owners Equity \N \N 2051 11 38 mfgadmin 47 0 T -1 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N \N 0.00 \N 0.00 \N Balance Check Sum \N \N 2052 11 38 mfgadmin 1 0 G 44 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 2053 11 38 mfgadmin 2 1 G 45 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 2054 11 38 mfgadmin 3 2 I 65 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2055 11 38 mfgadmin 4 2 I 66 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2056 11 38 mfgadmin 5 2 I 67 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2057 11 38 mfgadmin 6 2 I 68 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2058 11 38 mfgadmin 7 2 I 69 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2059 11 38 mfgadmin 8 2 I 70 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2060 11 38 mfgadmin 9 2 I 71 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2061 11 38 mfgadmin 10 2 I 72 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2062 11 37 mfgadmin 1 0 G 44 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 2063 11 37 mfgadmin 2 1 G 45 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 2064 11 37 mfgadmin 3 2 I 65 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2065 11 37 mfgadmin 4 2 I 66 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2066 11 37 mfgadmin 5 2 I 67 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2067 11 37 mfgadmin 6 2 I 68 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2068 11 37 mfgadmin 7 2 I 69 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2069 11 37 mfgadmin 8 2 I 70 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2070 11 37 mfgadmin 9 2 I 71 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2071 11 37 mfgadmin 10 2 I 72 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2072 11 37 mfgadmin 11 2 I 73 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2073 11 37 mfgadmin 12 2 I 74 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2074 11 37 mfgadmin 13 2 I 75 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2075 11 37 mfgadmin 15 1 G 46 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 2076 11 37 mfgadmin 16 2 I 76 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 2077 11 37 mfgadmin 18 1 G 47 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 2078 11 37 mfgadmin 21 0 G 36 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 2079 11 37 mfgadmin 22 1 G 37 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 0.00 \N \N \N \N 2080 11 37 mfgadmin 23 2 G 38 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 2081 11 37 mfgadmin 24 3 I 47 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2082 11 37 mfgadmin 25 3 I 46 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2083 11 37 mfgadmin 26 3 I 48 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2084 11 37 mfgadmin 27 3 I 49 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2085 11 37 mfgadmin 28 3 I 50 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2086 11 37 mfgadmin 29 3 I 51 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2087 11 37 mfgadmin 30 3 I 215 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2088 11 37 mfgadmin 32 2 G 39 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 2089 11 37 mfgadmin 33 3 I 140 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 2090 11 37 mfgadmin 36 1 G 40 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 0.00 \N \N \N \N 2091 11 37 mfgadmin 37 2 G 41 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 0.00 \N \N \N \N 2092 11 37 mfgadmin 38 3 I 52 \N 0.00 \N \N \N \N \N \N \N \N 41 \N \N 0.00 \N \N \N \N 2093 11 37 mfgadmin 40 2 G 42 \N 0.00 \N \N \N \N \N \N \N \N 40 \N \N 0.00 \N \N \N \N 2094 11 37 mfgadmin 41 2 G 43 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 40 0.00 \N 0.00 \N \N \N \N 2095 11 37 mfgadmin 42 3 I 63 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 2096 11 37 mfgadmin 43 3 I 64 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N \N \N \N 2097 11 37 mfgadmin 14 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N Total Current Assets \N \N 2098 11 37 mfgadmin 17 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N Total Fixed Assets \N \N 2099 11 37 mfgadmin 19 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 47 \N \N 0.00 \N Total Other Assets \N \N 2100 11 37 mfgadmin 20 1 T -1 \N 0.00 \N \N \N \N \N \N \N \N 44 \N \N 0.00 \N Total Assets \N \N 2101 11 37 mfgadmin 31 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N Total Current Liabilities \N \N 2102 11 37 mfgadmin 34 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N Total Long Term Liabilities \N \N 2103 11 37 mfgadmin 35 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 37 \N \N 0.00 \N Total Liabilities \N \N 2104 11 37 mfgadmin 39 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 41 \N \N 0.00 \N Total Shareholders Equity \N \N 2105 11 37 mfgadmin 44 3 T -1 \N 0.00 \N \N \N \N \N \N \N \N 43 \N \N 0.00 \N Total Retained Earnings \N \N 2106 11 37 mfgadmin 45 2 T -1 \N 0.00 \N \N \N \N \N \N \N \N 40 \N \N 0.00 \N Total Owners Equity \N \N 2107 11 37 mfgadmin 46 1 T -1 \N 0.00 \N \N \N \N \N \N \N \N 36 \N \N 0.00 \N Total Liabilities and Owners Equity \N \N 2108 11 37 mfgadmin 47 0 T -1 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N \N 0.00 \N 0.00 \N Balance Check Sum \N \N 2109 11 38 mfgadmin 11 2 I 73 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2110 11 38 mfgadmin 12 2 I 74 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2111 11 38 mfgadmin 13 2 I 75 \N 0.00 \N \N \N \N \N \N \N \N 45 \N \N 0.00 \N \N \N \N 2112 11 38 mfgadmin 15 1 G 46 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 2113 11 38 mfgadmin 16 2 I 76 \N 0.00 \N \N \N \N \N \N \N \N 46 \N \N 0.00 \N \N \N \N 2114 11 38 mfgadmin 18 1 G 47 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 44 0.00 \N 0.00 \N \N \N \N 2115 11 38 mfgadmin 21 0 G 36 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N \N 2116 11 38 mfgadmin 22 1 G 37 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 0.00 \N \N \N \N 2117 11 38 mfgadmin 23 2 G 38 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 2118 11 38 mfgadmin 24 3 I 47 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2119 11 38 mfgadmin 25 3 I 46 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2120 11 38 mfgadmin 26 3 I 48 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2121 11 38 mfgadmin 27 3 I 49 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2122 11 38 mfgadmin 28 3 I 50 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2123 11 38 mfgadmin 29 3 I 51 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2124 11 38 mfgadmin 30 3 I 215 \N 0.00 \N \N \N \N \N \N \N \N 38 \N \N 0.00 \N \N \N \N 2125 11 38 mfgadmin 32 2 G 39 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 37 0.00 \N 0.00 \N \N \N \N 2126 11 38 mfgadmin 33 3 I 140 \N 0.00 \N \N \N \N \N \N \N \N 39 \N \N 0.00 \N \N \N \N 2127 11 38 mfgadmin 36 1 G 40 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 36 0.00 \N 0.00 \N \N \N \N 2128 15 44 mfgadmin 2 0 G 92 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N M 2129 15 44 mfgadmin 3 1 G 93 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 92 0.00 \N 0.00 \N \N \N M 2130 15 44 mfgadmin 4 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 103 M 2131 15 44 mfgadmin 5 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 117 M 2132 15 44 mfgadmin 6 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 118 M 2133 15 44 mfgadmin 7 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 121 M 2134 15 44 mfgadmin 8 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 101 M 2135 15 44 mfgadmin 9 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 115 M 2136 15 44 mfgadmin 11 1 G 94 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 92 0.00 \N 0.00 \N \N \N M 2137 15 44 mfgadmin 12 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 108 M 2138 15 44 mfgadmin 13 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 122 M 2139 15 44 mfgadmin 14 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 123 M 2140 15 44 mfgadmin 15 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 97 M 2141 15 44 mfgadmin 16 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 119 M 2142 15 44 mfgadmin 17 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 120 M 2143 15 44 mfgadmin 18 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 112 M 2144 15 44 mfgadmin 19 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 98 M 2145 15 44 mfgadmin 20 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 110 M 2146 15 44 mfgadmin 21 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 91 M 2147 15 44 mfgadmin 22 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 92 M 2148 15 44 mfgadmin 23 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 93 M 2149 15 44 mfgadmin 10 2 T -1 \N \N \N \N 0.00 \N \N \N \N \N 93 0.00 \N \N \N Total Net Revenue \N M 2150 15 44 mfgadmin 24 2 T -1 \N \N \N \N 0.00 \N \N \N \N \N 94 0.00 \N \N \N Total Net Expenses \N M 2151 15 44 mfgadmin 25 1 T -1 \N \N \N \N 0.00 \N \N \N \N \N 92 0.00 \N \N \N Net Income \N M 2152 14 39 mfgadmin 2 0 G 87 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N Y 2153 14 39 mfgadmin 3 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 109 Y 2154 14 39 mfgadmin 4 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 106 Y 2155 14 39 mfgadmin 5 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 86 Y 2156 14 39 mfgadmin 6 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 85 Y 2157 14 39 mfgadmin 7 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 96 Y 2158 14 39 mfgadmin 8 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 100 Y 2159 14 39 mfgadmin 9 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 87 Y 2160 14 39 mfgadmin 10 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 90 Y 2161 14 39 mfgadmin 11 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 88 Y 2162 14 39 mfgadmin 12 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 111 Y 2163 14 39 mfgadmin 13 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 89 Y 2164 14 39 mfgadmin 14 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 83 Y 2165 14 39 mfgadmin 16 0 G 88 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N Y 2166 14 39 mfgadmin 17 1 G 89 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 88 0.00 \N 0.00 \N \N \N Y 2167 14 39 mfgadmin 18 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 99 Y 2168 14 39 mfgadmin 19 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 124 Y 2169 14 39 mfgadmin 20 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 94 Y 2170 14 39 mfgadmin 21 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 102 Y 2171 14 39 mfgadmin 22 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 104 Y 2172 14 39 mfgadmin 23 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 107 Y 2173 14 39 mfgadmin 24 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 105 Y 2174 14 39 mfgadmin 25 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 95 Y 2175 14 39 mfgadmin 26 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 116 Y 2176 14 39 mfgadmin 28 1 G 90 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 88 0.00 \N 0.00 \N \N \N Y 2177 14 39 mfgadmin 29 2 I 239 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 90 0.00 \N \N \N \N 113 Y 2178 14 39 mfgadmin 30 2 I 239 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 90 0.00 \N \N \N \N 84 Y 2179 14 39 mfgadmin 31 2 G 91 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 90 \N \N \N \N \N \N Y 2180 14 39 mfgadmin 15 1 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 87 \N \N \N \N Total Assets \N Y 2181 14 39 mfgadmin 27 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 \N \N \N \N Total Liabilities \N Y 2182 14 39 mfgadmin 32 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 90 \N \N \N \N Total Owners Equity \N Y 2183 14 39 mfgadmin 33 1 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 88 \N \N \N \N Total Liabilities and Owners Equity \N Y 2184 14 63 mfgadmin 2 0 G 87 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N Y 2185 14 63 mfgadmin 3 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 109 Y 2186 14 63 mfgadmin 4 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 106 Y 2187 14 63 mfgadmin 5 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 86 Y 2188 14 63 mfgadmin 6 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 85 Y 2189 14 63 mfgadmin 7 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 96 Y 2190 14 63 mfgadmin 8 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 100 Y 2191 14 63 mfgadmin 9 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 87 Y 2192 14 63 mfgadmin 10 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 90 Y 2193 14 63 mfgadmin 11 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 88 Y 2194 14 63 mfgadmin 12 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 111 Y 2195 14 63 mfgadmin 13 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 89 Y 2196 14 63 mfgadmin 14 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 83 Y 2197 14 63 mfgadmin 16 0 G 88 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N Y 2198 14 63 mfgadmin 17 1 G 89 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 88 0.00 \N 0.00 \N \N \N Y 2199 14 63 mfgadmin 18 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 99 Y 2200 14 63 mfgadmin 19 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 124 Y 2201 14 63 mfgadmin 20 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 94 Y 2202 14 63 mfgadmin 21 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 102 Y 2203 14 63 mfgadmin 22 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 104 Y 2204 14 63 mfgadmin 23 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 107 Y 2205 14 63 mfgadmin 24 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 105 Y 2206 14 63 mfgadmin 25 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 95 Y 2207 14 63 mfgadmin 26 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 116 Y 2208 14 63 mfgadmin 28 1 G 90 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 88 0.00 \N 0.00 \N \N \N Y 2209 14 63 mfgadmin 29 2 I 239 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 90 0.00 \N \N \N \N 113 Y 2210 14 63 mfgadmin 30 2 I 239 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 90 0.00 \N \N \N \N 84 Y 2211 14 63 mfgadmin 31 2 G 91 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 90 \N \N \N \N \N \N Y 2212 14 63 mfgadmin 15 1 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 87 \N \N \N \N Total Assets \N Y 2213 14 63 mfgadmin 27 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 \N \N \N \N Total Liabilities \N Y 2214 14 63 mfgadmin 32 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 90 \N \N \N \N Total Owners Equity \N Y 2215 14 63 mfgadmin 33 1 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 88 \N \N \N \N Total Liabilities and Owners Equity \N Y 2216 14 51 mfgadmin 2 0 G 87 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N Y 2217 14 51 mfgadmin 3 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 109 Y 2218 14 51 mfgadmin 4 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 106 Y 2219 14 51 mfgadmin 5 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 86 Y 2220 14 51 mfgadmin 6 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 85 Y 2221 14 51 mfgadmin 7 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 96 Y 2222 14 51 mfgadmin 8 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 100 Y 2223 14 51 mfgadmin 9 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 87 Y 2224 14 51 mfgadmin 10 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 90 Y 2225 14 51 mfgadmin 11 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 88 Y 2226 14 51 mfgadmin 12 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 111 Y 2227 14 51 mfgadmin 13 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 89 Y 2228 14 51 mfgadmin 14 1 I 237 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 87 0.00 \N \N \N \N 83 Y 2229 14 51 mfgadmin 16 0 G 88 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N Y 2230 14 51 mfgadmin 17 1 G 89 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 88 0.00 \N 0.00 \N \N \N Y 2231 14 51 mfgadmin 18 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 99 Y 2232 14 51 mfgadmin 19 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 124 Y 2233 14 51 mfgadmin 20 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 94 Y 2234 14 51 mfgadmin 21 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 102 Y 2235 14 51 mfgadmin 22 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 104 Y 2236 14 51 mfgadmin 23 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 107 Y 2237 14 51 mfgadmin 24 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 105 Y 2238 14 51 mfgadmin 25 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 95 Y 2239 14 51 mfgadmin 26 2 I 238 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 0.00 \N \N \N \N 116 Y 2240 14 51 mfgadmin 28 1 G 90 0.00 0.00 0.00 0.00 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 88 0.00 \N 0.00 \N \N \N Y 2241 14 51 mfgadmin 29 2 I 239 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 90 0.00 \N \N \N \N 113 Y 2242 14 51 mfgadmin 30 2 I 239 \N 0.00 \N \N 0 \N 0.00000000000000000000 \N \N 0.00000000000000000000 90 0.00 \N \N \N \N 84 Y 2243 14 51 mfgadmin 31 2 G 91 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 90 \N \N \N \N \N \N Y 2244 14 51 mfgadmin 15 1 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 87 \N \N \N \N Total Assets \N Y 2245 14 51 mfgadmin 27 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 89 \N \N \N \N Total Liabilities \N Y 2246 14 51 mfgadmin 32 2 T -1 \N 0.00 \N \N 0.00 \N 0.00000000000000000000 \N \N 0.00000000000000000000 90 \N \N \N \N Total Owners Equity \N Y 2247 14 51 mfgadmin 33 1 T -1 \N 0.00 \N \N 0.00 \N \N \N \N \N 88 \N \N \N \N Total Liabilities and Owners Equity \N Y 2248 15 39 mfgadmin 2 0 G 92 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N Y 2249 15 39 mfgadmin 3 1 G 93 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 92 0.00 \N 0.00 \N \N \N Y 2250 15 39 mfgadmin 4 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 103 Y 2251 15 39 mfgadmin 5 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 117 Y 2252 15 39 mfgadmin 6 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 118 Y 2253 15 39 mfgadmin 7 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 121 Y 2254 15 39 mfgadmin 8 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 101 Y 2255 15 39 mfgadmin 9 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 115 Y 2256 15 39 mfgadmin 11 1 G 94 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 92 0.00 \N 0.00 \N \N \N Y 2257 15 39 mfgadmin 12 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 108 Y 2258 15 39 mfgadmin 13 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 122 Y 2259 15 39 mfgadmin 14 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 123 Y 2260 15 39 mfgadmin 15 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 97 Y 2261 15 39 mfgadmin 16 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 119 Y 2262 15 39 mfgadmin 17 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 120 Y 2263 15 39 mfgadmin 18 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 112 Y 2264 15 39 mfgadmin 19 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 98 Y 2265 15 39 mfgadmin 20 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 110 Y 2266 15 39 mfgadmin 21 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 91 Y 2267 15 39 mfgadmin 22 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 92 Y 2268 15 39 mfgadmin 23 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 93 Y 2269 15 39 mfgadmin 10 2 T -1 \N \N \N \N 0.00 \N \N \N \N \N 93 0.00 \N \N \N Total Net Revenue \N Y 2270 15 39 mfgadmin 24 2 T -1 \N \N \N \N 0.00 \N \N \N \N \N 94 0.00 \N \N \N Total Net Expenses \N Y 2271 15 39 mfgadmin 25 1 T -1 \N \N \N \N 0.00 \N \N \N \N \N 92 0.00 \N \N \N Net Income \N Y 2272 15 51 mfgadmin 4 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 103 Y 2273 15 51 mfgadmin 2 0 G 92 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N Y 2274 15 51 mfgadmin 3 1 G 93 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 92 0.00 \N 0.00 \N \N \N Y 2275 15 51 mfgadmin 5 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 117 Y 2276 15 51 mfgadmin 6 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 118 Y 2277 15 51 mfgadmin 7 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 121 Y 2278 15 51 mfgadmin 8 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 101 Y 2279 15 51 mfgadmin 9 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 115 Y 2280 15 51 mfgadmin 11 1 G 94 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 92 0.00 \N 0.00 \N \N \N Y 2281 15 51 mfgadmin 12 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 108 Y 2282 15 51 mfgadmin 13 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 122 Y 2283 15 51 mfgadmin 14 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 123 Y 2284 15 51 mfgadmin 15 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 97 Y 2285 15 51 mfgadmin 16 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 119 Y 2286 15 51 mfgadmin 17 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 120 Y 2287 15 51 mfgadmin 18 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 112 Y 2288 15 51 mfgadmin 19 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 98 Y 2289 15 51 mfgadmin 20 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 110 Y 2290 15 51 mfgadmin 21 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 91 Y 2291 15 51 mfgadmin 22 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 92 Y 2292 15 51 mfgadmin 23 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 93 Y 2293 15 51 mfgadmin 10 2 T -1 \N \N \N \N 0.00 \N \N \N \N \N 93 0.00 \N \N \N Total Net Revenue \N Y 2294 15 51 mfgadmin 24 2 T -1 \N \N \N \N 0.00 \N \N \N \N \N 94 0.00 \N \N \N Total Net Expenses \N Y 2295 15 51 mfgadmin 25 1 T -1 \N \N \N \N 0.00 \N \N \N \N \N 92 0.00 \N \N \N Net Income \N Y 2296 15 63 mfgadmin 2 0 G 92 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N -1 0.00 \N 0.00 \N \N \N Y 2297 15 63 mfgadmin 3 1 G 93 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 92 0.00 \N 0.00 \N \N \N Y 2298 15 63 mfgadmin 4 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 103 Y 2299 15 63 mfgadmin 5 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 117 Y 2300 15 63 mfgadmin 6 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 118 Y 2301 15 63 mfgadmin 7 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 121 Y 2302 15 63 mfgadmin 8 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 101 Y 2303 15 63 mfgadmin 9 2 I 242 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 93 0.00 0.00000000000000000000 \N \N \N 115 Y 2304 15 63 mfgadmin 11 1 G 94 0.00 0.00 0.00 0.00 0.00 \N \N \N \N \N 92 0.00 \N 0.00 \N \N \N Y 2305 15 63 mfgadmin 12 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 108 Y 2306 15 63 mfgadmin 13 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 122 Y 2307 15 63 mfgadmin 14 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 123 Y 2308 15 63 mfgadmin 15 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 97 Y 2309 15 63 mfgadmin 16 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 119 Y 2310 15 63 mfgadmin 17 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 120 Y 2311 15 63 mfgadmin 18 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 112 Y 2312 15 63 mfgadmin 19 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 98 Y 2313 15 63 mfgadmin 20 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 110 Y 2314 15 63 mfgadmin 21 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 91 Y 2315 15 63 mfgadmin 22 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 92 Y 2316 15 63 mfgadmin 23 2 I 243 \N \N \N \N 0 \N \N \N \N 0.00000000000000000000 94 0.00 0.00000000000000000000 \N \N \N 93 Y 2317 15 63 mfgadmin 10 2 T -1 \N \N \N \N 0.00 \N \N \N \N \N 93 0.00 \N \N \N Total Net Revenue \N Y 2318 15 63 mfgadmin 24 2 T -1 \N \N \N \N 0.00 \N \N \N \N \N 94 0.00 \N \N \N Total Net Expenses \N Y 2319 15 63 mfgadmin 25 1 T -1 \N \N \N \N 0.00 \N \N \N \N \N 92 0.00 \N \N \N Net Income \N Y 2320 16 73 admin 1 0 G 95 0.00 0.00 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 -1 0.00 0.00000000000000000000 0.00 \N \N \N M 2321 16 73 admin 2 1 G 97 0.00 0.00 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 95 0.00 0.00000000000000000000 0.00 \N \N \N M 2322 16 73 admin 3 2 G 100 0.00 0.00 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 97 0.00 0.00000000000000000000 0.00 \N \N \N M 2323 16 73 admin 4 3 G 111 \N \N 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 100 0.00 0.00000000000000000000 \N \N \N \N M 2324 16 73 admin 6 2 G 101 0.00 0.00 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 97 0.00 0.00000000000000000000 0.00 \N \N \N M 2325 16 73 admin 7 3 I 246 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 101 0.00 0.00000000000000000000 \N \N \N 112 M 2326 16 73 admin 9 2 G 102 0.00 0.00 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 97 0.00 0.00000000000000000000 0.00 \N \N \N M 2327 16 73 admin 10 3 I 247 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 102 0.00 0.00000000000000000000 \N \N \N 100 M 2328 16 73 admin 12 2 G 103 0.00 0.00 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 97 0.00 0.00000000000000000000 0.00 \N \N \N M 2329 16 73 admin 13 3 I 248 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 103 0.00 0.00000000000000000000 \N \N \N 106 M 2330 16 73 admin 15 2 G 104 0.00 0.00 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 97 0.00 0.00000000000000000000 0.00 \N \N \N M 2331 16 73 admin 16 3 I 249 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 104 0.00 0.00000000000000000000 \N \N \N 86 M 2332 16 73 admin 17 3 I 249 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 104 0.00 0.00000000000000000000 \N \N \N 85 M 2333 16 73 admin 18 3 I 249 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 104 0.00 0.00000000000000000000 \N \N \N 96 M 2334 16 73 admin 19 3 I 249 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 104 0.00 0.00000000000000000000 \N \N \N 87 M 2335 16 73 admin 20 3 I 249 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 104 0.00 0.00000000000000000000 \N \N \N 90 M 2336 16 73 admin 21 3 I 249 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 104 0.00 0.00000000000000000000 \N \N \N 88 M 2337 16 73 admin 22 3 I 249 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 104 0.00 0.00000000000000000000 \N \N \N 89 M 2338 16 73 admin 23 3 I 249 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 104 0.00 0.00000000000000000000 \N \N \N 83 M 2339 16 73 admin 25 2 G 105 0.00 0.00 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 97 0.00 0.00000000000000000000 0.00 \N \N \N M 2340 16 73 admin 26 3 I 250 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 105 0.00 0.00000000000000000000 \N \N \N 124 M 2341 16 73 admin 27 3 I 250 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 105 0.00 0.00000000000000000000 \N \N \N 94 M 2342 16 73 admin 28 3 I 250 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 105 0.00 0.00000000000000000000 \N \N \N 102 M 2343 16 73 admin 29 3 I 250 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 105 0.00 0.00000000000000000000 \N \N \N 104 M 2344 16 73 admin 30 3 I 250 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 105 0.00 0.00000000000000000000 \N \N \N 107 M 2345 16 73 admin 31 3 I 250 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 105 0.00 0.00000000000000000000 \N \N \N 95 M 2346 16 73 admin 32 3 I 250 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 105 0.00 0.00000000000000000000 \N \N \N 105 M 2347 16 73 admin 34 2 G 106 0.00 0.00 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 97 0.00 0.00000000000000000000 0.00 \N \N \N M 2348 16 73 admin 35 3 I 251 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 106 0.00 0.00000000000000000000 \N \N \N 99 M 2349 16 73 admin 38 1 G 98 0.00 0.00 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 95 0.00 0.00000000000000000000 0.00 \N \N \N M 2350 16 73 admin 39 2 G 107 0.00 0.00 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 98 0.00 0.00000000000000000000 0.00 \N \N \N M 2351 16 73 admin 40 3 I 252 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 107 0.00 0.00000000000000000000 \N \N \N 111 M 2352 16 73 admin 42 2 G 108 0.00 0.00 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 98 0.00 0.00000000000000000000 0.00 \N \N \N M 2353 16 73 admin 45 1 G 99 0.00 0.00 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 95 0.00 0.00000000000000000000 0.00 \N \N \N M 2354 16 73 admin 46 2 G 109 0.00 0.00 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 99 0.00 0.00000000000000000000 0.00 \N \N \N M 2355 16 73 admin 47 3 I 253 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 109 0.00 0.00000000000000000000 \N \N \N 116 M 2356 16 73 admin 49 2 G 110 0.00 0.00 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 99 0.00 0.00000000000000000000 0.00 \N \N \N M 2357 16 73 admin 50 3 I 254 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 110 0.00 0.00000000000000000000 \N \N \N 113 M 2358 16 73 admin 51 3 I 254 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 110 0.00 0.00000000000000000000 \N \N \N 84 M 2359 16 73 admin 55 0 G 96 0.00 0.00 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 -1 0.00 0.00000000000000000000 0.00 \N \N \N M 2360 16 73 admin 56 1 I 255 \N \N 0.00 0.00 0 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 96 0.00 0.00000000000000000000 \N \N \N 109 M 2361 16 73 admin 5 3 T -1 \N \N 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 100 0.00 0.00000000000000000000 \N \N Total Cash Flow From Operating Activities \N M 2362 16 73 admin 8 3 T -1 \N \N 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 101 0.00 0.00000000000000000000 \N \N Total Charges Not Using Cash \N M 2363 16 73 admin 11 3 T -1 \N \N 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 102 0.00 0.00000000000000000000 \N \N Total Changes in Current Assets \N M 2364 16 73 admin 14 3 T -1 \N \N 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 103 0.00 0.00000000000000000000 \N \N Total Net Receivables \N M 2365 16 73 admin 24 3 T -1 \N \N 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 104 0.00 0.00000000000000000000 \N \N Total Inventory \N M 2366 16 73 admin 33 3 T -1 \N \N 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 105 0.00 0.00000000000000000000 \N \N Total Change in Current Liability \N M 2367 16 73 admin 36 3 T -1 \N \N 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 106 0.00 0.00000000000000000000 \N \N Total Accounts Payable \N M 2368 16 73 admin 37 2 T -1 \N \N 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 97 0.00 0.00000000000000000000 \N \N Total Cash Flow From Operating Activities \N M 2369 16 73 admin 41 3 T -1 \N \N 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 107 0.00 0.00000000000000000000 \N \N Total Property Plant and Equipment \N M 2370 16 73 admin 43 3 T -1 \N \N 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 108 0.00 0.00000000000000000000 \N \N Total Other Assets \N M 2371 16 73 admin 44 2 T -1 \N \N 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 98 0.00 0.00000000000000000000 \N \N Total Cash Flow From Investing Activities \N M 2372 16 73 admin 48 3 T -1 \N \N 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 109 0.00 0.00000000000000000000 \N \N Total Long Term Debt \N M 2373 16 73 admin 52 3 T -1 \N \N 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 110 0.00 0.00000000000000000000 \N \N Total Common Stock and Equity \N M 2374 16 73 admin 53 2 T -1 \N \N 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 99 0.00 0.00000000000000000000 \N \N Total Cash Flow from Financing Activities \N M 2375 16 73 admin 54 1 T -1 \N \N 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 95 0.00 0.00000000000000000000 \N \N TOTAL STATEMENT OF CASH FLOWS \N M 2376 16 73 admin 57 1 T -1 \N \N 0.00 0.00 0.00 \N \N 0.00000000000000000000 0.00000000000000000000 0.00000000000000000000 96 0.00 0.00000000000000000000 \N \N TOTAL CASH POSITION \N M 2377 16 73 admin 58 0 T -1 \N \N 0.00 0.00 0.00 \N \N \N \N \N \N 0.00 \N \N \N CHECKSUM (TOTAL STA. OF CASH FLOWS - TOTAL CASH) \N M 2378 \. -- -- Data for Name: flspec; Type: TABLE DATA; Schema: public; Owner: admin -- COPY flspec (flspec_id, flspec_flhead_id, flspec_flgrp_id, flspec_order, flspec_name, flspec_type, flspec_showstart, flspec_showend, flspec_showdelta, flspec_showbudget, flspec_subtract, flspec_showstartprcnt, flspec_showendprcnt, flspec_showdeltaprcnt, flspec_showbudgetprcnt, flspec_showdiff, flspec_showdiffprcnt, flspec_prcnt_flgrp_id, flspec_showcustom, flspec_showcustomprcnt, flspec_custom_source) FROM stdin; \. -- -- Data for Name: form; Type: TABLE DATA; Schema: public; Owner: admin -- COPY form (form_id, form_name, form_descrip, form_report_id, form_key, form_report_name) FROM stdin; 21 CHECK CHECK 188 Chck CheckMultiPage 22 SO Acknowledgement SO Acknowledgement 371 SO CustOrderAcknowledgement \. -- -- Data for Name: freightclass; Type: TABLE DATA; Schema: public; Owner: admin -- COPY freightclass (freightclass_id, freightclass_code, freightclass_descrip) FROM stdin; \. -- -- Data for Name: glseries; Type: TABLE DATA; Schema: public; Owner: admin -- COPY glseries (glseries_id, glseries_sequence, glseries_doctype, glseries_docnumber, glseries_accnt_id, glseries_amount, glseries_source, glseries_distdate, glseries_notes, glseries_misc_id) FROM stdin; \. -- -- Data for Name: gltrans; Type: TABLE DATA; Schema: public; Owner: admin -- COPY gltrans (gltrans_id, gltrans_exported, gltrans_created, gltrans_date, gltrans_sequence, gltrans_accnt_id, gltrans_source, gltrans_docnumber, gltrans_misc_id, gltrans_amount, gltrans_notes, gltrans_journalnumber, gltrans_posted, gltrans_doctype, gltrans_rec, gltrans_username, gltrans_deleted) FROM stdin; \. -- -- Data for Name: grp; Type: TABLE DATA; Schema: public; Owner: admin -- COPY grp (grp_id, grp_name, grp_descrip) FROM stdin; 1 ADMIN Admin Users \. -- -- Data for Name: grppriv; Type: TABLE DATA; Schema: public; Owner: admin -- COPY grppriv (grppriv_id, grppriv_grp_id, grppriv_priv_id) FROM stdin; 1 1 179 2 1 251 3 1 252 4 1 254 5 1 260 6 1 261 7 1 262 8 1 263 9 1 266 10 1 267 11 1 268 12 1 271 13 1 272 14 1 275 15 1 276 16 1 277 17 1 278 18 1 279 19 1 280 20 1 294 21 1 297 22 1 298 23 1 302 24 1 303 25 1 305 26 1 369 27 1 370 28 1 313 29 1 314 30 1 315 31 1 371 32 1 372 33 1 334 34 1 335 35 1 373 36 1 374 37 1 375 38 1 376 39 1 377 40 1 378 41 1 356 42 1 357 43 1 358 44 1 379 45 1 380 46 1 382 47 1 395 48 1 396 49 1 397 50 1 398 51 1 407 52 1 455 53 1 456 54 1 457 55 1 458 56 1 461 57 1 462 58 1 463 59 1 464 60 1 467 61 1 468 62 1 469 63 1 475 64 1 476 65 1 487 66 1 488 67 1 489 68 1 187 69 1 188 70 1 259 71 1 492 72 1 505 73 1 62 74 1 191 75 1 202 76 1 512 77 1 513 78 1 514 79 1 515 80 1 516 81 1 465 82 1 466 83 1 483 84 1 484 85 1 415 86 1 416 87 1 418 88 1 446 89 1 420 90 1 422 91 1 423 92 1 424 93 1 425 94 1 426 95 1 427 96 1 428 97 1 429 98 1 430 99 1 431 100 1 447 101 1 433 102 1 435 103 1 436 104 1 437 105 1 438 106 1 439 107 1 440 108 1 441 109 1 442 110 1 443 111 1 444 112 1 419 113 1 432 114 1 448 115 1 449 116 1 450 117 1 451 118 1 480 119 1 481 120 1 482 121 1 391 122 1 392 123 1 511 124 1 10 125 1 30 126 1 29 127 1 37 128 1 42 129 1 84 130 1 82 131 1 83 132 1 85 133 1 86 134 1 90 135 1 116 136 1 117 137 1 118 138 1 14 139 1 15 140 1 128 141 1 129 142 1 131 143 1 130 144 1 132 145 1 133 146 1 147 147 1 81 148 1 148 149 1 19 150 1 150 151 1 151 152 1 152 153 1 154 154 1 153 155 1 35 156 1 36 157 1 164 158 1 214 159 1 215 160 1 217 161 1 218 162 1 219 163 1 220 164 1 223 165 1 224 166 1 225 167 1 216 168 1 222 169 1 221 170 1 226 171 1 227 172 1 241 173 1 238 174 1 255 175 1 256 176 1 264 177 1 265 178 1 350 179 1 351 180 1 454 181 1 470 182 1 495 183 1 501 184 1 506 185 1 507 186 1 17 187 1 16 188 1 91 189 1 27 190 1 11 191 1 93 192 1 12 193 1 13 194 1 26 195 1 75 196 1 76 197 1 94 198 1 125 199 1 140 200 1 173 201 1 176 202 1 177 203 1 178 204 1 182 205 1 228 206 1 352 207 1 408 208 1 409 209 1 306 210 1 307 211 1 269 212 1 270 213 1 362 214 1 363 215 1 390 216 1 5 217 1 4 218 1 103 219 1 104 220 1 105 221 1 106 222 1 107 223 1 1 224 1 2 225 1 134 226 1 143 227 1 144 228 1 157 229 1 158 230 1 159 231 1 160 232 1 31 233 1 161 234 1 162 235 1 163 236 1 316 237 1 317 238 1 349 239 1 508 240 1 509 241 1 45 242 1 44 243 1 48 244 1 49 245 1 53 246 1 54 247 1 46 248 1 47 249 1 120 250 1 137 251 1 189 252 1 204 253 1 205 254 1 207 255 1 208 256 1 209 257 1 213 258 1 231 259 1 244 260 1 245 261 1 246 262 1 249 263 1 250 264 1 353 265 1 354 266 1 368 267 1 383 268 1 452 269 1 22 270 1 23 271 1 51 272 1 55 273 1 56 274 1 57 275 1 58 276 1 61 277 1 59 278 1 60 279 1 50 280 1 88 281 1 89 282 1 111 283 1 126 284 1 127 285 1 141 286 1 142 287 1 180 288 1 181 289 1 190 290 1 192 291 1 193 292 1 194 293 1 195 294 1 196 295 1 197 296 1 198 297 1 199 298 1 200 299 1 201 300 1 232 301 1 203 302 1 233 303 1 70 304 1 234 305 1 235 306 1 211 307 1 212 308 1 239 309 1 242 310 1 257 311 1 258 312 1 273 313 1 274 314 1 281 315 1 336 316 1 337 317 1 346 318 1 347 319 1 348 320 1 355 321 1 385 322 1 386 323 1 389 324 1 393 325 1 459 326 1 460 327 1 510 328 1 485 329 1 486 330 1 100 331 1 63 332 1 64 333 1 65 334 1 73 335 1 121 336 1 122 337 1 101 338 1 87 339 1 123 340 1 124 341 1 68 342 1 166 343 1 167 344 1 168 345 1 169 346 1 170 347 1 236 348 1 248 349 1 253 350 1 3 351 1 345 352 1 359 353 1 388 354 1 394 355 1 399 356 1 403 357 1 404 358 1 406 359 1 445 360 1 453 361 1 471 362 1 490 363 1 491 364 1 493 365 1 496 366 1 497 367 1 498 368 1 499 369 1 500 370 1 494 371 1 502 372 1 504 373 1 517 374 1 518 \. -- -- Data for Name: hnfc; Type: TABLE DATA; Schema: public; Owner: admin -- COPY hnfc (hnfc_id, hnfc_code) FROM stdin; 1 Dr 2 Miss 3 Mr 4 Mrs 5 Ms \. -- -- Data for Name: image; Type: TABLE DATA; Schema: public; Owner: admin -- COPY image (image_id, image_name, image_descrip, image_data) FROM stdin; 14 Blue Pinstripe Background Blue Pinstripe Background begin 644 internal\nMB5!.1PT*&@H````-24A$4@````(````""`(```#]U)IS````"7!(67,```L2\nM```+$@'2W7[\\````%DE$050(F6-DLNUD8&!@\\?+R8F!@```-9P&L)F@250``\n*``!)14Y$KD)@@@``\n`\nend\n 15 logo logo begin 644 internal\nMB5!.1PT*&@H````-24A$4@```3T```!D"`,```##LQ1T[/(Z5GD]"QR>A81>M>)JM]C\nMY>UU[Q5'&ZIL2Y%*;YKNVZTXO8+>Q\\MF*TZOH#>-FZW\\E?1.4$8O`6OV=3ZG\nMQ^A%?)M'/J?'Z76$7F@2?M6&;T*%X4)J].3[N>=^HNDF+\\E,\\G*@%WR`$R@9\nM@@]X,LI:F:U;]-W`5*+E#U89L.!&C%BC=T4';1H'!W1V3X7WO-%D]$P-ZHJ1\nM-#]3W9=NI(4)./8Z(9^V5_R\nMHC&WD.$C]+JIJ"5X%FJ)]"3=E8`%-TK$:^]Y+5WVFJICEVY)&[A)@1Y<'T('QWBS0K.$6@J]\\%T#B,!6&7#I\nM1HU8IX?/S_(XMXN)%BS`C1->E:DUZ/E/T:B8+%M,+DMEMXE8RILEA,#I#1:PX$:-6*$WT,(!/_:+`5(T2J''AR4%PR>.@LFRQ1VY[(I/VW+?.]*L\nMK)9&K[\\PJWE7Q8`%-VK$PEOC.A'+;`2--@B]1J*'=P&"8?0$DV6+:>L6+Z0H\nMW1*AED8/'[R"'@]8<*-&++US*;Z]]):!^7GH%0%;Z<7:PO0D?K]&+\\720Q`/\nMZ&?!C>NA%I!+>.S6]Q1^LX-'Z'+\\3<*N[DPF7F13:ZU6'KGII604&LGO3)@\nMP8T:L4SOMO1FJ>NLSO<@F#A72O,],J-ZD4R6+5Z=[\\4)W+[YWB-Z&'#I1HWX\nMX0[5-5W9\\"6?O-9(ZPF<`&3+@5$T*=!;66LLQO>M-11Z0L""&RUB;9<`7AS\\\nMG?1RR<;0;)W+EY3E4C24E"8%>FP!JJ]SA5J[Z$D!EVZTB%=WJ*++5C`^-,R2\nML$O0XZP<\\96SR*SS;=MC^?B%5V[<8U%G+%+`@ALY8HU>[*PCAL&;/N`J+6MT\nMK#SPH;;)_68F17KJ_E[/%S";]O?TV;(4L.!&C/@+Y[FM&.NINDGDO\\'-$]'[\nM<_=3KR3+]F]U\\T3TXM@S/X&X[/]F-\\]$C[Z\\#WQP=[AY)GIT>K+CJ/Y`-T]%\nM#S>3=F2)'.G&1T[/(Z5FTA5ZV;82Y4D\\\nM_UW:3:^=G!YH)[T./CF]R]YQ+\\MR='J[:CL]+J=G$=!KIOQ0'9*Q4ORX;3@`\nMO2R!>A;9P:+'*MGA#=:"E*\\FN(&MW44U$\\%K"^CA"0@"6?(W='H-_H\\BI_IX\nM3%4<'&KTVGQ3LF8B>&T!O3E(^\\7\nM[,Y2_"JQK%&.>UOI54@$KRU*;V[S^Y1R[-\\!U'YZ@0T:D)*S\\?KK1GH5$L%K\nMB^T2Q(G[>,G2%;]`;YGOTTZ0S<&@"-.M']"KD`A>6XQ>9#;W]0XXLOC)\\[9.\nM;\\FT3(/.XU7"%GKV1/#:8O3PAP:Q37T>?UK=#H_HX4(NJDS.9HG4V^C9$\\%K\nMB^_OX?8*W7EB/UA)?>H!O0Z8D/_AYM"2\\'K:1L^<"%Y;G![&3UM"XX]=YC$]\nMEA0.U7C1\\K.9M^WTK(G@M778>6[QP^6#=5(B.-=1],H?S1^ADQ+!51U$[W;.\nMDW-6(KBF(^CQWQ$=JI,2P34=2.^4GG!2(KBB(^CELY5C=5(BN"C/H;+(Z5GD\nM]"QR>A8Y/8N3T+')Z%CD]BYR>14[/(J=GD=.SR.E9\nEY/0L\nSELECT poitem_id, poitem_linenumber,\n formatDate(poitem_duedate),\n COALESCE(item_number, ),\n COALESCE(uom_name, ),\n warehous_code,\n poitem_vend_item_number,\n poitem_vend_uom,\n formatQty(poitem_qty_ordered),\n formatQty(poitem_qty_received),\n formatQty(qtyToReceive(, poitem_id))\nFROM poitem \n LEFT OUTER JOIN \n ( itemsite \n\n JOIN usrsite ON (itemsite_warehous_id=usrsite_warehous_id) \n\n JOIN item ON (itemsite_item_id=item_id) \n JOIN uom ON (item_inv_uom_id=uom_id)\n JOIN whsinfo ON (itemsite_warehous_id=warehous_id)\n ) ON (poitem_itemsite_id=itemsite_id) \nWHERE ( (poitem_status <> 'C')\n\n AND (usrsite_username=current_user) \n\n AND (poitem_pohead_id=) )\nORDER BY poitem_linenumber;\n\nSELECT raitem_id, raitem_linenumber,\n formatDate(rahead_expiredate),\n COALESCE(item_number, ),\n COALESCE(iu.uom_name, ),\n warehous_code,\n '' AS vend_item_number,\n ru.uom_name,\n formatQty(raitem_qtyauthorized),\n formatQty(raitem_qtyreceived),\n formatQty(qtyToReceive(, raitem_id))\nFROM rahead, raitem \n LEFT OUTER JOIN \n ( itemsite \n\n JOIN usrsite ON (itemsite_warehous_id=usrsite_warehous_id) \n\n JOIN item ON (itemsite_item_id=item_id) \n JOIN uom iu ON (item_inv_uom_id=uom_id)\n JOIN whsinfo ON (itemsite_warehous_id=warehous_id)\n ) ON (raitem_itemsite_id=itemsite_id), uom ru\nWHERE ( (raitem_status <> 'C')\n AND (raitem_qtyauthorized > 0)\n AND (raitem_disposition IN ('R','P','V'))\n AND (raitem_rahead_id=rahead_id)\n AND (raitem_qty_uom_id=ru.uom_id)\n\n AND (usrsite_username=current_user) \n\n AND (rahead_id=) )\nORDER BY raitem_linenumber;\n\nSELECT toitem_id, toitem_linenumber,\n formatDate(toitem_duedate),\n COALESCE(item_number, ),\n COALESCE(uom_name, ),\n warehous_code,\n '',\n toitem_uom,\n formatQty(toitem_qty_ordered),\n formatQty(toitem_qty_received),\n formatQty(qtyToReceive(, toitem_id))\nFROM tohead, itemsite\n\n JOIN usrsite ON (itemsite_warehous_id=usrsite_warehous_id) \n\n, whsinfo, toitem, item JOIN uom ON (item_inv_uom_id=uom_id)\nWHERE ((toitem_item_id=item_id)\n AND (tohead_id=toitem_tohead_id)\n AND (tohead_dest_warehous_id=itemsite_warehous_id)\n AND (tohead_dest_warehous_id=warehous_id)\n AND (toitem_item_id=itemsite_item_id)\n AND (toitem_status <> 'C')\n\n AND (usrsite_username=current_user) \n\n AND (toitem_tohead_id=) )\nORDER BY toitem_linenumber;\n\n admin 2008-09-03 0 43 breederDistributionVariance detail used by dspBreederDistributionVarianceByItem, dspBreederDistributionVarianceByWarehouse -- Group: breederDistributionVariance\n-- Name: detail\n-- Notes: used by dspBreederDistributionVarianceByItem, dspBreederDistributionVarianceByWarehouse\n\nSELECT brdvar_id, brdvar_postdate,\n pi.item_number AS pitem_number,\n ci.item_number AS citem_number,\n brdvar_stdqtyper,\n brdvar_stdqtyper * brdvar_wo_qty AS stdqty,\n brdvar_actqtyper,\n brdvar_actqtyper * brdvar_wo_qty AS actqty,\n brdvar_actqtyper-brdvar_stdqtyper AS qtypervariance,\n (brdvar_actqtyper-brdvar_stdqtyper) / brdvar_stdqtyper AS percentvariance,\n 'qtyper' AS brdvar_stdqtyper_xtnumericrole,\n 'qty' AS stdqty_xtnumericrole,\n 'qtyper' AS brdvar_actqtyper_xtnumericrole,\n 'qty' AS actqty_xtnumericrole,\n 'qtyper' AS qtypervariance_xtnumericrole,\n 'percent' AS percentvariance_xtnumericrole \nFROM brdvar, itemsite AS ps, itemsite AS cs, item AS ci, item AS pi\nWHERE ( (brdvar_parent_itemsite_id=ps.itemsite_id)\n AND (brdvar_itemsite_id=cs.itemsite_id)\n\n AND (ps.itemsite_item_id=)\n AND (pi.item_id=ci.item_id)\n\n AND (ps.itemsite_item_id=pi.item_id)\n\n AND (cs.itemsite_item_id=ci.item_id)\n AND (brdvar_postdate BETWEEN \n AND )\n\n AND (ps.itemsite_warehous_id=)\n\n) \nORDER BY brdvar_postdate, pitem_number\n\n , citem_number \n\n;\n admin 2008-11-07 0 308 apOpenItems selectedpayments Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: apOpenItems\n-- Name: selectedpayments\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT apopen_id, apselect_id,\n (bankaccnt_name || '-' || bankaccnt_descrip) AS f_bank,\n (vend_number || '-' || vend_name) AS f_vendor,\n CASE WHEN (apopen_doctype='V') THEN \n WHEN (apopen_doctype='D') THEN \n END AS doctype,\n apopen_docnumber, apopen_ponumber, apselect_amount,\n apopen_invcnumber,\n currToBase(apselect_curr_id, apselect_amount, CURRENT_DATE) AS apselect_amount_base,\n currToBase(apselect_curr_id, apselect_amount, CURRENT_DATE) AS apselect_running_base,\n currConcat(apselect_curr_id) AS currAbbr,\n 'curr' AS apselect_amount_xtnumericrole,\n 'curr' AS apselect_amount_base_xtnumericrole,\n 'curr' AS apselect_running_base_xtnumericrole,\n 0 AS apselect_running_base_xtrunninginit,\n 1 AS apselect_running_base_xtrunningrole\nFROM apopen, apselect, vendinfo, bankaccnt\nWHERE ( (apopen_vend_id=vend_id)\n AND (apselect_apopen_id=apopen_id)\n AND (apselect_bankaccnt_id=bankaccnt_id) \n\n AND (bankaccnt_id=)\n\n\n AND (vend_id=)\n\n AND (vend_vendtype_id=)\n\n AND (vend_vendtype_id IN (SELECT vendtype_id\n FROM vendtype\n WHERE (vendtype_code ~ )))\n\n )\nORDER BY bankaccnt_name, vend_number, apopen_docnumber;\n admin 2013-07-26 0 61 manufacture laborvariance shared by dspLaborVarianceBy* -- Group: manufacture\n-- Name: laborvariance\n-- Notes: shared by dspLaborVarianceBy*\n\nSELECT woopervar.*,\n item_number, wrkcnt_code,\n (woopervar_sutime - woopervar_stdsutime) AS suvar,\n (woopervar_rntime - woopervar_stdrntime) AS rnvar,\n 'qty' AS woopervar_qtyord_xtnumericrole,\n 'qty' AS woopervar_qtyrcv_xtnumericrole,\n '1' AS woopervar_stdsutime_xtnumericrole,\n '1' AS woopervar_stdrntime_xtnumericrole,\n '1' AS woopervar_sutime_xtnumericrole,\n '1' AS woopervar_rntime_xtnumericrole,\n '1' AS suvar_xtnumericrole,\n '1' AS rnvar_xtnumericrole\nFROM woopervar\n\n JOIN wo ON ((woopervar_number=wo_number)\n AND (woopervar_subnumber=wo_subnumber))\n\n JOIN itemsite ON (woopervar_parent_itemsite_id=itemsite_id)\n JOIN item ON (itemsite_item_id=item_id)\n LEFT OUTER JOIN wrkcnt ON (woopervar_wrkcnt_id=wrkcnt_id)\nWHERE (true\n\n AND (woopervar_posted BETWEEN \n AND )\n\n\n AND (itemsite_item_id=)\n\n\n AND (woopervar_booitem_id=)\n\n\n AND (wrkcnt_id=)\n\n\n AND (wo_id=)\n\n\n AND (itemsite_warehous_id=)\n\n)\nORDER BY woopervar_posted DESC, woopervar_seqnumber;\n admin 2008-11-07 0 248 gleries checkeditable -- Group: gleries\n-- Name: checkeditable\n-- Notes: \nSELECT gltrans_id \nFROM accnt, gltrans \n LEFT OUTER JOIN period ON (gltrans_date BETWEEN period_start AND period_end) \nWHERE ( (gltrans_accnt_id=accnt_id) \n AND (gltrans_sequence=) \n AND ( (gltrans_deleted) \n OR (period_freeze) \n OR (gltrans_rec) \n OR (period_closed AND NOT accnt_closedpost) ) )\nLIMIT 1; admin 2010-09-10 0 94 apApplications detail used by dspAPApplications Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: apApplications\n-- Name: detail\n-- Notes: used by dspAPApplications\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT apapply.*,\n vend_number, vend_name,\n CASE \n WHEN apapply_source_doctype = 'K' THEN\n apapply_checkhead_id\n ELSE\n apapply_source_apopen_id \n END AS apapply_source_docnumber_xtidrole,\n CASE WHEN (apapply_source_doctype='C') THEN \n WHEN (apapply_source_doctype='K') THEN \n ELSE apapply_source_doctype\n END AS apapply_source_doctype_qtdisplayrole,\n CASE WHEN (apapply_target_doctype='D') THEN apapply_target_apopen_id\n WHEN (apapply_target_doctype='V') THEN (SELECT vohead_id\n FROM vohead\n WHERE (vohead_number=apapply_target_docnumber))\n END AS apapply_target_docnumber_xtidrole,\n CASE WHEN (apapply_target_doctype='C') THEN \n WHEN (apapply_target_doctype='D') THEN \n WHEN (apapply_target_doctype='V') THEN \n WHEN (apapply_target_doctype='K') THEN \n ELSE apapply_target_doctype\n END AS apapply_target_doctype_qtdisplayrole,\n formatDate(apapply_postdate) AS f_postdate,-- for openrpt\n formatMoney(apapply_amount) AS f_amount, -- for openrpt\n currConcat(apapply_curr_id) AS currAbbr,\n currtobase(apapply_curr_id,apapply_amount,apapply_postdate) AS base_applied,\n 'curr' AS apapply_amount_xtnumericrole,\n 'curr' AS base_applied_xtnumericrole,\n 0 AS base_applied_xttotalrole\nFROM apapply, vendinfo\nWHERE ( (apapply_vend_id=vend_id)\n AND (apapply_postdate BETWEEN AND )\n\n AND (apapply_source_doctype IN ())\n\n\n AND (vend_id=)\n\n AND (vend_vendtype_id=)\n\n AND (vend_vendtype_id IN (SELECT vendtype_id FROM vendtype\n WHERE (vendtype_code ~ )))\n\n )\nORDER BY apapply_postdate, apapply_source_docnumber;\n admin 2013-07-26 0 129 apOpenItems detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: apOpenItems\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT apopen_id, apopen_ponumber, apopen_docnumber,\n CASE WHEN (apopen_doctype='C') THEN \n WHEN (apopen_doctype='D') THEN \n WHEN (apopen_doctype='V') THEN \n ELSE \n END AS f_doctype,\n vend_number, vend_name,\n apopen_invcnumber AS invoicenumber,\n apopen_docdate, apopen_duedate, apopen_amount, apopen_status, \n\n formatDate(apopen_docdate) AS f_docdate, \n formatDate(apopen_duedate) AS f_duedate, \n formatMoney(apopen_amount) AS f_amount,\n formatMoney(apopen_paid - COALESCE(SUM(apapply_target_paid),0)) AS f_paid,\n formatMoney((apopen_amount - apopen_paid + COALESCE(SUM(apapply_target_paid),0)) * \n CASE WHEN apopen_doctype IN ('D', 'V') THEN 1 ELSE -1 \n END) AS f_balance,\n formatMoney((apopen_amount - apopen_paid + COALESCE(SUM(apapply_target_paid),0)) \n / apopen_curr_rate * (CASE WHEN apopen_doctype IN ('D', 'V') THEN 1 ELSE -1 \n END)) AS f_base_balance,\n\n apopen_paid - COALESCE(SUM(apapply_target_paid),0) AS paid,\n (apopen_amount - apopen_paid + COALESCE(SUM(apapply_target_paid),0)) * \n CASE WHEN apopen_doctype IN ('D', 'V') THEN 1 ELSE -1 \n END AS balance,\n currConcat(apopen_curr_id) AS currAbbr,\n (apopen_amount - apopen_paid + COALESCE(SUM(apapply_target_paid),0)) \n / apopen_curr_rate * (CASE WHEN apopen_doctype IN ('D', 'V') THEN 1 ELSE -1 \n END) AS base_balance,\n 'curr' AS apopen_amount_xtnumericrole,\n 'curr' AS paid_xtnumericrole,\n 'curr' AS balance_xtnumericrole,\n 'curr' AS base_balance_xtnumericrole,\n 0 AS base_balance_xttotalrole \n FROM apopen \n JOIN vendinfo ON (vend_id=apopen_vend_id)\n JOIN vendtype ON (vendtype_id=vend_vendtype_id)\n LEFT OUTER JOIN apapply ON (((apopen_id=apapply_target_apopen_id) \n OR (apopen_id=apapply_source_apopen_id)) \n AND (apapply_postdate > )) \n WHERE ( (COALESCE(apopen_closedate,date + integer '1')>) \n AND (CASE WHEN () THEN apopen_docdate ELSE apopen_distdate END<=)\n\n AND (apopen_vend_id=)\n\n\n AND (vendtype_id=)\n\n\n AND (vendtype_code~)\n\n AND (apopen_duedate BETWEEN AND ) ) \n GROUP BY apopen_id, apopen_ponumber, apopen_docnumber,apopen_doctype, apopen_invcnumber, apopen_docdate, \n apopen_duedate, apopen_docdate, apopen_amount, apopen_paid, apopen_curr_id, apopen_curr_rate,\n apopen.apopen_status, vend_number, vend_name\n ORDER BY apopen_docdate;\n admin 2013-07-26 0 36 apAging detail used by dspTimePhasedOpenAPItems Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: apAging\n-- Name: detail\n-- Notes: used by dspTimePhasedOpenAPItems\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT apaging_vend_id, apaging_vend_number, apaging_vend_name,\n SUM(apaging_total_val) AS apaging_total_val_sum,\n SUM(apaging_cur_val) AS apaging_cur_val_sum,\n SUM(apaging_thirty_val) AS apaging_thirty_val_sum,\n SUM(apaging_sixty_val) AS apaging_sixty_val_sum,\n SUM(apaging_ninety_val) AS apaging_ninety_val_sum,\n SUM(apaging_plus_val) AS apaging_plus_val_sum,\n 'curr' AS apaging_total_val_sum_xtnumericrole,\n 'curr' AS apaging_cur_val_sum_xtnumericrole,\n 'curr' AS apaging_thirty_val_sum_xtnumericrole,\n 'curr' AS apaging_sixty_val_sum_xtnumericrole,\n 'curr' AS apaging_ninety_val_sum_xtnumericrole,\n 'curr' AS apaging_plus_val_sum_xtnumericrole,\n 0 AS apaging_total_val_sum_xttotalrole,\n 0 AS apaging_cur_val_sum_xttotalrole,\n 0 AS apaging_thirty_val_sum_xttotalrole,\n 0 AS apaging_sixty_val_sum_xttotalrole,\n 0 AS apaging_ninety_val_sum_xttotalrole,\n 0 AS apaging_plus_val_sum_xttotalrole\n\nFROM apaging(, )\n\nWHERE (apaging_vend_id=)\n\nWHERE (apaging_vend_vendtype_id=)\n\nWHERE (apaging_vendtype_code ~ )\n\nGROUP BY apaging_vend_number,apaging_vend_id,apaging_vend_name\nORDER BY apaging_vend_number;\n admin 2013-07-26 0 309 apOpenItems selectpayments Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: apOpenItems\n-- Name: selectpayments\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT * FROM (\nSELECT apopen_id, COALESCE(apselect_id, -1) AS apselectid,\n (vend_number || '-' || vend_name) AS vendor,\n CASE WHEN (apopen_doctype='V') THEN \n When (apopen_doctype='D') THEN \n END AS doctype,\n apopen_docnumber, apopen_ponumber,\n apopen_duedate,\n apopen_docdate, apopen_status,\n CASE WHEN (apopen_status = 'H') THEN 'error' END AS qtforegroundrole,\n (apopen_amount - apopen_paid - apCheckPending(apopen_id)) AS amount,\n ((apopen_amount - apopen_paid - apCheckPending(apopen_id)) / apopen_curr_rate) AS base_amount,\n ((apopen_amount - apopen_paid - apCheckPending(apopen_id)) / apopen_curr_rate) AS running_amount,\n COALESCE(apselect_amount, 0.0) AS selected,\n (COALESCE(apselect_amount, 0.0) / apopen_curr_rate) AS base_selected,\n (COALESCE(apselect_amount, 0.0) / apopen_curr_rate) AS running_selected,\n COALESCE(apselect_discount,0.0) AS discount,\n (COALESCE(apselect_discount,0.0) / apopen_curr_rate)AS base_discount,\n CASE WHEN (apopen_duedate < CURRENT_DATE) THEN 'error'\n WHEN(apopen_duedate > CURRENT_DATE) THEN 'emphasis'\n WHEN(CURRENT_DATE <= determineDiscountDate(apopen_terms_id, apopen_docdate)) THEN 'altemphasis'\n END AS apopen_duedate_qtforegroundrole, \n apopen_invcnumber,\n currConcat(apopen_curr_id) AS curr_concat,\n 'curr' AS amount_xtnumericrole,\n 'curr' AS selected_xtnumericrole,\n 'curr' AS running_selected_xtnumericrole,\n 'curr' AS running_amount_xtnumericrole,\n 'curr' AS discount_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n 'curr' AS base_selected_xtnumericrole,\n 'curr' AS base_discount_xtnumericrole,\n 0 AS base_amount_xttotalrole,\n 0 AS base_selected_xttotalrole,\n 0 AS base_discount_xttotalrole,\n 0 AS running_selected_xtrunninginit,\n 0 AS running_amount_xtrunninginit,\n 1 AS running_selected_xtrunningrole,\n 1 AS running_amount_xtrunningrole\nFROM vendinfo JOIN apopen ON (apopen_vend_id=vend_id)\n LEFT OUTER JOIN apselect ON (apselect_apopen_id=apopen_id)\nWHERE ( (apopen_open)\n AND (apopen_doctype IN ('V', 'D'))\n\n AND (vend_id=)\n\n AND (vend_vendtype_id=)\n\n AND (vend_vendtype_id IN (SELECT vendtype_id\n FROM vendtype\n WHERE (vendtype_code ~ )))\n\n\n AND (apopen_duedate <= )\n\n AND (apopen_duedate BETWEEN AND )\n\n\n AND (apopen_curr_id=)\n\n)\nORDER BY apopen_duedate, (apopen_amount - apopen_paid) DESC) AS data\nWHERE (amount != 0);\n admin 2013-07-26 0 45 cashReceipts detail used by dspCashReceipts There are 2 display modes for this query: 1) Legacy mode which uses A/R Application information 2) Version 3.3.0 upgrade mode which uses Cash Receipt information Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: cashReceipts\n-- Name: detail\n-- Notes: used by dspCashReceipts\n-- There are 2 display modes for this query:\n-- 1) Legacy mode which uses A/R Application information\n-- 2) Version 3.3.0 upgrade mode which uses Cash Receipt information\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\n\n-- Posted cash receipts\nSELECT arapply_id, 1 AS type, '' AS cashrcpt_number, cust_number, cust_name,\n false AS voided, true AS posted, arapply_postdate AS postdate,\n ( CASE WHEN (arapply_source_doctype='C') THEN \n WHEN (arapply_source_doctype='R') THEN \n WHEN (arapply_fundstype='C') THEN \n WHEN (arapply_fundstype='T') THEN \n WHEN (arapply_fundstype='M') THEN \n WHEN (arapply_fundstype='V') THEN \n WHEN (arapply_fundstype='A') THEN \n WHEN (arapply_fundstype='D') THEN \n WHEN (arapply_fundstype='R') THEN \n WHEN (arapply_fundstype='K') THEN \n WHEN (arapply_fundstype='W') THEN \n WHEN (arapply_fundstype='O') THEN \n END || ' ' ||\n CASE WHEN (arapply_source_doctype IN ('C','R')) THEN TEXT(arapply_source_docnumber)\n ELSE arapply_refnumber\n END ) AS source,\n COALESCE(cashrcptitem_cashrcpt_id,cashrcptmisc_cashrcpt_id,-1) AS source_xtidrole,\n ( CASE WHEN (arapply_target_doctype='D') THEN \n WHEN (arapply_target_doctype='I') THEN \n ELSE \n END || ' ' || TEXT(arapply_target_docnumber) ) AS target,\n COALESCE(arapply_target_aropen_id,-1) AS target_xtidrole,\n arapply_applied AS applied,\n 'curr' AS applied_xtnumericrole,\n currtobase(arapply_curr_id,arapply_applied,arapply_postdate) AS base_applied,\n\n formatDate(arapply_postdate) AS f_postdate,\n formatMoney(arapply_applied) AS f_applied,\n formatMoney(currtobase(arapply_curr_id,arapply_applied,arapply_postdate)) AS f_base_applied,\n\n 'curr' AS base_applied_xtnumericrole,\n 0 AS base_applied_xttotalrole,\n currConcat(arapply_curr_id) AS currAbbr,\n arapply_postdate AS sortdate\nFROM custinfo LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id), arapply\n LEFT OUTER JOIN cashrcptitem ON ((arapply_reftype='CRA')\n AND (arapply_ref_id=cashrcptitem_id))\n LEFT OUTER JOIN cashrcptmisc ON ((arapply_reftype='CRD')\n AND (arapply_ref_id=cashrcptmisc_id))\nWHERE ( (arapply_cust_id=cust_id)\n AND (arapply_postdate BETWEEN AND )\n AND (arapply_source_doctype ='K')\n\n AND (cust_id=)\n\n AND (cust_custtype_id=)\n\n AND (custgrpitem_custgrp_id=)\n\n AND (cust_custtype_id IN (SELECT custtype_id FROM custtype WHERE (custtype_code ~ )))\n\n )\n\n-- Unposted cash receipts\nUNION\nSELECT cashrcpt_id, 2 AS type, '' AS cashrcpt_number, cust_number, cust_name,\n false AS voided, false AS posted, cashrcpt_distdate AS postdate,\n ( CASE WHEN (cashrcpt_fundstype='C') THEN \n WHEN (cashrcpt_fundstype='T') THEN \n WHEN (cashrcpt_fundstype='M') THEN \n WHEN (cashrcpt_fundstype='V') THEN \n WHEN (cashrcpt_fundstype='A') THEN \n WHEN (cashrcpt_fundstype='D') THEN \n WHEN (cashrcpt_fundstype='R') THEN \n WHEN (cashrcpt_fundstype='K') THEN \n WHEN (cashrcpt_fundstype='W') THEN \n WHEN (cashrcpt_fundstype='O') THEN \n END || ' ' || cashrcpt_docnumber ) AS source,\n cashrcpt_id AS source_xtidrole,\n AS target,\n -1 AS target_xtidrole,\n cashrcpt_amount AS applied,\n 'curr' AS applied_xtnumericrole,\n (cashrcpt_amount / cashrcpt_curr_rate) AS base_applied,\n\n formatDate(cashrcpt_distdate) AS f_postdate,\n formatMoney(cashrcpt_amount) AS f_applied,\n formatMoney(cashrcpt_amount / cashrcpt_curr_rate) AS f_base_applied,\n\n 'curr' AS base_applied_xtnumericrole,\n 0 AS base_applied_xttotalrole,\n currConcat(cashrcpt_curr_id) AS currAbbr,\n cashrcpt_distdate AS sortdate\nFROM cashrcpt, custinfo LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id)\nWHERE ( (NOT cashrcpt_posted)\n AND (cashrcpt_cust_id=cust_id)\n AND (cashrcpt_distdate BETWEEN AND )\n\n AND (cust_id=)\n\n AND (cust_custtype_id=)\n\n AND (custgrpitem_custgrp_id=)\n\n AND (cust_custtype_id IN (SELECT custtype_id FROM custtype WHERE (custtype_code ~ )))\n\n )\n\n-- Cash Advance\nUNION\nSELECT aropen_id, 3 AS type, '' AS cashrcpt_number, cust_number, cust_name,\n false AS voided, true AS posted, aropen_docdate AS postdate,\n ( CASE WHEN (substr(aropen_notes, 16, 1)='C') THEN \n WHEN (substr(aropen_notes, 16, 1)='T') THEN \n WHEN (substr(aropen_notes, 16, 1)='M') THEN \n WHEN (substr(aropen_notes, 16, 1)='V') THEN \n WHEN (substr(aropen_notes, 16, 1)='A') THEN \n WHEN (substr(aropen_notes, 16, 1)='D') THEN \n WHEN (substr(aropen_notes, 16, 1)='R') THEN \n WHEN (substr(aropen_notes, 16, 1)='K') THEN \n WHEN (substr(aropen_notes, 16, 1)='W') THEN \n WHEN (substr(aropen_notes, 16, 1)='O') THEN \n END || ' ' ||\n substr(aropen_notes, 18) ) AS source,\n cashrcptitem_cashrcpt_id AS source_xtidrole,\n CASE WHEN aropen_doctype = 'R' THEN\n \n ELSE \n END AS target,\n aropen_id AS target_xtidrole,\n aropen_amount AS applied,\n 'curr' AS applied_xtnumericrole,\n aropen_amount / aropen_curr_rate AS base_applied,\n\n formatDate(aropen_docdate) AS f_postdate,\n formatMoney(aropen_amount) AS f_applied,\n formatMoney(aropen_amount / aropen_curr_rate) AS f_base_applied,\n\n 'curr' AS base_applied_xtnumericrole,\n 0 AS base_applied_xttotalrole,\n currConcat(aropen_curr_id) AS currAbbr,\n aropen_duedate AS sortdate\nFROM custinfo LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id), aropen\n JOIN cashrcptitem ON (aropen_id=cashrcptitem_aropen_id)\nWHERE ( (aropen_cust_id=cust_id)\n AND (aropen_doctype IN ('R','C'))\n AND (aropen_docdate BETWEEN AND )\n\n AND (cust_id=)\n\n AND (cust_custtype_id=)\n\n AND (custgrpitem_custgrp_id=)\n\n AND (cust_custtype_id IN (SELECT custtype_id FROM custtype WHERE (custtype_code ~ )))\n\n )\nORDER BY sortdate, source;\n\n\n\n-- New Display Mode\n\nSELECT id, type, cashrcpt_number, cust_number, cust_name,\n postdate, posted, voided,\n source, source_xtidrole,\n posted,\n target, target_xtidrole,\n applied,\n base_applied,\n\n formatDate(postdate) AS f_postdate,\n formatMoney(applied) AS f_applied,\n formatMoney(base_applied) AS f_base_applied,\n\n currAbbr,\n sortdate,\n 'curr' AS applied_xtnumericrole,\n 'curr' AS base_applied_xtnumericrole,\n base_applied_xttotalrole,\n type AS xtindentrole\nFROM (\n\n-- Cash Receipt headers\nSELECT cashrcpt_id AS id, 0 AS type, cashrcpt_number, cust_number, cust_name,\n cashrcpt_distdate AS postdate, cashrcpt_posted AS posted, cashrcpt_void AS voided,\n ( CASE WHEN (cashrcpt_fundstype='C') THEN \n WHEN (cashrcpt_fundstype='T') THEN \n WHEN (cashrcpt_fundstype='M') THEN \n WHEN (cashrcpt_fundstype='V') THEN \n WHEN (cashrcpt_fundstype='A') THEN \n WHEN (cashrcpt_fundstype='D') THEN \n WHEN (cashrcpt_fundstype='R') THEN \n WHEN (cashrcpt_fundstype='K') THEN \n WHEN (cashrcpt_fundstype='W') THEN \n WHEN (cashrcpt_fundstype='O') THEN \n END || ' ' || cashrcpt_docnumber ) AS source,\n cashrcpt_id AS source_xtidrole,\n CASE WHEN (cashrcpt_void) THEN \n WHEN (NOT cashrcpt_posted) THEN \n ELSE ''\n END AS target,\n -1 AS target_xtidrole,\n cashrcpt_amount AS applied,\n (cashrcpt_amount / cashrcpt_curr_rate) AS base_applied,\n currConcat(cashrcpt_curr_id) AS currAbbr,\n cashrcpt_distdate AS sortdate,\n 0 AS base_applied_xttotalrole,\n -1 AS arapply_id\nFROM cashrcpt JOIN custinfo ON (cust_id=cashrcpt_cust_id) LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id)\nWHERE ( (cashrcpt_distdate BETWEEN AND )\n\n AND (cust_id=)\n\n AND (cust_custtype_id=)\n\n AND (custgrpitem_custgrp_id=)\n\n AND (cust_custtype_id IN (SELECT custtype_id FROM custtype WHERE (custtype_code ~ )))\n\n )\n\n-- Cash Receipt items\nUNION\nSELECT cashrcpt_id AS id, 1 AS type, '', '', '',\n cashrcpt_distdate AS postdate, cashrcpt_posted AS posted, cashrcpt_void AS voided,\n '' AS source,\n cashrcpt_id AS source_xtidrole,\n ( CASE WHEN (aropen_doctype='D') THEN \n WHEN (aropen_doctype='I') THEN \n WHEN (aropen_doctype='C') THEN \n WHEN (aropen_doctype='R') THEN \n ELSE \n END || ' ' || TEXT(aropen_docnumber) ) AS target,\n aropen_id AS target_xtidrole,\n COALESCE(arapply_applied, cashrcptitem_amount) AS applied,\n (COALESCE(arapply_applied,cashrcptitem_amount) / cashrcpt_curr_rate) AS base_applied,\n currConcat(cashrcpt_curr_id) AS currAbbr,\n cashrcpt_distdate AS sortdate,\n -1 AS base_applied_xttotalrole,\n arapply_id\nFROM cashrcpt JOIN custinfo ON (cust_id=cashrcpt_cust_id)\n LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id)\n JOIN cashrcptitem ON (cashrcptitem_cashrcpt_id=cashrcpt_id)\n JOIN aropen ON (aropen_id=cashrcptitem_aropen_id)\n LEFT OUTER JOIN arapply ON ((arapply_target_aropen_id=aropen_id OR\n arapply_source_aropen_id=aropen_id) AND\n arapply_reftype='CRA' AND\n arapply_ref_id=cashrcptitem_id)\nWHERE ( (cashrcpt_distdate BETWEEN AND )\n\n AND (cust_id=)\n\n AND (cust_custtype_id=)\n\n AND (custgrpitem_custgrp_id=)\n\n AND (cust_custtype_id IN (SELECT custtype_id FROM custtype WHERE (custtype_code ~ )))\n\n )\n\n-- Cash Receipt misc\nUNION\nSELECT cashrcpt_id AS id, 1 AS type, '', '', '',\n cashrcpt_distdate AS postdate, cashrcpt_posted AS posted, cashrcpt_void AS voided,\n '' AS source,\n cashrcpt_id AS source_xtidrole,\n formatGLAccount(cashrcptmisc_accnt_id) AS target,\n -1 AS target_xtidrole,\n COALESCE(arapply_applied, cashrcptmisc_amount) AS applied,\n (COALESCE(arapply_applied, cashrcptmisc_amount) / cashrcpt_curr_rate) AS base_applied,\n currConcat(cashrcpt_curr_id) AS currAbbr,\n cashrcpt_distdate AS sortdate,\n -1 AS base_applied_xttotalrole,\n arapply_id\nFROM cashrcpt JOIN custinfo ON (cust_id=cashrcpt_cust_id)\n LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id)\n JOIN cashrcptmisc ON (cashrcptmisc_cashrcpt_id=cashrcpt_id)\n LEFT OUTER JOIN arapply ON (arapply_reftype='CRD' AND\n arapply_ref_id=cashrcptmisc_id)\nWHERE ( (cashrcpt_distdate BETWEEN AND )\n\n AND (cust_id=)\n\n AND (cust_custtype_id=)\n\n AND (custgrpitem_custgrp_id=)\n\n AND (cust_custtype_id IN (SELECT custtype_id FROM custtype WHERE (custtype_code ~ )))\n\n )\n ) AS data\nORDER BY sortdate, id, type, target;\n\n\n\n admin 2013-07-26 0 435 backlog detail Notes: Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: backlog\n-- Name: detail\n-- Notes:\n-- Notes:\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT\n cohead_id, coitem_id, *, currconcat(cohead_curr_id) AS currAbbr,\n CASE WHEN xtindentrole = 0 THEN cohead_number\n END AS coitem_linenumber_qtdisplayrole,\n CASE WHEN xtindentrole = 0 THEN cust_name\n END AS item_number_qtdisplayrole,\n CASE WHEN (coitem_scheddate <= current_date AND qtybalance > 0) THEN 'error' \n WHEN (qtybalance > 0) THEN 'emphasis' \n END AS coitem_scheddate_qtforegroundrole,\n CASE WHEN (xtindentrole = 0) THEN ''\n END AS qtybalance_qtdisplayrole,\n 'qty' AS coitem_qtyord_xtnumericrole,\n 'qty' AS coitem_qtyshipped_xtnumericrole,\n 'qty' AS coitem_qtyreturned_xtnumericrole,\n 'qty' AS qtyatshipping_xtnumericrole,\n 'qty' AS qtybalance_xtnumericrole,\n 'qty' AS qtyavailable_xtnumericrole,\n 'salesprice' AS coitem_price_xtnumericrole,\n 'salesprice' AS baseunitprice_xtnumericrole,\n 'curr' AS extprice_xtnumericrole,\n 'curr' AS baseextprice_xtnumericrole,\n 'curr' AS extpricebalance_xtnumericrole,\n 'curr' AS baseextpricebalance_xtnumericrole,\n 0 AS coitem_qtyord_xttotalrole,\n 0 AS coitem_qtyshipped_xttotalrole,\n 0 AS coitem_qtyreturned_xttotalrole,\n 0 AS qtybalance_xttotalrole,\n 0 AS baseextprice_xttotalrole,\n 0 AS baseextpricebalance_xttotalrole\nFROM (\n SELECT\n 0 AS xtindentrole,\n -- dummy coitem record\n -1 AS coitem_id, NULL::INTEGER AS coitem_cohead_id,\n cohead_number::INTEGER AS coitem_linenumber,NULL::INTEGER AS coitem_itemsite_id,\n NULL::TEXT AS coitem_status, coitem_scheddate,\n getSoSchedDate(cohead_id) AS sort_scheddate,\n NULL::DATE AS coitem_promdate, NULL::NUMERIC AS coitem_qtyord,\n NULL::NUMERIC AS coitem_unitcost, NULL::NUMERIC AS coitem_price,\n NULL::NUMERIC AS coitem_custprice, NULL::NUMERIC AS coitem_qtyshipped,\n NULL::INTEGER AS coitem_order_id, NULL::TEXT AS coitem_memo,\n NULL::BOOLEAN AS coitem_imported, NULL::NUMERIC AS coitem_qtyreturned,\n NULL::TIMESTAMP AS coitem_closedate, NULL::BOOLEAN AS coitem_firm,\n NULL::TEXT AS coitem_custpn, NULL::TEXT AS coitem_order_type,\n NULL::TEXT AS coitem_close_username,\n NULL::TIMESTAMP AS coitem_lastupdated,\n NULL::INTEGER AS coitem_substitute_item_id,\n NULL::TIMESTAMP AS coitem_created, NULL::TEXT AS coitem_creator,\n NULL::NUMERIC AS coitem_prcost,\n NULL::INTEGER AS coitem_qty_uom_id,\n NULL::NUMERIC AS coitem_qty_invuomratio,\n NULL::INTEGER AS coitem_price_uom_id,\n NULL::NUMERIC AS coitem_price_invuomratio,\n NULL::BOOLEAN AS coitem_warranty,\n NULL::INTEGER AS coitem_cos_accnt_id,\n NULL::NUMERIC AS coitem_qtyreserved,\n NULL::INTEGER AS coitem_subnumber,\n cohead.*,\n cust_number, cust_name,\n NULL::TEXT AS item_number, NULL::TEXT AS item_descrip1,\n NULL::TEXT AS itemdescription,\n NULL::TEXT AS uom_name,\n NULL::TEXT AS warehous_code,\n noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) AS qtybalance,\n NULL::NUMERIC AS baseunitprice,\n NULL::NUMERIC AS extprice,\n NULL::NUMERIC AS baseextprice,\n NULL::NUMERIC AS extpricebalance,\n NULL::NUMERIC AS baseextpricebalance\n\n FROM coitem JOIN cohead ON (cohead_id=coitem_cohead_id)\n JOIN custinfo ON (cust_id=cohead_cust_id)\n JOIN itemsite ON (itemsite_id=coitem_itemsite_id)\n JOIN site() ON (warehous_id=itemsite_warehous_id)\n JOIN item ON (item_id=itemsite_item_id)\n JOIN uom ON (uom_id=coitem_qty_uom_id)\n WHERE (coitem_id IN (SELECT coitem_id\n FROM coitem\n WHERE coitem_status = 'O'\n AND coitem_cohead_id=cohead_id\n ORDER BY coitem_scheddate ASC -- TODO: find a better way\n LIMIT 1)\n \n AND (coitem_cohead_id=)\n \n \n AND (cohead_orderdate >= )\n \n \n AND (cohead_orderdate <= )\n \n \n AND (coitem_scheddate >= )\n \n \n AND (coitem_scheddate <= )\n \n \n AND (cohead_salesrep_id=)\n \n \n AND (cohead_shipto_id=)\n \n \n AND (cohead_cust_id=)\n \n \n AND (cust_custtype_id=)\n \n \n AND (cust_custtype_id IN (SELECT DISTINCT custtype_id\n FROM custtype\n WHERE (custtype_code ~ )))\n \n \n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem))\n \n \n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem\n WHERE (custgrpitem_custgrp_id=)))\n \n \n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrp, custgrpitem\n WHERE ( (custgrpitem_custgrp_id=custgrp_id)\n AND (custgrp_name ~ ) )) )\n \n\n \n AND (itemsite_item_id=)\n \n \n AND (item_prodcat_id=)\n \n \n AND (item_prodcat_id IN (SELECT DISTINCT prodcat_id\n FROM prodcat\n WHERE (prodcat_code ~ )))\n \n\n \n AND (itemsite_warehous_id=)\n \n )\n\n UNION\n\n SELECT \n 1 AS xtindentrole,\n coitem_id, coitem_cohead_id,\n coitem_linenumber,coitem_itemsite_id,\n coitem_status, coitem_scheddate,\n getSoSchedDate(cohead_id) AS sort_scheddate,\n coitem_promdate, coitem_qtyord,\n coitem_unitcost, coitem_price,\n coitem_custprice, coitem_qtyshipped,\n coitem_order_id, coitem_memo,\n coitem_imported, coitem_qtyreturned,\n coitem_closedate, coitem_firm,\n coitem_custpn, coitem_order_type,\n coitem_close_username,\n coitem_lastupdated,\n coitem_substitute_item_id,\n coitem_created, coitem_creator,\n coitem_prcost,\n coitem_qty_uom_id,\n coitem_qty_invuomratio,\n coitem_price_uom_id,\n coitem_price_invuomratio,\n coitem_warranty,\n coitem_cos_accnt_id,\n coitem_qtyreserved,\n coitem_subnumber,\n cohead.*,\n cust_number, cust_name,\n item_number, item_descrip1, (item_descrip1 || ' ' || item_descrip2) AS itemdescription,\n uom_name,\n warehous_code,\n noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) AS qtybalance,\n currtobase(cohead_curr_id, coitem_price, cohead_orderdate) AS baseunitprice,\n round((coitem_qtyord * coitem_qty_invuomratio) *\n (coitem_price / coitem_price_invuomratio), 2) AS extprice,\n round((coitem_qtyord * coitem_qty_invuomratio) *\n (currtobase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio), 2) AS baseextprice,\n round((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) *\n (coitem_price / coitem_price_invuomratio), 2) AS extpricebalance,\n round((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) *\n (currtobase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio), 2) AS baseextpricebalance\n\n FROM coitem JOIN cohead ON (cohead_id=coitem_cohead_id)\n JOIN custinfo ON (cust_id=cohead_cust_id)\n JOIN itemsite ON (itemsite_id=coitem_itemsite_id)\n JOIN site() ON (warehous_id=itemsite_warehous_id)\n JOIN item ON (item_id=itemsite_item_id)\n JOIN uom ON (uom_id=coitem_qty_uom_id)\n WHERE ( (coitem_status='O')\n \n AND (coitem_cohead_id=)\n \n \n AND (cohead_orderdate >= )\n \n \n AND (cohead_orderdate <= )\n \n \n AND (coitem_scheddate >= )\n \n \n AND (coitem_scheddate <= )\n \n \n AND (cohead_salesrep_id=)\n \n \n AND (cohead_shipto_id=)\n \n \n AND (cohead_cust_id=)\n \n \n AND (cust_custtype_id=)\n \n \n AND (cust_custtype_id IN (SELECT DISTINCT custtype_id\n FROM custtype\n WHERE (custtype_code ~ )))\n \n \n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem))\n \n \n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem\n WHERE (custgrpitem_custgrp_id=)))\n \n \n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrp, custgrpitem\n WHERE ( (custgrpitem_custgrp_id=custgrp_id)\n AND (custgrp_name ~ ) )) )\n \n\n \n AND (itemsite_item_id=)\n \n \n AND (item_prodcat_id=)\n \n \n AND (item_prodcat_id IN (SELECT DISTINCT prodcat_id\n FROM prodcat\n WHERE (prodcat_code ~ )))\n \n\n \n AND (itemsite_warehous_id=)\n \n )\n\n) AS dummy\nORDER BY cohead_number, xtindentrole, coitem_linenumber;\n admin 2013-07-26 0 40 arOpenApplications detail used by applyARCreditMemo, cashReceipt Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: arOpenApplications\n-- Name: detail\n-- Notes: used by applyARCreditMemo, cashReceipt\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT *,\n 'curr' AS balance_xtnumericrole,\n 'curr' AS applied_xtnumericrole,\n 'curr' AS pending_xtnumericrole,\n currConcat(balance_curr) AS balance_curr_qtdisplayrole,\n CASE WHEN (doctype='D') THEN \n WHEN (doctype='I') THEN \n WHEN (doctype='C') THEN \n WHEN (doctype='R') THEN \n END AS doctype_qtdisplayrole,\n CASE WHEN (doctype='C') THEN 'emphasis'\n WHEN (doctype='R') THEN 'altemphasis'\n END AS doctype_qtforegroundrole,\n\n CASE WHEN (pending - currtobase(cashrcpt_curr_id, applied, cashrcpt_distdate) - discount > balance) \n AND doctype IN ('I','D')\n AND NOT cashrcpt_posted\n\n CASE WHEN (pending - applied - discount > balance)\n \n THEN 'error' END AS qtforegroundrole\nFROM (SELECT\n aropen_id,\n\n COALESCE(s.cashrcptitem_id, -1) AS alt_id,\n COALESCE(cashrcpt_posted,FALSE) AS cashrcpt_posted,\n cashrcpt_curr_id,\n cashrcpt_distdate,\n\n aropen_doctype AS doctype,\n aropen_docnumber, aropen_ordernumber,\n aropen_docdate, aropen_duedate,\n (aropen_amount - aropen_paid - calcpendingarapplications(aropen_id)) *\n (CASE WHEN aropen_doctype IN ('C','R') THEN -1 ELSE 1 END ) AS balance,\n aropen_curr_id AS balance_curr,\n\n (SELECT COALESCE(SUM(p.cashrcptitem_amount), 0)\n FROM cashrcptitem p\n WHERE (p.cashrcptitem_aropen_id=aropen_id)\n AND (p.cashrcptitem_cashrcpt_id=))\n AS applied,\n (SELECT COALESCE(SUM(p.cashrcptitem_discount), 0)\n FROM cashrcptitem p\n WHERE (p.cashrcptitem_aropen_id=aropen_id)\n AND (p.cashrcptitem_cashrcpt_id=))\n AS discount,\n currConcat(cashrcpt_curr_id) AS applied_curr,\n\n COALESCE(arcreditapply_amount, 0) AS applied,\n 0 AS discount,\n currConcat(arcreditapply_curr_id) AS applied_curr,\n\n calcpendingarapplications(aropen_id) AS pending,\n currConcat(aropen_curr_id) AS pending_curr\n FROM aropen LEFT OUTER JOIN\n \n cashrcptitem s ON (s.cashrcptitem_aropen_id=aropen_id\n AND cashrcptitem_cashrcpt_id=)\n LEFT OUTER JOIN\n cashrcpt ON (cashrcptitem_cashrcpt_id = cashrcpt_id\n AND cashrcpt_id=)\n\n arcreditapply ON ((arcreditapply_source_aropen_id=)\n AND (arcreditapply_target_aropen_id=aropen_id) )\n\n WHERE (\n \n (s.cashrcptitem_aropen_id=aropen_id)\n\n (aropen_open)\n\n\n AND (aropen_doctype IN ('D', 'I'))\n\n\n AND (aropen_doctype IN ('D', 'I'))\n\n AND (aropen_cust_id=) )\n ) AS dummy\n ORDER BY aropen_duedate, balance;\n admin 2013-07-26 0 231 arOpenItems f_detail This version for printed reports that need a way to include formatted values since there is no good way to differentiate different printed parameters in display class. Used to be printed version got an extra parameter. Formatted values slow things down considerably on screen version otherwise. This should go away if/when we get OpenRPT to do its own formatting. Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: arOpenItems\n-- Name: f_detail\n-- Notes: This version for printed reports that need a way to include formatted values\n-- since there is no good way to differentiate different printed parameters in \n-- display class. Used to be printed version got an extra parameter. Formatted\n-- values slow things down considerably on screen version otherwise. This\n-- should go away if/when we get OpenRPT to do its own formatting.\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT SUM(CASE WHEN (aropen_doctype IN ('C', 'R')) THEN\n (aropen_amount - aropen_paid) / aropen_curr_rate * -1\n ELSE (aropen_amount - aropen_paid) / aropen_curr_rate\n END) AS total_balance\nFROM aropen JOIN custinfo ON (aropen_cust_id=cust_id)\n LEFT OUTER JOIN custtype ON (cust_custtype_id=custtype_id)\n LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id)\nWHERE ( (aropen_open)\n\n AND (aropen_cust_id=)\n\n\n AND (custtype_id=)\n\n\n AND (custtype_code~)\n\n\n AND (custgrpitem_custgrp_id=)\n\n )\n;\n\n\n-- Get unposted invoices\n\n\nSELECT -1 AS id,\n 0 AS altId,\n invchead_invcnumber AS docnumber,\n invchead_id AS docnumber_xtidrole,\n invchead_posted AS posted,\n invchead_invcdate AS docdate,\n NULL::date AS aropen_duedate,\n invchead_ordernumber AS ordernumber,\n cohead_id AS ordernumber_xtidrole,\n AS doctype,\n NULL AS doctype_qtforegroundrole,\n invoicetotal(invchead_id) AS amount,\n currtobase(invchead_curr_id, invoicetotal(invchead_id), invchead_invcdate) AS base_amount,\n 0 AS paid,\n 0 AS base_paid,\n 0 AS balance,\n currConcat(invchead_curr_id) AS currAbbr,\n 0 AS base_balance,\n formatDate(invchead_invcdate) AS f_docdate,\n NULL::text AS f_duedate,\n formatMoney(invoicetotal(invchead_id)) AS f_amount,\n formatMoney(0) AS f_paid,\n formatMoney(0) AS f_balance,\n cust_id, cust_number, cust_name,\n (invchead_recurring_invchead_id IS NOT NULL) AS recurring,\n false AS open,\n NULL AS ccard_number,\n 'curr' AS amount_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n 0 AS base_amount_xttotalrole,\n 'curr' AS paid_xtnumericrole,\n 'curr' AS base_paid_xtnumericrole,\n 0 AS base_paid_xttotalrole,\n 'curr' AS balance_xtnumericrole,\n 'curr' AS base_balance_xtnumericrole,\n 0 AS base_balance_xttotalrole,\n NULL::text AS aropen_docnumber_qtdisplayrole,\n NULL::text AS aropen_docdate_qtdisplayrole,\n 0 AS xtindentrole,\n '' AS aropen_duedate_qtforegroundrole,\n NULL::integer AS ccard_number_xtidrole,\n firstLine(invchead_notes) AS notes\nFROM invchead\n LEFT OUTER JOIN cohead ON (invchead_ordernumber=cohead_number)\n JOIN custinfo ON (invchead_cust_id=cust_id)\n JOIN custtype ON (cust_custtype_id=custtype_id)\n\t LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id)\nWHERE ((NOT invchead_posted)\n\n AND (invchead_cust_id=)\n\n\n AND (custtype_id=)\n\n\n AND (custtype_code~)\n\n\n AND (custgrpitem_custgrp_id=)\n\n\n AND (invchead_invcdate BETWEEN AND )\n\n )\n GROUP BY id, altId, invchead_id,\n invchead_invcdate, invchead_posted, invchead_curr_id,\n invchead_recurring, invchead_invcnumber, invchead_posted,\n invchead_ordernumber, cohead_id,\n cust_id, cust_number, cust_name,\n invchead_recurring_invchead_id, invchead_notes\n\nUNION\n\n\n\n-- Get unposted credit memos\n\n\nSELECT -1 AS id,\n 1 AS altId,\n cmhead_number AS docnumber,\n cmhead_id AS docnumber_xtidrole,\n cmhead_posted AS posted,\n cmhead_docdate AS docdate,\n NULL::date AS aropen_duedate,\n NULL::text AS ordernumber,\n -1 AS ordernumber_xtidrole,\n AS doctype,\n CASE WHEN (NOT cmhead_posted) THEN 'emphasis'\n END AS doctype_qtforegroundrole,\n creditmemototal(cmhead_id) AS amount,\n currtobase(cmhead_curr_id, creditmemototal(cmhead_id), cmhead_docdate) AS base_amount,\n 0 AS paid,\n 0 AS base_paid,\n 0 AS balance,\n currConcat(cmhead_curr_id) AS currAbbr,\n 0 AS base_balance,\n formatDate(cmhead_docdate) AS f_docdate,\n NULL::text AS f_duedate,\n formatMoney(creditmemototal(cmhead_id)) AS f_amount,\n formatMoney(0) AS f_paid,\n formatMoney(0) AS f_balance,\n cust_id, cust_number, cust_name,\n false AS recurring,\n false AS open,\n NULL AS ccard_number,\n 'curr' AS amount_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n 0 AS base_amount_xttotalrole,\n 'curr' AS paid_xtnumericrole,\n 'curr' AS base_paid_xtnumericrole,\n 0 AS base_paid_xttotalrole,\n 'curr' AS balance_xtnumericrole,\n 'curr' AS base_balance_xtnumericrole,\n 0 AS base_balance_xttotalrole,\n NULL::text AS aropen_docnumber_qtdisplayrole,\n NULL::text AS aropen_docdate_qtdisplayrole,\n 0 AS xtindentrole,\n '' AS aropen_duedate_qtforegroundrole,\n NULL::integer AS ccard_number_xtidrole,\n firstLine(cmhead_comments) AS notes\nFROM cmhead\n JOIN custinfo ON (cmhead_cust_id=cust_id)\n JOIN custtype ON (cust_custtype_id=custtype_id)\n\t LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id)\nWHERE ((NOT cmhead_posted)\n\n AND (cmhead_cust_id=)\n\n\n AND (custtype_id=)\n\n\n AND (custtype_code~)\n\n\n AND (custgrpitem_custgrp_id=)\n\n\n AND (cmhead_docdate BETWEEN AND )\n\n )\n GROUP BY id, altId, cmhead_id,\n cmhead_docdate, cmhead_posted, cmhead_curr_id,\n cmhead_number, cmhead_posted, cmhead_comments,\n cust_id, cust_number, cust_name\n\nUNION\n\n\n\n-- Get Posted AR Open\nSELECT aropen_id AS id,\n CASE WHEN (aropen_doctype='I') THEN 0\n WHEN (aropen_doctype='C') THEN 1\n WHEN (aropen_doctype='D') THEN 2\n WHEN (aropen_doctype='R') THEN 3\n ELSE -1\n END AS altId,\n aropen_docnumber AS docnumber,\n COALESCE(invchead_id,cmhead_id,-1) AS docnumber_xtidrole,\n true AS posted,\n aropen_docdate AS docdate,\n aropen_duedate,\n aropen_ordernumber AS ordernumber,\n COALESCE(cohead_id,-1) AS ordernumber_xtidrole,\n CASE WHEN (aropen_doctype='I') THEN \n WHEN (aropen_doctype='C') THEN \n WHEN (aropen_doctype='D') THEN \n WHEN (aropen_doctype='R') THEN \n ELSE \n END AS doctype,\n CASE WHEN (aropen_doctype='C') THEN 'emphasis' \n ELSE CASE WHEN(aropen_doctype='R')THEN 'altemphasis'\n END\n END AS doctype_qtforegroundrole,\n aropen_amount AS amount,\n aropen_amount/aropen_curr_rate AS base_amount,\n (aropen_paid - (COALESCE(SUM(arapply_target_paid),0))) AS paid,\n (aropen_paid - (COALESCE(SUM(arapply_target_paid),0))/aropen_curr_rate) AS base_paid,\n (((aropen_amount-aropen_paid+COALESCE(SUM(arapply_target_paid),0))) *\n CASE WHEN (aropen_doctype IN ('C', 'R')) THEN -1 ELSE 1 END) AS balance,\n currConcat(aropen_curr_id) AS currAbbr,\n (((aropen_amount-aropen_paid+COALESCE(SUM(arapply_target_paid),0)))/aropen_curr_rate *\n CASE WHEN (aropen_doctype IN ('C', 'R')) THEN -1 ELSE 1 END) AS base_balance,\n formatDate(aropen_docdate) AS f_docdate,\n formatDate(aropen_duedate) AS f_duedate,\n formatMoney(aropen_amount) AS f_amount,\n formatMoney(aropen_paid - (COALESCE(SUM(arapply_target_paid),0))) AS f_paid,\n formatMoney((((aropen_amount-aropen_paid+COALESCE(SUM(arapply_target_paid),0))) *\n CASE WHEN (aropen_doctype IN ('C', 'R')) THEN -1 ELSE 1 END)) AS f_balance,\n cust_id, cust_number, cust_name,\n COALESCE(invchead_recurring_invchead_id IS NOT NULL, false) AS recurring,\n aropen_open AS open,\n formatccnumber(decrypt(setbytea(ccard_number),\n setbytea(), 'bf')) AS ccard_number,\n 'curr' AS amount_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n 0 AS base_amount_xttotalrole,\n 'curr' AS paid_xtnumericrole,\n 'curr' AS base_paid_xtnumericrole,\n 0 AS base_paid_xttotalrole,\n 'curr'AS balance_xtnumericrole,\n 'curr' AS base_balance_xtnumericrole,\n 0 AS base_balance_xttotalrole,\n NULL AS aropen_docnumber_qtdisplayrole,\n NULL AS aropen_docdate_qtdisplayrole,\n 0 AS xtindentrole,\n CASE WHEN ((COALESCE(aropen_duedate,current_date) < current_date) AND COALESCE(aropen_open,FALSE)) THEN 'error' \n END AS aropen_duedate_qtforegroundrole,\n ccpay_id AS ccard_number_xtidrole,\n firstLine(aropen_notes) AS notes\nFROM aropen \n\n JOIN incdt ON (incdt_aropen_id=aropen_id)\n\n JOIN custinfo ON (aropen_cust_id=cust_id)\n JOIN custtype ON (cust_custtype_id=custtype_id)\n\t LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id)\n LEFT OUTER JOIN invchead ON ((aropen_docnumber=invchead_invcnumber)\n AND (aropen_doctype='I'))\n LEFT OUTER JOIN cohead ON (invchead_ordernumber=cohead_number)\n LEFT OUTER JOIN cmhead ON ((aropen_docnumber=cmhead_number)\n AND (aropen_doctype='C'))\n LEFT OUTER JOIN arapply ON (((aropen_id=arapply_source_aropen_id)\n OR (aropen_id=arapply_target_aropen_id))\n AND (arapply_distdate>COALESCE(,current_date)))\n LEFT OUTER JOIN payaropen ON (payaropen_aropen_id=aropen_id)\n LEFT OUTER JOIN ccpay ON (payaropen_ccpay_id=ccpay_id)\n LEFT OUTER JOIN ccard ON (ccpay_ccard_id=ccard_id)\nWHERE ((true)\n\n AND (aropen_docdate <= COALESCE(, current_date))\n AND (COALESCE(aropen_closedate, DATE() + 1, current_date + 1) > COALESCE(, current_date)) \n\n\n AND (aropen_doctype IN ('D','I'))\n\n AND (aropen_doctype IN ('C', 'R'))\n\n\n AND (aropen_cust_id=)\n\n\n AND (custtype_id=)\n\n\n AND (custgrpitem_custgrp_id=)\n\n\n AND (custtype_code~)\n\n\n AND (aropen_docdate BETWEEN AND )\n\n\n AND (aropen_duedate >= )\n\n\n AND (aropen_duedate <= )\n\n )\n GROUP BY id, altId,\t invchead_id,\n aropen_docdate, aropen_duedate, aropen_doctype, \n aropen_docnumber, aropen_amount, \n aropen_notes, aropen_posted, aropen_ordernumber,\n aropen_paid, aropen_open, aropen_curr_id,\n aropen_closedate, aropen_curr_rate, cmhead_id,\n cust_id, \t\t cust_number, cust_name,\n cohead_id, ccpay_id, ccard_number,\n invchead_recurring_invchead_id\nUNION\nSELECT -1,\n 4 AS altId,\n aropen_docnumber AS docnumber,\n -1 AS docnumber_xtidrole,\n NULL AS posted, \n aropen_docdate AS docdate,\n NULL AS aropen_duedate,\n CAST(incdt_number AS text) AS ordernumber,\n incdt_id AS ordernumber_xtidrole,\n NULL AS doctype,\n NULL AS doctype_qtforegroundrole,\n NULL AS amount,\n NULL AS base_amount,\n NULL AS paid,\n NULL AS base_paid,\n NULL AS balance,\n NULL AS currAbbr,\n NULL AS base_balance,\n NULL AS f_docdate,\n NULL AS f_duedate,\n NULL AS f_amount,\n NULL AS f_paid,\n NULL AS f_balance,\n NULL,incdt_assigned_username, incdt_summary,\n NULL AS recurring, NULL AS open,\n NULL AS ccard_number,\n 'curr' AS amount_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n 0 AS base_amount_xttotalrole,\n 'curr' AS paid_xtnumericrole,\n 'curr' AS base_paid_xtnumericrole,\n 0 AS base_paid_xttotalrole,\n 'curr' AS balance_xtnumericrole,\n 'curr' AS base_balance_xtnumericrole,\n 0 AS base_balance_xttotalrole,\n '' AS aropen_docnumber_qtdisplayrole,\n '' AS aropen_docdate_qtdisplayrole,\n 1 AS xtindentrole,\n CASE WHEN ((COALESCE(aropen_duedate,current_date) < current_date) AND COALESCE(aropen_open,FALSE)) THEN 'error' \n END AS aropen_duedate_qtforegroundrole,\n NULL::integer AS ccard_xtidrole,\n firstLine(incdt_descrip) AS notes\nFROM incdt JOIN aropen ON (aropen_id=incdt_aropen_id)\n JOIN custinfo ON (aropen_cust_id=cust_id)\n JOIN custtype ON (cust_custtype_id=custtype_id)\n\t LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id)\nWHERE ((true)\n\n AND (aropen_docdate <= COALESCE(, current_date))\n AND (COALESCE(aropen_closedate, DATE() + 1, current_date + 1) > COALESCE(, current_date)) \n\n\n AND (NOT aropen_doctype IN ('C', 'R'))\n\n\n AND (aropen_doctype IN ('C', 'R'))\n\n\n AND (aropen_cust_id=)\n\n\n AND (custtype_id=)\n\n\n AND (custtype_code~)\n\n\n AND (custgrpitem_custgrp_id=)\n\n\n AND (aropen_docdate BETWEEN AND )\n\n\n AND (aropen_duedate >= )\n\n\n AND (aropen_duedate <= )\n\n )\n\nORDER BY\n docdate DESC, docnumber DESC, xtindentrole\n;\n\n admin 2013-07-26 0 49 creditMemoCreditCards detail used by arWorkBench, returnAuthorization, returnAuthorizationWorkbench Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: creditMemoCreditCards\n-- Name: detail\n-- Notes: used by arWorkBench, returnAuthorization, returnAuthorizationWorkbench\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT cmhead_number, cmhead_freight, cmhead_curr_id,\n SUM(ROUND((cmitem_qtycredit * cmitem_qty_invuomratio) * \n (cmitem_unitprice / cmitem_price_invuomratio), 2)) +\n cmhead_freight + cmhead_misc +\n COALESCE( (SELECT SUM(tax) * -1 AS tax FROM\n (SELECT ROUND(SUM(taxdetail_tax), 2) AS tax\n FROM tax\n JOIN calculateTaxDetailSummary('CM', , 'T') ON (taxdetail_tax_id=tax_id)\n GROUP BY tax_id) AS data), 0) AS total,\n COALESCE( (SELECT SUM(tax) * -1 AS tax FROM\n (SELECT ROUND(SUM(taxdetail_tax), 2) AS tax\n FROM tax\n JOIN calculateTaxDetailSummary('CM', , 'T') ON (taxdetail_tax_id=tax_id)\n GROUP BY tax_id) AS data), 0) AS tax_in_cmcurr,\n ccard_id, ccard_seq, ccpay_id,\n cohead_number\nFROM ccard, cmitem, cmhead LEFT OUTER JOIN\n rahead ON (cmhead_rahead_id=rahead_id) LEFT OUTER JOIN\n cohead ON (rahead_orig_cohead_id=cohead_id) LEFT OUTER JOIN\n ccpay ON (ccpay_order_number=cohead_number AND ccpay_type='C')\nWHERE ((cmitem_cmhead_id=cmhead_id)\n AND (cmhead_cust_id=ccard_cust_id)\n AND (ccard_active)\n AND (ccpay_ccard_id=ccard_id OR ccpay_ccard_id IS NULL)\n AND (cmhead_id=))\nGROUP BY cmhead_number, cmhead_curr_id, cmhead_freight,\n cmhead_misc, ccard_id, ccard_seq, ccpay_id,\n\t cohead_number\nORDER BY ccpay_id DESC, ccard_seq \nLIMIT 1;\n admin 2013-07-26 0 35 allocations detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: allocations\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT source_id, type, order_number, item_number, totalqty, relievedqty, balanceqty, duedate,\n balanceqty AS runningbal,\n 'qty' AS totalqty_xtnumericrole,\n 'qty' AS relievedqty_xtnumericrole,\n 'qty' AS balanceqty_xtnumericrole,\n 0 AS runningbal_xtrunningrole,\n 'qty' AS runningbal_xtnumericrole,\n CASE WHEN (duedate < CURRENT_DATE) THEN 'error'\n END AS duedate_qtforegroundrole\nFROM\n(\nSELECT womatl_id AS source_id, TEXT('W/O') AS type,\n formatWoNumber(wo_id) AS order_number,\n paritem.item_number,\n itemuomtouom(component.itemsite_item_id, womatl_uom_id, NULL, womatl_qtyreq) AS totalqty,\n itemuomtouom(component.itemsite_item_id, womatl_uom_id, NULL, womatl_qtyiss) AS relievedqty,\n itemuomtouom(component.itemsite_item_id, womatl_uom_id, NULL, noNeg(womatl_qtyreq - womatl_qtyiss)) AS balanceqty,\n womatl_duedate AS duedate\n\nFROM womatl, wo, itemsite AS parent, itemsite AS component, item AS paritem, item AS compitem\nWHERE ((womatl_wo_id=wo_id)\n AND (wo_status<>'C')\n AND (wo_itemsite_id=parent.itemsite_id)\n AND (womatl_itemsite_id=component.itemsite_id)\n AND (parent.itemsite_item_id=paritem.item_id)\n AND (component.itemsite_item_id=compitem.item_id)\n AND (compitem.item_type != 'T')\n AND (component.itemsite_warehous_id=)\n AND (component.itemsite_item_id=)\n\n AND (womatl_duedate <= (CURRENT_DATE + component.itemsite_leadtime))\n\n AND (womatl_duedate <= (CURRENT_DATE + ))\n\n AND (womatl_duedate <= )\n\n AND (womatl_duedate BETWEEN AND )\n\n)\n\nUNION \n\n-- Special handling for tools\nSELECT womatl_id AS source_id, TEXT('W/O') AS type,\n formatWoNumber(wo_id) AS order_number,\n paritem.item_number,\n itemuomtouom(component.itemsite_item_id, womatl_uom_id, NULL, womatl_qtyreq) AS totalqty,\n COALESCE(sum(invhist_invqty),0) AS relievedqty,\n noNeg(itemuomtouom(component.itemsite_item_id, womatl_uom_id, NULL, womatl_qtyreq) - COALESCE(sum(invhist_invqty),0)) AS balanceqty,\n womatl_duedate AS duedate\n\nFROM itemsite AS parent, itemsite AS component, item paritem, item AS compitem, wo, womatl\n LEFT OUTER JOIN womatlpost ON (womatl_id=womatlpost_womatl_id)\n LEFT OUTER JOIN invhist ON ((womatlpost_invhist_id=invhist_id)\n AND (invhist_invqty > 0))\nWHERE ((womatl_wo_id=wo_id)\n AND (wo_status<>'C')\n AND (wo_itemsite_id=parent.itemsite_id)\n AND (womatl_itemsite_id=component.itemsite_id)\n AND (parent.itemsite_item_id=paritem.item_id)\n AND (component.itemsite_item_id=compitem.item_id)\n AND (compitem.item_type='T')\n AND (component.itemsite_warehous_id=)\n AND (component.itemsite_item_id=)\n\n AND (womatl_duedate <= (CURRENT_DATE + component.itemsite_leadtime))\n\n AND (womatl_duedate <= (CURRENT_DATE + ))\n\n AND (womatl_duedate <= )\n\n AND (womatl_duedate BETWEEN AND )\n\n)\nGROUP BY womatl_id, wo_id, paritem.item_number, womatl_uom_id, womatl_qtyreq, womatl_duedate, component.itemsite_item_id\n\nUNION \nSELECT coitem_id AS source_id, TEXT('S/O') AS type,\n formatSoNumber(coitem_id) AS order_number,\n item_number,\n itemuomtouom(itemsite_item_id, coitem_qty_uom_id, NULL, coitem_qtyord) AS totalqty,\n itemuomtouom(itemsite_item_id, coitem_qty_uom_id, NULL, (coitem_qtyshipped + qtyAtShipping(coitem_id)) - coitem_qtyreturned) as relievedqty,\n itemuomtouom(itemsite_item_id, coitem_qty_uom_id, NULL, noNeg(coitem_qtyord - (coitem_qtyshipped + qtyAtShipping(coitem_id)) + coitem_qtyreturned)) AS balanceqty,\n coitem_scheddate as duedate\nFROM cohead, coitem, itemsite, item \nWHERE ( (coitem_cohead_id=cohead_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_sold)\n AND (coitem_status NOT IN ('C','X'))\n AND (itemsite_warehous_id=)\n AND (itemsite_item_id=)\n\n AND (coitem_scheddate <= (CURRENT_DATE + itemsite_leadtime))\n\n AND (coitem_scheddate <= (CURRENT_DATE + ))\n\n AND (coitem_scheddate <= )\n\n AND (coitem_scheddate BETWEEN AND )\n\n)\n\n\nUNION \nSELECT toitem_id AS source_id, TEXT('T/O') AS type,\n TEXT(tohead_number) AS order_number,\n item_number,\n toitem_qty_ordered AS totalqty,\n (toitem_qty_shipped + qtyAtShipping(toitem_id)) as relievedqty,\n noNeg(toitem_qty_ordered - (toitem_qty_shipped + qtyAtShipping(toitem_id))) AS balanceqty,\n toitem_schedshipdate as duedate\nFROM tohead, toitem, itemsite, item \nWHERE ((toitem_tohead_id=tohead_id)\n AND (toitem_item_id=itemsite_item_id)\n AND (tohead_src_warehous_id=)\n AND (itemsite_item_id=item_id)\n AND (toitem_status NOT IN ('C','X'))\n AND (itemsite_warehous_id=)\n AND (itemsite_item_id=)\n\n AND (toitem_schedshipdate <= (CURRENT_DATE + itemsite_leadtime))\n\n AND (toitem_schedshipdate <= (CURRENT_DATE + ))\n\n AND (toitem_schedshipdate <= )\n\n AND (toitem_schedshipdate BETWEEN AND )\n\n)\n\n) AS dummy\n\nORDER BY duedate;\n admin 2013-07-26 0 465 employees detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: employees\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT emp_id, warehous_code, emp_active, emp_code, emp_number,\n cntct_first_name, cntct_last_name\n\n , charass_alias.charass_value AS char\n\n\n , charass_alias.charass_value AS char\n\n\n , charass_alias.charass_value::date AS char\n\nFROM emp\n LEFT OUTER JOIN cntct ON (emp_cntct_id=cntct_id)\n LEFT OUTER JOIN whsinfo ON (emp_warehous_id=warehous_id)\n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='EMP') \n AND (charass_alias.charass_target_id=emp_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='EMP') \n AND (charass_alias.charass_target_id=emp_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='EMP') \n AND (charass_alias.charass_target_id=emp_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\nWHERE (true)\n\n AND (warehous_id=)\n\n \n AND emp_active \n\n\n AND ((emp_code ~* )\n OR (emp_number ~* )\n OR (COALESCE(cntct_first_name,'') || ' ' || COALESCE(cntct_last_name,'') ~* )\n OR (COALESCE(cntct_phone,'') || ' ' || COALESCE(cntct_phone2,'') || ' ' || COALESCE(cntct_fax,'') ~* )\n OR (COALESCE(cntct_email,'') ~* ))\n\n\nORDER BY emp_code;\n admin 2013-07-26 0 247 frozenItemSites detail used by dspFrozenItemSites Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: frozenItemSites\n-- Name: detail\n-- Notes: used by dspFrozenItemSites\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT itemsite_id, warehous_code, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS descrip,\n COALESCE((SELECT invcnt_tagnumber\n FROM invcnt\n WHERE ((NOT invcnt_posted)\n AND (invcnt_itemsite_id=itemsite_id)) LIMIT 1), '') AS cnttag\nFROM itemsite, item, whsinfo\nWHERE ( (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_freeze)\n\n AND (itemsite_warehous_id=)\n\n )\nORDER BY warehous_code, item_number;\n admin 2013-07-26 0 361 glseries checkeditable Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: glseries\n-- Name: checkeditable\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT gltrans_id \nFROM accnt, gltrans \n LEFT OUTER JOIN period ON (gltrans_date BETWEEN period_start AND period_end) \nWHERE ( (gltrans_accnt_id=accnt_id) \n AND (gltrans_sequence=) \n AND ( (gltrans_deleted) \n OR (period_closed) \n OR (gltrans_rec) \n OR (period_freeze AND NOT checkPrivilege('PostFrozenPeriod')) ) )\nLIMIT 1;\n admin 2013-07-26 0 54 inventoryHistory detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: inventoryHistory\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT invhist_id, invdetail_id, invhist_transdate AS sortdate,\n formatDateTime(invhist_transdate) AS transdate,\n CASE WHEN (level=0) THEN invhist_transdate END AS invhist_transdate,\n CASE WHEN (level=0) THEN invhist_created END AS invhist_created,\n CASE WHEN (level=0) THEN invhist_user END AS invhist_user,\n CASE WHEN (level=0) THEN invhist_transtype END AS invhist_transtype,\n CASE WHEN (level=0) THEN warehous_code END AS warehous_code,\n CASE WHEN (level=0) THEN ordernumber\n ELSE locationname\n END AS orderlocation,\n CASE WHEN (level=0) THEN item_number END AS item_number,\n CASE WHEN (level=0) THEN invhist_invuom END AS invhist_invuom,\n CASE WHEN (level=0 AND invhist_transtype IN ('EX','IM','SH','SI')) THEN (invhist_invqty * -1.0)\n WHEN (level=0) THEN invhist_invqty\n ELSE invdetail_qty\n END AS transqty,\n CASE WHEN (level=0) THEN invhist_value_after - invhist_value_before\n END AS transvalue,\n CASE WHEN (level=0) THEN locfrom END AS locfrom,\n CASE WHEN (level=0) THEN invhist_qoh_before\n ELSE invdetail_qty_before\n END AS qohbefore,\n CASE WHEN (level=0) THEN locto END AS locto,\n CASE WHEN (level=0) THEN invhist_qoh_after\n ELSE invdetail_qty_after\n END AS qohafter,\n CASE WHEN (level=0) THEN costmethod END AS costmethod,\n CASE WHEN (level=0) THEN invhist_value_before END AS invhist_value_before,\n CASE WHEN (level=0) THEN invhist_value_after END AS invhist_value_after,\n 'qty' AS transqty_xtnumericrole,\n 'curr' AS transvalue_xtnumericrole,\n 0 AS transvalue_xttotalrole,\n 'qty' AS qohbefore_xtnumericrole,\n 'qty' AS qohafter_xtnumericrole,\n 'curr' AS invhist_value_before_xtnumericrole,\n 'curr' AS invhist_value_after_xtnumericrole,\n CASE WHEN (NOT invhist_posted) THEN NULL END AS qohbefore_qtdisplayrole,\n CASE WHEN (NOT invhist_posted) THEN NULL END AS qohafter_qtdisplayrole,\n CASE WHEN (NOT invhist_posted) THEN NULL END AS invhist_value_before_qtdisplayrole,\n CASE WHEN (NOT invhist_posted) THEN NULL END AS invhist_value_after_qtdisplayrole,\n CASE WHEN (NOT invhist_posted) THEN NULL END AS costmethod_qtdisplayrole,\n CASE WHEN (NOT invhist_posted) THEN NULL END AS locto_qtdisplayrole,\n CASE WHEN (NOT invhist_posted) THEN NULL END AS locfrom_qtdisplayrole,\n CASE WHEN (NOT invhist_posted) THEN 'warning' END AS qtforegroundrole,\n level AS xtindentrole\nFROM (\nSELECT invhist.*, 0 AS level,\n whs1.warehous_code AS warehous_code, item_number,\n CASE WHEN (invhist_ordtype NOT LIKE '') THEN (invhist_ordtype || '-' || invhist_ordnumber)\n ELSE invhist_ordnumber\n END AS ordernumber,\n CASE WHEN (invhist_costmethod='A') THEN \n WHEN (invhist_costmethod='S') THEN \n WHEN (invhist_costmethod='J') THEN \n WHEN (invhist_costmethod='N') THEN \n ELSE \n END AS costmethod,\n 0 AS invdetail_id, '' AS locationname,\n 0 AS invdetail_qty, 0 AS invdetail_qty_before, 0 AS invdetail_qty_after,\n CASE WHEN (invhist_transtype='TW' AND invhist_invqty < 0) THEN whs1.warehous_code\n WHEN (invhist_transtype='TW') THEN whs2.warehous_code\n WHEN (invhist_transtype='AD' AND invhist_invqty < 0) THEN whs1.warehous_code\n WHEN (invhist_transtype='AD') THEN 'ADJ'\n WHEN (invhist_transtype='EX') THEN whs1.warehous_code\n WHEN (invhist_transtype='IB') THEN whs1.warehous_code\n WHEN (invhist_transtype='IM' AND invhist_invqty < 0) THEN 'WIP'\n WHEN (invhist_transtype='IM') THEN whs1.warehous_code\n WHEN (invhist_transtype='IT') THEN whs1.warehous_code\n WHEN (invhist_transtype='RB') THEN 'WIP'\n WHEN (invhist_transtype='RM') THEN 'WIP'\n WHEN (invhist_transtype='RP') THEN whs1.warehous_code\n WHEN (invhist_transtype='RR') THEN 'CUST'\n WHEN (invhist_transtype='RS') THEN 'SHIP'\n WHEN (invhist_transtype='SH') THEN whs1.warehous_code\n WHEN (invhist_transtype='SI') THEN whs1.warehous_code\n WHEN (invhist_transtype='SV') THEN whs1.warehous_code\n\t WHEN (invhist_transtype='TR') THEN whs2.warehous_code\n\t WHEN (invhist_transtype='TS') THEN whs1.warehous_code\n\t WHEN (invhist_transtype='RI') THEN whs1.warehous_code\n ELSE ''\n END AS locfrom,\n CASE WHEN (invhist_transtype='TW' AND invhist_invqty < 0) THEN whs2.warehous_code\n WHEN (invhist_transtype='TW') THEN whs1.warehous_code\n WHEN (invhist_transtype='AD' AND invhist_invqty < 0) THEN 'ADJ'\n WHEN (invhist_transtype='AD') THEN whs1.warehous_code\n WHEN (invhist_transtype='CC') THEN whs1.warehous_code\n WHEN (invhist_transtype='EX') THEN 'EXPENSE'\n WHEN (invhist_transtype='IB') THEN 'WIP'\n WHEN (invhist_transtype='IM' AND invhist_invqty < 0) THEN whs1.warehous_code\n WHEN (invhist_transtype='IM') THEN 'WIP'\n WHEN (invhist_transtype='NN') THEN whs1.warehous_code\n WHEN (invhist_transtype='RB') THEN whs1.warehous_code\n WHEN (invhist_transtype='RM') THEN whs1.warehous_code\n WHEN (invhist_transtype='RP') THEN 'PURCH'\n WHEN (invhist_transtype='RR') THEN whs1.warehous_code\n WHEN (invhist_transtype='RS') THEN whs1.warehous_code\n WHEN (invhist_transtype='RT') THEN whs1.warehous_code\n WHEN (invhist_transtype='RX') THEN whs1.warehous_code\n WHEN (invhist_transtype='SH') THEN 'SHIP'\n WHEN (invhist_transtype='SI') THEN 'SCRAP'\n WHEN (invhist_transtype='SV') THEN 'SHIP'\n WHEN (invhist_transtype='TR') THEN whs1.warehous_code\n WHEN (invhist_transtype='TS') THEN whs2.warehous_code\n WHEN (invhist_transtype='RI') THEN 'WIP'\n ELSE ''\n END AS locto \nFROM itemsite, item, whsinfo AS whs1, invhist\n LEFT OUTER JOIN whsinfo AS whs2 ON (invhist_xfer_warehous_id=whs2.warehous_id)\nWHERE ( (invhist_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id) \n AND (itemsite_warehous_id=whs1.warehous_id)\n AND (DATE(invhist_transdate) BETWEEN AND )\n AND (transType(invhist_transtype, ))\n\n AND (invhist_ordnumber ~ )\n\n\n AND (invhist_ordtype='SO')\n AND (invhist_ordnumber ~ (\n SELECT cohead_number \n FROM cohead \n WHERE cohead_id=))\n\n\n AND (invhist_ordtype='PO')\n AND (invhist_ordnumber ~ (\n SELECT pohead_number \n FROM pohead \n WHERE pohead_id=))\n\n\n AND (invhist_ordtype='TO')\n AND (invhist_ordnumber ~ (\n SELECT tohead_number \n FROM tohead \n WHERE tohead_id=))\n\n\n AND (invhist_ordtype='WO')\n AND (invhist_ordnumber ~ formatWoNumber())\n\n\n AND (itemsite_warehous_id=)\n\n\n AND (itemsite_item_id=)\n\n\n AND (item_classcode_id=)\n\n\n AND (item_id IN (SELECT itemgrpitem_item_id\n\t\t FROM itemgrpitem\n\t\t WHERE (itemgrpitem_itemgrp_id=)))\n\n\n AND (itemsite_plancode_id=)\n\n\n AND (item_classcode_id IN (SELECT classcode_id\n\t\t\t FROM classcode\n\t\t\t WHERE (classcode_code ~ )))\n\n\n AND (item_id IN (SELECT itemgrpitem_item_id\n\t\t FROM itemgrpitem, itemgrp\n\t\t WHERE ( (itemgrpitem_itemgrp_id=itemgrp_id)\n\t\t AND (itemgrp_name ~ ))))\n\n\n AND (itemsite_plancode_id IN (SELECT plancode_id\n\t\t\t\tFROM plancode\n\t\t\t\tWHERE (plancode_code ~ )))\n\n\n AND (item_id IN (SELECT DISTINCT itemgrpitem_item_id FROM itemgrpitem))\n\n) \nUNION SELECT invhist.*, 1 AS level,\n '' AS warehous_code, '' AS item_number,\n '' AS ordernumber,\n '' AS costmethod,\n invdetail_id,\n CASE WHEN (invdetail_location_id=-1) THEN formatlotserialnumber(invdetail_ls_id)\n WHEN (invdetail_ls_id IS NULL) THEN formatLocationName(invdetail_location_id)\n ELSE (formatLocationName(invdetail_location_id) || '-' || formatlotserialnumber(invdetail_ls_id))\n END AS locationname,\n invdetail_qty, invdetail_qty_before, invdetail_qty_after,\n '' AS locfrom,\n '' AS locto \nFROM itemsite, item, whsinfo AS whs1, invdetail, invhist LEFT OUTER JOIN\n whsinfo AS whs2 ON (invhist_xfer_warehous_id=whs2.warehous_id)\nWHERE ((invhist_hasdetail)\n AND (invhist_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=whs1.warehous_id)\n AND (invdetail_invhist_id=invhist_id)\n AND (DATE(invhist_transdate) BETWEEN AND )\n AND (transType(invhist_transtype, ))\n\n AND (invhist_ordtype=)\n\n\n AND (invhist_ordnumber ~ )\n\n\n AND (invhist_ordtype='SO')\n AND (invhist_ordnumber ~ (\n SELECT cohead_number \n FROM cohead \n WHERE cohead_id=))\n\n\n AND (invhist_ordtype='PO')\n AND (invhist_ordnumber ~ (\n SELECT pohead_number \n FROM pohead \n WHERE pohead_id=))\n\n\n AND (invhist_ordtype='TO')\n AND (invhist_ordnumber ~ (\n SELECT tohead_number \n FROM tohead \n WHERE tohead_id=))\n\n\n AND (invhist_ordtype='WO')\n AND (invhist_ordnumber ~ formatWoNumber())\n\n\n AND (itemsite_warehous_id=)\n\n\n AND (itemsite_item_id=)\n\n\n AND (item_classcode_id=)\n\n\n AND (item_id IN (SELECT itemgrpitem_item_id\n\t\t FROM itemgrpitem\n\t\t WHERE (itemgrpitem_itemgrp_id=)))\n\n\n AND (itemsite_plancode_id=)\n\n\n AND (item_classcode_id IN (SELECT classcode_id\n\t\t\t FROM classcode\n\t\t\t WHERE (classcode_code ~ )))\n\n\n AND (item_id IN (SELECT itemgrpitem_item_id\n\t\t FROM itemgrpitem, itemgrp\n\t\t WHERE ( (itemgrpitem_itemgrp_id=itemgrp_id)\n\t\t AND (itemgrp_name ~ ))))\n\n\n AND (itemsite_plancode_id IN (SELECT plancode_id\n\t\t\t\tFROM plancode\n\t\t\t\tWHERE (plancode_code ~ )))\n\n\n AND (item_id IN (SELECT DISTINCT itemgrpitem_item_id FROM itemgrpitem))\n\n)\n\n ) AS data\nORDER BY sortdate DESC, invhist_id, level;\n admin 2013-07-26 0 425 contactmerge restore Restore a contact that was previously merged Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: contactmerge\n-- Name: restore\n-- Notes: Restore a contact that was previously merged\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT cntctrestore(cntctmrgd_cntct_id) AS result\nFROM cntctmrgd\n\nWHERE (cntctmrgd_cntct_id=)\n\n;\n admin 2013-07-26 0 444 bankrec checks used by reconcileBankaccount Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: bankrec\n-- Name: checks\n-- Notes: used by reconcileBankaccount\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT COALESCE(SUM(amount),0.0) AS cleared_amount\n FROM ( SELECT COALESCE( bankrecitem_amount,\n currToLocal(bankaccnt_curr_id, gltrans_amount, gltrans_date) ) AS amount\n FROM (bankaccnt CROSS JOIN gltrans)\n JOIN bankrecitem ON ((bankrecitem_source='GL')\n AND (bankrecitem_source_id=gltrans_id)\n AND (bankrecitem_bankrec_id=)\n AND (bankrecitem_cleared))\n WHERE ((gltrans_accnt_id=bankaccnt_accnt_id)\n AND (NOT gltrans_deleted)\n AND (NOT gltrans_rec)\n AND (gltrans_amount > 0)\n AND (gltrans_doctype != 'JP')\n AND (bankaccnt_id=) )\n UNION ALL\n SELECT COALESCE( bankrecitem_amount,\n currToLocal(bankaccnt_curr_id, sltrans_amount, sltrans_date) ) AS amount\n FROM (bankaccnt CROSS JOIN sltrans)\n JOIN bankrecitem ON ((bankrecitem_source='SL')\n AND (bankrecitem_source_id=sltrans_id)\n AND (bankrecitem_bankrec_id=)\n AND (bankrecitem_cleared))\n WHERE ((sltrans_accnt_id=bankaccnt_accnt_id)\n AND (NOT sltrans_rec)\n AND (sltrans_amount > 0)\n AND (bankaccnt_id=) )\n UNION ALL\n SELECT CASE WHEN(bankadjtype_iscredit=false) THEN (bankadj_amount * -1) ELSE bankadj_amount END AS amount\n FROM bankadj, bankadjtype, bankrecitem\n WHERE ( (bankrecitem_source='AD')\n AND (bankrecitem_source_id=bankadj_id)\n AND (bankrecitem_bankrec_id=)\n AND (bankrecitem_cleared)\n AND (bankadj_bankadjtype_id=bankadjtype_id)\n AND (NOT bankadj_posted)\n AND (((bankadjtype_iscredit=true) AND (bankadj_amount > 0)) OR ((bankadjtype_iscredit=false) AND (bankadj_amount < 0)))\n AND (bankadj_bankaccnt_id=) ) ) AS data;\n\nSELECT gltrans_id AS id, 1 AS altid,\n COALESCE(bankrecitem_cleared, FALSE) AS cleared,\n gltrans_date AS transdate,\n gltrans_doctype AS doc_type,\n gltrans_docnumber AS doc_number,\n gltrans_notes AS notes,\n (SELECT currConcat(COALESCE(checkhead_curr_id, baseCurrId()))) AS doc_curr,\n COALESCE(bankrecitem_curr_rate, checkhead_curr_rate, currRate(bankaccnt_curr_id, gltrans_date)) AS doc_exchrate,\n gltrans_amount AS base_amount,\n CASE WHEN (bankaccnt_curr_id=checkhead_curr_id) THEN\n COALESCE( bankrecitem_amount,\n checkhead_amount,\n currToLocal(bankaccnt_curr_id, gltrans_amount, gltrans_date) )\n ELSE\n COALESCE( bankrecitem_amount,\n currToLocal(bankaccnt_curr_id, gltrans_amount, gltrans_date) )\n END AS amount,\n gltrans_date AS sortdate,\n 'uomratio' AS doc_exchrate_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n 'curr' AS amount_xtnumericrole\n FROM (bankaccnt CROSS JOIN gltrans)\n LEFT OUTER JOIN bankrecitem ON ((bankrecitem_source='GL')\n AND (bankrecitem_source_id=gltrans_id)\n AND (bankrecitem_bankrec_id=)\n AND (bankrecitem_cleared))\n LEFT OUTER JOIN checkhead ON ((gltrans_doctype='CK')\n AND (gltrans_misc_id=checkhead_id))\n WHERE ((gltrans_accnt_id=bankaccnt_accnt_id)\n AND (NOT gltrans_deleted)\n AND (NOT gltrans_rec)\n AND (NOT COALESCE(checkhead_void, false))\n AND (gltrans_amount > 0)\n AND (gltrans_doctype != 'JP')\n AND (bankaccnt_id=) )\n UNION ALL\nSELECT sltrans_id AS id, 2 AS altid,\n COALESCE(bankrecitem_cleared, FALSE) AS cleared,\n sltrans_date AS transdate,\n sltrans_doctype AS doc_type,\n sltrans_docnumber AS doc_number,\n sltrans_notes AS notes,\n (SELECT currConcat(COALESCE(checkhead_curr_id, baseCurrId()))) AS doc_curr,\n COALESCE(bankrecitem_curr_rate, checkhead_curr_rate, currRate(bankaccnt_curr_id, sltrans_date)) AS doc_exchrate,\n sltrans_amount AS base_amount,\n CASE WHEN (bankaccnt_curr_id=checkhead_curr_id) THEN\n COALESCE( bankrecitem_amount,\n checkhead_amount,\n currToLocal(bankaccnt_curr_id, sltrans_amount, sltrans_date) )\n ELSE\n COALESCE( bankrecitem_amount,\n currToLocal(bankaccnt_curr_id, sltrans_amount, sltrans_date) )\n END AS amount,\n sltrans_date AS sortdate,\n 'uomratio' AS doc_exchrate_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n 'curr' AS amount_xtnumericrole\n FROM (bankaccnt CROSS JOIN sltrans)\n LEFT OUTER JOIN bankrecitem ON ((bankrecitem_source='SL')\n AND (bankrecitem_source_id=sltrans_id)\n AND (bankrecitem_bankrec_id=)\n AND (bankrecitem_cleared))\n LEFT OUTER JOIN checkhead ON ((sltrans_doctype='CK')\n AND (sltrans_misc_id=checkhead_id))\n WHERE ((sltrans_accnt_id=bankaccnt_accnt_id)\n AND (NOT sltrans_rec)\n AND (NOT COALESCE(checkhead_void, false))\n AND (sltrans_amount > 0)\n AND (bankaccnt_id=) )\n UNION ALL\nSELECT bankadj_id AS id, 3 AS altid,\n COALESCE(bankrecitem_cleared, FALSE) AS cleared,\n bankadj_date AS transdate,\n 'ADJ' AS doc_type,\n bankadj_docnumber AS doc_number,\n bankadjtype_name AS notes,\n (SELECT currConcat(bankadj_curr_id)) AS doc_curr,\n 1.0 AS doc_exchrate,\n CASE WHEN(bankadjtype_iscredit=false) THEN (bankadj_amount * -1.0) ELSE bankadj_amount END AS base_amount,\n CASE WHEN(bankadjtype_iscredit=false) THEN (bankadj_amount * -1.0) ELSE bankadj_amount END AS amount,\n bankadj_date AS sortdate,\n 'uomratio' AS doc_exchrate_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n 'curr' AS amount_xtnumericrole\n FROM (bankadjtype CROSS JOIN bankadj)\n LEFT OUTER JOIN bankrecitem ON ((bankrecitem_source='AD')\n AND (bankrecitem_source_id=bankadj_id)\n AND (bankrecitem_bankrec_id=)\n AND (bankrecitem_cleared))\n WHERE ( (((bankadjtype_iscredit=true) AND (bankadj_amount > 0)) OR ((bankadjtype_iscredit=false) AND (bankadj_amount < 0)))\n AND (bankadj_bankadjtype_id=bankadjtype_id)\n AND (NOT bankadj_posted)\n AND (bankadj_bankaccnt_id=) )\nORDER BY sortdate;\n\n admin 2013-07-26 0 266 orderActivityByProject detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: orderActivityByProject\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT *, \n formatQty(qty) AS f_qty,\n formatMoney(value) AS f_value,\n 'curr' AS qty_xtnumericrole,\n 'curr' AS value_xtnumericrole\nFROM (\n\n----- QUOTES -----\nSELECT DISTINCT -1 AS id, \n 10 AS type,\n '0' AS subtype,\n 1 AS section,\n AS section_qtdisplayrole,\n AS name,\n NULL::text AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL::numeric AS qty,\n NULL::text AS uom,\n NULL::numeric AS value,\n 0 AS xtindentrole\n FROM quhead\n\n JOIN prj ON (prj_id=quhead_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n WHERE (quhead_prj_id = )\n\n AND (quhead_owner_username=)\n\n\nUNION ALL\n\nSELECT quhead_id AS id, \n 15 AS type,\n quhead_number AS subtype,\n 1 AS section,\n AS section_qtdisplayrole,\n quhead_number AS name,\n CASE WHEN (quhead_status = 'C') THEN \n \n WHEN (quhead_status = 'X') THEN\n \n WHEN (COALESCE(quhead_expire, current_date + 1) > current_date) THEN\n \n ELSE\n \n END AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n NULL AS value,\n 1 AS xtindentrole\n FROM quhead\n\n JOIN prj ON (prj_id=quhead_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n JOIN quitem ON (quitem_quhead_id = quhead_id)\n WHERE (quhead_prj_id = )\n\n AND (quhead_owner_username=)\n\nGROUP BY quhead_id, quhead_number, quhead_status, quhead_expire, quhead_freight, quhead_misc\n\nUNION ALL\n\nSELECT quitem_id AS id, \n 17 AS type,\n quhead_number AS subtype,\n 1 AS section,\n AS section_qtdisplayrole,\n quitem_linenumber::text AS name, \n CASE WHEN (quhead_status = 'C') THEN \n \n WHEN (quhead_status = 'X') THEN\n \n WHEN (COALESCE(quhead_expire, current_date + 1) > current_date) THEN\n \n ELSE\n \n END AS status,\n item_number AS item,\n item_descrip1 || ' ' || item_descrip2 AS descrip,\n quitem_qtyord,\n uom_name AS uom,\n (quitem_qtyord * quitem_qty_invuomratio) * (quitem_price / quitem_price_invuomratio) AS value,\n 2 AS xtindentrole\n FROM quhead\n\n JOIN prj ON (prj_id=quhead_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n JOIN quitem ON (quitem_quhead_id = quhead_id)\n JOIN uom ON (quitem_qty_uom_id = uom_id)\n JOIN itemsite ON (quitem_itemsite_id = itemsite_id)\n JOIN item ON (itemsite_item_id = item_id)\n WHERE (quhead_prj_id = )\n\n AND (quhead_owner_username=)\n\n\nUNION ALL\n\nSELECT quhead_id AS id, \n 18 AS type,\n quhead_number AS subtype,\n 1 AS section,\n AS section_qtdisplayrole,\n AS name,\n NULL AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n SUM((quitem_qtyord * quitem_qty_invuomratio) * (quitem_price / quitem_price_invuomratio)) AS value,\n 1 AS xtindentrole\n FROM quhead\n\n JOIN prj ON (prj_id=quhead_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n JOIN quitem ON (quitem_quhead_id = quhead_id)\n WHERE (quhead_prj_id = )\n\n AND (quhead_owner_username=)\n\nGROUP BY quhead_id, quhead_number\n\nUNION ALL\n\nSELECT -1 AS id, \n 19 AS type,\n MAX(quhead_number) AS subtype,\n 1 AS section,\n AS section_qtdisplayrole,\n || ' ' || AS name,\n NULL AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n SUM((quitem_qtyord * quitem_qty_invuomratio) * (quitem_price / quitem_price_invuomratio)) AS value,\n 1 AS xtindentrole\n FROM quhead\n\n JOIN prj ON (prj_id=quhead_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n JOIN quitem ON (quitem_quhead_id = quhead_id)\n WHERE (quhead_prj_id = )\n\n AND (quhead_owner_username=)\n\n\nUNION ALL\n\n------ SALES ORDERS ------\nSELECT DISTINCT -1 AS id, \n 20 AS type,\n '0' AS subtype,\n 2 AS section,\n AS section_qtdisplayrole,\n AS name,\n NULL::text AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL::numeric AS qty,\n NULL::text AS uom,\n NULL::numeric AS value,\n 0 AS xtindentrole\n FROM cohead\n\n JOIN prj ON (prj_id=cohead_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n WHERE (cohead_prj_id = )\n\nUNION ALL\n\nSELECT cohead_id AS id, \n 25 AS type,\n cohead_number::text AS subtype,\n 2 AS section,\n AS section_qtdisplayrole,\n cohead_number::text AS name,\n COALESCE((SELECT \n CASE WHEN (coitem_status = 'O') THEN\n \n WHEN (coitem_status = 'C') THEN\n \n ELSE\n \n END\n FROM \n (SELECT coitem_status,\n CASE \n WHEN (coitem_status = 'O') THEN 1\n WHEN (coitem_status = 'C') then 2\n ELSE 3\n END AS type\n FROM coitem\n WHERE (coitem_cohead_id=cohead_id)\n ORDER BY type\n LIMIT 1) AS sts) ,'O')\n AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n NULL AS value,\n 1 AS xtindentrole\n FROM cohead\n\n JOIN prj ON (prj_id=cohead_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n JOIN coitem ON (coitem_cohead_id = cohead_id)\n WHERE (cohead_prj_id = )\nGROUP BY cohead_id, cohead_number\n\nUNION ALL\n\nSELECT coitem_id AS id, \n 27 AS type,\n cohead_number::text AS subtype,\n 2 AS section,\n AS section_qtdisplayrole,\n coitem_linenumber::text AS name, \n CASE WHEN (coitem_status = 'O') THEN\n \n WHEN (coitem_status = 'C') THEN\n \n WHEN (coitem_status = 'X') THEN\n \n END AS status,\n item_number AS item,\n item_descrip1 || ' ' || item_descrip2 AS descrip,\n coitem_qtyord,\n uom_name AS uom,\n (coitem_qtyord * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio) AS value,\n 2 AS xtindentrole\n FROM cohead\n\n JOIN prj ON (prj_id=cohead_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n JOIN coitem ON (coitem_cohead_id = cohead_id)\n JOIN uom ON (coitem_qty_uom_id = uom_id)\n JOIN itemsite ON (coitem_itemsite_id = itemsite_id)\n JOIN item ON (itemsite_item_id = item_id)\n WHERE (cohead_prj_id = )\n\nUNION ALL\n\nSELECT cohead_id AS id, \n 28 AS type,\n cohead_number::text AS subtype,\n 2 AS section,\n AS section_qtdisplayrole,\n AS name,\n NULL AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n SUM((coitem_qtyord * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio)) AS value,\n 1 AS xtindentrole\n FROM cohead\n\n JOIN prj ON (prj_id=cohead_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n JOIN coitem ON (coitem_cohead_id = cohead_id)\n WHERE (cohead_prj_id = )\nGROUP BY cohead_id, cohead_number\n\nUNION ALL\n\nSELECT -1 AS id, \n 29 AS type,\n MAX(cohead_number::text) AS subtype,\n 2 AS section,\n AS section_qtdisplayrole,\n || ' ' || AS name,\n NULL AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n SUM((coitem_qtyord * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio)) AS value,\n 1 AS xtindentrole\n FROM cohead\n\n JOIN prj ON (prj_id=cohead_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n JOIN coitem ON (coitem_cohead_id = cohead_id)\n WHERE (cohead_prj_id = )\n\nUNION ALL\n\n------ INVOICES -------\nSELECT DISTINCT -1 AS id, \n 30 AS type,\n '0' AS subtype,\n 3 AS section,\n AS section_qtdisplayrole,\n AS name,\n NULL::text AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL::numeric AS qty,\n NULL::text AS uom,\n NULL::numeric AS value,\n 0 AS xtindentrole\n FROM invchead\n\n JOIN prj ON (prj_id=invchead_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n WHERE (invchead_prj_id = )\n\nUNION ALL\n\nSELECT invchead_id AS id,\n 35 AS type,\n invchead_invcnumber::text AS subtype,\n 3 AS section,\n AS section_qtdisplayrole,\n invchead_invcnumber::text AS name,\n CASE WHEN (invchead_posted) THEN\n \n ELSE \n END AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n NULL AS value,\n 1 AS xtindentrole\n FROM invchead\n\n JOIN prj ON (prj_id=invchead_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n JOIN invcitem ON (invcitem_invchead_id = invchead_id)\n WHERE (invchead_prj_id = )\nGROUP BY invchead_id, invchead_invcnumber, invchead_freight, invchead_misc_amount, invchead_posted\n\nUNION ALL\n\nSELECT invcitem_id AS id, \n 37 AS type,\n invchead_invcnumber::text AS subtype,\n 3 AS section,\n AS section_qtdisplayrole,\n invcitem_linenumber::text AS name, \n CASE WHEN (invchead_posted) THEN\n \n ELSE \n END AS status,\n COALESCE(item_number,invcitem_number) AS item,\n COALESCE(item_descrip1 || ' ' || item_descrip2,invcitem_descrip) AS descrip,\n invcitem_billed AS qty,\n uom_name AS uom,\n (invcitem_billed * invcitem_qty_invuomratio) * (invcitem_price / invcitem_price_invuomratio) AS value,\n 2 AS xtindentrole\n FROM invchead\n\n JOIN prj ON (prj_id=invchead_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n JOIN invcitem ON (invcitem_invchead_id = invchead_id)\n LEFT OUTER JOIN item ON (invcitem_item_id = item_id)\n LEFT OUTER JOIN uom ON (invcitem_qty_uom_id = uom_id)\n WHERE (invchead_prj_id = )\n\nUNION ALL\n\nSELECT invchead_id AS id, \n 38 AS type,\n invchead_invcnumber::text AS subtype,\n 3 AS section,\n AS section_qtdisplayrole,\n AS name,\n NULL AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n SUM((invcitem_billed * invcitem_qty_invuomratio) * (invcitem_price / invcitem_price_invuomratio)) AS value,\n 1 AS xtindentrole\n FROM invchead\n\n JOIN prj ON (prj_id=invchead_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n JOIN invcitem ON (invcitem_invchead_id = invchead_id)\n WHERE (invchead_prj_id = )\nGROUP BY invchead_id, invchead_invcnumber\n\nUNION ALL\n\nSELECT -1 AS id, \n 39 AS type,\n MAX(invchead_invcnumber::text) AS subtype,\n 3 AS section,\n AS section_qtdisplayrole,\n || ' ' || AS name,\n NULL AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n SUM((invcitem_billed * invcitem_qty_invuomratio) * (invcitem_price / invcitem_price_invuomratio)) AS value,\n 1 AS xtindentrole\n FROM invchead\n\n JOIN prj ON (prj_id=invchead_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n JOIN invcitem ON (invcitem_invchead_id = invchead_id)\n WHERE (invchead_prj_id = )\n\n\n\n\n\n\n\n\nUNION ALL\n\n\n\n------ WORK ORDERS -------\nSELECT DISTINCT -1 AS id, \n 40 AS type,\n '0' AS subtype,\n 4 AS section,\n AS section_qtdisplayrole,\n AS name,\n NULL::text AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL::numeric AS qty,\n NULL::text AS uom,\n NULL::numeric AS value,\n 0 AS xtindentrole\n FROM wo\n\n JOIN prj ON (prj_id=wo_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n WHERE (wo_prj_id = )\n\nUNION ALL\n\nSELECT wo_id AS id, \n 45 AS type,\n formatWoNumber(wo_id) AS subtype,\n 4 AS section,\n AS section_qtdisplayrole,\n formatWoNumber(wo_id) AS name,\n CASE WHEN (wo_status = 'O') THEN\n \n WHEN (wo_status = 'E') THEN\n \n WHEN (wo_status = 'R') THEN\n \n WHEN (wo_status = 'I') THEN\n \n WHEN (wo_status = 'C') THEN\n \n END AS status,\n item_number AS item,\n item_descrip1 || ' ' || item_descrip2 AS descrip,\n wo_qtyord AS qty,\n uom_name AS uom,\n wo_postedvalue AS value,\n 1 AS xtindentrole\n FROM wo\n\n JOIN prj ON (prj_id=wo_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n JOIN itemsite ON (itemsite_id=wo_itemsite_id)\n JOIN item ON (itemsite_item_id=item_id)\n JOIN uom ON (item_inv_uom_id=uom_id)\n WHERE (wo_prj_id = )\n\nUNION ALL\n\nSELECT -1 AS id, \n 49 AS type,\n MAX(formatWoNumber(wo_id)) AS subtype,\n 4 AS section,\n AS section_qtdisplayrole,\n || ' ' || AS name,\n NULL AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n SUM(wo_postedvalue) AS value,\n 1 AS xtindentrole\n FROM wo\n\n JOIN prj ON (prj_id=wo_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n WHERE (wo_prj_id = )\n\n\n\n\n\n\n UNION ALL\n\n UNION ALL\n\n\n------ PURCHASE REQUESTS ------\nSELECT DISTINCT -1 AS id, \n 50 AS type,\n '0' AS subtype,\n 5 AS section,\n AS section_qtdisplayrole,\n AS name,\n NULL::text AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL::numeric AS qty,\n NULL::text AS uom,\n NULL::numeric AS value,\n 0 AS xtindentrole\n FROM pr\n\n JOIN prj ON (prj_id=pr_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n WHERE (pr_prj_id = )\n\nUNION ALL\n\nSELECT pr_id AS id, \n 55 AS type,\n pr_number::text || '-' || pr_subnumber::text AS subtype,\n 5 AS section,\n AS section_qtdisplayrole,\n pr_number::text || '-' || pr_subnumber::text AS name,\n AS status, \n item_number AS item,\n (item_descrip1 || ' ' || item_descrip2) AS descrip,\n pr_qtyreq AS qty,\n uom_name AS uom,\n stdcost(item_id) * pr_qtyreq AS value,\n 1 AS xtindentrole\n FROM pr\n\n JOIN prj ON (prj_id=pr_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n JOIN itemsite ON (itemsite_id = pr_itemsite_id)\n JOIN item ON (itemsite_item_id = item_id)\n JOIN uom ON (item_inv_uom_id = uom_id)\n WHERE (pr_prj_id=)\n\nUNION ALL\n\nSELECT -1 AS id, \n 59 AS type,\n MAX(pr_number::text || '-' || pr_subnumber::text) AS subtype,\n 5 AS section,\n AS section_qtdisplayrole,\n || ' ' || AS name,\n NULL AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n SUM(stdcost(item_id) * pr_qtyreq) AS value,\n 1 AS xtindentrole\n FROM pr\n\n JOIN prj ON (prj_id=pr_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n JOIN itemsite ON (itemsite_id = pr_itemsite_id)\n JOIN item ON (itemsite_item_id = item_id)\n WHERE (pr_prj_id = )\n\nUNION ALL\n\n------ PURCHASE ORDERS ------\nSELECT DISTINCT -1 AS id, \n 60 AS type,\n '0' AS subtype,\n 6 AS section,\n AS section_qtdisplayrole,\n AS name,\n NULL::text AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL::numeric AS qty,\n NULL::text AS uom,\n NULL::numeric AS value,\n 0 AS xtindentrole\n FROM poitem\n\n JOIN prj ON (prj_id=poitem_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n WHERE (poitem_prj_id = )\n\nUNION ALL\n\nSELECT pohead_id AS id,\n 65 AS type,\n pohead_number::text AS subtype,\n 6 AS section,\n AS section_qtdisplayrole,\n pohead_number::text AS name,\n CASE WHEN (pohead_status = 'U') THEN\n \n WHEN (pohead_status = 'O') THEN\n \n WHEN (pohead_status = 'C') THEN\n \n END AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL AS uom,\n NULL AS value,\n 1 AS xtindentrole\n FROM pohead\n JOIN poitem ON (poitem_pohead_id = pohead_id)\n\n JOIN prj ON (prj_id=poitem_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n WHERE (poitem_prj_id = )\nGROUP BY pohead_id, pohead_number, pohead_freight, pohead_status\n\nUNION ALL\n\nSELECT poitem_id AS id, \n 67 AS type,\n pohead_number::text AS subtype,\n 6 AS section,\n AS section_qtdisplayrole,\n poitem_linenumber::text AS name, \n CASE WHEN (poitem_status = 'U') THEN\n \n WHEN (poitem_status = 'O') THEN\n \n WHEN (poitem_status = 'C') THEN\n \n END AS status,\n COALESCE(item_number,poitem_vend_item_number) AS item,\n COALESCE((item_descrip1 || ' ' || item_descrip2),poitem_vend_item_descrip) AS descrip,\n poitem_qty_ordered,\n poitem_vend_uom AS uom,\n (poitem_qty_ordered * poitem_unitprice) AS value,\n 2 AS xtindentrole\n FROM pohead\n JOIN poitem ON (poitem_pohead_id = pohead_id)\n\n JOIN prj ON (prj_id=poitem_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n LEFT OUTER JOIN itemsite ON (poitem_itemsite_id=itemsite_id)\n LEFT OUTER JOIN item ON (itemsite_item_id = item_id)\n WHERE (poitem_prj_id = )\n\nUNION ALL\n\nSELECT pohead_id AS id, \n 68 AS type,\n pohead_number::text AS subtype,\n 6 AS section,\n AS section_qtdisplayrole,\n AS name,\n NULL AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n SUM(poitem_qty_ordered * poitem_unitprice) AS value,\n 1 AS xtindentrole\n FROM pohead\n JOIN poitem ON (poitem_pohead_id = pohead_id)\n\n JOIN prj ON (prj_id=poitem_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n WHERE (poitem_prj_id = )\nGROUP BY pohead_id, pohead_number\n\nUNION ALL\n\nSELECT -1 AS id, \n 69 AS type,\n MAX(pohead_number::text) AS subtype,\n 6 AS section,\n AS section_qtdisplayrole,\n || ' ' || AS name,\n NULL AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n SUM(poitem_qty_ordered * poitem_unitprice) AS value,\n 1 AS xtindentrole\n FROM pohead\n JOIN poitem ON (poitem_pohead_id = pohead_id)\n\n JOIN prj ON (prj_id=poitem_prj_id\n AND ((prj_owner_username=) OR (prj_username=)))\n\n WHERE (poitem_prj_id = )\n\n\n\n) data\nORDER BY section, subtype, type, id;\n admin 2013-07-26 0 458 packingList getreport get the reportname should be used for a packing list or pick list Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: packingList\n-- Name: getreport\n-- Notes: get the reportname should be used for a packing list or pick list\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT findCustomerForm(cohead_cust_id,\n ) AS reportname\n FROM cohead \n WHERE (cohead_id=);\n\nSELECT findTOForm(,\n ) AS reportname;\n\n admin 2013-07-26 0 37 arAging detail used by dspTimePhasedOpenARItems Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: arAging\n-- Name: detail\n-- Notes: used by dspTimePhasedOpenARItems\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT araging_cust_id, araging_cust_number, araging_cust_name,\n SUM(araging_total_val) AS araging_total_val_sum,\n SUM(araging_cur_val) AS araging_cur_val_sum,\n SUM(araging_thirty_val) AS araging_thirty_val_sum,\n SUM(araging_sixty_val) AS araging_sixty_val_sum,\n SUM(araging_ninety_val) AS araging_ninety_val_sum,\n SUM(araging_plus_val) AS araging_plus_val_sum,\n 'curr' AS araging_total_val_sum_xtnumericrole,\n 'curr' AS araging_cur_val_sum_xtnumericrole,\n 'curr' AS araging_thirty_val_sum_xtnumericrole,\n 'curr' AS araging_sixty_val_sum_xtnumericrole,\n 'curr' AS araging_ninety_val_sum_xtnumericrole,\n 'curr' AS araging_plus_val_sum_xtnumericrole,\n 0 AS araging_total_val_sum_xttotalrole,\n 0 AS araging_cur_val_sum_xttotalrole,\n 0 AS araging_thirty_val_sum_xttotalrole,\n 0 AS araging_sixty_val_sum_xttotalrole,\n 0 AS araging_ninety_val_sum_xttotalrole,\n 0 AS araging_plus_val_sum_xttotalrole\n\nFROM araging(, ) \n\nWHERE (araging_cust_id=)\n\nWHERE (araging_cust_custtype_id=)\n\nLEFT OUTER JOIN custgrpitem ON (araging_cust_id = custgrpitem_cust_id)\nWHERE (custgrpitem_custgrp_id=)\n\nWHERE (araging_custtype_code ~ )\n\nGROUP BY araging_cust_number,araging_cust_id,araging_cust_name\nORDER BY araging_cust_number;\n admin 2013-07-26 0 279 qoh detail Quantity on Hand By Location Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: qoh\n-- Name: detail\n-- Notes: \n-- Quantity on Hand By Location\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT itemloc_id, warehous_code, item_number,\n f_descrip, f_lotserial, uom_name,\n qoh, reservedqty,\n 'qty' AS qoh_xtnumericrole,\n 'qty' AS reservedqty_xtnumericrole,\n level AS xtindentrole\nFROM (\n SELECT itemloc_id, 0 AS level, item_number AS sortkey, warehous_code, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS f_descrip,\n formatlotserialnumber(itemloc_ls_id) AS f_lotserial, uom_name,\n itemloc_qty AS qoh,\n \n qtyReservedLocation(itemloc_id) AS reservedqty\n \n 0 AS reservedqty\n \n FROM itemloc, itemsite, whsinfo, item, uom\n WHERE ((itemloc_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (itemloc_location_id=))\n UNION\n SELECT -1 AS itemloc_id, 0 AS level, item_number AS sortkey, warehous_code, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS f_descrip,\n AS f_lotserial, uom_name,\n itemsite_qtyonhand AS qoh,\n 0 AS reservedqty\n FROM itemsite, whsinfo, item, uom\n WHERE ((itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (NOT itemsite_loccntrl)\n AND (itemsite_location_id=))\n \n UNION\n SELECT itemloc_id, 1 AS level, item_number AS sortkey, '' AS warehous_code, '' AS item_number,\n (itemlocrsrv_source || '-' || formatSOItemNumber(itemlocrsrv_source_id)) AS f_descrip,\n '' AS f_lotserial, '' AS uom_name,\n NULL AS qoh,\n itemlocrsrv_qty AS reservedqty\n FROM itemlocrsrv, itemloc, itemsite, item\n WHERE ((itemlocrsrv_itemloc_id=itemloc_id)\n AND (itemsite_id=itemloc_itemsite_id)\n AND(item_id=itemsite_item_id)\n AND(itemloc_location_id=))\n \n ) AS data\nORDER BY\n sortkey, itemloc_id, level;\n\n\nSELECT forwardupdateinvbalance(invbal_id)\nFROM (\n SELECT DISTINCT ON (itemsite_id) invbal_id\n FROM invbal, itemsite, item, whsinfo, classcode, uom, costcat, period\n WHERE ((invbal_dirty)\n AND (invbal_period_id=period_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_active)\n AND (item_inv_uom_id=uom_id)\n AND (item_classcode_id=classcode_id)\n AND (itemsite_costcat_id=costcat_id)\n \n AND (itemsite_item_id=)\n \n \n AND (classcode_id=)\n \n \n AND (classcode_id IN (SELECT classcode_id\n FROM classcode\n WHERE classcode_code ~ ))\n \n \n AND (costcat_id=)\n \n \n AND (costcat_id IN (SELECT costcat_id\n FROM costcat\n WHERE costcat_code ~ ))\n \n \n AND (item_id IN (SELECT itemgrpitem_item_id\n FROM itemgrpitem\n WHERE (itemgrpitem_itemgrp_id=)))\n \n \n AND (item_id IN (SELECT itemgrpitem_item_id\n FROM itemgrpitem, itemgrp\n WHERE ((itemgrpitem_itemgrp_id=itemgrp_id)\n AND (itemgrp_name ~ ))))\n \n \n AND (itemsite_qtyonhand > 0)\n \n AND (itemsite_qtyonhand < 0)\n \n \n AND (itemsite_warehous_id=)\n \n )\n ORDER BY itemsite_id, period_start\n ) AS data\n;\n\n-- Quantity on Hand\nSELECT itemsite_id, detail,warehous_code,\n classcode_code, item_number, uom_name,\n costcat_code,\n item_descrip1, item_descrip2,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescrip,\n defaultlocation,\n reorderlevel, formatQty(reorderlevel) AS f_reorderlevel,\n qoh, formatQty(qoh) AS f_qoh,\n nnqoh, formatQty(nnqoh) AS f_nnqoh,\n CASE WHEN (itemsite_loccntrl) THEN nnqoh END AS f_nnqoh,\n cost, (cost * qoh) AS value,\n CASE WHEN (itemsite_loccntrl) THEN (cost * nnqoh) END AS nnvalue,\n CASE WHEN(itemsite_costmethod='A') THEN 'Average'\n WHEN(itemsite_costmethod='S') THEN 'Standard'\n WHEN(itemsite_costmethod='J') THEN 'Job'\n WHEN(itemsite_costmethod='N') THEN 'None'\n ELSE 'UNKNOWN'\n END AS costmethod,\n \n formatMoney(cost) AS f_cost, (cost * qoh) AS f_value,\n CASE WHEN (itemsite_loccntrl) THEN (cost * nnqoh) END AS f_nnvalue,\n CASE WHEN(itemsite_costmethod='A') THEN 'Average'\n WHEN(itemsite_costmethod='S') THEN 'Standard'\n WHEN(itemsite_costmethod='J') THEN 'Job'\n WHEN(itemsite_costmethod='N') THEN 'None'\n ELSE 'UNKNOWN'\n END AS f_costmethod,\n \n 'qty' AS reorderlevel_xtnumericrole,\n 'qty' AS qoh_xtnumericrole,\n 'qty' AS f_nnqoh_xtnumericrole,\n 0 AS qoh_xttotalrole,\n 0 AS nnqoh_xttotalrole,\n 'cost' AS cost_xtnumericrole,\n 'curr' AS value_xtnumericrole,\n 'curr' AS nnvalue_xtnumericrole,\n 0 AS value_xttotalrole,\n 0 AS nnvalue_xttotalrole,\n AS nnqoh_xtnullrole,\n AS nnvalue_xtnullrole,\n CASE WHEN (qoh < 0) THEN 'error' END AS qoh_qtforegroundrole,\n CASE WHEN (reorderlevel > qoh) THEN 'warning' END AS qoh_qtforegroundrole\nFROM (\n SELECT itemsite_id, itemsite_loccntrl, itemsite_costmethod,\n ((itemsite_loccntrl) OR (itemsite_controlmethod IN ('L', 'S')) ) AS detail,\n classcode_code, item_number, uom_name, item_descrip1, item_descrip2,\n costcat_code, \n CASE WHEN (NOT useDefaultLocation(itemsite_id)) THEN \n ELSE defaultLocationName(itemsite_id)\n END AS defaultlocation,\n warehous_code,\n CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel ELSE 0.0 END AS reorderlevel,\n \n COALESCE(invbal_qoh_ending,0) AS qoh,\n COALESCE(invbal_nn_ending,0) AS nnqoh,\n \n itemsite_qtyonhand AS qoh,\n itemsite_nnqoh AS nnqoh,\n \n \n stdcost(item_id) AS cost\n \n actcost(item_id) AS cost\n \n \n COALESCE((invbal_value_ending / CASE WHEN(invbal_qoh_ending=0) THEN 1\n ELSE invbal_qoh_ending END),0) AS cost\n \n (itemsite_value / CASE WHEN((itemsite_qtyonhand + itemsite_nnqoh)=0) THEN 1\n ELSE (itemsite_qtyonhand + itemsite_nnqoh) END) AS cost\n \n \n FROM item, whsinfo, classcode, uom, costcat, itemsite\n \n LEFT OUTER JOIN invbal ON ((itemsite_id=invbal_itemsite_id)\n AND (invbal_period_id=))\n \n WHERE ((itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_active)\n AND (item_inv_uom_id=uom_id)\n AND (item_classcode_id=classcode_id)\n AND (itemsite_costcat_id=costcat_id)\n \n AND (itemsite_item_id=)\n \n \n AND (classcode_id=)\n \n \n AND (classcode_id IN (SELECT classcode_id\n FROM classcode\n WHERE classcode_code ~ ))\n \n \n AND (costcat_id=)\n \n \n AND (costcat_id IN (SELECT costcat_id\n FROM costcat\n WHERE costcat_code ~ ))\n \n \n AND (item_id IN (SELECT itemgrpitem_item_id\n FROM itemgrpitem\n WHERE (itemgrpitem_itemgrp_id=)))\n \n \n AND (item_id IN (SELECT itemgrpitem_item_id\n FROM itemgrpitem, itemgrp\n WHERE ((itemgrpitem_itemgrp_id=itemgrp_id)\n AND (itemgrp_name ~ ))))\n \n \n \n AND (COALESCE(invbal_qoh_ending,0) > 0)\n \n AND (itemsite_qtyonhand > 0)\n \n \n \n AND (COALESCE(invbal_qoh_ending,0) < 0)\n \n AND (itemsite_qtyonhand < 0)\n \n \n \n AND (itemsite_warehous_id=)\n \n )\n ) AS data\nORDER BY warehous_code, item_number;\n\n admin 2013-07-26 0 446 bankrec receipts used by reconcileBankaccount Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: bankrec\n-- Name: receipts\n-- Notes: used by reconcileBankaccount\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT COALESCE(SUM(amount),0.0) AS cleared_amount\n FROM ( SELECT COALESCE( bankrecitem_amount,\n (currToLocal(bankaccnt_curr_id, gltrans_amount, gltrans_date) * -1.0) ) AS amount\n FROM (bankaccnt CROSS JOIN gltrans)\n JOIN bankrecitem ON ((bankrecitem_source='GL')\n AND (bankrecitem_source_id=gltrans_id)\n AND (bankrecitem_bankrec_id=)\n AND (bankrecitem_cleared))\n WHERE ((gltrans_accnt_id=bankaccnt_accnt_id)\n AND (NOT gltrans_deleted)\n AND (NOT gltrans_rec)\n AND (gltrans_amount < 0)\n AND (gltrans_doctype != 'JP')\n AND (bankaccnt_id=) )\n UNION ALL\n SELECT COALESCE( bankrecitem_amount,\n (currToLocal(bankaccnt_curr_id, sltrans_amount, sltrans_date) * -1.0) ) AS amount\n FROM (bankaccnt CROSS JOIN sltrans)\n JOIN bankrecitem ON ((bankrecitem_source='SL')\n AND (bankrecitem_source_id=sltrans_id)\n AND (bankrecitem_bankrec_id=)\n AND (bankrecitem_cleared))\n WHERE ((sltrans_accnt_id=bankaccnt_accnt_id)\n AND (NOT sltrans_rec)\n AND (sltrans_amount < 0)\n AND (bankaccnt_id=) )\n UNION ALL\n SELECT CASE WHEN(bankadjtype_iscredit=true) THEN (bankadj_amount * -1) ELSE bankadj_amount END AS amount\n FROM bankrecitem, bankadj, bankadjtype\n WHERE ( (bankrecitem_source='AD')\n AND (bankrecitem_source_id=bankadj_id)\n AND (bankrecitem_bankrec_id=)\n AND (bankrecitem_cleared)\n AND (bankadj_bankadjtype_id=bankadjtype_id)\n AND (NOT bankadj_posted)\n AND (((bankadjtype_iscredit=false) AND (bankadj_amount > 0)) OR (bankadjtype_iscredit=true AND (bankadj_amount < 0)))\n AND (bankadj_bankaccnt_id=) ) ) AS data;\n\nSELECT gltrans_id AS id, 1 AS altid,\n jrnluse_use AS use, gltrans_journalnumber AS jrnlnum,\n COALESCE(date(jrnluse_date), gltrans_date) AS f_jrnldate,\n COALESCE(bankrecitem_cleared, FALSE) AS cleared,\n gltrans_date AS f_date,\n gltrans_doctype AS doc_type,\n gltrans_docnumber AS docnumber,\n gltrans_notes AS notes,\n currConcat(COALESCE(cashrcpt_curr_id, baseCurrId())) AS doc_curr,\n COALESCE(bankrecitem_curr_rate, cashrcpt_curr_rate, currRate(bankaccnt_curr_id, gltrans_date)) AS doc_exchrate,\n (gltrans_amount * -1.0) AS base_amount,\n CASE WHEN (bankaccnt_curr_id=cashrcpt_curr_id) THEN\n COALESCE( bankrecitem_amount,\n cashrcpt_amount,\n (currToLocal(bankaccnt_curr_id, gltrans_amount, gltrans_date) * -1.0) )\n ELSE\n COALESCE( bankrecitem_amount,\n (currToLocal(bankaccnt_curr_id, gltrans_amount, gltrans_date) * -1.0) )\n END AS amount,\n COALESCE(date(jrnluse_date), gltrans_date) AS jrnldate,\n gltrans_date AS sortdate,\n 'uomratio' AS doc_exchrate_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n 'curr' AS amount_xtnumericrole\n FROM bankaccnt\n JOIN gltrans ON (bankaccnt_accnt_id=gltrans_accnt_id)\n LEFT OUTER JOIN bankrecitem ON ((bankrecitem_source='GL')\n AND (bankrecitem_source_id=gltrans_id)\n AND (bankrecitem_bankrec_id=)\n AND (bankrecitem_cleared))\n LEFT OUTER JOIN jrnluse ON (jrnluse_number=gltrans_journalnumber AND jrnluse_use='C/R')\n LEFT OUTER JOIN cashrcpt ON ((gltrans_source='A/R')\n AND (gltrans_doctype='CR')\n AND (gltrans_misc_id=cashrcpt_id))\n LEFT OUTER JOIN checkhead ON ((gltrans_doctype='CK')\n AND (gltrans_misc_id=checkhead_id))\n WHERE ((NOT gltrans_deleted)\n AND (NOT gltrans_rec)\n AND (NOT COALESCE(checkhead_void, false))\n AND (gltrans_amount < 0)\n AND (gltrans_doctype != 'JP')\n AND (bankaccnt_id=) )\n UNION ALL\nSELECT sltrans_id AS id, 2 AS altid,\n jrnluse_use AS use, sltrans_journalnumber AS jrnlnum,\n COALESCE(date(jrnluse_date), sltrans_date) AS f_jrnldate,\n COALESCE(bankrecitem_cleared, FALSE) AS cleared,\n sltrans_date AS f_date,\n sltrans_doctype AS doc_type,\n sltrans_docnumber AS docnumber,\n sltrans_notes AS notes,\n currConcat(COALESCE(cashrcpt_curr_id, baseCurrId())) AS doc_curr,\n COALESCE(bankrecitem_curr_rate, cashrcpt_curr_rate, currRate(bankaccnt_curr_id, sltrans_date)) AS doc_exchrate,\n (sltrans_amount * -1.0) AS base_amount,\n CASE WHEN (bankaccnt_curr_id=cashrcpt_curr_id) THEN\n COALESCE( bankrecitem_amount,\n cashrcpt_amount,\n (currToLocal(bankaccnt_curr_id, sltrans_amount, sltrans_date) * -1.0) )\n ELSE\n COALESCE( bankrecitem_amount,\n (currToLocal(bankaccnt_curr_id, sltrans_amount, sltrans_date) * -1.0) )\n END AS amount,\n COALESCE(date(jrnluse_date), sltrans_date) AS jrnldate,\n sltrans_date AS sortdate,\n 'uomratio' AS doc_exchrate_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n 'curr' AS amount_xtnumericrole\n FROM bankaccnt\n JOIN sltrans ON (bankaccnt_accnt_id=sltrans_accnt_id)\n LEFT OUTER JOIN bankrecitem ON ((bankrecitem_source='SL')\n AND (bankrecitem_source_id=sltrans_id)\n AND (bankrecitem_bankrec_id=)\n AND (bankrecitem_cleared))\n LEFT OUTER JOIN jrnluse ON (jrnluse_number=sltrans_journalnumber AND jrnluse_use='C/R')\n LEFT OUTER JOIN cashrcpt ON ((sltrans_source='A/R')\n AND (sltrans_doctype='CR')\n AND (sltrans_misc_id=cashrcpt_id))\n LEFT OUTER JOIN checkhead ON ((sltrans_doctype='CK')\n AND (sltrans_misc_id=checkhead_id))\n WHERE ((NOT sltrans_rec)\n AND (NOT COALESCE(checkhead_void, false))\n AND (sltrans_amount < 0)\n AND (bankaccnt_id=) )\n UNION ALL\nSELECT bankadj_id AS id, 3 AS altid,\n '' AS use, NULL AS jrnlnum, bankadj_date AS f_jrnldate,\n COALESCE(bankrecitem_cleared, FALSE) AS cleared,\n bankadj_date AS f_date,\n 'ADJ' AS doc_type,\n bankadj_docnumber AS docnumber,\n bankadjtype_name AS notes,\n currConcat(bankadj_curr_id) AS doc_curr,\n 1.0 AS doc_exchrate,\n CASE WHEN(bankadjtype_iscredit=true) THEN (bankadj_amount * -1.0) ELSE bankadj_amount END AS base_amount,\n CASE WHEN(bankadjtype_iscredit=true) THEN (bankadj_amount * -1.0) ELSE bankadj_amount END AS amount,\n bankadj_date AS jrnldate,\n bankadj_date AS sortdate,\n 'uomratio' AS doc_exchrate_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n 'curr' AS amount_xtnumericrole\n FROM (bankadjtype CROSS JOIN bankadj)\n LEFT OUTER JOIN bankrecitem ON ((bankrecitem_source='AD')\n AND (bankrecitem_source_id=bankadj_id)\n AND (bankrecitem_bankrec_id=))\n WHERE ( (((bankadjtype_iscredit=false) AND (bankadj_amount > 0)) OR ((bankadjtype_iscredit=true) AND (bankadj_amount < 0)))\n AND (bankadj_bankadjtype_id=bankadjtype_id)\n AND (NOT bankadj_posted)\n AND (bankadj_bankaccnt_id=) )\nORDER BY jrnldate, jrnlnum, sortdate;\n\n admin 2013-07-26 0 39 arHistory detail used by dspCustomerARHistory, dspCustomerInformation Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: arHistory\n-- Name: detail\n-- Notes: used by dspCustomerARHistory, dspCustomerInformation\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT aropen_id, applyid,\n sortdate, sortnumber, type,\n docnumber, open, documenttype,\n docdate, duedate, amount, balance, base_balance, currAbbr,\n formatBoolYN(open) AS f_open,\n formatDate(docdate) AS f_docdate, formatDate(duedate) AS f_duedate,\n 'curr' AS amount_xtnumericrole,\n 'curr' AS balance_xtnumericrole,\n 'curr' AS base_balance_xtnumericrole,\n 0 AS base_balance_xttotalrole,\n type AS xtindentrole\n FROM (\n SELECT 0 AS type, aropen_id, -1 AS applyid,\n aropen_docdate AS sortdate, (aropen_docnumber || aropen_doctype) AS sortnumber,\n aropen_docnumber AS docnumber,\n aropen_open AS open,\n CASE WHEN (aropen_doctype='I') THEN \n WHEN (aropen_doctype='C') THEN \n WHEN (aropen_doctype='D') THEN \n WHEN (aropen_doctype='R') then \n ELSE \n END AS documenttype,\n aropen_docdate AS docdate,\n aropen_duedate AS duedate,\n aropen_amount AS amount,\n (aropen_amount - aropen_paid) AS balance,\n CASE WHEN (aropen_doctype IN ('C', 'R')) THEN\n (currtobase(aropen_curr_id,(aropen_amount - aropen_paid),aropen_docdate) * -1.0)\n ELSE currtobase(aropen_curr_id,(aropen_amount - aropen_paid),aropen_docdate)\n END AS base_balance,\n currConcat(aropen_curr_id) AS currAbbr\n FROM aropen\n WHERE ( (aropen_cust_id=) \n \n AND (aropen_docdate BETWEEN AND )\n )\n\n UNION\n SELECT 1 AS type, -1 AS aropen_id, arapply_source_aropen_id AS applyid,\n aropen_docdate AS sortdate, (aropen_docnumber || aropen_doctype) AS sortnumber,\n CASE WHEN (arapply_source_doctype IN ('C','R')) THEN arapply_source_docnumber\n WHEN (arapply_source_doctype='K') THEN arapply_refnumber\n ELSE \n END AS docnumber,\n NULL AS open,\n CASE WHEN (arapply_source_doctype='C') THEN \n WHEN (arapply_source_doctype='R') THEN \n WHEN (arapply_fundstype='C') THEN \n WHEN (arapply_fundstype='T') THEN \n WHEN (arapply_fundstype='M') THEN \n WHEN (arapply_fundstype='V') THEN \n WHEN (arapply_fundstype='A') THEN \n WHEN (arapply_fundstype='D') THEN \n WHEN (arapply_fundstype='R') THEN \n WHEN (arapply_fundstype='K') THEN \n WHEN (arapply_fundstype='W') THEN \n WHEN (arapply_fundstype='O') THEN \n END AS documenttype,\n COALESCE(cashrcpt_docdate, arapply_postdate) AS docdate,\n arapply_distdate AS duedate,\n arapply_applied AS amount,\n 0 AS balance,\n 0 AS base_balance,\n currConcat(arapply_curr_id) AS currAbbr\n FROM arapply JOIN aropen ON (arapply_target_aropen_id=aropen_id)\n LEFT OUTER JOIN cashrcptitem ON ( (arapply_reftype='CR') AND\n (arapply_ref_id=cashrcptitem_id) )\n LEFT OUTER JOIN cashrcpt ON (cashrcpt_id=cashrcptitem_cashrcpt_id)\n WHERE ( (arapply_target_doctype IN ('I', 'D'))\n AND (arapply_cust_id=)\n AND (aropen_cust_id=)\n \n AND (aropen_docdate BETWEEN AND )\n )\n\n UNION\n SELECT 2 AS type, -1 AS aropen_id, arapply_target_aropen_id AS applyid,\n aropen_docdate AS sortdate, (aropen_docnumber || aropen_doctype) AS sortnumber,\n arapply_target_docnumber AS docnumber,\n NULL AS open,\n CASE WHEN (arapply_target_doctype='I') THEN \n WHEN (arapply_target_doctype='D') THEN \n ELSE \n END AS documenttype,\n arapply_postdate AS docdate,\n arapply_distdate AS duedate,\n arapply_applied AS amount,\n 0 AS balance,\n 0 AS base_balance,\n currConcat(arapply_curr_id) AS currAbbr\n FROM arapply, aropen\n WHERE ( (arapply_source_doctype IN ('K', 'C', 'R'))\n AND (arapply_source_aropen_id=aropen_id)\n AND (arapply_cust_id=)\n AND (aropen_cust_id=)\n \n AND (aropen_docdate BETWEEN AND )\n )\n\n UNION\n SELECT 0 AS type, -1 AS aropen_id, -1 AS applyid,\n invchead_invcdate AS sortdate, (invchead_invcnumber || 'I') AS sortnumber,\n invchead_invcnumber AS docnumber,\n false AS open,\n AS documenttype,\n invchead_invcdate AS docdate,\n invchead_invcdate AS duedate,\n 0 AS amount,\n 0 AS balance,\n 0 AS base_balance,\n currConcat(invchead_curr_id) AS currAbbr\n FROM invchead\n WHERE ( (invchead_cust_id=) \n \n AND (invchead_invcdate BETWEEN AND )\n \n AND (invchead_posted)\n AND ((SELECT SUM(invcitem_price)\n FROM invcitem\n WHERE (invcitem_invchead_id=invchead_id))=0) )\n ) AS data\n ORDER BY sortdate, sortnumber, type;\n admin 2013-07-26 0 105 bankrecHistory reconciled Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: bankrecHistory\n-- Name: reconciled\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT -1 AS gltrans_id, bankrec_opendate AS gltrans_date, formatDate(bankrec_opendate) AS f_date,\n AS gltrans_docnumber, AS type, 0 AS sort, NULL AS gltrans_notes, \n bankrec_openbal AS amount, formatMoney(bankrec_openbal) AS f_amount,\n 'curr' AS amount_xtnumericrole,\n 0 AS xtindentrole\n FROM bankrec\n WHERE (bankrec_id=)\n \nUNION\n\n\nSELECT gltrans_id, gltrans_date, formatDate(gltrans_date) AS f_date,\n gltrans_docnumber,\n CASE WHEN gltrans_doctype = 'CK' THEN \n WHEN gltrans_doctype = 'CR' THEN \n ELSE END AS type,\n CASE WHEN gltrans_doctype = 'CK' THEN 1\n WHEN gltrans_doctype = 'CR' THEN 2\n ELSE '3' END AS sort,\n gltrans_notes AS notes,\n COALESCE( bankrecitem_amount,\n (currtolocal(bankaccnt_curr_id, gltrans_amount, gltrans_date) * -1.0) ) AS amount,\n formatMoney(COALESCE( bankrecitem_amount,\n (currtolocal(bankaccnt_curr_id, gltrans_amount, gltrans_date) * -1.0) ) ) AS f_amount,\n 'curr' AS amount_xtnumericrole,\n 1 AS xtindentrole\n FROM gltrans, bankrecitem \n JOIN bankrec ON (bankrecitem_bankrec_id=bankrec_id)\n JOIN bankaccnt ON (bankaccnt_id=bankrec_bankaccnt_id)\n WHERE ((bankrecitem_bankrec_id=)\n AND (bankrecitem_source='GL')\n AND (bankrecitem_source_id=gltrans_id) ) \n\nUNION\n\nSELECT sltrans_id, sltrans_date, formatDate(sltrans_date) AS f_date,\n sltrans_docnumber,\n CASE WHEN sltrans_doctype = 'CK' THEN \n WHEN sltrans_doctype = 'CR' THEN \n ELSE END AS type,\n CASE WHEN sltrans_doctype = 'CK' THEN 1\n WHEN sltrans_doctype = 'CR' THEN 2\n ELSE '3' END AS sort,\n sltrans_notes AS notes,\n COALESCE( bankrecitem_amount,\n (currtolocal(bankaccnt_curr_id, sltrans_amount, sltrans_date) * -1.0) ) AS amount,\n formatMoney(COALESCE( bankrecitem_amount,\n (currtolocal(bankaccnt_curr_id, sltrans_amount, sltrans_date) * -1.0) ) ) AS f_amount,\n 'curr' AS amount_xtnumericrole,\n 1 AS xtindentrole\n FROM sltrans, bankrecitem \n JOIN bankrec ON (bankrecitem_bankrec_id=bankrec_id)\n JOIN bankaccnt ON (bankaccnt_id=bankrec_bankaccnt_id)\n WHERE ((bankrecitem_bankrec_id=)\n AND (bankrecitem_source='SL')\n AND (bankrecitem_source_id=sltrans_id) ) \n\n\nUNION\n\nSELECT -1 AS gltrans_id, bankrec_enddate, formatDate(bankrec_enddate) AS f_date,\n , AS type, 7 AS sort, NULL, \n bankrec_endbal AS amount, formatMoney(bankrec_endbal) AS f_amount,\n 'curr' AS amount_xtnumericrole,\n 0 AS xtindentrole\n FROM bankrec\n WHERE (bankrec_id=)\n\nUNION\nSELECT -1, NULL, NULL, , NULL, 1, NULL, NULL, NULL, 'curr', 0 \nUNION\nSELECT -1, NULL, NULL, , NULL, 2, NULL, NULL, NULL, 'curr', 0 \nUNION\nSELECT -1, NULL, NULL, , NULL, 3, NULL, NULL, NULL, 'curr', 0 \n\n\nORDER BY sort, xtindentrole, type, f_date, gltrans_id\n admin 2013-07-26 0 106 bankrecHistory unreconciled Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: bankrecHistory\n-- Name: unreconciled\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT gltrans_id, gltrans_date, formatDate(gltrans_date) AS f_date,\n gltrans_docnumber,\n CASE WHEN gltrans_doctype = 'CK' THEN \n WHEN gltrans_doctype = 'CR' THEN \n ELSE END AS type,\n CASE WHEN gltrans_doctype = 'CK' THEN 1\n WHEN gltrans_doctype = 'CR' THEN 2\n ELSE '3' END AS sort,\n gltrans_notes AS notes,\n currtolocal(bankaccnt_curr_id,gltrans_amount,gltrans_date) * -1 AS amount,\n formatMoney(currtolocal(bankaccnt_curr_id,gltrans_amount,gltrans_date) * -1) AS f_amount,\n CASE WHEN gltrans_doctype = 'CK' THEN \n currtolocal(bankaccnt_curr_id,gltrans_amount,gltrans_date) * -1\n ELSE 0 END AS rtcheck,\n CASE WHEN gltrans_doctype = 'CR' THEN \n currtolocal(bankaccnt_curr_id,gltrans_amount,gltrans_date) * -1\n ELSE 0 END AS rtdep,\n CASE WHEN gltrans_doctype NOT IN ('CK','CR') THEN \n currtolocal(bankaccnt_curr_id,gltrans_amount,gltrans_date) * -1\n ELSE 0 END AS rtadj,\n 'curr' AS amount_xtnumericrole,\n 1 AS xtindentrole\n FROM gltrans\n JOIN bankaccnt ON (bankaccnt_accnt_id = gltrans_accnt_id)\n JOIN bankrec selrec ON ((selrec.bankrec_bankaccnt_id = bankaccnt_id)\n AND (selrec.bankrec_id=))\n LEFT OUTER JOIN bankrecitem ON ((bankrecitem_source='GL')\n\n AND (bankrecitem_source_id=gltrans_id))\n LEFT OUTER JOIN bankrec actrec ON (actrec.bankrec_id = bankrecitem_bankrec_id)\n LEFT OUTER JOIN checkhead ON ((gltrans_doctype='CK')\n AND (gltrans_misc_id=checkhead_id))\n\n WHERE ((COALESCE(actrec.bankrec_postdate,endoftime()) > COALESCE(selrec.bankrec_postdate,now()))\n AND (NOT gltrans_deleted)\n AND (NOT COALESCE(checkhead_void, false)))\n AND (gltrans_doctype != 'JP')\n\n WHERE (false)\n\n\nUNION\n\nSELECT sltrans_id, sltrans_date, formatDate(sltrans_date) AS f_date,\n sltrans_docnumber,\n CASE WHEN sltrans_doctype = 'CK' THEN \n WHEN sltrans_doctype = 'CR' THEN \n ELSE END AS type,\n CASE WHEN sltrans_doctype = 'CK' THEN 1\n WHEN sltrans_doctype = 'CR' THEN 2\n ELSE '3' END AS sort,\n sltrans_notes AS notes,\n currtolocal(bankaccnt_curr_id,sltrans_amount,sltrans_date) * -1 AS amount,\n formatMoney(currtolocal(bankaccnt_curr_id,sltrans_amount,sltrans_date) * -1) AS f_amount,\n CASE WHEN sltrans_doctype = 'CK' THEN \n currtolocal(bankaccnt_curr_id,sltrans_amount,sltrans_date) * -1\n ELSE 0 END AS rtcheck,\n CASE WHEN sltrans_doctype = 'CR' THEN \n currtolocal(bankaccnt_curr_id,sltrans_amount,sltrans_date) * -1\n ELSE 0 END AS rtdep,\n CASE WHEN sltrans_doctype NOT IN ('CK','CR') THEN \n currtolocal(bankaccnt_curr_id,sltrans_amount,sltrans_date) * -1\n ELSE 0 END AS rtadj,\n 'curr' AS amount_xtnumericrole,\n 1 AS xtindentrole\n FROM sltrans\n JOIN bankaccnt ON (bankaccnt_accnt_id = sltrans_accnt_id)\n JOIN bankrec selrec ON ((selrec.bankrec_bankaccnt_id = bankaccnt_id)\n AND (selrec.bankrec_id=))\n LEFT OUTER JOIN bankrecitem ON ((bankrecitem_source='SL')\n\n AND (bankrecitem_source_id=sltrans_id))\n LEFT OUTER JOIN bankrec actrec ON (actrec.bankrec_id = bankrecitem_bankrec_id)\n LEFT OUTER JOIN checkhead ON ((sltrans_doctype='CK')\n AND (sltrans_misc_id=checkhead_id))\n\n WHERE ((COALESCE(actrec.bankrec_postdate,endoftime()) > COALESCE(selrec.bankrec_postdate,now()))\n AND (NOT COALESCE(checkhead_void, false)))\n\nUNION\nSELECT -1, NULL, NULL, , NULL, 1, NULL, NULL, NULL, NULL, NULL, NULL,'curr', 0 \nUNION\nSELECT -1, NULL, NULL, , NULL, 2, NULL, NULL, NULL, NULL, NULL, NULL, 'curr', 0 \nUNION\nSELECT -1, NULL, NULL, , NULL, 3, NULL, NULL, NULL, NULL, NULL, NULL, 'curr', 0\n\n\nORDER BY sort, xtindentrole, type, f_date, gltrans_id\n\n WHERE (false)\n\n admin 2013-07-26 0 233 bom detail used by dspIndentedBOM, dspSingleLevelBOM, dspSummarizedBOM Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: bom\n-- Name: detail\n-- Notes: used by dspIndentedBOM, dspSingleLevelBOM, dspSummarizedBOM\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT \n bomitem_item_id AS itemid, bomitem.*, item_number,\n invuom.uom_name AS invuomname, issueuom.uom_name AS issueuomname,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescription,\n (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyfxd) AS invqtyfxd,\n (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper) AS invqtyper,\n 'qty' AS bomitem_qtyfxd_xtnumericrole,\n 'qty' AS invqtyfxd_xtnumericrole,\n 'qtyper' AS bomitem_qtyper_xtnumericrole,\n 'qtyper' AS invqtyper_xtnumericrole,\n 'percent' AS bomitem_scrap_xtnumericrole,\n CASE WHEN COALESCE(bomitem_effective, startOfTime()) = startOfTime() \n THEN \n END AS bomitem_effective_qtdisplayrole,\n CASE WHEN COALESCE(bomitem_expires, endOfTime()) = endOfTime() \n THEN \n END AS bomitem_expires_qtdisplayrole,\n CASE WHEN (bomitem_expires < CURRENT_DATE) THEN 'expired'\n WHEN (bomitem_effective >= CURRENT_DATE) THEN 'future'\n WHEN (item_type='M') THEN 'altemphasis'\n END AS qtforegroundrole\n \n \n item_id AS itemid,\n \n bomdata_item_id AS itemid,\n \n *,'percent' AS bomdata_scrap_xtnumericrole,\n 'qtyper' AS bomdata_qtyreq_xtnumericrole,\n CASE WHEN COALESCE(bomdata_effective, startOfTime()) <=\n startOfTime() THEN \n END AS bomdata_effective_qtdisplayrole,\n CASE WHEN COALESCE(bomdata_expires, endOfTime()) >=\n endOfTime() THEN \n END AS bomdata_expires_qtdisplayrole,\n CASE WHEN (bomdata_expired) THEN 'expired'\n WHEN (bomdata_future) THEN 'future'\n END AS qtforegroundrole\n \n , bomdata_bomwork_level - 1 AS xtindentrole\n \n \nFROM \n bomitem(,),\n item, uom AS issueuom, uom AS invuom\n \n indentedBOM(,\n ,\n ,\n )\n \n summarizedBOM(,\n ,\n ,\n )\n JOIN item ON (bomdata_item_number=item_number)\n \nWHERE ((TRUE)\n\n AND (bomdata_item_id > 0)\n\n AND (bomitem_item_id=item_id)\n AND (item_inv_uom_id=invuom.uom_id)\n AND (bomitem_uom_id=issueuom.uom_id)\n \n AND (bomitem_expires > (CURRENT_DATE - ))\n \n AND (bomitem_expires > CURRENT_DATE)\n \n \n AND (bomitem_effective <= (CURRENT_DATE + ))\n \n AND (bomitem_effective <= CURRENT_DATE)\n \n\n )\n\n ORDER BY bomitem_seqnumber, bomitem_effective\n\n;\n admin 2013-07-26 0 117 bomItems detail used by bom, booItem Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: bomItems\n-- Name: detail\n-- Notes: used by bom, booItem\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT bomitem_id, item_id, *,\n (item_descrip1 || ' ' || item_descrip2) AS item_description,\n CASE WHEN (item_type='P') THEN text()\n WHEN (item_type='M') THEN text()\n WHEN (item_type='J') THEN text()\n WHEN (item_type='F') THEN text()\n WHEN (item_type='B') THEN text()\n WHEN (item_type='C') THEN text()\n WHEN (item_type='Y') THEN text()\n WHEN (item_type='R') THEN text()\n WHEN (item_type='S') THEN text()\n WHEN (item_type='T') THEN text()\n WHEN (item_type='A') THEN text()\n WHEN (item_type='O') THEN text()\n WHEN (item_type='L') THEN text()\n WHEN (item_type='K') THEN text()\n ELSE text()\n END AS itemtype,\n uom_name AS issueuom,\n CASE WHEN (bomitem_issuemethod = 'S') THEN \n WHEN (bomitem_issuemethod = 'L') THEN \n WHEN (bomitem_issuemethod = 'M') THEN \n ELSE \n END AS issuemethod,\n 'qty' AS bomitem_qtyfxd_xtnumericrole,\n 'qtyper' AS bomitem_qtyper_xtnumericrole,\n 'percent' AS bomitem_scrap_xtnumericrole,\n CASE WHEN (bomitem_effective = startOfTime()) THEN NULL\n ELSE bomitem_effective END AS effective,\n CASE WHEN (bomitem_expires = endOfTime()) THEN NULL\n ELSE bomitem_expires END AS expires,\n AS effective_xtnullrole,\n AS expires_xtnullrole,\n CASE WHEN (bomitem_expires <= CURRENT_DATE) THEN 'expired'\n WHEN (bomitem_effective > CURRENT_DATE) THEN 'future'\n WHEN (item_type='M') THEN 'altemphasis'\n END AS qtforegroundrole\n\nFROM bomitem(), item, uom, xtmfg.booitem\n\nFROM bomitem(, ), item, uom\n\nWHERE ((bomitem_item_id=item_id)\n AND (bomitem_uom_id=uom_id)\n\n AND (bomitem_expires > CURRENT_DATE)\n\n\n AND (bomitem_effective <= CURRENT_DATE)\n\n\n AND (booitem_id = )\n AND (bomitem_booitem_seq_id = booitem_seq_id)\n\n )\nORDER BY bomitem_seqnumber, bomitem_effective;\n admin 2013-07-26 0 290 timePhasedAvailability detail used by dspTimePhasedAvailability Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timePhasedAvailability\n-- Name: detail\n-- Notes: used by dspTimePhasedAvailability\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT itemsite_id, itemtype,\n item_number, uom_name, warehous_code,\n reorderlevel \n \n , bucket_,\n 'qty' AS bucket__xtnumericrole,\n CASE WHEN (bucket_ < reorderlevel) THEN 'error' END AS bucket__qtforegroundrole \n \n FROM (SELECT itemsite_id,\n CASE WHEN (item_type IN ('F', 'B', 'C', 'Y', 'R')) THEN 0\n WHEN (item_type IN ('M')) THEN 1\n WHEN (item_type IN ('P', 'O')) THEN 2\n ELSE 0\n END AS itemtype,\n item_number, uom_name, warehous_code,\n CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel ELSE 0.0 END AS reorderlevel \n\n \n , qtyAvailable(itemsite_id, findPeriodStart()) AS bucket_ \n \n FROM itemsite, item, whsinfo, uom\n WHERE ((itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id) \n AND (itemsite_warehous_id=warehous_id) \n \n AND (itemsite_warehous_id=) \n \n \n AND (itemsite_plancode_id=)\n \n AND (itemsite_plancode_id IN (SELECT plancode_id FROM plancode WHERE (plancode_code ~ )))\n \n )) AS data\n ORDER BY item_number;\n admin 2013-07-26 0 230 addresses detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: addresses\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT DISTINCT ON (addr_country, addr_state, addr_city, addr_line1, addr_number) \n addr_id, addr_line1, addr_line2, addr_line3, \n addr_city, addr_state, addr_country, addr_postalcode \n\n , charass_alias.charass_value AS char\n\n\n , charass_alias.charass_value AS char\n\n\n , charass_alias.charass_value::date AS char\n\nFROM addr \n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='ADDR') \n AND (charass_alias.charass_target_id=addr_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='ADDR') \n AND (charass_alias.charass_target_id=addr_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='ADDR') \n AND (charass_alias.charass_target_id=addr_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\nWHERE true\n \n AND addr_active \n\n\nORDER BY addr_country, addr_state, addr_city, addr_line1, addr_number;\n admin 2013-07-26 0 300 uninvoicedReceivings detail used by dspUninvoicedReceivings Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: uninvoicedReceivings\n-- Name: detail\n-- Notes: used by dspUninvoicedReceivings\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT recv_id AS id,\n CASE WHEN(poitem_status='C') THEN 2\n ELSE 1\n END AS doctype,\n recv_date AS thedate,\n recv_trans_usr_name AS f_user,\n recv_order_number AS ponumber, poitem_linenumber,\n vend_name,\n COALESCE(item_number,\n ('Misc. - ' || recv_vend_item_number)) AS itemnumber,\n recv_qty AS qty, 'qty' AS qty_xtnumericrole,\n 'Receipt' AS type,\n recv_value AS value,\n 'curr' AS value_xtnumericrole, 0 AS value_xttotalrole\nFROM recv, vendinfo,\n poitem LEFT OUTER JOIN (itemsite JOIN item ON (itemsite_item_id=item_id))\n ON (poitem_itemsite_id=itemsite_id)\nWHERE ((recv_orderitem_id=poitem_id)\n AND (recv_order_type='PO')\n AND (recv_vend_id=vend_id)\n AND (recv_posted)\n AND (recv_vohead_id IS NULL)\n AND (NOT recv_invoiced)\n\n AND (itemsite_warehous_id=)\n\n\n AND (recv_agent_username=)\n\n )\n\nUNION\n\nSELECT poreject_id AS id,\n 3 AS doctype,\n poreject_date AS thedate,\n poreject_trans_username AS f_user,\n poreject_ponumber AS ponumber, poitem_linenumber,\n vend_name,\n COALESCE(item_number,\n ('Misc. - ' || poreject_vend_item_number)) AS itemnumber,\n poreject_qty, 'qty' AS qty_xtnumericrole,\n 'Return' AS type,\n poreject_value * -1 AS value,\n 'curr' AS value_xtnumericrole, 0 AS value_xtotalrole\nFROM poreject, vendinfo,\n poitem LEFT OUTER JOIN (itemsite JOIN item ON (itemsite_item_id=item_id))\n ON (poitem_itemsite_id=itemsite_id)\nWHERE ((poreject_poitem_id=poitem_id)\n AND (poreject_vend_id=vend_id)\n AND (poreject_posted)\n AND (NOT poreject_invoiced)\n\n AND (itemsite_warehous_id=)\n\n\n AND (poreject_agent_username=)\n\n )\nORDER BY ponumber, poitem_linenumber;\n admin 2013-07-26 0 434 accountNumbers detail used by accountNumbers Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: accountNumbers\n-- Name: detail\n-- Notes: used by accountNumbers\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT accnt_id, *,\n CASE WHEN(accnt_type='A') THEN \n WHEN(accnt_type='E') THEN \n WHEN(accnt_type='L') THEN \n WHEN(accnt_type='Q') THEN \n WHEN(accnt_type='R') THEN \n ELSE accnt_type\n END AS accnt_type_qtdisplayrole,\n accnt_active \n FROM (ONLY accnt LEFT OUTER JOIN\n company ON (accnt_company=company_number)) \n LEFT OUTER JOIN subaccnttype ON (accnt_type=subaccnttype_accnt_type AND accnt_subaccnttype_code=subaccnttype_code)\n WHERE true\n\n AND (NOT COALESCE(company_external, false)) \n\n\n AND COALESCE(accnt_active, false)\n\nORDER BY accnt_number, accnt_sub, accnt_profit;\n\n admin 2013-07-26 0 42 arOpenItems detail used by arWorkBench, dspAROpenItems Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: arOpenItems\n-- Name: detail\n-- Notes: used by arWorkBench, dspAROpenItems\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT SUM(CASE WHEN (aropen_doctype IN ('C', 'R')) THEN\n (aropen_amount - aropen_paid) / aropen_curr_rate * -1\n ELSE (aropen_amount - aropen_paid) / aropen_curr_rate\n END) AS total_balance\nFROM aropen JOIN custinfo ON (aropen_cust_id=cust_id)\n LEFT OUTER JOIN custtype ON (cust_custtype_id=custtype_id)\n LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id)\nWHERE ( (aropen_open)\n\n AND (aropen_cust_id=)\n\n\n AND (custtype_id=)\n\n\n AND (custtype_code~)\n\n\n AND (custgrpitem_custgrp_id=)\n\n )\n;\n\n\n-- Get unposted invoices\n\n\nSELECT -1 AS id,\n 0 AS altId,\n invchead_invcnumber AS docnumber,\n invchead_id AS docnumber_xtidrole,\n invchead_posted AS posted,\n invchead_invcdate AS docdate,\n NULL::date AS aropen_duedate,\n invchead_ordernumber AS ordernumber,\n cohead_id AS ordernumber_xtidrole,\n AS doctype,\n NULL AS doctype_qtforegroundrole,\n invoicetotal(invchead_id) AS amount,\n currtobase(invchead_curr_id, invoicetotal(invchead_id), invchead_invcdate) AS base_amount,\n 0 AS paid,\n 0 AS base_paid,\n 0 AS balance,\n currConcat(invchead_curr_id) AS currAbbr,\n 0 AS base_balance,\n\n formatDate(invchead_invcdate) AS f_docdate,\n NULL::text AS f_duedate,\n formatMoney(0) AS f_amount,\n formatMoney(0) AS f_paid,\n formatMoney(0) AS f_balance,\n\n cust_id, cust_number, cust_name,\n (invchead_recurring_invchead_id IS NOT NULL) AS recurring,\n false AS open,\n NULL AS ccard_number,\n 'curr' AS amount_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n 0 AS base_amount_xttotalrole,\n 'curr' AS paid_xtnumericrole,\n 'curr' AS base_paid_xtnumericrole,\n 0 AS base_paid_xttotalrole,\n 'curr' AS balance_xtnumericrole,\n 'curr' AS base_balance_xtnumericrole,\n 0 AS base_balance_xttotalrole,\n NULL::text AS aropen_docnumber_qtdisplayrole,\n NULL::text AS aropen_docdate_qtdisplayrole,\n 0 AS xtindentrole,\n '' AS aropen_duedate_qtforegroundrole,\n NULL::integer AS ccard_number_xtidrole,\n firstLine(invchead_notes) AS notes\nFROM invchead\n LEFT OUTER JOIN cohead ON (invchead_ordernumber=cohead_number)\n JOIN custinfo ON (invchead_cust_id=cust_id)\n JOIN custtype ON (cust_custtype_id=custtype_id)\n\t LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id)\nWHERE ((NOT invchead_posted)\n\n AND (invchead_cust_id=)\n\n\n AND (custtype_id=)\n\n\n AND (custtype_code~)\n\n\n AND (custgrpitem_custgrp_id=)\n\n\n AND (invchead_invcdate BETWEEN AND )\n\n )\n GROUP BY id, altId, invchead_id,\n invchead_invcdate, invchead_posted, invchead_curr_id,\n invchead_recurring, invchead_invcnumber, invchead_posted,\n invchead_ordernumber, cohead_id,\n cust_id, cust_number, cust_name,\n invchead_recurring_invchead_id, invchead_notes\n\nUNION\n\n\n\n-- Get unposted credit memos\n\n\nSELECT -1 AS id,\n 1 AS altId,\n cmhead_number AS docnumber,\n cmhead_id AS docnumber_xtidrole,\n cmhead_posted AS posted,\n cmhead_docdate AS docdate,\n NULL::date AS aropen_duedate,\n NULL::text AS ordernumber,\n -1 AS ordernumber_xtidrole,\n AS doctype,\n CASE WHEN (NOT cmhead_posted) THEN 'emphasis'\n END AS doctype_qtforegroundrole,\n creditmemototal(cmhead_id) AS amount,\n currtobase(cmhead_curr_id, creditmemototal(cmhead_id), cmhead_docdate) AS base_amount,\n 0 AS paid,\n 0 AS base_paid,\n 0 AS balance,\n currConcat(cmhead_curr_id) AS currAbbr,\n 0 AS base_balance,\n\n formatDate(cmhead_docdate) AS f_docdate,\n NULL::text AS f_duedate,\n formatMoney(creditmemototal(cmhead_id)) AS f_amount,\n formatMoney(0) AS f_paid,\n formatMoney(0) AS f_balance,\n\n cust_id, cust_number, cust_name,\n false AS recurring,\n false AS open,\n NULL AS ccard_number,\n 'curr' AS amount_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n 0 AS base_amount_xttotalrole,\n 'curr' AS paid_xtnumericrole,\n 'curr' AS base_paid_xtnumericrole,\n 0 AS base_paid_xttotalrole,\n 'curr' AS balance_xtnumericrole,\n 'curr' AS base_balance_xtnumericrole,\n 0 AS base_balance_xttotalrole,\n NULL::text AS aropen_docnumber_qtdisplayrole,\n NULL::text AS aropen_docdate_qtdisplayrole,\n 0 AS xtindentrole,\n '' AS aropen_duedate_qtforegroundrole,\n NULL::integer AS ccard_number_xtidrole,\n firstLine(cmhead_comments) AS notes\nFROM cmhead\n JOIN custinfo ON (cmhead_cust_id=cust_id)\n JOIN custtype ON (cust_custtype_id=custtype_id)\n\t LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id)\nWHERE ((NOT cmhead_posted)\n\n AND (cmhead_cust_id=)\n\n\n AND (custtype_id=)\n\n\n AND (custtype_code~)\n\n\n AND (custgrpitem_custgrp_id=)\n\n\n AND (cmhead_docdate BETWEEN AND )\n\n )\n GROUP BY id, altId, cmhead_id,\n cmhead_docdate, cmhead_posted, cmhead_curr_id,\n cmhead_number, cmhead_posted, cmhead_comments,\n cust_id, cust_number, cust_name\n\nUNION\n\n\n\n-- Get Posted AR Open\nSELECT aropen_id AS id,\n CASE WHEN (aropen_doctype='I') THEN 0\n WHEN (aropen_doctype='C') THEN 1\n WHEN (aropen_doctype='D') THEN 2\n WHEN (aropen_doctype='R') THEN 3\n ELSE -1\n END AS altId,\n aropen_docnumber AS docnumber,\n COALESCE(invchead_id,cmhead_id,-1) AS docnumber_xtidrole,\n true AS posted,\n aropen_docdate AS docdate,\n aropen_duedate,\n aropen_ordernumber AS ordernumber,\n COALESCE(cohead_id,-1) AS ordernumber_xtidrole,\n CASE WHEN (aropen_doctype='I') THEN \n WHEN (aropen_doctype='C') THEN \n WHEN (aropen_doctype='D') THEN \n WHEN (aropen_doctype='R') THEN \n ELSE \n END AS doctype,\n CASE WHEN (aropen_doctype='C') THEN 'emphasis' \n ELSE CASE WHEN(aropen_doctype='R')THEN 'altemphasis'\n END\n END AS doctype_qtforegroundrole,\n aropen_amount AS amount,\n aropen_amount/aropen_curr_rate AS base_amount,\n (aropen_paid - (COALESCE(SUM(arapply_target_paid),0))) AS paid,\n (aropen_paid - (COALESCE(SUM(arapply_target_paid),0))/aropen_curr_rate) AS base_paid,\n (((aropen_amount-aropen_paid+COALESCE(SUM(arapply_target_paid),0))) *\n CASE WHEN (aropen_doctype IN ('C', 'R')) THEN -1 ELSE 1 END) AS balance,\n currConcat(aropen_curr_id) AS currAbbr,\n (((aropen_amount-aropen_paid+COALESCE(SUM(arapply_target_paid),0)))/aropen_curr_rate *\n CASE WHEN (aropen_doctype IN ('C', 'R')) THEN -1 ELSE 1 END) AS base_balance,\n\n formatDate(aropen_docdate) AS f_docdate,\n formatDate(aropen_duedate) AS f_duedate,\n formatMoney(aropen_amount) AS f_amount,\n formatMoney(aropen_paid - (COALESCE(SUM(arapply_target_paid),0))) AS f_paid,\n formatMoney((((aropen_amount-aropen_paid+COALESCE(SUM(arapply_target_paid),0))) *\n CASE WHEN (aropen_doctype IN ('C', 'R')) THEN -1 ELSE 1 END)) AS f_balance,\n\n cust_id, cust_number, cust_name,\n COALESCE(invchead_recurring_invchead_id IS NOT NULL, false) AS recurring,\n aropen_open AS open,\n formatccnumber(decrypt(setbytea(ccard_number),\n setbytea(), 'bf')) AS ccard_number,\n 'curr' AS amount_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n 0 AS base_amount_xttotalrole,\n 'curr' AS paid_xtnumericrole,\n 'curr' AS base_paid_xtnumericrole,\n 0 AS base_paid_xttotalrole,\n 'curr'AS balance_xtnumericrole,\n 'curr' AS base_balance_xtnumericrole,\n 0 AS base_balance_xttotalrole,\n NULL AS aropen_docnumber_qtdisplayrole,\n NULL AS aropen_docdate_qtdisplayrole,\n 0 AS xtindentrole,\n CASE WHEN ((COALESCE(aropen_duedate,current_date) < current_date) AND COALESCE(aropen_open,FALSE)) THEN 'error' \n END AS aropen_duedate_qtforegroundrole,\n ccpay_id AS ccard_number_xtidrole,\n firstLine(aropen_notes) AS notes\nFROM aropen \n\n JOIN incdt ON (incdt_aropen_id=aropen_id)\n\n JOIN custinfo ON (aropen_cust_id=cust_id)\n JOIN custtype ON (cust_custtype_id=custtype_id)\n\t LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id)\n LEFT OUTER JOIN invchead ON ((aropen_docnumber=invchead_invcnumber)\n AND (aropen_doctype='I'))\n LEFT OUTER JOIN cohead ON (invchead_ordernumber=cohead_number)\n LEFT OUTER JOIN cmhead ON ((aropen_docnumber=cmhead_number)\n AND (aropen_doctype='C'))\n LEFT OUTER JOIN arapply ON (((aropen_id=arapply_source_aropen_id)\n OR (aropen_id=arapply_target_aropen_id))\n AND (arapply_distdate>COALESCE(,current_date)))\n LEFT OUTER JOIN payaropen ON (payaropen_aropen_id=aropen_id)\n LEFT OUTER JOIN ccpay ON (payaropen_ccpay_id=ccpay_id)\n LEFT OUTER JOIN ccard ON (ccpay_ccard_id=ccard_id)\nWHERE ((true)\n\n AND (aropen_docdate <= COALESCE(, current_date))\n AND (COALESCE(aropen_closedate, DATE() + 1, current_date + 1) > COALESCE(, current_date)) \n\n\n AND (aropen_doctype IN ('D','I'))\n\n AND (aropen_doctype IN ('C', 'R'))\n\n\n AND (aropen_cust_id=)\n\n\n AND (custtype_id=)\n\n\n AND (custgrpitem_custgrp_id=)\n\n\n AND (custtype_code~)\n\n\n AND (aropen_docdate BETWEEN AND )\n\n\n AND (aropen_duedate >= )\n\n\n AND (aropen_duedate <= )\n\n )\n GROUP BY id, altId,\t invchead_id,\n aropen_docdate, aropen_duedate, aropen_doctype, \n aropen_docnumber, aropen_amount, \n aropen_notes, aropen_posted, aropen_ordernumber,\n aropen_paid, aropen_open, aropen_curr_id,\n aropen_closedate, aropen_curr_rate, cmhead_id,\n cust_id, \t\t cust_number, cust_name,\n cohead_id, ccpay_id, ccard_number,\n invchead_recurring_invchead_id\nUNION\nSELECT -1,\n 4 AS altId,\n aropen_docnumber AS docnumber,\n -1 AS docnumber_xtidrole,\n NULL AS posted, \n aropen_docdate AS docdate,\n NULL AS aropen_duedate,\n CAST(incdt_number AS text) AS ordernumber,\n incdt_id AS ordernumber_xtidrole,\n NULL AS doctype,\n NULL AS doctype_qtforegroundrole,\n NULL AS amount,\n NULL AS base_amount,\n NULL AS paid,\n NULL AS base_paid,\n NULL AS balance,\n NULL AS currAbbr,\n NULL AS base_balance,\n\n NULL AS f_docdate,\n NULL AS f_duedate,\n NULL AS f_amount,\n NULL AS f_paid,\n NULL AS f_balance,\n\n NULL,incdt_assigned_username, incdt_summary,\n NULL AS recurring, NULL AS open,\n NULL AS ccard_number,\n 'curr' AS amount_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n 0 AS base_amount_xttotalrole,\n 'curr' AS paid_xtnumericrole,\n 'curr' AS base_paid_xtnumericrole,\n 0 AS base_paid_xttotalrole,\n 'curr' AS balance_xtnumericrole,\n 'curr' AS base_balance_xtnumericrole,\n 0 AS base_balance_xttotalrole,\n '' AS aropen_docnumber_qtdisplayrole,\n '' AS aropen_docdate_qtdisplayrole,\n 1 AS xtindentrole,\n CASE WHEN ((COALESCE(aropen_duedate,current_date) < current_date) AND COALESCE(aropen_open,FALSE)) THEN 'error' \n END AS aropen_duedate_qtforegroundrole,\n NULL::integer AS ccard_xtidrole,\n firstLine(incdt_descrip) AS notes\nFROM incdt JOIN aropen ON (aropen_id=incdt_aropen_id)\n JOIN custinfo ON (aropen_cust_id=cust_id)\n JOIN custtype ON (cust_custtype_id=custtype_id)\n\t LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id)\nWHERE ((true)\n\n AND (aropen_docdate <= COALESCE(, current_date))\n AND (COALESCE(aropen_closedate, DATE() + 1, current_date + 1) > COALESCE(, current_date)) \n\n\n AND (NOT aropen_doctype IN ('C', 'R'))\n\n\n AND (aropen_doctype IN ('C', 'R'))\n\n\n AND (aropen_cust_id=)\n\n\n AND (custtype_id=)\n\n\n AND (custtype_code~)\n\n\n AND (custgrpitem_custgrp_id=)\n\n\n AND (aropen_docdate BETWEEN AND )\n\n\n AND (aropen_duedate >= )\n\n\n AND (aropen_duedate <= )\n\n )\n\nORDER BY\n docdate DESC, docnumber DESC, xtindentrole\n;\n\n admin 2013-07-26 0 119 updateListPrices update Calculates and immediately updates list prices to the database Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: updateListPrices\n-- Name: update\n-- Notes: Calculates and immediately updates list prices to the database\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nUPDATE item SET item_listprice=\n\n item_listprice + \n\n item_listprice * (1.0 + ( / 100.0))\n\nWHERE (item_sold)\n\n AND (item_prodcat_id=)\n\n AND (item_prodcat_id IN (SELECT prodcat_id FROM prodcat WHERE (prodcat_code ~ )))\n\n admin 2013-07-26 0 417 bookings detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: bookings\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT coitem_id AS id, coitem_cohead_id AS altId,\n formatSoLineNumber(coitem_id) AS f_linenumber,\n getSoSchedDate(cohead_id) AS sort_scheddate,\n coitem.*, cohead.*,\n cust_number, cust_name,\n item_number, item_descrip1, (item_descrip1 || ' ' || item_descrip2) AS itemdescription,\n uom_name,\n warehous_code,\n qtyAtShipping(coitem_id) AS qtyatshipping,\n-- TODO - not needed, remove? (very slow)\n-- qtyAvailable(itemsite_id, coitem_scheddate) AS qtyavailable,\n-- (qtyAvailable(itemsite_id, coitem_scheddate) < 0.0) AS stockout,\n-- CASE WHEN (itemsite_useparams) THEN (qtyAvailable(itemsite_id, coitem_scheddate) <= itemsite_reorderlevel)\n-- ELSE (qtyAvailable(itemsite_id, coitem_scheddate) <= 0.0)\n-- END AS reorder,\n noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) AS qtybalance,\n currtobase(cohead_curr_id, coitem_price, cohead_orderdate) AS baseunitprice,\n round((coitem_qtyord * coitem_qty_invuomratio) *\n (coitem_price / coitem_price_invuomratio), 2) AS extprice,\n round((coitem_qtyord * coitem_qty_invuomratio) *\n (currtobase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio), 2) AS baseextprice,\n round((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) *\n (coitem_price / coitem_price_invuomratio), 2) AS extpricebalance,\n round((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) *\n (currtobase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio), 2) AS baseextpricebalance,\n curr_abbr AS currAbbr,\n-- TODO - not needed, remove? (very slow)\n-- CASE WHEN (qtyAvailable(itemsite_id, coitem_scheddate) < 0.0) THEN 'error'\n-- WHEN itemsite_useparams AND (qtyAvailable(itemsite_id, coitem_scheddate) <= itemsite_reorderlevel) THEN 'warning'\n-- WHEN NOT itemsite_useparams AND (qtyAvailable(itemsite_id, coitem_scheddate) <= 0.0) THEN 'warning'\n-- END AS qtyavailable_qtforegroundrole,\n 'qty' AS coitem_qtyord_xtnumericrole,\n 'qty' AS coitem_qtyshipped_xtnumericrole,\n 'qty' AS coitem_qtyreturned_xtnumericrole,\n 'qty' AS qtyatshipping_xtnumericrole,\n 'qty' AS qtybalance_xtnumericrole,\n 'qty' AS qtyavailable_xtnumericrole,\n 'salesprice' AS coitem_price_xtnumericrole,\n 'salesprice' AS baseunitprice_xtnumericrole,\n 'curr' AS extprice_xtnumericrole,\n 'curr' AS baseextprice_xtnumericrole,\n 'curr' AS extpricebalance_xtnumericrole,\n 'curr' AS baseextpricebalance_xtnumericrole,\n 0 AS coitem_qtyord_xttotalrole,\n 0 AS coitem_qtyshipped_xttotalrole,\n 0 AS coitem_qtyreturned_xttotalrole,\n 0 AS qtybalance_xttotalrole,\n 0 AS baseextprice_xttotalrole,\n 0 AS baseextpricebalance_xttotalrole\n FROM coitem JOIN cohead ON (cohead_id=coitem_cohead_id)\n JOIN custinfo ON (cust_id=cohead_cust_id)\n JOIN itemsite ON (itemsite_id=coitem_itemsite_id)\n JOIN site() ON (warehous_id=itemsite_warehous_id)\n JOIN item ON (item_id=itemsite_item_id)\n JOIN uom ON (uom_id=coitem_qty_uom_id)\n JOIN curr_symbol ON (curr_id=cohead_curr_id)\n WHERE ( (coitem_status<>'X')\n \n AND (coitem_cohead_id=)\n \n \n AND (coitem_status<>'C')\n \n \n AND (cohead_orderdate BETWEEN AND )\n \n\n \n AND (cohead_salesrep_id=)\n \n \n AND (cohead_shipto_id=)\n \n \n AND (cohead_cust_id=)\n \n AND (cust_custtype_id=)\n \n AND (cust_custtype_id IN (SELECT DISTINCT custtype_id\n FROM custtype\n WHERE (custtype_code ~ )))\n \n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem))\n \n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem\n WHERE (custgrpitem_custgrp_id=)))\n \n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrp, custgrpitem\n WHERE ( (custgrpitem_custgrp_id=custgrp_id)\n AND (custgrp_name ~ ) )) )\n \n\n \n AND (itemsite_item_id=)\n \n AND (item_prodcat_id=)\n \n AND (item_prodcat_id IN (SELECT DISTINCT prodcat_id\n FROM prodcat\n WHERE (prodcat_code ~ )))\n \n\n \n AND (itemsite_warehous_id=)\n \n )\n\n\n ORDER BY sort_scheddate, cohead_number, coitem_linenumber, coitem_subnumber\n\n ORDER BY cohead_orderdate, cohead_number, coitem_linenumber, coitem_subnumber\n\n ORDER BY cohead_number, coitem_linenumber, coitem_subnumber\n\n;\n admin 2013-07-26 0 234 briefEarnedCommission detail used by dspBriefEarnedCommissions Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: briefEarnedCommission\n-- Name: detail\n-- Notes: used by dspBriefEarnedCommissions\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT cohist_salesrep_id, salesrep_number, salesrep_name, cust_number, cust_name,\n cohist_ordernumber, cohist_invcnumber, cohist_invcdate, currAbbr,\n SUM(extprice) AS sumextprice,\n SUM(cohist_commission) AS sumcommission,\n SUM(baseextprice) AS sumbaseextprice,\n SUM(basecommission) AS sumbasecommission,\n 'curr' AS sumextprice_xtnumericrole,\n 'curr' AS sumcommission_xtnumericrole,\n 'curr' AS sumbaseextprice_xtnumericrole,\n 'curr' AS sumbasecommission_xtnumericrole,\n 0 AS sumbaseextprice_xttotalrole,\n 0 AS sumbasecommission_xttotalrole\n\nFROM saleshistorymisc\n\nFROM saleshistory\n\nWHERE ((cohist_commission <> 0)\n AND(cohist_invcdate BETWEEN AND )\n \n AND (COALESCE(cohist_misc_type, '') <> 'T')\n AND (COALESCE(cohist_misc_type, '') <> 'F')\n \n \n AND (cohist_salesrep_id=)\n \n )\nGROUP BY cohist_salesrep_id, salesrep_number, salesrep_name, cust_number, cust_name,\n cohist_ordernumber, cohist_invcnumber, cohist_invcdate, currAbbr\nORDER BY salesrep_number, cust_number, cohist_invcdate;\n admin 2013-07-26 0 44 capacityUOMs detail used by dspCapacityUOMsByClassCode, dspCapacityUOMsByProductCategory Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: capacityUOMs\n-- Name: detail\n-- Notes: used by dspCapacityUOMsByClassCode, dspCapacityUOMsByProductCategory\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT item_id, item_number,\n\n classcode_code,\n\n (item_descrip1 || ' ' || item_descrip2) AS descrip,\n uom_name,\n itemcapuom(item_id) AS capuom,\n itemcapinvrat(item_id) AS capinvrat,\n itemaltcapuom(item_id) AS altcapuom,\n itemaltcapinvrat(item_id) AS altcapinvrat,\n 'uomratio' AS capinvrat_xtnumericrole,\n 'uomratio' AS altcapinvrat_xtnumericrole\nFROM item\n JOIN uom ON (item_inv_uom_id=uom_id)\n\n LEFT OUTER JOIN classcode ON (item_classcode_id=classcode_id)\n\nWHERE (\n true item_sold \n\n AND (item_prodcat_id=)\n\n AND (item_prodcat_id IN (SELECT prodcat_id\n FROM prodcat\n WHERE (prodcat_code ~ )))\n\n AND (classcode_id=)\n\n AND (classcode_code ~ )\n\n)\nORDER BY classcode_code, \n item_number;\n admin 2013-07-26 0 96 ccpayments list list credit card payments, optionally by customer Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: ccpayments\n-- Name: list\n-- Notes: list credit card payments, optionally by customer\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT ccpay_id AS id, \n CASE WHEN ((ccpay_status = 'A') AND \n (date_part('day', CURRENT_TIMESTAMP - ccpay_transaction_datetime) < COALESCE(,0))) THEN\n 1\n ELSE 0\n END AS altid, cohead_id,\n ccpay.*,\n cust_number, cust_name, \n ccpay_type AS type, \n CASE WHEN (ccpay_type='A') THEN \n WHEN (ccpay_type='C') THEN \n WHEN (ccpay_type='R') THEN \n ELSE ccpay_type\n END AS type_qtdisplayrole,\n ccpay_status AS status,\n CASE WHEN (ccpay_status='A') THEN \n WHEN (ccpay_status='C') THEN \n WHEN (ccpay_status='D') THEN \n WHEN (ccpay_status='V') THEN \n WHEN (ccpay_status='X') THEN \n ELSE ccpay_status\n END AS status_qtdisplayrole,\n currConcat(ccpay_curr_id) AS currAbbr,\n COALESCE(cohead_number, ccpay_order_number) AS docnumber,\n ABS(COALESCE(payco_amount, ccpay_amount)) AS allocated,\n currConcat(COALESCE(payco_curr_id, ccpay_curr_id)) AS payco_currAbbr,\n cust_number, cust_name,\n 'curr' AS ccpay_amount_xtnumericrole,\n 'curr' AS allocated_xtnumericrole,\n CASE WHEN ((ccpay_status = 'A')\n AND (date_part('day', CURRENT_TIMESTAMP - ccpay_transaction_datetime) >= COALESCE(,0))) THEN\n 'error'\n END AS qtforegroundrole\n FROM ccpay LEFT OUTER JOIN \n (payco JOIN cohead ON (payco_cohead_id=cohead_id))\n ON (payco_ccpay_id=ccpay_id)\n JOIN custinfo ON (ccpay_cust_id=cust_id)\n JOIN custtype ON (cust_custtype_id=custtype_id)\n LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id)\n WHERE ((true)\n\n AND (ccpay_status != 'A')\n\n AND (ccpay_status = 'A')\n\n\n AND ((ccpay_status != 'A')\n OR (date_part('day', CURRENT_TIMESTAMP - ccpay_transaction_datetime) < ))\n\n\n AND (ccpay_cust_id=)\n\n\n AND (custtype_id=)\n\n\n AND (custtype_code~)\n\n\n AND (custgrpitem_custgrp_id=)\n)\n ORDER BY ccpay_transaction_datetime;\n admin 2013-07-26 0 456 charass populate Populate characteristic assignments combobox Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: charass\n-- Name: populate\n-- Notes: Populate characteristic assignments combobox\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT -1 AS charass_char_id, '' AS char_name\nUNION\nSELECT DISTINCT charass_char_id, char_name\n\nSELECT -1 AS charass_id, '' AS charass_value\nUNION\nSELECT DISTINCT charass_id, charass_value\n\nFROM charass, char\nWHERE ((charass_char_id=char_id)\n AND (charass_target_type=)\n AND (charass_target_id= ))\n\n AND (charass_char_id= )\n AND (COALESCE(charass_value,'')!='')\n\n\nORDER BY char_name;\n\nORDER BY charass_value;\n\n admin 2013-07-26 0 38 arApplications detail used by dspARApplications Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: arApplications\n-- Name: detail\n-- Notes: used by dspARApplications\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT arapply.*,\n cust_number, cust_name,\n CASE WHEN (arapply_source_doctype='C') THEN \n WHEN (arapply_source_doctype='R') THEN \n WHEN (arapply_fundstype='C') THEN \n WHEN (arapply_fundstype='T') THEN \n WHEN (arapply_fundstype='M') THEN \n WHEN (arapply_fundstype='V') THEN \n WHEN (arapply_fundstype='A') THEN \n WHEN (arapply_fundstype='D') THEN \n WHEN (arapply_fundstype='R') THEN \n WHEN (arapply_fundstype='K') THEN \n WHEN (arapply_fundstype='W') THEN \n WHEN (arapply_fundstype='O') THEN \n END AS doctype,\n CASE WHEN (arapply_source_doctype='C') THEN \n WHEN (arapply_source_doctype='R') THEN \n WHEN (arapply_source_doctype='K') THEN \n ELSE \n END AS sourcedoctype,\n CASE WHEN (arapply_target_doctype='D') THEN \n WHEN (arapply_target_doctype='I') THEN \n WHEN (arapply_target_doctype='K') THEN \n ELSE \n END AS targetdoctype,\n CASE WHEN (arapply_source_doctype IN ('C','R')) THEN TEXT(arapply_source_docnumber)\n ELSE arapply_refnumber\n END AS source,\n TEXT(arapply_target_docnumber) AS target,\n currConcat(arapply_curr_id) AS currAbbr,\n currtobase(arapply_curr_id,arapply_applied,arapply_postdate) AS base_applied,\n 'curr' AS arapply_applied_xtnumericrole,\n 'curr' AS base_applied_xtnumericrole,\n 0 AS base_applied_xttotalrole\nFROM arapply, custinfo\nWHERE ( (arapply_cust_id=cust_id)\n AND (arapply_postdate BETWEEN AND )\n AND (arapply_source_doctype IN (\n\n \n 'K', 'C', 'R'\n \n 'C', 'R'\n \n\n 'K'\n ))\n\n AND (cust_id=)\n\n AND (cust_custtype_id=)\n\n AND (cust_custtype_id IN (SELECT custtype_id FROM custtype\n WHERE (custtype_code ~ )))\n\n )\nORDER BY arapply_postdate, source;\n admin 2013-07-26 0 46 checkRegister detail used by dspCheckRegister and viewCheckRun; shows all the checks for a given date range, bank account, check number(optional), and recipient(optional), optionally restricted to 'new' (un-posted/replaced/deleted) checks for viewing check runs. fills in the check item detail if showDetail is passed. Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: checkRegister\n-- Name: detail\n-- Notes: used by dspCheckRegister and viewCheckRun;\n-- shows all the checks for a given date range, bank account, \n-- check number(optional), and recipient(optional), optionally restricted\n-- to 'new' (un-posted/replaced/deleted) checks for viewing check runs.\n-- fills in the check item detail if showDetail is passed.\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT checkhead_id AS checkid,\n CASE WHEN(checkhead_void) THEN -1\n WHEN(checkhead_posted) THEN 1\n ELSE 0\n END AS extra,\n -1 AS checkitem_id,\n checkhead_void, checkhead_misc,\n checkhead_printed, checkhead_posted,\n CASE when checkhead_number = -1 THEN\n 'Unspecified'\n ELSE TEXT(checkhead_number) END AS number,\n COALESCE((SELECT checkrecip_number || '-' || checkrecip_name\n FROM checkrecip\n WHERE ((checkhead_recip_id=checkrecip_id)\n\t\t AND (checkhead_recip_type=checkrecip_type)))\n ,\n\t\tcheckhead_recip_type || '-' || checkhead_recip_id ) AS description,\n checkhead_checkdate AS checkdate,\n checkhead_amount AS amount, \n checkhead_amount / checkhead_curr_rate AS base_amount, \n currConcat(checkhead_curr_id) AS currAbbr,\n checkhead_number,\n checkhead_ach_batch,\n 1 AS orderby,\n 'curr' AS amount_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n NULL AS checkhead_void_qtdisplayrole, NULL AS checkhead_misc_qtdisplayrole,\n NULL AS checkhead_printed_qtdisplayrole, NULL AS checkhead_posted_qtdisplayrole,\n 0 AS xtindentrole\n FROM checkhead\n WHERE ((checkhead_bankaccnt_id=)\n \n AND (checkhead_checkdate BETWEEN AND )\n \n AND (NOT checkhead_posted)\n AND (NOT checkhead_replaced)\n AND (NOT checkhead_deleted)\n \n \n AND (CAST(checkhead_number AS text) ~ )\n \n \n \n AND (checkhead_recip_type = 'V' )\n \n \n AND (checkhead_recip_type = 'C' )\n \n \n AND (checkhead_recip_type = 'T' )\n \n \n AND (checkhead_recip_id = )\n \n \n \n AND (checkhead_recip_type = 'V')\n AND (checkhead_recip_id = )\n \n AND (checkhead_recip_type = 'V')\n AND (checkhead_recip_id IN (SELECT vend_id\n FROM vendinfo\n WHERE (vend_vendtype_id=)))\n \n AND (checkhead_recip_type = 'V')\n AND (checkhead_recip_id IN (SELECT vend_id\n FROM vendinfo, vendtype\n WHERE (vend_vendtype_id=vendtype_id)\n AND (vendtype_code ~ )))\n \n)\n\nUNION\nSELECT checkitem_checkhead_id AS checkid, 0 AS extra, checkitem_id,\n checkhead_void, checkhead_misc,\n checkhead_printed, checkhead_posted,\n CAST(COALESCE(checkitem_ranumber, checkitem_vouchernumber) AS TEXT) AS number,\n CAST(COALESCE(checkitem_invcnumber, checkitem_cmnumber) AS TEXT) AS description,\n CAST(NULL AS DATE) AS checkdate,\n checkitem_amount AS amount,\n currtobase(checkhead_curr_id,checkitem_amount,checkhead_checkdate) AS base_amount, \n currConcat(checkitem_curr_id) AS currAbbr, \n checkhead_number, \n NULL AS checkhead_ach_batch,\n 2 AS orderby,\n 'curr' AS amount_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n '' AS checkhead_void_qtdisplayrole, '' AS checkhead_misc_qtdisplayrole,\n '' AS checkhead_printed_qtdisplayrole, '' AS checkhead_posted_qtdisplayrole,\n 1 AS xtindentrole\n FROM checkitem, checkhead \n WHERE ((checkitem_checkhead_id=checkhead_id)\n AND (checkhead_bankaccnt_id=)\n \n AND (checkhead_checkdate BETWEEN AND )\n \n AND (NOT checkhead_posted)\n AND (NOT checkhead_replaced)\n AND (NOT checkhead_deleted)\n \n \n AND (CAST(checkhead_number AS text) ~ )\n \n \n \n AND (checkhead_recip_type = 'V' )\n \n \n AND (checkhead_recip_type = 'C' )\n \n \n AND (checkhead_recip_type = 'T' )\n \n \n AND (checkhead_recip_id = )\n \n \n \n AND (checkhead_recip_type = 'V')\n AND (checkhead_recip_id = )\n \n AND (checkhead_recip_type = 'V')\n AND (checkhead_recip_id IN (SELECT vend_id\n FROM vendinfo\n WHERE (vend_vendtype_id=)))\n \n AND (checkhead_recip_type = 'V')\n AND (checkhead_recip_id IN (SELECT vend_id\n FROM vendinfo, vendtype\n WHERE (vend_vendtype_id=vendtype_id)\n AND (vendtype_code ~ )))\n \n )\n\n ORDER BY checkhead_number, checkid, orderby;\n admin 2013-07-26 0 97 checks detail used by printChecks Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: checks\n-- Name: detail\n-- Notes: used by printChecks\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT checkhead.*, form_report_name AS report_name\nFROM checkhead\nLEFT OUTER JOIN vendinfo ON((checkhead_recip_id = vend_id)\n AND (checkhead_recip_type = 'V'))\nLEFT OUTER JOIN custinfo ON((checkhead_recip_id = cust_id)\n AND (checkhead_recip_type = 'C'))\nLEFT OUTER JOIN taxauth ON((checkhead_recip_id = taxauth_id)\n AND (checkhead_recip_type = 'T')),\n bankaccnt, form\nWHERE ( (checkhead_bankaccnt_id=bankaccnt_id)\n AND (bankaccnt_check_form_id=form_id)\n\n AND (NOT checkhead_printed)\n AND (NOT checkhead_void)\n\n\n AND (bankaccnt_id=)\n\n )\n\nORDER BY checkhead_recip_type DESC, COALESCE(vend_name, cust_name, taxauth_name)\n\nORDER BY checkhead_recip_type DESC, COALESCE(vend_number, cust_number, taxauth_code)\n\n\nLIMIT \n\n;\n admin 2013-07-26 0 450 contact muststayactive This query determines whether a given contact should be kept active because other active records depend on it. Todo - should this be moved to the cntctAfterTrigger? Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: contact\n-- Name: muststayactive\n-- Notes: This query determines whether a given contact should be kept\n-- active because other active records depend on it.\n-- Todo - should this be moved to the cntctAfterTrigger?\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT EXISTS(\n SELECT 1\n FROM crmacct\n WHERE(crmacct_active\n AND ( IN (crmacct_cntct_id_1, crmacct_cntct_id_2)))\n UNION SELECT 3\n FROM custinfo\n WHERE (cust_active\n AND ( IN (cust_cntct_id, cust_corrcntct_id)))\n UNION SELECT 5\n FROM vendinfo\n WHERE (vend_active\n AND ( IN (vend_cntct1_id, vend_cntct2_id)))\n UNION SELECT 7\n FROM prospect\n WHERE (prospect_active AND (prospect_cntct_id=))\n UNION SELECT 8\n FROM shiptoinfo\n WHERE (shipto_active AND (shipto_cntct_id=))\n UNION SELECT 9\n FROM vendaddrinfo\n JOIN vendinfo ON (vendaddr_vend_id=vend_id)\n WHERE (vend_active AND (vendaddr_cntct_id=))\n UNION SELECT 10\n FROM whsinfo\n WHERE (warehous_active AND (warehous_cntct_id=))\n UNION SELECT 11\n FROM emp\n WHERE (emp_active AND (emp_cntct_id=))\n UNION SELECT 21\n FROM todoitem\n WHERE (todoitem_completed_date IS NOT NULL\n AND (todoitem_cntct_id=))\n) AS inuse;\n admin 2013-07-26 0 445 bankrec clearedbalance used by reconcileBankaccount Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: bankrec\n-- Name: clearedbalance\n-- Notes: used by reconcileBankaccount\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT (COALESCE(SUM(amount),0.0) + ) AS cleared_amount,\n AS end_amount,\n ( - ( + (COALESCE(SUM(amount),0.0)))) AS diff_amount,\n round( - ( + COALESCE(SUM(amount),0.0)), 2) AS diff_value\n FROM ( SELECT CASE WHEN (gltrans_amount > 0) THEN bankrecitem_amount * -1.0\n ELSE bankrecitem_amount END AS amount\n FROM bankaccnt, gltrans, bankrecitem\n WHERE ((gltrans_accnt_id=bankaccnt_accnt_id)\n AND (bankrecitem_source='GL')\n AND (bankrecitem_source_id=gltrans_id)\n AND (bankrecitem_bankrec_id=)\n AND (bankrecitem_cleared)\n AND (NOT gltrans_rec)\n AND (bankaccnt_id=) ) \n UNION ALL\n SELECT CASE WHEN (sltrans_amount > 0) THEN bankrecitem_amount * -1.0\n ELSE bankrecitem_amount END AS amount\n FROM bankaccnt, sltrans, bankrecitem\n WHERE ((sltrans_accnt_id=bankaccnt_accnt_id)\n AND (bankrecitem_source='SL')\n AND (bankrecitem_source_id=sltrans_id)\n AND (bankrecitem_bankrec_id=)\n AND (bankrecitem_cleared)\n AND (NOT sltrans_rec)\n AND (bankaccnt_id=) )\n UNION ALL\n SELECT CASE WHEN(bankadjtype_iscredit=true) THEN (bankadj_amount * -1) ELSE bankadj_amount END AS amount\n FROM bankadj, bankadjtype, bankrecitem\n WHERE ( (bankrecitem_source='AD')\n AND (bankrecitem_source_id=bankadj_id)\n AND (bankrecitem_bankrec_id=)\n AND (bankrecitem_cleared)\n AND (bankadj_bankadjtype_id=bankadjtype_id)\n AND (NOT bankadj_posted)\n AND (bankadj_bankaccnt_id=) ) ) AS data;\n admin 2013-07-26 0 235 briefSalesHistory detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: briefSalesHistory\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT\n COALESCE(cohead_id,-1) AS cohead_id, cust_id, cohist_ponumber,\n cust_custtype_id, custtype_code,\n cohist_cust_id, SUM(extcost) AS extcost,\n 'curr' AS extcost_xtnumericrole,\n 0 AS extcost_xttotalrole,\n cohist_ordernumber,\n cust_number, cust_name, invoicenumber,\n cohist_orderdate, cohist_invcdate,\n SUM(baseextprice) AS extended,\n 'curr' AS extended_xtnumericrole,\n 0 AS extended_xttotalrole\nFROM saleshistory\n LEFT OUTER JOIN cohead ON (cohead_number=cohist_ordernumber)\nWHERE ((cohist_invcdate BETWEEN AND )\n\n AND (cohist_cust_id=)\n\n\n AND (cohist_shipto_id=)\n\n\n AND (cust_custtype_id=)\n\n\n AND (custtype_code ~ )\n\n\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem\n WHERE (custgrpitem_custgrp_id=)))\n\n\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrp, custgrpitem\n WHERE ( (custgrpitem_custgrp_id=custgrp_id)\n AND (custgrp_name ~ ) )) )\n\n\n AND (itemsite_warehous_id=)\n\n\n AND (itemsite_item_id=)\n\n\n AND (item_prodcat_id=)\n\n\n AND (item_prodcat_id IN (SELECT prodcat_id\n FROM prodcat\n WHERE (prodcat_code ~ )))\n\n\n AND (cohist_salesrep_id=)\n\n )\nGROUP BY cohead_id, cust_id,cust_number,cust_custtype_id,cohist_cust_id,custtype_code,\n cust_name,cohist_ordernumber, cohist_ponumber,\n invoicenumber,cohist_orderdate, cohist_invcdate\nORDER BY cohist_invcdate, cohist_orderdate;\n admin 2013-07-26 0 438 contact uses Find and report uses of the contact Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: contact\n-- Name: uses\n-- Notes: Find and report uses of the contact\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT ::text || '.' || type_id::text || '.' || type_code::text,\n AS contact,\n *\nFROM (\n\n SELECT crmacct_id AS type_id, 1 AS type_code, AS type,\n crmacct_number AS number,\n crmacct_name AS name, AS role,\n (crmacct_active) AS active,\n crmacct_owner_username AS owner\n FROM crmacct WHERE (crmacct_cntct_id_1=)\n \n UNION ALL\n SELECT crmacct_id AS type_id, 2 AS type_code, AS type,\n crmacct_number AS number,\n crmacct_name AS name, AS role,\n (crmacct_active) AS active,\n crmacct_owner_username AS owner\n FROM crmacct WHERE (crmacct_cntct_id_2=)\n \n UNION ALL\n SELECT cust_id AS type_id, 3 AS type_code, AS type,\n cust_number AS number,\n cust_name AS name, AS role,\n (cust_active) AS active,\n '' AS owner\n FROM custinfo WHERE (cust_cntct_id=)\n \n UNION ALL\n SELECT cust_id AS type_id, 4 AS type_code, AS type,\n cust_number AS number,\n cust_name AS name, AS role,\n (cust_active) AS active,\n '' AS owner\n FROM custinfo WHERE (cust_corrcntct_id=)\n \n UNION ALL\n SELECT vend_id AS type_id, 5 AS type_code, AS type,\n vend_number AS number,\n vend_name AS name, AS role,\n (vend_active) AS active,\n '' AS owner\n FROM vendinfo WHERE (vend_cntct1_id=)\n \n UNION ALL\n SELECT vend_id AS type_id, 6 AS type_code, AS type,\n vend_number AS number,\n vend_name AS name, AS role,\n (vend_active) AS active,\n '' AS owner\n FROM vendinfo WHERE (vend_cntct2_id=)\n \n UNION ALL\n SELECT prospect_id AS type_id, 7 AS type_code, AS type,\n prospect_number AS number,\n prospect_name AS name, '' AS role,\n (prospect_active) AS active,\n '' AS owner\n FROM prospect WHERE (prospect_cntct_id=)\n \n UNION ALL\n SELECT shipto_id AS type_id, 8 AS type_code, AS type,\n shipto_num AS number,\n shipto_name AS name, AS role,\n (shipto_active) AS active,\n '' AS owner\n FROM shiptoinfo WHERE (shipto_cntct_id=)\n \n UNION ALL\n SELECT vendaddr_id AS type_id, 9 AS type_code, AS type,\n vendaddr_code AS number,\n vendaddr_name AS name, '' AS role,\n (true) AS active,\n '' AS owner\n FROM vendaddrinfo WHERE (vendaddr_cntct_id=)\n \n UNION ALL\n SELECT warehous_id AS type_id, 10 AS type_code, AS type,\n warehous_code AS number,\n warehous_descrip AS name, '' AS role,\n (warehous_active) AS active,\n '' AS owner\n FROM whsinfo WHERE (warehous_cntct_id=)\n \n UNION ALL\n SELECT emp_id AS type_id, 11 AS type_code, AS type,\n emp_code AS number,\n emp_number AS name, '' AS role,\n (emp_active) AS active,\n '' AS owner\n FROM emp WHERE (emp_cntct_id=)\n\n\n UNION ALL\n SELECT cohead_id AS id, 12 AS altId, AS type,\n cohead_number AS number,\n cust_number AS name, AS role,\n (cohead_status = 'O') AS active,\n '' AS owner\n FROM cohead JOIN custinfo ON (cohead_cust_id=cust_id)\n WHERE (=cohead_billto_cntct_id)\n\n UNION ALL\n SELECT cohead_id AS id, 13 AS altId, AS type,\n cohead_number AS number,\n cust_number AS name, AS role,\n (cohead_status = 'O') AS active,\n '' AS owner\n FROM cohead JOIN custinfo ON (cohead_cust_id=cust_id)\n WHERE (=cohead_shipto_cntct_id)\n\n\n UNION ALL\n SELECT incdt_id AS id, 14 AS altId, AS type,\n incdt_number::TEXT AS number,\n incdt_summary AS name, '' AS role,\n (incdt_status NOT IN ('R', 'L')) AS active,\n incdt_owner_username AS owner\n FROM incdt\n WHERE (incdt_cntct_id=)\n\n\n UNION ALL\n SELECT lsreg_id AS id, 15 AS altId, AS type,\n ls_number AS number,\n item_number AS name, '' AS role,\n (lsreg_expiredate > current_date) AS active,\n '' AS owner\n FROM lsreg JOIN ls ON (lsreg_ls_id=ls_id) JOIN item ON (ls_item_id=item_id)\n WHERE (lsreg_cntct_id=)\n\n\n UNION ALL\n SELECT ophead_id AS id, 16 AS altId, AS type,\n ophead_number AS number,\n ophead_name AS name, '' AS role,\n ophead_active AS active,\n ophead_owner_username AS owner\n FROM ophead\n WHERE (ophead_cntct_id=)\n\n\n UNION ALL\n SELECT pohead_id AS id, 17 AS altId, AS type,\n pohead_number AS number,\n vend_number AS name, AS role,\n (pohead_status != 'C') AS active,\n '' AS owner\n FROM pohead JOIN vendinfo ON (pohead_vend_id=vend_id)\n WHERE (=pohead_vend_cntct_id)\n\n UNION ALL\n SELECT pohead_id AS id, 18 AS altId, AS type,\n pohead_number AS number,\n vend_number AS name, AS role,\n (pohead_status != 'C') AS active,\n '' AS owner\n FROM pohead JOIN vendinfo ON (pohead_vend_id=vend_id)\n WHERE (=pohead_shipto_cntct_id)\n\n UNION ALL\n SELECT quhead_id AS id, 19 AS altId, AS type,\n quhead_number AS number,\n COALESCE(cust_number, prospect_number) AS name,\n AS role,\n (quhead_status = 'O') AS active,\n '' AS owner\n FROM quhead LEFT OUTER JOIN custinfo ON (quhead_cust_id=cust_id)\n LEFT OUTER JOIN prospect ON (quhead_cust_id=prospect_id)\n WHERE (=quhead_billto_cntct_id)\n\n UNION ALL\n SELECT quhead_id AS id, 20 AS altId, AS type,\n quhead_number AS number,\n COALESCE(cust_number, prospect_number) AS name,\n AS role,\n (quhead_status = 'O') AS active,\n '' AS owner\n FROM quhead LEFT OUTER JOIN custinfo ON (quhead_cust_id=cust_id)\n LEFT OUTER JOIN prospect ON (quhead_cust_id=prospect_id)\n WHERE (=quhead_shipto_cntct_id)\n\n\n UNION ALL\n SELECT todoitem_id, 21 AS altId, AS type,\n todoitem_seq::TEXT AS number,\n todoitem_name AS name, '' AS role,\n (todoitem_completed_date IS NULL) AS active,\n todoitem_owner_username AS owner\n FROM todoitem\n WHERE todoitem_cntct_id=\n\n\n \n UNION ALL\n SELECT tohead_id, 22 AS altId, AS type,\n tohead_number AS number,\n tohead_srcname || ' -> ' || tohead_destname AS name,\n AS role,\n (tohead_status = 'O') AS active,\n '' AS owner\n FROM tohead\n WHERE (=tohead_srccntct_id)\n UNION ALL\n SELECT tohead_id, 23 AS altId, AS type,\n tohead_number AS number,\n tohead_srcname || ' -> ' || tohead_destname AS name,\n AS role,\n (tohead_status = 'O') AS active,\n '' AS owner\n FROM tohead\n WHERE (=tohead_destcntct_id)\n \n\n\n\n) AS innerq\n\n ORDER BY type, number;\n admin 2013-07-26 0 419 contactmerge delete Delete a contact Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: contactmerge\n-- Name: delete\n-- Notes: Delete a contact\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nDELETE FROM cntct WHERE (cntct_id=);\n admin 2013-07-26 0 420 contactmerge deselect Removes contact selection Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: contactmerge\n-- Name: deselect\n-- Notes: Removes contact selection\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nDELETE FROM cntctsel\nWHERE (cntctsel_cntct_id=);\n admin 2013-07-26 0 422 contactmerge merge Merge contact selections Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: contactmerge\n-- Name: merge\n-- Notes: Merge contact selections\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT cntctmerge(\n src.cntctsel_cntct_id, \n trgt.cntctsel_cntct_id,\n ::boolean) AS result\nFROM cntctsel src, cntctsel trgt\nWHERE ((trgt.cntctsel_target)\nAND (NOT src.cntctsel_target));\n admin 2013-07-26 0 232 billingSelections detail used by dspBillingSelections Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: billingSelections\n-- Name: detail\n-- Notes: used by dspBillingSelections\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT cobmisc_id, cohead_id,\n cohead_number, cust_number, cust_name,\n sum(round(coitem_price*cobill_qty,2)) AS subtotal,\n cobmisc_misc, cobmisc_freight, calcCobmiscTax(cobmisc_id) AS cobmisc_tax, cobmisc_payment,\n (sum(round(coitem_price * cobill_qty, 2)) +\n cobmisc_misc + cobmisc_freight +\n calcCobmiscTax(cobmisc_id)) AS total,\n 'curr' AS subtotal_xtnumericrole,\n 'curr' AS total_xtnumericrole,\n 'curr' AS cobmisc_misc_xtnumericrole,\n 'curr' AS cobmisc_freight_xtnumericrole,\n 'curr' AS cobmisc_tax_xtnumericrole,\n 'curr' AS cobmisc_payment_xtnumericrole\nFROM cobmisc, cohead, custinfo, coitem, cobill\nWHERE ((cobmisc_cohead_id=cohead_id)\n AND (cohead_cust_id=cust_id)\n AND (coitem_cohead_id=cohead_id)\n AND (cobill_coitem_id=coitem_id)\n AND (NOT cobmisc_posted))\nGROUP BY cobmisc_id, cohead_id, cohead_number, cust_number,\n cust_name, cobmisc_misc, cobmisc_freight, cobmisc_tax, cobmisc_payment\nORDER BY cohead_number;\n admin 2013-07-26 0 421 contactmerge merged Lists all merged contacts Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: contactmerge\n-- Name: merged\n-- Notes: Lists all merged contacts\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT cntct_id,\n CASE\n WHEN (cntctUsed(cntctmrgd_cntct_id)=false) THEN\n 3 -- Already merged contact\n ELSE\n 4 -- Already merged contact, but still has relationships\n END AS status,\n cntct.*,crmacct_number,crmacct_name,addr.*, \n 0 AS xtindentrole,\n CASE\n WHEN (cntctUsed(cntctmrgd_cntct_id)=false) THEN\n 'warning' -- Already merged contact\n ELSE\n 'error' -- Already merged contact, but still has relationships\n END AS qtforegroundrole\nFROM cntct\n JOIN cntctmrgd ON (cntct_id=cntctmrgd_cntct_id)\n LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id)\n LEFT OUTER JOIN crmacct ON (cntct_crmacct_id=crmacct_id);\n admin 2013-07-26 0 423 contactmerge populate Queries selected contact info Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: contactmerge\n-- Name: populate\n-- Notes: Queries selected contact info\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT cntct.*,\n crmacct_number,\n crmacct_name,\n addr.*,\n CASE WHEN cntctsel_mrg_first_name THEN 'emphasis' END AS cntct_first_name_qtforegroundrole,\n CASE WHEN cntctsel_mrg_last_name THEN 'emphasis' END AS cntct_last_name_qtforegroundrole,\n CASE WHEN cntctsel_mrg_honorific THEN 'emphasis' END AS cntct_honorific_qtforegroundrole,\n CASE WHEN cntctsel_mrg_initials THEN 'emphasis' END AS cntct_initials_qtforegroundrole,\n CASE WHEN cntctsel_mrg_phone THEN 'emphasis' END AS cntct_phone_qtforegroundrole,\n CASE WHEN cntctsel_mrg_phone2 THEN 'emphasis' END AS cntct_phone2_qtforegroundrole,\n CASE WHEN cntctsel_mrg_fax THEN 'emphasis' END AS cntct_fax_qtforegroundrole,\n CASE WHEN cntctsel_mrg_email THEN 'emphasis' END AS cntct_email_qtforegroundrole,\n CASE WHEN cntctsel_mrg_webaddr THEN 'emphasis' END AS cntct_webaddr_qtforegroundrole,\n CASE WHEN cntctsel_mrg_notes THEN 'emphasis' END AS cntct_notes_qtforegroundrole,\n CASE WHEN cntctsel_mrg_title THEN 'emphasis' END AS cntct_title_qtforegroundrole,\n CASE WHEN cntctsel_mrg_middle THEN 'emphasis' END AS cntct_middle_qtforegroundrole,\n CASE WHEN cntctsel_mrg_suffix THEN 'emphasis' END AS cntct_suffix_qtforegroundrole,\n CASE WHEN cntctsel_mrg_owner_username THEN 'emphasis' END AS cntct_owner_username_qtforegroundrole,\n CASE WHEN cntctsel_mrg_crmacct_id THEN 'emphasis' END AS crmacct_number_qtforegroundrole,\n CASE WHEN cntctsel_mrg_crmacct_id THEN 'emphasis' END AS crmacct_name_qtforegroundrole,\n CASE WHEN cntctsel_mrg_addr_id THEN 'emphasis' END AS addr_line1_qtforegroundrole,\n CASE WHEN cntctsel_mrg_addr_id THEN 'emphasis' END AS addr_line2_qtforegroundrole,\n CASE WHEN cntctsel_mrg_addr_id THEN 'emphasis' END AS addr_line3_qtforegroundrole,\n CASE WHEN cntctsel_mrg_addr_id THEN 'emphasis' END AS addr_city_qtforegroundrole,\n CASE WHEN cntctsel_mrg_addr_id THEN 'emphasis' END AS addr_state_qtforegroundrole,\n CASE WHEN cntctsel_mrg_addr_id THEN 'emphasis' END AS addr_postalcode_qtforegroundrole,\n CASE WHEN cntctsel_mrg_addr_id THEN 'emphasis' END AS addr_country_qtforegroundrole,\n CASE WHEN cntctsel_mrg_addr_id THEN 'emphasis' END AS addr_notes_qtforegroundrole,\n CASE WHEN cntctsel_mrg_addr_id THEN 'emphasis' END AS addr_number_qtforegroundrole\nFROM cntctsel\n JOIN cntct ON (cntctsel_cntct_id=cntct_id)\n LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id)\n LEFT OUTER JOIN crmacct ON (cntct_crmacct_id=crmacct_id)\nWHERE (cntctsel_target=);\n admin 2013-07-26 0 424 contactmerge purge Purge contact(s) that was/were previously merged Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: contactmerge\n-- Name: purge\n-- Notes: Purge contact(s) that was/were previously merged\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nDELETE FROM cntct WHERE cntct_id IN\n(SELECT cntctmrgd_cntct_id\n FROM cntctmrgd\n WHERE (NOT cntctmrgd_error)\n\nAND (cntctmrgd_cntct_id=)\n)\nAND (NOT cntctUsed(cntct_id));\n admin 2013-07-26 0 426 contactmerge search Search for contacts Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: contactmerge\n-- Name: search\n-- Notes: Search for contacts\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT cntct_id,\n CASE\n WHEN (cntctsel_cntct_id IS NOT NULL AND cntctsel_target) THEN\n 1 -- Selected as target contact\n WHEN (cntctsel_cntct_id IS NOT NULL AND NOT cntctsel_target) THEN\n 2 -- Selected as contact to merge\n WHEN (cntctmrgd_cntct_id IS NOT NULL AND cntctUsed(cntctmrgd_cntct_id)=false) THEN\n 3 -- Already merged contact\n WHEN (cntctmrgd_cntct_id IS NOT NULL) THEN\n 4 -- Already merged contact, but still has relationships\n ELSE\n 0 -- No status\n END AS status,\n cntctdups.*, \n cntctdup_level AS xtindentrole,\n CASE\n WHEN (cntctsel_cntct_id IS NOT NULL AND cntctsel_target) THEN\n 'altemphasis' -- Selected as target contact\n WHEN (cntctsel_cntct_id IS NOT NULL AND NOT cntctsel_target) THEN\n 'emphasis' -- Selected as contact to merge\n WHEN (cntctmrgd_cntct_id IS NOT NULL AND cntctUsed(cntctmrgd_cntct_id)=false) THEN\n 'warning' -- Already merged contact\n WHEN (cntctmrgd_cntct_id IS NOT NULL) THEN\n 'error' -- Already merged contact, but still has relationships\n END AS qtforegroundrole\nFROM cntctdups(\n , \n , \n , \n , \n , \n , \n , \n ,\n , \n , \n , \n , \n , \n , \n , \n )\n LEFT OUTER JOIN cntctsel ON (cntct_id=cntctsel_cntct_id)\n LEFT OUTER JOIN cntctmrgd ON (cntct_id=cntctmrgd_cntct_id);\n admin 2013-07-26 0 428 contactmerge select Processes contact selections Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: contactmerge\n-- Name: select\n-- Notes: Processes contact selections\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT cntctselect(\n , \n ) AS result;\n admin 2013-07-26 0 427 contactmerge selectcol Selects a specific column Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: contactmerge\n-- Name: selectcol\n-- Notes: Selects a specific column\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT cntctselectcol(, );\n admin 2013-07-26 0 99 contacts detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: contacts\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT DISTINCT ON (length(cntct_last_name)=0, length(cntct_first_name)=0, cntct_last_name, cntct_first_name, cntct_number) \n cntct_id AS id\n \n, addr_id AS altId, addr.*,\n crmacct_id, crmacct_number, crmacct_name,\n cntct.* \n\n , charass_alias.charass_value AS char\n\n\n , charass_alias.charass_value AS char\n\n\n , charass_alias.charass_value::date AS char\n\n\n\nFROM cntct\n\nFROM cntct()\n\n LEFT OUTER JOIN crmacct ON (cntct_crmacct_id=crmacct_id) \n LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) \n LEFT OUTER JOIN cntcteml ON (cntcteml_cntct_id=cntct_id)\n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='CNTCT') \n AND (charass_alias.charass_target_id=cntct_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='CNTCT') \n AND (charass_alias.charass_target_id=cntct_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='CNTCT') \n AND (charass_alias.charass_target_id=cntct_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\nWHERE true\n \n AND (cntct_owner_username=) \n\n AND (cntct_owner_username ~ ) \n\n \n AND cntct_active\n\n\n AND (\n (crmacct_number ~* )\n OR (crmacct_name ~* )\n OR (COALESCE(cntct_first_name,'') || ' ' || COALESCE(cntct_last_name,'') ~* )\n OR (COALESCE(cntct_phone,'') || ' ' || COALESCE(cntct_phone2,'') || ' ' || COALESCE(cntct_fax,'') ~* )\n OR (COALESCE(cntcteml_email,'') ~* )\n OR (COALESCE(addr_line1,'') || ' ' || COALESCE(addr_line2,'') || ' ' || COALESCE(addr_line3,'') ~* )\n OR (COALESCE(addr_city,'') ~* )\n OR (COALESCE(addr_state,'') ~* )\n OR (COALESCE(addr_postalcode,'') ~* )\n OR (COALESCE(addr_country,'') ~* )\n)\n\n\n AND (cntct_id=)\n\n\n AND (crmacct_id=)\n\n\n AND (COALESCE(cntct_first_name,'') || ' ' || COALESCE(cntct_last_name,'') ~* )\n\n\n AND (COALESCE(cntct_phone,'') || ' ' || COALESCE(cntct_phone2,'') || ' ' || COALESCE(cntct_fax,'') ~* )\n\n\n AND (COALESCE(cntcteml_email,'') ~* )\n\n\n AND (COALESCE(addr_line1,'') || ' ' || COALESCE(addr_line2,'') || ' ' || COALESCE(addr_line3,'') ~* )\n\n\n AND (COALESCE(addr_city,'') ~* )\n\n\n AND (COALESCE(addr_state,'') ~* )\n\n\n AND (COALESCE(addr_postalcode,'') ~* )\n\n\n AND (COALESCE(addr_country,'') ~* )\n\n\n AND (cntct_id=)\n\n\n AND (addr_id=)\n\n\nORDER BY length(cntct_last_name)=0, length(cntct_first_name)=0, cntct_last_name, cntct_first_name, cntct_number, cntcteml_primary desc;\n admin 2013-07-26 0 474 contracts detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: contracts\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT contrct_id, \n vend_number, vend_name, \n contrct.*,\n CASE WHEN COALESCE(contrct_effective, startOfTime()) <=\n startOfTime() THEN \n END AS contrct_effective_qtdisplayrole,\n CASE WHEN COALESCE(contrct_expires, endOfTime()) >=\n endOfTime() THEN \n END AS contrct_expires_qtdisplayrole,\n CASE WHEN (COALESCE(contrct_expires, endOfTime()) < CURRENT_DATE) THEN 'expired'\n WHEN (COALESCE(contrct_effective, startOfTime()) > CURRENT_DATE) THEN 'future'\n END AS qtforegroundrole,\n (SELECT count(*) FROM itemsrc WHERE (itemsrc_contrct_id=contrct_id)) AS item_count \nFROM contrct JOIN vendinfo ON (vend_id=contrct_vend_id)\nWHERE ((true)\n\n AND (contrct_vend_id=)\n\n\n AND (contrct_effective >= )\n\n\n AND (contrct_effective <= )\n\n\n AND (contrct_expires >= )\n\n\n AND (contrct_expires <= )\n\n\n AND ( (contrct_number ~* )\n OR (COALESCE(contrct_descrip,'') ~* ) )\n\n)\nORDER By vend_number, contrct_number\n;\n admin 2013-07-26 0 236 costedBOM detail used by dspCostedIndentedBOM, dspCostedSingleLevelBOM, dspCostedSummarizedBOM Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: costedBOM\n-- Name: detail\n-- Notes: used by dspCostedIndentedBOM, dspCostedSingleLevelBOM, dspCostedSummarizedBOM\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT\n\n bomdata_bomwork_id AS id,\n\n bomdata_bomitem_id AS id,\n\n -1,\n\n \n\n CASE WHEN bomdata_bomwork_parent_id = -1 AND bomdata_bomwork_id = -1 THEN -1\n ELSE bomdata_item_id\n END AS altid,\n\n CASE WHEN (bomdata_bomitem_id = -1) THEN -1\n ELSE bomdata_item_id\n END AS altid,\n\n *,\n\n\n bomdata_stdunitcost AS unitcost,\n bomdata_stdextendedcost AS extendedcost,\n\n bomdata_actunitcost AS unitcost,\n bomdata_actextendedcost AS extendedcost,\n\n\n 'qty' AS bomdata_batchsize_xtnumericrole,\n 'qty' AS bomdata_qtyfxd_xtnumericrole,\n 'qtyper' AS bomdata_qtyper_xtnumericrole,\n 'percent' AS bomdata_scrap_xtnumericrole,\n 'qtyper' AS bomdata_qtyreq_xtnumericrole,\n 'cost' AS unitcost_xtnumericrole,\n 'cost' AS extendedcost_xtnumericrole,\n CASE WHEN COALESCE(bomdata_effective, startOfTime()) <= startOfTime() THEN \n END AS bomdata_effective_qtdisplayrole,\n CASE WHEN COALESCE(bomdata_expires, endOfTime()) <= endOfTime() THEN \n END AS bomdata_expires_qtdisplayrole,\n CASE WHEN bomdata_expired THEN 'expired'\n WHEN bomdata_future THEN 'future'\n END AS qtforegroundrole\n\n , bomdata_bomwork_level - 1 AS xtindentrole\n\n , 0 AS extendedcost_xttotalrole\n\nFROM\n\n indentedbom(, , 0, 0);\n\n singlelevelbom(, , 0, 0);\n\n summarizedBOM(, , , );\n\n admin 2013-07-26 0 112 costelem unusedbyitem list the cost elements that can be applied to an item that have not already been applied to that item. takes an item_id and type. Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: costelem\n-- Name: unusedbyitem\n-- Notes: list the cost elements that can be applied to an item that have\n-- not already been applied to that item. takes an item_id and type.\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\n\nSELECT costelem_id, costelem_type\nFROM costelem\nWHERE ((costelem_active)\n AND (NOT costelem_sys\n OR (CASE WHEN fetchMetricBool('Routings') AND\n ( IN ('M', 'F', 'B', 'C', 'T')) THEN\n costelem_type IN ('Direct Labor', 'Overhead', 'Machine Overhead')\n WHEN ( IN ('O', 'P')) THEN\n costelem_type IN ('Material')\n END))\n AND (costelem_id NOT IN (SELECT itemcost_costelem_id\n FROM itemcost\n WHERE ((NOT itemcost_lowlevel)\n AND (itemcost_item_id=))))\n )\nORDER BY costelem_type;\n\n\n\nSELECT costelem_id, costelem_type\nFROM costelem\nWHERE ((costelem_active)\n AND (NOT costelem_sys\n OR (CASE WHEN fetchMetricBool('Routings') AND\n ( IN ('M', 'F', 'B', 'C', 'T')) THEN\n costelem_type IN ('Direct Labor', 'Overhead', 'Machine Overhead')\n WHEN ( IN ('O', 'P')) THEN\n costelem_type IN ('Material')\n END))\n AND (costelem_id NOT IN (SELECT bomitemcost_costelem_id\n FROM bomitemcost\n WHERE ((NOT bomitemcost_lowlevel)\n AND (bomitemcost_bomitem_id=))))\n )\nORDER BY costelem_type;\n\n\n\n admin 2013-07-26 0 237 countSlip detail used by dspCountSlipEditList, dspCountSlipsByWarehouse Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: countSlip\n-- Name: detail\n-- Notes: used by dspCountSlipEditList, dspCountSlipsByWarehouse\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT cntslip_id,\n CASE WHEN (cntslip_posted) THEN 1\n ELSE 0\n END,\n cntslip_username AS user,\n\n toNumeric(cntslip_number, 0) AS cntslip_number,\n cntslip_number AS cntslip_number_qtdisplayrole,\n\n cntslip_number,\n\n CASE WHEN (cntslip_location_id=-1) THEN ''\n ELSE formatLocationName(cntslip_location_id)\n END AS locname,\n invcnt_tagnumber,\n\n warehous_code,\n item_number, (item_descrip1 || ' ' || item_descrip2) AS descrip,\n\n cntslip_lotserial, cntslip_posted,\n cntslip_entered, cntslip_qty,\n 'qty' AS cntslip_qty_xtnumericrole,\n cntslip_posted AS posted\nFROM cntslip, invcnt\n\n JOIN itemsite ON (invcnt_itemsite_id=itemsite_id)\n JOIN item ON (itemsite_item_id=item_id)\n JOIN whsinfo ON (itemsite_warehous_id=warehous_id)\n\nWHERE ((cntslip_cnttag_id=invcnt_id)\n\n AND (cntslip_entered BETWEEN AND (::DATE + 1))\n \n AND (cntslip_posted)\n \n \n AND (itemsite_warehous_id=)\n \n\n AND (NOT invcnt_posted)\n AND (invcnt_id=)\n\n )\nORDER BY cntslip_number;\n admin 2013-07-26 0 418 contactmerge contactused Checks to see if this contact is used anywhere Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: contactmerge\n-- Name: contactused\n-- Notes: Checks to see if this contact is used anywhere\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT cntctused() AS used;\n admin 2013-07-26 0 238 countTag detail used by dspCountTagEditList Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: countTag\n-- Name: detail\n-- Notes: used by dspCountTagEditList\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT *,\n CASE WHEN (xtindentrole = 1) THEN NULL\n \n WHEN (ABS(variancecost) > ) THEN 'error'\n \n WHEN (ABS(varianceprcnt * 100.0) > ) THEN 'error'\n \n ELSE NULL\n \n END AS qtforegroundrole,\n CASE WHEN (xtindentrole = 1) THEN NULL\n WHEN (qohafter IS NOT NULL) THEN 'emphasis'\n END AS qohafter_qtforegroundrole,\n CASE WHEN (xtindentrole = 0) THEN NULL ELSE '' END AS invcnt_priority_qtdisplayrole,\n 'qty' AS qoh_xtnumericrole,\n 'qty' AS qohafter_xtnumericrole,\n 'qty' AS variance_xtnumericrole,\n 'percent' AS varianceprcnt_xtnumericrole,\n 'curr' AS variancecost_xtnumericrole\nFROM (\n SELECT invcnt_id, -1 AS cntslip_id, invcnt_priority,\n COALESCE(invcnt_tagnumber, 'Misc.') AS tagnumber,\n invcnt_tagdate AS tagdate,\n item_number, (item_descrip1 || item_descrip2) AS item_descrip, warehous_code,\n\t CASE WHEN (location_id IS NOT NULL) THEN\n location_name\n ELSE END AS loc_specific,\n CASE WHEN (invcnt_location_id IS NOT NULL)\n THEN (SELECT SUM(itemloc_qty)\n FROM itemloc JOIN location ON (location_id=itemloc_location_id)\n WHERE ((itemloc_itemsite_id=itemsite_id)\n AND (itemloc_location_id=invcnt_location_id)\n AND (location_netable)))\n ELSE itemsite_qtyonhand\n END AS qoh,\n CASE WHEN (invcnt_location_id IS NOT NULL)\n THEN (SELECT SUM(itemloc_qty)\n FROM itemloc JOIN location ON (location_id=itemloc_location_id)\n WHERE ((itemloc_itemsite_id=itemsite_id)\n AND (itemloc_location_id=invcnt_location_id)\n AND (NOT location_netable)))\n ELSE itemsite_nnqoh\n END AS nnqoh,\n \n calcTotalSlipQty(invcnt_id) AS qohafter,\n (calcTotalSlipQty(invcnt_id) - (itemsite_qtyonhand + itemsite_nnqoh)) AS variance,\n CASE WHEN (calcTotalSlipQty(invcnt_id) IS NULL) THEN NULL\n WHEN (((itemsite_qtyonhand + itemsite_nnqoh) = 0) AND (calcTotalSlipQty(invcnt_id) > 0)) THEN 1\n WHEN (((itemsite_qtyonhand + itemsite_nnqoh) = 0) AND (calcTotalSlipQty(invcnt_id) < 0)) THEN -1\n WHEN (((itemsite_qtyonhand + itemsite_nnqoh) = 0) AND (calcTotalSlipQty(invcnt_id) = 0)) THEN 0\n ELSE ((1 - (calcTotalSlipQty(invcnt_id) / (itemsite_qtyonhand + itemsite_nnqoh))) * -1)\n END AS varianceprcnt,\n (itemCost(itemsite_id) * (calcTotalSlipQty(invcnt_id) - (itemsite_qtyonhand + itemsite_nnqoh))) AS variancecost,\n \n COALESCE(invcnt_qoh_after, 0.0) AS qohafter,\n (invcnt_qoh_after - (itemsite_qtyonhand + itemsite_nnqoh)) AS variance,\n CASE WHEN (invcnt_qoh_after IS NULL) THEN NULL\n WHEN (((itemsite_qtyonhand + itemsite_nnqoh) = 0) AND (invcnt_qoh_after > 0)) THEN 1\n WHEN (((itemsite_qtyonhand + itemsite_nnqoh) = 0) AND (invcnt_qoh_after < 0)) THEN -1\n WHEN (((itemsite_qtyonhand + itemsite_nnqoh) = 0) AND (invcnt_qoh_after = 0)) THEN 0\n ELSE ((1 - (invcnt_qoh_after / (itemsite_qtyonhand + itemsite_nnqoh))) * -1)\n END AS varianceprcnt,\n (itemCost(itemsite_id) * (invcnt_qoh_after - (itemsite_qtyonhand + itemsite_nnqoh))) AS variancecost,\n \n item_number AS orderby,\n 0 AS xtindentrole\n FROM invcnt LEFT OUTER JOIN location ON (invcnt_location_id=location_id),\n item, whsinfo, itemsite\n WHERE ((invcnt_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (NOT invcnt_posted)\n \n AND (itemsite_warehous_id=)\n \n \n AND (item_classcode_id=)\n \n AND (item_classcode_id IN (SELECT classcode_id FROM classcode WHERE (classcode_code ~ )))\n \n AND (itemsite_plancode_id=)\n \n AND (itemsite_plancode_id IN (SELECT plancode_id FROM plancode WHERE (plancode_code ~ )))\n \n \n )\n UNION\n SELECT invcnt_id, cntslip_id, invcnt_priority,\n cntslip_number AS tagnumber,\n cntslip_entered AS tagdate,\n CASE WHEN (cntslip_posted) THEN \n ELSE \n END AS item_number,\n '' AS item_descrip,\n '' AS warehous_code,\n '' AS loc_specific,\n NULL AS qoh,\n NULL AS nnqoh,\n cntslip_qty AS qohafter,\n NULL AS variance, NULL AS varianceprcnt, 0 AS variancecost,\n item_number AS orderby,\n 1 AS xtindentrole\n FROM cntslip, invcnt, itemsite, item\n WHERE ((cntslip_cnttag_id=invcnt_id)\n AND (invcnt_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (NOT invcnt_posted)\n \n AND (itemsite_warehous_id=)\n \n \n AND (item_classcode_id=)\n \n AND (item_classcode_id IN (SELECT classcode_id FROM classcode WHERE (classcode_code ~ )))\n \n AND (itemsite_plancode_id=)\n \n AND (itemsite_plancode_id IN (SELECT plancode_id FROM plancode WHERE (plancode_code ~ )))\n \n \n )\n) AS dummy\nORDER BY invcnt_priority DESC, orderby, invcnt_id, cntslip_id;\n admin 2013-07-26 0 436 countTags create used by createCountTagsByParameterList Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: countTags\n-- Name: create\n-- Notes: used by createCountTagsByParameterList\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT createCountTag(itemsite_id, , , , )\nFROM ( SELECT itemsite_id\n FROM itemsite JOIN item ON (item_id=itemsite_item_id)\n\n JOIN itemloc ON ( (itemloc_location_id=)\n AND (itemloc_itemsite_id = itemsite_id)\n AND (validLocation(, itemsite_id)) )\n\n WHERE (itemsite_active)\n AND (item_active)\n\n AND (itemsite_warehous_id=)\n\n\n AND (item_classcode_id=)\n\n AND (item_classcode_id IN (SELECT classcode_id\n FROM classcode\n WHERE (classcode_code ~ )))\n\n\n AND (itemsite_plancode_id=)\n\n AND (itemsite_plancode_id IN (SELECT plancode_id\n FROM plancode\n WHERE (plancode_code ~ )))\n\n\n AND (itemsite_qtyonhand <> 0.0)\n\n ORDER BY item_number ) AS data;\n admin 2013-07-26 0 47 countTags detail used by dspCountTagsByClassCode, dspCountTagsByItem, dspCountTagsByWarehouse Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: countTags\n-- Name: detail\n-- Notes: used by dspCountTagsByClassCode, dspCountTagsByItem, dspCountTagsByWarehouse\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT invcnt_id, invcnt_tagnumber, warehous_code,\n item_number, (item_descrip1 || item_descrip2) AS item_descrip,\n invcnt_tagdate,\n CASE WHEN invcnt_tagdate IS NOT NULL THEN invcnt_tag_username\n END AS creator,\n invcnt_cntdate,\n CASE WHEN invcnt_cntdate IS NOT NULL THEN invcnt_cnt_username\n END AS counter,\n invcnt_postdate,\n CASE WHEN invcnt_postdate IS NOT NULL THEN invcnt_post_username\n END AS poster,\n CASE WHEN (NOT invcnt_posted) THEN NULL\n ELSE invcnt_qoh_before\n END AS qohbefore,\n invcnt_qoh_after,\n CASE WHEN (NOT invcnt_posted) THEN NULL\n ELSE (invcnt_qoh_after - invcnt_qoh_before)\n END AS variance,\n CASE WHEN (NOT invcnt_posted) THEN NULL\n WHEN ((invcnt_qoh_before = 0) AND (invcnt_qoh_after = 0)) THEN 0\n WHEN (invcnt_qoh_before = 0) THEN 1\n ELSE ((1 - (invcnt_qoh_after / invcnt_qoh_before)) * -1)\n END AS percent,\n 'qty' AS qohbefore_xtnumericrole,\n 'qty' AS invcnt_qoh_after_xtnumericrole,\n 'qty' AS variance_xtnumericrole,\n 'percent' AS percent_xtnumericrole \nFROM invcnt, itemsite, item, whsinfo\nWHERE ((invcnt_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (DATE(invcnt_tagdate) BETWEEN \n AND )\n\n AND invcnt_posted\n\n\n AND (itemsite_warehous_id=)\n\n\n AND (item_classcode_id=)\n\n AND (item_classcode_id IN (SELECT classcode_id\n FROM classcode\n WHERE (classcode_code ~ )))\n\n\n AND (item_id=)\n\n)\nORDER BY invcnt_tagdate;\n admin 2013-07-26 0 48 creditCards detail used by cashReceipt, customer, salesOrder Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: creditCards\n-- Name: detail\n-- Notes: used by cashReceipt, customer, salesOrder\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT ccard_id, ccard_seq,\n CASE WHEN (ccard_type='M') THEN \n WHEN (ccard_type='V') THEN \n WHEN (ccard_type='A') THEN \n WHEN (ccard_type='D') THEN \n ELSE \n END AS type,\n formatccnumber(decrypt(setbytea(ccard_number),\n setbytea(), 'bf')) AS f_number,\n ccard_active,\n formatbytea(decrypt(setbytea(ccard_name),\n setbytea(), 'bf')) AS ccard_name,\n formatbytea(decrypt(setbytea(ccard_month_expired),\n setbytea(), 'bf')) ||\n '-' ||\n formatbytea(decrypt(setbytea(ccard_year_expired),\n setbytea(),\n 'bf')) AS expiration \nFROM ccard \nWHERE ((ccard_cust_id=) \n\n AND (ccard_type=)\n\n\n AND (ccard_active)\n\n)\nORDER BY ccard_seq;\n admin 2013-07-26 0 310 creditMemo editlist used by creditMemoEditList Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: creditMemo\n-- Name: editlist\n-- Notes: used by creditMemoEditList\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT *,\n ('C/M-' || formatCreditMemoNumber(cmhead_id)) AS docnumber,\n currConcat(curr_id) AS currabbr,\n CASE WHEN seq != 0 THEN ''\n END AS docnumber_qtdisplayrole,\n 'qty' AS qtytobill_xtnumericrole,\n 'price' AS price_xtnumericrole,\n 'curr' AS extprice_xtnumericrole,\n CASE WHEN namedescrip = THEN 'error' END AS qtforegroundrole\nFROM (\n\nSELECT cmhead_id, -1 AS altid,\n cmhead_number AS ordernumber,\n cust_number AS custitemnumber,\n cmhead_billtoname AS namedescrip,\n CAST(NULL AS TEXT) AS uom_name,\n CAST(NULL AS NUMERIC) AS qtytobill,\n CAST(NULL AS NUMERIC) AS price,\n CAST(NULL AS NUMERIC) AS extprice,\n cmhead_curr_id AS curr_id,\n 0 AS cmitem_linenumber, 0 AS xtindentrole, 0 AS seq\nFROM cmhead JOIN custinfo ON (cmhead_cust_id=cust_id)\nWHERE ((NOT cmhead_posted)\n AND (NOT cmhead_hold))\n\nUNION\nSELECT cmhead_id, cmitem_id,\n NULL, item_number,\n item_descrip1,\n uom_name, cmitem_qtycredit * cmitem_qty_invuomratio,\n cmitem_unitprice / cmitem_price_invuomratio,\n cmitem_qtycredit * cmitem_qty_invuomratio * cmitem_unitprice / cmitem_price_invuomratio,\n cmhead_curr_id AS curr_id,\n cmitem_linenumber, 1 AS xtindentrole, 1 AS seq\nFROM cmhead, cmitem, itemsite, item, uom\nWHERE ((NOT cmhead_posted)\n AND (NOT cmhead_hold)\n AND (cmhead_id=cmitem_cmhead_id)\n AND (cmitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id))\n\nUNION\nSELECT cmhead_id, -1,\n NULL, ,\n COALESCE((SELECT formatGLAccountLong(accnt_id)\n FROM accnt, salesaccnt\n WHERE ((salesaccnt_sales_accnt_id=accnt_id)\n AND (salesaccnt_id=findSalesAccnt(itemsite_id, 'IS', cmhead_cust_id,\n cmhead_saletype_id, cmhead_shipzone_id)))), ),\n NULL, NULL, NULL,\n cmitem_qtycredit * cmitem_qty_invuomratio * cmitem_unitprice / cmitem_price_invuomratio,\n cmhead_curr_id AS curr_id,\n cmitem_linenumber, 2 AS xtindentrole, 2 AS seq\nFROM cmhead, cmitem, itemsite, item, uom\nWHERE ((NOT cmhead_posted)\n AND (NOT cmhead_hold)\n AND (cmhead_id=cmitem_cmhead_id)\n AND (cmitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id))\n\nUNION\nSELECT cmhead_id, -1,\n NULL, ,\n CASE WHEN (accnt_id IS NULL) THEN \n ELSE formatGLAccountLong(accnt_id)\n END,\n NULL, NULL, cmhead_freight,\n cmhead_freight,\n cmhead_curr_id AS curr_id,\n 99999, 1 AS xtindentrole, 3 AS seq\nFROM cmhead LEFT OUTER JOIN accnt ON (accnt_id=findFreightAccount(cmhead_cust_id))\nWHERE ((NOT cmhead_posted)\n AND (NOT cmhead_hold)\n AND (cmhead_freight <> 0))\n\nUNION\nSELECT cmhead_id, -1,\n NULL, ,\n formatGLAccountLong(cmhead_misc_accnt_id),\n NULL, NULL, cmhead_misc,\n cmhead_misc,\n cmhead_curr_id AS curr_id,\n 99999, 1 AS xtindentrole, 4 AS seq\nFROM cmhead LEFT OUTER JOIN accnt ON (accnt_id=findFreightAccount(cmhead_cust_id))\nWHERE ((NOT cmhead_posted)\n AND (NOT cmhead_hold)\n AND (cmhead_misc <> 0))\n\nUNION\nSELECT cmhead_id, -1,\n NULL, ,\n CASE WHEN (tax_sales_accnt_id IS NULL) THEN \n ELSE formatGLAccountLong(tax_sales_accnt_id)\n END,\n NULL, NULL, SUM(taxhist_tax * -1.0),\n SUM(taxhist_tax * -1.0),\n cmhead_curr_id AS curr_id,\n 99999, 1 AS xtindentrole, 5 AS seq\nFROM cmhead JOIN cmheadtax ON ((taxhist_parent_id=cmhead_id) AND (taxhist_tax <> 0.0))\n JOIN tax ON (tax_id=taxhist_tax_id)\nWHERE ((NOT cmhead_posted)\n AND (NOT cmhead_hold))\nGROUP BY cmhead_id, tax_sales_accnt_id, cmhead_curr_id\n\nUNION\nSELECT cmhead_id, -1,\n NULL, ,\n CASE WHEN (tax_sales_accnt_id IS NULL) THEN \n ELSE formatGLAccountLong(tax_sales_accnt_id)\n END,\n NULL, NULL, SUM(taxhist_tax * -1.0),\n SUM(taxhist_tax * -1.0),\n cmhead_curr_id AS curr_id,\n 99999, 1 AS xtindentrole, 5 AS seq\nFROM cmhead JOIN cmitem ON (cmitem_cmhead_id=cmhead_id)\n JOIN cmitemtax ON ((taxhist_parent_id=cmitem_id) AND (taxhist_tax <> 0.0))\n JOIN tax ON (tax_id=taxhist_tax_id)\nWHERE ((NOT cmhead_posted)\n AND (NOT cmhead_hold))\nGROUP BY cmhead_id, tax_sales_accnt_id, cmhead_curr_id\n\nUNION\nSELECT cmhead_id, -1,\n NULL, ,\n CASE WHEN (accnt_id IS NULL) THEN \n ELSE formatGLAccountLong(accnt_id)\n END,\n NULL, NULL, NULL,\n SUM((cmitem_qtycredit * cmitem_qty_invuomratio) *\n (cmitem_unitprice / cmitem_price_invuomratio)) +\n cmhead_freight + cmhead_misc +\n (SELECT COALESCE(SUM(taxhist_tax * -1.0), 0.0) FROM cmheadtax WHERE (taxhist_parent_id=cmhead_id)) +\n (SELECT COALESCE(SUM(taxhist_tax * -1.0), 0.0) FROM cmitem JOIN cmitemtax ON (taxhist_parent_id=cmitem_id)\n WHERE (cmitem_cmhead_id=cmhead_id))\n AS extprice,\n cmhead_curr_id AS curr_id,\n 99999, 1 AS xtindentrole, 6 AS seq\nFROM cmhead LEFT OUTER JOIN cmitem ON (cmhead_id=cmitem_cmhead_id)\n LEFT OUTER JOIN accnt ON (accnt_id=findARAccount(cmhead_cust_id))\nWHERE ((NOT cmhead_posted)\n AND (NOT cmhead_hold))\nGROUP BY cmhead_id, cmhead_cust_id, cmhead_freight, cmhead_misc, accnt_id, cmhead_curr_id\n\n) AS dummy\nORDER BY docnumber, cmitem_linenumber, seq;\n admin 2013-07-26 0 114 crm strictcountrycheck select details about countries used throughout the database that do not match country.country_name Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: crm\n-- Name: strictcountrycheck\n-- Notes: select details about countries used throughout the database\n-- that do not match country.country_name\n--\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT SUM(counter) AS counter FROM (\n\n SELECT COUNT(*) AS counter\n addr_id, 'Address' AS type, addr_number AS number, addr_country AS country, '' AS detail\n \n FROM addr\n WHERE addr_country != ''\n AND addr_country NOT IN (SELECT country_name\n FROM country\n WHERE country_name IS NOT NULL)\n UNION ALL\n SELECT COUNT(*)\n cmhead_id, 'Credit Memo', cmhead_number, cmhead_billtocountry, 'Bill-To'\n \n FROM cmhead\n WHERE cmhead_billtocountry != ''\n AND cmhead_billtocountry NOT IN (SELECT country_name\n FROM country\n WHERE country_name IS NOT NULL)\n AND (NOT cmhead_posted) \n UNION ALL\n SELECT COUNT(*)\n cmhead_id, 'Credit Memo', cmhead_number, cmhead_billtocountry, 'Ship-To'\n \n FROM cmhead\n WHERE cmhead_shipto_country != ''\n AND cmhead_shipto_country NOT IN (SELECT country_name\n FROM country\n WHERE country_name IS NOT NULL)\n AND (NOT cmhead_posted) \n UNION ALL\n SELECT COUNT(*)\n invchead_id, 'Invoice', invchead_invcnumber, invchead_billto_country, 'Bill-To'\n \n FROM invchead\n WHERE invchead_billto_country != ''\n AND invchead_billto_country NOT IN (SELECT country_name\n FROM country\n WHERE country_name IS NOT NULL)\n AND (NOT invchead_posted) \n UNION ALL\n SELECT COUNT(*)\n invchead_id, 'Invoice', invchead_invcnumber, invchead_shipto_country, 'Ship-To'\n \n FROM invchead\n WHERE invchead_shipto_country != ''\n AND invchead_shipto_country NOT IN (SELECT country_name\n FROM country\n WHERE country_name IS NOT NULL)\n AND (NOT invchead_posted) \n UNION ALL\n SELECT COUNT(*)\n quhead_id, 'Quote', quhead_number, quhead_billtocountry, 'Bill-To'\n \n FROM quhead\n WHERE quhead_billtocountry != ''\n AND quhead_billtocountry NOT IN (SELECT country_name\n FROM country\n WHERE country_name IS NOT NULL)\n AND (quhead_expire>=CURRENT_DATE) \n UNION ALL\n SELECT COUNT(*)\n quhead_id, 'Quote', quhead_number, quhead_shiptocountry, 'Ship-To'\n \n FROM quhead\n WHERE quhead_shiptocountry != ''\n AND quhead_shiptocountry NOT IN (SELECT country_name\n FROM country\n WHERE country_name IS NOT NULL)\n AND (quhead_expire>=CURRENT_DATE) \n UNION ALL\n SELECT COUNT(*)\n cohead_id, 'Sales Order', cohead_number, cohead_billtocountry, 'Bill-To'\n \n FROM cohead\n WHERE cohead_billtocountry != ''\n AND cohead_billtocountry NOT IN (SELECT country_name\n FROM country\n WHERE country_name IS NOT NULL)\n \n AND cohead_id IN (SELECT coitem_cohead_id\n FROM coitem\n WHERE COALESCE(coitem_status, 'O')='O')\n \n UNION ALL\n SELECT COUNT(*)\n cohead_id, 'Sales Order', cohead_number, cohead_shiptocountry, 'Ship-To'\n \n FROM cohead\n WHERE cohead_shiptocountry != ''\n AND cohead_shiptocountry NOT IN (SELECT country_name\n FROM country\n WHERE country_name IS NOT NULL)\n \n AND cohead_id IN (SELECT coitem_cohead_id\n FROM coitem\n WHERE COALESCE(coitem_status, 'O')='O')\n \n\n\n) AS dummy;\n\n admin 2013-07-26 0 447 crmaccountmerge pickdatasources Show the records the user has selected to merge crm accounts. Emphasize the particular fields in each record that s/he has selected. Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: crmaccountmerge\n-- Name: pickdatasources\n-- Notes: Show the records the user has selected to merge crm accounts. Emphasize\n-- the particular fields in each record that s/he has selected.\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT c.crmacct_id,\n crmacctsel_dest_crmacct_id,\n c.crmacct_active,\n formatCntctName(c.crmacct_cntct_id_1) AS primary,\n formatCntctName(c.crmacct_cntct_id_2) AS secondary,\n c.crmacct_competitor_id IS NOT NULL AS competitor,\n c.crmacct_cust_id IS NOT NULL AS cust,\n c.crmacct_emp_id IS NOT NULL AS emp,\n c.crmacct_name,\n c.crmacct_number,\n c.crmacct_owner_username AS owner,\n p.crmacct_number AS parent,\n c.crmacct_partner_id IS NOT NULL AS partner,\n c.crmacct_prospect_id IS NOT NULL AS prospect,\n c.crmacct_salesrep_id IS NOT NULL AS salesrep,\n c.crmacct_taxauth_id IS NOT NULL AS taxauth,\n c.crmacct_type,\n c.crmacct_usr_username IS NOT NULL AS usr,\n c.crmacct_vend_id IS NOT NULL AS vend,\n trim(firstline(c.crmacct_notes)) AS notes,\n\n CASE crmacctsel_src_crmacct_id=crmacctsel_dest_crmacct_id\n WHEN true THEN '#ccc'\n END AS qtbackgroundrole,\n\n CASE WHEN c.crmacct_active IS NULL THEN END AS crmacct_active_qtdisplayrole,\n CASE WHEN COALESCE(formatCntctName(c.crmacct_cntct_id_1), '') = '' THEN END AS primary_qtdisplayrole,\n CASE WHEN COALESCE(formatCntctName(c.crmacct_cntct_id_2), '') = '' THEN END AS secondary_qtdisplayrole,\n CASE WHEN COALESCE(c.crmacct_name, '') = '' THEN END AS crmacct_name_qtdisplayrole,\n CASE WHEN COALESCE(c.crmacct_number, '') = '' THEN END AS crmacct_number_qtdisplayrole,\n CASE WHEN COALESCE(c.crmacct_owner_username, '') = '' THEN END AS owner_qtdisplayrole,\n CASE WHEN COALESCE(p.crmacct_number, '') = '' THEN END AS parent_qtdisplayrole,\n CASE c.crmacct_type WHEN 'I' THEN \n WHEN 'O' THEN \n ELSE END AS crmacct_type_qtdisplayrole,\n CASE WHEN COALESCE(TRIM(firstline(c.crmacct_notes)), '') = '' THEN END AS notes_qtdisplayrole,\n\n CASE WHEN crmacctsel_mrg_crmacct_number THEN 'emphasis' END AS crmacct_number_qtforegroundrole,\n CASE WHEN crmacctsel_mrg_crmacct_active THEN 'emphasis' END AS crmacct_active_qtforegroundrole,\n CASE WHEN crmacctsel_mrg_crmacct_cntct_id_1 THEN 'emphasis' END AS primary_qtforegroundrole,\n CASE WHEN crmacctsel_mrg_crmacct_cntct_id_2 THEN 'emphasis' END AS secondary_qtforegroundrole,\n CASE WHEN crmacctsel_mrg_crmacct_competitor_id THEN 'emphasis' END AS competitor_qtforegroundrole,\n CASE WHEN crmacctsel_mrg_crmacct_cust_id THEN 'emphasis' END AS cust_qtforegroundrole,\n CASE WHEN crmacctsel_mrg_crmacct_emp_id THEN 'emphasis' END AS emp_qtforegroundrole,\n CASE WHEN crmacctsel_mrg_crmacct_name THEN 'emphasis' END AS crmacct_name_qtforegroundrole,\n CASE WHEN crmacctsel_mrg_crmacct_owner_username THEN 'emphasis' END AS owner_qtforegroundrole,\n CASE WHEN crmacctsel_mrg_crmacct_parent_id THEN 'emphasis' END AS parent_qtforegroundrole,\n CASE WHEN crmacctsel_mrg_crmacct_partner_id THEN 'emphasis' END AS partner_qtforegroundrole,\n CASE WHEN crmacctsel_mrg_crmacct_prospect_id THEN 'emphasis' END AS prospect_qtforegroundrole,\n CASE WHEN crmacctsel_mrg_crmacct_salesrep_id THEN 'emphasis' END AS salesrep_qtforegroundrole,\n CASE WHEN crmacctsel_mrg_crmacct_taxauth_id THEN 'emphasis' END AS taxauth_qtforegroundrole,\n CASE WHEN crmacctsel_mrg_crmacct_type THEN 'emphasis' END AS crmacct_type_qtforegroundrole,\n CASE WHEN crmacctsel_mrg_crmacct_usr_username THEN 'emphasis' END AS usr_qtforegroundrole,\n CASE WHEN crmacctsel_mrg_crmacct_vend_id THEN 'emphasis' END AS vend_qtforegroundrole,\n CASE WHEN crmacctsel_mrg_crmacct_notes THEN 'emphasis' END AS notes_qtforegroundrole,\n\n c.crmacct_cntct_id_1 AS primary_xtidrole,\n c.crmacct_cntct_id_2 AS secondary_xtidrole,\n c.crmacct_cust_id AS cust_xtidrole,\n c.crmacct_emp_id AS emp_xtidrole,\n c.crmacct_parent_id AS parent_xtidrole,\n c.crmacct_prospect_id AS prospect_xtidrole,\n c.crmacct_salesrep_id AS salesrep_xtidrole,\n c.crmacct_taxauth_id AS taxauth_xtidrole,\n c.crmacct_usr_username AS usr_xtidrole,\n c.crmacct_vend_id AS vend_xtidrole,\n\n c.crmacct_notes AS notes_qttooltiprole\n\n FROM crmacct c\n JOIN crmacctsel ON (c.crmacct_id=crmacctsel_src_crmacct_id)\n LEFT OUTER JOIN crmacct p ON (c.crmacct_parent_id=p.crmacct_id)\n WHERE crmacctsel_dest_crmacct_id=\n ORDER BY qtbackgroundrole DESC, c.crmacct_number;\n admin 2013-07-26 0 448 crmaccountmerge wip show an indented list of crm account merges that have data to purge. this includes those that have been started but not completed as well as those that have been completed but neither purged nor undone. Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: crmaccountmerge\n-- Name: wip\n-- Notes: show an indented list of crm account merges that have\n-- data to purge. this includes those that have been started\n-- but not completed as well as those that have been completed\n-- but neither purged nor undone.\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT DISTINCT\n d.crmacct_id, d.crmacct_id,\n d.crmacct_number, d.crmacct_name,\n d.crmacct_number AS destnumber,\n AS status,\n AS status_qtdisplayrole,\n 0 AS xtindentrole\n FROM crmacct d\n JOIN mrgundo ON (d.crmacct_id=mrgundo_base_id\n AND mrgundo_base_schema='public'\n AND mrgundo_base_table='crmacct')\n\n WHERE d.crmacct_id = \n\nUNION ALL\nSELECT s.crmacct_id, d.crmacct_id,\n s.crmacct_number, s.crmacct_name,\n d.crmacct_number AS destnumber,\n AS status,\n AS status_qtdisplayrole,\n\n 0\n\n 1\n\n FROM crmacct s\n JOIN mrgundo ON (mrgundo_schema='public'\n AND mrgundo_table='crmacct'\n AND mrgundo_pkey_col='crmacct_id'\n AND mrgundo_pkey_id=s.crmacct_id\n AND mrgundo_col IS NULL)\n JOIN crmacct d ON (mrgundo_base_id=d.crmacct_id\n AND mrgundo_base_schema='public')\n\n WHERE d.crmacct_id = \n\nUNION\nSELECT s.crmacct_id, d.crmacct_id,\n s.crmacct_number, s.crmacct_name,\n d.crmacct_number AS destnumber, \n AS status,\n AS status_qtdisplayrole,\n CASE WHEN s.crmacct_id=d.crmacct_id THEN 0\n ELSE 1\n END\n FROM crmacct d\n JOIN crmacctsel ON (d.crmacct_id=crmacctsel_dest_crmacct_id)\n JOIN crmacct s ON (crmacctsel_src_crmacct_id=s.crmacct_id)\n\n WHERE d.crmacct_id = \n\n\nORDER BY destnumber, xtindentrole, crmacct_number;\n admin 2013-07-26 0 239 crmaccounts detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: crmaccounts\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT DISTINCT ON (crmacct_number)\n crmacct_id AS id, crmacct_number, crmacct_name, crmacct_owner_username,\n cntct.*, addr.*,\n (crmacct_cust_id IS NOT NULL) AS cust,\n (crmacct_prospect_id IS NOT NULL) AS prospect,\n (crmacct_vend_id IS NOT NULL) AS vend,\n (crmacct_competitor_id IS NOT NULL) AS competitor,\n (crmacct_partner_id IS NOT NULL) AS partner,\n (crmacct_taxauth_id IS NOT NULL) AS taxauth,\n (crmacct_usr_username IS NOT NULL) AS usr,\n (crmacct_emp_id IS NOT NULL) AS emp,\n (crmacct_salesrep_id IS NOT NULL) AS salesrep\n\n , charass_alias.charass_value AS char\n\n\n , charass_alias.charass_value AS char\n\n\n , charass_alias.charass_value::date AS char\n\nFROM crmacct() LEFT OUTER JOIN\n cntct ON (crmacct_cntct_id_1=cntct_id) LEFT OUTER JOIN\n addr ON (cntct_addr_id=addr_id) \n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='CRMACCT') \n AND (charass_alias.charass_target_id=crmacct_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='CRMACCT') \n AND (charass_alias.charass_target_id=crmacct_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='CRMACCT') \n AND (charass_alias.charass_target_id=crmacct_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\nWHERE true\n \n AND (crmacct_owner_username=) \n\n AND (crmacct_owner_username ~ ) \n\n \n AND crmacct_active \n\n\n AND ((crmacct_number ~* )\n OR (crmacct_name ~* )\n OR (COALESCE(cntct_first_name,'') || ' ' || COALESCE(cntct_last_name,'') ~* )\n OR (COALESCE(cntct_phone,'') || ' ' || COALESCE(cntct_phone2,'') || ' ' || COALESCE(cntct_fax,'') ~* )\n OR (COALESCE(cntct_email,'') ~* )\n OR (COALESCE(addr_line1,'') || ' ' || COALESCE(addr_line2,'') || ' ' || COALESCE(addr_line3,'') ~* )\n OR (COALESCE(addr_city,'') ~* )\n OR (COALESCE(addr_state,'') ~* )\n OR (COALESCE(addr_postalcode,'') ~* )\n OR (addr_country ~* ))\n\n\n AND (crmacct_number ~* )\n\n\n AND (crmacct_name ~* )\n\n\n AND (COALESCE(cntct_first_name,'') || ' ' || COALESCE(cntct_last_name,'') ~* )\n\n\n AND (COALESCE(cntct_phone,'') || ' ' || COALESCE(cntct_phone2,'') || ' ' || COALESCE(cntct_fax,'') ~* )\n\n\n AND (COALESCE(cntct_email,'') ~* )\n\n\n AND (COALESCE(addr_line1,'') || ' ' || COALESCE(addr_line2,'') || ' ' || COALESCE(addr_line3,'') ~* )\n\n\n AND (COALESCE(addr_city,'') ~* )\n\n\n AND (COALESCE(addr_state,'') ~* )\n\n\n AND (COALESCE(addr_postalcode,'') ~* )\n\n\n AND (COALESCE(addr_country,'') ~* )\n\n\n AND (crmacct_id=)\n\n\n\n\n AND (crmacct_id NOT IN (SELECT mrgundo_base_id\n FROM mrgundo\n WHERE (mrgundo_base_schema='public')\n AND (mrgundo_base_table='crmacct')\n UNION\n SELECT crmacctsel_src_crmacct_id\n FROM crmacctsel\n UNION\n SELECT crmacctsel_dest_crmacct_id\n FROM crmacctsel))\n\nORDER BY crmacct_number; \n admin 2013-07-26 0 95 currencyConversions detail used by currencyConversions the N in round(curr_rate, N) has to be SCALE - 1 of curr_rates NUMERIC(p, SCALE) type definition Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: currencyConversions\n-- Name: detail\n-- Notes: used by currencyConversions\n-- the N in round(curr_rate, N) has to be SCALE - 1 of curr_rates\n-- NUMERIC(p, SCALE) type definition\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT curr_rate_id, currConcat(curr_id) AS f_curr,\n\n round((1.0 / curr_rate),5) AS rate,\n\n round(curr_rate,5) AS rate,\n\n 'uomratio' AS rate_xtnumericrole,\n curr_effective, curr_expires\nFROM curr_symbol NATURAL JOIN curr_rate\nWHERE ( (curr_base = FALSE)\n AND (curr_expires >= )\n AND (curr_effective <= )\n\n AND (curr_id = )\n\n\n AND (currConcat(curr_id) ~ )\n\n )\nORDER BY f_curr, curr_effective, curr_expires;\n admin 2013-07-26 0 242 customers detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: customers\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT DISTINCT ON ( cust_number ) \n cust_id, cust_custtype_id, \n cust_active, cust_number, cust_name,\n custtype_code,\n bill_cntct.cntct_first_name AS bill_first_name,\n bill_cntct.cntct_last_name AS bill_last_name,\n bill_cntct.cntct_title AS bill_title,\n bill_cntct.cntct_phone AS bill_phone,\n bill_cntct.cntct_fax AS bill_fax,\n bill_cntct.cntct_email AS bill_email,\n bill_addr.addr_line1 AS bill_line1,\n bill_addr.addr_line2 AS bill_line2,\n bill_addr.addr_line3 AS bill_line3,\n bill_addr.addr_city AS bill_city,\n bill_addr.addr_state AS bill_state,\n bill_addr.addr_postalcode AS bill_postalcode,\n bill_addr.addr_country AS bill_country,\n corr_cntct.cntct_first_name AS corr_first_name,\n corr_cntct.cntct_last_name AS corr_last_name,\n corr_cntct.cntct_phone AS corr_phone,\n corr_cntct.cntct_fax AS corr_fax,\n corr_cntct.cntct_email AS corr_email,\n corr_addr.addr_line1 AS corr_line1,\n corr_addr.addr_line2 AS corr_line2,\n corr_addr.addr_line3 AS corr_line3,\n corr_addr.addr_city AS corr_city,\n corr_addr.addr_state AS corr_state,\n corr_addr.addr_postalcode AS corr_postalcode,\n corr_addr.addr_country AS corr_country\n\n , charass_alias.charass_value AS char\n\n\n , charass_alias.charass_value AS char\n\n\n , charass_alias.charass_value::date AS char\n\nFROM custinfo\n JOIN custtype ON (cust_custtype_id=custtype_id)\n LEFT OUTER JOIN cntct bill_cntct ON (cust_cntct_id=bill_cntct.cntct_id) \n LEFT OUTER JOIN addr bill_addr ON (bill_cntct.cntct_addr_id=bill_addr.addr_id)\n LEFT OUTER JOIN cntct corr_cntct ON (cust_corrcntct_id=corr_cntct.cntct_id) \n LEFT OUTER JOIN addr corr_addr ON (corr_cntct.cntct_addr_id=corr_addr.addr_id)\n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='C') \n AND (charass_alias.charass_target_id=cust_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='C') \n AND (charass_alias.charass_target_id=cust_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='C') \n AND (charass_alias.charass_target_id=cust_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\nWHERE true\n \n AND cust_active \n\n\n AND ((cust_number ~* )\n OR (cust_name ~* )\n OR (custtype_code ~* )\n OR (COALESCE(bill_cntct.cntct_first_name,'') || ' ' || COALESCE(bill_cntct.cntct_last_name,'') ~* )\n OR (COALESCE(bill_cntct.cntct_phone,'') || ' ' || COALESCE(bill_cntct.cntct_phone2,'') || ' ' || COALESCE(bill_cntct.cntct_fax, '') ~* )\n OR (COALESCE(bill_cntct.cntct_email, '') ~* )\n OR (COALESCE(bill_addr.addr_line1,'') || ' ' || COALESCE(bill_addr.addr_line2,'') || ' ' || COALESCE(bill_addr.addr_line3,'') ~* )\n OR (COALESCE(bill_addr.addr_city,'') ~* )\n OR (COALESCE(bill_addr.addr_state,'') ~* )\n OR (COALESCE(bill_addr.addr_postalcode,'') ~* )\n OR (COALESCE(bill_addr.addr_country,'') ~* )\n OR (COALESCE(corr_cntct.cntct_first_name,'') || ' ' || COALESCE(corr_cntct.cntct_last_name,'') ~* )\n OR (COALESCE(corr_cntct.cntct_phone,'') || ' ' || COALESCE(corr_cntct.cntct_phone2,'') || ' ' || COALESCE(corr_cntct.cntct_fax, '') ~* )\n OR (COALESCE(corr_cntct.cntct_email, '') ~* )\n OR (COALESCE(corr_addr.addr_line1,'') || ' ' || COALESCE(corr_addr.addr_line2,'') || ' ' || COALESCE(corr_addr.addr_line3,'') ~* )\n OR (COALESCE(corr_addr.addr_city,'') ~* )\n OR (COALESCE(corr_addr.addr_state,'') ~* )\n OR (COALESCE(corr_addr.addr_postalcode,'') ~* )\n OR (COALESCE(corr_addr.addr_country,'') ~* ))\n\n\n AND (cust_number ~* )\n\n\n AND (cust_name ~* )\n\n\n AND (custtype_code ~* )\n\n\n AND (COALESCE(bill_cntct.cntct_first_name,'') || ' ' || COALESCE(bill_cntct.cntct_last_name, '') ~* \n OR COALESCE(corr_cntct.cntct_first_name,'') || ' ' || COALESCE(corr_cntct.cntct_last_name, '') ~* )\n\n\n AND (COALESCE(bill_cntct.cntct_phone,'') || ' ' || COALESCE(bill_cntct.cntct_phone2,'') || ' ' || COALESCE(bill_cntct.cntct_fax,'') ~* \n OR COALESCE(corr_cntct.cntct_phone,'') || ' ' || COALESCE(corr_cntct.cntct_phone2,'') || ' ' || COALESCE(corr_cntct.cntct_fax,'') ~* )\n\n\n AND (COALESCE(bill_cntct.cntct_email,'') ~* \n OR COALESCE(corr_cntct.cntct_email,'') ~* )\n\n\n AND (COALESCE(bill_addr.addr_line1,'') || ' ' || COALESCE(bill_addr.addr_line2,'') || ' ' || COALESCE(bill_addr.addr_line3,'') ~* \n OR COALESCE(corr_addr.addr_line1,'') || ' ' || COALESCE(corr_addr.addr_line2,'') || ' ' || COALESCE(corr_addr.addr_line3,'') ~* )\n\n\n AND (COALESCE(bill_addr.addr_city,'') ~* \n OR COALESCE(corr_addr.addr_city,'') ~* )\n\n\n AND (COALESCE(bill_addr.addr_state,'') ~* \n OR COALESCE(corr_addr.addr_state,'') ~* )\n\n\n AND (COALESCE(bill_addr.addr_postalcode,'') ~* \n OR COALESCE(corr_addr.addr_postalcode,'') ~* )\n\n\n AND (COALESCE(bill_addr.addr_country,'') ~* \n OR COALESCE(corr_addr.addr_country,'') ~* )\n\n\n AND (cust_salesrep_id = )\n\n\nORDER BY cust_number; \n admin 2013-07-26 0 439 customers statement used by printStatementsByCustomerType SELECT cust_id, (cust_number || '-' || cust_name) AS customer, findCustomerForm(cust_id, 'S') AS reportname FROM (SELECT araging_cust_id FROM araging(, true))AS data, custinfo, custtype, aropen WHERE (cust_custtype_id=custtype_id) AND (aropen_cust_id=cust_id) AND (aropen_open) AND (aropen_duedate < (CURRENT_DATE - )) AND (custtype_id=) AND (custtype_code ~ ) AND (cust_id = araging_cust_id) GROUP BY cust_id, cust_number, cust_name HAVING (SUM((aropen_amount - aropen_paid) * CASE WHEN (aropen_doctype IN ('C', 'R')) THEN -1 ELSE 1 END) > 0) ORDER BY cust_number; Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: customers\n-- Name: statement\n-- Notes: used by printStatementsByCustomerType\n--SELECT cust_id, (cust_number || '-' || cust_name) AS customer,\n-- findCustomerForm(cust_id, 'S') AS reportname\n--FROM\n--\n-- (SELECT araging_cust_id FROM araging(, true))AS data,\n--\n-- custinfo, custtype, aropen\n--WHERE (cust_custtype_id=custtype_id)\n-- AND (aropen_cust_id=cust_id)\n-- AND (aropen_open)\n--\n-- AND (aropen_duedate < (CURRENT_DATE - ))\n--\n--\n-- AND (custtype_id=)\n--\n-- AND (custtype_code ~ )\n--\n--\n-- AND (cust_id = araging_cust_id)\n--\n--GROUP BY cust_id, cust_number, cust_name\n--HAVING (SUM((aropen_amount - aropen_paid) *\n-- CASE WHEN (aropen_doctype IN ('C', 'R')) THEN -1\n-- ELSE 1 END) > 0)\n--ORDER BY cust_number;\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT araging_cust_id AS cust_id,\n (araging_cust_number || '-' || araging_cust_name) AS customer,\n findCustomerForm(araging_cust_id, 'S') AS reportname\nFROM araging(, true)\nWHERE (true)\n\n AND (COALESCE(araging_duedate, startOfTime()) < (CURRENT_DATE - ))\n\n\n AND (araging_cust_custtype_id=)\n\n AND (araging_custtype_code ~ )\n\nGROUP BY araging_cust_id, araging_cust_number, araging_cust_name\nORDER BY araging_cust_number;\n admin 2013-07-26 0 243 depositesRegister detail used by dspDepositsRegister Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: depositesRegister\n-- Name: detail\n-- Notes: used by dspDepositsRegister\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT trans_id, trans_date, trans_source,\n CASE WHEN (trans_doctype='IN') THEN \n WHEN (trans_doctype='CM') THEN \n ELSE trans_doctype\n END AS doctype,\n trans_docnumber, firstLine(trans_notes) AS f_notes,\n (formatGLAccount(accnt_id) || ' - ' || accnt_descrip) AS f_accnt,\n CASE WHEN (trans_amount < 0) THEN formatMoney(ABS(trans_amount))\n ELSE ''\n END AS f_debit,\n CASE WHEN (trans_amount < 0) THEN ABS(trans_amount)\n ELSE 0\n END AS debit,\n CASE WHEN (trans_amount > 0) THEN trans_amount\n ELSE 0\n END AS credit,\n (aropen_amount - aropen_paid) AS balance,\n currtobase(aropen_curr_id,(aropen_amount - aropen_paid),aropen_docdate) AS base_balance,\n currconcat(aropen_curr_id) AS currAbbr,\n 'curr' AS debit_xtnumericrole,\n 'curr' AS credit_xtnumericrole,\n 'curr' AS balance_xtnumericrole,\n 'curr' AS base_balance_xtnumericrole,\n 0 AS debit_xttotalrole,\n 0 AS credit_xttotalrole,\n 0 AS base_balance_xttotalrole\nFROM (\nSELECT gltrans_id AS trans_id, gltrans_date AS trans_date, gltrans_created AS trans_created,\n gltrans_source AS trans_source, gltrans_doctype AS trans_doctype, gltrans_sequence AS trans_sequence,\n gltrans_docnumber AS trans_docnumber, gltrans_notes AS trans_notes, gltrans_amount AS trans_amount,\n accnt_id, accnt_descrip,\n aropen_amount, aropen_paid, aropen_curr_id, aropen_docdate\nFROM gltrans LEFT OUTER JOIN aropen ON ((text(gltrans_docnumber) = 'I-' || text(aropen_docnumber))\n AND (aropen_doctype='I')), accnt\nWHERE ((gltrans_accnt_id=accnt_id)\n AND (gltrans_doctype = 'CR')\n AND (gltrans_date BETWEEN AND ) )\nUNION\nSELECT sltrans_id AS trans_id, sltrans_date AS trans_date, sltrans_created AS trans_created,\n sltrans_source AS trans_source, sltrans_doctype AS trans_doctype, sltrans_sequence AS trans_sequence,\n sltrans_docnumber AS trans_docnumber, sltrans_notes AS trans_notes, sltrans_amount AS trans_amount,\n accnt_id, accnt_descrip,\n aropen_amount, aropen_paid, aropen_curr_id, aropen_docdate\nFROM sltrans LEFT OUTER JOIN aropen ON ((text(sltrans_docnumber) = 'I-' || text(aropen_docnumber))\n AND (aropen_doctype='I')), accnt\nWHERE ((sltrans_accnt_id=accnt_id)\n AND (sltrans_doctype = 'CR')\n AND (sltrans_date BETWEEN AND ) )\n ) AS data\nORDER BY trans_created DESC, trans_sequence, trans_amount;\n admin 2013-07-26 0 244 detailedInventoryHistory detail used by dspDetailedInventoryHistoryByLocation, dspDetailedInventoryHistoryByLotSerial Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: detailedInventoryHistory\n-- Name: detail\n-- Notes: used by dspDetailedInventoryHistoryByLocation, dspDetailedInventoryHistoryByLotSerial\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT\n\n invhist_id, invhist_transdate, invhist_transtype,\n (invhist_ordtype || '-' || invhist_ordnumber) AS ordernumber,\n invhist_invuom,\n item_number, formatlotserialnumber(invdetail_ls_id) AS lotserial,\n CASE WHEN invhist_posted THEN invdetail_qty\n END AS transqty,\n CASE WHEN invhist_posted THEN invdetail_qty_before\n END AS qohbefore,\n CASE WHEN invhist_posted THEN invdetail_qty_after\n END AS qohafter,\n invhist_posted,\n 'qty' AS transqty_xtnumericrole,\n 'qty' AS qohbefore_xtnumericrole,\n 'qty' AS qohafter_xtnumericrole,\n CASE WHEN NOT invhist_posted THEN 'warning'\n END AS qtforegroundrole\n\n *\n\nFROM \n invdetail, invhist, itemsite, item\n \n lshist (,,,\n ,,,\n ,,1)\n \nWHERE (\n\n (invdetail_invhist_id=invhist_id)\n AND (invhist_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (invdetail_location_id=)\n AND (DATE(invhist_transdate) BETWEEN AND )\n AND (transType(invhist_transtype, ))\n\n (TRUE)\n\n )\n\nORDER BY invhist_transdate DESC, invhist_transtype\n\n;\n admin 2013-07-26 0 118 distributeInventory locations Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: distributeInventory\n-- Name: locations\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT id, type, locationname, defaultlocation,\n\t\t location_netable, lotserial, f_expiration, expired,\n qty, qtytagged, (qty + qtytagged) AS balance,\n 'qty' AS qty_xtnumericrole,\n 'qty' AS qtytagged_xtnumericrole,\n 'qty' AS balance_xtnumericrole,\n CASE WHEN expired THEN 'error' END AS qtforegroundrole, \n CASE WHEN expired THEN 'error' \n WHEN defaultlocation AND expired = false THEN 'altemphasis' \n ELSE null END AS defaultlocation_qtforegroundrole, \n CASE WHEN expired THEN 'error' \n WHEN qty > 0 AND expired = false THEN 'altemphasis' \n ELSE null END AS qty_qtforegroundrole \n FROM ( \n\t\t \n\t\t SELECT location_id AS id, AS type,\n\t\t formatLocationName(location_id) AS locationname,\n\t\t CASE WHEN ( = 'R' AND location_id=itemsite_recvlocation_id) THEN TRUE\n\t\t WHEN ( = 'I' AND location_id=itemsite_issuelocation_id) THEN TRUE\n\t\t WHEN ( = 'O' AND location_id=itemsite_location_id) THEN TRUE\n ELSE FALSE\n END AS defaultlocation,\n\t\t location_netable,\n\t\t TEXT('') AS lotserial,\n\t\t TEXT() AS f_expiration, FALSE AS expired,\n\t\t qtyLocation(location_id, NULL, NULL, NULL, itemsite_id, itemlocdist_order_type, itemlocdist_order_id, itemlocdist_id) AS qty,\n\t\t itemlocdistQty(location_id, itemlocdist_id) AS qtytagged \n\t\t FROM itemlocdist, location, itemsite \n\t\t WHERE ( (itemlocdist_itemsite_id=itemsite_id)\n\t\t AND (itemsite_loccntrl)\n\t\t AND (itemsite_warehous_id=location_warehous_id)\n\t\t AND (validLocation(location_id, itemsite_id))\n\t\t AND (itemlocdist_id=) ) \n\t\t \n\t\t SELECT itemloc_id AS id, AS type,\n\t\t COALESCE(formatLocationName(location_id),\n\t\t ) AS locationname,\n\t\t (location_id IS NOT NULL AND\n\t\t CASE WHEN ( = 'R' AND location_id=itemsite_recvlocation_id) THEN TRUE\n\t\t WHEN ( = 'I' AND location_id=itemsite_issuelocation_id) THEN TRUE\n \t\t WHEN ( = 'O' AND location_id=itemsite_location_id) THEN TRUE\n ELSE FALSE\n END) AS defaultlocation,\n\t\t COALESCE(location_netable, false) AS location_netable,\n\t\t ls_number AS lotserial,\n\t\t CASE WHEN (itemsite_perishable) THEN formatDate(itemloc_expiration)\n\t\t ELSE \n\t\t END AS f_expiration,\n\t\t CASE WHEN (itemsite_perishable) THEN (itemloc_expiration < CURRENT_DATE)\n\t\t ELSE FALSE \n\t\t END AS expired,\n\t\t qtyLocation(itemloc_location_id, itemloc_ls_id, itemloc_expiration, itemloc_warrpurc, itemsite_id, itemlocdist_order_type, itemlocdist_order_id, itemlocdist_id) AS qty,\n\t\t ( SELECT COALESCE(SUM(target.itemlocdist_qty), 0)\n\t\t FROM itemlocdist AS target\n\t\t WHERE ( (target.itemlocdist_source_type='I')\n\t\t AND (target.itemlocdist_source_id=itemloc_id)\n\t\t AND (target.itemlocdist_itemlocdist_id=source.itemlocdist_id)) ) AS qtytagged \n\t\t FROM itemlocdist AS source, itemsite, itemloc \n LEFT OUTER JOIN location ON (itemloc_location_id=location_id) \n LEFT OUTER JOIN ls ON (itemloc_ls_id=ls_id) \n\t\t WHERE ( (source.itemlocdist_itemsite_id=itemsite_id)\n\t\t AND (itemloc_itemsite_id=itemsite_id)\n\t\t AND (source.itemlocdist_id=) ) \n\t\t UNION \n\t\t SELECT location_id AS id, AS type,\n\t\t formatLocationName(location_id) AS locationname,\n\t\t CASE WHEN ( = 'R' AND location_id=itemsite_recvlocation_id) THEN TRUE\n\t\t WHEN ( = 'I' AND location_id=itemsite_issuelocation_id) THEN TRUE\n\t\t WHEN ( = 'O' AND location_id=itemsite_location_id) THEN TRUE\n ELSE FALSE\n END AS defaultlocation,\n\t\t location_netable,\n\t\t TEXT('') AS lotserial,\n\t\t TEXT() AS f_expiration, FALSE AS expired,\n\t\t qtyLocation(location_id, NULL, NULL, NULL, itemsite_id, itemlocdist_order_type, itemlocdist_order_id, itemlocdist_id) AS qty,\n\t\t itemlocdistQty(location_id, itemlocdist_id) AS qtytagged \n\t\t FROM itemlocdist, location, itemsite \n\t\t WHERE ( (itemlocdist_itemsite_id=itemsite_id)\n\t\t AND (itemsite_loccntrl)\n\t\t AND (itemsite_warehous_id=location_warehous_id)\n\t\t AND (validLocation(location_id, itemsite_id))\n AND (itemsite_id= ) \n\t\t AND (location_id NOT IN (SELECT DISTINCT itemloc_location_id FROM itemloc WHERE (itemloc_itemsite_id=itemsite_id)))\n\t\t AND (itemlocdist_id=) ) \n\t\t \n\t\t ) AS data \n WHERE ((TRUE) \n\t\t \n\t\t AND (qtytagged != 0) \n\t\t \n \n AND (qty > 0) \n \n\t\t ) ORDER BY locationname;\n admin 2013-07-26 0 50 events detail used by eventManager Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: events\n-- Name: detail\n-- Notes: used by eventManager\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT evntlog_id, evntlog_ord_id, evntlog_newdate,\n evntlog_newvalue, warehous_code,\n evntlog_evnttime,\n evntlog_dispatched,\n evnttype_name, evntlog_number \n FROM evnttype, evntlog LEFT OUTER JOIN whsinfo ON (evntlog_warehous_id=warehous_id)\nWHERE ( (evntlog_evnttype_id=evnttype_id)\n AND (evntlog_username=)\n\n AND (warehous_id=)\n\n\n AND (evntlog_dispatched IS NULL)\n\n) \nORDER BY evntlog_evnttime;\n admin 2013-07-26 0 245 expiredInventory detail used by dspExpiredInventoryByClassCode Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: expiredInventory\n-- Name: detail\n-- Notes: used by dspExpiredInventoryByClassCode\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT itemsite_id, itemloc_id, warehous_code, item_number, uom_name,\n ls_number, itemloc_expiration,\n itemloc_qty, costmethod, cost,\n noNeg(cost * itemloc_qty) AS value,\n 'qty' AS itemloc_qty_xtnumericrole,\n 'cost' AS cost_xtnumericrole,\n 'curr' AS value_xtnumericrole,\n 'red' AS qtforegroundrole \nFROM ( SELECT itemsite_id, itemloc_id, warehous_code, item_number,\n uom_name, ls_number,\n CASE WHEN ='Perishability' THEN \n itemloc_expiration\n ELSE itemloc_warrpurc\n END AS itemloc_expiration,\n itemloc_qty,\n CASE WHEN(itemsite_costmethod='A') THEN 'Average'\n WHEN(itemsite_costmethod='S') THEN 'Standard'\n WHEN(itemsite_costmethod='J') THEN 'Job'\n WHEN(itemsite_costmethod='N') THEN 'None'\n ELSE 'UNKNOWN'\n END AS costmethod,\n \n stdcost(itemsite_item_id) AS cost\n \n actcost(itemsite_item_id) AS cost\n \n (itemsite_value / CASE WHEN(itemsite_qtyonhand=0) THEN 1 ELSE itemsite_qtyonhand END) AS cost\n \n FROM itemloc, itemsite, item, whsinfo, uom, ls\n WHERE ((itemloc_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (itemloc_ls_id=ls_id)\n \n AND (itemsite_perishable)\n AND (itemloc_expiration < (CURRENT_DATE + ))\n \n AND (itemsite_warrpurc)\n AND (itemloc_warrpurc < (CURRENT_DATE + ))\n \n \n AND (itemsite_warehous_id=)\n \n \n AND (item_classcode_id=)\n \n AND (item_classcode_id IN (SELECT classcode_id\n FROM classcode\n WHERE classcode_code ~ ))\n \n )\n ) AS data\nORDER BY warehous_code, item_number;\n admin 2013-07-26 0 246 freightPrices detail used by dspFreightPricesByCustomer, dspFreightPricesByCustomerType Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: freightPrices\n-- Name: detail\n-- Notes: used by dspFreightPricesByCustomer, dspFreightPricesByCustomerType\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT itemid, sourcetype, ipshead_name, source, ipsfreight_qtybreak, ipsfreight_price,\n CASE WHEN (ipsfreight_type = 'F') THEN \n ELSE \n END AS method,\n currConcat(ipshead_curr_id) AS currConcat,\n warehous_code, shipzone_name, freightclass_code, ipsfreight_shipvia,\n 'qty' AS ipsfreight_qtybreak_xtnumericrole,\n AS ipsfreight_qtybreak_xtnullrole,\n 'salesprice' AS ipsfreight_price_xtnumericrole,\n AS warehous_code_xtnullrole,\n AS shipzone_name_xtnullrole,\n AS freightclass_code_xtnullrole,\n AS ipsfreight_shipvia_xtnullrole\nFROM (SELECT ipsfreight_id AS itemid, 1 AS sourcetype,\n ipshead_name,\n\n AS source,\n\n AS source,\n\n ipsfreight_qtybreak, ipsfreight_price,\n ipsfreight_type, ipshead_curr_id,\n warehous_code, shipzone_name, freightclass_code, ipsfreight_shipvia\n FROM ipsass JOIN ipshead ON (ipshead_id=ipsass_ipshead_id)\n JOIN ipsfreight ON (ipsfreight_ipshead_id=ipshead_id)\n LEFT OUTER JOIN whsinfo ON (warehous_id=ipsfreight_warehous_id)\n LEFT OUTER JOIN shipzone ON (shipzone_id=ipsfreight_shipzone_id)\n LEFT OUTER JOIN freightclass ON (freightclass_id=ipsfreight_freightclass_id)\n WHERE ((true)\n\n AND (ipsass_cust_id=)\n AND (COALESCE(LENGTH(ipsass_shipto_pattern), 0) = 0)\n\n AND (ipsass_custtype_id=)\n\n\n AND (ipshead_expires > CURRENT_DATE)\n\n\n AND (ipshead_effective <= CURRENT_DATE)\n\n )\n\n UNION\n\n SELECT ipsfreight_id AS itemid, 2 AS sourcetype,\n ipshead_name,\n\n AS source,\n\n AS source,\n\n ipsfreight_qtybreak, ipsfreight_price,\n ipsfreight_type, ipshead_curr_id,\n warehous_code, shipzone_name, freightclass_code, ipsfreight_shipvia\n FROM ipsass\n\n JOIN custtype ON ((coalesce(length(ipsass_custtype_pattern), 0) > 0) AND\n (custtype_code ~ ipsass_custtype_pattern))\n\n JOIN ipshead ON (ipshead_id=ipsass_ipshead_id)\n JOIN ipsfreight ON (ipsfreight_ipshead_id=ipshead_id)\n\n JOIN custinfo ON (cust_custtype_id=ipsass_custtype_id)\n\n LEFT OUTER JOIN whsinfo ON (warehous_id=ipsfreight_warehous_id)\n LEFT OUTER JOIN shipzone ON (shipzone_id=ipsfreight_shipzone_id)\n LEFT OUTER JOIN freightclass ON (freightclass_id=ipsfreight_freightclass_id)\n WHERE ((true)\n\n AND (cust_id=)\n\n AND (custtype_id=)\n\n\n AND (ipshead_expires > CURRENT_DATE)\n\n\n AND (ipshead_effective <= CURRENT_DATE)\n\n )\n\n UNION\n\n SELECT ipsfreight_id AS itemid, 3 AS sourcetype,\n ipshead_name,\n\n AS source,\n\n ( || '-' || sale_name) AS source,\n\n ipsfreight_qtybreak, ipsfreight_price,\n ipsfreight_type, ipshead_curr_id,\n warehous_code, shipzone_name, freightclass_code, ipsfreight_shipvia\n FROM\n\n custinfo JOIN custtype ON (custtype_id=cust_custtype_id)\n JOIN ipsass ON ((coalesce(length(ipsass_custtype_pattern), 0) > 0) AND\n (custtype_code ~ ipsass_custtype_pattern))\n JOIN ipshead ON (ipshead_id=ipsass_ipshead_id)\n\n sale JOIN ipshead ON (ipshead_id=sale_ipshead_id)\n\n JOIN ipsfreight ON (ipsfreight_ipshead_id=ipshead_id)\n LEFT OUTER JOIN whsinfo ON (warehous_id=ipsfreight_warehous_id)\n LEFT OUTER JOIN shipzone ON (shipzone_id=ipsfreight_shipzone_id)\n LEFT OUTER JOIN freightclass ON (freightclass_id=ipsfreight_freightclass_id)\n WHERE ((true)\n\n AND (cust_id=)\n\n AND (true)\n\n\n \n AND (ipshead_expires > CURRENT_DATE)\n \n AND (sale_enddate > CURRENT_DATE)\n \n\n\n \n AND (ipshead_effective <= CURRENT_DATE)\n \n AND (sale_startdate <= CURRENT_DATE)\n \n\n )\n\n\n UNION\n\n SELECT ipsfreight_id AS itemid, 4 AS sourcetype,\n ipshead_name, ( || '-' || sale_name) AS source,\n ipsfreight_qtybreak, ipsfreight_price,\n ipsfreight_type, ipshead_curr_id,\n warehous_code, shipzone_name, freightclass_code, ipsfreight_shipvia\n FROM sale JOIN ipshead ON (ipshead_id=sale_ipshead_id)\n JOIN ipsfreight ON (ipsfreight_ipshead_id=ipshead_id)\n LEFT OUTER JOIN whsinfo ON (warehous_id=ipsfreight_warehous_id)\n LEFT OUTER JOIN shipzone ON (shipzone_id=ipsfreight_shipzone_id)\n LEFT OUTER JOIN freightclass ON (freightclass_id=ipsfreight_freightclass_id)\n WHERE ((true)\n \n AND (sale_enddate > CURRENT_DATE)\n \n \n AND (sale_startdate <= CURRENT_DATE)\n \n )\n\n ) AS data\nORDER BY ipsfreight_qtybreak, ipsfreight_price;\n admin 2013-07-26 0 249 glseries detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: glseries\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT *, \n CASE WHEN _id = -1 THEN 0\n ELSE 1 END AS xtindentrole,\n CASE WHEN _id = -1 THEN _date\n END AS transdate, \n 'curr' AS debit_xtnumericrole,\n 'curr' AS credit_xtnumericrole \n FROM (SELECT DISTINCT \n _sequence AS sequence, \n -1 AS _id, \n _date, \n _source AS source, \n _journalnumber AS journalnumber,\n _doctype AS doctype, '' AS docnumber,\n -1 AS accnt_id, firstLine(_notes) AS accnt_id_qtdisplayrole,\n 0.0 AS amount,\n CAST(NULL AS NUMERIC) AS debit,\n CAST(NULL AS NUMERIC) AS credit,\n _posted AS posted \n FROM \n WHERE ( (true) \n \n AND (NOT gltrans_deleted) \n \n AND (_date BETWEEN \n AND )\n \n AND (_source=)\n \n \n AND (_journalnumber BETWEEN \n AND )\n \n ) \n UNION ALL \n SELECT _sequence AS sequence, \n _id, \n _date, \n NULL, NULL,\n NULL, _docnumber AS docnumber,\n accnt_id, (formatGLAccount(accnt_id) || ' - ' || accnt_descrip) AS accnt_id_qtdisplayrole,\n _amount,\n CASE WHEN (_amount < 0) THEN (_amount * -1)\n END AS debit,\n CASE WHEN (_amount > 0) THEN _amount \n END AS credit,\n NULL AS posted \n FROM JOIN accnt ON (_accnt_id=accnt_id) \n WHERE ( (true) \n \n AND (NOT gltrans_deleted) \n \n AND (_date BETWEEN \n AND )\n \n AND (_source=)\n \n \n AND (_journalnumber BETWEEN \n AND )\n \n ) \n ) AS dummy \n ORDER BY sequence,\n xtindentrole, amount;\n admin 2013-07-26 0 133 gltransactions detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: gltransactions\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT gltrans_id, gltrans_accnt_id,gltrans_date,gltrans_created,gltrans_source,\n gltrans_doctype,gltrans_journalnumber,gltrans_posted,gltrans_username,\n CASE WHEN(gltrans_docnumber='Misc.' AND\n invhist_docnumber IS NOT NULL) THEN\n (gltrans_docnumber || ' - ' || invhist_docnumber)\n ELSE gltrans_docnumber\n END AS docnumber,\n firstLine(gltrans_notes) AS notes,\n (formatGLAccount(accnt_id) || ' - ' || accnt_descrip) AS account,\n CASE WHEN (gltrans_amount < 0) THEN ABS(gltrans_amount)\n ELSE NULL\n END AS debit,\n CASE WHEN (gltrans_amount > 0) THEN gltrans_amount\n ELSE NULL\n END AS credit,\n CASE WHEN accnt_type IN ('A','E') THEN \n gltrans_amount * -1 \n ELSE gltrans_amount END AS running,\n 'curr' AS debit_xtnumericrole,\n 'curr' AS credit_xtnumericrole,\n 'curr' AS running_xtnumericrole,\n 0 AS running_xtrunningrole,\n gltrans_deleted AS xtdeletedrole,\n AS running_xtrunninginit \nFROM gltrans JOIN accnt ON (gltrans_accnt_id=accnt_id) \n LEFT OUTER JOIN invhist ON (gltrans_misc_id=invhist_id\n AND gltrans_docnumber='Misc.') \n\n JOIN company ON (accnt_company=company_number) \n\n\n JOIN prftcntr ON (accnt_profit=prftcntr_number) \n\n\n JOIN subaccnt ON (accnt_sub=subaccnt_number) \n\n\n JOIN subaccnttype ON (subaccnttype_code=accnt_subaccnttype_code) \n\nWHERE (\n\n \n (gltrans_date BETWEEN \n AND )\n \n (gltrans_date BETWEEN \n AND endoftime())\n \n\n \n (gltrans_date BETWEEN startoftime()\n AND )\n \n (gltrans_date BETWEEN startoftime()\n AND endoftime())\n \n\n\n AND (NOT gltrans_deleted)\n\n\n AND (company_id=)\n\n\n AND (prftcntr_id=)\n\n\n AND (accnt_number=)\n\n\n AND (subaccnt_id=)\n\n\n AND (subaccnttype_id=)\n\n\n AND (accnt_type= )\n\n\n AND (gltrans_accnt_id=)\n\n\n AND (gltrans_docnumber = case when = '' then \n gltrans_docnumber else \n end ) \n\n\n AND (gltrans_source=)\n\n) \nORDER BY\n\n gltrans_date,\n\n gltrans_created DESC,\n\n gltrans_sequence, gltrans_amount;\n admin 2013-07-26 0 100 incidents detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: incidents \n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT DISTINCT ON (incdt_number) incdt_id AS id,\nincdt_number, DATE(incdt_timestamp) AS incdt_timestamp,\ncrmacct_name,\nincdtcat_name, incdtseverity_name, \nincdtpriority_name, crmacct_name, \nCASE WHEN(incdt_status='N') THEN \nWHEN(incdt_status='F') THEN \nWHEN(incdt_status='C') THEN \nWHEN(incdt_status='A') THEN \nWHEN(incdt_status='R') THEN \nWHEN(incdt_status='L') THEN \nELSE incdt_status\nEND,\nincdt_assigned_username, incdt_owner_username,\nincdt_summary, cntct_name, incdt_updated::date AS incdt_updated,\nprj_number, incdt_public,\nitem_number,\n\nls_number,\n\nstatus_color AS qtbackgroundrole \n\n , charass_alias.charass_value AS char\n\n\n , charass_alias.charass_value AS char\n\n\n , charass_alias.charass_value::date AS char\n\nFROM crmacct, status, incdt()\n JOIN cntct ON (incdt_cntct_id=cntct_id)\n LEFT OUTER JOIN incdtcat ON (incdtcat_id=incdt_incdtcat_id) \n LEFT OUTER JOIN incdtseverity ON (incdtseverity_id=incdt_incdtseverity_id) \n LEFT OUTER JOIN incdtpriority ON (incdtpriority_id=incdt_incdtpriority_id) \n LEFT OUTER JOIN prj ON (incdt_prj_id=prj_id)\n LEFT OUTER JOIN item ON (item_id=incdt_item_id)\n\n LEFT OUTER JOIN ls ON (ls_id=incdt_ls_id)\n\n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='INCDT') \n AND (charass_alias.charass_target_id=incdt_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='INCDT') \n AND (charass_alias.charass_target_id=incdt_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='INCDT') \n AND (charass_alias.charass_target_id=incdt_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\nWHERE ((incdt_crmacct_id=crmacct_id)\nAND (status_type='INCDT')\nAND (incdt_status=status_code)\n\nAND (status_seq IN (-1\n , \n ))\n\n \nAND (status_seq = ) \n\n \nAND (status_seq < ) \n\n \nAND (incdt_cntct_id = ) \n\n\nAND ( IN (incdt_assigned_username, incdt_owner_username))\n\n \nAND (incdt_owner_username=) \n\n\nAND (incdt_owner_username ~ ) \n\n \nAND (incdt_assigned_username=) \n\n\nAND (incdt_assigned_username ~ ) \n\n\nAND (incdt_incdtpriority_id IN (-1\n , \n ))\n\n\nAND (incdt_incdtcat_id IN (-1\n , \n ))\n\n \nAND (incdt_incdtcat_id=) \n \n \nAND (incdt_incdtseverity_id=) \n\n \nAND (incdt_crmacct_id=) \n \n \nAND (incdt_prj_id=) \n \n \nAND (incdt_public=) \n \n)\n \n \nAND ((incdt_number::text ~* )\nOR (incdt_summary ~* )\nOR (incdt_descrip ~* )\nOR (incdt_id IN (SELECT comment_source_id\nFROM comment\nWHERE((comment_source='INCDT')\nAND (comment_text ~* )))))\n\n\nAND (incdt_item_id=)\n\n\nAND (ls_number ~* )\n\n\nAND (incdt_id=)\n\nAND (incdt_timestamp BETWEEN COALESCE(, startOfTime()) AND COALESCE(, endOfTime())+1) \n\nORDER BY incdt_number;\n admin 2013-07-26 0 52 inventoryAvailability general Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: inventoryAvailability\n-- Name: general\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT itemsite_id, altId,\n item_number, (item_descrip1 || ' ' || item_descrip2) AS itemdescrip,\n uom_name,\n warehous_id, warehous_code, itemsite_leadtime,\n qoh, allocated, noNeg(qoh - allocated) AS unallocated, \n ordered, requests, reorderlevel, outlevel,\n (qoh - allocated + ordered) AS available,\n vend_number,\n 'qty' AS qoh_xtnumericrole,\n 'qty' AS allocated_xtnumericrole,\n 'qty' AS unallocated_xtnumericrole, \n 'qty' AS ordered_xtnumericrole,\n 'qty' AS requests_xtnumericrole,\n 'qty' AS reorderlevel_xtnumericrole,\n 'qty' AS outlevel_xtnumericrole,\n 'qty' AS available_xtnumericrole,\n \n 'grey' AS qoh_qtforegroundrole,\n \n CASE WHEN ((qoh - allocated + ordered) < 0) THEN 'error'\n WHEN ((qoh - allocated + ordered) <= reorderlevel) THEN 'warning'\n END AS available_qtforegroundrole\nFROM (SELECT \n \n DISTINCT\n \n itemsite_id,\n CASE WHEN (item_type IN ('P', 'O')) THEN 1\n WHEN (item_type IN ('M')) THEN 2\n ELSE 0\n END AS altId,\n item_number, item_descrip1, item_descrip2, item_inv_uom_id,\n warehous_id, warehous_code, itemsite_leadtime,\n itemsite_qtyonhand AS qoh,\n CASE WHEN itemsite_useparams THEN itemsite_reorderlevel\n ELSE 0.0\n END AS reorderlevel,\n CASE WHEN itemsite_useparams THEN itemsite_ordertoqty\n ELSE 0.0\n END AS outlevel,\n \n vend_number,\n \n NULL AS vend_number,\n \n \n qtyAllocated(itemsite_id, itemsite_leadtime) AS allocated,\n qtyOrdered(itemsite_id, itemsite_leadtime) AS ordered, \n qtypr(itemsite_id, itemsite_leadtime) AS requests\n \n qtyAllocated(itemsite_id, CAST( AS INTEGER)) AS allocated,\n qtyOrdered(itemsite_id, CAST( AS INTEGER)) AS ordered,\n qtypr(itemsite_id, CAST( AS INTEGER)) AS requests \n \n qtyAllocated(itemsite_id, ( - CURRENT_DATE)) AS allocated,\n qtyOrdered(itemsite_id, ( - CURRENT_DATE)) AS ordered,\n qtypr(itemsite_id, ( - CURRENT_DATE)) AS requests \n \n qtyAllocated(itemsite_id, , ) AS allocated,\n qtyOrdered(itemsite_id, , ) AS ordered,\n qtypr(itemsite_id, , ) AS requests\n \n FROM item, itemsite, whsinfo\n \n , vendinfo JOIN itemsrc ON (itemsrc_vend_id=vend_id)\n \n WHERE ( (itemsite_active)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n \n AND (warehous_id=)\n \n \n AND (item_id=)\n \n AND (item_classcode_id=)\n \n AND (item_classcode_id IN (SELECT classcode_id\n FROM classcode\n WHERE (classcode_code ~ )))\n \n AND (itemsite_plancode_id=)\n \n AND (itemsite_plancode_id IN (SELECT plancode_id\n FROM plancode\n WHERE (plancode_code ~ )))\n \n AND (item_id IN (SELECT itemgrpitem_item_id\n FROM itemgrpitem\n WHERE (itemgrpitem_itemgrp_id=)))\n \n AND (item_id IN (SELECT itemgrpitem_item_id\n FROM itemgrpitem, itemgrp\n WHERE ( (itemgrpitem_itemgrp_id=itemgrp_id)\n AND (itemgrp_name ~ ) ) ))\n \n AND (item_id IN (SELECT DISTINCT itemgrpitem_item_id FROM itemgrpitem))\n \n \n AND (itemsrc_item_id=item_id)\n \n \n AND (vend_id=)\n \n AND (vend_vendtype_id=)\n \n AND (vend_vendtype_id IN (SELECT vendtype_id\n FROM vendtype\n WHERE (vendtype_code ~ )))\n \n ) ) AS data, uom\nWHERE ((item_inv_uom_id=uom_id)\n\n AND ((qoh - allocated + ordered) <= reorderlevel) \n \n AND NOT ( ((qoh - allocated + ordered) = 0) AND (reorderlevel = 0))\n \n\n AND ((qoh - allocated + ordered) < 0) \n\n)\n\nORDER BY\n\n toNumeric(item_number, 999999999999999),\n\n vend_number,\n\n item_number, warehous_code DESC;\n admin 2013-07-26 0 253 inventoryAvailabilitybyWorkorder detail used by dspInventoryAvailabilityByWorkOrder Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: inventoryAvailabilitybyWorkorder\n-- Name: detail\n-- Notes: used by dspInventoryAvailabilityByWorkOrder\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT *, 'qty' AS woinvav_qoh_xtnumericrole,\n 'qty' AS woinvav_balance_xtnumericrole,\n 'qty' AS woinvav_allocated_xtnumericrole,\n 'qty' AS woinvav_ordered_xtnumericrole,\n 'qty' AS woinvav_woavail_xtnumericrole,\n 'qty' AS woinvav_totalavail_xtnumericrole,\n CASE WHEN (woinvav_womatl_id) = -1 THEN 'altemphasis'\n WHEN (woinvav_qoh < 0) THEN 'error'\n WHEN (woinvav_qoh < woinvav_reorderlevel) THEN 'warning'\n WHEN ((woinvav_qoh - woinvav_balance) < 0) THEN 'altemphasis'\n WHEN ((woinvav_qoh - woinvav_allocated) < 0) THEN 'altemphasis'\n END AS woinvav_qoh_qtforegroundrole,\n CASE WHEN (woinvav_womatl_id) = -1 THEN 'altemphasis'\n WHEN ((woinvav_qoh + woinvav_ordered - woinvav_balance) < 0) THEN 'error'\n WHEN ((woinvav_qoh + woinvav_ordered - woinvav_balance) < woinvav_reorderlevel) THEN 'warning'\n END AS woinvav_woavail_qtforegroundrole,\n CASE WHEN (woinvav_womatl_id) = -1 THEN 'altemphasis'\n WHEN ((woinvav_qoh + woinvav_ordered - woinvav_allocated) < 0) THEN 'error'\n WHEN ((woinvav_qoh + woinvav_ordered - woinvav_allocated) < woinvav_reorderlevel) THEN 'warning'\n END AS woinvav_totalavail_qtforegroundrole,\n CASE WHEN (woinvav_womatl_id = -1) THEN 'altemphasis'\n ELSE null\n END AS qtforegroundrole,\n woinvav_level AS xtindentrole\nFROM woinvavail(,\n\n true,\n\n false,\n\n\n true,\n\n false,\n\n\n true,\n\n false,\n\n\n true\n\n false\n\n ) AS data;\n admin 2013-07-26 0 254 inventoryLocator detail used by dspInventoryLocator Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: inventoryLocator\n-- Name: detail\n-- Notes: used by dspInventoryLocator\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT *,\n AS locationname_xtnullrole,\n AS netable_xtnullrole,\n AS lotserial_xtnullrole,\n AS expiration_xtnullrole,\n AS warranty_xtnullrole,\n CASE WHEN (itemsite_perishable\n AND itemloc_expiration <= CURRENT_DATE) THEN 'error'\n WHEN (itemsite_warrpurc\n AND itemloc_warrpurc <= CURRENT_DATE) THEN 'error'\n END AS qtforegroundrole,\n 'qty' AS qoh_xtnumericrole\nFROM (SELECT itemloc_id, 1 AS type, warehous_code,\n itemsite_perishable, itemloc_expiration,\n itemsite_warrpurc, itemloc_warrpurc,\n CASE WHEN (location_id IS NOT NULL) THEN\n (formatLocationName(location_id) || '-' || firstLine(location_descrip))\n END AS locationname,\n CASE WHEN (location_id IS NOT NULL) THEN location_netable\n END AS netable,\n CASE WHEN (itemsite_controlmethod IN ('L', 'S')) THEN\n formatlotserialnumber(itemloc_ls_id)\n END AS lotserial,\n CASE WHEN (itemsite_perishable) THEN itemloc_expiration\n END AS expiration,\n CASE WHEN (itemsite_warrpurc) THEN itemloc_warrpurc\n END AS warranty,\n itemloc_qty AS qoh\n FROM itemsite, whsinfo,\n itemloc LEFT OUTER JOIN location ON (itemloc_location_id=location_id)\n WHERE ((itemsite_loccntrl OR (itemsite_controlmethod IN ('L', 'S')))\n AND (itemloc_itemsite_id=itemsite_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_item_id=)\n \n AND (itemsite_warehous_id=)\n \n )\n UNION\n SELECT itemsite_id, 2 AS type, warehous_code,\n itemsite_perishable, NULL AS itemloc_expiration,\n itemsite_warrpurc, NULL AS itemloc_warrpurc,\n NULL AS locationname,\n NULL AS netable,\n NULL AS lotserial,\n NULL AS expiration,\n NULL AS warranty,\n itemsite_qtyonhand AS qoh\n FROM itemsite, whsinfo\n WHERE ((NOT itemsite_loccntrl)\n AND (itemsite_controlmethod NOT IN ('L', 'S'))\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_item_id=)\n \n AND (itemsite_warehous_id=)\n \n )\n ) AS dummy\nORDER BY warehous_code, locationname, lotserial;\n admin 2013-07-26 0 255 invoiceInformation detail used by dspInvoiceInformation Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: invoiceInformation\n-- Name: detail\n-- Notes: used by dspInvoiceInformation\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT arapply_id,\n CASE WHEN (arapply_source_doctype = 'C') THEN \n WHEN (arapply_source_doctype = 'R') THEN \n WHEN (arapply_fundstype='C') THEN \n WHEN (arapply_fundstype='T') THEN \n WHEN (arapply_fundstype='M') THEN \n WHEN (arapply_fundstype='V') THEN \n WHEN (arapply_fundstype='A') THEN \n WHEN (arapply_fundstype='D') THEN \n WHEN (arapply_fundstype='R') THEN \n WHEN (arapply_fundstype='K') THEN \n WHEN (arapply_fundstype='W') THEN \n WHEN (arapply_fundstype='O') THEN \n END AS doctype,\n CASE WHEN (arapply_source_doctype IN ('C','R')) THEN arapply_source_docnumber\n WHEN (arapply_source_doctype = 'K') THEN arapply_refnumber\n ELSE \n END AS docnumber,\n arapply_postdate, arapply_applied,\n currConcat(arapply_curr_id) AS currabbr,\n currToBase(arapply_curr_id, arapply_applied, arapply_postdate) AS baseapplied,\n 'curr' AS arapply_applied_xtnumericrole,\n 'curr' AS baseapplied_xtnumericrole\nFROM arapply\nWHERE ((arapply_target_doctype='I')\n AND (arapply_target_docnumber=))\nORDER BY arapply_postdate;\n admin 2013-07-26 0 256 invoiceRegister detail used by dspInvoiceRegister Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: invoiceRegister\n-- Name: detail\n-- Notes: used by dspInvoiceRegister\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT DISTINCT *\nFROM (\n-- G/L Transactions\nSELECT DISTINCT\n -1 AS gltrans_id, -1 AS altId,\n gltrans_date, '' AS gltrans_source,\n '' AS doctype, '' AS gltrans_docnumber,\n '' AS notes, '' AS account,\n CAST(NULL AS NUMERIC) AS debit,\n CAST(NULL AS NUMERIC) AS credit,\n 'curr' AS debit_xtnumericrole,\n 'curr' AS credit_xtnumericrole,\n 0 AS xtindentrole,\n gltrans_date AS transdate\nFROM gltrans\nWHERE ((gltrans_doctype IN ('IN', 'CM', 'DM', 'CD'))\n AND (gltrans_source = 'A/R')\n AND (gltrans_date BETWEEN AND )\n\n AND (gltrans_accnt_id=)\n\n )\n\nUNION\n-- Journals\nSELECT DISTINCT\n -1 AS gltrans_id, -1 AS altId,\n sltrans_date AS gltrans_date, '' AS gltrans_source,\n '' AS doctype, '' AS gltrans_docnumber,\n '' AS notes, '' AS account,\n CAST(NULL AS NUMERIC) AS debit,\n CAST(NULL AS NUMERIC) AS credit,\n 'curr' AS debit_xtnumericrole,\n 'curr' AS credit_xtnumericrole,\n 0 AS xtindentrole,\n sltrans_date AS transdate\nFROM sltrans\nWHERE ((sltrans_doctype IN ('IN', 'CM', 'DM', 'CD'))\n AND (sltrans_source = 'A/R')\n AND (sltrans_date BETWEEN AND )\n\n AND (sltrans_accnt_id=)\n\n )\n) AS data\n\nUNION\n-- G/L Transactions\nSELECT gltrans_id,\n CASE WHEN(gltrans_doctype='IN') THEN 1\n WHEN(gltrans_doctype='CM') THEN 2\n WHEN(gltrans_doctype='DM') THEN 3\n WHEN(gltrans_doctype='CD') THEN 4\n ELSE -1\n END AS altId,\n gltrans_date, gltrans_source,\n CASE WHEN(gltrans_doctype='IN') THEN \n WHEN(gltrans_doctype='CM') THEN \n WHEN(gltrans_doctype='DM') THEN \n WHEN(gltrans_doctype='CD') THEN \n ELSE gltrans_doctype\n END AS doctype,\n gltrans_docnumber,\n CASE WHEN(gltrans_doctype='IN') THEN\n (SELECT invchead_shipto_name\n FROM aropen LEFT OUTER JOIN\n invchead\n ON (invchead_id=aropen_cobmisc_id\n AND invchead_cust_id=aropen_cust_id)\n WHERE ((aropen_docnumber=gltrans_docnumber)\n AND (aropen_doctype='I')))\n ELSE firstLine(gltrans_notes)\n END AS f_notes,\n (formatGLAccount(accnt_id) || ' - ' || accnt_descrip) AS f_accnt,\n CASE WHEN (gltrans_amount < 0) THEN ABS(gltrans_amount)\n ELSE 0\n END AS debit,\n CASE WHEN (gltrans_amount > 0) THEN gltrans_amount\n ELSE 0\n END AS credit,\n 'curr' AS debit_xtnumericrole,\n 'curr' AS credit_xtnumericrole,\n 1 AS xtindentrole,\n NULL AS transdate\nFROM gltrans, accnt\nWHERE ((gltrans_accnt_id=accnt_id)\n AND (gltrans_doctype IN ('IN', 'CM', 'DM', 'CD'))\n AND (gltrans_source = 'A/R')\n AND (gltrans_date BETWEEN AND )\n\n AND (gltrans_accnt_id=)\n\n )\n\nUNION\n-- Journals\nSELECT sltrans_id,\n CASE WHEN(sltrans_doctype='IN') THEN 1\n WHEN(sltrans_doctype='CM') THEN 2\n WHEN(sltrans_doctype='DM') THEN 3\n WHEN(sltrans_doctype='CD') THEN 4\n ELSE -1\n END AS altId,\n sltrans_date AS gltrans_date, sltrans_source AS gltrans_date,\n CASE WHEN(sltrans_doctype='IN') THEN \n WHEN(sltrans_doctype='CM') THEN \n WHEN(sltrans_doctype='DM') THEN \n WHEN(sltrans_doctype='CD') THEN \n ELSE sltrans_doctype\n END AS doctype,\n sltrans_docnumber AS gltrans_docnumber,\n CASE WHEN(sltrans_doctype='IN') THEN\n (SELECT invchead_shipto_name\n FROM aropen LEFT OUTER JOIN\n invchead\n ON (invchead_id=aropen_cobmisc_id\n AND invchead_cust_id=aropen_cust_id)\n WHERE ((aropen_docnumber=sltrans_docnumber)\n AND (aropen_doctype='I')))\n ELSE firstLine(sltrans_notes)\n END AS f_notes,\n (formatGLAccount(accnt_id) || ' - ' || accnt_descrip) AS f_accnt,\n CASE WHEN (sltrans_amount < 0) THEN ABS(sltrans_amount)\n ELSE 0\n END AS debit,\n CASE WHEN (sltrans_amount > 0) THEN sltrans_amount\n ELSE 0\n END AS credit,\n 'curr' AS debit_xtnumericrole,\n 'curr' AS credit_xtnumericrole,\n 1 AS xtindentrole,\n NULL AS transdate\nFROM sltrans, accnt\nWHERE ((sltrans_accnt_id=accnt_id)\n AND (sltrans_doctype IN ('IN', 'CM', 'DM', 'CD'))\n AND (sltrans_source = 'A/R')\n AND (sltrans_date BETWEEN AND )\n\n AND (sltrans_accnt_id=)\n\n )\nORDER BY gltrans_date, gltrans_docnumber, xtindentrole;\n admin 2013-07-26 0 55 invoices detail used by reprintInvoices, unpostedInvoices, dspRecurringInvoices Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: invoices\n-- Name: detail\n-- Notes: used by reprintInvoices, unpostedInvoices, dspRecurringInvoices\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT invchead_id, cust_id,\n invchead.*,\n cust_number, cust_name,\n (TEXT(cust_number) || ' - ' || cust_name) AS customer,\n COALESCE(invchead_gldistdate, invchead_invcdate) AS gldistdate,\n invoicetotal(invchead_id) AS extprice,\n CASE WHEN (aropen_open) THEN (aropen_amount - aropen_paid)\n ELSE 0\n END AS balance,\n (invchead_recurring_invchead_id IS NOT NULL) AS isRecurring,\n recur_freq,\n recur_period,\n CASE WHEN (recur_period='D') THEN \n WHEN (recur_period='W') THEN \n WHEN (recur_period='M') THEN \n WHEN (recur_period='Y') THEN \n WHEN (recur_period='m') THEN \n WHEN (recur_period='H') THEN \n ELSE \n END AS recur_period_qtdisplayrole,\n recur_end,\n \n invchead_invcnumber AS docnumber,\n findCustomerForm(cust_id, 'I') AS reportname,\n \n 'curr' AS extprice_xtnumericrole,\n 'curr' AS balance_xtnumericrole,\n CASE WHEN (aropen_id IS NULL) THEN 'Unposted' END AS balance_qtdisplayrole\nFROM invchead JOIN custinfo ON (cust_id=invchead_cust_id)\n LEFT OUTER JOIN aropen ON ( (aropen_doctype='I') AND (aropen_docnumber=invchead_invcnumber) )\n LEFT OUTER JOIN recur ON (invchead_recurring_invchead_id=recur_parent_id AND recur_parent_type='I')\nWHERE ( (true)\n\n AND (NOT invchead_posted)\n\n\n AND (invchead_posted)\n\n\n AND (invchead_recurring_invchead_id IS NOT NULL)\n\n\n AND (invchead_cust_id=)\n\n\n AND (invchead_invcdate BETWEEN AND )\n\n\n AND (invchead_invcnumber ~ )\n\n\n AND (aropen_open AND (aropen_amount - aropen_paid > 0))\n\n AND (checkInvoiceSitePrivs(invchead_id)) )\nORDER BY invchead_invcnumber\n;\n admin 2013-07-26 0 429 invoices print used by printInvoices Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: invoices\n-- Name: print\n-- Notes: used by printInvoices\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT invchead_id, invchead_id AS docid,\n invchead_invcnumber, invchead_invcnumber AS docnumber,\n invchead_ordernumber, invchead_posted AS posted,\n findCustomerForm(invchead_cust_id, 'I') AS reportname\n FROM invchead\n WHERE (NOT invchead_printed)\n AND (NOT invchead_posted)\n AND (checkInvoiceSitePrivs(invchead_id))\n\n AND (invchead_shipvia=) \n\nORDER BY invchead_ordernumber;\n admin 2013-07-26 0 475 issueToShipping detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: issueToShipping\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT *,\n noNeg(qtyord - qtyshipped + qtyreturned) AS balance,\n 'qty' AS qtyord_xtnumericrole,\n 'qty' AS qtyshipped_xtnumericrole,\n 'qty' AS qtyreturned_xtnumericrole,\n 'qty' AS balance_xtnumericrole,\n 'qty' AS atshipping_xtnumericrole,\n CASE WHEN (scheddate > CURRENT_DATE AND\n noNeg(qtyord - qtyshipped + qtyreturned) <> atshipping) THEN 'future'\n WHEN (noNeg(qtyord - qtyshipped + qtyreturned) <> atshipping) THEN 'expired'\n END AS qtforegroundrole \nFROM (\n\nSELECT coitem_id AS lineitem_id, \n CASE \n WHEN (itemsite_costmethod = 'J') THEN \n 1 \n ELSE \n 0 \n END AS job, \n MIN(s1.shiphead_number) AS shiphead_number, \n formatSoLineNumber(coitem_id) AS linenumber, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescrip,\n warehous_code,\n coitem_scheddate AS scheddate,\n uom_name,\n coitem_qtyord AS qtyord,\n coitem_qtyshipped AS qtyshipped,\n coitem_qtyreturned AS qtyreturned,\n COALESCE(SUM(shipitem_qty), 0) AS atshipping, \n coitem_linenumber AS seq1, coitem_subnumber AS seq2 \nFROM itemsite, item, site(), uom,\n coitem LEFT OUTER JOIN\n ( shipitem JOIN shiphead s1\n ON ( (shipitem_shiphead_id=s1.shiphead_id) \n AND (s1.shiphead_order_type='SO') \n AND (NOT s1.shiphead_shipped) )\n ) ON (shipitem_orderitem_id=coitem_id) \n-- TODO - need a facility to select which shipment you are working on\n-- LEFT OUTER JOIN shiphead s2 ON ((s2.shiphead_order_id=coitem_cohead_id) \n-- AND (s2.shiphead_order_type='SO') \n-- AND (NOT s2.shiphead_shipped )) \nWHERE ( (coitem_itemsite_id=itemsite_id)\n AND (coitem_qty_uom_id=uom_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (coitem_status NOT IN ('C','X'))\n AND (item_type != 'K')\n AND (coitem_cohead_id=) ) \nGROUP BY coitem_id, linenumber, item_number,\n item_descrip1, item_descrip2, warehous_code,\n coitem_scheddate, uom_name,\n coitem_qtyord, coitem_qtyshipped, coitem_qtyreturned, \n coitem_linenumber, coitem_subnumber, \n-- s2.shiphead_number, \n itemsite_costmethod, itemsite_controlmethod \n\nSELECT toitem_id AS lineitem_id, \n 0 AS lsJob, \n MIN(s1.shiphead_number) AS shiphead_number, \n toitem_linenumber AS linenumber, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescrip,\n tohead_srcname AS warehous_code,\n toitem_schedshipdate AS scheddate,\n uom_name,\n toitem_qty_ordered AS qtyord,\n toitem_qty_shipped AS qtyshipped,\n 0 AS qtyreturned,\n COALESCE(SUM(shipitem_qty), 0) AS atshipping, \n toitem_linenumber AS seq1, 0 AS seq2 \nFROM item, tohead, site(), uom,\n toitem LEFT OUTER JOIN\n ( shipitem JOIN shiphead s1\n ON ( (shipitem_shiphead_id=s1.shiphead_id) \n AND (s1.shiphead_order_type='TO') \n AND (NOT s1.shiphead_shipped) )\n ) ON (shipitem_orderitem_id=toitem_id) \n-- TODO - need a facility to select which shipment you are working on\n-- LEFT OUTER JOIN shiphead s2 ON ((s2.shiphead_order_id=toitem_tohead_id) \n-- AND (s2.shiphead_order_type='TO') \n-- AND (NOT s2.shiphead_shipped )) \nWHERE ( (toitem_item_id=item_id)\n AND (toitem_status NOT IN ('C','X'))\n AND (toitem_tohead_id=tohead_id)\n AND (tohead_src_warehous_id=warehous_id)\n AND (item_inv_uom_id=uom_id)\n AND (tohead_id=) ) \nGROUP BY toitem_id, toitem_linenumber, item_number,\n item_descrip1, item_descrip2, tohead_srcname,\n toitem_schedshipdate, uom_name,\n toitem_qty_ordered, toitem_qty_shipped \n-- s2.shiphead_number \n\n) AS sub \nORDER BY scheddate, seq1, seq2;\n admin 2013-07-26 0 257 itemCost detail used by dspItemCostSummary, dspItemCostsByClassCode, dspItemCostHistory Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: itemCost\n-- Name: detail\n-- Notes: used by dspItemCostSummary, dspItemCostsByClassCode, dspItemCostHistory\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT \n \n costhist_id, costelem_type,\n formatBoolYN(costhist_lowlevel) AS lowlevel,\n CASE WHEN costhist_type='A' THEN \n WHEN costhist_type='S' THEN \n WHEN costhist_type='D' THEN \n WHEN costhist_type='N' THEN \n END AS type,\n costhist_date,\n costhist_username AS username,\n costhist_oldcost,\n currConcat(costhist_oldcurr_id) AS oldcurr, \n\tcosthist_newcost,\n currConcat(costhist_newcurr_id) AS newcurr,\n 'cost' AS costhist_oldcost_xtnumericrole,\n 'cost' AS costhist_newcost_xtnumericrole\n \n item_id, item_number, description, item_active, \n uom_name, scost, acost, \n CASE WHEN (scost = 0) THEN NULL \n ELSE ((acost - scost) / scost) \n END AS percent_variance,\n 'percent' AS percent_variance_xtnumericrole, \n CASE WHEN (scost = 0) THEN NULL \n WHEN (((acost - scost) / scost) < 0) THEN 'error' \n ELSE NULL \n END AS percent_variance_qtforegroundrole, \n \n CASE WHEN (scost != acost\n AND ABS(scost - acost) < 10 ^ (-1 * ))\n THEN 'altemphasis' \n END AS qtforegroundrole,\n \n 'cost' AS scost_xtnumericrole,\n 'cost' AS acost_xtnumericrole \n \n itemcost_id,\n CASE WHEN (costelem_sys) THEN 1\n ELSE 0\n END,\n costelem_type, formatBoolYN(itemcost_lowlevel) AS lowlevel,\n itemcost_stdcost,\n currToBase(itemcost_curr_id, itemcost_actcost, NULL) AS itemcost_actcost,\n itemcost_updated, itemcost_posted,\n 'cost' AS itemcost_stdcost_xtnumericrole,\n 'cost' AS itemcost_actcost_xtnumericrole,\n 0 AS itemcost_stdcost_xttotalrole,\n 0 AS itemcost_actcost_xttotalrole,\n CASE WHEN COALESCE(itemcost_posted, endOfTime()) >= endOfTime() \n THEN \n END AS itemcost_posted_qtdisplayrole,\n CASE WHEN COALESCE(itemcost_updated, endOfTime()) >= endOfTime()\n THEN \n END AS itemcost_updated_qtdisplayrole\n \nFROM \n (SELECT item_id, item_number, item_active,\n (item_descrip1 || ' ' || item_descrip2) AS description,\n uom_name, stdcost(item_id) AS scost, actcost(item_id) AS acost\n FROM item, classcode, uom\n WHERE ((item_classcode_id=classcode_id)\n AND (item_inv_uom_id=uom_id)\n \n AND (classcode_id=)\n \n AND (classcode_code ~ )\n \n ) ) AS data \n \n costhist,costelem\n \n itemcost, costelem\n \nWHERE ( \n (costhist_costelem_id=costelem_id)\n AND (costhist_item_id=)\n \n true \n \n AND ((scost=0) OR (acost=0)) \n \n \n AND (scost != acost) \n AND (ABS(scost - acost) > 10 ^ (-1 * ))\n \n \n AND (item_active) \n \n \n (itemcost_costelem_id=costelem_id)\n AND (itemcost_item_id=)\n \n ) \nORDER BY \n costhist_date, costelem_type;\n \n item_number;\n \n itemcost_lowlevel, costelem_type;\n \n admin 2013-07-26 0 457 itemCost list used by maintainItemCosts, bomItem Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: itemCost\n-- Name: list\n-- Notes: used by maintainItemCosts, bomItem\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n-- The order of checking for item_id first is important.\n\n\n\nSELECT itemcost_id,\n CASE WHEN (costelem_sys) THEN 1\n ELSE 0\n END,\n CASE WHEN itemcost_costelem_id = -1 THEN :error\n\t ELSE costelem_type\n END AS costelem_type, itemcost_lowlevel,\n itemcost_stdcost, currConcat(baseCurrID()) AS baseCurr,\n itemcost_posted,\n itemcost_actcost, currConcat(itemcost_curr_id) AS costCurr,\n itemcost_updated,\n currToBase(itemcost_curr_id, itemcost_actcost, CURRENT_DATE) AS actcostBase,\n itemcost_curr_id,\n CASE WHEN (COALESCE(itemcost_posted, startOfTime()) <= startOfTime()) THEN :never\n END AS itemcost_posted_qtdisplayrole,\n 'cost' AS itemcost_stdcost_xtnumericrole,\n 'cost' AS itemcost_actcost_xtnumericrole\nFROM itemcost LEFT OUTER JOIN costelem ON (itemcost_costelem_id=costelem_id)\nWHERE (itemcost_item_id=)\nORDER BY itemcost_lowlevel, costelem_type;\n\n\n\nSELECT bomitemcost_id AS itemcost_id,\n CASE WHEN (costelem_sys) THEN 1\n ELSE 0\n END,\n CASE WHEN bomitemcost_costelem_id = -1 THEN :error\n\t ELSE costelem_type\n END AS costelem_type,\n bomitemcost_lowlevel AS itemcost_lowlevel,\n bomitemcost_stdcost AS itemcost_stdcost, currConcat(baseCurrID()) AS baseCurr,\n bomitemcost_posted AS itemcost_posted,\n bomitemcost_actcost AS itemcost_actcost,\n currConcat(bomitemcost_curr_id) AS costCurr,\n bomitemcost_updated AS itemcost_updated,\n currToBase(bomitemcost_curr_id, bomitemcost_actcost, CURRENT_DATE) AS actcostBase,\n bomitemcost_curr_id AS itemcost_curr_id,\n CASE WHEN (COALESCE(bomitemcost_posted, startOfTime()) <= startOfTime()) THEN :never\n END AS itemcost_posted_qtdisplayrole,\n 'cost' AS itemcost_stdcost_xtnumericrole,\n 'cost' AS itemcost_actcost_xtnumericrole\nFROM bomitemcost LEFT OUTER JOIN costelem ON (bomitemcost_costelem_id=costelem_id)\nWHERE (bomitemcost_bomitem_id=)\nORDER BY bomitemcost_lowlevel, costelem_type;\n\n\n admin 2013-07-26 0 415 glseries postjournal Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: glseries\n-- Name: postjournal\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT postJournals() AS result;\n admin 2013-07-26 0 430 itemPricingSchedule detail used by itemPricingSchedule Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: itemPricingSchedule\n-- Name: detail\n-- Notes: used by itemPricingSchedule\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT ipsitem_id AS id, 1 AS altid,\n CASE WHEN (ipsitem_item_id IS NOT NULL) THEN \n ELSE \n END AS target,\n COALESCE(item_number, prodcat_code) AS number,\n COALESCE(item_descrip1 || ' ' || item_descrip2, prodcat_descrip) AS descrip,\n qty.uom_name AS qtyuom, ipsitem_qtybreak AS qtybreak,\n price.uom_name AS priceuom,\n ((COALESCE(ipsitem_discntprcnt, 0.0) * 100) + ipsitem_price) AS price,\n (COALESCE(ipsitem_fixedamtdiscount, 0.0) + 0.00) AS fixedAmt,\n noNeg(CASE WHEN (ipsitem_type='N') THEN\n ipsitem_price\n WHEN (ipsitem_type='D') THEN\n (item_listprice - (item_listprice * COALESCE(ipsitem_discntprcnt, 0.0)) - COALESCE(ipsitem_fixedamtdiscount, 0.0))\n WHEN ((ipsitem_type = 'M') AND (ipsitem_discntprcnt <= 0.5) AND fetchMetricBool('Long30Markups') AND fetchMetricBool('WholesalePriceCosting')) THEN\n (item_listcost / (1.0 - ipsitem_discntprcnt) + ipsitem_fixedamtdiscount)\n WHEN ((ipsitem_type = 'M') AND (ipsitem_discntprcnt <= 0.5) AND fetchMetricBool('Long30Markups')) THEN\n (itemCost(itemsite_id) / (1.0 - ipsitem_discntprcnt) + ipsitem_fixedamtdiscount)\n WHEN (ipsitem_type = 'M' AND fetchMetricBool('WholesalePriceCosting')) THEN\n (item_listcost + (item_listcost * ipsitem_discntprcnt) + ipsitem_fixedamtdiscount)\n WHEN (ipsitem_type = 'M') THEN\n (itemCost(itemsite_id) + (itemCost(itemsite_id) * ipsitem_discntprcnt) + ipsitem_fixedamtdiscount)\n ELSE 0.0\n END) AS netPrice,\n CASE WHEN (ipsitem_type='N') THEN \n WHEN (ipsitem_type='D') THEN \n WHEN (ipsitem_type='M') THEN \n ELSE 'error'\n END AS type,\n CASE WHEN (ipsitem_type='N') THEN \n WHEN ((ipsitem_type IN ('D', 'M')) AND (COALESCE(ipsitem_discntprcnt, 0.0)=0.0) AND (COALESCE(ipsitem_fixedamtdiscount, 0.0)<>0.0)) THEN \n WHEN ((ipsitem_type IN ('D', 'M')) AND (COALESCE(ipsitem_discntprcnt, 0.0)<>0.0) AND (COALESCE(ipsitem_fixedamtdiscount, 0.0)=0.0)) THEN \n WHEN (ipsitem_type IN ('D', 'M')) THEN \n ELSE 'error'\n END AS method,\n 'qty' AS qtybreak_xtnumericrole,\n 'salesprice' AS netPrice_xtnumericrole,\n 'salesprice' AS price_xtnumericrole\nFROM ipsiteminfo LEFT OUTER JOIN item ON (item_id=ipsitem_item_id)\n LEFT OUTER JOIN prodcat ON (prodcat_id=ipsitem_prodcat_id)\n LEFT OUTER JOIN uom AS qty ON (qty.uom_id=ipsitem_qty_uom_id)\n LEFT OUTER JOIN uom AS price ON (price.uom_id=ipsitem_price_uom_id)\n LEFT OUTER JOIN itemsite ON (itemsite_item_id=item_id AND itemsite_warehous_id=)\nWHERE (ipsitem_ipshead_id=)\n\nUNION\n\nSELECT ipsfreight_id AS id, 2 AS altid, AS type,\n CASE WHEN (ipsfreight_type='F') THEN \n ELSE \n END AS number,\n ('From ' || COALESCE(warehous_code, ) || ' To ' || COALESCE(shipzone_name, )) AS descrip,\n CASE WHEN (ipsfreight_type='P') THEN uom_name END AS qtyuom,\n CASE WHEN (ipsfreight_type='P') THEN ipsfreight_qtybreak END AS qtybreak,\n uom_name AS priceuom, ipsfreight_price AS price,\n 0.00 AS fixedAmt,\n NULL AS netPrice,\n NULL AS type,\n NULL AS method,\n 'weight' AS qtybreak_xtnumericrole,\n 'salesprice' AS netPrice_xtnumericrole,\n 'salesprice' AS price_xtnumericrole\nFROM ipsfreight LEFT OUTER JOIN uom ON (uom_item_weight)\n LEFT OUTER JOIN whsinfo ON (warehous_id=ipsfreight_warehous_id)\n LEFT OUTER JOIN shipzone ON (shipzone_id=ipsfreight_shipzone_id)\nWHERE ( (ipsfreight_ipshead_id=) )\nORDER BY altid, number, qtybreak;\n admin 2013-07-26 0 56 itemReceipt populateEdit used by enterPoitemReceipt, splitReceipt ----PURCHASE ORDER---------- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: itemReceipt\n-- Name: populateEdit\n-- Notes: used by enterPoitemReceipt, splitReceipt\n------PURCHASE ORDER----------\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT pohead_number AS order_number, poitem_linenumber AS orderitem_linenumber,\n (poitem_itemsite_id > 0) AS inventoryitem,\n COALESCE(poitem_itemsite_id, -1) AS itemsiteid,\n COALESCE(poitem_vend_item_number, '') AS vend_item_number,\n COALESCE(poitem_vend_uom, '') AS vend_uom,\n COALESCE(poitem_vend_item_descrip, '') AS vend_item_descrip,\n poitem_invvenduomratio AS orderitem_qty_invuomratio,\n poitem_duedate AS duedate,\n poitem_qty_ordered AS orderitem_qty_ordered,\n recv_qty AS qtyreceived,\n poitem_qty_returned AS qtyreturned,\n qtyToReceive('PO', poitem_id) AS qtytoreceive,\n (poitem_qty_ordered) AS receivable,\n recv_notes AS notes, recv_freight, recv_order_type,\n recv_freight_curr_id AS curr_id, recv_date AS effective,\n recv_purchcost, recv_purchcost_curr_id,\n CASE WHEN (itemsite_costmethod='A' AND NOT(recv_posted)) THEN TRUE\n ELSE FALSE\n END AS costmethod_average,\n 'uomratio' AS orderitem_qty_invuomratio_xtnumericrole,\n 'qty' AS orderitem_qty_ordered_xtnumericrole, \n 'qty' AS qtyreceived_xtnumericrole, \n 'qty' AS qtyreturned_xtnumericrole, \n 'qty' AS qtytoreceive_xtnumericrole, \n 'qty' AS receivable_xtnumericrole,\n 'purchprice' AS recv_purchcost_xtnumericrole \nFROM recv \n JOIN poitem ON ((recv_orderitem_id=poitem_id)\n AND (recv_order_type='PO'))\n JOIN pohead ON (poitem_pohead_id=pohead_id)\n LEFT OUTER JOIN itemsite ON (poitem_itemsite_id=itemsite_id)\nWHERE (recv_id=)\n\nUNION\n-------RETURN AUTHORIZATIONS-----------\nSELECT rahead_number AS order_number, raitem_linenumber AS orderitem_linenumber,\n (raitem_itemsite_id > 0) AS inventoryitem,\n COALESCE(raitem_itemsite_id, -1) AS itemsiteid,\n '' AS vend_item_number,\n '' AS vend_uom,\n '' AS vend_item_descrip,\n raitem_qty_invuomratio AS orderitem_qty_invuomratio,\n raitem_scheddate AS duedate,\n raitem_qtyauthorized AS orderitem_qty_ordered,\n recv_qty AS qtyreceived,\n 0 AS qtyreturned,\n qtyToReceive('RA', raitem_id) AS qtytoreceive,\n (raitem_qtyauthorized) AS receivable,\n recv_notes AS notes, recv_freight, recv_order_type,\n recv_freight_curr_id AS curr_id, recv_date AS effective,\n NULL AS recv_purchcost, NULL AS recv_purchcost_curr_id,\n NULL AS costmethod_average,\n 'uomratio' AS orderitem_qty_invuomratio_xtnumericrole,\n 'qty' AS orderitem_qty_ordered_xtnumericrole, \n 'qty' AS qtyreceived_xtnumericrole, \n 'qty' AS qtyreturned_xtnumericrole, \n 'qty' AS qtytoreceive_xtnumericrole, \n 'qty' AS receivable_xtnumericrole,\n 'purchprice' AS recv_purchcost_xtnumericrole \nFROM recv\n JOIN raitem ON ((recv_orderitem_id=raitem_id)\n AND (recv_order_type='RA'))\n JOIN rahead ON (raitem_rahead_id=rahead_id)\nWHERE (recv_id=)\n\n\nUNION\n----------TRANSFER ORDERS---------\nSELECT tohead_number AS order_number, toitem_linenumber AS orderitem_linenumber,\n (itemsite_id > 0) AS inventoryitem,\n itemsite_id AS itemsiteid,\n '' AS vend_item_number,\n '' AS vend_uom,\n '' AS vend_item_descrip,\n 1 AS orderitem_qty_invuomratio,\n toitem_duedate AS duedate,\n toitem_qty_ordered AS orderitem_qty_ordered,\n recv_qty AS qtyreceived,\n 0 AS qtyreturned,\n qtyToReceive('TO', toitem_id) AS qtytoreceive,\n (toitem_qty_ordered) AS receivable,\n recv_notes AS notes, recv_freight, recv_order_type,\n recv_freight_curr_id AS curr_id, recv_date AS effective,\n NULL AS recv_purchcost, NULL AS recv_purchcost_curr_id,\n NULL AS costmethod_average,\n 'uomratio' AS orderitem_qty_invuomratio_xtnumericrole,\n 'qty' AS orderitem_qty_ordered_xtnumericrole, \n 'qty' AS qtyreceived_xtnumericrole, \n 'qty' AS qtyreturned_xtnumericrole, \n 'qty' AS qtytoreceive_xtnumericrole, \n 'qty' AS receivable_xtnumericrole,\n 'purchprice' AS recv_purchcost_xtnumericrole \nFROM itemsite, recv\n JOIN toitem ON ((recv_orderitem_id=toitem_id)\n AND (recv_order_type='TO'))\n JOIN tohead ON (toitem_tohead_id=tohead_id)\nWHERE ((recv_id=)\n AND (tohead_dest_warehous_id=itemsite_warehous_id)\n AND (toitem_item_id=itemsite_item_id))\n;\n admin 2013-07-26 0 57 itemReceipt populateNew used by enterPoitemReceipt -------PURCHASE ORDERS------------- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: itemReceipt\n-- Name: populateNew\n-- Notes: used by enterPoitemReceipt\n---------PURCHASE ORDERS-------------\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT pohead_number AS order_number, poitem_linenumber AS orderitem_linenumber,\n (poitem_itemsite_id > 0) AS inventoryitem,\n COALESCE(poitem_itemsite_id, -1) AS itemsiteid,\n COALESCE(poitem_vend_item_number, '') AS vend_item_number,\n COALESCE(poitem_vend_uom, '') AS vend_uom,\n COALESCE(poitem_vend_item_descrip, '') AS vend_item_descrip,\n poitem_invvenduomratio AS orderitem_qty_invuomratio,\n poitem_duedate AS duedate,\n poitem_qty_ordered AS orderitem_qty_ordered,\n poitem_qty_received AS qtyreceived,\n poitem_qty_returned AS qtyreturned,\n qtyToReceive('PO', poitem_id) AS qtytoreceive,\n (poitem_qty_ordered - poitem_qty_received) AS receivable,\n ( SELECT recv_notes\n FROM recv\n WHERE ((recv_orderitem_id=poitem_id)\n\t AND (recv_order_type='PO')\n AND (NOT recv_posted))\n\t LIMIT 1 ) AS notes,\n COALESCE(freightForRecv('PO', poitem_id, false),\n\t\tpoitem_freight - freightForRecv('PO', poitem_id, true),\n\t\tfreightForRecv('PO', poitem_id, true)) AS recv_freight,\n pohead_curr_id AS curr_id, CURRENT_DATE AS effective, \n poitem_unitprice AS recv_purchcost,\n pohead_curr_id AS recv_purchcost_curr_id,\n CASE WHEN (itemsite_costmethod='A') THEN TRUE \n\t ELSE FALSE \n END AS costmethod_average,\n 'uomratio' AS orderitem_qty_invuomratio_xtnumericrole,\n 'qty' AS orderitem_qty_ordered_xtnumericrole, \n 'qty' AS qtyreceived_xtnumericrole, \n 'qty' AS qtyreturned_xtnumericrole, \n 'qty' AS qtytoreceive_xtnumericrole, \n 'qty' AS receivable_xtnumericrole,\n 'purchprice' AS recv_purchcost_xtnumericrole \nFROM pohead\n JOIN poitem ON (pohead_id=poitem_pohead_id)\n LEFT OUTER JOIN itemsite ON (poitem_itemsite_id=itemsite_id)\nWHERE ((poitem_status <> 'C')\n AND (poitem_id=)\n AND ('PO'=) )\n\nUNION\n---------RETURN AUTHORIZATIONS-------------\nSELECT rahead_number AS order_number, raitem_linenumber AS orderitem_linenumber,\n (raitem_itemsite_id > 0) AS inventoryitem,\n COALESCE(raitem_itemsite_id, -1) AS itemsiteid,\n '' AS vend_item_number,\n '' AS vend_uom,\n '' AS vend_item_descrip,\n raitem_qty_invuomratio AS orderitem_qty_invuomratio,\n raitem_scheddate AS duedate,\n raitem_qtyauthorized AS orderitem_qty_ordered,\n raitem_qtyreceived AS qtyreceived,\n 0 AS qtyreturned,\n qtyToReceive('RA', raitem_id) AS qtytoreceive,\n (raitem_qtyauthorized - raitem_qtyreceived) AS receivable,\n ( SELECT recv_notes\n FROM recv\n WHERE ((recv_orderitem_id=raitem_id)\n\t AND (recv_order_type='RA')\n AND (NOT recv_posted))\n\t LIMIT 1 ) AS notes,\n COALESCE(freightForRecv('RA', raitem_id, false),\n\t\tfreightForRecv('RA', raitem_id, true)) AS recv_freight,\n rahead_curr_id AS curr_id, CURRENT_DATE AS effective, \n NULL AS recv_purchcost, NULL AS recv_purchcost_curr_id,\n NULL AS costmethod_average,\n 'uomratio' AS orderitem_qty_invuomratio_xtnumericrole,\n 'qty' AS orderitem_qty_ordered_xtnumericrole, \n 'qty' AS qtyreceived_xtnumericrole, \n 'qty' AS qtyreturned_xtnumericrole, \n 'qty' AS qtytoreceive_xtnumericrole, \n 'qty' AS receivable_xtnumericrole,\n 'purchprice' AS recv_purchcost_xtnumericrole \nFROM rahead\n JOIN raitem ON (rahead_id=raitem_rahead_id)\nWHERE ((raitem_status <> 'C')\n AND (raitem_id=)\n AND ('RA'=) )\n\n\nUNION\n-------------TRANSFER ORDERS--------------\nSELECT tohead_number AS order_number, toitem_linenumber AS orderitem_linenumber,\n (itemsite_id > 0) AS inventoryitem,\n COALESCE(itemsite_id, -1) AS itemsiteid,\n '' AS vend_item_number,\n '' AS vend_uom,\n '' AS vend_item_descrip,\n 1 AS orderitem_qty_invuomratio,\n toitem_duedate AS duedate,\n toitem_qty_ordered AS orderitem_qty_ordered,\n toitem_qty_received AS qtyreceived,\n toitem_qty_shipped AS qtyreturned,\n qtyToReceive('TO', toitem_id) AS qtytoreceive,\n (toitem_qty_ordered - toitem_qty_received) AS receivable,\n ( SELECT recv_notes\n FROM recv\n WHERE ((recv_orderitem_id=toitem_id)\n\t AND (recv_order_type='TO')\n AND (NOT recv_posted))\n\t LIMIT 1 ) AS notes,\n COALESCE(freightForRecv('TO', toitem_id, false),\n\t\tfreightForRecv('TO', toitem_id, true)) AS recv_freight,\n baseCurrId() AS curr_id, CURRENT_DATE AS effective, \n NULL AS recv_purchcost, NULL AS recv_purchcost_curr_id,\n NULL AS costmethod_average,\n 'uomratio' AS orderitem_qty_invuomratio_xtnumericrole,\n 'qty' AS orderitem_qty_ordered_xtnumericrole, \n 'qty' AS qtyreceived_xtnumericrole, \n 'qty' AS qtyreturned_xtnumericrole, \n 'qty' AS qtytoreceive_xtnumericrole, \n 'qty' AS receivable_xtnumericrole,\n 'purchprice' AS recv_purchcost_xtnumericrole \nFROM itemsite, tohead\n JOIN toitem ON (tohead_id=toitem_tohead_id) \nWHERE ((toitem_status NOT IN ('C', 'X'))\n AND (toitem_id=)\n AND ('TO'=)\n AND (tohead_dest_warehous_id=itemsite_warehous_id)\n AND (toitem_item_id=itemsite_item_id))\n;\n admin 2013-07-26 0 259 itemSites detail Notes: Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: itemSites\n-- Name: detail\n-- Notes:\n-- Notes:\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT itemsite_id,warehous_code,itemsite_qtyonhand, itemsite_active, \n CASE WHEN ( (itemsite_loccntrl) OR\n (itemsite_controlmethod IN ('L', 'S')) ) THEN 1\n ELSE 0\n END AS altId,\n CASE WHEN itemsite_controlmethod='R' THEN \n WHEN itemsite_controlmethod='N' THEN \n WHEN itemsite_controlmethod='L' THEN \n WHEN itemsite_controlmethod='S' THEN \n END AS controlmethod,\n itemsite_loccntrl,\n item_number,\n (item_descrip1 || ' ' || item_descrip2) AS description, \n uom_name,\n CASE WHEN (itemsite_sold) THEN TEXT(itemsite_soldranking)\n END AS soldranking,\n CASE WHEN (itemsite_datelastcount=startOfTime()) THEN NULL\n ELSE itemsite_datelastcount\n END AS datelastcount,\n CASE WHEN (itemsite_datelastused=startOfTime()) THEN NULL\n ELSE itemsite_datelastused\n END AS datelastused,\n itemsite_abcclass, itemsite_cyclecountfreq,\n 'qty' AS itemsite_qtyonhand_xtnumericrole,\n AS soldranking_xtnullrole,\n AS datelastused_xtnullrole,\n AS datelastcount_xtnullrole \nFROM item, uom, itemsite, whsinfo\nWHERE ((itemsite_warehous_id=warehous_id)\n AND (itemsite_item_id=item_id)\n AND(item_inv_uom_id=uom_id)\n \n AND ((item_number ~* )\n OR (COALESCE(item_descrip1,'') || ' ' || COALESCE(item_descrip2,'') ~* )\n OR (warehous_code ~* ))\n \n \n AND (item_id=)\n \n \n AND (item_classcode_id=)\n \n \n AND (item_id IN (SELECT itemgrpitem_item_id \n FROM itemgrpitem \n WHERE (itemgrpitem_itemgrp_id=)))\n \n \n AND (itemsite_plancode_id=)\n \n \n AND (itemsite_costcat_id=)\n \n \n AND (item_classcode_id IN (SELECT classcode_id \n FROM classcode \n WHERE (classcode_code ~ )))\n \n \n AND (item_id IN (SELECT itemgrpitem_item_id \n FROM itemgrpitem, itemgrp \n WHERE ( (itemgrpitem_itemgrp_id=itemgrp_id) \n AND (itemgrp_name ~ ) ) ))\n \n \n AND (itemsite_plancode_id IN (SELECT plancode_id \n FROM plancode \n WHERE (plancode_code ~ )))\n \n \n AND (itemsite_costcat_id IN (SELECT costcat_id \n FROM costcat \n WHERE (costcat_code ~ )))\n \n \n AND (warehous_id=)\n \n \n AND (itemsite_active)\n \n )\nORDER BY item_number, warehous_code;\n admin 2013-07-26 0 252 invalidBillsofMaterials detail used by dspInvalidBillsOfMaterials Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: invalidBillsofMaterials\n-- Name: detail\n-- Notes: used by dspInvalidBillsOfMaterials\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT itemsite_id, parent.item_id AS pitem_id,\n component.item_id AS citem_id,\n warehous_id, warehous_code,\n parent.item_number AS parentitem,\n component.item_number AS componentitem,\n (component.item_descrip1 || ' ' || component.item_descrip2) AS descrip\nFROM bomitem, itemsite, item AS parent, item AS component, whsinfo\nWHERE ((bomitem_parent_item_id=parent.item_id)\n AND (bomitem_item_id=component.item_id)\n AND (CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires - 1))\n AND (itemsite_item_id=parent.item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (parent.item_type='M')\n AND (itemsite_wosupply)\n AND (itemsite_active)\n AND (component.item_id NOT IN ( SELECT itemsite_item_id\n FROM itemsite\n WHERE ((itemsite_warehous_id=warehous_id)\n AND (itemsite_active)) ) ) \n\n AND (warehous_id=)\n\n )\nORDER BY warehous_code, parentitem, componentitem;\n admin 2013-07-26 0 51 inventoryAvailability byCustOrSO query to get item availability by either customer id/type/pattern or by cohead_id Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: inventoryAvailability\n-- Name: byCustOrSO\n-- Notes: query to get item availability by either customer id/type/pattern\n-- or by cohead_id\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT id, altid, cohead_id,\n item_number, descrip, uom_name,\n qoh, sobalance, allocated, ordered,\n atshipping,\n CASE WHEN (xtindentrole=1) THEN\n\n coitem_qtyreserved\n\n (qoh + ordered - sobalance)\n\n WHEN (xtindentrole=2) THEN (qoh + ordered - sobalance)\n END AS orderavail,\n (qoh + ordered - allocated) AS totalavail,\n orderdate, duedate,\n reorderlevel,\n (xtindentrole - 1) AS xtindentrole, \n 'qty' AS qoh_xtnumericrole,\n 'qty' AS sobalance_xtnumericrole,\n 'qty' AS allocated_xtnumericrole,\n 'qty' AS ordered_xtnumericrole,\n 'qty' AS orderavail_xtnumericrole,\n 'qty' AS totalavail_xtnumericrole,\n 'qty' AS atshipping_xtnumericrole,\n CASE WHEN (pack_id IS NOT NULL) THEN 'altemphasis'\n END AS qtforegroundrole,\n CASE WHEN (qoh < 0) THEN 'error'\n WHEN (qoh < reorderlevel) THEN 'warning'\n END AS qoh_qtforegroundrole,\n CASE WHEN (\n\n coitem_qtyreserved < 0\n\n (qoh + ordered - sobalance) < 0\n\n ) THEN 'error'\n WHEN ((qoh + ordered - sobalance) <= reorderlevel) THEN 'warning'\n END AS orderavail_qtforegroundrole,\n CASE WHEN ((qoh + ordered - allocated) < 0) THEN 'error'\n WHEN ((qoh + ordered - allocated) <= reorderlevel) THEN 'warning'\n END AS totalavail_qtforegroundrole,\n CASE WHEN (xtindentrole = 2 AND (orderdate <= CURRENT_DATE)\n AND (descrip IN ('O','E','S','R'))) THEN 'error'\n END AS atshipping_qtforegroundrole,\n CASE WHEN (xtindentrole = 2 AND duedate<=CURRENT_DATE) THEN 'error'\n END AS orderdate_qtforegroundrole,\n CASE WHEN (xtindentrole = 2 AND duedate<=CURRENT_DATE) THEN 'error'\n END AS duedate_qtforegroundrole,\n\n CASE WHEN (coitem_qtyreserved > 0\n AND sobalance > coitem_qtyreserved) THEN 'emphasis'\n WHEN ((sobalance <> 0)\n AND ((sobalance - coitem_qtyreserved) = 0)) THEN 'altemphasis'\n END AS qtforegroundrole,\n\n CASE WHEN (xtindentrole = 2) THEN ''\n END AS sobalance_qtdisplayrole\nFROM (\n\n SELECT cohead_id AS id, -2 AS altid, cohead_id, cohead_number,\n cohead_number AS item_number,\n '' AS trueitem_number,\n (cust_number||'-'||cust_name) AS descrip,\n '' AS uom_name, CAST(NULL AS NUMERIC) AS qoh,\n CAST(NULL AS NUMERIC) AS sobalance,\n CAST(NULL AS NUMERIC) AS allocated,\n CAST(NULL AS NUMERIC) AS ordered,\n CAST(NULL AS NUMERIC) AS atshipping,\n CAST(NULL AS NUMERIC) AS coitem_qtyreserved,\n cohead_orderdate AS orderdate, MIN(coitem_scheddate) AS duedate,\n pack_id,\n CAST(NULL AS NUMERIC) AS reorderlevel,\n 0 AS xtindentrole\n FROM cohead\n LEFT OUTER JOIN pack ON (pack_head_type='SO' AND pack_head_id=cohead_id)\n JOIN custinfo ON (cohead_cust_id=cust_id)\n JOIN coitem ON (coitem_cohead_id=cohead_id)\n JOIN itemsite ON (coitem_itemsite_id=itemsite_id)\n WHERE ((coitem_status NOT IN ('C', 'X'))\n \n AND (cust_custtype_id=)\n \n AND (cust_custtype_id IN (SELECT custtype_id\n FROM custtype\n WHERE(custtype_code ~ )))\n \n )\n GROUP BY cohead_id, item_number, cust_number,\n cust_name, cohead_orderdate, pack_id\n \n HAVING (MIN(noNeg(itemsite_qtyonhand) +\n qtyOrdered(itemsite_id, coitem_scheddate) -\n qtyAllocated(itemsite_id, coitem_scheddate)) < 0\n OR MIN(noNeg(itemsite_qtyonhand) +\n qtyOrdered(itemsite_id, coitem_scheddate) -\n noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned)) < 0\n )\n \n UNION\n\n SELECT itemsite_id AS id, coitem_id AS altid, cohead_id, cohead_number,\n item_number,\n item_number AS trueitem_number,\n (item_descrip1 || ' ' || item_descrip2) AS descrip,\n uom_name, noNeg(itemsite_qtyonhand) AS qoh,\n noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) AS sobalance,\n qtyAllocated(itemsite_id, coitem_scheddate) AS allocated,\n qtyOrdered(itemsite_id, coitem_scheddate) AS ordered,\n qtyatshipping(coitem_id) AS atshipping,\n itemuomtouom(item_id, coitem_qty_uom_id, null, coitem_qtyreserved) AS coitem_qtyreserved,\n CAST(NULL AS DATE) AS orderdate, coitem_scheddate AS duedate,\n CAST(NULL AS INTEGER) AS pack_id,\n CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel\n ELSE 0.0 END AS reorderlevel,\n 1 AS xtindentrole\n FROM cohead\n JOIN custinfo ON (cohead_cust_id=cust_id)\n , itemsite, item, uom, site(), coitem\n WHERE ((coitem_cohead_id=cohead_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (coitem_status NOT IN ('C', 'X'))\n\n AND (cohead_id=)\n\n AND (cust_custtype_id=)\n\n AND (cust_custtype_id IN (SELECT custtype_id\n FROM custtype\n WHERE(custtype_code ~ )))\n\n\n AND ((noNeg(itemsite_qtyonhand) + qtyOrdered(itemsite_id, coitem_scheddate) - qtyAllocated(itemsite_id, coitem_scheddate) < 0)\n OR (noNeg(itemsite_qtyonhand) + qtyOrdered(itemsite_id, coitem_scheddate) - noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) < 0))\n\n )\n\n UNION\n SELECT itemsite_id, -1, cohead_id, cohead_number,\n formatwonumber(wo_id),\n item_number AS trueitem_number,\n wo_status,\n NULL, NULL,\n noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) AS sobalance,\n NULL,\n noNeg((wo_qtyord-wo_qtyrcv)) AS ordered,\n NULL,\n NULL,\n wo_startdate, wo_duedate,\n NULL AS pack_id,\n CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel\n ELSE 0.0 END AS reorderlevel,\n 2 AS xtindentrole\n FROM cohead\n JOIN custinfo ON (cohead_cust_id=cust_id)\n , itemsite, item, uom, site(), coitem\n LEFT OUTER JOIN wo\n ON ((coitem_itemsite_id=wo_itemsite_id)\n AND (wo_status IN ('E','R','I'))\n AND (wo_qtyord-wo_qtyrcv > 0)\n AND (noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned-qtyatshipping(coitem_id)) >\n (SELECT itemsite_qtyonhand FROM itemsite WHERE (itemsite_id=coitem_itemsite_id))))\n WHERE ((coitem_cohead_id=cohead_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (coitem_status NOT IN ('C', 'X'))\n \n AND (cohead_id=)\n \n AND (cust_custtype_id=)\n \n AND (cust_custtype_id IN (SELECT custtype_id\n FROM custtype\n WHERE(custtype_code ~ )))\n \n \n AND ((noNeg(itemsite_qtyonhand) + qtyOrdered(itemsite_id, coitem_scheddate) - qtyAllocated(itemsite_id, coitem_scheddate) < 0)\n OR (noNeg(itemsite_qtyonhand) + qtyOrdered(itemsite_id, coitem_scheddate) - noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) < 0))\n \n )\n\n) AS data\nORDER BY cohead_number, trueitem_number,\n xtindentrole;\n admin 2013-07-26 0 260 itemSources detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: itemSources\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT itemsrc_id, \n vend_name, \n item_number, uom_name,\n (item_descrip1 || ' ' || item_descrip2) AS item_descrip,\n contrct_number,\n itemsrc.*,\n 'qty' AS itemsrc_invvendoruomratio_xtnumericrole,\n CASE WHEN COALESCE(itemsrc_effective, startOfTime()) <=\n startOfTime() THEN \n END AS itemsrc_effective_qtdisplayrole,\n CASE WHEN COALESCE(itemsrc_expires, endOfTime()) >=\n endOfTime() THEN \n END AS itemsrc_expires_qtdisplayrole,\n CASE WHEN (COALESCE(itemsrc_expires, endOfTime()) < CURRENT_DATE) THEN 'expired'\n WHEN (COALESCE(itemsrc_effective, startOfTime()) > CURRENT_DATE) THEN 'future'\n END AS qtforegroundrole\nFROM itemsrc JOIN vendinfo ON (vend_id=itemsrc_vend_id AND vend_active)\n JOIN item ON (item_id=itemsrc_item_id)\n JOIN uom ON (uom_id=item_inv_uom_id)\n LEFT OUTER JOIN contrct ON (contrct_id=itemsrc_contrct_id) \nWHERE ((true)\n\n AND (itemsrc_active)\n\n\n AND (itemsrc_item_id=)\n\n\n AND (itemsrc_vend_id=)\n\n\n AND (itemsrc_contrct_id=)\n\n\n AND (contrct_number ~* )\n\n\n AND (itemsrc_expires > CURRENT_DATE)\n\n\n AND (itemsrc_effective <= CURRENT_DATE)\n\n)\n\nORDER BY itemsrc_ranking, vend_name,\n itemsrc_vend_item_number, itemsrc_manuf_name,\n itemsrc_manuf_item_number\n\nORDER By item_number, vend_name\n\n;\n admin 2013-07-26 0 476 itemSources prices Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: itemSources\n-- Name: prices\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT itemsrcp_id, itemsrc_id,\n vend_number, vend_name,\n currConcat(vend_curr_id) AS vend_curr,\n item_number,\n (item_descrip1 || ' ' || item_descrip2) AS item_descrip,\n warehous_code, uom_name,\n contrct_number,\n itemsrc.*,\n (itemsrc_vend_item_number || '/' || itemsrc_manuf_item_number) AS itemsrc_descrip,\n itemsrcp.*,\n currConcat(itemsrcp_curr_id) AS item_curr,\n noNeg(CASE WHEN (itemsrcp_type='N') THEN currToBase(itemsrcp_curr_id, itemsrcp_price, itemsrcp_updated)\n WHEN (itemsrcp_type='D') THEN (item_listcost - (item_listcost * COALESCE(itemsrcp_discntprcnt, 0.0)) - COALESCE(itemsrcp_fixedamtdiscount, 0.0))\n ELSE 0.0\n END) AS price_base,\n noNeg(CASE WHEN (itemsrcp_type='N') THEN itemsrcp_price\n WHEN (itemsrcp_type='D') THEN (item_listcost - (item_listcost * COALESCE(itemsrcp_discntprcnt, 0.0)) - COALESCE(itemsrcp_fixedamtdiscount, 0.0))\n ELSE 0.0\n END) AS price_local,\n CASE WHEN (itemsrcp_type='N') THEN \n WHEN (itemsrcp_type='D') THEN \n ELSE 'error'\n END AS type,\n CASE WHEN (itemsrcp_type='N') THEN \n WHEN ((itemsrcp_type='D') AND (COALESCE(itemsrcp_discntprcnt, 0.0)=0.0) AND (COALESCE(itemsrcp_fixedamtdiscount, 0.0)<>0.0)) THEN \n WHEN ((itemsrcp_type='D') AND (COALESCE(itemsrcp_discntprcnt, 0.0)<>0.0) AND (COALESCE(itemsrcp_fixedamtdiscount, 0.0)=0.0)) THEN \n WHEN (itemsrcp_type='D') THEN \n ELSE 'error'\n END AS method,\n 'qty' AS itemsrc_invvendoruomratio_xtnumericrole,\n 'qty' AS itemsrc_minordqty_xtnumericrole,\n 'qty' AS itemsrc_ordqtymult_xtnumericrole,\n 'qty' AS itemsrcp_qtybreak_xtnumericrole,\n 'purchprice' AS price_local_xtnumericrole,\n 'purchprice' AS price_base_xtnumericrole,\n 'percent' AS itemsrcp_discntprcnt_xtnumericrole,\n CASE WHEN (warehous_code IS NULL) THEN \n END AS warehous_code_qtdisplayrole,\n CASE WHEN (itemsrcp_dropship) THEN \n ELSE \n END AS itemsrcp_dropship_qtdisplayrole,\n CASE WHEN COALESCE(itemsrc_effective, startOfTime()) <=\n startOfTime() THEN \n END AS itemsrc_effective_qtdisplayrole,\n CASE WHEN COALESCE(itemsrc_expires, endOfTime()) >=\n endOfTime() THEN \n END AS itemsrc_expires_qtdisplayrole,\n CASE WHEN (COALESCE(itemsrc_expires, endOfTime()) < CURRENT_DATE) THEN 'expired'\n WHEN (COALESCE(itemsrc_effective, startOfTime()) > CURRENT_DATE) THEN 'future'\n END AS qtforegroundrole\nFROM itemsrc JOIN vendinfo ON (vend_id=itemsrc_vend_id AND vend_active)\n JOIN item ON (item_id=itemsrc_item_id)\n JOIN uom ON (uom_id=item_inv_uom_id)\n JOIN itemsrcp ON (itemsrcp_itemsrc_id=itemsrc_id)\n LEFT OUTER JOIN contrct ON (contrct_id=itemsrc_contrct_id)\n LEFT OUTER JOIN whsinfo ON (warehous_id=itemsrcp_warehous_id)\nWHERE ((true)\n\n AND (itemsrc_active)\n\n\n AND (itemsrc_item_id=)\n\n\n AND (itemsrc_vend_id=)\n\n\n AND (itemsrc_id=)\n\n\n AND (itemsrcp_warehous_id=)\n\n\n AND (itemsrcp_dropship)\n\n\n AND ( (item_number ~* )\n OR (COALESCE(item_descrip1,'') || COALESCE(item_descrip2,'') ~* ) )\n\n\n AND (item_number ~* )\n\n\n AND (COALESCE(item_descrip1,'') || COALESCE(item_descrip2,'') ~* )\n\n\n AND (itemsrc_contrct_id=)\n\n\n AND (contrct_number ~* )\n\n\n AND (vend_name ~* )\n\n\n AND (itemsrc_vend_item_number ~* )\n\n\n AND (itemsrc_manuf_name ~* )\n\n\n AND (itemsrc_manuf_item_number ~* )\n\n\n AND (COALESCE(contrct_effective, itemsrc_effective) >= )\n\n\n AND (COALESCE(contrct_effective, itemsrc_effective) <= )\n\n\n AND (COALESCE(contrct_expires, itemsrc_expires) >= )\n\n\n AND (COALESCE(contrct_expires, itemsrc_expires) <= )\n\n)\nORDER By item_number, vend_name, itemsrcp_qtybreak\n;\n admin 2013-07-26 0 477 itemSources search Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: itemSources\n-- Name: search\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n SELECT itemsrc_id AS id,\n 1 AS altid,\n item_number,\n (item_descrip1 || ' ' || item_descrip2) AS item_descrip,\n vend_name,\n itemsrc_vend_item_number,\n itemsrc_vend_item_descrip,\n itemsrc_manuf_name,\n itemsrc_manuf_item_number,\n itemsrc_manuf_item_descrip\n FROM vendinfo JOIN itemsrc ON (itemsrc_vend_id=vend_id)\n JOIN item ON (item_id=itemsrc_item_id)\n WHERE (vend_id=)\n AND ( (FALSE)\n\n OR (item_number ~* )\n\n\n OR (itemsrc_vend_item_number ~* )\n\n\n OR (item_descrip1 ~* )\n\n\n OR (item_descrip2 ~* )\n\n\n OR (itemsrc_vend_item_descrip ~* )\n\n\n OR (itemsrc_manuf_name ~* )\n\n\n OR (itemsrc_manuf_item_number ~* )\n\n )\n UNION\n SELECT DISTINCT poitem_expcat_id AS id,\n 2 AS altid,\n AS item_number,\n (expcat_code || ' ' || expcat_descrip) AS item_descrip,\n vend_name,\n poitem_vend_item_number,\n poitem_vend_item_descrip,\n poitem_manuf_name,\n poitem_manuf_item_number,\n poitem_manuf_item_descrip\n FROM vendinfo JOIN pohead ON (pohead_vend_id=vend_id)\n JOIN poitem ON (poitem_pohead_id=pohead_id)\n LEFT OUTER JOIN expcat ON (poitem_expcat_id=expcat_id)\n WHERE (vend_id=)\n AND (COALESCE(poitem_vend_item_number, '')!='')\n AND (poitem_itemsite_id IS NULL)\n AND ( (FALSE)\n\n OR (poitem_vend_item_number ~* )\n\n\n OR (expcat_code ~* )\n OR (expcat_descrip ~* )\n\n\n OR (poitem_vend_item_descrip ~* )\n\n\n OR (poitem_manuf_name ~* )\n\n\n OR (poitem_manuf_item_number ~* )\n\n )\n ORDER BY item_number, vend_name;\n admin 2013-07-26 0 113 itemcostdetail detail dspItemCostDetail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: itemcostdetail\n-- Name: detail\n-- Notes: dspItemCostDetail\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT id, item.item_id, seqnumber, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescrip, uom_name,\n qtyper, 'qtyper' AS qtyper_xtnumericrole,\n scrap, 'scrap' AS scrap_xtnumericrole,\n cost, 'cost' AS cost_xtnumericrole,\n extendedcost, 'cost' AS extendedcost_xtnumericrole,\n 0 AS extendedcost_xttotalrole \nFROM uom, item, (\n\n SELECT bomitem_id AS id, bomitem_seqnumber AS seqnumber,\n (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper) AS qtyper,\n bomitem_scrap AS scrap,\n bomitem_item_id AS item_id,\n \n itemcost_stdcost AS cost,\n (itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL,\n (bomitem_qtyfxd/bomhead_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') * itemcost_stdcost) AS extendedcost\n \n currToBase(itemcost_curr_id, itemcost_actcost, NULL) AS cost,\n (itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL,\n (bomitem_qtyfxd/bomhead_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') *\n currToBase(itemcost_curr_id, itemcost_actcost, NULL)) AS extendedcost \n \n FROM bomitem\n JOIN itemcost ON (itemcost_item_id=bomitem_item_id)\n JOIN costelem ON (itemcost_costelem_id=costelem_id)\n JOIN bomhead ON (bomhead_item_id=bomitem_parent_item_id AND bomhead_rev_id=bomitem_rev_id)\n \n LEFT OUTER JOIN rev ON ((bomitem_rev_id=rev_id) AND (COALESCE(rev_status, 'A')='A')) \n \n WHERE ((CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires-1))\n AND (bomitem_parent_item_id=)\n AND (costelem_id=) ) \n\n SELECT bbomitem_id AS id, bbomitem_seqnumber AS seqnumber,\n bbomitem_qtyper AS qtyper,\n bbomitem_costabsorb AS scrap,\n bbomitem_parent_item_id AS item_id,\n \n itemcost_stdcost AS cost,\n (itemcost_stdcost / bbomitem_qtyper *\n bbomitem_costabsorb) AS extendedcost \n \n currToBase(itemcost_curr_id, itemcost_actcost, NULL) AS cost,\n (currToBase(itemcost_curr_id, itemcost_actcost, NULL) / bbomitem_qtyper *\n bbomitem_costabsorb) AS extendedcost \n \n FROM xtmfg.bbomitem\n JOIN itemcost ON (itemcost_item_id=bbomitem_parent_item_id)\n WHERE ((CURRENT_DATE BETWEEN bbomitem_effective AND (bbomitem_expires-1))\n AND (itemcost_costelem_id=)\n AND (bbomitem_item_id=) )\n UNION\n SELECT source.bbomitem_id, source.bbomitem_seqnumber AS seqnumber,\n source.bbomitem_qtyper, target.bbomitem_costabsorb,\n item_id,\n \n itemcost_stdcost AS cost,\n (itemcost_stdcost * source.bbomitem_qtyper /\n target.bbomitem_qtyper * target.bbomitem_costabsorb) AS extendedcost \n \n currToBase(itemcost_curr_id, itemcost_actcost, NULL) AS cost,\n (currToBase(itemcost_curr_id, itemcost_actcost, NULL) * source.bbomitem_qtyper /\n target.bbomitem_qtyper * target.bbomitem_costabsorb) AS extendedcost \n \n FROM xtmfg.bbomitem AS source\n JOIN item ON (source.bbomitem_item_id=item_id)\n JOIN itemcost ON (source.bbomitem_item_id=itemcost_item_id)\n JOIN xtmfg.bbomitem AS target\n ON (source.bbomitem_parent_item_id=target.bbomitem_parent_item_id)\n WHERE ((CURRENT_DATE BETWEEN source.bbomitem_effective\n AND (source.bbomitem_expires-1))\n AND (CURRENT_DATE BETWEEN target.bbomitem_effective\n AND (target.bbomitem_expires-1))\n AND (item_type='Y')\n AND (target.bbomitem_item_id=)\n AND (itemcost_costelem_id=) )\n\n) AS data \nWHERE ((data.item_id=item.item_id)\n AND (item_inv_uom_id=uom_id)) \nORDER BY seqnumber;\n admin 2013-07-26 0 258 items detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: items\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n SELECT\n \n DISTINCT ON ( toNumeric(item_number, 999999999999999), item_number )\n \n DISTINCT ON ( item_number )\n \n item.*, classcode.*, uom.*, prodcat.*, freightclass.*,\n \n charass_alias.charass_value AS char,\n \n \n charass_alias.charass_value AS char,\n \n \n charass_alias.charass_value::date AS char,\n \n (COALESCE(item_descrip1,'') || ' ' || COALESCE(item_descrip2,'')) as item_descrip,\n CASE WHEN (item_type='P') THEN text()\n WHEN (item_type='M') THEN text()\n WHEN (item_type='F') THEN text()\n WHEN (item_type='B') THEN text()\n WHEN (item_type='C') THEN text()\n WHEN (item_type='Y') THEN text()\n WHEN (item_type='R') THEN text()\n WHEN (item_type='S') THEN text()\n WHEN (item_type='T') THEN text()\n WHEN (item_type='A') THEN text()\n WHEN (item_type='O') THEN text()\n WHEN (item_type='L') THEN text()\n WHEN (item_type='K') THEN text()\n ELSE text()\n END AS f_item_type,\n CASE WHEN (item_type='P') THEN text()\n WHEN (item_type='M') THEN text()\n WHEN (item_type='F') THEN text()\n WHEN (item_type='B') THEN text()\n WHEN (item_type='C') THEN text()\n WHEN (item_type='Y') THEN text()\n WHEN (item_type='R') THEN text()\n WHEN (item_type='S') THEN text()\n WHEN (item_type='T') THEN text()\n WHEN (item_type='A') THEN text()\n WHEN (item_type='O') THEN text()\n WHEN (item_type='L') THEN text()\n WHEN (item_type='K') THEN text()\n ELSE text()\n END AS item_type_qtdisplayrole\n FROM item\n JOIN classcode ON (item_classcode_id=classcode_id)\n JOIN uom ON (item_inv_uom_id=uom_id)\n LEFT OUTER JOIN prodcat ON (item_prodcat_id=prodcat_id)\n LEFT OUTER JOIN freightclass ON (item_freightclass_id=freightclass_id)\n \n JOIN itemgrpitem ON (item_id=itemgrpitem_item_id)\n JOIN itemgrp ON (itemgrp_id=itemgrpitem_itemgrp_id)\n \n \n LEFT OUTER JOIN charass charass_alias \n ON ((charass_alias.charass_target_type='I') \n AND (charass_alias.charass_target_id=item_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias \n ON (charass_alias.charass_char_id=char_alias.char_id)\n \n \n LEFT OUTER JOIN charass charass_alias \n ON ((charass_alias.charass_target_type='I') \n AND (charass_alias.charass_target_id=item_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias \n ON (charass_alias.charass_char_id=char_alias.char_id)\n \n \n LEFT OUTER JOIN charass charass_alias \n ON ((charass_alias.charass_target_type='I') \n AND (charass_alias.charass_target_id=item_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias \n ON (charass_alias.charass_char_id=char_alias.char_id)\n \n WHERE ( true\n \n AND ( (item_number ~* )\n OR (COALESCE(item_descrip1,'') || COALESCE(item_descrip2,'') ~* ) )\n \n \n AND (item_type IN ('P', 'O'))\n \n AND (item_type IN ('M', 'F', 'B','K'))\n \n AND (item_sold)\n \n \n AND (item_type=)\n \n \n AND (item_active)\n \n \n AND (item_classcode_id=)\n \n \n AND (item_prodcat_id=)\n \n \n AND (item_freightclass_id=)\n \n \n AND (itemgrp_id=)\n \n \n AND (item_number ~* )\n \n \n AND (COALESCE(item_descrip1,'') || COALESCE(item_descrip2,'') ~* )\n \n \n AND (classcode_code ~* )\n \n \n AND (prodcat_code ~* )\n \n \n AND (freightclass_code ~* )\n \n \n ) ORDER BY\n \n toNumeric(item_number, 999999999999999),\n \n item_number;\n admin 2013-07-26 0 412 journals detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: journals\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT sltrans.*,\n CASE WHEN(sltrans_docnumber='Misc.' AND\n invhist_docnumber IS NOT NULL) THEN\n (sltrans_docnumber || ' - ' || invhist_docnumber)\n ELSE sltrans_docnumber\n END AS docnumber,\n firstLine(sltrans_notes) AS notes,\n sltrans_journalnumber,\n (formatGLAccount(accnt_id) || ' - ' || accnt_descrip) AS account,\n CASE WHEN (sltrans_amount < 0) THEN ABS(sltrans_amount)\n ELSE NULL\n END AS debit,\n CASE WHEN (sltrans_amount > 0) THEN sltrans_amount\n ELSE NULL\n END AS credit,\n sltrans_gltrans_journalnumber,\n 'curr' AS debit_xtnumericrole,\n 'curr' AS credit_xtnumericrole\nFROM sltrans JOIN accnt ON (sltrans_accnt_id=accnt_id) \n LEFT OUTER JOIN invhist ON (sltrans_misc_id=invhist_id\n AND sltrans_docnumber='Misc.') \n\n JOIN company ON (accnt_company=company_number) \n\n\n JOIN prftcntr ON (accnt_profit=prftcntr_number) \n\n\n JOIN subaccnt ON (accnt_sub=subaccnt_number) \n\n\n JOIN subaccnttype ON (subaccnttype_code=accnt_subaccnttype_code) \n\nWHERE (\n\n \n (sltrans_date BETWEEN \n AND )\n \n (sltrans_date BETWEEN \n AND endoftime())\n \n\n \n (sltrans_date BETWEEN startoftime()\n AND )\n \n (sltrans_date BETWEEN startoftime()\n AND endoftime())\n \n\n\n AND (company_id=)\n\n\n AND (prftcntr_id=)\n\n\n AND (accnt_number=)\n\n\n AND (subaccnt_id=)\n\n\n AND (subaccnttype_id=)\n\n\n AND (accnt_type= )\n\n\n AND (sltrans_accnt_id=)\n\n\n AND (sltrans_docnumber = case when = '' then \n sltrans_docnumber else \n end ) \n\n\n AND (sltrans_source=)\n\n\n AND (sltrans_source ~* )\n\n\n AND (sltrans_posted=)\n\n\n AND (sltrans_gltrans_journalnumber::text=)\n\n) \nORDER BY sltrans_created,\n sltrans_sequence, sltrans_amount;\n admin 2013-07-26 0 59 maintainShipping detail used by maintainShipping order header info Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: maintainShipping\n-- Name: detail\n-- Notes: used by maintainShipping\n-- order header info\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT shiphead_id AS parent_id, cohead_id AS child_id,\n shiphead_number, cohead_number AS linenumber,\n 'SO' AS ordertype,\n CASE WHEN (shiphead_sfstatus='N') THEN \n WHEN (shiphead_sfstatus='D') THEN \n WHEN (shiphead_sfstatus='P') THEN \n ELSE \n END AS sfstatus,\n cust_number AS dest, cust_name AS description,\n shiphead_shipvia, NULL AS uom_name,\n NULL AS shipqty, NULL AS shipvalue,\n\n NULL AS f_shipqty, NULL AS f_shipvalue,\n\n cohead_holdtype AS holdtype,\n shiphead_number AS shiphead_number_qtdisplayrole,\n 'SO' AS ordertype_qtdisplayrole,\n 'qty' AS shipqty_xtnumericrole,\n 'cost' AS shipvalue_xtnumericrole,\n 0 AS shipvalue_xttotalrole,\n 0 AS xtindentrole,\n CAST(shiphead_id AS TEXT) AS sort\nFROM shiphead, custinfo, cohead\n \n JOIN coitem ON (coitem_cohead_id=cohead_id)\n JOIN itemsite ON ((coitem_itemsite_id=itemsite_id)\n AND (itemsite_warehous_id=))\n \nWHERE ((NOT shiphead_shipped)\n AND (shiphead_order_type='SO')\n AND (shiphead_order_id=cohead_id)\n AND (cohead_cust_id=cust_id)\n) \n-- order line info\nUNION ALL\nSELECT cohead_id AS parent_id, coitem_id AS child_id,\n '' AS shiphead_number, CAST(coitem_linenumber AS TEXT) AS linenumber,\n 'SO' AS ordertype,\n NULL AS sfstatus,\n item_number AS dest, (item_descrip1 || ' ' || item_descrip2) AS description,\n NULL AS shiphead_shipvia, uom_name,\n qtyAtShipping('SO', coitem_id) AS shipqty,\n valueAtShipping('SO', coitem_id) AS shipvalue,\n\n formatQty(qtyAtShipping('SO', coitem_id)) AS f_shipqty,\n formatCost(valueAtShipping('SO', coitem_id)) AS f_shipvalue,\n\n cohead_holdtype AS holdtype,\n NULL AS shiphead_number_qtdisplayrole,\n NULL AS ordertype_qtdisplayrole,\n 'qty' AS shipqty_xtnumericrole,\n 'cost' AS shipvalue_xtnumericrole,\n 0 AS shipvalue_xttotalrole,\n 1 AS xtindentrole,\n CAST(shiphead_id AS TEXT) || CAST(shiphead_order_id AS TEXT) || \n TO_CHAR(coitem_id, '0000000') || '1' AS sort\nFROM shiphead, cohead, coitem, uom, itemsite, item\nWHERE ((NOT shiphead_shipped)\n AND (shiphead_order_type='SO')\n AND (shiphead_order_id=cohead_id)\n AND (cohead_id=coitem_cohead_id)\n AND (coitem_qty_uom_id=uom_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n \n AND (itemsite_warehous_id=)\n \n) \n-- shipitem info\nUNION ALL\nSELECT shiphead_id AS parent_id, shipitem_id AS child_id,\n '' AS shiphead_number, '' AS linenumber,\n 'SO' AS ordertype,\n NULL AS sfstatus,\n '' AS dest,\n formatDate(shipitem_transdate) || ' by ' || shipitem_trans_username AS description,\n '' AS shiphead_shipvia, '' AS uom_name,\n shipitem_qty AS shipqty,\n NULL AS shipvalue,\n\n formatQty(shipitem_qty) AS f_shipqty,\n NULL AS f_shipvalue,\n\n '' AS holdtype,\n NULL AS shiphead_number_qtdisplayrole,\n NULL AS ordertype_qtdisplayrole,\n 'qty' AS shipqty_xtnumericrole,\n 'cost' AS shipvalue_xtnumericrole,\n 0 AS shipvalue_xttotalrole,\n 2 AS xtindentrole,\n CAST(shiphead_id AS TEXT) || CAST(shiphead_order_id AS TEXT) ||\n TO_CHAR(shipitem_orderitem_id, '0000000') || '2' AS sort\nFROM shiphead JOIN shipitem ON (shipitem_shiphead_id=shiphead_id)\n \n JOIN coitem ON ((shipitem_orderitem_id=coitem_id)\n AND (shiphead_order_type='SO'))\n JOIN itemsite ON ((coitem_itemsite_id=itemsite_id)\n AND (itemsite_warehous_id=))\n \nWHERE ((NOT shiphead_shipped)\n AND (shiphead_order_type='SO')\n) \n\n\nUNION ALL\n-- order header info\nSELECT shiphead_id AS parent_id, tohead_id AS child_id,\n shiphead_number, tohead_number AS linenumber,\n 'TO' AS ordertype,\n CASE WHEN (shiphead_sfstatus='N') THEN \n WHEN (shiphead_sfstatus='D') THEN \n WHEN (shiphead_sfstatus='P') THEN \n ELSE \n END AS sfstatus,\n tohead_destname AS dest, tohead_destcntct_name AS description,\n shiphead_shipvia, NULL AS uom_name,\n NULL AS shipqty, NULL AS shipvalue,\n\n NULL AS f_shipqty, NULL AS f_shipvalue,\n\n 'TO' AS holdtype,\n shiphead_number AS shiphead_number_qtdisplayrole,\n 'TO' AS ordertype_qtdisplayrole,\n 'qty' AS shipqty_xtnumericrole,\n 'cost' AS shipvalue_xtnumericrole,\n 0 AS shipvalue_xttotalrole,\n 0 AS xtindentrole,\n CAST(shiphead_id AS TEXT) AS sort\nFROM shiphead, tohead\n \n JOIN toitem ON (toitem_tohead_id=tohead_id)\n JOIN itemsite ON ((toitem_item_id=itemsite_item_id)\n AND (itemsite_warehous_id=))\n \nWHERE ((NOT shiphead_shipped)\n AND (shiphead_order_type='TO')\n AND (shiphead_order_id=tohead_id)\n) \n-- order line info\nUNION ALL\nSELECT tohead_id AS parent_id, toitem_id AS child_id,\n '' AS shiphead_number, CAST(toitem_linenumber AS TEXT) AS linenumber,\n 'TO' AS ordertype,\n NULL AS sfstatus,\n item_number AS dest, (item_descrip1 || ' ' || item_descrip2) AS description,\n NULL AS shiphead_shipvia, toitem_uom AS uom_name,\n qtyAtShipping('TO', toitem_id) AS shipqty,\n valueAtShipping('TO', toitem_id) AS shipvalue,\n\n formatQty(qtyAtShipping('TO', toitem_id)) AS f_shipqty,\n formatCost(valueAtShipping('TO', toitem_id)) AS f_shipvalue,\n\n 'TO' AS holdtype,\n NULL AS shiphead_number_qtdisplayrole,\n NULL AS ordertype_qtdisplayrole,\n 'qty' AS shipqty_xtnumericrole,\n 'cost' AS shipvalue_xtnumericrole,\n 0 AS shipvalue_xttotalrole,\n 1 AS xtindentrole,\n CAST(shiphead_id AS TEXT) || CAST(shiphead_order_id AS TEXT) ||\n TO_CHAR(toitem_id, '0000000') || '1' AS sort\nFROM shiphead, tohead, item, toitem\n \n JOIN itemsite ON ((toitem_item_id=itemsite_item_id)\n AND (itemsite_warehous_id=))\n \nWHERE ((NOT shiphead_shipped)\n AND (shiphead_order_type='TO')\n AND (shiphead_order_id=tohead_id)\n AND (tohead_id=toitem_tohead_id)\n AND (toitem_item_id=item_id)\n) \n-- shipitem info\nUNION\nSELECT shiphead_id AS parent_id, shipitem_id AS child_id,\n '' AS shiphead_number, '' AS linenumber,\n 'TO' AS ordertype,\n NULL AS sfstatus,\n '' AS dest,\n formatDate(shipitem_transdate) || ' by ' || shipitem_trans_username AS description,\n '' AS shiphead_shipvia, '' AS uom_name,\n shipitem_qty AS shipqty,\n NULL AS shipvalue,\n\n formatQty(shipitem_qty) AS f_shipqty,\n NULL AS f_shipvalue,\n\n '' AS holdtype,\n NULL AS shiphead_number_qtdisplayrole,\n NULL AS ordertype_qtdisplayrole,\n 'qty' AS shipqty_xtnumericrole,\n 'cost' AS shipvalue_xtnumericrole,\n 0 AS shipvalue_xttotalrole,\n 2 AS xtindentrole,\n CAST(shiphead_id AS TEXT) || CAST(shiphead_order_id AS TEXT) ||\n TO_CHAR(shipitem_orderitem_id, '0000000') || '2' AS sort\nFROM shiphead JOIN shipitem ON (shipitem_shiphead_id=shiphead_id)\n \n JOIN toitem ON ((shipitem_orderitem_id=toitem_id)\n AND (shiphead_order_type='TO'))\n JOIN itemsite ON ((toitem_item_id=itemsite_item_id)\n AND (itemsite_warehous_id=))\n \nWHERE ((NOT shiphead_shipped)\n AND (shiphead_order_type='TO')\n) \n\n\nORDER BY sort;\n admin 2013-07-26 0 60 manufacture jobcosting used by dspJobCosting Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: manufacture\n-- Name: jobcosting\n-- Notes: used by dspJobCosting\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT *, 0 AS cost_xttotalrole,\n 'qty' AS qty_xtnumericrole,\n 'cost' AS cost_xtnumericrole\nFROM (\n SELECT womatl_id AS id, 3 AS sort,\n AS type, item_number AS code,\n item_descrip1 AS descrip,\n (SUM(COALESCE(invhist_invqty,0))) AS qty,\n uom_name AS uom,\n SUM(COALESCE(invhist_invqty * invhist_unitcost,0)) AS cost,\n NULL as wooper_seqnumber\n FROM womatl\n LEFT OUTER JOIN womatlpost ON (womatl_id=womatlpost_womatl_id)\n LEFT OUTER JOIN invhist ON (womatlpost_invhist_id=invhist_id),\n itemsite, item, uom\n WHERE ((womatl_wo_id=)\n AND (womatl_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id))\n GROUP BY womatl_id, item_number, item_descrip1, uom_name\n ) AS data\nORDER BY sort, code;\n admin 2013-07-26 0 261 itemsWithoutItemSources detail used by dspItemsWithoutItemSources Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: itemsWithoutItemSources\n-- Name: detail\n-- Notes: used by dspItemsWithoutItemSources\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT item_id, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS descrip,\n CASE WHEN (item_type = 'P') THEN \n WHEN (item_type = 'O') THEN \n END AS type \nFROM item \nWHERE ( (item_type IN ('P', 'O'))\n AND (item_active)\n AND (item_id NOT IN (SELECT DISTINCT itemsrc_item_id\n FROM itemsrc \n WHERE (itemsrc_active))) ) \nORDER BY item_number;\n admin 2013-07-26 0 451 metasqls detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: metasqls\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT metasql_id, metasql_group, metasql_name,\n firstline(metasql_notes) AS metasql_notes, metasql_grade,\n CASE nspname WHEN 'public' THEN '' ELSE nspname END AS pkgname,\n CASE nspname WHEN 'public' THEN 0\n ELSE 1 END AS xtindentrole,\n metasql_notes AS metasql_notes_qttooltiprole \n FROM metasql\n JOIN pg_class ON (metasql.tableoid=pg_class.oid)\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\n UNION \nSELECT -1, pkghead_name, NULL,\n firstline(pkghead_descrip), NULL,\n pkghead_name, 0, pkghead_descrip\n FROM metasql, pg_class, pg_namespace\n RIGHT OUTER JOIN pkghead ON (nspname=pkghead_name)\n WHERE ((metasql.tableoid=pg_class.oid)\n AND (relnamespace=pg_namespace.oid))\nORDER BY pkgname, xtindentrole, metasql_group, metasql_name,\n metasql_grade DESC, metasql_id;\n\nSELECT metasql_id, metasql_group, metasql_name,\n firstline(metasql_notes) AS metasql_notes,\n metasql_grade,\n CASE nspname WHEN 'public' THEN '' ELSE nspname END AS pkgname,\n metasql_notes AS metasql_notes_qttooltiprole \n FROM metasql\n JOIN pg_class ON (metasql.tableoid=pg_class.oid)\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\nORDER BY metasql_group, metasql_name,\n metasql_grade DESC, metasql_id;\n \n admin 2013-07-26 0 262 mrpDetail detail used by dspMRPDetail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: mrpDetail\n-- Name: detail\n-- Notes: used by dspMRPDetail\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT formatQty(itemsite_qtyonhand) AS f_qoh,itemsite_qtyonhand\n , qtyAllocated(itemsite_id, findPeriodStart(),\n findPeriodEnd()) AS allocations,\n qtyOrdered(itemsite_id, findPeriodStart(),\n findPeriodEnd()) AS orders,\n qtyFirmedAllocated(itemsite_id, findPeriodStart(),\n findPeriodEnd()) AS firmedallocations,\n qtyFirmed(itemsite_id, findPeriodStart(),\n findPeriodEnd()) AS firmedorders\nFROM itemsite\nWHERE (itemsite_id=);\n admin 2013-07-26 0 263 mrpDetail item used by dspMRPDetail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: mrpDetail\n-- Name: item\n-- Notes: used by dspMRPDetail\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT itemsite_id, item_type, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS descrip,\n warehous_code\nFROM itemsite, item, whsinfo\nWHERE ( (itemsite_active)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_planning_type='M')\n\n AND (itemsite_plancode_id=)\n\n AND (itemsite_plancode_id IN (SELECT plancode_id \n FROM plancode \n WHERE (plancode_code ~ )))\n\n\n AND (warehous_id=)\n\n )\nORDER BY item_number, warehous_code;\n admin 2013-07-26 0 440 openVouchers populate used by openVouchers Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: openVouchers\n-- Name: populate\n-- Notes: used by openVouchers\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT vohead_id, COALESCE(pohead_id, -1), vohead_number,\n COALESCE(TEXT(pohead_number), TEXT()) AS ponumber,\n (vend_number || '-' || vend_name) AS vendor, vendtype_code, vohead_invcnumber,\n vohead_distdate, COALESCE(vohead_gldistdate, vohead_distdate) AS postdate,\n vohead_amount, 'curr' AS vohead_amount_xtnumericrole,\n formatDate(vohead_distdate) AS f_distdate,\n formatDate(COALESCE(vohead_gldistdate, vohead_distdate)) AS f_postdate,\n formatMoney(vohead_amount) AS f_amount\n FROM vendinfo JOIN vendtype ON (vendtype_id=vend_vendtype_id)\n JOIN vohead ON (vohead_vend_id=vend_id)\n LEFT OUTER JOIN pohead ON (vohead_pohead_id=pohead_id) \n WHERE (NOT vohead_posted)\n\n AND (vend_id=)\n\n AND (vend_vendtype_id=)\n\n AND (vendtype_code ~ )\n\n ORDER BY vohead_number;\n \n admin 2013-07-26 0 58 itemReceipt sourceItemSite used by enterPoitemReceipt Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: itemReceipt\n-- Name: sourceItemSite\n-- Notes: used by enterPoitemReceipt\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\t\t\t-- this should never be called\n SELECT -1 AS itemsite_id, -1 AS warehous_id;\n\n SELECT itemsite_id, tohead_dest_warehous_id AS warehous_id\n FROM tohead, toitem, itemsite \n WHERE ((itemsite_item_id=toitem_item_id)\n AND (itemsite_warehous_id=tohead_src_warehous_id)\n AND (toitem_tohead_id=tohead_id)\n AND (toitem_id=));\n\t\t\t-- this should never be called\n SELECT itemsite_id, tohead_dest_warehous_id AS warehous_id\n FROM tohead, toitem, itemsite, recv\n WHERE ((itemsite_item_id=toitem_item_id)\n AND (itemsite_warehous_id=tohead_src_warehous_id)\n AND (toitem_tohead_id=tohead_id)\n AND (toitem_id=recv_orderitem_id)\n AND (recv_id=));\n\n admin 2013-07-26 0 264 openpurchaseorders detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: openpurchaseorders\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT pohead_id, COALESCE(pohead_cohead_id, -1) AS pohead_cohead_id,\n pohead_number, vend_name,\n MIN(poitem_duedate) AS min_duedate, \n pohead_status, pohead_printed,\n vend_number, vendtype_code, pohead_agent_username\n FROM pohead \n JOIN vendinfo ON (pohead_vend_id=vend_id)\n JOIN vendtype ON (vend_vendtype_id=vendtype_id)\n \n JOIN usr ON (pohead_agent_username=usr_username)\n \n \n JOIN poitem ON (poitem_pohead_id=pohead_id) \n JOIN itemsite ON (poitem_itemsite_id=itemsite_id)\n \n LEFT OUTER JOIN poitem ON (poitem_pohead_id=pohead_id) \n \n WHERE ( true\n \n AND ((pohead_number::text ~* ) \n OR (vend_number ~* )\n OR (vend_name ~* )\n\n OR (pohead_agent_username ~* )\n OR (vendtype_code ~* )\n\n OR (COALESCE(pohead_vend_cntct_first_name,'') || ' ' || COALESCE(pohead_vend_cntct_last_name,'') ~* )\n OR (COALESCE(pohead_vend_cntct_phone,'') ||' ' || COALESCE(pohead_vend_cntct_fax,'') ~* )\n OR (COALESCE(pohead_vend_cntct_email,'') ~* )\n OR (COALESCE(pohead_vendaddress1,'') || ' ' || COALESCE(pohead_vendaddress2,'') || ' ' || COALESCE(pohead_vendaddress3,'') ~* )\n OR (COALESCE(pohead_vendcity,'') ~* )\n OR (COALESCE(pohead_vendstate,'') ~* )\n OR (COALESCE(pohead_vendzipcode,'') ~* )\n OR (COALESCE(pohead_vendcountry,'') ~* )\n\n OR (COALESCE(pohead_shipto_cntct_first_name,'') || ' ' || COALESCE(pohead_shipto_cntct_last_name,'') ~* )\n OR (COALESCE(pohead_shipto_cntct_phone,'') || ' ' || COALESCE(pohead_shipto_cntct_fax,'') ~* )\n OR (COALESCE(pohead_shipto_cntct_email,'') ~* )\n OR (COALESCE(pohead_shiptoaddress1,'') || ' ' || COALESCE(pohead_vendaddress2,'') || ' ' || COALESCE(pohead_vendaddress3,'') ~* )\n OR (COALESCE(pohead_shiptocity,'') ~* )\n OR (COALESCE(pohead_shiptostate,'') ~* )\n OR (COALESCE(pohead_shiptozipcode,'') ~* )\n OR (COALESCE(pohead_shiptocountry,'') ~* )\n )\n \n \n AND (pohead_status ='U') \n \n \n AND (pohead_status='O' )\n \n \n AND (pohead_status IN ('U', 'O') ) \n \n \n AND (pohead_status NOT IN ('U', 'O', 'C')) \n \n \n AND (vend_id=)\n \n \n AND (vend_vendtype_id=)\n \n \n AND (vendtype_code ~* )\n \n \n AND (usr_id = )\n \n \n AND (itemsite_warehous_id = )\n \n ) \n GROUP BY pohead_number, pohead_id, pohead_cohead_id,\n\t\t vend_name, pohead_status, pohead_printed,\n vendtype_code, pohead_agent_username, vend_number\n ORDER BY pohead_number;\n admin 2013-07-26 0 265 opensalesorders detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: opensalesorders\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT DISTINCT cohead.*,\n COALESCE(cust_number, :error) AS cust_number,\n getSoSchedDate(cohead_id) AS scheddate, \n getSoStatus(cohead_id) AS status,\n firstline(cohead_ordercomments) AS notes \n FROM cohead \n JOIN custinfo ON (cohead_cust_id=cust_id) \n JOIN custtype ON (cust_custtype_id=custtype_id)\n \n JOIN coitem ON (coitem_cohead_id=cohead_id) \n JOIN itemsite ON (coitem_itemsite_id=itemsite_id) \n JOIN site() ON (itemsite_warehous_id=warehous_id) \n \n LEFT OUTER JOIN coitem ON (coitem_cohead_id=cohead_id) \n LEFT OUTER JOIN itemsite ON (coitem_itemsite_id=itemsite_id) \n LEFT OUTER JOIN whsinfo ON (itemsite_warehous_id=warehous_id) \n \n WHERE((true) \n \n AND (cust_id= )\n \n \n AND (cust_custtype_id=)\n \n \n AND (custtype_code ~* )\n \n \n AND (cohead_custponumber~*)\n \n \n AND (cohead_orderdate BETWEEN AND )\n \n \n AND (cohead_status='O')\n \n \n AND (warehous_id=)\n \n \n AND (cohead_salesrep_id=)\n \n ) \n ORDER BY cohead_number;\n admin 2013-07-26 0 63 opportunities detail used by opportunityList Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: opportunities\n-- Name: detail\n-- Notes: used by opportunityList\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT DISTINCT ON (incdtpriority_order, ophead_target_date, ophead_name, ophead_id) \n ophead_id AS id,\n CASE WHEN (ophead_active) THEN 0 ELSE 1 END AS altId,\n ophead_number,\n ophead_name,\n ophead_active,\n crmacct_number,\n ophead_owner_username,\n ophead_username,\n opstage_name,\n incdtpriority_name,\n opsource_name,\n optype_name,\n (ophead_probability_prcnt * .01) AS ophead_probability_prcnt,\n ophead_amount,\n currConcat(ophead_curr_id) As f_currency,\n ophead_target_date,\n ophead_actual_date,\n formatMoney(ophead_amount) AS f_amount,\n formatDate(ophead_target_date) AS f_targetdate,\n formatDate(ophead_actual_date) AS f_actualdate,\n 'extprice' AS ophead_amount_xtnumericrole,\n 'percent' AS ophead_probability_prcnt_xtnumericrole\n\n , charass_alias.charass_value AS char\n\n\n , charass_alias.charass_value AS char\n\n\n , charass_alias.charass_value::date AS char\n\nFROM ophead()\n LEFT OUTER JOIN incdtpriority ON (ophead_priority_id=incdtpriority_id)\n LEFT OUTER JOIN crmacct ON (ophead_crmacct_id=crmacct_id)\n LEFT OUTER JOIN opstage ON (ophead_opstage_id=opstage_id)\n LEFT OUTER JOIN opsource ON (ophead_opsource_id=opsource_id)\n LEFT OUTER JOIN optype ON (ophead_optype_id=optype_id)\n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='OPP') \n AND (charass_alias.charass_target_id=ophead_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='OPP') \n AND (charass_alias.charass_target_id=ophead_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\n\n LEFT OUTER JOIN charass charass_alias ON ((charass_alias.charass_target_type='OPP') \n AND (charass_alias.charass_target_id=ophead_id)\n AND (charass_alias.charass_char_id=))\n LEFT OUTER JOIN char char_alias ON (charass_alias.charass_char_id=char_alias.char_id)\n\nWHERE((true)\n\n AND ((ophead_target_date >= )\n OR ( <= startOfTime()) AND (ophead_target_date IS NULL))\n\n\n AND ((ophead_target_date <= )\n OR ( >= endOfTime()) AND (ophead_target_date IS NULL))\n\n\n AND (ophead_opsource_id=)\n\n\n AND (opsource_name ~ )\n\n\n AND (ophead_opstage_id=)\n\n\n AND (opstage_name ~ )\n\n\n AND (ophead_optype_id=)\n\n\n AND (optype_name ~ )\n\n\n AND ( IN (ophead_username, ophead_owner_username))\n\n\n AND (ophead_username=)\n\n\n AND (ophead_username ~ )\n\n\n AND (ophead_owner_username=)\n\n\n AND (ophead_owner_username ~ )\n\n\n AND (ophead_crmacct_id = )\n\n \n AND (ophead_name ~* )\n\n \n AND (ophead_active)\n\n\n AND (ophead_id=\n\n\n )\nORDER BY incdtpriority_order, ophead_target_date, ophead_name, ophead_id;\n admin 2013-07-26 0 64 orders detail used by dspOrders Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: orders\n-- Name: detail\n-- Notes: used by dspOrders\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT source_id, type, order_type, order_status, order_number, duedate,\n totalqty, relievedqty, balanceqty, balanceqty AS runningbalanceqty,\n 'qty' AS totalqty_xtnumericrole,\n 'qty' AS relievedqty_xtnumericrole,\n 'qty' AS balanceqty_xtnumericrole,\n 0 AS runningbalanceqty_xtrunningrole,\n CASE WHEN (late) THEN 'error' END AS duedate_qtforegroundrole\nFROM\n(\nSELECT poitem_id AS source_id, 1 AS type, TEXT('P/O') AS order_type,\n pohead_status AS order_status,\n TEXT(pohead_number) AS order_number,\n poitem_qty_ordered AS totalqty,\n poitem_qty_received AS relievedqty,\n noNeg(poitem_qty_ordered - poitem_qty_received) AS balanceqty,\n poitem_duedate AS duedate,\n (poitem_duedate < CURRENT_DATE) AS late\nFROM pohead, poitem, itemsite\nWHERE ((poitem_pohead_id=pohead_id)\n AND (poitem_status IN ('O','U'))\n AND (poitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=)\n AND (itemsite_warehous_id=)\n\n AND (poitem_duedate <= (CURRENT_DATE + itemsite_leadtime))\n\n AND (poitem_duedate <= (CURRENT_DATE + ))\n\n AND (poitem_duedate<=)\n\n AND (poitem_duedate BETWEEN AND )\n\n )\n\nUNION\nSELECT wo_id AS source_id, 2 AS type, TEXT('W/O') AS order_type,\n wo_status AS order_status,\n formatWONumber(wo_id) AS order_number,\n wo_qtyord AS totalqty,\n wo_qtyrcv AS relievedqty,\n noNeg(wo_qtyord - wo_qtyrcv) AS balanceqty,\n wo_duedate AS duedate,\n (wo_duedate < CURRENT_DATE) AS late \nFROM wo, itemsite\nWHERE ((wo_status<>'C')\n AND (wo_itemsite_id=itemsite_id)\n AND (itemsite_item_id=)\n AND (itemsite_warehous_id=)\n AND ( NOT IN ('C', 'Y'))\n\n AND (wo_duedate <= (CURRENT_DATE + itemsite_leadtime))\n\n AND (wo_duedate <= (CURRENT_DATE + ))\n\n AND (wo_duedate<=)\n\n AND (wo_duedate BETWEEN AND )\n\n )\n\n-- Tooling is also supply on Work Orders\nUNION\nSELECT wo_id AS source_id, 2 AS type, TEXT('W/O') AS order_type,\n wo_status AS order_status,\n formatWONumber(wo_id) AS order_number,\n womatl_qtyreq AS totalqty,\n COALESCE(sum(abs(invhist_invqty)),0) AS relievedqty,\n noNeg(womatl_qtyreq - COALESCE(sum(abs(invhist_invqty)),0)) AS balanceqty,\n wo_duedate AS duedate,\n (wo_duedate < CURRENT_DATE) AS late \nFROM womatl\n JOIN wo ON (wo_id=womatl_wo_id)\n JOIN itemsite ON (itemsite_id=womatl_itemsite_id)\n JOIN item ON (item_id=itemsite_item_id)\n LEFT OUTER JOIN womatlpost ON (womatl_id=womatlpost_womatl_id)\n LEFT OUTER JOIN invhist ON ((womatlpost_invhist_id=invhist_id)\n AND (invhist_invqty < 0))\nWHERE ((wo_status<>'C')\n AND (itemsite_item_id=)\n AND (itemsite_warehous_id=)\n AND (item_type = 'T')\n\n AND (wo_duedate <= (CURRENT_DATE + itemsite_leadtime))\n\n AND (wo_duedate <= (CURRENT_DATE + ))\n\n AND (wo_duedate<=)\n\n AND (wo_duedate BETWEEN AND )\n\n )\nGROUP BY wo_id, wo_status, womatl_qtyreq, wo_duedate\n\n\nUNION\nSELECT wo_id AS source_id, 2 AS type, TEXT('W/O') AS order_type,\n wo_status AS order_status,\n formatWONumber(wo_id) AS order_number,\n wo_qtyord AS totalqty,\n wo_qtyrcv AS relievedqty,\n noNeg(wo_qtyord - wo_qtyrcv) AS balanceqty,\n wo_duedate AS duedate,\n (wo_duedate < CURRENT_DATE) AS late\nFROM wo, xtmfg.brddist, itemsite\nWHERE ((brddist_wo_id=wo_id)\n AND (wo_status<>'C')\n AND (brddist_itemsite_id=itemsite_id)\n AND (itemsite_item_id=)\n AND (itemsite_warehous_id=)\n AND ( IN ('C', 'Y'))\n\n AND (wo_duedate <= (CURRENT_DATE + itemsite_leadtime))\n\n AND (wo_duedate <= (CURRENT_DATE + ))\n\n AND (wo_duedate<=)\n\n AND (wo_duedate BETWEEN AND )\n\n )\n\n\n\nUNION\nSELECT toitem_id AS source_id, 3 AS type, TEXT('T/O') AS order_type,\n tohead_status AS order_status,\n TEXT(tohead_number) AS order_number,\n toitem_qty_ordered AS totalqty,\n toitem_qty_received AS relievedqty,\n noNeg(toitem_qty_ordered - toitem_qty_received) AS balanceqty,\n toitem_duedate AS duedate,\n (toitem_duedate < CURRENT_DATE) AS late\nFROM tohead, toitem, itemsite\nWHERE ((toitem_tohead_id=tohead_id)\n AND (toitem_status='O')\n AND (toitem_item_id=itemsite_item_id)\n AND (tohead_dest_warehous_id=itemsite_warehous_id)\n AND (itemsite_item_id=)\n AND (itemsite_warehous_id=)\n\n AND (toitem_duedate <= (CURRENT_DATE + itemsite_leadtime))\n\n AND (toitem_duedate <= (CURRENT_DATE + ))\n\n AND (toitem_duedate<=)\n\n AND (toitem_duedate BETWEEN AND )\n\n )\n\n\n) AS data\n\nORDER BY duedate;\n admin 2013-07-26 0 111 package items replace the not-so-old pkgitem table with direct query of catalogs and tables so we never miss anything and do not have to maintain the data TODO: is there a better sort order? Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: package\n-- Name: items\n-- Notes: replace the not-so-old pkgitem table with direct query of catalogs\n-- and tables so we never miss anything and do not have to maintain the\n-- data\n-- TODO: is there a better sort order?\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT *,\n CASE WHEN pkgitem_type='C' THEN \n WHEN pkgitem_type='D' THEN \n WHEN pkgitem_type='F' THEN \n WHEN pkgitem_type='G' THEN \n WHEN pkgitem_type='I' THEN \n WHEN pkgitem_type='M' THEN \n WHEN pkgitem_type='P' THEN \n WHEN pkgitem_type='R' THEN \n WHEN pkgitem_type='S' THEN \n WHEN pkgitem_type='T' THEN \n WHEN pkgitem_type='U' THEN \n WHEN pkgitem_type='V' THEN \n WHEN pkgitem_type='sequence' THEN \n WHEN pkgitem_type='index' THEN \n ELSE pkgitem_type END AS pkgitem_type_qtdisplayrole\nFROM (\nSELECT script_id AS pkgitem_id, 'C' AS pkgitem_type,\n script_id AS pkgitem_item_id,\n script_name AS pkgitem_name,\n script_notes AS pkgitem_descrip\n FROM .pkgscript \nUNION \nSELECT cmd_id AS pkgitem_id, 'D' AS pkgitem_type,\n cmd_id AS pkgitem_item_id,\n cmd_name AS pkgitem_name,\n cmd_descrip AS pkgitem_descrip \n FROM .pkgcmd \nUNION \nSELECT pg_proc.oid AS pkgitem_id, 'F' AS pkgitem_type,\n pg_proc.oid AS pkgitem_item_id,\n proname || '(' || oidvectortypes(proargtypes)\n || ')' AS pkgitem_name,\n pg_catalog.obj_description(pg_proc.oid, 'pg_proc') AS pkgitem_descrip \n FROM pg_proc\n JOIN pg_namespace ON (pronamespace=pg_namespace.oid)\n WHERE (nspname=) \nUNION \nSELECT t.oid AS pkgitem_id, 'G' AS pkgitem_type,\n t.oid AS pkgitem_item_id,\n tgname AS pkgitem_name,\n pg_catalog.obj_description(t.oid, 'pg_trigger') AS pkgitem_descrip \n FROM pg_trigger t\n JOIN pg_class ON (tgrelid=pg_class.oid)\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\n WHERE ((nspname=) \n\n AND (tgconstraint = 0)\n AND (tgname !~ '^pkg(cmd(arg)?|image|metasql|priv|report|script|uiform)')\n\n )\nUNION \nSELECT image_id AS pkgitem_id, 'I' AS pkgitem_type,\n image_id AS pkgitem_item_id,\n image_name AS pkgitem_name,\n image_descrip AS pkgitem_descrip \n FROM .pkgimage \nUNION \nSELECT metasql_id AS pkgitem_id, 'M' AS pkgitem_type,\n metasql_id AS pkgitem_item_id,\n metasql_group || '-' || metasql_name AS pkgitem_name,\n metasql_notes AS pkgitem_descrip \n FROM .pkgmetasql \nUNION \nSELECT priv_id AS pkgitem_id, 'P' AS pkgitem_type,\n priv_id AS pkgitem_item_id,\n priv_module || '.' || priv_name AS pkgitem_name,\n priv_descrip AS pkgitem_descrip \n FROM .pkgpriv \nUNION \nSELECT report_id AS pkgitem_id, 'R' AS pkgitem_type,\n report_id AS pkgitem_item_id,\n report_name AS pkgitem_name,\n report_descrip AS pkgitem_descrip \n FROM .pkgreport \nUNION \nSELECT n.oid AS pkgitem_id, 'S' AS pkgitem_type,\n n.oid AS pkgitem_item_id,\n nspname AS pkgitem_name,\n pg_catalog.obj_description(n.oid, 'pg_namespace') AS pkgitem_descrip \n FROM pg_namespace n\n WHERE (nspname=) \nUNION \nSELECT c.oid AS pkgitem_id, 'T' AS pkgitem_type,\n c.oid AS pkgitem_item_id,\n relname AS pkgitem_name,\n pg_catalog.obj_description(c.oid, 'pg_class') AS pkgitem_descrip \n FROM pg_class c\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\n WHERE ((nspname=)\n AND (relkind='r')\n\n AND (relname !~ '^pkg(cmd(arg)?|image|metasql|priv|report|script|uiform)$')\n\n )\nUNION \nSELECT uiform_id AS pkgitem_id, 'U' AS pkgitem_type,\n uiform_id AS pkgitem_item_id,\n uiform_name AS pkgitem_name,\n uiform_notes AS pkgitem_descrip \n FROM .pkguiform \nUNION \nSELECT c.oid AS pkgitem_id, 'V' AS pkgitem_type,\n c.oid AS pkgitem_item_id,\n relname AS pkgitem_name,\n pg_catalog.obj_description(c.oid, 'pg_class') AS pkgitem_descrip \n FROM pg_class c\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\n WHERE ((nspname=)\n AND (relkind='v'))\n\nUNION\nSELECT c.oid AS pkgitem_id, 'sequence' AS pkgitem_type,\n c.oid AS pkgitem_item_id,\n relname AS pkgitem_name,\n pg_catalog.obj_description(c.oid, 'pg_class') AS pkgitem_descrip \n FROM pg_class c\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\n WHERE ((nspname=)\n AND (relkind='S'))\nUNION\nSELECT c.oid AS pkgitem_id, 'index' AS pkgitem_type,\n c.oid AS pkgitem_item_id,\n relname AS pkgitem_name,\n pg_catalog.obj_description(c.oid, 'pg_class') AS pkgitem_descrip \n FROM pg_class c\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\n WHERE ((nspname=)\n AND (relkind='i'))\n\n) AS pkgitem \nORDER BY pkgitem_type_qtdisplayrole, pkgitem_name;\n admin 2013-07-26 0 69 packingList shipment used by printPackingList Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: packingList\n-- Name: shipment\n-- Notes: used by printPackingList\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT shiphead_order_id, shiphead_order_type, shiphead_shipform_id, cohead_number AS number\nFROM shiphead, cohead\nWHERE ((shiphead_id=)\n AND (cohead_id=shiphead_order_id)\n AND (shiphead_order_type='SO'))\n\nUNION\nSELECT shiphead_order_id, shiphead_order_type, shiphead_shipform_id, tohead_number AS number\nFROM shiphead, tohead\nWHERE ((shiphead_id=)\n AND (tohead_id=shiphead_order_id)\n AND (shiphead_order_type='TO'))\n\n;\n admin 2013-07-26 0 67 packingListBatch detail used by packingListBatch Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: packingListBatch\n-- Name: detail\n-- Notes: used by packingListBatch\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT cohead_id, pack_shiphead_id, \n cohead_number AS order_number, pack_head_type,\n cohead_shipvia AS shipvia,\n formatShipmentNumber(pack_shiphead_id) AS shipment_number, \n cust_number AS number, cohead_billtoname AS name,\n CASE WHEN (cohead_holdtype='N') THEN \n WHEN (cohead_holdtype='C') THEN \n WHEN (cohead_holdtype='S') THEN \n WHEN (cohead_holdtype='P') THEN \n WHEN (cohead_holdtype='R') THEN \n ELSE \n END AS f_holdtype,\n pack_printed\nFROM pack, cohead, custinfo\nWHERE pack_head_id=cohead_id \n AND cohead_cust_id=cust_id \n AND pack_head_type='SO' \n\n AND checkSOSitePrivs(cohead_id)\nUNION \nSELECT tohead_id, pack_shiphead_id, \n tohead_number AS order_number, pack_head_type,\n tohead_shipvia AS shipvia,\n formatShipmentNumber(pack_shiphead_id) AS shipment_number, \n tohead_destname AS number, tohead_destcntct_name AS name,\n '' AS f_holdtype,\n pack_printed\nFROM pack, tohead \nWHERE ((pack_head_id=tohead_id)\n AND (pack_head_type='TO')) \n\nORDER BY 3;\n admin 2013-07-26 0 68 packingListBatch print used by packingListBatch Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: packingListBatch\n-- Name: print\n-- Notes: used by packingListBatch\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT pack_id, pack_head_id, pack_head_type, pack_shiphead_id,\n COALESCE(shipform_report_name, findCustomerForm(cohead_cust_id, 'P')) AS packform,\n findCustomerForm(cohead_cust_id, 'L') AS pickform \nFROM pack JOIN cohead ON (cohead_id=pack_head_id)\n LEFT OUTER JOIN shipform ON (shipform_id=cohead_shipform_id)\nWHERE ((checkSOSitePrivs(cohead_id))\n AND (pack_head_type='SO')\n AND (NOT pack_printed) ) \n\nUNION \nSELECT pack_id, pack_head_id, pack_head_type, pack_shiphead_id,\n COALESCE(shipform_report_name, findTOForm(tohead_id, 'P')) AS packform,\n findTOForm(tohead_id, 'L') AS pickform \nFROM pack JOIN tohead ON (tohead_id=pack_head_id)\n LEFT OUTER JOIN shipform ON (shipform_id=tohead_shipform_id)\nWHERE ((pack_head_type='TO')\n AND (NOT pack_printed))\n\n;\n admin 2013-07-26 0 65 packingListBatchByShipVia print used by printPackingListBatchByShipVia Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: packingListBatchByShipVia\n-- Name: print\n-- Notes: used by printPackingListBatchByShipVia\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT DISTINCT pack_head_id, pack_head_type, pack_shiphead_id, getSoStatus(cohead_id) AS orderhead_status,\n COALESCE(shipform_report_name, findCustomerForm(cohead_cust_id, 'P')) AS packform,\n findCustomerForm(cohead_cust_id, 'L') AS pickform\nFROM pack JOIN cohead ON (cohead_id=pack_head_id)\n JOIN coitem ON (coitem_cohead_id = cohead_id) \n LEFT OUTER JOIN shipform ON (shipform_id=cohead_shipform_id)\nWHERE ( (NOT pack_printed)\n AND (pack_head_type='SO')\n AND (getSoStatus(cohead_id) <> 'C') \n AND (cohead_shipvia=)\n AND (checkSOSitePrivs(cohead_id))\n AND\t(coitem_scheddate BETWEEN AND ) )\n\n\nUNION ALL\nSELECT DISTINCT pack_head_id, pack_head_type, pack_shiphead_id, tohead_status AS orderhead_status,\n COALESCE(shipform_report_name, findTOForm(tohead_id, 'P')) AS packform,\n findTOForm(tohead_id, 'L') AS pickform\nFROM pack JOIN tohead ON (tohead_id=pack_head_id)\n JOIN toitem ON (toitem_tohead_id = tohead_id) \n LEFT OUTER JOIN shipform ON (shipform_id=tohead_shipform_id)\nWHERE ( (NOT pack_printed)\n AND (pack_head_type='TO')\n AND (tohead_status <> 'C') \n AND (tohead_shipvia=)\n AND\t(toitem_duedate BETWEEN AND ) )\n\n\n;\n admin 2013-07-26 0 66 packingListBatchByShipVia shipVia used by printPackingListBatchByShipVia Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: packingListBatchByShipVia\n-- Name: shipVia\n-- Notes: used by printPackingListBatchByShipVia\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT max(id), shipvia\nFROM (\nSELECT max(cohead_id) AS id, cohead_shipvia AS shipvia\nFROM pack, cohead, coitem\nWHERE ( (NOT pack_printed)\n AND (cohead_id=pack_head_id)\n AND (pack_head_type='SO')\n AND (coitem_cohead_id=cohead_id)\n AND (coitem_status='O') )\nGROUP BY cohead_shipvia\n\nUNION\nSELECT max(tohead_id) AS id, tohead_shipvia AS shipvia\nFROM pack, tohead\nWHERE ( (NOT pack_printed)\n AND (tohead_status = 'O')\n AND (tohead_id=pack_head_id)\n AND (pack_head_type='TO') )\nGROUP BY tohead_shipvia\n\n) data\nGROUP BY shipvia\nORDER BY shipvia\n admin 2013-07-26 0 267 partiallyShippedOrders detail used by dspPartiallyShippedOrders Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: partiallyShippedOrders\n-- Name: detail\n-- Notes: used by dspPartiallyShippedOrders\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT CASE WHEN (cohead_holdtype IN ('P', 'C', 'R')) THEN -1\n ELSE cohead_id\n END AS _coheadid, cohead_id,\n cohead_holdtype, cohead_number, cust_name,\n CASE WHEN (cohead_holdtype='N') THEN \n WHEN (cohead_holdtype='C') THEN \n WHEN (cohead_holdtype='S') THEN \n WHEN (cohead_holdtype='P') THEN \n WHEN (cohead_holdtype='R') THEN \n ELSE \n END AS f_holdtype,\n cohead_orderdate,\n (MIN(coitem_scheddate)) AS minscheddate,\n cohead_packdate,\n SUM( (noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) *\n (coitem_price / coitem_price_invuomratio) ) AS extprice,\n currConcat(cohead_curr_id) AS currAbbr,\n SUM(currToBase(cohead_curr_id,\n (noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) *\n (coitem_price / coitem_price_invuomratio),\n CURRENT_DATE)) AS extprice_base,\n 'curr' AS extprice_xtnumericrole,\n 'curr' AS extprice_base_xtnumericrole,\n \n 0 AS extprice_xttotalrole \n \n 0 AS extprice_base_xttotalrole \n \nFROM cohead, itemsite, item, custinfo, coitem\nWHERE ( (coitem_cohead_id=cohead_id)\n AND (cohead_cust_id=cust_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (coitem_status='O')\n AND (cohead_id IN ( SELECT DISTINCT coitem_cohead_id\n FROM coitem\n WHERE (coitem_qtyshipped > 0) ))\n AND (coitem_qtyshipped < coitem_qtyord)\n AND (coitem_scheddate BETWEEN \n AND )\n \n AND (itemsite_warehous_id=)\n \n ) \nGROUP BY cohead_id, cohead_number, cust_name,\n cohead_holdtype, cohead_orderdate, cohead_packdate,\n cohead_curr_id \nORDER BY minscheddate, cohead_number;\n admin 2013-07-26 0 268 pendingAvailability detail used by dspPendingAvailability Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: pendingAvailability\n-- Name: detail\n-- Notes: used by dspPendingAvailability\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\n\n-- Indented BOM\nSELECT itemsite_id, reorderlevel,\n bomdata_bomwork_level,\n bomdata_bomwork_id,\n bomdata_bomwork_parent_id,\n bomdata_bomwork_seqnumber AS bomitem_seqnumber,\n bomdata_item_number AS item_number,\n bomdata_itemdescription AS item_descrip,\n bomdata_uom_name AS uom_name,\n pendalloc,\n ordered,\n qoh,\n (totalalloc + pendalloc) AS totalalloc,\n (qoh + ordered - (totalalloc + pendalloc)) AS totalavail,\n 'qty' AS pendalloc_xtnumericrole,\n 'qty' AS ordered_xtnumericrole,\n 'qty' AS qoh_xtnumericrole,\n 'qty' AS totalalloc_xtnumericrole,\n 'qty' AS totalavail_xtnumericrole,\n CASE WHEN (qoh < pendalloc) THEN 'error' END AS qoh_qtforegroundrole,\n CASE WHEN ((qoh + ordered - (totalalloc + pendalloc)) < reorderlevel) THEN 'error'\n WHEN ((qoh + ordered - (totalalloc + pendalloc)) = reorderlevel) THEN 'warning'\n END AS totalavail_qtforegroundrole,\n bomdata_bomwork_level - 1 AS xtindentrole\n FROM ( SELECT itemsite_id,\n CASE WHEN(itemsite_useparams)\n THEN itemsite_reorderlevel\n ELSE 0.0\n END AS reorderlevel,\n ib.*,\n ((bomdata_qtyreq::NUMERIC * ) * (1 + bomdata_scrap::NUMERIC)) AS pendalloc,\n qtyAllocated(itemsite_id, DATE()) AS totalalloc,\n noNeg(itemsite_qtyonhand) AS qoh,\n qtyOrdered(itemsite_id, DATE()) AS ordered\n FROM indentedBOM(,\n getActiveRevId('BOM', ),\n 0,0) ib LEFT OUTER JOIN\n itemsite ON ((itemsite_item_id=bomdata_item_id)\n AND (itemsite_warehous_id=))\n WHERE (bomdata_item_id > 0)\n \n AND (CURRENT_DATE BETWEEN bomdata_effective AND (bomdata_expires-1))\n \n AND ( BETWEEN bomdata_effective AND (bomdata_expires-1))\n \n ) AS data\n\n WHERE ((qoh + ordered - (totalalloc + pendalloc)) < 0)\n \nORDER BY bomworkSequence(bomdata_bomwork_id);\n\n\n\n-- Single Level BOM\nSELECT itemsite_id, bomitem_seqnumber, item_number, item_descrip, uom_name,\n pendalloc, (totalalloc + pendalloc) AS totalalloc,\n qoh, (qoh + ordered - (totalalloc + pendalloc)) AS totalavail,\n reorderlevel,\n 'qty' AS pendalloc_xtnumericrole,\n 'qty' AS totalalloc_xtnumericrole,\n 'qty' AS qoh_xtnumericrole,\n 'qty' AS totalavail_xtnumericrole,\n CASE WHEN (qoh < pendalloc) THEN 'error' END AS qoh_qtforegroundrole,\n CASE WHEN ((qoh + ordered - (totalalloc + pendalloc)) < reorderlevel) THEN 'error'\n WHEN ((qoh + ordered - (totalalloc + pendalloc)) = reorderlevel) THEN 'warning'\n END AS totalavail_qtforegroundrole\nFROM ( SELECT itemsite_id, bomitem_seqnumber, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS item_descrip, uom_name,\n ((itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL,\n (bomitem_qtyfxd + bomitem_qtyper * ) * (1 + bomitem_scrap)))) AS pendalloc,\n qtyAllocated(itemsite_id, DATE()) AS totalalloc,\n noNeg(itemsite_qtyonhand) AS qoh,\n qtyOrdered(itemsite_id, DATE()) AS ordered,\n CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel ELSE 0.0 END AS reorderlevel\n FROM itemsite, item, bomitem(), uom\n WHERE ( (bomitem_item_id=itemsite_item_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=)\n \n AND (CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires-1))\n \n AND ( BETWEEN bomitem_effective AND (bomitem_expires-1))\n \n )\n ) AS data\n\n WHERE ((qoh + ordered - (totalalloc + pendalloc)) < 0)\n \nORDER BY bomitem_seqnumber;\n\n \n admin 2013-07-26 0 270 poDeliveryDateVariances detail used by dspPoDeliveryDateVariancesByItem, dspPoDeliveryDateVariancesByVendor Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: poDeliveryDateVariances\n-- Name: detail\n-- Notes: used by dspPoDeliveryDateVariancesByItem, dspPoDeliveryDateVariancesByVendor\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT \n recv.*, vend_name,\n firstLine(recv_vend_item_number) AS itemnumber,\n firstLine(recv_vend_item_descrip) AS itemdescrip,\n DATE(recv_rlsd_duedate) - DATE(COALESCE(pohead_released, pohead_orderdate)) AS req_leadtime,\n DATE(recv_duedate) - DATE(COALESCE(pohead_released, pohead_orderdate)) AS agrd_leadtime,\n DATE(recv_date) - DATE(COALESCE(pohead_released, pohead_orderdate)) AS real_leadtime,\n DATE(recv_date) - DATE(recv_rlsd_duedate) AS req_diff,\n\t DATE(recv_date) - DATE(recv_duedate) AS argd_diff,\n DATE(recv_date) AS receivedate,\n formatDate(COALESCE(pohead_released, pohead_orderdate)) AS orderdate,\n formatDate(recv_date) AS f_recv_date,\n recv_rlsd_duedate AS release_duedate, \n\t recv_duedate AS argd_duedate,\n CASE WHEN (DATE(recv_date) - DATE(recv_rlsd_duedate) > 0) THEN 'error'\n END AS req_diff_qtforegroundrole,\n CASE WHEN (DATE(recv_date) - DATE(recv_duedate) > 0) THEN 'error'\n END AS argd_diff_qtforegroundrole, \n\t CASE WHEN (DATE(recv_date) > DATE(recv_duedate)) THEN 'error'\t\t\t \n END AS receivedate_qtforegroundrole,\t\t\t \n 'qty' AS recv_qty_xtnumericrole\n \n recv_id, recv_order_number, vend_name,\n DATE(recv_date) AS receivedate,\n formatDate(COALESCE(pohead_released, pohead_orderdate)) AS orderdate,\n firstLine(recv_vend_item_number) AS venditemnumber,\n firstLine(recv_vend_item_descrip) AS venditemdescrip,\n recv_qty, recv_duedate, recv_date,\n formatDate(recv_date) AS f_recv_date,\n DATE(recv_rlsd_duedate) - DATE(COALESCE(pohead_released, pohead_orderdate)) AS req_leadtime,\n DATE(recv_duedate) - DATE(COALESCE(pohead_released, pohead_orderdate)) AS agrd_leadtime,\n DATE(recv_date) - DATE(COALESCE(pohead_released, pohead_orderdate)) AS real_leadtime,\n DATE(recv_date) - DATE(recv_rlsd_duedate) AS req_diff,\n DATE(recv_date) - DATE(recv_duedate) AS argd_diff,\n firstLine(item.item_number) AS itemnumber,\n recv_rlsd_duedate AS release_duedate,\n recv_duedate AS argd_duedate,\n CASE WHEN (DATE(recv_date) - DATE(recv_rlsd_duedate) > 0) THEN 'error'\n END AS req_diff_qtforegroundrole,\n CASE WHEN (DATE(recv_date) - DATE(recv_duedate) > 0) THEN 'error'\n END AS argd_diff_qtforegroundrole,\n CASE WHEN (DATE(recv_date) > DATE(recv_duedate)) THEN 'error'\n END AS receivedate_qtforegroundrole,\n 'qty' AS recv_qty_xtnumericrole\n \n\nFROM recv LEFT OUTER JOIN vendinfo ON (vend_id=recv_vend_id)\n LEFT OUTER JOIN pohead ON (pohead_number=recv_order_number AND recv_order_type='PO')\n LEFT OUTER JOIN (itemsite JOIN item ON (item_id=itemsite_item_id)) ON (itemsite_id=recv_itemsite_id)\nWHERE ( TRUE\n\n AND (itemsite_item_id=)\n\n\n AND (DATE(recv_date) BETWEEN AND )\n\n\n AND (itemsite_warehous_id=)\n\n\n AND (recv_agent_username=)\n\n\n AND (vend_id=)\n\n\n AND (recv_agent_username=)\n\n )\nORDER BY\n recv_date DESC;\n admin 2013-07-26 0 62 opportunitiesByCRM detail used by crmaccount Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: opportunitiesByCRM\n-- Name: detail\n-- Notes: used by crmaccount\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT ophead_id, *,\n currConcat(ophead_curr_id) AS ophead_currabbr,\n 'currval' AS ophead_amount_xtnumericrole\n FROM ophead\n LEFT OUTER JOIN crmacct ON (ophead_crmacct_id=crmacct_id)\n LEFT OUTER JOIN opstage ON (ophead_opstage_id=opstage_id)\n LEFT OUTER JOIN opsource ON (ophead_opsource_id=opsource_id)\n LEFT OUTER JOIN optype ON (ophead_optype_id=optype_id)\n WHERE((crmacct_id=)\n\n AND (ophead_owner_username=)\n\n AND (ophead_owner_username ~ )\n\n )\n ORDER BY ophead_target_date;\n admin 2013-07-26 0 272 poItems detail used by dspPoItemsByVendor, dspPoItemsByItem, dspPoItemsByDate Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: poItems\n-- Name: detail\n-- Notes: used by dspPoItemsByVendor, dspPoItemsByItem, dspPoItemsByDate\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT pohead_id, poitem_id, pohead_number, poitem_status,\n CASE WHEN(poitem_status='C') THEN \n WHEN(poitem_status='U') THEN \n WHEN(poitem_status='O' AND ((poitem_qty_received-poitem_qty_returned) > 0) \n AND (poitem_qty_ordered>(poitem_qty_received-poitem_qty_returned))) \n THEN \n WHEN(poitem_status='O' AND ((poitem_qty_received-poitem_qty_returned) > 0) \n AND (poitem_qty_ordered<=(poitem_qty_received-poitem_qty_returned))) \n THEN \n WHEN(poitem_status='O') THEN \n ELSE poitem_status\n END AS f_poitem_status,\n vend_name,\n (SELECT warehous_code\n FROM whsinfo\n WHERE (COALESCE(itemsite_warehous_id, pohead_warehous_id)=warehous_id)) AS warehous_code,\n COALESCE(item_number, ) AS itemnumber,\n poitem_vend_item_number, poitem_vend_uom,\n COALESCE(item_descrip1, firstLine(poitem_vend_item_descrip)) AS itemdescrip,\n COALESCE(uom_name, poitem_vend_uom) AS itemuom,\n poitem_duedate, poitem_qty_ordered, poitem_qty_received, poitem_qty_returned,\n CASE WHEN (poitem_duedate < CURRENT_DATE) THEN 'error' END AS poitem_duedate_qtforegroundrole,\n 'qty' AS poitem_qty_ordered_xtnumericrole,\n 'qty' AS poitem_qty_received_xtnumericrole,\n 'qty' AS poitem_qty_returned_xtnumericrole \n FROM pohead\n JOIN poitem ON (pohead_id=poitem_pohead_id)\n JOIN vendinfo ON (pohead_vend_id=vend_id)\n LEFT OUTER JOIN (itemsite\n JOIN item ON (itemsite_item_id=item_id)\n JOIN uom ON (item_inv_uom_id=uom_id))\n ON (poitem_itemsite_id=itemsite_id)\nWHERE (TRUE\n\n AND (poitem_duedate BETWEEN AND )\n\n\n AND (((itemsite_id IS NULL) AND\n (pohead_warehous_id=) )\n OR\n ((itemsite_id IS NOT NULL) AND\n (itemsite_warehous_id=) ) )\n\n\n AND (pohead_agent_username=)\n\n\n AND (poitem_status='O')\n\n\n AND (poitem_status='C')\n\n\n AND (pohead_number=)\n\n\n AND (pohead_vend_id=) \n\n AND (vend_vendtype_id=)\n\n AND (vend_vendtype_id IN (SELECT vendtype_id\n FROM vendtype\n WHERE (vendtype_code ~ )))\n\n\n AND (itemsite_item_id=) \n\n )\nORDER BY poitem_duedate, pohead_number, poitem_linenumber\n;\n admin 2013-07-26 0 432 poItems list used by purchaseOrder Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: poItems\n-- Name: list\n-- Notes: used by purchaseOrder\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT poitem.*,\n CASE WHEN(poitem_status='C') THEN \n WHEN(poitem_status='U') THEN \n WHEN(poitem_status='O' AND ((poitem_qty_received-poitem_qty_returned) > 0) AND (poitem_qty_ordered>(poitem_qty_received-poitem_qty_returned))) THEN \n WHEN(poitem_status='O' AND ((poitem_qty_received-poitem_qty_returned) > 0) AND (poitem_qty_ordered<=(poitem_qty_received-poitem_qty_returned))) THEN \n WHEN(poitem_status='O') THEN \n ELSE poitem_status\n END AS poitemstatus,\n CASE WHEN (poitem_order_type='S') THEN \n WHEN (poitem_order_type='W') THEN \n ELSE ''\n END AS demand_type,\n CASE WHEN (poitem_order_type='S') THEN formatSoNumber(coitem_id)\n WHEN (poitem_order_type='W') THEN formatWoNumber(womatl_wo_id)\n ELSE ''\n END AS order_number,\n CASE WHEN (itemsite_id IS NULL) THEN poitem_vend_item_number\n ELSE item_number\n END AS item_number,\n CASE WHEN (itemsite_id IS NULL) THEN firstLine(poitem_vend_item_descrip)\n ELSE (item_descrip1 || ' ' || item_descrip2)\n END AS item_descrip,\n poitem_rlsd_duedate AS orgl_duedate,\n (poitem_unitprice * poitem_qty_ordered) AS extprice,\n CASE WHEN(poitem_status='C') THEN \n WHEN(poitem_status='U') THEN \n WHEN(poitem_status='O' AND ((poitem_qty_received-poitem_qty_returned) > 0) AND (poitem_qty_ordered>(poitem_qty_received-poitem_qty_returned))) THEN \n WHEN(poitem_status='O' AND ((poitem_qty_received-poitem_qty_returned) > 0) AND (poitem_qty_ordered<=(poitem_qty_received-poitem_qty_returned))) THEN \n WHEN(poitem_status='O') THEN \n ELSE poitem_status\n END AS poitem_status_qtdisplayrole,\n 'qty' AS poitem_qty_ordered_xtnumericrole,\n 'qty' AS poitem_qty_received_xtnumericrole,\n 'qty' AS poitem_qty_returned_xtnumericrole,\n 'qty' AS poitem_qty_vouchered_xtnumericrole,\n 'purchprice' AS poitem_unitprice_xtnumericrole,\n 'curr' AS extprice_xtnumericrole,\n 'curr' AS poitem_freight_xtnumericrole,\n 'curr' AS poitem_freight_received_xtnumericrole,\n 'curr' AS poitem_freight_vouchered_xtnumericrole,\n 'curr' AS poitem_stdcost_xtnumericrole\nFROM pohead JOIN poitem ON (poitem_pohead_id=pohead_id)\n LEFT OUTER JOIN itemsite ON (poitem_itemsite_id=itemsite_id)\n LEFT OUTER JOIN item ON (itemsite_item_id=item_id)\n LEFT OUTER JOIN coitem ON (poitem_order_type='S' AND poitem_order_id = coitem_id)\n LEFT OUTER JOIN womatl ON (poitem_order_type='W' AND poitem_order_id = womatl_id)\nWHERE (poitem_pohead_id=)\nORDER BY poitem_linenumber;\n admin 2013-07-26 0 130 poPriceVariances detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: poPriceVariances\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT *\n,\n formatDate(distdate) AS f_date,\n formatQty(recv_qty) AS f_qty,\n formatCost(recv_recvcost) AS f_recv_recvcost,\n formatMoney(recv_value) AS f_recv_value,\n formatPrice(vouchercost) AS f_vouchercost,\n formatMoney(voucher_value) AS f_voucher_value,\n formatMoney(variance) AS f_variance, \n formatPrcnt(varprcnt/100) AS f_varprcnt\n\n FROM (\nSELECT recv_id, recv_order_number, recv_date, recv_order_type,\n DATE(recv_date) AS receivedate,\n vohead_distdate AS distdate,\n vend_number, vend_name,\n COALESCE(item_number, ( || recv_vend_item_number)) AS itemnumber,\n firstLine(COALESCE(item_descrip1, recv_vend_item_descrip)) AS itemdescrip,\n recv_qty,\n recv_purchcost,\n currConcat(recv_freight_curr_id) AS poCurrAbbr,\n\n COALESCE((recv_value / CASE WHEN (recv_qty <> 0.0) THEN recv_qty ELSE 1.0 END), 0.0) AS recv_recvcost,\n COALESCE(recv_value, 0.0) AS recv_value,\n COALESCE(currToBase(vohead_curr_id, SUM(vodist_amount) / CASE WHEN (SUM(vodist_qty) <> 0.0) THEN SUM(vodist_qty) ELSE 1.0 END, vohead_distdate), 0.0) AS vouchercost,\n COALESCE(currToBase(vohead_curr_id, SUM(vodist_amount) / CASE WHEN (SUM(vodist_qty) <> 0.0) THEN SUM(vodist_qty) ELSE 1.0 END, vohead_distdate) * recv_qty, 0.0) AS voucher_value,\n COALESCE(currToBase(vohead_curr_id, SUM(vodist_amount) / CASE WHEN (SUM(vodist_qty) <> 0.0) THEN SUM(vodist_qty) ELSE 1.0 END, vohead_distdate) * recv_qty - recv_value, 0.0) AS variance,\n CASE WHEN (COALESCE(recv_value, 0.0) <> 0.0) THEN\n ((currToBase(vohead_curr_id, SUM(vodist_amount) / CASE WHEN (SUM(vodist_qty) <> 0.0) THEN SUM(vodist_qty) ELSE 1.0 END, vohead_distdate) *\n recv_qty / recv_value) -1.0) * 100.0\n ELSE 100.0 END AS varprcnt, \n currConcat(baseCurrId()) AS currAbbr,\n '0' AS recv_value_xttotalrole,\n '0' AS voucher_value_xttotalrole,\n '0' AS variance_xttotalrole,\n -- local Currency\n COALESCE(currToLocal(vohead_curr_id, (recv_value / CASE WHEN (recv_qty <> 0.0) THEN recv_qty ELSE 1.0 END), vohead_distdate), 0.0) AS recv_recvcost,\n COALESCE(currToLocal(vohead_curr_id, recv_value, vohead_distdate), 0.0) AS recv_value,\n COALESCE(SUM(vodist_amount) / CASE WHEN (SUM(vodist_qty) <> 0.0) THEN SUM(vodist_qty) ELSE 1.0 END, 0.0) AS vouchercost,\n COALESCE(SUM(vodist_amount) / CASE WHEN (SUM(vodist_qty) <> 0.0) THEN SUM(vodist_qty) ELSE 1.0 END * recv_qty, 0.0) AS voucher_value,\n COALESCE(SUM(vodist_amount) / CASE WHEN (SUM(vodist_qty) <> 0.0) THEN SUM(vodist_qty) ELSE 1.0 END * recv_qty - currToLocal(vohead_curr_id, recv_value, vohead_distdate), 0.0) AS variance,\n CASE WHEN (COALESCE(recv_value, 0.0) <> 0.0) THEN\n ((SUM(vodist_amount) / CASE WHEN (SUM(vodist_qty) <> 0.0) THEN SUM(vodist_qty) ELSE 1.0 END *\n recv_qty / currToLocal(vohead_curr_id, recv_value, vohead_distdate)) -1.0) * 100.0\n ELSE 100.0 END AS varprcnt, \n currConcat(vohead_curr_id) AS currAbbr,\n\n 'qty' AS recv_qty_xtnumericrole,\n 'purchprice' AS recv_purchcost_xtnumericrole,\n 'curr' AS recv_value_xtnumericrole,\n 'purchprice' AS vouchercost_xtnumericrole,\n 'curr' AS voucher_value_xtnumericrole,\n 'cost' AS recv_recvcost_xtnumericrole,\n 'curr' AS variance_xtnumericrole,\n 'prcnt' AS varprcnt_xtnumericrole\nFROM vendinfo\n JOIN vendtype ON (vend_vendtype_id=vendtype_id), recv\n LEFT OUTER JOIN (\n itemsite JOIN item ON (itemsite_item_id=item_id) )\n ON (recv_itemsite_id=itemsite_id)\n JOIN vodist ON ((vodist_poitem_id=recv_orderitem_id)\n AND (vodist_vohead_id=recv_vohead_id))\n JOIN vohead ON ((vodist_vohead_id=vohead_id) \n AND (vohead_posted))\nWHERE ( (recv_vend_id=vend_id)\nAND (recv_order_type='PO')\n\n AND (vend_id=)\n\n AND (vendtype_id=)\n\n AND (vendtype_code ~ )\n\n AND (DATE(vohead_distdate) BETWEEN AND ) \n\n AND (itemsite_warehous_id=)\n\n\n AND (itemsite_item_id=)\n\n\n AND (recv_agent_username=)\n\n )\nGROUP BY recv_id, recv_order_number, recv_order_type, recv_date, item_number, recv_vend_item_number,\n item_descrip1, recv_vend_item_descrip, recv_qty, recv_purchcost, recv_recvcost,\n vohead_curr_id, recv_freight_curr_id, vohead_docdate, vend_number, vend_name,\n recv_value, vohead_distdate\n) data\n\nWHERE (variance != 0)\n\nORDER BY distdate, recv_order_number DESC;\n admin 2013-07-26 0 122 updateprices createselsched Notes: Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: updateprices\n-- Name: createselsched\n-- Notes:\n-- Notes:\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nCREATE TEMPORARY TABLE selsched (\n selsched_ipshead_id INTEGER PRIMARY KEY );\n admin 2013-07-26 0 271 poHistory detail used by dspPoHistory Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: poHistory\n-- Name: detail\n-- Notes: used by dspPoHistory\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT poitem_id, poitem.*,\n COALESCE(item_number, ) AS itemnumber,\n COALESCE(uom_name, ) AS uomname,\n CASE WHEN (LENGTH(TRIM(BOTH ' ' FROM poitem_vend_item_descrip)) <= 0)\n THEN(item_descrip1 || ' ' || item_descrip2)\n ELSE poitem_vend_item_descrip\n END AS itemdescription,\n 'qty' AS poitem_qty_ordered_xtnumericrole,\n 'qty' AS poitem_qty_received_xtnumericrole,\n 'qty' AS poitem_qty_returned_xtnumericrole\nFROM poitem LEFT OUTER JOIN\n ( itemsite JOIN item\n ON (itemsite_item_id=item_id) JOIN uom ON (item_inv_uom_id=uom_id))\n ON (poitem_itemsite_id=itemsite_id)\nWHERE (poitem_pohead_id=)\nORDER BY poitem_linenumber;\n admin 2013-07-26 0 273 poReturns detail used by dspPoReturnsByVendor Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: poReturns\n-- Name: detail\n-- Notes: used by dspPoReturnsByVendor\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT poreject_id, poreject_ponumber, vend_name,\n poreject_date, poreject_qty,\n poreject_vend_item_number, poreject_vend_item_descrip,\n rjctcode_code,\n 'qty' AS poreject_qty_xtnumericrole \nFROM poreject, vendinfo, itemsite, rjctcode\nWHERE ((poreject_posted)\n AND (poreject_vend_id=vend_id)\n AND (poreject_rjctcode_id=rjctcode_id)\n AND (poreject_itemsite_id=itemsite_id)\n AND (vend_id=)\n AND (DATE(poreject_date) BETWEEN AND )\n\n AND (itemsite_warehous_id=)\n\n\n AND (poreject_agent_username=)\n\n ) \nORDER BY poreject_date DESC;\n admin 2013-07-26 0 441 postCountTags post Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: postCountTags\n-- Name: post\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT MIN(postCountTag(invcnt_id, )) AS result\n FROM invcnt, itemsite, item\n WHERE ((invcnt_itemsite_id=itemsite_id)\n AND (invcnt_qoh_after IS NOT NULL)\n AND (NOT invcnt_posted)\n AND (itemsite_item_id=item_id)\n\n AND (itemsite_warehous_id=)\n\n\n\n AND (item_classcode_id=)\n\n AND (item_classcode_id IN (SELECT classcode_id\n FROM classcode\n WHERE (classcode_code ~ )))\n\n AND (itemsite_plancode_id=)\n\n AND (itemsite_plancode_id IN (SELECT plancode_id\n FROM plancode\n WHERE (plancode_code ~ )))\n\n);\n admin 2013-07-26 0 414 postJournals detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: postJournals\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT *\nFROM (\n SELECT 0 AS id,\n sltrans_source,\n 0 AS xtindentrole,\n CASE WHEN sltrans_source = 'A/P' THEN \n WHEN sltrans_source = 'A/R' THEN \n WHEN sltrans_source = 'G/L' THEN \n WHEN sltrans_source = 'I/M' THEN \n WHEN sltrans_source = 'P/D' THEN \n WHEN sltrans_source = 'S/O' THEN \n WHEN sltrans_source = 'S/R' THEN \n WHEN sltrans_source = 'W/O' THEN \n ELSE \n END AS description, \n NULL AS debit, \n NULL AS credit, \n count(sltrans_id) AS journals\n FROM sltrans\n WHERE ((NOT sltrans_posted)\n AND (sltrans_amount > 0)\n AND (sltrans_date BETWEEN AND ))\n GROUP BY sltrans_source\n\nUNION ALL\n SELECT \n sltrans_accnt_id AS id,\n sltrans_source,\n 1 AS xtindentrole,\n formatGLAccountLong(sltrans_accnt_id) AS description,\n CASE WHEN SUM(sltrans_amount) < 0 THEN ABS(SUM(sltrans_amount))\n END AS debit,\n CASE WHEN SUM(sltrans_amount) > 0 THEN SUM(sltrans_amount)\n END AS credit,\n NULL AS journals\n FROM sltrans\n WHERE ((NOT sltrans_posted)\n AND (sltrans_date BETWEEN AND ))\n GROUP BY sltrans_accnt_id, sltrans_source\n\n) data\nORDER BY sltrans_source, xtindentrole\n admin 2013-07-26 0 269 pendingBOMChanges detail used by dspPendingBOMChanges Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: pendingBOMChanges\n-- Name: detail\n-- Notes: used by dspPendingBOMChanges\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT bomitem_id, actiondate, action,\n bomitem_seqnumber, item_number, description,\n uom_name, qtyfxd, qtyper,\n bomitem_scrap, actiondate,\n 'qty' AS qtyfxd_xtnumericrole,\n 'qtyper' AS qtyper_xtnumericrole,\n 'percent' AS bomitem_scrap_xtnumericrole \nFROM (SELECT bomitem_id, AS action,\n bomitem_seqnumber, item_number, (item_descrip1 || ' ' || item_descrip2) AS description,\n uom_name,\n (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyfxd) AS qtyfxd,\n (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper) AS qtyper,\n bomitem_scrap, bomitem_effective AS actiondate \n FROM bomitem(,), item, uom \n WHERE ((bomitem_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (bomitem_effective BETWEEN CURRENT_DATE AND )) \n UNION \n SELECT bomitem_id, AS action, \n bomitem_seqnumber, item_number, (item_descrip1 || ' ' || item_descrip2) AS description,\n uom_name,\n (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyfxd) AS qtyfxd,\n (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper) AS qtyper,\n bomitem_scrap, bomitem_expires AS actiondate \n FROM bomitem(,), item, uom \n WHERE ((bomitem_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n \n AND (bomitem_expires BETWEEN CURRENT_DATE AND ) )\n \n ) AS data \nORDER BY action, actiondate, bomitem_seqnumber;\n admin 2013-07-26 0 442 pricingFreight detail used by itemPricingScheduleItem Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: pricingFreight\n-- Name: detail\n-- Notes: used by itemPricingScheduleItem\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT ipsfreight.*\n FROM ipsfreight\n WHERE ( (true)\n\n \n AND (ipsfreight_ipshead_id=)\n \n \n AND (ipsfreight_warehous_id=)\n \n AND (ipsfreight_warehous_id IS NULL)\n \n \n AND (ipsfreight_shipzone_id=)\n \n AND (ipsfreight_shipzone_id IS NULL)\n \n \n AND (ipsfreight_freightclass_id=)\n \n AND (ipsfreight_freightclass_id IS NULL)\n \n \n AND (ipsfreight_shipvia=)\n \n AND (ipsfreight_shipvia IS NULL)\n \n \n AND (ipsfreight_qtybreak=)\n \n AND (ipsfreight_id <> )\n\n AND (ipsfreight_id=)\n\n );\n admin 2013-07-26 0 459 projectTasks detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: projectTasks\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT prjtask_id, prjtask_number, prjtask_name,\n COALESCE(prjtask_hours_budget - prjtask_hours_actual, 0.0) as prjtaskhrbal,\n COALESCE(prjtask_exp_budget - prjtask_exp_actual, 0.0) as prjtaskexpbal,\n firstLine(prjtask_descrip) AS prjtask_descrip,\n totalhrbud, totalhract, totalhrbal,\n totalexpbud, totalexpact, totalexpbal\nFROM (SELECT COALESCE(SUM(prjtask_hours_budget), 0.0) AS totalhrbud,\n COALESCE(SUM(prjtask_hours_actual), 0.0) AS totalhract,\n COALESCE(SUM(prjtask_hours_budget - prjtask_hours_actual), 0.0) AS totalhrbal,\n COALESCE(SUM(prjtask_exp_budget), 0.0) AS totalexpbud,\n COALESCE(SUM(prjtask_exp_actual), 0.0) AS totalexpact,\n COALESCE(SUM(prjtask_exp_budget - prjtask_exp_actual), 0.0) AS totalexpbal\n FROM prjtask\n WHERE prjtask_prj_id = ) foo, prjtask\nWHERE (prjtask_prj_id=)\nORDER BY prjtask_number;\n admin 2013-07-26 0 277 projects detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: projects\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT prj_id AS id, prj_number, prj_name, prj_descrip,\n prj_start_date, prj_due_date, prj_assigned_date, prj_completed_date, \n CASE WHEN(prj_status='P') THEN \n WHEN(prj_status='O') THEN \n WHEN(prj_status='C') THEN \n ELSE \n END AS prj_status, \n prj_username, prj_owner_username,\n crmacct_number, formatCntctName(prj_cntct_id) AS contact_name,\n COALESCE(SUM(prjtask_hours_budget), 0.0) AS budget_hrs,\n COALESCE(SUM(prjtask_hours_actual), 0.0) AS actual_hrs,\n COALESCE(SUM(prjtask_hours_budget - prjtask_hours_actual), 0.0) AS balance_hrs, \n CASE WHEN COALESCE(SUM(prjtask_hours_budget - prjtask_hours_actual), 0.0) < 0 THEN \n 'error' END AS balance_hrs_qtforegroundrole, \n 'qty' AS budget_hrs_xtnumericrole, \n 'qty' AS actual_hrs_xtnumericrole, \n 'qty' AS balance_hrs_xtnumericrole \nFROM prj()\n LEFT OUTER JOIN prjtask ON (prj_id=prjtask_prj_id)\n LEFT OUTER JOIN crmacct ON (crmacct_id=prj_crmacct_id)\nWHERE (true)\n\n AND ( (prj_number ~* )\n OR (prj_name ~* )\n OR (prj_descrip ~* ) )\n\n\n AND (prj_username= OR prj_owner_username=)\n\n \n AND (prj_username=) \n\n AND (prj_username ~ ) \n\n \n AND (prj_owner_username=) \n\n AND (prj_owner_username ~ ) \n\n\n AND (prj_crmacct_id=)\n\n\n AND (prj_cntct_id=)\n\n\n AND (prj_start_date >= )\n\n\n AND (prj_start_date <= )\n\n\n AND (prj_due_date >= )\n\n\n AND (prj_due_date <= )\n\n\n AND (prj_assigned_date >= )\n\n\n AND (prj_assigned_date <= )\n\n\n AND (prj_completed_date >= )\n\n\n AND (prj_completed_date <= )\n\n\n AND (prj_status <> 'C')\n\n\n AND (prj_id=)\n\nGROUP BY prj_id, prj_number, prj_name, prj_descrip, prj_status, prj_username, prj_owner_username,\n crmacct_number, prj_cntct_id,\n prj_start_date, prj_due_date, prj_assigned_date, prj_completed_date\nORDER BY prj_number;\n admin 2013-07-26 0 73 purchase purchaserequests Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: purchase\n-- Name: purchaserequests\n-- Notes:\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT pr_id, itemsite_id, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS description,\n pr.*,\n CASE WHEN (pr_order_type='W') THEN ('W/O ' || ( SELECT formatWoNumber(womatl_wo_id)\n FROM womatl\n WHERE (womatl_id=pr_order_id) ) )\n WHEN (pr_order_type='S') THEN ('S/O ' || (SELECT formatSoNumber(pr_order_id)))\n WHEN (pr_order_type='F') THEN ('Planned Order')\n WHEN (pr_order_type='M') THEN \n ELSE \n END AS parent,\n 'qty' AS pr_qtyreq_xtnumericrole \nFROM pr, itemsite, item \nWHERE ((pr_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n\n AND (pr_duedate BETWEEN AND )\n\n\n AND (itemsite_warehous_id=)\n\n\n AND (itemsite_item_id=)\n\n AND (itemsite_plancode_id=)\n\n AND (itemsite_plancode_id IN (SELECT plancode_id FROM\n plancode\n WHERE (plancode_code ~ ) ) )\n\n) \nORDER BY pr_duedate;\n admin 2013-07-26 0 413 postJournals post Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: postJournals\n-- Name: post\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT * \nFROM postJournals(\nARRAY[\n\n \n,\n \n \n\n], \n, \n, \n) AS result;\n admin 2013-07-26 0 229 pricelist detail This query displays price lists and the data used to perform price calculations. It avoids price calculations where possible. The UNION sets the sourcecode column to show how the price list entry was derived: customer vs customer type vs customer type regex ..., etc. Then the outer query modifies the sourcecode to indicate item vs product category. TODO: possible improvements include removing OUTER JOINs with uom table Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: pricelist\n-- Name: detail\n-- Notes: This query displays price lists and the data used to perform\n-- price calculations. It avoids price calculations where possible.\n-- The UNION sets the sourcecode column to show how the price list entry\n-- was derived: customer vs customer type vs customer type regex ..., etc.\n-- Then the outer query modifies the sourcecode to indicate\n-- item vs product category.\n-- TODO: possible improvements include removing OUTER JOINs with uom table\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT sourcecode + CASE WHEN source='P' THEN 10 ELSE 0 END AS source,\n sourceid, schedulename, type,\n invqty AS qty_break,\n CASE WHEN (qtybreak = -1) THEN \n END AS qty_break_qtdisplayrole,\n invuom.uom_name AS qty_uom,\n price,\n currConcat(curr_id) AS currency,\n priceuom.uom_name AS price_uom,\n currToCurr(curr_id, ,\n price, ) AS base_price,\n discountpercent,\n discountfixed,\n CASE WHEN (price_type='N') THEN \n WHEN (price_type='D') THEN \n WHEN (price_type='M') THEN \n END AS price_type,\n 'qty' AS qty_break_xtnumericrole,\n 'salesprice' AS price_xtnumericrole,\n 'salesprice' AS base_price_xtnumericrole,\n 'percent' AS discountpercent_xtnumericrole,\n 'salesprice' AS discountfixed_xtnumericrole\nFROM ( \n\n SELECT 4 AS sourcecode,\n ipsitem_id AS sourceid,\n CASE WHEN (ipsitem_item_id=) THEN 'I'\n WHEN (ipsitem_prodcat_id=) THEN 'P'\n ELSE 'Error'\n END AS source,\n ipshead_id,\n ipshead_name AS schedulename,\n ( || '-' || sale_name) AS type,\n CASE WHEN (ipsitem_item_id=) THEN itemuomtouom(ipsitem_item_id, ipsitem_qty_uom_id, NULL, ipsitem_qtybreak)\n ELSE ipsitem_qtybreak\n END AS invqty,\n ipsitem_qtybreak AS qtybreak,\n CASE WHEN (ipsitem_type = 'N') THEN\n (ipsitem_price * itemuomtouomratio(, NULL, ipsitem_price_uom_id)) * iteminvpricerat(ipsitem_item_id)\n WHEN (ipsitem_type = 'D') THEN\n noNeg( - ( * ipsitem_discntprcnt) - ipsitem_fixedamtdiscount)\n WHEN ((ipsitem_type = 'M') AND (ipsitem_discntprcnt <= 0.5) AND fetchMetricBool('Long30Markups')) THEN\n ( / (1.0 - ipsitem_discntprcnt) + ipsitem_fixedamtdiscount)\n WHEN (ipsitem_type = 'M') THEN\n ( + ( * ipsitem_discntprcnt) + ipsitem_fixedamtdiscount)\n ELSE 0.00\n END AS price,\n ipsitem_qty_uom_id AS qtybreak_uom_id,\n ipsitem_price_uom_id AS price_uom_id,\n ipsitem_discntprcnt AS discountpercent,\n ipsitem_fixedamtdiscount AS discountfixed,\n ipshead_curr_id AS curr_id,\n ipsitem_type AS price_type\n FROM sale JOIN ipshead ON (ipshead_id=sale_ipshead_id)\n JOIN ipsiteminfo ON (ipsitem_ipshead_id=ipshead_id)\n JOIN ipsass ON (ipsass_ipshead_id=ipshead_id)\n WHERE ((ipsitem_item_id=) OR (ipsitem_prodcat_id=))\n AND ( BETWEEN sale_startdate AND sale_enddate)\n AND ( ((COALESCE(ipsass_shipto_id, -1) > 0) AND (ipsass_shipto_id=))\n OR ((COALESCE(LENGTH(ipsass_shipto_pattern), 0) > 0) AND ( ~ ipsass_shipto_pattern))\n OR (ipsass_cust_id=)\n OR (ipsass_custtype_id=)\n OR ((COALESCE(LENGTH(ipsass_custtype_pattern), 0) > 0) AND ( ~ ipsass_custtype_pattern)) )\n\n UNION\n\n SELECT CASE WHEN (COALESCE(ipsass_shipto_id, -1) > 0) THEN 6\n WHEN (COALESCE(LENGTH(ipsass_shipto_pattern), 0) > 0) THEN 7\n WHEN (COALESCE(ipsass_cust_id, -1) > 0) THEN 1\n WHEN (COALESCE(ipsass_custtype_id, -1) > 0) THEN 2\n WHEN (COALESCE(LENGTH(ipsass_custtype_pattern), 0) > 0) THEN 3\n ELSE 99\n END AS sourcecode,\n ipsitem_id AS sourceid,\n CASE WHEN (ipsitem_item_id=) THEN 'I'\n WHEN (ipsitem_prodcat_id=) THEN 'P'\n ELSE 'Error'\n END AS source,\n ipshead_id,\n ipshead_name AS schedulename,\n CASE WHEN (COALESCE(ipsass_shipto_id, -1) > 0) THEN \n WHEN (COALESCE(LENGTH(ipsass_shipto_pattern), 0) > 0) THEN \n WHEN (COALESCE(ipsass_cust_id, -1) > 0) THEN \n WHEN (COALESCE(ipsass_custtype_id, -1) > 0) THEN \n WHEN (COALESCE(LENGTH(ipsass_custtype_pattern), 0) > 0) THEN \n ELSE 'Error'\n END AS type,\n CASE WHEN (ipsitem_item_id=) THEN itemuomtouom(ipsitem_item_id, ipsitem_qty_uom_id, NULL, ipsitem_qtybreak)\n ELSE ipsitem_qtybreak\n END AS invqty,\n ipsitem_qtybreak AS qtybreak,\n CASE WHEN ipsitem_type = 'N' THEN (ipsitem_price * itemuomtouomratio(, NULL, ipsitem_price_uom_id)) *\n iteminvpricerat(ipsitem_item_id)\n WHEN ipsitem_type = 'D' THEN noNeg( - ( * ipsitem_discntprcnt) - ipsitem_fixedamtdiscount)\n WHEN ((ipsitem_type = 'M') AND (ipsitem_discntprcnt <= 0.5) AND fetchMetricBool('Long30Markups')) THEN\n ( / (1.0 - ipsitem_discntprcnt) + ipsitem_fixedamtdiscount)\n WHEN (ipsitem_type = 'M') THEN\n ( + ( * ipsitem_discntprcnt) + ipsitem_fixedamtdiscount)\n ELSE 0.00\n END AS price,\n ipsitem_qty_uom_id AS qtybreak_uom_id,\n ipsitem_price_uom_id AS price_uom_id,\n ipsitem_discntprcnt AS discountpercent,\n ipsitem_fixedamtdiscount AS discountfixed,\n ipshead_curr_id AS curr_id,\n ipsitem_type AS price_type\n FROM ipsass JOIN ipshead ON (ipshead_id=ipsass_ipshead_id)\n JOIN ipsiteminfo ON (ipsitem_ipshead_id=ipshead_id)\n WHERE ((ipsitem_item_id=) OR (ipsitem_prodcat_id=))\n AND ( BETWEEN ipshead_effective AND ipshead_expires)\n AND ( ((COALESCE(ipsass_shipto_id, -1) > 0) AND (ipsass_shipto_id=))\n OR ((COALESCE(LENGTH(ipsass_shipto_pattern), 0) > 0) AND ( ~ ipsass_shipto_pattern))\n OR (ipsass_cust_id=)\n OR (ipsass_custtype_id=)\n OR ((COALESCE(LENGTH(ipsass_custtype_pattern), 0) > 0) AND ( ~ ipsass_custtype_pattern))\n )\n\n UNION\n\n SELECT 5 AS sourcecode,\n item_id AS sourceid,\n NULL AS source,\n NULL AS ipshead_id,\n '' AS schedulename,\n AS type,\n -1 AS invqty,\n -1 AS qtybreak,\n (item_listprice - (item_listprice * cust_discntprcnt)) AS price,\n item_inv_uom_id AS qtybreak_uom_id,\n item_price_uom_id AS price_uom_id,\n cust_discntprcnt AS discountpercent,\n NULL AS discountfixed,\n baseCurrId() AS curr_id,\n NULL AS price_type\n FROM item, custinfo\n WHERE (item_sold\n AND (NOT item_exclusive)\n AND (item_id=)\n AND (cust_id=) ) ) AS data\n\n LEFT OUTER JOIN uom AS invuom ON (invuom.uom_id=qtybreak_uom_id)\n LEFT OUTER JOIN uom AS priceuom ON (priceuom.uom_id=price_uom_id)\n\n ORDER BY price_uom_id, price;\n admin 2013-07-26 0 276 prices detail used by dspPricesByCustomerType, dspPricesByCustomer, dspPricesByItem Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: prices\n-- Name: detail\n-- Notes: used by dspPricesByCustomerType, dspPricesByCustomer, dspPricesByItem\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT itemid, sourcetype, schedulename, type,\n\n itemnumber, itemdescrip, priceuom,\n\n typename,\n\n CASE WHEN (qtybreak <> -1) THEN qtybreak END AS f_qtybreak,\n price,\n currConcat(curr_id) AS currConcat,\n 'qty' AS f_qtybreak_xtnumericrole,\n AS f_qtybreak_xtnullrole,\n 'salesprice' AS price_xtnumericrole\n\n \n , CASE WHEN ( <> 0) THEN END AS f_cost,\n CASE WHEN ((price <> 0) AND ( <> 0)) THEN ((price - ) / price) END AS f_margin,\n \n , CASE WHEN (cost IS NOT NULL) THEN cost END AS f_cost,\n CASE WHEN ((price <> 0) AND (cost <>0)) THEN ((price - cost) / price) END AS f_margin,\n \n 'cost' AS f_cost_xtnumericrole,\n AS f_cost_xtnullrole,\n 'percent' AS f_margin_xtnumericrole,\n AS f_margin_xtnullrole,\n \n CASE WHEN ( > price) THEN 'error' END AS f_margin_qtforegroundrole\n \n CASE WHEN (cost > price) THEN 'error' END AS f_margin_qtforegroundrole\n \n\nFROM (\n\n SELECT\n \n ipsprice_id AS itemid, 1 AS sourcetype,\n ipshead_name AS schedulename, AS type,\n item_number AS itemnumber, uom_name AS priceuom, iteminvpricerat(item_id) AS invpricerat,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescrip,\n ipsprice_qtybreak AS qtybreak,\n ipsprice_price AS price, ipshead_curr_id AS curr_id,\n ipshead_updated AS effective\n \n , (stdcost(item_id) * iteminvpricerat(item_id)) AS cost\n \n , (actcost(item_id) * iteminvpricerat(item_id)) AS cost\n \n \n ipsprice_id AS itemid, 1 AS sourcetype,\n ipshead_name AS schedulename, AS type,\n cust_name AS typename,\n ipsprice_qtybreak AS qtybreak, ipsprice_price AS price, ipshead_curr_id AS curr_id\n \n FROM ipsass, ipshead, ipsprice, item,\n \n uom\n \n custinfo\n \n WHERE ((ipsass_ipshead_id=ipshead_id)\n AND (ipsprice_ipshead_id=ipshead_id)\n AND (ipsprice_item_id=item_id)\n \n AND (item_price_uom_id=uom_id)\n AND (ipsass_cust_id=)\n \n AND (ipsass_cust_id=cust_id)\n AND (item_id=)\n \n AND (COALESCE(LENGTH(ipsass_shipto_pattern), 0) = 0)\n \n AND (ipshead_expires > CURRENT_DATE)\n \n \n AND (ipshead_effective <= CURRENT_DATE)\n \n )\n\n UNION\n\n\n SELECT\n\n ipsprice_id AS itemid, 2 AS sourcetype,\n ipshead_name AS schedulename, AS type,\n (custtype_code || '-' || custtype_descrip) AS typename,\n ipsprice_qtybreak AS qtybreak, ipsprice_price AS price, ipshead_curr_id AS curr_id\n\n ipsprice_id AS itemid,\n \n 1 AS sourcetype,\n \n 2 AS sourcetype,\n \n ipshead_name AS schedulename, AS type,\n item_number AS itemnumber, uom_name AS priceuom, iteminvpricerat(item_id) AS invpricerat,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescrip,\n ipsprice_qtybreak AS qtybreak,\n ipsprice_price AS price, ipshead_curr_id AS curr_id,\n ipshead_updated AS effective\n \n \n , (stdcost(\n \n ipsprice_item_id\n \n item_id\n \n ) * iteminvpricerat(item_id)) AS cost\n \n , (actcost(\n \n ipsprice_item_id\n \n item_id\n \n ) * iteminvpricerat(item_id)) AS cost\n \n \n\n FROM ipsass, ipshead, ipsprice, item,\n\n custtype\n\n uom\n\n\n , custinfo\n\n WHERE ((ipsass_ipshead_id=ipshead_id)\n AND (ipsprice_ipshead_id=ipshead_id)\n AND (ipsprice_item_id=item_id)\n\n AND (item_price_uom_id=uom_id)\n\n\n AND (ipsass_custtype_id=)\n\n AND (ipsass_custtype_id=cust_custtype_id)\n AND (cust_id=)\n\n AND (ipsass_custtype_id=custtype_id)\n AND (item_id=)\n\n\n AND (ipshead_expires > CURRENT_DATE)\n\n\n AND (ipshead_effective <= CURRENT_DATE)\n\n )\n\n UNION\n\n SELECT\n\n ipsprice_id AS itemid, 3 AS sourcetype,\n ipshead_name AS schedulename, AS type,\n (custtype_code || '-' || custtype_descrip) AS typename,\n ipsprice_qtybreak AS qtybreak, ipsprice_price AS price, ipshead_curr_id AS curr_id\n\n ipsprice_id AS itemid,\n \n 2 AS sourcetype,\n \n 3 AS sourcetype,\n \n ipshead_name AS schedulename, AS type,\n item_number AS itemnumber, uom_name AS priceuom, iteminvpricerat(item_id) AS invpricerat,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescrip,\n ipsprice_qtybreak AS qtybreak,\n ipsprice_price AS price, ipshead_curr_id AS curr_id,\n ipshead_updated AS effective\n \n \n , (stdcost(\n \n ipsprice_item_id\n \n item_id\n \n ) * iteminvpricerat(item_id)) AS cost\n \n , (actcost(\n \n ipsprice_item_id\n \n item_id\n \n ) * iteminvpricerat(item_id)) AS cost\n \n \n\n FROM ipsass, ipshead, ipsprice, item, custtype\n\n , uom\n\n\n , custinfo\n\n WHERE ((ipsass_ipshead_id=ipshead_id)\n AND (ipsprice_ipshead_id=ipshead_id)\n AND (ipsprice_item_id=item_id)\n\n AND (item_price_uom_id=uom_id)\n\n AND (coalesce(length(ipsass_custtype_pattern), 0) > 0)\n AND (custtype_code ~ ipsass_custtype_pattern)\n\n AND (custtype_id=)\n\n AND (cust_id=)\n\n AND (item_id=)\n\n\n AND (ipshead_expires > CURRENT_DATE)\n\n\n AND (ipshead_effective <= CURRENT_DATE)\n\n )\n\n UNION\n\n SELECT\n\n ipsprice_id AS itemid, 4 AS sourcetype,\n ipshead_name AS schedulename, AS type,\n sale_name AS typename,\n ipsprice_qtybreak AS qtybreak, ipsprice_price AS price, ipshead_curr_id AS curr_id\n\n ipsprice_id AS itemid,\n\n 3\n\n 4\n AS sourcetype,\n ipshead_name AS schedulename, ( || '-' || sale_name) AS type,\n item_number AS itemnumber, uom_name AS priceuom, iteminvpricerat(item_id) AS invpricerat,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescrip,\n ipsprice_qtybreak AS qtybreak,\n ipsprice_price AS price, ipshead_curr_id AS curr_id,\n ipshead_updated AS effective\n\n \n , (stdcost(\n \n ipsprice_item_id\n \n item_id\n \n ) * iteminvpricerat(item_id)) AS cost\n \n , (actcost(\n \n ipsprice_item_id\n \n item_id\n \n ) * iteminvpricerat(item_id)) AS cost\n \n \n\n FROM sale, ipshead, ipsprice, item\n\n , uom\n\n WHERE ((sale_ipshead_id=ipshead_id)\n AND (ipsprice_ipshead_id=ipshead_id)\n\n AND (item_price_uom_id=uom_id)\n\n\n AND (ipsprice_item_id=)\n \n AND (sale_enddate > CURRENT_DATE)\n \n \n AND (sale_startdate <= CURRENT_DATE)\n \n\n AND (ipsprice_item_id=item_id)\n \n AND (ipshead_expires > CURRENT_DATE)\n \n \n AND (ipshead_effective <= CURRENT_DATE)\n \n\n )\n\n\n\n UNION\n\n SELECT ipsprice_id AS itemid, 5 AS sourcetype,\n ipshead_name AS schedulename, AS type,\n (cust_name || '-' || shipto_num) AS typename,\n ipsprice_qtybreak AS qtybreak, ipsprice_price AS price, ipshead_curr_id AS curr_id\n FROM ipsass, ipshead, ipsprice, custinfo, shiptoinfo, item\n WHERE ((ipsass_ipshead_id=ipshead_id)\n AND (ipsprice_ipshead_id=ipshead_id)\n AND (ipsass_shipto_id=shipto_id)\n AND (shipto_cust_id=cust_id)\n AND (ipsprice_item_id=item_id)\n AND (item_id=)\n \n AND (ipshead_expires > CURRENT_DATE)\n \n \n AND (ipshead_effective <= CURRENT_DATE)\n \n )\n\n UNION\n\n SELECT ipsprice_id AS itemid, 6 AS sourcetype,\n ipshead_name AS schedulename, AS type,\n (cust_name || '-' || shipto_num) AS typename,\n ipsprice_qtybreak AS qtybreak, ipsprice_price AS price, ipshead_curr_id AS curr_id\n FROM ipsass, ipshead, ipsprice, custinfo, shiptoinfo, item\n WHERE ((ipsass_ipshead_id=ipshead_id)\n AND (ipsprice_ipshead_id=ipshead_id)\n AND (COALESCE(LENGTH(ipsass_shipto_pattern),0) > 0)\n AND (shipto_num ~ ipsass_shipto_pattern)\n AND (ipsass_cust_id=cust_id)\n AND (shipto_cust_id=cust_id)\n AND (ipsprice_item_id=item_id)\n AND (item_id=:item_id)\n \n AND (ipshead_expires > CURRENT_DATE)\n \n \n AND (ipshead_effective <= CURRENT_DATE)\n \n )\n\n\n UNION\n\n SELECT\n\n item_id AS itemid, 0 AS sourcetype,\n AS schedulename, AS type,\n '' AS typename,\n -1 AS qtybreak, item_listprice AS price, baseCurrId() AS curr_id\n\n item_id AS itemid, 0 AS sourcetype,\n '' AS schedulename, AS type,\n item_number AS itemnumber, uom_name AS priceuom, iteminvpricerat(item_id) AS invpricerat,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescrip,\n -1 AS qtybreak,\n \n item_listprice AS price,\n \n (item_listprice - (item_listprice * cust_discntprcnt)) AS price,\n \n baseCurrId() AS curr_id,\n CURRENT_DATE AS effective\n \n , (stdcost(item_id) * iteminvpricerat(item_id)) AS cost\n \n , (actcost(item_id) * iteminvpricerat(item_id)) AS cost\n \n\n\n FROM item JOIN uom ON (item_price_uom_id=uom_id)\n\n FROM custinfo, item JOIN uom ON (item_price_uom_id=uom_id)\n\n FROM item\n\n WHERE (\n\n (item_sold)\n AND (item_active)\n\n (item_id=)\n\n AND (NOT item_exclusive)\n\n AND (cust_id=)\n\n )\n ) AS data\nORDER BY\n\n itemnumber,\n\n price;\n admin 2013-07-26 0 443 purchaseOrderItems detail used by purchaseOrderItem Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: purchaseOrderItems\n-- Name: detail\n-- Notes: used by purchaseOrderItem\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT pohead_number, pohead_taxzone_id,\n pohead_curr_id, pohead_orderdate,\n COALESCE(pohead_cohead_id, -1) AS pohead_cohead_id,\n poitem_linenumber, poitem_vend_item_number,\n poitem_vend_item_descrip, poitem_vend_uom,\n poitem_invvenduomratio, poitem_status,\n poitem_duedate, poitem_qty_ordered,\n poitem_qty_received, poitem_unitprice,\n poitem_freight, poitem_taxtype_id,\n poitem_tax_recoverable, poitem_comments,\n poitem_prj_id, poitem_bom_rev_id,\n poitem_boo_rev_id, poitem_manuf_name,\n poitem_manuf_item_number, poitem_manuf_item_descrip,\n COALESCE(poitem_itemsite_id, -1) AS poitem_itemsite_id,\n COALESCE(poitem_itemsrc_id, -1) AS poitem_itemsrc_id,\n COALESCE(poitem_expcat_id, -1) AS poitem_expcat_id,\n COALESCE(poitem_order_id, -1) AS poitem_order_id,\n CASE WHEN (poitem_order_type='S') THEN TEXT()\n WHEN (poitem_order_type='W') THEN TEXT()\n ELSE ''\n END AS demand_type,\n CASE WHEN (poitem_order_type='S') THEN formatSoNumber(coitem_id)\n WHEN (poitem_order_type='W') THEN formatWoNumber(womatl_wo_id)\n ELSE ''\n END AS order_number,\n poitem_unitprice * poitem_qty_ordered AS extended_price,\n COALESCE(coitem_prcost, 0.0) AS override_cost,\n itemsrc.*\n FROM poitem JOIN pohead ON (pohead_id=poitem_pohead_id)\n LEFT OUTER JOIN itemsrc ON (itemsrc_id=poitem_itemsrc_id)\n LEFT OUTER JOIN coitem ON (poitem_order_type='S' AND coitem_id=poitem_order_id)\n LEFT OUTER JOIN womatl ON (poitem_order_type='W' AND womatl_id=poitem_order_id)\n WHERE ( (TRUE)\n\n AND (poitem_id=)\n\n);\n admin 2013-07-26 0 72 purchaseOrders detail used by dspPosByVendor, dspPOsByDate Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: purchaseOrders\n-- Name: detail\n-- Notes: used by dspPosByVendor, dspPOsByDate\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT pohead_id, pohead_number,\n warehous_code AS warehousecode,\n poitem_status, pohead_orderdate,\n CASE WHEN(poitem_status='C') THEN TEXT()\n WHEN(poitem_status='U') THEN TEXT()\n WHEN(poitem_status='O'\n AND (SUM(poitem_qty_received-poitem_qty_returned) > 0) \n AND (SUM(poitem_qty_ordered)>SUM(poitem_qty_received-poitem_qty_returned))) \n THEN TEXT()\n WHEN(poitem_status='O'\n AND (SUM(poitem_qty_received-poitem_qty_returned) > 0) \n AND (SUM(poitem_qty_ordered)<=SUM(poitem_qty_received-poitem_qty_returned))) \n THEN TEXT()\n WHEN(poitem_status='O') THEN TEXT()\n ELSE poitem_status\n END AS poitem_status_qtdisplayrole,\n\n vend_name,\n MIN(poitem_duedate) AS minDueDate,\n CASE WHEN (MIN(poitem_duedate) < CURRENT_DATE) THEN 'error'\n END AS minDueDate_qtforegroundrole,\n\n vend_number,\n\n\n MIN(date(recv_date)) AS sortDate,\n\n MIN(poitem_duedate) AS sortDate,\n\n pohead_orderdate AS sortDate,\n\n CASE WHEN (MIN(poitem_duedate) < CURRENT_DATE) THEN 'error' END AS sortDate_qtforegroundrole,\n-- Report formatting\n formatDate(pohead_orderdate) AS f_orderdate,\n formatDate(MIN(poitem_duedate)) AS f_duedate, \n CASE WHEN(poitem_status='C') THEN TEXT()\n WHEN(poitem_status='U') THEN TEXT()\n WHEN(poitem_status='O'\n AND (SUM(poitem_qty_received-poitem_qty_returned) > 0) \n AND (SUM(poitem_qty_ordered)>SUM(poitem_qty_received-poitem_qty_returned))) \n THEN TEXT()\n WHEN(poitem_status='O'\n AND (SUM(poitem_qty_received-poitem_qty_returned) > 0) \n AND (SUM(poitem_qty_ordered)<=SUM(poitem_qty_received-poitem_qty_returned))) \n THEN TEXT()\n WHEN(poitem_status='O') THEN TEXT()\n ELSE poitem_status\n END AS f_status\n-- End Report formatting\n FROM vendinfo, poitem,\n\n recv,\n\n pohead LEFT OUTER JOIN whsinfo ON (pohead_warehous_id=warehous_id)\n WHERE ((poitem_pohead_id=pohead_id)\n AND (pohead_vend_id=vend_id)\n\n AND (recv_itemsite_id=poitem_itemsite_id)\n AND (recv_order_number=pohead_number)\n AND (date(recv_date) BETWEEN AND )\n AND (recv_order_type='PO')\n\n AND (poitem_duedate BETWEEN AND )\n\n AND (pohead_orderdate BETWEEN AND )\n\n\n AND (vend_id=)\n\n AND (vend_vendtype_id=)\n\n AND (vend_vendtype_id IN (SELECT vendtype_id\n FROM vendtype\n WHERE (vendtype_code ~ )))\n\n\n AND (pohead_warehous_id=)\n\n\n AND (poitem_status!='C')\n\n\n AND (pohead_agent_username=)\n\n\n AND ((poitem_vend_item_descrip ~* )\n OR (poitem_itemsite_id IN (\n SELECT itemsite_id\n FROM itemsite, item\n WHERE ((itemsite_item_id=item_id)\n AND ((item_descrip1 ~* )\n OR (item_descrip2 ~* )))\n )))\n\n\n)\nGROUP BY pohead_id, pohead_number, warehous_code,\n poitem_status, pohead_orderdate,\n\n vend_name \n\n vend_number\n\nORDER BY\n\n minDueDate\n\n sortDate\n;\n admin 2013-07-26 0 74 quoteItems detail used by dspQuotesByItem Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: quoteItems\n-- Name: detail\n-- Notes: used by dspQuotesByItem\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT quitem_id, quhead_id,\n quitem.*, quhead.*,\n COALESCE(cust_number, prospect_number) AS cust_number,\n COALESCE(cust_name, prospect_name) AS cust_name,\n 'qty' AS quitem_qtyord_xtnumericrole\nFROM quitem JOIN quhead ON (quhead_id=quitem_quhead_id)\n LEFT OUTER JOIN custinfo ON (cust_id=quhead_cust_id)\n LEFT OUTER JOIN prospect ON (prospect_id=quhead_cust_id)\n JOIN itemsite ON (itemsite_id=quitem_itemsite_id)\n JOIN site() ON (warehous_id=itemsite_warehous_id)\nWHERE ( (1=1)\n\n AND (itemsite_item_id=)\n\n\n AND (quhead_status IN ('C','O'))\n\n AND (quhead_status NOT IN ('C','X'))\n\n\n AND (quhead_quotedate BETWEEN AND )\n\n )\nORDER BY quhead_number;\n\n admin 2013-07-26 0 278 prospects detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: prospects\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT \n prospect.*,\n cntct.*, addr.*\nFROM prospect \n LEFT OUTER JOIN cntct ON (prospect_cntct_id=cntct_id) \n LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) \nWHERE true\n \n AND prospect_active \n\n \n AND (prospect_owner_username=) \n\n AND (prospect_owner_username ~ ) \n\n\n AND ((prospect_number ~* )\n OR (prospect_name ~* )\n OR (COALESCE(cntct_first_name,'') || ' ' || COALESCE(cntct_last_name,'') ~* )\n OR (COALESCE(cntct_phone,'') || ' ' || COALESCE(cntct_phone2,'') || ' ' || COALESCE(cntct_fax,'') ~* )\n OR (COALESCE(cntct_email,'') ~* )\n OR (COALESCE(addr_line1,'') || ' ' || COALESCE(addr_line2,'') || ' ' || COALESCE(addr_line3,'') ~* )\n OR (COALESCE(addr_city,'') ~* )\n OR (COALESCE(addr_state,'') ~* )\n OR (COALESCE(addr_postalcode,'') ~* )\n OR (COALESCE(addr_country,'') ~* ))\n\n\n AND (prospect_number ~* )\n\n\n AND (prospect_name ~* )\n\n\n AND (COALESCE(cntct_first_name,'') || ' ' || COALESCE(cntct_last_name,'') ~* )\n\n\n AND (COALESCE(cntct_phone,'') || ' ' || COALESCE(cntct_phone2,'') || ' ' || COALESCE(cntct_fax,'') ~* )\n\n\n AND (COALESCE(cntct_email,'') ~* )\n\n\n AND (COALESCE(addr_line1,'') || ' ' || COALESCE(addr_line2,'') || ' ' || COALESCE(addr_line3,'') ~* )\n\n\n AND (COALESCE(addr_city,'') ~* )\n\n\n AND (COALESCE(addr_state,'') ~* )\n\n\n AND (COALESCE(addr_postalcode,'') ~* )\n\n\n AND (COALESCE(addr_country,'') ~* )\n\n\n AND (prospect_id=\n\nORDER BY prospect_number; \n admin 2013-07-26 0 75 quotes detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: quotes\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT quhead.*, firstline(quhead_ordercomments) AS notes, quhead_id AS id,\n CASE WHEN quhead_status = 'O' THEN \n WHEN quhead_status = 'C' THEN \n ELSE END AS quhead_status_qtdisplayrole,\n\n cust_id, cust_number, cust_name,\n\n ( SELECT MIN(quitem_scheddate)\n FROM quitem\n WHERE (quitem_quhead_id=quhead_id) ) AS min_scheddate,\n CASE WHEN (quhead_expire < current_date) THEN\n 'error'\n END AS quhead_expire_qtforegroundrole\nFROM quhead\n\n LEFT OUTER \n\n JOIN custinfo ON (quhead_cust_id=cust_id)\nWHERE (checkQuoteSitePrivs(quhead_id, ))\n \n AND (quhead_owner_username=) \n\n AND (quhead_owner_username ~ ) \n\n\n AND (quhead_status IN ('C','O'))\n\n AND (quhead_status NOT IN ('C','X'))\n\n\n AND ((quhead_expire IS NULL) OR (quhead_expire >= CURRENT_DATE))\n\n\n AND (quhead_cust_id=)\n\n\n AND (cust_custtype_id=)\n\n\n AND (cust_custtype_id IN (SELECT custtype_id FROM custtype WHERE (custtype_code ~ )))\n\n\n AND (quhead_custponumber=)\n\n\n AND (quhead_quotedate >= )\n\n\n AND (quhead_quotedate <= )\n\n\n AND (quhead_salesrep_id = )\n\n\n AND (quhead_id = )\n\n\nORDER BY cust_number, quhead_number;\n\nORDER BY quhead_number;\n\n\n admin 2013-07-26 0 76 receipt detail used by enterPoReceipt Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: receipt\n-- Name: detail\n-- Notes: used by enterPoReceipt\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT poitem_id AS orderitem_id, COALESCE(poitem_itemsite_id,-1) AS itemsite_id, poitem_linenumber AS linenumber,\n poitem_duedate AS duedate,\n COALESCE(item_number, ) AS item_number,\n CASE WHEN (LENGTH(TRIM(BOTH ' ' FROM poitem_vend_item_descrip)) <= 0) THEN\n (item_descrip1 || ' ' || item_descrip2)\n ELSE poitem_vend_item_descrip\n END AS itemdescription,\n COALESCE(uom_name, ) AS inv_uom,\n warehous_code,\n poitem_vend_item_number AS vend_item_number,\n poitem_vend_uom AS vend_uom,\n poitem_manuf_name AS manuf_name,\n poitem_manuf_item_number AS manuf_item_number,\n poitem_qty_ordered AS qty_ordered,\n poitem_qty_received AS qty_received,\n poitem_qty_returned AS qty_returned,\n qtyToReceive(, poitem_id) AS qty_toreceive,\n 'qty' AS qty_ordered_xtnumericrole,\n 'qty' AS qty_received_xtnumericrole,\n 'qty' AS qty_returned_xtnumericrole,\n 'qty' AS qty_toreceive_xtnumericrole\nFROM poitem \n LEFT OUTER JOIN itemsite ON (poitem_itemsite_id=itemsite_id) \n\n LEFT OUTER JOIN usrsite ON (itemsite_warehous_id=usrsite_warehous_id) \n\n LEFT OUTER JOIN item ON (itemsite_item_id=item_id) \n LEFT OUTER JOIN uom ON (item_inv_uom_id=uom_id)\n LEFT OUTER JOIN whsinfo ON (itemsite_warehous_id=warehous_id)\n LEFT OUTER JOIN itemsrc ON (itemsrc_id=poitem_itemsrc_id)\nWHERE ( (poitem_status <> 'C')\n\n AND (usrsite_username=getEffectiveXtUser()) \n\n\n AND ( (item_number=) OR\n (item_upccode=) OR \n (poitem_vend_item_number=) OR \n (poitem_manuf_item_number=) OR \n (COALESCE(itemsrc_upccode, '')=) ) \n\n AND (poitem_pohead_id=) )\nORDER BY poitem_linenumber;\n\nSELECT raitem_id AS orderitem_id, itemsite_id, raitem_linenumber AS linenumber,\n rahead_expiredate AS duedate,\n COALESCE(item_number, ) AS item_number,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescription,\n COALESCE(iu.uom_name, ) AS inv_uom,\n warehous_code,\n '' AS vend_item_number,\n ru.uom_name AS vend_uom,\n '' AS manuf_name,\n '' AS manuf_item_number,\n raitem_qtyauthorized AS qty_ordered,\n raitem_qtyreceived AS qty_received,\n 0 AS qty_returned,\n qtyToReceive(, raitem_id) AS qty_toreceive,\n 'qty' AS qty_ordered_xtnumericrole,\n 'qty' AS qty_received_xtnumericrole,\n 'qty' AS qty_returned_xtnumericrole,\n 'qty' AS qty_toreceive_xtnumericrole\n\nFROM rahead, raitem \n LEFT OUTER JOIN \n ( itemsite \n\n JOIN usrsite ON (itemsite_warehous_id=usrsite_warehous_id) \n\n JOIN item ON (itemsite_item_id=item_id) \n JOIN uom iu ON (item_inv_uom_id=uom_id)\n JOIN whsinfo ON (itemsite_warehous_id=warehous_id)\n ) ON (raitem_itemsite_id=itemsite_id), uom ru\nWHERE ( (raitem_status <> 'C')\n AND (item_type <> 'K')\n AND (raitem_qtyauthorized > 0)\n AND (raitem_disposition IN ('R','P','V'))\n AND (raitem_rahead_id=rahead_id)\n AND (raitem_qty_uom_id=ru.uom_id)\n\n AND (usrsite_username=getEffectiveXtUser()) \n\n\n AND ( (item_number=) OR\n (item_upccode=) )\n\n AND (rahead_id=) )\nORDER BY raitem_linenumber;\n\nSELECT toitem_id AS orderitem_id, itemsite_id, toitem_linenumber AS linenumber,\n toitem_duedate AS duedate,\n COALESCE(item_number, ) AS item_number,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescription,\n COALESCE(uom_name, ) AS inv_uom,\n warehous_code,\n '' AS vend_item_number,\n toitem_uom AS vend_uom,\n '' AS manuf_name,\n '' AS manuf_item_number,\n toitem_qty_ordered AS qty_ordered,\n toitem_qty_received AS qty_received,\n 0 AS qty_returned,\n qtyToReceive(, toitem_id) AS qty_toreceive,\n 'qty' AS qty_ordered_xtnumericrole,\n 'qty' AS qty_received_xtnumericrole,\n 'qty' AS qty_returned_xtnumericrole,\n 'qty' AS qty_toreceive_xtnumericrole\nFROM tohead, itemsite\n\n JOIN usrsite ON (itemsite_warehous_id=usrsite_warehous_id) \n\n, whsinfo, toitem, item JOIN uom ON (item_inv_uom_id=uom_id)\nWHERE ((toitem_item_id=item_id)\n AND (tohead_id=toitem_tohead_id)\n AND (tohead_dest_warehous_id=itemsite_warehous_id)\n AND (tohead_dest_warehous_id=warehous_id)\n AND (toitem_item_id=itemsite_item_id)\n AND (toitem_status NOT IN ('C','X'))\n AND (toitem_qty_shipped > toitem_qty_received)\n\n AND (usrsite_username=getEffectiveXtUser()) \n\n\n AND ( (item_number=) OR\n (item_upccode=) )\n\n AND (toitem_tohead_id=) )\nORDER BY toitem_linenumber;\n\n admin 2013-07-26 0 77 receipt receiveAll used by enterPoReceipt, returnAuthorization, shipOrder Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: receipt\n-- Name: receiveAll\n-- Notes: used by enterPoReceipt, returnAuthorization, shipOrder\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\n SELECT enterReceipt(,\n shipitem_orderitem_id,\n shipitem_qty,\n (orderitem_freight - orderitem_freight_received),\n '',\n orderitem_freight_curr_id,\n CURRENT_DATE) AS result\n FROM shipitem, orderitemData(,\n ,\n NULL) AS orderitem\n LEFT OUTER JOIN recv ON ((recv_orderitem_id=orderitem_id)\n AND (recv_order_type=orderitem_orderhead_type))\n \n LEFT OUTER JOIN raitem ON ((raitem_id=orderitem_id)\n AND ('RA' = orderitem_orderhead_type))\n \n WHERE ( (shipitem_shiphead_id=)\n AND (shipitem_orderitem_id=orderitem_id)\n \n AND ((orderitem_orderhead_type != 'RA') OR (raitem_disposition IN (NULL,'R','V','P')))\n \n )\n\n\n SELECT enterReceipt(orderitem_orderhead_type,\n orderitem_id,\n\n (orderitem_qty_shipped - orderitem_qty_received),\n\n (orderitem_qty_ordered - orderitem_qty_received),\n\n (orderitem_freight - orderitem_freight_received),\n '',\n orderitem_freight_curr_id,\n CURRENT_DATE) AS result\n FROM orderitemData(,\n ,\n NULL) AS orderitem\n LEFT OUTER JOIN recv ON ((recv_orderitem_id=orderitem_id)\n AND (recv_order_type=orderitem_orderhead_type))\n\n LEFT OUTER JOIN raitem ON ((raitem_id=orderitem_id)\n AND ('RA' = orderitem_orderhead_type))\n\n WHERE (orderitem_status NOT IN ('C', 'X'))\n\n AND (orderitem_qty_shipped > orderitem_qty_received)\n\n\n AND (((orderitem_orderhead_type != 'RA') OR (raitem_disposition IN (NULL,'R','V','P'))))\n\n\n admin 2013-07-26 0 78 receivings detail used by dspPoItemReceivingsByDate, dspPoItemReceivingsByItem, dspPoItemReceivingsByVendor Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: receivings\n-- Name: detail\n-- Notes: used by dspPoItemReceivingsByDate, dspPoItemReceivingsByItem, dspPoItemReceivingsByVendor\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT recv_id, 1 AS altid, recv_order_number AS ponumber,\n vend_name,\n recv_duedate AS duedate,\n recv_date AS recvdate,\n recv_vend_item_number AS itemnumber,\n recv_vend_item_descrip AS itemdescrip,\n COALESCE(item_number,\n ( || recv_vend_item_number)) AS venditemnumber,\n COALESCE(item_descrip1, recv_vend_item_descrip) AS venditemdescrip,\n CASE WHEN (recv_vohead_id IS NOT NULL) THEN\n \n ELSE \n END AS sense,\n recv_qty AS qty,\n currToBase(recv_purchcost_curr_id, recv_purchcost, CAST(recv_date AS DATE)) AS purchcost,\n CASE WHEN (recv_qty > 0) THEN\n COALESCE(recv_value,0) / recv_qty\n ELSE 0 END AS recvcost,\n recv_value AS value,\n recv_invoiced AS invoiced,\n recv_date AS sortdate,\n\n formatDate(recv_duedate) AS f_duedate,\n formatDate(recv_date) AS f_recvdate,\n formatQty(recv_qty) AS f_qty,\n \n formatCost(currToBase(recv_purchcost_curr_id, recv_purchcost, CAST(recv_date AS DATE))) AS f_purchcost,\n formatCost(CASE WHEN (recv_qty > 0) THEN COALESCE(recv_value,0) / recv_qty\n ELSE 0\n END) AS f_recvcost,\n formatMoney(recv_value) AS f_value,\n \n NULL AS f_purchcost,\n NULL AS f_recvcost,\n NULL AS f_value,\n \n\n 'qty' AS qty_xtnumericrole,\n 'cost' AS purchcost_xtnumericrole,\n 'cost' AS recvcost_xtnumericrole,\n 'curr' AS value_xtnumericrole,\n AS duedate_xtnullrole,\n AS purchcost_xtnullrole,\n AS recvcost_xtnullrole\nFROM vendinfo, recv LEFT OUTER JOIN\n (itemsite JOIN\n item ON (itemsite_item_id=item_id)) ON (recv_itemsite_id=itemsite_id)\nWHERE ( (recv_vend_id=vend_id)\n AND (recv_order_type='PO')\n AND (recv_posted)\n AND (DATE(recv_date) BETWEEN AND )\n\n AND (vend_id=)\n\n\n AND (itemsite_item_id=)\n\n\n AND (itemsite_warehous_id=)\n\n\n AND (recv_agent_username=)\n\n\n AND (recv_vohead_id IS NOT NULL)\n AND (recv_invoiced)\n\n)\nUNION\nSELECT poreject_id, 2, poreject_ponumber,\n vend_name,\n NULL,\n poreject_date,\n poreject_vend_item_number,\n poreject_vend_item_descrip,\n COALESCE(item_number,\n ( || poreject_vend_item_number)),\n COALESCE(item_descrip1, poreject_vend_item_descrip),\n ,\n poreject_qty,\n NULL,\n NULL,\n poreject_value,\n poreject_invoiced,\n poreject_date,\n\n NULL AS f_duedate,\n formatDate(poreject_date) AS f_recvdate,\n formatQty(poreject_qty) AS f_qty,\n NULL AS f_purchcost,\n NULL AS f_recvcost,\n formatMoney(poreject_value) AS f_value,\n\n 'qty',\n 'cost',\n 'cost',\n 'curr',\n AS duedate_xtnullrole,\n AS purchcost_xtnullrole,\n AS recvcost_xtnullrole\nFROM vendinfo, poreject LEFT OUTER JOIN\n (itemsite JOIN\n item ON (itemsite_item_id=item_id)) ON (poreject_itemsite_id=itemsite_id)\nWHERE ( (poreject_vend_id=vend_id)\n AND (poreject_posted)\n AND (DATE(poreject_date) BETWEEN AND )\n\n AND (vend_id=)\n\n\n AND (itemsite_item_id=)\n\n\n AND (itemsite_warehous_id=)\n\n\n AND (poreject_agent_username=)\n\n\n AND (poreject_vohead_id IS NOT NULL)\n AND (poreject_invoiced)\n\n)\nORDER BY sortdate DESC;\n admin 2013-07-26 0 280 reorderExceptionsByPlannerCode detail used by dspReorderExceptionsByPlannerCode Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: reorderExceptionsByPlannerCode\n-- Name: detail\n-- Notes: used by dspReorderExceptionsByPlannerCode\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT itemsite_id, itemtype, warehous_code, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescrip,\n reorderdate, reorderlevel,\n (itemsite_qtyonhand - qtyAllocated(itemsite_id, reorderdate) +\n qtyOrdered(itemsite_id, reorderdate)) AS projavail,\n 'qty' AS reorderlevel_xtnumericrole,\n 'qty' AS projavail_xtnumericrole\nFROM (SELECT itemsite_id,\n CASE WHEN (item_type IN ('M', 'B', 'T')) THEN 1\n WHEN (item_type IN ('P', 'O')) THEN 2\n ELSE 3\n END AS itemtype,\n warehous_code, item_number, item_descrip1,\n item_descrip2,\n reorderDate(itemsite_id,\n ,\n )\n AS reorderdate,\n itemsite_qtyonhand, reorderlevel\n FROM (SELECT itemsite_id, itemsite_item_id,\n itemsite_warehous_id, itemsite_qtyonhand,\n CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel\n ELSE 0.0\n END AS reorderlevel\n FROM itemsite\n WHERE ((true)\n \n AND (itemsite_warehous_id=)\n \n \n AND (itemsite_plancode_id=)\n \n AND (itemsite_plancode_id IN (SELECT plancode_id\n FROM plancode\n WHERE (plancode_code ~ )))\n \n )\n ) AS itemsitedata, item, whsinfo\n WHERE ((itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id))\n ) AS data\nWHERE (reorderdate IS NOT NULL)\nORDER BY reorderdate, item_number;\n admin 2013-07-26 0 452 reports detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: reports\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\n SELECT report_id, report_name,\n firstline(report_descrip) AS report_descrip, report_grade,\n CASE nspname WHEN 'public' THEN '' ELSE nspname END AS pkgname,\n CASE nspname WHEN 'public' THEN 0\n ELSE 1 END AS xtindentrole,\n report_descrip AS report_descrip_qttooltiprole\n FROM report\n JOIN pg_class ON (report.tableoid=pg_class.oid)\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\n UNION\n SELECT -1, pkghead_name,\n firstline(pkghead_descrip), NULL,\n pkghead_name, 0, pkghead_descrip\n FROM report, pg_class, pg_namespace\n RIGHT OUTER JOIN pkghead ON (nspname=pkghead_name)\n WHERE ((report.tableoid=pg_class.oid)\n AND (relnamespace=pg_namespace.oid))\n ORDER BY pkgname, xtindentrole, report_name,\n report_grade DESC, report_id;\n\n SELECT report_id, report_name,\n firstline(report_descrip) AS report_descrip,\n report_grade,\n CASE nspname WHEN 'public' THEN '' ELSE nspname END AS pkgname,\n report_descrip AS report_descrip_qttooltiprole\n FROM report\n JOIN pg_class ON (report.tableoid=pg_class.oid)\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\n ORDER BY report_name,\n report_grade DESC, report_id;\n\n admin 2013-07-26 0 79 reservations detail used by dspReservations Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: reservations\n-- Name: detail\n-- Notes: used by dspReservations\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT source_id, order_number, scheddate,\n totalqty, relievedqty, reservedqty, balanceqty,\n CASE WHEN (scheddate < CURRENT_DATE) THEN 'error' END AS scheddate_qtforegroundrold,\n 'qty' AS totalqty_xtnumericrole,\n 'qty' AS relievedqty_xtnumericrole,\n 'qty' AS reservedqty_xtnumericrole,\n 'qty' AS balanceqty_xtnumericrole,\n 0 AS balanceqty_xtrunningrole,\n level AS xtindentrole\nFROM (\nSELECT coitem_scheddate AS sortkey, 0 AS level, coitem_id AS source_id,\n formatSoNumber(coitem_id) AS order_number,\n (coitem_qtyord * coitem_qty_invuomratio) AS totalqty,\n ((coitem_qtyshipped + qtyAtShipping(coitem_id) - coitem_qtyreturned) * coitem_qty_invuomratio) as relievedqty,\n (coitem_qtyreserved * coitem_qty_invuomratio) AS reservedqty,\n (coitem_qtyreserved * coitem_qty_invuomratio) AS balanceqty,\n coitem_scheddate AS scheddate\nFROM cohead, coitem, itemsite, item \nWHERE((coitem_cohead_id=cohead_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (coitem_qtyreserved > 0)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=)\n AND (itemsite_item_id=))\nUNION\nSELECT coitem_scheddate AS sortkey, 1 AS level, coitem_id AS source_id,\n (formatLocationName(itemloc_location_id) || ' ' || formatLotSerialNumber(itemloc_ls_id)) AS order_number,\n NULL AS totalqty, NULL AS relievedqty,\n (itemlocrsrv_qty * coitem_qty_invuomratio) AS reservedqty,\n NULL AS balanceqty, NULL AS scheddate\nFROM itemlocrsrv, itemloc, coitem, itemsite\nWHERE ( (itemloc_id=itemlocrsrv_itemloc_id)\n AND (coitem_id=itemlocrsrv_source_id)\n AND (itemsite_id=coitem_itemsite_id)\n AND (itemsite_warehous_id=)\n AND (itemsite_item_id=) )\n ) AS data\nORDER BY sortkey, source_id, level;\n admin 2013-07-26 0 101 returnAuthorizations detail Notes: Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: returnAuthorizations\n-- Name: detail\n-- Notes:\n-- Notes:\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT DISTINCT rahead_id, rahead_number, rahead_billtoname,\n rahead_authdate,rahead_expiredate,\n COALESCE(cust_number, 'Undefined') AS custnumber,\n CASE\n WHEN rahead_disposition = 'C' THEN\n \n WHEN rahead_disposition = 'R' THEN\n \n WHEN rahead_disposition = 'P' THEN\n \n WHEN rahead_disposition = 'V' THEN\n \n WHEN rahead_disposition = 'M' THEN\n \n END AS disposition,\n formatDate(rahead_authdate) AS f_authorized,\n formatDate(rahead_expiredate) AS f_expires,\n CASE WHEN (rahead_expiredate < current_date) THEN\n 'error'\n END AS rahead_expiredate_qtforegroundrole\n FROM rahead LEFT OUTER JOIN custinfo ON (rahead_cust_id=cust_id)\n \n JOIN raitem ON (raitem_rahead_id=rahead_id) \n JOIN itemsite ON (raitem_itemsite_id=itemsite_id) \n JOIN site() ON (itemsite_warehous_id=warehous_id) \n \n LEFT OUTER JOIN raitem ON (raitem_rahead_id=rahead_id) \n LEFT OUTER JOIN itemsite ON (raitem_itemsite_id=itemsite_id) \n LEFT OUTER JOIN whsinfo ON (itemsite_warehous_id=warehous_id) \n \n WHERE ((true)\n \n AND ((raitem_status = 'O') OR (raitem_status IS NULL)) \n\n \n AND (raitem_qtyauthorized > 0) \n\n\n AND (COALESCE(rahead_expiredate,CURRENT_DATE) >= CURRENT_DATE)\n\n\n AND (itemsite_warehous_id=)\n\n\n AND (rahead_cust_id=)\n\n )\n GROUP BY cust_number,rahead_id,rahead_number,rahead_authdate,rahead_expiredate,\n rahead_billtoname,rahead_disposition\n ORDER BY rahead_number\n admin 2013-07-26 0 80 runningAvailability detail used by dspRunningAvailability, itemAvailabilityWorkbench Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: runningAvailability\n-- Name: detail\n-- Notes: used by dspRunningAvailability, itemAvailabilityWorkbench\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT orderid, altorderid, ordertype, ordernumber, sequence, item_number,\n duedate, qtyordered, qtyreceived, balance,\n balance AS runningavail,\n\n CASE WHEN duedate = startOfTime() THEN ''\n ELSE formatDate(duedate) END AS f_duedate,\n formatQty(qtyordered) AS f_qtyordered,\n formatQty(qtyreceived) AS f_qtyreceived,\n formatQty(balance) AS f_balance,\n\n 1 AS runningavail_xtrunningrole,\n AS runningavail_xtrunninginit,\n CASE WHEN late THEN 'error' END AS duedate_qtforegroundrole,\n CASE WHEN duedate = startOfTime() THEN '' END AS duedate_qtdisplayrole,\n CASE WHEN ordertype ~ OR\n ordertype ~ OR\n ordertype ~ THEN\n 'emphasis' END AS qtforegroundrole,\n 'qty' AS qtyordered_xtnumericrole,\n 'qty' AS qtyreceived_xtnumericrole,\n 'qty' AS balance_xtnumericrole\nFROM (\n\nSELECT -1 AS orderid, -1 AS altorderid, 'QOH' AS ordertype,\n NULL AS ordernumber,\n 0 AS sequence,\n '' AS item_number,\n startOfTime() AS duedate,\n FALSE AS late,\n 0 AS qtyordered,\n 0 AS qtyreceived,\n AS balance\nUNION\n\n\nSELECT tohead_id AS orderid, toitem_id AS altorderid, 'T/O' AS ordertype,\n TEXT(tohead_number) AS ordernumber,\n 1 AS sequence,\n tohead_srcname || '/' || tohead_destname AS item_number,\n toitem_duedate AS duedate,\n (toitem_duedate < CURRENT_DATE) AS late,\n toitem_qty_ordered AS qtyordered,\n toitem_qty_received AS qtyreceived,\n noNeg(toitem_qty_ordered - toitem_qty_received) AS balance\nFROM tohead, toitem\nWHERE ((toitem_tohead_id=tohead_id)\n AND (toitem_status NOT IN ('C', 'X'))\n AND (toitem_item_id=)\n AND (tohead_dest_warehous_id=)\n AND (toitem_qty_ordered > toitem_qty_received) )\n\nUNION\nSELECT tohead_id AS orderid, toitem_id AS altorderid, 'T/O' AS ordertype,\n TEXT(tohead_number) AS ordernumber,\n 1 AS sequence,\n tohead_srcname || '/' || tohead_destname AS item_number,\n toitem_duedate AS duedate,\n (toitem_duedate < CURRENT_DATE) AS late,\n toitem_qty_ordered AS qtyordered,\n toitem_qty_received AS qtyreceived,\n -1 * noNeg(toitem_qty_ordered - toitem_qty_shipped - qtyAtShipping('TO', toitem_id)) AS balance\n -- TODO: old code had ^^^^ for formatted balance and vvvv used to calc running avail! which is right?\n -- -1 * noNeg(toitem_qty_ordered - toitem_qty_received) AS balance\nFROM tohead, toitem\nWHERE ((toitem_tohead_id=tohead_id)\n AND (toitem_status NOT IN ('C', 'X'))\n AND (toitem_item_id=)\n AND (tohead_src_warehous_id=)\n AND (toitem_qty_ordered - toitem_qty_shipped - qtyAtShipping('TO', toitem_id)) > 0 )\n\nUNION\n\nSELECT wo_id AS orderid, -1 AS altorderid,\n 'W/O' AS ordertype,\n formatWoNumber(wo_id) AS ordernumber,\n 1 AS sequence,\n item_number,\n wo_duedate AS duedate,\n (wo_duedate < CURRENT_DATE) AS late,\n wo_qtyord AS qtyordered,\n wo_qtyrcv AS qtyreceived,\n noNeg(wo_qtyord - wo_qtyrcv) AS balance\nFROM wo, itemsite, item\nWHERE ((wo_status<>'C')\n AND (wo_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=)\n AND (itemsite_item_id=)\n AND (item_type NOT IN ('C', 'Y')))\n\nUNION\n\n-- Tools on work orders to be returned\nSELECT wo_id AS orderid, -1 AS altorderid,\n 'W/O' AS ordertype,\n formatWoNumber(wo_id) AS ordernumber,\n 1 AS sequence,\n item_number,\n wo_duedate AS duedate,\n (wo_duedate < CURRENT_DATE) AS late,\n womatl_qtyreq AS qtyordered,\n COALESCE(SUM(abs(invhist_invqty)),0) AS qtyreceived,\n noNeg(womatl_qtyreq - COALESCE(SUM(abs(invhist_invqty)),0)) AS balance\nFROM womatl\n JOIN wo ON (wo_id=womatl_wo_id)\n JOIN itemsite ON (womatl_itemsite_id=itemsite_id)\n JOIN item ON (itemsite_item_id=item_id)\n LEFT OUTER JOIN womatlpost ON (womatl_id=womatlpost_womatl_id)\n LEFT OUTER JOIN invhist ON ((womatlpost_invhist_id=invhist_id)\n AND (invhist_invqty < 0))\nWHERE ((wo_status<>'C')\n AND (itemsite_warehous_id=)\n AND (itemsite_item_id=)\n AND (item_type = 'T'))\nGROUP BY wo_id, wo_duedate, item_number, womatl_qtyreq\n\n\nUNION\nSELECT wo_id AS orderid, -1 AS altorderid,\n 'W/O' AS ordertype,\n formatWoNumber(wo_id) AS ordernumber,\n 1 AS sequence,\n item_number,\n wo_duedate AS duedate,\n (wo_duedate < CURRENT_DATE) AS late,\n (wo_qtyord * brddist_stdqtyper) AS qtyordered,\n (wo_qtyrcv * brddist_stdqtyper) AS qtyreceived,\n noNeg((wo_qtyord - wo_qtyrcv) * brddist_stdqtyper) AS balance\nFROM xtmfg.brddist, wo, itemsite, item\nWHERE ((wo_status<>'C')\n AND (brddist_wo_id=wo_id)\n AND (wo_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (brddist_itemsite_id=itemsite_id)\n AND (itemsite_warehous_id=)\n AND (itemsite_item_id=)\n AND (item_type IN ('C', 'Y')) )\n\n\nUNION\nSELECT wo_id AS orderid, womatl_id AS altorderid,\n 'W/O' AS ordertype,\n formatWoNumber(wo_id) AS ordernumber,\n 2 AS sequence,\n woi.item_number,\n womatl_duedate AS duedate,\n FALSE AS late,\n itemuomtouom(womatlis.itemsite_item_id, womatl_uom_id, NULL, womatl_qtyreq) AS qtyordered,\n itemuomtouom(womatlis.itemsite_item_id, womatl_uom_id, NULL, womatl_qtyiss) AS qtyreceived,\n itemuomtouom(womatlis.itemsite_item_id, womatl_uom_id, NULL, (noNeg(womatl_qtyreq - womatl_qtyiss) * -1)) AS balance\nFROM womatl, wo, itemsite AS wois, item AS woi, itemsite AS womatlis, item AS womatli\nWHERE ((wo_status<>'C')\n AND (wo_itemsite_id=wois.itemsite_id)\n AND (wois.itemsite_item_id=woi.item_id)\n AND (womatlis.itemsite_item_id=womatli.item_id)\n AND (womatli.item_type != 'T')\n AND (womatl_wo_id=wo_id)\n AND (womatlis.itemsite_item_id=)\n AND (womatlis.itemsite_warehous_id=)\n AND (womatl_itemsite_id=womatlis.itemsite_id) )\n\nUNION\n-- Special handling for tools\nSELECT wo_id AS orderid, womatl_id AS altorderid,\n 'W/O' AS ordertype,\n formatWoNumber(wo_id) AS ordernumber,\n 2 AS sequence,\n woi.item_number,\n womatl_duedate AS duedate,\n FALSE AS late,\n itemuomtouom(womatlis.itemsite_item_id, womatl_uom_id, NULL, womatl_qtyreq) AS qtyordered,\n COALESCE(SUM(invhist_invqty),0) AS qtyreceived,\n (itemuomtouom(womatlis.itemsite_item_id, womatl_uom_id, NULL, (noNeg(womatl_qtyreq))) - COALESCE(SUM(invhist_invqty),0)) * -1 AS balance\nFROM itemsite AS wois, item AS woi, itemsite AS womatlis, item AS womatli, wo, womatl\n LEFT OUTER JOIN womatlpost ON (womatl_id=womatlpost_womatl_id)\n LEFT OUTER JOIN invhist ON ((womatlpost_invhist_id=invhist_id)\n AND (invhist_invqty > 0))\nWHERE ((wo_status<>'C')\n AND (wo_itemsite_id=wois.itemsite_id)\n AND (wois.itemsite_item_id=woi.item_id)\n AND (womatlis.itemsite_item_id=womatli.item_id)\n AND (womatli.item_type = 'T')\n AND (womatl_wo_id=wo_id)\n AND (womatlis.itemsite_item_id=)\n AND (womatlis.itemsite_warehous_id=)\n AND (womatl_itemsite_id=womatlis.itemsite_id) )\nGROUP BY wo_id, woi.item_number, womatl_id, womatl_duedate, womatlis.itemsite_item_id, womatl_uom_id, womatl_qtyreq\n\nUNION\nSELECT pohead_id AS orderid, poitem_id AS altorderid,\n 'P/O' AS ordertype,\n TEXT(pohead_number) AS ordernumber,\n 1 AS sequence,\n '' AS item_number,\n poitem_duedate AS duedate,\n (poitem_duedate < CURRENT_DATE) AS late,\n (poitem_qty_ordered * poitem_invvenduomratio) AS qtyordered,\n (NoNeg(poitem_qty_received - poitem_qty_returned) * poitem_invvenduomratio) AS qtyreceived,\n (noNeg(poitem_qty_ordered - poitem_qty_received) * poitem_invvenduomratio) AS balance\nFROM pohead, poitem, itemsite, item\nWHERE ((poitem_pohead_id=pohead_id)\n AND (poitem_status <> 'C')\n AND (poitem_itemsite_id=itemsite_id)\n AND (itemsite_warehous_id=)\n AND (itemsite_item_id=item_id)\n AND (item_id=) )\n\nUNION\nSELECT cohead_id AS orderid, coitem_id AS altorderid,\n 'S/O' AS ordertype,\n TEXT(cohead_number) AS ordernumber,\n 2 AS sequence,\n cust_name AS item_number,\n coitem_scheddate AS duedate,\n (coitem_scheddate < CURRENT_DATE) AS late,\n (coitem_qtyord * coitem_qty_invuomratio) AS qtyordered,\n (coitem_qty_invuomratio * (coitem_qtyshipped - coitem_qtyreturned + qtyAtShipping(coitem_id))) AS qtyreceived,\n (coitem_qty_invuomratio * noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned - qtyAtShipping(coitem_id)) * -1) AS balance\nFROM coitem, cohead, custinfo, itemsite, item\nWHERE ((coitem_status='O')\n AND (cohead_cust_id=cust_id)\n AND (coitem_cohead_id=cohead_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_warehous_id=)\n AND (itemsite_item_id=item_id)\n AND (item_id=))\n\n\n\nUNION\nSELECT planord_id AS orderid, -1 AS altorderid,\n CASE WHEN (planord_firm) THEN \n \t ELSE \n END AS ordertype,\n CAST(planord_number AS text) AS ordernumber,\n 1 AS sequence,\n '' AS item_number,\n planord_duedate AS duedate,\n FALSE AS late,\n planord_qty AS qtyordered,\n NULL AS qtyreceived,\n planord_qty AS balance\nFROM planord, itemsite\nWHERE ((planord_type='P')\n AND (planord_itemsite_id=itemsite_id)\n AND (itemsite_warehous_id=)\n AND (itemsite_item_id=) )\n\nUNION\nSELECT planord_id AS orderid, -1 AS altorderid,\n CASE WHEN (planord_firm) THEN \n\t ELSE \n END AS ordertype,\n CAST(planord_number AS text) AS ordernumber,\n 1 AS sequence,\n '' AS item_number,\n planord_duedate AS duedate,\n FALSE AS late,\n planord_qty AS qtyordered,\n NULL AS qtyreceived,\n planord_qty AS balance\nFROM planord, itemsite\nWHERE ((planord_type='W')\n AND (planord_itemsite_id=itemsite_id)\n AND (itemsite_warehous_id=)\n AND (itemsite_item_id=) )\n\nUNION\n-- Tools on Planned Work Orders\nSELECT planord_id AS orderid, -1 AS altorderid,\n CASE WHEN (planord_firm) THEN \n\t ELSE \n END AS ordertype,\n CAST(planord_number AS text) AS ordernumber,\n 1 AS sequence,\n item_number,\n planord_duedate AS duedate,\n FALSE AS late,\n planreq_qty AS qtyordered,\n NULL AS qtyreceived,\n planreq_qty AS balance\nFROM planreq\n JOIN itemsite ON (itemsite_id=planreq_itemsite_id)\n JOIN item ON (item_id=itemsite_item_id)\n JOIN planord ON ((planreq_source_id=planord_id)\n AND (planreq_source='P'))\nWHERE ((itemsite_warehous_id=)\n AND (itemsite_item_id=)\n AND (item_type='T') )\n\nUNION\nSELECT planord_id AS orderid, -1 AS altorderid,\n CASE WHEN (planord_firm) THEN \n\t ELSE \n END AS ordertype,\n CAST(planord_number AS text) AS ordernumber,\n 1 AS sequence,\n srcwhsinfo.warehous_code || '/' || whsinfo.warehous_code AS item_number,\n planord_duedate AS duedate,\n FALSE AS late,\n planord_qty AS qtyordered,\n NULL AS qtyreceived,\n planord_qty AS balance\nFROM planord JOIN itemsite ON (itemsite.itemsite_id=planord_itemsite_id)\n JOIN whsinfo ON (whsinfo.warehous_id=itemsite.itemsite_warehous_id)\n JOIN itemsite srcitemsite ON (srcitemsite.itemsite_id=planord_supply_itemsite_id)\n JOIN whsinfo srcwhsinfo ON (srcwhsinfo.warehous_id=srcitemsite.itemsite_warehous_id)\nWHERE ((planord_type='T')\n AND (itemsite.itemsite_warehous_id=)\n AND (itemsite.itemsite_item_id=) )\n\nUNION\nSELECT planord_id AS orderid, -1 AS altorderid,\n CASE WHEN (planord_firm) THEN \n\t ELSE \n END AS ordertype,\n CAST(planord_number AS text) AS ordernumber,\n 1 AS sequence,\n srcwhsinfo.warehous_code || '/' || whsinfo.warehous_code AS item_number,\n planord_duedate AS duedate,\n FALSE AS late,\n planord_qty AS qtyordered,\n NULL AS qtyreceived,\n (planord_qty * -1) AS balance\nFROM planord JOIN itemsite ON (itemsite.itemsite_id=planord_itemsite_id)\n JOIN whsinfo ON (whsinfo.warehous_id=itemsite.itemsite_warehous_id)\n JOIN itemsite srcitemsite ON (srcitemsite.itemsite_id=planord_supply_itemsite_id)\n JOIN whsinfo srcwhsinfo ON (srcwhsinfo.warehous_id=srcitemsite.itemsite_warehous_id)\nWHERE ((planord_type='T')\n AND (srcitemsite.itemsite_warehous_id=)\n AND (srcitemsite.itemsite_item_id=) )\n\nUNION\nSELECT planreq_id AS orderid, -1 AS altorderid,\n CASE WHEN (planord_firm) THEN \n\t ELSE \n END AS ordertype,\n CAST(planord_number AS text) AS ordernumber,\n 1 AS sequence,\n--get the planned order number for the higher level demand\n (SELECT item_number\n FROM item, itemsite\n WHERE((itemsite_item_id=item_id)\n AND (itemsite_id=planord_itemsite_id))\n ) AS item_number,\n planord_startdate AS duedate,\n FALSE AS late,\n planreq_qty AS f_qtyordered,\n NULL AS qtyreceived,\n (planreq_qty * -1) AS balance\nFROM planreq, planord, itemsite, item\nWHERE ((planreq_source='P')\n AND (planreq_source_id=planord_id)\n AND (planreq_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=)\n AND (itemsite_item_id=) )\n\n\nUNION\nSELECT pr_id AS orderid, -1 AS altorderid,\n AS ordertype,\n CAST(pr_number AS text) AS ordernumber, \n 1 AS sequence,\n '' AS item_number,\n pr_duedate AS duedate,\n FALSE AS late,\n pr_qtyreq AS qtyordered,\n NULL AS qtyreceived,\n pr_qtyreq AS balance\nFROM pr, itemsite, item\nWHERE ((pr_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (pr_itemsite_id=itemsite_id)\n AND (itemsite_warehous_id=)\n AND (itemsite_item_id=) )\n\n) AS dummy\n\nORDER BY duedate, sequence;\n\n admin 2013-07-26 0 479 salesAccounts detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: salesAccounts\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT salesaccnt_id,\n CASE WHEN (salesaccnt_warehous_id=-1) THEN \n ELSE (SELECT warehous_code FROM whsinfo WHERE (warehous_id=salesaccnt_warehous_id))\n END AS warehouscode,\n CASE WHEN ((salesaccnt_custtype_id=-1) AND (salesaccnt_custtype='.*')) THEN \n WHEN (salesaccnt_custtype_id=-1) THEN salesaccnt_custtype\n ELSE (SELECT custtype_code FROM custtype WHERE (custtype_id=salesaccnt_custtype_id))\n END AS custtypecode,\n CASE WHEN (salesaccnt_shipzone_id=-1) THEN \n ELSE (SELECT shipzone_name FROM shipzone WHERE (shipzone_id=salesaccnt_shipzone_id))\n END AS shipzonecode,\n CASE WHEN (salesaccnt_saletype_id=-1) THEN \n ELSE (SELECT saletype_code FROM saletype WHERE (saletype_id=salesaccnt_saletype_id))\n END AS saletypecode,\n CASE WHEN ((salesaccnt_custtype_id=-1) AND (salesaccnt_custtype='.*')) THEN \n WHEN (salesaccnt_custtype_id=-1) THEN salesaccnt_custtype\n ELSE (SELECT custtype_code FROM custtype WHERE (custtype_id=salesaccnt_custtype_id))\n END AS custtypecode,\n CASE WHEN ((salesaccnt_prodcat_id=-1) AND (salesaccnt_prodcat='.*')) THEN \n WHEN (salesaccnt_prodcat_id=-1) THEN salesaccnt_prodcat\n ELSE (SELECT prodcat_code FROM prodcat WHERE (prodcat_id=salesaccnt_prodcat_id))\n END AS prodcatcode,\n CASE WHEN (salesaccnt_sales_accnt_id IS NULL) THEN \n WHEN (salesaccnt_sales_accnt_id = -1) THEN \n ELSE formatGLAccount(salesaccnt_sales_accnt_id) END AS salesaccount,\n CASE WHEN (salesaccnt_credit_accnt_id IS NULL) THEN \n WHEN (salesaccnt_credit_accnt_id = -1) THEN \n ELSE formatGLAccount(salesaccnt_credit_accnt_id) END AS creditaccount,\n CASE WHEN (salesaccnt_cos_accnt_id IS NULL) THEN \n WHEN (salesaccnt_cos_accnt_id = -1) THEN \n ELSE formatGLAccount(salesaccnt_cos_accnt_id) END AS cosaccount,\n CASE WHEN (salesaccnt_returns_accnt_id IS NULL) THEN \n WHEN (salesaccnt_returns_accnt_id = -1) THEN \n ELSE formatGLAccount(salesaccnt_returns_accnt_id) END AS returnsaccount,\n CASE WHEN (salesaccnt_cor_accnt_id IS NULL) THEN \n WHEN (salesaccnt_cor_accnt_id = -1) THEN \n ELSE formatGLAccount(salesaccnt_cor_accnt_id) END AS coraccount,\n CASE WHEN (salesaccnt_cow_accnt_id IS NULL) THEN \n WHEN (salesaccnt_cow_accnt_id = -1) THEN \n ELSE formatGLAccount(salesaccnt_cow_accnt_id) END AS cowaccount\nFROM salesaccnt\nORDER BY warehouscode, custtypecode, prodcatcode\n;\n admin 2013-07-26 0 83 salesOrders detail used by dspSalesOrdersByCustomer, dspSalesOrdersByCustomerPO, dspSalesOrdersByParameterList Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: salesOrders\n-- Name: detail\n-- Notes: used by dspSalesOrdersByCustomer, dspSalesOrdersByCustomerPO, dspSalesOrdersByParameterList\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT cohead_id, cust_id,\n cohead.*,\n cust_number, cust_name,\n getSoSchedDate(cohead_id) AS min_scheddate,\n CASE\n WHEN ( (SELECT COUNT(*)\n FROM coitem\n WHERE ((coitem_status<>'X') AND (coitem_cohead_id=cohead_id))) = 0) THEN \n WHEN ( ( (SELECT COUNT(*)\n FROM coitem\n WHERE ((coitem_status='C')\n AND (coitem_cohead_id=cohead_id))) > 0)\n AND ( (SELECT COUNT(*)\n FROM coitem\n WHERE ((coitem_status NOT IN ('C','X'))\n AND (coitem_cohead_id=cohead_id))) = 0) ) THEN \n WHEN ( ( (SELECT COUNT(*)\n FROM coitem\n WHERE ((coitem_status='C')\n AND (coitem_cohead_id=cohead_id))) = 0)\n AND ( (SELECT COUNT(*)\n FROM coitem\n WHERE ((coitem_status NOT IN ('C','X'))\n AND (coitem_cohead_id=cohead_id))) > 0) ) THEN \n ELSE \n END AS order_status\nFROM cohead JOIN custinfo ON (cust_id=cohead_cust_id)\nWHERE ( (1=1)\n\n AND (cohead_cust_id=)\n\n\n AND (cust_custtype_id=)\n\n\n AND (cust_custtype_id IN (SELECT custtype_id FROM custtype WHERE (custtype_code ~ )))\n\n\n AND (cohead_custponumber~*)\n\n\n AND (cohead_orderdate BETWEEN AND )\n\n AND ((SELECT COUNT(*)\n FROM coitem JOIN itemsite ON (itemsite_id=coitem_itemsite_id)\n JOIN site() ON (warehous_id=itemsite_warehous_id)\n WHERE (coitem_cohead_id=cohead_id)) > 0) )\n\n ORDER BY cust_number, cohead_number;\n\nORDER BY cohead_number;\n\n\n admin 2013-07-26 0 478 saletype table maintain saletype table Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: saletype\n-- Name: table\n-- Notes: maintain saletype table\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\n SELECT *\n FROM saletype\n WHERE true\n \n AND (saletype_id=) \n \n \n AND (UPPER(saletype_code)=UPPER()) \n \n ORDER BY saletype_code;\n\n\n INSERT INTO saletype\n ( saletype_code,\n saletype_descr,\n saletype_active )\n VALUES\n ( UPPER(),\n ,\n )\n RETURNING saletype_id;\n\n\n UPDATE saletype\n SET saletype_code=UPPER(),\n saletype_descr=,\n saletype_active=\n WHERE (saletype_id=);\n\n\n DELETE FROM saletype WHERE saletype_id=;\n\n\n SELECT deleteUnusedSaleTypes() AS result;\n\n\n RAISE EXCEPTION 'saletype invalid mode';\n\n admin 2013-07-26 0 84 schedule plannedorders used by dpsPlannedOrdersByItem, dspPlannedOrdersByPlannerCode, dspPlannedRevenueExpensesByPlannerCode -- Notes:\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n -- Group: schedule\n -- Name: plannedorders\n -- Notes: used by dpsPlannedOrdersByItem, dspPlannedOrdersByPlannerCode, dspPlannedRevenueExpensesByPlannerCode\n SELECT *,\n plorevenue - plocost AS profit,\n formatMoney(plorevenue - plocost) AS f_profit,\n CASE WHEN plocost > plorevenue THEN 'error'\n END AS plorevenue_xtforegroundrole,\n CASE WHEN (planord_firm) THEN 'emphasis'\n END AS qtforegroundrole,\n 'qty' AS planord_qty_xtnumericrole,\n 'curr' AS plocost_xtnumericrole,\n 'curr' AS plorevenue_xtnumericrole,\n 'curr' AS profit_xtnumericrole,\n 0 AS plocost_xttotalrole,\n 0 AS plorevenue_xttotalrole,\n 0 AS profit_xttotalrole\n FROM (\n SELECT planord_id, planord_itemsite_id,\n planord.*,\n (select plancode_code from plancode where plancode_id = itemsite.itemsite_plancode_id) as plancode,\n formatPloNumber(planord_id) AS ordernum,\n CASE WHEN (planord_type='P') THEN 'P/O'\n WHEN (planord_type='W') THEN 'W/O'\n WHEN (planord_type='T') THEN 'T/O'\n ELSE '?'\n END AS ordtype,\n formatDate(planord_duedate) AS f_duedate,\n formatDate(planord_startdate) AS f_startdate,\n formatQty(planord_qty) AS f_qty,\n formatboolYN(planord_firm) AS f_firm,\n whsinfo.warehous_code AS warehous_code,\n supplywhsinfo.warehous_code AS supply_warehous_code,\n item_number,\n (item_descrip1 || ' ' || item_descrip2) AS item_descrip,\n firstline(planord_comments) AS comments,\n uom_name,\n (classcode_code || '-' || classcode_descrip) AS f_classcode,\n \n (actcost(item_id) * planord_qty)\n \n (stdcost(item_id) * planord_qty)\n \n 0\n AS plocost,\n \n (item_listprice * planord_qty)\n \n (CASE WHEN(averageSalesPrice(itemsite.itemsite_id,\n ,\n )=0)\n THEN item_listprice\n ELSE averageSalesPrice(itemsite.itemsite_id,\n ,\n )\n END * planord_qty)\n \n 0\n AS plorevenue,\n \n formatMoney(actcost(item_id) * planord_qty)\n \n formatMoney(stdcost(item_id) * planord_qty)\n \n formatMoney(0)\n AS f_plocost,\n \n formatMoney(item_listprice * planord_qty)\n \n formatMoney(CASE WHEN(averageSalesPrice(itemsite.itemsite_id,\n ,\n )=0)\n THEN item_listprice\n ELSE averageSalesPrice(itemsite.itemsite_id,\n ,\n )\n END * planord_qty)\n \n formatMoney(0)\n AS f_plorevenue\n FROM planord JOIN itemsite ON (planord_itemsite_id=itemsite.itemsite_id)\n JOIN whsinfo ON (itemsite.itemsite_warehous_id=whsinfo.warehous_id)\n JOIN item ON (itemsite.itemsite_item_id=item_id)\n JOIN uom ON (item_inv_uom_id=uom_id)\n LEFT OUTER JOIN classcode ON (classcode_id=item_classcode_id)\n LEFT OUTER JOIN itemsite supplyitemsite ON (planord_supply_itemsite_id=supplyitemsite.itemsite_id)\n LEFT OUTER JOIN whsinfo supplywhsinfo ON (supplyitemsite.itemsite_warehous_id=supplywhsinfo.warehous_id)\n \n JOIN itemgrpitem ON (itemgrpitem_item_id=item_id)\n JOIN itemgrp ON (itemgrp_id=itemgrpitem_itemgrp_id AND itemgrp_id=)\n \n WHERE (TRUE\n \n AND (itemsite.itemsite_item_id=)\n \n \n AND (item.item_classcode_id=)\n \n \n AND (itemsite.itemsite_plancode_id=)\n \n AND (itemsite.itemsite_plancode_id IN (SELECT plancode_id\n FROM plancode\n WHERE (plancode_code ~ )))\n \n \n AND (itemsite.itemsite_warehous_id=)\n \n \n AND (planord_duedate BETWEEN AND )\n \n \n AND (item_sold)\n \n \n AND (\n \n (planord_type=) OR\n \n FALSE )\n \n ) ) AS data\n ORDER BY planord_duedate, item_number;\n admin 2013-07-26 0 453 scripts detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: scripts\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT script_id, script_name, script_enabled,\n firstline(script_notes) AS script_notes, script_order,\n CASE nspname WHEN 'public' THEN '' ELSE nspname END AS pkgname,\n CASE nspname WHEN 'public' THEN 0\n ELSE 1 END AS xtindentrole,\n script_notes AS script_notes_qttooltiprole\n FROM script\n JOIN pg_class ON (script.tableoid=pg_class.oid)\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\n UNION \nSELECT -1, pkghead_name, NULL,\n firstline(pkghead_descrip), NULL,\n pkghead_name, 0, pkghead_descrip \n FROM script, pg_class, pg_namespace\n RIGHT OUTER JOIN pkghead ON (nspname=pkghead_name)\n WHERE ((script.tableoid=pg_class.oid)\n AND (relnamespace=pg_namespace.oid))\n ORDER BY pkgname, xtindentrole, script_name, script_order, script_id;\n\nSELECT script_id, script_name, script_enabled,\n firstline(script_notes) AS script_notes, script_order,\n CASE nspname WHEN 'public' THEN '' ELSE nspname END AS pkgname,\n script_notes AS script_notes_qttooltiprole\n FROM script\n JOIN pg_class ON (script.tableoid=pg_class.oid)\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\nORDER BY script_name, script_order, script_id;\n\n admin 2013-07-26 0 131 selectPayments applyallcredits used by selectPayments Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: selectPayments\n-- Name: applyallcredits\n-- Notes: used by selectPayments\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT applyapcredits(vend_id) AS result\nFROM vendinfo\nWHERE ((TRUE)\n\n AND (vend_id = )\n\n AND (vend_vendtype_id = )\n\n AND (vend_vendtype_id IN (SELECT vendtype_id\n FROM vendtype\n WHERE (vendtype_code ~ )))\n\n );\n admin 2013-07-26 0 85 shipments detail used by dspShipmentsByDate, dspShipmentsBySalesOrder, dspShipmentsByShipment Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: shipments\n-- Name: detail\n-- Notes: used by dspShipmentsByDate, dspShipmentsBySalesOrder, dspShipmentsByShipment\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT shiphead_id, lineitem_id,\n CASE WHEN (level=0) THEN order_number\n ELSE item_number\n END AS order_item,\n CASE WHEN (level=0) THEN customer\n ELSE itemdescription\n END AS cust_desc,\n shiphead_order_type,\n shiphead_number, \n order_number, \n customer,\n shiphead_shipdate,\n formatDate(shiphead_shipdate) AS f_shipdate,\n shiphead_tracknum,\n shiphead_freight,\n freight_curr_abbr,\n linenumber,\n item_number,\n itemdescription,\n warehous_code,\n qtyord,\n formatQty(qtyord) AS f_qtyord,\n qtyshipped,\n formatQty(qtyshipped) AS f_qtyshipped,\n 'qty' AS qtyord_xtnumericrole,\n 'qty' AS qtyshipped_xtnumericrole,\n 'curr' AS shiphead_freight_xtnumericrole,\n CASE WHEN (COALESCE(linenumber, 0) = 0) THEN '' END AS linenumber_qtdisplayrole,\n CASE WHEN (COALESCE(qtyord, 0) = 0) THEN '' END AS qtyord_qtdisplayrole,\n CASE WHEN (COALESCE(qtyshipped, 0) = 0) THEN '' END AS qtyshipped_qtdisplayrole,\n CASE WHEN (COALESCE(shiphead_freight, 0) = 0) THEN '' END AS shiphead_freight_qtdisplayrole,\n level AS xtindentrole\nFROM (\nSELECT shiphead_id, -1 AS lineitem_id, cohead_number AS sortkey1, shiphead_number AS sortkey2, 0 AS level,\n shiphead_order_type,\n shiphead_number,\n cohead_number AS order_number, \n (cust_number || '-' || cust_name) AS customer,\n shiphead_shipdate,\n shiphead_tracknum,\n shiphead_freight,\n currConcat(shiphead_freight_curr_id) AS freight_curr_abbr, \n 0 AS linenumber, '' AS item_number,\n '' AS itemdescription,\n '' AS warehous_code,\n 0 AS qtyord,\n 0 AS qtyshipped\nFROM shiphead, cohead, custinfo\nWHERE ( (shiphead_order_id=cohead_id)\n AND (cohead_cust_id=cust_id)\n AND (shiphead_shipped)\n AND (shiphead_order_type='SO')\n\n AND (shiphead_shipdate BETWEEN and )\n\n\n AND (cohead_id = )\n\n\n AND (shiphead_id = )\n\n ) \nUNION\nSELECT shiphead_id, coitem_id AS lineitem_id, cohead_number AS sortkey1, shiphead_number AS sortkey2, 1 AS level,\n '' AS shiphead_order_type,\n '' AS shiphead_number,\n '' AS order_number, \n '' AS customer,\n CAST(NULL AS DATE) AS shiphead_shipdate,\n '' AS shiphead_tracknum,\n 0 AS shiphead_freight,\n '' AS freight_curr_abbr, \n coitem_linenumber AS linenumber, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescription,\n warehous_code,\n coitem_qtyord AS qtyord,\n SUM(shipitem_qty) AS qtyshipped\nFROM shipitem, shiphead, coitem, cohead, custinfo, itemsite, item, whsinfo\nWHERE ( (shipitem_shiphead_id=shiphead_id)\n AND (shipitem_orderitem_id=coitem_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (coitem_status <> 'X')\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (shiphead_order_id=cohead_id)\n AND (cohead_cust_id=cust_id)\n AND (shiphead_shipped)\n AND (shiphead_order_type='SO')\n\n AND (shiphead_shipdate BETWEEN and )\n\n\n AND (cohead_id = )\n\n\n AND (shiphead_id = )\n\n ) \nGROUP BY shiphead_id, coitem_id, shiphead_order_type, shiphead_number,\n cohead_number, cust_number, cust_name, shiphead_shipdate,\n coitem_linenumber, item_number, item_descrip1, item_descrip2,\n warehous_code, shiphead_tracknum, coitem_qtyord, \n shiphead_freight, shiphead_freight_curr_id \n\nUNION\nSELECT shiphead_id, -1 AS lineitem_id, tohead_number AS sortkey1, shiphead_number AS sortkey2, 0 AS level,\n shiphead_order_type,\n shiphead_number,\n tohead_number AS order_number, \n tohead_destname AS customer,\n shiphead_shipdate,\n shiphead_tracknum,\n shiphead_freight,\n currConcat(shiphead_freight_curr_id) AS freight_curr_abbr, \n 0 AS linenumber, '' AS item_number,\n '' AS itemdescription,\n '' AS warehous_code,\n 0 AS qtyord,\n 0 AS qtyshipped\nFROM shiphead, tohead \nWHERE ( (shiphead_order_id=tohead_id)\n AND (shiphead_shipped)\n AND (shiphead_order_type='TO')\n\n AND (shiphead_shipdate BETWEEN and )\n\n\n AND (tohead_id = )\n\n\n AND (shiphead_id = )\n\n ) \nUNION\nSELECT shiphead_id, toitem_id AS lineitem_id, tohead_number AS sortkey1, shiphead_number AS sortkey2, 1 AS level,\n '' AS shiphead_order_type,\n '' AS shiphead_number,\n '' AS order_number, \n '' AS customer,\n CAST(NULL AS DATE) AS shiphead_shipdate,\n '' AS shiphead_tracknum,\n 0 AS shiphead_freight,\n '' AS freight_curr_abbr, \n toitem_linenumber AS linenumber, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescription,\n tohead_srcname AS warehous_code,\n toitem_qty_ordered AS qtyord,\n SUM(shipitem_qty) AS qtyshipped\nFROM shipitem, shiphead, toitem, tohead, item \nWHERE ( (shipitem_shiphead_id=shiphead_id)\n AND (shipitem_orderitem_id=toitem_id)\n AND (toitem_status <> 'X')\n AND (toitem_item_id=item_id)\n AND (shiphead_order_id=tohead_id)\n AND (shiphead_shipped)\n AND (shiphead_order_type='TO')\n\n AND (shiphead_shipdate BETWEEN and )\n\n\n AND (tohead_id = )\n\n\n AND (shiphead_id = )\n\n ) \nGROUP BY shiphead_id, toitem_id, shiphead_order_type, shiphead_number,\n tohead_number, shiphead_shipdate,\n toitem_linenumber, item_number, item_descrip1, item_descrip2,\n tohead_srcname, shiphead_tracknum, toitem_qty_ordered, \n shiphead_freight, shiphead_freight_curr_id \n\n ) AS data\nORDER BY sortkey1, sortkey2, level, linenumber DESC;\n admin 2013-07-26 0 81 salesHistory detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: salesHistory\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT cohist.*,\n CASE WHEN (cohist_invcnumber='-1') THEN \n ELSE cohist_invcnumber\n END AS invoicenumber,\n cust_number, cust_name, salesrep_name,\n saletype_code, shipzone_name,\n item_id, COALESCE(item_number, cohist_misc_descrip) AS item_number,\n item_descrip1, (item_descrip1 || ' ' || item_descrip2) AS itemdescription,\n warehous_code,\n currtobase(cohist_curr_id, cohist_unitprice, cohist_invcdate) AS baseunitprice,\n round((cohist_qtyshipped * cohist_unitprice), 2) AS extprice,\n round((cohist_qtyshipped * currtobase(cohist_curr_id, cohist_unitprice, cohist_invcdate)), 2) AS baseextprice,\n round((cohist_qtyshipped * cohist_unitcost), 4) AS extcost,\n currtobase(cohist_curr_id, cohist_commission, cohist_invcdate) AS basecommission,\n\n formatDate(cohist_invcdate) AS f_invcdate,\n formatQty(cohist_qtyshipped) AS f_qtyshipped,\n formatBoolYN(cohist_commissionpaid) AS f_commissionpaid,\n formatSalesPrice(currtobase(cohist_curr_id, cohist_unitprice, cohist_invcdate)) AS f_baseunitprice,\n formatMoney(round((cohist_qtyshipped * cohist_unitprice), 2)) AS f_extprice,\n formatMoney(round((cohist_qtyshipped * currtobase(cohist_curr_id, cohist_unitprice, cohist_invcdate)), 2)) AS f_baseextprice,\n formatMoney(round((cohist_qtyshipped * cohist_unitcost), 4)) AS f_extcost,\n formatMoney(currtobase(cohist_curr_id, cohist_commission, cohist_invcdate)) AS f_basecommission,\n\n currConcat(cohist_curr_id) AS currAbbr,\n AS cohist_invcdate_xtnullrole,\n 'qty' AS cohist_qtyshipped_xtnumericrole,\n 'salesprice' AS cohist_unitprice_xtnumericrole,\n 'salesprice' AS baseunitprice_xtnumericrole,\n 'curr' AS extprice_xtnumericrole,\n 'curr' AS baseextprice_xtnumericrole,\n 'cost' AS cohist_unitcost_xtnumericrole,\n 'curr' AS extcost_xtnumericrole,\n 'curr' AS cohist_commission_xtnumericrole,\n 'curr' AS basecommission_xtnumericrole,\n 0 AS cohist_qtyshipped_xttotalrole,\n 0 AS baseextprice_xttotalrole,\n 0 AS extcost_xttotalrole,\n 0 AS basecommission_xttotalrole\n FROM cohist JOIN custinfo ON (cust_id=cohist_cust_id)\n JOIN salesrep ON (salesrep_id=cohist_salesrep_id)\n LEFT OUTER JOIN saletype ON (saletype_id=cohist_saletype_id)\n LEFT OUTER JOIN shipzone ON (shipzone_id=cohist_shipzone_id)\n\n LEFT OUTER JOIN itemsite ON (itemsite_id=cohist_itemsite_id)\n LEFT OUTER JOIN site() ON (warehous_id=itemsite_warehous_id)\n LEFT OUTER JOIN item ON (item_id=itemsite_item_id)\n\n JOIN itemsite ON (itemsite_id=cohist_itemsite_id)\n JOIN site() ON (warehous_id=itemsite_warehous_id)\n JOIN item ON (item_id=itemsite_item_id)\n\n\n JOIN cohead ON (cohead_number=cohist_ordernumber)\n\nWHERE ( (true)\n\n AND (COALESCE(cohist_misc_type, '') <> 'F')\n AND (COALESCE(cohist_misc_type, '') <> 'T')\n\n\n AND (cohist_invcdate >= )\n\n\n AND (cohist_invcdate <= )\n\n\n AND (cohist_shipdate >= )\n\n\n AND (cohist_shipdate <= )\n\n\n AND (cohist_salesrep_id=)\n\n\n AND (cohist_shipto_id=)\n\n\n AND (UPPER(cohist_billtoname) ~ UPPER())\n\n\n AND (cohist_cust_id=)\n\n\n AND (cust_custtype_id=)\n\n AND (cust_custtype_id IN (SELECT DISTINCT custtype_id\n FROM custtype\n WHERE (custtype_code ~ )))\n\n\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem))\n\n\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem\n WHERE (custgrpitem_custgrp_id=)))\n\n\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrp, custgrpitem\n WHERE ( (custgrpitem_custgrp_id=custgrp_id)\n AND (custgrp_name ~ ) )) )\n\n\n\n AND (itemsite_item_id=)\n\n\n AND (item_prodcat_id=)\n\n\n AND (item_prodcat_id IN (SELECT DISTINCT prodcat_id\n FROM prodcat\n WHERE (prodcat_code ~ )))\n\n\n\n AND (itemsite_warehous_id=)\n\n\n AND (cohist_shipzone_id=)\n\n\n AND (cohist_saletype_id=)\n\n\n AND (cohead_id=)\n\n )\nORDER BY cohist_invcdate, item_number;\n\n admin 2013-07-26 0 82 salesOrderItems detail used by dspBacklogByCustomer, dspBacklogByItem, dspBacklogByParameterList, dspBacklogBySalesOrder, dspBookingsByCustomer, dspBookingsByCustomerGroup, dspBookingsByItem, dspBookingsByProductCategory, dspBookingsBySalesRep, dspBookingsByShipTo, dspSalesOrdersByItem Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: salesOrderItems\n-- Name: detail\n-- Notes: used by dspBacklogByCustomer, dspBacklogByItem, dspBacklogByParameterList, dspBacklogBySalesOrder, dspBookingsByCustomer, dspBookingsByCustomerGroup, dspBookingsByItem, dspBookingsByProductCategory, dspBookingsBySalesRep, dspBookingsByShipTo, dspSalesOrdersByItem\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT\n cohead_id, coitem_id, *, currconcat(cohead_curr_id) AS currAbbr,\n\n CASE WHEN xtindentrole = 0 THEN cust_name\n END AS item_number_qtdisplayrole,\n\n-- no alterations to displayroles\n\n CASE WHEN xtindentrole = 0 THEN cohead_number\n END AS coitem_linenumber_qtdisplayrole,\n CASE WHEN xtindentrole = 0 THEN cust_name\n END AS item_number_qtdisplayrole,\n \n 'qty' AS coitem_qtyord_xtnumericrole,\n 'qty' AS coitem_qtyshipped_xtnumericrole,\n 'qty' AS coitem_qtyreturned_xtnumericrole,\n 'qty' AS qtyatshipping_xtnumericrole,\n 'qty' AS qtybalance_xtnumericrole,\n 'qty' AS qtyavailable_xtnumericrole,\n 'salesprice' AS coitem_price_xtnumericrole,\n 'salesprice' AS baseunitprice_xtnumericrole,\n 'curr' AS extprice_xtnumericrole,\n 'curr' AS baseextprice_xtnumericrole,\n 'curr' AS extpricebalance_xtnumericrole,\n 'curr' AS baseextpricebalance_xtnumericrole,\n 0 AS coitem_qtyord_xttotalrole,\n 0 AS coitem_qtyshipped_xttotalrole,\n 0 AS coitem_qtyreturned_xttotalrole,\n 0 AS qtybalance_xttotalrole,\n 0 AS baseextprice_xttotalrole,\n 0 AS baseextpricebalance_xttotalrole\nFROM (\n -- get cohead info\n \n \n SELECT \n 0 AS xtindentrole,\n -- dummy coitem record\n -1 AS coitem_id, NULL::INTEGER AS coitem_cohead_id,\n -1 AS coitem_linenumber,NULL::INTEGER AS coitem_itemsite_id,\n NULL::TEXT AS coitem_status, NULL::DATE AS coitem_scheddate,\n getSoSchedDate(cohead_id) AS sort_scheddate,\n NULL::DATE AS coitem_promdate, NULL::NUMERIC AS coitem_qtyord,\n NULL::NUMERIC AS coitem_unitcost, NULL::NUMERIC AS coitem_price,\n NULL::NUMERIC AS coitem_custprice, NULL::NUMERIC AS coitem_qtyshipped,\n NULL::INTEGER AS coitem_order_id, NULL::TEXT AS coitem_memo,\n NULL::BOOLEAN AS coitem_imported, NULL::NUMERIC AS coitem_qtyreturned,\n NULL::TIMESTAMP AS coitem_closedate,\n NULL::TEXT AS coitem_custpn, NULL::TEXT AS coitem_order_type,\n NULL::TEXT AS coitem_close_username,\n NULL::TIMESTAMP AS coitem_lastupdated,\n NULL::INTEGER AS coitem_substitute_item_id,\n NULL::TIMESTAMP AS coitem_created, NULL::TEXT AS coitem_creator,\n NULL::NUMERIC AS coitem_prcost,\n NULL::INTEGER AS coitem_qty_uom_id,\n NULL::NUMERIC AS coitem_qty_invuomratio,\n NULL::INTEGER AS coitem_price_uom_id,\n NULL::NUMERIC AS coitem_price_invuomratio,\n NULL::BOOLEAN AS coitem_warranty,\n NULL::INTEGER AS coitem_cos_accnt_id,\n NULL::NUMERIC AS coitem_qtyreserved,\n NULL::INTEGER AS coitem_subnumber,\n cohead.*,\n cust_number, cust_name,\n NULL::TEXT AS item_number, NULL::TEXT AS item_descrip1,\n NULL::TEXT AS itemdescription,\n NULL::TEXT AS uom_name,\n NULL::TEXT AS warehous_code,\n NULL::NUMERIC AS qtyatshipping,\n NULL::NUMERIC AS qtyavailable,\n NULL::BOOLEAN AS stockout,\n NULL::BOOLEAN AS reorder,\n NULL::NUMERIC AS qtybalance,\n NULL::NUMERIC AS baseunitprice,\n NULL::NUMERIC AS extprice,\n NULL::NUMERIC AS baseextprice,\n NULL::NUMERIC AS extpricebalance,\n NULL::NUMERIC AS baseextpricebalance,\n NULL::TEXT AS qtyavailable_qtforegroundrole\n\n FROM coitem JOIN cohead ON (cohead_id=coitem_cohead_id)\n JOIN custinfo ON (cust_id=cohead_cust_id)\n JOIN itemsite ON (itemsite_id=coitem_itemsite_id)\n JOIN site() ON (warehous_id=itemsite_warehous_id)\n JOIN item ON (item_id=itemsite_item_id)\n JOIN uom ON (uom_id=coitem_qty_uom_id)\n WHERE ( (coitem_status<>'X')\n \n AND (coitem_cohead_id=)\n \n \n AND (coitem_status<>'C')\n \n \n \n AND (cohead_orderdate BETWEEN AND )\n \n AND (coitem_scheddate BETWEEN AND )\n \n \n\n \n AND (cohead_salesrep_id=)\n \n \n AND (cohead_shipto_id=)\n \n \n AND (cohead_cust_id=)\n \n AND (cust_custtype_id=)\n \n AND (cust_custtype_id IN (SELECT DISTINCT custtype_id\n FROM custtype\n WHERE (custtype_code ~ )))\n \n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem))\n \n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem\n WHERE (custgrpitem_custgrp_id=)))\n \n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrp, custgrpitem\n WHERE ( (custgrpitem_custgrp_id=custgrp_id)\n AND (custgrp_name ~ ) )) )\n \n\n \n AND (itemsite_item_id=)\n \n AND (item_prodcat_id=)\n \n AND (item_prodcat_id IN (SELECT DISTINCT prodcat_id\n FROM prodcat\n WHERE (prodcat_code ~ )))\n \n\n \n AND (itemsite_warehous_id=)\n \n )\n\n UNION\n -- endif not exists "salesrep_id"\n -- endif not exists "item_id"\n -- endif not exists "cohead_id"\n\n SELECT \n 0\n 0\n 0\n 1 AS xtindentrole,\n coitem_id, coitem_cohead_id,\n coitem_linenumber,coitem_itemsite_id,\n coitem_status, coitem_scheddate,\n getSoSchedDate(cohead_id) AS sort_scheddate,\n coitem_promdate, coitem_qtyord,\n coitem_unitcost, coitem_price,\n coitem_custprice, coitem_qtyshipped,\n coitem_order_id, coitem_memo,\n coitem_imported, coitem_qtyreturned,\n coitem_closedate,\n coitem_custpn, coitem_order_type,\n coitem_close_username,\n coitem_lastupdated,\n coitem_substitute_item_id,\n coitem_created, coitem_creator,\n coitem_prcost,\n coitem_qty_uom_id,\n coitem_qty_invuomratio,\n coitem_price_uom_id,\n coitem_price_invuomratio,\n coitem_warranty,\n coitem_cos_accnt_id,\n coitem_qtyreserved,\n coitem_subnumber,\n cohead.*,\n cust_number, cust_name,\n item_number, item_descrip1, (item_descrip1 || ' ' || item_descrip2) AS itemdescription,\n uom_name,\n warehous_code,\n ( SELECT SUM(shipitem_qty)\n FROM shipitem JOIN shiphead ON ( (shipitem_shiphead_id=shiphead_id) AND (shiphead_order_type='SO') AND (NOT shiphead_shipped) )\n WHERE (shipitem_orderitem_id=coitem_id) ) AS qtyatshipping,\n qtyAvailable(itemsite_id, coitem_scheddate) AS qtyavailable,\n (qtyAvailable(itemsite_id, coitem_scheddate) < 0.0) AS stockout,\n CASE WHEN (itemsite_useparams) THEN (qtyAvailable(itemsite_id, coitem_scheddate) <= itemsite_reorderlevel)\n ELSE (qtyAvailable(itemsite_id, coitem_scheddate) <= 0.0)\n END AS reorder,\n noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) AS qtybalance,\n currtobase(cohead_curr_id, coitem_price, cohead_orderdate) AS baseunitprice,\n round((coitem_qtyord * coitem_qty_invuomratio) *\n (coitem_price / coitem_price_invuomratio), 2) AS extprice,\n round((coitem_qtyord * coitem_qty_invuomratio) *\n (currtobase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio), 2) AS baseextprice,\n round((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) *\n (coitem_price / coitem_price_invuomratio), 2) AS extpricebalance,\n round((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) *\n (currtobase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio), 2) AS baseextpricebalance,\n CASE WHEN (qtyAvailable(itemsite_id, coitem_scheddate) < 0.0) THEN 'error'\n WHEN itemsite_useparams AND (qtyAvailable(itemsite_id, coitem_scheddate) <= itemsite_reorderlevel) THEN 'warning'\n WHEN NOT itemsite_useparams AND (qtyAvailable(itemsite_id, coitem_scheddate) <= 0.0) THEN 'warning'\n END AS qtyavailable_qtforegroundrole\n\n FROM coitem JOIN cohead ON (cohead_id=coitem_cohead_id)\n JOIN custinfo ON (cust_id=cohead_cust_id)\n JOIN itemsite ON (itemsite_id=coitem_itemsite_id)\n JOIN site() ON (warehous_id=itemsite_warehous_id)\n JOIN item ON (item_id=itemsite_item_id)\n JOIN uom ON (uom_id=coitem_qty_uom_id)\n WHERE ( (coitem_status<>'X')\n \n AND (coitem_cohead_id=)\n \n \n AND (coitem_status<>'C')\n \n \n \n AND (cohead_orderdate BETWEEN AND )\n \n AND (coitem_scheddate BETWEEN AND )\n \n \n\n \n AND (cohead_salesrep_id=)\n \n \n AND (cohead_shipto_id=)\n \n \n AND (cohead_cust_id=)\n \n AND (cust_custtype_id=)\n \n AND (cust_custtype_id IN (SELECT DISTINCT custtype_id\n FROM custtype\n WHERE (custtype_code ~ )))\n \n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem))\n \n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem\n WHERE (custgrpitem_custgrp_id=)))\n \n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrp, custgrpitem\n WHERE ( (custgrpitem_custgrp_id=custgrp_id)\n AND (custgrp_name ~ ) )) )\n \n\n \n AND (itemsite_item_id=)\n \n AND (item_prodcat_id=)\n \n AND (item_prodcat_id IN (SELECT DISTINCT prodcat_id\n FROM prodcat\n WHERE (prodcat_code ~ )))\n \n\n \n AND (itemsite_warehous_id=)\n \n )\n\n) AS dummy\n\n\n ORDER BY sort_scheddate, cohead_number, coitem_linenumber\n\n ORDER BY cohead_orderdate, cohead_number, coitem_linenumber\n\n ORDER BY cohead_number, coitem_linenumber\n\n;\n admin 2013-07-26 0 433 salesOrderItems list used by salesOrder Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: salesOrderItems\n-- Name: list\n-- Notes: used by salesOrder\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT coitem_id, coitem_altid, groupby,\n coitem_linenumber, coitem_subnumber, f_linenumber,\n warehous_code, item_number, item_type, description,\n item_number_cust, item_descrip1_cust, item_descrip2_cust, item_barcode,\n enhanced_status, coitem_firm,\n qty_uom, price_uom, ship_uom,\n coitem_memo,\n-- always create formatted columns for scheduled reports\n formatDate(coitem_scheddate) AS f_scheddate,\n formatSalesPrice(coitem_price) AS f_price,\n formatSalesPrice(coitem_custprice) AS f_custprice,\n formatPrcnt(discountfromcust / 100) AS f_discountfromcust,\n formatQty(coitem_qtyord) AS f_qtyord, \n CASE WHEN (qtyshipped > 0.0) THEN formatQty(qtyshipped) ELSE NULL END AS f_qtyshipped,\n CASE WHEN (qtyshipped > 0.0) THEN formatQty(balance) ELSE NULL END AS f_balance,\n CASE WHEN (qtyatshipping > 0.0) THEN formatQty(qtyatshipping) ELSE NULL END AS f_qtyatshipping,\n formatMoney(extprice) AS f_extprice,\n CASE WHEN (extprice_shipped > 0.0) THEN formatMoney(extprice_shipped) ELSE NULL END AS f_extprice_shipped,\n-- end formatted columns\n coitem_scheddate, coitem_price, coitem_custprice, discountfromcust,\n coitem_qtyord, qtyshipped, balance, qtyatshipping,\n extprice, extprice_shipped,\n CASE WHEN (discountfromcust=100.0) THEN 'N/A' END AS discountfromcust_qtdisplayrole,\n 'qty' AS coitem_qtyord_xtnumericrole,\n 'qty' AS qtyshipped_xtnumericrole,\n 'qty' AS balance_xtnumericrole,\n 'qty' AS qtyatshipping_xtnumericrole,\n 'salesprice' AS coitem_price_xtnumericrole,\n 'salesprice' AS coitem_custprice_xtnumericrole,\n 'curr' AS extprice_xtnumericrole,\n 'curr' AS extprice_shipped_xtnumericrole,\n CASE WHEN fetchMetricBool('EnableSOShipping') AND\n coitem_scheddate > CURRENT_DATE AND\n (noNeg(coitem_qtyord) <> qtyAtShipping('SO', coitem_id)) THEN 'future'\n WHEN fetchMetricBool('EnableSOShipping') AND\n (noNeg(coitem_qtyord) <> qtyAtShipping('SO', coitem_id)) THEN 'expired'\n WHEN (coitem_status NOT IN ('C', 'X') AND\n EXISTS(SELECT coitem_id\n FROM coitem\n WHERE ((coitem_status='C')\n AND (coitem_cohead_id=)))) THEN 'error'\n END AS coitem_scheddate_qtforegroundrole,\n CASE WHEN coitem_subnumber = 0 THEN 0\n ELSE 1\n END AS xtindentrole,\n spplytype, ordrnumbr\nFROM (\nSELECT coitem_id,\n CASE WHEN (coitem_status='C') THEN 1\n WHEN (coitem_status='X') THEN 4\n WHEN ( (coitem_status='O') AND ( (qtyAtShipping('SO', coitem_id) > 0) OR (coitem_qtyshipped > 0) ) ) THEN 2\n ELSE 3\n END AS coitem_altid, 1 AS groupby,\n coitem_linenumber, coitem_subnumber, formatSoLineNumber(coitem_id) AS f_linenumber,\n warehous_code, item_number, item_type,\n (item_descrip1 || ' ' || item_descrip2) AS description,\n CASE WHEN (coitem_custpn != '') THEN coitem_custpn\n ELSE item_number\n END AS item_number_cust,\n CASE WHEN (coitem_custpn != '' AND itemalias_usedescrip=TRUE) THEN itemalias_descrip1\n ELSE item_descrip1\n END AS item_descrip1_cust,\n CASE WHEN (coitem_custpn != '' AND itemalias_usedescrip=TRUE) THEN itemalias_descrip2\n ELSE item_descrip2\n END AS item_descrip2_cust,\n formatitemsitebarcode(itemsite_id) AS item_barcode,\n coitem_status, coitem_firm,\n (CASE WHEN (coitem_status='O' AND (SELECT cust_creditstatus FROM custinfo WHERE cust_id=cohead_cust_id)='H') THEN 'H'\n WHEN (coitem_status='O' AND ((SELECT SUM(invcitem_billed)\n FROM cohead, invchead, invcitem\n WHERE ((CAST(invchead_ordernumber AS text)=cohead_number)\n AND (invcitem_invchead_id=invchead_id)\n AND (invcitem_item_id=item_id)\n AND (invcitem_warehous_id=warehous_id)\n AND (invcitem_linenumber=coitem_linenumber)\n AND (cohead_id=coitem_cohead_id))) >= coitem_qtyord)) THEN 'I'\n WHEN (coitem_status='O' AND ((SELECT SUM(invcitem_billed)\n FROM cohead, invchead, invcitem\n WHERE ((CAST(invchead_ordernumber AS text)=cohead_number)\n AND (invcitem_invchead_id=invchead_id)\n AND (invcitem_item_id=item_id)\n AND (invcitem_warehous_id=warehous_id)\n AND (invcitem_linenumber=coitem_linenumber)\n AND (cohead_id=coitem_cohead_id))) > 0)) THEN 'P'\n WHEN (coitem_status='O' AND (itemsite_qtyonhand - qtyAllocated(itemsite_id, CURRENT_DATE)\n + qtyOrdered(itemsite_id, CURRENT_DATE) - \n ((coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio))\n >= 0) THEN 'R'\n ELSE coitem_status END\n || CASE WHEN (coitem_firm) THEN 'F' ELSE '' END\n ) AS enhanced_status,\n quom.uom_name AS qty_uom, puom.uom_name AS price_uom,\n itemSellingUOM(item_id) AS ship_uom,\n coitem_memo,\n coitem_scheddate, coitem_price, coitem_custprice, coitem_qtyord,\n CASE WHEN (coitem_custprice = 0.0) THEN 100.0\n ELSE ((1.0 - (coitem_price / coitem_custprice)) * 100.0)\n END AS discountfromcust,\n noNeg(coitem_qtyshipped - coitem_qtyreturned) AS qtyshipped,\n noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) AS balance,\n qtyAtShipping('SO', coitem_id) AS qtyatshipping,\n ROUND((coitem_qtyord * coitem_qty_invuomratio) *\n (coitem_price / coitem_price_invuomratio),2) AS extprice,\n ROUND(((coitem_qtyshipped - coitem_qtyreturned) * coitem_qty_invuomratio) *\n (coitem_price / coitem_price_invuomratio),2) AS extprice_shipped,\n CASE WHEN coitem_order_type='W' THEN TEXT( 'WO')\n WHEN coitem_order_type='P' THEN TEXT('PO' )\n WHEN coitem_order_type='R' THEN TEXT('PR')\n ELSE TEXT (' ')\n END AS spplytype,\n CASE WHEN coitem_order_type='W' THEN (wo_number || '-' || wo_subnumber)\n WHEN coitem_order_type='P' THEN (pohead_number || '-' || poitem_linenumber)\n WHEN coitem_order_type='R' THEN (pr_number || '-' || pr_subnumber)\n ELSE TEXT (' ')\n END AS ordrnumbr\n FROM cohead\n JOIN coitem ON (coitem_cohead_id=cohead_id)\n JOIN itemsite ON (itemsite_id=coitem_itemsite_id)\n JOIN item ON (item_id=itemsite_item_id)\n JOIN whsinfo ON (warehous_id=itemsite_warehous_id)\n JOIN uom AS quom ON (quom.uom_id=coitem_qty_uom_id)\n JOIN uom AS puom ON (puom.uom_id=coitem_price_uom_id)\n LEFT OUTER JOIN itemalias ON ((itemalias_item_id=item_id) AND (itemalias_number=coitem_custpn))\n LEFT OUTER JOIN wo ON (coitem_order_id = wo_id)\n LEFT OUTER JOIN pr ON (coitem_order_id = pr_id)\n LEFT OUTER JOIN (pohead JOIN poitem ON (pohead_id = poitem_pohead_id))\n ON (coitem_order_id = poitem_id)\n WHERE (cohead_id=)\n\n\n AND (coitem_status != 'X')\n\n\n\n AND (coitem_status != 'C')\n\n\n\n AND (item_type != 'K')\n\n\n) AS data\nORDER BY coitem_linenumber, coitem_subnumber;\n admin 2013-07-26 0 281 salesOrderStatus detail used by dspSalesOrderStatus Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: salesOrderStatus\n-- Name: detail\n-- Notes: used by dspSalesOrderStatus\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT coitem_id, coitem_linenumber, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescrip,\n warehous_code,\n coitem_qtyord, coitem_qtyshipped, coitem_qtyreturned,\n SUM(COALESCE(cobill_qty, 0)) AS invoiced,\n noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) AS balance,\n CASE WHEN (coitem_status='C') THEN coitem_closedate END AS closedate,\n CASE WHEN (coitem_status='C') THEN coitem_close_username END AS closeuser,\n CASE WHEN (coitem_order_id=-1) THEN ''\n WHEN (coitem_order_type='W') THEN ( SELECT (formatWoNumber(wo_id) || '/' || wo_status)\n FROM wo\n WHERE (wo_id=coitem_order_id) )\n ELSE ''\n END AS childinfo,\n 'qty' AS coitem_qtyord_xtnumericrole,\n 'qty' AS coitem_qtyshipped_xtnumericrole,\n 'qty' AS coitem_qtyreturned_xtnumericrole,\n 'qty' AS invoiced_xtnumericrole,\n 'qty' AS balance_xtnumericrole \nFROM itemsite, item, whsinfo, coitem LEFT OUTER JOIN\n cobill ON (coitem_id=cobill_coitem_id AND\n cobill_invcitem_id IS NOT NULL)\nWHERE ( (coitem_itemsite_id=itemsite_id)\n AND (coitem_status <> 'X')\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (coitem_cohead_id=) ) \nGROUP BY coitem_id, coitem_linenumber, item_number, \n item_descrip1, item_descrip2, warehous_code, \n coitem_qtyord, coitem_qtyshipped, coitem_status, \n coitem_closedate, coitem_close_username, \n coitem_qtyreturned, coitem_order_id, \n coitem_order_type \nORDER BY coitem_linenumber;\n admin 2013-07-26 0 86 shippingForm shipment used by printShippingForm Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: shippingForm\n-- Name: shipment\n-- Notes: used by printShippingForm\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT cohead_id AS order_id, cohead_shiptoname AS shipto, \n cohead_shiptoaddress1 AS addr1, shiphead_order_type, \n shiphead_id, shiphead_shipchrg_id, shiphead_shipped, \n\tCOALESCE(shiphead_shipform_id, cohead_shipform_id) AS shipform_id \nFROM cohead, shiphead \nWHERE ((cohead_id=shiphead_order_id)\n AND (shiphead_order_type='SO')\n AND (shiphead_id= )\n\n AND (cohead_id= )\n\n) \n\nUNION \nSELECT tohead_id AS order_id, tohead_destname AS shipto, \n tohead_destaddress1 AS addr1, shiphead_order_type, \n shiphead_id, shiphead_shipchrg_id, shiphead_shipped, \n\tCOALESCE(shiphead_shipform_id, tohead_shipform_id) AS shipform_id \nFROM tohead, shiphead \nWHERE ((tohead_id=shiphead_order_id)\n AND (shiphead_order_type='TO')\n AND (shiphead_id= )\n\n AND (tohead_id= )\n\n) \nORDER BY shiphead_shipped \n\nLIMIT 1;\n admin 2013-07-26 0 282 slowMovingInventoryByClassCode detail used by dspSlowMovingInventoryByClassCode Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: slowMovingInventoryByClassCode\n-- Name: detail\n-- Notes: used by dspSlowMovingInventoryByClassCode\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT itemsite_id, warehous_code, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescrip, uom_name,\n itemsite_qtyonhand, itemsite_datelastused, cost,\n noNeg(cost * itemsite_qtyonhand) AS value,\n CASE WHEN (COALESCE(itemsite_datelastused, startOfTime()) <= startOfTime()) THEN 'N/A'\n END AS itemsite_datelastused_qtdisplayrole,\n 'qty' AS itemsite_qtyonhand_xtnumericrole,\n 'cost' AS cost_xtnumericrole,\n 'curr' AS value_xtnumericrole,\n 0 AS itemsite_qtyonhand_xttotalrole,\n 0 AS value_xttotalrole\nFROM ( SELECT itemsite_id, warehous_code, item_number,\n item_descrip1, item_descrip2, uom_name,\n itemsite_qtyonhand, itemsite_datelastused,\n \n actcost(itemsite_item_id) \n \n stdcost(itemsite_item_id) \n AS cost \n FROM itemsite, item, whsinfo, uom\n WHERE ((itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_active)\n AND (itemsite_datelastused < )\n \n AND (itemsite_warehous_id=)\n \n \n AND (item_classcode_id=)\n \n AND (item_classcode_id IN (SELECT classcode_id FROM classcode WHERE classcode_code ~ ))\n \n )\n ) AS data \nORDER BY warehous_code, \n \n item_number\n \n itemsite_datelastused\n \n noNeg(cost * itemsite_qtyonhand) DESC\n \n;\n admin 2013-07-26 0 283 standardJournalHistory detail used by dspStandardJournalHistory Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: standardJournalHistory\n-- Name: detail\n-- Notes: used by dspStandardJournalHistory\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT gltrans_sequence, gltrans_id,\n sortdate, sortdoc, level, gltrans_amount,\n gltrans_date, gltrans_journalnumber, gltrans_posted,\n gltrans_docnumber, account,\n debit, credit,\n 'curr' AS debit_xtnumericrole,\n 'curr' AS credit_xtnumericrole,\n CASE WHEN (debit = 0) THEN '' END AS debit_qtdisplayrole,\n CASE WHEN (credit = 0) THEN '' END AS credit_qtdisplayrole,\n level AS xtindentrole \nFROM (SELECT DISTINCT gltrans_sequence, -1 AS gltrans_id,\n gltrans_date AS sortdate, gltrans_docnumber AS sortdoc, 0 AS level, 0 AS gltrans_amount,\n gltrans_date, gltrans_journalnumber, gltrans_posted,\n NULL AS gltrans_docnumber,\n NULL AS account,\n 0 AS debit, 0 AS credit\n FROM gltrans, accnt \n WHERE ( (gltrans_accnt_id=accnt_id)\n AND (NOT gltrans_deleted) \n AND (gltrans_date BETWEEN AND )\n AND (gltrans_doctype='ST') ) \n UNION \n SELECT DISTINCT gltrans_sequence, -1 AS gltrans_id,\n gltrans_date AS sortdate, gltrans_docnumber AS sortdoc, 1 AS level, 0 AS gltrans_amount,\n CAST(NULL AS DATE) AS gltrans_date, CAST(NULL AS INTEGER) AS gltrans_journalnumber, \n CAST(NULL AS BOOLEAN) AS gltrans_posted,\n CASE WHEN (COALESCE(gltrans_docnumber, '') = '') THEN 'Unnamed'\n ELSE gltrans_docnumber\n END AS gltrans_docnumber,\n NULL AS account,\n 0 AS debit, 0 AS credit \n FROM gltrans, accnt \n WHERE ( (gltrans_accnt_id=accnt_id)\n AND (NOT gltrans_deleted)\n AND (gltrans_date BETWEEN AND )\n AND (gltrans_doctype='ST') ) \n UNION \n SELECT gltrans_sequence, gltrans_id,\n gltrans_date AS sortdate, gltrans_docnumber AS sortdoc, 2 AS level, gltrans_amount,\n CAST(NULL AS DATE) AS gltrans_date, CAST(NULL AS INTEGER) AS gltrans_journalnumber,\n CAST(NULL AS BOOLEAN) AS gltrans_posted,\n NULL AS gltrans_docnumber,\n (formatGLAccount(accnt_id) || ' - ' || accnt_descrip) AS account,\n CASE WHEN (gltrans_amount < 0) THEN (gltrans_amount * -1)\n END AS debit,\n CASE WHEN (gltrans_amount > 0) THEN gltrans_amount\n END AS credit \n FROM gltrans, accnt \n WHERE ( (gltrans_accnt_id=accnt_id)\n AND (NOT gltrans_deleted) \n AND (gltrans_date BETWEEN AND )\n AND (gltrans_doctype='ST') ) \n ) AS data \nORDER BY sortdate, gltrans_sequence, sortdoc, level, gltrans_amount;\n admin 2013-07-26 0 285 substituteAvailability detail used by dspSubstituteAvailabilityByItem Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: substituteAvailability\n-- Name: detail\n-- Notes: used by dspSubstituteAvailabilityByItem\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT s_itemsite_id, warehous_code, item_number, itemdescrip,\n qtyonhand, reorderlevel, leadtime, itemsub_rank,\n allocated, ordered, available,\n 'qty' AS qtyonhand_xtnumericrole,\n 'qty' AS allocated_xtnumericrole,\n 'qty' AS ordered_xtnumericrole,\n 'qty' AS reorderlevel_xtnumericrole,\n 'qty' AS available_xtnumericrole,\n CASE WHEN (reorderlevel >= available) THEN 'error' END AS available_qtforegroundrole\nFROM (SELECT sub.itemsite_id AS s_itemsite_id,\n warehous_code, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescrip,\n\n (sub.itemsite_qtyonhand * itemsub_uomratio) AS qtyonhand,\n (CASE WHEN(sub.itemsite_useparams)\n THEN sub.itemsite_reorderlevel\n ELSE 0.0\n END * itemsub_uomratio) AS reorderlevel,\n sub.itemsite_leadtime AS leadtime, itemsub_rank,\n\n (sub.itemsite_qtyonhand) AS qtyonhand,\n CASE WHEN(sub.itemsite_useparams) THEN sub.itemsite_reorderlevel\n ELSE 0.0\n END AS reorderlevel,\n sub.itemsite_leadtime AS leadtime, itemsub_rank,\n\n\n \n (qtyAllocated(sub.itemsite_id, sub.itemsite_leadtime) * itemsub_uomratio) AS allocated,\n (qtyOrdered(sub.itemsite_id, sub.itemsite_leadtime) * itemsub_uomratio) AS ordered,\n ((sub.itemsite_qtyonhand * itemsub_uomratio)\n + (qtyOrdered(sub.itemsite_id, sub.itemsite_leadtime) * itemsub_uomratio)\n - (qtyAllocated(sub.itemsite_id, sub.itemsite_leadtime) * itemsub_uomratio)) AS available\n \n (qtyAllocated(sub.itemsite_id, sub.itemsite_leadtime)) AS allocated,\n (qtyOrdered(sub.itemsite_id, sub.itemsite_leadtime)) AS ordered,\n (sub.itemsite_qtyonhand + qtyOrdered(sub.itemsite_id, sub.itemsite_leadtime)\n - qtyAllocated(sub.itemsite_id, sub.itemsite_leadtime)) AS available\n \n\n \n (qtyAllocated(sub.itemsite_id, ) * itemsub_uomratio) AS allocated,\n (qtyOrdered(sub.itemsite_id, ) * itemsub_uomratio) AS ordered,\n ((sub.itemsite_qtyonhand * itemsub_uomratio) + (qtyOrdered(sub.itemsite_id, ) * itemsub_uomratio)\n - (qtyAllocated(sub.itemsite_id, ) * itemsub_uomratio)) AS available\n \n (qtyAllocated(sub.itemsite_id, )) AS allocated,\n (qtyOrdered(sub.itemsite_id, )) AS ordered,\n (sub.itemsite_qtyonhand + qtyOrdered(sub.itemsite_id, )\n - qtyAllocated(sub.itemsite_id, )) AS available\n \n\n \n (qtyAllocated(sub.itemsite_id, ( - CURRENT_DATE)) * itemsub_uomratio) AS allocated,\n (qtyOrdered(sub.itemsite_id, ( - CURRENT_DATE)) * itemsub_uomratio) AS ordered,\n ((sub.itemsite_qtyonhand * itemsub_uomratio) + (qtyOrdered(sub.itemsite_id, ( - CURRENT_DATE)) * itemsub_uomratio)\n - (qtyAllocated(sub.itemsite_id, ( - CURRENT_DATE)) * itemsub_uomratio)) AS available\n \n (qtyAllocated(sub.itemsite_id, ( - CURRENT_DATE))) AS allocated,\n (qtyOrdered(sub.itemsite_id, ( - CURRENT_DATE))) AS ordered,\n (sub.itemsite_qtyonhand + qtyOrdered(sub.itemsite_id,\n ( - CURRENT_DATE)) - qtyAllocated(sub.itemsite_id, ( - CURRENT_DATE))) AS available\n \n\n FROM item, itemsite AS sub, itemsite AS root, whsinfo, itemsub\n WHERE ((sub.itemsite_item_id=item_id)\n AND (root.itemsite_item_id=itemsub_parent_item_id)\n AND (sub.itemsite_item_id=itemsub_sub_item_id)\n AND (root.itemsite_warehous_id=sub.itemsite_warehous_id)\n AND (sub.itemsite_warehous_id=warehous_id)\n AND (root.itemsite_item_id=)\n\n AND (root.itemsite_warehous_id=)\n\n )\n ) AS data\nORDER BY itemsub_rank;\n admin 2013-07-26 0 107 summarizedBacklogByWarehouse counts Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: summarizedBacklogByWarehouse\n-- Name: counts\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT COUNT(coitem.*) AS totalitems \n FROM cohead, coitem, itemsite, custinfo\n\t\t WHERE ( (coitem_cohead_id=cohead_id)\n\t\t AND (coitem_itemsite_id=itemsite_id)\n\t\t AND (cohead_cust_id=cust_id)\n\t\t AND (coitem_status NOT IN ('C','X'))\n\t\t AND (coitem_scheddate BETWEEN \n\t\t AND )\n\t\t \n\t\t AND (itemsite_warehous_id=)\n\t\t \n\t\t \n\t\t AND (cust_custtype_id=)\n\t\t \n\t\t AND (cust_custtype_id IN (SELECT custtype_id FROM custtype\n\t\t WHERE (custtype_code ~ )))\n\t\t \n\t\t );\n admin 2013-07-26 0 108 summarizedBacklogByWarehouse detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: summarizedBacklogByWarehouse\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT * FROM (\n(SELECT cohead_id, 0 AS xtindentrole, salesrep_name, cohead_holdtype, cohead_number, \n coheadstatecolor(cohead_id) AS qtforegroundrole, \n cust_name, \n cohead_created, cohead_orderdate, cohead_packdate, pack_head_id, \n CASE WHEN (cohead_holdtype='N') THEN \n WHEN (cohead_holdtype='C') THEN \n WHEN (cohead_holdtype='S') THEN \n WHEN (cohead_holdtype='P') THEN \n WHEN (cohead_holdtype='R') THEN \n ELSE \n END AS f_holdtype, \n MIN(coitem_scheddate) AS scheddate, \n SUM((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) * \n (currToBase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio) ) AS sales, \n SUM((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) * stdcost(item_id) ) AS cost,\n SUM((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) *\n ((currToBase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio) - stdcost(item_id)) ) AS margin,\n 'curr' AS sales_xtnumericrole,\n 'curr' AS cost_xtnumericrole,\n 'curr' AS margin_xtnumericrole,\n NULL AS shiphead_id, \n NULL AS shiphead_number, \n NULL AS shipstatus,\n NULL AS shipvia,\n CASE WHEN (pack_head_id IS NOT NULL) THEN TRUE\n ELSE FALSE\n END AS packed \n \n , 0 AS sales_xttotalrole, 0 AS cost_xttotalrole, 0 AS margin_xttotalrole \n ,\n cohead_number AS seq\n FROM coitem, itemsite, item, custinfo, cohead\n LEFT OUTER JOIN pack ON (cohead_id = pack_head_id), salesrep \n WHERE ( (coitem_cohead_id=cohead_id)\n AND (salesrep_id = cohead_salesrep_id) \n AND (cohead_cust_id=cust_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (coitem_status NOT IN ('C','X'))\n AND (coitem_scheddate BETWEEN \n AND )\n \n AND (itemsite_warehous_id=)\n \n \n AND (cust_custtype_id=)\n \n AND (cust_custtype_id IN (SELECT custtype_id FROM custtype\n WHERE (custtype_code ~ )))\n \n ) \n GROUP BY cohead_id, salesrep_number, salesrep_name, cohead_number, cust_name,\n cohead_holdtype, cohead_orderdate, cohead_packdate,\n cohead_created, pack_head_id )\n UNION \n (SELECT cohead_id, 1 AS xtindentrole, NULL, NULL, \n shiphead_number AS cohead_number, \n CASE WHEN (shiphead_shipped IS NULL) THEN '' \n WHEN (shiphead_shipped) THEN 'altemphasis' \n WHEN (NOT shiphead_shipped) THEN 'emphasis' \n WHEN ( (COALESCE(cobmisc_cohead_id,0) > 0) \n AND (SUM(noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned)) > 0) \n ) THEN 'error' \n END AS qtforegroundrole, \n COALESCE(shiphead_shipvia, ''), NULL, shiphead_shipdate AS cohead_orderdate, \n NULL, NULL,\n CASE WHEN (shiphead_shipped) THEN \n ELSE \n END AS f_holdtype, MIN(coitem_scheddate), NULL, NULL, NULL, NULL, NULL, NULL, NULL, \n formatShipmentNumber(shiphead_id) AS shiphead_number, \n NULL, \n COALESCE(shiphead_shipvia, '') AS shipvia \n \n , NULL, NULL, NULL \n \n , NULL,\n cohead_number AS seq \n FROM coitem, itemsite, item, custinfo, cohead\n LEFT OUTER JOIN shiphead ON ((shiphead_order_id=cohead_id) \n AND (shiphead_order_type='SO'))\n LEFT OUTER JOIN (SELECT DISTINCT cobmisc_cohead_id FROM cobmisc) AS cobmisc ON (cobmisc_cohead_id=cohead_id) \n LEFT OUTER JOIN pack ON (cohead_id = pack_head_id), salesrep \n WHERE ( (coitem_cohead_id=cohead_id)\n AND (salesrep_id = cohead_salesrep_id) \n AND (cohead_cust_id=cust_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (coitem_status NOT IN ('C','X'))\n AND (coitem_scheddate BETWEEN \n AND )\n \n AND (itemsite_warehous_id=)\n \n \n AND (cust_custtype_id=)\n \n AND (cust_custtype_id IN (SELECT custtype_id FROM custtype\n WHERE (custtype_code ~ )))\n \n AND ((SELECT (count(*)>0) FROM shipitem WHERE ((shipitem_shiphead_id=shiphead_id) AND (NOT shipitem_invoiced))))) \n GROUP BY cohead_id, salesrep_number, salesrep_name, cohead_number, cust_name, \n cohead_holdtype, cohead_orderdate, cohead_packdate, \n shiphead_shipped, shiphead_shipvia, shiphead_shipdate, \n shiphead_id, cobmisc_cohead_id, cohead_created, pack_head_id,\n shiphead_number )) AS data\n ORDER BY seq, cohead_number;\n\n\n admin 2013-07-26 0 109 summarizedBacklogByWarehouse qtys Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: summarizedBacklogByWarehouse\n-- Name: qtys\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT formatQty(COALESCE(SUM(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned), 0)) AS f_totalqty \n FROM cohead, coitem, itemsite, item, custinfo\n\t\t WHERE ( (coitem_cohead_id=cohead_id)\n\t\t AND (coitem_itemsite_id=itemsite_id)\n\t\t AND (itemsite_item_id=item_id)\n\t\t AND (cohead_cust_id=cust_id)\n\t\t AND (coitem_status NOT IN ('C','X'))\n\t\t AND (coitem_scheddate BETWEEN \n\t\t AND )\n\t\t \n\t\t AND (itemsite_warehous_id=)\n\t\t \n\t\t \n\t\t AND (cust_custtype_id=)\n\t\t \n\t\t AND (cust_custtype_id IN (SELECT custtype_id FROM custtype\n\t\t WHERE (custtype_code ~ )))\n\t\t \n\t\t );\n admin 2013-07-26 0 110 summarizedBacklogByWarehouse totals Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: summarizedBacklogByWarehouse\n-- Name: totals\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT COUNT(cohead_id) AS totalorders \n\t\t FROM ( SELECT DISTINCT cohead_id \n FROM cohead, coitem, itemsite, custinfo\n\t\t WHERE ( (coitem_cohead_id=cohead_id)\n\t\t AND (coitem_itemsite_id=itemsite_id)\n\t\t AND (cohead_cust_id=cust_id)\n\t\t AND (coitem_status NOT IN ('C','X'))\n\t\t AND (coitem_scheddate BETWEEN \n\t\t AND )\n\t\t \n\t\t AND (itemsite_warehous_id=)\n\t\t \n\t\t \n\t\t AND (cust_custtype_id=)\n\t\t \n\t\t AND (cust_custtype_id IN (SELECT custtype_id FROM custtype\n\t\t WHERE (custtype_code ~ )))\n\t\t \n\t\t ) ) AS data;\n admin 2013-07-26 0 286 summarizedBankrecHistory detail used by dspSummarizedBankrecHistory Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: summarizedBankrecHistory\n-- Name: detail\n-- Notes: used by dspSummarizedBankrecHistory\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT bankrec_posted, bankrec_postdate,\n bankrec_username, bankrec_opendate,\n bankrec_enddate, bankrec_openbal, bankrec_endbal,\n 'curr' AS bankrec_openbal_xtnumericrole,\n 'curr' AS bankrec_endbal_xtnumericrole\nFROM bankrec\nWHERE (bankrec_bankaccnt_id=)\nORDER BY bankrec_created;\n admin 2013-07-26 0 287 summarizedGLTransactions detail used by dspSummarizedGLTransactions Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: summarizedGLTransactions\n-- Name: detail\n-- Notes: used by dspSummarizedGLTransactions\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT accnt_id, gltrans_id,\n account, accnt_descrip,\n gltrans_date, gltrans_source, gltrans_doctype, gltrans_docnumber,\n f_notes,\n debit, credit,\n gltrans_username, gltrans_created,\n CASE WHEN (level=0) THEN accnt_descrip\n ELSE f_notes \n END AS descrip_notes, \n 'curr' AS debit_xtnumericrole,\n 'curr' AS credit_xtnumericrole,\n 0 AS debit_xtnumericrole,\n 0 AS credit_xtnumericrole,\n CASE WHEN (debit=0) THEN '' END AS debit_qtdisplayrole,\n CASE WHEN (credit=0) THEN '' END AS credit_qtdisplayrole,\n level AS xtindentrole \nFROM ( \nSELECT DISTINCT accnt_id, -1 AS gltrans_id, 0 AS level,\n accnt_number, accnt_profit, accnt_sub, \n formatGLAccount(accnt_id) AS account, accnt_descrip,\n CAST(NULL AS DATE) AS gltrans_date, '' AS gltrans_source, '' AS gltrans_doctype, '' AS gltrans_docnumber,\n '' AS f_notes,\n SUM( CASE WHEN (gltrans_amount < 0) THEN (gltrans_amount * -1) \n ELSE 0 \n END ) AS debit, \n SUM( CASE WHEN (gltrans_amount > 0) THEN gltrans_amount \n ELSE 0 \n END ) AS credit, \n '' AS gltrans_username, CAST(NULL AS TIMESTAMP) AS gltrans_created \nFROM gltrans, accnt \nWHERE ( (gltrans_accnt_id=accnt_id)\n AND (NOT gltrans_deleted) \n AND (gltrans_date BETWEEN AND ) \n\n \n\n AND (gltrans_source=)\n\n \n\n AND (NOT gltrans_posted)\n\n AND (gltrans_posted)\n\n ) GROUP BY accnt_id, accnt_number, accnt_profit, accnt_sub, accnt_descrip \n UNION \n SELECT accnt_id, gltrans_id, 1 AS level,\n accnt_number, accnt_profit, accnt_sub, \n '' AS account, '' AS accnt_descrip,\n gltrans_date, gltrans_source, gltrans_doctype, gltrans_docnumber,\n firstLine(gltrans_notes) AS f_notes,\n CASE WHEN (gltrans_amount < 0) THEN (gltrans_amount * -1)\n ELSE 0\n END AS debit,\n CASE WHEN (gltrans_amount > 0) THEN gltrans_amount\n ELSE 0\n END AS credit,\n gltrans_username, gltrans_created \n FROM gltrans, accnt \n WHERE ((gltrans_accnt_id=accnt_id)\n AND (NOT gltrans_deleted) \n AND (gltrans_date BETWEEN AND ) \n\n\n AND (gltrans_source=)\n\n\n\n AND (NOT gltrans_posted)\n\n AND (gltrans_posted)\n\n\n)) AS data \n ORDER BY accnt_number, accnt_profit, accnt_sub, level, gltrans_date DESC, gltrans_created;\n admin 2013-07-26 0 288 summarizedSalesHistory detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: summarizedSalesHistory\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT 1 AS dummy,\n-- Columns added to match columns of Printed Report\n\n \n \n || E'\\n' || \n \n AS groupsLit,\n\n substring( from 1 for 15) \n \n || E'\\n' || \n \n AS groups,\n\n substring( from 1 for 30) \n \n || E'\\n' || \n \n AS groupsDescrip,\n-- End of columns for printed report\n \n cust_number, cohist_cust_id AS cust_number_xtidrole, cust_name,\n \n \n custtype_code, cust_custtype_id AS custtype_code_xtidrole, \n \n \n item_number, item_id AS item_number_xtidrole, itemdescription, \n \n \n salesrep_number, cohist_salesrep_id AS salesrep_number_xtidrole, salesrep_name, \n \n \n shipzone_name, shipzone_id AS shipzone_name_xtidrole,\n \n \n warehous_code, itemsite_warehous_id AS warehous_code_xtidrole,\n \n \n currAbbr,\n MIN(custunitprice) AS minprice, MAX(custunitprice) AS maxprice, \n AVG(custunitprice) AS avgprice,\n SUM(custextprice) AS totalsales, \n CASE WHEN (SUM(cohist_qtyshipped) = 0) THEN 0 \n ELSE SUM(custextprice) / SUM(cohist_qtyshipped) \n END AS wtavgprice,\n \n currConcat(baseCurrId()) AS currAbbr, \n MIN(baseunitprice) AS minprice, MAX(baseunitprice) AS maxprice, \n AVG(baseunitprice) AS avgprice, \n SUM(baseextprice) AS totalsales, \n CASE WHEN (SUM(cohist_qtyshipped) = 0) THEN 0 \n ELSE SUM(baseextprice) / SUM(cohist_qtyshipped) \n END AS wtavgprice,\n \n SUM(cohist_qtyshipped) AS totalunits, \n MIN(cohist_invcdate) AS firstdate, \n MAX(cohist_invcdate) AS lastdate, \n SUM(cohist_qtyshipped) AS qtyshipped, \n 'salesprice' AS minprice_xtnumericrole, \n 'salesprice' AS maxprice_xtnumericrole, \n 'salesprice' AS avgprice_xtnumericrole, \n 'salesprice' AS wtavgprice_xtnumericrole, \n 'qty' AS qtyshipped_xtnumericrole, \n 'curr' AS extprice_xtnumericrole,\n 'qty' AS totalunits_xtnumericrole, \n 'curr' AS totalsales_xtnumericrole, \n 'qty' AS totalunits_xtnumericrole, \n 'curr' AS totalsales_xtnumericrole, \n 0 AS totalunits_xttotalrole, \n 0 AS totalsales_xttotalrole \nFROM saleshistory \nWHERE (cohist_doctype NOT IN ('C')\n\n AND (cohist_invcdate >= )\n\n\n\n AND (cohist_invcdate <= )\n\n\n\n AND (cohist_shipdate >= )\n\n\n\n AND (cohist_shipdate <= )\n\n\n\n AND (itemsite_warehous_id=)\n\n\n\n AND (itemsite_item_id=)\n\n\n\n AND (cohist_cust_id=)\n\n\n\n AND (cohist_shipto_id=)\n\n\n\n AND (cohist_salesrep_id=)\n\n\n\n AND (item_prodcat_id=)\n\n\n\n AND (prodcat_code ~ ) \n\n\n\n AND (cust_custtype_id=)\n\n\n\n AND (custtype_code ~ )\n \n\n\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem\n WHERE (custgrpitem_custgrp_id=)))\n\n\n\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrp, custgrpitem\n WHERE ( (custgrpitem_custgrp_id=custgrp_id)\n AND (custgrp_name ~ ) )) )\n\n\n\n AND (shipzone_id=)\n\n\n\n AND cust_curr_id = \n\n\n\n AND (currAbbr ~ ) \n\n) \nGROUP BY dummy\n\n , cohist_salesrep_id, salesrep_number, salesrep_name\n\n\n , shipzone_id, shipzone_name, shipzone_descrip\n\n\n , cohist_cust_id, cust_number, cust_name\n\n\n , cust_custtype_id, custtype_code, custtype_descrip\n\n\n , item_id, item_number, itemdescription\n\n\n , itemsite_warehous_id, warehous_code, warehous_descrip\n\n\n , cust_curr_id, currAbbr\n\n ORDER BY dummy\n\n , salesrep_number\n\n\n , shipzone_name\n\n\n , cust_number\n\n\n , custtype_code\n\n\n , item_number\n\n\n , warehous_code\n\n;\n admin 2013-07-26 0 289 taxAuthorities detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: taxAuthorities\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT \n taxauth_id, taxauth_code, taxauth_name,\n addr.*\nFROM taxauth\n LEFT OUTER JOIN addr ON (taxauth_addr_id=addr_id) \nWHERE true\n\n AND ((taxauth_code ~* )\n OR (taxauth_name ~* )\n OR (COALESCE(addr_line1,'') || ' ' || COALESCE(addr_line2,'') || ' ' || COALESCE(addr_line3,'') ~* )\n OR (COALESCE(addr_city,'') ~* )\n OR (COALESCE(addr_state,'') ~* )\n OR (COALESCE(addr_postalcode,'') ~* )\n OR (COALESCE(addr_country,'') ~* ))\n\n\n AND (taxauth_code ~* )\n\n\n AND (taxauth_name ~* )\n\n\n AND (COALESCE(addr_line1,'') || ' ' || COALESCE(addr_line2,'') || ' ' || COALESCE(addr_line3,'') ~* )\n\n\n AND (COALESCE(addr_city,'') ~* )\n\n\n AND (COALESCE(addr_state,'') ~* )\n\n\n AND (COALESCE(addr_postalcode,'') ~* )\n\n\n AND (COALESCE(addr_country,'') ~* )\n\nORDER BY taxauth_code; \n admin 2013-07-26 0 103 taxBreakdown detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: taxBreakdown\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\n SELECT head.*, linetax.*, freighttax.*, adjtax.* \n FROM\n (SELECT \n invchead_invcnumber AS number, invchead_taxzone_id AS taxzone_id, \n invchead_curr_id AS curr_id, invchead_curr_id AS tax_curr_id, invchead_invcdate AS date, \n SUM(ROUND(((invcitem_billed * invcitem_qty_invuomratio) * (invcitem_price) / \n (CASE WHEN(item_id IS NULL) THEN 1 ELSE invcitem_price_invuomratio END)), 2)) AS line, \n invchead_freight AS freight, \n getFreightTaxTypeId() AS freightTax, getAdjustmentTaxTypeId() AS adjTax \n FROM invchead\n LEFT OUTER JOIN invcitem ON (invcitem_invchead_id=invchead_id) \n LEFT OUTER JOIN item ON (invcitem_item_id=item_id) \n WHERE (invchead_id=) \n GROUP BY number, taxzone_id, curr_id, tax_curr_id, date, freight, freightTax, adjTax) head, \n (SELECT ROUND(SUM(group_tax), 2) AS total_tax FROM\n (SELECT ROUND(SUM(invcitemtax.taxhist_tax),2) AS group_tax \n FROM invcitemtax \n LEFT OUTER JOIN invcitem ON (taxhist_parent_id = invcitem_id) \n WHERE (invcitem_invchead_id=)\n GROUP BY taxhist_tax_id) AS data\n ) linetax,\n (SELECT ROUND(SUM(group_tax), 2) AS freighttaxamt FROM\n (SELECT ROUND(SUM(taxhist_tax),2) AS group_tax \n FROM invchead \n LEFT OUTER JOIN invcheadtax ON (taxhist_parent_id = invchead_id \n AND taxhist_taxtype_id = getfreighttaxtypeid()) \n WHERE (invchead_id=)\n GROUP BY taxhist_tax_id) AS data\n ) freighttax, \n (SELECT ROUND(SUM(group_tax), 2) AS adjtaxamt FROM\n (SELECT ROUND(SUM(taxhist_tax),2) AS group_tax \n FROM invchead \n LEFT OUTER JOIN invcheadtax ON (taxhist_parent_id = invchead_id \n AND taxhist_taxtype_id = getadjustmenttaxtypeid()) \n WHERE (invchead_id=)\n GROUP BY taxhist_tax_id) AS data\n ) adjtax;\n\n SELECT head.*, linetax.*, freighttax.*, adjtax.* \n FROM\n (SELECT \n cmhead_number AS number, cmhead_taxzone_id AS taxzone_id, \n cmhead_curr_id AS curr_id, cmhead_curr_id AS tax_curr_id, cmhead_docdate AS date, \n SUM(ROUND(((cmitem_qtycredit * cmitem_qty_invuomratio) * (cmitem_unitprice) / \n cmitem_price_invuomratio), 2)) AS line, \n cmhead_freight AS freight, \n getFreightTaxTypeId() AS freightTax, getAdjustmentTaxTypeId() AS adjTax \n FROM cmhead \n LEFT OUTER JOIN cmitem ON (cmitem_cmhead_id=cmhead_id) \n WHERE (cmhead_id=) \n GROUP BY number, taxzone_id, curr_id, tax_curr_id, date, freight, freightTax, adjTax) head, \n (SELECT ROUND(SUM(group_tax), 2) AS total_tax FROM\n (SELECT ROUND(SUM(cmitemtax.taxhist_tax * -1),2) AS group_tax \n FROM cmitemtax \n LEFT OUTER JOIN cmitem ON (taxhist_parent_id = cmitem_id) \n WHERE (cmitem_cmhead_id=)\n GROUP BY taxhist_tax_id) AS data\n ) linetax,\n (SELECT ROUND(SUM(group_tax), 2) AS freighttaxamt FROM\n (SELECT ROUND(SUM(taxhist_tax * -1),2) AS group_tax \n FROM cmhead \n LEFT OUTER JOIN cmheadtax ON (taxhist_parent_id = cmhead_id \n AND taxhist_taxtype_id = getfreighttaxtypeid()) \n WHERE (cmhead_id=)\n GROUP BY taxhist_tax_id) AS data\n ) freighttax, \n (SELECT ROUND(SUM(group_tax), 2) AS adjtaxamt FROM\n (SELECT ROUND(SUM(taxhist_tax * -1),2) AS group_tax \n FROM cmhead \n LEFT OUTER JOIN cmheadtax ON (taxhist_parent_id = cmhead_id \n AND taxhist_taxtype_id = getadjustmenttaxtypeid()) \n WHERE (cmhead_id=)\n GROUP BY taxhist_tax_id) AS data\n ) adjtax;\n\n SELECT head.*, linetax.*, frighttax.*, adjtax.* \n FROM \n (SELECT cohead_number AS number, cobmisc_taxzone_id AS taxzone_id, \n cobmisc_curr_id AS curr_id, cobmisc_curr_id AS tax_curr_id, \n cobmisc_invcdate AS date, SUM(ROUND((cobill_qty * coitem_price) / \n (CASE WHEN(item_id IS NULL) THEN 1 ELSE coitem_price_invuomratio END), 2)) AS line, \n cobmisc_freight AS freight, \n getFreightTaxTypeId() AS freightTax, getAdjustmentTaxTypeId() AS adjTax \t \n FROM cobmisc\n JOIN cohead ON (cobmisc_cohead_id=cohead_id) \n LEFT OUTER JOIN cobill ON (cobill_cobmisc_id=cobmisc_id) \n LEFT OUTER JOIN coitem ON (cobill_coitem_id=coitem_id) \n LEFT OUTER JOIN itemsite ON (coitem_itemsite_id=itemsite_id) \n LEFT OUTER JOIN item ON (itemsite_item_id=item_id) \n WHERE (cobmisc_id=) \n GROUP BY number, cobmisc_taxzone_id, curr_id, tax_curr_id, \n date, freight, freightTax,adjTax) head, \n (SELECT ROUND(SUM(group_tax), 2) AS total_tax FROM\n (SELECT ROUND(SUM(cobilltax.taxhist_tax),2) AS group_tax\n FROM cobilltax\n LEFT OUTER JOIN cobill ON (cobill_id=taxhist_parent_id) \n WHERE (cobill_cobmisc_id=)\n GROUP BY taxhist_tax_id) AS data\n ) linetax, \n (SELECT ROUND(SUM(group_tax), 2) AS freighttaxamt FROM\n (SELECT ROUND(SUM(taxhist_tax),2) AS group_tax\n FROM cobmisctax\n LEFT OUTER JOIN cobmisc ON (taxhist_parent_id = cobmisc_id AND taxhist_taxtype_id = getfreighttaxtypeid()) \n WHERE (cobmisc_id=)\n GROUP BY taxhist_tax_id) AS data\n ) frighttax, \n (SELECT ROUND(SUM(group_tax), 2) AS adjtaxamt FROM\n (SELECT ROUND(SUM(taxhist_tax),2) AS group_tax\n FROM cobmisctax\n LEFT OUTER JOIN cobmisc ON (taxhist_parent_id = cobmisc_id AND taxhist_taxtype_id = getadjustmenttaxtypeid()) \n WHERE (cobmisc_id=)\n GROUP BY taxhist_tax_id) AS data\n ) adjtax;\n\n SELECT cohead_number AS number,\n cohead_taxzone_id AS taxzone_id,\n cohead_curr_id AS curr_id,\n cohead_curr_id AS tax_curr_id,\n cohead_orderdate AS date,\n SUM(ROUND((coitem_qtyord * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio),\n 2)) AS line,\n ROUND(SUM(calculateTax(cohead_taxzone_id, coitem_taxtype_id, cohead_orderdate, cohead_curr_id, ROUND((coitem_qtyord * coitem_qty_invuomratio) * (coitem_price /\n coitem_price_invuomratio), 2))),2) as total_tax, \n cohead_freight AS freight,\n getFreightTaxTypeId() AS freightTax, \n ROUND(calculateTax(cohead_taxzone_id, getfreighttaxtypeid(), cohead_orderdate, cohead_curr_id, cohead_freight), 2) AS freighttaxamt\n FROM coitem, item, itemsite, cohead \n LEFT OUTER JOIN taxzone ON (cohead_taxzone_id=taxzone_id) \n LEFT OUTER JOIN taxtype ON (taxtype_id=getFreightTaxTypeId())\n WHERE ((coitem_cohead_id=)\n AND (coitem_cohead_id=cohead_id)\n AND (coitem_status != 'X')\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id))\n GROUP BY number, cohead_taxzone_id, curr_id, tax_curr_id,\n date, freight, freightTax,freighttaxamt;\n\n SELECT quhead_number AS number,\n quhead_taxzone_id AS taxzone_id,\n quhead_curr_id AS curr_id,\n quhead_curr_id AS tax_curr_id,\n quhead_quotedate AS date,\n SUM(ROUND((quitem_qtyord * quitem_qty_invuomratio) * (quitem_price / quitem_price_invuomratio),\n 2)) AS line,\n ROUND(SUM(calculateTax(quhead_taxzone_id, quitem_taxtype_id, quhead_quotedate, quhead_curr_id, ROUND((quitem_qtyord * quitem_qty_invuomratio) * (quitem_price /\n quitem_price_invuomratio), 2))),2) as total_tax, \n quhead_freight AS freight,\n taxtype_id AS freightTax,\n ROUND(calculateTax(quhead_taxzone_id, getfreighttaxtypeid(), quhead_quotedate, quhead_curr_id, quhead_freight), 2) AS freighttaxamt\n FROM quitem, item, quhead \n LEFT OUTER JOIN taxzone ON (quhead_taxzone_id=taxzone_id) \n LEFT OUTER JOIN taxtype ON (taxtype_id=getFreightTaxTypeId())\n WHERE ((quitem_quhead_id=)\n AND (quitem_quhead_id=quhead_id)\n AND (quitem_item_id=item_id))\n GROUP BY number, quhead_taxzone_id, curr_id, tax_curr_id,\n date, freight, freightTax,freighttaxamt;\n\n SELECT rahead_number AS number,\n rahead_taxzone_id AS taxzone_id,\n rahead_curr_id AS curr_id,\n rahead_curr_id AS tax_curr_id,\n rahead_authdate AS date,\n COALESCE(SUM(ROUND((raitem_qtyauthorized * raitem_qty_invuomratio) * (raitem_unitprice / raitem_price_invuomratio),\n 2)),0) AS line,\n COALESCE(ROUND(SUM(calculateTax(rahead_taxzone_id, raitem_taxtype_id, rahead_authdate, rahead_curr_id, ROUND((raitem_qtyauthorized * raitem_qty_invuomratio) * (raitem_unitprice /\n raitem_price_invuomratio), 2))),2),0) as total_tax, \n rahead_freight AS freight,\n taxtype_id AS freightTax,\n ROUND(calculateTax(rahead_taxzone_id, getfreighttaxtypeid(), rahead_authdate, rahead_curr_id, rahead_freight), 2) AS freighttaxamt\n FROM rahead \n LEFT OUTER JOIN raitem ON (raitem_rahead_id=rahead_id)\n LEFT OUTER JOIN taxzone ON (rahead_taxzone_id=taxzone_id) \n LEFT OUTER JOIN taxtype ON (taxtype_id=getFreightTaxTypeId())\n WHERE (raitem_rahead_id=)\n GROUP BY number, rahead_taxzone_id, curr_id, tax_curr_id,\n date, freight, freightTax;\n\n SELECT tohead_number AS number,\n tohead_taxzone_id AS taxzone_id,\n tohead_freight_curr_id AS curr_id,\n tohead_freight_curr_id AS tax_curr_id,\n tohead_orderdate AS date,\n-------- SUM(ROUND(toitem_freight, 2)) AS line,\n-------- COALESCE(ROUND(SUM(calculateTax(tohead_taxzone_id, getfreighttaxtypeid(), tohead_orderdate, baseCurrId(), toitem_freight)),2),0) as total_tax,\n 0.0 AS line, 0.0 AS total_tax, \n tohead_freight + SUM(ROUND(toitem_freight, 2)) AS freight,\n getFreightTaxTypeId() AS freightTax,\n COALESCE(ROUND(SUM(calculateTax(tohead_taxzone_id, getfreighttaxtypeid(), tohead_orderdate, baseCurrId(), toitem_freight)),2),0) +\n COALESCE(ROUND(calculateTax(tohead_taxzone_id, getfreighttaxtypeid(), tohead_orderdate, baseCurrId(), tohead_freight),2),0) AS freighttaxamt \n FROM toitem, tohead \n WHERE ((toitem_tohead_id=)\n AND (toitem_tohead_id=tohead_id)\n AND (toitem_status!='X')) \n GROUP BY number, taxzone_id, curr_id, tax_curr_id,\n date,\t\ttohead_freight,\tfreightTax\n\n SELECT pohead_number AS number,\n pohead_taxzone_id AS taxzone_id,\n pohead_curr_id AS curr_id,\n pohead_curr_id AS tax_curr_id,\n pohead_orderdate AS date,\n COALESCE(SUM(ROUND(poitem_unitprice * poitem_qty_ordered, 2)),0) AS line,\n (SELECT SUM(tax) AS tax \n FROM (\n SELECT ROUND(SUM(taxdetail_tax),2) AS tax \n FROM tax \n JOIN calculateTaxDetailSummary('PO', , 'T') ON (taxdetail_tax_id=tax_id)\n GROUP BY tax_id) data\n ) as total_tax,\n (COALESCE(SUM(poitem_freight),0)+COALESCE(pohead_freight,0)) AS freight,\n taxtype_id AS freightTax,\n 0 AS freighttaxamt\n FROM pohead \n LEFT OUTER JOIN poitem ON (poitem_pohead_id=pohead_id)\n LEFT OUTER JOIN taxzone ON (pohead_taxzone_id=taxzone_id) \n LEFT OUTER JOIN taxtype ON (taxtype_id=getFreightTaxTypeId())\n WHERE (poitem_pohead_id=)\n GROUP BY number, pohead_taxzone_id, curr_id, tax_curr_id,\n date, pohead_freight, freightTax;\n\n SELECT head.*, linetax.*, adjtax.* \n FROM\n (SELECT \n vohead_number AS number, vohead_taxzone_id AS taxzone_id, \n vohead_curr_id AS curr_id, vohead_curr_id AS tax_curr_id, vohead_docdate AS date, \n COALESCE(SUM(ROUND(voitem_qty * poitem_unitprice, 2)), 0) AS line, \n COALESCE(SUM(voitem_freight), 0) AS freight, \n getAdjustmentTaxTypeId() AS adjTax \n FROM voitem \n LEFT OUTER JOIN poitem ON (voitem_poitem_id=poitem_id) \n LEFT OUTER JOIN vohead ON (voitem_vohead_id=vohead_id) \n WHERE (voitem_vohead_id=) \n GROUP BY number, taxzone_id, curr_id, tax_curr_id, date, adjTax) head, \n (SELECT SUM(voitemtax.taxhist_tax * -1) AS total_tax \n FROM voitemtax \n LEFT OUTER JOIN voitem ON (taxhist_parent_id = voitem_id) \n WHERE (voitem_vohead_id=)) linetax,\n (SELECT SUM(taxhist_tax * -1) AS adjtaxamt \n FROM vohead \n LEFT OUTER JOIN voheadtax ON (taxhist_parent_id = vohead_id \n AND taxhist_taxtype_id = getadjustmenttaxtypeid()) \n WHERE vohead_id=) adjtax;\n;\n admin 2013-07-26 0 104 taxHistory detail ---------BEGIN SUMMARY---------- Notes: Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: taxHistory\n-- Name: detail\n-- Notes:\n-----------BEGIN SUMMARY----------\n-- Notes:\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT , \n _descrip AS description, \n SUM(salesbase) AS salesbase,\n SUM(freightbase) AS freightbase, \n CASE WHEN (SUM(freighttax) > 0) THEN true ELSE false END AS freighttax, \n SUM(salestaxbase) AS salestaxbase,\n SUM(purchasebase) AS purchasebase,\n SUM(purchasetaxbase) * -1 AS purchasetaxbase, \n SUM(salestaxbase) + SUM(purchasetaxbase) AS nettaxbase,\n 'curr' AS salesbase_xtnumericrole,\n 'curr' AS freightbase_xtnumericrole,\n 'curr' AS salestaxbase_xtnumericrole,\n 'curr' AS purchasebase_xtnumericrole,\n 'curr' AS purchasetaxbase_xtnumericrole,\n 'curr' AS nettaxbase_xtnumericrole,\n 0 AS salestaxbase_xttotalrole,\n 0 AS purchasetaxbase_xttotalrole,\n 0 AS nettaxbase_xttotalrole\nFROM (\n\n------------END SUMMARY--------------\n\n------------BEGIN SALES--------------\n-- All sales tax history including memos \nSELECT \n taxhist_distdate, taxhist_journalnumber,\n tax_code AS tax, tax_descrip,\n COALESCE(taxtype_name,) AS taxtype, taxtype_descrip,\n COALESCE(taxclass_code,) AS taxclass, taxclass_descrip,\n COALESCE(taxauth_code,) AS taxauth, taxauth_name AS taxauth_descrip,\n COALESCE(taxzone_code,) AS taxzone, taxzone_descrip, curr_abbr, \n cohist_invcnumber AS docnumber, \n AS source,\n CASE\n WHEN (cohist_doctype='I') THEN\n \n WHEN (cohist_doctype='C') THEN\n \n WHEN (cohist_doctype='D') THEN\n \n ELSE\n \n END AS doctype,\n item_number, COALESCE(item_descrip1,cohist_misc_descrip) AS description,\n CASE\n WHEN (cohist_doctype != 'C') THEN\n cohist_ordernumber \n END AS ordernumber, cohist_invcdate AS docdate,\n cohist_billtoname AS name, \n cohist_qtyshipped AS qty, \n cohist_unitprice AS unitprice, (cohist_qtyshipped * cohist_unitprice) AS amount,\n CASE\n WHEN (cohist_misc_type IS NULL OR cohist_misc_type IN ('M','F')) THEN\n currToBase(cohist_curr_id, cohist_qtyshipped * cohist_unitprice, cohist_invcdate) \n ELSE 0\n END AS salesbase,\n CASE\n WHEN (cohist_misc_type = 'F') THEN\n currToBase(cohist_curr_id, cohist_qtyshipped * cohist_unitprice, cohist_invcdate) \n ELSE 0\n END AS freightbase,\n CASE\n WHEN (cohist_misc_type = 'F') THEN\n taxhist_tax / taxhist_curr_rate\n ELSE 0\n END AS freighttax,\n 0 AS purchasebase,\n taxhist_tax AS taxlocal,\n taxhist_tax / taxhist_curr_rate AS taxbase,\n taxhist_tax / taxhist_curr_rate AS salestaxbase,\n 0 AS purchasetaxbase,\n 'qty' AS qty_xtnumericrole,\n 'saleprice' AS unitprice_xtnumericrole,\n 'extprice' AS amount_xtnumericrole,\n 'curr' AS taxhist_tax_xtnumericrole,\n 'curr' AS taxbase_xtnumericrole,\n 0 AS taxbase_xttotalrole\nFROM cohisttax\n JOIN cohist ON (cohist_id=taxhist_parent_id)\n JOIN taxtype ON (taxtype_id=taxhist_taxtype_id)\n JOIN tax ON (tax_id=taxhist_tax_id)\n JOIN curr_symbol ON (curr_id=taxhist_curr_id)\n LEFT OUTER JOIN taxclass ON (tax_taxclass_id=taxclass_id)\n LEFT OUTER JOIN taxauth ON (tax_taxauth_id=taxauth_id)\n LEFT OUTER JOIN taxzone ON (cohist_taxzone_id=taxzone_id)\n LEFT OUTER JOIN itemsite ON (cohist_itemsite_id=itemsite_id)\n LEFT OUTER JOIN item ON (itemsite_item_id=item_id)\n\nWHERE ((taxhist_distdate BETWEEN \n AND )\n\nWHERE ((taxhist_docdate BETWEEN \n AND )\n\n\n AND (taxhist_tax_id=)\n\n\n AND (taxhist_taxtype_id=)\n\n\n AND (taxclass_id=)\n\n\n AND (taxauth_id=)\n\n\n AND (taxzone_id=)\n\n)\n\n--------------END SALES--------------------\n\n\n-- Union because sales and purchase shown together\nUNION ALL\n\n\n------------BEGIN PURCHASE----------------\n\n-- A/P Memo history\nSELECT \n taxhist_distdate, taxhist_journalnumber,\n tax_code AS tax, tax_descrip,\n COALESCE(taxtype_name,) AS taxtype, taxtype_descrip,\n COALESCE(taxclass_code,) AS taxclass, taxclass_descrip,\n COALESCE(taxauth_code,) AS taxauth, taxauth_name AS taxauth_descrip,\n AS taxzone,'' AS taxzone_descrip, curr_abbr, \n apopen_docnumber AS docnumber, \n AS source,\n CASE\n WHEN (apopen_doctype='C') THEN\n \n WHEN (apopen_doctype='D') THEN\n \n ELSE\n \n END AS doctype,\n '' AS item_number, apopen_notes AS description,\n apopen_ponumber AS ordernumber, apopen_docdate AS docdate,\n vend_name AS name, \n 1 AS qty, \n apopen_amount AS unitprice, apopen_amount AS amount,\n 0 AS salesbase,\n 0 AS freightbase,\n 0 AS freighttax,\n apopen_amount / apopen_curr_rate AS purchasebase,\n taxhist_tax AS taxlocal,\n taxhist_tax / taxhist_curr_rate AS taxbase,\n 0 AS salestaxbase,\n taxhist_tax / taxhist_curr_rate AS purchasetaxbase,\n 'qty' AS qty_xtnumericrole,\n 'purchaseprice' AS unitprice_xtnumericrole,\n 'extprice' AS extension_xtnumericrole,\n 'curr' AS taxhist_tax_xtnumericrole,\n 'curr' AS taxbase_xtnumericrole,\n 0 AS taxbase_xttotalrole\nFROM apopentax\n JOIN apopen ON (apopen_id=taxhist_parent_id)\n JOIN vendinfo ON (apopen_vend_id=vend_id)\n JOIN taxtype ON (taxtype_id=taxhist_taxtype_id)\n JOIN tax ON (tax_id=taxhist_tax_id)\n JOIN curr_symbol ON (curr_id=taxhist_curr_id)\n LEFT OUTER JOIN taxclass ON (tax_taxclass_id=taxclass_id)\n LEFT OUTER JOIN taxauth ON (tax_taxauth_id=taxauth_id)\n\nWHERE ((taxhist_distdate BETWEEN \n AND )\n\nWHERE ((taxhist_docdate BETWEEN \n AND )\n\n\n AND (taxhist_tax_id=)\n\n\n AND (taxhist_taxtype_id=)\n\n\n AND (taxclass_id=)\n\n\n AND (taxauth_id=)\n\n\n AND (false)\n\n AND (taxhist_distdate IS NOT NULL)\n)\nUNION ALL\n--Voucher Header History\nSELECT \n taxhist_distdate, taxhist_journalnumber,\n tax_code AS tax, tax_descrip,\n COALESCE(taxtype_name,) AS taxtype, taxtype_descrip,\n COALESCE(taxclass_code,) AS taxclass, taxclass_descrip,\n COALESCE(taxauth_code,) AS taxauth, taxauth_name AS taxauth_descrip,\n COALESCE(taxzone_code,) AS taxzone, taxzone_descrip, curr_abbr, \n vohead_number AS docnumber, \n AS source,\n AS doctype,\n '', vohead_notes AS description,\n pohead_number AS ordernumber, vohead_docdate AS docdate,\n vend_name AS name, \n 1 AS qty, \n 0 AS unitprice, 0 AS amount,\n 0 AS salesbase,\n 0 AS freightbase,\n 0 AS freighttax,\n 0 AS purchasebase,\n taxhist_tax AS taxlocal,\n taxhist_tax / taxhist_curr_rate AS taxbase,\n 0 AS salestaxbase,\n taxhist_tax / taxhist_curr_rate AS purchasetaxbase,\n 'qty' AS qty_xtnumericrole,\n 'purchaseprice' AS unitprice_xtnumericrole,\n 'extprice' AS amount_xtnumericrole,\n 'curr' AS taxhist_tax_xtnumericrole,\n 'curr' AS taxbase_xtnumericrole,\n 0 AS taxbase_xttotalrole\nFROM voheadtax\n JOIN vohead ON (vohead_id=taxhist_parent_id)\n LEFT OUTER JOIN pohead ON (vohead_pohead_id=pohead_id)\n JOIN vendinfo ON (vohead_vend_id=vend_id)\n JOIN taxtype ON (taxtype_id=taxhist_taxtype_id)\n JOIN tax ON (tax_id=taxhist_tax_id)\n JOIN curr_symbol ON (curr_id=taxhist_curr_id)\n LEFT OUTER JOIN taxclass ON (tax_taxclass_id=taxclass_id)\n LEFT OUTER JOIN taxauth ON (tax_taxauth_id=taxauth_id)\n LEFT OUTER JOIN taxzone ON (vohead_taxzone_id=taxzone_id)\n\nWHERE ((taxhist_distdate BETWEEN \n AND )\n\nWHERE ((taxhist_docdate BETWEEN \n AND )\n\n\n AND (taxhist_tax_id=)\n\n\n AND (taxhist_taxtype_id=)\n\n\n AND (taxclass_id=)\n\n\n AND (taxauth_id=)\n\n\n AND (taxzone_id=)\n\n AND (taxhist_distdate IS NOT NULL)\n)\nUNION ALL\n--Voucher Line Item\nSELECT \n taxhist_distdate, taxhist_journalnumber,\n tax_code AS tax, tax_descrip,\n COALESCE(taxtype_name,) AS taxtype, taxtype_descrip,\n COALESCE(taxclass_code,) AS taxclass, taxclass_descrip,\n COALESCE(taxauth_code,) AS taxauth, taxauth_name AS taxauth_descrip,\n COALESCE(taxzone_code,) AS taxzone, taxzone_descrip, curr_abbr, \n vohead_number AS docnumber, \n AS source,\n AS doctype,\n COALESCE(item_number,expcat_code), COALESCE(item_descrip1,expcat_descrip) AS description,\n pohead_number AS ordernumber, vohead_docdate AS docdate,\n vend_name AS name, \n voitem_qty AS qty, \n COALESCE(SUM(vodist_amount),0)/voitem_qty AS unitprice, COALESCE(SUM(vodist_amount),0) AS amount,\n 0 AS salesbase,\n 0 AS freightbase,\n 0 AS freighttax,\n currToBase(vohead_curr_id, COALESCE(SUM(vodist_amount),0), vohead_distdate) AS purchasebase,\n taxhist_tax AS taxlocal,\n taxhist_tax / taxhist_curr_rate AS taxbase,\n 0 AS salestaxbase,\n taxhist_tax / taxhist_curr_rate AS purchasetaxbase,\n 'qty' AS qty_xtnumericrole,\n 'purchaseprice' AS unitprice_xtnumericrole,\n 'extprice' AS amount_xtnumericrole,\n 'curr' AS taxhist_tax_xtnumericrole,\n 'curr' AS taxbase_xtnumericrole,\n 0 AS taxbase_xttotalrole\nFROM voitemtax\n JOIN voitem ON (voitem_id=taxhist_parent_id)\n JOIN vohead ON (vohead_id=voitem_vohead_id)\n JOIN pohead ON (vohead_pohead_id=pohead_id)\n JOIN poitem ON (voitem_poitem_id=poitem_id)\n JOIN vodist ON ((vodist_poitem_id=poitem_id)\n AND (vodist_vohead_id=vohead_id))\n JOIN vendinfo ON (vohead_vend_id=vend_id)\n JOIN taxtype ON (taxtype_id=taxhist_taxtype_id)\n JOIN tax ON (tax_id=taxhist_tax_id)\n JOIN curr_symbol ON (curr_id=taxhist_curr_id)\n LEFT OUTER JOIN taxclass ON (tax_taxclass_id=taxclass_id)\n LEFT OUTER JOIN taxauth ON (tax_taxauth_id=taxauth_id)\n LEFT OUTER JOIN taxzone ON (vohead_taxzone_id=taxzone_id)\n LEFT OUTER JOIN itemsite ON (poitem_itemsite_id=itemsite_id)\n LEFT OUTER JOIN item ON (itemsite_item_id=item_id)\n LEFT OUTER JOIN expcat ON (expcat_id=poitem_expcat_id)\n\nWHERE ((taxhist_distdate BETWEEN \n AND )\n\nWHERE ((taxhist_docdate BETWEEN \n AND )\n\n\n AND (taxhist_tax_id=)\n\n\n AND (taxhist_taxtype_id=)\n\n\n AND (taxclass_id=)\n\n\n AND (taxauth_id=)\n\n\n AND (taxzone_id=)\n\n AND (taxhist_distdate IS NOT NULL)\n)\nGROUP BY taxhist_id,taxhist_distdate,tax_code,tax_descrip,\n taxtype_name,taxtype_descrip,taxclass_code,taxclass_descrip,\n taxauth_code,taxauth_descrip,taxzone,taxzone_descrip,curr_abbr,\n vohead_number,pohead_number,item_number,item_descrip1,\n vohead_curr_id,vohead_distdate,vohead_docdate,vend_name,\n expcat_code,expcat_descrip,taxhist_tax,taxhist_curr_rate,\n voitem_qty, taxhist_journalnumber\n\n-------------END PURCHASE--------------\nORDER BY docdate DESC, docnumber DESC\n\n\n) AS data\nGROUP BY , _descrip\nORDER BY \n\n\n admin 2013-07-26 0 291 timePhasedBookings detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timePhasedBookings\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT\n\n cust_id, cust_number, cust_name, \n\n prodcat_id, prodcat_code, prodcat_descrip,\n\n item_id, item_number, item_descrip1,\n\n uom, warehous_code\n-- Loop through each period bucket to find bookings for period\n\n , SUM(CASE WHEN (cohead_orderdate BETWEEN findPeriodStart() AND findPeriodEnd()) THEN\n amount ELSE 0 END) AS bucket_,\n \n 'curr' AS bucket__xtnumericrole, \n 0 AS bucket__xttotalrole\n \n 'qty' AS bucket__xtnumericrole, \n 0 AS bucket__xttotalrole \n \n\nFROM ( \n SELECT cohead_orderdate,\n\n cust_id, cust_number, cust_name\n\n prodcat_id, prodcat_code, prodcat_descrip\n\n item_id, item_number, item_descrip1\n\n , warehous_code\n\n , round((coitem_qtyord * coitem_qty_invuomratio) * (currtobase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio), 2) AS amount\n , ::text AS uom\n\n , coitem_qtyord\n \n * itemcapinvrat(itemsite_item_id)\n \n * itemaltcapinvrat(itemsite_item_id)\n \n AS amount\n \n , uom_name AS uom\n \n , itemcapuom(item_id) AS uom\n \n , itemaltcapuom(item_id) AS uom\n \n\n FROM coitem\n JOIN cohead ON (coitem_cohead_id=cohead_id)\n JOIN itemsite ON (coitem_itemsite_id=itemsite_id)\n JOIN item ON (itemsite_item_id=item_id)\n\n JOIN uom ON (item_inv_uom_id=uom_id)\n\n JOIN site() ON (itemsite_warehous_id=warehous_id)\n\n JOIN custinfo ON (cohead_cust_id=cust_id)\n \n\n JOIN prodcat ON (item_prodcat_id=prodcat_id)\n\n WHERE ((coitem_status != 'X')\n AND (cohead_orderdate BETWEEN \n\n \n findPeriodStart()\n \n \n AND findPeriodEnd()\n \n)\n \n AND (item_id=)\n\n \n AND (cust_id=)\n\n \n AND (cust_custtype_id=)\n\n\n AND (cust_custtype_id IN (SELECT custtype_id \n FROM custtype \n WHERE (custtype_code ~ )))\n\n \n AND (item_prodcat_id=) \n\n\n AND (item_prodcat_id IN (SELECT prodcat_id \n FROM prodcat \n WHERE (prodcat_code ~ )))\n\n \n AND(itemsite_warehous_id=) \n\n )) data\nGROUP BY\n\n cust_id, cust_number, cust_name, \n\n prodcat_id, prodcat_code, prodcat_descrip,\n\n item_id, item_number, item_descrip1,\n\n uom, warehous_code\nORDER BY \n\n cust_number,\n\n prodcat_code,\n\n item_number,\n\n uom, warehous_code;\n admin 2013-07-26 0 294 timePhasedSales detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timePhasedSales\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT\n\n cust_id, cust_number, cust_name, \n\n prodcat_id, prodcat_code, prodcat_descrip,\n\n item_id, item_number, item_descrip1,\n\n uom, warehous_code\n-- Loop through each period bucket to find bookings for period\n\n , SUM(CASE WHEN (cohist_invcdate BETWEEN findPeriodStart() AND findPeriodEnd()) THEN\n amount ELSE 0 END) AS bucket_,\n \n 'curr' AS bucket__xtnumericrole, \n 0 AS bucket__xttotalrole\n \n 'qty' AS bucket__xtnumericrole, \n 0 AS bucket__xttotalrole \n \n\nFROM ( \n SELECT cohist_invcdate,\n\n cust_id, cust_number, cust_name\n\n prodcat_id, prodcat_code, prodcat_descrip\n\n item_id, item_number, item_descrip1\n\n , warehous_code\n\n , round((cohist_qtyshipped * currtobase(cohist_curr_id, cohist_unitprice, cohist_invcdate)), 2) AS amount\n , ::text AS uom\n\n , cohist_qtyshipped\n \n * itemcapinvrat(itemsite_item_id)\n \n * itemaltcapinvrat(itemsite_item_id)\n \n AS amount\n \n , uom_name AS uom\n \n , itemcapuom(item_id) AS uom\n \n , itemaltcapuom(item_id) AS uom\n \n\n FROM cohist JOIN itemsite ON (itemsite_id=cohist_itemsite_id)\n JOIN item ON (item_id=itemsite_item_id)\n\n JOIN uom ON (item_inv_uom_id=uom_id)\n\n JOIN site() ON (itemsite_warehous_id=warehous_id)\n\n JOIN custinfo ON (cohist_cust_id=cust_id)\n \n\n JOIN custgrpitem ON (cohist_cust_id=custgrpitem_cust_id)\n JOIN custgrp ON (custgrp_id=custgrpitem_custgrp_id)\n \n\n JOIN prodcat ON (item_prodcat_id=prodcat_id)\n\n WHERE ((cohist_invcdate BETWEEN \n\n \n findPeriodStart()\n \n \n AND findPeriodEnd()\n \n)\n \n AND (item_id=)\n\n \n AND (cust_id=)\n\n \n AND (cust_custtype_id=)\n\n\n AND (cust_custtype_id IN (SELECT custtype_id \n FROM custtype \n WHERE (custtype_code ~ )))\n\n \n AND (item_prodcat_id=) \n\n\n AND (item_prodcat_id IN (SELECT prodcat_id \n FROM prodcat \n WHERE (prodcat_code ~ )))\n\n \n AND (custgrp_id=) \n\n\n AND (custgrp_name ~ )\n\n \n AND(itemsite_warehous_id=) \n\n )) data\nGROUP BY\n\n cust_id, cust_number, cust_name, \n\n prodcat_id, prodcat_code, prodcat_descrip,\n\n item_id, item_number, item_descrip1,\n\n uom, warehous_code\nORDER BY \n\n cust_number,\n\n prodcat_code,\n\n item_number,\n\n uom, warehous_code;\n admin 2013-07-26 0 295 timePhasedUsageStatisticsByItem detail used by dspTimePhasedUsageStatisticsByItem Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timePhasedUsageStatisticsByItem\n-- Name: detail\n-- Notes: used by dspTimePhasedUsageStatisticsByItem\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT itemsite_id, AS label, warehous_code\n \n , summTransR(itemsite_id, ) AS bucket_\n \nFROM itemsite, whsinfo\nWHERE ((itemsite_warehous_id=warehous_id)\n\n AND (itemsite_item_id=)\n\n\n AND (itemsite_warehous_id=)\n\n )\nUNION ALL\nSELECT itemsite_id, AS label, warehous_code\n \n , summTransI(itemsite_id, ) AS bucket_\n \nFROM itemsite, whsinfo\nWHERE ((itemsite_warehous_id=warehous_id)\n\n AND (itemsite_item_id=)\n\n\n AND (itemsite_warehous_id=)\n\n )\nUNION ALL\nSELECT itemsite_id, AS label, warehous_code\n \n , summTransS(itemsite_id, ) AS bucket_\n \nFROM itemsite, whsinfo\nWHERE ((itemsite_warehous_id=warehous_id)\n\n AND (itemsite_item_id=)\n\n\n AND (itemsite_warehous_id=)\n\n )\nUNION ALL\nSELECT itemsite_id, AS label, warehous_code\n \n , summTransC(itemsite_id, ) AS bucket_\n \nFROM itemsite, whsinfo\nWHERE ((itemsite_warehous_id=warehous_id)\n\n AND (itemsite_item_id=)\n\n\n AND (itemsite_warehous_id=)\n\n )\nUNION ALL\nSELECT itemsite_id, AS label, warehous_code\n \n , summTransA(itemsite_id, ) AS bucket_\n \nFROM itemsite, whsinfo\nWHERE ((itemsite_warehous_id=warehous_id)\n\n AND (itemsite_item_id=)\n\n\n AND (itemsite_warehous_id=)\n\n )\nORDER BY warehous_code;\n admin 2013-07-26 0 102 todolist detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: todolist\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT * FROM (\n/* ---------TO DO-------------- */\n SELECT todoitem_id AS id, \n 1 AS altId, \n AS type, \n CAST(incdt_number AS text) AS number,\n todoitem_name AS name,\n CASE WHEN (todoitem_active AND todoitem_status != 'C') THEN TRUE\n ELSE FALSE\n END AS active,\n CASE WHEN (todoitem_status='C') THEN \n WHEN (todoitem_status='D') THEN \n WHEN (todoitem_status='P') THEN \n WHEN (todoitem_status='I') THEN \n WHEN (todoitem_status='N') THEN \n ELSE '?'\n END AS stage,\n incdtpriority_name AS priority, \n incdtpriority_order AS seq,\n todoitem_owner_username AS owner, \n todoitem_username AS assigned, \n firstLine(todoitem_description) AS notes, \n todoitem_start_date as start, \n todoitem_due_date AS due, \n formatDate(todoitem_due_date) AS f_due, \n todoitem_start_date is not null AS hasStartDate,\n todoitem_due_date is not null AS hasDueDate,\n crmacct_id,\n crmacct_number, \n crmacct_name, \n CASE WHEN (todoitem_ophead_id IS NOT NULL) THEN\n 'OPP'\n WHEN (todoitem_incdt_id IS NOT NULL) THEN\n 'INCDT'\n END AS parent,\n CASE WHEN (todoitem_ophead_id IS NOT NULL) THEN\n || '-' || ophead_number\n WHEN (todoitem_incdt_id IS NOT NULL) THEN\n || '-' || incdt_number\n END AS parent_qtdisplayrole,\n CASE WHEN (todoitem_ophead_id IS NOT NULL) THEN\n || '-' || ophead_number\n WHEN (todoitem_incdt_id IS NOT NULL) THEN\n || '-' || incdt_number\n END AS f_parent,\n COALESCE(todoitem_ophead_id, todoitem_incdt_id) AS parent_xtidrole,\n COALESCE(crmacct_cust_id,-1) > 0 AS cust_qtdisplayrole,\n crmacct_cust_id AS cust,\n CASE WHEN (todoitem_active AND todoitem_due_date < CURRENT_DATE) THEN 'expired'\n WHEN (todoitem_active AND todoitem_due_date > CURRENT_DATE) THEN 'future'\n END AS due_qtforegroundrole \n\n FROM todoitem\n\n FROM todoitem() \n\n LEFT OUTER JOIN incdt ON (incdt_id=todoitem_incdt_id) \n LEFT OUTER JOIN ophead ON (ophead_id=todoitem_ophead_id)\n LEFT OUTER JOIN crmacct ON (crmacct_id=todoitem_crmacct_id) \n LEFT OUTER JOIN incdtpriority ON (incdtpriority_id=todoitem_priority_id) \n\n WHERE false\n\n WHERE true\n\n\n AND (todoitem_start_date <= )\n\n\n AND (todoitem_start_date >= )\n\n\n AND (todoitem_due_date <= )\n\n\n AND (todoitem_due_date >= )\n\n\n AND (crmacct_id =)\n\n\n AND (todoitem_status = 'C')\t\t\t\n\n AND (todoitem_status != 'C')\t\t\t\n\n\n AND ( IN (todoitem_username, todoitem_owner_username))\n\n \n AND (todoitem_username=) \n\n AND (todoitem_username ~ ) \n\n \n AND (todoitem_owner_username=) \n\n AND (todoitem_owner_username ~ ) \n\nUNION ALL\n/* ---------INCIDENT-------------- */\n SELECT incdt_id AS id, \n 2 AS altId, \n AS type, \n CAST(incdt_number AS text) AS number,\n incdt_summary AS name, \n incdt_status != 'L' AS active,\n CASE WHEN (incdt_status='N') THEN \n WHEN (incdt_status='F') THEN \n WHEN (incdt_status='C') THEN \n WHEN (incdt_status='A') THEN \n WHEN (incdt_status='R') THEN \n WHEN (incdt_status='L') THEN \n ELSE '?'\n END AS stage,\n incdtpriority_name AS priority,\n incdtpriority_order AS seq,\n incdt_owner_username AS owner, \n incdt_assigned_username AS assigned,\n firstLine(incdt_descrip) AS notes, \n CAST(incdt_timestamp AS date) AS start, \n null AS due, \n null AS f_due, \n false AS hasStartDate,\n false AS hasDueDate,\n crmacct_id,\n crmacct_number, \n crmacct_name,\n '' AS parent,\n '' AS parent_qtdisplay_role,\n '' AS f_parent,\n NULL AS parent_xtidrole,\n COALESCE(crmacct_cust_id,-1) > 0 AS cust_qtdisplayrole,\n COALESCE(crmacct_cust_id,-1) AS cust,\n NULL AS due_qtforegroundrole \n\n FROM incdt\n\n FROM incdt()\n\n LEFT OUTER JOIN crmacct ON (crmacct_id=incdt_crmacct_id) \n LEFT OUTER JOIN custinfo ON (cust_id=crmacct_cust_id)\n LEFT OUTER JOIN incdtpriority ON (incdtpriority_id=incdt_incdtpriority_id) \n\n WHERE false\n\n WHERE true\n\n\n AND (incdt_timestamp::date <= )\n\n\n AND (incdt_timestamp::date >= )\n\n\n AND false\n\n\n AND false\n\n\n AND (crmacct_id =)\n\n\n AND (incdt_status = 'L')\t\t\t\n\n AND (incdt_status != 'L')\t\t\t\n\n\n AND ( IN (incdt_assigned_username, incdt_owner_username))\n\n \n AND (incdt_assigned_username=) \n\n AND (incdt_assigned_username ~ ) \n\n \n AND (incdt_owner_username=) \n\n AND (incdt_owner_username ~ ) \n\nUNION ALL\n/* ---------PROJECT TASK-------------- */\n SELECT prjtask_id AS id, \n 3 AS altId, \n AS type,\n prjtask_number AS number,\n prjtask_name AS name, \n prjtask_status != 'C' AS active,\n CASE WHEN (prjtask_status='P') THEN \n WHEN (prjtask_status='O') THEN \n WHEN (prjtask_status='C') THEN \n ELSE '?'\n END AS stage,\n NULL AS priority, \n NULL AS seq, \n prjtask_owner_username AS owner, \n prjtask_username AS assigned, \n firstLine(prjtask_descrip) AS notes, \n prjtask_start_date AS start, \n prjtask_due_date AS due, \n formatDate(prjtask_due_date) AS f_due, \n prjtask_start_date is not null AS hasStartDate,\n prjtask_due_date is not null AS hasDueDate,\n NULL AS crmacct_id,\n '' AS crmacct_number, \n '' AS crmacct_name,\n 'PRJ' AS parent,\n || '-' || prj_number AS parent_qtdisplay_role,\n || '-' || prj_number AS f_parent,\n prjtask_prj_id AS parent_xtidrole,\n false AS cust_qtdisplayrole, \n null AS cust,\n CASE WHEN (prjtask_status != 'C' AND prjtask_due_date < CURRENT_DATE) THEN 'expired'\n WHEN (prjtask_status != 'C' AND prjtask_due_date > CURRENT_DATE) THEN 'future'\n END AS due_qtforegroundrole \n\n FROM prjtask\n\n FROM prjtask()\n\n JOIN prj ON (prj_id=prjtask_prj_id)\n\n WHERE false\n\n WHERE true\n\n\n AND (prjtask_start_date <= )\n\n\n AND (prjtask_start_date >= )\n\n\n AND (prjtask_due_date <= )\n\n\n AND (prjtask_due_date >= )\n\n\n AND (prjtask_status = 'C')\t\t\t\n\n AND (prjtask_status != 'C')\t\t\t\n\n\n AND ( IN (prjtask_username, prjtask_owner_username))\n\n \n AND (prjtask_username=) \n\n AND (prjtask_username ~ ) \n\n \n AND (prjtask_owner_username=) \n\n AND (prjtask_owner_username ~ ) \n\nUNION ALL\n/* ---------PROJECT-------------- */\n SELECT prj_id AS id, \n 4 AS altId, \n AS type,\n prj_number AS number,\n prj_name AS name, \n prj_status != 'C' AS active,\n CASE WHEN (prj_status='P') THEN \n WHEN (prj_status='O') THEN \n WHEN (prj_status='C') THEN \n ELSE '?'\n END AS stage,\n NULL AS priority, \n NULL AS seq,\n prj_owner_username AS owner, \n prj_username AS assigned,\n firstLine(prj_descrip) AS notes, \n prj_start_date AS start, \n prj_due_date AS due, \n formatDate(prj_due_date) AS f_due, \n prj_start_date IS NOT NULL AS hasStartDate,\n prj_due_date IS NOT NULL AS hasDueDate,\n null AS crmacct_id,\n '' AS crmacct_number, \n '' AS crmacct_name,\n '' AS parent,\n '' AS parent_qtdisplayrole,\n '' AS f_parent,\n NULL AS parent_xtidrole,\n false AS cust_qtdisplayrole, \n null AS cust,\n CASE WHEN (prj_status != 'C'AND prj_due_date < CURRENT_DATE) THEN 'expired'\n WHEN (prj_status != 'C'AND prj_due_date > CURRENT_DATE) THEN 'future'\n END AS due_qtforegroundrole \n\n FROM prj\n\n FROM prj()\n\n\n WHERE false\n\n WHERE true\n\n\n AND (prj_start_date <= )\n\n\n AND (prj_start_date >= )\n\n\n AND (prj_due_date <= )\n\n\n AND (prj_due_date >= )\n\n\n AND (prj_status = 'C')\t\t\t\n\n AND (prj_status != 'C')\t\t\t\n\n\n AND ( IN (prj_username, prj_owner_username))\n\n \n AND (prj_username=) \n\n AND (prj_username ~ ) \n\n \n AND (prj_owner_username=) \n\n AND (prj_owner_username ~ ) \n\nUNION ALL\n/* ---------OPPORTUNITY-------------- */\n SELECT ophead_id AS id, \n 5 AS altId, \n AS type, \n ophead_number AS number,\n ophead_name AS name, \n ophead_active AS active,\n opstage_descrip AS stage, \n incdtpriority_name AS priority, \n incdtpriority_order AS seq,\n ophead_owner_username AS owner, \n ophead_username AS assigned, \n firstLine(ophead_notes) AS notes, \n ophead_start_date AS start, \n ophead_target_date AS due, \n formatDate(ophead_target_date) AS f_due,\n ophead_start_date is not null AS hasStartDate,\n ophead_target_date is not null AS hasDueDate,\n crmacct_id,\n crmacct_number, \n crmacct_name, \n '' AS parent,\n '' AS parent_qtdisplayrole,\n '' AS f_parent,\n NULL AS parent_xtidrole,\n COALESCE(crmacct_cust_id,-1) > 0 AS cust_qtdisplayrole,\n crmacct_cust_id AS cust,\n CASE WHEN (ophead_active AND ophead_target_date < CURRENT_DATE) THEN 'expired'\n WHEN (ophead_active AND ophead_target_date > CURRENT_DATE) THEN 'future'\n END AS due_qtforegroundrole \n\n FROM ophead\n\n FROM ophead()\n\n JOIN opstage ON (ophead_opstage_id=opstage_id)\n LEFT OUTER JOIN crmacct ON (crmacct_id=ophead_crmacct_id) \n LEFT OUTER JOIN incdtpriority ON (incdtpriority_id=ophead_priority_id) \n\n WHERE false\n\n WHERE true\n\n\n AND (ophead_start_date <= )\n\n\n AND (ophead_start_date >= )\n\n\n AND (ophead_target_date <= )\n\n\n AND (ophead_target_date >= )\n\n\n AND (crmacct_id =)\n\n\n AND (NOT ophead_active)\t\t\t\n\n AND (ophead_active)\t\t\t\n\n\n AND ( IN (ophead_username, ophead_owner_username))\n\n \n AND (ophead_username=) \n\n AND (ophead_username ~ ) \n\n \n AND (ophead_owner_username=) \n\n AND (ophead_owner_username ~ ) \n\n) AS data\nORDER BY hasDueDate desc, due, hasStartDate desc, start\n admin 2013-07-26 0 297 trialBalances detail used by dspTrialBalances Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: trialBalances\n-- Name: detail\n-- Notes: used by dspTrialBalances\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT accnt_id, period_id, accnt_descrip, trialbal_dirty,\n period_start, period_end,\n formatGLAccount(accnt_id) AS account,\n (trialbal_debits) AS debits,\n (trialbal_credits) AS credits,\n trialbal_beginning AS beginning,\n trialbal_ending AS ending,\n (trialbal_debits - trialbal_credits) AS diff,\n CASE WHEN ((trialbal_beginning*-1.0)<0.0) THEN 'CR' END AS beginningsense,\n CASE WHEN ((trialbal_ending*-1.0)<0.0) THEN 'CR' END AS endingsense,\n CASE WHEN ((trialbal_debits - trialbal_credits)<0.0) THEN 'CR' END AS diffsense,\n 'curr' AS beginning_xtnumericrole,\n 'curr' AS debits_xtnumericrole,\n 'curr' AS credits_xtnumericrole,\n 'curr' AS ending_xtnumericrole,\n 'curr' AS diff_xtnumericrole,\n 0 AS beginning_xttotalrole,\n 0 AS debits_xttotalrole,\n 0 AS credits_xttotalrole,\n 0 AS ending_xttotalrole,\n 0 AS diff_xttotalrole,\n CASE WHEN (trialbal_beginning < 0.0) THEN ABS(trialbal_beginning) END AS beginning_qtdisplayrole,\n CASE WHEN (trialbal_ending < 0.0) THEN ABS(trialbal_ending) END AS ending_qtdisplayrole,\n CASE WHEN ((trialbal_debits - trialbal_credits) < 0.0) THEN ABS(trialbal_debits - trialbal_credits) END AS diff_qtdisplayrole,\n CASE WHEN (trialbal_dirty) THEN 'warning' END AS ending_qtforegroundrole\nFROM trialbal, accnt, period\n\n ,company\n\nWHERE ((trialbal_accnt_id=accnt_id)\n AND (trialbal_period_id=period_id)\n\n AND (trialbal_accnt_id=)\n\n\n AND (accnt_company=company_number)\n AND (company_id=)\n\n\n AND (period_id=)\n\n\n AND (abs(trialbal_beginning)+abs(trialbal_ending)+abs(trialbal_debits)+abs(trialbal_credits) > 0)\n\n )\nORDER BY period_start, formatGLAccount(accnt_id);\n admin 2013-07-26 0 454 uiforms detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: uiforms\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT uiform_id, uiform_name, uiform_enabled,\n firstline(uiform_notes) AS uiform_notes, uiform_order,\n CASE nspname WHEN 'public' THEN '' ELSE nspname END AS pkgname,\n CASE nspname WHEN 'public' THEN 0\n ELSE 1 END AS xtindentrole,\n uiform_notes AS uiform_notes_qttooltiprole\n FROM uiform\n JOIN pg_class ON (uiform.tableoid=pg_class.oid)\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\nUNION \nSELECT -1, pkghead_name, NULL,\n firstline(pkghead_descrip), NULL,\n pkghead_name, 0, pkghead_descrip\n FROM uiform, pg_class, pg_namespace\n RIGHT OUTER JOIN pkghead ON (nspname=pkghead_name) \n WHERE ((uiform.tableoid=pg_class.oid)\n AND (relnamespace=pg_namespace.oid))\n ORDER BY pkgname, xtindentrole, uiform_name,\n uiform_order, uiform_id;\n\nSELECT uiform_id, uiform_name, uiform_enabled,\n firstline(uiform_notes) AS uiform_notes,\n uiform_order,\n CASE nspname WHEN 'public' THEN '' ELSE nspname END AS pkgname,\n uiform_notes AS uiform_notes_qttooltiprole\n FROM uiform\n JOIN pg_class ON (uiform.tableoid=pg_class.oid)\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\nORDER BY uiform_name, uiform_order, uiform_id;\n\n admin 2013-07-26 0 298 unbalancedQOHByClassCode detail used by dspUnbalancedQOHByClassCode Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: unbalancedQOHByClassCode\n-- Name: detail\n-- Notes: used by dspUnbalancedQOHByClassCode\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT itemsite_id, warehous_code, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescrip, uom_name,\n itemsite_qtyonhand,\n detailedQOH(itemsite_id, FALSE) AS detailedqoh,\n itemsite_nnqoh,\n detailedNNQOH(itemsite_id, FALSE) AS detailednnqoh,\n 'qty' AS itemsite_qtyonhand_xtnumericrole,\n 'qty' AS detailedqoh_xtnumericrole,\n 'qty' AS itemsite_nnqoh_xtnumericrole,\n 'qty' AS detailednnqoh_xtnumericrole\nFROM whsinfo, item, itemsite, uom\nWHERE ( (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n AND ((itemsite_loccntrl) OR (itemsite_controlmethod IN ('L', 'S')))\n AND ((itemsite_qtyonhand <> detailedQOH(itemsite_id, FALSE))\n OR (itemsite_nnqoh <> detailedNNQOH(itemsite_id, FALSE)))\n\n AND (item_classcode_id=)\n\n AND (item_classcode_id IN (SELECT classcode_id\n FROM classcode\n WHERE (classcode_code ~ )))\n\n\n AND (warehous_id=)\n\n )\nORDER BY item_number;\n admin 2013-07-26 0 299 undefinedManufacturedItems detail used by dspUndefinedManufacturedItems Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: undefinedManufacturedItems\n-- Name: detail\n-- Notes: used by dspUndefinedManufacturedItems\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT item_id, 2, item_number, (item_descrip1 || ' ' || item_descrip2) AS itemdescrip,\n item_type, item_active, AS exception\nFROM item\nWHERE ((item_type IN ('M', 'F'))\n AND (item_id NOT IN (SELECT DISTINCT bomitem_parent_item_id\n FROM bomitem))\n\n AND (item_active)\n\n )\nORDER BY item_number;\n admin 2013-07-26 0 460 uninvoicedShipments detail used by uninvoicedShipments Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: uninvoicedShipments\n-- Name: detail\n-- Notes: used by uninvoicedShipments\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT cohead_id, shipitem_id, cohead_number, coitem_linenumber,\n cust_number, cust_name,\n item_number, description,\n uom_name, shipped, selected,\n CASE WHEN (level=0) THEN cohead_number\n ELSE CAST(coitem_linenumber AS TEXT)\n END AS orderline,\n CASE WHEN (level=0) THEN cust_number\n ELSE item_number\n END AS custitem,\n CASE WHEN (level=0) THEN cust_name\n ELSE description\n END AS custdescrip,\n 'qty' AS shipped_xtnumericrole,\n 'qty' AS selected_xtnumericrole,\n level AS xtindentrole\nFROM (\nSELECT cohead_id, -1 AS shipitem_id, cohead_number, -1 AS coitem_linenumber, 0 AS level,\n cust_number, cust_name,\n '' AS item_number, '' AS description,\n '' AS uom_name,\n COALESCE(SUM(shipitem_qty), 0) AS shipped,\n COALESCE(SUM(cobill_qty), 0) AS selected\nFROM cohead, custinfo, itemsite, item, whsinfo, shipitem, shiphead, uom,\n coitem LEFT OUTER JOIN\n ( cobill JOIN cobmisc\n ON ( (cobill_cobmisc_id=cobmisc_id) AND (NOT cobmisc_posted) ) )\n ON (cobill_coitem_id=coitem_id)\nWHERE ( (cohead_cust_id=cust_id)\n AND (shipitem_orderitem_id=coitem_id)\n AND (shipitem_shiphead_id=shiphead_id)\n AND (shiphead_order_type='SO')\n AND (coitem_cohead_id=cohead_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (coitem_qty_uom_id=uom_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (shiphead_shipped)\n AND (NOT shipitem_invoiced)\n\n AND (itemsite_warehous_id=)\n\n )\nGROUP BY cohead_id, cohead_number, cust_number, cust_name\n\nUNION\nSELECT cohead_id, shipitem_id, cohead_number, coitem_linenumber, 1 AS level,\n cust_number, cust_name,\n item_number, (item_descrip1 || ' ' || item_descrip2) AS description,\n uom_name,\n COALESCE(SUM(shipitem_qty), 0) AS shipped,\n COALESCE(SUM(cobill_qty), 0) AS selected\nFROM cohead, custinfo, itemsite, item, whsinfo, shipitem, shiphead, uom,\n coitem LEFT OUTER JOIN\n ( cobill JOIN cobmisc\n ON ( (cobill_cobmisc_id=cobmisc_id) AND (NOT cobmisc_posted) ) )\n ON (cobill_coitem_id=coitem_id)\nWHERE ( (cohead_cust_id=cust_id)\n AND (shipitem_orderitem_id=coitem_id)\n AND (shipitem_shiphead_id=shiphead_id)\n AND (shiphead_order_type='SO')\n AND (coitem_cohead_id=cohead_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (coitem_qty_uom_id=uom_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (shiphead_shipped)\n AND (NOT shipitem_invoiced)\n\n AND (itemsite_warehous_id=)\n\n )\nGROUP BY cohead_number, cust_number, cust_name,\n coitem_id, coitem_linenumber, item_number,\n item_descrip1, item_descrip2, cohead_id, shipitem_id, uom_name\n \n ) AS data\n\n\n WHERE (selected = 0)\n\n\nORDER BY cohead_number DESC, level, coitem_linenumber DESC;\n admin 2013-07-26 0 88 unpostedCashReceipts detail Used by arWorkBench, cashReceiptsEditList Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: unpostedCashReceipts\n-- Name: detail\n-- Notes: Used by arWorkBench, cashReceiptsEditList\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT DISTINCT\n cashrcpt_id, \n cashrcpt_number,\n cust_number,\n cust_name,\n cashrcpt_docnumber, \n bankaccnt_name,\n cashrcpt_distdate,\n cashrcpt_amount, \n currConcat(cashrcpt_curr_id) AS currabbr,\n CASE\n WHEN (cashrcpt_fundstype ='C') THEN \n WHEN (cashrcpt_fundstype ='T') THEN \n WHEN (cashrcpt_fundstype ='M') THEN \n WHEN (cashrcpt_fundstype ='V') THEN \n WHEN (cashrcpt_fundstype ='A') THEN \n WHEN (cashrcpt_fundstype ='D') THEN \n WHEN (cashrcpt_fundstype ='R') THEN \n WHEN (cashrcpt_fundstype ='K') THEN \n WHEN (cashrcpt_fundstype ='W') THEN \n WHEN (cashrcpt_fundstype ='O') THEN \n END AS cashrcpt_fundstype,\n 'curr' AS cashrcpt_amount_xtnumericrole \nFROM cashrcpt, bankaccnt, custinfo\n\n JOIN custgrpitem ON (custgrpitem_cust_id=cust_id)\n JOIN custgrp ON (custgrp_id=custgrpitem_custgrp_id)\n\n, custtype\nWHERE ( (NOT cashrcpt_posted)\n AND (NOT cashrcpt_void)\n AND (cashrcpt_bankaccnt_id=bankaccnt_id)\n AND (cashrcpt_cust_id=cust_id)\n AND (cust_custtype_id=custtype_id)\n\n AND (cashrcpt_cust_id=)\n\n\n AND (custgrp_id=)\n\n\n AND (custtype_id=)\n\n\n AND (custtype_code~)\n\n)\nORDER BY cashrcpt_distdate;\n\n admin 2013-07-26 0 89 unpostedReceipts detail used by unpostedPoReceipts -------PURCHASE ORDERS---------- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: unpostedReceipts\n-- Name: detail\n-- Notes: used by unpostedPoReceipts\n---------PURCHASE ORDERS----------\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT recv_id, recv_orderitem_id, recv_order_number, recv_order_type,\n vend_name AS orderhead_from,\n poitem_linenumber AS orderitem_linenumber,\n formatDate(recv_duedate) AS recv_duedate,\n warehous_code,\n COALESCE(item_number, ) AS item_number,\n COALESCE(uom_name, ) AS uom_name,\n recv_vend_item_number,\n recv_vend_uom,\n poitem_qty_ordered AS orderitem_qty_ordered, \n poitem_qty_received AS orderitem_qty_received,\n recv_qty, recv_date,\n COALESCE(recv_gldistdate, recv_date) AS recv_gldistdate,\n 'qty' AS orderitem_qty_ordered_xtnumericrole,\n 'qty' AS orderitem_qty_received_xtnumericrole,\n 'qty' AS recv_qty_xtnumericrole\nFROM pohead JOIN\n poitem ON (poitem_pohead_id=pohead_id) JOIN \n recv ON ((recv_orderitem_id=poitem_id)\n\t AND (recv_order_type='PO')) LEFT OUTER JOIN\n (itemsite JOIN item ON (itemsite_item_id=item_id)\n\t JOIN uom ON (item_inv_uom_id=uom_id)\n JOIN site() ON (itemsite_warehous_id=warehous_id)\n )\n ON (recv_itemsite_id=itemsite_id) JOIN\n vendinfo ON (pohead_vend_id=vend_id)\nWHERE (NOT recv_posted)\n\n-------RETURN AUTHORIZATIONS--------------\nUNION\nSELECT recv_id, recv_orderitem_id, recv_order_number, recv_order_type,\n cust_name AS orderhead_from,\n raitem_linenumber AS orderitem_linenumber,\n formatDate(recv_duedate) AS recv_duedate,\n warehous_code,\n COALESCE(item_number, ) AS item_number,\n COALESCE(uom_name, ) AS uom_name,\n recv_vend_item_number,\n recv_vend_uom,\n raitem_qtyauthorized AS orderitem_qty_ordered, \n raitem_qtyreceived AS orderitem_qty_received,\n recv_qty, recv_date,\n COALESCE(recv_gldistdate, recv_date) AS recv_gldistdate,\n 'qty' AS orderitem_qty_ordered_xtnumericrole,\n 'qty' AS orderitem_qty_received_xtnumericrole,\n 'qty' AS recv_qty_xtnumericrole\nFROM rahead JOIN\n raitem ON (raitem_rahead_id=rahead_id) JOIN \n recv ON ((recv_orderitem_id=raitem_id)\n\t AND (recv_order_type='RA')) LEFT OUTER JOIN\n (itemsite JOIN item ON (itemsite_item_id=item_id)\n\t JOIN uom ON (item_inv_uom_id=uom_id)\n JOIN site() ON (itemsite_warehous_id=warehous_id)\n )\n ON (recv_itemsite_id=itemsite_id) LEFT OUTER JOIN\n custinfo ON (rahead_cust_id=cust_id)\nWHERE (NOT recv_posted)\n\n\n------TRANSFER ORDERS---------\nUNION\nSELECT recv_id, recv_orderitem_id, recv_order_number, recv_order_type,\n tohead_srcname AS orderhead_from,\n toitem_linenumber AS orderitem_linenumber,\n formatDate(recv_duedate) AS recv_duedate,\n warehous_code,\n COALESCE(item_number, ) AS item_number,\n COALESCE(uom_name, ) AS uom_name,\n recv_vend_item_number,\n recv_vend_uom,\n toitem_qty_ordered AS orderitem_qty_ordered, \n toitem_qty_received AS orderitem_qty_received,\n recv_qty, recv_date,\n COALESCE(recv_gldistdate, recv_date) AS recv_gldistdate,\n 'qty' AS orderitem_qty_ordered_xtnumericrole,\n 'qty' AS orderitem_qty_received_xtnumericrole,\n 'qty' AS recv_qty_xtnumericrole\nFROM tohead JOIN\n toitem ON (toitem_tohead_id=tohead_id) JOIN \n recv ON ((recv_orderitem_id=toitem_id)\n\t AND (recv_order_type='TO')) LEFT OUTER JOIN\n (itemsite JOIN item ON (itemsite_item_id=item_id)\n\t JOIN uom ON (item_inv_uom_id=uom_id)\n JOIN site() ON (itemsite_warehous_id=warehous_id)\n )\n ON (recv_itemsite_id=itemsite_id) \nWHERE (NOT recv_posted)\n\nORDER BY recv_order_number, orderitem_linenumber;\n admin 2013-07-26 0 301 unusedPurchasedItems detail used by dspUnusedPurchasedItems.cpp Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: unusedPurchasedItems\n-- Name: detail\n-- Notes: used by dspUnusedPurchasedItems.cpp\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT DISTINCT item_id, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescrip, uom_name,\n SUM(itemsite_qtyonhand) AS qoh,\n MAX(itemsite_datelastcount) AS lastcount,\n MAX(itemsite_datelastused) AS lastused,\n 'qty' AS qoh_xtnumericrole,\n CASE WHEN (COALESCE(MAX(itemsite_datelastcount), startOfTime()) = startOfTime()) THEN 'Never' END AS lastcount_qtdisplayrole,\n CASE WHEN (COALESCE(MAX(itemsite_datelastused), startOfTime()) = startOfTime()) THEN 'Never' END AS lastused_qtdisplayrole \nFROM item, itemsite, uom \nWHERE ((itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (item_id NOT IN (SELECT DISTINCT bomitem_item_id FROM bomitem))\n AND (NOT item_sold)\n AND (item_type IN ('P', 'O')) \n\n AND (item_classcode_id=) \n\n AND (item_classcode_id IN (SELECT classcode_id FROM classcode WHERE (classcode_code ~ ))) \n\n\n AND (itemsite_controlmethod <> 'N')\n\n) \nGROUP BY item_id, item_number, uom_name, item_descrip1, item_descrip2 \nORDER BY item_number;\n admin 2013-07-26 0 461 uoms item used by bomItem Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: uoms\n-- Name: item\n-- Notes: used by bomItem\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT uom_id, uom_name\n FROM item\n JOIN uom ON (item_inv_uom_id=uom_id)\n WHERE(item_id=)\nUNION\nSELECT uom_id, uom_name\n FROM item\n JOIN itemuomconv ON (itemuomconv_item_id=item_id)\n JOIN uom ON (itemuomconv_to_uom_id=uom_id),\n itemuom, uomtype\n WHERE (itemuomconv_from_uom_id=item_inv_uom_id)\n AND (item_id=)\n AND (itemuom_itemuomconv_id=itemuomconv_id)\n AND (uomtype_id=itemuom_uomtype_id)\n\n AND (uomtype_name=)\n\nUNION\nSELECT uom_id, uom_name\n FROM item\n JOIN itemuomconv ON (itemuomconv_item_id=item_id)\n JOIN uom ON (itemuomconv_from_uom_id=uom_id),\n itemuom, uomtype\n WHERE (itemuomconv_to_uom_id=item_inv_uom_id)\n AND (item_id=)\n AND (itemuom_itemuomconv_id=itemuomconv_id)\n AND (uomtype_id=itemuom_uomtype_id)\n\n AND (uomtype_name=)\n\n ORDER BY uom_name;\n admin 2013-07-26 0 121 updateprices availsched Notes: Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: updateprices\n-- Name: availsched\n-- Notes:\n-- Notes:\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT ipshead_id, ipshead_name, ipshead_descrip,\n ipshead_effective, ipshead_expires,\n CASE WHEN COALESCE(ipshead_effective, startOfTime()) <= startOfTime() THEN \n\t'Always' END AS ipshead_effective_qtdisplayrole,\n CASE WHEN COALESCE(ipshead_expires, endOfTime()) >= endOfTime() THEN \n\t'Never' END AS ipshead_expires_qtdisplayrole\nFROM ipshead\nWHERE ( (ipshead_id NOT IN (\n \tSELECT selsched_ipshead_id\n \tFROM selsched\n \tWHERE (selsched_ipshead_id=ipshead_id)))\n\n AND (ipshead_effective <= CURRENT_DATE)\n\n\n AND (ipshead_expires > CURRENT_DATE)\n\n\n AND (CURRENT_DATE NOT BETWEEN ipshead_effective AND ipshead_expires -1)\n\n )\nORDER BY ipshead_effective, ipshead_name;\n admin 2013-07-26 0 123 updateprices dropselsched Notes: Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: updateprices\n-- Name: dropselsched\n-- Notes:\n-- Notes:\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nDROP TABLE selsched;\n admin 2013-07-26 0 124 updateprices remove Notes: Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: updateprices\n-- Name: remove\n-- Notes:\n-- Notes:\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nDELETE FROM selsched\n\nWHERE (selsched_ipshead_id=)\n\n;\n admin 2013-07-26 0 125 updateprices selsched Notes: Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: updateprices\n-- Name: selsched\n-- Notes:\n-- Notes:\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT selsched_ipshead_id, ipshead_name, ipshead_descrip\nFROM selsched\n JOIN ipshead ON (selsched_ipshead_id=ipshead_id)\nORDER BY ipshead_name\n admin 2013-07-26 0 120 updateprices add Notes: Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: updateprices\n-- Name: add\n-- Notes:\n-- Notes:\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n INSERT INTO selsched\n\n VALUES ();\n\n SELECT ipshead_id\n FROM ipshead\n WHERE ( (ipshead_id NOT IN (\n \tSELECT selsched_ipshead_id\n \tFROM selsched\n \tWHERE (selsched_ipshead_id=ipshead_id)))\n\n AND (ipshead_effective <= CURRENT_DATE)\n\n\n AND (ipshead_expires > CURRENT_DATE)\n\n\n AND (CURRENT_DATE NOT BETWEEN ipshead_effective AND ipshead_expires -1)\n\n );\n\n admin 2013-07-26 0 91 updateReorderLevels query Calculates reorder point levels and returns a proposed result set Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: updateReorderLevels\n-- Name: query\n-- Notes: Calculates reorder point levels and returns a proposed result set\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT *,\n 'qty' AS reordlvl_curr_level_xtnumericrole,\n 'qty' AS reordlvl_total_usage_xtnumericrole\nFROM updateReorderLevel((\n SELECT array(\n SELECT itemsite_id\n FROM itemsite\n JOIN item ON (itemsite_item_id=item_id)\n LEFT OUTER JOIN plancode ON (itemsite_plancode_id=plancode_id)\n LEFT OUTER JOIN classcode ON (item_classcode_id=classcode_id)\n WHERE ( (itemsite_active)\n\n AND (itemsite_warehous_id=)\n\n\n AND (item_id=)\n\n AND (item_classcode_id=)\n\n AND (classcode_code ~ )\n\n AND (itemsite_plancode_id=)\n\n AND (plancode_code ~ )\n\n )\n )\n),\n, \n\n true,\n\n false,\n\n\nARRAY[\n \n \n ,\n \n \n ]\n)\nORDER BY reordlvl_warehous_code, reordlvl_item_number;\n admin 2013-07-26 0 92 updateReorderLevels update Calculates and immediatly updates reorder point levels to the database Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: updateReorderLevels\n-- Name: update\n-- Notes: Calculates and immediatly updates reorder point levels to the database\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT updateReorderLevel(itemsite_id,, \nARRAY[\n \n \n ,\n \n \n ]\n) AS result\nFROM itemsite\n JOIN item ON (itemsite_item_id=item_id)\n LEFT OUTER JOIN plancode ON (itemsite_plancode_id=plancode_id)\n LEFT OUTER JOIN classcode ON (item_classcode_id=classcode_id)\nWHERE ( (itemsite_active)\n AND (itemsite_useparams)\n\n AND (itemsite_warehous_id=)\n\n\n AND (item_id=)\n\n AND (item_classcode_id=)\n\n AND (classcode_code ~ )\n\n AND (itemsite_plancode_id=)\n\n AND (plancode_code ~ )\n\n)\n admin 2013-07-26 0 134 usageStatistics detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: usageStatistics\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT *,\n \n formatQty(transfer) AS f_transfer,\n \n formatQty(received) AS f_received,\n formatQty(issued) AS f_issued,\n formatQty(sold) AS f_sold,\n formatQty(scrap) AS f_scrap,\n formatQty(adjust) AS f_adjust,\n 'qty' AS received_xtnumericrole,\n 'qty' AS issued_xtnumericrole,\n 'qty' AS sold_xtnumericrole,\n 'qty' AS scrap_xtnumericrole,\n 'qty' AS adjust_xtnumericrole,\n 'qty' AS transfer_xtnumericrole\nFROM (\nSELECT itemsite_id, item_id, warehous_code,\n item_number, (item_descrip1 || ' ' || item_descrip2) AS itemdescrip,\n \n summTransT(itemsite_id, , ) AS transfer,\n \n summTransR(itemsite_id, , ) AS received,\n summTransI(itemsite_id, , ) AS issued,\n summTransS(itemsite_id, , ) AS sold,\n summTransC(itemsite_id, , ) AS scrap,\n summTransA(itemsite_id, , ) AS adjust\nFROM item JOIN itemsite ON (itemsite_item_id=item_id)\n JOIN whsinfo ON (warehous_id=itemsite_warehous_id)\nWHERE (1=1)\n\n\n AND (item_id=)\n\n\n\n AND (itemsite_warehous_id=)\n\n\n\n AND (item_classcode_id=)\n\n AND (item_id IN (SELECT itemgrpitem_item_id\n FROM itemgrpitem\n\t\t WHERE (itemgrpitem_itemgrp_id=)))\n\n AND (itemsite_plancode_id=)\n\n AND (item_classcode_id IN (SELECT classcode_id\n\t\t\t FROM classcode\n\t\t\t WHERE (classcode_code ~ )))\n\n AND (item_id IN (SELECT itemgrpitem_item_id\n\t\t FROM itemgrpitem, itemgrp\n\t\t WHERE ( (itemgrpitem_itemgrp_id=itemgrp_id)\n\t\t AND (itemgrp_name ~ ))))\n\n AND (itemsite_plancode_id IN (SELECT plancode_id\n\t\t\t\tFROM plancode\n\t\t\t\tWHERE (plancode_code ~ )))\n\n AND (item_id IN (SELECT DISTINCT itemgrpitem_item_id FROM itemgrpitem))\n\n) AS data\n\nORDER BY warehous_code, item_number;\n admin 2013-07-26 0 302 validLocationsByItem detail used by dspValidLocationsByItem.cpp Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: validLocationsByItem\n-- Name: detail\n-- Notes: used by dspValidLocationsByItem.cpp\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT location_id, warehous_code,\n formatLocationName(location_id) AS locationname,\n firstLine(location_descrip) AS locationdescrip,\n location_restrict, location_netable\nFROM itemsite, location, whsinfo\nWHERE ((validLocation(location_id, itemsite_id))\n AND ((itemsite_loccntrl) OR (itemsite_location_id=location_id))\n AND (itemsite_item_id=)\n AND (itemsite_warehous_id=warehous_id)\n\n AND (warehous_id=)\n\n )\nORDER BY warehous_code, locationname;\n admin 2013-07-26 0 90 updateReorderLevels post itemsite with new reorder level Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: updateReorderLevels\n-- Name: post\n-- Notes: itemsite with new reorder level\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nUPDATE itemsite SET\n itemsite_reorderlevel=,\n itemsite_stocked=CASE WHEN ( = 0) THEN false\n ELSE itemsite_stocked END,\n itemsite_useparams=CASE WHEN ( = 0) THEN false\n ELSE itemsite_useparams END\nWHERE (itemsite_id=)\n admin 2013-07-26 0 303 vendorAPHistory detail used by dspVendorAPHistory Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: vendorAPHistory\n-- Name: detail\n-- Notes: used by dspVendorAPHistory\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT apopen_id, -1 AS applyid, 0 AS type,\n apopen_docdate AS sortdate, apopen_docnumber AS sortnumber,\n apopen_docnumber AS docnumber,\n formatBoolYN(apopen_open) AS f_open,\n CASE WHEN (apopen_doctype='V') THEN \n WHEN (apopen_doctype='C') THEN \n WHEN (apopen_doctype='D') THEN \n ELSE \n END AS documenttype,\n apopen_invcnumber AS invoicenumber,\n apopen_ponumber AS ponumber,\n apopen_docdate AS docdate, apopen_duedate AS duedate, apopen_amount AS amount,\n (apopen_amount - apopen_paid) AS balance,\n currconcat(apopen_curr_id) AS currAbbr,\n CASE WHEN (apopen_doctype='C') THEN apopen_amount / apopen_curr_rate * -1.0\n ELSE apopen_amount / apopen_curr_rate\n END AS base_amount,\n 0 AS base_applied,\n CASE WHEN (apopen_doctype='C') THEN (apopen_amount - apopen_paid) / apopen_curr_rate * -1.0\n ELSE (apopen_amount - apopen_paid) / apopen_curr_rate\n END AS base_balance,\n 'curr' AS amount_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n 0 AS base_amount_xttotalrole,\n 'curr' AS base_applied_xtnumericrole,\n 0 AS base_applied_xttotalrole,\n 'curr' AS balance_xtnumericrole,\n 'curr' AS base_balance_xtnumericrole,\n 0 AS base_balance_xttotalrole,\n 0 AS xtindentrole \nFROM apopen \nWHERE ( (apopen_vend_id=) \n AND (apopen_docdate BETWEEN AND ) ) \n\nUNION \nSELECT apopen_id, apapply_source_apopen_id AS applyid, 1 AS type,\n apopen_docdate AS sortdate, apopen_docnumber AS sortnumber,\n apapply_source_docnumber AS docnumber,\n '' AS f_open,\n CASE WHEN (apapply_source_doctype='C') THEN \n WHEN (apapply_source_doctype='K') THEN \n ELSE \n END AS documenttype,\n ' ' AS invoicenumber,\n '' AS ponumber,\n apapply_postdate AS docdate, CAST(NULL AS DATE) AS duedate,\n apapply_amount AS amount,\n 0 AS balance,\n currconcat(apapply_curr_id) AS currAbbr,\n 0 AS base_amount,\n (apapply_amount / apopen_curr_rate) AS base_applied, \n 0 AS base_balance,\n 'curr' AS amount_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n 0 AS base_amount_xttotalrole,\n 'curr' AS base_applied_xtnumericrole,\n 0 AS base_applied_xttotalrole,\n 'curr' AS balance_xtnumericrole,\n 'curr' AS base_balance_xtnumericrole,\n 0 AS base_balance_xttotalrole,\n 1 AS xtindentrole \nFROM apapply, apopen \nWHERE ( (apapply_target_apopen_id=apopen_id)\n AND (apapply_vend_id=)\n AND (apopen_vend_id=)\n AND (apopen_docdate BETWEEN AND ) ) \n\nUNION \nSELECT apopen_id, apapply_target_apopen_id AS applyid, 2 AS type,\n apopen_docdate AS sortdate, apopen_docnumber AS sortnumber,\n apapply_target_docnumber AS docnumber,\n '' AS f_open,\n CASE WHEN (apapply_target_doctype='V') THEN \n WHEN (apapply_target_doctype='D') THEN \n ELSE \n END AS documenttype,\n apopen_invcnumber AS invoicenumber,\n '' AS ponumber,\n apapply_postdate AS docdate, CAST(NULL AS DATE) AS duedate,\n apapply_amount AS amount,\n 0 AS balance,\n currconcat(apapply_curr_id) AS currAbbr,\n 0 AS base_amount,\n (apapply_amount / apopen_curr_rate) AS base_applied, \n 0 AS base_balance,\n 'curr' AS amount_xtnumericrole,\n 'curr' AS base_amount_xtnumericrole,\n 0 AS base_amount_xttotalrole,\n 'curr' AS base_applied_xtnumericrole,\n 0 AS base_applied_xttotalrole,\n 'curr' AS balance_xtnumericrole,\n 'curr' AS base_balance_xtnumericrole,\n 0 AS base_balance_xttotalrole,\n 1 AS xtindentrole \nFROM apapply, apopen \nWHERE ( (apapply_source_doctype IN ('C', 'K'))\n AND (apapply_source_doctype=apopen_doctype)\n AND (apapply_source_docnumber=apopen_docnumber)\n AND (apapply_vend_id=)\n AND (apopen_vend_id=)\n AND (apopen_docdate BETWEEN AND ) ) \nORDER BY sortdate, apopen_id, type;\n admin 2013-07-26 0 304 vendors detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: vendors\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT \n vend_id, vend_vendtype_id, \n vend_active, vend_number, vend_name,\n vendtype_code,\n cntct.*, addr.*\nFROM vendinfo \n JOIN vendtype ON (vend_vendtype_id=vendtype_id)\n LEFT OUTER JOIN cntct ON (vend_cntct1_id=cntct_id) \n LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) \nWHERE true\n \n AND vend_active \n\n\n AND ((vend_number ~* )\n OR (vend_name ~* )\n OR (vendtype_code ~* )\n OR (COALESCE(cntct_first_name,'') || ' ' || COALESCE(cntct_last_name,'') ~* )\n OR (COALESCE(cntct_phone,'') || ' ' || COALESCE(cntct_phone2,'') || ' ' || COALESCE(cntct_fax,'') ~* )\n OR (COALESCE(cntct_email,'') ~* )\n OR (COALESCE(addr_line1,'') || ' ' || COALESCE(addr_line2,'') || ' ' || COALESCE(addr_line3,'') ~* )\n OR (COALESCE(addr_city,'') ~* )\n OR (COALESCE(addr_state,'') ~* )\n OR (COALESCE(addr_postalcode,'') ~* )\n OR (COALESCE(addr_country,'') ~* ))\n\n\n AND (vend_number ~* )\n\n\n AND (vend_name ~* )\n\n\n AND (vendtype_code ~* )\n\n\n AND (COALESCE(cntct_first_name,'') || ' ' || COALESCE(cntct_last_name,'') ~* )\n\n\n AND (COALESCE(cntct_phone,'') || ' ' || COALESCE(cntct_phone2,'') || ' ' || COALESCE(cntct_fax,'') ~* )\n\n\n AND (COALESCE(cntct_email,'') ~* )\n\n\n AND (COALESCE(addr_line1,'') || ' ' || COALESCE(addr_line2,'') || ' ' || COALESCE(addr_line3,'') ~* )\n\n\n AND (COALESCE(addr_city,'') ~* )\n\n\n AND (COALESCE(addr_state,'') ~* )\n\n\n AND (COALESCE(addr_postalcode,'') ~* )\n\n\n AND (COALESCE(addr_country,'') ~* )\n\nORDER BY vend_number; \n admin 2013-07-26 0 455 voucher editlist used by voucheringEditList indent: order line item credit account line item credit account debit account for entire order Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: voucher\n-- Name: editlist\n-- Notes: used by voucheringEditList\n-- indent: order\n-- line item\n-- credit account\n-- line item\n-- credit account\n-- debit account for entire order\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT orderid, seq,\n CASE WHEN seq = 0 THEN vouchernumber\n ELSE ''\n END AS vouchernumber, ponumber, itemnumber,\n vendnumber, description, itemtype, iteminvuom, f_qty, cost,\n 'curr' AS cost_xtnumericrole,\n 0 AS cost_xttotalrole,\n CASE WHEN seq = 3 THEN 1\n ELSE seq END AS xtindentrole,\n CASE WHEN findAPAccount(vendid) < 0 THEN 'error'\n END AS qtforegroundrole\nFROM (SELECT orderid,\n CASE WHEN length(ponumber) > 0 THEN 0 ELSE 1 END AS seq,\n vouchernumber, ponumber,\n CASE WHEN (itemid = 1) THEN invoicenumber\n ELSE itemnumber END AS itemnumber,\n CASE WHEN (itemid = 1) THEN itemnumber\n ELSE '' END AS vendnumber,\n vendid, description,\n itemtype, iteminvuom, f_qty, cost\nFROM voucheringEditList\nUNION\n-- pull out the credits\nSELECT DISTINCT orderid, 2 AS seq, vouchernumber, '' AS ponumber,\n AS itemnumber, '' AS vendnumber, vendid,\n account AS description,\n '' AS itemtype, '' AS iteminvuom, NULL as f_qty, cost\nFROM voucheringEditList\nWHERE itemid = 2\nUNION\n-- calculate the debits\nSELECT orderid, 3 AS seq, vouchernumber, '' AS ponumber,\n AS itemnumber, '' AS vendnumber, vendid,\n CASE WHEN findAPAccount(vendid) < 0 THEN \n ELSE formatGLAccountLong(findAPAccount(vendid))\n END AS description,\n '' AS itemtype, '' AS iteminvuom, NULL as f_qty,\n SUM(cost) AS cost\nFROM voucheringEditList\nWHERE itemid = 2\nGROUP BY orderid, vouchernumber, vendid\nORDER BY vouchernumber, ponumber desc, seq) AS sub;\n admin 2013-07-26 0 466 voucherItem distributions used by voucherItem Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: voucherItem\n-- Name: distributions\n-- Notes: used by voucherItem\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT vodist_id, vodist_amount,\n COALESCE(costelem_type, ) AS costelem_type,\n 'currval' AS vodist_amount_xtnumericrole\nFROM vodist\n LEFT OUTER JOIN costelem ON (vodist_costelem_id=costelem_id)\nWHERE ( (vodist_poitem_id=)\n AND (vodist_vohead_id=) );\n admin 2013-07-26 0 305 voucherRegister detail used by dspVoucherRegister Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: voucherRegister\n-- Name: detail\n-- Notes: used by dspVoucherRegister\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT gltrans_id, gltrans_date,\n vend_number, vend_name,\n gltrans_doctype, gltrans_docnumber, firstLine(gltrans_notes) AS reference,\n (formatGLAccount(accnt_id) || ' - ' || accnt_descrip) AS account,\n CASE WHEN (gltrans_amount < 0) THEN ABS(gltrans_amount)\n ELSE 0\n END AS debit,\n CASE WHEN (gltrans_amount > 0) THEN gltrans_amount\n ELSE 0\n END AS credit,\n gltrans_username,\n 'curr' AS debit_xtnumericrole,\n 'curr' AS credit_xtnumericrole\nFROM accnt, gltrans LEFT OUTER JOIN vohead JOIN vendinfo\n ON (vohead_vend_id=vend_id)\n ON (gltrans_doctype='VO' and gltrans_docnumber=vohead_number)\nWHERE ((gltrans_accnt_id=accnt_id)\n AND (gltrans_date BETWEEN AND )\n AND (gltrans_source='A/P')\n\n AND (gltrans_accnt_id=)\n\n )\nORDER BY gltrans_created DESC, gltrans_sequence, gltrans_amount;\n admin 2013-07-26 0 306 whereUsed detail used by dspSingleLevelWhereUsed, dspIndentedWhereUsed Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: whereUsed\n-- Name: detail\n-- Notes: used by dspSingleLevelWhereUsed, dspIndentedWhereUsed\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT \n bomwork_id, item_id, bomwork_parent_id,\n bomworkitemsequence(bomwork_id) AS seqord, \n bomwork_seqnumber, item_number,\n bomwork_qtyfxd ,bomwork_qtyper,\n 'qty' AS bomwork_qtyfxd_xtnumericrole,\n 'qtyper' AS bomwork_qtyper_xtnumericrole,\n 'scrap' AS bomwork_scrap_xtnumericrole,\n bomwork_scrap,\n bomwork_effective,\n bomwork_expires,\n CASE WHEN COALESCE(bomwork_effective,startOfTime())=startOfTime() \n THEN 'Always' \n END AS bomwork_effective_qtdisplayrole,\n CASE WHEN COALESCE(bomwork_expires,endOfTime())=endOfTime() \n THEN 'Never' \n END AS bomwork_expires_qtdisplayrole,\n bomwork_level - 1 AS xtindentrole, \n \n bomitem_parent_item_id, item_id, bomitem_seqnumber,\n item_number,\n itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyfxd AS qtyfxd,\n itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper AS qtyper,\n 'qty' AS qtyfxd_xtnumericrole,\n 'qtyper' AS qtyper_xtnumericrole,\n 'scrap' AS bomitem_scrap_xtnumericrole,\n bomitem_scrap,\n bomitem_effective, bomitem_expires,\n CASE WHEN (COALESCE(bomitem_effective, startoftime()) = startoftime()) \n THEN 'Always' \n END AS bomitem_effective_qtdisplayrole,\n CASE WHEN (COALESCE(bomitem_expires, endoftime()) = endoftime()) \n THEN 'Never' \n END AS bomitem_expires_qtdisplayrole,\n-- formatted for report\n item_descrip1, item_descrip2,\n formatQty(itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyfxd) AS f_qtyfxd,\n formatQtyper(itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper) AS f_qtyper,\n formatScrap(bomitem_scrap) AS f_scrap,\n formatDate(bomitem_effective, ) AS f_effective,\n formatDate(bomitem_expires, ) AS f_expires,\n formatBoolYN(bomitem_createwo) AS f_createwo,\n CASE WHEN (bomitem_issuemethod='S') THEN \n WHEN (bomitem_issuemethod='L') THEN \n WHEN (bomitem_issuemethod='M') THEN \n ELSE \n END AS f_issuemethod,\n formatQtyper(itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * (bomitem_qtyfxd + bomitem_qtyper) * (1 + bomitem_scrap)) as f_qtyreq,\n \n (item_descrip1 || ' ' || item_descrip2) AS descrip,\n uom_name\nFROM item, uom, \n \n bomwork\n \n bomitem\n \nWHERE ((item_inv_uom_id=uom_id)\n \n AND (bomwork_item_id=item_id)\n AND (bomwork_set_id=)\n \n AND (bomwork_expires > CURRENT_DATE)\n \n \n AND (bomwork_effective <= CURRENT_DATE)\n \n \n AND (bomitem_parent_item_id=item_id)\n AND (bomitem_item_id=)\n AND (bomitem_rev_id=getActiveRevId('BOM',bomitem_parent_item_id))\n \n AND (CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires-1)) \n \n AND ( BETWEEN bomitem_effective AND (bomitem_expires-1))\n \n \n )\n\nORDER BY seqord\n\nORDER BY item_number\n\n;\n admin 2013-07-26 0 93 workOrderHistory detail used by dspWoHistoryByNumber, dspWoHistoryByItem, dspWoHistoryByClassCode Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: workOrderHistory\n-- Name: detail\n-- Notes: used by dspWoHistoryByNumber, dspWoHistoryByItem, dspWoHistoryByClassCode\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT\n\n wo_id, formatWoNumber(wo_id) AS wonumber, wo_status,\n wo_qtyord, wo_qtyrcv, wo_postedvalue,\n wo_startdate, wo_duedate,\n\n wo_id, formatWoNumber(wo_id) AS wonumber, wo_status,\n wo_qtyord, wo_qtyrcv, wo_postedvalue,\n wo_startdate, wo_duedate,\n\n wo.*, COALESCE((prj_number || ' ' || prj_name), '') AS project,\n \n COALESCE(bom.rev_number, '') AS bom_rev_number,\n COALESCE(boo.rev_number, '') AS boo_rev_number,\n \n 'cost' AS wo_wipvalue_xtnumericrole,\n\n\n item_number, (item_descrip1 || ' ' || item_descrip2) AS itemdescrip,\n item_descrip1, item_descrip2, uom_name,\n\n warehous_code,\n formatDate(wo_startdate) AS f_wo_startdate,\n formatDate(wo_duedate) AS f_wo_duedate,\n formatQty(wo_qtyord) AS f_wo_qtyord,\n formatQty(wo_qtyrcv) AS f_wo_qtyrcv,\n \n formatCost(wo_postedvalue) AS f_wo_postedvalue,\n \n 'qty' AS wo_qtyord_xtnumericrole,\n 'qty' AS wo_qtyrcv_xtnumericrole,\n 'cost' AS wo_postedvalue_xtnumericrole\nFROM wo JOIN itemsite ON (itemsite_id=wo_itemsite_id)\n JOIN whsinfo ON (warehous_id=itemsite_warehous_id)\n\n JOIN item ON (item_id=itemsite_item_id)\n JOIN uom ON (uom_id=item_inv_uom_id)\n\n\n LEFT OUTER JOIN rev bom ON (bom.rev_id=wo_bom_rev_id)\n LEFT OUTER JOIN rev boo ON (boo.rev_id=wo_boo_rev_id)\n\n LEFT OUTER JOIN prj ON (prj_id=wo_prj_id)\nWHERE ((true)\n\n AND (itemsite_item_id=)\n AND (wo_duedate BETWEEN AND )\n\n\n AND (itemsite_warehous_id=)\n\n\n AND (CAST(wo_number AS TEXT) ~ )\n\n\n AND (itemsite_item_id=item_id)\n AND (wo_duedate BETWEEN AND )\n \n AND (item_classcode_id=)\n \n AND (item_classcode_id IN (SELECT classcode_id FROM classcode\n WHERE (classcode_code ~ )))\n \n\n\n AND ((wo_ordtype<>'W') OR (wo_ordtype IS NULL))\n\n )\n\n\n ORDER BY wo_startdate DESC, wo_number, wo_subnumber\n\n ORDER BY item_number\n\n ORDER BY wo_number, wo_subnumber\n\n;\n admin 2013-07-26 0 116 workOrderSchedule parameterlist used by dspWoScheduleByParameterList Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: workOrderSchedule\n-- Name: parameterlist\n-- Notes: used by dspWoScheduleByParameterList\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT wo_id,\n CASE WHEN (wo_ordid IS NULL) THEN -1\n ELSE wo_ordid\n END AS orderid,\n wo.*, warehous_code, uom_name,\n item_number, (item_descrip1 || ' ' || item_descrip2) AS itemdescrip,\n item_descrip1, item_descrip2,\n formatQty(wo_qtyord) AS ordered,\n formatQty(wo_qtyrcv) AS received,\n formatDate(wo_startdate) AS startdate,\n formatDate(wo_duedate) AS duedate,\n formatWONumber(wo_id) AS wonumber,\n 'qty' AS wo_qtyord_xtnumericrole,\n 'qty' AS wo_qtyrcv_xtnumericrole,\n CASE WHEN ((wo_startdate<=CURRENT_DATE) AND (wo_status IN ('O','E','S','R'))) THEN 'error'\n END AS wo_startdate_qtforegroundrole,\n CASE WHEN (wo_duedate<=CURRENT_DATE) THEN 'error'\n END AS wo_duedate_qtforegroundrole,\n CASE WHEN (wo_duedate<=CURRENT_DATE) THEN 'Overdue'\n ELSE 'On Time'\n END AS condition,\n CASE WHEN (wo_duedate<=CURRENT_DATE) THEN 'error' END AS condition_qtforegroundrole\nFROM wo, itemsite, whsinfo, item, uom\nWHERE ( (wo_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (wo_startdate BETWEEN AND )\n\n AND (itemsite_warehous_id=)\n\n\n AND (itemsite_item_id=)\n\n\n AND (wo_number IN (SELECT wo_number\n FROM wo\n WHERE (wo_id=)))\n\n\n AND (wo_status IN (\n\n \n ,\n \n \n ))\n\n AND (wo_status IN ('R','I'))\n\n AND (wo_status<>'C')\n\n\n AND (wo_ordtype<>'W')\n\n\n AND (item_classcode_id=)\n\n AND (item_id IN (SELECT itemgrpitem_item_id\n FROM itemgrpitem\n WHERE (itemgrpitem_itemgrp_id=)))\n\n AND (itemsite_plancode_id=)\n\n AND (wo_id IN (SELECT wooper_wo_id\n FROM wooper\n WHERE (wooper_wrkcnt_id=)))\n\n AND (item_classcode_id IN (SELECT classcode_id\n FROM classcode\n WHERE (classcode_code ~ )))\n\n AND (item_id IN (SELECT itemgrpitem_item_id\n FROM itemgrpitem, itemgrp\n WHERE ( (itemgrpitem_itemgrp_id=itemgrp_id) AND (itemgrp_name ~ ) ) ))\n\n AND (itemsite_plancode_id IN (SELECT plancode_id\n FROM plancode\n WHERE (plancode_code ~ )))\n\n AND (wo_id IN (SELECT wooper_wo_id\n FROM wooper, wrkcnt\n WHERE ((wooper_wrkcnt_id=wrkcnt_id) AND (wrkcnt_code ~ ))))\n\n\n AND (wo_username=)\n\n )\nORDER BY \n\n wo_startdate,\n\n wo_duedate,\n\n item_number,\n\n wo_number, wo_subnumber;\n admin 2013-07-26 0 128 workOrderVariance material used by dspMaterialUsageVarianceByBOMItem, dspMaterialUsageVarianceByComponentItem, dspMaterialUsageVarianceByItem, dspMaterialUsageVarianceByWarehouse, dspMaterialUsageVarianceByWorkOrder Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: workOrderVariance\n-- Name: material\n-- Notes: used by dspMaterialUsageVarianceByBOMItem, dspMaterialUsageVarianceByComponentItem,\n-- dspMaterialUsageVarianceByItem, dspMaterialUsageVarianceByWarehouse,\n-- dspMaterialUsageVarianceByWorkOrder\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT womatlvar_id, posted, \n parentitemnumber, parentdescrip,\n componentitemnumber, componentdescrip,\n ordered, received,\n projreq, projqtyper,\n actiss, actqtyper,\n (actqtyper - projqtyper) AS qtypervar,\n CASE WHEN (actqtyper=projqtyper) THEN 0\n WHEN (projqtyper=0) THEN actqtyper\n ELSE ((1 - (actqtyper / projqtyper)) * -1)\n END AS qtypervarpercent,\n womatlvar_notes, womatlvar_ref,\n\n formatDate(posted) AS f_posted,\n formatQty(ordered) AS f_ordered,\n formatQty(received) AS f_received,\n formatQty(projreq) AS f_projreq,\n formatQtyPer(projqtyper) AS f_projqtyper,\n formatQty(actiss) AS f_actiss,\n formatQty(actqtyper) AS f_actqtyper,\n formatQty(actqtyper - projqtyper) AS f_qtypervar,\n CASE WHEN (actqtyper=projqtyper) THEN formatQty(0)\n WHEN (projqtyper=0) THEN formatQty(actqtyper)\n ELSE formatPrcnt((1 - (actqtyper / projqtyper)) * -1)\n END AS f_qtypervarpercent,\n\n 'qty' AS ordered_xtnumericrole,\n 'qty' AS received_xtnumericrole,\n 'qty' AS projreq_xtnumericrole,\n 'qtyper' AS projqtyper_xtnumericrole,\n 'qty' AS actiss_xtnumericrole,\n 'qtyper' AS actqtyper_xtnumericrole,\n 'qtyper' AS qtypervar_xtnumericrole,\n 'percent' AS qtypervarpercent_xtnumericrole\nFROM ( SELECT womatlvar_id, womatlvar_posted AS posted,\n parentitem.item_number AS parentitemnumber,\n parentitem.item_descrip1 || ' ' || parentitem.item_descrip2 as parentdescrip,\n componentitem.item_number AS componentitemnumber,\n componentitem.item_descrip1 || ' ' || componentitem.item_descrip2 as componentdescrip,\n womatlvar_notes, womatlvar_ref,\n womatlvar_qtyord AS ordered, womatlvar_qtyrcv AS received,\n ((womatlvar_qtyfxd + womatlvar_qtyrcv * womatlvar_qtyper) * (1 + womatlvar_scrap)) AS projreq,\n womatlvar_qtyper AS projqtyper,\n (womatlvar_qtyiss) AS actiss, (NONEG(womatlvar_qtyiss - womatlvar_qtyfxd) / (womatlvar_qtyrcv * (1 + womatlvar_scrap))) AS actqtyper\n FROM womatlvar LEFT OUTER JOIN wo ON ( (wo_number=womatlvar_number) AND\n (wo_subnumber=womatlvar_subnumber) )\n LEFT OUTER JOIN itemsite parent ON (parent.itemsite_id=womatlvar_parent_itemsite_id)\n LEFT OUTER JOIN item parentitem ON (parentitem.item_id=parent.itemsite_item_id)\n LEFT OUTER JOIN itemsite component ON (component.itemsite_id=womatlvar_component_itemsite_id)\n LEFT OUTER JOIN item componentitem ON (componentitem.item_id=component.itemsite_item_id)\n WHERE ( (1=1)\n\n AND (womatlvar_posted BETWEEN AND )\n\n\n AND (wo_id=)\n\n\n AND (parent.itemsite_warehous_id=)\n\n\n AND (parent.itemsite_item_id=)\n\n\n AND (womatlvar_bomitem_id=)\n\n\n AND (component.itemsite_item_id=)\n\n ) ) AS data\nORDER BY posted;\n admin 2013-07-26 0 127 updateprices update Notes: Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: updateprices\n-- Name: update\n-- Notes:\n-- Notes:\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nUPDATE ipsiteminfo SET\n ipsitem_price=\n\n ipsitem_price + \n\n roundSale(ipsitem_price * (1.0 + ( / 100.0)))\n\nFROM selsched, item\n\n JOIN itemgrpitem ON (itemgrpitem_item_id=item_id)\n JOIN itemgrp ON (itemgrpitem_itemgrp_id=itemgrp_id)\n\n JOIN prodcat ON (prodcat_id=item_prodcat_id)\n\nWHERE ( ipsitem_item_id=item_id\n AND selsched_ipshead_id=ipsitem_ipshead_id\n\n AND item_id=\n\n AND itemgrp_id=\n\n AND itemgrp_name ~ \n\n AND prodcat_id=\n\n AND prodcat_code ~ \n\n);\n admin 2013-07-26 0 126 updateprices updatechar used by updatePrices Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: updateprices\n-- Name: updatechar\n-- Notes: used by updatePrices\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nUPDATE ipsitemchar SET\n ipsitemchar_price=\n\n ipsitemchar_price + \n\n roundSale(ipsitemchar_price * (1.0 + ( / 100.0)))\n\nFROM selsched, ipsiteminfo, item\n\n JOIN itemgrpitem ON (itemgrpitem_item_id=item_id)\n JOIN itemgrp ON (itemgrpitem_itemgrp_id=itemgrp_id)\n\n JOIN prodcat ON (prodcat_id=item_prodcat_id)\n\nWHERE ( ipsitemchar_ipsitem_id=ipsitem_id\n AND ipsitem_item_id=item_id\n AND selsched_ipshead_id=ipsitem_ipshead_id\n\n AND item_id=\n\n AND itemgrp_id=\n\n AND itemgrp_name ~ \n\n AND prodcat_id=\n\n AND prodcat_code ~ \n\n);\n admin 2013-07-26 0 467 voucherItem receipts used by voucherItem Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: voucherItem\n-- Name: receipts\n-- Notes: used by voucherItem\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT recv_id AS item_id, 1 AS item_type, 'REC' AS action,\n recv_date AS item_date,\n recv_qty AS qty, 'qty' AS qty_xtnumericrole,\n recv_purchcost AS unitprice, 'curr' AS unitprice_xtnumericrole,\n formatBoolYN(recv_vohead_id=) AS f_tagged,\n AS action_qtdisplayrole,\n 0 AS qty_xttotalrole\nFROM recv\nWHERE ( (NOT recv_invoiced)\n AND (recv_posted)\n AND ((recv_vohead_id IS NULL) OR (recv_vohead_id=))\n AND (recv_orderitem_id=) )\n\nUNION\nSELECT poreject_id AS item_id, 2 AS item_type, 'REJ' AS action,\n poreject_date AS item_date,\n poreject_qty * -1 AS qty, 'qty',\n COALESCE(recv_purchcost, poitem_unitprice) AS unitprice, 'curr' AS unitprice_xtnumericrole,\n formatBoolYN(poreject_vohead_id=) AS f_tagged,\n AS action_qtdisplayrole,\n 0 AS qty_xttotalrole\nFROM poreject LEFT OUTER JOIN recv ON (recv_id=poreject_recv_id)\n LEFT OUTER JOIN poitem ON (poitem_id=poreject_poitem_id)\nWHERE ( (poreject_posted)\n AND (NOT poreject_invoiced)\n AND ((poreject_vohead_id IS NULL) OR (poreject_vohead_id=))\n AND (poreject_poitem_id=) );\n admin 2013-07-26 0 132 workOrderMaterial detail used by dspWoMaterialsByItem, dspWoMaterialsByWorkOrder Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: workOrderMaterial\n-- Name: detail\n-- Notes: used by dspWoMaterialsByItem, dspWoMaterialsByWorkOrder\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT womatl.*, formatWONumber(wo_id) AS wonumber, item_number,\n item_descrip1, item_descrip2,\n\n formatwooperseq(womatl_wooper_id) AS wooperseq,\n\n CASE WHEN (womatl_issuemethod = 'S') THEN \n WHEN (womatl_issuemethod = 'L') THEN \n WHEN (womatl_issuemethod = 'M') THEN \n ELSE \n END AS issuemethod,\n uom_name,\n noNeg(womatl_qtyreq - womatl_qtyiss) AS balance,\n\n formatDate(womatl_duedate) AS f_duedate,\n formatQty(womatl_qtyfxd) AS f_qtyfxd,\n formatQtyPer(womatl_qtyper) AS f_qtyper,\n formatPrcnt(womatl_scrap) AS f_scrap,\n formatQty(womatl_qtyreq) AS f_qtyreq,\n formatQty(womatl_qtyiss) AS f_qtyiss,\n formatQty(womatl_qtywipscrap) AS f_qtywipscrap,\n formatQty(noNeg(womatl_qtyreq - womatl_qtyiss)) AS f_balance,\n\n CASE WHEN (womatl_duedate <= CURRENT_DATE) THEN 'error' END AS womatl_duedate_qtforegroundrole,\n 'qty' AS womatl_qtyfxd_xtnumericrole,\n 'qtyper' AS womatl_qtyper_xtnumericrole,\n 'percent' AS womatl_scrap_xtnumericrole,\n 'qty' AS womatl_qtyreq_xtnumericrole,\n 'qty' AS womatl_qtyiss_xtnumericrole,\n 'qty' AS womatl_qtywipscrap_xtnumericrole,\n 'qty' AS balance_xtnumericrole,\n 0 AS womatl_qtyreq_xttotalrole,\n 0 AS womatl_qtyiss_xttotalrole,\n 0 AS womatl_qtywipscrap_xttotalrole,\n 0 AS balance_xttotalrole\nFROM wo JOIN womatl ON (womatl_wo_id=wo_id)\n JOIN uom ON (uom_id=womatl_uom_id)\n JOIN itemsite parentsite ON (parentsite.itemsite_id=wo_itemsite_id)\n JOIN itemsite componentsite ON (componentsite.itemsite_id=womatl_itemsite_id)\n\n JOIN item ON (item_id=parentsite.itemsite_item_id)\n\n JOIN item ON (item_id=componentsite.itemsite_item_id)\n\nWHERE (1=1)\n\n AND (componentsite.itemsite_item_id=)\n AND (wo_status <> 'C')\n\n\n AND (componentsite.itemsite_warehous_id=)\n\n\n AND (wo_id=)\n\n\nORDER BY wo_startdate, item_number\n\n\n \n ORDER BY wooperseq, item_number\n \n ORDER BY item_number\n \n\n;\n admin 2013-07-26 0 115 workOrderSchedule detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: workOrderSchedule\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT wo_id,\n CASE WHEN (wo_ordid IS NULL) THEN -1\n ELSE wo_ordid\n END AS orderid,\n wo.*, warehous_code, uom_name,\n item_number, (item_descrip1 || ' ' || item_descrip2) AS itemdescrip,\n item_descrip1, item_descrip2,\n formatQty(wo_qtyord) AS ordered,\n formatQty(wo_qtyrcv) AS received,\n formatDate(wo_startdate) AS startdate,\n formatDate(wo_duedate) AS duedate,\n formatWONumber(wo_id) AS wonumber,\n 'qty' AS wo_qtyord_xtnumericrole,\n 'qty' AS wo_qtyrcv_xtnumericrole,\n CASE WHEN ((wo_startdate<=CURRENT_DATE) AND (wo_status IN ('O','E','S','R'))) THEN 'error'\n END AS wo_startdate_qtforegroundrole,\n CASE WHEN (wo_duedate<=CURRENT_DATE) THEN 'error'\n END AS wo_duedate_qtforegroundrole,\n CASE WHEN (wo_duedate<=CURRENT_DATE) THEN 'Overdue'\n ELSE 'On Time'\n END AS condition,\n CASE WHEN (wo_duedate<=CURRENT_DATE) THEN 'error' END AS condition_qtforegroundrole\nFROM itemsite, whsinfo, item, uom, wo\n\n JOIN coitem ON ((coitem_order_id=wo_id)\n AND (coitem_order_type='W'))\n\nWHERE ( (wo_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n\n AND ( (wo_number::TEXT ~* )\n OR (item_number ~* )\n OR (item_descrip1 || item_descrip2 ~* ) )\n\n\n AND (coitem_status <> 'X')\n\n AND (coitem_status='C')\n\n\n AND (wo_startdate >= )\n\n\n AND (wo_startdate <= )\n\n\n AND (itemsite_warehous_id=)\n\n\n AND (itemsite_item_id=)\n\n\n AND (wo_number IN (SELECT wo_number\n FROM wo\n WHERE (wo_id=)))\n\n\n\n \n AND (wo_status=\n \n OR wo_status=\n \n \n )\n \n\n\n AND (wo_status IN ('R','I'))\n\n AND (wo_status<>'C')\n\n\n AND (wo_ordtype<>'W')\n\n\n AND (item_classcode_id=)\n\n\n AND (item_id IN (SELECT itemgrpitem_item_id\n FROM itemgrpitem\n WHERE (itemgrpitem_itemgrp_id=)))\n\n\n AND (itemsite_plancode_id=)\n\n\n AND (wo_id IN (SELECT wooper_wo_id\n FROM wooper\n WHERE (wooper_wrkcnt_id=)))\n\n\n AND (item_classcode_id IN (SELECT classcode_id\n FROM classcode\n WHERE (classcode_code ~ )))\n\n\n AND (item_id IN (SELECT itemgrpitem_item_id\n FROM itemgrpitem, itemgrp\n WHERE ( (itemgrpitem_itemgrp_id=itemgrp_id) AND (itemgrp_name ~ ) ) ))\n\n\n AND (itemsite_plancode_id IN (SELECT plancode_id\n FROM plancode\n WHERE (plancode_code ~ )))\n\n\n AND (wo_id IN (SELECT wooper_wo_id\n FROM wooper, wrkcnt\n WHERE ((wooper_wrkcnt_id=wrkcnt_id) AND (wrkcnt_code ~ ))))\n\n )\nORDER BY \n\n wo_startdate,\n\n wo_duedate,\n\n item_number,\n\n wo_number, wo_subnumber;\n admin 2013-07-26 0 \. -- -- Data for Name: metric; Type: TABLE DATA; Schema: public; Owner: admin -- COPY metric (metric_id, metric_name, metric_value, metric_module) FROM stdin; 22 FreightAccount 1 \N 23 DefaultARAccount 2 \N 44 DefaultAPAccount 3 \N 20 InvoiceCustomer t \N 21 InvoiceBilling 0 \N 51 DatabaseName! Schema Benchmark \N 70 InvoiceWatermark2 \N 72 InvoiceWatermark3 \N 73 InvoiceShowPrices3 102 \N 49 AccountingSystemImportPath C:/OpenMFG \N 50 AccountingSystemExportPath C:/OpenMFG \N 78 CreditMemoWatermark2 \N 80 CreditMemoWatermark3 \N 81 CreditMemoShowPrices3 116 \N 48 AccountingSystem Native \N 62 MaxLocationNameSize 10 \N 3 PostCountTagToDefault f \N 4 CountSlipAuditing B \N 14 AllowDiscounts t \N 15 AllowASAPShipSchedules t \N 16 CONumberGeneration A \N 17 QUNumberGeneration A \N 18 CMNumberGeneration A \N 26 DefaultPartialShipments t \N 27 DefaultBackOrders t \N 28 DefaultFreeFormShiptos t \N 29 SOCreditLimit 20000 \N 31 DefaultBalanceMethod B \N 32 BOLShipper t \N 33 BOLCustomer f \N 34 BOLTraffic f \N 35 BOLBilling f \N 36 BOLMisc 0 \N 55 remitto_address1 Accounts Receivable \N 60 remitto_zipcode 23100 \N 37 PONumberGeneration A \N 38 VoucherNumberGeneration A \N 39 PrNumberGeneration A \N 40 POAllowFFVendorAddresses t \N 43 DefaultPOShipVia UPS \N 53 CustListSerial 30 \N 8 AutoExplodeSO t \N 10 ExplodeSOEffective E \N 11 SOExplosionLevel M \N 84 AutoExplodeWO t \N 86 ExplodeWOEffective S \N 87 WOExplosionLevel M \N 12 PostMaterialVariances t \N 45 GLMainSize 4 \N 46 GLProfitSize 2 \N 47 GLSubaccountSize 2 \N 91 YearEndEquityAccount 84 \N 97 AllowInactiveBomItems f \N 7 DefaultWomatlIssueMethod M \N 9 WONumberGeneration A \N 103 RestrictCreditMemos f \N 104 AutoSelectForBilling t \N 105 AlwaysShowSaveAndAdd t \N 106 DisableSalesOrderPriceOverride f \N 107 AutoAllocateCreditMemos f \N 108 HideSOMiscCharge f \N 111 InvoiceDateSource shipdate \N 114 ShippingFormShowPrices0 t \N 115 DisallowReceiptExcessQty f \N 54 remitto_name Getting Started Inc \N 56 remitto_address2 Moving Forward Business Park \N 57 remitto_address3 12100 Let's Go \N 58 remitto_city Norfolk \N 59 remitto_state VA \N 61 remitto_phone 888-512-8040 \N 92 MandatoryGLEntryNotes t \N 25 DefaultShipViaId 13 \N 110 DefaultCustType 18 \N 24 DefaultShipFormId 12 \N 6 DefaultSoldItemsExclusive f \N 117 UseProjects t \N 118 AutoCreateProjectsForOrders f \N 95 ItemSiteChangeLog t \N 96 WarehouseChangeLog t \N 98 ItemChangeLog t \N 121 DefaultMSCalendar 47 \N 85 WorkOrderChangeLog t \N 99 POChangeLog t \N 100 VendorChangeLog t \N 101 CustomerChangeLog t \N 102 SalesOrderChangeLog t \N 30 SOCreditRate Not checked \N 64 InvoiceCopies 2 \N 66 InvoiceWatermark0 Customer \N 67 InvoiceShowPrices0 t \N 68 InvoiceWatermark1 Internal \N 69 InvoiceShowPrices1 t \N 65 CreditMemoCopies 2 \N 74 CreditMemoWatermark0 Customer \N 75 CreditMemoShowPrices0 t \N 76 CreditMemoWatermark1 Internal \N 77 CreditMemoShowPrices1 t \N 112 ShippingFormCopies 2 \N 113 ShippingFormWatermark0 Customer \N 122 ShippingFormWatermark1 Internal \N 123 ShippingFormShowPrices1 t \N 124 remitto_country United States \N 119 CurrencyExchangeSense 1 \N 125 CurrencyGainLossAccount 122 \N 126 GLSeriesDiscrepancyAccount 123 \N 127 UseEarliestAvailDateOnPOItem t \N 128 RequireStdCostForPOItem t \N 129 UpdatePriceLineEdit 2 \N 130 ShipmentNumberGeneration A \N 131 WarnIfReceiptQtyDiffers t \N 132 ReceiptQtyTolerancePct 10 \N 133 AllowManualGLAccountEntry t \N 134 DefaultTaxAuthority -1 \N 147 TransferOrderChangeLog f \N 148 EnableTOShipping t \N 150 MultiWhs f \N 151 BBOM f \N 152 Transforms f \N 153 Routings f \N 154 BufferMgt f \N 155 LotSerialControl f \N 156 Application PostBooks \N 157 TrackMachineOverhead G \N 158 RevControl f \N 159 TONumberGeneration M \N 160 DefaultPrintPOOnSave t \N 161 AutoFillPostOperationQty f \N 13 PostLaborVariances f \N 162 WOTCPostStyle Operations \N 1 InterfaceToGL t \N 163 JobItemCosDefault P \N 164 DefaultSalesRep 29 \N 165 DefaultTerms 42 \N 166 DefaultPrintSOOnSave t \N 167 UsePromiseDate t \N 168 EnableReturnAuth f \N 169 EnableSOReservations f \N 71 InvoiceShowPrices2 f \N 79 CreditMemoShowPrices2 f \N 170 EnableCustomerDeposits t \N 88 GLCompanySize 2 \N 89 GLFFProfitCenters f \N 90 GLFFSubaccounts f \N 109 EnableSOShipping f \N 2 DefaultEventFence 1 \N 52 DatabaseComments Quick Start DB \N 171 CCConfirmPreauth f \N 172 CCConfirmCharge f \N 173 CCConfirmChargePreauth f \N 174 CCConfirmCredit f \N 175 CCEnablePreauth f \N 176 CCEnableCharge f \N 177 CCAvsCheck W \N 178 CCTestResult P \N 180 RecurringInvoiceBuffer 7 \N 181 EmployeeChangeLog t \N 183 AllowAvgCostMethod f \N 184 AllowStdCostMethod t \N 186 AutoUpdateLocaleHasRun t \N 187 LegacyCashReceipts f \N 188 VerboseCommentList t \N 193 MultiCompanyFinancialConsolidation f \N 194 ManualForwardUpdate f \N 195 SetDefaultLocations f \N 196 KitComponentInheritCOS f \N 190 AutoCreditWarnLateCustomers t \N 197 DefaultAutoCreditWarnGraceDays 30 \N 185 AllowJobCostMethod t \N 199 EFTRoutingRegex ^\\d{9}$ \N 200 EFTAccountRegex ^\\d{4,17}$ \N 201 EFTFunction formatAchChecks \N 202 CRMAccountNumberGeneration M \N 205 StrictAddressCountry t \N 203 OpportunityChangeLog t \N 19 InvcNumberGeneration A \N 208 CreditTaxDiscount t \N 209 POCopies 0 \N 210 POWatermark0 Vendor Copy \N 211 NumberIssueResetIntervalDays 1 \N 212 InterfaceAPToGL t \N 213 InterfaceARToGL t \N 214 ACHEnabled f \N 218 UseJournals f \N 198 ACHSupported t \N 283 CSVAtlasDefaultDirMac \N 284 CSVAtlasDefaultDirWindows \N 285 XMLSuccessSuffix \N 286 XMLSuccessDir \N 287 ImportFailureTreatment \N \N 288 ImportFailureSuffix \N 289 ImportFailureDir \N 300 RegistrationKey 1GEHT-CTWEJ-ZGY8Z-MXJZK-ECVCQ \N 189 ServerVersion 4.1.0 \N 299 AutoVersionUpdate t \N 215 ReqInvRegVoucher t \N 216 ReqInvMiscVoucher t \N 217 RecurringVoucherBuffer 3 \N 116 HideApplyToBalance t \N 191 DefaultARIncidentStatus 1 \N 192 AutoCloseARIncident t \N 219 ShowQuotesAfterSO t \N 220 FirmSalesOrderPackingList t \N 221 CalculateFreight f \N 222 IncludePackageWeight f \N 223 EnableSOReservationsByLocation f \N 224 SOReservationLocationMethod 1 \N 225 soPriceEffective CurrentDate \N 226 IgnoreCustDisc f \N 227 DisallowMismatchClientVersion f \N 228 ForceLicenseLimit f \N 229 updateTickInterval 1 \N 230 AllowedUserLogins ActiveOnly \N 231 DisableAutoComplete f \N 290 ImportXMLCreateErrorFile f \N 233 IncidentsPublicPrivate t \N 234 IncidentPublicDefault t \N 204 DefaultAddressCountry \N 235 EnableDropShipments f \N 236 BillDropShip f \N 237 RequirePOTax f \N 238 CopyPRtoPOItem t \N 63 DatabaseName xTuple Quick Start DB \N 239 CCAccept f \N 240 CCTest f \N 241 CCValidDays 1 \N 242 CCCompany \N \N 243 CCServer \N 244 CCPort \N 245 CCUseProxyServer f \N 246 CCProxyServer \N 247 CCProxyPort \N 248 CCYPWinPathPEM \N 249 CCYPLinPathPEM \N 250 CCYPMacPathPEM \N 251 CCYPLinkShield f \N 252 CCYPLinkShieldMax 0 \N 253 CCEnableChargePreauth f \N 254 CCEnableCredit f \N 255 CCPrintReceipt f \N 256 CCRequireCVV f \N 257 CCCVVCheck X \N 258 CCCVVErrors \N \N 259 CCANVer 3.1 \N 260 CCANDelim \N 261 CCANEncap \N 262 CCANDuplicateWindow 0 \N 263 CCANMD5HashSetOnGateway f \N 264 CCANCurrency TRANS \N 265 CCANWellsFargoSecureSource f \N 266 CCANIgnoreSSLErrors f \N 267 CCEncKeyName \N 268 CCWinEncKey \N 269 CCLinEncKey \N 270 CCMacEncKey \N 271 XMLSuccessTreatment \N \N 272 XSLTLibrary f \N 273 XSLTDefaultDirLinux \N 274 XSLTDefaultDirMac \N 275 XSLTDefaultDirWindows \N 276 XSLTProcessorLinux \N 277 XSLTProcessorMac \N 278 XSLTProcessorWindows xsltproc \N 279 XMLDefaultDirLinux \N 280 XMLDefaultDirMac \N 281 XMLDefaultDirWindows \N 282 CSVAtlasDefaultDirLinux \N 291 XMLExportDefaultDirLinux \N 292 XMLExportDefaultDirMac \N 293 XMLExportDefaultDirWindows \N 294 AllowReceiptCostOverride f \N 295 CountAvgCostMethod STD \N 296 RecordPPVonReceipt f \N 297 EnableAsOfQOH t \N 298 AllowBOMItemDelete f \N 232 PrjLaborAndOverhead 136 \N 206 desktop/welcome http://welcome.xtuple.org/index.html?ServerVersion=4.0.1&Application=PostBooks \N 207 desktop/timer 900000 \N \. -- -- Data for Name: metricenc; Type: TABLE DATA; Schema: public; Owner: admin -- COPY metricenc (metricenc_id, metricenc_name, metricenc_value, metricenc_module) FROM stdin; \. -- -- Data for Name: mrghist; Type: TABLE DATA; Schema: public; Owner: admin -- COPY mrghist (mrghist_cntct_id, mrghist_table, mrghist_pkey_col, mrghist_pkey_id, mrghist_cntct_col) FROM stdin; \. -- -- Data for Name: mrgundo; Type: TABLE DATA; Schema: public; Owner: admin -- COPY mrgundo (mrgundo_base_schema, mrgundo_base_table, mrgundo_base_id, mrgundo_schema, mrgundo_table, mrgundo_pkey_col, mrgundo_pkey_id, mrgundo_col, mrgundo_value, mrgundo_type) FROM stdin; \. -- -- Data for Name: msg; Type: TABLE DATA; Schema: public; Owner: admin -- COPY msg (msg_id, msg_posted, msg_scheduled, msg_text, msg_expires, msg_username) FROM stdin; \. -- -- Data for Name: msguser; Type: TABLE DATA; Schema: public; Owner: admin -- COPY msguser (msguser_id, msguser_msg_id, msguser_viewed, msguser_username) FROM stdin; \. -- -- Data for Name: obsolete_tax; Type: TABLE DATA; Schema: public; Owner: admin -- COPY obsolete_tax (tax_id, tax_code, tax_descrip, tax_ratea, tax_sales_accnt_id, tax_freight, tax_cumulative, tax_rateb, tax_salesb_accnt_id, tax_ratec, tax_salesc_accnt_id) FROM stdin; 12 Sales Tax Sales Tax 0.0500 102 f f 0.0000 -1 0.0000 -1 \. -- -- Data for Name: ophead; Type: TABLE DATA; Schema: public; Owner: admin -- COPY ophead (ophead_id, ophead_name, ophead_crmacct_id, ophead_owner_username, ophead_opstage_id, ophead_opsource_id, ophead_optype_id, ophead_probability_prcnt, ophead_amount, ophead_target_date, ophead_actual_date, ophead_notes, ophead_curr_id, ophead_active, ophead_cntct_id, ophead_username, ophead_start_date, ophead_assigned_date, ophead_priority_id, ophead_number) FROM stdin; \. -- -- Data for Name: opsource; Type: TABLE DATA; Schema: public; Owner: admin -- COPY opsource (opsource_id, opsource_name, opsource_descrip) FROM stdin; \. -- -- Data for Name: opstage; Type: TABLE DATA; Schema: public; Owner: admin -- COPY opstage (opstage_id, opstage_name, opstage_descrip, opstage_order, opstage_opinactive) FROM stdin; \. -- -- Data for Name: optype; Type: TABLE DATA; Schema: public; Owner: admin -- COPY optype (optype_id, optype_name, optype_descrip) FROM stdin; \. -- -- Data for Name: orderseq; Type: TABLE DATA; Schema: public; Owner: admin -- COPY orderseq (orderseq_id, orderseq_name, orderseq_number, orderseq_table, orderseq_numcol, orderseq_seqiss) FROM stdin; 10 PlanNumber 10000 planord planord_number \N 15 ToNumber 100 tohead tohead_number \N 17 ContactNumber 3 cntct cntct_number \N 18 LsRegNumber 1 lsreg lsreg_number \N 19 AlarmNumber 1 alarm alarm_number \N 21 ACHBatch 1 checkhead checkhead_ach_batch \N 23 OpportunityNumber 1 ophead ophead_number \N 16 AddressNumber 4 addr addr_number {} 12 APMemoNumber 20000 apmemo apopen_docnumber \N 11 ARMemoNumber 70000 armemo aropen_docnumber \N 20 CashRcptNumber 10000 cashrcpt cashrcpt_number \N 6 PoNumber 20000 pohead pohead_number \N 7 VcNumber 30000 vohead vohead_number \N 8 PrNumber 10000 pr pr_number \N 2 SoNumber 50000 cohead cohead_number \N 3 QuNumber 40000 quhead quhead_number \N 4 CmNumber 60000 armemo aropen_docnumber \N 5 InvcNumber 70000 invchead invchead_invcnumber \N 1 WoNumber 20000 wo wo_number \N 13 IncidentNumber 10000 incdt incdt_number \N 22 CRMAccountNumber 0 crmacct crmacct_number \N \. -- -- Data for Name: pack; Type: TABLE DATA; Schema: public; Owner: admin -- COPY pack (pack_id, pack_head_id, pack_head_type, pack_shiphead_id, pack_printed) FROM stdin; \. -- -- Data for Name: payaropen; Type: TABLE DATA; Schema: public; Owner: admin -- COPY payaropen (payaropen_ccpay_id, payaropen_aropen_id, payaropen_amount, payaropen_curr_id) FROM stdin; \. -- -- Data for Name: payco; Type: TABLE DATA; Schema: public; Owner: admin -- COPY payco (payco_ccpay_id, payco_cohead_id, payco_amount, payco_curr_id) FROM stdin; \. -- -- Data for Name: period; Type: TABLE DATA; Schema: public; Owner: admin -- COPY period (period_id, period_start, period_end, period_closed, period_freeze, period_initial, period_name, period_yearperiod_id, period_quarter, period_number) FROM stdin; 52 2008-01-01 2008-01-31 f f t 2008 - Jan 3 1 1 53 2008-02-01 2008-02-29 f f f 2008 - Feb 3 1 2 54 2008-03-01 2008-03-31 f f f 2008 - Mar 3 1 3 55 2008-04-01 2008-04-30 f f f 2008 - Apr 3 2 4 56 2008-05-01 2008-05-31 f f f 2008 - May 3 2 5 57 2008-06-01 2008-06-30 f f f 2008 - Jun 3 2 6 58 2008-07-01 2008-07-31 f f f 2008 - Jul 3 3 7 59 2008-08-01 2008-08-31 f f f 2008 - Aug 3 3 8 60 2008-09-01 2008-09-30 f f f 2008 - Sep 3 3 9 61 2008-10-01 2008-10-31 f f f 2008 - Oct 3 4 10 62 2008-11-01 2008-11-30 f f f 2008 - Nov 3 4 11 63 2008-12-01 2008-12-31 f f f 2008 - Dec 3 4 12 64 2009-01-01 2009-01-31 f f f 2009 - Jan 4 1 1 65 2009-02-01 2009-02-28 f f f 2009 - Feb 4 1 2 66 2009-03-01 2009-03-31 f f f 2009 - Mar 4 1 3 67 2009-04-01 2009-04-30 f f f 2009 - Apr 4 2 4 68 2009-05-01 2009-05-31 f f f 2009 - May 4 2 5 69 2009-06-01 2009-06-30 f f f 2009 - Jun 4 2 6 70 2009-07-01 2009-07-31 f f f 2009 - Jul 4 3 7 71 2009-08-01 2009-08-31 f f f 2009 - Aug 4 3 8 72 2009-09-01 2009-09-30 f f f 2009 - Sep 4 3 9 73 2009-10-01 2009-10-31 f f f 2009 - Oct 4 4 10 74 2009-11-01 2009-11-30 f f f 2009 - Nov 4 4 11 75 2009-12-01 2009-12-31 f f f 2009 - Dec 4 4 12 76 2010-01-01 2010-01-31 f f f 2010 - Jan 6 1 1 77 2010-02-01 2010-02-28 f f f 2010 - Feb 6 1 2 78 2010-03-01 2010-03-31 f f f 2010 - Mar 6 1 3 79 2010-04-01 2010-04-30 f f f 2010 - Apr 6 2 4 80 2010-05-01 2010-05-31 f f f 2010 - May 6 2 5 81 2010-06-01 2010-06-30 f f f 2010 - Jun 6 2 6 82 2010-07-01 2010-07-31 f f f 2010 - Jul 6 3 7 83 2010-08-01 2010-08-31 f f f 2010 - Aug 6 3 8 84 2010-09-01 2010-09-30 f f f 2010 - Sep 6 3 9 85 2010-10-01 2010-10-31 f f f 2010 - Oct 6 4 10 86 2010-11-01 2010-11-30 f f f 2010 - Nov 6 4 11 87 2010-12-01 2010-12-31 f f f 2010 - Dec 6 4 12 88 2011-01-01 2011-01-31 f f f 2011 - Jan 7 1 1 89 2011-02-01 2011-02-28 f f f 2011 - Feb 7 1 2 90 2011-03-01 2011-03-31 f f f 2011 - Mar 7 1 3 91 2011-04-01 2011-04-30 f f f 2011 - Apr 7 2 4 92 2011-05-01 2011-05-31 f f f 2011 - May 7 2 5 93 2011-06-01 2011-06-30 f f f 2011 - Jun 7 2 6 94 2011-07-01 2011-07-31 f f f 2011 - Jul 7 3 7 95 2011-08-01 2011-08-31 f f f 2011 - Aug 7 3 8 96 2011-09-01 2011-09-30 f f f 2011 - Sep 7 3 9 97 2011-10-01 2011-10-31 f f f 2011 - Oct 7 4 10 98 2011-11-01 2011-11-30 f f f 2011 - Nov 7 4 11 99 2011-12-01 2011-12-31 f f f 2011 - Dec 7 4 12 100 2012-01-01 2012-01-31 f f f 2012 - Jan 8 1 1 101 2012-02-01 2012-02-29 f f f 2012 - Feb 8 1 2 102 2012-03-01 2012-03-31 f f f 2012 - Mar 8 1 3 103 2012-04-01 2012-04-30 f f f 2012 - Apr 8 2 4 104 2012-05-01 2012-05-31 f f f 2012 - May 8 2 5 105 2012-06-01 2012-06-30 f f f 2012 - Jun 8 2 6 106 2012-07-01 2012-07-31 f f f 2012 - Jul 8 3 7 107 2012-08-01 2012-08-31 f f f 2012 - Aug 8 3 8 108 2012-09-01 2012-09-30 f f f 2012 - Sep 8 3 9 109 2012-10-01 2012-10-31 f f f 2012 - Oct 8 4 10 110 2012-11-01 2012-11-30 f f f 2012 - Nov 8 4 11 111 2012-12-01 2012-12-31 f f f 2012 - Dec 8 4 12 112 2013-01-01 2013-01-31 f f f 2013 - Jan 9 1 1 113 2013-02-01 2013-02-28 f f f 2013 - Feb 9 1 2 114 2013-03-01 2013-03-31 f f f 2013 - Mar 9 1 3 115 2013-04-01 2013-04-30 f f f 2013 - Apr 9 2 4 116 2013-05-01 2013-05-31 f f f 2013 - May 9 2 5 117 2013-06-01 2013-06-30 f f f 2013 - Jun 9 2 6 118 2013-07-01 2013-07-31 f f f 2013 - Jul 9 3 7 119 2013-08-01 2013-08-31 f f f 2013 - Aug 9 3 8 120 2013-09-01 2013-09-30 f f f 2013 - Sep 9 3 9 121 2013-10-01 2013-10-31 f f f 2013 - Oct 9 4 10 122 2013-11-01 2013-11-30 f f f 2013 - Nov 9 4 11 123 2013-12-01 2013-12-31 f f f 2013 - Dec 9 4 12 \. -- -- Data for Name: pkgdep; Type: TABLE DATA; Schema: public; Owner: admin -- COPY pkgdep (pkgdep_id, pkgdep_pkghead_id, pkgdep_parent_pkghead_id) FROM stdin; \. -- -- Data for Name: pkghead; Type: TABLE DATA; Schema: public; Owner: admin -- COPY pkghead (pkghead_id, pkghead_name, pkghead_descrip, pkghead_version, pkghead_developer, pkghead_notes, pkghead_created, pkghead_updated, pkghead_indev) FROM stdin; 7 fixcountry xTuple package to fix non-standard countries 3.4.0 xTuple \n This package contains components to help fix addresses with non-standard countries.\n 2011-10-27 10:11:52.132321-04 2012-07-16 09:52:28.960876-04 f 6 te Time and Expense System 2.1.0 xTuple Time and Expense System add-on package for xTuple ERP.\n\n This file is part of the xtte package for xTuple ERP: PostBooks Edition,\n a free and open source Enterprise Resource Planning software suite,\n Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n It is licensed to you under the Common Public Attribution License\n version 1.0, the full text of which (including xTuple-specific Exhibits)\n is available at www.xtuple.com/CPAL. By using this software, you agree\n to be bound by its terms.\n 2010-10-26 14:15:18.464115-04 2012-10-08 17:35:58.577796-04 f 5 xtdesktop xTuple Desktop 3.8.2 xTuple \n xTuple Desktop navigational interface for the xTuple main window.\n \n This package is an extension for xTuple ERP: PostBooks Edition,\n a free and open source Enterprise Resource Planning software suite,\n Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n It is licensed to you under the Common Public Attribution License\n version 1.0, the full text of which (including xTuple-specific Exhibits)\n is available at www.xtuple.com/CPAL. By using this software, you agree\n to be bound by its terms.\n 2010-06-18 11:46:03.623626-04 2013-01-11 16:20:09.780597-05 f \. -- -- Data for Name: pkgitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY pkgitem (pkgitem_id, pkgitem_pkghead_id, pkgitem_type, pkgitem_item_id, pkgitem_name, pkgitem_descrip) FROM stdin; \. -- -- Data for Name: plancode; Type: TABLE DATA; Schema: public; Owner: admin -- COPY plancode (plancode_id, plancode_code, plancode_name, plancode_mpsexplosion, plancode_consumefcst, plancode_mrpexcp_resched, plancode_mrpexcp_delete) FROM stdin; 24 RM1 Raw Materials - 1 M f \N \N 25 AS1 Assemblies - 1 M f \N \N 26 FG1 Finished Product - 1 M f \N \N \. -- -- Data for Name: pohead; Type: TABLE DATA; Schema: public; Owner: admin -- COPY pohead (pohead_id, pohead_status, pohead_number, pohead_orderdate, pohead_vend_id, pohead_fob, pohead_shipvia, pohead_comments, pohead_freight, pohead_printed, pohead_terms_id, pohead_warehous_id, pohead_vendaddr_id, pohead_agent_username, pohead_curr_id, pohead_saved, pohead_taxzone_id, pohead_taxtype_id, pohead_dropship, pohead_vend_cntct_id, pohead_vend_cntct_honorific, pohead_vend_cntct_first_name, pohead_vend_cntct_middle, pohead_vend_cntct_last_name, pohead_vend_cntct_suffix, pohead_vend_cntct_phone, pohead_vend_cntct_title, pohead_vend_cntct_fax, pohead_vend_cntct_email, pohead_vendaddress1, pohead_vendaddress2, pohead_vendaddress3, pohead_vendcity, pohead_vendstate, pohead_vendzipcode, pohead_vendcountry, pohead_shipto_cntct_id, pohead_shipto_cntct_honorific, pohead_shipto_cntct_first_name, pohead_shipto_cntct_middle, pohead_shipto_cntct_last_name, pohead_shipto_cntct_suffix, pohead_shipto_cntct_phone, pohead_shipto_cntct_title, pohead_shipto_cntct_fax, pohead_shipto_cntct_email, pohead_shiptoaddress_id, pohead_shiptoaddress1, pohead_shiptoaddress2, pohead_shiptoaddress3, pohead_shiptocity, pohead_shiptostate, pohead_shiptozipcode, pohead_shiptocountry, pohead_cohead_id, pohead_released) FROM stdin; \. -- -- Data for Name: poitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY poitem (poitem_id, poitem_status, poitem_pohead_id, poitem_linenumber, poitem_duedate, poitem_itemsite_id, poitem_vend_item_descrip, poitem_vend_uom, poitem_invvenduomratio, poitem_qty_ordered, poitem_qty_received, poitem_qty_returned, poitem_qty_vouchered, poitem_unitprice, poitem_vend_item_number, poitem_comments, poitem_qty_toreceive, poitem_expcat_id, poitem_itemsrc_id, poitem_freight, poitem_freight_received, poitem_freight_vouchered, poitem_prj_id, poitem_stdcost, poitem_bom_rev_id, poitem_boo_rev_id, poitem_manuf_name, poitem_manuf_item_number, poitem_manuf_item_descrip, poitem_taxtype_id, poitem_tax_recoverable, poitem_rlsd_duedate, poitem_order_id, poitem_order_type) FROM stdin; \. -- -- Data for Name: poreject; Type: TABLE DATA; Schema: public; Owner: admin -- COPY poreject (poreject_id, poreject_date, poreject_ponumber, poreject_itemsite_id, poreject_vend_id, poreject_vend_item_number, poreject_vend_item_descrip, poreject_vend_uom, poreject_qty, poreject_posted, poreject_rjctcode_id, poreject_poitem_id, poreject_invoiced, poreject_vohead_id, poreject_agent_username, poreject_voitem_id, poreject_value, poreject_trans_username, poreject_recv_id) FROM stdin; \. -- -- Data for Name: potype; Type: TABLE DATA; Schema: public; Owner: admin -- COPY potype (potype_id, potype_name, potype_descrip) FROM stdin; \. -- -- Data for Name: pr; Type: TABLE DATA; Schema: public; Owner: admin -- COPY pr (pr_id, pr_number, pr_subnumber, pr_status, pr_order_type, pr_order_id, pr_poitem_id, pr_duedate, pr_itemsite_id, pr_qtyreq, pr_prj_id, pr_releasenote, pr_createdate) FROM stdin; \. -- -- Data for Name: prftcntr; Type: TABLE DATA; Schema: public; Owner: admin -- COPY prftcntr (prftcntr_id, prftcntr_number, prftcntr_descrip) FROM stdin; 1 01 Profit Center 01 \. -- -- Data for Name: priv; Type: TABLE DATA; Schema: public; Owner: admin -- COPY priv (priv_id, priv_module, priv_name, priv_descrip, priv_seq) FROM stdin; 485 System MaintainPreferencesSelf Can Maintain the preferences for their own user only. \N 486 System MaintainPreferencesOthers Can Maintain the preferences of other users. \N 306 Misc. MaintainShippingChargeTypes Can Add/Edit/Delete Shipping Charge Types \N 307 Misc. ViewShippingChargeTypes Can View Shipping Charge Types \N 269 Misc. MaintainExpenseCategories Can Add/Edit/Delete Expense Categories \N 270 Misc. ViewExpenseCategories Can View Expense Categories \N 362 Misc. MaintainSalesCategories Can Add/Edit/Delete Sales Categories \N 363 Misc. ViewSalesCategories Can View Sales Categories \N 446 CRM MaintainTitles Can Add/Edit/Delete Titles (Honorifics). \N 420 CRM MaintainAddresses Can Add/Edit/Delete Addresses \N 422 CRM MaintainCompetitorMasters Can Add/Edit/Delete Competitor Masters \N 426 CRM MaintainPartners Can Add/Edit/Delete Partner Masters \N 429 CRM MaintainWarrantyTerms Can Add/Edit/Delete Warranty Terms \N 447 CRM ViewTitles Can View Titles (Honorifics). \N 433 CRM ViewAddresses Can View Addresses \N 435 CRM ViewCommLog Can View the Communications Log \N 436 CRM ViewCompetitorMasters Can View Competitor Masters \N 441 CRM ViewPartners Can View Partner Masters \N 444 CRM ViewWarrantyTerms Can View Warranty Terms \N 448 CRM MaintainIncidentCategories Can Add/Edit/Delete Incident Categories \N 449 CRM MaintainIncidentPriorities Can Add/Edit/Delete Incident Priorities \N 450 CRM MaintainIncidentSeverities Can Add/Edit/Delete Incident Severities \N 451 CRM MaintainIncidentResolutions Can Add/Edit/Delete Incident Resolutions \N 390 Products PostStandardCosts Can Post Product Standard Costs \N 480 CRM MaintainOpportunitySources Can Add/Edit/Delete Opportunity Sources \N 481 CRM MaintainOpportunityStages Can Add/Edit/Delete Opportunity Stages \N 482 CRM MaintainOpportunityTypes Can Add/Edit/Delete Opportunity Types \N 5 Products MaintainBOMs Can Add/Edit/Delete Bills of Materials \N 4 Products ViewBOMs Can View Bills of Materials \N 103 Products EnterActualCosts Can Enter Free Form Actual Costs \N 104 Products UpdateActualCosts Can Update Actual Costs via P/O or P/D \N 105 Products PostActualCosts Can Post Actual Costs to Standard Costs \N 106 Products ViewCosts Can View Actual and Standard Costs \N 107 Products MaintainUserCostingElements Can Add/Edit/Delete User Costing Elements \N 1 Products ViewItemMasters Can View Item Masters \N 2 Products MaintainItemMasters Can Add/Edit/Delete Item Masters \N 134 Products MaintainItemGroups Can Add/Edit/Delete Item Groups \N 143 Products ViewClassCodes Can View Class Codes \N 144 Products MaintainClassCodes Can Add/Edit/Delete Class Codes \N 160 Products ViewItemOptions Can View Item Options \N 31 Products MaintainProductCategories Add/Edit/Delete Product Categories \N 161 Products DeleteCosts Can Delete Item Costs \N 162 Products CreateCosts Can Create User Costs \N 163 Products ViewProductCategories Can View Product Categories \N 316 Products MaintainUOMs Can Add/Edit/Delete Unit of Measures \N 317 Products ViewUOMs Can View Unit of Measures \N 349 Products DeleteItemMasters Can Delete Item Masters \N 10 Inventory ViewInventoryHistory Can View Inventory History \N 30 Inventory ViewWarehouses Can View Warehouses \N 29 Inventory MaintainWarehouses Can Add/Edit/Delete Warehouses \N 37 Inventory UpdateABCClass Can Run Update ABC Class Utility \N 42 Inventory FreezeInventory Can Freeze Inventory \N 84 Inventory EnterMiscCounts Can Enter Misc. Counts \N 82 Inventory IssueCountTags Can Issue Count Tags \N 83 Inventory EnterCountTags Can Enter Count Tags \N 85 Inventory MaintainLocations Can Add/Edit/Delete Warehouse Locations \N 86 Inventory ViewLocations Can View Warehouse Locations \N 90 Inventory ViewInventoryAvailability Can View Inventory Availability \N 116 Inventory CreateAdjustmentTrans Can Create an Adjustment Transaction \N 117 Inventory CreateScrapTrans Can Create a Scrap Transaction \N 118 Inventory CreateReceiptTrans Can Create a Misc. Receipt Transaction \N 14 Inventory MaintainItemSites Can Add/Edit/Delete Item Sites \N 15 Inventory ViewItemSites Can View Item Sites \N 128 Inventory PostCountSlips Can Post Count Slips \N 129 Inventory EnterCountSlips Can Create and Enter Count Slips \N 131 Inventory DeleteCountTags Delete Count Tags \N 130 Inventory ZeroCountTags Can Zero Uncounted Count Tags \N 132 Inventory ViewCountTags View Count Tags \N 133 Inventory PostCountTags Can Post Count Tags \N 147 Inventory PurgeCountSlips Can Purge Posted Count Slips \N 81 Inventory PurgeCountTags Cost Purge Posted Count Tags \N 148 Inventory ViewInventoryValue Can View Inventory Values \N 19 Inventory RelocateInventory Can Relocate Inventory \N 150 Inventory ViewQOH Can View QOH \N 151 Inventory UpdateCycleCountFreq Can Update an Item Site's Cycle Count Frequency \N 152 Inventory UpdateLeadTime Can Update an Item Site's Lead Time \N 154 Inventory SummarizeInventoryTransactions Can Summarized Inventory Transactions \N 153 Inventory ThawInventory Can Thaw Inventory \N 35 Inventory MaintainCostCategories Can Add/Edit/Delete Cost Categories \N 36 Inventory ViewCostCategories Can View Cost Categories \N 164 Inventory DeleteCountSlips Can Delete Count Slips \N 214 Inventory ViewShipping Can View Stock at Shipping \N 215 Inventory PrintBillsOfLading Can Print Bills of Lading \N 217 Inventory ShipOrders Can Ship Orders from Shipping \N 218 Inventory ReturnStockFromShipping Can Return Stock from Shipping \N 219 Inventory IssueStockToShipping Can Issue Stock to Shipping \N 220 Inventory PurgeShippingRecords Can Purge Shipping Records \N 223 Inventory ViewDestinations Can View Destinations \N 224 Inventory MaintainDestinations Can Add/Edit/Delete Destinations \N 225 Inventory EnterShippingInformation Can Enter Shipping Information \N 216 Inventory RecallOrders Can Recall Orders to Shipping \N 222 Inventory ViewCarriers Can View Shippers \N 221 Inventory MaintainCarriers Can Add/Edit/Delete Shippers \N 226 Inventory EnterReceipts Can Enter Receipts \N 227 Inventory EnterReturns Can Enter Returns \N 241 Inventory UpdateOUTLevels Can Update Order Up To Levels \N 238 Inventory UpdateReorderLevels Can Update Reorder Levels \N 255 Inventory MaintainPackingListBatch Can Modify Packing List Batch \N 256 Inventory ViewPackingListBatch Can View Packing List Batch \N 264 Inventory MaintainCharacteristics Can Add/Edit/Delete Characteristics \N 265 Inventory ViewCharacteristics Can View Characteristics \N 350 Inventory DeleteItemSites Can Delete Item Sites \N 351 Inventory CreateExpenseTrans Can Create an Expense Transaction \N 454 Inventory RecallInvoicedShipment Can recall shipments that have already been invoiced. \N 470 Inventory ViewItemAvailabilityWorkbench Can View Item Availability Workbench. \N 45 Purchase ViewVendors Can View Vendors \N 44 Purchase MaintainVendors Can Add/Edit/Delete Vendors \N 48 Purchase MaintainItemSources Can Add/Edit/Delete P/O Item Sources \N 49 Purchase ViewItemSources Can View P/O Item Sources \N 53 Purchase MaintainPurchaseOrders Can Add/Edit/Delete Purchase Orders \N 54 Purchase ViewPurchaseOrders Can View Orders \N 46 Purchase MaintainPlannerCodes Can Add/Edit/Delete Planner Codes \N 47 Purchase ViewPlannerCodes Can View Planner Codes \N 120 Purchase AssignItemsToPlannerCode Can Assign Items to a Planner Code \N 189 Purchase PrintPurchaseOrders Can Print Purchase Orders \N 204 Purchase MaintainRejectCodes Can Add/Edit/Delete Reject Codes \N 205 Purchase ViewRejectCodes Can View Reject Codes \N 207 Purchase ViewVendorPerformance Can View Vendor Performance \N 208 Purchase ViewCashRequirements Can View Cash Requirements \N 209 Purchase ViewPurchaseRequests Can View Purchase Requests \N 213 Purchase MaintainPurchaseRequests Can Add/Edit/Delete Purchase Requests \N 231 Purchase ViewReceiptsReturns View Receipts and Returns \N 244 Purchase ViewBuyCard Can View Buy Cards \N 245 Purchase ViewVendorAddresses Can View Vendor Addresses \N 246 Purchase MaintainVendorAddresses Can Add/Edit/Delete Vendor Addresses \N 249 Purchase MaintainVendorTypes Can Add/Edit/Delete Vendor Types \N 250 Purchase ViewVendorTypes Can View Vendor Types \N 353 Purchase ReschedulePurchaseOrders Can Reschedule Purchase Orders \N 354 Purchase ChangePurchaseOrderQty Can Change Purchase Order Item Quantities \N 368 Purchase MaintainUninvoicedReceipts Can Mark as invoiced and Correct Receiving on uninvoiced receipts \N 383 Purchase ViewUninvoicedReceipts User is allowed to View Uninvoiced Receivings. \N 452 Purchase MaintainPostedPurchaseOrders Can Edit Purchase Orders which have already been Posted \N 17 Manufacture ReturnWoMaterials Can Return Work Order Materials \N 16 Manufacture IssueWoMaterials Can Issue Work Order Materials \N 91 Manufacture MaintainWoMaterials Can Add/Edit/Delete Work Order Materials \N 27 Manufacture PostProduction Can Post Production \N 11 Manufacture ViewWorkOrders Can View Work Orders \N 93 Manufacture ViewWoMaterials Can View Work Order Materials \N 12 Manufacture MaintainWorkOrders Can Add/Edit/Delete Work Orders \N 13 Manufacture ExplodeWorkOrders Can Explode Work Orders \N 26 Manufacture ImplodeWorkOrders Can Implode Work Orders \N 75 Manufacture RescheduleWorkOrders Can Reschedule Work Orders \N 76 Manufacture ChangeWorkOrderQty Can Change Work Order Quantities \N 94 Manufacture CloseWorkOrders Can Close Work Orders \N 125 Manufacture PostMiscProduction Can Make Miscellaneous Production Postings \N 140 Manufacture PurgeWorkOrders Can Purge Closed Work Orders \N 173 Manufacture ViewMaterialVariances Can View W/O Material Variances \N 176 Manufacture PrintWorkOrderPaperWork Can Print Work Order Paper Work \N 177 Manufacture ReleaseWorkOrders Can Release Work Orders \N 178 Manufacture RecallWorkOrders Can Recall Work Orders \N 182 Manufacture ScrapWoMaterials \N \N 228 Manufacture DeleteWorkOrders Can Delete Open Work Orders \N 352 Manufacture ReprioritizeWorkOrders Can Reprioritize Work Orders \N 408 Manufacture ChangeNonPickItems Can change the Issue Items Not On Pick List flag on Post Production. \N 409 Manufacture ChangeReceiveInventory Can change the Receive Inventory List flag on Post Operations. \N 22 Sales MaintainCustomerMasters Can Add/Edit/Delete Customer Masters \N 23 Sales ViewCustomerMasters Can View Customer Masters \N 51 Sales ViewShipVias Can View Ship Via's \N 55 Sales ViewCustomerTypes Can View Customer Types \N 56 Sales MaintainCustomerTypes Can Add/Edit/Delete Customer Types \N 57 Sales ViewSalesReps Can View Sales Reps. \N 58 Sales MaintainSalesReps Can Add/Edit/Delete Sales Reps. \N 61 Sales ViewTerms Can View Terms \N 59 Sales MaintainTaxCodes Can Add/Edit/Delete Tax Codes \N 60 Sales ViewTaxCodes Can View Tax Codes \N 50 Sales MaintainShipVias Can Add/Edit/Delete Ship Via's \N 88 Sales MaintainShiptos Can Add/Edit/Delete Ship-Tos \N 89 Sales ViewShiptos Can View Ship-Tos \N 111 Sales OverridePrice Can Override Item Sales Prices \N 126 Sales MaintainSalesAccount Can Add/Edit/Delete Sales Account Assignments \N 127 Sales ViewSalesAccount Can View Sales Account Assignments \N 141 Sales MaintainSalesOrders Can Add/Edit/Delete Sales Orders \N 142 Sales ViewSalesOrders Can View Sales Orders \N 180 Sales MaintainPricingSchedules Can Add/Edit/Delete Pricing Schedules \N 181 Sales ViewPricingSchedules Can View Pricing Schedules \N 190 Sales SelectBilling Can Select an Order for Billing \N 192 Sales MaintainShippingForms Can Add/Edit/Delete Shipping Forms \N 193 Sales MaintainShippingZones Can Add/Edit/Delete Shipping Zones \N 194 Sales AssignPricingSchedules Can Assign Pricing Schedules \N 195 Sales CreateSales Can Create Sales \N 196 Sales UpdatePricingSchedules Can Update Pricing Schedules \N 197 Sales MaintainCreditMemos Can Add/Edit/Delete Unposted Credit Memos \N 198 Sales ViewCreditMemos Can View Unposted Credit Memos \N 199 Sales PrintCreditMemos Print Credit Memos \N 200 Sales PurgeCreditMemos Purge Credit Memos \N 201 Sales PurgeInvoices Purge Invoices \N 232 Sales MaintainQuotes Can Add/Edit/Delete Quotes \N 203 Sales ViewCommissions Can View Earned Commissions \N 233 Sales ViewQuotes Can View Quotes \N 70 Sales ViewCustomerPrices Can View Customer Type Prices \N 234 Sales ConvertQuotes Can Convert Quotes to Sales Orders \N 235 Sales PrintPackingLists \N \N 211 Sales ViewShippingZones Can View Shipping Zones \N 212 Sales ViewSalesHistory \N \N 239 Sales PrintQuotes Can Print Quotes \N 242 Sales OverrideSODate Can Override S/O Enter Dates \N 257 Sales MaintainCustomerGroups Can Add/Edit/Delete/Modify Customer Groups \N 258 Sales ViewCustomerGroups Can View Customer Groups \N 273 Sales MaintainListPrices Can Modify List Prices \N 274 Sales ViewListPrices Can View List Prices \N 281 Sales EditSalesHistory Can Edit Posted Sales History \N 336 Sales CreateSOForHoldCustomer Can Create an Sales Order for a Customer on Credit Hold \N 337 Sales CreateSOForWarnCustomer Can Create an Sales Order for a Customer on Credit Warning \N 346 Sales UpdateCustomerCreditStatus Can Update a Customer's Credit Status \N 347 Sales ArchiveSalesHistory Can Archive Sales History \N 348 Sales RestoreSalesHistory Can Restore Sales History \N 355 Sales AlterPackDate Can Alter a Sales Order Pack Date \N 385 Sales MaintainCustomerMastersCustomerType Users are allowed to edit the Customer Type for a customer. \N 386 Sales MaintainCustomerMastersCustomerTypeOnCreate Users are allowed to edit the Customer Type for a customer when creating a new customer. \N 389 Sales AllowSelectOrderEditing Users are allowed to edit some additional information on the Select Order for Billing screen. \N 393 Sales ShowMarginsOnSalesOrder Users will see the margins on the Sales Order and Quote Screens for that older. \N 459 Sales MaintainProspectMasters Can Add/Edit/Delete Prospect information. \N 460 Sales ViewProspectMasters Can View Prospect information. \N 179 Accounting MaintainChartOfAccounts Can Add/Edit/Delete Accounts in the Chart of Accounts \N 251 Accounting MaintainStandardJournals Can Add/Edit/Delete Standard Journals \N 252 Accounting ViewStandardJournals Can View Standard Journals \N 254 Accounting PostStandardJournals Can Post Standard Journals \N 260 Accounting MaintainVendorAccounts Can Add/Edit/Delete Vendor Account Assignments \N 261 Accounting ViewVendorAccounts Can View Vendor Account Assignments \N 262 Accounting MaintainCheckFormats Can Add/Edit/Delete A/P Check Formats \N 263 Accounting ViewCheckFormats Can View A/P Check Formats \N 266 Accounting MaintainStandardJournalGroups Can Add/Edit/Delete Standard Journal Groups \N 267 Accounting ViewStandardJournalGroups Can View Standard Journal Groups \N 268 Accounting PostStandardJournalGroups Can Post Standard Journal Groups \N 271 Accounting MaintainAccountingPeriods Can Add/Edit/Delete Accounting Periods \N 272 Accounting ViewAccountingPeriods Can View Accounting Periods \N 275 Accounting MaintainARMemos Can Add/Edit/Delete A/R Credit/Demo Memos \N 276 Accounting ViewARMemos Can View A/R Credit/Demo Memos \N 277 Accounting ApplyARMemos Can Apply A/R Credit/Demo Memos \N 278 Accounting MaintainMiscInvoices Can Add/Edit/Delete Misc. Invoices \N 279 Accounting ViewMiscInvoices Can View Misc. Invoices \N 280 Accounting PostMiscInvoices Can Post Misc. Invoices \N 294 Accounting PostJournalEntries Can Post Journal Entries \N 297 Accounting ViewGLTransactions Can View G/L Transactions \N 298 Accounting ViewTrialBalances Can View Trial Balances \N 302 Accounting MaintainCashReceipts Can Add/Edit/Delete Cash Receipts \N 303 Accounting ViewCashReceipts Can View Cash Receipts \N 305 Accounting PostCashReceipts Can Post Cash Receipts \N 369 Accounting MaintainPayments Can Maintain Payment and Check information. \N 370 Accounting ViewAPOpenItems Can view A/P Open Item infomation and related screens that use that information. \N 313 Accounting MaintainFinancialLayouts Can Add/Edit/Delete Financial Layouts \N 314 Accounting ViewFinancialLayouts Can View Financial Layouts \N 315 Accounting ViewFinancialReports Can View Financial Reports \N 371 Accounting PrintAPJournals Can view A/P Open Item infomation and related screens that use that information. \N 372 Accounting ViewAROpenItems Can view A/R Open Item infomation and related screens that use that information. \N 334 Accounting EditAPOpenItem Can Edit A/P Open Items \N 335 Accounting EditAROpenItem Can Edit A/R Open Items \N 373 Accounting PrintARJournals Can view A/R Open Item infomation and related screens that use that information. \N 374 Accounting MaintainAdjustmentTypes Can Add/Edit/Delete Adjustment Types \N 375 Accounting ViewAdjustmentTypes Can View Adjustment Types \N 376 Accounting MaintainBankAdjustments Can Add/Edit/Delete Bank Adjustments \N 377 Accounting ViewBankAdjustments Can View Bank Adjustments \N 378 Accounting PostBankAdjustments Can Post Bank Adjustments \N 356 Accounting MaintainAPMemos Can Add/Edit/Post A/P Memos \N 357 Accounting ViewAPMemos Can View A/P Memos \N 358 Accounting ApplyAPMemos Can Apply A/P Memos \N 379 Accounting MaintainBankRec Can Maintain Bank Reconciliations \N 380 Accounting ViewBankRec Can View Bank Reconciliation Information \N 512 Accounting ViewTaxZones Can view Tax Zones \N 382 Accounting MaintainReasonCodes User is allowed to maintain the Reason Codes. \N 395 Accounting CreateNewCurrency Create New Currencies \N 396 Accounting MaintainCurrencies Modify Existing Currencies \N 397 Accounting MaintainCurrencyRates Add and Modify Currency Exchange Rates \N 398 Accounting ViewCurrencyRates View Currency Exchange Rates \N 407 Accounting VoidPostedAPCheck Can void a posted A/P Check. \N 455 Accounting ChangeARInvcDistDate Can distribute an Invoice to the G/L using a date other than the Invoice Date \N 456 Accounting ChangePORecvPostDate Can post a Purchase Order Receipt to the G/L using a date other than the actual Receipt Date \N 457 Accounting ChangeSOMemoPostDate Can post a Sales Order Credit Memo to the G/L using a date other than the Credit Memo Document Date \N 458 Accounting ChangeVOPostDate Can post a Voucher to the G/L using a date other than the Voucher Distribution Date \N 461 Accounting MaintainTaxAuthorities Can Add/Edit/Delete Tax Authorities. \N 462 Accounting ViewTaxAuthorities Can View Tax Authorities. \N 463 Accounting MaintainTaxTypes Can Add/Edit/Delete Tax Types. \N 464 Accounting ViewTaxTypes Can View Tax Types. \N 467 Accounting OverrideTax Can manually override the system-selected Tax Code and/or tax % for individual Invoice line items. \N 468 Accounting MaintainTaxReconciliations Can Add/Edit/Delete unposted Tax Reconciliation records and associated data. \N 469 Accounting ViewTaxReconciliations Can View Tax Reconciliation records and associated data. \N 475 Accounting MaintainBudgets Can maintain budget information \N 476 Accounting ViewBudgets Can view budget information, not affecting FRE ability to view budgets. \N 100 System DispatchOtherEvents Can Dispatch Other User's Events \N 63 System ConfigureIM Configure I/M Module Parameters \N 64 System ConfigurePO Configure P/O Module Parameters \N 65 System ConfigurePD Configure P/D Module Parameters \N 73 System ConfigDatabaseInfo Can Configure the Database Information \N 121 System DeleteOwnEvents Can Delete Own Events \N 122 System DeleteOtherEvents Can Delete Other Users' Events \N 101 System ViewOtherEvents Can View Other User's Events \N 87 System ConfigureWO Configure S/O Module Parameters \N 123 System DispatchOwnEvents Can Dispatch Own Events \N 124 System ConfigureSR Configure S/R Module Parameters \N 68 System ConfigureSO Configure S/O Module Parameters \N 166 System MaintainImages Can Add/Edit/Delete Images \N 167 System MaintainReports Can Add/Edit/Delete Reports \N 168 System MaintainForms Can Add/Edit/Delete Forms \N 169 System MaintainCalendars Can Add/Edit/Delete Calendars \N 170 System MaintainLocales Can Add/Edit/Delete Locales \N 236 System ConfigureGL Can Configure the G/L Module \N 248 System ConfigureAR Can Configure the A/R Module \N 253 System MaintainBankAccounts Can Add/Edit/Delete Bank Accounts \N 3 System MaintainUsers Can Add/Edit/List Users \N 345 System MaintainCommentTypes Can Add/Edit/Delete Comment Types \N 359 System ConfigureAP Can Configure the A/P Module \N 388 System ConfigureCC User is allowed to alter the Credit Card Configuration. \N 394 System ConfigurePM Users will be able to view and edit the configuration options for the P/M Module. \N 399 System MaintainCustomCommands User can Create/Edit/View Custom commands \N 403 System MaintainDepartments Can create and modify Department definitions. \N 404 System ViewDepartments Can view Department definitions. \N 406 System ViewShifts Can view Shift definitions. \N 445 System ConfigureCRM Can change the CRM configuration module options. \N 453 System MaintainCountries Can Add/Edit/Delete Country information. \N 471 System FixSerial Can fix problems with serial values used to assign primary keys. \N 487 Accounting PostPayments Can Post Payments/Checks. \N 488 Accounting ViewDepositsRegister Can view the Deposits Register. \N 489 Accounting ViewInvoiceRegister Can view the Invoice Register. \N 490 System ConfigureImportExport Can Change or Create Settings For Importing and Exporting Data \N 491 System ImportXML Can Import Data From XML Sources \N 187 Accounting MaintainVouchers Can Add/Edit/Delete Vouchers \N 188 Accounting PostVouchers Can Post Vouchers \N 259 Accounting ViewVouchers Can View Vouchers \N 492 Accounting ProcessCreditCards Can Process Credit Card Transactions \N 493 System MaintainScripts Can Change or Create Scripts that are executed by windows when they are opened. \N 495 Inventory AlterTransactionDates Can set the Transaction Date written to the G/L and Inventory History tables for inventory transactions. \N 496 System MaintainEmployees Can Change or Create Employee records. \N 497 System ViewEmployees Can view Employee records. \N 498 System MaintainGroups Can Change or Create Settings For Groups \N 499 System MaintainEmployeeGroups Can Change or Create Employee Groups. \N 500 System ViewEmployeeGroups Can view Employee Group records. \N 494 System MaintainScreens Can Change or Create UI Forms that are executed by custom windows when they are opened. \N 501 Inventory MaintainExternalShipping Can Change or Create External Shipping Records. \N 502 System fixACL Can fix Access Control List problems at the database level. \N 504 System ViewPackages Can View installed Packages. \N 505 Accounting SynchronizeCompanies Can run company trial balance synchronization utility. \N 506 Inventory MaintainSiteTypes Can Change or Create Settings For Site Types \N 507 Inventory ViewSiteTypes Can View Settings For Site Types \N 62 Accounting MaintainTerms Can Add/Edit/Delete Terms \N 191 Accounting PrintInvoices Can Print Invoices \N 202 Accounting PostARDocuments Can Post Invoices and Credit Memos \N 508 Products MaintainFreightClasses Can Add/Edit/Delete Freight Classes \N 509 Products ViewFreightClasses Can View Freight Classes \N 510 Sales FirmSalesOrder Can Firm a Sales Order line item to prevent editing \N 511 CRM EditOwner Can Edit Owner in CRM documents \N 513 Accounting MaintainTaxZones Can Add/Edit/Delete Tax Zones \N 514 Accounting ViewTaxClasses Can view Tax Classes \N 515 Accounting MaintainTaxClasses Can Add/Edit/Delete Tax Classes \N 517 System EditOwnComments User is allowed to edit comments they have entered that are of an editable comment type. \N 518 System EditOthersComments User is allowed to edit iany comments entered that are of an editable comment type. \N 465 Accounting MaintainTaxAssignments Can Add/Edit/Delete Tax Assignments \N 466 Accounting ViewTaxAssignments Can View Tax Assignments \N 519 System MaintainStates User is allowed to edit the list of States and Provinces \N 520 System MaintainMetaSQL User is allowed to edit MetaSQL statements with the MetaSQL editor. \N 521 System ViewMetaSQL User is allowed to view MetaSQL statements with the MetaSQL editor. \N 522 System ExecuteMetaSQL User is allowed to execute MetaSQL statements with the MetaSQL editor that change the database. \N 137 Purchase ReleasePurchaseOrders Can Release Purchase Orders \N 523 Sys ConfigureEncryption Allowed to view and change the Encryption Key File \N 524 System ExportXML Can Export XML Files \N 543 Custom \N Auto Generated Custom Priv. \N 599 Accounting DeletePostedJournals Can delete posted Standard Journals and Journal Entries \N 600 Accounting EditPostedJournals Can edit posted Journal Entries \N 601 Accounting ViewJournals Can view Journals \N 602 Accounting PostJournals Can post Journals \N 614 CRM MergeContacts Can use Contact Merge utility \N 615 System MaintainTranslations User is allowed to maintain/download translations to their local computer. \N 616 System MaintainDictionaries User is allowed to maintain/download spell check dictionaries to their local computer. \N 431 CRM ReassignToDoItems Can Reassign ToDoItems to other people \N 416 CRM CloseAllIncidents Can Close all Incidents after confirming that it has been satisfactorily resolved \N 626 CRM ClosePersonalIncidents Can Incidents when Owner or Assigned after confirming that it has been resolved \N 425 CRM MaintainAllToDoItems Can Add/Edit/Delete all ToDoItems 0 423 CRM MaintainAllContacts Can Add/Edit/Delete all Contacts 0 419 CRM MaintainAllCRMAccounts Can Add/Edit/Delete all CRM Accounts 0 483 CRM MaintainAllOpportunities Can Add/Edit/Delete all Opportunities 0 424 CRM MaintainAllIncidents Can Add/Edit/Delete all Incidents 0 392 CRM MaintainAllProjects Can Add/Edit/Delete all Projects 0 440 CRM ViewAllToDoItems Can View all ToDoItems 1 437 CRM ViewAllContacts Can View all Contacts 1 432 CRM ViewAllCRMAccounts Can View all CRM Accounts 1 484 CRM ViewAllOpportunities Can View all Opportunities 1 439 CRM ViewAllIncidents Can View all Incidents 1 391 CRM ViewAllProjects Can View all Projects 1 427 CRM MaintainPersonalToDoItems Can Add/Edit/Delete ToDoItems when Owner or Assigned 2 618 CRM MaintainPersonalContacts Can Add/Edit/Delete Contacts when Owner or Assigned 2 620 CRM MaintainPersonalCRMAccounts Can Add/Edit/Delete CRM Accounts when Owner or Assigned 2 622 CRM MaintainPersonalOpportunities Can Add/Edit/Delete Opportunities when Owner or Assigned 2 624 CRM MaintainPersonalIncidents Can Add/Edit/Delete Incidents when Owner or Assigned 2 628 CRM MaintainPersonalProjects Can Add/Edit/Delete Projects when Owner or Assigned 2 442 CRM ViewPersonalToDoItems Can View ToDoItems when Owner or Assigned 4 617 CRM ViewPersonalContacts Can View Contacts when Owner or Assigned 4 619 CRM ViewPersonalCRMAccounts Can View CRM Accounts when Owner or Assigned 4 621 CRM ViewPersonalOpportunities Can View Opportunities when Owner or Assigned 4 623 CRM ViewPersonalIncidents Can View Incidents when Owner or Assigned 4 625 CRM ViewPersonalIncidentHistory Can View Incident History when Owner or Assigned 4 627 CRM ViewPersonalProjects Can View Projects when Owner or Assigned 4 629 Accounting VoidPostedVouchers Can void posted A/P Vouchers. \N 630 Accounting VoidPostedARCreditMemos Can void posted A/R Credit Memos. \N 631 Accounting VoidPostedInvoices Can void posted A/R Invoices. \N 516 Accounting VoidPostedCashReceipts Can void posted A/R Cash Receipts. \N 632 Accounting MaintainTaxRegistrations Can Add/Edit/Delete Tax Registrations. \N 633 Accounting ViewTaxRegistrations Can View Tax Registrations. \N 634 Accounting PostFrozenPeriod Can Post into frozen Accounting Period \N 639 Sales MaintainSaleTypes Can Add/Edit/Delete Sale Types. \N 640 Sales ViewSaleTypes Can View Sale Types. \N 643 Sales ConvertQuotesInvoice Can Convert Quote to Invoice. \N 644 System MaintainRegistrationKey Can Configure the Registration Key. \N \. -- -- Data for Name: prj; Type: TABLE DATA; Schema: public; Owner: admin -- COPY prj (prj_id, prj_number, prj_name, prj_descrip, prj_status, prj_so, prj_wo, prj_po, prj_owner_username, prj_start_date, prj_due_date, prj_assigned_date, prj_completed_date, prj_username, prj_recurring_prj_id, prj_crmacct_id, prj_cntct_id) FROM stdin; \. -- -- Data for Name: prjtask; Type: TABLE DATA; Schema: public; Owner: admin -- COPY prjtask (prjtask_id, prjtask_number, prjtask_name, prjtask_descrip, prjtask_prj_id, prjtask_anyuser, prjtask_status, prjtask_hours_budget, prjtask_hours_actual, prjtask_exp_budget, prjtask_exp_actual, prjtask_owner_username, prjtask_start_date, prjtask_due_date, prjtask_assigned_date, prjtask_completed_date, prjtask_username) FROM stdin; \. -- -- Data for Name: prjtaskuser; Type: TABLE DATA; Schema: public; Owner: admin -- COPY prjtaskuser (prjtaskuser_id, prjtaskuser_prjtask_id, prjtaskuser_username) FROM stdin; \. -- -- Data for Name: prodcat; Type: TABLE DATA; Schema: public; Owner: admin -- COPY prodcat (prodcat_id, prodcat_code, prodcat_descrip) FROM stdin; 28 STANDARD Standard \. -- -- Data for Name: prospect; Type: TABLE DATA; Schema: public; Owner: admin -- COPY prospect (prospect_id, prospect_active, prospect_number, prospect_name, prospect_cntct_id, prospect_comments, prospect_created, prospect_salesrep_id, prospect_warehous_id, prospect_taxzone_id) FROM stdin; \. -- -- Data for Name: qryhead; Type: TABLE DATA; Schema: public; Owner: admin -- COPY qryhead (qryhead_id, qryhead_name, qryhead_descrip, qryhead_notes, qryhead_username, qryhead_updated) FROM stdin; \. -- -- Data for Name: qryitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY qryitem (qryitem_id, qryitem_qryhead_id, qryitem_name, qryitem_order, qryitem_src, qryitem_group, qryitem_detail, qryitem_notes, qryitem_username, qryitem_updated) FROM stdin; \. -- -- Data for Name: quhead; Type: TABLE DATA; Schema: public; Owner: admin -- COPY quhead (quhead_id, quhead_number, quhead_cust_id, quhead_quotedate, quhead_shipto_id, quhead_shiptoname, quhead_shiptoaddress1, quhead_shiptoaddress2, quhead_shiptoaddress3, quhead_shiptocity, quhead_shiptostate, quhead_shiptozipcode, quhead_shiptophone, quhead_salesrep_id, quhead_terms_id, quhead_freight, quhead_ordercomments, quhead_shipcomments, quhead_billtoname, quhead_billtoaddress1, quhead_billtoaddress2, quhead_billtoaddress3, quhead_billtocity, quhead_billtostate, quhead_billtozip, quhead_commission, quhead_custponumber, quhead_fob, quhead_shipvia, quhead_warehous_id, quhead_packdate, quhead_prj_id, quhead_misc, quhead_misc_accnt_id, quhead_misc_descrip, quhead_billtocountry, quhead_shiptocountry, quhead_curr_id, quhead_imported, quhead_expire, quhead_calcfreight, quhead_shipto_cntct_id, quhead_shipto_cntct_honorific, quhead_shipto_cntct_first_name, quhead_shipto_cntct_middle, quhead_shipto_cntct_last_name, quhead_shipto_cntct_suffix, quhead_shipto_cntct_phone, quhead_shipto_cntct_title, quhead_shipto_cntct_fax, quhead_shipto_cntct_email, quhead_billto_cntct_id, quhead_billto_cntct_honorific, quhead_billto_cntct_first_name, quhead_billto_cntct_middle, quhead_billto_cntct_last_name, quhead_billto_cntct_suffix, quhead_billto_cntct_phone, quhead_billto_cntct_title, quhead_billto_cntct_fax, quhead_billto_cntct_email, quhead_taxzone_id, quhead_taxtype_id, quhead_ophead_id, quhead_status, quhead_saletype_id, quhead_shipzone_id) FROM stdin; \. -- -- Data for Name: quitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY quitem (quitem_id, quitem_quhead_id, quitem_linenumber, quitem_itemsite_id, quitem_scheddate, quitem_qtyord, quitem_unitcost, quitem_price, quitem_custprice, quitem_memo, quitem_custpn, quitem_createorder, quitem_order_warehous_id, quitem_item_id, quitem_prcost, quitem_imported, quitem_qty_uom_id, quitem_qty_invuomratio, quitem_price_uom_id, quitem_price_invuomratio, quitem_promdate, quitem_taxtype_id, quitem_dropship, quitem_itemsrc_id, quitem_pricemode) FROM stdin; \. -- -- Data for Name: rcalitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY rcalitem (rcalitem_id, rcalitem_calhead_id, rcalitem_offsettype, rcalitem_offsetcount, rcalitem_periodtype, rcalitem_periodcount, rcalitem_name) FROM stdin; 135 47 W 0 W 1 W1 136 47 W 1 W 1 W2 137 47 W 2 W 1 W3 138 47 W 3 W 1 W4 139 47 W 4 W 1 W5 140 47 W 5 W 1 W6 141 47 W 6 W 1 W7 142 47 W 7 W 1 W8 143 48 M -1 M 1 1M 144 48 M -2 M 1 2M 145 48 M -3 M 1 3M \. -- -- Data for Name: recur; Type: TABLE DATA; Schema: public; Owner: admin -- COPY recur (recur_id, recur_parent_id, recur_parent_type, recur_period, recur_freq, recur_start, recur_end, recur_max, recur_data) FROM stdin; \. -- -- Data for Name: recurtype; Type: TABLE DATA; Schema: public; Owner: admin -- COPY recurtype (recurtype_id, recurtype_type, recurtype_table, recurtype_donecheck, recurtype_schedcol, recurtype_limit, recurtype_copyfunc, recurtype_copyargs, recurtype_delfunc) FROM stdin; 4 I invchead invchead_posted invchead_invcdate \N copyinvoice {integer,date} deleteinvoice 3 J prj (prj_completed_date IS NOT NULL OR prj_status = 'C') prj_due_date \N copyprj {int,date} \N 5 V vohead vohead_posted vohead_docdate \N copyvoucher {integer,date} \N 2 INCDT incdt incdt_status IN ('R', 'L') incdt_timestamp \N copyincdt {int,timestamp} deleteincident 1 TODO todoitem todoitem_completed_date IS NOT NULL todoitem_due_date checkprivilege('MaintainAllToDoItems') OR (checkprivilege('MaintainPersonalToDoItems') AND CURRENT_USER IN (todoitem_owner_username, todoitem_username)) copytodoitem {int,date,NULL} \N \. -- -- Data for Name: recv; Type: TABLE DATA; Schema: public; Owner: admin -- COPY recv (recv_id, recv_order_type, recv_order_number, recv_orderitem_id, recv_agent_username, recv_itemsite_id, recv_vend_id, recv_vend_item_number, recv_vend_item_descrip, recv_vend_uom, recv_purchcost, recv_purchcost_curr_id, recv_duedate, recv_qty, recv_recvcost, recv_recvcost_curr_id, recv_freight, recv_freight_curr_id, recv_date, recv_value, recv_posted, recv_invoiced, recv_vohead_id, recv_voitem_id, recv_trans_usr_name, recv_notes, recv_gldistdate, recv_splitfrom_id, recv_rlsd_duedate) FROM stdin; \. -- -- Data for Name: report; Type: TABLE DATA; Schema: public; Owner: admin -- COPY report (report_id, report_name, report_sys, report_source, report_descrip, report_grade, report_loaddate) FROM stdin; 452 BacklogByParameterList \N \n\n Backlog By Parameter List\n BacklogByParameterList\n \n \n \n \n \n \n \n \n \n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT CASE WHEN (checkPrivilege('ViewCustomerPrices') \n AND isMultiCurr()) THEN\n text('Amount(base)')\n WHEN (checkPrivilege('ViewCustomerPrices')) THEN\n text('Amount')\n ELSE\n text('')\n END\n AS lbl_baseamount,\n CASE WHEN (checkPrivilege('ViewCustomerPrices') \n AND isMultiCurr()) THEN\n text('Amount(foreign)')\n ELSE\n text('')\n END\n AS lbl_foreignamount;\n \n \n detail\n SELECT cohead_number, coitem_linenumber, cust_name,\n formatDate(cohead_orderdate) AS f_orderdate,\n formatDate(coitem_scheddate) AS f_scheddate,\n item_number, uom_name,\n item_descrip1, item_descrip2,\n formatQty(coitem_qtyord) AS f_qtyord,\n formatQty(coitem_qtyshipped) AS f_qtyship,\n formatQty(noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned)) AS f_balance, \n CASE WHEN (checkPrivilege('ViewCustomerPrices')) THEN\nformatMoney(round((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio)\n * (currtobase(cohead_curr_id,coitem_price,cohead_orderdate) / coitem_price_invuomratio),2))\n ELSE\n text('')\n END\n AS f_ammount,\n CASE WHEN (checkPrivilege('ViewCustomerPrices') AND isMultiCurr()) THEN\nformatMoney(round((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio)\n * (coitem_price / coitem_price_invuomratio),2))\n ELSE\n text('')\n END\n AS foreign_ammount,\nround((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio)\n * (currtobase(cohead_curr_id,coitem_price,cohead_orderdate) / coitem_price_invuomratio),2) AS backlog \n FROM cohead, coitem, itemsite, item, cust, uom\n WHERE ((coitem_cohead_id=cohead_id)\n AND (cohead_cust_id=cust_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (coitem_status='O')\n <? if exists("cohead_id") ?>\n AND (coitem_cohead_id=<? value("cohead_id") ?>)\n <? endif ?>\n <? if exists("startDate") ?>\n AND (cohead_orderdate >= <? value("startDate") ?>)\n <? endif ?>\n <? if exists("endDate") ?>\n AND (cohead_orderdate <= <? value("endDate") ?>)\n <? endif ?>\n <? if exists("startDateSched") ?>\n AND (coitem_scheddate >= <? value("startDateSched") ?>)\n <? endif ?>\n <? if exists("endDateSched") ?>\n AND (coitem_scheddate >= <? value("endDateSched") ?>)\n <? endif ?>\n <? if exists("salesrep_id") ?>\n AND (cohead_salesrep_id=<? value("salesrep_id") ?>)\n <? endif ?>\n <? if exists("shipto_id") ?>\n AND (cohead_shipto_id=<? value("shipto_id") ?>)\n <? endif ?>\n <? if exists("cust_id") ?>\n AND (cohead_cust_id=<? value("cust_id") ?>)\n <? endif ?>\n <? if exists("custtype_id") ?>\n AND (cust_custtype_id=<? value("custtype_id") ?>)\n <? endif ?>\n <? if exists("custtype_pattern") ?>\n AND (cust_custtype_id IN (SELECT DISTINCT custtype_id\n FROM custtype\n WHERE (custtype_code ~ <? value("custtype_pattern") ?>)))\n <? endif ?>\n <? if exists("custgrp") ?>\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem))\n <? endif ?>\n <? if exists("custgrp_id") ?>\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem\n WHERE (custgrpitem_custgrp_id=<? value("custgrp_id") ?>)))\n <? endif ?>\n <? if exists("custgrp_pattern") ?>\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrp, custgrpitem\n WHERE ( (custgrpitem_custgrp_id=custgrp_id)\n AND (custgrp_name ~ <? value("custgrp_pattern") ?>) )) )\n <? endif ?>\n\n <? if exists("item_id") ?>\n AND (itemsite_item_id=<? value("item_id") ?>)\n <? endif ?>\n <? if exists("prodcat_id") ?>\n AND (item_prodcat_id=<? value("prodcat_id") ?>)\n <? endif ?>\n <? if exists("prodcat_pattern") ?>\n AND (item_prodcat_id IN (SELECT DISTINCT prodcat_id\n FROM prodcat\n WHERE (prodcat_code ~ <? value("prodcat_pattern") ?>)))\n <? endif ?>\n\n <? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n <? endif ?>\n)\nORDER BY coitem_scheddate, cohead_number, coitem_linenumber;\n \n \n total\n SELECT now()\n WHERE 't' =\nCASE WHEN (checkPrivilege('ViewCustomerPrices') \n 't'\nELSE\n 'f'\nEND\n \n \n 226\n \n \n \n \n \n 660\n 185\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_baseamount\n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n 660\n 200\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_foreignamount\n \n \n \n \n \n \n \n \n \n \n \n \n \n 5\n 28\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n \n \n \n \n \n \n \n 660\n 0\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_baseamount\n \n \n \n \n 660\n 15\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_foreignamount\n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 52\n \n \n 305\n 30\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 65\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n coitem_linenumber\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 305\n 15\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 507\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyship\n \n \n \n \n 671\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n foreign_ammount\n \n \n \n \n 305\n 0\n 140\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 670\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ammount\n \n \n \n \n 450\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n \n 225\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_orderdate\n \n \n \n \n 507\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyord\n \n \n \n \n 225\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_scheddate\n \n \n \n \n 112\n 0\n 110\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_name\n \n \n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_balance\n \n \n \n \n 5\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cohead_number\n \n \n \n
\n
\n totals\n \n \n total\n \n 18\n \n \n \n 670\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n backlog\n \n money\n \n \n \n
\n \n 18\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2011-02-16 10:09:03.839762 240 BankAccountsMasterList \N \n\n Bank Accounts Master List\n BankAccountsMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT bankaccnt_id,\n bankaccnt_name AS f_name,\n bankaccnt_descrip AS f_descrip,\n CASE WHEN (bankaccnt_type='K') THEN text('Checking')\n WHEN (bankaccnt_type='C') THEN text('Cash')\n WHEN (bankaccnt_type='R') THEN text('Credit Card')\n ELSE text('?')\n END AS f_type,\n formatBoolYN(bankaccnt_ap) AS f_ap,\n formatBoolYN(bankaccnt_ar) AS f_ar\n FROM bankaccnt\nORDER BY bankaccnt_name;\n \n \n 77\n \n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n \n 7\n \n \n 22\n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 495\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_type\n \n \n \n \n 95\n 0\n 395\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_descrip\n \n \n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ap\n \n \n \n \n 10\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_name\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ar\n \n \n \n
\n \n 17\n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 292 BankAdjustmentEditList \N \n\n Bank Adjustment Edit List\n BankAdjustmentEditList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT bankadj_id, (bankaccnt_name || '-' || bankaccnt_descrip) AS f_bank,\n bankadjtype_name, formatDate(bankadj_date) AS f_date, bankadj_docnumber,\n formatMoney(bankadj_amount) AS f_amount\n FROM bankadj LEFT OUTER JOIN bankaccnt ON (bankadj_bankaccnt_id=bankaccnt_id)\n LEFT OUTER JOIN bankadjtype ON (bankadj_bankadjtype_id=bankadjtype_id)\n WHERE ( (NOT bankadj_posted)\n AND (bankadj_bankaccnt_id=<? value("bankaccnt_id") ?>) );\n \n \n 121\n \n 5\n 115\n 745\n 115\n 2\n \n \n \n \n \n \n \n \n \n \n 9\n \n \n 21\n \n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 18\n \n \n 5\n 0\n 155\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_bank\n \n \n \n \n 165\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n bankadjtype_name\n \n \n \n \n 340\n 0\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n bankadj_docnumber\n \n \n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_amount\n \n \n \n \n 250\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_date\n \n \n \n
\n \n 18\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 29 TimePhasedUsageStatisticsByItem \N \n\n Time Phased Usage Statistics By Item\n TimePhasedUsageStatisticsByItem\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number, item_descrip1, item_descrip2,\n CASE WHEN (%2=-1) THEN 'All Warehouses'\n ELSE ( SELECT warehous_code\n FROM warehous\n WHERE (warehous_id=%2) )\n END AS warehouse\nFROM item\nWHERE (item_id=%1);\n \n \n detail\n SELECT findPeriodStart(rcalitem_id) AS pstart,\n findPeriodEnd(rcalitem_id) AS pend,\n (formatDate(findPeriodStart(rcalitem_id)) || '-' || formatDate(findPeriodEnd(rcalitem_id))) AS period,\n warehous_code,\n formatQty(summTransR(itemsite_id, rcalitem_id)) AS received,\n formatQty(summTransI(itemsite_id, rcalitem_id)) AS issued,\n formatQty(summTransS(itemsite_id, rcalitem_id)) AS sold,\n formatQty(summTransC(itemsite_id, rcalitem_id)) AS scrap,\n formatQty(summTransA(itemsite_id, rcalitem_id)) AS adjustments\n FROM rcalitem, itemsite, warehous\n WHERE ((rcalitem_id in (%4))\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_item_id=%1)\n AND ((%2=-1) OR (itemsite_warehous_id=%2)) )\n UNION\nSELECT findPeriodStart(acalitem_id) AS pstart,\n findPeriodEnd(acalitem_id) AS pend,\n (formatDate(findPeriodStart(acalitem_id)) || '-' || formatDate(findPeriodEnd(acalitem_id))) AS period,\n warehous_code,\n formatQty(summTransR(itemsite_id, acalitem_id)) AS received,\n formatQty(summTransI(itemsite_id, acalitem_id)) AS issued,\n formatQty(summTransS(itemsite_id, acalitem_id)) AS sold,\n formatQty(summTransC(itemsite_id, acalitem_id)) AS scrap,\n formatQty(summTransA(itemsite_id, acalitem_id)) AS adjustments\n FROM acalitem, itemsite, warehous\n WHERE ((acalitem_id IN (%4))\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_item_id=%1)\n AND ((%2=-1) OR (itemsite_warehous_id=%2)) )\nORDER BY pstart, warehous_code;\n \n \n 221\n \n \n \n \n \n \n 140\n 140\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n 140\n 120\n 385\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n 5\n 215\n 740\n 215\n 2\n \n \n \n \n \n \n 140\n 100\n 385\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n \n \n 140\n 80\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n \n \n 5\n 15\n 740\n 15\n 2\n \n \n \n \n
\n detail\n \n detail\n pstart\n \n 6\n \n \n 10\n 5\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n period\n \n \n \n \n \n \n detail\n \n 16\n \n \n 490\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n sold\n \n \n \n \n 575\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n scrap\n \n \n \n \n 405\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n issued\n \n \n \n \n 270\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 660\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n adjustments\n \n \n \n \n 320\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n received\n \n \n \n
\n \n 16\n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 690\n 0\n 51\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n 0 2004-02-10 10:24:16.076157 263 BillingSelections \N \n\n Billing Selections\n BillingSelections\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT cobmisc_id,\n cohead_id,\n COALESCE(TEXT(cobmisc_invcnumber), '?') AS docnumber,\n cohead_number,\n cust_number,\n cust_name\n FROM cobmisc, cohead, custinfo\n WHERE ((cobmisc_cohead_id=cohead_id)\n AND (cohead_cust_id=cust_id)\n AND (NOT cobmisc_posted) )\nORDER BY docnumber;\n \n \n 123\n \n \n \n 5\n 112\n 745\n 112\n 2\n \n \n \n \n \n \n 102\n \n \n 80\n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 18\n \n \n 110\n 1\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_number\n \n \n \n \n 5\n 1\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cohead_number\n \n \n \n \n 214\n 1\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_name\n \n \n \n
\n \n 18\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 476 CustomerBOL \N \n\n Drop Ship Bill of Lading\n CustomerBOL\n \n \n 850\n 1100\n \n \n 0\n 50\n 0\n 0\n \n head\n SELECT shiphead_shipvia, formatDate(shiphead_shipdate) AS shipdate,\n cust_name, ca.addr_line1 AS cust_address1, ca.addr_line2 AS cust_address2,\n (ca.addr_city || ' ' || ca.addr_state || ' ' || ca.addr_postalcode) AS custcitystatezip,\n cust_number, cohead_number, cohead_fob, cohead_custponumber,\n warehous_descrip, wa.addr_line1 AS warehous_addr1, wa.addr_line2 AS warehous_addr2, wa.addr_line3 AS warehous_addr3, wa.addr_city AS warehous_addr4, warehous_fob,\n cohead_shiptoname, cohead_shiptoaddress1, cohead_shiptoaddress2, cohead_shiptoaddress3,\n (cohead_shiptocity || ' ' || cohead_shiptostate || ' ' || cohead_shiptozipcode) AS shiptocitystatezip,\n cohead_shiptophone\n FROM shiphead, cohead, whsinfo, custinfo\n LEFT OUTER JOIN addr ca ON (cntct_addr_id=ca.addr_id)\n LEFT OUTER JOIN addr wa ON (warehous_addr_id=wa.addr_id);\n WHERE ((shiphead_order_id=cohead_id)\n AND (cohead_cust_id=cust_id)\n AND (cohead_warehous_id=warehous_id)\n AND (shiphead_id=%1));\n \n \n detail\n SELECT coitem_linenumber, formatQty(SUM(shipitem_qty)) AS invqty, uom_name, roundUp(SUM(shipitem_qty) / itemuomratiobytype(item_id, 'Selling'))::integer AS shipqty,\n itemsellinguom(item_id) AS shipuom, item_number, item_descrip1, item_descrip2,\n formatQty(SUM(shipitem_qty) * item_prodweight) AS netweight,\n formatQty(SUM(shipitem_qty) * (item_prodweight + item_packweight)) AS grossweight\n FROM shipitem, coitem, itemsite, item, uom\n WHERE ((shipitem_orderitem_id=coitem_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (shipitem_shiphead_id=%1))\n GROUP BY coitem_linenumber, item_number, uom_name, shipuom\n item_descrip1, item_descrip2, item_prodweight, item_packweight\n ORDER BY coitem_linenumber;\n \n \n \n foot\n SELECT formatQty(SUM(shipitem_qty * item_prodweight)) AS netweight,\n formatQty(SUM(shipitem_qty * (item_prodweight + item_packweight))) AS grossweight,\n CASE\n WHEN ('%3' = 'C') THEN 'X'\n ELSE ' '\n END AS collectflag,\n CASE\n WHEN ('%3' = 'C') THEN 'Therm-O-Rock East, Inc.'\n ELSE ' '\n END AS section7,\n CASE\n WHEN ('%3' = 'C') THEN cust_name\n ELSE ' '\n END AS collect_name,\n CASE\n WHEN ('%3' = 'C') THEN addr_line1\n ELSE ' '\n END AS collect_address1,\n CASE\n WHEN ('%3' = 'C') THEN addr_line2\n ELSE ' '\n END AS collect_address2,\n CASE\n WHEN ('%3' = 'C') THEN (addr_city || ' ' || addr_state || ' ' || addr_postalcode)\n ELSE ' '\n END AS collect_address3\n FROM shipitem, cohead, custinfo, coitem, itemsite, item\n LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id)\n WHERE ((shipitem_orderitem_id=coitem_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (coitem_cohead_id=cohead_id)\n AND (cohead_cust_id=cust_id)\n AND (shipitem_shiphead_id=%1))\n GROUP BY cust_name, addr_line1, addr_line2, addr_city, addr_state, addr_postalcode;\n \n \n notes\n SELECT shiphead_notes\n FROM shiphead\n WHERE (shiphead_id=%1);\n \n \n \n 318\n \n \n 532\n 224\n 300\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n shiptocitystatezip\n \n \n \n \n 532\n 205\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_shiptoaddress3\n \n \n \n \n 93\n 168\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n warehous_addr2\n \n \n \n \n 93\n 205\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n warehous_addr4\n \n \n \n \n 532\n 168\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_shiptoaddress1\n \n \n \n \n 93\n 149\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cust_name\n \n \n \n \n 532\n 149\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_shiptoname\n \n \n \n \n 532\n 242\n 300\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_shiptophone\n \n \n \n \n 578\n 65\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n shipdate\n \n \n \n \n 93\n 186\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n warehous_addr3\n \n \n \n \n \n 121\n 65\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n shiphead_shipvia\n \n \n \n \n 532\n 186\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_shiptoaddress2\n \n \n \n
\n detail\n \n \n detail\n coitem_linenumber\n \n 54\n \n \n 200\n 40\n 300\n 14\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 94\n 5\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n shipuom\n \n \n \n \n 10\n 30\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n invqty\n \n \n \n \n 200\n 25\n 300\n 14\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 94\n 30\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n uom_name\n \n \n \n \n 10\n 5\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n shipqty\n \n \n \n \n 520\n 5\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n netweight\n \n \n \n \n 200\n 5\n 300\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n item_number\n \n \n \n \n 520\n 25\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n grossweight\n \n \n \n
\n \n \n 346\n \n \n 614\n 80\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cust_number\n \n \n \n \n 230\n 200\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n foot\n collect_address3\n \n \n \n \n \n 20\n 180\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n foot\n collect_name\n \n \n \n \n 520\n 5\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n foot\n netweight\n \n \n \n \n 50\n 10\n 400\n 100\n \n \n Arial\n 10\n normal\n \n \n \n \n notes\n shiphead_notes\n \n \n \n \n 614\n 120\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_custponumber\n \n \n \n \n 20\n 200\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n foot\n collect_address1\n \n \n \n \n 438\n 270\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n foot\n section7\n \n \n \n \n 520\n 25\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n foot\n grossweight\n \n \n \n \n \n 614\n 60\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_fob\n \n \n \n \n 230\n 180\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n foot\n collect_address2\n \n \n \n \n 728\n 270\n 46\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n foot\n collectflag\n \n \n \n \n 614\n 100\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_number\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 138 ExpediteExceptionsByPlannerCode \N \n\n Expedite Exceptions by Planner Code\n ExpediteExceptionsByPlannerCode\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("plancode_id") ?>\n ( SELECT (plancode_code || '-' || plancode_name)\n FROM plancode\n WHERE (plancode_id=<? value("plancode_id") ?>) )\n <? elseif exists("plancode_pattern") ?>\n text(<? value("plancode_pattern") ?>)\n <? else ?>\n text('All Planner Codes')\n <? endif ?>\n AS plannercode,\n <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM warehous\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse;\n \n \n detail\n SELECT planord_id AS order_id, 1 AS order_code,\n CASE WHEN (planord_type='W') THEN ('PW/O-' || formatPloNumber(planord_id))\n WHEN (planord_type='P') THEN ('PP/O-' || formatPloNumber(planord_id))\n ELSE text(planord_number)\n END AS order_number,\n warehous_code, item_number, item_descrip1, item_descrip2,\n CASE WHEN (planord_type='W') THEN formatDate(planord_startdate)\n ELSE formatDate(planord_duedate)\n END AS f_keydate,\n CASE WHEN (planord_type='W') THEN planord_startdate\n ELSE planord_duedate\n END AS keydate, 'Release Order' AS exception \n FROM planord, itemsite, item, warehous \n WHERE ( (planord_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND ( ( (planord_type='W') AND (planord_startdate <= (CURRENT_DATE + <? value("lookAheadDays") ?>)) )\n OR ( (planord_type='P') AND (planord_duedate <= (CURRENT_DATE + <? value("lookAheadDays") ?>)) ) ) \n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("plancode_id") ?>\n AND (itemsite_plancode_id=<? value("plancode_id") ?>)\n<? elseif exists("plancode_pattern") ?>\n AND (itemsite_plancode_id IN (SELECT plancode_id FROM plancode WHERE (plancode_code ~ <? value("plancode_pattern") ?>)))\n<? endif ?>\n)\n\nUNION SELECT wo_id AS order_id, 2 AS order_code, ('W/O-' || formatWoNumber(wo_id)) AS order_number,\n warehous_code, item_number, item_descrip1, item_descrip2,\n formatDate(wo_startdate) AS f_keydate, wo_startdate AS keydate, 'Start Production' AS exception \nFROM wo, itemsite, item, warehous \nWHERE ( (wo_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (wo_status IN ('O', 'E', 'R'))\n AND (wo_startdate <= (CURRENT_DATE + <? value("lookAheadDays") ?>))\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("plancode_id") ?>\n AND (itemsite_plancode_id=<? value("plancode_id") ?>)\n<? elseif exists("plancode_pattern") ?>\n AND (itemsite_plancode_id IN (SELECT plancode_id FROM plancode WHERE (plancode_code ~ <? value("plancode_pattern")?>)))\n<? endif ?>\n)\n\nUNION SELECT wo_id AS order_id, 2 AS order_code, ('W/O-' || formatWoNumber(wo_id)) AS order_number,\n warehous_code, item_number, item_descrip1, item_descrip2,\n formatDate(wo_startdate) AS f_keydate, wo_startdate AS keydate, 'Expedite Production' AS exception \nFROM wo, itemsite, item, warehous \nWHERE ( (wo_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (wo_status='I')\n AND (wo_startdate <= (CURRENT_DATE + <? value("lookAheadDays") ?>))\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("plancode_id") ?>\n AND (itemsite_plancode_id=<? value("plancode_id") ?>)\n<? elseif exists("plancode_pattern") ?>\n AND (itemsite_plancode_id IN (SELECT plancode_id FROM plancode WHERE (plancode_code ~ <? value("plancode_pattern") ?>)))\n<? endif ?>\n)\norder by keydate;\n \n \n 223\n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n 140\n 140\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n lookAheadDays\n \n \n \n \n \n \n \n \n 140\n 100\n 385\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n plannercode\n \n \n \n \n \n 140\n 120\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n \n \n \n 7\n \n \n 42\n \n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 53\n \n \n 490\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_keydate\n \n \n \n \n 595\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n exception\n \n \n \n \n 105\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 150\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 150\n 15\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 150\n 0\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 5\n 0\n 95\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n order_number\n \n \n \n
\n \n 18\n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2008-07-25 16:13:56.085815 202 PurchaseRequestsByPlannerCode \N \n\n Purchase Requests By Planner Code\n PurchaseRequestsByPlannerCode\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT CASE WHEN('%1'='-1') THEN 'All Planner Codes'\n WHEN((SELECT count(*)\n FROM plancode\n WHERE plancode_code = '%1') = 1) THEN\n (SELECT ()\n FROM plancode\n WHERE plancode_code = '%1')\n ELSE '%1'::text\n END AS plancode,\n CASE WHEN(%2=-1) THEN 'All Warehouses'\n ELSE (SELECT warehous_code\n FROM warehous\n WHERE warehous_id=%2)\n END AS warehouse;\n \n \n detail\n SELECT item_number,\n (item_descrip1 || ' ' || item_descrip2) as item_descrip,\n pr_status,\n CASE WHEN (pr_order_type='W') THEN ('W/O ' || ( SELECT formatWoNumber(womatl_wo_id)\n FROM womatl\n WHERE (womatl_id=pr_order_id) ) )\n WHEN (pr_order_type='S') THEN ('S/O ' || (SELECT formatSoNumber(pr_order_id)))\n WHEN (pr_order_type='F') THEN ('Planned Order')\n WHEN (pr_order_type='M') THEN 'Manual'\n ELSE 'Other'\n END AS f_type,\n formatDate(pr_duedate) AS f_duedate,\n formatQty(pr_qtyreq) AS f_qtyreq\n FROM pr, itemsite, item\n WHERE ( (pr_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=%2)\n AND (itemsite_plancode_id IN (SELECT plancode_id FROM plancode WHERE (plancode_code ~ '%1') ) )\n)\nORDER BY pr_duedate;\n \n \n 171\n \n \n \n \n \n \n \n 135\n 65\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n plancode\n \n \n \n \n 555\n 65\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n 3\n \n \n \n \n 135\n 85\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n 5\n 165\n 745\n 165\n 2\n \n \n \n \n \n \n \n 555\n 85\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n 4\n \n \n \n \n \n \n \n 6\n \n \n 26\n \n \n \n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 340\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n pr_status\n \n \n \n \n 135\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip\n \n \n \n \n 425\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_type\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyreq\n \n \n \n \n 10\n 0\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_duedate\n \n \n \n
\n \n 16\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 105\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n 0 2004-02-10 10:24:16.076157 204 APAssignments Master List \N \n\n A/P Account Assignments Master List\n APAssignments Master List\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT CASE WHEN apaccnt_vendtype_id=-1 THEN apaccnt_vendtype\n ELSE (SELECT vendtype_code FROM vendtype WHERE (vendtype_id=apaccnt_vendtype_id))\n END AS vendtypecode,\n formatGLAccount(apaccnt_ap_accnt_id) AS f_account\nFROM apaccnt\nORDER BY vendtypecode;\n \n \n 77\n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n \n 7\n \n \n 22\n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 10\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n venttypecode\n \n \n \n \n 120\n 0\n 500\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_account\n \n \n \n
\n \n 17\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n
\n 0 2004-02-10 10:24:16.076157 293 BankrecHistory \N \n\n Bank Reconciliation History\n BankrecHistory\n \n Letter\n \n 50\n 50\n 50\n 50\n \n reconciled\n bankrecHistory\n reconciled\n \n \n head\n SELECT (bankaccnt_name || '-' || bankaccnt_descrip) AS f_bankaccnt,\n (formatDate(bankrec_opendate) || '-' || formatDate(bankrec_enddate)) AS f_bankrec,\n bankrec_username AS f_username, formatDate(bankrec_created) AS f_created,\n formatDate(bankrec_opendate) AS f_opendate,\n formatDate(bankrec_enddate) AS f_enddate,\n formatMoney(bankrec_openbal) AS f_openbal,\n formatMoney(bankrec_endbal) AS f_endbal,\n text('Opening Balance') AS f_opendescrip,\n text('Ending Balance') AS f_enddescrip\n FROM bankrec, bankaccnt\n WHERE ((bankrec_bankaccnt_id=bankaccnt_id)\n AND (bankrec_id=<? value("bankrec_id") ?>));\n \n \n Subtotal\n SELECT \n formatMoney(COALESCE(MAX(selrec.bankrec_endbal) +\n SUM(currtolocal(bankaccnt_curr_id,gltrans_amount,gltrans_date) * -1),0)) AS amount\n FROM gltrans\n JOIN bankaccnt ON (bankaccnt_accnt_id = gltrans_accnt_id)\n JOIN bankrec selrec ON ((selrec.bankrec_bankaccnt_id = bankaccnt_id)\n AND (selrec.bankrec_id=<? value("bankrec_id") ?>))\n LEFT OUTER JOIN bankrecitem ON ((bankrecitem_source='GL')\n AND (bankrecitem_source_id=gltrans_id))\n LEFT OUTER JOIN bankrec actrec ON (actrec.bankrec_id = bankrecitem_bankrec_id)\n WHERE ((COALESCE(actrec.bankrec_postdate,endoftime()) > COALESCE(selrec.bankrec_postdate,now()))\n AND (gltrans_doctype='CK'))\n \n \n ActualAmount\n SELECT \n formatMoney(COALESCE(MAX(selrec.bankrec_endbal) +\n SUM(currtolocal(bankaccnt_curr_id,gltrans_amount,gltrans_date) * -1),0)) AS amount\n FROM gltrans\n JOIN bankaccnt ON (bankaccnt_accnt_id = gltrans_accnt_id)\n JOIN bankrec selrec ON ((selrec.bankrec_bankaccnt_id = bankaccnt_id)\n AND (selrec.bankrec_id=<? value("bankrec_id") ?>))\n LEFT OUTER JOIN bankrecitem ON ((bankrecitem_source='GL')\n\n AND (bankrecitem_source_id=gltrans_id))\n LEFT OUTER JOIN bankrec actrec ON (actrec.bankrec_id = bankrecitem_bankrec_id)\n WHERE (COALESCE(actrec.bankrec_postdate,endoftime()) > COALESCE(selrec.bankrec_postdate,now()))\n \n \n unreconciled\n bankrecHistory\n unreconciled\n \n \n 166\n \n \n \n \n 100\n 148\n 535\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_opendescrip\n \n \n \n \n \n 145\n 65\n 220\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_bankrec\n \n \n \n 5\n 115\n 745\n 115\n 2\n \n \n \n \n 145\n 50\n 245\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_bankaccnt\n \n \n \n \n 475\n 65\n 220\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_created\n \n \n \n \n \n \n 9\n 148\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_opendate\n \n \n \n \n 475\n 50\n 220\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_username\n \n \n \n \n \n \n 644\n 148\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_openbal\n \n \n \n \n \n \n 0\n \n \n 31\n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n
\n reconciled\n \n reconciled-group\n amount_xtnumericrole\n \n 21\n \n \n 645\n 3.28\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_endbal\n \n \n \n \n 10\n 3.28\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_enddate\n \n \n \n \n 100\n 3.28\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_enddescrip\n \n \n \n \n \n reconciled-type\n sort\n \n 27\n \n \n 10\n 6.78\n 94\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n reconciled\n type\n \n \n \n \n 18\n \n \n 645\n 2\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n reconciled\n amount\n \n qty\n \n \n \n 438\n 2\n 168\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n reconciled\n type\n \n \n \n \n \n \n \n reconciled\n \n 18\n \n \n 206\n 0\n 430\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n reconciled\n notes\n \n \n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n reconciled\n f_amount\n \n \n \n \n 10\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n reconciled\n f_date\n \n \n \n \n 100\n -0.182\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n reconciled\n gltrans_docnumber\n \n \n \n
\n
\n unreconciled\n \n unreconciled-group\n amount_xtnumericrole\n \n 33\n \n \n \n 136.499\n \n \n \n \n \n \n \n 642\n 25.4985\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_endbal\n \n \n \n \n 642\n 41.5\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n unreconciled\n rtcheck\n \n money\n \n \n \n \n 641\n 57.5\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Subtotal\n amount\n \n \n \n \n 642\n 73.5\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n unreconciled\n rtdep\n \n money\n \n \n \n 641\n 89.5\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n unreconciled\n rtadj\n \n money\n \n \n \n 641\n 105\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n ActualAmount\n amount\n \n \n \n \n \n \n unreconciled-type\n type\n \n 26.0233\n \n \n 10\n 4.9\n 94\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n unreconciled\n type\n \n \n \n \n \n \n unreconciled\n \n 21.9767\n \n \n 204\n 0.687\n 430\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n unreconciled\n notes\n \n \n \n \n 10\n 0.687\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n unreconciled\n f_date\n \n \n \n \n 98.5\n 0.687\n 94\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n unreconciled\n gltrans_docnumber\n \n \n \n \n 643\n 0.687\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n unreconciled\n f_amount\n \n \n \n
\n \n 15\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 80\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 143\n \n
\n \N 0 2013-07-26 16:17:54.38447 443 Bookings \N \n\n Bookings\n Bookings\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT cohead_number AS sonumber,\n formatDate(cohead_orderdate) AS orddate,\n cust_number, cust_name,\n item_number, item_descrip1, item_descrip2,\n formatQty(coitem_qtyord) AS ordered,\nformatPrice(currtobase(cohead_curr_id,coitem_price,cohead_orderdate) / coitem_price_invuomratio) AS unitprice,\nformatExtPrice(round((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio)\n * (currtobase(cohead_curr_id,coitem_price,cohead_orderdate) / coitem_price_invuomratio),2)) AS f_extprice\n FROM coitem JOIN cohead ON (cohead_id=coitem_cohead_id)\n JOIN custinfo ON (cust_id=cohead_cust_id)\n JOIN itemsite ON (itemsite_id=coitem_itemsite_id)\n JOIN site() ON (warehous_id=itemsite_warehous_id)\n JOIN item ON (item_id=itemsite_item_id)\n JOIN uom ON (uom_id=coitem_qty_uom_id)\n JOIN curr_symbol ON (curr_id=cohead_curr_id)\n WHERE ( (coitem_status<>'X')\n <? if exists("cohead_id") ?>\n AND (coitem_cohead_id=<? value("cohead_id") ?>)\n <? endif ?>\n <? if exists("openOnly") ?>\n AND (coitem_status<>'C')\n <? endif ?>\n <? if exists("startDate") ?>\n AND (cohead_orderdate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n <? endif ?>\n\n <? if exists("salesrep_id") ?>\n AND (cohead_salesrep_id=<? value("salesrep_id") ?>)\n <? endif ?>\n <? if exists("shipto_id") ?>\n AND (cohead_shipto_id=<? value("shipto_id") ?>)\n <? endif ?>\n <? if exists("cust_id") ?>\n AND (cohead_cust_id=<? value("cust_id") ?>)\n <? endif ?>\n <? if exists("custtype_id") ?>\n AND (cust_custtype_id=<? value("custtype_id") ?>)\n <? endif ?>\n <? if exists("custtype_pattern") ?>\n AND (cust_custtype_id IN (SELECT DISTINCT custtype_id\n FROM custtype\n WHERE (custtype_code ~ <? value("custtype_pattern") ?>)))\n <? endif ?>\n <? if exists("custgrp") ?>\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem))\n <? endif ?>\n <? if exists("custgrp_id") ?>\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem\n WHERE (custgrpitem_custgrp_id=<? value("custgrp_id") ?>)))\n <? endif ?>\n <? if exists("custgrp_pattern") ?>\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrp, custgrpitem\n WHERE ( (custgrpitem_custgrp_id=custgrp_id)\n AND (custgrp_name ~ <? value("custgrp_pattern") ?>) )) )\n <? endif ?>\n\n <? if exists("item_id") ?>\n AND (itemsite_item_id=<? value("item_id") ?>)\n <? endif ?>\n <? if exists("prodcat_id") ?>\n AND (item_prodcat_id=<? value("prodcat_id") ?>)\n <? endif ?>\n <? if exists("prodcat_pattern") ?>\n AND (item_prodcat_id IN (SELECT DISTINCT prodcat_id\n FROM prodcat\n WHERE (prodcat_code ~ <? value("prodcat_pattern") ?>)))\n <? endif ?>\n\n <? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n <? endif ?>\n)\nORDER BY cohead_orderdate;\n \n \n \n 237\n \n \n \n \n 5\n 233\n 745\n 233\n 2\n \n \n \n \n \n \n \n \n \n \n 10\n 41\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 7\n \n \n 37\n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 52\n \n \n 585\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ordered\n \n \n \n \n 432\n 15\n 225\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 5\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n sonumber\n \n \n \n \n 432\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 665\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_extprice\n \n \n \n \n 200\n 15\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_name\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n unitprice\n \n \n \n 4\n 47\n 744\n 47\n 0\n \n \n \n 200\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_number\n \n \n \n \n 432\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 110\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n orddate\n \n \n \n
\n \n 17\n \n \n \n 102\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 155 BriefEarnedCommissions \N \n\n Brief Earned Commissions\n BriefEarnedCommissions\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("salesrep_id") ?>\n ( SELECT salesrep_name\n FROM salesrep\n WHERE (salesrep_id=<? value("salesrep_id") ?>) )\n <? else ?>\n text('All Sales Reps')\n <? endif ?>\n AS salesrep,\n formatDate(<? value("startDate") ?>) AS startdate,\n formatDate(<? value("endDate") ?>) AS enddate;\n \n \n detail\n SELECT cohist_salesrep_id, salesrep_number, salesrep_name, cust_number, cust_name,\n cohist_ordernumber, cohist_invcnumber, formatDate(cohist_invcdate) AS f_invcdate, currAbbr,\n formatMoney(SUM(baseextprice)) AS f_extprice,\n formatMoney(SUM(basecommission)) AS f_commission,\n SUM(baseextprice) AS extprice,\n SUM(basecommission) AS commission\n<? if exists("includeMisc") ?>\nFROM saleshistorymisc\n<? else ?>\nFROM saleshistory\n<? endif ?>\nWHERE ( (cohist_commission <> 0)\n AND (cohist_invcdate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n\n<? if exists("includeMisc") ?>\n AND (COALESCE(cohist_misc_type, '') <> 'T')\n AND (COALESCE(cohist_misc_type, '') <> 'F')\n<? endif ?>\n\n<? if exists("salesrep_id") ?>\n AND (cohist_salesrep_id=<? value("salesrep_id") ?>)\n<? endif ?>\n)\nGROUP BY cohist_salesrep_id, salesrep_number, salesrep_name, cust_number, cust_name,\n cohist_ordernumber, cohist_invcnumber, cohist_invcdate, currAbbr\nORDER BY salesrep_number, cust_number, cohist_invcdate\n\n \n \n 221\n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n 140\n 100\n 385\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n salesrep\n \n \n \n \n \n \n \n \n \n \n \n \n 140\n 120\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n 140\n 140\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n \n 6\n \n \n 26\n \n \n \n \n \n \n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 345\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cohist_ordernumber\n \n \n \n \n 585\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_extprice\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_commission\n \n \n \n \n 165\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_number\n \n \n \n \n 505\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_invcdate\n \n \n \n \n 220\n 0\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_name\n \n \n \n \n 60\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n salesrep_name\n \n \n \n \n 425\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cohist_invcnumber\n \n \n \n \n 5\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n salesrep_number\n \n \n \n
\n \n 16\n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 16\n \n \n \n 585\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n extprice\n \n money\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n commission\n \n money\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 160 BuyCard \N \n\n Buy Card\n BuyCard\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT vend_number, vend_name,\n itemsrc_vend_item_number,\n itemsrc_vend_item_descrip\n FROM vendinfo, itemsrc\n WHERE ((vend_id=<? value("vend_id") ?>)\n AND (itemsrc_id=<? value("itemsrc_id") ?>) )\n \n \n detail\n SELECT poitem_id, pohead_number, poitem_linenumber,\n CASE WHEN(poitem_status='C') THEN TEXT('Closed')\n WHEN(poitem_status='U') THEN TEXT('Unposted')\n WHEN(poitem_status='O' AND ((poitem_qty_received-poitem_qty_returned) > 0) AND (poitem_qty_ordered>(poitem_qty_received-poitem_qty_returned))) THEN TEXT('Partial')\n WHEN(poitem_status='O' AND ((poitem_qty_received-poitem_qty_returned) > 0) AND (poitem_qty_ordered=(poitem_qty_received-poitem_qty_returned))) THEN TEXT('Received')\n WHEN(poitem_status='O') THEN TEXT('Open')\n ELSE poitem_status\n END AS poitemstatus,\n formatDate(poitem_duedate) as f_duedate,\n formatQty(poitem_qty_ordered) as f_qtyord,\n formatQty(COALESCE(SUM(recv_qty), 0)) as f_qty,\n formatPrice(poitem_unitprice) as f_unitprice\nFROM pohead, poitem LEFT OUTER JOIN recv ON (recv_orderitem_id=poitem_id)\nWHERE ( (poitem_pohead_id=pohead_id)\n AND (recv_order_type='PO')\n AND (pohead_vend_id=<? value("vend_id") ?>)\n AND (poitem_vend_item_number=(select itemsrc_vend_item_number from itemsrc where itemsrc_id=<? value("itemsrc_id") ?>)) ) \nGROUP BY poitem_id, pohead_number, poitem_linenumber,\n poitem_status, poitem_qty_received, poitem_qty_returned,\n poitem_duedate, poitem_qty_ordered, poitem_unitprice\nORDER BY pohead_number, poitem_linenumber;\n \n \n foot\n SELECT itemsrc_comments\n FROM itemsrc\n WHERE itemsrc_id=<? value("itensrc_id") ?>;\n \n \n 221\n \n \n 135\n 114\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n itemsrc_vend_item_number\n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n \n \n \n 135\n 65\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n vend_number\n \n \n \n \n \n \n 135\n 85\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n vend_name\n \n \n \n \n \n \n 135\n 135\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n itemsrc_vend_item_descrip\n \n \n \n \n \n 6\n \n \n 26\n \n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 260\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyord\n \n \n \n \n 455\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_unitprice\n \n \n \n \n 175\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_duedate\n \n \n \n \n 5\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n pohead_number\n \n \n \n \n 60\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n poitem_linenumber\n \n \n \n \n 370\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qty\n \n \n \n \n 114\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n poitemstatus\n \n \n \n
\n \n 16\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 104\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 31\n \n \n \n 125\n 5\n 615\n 20\n \n 5\n \n Arial\n 10\n bold\n \n \n \n \n foot\n itemsrc_comments\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 51 SequencedBOM \N \n\n Sequenced Bill of Materials\n SequencedBOM\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n uom_name AS item_invuom,\n item_descrip1,\n item_descrip2\n FROM item, uom\n WHERE ((item_id=<? value("item_id") ?>)\n AND (item_inv_uom_id=uom_id));\n \n \n \n detail\n SELECT text(booitem_seqnumber) AS booseqnumber, bomitem_seqnumber,\n item_number, uom_name AS item_invuom, item_descrip1, item_descrip2,\n formatQtyPer(bomitem_qtyper) AS qtyper,\n formatScrap(bomitem_scrap) AS scrap,\n formatQtyPer(bomitem_qtyper + (1 * bomitem_scrap)) AS qtyreq,\n formatDate(bomitem_effective, 'Always') AS effective,\n formatDate(bomitem_expires, 'Never') AS expires,\n formatBoolYN(bomitem_createwo) AS createchild,\n CASE WHEN (bomitem_issuemethod='S') THEN 'Push'\n WHEN (bomitem_issuemethod='L') THEN 'Pull'\n WHEN (bomitem_issuemethod='M') THEN 'Mixed'\n ELSE 'Special'\n END AS issuemethod\n FROM booitem(<? value("item_id") ?>), bomitem(<? value("item_id") ?>,<? value("revision_id") ?>), item, uom\n WHERE ((bomitem_item_id=item_id)\n AND (bomitem_booitem_seq_id=booitem_seq_id)\n AND (item_inv_uom_id=uom_id)\n<? if not exists("showExpired") ?>\n AND (bomitem_expires > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (bomitem_effective <= CURRENT_DATE)\n<? endif ?>\n)\nUNION\nSELECT text('') AS booseqnumber, bomitem_seqnumber,\n item_number, uom_name AS item_invuom, item_descrip1, item_descrip2,\n formatQtyPer(bomitem_qtyper) AS qtyper,\n formatScrap(bomitem_scrap) AS scrap,\n formatQtyPer(bomitem_qtyper + (1 * bomitem_scrap)) AS qtyreq,\n formatDate(bomitem_effective, 'Always') AS effective,\n formatDate(bomitem_expires, 'Never') AS expires,\n formatBoolYN(bomitem_createwo) AS createchild,\n CASE WHEN (bomitem_issuemethod='S') THEN 'Push'\n WHEN (bomitem_issuemethod='L') THEN 'Pull'\n WHEN (bomitem_issuemethod='M') THEN 'Mixed'\n ELSE 'Special'\n END AS issuemethod\n FROM bomitem(<? value("item_id") ?>,<? value("revision_id") ?>), item, uom\n WHERE ((bomitem_item_id=item_id)\n AND (bomitem_booitem_seq_id=-1)\n AND (item_inv_uom_id=uom_id)\n<? if not exists("showExpired") ?>\n AND (bomitem_expires > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (bomitem_effective <= CURRENT_DATE)\n<? endif ?>\n)\nORDER BY booseqnumber, bomitem_seqnumber;\n\n \n \n bomhead\n SELECT bomhead_docnum, bomhead_revision,\nformatDate(bomhead_revisiondate) AS f_revisiondate\nFROM bomhead\nWHERE ((bomhead_item_id=<? value("item_id") ?>)\nAND (bomhead_rev_id=<? value("revision_id") ?>));\n \n \n 233\n \n \n 100\n 160\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n 505\n 160\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n bomhead_revision\n \n \n \n \n 100\n 140\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n 505\n 140\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n f_revisiondate\n \n \n \n \n \n \n \n 505\n 120\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n bomhead_docnum\n \n \n \n \n \n \n \n \n \n \n \n \n 100\n 120\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n \n \n 5\n 228\n 745\n 228\n 2\n \n \n \n \n \n 6\n \n \n 36\n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 57\n \n \n 675\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n issuemethod\n \n \n \n 3\n 50\n 745\n 50\n 0\n \n \n \n 315\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyper\n \n \n \n \n 75\n 0\n 228\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 10\n 0\n 65\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n booseqnumber\n \n \n \n \n 443\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n scrap\n \n \n \n \n 75\n 15\n 228\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 675\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n expires\n \n \n \n \n 10\n 15\n 65\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n bomitem_seqnumber\n \n \n \n \n 403\n 0\n 37\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_invuom\n \n \n \n \n 525\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyreq\n \n \n \n \n 600\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n effective\n \n \n \n \n 600\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n createchild\n \n \n \n \n 75\n 30\n 228\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n
\n \n 18\n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2008-08-08 12:40:53.055185 211 CashReceiptsEditList \N \n\n Cash Receipt Edit List\n CashReceiptsEditList\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT cashrcpt_id, 1 AS orderBy,\n cust_number, cust_name,\n formatDate(cashrcpt_distdate) AS f_distdate,\n CASE WHEN (cashrcpt_fundstype = 'C') THEN <? value("check") ?>\n WHEN (cashrcpt_fundstype = 'T') THEN <? value("certifiedCheck") ?>\n WHEN (cashrcpt_fundstype = 'M') THEN <? value("masterCard") ?>\n WHEN (cashrcpt_fundstype = 'V') THEN <? value("visa") ?>\n WHEN (cashrcpt_fundstype = 'A') THEN <? value("americanExpress") ?>\n WHEN (cashrcpt_fundstype = 'D') THEN <? value("discoverCard") ?>\n WHEN (cashrcpt_fundstype = 'R') THEN <? value("otherCreditCard") ?>\n WHEN (cashrcpt_fundstype = 'K') THEN <? value("cash") ?>\n WHEN (cashrcpt_fundstype = 'W') THEN <? value("wireTransfer") ?>\n ELSE <? value("other") ?>\n END AS f_fundstype,\n 'C/R' AS doctype,\n cashrcpt_docnumber AS docnumber,\n cashrcpt_amount AS amount,\n formatMoney(cashrcpt_amount) AS f_amount,\n 0 AS detailedamount,\n formatMoney(0) AS f_detailedamount,\n bankaccnt_name\nFROM cashrcpt, bankaccnt, custinfo\nWHERE ( (cashrcpt_bankaccnt_id=bankaccnt_id)\n AND (cashrcpt_cust_id=cust_id)\n AND (NOT cashrcpt_posted)\n AND (NOT cashrcpt_void) )\n\nUNION\nSELECT cashrcpt_id, 2 AS orderBy,\n '' AS cust_number, '' AS cust_name,\n '' AS f_distdate,\n '' AS f_fundstype,\n aropen_doctype AS doctype,\n aropen_docnumber AS docnumber,\n 0 AS amount,\n formatMoney(0) AS f_amount,\n cashrcptitem_amount AS detailedamount,\n formatMoney(cashrcptitem_amount) AS f_detailedamount,\n '' AS bankaccnt_name\nFROM cashrcptitem, cashrcpt, aropen\nWHERE ( (cashrcptitem_cashrcpt_id=cashrcpt_id)\n AND (cashrcptitem_aropen_id=aropen_id)\n AND (NOT cashrcpt_posted)\n AND (NOT cashrcpt_void) )\n\nUNION\nSELECT cashrcpt_id, 3 AS orderBy,\n '' AS cust_number, '' AS cust_name,\n '' AS f_distdate,\n '' AS f_fundstype,\n 'Misc.' AS doctype,\n (formatGLAccount(accnt_id) || '-' || accnt_descrip) AS docnumber,\n 0 AS amount,\n formatMoney(0) AS f_amount,\n cashrcptmisc_amount AS detailedamount,\n formatMoney(cashrcptmisc_amount) AS f_detailedamount,\n '' AS bankaccnt_name\nFROM cashrcptmisc, cashrcpt, accnt\nWHERE ( (cashrcptmisc_cashrcpt_id=cashrcpt_id)\n AND (cashrcptmisc_accnt_id=accnt_id)\n AND (NOT cashrcpt_posted)\n AND (NOT cashrcpt_void) )\n\nORDER BY cashrcpt_id, orderBy;\n\n\n \n \n 145\n \n \n \n \n \n \n \n \n \n 5\n 130\n 745\n 130\n 2\n \n \n \n \n \n
\n detail\n \n detail\n cashrcpt_id\n \n 18\n \n \n 540\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_amount\n \n \n \n \n 85\n 0\n 130\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_name\n \n \n \n \n 615\n 0\n 125\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n bankaccnt_name\n \n \n \n \n 10\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_number\n \n \n \n \n 315\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_fundstype\n \n \n \n \n 409\n 0\n 110\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n docnumber\n \n \n \n \n 229\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_distdate\n \n \n \n \n 41\n \n \n 670\n 5\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n detailedamount\n \n extprice\n \n \n \n 5\n 25\n 740\n 25\n 2\n \n \n \n \n \n \n detail\n \n 18\n \n \n 85\n 0\n 315\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n docnumber\n \n \n \n \n 15\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n doctype\n \n \n \n \n 540\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_detailedamount\n \n \n \n
\n \n 28\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 43\n \n \n 670\n 5\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n amount\n \n extprice\n \n \n \n \n 7\n 28\n 742\n 28\n 2\n \n \n
\n \N 0 2013-07-26 16:17:54.38447 365 CheckMultiPage \N \n\n Sample Check Format - 3 Part - MC - Remit - Multi Page\n CheckMultiPage\n Sample Check Format - 3 Part - MC - Uses primary Vendor or address with names: REMIT, Remit, or remit if one exists. Multi-Page.\n Letter\n \n 50\n 0\n 50\n 50\n \n Head\n SELECT\ncheckhead_id, checkhead_number, checkhead_for AS memo,\nformatDate(checkhead_checkdate) AS f_checkdate,\nformatMoney(checkhead_amount) AS f_amount,\nINITCAP(spellAmount(checkhead_amount, curr_id)) AS f_words,\nCASE WHEN(checkhead_void) THEN TEXT('V O I D')\n ELSE TEXT('')\nEND AS f_void,\nCASE WHEN checkhead_recip_type = 'C' THEN (SELECT cust_number\n FROM custinfo\n WHERE (cust_id=checkhead_recip_id))\n WHEN checkhead_recip_type = 'T' THEN (SELECT taxauth_code\n FROM taxauth\n WHERE (taxauth_id=checkhead_recip_id))\n WHEN checkhead_recip_type = 'V' THEN (SELECT vend_number\n FROM vendinfo\n WHERE (vend_id=checkhead_recip_id))\n ELSE 'Unknown Recipient Type'\nEND AS recip_number,\nformatAddr(CASE WHEN checkhead_recip_type = 'C' THEN\n (SELECT cntct_addr_id\n FROM cntct, custinfo\n WHERE ((cust_cntct_id=cntct_id)\n AND (cust_id=checkhead_recip_id)))\n WHEN checkhead_recip_type = 'T' THEN \n (SELECT taxauth_addr_id\n FROM taxauth\n WHERE (taxauth_id=checkhead_recip_id))\n WHEN checkhead_recip_type = 'V' THEN\n COALESCE((SELECT vendaddr_addr_id\n FROM vendaddrinfo\n WHERE ((UPPER(vendaddr_code)='REMIT')\n AND (vendaddr_vend_id=checkhead_recip_id))),\n (SELECT vend_addr_id\n FROM vendinfo\n WHERE (vend_id=checkhead_recip_id)))\n END) AS check_address,\nCASE WHEN checkhead_recip_type = 'C' THEN (SELECT cust_name\n FROM custinfo\n WHERE cust_id=checkhead_recip_id)\n WHEN checkhead_recip_type = 'T' THEN (SELECT taxauth_name\n FROM taxauth\n WHERE taxauth_id=checkhead_recip_id)\n WHEN checkhead_recip_type = 'V' THEN\n COALESCE((SELECT vendaddr_name\n FROM vendaddrinfo\n WHERE ((UPPER(vendaddr_code)='REMIT')\n AND (vendaddr_vend_id=checkhead_recip_id))),\n (SELECT vend_name\n FROM vendinfo\n WHERE (vend_id=checkhead_recip_id)))\nEND AS recip_name, \ncurr_symbol, curr_abbr, curr_name\nFROM checkhead, curr_symbol\nWHERE ((checkhead_curr_id = curr_id)\n AND (checkhead_id=<? value("checkhead_id") ?>) );\n\n \n \n CheckDetail\n SELECT checkdata_page,\n checkdata_checknumber,\n checkdata_checkwords,\n checkdata_checkdate,\n checkdata_checkamount,\n checkdata_checkcurrsymbol,\n checkdata_checkcurrabbr,\n checkdata_checkcurrname,\n checkdata_checkpayto,\n checkdata_checkaddress,\n checkdata_checkmemo,\n checkdata_docnumber,\n checkdata_docreference,\n checkdata_docdate,\n checkdata_docamount,\n checkdata_docdiscount,\n checkdata_docnetamount\n FROM checkDetailFormatted(<? value("checkhead_id") ?>, 12);\n \n
\n Check\n \n Line Detail\n checkdata_page\n \n \n 351\n \n \n 175\n 50\n 120\n 250\n \n \n Arial\n 8\n normal\n \n \n \n \n \n CheckDetail\n checkdata_docreference\n \n \n \n \n \n 555\n 50\n 80\n 250\n \n \n Arial\n 8\n normal\n \n \n \n \n \n CheckDetail\n checkdata_docdiscount\n \n \n \n \n 85\n 325\n 660\n 20\n \n \n Arial\n 8\n normal\n \n \n \n \n Head\n memo\n \n \n \n \n 645\n 50\n 100\n 250\n \n \n Arial\n 8\n normal\n \n \n \n \n \n CheckDetail\n checkdata_docnetamount\n \n \n \n \n 305\n 25\n 147\n 20\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n \n 5\n 50\n 155\n 250\n \n \n Arial\n 8\n normal\n \n \n \n \n \n CheckDetail\n checkdata_docnumber\n \n \n \n \n 145\n 0\n 175\n 25\n \n \n Arial\n 8\n normal\n \n \n \n \n Head\n recip_name\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n 450\n 305\n 745\n 305\n 0\n \n \n \n 650\n 0\n 95\n 25\n \n \n Arial\n 10\n normal\n \n \n \n \n Head\n checkhead_number\n \n \n \n \n 640\n 305\n 104\n 20\n \n \n Arial\n 8\n normal\n \n \n \n \n Head\n f_amount\n \n \n \n \n 444\n 50\n 100\n 250\n \n \n Arial\n 8\n normal\n \n \n \n \n \n CheckDetail\n checkdata_docamount\n \n \n \n \n 10\n 0\n 135\n 25\n \n \n Arial\n 8\n normal\n \n \n \n \n Head\n recip_number\n \n \n \n \n 580\n 305\n 55\n 20\n \n \n Arial\n 8\n normal\n \n \n \n \n Head\n curr_symbol\n \n \n \n \n 310\n 50\n 100\n 250\n \n \n Arial\n 8\n normal\n \n \n \n \n \n CheckDetail\n checkdata_docdate\n \n \n \n \n \n \n \n \n 351\n \n \n 645\n 0\n 95\n 25\n \n \n Arial\n 10\n normal\n \n \n \n \n Head\n checkhead_number\n \n \n \n \n 5\n 50\n 155\n 250\n \n \n Arial\n 8\n normal\n \n \n \n \n \n CheckDetail\n checkdata_docnumber\n \n \n \n \n 550\n 50\n 80\n 250\n \n \n Arial\n 8\n normal\n \n \n \n \n \n CheckDetail\n checkdata_docdiscount\n \n \n \n \n \n \n \n 445\n 305\n 740\n 305\n 0\n \n \n \n 170\n 50\n 120\n 250\n \n \n Arial\n 8\n normal\n \n \n \n \n \n CheckDetail\n checkdata_docreference\n \n \n \n \n 440\n 50\n 100\n 250\n \n \n Arial\n 8\n normal\n \n \n \n \n \n CheckDetail\n checkdata_docamount\n \n \n \n \n \n 80\n 325\n 660\n 20\n \n \n Arial\n 8\n normal\n \n \n \n \n Head\n memo\n \n \n \n \n \n 575\n 305\n 55\n 20\n \n \n Arial\n 8\n normal\n \n \n \n \n Head\n curr_symbol\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 300\n 25\n 147\n 20\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 140\n 0\n 175\n 25\n \n \n Arial\n 8\n normal\n \n \n \n \n Head\n recip_name\n \n \n \n \n 640\n 50\n 100\n 250\n \n \n Arial\n 8\n normal\n \n \n \n \n \n CheckDetail\n checkdata_docnetamount\n \n \n \n \n 305\n 50\n 100\n 250\n \n \n Arial\n 8\n normal\n \n \n \n \n \n CheckDetail\n checkdata_docdate\n \n \n \n \n \n \n 635\n 305\n 104\n 20\n \n \n Arial\n 8\n normal\n \n \n \n \n Head\n f_amount\n \n \n \n \n 5\n 0\n 135\n 25\n \n \n Arial\n 8\n normal\n \n \n \n \n Head\n recip_number\n \n \n \n \n \n \n CheckDetail\n \n 292\n \n \n 10\n 100\n 225\n 25\n \n \n Arial\n 10\n normal\n \n \n \n \n CheckDetail\n checkdata_checkpayto\n \n \n \n \n 15\n 40\n 560\n 30\n \n \n Arial\n 12\n normal\n \n \n \n \n CheckDetail\n checkdata_checkwords\n \n \n \n \n 405\n 85\n 121\n 25\n \n \n Arial\n 10\n normal\n \n \n \n \n CheckDetail\n checkdata_checkdate\n \n \n \n \n 80\n 260\n 650\n 20\n \n \n Arial\n 8\n normal\n \n \n \n \n CheckDetail\n checkdata_checkmemo\n \n \n \n \n \n 10\n 125\n 300\n 20\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n CheckDetail\n checkdata_checkaddress\n \n \n \n \n 545\n 85\n 55\n 25\n \n \n Arial\n 10\n normal\n \n \n \n \n CheckDetail\n checkdata_checkcurrsymbol\n \n \n \n \n 600\n 85\n 125\n 25\n \n \n Arial\n 10\n normal\n \n \n \n \n CheckDetail\n checkdata_checkamount\n \n \n \n
\n
\n Sample Check Format - 3 Part - MC - Uses primary Vendor or address with names: REMIT, Remit, or remit if one exists. Multi-Page. 0 2013-07-26 16:17:54.38447 277 CheckRegister \N \n\n Check Register\n CheckRegister\n \n \n \n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT bankaccnt_name,\n bankaccnt_descrip,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n curr_symbol\n FROM bankaccnt, curr_symbol\n WHERE ((bankaccnt_id=<? value("bankaccnt_id") ?>)\n AND (bankaccnt_curr_id = curr_id));\n \n \n detail\n SELECT checkhead_id AS checkid,\n CASE WHEN(checkhead_void) THEN -1\n WHEN(checkhead_posted) THEN 1\n ELSE 0\n END AS extra,\n -1 AS checkitem_id,\n formatBoolYN(checkhead_void) AS f_void,\n formatBoolYN(checkhead_misc) AS f_misc,\n formatBoolYN(checkhead_printed) AS f_printed,\n formatBoolYN(checkhead_posted) AS f_posted,\n CASE when checkhead_number = -1 THEN\n 'Unspecified'\n ELSE TEXT(checkhead_number) END AS number,\n COALESCE(checkrecip_number || '-' || checkrecip_name,\n\t\tcheckhead_recip_type || '-' || checkhead_recip_id ) AS description,\n formatDate(checkhead_checkdate) AS f_checkdate,\n formatMoney(checkhead_amount) AS f_amount, \n currConcat(checkhead_curr_id) AS currAbbr,\n checkhead_number,\n checkhead_ach_batch,\n 1 AS orderby\n FROM checkhead LEFT OUTER JOIN\n checkrecip ON ((checkhead_recip_id=checkrecip_id)\n\t\t AND (checkhead_recip_type=checkrecip_type))\n WHERE ((checkhead_checkdate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n AND (checkhead_bankaccnt_id=<? value("bankaccnt_id") ?>)\n <? if exists("check_number") ?>\n AND (CAST(checkhead_number AS text) ~ <? value("check_number") ?>)\n <? endif ?>\n <? if exists("recip") ?>\n <? if exists("recip_type_v") ?>\n\t AND (checkhead_recip_type = 'V' )\n <? endif ?>\n <? if exists("recip_type_c") ?>\n\t AND (checkhead_recip_type = 'C' )\n <? endif ?>\n <? if exists("recip_type_t") ?>\n\t AND (checkhead_recip_type = 'T' )\n <? endif ?>\n <? if exists("recip_id") ?>\n\t AND (checkhead_recip_id = <? value("recip_id") ?> )\n <? endif ?>\n <? endif ?> \n )\n<? if exists("showDetail") ?>\nUNION\nSELECT checkitem_checkhead_id AS checkid, 0 AS extra, checkitem_id,\n '' AS f_void, '' AS f_misc, '' AS f_printed, '' AS f_posted,\n checkitem_vouchernumber AS number,\n checkitem_invcnumber AS description,\n '' AS f_checkdate,\n formatMoney(checkitem_amount) AS f_amount,\n currConcat(checkitem_curr_id) AS currAbbr, \n checkhead_number, \n NULL,\n 2 AS orderby \n FROM checkitem, checkhead \n WHERE ( (checkitem_checkhead_id=checkhead_id)\n AND (checkhead_checkdate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n AND (checkhead_bankaccnt_id=<? value("bankaccnt_id") ?>)\n <? if exists("check_number") ?>\n AND (CAST(checkhead_number AS text) ~ <? value("check_number") ?>)\n <? endif ?>\n <? if exists("recip") ?>\n <? if exists("recip_type_v") ?>\n AND (checkhead_recip_type = 'V' )\n <? endif ?>\n <? if exists("recip_type_c") ?>\n AND (checkhead_recip_type = 'C' )\n <? endif ?>\n <? if exists("recip_type_t") ?>\n AND (checkhead_recip_type = 'T' )\n <? endif ?>\n <? if exists("recip_id") ?>\n AND (checkhead_recip_id = <? value("recip_id") ?> )\n <? endif ?>\n <? endif ?> )\n<? endif ?>\n ORDER BY checkhead_number, checkid, orderby;\n \n \n total\n SELECT formatMoney(SUM(currToCurr(checkhead_curr_id, bankaccnt_curr_id, checkhead_amount, checkhead_checkdate))) AS f_amount,\n currConcat(bankaccnt_curr_id) AS currAbbr\n FROM checkhead, checkrecip, bankaccnt\n WHERE ( (checkhead_recip_id=checkrecip_id)\n AND (checkhead_recip_type=checkrecip_type)\n AND (NOT checkhead_void)\n AND (checkhead_checkdate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n AND (checkhead_bankaccnt_id=bankaccnt_id)\n AND (checkhead_bankaccnt_id=<? value("bankaccnt_id") ?>)\n <? if exists("check_number") ?>\n AND (CAST(checkhead_number AS text) ~ <? value("check_number") ?>)\n <? endif ?>\n <? if exists("recip") ?>\n <? if exists("recip_type_v") ?>\n AND (checkhead_recip_type = 'V' )\n <? endif ?>\n <? if exists("recip_type_c") ?>\n AND (checkhead_recip_type = 'C' )\n <? endif ?>\n <? if exists("recip_type_t") ?>\n AND (checkhead_recip_type = 'T' )\n <? endif ?>\n <? if exists("recip_id") ?>\n AND (checkhead_recip_id = <? value("recip_id") ?> )\n <? endif ?>\n <? endif ?> )\nGROUP BY bankaccnt_curr_id;\n \n \n 168\n \n \n 550\n 65\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n 140\n 65\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n bankaccnt_name\n \n \n \n \n \n \n 550\n 85\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n 140\n 85\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n bankaccnt_descrip\n \n \n \n \n \n 5\n 155\n 745\n 155\n 2\n \n \n \n \n \n \n \n \n \n \n 12\n \n \n 28\n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 31\n \n \n 111\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_printed\n \n \n \n \n 560\n 0\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_checkdate\n \n \n \n \n 170\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_posted\n \n \n \n \n 5\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_void\n \n \n \n \n 330\n 0\n 225\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n description\n \n \n \n \n 225\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n checkhead_ach_batch\n \n \n \n \n 225\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n number\n \n \n \n \n 750\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n currAbbr\n \n \n \n \n 60\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_misc\n \n \n \n \n 655\n 0\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_amount\n \n \n \n
\n \n 28\n \n \n \n 101\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 28\n \n 565\n 0\n 745\n 0\n 0\n \n \n \n 750\n 0\n 35\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n curr_symbol\n \n \n \n \n 655\n 0\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n total\n f_amount\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 358 BudgetsMasterList \N \n\n Budgets Master List\n BudgetsMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT formatDate(min(period_start)) AS f_firstperiod,\n formatDate(max(period_end)) AS f_lastperiod,\n budghead_name,\n budghead_descrip\n FROM budghead LEFT OUTER JOIN budgitem \n JOIN period ON (budgitem_period_id=period_id)\n ON (budgitem_budghead_id=budghead_id)\n GROUP BY budghead_name, budghead_descrip\n ORDER BY budghead_name;\n \n \n 76\n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n \n 6\n \n \n 21\n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 215\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n budghead_name\n \n \n \n \n 5\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_firstperiod\n \n \n \n \n 370\n 0\n 375\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n budghead_descrip\n \n \n \n \n 110\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_lastperiod\n \n \n \n
\n \n 16\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 38 CountTagsByWarehouse \N \n\n Count Tags By Site\n CountTagsByWarehouse\n With Barcoded Count Tag\n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse;\n \n \n detail\n SELECT invcnt_id,\n formatcounttagbarcode(invcnt_id) AS countag_barcode, \n invcnt_tagnumber, \n warehous_code,\n item_number, item_descrip1, item_descrip2,\n formatDate(invcnt_tagdate) AS createddate,\n invcnt_tag_username AS createdby,\n CASE WHEN (invcnt_cntdate IS NULL) THEN ''\n ELSE formatDate(invcnt_cntdate)\n END AS entereddate,\n CASE WHEN (invcnt_cntdate IS NULL) THEN ''\n ELSE invcnt_cnt_username\n END AS enteredby,\n CASE WHEN (NOT invcnt_posted) THEN ''\n ELSE formatDate(invcnt_postdate)\n END AS posteddate,\n CASE WHEN (NOT invcnt_posted) THEN ''\n ELSE invcnt_post_username\n END AS postedby,\n CASE WHEN (NOT invcnt_posted) THEN ''\n ELSE formatQty(invcnt_qoh_before)\n END AS qohbefore,\n CASE WHEN (invcnt_qoh_after IS NULL) THEN ''\n ELSE formatQty(invcnt_qoh_after)\n END AS qohafter,\n CASE WHEN (NOT invcnt_posted) THEN ''\n ELSE formatQty(invcnt_qoh_after - invcnt_qoh_before)\n END AS variance,\n CASE WHEN (NOT invcnt_posted) THEN ''\n WHEN ((invcnt_qoh_before = 0) AND (invcnt_qoh_after = 0)) THEN formatScrap(0)\n WHEN (invcnt_qoh_before=0) THEN formatScrap(1)\n ELSE formatScrap((1 - (invcnt_qoh_after / invcnt_qoh_before)) * -1)\n END AS percentage\n FROM invcnt, itemsite, item, whsinfo\n WHERE ((invcnt_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (DATE(invcnt_tagdate) BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n<? if not exists("showUnposted") ?>\n AND (invcnt_posted)\n<? endif ?>\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n)\nORDER BY invcnt_tagdate;\n \n \n 246\n \n \n \n \n \n \n \n \n 100\n 100\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n 494\n 120\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n \n 494\n 100\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n \n \n 5\n 235\n 745\n 235\n 2\n \n \n \n \n \n \n \n \n \n 12\n \n \n 71\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 5\n 60\n 745\n 60\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 113\n \n \n 419\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n createdby\n \n \n \n \n 45\n 0\n 225\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 419\n 45\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qohbefore\n \n \n \n \n 419\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n createddate\n \n \n \n \n 5\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 5\n 40\n 225\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 590\n 45\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n variance\n \n \n \n \n 300\n 70\n 370\n 30\n \n 128\n 12\n \n \n detail\n countag_barcode\n \n \n \n \n 505\n 45\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qohafter\n \n \n \n \n 295\n 0\n 104\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invcnt_tagnumber\n \n \n \n 15\n 105\n 750\n 105\n 0\n \n \n \n 505\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n entereddate\n \n \n \n \n 590\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n posteddate\n \n \n \n \n 675\n 45\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n percentage\n \n \n \n \n 505\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n enteredby\n \n \n \n \n 590\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n postedby\n \n \n \n \n 5\n 25\n 225\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n
\n \n 24\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n With Barcoded Count Tag 0 2013-07-26 16:17:54.38447 270 CheckFormat \N \n\n Sample Check Format\n CheckFormat\n OpenMFG Sample A/P Check Format\n Letter\n \n 50\n 50\n 50\n 50\n \n Head\n SELECT vend_name,\n vend_address1,\n vend_address3,\n vend_address3,\n vend_city,\n vend_state,\n vend_zip,\n formatDate(apchk_checkdate) AS f_checkdate,\n formatMoney(apchk_amount) AS f_amount,\n spellAmount(apchk_amount) AS f_words,\n CASE WHEN(apchk_void) THEN text('V O I D')\n ELSE text('')\n END AS f_void,\n apchk_for\n FROM apchk, vend\n WHERE ( (apchk_vend_id=vend_id)\n AND (apchk_id=<? value("apchk_id") ?>) );\n \n \n Detail\n SELECT apchkitem_invcnumber, apchkitem_ponumber,\n formatMoney(apchkitem_amount) AS f_amount\nFROM apchkitem\nWHERE (apchkitem_apchk_id=%1)\nORDER BY apchkitem_invcnumber;\n \n \n \n 197\n \n \n \n \n \n \n 300\n 75\n 150\n 40\n \n \n Arial\n 18\n bold\n \n \n \n \n Head\n f_void\n \n \n \n \n 60\n 30\n 150\n 40\n \n \n Arial\n 18\n bold\n \n \n \n \n Head\n f_void\n \n \n \n \n \n 60\n 155\n 325\n 20\n \n \n Helvetica\n 12\n normal\n \n \n \n \n Head\n apchk_for\n \n \n \n \n 555\n 30\n 150\n 40\n \n \n Arial\n 18\n bold\n \n \n \n \n Head\n f_void\n \n \n \n \n 60\n 120\n 150\n 40\n \n \n Arial\n 18\n bold\n \n \n \n \n Head\n f_void\n \n \n \n \n 85\n 75\n 185\n 20\n \n \n Helvetica\n 12\n normal\n \n \n \n \n Head\n vend_name\n \n \n \n \n 555\n 20\n 121\n 20\n \n \n Helvetica\n 12\n normal\n \n \n \n \n Head\n f_checkdate\n \n \n \n \n 45\n 100\n 675\n 20\n \n \n Helvetica\n 12\n normal\n \n \n \n \n Head\n f_words\n \n \n \n \n 555\n 120\n 150\n 40\n \n \n Arial\n 18\n bold\n \n \n \n \n Head\n f_void\n \n \n \n \n 555\n 75\n 150\n 20\n \n \n Helvetica\n 12\n normal\n \n \n \n \n Head\n f_amount\n \n \n \n
\n Apchkitem\n \n \n Detail\n \n 22\n \n \n 509\n 0\n 100\n 20\n \n \n Helvetica [Urw]\n 10\n normal\n \n \n \n \n Detail\n f_amount\n \n \n \n \n 390\n 0\n 100\n 20\n \n \n Helvetica [Urw]\n 10\n normal\n \n \n \n \n Detail\n apchkitem_ponumber\n \n \n \n \n 270\n 0\n 100\n 20\n \n \n Helvetica [Urw]\n 10\n normal\n \n \n \n \n Detail\n apchkitem_invcnumber\n \n \n \n
\n
\n OpenMFG Sample A/P Check Format 0 2004-08-26 10:48:34.979983 3 CreditMemo \N \n\n Credit Memo\n CreditMemo\n Sales Module Credit Memo with Logo and CM Currency\n \n \n select cmhead_id, cmhead_number from cmhead;\n \n Letter\n \n 28\n 28\n 0\n 0\n \n GroupHead\n SELECT remitto.*,\n cmhead_number,\n formatDate(cmhead_docdate) AS docdate,\n cust_number,\n cust_name,\n formatAddr(cmhead_billtoaddress1, cmhead_billtoaddress2, cmhead_billtoaddress3,\n COALESCE(cmhead_billtocity,'') || ' ' || COALESCE(cmhead_billtostate,'') || ' ' || COALESCE(cmhead_billtozip,''),\n cmhead_billtocountry)\n AS f_custaddr,\n cntct_phone AS cust_phone,\n cmhead_shipto_name,\n formatAddr(cmhead_shipto_address1, cmhead_shipto_address2, cmhead_shipto_address3,\n COALESCE(cmhead_shipto_city,'') ||' '|| COALESCE(cmhead_shipto_state,'') || ' '|| COALESCE(cmhead_shipto_zipcode,''),\n cmhead_shipto_country)\n AS f_shiptoaddr,\n CASE \n WHEN (cmhead_invcnumber='-1') THEN ''\n --note: must now set explicit type for Postgres 8.3+\n --add ' '\n ELSE text(cmhead_invcnumber)\n END AS invcnumber,\n cmhead_custponumber,\n cmhead_comments,\n cmhead_misc_descrip,\n curr_symbol,\n curr_name\n FROM remitto, cmhead, curr_symbol, custinfo\n LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id)\n WHERE ((cmhead_cust_id=cust_id)\n AND (cmhead_curr_id = curr_id)\n AND (cmhead_id=<? value("cmhead_id") ?>))\nORDER BY cmhead_number;\n \n \n Detail\n SELECT cmitem_linenumber,\n formatQty(cmitem_qtycredit) AS qtycredit,\n formatQty(cmitem_qtyreturned) AS qtyreturned,\n uom_name,\n item_number,\n item_descrip1,\n item_descrip2,\n formatSalesPrice(cmitem_unitprice) AS unitprice,\n formatMoney((cmitem_qtycredit * cmitem_qty_invuomratio) * (cmitem_unitprice / cmitem_price_invuomratio)) AS extprice,\n cmitem_comments\n FROM cmitem, itemsite, item, uom\n WHERE ((cmitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (cmitem_cmhead_id=<? value("cmhead_id") ?>))\nORDER BY cmitem_linenumber;\n \n \n GroupFoot\n SELECT formatExtPrice(SUM((cmitem_qtycredit * cmitem_qty_invuomratio) * cmitem_unitprice / cmitem_price_invuomratio)) AS extprice\n FROM cmhead, cmitem, itemsite, item\n WHERE ((cmitem_cmhead_id=cmhead_id)\n AND (cmitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (cmhead_id=<? value("cmhead_id") ?>));\n \n \n GroupExtended\n SELECT formatExtPrice( COALESCE(cmhead_freight,0.0) +\n ( SELECT COALESCE(SUM(tax * -1.0), 0)\n FROM ( SELECT ROUND(SUM(taxdetail_tax), 2) AS tax\n FROM tax JOIN calculateTaxDetailSummary('CM', cmhead_id, 'T')\n ON (taxdetail_tax_id=tax_id)\n GROUP BY tax_id ) AS data ) +\n COALESCE(cmhead_misc,0.0) +\n ( SELECT COALESCE(SUM((cmitem_qtycredit * cmitem_qty_invuomratio) *\n cmitem_unitprice / cmitem_price_invuomratio), 0.0)\n FROM cmitem\n WHERE (cmitem_cmhead_id=<? value("cmhead_id") ?>) ) \n ) AS totaldue,\n formatExtPrice(COALESCE(cmhead_freight,0.0)) AS freight,\n ( SELECT formatExtPrice(COALESCE(SUM(tax * -1.0), 0))\n FROM ( SELECT ROUND(SUM(taxdetail_tax), 2) AS tax\n FROM tax JOIN calculateTaxDetailSummary('CM', cmhead_id, 'T')\n ON (taxdetail_tax_id=tax_id)\n GROUP BY tax_id ) AS data ) AS tax,\n formatExtPrice(COALESCE(cmhead_misc,0.0)) AS misc\n FROM cmhead\n WHERE (cmhead_id=<? value("cmhead_id") ?>);\n\n \n \n logo\n SELECT image_data \nFROM image \nWHERE ((image_name='logo'));\n \n \n \n 451\n \n \n 50\n 370\n 120\n 20\n \n \n helvetica\n 12\n normal\n \n \n \n \n GroupHead\n cmhead_custponumber\n \n \n \n \n \n \n 660\n 130\n 135\n 20\n \n \n Helvetica\n 10\n normal\n \n \n \n \n GroupHead\n docdate\n \n \n \n 50\n 340\n 800\n 340\n 2\n \n \n \n \n \n 660\n 110\n 145\n 20\n \n \n Helvetica\n 10\n normal\n \n \n \n \n GroupHead\n cmhead_number\n \n \n \n \n 100\n 205\n 290\n 20\n \n \n Helvetica\n 12\n normal\n \n \n \n \n GroupHead\n cust_name\n \n \n \n 50\n 445\n 800\n 445\n 2\n \n \n \n \n 390\n 370\n 50\n 20\n \n \n helvetica\n 12\n normal\n \n \n \n \n GroupHead\n curr_symbol\n \n \n \n \n 50\n 80\n 260\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n GroupHead\n remitto_country\n \n \n \n \n 100\n 225\n 315\n 15\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n GroupHead\n f_custaddr\n \n \n \n \n \n \n 185\n 370\n 230\n 20\n \n \n helvetica\n 12\n normal\n \n \n \n \n GroupHead\n docdate\n \n \n \n \n 485\n 205\n 300\n 20\n \n \n Helvetica\n 12\n normal\n \n \n \n \n GroupHead\n cmhead_shipto_name\n \n \n \n \n \n \n 444\n 370\n 110\n 20\n \n \n helvetica\n 12\n normal\n \n \n \n \n GroupHead\n curr_name\n \n \n \n \n 50\n 95\n 200\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n GroupHead\n remitto_phone\n \n \n \n \n \n \n 50\n 50\n 200\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n GroupHead\n remitto_address1\n \n \n \n \n 485\n 225\n 315\n 15\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n GroupHead\n f_shiptoaddr\n \n \n \n \n 270\n 0\n 355\n 111\n \n stretch\n \n logo\n image_data\n \n \n \n \n \n 660\n 150\n 180\n 20\n \n \n Helvetica\n 10\n normal\n \n \n \n \n GroupHead\n cust_number\n \n \n \n \n 50\n 30\n 200\n 20\n \n \n Helvetica\n 10\n bold\n \n \n \n \n GroupHead\n remitto_name\n \n \n \n \n \n \n 50\n 65\n 260\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n GroupHead\n remitto_citystatezip\n \n \n \n \n \n \n \n 660\n 170\n 150\n 20\n \n \n Helvetica\n 10\n normal\n \n \n \n \n GroupHead\n invcnumber\n \n \n \n
\n detail\n \n \n Detail\n \n 82\n \n \n 160\n 55\n 600\n 17\n \n 14\n \n helvetica\n 10\n normal\n \n \n \n \n Detail\n cmitem_comments\n \n \n \n \n \n 670\n 5\n 100\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n Detail\n extprice\n \n \n \n \n 50\n 25\n 120\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n Detail\n qtycredit\n \n \n \n \n 260\n 5\n 300\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n Detail\n item_number\n \n \n \n \n 175\n 5\n 80\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n Detail\n uom_name\n \n \n \n \n 260\n 25\n 300\n 15\n \n \n helvetica\n 8\n normal\n \n \n \n \n Detail\n item_descrip1\n \n \n \n \n 520\n 5\n 100\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n Detail\n unitprice\n \n \n \n \n 260\n 40\n 300\n 15\n \n \n helvetica\n 8\n normal\n \n \n \n \n Detail\n item_descrip2\n \n \n \n \n 50\n 5\n 120\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n Detail\n qtyreturned\n \n \n \n
\n \n \n 144\n \n \n \n 670\n 5\n 100\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n GroupFoot\n extprice\n \n \n \n \n 60\n 55\n 515\n 17\n \n 14\n \n helvetica\n 10\n normal\n \n \n \n \n GroupHead\n cmhead_comments\n \n \n \n \n \n 670\n 65\n 100\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n GroupExtended\n tax\n \n \n \n \n \n 670\n 25\n 100\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n GroupExtended\n misc\n \n \n \n \n \n \n 670\n 45\n 100\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n GroupExtended\n freight\n \n \n \n \n \n 670\n 85\n 100\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n GroupExtended\n totaldue\n \n \n \n \n \n 60\n 25\n 525\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n GroupHead\n cmhead_misc_descrip\n \n \n \n
\n Sales Module Credit Memo with Logo and CM Currency 0 2013-07-26 16:17:54.38447 405 CustOrderAcknowledgement \N \n\n Customer Order Acknowledgement\n CustOrderAcknowledgement\n Customer Order Acknowledgement\n \n \n \n 0.05\n 0.05\n \n Letter\n \n 25\n 25\n 25\n 25\n \n head\n <? if not exists("shiphead_id") ?>\n--Run query if no shiphead_id passed - No Shipment Pack List\nSELECT cust_number,\n formatsobarcode(cohead_id) AS order_barcode,\n formataddr(addr_line1, addr_line2, addr_line3, (addr_city || ' ' || addr_state || ' ' || addr_postalcode), addr_country) AS corr_address,\n formataddr(cohead_billtoaddress1, cohead_billtoaddress2, cohead_billtoaddress3, (cohead_billtocity || ' ' || cohead_billtostate || ' ' || cohead_billtozipcode), cohead_billtocountry) AS billing_address, \n\n formataddr(cohead_shiptoaddress1, cohead_shiptoaddress2, cohead_shiptoaddress3, (cohead_shiptocity || ' ' || cohead_shiptostate || ' ' || cohead_shiptozipcode), cohead_shiptocountry) AS shipping_address, \n\n trim(cntct_first_name || ' ' || cntct_last_name) AS cust_contact,\n cohead_fob,\n cohead_billtoname,\n cohead_billtoaddress1,\n cohead_billtoaddress2,\n cohead_billtoaddress3,\n (cohead_billtocity || ' ' || cohead_billtostate || ' ' || cohead_billtozipcode) AS billtocitystatezip,\n cntct_phone AS cust_phone,\n cohead_shiptoname,\n cohead_shiptoaddress1,\n cohead_shiptoaddress2,\n cohead_shiptoaddress3,\n (cohead_shiptocity || ' ' || cohead_shiptostate || ' ' || cohead_shiptozipcode) AS shiptocitystatezip,\n cohead_number,\n cohead_shipvia,\n cohead_shiptophone,\n cohead_custponumber,\n formatDate(cohead_orderdate) AS orderdate,\n cohead_shipcomments, \n terms_descrip\n FROM cohead JOIN custinfo ON (cohead_cust_id=cust_id)\n JOIN terms ON (cohead_terms_id=terms_id)\n LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id)\n LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id)\n WHERE (cohead_id=<? value("sohead_id") ?>);\n\n-------------------\n<? else ?>\n--Run New Query for Header with shipment number\n-----------------------------------------------\n\nSELECT shiphead_number,\n\n cohead_number,\n formatsobarcode(cohead_id) AS order_barcode,\n cohead_shipvia,\n cohead_shiptophone,\n cohead_custponumber,\n formatDate(cohead_orderdate) AS orderdate,\n cohead_shipcomments, \n cohead_billtoname,\n formataddr(cohead_billtoaddress1, cohead_billtoaddress2, cohead_billtoaddress3,\n (cohead_billtocity || ' ' || cohead_billtostate || ' ' || cohead_billtozipcode), cohead_billtocountry) AS billing_address,\n cohead_shiptoname,\n formataddr(cohead_shiptoaddress1, cohead_shiptoaddress2, cohead_shiptoaddress3,\n (cohead_shiptocity || ' ' || cohead_shiptostate || ' ' || cohead_shiptozipcode), cohead_shiptocountry) AS shipping_address, \n\n cust_number,\n trim(cntct_first_name || ' ' || cntct_last_name) AS cust_contact,\n cntct_phone AS cust_phone,\n cohead_shipchrg_id,\n shipchrg_descrip,\n\n terms_descrip\n FROM shiphead\n JOIN cohead ON (cohead_id=shiphead_order_id)\n JOIN custinfo ON (cohead_cust_id=cust_id)\n JOIN terms ON (cohead_terms_id=terms_id)\n JOIN shipchrg ON (cohead_shipchrg_id = shipchrg_id)\n LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id)\n LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id)\n WHERE (shiphead_id=<? value("shiphead_id") ?>);\n\n<? endif ?>\n \n \n scheddate\n <? if not exists("shiphead_id") ?>\n--Query without shipment number\n\nSELECT formatDate(MIN(coitem_scheddate)) AS scheddate\n FROM coitem\n WHERE ((coitem_status <> 'X') AND (coitem_cohead_id=<? value("sohead_id") ?>));\n\n--\n<? else ?>\n--------------------------\n\n\nSELECT formatDate(MIN(coitem_scheddate)) AS scheddate\n FROM coitem, shipitem\n WHERE ((coitem_status <> 'X')\n AND (coitem_id=shipitem_orderitem_id)\n AND (shipitem_shiphead_id=<? value("shiphead_id") ?>));\n\n<? endif ?>\n \n \n detail\n salesOrderItems\n list\n \n \n logo\n SELECT image_data \nFROM image \nWHERE ((image_name='logo'));\n \n \n footer\n SELECT formatMoney(calcSalesOrderAmt(cohead_id, 'S')) AS f_subtotal,\n formatMoney(calcSalesOrderAmt(cohead_id, 'T')) AS f_total,\n formatMoney(calcSalesOrderAmt(cohead_id, 'B')) AS f_balance,\n formatMoney(calcSalesOrderAmt(cohead_id, 'X')) AS f_tax,\n formatMoney(calcSalesOrderAmt(cohead_id, 'C')) AS f_credit,\n formatMoney(cohead_freight) AS f_freight,\n formatMoney(cohead_misc) AS f_misc\nFROM cohead\nWHERE (cohead_id=<? value("sohead_id") ?>)\n;\n \n \n lastupdated\n SELECT formatDate(MAX(lastupdated)) AS f_lastupdated\n FROM (SELECT cohead_lastupdated AS lastupdated\n FROM cohead\n WHERE (cohead_id=<? value("sohead_id") ?>)\n UNION\n SELECT coitem_lastupdated AS lastupdated\n FROM coitem\n WHERE (coitem_cohead_id=<? value("sohead_id") ?>) ) AS data;\n \n \n 426\n \n \n 6\n 7\n 426\n 115\n \n stretch\n \n logo\n image_data\n \n \n \n 210\n 330\n 330\n 330\n 0\n \n \n \n \n 40\n 335\n 145\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_custponumber\n \n \n \n \n 539\n 39\n 250\n 25\n \n \n Times New Roman\n 20\n bold\n \n \n \n \n head\n cohead_number\n \n \n \n \n 470\n 330\n 647\n 330\n 0\n \n \n \n 200\n 335\n 165\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n terms_descrip\n \n \n \n 45\n 330\n 177\n 330\n 0\n \n \n \n 355\n 335\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n scheddate\n scheddate\n \n \n \n 15\n 415\n 785\n 415\n 2\n \n \n \n \n \n \n \n 360\n 330\n 440\n 330\n 0\n \n \n \n 622\n 70\n 110\n 20\n \n \n Arial\n 12\n normal\n \n \n \n \n head\n orderdate\n \n \n \n \n 269.976\n 160.037\n 491.976\n 160.037\n 0\n \n \n \n \n 535.987\n 170.037\n 254.338\n 20\n \n \n Arial\n 11\n normal\n \n \n \n \n head\n cohead_shiptoname\n \n \n \n \n 455\n 335\n 195\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_shipvia\n \n \n \n \n \n 655\n 335\n 95\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_fob\n \n \n \n \n 270.976\n 191.037\n 256\n 22.2821\n \n 10\n \n Arial\n 11\n normal\n \n \n \n \n head\n billing_address\n \n \n \n \n \n 535.987\n 190.037\n 253.562\n 20.2425\n \n 10\n \n Arial\n 11\n normal\n \n \n \n \n head\n shipping_address\n \n \n \n \n 670\n 330\n 750\n 330\n 0\n \n \n \n \n \n \n 271.976\n 170.037\n 256\n 20\n \n \n Arial\n 11\n normal\n \n \n \n \n head\n cohead_billtoname\n \n \n \n 535.987\n 160.037\n 766.987\n 160.037\n 0\n \n \n \n 17.6809\n 192.59\n 222\n 21.011\n \n 10\n \n Arial\n 11\n normal\n \n \n \n \n head\n billing_address\n \n \n \n \n 17.6809\n 171.59\n 213\n 20\n \n \n Arial\n 11\n normal\n \n \n \n \n head\n cohead_billtoname\n \n \n \n 15.8119\n 162.124\n 224.257\n 162.137\n 0\n \n \n \n
\n detail\n \n detail\n groupby\n \n 36\n \n \n 37\n 7\n 707\n 21\n \n 14\n \n Arial\n 12\n normal\n \n \n \n \n head\n cohead_shipcomments\n \n \n \n \n \n lineitem\n coitem_linenumber\n \n 6\n \n \n \n \n detail\n \n 41\n \n \n 15\n 0\n 85\n 20\n \n \n Arial\n 9\n normal\n \n \n \n \n detail\n item_number_cust\n \n \n \n \n 600\n 5\n 27\n 17\n \n \n Arial\n 9\n normal\n \n \n \n \n detail\n qty_uom\n \n \n \n \n 515\n 0\n 65\n 20\n \n \n Arial\n 9\n normal\n \n \n \n \n detail\n f_balance\n \n \n \n \n 640\n 3\n 56\n 16\n \n \n Arial\n 9\n normal\n \n \n \n \n detail\n f_price\n \n \n \n \n 125\n 25\n 435\n 12\n \n 14\n \n Arial\n 8\n normal\n \n \n \n \n detail\n coitem_memo\n \n \n \n \n 705\n 3\n 82\n 17\n \n \n Arial\n 9\n normal\n \n \n \n \n detail\n f_extprice\n \n \n \n \n 435\n 0\n 65\n 20\n \n \n Arial\n 9\n normal\n \n \n \n \n detail\n f_qtyord\n \n \n \n \n 102\n 0\n 325\n 20\n \n \n Arial\n 9\n normal\n \n \n \n \n detail\n item_descrip1_cust\n \n \n \n
\n \n \n 233\n \n \n \n \n 635\n 28\n 97\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n footer\n f_freight\n \n \n \n \n 635\n 48\n 97\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n footer\n f_misc\n \n \n \n \n \n 605\n 138\n 172\n 32\n \n \n Arial\n 16\n bold\n \n \n \n \n footer\n f_balance\n \n \n \n \n \n 640\n 8\n 92\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n footer\n f_subtotal\n \n \n \n \n \n 635\n 68\n 97\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n footer\n f_tax\n \n \n \n \n 630\n 88\n 102\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n footer\n f_total\n \n \n \n \n \n \n 630\n 108\n 102\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n footer\n f_credit\n \n \n \n \n 28\n \n
\n Customer Order Acknowledgement 0 2013-07-26 16:17:54.38447 59 CustomerInformation \N \n\n Customer Information\n CustomerInformation\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT cust_name, cust_number,\n ba.addr_line1 AS cust_address1, ba.addr_line2 AS cust_address2, ba.addr_line3 AS cust_address3,\n ba.addr_city AS cust_city, ba.addr_state AS cust_state, ba.addr_postalcode AS cust_zipcode,\n (ba.addr_city || ', ' || ba.addr_state || ' ' || ba.addr_postalcode) AS citystatezip,\n trim(bc.cntct_first_name || ' ' || bc.cntct_last_name) AS cust_contact, bc.cntct_phone AS cust_phone, bc.cntct_fax AS cust_fax, bc.cntct_email AS cust_email,\n ca.addr_line1 AS cust_corraddress1, ca.addr_line2 AS cust_corraddress2, ca.addr_line3 AS cust_corraddress3,\n ca.addr_city AS cust_corrcity, ca.addr_state AS cust_corrstate, ca.addr_postalcode AS cust_corrzipcode,\n (ca.addr_city || ', ' || ca.addr_state || ' ' || ca.addr_postalcode) AS corrcitystatezip,\n trim(cc.cntct_first_name || ' ' || cc.cntct_last_name) AS cust_corrcontact, cc.cntct_phone AS cust_corrphone,\n cc.cntct_fax AS cust_corrfax, cc.cntct_email AS cust_corremail,\n CASE WHEN (cust_creditstatus='G') THEN 'In Good Standing'\n WHEN (cust_creditstatus='W') THEN 'On Credit Warning'\n WHEN (cust_creditstatus='H') THEN 'On Credit Hold'\n ELSE ('Unknown Status: ' || cust_creditstatus)\n END AS f_creditstatus,\n cust_comments\n FROM custinfo\n LEFT OUTER JOIN cntct cc ON (cust_corrcntct_id=cc.cntct_id)\n LEFT OUTER JOIN addr ca ON (cc.cntct_addr_id=ca.addr_id)\n LEFT OUTER JOIN cntct bc ON (cust_cntct_id=bc.cntct_id)\n LEFT OUTER JOIN addr ba ON (bc.cntct_addr_id=ba.addr_id)\n WHERE (cust_id=<? value("cust_id") ?>);\n \n \n firstlastorderdate\n SELECT formatDate(MIN(cohist_invcdate)) AS firstdate,\n formatDate(MAX(cohist_invcdate)) AS lastdate\n FROM cohist\nWHERE (cohist_cust_id=<? value("cust_id") ?>);\n \n \n lysales\n SELECT formatMoney(COALESCE(SUM(round(cohist_qtyshipped * cohist_unitprice,2)), 0)) AS lysales FROM cohist WHERE ( (cohist_invcdate BETWEEN (DATE_TRUNC('year', CURRENT_TIMESTAMP) - INTERVAL '1 year') AND (DATE_TRUNC('year', CURRENT_TIMESTAMP) - INTERVAL '1 day')) AND (cohist_cust_id=<? value("cust_id") ?>) );\n \n \n ytdsales\n SELECT formatExtPrice(SUM(round(cohist_qtyshipped * cohist_unitprice,2))) AS ytdsales\n FROM cohist\n WHERE ((cohist_invcdate>=DATE_TRUNC('year', CURRENT_TIMESTAMP))\n AND (cohist_cust_id=<? value("cust_id") ?>) );\n \n \n backlog\n SELECT formatMoney( COALESCE( SUM( (noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio) ), 0 ) ) AS backlog FROM cohead, coitem, itemsite, item WHERE ( (coitem_cohead_id=cohead_id) AND (coitem_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (coitem_status='O') AND (cohead_cust_id=<? value("cust_id") ?>) );\n \n \n OpenBalance\n SELECT formatMoney( COALESCE( SUM( CASE WHEN (aropen_doctype IN ('I', 'D')) THEN (aropen_amount - aropen_paid) ELSE ((aropen_amount - aropen_paid) * -1) END ), 0 ) ) AS f_balance FROM aropen WHERE ( (aropen_open) AND (aropen_cust_id=<? value("cust_id") ?>) );\n \n \n LateBalance\n SELECT formatMoney( noNeg( COALESCE( SUM( CASE WHEN (aropen_doctype IN ('I', 'D')) THEN (aropen_amount - aropen_paid) ELSE ((aropen_amount - aropen_paid) * -1) END ), 0 ) ) ) AS f_balance FROM aropen WHERE ( (aropen_open) AND (aropen_duedate < CURRENT_DATE) AND (aropen_cust_id=<? value("cust_id") ?>) );\n\n \n \n Comments\n SELECT comment_source_id AS cust_id,\n comment_id,\n formatDate(comment_date) AS f_date,\n comment_user,\n comment_text\n FROM comment\n WHERE ( (comment_source='C')\n AND (comment_source_id=<? value("cust_id") ?>) )\nORDER BY comment_date;\n \n \n History\n SELECT aropen_cust_id AS cust_id,\n aropen_id AS aropenid, -1 AS applyid,\n aropen_docnumber AS sortnumber,\n aropen_docnumber AS docnumber,\n formatBoolYN(aropen_open) AS f_open,\n CASE WHEN (aropen_doctype='I') THEN text('Invoice')\n WHEN (aropen_doctype='C') THEN text('C/M')\n WHEN (aropen_doctype='D') THEN text('D/M')\n WHEN (aropen_doctype='R') THEN text('C/D')\n ELSE text('Other')\n END AS documenttype,\n formatDate(aropen_docdate) AS f_docdate,\n formatDate(aropen_duedate) AS f_duedate,\n formatMoney(aropen_amount) AS f_amount,\n formatMoney((aropen_amount - aropen_paid)) AS f_balance\nFROM aropen\nWHERE (aropen_cust_id=<? value("cust_id") ?>)\n\nUNION\nSELECT aropen_cust_id AS cust_id,\n -1 AS aropenid, arapply_source_aropen_id AS applyid,\n aropen_docnumber AS sortnumber,\n CASE WHEN (arapply_source_doctype='C') THEN arapply_source_docnumber\n WHEN (arapply_source_doctype='K') THEN arapply_refnumber\n ELSE :error\n END AS docnumber,\n '' AS f_open,\n CASE WHEN (arapply_source_doctype='C') THEN text('C/M')\n WHEN (arapply_fundstype='C') THEN text('Check')\n WHEN (arapply_fundstype='T') THEN text('Certified Check')\n WHEN (arapply_fundstype='M') THEN text('Master Card')\n WHEN (arapply_fundstype='V') THEN text('Visa')\n WHEN (arapply_fundstype='A') THEN text('American Express')\n WHEN (arapply_fundstype='D') THEN text('Discover Card')\n WHEN (arapply_fundstype='R') THEN text('Other Credit Card')\n WHEN (arapply_fundstype='K') THEN text('Cash')\n WHEN (arapply_fundstype='W') THEN text('Wire Transfer')\n WHEN (arapply_fundstype='O') THEN text('Other')\n END AS documenttype,\n formatDate(arapply_postdate) AS f_docdate,\n '' AS f_duedate,\n formatMoney(arapply_applied) AS f_amount,\n '' AS f_balance\nFROM arapply, aropen\nWHERE ( (arapply_target_doctype IN ('I', 'D'))\n AND (arapply_target_doctype=aropen_doctype)\n AND (arapply_target_docnumber=aropen_docnumber)\n AND (arapply_cust_id=<? value("cust_id") ?>)\n AND (aropen_cust_id=<? value("cust_id") ?>) )\n\nUNION\nSELECT aropen_cust_id AS cust_id,\n -1 AS aropenid, arapply_target_aropen_id AS applyid,\n aropen_docnumber AS sortnumber,\n arapply_target_docnumber AS docnumber,\n '' AS f_open,\n CASE WHEN (arapply_target_doctype='I') THEN text('Invoice')\n WHEN (arapply_target_doctype='D') THEN text('D/M')\n ELSE text('Other')\n END AS documenttype,\n formatDate(arapply_postdate) AS f_docdate,\n '' AS f_duedate,\n formatMoney(arapply_applied) AS f_amount,\n '' AS f_balance\nFROM arapply, aropen\nWHERE ( (arapply_source_doctype IN ('K', 'C'))\n AND (arapply_source_doctype=aropen_doctype)\n AND (arapply_source_docnumber=aropen_docnumber)\n AND (arapply_cust_id=<? value("cust_id") ?>)\n AND (aropen_cust_id=<? value("cust_id") ?>) )\n\nORDER BY sortnumber, applyid;\n \n \n 392\n \n \n \n 105\n 365\n 575\n 15\n \n 0\n \n Arial\n 8\n bold\n \n \n \n \n head\n cust_comments\n \n \n \n \n 105\n 305\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n firstlastorderdate\n firstdate\n \n \n \n \n 370\n 160\n 370\n 295\n 0\n \n \n 5\n 155\n 360\n 155\n 0\n \n \n \n \n 100\n 229\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n cust_corrcontact\n \n \n \n \n 385\n 160\n 350\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n cust_address1\n \n \n \n \n 100\n 260\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n cust_corrfax\n \n \n \n \n \n 385\n 175\n 350\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n cust_address2\n \n \n \n \n 10\n 204\n 350\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n corrcitystatezip\n \n \n \n \n 475\n 229\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n cust_contact\n \n \n \n \n \n 385\n 190\n 350\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n cust_address3\n \n \n \n \n \n 600\n 345\n 140\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_creditstatus\n \n \n \n 5\n 295\n 740\n 295\n 2\n \n \n \n \n \n 340\n 305\n 145\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n lysales\n lysales\n \n \n \n \n 600\n 325\n 140\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n LateBalance\n f_balance\n \n \n \n \n 475\n 275\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n cust_email\n \n \n \n \n 100\n 275\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n cust_corremail\n \n \n \n \n 475\n 260\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n cust_fax\n \n \n \n \n \n 100\n 75\n 295\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_name\n \n \n \n \n 10\n 190\n 350\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n cust_corraddress3\n \n \n \n \n \n 340\n 325\n 145\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n ytdsales\n ytdsales\n \n \n \n \n \n \n 475\n 245\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n cust_phone\n \n \n \n \n 380\n 155\n 735\n 155\n 0\n \n \n \n \n \n \n 10\n 160\n 350\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n cust_corraddress1\n \n \n \n \n 340\n 345\n 145\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n backlog\n backlog\n \n \n \n \n \n 10\n 175\n 350\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n cust_corraddress2\n \n \n \n \n 100\n 245\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n cust_corrphone\n \n \n \n \n 105\n 325\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n firstlastorderdate\n lastdate\n \n \n \n \n 600\n 305\n 140\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n OpenBalance\n f_balance\n \n \n \n \n \n \n 100\n 95\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_number\n \n \n \n \n 385\n 204\n 350\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n citystatezip\n \n \n \n \n \n \n
\n Comments\n \n Head\n cust_id\n \n 46\n \n 55\n 40\n 745\n 40\n 0\n \n \n \n \n \n \n \n \n \n Comments\n \n 16\n \n \n 260\n 0\n 484\n 15\n \n 5\n \n Arial\n 8\n bold\n \n \n \n \n Comments\n comment_text\n \n \n \n \n 60\n 0\n 95\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Comments\n f_date\n \n \n \n \n 160\n 0\n 95\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Comments\n comment_user\n \n \n \n
\n
\n History\n \n Head\n cust_id\n \n 46\n \n \n \n \n \n \n \n \n \n 55\n 40\n 745\n 40\n 0\n \n \n \n \n \n History\n \n 16\n \n \n 60\n 0\n 65\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n History\n f_open\n \n \n \n \n 290\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n History\n f_docdate\n \n \n \n \n 210\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n History\n docnumber\n \n \n \n \n 380\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n History\n f_duedate\n \n \n \n \n 470\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n History\n f_amount\n \n \n \n \n 130\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n History\n documenttype\n \n \n \n \n 560\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n History\n f_balance\n \n \n \n
\n \n 18\n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 366 EmployeeList \N \n\n Employee List\n EmployeeList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT e.emp_id, m.emp_id, warehous_code, e.emp_code, e.emp_number,\n cntct_first_name, cntct_last_name, \n m.emp_code AS mgr_code, dept_number, shift_number,\n CASE WHEN (e.emp_active) THEN 'Yes'\n ELSE 'No'\n END AS f_active \nFROM emp e \n LEFT OUTER JOIN cntct ON (emp_cntct_id=cntct_id) \n LEFT OUTER JOIN whsinfo ON (emp_warehous_id=warehous_id) \n LEFT OUTER JOIN emp m ON (e.emp_mgr_emp_id=m.emp_id) \n LEFT OUTER JOIN shift ON (e.emp_shift_id=shift_id) \n LEFT OUTER JOIN dept ON (e.emp_dept_id=dept_id) \nWHERE ((LENGTH(TRIM(COALESCE(<? value("searchString") ?>,''))) = 0)\n<? if exists("searchCode") ?>\n OR (e.emp_code ~* <? value("searchString") ?>)\n<? endif ?>\n<? if exists("searchDept") ?>\n OR (dept_number ~* <? value("searchString") ?>)\n OR (dept_name ~* <? value("searchString") ?>)\n<? endif ?>\n<? if exists("searchMgr") ?>\n OR (m.emp_code ~* <? value("searchString") ?>)\n OR (m.emp_number ~* <? value("searchString") ?>)\n<? endif ?>\n<? if exists("searchNumber") ?>\n OR (e.emp_number ~* <? value("searchString") ?>)\n<? endif ?>\n<? if exists("searchName") ?>\n OR (cntct_first_name ~* <? value("searchString") ?>)\n OR (cntct_last_name ~* <? value("searchString") ?>)\n<? endif ?>\n<? if exists("searchShift") ?>\n OR (shift_number ~* <? value("searchString") ?>)\n OR (shift_name ~* <? value("searchString") ?>)\n<? endif ?>\n )\n<? if exists("activeOnly") ?>\n AND e.emp_active \n<? endif ?>\n<? if exists("warehouse_id") ?>\n AND (warehous_id=<? value("warehouse_id") ?>)\n<? endif ?>\nORDER BY emp_code; \n \n \n head\n SELECT 'Search for "' || <? value("searchString") ?> ||\n '"' ||\n<? if exists("searchCode") ?> ' in Employee Code,' || <? endif ?>\n<? if exists("searchDept") ?> ' in Department, ' || <? endif ?>\n<? if exists("searchMgr") ?> ' in Manager, ' || <? endif ?>\n<? if exists("searchNumber") ?> ' in Employee Number, ' || <? endif ?>\n<? if exists("searchShift") ?> ' in Shift, ' || <? endif ?>\n<? if exists("activeOnly") ?> ' Among Active Employees'\n<? else ?> ' Among All Employees'\n<? endif ?>\nAS filter;\n \n \n 131\n \n \n 390\n 40\n 360\n 31\n \n 0\n \n Arial\n 8\n normal\n \n \n \n \n head\n filter\n \n \n \n \n \n \n 747\n 65\n 42\n 12\n \n 0\n \n Arial\n 8\n normal\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 10\n 130\n 750\n 130\n 2\n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n
\n detail\n \n \n detail\n \n 31\n \n \n 460\n 0\n 130\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cntct_first_name\n \n \n \n \n 605\n 0\n 130\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cntct_last_name\n \n \n \n \n 170\n 15\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n dept_number\n \n \n \n \n 310\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shift_number\n \n \n \n \n 170\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n emp_number\n \n \n \n \n 375\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n mgr_code\n \n \n \n \n 10\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n emp_code\n \n \n \n \n 112\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_active\n \n \n \n
\n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 215 ExpiredInventoryByClassCode \N \n\n Expired Inventory By Class Code\n ExpiredInventoryByClassCode\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?>\n (SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Warehouses')\n <? endif ?>\n AS warehouse,\n <? if exists("classcode_id") ?>\n (SELECT (classcode_code || '-' || classcode_descrip)\n FROM classcode\n WHERE (classcode_id=<? value("classcode_id") ?>) )\n <? elseif exists("classcode_pattern") ?>\n text(<? value("classcode_pattern") ?>)\n <? else ?>\n text('All Class Codes')\n <? endif ?>\n AS classcode,\n <? if exists("perishability") ?> \n 'Perishability'\n <? else ?>\n 'Warranty'\n <? endif ?> AS expiretype,\n <? if exists("showValue") ?>\n <? if exists("useActualCosts") ?>\n text('Show Inventory Value with Actual Costs')\n <? elseif exists("useStandardCosts") ?>\n text('Show Inventory Value with Standard Costs')\n <? else ?>\n text('Show Inventory Value with Posted Costs')\n <? endif ?>\n AS showvalues,\n text('Unit Cost') AS f_unitcost,\n text('Value') AS f_value,\n <? else ?>\n text('') AS showvalues,\n text('') AS f_unitcost,\n text('') AS f_value,\n <? endif ?>\n int4(<? value("thresholdDays") ?>) AS f_thresholddays;\n \n \n detail\n SELECT warehous_code,\n item_number,\n item_descrip1,\n item_descrip2,\n uom_name,\n ls_number AS itemloc_lotserial,\n formatQty(itemloc_qty) AS f_qoh,\n formatDate(itemloc_expiration) AS f_expiration,\n <? if exists("showValue") ?>\n formatCost(cost)\n <? else ?>\n text('')\n <? endif ?>\n AS f_unitcost,\n noNeg(cost * itemloc_qty) AS value,\n <? if exists("showValue") ?>\n formatExtPrice(noNeg(cost * itemloc_qty))\n <? else ?>\n text('')\n <? endif ?>\n AS f_value\n FROM ( SELECT itemsite_id,\n warehous_code,\n item_number,\n item_descrip1,\n item_descrip2,\n uom_name,\n ls_number,\n itemloc_qty,\n<? if exists("perishability") ?>\n itemloc_expiration,\n<? elseif exists("warranty") ?>\n itemloc_warrpurc AS itemloc_expiration,\n<? endif ?>\n <? if exists("useActualCosts") ?>\n actcost(itemsite_item_id)\n <? elseif exists("useStandardCosts") ?>\n stdcost(itemsite_item_id)\n <? else ?>\n (itemsite_value / CASE WHEN(itemsite_qtyonhand=0) THEN 1 ELSE itemsite_qtyonhand END)\n <? endif ?>\n AS cost\n FROM itemloc, itemsite, item, whsinfo, uom, ls\n WHERE ((itemloc_itemsite_id=itemsite_id)\n AND (itemloc_ls_id=ls_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n<? if exists("perishability") ?>\n AND (itemsite_perishable)\n AND (itemloc_expiration < (CURRENT_DATE + <? value("thresholdDays") ?>))\n<? elseif exists("warranty") ?>\n AND (itemsite_warrpurc)\n AND (itemloc_warrpurc < (CURRENT_DATE + <? value("thresholdDays") ?>))\n<? endif ?>\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("classcode_id") ?>\n AND (item_classcode_id=<? value("classcode_id") ?>)\n<? elseif exists("classcode_pattern") ?>\n AND (item_classcode_id IN (SELECT classcode_id\n FROM classcode\n WHERE classcode_code ~ <? value("classcode_pattern") ?>) )\n<? endif ?>\n )\n ) AS data\nORDER BY warehous_code,\n<? if exists("orderByInventoryValue") ?>\n value DESC\n<? elseif exists("orderByExpirationDate") ?>\n itemloc_expiration\n<? else ?>\n item_number\n<? endif ?>\n \n \n 237\n \n \n \n \n 440\n 140\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n showvalues\n \n \n \n \n 575\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_unitcost\n \n \n \n \n \n \n \n \n \n \n \n 130\n 140\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n 660\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_value\n \n \n \n 5\n 227\n 745\n 227\n 2\n \n \n \n 130\n 120\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n classcode\n \n \n \n \n \n \n 130\n 160\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n expiretype\n \n \n \n \n \n 540\n 120\n 195\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_thresholddays\n \n \n \n \n \n 6\n \n \n 42\n \n 5\n 35\n 745\n 32\n 2\n \n \n \n \n \n \n 660\n 5\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_value\n \n \n \n \n \n \n \n \n 575\n 5\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_unitcost\n \n \n \n
\n detail\n \n \n detail\n \n 52\n \n \n 350\n 15\n 135\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_expiration\n \n \n \n \n 102\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 660\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_value\n \n \n \n \n 25\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 490\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qoh\n \n \n \n \n 265\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 575\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_unitcost\n \n \n \n \n 102\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 102\n 15\n 240\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 350\n 0\n 135\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemloc_lotserial\n \n \n \n
\n \n 17\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 285 FinancialReport \N \n\n Financial Report\n FinancialReport\n Ad Hoc Report\n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT flhead_name,\n CASE WHEN(trim(BOTH FROM COALESCE(flhead_custom_label,''))='') THEN 'Custom'\n ELSE flhead_custom_label\n END AS custom_label,\n CASE WHEN(flhead_usealtbegin) THEN flhead_altbegin\n ELSE text('Begining')\n END AS begining_label,\n CASE WHEN(flhead_usealtend) THEN flhead_altend\n ELSE text('Ending')\n END AS ending_label,\n CASE WHEN(flhead_usealtdebits) THEN flhead_altdebits\n ELSE text('Debits')\n END AS debits_label,\n CASE WHEN(flhead_usealtcredits) THEN flhead_altcredits\n ELSE text('Credits')\n END AS credits_label,\n CASE WHEN(flhead_usealtbudget) THEN flhead_altbudget\n ELSE text('Budget')\n END AS budget_label,\n CASE WHEN(flhead_usealtdiff) THEN flhead_altdiff\n ELSE text('Difference')\n END AS diff_label\n FROM flhead\n WHERE (flhead_id=<? value("flhead_id") ?>)\n \n \n detail\n SELECT financialReport(<? value("flhead_id") ?>, period_id,<? value("interval") ?>,<? value("prj_id") ?>)\n FROM period\n WHERE (period_id IN (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n ));\nSELECT period_id, period_start, formatperiodname(period_id,<? value("interval") ?>) AS f_period, flrpt_order,\n ( repeat(' ', flrpt_level) || flgrp_name ) AS name,\n CASE WHEN(flgrp_summarize AND flgrp_showstart) THEN formatMoney(flrpt_beginning)\n ELSE NULL\n END AS beginning,\n CASE WHEN(flgrp_summarize AND flgrp_showdelta) THEN formatMoney(flrpt_debits)\n ELSE NULL\n END AS debits,\n CASE WHEN(flgrp_summarize AND flgrp_showdelta) THEN formatMoney(flrpt_credits)\n ELSE NULL\n END AS credits,\n CASE WHEN(flgrp_summarize AND flgrp_showend) THEN formatMoney(flrpt_ending)\n ELSE NULL\n END AS ending,\n CASE WHEN(flgrp_summarize AND flgrp_showbudget) THEN formatMoney(flrpt_budget)\n ELSE NULL\n END AS budget,\n CASE WHEN(flgrp_summarize AND flgrp_showdiff) THEN formatMoney(flrpt_diff)\n ELSE NULL\n END AS diff,\n CASE WHEN(flgrp_summarize AND flgrp_showcustom) THEN formatMoney(flrpt_custom)\n ELSE NULL\n END AS custom,\n CASE WHEN(flgrp_summarize AND flgrp_showstartprcnt) THEN formatPrcnt(flrpt_beginningprcnt)\n ELSE NULL\n END AS beginningprcnt,\n CASE WHEN(flgrp_summarize AND flgrp_showdeltaprcnt) THEN formatPrcnt(flrpt_debitsprcnt)\n ELSE NULL\n END AS debitsprcnt,\n CASE WHEN(flgrp_summarize AND flgrp_showdeltaprcnt) THEN formatPrcnt(flrpt_creditsprcnt)\n ELSE NULL\n END AS creditsprcnt,\n CASE WHEN(flgrp_summarize AND flgrp_showendprcnt) THEN formatPrcnt(flrpt_endingprcnt)\n ELSE NULL\n END AS endingprcnt,\n CASE WHEN(flgrp_summarize AND flgrp_showbudgetprcnt) THEN formatPrcnt(flrpt_budgetprcnt)\n ELSE NULL\n END AS budgetprcnt,\n CASE WHEN(flgrp_summarize AND flgrp_showdiffprcnt) THEN formatPrcnt(flrpt_diffprcnt)\n ELSE NULL\n END AS diffprcnt,\n CASE WHEN(flgrp_summarize AND flgrp_showcustomprcnt) THEN formatPrcnt(flrpt_customprcnt)\n ELSE NULL\n END AS customprcnt\n FROM flrpt, flgrp, period\n WHERE ((flrpt_type='G')\n AND (flrpt_type_id=flgrp_id)\n AND (flrpt_flhead_id=<? value("flhead_id") ?>)\n AND (flrpt_period_id=period_id)\n AND (flrpt_username=getEffectiveXtUser())\n AND (flrpt_interval=<? value("interval") ?>)\n AND (period_id IN (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n )))\nUNION\nSELECT period_id, period_start, formatperiodname(period_id,<? value("interval") ?>) AS f_period, flrpt_order,\n ( repeat(' ', flrpt_level) ||\n CASE WHEN(accnt_id IS NULL) THEN ('Unknown Account ID ' || flitem_accnt_id)\n ELSE (formatGLAccount(accnt_id) || '-' || accnt_descrip)\n END\n ) AS name,\n formatMoney(flrpt_beginning) AS beginning,\n formatMoney(flrpt_debits) AS debits,\n formatMoney(flrpt_credits) AS credits,\n formatMoney(flrpt_ending) AS ending,\n formatMoney(flrpt_budget) AS budget,\n formatMoney(flrpt_diff) AS diff,\n formatMoney(flrpt_custom) AS custom,\n formatPrcnt(flrpt_beginningprcnt) AS beginningprcnt,\n formatPrcnt(flrpt_debitsprcnt) AS debitsprcnt,\n formatPrcnt(flrpt_creditsprcnt) AS creditsprcnt,\n formatPrcnt(flrpt_endingprcnt) AS endingprcnt,\n formatPrcnt(flrpt_budgetprcnt) AS budgetprcnt,\n formatPrcnt(flrpt_diffprcnt) AS diffprcnt,\n formatPrcnt(flrpt_customprcnt) AS customprcnt\n FROM flrpt LEFT OUTER JOIN accnt ON (flrpt_accnt_id=accnt_id), flitem, period\n WHERE ((flrpt_type='I')\n AND (flrpt_type_id=flitem_id)\n AND (flrpt_flhead_id=<? value("flhead_id") ?>)\n AND (flrpt_period_id=period_id)\n AND (flrpt_username=getEffectiveXtUser())\n AND (flrpt_interval=<? value("interval") ?>)\n<? if not exists("showzeros") ?>\n AND ((flrpt_beginning <> 0) \n OR (flrpt_debits <> 0)\n OR (flrpt_credits <> 0)\n OR (flrpt_ending <> 0)\n OR (flrpt_budget <> 0)\n OR (flrpt_diff <> 0)\n OR (flrpt_custom <> 0))\n<? endif ?>\n AND (period_id IN (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n )))\nUNION\nSELECT period_id, period_start, formatperiodname(period_id,<? value("interval") ?>) AS f_period, flrpt_order,\n ( repeat(' ', flrpt_level) || flspec_name ) AS name,\n formatMoney(flrpt_beginning) AS beginning,\n formatMoney(flrpt_debits) AS debits,\n formatMoney(flrpt_credits) AS credits,\n formatMoney(flrpt_ending) AS ending,\n formatMoney(flrpt_budget) AS budget,\n formatMoney(flrpt_diff) AS diff,\n formatMoney(flrpt_custom) AS custom,\n formatPrcnt(flrpt_beginningprcnt) AS beginningprcnt,\n formatPrcnt(flrpt_debitsprcnt) AS debitsprcnt,\n formatPrcnt(flrpt_creditsprcnt) AS creditsprcnt,\n formatPrcnt(flrpt_endingprcnt) AS endingprcnt,\n formatPrcnt(flrpt_budgetprcnt) AS budgetprcnt,\n formatPrcnt(flrpt_diffprcnt) AS diffprcnt,\n formatPrcnt(flrpt_customprcnt) AS customprcnt\n FROM flrpt, flspec, period\n WHERE ((flrpt_type='S')\n AND (flrpt_type_id=flspec_id)\n AND (flrpt_flhead_id=<? value("flhead_id") ?>)\n AND (flrpt_period_id=period_id)\n AND (flrpt_username=getEffectiveXtUser())\n AND (flrpt_interval=<? value("interval") ?>)\n AND (period_id IN (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n )))\nUNION\nSELECT period_id, period_start, formatperiodname(period_id,<? value("interval") ?>) AS f_period, flrpt_order,\n ( repeat(' ', flrpt_level) ||\n CASE WHEN(flrpt_type='T' AND flrpt_level=0) THEN COALESCE(flrpt_altname,'Total')\n WHEN(flrpt_type='T') THEN COALESCE(flrpt_altname,'Subtotal')\n ELSE ('Type ' || flrpt_type || ' ' || text(flrpt_type_id))\n END\n ) AS name,\n formatMoney(flrpt_beginning) AS beginning,\n formatMoney(flrpt_debits) AS debits,\n formatMoney(flrpt_credits) AS credits,\n formatMoney(flrpt_ending) AS ending,\n formatMoney(flrpt_budget) AS budget,\n formatMoney(flrpt_diff) AS diff,\n formatMoney(flrpt_custom) AS custom,\n formatPrcnt(flrpt_beginningprcnt) AS beginningprcnt,\n formatPrcnt(flrpt_debitsprcnt) AS debitsprcnt,\n formatPrcnt(flrpt_creditsprcnt) AS creditsprcnt,\n formatPrcnt(flrpt_endingprcnt) AS endingprcnt,\n formatPrcnt(flrpt_budgetprcnt) AS budgetprcnt,\n formatPrcnt(flrpt_diffprcnt) AS diffprcnt,\n formatPrcnt(flrpt_customprcnt) AS customprcnt\n FROM flrpt, period\n WHERE ((NOT (flrpt_type IN ('G','I','S')))\n AND (flrpt_flhead_id=<? value("flhead_id") ?>)\n AND (flrpt_period_id=period_id)\n AND (flrpt_username=getEffectiveXtUser())\n AND (flrpt_interval=<? value("interval") ?>)\n AND (period_id IN (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n )))\n ORDER BY period_start, flrpt_order;\n \n \n notes\n SELECT flhead_notes AS notes\nFROM flhead\nWHERE ((flhead_id=<? value("flhead_id") ?>)\n AND (length(flhead_notes) > 0))\n \n \n 136\n \n \n \n 100\n 104\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n flhead_name\n \n \n \n \n \n \n 5\n \n \n 38\n \n \n 775\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n diff_label\n \n \n \n \n \n \n \n \n 615\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n ending_label\n \n \n \n \n \n \n 375\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n begining_label\n \n \n \n \n 455\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n debits_label\n \n \n \n 5\n 30\n 994\n 30\n 2\n \n \n \n \n 855\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n custom_label\n \n \n \n \n 695\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n budget_label\n \n \n \n \n \n 535\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n credits_label\n \n \n \n
\n detail\n \n byPeriod\n period_id\n \n 112\n \n \n \n \n \n \n 855\n 80\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n custom_label\n \n \n \n \n 535\n 80\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n credits_label\n \n \n \n \n 455\n 80\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n debits_label\n \n \n \n \n \n \n \n 100\n 40\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n f_period\n \n \n \n \n 695\n 80\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n budget_label\n \n \n \n \n \n 615\n 80\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n ending_label\n \n \n \n \n 775\n 80\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n diff_label\n \n \n \n \n 10\n 110\n 1000\n 110\n 2\n \n \n \n 375\n 80\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n begining_label\n \n \n \n \n \n \n detail\n \n 33\n \n \n 455\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n debits\n \n \n \n \n 375\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n beginningprcnt\n \n \n \n \n 5\n 0\n 350\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n name\n \n \n \n \n 855\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n customprcnt\n \n \n \n \n 615\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ending\n \n \n \n \n 775\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n diffprcnt\n \n \n \n \n 695\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n budget\n \n \n \n \n 615\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n endingprcnt\n \n \n \n \n 375\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n beginning\n \n \n \n \n 695\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n budgetprcnt\n \n \n \n \n 855\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n custom\n \n \n \n \n 455\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n debitsprcnt\n \n \n \n \n 535\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n credits\n \n \n \n \n 775\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n diff\n \n \n \n \n 535\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n creditsprcnt\n \n \n \n
\n
\n notes\n \n \n head\n \n 26\n \n \n 10\n 6\n 980\n 15\n \n 0\n \n Arial\n 9\n normal\n \n \n \n \n notes\n notes\n \n \n \n
\n \n 23\n \n \n \n 930\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n Ad Hoc Report 0 2013-07-26 16:17:54.38447 331 FinancialReportMonth \N \n\n Financial Report Month\n FinancialReportMonth\n \n \n Financial Report Column Layout\n SELECT flcol_id, flhead_name || ' - ' || flcol_name FROM flcol, flhead WHERE ((flcol_flhead_id=flhead_id) AND (flhead_active))\n \n \n Accounting Period Reference\n SELECT period_id, \n CASE\n WHEN period_name <> '' THEN period_name \n ELSE (formatdate(period_start) || '-' || formatdate(period_end)) \n END \nFROM period \nORDER BY period_end DESC\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT \n <? value("project") ?> AS project,\n (SELECT prj_name FROM prj WHERE prj_id=<? value("prj_id") ?>) AS prj_name,\n flstmthead_username,\n flstmthead_flhead_name || ' - ' || flstmthead_flcol_name AS f_name,\n flstmthead_typedescrip1,\n flstmthead_typedescrip2,\n flstmthead_month,\n flstmthead_qtr,\n flstmthead_year,\n flstmthead_prmonth,\n flstmthead_prqtr,\n flstmthead_pryear\nFROM getflstmthead(<? value("flcol_id") ?>,<? value("period_id") ?>)\n \n \n detail\n -- Group: financialReport\n-- Name: detail\n-- Notes: \nSELECT \n flstmtitem_flhead_id,\n flstmtitem_period_id,\n flstmtitem_username,\n flstmtitem_order,\n flstmtitem_level,\n flstmtitem_subgrp,\n flstmtitem_type,\n flstmtitem_type_id,\n flstmtitem_parent_id,\n flstmtitem_accnt_id,\n flstmtitem_name,\n formatMoney(flstmtitem_month) AS flstmtitem_month,\n formatMoney(flstmtitem_monthdb) AS flstmtitem_monthdb,\n formatMoney(flstmtitem_monthcr) AS flstmtitem_monthcr,\n formatPrcnt(flstmtitem_monthprcnt) AS flstmtitem_monthprcnt,\n formatMoney(flstmtitem_monthbudget) AS flstmtitem_monthbudget,\n formatPrcnt(flstmtitem_monthbudgetprcnt) AS flstmtitem_monthbudgetprcnt,\n formatMoney(flstmtitem_monthbudgetdiff) AS flstmtitem_monthbudgetdiff,\n formatPrcnt(flstmtitem_monthbudgetdiffprcnt) AS flstmtitem_monthbudgetdiffprcnt,\n formatMoney(flstmtitem_qtr) AS flstmtitem_qtr,\n formatMoney(flstmtitem_qtrdb) AS flstmtitem_qtrdb,\n formatMoney(flstmtitem_qtrcr) AS flstmtitem_qtrcr,\n formatPrcnt(flstmtitem_qtrprcnt) AS flstmtitem_qtrprcnt,\n formatMoney(flstmtitem_qtrbudget) AS flstmtitem_qtrbudget,\n formatPrcnt(flstmtitem_qtrbudgetprcnt) AS flstmtitem_qtrbudgetprcnt,\n formatMoney(flstmtitem_qtrbudgetdiff) AS flstmtitem_qtrbudgetdiff,\n formatPrcnt(flstmtitem_qtrbudgetdiffprcnt) AS flstmtitem_qtrbudgetdiffprcnt,\n formatMoney(flstmtitem_year) AS flstmtitem_year,\n formatMoney(flstmtitem_yeardb) AS flstmtitem_yeardb,\n formatMoney(flstmtitem_yearcr) AS flstmtitem_yearcr,\n formatPrcnt(flstmtitem_yearprcnt) AS flstmtitem_yearprcnt,\n formatMoney(flstmtitem_yearbudget) AS flstmtitem_yearbudget,\n formatPrcnt(flstmtitem_yearbudgetprcnt) AS flstmtitem_yearbudgetprcnt,\n formatMoney(flstmtitem_yearbudgetdiff) AS flstmtitem_yearbudgetdiff,\n formatPrcnt(flstmtitem_yearbudgetdiffprcnt) AS flstmtitem_yearbudgetdiffprcnt,\n formatMoney(flstmtitem_prmonth) AS flstmtitem_prmonth,\n formatPrcnt(flstmtitem_prmonthprcnt) AS flstmtitem_prmonthprcnt,\n formatMoney(flstmtitem_prmonthdiff) AS flstmtitem_prmonthdiff,\n formatPrcnt(flstmtitem_prmonthdiffprcnt) AS flstmtitem_prmonthdiffprcnt,\n formatMoney(flstmtitem_prqtr) AS flstmtitem_prqtr,\n formatPrcnt(flstmtitem_prqtrprcnt) AS flstmtitem_prqtrprcnt,\n formatMoney(flstmtitem_prqtrdiff) AS flstmtitem_prqtrdiff,\n formatPrcnt(flstmtitem_prqtrdiffprcnt) AS flstmtitem_prqtrdiffprcnt,\n formatMoney(flstmtitem_pryear) AS flstmtitem_pryear,\n formatPrcnt(flstmtitem_pryearprcnt) AS flstmtitem_pryearprcnt,\n formatMoney(flstmtitem_pryeardiff) AS flstmtitem_pryeardiff,\n formatPrcnt(flstmtitem_pryeardiffprcnt) AS flstmtitem_pryeardiffprcnt\nFROM financialreport(<? value("flcol_id") ?>,<? value("period_id") ?>,\n<? if exists("shownumbers") ?>\n true\n<? else ?>\n false\n<? endif ?>\n,True,<? value("prj_id") ?>)\n<? if not exists("showzeros") ?>\n WHERE ((flstmtitem_month <> 0) OR (flstmtitem_type <> 'I'))\n<? endif ?>\n;\n \n \n notes\n SELECT * FROM (\nSELECT 1 AS seq, flhead_notes AS notes\nFROM flhead\n JOIN flcol ON (flhead_id=flcol_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (length(flhead_notes) > 0))\nUNION ALL\nSELECT 2 AS seq, flnotes_notes AS notes\nFROM flnotes\n JOIN flcol ON (flcol_flhead_id=flnotes_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (flnotes_period_id=<? value("period_id") ?>)\n AND (length(flnotes_notes) > 0))) data\nORDER BY seq;\n\n \n \n 167\n \n \n 100\n 80\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_name\n \n \n \n 3.55207\n 162.602\n 746.627\n 162.602\n 2\n \n \n \n 100\n 100\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n flstmthead_typedescrip1\n \n \n \n \n \n \n 590.695\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n \n 590\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 670\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n \n 99\n 59.6\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n prj_name\n \n \n \n \n 15\n 59.5\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n project\n \n \n \n \n \n \n 4\n \n \n 37\n \n \n 590\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 670\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 2.82852\n 30.1086\n 747.989\n 30.1086\n 2\n \n \n \n 590\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n
\n detail\n \n subgrp\n flstmtitem_subgrp\n \n 4\n \n 390\n 0\n 750\n 0\n 0\n \n \n \n \n \n detail\n \n 19\n \n \n 590\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_month\n \n \n \n \n 25\n 0\n 550\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_name\n \n \n \n \n 670\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_monthprcnt\n \n \n \n
\n
\n notes\n \n \n notes\n \n 24\n \n \n 25\n 9\n 700\n 15\n \n 0\n \n Arial\n 9\n normal\n \n \n \n \n notes\n notes\n \n \n \n
\n \n 22\n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 695\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 7\n \n
\n \N 0 2013-07-26 16:17:54.38447 332 FinancialReportMonthBudget \N \n\n Financial Report Month and Budget\n FinancialReportMonthBudget\n \n \n Financial Report Column Layout\n SELECT flcol_id, flhead_name || ' - ' || flcol_name FROM flcol, flhead WHERE ((flcol_flhead_id=flhead_id) AND (flhead_active))\n \n \n Accounting Period Reference\n SELECT period_id, \n CASE\n WHEN period_name <> '' THEN period_name \n ELSE (formatdate(period_start) || '-' || formatdate(period_end)) \n END \nFROM period \nORDER BY period_end DESC\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT \n <? value("project") ?> AS project,\n (SELECT prj_name FROM prj WHERE prj_id=<? value("prj_id") ?>) AS prj_name,\n flstmthead_username,\n flstmthead_flhead_name || ' - ' || flstmthead_flcol_name AS f_name,\n flstmthead_typedescrip1,\n flstmthead_typedescrip2,\n flstmthead_month,\n flstmthead_qtr,\n flstmthead_year,\n flstmthead_prmonth,\n flstmthead_prqtr,\n flstmthead_pryear\nFROM getflstmthead(<? value("flcol_id") ?>,<? value("period_id") ?>)\n \n \n detail\n SELECT \n flstmtitem_flhead_id,\n flstmtitem_period_id,\n flstmtitem_username,\n flstmtitem_order,\n flstmtitem_level,\n flstmtitem_subgrp,\n flstmtitem_type,\n flstmtitem_type_id,\n flstmtitem_parent_id,\n flstmtitem_accnt_id,\n flstmtitem_name,\n formatMoney(flstmtitem_month) AS flstmtitem_month,\n formatMoney(flstmtitem_monthdb) AS flstmtitem_monthdb,\n formatMoney(flstmtitem_monthcr) AS flstmtitem_monthcr,\n formatPrcnt(flstmtitem_monthprcnt) AS flstmtitem_monthprcnt,\n formatMoney(flstmtitem_monthbudget) AS flstmtitem_monthbudget,\n formatPrcnt(flstmtitem_monthbudgetprcnt) AS flstmtitem_monthbudgetprcnt,\n formatMoney(flstmtitem_monthbudgetdiff) AS flstmtitem_monthbudgetdiff,\n formatPrcnt(flstmtitem_monthbudgetdiffprcnt) AS flstmtitem_monthbudgetdiffprcnt,\n formatMoney(flstmtitem_qtr) AS flstmtitem_qtr,\n formatMoney(flstmtitem_qtrdb) AS flstmtitem_qtrdb,\n formatMoney(flstmtitem_qtrcr) AS flstmtitem_qtrcr,\n formatPrcnt(flstmtitem_qtrprcnt) AS flstmtitem_qtrprcnt,\n formatMoney(flstmtitem_qtrbudget) AS flstmtitem_qtrbudget,\n formatPrcnt(flstmtitem_qtrbudgetprcnt) AS flstmtitem_qtrbudgetprcnt,\n formatMoney(flstmtitem_qtrbudgetdiff) AS flstmtitem_qtrbudgetdiff,\n formatPrcnt(flstmtitem_qtrbudgetdiffprcnt) AS flstmtitem_qtrbudgetdiffprcnt,\n formatMoney(flstmtitem_year) AS flstmtitem_year,\n formatMoney(flstmtitem_yeardb) AS flstmtitem_yeardb,\n formatMoney(flstmtitem_yearcr) AS flstmtitem_yearcr,\n formatPrcnt(flstmtitem_yearprcnt) AS flstmtitem_yearprcnt,\n formatMoney(flstmtitem_yearbudget) AS flstmtitem_yearbudget,\n formatPrcnt(flstmtitem_yearbudgetprcnt) AS flstmtitem_yearbudgetprcnt,\n formatMoney(flstmtitem_yearbudgetdiff) AS flstmtitem_yearbudgetdiff,\n formatPrcnt(flstmtitem_yearbudgetdiffprcnt) AS flstmtitem_yearbudgetdiffprcnt,\n formatMoney(flstmtitem_prmonth) AS flstmtitem_prmonth,\n formatPrcnt(flstmtitem_prmonthprcnt) AS flstmtitem_prmonthprcnt,\n formatMoney(flstmtitem_prmonthdiff) AS flstmtitem_prmonthdiff,\n formatPrcnt(flstmtitem_prmonthdiffprcnt) AS flstmtitem_prmonthdiffprcnt,\n formatMoney(flstmtitem_prqtr) AS flstmtitem_prqtr,\n formatPrcnt(flstmtitem_prqtrprcnt) AS flstmtitem_prqtrprcnt,\n formatMoney(flstmtitem_prqtrdiff) AS flstmtitem_prqtrdiff,\n formatPrcnt(flstmtitem_prqtrdiffprcnt) AS flstmtitem_prqtrdiffprcnt,\n formatMoney(flstmtitem_pryear) AS flstmtitem_pryear,\n formatPrcnt(flstmtitem_pryearprcnt) AS flstmtitem_pryearprcnt,\n formatMoney(flstmtitem_pryeardiff) AS flstmtitem_pryeardiff,\n formatPrcnt(flstmtitem_pryeardiffprcnt) AS flstmtitem_pryeardiffprcnt\nFROM financialreport(<? value("flcol_id") ?>,<? value("period_id") ?>,\n<? if exists("shownumbers") ?>\n true\n<? else ?>\n false\n<? endif ?>\n,True,<? value("prj_id") ?>)\n<? if not exists("showzeros") ?>\n WHERE ((flstmtitem_month <> 0) OR (flstmtitem_monthbudget <> 0) OR (flstmtitem_type <> 'I'))\n<? endif ?>\n;\n \n \n notes\n SELECT * FROM (\nSELECT 1 AS seq, flhead_notes AS notes\nFROM flhead\n JOIN flcol ON (flhead_id=flcol_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (length(flhead_notes) > 0))\nUNION ALL\nSELECT 2 AS seq, flnotes_notes AS notes\nFROM flnotes\n JOIN flcol ON (flcol_flhead_id=flnotes_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (flnotes_period_id=<? value("period_id") ?>)\n AND (length(flnotes_notes) > 0))) data\nORDER BY seq;\n\n\n \n \n 167\n \n \n \n \n 380\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 500\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 100\n 100\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n flstmthead_typedescrip1\n \n \n \n \n 380\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n \n 580\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n 3.0775\n 165\n 748.368\n 165\n 2\n \n \n \n 100\n 80\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_name\n \n \n \n \n 660\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n \n \n \n 99\n 59.6\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n prj_name\n \n \n \n \n 15\n 59.5\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n project\n \n \n \n \n \n 4\n \n \n 37\n \n \n 500\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n \n 660\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n \n \n \n \n 380\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n 1.53875\n 35\n 749.873\n 35\n 2\n \n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n \n 380\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n
\n detail\n \n subgrp\n flstmtitem_subgrp\n \n 4\n \n 380\n 1\n 740\n 1\n 0\n \n \n \n \n \n detail\n \n 19\n \n \n 500\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_monthbudget\n \n \n \n \n 380\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_month\n \n \n \n \n 660\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_monthbudgetdiffprcnt\n \n \n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_monthbudgetdiff\n \n \n \n \n 25\n 0\n 345\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_name\n \n \n \n
\n
\n notes\n \n \n notes\n \n 24\n \n \n 25\n 9\n 700\n 15\n \n 0\n \n Arial\n 9\n normal\n \n \n \n \n notes\n notes\n \n \n \n
\n \n 22\n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 695\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 7\n \n
\n \N 0 2013-07-26 16:17:54.38447 343 FinancialReportMonthDbCr \N \n\n Financial Report Month with Debits and Credits\n FinancialReportMonthDbCr\n \n \n Financial Report Column Layout\n SELECT flcol_id, flhead_name || ' - ' || flcol_name FROM flcol, flhead WHERE ((flcol_flhead_id=flhead_id) AND (flhead_active))\n \n \n Accounting Period Reference\n SELECT period_id, \n CASE\n WHEN period_name <> '' THEN period_name \n ELSE (formatdate(period_start) || '-' || formatdate(period_end)) \n END \nFROM period \nORDER BY period_end DESC\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT \n <? value("project") ?> AS project,\n (SELECT prj_name FROM prj WHERE prj_id=<? value("prj_id") ?>) AS prj_name,\n flstmthead_username,\n flstmthead_flhead_name || ' - ' || flstmthead_flcol_name AS f_name,\n flstmthead_typedescrip1,\n flstmthead_typedescrip2,\n flstmthead_month,\n flstmthead_qtr,\n flstmthead_year,\n flstmthead_prmonth,\n flstmthead_prqtr,\n flstmthead_pryear\nFROM getflstmthead(<? value("flcol_id") ?>,<? value("period_id") ?>)\n \n \n detail\n SELECT \n flstmtitem_flhead_id,\n flstmtitem_period_id,\n flstmtitem_username,\n flstmtitem_order,\n flstmtitem_level,\n flstmtitem_subgrp,\n flstmtitem_type,\n flstmtitem_type_id,\n flstmtitem_parent_id,\n flstmtitem_accnt_id,\n flstmtitem_name,\n formatMoney(flstmtitem_month) AS flstmtitem_month,\n formatMoney(flstmtitem_monthdb) AS flstmtitem_monthdb,\n formatMoney(flstmtitem_monthcr) AS flstmtitem_monthcr,\n formatPrcnt(flstmtitem_monthprcnt) AS flstmtitem_monthprcnt,\n formatMoney(flstmtitem_monthbudget) AS flstmtitem_monthbudget,\n formatPrcnt(flstmtitem_monthbudgetprcnt) AS flstmtitem_monthbudgetprcnt,\n formatMoney(flstmtitem_monthbudgetdiff) AS flstmtitem_monthbudgetdiff,\n formatPrcnt(flstmtitem_monthbudgetdiffprcnt) AS flstmtitem_monthbudgetdiffprcnt,\n formatMoney(flstmtitem_qtr) AS flstmtitem_qtr,\n formatMoney(flstmtitem_qtrdb) AS flstmtitem_qtrdb,\n formatMoney(flstmtitem_qtrcr) AS flstmtitem_qtrcr,\n formatPrcnt(flstmtitem_qtrprcnt) AS flstmtitem_qtrprcnt,\n formatMoney(flstmtitem_qtrbudget) AS flstmtitem_qtrbudget,\n formatPrcnt(flstmtitem_qtrbudgetprcnt) AS flstmtitem_qtrbudgetprcnt,\n formatMoney(flstmtitem_qtrbudgetdiff) AS flstmtitem_qtrbudgetdiff,\n formatPrcnt(flstmtitem_qtrbudgetdiffprcnt) AS flstmtitem_qtrbudgetdiffprcnt,\n formatMoney(flstmtitem_year) AS flstmtitem_year,\n formatMoney(flstmtitem_yeardb) AS flstmtitem_yeardb,\n formatMoney(flstmtitem_yearcr) AS flstmtitem_yearcr,\n formatPrcnt(flstmtitem_yearprcnt) AS flstmtitem_yearprcnt,\n formatMoney(flstmtitem_yearbudget) AS flstmtitem_yearbudget,\n formatPrcnt(flstmtitem_yearbudgetprcnt) AS flstmtitem_yearbudgetprcnt,\n formatMoney(flstmtitem_yearbudgetdiff) AS flstmtitem_yearbudgetdiff,\n formatPrcnt(flstmtitem_yearbudgetdiffprcnt) AS flstmtitem_yearbudgetdiffprcnt,\n formatMoney(flstmtitem_prmonth) AS flstmtitem_prmonth,\n formatPrcnt(flstmtitem_prmonthprcnt) AS flstmtitem_prmonthprcnt,\n formatMoney(flstmtitem_prmonthdiff) AS flstmtitem_prmonthdiff,\n formatPrcnt(flstmtitem_prmonthdiffprcnt) AS flstmtitem_prmonthdiffprcnt,\n formatMoney(flstmtitem_prqtr) AS flstmtitem_prqtr,\n formatPrcnt(flstmtitem_prqtrprcnt) AS flstmtitem_prqtrprcnt,\n formatMoney(flstmtitem_prqtrdiff) AS flstmtitem_prqtrdiff,\n formatPrcnt(flstmtitem_prqtrdiffprcnt) AS flstmtitem_prqtrdiffprcnt,\n formatMoney(flstmtitem_pryear) AS flstmtitem_pryear,\n formatPrcnt(flstmtitem_pryearprcnt) AS flstmtitem_pryearprcnt,\n formatMoney(flstmtitem_pryeardiff) AS flstmtitem_pryeardiff,\n formatPrcnt(flstmtitem_pryeardiffprcnt) AS flstmtitem_pryeardiffprcnt\nFROM financialreport(<? value("flcol_id") ?>,<? value("period_id") ?>,\n<? if exists("shownumbers") ?>\n true\n<? else ?>\n false\n<? endif ?>\n,True,<? value("prj_id") ?>)\n<? if not exists("showzeros") ?>\n WHERE ((flstmtitem_monthdb <> 0) OR (flstmtitem_monthcr <> 0) OR (flstmtitem_type <> 'I'))\n<? endif ?>\n;\n \n \n notes\n SELECT * FROM (\nSELECT 1 AS seq, flhead_notes AS notes\nFROM flhead\n JOIN flcol ON (flhead_id=flcol_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (length(flhead_notes) > 0))\nUNION ALL\nSELECT 2 AS seq, flnotes_notes AS notes\nFROM flnotes\n JOIN flcol ON (flcol_flhead_id=flnotes_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (flnotes_period_id=<? value("period_id") ?>)\n AND (length(flnotes_notes) > 0))) data\nORDER BY seq;\n\n \n \n 167\n \n \n 590\n 145\n 75\n 16\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 100\n 100\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n flstmthead_typedescrip1\n \n \n \n 2.62279\n 160\n 749\n 160\n 2\n \n \n \n 100\n 80\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_name\n \n \n \n \n \n \n \n 670\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n \n 505\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n \n 425\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n \n 590\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 100\n 60\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n prj_name\n \n \n \n \n 15\n 60\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n project\n \n \n \n \n \n \n 4\n \n \n 37\n \n 1.94814\n 31\n 748.325\n 31\n 2\n \n \n \n \n 670\n 16\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_typedescrip_prcnt\n \n \n \n \n 505\n 1\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 670\n 1\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 425\n 1\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 590\n 1\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 590\n 16\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n \n
\n detail\n \n subgrp\n flstmtitem_subgrp\n \n 4\n \n 390\n 0\n 750\n 0\n 0\n \n \n \n \n \n detail\n \n 19\n \n \n 420\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_monthdb\n \n \n \n \n 590\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_month\n \n \n \n \n 505\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_monthcr\n \n \n \n \n 670\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_monthprcnt\n \n \n \n \n 25\n 0\n 390\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_name\n \n \n \n
\n
\n notes\n \n \n notes\n \n 24\n \n \n 25\n 10\n 700\n 15\n \n 0\n \n Arial\n 9\n normal\n \n \n \n \n notes\n notes\n \n \n \n
\n \n 22\n \n \n \n \n 695\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 7\n \n
\n \N 0 2013-07-26 16:17:54.38447 333 FinancialReportMonthPriorMonth \N \n\n Financial Report Month and Prior Month\n FinancialReportMonthPriorMonth\n \n \n Financial Report Column Layout\n SELECT flcol_id, flhead_name || ' - ' || flcol_name FROM flcol, flhead WHERE ((flcol_flhead_id=flhead_id) AND (flhead_active))\n \n \n Accounting Period Reference\n SELECT period_id, \n CASE\n WHEN period_name <> '' THEN period_name \n ELSE (formatdate(period_start) || '-' || formatdate(period_end)) \n END \nFROM period \nORDER BY period_end DESC\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT \n <? value("project") ?> AS project,\n (SELECT prj_name FROM prj WHERE prj_id=<? value("prj_id") ?>) AS prj_name,\n flstmthead_username,\n flstmthead_flhead_name || ' - ' || flstmthead_flcol_name AS f_name,\n flstmthead_typedescrip1,\n flstmthead_typedescrip2,\n flstmthead_typedescrip2 || ' Diff.' AS f_diff,\n flstmthead_typedescrip2 || ' % Diff.' AS f_diffprcnt,\n flstmthead_month,\n flstmthead_qtr,\n flstmthead_year,\n flstmthead_prmonth,\n flstmthead_prqtr,\n flstmthead_pryear\nFROM getflstmthead(<? value("flcol_id") ?>,<? value("period_id") ?>)\n \n \n detail\n SELECT \n flstmtitem_flhead_id,\n flstmtitem_period_id,\n flstmtitem_username,\n flstmtitem_order,\n flstmtitem_level,\n flstmtitem_subgrp,\n flstmtitem_type,\n flstmtitem_type_id,\n flstmtitem_parent_id,\n flstmtitem_accnt_id,\n flstmtitem_name,\n formatMoney(flstmtitem_month) AS flstmtitem_month,\n formatMoney(flstmtitem_monthdb) AS flstmtitem_monthdb,\n formatMoney(flstmtitem_monthcr) AS flstmtitem_monthcr,\n formatPrcnt(flstmtitem_monthprcnt) AS flstmtitem_monthprcnt,\n formatMoney(flstmtitem_monthbudget) AS flstmtitem_monthbudget,\n formatPrcnt(flstmtitem_monthbudgetprcnt) AS flstmtitem_monthbudgetprcnt,\n formatMoney(flstmtitem_monthbudgetdiff) AS flstmtitem_monthbudgetdiff,\n formatPrcnt(flstmtitem_monthbudgetdiffprcnt) AS flstmtitem_monthbudgetdiffprcnt,\n formatMoney(flstmtitem_qtr) AS flstmtitem_qtr,\n formatMoney(flstmtitem_qtrdb) AS flstmtitem_qtrdb,\n formatMoney(flstmtitem_qtrcr) AS flstmtitem_qtrcr,\n formatPrcnt(flstmtitem_qtrprcnt) AS flstmtitem_qtrprcnt,\n formatMoney(flstmtitem_qtrbudget) AS flstmtitem_qtrbudget,\n formatPrcnt(flstmtitem_qtrbudgetprcnt) AS flstmtitem_qtrbudgetprcnt,\n formatMoney(flstmtitem_qtrbudgetdiff) AS flstmtitem_qtrbudgetdiff,\n formatPrcnt(flstmtitem_qtrbudgetdiffprcnt) AS flstmtitem_qtrbudgetdiffprcnt,\n formatMoney(flstmtitem_year) AS flstmtitem_year,\n formatMoney(flstmtitem_yeardb) AS flstmtitem_yeardb,\n formatMoney(flstmtitem_yearcr) AS flstmtitem_yearcr,\n formatPrcnt(flstmtitem_yearprcnt) AS flstmtitem_yearprcnt,\n formatMoney(flstmtitem_yearbudget) AS flstmtitem_yearbudget,\n formatPrcnt(flstmtitem_yearbudgetprcnt) AS flstmtitem_yearbudgetprcnt,\n formatMoney(flstmtitem_yearbudgetdiff) AS flstmtitem_yearbudgetdiff,\n formatPrcnt(flstmtitem_yearbudgetdiffprcnt) AS flstmtitem_yearbudgetdiffprcnt,\n formatMoney(flstmtitem_prmonth) AS flstmtitem_prmonth,\n formatPrcnt(flstmtitem_prmonthprcnt) AS flstmtitem_prmonthprcnt,\n formatMoney(flstmtitem_prmonthdiff) AS flstmtitem_prmonthdiff,\n formatPrcnt(flstmtitem_prmonthdiffprcnt) AS flstmtitem_prmonthdiffprcnt,\n formatMoney(flstmtitem_prqtr) AS flstmtitem_prqtr,\n formatPrcnt(flstmtitem_prqtrprcnt) AS flstmtitem_prqtrprcnt,\n formatMoney(flstmtitem_prqtrdiff) AS flstmtitem_prqtrdiff,\n formatPrcnt(flstmtitem_prqtrdiffprcnt) AS flstmtitem_prqtrdiffprcnt,\n formatMoney(flstmtitem_pryear) AS flstmtitem_pryear,\n formatPrcnt(flstmtitem_pryearprcnt) AS flstmtitem_pryearprcnt,\n formatMoney(flstmtitem_pryeardiff) AS flstmtitem_pryeardiff,\n formatPrcnt(flstmtitem_pryeardiffprcnt) AS flstmtitem_pryeardiffprcnt\nFROM financialreport(<? value("flcol_id") ?>,<? value("period_id") ?>,\n<? if exists("shownumbers") ?>\n true\n<? else ?>\n false\n<? endif ?>\n,True,<? value("prj_id") ?>)\n<? if not exists("showzeros") ?>\n WHERE ((flstmtitem_month <> 0) OR (flstmtitem_prmonth <> 0) OR (flstmtitem_type <> 'I'))\n<? endif ?>\n;\n \n \n notes\n SELECT * FROM (\nSELECT 1 AS seq, flhead_notes AS notes\nFROM flhead\n JOIN flcol ON (flhead_id=flcol_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (length(flhead_notes) > 0))\nUNION ALL\nSELECT 2 AS seq, flnotes_notes AS notes\nFROM flnotes\n JOIN flcol ON (flcol_flhead_id=flnotes_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (flnotes_period_id=<? value("period_id") ?>)\n AND (length(flnotes_notes) > 0))) data\nORDER BY seq;\n\n \n \n 170\n \n 2.82315\n 160.942\n 760\n 160.942\n 2\n \n \n \n 100\n 80\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_name\n \n \n \n \n 500\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_prmonth\n \n \n \n \n 380\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 580\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_prmonth\n \n \n \n \n \n 100\n 100\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n flstmthead_typedescrip1\n \n \n \n \n 380\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n \n 660\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diffprcnt\n \n \n \n \n 660\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_prmonth\n \n \n \n \n 500\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n \n \n 580\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diff\n \n \n \n \n 99\n 59.6\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n prj_name\n \n \n \n \n 15\n 59.5\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n project\n \n \n \n \n \n 7\n \n \n 40\n \n \n 660\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_prmonth\n \n \n \n \n 500\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_prmonth\n \n \n \n \n 500\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_prmonth\n \n \n \n \n \n 380\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 380\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 660\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diffprcnt\n \n \n \n \n 580\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diff\n \n \n \n 0.0790882\n 31.4959\n 747.149\n 31.4959\n 2\n \n \n
\n detail\n \n subgrp\n flstmtitem_subgrp\n \n 7\n \n 380\n 1\n 740\n 1\n 0\n \n \n \n \n \n detail\n \n 22\n \n \n 500\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_prmonth\n \n \n \n \n 25\n 0\n 345\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_name\n \n \n \n \n 380\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_month\n \n \n \n \n 660\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_prmonthdiffprcnt\n \n \n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_prmonthdiff\n \n \n \n
\n
\n notes\n \n \n notes\n \n 24\n \n \n 25\n 9\n 700\n 15\n \n 0\n \n Arial\n 9\n normal\n \n \n \n \n notes\n notes\n \n \n \n
\n \n 25\n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 695\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 10\n \n
\n \N 0 2013-07-26 16:17:54.38447 359 Budget \N \n\n Budget\n Budget\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT formatDate(period_start) AS f_firstperiod,\n formatDate(period_end) AS f_lastperiod,\n formatGLAccountLong(budgitem_accnt_id) AS f_accnt,\n formatMoney(budgitem_amount) AS f_amount\n FROM budgitem \n JOIN period ON (budgitem_period_id=period_id)\n WHERE(budgitem_budghead_id=<? value("budghead_id") ?>)\n ORDER BY period_start, f_accnt;\n \n \n head\n SELECT budghead_name,\n budghead_descrip\n FROM budghead\n WHERE(budghead_id=<? value("budghead_id") ?>);\n \n \n 161\n \n \n \n \n 160\n 80\n 375\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n budghead_descrip\n \n \n \n \n \n 160\n 65\n 375\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n budghead_name\n \n \n \n \n 5\n 155\n 745\n 155\n 2\n \n \n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 110\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_lastperiod\n \n \n \n \n 5\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_firstperiod\n \n \n \n \n 215\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_accnt\n \n \n \n \n 370\n 0\n 375\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_amount\n \n \n \n
\n \n 17\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 369 CCReceipt \N \n\n Credit Card Receipt\n CCReceipt\n \n Letter\n \n 100\n 100\n 100\n 100\n \n header\n SELECT remitto.*,\n formatAddr(remitto_address1, remitto_address2,\n remitto_address3, remitto_citystatezip,\n remitto_country) AS remitto_addr\nFROM remitto;\n \n \n detail\n SELECT *,\n formatbytea(decrypt(setbytea(ccard_name),\n setbytea(<? value("key") ?>),\n 'bf')) AS holder,\n formatccnumber(decrypt(setbytea(ccard_number),\n setbytea(<? value("key") ?>),\n 'bf')) AS xxxx,\n CASE WHEN (ccpay_type='A') THEN <? value("preauth") ?>\n WHEN (ccpay_type='C') THEN <? value("charge") ?>\n WHEN (ccpay_type='R') THEN <? value("refund") ?>\n ELSE ccpay_type\n END AS type,\n CASE WHEN (ccpay_status='A') THEN <? value("authorized") ?>\n WHEN (ccpay_status='C') THEN <? value("approved") ?>\n WHEN (ccpay_status='D') THEN <? value("declined") ?>\n WHEN (ccpay_status='R') THEN <? value("reversed") ?>\n WHEN (ccpay_status='V') THEN <? value("voided") ?>\n WHEN (ccpay_status='X') THEN <? value("noapproval") ?>\n ELSE ccpay_status\n END AS status\n\nFROM ccpay JOIN\n ccard ON (ccpay_ccard_id=ccard_id) JOIN\n custinfo ON (ccard_cust_id=cust_id)\nWHERE (ccpay_id=<? value("ccpay_id") ?>);\n \n \n 101\n \n \n 0\n 60\n 250\n 15\n \n 40\n \n Arial\n 10\n normal\n \n \n \n \n header\n remitto_addr\n \n \n \n \n \n 0\n 40\n 150\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n header\n remitto_name\n \n \n \n \n \n 160\n 20\n 100\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n Header\n \n \n header\n \n 101\n \n
\n
\n Detail\n \n \n detail\n \n 231\n \n \n 130\n 160\n 200\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n ccpay_r_ref\n \n \n \n \n \n 130\n 200\n 200\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n ccpay_r_ordernum\n \n \n \n \n \n \n 130\n 60\n 200\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n ccpay_transaction_datetime\n \n \n \n \n 130\n 80\n 200\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n type\n \n \n \n \n 130\n 100\n 200\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n ccpay_amount\n \n \n \n \n \n \n \n \n 130\n 180\n 200\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n ccpay_by_username\n \n \n \n \n 130\n 20\n 200\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n holder\n \n \n \n \n 130\n 0\n 200\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n cust_name\n \n \n \n \n \n \n 130\n 140\n 200\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n status\n \n \n \n \n \n 130\n 40\n 200\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n xxxx\n \n \n \n
\n
\n \N 0 2013-07-26 16:17:54.38447 33 FrozenItemSites \N \n\n Frozen Item Sites\n FrozenItemSites\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse;\n\n \n \n detail\n SELECT warehous_code,\n formatBoolYN(itemsite_active) AS active,\n item_number,\n item_descrip1,\n item_descrip2,\n formatBoolYN(itemsite_wosupply) AS supplied,\n formatBoolYN(itemsite_sold) AS sold,\n itemsite_soldranking,\n formatBoolYN(itemsite_stocked) AS stocked,\n formatBoolYN(itemsite_createpr) AS createpr,\n CASE WHEN (itemsite_controlmethod='N') THEN 'None'\n WHEN (itemsite_controlmethod='R') THEN 'Regular'\n WHEN (itemsite_controlmethod='L') THEN 'Lot #'\n WHEN (itemsite_controlmethod='S') THEN 'Serial #'\n ELSE '?'\n END AS controlmethod,\n formatBoolYN(itemsite_loccntrl) AS locationcontrol,\n CASE WHEN (itemsite_location_id=-1) THEN 'None'\n ELSE formatLocationName(itemsite_location_id)\n END AS defaultlocation,\n formatBoolYN(itemsite_useparams) AS enforceparams,\n formatBoolYN(itemsite_useparamsmanual) AS onmanualorders,\n formatQty(itemsite_reorderlevel) AS reorderlevel,\n formatQty(itemsite_ordertoqty) AS orderupto,\n formatQty(itemsite_multordqty) AS ordermult,\n formatQty(itemsite_safetystock) AS safetystock,\n itemsite_abcclass,\n itemsite_cyclecountfreq,\n itemsite_leadtime,\n itemsite_eventfence,\n formatQty(itemsite_qtyonhand) AS qoh,\n formatDate(itemsite_datelastused, 'Never') AS lastused,\n formatDate(itemsite_datelastcount, 'Never') AS lastcounted,\n COALESCE((SELECT invcnt_tagnumber\n FROM invcnt\n WHERE ((NOT invcnt_posted)\n AND (invcnt_itemsite_id=itemsite_id))), '') AS counttagnum\nFROM itemsite, whsinfo, item\nWHERE ((itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_freeze)\n<? if exists("warehous_id") ?>\n AND (warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n)\nORDER BY item_number;\n \n \n 236\n \n \n \n \n \n \n \n \n \n 5\n 229\n 745\n 229\n 2\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 114\n 80\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n \n \n \n \n \n \n \n 7\n \n \n 81\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 5\n 75\n 745\n 75\n 2\n \n \n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 81\n \n \n 50\n 15\n 229\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 50\n 0\n 229\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 280\n 30\n 45\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n stocked\n \n \n \n \n 50\n 30\n 229\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 670\n 45\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemsite_eventfence\n \n \n \n \n 490\n 15\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n onmanualorders\n \n \n \n \n 430\n 60\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n lastcounted\n \n \n \n \n 670\n 0\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemsite_abcclass\n \n \n \n \n 260\n 60\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qoh\n \n \n \n \n 580\n 60\n 145\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n counttagnum\n \n \n \n \n 330\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n createpr\n \n \n \n \n 580\n 30\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ordermult\n \n \n \n \n 670\n 30\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemsite_leadtime\n \n \n \n \n 409\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n locationcontrol\n \n \n \n \n 280\n 0\n 45\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n supplied\n \n \n \n \n 280\n 15\n 45\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n sold\n \n \n \n \n 10\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n reorderlevel\n \n \n \n \n 345\n 60\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n lastused\n \n \n \n \n 409\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n controlmethod\n \n \n \n \n 580\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n orderupto\n \n \n \n \n 409\n 30\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n defaultlocation\n \n \n \n \n 580\n 45\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n safetystock\n \n \n \n \n 490\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n enforceparams\n \n \n \n \n 10\n 15\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n active\n \n \n \n 5\n 75\n 745\n 75\n 0\n \n \n \n 670\n 15\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemsite_cyclecountfreq\n \n \n \n \n 330\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemsite_soldranking\n \n \n \n
\n \n 16\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 189 CostedIndentedBOM \N \n\n Costed Indented Bill of Materials\n CostedIndentedBOM\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n uom_name AS item_invuom,\n item_descrip1,\n item_descrip2,\n <? if exists("useActualCosts") ?>\n text('Using Actual Costs') AS lbl_usecosts,\n (SELECT formatCost(SUM(bomdata_actextendedcost))\n FROM indentedbom(<? value("item_id") ?>,<? value("revision_id") ?>,0,0)\n WHERE (bomdata_bomwork_level=1)) as t_extendedcost,\n <? else ?>\n text('Using Standard Costs') AS lbl_usecosts,\n (SELECT formatCost(SUM(bomdata_stdextendedcost))\n FROM indentedbom(<? value("item_id") ?>,<? value("revision_id") ?>,0,0)\n WHERE (bomdata_bomwork_level=1)) as t_extendedcost,\n <? endif ?>\n formatCost(actcost(item_id)) AS f_actual,\n formatCost(stdcost(item_id)) AS f_standard\n FROM item JOIN uom ON (uom_id=item_inv_uom_id)\n WHERE (item_id=<? value("item_id") ?>);\n \n \n \n detail\n select (REPEAT(' ',(bomdata_bomwork_level-1)*3) || bomdata_bomwork_seqnumber) AS f_seqnumber,\n 1 AS seq_ord,\n bomdata_item_number AS item_number,\n bomdata_uom_name AS item_invuom,\n bomdata_item_descrip1 AS item_descrip1,\n bomdata_item_descrip2 AS item_descrip2,\n bomdata_createchild as createchild,\n bomdata_issuemethod AS issuemethod,\n formatQtyPer(bomdata_qtyreq) AS qtyreq,\n formatScrap(bomdata_scrap) AS scrap,\n CASE WHEN COALESCE(bomdata_effective, startOfTime()) <= startOfTime() THEN\n <? value("always") ?> \n ELSE formatDate(bomdata_effective)\n END AS effective,\n CASE WHEN COALESCE(bomdata_expires, endOfTime()) <= endOfTime() THEN\n <? value("never") ?>\n ELSE formatDate(bomdata_expires)\n END AS expires,\n<? if exists("useActualCosts") ?>\n formatCost(bomdata_actunitcost) AS f_unitcost,\n formatCost(bomdata_actextendedcost) AS f_extendedcost,\n CASE WHEN(bomdata_bomwork_parent_id=-1) THEN bomdata_actextendedcost\n ELSE 0\n END AS extendedcost,\n<? else ?>\n formatCost(bomdata_stdunitcost) AS f_unitcost,\n formatCost(bomdata_stdextendedcost) AS f_extendedcost,\n CASE WHEN(bomdata_bomwork_parent_id=-1) THEN bomdata_stdextendedcost\n ELSE 0\n END AS extendedcost,\n<? endif ?>\n bomdata_bomwork_level\nFROM indentedBOM(<? value("item_id") ?>,<? value("revision_id") ?>,0,0);\n\n \n \n bomhead\n SELECT bomhead_docnum, bomhead_revision,\nformatDate(bomhead_revisiondate) AS f_revisiondate\nFROM bomhead\nWHERE ((bomhead_item_id=<? value("item_id") ?>)\nAND (bomhead_rev_id=<? value("revision_id") ?>));\n \n \n 242\n \n \n \n 100\n 104\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n \n 5\n 235\n 745\n 235\n 2\n \n \n \n 585\n 104\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n bomhead_docnum\n \n \n \n \n \n \n 100\n 145\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n \n 585\n 145\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n bomhead_revision\n \n \n \n \n \n \n 315\n 104\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_invuom\n \n \n \n \n \n \n 350\n 60\n 205\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n lbl_usecosts\n \n \n \n \n \n \n 100\n 125\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n \n \n 585\n 125\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n f_revisiondate\n \n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 52\n \n \n 500\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n effective\n \n \n \n \n 114\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 114\n 15\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 5\n 0\n 104\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_seqnumber\n \n \n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n expires\n \n \n \n \n 665\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_extendedcost\n \n \n \n \n 340\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyreq\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 275\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_invuom\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_unitcost\n \n \n \n \n 419\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n scrap\n \n \n \n \n 580\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n issuemethod\n \n \n \n \n 500\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n createchild\n \n \n \n \n 114\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n
\n \n 18\n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 47\n \n \n \n 665\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_actual\n \n \n \n \n 665\n 30\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_standard\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n t_extendedcost\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 50 IndentedBOM \N \n\n Indented Bill of Materials\n IndentedBOM\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n uom_name AS item_invuom,\n item_descrip1,\n item_descrip2\n FROM item, uom\n WHERE ((item_id=<? value("item_id") ?>)\n AND (item_inv_uom_id=uom_id));\n \n \n \n detail\n SELECT (REPEAT(' ',(bomdata_bomwork_level-1)*3) || bomdata_bomwork_seqnumber) AS f_seqnumber,\n bomdata_item_number AS item_number,\n bomdata_uom_name AS item_invuom,\n bomdata_item_descrip1 AS item_descrip1,\n bomdata_item_descrip2 AS item_descrip2,\n bomdata_issuemethod AS issuemethod,\n bomdata_createchild AS createchild,\n formatQtyPer(bomdata_qtyreq) AS qtyreq,\n formatScrap(bomdata_scrap) AS scrap,\n CASE WHEN COALESCE(bomdata_effective, startOfTime()) <= startOfTime()\n THEN <? value("always") ?>\n ELSE formatDate(bomdata_effective)\n END AS effective,\n CASE WHEN COALESCE(bomdata_expires, endOfTime()) >= endOfTime()\n THEN <? value("never") ?>\n ELSE formatDate(bomdata_expires)\n END AS expires\nFROM indentedBOM(<? value("item_id") ?>,<? value("revision_id") ?>,<? value("expiredDays") ?>,<? value("futureDays") ?>)\nWHERE (bomdata_item_id>0);\n \n \n bomhead\n SELECT bomhead_docnum, bomhead_revision,\nformatDate(bomhead_revisiondate) AS f_revisiondate\nFROM bomhead\nWHERE ((bomhead_item_id=<? value("item_id") ?>)\nAND (bomhead_rev_id=<? value("revision_id") ?>));\n \n \n 242\n \n \n \n \n \n \n \n 100\n 103\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n 100\n 125\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n 580\n 103\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n bomhead_docnum\n \n \n \n \n \n \n \n 580\n 125\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n f_revisiondate\n \n \n \n \n \n \n 5\n 235\n 745\n 235\n 2\n \n \n \n \n 100\n 145\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n 580\n 145\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n bomhead_revision\n \n \n \n \n 315\n 103\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_invuom\n \n \n \n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 53\n \n \n 505\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n scrap\n \n \n \n \n 665\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n issuemethod\n \n \n \n \n 585\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n effective\n \n \n \n \n 110\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 665\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n expires\n \n \n \n \n 275\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_invuom\n \n \n \n \n 5\n 0\n 103\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_seqnumber\n \n \n \n \n 110\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 425\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyreq\n \n \n \n \n 110\n 15\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 585\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n createchild\n \n \n \n
\n \n 18\n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 208 IndentedWhereUsed \N \n\n Indented Where Used\n IndentedWhereUsed\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n uom_name AS item_invuom,\n item_descrip1,\n item_descrip2\n FROM item, uom\n WHERE ((item_id=<? value("item_id") ?>)\n AND (item_inv_uom_id=uom_id));\n \n \n \n detail\n SELECT (REPEAT(' ',(bomwork_level-1)*3) || bomwork_seqnumber) AS f_seqnumber,\n bomworkitemsequence(bomwork_id) AS seqord,\n item_number, uom_name AS item_invuom,\n item_descrip1, item_descrip2,\n formatQty(bomwork_qtyfxd) AS qtyfxd,\n formatQtyPer(bomwork_qtyper) AS qtyper,\n formatScrap(bomwork_scrap) AS scrap,\n formatDate(bomwork_effective, 'Always') AS effective,\n formatDate(bomwork_expires, 'Never') AS expires\n FROM bomwork, item, uom\n WHERE ((bomwork_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (bomwork_set_id=<? value("bomworkset_id") ?>)\n<? if not exists("showExpired") ?>\n AND (bomwork_expires > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (bomwork_effective <= CURRENT_DATE)\n<? endif ?>\n)\nORDER BY seqord;\n \n \n 242\n \n \n 100\n 145\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n 100\n 125\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n \n \n \n \n 315\n 103\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_invuom\n \n \n \n 5\n 235\n 745\n 235\n 2\n \n \n \n \n \n \n \n 100\n 103\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n \n \n 6\n \n \n 36\n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 52\n \n \n 275\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_invuom\n \n \n \n \n 665\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n expires\n \n \n \n \n 5\n 0\n 103\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_seqnumber\n \n \n \n \n 113\n 15\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 585\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n effective\n \n \n \n \n 505\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n scrap\n \n \n \n \n 113\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 425\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyper\n \n \n \n \n 113\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 345\n 1\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyfxd\n \n \n \n
\n \n 17\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 445 InventoryAvailability \N \n\n Inventory Availability\n InventoryAvailability\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("byDays") ?>\n (text('Look ahead ') || text(<? value("byDays") ?>) || text(' days'))\n <? elseif exists("byDate") ?>\n (text('Cutoff date ') || formatDate(<? value("byDate") ?>))\n <? elseif exists("byDates") ?>\n (text('Dates from ') || formatDate(<? value("startDate") ?>) || text(' to ') || formatDate(<? value("endDate") ?>))\n <? else ?>\n text('Item Site Lead Time')\n <? endif ?>\n AS ltcriteria;\n \n \n detail\n SELECT item_number, item_descrip1, item_descrip2,\n warehous_code, itemsite_leadtime,\n formatQty(qtyonhand) AS f_qtyonhand,\n formatQty(noNeg(qtyonhand - allocated)) AS f_unallocated,\n formatQty(noNeg(allocated)) AS f_allocated,\n formatQty(ordered) AS f_ordered,\n formatQty(requests) AS f_requests,\n formatQty(reorderlevel) AS f_reorderlevel,\n (qtyonhand - allocated + ordered) AS available,\n formatQty(qtyonhand - allocated + ordered) AS f_available\n FROM (SELECT \n <? if reExists("[vV]end") ?>\n DISTINCT\n <? endif ?>\n itemsite_id,\n CASE WHEN (item_type IN ('P', 'O')) THEN 1\n WHEN (item_type IN ('M')) THEN 2\n ELSE 0\n END AS altId,\n item_number, item_descrip1, item_descrip2, item_inv_uom_id,\n warehous_id, warehous_code, itemsite_leadtime,\n itemsite_qtyonhand AS qtyonhand,\n CASE WHEN itemsite_useparams THEN itemsite_reorderlevel\n ELSE 0.0\n END AS reorderlevel,\n CASE WHEN itemsite_useparams THEN itemsite_ordertoqty\n ELSE 0.0\n END AS outlevel,\n <? if exists("byVend") ?>\n vend_number,\n <? else ?>\n NULL AS vend_number,\n <? endif ?>\n <? if exists("byLeadTime") ?>\n qtyAllocated(itemsite_id, itemsite_leadtime) AS allocated,\n qtyOrdered(itemsite_id, itemsite_leadtime) AS ordered, \n qtypr(itemsite_id, itemsite_leadtime) AS requests\n <? elseif exists("byDays") ?>\n qtyAllocated(itemsite_id, CAST(<? value("byDays") ?> AS INTEGER)) AS allocated,\n qtyOrdered(itemsite_id, CAST(<? value("byDays") ?> AS INTEGER)) AS ordered,\n qtypr(itemsite_id, CAST(<? value("byDays") ?> AS INTEGER)) AS requests \n <? elseif exists("byDate") ?>\n qtyAllocated(itemsite_id, (<? value("byDate") ?> - CURRENT_DATE)) AS allocated,\n qtyOrdered(itemsite_id, (<? value("byDate") ?> - CURRENT_DATE)) AS ordered,\n qtypr(itemsite_id, (<? value("byDate") ?> - CURRENT_DATE)) AS requests \n <? elseif exists("byDates") ?>\n qtyAllocated(itemsite_id, <? value("startDate") ?>, <? value("endDate") ?>) AS allocated,\n qtyOrdered(itemsite_id, <? value("startDate") ?>, <? value("endDate") ?>) AS ordered,\n qtypr(itemsite_id, <? value("startDate") ?>, <? value("endDate") ?>) AS requests\n <? endif ?>\n FROM item, itemsite, whsinfo\n <? if reExists("[vV]end") ?>\n , vendinfo JOIN itemsrc ON (itemsrc_vend_id=vend_id)\n <? endif ?>\n WHERE ( (itemsite_active)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n <? if exists("warehous_id") ?>\n AND (warehous_id=<? value("warehous_id") ?>)\n <? endif ?>\n <? if exists("item_id") ?>\n AND (item_id=<? value("item_id") ?>)\n <? elseif exists("classcode_id") ?>\n AND (item_classcode_id=<? value("classcode_id") ?>)\n <? elseif exists("classcode_pattern") ?>\n AND (item_classcode_id IN (SELECT classcode_id\n FROM classcode\n WHERE (classcode_code ~ <? value("classcode_pattern") ?>)))\n <? elseif exists("plancode_id") ?>\n AND (itemsite_plancode_id=<? value("plancode_id") ?>)\n <? elseif exists("plancode_pattern") ?>\n AND (itemsite_plancode_id IN (SELECT plancode_id\n FROM plancode\n WHERE (plancode_code ~ <? value("plancode_pattern") ?>)))\n <? elseif exists("itemgrp_id") ?>\n AND (item_id IN (SELECT itemgrpitem_item_id\n FROM itemgrpitem\n WHERE (itemgrpitem_itemgrp_id=<? value("itemgrp_id") ?>)))\n <? elseif exists("itemgrp_pattern") ?>\n AND (item_id IN (SELECT itemgrpitem_item_id\n FROM itemgrpitem, itemgrp\n WHERE ( (itemgrpitem_itemgrp_id=itemgrp_id)\n AND (itemgrp_name ~ <? value("itemgrp_pattern") ?>) ) ))\n <? elseif exists("itemgrp") ?>\n AND (item_id IN (SELECT DISTINCT itemgrpitem_item_id FROM itemgrpitem))\n <? endif ?>\n <? if reExists("[vV]end") ?>\n AND (itemsrc_item_id=item_id)\n <? endif ?>\n <? if exists("vend_id") ?>\n AND (vend_id=<? value("vend_id") ?>)\n <? elseif exists("vendtype_id") ?>\n AND (vend_vendtype_id=<? value("vendtype_id") ?>)\n <? elseif exists("vendtype_pattern") ?>\n AND (vend_vendtype_id IN (SELECT vendtype_id\n FROM vendtype\n WHERE (vendtype_code ~ <? value("vendtype_pattern") ?>)))\n <? endif ?>\n ) ) AS data\n<? if exists("showReorder") ?>\n WHERE ( ((qtyonhand - allocated + ordered) <= reorderlevel)\n <? if exists("ignoreReorderAtZero") ?>\n AND (NOT ( ((qtyonhand - allocated + ordered) = 0) AND (reorderlevel = 0)) )\n <? endif ?>\n )\n<? elseif exists("showShortages") ?>\n WHERE ((qtyonhand - allocated + ordered) < 0)\n<? endif ?>\nORDER BY item_number, warehous_code DESC;\n \n \n 221\n \n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n \n \n \n \n \n 140\n 43\n 280\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n ltcriteria\n \n \n \n \n \n 10\n 63\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 56\n \n \n 330\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyonhand\n \n \n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_available\n \n \n \n \n 65\n 0\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 434\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_allocated\n \n \n \n \n 10\n 15\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemsite_leadtime\n \n \n \n \n 540\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ordered\n \n \n \n 5\n 50\n 745\n 50\n 0\n \n \n \n 65\n 15\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 10\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 65\n 30\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 434\n 30\n 100\n 16\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_unallocated\n \n \n \n \n 540\n 31\n 100\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_reorderlevel\n \n \n \n \n 540\n 14\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_requests\n \n \n \n
\n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 244 InventoryAvailabilityBySalesOrder \N \n\n Inventory Availability by Sales Order\n InventoryAvailabilityBySalesOrder\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT cohead_number,\n formatDate(cohead_orderdate) AS orderdate,\n cohead_custponumber,\n cust_name,\n cntct_phone AS cust_phone,\n <? if exists("onlyShowShortages") ?>\n text('Only Showing Shortages')\n <? else ?>\n text('')\n <? endif ?>\n AS f_onlyShowShortages,\n <? if exists("showWoSupply") ?>\n text('Show W/O Supply')\n <? else ?>\n text('')\n <? endif ?>\n AS f_showWoSupply\n FROM cohead, custinfo\n LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id)\n LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id)\n WHERE ((cohead_cust_id=cust_id)\n AND (cohead_id=<? value("sohead_id") ?>) );\n \n \n detail\n SELECT itemsite_id, coitem_id,\n item_number, item_description, uom_name, item_picklist,\n qoh, formatQty(qoh) AS f_qoh,sobalance,\n formatQty(sobalance) AS f_sobalance,\n formatQty(allocated) AS f_allocated,\n ordered, formatQty(ordered) AS f_ordered,\n (qoh + ordered - sobalance) AS woavail,\n formatQty(qoh + ordered - sobalance) AS f_soavail,\n (qoh + ordered - allocated) AS totalavail,\n formatQty(qoh + ordered - allocated) AS f_totalavail,\n atshipping,formatQty(atshipping) AS f_atshipping,\n reorderlevel \n <? if exists(showWoSupply) ?>, \n wo_id,\n wo_status,\n wo_number,\n wo_ordered,\n CASE WHEN (wo_id = -1) THEN NULL ELSE formatQty(wo_ordered) END AS f_wo_ordered,\n formatdate(wo_startdate) AS f_wo_startdate, \n formatdate(wo_duedate) AS f_wo_duedate,\n COALESCE(wo_latestart,false) AS wo_latestart,\n COALESCE(wo_latedue,false) AS wo_latedue \n <? endif ?>\n FROM ( SELECT itemsite_id, coitem_id,\n item_number, (item_descrip1 || ' ' || item_descrip2) AS item_description,\n uom_name, item_picklist,\n noNeg(itemsite_qtyonhand) AS qoh,\n noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) AS sobalance,\n qtyAllocated(itemsite_id, coitem_scheddate) AS allocated,\n qtyOrdered(itemsite_id, coitem_scheddate) AS ordered,\n qtyatshipping(coitem_id) AS atshipping,\n CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel ELSE 0.0 END AS reorderlevel \n <? if exists(showWoSupply) ?>, \n COALESCE(wo_id,-1) AS wo_id,\n formatwonumber(wo_id) AS wo_number,\n noNeg((wo_qtyord-wo_qtyrcv)) AS wo_ordered,\n wo_status, wo_startdate, wo_duedate,\n ((wo_startdate <= CURRENT_DATE) AND (wo_status IN ('O','E','S','R'))) AS wo_latestart,\n (wo_duedate<=CURRENT_DATE) AS wo_latedue \n <? endif ?> \n FROM cohead, itemsite, item, uom, coitem \n <? if exists(showWoSupply) ?> \n LEFT OUTER JOIN wo\n ON ((coitem_itemsite_id=wo_itemsite_id)\n AND (wo_status IN ('E','R','I'))\n AND (wo_qtyord-wo_qtyrcv > 0)\n AND (noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned-qtyatshipping(coitem_id)) > \n (SELECT itemsite_qtyonhand FROM itemsite WHERE (itemsite_id=coitem_itemsite_id))))\n <? endif ?>\n WHERE ( (coitem_cohead_id=cohead_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (coitem_status NOT IN ('C', 'X'))\n AND (cohead_id=<? value(sohead_id) ?>))\n ) AS data \n\t <? if exists(onlyShowShortages) ?>\n WHERE ( ((qoh + ordered - allocated) < 0)\n OR ((qoh + ordered - sobalance) < 0) ) \n <? endif ?>\n ORDER BY item_number\n <? if exists(showWoSupply) ?> ,\n wo_duedate\n <? endif ?>\n ;\n \n \n 251\n \n \n \n \n \n \n \n \n \n \n 385\n 140\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cohead_custponumber\n \n \n \n \n \n \n \n \n 360\n 175\n 380\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_showWoSupply\n \n \n \n \n \n 10\n 245\n 750\n 245\n 2\n \n \n \n 140\n 100\n 125\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cohead_number\n \n \n \n \n \n 385\n 100\n 350\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_name\n \n \n \n \n \n \n 385\n 120\n 350\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_phone\n \n \n \n \n 360\n 160\n 380\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_onlyShowShortages\n \n \n \n \n 140\n 120\n 125\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n orderdate\n \n \n \n \n \n \n \n \n \n 6\n \n \n 41\n \n \n \n \n \n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n
\n detail\n \n coitem\n coitem_id\n \n 31\n \n \n 430\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_allocated\n \n \n \n \n 325\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qoh\n \n \n \n \n 185\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n \n 640\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_soavail\n \n \n \n \n 535\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_atshipping\n \n \n \n \n 640\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_totalavail\n \n \n \n \n 535\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ordered\n \n \n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n Item_number\n \n \n \n \n 10\n 15\n 400\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n Item_description\n \n \n \n \n 430\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_sobalance\n \n \n \n \n 6\n \n 5\n 0\n 745\n 0\n 0\n \n \n \n \n \n detail\n \n 16\n \n \n 535\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_wo_startdate\n \n \n \n \n 25\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n wo_number\n \n \n \n \n 430\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_wo_ordered\n \n \n \n \n 640\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_wo_duedate\n \n \n \n \n 185\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n wo_status\n \n \n \n
\n \n 17\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 18 InventoryAvailabilityBySourceVendor \N \n\n Inventory Availability by Source Vendor\n InventoryAvailabilityBySourceVendor\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("byDays") ?>\n (text('Look ahead ') || text(<? value("byDays") ?>) || text(' days'))\n <? elseif exists("byDate") ?>\n (text('Cutoff date ') || formatDate(<? value("byDate") ?>))\n <? elseif exists("byDates") ?>\n (text('Dates from ') || formatDate(<? value("startDate") ?>) || text(' to ') || formatDate(<? value("endDate") ?>))\n <? else ?>\n text('Item Site Lead Time')\n <? endif ?>\n AS ltcriteria\n \n \n detail\n SELECT item_number,\n item_descrip1,\n item_descrip2,\n warehous_code,\n vend_number,\n itemsite_leadtime,\n formatQty(qtyonhand) AS f_qtyonhand,\n formatQty(noNeg(qtyonhand - allocated)) AS f_unallocated,\n formatQty(noNeg(allocated)) AS f_allocated,\n formatQty(ordered) AS f_ordered,\n formatQty(reorderlevel) AS f_reorderlevel,\n formatQty(outlevel) AS f_outlevel,\n (qtyonhand - allocated + ordered) AS available,\n formatQty(qtyonhand - allocated + ordered) AS f_available\n FROM (SELECT \n <? if reExists("[vV]end") ?>\n DISTINCT\n <? endif ?>\n itemsite_id,\n CASE WHEN (item_type IN ('P', 'O')) THEN 1\n WHEN (item_type IN ('M')) THEN 2\n ELSE 0\n END AS altId,\n item_number, item_descrip1, item_descrip2, item_inv_uom_id,\n warehous_id, warehous_code, itemsite_leadtime,\n itemsite_qtyonhand AS qtyonhand,\n CASE WHEN itemsite_useparams THEN itemsite_reorderlevel\n ELSE 0.0\n END AS reorderlevel,\n CASE WHEN itemsite_useparams THEN itemsite_ordertoqty\n ELSE 0.0\n END AS outlevel,\n <? if exists("byVend") ?>\n vend_number,\n <? else ?>\n NULL AS vend_number,\n <? endif ?>\n <? if exists("byLeadTime") ?>\n qtyAllocated(itemsite_id, itemsite_leadtime) AS allocated,\n qtyOrdered(itemsite_id, itemsite_leadtime) AS ordered, \n qtypr(itemsite_id, itemsite_leadtime) AS requests\n <? elseif exists("byDays") ?>\n qtyAllocated(itemsite_id, CAST(<? value("byDays") ?> AS INTEGER)) AS allocated,\n qtyOrdered(itemsite_id, CAST(<? value("byDays") ?> AS INTEGER)) AS ordered,\n qtypr(itemsite_id, CAST(<? value("byDays") ?> AS INTEGER)) AS requests \n <? elseif exists("byDate") ?>\n qtyAllocated(itemsite_id, (<? value("byDate") ?> - CURRENT_DATE)) AS allocated,\n qtyOrdered(itemsite_id, (<? value("byDate") ?> - CURRENT_DATE)) AS ordered,\n qtypr(itemsite_id, (<? value("byDate") ?> - CURRENT_DATE)) AS requests \n <? elseif exists("byDates") ?>\n qtyAllocated(itemsite_id, <? value("startDate") ?>, <? value("endDate") ?>) AS allocated,\n qtyOrdered(itemsite_id, <? value("startDate") ?>, <? value("endDate") ?>) AS ordered,\n qtypr(itemsite_id, <? value("startDate") ?>, <? value("endDate") ?>) AS requests\n <? endif ?>\n FROM item, itemsite, whsinfo\n <? if reExists("[vV]end") ?>\n , vendinfo JOIN itemsrc ON (itemsrc_vend_id=vend_id)\n <? endif ?>\n WHERE ( (itemsite_active)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n <? if exists("warehous_id") ?>\n AND (warehous_id=<? value("warehous_id") ?>)\n <? endif ?>\n <? if exists("item_id") ?>\n AND (item_id=<? value("item_id") ?>)\n <? elseif exists("classcode_id") ?>\n AND (item_classcode_id=<? value("classcode_id") ?>)\n <? elseif exists("classcode_pattern") ?>\n AND (item_classcode_id IN (SELECT classcode_id\n FROM classcode\n WHERE (classcode_code ~ <? value("classcode_pattern") ?>)))\n <? elseif exists("plancode_id") ?>\n AND (itemsite_plancode_id=<? value("plancode_id") ?>)\n <? elseif exists("plancode_pattern") ?>\n AND (itemsite_plancode_id IN (SELECT plancode_id\n FROM plancode\n WHERE (plancode_code ~ <? value("plancode_pattern") ?>)))\n <? elseif exists("itemgrp_id") ?>\n AND (item_id IN (SELECT itemgrpitem_item_id\n FROM itemgrpitem\n WHERE (itemgrpitem_itemgrp_id=<? value("itemgrp_id") ?>)))\n <? elseif exists("itemgrp_pattern") ?>\n AND (item_id IN (SELECT itemgrpitem_item_id\n FROM itemgrpitem, itemgrp\n WHERE ( (itemgrpitem_itemgrp_id=itemgrp_id)\n AND (itemgrp_name ~ <? value("itemgrp_pattern") ?>) ) ))\n <? elseif exists("itemgrp") ?>\n AND (item_id IN (SELECT DISTINCT itemgrpitem_item_id FROM itemgrpitem))\n <? endif ?>\n <? if reExists("[vV]end") ?>\n AND (itemsrc_item_id=item_id)\n <? endif ?>\n <? if exists("vend_id") ?>\n AND (vend_id=<? value("vend_id") ?>)\n <? elseif exists("vendtype_id") ?>\n AND (vend_vendtype_id=<? value("vendtype_id") ?>)\n <? elseif exists("vendtype_pattern") ?>\n AND (vend_vendtype_id IN (SELECT vendtype_id\n FROM vendtype\n WHERE (vendtype_code ~ <? value("vendtype_pattern") ?>)))\n <? endif ?>\n ) ) AS data\n<? if exists("showReorder") ?>\n WHERE ( ((qtyonhand - allocated + ordered) <= reorderlevel)\n <? if exists("ignoreReorderAtZero") ?>\n AND (NOT ( ((qtyonhand - allocated + ordered) = 0) AND (reorderlevel = 0)))\n <? endif ?>\n )\n<? elseif exists("showShortages") ?>\n WHERE ((qtyonhand - allocated + ordered) < 0)\n<? endif ?>\nORDER BY vend_number, item_number, warehous_code DESC;\n \n \n 221\n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n 135\n 43\n 280\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n ltcriteria\n \n \n \n \n \n \n \n \n \n \n \n \n 10\n 63\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 56\n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_available\n \n \n \n \n 330\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyonhand\n \n \n \n \n 160\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 55\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_number\n \n \n \n \n 540\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_reorderlevel\n \n \n \n \n 645\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_outlevel\n \n \n \n \n 5\n 15\n 45\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemsite_leadtime\n \n \n \n \n 434\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_allocated\n \n \n \n \n 540\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ordered\n \n \n \n \n 160\n 15\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 160\n 30\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n 5\n 50\n 745\n 50\n 0\n \n \n \n 434\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_unallocated\n \n \n \n \n 5\n 0\n 45\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n
\n \n 16\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 85\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 1 Invoice \N \n\n Invoice\n Invoice\n With Logo - With Invoice Currency\n \n \n SELECT invchead_id, invchead_invcnumber FROM invchead ORDER BY invchead_invcnumber;\n \n \n \n Parameter Query\n watermark\n \n 25\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n GroupHead\n SELECT \n\n--Due Date\nformatDate(determineDueDate(invchead_terms_id, invchead_invcdate)) AS due_date,\n--Discount Date\nformatDate(determineDiscountDate(invchead_terms_id, invchead_invcdate)) AS dis_date,\n\n --remitto.*,\nremitto_name,\nformatAddr(remitto_address1, remitto_address2, remitto_address3, remitto_citystatezip, remitto_country) AS remitto_adr,\n invchead_invcnumber AS invoicenumber,\n formatDate(invchead_invcdate) AS f_invoicedate,\n cust_number,\n invchead_billto_name,\n formatAddr(invchead_billto_address1, invchead_billto_address2, invchead_billto_address3, ( invchead_billto_city || ' ' || invchead_billto_state || ' ' || invchead_billto_zipcode ), invchead_billto_country) AS f_billtoaddress,\n invchead_billto_phone,\n invchead_shipto_name,\n formatAddr(invchead_shipto_address1, invchead_shipto_address2, invchead_shipto_address3, ( invchead_shipto_city || ' ' || invchead_shipto_state || ' ' || invchead_shipto_zipcode ), invchead_shipto_country) AS f_shiptoaddress,\n invchead_ordernumber AS ordernumber,\n invchead_ponumber,\n formatDate(invchead_orderdate) AS f_orderdate,\n formatDate(invchead_shipdate) AS f_shipdate,\n invchead_fob, terms_descrip, invchead_shipvia\nFROM remitto, custinfo, invchead, terms\nWHERE ( (invchead_cust_id=cust_id)\nAND (invchead_terms_id=terms_id)\nAND (invchead_id=<? value("invchead_id") ?>) )\nORDER BY ordernumber;\n \n \n Detail\n SELECT invcitem_linenumber,\n formatQty(invcitem_billed) AS f_billed,\n (select uom_name from uom where uom_id = invcitem_qty_uom_id) AS invuom,\n CASE WHEN (item_number IS NULL) THEN invcitem_number\n WHEN (invcitem_custpn != '') THEN invcitem_custpn\n else item_number\n END AS number,\n CASE WHEN (item_number IS NULL) THEN invcitem_descrip\n WHEN (invcitem_custpn != '' AND itemalias_usedescrip=TRUE) THEN itemalias_descrip1\n ELSE item_descrip1\n END AS descrip1,\n CASE WHEN (invcitem_custpn != '' AND itemalias_usedescrip=TRUE) THEN itemalias_descrip2\n ELSE item_descrip2\n END AS descrip2,\n CASE WHEN (<? value("showcosts") ?>=FALSE) THEN '---'\n ELSE formatPrice(invcitem_qty_invuomratio * invcitem_price / COALESCE(invcitem_price_invuomratio,1))\n END AS f_unitprice,\n CASE WHEN (<? value("showcosts") ?>=FALSE) THEN '---'\n ELSE formatMoney(round((invcitem_billed * invcitem_qty_invuomratio) * (invcitem_price / COALESCE(invcitem_price_invuomratio,1)),2)) \n END AS f_extprice,\n invcitem_notes,\n getInvcitemLotSerial(invcitem_id) AS lotserial,\n--Sub-select updated for 3.1 to support kitting\n characteristicsToString('SI',invcitem_coitem_id, '=', ', ') \n AS coitem_characteristics\nFROM invcitem LEFT OUTER JOIN (item JOIN uom ON (item_inv_uom_id=uom_id)) ON (invcitem_item_id=item_id) LEFT OUTER JOIN itemalias ON (itemalias_item_id=item_id AND itemalias_number=invcitem_custpn)\nWHERE (invcitem_invchead_id=<? value("invchead_id") ?>)\nORDER BY invcitem_linenumber;\n \n \n foot\n SELECT formatMoney(SUM(round((invcitem_billed * invcitem_qty_invuomratio) * (invcitem_price / COALESCE(invcitem_price_invuomratio,1)),2))) AS f_extprice \nFROM invcitem LEFT OUTER JOIN item on (invcitem_item_id=item_id) \nWHERE (invcitem_invchead_id=<? value("invchead_id") ?>);\n \n \n GroupExtended\n SELECT *,\n formatMoney(invchead_misc_amount) AS f_misc,\n formatMoney(tax) AS f_tax,\n formatMoney(invchead_freight) AS f_freight,\n formatMoney(invchead_payment) AS f_payment,\n formatMoney(noNeg(invchead_freight + invchead_misc_amount + tax +\n itemtotal - total_allocated)) AS f_totaldue,\n formatMoney(noNeg(invchead_freight + invchead_misc_amount + tax +\n itemtotal - total_allocated)) AS f_netdue,\n formatMoney(total_allocated) AS f_allocated\n FROM (SELECT invchead_misc_amount, invchead_freight,\n invchead_payment, invchead_notes, invchead_misc_descrip,\n (SELECT COALESCE(SUM(tax),0) \n FROM (\n SELECT ROUND(SUM(taxdetail_tax),2) AS tax \n FROM tax \n JOIN calculateTaxDetailSummary('I', <? value("invchead_id") ?>, 'T') ON (taxdetail_tax_id=tax_id)\n\t GROUP BY tax_id) AS data) AS tax,\n SUM(COALESCE(ROUND(invcitem_billed *\n invcitem_qty_invuomratio *\n invcitem_price /\n COALESCE(invcitem_price_invuomratio,1), 2), 0))\n AS itemtotal,\n COALESCE(\n CASE WHEN invchead_posted THEN\n (SELECT SUM(COALESCE(currToCurr(arapply_curr_id, t.aropen_curr_id,\n arapply_applied, t.aropen_docdate), 0))\n FROM arapply, aropen s, aropen t\n WHERE ( (s.aropen_id=arapply_source_aropen_id)\n AND (arapply_target_aropen_id=t.aropen_id)\n AND (arapply_target_doctype='I')\n AND (arapply_target_docnumber=invchead_invcnumber)\n AND (arapply_reftype='S')\n AND (arapply_source_aropen_id=s.aropen_id)))\n ELSE\n (SELECT SUM(COALESCE(CASE WHEN((aropen_amount - aropen_paid) >=\n currToCurr(aropenalloc_curr_id, aropen_curr_id,\n aropenalloc_amount, aropen_docdate))\n THEN currToCurr(aropenalloc_curr_id, invchead_curr_id,\n aropenalloc_amount, aropen_docdate)\n ELSE currToCurr(aropen_curr_id, invchead_curr_id,\n aropen_amount - aropen_paid,\n aropen_docdate)\n END, 0))\n FROM aropenalloc, aropen\n LEFT OUTER JOIN cohead ON (cohead_number=invchead_ordernumber)\n WHERE ( (aropenalloc_aropen_id=aropen_id)\n AND ((aropenalloc_doctype='S' AND aropenalloc_doc_id=cohead_id) OR\n (aropenalloc_doctype='I' AND aropenalloc_doc_id=invchead_id))\n AND ((aropen_amount - aropen_paid) > 0)))\n END, 0) AS total_allocated\n FROM invchead\n LEFT OUTER JOIN invcitem ON (invcitem_invchead_id=invchead_id)\n WHERE (invchead_id=<? value("invchead_id") ?>)\n GROUP BY invchead_freight, invchead_misc_amount, tax,\n invchead_payment, invchead_notes, invchead_misc_descrip,\n total_allocated\n ) AS dummy_outer\n ;\n \n \n allocatedCMs\n SELECT cohead_id,\n aropen_docnumber,\n formatMoney(aropen_amount) AS f_total,\n formatMoney(aropen_paid) AS f_paid,\n formatMoney(aropen_amount - aropen_paid) AS f_balance,\n CASE WHEN((aropen_amount - aropen_paid) >= currToCurr(aropenalloc_curr_id,\n\t\t\t\t\t\t\t aropen_curr_id,\n\t\t\t\t\t\t\t aropenalloc_amount,\n\t\t\t\t\t\t\t aropen_docdate))\n\t THEN currToCurr(aropenalloc_curr_id, aropen_curr_id,\n\t\t\t aropenalloc_amount, aropen_docdate)\n ELSE (aropen_amount - aropen_paid)\n END AS allocated,\n CASE WHEN((aropen_amount - aropen_paid) >= currToCurr(aropenalloc_curr_id,\n\t\t\t\t\t\t\t aropen_curr_id,\n\t\t\t\t\t\t\t aropenalloc_amount,\n\t\t\t\t\t\t\t aropen_docdate))\n\t THEN formatMoney(currToCurr(aropenalloc_curr_id, aropen_curr_id,\n\t\t\t\t\taropenalloc_amount, aropen_docdate))\n ELSE formatMoney(aropen_amount - aropen_paid)\n END AS f_allocated,\n CASE WHEN((aropen_amount - aropen_paid) >= currToCurr(aropenalloc_curr_id,\n\t\t\t\t\t\t\t aropen_curr_id,\n\t\t\t\t\t\t\t aropenalloc_amount,\n\t\t\t\t\t\t\t aropen_docdate))\n\t THEN currToCurr(aropenalloc_curr_id, invchead_curr_id,\n\t\t\t aropenalloc_amount, aropen_docdate)\n ELSE currToCurr(aropen_curr_id, invchead_curr_id,\n aropen_amount - aropen_paid, aropen_docdate)\n END AS allocated_invccurr,\n CASE WHEN((aropen_amount - aropen_paid) >= currToCurr(aropenalloc_curr_id,\n\t\t\t\t\t\t\t aropen_curr_id,\n\t\t\t\t\t\t\t aropenalloc_amount,\n\t\t\t\t\t\t\t aropen_docdate))\n\t THEN formatMoney(currToCurr(aropenalloc_curr_id, invchead_curr_id,\n\t\t\t\t\taropenalloc_amount, aropen_docdate))\n ELSE formatMoney(currToCurr(aropen_curr_id, invchead_curr_id,\n aropen_amount - aropen_paid,\n aropen_docdate))\n END AS f_allocated_invccurr,\n curr_symbol AS aropen_currsymbol\n FROM invchead LEFT OUTER JOIN cohead ON (cohead_number=invchead_ordernumber)\n JOIN aropenalloc ON ((aropenalloc_doctype='S' AND aropenalloc_doc_id=cohead_id) OR\n (aropenalloc_doctype='I' AND aropenalloc_doc_id=invchead_id))\n JOIN aropen ON (aropenalloc_aropen_id=aropen_id)\n JOIN curr_symbol ON (aropen_curr_id=curr_id)\nWHERE ((aropen_amount - aropen_paid) > 0)\n AND (NOT invchead_posted)\n AND (invchead_id=<? value("invchead_id") ?>)\nUNION\nSELECT cohead_id,\n arapply_source_docnumber AS aropen_docnumber,\n formatMoney(s.aropen_amount) AS f_total,\n formatMoney(s.aropen_paid -\n currToCurr(arapply_curr_id, s.aropen_curr_id,\n arapply_applied, arapply_postdate)) AS f_paid,\n formatMoney(s.aropen_amount - s.aropen_paid +\n currToCurr(arapply_curr_id, s.aropen_curr_id,\n arapply_applied, arapply_postdate)) AS f_balance,\n currToCurr(arapply_curr_id, s.aropen_curr_id,\n arapply_applied, arapply_postdate) AS allocated,\n formatMoney(currToCurr(arapply_curr_id, s.aropen_curr_id,\n arapply_applied,\n arapply_postdate)) AS f_allocated,\n currToCurr(arapply_curr_id, invchead_curr_id,\n arapply_applied, t.aropen_docdate) AS allocated_invccurr,\n formatMoney(currToCurr(arapply_curr_id, invchead_curr_id,\n arapply_applied,\n t.aropen_docdate)) AS f_allocated_invccurr,\n curr_symbol AS aropen_currsymbol\n FROM arapply, aropen s, aropen t, cohead, invchead, curr_symbol\nWHERE ( (s.aropen_id=arapply_source_aropen_id)\n AND (arapply_target_aropen_id=t.aropen_id)\n AND (arapply_target_doctype='I')\n AND (arapply_target_docnumber=invchead_invcnumber)\n AND (arapply_source_aropen_id=s.aropen_id)\n AND (arapply_curr_id=curr_id)\n AND (arapply_reftype='S')\n AND (cohead_number=invchead_ordernumber)\n AND (invchead_posted)\n AND (invchead_id=<? value("invchead_id") ?>) )\nORDER BY aropen_docnumber;\n \n \n currency\n SELECT currConcat(curr_id) AS currConcat, curr_symbol\nFROM invchead, curr_symbol\nWHERE (invchead_id = <? value("invchead_id") ?>)\n AND (invchead_curr_id = curr_id);\n \n \n logo\n SELECT image_data \nFROM image \nWHERE ((image_name='logo'));\n \n \n tracknum\n select formatdate(shiphead_shipdate) AS f_shipdate, shiphead_tracknum, shiphead_shipvia from cohead, shiphead, invchead \nwhere \ncohead_id = shiphead_order_id \nand shiphead_order_type = 'SO' \nand cohead_number = invchead_ordernumber \nand invchead_id = <? value("invchead_id") ?> \norder by shiphead_shipdate;\n \n \n \n 360\n \n \n 215\n 5\n 270\n 111\n \n stretch\n \n logo\n image_data\n \n \n \n \n \n 430\n 220\n 300\n 20\n \n 0\n \n Arial\n 12\n normal\n \n \n \n \n GroupHead\n f_shiptoaddress\n \n \n \n \n \n 129\n 140\n 111\n 20\n \n \n Sans Serif\n 10\n normal\n \n \n \n \n GroupHead\n invoicenumber\n \n \n \n \n \n 430\n 200\n 300\n 20\n \n \n Luciduxsans\n 12\n 48\n \n \n \n \n GroupHead\n invchead_shipto_name\n \n \n \n \n \n 55\n 200\n 270\n 20\n \n \n Luciduxsans\n 12\n 48\n \n \n \n \n GroupHead\n invchead_billto_name\n \n \n \n \n \n 5\n 5\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n GroupHead\n remitto_name\n \n \n \n \n 140\n 125\n 100\n 20\n \n \n Sans Serif\n 10\n normal\n \n \n \n \n GroupHead\n ordernumber\n \n \n \n \n 120\n 155\n 120\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n GroupHead\n invchead_ponumber\n \n \n \n \n 650\n 100\n 95\n 20\n \n \n Sans Serif\n 10\n normal\n \n \n \n \n GroupHead\n f_orderdate\n \n \n \n \n 95\n 170\n 145\n 20\n \n \n Sans Serif\n 10\n normal\n \n \n \n \n GroupHead\n cust_number\n \n \n \n \n 5\n 25\n 203\n 16\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n GroupHead\n remitto_adr\n \n \n \n \n 55\n 220\n 300\n 20\n \n 0\n \n Arial\n 12\n normal\n \n \n \n \n GroupHead\n f_billtoaddress\n \n \n \n \n \n \n 5\n 350\n 745\n 350\n 2\n \n \n \n 555\n 115\n 190\n 20\n \n \n Sans Serif\n 10\n normal\n \n \n \n \n GroupHead\n invchead_fob\n \n \n \n \n \n 620\n 40\n 125\n 20\n \n \n Sans Serif\n 10\n normal\n \n \n \n \n GroupHead\n f_invoicedate\n \n \n \n \n \n \n 620\n 55\n 125\n 20\n \n \n Sans Serif\n 10\n normal\n \n \n \n \n GroupHead\n due_date\n \n \n \n \n \n 615\n 70\n 130\n 20\n \n \n Sans Serif\n 10\n normal\n \n \n \n \n GroupHead\n dis_date\n \n \n \n \n \n 545\n 85\n 200\n 20\n \n \n Sans Serif\n 8\n normal\n \n \n \n \n GroupHead\n terms_descrip\n \n \n \n
\n tracknumber\n \n tracknum\n shiphead_shipdate\n \n 41\n \n 40\n 35\n 745\n 35\n 0\n \n \n \n \n \n \n \n 12\n \n 40\n 5\n 745\n 5\n 0\n \n \n \n \n \n tracknum\n \n 21\n \n \n 160\n 0\n 225\n 20\n \n \n Sans Serif\n 10\n normal\n \n \n \n \n tracknum\n shiphead_shipvia\n \n \n \n \n 390\n 0\n 280\n 20\n \n \n Sans Serif\n 10\n normal\n \n \n \n \n tracknum\n shiphead_tracknum\n \n \n \n \n 40\n 0\n 100\n 20\n \n \n Sans Serif\n 10\n normal\n \n \n \n \n tracknum\n f_shipdate\n \n \n \n
\n
\n ColumnHeadings\n \n \n GroupHead\n \n 41\n \n \n \n \n \n 490\n 10\n 71\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n currency\n currConcat\n \n \n \n 40\n 35\n 745\n 35\n 2\n \n \n \n \n \n \n
\n
\n items\n \n \n Detail\n \n 93\n \n \n 25\n 5\n 120\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n f_billed\n \n \n \n \n 260\n 45\n 480\n 14\n \n \n Arial\n 8\n normal\n \n \n \n \n Detail\n coitem_characteristics\n \n \n \n \n 440\n 70\n 365\n 14\n \n 0\n \n Arial\n 8\n normal\n \n \n \n \n Detail\n lotserial\n \n \n \n \n \n 171\n 5\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n invuom\n \n \n \n \n 492\n 5\n 31\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n currency\n curr_symbol\n \n \n \n \n 645\n 5\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n f_extprice\n \n \n \n \n 260\n 35\n 300\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n Detail\n descrip2\n \n \n \n \n \n 540\n 5\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n f_unitprice\n \n \n \n \n 70\n 70\n 365\n 14\n \n 0\n \n Arial\n 8\n normal\n \n \n \n \n Detail\n invcitem_notes\n \n \n \n \n 260\n 5\n 220\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n number\n \n \n \n \n 260\n 25\n 300\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n Detail\n descrip1\n \n \n \n
\n
\n allocatedCMs\n \n unnamed\n cohead_id\n \n 41\n \n \n 45\n 35\n 750\n 35\n 0\n \n \n \n \n 45\n 0\n 750\n 0\n 0\n \n \n \n \n \n \n \n 21\n \n \n 600\n 0\n 31\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n currency\n curr_symbol\n \n \n \n \n \n 640\n 0\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n allocatedCMs\n allocated_invccurr\n \n extprice\n \n \n \n \n \n \n allocatedCMs\n \n 21\n \n \n 140\n 0\n 40\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n allocatedCMs\n aropen_currsymbol\n \n \n \n \n 640\n 0\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n allocatedCMs\n f_allocated_invccurr\n \n \n \n 590\n 0\n 590\n 30\n 0\n \n \n \n 280\n 0\n 90\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n allocatedCMs\n f_paid\n \n \n \n \n 180\n 0\n 90\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n allocatedCMs\n f_total\n \n \n \n \n 480\n 0\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n allocatedCMs\n f_allocated\n \n \n \n \n 600\n 0\n 31\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n currency\n curr_symbol\n \n \n \n \n 40\n 0\n 90\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n allocatedCMs\n aropen_docnumber\n \n \n \n \n 380\n 0\n 90\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n allocatedCMs\n f_balance\n \n \n \n
\n \n \n 167\n \n \n 605\n 5\n 31\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n currency\n curr_symbol\n \n \n \n \n 640\n 25\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n GroupExtended\n f_freight\n \n \n \n \n 20\n 25\n 540\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n GroupExtended\n invchead_notes\n \n \n \n \n \n 605\n 85\n 31\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n currency\n curr_symbol\n \n \n \n \n \n 605\n 25\n 31\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n currency\n curr_symbol\n \n \n \n \n \n \n 640\n 103\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n GroupExtended\n f_totaldue\n \n \n \n \n 640\n 5\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n foot\n f_extprice\n \n \n \n \n 605\n 103\n 31\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n currency\n curr_symbol\n \n \n \n \n 640\n 45\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n GroupExtended\n f_misc\n \n \n \n \n 640\n 85\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n GroupExtended\n f_allocated\n \n \n \n \n \n 640\n 65\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n GroupExtended\n f_tax\n \n \n \n \n 605\n 45\n 31\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n currency\n curr_symbol\n \n \n \n \n 605\n 65\n 31\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n currency\n curr_symbol\n \n \n \n \n 5\n 5\n 745\n 5\n 2\n \n \n \n 325\n 145\n 20\n 20\n \n \n Sans Serif\n 10\n normal\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 20\n 45\n 540\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n GroupExtended\n invchead_misc_descrip\n \n \n \n \n \n 27\n \n \n 330\n 0\n 20\n 20\n \n \n Sans Serif\n 10\n normal\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n With Logo - With Invoice Currency 0 2013-07-26 16:17:54.38447 257 InvoiceInformation \N \n\n Invoice Information\n InvoiceInformation\n \n \n \n Parameter Query\n watermark\n \n 25\n \n Letter\n \n 50\n 50\n 50\n 50\n \n GroupHead\n SELECT invchead_id, invchead_ponumber,\n formatDate(invchead_shipdate) AS f_shipdate,\n formatDate(invchead_invcdate) AS f_invcdate,\n formatMoney(invoiceTotal(invchead_id)) AS f_amount,\n invchead_billto_name, invchead_billto_address1,\n invchead_billto_address2, invchead_billto_address3,\n ( invchead_billto_city || ' ' || invchead_billto_state || ', '\n || invchead_billto_zipcode ) AS billtocitystatezip,\n invchead_shipto_name, invchead_shipto_address1,\n invchead_shipto_address2, invchead_shipto_address3,\n ( invchead_shipto_city || ' ' || invchead_shipto_state || ', '\n || invchead_shipto_zipcode ) AS shiptocitystatezip,\n invchead_notes, invchead_invcnumber\nFROM invchead LEFT OUTER JOIN (invcitem LEFT OUTER JOIN item ON (invcitem_item_id=item_id) ) ON (invcitem_invchead_id=invchead_id)\nWHERE (invchead_id=<? value("invchead_id") ?>)\nGROUP BY invchead_id, invchead_ponumber,\n invchead_shipdate, invchead_invcdate,\n invchead_misc_amount, invchead_freight,\n invchead_billto_name, invchead_billto_address1,\n invchead_billto_address2, invchead_billto_address3,\n invchead_billto_city, invchead_billto_state, invchead_billto_zipcode,\n invchead_shipto_name, invchead_shipto_address1,\n invchead_shipto_address2, invchead_shipto_address3,\n invchead_shipto_city, invchead_shipto_state, invchead_shipto_zipcode,\n invchead_notes, invchead_invcnumber;\n \n \n CustInfo\n SELECT cust_id,\n cust_number,\n cust_name,\n addr_line1 AS cust_address1,\n addr_line2 AS cust_address2,\n addr_line3 AS cust_address3,\n addr_city || ' ' || addr_state || ', ' || addr_postalcode AS custcitystatezip\nFROM invchead, custinfo\nLEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id)\nLEFT OUTER JOIN addr ON (cntct_addr_id=addr_id)\nWHERE ( (invchead_id=<? value("invchead_id") ?>)\n AND (invchead_cust_id=cust_id) );\n \n \n Details\n SELECT 1 as grpnum,\n arapply_id,\n CASE WHEN (arapply_source_doctype = 'C') THEN text('C/M')\n WHEN (arapply_fundstype='C') THEN text('Check')\n WHEN (arapply_fundstype='T') THEN text('Certified Check')\n WHEN (arapply_fundstype='M') THEN text('Master Card')\n WHEN (arapply_fundstype='V') THEN text('Visa')\n WHEN (arapply_fundstype='A') THEN text('American Express')\n WHEN (arapply_fundstype='D') THEN text('Discover Card')\n WHEN (arapply_fundstype='R') THEN text('Other Credit Card')\n WHEN (arapply_fundstype='K') THEN text('Cash')\n WHEN (arapply_fundstype='W') THEN text('Wire Transfer')\n WHEN (arapply_fundstype='O') THEN text('Other')\n END AS documenttype,\n CASE WHEN (arapply_source_doctype = 'C') THEN arapply_source_docnumber\n WHEN (arapply_source_doctype = 'R') THEN arapply_source_docnumber\n WHEN (arapply_source_doctype = 'K') THEN arapply_refnumber\n ELSE text('Error')\n END AS docnumber,\n formatDate(arapply_postdate) AS f_postdate,\n formatMoney(arapply_applied) AS f_amount\n FROM arapply, invchead\n WHERE ( (arapply_target_doctype='I')\n AND (arapply_target_docnumber=invchead_invcnumber)\n AND (invchead_id=<? value("invchead_id") ?>) )\nORDER BY arapply_postdate;\n \n \n \n 389\n \n \n 590\n 80\n 125\n 20\n \n \n Arial\n 12\n bold\n \n \n \n \n GroupHead\n f_invcdate\n \n \n \n \n 155\n 140\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n CustInfo\n cust_address2\n \n \n \n \n \n 155\n 80\n 125\n 20\n \n \n Arial\n 12\n bold\n \n \n \n \n CustInfo\n cust_number\n \n \n \n \n 25\n 280\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n GroupHead\n invchead_billto_address2\n \n \n \n \n 155\n 120\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n CustInfo\n cust_address1\n \n \n \n \n 590\n 125\n 125\n 20\n \n \n Arial\n 12\n bold\n \n \n \n \n GroupHead\n f_amount\n \n \n \n \n 25\n 240\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n GroupHead\n invchead_billto_name\n \n \n \n \n 155\n 25\n 125\n 20\n \n \n Arial\n 12\n bold\n \n \n \n \n GroupHead\n invchead_invcnumber\n \n \n \n \n 155\n 160\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n CustInfo\n cust_address3\n \n \n \n \n 155\n 100\n 300\n 20\n \n \n Arial\n 12\n bold\n \n \n \n \n CustInfo\n cust_name\n \n \n \n \n \n \n 155\n 180\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n CustInfo\n custcitystatezip\n \n \n \n \n \n 25\n 320\n 325\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n GroupHead\n billtocitystatezip\n \n \n \n \n \n \n 385\n 320\n 325\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n GroupHead\n shiptocitystatezip\n \n \n \n \n \n 385\n 300\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n GroupHead\n invchead_shipto_address3\n \n \n \n \n \n 385\n 280\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n GroupHead\n invchead_shipto_address2\n \n \n \n \n 155\n 50\n 125\n 20\n \n \n Arial\n 12\n bold\n \n \n \n \n GroupHead\n invchead_ponumber\n \n \n \n \n \n 385\n 240\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n GroupHead\n invchead_shipto_name\n \n \n \n \n 20\n 365\n 690\n 20\n \n 0\n \n Arial\n 10\n bold\n \n \n \n \n GroupHead\n invchead_notes\n \n \n \n \n 25\n 300\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n GroupHead\n invchead_billto_address3\n \n \n \n \n 385\n 260\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n GroupHead\n invchead_shipto_address1\n \n \n \n \n \n 25\n 260\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n GroupHead\n invchead_billto_address1\n \n \n \n \n 590\n 100\n 125\n 20\n \n \n Arial\n 12\n bold\n \n \n \n \n GroupHead\n f_shipdate\n \n \n \n
\n details\n \n header\n grpnum\n \n 47\n \n \n \n \n 5\n 40\n 745\n 40\n 2\n \n \n \n \n \n \n \n Details\n \n 17\n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n Details\n f_amount\n \n \n \n \n 110\n 0\n 425\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n Details\n docnumber\n \n \n \n \n 5\n 0\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n Details\n documenttype\n \n \n \n \n 540\n 0\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n Details\n f_postdate\n \n \n \n
\n \n 17\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 281 InvoiceRegister \N \n\n Invoice Register\n InvoiceRegister\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("accnt_id") ?>\n ( SELECT (accnt_number || '-' || accnt_descrip)\n FROM accnt\n WHERE (accnt_id=<? value("accnt_id") ?>) )\n <? else ?>\n text('All Accounts')\n <? endif ?>\n AS accnt\n \n \n detail\n SELECT gltrans_id,\n formatDate(gltrans_date) AS transdate,\n gltrans_source,\n CASE WHEN(gltrans_doctype='IN') THEN text('Invoice')\n WHEN(gltrans_doctype='CM') THEN text('Credit Memo')\n WHEN(gltrans_doctype='DM') THEN text('Debit Memo')\n WHEN(gltrans_doctype='CD') THEN text('Customer Deposit')\n ELSE gltrans_doctype\n END AS doctype,\n gltrans_docnumber,\n CASE WHEN(gltrans_doctype='IN') THEN\n (SELECT invchead_shipto_name\n FROM aropen LEFT OUTER JOIN\n invchead\n ON (invchead_id=aropen_cobmisc_id\n AND invchead_cust_id=aropen_cust_id)\n WHERE ((aropen_docnumber=gltrans_docnumber)\n AND (aropen_doctype='I')))\n ELSE firstLine(gltrans_notes)\n END AS transnotes,\n (formatGLAccount(accnt_id) || ' - ' || accnt_descrip) AS account,\n CASE WHEN (gltrans_amount < 0) THEN formatMoney(ABS(gltrans_amount))\n ELSE ''\n END AS f_debit,\n CASE WHEN (gltrans_amount < 0) THEN ABS(gltrans_amount)\n ELSE 0\n END AS debit,\n CASE WHEN (gltrans_amount > 0) THEN formatMoney(gltrans_amount)\n ELSE ''\n END AS f_credit,\n CASE WHEN (gltrans_amount > 0) THEN gltrans_amount\n ELSE 0\n END AS credit\n FROM gltrans, accnt\n WHERE ((gltrans_accnt_id=accnt_id)\n AND (gltrans_doctype IN ('IN', 'CM', 'DM', 'CD'))\n AND (gltrans_source = 'A/R')\n AND (gltrans_date BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n<? if exists("accnt_id") ?>\n AND (gltrans_accnt_id=<? value("accnt_id") ?>)\n<? endif ?>\n )\nORDER BY gltrans_date, gltrans_docnumber;\n \n \n 205\n \n \n \n 545\n 70\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n \n \n \n \n \n 140\n 70\n 290\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n accnt\n \n \n \n \n \n 545\n 90\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n 5\n 200\n 745\n 200\n 2\n \n \n \n \n \n 6\n \n \n 41\n \n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n \n \n
\n detail\n \n bydate\n transdate\n \n 21\n \n \n 10\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n transdate\n \n \n \n \n 21\n \n \n \n 509\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n debit\n \n money\n \n \n \n 600\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n credit\n \n money\n \n \n 5\n 15\n 745\n 15\n 1\n \n \n \n \n \n detail\n \n 31\n \n \n 95\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_source\n \n \n \n \n 160\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_docnumber\n \n \n \n \n 160\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n doctype\n \n \n \n \n 509\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_debit\n \n \n \n \n 245\n 15\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n account\n \n \n \n \n 600\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_credit\n \n \n \n \n 245\n 0\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n transnotes\n \n \n \n
\n \n 18\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 21\n \n \n 600\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n credit\n \n money\n \n \n \n 509\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n debit\n \n money\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 370 ItemCostDetail \N \n\n Item Costs Detail\n ItemCostDetail\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n item_descrip1,\n item_descrip2,\n costelem_type,\n<? if exists("standardCost") ?>\n text('Standard Cost')\n<? else ?>\n text('Actual Cost')\n<? endif ?>\n AS costtype\n FROM item, costelem\n WHERE((item_id=<? value("item_id") ?>)\n AND (costelem_id=<? value("costelem_id") ?>));\n\n \n \n detail\n SELECT seqnumber, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescrip, uom_name,\n formatQtyper(qtyper) AS f_qtyper,\n formatScrap(bomitem_scrap) AS f_scrap,\n formatCost(cost) AS f_cost,\n formatCost(extendedcost) AS f_extendedcost,\n extendedcost\n FROM ( SELECT bomitem_seqnumber AS seqnumber,\n itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, bomitem_qtyper) AS qtyper, bomitem_scrap,\n item_number, item_descrip1, item_descrip2, uom_name,\n<? if exists("standardCost") ?>\n itemcost_stdcost AS cost,\n (itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, bomitem_qtyper * (1 + bomitem_scrap)) *\n itemcost_stdcost) AS extendedcost\n<? else ?>\n currToBase(itemcost_curr_id, itemcost_actcost, NULL) AS cost,\n (itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, bomitem_qtyper * (1 + bomitem_scrap)) *\n currToBase(itemcost_curr_id, itemcost_actcost, NULL)) AS extendedcost\n<? endif ?>\n FROM bomitem, item, itemcost, costelem, uom\n WHERE((bomitem_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires-1))\n AND (itemcost_item_id=item_id)\n AND (itemcost_costelem_id=costelem_id)\n AND (SELECT item_type!='C' FROM item WHERE item_id=<? value("item_id") ?>)\n AND (bomitem_parent_item_id=<? value("item_id") ?>)\n AND (costelem_id=<? value("costelem_id") ?>) ) ) AS data\n\nUNION\n\nSELECT seqnumber, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescrip, uom_name,\n formatQtyPer(bbomitem_qtyper) AS f_qtyper,\n formatScrap(bbomitem_costabsorb) AS f_scrap,\n formatCost(cost) AS f_cost,\n formatCost(extendedcost) AS f_extendedcost,\n extendedcost\n FROM ( SELECT bbomitem_seqnumber AS seqnumber, bbomitem_qtyper, bbomitem_costabsorb,\n item_number, item_descrip1, item_descrip2, uom_name,\n<? if exists("standardCost") ?>\n itemcost_stdcost AS cost,\n (itemcost_stdcost / bbomitem_qtyper * bbomitem_costabsorb) AS extendedcost\n<? else ?>\n currToBase(itemcost_curr_id, itemcost_actcost, NULL) AS cost,\n (currToBase(itemcost_curr_id, itemcost_actcost, NULL) / bbomitem_qtyper * bbomitem_costabsorb) AS extendedcost\n<? endif ?>\n FROM bbomitem, item, itemcost, uom\n WHERE((bbomitem_parent_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (CURRENT_DATE BETWEEN bbomitem_effective AND (bbomitem_expires-1))\n AND (itemcost_item_id=bbomitem_parent_item_id)\n AND (itemcost_costelem_id=<? value("costelem_id") ?>)\n AND (SELECT item_type='C' FROM item WHERE item_id=<? value("item_id") ?>)\n AND (bbomitem_item_id=<? value("item_id") ?>) )\n\n UNION\n\n SELECT source.bbomitem_seqnumber AS seqnumber,\n source.bbomitem_qtyper, target.bbomitem_costabsorb,\n item_number, item_descrip1, item_descrip2, uom_name,\n<? if exists("standardCost") ?>\n itemcost_stdcost AS cost,\n (itemcost_stdcost * source.bbomitem_qtyper / target.bbomitem_qtyper * target.bbomitem_costabsorb) AS extendedcost\n<? else ?>\n currToBase(itemcost_curr_id, itemcost_actcost, NULL) AS cost,\n (currToBase(itemcost_curr_id, itemcost_actcost, NULL) * source.bbomitem_qtyper / target.bbomitem_qtyper * target.bbomitem_costabsorb) AS extendedcost\n<? endif ?>\n FROM item, itemcost, bbomitem AS target, bbomitem AS source, uom\n WHERE ( (source.bbomitem_parent_item_id=target.bbomitem_parent_item_id)\n AND (CURRENT_DATE BETWEEN source.bbomitem_effective AND (source.bbomitem_expires-1))\n AND (CURRENT_DATE BETWEEN target.bbomitem_effective AND (target.bbomitem_expires-1))\n AND (source.bbomitem_item_id=itemcost_item_id)\n AND (source.bbomitem_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (item_type='Y')\n AND (SELECT item_type='C' FROM item WHERE item_id=<? value("item_id") ?>)\n AND (target.bbomitem_item_id=<? value("item_id") ?>)\n AND (itemcost_costelem_id=<? value("costelem_id") ?>) ) ) AS data\n ORDER BY seqnumber;\n \n \n 223\n \n \n \n \n 490\n 80\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n costelem_type\n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n 100\n 80\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n \n \n 100\n 120\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n \n \n \n 490\n 100\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n costtype\n \n \n \n \n 100\n 100\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n \n 6\n \n \n 28\n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 18\n \n \n 220\n 0\n 185\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemdescrip\n \n \n \n \n 494\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_scrap\n \n \n \n \n 60\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 165\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n \n 5\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n seqnumber\n \n \n \n \n 410\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyper\n \n \n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_cost\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_extendedcost\n \n \n \n
\n \n 18\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 18\n \n \n \n 660\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n extendedcost\n \n qty\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 415 ListOpenReturnAuthorizations \N \n\n List Open Return Authorizations\n ListOpenReturnAuthorizations\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM warehous\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Warehouses')\n <? endif ?>\n AS warehouse;\n\n \n \n detail\n returnAuthorizations\n detail\n \n \n 221\n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n \n 100\n 104\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 18\n \n \n 100\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n custnumber\n \n \n \n \n 425\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n disposition\n \n \n \n \n 535\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_authorized\n \n \n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_expires\n \n \n \n \n 5\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n rahead_number\n \n \n \n \n 195\n 0\n 225\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n rahead_billtoname\n \n \n \n
\n \n 18\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2012-11-07 15:44:48.305076 361 ListTransferOrders \N \n\n List Transfer Orders\n ListTransferOrders\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("src_warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("src_warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?> AS src_warehous_code,\n <? if exists("dest_warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("dest_warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?> AS dest_warehous_code,\n CASE WHEN (<? value ("tohead_status") ?>='C') THEN 'Closed'\n WHEN (<? value ("tohead_status") ?>='O') THEN 'Open'\n ELSE text('All Statuses')\n END AS status;\n\n \n \n detail\n SELECT tohead_number,\n tohead_srcname,\n tohead_trnsname,\n tohead_destname,\n formatDate(tohead_orderdate) AS f_orderdate,\n formatDate(MIN(toitem_schedshipdate)) AS f_scheddate,\n formatDate(DATE(MAX(shipitem_shipdate))) AS f_shipdate,\n CASE WHEN (tohead_status='C') THEN 'Closed'\n WHEN (tohead_status='O') THEN 'Open'\n ELSE tohead_status\n END AS status\n FROM tohead, toitem LEFT OUTER JOIN\n (shipitem JOIN\n shiphead ON (shipitem_shiphead_id=shiphead_id\n AND shiphead_order_type='TO')\n ) ON (shipitem_orderitem_id=toitem_id)\n WHERE ((toitem_tohead_id=tohead_id)\n AND (toitem_status<>'X')\n<? if exists("tohead_status") ?>\n AND (tohead_status=<? value("tohead_status") ?>)\n<? elseif exists("excludeClosed") ?>\n AND (tohead_status <> 'C')\n<? endif ?>\n<? if exists("src_warehous_id") ?>\n AND (tohead_src_warehous_id=<? value("src_warehous_id") ?>)\n<? endif ?>\n<? if exists("dest_warehous_id") ?>\n AND (tohead_dest_warehous_id=<? value("dest_warehous_id") ?>)\n<? endif ?>\n)\nGROUP BY tohead_number, tohead_srcname, tohead_trnsname, tohead_destname,\n tohead_orderdate, tohead_status\nORDER BY tohead_number;\n \n \n 221\n \n \n \n \n \n \n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n 140\n 150\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n status\n \n \n \n \n \n 140\n 105\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n src_warehous_code\n \n \n \n \n 140\n 130\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n dest_warehous_code\n \n \n \n \n \n \n 5\n \n \n 21\n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 15\n \n \n 5\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n tohead_number\n \n \n \n \n 600\n 0\n 100\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_shipdate\n \n \n \n \n 200\n 0\n 95\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n tohead_trnsname\n \n \n \n \n 300\n 0\n 95\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n tohead_destname\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n tohead_srcname\n \n \n \n \n 500\n 0\n 100\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n f_scheddate\n \n \n \n \n 400\n 0\n 100\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_orderdate\n \n \n \n \n 700\n 0\n 50\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n status\n \n \n \n
\n \n 15\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 95 MaterialUsageVarianceByItem \N \n\n Material Usage Variance By Item\n MaterialUsageVarianceByItem\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n item_descrip1,\n item_descrip2,\n uom_name,\n <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate\n FROM item JOIN uom ON (item_inv_uom_id=uom_id)\n WHERE (item_id=<? value("item_id") ?>);\n\n \n \n detail\n workOrderVariance\n material\n \n \n 234\n \n \n 5\n 228\n 745\n 228\n 2\n \n \n \n \n 605\n 90\n 120\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n 605\n 110\n 120\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n \n 360\n 90\n 120\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n uom_name\n \n \n \n \n \n \n \n 140\n 130\n 350\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n 140\n 110\n 350\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n \n 140\n 155\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n \n \n 140\n 90\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 51\n \n \n 85\n 15\n 395\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n componentdescrip\n \n \n \n \n 580\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_actqtyper\n \n \n \n \n 494\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_projqtyper\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 400\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_received\n \n \n \n \n 665\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtypervarpercent\n \n \n \n \n 85\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n componentitemnumber\n \n \n \n \n 494\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_projreq\n \n \n \n \n 5\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_posted\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtypervar\n \n \n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_actiss\n \n \n \n \n 315\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ordered\n \n \n \n
\n \n 16\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 98 MaterialUsageVarianceByWarehouse \N \n\n Material Usage Variance By Site\n MaterialUsageVarianceByWarehouse\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse;\n \n \n detail\n workOrderVariance\n material\n \n \n 234\n \n \n \n \n 490\n 130\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n \n \n 140\n 110\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n 490\n 110\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n \n \n \n \n 5\n 228\n 745\n 228\n 2\n \n \n \n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 51\n \n \n 520\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_projreq\n \n \n \n \n 85\n 15\n 175\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n parentdescrip\n \n \n \n \n 595\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_actqtyper\n \n \n \n \n 444\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ordered\n \n \n \n \n 265\n 15\n 175\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n componentdescrip\n \n \n \n \n 595\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_actiss\n \n \n \n \n 670\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtypervarpercent\n \n \n \n \n 265\n 0\n 175\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n componentitemnumber\n \n \n \n \n 670\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtypervar\n \n \n \n \n 85\n 0\n 175\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n parentitemnumber\n \n \n \n \n 444\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_received\n \n \n \n \n 5\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_posted\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 520\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_projqtyper\n \n \n \n
\n \n 16\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 97 MaterialUsageVarianceByWorkOrder \N \n\n Material Usage Variance By Work Order\n MaterialUsageVarianceByWorkOrder\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatWONumber(wo_id) AS wonumber,\n warehous_code, item_number, uom_name,\n item_descrip1, item_descrip2,\n wo_status\n FROM wo, itemsite, item, whsinfo, uom\n WHERE ((wo_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (wo_id=<? value("wo_id") ?>))\n \n \n detail\n workOrderVariance\n material\n \n \n 234\n \n \n 140\n 140\n 350\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n 5\n 228\n 745\n 228\n 2\n \n \n \n 140\n 120\n 350\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n \n \n 140\n 100\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n 360\n 70\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehous_code\n \n \n \n \n \n 140\n 70\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n wonumber\n \n \n \n \n 140\n 165\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n wo_status\n \n \n \n \n \n \n \n \n \n \n 360\n 100\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n uom_name\n \n \n \n \n \n \n \n \n \n \n \n \n 6\n \n \n 36\n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 51\n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_actiss\n \n \n \n \n 85\n 15\n 375\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n componentdescrip\n \n \n \n \n 85\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n componentitemnumber\n \n \n \n \n 400\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_received\n \n \n \n \n 665\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtypervarpercent\n \n \n \n \n 494\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_projreq\n \n \n \n \n 315\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ordered\n \n \n \n \n 580\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_actqtyper\n \n \n \n \n 5\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_posted\n \n \n \n \n 494\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_projqtyper\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtypervar\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n
\n \n 16\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 103 OpenWorkOrdersWithClosedParentSalesOrders \N \n\n Open Work Orders With Closed Parent Sales Orders\n OpenWorkOrdersWithClosedParentSalesOrders\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse;\n \n \n detail\n SELECT formatWONumber(wo_id) AS wonumber,\n wo_status, item_number, uom_name,\n item_descrip1, item_descrip2,\n warehous_code,\n cohead_number,\n formatQty(wo_qtyord) AS qtyord,\n formatQty(wo_qtyrcv) AS qtyrcv,\n formatDate(wo_startdate) AS startdate,\n formatDate(wo_duedate) AS duedate \n FROM coitem, cohead, wo, itemsite, whsinfo, item, uom\n WHERE ((coitem_cohead_id=cohead_id)\n AND (coitem_order_id=wo_id)\n AND (coitem_status='C')\n AND (wo_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (wo_status IN ('O', 'E', 'R', 'I'))\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n)\nORDER BY wo_duedate;\n \n \n 236\n \n \n \n \n \n \n \n \n \n \n \n \n 5\n 229\n 745\n 229\n 2\n \n \n \n 140\n 110\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n 6\n \n \n 36\n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 51\n \n \n 265\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 85\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 5\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n wonumber\n \n \n \n \n 85\n 0\n 175\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 405\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyord\n \n \n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n startdate\n \n \n \n \n 315\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cohead_number\n \n \n \n \n 85\n 15\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 5\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n wo_status\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n duedate\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 490\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyrcv\n \n \n \n
\n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 286 OpenWorkOrdersWithParentSalesOrders \N \n\n Open Work Orders With Parent Sales Orders\n OpenWorkOrdersWithParentSalesOrders\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse;\n \n \n detail\n SELECT formatWONumber(wo_id) AS wonumber,\n wo_status, item_number, uom_name,\n item_descrip1, item_descrip2,\n warehous_code,\n cohead_number,\n formatQty(wo_qtyord) AS qtyord,\n formatQty(wo_qtyrcv) AS qtyrcv,\n formatDate(wo_startdate) AS startdate,\n formatDate(wo_duedate) AS duedate \n FROM coitem, cohead, wo, itemsite, whsinfo, item, uom\n WHERE ((coitem_cohead_id=cohead_id)\n AND (coitem_order_id=wo_id)\n AND (coitem_status<>'X')\n AND (wo_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (wo_status IN ('O', 'E', 'R', 'I'))\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n)\nORDER BY wo_duedate;\n \n \n 236\n \n \n 5\n 230\n 745\n 230\n 2\n \n \n \n \n \n \n 140\n 110\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n \n \n \n \n \n \n \n 6\n \n \n 36\n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 51\n \n \n 5\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n wo_status\n \n \n \n \n 85\n 0\n 175\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 5\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n wonumber\n \n \n \n \n 85\n 15\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 85\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 490\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyrcv\n \n \n \n \n 315\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cohead_number\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n startdate\n \n \n \n \n 265\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 405\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyord\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n duedate\n \n \n \n
\n \n 16\n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 80 PackingList \N \n\n Packing List\n PackingList\n Hybrid Packing List - use the shiphead_id if it is passed but use the order id and type if they're passed but not shiphead_id - Shows Lot/Serial\n \n \n \n 0.05\n 0.05\n \n Letter\n \n 25\n 25\n 25\n 25\n \n head\n SELECT COALESCE(shiphead_number::TEXT, 'Not Issued To Shipping') AS shiphead_number,\n\t 'S/O #:' AS ordertype,\n cohead_number AS ordernumber,\n formatsobarcode(cohead_id) AS order_barcode,\n COALESCE(shiphead_shipvia, cohead_shipvia) AS shipvia,\n cohead_shiptophone AS shiptophone,\n cohead_custponumber,\n formatDate(cohead_orderdate) AS orderdate,\n cohead_shipcomments AS shipcomments,\n cohead_billtoname AS billtoname,\n formataddr(cohead_billtoaddress1, cohead_billtoaddress2,\n cohead_billtoaddress3,\n (cohead_billtocity || ' ' || cohead_billtostate ||\n ' ' || cohead_billtozipcode), cohead_billtocountry) AS billing_address,\n cohead_shiptoname AS shiptoname,\n formataddr(cohead_shiptoaddress1, cohead_shiptoaddress2,\n cohead_shiptoaddress3,\n (cohead_shiptocity || ' ' || cohead_shiptostate ||\n ' ' || cohead_shiptozipcode), cohead_shiptocountry) AS shipping_address, \n\n cust_number,\n trim(cntct_first_name || ' ' || cntct_last_name) AS cust_contact,\n cntct_phone AS cust_phone,\n terms_descrip\n FROM custinfo\n JOIN cohead ON (cohead_cust_id=cust_id)\n JOIN terms ON (cohead_terms_id=terms_id)\n LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id)\n<? if exists("shiphead_id") ?>\n JOIN\n<? else ?>\n LEFT OUTER JOIN\n<? endif ?>\n shiphead ON (shiphead_order_type='SO') AND (shiphead_order_id=cohead_id)\nWHERE TRUE\n<? if exists('shiphead_id') ?>\n AND (shiphead_id=<? value("shiphead_id") ?>)\n<? endif ?>\n<? if exists("head_id") ?>\n AND (cohead_id=<? value("head_id") ?>)\n AND (<? value("head_type") ?>='SO')\n<? endif ?>\n\n\n<? if exists("MultiWhs") ?>\nUNION\nSELECT COALESCE(shiphead_number::TEXT, 'Not Issued To Shipping') AS shiphead_number,\n 'T/O #:' AS ordertype,\n tohead_number AS ordernumber,\n formattobarcode(tohead_id) AS order_barcode,\n COALESCE(shiphead_shipvia, tohead_shipvia) AS shipvia,\n tohead_destphone AS shiptophone,\n TEXT(' ') AS cohead_custponumber,\n formatDate(tohead_orderdate) AS orderdate,\n tohead_shipcomments AS shipcomments,\n tohead_srcname AS billtoname,\n formataddr(tohead_srcaddress1, tohead_srcaddress2,\n tohead_srcaddress3,\n (tohead_srccity || ' ' || tohead_srcstate ||\n ' ' || tohead_srcpostalcode), tohead_srccountry) AS billing_address,\n tohead_destname AS shiptoname,\n formataddr(tohead_destaddress1, tohead_destaddress2,\n tohead_destaddress3,\n (tohead_destcity || ' ' || tohead_deststate ||\n ' ' || tohead_destpostalcode), tohead_destcountry) AS shipping_address,\n 'Transfer Order' AS cust_number,\n tohead_destcntct_name AS cust_contact,\n tohead_destphone AS cust_phone,\n '' AS terms_descrip\n FROM tohead \n<? if exists("shiphead_id") ?>\n\tJOIN\n<? else ?>\n\tLEFT OUTER JOIN\n<? endif ?>\n shiphead ON (shiphead_order_type='TO') AND (shiphead_order_id=tohead_id)\nWHERE TRUE\n<? if exists('shiphead_id') ?>\n AND (shiphead_id=<? value("shiphead_id")?>)\n<? endif ?>\n<? if exists("head_id") ?>\n AND (tohead_id=<? value("head_id") ?>)\n AND (<? value("head_type") ?>='TO')\n<? endif ?>\n<? endif ?>;\n \n \n scheddate\n SELECT formatDate(MIN(orderitem_scheddate)) AS scheddate\n FROM orderitem\n <? if exists("shiphead_id") ?>\n JOIN shiphead ON ((orderitem_orderhead_type=shiphead_order_type)\n\t\t AND (orderitem_orderhead_id=shiphead_order_id)\n\t\t AND (shiphead_id=<? value("shiphead_id")?>))\n JOIN shipitem ON ((shiphead_id=shipitem_shiphead_id)\n\t\t AND (shipitem_orderitem_id=orderitem_id))\n <? endif ?>\n WHERE ((orderitem_status <> 'X')\n<? if exists("head_id") ?>\n AND (orderitem_orderhead_type=<? value("head_type") ?>)\n AND (orderitem_orderhead_id=<? value("head_id") ?>)\n<? endif ?>\n );\n \n \n detail\n SELECT 1 AS groupby,\n coitem_linenumber AS linenumber,\n coitem_memo AS memo,\n CASE WHEN (coitem_custpn != '') THEN coitem_custpn\n ELSE item_number\n END AS item_number,\n formatitemsitebarcode(itemsite_id) AS item_barcode,\n formatsoitembarcode(coitem_id) AS orderitem_barcode,\n (select uom_name from uom where uom_id = coitem_qty_uom_id) AS uom_name,\n itemsellinguom(item_id) AS shipuom,\n CASE WHEN (coitem_custpn != '' AND itemalias_usedescrip=TRUE) THEN itemalias_descrip1\n ELSE item_descrip1\n END AS item_descrip1,\n CASE WHEN (coitem_custpn != '' AND itemalias_usedescrip=TRUE) THEN itemalias_descrip2\n ELSE item_descrip2\n END AS item_descrip2,\n formatQty(coitem_qtyord) AS ordered,\n ( SELECT formatQty(COALESCE(SUM(shipitem_qty), 0))\n FROM shipitem JOIN shiphead ON (shiphead_id=shipitem_shiphead_id)\n WHERE ((shipitem_orderitem_id=coitem_id) AND (shiphead_order_type='SO')) ) AS atShipping,\n\n CASE WHEN (coitem_status='O' AND (SELECT cust_creditstatus\n FROM custinfo,cohead\n WHERE (coitem_cohead_id=cohead_id)\n AND (cust_id=cohead_cust_id))='H') THEN 'H'\n WHEN (coitem_status='O' AND ((SELECT SUM(invcitem_billed)\n FROM cohead, invchead, invcitem\n WHERE ((invchead_ordernumber=cohead_number)\n AND (invcitem_invchead_id=invchead_id)\n AND (invcitem_item_id=item_id)\n AND (invcitem_warehous_id=itemsite_warehous_id)\n AND (invcitem_linenumber=coitem_linenumber)\n AND (cohead_id=coitem_cohead_id))) >= coitem_qtyord)) THEN 'I'\n WHEN (coitem_status='O' AND ((SELECT SUM(invcitem_billed)\n FROM cohead, invchead, invcitem\n WHERE ((invchead_ordernumber=cohead_number)\n AND (invcitem_invchead_id=invchead_id)\n AND (invcitem_item_id=item_id)\n AND (invcitem_warehous_id=itemsite_warehous_id)\n AND (invcitem_linenumber=coitem_linenumber)\n AND (cohead_id=coitem_cohead_id))) > 0)) THEN 'P'\n WHEN (coitem_status='O' AND (itemsite_qtyonhand - qtyAllocated(itemsite_id, CURRENT_DATE)\n + qtyOrdered(itemsite_id, CURRENT_DATE))\n >= (coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned)) THEN 'R'\n ELSE coitem_status\n END AS f_status\n FROM coitem\n JOIN itemsite ON (itemsite_id=coitem_itemsite_id)\n JOIN item ON (item_id=itemsite_item_id)\n JOIN uom ON (uom_id=item_inv_uom_id)\n LEFT OUTER JOIN itemalias ON (itemalias_item_id=item_id AND itemalias_number=coitem_custpn) \n WHERE ( (coitem_status <> 'X')\n<? if exists("shiphead_id") ?>\n AND (coitem_cohead_id IN (SELECT shiphead_order_id FROM shiphead\n\t\t\t WHERE ((shiphead_id=<? value("shiphead_id") ?>)\n\t\t\t AND (shiphead_order_type='SO'))))\n<? endif ?>\n<? if exists("head_id") ?>\n AND (<? value("head_type") ?>='SO')\n AND (coitem_cohead_id=<? value("head_id") ?>)\n<? endif ?>\n)\nGROUP BY coitem_qty_uom_id, coitem_linenumber, coitem_id, coitem_memo, item_number, uom_name, shipuom,\n coitem_custpn, itemalias_usedescrip, itemalias_descrip1, itemalias_descrip2,\n item_descrip1, item_descrip2, coitem_qtyord, coitem_qty_invuomratio, coitem_qtyshipped,\n coitem_qtyreturned, coitem_status, coitem_cohead_id,\n itemsite_id, itemsite_qtyonhand, itemsite_warehous_id, item_id\n<? if exists("MultiWhs") ?>\nUNION\nSELECT 2 AS groupby,\n toitem_linenumber AS linenumber,\n toitem_notes AS memo,\n item_number,\n formatitemsitebarcode(itemsite_id) AS item_barcode,\n formattoitembarcode(toitem_id) AS orderitem_barcode,\n uom_name,\n itemsellinguom(item_id) AS shipuom,\n item_descrip1,\n item_descrip2,\n\n formatQty(toitem_qty_ordered) AS ordered,\n ( SELECT formatQty(COALESCE(SUM(shipitem_qty), 0))\n FROM shipitem JOIN shiphead ON (shiphead_id=shipitem_shiphead_id)\n WHERE ((shipitem_orderitem_id=toitem_id) AND (shiphead_order_type='TO')) ) AS atShipping,\n\n toitem_status AS f_status\n FROM itemsite, item, toitem, tohead, uom\n WHERE ((toitem_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (item_id=itemsite_item_id)\n AND (toitem_tohead_id=tohead_id)\n AND (toitem_status <> 'X')\n AND (tohead_src_warehous_id=itemsite_warehous_id)\n<? if exists("shiphead_id") ?>\n AND (toitem_tohead_id IN (SELECT shiphead_order_id FROM shiphead\n\t\t\t WHERE ((shiphead_id=<? value("shiphead_id") ?>)\n\t\t\t AND (shiphead_order_type='TO'))))\n<? endif ?>\n<? if exists("head_id") ?>\n AND (<? value("head_type") ?>='TO')\n AND (toitem_tohead_id=<? value("head_id") ?>)\n<? endif ?>\n)\n<? endif ?>\nORDER BY linenumber;\n \n \n logo\n SELECT image_data \nFROM image \nWHERE ((image_name='logo'));\n \n \n lotdetail\n SELECT * FROM \n(\n SELECT\n shiphead_number,\n (cohead_number || '-' || coitem_linenumber) AS ordernumber,\n item_number,\n formatlotserialnumber(invdetail_ls_id) AS invdetail_lotserial,\n SUM(invdetail_qty) * -1 AS lotqty,\n SUM(invhist_invqty) as totalshipmentqty,\n invhist_transtype,\n formatdate(MAX(invhist_transdate)) AS invhistdate,\n formatdate(MAX(shipitem_transdate)) AS shiptransdate\n FROM shiphead\n JOIN shipitem ON (shipitem_shiphead_id=shiphead_id)\n JOIN invhist ON (invhist_id=shipitem_invhist_id)\n JOIN invdetail ON (invdetail_invhist_id=invhist_id)\n JOIN cohead ON (cohead_id=shiphead_order_id)\n JOIN coitem ON (coitem_id=shipitem_orderitem_id)\n JOIN itemsite ON (itemsite_id=coitem_itemsite_id)\n JOIN item ON (item_id=itemsite_item_id)\n WHERE ( (shiphead_id = <? value("shiphead_id") ?> )\n AND ('SO'=shiphead_order_type) )\n GROUP BY shiphead_number,cohead_number,item_number,invdetail_ls_id,\n coitem_linenumber,invhist_transtype\n<? if exists("MultiWhs") ?>\nUNION\n SELECT\n shiphead_number,\n (tohead_number || '-' || toitem_linenumber) AS ordernumber,\n item_number,\n formatlotserialnumber(invdetail_ls_id) AS invdetail_lotserial,\n SUM(invdetail_qty) * -1 AS lotqty,\n SUM(invhist_invqty) as totalshipmentqty,\n invhist_transtype,\n formatdate(MAX(invhist_transdate)) AS invhistdate,\n formatdate(MAX(shipitem_transdate)) AS shiptransdate\n FROM shiphead\n JOIN shipitem ON (shipitem_shiphead_id=shiphead_id)\n JOIN invhist ON (invhist_id=shipitem_invhist_id)\n JOIN invdetail ON (invdetail_invhist_id=invhist_id)\n JOIN tohead ON (tohead_id=shiphead_order_id)\n JOIN toitem ON (toitem_id=shipitem_orderitem_id)\n JOIN item ON (item_id=toitem_item_id)\n WHERE ( (shiphead_id = <? value("shiphead_id") ?> )\n AND ('TO'=shiphead_order_type) )\n GROUP BY shiphead_number,tohead_number,item_number,invdetail_ls_id,\n toitem_linenumber,invhist_transtype\n<? endif ?>\n) data\nORDER BY ordernumber;\n \n \n 451\n \n \n 375\n 0\n 425\n 100\n \n stretch\n \n logo\n image_data\n \n \n \n \n 375\n 180\n 307\n 25\n \n 3of9\n 20\n \n 0.01\n \n head\n cohead_custponumber\n \n \n \n \n 170\n 150\n 170\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cust_number\n \n \n \n \n 375\n 120\n 231\n 25\n \n 128\n 10\n \n 0.01\n \n head\n order_barcode\n \n \n \n \n \n 120\n 360\n 250\n 20\n \n \n Arial\n 12\n normal\n \n \n \n \n head\n cust_contact\n \n \n \n \n \n 170\n 180\n 170\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cohead_custponumber\n \n \n \n \n 480\n 260\n 300\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n shiptoname\n \n \n \n \n 375\n 150\n 177\n 25\n \n 3of9\n 10\n \n 0.01\n \n head\n cust_number\n \n \n \n \n 480\n 280\n 300\n 15\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n head\n shipping_address\n \n \n \n \n \n \n 10\n 120\n 150\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n ordertype\n \n \n \n \n 170\n 207\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n orderdate\n \n \n \n \n \n 170\n 227\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n scheddate\n scheddate\n \n \n \n \n 0\n 390\n 797\n 390\n 0\n \n \n \n \n \n 0\n 430\n 797\n 430\n 0\n \n \n \n \n 480\n 227\n 300\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n shipvia\n \n \n \n \n 90\n 280\n 300\n 15\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n head\n billing_address\n \n \n \n \n \n 90\n 260\n 300\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n billtoname\n \n \n \n \n \n 457\n 360\n 320\n 20\n \n \n Arial\n 12\n normal\n \n \n \n \n head\n terms_descrip\n \n \n \n \n 170\n 90\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n shiphead_number\n \n \n \n \n \n \n 170\n 120\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n ordernumber\n \n \n \n \n \n \n
\n detail\n \n detail\n groupby\n \n 43\n \n \n 50\n 5\n 625\n 17\n \n 14\n \n Arial\n 10\n normal\n \n \n \n \n head\n shipcomments\n \n \n \n \n \n lineitem\n linenumber\n \n 21\n \n 0\n 0\n 837\n 0\n 0\n \n \n \n \n \n detail\n \n 81\n \n \n 227\n 0\n 40\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n uom_name\n \n \n \n \n 610\n 0\n 50\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n f_status\n \n \n \n \n \n \n 280\n 0\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n ordered\n \n \n \n \n 20\n 0\n 200\n 20\n \n \n Arial\n 11\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 90\n 50\n 560\n 17\n \n 14\n \n Arial\n 10\n normal\n \n \n \n \n detail\n memo\n \n \n \n \n 507\n 30\n 280\n 30\n \n 128\n 15\n \n 0.01\n \n detail\n item_barcode\n \n \n \n \n 20\n 35\n 300\n 15\n \n \n Arial\n 11\n normal\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 20\n 20\n 300\n 15\n \n \n Arial\n 11\n normal\n \n \n \n \n detail\n item_descrip1\n \n \n \n 470\n 20\n 520\n 20\n 1\n \n \n \n 370\n 0\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n atShipping\n \n \n \n
\n
\n lotdetail\n \n lotdetail\n ordernumber\n \n 48\n \n \n \n 0\n 40\n 797\n 40\n 0\n \n \n \n \n \n 13\n \n 0\n 5\n 797\n 5\n 0\n \n \n \n \n \n lotdetail\n \n 23\n \n \n 232\n 5\n 195\n 15\n \n \n Arial\n 11\n normal\n \n \n \n \n lotdetail\n invdetail_lotserial\n \n \n \n \n 30\n 5\n 195\n 15\n \n \n Arial\n 11\n normal\n \n \n \n \n lotdetail\n item_number\n \n \n \n \n 457\n 5\n 60\n 15\n \n \n Arial\n 11\n normal\n \n \n \n \n lotdetail\n lotqty\n \n \n \n
\n \n 57\n \n \n \n 90\n 8\n 95\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 735\n 8\n 45\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 455\n 8\n 80\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n ordernumber\n \n \n \n \n 365\n 8\n 80\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n ordertype\n \n \n \n \n 57\n \n \n \n 540\n 40\n 790\n 40\n 0\n \n \n 160\n 40\n 407\n 40\n 0\n \n \n
\n Hybrid Packing List - use the shiphead_id if it is passed but use the order id and type if they're passed but not shiphead_id - Shows Lot/Serial 0 2013-07-26 16:17:54.38447 368 PickListWOShowLocations \N \n\n Pick List WO Show Locations\n PickListWOShowLocations\n This WO Pick List Shows All Locations and Lots for Each Requirement\n \n \n \n Letter\n \n 50\n 28\n 33\n 33\n \n Head\n SELECT formatWoNumber(wo_id) AS wonumber, wo_prodnotes,\n item_number, uom_name, item_descrip1, item_descrip2,\n warehous_code, formatQty(wo_qtyord) AS qtyord,\n formatQty(wo_qtyrcv) AS qtyrcv,\n formatDate(wo_startdate) AS startdate,\n formatDate(wo_duedate) AS duedate\n FROM wo, itemsite, item, whsinfo, uom\n WHERE ((wo_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (wo_id=%1))\n \n \n \n Detail\n SELECT\n warehous_code, \n wo_number,\n womatl_id,\n item_number,\n item_descrip1,\n item_descrip2, \n uom_name,\n-- itemuomtouomratio(item_id,item_inv_uom_id, womatl_uom_id) * womatl_qtyreq AS required_qty,\n womatl_qtyreq AS required_qty,\n-- formatqty(itemuomtouomratio(item_id,item_inv_uom_id, womatl_uom_id) * womatl_qtyreq) AS required_fmt,\n formatqty(womatl_qtyreq) AS required_fmt,\n-- itemuomtouomratio(item_id,item_inv_uom_id, womatl_uom_id) * womatl_qtyiss AS issued_qty,\n womatl_qtyiss AS issued_qty,\n formatqty(womatl_qtyiss) AS issued_fmt,\n-- (itemuomtouomratio(item_id,item_inv_uom_id, womatl_uom_id) * womatl_qtyreq) - \n (itemuomtouomratio(item_id,item_inv_uom_id, womatl_uom_id) * womatl_qtyiss) AS pick_qty,\n womatl_qtyreq - womatl_qtyiss AS pick_qty, \n formatqty(womatl_qtyreq - womatl_qtyiss) AS pick_fmt,\n CASE WHEN (womatl_issuemethod='S') THEN text('Push')\n WHEN (womatl_issuemethod='L') THEN text('Pull')\n WHEN (womatl_issuemethod='M') THEN text('Mixed')\n ELSE text(womatl_issuemethod)\n END AS f_issuemethod,\n location_aisle || '-' || location_rack || '-' || location_bin || '-' || location_name AS location_name,\n formatlotserialnumber(itemloc_ls_id),\n-- itemloc_lotserial,\n itemsite_location_comments AS location_comment,\n itemloc_qty AS location_qty_qty,\n itemuomtouomratio(item_id,item_inv_uom_id, womatl_uom_id) * itemloc_qty AS loc_issue_uom_qty,\n formatqty(itemuomtouomratio(item_id,item_inv_uom_id, womatl_uom_id) * itemloc_qty) AS loc_issue_uom_fmt,\n CASE WHEN itemloc_expiration = '1970-01-01' THEN text ('N/A')\n WHEN itemloc_expiration = '2100-01-01' THEN text ('N/A')\n ELSE CAST(formatdate(itemloc_expiration) AS text)\n END AS expiration \n\nFROM\n\n item, uom, whsinfo, womatl, wo, itemsite\n LEFT OUTER JOIN itemloc ON (itemloc_itemsite_id = itemsite_id)\n LEFT OUTER JOIN location ON (itemloc_location_id = location_id)\n\n\nWHERE\n itemsite_item_id = item_id\n and \n itemsite_warehous_id = warehous_id\n and\n womatl_uom_id = uom_id\n and\n itemsite_id = womatl_itemsite_id\n and\n womatl_wo_id = wo_id\n and\n wo_id = <? value("wo_id") ?>\nORDER BY wo_number, womatl_id, item_number, itemloc_expiration, location_name;\n \n \n 188\n \n \n 196\n 5\n 150\n 40\n \n \n Arial\n 14\n normal\n \n \n \n \n Head\n wonumber\n \n \n \n \n 196\n 140\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n Head\n qtyord\n \n \n \n \n \n \n 195\n 120\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n Head\n warehous_code\n \n \n \n \n \n 196\n 102\n 300\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n Head\n item_descrip2\n \n \n \n \n 649\n 100\n 130\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n Head\n startdate\n \n \n \n \n 196\n 65\n 200\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n Head\n item_number\n \n \n \n \n 649\n 120\n 130\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n Head\n duedate\n \n \n \n \n 649\n 80\n 130\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 196\n 84\n 300\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n Head\n item_descrip1\n \n \n \n \n \n 196\n 158\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n Head\n qtyrcv\n \n \n \n \n \n \n \n \n \n \n 6\n \n \n 6\n \n
\n detail_group\n \n detail_group\n womatl_id\n \n 133\n \n \n 208\n 40\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n required_fmt\n \n \n \n \n 330\n 55\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n f_issuemethod\n \n \n \n \n \n \n 10\n 35\n 822\n 35\n 2\n \n \n \n \n 575\n 40\n 45\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n uom_name\n \n \n \n \n \n 469\n 75\n 300\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n location_comment\n \n \n \n 80\n 100\n 817\n 100\n 1\n \n \n \n \n \n 469\n 40\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n Detail\n pick_fmt\n \n \n \n \n 37\n 60\n 195\n 14\n \n \n Arial\n 8\n normal\n \n \n \n \n Detail\n item_descrip1\n \n \n \n \n 37\n 40\n 160\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n item_number\n \n \n \n \n \n \n \n 208\n 55\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n uom_name\n \n \n \n \n 37\n 75\n 300\n 14\n \n \n Arial\n 8\n normal\n \n \n \n \n Detail\n item_descrip2\n \n \n \n \n \n 330\n 40\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n issued_fmt\n \n \n \n 680\n 57\n 780\n 57\n 1\n \n \n \n \n \n \n 36\n \n 75\n 25\n 825\n 25\n 1\n \n \n 75\n 5\n 822\n 5\n 1\n \n \n \n 465\n 5\n 50\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n uom_name\n \n \n \n \n 355\n 5\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n loc_issue_uom_qty\n \n qty\n \n \n \n \n \n \n Detail\n \n 21\n \n \n 75\n 0\n 115\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n location_name\n \n \n \n \n 555\n 0\n 75\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n expiration\n \n \n \n \n 465\n 0\n 50\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n uom_name\n \n \n \n 690\n 17\n 790\n 17\n 1\n \n \n \n 215\n 0\n 115\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n formatlotserialnumber\n \n \n \n \n 355\n 0\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n loc_issue_uom_fmt\n \n \n \n
\n \n 57\n \n \n 110\n 30\n 480\n 22\n \n 0\n \n Arial\n 12\n 48\n \n \n \n \n Head\n wo_prodnotes\n \n \n \n \n
\n This WO Pick List Shows All Locations and Lots for Each Requirement 0 2013-07-26 16:17:54.38447 414 AROpenItem \N \n\n AROpenItem\n AROpenItem\n A report showing details of a single AR Open Item\n \n \n \n \n \n \n \n \n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT aropen_cust_id, aropen_docdate, aropen_duedate, \naropen_doctype,\nCASE WHEN (aropen_doctype = 'C' AND ((SELECT COUNT(*) AS num_rows FROM cmhead, aropen WHERE cmhead_number = aropen_ordernumber AND aropen_id = <? value("aropen_id") ?> ) = 0)) THEN 'Misc. Credit Memo'\n WHEN (aropen_doctype = 'D' AND ((SELECT COUNT(*) AS num_rows FROM cmhead, aropen WHERE cmhead_number = aropen_ordernumber AND aropen_id = <? value("aropen_id") ?> ) = 0)) THEN 'Misc. Debit Memo'\n WHEN (aropen_doctype = 'C' AND ((SELECT COUNT(*) AS num_rows FROM cmhead, aropen WHERE cmhead_number = aropen_ordernumber AND aropen_id = <? value("aropen_id") ?> ) > 0)) THEN 'Credit Memo'\n WHEN (aropen_doctype = 'D' AND ((SELECT COUNT(*) AS num_rows FROM cmhead, aropen WHERE cmhead_number = aropen_ordernumber AND aropen_id = <? value("aropen_id") ?> ) > 0)) THEN 'Debit Memo'\n END AS doc_name, \naropen_docnumber, \naropen_ordernumber, aropen_journalnumber, \naropen_amount, aropen_amount, \naropen_paid, \n(aropen_amount - aropen_paid) AS f_balance, \naropen_terms_id, aropen_salesrep_id, \naropen_commission_due, \naropen_notes, aropen_rsncode_id, aropen_salescat_id, \naropen_accnt_id, aropen_curr_id, cust_name, salesrep_name, terms_code, \nrsncode_code, formatboolyn(aropen_commission_paid) AS commission_paid \nFROM aropen \nJOIN custinfo ON(cust_id = aropen_cust_id)\nLEFT OUTER JOIN salesrep ON(aropen_salesrep_id = salesrep_id)\nLEFT OUTER JOIN terms ON(terms_id = aropen_terms_id)\nLEFT OUTER JOIN rsncode ON(rsncode_id = aropen_rsncode_id)\nWHERE (aropen_id=<? value("aropen_id") ?>)\n \n \n applications\n <? if exists("docTypeID") ?>\nSELECT arapply_id, arapply_source_aropen_id,\n CASE WHEN (arapply_source_doctype = 'C') THEN <? value("creditMemo") ?>\n WHEN (arapply_source_doctype = 'R') THEN <? value("cashdeposit") ?>\n WHEN (arapply_fundstype='C') THEN <? value("check") ?>\n WHEN (arapply_fundstype='T') THEN <? value("certifiedCheck") ?>\n WHEN (arapply_fundstype='M') THEN <? value("masterCard") ?>\n WHEN (arapply_fundstype='V') THEN <? value("visa") ?>\n WHEN (arapply_fundstype='A') THEN <? value("americanExpress") ?>\n WHEN (arapply_fundstype='D') THEN <? value("discoverCard") ?> \n WHEN (arapply_fundstype='R') THEN <? value("otherCreditCard") ?>\n WHEN (arapply_fundstype='K') THEN <? value("cash") ?>\n WHEN (arapply_fundstype='W') THEN <? value("wireTransfer") ?>\n WHEN (arapply_fundstype='O') THEN <? value("other") ?>\n END AS doctype,\n CASE WHEN (arapply_source_doctype IN ('C','R')) THEN arapply_source_docnumber\n WHEN (arapply_source_doctype = 'K') THEN arapply_refnumber\n ELSE 'Other'\n END AS docnumber,\narapply_postdate, arapply_applied, \ncurrConcat(arapply_curr_id) AS currabbr, \ncurrToBase(arapply_curr_id, arapply_applied, arapply_postdate) AS baseapplied, \n'curr' AS arapply_applied_xtnumericrole, \n'curr' AS baseapplied_xtnumericrole \nFROM arapply \nWHERE (arapply_target_aropen_id=<? value("aropen_id") ?> ) \nORDER BY arapply_postdate\n\n<? elseif exists("docTypeRC") ?>\n\nSELECT arapply_id, arapply_target_aropen_id, \n CASE WHEN (arapply_target_doctype = 'I') THEN <? value("invoice") ?>\n WHEN (arapply_target_doctype = 'D') THEN <? value("debitMemo") ?>\n WHEN (arapply_target_doctype = 'K') THEN <? value("apcheck") ?>\n WHEN (arapply_target_doctype = 'R') THEN <? value("cashreceipt") ?>\n ELSE <? value("other") ?>\n END AS doctype, \narapply_target_docnumber AS docnumber, \narapply_postdate, arapply_applied, \ncurrConcat(arapply_curr_id) AS currabbr, \ncurrToBase(arapply_curr_id, arapply_applied, arapply_postdate) AS baseapplied, \n'curr' AS arapply_applied_xtnumericrole, \n'curr' AS baseapplied_xtnumericrole \nFROM arapply \nWHERE (arapply_source_aropen_id=<? value("aropen_id") ?> )\nORDER BY arapply_postdate\n\n<? endif ?>\n \n \n 445\n \n \n 492.06\n 160.717\n 196\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n head\n aropen_paid\n \n \n \n \n 491.06\n 184.717\n 195\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n head\n f_balance\n \n \n \n \n 167.902\n 68.2357\n 201\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n head\n aropen_docdate\n \n \n \n \n \n \n \n 169.06\n 233\n 175\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n head\n rsncode_code\n \n \n \n \n \n \n 492.06\n 136\n 216\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n head\n aropen_amount\n \n \n \n \n 494.06\n 68.8712\n 247.562\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n head\n terms_code\n \n \n \n \n \n \n 169.06\n 160.717\n 176\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n head\n aropen_docnumber\n \n \n \n \n 167.902\n 91.1813\n 216\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n head\n aropen_duedate\n \n \n \n \n 167.902\n 44.9813\n 432.315\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n head\n cust_name\n \n \n \n \n \n \n \n 169.06\n 136\n 175\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n head\n aropen_doctype\n \n \n \n \n 87.7597\n 271.717\n 624\n 127.611\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n \n head\n aropen_notes\n \n \n \n \n 169.06\n 209\n 177\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n head\n aropen_journalnumber\n \n \n \n \n \n 490\n 233\n 199\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n head\n commission_paid\n \n \n \n \n \n \n 494.06\n 91.8168\n 242.264\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n head\n salesrep_name\n \n \n \n \n \n 491.06\n 209\n 198\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n head\n aropen_commission_due\n \n \n \n \n 169.06\n 184.717\n 176\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n head\n aropen_ordernumber\n \n \n \n \n \n \n \n \n \n \n \n 4\n 434\n 737\n 434\n 2\n \n \n \n 30.7855\n 9.22414\n 698.682\n 37.1\n \n \n Sans Serif\n 20\n bold\n \n \n \n \n head\n doc_name\n \n \n \n
\n applications_detail\n \n \n applications\n \n 23\n \n \n 8\n 1.71311\n 100\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n applications\n doctype\n \n \n \n \n 124\n 1.71311\n 100\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n applications\n docnumber\n \n \n \n \n 241\n 1.71311\n 100\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n applications\n arapply_postdate\n \n \n \n \n 352\n 1.71311\n 100\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n applications\n arapply_applied\n \n \n \n \n 474\n 1.71311\n 100\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n applications\n currabbr\n \n \n \n \n 611\n 1.71311\n 100\n 25\n \n \n Sans Serif\n 12\n normal\n \n \n \n \n applications\n baseapplied\n \n \n \n
\n
\n A report showing details of a single AR Open Item 0 2013-07-26 16:17:54.38447 237 AccountingPeriodsMasterList \N \n\n Accounting Periods Master List\n AccountingPeriodsMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT period_id,\n formatDate(period_start) AS f_start,\n formatDate(period_end) AS f_end,\n formatBoolYN(period_closed) AS f_closed,\n formatBoolYN(period_freeze) AS f_frozen\n FROM period\nORDER BY period_start;\n \n \n 77\n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n \n 7\n \n \n 22\n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 420\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_closed\n \n \n \n \n 114\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_end\n \n \n \n \n 515\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_frozen\n \n \n \n \n 10\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_start\n \n \n \n
\n \n 17\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 363 InventoryAvailabilityByCustomerType \N \n\n Inventory Availability by Customer Type\n InventoryAvailabilityByCustomerType\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT \n <? if exists("onlyShowShortages") ?>\n text('Only Showing Shortages')\n <? else ?>\n text('')\n <? endif ?>\n AS f_onlyShowShortages,\n <? if exists("showWoSupply") ?>\n text('Show W/O Supply')\n <? else ?>\n text('')\n <? endif ?>\n AS f_showWoSupply,\n<? if exists("custtype_id") ?>\n (SELECT custtype_code from custtype where (custtype_id=<? value("custtype_id") ?>))\n<? elseif exists("custtype_pattern") ?>\n <? value("custtype_pattern") ?>\n<? else ?>\n text('All Customer Types')\n<? endif ?>\n AS f_custtype;\n \n \n detail\n SELECT itemsite_id, coitem_id,\n cohead_id, cohead_number, (cust_number||'-'||cust_name) AS custname,\n item_number, item_description, uom_name, item_picklist,\n qoh, formatQty(qoh) AS f_qoh,sobalance,\n formatQty(sobalance) AS f_sobalance,\n formatQty(allocated) AS f_allocated,\n ordered, formatQty(ordered) AS f_ordered,\n (qoh + ordered - sobalance) AS woavail,\n<? if exists("useReservationNetting") ?>\n formatQty(coitem_qtyreserved) AS f_soavail,\n<? else ?>\n formatQty(qoh + ordered - sobalance) AS f_soavail,\n<? endif ?>\n (qoh + ordered - allocated) AS totalavail,\n formatQty(qoh + ordered - allocated) AS f_totalavail,\n atshipping,formatQty(atshipping) AS f_atshipping,\n reorderlevel \n<? if exists(showWoSupply) ?>, \n wo_id,\n wo_status,\n wo_number,\n wo_ordered,\n CASE WHEN (wo_id = -1) THEN NULL ELSE formatQty(wo_ordered) END AS f_wo_ordered,\n formatdate(wo_startdate) AS f_wo_startdate, \n formatdate(wo_duedate) AS f_wo_duedate,\n COALESCE(wo_latestart,false) AS wo_latestart,\n COALESCE(wo_latedue,false) AS wo_latedue \n<? endif ?>\n FROM ( SELECT itemsite_id, coitem_id,\n cohead_id, cohead_number, cust_number, cust_name,\n item_number, (item_descrip1 || ' ' || item_descrip2) AS item_description,\n uom_name, item_picklist,\n noNeg(itemsite_qtyonhand) AS qoh,\n noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) AS sobalance,\n qtyAllocated(itemsite_id, coitem_scheddate) AS allocated,\n qtyOrdered(itemsite_id, coitem_scheddate) AS ordered,\n qtyatshipping(coitem_id) AS atshipping,\n coitem_qtyreserved,\n CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel ELSE 0.0 END AS reorderlevel \n<? if exists(showWoSupply) ?>, \n COALESCE(wo_id,-1) AS wo_id,\n formatwonumber(wo_id) AS wo_number,\n noNeg((wo_qtyord-wo_qtyrcv)) AS wo_ordered,\n wo_status, wo_startdate, wo_duedate,\n ((wo_startdate <= CURRENT_DATE) AND (wo_status IN ('O','E','S','R'))) AS wo_latestart,\n (wo_duedate<=CURRENT_DATE) AS wo_latedue \n<? endif ?> \n FROM cohead, itemsite, item, uom, custinfo, coitem\n<? if exists(showWoSupply) ?> \n LEFT OUTER JOIN wo\n ON ((coitem_itemsite_id=wo_itemsite_id)\n AND (wo_status IN ('E','R','I'))\n AND (wo_qtyord-wo_qtyrcv > 0)\n AND (noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned-qtyatshipping(coitem_id)) > \n (SELECT itemsite_qtyonhand FROM itemsite WHERE (itemsite_id=coitem_itemsite_id))))\n<? endif ?>\n WHERE((coitem_cohead_id=cohead_id)\n AND (cohead_cust_id=cust_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (coitem_status NOT IN ('C', 'X'))\n<? if exists("custtype_id") ?>\n AND (cust_custtype_id=<? value("custtype_id") ?>)\n<? elseif exists("custtype_pattern") ?>\n AND (cust_custtype_id IN (SELECT custtype_id\n FROM custtype\n WHERE(custtype_code ~ <? value("custtype_pattern") ?>)))\n<? endif ?>\n )\n ) AS data \n<? if exists(onlyShowShortages) ?>\n WHERE ( ((qoh + ordered - allocated) < 0)\n OR ((qoh + ordered - sobalance) < 0) ) \n<? endif ?>\n ORDER BY cohead_id, cohead_number, item_number\n<? if exists(showWoSupply) ?> ,\n wo_duedate\n<? endif ?>\n;\n \n \n 251\n \n \n \n 360\n 120\n 380\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_showWoSupply\n \n \n \n \n 10\n 245\n 750\n 245\n 2\n \n \n \n \n \n 140\n 100\n 209\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_custtype\n \n \n \n \n \n \n \n 360\n 100\n 380\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_onlyShowShortages\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 6\n \n \n 41\n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n cohead\n cohead_id\n \n 26\n \n \n \n 390\n 0\n 209\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n custname\n \n \n \n \n \n 65\n 0\n 209\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n cohead_number\n \n \n \n \n 6\n \n 5\n 0\n 745\n 0\n 0\n \n \n \n \n \n detail\n \n 46\n \n \n 640\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_totalavail\n \n \n \n \n 25\n 30\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n wo_number\n \n \n \n \n 535\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ordered\n \n \n \n \n 10\n 15\n 400\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n Item_description\n \n \n \n \n 640\n 30\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_wo_duedate\n \n \n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n Item_number\n \n \n \n \n 430\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_sobalance\n \n \n \n \n 185\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n \n 185\n 30\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n wo_status\n \n \n \n \n 640\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_soavail\n \n \n \n \n 430\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_allocated\n \n \n \n \n 430\n 30\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_wo_ordered\n \n \n \n \n 325\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qoh\n \n \n \n \n 535\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_atshipping\n \n \n \n \n 535\n 30\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_wo_startdate\n \n \n \n
\n \n 18\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 345 PackingList-Shipment \N \n\n Packing List (Shipment)\n PackingList-Shipment\n Non-Hybrid version - driven only by shiphead_id parameter - Packing List showing the contents of a particular shipment - Shows RA# if SO is a replacement order for and RA\n \n \n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 25\n 25\n 25\n 25\n \n head\n SELECT shiphead_number, 'S/O #:' AS ordertype,\n cohead_number AS ordernumber,\n formatsobarcode(cohead_id) AS order_barcode,\n COALESCE(shiphead_shipvia, cohead_shipvia) AS shipvia,\n cohead_shiptophone AS shiptophone,\n cohead_custponumber,\n formatDate(cohead_orderdate) AS orderdate,\n cohead_shipcomments AS shipcomments, \n cohead_billtoname AS billtoname,\n formataddr(cohead_billtoaddress1, cohead_billtoaddress2,\n cohead_billtoaddress3,\n (cohead_billtocity || ' ' || cohead_billtostate ||\n ' ' || cohead_billtozipcode), cohead_billtocountry) AS billing_address,\n cohead_shiptoname AS shiptoname,\n formataddr(cohead_shiptoaddress1, cohead_shiptoaddress2,\n cohead_shiptoaddress3,\n (cohead_shiptocity || ' ' || cohead_shiptostate ||\n ' ' || cohead_shiptozipcode), cohead_shiptocountry) AS shipping_address, \n\n cust_number,\n trim(cntct_first_name || ' ' || cntct_last_name) AS cust_contact,\n cntct_phone AS cust_phone,\n terms_descrip\n FROM shiphead\n JOIN cohead ON (cohead_id=shiphead_order_id)\n JOIN custinfo ON (cohead_cust_id=cust_id)\n JOIN terms ON (cohead_terms_id=terms_id)\n LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id)\n LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id)\n WHERE (shiphead_id=<? value("shiphead_id") ?>)\n\n<? if exists("MultiWhs") ?>\nUNION\nSELECT shiphead_number, 'T/O #:' AS ordertype,\n tohead_number AS ordernumber,\n formattobarcode(tohead_id) AS order_barcode,\n shiphead_shipvia AS shipvia,\n tohead_destphone AS shiptophone,\n TEXT(' ') AS cohead_custponumber,\n formatDate(tohead_orderdate) AS orderdate,\n tohead_shipcomments AS shipcomments,\n tohead_srcname AS billtoname,\n formataddr(tohead_srcaddress1, tohead_srcaddress2,\n tohead_srcaddress3,\n (tohead_srccity || ' ' || tohead_srcstate ||\n ' ' || tohead_srcpostalcode), tohead_srccountry) AS billing_address,\n tohead_destname AS shiptoname,\n formataddr(tohead_destaddress1, tohead_destaddress2,\n tohead_destaddress3,\n (tohead_destcity || ' ' || tohead_deststate ||\n ' ' || tohead_destpostalcode), tohead_destcountry) AS shipping_address,\n 'Transfer Order' AS cust_number,\n tohead_destcntct_name AS cust_contact,\n tohead_destphone AS cust_phone,\n '' AS terms_descrip\n FROM shiphead, tohead\n WHERE ((tohead_id=shiphead_order_id)\n AND (shiphead_order_type='TO')\n AND (shiphead_id=<? value("shiphead_id") ?>)\n)\n<? endif ?>;\n \n \n scheddate\n SELECT formatDate(MIN(coitem_scheddate)) AS scheddate\n FROM coitem, shipitem\n WHERE ((coitem_status <> 'X')\n AND (coitem_id=shipitem_orderitem_id)\n AND (shipitem_shiphead_id=<? value("shiphead_id") ?>));\n \n \n detail\n SELECT 1 AS groupby,\n coitem_linenumber AS sortline, coitem_subnumber AS sortsubline,\n formatsolinenumber(coitem_id) AS linenumber,\n coitem_memo AS memo,\n CASE WHEN (coitem_custpn != '') THEN coitem_custpn\n ELSE item_number\n END AS item_number,\n formatitemsitebarcode(itemsite_id) AS item_barcode,\n formatsoitembarcode(coitem_id) AS orderitem_barcode,\n-- In 2.3 replaced the next line:\n-- uom_name,\n-- with:\n (select uom_name from uom where uom_id = coitem_qty_uom_id) AS uom_name,\n itemsellinguom(item_id) AS shipuom,\n CASE WHEN (coitem_custpn != '' AND itemalias_usedescrip=TRUE) THEN itemalias_descrip1\n ELSE item_descrip1\n END AS item_descrip1,\n CASE WHEN (coitem_custpn != '' AND itemalias_usedescrip=TRUE) THEN itemalias_descrip2\n ELSE item_descrip2\n END AS item_descrip2,\n\n formatQty(coitem_qtyord) AS ordered,\n (SELECT formatQty(SUM(shipitem_qty)) FROM shipitem WHERE ((shipitem_shiphead_id=<? value("shiphead_id") ?>) AND (shipitem_orderitem_id=coitem_id))) AS shipped,\n\n CASE WHEN (coitem_status='O' AND (SELECT cust_creditstatus\n FROM custinfo,cohead\n WHERE coitem_cohead_id=cohead_id\n AND (cust_id=cohead_cust_id))='H') THEN 'H'\n WHEN (coitem_status='O' AND ((SELECT SUM(invcitem_billed)\n FROM cohead, invchead, invcitem\n WHERE ((invchead_ordernumber=cohead_number)\n AND (invcitem_invchead_id=invchead_id)\n AND (invcitem_item_id=item_id)\n AND (invcitem_warehous_id=itemsite_warehous_id)\n AND (invcitem_linenumber=coitem_linenumber)\n AND (cohead_id=coitem_cohead_id))) >= coitem_qtyord)) THEN 'I'\n WHEN (coitem_status='O' AND ((SELECT SUM(invcitem_billed)\n FROM cohead, invchead, invcitem\n WHERE ((invchead_ordernumber=cohead_number)\n AND (invcitem_invchead_id=invchead_id)\n AND (invcitem_item_id=item_id)\n AND (invcitem_warehous_id=itemsite_warehous_id)\n AND (invcitem_linenumber=coitem_linenumber)\n AND (cohead_id=coitem_cohead_id))) > 0)) THEN 'P'\n WHEN (coitem_status='O' AND (itemsite_qtyonhand - qtyAllocated(itemsite_id, CURRENT_DATE)\n + qtyOrdered(itemsite_id, CURRENT_DATE))\n >= (coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned)) THEN 'R'\n ELSE coitem_status\n END AS f_status,\n CASE\n WHEN (getPacklistItemLotSerial(shipitem_shiphead_id, coitem_id) = '') THEN\n ''\n ELSE\n 'Serial #/Lot Information:'\n END AS lotserial_title,\n getPacklistItemLotSerial(shipitem_shiphead_id, coitem_id) AS lotserial,\n CASE\n WHEN (getPacklistCharName(shipitem_shiphead_id, coitem_id) = '') THEN\n ''\n ELSE\n 'Characteristics:'\n END AS char_title,\n getPacklistCharName(shipitem_shiphead_id, coitem_id) AS char_name,\n getPacklistCharValue(shipitem_shiphead_id, coitem_id) AS char_value\n FROM shipitem\n JOIN coitem ON (coitem_id=shipitem_orderitem_id)\n JOIN itemsite ON (itemsite_id=coitem_itemsite_id)\n JOIN item ON (item_id=itemsite_item_id)\n JOIN uom ON (uom_id=item_inv_uom_id)\n LEFT OUTER JOIN itemalias ON (itemalias_item_id=item_id AND itemalias_number=coitem_custpn) \n WHERE ( (coitem_status <> 'X')\n AND (shipitem_shiphead_id=<? value("shiphead_id") ?>)\n)\n<? if exists("MultiWhs") ?>\nUNION\nSELECT 2 AS groupby,\n toitem_linenumber AS sortline, 0 AS sortsubline,\n CAST(toitem_linenumber AS text) AS linenumber,\n toitem_notes AS memo,\n item_number,\n formatitemsitebarcode(itemsite_id) AS item_barcode,\n formattoitembarcode(toitem_id) AS orderitem_barcode,\n uom_name,\n itemsellinguom(item_id) AS shipuom,\n item_descrip1,\n item_descrip2,\n\n formatQty(toitem_qty_ordered) AS ordered,\n\n (SELECT formatQty(SUM(shipitem_qty))\n FROM shipitem\n WHERE ((shipitem_shiphead_id=<? value("shiphead_id") ?>)\n AND (shipitem_orderitem_id=toitem_id))\n ) AS shipped,\n\n toitem_status AS f_status,\n CASE\n WHEN (getPacklistItemLotSerial(shiphead_id, toitem_id) = '') THEN\n ''\n ELSE\n 'Serial #/Lot Information:'\n END AS lotserial_title,\n getPacklistItemLotSerial(shiphead_id, toitem_id) AS lotserial,\n '' AS char_title,\n '' AS char_name,\n '' AS char_value\n FROM itemsite, item, toitem, tohead, shipitem, shiphead, uom\n WHERE ((toitem_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (item_id=itemsite_item_id)\n AND (toitem_tohead_id=tohead_id)\n AND (toitem_status <> 'X')\n AND (tohead_src_warehous_id=itemsite_warehous_id)\n AND (toitem_id=shipitem_orderitem_id)\n AND (shipitem_shiphead_id=shiphead_id)\n AND (shiphead_order_type='TO')\n AND (shiphead_id=<? value("shiphead_id") ?>)\n)\n<? endif ?>\nORDER BY sortline, sortsubline;\n \n \n logo\n SELECT image_data \nFROM image \nWHERE ((image_name='logo'));\n \n \n so_ra_relation\n --added in 2.3 to show RA link to S/O if the SO\n--was created as the result of a replacement RA\n<? if exists("EnableReturnAuth") ?>\nselect \n'RA #' AS ratext,\nrahead_number\nfrom\nrahead, cohead, shiphead\nwhere \nrahead_new_cohead_id = cohead_id\nand cohead_id = shiphead_order_id\nand shiphead_id = <? value("shiphead_id") ?>;\n<? else ?>\nselect \n'' AS ratext,\n'' AS rahead_number\n<? endif ?>\n \n \n 463\n \n \n 375\n 0\n 425\n 100\n \n stretch\n \n logo\n image_data\n \n \n \n \n 170\n 112\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n ordernumber\n \n \n \n \n \n \n \n \n 170\n 175\n 170\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cust_number\n \n \n \n \n 375\n 202\n 307\n 25\n \n 3of9\n 20\n \n 0.01\n \n head\n cohead_custponumber\n \n \n \n \n \n 480\n 285\n 300\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n shiptoname\n \n \n \n 0\n 425\n 797\n 425\n 0\n \n \n \n \n \n \n \n 375\n 175\n 177\n 25\n \n 3of9\n 10\n \n 0.01\n \n head\n cust_number\n \n \n \n \n 170\n 85\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n shiphead_number\n \n \n \n \n 10\n 145\n 150\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n so_ra_relation\n ratext\n \n \n \n \n 10\n 112\n 150\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n ordertype\n \n \n \n \n \n 480\n 305\n 300\n 15\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n head\n shipping_address\n \n \n \n \n \n 480\n 252\n 300\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n shipvia\n \n \n \n \n 455\n 400\n 320\n 20\n \n \n Arial\n 12\n normal\n \n \n \n \n head\n terms_descrip\n \n \n \n \n 170\n 231\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n orderdate\n \n \n \n \n 170\n 202\n 170\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cohead_custponumber\n \n \n \n 0\n 455\n 797\n 455\n 0\n \n \n \n \n \n \n 375\n 112\n 231\n 25\n \n 128\n 10\n \n 0.01\n \n head\n order_barcode\n \n \n \n \n 90\n 285\n 300\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n billtoname\n \n \n \n \n 170\n 252\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n scheddate\n scheddate\n \n \n \n \n \n \n 170\n 145\n 170\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n so_ra_relation\n rahead_number\n \n \n \n \n \n 112\n 400\n 250\n 20\n \n \n Arial\n 12\n normal\n \n \n \n \n head\n cust_contact\n \n \n \n \n 90\n 305\n 300\n 15\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n head\n billing_address\n \n \n \n \n
\n detail\n \n characteristic\n linenumber\n \n 35\n \n \n 130\n 5\n 195\n 17\n \n 14\n \n Arial\n 10\n normal\n \n \n \n \n detail\n char_name\n \n \n \n \n 10\n 5\n 103\n 17\n \n 14\n \n Arial\n 10\n normal\n \n \n \n \n detail\n char_title\n \n \n \n \n 370\n 5\n 195\n 17\n \n 14\n \n Arial\n 10\n normal\n \n \n \n \n detail\n char_value\n \n \n \n \n \n lotserial\n linenumber\n \n 29\n \n \n 10\n 5\n 185\n 17\n \n 14\n \n Arial\n 10\n normal\n \n \n \n \n detail\n lotserial_title\n \n \n \n \n 228\n 5\n 550\n 17\n \n 14\n \n Arial\n 10\n normal\n \n \n \n \n detail\n lotserial\n \n \n \n \n \n line\n linenumber\n \n 82\n \n \n \n 430\n 0\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n shipped\n \n \n \n \n 70\n 55\n 665\n 17\n \n 14\n \n Arial\n 10\n normal\n \n \n \n \n detail\n memo\n \n \n \n \n 80\n 0\n 200\n 20\n \n \n Arial\n 11\n bold\n \n \n \n \n detail\n item_number\n \n \n \n 545\n 15\n 595\n 15\n 1\n \n \n \n 290\n 0\n 40\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n uom_name\n \n \n \n \n 340\n 0\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n ordered\n \n \n \n \n 80\n 35\n 300\n 15\n \n \n Arial\n 11\n normal\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 670\n 0\n 50\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n f_status\n \n \n \n \n 415\n 20\n 380\n 30\n \n 128\n 15\n \n 0.01\n \n detail\n item_barcode\n \n \n \n \n 80\n 20\n 300\n 15\n \n \n Arial\n 11\n normal\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 5\n 0\n 42\n 20\n \n \n Arial\n 11\n bold\n \n \n \n \n detail\n linenumber\n \n \n \n \n \n \n \n detail\n \n 9\n \n
\n
\n packlist\n \n \n head\n \n 41\n \n \n 5\n 10\n 625\n 17\n \n 14\n \n Arial\n 10\n normal\n \n \n \n \n head\n shipcomments\n \n \n \n 5\n 5\n 842\n 5\n 0\n \n \n
\n \n 57\n \n \n 455\n 7\n 80\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n ordernumber\n \n \n \n \n \n \n 735\n 5\n 45\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 5\n 95\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 365\n 7\n 80\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n ordertype\n \n \n \n \n 94\n \n \n 540\n 70\n 790\n 70\n 0\n \n \n \n 160\n 70\n 407\n 70\n 0\n \n \n
\n Non-Hybrid version - driven only by shiphead_id parameter - Packing List showing the contents of a particular shipment - Shows RA# if SO is a replacement order for and RA 0 2013-07-26 16:17:54.38447 371 PickingListSONoClosedLines \N \n\n Picking List\n PickingListSONoClosedLines\n Omits Closed Lines -- With Barcodes formatitemsitebarcode(itemsite_id) -- SO # barcoded formatsobarcode(cohead_id) -- With Logo, place logo graphic in images DB with name "logo"\n \n \n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 25\n 25\n 25\n 25\n \n head\n SELECT cust_number,\n formatsobarcode(cohead_id) AS order_barcode,\n\n formataddr(cohead_billtoaddress1, cohead_billtoaddress2, cohead_billtoaddress3, (cohead_billtocity || ' ' || cohead_billtostate || ' ' || cohead_billtozipcode), cohead_billtocountry) AS billing_address, \n\n formataddr(cohead_shiptoaddress1, cohead_shiptoaddress2, cohead_shiptoaddress3, (cohead_shiptocity || ' ' || cohead_shiptostate || ' ' || cohead_shiptozipcode), cohead_shiptocountry) AS shipping_address, \n\n trim(cntct_first_name || ' ' || cntct_last_name) AS cust_contact,\n cohead_billtoname,\n cohead_billtoaddress1,\n cohead_billtoaddress2,\n cohead_billtoaddress3,\n (cohead_billtocity || ' ' || cohead_billtostate || ' ' || cohead_billtozipcode) AS billtocitystatezip,\n cntct_phone AS cust_phone,\n cohead_shiptoname,\n cohead_shiptoaddress1,\n cohead_shiptoaddress2,\n cohead_shiptoaddress3,\n (cohead_shiptocity || ' ' || cohead_shiptostate || ' ' || cohead_shiptozipcode) AS shiptocitystatezip,\n cohead_number,\n cohead_shipvia,\n cohead_shiptophone,\n cohead_custponumber,\n formatDate(cohead_orderdate) AS orderdate,\n cohead_shipcomments, \n terms_descrip\n FROM cohead\n JOIN custinfo ON (cohead_cust_id=cust_id)\n LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id)\n LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id)\n JOIN terms ON (cohead_terms_id=terms_id)\n WHERE (cohead_id=<? value("sohead_id") ?>);\n \n \n scheddate\n SELECT formatDate(MIN(coitem_scheddate)) AS scheddate\n FROM coitem\n WHERE ((coitem_status <> 'X') AND (coitem_cohead_id=<? value("sohead_id") ?>));\n \n \n detail\n SELECT 1 AS groupby,\n coitem_linenumber AS sortline, coitem_subnumber AS sortsubline,\n formatsolinenumber(coitem_id) AS linenumber,\n coitem_memo,\n item_number,\n formatitemsitebarcode(itemsite_id) AS item_barcode,\n (select uom_name from uom where uom_id = coitem_qty_uom_id) AS item_invuom,\n item_descrip1,\n item_descrip2,\n formatQty(coitem_qtyord) AS ordered,\n CASE WHEN ((coitem_qtyshipped - coitem_qtyreturned) > 0.0) THEN formatQty(coitem_qtyshipped - coitem_qtyreturned)\n ELSE NULL\n END AS shipped,\n CASE WHEN ((coitem_qtyshipped - coitem_qtyreturned) > 0.0) THEN formatQty(noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned))\n ELSE NULL\n END AS balance,\n CASE WHEN (qtyAtShipping('SO', coitem_id) > 0.0) THEN formatQty(qtyAtShipping('SO', coitem_id))\n ELSE NULL\n END AS atShipping,\n formatQty(roundUp( ( SELECT COALESCE(SUM(shipitem_qty), 0)\n FROM shipitem, shiphead\n WHERE ( (shipitem_orderitem_id=coitem_id)\n AND (shipitem_shiphead_id=shiphead_id)\n AND (NOT shiphead_shipped) ) )/ CASE WHEN(itemuomratiobytype(item_id, 'Selling') = 0) THEN 1 ELSE itemuomratiobytype(item_id, 'Selling') END ) ) AS shipatshipping,\n CASE WHEN (coitem_status='O' AND (SELECT cust_creditstatus FROM custinfo,cohead WHERE coitem_cohead_id=cohead_id AND cust_id=cohead_cust_id)='H') THEN 'H'\n WHEN (coitem_status='O' AND ((SELECT SUM(invcitem_billed)\n FROM cohead, invchead, invcitem\n WHERE ((invchead_ordernumber=cohead_number)\n AND (invcitem_invchead_id=invchead_id)\n AND (invcitem_item_id=item_id)\n AND (invcitem_warehous_id=itemsite_warehous_id)\n AND (invcitem_linenumber=CASE WHEN(coitem_subnumber > 0) THEN (coitem_linenumber * 1000) + coitem_subnumber ELSE coitem_linenumber END)\n AND (cohead_id=coitem_cohead_id))) >= coitem_qtyord)) THEN 'I'\n WHEN (coitem_status='O' AND ((SELECT SUM(invcitem_billed)\n FROM cohead, invchead, invcitem\n WHERE ((invchead_ordernumber=cohead_number)\n AND (invcitem_invchead_id=invchead_id)\n AND (invcitem_item_id=item_id)\n AND (invcitem_warehous_id=itemsite_warehous_id)\n AND (invcitem_linenumber=CASE WHEN(coitem_subnumber > 0) THEN (coitem_linenumber * 1000) + coitem_subnumber ELSE coitem_linenumber END)\n AND (cohead_id=coitem_cohead_id))) > 0)) THEN 'P'\n WHEN (coitem_status='O' AND (itemsite_qtyonhand - qtyAllocated(itemsite_id, CURRENT_DATE)\n + qtyOrdered(itemsite_id, CURRENT_DATE))\n >= (coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned)) THEN 'R'\n ELSE coitem_status\n END AS f_status\n FROM itemsite, item, uom, coitem\n WHERE ( (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (coitem_status <> 'X')\n AND (coitem_status <> 'C')\n AND (item_type != 'K')\n-- 1 REMOVE THIS AND CLOSED LINES WILL NOT DISPLAY ON PACKING LIST \n <? if exists("hide closed") ?>\n AND (coitem_status <> 'C')\n-- 2 REMOVE THIS AND CLOSED LINES WILL NOT DISPLAY ON PACKING LIST \n <? endif ?>\n AND (coitem_cohead_id=<? value("sohead_id") ?>)\n)\nGROUP BY coitem_qty_uom_id, coitem_linenumber, coitem_subnumber, coitem_id, coitem_memo, item_number, item_invuom,\n item_descrip1, item_descrip2, coitem_qtyord, coitem_qty_invuomratio, coitem_qtyshipped,\n coitem_qtyreturned, coitem_status, coitem_cohead_id,\n itemsite_id, itemsite_qtyonhand, itemsite_warehous_id, item_id\nORDER BY sortline, sortsubline;\n \n \n logo\n SELECT image_data \nFROM image \nWHERE ((image_name='logo'));\n \n \n 477\n \n \n 375\n 0\n 425\n 85\n \n stretch\n \n logo\n image_data\n \n \n \n \n 120\n 400\n 253\n 25\n \n \n Arial\n 12\n normal\n \n \n \n \n head\n cust_contact\n \n \n \n \n 375\n 160\n 307\n 25\n \n 3of9\n 20\n \n 0.01\n \n head\n cohead_custponumber\n \n \n \n \n \n \n \n \n 175\n 215\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n scheddate\n scheddate\n \n \n \n \n 465\n 280\n 305\n 20\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n head\n shipping_address\n \n \n \n \n \n \n 170\n 125\n 170\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cust_number\n \n \n \n \n \n 433\n 215\n 331\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cohead_shipvia\n \n \n \n \n \n 468\n 400\n 320\n 20\n \n \n Arial\n 12\n normal\n \n \n \n \n head\n terms_descrip\n \n \n \n \n 170\n 155\n 170\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cohead_custponumber\n \n \n \n \n \n 75\n 280\n 295\n 20\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n head\n billing_address\n \n \n \n \n \n 375\n 95\n 233\n 25\n \n 128\n 10\n \n 0.01\n \n head\n order_barcode\n \n \n \n \n 175\n 195\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n orderdate\n \n \n \n \n \n \n 170\n 95\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cohead_number\n \n \n \n 25\n 465\n 823\n 465\n 0\n \n \n \n \n 25\n 425\n 823\n 425\n 0\n \n \n \n 465\n 260\n 305\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cohead_shiptoname\n \n \n \n \n \n 375\n 130\n 177\n 25\n \n 3of9\n 10\n \n 0.01\n \n head\n cust_number\n \n \n \n \n \n \n \n 75\n 260\n 305\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cohead_billtoname\n \n \n \n \n
\n detail\n \n detail\n groupby\n \n 68\n \n \n 50\n 5\n 625\n 17\n \n 14\n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_shipcomments\n \n \n \n \n \n lineitem\n linenumber\n \n 23\n \n 5\n 5\n 843\n 5\n 0\n \n \n \n \n \n detail\n \n 148\n \n \n \n 630\n 95\n 85\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n f_status\n \n \n \n \n 25\n 40\n 295\n 20\n \n \n Arial\n 11\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n 190\n 110\n 280\n 110\n 0\n \n \n \n 635\n 0\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n atshipping\n \n \n \n \n 25\n 20\n 295\n 20\n \n \n Arial\n 11\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n \n 100\n 120\n 700\n 17\n \n 14\n \n Arial\n 10\n normal\n \n \n \n \n detail\n coitem_memo\n \n \n \n 415\n 110\n 500\n 110\n 0\n \n \n \n \n 415\n 80\n 500\n 80\n 0\n \n \n 80\n 110\n 170\n 110\n 0\n \n \n 190\n 80\n 280\n 80\n 0\n \n \n \n 530\n 0\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n balance\n \n \n \n 305\n 110\n 395\n 110\n 0\n \n \n 305\n 80\n 395\n 80\n 0\n \n \n \n 25\n 0\n 200\n 20\n \n \n Arial\n 11\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n \n 425\n 0\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n shipped\n \n \n \n \n 228\n 0\n 85\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n item_invuom\n \n \n \n 745\n 15\n 795\n 15\n 1\n \n \n 80\n 80\n 170\n 80\n 0\n \n \n \n 365\n 30\n 468\n 35\n \n 128\n 15\n \n 0.01\n \n detail\n item_barcode\n \n \n \n 632\n 80\n 720\n 80\n 0\n \n \n \n 320\n 0\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n ordered\n \n \n \n
\n \n 56\n \n \n \n 455\n 5\n 80\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n cohead_number\n \n \n \n \n 90\n 5\n 95\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 735\n 5\n 45\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 111\n \n 185\n 25\n 363\n 25\n 0\n \n \n \n 186\n 90\n 360\n 90\n 0\n \n \n \n
\n Omits Closed Lines -- With Barcodes formatitemsitebarcode(itemsite_id) -- SO # barcoded formatsobarcode(cohead_id) -- With Logo, place logo graphic in images DB with name "logo" 0 2013-07-26 16:17:54.38447 68 PricesByCustomer \N \n\n Prices By Customer\n PricesByCustomer\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT cust_name,\n addr_line1 AS cust_address1,\n addr_line2 AS cust_address2,\n addr_line3 AS cust_address3,\n <? if exists("showExpired") ?>\n text('Yes')\n <? else ?>\n text('No')\n <? endif ?>\n AS f_showexpired,\n <? if exists("showFuture") ?>\n text('Yes')\n <? else ?>\n text('No')\n <? endif ?>\n AS f_showfuture,\n <? if exists("showCosts") ?>\n <? if exists("actualCosts") ?>\n text('Show Costs and Margins using Actual Costs')\n <? else ?>\n text('Show Costs and Margins using Standard Costs')\n <? endif ?>\n AS f_showcosts,\n text('Cost') AS f_costlabel,\n text('Margin') AS f_marginlabel\n <? else ?>\n text('') AS f_showcosts,\n text('') AS f_costlabel,\n text('') AS f_marginlabel\n <? endif ?>\n FROM custinfo\n LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id)\n LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id)\nWHERE (cust_id=<? value("cust_id") ?>);\n\n \n \n detail\n SELECT itemid, sourcetype, schedulename, type, itemnumber,\n item_descrip1, item_descrip2,\n CASE WHEN (qtybreak = -1) THEN 'N/A'\n ELSE formatQty(qtybreak)\n END AS f_qtybreak,\n price, formatPrice(price) AS f_price,\n <? if exists("showCosts") ?>\n cost AS cost,\n formatCost(cost) AS f_cost,\n CASE WHEN ((price = 0) OR (cost = 0)) THEN 'N/A'\n ELSE formatScrap((price - cost) / price)\n END AS f_margin\n <? else ?>\n 0 AS cost,\n text('') AS f_cost,\n text('') AS f_margin\n <? endif ?>\nFROM (\n SELECT ipsprice_id AS itemid, 1 AS sourcetype,\n ipshead_name AS schedulename, 'Customer' AS type,\n item_number AS itemnumber, item_descrip1, item_descrip2,\n ipsprice_qtybreak AS qtybreak, ipsprice_price AS price,\n <? if exists("actualCosts") ?>\n (actcost(item_id) * iteminvpricerat(item_id))\n <? else ?>\n (stdcost(item_id) * iteminvpricerat(item_id))\n <? endif ?>\n AS cost\n FROM ipsass, ipshead, ipsprice, item\n WHERE ((ipsass_ipshead_id=ipshead_id)\n AND (ipsprice_ipshead_id=ipshead_id)\n AND (ipsprice_item_id=item_id)\n AND (ipsass_cust_id=<? value("cust_id") ?>)\n<? if not exists("showExpired") ?>\n AND (ipshead_expires > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (ipshead_effective <= CURRENT_DATE)\n<? endif ?>\n )\n\n UNION\n SELECT ipsprice_id AS itemid, 2 AS sourcetype,\n ipshead_name AS schedulename, 'Cust. Type' AS type,\n item_number AS itemnumber, item_descrip1, item_descrip2,\n ipsprice_qtybreak AS qtybreak, ipsprice_price AS price,\n <? if exists("actualCosts") ?>\n (actcost(item_id) * iteminvpricerat(item_id))\n <? else ?>\n (stdcost(item_id) * iteminvpricerat(item_id))\n <? endif ?>\n AS cost\n FROM ipsass, ipshead, ipsprice, item, custinfo\n WHERE ((ipsass_ipshead_id=ipshead_id)\n AND (ipsprice_ipshead_id=ipshead_id)\n AND (ipsprice_item_id=item_id)\n AND (ipsass_custtype_id=cust_custtype_id)\n AND (cust_id=<? value("cust_id") ?>)\n<? if not exists("showExpired") ?>\n AND (ipshead_expires > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (ipshead_effective <= CURRENT_DATE)\n<? endif ?>\n )\n\n UNION\n SELECT ipsprice_id AS itemid, 3 AS sourcetype,\n ipshead_name AS schedulename, ('Sale' || '-' || sale_name) AS type,\n item_number AS itemnumber, item_descrip1, item_descrip2,\n ipsprice_qtybreak AS qtybreak, ipsprice_price AS price,\n <? if exists("actualCosts") ?>\n (actcost(item_id) * iteminvpricerat(item_id))\n <? else ?>\n (stdcost(item_id) * iteminvpricerat(item_id))\n <? endif ?>\n AS cost\n FROM sale, ipshead, ipsprice, item\n WHERE ((sale_ipshead_id=ipshead_id)\n AND (ipsprice_ipshead_id=ipshead_id)\n AND (ipsprice_item_id=item_id)\n<? if not exists("showExpired") ?>\n AND (sale_enddate > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (sale_startdate <= CURRENT_DATE)\n<? endif ?>\n )\n\n UNION\n SELECT item_id AS itemid, 0 AS sourcetype,\n '' AS schedulename, 'List Price' AS type,\n item_number AS itemnumber, item_descrip1, item_descrip2,\n -1 AS qtybreak, (item_listprice - (item_listprice * cust_discntprcnt)) AS price,\n <? if exists("actualCosts") ?>\n (actcost(item_id) * iteminvpricerat(item_id))\n <? else ?>\n (stdcost(item_id) * iteminvpricerat(item_id))\n <? endif ?>\n AS cost\n FROM item, custinfo\n WHERE ( (item_sold)\n AND (item_active)\n AND (cust_id=<? value("cust_id") ?>)\n AND (NOT item_exclusive) )\n) AS data\nORDER BY itemnumber, price;\n \n \n 236\n \n \n \n \n 565\n 120\n 114\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_showfuture\n \n \n \n \n 100\n 80\n 605\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_name\n \n \n \n \n 665\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_marginlabel\n \n \n \n \n 585\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_costlabel\n \n \n \n 5\n 229\n 745\n 229\n 2\n \n \n \n \n 100\n 140\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_address3\n \n \n \n \n \n 100\n 100\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_address1\n \n \n \n \n 405\n 140\n 335\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_showcosts\n \n \n \n \n \n 565\n 100\n 114\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_showexpired\n \n \n \n \n \n \n \n \n \n 100\n 120\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_address2\n \n \n \n \n \n 6\n \n \n 41\n \n \n 665\n 5\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_marginlabel\n \n \n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n 585\n 5\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_costlabel\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 56\n \n \n 10\n 30\n 240\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemnumber\n \n \n \n \n 425\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtybreak\n \n \n \n 5\n 50\n 745\n 50\n 0\n \n \n \n 585\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_cost\n \n \n \n \n 195\n 0\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n schedulename\n \n \n \n \n 505\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_price\n \n \n \n \n 10\n 15\n 240\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_margin\n \n \n \n \n 320\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n type\n \n \n \n
\n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 69 PricesByCustomerType \N \n\n Prices By Customer Type\n PricesByCustomerType\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT (custtype_code || '-' || custtype_descrip) as custtype,\n <? if exists("showExpired") ?>\n text('Yes')\n <? else ?>\n text('No')\n <? endif ?>\n AS f_showexpired,\n <? if exists("showFuture") ?>\n text('Yes')\n <? else ?>\n text('No')\n <? endif ?>\n AS f_showfuture,\n <? if exists("showCosts") ?>\n <? if exists("actualCosts") ?>\n text('Show Costs and Margins using Actual Costs')\n <? else ?>\n text('Show Costs and Margins using Standard Costs')\n <? endif ?>\n AS f_showcosts,\n text('Cost') AS f_costlabel,\n text('Margin') AS f_marginlabel\n <? else ?>\n text('') AS f_showcosts,\n text('') AS f_costlabel,\n text('') AS f_marginlabel\n <? endif ?>\n FROM custtype\n WHERE (custtype_id=<? value("custtype_id") ?>);\n\n \n \n detail\n SELECT itemid, sourcetype, schedulename, type, itemnumber,\n item_descrip1, item_descrip2,\n CASE WHEN (qtybreak = -1) THEN 'N/A'\n ELSE formatQty(qtybreak)\n END AS f_qtybreak,\n price, formatSalesPrice(price) AS f_price,\n <? if exists("showCosts") ?>\n cost AS cost,\n formatCost(cost) AS f_cost,\n CASE WHEN ((price = 0) OR (cost = 0)) THEN 'N/A'\n ELSE formatScrap((price - cost) / price)\n END AS f_margin\n <? else ?>\n 0 AS cost,\n '' AS f_cost,\n '' AS f_margin\n <? endif ?>\nFROM (\n SELECT ipsprice_id AS itemid, 2 AS sourcetype,\n ipshead_name AS schedulename, 'Cust. Type' AS type,\n item_number AS itemnumber, item_descrip1, item_descrip2,\n ipsprice_qtybreak AS qtybreak, ipsprice_price AS price,\n <? if exists("actualCosts") ?>\n (actcost(ipsprice_item_id) * iteminvpricerat(item_id))\n <? else ?>\n (stdcost(ipsprice_item_id) * iteminvpricerat(item_id))\n <? endif ?>\n AS cost\n FROM ipsass, ipshead, ipsprice, item \n WHERE ((ipsass_ipshead_id=ipshead_id)\n AND (ipsprice_ipshead_id=ipshead_id)\n AND (ipsprice_item_id=item_id)\n AND (ipsass_custtype_id=<? value("custtype_id") ?>)\n<? if not exists("showExpired") ?>\n AND (ipshead_expires > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (ipshead_effective <= CURRENT_DATE)\n<? endif ?>\n )\n\n UNION\n SELECT ipsprice_id AS itemid, 3 AS sourcetype,\n ipshead_name AS schedulename, ('Sale' || '-' || sale_name) AS type,\n item_number AS itemnumber,\n item_descrip1, item_descrip2,\n ipsprice_qtybreak AS qtybreak, ipsprice_price AS price,\n <? if exists("actualCosts") ?>\n (actcost(ipsprice_item_id) * iteminvpricerat(item_id))\n <? else ?>\n (stdcost(ipsprice_item_id) * iteminvpricerat(item_id))\n <? endif ?>\n AS cost\n FROM sale, ipshead, ipsprice, item\n WHERE ( (sale_ipshead_id=ipshead_id)\n AND (ipsprice_ipshead_id=ipshead_id)\n AND (ipsprice_item_id=item_id)\n<? if not exists("showExpired") ?>\n AND (sale_enddate > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (sale_startdate <= CURRENT_DATE)\n<? endif ?>\n )\n\n UNION\n SELECT item_id AS itemid, 0 AS sourcetype,\n '' AS schedulename, 'List Price' AS type,\n item_number AS itemnumber, item_descrip1, item_descrip2,\n -1 AS qtybreak, item_listprice AS price,\n <? if exists("actualCosts") ?>\n (actcost(item_id) * iteminvpricerat(item_id))\n <? else ?>\n (stdcost(item_id) * iteminvpricerat(item_id))\n <? endif ?>\n AS cost\n FROM item\n WHERE ( (item_sold)\n AND (item_active)\n AND (NOT item_exclusive) )\n) AS data\nORDER BY itemnumber, price;\n \n \n 236\n \n \n \n \n \n 585\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_costlabel\n \n \n \n \n 665\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_marginlabel\n \n \n \n \n 130\n 80\n 500\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n custtype\n \n \n \n \n \n 565\n 120\n 113\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_showfuture\n \n \n \n \n \n \n 565\n 100\n 113\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_showexpired\n \n \n \n 5\n 229\n 745\n 229\n 2\n \n \n \n \n \n \n 405\n 140\n 335\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_showcosts\n \n \n \n \n \n \n 6\n \n \n 41\n \n \n \n \n \n 665\n 5\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_marginlabel\n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n 585\n 5\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_costlabel\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 56\n \n 5\n 50\n 745\n 50\n 0\n \n \n \n 425\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtybreak\n \n \n \n \n 10\n 15\n 240\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 195\n 0\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n schedulename\n \n \n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemnumber\n \n \n \n \n 505\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_price\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_margin\n \n \n \n \n 10\n 30\n 240\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 585\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_cost\n \n \n \n \n 320\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n type\n \n \n \n
\n \n 16\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 67 PricesByItem \N \n\n Prices By Item\n PricesByItem\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n item_descrip1,\n item_descrip2,\n <? if exists("showExpired") ?>\n text('Yes')\n <? else ?>\n text('No')\n <? endif ?>\n AS f_showexpired,\n <? if exists("showFuture") ?>\n text('Yes')\n <? else ?>\n text('No')\n <? endif ?>\n AS f_showfuture,\n <? if exists("showCosts") ?>\n <? if exists("actualCosts") ?>\n text('Show Costs and Margins using Actual Costs')\n <? else ?>\n text('Show Costs and Margins using Standard Costs')\n <? endif ?>\n AS f_showcosts,\n text('Cost') AS f_costlabel,\n text('Margin') AS f_marginlabel\n <? else ?>\n text('') AS f_showcosts,\n text('') AS f_costlabel,\n text('') AS f_marginlabel\n <? endif ?>\n FROM item\n WHERE (item_id=<? value("item_id") ?>);\n\n \n \n detail\n SELECT itemid, sourcetype, schedulename, type, typename,\n CASE WHEN (qtybreak = -1) THEN 'N/A'\n ELSE formatQty(qtybreak)\n END AS f_qtybreak,\n price, formatPrice(price) AS f_price,\n <? if exists("showCosts") ?>\n cost AS cost,\n formatCost(cost) AS f_cost,\n CASE WHEN ((price = 0) OR (cost = 0)) THEN 'N/A'\n ELSE formatScrap((price - cost) / price)\n END AS f_margin\n <? else ?>\n 0 AS cost,\n text('') AS f_cost,\n text('') AS f_margin\n <? endif ?>\nFROM ( SELECT ipsprice_id AS itemid, 1 AS sourcetype,\n ipshead_name AS schedulename, 'Customer' AS type,\n cust_name AS typename,\n ipsprice_qtybreak AS qtybreak,\n ipsprice_price AS price,\n <? if exists("actualCosts") ?>\n (actcost(item_id) * iteminvpricerat(item_id))\n <? else ?>\n (stdcost(item_id) * iteminvpricerat(item_id))\n <? endif ?>\n AS cost\n FROM ipsass, ipshead, ipsprice, custinfo, item\n WHERE ( (ipsass_ipshead_id=ipshead_id)\n AND (ipsprice_ipshead_id=ipshead_id)\n AND (ipsass_cust_id=cust_id)\n AND (ipsprice_item_id=item_id)\n AND (item_id=<? value("item_id") ?>)\n<? if not exists("showExpired") ?>\n AND (ipshead_expires > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (ipshead_effective <= CURRENT_DATE)\n<? endif ?>\n )\n\n UNION\n SELECT ipsprice_id AS itemid, 2 AS sourcetype,\n ipshead_name AS schedulename, 'Cust. Type' AS type,\n (custtype_code || '-' || custtype_descrip) AS typename,\n ipsprice_qtybreak AS qtybreak,\n ipsprice_price AS price,\n <? if exists("actualCosts") ?>\n (actcost(item_id) * iteminvpricerat(item_id))\n <? else ?>\n (stdcost(item_id) * iteminvpricerat(item_id))\n <? endif ?>\n AS cost\n FROM ipsass, ipshead, ipsprice, custtype, item\n WHERE ( (ipsass_ipshead_id=ipshead_id)\n AND (ipsprice_ipshead_id=ipshead_id)\n AND (ipsass_custtype_id=custtype_id)\n AND (ipsprice_item_id=item_id)\n AND (item_id=<? value("item_id") ?>)\n<? if not exists("showExpired") ?>\n AND (ipshead_expires > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (ipshead_effective <= CURRENT_DATE)\n<? endif ?>\n )\n\n UNION\n SELECT ipsprice_id AS itemid, 3 AS sourcetype,\n ipshead_name AS schedulename, 'Cust. Type Pattern' AS type,\n (custtype_code || '-' || custtype_descrip) AS typename,\n ipsprice_qtybreak AS qtybreak,\n ipsprice_price AS price,\n <? if exists("actualCosts") ?>\n (actcost(item_id) * iteminvpricerat(item_id))\n <? else ?>\n (stdcost(item_id) * iteminvpricerat(item_id))\n <? endif ?>\n AS cost\n FROM ipsass, ipshead, ipsprice, custtype, item\n WHERE ( (ipsass_ipshead_id=ipshead_id)\n AND (ipsprice_ipshead_id=ipshead_id)\n AND (COALESCE(LENGTH(ipsass_custtype_pattern), 0) > 0)\n AND (custtype_code ~ ipsass_custtype_pattern)\n AND (ipsprice_item_id=item_id)\n AND (item_id=<? value("item_id") ?>)\n<? if not exists("showExpired") ?>\n AND (ipshead_expires > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (ipshead_effective <= CURRENT_DATE)\n<? endif ?>\n )\n\n UNION\n SELECT ipsprice_id AS itemid, 4 AS sourcetype,\n ipshead_name AS schedulename, 'Sale' AS type,\n sale_name AS typename,\n ipsprice_qtybreak AS qtybreak,\n ipsprice_price AS price,\n <? if exists("actualCosts") ?>\n (actcost(item_id) * iteminvpricerat(item_id))\n <? else ?>\n (stdcost(item_id) * iteminvpricerat(item_id))\n <? endif ?>\n AS cost\n FROM sale, ipshead, ipsprice, item\n WHERE ( (sale_ipshead_id=ipshead_id)\n AND (ipsprice_ipshead_id=ipshead_id)\n AND (ipsprice_item_id=item_id)\n AND (item_id=<? value("item_id") ?>)\n<? if not exists("showExpired") ?>\n AND (sale_enddate > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (sale_startdate <= CURRENT_DATE)\n<? endif ?>\n )\n\n UNION\n SELECT ipsprice_id AS itemid, 5 AS sourcetype,\n ipshead_name AS schedulename, 'Cust. Ship-To' AS type,\n (cust_name || '-' || shipto_num) AS typename,\n ipsprice_qtybreak AS qtybreak,\n ipsprice_price AS price,\n <? if exists("actualCosts") ?>\n (actcost(item_id) * iteminvpricerat(item_id))\n <? else ?>\n (stdcost(item_id) * iteminvpricerat(item_id))\n <? endif ?>\n AS cost\n FROM ipsass, ipshead, ipsprice, custinfo, shiptoinfo, item\n WHERE ( (ipsass_ipshead_id=ipshead_id)\n AND (ipsprice_ipshead_id=ipshead_id)\n AND (ipsass_shipto_id=shipto_id)\n AND (shipto_cust_id=cust_id)\n AND (ipsprice_item_id=item_id)\n AND (item_id=<? value("item_id") ?>)\n<? if not exists("showExpired") ?>\n AND (ipshead_expires > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (ipshead_effective <= CURRENT_DATE)\n<? endif ?>\n )\n\n UNION\n SELECT ipsprice_id AS itemid, 5 AS sourcetype,\n ipshead_name AS schedulename, 'Cust. Ship-To Pattern' AS type,\n (cust_name || '-' || shipto_num) AS typename,\n ipsprice_qtybreak AS qtybreak,\n ipsprice_price AS price,\n <? if exists("actualCosts") ?>\n (actcost(item_id) * iteminvpricerat(item_id))\n <? else ?>\n (stdcost(item_id) * iteminvpricerat(item_id))\n <? endif ?>\n AS cost\n FROM ipsass, ipshead, ipsprice, custinfo, shiptoinfo, item\n WHERE ( (ipsass_ipshead_id=ipshead_id)\n AND (ipsprice_ipshead_id=ipshead_id)\n AND (COALESCE(LENGTH(ipsass_shipto_pattern), 0) > 0)\n AND (shipto_num ~ ipsass_shipto_pattern)\n AND (shipto_cust_id=cust_id)\n AND (ipsprice_item_id=item_id)\n AND (item_id=<? value("item_id") ?>)\n<? if not exists("showExpired") ?>\n AND (ipshead_expires > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (ipshead_effective <= CURRENT_DATE)\n<? endif ?>\n )\n\n UNION\n SELECT item_id AS itemid, 0 AS sourcetype,\n 'List Price' AS schedulename, 'N/A' AS type,\n '' AS typename,\n -1 AS qtybreak,\n item_listprice AS price,\n <? if exists("actualCosts") ?>\n (actcost(item_id) * iteminvpricerat(item_id))\n <? else ?>\n (stdcost(item_id) * iteminvpricerat(item_id))\n <? endif ?>\n AS cost\n FROM item\n WHERE ( (NOT item_exclusive)\n AND (item_id=<? value("item_id") ?>) ) ) AS data\nORDER BY price;\n \n \n 221\n \n \n 565\n 80\n 114\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_showexpired\n \n \n \n \n 100\n 80\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n 665\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_marginlabel\n \n \n \n \n \n \n \n 100\n 100\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n 585\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_costlabel\n \n \n \n \n \n 405\n 120\n 335\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_showcosts\n \n \n \n \n \n 565\n 100\n 114\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_showfuture\n \n \n \n \n 100\n 120\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n \n 6\n \n \n 26\n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n \n \n 585\n 5\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_costlabel\n \n \n \n \n \n 665\n 5\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_costlabel\n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 505\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_price\n \n \n \n \n 135\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n type\n \n \n \n \n 10\n 0\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n schedulename\n \n \n \n \n 585\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_cost\n \n \n \n \n 425\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtybreak\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_margin\n \n \n \n \n 240\n 0\n 185\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n typename\n \n \n \n
\n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 313 CRMAccountMasterList \N \n\n CRM Accounts Master List\n CRMAccountMasterList\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n crmaccounts\n detail\n \n \n 160\n \n \n \n \n 4.76465\n 156.293\n 744.765\n 156.293\n 2\n \n \n \n \n \n \n \n \n \n \n \n \n 5\n 40\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 34\n \n \n \n \n 4.23535\n 30.2931\n 744.235\n 30.2931\n 2\n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 32\n \n \n 550\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n competitor\n \n \n \n \n 10\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n crmacct_number\n \n \n \n \n 615\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n partner\n \n \n \n \n 418.235\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n prospect\n \n \n \n \n 115\n 0\n 234\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n crmacct_name\n \n \n \n \n 680\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n taxauth\n \n \n \n \n 355\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust\n \n \n \n \n 485\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend\n \n \n \n \n 302.941\n 15.3526\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cntct_phone\n \n \n \n \n 115\n 15.3526\n 185\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cntct_name\n \n \n \n \n 417.941\n 15.3526\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cntct_email\n \n \n \n
\n \n 18\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 66 EarnedCommissions \N \n\n Earned Commissions\n EarnedCommissions\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("salesrep_id") ?>\n ( SELECT salesrep_name\n FROM salesrep\n WHERE (salesrep_id=<? value("salesrep_id") ?>) )\n <? else ?>\n text('All Sales Reps')\n <? endif ?>\n AS salesrep,\n formatDate(<? value("startDate") ?>) AS startdate,\n formatDate(<? value("endDate") ?>) AS enddate;\n \n \n detail\n salesHistory\n detail\n \n \n 221\n \n \n \n \n \n 140\n 120\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n \n \n 140\n 140\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n \n \n 140\n 100\n 385\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n salesrep\n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 395\n 0\n 110\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 565\n 0\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_baseextprice\n \n \n \n \n 155\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_number\n \n \n \n \n 103\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cohist_ordernumber\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_commissionpaid\n \n \n \n \n 5\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n salesrep_name\n \n \n \n \n 315\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_invcdate\n \n \n \n \n 505\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyshipped\n \n \n \n \n 635\n 0\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_basecommission\n \n \n \n \n 202\n 0\n 110\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cohist_shiptoname\n \n \n \n
\n \n 16\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 16\n \n \n \n 565\n 0\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n baseextprice\n \n qty\n \n \n \n 635\n 0\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n basecommission\n \n qty\n \n \n
\n \N 0 2013-07-26 16:17:54.38447 140 RejectCodeMasterList \N \n\n Reject Code Master List\n RejectCodeMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT rjctcode_code, rjctcode_descrip\n FROM rjctcode\nORDER BY rjctcode_code;\n \n \n 77\n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n 7\n \n \n 22\n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n rjctcode_code\n \n \n \n \n 175\n 0\n 565\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n rjctcode_descrip\n \n \n \n
\n \n 17\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 301 AccountingYearPeriodsMasterList \N \n\n Accounting Year Periods Master List\n AccountingYearPeriodsMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT yearperiod_id,\n formatDate(yearperiod_start) AS f_start,\n formatDate(yearperiod_end) AS f_end,\n formatBoolYN(yearperiod_closed) AS f_closed\n FROM yearperiod\nORDER BY yearperiod_start;\n \n \n 75\n \n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n 6\n \n \n 21\n \n \n 5\n 14\n 745\n 14\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 113\n 0\n 100\n 14\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_end\n \n \n \n \n 10\n 0\n 100\n 14\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_start\n \n \n \n \n 420\n 0\n 80\n 14\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_closed\n \n \n \n
\n \n 15\n \n \n \n 90\n 0\n 100\n 14\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 14\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 184 UsageStatisticsByItemGroup \N \n\n Item Usage Statistics by Item Group\n UsageStatisticsByItemGroup\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatDate(<? value("startDate") ?>) AS startdate,\n formatDate(<? value("endDate") ?>) AS enddate,\n <? if exists("itemgrp_id") ?>\n ( SELECT (itemgrp_name || '-' || itemgrp_descrip)\n FROM itemgrp\n WHERE (itemgrp_id=<? value("itemgrp_id") ?>) )\n <? elseif exists("itemgrp_pattern") ?>\n text(<? value("itemgrp_pattern") ?>)\n <? else ?>\n text('All Item Groups')\n <? endif ?>\n AS itemgroup,\n <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM warehous\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse;\n \n \n detail\n usageStatistics\n detail\n \n \n 221\n \n \n \n \n \n \n \n \n \n \n \n \n \n 140\n 120\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n 140\n 100\n 250\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n itemgroup\n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n 550\n 120\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n 550\n 100\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 56\n \n 5\n 50\n 745\n 50\n 0\n \n \n \n 665\n 2\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_transfer\n \n \n \n \n 65\n 0\n 175\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 585\n 2\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_adjust\n \n \n \n \n 425\n 2\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_sold\n \n \n \n \n 65\n 30\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 10\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 65\n 15\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 505\n 2\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_scrap\n \n \n \n \n 345\n 2\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_issued\n \n \n \n \n 260\n 2\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_received\n \n \n \n
\n \n 16\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2010-06-01 10:42:38.474432 429 InventoryHistory \N \n\n Inventory History\n InventoryHistory\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT invhist_id,\n invhist_transdate,\n formatDateTime(invhist_transdate) AS f_transdate,\n invhist_transtype,\n whs1.warehous_code AS warehous_code,\n item_number,\n item_descrip1,\n item_descrip2,\n formatQty(invhist_invqty) AS transqty,\n (invhist_value_after-invhist_value_before) AS transvalue,\n formatMoney(invhist_value_after-invhist_value_before) AS f_transvalue,\n invhist_invuom,\n CASE WHEN (invhist_ordtype NOT LIKE '') THEN (invhist_ordtype || '-' || invhist_ordnumber)\n ELSE invhist_ordnumber\n END AS ordernumber,\n formatQty(invhist_qoh_before) AS qohbefore,\n formatQty(invhist_qoh_after) AS qohafter,\n CASE WHEN (invhist_costmethod='A') THEN <? value("average") ?>\n WHEN (invhist_costmethod='S') THEN <? value("standard") ?>\n WHEN (invhist_costmethod='J') THEN <? value("job") ?>\n WHEN (invhist_costmethod='N') THEN <? value("none") ?>\n ELSE <? value("unknown") ?>\n END AS costmethod,\n formatMoney(invhist_value_before) AS valbefore,\n formatMoney(invhist_value_after) AS valafter,\n invhist_user AS username,\n invhist_posted,\n 0 AS invdetail_id,\n '' AS locationname,\n '' AS detailqty,\n '' AS locationqtybefore,\n '' AS locationqtyafter,\n CASE WHEN (invhist_transtype='TW') THEN whs1.warehous_code\n WHEN (invhist_transtype='IB') THEN whs1.warehous_code\n WHEN (invhist_transtype='IM') THEN whs1.warehous_code\n WHEN (invhist_transtype='IT') THEN whs1.warehous_code\n WHEN (invhist_transtype='RB') THEN 'WIP'\n WHEN (invhist_transtype='RM') THEN 'WIP'\n WHEN (invhist_transtype='RP') THEN 'PURCH'\n WHEN (invhist_transtype='RR') THEN 'CUST'\n WHEN (invhist_transtype='RS') THEN 'SHIP'\n WHEN (invhist_transtype='SH') THEN whs1.warehous_code\n WHEN (invhist_transtype='SI') THEN whs1.warehous_code\n WHEN (invhist_transtype='SV') THEN whs1.warehous_code\n\t WHEN (invhist_transtype='TR') THEN whs2.warehous_code\n\t WHEN (invhist_transtype='TS') THEN whs1.warehous_code\n ELSE ''\n END AS locfrom,\n CASE WHEN (invhist_transtype='TW') THEN whs2.warehous_code\n WHEN (invhist_transtype='AD') THEN whs1.warehous_code\n WHEN (invhist_transtype='CC') THEN whs1.warehous_code\n WHEN (invhist_transtype='IB') THEN 'WIP'\n WHEN (invhist_transtype='IM') THEN 'WIP'\n WHEN (invhist_transtype='NN') THEN whs1.warehous_code\n WHEN (invhist_transtype='RB') THEN whs1.warehous_code\n WHEN (invhist_transtype='RM') THEN whs1.warehous_code\n WHEN (invhist_transtype='RP') THEN whs1.warehous_code\n WHEN (invhist_transtype='RR') THEN whs1.warehous_code\n WHEN (invhist_transtype='RS') THEN whs1.warehous_code\n WHEN (invhist_transtype='RT') THEN whs1.warehous_code\n WHEN (invhist_transtype='RX') THEN whs1.warehous_code\n WHEN (invhist_transtype='SH') THEN 'SHIP'\n WHEN (invhist_transtype='SI') THEN 'SCRAP'\n WHEN (invhist_transtype='SV') THEN 'SHIP'\n\t WHEN (invhist_transtype='TR') THEN whs1.warehous_code\n\t WHEN (invhist_transtype='TS') THEN whs2.warehous_code\n ELSE ''\n END AS locto\n FROM itemsite, item, whsinfo AS whs1, invhist LEFT OUTER JOIN whsinfo AS whs2 ON (invhist_xfer_warehous_id=whs2.warehous_id)\n WHERE ( (NOT invhist_hasdetail)\n AND (invhist_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=whs1.warehous_id)\n AND (DATE(invhist_transdate) BETWEEN <? value("startDate") ?> AND <? value("endDate") ?> )\n AND (transType(invhist_transtype, <? value("transType") ?>))\n<? if exists("orderType") ?>\n AND (invhist_ordtype=<? value("orderType") ?>)\n<? endif ?>\n<? if exists("orderNumber") ?>\n AND (invhist_ordnumber ~ <? value("orderNumber") ?>)\n<? endif ?>\n<? if exists("cohead_id") ?>\n AND (invhist_ordtype='SO')\n AND (invhist_ordnumber ~ (\n SELECT cohead_number \n FROM cohead \n WHERE cohead_id=<? value("cohead_id") ?>))\n<? endif ?>\n<? if exists("pohead_id") ?>\n AND (invhist_ordtype='PO')\n AND (invhist_ordnumber ~ (\n SELECT pohead_number \n FROM pohead \n WHERE pohead_id=<? value("pohead_id") ?>))\n<? endif ?>\n<? if exists("tohead_id") ?>\n AND (invhist_ordtype='TO')\n AND (invhist_ordnumber ~ (\n SELECT tohead_number \n FROM tohead \n WHERE tohead_id=<? value("tohead_id") ?>))\n<? endif ?>\n<? if exists("wo_id") ?>\n AND (invhist_ordtype='WO')\n AND (invhist_ordnumber ~ formatWoNumber(<? value("wo_id") ?>))\n<? endif ?>\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("item_id") ?>\n AND (itemsite_item_id=<? value("item_id") ?>)\n<? endif ?>\n<? if exists("classcode_id") ?>\n AND (item_classcode_id=<? value("classcode_id") ?>)\n<? endif ?>\n<? if exists("itemgrp_id") ?>\n AND (item_id IN (SELECT itemgrpitem_item_id\n\t\t FROM itemgrpitem\n\t\t WHERE (itemgrpitem_itemgrp_id=<? value("itemgrp_id") ?>)))\n<? endif ?>\n<? if exists("plancode_id") ?>\n AND (itemsite_plancode_id=<? value("plancode_id") ?>)\n<? endif ?>\n<? if exists("classcode_pattern") ?>\n AND (item_classcode_id IN (SELECT classcode_id\n\t\t\t FROM classcode\n\t\t\t WHERE (classcode_code ~ <? value ("classcode_pattern") ?>)))\n<? endif ?>\n<? if exists("itemgrp_pattern") ?>\n AND (item_id IN (SELECT itemgrpitem_item_id\n\t\t FROM itemgrpitem, itemgrp\n\t\t WHERE ( (itemgrpitem_itemgrp_id=itemgrp_id)\n\t\t AND (itemgrp_name ~ <? value ("itemgrp_pattern") ?>))))\n<? endif ?>\n<? if exists("plancode_pattern") ?>\n AND (itemsite_plancode_id IN (SELECT plancode_id\n\t\t\t\tFROM plancode\n\t\t\t\tWHERE (plancode_code ~ <? value("plancode_pattern") ?>)))\n<? endif ?>\n<? if exists("itemgrp") ?>\n AND (item_id IN (SELECT DISTINCT itemgrpitem_item_id FROM itemgrpitem))\n<? endif ?>\n)\nUNION\nSELECT invhist_id,\n invhist_transdate,\n formatDateTime(invhist_transdate) AS transdate,\n invhist_transtype,\n whs1.warehous_code AS warehous_code,\n item_number,\n item_descrip1,\n item_descrip2,\n formatQty(invhist_invqty) AS transqty,\n 0 AS transvalue,\n formatMoney(invhist_value_after-invhist_value_before) AS f_transvalue,\n invhist_invuom,\n CASE WHEN (invhist_ordtype NOT LIKE '') THEN (invhist_ordtype || '-' || invhist_ordnumber)\n ELSE invhist_ordnumber\n END AS ordernumber,\n formatQty(invhist_qoh_before) AS qohbefore,\n formatQty(invhist_qoh_after) AS qohafter,\n CASE WHEN(invhist_costmethod='A') THEN text('Average')\n WHEN(invhist_costmethod='S') THEN text('Standard')\n WHEN(invhist_costmethod='J') THEN text('Job')\n WHEN(invhist_costmethod='N') THEN text('None')\n ELSE 'UNKNOWN'\n END AS costmethod,\n formatMoney(invhist_value_before) AS valbefore,\n formatMoney(invhist_value_after) AS valafter,\n invhist_user AS username,\n invhist_posted,\n invdetail_id,\n CASE WHEN (invdetail_location_id=-1) THEN formatlotserialnumber(invdetail_ls_id)\n WHEN (invdetail_ls_id IS NULL) THEN formatLocationName(invdetail_location_id)\n ELSE (formatLocationName(invdetail_location_id) || '-' || formatlotserialnumber(invdetail_ls_id))\n END AS locationname,\n formatQty(invdetail_qty) AS detailqty,\n formatQty(invdetail_qty_before) AS locationqtybefore,\n formatQty(invdetail_qty_after) AS locationqtyafter,\n CASE WHEN (invhist_transtype='TW') THEN whs1.warehous_code\n WHEN (invhist_transtype='IB') THEN whs1.warehous_code\n WHEN (invhist_transtype='IM') THEN whs1.warehous_code\n WHEN (invhist_transtype='IT') THEN whs1.warehous_code\n WHEN (invhist_transtype='RB') THEN 'WIP'\n WHEN (invhist_transtype='RM') THEN 'WIP'\n WHEN (invhist_transtype='RP') THEN 'PURCH'\n WHEN (invhist_transtype='RR') THEN 'CUST'\n WHEN (invhist_transtype='RS') THEN 'SHIP'\n WHEN (invhist_transtype='SH') THEN whs1.warehous_code\n WHEN (invhist_transtype='SI') THEN whs1.warehous_code\n WHEN (invhist_transtype='SV') THEN whs1.warehous_code\n\t WHEN (invhist_transtype='TR') THEN whs2.warehous_code\n\t WHEN (invhist_transtype='TS') THEN whs1.warehous_code\n ELSE ''\n END AS locfrom,\n CASE WHEN (invhist_transtype='TW') THEN whs2.warehous_code\n WHEN (invhist_transtype='AD') THEN whs1.warehous_code\n WHEN (invhist_transtype='CC') THEN whs1.warehous_code\n WHEN (invhist_transtype='IB') THEN 'WIP'\n WHEN (invhist_transtype='IM') THEN 'WIP'\n WHEN (invhist_transtype='NN') THEN whs1.warehous_code\n WHEN (invhist_transtype='RB') THEN whs1.warehous_code\n WHEN (invhist_transtype='RM') THEN whs1.warehous_code\n WHEN (invhist_transtype='RP') THEN whs1.warehous_code\n WHEN (invhist_transtype='RR') THEN whs1.warehous_code\n WHEN (invhist_transtype='RS') THEN whs1.warehous_code\n WHEN (invhist_transtype='RT') THEN whs1.warehous_code\n WHEN (invhist_transtype='RX') THEN whs1.warehous_code\n WHEN (invhist_transtype='SH') THEN 'SHIP'\n WHEN (invhist_transtype='SI') THEN 'SCRAP'\n WHEN (invhist_transtype='SV') THEN 'SHIP'\n\t WHEN (invhist_transtype='TR') THEN whs1.warehous_code\n\t WHEN (invhist_transtype='TS') THEN whs2.warehous_code\n ELSE ''\n END AS locto\n FROM itemsite, item, whsinfo AS whs1, invdetail, invhist LEFT OUTER JOIN whsinfo AS whs2 ON (invhist_xfer_warehous_id=whs2.warehous_id)\n WHERE ((invhist_hasdetail)\n AND (invhist_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=whs1.warehous_id)\n AND (invdetail_invhist_id=invhist_id)\n AND (DATE(invhist_transdate) BETWEEN <? value("startDate") ?> AND <? value("endDate") ?> )\n AND (transType(invhist_transtype, <? value("transType") ?>))\n<? if exists("orderType") ?>\n AND (invhist_ordtype=<? value("orderType") ?>)\n<? endif ?>\n<? if exists("orderNumber") ?>\n AND (invhist_ordnumber ~ <? value("orderNumber") ?>)\n<? endif ?>\n<? if exists("cohead_id") ?>\n AND (invhist_ordtype='SO')\n AND (invhist_ordnumber ~ (\n SELECT cohead_number \n FROM cohead \n WHERE cohead_id=<? value("cohead_id") ?>))\n<? endif ?>\n<? if exists("pohead_id") ?>\n AND (invhist_ordtype='PO')\n AND (invhist_ordnumber ~ (\n SELECT pohead_number \n FROM pohead \n WHERE pohead_id=<? value("pohead_id") ?>))\n<? endif ?>\n<? if exists("tohead_id") ?>\n AND (invhist_ordtype='TO')\n AND (invhist_ordnumber ~ (\n SELECT tohead_number \n FROM tohead \n WHERE tohead_id=<? value("tohead_id") ?>))\n<? endif ?>\n<? if exists("wo_id") ?>\n AND (invhist_ordtype='WO')\n AND (invhist_ordnumber ~ formatWoNumber(<? value("wo_id") ?>))\n<? endif ?>\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("item_id") ?>\n AND (itemsite_item_id=<? value("item_id") ?>)\n<? endif ?>\n<? if exists("classcode_id") ?>\n AND (item_classcode_id=<? value("classcode_id") ?>)\n<? endif ?>\n<? if exists("itemgrp_id") ?>\n AND (item_id IN (SELECT itemgrpitem_item_id\n\t\t FROM itemgrpitem\n\t\t WHERE (itemgrpitem_itemgrp_id=<? value("itemgrp_id") ?>)))\n<? endif ?>\n<? if exists("plancode_id") ?>\n AND (itemsite_plancode_id=<? value("plancode_id") ?>)\n<? endif ?>\n<? if exists("classcode_pattern") ?>\n AND (item_classcode_id IN (SELECT classcode_id\n\t\t\t FROM classcode\n\t\t\t WHERE (classcode_code ~ <? value ("classcode_pattern") ?>)))\n<? endif ?>\n<? if exists("itemgrp_pattern") ?>\n AND (item_id IN (SELECT itemgrpitem_item_id\n\t\t FROM itemgrpitem, itemgrp\n\t\t WHERE ( (itemgrpitem_itemgrp_id=itemgrp_id)\n\t\t AND (itemgrp_name ~ <? value ("itemgrp_pattern") ?>))))\n<? endif ?>\n<? if exists("plancode_pattern") ?>\n AND (itemsite_plancode_id IN (SELECT plancode_id\n\t\t\t\tFROM plancode\n\t\t\t\tWHERE (plancode_code ~ <? value("plancode_pattern") ?>)))\n<? endif ?>\n<? if exists("itemgrp") ?>\n AND (item_id IN (SELECT DISTINCT itemgrpitem_item_id FROM itemgrpitem))\n<? endif ?>\n);\n \n \n footer\n SELECT formatMoney(sum(invhist_value_after-invhist_value_before)) AS transvalue_total\nFROM itemsite, item, whsinfo AS whs1, invhist LEFT OUTER JOIN\n whsinfo AS whs2 ON (invhist_xfer_warehous_id=whs2.warehous_id)\nWHERE ( (invhist_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id) \n AND (itemsite_warehous_id=whs1.warehous_id)\n AND (DATE(invhist_transdate) BETWEEN <? value("startDate") ?> AND <? value("endDate") ?> )\n AND (transType(invhist_transtype, <? value("transType") ?>))\n<? if exists("orderType") ?>\n AND (invhist_ordtype=<? value("orderType") ?>)\n<? endif ?>\n<? if exists("orderNumber") ?>\n AND (invhist_ordnumber ~ <? value("orderNumber") ?>)\n AND (invhist_ordtype = 'SO')\n<? endif ?>\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("item_id") ?>\n AND (itemsite_item_id=<? value("item_id") ?>)\n<? endif ?>\n<? if exists("classcode_id") ?>\n AND (item_classcode_id=<? value("classcode_id") ?>)\n<? elseif exists("itemgrp_id") ?>\n AND (item_id IN (SELECT itemgrpitem_item_id\n\t\t FROM itemgrpitem\n\t\t WHERE (itemgrpitem_itemgrp_id=<? value("itemgrp_id") ?>)))\n<? elseif exists("plancode_id") ?>\n AND (itemsite_plancode_id=<? value("plancode_id") ?>)\n<? elseif exists("classcode_pattern") ?>\n AND (item_classcode_id IN (SELECT classcode_id\n\t\t\t FROM classcode\n\t\t\t WHERE (classcode_code ~ <? value ("classcode_pattern") ?>)))\n<? elseif exists("itemgrp_pattern") ?>\n AND (item_id IN (SELECT itemgrpitem_item_id\n\t\t FROM itemgrpitem, itemgrp\n\t\t WHERE ( (itemgrpitem_itemgrp_id=itemgrp_id)\n\t\t AND (itemgrp_name ~ <? value ("itemgrp_pattern") ?>))))\n<? elseif exists("plancode_pattern") ?>\n AND (itemsite_plancode_id IN (SELECT plancode_id\n\t\t\t\tFROM plancode\n\t\t\t\tWHERE (plancode_code ~ <? value("plancode_pattern") ?>)))\n<? elseif exists("itemgrp") ?>\n AND (item_id IN (SELECT DISTINCT itemgrpitem_item_id FROM itemgrpitem))\n<? endif ?>\n)\n \n \n 242\n \n \n \n \n \n \n \n \n 5\n 237\n 745\n 237\n 2\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 10\n 37\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 2\n \n \n 51\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 5\n 45\n 745\n 45\n 2\n \n \n \n \n \n \n
\n detail\n \n invhist_id\n invhist_id\n \n 45\n \n \n 60\n 0\n 132\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_transdate\n \n \n \n \n 200\n 0\n 228\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 200\n 25\n 228\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 660\n 25\n 72\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n valafter\n \n \n \n \n 60\n 12\n 132\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ordernumber\n \n \n \n \n 585\n 0\n 72\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qohbefore\n \n \n \n \n 5\n 0\n 50\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 432\n 0\n 72\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invhist_invuom\n \n \n \n \n 60\n 25\n 132\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n username\n \n \n \n \n 585\n 25\n 72\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n valbefore\n \n \n \n \n 660\n 12\n 72\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n locto\n \n \n \n \n 660\n 0\n 72\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qohafter\n \n \n \n \n 5\n 12\n 50\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invhist_transtype\n \n \n \n \n 510\n 0\n 72\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n transqty\n \n \n \n \n 585\n 12\n 72\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n locfrom\n \n \n \n \n 200\n 12\n 228\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 510\n 12\n 72\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n costmethod\n \n \n \n \n 510\n 25\n 72\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_transvalue\n \n \n \n \n 9\n \n 5\n 5\n 745\n 5\n 0\n \n \n \n \n \n detail\n \n 16\n \n \n 585\n 0\n 72\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n locationqtybefore\n \n \n \n \n 200\n 0\n 228\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n locationname\n \n \n \n \n 508\n 0\n 72\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n detailqty\n \n \n \n \n 660\n 0\n 72\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n locationqtyafter\n \n \n \n
\n \n 14\n \n \n \n 705\n 0\n 40\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 90\n 0\n 100\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 20\n \n \n 510\n 5\n 72\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n footer\n transvalue_total\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 442 Journals \N \n\n Journals\n Journals\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("source") ?>\n text(<? value("source") ?>)\n <? else ?>\n text('All Sources')\n <? endif ?>\n AS source,\n <? if exists("accnt_id") ?>\n ( SELECT (accnt_number || '-' || accnt_descrip)\n FROM accnt\n WHERE (accnt_id=<? value("accnt_id") ?>) )\n <? else ?>\n text('All Accounts')\n <? endif ?>\n AS accnt,\n <? if exists("showUsernames") ?>\n text('Username')\n <? else ?>\n text('')\n <? endif ?>\n AS f_username\n \n \n detail\n SELECT sltrans_id,\n sltrans_created, formatDate(sltrans_date) AS transdate,\n sltrans_source, sltrans_doctype, sltrans_docnumber, invhist_docnumber,\n firstLine(sltrans_notes) AS transnotes,\n (formatGLAccount(accnt_id) || ' - ' || accnt_descrip) AS account,\n-- Debits:\n CASE WHEN (sltrans_amount < 0) THEN formatMoney(ABS(sltrans_amount))\n ELSE ''\n END AS f_debit, \n CASE WHEN (sltrans_amount < 0) THEN ABS(sltrans_amount)\n ELSE 0\n END AS debit_amt, \n--Credits:\n CASE WHEN (sltrans_amount > 0) THEN formatMoney(sltrans_amount)\n ELSE ''\n END AS f_credit,\n CASE WHEN (sltrans_amount > 0) THEN sltrans_amount\n ELSE 0\n END AS credit_amt,\n--Balance:\n sltrans_amount * -1 as balance_amt,\n--\n sltrans_amount,\n CASE WHEN accnt_type IN ('A','E') THEN \n sltrans_amount * -1\n ELSE sltrans_amount END AS running,\n formatBoolYN(sltrans_posted) AS f_posted,\n sltrans_username AS f_username,\n sltrans_sequence\nFROM sltrans\n JOIN accnt ON (sltrans_accnt_id=accnt_id) \n LEFT OUTER JOIN invhist ON (sltrans_misc_id=invhist_id\n AND sltrans_docnumber='Misc.') \n<? if exists("company_id") ?>\n JOIN company ON (accnt_company=company_number) \n<? endif ?>\n<? if exists("prfcntr_id") ?>\n JOIN prftcntr ON (accnt_profit=prftcntr_number) \n<? endif ?>\n<? if exists("subaccnt_id") ?>\n JOIN subaccnt ON (accnt_sub=subaccnt_number) \n<? endif ?>\n<? if exists("subType") ?>\n JOIN subaccnttype ON (subaccnttype_code=accnt_subaccnttype_code) \n<? endif ?>\nWHERE (\n<? if exists("startDate") ?>\n <? if exists("endDate") ?>\n (sltrans_date BETWEEN <? value("startDate") ?>\n AND <? value("endDate") ?>)\n <? else ?>\n (sltrans_date BETWEEN <? value("startDate") ?>\n AND endoftime())\n <? endif ?>\n<? else ?>\n <? if exists("endDate") ?>\n (sltrans_date BETWEEN startoftime()\n AND <? value("endDate") ?>)\n <? else ?>\n (sltrans_date BETWEEN startoftime()\n AND endoftime())\n <? endif ?>\n<? endif ?>\n<? if exists("company_id") ?>\n AND (company_id=<? value("company_id") ?>)\n<? endif ?>\n<? if exists("prfcntr_id") ?>\n AND (prftcntr_id=<? value("prfcntr_id") ?>)\n<? endif ?>\n<? if exists("accnt_number") ?>\n AND (accnt_number=<? value("accnt_number") ?>)\n<? endif ?>\n<? if exists("subaccnt_id") ?>\n AND (subaccnt_id=<? value("subaccnt_id") ?>)\n<? endif ?>\n<? if exists("subType") ?>\n AND (subaccnttype_id=<? value("subType") ?>)\n<? endif ?>\n<? if exists("accntType") ?>\n AND (accnt_type= <? value("accntType") ?>)\n<? endif ?>\n<? if exists("accnt_id") ?>\n AND (sltrans_accnt_id=<? value("accnt_id") ?>)\n<? endif ?>\n<? if exists("docnum") ?>\n AND (sltrans_docnumber = case when <? value("docnum") ?> = '' then \n sltrans_docnumber else \n<? value("docnum") ?> end ) \n<? endif ?>\n<? if exists("source") ?>\n AND (sltrans_source=<? value("source") ?>)\n<? endif ?>\n<? if exists("source_pattern") ?>\n AND (sltrans_source ~* <? value("source_pattern") ?>)\n<? endif ?>\n<? if exists("journalnumber") ?>\n AND (sltrans_gltrans_journalnumber=<? value("journalnumber") ?>)\n<? endif ?>\n<? if exists("posted") ?>\n AND (sltrans_posted=<? value("posted") ?>)\n<? endif ?>\n )\nORDER BY sltrans_created,\n sltrans_sequence, sltrans_amount;\n \n \n 205\n \n \n \n \n \n \n \n 0\n 200\n 1000\n 200\n 2\n \n \n \n \n \n \n \n \n 10\n 40\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 5\n \n \n 45\n \n \n \n \n 0\n 40\n 1000\n 40\n 2\n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 31\n \n \n 882.19\n -0.890523\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_username\n \n \n \n \n 790.907\n -0.890523\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_credit\n \n \n \n \n 240\n 15\n 265\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n transnotes\n \n \n \n \n 954.846\n -0.891\n 42.1539\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_posted\n \n \n \n \n 12500\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_doctype\n \n \n \n \n 125\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n sltrans_doctype\n \n \n \n \n 0\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n transdate\n \n \n \n \n 180\n 15\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invhist_docnumber\n \n \n \n \n 180\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n sltrans_docnumber\n \n \n \n \n 681.65\n -0.890523\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_debit\n \n \n \n \n 240\n 0\n 270\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n account\n \n \n \n \n 65\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n sltrans_source\n \n \n \n
\n \n \n 75\n \n \n 765.907\n 8.08006\n 105\n 14\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n credit_amt\n \n money\n \n \n \n 632.141\n 5.07044\n 1000\n 5\n 2\n \n \n \n 960\n 60\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 60\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 656.65\n 8.08006\n 105\n 14\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n debit_amt\n \n money\n \n \n \n \n \n \n 15\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 960\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 447 SalesHistory \N \n\n Sales History\n SalesHistory\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT cohist_ordernumber AS sonumber,\n cohist_invcnumber AS invnumber,\n formatDate(cohist_orderdate) AS orddate,\n formatDate(cohist_invcdate, 'Return') AS invcdate,\n item_number, item_descrip1, item_descrip2,\n formatQty(cohist_qtyshipped) AS shipped,\n <? if exists("showPrices") ?>\n formatPrice(currtobase(cohist_curr_id,cohist_unitprice,cohist_invcdate)) AS unitprice,\n formatMoney(round(cohist_qtyshipped * currtobase(cohist_curr_id,cohist_unitprice,cohist_invcdate),2)) AS f_total,\n <? else ?>\n '' AS unitprice,\n '' AS f_total,\n <? endif ?>\n round(cohist_qtyshipped * currtobase(cohist_curr_id,cohist_unitprice,cohist_invcdate),2) AS total\n FROM cohist JOIN custinfo ON (cust_id=cohist_cust_id)\n JOIN salesrep ON (salesrep_id=cohist_salesrep_id)\n<? if exists("includeMisc") ?>\n LEFT OUTER JOIN itemsite ON (itemsite_id=cohist_itemsite_id)\n LEFT OUTER JOIN site() ON (warehous_id=itemsite_warehous_id)\n LEFT OUTER JOIN item ON (item_id=itemsite_item_id)\n<? else ?>\n JOIN itemsite ON (itemsite_id=cohist_itemsite_id)\n JOIN site() ON (warehous_id=itemsite_warehous_id)\n JOIN item ON (item_id=itemsite_item_id)\n<? endif ?>\n<? if exists("cohead_id") ?>\n JOIN cohead ON (cohead_number=cohist_ordernumber)\n<? endif ?>\nWHERE ( (true)\n<? if exists("includeMisc") ?>\n AND (COALESCE(cohist_misc_type, '') <> 'F')\n AND (COALESCE(cohist_misc_type, '') <> 'T')\n<? endif ?>\n<? if exists("startDate") ?>\n AND (cohist_invcdate >= <? value("startDate") ?>)\n<? endif ?>\n<? if exists("endDate") ?>\n AND (cohist_invcdate <= <? value("endDate") ?>)\n<? endif ?>\n<? if exists("shipStartDate") ?>\n AND (cohist_shipdate >= <? value("shipStartDate") ?>)\n<? endif ?>\n<? if exists("shipEndDate") ?>\n AND (cohist_shipdate <= <? value("shipEndDate") ?>)\n<? endif ?>\n<? if exists("salesrep_id") ?>\n AND (cohist_salesrep_id=<? value("salesrep_id") ?>)\n<? endif ?>\n<? if exists("shipto_id") ?>\n AND (cohist_shipto_id=<? value("shipto_id") ?>)\n<? endif ?>\n<? if exists("billToName") ?>\n AND (UPPER(cohist_billtoname) ~ UPPER(<? value("billToName") ?>))\n<? endif ?>\n<? if exists("cust_id") ?>\n AND (cohist_cust_id=<? value("cust_id") ?>)\n<? endif ?>\n<? if exists("custtype_id") ?>\n AND (cust_custtype_id=<? value("custtype_id") ?>)\n<? elseif exists("custtype_pattern") ?>\n AND (cust_custtype_id IN (SELECT DISTINCT custtype_id\n FROM custtype\n WHERE (custtype_code ~ <? value("custtype_pattern") ?>)))\n<? endif ?>\n<? if exists("by_custgrp" ?>\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem))\n<? endif ?>\n<? if exists("custgrp_id") ?>\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem\n WHERE (custgrpitem_custgrp_id=<? value("custgrp_id") ?>)))\n<? endif ?>\n<? if exists("custgrp_pattern") ?>\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrp, custgrpitem\n WHERE ( (custgrpitem_custgrp_id=custgrp_id)\n AND (custgrp_name ~ <? value("custgrp_pattern") ?>) )) )\n<? endif ?>\n\n<? if exists("item_id") ?>\n AND (itemsite_item_id=<? value("item_id") ?>)\n<? endif ?>\n<? if exists("prodcat_id") ?>\n AND (item_prodcat_id=<? value("prodcat_id") ?>)\n<? endif ?>\n<? if exists("prodcat_pattern") ?>\n AND (item_prodcat_id IN (SELECT DISTINCT prodcat_id\n FROM prodcat\n WHERE (prodcat_code ~ <? value("prodcat_pattern") ?>)))\n<? endif ?>\n\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("shipzone_id") ?>\n AND (cohist_shipzone_id=<? value("shipzone_id") ?>)\n<? endif ?>\n<? if exists("saletype_id") ?>\n AND (cohist_saletype_id=<? value("saletype_id") ?>)\n<? endif ?>\n<? if exists("cohead_id") ?>\n AND (cohead_id=<? value("cohead_id") ?>)\n<? endif ?>\n )\nORDER BY cohist_invcdate, item_number\n \n \n head\n SELECT <? if exists("showPrices") ?>\n text('Unit Price') AS lbl_unitprice,\n text('Total') AS lbl_total\n <? else ?>\n text('') AS lbl_unitprice,\n text('') AS lbl_total\n <? endif ?>;\n \n \n 233\n \n \n \n 665\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_total\n \n \n \n \n \n \n \n \n \n 5\n 230\n 745\n 230\n 2\n \n \n \n 585\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_unitprice\n \n \n \n \n \n 15\n 48\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_total\n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n 585\n 0\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_unitprice\n \n \n \n \n
\n detail\n \n \n detail\n \n 51\n \n \n 355\n 15\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 5\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n sonumber\n \n \n \n \n 355\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 585\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n unitprice\n \n \n \n \n 270\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n orddate\n \n \n \n \n 505\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shipped\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 270\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invcdate\n \n \n \n \n 355\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_total\n \n \n \n \n 110\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invnumber\n \n \n \n
\n
\n total\n \n \n showPrices\n \n 16\n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n total\n \n money\n \n \n \n \n
\n \n 16\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 103\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 60 SalesOrderStatus \N \n\n Sales Order Status\n SalesOrderStatus\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT \n --the following line was added for version 2.3:\n (select uom_name from uom where uom_id = coitem_qty_uom_id) AS uom_orderuom,\n coitem_linenumber,\n item_number, item_descrip1,\n item_descrip2,\n warehous_code,\n formatQty(coitem_qtyord) AS qtyord,\n formatQty(coitem_qtyshipped) AS qtyship,\n formatQty(coitem_qtyreturned) AS qtyret,\n formatQty(SUM(COALESCE(shipitem_qty, 0))) AS qtyinvcd,\n formatQty(noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned)) AS f_balance,\n CASE WHEN (coitem_status='C') THEN\n ( formatDate(coitem_closedate) || ' (' || coitem_close_username || ')' )\n ELSE ''\n END AS f_dateuser,\n CASE WHEN (coitem_order_id=-1) THEN ''\n WHEN (coitem_order_type='W') THEN\n ( SELECT (formatWoNumber(wo_id) || '/' || wo_status)\n FROM wo\n WHERE (wo_id=coitem_order_id) )\n ELSE ''\n END AS f_childord\n FROM itemsite, item, whsinfo, coitem LEFT OUTER JOIN\n shipitem ON (shipitem_orderitem_id=coitem_id\n AND shipitem_invcitem_id IS NOT NULL) \n WHERE ((coitem_itemsite_id=itemsite_id)\n AND (coitem_status<>'X')\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (coitem_cohead_id=<? value("sohead_id") ?>)\n)\nGROUP BY uom_orderuom,\n coitem_id, coitem_linenumber, item_number,\n item_descrip1, item_descrip2, warehous_code,\n coitem_qtyord, coitem_qtyshipped, coitem_status,\n coitem_closedate, coitem_close_username,\n coitem_qtyreturned, coitem_order_id,\n coitem_order_type\nORDER BY coitem_linenumber;\n \n \n head\n SELECT cohead_number,\n formatDate(cohead_orderdate) AS orderdate,\n cohead_custponumber,\n cust_name, cntct_phone AS cust_phone\n FROM cohead, custinfo, cntct\n WHERE ((cohead_cust_id=cust_id)\n AND (cust_cntct_id=cntct_id)\n AND (cohead_id=<? value("sohead_id") ?>)\n);\n \n \n lastupdated\n SELECT formatDate(MAX(lastupdated)) AS f_lastupdated\n FROM (SELECT cohead_lastupdated AS lastupdated\n FROM cohead\n WHERE (cohead_id=:sohead_id)\n UNION\n SELECT coitem_lastupdated AS lastupdated\n FROM coitem\n WHERE (coitem_cohead_id=<? value("sohead_id") ?>) ) AS data;\n \n \n 224\n \n \n \n \n \n \n \n \n \n \n \n \n \n 112\n 95\n 220\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n orderdate\n \n \n \n \n 475\n 75\n 220\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_name\n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n 475\n 112\n 220\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cohead_custponumber\n \n \n \n \n \n \n 475\n 95\n 220\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_phone\n \n \n \n \n 475\n 135\n 220\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n lastupdated\n f_lastupdated\n \n \n \n \n 112\n 75\n 220\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cohead_number\n \n \n \n \n \n \n \n \n \n 7\n \n \n 37\n \n \n \n \n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 54\n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_childord\n \n \n \n \n 550\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_dateuser\n \n \n \n \n 550\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_balance\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 5\n 0\n 25\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n coitem_linenumber\n \n \n \n \n 469\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyinvcd\n \n \n \n \n 35\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 229\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyord\n \n \n \n \n 170\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 390\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyret\n \n \n \n \n 35\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 310\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyship\n \n \n \n \n 35\n 15\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 200\n 0\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_orderuom\n \n \n \n
\n \n 20\n \n \n 715\n 0\n 30\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 80\n 0\n 140\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 291 AdjustmentTypes \N \n\n Adjustment Types\n AdjustmentTypes\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT bankadjtype_name, bankadjtype_descrip,\n formatGLAccountLong(bankadjtype_accnt_id) AS f_accnt,\n CASE WHEN(bankadjtype_iscredit) THEN text('Credit')\n ELSE text('Debit')\n END AS f_type\n FROM bankadjtype;\n \n \n 121\n \n \n \n \n 5\n 115\n 745\n 115\n 2\n \n \n \n \n \n \n 9\n \n \n 36\n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 18\n \n \n 5\n 0\n 155\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n bankadjtype_name\n \n \n \n \n 165\n 0\n 170\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n bankadjtype_descrip\n \n \n \n \n 340\n 0\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_accnt\n \n \n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_type\n \n \n \n
\n \n 18\n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 444 BriefSalesHistory \N \n\n Brief Sales History\n BriefSalesHistory\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("startDate") ?>\n formatDate(date(<? value("startDate") ?>))\n <? else ?>\n text('Earliest')\n <? endif ?> AS startDate,\n <? if exists("endDate") ?>\n formatDate(date(<? value("endDate") ?>))\n <? else ?>\n text('Latest')\n <? endif ?> AS endDate,\n <? if exists("showPrices") ?>\n text('Unit Price') AS lbl_unitprice,\n text('Total') AS lbl_total,\n <? else ?>\n text('') AS lbl_unitprice,\n text('') AS lbl_total,\n <? endif ?>\n <? if exists("warehous_id") ?>\n (SELECT warehous_code FROM whsinfo WHERE warehous_id=<? value("warehous_id") ?>)\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("cust_id") ?>\n (SELECT cust_name FROM custinfo WHERE cust_id=<? value("cust_id") ?>)\n <? else ?>\n text('All Customers')\n <? endif ?>\n AS cust_name,\n <? if exists("custtype_id") ?>\n (SELECT custtype_code FROM custtype WHERE custtype_id=<? value("custtype_id") ?>)\n <? else ?>\n text('All Customer Types')\n <? endif ?>\n AS custtype_code,\n <? if exists("custtype_pattern") ?>\n text(<? value("custtype_pattern") ?>)\n <? else ?>\n text('Not Applicable')\n <? endif ?>\n AS custtype_pattern,\n <? if exists("custgrp_id") ?>\n (SELECT custgrp_name FROM custgrp WHERE custgrp_id=<? value("custgrp_id") ?>)\n <? else ?>\n text('All Customer Groups')\n <? endif ?>\n AS custgrp_name,\n <? if exists("custgrp_pattern") ?>\n text(<? value("custgrp_pattern") ?>)\n <? else ?>\n text('Not Applicable')\n <? endif ?>\n AS custgrp_pattern,\n <? if exists("prodcat_id") ?>\n (SELECT prodcat_code FROM prodcat WHERE prodcat_id=<? value("prodcat_id") ?>)\n <? else ?>\n text('All Product Categories')\n <? endif ?>\n AS prodcat_code,\n <? if exists("prodcat_pattern") ?>\n text(<? value("prodcat_pattern") ?>)\n <? else ?>\n text('Not Applicable')\n <? endif ?>\n AS prodcat_pattern,\n <? if exists("item_id") ?>\n (SELECT item_number FROM item WHERE item_id=<? value("item_id") ?>)\n <? else ?>\n text('All Item Numbers')\n <? endif ?>\n AS item_number,\n <? if exists("cohead_id") ?>\n (SELECT cohead_number FROM cohead WHERE cohead_id=<? value("cohead_id") ?>)\n <? else ?>\n text('All Orders')\n <? endif ?>\n AS docnumber; \n \n \n detail\n SELECT cohist_ordernumber AS sonumber,\n cohist_invcnumber AS invnumber,\n formatDate(cohist_orderdate) AS orddate,\n formatDate(cohist_invcdate, 'Return') AS shipdate,\n SUM(round(cohist_qtyshipped * currtobase(cohist_curr_id,cohist_unitprice,cohist_invcdate),2)) as extended,\n formatMoney(SUM(round(cohist_qtyshipped * currtobase(cohist_curr_id,cohist_unitprice,cohist_invcdate),2))) as f_total,\n SUM(round(cohist_qtyshipped * currtobase(cohist_curr_id,cohist_unitprice,cohist_invcdate),2)) as total\nFROM saleshistory\n LEFT OUTER JOIN cohead ON (cohead_number=cohist_ordernumber)\nWHERE ((cohist_invcdate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n<? if exists("cust_id") ?>\n AND (cohist_cust_id=<? value("cust_id") ?>)\n<? endif ?>\n<? if exists("shipto_id") ?>\n AND (cohist_shipto_id=<? value("shipto_id") ?>)\n<? endif ?>\n<? if exists("custtype_id") ?>\n AND (cust_custtype_id=<? value("custtype_id") ?>)\n<? endif ?>\n<? if exists("custtype_pattern") ?>\n AND (custtype_code ~ <? value("custtype_pattern") ?>)\n<? endif ?>\n<? if exists("custgrp_id") ?>\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem\n WHERE (custgrpitem_custgrp_id=<? value("custgrp_id") ?>)))\n<? endif ?>\n<? if exists("custgrp_pattern") ?>\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrp, custgrpitem\n WHERE ( (custgrpitem_custgrp_id=custgrp_id)\n AND (custgrp_name ~ <? value("custgrp_pattern") ?>) )) )\n<? endif ?>\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("item_id") ?>\n AND (itemsite_item_id=<? value("item_id") ?>)\n<? endif ?>\n<? if exists("prodcat_id") ?>\n AND (item_prodcat_id=<? value("prodcat_id") ?>)\n<? endif ?>\n<? if exists("prodcat_pattern") ?>\n AND (item_prodcat_id IN (SELECT prodcat_id\n FROM prodcat\n WHERE (prodcat_code ~ <? value("prodcat_pattern") ?>)))\n<? endif ?>\n<? if exists("salesrep_id") ?>\n AND (cohist_salesrep_id=<? value("salesrep_id") ?>)\n<? endif ?>\n )\nGROUP BY cohead_id, cust_id,cust_number,cust_custtype_id,cohist_cust_id,custtype_code,\n cust_name,cohist_ordernumber, cohist_ponumber,\n cohist_invcnumber,cohist_orderdate, cohist_invcdate\nORDER BY cohist_invcdate, cohist_orderdate;\n \n \n 221\n \n \n \n \n \n \n \n 0\n 218\n 745\n 218\n 2\n \n \n \n 10\n 38\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 5\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n sonumber\n \n \n \n \n 110\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invnumber\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_total\n \n \n \n \n 355\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shipdate\n \n \n \n \n 270\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n orddate\n \n \n \n
\n \n 16\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 103\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 21\n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n total\n \n money\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 218 ShipmentsByDate \N \n\n Shipments By Date\n ShipmentsByDate\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatDate(date(<? value("startDate") ?>)) AS startDate,\n formatDate(date(<? value("endDate") ?>)) AS endDate;\n\n \n \n detail\n SELECT shiphead_id, lineitem_id,\n CASE WHEN (level=0) THEN order_number\n ELSE item_number\n END AS order_item,\n CASE WHEN (level=0) THEN customer\n ELSE itemdescription\n END AS cust_desc,\n shiphead_order_type,\n shiphead_number, \n order_number, \n customer,\n shiphead_shipdate AS f_shipdate,\n shiphead_tracknum,\n shiphead_freight,\n freight_curr_abbr,\n linenumber,\n item_number,\n itemdescription,\n warehous_code,\n formatQty(qtyord) AS f_qtyord,\n formatQty(qtyshipped) AS f_qtyshipped\nFROM (\nSELECT shiphead_id, coitem_id AS lineitem_id, cohead_number AS sortkey1, shiphead_number AS sortkey2, 1 AS level,\n shiphead_order_type,\n shiphead_number,\n cohead_number AS order_number, \n (cust_number || '-' || cust_name) AS customer,\n shiphead_shipdate,\n shiphead_tracknum,\n shiphead_freight,\n currConcat(shiphead_freight_curr_id) AS freight_curr_abbr, \n coitem_linenumber AS linenumber, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescription,\n warehous_code,\n coitem_qtyord AS qtyord,\n SUM(shipitem_qty) AS qtyshipped\nFROM shipitem, shiphead, coitem, cohead, custinfo, itemsite, item, whsinfo\nWHERE ( (shipitem_shiphead_id=shiphead_id)\n AND (shipitem_orderitem_id=coitem_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (coitem_status <> 'X')\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (shiphead_order_id=cohead_id)\n AND (cohead_cust_id=cust_id)\n AND (shiphead_shipped)\n AND (shiphead_order_type='SO')\n<? if exists("startDate") ?>\n AND (shiphead_shipdate BETWEEN <? value("startDate") ?> and <? value("endDate") ?>)\n<? endif ?>\n<? if exists("sohead_id") ?>\n AND (cohead_id = <? value("sohead_id") ?>)\n<? endif ?>\n<? if exists("shiphead_id") ?>\n AND (shiphead_id = <? value("shiphead_id") ?>)\n<? endif ?>\n ) \nGROUP BY shiphead_id, coitem_id, shiphead_order_type, shiphead_number,\n cohead_number, cust_number, cust_name, shiphead_shipdate,\n coitem_linenumber, item_number, item_descrip1, item_descrip2,\n warehous_code, shiphead_tracknum, coitem_qtyord, \n shiphead_freight, shiphead_freight_curr_id \n<? if exists("MultiWhs") ?>\nUNION\nSELECT shiphead_id, toitem_id AS lineitem_id, tohead_number AS sortkey1, shiphead_number AS sortkey2, 1 AS level,\n shiphead_order_type,\n shiphead_number,\n tohead_number AS order_number, \n tohead_destname AS customer,\n shiphead_shipdate,\n shiphead_tracknum,\n shiphead_freight,\n currConcat(shiphead_freight_curr_id) AS freight_curr_abbr, \n toitem_linenumber AS linenumber, item_number,\n (item_descrip1 || ' ' || item_descrip2) AS itemdescription,\n tohead_srcname AS warehous_code,\n toitem_qty_ordered AS qtyord,\n SUM(shipitem_qty) AS qtyshipped\nFROM shipitem, shiphead, toitem, tohead, item \nWHERE ( (shipitem_shiphead_id=shiphead_id)\n AND (shipitem_orderitem_id=toitem_id)\n AND (toitem_status <> 'X')\n AND (toitem_item_id=item_id)\n AND (shiphead_order_id=tohead_id)\n AND (shiphead_shipped)\n AND (shiphead_order_type='TO')\n<? if exists("startDate") ?>\n AND (shiphead_shipdate BETWEEN <? value("startDate") ?> and <? value("endDate") ?>)\n<? endif ?>\n<? if exists("tohead_id") ?>\n AND (tohead_id = <? value("tohead_id") ?>)\n<? endif ?>\n<? if exists("shiphead_id") ?>\n AND (shiphead_id = <? value("shiphead_id") ?>)\n<? endif ?>\n ) \nGROUP BY shiphead_id, toitem_id, shiphead_order_type, shiphead_number,\n tohead_number, tohead_destname, shiphead_shipdate,\n toitem_linenumber, item_number, item_descrip1, item_descrip2,\n tohead_srcname, shiphead_tracknum, toitem_qty_ordered, \n shiphead_freight, shiphead_freight_curr_id \n<? endif ?>\n ) AS data\nORDER BY sortkey1, sortkey2, level, linenumber DESC;\n\n \n \n 221\n \n \n \n \n \n \n \n \n 140\n 70\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n 140\n 90\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n \n 5\n \n \n 41\n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n \n \n
\n detail\n \n cohead_number\n order_number\n \n 45\n \n \n 85\n 40\n 745\n 40\n 2\n \n \n \n \n 114\n 5\n 140\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n order_number\n \n \n \n \n 114\n 20\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n customer\n \n \n \n \n \n \n detail\n \n 33\n \n \n 240\n 0\n 140\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 520\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyord\n \n \n \n 5\n 28\n 745\n 28\n 0\n \n \n \n 5\n 0\n 95\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shiphead_number\n \n \n \n \n 600\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyshipped\n \n \n \n \n 185\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n linenumber\n \n \n \n \n 105\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_shipdate\n \n \n \n \n 440\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 240\n 15\n 455\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemdescription\n \n \n \n
\n \n 15\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 219 ShipmentsBySalesOrder \N \n\n Shipments By Sales Order\n ShipmentsBySalesOrder\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT cohead_number AS f_sonumber,\n formatDate(cohead_orderdate) AS f_orderdate,\n cohead_custponumber AS f_ponumber,\n cust_name AS f_custname,\n cntct_phone AS f_custphone\nFROM cohead, custinfo, cntct\nWHERE ((cohead_cust_id=cust_id)\n AND (cust_cntct_id=cntct_id)\n AND (cohead_id=<? value("sohead_id") ?>));\n \n \n detail\n SELECT shiphead_id,\n coitem_id,\n formatShipmentNumber(shiphead_id) AS shiphead_number,\n formatDate(shiphead_shipdate) AS f_shipdate,\n coitem_linenumber,\n item_number,\n item_descrip1,\n item_descrip2,\n uom_name,\n warehous_code,\n formatQty(coitem_qtyord) AS f_qtyord,\n formatQty(SUM(shipitem_qty)) AS f_qtyshipped\n FROM shipitem, shiphead, coitem, itemsite, item, uom, whsinfo\n WHERE ( (shipitem_shiphead_id=shiphead_id)\n AND (shiphead_order_type='SO')\n AND (shipitem_orderitem_id=coitem_id)\n AND (shiphead_shipped)\n AND (coitem_itemsite_id=itemsite_id)\n AND (coitem_status<>'X')\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (coitem_cohead_id=<? value("sohead_id") ?>)\n)\nGROUP BY shiphead_id, coitem_id,\n shiphead_shipdate, coitem_linenumber,\n item_number, item_descrip1, item_descrip2,\n uom_name, warehous_code, coitem_qtyord\nORDER BY shiphead_id DESC, coitem_linenumber DESC;\n \n \n 221\n \n \n \n \n \n 140\n 90\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_orderdate\n \n \n \n \n 140\n 155\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_ponumber\n \n \n \n \n \n \n \n \n 140\n 135\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_custphone\n \n \n \n \n 140\n 114\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_custname\n \n \n \n \n \n \n \n \n 140\n 70\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_sonumber\n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n \n \n 5\n \n \n 41\n \n \n \n \n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 51\n \n \n 240\n 15\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 185\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n coitem_linenumber\n \n \n \n \n 520\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyord\n \n \n \n \n 105\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_shipdate\n \n \n \n \n 5\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shiphead_number\n \n \n \n \n 600\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyshipped\n \n \n \n \n 240\n 30\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 385\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n \n 240\n 0\n 140\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 440\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n
\n \n 15\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 423 ShipmentsByShipment \N \n\n Shipments By Shipment\n ShipmentsByShipment\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT shiphead_number AS f_shipnumber,\n shiphead_tracknum AS f_tracknum,\n formatMoney(shiphead_freight) AS freight,\n ordernumber AS f_sonumber,\n formatDate(orderdate) AS f_orderdate,\n custponumber AS f_ponumber,\n cust_name AS f_custname,\n cntct_phone AS f_custphone\n FROM custinfo JOIN cntct ON (cust_cntct_id=cntct_id), (SELECT shiphead_number,\n shiphead_tracknum,\n shiphead_freight,\n cohead_number AS ordernumber,\n cohead_cust_id AS order_cust_id,\n cohead_orderdate AS orderdate,\n cohead_custponumber AS custponumber\n FROM cohead JOIN shiphead ON (shiphead_order_id=cohead_id AND shiphead_order_type='SO')\n WHERE(shiphead_id=<? value("shiphead_id") ?>)\n UNION\n SELECT shiphead_number,\n shiphead_tracknum,\n shiphead_freight,\n tohead_number AS ordernumber,\n NULL AS order_cust_id,\n tohead_orderdate AS orderdate,\n NULL AS custponumber\n FROM tohead JOIN shiphead ON (shiphead_order_id=tohead_id AND shiphead_order_type='TO')\n WHERE(shiphead_id=<? value("shiphead_id") ?>) \n ) AS taborder\n WHERE(order_cust_id=cust_id);\n\n \n \n detail\n shipments\n detail\n \n \n 221\n \n \n \n \n \n 140\n 90\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_orderdate\n \n \n \n \n 140\n 155\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_ponumber\n \n \n \n \n \n \n \n \n 140\n 135\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_custphone\n \n \n \n \n 140\n 114\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_custname\n \n \n \n \n \n \n \n 140\n 70\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_sonumber\n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n \n 140\n 49\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_shipnumber\n \n \n \n \n \n 540\n 129\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_tracknum\n \n \n \n \n 540\n 149\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_freight\n \n \n \n \n \n \n \n 5\n \n \n 41\n \n \n \n \n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 38\n \n \n 240\n 15\n 480\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_description\n \n \n \n \n 185\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n linenumber\n \n \n \n \n 520\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyord\n \n \n \n \n 105\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_shipdate\n \n \n \n \n 5\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shiphead_number\n \n \n \n \n 600\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyshipped\n \n \n \n \n 240\n 0\n 140\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 440\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n 5\n 33\n 745\n 33\n 0\n \n \n
\n \n 15\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 195 StandardBOL \N \n\n Standard Bill of Lading\n StandardBOL\n \n Letter\n \n 50\n 50\n 0\n 0\n \n head\n SELECT shiphead_shipvia, formatDate(shiphead_shipdate) AS shipdate,\n cust_name, cust_number, cohead_number, cohead_fob, cohead_custponumber,\n warehous_descrip, addr_line1 AS warehous_addr1, addr_line2 AS warehous_addr2, addr_line3 AS warehous_addr3, addr_city AS warehous_addr4, warehous_fob,\n cohead_shiptoname, cohead_shiptoaddress1, cohead_shiptoaddress2, cohead_shiptoaddress3,\n (cohead_shiptocity || ' ' || cohead_shiptostate || ' ' || cohead_shiptozipcode) AS shiptocitystatezip,\n cohead_shiptophone\n FROM shiphead, cohead, whsinfo, custinfo\n LEFT OUTER JOIN addr ON (warehous_addr_id=addr_id)\n WHERE ((shiphead_order_id=cohead_id)\n AND (cohead_cust_id=cust_id)\n AND (cohead_warehous_id=warehous_id)\n AND (shiphead_id=%1));\n \n \n detail\n SELECT coitem_linenumber, formatQty(SUM(shipitem_qty)) AS invqty, uom_name, roundUp(SUM(shipitem_qty) / itemuomratiobytype(item_id, 'Selling'))::integer AS shipqty,\n itemsellinguom(item_id) AS shipuom, item_number, item_descrip1, item_descrip2,\n formatQty(SUM(shipitem_qty) * item_prodweight) AS netweight,\n formatQty(SUM(shipitem_qty) * (item_prodweight + item_packweight)) AS grossweight\n FROM shipitem, coitem, itemsite, item, uom\n WHERE ((shipitem_orderitem_id=coitem_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (shipitem_shiphead_id=%1))\n GROUP BY coitem_linenumber, item_number, uom_name, shipuom,\n item_descrip1, item_descrip2, item_prodweight, item_packweight\n ORDER BY coitem_linenumber;\n \n \n \n foot\n SELECT formatQty(SUM(shipitem_qty * item_prodweight)) AS netweight,\n formatQty(SUM(shipitem_qty * (item_prodweight + item_packweight))) AS grossweight,\n CASE\n WHEN ('%3' = 'C') THEN 'X'\n ELSE ' '\n END AS collectflag,\n CASE\n WHEN ('%3' = 'C') THEN 'Therm-O-Rock East, Inc.'\n ELSE ' '\n END AS section7,\n CASE\n WHEN ('%3' = 'C') THEN 'Therm-O-Rock, East, Inc.'\n ELSE ' '\n END AS collect_name,\n CASE\n WHEN ('%3' = 'C') THEN 'Pine Street'\n ELSE ' '\n END AS collect_address1,\n CASE\n WHEN ('%3' = 'C') THEN ''\n ELSE ' '\n END AS collect_address2,\n CASE\n WHEN ('%3' = 'C') THEN 'New Eagle PA 15067'\n ELSE ' '\n END AS collect_address3\n FROM shipitem, coitem, itemsite, item\n WHERE ((shipitem_orderitem_id=coitem_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (shipitem_shiphead_id=%1));\n \n \n notes\n SELECT shiphead_notes\n FROM shiphead\n WHERE (shiphead_id=%1);\n \n \n \n 242\n \n \n 95\n 125\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n warehous_addr2\n \n \n \n \n 600\n 5\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n shipdate\n \n \n \n \n 530\n 165\n 300\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n shiptocitystatezip\n \n \n \n \n 95\n 165\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n warehous_addr4\n \n \n \n \n 530\n 145\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_shiptoaddress3\n \n \n \n \n 530\n 125\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_shiptoaddress2\n \n \n \n \n 95\n 145\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n warehous_addr3\n \n \n \n \n 95\n 85\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n warehous_descrip\n \n \n \n \n 530\n 85\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_shiptoname\n \n \n \n \n 530\n 105\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_shiptoaddress1\n \n \n \n \n 115\n 35\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n shiphead_shipvia\n \n \n \n \n 95\n 105\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n warehous_addr1\n \n \n \n \n 530\n 185\n 300\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_shiptophone\n \n \n \n
\n detail\n \n \n detail\n \n 57\n \n \n 200\n 40\n 300\n 14\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 95\n 30\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n uom_name\n \n \n \n \n 10\n 30\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n invqty\n \n \n \n \n 200\n 5\n 300\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n item_number\n \n \n \n \n 520\n 5\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n netweight\n \n \n \n \n 10\n 5\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n shipqty\n \n \n \n \n 520\n 25\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n grossweight\n \n \n \n \n 94\n 5\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n shipuom\n \n \n \n \n 200\n 25\n 300\n 14\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n item_descrip1\n \n \n \n
\n \n \n 287\n \n \n 230\n 180\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n foot\n collect_address2\n \n \n \n \n 438\n 261\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n foot\n section7\n \n \n \n \n \n 520\n 5\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n foot\n netweight\n \n \n \n \n 614\n 60\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_fob\n \n \n \n \n 20\n 180\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n foot\n collect_name\n \n \n \n \n \n 520\n 25\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n foot\n grossweight\n \n \n \n \n \n 230\n 200\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n foot\n collect_address3\n \n \n \n \n 728\n 261\n 46\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n foot\n collectflag\n \n \n \n \n 614\n 100\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_number\n \n \n \n \n 614\n 120\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_custponumber\n \n \n \n \n 614\n 80\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cust_number\n \n \n \n \n \n 20\n 200\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n foot\n collect_address1\n \n \n \n \n 50\n 10\n 400\n 100\n \n \n Arial\n 10\n normal\n \n \n \n \n notes\n shiphead_notes\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 446 QOHByParameterList \N \n\n Quantities on Hand by Parameter List\n QOHByParameterList\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("onlyShowPositive") ?>\n text('Only Showing Positive Quantities')\n <? elseif exists("onlyShowNegative") ?>\n text('Only Showing Negative Quantities')\n <? else ?>\n text('Showing All Quantities')\n <? endif ?>\n AS showquantities,\n <? if exists("showValue") ?>\n text('Unit Cost') AS lbl_unitcost,\n text('Value') AS lbl_value,\n text('NN Value') AS lbl_nnvalue,\n text('Cost Method') AS lbl_costmethod,\n <? else ?>\n text('') AS lbl_unitcost,\n text('') AS lbl_value,\n text('') AS lbl_nnvalue,\n text('') AS lbl_costmethod,\n <? endif ?>\n <? if exists("showValue") ?>\n <? if exists("useActualCosts") ?>\n text('Showing Actual Costs')\n <? elseif exists("useStandardCosts") ?>\n text('Showing Standard Costs')\n <? else ?>\n text('Showing Posted Costs')\n <? endif ?>\n <? else ?>\n text('')\n <? endif ?>\n AS showvalues;\n\n \n \n detail\n SELECT itemsite_id,\n detail,\n item_number,\n item_descrip1,\n item_descrip2,\n uom_name,\n warehous_code,\n formatQty(reorderlevel) AS f_reorderlevel,\n formatQty(qoh) AS f_qoh,\n CASE WHEN (NOT useDefaultLocation(itemsite_id)) THEN 'None'\n ELSE defaultLocationName(itemsite_id)\n END AS defaultlocation,\n formatQty(nonnetable) AS f_nonnetable,\n <? if exists("showValue") ?>\n formatCost(standardcost)\n <? else ?>\n text('')\n <? endif ?>\n AS f_unitcost,\n <? if exists("showValue") ?>\n formatExtPrice((standardcost * qoh))\n <? else ?>\n text('')\n <? endif ?>\n AS f_value,\n <? if exists("showValue") ?>\n CASE WHEN (itemsite_loccntrl) THEN formatExtPrice((standardcost * nonnetable))\n ELSE 'N/A'\n END\n <? else ?>\n text('')\n <? endif ?>\n AS f_nonnetvalue,\n standardcost,\n qoh,\n nonnetable,\n qoh AS r_qoh,\n nonnetable AS r_nonnetable,\n <? if exists("showValue") ?>\n (standardcost * qoh)\n <? else ?>\n 0\n <? endif ?>\n AS r_value,\n <? if exists("showValue") ?>\n CASE WHEN (itemsite_loccntrl) THEN (standardcost * nonnetable)\n ELSE 0\n END\n <? else ?>\n 0\n <? endif ?>\n AS r_nonnetvalue,\n <? if exists("showValue") ?>\n <? if exists("usePostedCosts") ?>\n CASE WHEN(itemsite_costmethod='A') THEN text('Average')\n WHEN(itemsite_costmethod='S') THEN text('Standard')\n WHEN(itemsite_costmethod='J') THEN text('Job')\n WHEN(itemsite_costmethod='N') THEN text('None')\n ELSE text('UNKNOWN')\n END\n <? else ?>\n text('')\n <? endif ?>\n <? else ?>\n text('')\n <? endif ?>\n AS f_costmethod\nFROM ( SELECT itemsite_id, itemsite_costmethod,\n item_number,\n item_descrip1, item_descrip2, itemsite_loccntrl,\n warehous_code,\n uom_name,\n CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel ELSE 0.0 END AS reorderlevel,\n itemsite_qtyonhand AS qoh,\n CASE WHEN ((itemsite_loccntrl) OR (itemsite_controlmethod IN ('L', 'S'))) THEN 1\n ELSE 0\n END AS detail,\n itemsite_nnqoh AS nonnetable,\n <? if exists("useActualCosts") ?>\n actcost(itemsite_item_id)\n <? elseif exists("useStandardCosts") ?>\n stdcost(itemsite_item_id)\n <? else ?>\n (itemsite_value / CASE WHEN(itemsite_qtyonhand=0) THEN 1 ELSE itemsite_qtyonhand END)\n <? endif ?>\n AS standardcost\n FROM itemsite, item, uom, warehous, costcat\n WHERE ((itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_costcat_id=costcat_id)\n AND (itemsite_active)\n<? if exists("classcode_id") ?>\n AND (item_classcode_id=<? value("classcode_id") ?>)\n<? endif ?>\n<? if exists("classcode_pattern") ?>\n AND (item_classcode_id IN (SELECT classcode_id\n FROM classcode\n WHERE (classcode_code ~ <? value("classcode_pattern") ?>) ) )\n<? endif ?>\n<? if exists("costcat_id") ?>\n AND (costcat_id=<? value("costcat_id") ?>)\n<? endif ?>\n<? if exists("costcat_pattern") ?>\n AND (costcat_id IN (SELECT costcat_id\n FROM costcat\n WHERE (costcat_code ~ <? value("costcat_pattern") ?>) ) )\n<? endif ?>\n<? if exists("itemgrp_id") ?>\n AND (item_id IN (SELECT itemgrpitem_item_id FROM itemgrpitem WHERE (itemgrpitem_itemgrp_id=<? value("itemgrp_id") ?>)))\n<? endif ?>\n<? if exists("itemgrp_pattern") ?>\n AND (item_id IN (SELECT itemgrpitem_item_id\n FROM itemgrpitem, itemgrp\n WHERE ( (itemgrpitem_itemgrp_id=itemgrp_id)\n AND (itemgrp_name ~ <? value("itemgrp_pattern") ?>) ) ))\n<? endif ?>\n<? if exists("onlyShowPositive") ?>\n AND (itemsite_qtyonhand > 0)\n<? elseif exists("onlyShowNegative") ?>\n AND (itemsite_qtyonhand < 0)\n<? endif ?>\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n) ) AS data\nORDER BY warehous_code, item_number;\n\n \n \n 234\n \n \n \n 590\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_value\n \n \n \n \n 509\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_unitcost\n \n \n \n \n \n 185\n 43\n 300\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n showvalues\n \n \n \n 8\n 231.167\n 748\n 231.167\n 2\n \n \n \n \n \n \n 670\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_nnvalue\n \n \n \n \n \n 10\n 43\n 300\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n showquantities\n \n \n \n \n 670\n 215\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_costmethod\n \n \n \n \n \n 10\n 58\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n \n 6\n \n \n 36\n \n \n 590\n 0\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_value\n \n \n \n \n \n 670\n 0\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_nnvalue\n \n \n \n \n 509\n 0\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_unitcost\n \n \n \n \n \n \n \n 670\n 15\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_costmethod\n \n \n \n \n \n \n 10\n 33.3333\n 750\n 33.3333\n 2\n \n \n
\n detail\n \n \n detail\n \n 51\n \n \n 265\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_reorderlevel\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 104\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 104\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 5\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 10\n 15\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n defaultlocation\n \n \n \n \n 585\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_value\n \n \n \n \n 345\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qoh\n \n \n \n \n 104\n 15\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_nonnetvalue\n \n \n \n \n 670\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_costmethod\n \n \n \n \n 505\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_unitcost\n \n \n \n \n 425\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_nonnetable\n \n \n \n
\n \n 16\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 16\n \n \n 425\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n r_nonnetable\n \n %.02f\n \n \n \n \n 585\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n r_value\n \n %.02f\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n r_nonnetvalue\n \n %.02f\n \n \n \n \n 345\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n r_qoh\n \n %.02f\n \n \n \n \n
\n \N 0 2011-01-31 14:52:26.88383 418 TaxHistoryDetail \N \n\n Tax History Detail\n TaxHistoryDetail\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("showSales") ?>\n 'Yes'\n <? else ?>\n 'No'\n <? endif ?>\n AS showSales,\n <? if exists("showPurchases") ?>\n 'Yes'\n <? else ?>\n 'No'\n <? endif ?>\n AS showPurchases,\n <? if exists("groupProper") ?>\n <? value("groupProper") ?> || '=' || <? value("selection") ?>\n <? else ?>\n 'All' \n <? endif ?>\n AS selection,\n <? if exists("distDate") ?>\n text('Distribution Date')\n <? else ?>\n text('Document Date')\n <? endif ?>\n AS basis,\n formatDate(<? value("startDate") ?>) AS startdate,\n formatDate(<? value("endDate") ?>) AS enddate,\n 'Tax ' || (SELECT curr_symbol \n FROM curr_symbol\n WHERE curr_base) AS taxbaseLit;\n \n \n detail\n <? if exists("showSales") ?>\n------------BEGIN SALES--------------\n-- All sales tax history including memos \nSELECT \n formatDate(taxhist_distdate) AS f_distdate, \n tax_code AS tax, tax_descrip,\n COALESCE(taxtype_name,<? value("none") ?>) AS taxtype, taxtype_descrip,\n COALESCE(taxclass_code,<? value("none") ?>) AS taxclass, taxclass_descrip,\n COALESCE(taxauth_code,<? value("none") ?>) AS taxauth, taxauth_name AS taxauth_descrip,\n COALESCE(taxzone_code,<? value("none") ?>) AS taxzone, taxzone_descrip, curr_abbr, \n CASE\n WHEN (cohist_doctype != 'C') THEN\n cohist_invcnumber\n ELSE\n cohist_ordernumber\n END AS docnumber, \n <? value("sales") ?> AS source,\n CASE\n WHEN (cohist_doctype='I') THEN\n <? value("invoice") ?>\n WHEN (cohist_doctype='C') THEN\n <? value("creditmemo") ?> \n WHEN (cohist_doctype='D') THEN\n <? value("debitmemo") ?>\n ELSE\n <? value("other") ?>\n END AS doctype,\n item_number, COALESCE(item_descrip1,cohist_misc_descrip) AS description,\n CASE\n WHEN (cohist_doctype != 'C') THEN\n cohist_ordernumber \n END AS ordernumber, cohist_invcdate AS docdate,\n cohist_billtoname AS name, \n formatQty(cohist_qtyshipped) AS f_qty, \n formatSalesPrice(cohist_unitprice) AS f_unitprice, \n formatMoney(cohist_qtyshipped * cohist_unitprice) AS f_amount,\n formatMoney(taxhist_tax) AS f_taxlocal,\n taxhist_tax / taxhist_curr_rate AS taxbase,\n formatMoney(taxhist_tax / taxhist_curr_rate) AS f_taxbase\nFROM cohisttax\n JOIN cohist ON (cohist_id=taxhist_parent_id)\n JOIN taxtype ON (taxtype_id=taxhist_taxtype_id)\n JOIN tax ON (tax_id=taxhist_tax_id)\n JOIN curr_symbol ON (curr_id=taxhist_curr_id)\n LEFT OUTER JOIN taxclass ON (tax_taxclass_id=taxclass_id)\n LEFT OUTER JOIN taxauth ON (tax_taxauth_id=taxauth_id)\n LEFT OUTER JOIN taxzone ON (cohist_taxzone_id=taxzone_id)\n LEFT OUTER JOIN itemsite ON (cohist_itemsite_id=itemsite_id)\n LEFT OUTER JOIN item ON (itemsite_item_id=item_id)\n<? if exists("distDate") ?>\nWHERE ((taxhist_distdate BETWEEN <? value("startDate") ?>\n AND <? value("endDate") ?>)\n<? else ?>\nWHERE ((taxhist_docdate BETWEEN <? value("startDate") ?>\n AND <? value("endDate") ?>)\n<? endif ?>\n<? if exists("tax_id") ?>\n AND (taxhist_tax_id=<? value("tax_id") ?>)\n<? endif ?>\n<? if exists("taxtype_id") ?>\n AND (taxhist_taxtype_id=<? value("taxtype_id") ?>)\n<? endif ?>\n<? if exists("taxclass_id") ?>\n AND (taxclass_id=<? value("taxclass_id") ?>)\n<? endif ?>\n<? if exists("taxauth_id") ?>\n AND (taxauth_id=<? value("taxauth_id") ?>)\n<? endif ?>\n<? if exists("taxzone_id") ?>\n AND (taxzone_id=<? value("taxzone_id") ?>)\n<? endif ?>\n)\n<? endif ?>\n--------------END SALES--------------------\n<? if exists("showPurchases") ?>\n<? if exists("showSales") ?>\n-- Union because sales and purchase shown together\nUNION ALL\n<? endif ?>\n<? endif ?>\n------------BEGIN PURCHASE----------------\n<? if exists("showPurchases") ?>\n-- A/P Memo history\nSELECT \n formatDate(taxhist_distdate) AS f_distdate, \n tax_code AS tax, tax_descrip,\n COALESCE(taxtype_name,<? value("none") ?>) AS taxtype, taxtype_descrip,\n COALESCE(taxclass_code,<? value("none") ?>) AS taxclass, taxclass_descrip,\n COALESCE(taxauth_code,<? value("none") ?>) AS taxauth, taxauth_name AS taxauth_descrip,\n <? value("none") ?> AS taxzone,'' AS taxzone_descrip, curr_abbr, \n apopen_docnumber AS docnumber, \n <? value("purchase") ?> AS source,\n CASE\n WHEN (apopen_doctype='C') THEN\n <? value("creditmemo") ?> \n WHEN (apopen_doctype='D') THEN\n <? value("debitmemo") ?>\n ELSE\n <? value("other") ?>\n END AS doctype,\n '' AS item_number, apopen_notes AS description,\n apopen_ponumber AS ordernumber, apopen_docdate AS docdate,\n vend_name AS name, \n formatQty(1) AS f_qty, \n formatPurchPrice(apopen_amount) AS unitprice, formatMoney(apopen_amount) AS f_amount,\n formatMoney(taxhist_tax) AS f_taxlocal,\n taxhist_tax / taxhist_curr_rate AS taxbase,\n formatMoney(taxhist_tax / taxhist_curr_rate) AS f_taxbase\nFROM apopentax\n JOIN apopen ON (apopen_id=taxhist_parent_id)\n JOIN vendinfo ON (apopen_vend_id=vend_id)\n JOIN taxtype ON (taxtype_id=taxhist_taxtype_id)\n JOIN tax ON (tax_id=taxhist_tax_id)\n JOIN curr_symbol ON (curr_id=taxhist_curr_id)\n LEFT OUTER JOIN taxclass ON (tax_taxclass_id=taxclass_id)\n LEFT OUTER JOIN taxauth ON (tax_taxauth_id=taxauth_id)\n<? if exists("distDate") ?>\nWHERE ((taxhist_distdate BETWEEN <? value("startDate") ?>\n AND <? value("endDate") ?>)\n<? else ?>\nWHERE ((taxhist_docdate BETWEEN <? value("startDate") ?>\n AND <? value("endDate") ?>)\n<? endif ?>\n<? if exists("tax_id") ?>\n AND (taxhist_tax_id=<? value("tax_id") ?>)\n<? endif ?>\n<? if exists("taxtype_id") ?>\n AND (taxhist_taxtype_id=<? value("taxtype_id") ?>)\n<? endif ?>\n<? if exists("taxclass_id") ?>\n AND (taxclass_id=<? value("taxclass_id") ?>)\n<? endif ?>\n<? if exists("taxauth_id") ?>\n AND (taxauth_id=<? value("taxauth_id") ?>)\n<? endif ?>\n<? if exists("taxzone_id") ?>\n AND (false)\n<? endif ?>\n AND (taxhist_distdate IS NOT NULL)\n)\nUNION ALL\n--Voucher Header History\nSELECT \n formatDate(taxhist_distdate) AS f_distdate, \n tax_code AS tax, tax_descrip,\n COALESCE(taxtype_name,<? value("none") ?>) AS taxtype, taxtype_descrip,\n COALESCE(taxclass_code,<? value("none") ?>) AS taxclass, taxclass_descrip,\n COALESCE(taxauth_code,<? value("none") ?>) AS taxauth, taxauth_name AS taxauth_descrip,\n COALESCE(taxzone_code,<? value("none") ?>) AS taxzone, taxzone_descrip, curr_abbr, \n vohead_number AS docnumber, \n <? value("purchase") ?> AS source,\n <? value("voucher") ?> AS doctype,\n '', vohead_notes AS description,\n pohead_number AS ordernumber, vohead_docdate AS docdate,\n vend_name AS name, \n formatQty(1) AS f_qty, \n formatPurchPrice(0) AS f_unitprice, formatMoney(0) AS f_amount,\n formatMoney(taxhist_tax) AS f_taxlocal,\n taxhist_tax / taxhist_curr_rate AS taxbase,\n formatMoney(taxhist_tax / taxhist_curr_rate) AS f_taxbase\nFROM voheadtax\n JOIN vohead ON (vohead_id=taxhist_parent_id)\n LEFT OUTER JOIN pohead ON (vohead_pohead_id=pohead_id)\n JOIN vendinfo ON (vohead_vend_id=vend_id)\n JOIN taxtype ON (taxtype_id=taxhist_taxtype_id)\n JOIN tax ON (tax_id=taxhist_tax_id)\n JOIN curr_symbol ON (curr_id=taxhist_curr_id)\n LEFT OUTER JOIN taxclass ON (tax_taxclass_id=taxclass_id)\n LEFT OUTER JOIN taxauth ON (tax_taxauth_id=taxauth_id)\n LEFT OUTER JOIN taxzone ON (vohead_taxzone_id=taxzone_id)\n<? if exists("distDate") ?>\nWHERE ((taxhist_distdate BETWEEN <? value("startDate") ?>\n AND <? value("endDate") ?>)\n<? else ?>\nWHERE ((taxhist_docdate BETWEEN <? value("startDate") ?>\n AND <? value("endDate") ?>)\n<? endif ?>\n<? if exists("tax_id") ?>\n AND (taxhist_tax_id=<? value("tax_id") ?>)\n<? endif ?>\n<? if exists("taxtype_id") ?>\n AND (taxhist_taxtype_id=<? value("taxtype_id") ?>)\n<? endif ?>\n<? if exists("taxclass_id") ?>\n AND (taxclass_id=<? value("taxclass_id") ?>)\n<? endif ?>\n<? if exists("taxauth_id") ?>\n AND (taxauth_id=<? value("taxauth_id") ?>)\n<? endif ?>\n<? if exists("taxzone_id") ?>\n AND (taxzone_id=<? value("taxzone_id") ?>)\n<? endif ?>\n AND (taxhist_distdate IS NOT NULL)\n)\nUNION ALL\n--Voucher Line Item\nSELECT \n formatDate(taxhist_distdate) AS f_distdate, \n tax_code AS tax, tax_descrip,\n COALESCE(taxtype_name,<? value("none") ?>) AS taxtype, taxtype_descrip,\n COALESCE(taxclass_code,<? value("none") ?>) AS taxclass, taxclass_descrip,\n COALESCE(taxauth_code,<? value("none") ?>) AS taxauth, taxauth_name AS taxauth_descrip,\n COALESCE(taxzone_code,<? value("none") ?>) AS taxzone, taxzone_descrip, curr_abbr, \n vohead_number AS docnumber, \n <? value("purchase") ?> AS source,\n <? value("voucher") ?> AS doctype,\n COALESCE(item_number,expcat_code), COALESCE(item_descrip1,expcat_descrip) AS description,\n pohead_number AS ordernumber, vohead_docdate AS docdate,\n vend_name AS name, \n formatQty(voitem_qty) AS f_qty, \n formatPurchPrice(COALESCE(SUM(vodist_amount),0)/voitem_qty) AS unitprice, \n formatMoney(COALESCE(SUM(vodist_amount),0)) AS f_amount,\n formatMoney(taxhist_tax) AS taxlocal,\n taxhist_tax / taxhist_curr_rate AS taxbase,\n formatMoney(taxhist_tax / taxhist_curr_rate) AS f_taxbase\nFROM voitemtax\n JOIN voitem ON (voitem_id=taxhist_parent_id)\n JOIN vohead ON (vohead_id=voitem_vohead_id)\n JOIN pohead ON (vohead_pohead_id=pohead_id)\n JOIN poitem ON (voitem_poitem_id=poitem_id)\n JOIN vodist ON ((vodist_poitem_id=poitem_id)\n AND (vodist_vohead_id=vohead_id))\n JOIN vendinfo ON (vohead_vend_id=vend_id)\n JOIN taxtype ON (taxtype_id=taxhist_taxtype_id)\n JOIN tax ON (tax_id=taxhist_tax_id)\n JOIN curr_symbol ON (curr_id=taxhist_curr_id)\n LEFT OUTER JOIN taxclass ON (tax_taxclass_id=taxclass_id)\n LEFT OUTER JOIN taxauth ON (tax_taxauth_id=taxauth_id)\n LEFT OUTER JOIN taxzone ON (vohead_taxzone_id=taxzone_id)\n LEFT OUTER JOIN itemsite ON (poitem_itemsite_id=itemsite_id)\n LEFT OUTER JOIN item ON (itemsite_item_id=item_id)\n LEFT OUTER JOIN expcat ON (expcat_id=poitem_expcat_id)\n<? if exists("distDate") ?>\nWHERE ((taxhist_distdate BETWEEN <? value("startDate") ?>\n AND <? value("endDate") ?>)\n<? else ?>\nWHERE ((taxhist_docdate BETWEEN <? value("startDate") ?>\n AND <? value("endDate") ?>)\n<? endif ?>\n<? if exists("tax_id") ?>\n AND (taxhist_tax_id=<? value("tax_id") ?>)\n<? endif ?>\n<? if exists("taxtype_id") ?>\n AND (taxhist_taxtype_id=<? value("taxtype_id") ?>)\n<? endif ?>\n<? if exists("taxclass_id") ?>\n AND (taxclass_id=<? value("taxclass_id") ?>)\n<? endif ?>\n<? if exists("taxauth_id") ?>\n AND (taxauth_id=<? value("taxauth_id") ?>)\n<? endif ?>\n<? if exists("taxzone_id") ?>\n AND (taxzone_id=<? value("taxzone_id") ?>)\n<? endif ?>\n AND (taxhist_distdate IS NOT NULL)\n)\nGROUP BY taxhist_id,taxhist_distdate,tax_code,tax_descrip,\n taxtype_name,taxtype_descrip,taxclass_code,taxclass_descrip,\n taxauth_code,taxauth_descrip,taxzone,taxzone_descrip,curr_abbr,\n vohead_number,pohead_number,item_number,item_descrip1,\n vohead_curr_id,vohead_distdate,vohead_docdate,vend_name,\n expcat_code,expcat_descrip,taxhist_tax,taxhist_curr_rate,\n voitem_qty\n<? endif ?>\n-------------END PURCHASE--------------\nORDER BY docdate DESC, docnumber DESC\n\n\n \n \n 221\n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n 460.577\n 137.571\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n 460.577\n 116.571\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n \n 461\n 96\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n basis\n \n \n \n \n \n 141\n 137\n 230\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n selection\n \n \n \n \n 141\n 117\n 230\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n showPurchases\n \n \n \n \n \n 141\n 96\n 230\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n showSales\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 650\n 182\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n taxbaseLit\n \n \n \n \n \n 6\n \n \n 52\n \n \n 6\n 45\n 746\n 45\n 2\n \n \n \n \n \n \n \n \n \n \n \n 650\n 12\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n taxbaseLit\n \n \n \n
\n detail\n \n \n detail\n \n 37\n \n \n 200\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n tax\n \n \n \n \n 100\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n source\n \n \n \n \n 575\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n curr_abbr\n \n \n \n \n 500\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_taxlocal\n \n \n \n \n 5\n 0\n 95\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n docnumber\n \n \n \n \n 300\n 16.6\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n description\n \n \n \n \n 300\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 650\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_taxbase\n \n \n \n \n 200\n 16.6\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n docdate\n \n \n \n \n 100\n 16.6\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n doctype\n \n \n \n 6\n 33\n 746\n 33\n 1\n \n \n
\n \n 16\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 23\n \n \n 648\n 4\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n taxbase\n \n money\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 419 TaxHistorySummary \N \n\n Tax History Summary\n TaxHistorySummary\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("showSales") ?>\n 'Yes'\n <? else ?>\n 'No'\n <? endif ?>\n AS showSales,\n <? if exists("showPurchases") ?>\n 'Yes'\n <? else ?>\n 'No'\n <? endif ?>\n AS showPurchases,\n <? value("groupProper") ?> AS group,\n <? value("groupProper") ?> || ':' AS selectionLit,\n <? value("selection") ?> AS selection,\n <? if exists("distDate") ?>\n text('Distribution Date')\n <? else ?>\n text('Document Date')\n <? endif ?>\n AS basis,\n formatDate(<? value("startDate") ?>) AS startdate,\n formatDate(<? value("endDate") ?>) AS enddate;\n \n \n detail\n -----------BEGIN SUMMARY----------\nSELECT <? literal("groupBy") ?> AS group, \n <? literal("groupBy") ?>_descrip AS description, \n formatMoney(SUM(salesbase)) AS f_salesbase,\n formatMoney(SUM(freightbase)) AS f_freightbase, \n CASE WHEN (SUM(freighttax) > 0) THEN true ELSE false END AS freighttax, \n SUM(salestaxbase) AS salestaxbase,\n formatMoney(SUM(salestaxbase)) AS f_salestaxbase,\n formatMoney(SUM(purchasebase)) AS f_purchasebase,\n SUM(purchasetaxbase) * -1 AS purchasetaxbase, \n formatMoney(SUM(purchasetaxbase) * -1) AS f_purchasetaxbase, \n SUM(salestaxbase) + SUM(purchasetaxbase) AS nettaxbase,\n formatMoney(SUM(salestaxbase) + SUM(purchasetaxbase)) AS f_nettaxbase\nFROM (\n------------END SUMMARY--------------\n<? if exists("showSales") ?>\n------------BEGIN SALES--------------\n-- All sales tax history including memos \nSELECT \n taxhist_distdate, \n tax_code AS tax, tax_descrip,\n COALESCE(taxtype_name,<? value("none") ?>) AS taxtype, taxtype_descrip,\n COALESCE(taxclass_code,<? value("none") ?>) AS taxclass, taxclass_descrip,\n COALESCE(taxauth_code,<? value("none") ?>) AS taxauth, taxauth_name AS taxauth_descrip,\n COALESCE(taxzone_code,<? value("none") ?>) AS taxzone, taxzone_descrip, curr_abbr, \n CASE\n WHEN (cohist_doctype != 'C') THEN\n cohist_invcnumber\n ELSE\n cohist_ordernumber\n END AS docnumber, \n <? value("sales") ?> AS source,\n CASE\n WHEN (cohist_doctype='I') THEN\n <? value("invoice") ?>\n WHEN (cohist_doctype='C') THEN\n <? value("creditmemo") ?> \n WHEN (cohist_doctype='D') THEN\n <? value("debitmemo") ?>\n ELSE\n <? value("other") ?>\n END AS doctype,\n item_number, COALESCE(item_descrip1,cohist_misc_descrip) AS description,\n CASE\n WHEN (cohist_doctype != 'C') THEN\n cohist_ordernumber \n END AS ordernumber, cohist_invcdate AS docdate,\n cohist_billtoname AS name, \n cohist_qtyshipped AS qty, \n cohist_unitprice AS unitprice, (cohist_qtyshipped * cohist_unitprice) AS amount,\n CASE\n WHEN (cohist_misc_type IS NULL OR cohist_misc_type IN ('M','F')) THEN\n currToBase(cohist_curr_id, cohist_qtyshipped * cohist_unitprice, cohist_invcdate) \n ELSE 0\n END AS salesbase,\n CASE\n WHEN (cohist_misc_type = 'F') THEN\n currToBase(cohist_curr_id, cohist_qtyshipped * cohist_unitprice, cohist_invcdate) \n ELSE 0\n END AS freightbase,\n CASE\n WHEN (cohist_misc_type = 'F') THEN\n taxhist_tax / taxhist_curr_rate\n ELSE 0\n END AS freighttax,\n 0 AS purchasebase,\n taxhist_tax AS taxlocal,\n taxhist_tax / taxhist_curr_rate AS taxbase,\n taxhist_tax / taxhist_curr_rate AS salestaxbase,\n 0 AS purchasetaxbase\nFROM cohisttax\n JOIN cohist ON (cohist_id=taxhist_parent_id)\n JOIN taxtype ON (taxtype_id=taxhist_taxtype_id)\n JOIN tax ON (tax_id=taxhist_tax_id)\n JOIN curr_symbol ON (curr_id=taxhist_curr_id)\n LEFT OUTER JOIN taxclass ON (tax_taxclass_id=taxclass_id)\n LEFT OUTER JOIN taxauth ON (tax_taxauth_id=taxauth_id)\n LEFT OUTER JOIN taxzone ON (cohist_taxzone_id=taxzone_id)\n LEFT OUTER JOIN itemsite ON (cohist_itemsite_id=itemsite_id)\n LEFT OUTER JOIN item ON (itemsite_item_id=item_id)\n<? if exists("distDate") ?>\nWHERE ((taxhist_distdate BETWEEN <? value("startDate") ?>\n AND <? value("endDate") ?>)\n<? else ?>\nWHERE ((taxhist_docdate BETWEEN <? value("startDate") ?>\n AND <? value("endDate") ?>)\n<? endif ?>\n<? if exists("tax_id") ?>\n AND (taxhist_tax_id=<? value("tax_id") ?>)\n<? endif ?>\n<? if exists("taxtype_id") ?>\n AND (taxhist_taxtype_id=<? value("taxtype_id") ?>)\n<? endif ?>\n<? if exists("taxclass_id") ?>\n AND (taxclass_id=<? value("taxclass_id") ?>)\n<? endif ?>\n<? if exists("taxauth_id") ?>\n AND (taxauth_id=<? value("taxauth_id") ?>)\n<? endif ?>\n<? if exists("taxzone_id") ?>\n AND (taxzone_id=<? value("taxzone_id") ?>)\n<? endif ?>\n)\n<? endif ?>\n--------------END SALES--------------------\n<? if exists("showPurchases") ?>\n<? if exists("showSales") ?>\n-- Union because sales and purchase shown together\nUNION ALL\n<? endif ?>\n<? endif ?>\n------------BEGIN PURCHASE----------------\n<? if exists("showPurchases") ?>\n-- A/P Memo history\nSELECT \n taxhist_distdate, \n tax_code AS tax, tax_descrip,\n COALESCE(taxtype_name,<? value("none") ?>) AS taxtype, taxtype_descrip,\n COALESCE(taxclass_code,<? value("none") ?>) AS taxclass, taxclass_descrip,\n COALESCE(taxauth_code,<? value("none") ?>) AS taxauth, taxauth_name AS taxauth_descrip,\n <? value("none") ?> AS taxzone,'' AS taxzone_descrip, curr_abbr, \n apopen_docnumber AS docnumber, \n <? value("purchase") ?> AS source,\n CASE\n WHEN (apopen_doctype='C') THEN\n <? value("creditmemo") ?> \n WHEN (apopen_doctype='D') THEN\n <? value("debitmemo") ?>\n ELSE\n <? value("other") ?>\n END AS doctype,\n '' AS item_number, apopen_notes AS description,\n apopen_ponumber AS ordernumber, apopen_docdate AS docdate,\n vend_name AS name, \n 1 AS qty, \n apopen_amount AS unitprice, apopen_amount AS amount,\n 0 AS salesbase,\n 0 AS freightbase,\n 0 AS freighttax,\n apopen_amount / apopen_curr_rate AS purchasebase,\n taxhist_tax AS taxlocal,\n taxhist_tax / taxhist_curr_rate AS taxbase,\n 0 AS salestaxbase,\n taxhist_tax / taxhist_curr_rate AS purchasetaxbase\nFROM apopentax\n JOIN apopen ON (apopen_id=taxhist_parent_id)\n JOIN vendinfo ON (apopen_vend_id=vend_id)\n JOIN taxtype ON (taxtype_id=taxhist_taxtype_id)\n JOIN tax ON (tax_id=taxhist_tax_id)\n JOIN curr_symbol ON (curr_id=taxhist_curr_id)\n LEFT OUTER JOIN taxclass ON (tax_taxclass_id=taxclass_id)\n LEFT OUTER JOIN taxauth ON (tax_taxauth_id=taxauth_id)\n<? if exists("distDate") ?>\nWHERE ((taxhist_distdate BETWEEN <? value("startDate") ?>\n AND <? value("endDate") ?>)\n<? else ?>\nWHERE ((taxhist_docdate BETWEEN <? value("startDate") ?>\n AND <? value("endDate") ?>)\n<? endif ?>\n<? if exists("tax_id") ?>\n AND (taxhist_tax_id=<? value("tax_id") ?>)\n<? endif ?>\n<? if exists("taxtype_id") ?>\n AND (taxhist_taxtype_id=<? value("taxtype_id") ?>)\n<? endif ?>\n<? if exists("taxclass_id") ?>\n AND (taxclass_id=<? value("taxclass_id") ?>)\n<? endif ?>\n<? if exists("taxauth_id") ?>\n AND (taxauth_id=<? value("taxauth_id") ?>)\n<? endif ?>\n<? if exists("taxzone_id") ?>\n AND (false)\n<? endif ?>\n AND (taxhist_distdate IS NOT NULL)\n)\nUNION ALL\n--Voucher Header History\nSELECT \n taxhist_distdate, \n tax_code AS tax, tax_descrip,\n COALESCE(taxtype_name,<? value("none") ?>) AS taxtype, taxtype_descrip,\n COALESCE(taxclass_code,<? value("none") ?>) AS taxclass, taxclass_descrip,\n COALESCE(taxauth_code,<? value("none") ?>) AS taxauth, taxauth_name AS taxauth_descrip,\n COALESCE(taxzone_code,<? value("none") ?>) AS taxzone, taxzone_descrip, curr_abbr, \n vohead_number AS docnumber, \n <? value("purchase") ?> AS source,\n <? value("voucher") ?> AS doctype,\n '', vohead_notes AS description,\n pohead_number AS ordernumber, vohead_docdate AS docdate,\n vend_name AS name, \n 1 AS qty, \n 0 AS unitprice, 0 AS amount,\n 0 AS salesbase,\n 0 AS freightbase,\n 0 AS freighttax,\n 0 AS purchasebase,\n taxhist_tax AS taxlocal,\n taxhist_tax / taxhist_curr_rate AS taxbase,\n 0 AS salestaxbase,\n taxhist_tax / taxhist_curr_rate AS purchasetaxbase\nFROM voheadtax\n JOIN vohead ON (vohead_id=taxhist_parent_id)\n LEFT OUTER JOIN pohead ON (vohead_pohead_id=pohead_id)\n JOIN vendinfo ON (vohead_vend_id=vend_id)\n JOIN taxtype ON (taxtype_id=taxhist_taxtype_id)\n JOIN tax ON (tax_id=taxhist_tax_id)\n JOIN curr_symbol ON (curr_id=taxhist_curr_id)\n LEFT OUTER JOIN taxclass ON (tax_taxclass_id=taxclass_id)\n LEFT OUTER JOIN taxauth ON (tax_taxauth_id=taxauth_id)\n LEFT OUTER JOIN taxzone ON (vohead_taxzone_id=taxzone_id)\n<? if exists("distDate") ?>\nWHERE ((taxhist_distdate BETWEEN <? value("startDate") ?>\n AND <? value("endDate") ?>)\n<? else ?>\nWHERE ((taxhist_docdate BETWEEN <? value("startDate") ?>\n AND <? value("endDate") ?>)\n<? endif ?>\n<? if exists("tax_id") ?>\n AND (taxhist_tax_id=<? value("tax_id") ?>)\n<? endif ?>\n<? if exists("taxtype_id") ?>\n AND (taxhist_taxtype_id=<? value("taxtype_id") ?>)\n<? endif ?>\n<? if exists("taxclass_id") ?>\n AND (_taxclass_id=<? value("taxclass_id") ?>)\n<? endif ?>\n<? if exists("taxauth_id") ?>\n AND (taxauth_id=<? value("taxauth_id") ?>)\n<? endif ?>\n<? if exists("taxzone_id") ?>\n AND (taxzone_id=<? value("taxzone_id") ?>)\n<? endif ?>\n AND (taxhist_distdate IS NOT NULL)\n)\nUNION ALL\n--Voucher Line Item\nSELECT \n taxhist_distdate, \n tax_code AS tax, tax_descrip,\n COALESCE(taxtype_name,<? value("none") ?>) AS taxtype, taxtype_descrip,\n COALESCE(taxclass_code,<? value("none") ?>) AS taxclass, taxclass_descrip,\n COALESCE(taxauth_code,<? value("none") ?>) AS taxauth, taxauth_name AS taxauth_descrip,\n COALESCE(taxzone_code,<? value("none") ?>) AS taxzone, taxzone_descrip, curr_abbr, \n vohead_number AS docnumber, \n <? value("purchase") ?> AS source,\n <? value("voucher") ?> AS doctype,\n COALESCE(item_number,expcat_code), COALESCE(item_descrip1,expcat_descrip) AS description,\n pohead_number AS ordernumber, vohead_docdate AS docdate,\n vend_name AS name, \n voitem_qty AS qty, \n COALESCE(SUM(vodist_amount),0)/voitem_qty AS unitprice, COALESCE(SUM(vodist_amount),0) AS amount,\n 0 AS salesbase,\n 0 AS freightbase,\n 0 AS freighttax,\n currToBase(vohead_curr_id, COALESCE(SUM(vodist_amount),0), vohead_distdate) AS purchasebase,\n taxhist_tax AS taxlocal,\n taxhist_tax / taxhist_curr_rate AS taxbase,\n 0 AS salestaxbase,\n taxhist_tax / taxhist_curr_rate AS purchasetaxbase\nFROM voitemtax\n JOIN voitem ON (voitem_id=taxhist_parent_id)\n JOIN vohead ON (vohead_id=voitem_vohead_id)\n JOIN pohead ON (vohead_pohead_id=pohead_id)\n JOIN poitem ON (voitem_poitem_id=poitem_id)\n JOIN vodist ON ((vodist_poitem_id=poitem_id)\n AND (vodist_vohead_id=vohead_id))\n JOIN vendinfo ON (vohead_vend_id=vend_id)\n JOIN taxtype ON (taxtype_id=taxhist_taxtype_id)\n JOIN tax ON (tax_id=taxhist_tax_id)\n JOIN curr_symbol ON (curr_id=taxhist_curr_id)\n LEFT OUTER JOIN taxclass ON (tax_taxclass_id=taxclass_id)\n LEFT OUTER JOIN taxauth ON (tax_taxauth_id=taxauth_id)\n LEFT OUTER JOIN taxzone ON (vohead_taxzone_id=taxzone_id)\n LEFT OUTER JOIN itemsite ON (poitem_itemsite_id=itemsite_id)\n LEFT OUTER JOIN item ON (itemsite_item_id=item_id)\n LEFT OUTER JOIN expcat ON (expcat_id=poitem_expcat_id)\n<? if exists("distDate") ?>\nWHERE ((taxhist_distdate BETWEEN <? value("startDate") ?>\n AND <? value("endDate") ?>)\n<? else ?>\nWHERE ((taxhist_docdate BETWEEN <? value("startDate") ?>\n AND <? value("endDate") ?>)\n<? endif ?>\n<? if exists("tax_id") ?>\n AND (taxhist_tax_id=<? value("tax_id") ?>)\n<? endif ?>\n<? if exists("taxtype_id") ?>\n AND (taxhist_taxtype_id=<? value("taxtype_id") ?>)\n<? endif ?>\n<? if exists("taxclass_id") ?>\n AND (taxclass_id=<? value("taxclass_id") ?>)\n<? endif ?>\n<? if exists("taxauth_id") ?>\n AND (taxauth_id=<? value("taxauth_id") ?>)\n<? endif ?>\n<? if exists("taxzone_id") ?>\n AND (taxzone_id=<? value("taxzone_id") ?>)\n<? endif ?>\n AND (taxhist_distdate IS NOT NULL)\n)\nGROUP BY taxhist_id,taxhist_distdate,tax_code,tax_descrip,\n taxtype_name,taxtype_descrip,taxclass_code,taxclass_descrip,\n taxauth_code,taxauth_descrip,taxzone,taxzone_descrip,curr_abbr,\n vohead_number,pohead_number,item_number,item_descrip1,\n vohead_curr_id,vohead_distdate,vohead_docdate,vend_name,\n expcat_code,expcat_descrip,taxhist_tax,taxhist_curr_rate,\n voitem_qty\n<? endif ?>\n-------------END PURCHASE--------------\nORDER BY docdate DESC, docnumber DESC\n\n) AS data\nGROUP BY <? literal("groupBy") ?>, <? literal("groupBy") ?>_descrip\nORDER BY <? literal("groupBy") ?>\n\n\n \n \n 221\n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n 141\n 138\n 230\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n selection\n \n \n \n \n \n \n 460.577\n 137.571\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n \n 460.577\n 116.571\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n \n 461\n 96\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n basis\n \n \n \n \n \n 141\n 117\n 230\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n group\n \n \n \n \n 65.6\n 138\n 65.9\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n selectionLit\n \n \n \n \n 4\n 199\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n group\n \n \n \n \n \n \n 141\n 97\n 230\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n showPurchases\n \n \n \n \n \n 141\n 76\n 230\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n showSales\n \n \n \n \n \n \n 6\n \n \n 26\n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n \n \n \n \n 0\n 2\n 100\n 20\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n group\n \n \n \n \n
\n detail\n \n \n detail\n \n 19\n \n \n 200\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_freightbase\n \n \n \n \n 100\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_salesbase\n \n \n \n \n 550\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_purchasetaxbase\n \n \n \n \n 450\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_purchasebase\n \n \n \n \n 0\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n group\n \n \n \n \n 350\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_salestaxbase\n \n \n \n \n 300\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n freighttax\n \n \n \n \n 650\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_nettaxbase\n \n \n \n
\n \n 16\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 20\n \n \n 650\n 3\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n nettaxbase\n \n money\n \n \n \n 350\n 3\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n salestaxbase\n \n qty\n \n \n \n 551\n 3\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n purchasetaxbase\n \n money\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 449 TimePhasedBookings \N \n\n Time Phased Bookings\n TimePhasedBookings\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("byCust") ?>\n text('Customer')\n <? elseif exists("byProdcat") ?>\n text('Product Category')\n <? else ?>\n text('Item')\n <? endif ?>\n AS groupby,\n <? if exists("byCust") ?>\n text('Name')\n <? else ?>\n text('Description')\n <? endif ?>\n AS groupbyDescrip,\n <? if exists("salesDollars") ?>\n text('')\n <? else ?>\n text('UOM')\n <? endif ?>\n AS lbl_uom,\n <? if exists("inventoryUnits") ?>\n text('Qty.')\n <? elseif exists("capacityUnits") ?>\n text('Capacity')\n <? elseif exists("altCapacityUnits") ?>\n text('Alt. Capacity')\n <? elseif exists("salesDollars") ?>\n text('Sales')\n <? else ?>\n text('ERROR')\n <? endif ?>\n AS lbl_unittype; \n \n \n detail\n SELECT *, \n coalesce(unit,0) AS unit, \n<? if exists("salesDollars") ?>\n formatExtPrice(coalesce(unit,0)) AS f_unit\n<? else ?>\n formatQty(coalesce(unit,0)) AS f_unit\n<? endif ?>\nFROM\n-- Outer Table Query\n(SELECT DISTINCT\n calitem_id,\n findPeriodStart(calitem_id) AS pstart,\n findPeriodEnd(calitem_id) AS pend,\n (formatDate(findPeriodStart(calitem_id)) || '-' || formatDate(findPeriodEnd(calitem_id))) AS period,\n<? if exists("byCust") ?>\n cust_id, cust_number AS f_number, cust_name AS f_description\n<? elseif exists("byProdcat") ?>\n prodcat_id, prodcat_code AS f_number, prodcat_descrip AS f_description\n<? elseif exists("byItem") ?>\n item_id, item_number AS f_number, item_descrip1 AS f_description\n<? endif ?>\n , warehous_id, warehous_code\n<? if exists("salesDollars") ?>\n , <? value("baseCurrAbbr") ?>::text AS f_uom\n<? else ?>\n <? if exists("inventoryUnits") ?>\n , uom_name AS f_uom\n <? elseif exists("capacityUnits") ?>\n , itemcapuom(item_id) AS f_uom\n <? elseif exists("altCapacityUnits") ?>\n , itemaltcapuom(item_id) AS f_uom\n <? endif ?>\n<? endif ?>\nFROM coitem\n JOIN cohead ON (coitem_cohead_id=cohead_id)\n JOIN itemsite ON (coitem_itemsite_id=itemsite_id)\n JOIN item ON (itemsite_item_id=item_id)\n<? if exists("inventoryUnits") ?>\n JOIN uom ON (item_inv_uom_id=uom_id)\n<? endif ?>\n JOIN site() ON (itemsite_warehous_id=warehous_id)\n<? if reExists("[cC]ust") ?>\n JOIN custinfo ON (cohead_cust_id=cust_id)\n<? endif ?> \n<? if reExists("[pP]rodcat") ?>\n JOIN prodcat ON (item_prodcat_id=prodcat_id)\n<? endif ?>\n , ( SELECT rcalitem_id AS calitem_id,\n findPeriodStart(rcalitem_id) AS calitem_start,\n findPeriodEnd(rcalitem_id) AS calitem_end\n FROM rcalitem\n WHERE (rcalitem_id IN (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n )\n )\n UNION\n SELECT acalitem_id AS calitem_id,\n findPeriodStart(acalitem_id) AS calitem_start,\n findPeriodEnd(acalitem_id) AS calitem_end\n FROM acalitem\n WHERE (acalitem_id IN (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n )\n )\n ) AS calitem\nWHERE ((cohead_orderdate BETWEEN\n<? foreach("period_id_list") ?>\n <? if isfirst("period_id_list") ?>\n findPeriodStart(<? value("period_id_list") ?>)\n <? endif ?>\n <? if isLast("period_id_list") ?>\n AND findPeriodEnd(<? value("period_id_list") ?>)\n <? endif ?>\n<? endforeach ?>\n)\n AND (coitem_status != 'X')\n<? if exists("item_id") ?> \n AND (item_id=<? value("item_id") ?>)\n<? endif ?>\n<? if exists("cust_id") ?> \n AND (cust_id=<? value("cust_id") ?>)\n<? endif ?>\n<? if exists("custtype_id") ?> \n AND (cust_custtype_id=<? value("custtype_id") ?>)\n<? endif ?>\n<? if exists("custtype_pattern") ?>\n AND (cust_custtype_id IN (SELECT custtype_id \n FROM custtype \n WHERE (custtype_code ~ <? value("custtype_pattern") ?>)))\n<? endif ?>\n<? if exists("prodcat_id") ?> \n AND (item_prodcat_id=<? value("prodcat_id") ?>) \n<? endif ?>\n<? if exists("prodcat_pattern") ?>\n AND (item_prodcat_id IN (SELECT prodcat_id \n FROM prodcat \n WHERE (prodcat_code ~ <? value("prodcat_pattern") ?>)))\n<? endif ?>\n<? if exists("warehous_id") ?> \n AND(itemsite_warehous_id=<? value("warehous_id") ?>) \n<? endif ?>\n )\nORDER BY pstart, f_number, f_description, f_uom, warehous_code) list\nLEFT OUTER JOIN\n-- Bookings calcuations\n-- Loop through each period bucket to find bookings for period\n(<? foreach("period_id_list") ?>\n SELECT \n <? value("period_id_list") ?> AS calitem_id,\n warehous_id,\n<? if exists("byCust") ?>\n cust_id\n<? elseif exists("byProdcat") ?>\n prodcat_id \n<? elseif exists("byItem") ?>\n item_id\n<? endif ?>\n<? if exists("salesDollars") ?>\n , sum(round((coitem_qtyord * coitem_qty_invuomratio) * (currtobase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio), 2)) AS unit\n , <? value("baseCurrAbbr") ?>::text AS f_uom\n<? else ?>\n , sum(coitem_qtyord)\n <? if exists("capacityUnits") ?>\n * itemcapinvrat(item_id)\n <? elseif exists("altCapacityUnits") ?>\n * itemaltcapinvrat(item_id)\n <? endif ?>\n AS unit\n <? if exists("inventoryUnits") ?>\n , uom_name AS f_uom\n <? elseif exists("capacityUnits") ?>\n , itemcapuom(item_id) AS f_uom\n <? elseif exists("altCapacityUnits") ?>\n , itemaltcapuom(item_id) AS f_uom\n <? endif ?>\n<? endif ?>\n FROM coitem\n JOIN cohead ON (coitem_cohead_id=cohead_id)\n JOIN itemsite ON (coitem_itemsite_id=itemsite_id)\n JOIN item ON (itemsite_item_id=item_id)\n<? if exists("inventoryUnits") ?>\n JOIN uom ON (item_inv_uom_id=uom_id)\n<? endif ?>\n JOIN site() ON (itemsite_warehous_id=warehous_id)\n<? if reExists("[cC]ust") ?>\n JOIN custinfo ON (cohead_cust_id=cust_id)\n<? endif ?> \n<? if reExists("[pP]rodcat") ?>\n JOIN prodcat ON (item_prodcat_id=prodcat_id)\n<? endif ?>\n WHERE ((cohead_orderdate BETWEEN findPeriodStart(<? value("period_id_list") ?>) AND findPeriodEnd(<? value("period_id_list") ?>))\n AND (coitem_status != 'X')\n<? if exists("item_id") ?> \n AND (item_id=<? value("item_id") ?>)\n<? endif ?>\n<? if exists("cust_id") ?> \n AND (cust_id=<? value("cust_id") ?>)\n<? endif ?>\n<? if exists("custtype_id") ?> \n AND (cust_custtype_id=<? value("custtype_id") ?>)\n<? endif ?>\n<? if exists("custtype_pattern") ?>\n AND (cust_custtype_id IN (SELECT custtype_id \n FROM custtype \n WHERE (custtype_code ~ <? value("custtype_pattern") ?>)))\n<? endif ?>\n<? if exists("prodcat_id") ?> \n AND (item_prodcat_id=<? value("prodcat_id") ?>) \n<? endif ?>\n<? if exists("prodcat_pattern") ?>\n AND (item_prodcat_id IN (SELECT prodcat_id \n FROM prodcat \n WHERE (prodcat_code ~ <? value("prodcat_pattern") ?>)))\n<? endif ?>\n<? if exists("warehous_id") ?> \n AND(itemsite_warehous_id=<? value("warehous_id") ?>) \n<? endif ?>\n )\nGROUP BY\n<? if exists("byCust") ?>\n cust_id, \n <? if exists("capacityUnits") ?>\n item_id,\n <? elseif exists("altCapacityUnits") ?>\n item_id,\n <? endif ?>\n<? elseif exists("byProdcat") ?>\n prodcat_id,\n <? if exists("capacityUnits") ?>\n item_id,\n <? elseif exists("altCapacityUnits") ?>\n item_id,\n <? endif ?>\n<? elseif exists("byItem") ?>\n item_id,\n<? endif ?>\n f_uom, warehous_id\n <? if isLast("period_id_list") ?>\n <? else ?>\nUNION\n <? endif ?>\n<? endforeach ?> \n) bookings ON\n<? if exists("byCust") ?>\n (list.cust_id=bookings.cust_id)\n<? elseif exists("byProdcat") ?>\n (list.prodcat_id=bookings.prodcat_id)\n<? elseif exists("byItem") ?>\n (list.item_id=bookings.item_id)\n<? endif ?>\n AND (list.calitem_id=bookings.calitem_id)\n AND (list.warehous_id=bookings.warehous_id)\n AND (list.f_uom=bookings.f_uom)\n \n \n 221\n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n 660\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_unittype\n \n \n \n \n 530\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_uom\n \n \n \n \n \n 220\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n groupby\n \n \n \n \n 330\n 200\n 200\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n groupbyDescrip\n \n \n \n \n 10\n 33\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 21\n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n 530\n -1\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_uom\n \n \n \n \n 660\n -1\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_unittype\n \n \n \n \n 215\n -1\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n groupby\n \n \n \n \n 330\n -1\n 200\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n groupbyDescrip\n \n \n \n
\n detail\n \n detail\n pstart\n \n 6\n \n \n 10\n 5\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n period\n \n \n \n \n 31\n \n \n 660\n 5\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n unit\n \n extprice\n \n \n \n 640\n 0\n 745\n 0\n 0\n \n \n \n \n \n \n detail\n \n 16\n \n \n 660\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_unit\n \n \n \n \n 615\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 530\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_uom\n \n \n \n \n 220\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_number\n \n \n \n \n 330\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_description\n \n \n \n
\n \n 16\n \n \n \n 95\n -1\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 690\n -1\n 51\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 199 TimePhasedDemandByPlannerCode \N \n\n Time Phased Demand By Planner Code\n TimePhasedDemandByPlannerCode\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("plancode_id") ?>\n ( SELECT (plancode_code||'-'||plancode_name)\n FROM plancode\n WHERE plancode_id=<? value("plancode_id") ?>)\n <? elseif exists("plancode_pattern") ?>\n text(<? value("plancode_pattern") ?>)\n <? else ?>\n text('All Planner Codes')\n <? endif ?>\n AS plancode,\n <? if exists("inventoryUnits") ?>\n text('Qty.')\n <? elseif exists("capacityUnits") ?>\n text('Capacity')\n <? elseif exists("altCapacityUnits") ?>\n text('Alt. Capacity')\n <? else ?>\n text('ERROR')\n <? endif ?>\n AS lbl_unittype ;\n \n \n detail\n SELECT findPeriodStart(calitem_id) AS pstart,\n findPeriodEnd(calitem_id) AS pend,\n (formatDate(findPeriodStart(calitem_id)) || '-' || formatDate(findPeriodEnd(calitem_id))) AS period,\n plancode_code,\n <? if exists("inventoryUnits") ?>\n uom_name\n <? elseif exists("capacityUnits") ?>\n itemcapuom(item_id)\n <? elseif exists("altCapacityUnits") ?>\n itemaltcapuom(item_id)\n <? else ?>\n text('')\n <? endif ?>\n AS f_uom,\n warehous_code,\n <? if exists("inventoryUnits") ?>\n formatQty(SUM(summDemand(itemsite_id, calitem_id)))\n <? elseif exists("capacityUnits") ?>\n formatQty(SUM(summDemand(itemsite_id, calitem_id) * itemcapinvrat(item_id)))\n <? elseif exists("altCapacityUnits") ?>\n formatQty(SUM(summDemand(itemsite_id, calitem_id) * itemaltcapinvrat(item_id)))\n <? else ?>\n formatQty(SUM(summDemand(itemsite_id, calitem_id)))\n <? endif ?>\n AS f_unit\n FROM itemsite, item, uom, whsinfo, plancode,\n (SELECT rcalitem_id AS calitem_id\n FROM rcalitem\n WHERE (rcalitem_id in (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n ))\n UNION\n SELECT acalitem_id as calitem_id\n FROM acalitem\n WHERE (acalitem_id in (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n ))\n ) AS calitem\n WHERE ((itemsite_warehous_id=warehous_id)\n AND (itemsite_active)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_plancode_id=plancode_id)\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("plancode_id") ?>\n AND (plancode_id=<? value("plancode_id") ?>)\n<? elseif exists("plancode_pattern") ?>\n AND (plancode_code ~ <? value("plancode_pattern") ?>)\n<? endif ?>\n )\nGROUP BY pstart, pend, period, plancode_code, warehous_code, f_uom\nORDER BY pstart, plancode_code, warehous_code, f_uom;\n \n \n 221\n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n 660\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_unittype\n \n \n \n \n 140\n 105\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n 140\n 80\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n plancode\n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n \n 660\n 0\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_unittype\n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n
\n detail\n \n detail\n pstart\n \n 6\n \n \n 10\n 5\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n period\n \n \n \n \n \n \n detail\n \n 16\n \n \n 320\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n plancode_code\n \n \n \n \n 615\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 530\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_uom\n \n \n \n \n 660\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_unit\n \n \n \n
\n \n 16\n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 690\n 0\n 51\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 251 TimePhasedOpenAPItems \N \n\n Time Phased Open A/P Items\n TimePhasedOpenAPItems\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("vend_id") ?>\n ( SELECT vend_name\n FROM vendinfo\n WHERE (vend_id=<? value("vend_id") ?>) )\n <? elseif exists("vendtype_id") ?>\n ( SELECT (vendtype_code || '-' || vendtype_descrip)\n FROM vendtype\n WHERE (vendtype_id=<? value("vendtype_id") ?>) )\n <? elseif exists("vendtype_pattern") ?>\n text(<? value("vendtype_pattern") ?>)\n <? else ?>\n text('All Vendors')\n <? endif ?>\n AS f_value,\n <? if reExists("vendtype_.*") ?>\n text('Vendor Type:')\n <? else ?>\n text('Vendor:')\n <? endif ?>\n AS f_label;\n \n \n \n detail\n SELECT pstart, pend,\n period,\n vend_number, vend_name,\n value,\n formatMoney(value) AS f_value\n FROM (\n SELECT calitem_start AS pstart,\n calitem_end AS pend,\n (formatDate(calitem_start) || '-' || formatDate(calitem_end)) AS period,\n vend_number,\n vend_name,\n openAPItemsValue(vend_id, calitem_id) AS value\n FROM vendinfo,\n ( SELECT rcalitem_id AS calitem_id,\n findPeriodStart(rcalitem_id) AS calitem_start,\n findPeriodEnd(rcalitem_id) AS calitem_end\n FROM rcalitem\n WHERE (rcalitem_id IN (\n <? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n <? endforeach ?>\n )\n )\n UNION\n SELECT acalitem_id AS calitem_id,\n findPeriodStart(acalitem_id) AS calitem_start,\n findPeriodEnd(acalitem_id) AS calitem_end\n FROM acalitem\n WHERE (acalitem_id IN (\n <? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n <? endforeach ?>\n )\n )\n ) AS calitem\n <? if exists("vend_id") ?>\n WHERE (vend_id=<? value("vend_id") ?>)\n <? elseif exists("vendtype_id") ?>\n WHERE (vend_vendtype_id=<? value("vendtype_id") ?>)\n <? elseif exists("vendtype_pattern") ?>\n WHERE (vend_vendtype_id IN (SELECT vendtype_id\n FROM vendtype\n WHERE (vendtype_code ~ <? value("vendtype_pattern") ?>) ))\n <? endif ?>\n ) AS data\n WHERE (value != 0)\nORDER BY pstart, pend, vend_number\n\n \n \n 221\n \n \n \n \n 10\n 100\n 125\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n f_label\n \n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n 140\n 100\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_value\n \n \n \n \n \n 6\n \n \n 21\n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n
\n detail\n \n detail\n pstart\n \n 6\n \n \n 10\n 5\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n period\n \n \n \n \n 31\n \n \n 645\n 10\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n value\n \n money\n \n \n 635\n 5\n 745\n 5\n 0\n \n \n \n \n \n \n detail\n \n 16\n \n \n 320\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_number\n \n \n \n \n 430\n 0\n 210\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_name\n \n \n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_value\n \n \n \n
\n \n 16\n \n \n 690\n 0\n 51\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 252 TimePhasedOpenARItems \N \n\n Time Phased Open A/R Items\n TimePhasedOpenARItems\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("cust_id") ?>\n ( SELECT cust_name\n FROM custinfo\n WHERE (cust_id=<? value("cust_id") ?>) )\n <? elseif exists("custtype_id") ?>\n ( SELECT (custtype_code || '-' || custtype_descrip)\n FROM custtype\n WHERE (custtype_id=<? value("custtype_id") ?>) )\n <? elseif exists("custgrp_id") ?>\n ( SELECT (custgrp_name || '-' || custgrp_descrip)\n\t FROM custgrp\n WHERE (custgrp_id=<? value("custgrp_id") ?>) )\n <? elseif exists("custtype_pattern") ?>\n text(<? value("custtype_pattern") ?>)\n <? else ?>\n text('All Customers')\n <? endif ?>\n AS f_value,\n <? if reExists("custtype_.*") ?>\n text('Customer Type:')\n <? elseif exists("custgrp_id") ?>\n text('Customer Group:')\n <? else ?>\n text('Customer:')\n <? endif ?>\n AS f_label;\n \n \n \n detail\n SELECT pstart, pend,\n period,\n cust_number, cust_name,\n value,\n formatMoney(value) AS f_value\n FROM (\n SELECT calitem_start AS pstart,\n calitem_end AS pend,\n (formatDate(calitem_start) || '-' || formatDate(calitem_end)) AS period,\n cust_number,\n cust_name,\n openARItemsValue(cust_id, calitem_id) AS value\n FROM custinfo LEFT OUTER JOIN custgrpitem ON (cust_id=custgrpitem_cust_id)\n LEFT OUTER JOIN custgrp ON (custgrpitem_custgrp_id=custgrp_id),\n ( SELECT rcalitem_id AS calitem_id,\n findPeriodStart(rcalitem_id) AS calitem_start,\n findPeriodEnd(rcalitem_id) AS calitem_end\n FROM rcalitem\n WHERE (rcalitem_id IN (\n <? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n <? endforeach ?>\n )\n )\n UNION\n SELECT acalitem_id AS calitem_id,\n findPeriodStart(acalitem_id) AS calitem_start,\n findPeriodEnd(acalitem_id) AS calitem_end\n FROM acalitem\n WHERE (acalitem_id IN (\n <? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n <? endforeach ?>\n )\n )\n ) AS calitem\n <? if exists("cust_id") ?>\n WHERE (cust_id=<? value("cust_id") ?>)\n <? elseif exists("custtype_id") ?>\n WHERE (cust_custtype_id=<? value("custtype_id") ?>)\n <? elseif exists("custgrp_id") ?>\n WHERE (custgrp_id=<? value("custgrp_id") ?>)\n <? elseif exists("custtype_pattern") ?>\n WHERE (cust_custtype_id IN (SELECT custtype_id\n FROM custtype\n WHERE (custtype_code ~ <? value("custtype_pattern") ?>) ))\n <? endif ?>\n ) AS data\n WHERE (value != 0)\nORDER BY pstart, pend, cust_number\n\n \n \n 222\n \n \n \n 10\n 100\n 125\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n f_label\n \n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n 140\n 100\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_value\n \n \n \n \n \n 7\n \n \n 22\n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n
\n detail\n \n detail\n pstart\n \n 7\n \n \n 10\n 5\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n period\n \n \n \n \n 27\n \n 635\n 5\n 745\n 5\n 0\n \n \n \n 645\n 5\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n value\n \n money\n \n \n \n \n \n \n detail\n \n 17\n \n \n 430\n 0\n 210\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_name\n \n \n \n \n 320\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_number\n \n \n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_value\n \n \n \n
\n \n 17\n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 690\n 0\n 51\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 320 TitleList \N \n\n Titles\n TitleList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT hnfc_code\n FROM hnfc\nORDER BY hnfc_code;\n \n \n 76\n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n 6\n \n \n 21\n \n 5\n 15\n 745\n 15\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n hnfc_code\n \n \n \n
\n \n 16\n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 253 TrialBalances \N \n\n Trial Balances\n TrialBalances\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("accnt_id") ?>\n ( SELECT (accnt_number || '-' || accnt_descrip)\n FROM accnt\n WHERE (accnt_id=<? value("accnt_id") ?>) )\n <? else ?>\n text('All Accounts')\n <? endif ?>\n AS accnt,\n <? if exists("period_id") ?>\n ( SELECT (formatDate(period_start) || '-' || formatDate(period_end))\n FROM period\n WHERE (period_id=<? value("period_id") ?>) )\n <? else ?>\n text('All Periods')\n <? endif ?>\n AS period;\n \n \n \n detail\n SELECT accnt_id,\n period_id,\n formatDate(period_start) AS f_start,\n formatDate(period_end) AS f_end,\n formatGLAccount(accnt_id) AS f_account,\n accnt_descrip,\n formatMoney(abs(trialbal_beginning)) AS f_beginning,\n CASE WHEN(trialbal_beginning>0) THEN text('CR')\n ELSE text('')\n END AS f_beginningcr,\n formatMoney(trialbal_debits) AS f_debits,\n formatMoney(trialbal_credits) AS f_credits,\n formatMoney(abs(trialbal_debits - trialbal_credits)) AS f_diff,\n CASE WHEN((trialbal_debits - trialbal_credits) < 0) THEN text('CR')\n ELSE text('')\n END AS f_diffcr,\n formatMoney(abs(trialbal_ending)) AS f_ending,\n CASE WHEN(trialbal_ending>0) THEN text('CR')\n ELSE text('')\n END AS f_endingcr\n FROM trialbal, accnt, period\n WHERE ((trialbal_accnt_id=accnt_id)\n AND (trialbal_period_id=period_id)\n<? if exists("accnt_id") ?>\n AND (trialbal_accnt_id=<? value("accnt_id") ?>)\n<? endif ?>\n<? if exists("period_id") ?>\n AND (period_id=<? value("period_id") ?>)\n<? endif ?>\n<? if not exists("showZero") ?>\n AND (abs(trialbal_beginning)+abs(trialbal_ending)+abs(trialbal_debits)+abs(trialbal_credits) > 0) \n<? endif ?>\n )\nORDER BY period_start, formatGLAccount(accnt_id);\n \n \n total\n SELECT formatMoney(abs(beginning)) AS f_beginning,\n CASE WHEN(beginning<0) THEN text('CR')\n ELSE text('')\n END AS f_beginningcr,\n formatMoney(debits) AS f_debits,\n formatMoney(credits) AS f_credits,\n formatMoney(abs(debits - credits)) AS f_diff,\n CASE WHEN((debits - credits) < 0) THEN text('CR')\n ELSE text('')\n END AS f_diffcr,\n formatMoney(abs(ending)) AS f_ending,\n CASE WHEN(ending<0) THEN text('CR')\n ELSE text('')\n END AS f_endingcr\n FROM ( SELECT SUM(trialbal_beginning*-1) AS beginning,\n SUM(trialbal_debits) AS debits,\n SUM(trialbal_credits) AS credits,\n SUM(trialbal_ending*-1) AS ending\n FROM trialbal, accnt, period\n WHERE ((trialbal_accnt_id=accnt_id)\n AND (trialbal_period_id=period_id)\n<? if exists("accnt_id") ?>\n AND (trialbal_accnt_id=<? value("accnt_id") ?>)\n<? endif ?>\n<? if exists("period_id") ?>\n AND (period_id=<? value("period_id") ?>)\n<? endif ?>\n )\n ) AS data;\n \n \n 191\n \n \n \n \n \n \n \n \n \n 5\n 185\n 990\n 185\n 2\n \n \n \n \n \n 10\n 38\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n 5\n 30\n 990\n 30\n 2\n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 31\n \n \n 475\n 0\n 30\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_beginningcr\n \n \n \n \n 105\n 0\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_end\n \n \n \n \n 965\n 0\n 30\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_endingcr\n \n \n \n \n 510\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_debits\n \n \n \n \n 370\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_beginning\n \n \n \n \n 615\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_credits\n \n \n \n \n 200\n 15\n 140\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n accnt_descrip\n \n \n \n \n 10\n 0\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_start\n \n \n \n \n 860\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ending\n \n \n \n \n 720\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_diff\n \n \n \n \n 825\n 0\n 30\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_diffcr\n \n \n \n \n 200\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_account\n \n \n \n
\n \n 17\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 21\n \n \n 370\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n total\n f_beginning\n \n \n \n \n 720\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n total\n f_diff\n \n \n \n \n 510\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n total\n f_debits\n \n \n \n \n 615\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n total\n f_credits\n \n \n \n \n 860\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n total\n f_ending\n \n \n \n \n \n 965\n 0\n 30\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n total\n f_endingcr\n \n \n \n \n 475\n 0\n 30\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n total\n f_beginningcr\n \n \n \n \n 825\n 0\n 30\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n total\n f_diffcr\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 453 Customers \N \n\n Customers\n Customers\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n -- Group: customers\n-- Name: detail\n-- Notes: \n\nSELECT DISTINCT ON ( cust_number )\n cust_id, cust_custtype_id, \n formatBoolYN(cust_active) as f_active,\n formatAddr(bill_addr.addr_id) AS f_bill_addr,\n formatAddr(corr_addr.addr_id) AS f_corr_addr,\n bill_cntct.cntct_name AS bill_cntct_name,\n corr_cntct.cntct_name AS corr_cntct_name,\n cust_active, cust_number, cust_name,\n custtype_code,\n bill_cntct.cntct_first_name AS bill_first_name,\n bill_cntct.cntct_last_name AS bill_last_name,\n bill_cntct.cntct_phone AS bill_phone,\n bill_cntct.cntct_fax AS bill_fax,\n bill_cntct.cntct_email AS bill_email,\n bill_addr.addr_line1 AS bill_line1,\n bill_addr.addr_line2 AS bill_line2,\n bill_addr.addr_line3 AS bill_line3,\n bill_addr.addr_city AS bill_city,\n bill_addr.addr_state AS bill_state,\n bill_addr.addr_postalcode AS bill_postalcode,\n bill_addr.addr_country AS bill_country,\n corr_cntct.cntct_first_name AS corr_first_name,\n corr_cntct.cntct_last_name AS corr_last_name,\n corr_cntct.cntct_phone AS corr_phone,\n corr_cntct.cntct_fax AS corr_fax,\n corr_cntct.cntct_email AS corr_email,\n corr_addr.addr_line1 AS corr_line1,\n corr_addr.addr_line2 AS corr_line2,\n corr_addr.addr_line3 AS corr_line3,\n corr_addr.addr_city AS corr_city,\n corr_addr.addr_state AS corr_state,\n corr_addr.addr_postalcode AS corr_postalcode,\n corr_addr.addr_country AS corr_country\n<? foreach("char_id_list") ?>\n , charass_alias<? literal("char_id_list") ?>.charass_value AS char<? literal("char_id_list") ?>\n<? endforeach ?>\nFROM custinfo\n JOIN custtype ON (cust_custtype_id=custtype_id)\n LEFT OUTER JOIN cntct bill_cntct ON (cust_cntct_id=bill_cntct.cntct_id) \n LEFT OUTER JOIN addr bill_addr ON (bill_cntct.cntct_addr_id=bill_addr.addr_id)\n LEFT OUTER JOIN cntct corr_cntct ON (cust_corrcntct_id=corr_cntct.cntct_id) \n LEFT OUTER JOIN addr corr_addr ON (corr_cntct.cntct_addr_id=corr_addr.addr_id) \n<? foreach("char_id_text_list") ?>\n LEFT OUTER JOIN charass charass_alias<? literal("char_id_text_list") ?> ON ((charass_alias<? literal("char_id_text_list") ?>.charass_target_type='C') \n AND (charass_alias<? literal("char_id_text_list") ?>.charass_target_id=cust_id)\n AND (charass_alias<? literal("char_id_text_list") ?>.charass_char_id=<? value("char_id_text_list") ?>))\n LEFT OUTER JOIN char char_alias<? literal("char_id_text_list") ?> ON (charass_alias<? literal("char_id_text_list") ?>.charass_char_id=char_alias<? literal("char_id_text_list") ?>.char_id)\n<? endforeach ?>\n<? foreach("char_id_list_list") ?>\n LEFT OUTER JOIN charass charass_alias<? literal("char_id_list_list") ?> ON ((charass_alias<? literal("char_id_list_list") ?>.charass_target_type='C') \n AND (charass_alias<? literal("char_id_list_list") ?>.charass_target_id=cust_id)\n AND (charass_alias<? literal("char_id_list_list") ?>.charass_char_id=<? value("char_id_list_list") ?>))\n LEFT OUTER JOIN char char_alias<? literal("char_id_list_list") ?> ON (charass_alias<? literal("char_id_list_list") ?>.charass_char_id=char_alias<? literal("char_id_list_list") ?>.char_id)\n<? endforeach ?>\n<? foreach("char_id_date_list") ?>\n LEFT OUTER JOIN charass charass_alias<? literal("char_id_date_list") ?> ON ((charass_alias<? literal("char_id_date_list") ?>.charass_target_type='C') \n AND (charass_alias<? literal("char_id_date_list") ?>.charass_target_id=cust_id)\n AND (charass_alias<? literal("char_id_date_list") ?>.charass_char_id=<? value("char_id_date_list") ?>))\n LEFT OUTER JOIN char char_alias<? literal("char_id_date_list") ?> ON (charass_alias<? literal("char_id_date_list") ?>.charass_char_id=char_alias<? literal("char_id_date_list") ?>.char_id)\n<? endforeach ?>\nWHERE true\n<? if not exists("showInactive") ?> \n AND cust_active \n<? endif ?>\n<? if exists("search_pattern") ?>\n AND ((cust_number ~* <? value("search_pattern") ?>)\n OR (cust_name ~* <? value("search_pattern") ?>)\n OR (custtype_code ~* <? value("search_pattern") ?>)\n OR (COALESCE(bill_cntct.cntct_first_name || ' ' || bill_cntct.cntct_last_name,'') ~* <? value("search_pattern") ?>)\n OR (COALESCE(bill_cntct.cntct_phone || ' ' || bill_cntct.cntct_phone2 || ' ' || bill_cntct.cntct_fax, '') ~* <? value("search_pattern") ?>)\n OR (COALESCE(bill_cntct.cntct_email, '') ~* <? value("search_pattern") ?>)\n OR (COALESCE(bill_addr.addr_line1 || ' ' || bill_addr.addr_line2 || ' ' || bill_addr.addr_line3,'') ~* <? value("search_pattern") ?>)\n OR (COALESCE(bill_addr.addr_city,'') ~* <? value("search_pattern") ?>)\n OR (COALESCE(bill_addr.addr_state,'') ~* <? value("search_pattern") ?>)\n OR (COALESCE(bill_addr.addr_postalcode,'') ~* <? value("search_pattern") ?>)\n OR (COALESCE(bill_addr.addr_country,'') ~* <? value("search_pattern") ?>)\n OR (COALESCE(corr_cntct.cntct_first_name || ' ' || corr_cntct.cntct_last_name,'') ~* <? value("search_pattern") ?>)\n OR (COALESCE(corr_cntct.cntct_phone || ' ' || corr_cntct.cntct_phone2 || ' ' || corr_cntct.cntct_fax, '') ~* <? value("search_pattern") ?>)\n OR (COALESCE(corr_cntct.cntct_email, '') ~* <? value("search_pattern") ?>)\n OR (COALESCE(corr_addr.addr_line1 || ' ' || corr_addr.addr_line2 || ' ' || corr_addr.addr_line3,'') ~* <? value("search_pattern") ?>)\n OR (COALESCE(corr_addr.addr_city,'') ~* <? value("search_pattern") ?>)\n OR (COALESCE(corr_addr.addr_state,'') ~* <? value("search_pattern") ?>)\n OR (COALESCE(corr_addr.addr_postalcode,'') ~* <? value("search_pattern") ?>)\n OR (COALESCE(corr_addr.addr_country,'') ~* <? value("search_pattern") ?>))\n<? endif ?>\n<? if exists("cust_number_pattern") ?>\n AND (cust_number ~* <? value("cust_number_pattern") ?>)\n<? endif ?>\n<? if exists("cust_name_pattern") ?>\n AND (cust_name ~* <? value("cust_name_pattern") ?>)\n<? endif ?>\n<? if exists("custtype_code_pattern") ?>\n AND (custtype_code ~* <? value("custtype_code_pattern") ?>)\n<? endif ?>\n<? if exists("cntct_name_pattern") ?>\n AND (COALESCE(bill_cntct.cntct_first_name || ' ' || bill_cntct.cntct_last_name, '') ~* <? value("cntct_name_pattern") ?> \n OR COALESCE(corr_cntct.cntct_first_name || ' ' || corr_cntct.cntct_last_name, '') ~* <? value("cntct_name_pattern") ?>)\n<? endif ?>\n<? if exists("cntct_phone_pattern") ?>\n AND (COALESCE(bill_cntct.cntct_phone || ' ' || bill_cntct.cntct_phone2 || ' ' || bill_cntct.cntct_fax,'') ~* <? value("cntct_phone_pattern") ?>\n OR COALESCE(corr_cntct.cntct_phone || ' ' || corr_cntct.cntct_phone2 || ' ' || corr_cntct.cntct_fax,'') ~* <? value("cntct_phone_pattern") ?>)\n<? endif ?>\n<? if exists("cntct_email_pattern") ?>\n AND (COALESCE(bill_cntct.cntct_email,'') ~* <? value("cntct_email_pattern") ?>\n OR COALESCE(corr_cntct.cntct_email,'') ~* <? value("cntct_email_pattern") ?>)\n<? endif ?>\n<? if exists("addr_street_pattern") ?>\n AND (COALESCE(bill_addr.addr_line1 || ' ' || bill_addr.addr_line2 || ' ' || bill_addr.addr_line3,'') ~* <? value("addr_street_pattern") ?>\n OR COALESCE(corr_addr.addr_line1 || ' ' || corr_addr.addr_line2 || ' ' || corr_addr.addr_line3,'') ~* <? value("addr_street_pattern") ?>)\n<? endif ?>\n<? if exists("addr_city_pattern") ?>\n AND (COALESCE(bill_addr.addr_city,'') ~* <? value("addr_city_pattern") ?>\n OR COALESCE(corr_addr.addr_city,'') ~* <? value("addr_city_pattern") ?>)\n<? endif ?>\n<? if exists("addr_state_pattern") ?>\n AND (COALESCE(bill_addr.addr_state,'') ~* <? value("addr_state_pattern") ?>\n OR COALESCE(corr_addr.addr_state,'') ~* <? value("addr_state_pattern") ?>)\n<? endif ?>\n<? if exists("addr_postalcode_pattern") ?>\n AND (COALESCE(bill_addr.addr_postalcode,'') ~* <? value("addr_postalcode_pattern") ?>\n OR COALESCE(corr_addr.addr_postalcode,'') ~* <? value("addr_postalcode_pattern") ?>)\n<? endif ?>\n<? if exists("addr_country_pattern") ?>\n AND (COALESCE(bill_addr.addr_country,'') ~* <? value("addr_country_pattern") ?>\n OR COALESCE(corr_addr.addr_country,'') ~* <? value("addr_country_pattern") ?>)\n<? endif ?>\n<? literal("charClause") ?>\nORDER BY cust_number; \n \n \n 146\n \n \n 5\n 140\n 745\n 140\n 2\n \n \n \n \n \n \n \n 5\n 33\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 67\n \n \n 50\n 2\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_number\n \n \n \n \n 5\n 2\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_active\n \n \n \n \n 480\n 2\n 250\n 15\n \n 0\n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_bill_addr\n \n \n \n \n 155\n 17\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n bill_cntct_name\n \n \n \n \n 155\n 32\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n bill_phone\n \n \n \n \n 155\n 47\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n bill_email\n \n \n \n \n \n \n \n 365\n 2\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n custtype_code\n \n \n \n \n 155\n 2\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_name\n \n \n \n
\n \n 16\n \n \n 105\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 165 DeliveryDateVariancesByItem \N \n\n Delivery Date Variances By Item\n DeliveryDateVariancesByItem\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number, item_descrip1,\n item_descrip2, uom_name,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("warehous_id") ?>\n (SELECT warehous_code FROM whsinfo WHERE warehous_id=<? value("warehous_id") ?>)\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("agentUsername") ?>\n TEXT(<? value("agentUsername") ?>)\n <? else ?>\n TEXT('All Agents')\n <? endif ?>\n AS agentUsername\n FROM item JOIN uom ON (item_inv_uom_id=uom_id)\n WHERE (item_id=<? value("item_id") ?>);\n \n \n detail\n poDeliveryDateVariances\n detail\n \n \n 185\n \n \n 310\n 47\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n uom_name\n \n \n \n \n \n \n \n \n 95\n 67\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n \n \n \n \n \n 95\n 47\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n 95\n 84\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n 95\n 109\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n 5\n 182\n 745\n 182\n 2\n \n \n \n 550\n 47\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n \n 95\n 129\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n agentUsername\n \n \n \n \n 550\n 67\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n \n \n \n 6\n \n \n 39\n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 32\n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_recv_date\n \n \n \n \n 195\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n venditemnumber\n \n \n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n argd_duedate\n \n \n \n 7\n 31\n 747\n 31\n 0\n \n \n \n 60\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_name\n \n \n \n \n 195\n 15\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n venditemdescrip\n \n \n \n \n 5\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n recv_order_number\n \n \n \n \n 492\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qty\n \n \n \n \n 493\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n real_leadtime\n \n \n \n \n 665\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n orderdate\n \n \n \n \n 581\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n release_duedate\n \n \n \n
\n \n 16\n \n \n \n 102\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 164 DeliveryDateVariancesByVendor \N \n\n Delivery Date Variances By Vendor\n DeliveryDateVariancesByVendor\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT vend_name,\n vend_number,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("warehous_id") ?>\n (SELECT warehous_code FROM whsinfo WHERE warehous_id=<? value("warehous_id") ?>)\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("agentUsername") ?>\n TEXT(<? value("agentUsername" ?>)\n <? else ?>\n TEXT('All Agents')\n <? endif ?>\n AS purchagent\n FROM vendinfo\n WHERE (vend_id=<? value("vend_id") ?>);\n \n \n detail\n poDeliveryDateVariances\n detail\n \n \n 171\n \n \n 550\n 69\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n 95\n 110\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n purchagent\n \n \n \n \n 95\n 65\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n vend_name\n \n \n \n \n \n \n \n \n \n \n 95\n 90\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n 550\n 49\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n 95\n 45\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n vend_number\n \n \n \n \n \n \n \n \n \n 1\n 168\n 741\n 168\n 2\n \n \n \n \n \n \n 4\n -1\n 744\n -1\n 2\n \n \n \n \n 1\n \n \n 35\n \n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 31\n \n \n 578\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qty\n \n \n \n \n 62\n 14\n 247\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n venditemdescrip\n \n \n \n \n 495\n 1\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n argd_duedate\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_recv_date\n \n \n \n \n 319\n 0\n 162\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n venditemnumber\n \n \n \n 5\n 30\n 745\n 30\n 0\n \n \n \n 5\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n recv_order_number\n \n \n \n \n 495\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n release_duedate\n \n \n \n \n 578\n 14\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n real_leadtime\n \n \n \n \n 665\n 14\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n orderdate\n \n \n \n \n 62\n 0\n 247\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemnumber\n \n \n \n
\n \n 16\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 103\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 283 APAging \N \n\n AP 30 60 90 Aging\n APAging\n Enhanced AP Aging - Uses 30-60-90 columns - User provides Relative Date - all amounts in base currency based on Document Date.\n \n Date Relative to Today\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT \n\tapaging_docdate,\n\tapaging_duedate,\n\tapaging_ponumber,\n\tapaging_docnumber,\n apaging_invcnumber,\n\tapaging_doctype,\n\tapaging_vend_id,\n\tapaging_vend_number,\n\tapaging_vend_name,\n\tapaging_vend_vendtype_id,\n\tapaging_vendtype_code,\n\tapaging_terms_descrip,\n\tformatMoney(apaging_apopen_amount) AS apaging_apopen_amount,\n\tapaging_cur_val, formatMoney(apaging_cur_val) AS apaging_cur_amt,\n\tapaging_thirty_val,formatMoney(apaging_thirty_val) AS apaging_thirty_amt,\n\tapaging_sixty_val, formatMoney(apaging_sixty_val) AS apaging_sixty_amt,\n\tapaging_ninety_val,formatMoney(apaging_ninety_val) AS apaging_ninety_amt,\n\tapaging_plus_val, formatMoney(apaging_plus_val) AS apaging_plus_amt,\n\tapaging_total_val, formatMoney(apaging_total_val) AS apaging_total_amt,\n\tapaging_disc_val, formatMoney(apaging_disc_val) AS apaging_disc_amt,\n\tapaging_discdate,\n\tapaging_discdays,\n\tapaging_discprcnt\nFROM apaging(<? value("relDate") ?>, <? value("useDocDate") ?>)\n<? if exists("vend_id") ?>\n WHERE (apaging_vend_id=<? value("vend_id") ?>)\n<? elseif exists("vendtype_id") ?>\n WHERE (apaging_vend_vendtype_id=<? value("vendtype_id") ?>)\n<? elseif exists("vendtype_pattern") ?>\n WHERE (apaging_vendtype_code ~ <? value("vendtype_pattern") ?>)\n<? endif ?>;\n \n \n 77\n \n \n \n 45\n 40\n 110\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n Parameter Query\n relDate\n \n \n \n \n
\n detail\n \n Vendor\n apaging_vend_number\n \n \n 113\n \n \n \n \n \n \n \n \n \n \n \n 125\n 25\n 220\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_vend_number\n \n \n \n \n \n \n \n \n \n 0\n 105\n 1000\n 105\n 0\n \n \n \n 125\n 40\n 220\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_terms_descrip\n \n \n \n 0\n 5\n 1000\n 5\n 0\n \n \n \n \n \n \n \n 125\n 10\n 220\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_vend_name\n \n \n \n \n \n \n 96\n \n \n \n 0\n 50\n 220\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_name\n \n \n \n \n 530\n 5\n 75\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_thirty_val\n \n qty\n \n \n \n 237\n 32\n 237\n 32\n 0\n \n \n \n 450\n 5\n 75\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_cur_val\n \n qty\n \n \n \n 220\n 50\n 75\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_total_val\n \n qty\n \n \n \n 938\n 5\n 55\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_disc_val\n \n qty\n \n \n \n \n 620\n 5\n 70\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_sixty_val\n \n qty\n \n \n \n 705\n 5\n 70\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_ninety_val\n \n qty\n \n \n 0\n 0\n 1000\n 0\n 0\n \n \n \n 780\n 5\n 75\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_plus_val\n \n qty\n \n \n \n \n \n detail\n \n 18\n \n \n 860\n 0\n 70\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_discdate\n \n \n \n \n 939\n 0\n 55\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_disc_amt\n \n \n \n \n 270\n 0\n 85\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_duedate\n \n \n \n \n 20\n 0\n 80\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_invcnumber\n \n \n \n \n 0\n 0\n 15\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_doctype\n \n \n \n \n 530\n 0\n 75\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_thirty_amt\n \n \n \n \n 110\n 0\n 80\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_docnumber\n \n \n \n \n 450\n 0\n 75\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_cur_amt\n \n \n \n \n 795\n 0\n 55\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_plus_amt\n \n \n \n \n 355\n 0\n 80\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_apopen_amount\n \n \n \n \n 620\n 0\n 70\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_sixty_amt\n \n \n \n \n 705\n 0\n 70\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_ninety_amt\n \n \n \n \n 200\n 0\n 85\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_docdate\n \n \n \n
\n \n \n 102\n \n \n 220\n 35\n 75\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_total_val\n \n qty\n \n \n \n 620\n 5\n 70\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_sixty_val\n \n qty\n \n \n \n 530\n 5\n 75\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_thirty_val\n \n qty\n \n \n \n \n 450\n 5\n 75\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_cur_val\n \n qty\n \n \n \n \n \n 710\n 5\n 70\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_ninety_val\n \n qty\n \n \n \n 780\n 5\n 75\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_plus_val\n \n qty\n \n \n \n \n 942\n 5\n 55\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apaging_disc_val\n \n qty\n \n \n \n \n 515\n 80\n 42\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n page_number\n \n \n \n 1\n 2\n 1000\n 2\n 2\n \n \n \n 47\n \n \n 515\n 25\n 42\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n Enhanced AP Aging - Uses 30-60-90 columns - User provides Relative Date - all amounts in base currency based on Document Date. 0 2013-07-26 16:17:54.38447 411 APApplications \N \n\n A/P Applications\n APApplications\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("showChecks") ?>\n <? if exists("showCreditMemos") ?>\n 'Show Checks and Credit Memos'\n <? else ?>\n 'Show Checks'\n <? endif ?>\n <? elseif exists("showCreditMemos") ?>\n 'Show Credit Memos'\n <? else ?>\n ''\n <? endif ?> AS f_show,\n <? if exists("vend_id") ?>\n 'Vendor:' AS f_label, vend_number AS f_value\n <? elseif exists("vendtype_id") ?>\n 'Vendor Type:' AS f_label, vendtype_code AS f_value\n <? elseif exists("vendtype_pattern") ?>\n 'Vendor Type matches:' AS f_label,\n <? value("vendtype_pattern") ?> AS f_value\n <? else ?>\n 'Vendors:' AS f_label, 'All' AS f_value\n <? endif ?>\n<? if exists("vend_id") ?>\n FROM vendinfo\n WHERE vend_id=<? value("vend_id") ?>\n<? elseif exists("vendtype_id") ?>\n FROM vendtype\n WHERE vendtype_id=<? value("vendtype_id")\n<? endif ?>\n;\n \n \n detail\n apApplications\n detail\n \n \n 146\n \n 5\n 140\n 745\n 140\n 2\n \n \n \n 565\n 63\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n 565\n 83\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n \n \n 10\n 63\n 139\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n f_label\n \n \n \n \n 159\n 83\n 350\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_show\n \n \n \n \n \n \n \n \n 157\n 63\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_value\n \n \n \n \n \n \n 6\n \n \n 26\n \n \n \n \n \n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 5\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_number\n \n \n \n \n 620\n 0\n 65\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_amount\n \n \n \n \n 200\n 0\n 81\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_postdate\n \n \n \n \n 500\n 0\n 110\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n apapply_target_docnumber\n \n \n \n \n 700\n 0\n 45\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n currAbbr\n \n \n \n \n 340\n 0\n 110\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n apapply_source_docnumber\n \n \n \n \n 90\n 0\n 115\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_name\n \n \n \n \n 291\n 0\n 40\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apapply_source_doctype_qtdisplayrole\n \n \n \n \n 460\n 0\n 40\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n apapply_target_doctype_qtdisplayrole\n \n \n \n
\n \n 16\n \n \n \n 104\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 16\n \n \n 585\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n base_applied\n \n money\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 205 APAssignmentsMasterList \N \n\n A/P Account Assignments Master List\n APAssignmentsMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT CASE WHEN (apaccnt_vendtype_id=-1) THEN apaccnt_vendtype\n ELSE (SELECT vendtype_code FROM vendtype WHERE (vendtype_id=apaccnt_vendtype_id))\n END AS vendtypecode,\n formatGLAccount(apaccnt_ap_accnt_id) AS apaccnt,\n formatGLAccount(apaccnt_prepaid_accnt_id) AS prepaidaccnt,\n formatGLAccount(apaccnt_discount_accnt_id) AS discountaccnt\nFROM apaccnt\nORDER BY vendtypecode;\n \n \n 77\n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n \n \n \n 7\n \n \n 22\n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 10\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vendtypecode\n \n \n \n \n 120\n 0\n 175\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n apaccnt\n \n \n \n \n 320\n -1\n 190\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n prepaidaccnt\n \n \n \n \n 530\n -1\n 195\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n discountaccnt\n \n \n \n
\n \n 17\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 188 APCheck \N \n\n Sample Check Format - 3 Part - MC - Remit\n APCheck\n Sample Check Format - 3 Part - MC - Uses primary Vendor or address with names: REMIT, Remit, or remit if one exists.\n Letter\n \n 0\n 0\n 0\n 50\n \n Head\n SELECT\ncheckhead_id, checkhead_number, checkhead_for AS memo,\nformatDate(checkhead_checkdate) AS f_checkdate,\nformatMoney(checkhead_amount) AS f_amount,\nINITCAP(spellAmount(checkhead_amount, curr_id)) AS f_words,\nCASE WHEN(checkhead_void) THEN TEXT('V O I D')\n ELSE TEXT('')\nEND AS f_void,\nCASE WHEN checkhead_recip_type = 'C' THEN (SELECT cust_number\n FROM custinfo\n WHERE (cust_id=checkhead_recip_id))\n WHEN checkhead_recip_type = 'T' THEN (SELECT taxauth_code\n FROM taxauth\n WHERE (taxauth_id=checkhead_recip_id))\n WHEN checkhead_recip_type = 'V' THEN (SELECT vend_number\n FROM vendinfo\n WHERE (vend_id=checkhead_recip_id))\n ELSE 'Unknown Recipient Type'\nEND AS recip_number,\nformatAddr(CASE WHEN checkhead_recip_type = 'C' THEN\n (SELECT cntct_addr_id\n FROM cntct, custinfo\n WHERE ((cust_cntct_id=cntct_id)\n AND (cust_id=checkhead_recip_id)))\n WHEN checkhead_recip_type = 'T' THEN \n (SELECT taxauth_addr_id\n FROM taxauth\n WHERE (taxauth_id=checkhead_recip_id))\n WHEN checkhead_recip_type = 'V' THEN\n COALESCE((SELECT vendaddr_addr_id\n FROM vendaddrinfo\n WHERE ((UPPER(vendaddr_code)='REMIT')\n AND (vendaddr_vend_id=checkhead_recip_id))),\n (SELECT vend_addr_id\n FROM vendinfo\n WHERE (vend_id=checkhead_recip_id)))\n END) AS check_address,\nCASE WHEN checkhead_recip_type = 'C' THEN (SELECT cust_name\n FROM custinfo\n WHERE cust_id=checkhead_recip_id)\n WHEN checkhead_recip_type = 'T' THEN (SELECT taxauth_name\n FROM taxauth\n WHERE taxauth_id=checkhead_recip_id)\n WHEN checkhead_recip_type = 'V' THEN\n COALESCE((SELECT vendaddr_name\n FROM vendaddrinfo\n WHERE ((UPPER(vendaddr_code)='REMIT')\n AND (vendaddr_vend_id=checkhead_recip_id))),\n (SELECT vend_name\n FROM vendinfo\n WHERE (vend_id=checkhead_recip_id)))\nEND AS recip_name, \ncurr_symbol, curr_abbr, curr_name\nFROM checkhead, curr_symbol\nWHERE ((checkhead_curr_id = curr_id)\n AND (checkhead_id=<? value("checkhead_id") ?>) );\n\n \n \n TopDetail2\n SELECT --VOUCHER-------------\n 1 AS ord,\n 1 AS sequence_value,\n checkitem_invcnumber,\n checkitem_ponumber,\n formatMoney(checkitem_amount) AS f_amount,\n 'Invoice#: ' || vohead_invcnumber AS doc_number,\n formatDate(vohead_docdate) AS f_docdate,\n vohead_reference AS doc_reference,\n 'Voucher: ' || checkitem_vouchernumber AS vouchernumber,\n formatMoney(apopen_amount) AS amount,\n formatMoney(checkitem_discount) AS disc_cred\nFROM checkitem, vohead, apopen\nWHERE ((checkitem_checkhead_id= <? value("checkhead_id") ?>)\n AND (checkitem_vouchernumber = vohead_number)\n AND (apopen_docnumber = checkitem_vouchernumber)\n AND (apopen_doctype = 'V'))\n\nUNION\n\nSELECT --DEBIT MEMO -------------------------\n 2 AS ord,\n 1 AS sequence_value,\n checkitem_invcnumber,\n checkitem_ponumber,\n formatMoney(checkitem_amount) AS f_amount,\n 'Debit Memo PO#: ' || checkitem_ponumber AS doc_number,\n '' AS f_docdate,\n 'Debit Memo: ' || checkitem_vouchernumber AS doc_reference,\n checkitem_vouchernumber AS vouchernumber,\n formatMoney(apopen_amount) AS amount,\n formatMoney(checkitem_discount) AS disc_cred\nFROM checkitem, apopen\nWHERE ((checkitem_checkhead_id= <? value("checkhead_id") ?>)\n AND (checkitem_vouchernumber = apopen_docnumber)\n AND (apopen_doctype = 'D'))\n\nUNION\n\nSELECT --CREDITs--------------------------\n 3 AS ord,\n 1 AS sequence_value,\n checkitem_invcnumber,\n checkitem_ponumber,\n formatMoney(checkitem_amount) AS f_amount,\n 'Invoice#: ' || vohead_invcnumber AS doc_number,\n formatDate(vohead_docdate) AS f_docdate,\n 'Credit Applied: ' || apapply_source_doctype || ' ' ||\n apapply_source_docnumber AS doc_reference,\n 'Voucher ' || checkitem_vouchernumber AS vouchernumber,\n '' AS amount,\n formatMoney((apapply_amount)) AS disc_cred\nFROM checkitem, vohead, apapply\nWHERE ((checkitem_checkhead_id=<? value("checkhead_id") ?>)\n AND (checkitem_vouchernumber = vohead_number)\n AND (apapply_target_docnumber = checkitem_vouchernumber ))\n\nUNION \n\nSELECT --NON-VENDOR-----------------------\n 4 AS ord,\n 1 AS sequence_value,\n checkitem_invcnumber,\n checkitem_ponumber,\n formatMoney(checkitem_amount) AS f_amount,\n checkitem_invcnumber AS doc_number,\n formatDate(checkitem_docdate) AS f_docdate,\n '' AS doc_reference,\n '' AS vouchernumber,\n '' AS amount,\n '' AS disc_cred\nFROM checkhead LEFT OUTER JOIN\n checkitem ON (checkitem_checkhead_id=checkhead_id)\nWHERE ((checkhead_id=<? value("checkhead_id") ?>) \n AND (checkhead_recip_type != 'V'))\n\nUNION \n\nSELECT --BLANK LINES FOR SPACING------------------\n 5 AS ord,\n sequence_value,\n '' AS checkkitem_invcnumber,\n '' AS checkitem_ponumber,\n '' AS f_amount,\n '' AS vohead_invcnumber,\n '' AS f_docdate,\n '' AS doc_reference,\n '' AS vouchernumber,\n '' AS amount,\n '' AS disc_cred\nFROM sequence\n\nORDER BY ord \nLIMIT 16;\n \n \n 6\n \n
\n Top Detail Header\n \n \n Head\n \n 51\n \n \n 305\n 30\n 147\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 305\n 15\n 155\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n Head\n recip_name\n \n \n \n \n 5\n 45\n 805\n 45\n 0\n \n \n 51\n 7\n 51\n 7\n 0\n \n \n \n 705\n 15\n 90\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n Head\n checkhead_number\n \n \n \n \n \n \n 494\n 15\n 104\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n Head\n recip_number\n \n \n \n \n
\n
\n Top Detail\n \n \n TopDetail2\n \n 16\n \n \n 5\n 0\n 155\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n TopDetail2\n doc_number\n \n \n \n \n 610\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n TopDetail2\n disc_cred\n \n \n \n \n 310\n 0\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n TopDetail2\n docdate\n \n \n \n \n 175\n 0\n 120\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n TopDetail2\n doc_reference\n \n \n \n \n 468\n 0\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n TopDetail2\n amount\n \n \n \n
\n
\n Top Detail Amount\n \n \n Head\n \n 36\n \n \n \n 468\n 0\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n Head\n f_amount\n \n \n \n \n \n 70\n 15\n 690\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n Head\n memo\n \n \n \n \n 395\n 0\n 55\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n Head\n curr_symbol\n \n \n \n
\n
\n Apchkitem\n \n \n Head\n \n 301\n \n \n 25\n 120\n 225\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Head\n recip_name\n \n \n \n \n 420\n 100\n 121\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Head\n f_checkdate\n \n \n \n \n 615\n 100\n 125\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Head\n f_amount\n \n \n \n \n 30\n 55\n 560\n 24\n \n \n Arial\n 12\n normal\n \n \n \n \n Head\n f_words\n \n \n \n \n 25\n 135\n 270\n 15\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n Head\n check_address\n \n \n \n \n 70\n 280\n 690\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n Head\n memo\n \n \n \n \n \n 560\n 100\n 55\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Head\n curr_symbol\n \n \n \n
\n
\n Bottom Detail Header\n \n \n Head\n \n 41\n \n \n \n \n \n 520\n 0\n 104\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n Head\n recip_number\n \n \n \n \n \n 320\n 15\n 147\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 710\n 0\n 90\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n Head\n checkhead_number\n \n \n \n 0\n 35\n 800\n 35\n 0\n \n \n \n 320\n 0\n 155\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n Head\n recip_name\n \n \n \n
\n
\n Bottom Detail\n \n \n TopDetail2\n \n 16\n \n \n 175\n 0\n 155\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n TopDetail2\n doc_reference\n \n \n \n \n 5\n 0\n 160\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n TopDetail2\n doc_number\n \n \n \n \n 468\n 0\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n TopDetail2\n amount\n \n \n \n \n 610\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n TopDetail2\n disc_cred\n \n \n \n \n 340\n 0\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n TopDetail2\n docdate\n \n \n \n
\n
\n Bottom Detail Amount\n \n \n Head\n \n 37\n \n \n 70\n 15\n 690\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n Head\n memo\n \n \n \n \n 408\n 0\n 55\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n Head\n curr_symbol\n \n \n \n \n \n \n 468\n 0\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n Head\n f_amount\n \n \n \n
\n
\n Sample Check Format - 3 Part - MC - Uses primary Vendor or address with names: REMIT, Remit, or remit if one exists. 0 2013-07-26 16:17:54.38447 254 APOpenItemsByVendor \N \n\n Open Payables\n APOpenItemsByVendor\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT \n<? if exists("vend_id") ?>\n (SELECT vend_name FROM vendinfo WHERE vend_id=<? value("vend_id") ?>)\n<? elseif exists("vendtype_id") ?>\n (SELECT vendtype_code FROM vendtype WHERE vendtype_id=<? value("vendtype_id") ?>)\n<? elseif exists("vendtype_pattern") ?>\n ('Vendor Type pattern = ' || <? value("vendtype_pattern") ?>)\n<? else ?>\n 'All Vendors'\n<? endif ?>\n AS selection,\n currConcat(baseCurrId()) AS baseCurr,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n formatDate(<? value("asofDate") ?>) AS asofDate;\n \n \n detail\n apOpenItems\n detail\n \n \n 166\n \n 5\n 160\n 745\n 160\n 2\n \n \n \n \n \n \n 550\n 108\n 100\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n asofDate\n \n \n \n \n \n \n 550\n 65\n 100\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n \n \n 550\n 83\n 100\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n \n \n 695\n 143\n 50\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n baseCurr\n \n \n \n \n \n \n 110\n 65\n 250\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n selection\n \n \n \n \n \n \n 6\n \n \n 26\n \n \n \n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n \n \n \n 695\n 4\n 50\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n baseCurr\n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 305\n 2\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_docdate\n \n \n \n \n 250\n 2\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n apopen_ponumber\n \n \n \n \n 585\n 2\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_balance\n \n \n \n \n 530\n 2\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_paid\n \n \n \n \n 5\n 2\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_doctype\n \n \n \n \n 390\n 2\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_duedate\n \n \n \n \n 475\n 2\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_amount\n \n \n \n \n 75\n 2\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n apopen_docnumber\n \n \n \n \n 695\n 2\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_base_balance\n \n \n \n \n 640\n 2\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n currAbbr\n \n \n \n \n 130\n 2\n 115\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_name\n \n \n \n
\n \n 16\n \n \n 102\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 16\n \n \n \n 642\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n base_balance\n \n qty\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 284 ARAging \N \n\n AR 30 60 90 Aging\n ARAging\n Enhanced AR Aging - Uses 30-60-90 columns - User provides Relative Date - all amounts in base currency based on Document Date.\n \n \n \n 0.05\n 0.05\n \n Letter\n \n 100\n 100\n 50\n 50\n \n detail\n SELECT \n\taraging_docdate,\n\taraging_duedate,\n\taraging_ponumber,\n\taraging_docnumber,\n\taraging_doctype,\n\taraging_cust_id,\n\taraging_cust_number,\n\taraging_cust_name,\n\taraging_cust_custtype_id,\n\taraging_custtype_code,\n\taraging_terms_descrip,\n\tformatMoney(araging_aropen_amount) AS araging_aropen_amount,\n\taraging_cur_val, formatMoney(araging_cur_val) AS araging_cur_amt,\n\taraging_thirty_val,formatMoney(araging_thirty_val) AS araging_thirty_amt,\n\taraging_sixty_val, formatMoney(araging_sixty_val) AS araging_sixty_amt,\n\taraging_ninety_val,formatMoney(araging_ninety_val) AS araging_ninety_amt,\n\taraging_plus_val, formatMoney(araging_plus_val) AS araging_plus_amt,\n\taraging_total_val, formatMoney(araging_total_val) AS araging_total_amt\nFROM araging(<? value("relDate") ?>, <? value("useDocDate") ?>)\n<? if exists("cust_id") ?>\n WHERE (araging_cust_id=<? value("cust_id") ?>)\n<? elseif exists("custtype_id") ?>\n WHERE (araging_cust_custtype_id=<? value("custtype_id") ?>)\n<? elseif exists("custgrp_id") ?>\n LEFT OUTER JOIN custgrpitem ON (araging_cust_id=custgrpitem_cust_id)\n WHERE (custgrpitem_custgrp_id=<? value("custgrp_id") ?>)\n<? elseif exists("custtype_pattern") ?>\n WHERE (araging_custtype_code ~ <? value("custtype_pattern") ?>)\n<? endif ?>;\n \n \n 81\n \n \n \n 60\n 40\n 110\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n Parameter Query\n relDate\n \n \n \n \n
\n detail\n \n Customer\n araging_cust_number\n \n \n 113\n \n \n 0\n 100\n 980\n 100\n 0\n \n \n \n \n \n \n 0\n 5\n 967\n 5\n 0\n \n \n \n 125\n 40\n 220\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_terms_descrip\n \n \n \n \n \n \n \n \n \n 125\n 25\n 220\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_cust_number\n \n \n \n \n \n \n 125\n 10\n 220\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_cust_name\n \n \n \n \n \n \n \n \n \n 111\n \n \n 825\n 5\n 70\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_ninety_val\n \n qty\n \n \n \n \n 740\n 5\n 70\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_sixty_val\n \n qty\n \n \n \n \n 250\n 50\n 75\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_total_val\n \n qty\n \n \n \n \n 570\n 5\n 75\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_cur_val\n \n qty\n \n \n \n \n 650\n 5\n 75\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_thirty_val\n \n qty\n \n \n \n \n \n 5\n 50\n 220\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n araging_cust_name\n \n \n \n 0\n 5\n 967\n 5\n 0\n \n \n \n 900\n 5\n 70\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_plus_val\n \n qty\n \n \n \n \n \n 237\n 31\n 237\n 31\n 0\n \n \n \n \n \n \n detail\n \n 18\n \n \n 740\n 0\n 70\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_sixty_amt\n \n \n \n \n 480\n 0\n 80\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_aropen_amount\n \n \n \n \n 0\n 0\n 25\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_doctype\n \n \n \n \n 40\n 0\n 61\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_docnumber\n \n \n \n \n 215\n 0\n 85\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_duedate\n \n \n \n \n 910\n 0\n 55\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_plus_amt\n \n \n \n \n 825\n 0\n 70\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_ninety_amt\n \n \n \n \n 120\n 0\n 85\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_docdate\n \n \n \n \n 340\n 0\n 61\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_ponumber\n \n \n \n \n 570\n 0\n 75\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_cur_amt\n \n \n \n \n 650\n 0\n 75\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_thirty_amt\n \n \n \n
\n \n \n 103\n \n \n \n 650\n 5\n 75\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_thirty_val\n \n qty\n \n \n \n \n 740\n 5\n 70\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_sixty_val\n \n qty\n \n \n \n \n \n \n 570\n 5\n 75\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_cur_val\n \n qty\n \n \n \n \n 910\n 5\n 55\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_plus_val\n \n qty\n \n \n \n 1\n 1\n 967\n 1\n 2\n \n \n \n 440\n 75\n 41\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 250\n 50\n 75\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_total_val\n \n qty\n \n \n \n \n \n \n 825\n 5\n 70\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n araging_ninety_val\n \n qty\n \n \n \n \n 57\n \n \n 440\n 20\n 41\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n Enhanced AR Aging - Uses 30-60-90 columns - User provides Relative Date - all amounts in base currency based on Document Date. 0 2013-07-26 16:17:54.38447 262 ARApplications \N \n\n A/R Applications\n ARApplications\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("cust_id") ?>\n (SELECT (cust_number || '-' || cust_name)\n FROM custinfo\n WHERE (cust_id=<? value("cust_id") ?>) )\n <? elseif exists("custtype_id") ?>\n (select (custtype_code||'-'||custtype_descrip)\n FROM custtype\n WHERE (custtype_id=<? value("custtype_id") ?>) )\n <? elseif exists("custtype_pattern") ?>\n text(<? value("custtype_pattern") ?>)\n <? else ?>\n text('All Customers')\n <? endif ?>\n AS f_value,\n <? if exists("custtype_id") ?>\n text('Cust. Type:')\n <? elseif exists("custtype_pattern") ?>\n text('Cust. Type Pattern:')\n <? else ?>\n text('Customer:')\n <? endif ?>\n AS f_label,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("includeCashReceipts") ?>\n <? if exists("includeCreditMemos") ?>\n text('Show Cash Receipts and Credit Memos')\n <? else ?>\n text('Show Cash Receipts')\n <? endif ?>\n <? elseif exists("includeCreditMemos") ?>\n text('Show Credit Memos')\n <? else ?>\n text('Error: No transaction type selected.')\n <? endif ?>\n AS f_show;\n \n \n detail\n SELECT arapply_id,\n formatDate(arapply_postdate) AS f_postdate,\n formatMoney(arapply_applied) AS f_applied,\n cust_number, cust_name,\n (CASE WHEN (arapply_source_doctype='C') THEN <? value("creditMemo") ?>\n WHEN (arapply_source_doctype='R') THEN <? value("cashdeposit") ?>\n WHEN (arapply_fundstype='C') THEN <? value("check") ?>\n WHEN (arapply_fundstype='T') THEN <? value("certifiedCheck") ?>\n WHEN (arapply_fundstype='M') THEN <? value("masterCard") ?>\n WHEN (arapply_fundstype='V') THEN <? value("visa") ?>\n WHEN (arapply_fundstype='A') THEN <? value("americanExpress") ?>\n WHEN (arapply_fundstype='D') THEN <? value("discoverCard") ?>\n WHEN (arapply_fundstype='R') THEN <? value("otherCreditCard") ?>\n WHEN (arapply_fundstype='K') THEN <? value("cash") ?>\n WHEN (arapply_fundstype='W') THEN <? value("wireTransfer") ?>\n WHEN (arapply_fundstype='O') THEN <? value("other") ?>\n END || ' ' ||\n CASE WHEN (arapply_source_doctype IN ('C','R')) THEN TEXT(arapply_source_docnumber)\n ELSE arapply_refnumber\n END) AS source,\n (CASE WHEN (arapply_target_doctype='D') THEN <? value("debitMemo") ?>\n WHEN (arapply_target_doctype='I') THEN <? value("invoice") ?>\n WHEN (arapply_target_doctype='K') THEN <? value("apcheck") ?>\n ELSE <? value("other") ?>\n END || ' ' ||\n TEXT(arapply_target_docnumber)) AS target,\n currConcat(arapply_curr_id) AS currAbbr,\n currtobase(arapply_curr_id,arapply_applied,arapply_postdate) AS base_applied\nFROM arapply, custinfo\nWHERE ( (arapply_cust_id=cust_id)\n AND (arapply_postdate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n AND (arapply_source_doctype IN (\n<? if exists("includeCreditMemos") ?>\n <? if exists("includeCashReceipts") ?>\n 'K', 'C', 'R'\n <? else ?>\n 'C', 'R'\n <? endif ?>\n<? else ?>\n 'K'\n<? endif ?> ))\n<? if exists("cust_id") ?>\n AND (cust_id=<? value("cust_id") ?>)\n<? elseif exists("custtype_id") ?>\n AND (cust_custtype_id=<? value("custtype_id") ?>)\n<? elseif exists("custtype_pattern") ?>\n AND (cust_custtype_id IN (SELECT custtype_id FROM custtype\n WHERE (custtype_code ~ <? value("custtype_pattern") ?>)))\n<? endif ?>\n )\nORDER BY arapply_postdate, source;\n\n \n \n 146\n \n 5\n 140\n 745\n 140\n 2\n \n \n \n 565\n 65\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n 565\n 85\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n \n \n 10\n 65\n 125\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n f_label\n \n \n \n \n 95\n 90\n 350\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_show\n \n \n \n \n \n \n \n \n 140\n 65\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_value\n \n \n \n \n \n \n 6\n \n \n 26\n \n \n \n \n \n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 5\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_number\n \n \n \n \n 620\n 0\n 65\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_applied\n \n \n \n \n 220\n 0\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_postdate\n \n \n \n \n 460\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n target\n \n \n \n \n 700\n 0\n 45\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n currAbbr\n \n \n \n \n 300\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n source\n \n \n \n \n 90\n 0\n 115\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_name\n \n \n \n
\n \n 16\n \n \n \n 104\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 16\n \n \n 585\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n base_applied\n \n qty\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 288 AROpenItems \N \n\n A/R Open Items\n AROpenItems\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT \nCASE WHEN (<? value("asofDate") ?> = endOfTime()) THEN 'Latest'\n ELSE formatDate(<? value("asofDate") ?>) END AS asOfDate,\n<? if exists("creditsOnly") ?>\n 'Credits Only' AS type,\n<? elseif exists("debitsOnly") ?>\n 'Debits Only' AS type,\n<? else ?>\n 'Debits and Credits' AS type,\n<? endif ?>\n<? if exists("cust_id") ?>\n (SELECT cust_name FROM custinfo WHERE cust_id=<? value("cust_id") ?>) AS selection,\n<? elseif exists("custtype_id") ?>\n (SELECT custtype_code FROM custtype WHERE custtype_id=<? value("custtype_id") ?>) AS selection,\n<? elseif exists("custtype_pattern") ?>\n ('Customer Type pattern = ' || <? value("custtype_pattern") ?>) AS selection,\n<? elseif exists("custgrp_id") ?>\n (SELECT custgrp_name FROM custgrp WHERE \n custgrp_id=<? value("custgrp_id") ?>) AS selection,\n<? else ?>\n 'All Customers' AS selection,\n<? endif ?>\n<? if exists("startDate") ?>\n 'Start Doc Date:' AS start_label,\n 'End Doc Date:' AS end_label,\n<? else ?>\n 'Start Due Date:' AS start_label, \n 'End Due Date:' AS end_label,\n<? endif ?>\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n currConcat(baseCurrId()) AS baseAbbr,\n<? if exists("incidentsOnly") ?>\n 'Yes' AS incidentsOnly\n<? else ?>\n 'No' AS incidentsOnly\n<? endif ?>;\n \n \n detail\n arOpenItems\n f_detail\n \n \n 178\n \n \n \n \n \n \n \n 514\n 69.7785\n 100\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n \n \n \n \n 514\n 52.6662\n 100\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n 5\n 170\n 745\n 170\n 2\n \n \n \n 410\n 52.6662\n 100\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n start_label\n \n \n \n \n 410.317\n 69.7785\n 100\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n end_label\n \n \n \n \n 141.375\n 69.7785\n 200\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n type\n \n \n \n \n 142\n 52.6662\n 250\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n selection\n \n \n \n \n 141.375\n 88.4798\n 200\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n incidentsOnly\n \n \n \n \n 514.049\n 88.4798\n 100\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n asOfDate\n \n \n \n \n \n \n \n \n \n 5\n \n \n 52\n \n \n 5\n 45\n 745\n 45\n 2\n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 18\n \n \n 350\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_duedate\n \n \n \n \n 600\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_balance\n \n \n \n \n 85\n 0\n 77\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n docnumber\n \n \n \n \n 700\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n currAbbr\n \n \n \n \n 440\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_amount\n \n \n \n \n 520\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_paid\n \n \n \n \n 5\n 0\n 78.9\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n doctype\n \n \n \n \n 270\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_docdate\n \n \n \n \n 165\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_name\n \n \n \n
\n \n 18\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 104\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 18\n \n \n 700\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n baseAbbr\n \n \n \n \n 600\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n base_balance\n \n qty\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 107 AccountNumberMasterList \N \n\n Chart of Accounts Master List\n AccountNumberMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n select accnt_company,\n accnt_profit,\n accnt_number,\n accnt_sub,\n accnt_descrip,\n accnt_comments,\n CASE WHEN(accnt_type='A') THEN text('Asset')\n WHEN(accnt_type='L') THEN text('Liability')\n WHEN(accnt_type='E') THEN text('Expense')\n WHEN(accnt_type='R') THEN text('Revenue')\n WHEN(accnt_type='Q') THEN text('Equity')\n ELSE text(accnt_type)\n END AS f_type\n from accnt\nORDER BY accnt_number, accnt_sub, accnt_profit;\n \n \n 77\n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n \n \n \n 6\n \n \n 21\n \n \n 10\n 15\n 750\n 15\n 2\n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 325\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n accnt_sub\n \n \n \n \n 220\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n accnt_number\n \n \n \n \n 115\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n accnt_profit\n \n \n \n \n 10\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n accnt_company\n \n \n \n \n 494\n 0\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n accnt_descrip\n \n \n \n \n 430\n 0\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_type\n \n \n \n
\n \n 17\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 90 WOMaterialAvailabilityByWorkOrder \N \n\n W/O Material Availability By Work Order\n WOMaterialAvailabilityByWorkOrder\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatWONumber(wo_id) AS wonumber,\n warehous_code as warehouse,\n item_number, item_descrip1, item_descrip2, uom_name,\n wo_status AS status, \n <? if exists("onlyShowShortages") ?>\n text('Only Show Shortages')\n <? elseif exists("onlyShowInsufficientInventory") ?>\n text('Only Show Insufficient Inventory')\n <? else ?>\n text('All Materials')\n <? endif ?>\n AS itemfiltertext,\n <? if exists("IndentedParentChild") ?>\n text('Indented Works Orders')\n <? elseif exists("summarizedParentChild") ?>\n text('Summarized Parent/Child Orders')\n <? else ?>\n text('Parent Order Only')\n <? endif ?>\n AS wofiltertext\n FROM wo, itemsite, item, uom, whsinfo\n WHERE ((wo_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (wo_id=<? value("wo_id") ?>) );\n \n \n detail\n SELECT *, (REPEAT(' ',(woinvav_level-1)*3) || woinvav_item_wo_number) AS itemwonumber FROM woinvavail(<? value("wo_id") ?>,\n<? if exists("IndentedParentChild") ?>\ntrue, \n <? else ?>\nfalse, \n<? endif ?>\n<? if exists("summarizedParentChild") ?>\ntrue, \n <? else ?>\nfalse, \n<? endif ?>\n<? if exists("onlyShowShortages") ?>\ntrue, \n <? else ?>\nfalse, \n<? endif ?>\n<? if exists("onlyShowInsufficientInventory") ?>\ntrue) \n <? else ?>\nfalse) \n<? endif ?>\n \n \n 236\n \n \n \n 325\n 100\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n uom_name\n \n \n \n \n \n \n 100\n 75\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n 100\n 100\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n 100\n 55\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n wonumber\n \n \n \n \n \n \n \n 5\n 229\n 745\n 229\n 2\n \n \n \n 100\n 120\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n 100\n 165\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n status\n \n \n \n \n \n \n \n \n 100\n 140\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n \n \n 325\n 55\n 365\n 18\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n itemfiltertext\n \n \n \n \n 325\n 75\n 365\n 18\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n wofiltertext\n \n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 32\n \n \n 350\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n woinvav_balance\n \n \n \n \n 270\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n woinvav_qoh\n \n \n \n \n 670\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n woinvav_totalavail\n \n \n \n \n 430\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n woinvav_allocated\n \n \n \n \n 509\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n woinvav_ordered\n \n \n \n \n 10\n 0\n 170\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemwonumber\n \n \n \n 0\n 29\n 750\n 29\n 0\n \n \n \n 190\n 15\n 555\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n woinvav_descrip\n \n \n \n \n 590\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n woinvav_woavail\n \n \n \n \n 190\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n woinvav_uomname\n \n \n \n
\n \n 16\n \n \n \n \n 695\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 311 AddressesMasterList \N \n\n Addresses Master List\n AddressesMasterList\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT * \nFROM (\nSELECT 'Contact' AS type, cntct_first_name AS first,\n cntct_last_name AS last, crmacct_number, cntct_phone AS phone,\n cntct_email AS email, cntct_fax AS fax, addr.*\nFROM addr, cntct LEFT OUTER JOIN crmacct ON (cntct_crmacct_id=crmacct_id)\nWHERE (cntct_addr_id=addr_id)\nUNION\nSELECT 'Ship-To' AS type, shipto_num AS first,\n shipto_name AS last, crmacct_number, '' AS phone,\n '' AS email, '' AS fax, addr.*\nFROM addr, shiptoinfo LEFT OUTER JOIN crmacct ON (shipto_cust_id=crmacct_cust_id\n)\nWHERE (shipto_addr_id=addr_id)\nUNION\nSELECT 'Vendor' AS type, vend_number AS first,\n vend_name AS last, crmacct_number, '' AS phone,\n '' AS email, '' AS fax, addr.*\nFROM addr, vendinfo LEFT OUTER JOIN crmacct ON (vend_id=crmacct_vend_id)\nWHERE (vend_addr_id=addr_id)\nUNION\nSELECT 'Vendor Address' AS type, vendaddr_code AS first,\n vendaddr_name AS last, crmacct_number, '' AS phone,\n '' AS email, '' AS fax, addr.*\nFROM addr, vendaddrinfo LEFT OUTER JOIN crmacct ON (vendaddr_vend_id=crmacct_vend_id)\nWHERE (vendaddr_addr_id=addr_id)\nUNION\nSELECT 'Site' AS type, warehous_code AS first,\n warehous_descrip AS last, '' AS crmacct_number, '' AS phone,\n '' AS email, '' AS fax, addr.*\nFROM addr, whsinfo\nWHERE (warehous_addr_id=addr_id)\n\nUNION\nSELECT '' AS type, '' AS first, '' AS last,\n '' AS crmacct_number, '' AS phone,\n '' AS email,\n '' AS fax, addr.*\nFROM addr\nWHERE addr_id NOT IN (\n SELECT cntct_addr_id FROM cntct WHERE (cntct_addr_id IS NOT NULL)\n UNION SELECT shipto_addr_id FROM shiptoinfo WHERE (shipto_addr_id IS NOT NULL) \n UNION SELECT vend_addr_id FROM vendinfo WHERE (vend_addr_id IS NOT NULL)\n UNION SELECT vendaddr_addr_id FROM vendaddrinfo WHERE (vendaddr_addr_id IS NOT NULL)\n UNION SELECT warehous_addr_id FROM whsinfo WHERE (warehous_addr_id IS NOT NULL))\n) data\n<? foreach("char_id_text_list") ?>\n LEFT OUTER JOIN charass charass_alias<? literal("char_id_text_list") ?> ON ((charass_alias<? literal("char_id_text_list") ?>.charass_target_type='ADDR') \n AND (charass_alias<? literal("char_id_text_list") ?>.charass_target_id=addr_id)\n AND (charass_alias<? literal("char_id_text_list") ?>.charass_char_id=<? value("char_id_text_list") ?>))\n LEFT OUTER JOIN char char_alias<? literal("char_id_text_list") ?> ON (charass_alias<? literal("char_id_text_list") ?>.charass_char_id=char_alias<? literal("char_id_text_list") ?>.char_id)\n<? endforeach ?>\n<? foreach("char_id_list_list") ?>\n LEFT OUTER JOIN charass charass_alias<? literal("char_id_list_list") ?> ON ((charass_alias<? literal("char_id_list_list") ?>.charass_target_type='ADDR') \n AND (charass_alias<? literal("char_id_list_list") ?>.charass_target_id=addr_id)\n AND (charass_alias<? literal("char_id_list_list") ?>.charass_char_id=<? value("char_id_list_list") ?>))\n LEFT OUTER JOIN char char_alias<? literal("char_id_list_list") ?> ON (charass_alias<? literal("char_id_list_list") ?>.charass_char_id=char_alias<? literal("char_id_list_list") ?>.char_id)\n<? endforeach ?>\n<? foreach("char_id_date_list") ?>\n LEFT OUTER JOIN charass charass_alias<? literal("char_id_date_list") ?> ON ((charass_alias<? literal("char_id_date_list") ?>.charass_target_type='ADDR') \n AND (charass_alias<? literal("char_id_date_list") ?>.charass_target_id=addr_id)\n AND (charass_alias<? literal("char_id_date_list") ?>.charass_char_id=<? value("char_id_date_list") ?>))\n LEFT OUTER JOIN char char_alias<? literal("char_id_date_list") ?> ON (charass_alias<? literal("char_id_date_list") ?>.charass_char_id=char_alias<? literal("char_id_date_list") ?>.char_id)\n<? endforeach ?>\nWHERE true\n<? if not exists("showInactive") ?> AND addr_active <? endif ?>\n<? literal("charClause") ?>\nORDER BY addr_country, addr_state, addr_city,\n addr_postalcode, addr_line1, addr_line2,\n addr_line3, type, last, first;\n \n \n 156\n \n \n \n \n \n \n 6.33333\n 150.333\n 995.333\n 150.333\n 2\n \n \n \n \n \n \n \n \n \n \n \n \n \n 5\n 36\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 38\n \n \n \n \n \n \n \n \n 5\n 31\n 992\n 31\n 2\n \n \n \n \n \n \n \n \n \n
\n detail\n \n Address\n addr_id\n \n 22\n \n \n 375\n 5\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n addr_city\n \n \n \n \n 750\n 5\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n addr_postalcode\n \n \n \n \n 625\n 5\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n addr_country\n \n \n \n \n 140\n 5\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n addr_line2\n \n \n \n \n 10\n 5\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n addr_line1\n \n \n \n \n 500\n 5\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n addr_state\n \n \n \n \n 270\n 5\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n addr_line3\n \n \n \n \n \n \n detail\n \n 12\n \n \n 375\n 0\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n last\n \n \n \n \n 750\n 0\n 120\n 12\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n fax\n \n \n \n \n 500\n 0\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n crmacct_number\n \n \n \n \n 625\n 0\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n phone\n \n \n \n \n 270\n 0\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n first\n \n \n \n \n 875\n 0\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n email\n \n \n \n \n 140\n 0\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n type\n \n \n \n
\n \n 17\n \n \n 90\n -1\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 945\n -1\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 104 Alignment \N \n\n Alignment\n Alignment\n \n Letter\n \n 0\n 0\n 0\n 0\n \n 1152\n \n \n \n 0\n 919\n 850\n 919\n 1\n \n \n 580\n 0\n 580\n 1150\n 1\n \n \n 280\n 0\n 280\n 1150\n 1\n \n \n 0\n 470\n 850\n 470\n 1\n \n \n 0\n 869\n 850\n 869\n 1\n \n \n 0\n 800\n 850\n 800\n 1\n \n \n \n 0\n 459\n 850\n 459\n 1\n \n \n 340\n 0\n 340\n 1150\n 1\n \n \n 0\n 690\n 850\n 690\n 1\n \n \n 0\n 960\n 850\n 960\n 1\n \n \n 0\n 1090\n 850\n 1090\n 1\n \n \n 0\n 380\n 850\n 380\n 1\n \n \n 560\n 0\n 560\n 1150\n 1\n \n \n 0\n 300\n 850\n 300\n 1\n \n \n 0\n 1120\n 850\n 1120\n 1\n \n \n 0\n 819\n 850\n 819\n 1\n \n \n 350\n 0\n 350\n 1150\n 1\n \n \n 0\n 30\n 850\n 30\n 1\n \n \n 170\n 0\n 170\n 1150\n 1\n \n \n 0\n 990\n 850\n 990\n 1\n \n \n 0\n 760\n 850\n 760\n 1\n \n \n 0\n 0\n 0\n 1150\n 1\n \n \n 0\n 220\n 850\n 220\n 1\n \n \n \n 360\n 0\n 360\n 1150\n 1\n \n \n 0\n 10\n 850\n 10\n 1\n \n \n 0\n 1150\n 850\n 1150\n 1\n \n \n 0\n 210\n 850\n 210\n 1\n \n \n 0\n 570\n 850\n 570\n 1\n \n \n 70\n 0\n 70\n 1150\n 1\n \n \n 0\n 100\n 850\n 100\n 1\n \n \n 400\n 0\n 400\n 1150\n 1\n \n \n 540\n 0\n 540\n 1150\n 1\n \n \n \n 730\n 0\n 730\n 1150\n 1\n \n \n \n \n 20\n 0\n 20\n 1150\n 1\n \n \n 0\n 900\n 850\n 900\n 1\n \n \n 220\n 0\n 220\n 1150\n 1\n \n \n 200\n 0\n 200\n 1150\n 1\n \n \n 0\n 509\n 850\n 509\n 1\n \n \n 300\n 0\n 300\n 1150\n 1\n \n \n 0\n 740\n 850\n 740\n 1\n \n \n \n 490\n 0\n 490\n 1150\n 1\n \n \n 0\n 530\n 850\n 530\n 1\n \n \n 0\n 930\n 850\n 930\n 1\n \n \n 630\n 0\n 630\n 1150\n 1\n \n \n 0\n 980\n 850\n 980\n 1\n \n \n 0\n 620\n 850\n 620\n 1\n \n \n 780\n 0\n 780\n 1150\n 1\n \n \n 0\n 670\n 850\n 670\n 1\n \n \n 420\n 0\n 420\n 1150\n 1\n \n \n 0\n 180\n 850\n 180\n 1\n \n \n 0\n 150\n 850\n 150\n 1\n \n \n 0\n 730\n 850\n 730\n 1\n \n \n 80\n 0\n 80\n 1150\n 1\n \n \n 0\n 400\n 850\n 400\n 1\n \n \n 0\n 110\n 850\n 110\n 1\n \n \n 0\n 310\n 850\n 310\n 1\n \n \n 0\n 940\n 850\n 940\n 1\n \n \n 0\n 640\n 850\n 640\n 1\n \n \n 0\n 1040\n 850\n 1040\n 1\n \n \n 140\n 0\n 140\n 1150\n 1\n \n \n \n 440\n 0\n 440\n 1150\n 1\n \n \n 0\n 280\n 850\n 280\n 1\n \n \n 0\n 660\n 850\n 660\n 1\n \n \n 30\n 0\n 30\n 1150\n 1\n \n \n 130\n 0\n 130\n 1150\n 1\n \n \n 0\n 950\n 850\n 950\n 1\n \n \n 0\n 40\n 850\n 40\n 1\n \n \n 0\n 650\n 850\n 650\n 1\n \n \n 0\n 700\n 850\n 700\n 1\n \n \n 470\n 0\n 470\n 1150\n 1\n \n \n 0\n 130\n 850\n 130\n 1\n \n \n 0\n 260\n 850\n 260\n 1\n \n \n 0\n 360\n 850\n 360\n 1\n \n \n 0\n 890\n 850\n 890\n 1\n \n \n \n 0\n 350\n 850\n 350\n 1\n \n \n 0\n 480\n 850\n 480\n 1\n \n \n 260\n 0\n 260\n 1150\n 1\n \n \n \n \n \n 0\n 370\n 850\n 370\n 1\n \n \n 550\n 0\n 550\n 1150\n 1\n \n \n 250\n 0\n 250\n 1150\n 1\n \n \n 0\n 600\n 850\n 600\n 1\n \n \n 600\n 0\n 600\n 1150\n 1\n \n \n 0\n 0\n 850\n 0\n 1\n \n \n 509\n 0\n 509\n 1150\n 1\n \n \n 640\n 0\n 640\n 1150\n 1\n \n \n 409\n 0\n 409\n 1150\n 1\n \n \n 0\n 250\n 850\n 250\n 1\n \n \n 480\n 0\n 480\n 1150\n 1\n \n \n 0\n 50\n 850\n 50\n 1\n \n \n 0\n 720\n 850\n 720\n 1\n \n \n 0\n 1070\n 850\n 1070\n 1\n \n \n 819\n 0\n 819\n 1150\n 1\n \n \n 0\n 770\n 850\n 770\n 1\n \n \n 0\n 560\n 850\n 560\n 1\n \n \n 0\n 20\n 850\n 20\n 1\n \n \n 0\n 90\n 850\n 90\n 1\n \n \n 0\n 860\n 850\n 860\n 1\n \n \n 660\n 0\n 660\n 1150\n 1\n \n \n 790\n 0\n 790\n 1150\n 1\n \n \n 0\n 580\n 850\n 580\n 1\n \n \n 459\n 0\n 459\n 1150\n 1\n \n \n 0\n 170\n 850\n 170\n 1\n \n \n 50\n 0\n 50\n 1150\n 1\n \n \n \n 150\n 0\n 150\n 1150\n 1\n \n \n 0\n 1100\n 850\n 1100\n 1\n \n \n 500\n 0\n 500\n 1150\n 1\n \n \n 0\n 70\n 850\n 70\n 1\n \n \n 0\n 610\n 850\n 610\n 1\n \n \n 0\n 1140\n 850\n 1140\n 1\n \n \n 110\n 0\n 110\n 1150\n 1\n \n \n 770\n 0\n 770\n 1150\n 1\n \n \n 0\n 590\n 850\n 590\n 1\n \n \n 740\n 0\n 740\n 1150\n 1\n \n \n 0\n 630\n 850\n 630\n 1\n \n \n 0\n 1030\n 850\n 1030\n 1\n \n \n 690\n 0\n 690\n 1150\n 1\n \n \n \n 0\n 550\n 850\n 550\n 1\n \n \n 0\n 140\n 850\n 140\n 1\n \n \n 0\n 1050\n 850\n 1050\n 1\n \n \n 0\n 1019\n 850\n 1019\n 1\n \n \n 520\n 0\n 520\n 1150\n 1\n \n \n 0\n 1000\n 850\n 1000\n 1\n \n \n 100\n 0\n 100\n 1150\n 1\n \n \n 450\n 0\n 450\n 1150\n 1\n \n \n 720\n 0\n 720\n 1150\n 1\n \n \n 160\n 0\n 160\n 1150\n 1\n \n \n 0\n 60\n 850\n 60\n 1\n \n \n 0\n 450\n 850\n 450\n 1\n \n \n 760\n 0\n 760\n 1150\n 1\n \n \n 0\n 420\n 850\n 420\n 1\n \n \n 680\n 0\n 680\n 1150\n 1\n \n \n 0\n 850\n 850\n 850\n 1\n \n \n 650\n 0\n 650\n 1150\n 1\n \n \n 620\n 0\n 620\n 1150\n 1\n \n \n 0\n 190\n 850\n 190\n 1\n \n \n 0\n 409\n 850\n 409\n 1\n \n \n 40\n 0\n 40\n 1150\n 1\n \n \n 700\n 0\n 700\n 1150\n 1\n \n \n 0\n 1010\n 850\n 1010\n 1\n \n \n 800\n 0\n 800\n 1150\n 1\n \n \n 240\n 0\n 240\n 1150\n 1\n \n \n 310\n 0\n 310\n 1150\n 1\n \n \n 710\n 0\n 710\n 1150\n 1\n \n \n 0\n 540\n 850\n 540\n 1\n \n \n 10\n 0\n 10\n 1150\n 1\n \n \n 570\n 0\n 570\n 1150\n 1\n \n \n 0\n 810\n 850\n 810\n 1\n \n \n 0\n 1130\n 850\n 1130\n 1\n \n \n 390\n 0\n 390\n 1150\n 1\n \n \n 229\n 0\n 229\n 1150\n 1\n \n \n \n 0\n 680\n 850\n 680\n 1\n \n \n 0\n 270\n 850\n 270\n 1\n \n \n 180\n 0\n 180\n 1150\n 1\n \n \n 850\n 0\n 850\n 1150\n 1\n \n \n 0\n 80\n 850\n 80\n 1\n \n \n 0\n 240\n 850\n 240\n 1\n \n \n 0\n 750\n 850\n 750\n 1\n \n \n 0\n 160\n 850\n 160\n 1\n \n \n 0\n 290\n 850\n 290\n 1\n \n \n 0\n 910\n 850\n 910\n 1\n \n \n 840\n 0\n 840\n 1150\n 1\n \n \n 0\n 229\n 850\n 229\n 1\n \n \n 670\n 0\n 670\n 1150\n 1\n \n \n 0\n 330\n 850\n 330\n 1\n \n \n 0\n 710\n 850\n 710\n 1\n \n \n 0\n 840\n 850\n 840\n 1\n \n \n 60\n 0\n 60\n 1150\n 1\n \n \n 0\n 790\n 850\n 790\n 1\n \n \n 0\n 1060\n 850\n 1060\n 1\n \n \n 190\n 0\n 190\n 1150\n 1\n \n \n 590\n 0\n 590\n 1150\n 1\n \n \n 810\n 0\n 810\n 1150\n 1\n \n \n 530\n 0\n 530\n 1150\n 1\n \n \n 0\n 520\n 850\n 520\n 1\n \n \n 0\n 340\n 850\n 340\n 1\n \n \n 0\n 390\n 850\n 390\n 1\n \n \n 90\n 0\n 90\n 1150\n 1\n \n \n 0\n 120\n 850\n 120\n 1\n \n \n \n \n 0\n 830\n 850\n 830\n 1\n \n \n 0\n 880\n 850\n 880\n 1\n \n \n \n 0\n 200\n 850\n 200\n 1\n \n \n 830\n 0\n 830\n 1150\n 1\n \n \n 0\n 780\n 850\n 780\n 1\n \n \n 0\n 500\n 850\n 500\n 1\n \n \n 120\n 0\n 120\n 1150\n 1\n \n \n 0\n 440\n 850\n 440\n 1\n \n \n 320\n 0\n 320\n 1150\n 1\n \n \n 370\n 0\n 370\n 1150\n 1\n \n \n 0\n 430\n 850\n 430\n 1\n \n \n 210\n 0\n 210\n 1150\n 1\n \n \n 610\n 0\n 610\n 1150\n 1\n \n \n 290\n 0\n 290\n 1150\n 1\n \n \n 330\n 0\n 330\n 1150\n 1\n \n \n 0\n 1080\n 850\n 1080\n 1\n \n \n 430\n 0\n 430\n 1150\n 1\n \n \n 380\n 0\n 380\n 1150\n 1\n \n \n 750\n 0\n 750\n 1150\n 1\n \n \n 0\n 969\n 850\n 969\n 1\n \n \n 0\n 490\n 850\n 490\n 1\n \n \n 270\n 0\n 270\n 1150\n 1\n \n \n 0\n 1110\n 850\n 1110\n 1\n \n \n 0\n 320\n 850\n 320\n 1\n \n \n\n \N 0 2013-07-26 16:17:54.38447 459 Backlog \N \n\n Backlog\n Backlog\n \n \n \n \n \n \n \n \n \n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT CASE WHEN (checkPrivilege('ViewCustomerPrices') AND isMultiCurr()) THEN text('Amount(base)')\n WHEN (checkPrivilege('ViewCustomerPrices')) THEN text('Amount')\n ELSE text('')\n END AS lbl_baseamount,\n CASE WHEN (checkPrivilege('ViewCustomerPrices') AND isMultiCurr()) THEN text('Amount(foreign)')\n ELSE text('')\n END AS lbl_foreignamount;\n \n \n detail\n SELECT cohead_number, coitem_linenumber, cust_name,\n formatDate(cohead_orderdate) AS f_orderdate,\n formatDate(coitem_scheddate) AS f_scheddate,\n item_number, uom_name,\n item_descrip1, item_descrip2,\n formatQty(coitem_qtyord) AS f_qtyord,\n formatQty(coitem_qtyshipped) AS f_qtyship,\n formatQty(noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned)) AS f_balance, \n CASE WHEN (checkPrivilege('ViewCustomerPrices')) THEN\nformatMoney(round((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio)\n * (currtobase(cohead_curr_id,coitem_price,cohead_orderdate) / coitem_price_invuomratio),2))\n ELSE\n text('')\n END\n AS f_ammount,\n CASE WHEN (checkPrivilege('ViewCustomerPrices') AND isMultiCurr()) THEN\nformatMoney(round((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio)\n * (coitem_price / coitem_price_invuomratio),2))\n ELSE\n text('')\n END\n AS foreign_ammount,\nround((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio)\n * (currtobase(cohead_curr_id,coitem_price,cohead_orderdate) / coitem_price_invuomratio),2) AS backlog \n FROM cohead, coitem, itemsite, item, custinfo, uom\n WHERE ((coitem_cohead_id=cohead_id)\n AND (cohead_cust_id=cust_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (coitem_status='O')\n <? if exists("cohead_id") ?>\n AND (coitem_cohead_id=<? value("cohead_id") ?>)\n <? endif ?>\n <? if exists("startDate") ?>\n AND (cohead_orderdate >= <? value("startDate") ?>)\n <? endif ?>\n <? if exists("endDate") ?>\n AND (cohead_orderdate <= <? value("endDate") ?>)\n <? endif ?>\n <? if exists("startDateSched") ?>\n AND (coitem_scheddate >= <? value("startDateSched") ?>)\n <? endif ?>\n <? if exists("endDateSched") ?>\n AND (coitem_scheddate <= <? value("endDateSched") ?>)\n <? endif ?>\n <? if exists("salesrep_id") ?>\n AND (cohead_salesrep_id=<? value("salesrep_id") ?>)\n <? endif ?>\n <? if exists("shipto_id") ?>\n AND (cohead_shipto_id=<? value("shipto_id") ?>)\n <? endif ?>\n <? if exists("cust_id") ?>\n AND (cohead_cust_id=<? value("cust_id") ?>)\n <? endif ?>\n <? if exists("custtype_id") ?>\n AND (cust_custtype_id=<? value("custtype_id") ?>)\n <? endif ?>\n <? if exists("custtype_pattern") ?>\n AND (cust_custtype_id IN (SELECT DISTINCT custtype_id\n FROM custtype\n WHERE (custtype_code ~ <? value("custtype_pattern") ?>)))\n <? endif ?>\n <? if exists("custgrp") ?>\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem))\n <? endif ?>\n <? if exists("custgrp_id") ?>\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrpitem\n WHERE (custgrpitem_custgrp_id=<? value("custgrp_id") ?>)))\n <? endif ?>\n <? if exists("custgrp_pattern") ?>\n AND (cust_id IN (SELECT DISTINCT custgrpitem_cust_id\n FROM custgrp, custgrpitem\n WHERE ( (custgrpitem_custgrp_id=custgrp_id)\n AND (custgrp_name ~ <? value("custgrp_pattern") ?>) )) )\n <? endif ?>\n\n <? if exists("item_id") ?>\n AND (itemsite_item_id=<? value("item_id") ?>)\n <? endif ?>\n <? if exists("prodcat_id") ?>\n AND (item_prodcat_id=<? value("prodcat_id") ?>)\n <? endif ?>\n <? if exists("prodcat_pattern") ?>\n AND (item_prodcat_id IN (SELECT DISTINCT prodcat_id\n FROM prodcat\n WHERE (prodcat_code ~ <? value("prodcat_pattern") ?>)))\n <? endif ?>\n\n <? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n <? endif ?>\n)\nORDER BY coitem_scheddate, cohead_number, coitem_linenumber;\n \n \n total\n SELECT now()\n WHERE 't' = CASE WHEN (checkPrivilege('ViewCustomerPrices')) THEN 't'\n ELSE 'f'\n END\n;\n \n \n 226\n \n \n \n \n \n 660\n 185\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_baseamount\n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n 660\n 200\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_foreignamount\n \n \n \n \n \n \n \n \n \n \n \n \n \n 5\n 28\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n \n \n \n \n \n \n \n 660\n 0\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_baseamount\n \n \n \n \n 660\n 15\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_foreignamount\n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 52\n \n \n 305\n 30\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 65\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n coitem_linenumber\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 305\n 15\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 507\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyship\n \n \n \n \n 671\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n foreign_ammount\n \n \n \n \n 305\n 0\n 140\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 670\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ammount\n \n \n \n \n 450\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n \n 225\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_orderdate\n \n \n \n \n 507\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyord\n \n \n \n \n 225\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_scheddate\n \n \n \n \n 112\n 0\n 110\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_name\n \n \n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_balance\n \n \n \n \n 5\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cohead_number\n \n \n \n
\n
\n totals\n \n \n total\n \n 18\n \n \n \n 670\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n backlog\n \n money\n \n \n \n
\n \n 18\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 56 CapacityUOMsByClassCode \N \n\n Capacity UOMs By Class Code\n CapacityUOMsByClassCode\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("classcode_id") ?>\n ( SELECT (classcode_code || '-' || classcode_descrip)\n FROM classcode\n WHERE (classcode_id=<? value("classcode_id") ?>) )\n <? elseif exists("classcode_pattern") ?>\n text(<? value("classcode_pattern") ?>)\n <? else ?>\n text('All Class Codes')\n <? endif ?>\n AS classcode;\n \n \n detail\n SELECT classcode_code,\n item_number,\n item_descrip1,\n item_descrip2,\n uom_name,\n itemcapuom(item_id) AS capuom,\n formatRatio(itemcapinvrat(item_id)) AS capratio,\n itemaltcapuom(item_id) AS altcapuom,\n formatRatio(itemaltcapinvrat(item_id)) AS altcapratio,\n itemsellinguom(item_id) AS shipuom,\n formatRatio(iteminvpricerat(item_id)) AS shipratio\n FROM item, classcode, uom\n WHERE ((item_classcode_id=classcode_id)\n AND (item_inv_uom_id=uom_id)\n<? if exists("classcode_id") ?>\n AND (classcode_id=<? value("classcode_id") ?>)\n<? elseif exists("classcode_pattern") ?>\n AND (classcode_code ~ <? value("classcode_pattern") ?>)\n<? endif ?>\n)\nORDER BY classcode_code, item_number;\n \n \n \n 234\n \n \n \n 120\n 120\n 565\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n classcode\n \n \n \n \n \n \n \n \n \n \n \n \n 5\n 228\n 745\n 228\n 2\n \n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 51\n \n \n 600\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shipratio\n \n \n \n \n 5\n 0\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n classcode_code\n \n \n \n \n 600\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shipuom\n \n \n \n \n 300\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n \n 400\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n capuom\n \n \n \n \n 500\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n altcapuom\n \n \n \n \n 500\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n altcapratio\n \n \n \n \n 100\n 15\n 228\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 400\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n capratio\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 100\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 100\n 30\n 228\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n
\n \n 16\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 57 CapacityUOMsByProductCategory \N \n\n Capacity UOMs by Product Category\n CapacityUOMsByProductCategory\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT prodcat_code,\n item_number,\n item_descrip1,\n item_descrip2,\n uom_name,\n itemcapuom(item_id) AS capuom,\n formatRatio(itemcapinvrat(item_id)) AS capratio,\n itemaltcapuom(item_id) AS altcapuom,\n formatRatio(itemaltcapinvrat(item_id)) AS altcapratio,\n itemsellinguom(item_id) AS shipuom,\n formatRatio(iteminvpricerat(item_id)) AS shipratio\n FROM item, prodcat, uom\n WHERE ((item_sold)\n AND (item_inv_uom_id=uom_id)\n AND (item_prodcat_id=prodcat_id)\n<? if exists("prodcat_id") ?>\n AND (prodcat_id=<? value("prodcat_id") ?>)\n<? elseif exists("prodcat_pattern") ?>\n AND (prodcat_code ~ <? value("prodcat_pattern") ?>)\n<? endif ?>\n)\nORDER BY prodcat_code, item_number;\n \n \n \n head\n SELECT <? if exists("prodcat_id") ?>\n ( SELECT (prodcat_code||'-'||prodcat_descrip)\n FROM prodcat\n WHERE (prodcat_id=<? value("prodcat_id") ?>) )\n <? elseif exists("prodcat_pattern") ?>\n text(<? value("prodcat_pattern") ?>)\n <? else ?>\n text('All Product Categories')\n <? endif ?>\n AS prodcat;\n \n \n 234\n \n \n \n \n \n \n \n \n \n \n \n \n 160\n 120\n 483\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n prodcat\n \n \n \n \n 5\n 228\n 745\n 228\n 2\n \n \n \n \n \n 6\n \n \n 36\n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 51\n \n \n 600\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shipratio\n \n \n \n \n 5\n 0\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n prodcat_code\n \n \n \n \n 70\n 15\n 228\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 500\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n altcapratio\n \n \n \n \n 70\n 0\n 228\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 600\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shipuom\n \n \n \n \n 400\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n capratio\n \n \n \n \n 300\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n \n 500\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n altcapuom\n \n \n \n \n 70\n 30\n 228\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 400\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n capuom\n \n \n \n
\n \n 16\n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 187 CharacteristicsMasterList \N \n\n Characteristics Master List\n CharacteristicsMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT char_id,\n char_name,\n formatBoolYN(char_items) AS f_items,\n formatBoolYN(char_options) AS f_options,\n formatBoolYN(char_attributes) AS f_attributes,\n formatBoolYN(char_lotserial) AS f_lotserial,\n char_notes\n FROM char\nORDER BY char_name;\n \n \n 86\n \n \n \n \n \n \n \n 5\n 80\n 745\n 80\n 2\n \n \n \n \n \n \n 6\n \n \n 41\n \n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 270\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_options\n \n \n \n \n 220\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_items\n \n \n \n \n 10\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n char_name\n \n \n \n \n 425\n 0\n 320\n 13\n \n 5\n \n Arial\n 8\n bold\n \n \n \n \n detail\n char_notes\n \n \n \n \n 320\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_attributes\n \n \n \n \n 370\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_lotserial\n \n \n \n
\n \n 17\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 43 ClassCodesMasterList \N \n\n Class Codes Master List\n ClassCodesMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n select classcode_code, classcode_descrip\n from classcode\norder by classcode_code;\n \n \n 76\n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n \n 6\n \n \n 21\n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n
\n detail\n \n \n detail\n \n \n 16\n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n classcode_code\n \n \n \n \n 175\n 0\n 565\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n classcode_descrip\n \n \n \n
\n \n 16\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 312 ContactsMasterList \N \n\n Contacts Master List\n ContactsMasterList\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n contacts\n detail\n \n \n 143\n \n \n \n \n \n 6\n 137\n 995\n 137\n 2\n \n \n \n \n \n \n \n \n \n 5\n 33\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n 5\n 15\n 994\n 15\n 2\n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 250\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n crmacct_number\n \n \n \n \n 10\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cntct_first_name\n \n \n \n \n 725\n 0\n 145\n 15\n \n 0\n \n Arial\n 8\n bold\n \n \n \n \n detail\n cntct_email\n \n \n \n \n 875\n 0\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cntct_webaddr\n \n \n \n \n 545\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cntct_phone2\n \n \n \n \n 450\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cntct_phone\n \n \n \n \n 120\n 0\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cntct_last_name\n \n \n \n \n 625\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cntct_fax\n \n \n \n \n 325\n 0\n 100\n 15\n \n 0\n \n Arial\n 8\n bold\n \n \n \n \n detail\n crmacct_name\n \n \n \n
\n \n 17\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 945\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 477 Contracts \N \n\n Contracts\n Contracts\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n contracts\n detail\n \n \n 76\n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n \n \n \n \n \n \n 6\n \n \n 21\n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 22\n \n \n 10\n 2\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_number\n \n \n \n \n 90\n 2\n 135\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_name\n \n \n \n \n 235\n 2\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n contrct_number\n \n \n \n \n 320\n 2\n 135\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n contrct_descrip\n \n \n \n \n 470\n 2\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n contrct_effective\n \n \n \n \n 565\n 2\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n contrct_expires\n \n \n \n \n 655\n 2\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_count\n \n \n \n
\n \n 25\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 32 CostCategoriesMasterList \N \n\n Cost Categories Master List\n CostCategoriesMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT costcat_code, costcat_descrip,\n CASE WHEN (costcat_asset_accnt_id IS NOT NULL) THEN formatGlAccountLong(costcat_asset_accnt_id) ELSE '' END AS asset,\n CASE WHEN (costcat_wip_accnt_id IS NOT NULL) THEN formatGlAccountLong(costcat_wip_accnt_id) ELSE '' END AS wip,\n CASE WHEN (costcat_invcost_accnt_id IS NOT NULL) THEN formatGlAccountLong(costcat_invcost_accnt_id) ELSE '' END AS invcost,\n CASE WHEN (costcat_purchprice_accnt_id IS NOT NULL) THEN formatGlAccountLong(costcat_purchprice_accnt_id) ELSE '' END AS purchprice,\n CASE WHEN (costcat_adjustment_accnt_id IS NOT NULL) THEN formatGlAccountLong(costcat_adjustment_accnt_id) ELSE '' END AS adjustment,\n CASE WHEN (costcat_scrap_accnt_id IS NOT NULL) THEN formatGlAccountLong(costcat_scrap_accnt_id) ELSE '' END AS scrap,\n CASE WHEN fetchMetricBool('Routings') THEN 'Labor and Overhead Costs:' ELSE '' END AS laboroverheadLit,\n CASE WHEN (fetchMetricBool('Routings') AND\n costcat_laboroverhead_accnt_id IS NOT NULL) THEN formatGlAccountLong(costcat_laboroverhead_accnt_id) ELSE '' END AS laboroverhead,\n CASE WHEN (costcat_liability_accnt_id IS NOT NULL) THEN formatGlAccountLong(costcat_liability_accnt_id) ELSE '' END AS liability,\n CASE WHEN fetchMetricBool('MultiWhs') THEN 'Transfer Order Liability Clearing:' ELSE '' END AS toliabilityLit,\n CASE WHEN (fetchMetricBool('MultiWhs') AND\n costcat_toliability_accnt_id IS NOT NULL) THEN formatGlAccountLong(costcat_toliability_accnt_id) ELSE '' END AS toliability,\n CASE WHEN fetchMetricBool('Transforms') THEN 'Transform Clearing:' ELSE '' END AS transformLit,\n CASE WHEN (fetchMetricBool('Transforms') AND\n costcat_transform_accnt_id IS NOT NULL) THEN formatGlAccountLong(costcat_transform_accnt_id) ELSE '' END AS transform\n FROM costcat\nORDER BY costcat_code;\n \n \n 61\n \n \n 5\n 55\n 745\n 55\n 2\n \n \n
\n detail\n \n \n detail\n \n 161\n \n \n 415\n 55\n 160\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n transformLit\n \n \n \n \n 575\n 55\n 250\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n transform\n \n \n \n \n \n 165\n 55\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n wip\n \n \n \n \n 575\n 70\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n toliability\n \n \n \n \n 415\n 70\n 160\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n toliabilityLit\n \n \n \n \n 165\n 100\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n adjustment\n \n \n \n \n \n 120\n 20\n 600\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n costcat_descrip\n \n \n \n \n 165\n 131\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n liability\n \n \n \n \n 165\n 40\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n asset\n \n \n \n \n 20\n 150\n 760\n 150\n 0\n \n \n \n 120\n 5\n 600\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n costcat_code\n \n \n \n \n 415\n 40\n 160\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n laboroverheadLit\n \n \n \n \n 165\n 84\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n purchprice\n \n \n \n \n \n 575\n 40\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n laboroverhead\n \n \n \n \n 165\n 70\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invcost\n \n \n \n \n \n 165\n 115\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n scrap\n \n \n \n \n \n \n \n
\n \n 15\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 34 CountSlipEditList \N \n\n Count Slip Edit List\n CountSlipEditList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n item_descrip1,\n item_descrip2,\n warehous_code as warehouse,\n invcnt_tagnumber\n FROM item, itemsite, invcnt, whsinfo\n WHERE ((itemsite_item_id=item_id)\n AND (invcnt_itemsite_id=itemsite_id)\n AND (invcnt_id=<? value("cnttag_id") ?>)\n AND (itemsite_warehous_id=warehous_id) );\n\n \n \n detail\n SELECT cntslip_username AS f_username,\n cntslip_number,\n formatBoolYN(cntslip_posted) AS f_posted,\n formatDateTime(cntslip_entered) AS f_entered,\n formatQty(cntslip_qty) AS f_qty\n FROM cntslip\n WHERE (cntslip_cnttag_id=<? value("cnttag_id") ?>)\nORDER BY cntslip_number;\n \n \n 221\n \n \n \n \n \n \n 100\n 95\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n 100\n 135\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n 100\n 75\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n invcnt_tagnumber\n \n \n \n \n \n \n \n 100\n 114\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n 100\n 155\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 165\n 0\n 275\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cntslip_number\n \n \n \n \n 540\n 0\n 114\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_entered\n \n \n \n \n 455\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_posted\n \n \n \n \n 665\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qty\n \n \n \n \n 50\n 0\n 105\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_username\n \n \n \n
\n \n 16\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 264 CreditMemoEditList \N \n\n Credit Memo Edit List\n CreditMemoEditList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT orderid,\n itemid,\n documentnumber,\n CASE WHEN(documentnumber='') THEN item\n ELSE cust_number\n END AS name,\n CASE WHEN(documentnumber='') THEN itemdescrip\n ELSE billtoname\n END AS descrip,\n ordernumber,\n linenumber,\n iteminvuom,\n qtytobill,\n price,\n extprice,\n sence,\n account\n FROM creditMemoEditList\nORDER BY ordernumber, linenumber;\n \n \n 136\n \n \n \n \n \n \n \n 5\n 130\n 745\n 130\n 2\n \n \n \n \n \n \n \n \n \n 7\n \n \n 36\n \n \n \n \n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 31\n \n \n 340\n 15\n 240\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n sence\n \n \n \n \n 75\n 15\n 254\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n descrip\n \n \n \n \n 670\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n extprice\n \n \n \n \n 590\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n price\n \n \n \n \n 90\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ordernumber\n \n \n \n \n 285\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n iteminvuom\n \n \n \n \n 180\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n name\n \n \n \n \n 590\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtytobill\n \n \n \n \n 340\n 0\n 240\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n account\n \n \n \n \n 685\n 15\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shiptostate\n \n \n \n \n 5\n 0\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n documentnumber\n \n \n \n
\n \n 16\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 290 CashReceipts \N \n\n Cash Receipts\n CashReceipts\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("cust_id") ?>\n (SELECT (cust_number || '-' || cust_name)\n FROM custinfo\n WHERE (cust_id=<? value("cust_id") ?>) )\n <? elseif exists("custtype_id") ?>\n (select (custtype_code||'-'||custtype_descrip)\n FROM custtype\n WHERE (custtype_id=<? value("custtype_id") ?>) )\n <? elseif exists("custtype_pattern") ?>\n text(<? value("custtype_pattern") ?>)\n <? else ?>\n text('All Customers')\n <? endif ?>\n AS f_value,\n <? if exists("custtype_id") ?>\n text('Cust. Type:')\n <? elseif exists("custtype_pattern") ?>\n text('Cust. Type Pattern:')\n <? else ?>\n text('Customer:')\n <? endif ?>\n AS f_label,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate;\n \n \n detail\n cashReceipts\n detail\n \n \n foot\n SELECT formatMoney(SUM(base_applied)) AS f_base_applied_total\nFROM (\n<? if exists("LegacyDisplayMode") ?>\n-- Posted cash receipts\nSELECT currtobase(arapply_curr_id,arapply_applied,arapply_postdate) AS base_applied\nFROM custinfo LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id), arapply\nWHERE ( (arapply_cust_id=cust_id)\n AND (arapply_postdate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n AND (arapply_source_doctype ='K')\n<? if exists("cust_id") ?>\n AND (cust_id=<? value("cust_id") ?>)\n<? elseif exists("custtype_id") ?>\n AND (cust_custtype_id=<? value("custtype_id") ?>)\n<? elseif exists("custgrp_id") ?>\n AND (custgrpitem_custgrp_id=<? value("custgrp_id") ?>)\n<? elseif exists("custtype_pattern") ?>\n AND (cust_custtype_id IN (SELECT custtype_id FROM custtype WHERE (custtype_code ~ <? value("custtype_pattern") ?>)))\n<? endif ?>\n )\n\n-- Unposted cash receipts\nUNION ALL\nSELECT currtobase(cashrcpt_curr_id,cashrcpt_amount,cashrcpt_distdate) AS base_applied\nFROM cashrcpt, custinfo LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id)\nWHERE ( (NOT cashrcpt_posted)\n AND (cashrcpt_cust_id=cust_id)\n AND (cashrcpt_distdate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n<? if exists("cust_id") ?>\n AND (cust_id=<? value("cust_id") ?>)\n<? elseif exists("custtype_id") ?>\n AND (cust_custtype_id=<? value("custtype_id") ?>)\n<? elseif exists("custgrp_id") ?>\n AND (custgrpitem_custgrp_id=<? value("custgrp_id") ?>)\n<? elseif exists("custtype_pattern") ?>\n AND (cust_custtype_id IN (SELECT custtype_id FROM custtype WHERE (custtype_code ~ <? value("custtype_pattern") ?>)))\n<? endif ?>\n )\n\n-- Cash Advance\nUNION ALL\nSELECT aropen_amount / aropen_curr_rate AS base_applied\nFROM custinfo LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id), aropen\n JOIN cashrcptitem ON (aropen_id=cashrcptitem_aropen_id)\nWHERE ( (aropen_cust_id=cust_id)\n AND (aropen_doctype IN ('R','C'))\n AND (aropen_docdate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n<? if exists("cust_id") ?>\n AND (cust_id=<? value("cust_id") ?>)\n<? elseif exists("custtype_id") ?>\n AND (cust_custtype_id=<? value("custtype_id") ?>)\n<? elseif exists("custgrp_id") ?>\n AND (custgrpitem_custgrp_id=<? value("custgrp_id") ?>)\n<? elseif exists("custtype_pattern") ?>\n AND (cust_custtype_id IN (SELECT custtype_id FROM custtype WHERE (custtype_code ~ <? value("custtype_pattern") ?>)))\n<? endif ?>\n )\n<? else ?>\n-- New mode\nSELECT (cashrcpt_amount / cashrcpt_curr_rate) AS base_applied\nFROM cashrcpt JOIN custinfo ON (cust_id=cashrcpt_cust_id)\n<? if exists("custgrp_id") ?>\n LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id)\n<? endif ?>\nWHERE ( (cashrcpt_distdate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n<? if exists("cust_id") ?>\n AND (cust_id=<? value("cust_id") ?>)\n<? elseif exists("custtype_id") ?>\n AND (cust_custtype_id=<? value("custtype_id") ?>)\n<? elseif exists("custgrp_id") ?>\n AND (custgrpitem_custgrp_id=<? value("custgrp_id") ?>)\n<? elseif exists("custtype_pattern") ?>\n AND (cust_custtype_id IN (SELECT custtype_id FROM custtype WHERE (custtype_code ~ <? value("custtype_pattern") ?>)))\n<? endif ?>\n )\n<? endif ?>\n) data\n;\n\n \n \n 146\n \n \n 10\n 65\n 125\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n f_label\n \n \n \n \n \n \n 140\n 65\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_value\n \n \n \n \n 565\n 85\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n 5\n 140\n 745\n 140\n 2\n \n \n \n 565\n 65\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n \n \n \n \n \n \n 6\n \n \n 28\n \n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 20\n \n \n 55\n 0\n 155\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_name\n \n \n \n \n 215\n 0\n 65\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_postdate\n \n \n \n \n 600\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n currAbbr\n \n \n \n \n 400\n 0\n 110\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n target\n \n \n \n \n 5\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_number\n \n \n \n \n 285\n 0\n 115\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n source\n \n \n \n \n 645\n 0\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_base_applied\n \n \n \n \n 509\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_applied\n \n \n \n
\n \n 18\n \n \n \n 700.755\n 2\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 103\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 100\n \n \n \n 646\n 10.7068\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n foot\n f_base_applied_total\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 404 CurrencyConversionList \N \n\n Currency Exchange Rates\n CurrencyConversionList\n \n Letter\n \n 100\n 100\n 100\n 100\n \n exchangeRates\n currencyConversions\n detail\n \n \n baseCurrency\n SELECT\n\tcurr_name,\n\tcurrConcat(curr_id) AS currConcat\nFROM curr_symbol\nWHERE curr_base = TRUE;\n \n \n knownCurrencies\n SELECT\n\tcurr_name,\n\tcurrConcat(curr_id) AS currConcat,\n\tcurr_base\nFROM curr_symbol\nWHERE curr_base = FALSE\nORDER BY currConcat;\n \n \n 113\n \n \n \n 0\n 60\n 151\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n baseCurrency\n curr_name\n \n \n \n \n \n \n 150\n 60\n 116\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n baseCurrency\n currConcat\n \n \n \n
\n Known Currencies\n \n Known\n curr_base\n \n 61\n \n \n \n \n \n 0\n 50\n 407\n 50\n 2\n \n \n \n \n \n knownCurrencies\n \n 21\n \n \n 150\n 0\n 126\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n knownCurrencies\n currConcat\n \n \n \n \n 0\n 0\n 150\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n knownCurrencies\n curr_name\n \n \n \n
\n
\n Exchange Rates\n \n By Currency\n currConcat\n \n 21\n \n 409\n 10\n 5\n 10\n 0\n \n \n \n \n \n exchangeRates\n \n 21\n \n \n 0\n 0\n 96\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n exchangeRates\n f_curr\n \n \n \n \n 330\n 0\n 80\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n exchangeRates\n curr_expires\n \n \n \n \n 90\n 0\n 120\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n exchangeRates\n rate\n \n \n \n \n 230\n 0\n 90\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n exchangeRates\n curr_effective\n \n \n \n
\n \n 31\n \n \n 100\n 10\n 120\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 241 CustomerARHistory \N \n\n Customer A/R History\n CustomerARHistory\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT cust_name,\n formatDate(date(<? value("startDate") ?>)) AS startDate,\n formatDate(date(<? value("endDate") ?>)) AS endDate\n FROM custinfo\n WHERE (cust_id=<? value("cust_id") ?>);\n \n \n \n detail\n arHistory\n detail\n \n \n 156\n \n \n \n \n 550\n 85\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n endDate\n \n \n \n \n \n \n \n \n \n 550\n 65\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startDate\n \n \n \n \n \n 135\n 65\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_name\n \n \n \n \n 5\n 150\n 745\n 150\n 2\n \n \n \n \n \n \n 6\n \n \n 21\n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 540\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n amount\n \n extprice\n \n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n balance\n \n extprice\n \n \n \n 349\n 0\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_docdate\n \n \n \n \n 444\n 0\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_duedate\n \n \n \n \n 5\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_open\n \n \n \n \n 175\n 0\n 170\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n docnumber\n \n \n \n \n 70\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n documenttype\n \n \n \n
\n \n 16\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 104\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 70 CustomerTypesMasterList \N \n\n Customer Types Master List\n CustomerTypesMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n select custtype_code, custtype_descrip\n from custtype\norder by custtype_code;\n \n \n 76\n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n 6\n \n \n 21\n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 175\n 0\n 565\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n custtype_descrip\n \n \n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n custtype_code\n \n \n \n
\n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 206 ExpenseCategoriesMasterList \N \n\n Expense Categories Master List\n ExpenseCategoriesMasterList\n \n Letter\n \n 50\n 50\n 28\n 28\n \n detail\n SELECT \n expcat_code,\n expcat_descrip,\n formatGLAccountLong(expcat_exp_accnt_id) AS exp_accnt,\n formatGLAccountLong(expcat_purchprice_accnt_id) AS ppv_accnt,\n formatGLAccountLong(expcat_liability_accnt_id) AS poliab_accnt,\n formatGLAccountLong(expcat_freight_accnt_id) AS polinefrgt_accnt\nFROM \n expcat AS A\nORDER BY expcat_code;\n\n \n \n 90\n \n \n 6\n 85\n 1036\n 85\n 2\n \n \n \n \n \n \n \n \n \n \n 7\n \n \n 33\n \n \n 6\n 30\n 1036\n 30\n 2\n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 40\n \n \n 260\n -1\n 490\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n expcat_descrip\n \n \n \n \n 5\n 0\n 130\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n expcat_code\n \n \n \n \n 5\n 14\n 230\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n exp_accnt\n \n \n \n \n 260\n 14\n 240\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ppv_accnt\n \n \n \n \n 520\n 14\n 230\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n poliab_accnt\n \n \n \n \n 780\n 14\n 230\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n polinefrgt_accnt\n \n \n \n 6\n 30\n 1036\n 30\n 1\n \n \n
\n \n 17\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 945\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 342 FinancialReportMonthPriorQuarter \N \n\n Financial Report Month and Prior Quarter\n FinancialReportMonthPriorQuarter\n \n \n Financial Report Column Layout\n SELECT flcol_id, flhead_name || ' - ' || flcol_name FROM flcol, flhead WHERE ((flcol_flhead_id=flhead_id) AND (flhead_active))\n \n \n Accounting Period Reference\n SELECT period_id, \n CASE\n WHEN period_name <> '' THEN period_name \n ELSE (formatdate(period_start) || '-' || formatdate(period_end)) \n END \nFROM period \nORDER BY period_end DESC\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT \n <? value("project") ?> AS project,\n (SELECT prj_name FROM prj WHERE prj_id=<? value("prj_id") ?>) AS prj_name,\n flstmthead_username,\n flstmthead_flhead_name || ' - ' || flstmthead_flcol_name AS f_name,\n flstmthead_typedescrip1,\n flstmthead_typedescrip2,\n flstmthead_typedescrip2 || 'Diff.' AS f_diff,\n flstmthead_typedescrip2 || ' % Diff.' AS f_diffprcnt,\n flstmthead_month,\n flstmthead_qtr,\n flstmthead_year,\n flstmthead_prmonth,\n flstmthead_prqtr,\n flstmthead_pryear\nFROM getflstmthead(<? value("flcol_id") ?>,<? value("period_id") ?>)\n \n \n detail\n SELECT \n flstmtitem_flhead_id,\n flstmtitem_period_id,\n flstmtitem_username,\n flstmtitem_order,\n flstmtitem_level,\n flstmtitem_subgrp,\n flstmtitem_type,\n flstmtitem_type_id,\n flstmtitem_parent_id,\n flstmtitem_accnt_id,\n flstmtitem_name,\n formatMoney(flstmtitem_month) AS flstmtitem_month,\n formatMoney(flstmtitem_monthdb) AS flstmtitem_monthdb,\n formatMoney(flstmtitem_monthcr) AS flstmtitem_monthcr,\n formatPrcnt(flstmtitem_monthprcnt) AS flstmtitem_monthprcnt,\n formatMoney(flstmtitem_monthbudget) AS flstmtitem_monthbudget,\n formatPrcnt(flstmtitem_monthbudgetprcnt) AS flstmtitem_monthbudgetprcnt,\n formatMoney(flstmtitem_monthbudgetdiff) AS flstmtitem_monthbudgetdiff,\n formatPrcnt(flstmtitem_monthbudgetdiffprcnt) AS flstmtitem_monthbudgetdiffprcnt,\n formatMoney(flstmtitem_qtr) AS flstmtitem_qtr,\n formatMoney(flstmtitem_qtrdb) AS flstmtitem_qtrdb,\n formatMoney(flstmtitem_qtrcr) AS flstmtitem_qtrcr,\n formatPrcnt(flstmtitem_qtrprcnt) AS flstmtitem_qtrprcnt,\n formatMoney(flstmtitem_qtrbudget) AS flstmtitem_qtrbudget,\n formatPrcnt(flstmtitem_qtrbudgetprcnt) AS flstmtitem_qtrbudgetprcnt,\n formatMoney(flstmtitem_qtrbudgetdiff) AS flstmtitem_qtrbudgetdiff,\n formatPrcnt(flstmtitem_qtrbudgetdiffprcnt) AS flstmtitem_qtrbudgetdiffprcnt,\n formatMoney(flstmtitem_year) AS flstmtitem_year,\n formatMoney(flstmtitem_yeardb) AS flstmtitem_yeardb,\n formatMoney(flstmtitem_yearcr) AS flstmtitem_yearcr,\n formatPrcnt(flstmtitem_yearprcnt) AS flstmtitem_yearprcnt,\n formatMoney(flstmtitem_yearbudget) AS flstmtitem_yearbudget,\n formatPrcnt(flstmtitem_yearbudgetprcnt) AS flstmtitem_yearbudgetprcnt,\n formatMoney(flstmtitem_yearbudgetdiff) AS flstmtitem_yearbudgetdiff,\n formatPrcnt(flstmtitem_yearbudgetdiffprcnt) AS flstmtitem_yearbudgetdiffprcnt,\n formatMoney(flstmtitem_prmonth) AS flstmtitem_prmonth,\n formatPrcnt(flstmtitem_prmonthprcnt) AS flstmtitem_prmonthprcnt,\n formatMoney(flstmtitem_prmonthdiff) AS flstmtitem_prmonthdiff,\n formatPrcnt(flstmtitem_prmonthdiffprcnt) AS flstmtitem_prmonthdiffprcnt,\n formatMoney(flstmtitem_prqtr) AS flstmtitem_prqtr,\n formatPrcnt(flstmtitem_prqtrprcnt) AS flstmtitem_prqtrprcnt,\n formatMoney(flstmtitem_prqtrdiff) AS flstmtitem_prqtrdiff,\n formatPrcnt(flstmtitem_prqtrdiffprcnt) AS flstmtitem_prqtrdiffprcnt,\n formatMoney(flstmtitem_pryear) AS flstmtitem_pryear,\n formatPrcnt(flstmtitem_pryearprcnt) AS flstmtitem_pryearprcnt,\n formatMoney(flstmtitem_pryeardiff) AS flstmtitem_pryeardiff,\n formatPrcnt(flstmtitem_pryeardiffprcnt) AS flstmtitem_pryeardiffprcnt\nFROM financialreport(<? value("flcol_id") ?>,<? value("period_id") ?>,\n<? if exists("shownumbers") ?>\n true\n<? else ?>\n false\n<? endif ?>\n,True,<? value("prj_id") ?>)\n<? if not exists("showzeros") ?>\n WHERE ((flstmtitem_month <> 0) OR (flstmtitem_prqtr <> 0) OR (flstmtitem_type <> 'I'))\n<? endif ?>\n;\n \n \n notes\n SELECT * FROM (\nSELECT 1 AS seq, flhead_notes AS notes\nFROM flhead\n JOIN flcol ON (flhead_id=flcol_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (length(flhead_notes) > 0))\nUNION ALL\nSELECT 2 AS seq, flnotes_notes AS notes\nFROM flnotes\n JOIN flcol ON (flcol_flhead_id=flnotes_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (flnotes_period_id=<? value("period_id") ?>)\n AND (length(flnotes_notes) > 0))) data\nORDER BY seq;\n\n \n \n 169\n \n \n 100\n 80\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_name\n \n \n \n \n 500\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n \n 100\n 100\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n flstmthead_typedescrip1\n \n \n \n \n \n 500\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_prqtr\n \n \n \n \n \n \n 660\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_prqtr\n \n \n \n \n 580\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_prqtr\n \n \n \n \n 380\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n 2.16957\n 162\n 750\n 162\n 2\n \n \n \n 580\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diff\n \n \n \n \n 660\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diffprcnt\n \n \n \n \n 380\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 99\n 59.6\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n prj_name\n \n \n \n \n 15\n 59.5\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n project\n \n \n \n \n \n 6\n \n \n 39\n \n \n 380\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 500\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_prqtr\n \n \n \n \n 380\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 660\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_prqtr\n \n \n \n \n 660\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diffprcnt\n \n \n \n 1.79722\n 31\n 749.933\n 31\n 2\n \n \n \n \n 580\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diff\n \n \n \n \n 500\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_prqtr\n \n \n \n
\n detail\n \n subgrp\n flstmtitem_subgrp\n \n 6\n \n 380\n 1\n 740\n 1\n 0\n \n \n \n \n \n detail\n \n 21\n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_prqtrdiff\n \n \n \n \n 25\n 0\n 345\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_name\n \n \n \n \n 380\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_month\n \n \n \n \n 500\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_prqtr\n \n \n \n \n 660\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_prqtrdiffprcnt\n \n \n \n
\n
\n notes\n \n \n notes\n \n 24\n \n \n 25\n 9\n 700\n 15\n \n 0\n \n Arial\n 9\n normal\n \n \n \n \n notes\n notes\n \n \n \n
\n \n 24\n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 695\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 9\n \n
\n \N 0 2013-07-26 16:17:54.38447 76 FreightAccountAssignmentsMasterList \N \n\n A/R Account Assignments Master List\n FreightAccountAssignmentsMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT CASE WHEN araccnt_custtype_id=-1 THEN araccnt_custtype\n ELSE (SELECT custtype_code FROM custtype WHERE (custtype_id=araccnt_custtype_id))\n END AS custtypecode,\n formatGLAccount(araccnt_ar_accnt_id) AS f_araccnt,\n formatGLAccount(araccnt_freight_accnt_id) as f_freightaccnt,\n formatGLAccount(araccnt_prepaid_accnt_id) AS f_prepaidaccnt,\n formatGLAccount(araccnt_deferred_accnt_id) AS f_deferredaccnt\nFROM araccnt \nORDER BY custtypecode;\n \n \n 88\n \n 5\n 80\n 745\n 80\n 2\n \n \n \n \n \n \n \n \n \n \n 8\n \n \n 28\n \n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 19\n \n \n 290\n 1\n 125\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_freightaccnt\n \n \n \n \n 5\n 0\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n custtypecode\n \n \n \n \n 130\n 0\n 125\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_araccnt\n \n \n \n \n 610\n 1\n 125\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_deferredaccnt\n \n \n \n \n 450\n 1\n 125\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_prepaidaccnt\n \n \n \n
\n \n 18\n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 406 FreightClassesMasterList \N \n\n Freight Classes Master List\n FreightClassesMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n select freightclass_code, freightclass_descrip\n from freightclass\norder by freightclass_code;\n \n \n 76\n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n 6\n \n \n 21\n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 175\n 0\n 565\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n freightclass_descrip\n \n \n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n freightclass_code\n \n \n \n
\n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 46 CostedSingleLevelBOM \N \n\n Costed Single Level Bill of Materials\n CostedSingleLevelBOM\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n uom_name AS item_invuom,\n item_descrip1,\n item_descrip2,\n formatCost(stdcost(item_id)) AS standardcost,\n formatCost(actcost(item_id)) AS actualcost,\n <? if exists("useActualCosts") ?>\n text('Actual Cost')\n <? else ?>\n text('Standard Cost')\n <? endif ?>\n AS costtype\n FROM item JOIN uom ON (uom_id=item_inv_uom_id)\n WHERE (item_id=<? value("item_id") ?>);\n \n \n \n detail\n SELECT bomdata_bomwork_seqnumber AS orderby,\n CASE WHEN bomdata_bomwork_seqnumber > 0 THEN\n text(bomdata_bomwork_seqnumber)\n ELSE NULL\n END AS seqnumber,\n bomdata_item_number AS item_number,\n bomdata_uom_name AS item_invuom,\n bomdata_item_descrip1 AS item_descrip1,\n bomdata_item_descrip2 AS item_descrip2,\n bomdata_issuemethod AS issuemethod,\n formatQty(bomdata_qtyfxd) AS qtyfxd,\n formatQtyPer(bomdata_qtyper) AS qtyper,\n formatScrap(bomdata_scrap) AS scrap,\n CASE\n WHEN item_inv_uom_id IS NOT NULL THEN\n formatqtyper((bomitem_qtyfxd + bomitem_qtyper) * (1 + bomitem_scrap) * itemuomtouomratio(bomitem_item_id,bomitem_uom_id,item_inv_uom_id)) \n ELSE\n ''\n END AS qtyreq,\n CASE WHEN COALESCE(bomdata_effective, startOfTime()) <= startOfTime() THEN\n <? value("always") ?>\n ELSE formatDate(bomdata_effective)\n END AS effective,\n CASE WHEN COALESCE(bomdata_expires, endOfTime()) >= endOfTime() THEN\n <? value("never") ?>\n ELSE formatDate(bomdata_expires)\n END AS expires,\n<? if exists("useActualCosts") ?>\n formatCost(bomdata_actunitcost)\n<? else ?>\n formatCost(bomdata_stdunitcost)\n<? endif ?>\n AS unitcost,\n<? if exists("useActualCosts") ?>\n formatCost(bomdata_actextendedcost)\n<? else ?>\n formatCost(bomdata_stdextendedcost)\n<? endif ?>\n AS extcost\nFROM singlelevelbom(<? value("item_id") ?>,<? value("revision_id") ?>,0,0)\n LEFT OUTER JOIN bomitem ON (bomdata_bomitem_id=bomitem_id)\n LEFT OUTER JOIN item ON (bomitem_item_id=item_id)\nORDER BY orderby;\n \n \n \n bomhead\n SELECT bomhead_docnum, bomhead_revision,\nformatDate(bomhead_revisiondate) AS f_revisiondate\nFROM bomhead\nWHERE ((bomhead_item_id=<? value("item_id") ?>)\nAND (bomhead_rev_id=<? value("revision_id") ?>));\n \n \n 217\n \n \n \n 510\n 100\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n f_revisiondate\n \n \n \n \n \n \n \n 125\n 80\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n 510\n 120\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n bomhead_revision\n \n \n \n \n \n \n \n \n 125\n 120\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n 5\n 210\n 745\n 210\n 2\n \n \n \n \n \n 510\n 80\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n bomhead_docnum\n \n \n \n \n \n \n \n \n \n 430\n 50\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n costtype\n \n \n \n \n \n \n 125\n 100\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 53\n \n \n 405\n 0\n 37\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_invuom\n \n \n \n \n 675\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n expires\n \n \n \n \n 315\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyfxd\n \n \n \n \n 70\n 0\n 228\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 315\n 31\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n unitcost\n \n \n \n \n 675\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n issuemethod\n \n \n \n \n 443\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n extcost\n \n \n \n \n 70\n 15\n 228\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 443\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n scrap\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 70\n 30\n 228\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 15\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n seqnumber\n \n \n \n \n 600\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n effective\n \n \n \n \n 600\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n createchild\n \n \n \n \n 525\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyreq\n \n \n \n \n 315\n 16\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyper\n \n \n \n
\n \n 18\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 53\n \n \n \n \n 443\n 35\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n standardcost\n \n \n \n \n \n 443\n 20\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n actualcost\n \n \n \n \n 443\n 5\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n extcost\n \n %9.4f\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 315 CostedSummarizedBOM \N \n\n Costed Summarized Bill of Materials\n CostedSummarizedBOM\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n uom_name AS item_invuom,\n item_descrip1,\n item_descrip2,\n<? if exists("useActualCosts") ?>\n text('Actual Costs') AS f_costtype\n<? else ?>\n text('Standard Costs') AS f_costtype\n<? endif ?>\n FROM item JOIN uom ON (uom_id=item_inv_uom_id)\n WHERE (item_id=<? value("item_id") ?>);\n \n \n \n detail\n select bomdata_item_number AS item_number,\n bomdata_uom_name AS item_invuom,\n bomdata_item_descrip1 AS item_descrip1,\n bomdata_item_descrip2 AS item_descrip2,\n formatQtyPer(bomdata_qtyreq) AS qtyreq,\n<? if exists("useActualCosts") ?>\n formatCost(bomdata_actunitcost) AS f_cost,\n formatCost(bomdata_actextendedcost) AS f_extcost\n<? else ?>\n formatCost(bomdata_stdunitcost) AS f_cost,\n formatCost(bomdata_stdextendedcost) AS f_extcost\n<? endif ?>\n FROM summarizedBOM(<? value("item_id") ?>,<? value("revision_id") ?>,<? value("expiredDays") ?>,<? value("futureDays") ?>);\n \n \n bomhead\n SELECT bomhead_docnum, bomhead_revision,\nformatDate(bomhead_revisiondate) AS f_revisiondate\nFROM bomhead\nWHERE ((bomhead_item_id=<? value("item_id") ?>)\nAND (bomhead_rev_id=<? value("revision_id") ?>));\n \n \n 242\n \n \n 100\n 104\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n 315\n 104\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_invuom\n \n \n \n \n 100\n 125\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n \n 100\n 145\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n \n \n 580\n 125\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n f_revisiondate\n \n \n \n \n \n \n 410\n 50\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_costtype\n \n \n \n \n 580\n 145\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n bomhead_revision\n \n \n \n \n \n 5\n 235\n 745\n 235\n 2\n \n \n \n \n \n 580\n 104\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n bomhead_docnum\n \n \n \n \n \n \n 6\n \n \n 36\n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 52\n \n \n 665\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_extcost\n \n \n \n \n 425\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyreq\n \n \n \n \n 585\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_cost\n \n \n \n \n 113\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 113\n 15\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 113\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 275\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_invuom\n \n \n \n
\n \n 18\n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 36 CountSlipsByWarehouse \N \n\n Count Slips By Site\n CountSlipsByWarehouse\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n formatDate(<? value("startDate") ?>) AS startdate,\n formatDate(<? value("endDate") ?>) AS enddate\n\n \n \n detail\n SELECT invcnt_tagnumber AS tagnum,\n <? if exists("asNumeric") ?>\n int4(cntslip_number)\n <? else ?>\n cntslip_number\n <? endif ?>\n AS slipnum,\n warehous_code,\n item_number,\n item_descrip1,\n item_descrip2,\n formatDate(cntslip_entered) AS date_entered,\n ('( ' || cntslip_username || ' )') AS enteredby,\n formatQty(cntslip_qty) AS f_qtycounted,\n formatBoolYN(cntslip_posted) AS f_posted\n FROM cntslip, invcnt, itemsite, item, whsinfo\n WHERE ((cntslip_cnttag_id=invcnt_id)\n AND (invcnt_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (cntslip_entered BETWEEN <? value("startDate") ?> AND (<? value("endDate") ?>::DATE + 1))\n<? if not exists("showUnposted") ?>\n AND (cntslip_posted)\n<? endif ?>\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n)\nORDER BY slipnum;\n \n \n 191\n \n \n 515\n 110\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n \n \n \n \n 100\n 90\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n 5\n 185\n 745\n 185\n 2\n \n \n \n \n \n \n \n \n 515\n 90\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 56\n \n \n 300\n 15\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n tagnum\n \n \n \n \n 50\n 0\n 245\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtycounted\n \n \n \n 5\n 50\n 745\n 50\n 0\n \n \n \n 50\n 15\n 245\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 10\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 50\n 30\n 245\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 484\n 15\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n enteredby\n \n \n \n \n 300\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n slipnum\n \n \n \n \n 484\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n date_entered\n \n \n \n \n 670\n 0\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_posted\n \n \n \n
\n \n 16\n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 710\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 35 CountTagEditList \N \n\n Count Tag Edit List\n CountTagEditList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("classcode_id") ?>\n ( SELECT (classcode_code ||'-'||classcode_descrip)\n FROM classcode\n WHERE (classcode_id=<? value("classcode_id") ?>) ) AS code,\n\t text('Class Code:') AS codelbl\n <? elseif exists("classcode_pattern") ?>\n text(<? value("classcode_pattern") ?>) AS code,\n text('Class Code:') AS codelbl\n <? elseif exists("plancode_id") ?>\n ( SELECT (plancode_code ||'-'|| plancode_name)\n FROM plancode\n WHERE (plancode_id=<? value("plancode_id") ?>) ) AS code,\n\t text('Planner Code:') AS codelbl\n <? elseif exists("plancode_pattern") ?>\n text(<? value("plancode_pattern") ?>) AS code,\n text('Planner Code:') AS codelbl\n <? else ?>\n text('') AS code,\n text('') AS codelbl\n <? endif ?>\n \n \n \n detail\n SELECT formatBoolYN(invcnt_priority) AS f_priority,\n CASE WHEN (invcnt_tagnumber IS NULL) THEN 'Misc.'\n ELSE invcnt_tagnumber\n END AS f_tagnumber, \n formatDate(invcnt_tagdate) AS f_tagdate,\n item_number,\n item_descrip1,\n item_descrip2,\n warehous_code,\n CASE WHEN (invcnt_location_id IS NOT NULL)\n THEN (SELECT formatQty(SUM(itemloc_qty))\n FROM itemloc\n WHERE ((itemloc_itemsite_id=itemsite_id)\n AND (itemloc_location_id=invcnt_location_id)) )\n ELSE formatQty(itemsite_qtyonhand)\n END AS f_qoh,\n CASE WHEN (location_id IS NOT NULL)\n THEN location_name\n ELSE 'All' END AS location_name,\n CASE WHEN (invcnt_qoh_after IS NULL) THEN ''\n ELSE formatQty(invcnt_qoh_after)\n END AS f_cntqty,\n CASE WHEN (invcnt_qoh_after IS NULL) THEN ''\n ELSE formatQty(invcnt_qoh_after - itemsite_qtyonhand)\n END AS f_variance,\n CASE WHEN (invcnt_qoh_after IS NULL) THEN ''\n WHEN ((itemsite_qtyonhand = 0) AND (invcnt_qoh_after > 0)) THEN formatPrcnt(1)\n WHEN ((itemsite_qtyonhand = 0) AND (invcnt_qoh_after < 0)) THEN formatPrcnt(-1)\n WHEN ((itemsite_qtyonhand = 0) AND (invcnt_qoh_after = 0)) THEN formatPrcnt(0)\n ELSE formatPrcnt((1 - (invcnt_qoh_after / itemsite_qtyonhand)) * -1)\n END AS f_percent,\n formatExtPrice(stdcost(item_id) * (invcnt_qoh_after - itemsite_qtyonhand)) AS f_amount\n FROM invcnt LEFT OUTER JOIN location ON (invcnt_location_id=location_id),\n item, whsinfo, itemsite\n WHERE ((invcnt_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (NOT invcnt_posted)\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("classcode_id") ?>\n AND (item_classcode_id=<? value("classcode_id") ?>)\n<? elseif exists("classcode_pattern") ?>\n AND (item_classcode_id IN ( SELECT classcode_id\n FROM classcode\n WHERE (classcode_code ~ <? value("classcode_pattern") ?>)))\n<? elseif exists("plancode_id") ?>\n AND (itemsite_plancode_id=<? value("plancode_id") ?>)\n<? elseif exists("plancode_pattern") ?>\n AND (itemsite_plancode_id IN ( SELECT plancode_id\n FROM plancode\n WHERE (plancode_code ~ <? value("plancode_pattern") ?>)))\n<? endif ?>\n)\nORDER BY f_priority DESC, item_number\n<? if exists("maxTags") ?>\n LIMIT <? value("maxTags") ?>\n<? endif ?>\n \n \n 205\n \n \n \n \n 5\n 200\n 745\n 200\n 2\n \n \n \n \n 100\n 100\n 330\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n \n \n \n \n 100\n 80\n 330\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n code\n \n \n \n \n \n 0\n 80\n 95\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n codelbl\n \n \n \n \n \n \n \n \n 8\n \n \n 38\n \n \n \n \n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 55\n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_variance\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 295\n 15\n 104\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_tagdate\n \n \n \n \n 408\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n location_name\n \n \n \n \n 580\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_percent\n \n \n \n \n 494\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_cntqty\n \n \n \n \n 60\n 0\n 225\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_amount\n \n \n \n \n 295\n 0\n 104\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_tagnumber\n \n \n \n \n 408\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qoh\n \n \n \n \n 10\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 10\n 15\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_priority\n \n \n \n \n 60\n 15\n 225\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 60\n 30\n 225\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n
\n \n 21\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 39 CountTagsByClassCode \N \n\n Count Tags By Class Code\n CountTagsByClassCode\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("classcode_id") ?>\n ( SELECT (classcode_code || '-' || classcode_descrip)\n FROM classcode\n WHERE (classcode_id=<? value("classcode_id") ?>) )\n <? elseif exists("classcode_pattern") ?>\n text(<? value("classcode_pattern") ?>)\n <? else ?>\n text('All Class Codes')\n <? endif ?>\n AS classcode,\n <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse;\n \n \n detail\n SELECT invcnt_id, invcnt_tagnumber, warehous_code,\n item_number, item_descrip1, item_descrip2,\n formatDate(invcnt_tagdate) AS createddate,\n invcnt_tag_username AS createdby,\n CASE WHEN (invcnt_cntdate IS NULL) THEN ''\n ELSE formatDate(invcnt_cntdate)\n END AS entereddate,\n CASE WHEN (invcnt_cntdate IS NULL) THEN ''\n ELSE invcnt_cnt_username\n END AS enteredby,\n CASE WHEN (NOT invcnt_posted) THEN ''\n ELSE formatDate(invcnt_postdate)\n END AS posteddate,\n CASE WHEN (NOT invcnt_posted) THEN ''\n ELSE invcnt_post_username\n END AS postedby,\n CASE WHEN (NOT invcnt_posted) THEN ''\n ELSE formatQty(invcnt_qoh_before)\n END AS qohbefore,\n CASE WHEN (invcnt_qoh_after IS NULL) THEN ''\n ELSE formatQty(invcnt_qoh_after)\n END AS qohafter,\n CASE WHEN (NOT invcnt_posted) THEN ''\n ELSE formatQty(invcnt_qoh_after - invcnt_qoh_before)\n END AS variance,\n CASE WHEN (NOT invcnt_posted) THEN ''\n WHEN (invcnt_qoh_before=0) THEN formatScrap(1)\n ELSE formatScrap((1 - (invcnt_qoh_after / invcnt_qoh_before)) * -1)\n END AS percentage\n FROM invcnt, itemsite, item, whsinfo\n WHERE ((invcnt_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (date(invcnt_tagdate) BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n<? if not exists("showUnposted") ?>\n AND (invcnt_posted)\n<? endif ?>\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("classcode_id") ?>\n AND (item_classcode_id=<? value("classcode_id") ?>)\n<? elseif exists("classcode_pattern") ?>\n AND (item_classcode_id IN (SELECT classcode_id\n FROM classcode\n WHERE (classcode_code ~ <? value("classcode_pattern") ?>)))\n<? endif ?>\n)\nORDER BY invcnt_tagdate;\n \n \n 236\n \n \n \n \n \n \n \n \n 100\n 90\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n classcode\n \n \n \n \n \n \n \n \n \n \n \n 500\n 110\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n 500\n 90\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n 100\n 110\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n 5\n 229\n 745\n 229\n 2\n \n \n \n \n \n \n \n \n 6\n \n \n 66\n \n \n \n \n \n \n \n \n 5\n 60\n 745\n 60\n 2\n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 66\n \n \n 60\n 15\n 225\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 295\n 0\n 105\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invcnt_tagnumber\n \n \n \n \n 409\n 45\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qohbefore\n \n \n \n \n 409\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n createddate\n \n \n \n 5\n 60\n 745\n 60\n 0\n \n \n \n 580\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n postedby\n \n \n \n \n 495\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n enteredby\n \n \n \n \n 60\n 30\n 225\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 580\n 45\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n variance\n \n \n \n \n 409\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n createdby\n \n \n \n \n 10\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n posteddate\n \n \n \n \n 60\n 0\n 225\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 665\n 45\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n percentage\n \n \n \n \n 495\n 45\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qohafter\n \n \n \n \n 495\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n entereddate\n \n \n \n
\n \n 17\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 37 CountTagsByItem \N \n\n Count Tags By Item\n CountTagsByItem\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n item_descrip1,\n item_descrip2,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse\n FROM item\n WHERE (item_id=<? value("item_id") ?>);\n\n \n \n detail\n SELECT invcnt_tagnumber, warehous_code,\n formatDate(invcnt_tagdate) AS createddate,\n invcnt_tag_username AS createdby,\n CASE WHEN (invcnt_cntdate IS NULL) THEN ''\n ELSE formatDate(invcnt_cntdate)\n END AS entereddate,\n CASE WHEN (invcnt_cntdate IS NULL) THEN ''\n ELSE invcnt_cnt_username\n END AS enteredby,\n CASE WHEN (NOT invcnt_posted) THEN ''\n ELSE formatDate(invcnt_postdate)\n END AS posteddate,\n CASE WHEN (NOT invcnt_posted) THEN ''\n ELSE invcnt_post_username\n END AS postedby,\n CASE WHEN (NOT invcnt_posted) THEN ''\n ELSE formatQty(invcnt_qoh_before)\n END AS qohbefore,\n CASE WHEN (invcnt_qoh_after IS NULL) THEN ''\n ELSE formatQty(invcnt_qoh_after)\n END AS qohafter,\n CASE WHEN (NOT invcnt_posted) THEN ''\n ELSE formatQty(invcnt_qoh_after - invcnt_qoh_before)\n END AS variance,\n CASE WHEN (NOT invcnt_posted) THEN ''\n WHEN (invcnt_qoh_before=0) THEN formatScrap(1)\n ELSE formatScrap((1 - (invcnt_qoh_after / invcnt_qoh_before)) * -1)\n END AS percentage\n FROM invcnt, itemsite, whsinfo\n WHERE ((invcnt_itemsite_id=itemsite_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_item_id=<? value("item_id") ?>)\n AND (invcnt_tagdate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n<? if not exists("showUnposted") ?>\n AND (invcnt_posted)\n<? endif ?>\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n)\nORDER BY invcnt_tagdate;\n \n \n 236\n \n \n \n \n \n 515\n 80\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n \n 100\n 120\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n 5\n 229\n 740\n 229\n 2\n \n \n \n \n 100\n 145\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n 515\n 100\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n 100\n 80\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n \n \n 100\n 100\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n 5\n 30\n 740\n 30\n 2\n \n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 41\n \n 5\n 35\n 740\n 35\n 0\n \n \n \n 409\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qohbefore\n \n \n \n \n 50\n 0\n 105\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invcnt_tagnumber\n \n \n \n \n 245\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n enteredby\n \n \n \n \n 165\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n createddate\n \n \n \n \n 325\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n posteddate\n \n \n \n \n 495\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qohafter\n \n \n \n \n 10\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 665\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n percentage\n \n \n \n \n 165\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n createdby\n \n \n \n \n 325\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n postedby\n \n \n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n variance\n \n \n \n \n 245\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n entereddate\n \n \n \n
\n \n 16\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 297 DepartmentsMasterList \N \n\n Departments Master List\n DepartmentsMasterList\n \n Letter\n \n 100\n 100\n 100\n 100\n \n deptQuery\n SELECT dept_number, dept_name\nFROM dept\nORDER BY dept_number;\n \n \n \n 103\n \n \n 2\n 100\n 647\n 100\n 0\n \n \n \n 1\n 72\n 646\n 72\n 0\n \n \n \n
\n main\n \n \n deptQuery\n \n 31\n \n \n 180\n 10\n 200\n 20\n \n \n Arial\n 12\n normal\n \n \n \n \n deptQuery\n dept_name\n \n \n \n \n 15\n 10\n 150\n 20\n \n \n Arial\n 12\n normal\n \n \n \n \n deptQuery\n dept_number\n \n \n \n
\n
\n \N 0 2013-07-26 16:17:54.38447 408 FreightPricesByCustomer \N \n\n Freight Prices By Customer\n FreightPricesByCustomer\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT cust_name,\n addr_line1 AS cust_address1,\n addr_line2 AS cust_address2,\n addr_line3 AS cust_address3,\n <? if exists("showExpired") ?>\n text('Yes')\n <? else ?>\n text('No')\n <? endif ?>\n AS f_showexpired,\n <? if exists("showFuture") ?>\n text('Yes')\n <? else ?>\n text('No')\n <? endif ?>\n AS f_showfuture\n FROM custinfo\n LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id)\n LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id)\nWHERE (cust_id=<? value("cust_id") ?>);\n\n \n \n detail\n SELECT itemid, sourcetype, ipshead_name, source,\n formatQty(ipsfreight_qtybreak) AS f_qtybreak,\n formatSalesPrice(ipsfreight_price) AS f_price,\n CASE WHEN (ipsfreight_type = 'F') THEN 'Flat Rate'\n ELSE 'Per UOM'\n END AS method,\n currConcat(ipshead_curr_id) AS currConcat,\n CASE WHEN (warehous_code IS NULL) THEN 'Any' ELSE warehous_code END AS f_warehous,\n CASE WHEN (shipzone_name IS NULL) THEN 'Any' ELSE shipzone_name END AS f_shipzone,\n CASE WHEN (freightclass_code IS NULL) THEN 'Any' ELSE freightclass_code END AS f_freightclass,\n CASE WHEN (ipsfreight_shipvia IS NULL) THEN 'Any' ELSE ipsfreight_shipvia END AS f_shipvia\n\nFROM ( SELECT ipsfreight_id AS itemid, 1 AS sourcetype,\n ipshead_name, 'Customer' AS source,\n ipsfreight_qtybreak, ipsfreight_price,\n ipsfreight_type, ipshead_curr_id,\n warehous_code, shipzone_name, freightclass_code, ipsfreight_shipvia\nFROM ipsass JOIN ipshead ON (ipshead_id=ipsass_ipshead_id)\n JOIN ipsfreight ON (ipsfreight_ipshead_id=ipshead_id)\n LEFT OUTER JOIN whsinfo ON (warehous_id=ipsfreight_warehous_id)\n LEFT OUTER JOIN shipzone ON (shipzone_id=ipsfreight_shipzone_id)\n LEFT OUTER JOIN freightclass ON (freightclass_id=ipsfreight_freightclass_id)\nWHERE ( (ipsass_cust_id=<? value("cust_id") ?>)\n AND (COALESCE(LENGTH(ipsass_shipto_pattern), 0) = 0)\n\n<? if not exists("showExpired") ?>\n AND (ipshead_expires > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (ipshead_effective <= CURRENT_DATE)\n<? endif ?>\n\n)\nUNION SELECT ipsfreight_id AS itemid, 2 AS sourcetype,\n ipshead_name, 'CustType' AS source,\n ipsfreight_qtybreak, ipsfreight_price,\n ipsfreight_type, ipshead_curr_id,\n warehous_code, shipzone_name, freightclass_code, ipsfreight_shipvia\nFROM ipsass JOIN ipshead ON (ipshead_id=ipsass_ipshead_id)\n JOIN ipsfreight ON (ipsfreight_ipshead_id=ipshead_id)\n JOIN custinfo ON (cust_custtype_id=ipsass_custtype_id)\n LEFT OUTER JOIN whsinfo ON (warehous_id=ipsfreight_warehous_id)\n LEFT OUTER JOIN shipzone ON (shipzone_id=ipsfreight_shipzone_id)\n LEFT OUTER JOIN freightclass ON (freightclass_id=ipsfreight_freightclass_id)\nWHERE ( (cust_id=<? value("cust_id") ?>)\n \n<? if not exists("showExpired") ?>\n AND (ipshead_expires > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (ipshead_effective <= CURRENT_DATE)\n<? endif ?>\n\n)\nUNION SELECT ipsfreight_id AS itemid, 3 AS sourcetype,\n ipshead_name, 'CustTypePattern' AS source,\n ipsfreight_qtybreak, ipsfreight_price,\n ipsfreight_type, ipshead_curr_id,\n warehous_code, shipzone_name, freightclass_code, ipsfreight_shipvia\nFROM custinfo JOIN custtype ON (custtype_id=cust_custtype_id)\n JOIN ipsass ON ((coalesce(length(ipsass_custtype_pattern), 0) > 0) AND\n (custtype_code ~ ipsass_custtype_pattern))\n JOIN ipshead ON (ipshead_id=ipsass_ipshead_id)\n JOIN ipsfreight ON (ipsfreight_ipshead_id=ipshead_id)\n LEFT OUTER JOIN whsinfo ON (warehous_id=ipsfreight_warehous_id)\n LEFT OUTER JOIN shipzone ON (shipzone_id=ipsfreight_shipzone_id)\n LEFT OUTER JOIN freightclass ON (freightclass_id=ipsfreight_freightclass_id)\nWHERE ( (cust_id=<? value("cust_id") ?>)\n \n<? if not exists("showExpired") ?>\n AND (ipshead_expires > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (ipshead_effective <= CURRENT_DATE)\n<? endif ?>\n\n)\nUNION SELECT ipsfreight_id AS itemid, 4 AS sourcetype,\n ipshead_name, ('Sale' || '-' || sale_name) AS source,\n ipsfreight_qtybreak, ipsfreight_price,\n ipsfreight_type, ipshead_curr_id,\n warehous_code, shipzone_name, freightclass_code, ipsfreight_shipvia\nFROM sale JOIN ipshead ON (ipshead_id=sale_ipshead_id)\n JOIN ipsfreight ON (ipsfreight_ipshead_id=ipshead_id)\n LEFT OUTER JOIN whsinfo ON (warehous_id=ipsfreight_warehous_id)\n LEFT OUTER JOIN shipzone ON (shipzone_id=ipsfreight_shipzone_id)\n LEFT OUTER JOIN freightclass ON (freightclass_id=ipsfreight_freightclass_id)\nWHERE ((TRUE)\n \n<? if not exists("showExpired") ?>\n AND (sale_enddate > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (sale_startdate <= CURRENT_DATE)\n<? endif ?>\n\n) ) AS data\nORDER BY ipsfreight_qtybreak, ipsfreight_price;\n \n \n 234\n \n \n 100\n 140\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_address3\n \n \n \n \n \n \n \n 565\n 100\n 113\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_showexpired\n \n \n \n \n \n 100\n 120\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_address2\n \n \n \n \n \n \n \n 565\n 120\n 113\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_showfuture\n \n \n \n \n \n \n \n 100\n 80\n 605\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_name\n \n \n \n \n 100\n 100\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_address1\n \n \n \n 5\n 228\n 745\n 228\n 2\n \n \n \n \n \n \n \n \n 6\n \n \n 41\n \n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 56\n \n \n 150\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_price\n \n \n \n 5\n 50\n 745\n 50\n 0\n \n \n \n 480\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_freightclass\n \n \n \n \n 245\n 15\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n currConcat\n \n \n \n \n 10\n 0\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ipshead_name\n \n \n \n \n 10\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n source\n \n \n \n \n 360\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_warehous\n \n \n \n \n 360\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_shipzone\n \n \n \n \n 245\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n method\n \n \n \n \n 480\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_shipvia\n \n \n \n \n 150\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtybreak\n \n \n \n
\n \n 16\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 407 FreightPricesByCustomerType \N \n\n Freight Prices By Customer Type\n FreightPricesByCustomerType\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT (custtype_code || '-' || custtype_descrip) as custtype,\n <? if exists("showExpired") ?>\n text('Yes')\n <? else ?>\n text('No')\n <? endif ?>\n AS f_showexpired,\n <? if exists("showFuture") ?>\n text('Yes')\n <? else ?>\n text('No')\n <? endif ?>\n AS f_showfuture\n FROM custtype\n WHERE (custtype_id=<? value("custtype_id") ?>);\n\n \n \n detail\n SELECT itemid, sourcetype, ipshead_name, source,\n formatQty(ipsfreight_qtybreak) AS f_qtybreak,\n formatSalesPrice(ipsfreight_price) AS f_price,\n CASE WHEN (ipsfreight_type = 'F') THEN 'Flat Rate'\n ELSE 'Per UOM'\n END AS method,\n currConcat(ipshead_curr_id) AS currConcat,\n CASE WHEN (warehous_code IS NULL) THEN 'Any' ELSE warehous_code END AS f_warehous,\n CASE WHEN (shipzone_name IS NULL) THEN 'Any' ELSE shipzone_name END AS f_shipzone,\n CASE WHEN (freightclass_code IS NULL) THEN 'Any' ELSE freightclass_code END AS f_freightclass,\n CASE WHEN (ipsfreight_shipvia IS NULL) THEN 'Any' ELSE ipsfreight_shipvia END AS f_shipvia\n\nFROM ( SELECT ipsfreight_id AS itemid, 1 AS sourcetype,\n ipshead_name, 'CustType' AS source,\n ipsfreight_qtybreak, ipsfreight_price,\n ipsfreight_type, ipshead_curr_id,\n warehous_code, shipzone_name, freightclass_code, ipsfreight_shipvia\nFROM ipsass JOIN ipshead ON (ipshead_id=ipsass_ipshead_id)\n JOIN ipsfreight ON (ipsfreight_ipshead_id=ipshead_id)\n LEFT OUTER JOIN whsinfo ON (warehous_id=ipsfreight_warehous_id)\n LEFT OUTER JOIN shipzone ON (shipzone_id=ipsfreight_shipzone_id)\n LEFT OUTER JOIN freightclass ON (freightclass_id=ipsfreight_freightclass_id)\nWHERE ( (ipsass_custtype_id=<? value("custtype_id") ?>)\n \n<? if not exists("showExpired") ?>\n AND (ipshead_expires > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (ipshead_effective <= CURRENT_DATE)\n<? endif ?>\n\n)\nUNION SELECT ipsfreight_id AS itemid, 2 AS sourcetype,\n ipshead_name, 'CustTypePattern' AS source,\n ipsfreight_qtybreak, ipsfreight_price,\n ipsfreight_type, ipshead_curr_id,\n warehous_code, shipzone_name, freightclass_code, ipsfreight_shipvia\nFROM custtype JOIN ipsass ON ((coalesce(length(ipsass_custtype_pattern), 0) > 0) AND\n (custtype_code ~ ipsass_custtype_pattern))\n JOIN ipshead ON (ipshead_id=ipsass_ipshead_id)\n JOIN ipsfreight ON (ipsfreight_ipshead_id=ipshead_id)\n LEFT OUTER JOIN whsinfo ON (warehous_id=ipsfreight_warehous_id)\n LEFT OUTER JOIN shipzone ON (shipzone_id=ipsfreight_shipzone_id)\n LEFT OUTER JOIN freightclass ON (freightclass_id=ipsfreight_freightclass_id)\nWHERE ( (custtype_id=<? value("custtype_id") ?>)\n \n<? if not exists("showExpired") ?>\n AND (ipshead_expires > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (ipshead_effective <= CURRENT_DATE)\n<? endif ?>\n\n)\nUNION SELECT ipsfreight_id AS itemid, 3 AS sourcetype,\n ipshead_name, ('Sale' || '-' || sale_name) AS source,\n ipsfreight_qtybreak, ipsfreight_price,\n ipsfreight_type, ipshead_curr_id,\n warehous_code, shipzone_name, freightclass_code, ipsfreight_shipvia\nFROM sale JOIN ipshead ON (ipshead_id=sale_ipshead_id)\n JOIN ipsfreight ON (ipsfreight_ipshead_id=ipshead_id)\n LEFT OUTER JOIN whsinfo ON (warehous_id=ipsfreight_warehous_id)\n LEFT OUTER JOIN shipzone ON (shipzone_id=ipsfreight_shipzone_id)\n LEFT OUTER JOIN freightclass ON (freightclass_id=ipsfreight_freightclass_id)\nWHERE ((TRUE)\n\n<? if not exists("showExpired") ?>\n AND (ipshead_expires > CURRENT_DATE)\n<? endif ?>\n<? if not exists("showFuture") ?>\n AND (ipshead_effective <= CURRENT_DATE)\n<? endif ?>\n\n) ) AS data\nORDER BY ipsfreight_qtybreak, ipsfreight_price;\n\n \n \n 233\n \n \n \n \n \n \n \n \n \n 565\n 100\n 112\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_showexpired\n \n \n \n \n \n 565\n 120\n 112\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_showfuture\n \n \n \n \n 5\n 227\n 745\n 227\n 2\n \n \n \n \n \n 125\n 80\n 535\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n custtype\n \n \n \n \n \n \n \n \n 6\n \n \n 41\n \n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 56\n \n \n 360\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_shipzone\n \n \n \n \n 245\n 15\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n currConcat\n \n \n \n \n 480\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_shipvia\n \n \n \n \n 150\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_price\n \n \n \n \n 10\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n source\n \n \n \n \n 245\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n method\n \n \n \n \n 360\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_warehous\n \n \n \n \n 10\n 0\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ipshead_name\n \n \n \n 5\n 50\n 745\n 50\n 0\n \n \n \n 150\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtybreak\n \n \n \n \n 480\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_freightclass\n \n \n \n
\n \n 16\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 242 GLSeries \N \n\n G/L Series\n GLSeries\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? value("title") ?> AS title,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("sourceLit") ?>\n text(<? value("sourceLit") ?>)\n <? else ?>\n text('All Sources')\n <? endif ?>\n AS sourceLit,\n <? if exists("startJrnlnum") ?>\n text('Start Journal Number:')\n <? else ?>\n text('')\n <? endif ?>\n AS startJrnlnumLit,\n <? if exists("endJrnlnum") ?>\n text('End Journal Number:')\n <? else ?>\n text('')\n <? endif ?>\n AS endJrnlnumLit;\n \n \n detail\n <? if exists("gltrans") ?>\nSELECT gltrans_id,\n gltrans_sequence,\n formatDate(gltrans_date) AS transdate,\n gltrans_journalnumber,\n gltrans_source,\n gltrans_doctype,\n gltrans_docnumber,\n (formatGLAccount(accnt_id) || ' - ' || accnt_descrip) AS account,\n firstLine(gltrans_notes) AS f_notes,\n CASE WHEN (gltrans_amount < 0) THEN formatMoney(gltrans_amount * -1)\n ELSE ''\n END AS f_debit,\n CASE WHEN (gltrans_amount > 0) THEN formatMoney(gltrans_amount)\n ELSE ''\n END AS f_credit,\n CASE WHEN (gltrans_amount < 0) THEN (gltrans_amount * -1)\n ELSE 0.0\n END AS debit,\n CASE WHEN (gltrans_amount > 0) THEN (gltrans_amount)\n ELSE 0.0\n END AS credit,\n formatBoolYN(gltrans_posted) AS f_posted\n FROM gltrans, accnt\n WHERE ((gltrans_accnt_id=accnt_id)\n AND (NOT gltrans_deleted)\n<? if exists("startDate") ?>\n AND (gltrans_date BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n<? endif ?>\n<? if exists("source") ?>\n AND (gltrans_source=<? value("source") ?>)\n<? endif ?>\n<? if exists("startJrnlnum") ?>\n AND (gltrans_journalnumber BETWEEN <? value("startJrnlnum") ?> AND <? value("endJrnlnum") ?>)\n<? endif ?>\n )\nORDER BY gltrans_date, gltrans_sequence, gltrans_amount DESC;\n<? else ?>\nSELECT sltrans_id AS gltrans_id,\n sltrans_sequence AS gltrans_sequence,\n formatDate(sltrans_date) AS transdate,\n sltrans_journalnumber AS gltrans_journalnumber,\n sltrans_source AS gltrans_source,\n sltrans_doctype AS gltrans_doctype,\n sltrans_docnumber AS gltrans_docnumber,\n (formatGLAccount(accnt_id) || ' - ' || accnt_descrip) AS account,\n firstLine(sltrans_notes) AS f_notes,\n CASE WHEN (sltrans_amount < 0) THEN formatMoney(sltrans_amount * -1)\n ELSE ''\n END AS f_debit,\n CASE WHEN (sltrans_amount > 0) THEN formatMoney(sltrans_amount)\n ELSE ''\n END AS f_credit,\n CASE WHEN (sltrans_amount < 0) THEN (sltrans_amount * -1)\n ELSE 0.0\n END AS debit,\n CASE WHEN (sltrans_amount > 0) THEN (sltrans_amount)\n ELSE 0.0\n END AS credit,\n formatBoolYN(sltrans_posted) AS f_posted\n FROM sltrans, accnt\n WHERE ((sltrans_accnt_id=accnt_id)\n<? if exists("startDate") ?>\n AND (sltrans_date BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n<? endif ?>\n<? if exists("source") ?>\n AND (sltrans_source=<? value("source") ?>)\n<? endif ?>\n<? if exists("startJrnlnum") ?>\n AND (sltrans_journalnumber BETWEEN <? value("startJrnlnum") ?> AND <? value("endJrnlnum") ?>)\n<? endif ?>\n )\nORDER BY sltrans_date, sltrans_sequence, sltrans_amount DESC;\n<? endif ?>\n \n \n 206\n \n \n \n \n \n 545\n 120\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n startJrnlnum\n \n \n \n \n 140\n 70\n 290\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n sourceLit\n \n \n \n \n \n \n \n \n 545\n 90\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n 340\n 140\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n endJrnlnumLit\n \n \n \n 5\n 200\n 745\n 200\n 2\n \n \n \n \n 545\n 70\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n 340\n 120\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n startJrnlnumLit\n \n \n \n \n 545\n 140\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n endJrnlnum\n \n \n \n \n \n 440\n 7\n 300\n 35\n \n \n Arial\n 18\n bold\n \n \n \n \n head\n title\n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n
\n detail\n \n detail\n gltrans_sequence\n \n 16\n \n \n 95\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_journalnumber\n \n \n \n \n 680\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_posted\n \n \n \n \n 160\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_doctype\n \n \n \n \n 330\n 0\n 175\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_notes\n \n \n \n \n 10\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n transdate\n \n \n \n \n 245\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_docnumber\n \n \n \n \n 95\n 15\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_source\n \n \n \n \n \n \n detail\n \n 16\n \n \n 595\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_credit\n \n \n \n \n 330\n 0\n 175\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n account\n \n \n \n \n 509\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_debit\n \n \n \n
\n \n 21\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 35\n \n \n 510\n 5\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n debit\n \n %0.2f\n \n \n \n \n 595\n 5\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n credit\n \n %0.2f\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 243 GLTransactions \N \n\n G/L Transactions\n GLTransactions\n detail query modified to accomodate "Company", "Profit Center", "Account", "Sub", "Type" & "Sub-Type" filters.\n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("source") ?>\n text(<? value("source") ?>)\n <? else ?>\n text('All Sources')\n <? endif ?>\n AS source,\n <? if exists("accnt_id") ?>\n ( SELECT (accnt_number || '-' || accnt_descrip)\n FROM accnt\n WHERE (accnt_id=<? value("accnt_id") ?>) )\n <? else ?>\n text('All Accounts')\n <? endif ?>\n AS accnt,\n <? if exists("showUsernames") ?>\n text('Username')\n <? else ?>\n text('')\n <? endif ?>\n AS f_username\n \n \n detail\n <? if exists("beginningBalance") ?>\nSELECT -1 AS gltrans_id,\n <? value("startDate") ?> AS gltrans_created, formatDate(<? value("startDate") ?>) AS transdate,\n '' AS gltrans_source, '' AS gltrans_doctype, '' AS gltrans_docnumber, '' AS invhist_docnumber,\n 'Beginning Balance' AS transnotes,\n (formatGLAccount(accnt_id) || ' - ' || accnt_descrip) AS account,\n '' AS f_debit,\n 0.0 AS debit_amt,\n '' AS f_credit,\n 0.0 AS credit_amt,\n <? value("beginningBalance") ?> AS balance_amt,\n <? value("beginningBalance") ?> AS gltrans_amount,\n <? value("beginningBalance") ?> AS running,\n NULL AS f_posted,\n NULL AS f_deleted,\n NULL AS f_username,\n -1 AS gltrans_sequence\n FROM accnt\n WHERE (accnt_id=<? value("accnt_id") ?>)\nUNION\n<? endif ?>\n\nSELECT gltrans_id,\n gltrans_created, formatDate(gltrans_date) AS transdate,\n gltrans_source, gltrans_doctype, gltrans_docnumber, invhist_docnumber,\n firstLine(gltrans_notes) AS transnotes,\n (formatGLAccount(accnt_id) || ' - ' || accnt_descrip) AS account,\n-- Debits:\n CASE WHEN (gltrans_amount < 0 AND NOT gltrans_deleted) THEN formatMoney(ABS(gltrans_amount))\n ELSE ''\n END AS f_debit, \n CASE WHEN (gltrans_amount < 0 AND NOT gltrans_deleted) THEN ABS(gltrans_amount)\n ELSE 0\n END AS debit_amt, \n--Credits:\n CASE WHEN (gltrans_amount > 0 AND NOT gltrans_deleted) THEN formatMoney(gltrans_amount)\n ELSE ''\n END AS f_credit,\n CASE WHEN (gltrans_amount > 0 AND NOT gltrans_deleted) THEN gltrans_amount\n ELSE 0\n END AS credit_amt,\n--Balance:\n CASE WHEN (accnt_type IN ('A','E') AND NOT gltrans_deleted) THEN \n gltrans_amount * -1\n WHEN (NOT gltrans_deleted) THEN \n gltrans_amount \n ELSE 0 END AS balance_amt,\n gltrans_amount,\n CASE WHEN (accnt_type IN ('A','E') AND NOT gltrans_deleted) THEN \n gltrans_amount * -1\n WHEN (NOT gltrans_deleted) THEN \n gltrans_amount \n ELSE 0 END AS running,\n formatBoolYN(gltrans_posted) AS f_posted,\n formatBoolYN(gltrans_deleted) AS f_deleted,\n gltrans_username AS f_username,\n gltrans_sequence\nFROM gltrans JOIN accnt ON (gltrans_accnt_id=accnt_id) \n LEFT OUTER JOIN invhist ON (gltrans_misc_id=invhist_id\n AND gltrans_docnumber='Misc.') \n<? if exists("company_id") ?>\n JOIN company ON (accnt_company=company_number) \n<? endif ?>\n<? if exists("prfcntr_id") ?>\n JOIN prftcntr ON (accnt_profit=prftcntr_number) \n<? endif ?>\n<? if exists("subaccnt_id") ?>\n JOIN subaccnt ON (accnt_sub=subaccnt_number) \n<? endif ?>\n<? if exists("subType") ?>\n JOIN subaccnttype ON (subaccnttype_code=accnt_subaccnttype_code) \n<? endif ?>\nWHERE (\n<? if exists("startDate") ?>\n <? if exists("endDate") ?>\n (gltrans_date BETWEEN <? value("startDate") ?>\n AND <? value("endDate") ?>)\n <? else ?>\n (gltrans_date BETWEEN <? value("startDate") ?>\n AND endoftime())\n <? endif ?>\n<? else ?>\n <? if exists("endDate") ?>\n (gltrans_date BETWEEN startoftime()\n AND <? value("endDate") ?>)\n <? else ?>\n (gltrans_date BETWEEN startoftime()\n AND endoftime())\n <? endif ?>\n<? endif ?>\n<? if not exists("showDeleted") ?>\n AND (NOT gltrans_deleted)\n<? endif ?>\n<? if exists("company_id") ?>\n AND (company_id=<? value("company_id") ?>)\n<? endif ?>\n<? if exists("prfcntr_id") ?>\n AND (prftcntr_id=<? value("prfcntr_id") ?>)\n<? endif ?>\n<? if exists("accnt_number") ?>\n AND (accnt_number=<? value("accnt_number") ?>)\n<? endif ?>\n<? if exists("subaccnt_id") ?>\n AND (subaccnt_id=<? value("subaccnt_id") ?>)\n<? endif ?>\n<? if exists("subType") ?>\n AND (subaccnttype_id=<? value("subType") ?>)\n<? endif ?>\n<? if exists("accntType") ?>\n AND (accnt_type= <? value("accntType") ?>)\n<? endif ?>\n<? if exists("accnt_id") ?>\n AND (gltrans_accnt_id=<? value("accnt_id") ?>)\n<? endif ?>\n<? if exists("docnum") ?>\n AND (gltrans_docnumber = case when <? value("docnum") ?> = '' then \n gltrans_docnumber else \n<? value("docnum") ?> end ) \n<? endif ?>\n<? if exists("source") ?>\n AND (gltrans_source=<? value("source") ?>)\n<? endif ?>\n )\nORDER BY gltrans_created <? if not exists("beginningBalance") ?> DESC <? endif ?>,\n gltrans_sequence, gltrans_amount\n\n;\n \n \n 205\n \n \n \n \n \n \n \n \n 0\n 200\n 1000\n 200\n 2\n \n \n \n \n \n \n 900\n 185\n 50\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_username\n \n \n \n \n \n \n 10\n 50\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 5\n \n \n 45\n \n \n \n \n 0\n 40\n 1000\n 40\n 2\n \n \n \n \n \n \n \n \n 900\n 25\n 50\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_username\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 30\n \n \n 900\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_username\n \n \n \n \n 240\n 15\n 265\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n transnotes\n \n \n \n \n 960\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_posted\n \n \n \n \n 12500\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_doctype\n \n \n \n \n 125\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_doctype\n \n \n \n \n 0\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n transdate\n \n \n \n \n 65\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_source\n \n \n \n \n 180\n 15\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invhist_docnumber\n \n \n \n \n 180\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_docnumber\n \n \n \n \n 240\n 0\n 270\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n account\n \n \n \n \n 960\n 15\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_deleted\n \n \n \n \n 540\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_debit\n \n \n \n \n 780\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n running\n \n qty\n \n \n \n \n 660\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_credit\n \n \n \n
\n \n 41\n \n \n 958\n 7\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 87\n 7\n 100\n 20\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 49\n \n 534\n 6\n 999\n 6\n 2\n \n \n \n \n \n 660\n 25\n 100\n 14\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n credit_amt\n \n money\n \n \n \n \n 540\n 25\n 100\n 14\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n debit_amt\n \n money\n \n \n \n \n 777\n 25\n 100\n 14\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n balance_amt\n \n money\n \n \n \n
\n detail query modified to accomodate "Company", "Profit Center", "Account", "Sub", "Type" & "Sub-Type" filters. 0 2013-07-26 16:17:54.38447 420 Image \N \n\n Image\n Image\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT image_name,\n image_descrip,\n image_data\n FROM image\n WHERE (image_id=<? value("image_id") ?>);\n \n \n 706\n \n \n \n \n 10\n 110\n 730\n 600\n \n stretch\n \n head\n image_data\n \n \n \n \n 130\n 65\n 360\n 15\n \n 0\n \n Arial\n 8\n bold\n \n \n \n \n head\n image_descrip\n \n \n \n \n 130\n 50\n 140\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n image_name\n \n \n \n \n \n 17\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n\n \N 0 2013-07-26 16:17:54.38447 316 IncidentCategoriesList \N \n\n Incident Categories\n IncidentCategoriesList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT incdtcat_name, incdtcat_order, incdtcat_descrip\n FROM incdtcat\nORDER BY incdtcat_order, incdtcat_name;\n \n \n 76\n \n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n 6\n \n \n 21\n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 250\n 0\n 500\n 15\n \n 0\n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdtcat_descrip\n \n \n \n \n 10\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdtcat_order\n \n \n \n \n 100\n 0\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdtcat_name\n \n \n \n
\n \n 16\n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 318 IncidentResolutionsList \N \n\n Incident Resolutions\n IncidentResolutionsList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT incdtresolution_name, incdtresolution_order, incdtresolution_descrip\n FROM incdtresolution\nORDER BY incdtresolution_order, incdtresolution_name;\n \n \n 76\n \n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n 6\n \n \n 21\n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 250\n 0\n 500\n 15\n \n 0\n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdtresolution_descrip\n \n \n \n \n 10\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdtresolution_order\n \n \n \n \n 100\n 0\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdtresolution_name\n \n \n \n
\n \n 16\n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 319 IncidentSeveritiesList \N \n\n Incident Severities\n IncidentSeveritiesList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT incdtseverity_name, incdtseverity_order, incdtseverity_descrip\n FROM incdtseverity\nORDER BY incdtseverity_order, incdtseverity_name;\n \n \n 76\n \n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n 6\n \n \n 21\n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 250\n 0\n 500\n 15\n \n 0\n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdtseverity_descrip\n \n \n \n \n 10\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdtseverity_order\n \n \n \n \n 100\n 0\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdtseverity_name\n \n \n \n
\n \n 16\n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 289 DepositsRegister \N \n\n Deposits Register\n DepositsRegister\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("showUsernames") ?>\n text('Username')\n <? else ?>\n text('')\n <? endif ?>\n AS f_username\n \n \n detail\n SELECT trans_id,\n trans_journalnumber,\n formatDate(trans_date) AS transdate,\n trans_source,\n trans_doctype,\n trans_docnumber,\n firstLine(trans_notes) AS transnotes,\n (formatGLAccount(accnt_id) || ' - ' || accnt_descrip) AS account,\n trans_username,\n formatBoolYN(trans_posted) AS f_posted,\n-- Debits:\n CASE WHEN (trans_amount < 0) THEN formatMoney(ABS(trans_amount))\n ELSE ''\n END AS f_debit, \n CASE WHEN (trans_amount < 0) THEN ABS(trans_amount)\n ELSE 0\n END AS debit_amt, \n--Credits:\n CASE WHEN (trans_amount > 0) THEN formatMoney(trans_amount)\n ELSE ''\n END AS f_credit,\n CASE WHEN (trans_amount > 0) THEN trans_amount\n ELSE 0\n END AS credit_amt,\n--Balance:\n trans_amount * -1 as balance_amt,\n--AROPEN Amount\n formatMoney(currtobase(aropen_curr_id,(aropen_amount - aropen_paid),aropen_docdate)) AS f_aropen_bal,\n currtobase(aropen_curr_id,(aropen_amount - aropen_paid),aropen_docdate) AS aropen_bal\n\nFROM (\nSELECT gltrans_id AS trans_id, gltrans_date AS trans_date, gltrans_created AS trans_created,\n gltrans_source AS trans_source, gltrans_doctype AS trans_doctype, gltrans_sequence AS trans_sequence,\n gltrans_docnumber AS trans_docnumber, gltrans_notes AS trans_notes, gltrans_amount AS trans_amount,\n gltrans_journalnumber AS trans_journalnumber, gltrans_username AS trans_username,\n gltrans_posted AS trans_posted,\n accnt_id, accnt_descrip,\n aropen_amount, aropen_paid, aropen_curr_id, aropen_docdate\nFROM gltrans LEFT OUTER JOIN aropen ON ((text(gltrans_docnumber) = 'I-' || text(aropen_docnumber))\n AND (aropen_doctype='I')), accnt\nWHERE ((gltrans_accnt_id=accnt_id)\n AND (gltrans_doctype = 'CR')\n AND (gltrans_date BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>) )\nUNION\nSELECT sltrans_id AS trans_id, sltrans_date AS trans_date, sltrans_created AS trans_created,\n sltrans_source AS trans_source, sltrans_doctype AS trans_doctype, sltrans_sequence AS trans_sequence,\n sltrans_docnumber AS trans_docnumber, sltrans_notes AS trans_notes, sltrans_amount AS trans_amount,\n sltrans_journalnumber AS trans_journalnumber, sltrans_username AS trans_username,\n sltrans_posted AS trans_posted,\n accnt_id, accnt_descrip,\n aropen_amount, aropen_paid, aropen_curr_id, aropen_docdate\nFROM sltrans LEFT OUTER JOIN aropen ON ((text(sltrans_docnumber) = 'I-' || text(aropen_docnumber))\n AND (aropen_doctype='I')), accnt\nWHERE ((sltrans_accnt_id=accnt_id)\n AND (sltrans_doctype = 'CR')\n AND (sltrans_date BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>) )\n ) AS data\n\nORDER BY trans_created DESC, trans_sequence, trans_amount;\n \n \n 206\n \n \n 0\n 200\n 1000\n 200\n 2\n \n \n \n \n \n \n \n \n \n 175\n 90\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 175\n 70\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n 6\n \n \n 57\n \n \n \n \n \n \n \n \n \n \n 0\n 50\n 1000\n 50\n 2\n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 21\n \n \n 12500\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n trans_doctype\n \n \n \n \n 202\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n trans_docnumber\n \n \n \n \n 892\n 0\n 65\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n trans_username\n \n \n \n \n 55\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n transdate\n \n \n \n \n 160\n 0\n 25\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n trans_doctype\n \n \n \n \n 310\n 0\n 175\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n account\n \n \n \n \n 490\n 0\n 95\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n transnotes\n \n \n \n \n 695\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_credit\n \n \n \n \n 963\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_posted\n \n \n \n \n 600\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_debit\n \n \n \n \n 0\n 0\n 45\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n trans_journalnumber\n \n \n \n \n 790\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_aropen_bal\n \n \n \n \n 120\n 0\n 25\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n trans_source\n \n \n \n
\n \n \n 78\n \n \n \n 695\n 25\n 75\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n credit_amt\n \n money\n \n \n \n \n 600\n 25\n 80\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n debit_amt\n \n money\n \n \n \n \n 960\n 60\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 60\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 605\n 5\n 1015\n 6\n 2\n \n \n \n 790\n 25\n 75\n 12\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n aropen_bal\n \n qty\n \n \n \n \n 21\n \n \n 960\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 25 DetailedInventoryHistoryByLocation \N \n\n Detailed Inventory History by Location\n DetailedInventoryHistoryByLocation\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatLocationName(location_id) AS locationname,\n firstLine(location_descrip) as f_descrip,\n formatBoolYN(location_netable) AS f_netable,\n formatBoolYN(location_restrict) AS f_restrict,\n warehous_code AS warehouse,\n formatDate(<? value("startDate") ?>) AS startdate,\n formatDate(<? value("endDate") ?>) AS enddate\n FROM location, whsinfo\n WHERE ((location_id=<? value("location_id") ?>)\n AND (location_warehous_id=warehous_id) );\n\n \n \n detail\n SELECT invhist_id,\n formatDateTime(invhist_transdate) AS transdate,\n invhist_transtype,\n (invhist_ordtype || '-' || invhist_ordnumber) AS ordernumber,\n invhist_invuom,\n item_number,\n item_descrip1,\n item_descrip2,\n formatlotserialnumber(invdetail_ls_id) AS invdetail_lotserial,\n formatQty(invdetail_qty) AS transqty,\n formatQty(invdetail_qty_before) AS qohbefore,\n formatQty(invdetail_qty_after) AS qohafter,\n invhist_user AS username,\n (select warehous_code from whsinfo where warehous_id=itemsite_warehous_id) as warehous_code\n FROM invdetail, invhist, itemsite, item\n WHERE ((invdetail_invhist_id=invhist_id)\n AND (invhist_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (invdetail_location_id=<? value("location_id") ?>)\n AND (date(invhist_transdate) BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n AND (transType(invhist_transtype, <? value("transType") ?>))\n)\nORDER BY invhist_transdate DESC, invhist_transtype;\n \n \n 251\n \n \n \n \n 140\n 104\n 375\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_descrip\n \n \n \n \n \n \n 140\n 85\n 375\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n locationname\n \n \n \n \n \n \n 508\n 150\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n 140\n 130\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n \n 508\n 130\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n 600\n 104\n 65\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_restrict\n \n \n \n \n \n \n \n \n \n \n 600\n 85\n 65\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_netable\n \n \n \n 5\n 245\n 745\n 245\n 2\n \n \n \n \n \n \n \n \n 6\n \n \n 51\n \n \n \n \n \n \n 5\n 45\n 745\n 45\n 2\n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 51\n \n \n 585\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qohbefore\n \n \n \n \n 508\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n transqty\n \n \n \n \n 60\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n transdate\n \n \n \n \n 433\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invhist_invuom\n \n \n \n \n 60\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ordernumber\n \n \n \n \n 10\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 660\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qohafter\n \n \n \n \n 170\n 15\n 228\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 10\n 15\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invhist_transtype\n \n \n \n \n 170\n 0\n 125\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 305\n 0\n 125\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invdetail_lotserial\n \n \n \n \n 60\n 30\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n username\n \n \n \n \n 170\n 30\n 228\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n
\n \n 16\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 334 FinancialReportMonthPriorYear \N \n\n Financial Report Month and Prior Year\n FinancialReportMonthPriorYear\n \n \n Financial Report Column Layout\n SELECT flcol_id, flhead_name || ' - ' || flcol_name FROM flcol, flhead WHERE ((flcol_flhead_id=flhead_id) AND (flhead_active))\n \n \n Accounting Period Reference\n SELECT period_id, \n CASE\n WHEN period_name <> '' THEN period_name \n ELSE (formatdate(period_start) || '-' || formatdate(period_end)) \n END \nFROM period \nORDER BY period_end DESC\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT \n <? value("project") ?> AS project,\n (SELECT prj_name FROM prj WHERE prj_id=<? value("prj_id") ?>) AS prj_name,\n flstmthead_username,\n flstmthead_flhead_name || ' - ' || flstmthead_flcol_name AS f_name,\n flstmthead_typedescrip1,\n flstmthead_typedescrip2,\n flstmthead_typedescrip2 || ' Diff.' AS f_diff,\n flstmthead_typedescrip2 || ' % Diff.' AS f_diffprcnt,\n flstmthead_month,\n flstmthead_qtr,\n flstmthead_year,\n flstmthead_prmonth,\n flstmthead_prqtr,\n flstmthead_pryear\nFROM getflstmthead(<? value("flcol_id") ?>,<? value("period_id") ?>)\n \n \n detail\n SELECT \n flstmtitem_flhead_id,\n flstmtitem_period_id,\n flstmtitem_username,\n flstmtitem_order,\n flstmtitem_level,\n flstmtitem_subgrp,\n flstmtitem_type,\n flstmtitem_type_id,\n flstmtitem_parent_id,\n flstmtitem_accnt_id,\n flstmtitem_name,\n formatMoney(flstmtitem_month) AS flstmtitem_month,\n formatMoney(flstmtitem_monthdb) AS flstmtitem_monthdb,\n formatMoney(flstmtitem_monthcr) AS flstmtitem_monthcr,\n formatPrcnt(flstmtitem_monthprcnt) AS flstmtitem_monthprcnt,\n formatMoney(flstmtitem_monthbudget) AS flstmtitem_monthbudget,\n formatPrcnt(flstmtitem_monthbudgetprcnt) AS flstmtitem_monthbudgetprcnt,\n formatMoney(flstmtitem_monthbudgetdiff) AS flstmtitem_monthbudgetdiff,\n formatPrcnt(flstmtitem_monthbudgetdiffprcnt) AS flstmtitem_monthbudgetdiffprcnt,\n formatMoney(flstmtitem_qtr) AS flstmtitem_qtr,\n formatMoney(flstmtitem_qtrdb) AS flstmtitem_qtrdb,\n formatMoney(flstmtitem_qtrcr) AS flstmtitem_qtrcr,\n formatPrcnt(flstmtitem_qtrprcnt) AS flstmtitem_qtrprcnt,\n formatMoney(flstmtitem_qtrbudget) AS flstmtitem_qtrbudget,\n formatPrcnt(flstmtitem_qtrbudgetprcnt) AS flstmtitem_qtrbudgetprcnt,\n formatMoney(flstmtitem_qtrbudgetdiff) AS flstmtitem_qtrbudgetdiff,\n formatPrcnt(flstmtitem_qtrbudgetdiffprcnt) AS flstmtitem_qtrbudgetdiffprcnt,\n formatMoney(flstmtitem_year) AS flstmtitem_year,\n formatMoney(flstmtitem_yeardb) AS flstmtitem_yeardb,\n formatMoney(flstmtitem_yearcr) AS flstmtitem_yearcr,\n formatPrcnt(flstmtitem_yearprcnt) AS flstmtitem_yearprcnt,\n formatMoney(flstmtitem_yearbudget) AS flstmtitem_yearbudget,\n formatPrcnt(flstmtitem_yearbudgetprcnt) AS flstmtitem_yearbudgetprcnt,\n formatMoney(flstmtitem_yearbudgetdiff) AS flstmtitem_yearbudgetdiff,\n formatPrcnt(flstmtitem_yearbudgetdiffprcnt) AS flstmtitem_yearbudgetdiffprcnt,\n formatMoney(flstmtitem_prmonth) AS flstmtitem_prmonth,\n formatPrcnt(flstmtitem_prmonthprcnt) AS flstmtitem_prmonthprcnt,\n formatMoney(flstmtitem_prmonthdiff) AS flstmtitem_prmonthdiff,\n formatPrcnt(flstmtitem_prmonthdiffprcnt) AS flstmtitem_prmonthdiffprcnt,\n formatMoney(flstmtitem_prqtr) AS flstmtitem_prqtr,\n formatPrcnt(flstmtitem_prqtrprcnt) AS flstmtitem_prqtrprcnt,\n formatMoney(flstmtitem_prqtrdiff) AS flstmtitem_prqtrdiff,\n formatPrcnt(flstmtitem_prqtrdiffprcnt) AS flstmtitem_prqtrdiffprcnt,\n formatMoney(flstmtitem_pryear) AS flstmtitem_pryear,\n formatPrcnt(flstmtitem_pryearprcnt) AS flstmtitem_pryearprcnt,\n formatMoney(flstmtitem_pryeardiff) AS flstmtitem_pryeardiff,\n formatPrcnt(flstmtitem_pryeardiffprcnt) AS flstmtitem_pryeardiffprcnt\nFROM financialreport(<? value("flcol_id") ?>,<? value("period_id") ?>,\n<? if exists("shownumbers") ?>\n true\n<? else ?>\n false\n<? endif ?>\n,True,<? value("prj_id") ?>)\n<? if not exists("showzeros") ?>\n WHERE ((flstmtitem_month <> 0) OR (flstmtitem_pryear <> 0) OR (flstmtitem_type <> 'I'))\n<? endif ?>\n;\n \n \n notes\n SELECT * FROM (\nSELECT 1 AS seq, flhead_notes AS notes\nFROM flhead\n JOIN flcol ON (flhead_id=flcol_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (length(flhead_notes) > 0))\nUNION ALL\nSELECT 2 AS seq, flnotes_notes AS notes\nFROM flnotes\n JOIN flcol ON (flcol_flhead_id=flnotes_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (flnotes_period_id=<? value("period_id") ?>)\n AND (length(flnotes_notes) > 0))) data\nORDER BY seq;\n\n \n \n 169\n \n \n \n 660\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_pryear\n \n \n \n \n 100\n 100\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n flstmthead_typedescrip1\n \n \n \n \n 380\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n 0.998194\n 160\n 750\n 160\n 2\n \n \n \n \n 100\n 80\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_name\n \n \n \n \n \n 500\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_pryear\n \n \n \n \n 380\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 580\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diff\n \n \n \n \n 500\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n \n 580\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_pryear\n \n \n \n \n 660\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diffprcnt\n \n \n \n \n 99\n 59.6\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n prj_name\n \n \n \n \n 15\n 59.5\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n project\n \n \n \n \n \n 6\n \n \n 39\n \n \n 380\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 660\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diffprcnt\n \n \n \n \n 500\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_pryear\n \n \n \n \n 500\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_pryear\n \n \n \n 1.55252\n 30\n 751\n 30\n 2\n \n \n \n 580\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diff\n \n \n \n \n 380\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 660\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_pryear\n \n \n \n
\n detail\n \n subgrp\n flstmtitem_subgrp\n \n 6\n \n 380\n 1\n 740\n 1\n 0\n \n \n \n \n \n detail\n \n 21\n \n \n 660\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_pryeardiffprcnt\n \n \n \n \n 25\n 0\n 345\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_name\n \n \n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_pryeardiff\n \n \n \n \n 500\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_pryear\n \n \n \n \n 380\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_month\n \n \n \n
\n
\n notes\n \n \n notes\n \n 24\n \n \n 25\n 9\n 700\n 15\n \n 0\n \n Arial\n 9\n normal\n \n \n \n \n notes\n notes\n \n \n \n
\n \n 24\n \n \n 695\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 9\n \n
\n \N 0 2013-07-26 16:17:54.38447 335 FinancialReportMonthQuarter \N \n\n Financial Report Month and Quarter\n FinancialReportMonthQuarter\n \n \n Financial Report Column Layout\n SELECT flcol_id, flhead_name || ' - ' || flcol_name FROM flcol, flhead WHERE ((flcol_flhead_id=flhead_id) AND (flhead_active))\n \n \n Accounting Period Reference\n SELECT period_id, \n CASE\n WHEN period_name <> '' THEN period_name \n ELSE (formatdate(period_start) || '-' || formatdate(period_end)) \n END \nFROM period \nORDER BY period_end DESC\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT \n <? value("project") ?> AS project,\n (SELECT prj_name FROM prj WHERE prj_id=<? value("prj_id") ?>) AS prj_name,\n flstmthead_username,\n flstmthead_flhead_name || ' - ' || flstmthead_flcol_name AS f_name,\n flstmthead_typedescrip1,\n flstmthead_typedescrip2,\n flstmthead_month,\n flstmthead_qtr,\n flstmthead_year,\n flstmthead_prmonth,\n flstmthead_prqtr,\n flstmthead_pryear\nFROM getflstmthead(<? value("flcol_id") ?>,<? value("period_id") ?>)\n \n \n detail\n SELECT \n flstmtitem_flhead_id,\n flstmtitem_period_id,\n flstmtitem_username,\n flstmtitem_order,\n flstmtitem_level,\n flstmtitem_subgrp,\n flstmtitem_type,\n flstmtitem_type_id,\n flstmtitem_parent_id,\n flstmtitem_accnt_id,\n flstmtitem_name,\n formatMoney(flstmtitem_month) AS flstmtitem_month,\n formatMoney(flstmtitem_monthdb) AS flstmtitem_monthdb,\n formatMoney(flstmtitem_monthcr) AS flstmtitem_monthcr,\n formatPrcnt(flstmtitem_monthprcnt) AS flstmtitem_monthprcnt,\n formatMoney(flstmtitem_monthbudget) AS flstmtitem_monthbudget,\n formatPrcnt(flstmtitem_monthbudgetprcnt) AS flstmtitem_monthbudgetprcnt,\n formatMoney(flstmtitem_monthbudgetdiff) AS flstmtitem_monthbudgetdiff,\n formatPrcnt(flstmtitem_monthbudgetdiffprcnt) AS flstmtitem_monthbudgetdiffprcnt,\n formatMoney(flstmtitem_qtr) AS flstmtitem_qtr,\n formatMoney(flstmtitem_qtrdb) AS flstmtitem_qtrdb,\n formatMoney(flstmtitem_qtrcr) AS flstmtitem_qtrcr,\n formatPrcnt(flstmtitem_qtrprcnt) AS flstmtitem_qtrprcnt,\n formatMoney(flstmtitem_qtrbudget) AS flstmtitem_qtrbudget,\n formatPrcnt(flstmtitem_qtrbudgetprcnt) AS flstmtitem_qtrbudgetprcnt,\n formatMoney(flstmtitem_qtrbudgetdiff) AS flstmtitem_qtrbudgetdiff,\n formatPrcnt(flstmtitem_qtrbudgetdiffprcnt) AS flstmtitem_qtrbudgetdiffprcnt,\n formatMoney(flstmtitem_year) AS flstmtitem_year,\n formatMoney(flstmtitem_yeardb) AS flstmtitem_yeardb,\n formatMoney(flstmtitem_yearcr) AS flstmtitem_yearcr,\n formatPrcnt(flstmtitem_yearprcnt) AS flstmtitem_yearprcnt,\n formatMoney(flstmtitem_yearbudget) AS flstmtitem_yearbudget,\n formatPrcnt(flstmtitem_yearbudgetprcnt) AS flstmtitem_yearbudgetprcnt,\n formatMoney(flstmtitem_yearbudgetdiff) AS flstmtitem_yearbudgetdiff,\n formatPrcnt(flstmtitem_yearbudgetdiffprcnt) AS flstmtitem_yearbudgetdiffprcnt,\n formatMoney(flstmtitem_prmonth) AS flstmtitem_prmonth,\n formatPrcnt(flstmtitem_prmonthprcnt) AS flstmtitem_prmonthprcnt,\n formatMoney(flstmtitem_prmonthdiff) AS flstmtitem_prmonthdiff,\n formatPrcnt(flstmtitem_prmonthdiffprcnt) AS flstmtitem_prmonthdiffprcnt,\n formatMoney(flstmtitem_prqtr) AS flstmtitem_prqtr,\n formatPrcnt(flstmtitem_prqtrprcnt) AS flstmtitem_prqtrprcnt,\n formatMoney(flstmtitem_prqtrdiff) AS flstmtitem_prqtrdiff,\n formatPrcnt(flstmtitem_prqtrdiffprcnt) AS flstmtitem_prqtrdiffprcnt,\n formatMoney(flstmtitem_pryear) AS flstmtitem_pryear,\n formatPrcnt(flstmtitem_pryearprcnt) AS flstmtitem_pryearprcnt,\n formatMoney(flstmtitem_pryeardiff) AS flstmtitem_pryeardiff,\n formatPrcnt(flstmtitem_pryeardiffprcnt) AS flstmtitem_pryeardiffprcnt\nFROM financialreport(<? value("flcol_id") ?>,<? value("period_id") ?>,\n<? if exists("shownumbers") ?>\n true\n<? else ?>\n false\n<? endif ?>\n,True,<? value("prj_id") ?>)\n<? if not exists("showzeros") ?>\n WHERE ((flstmtitem_month <> 0) OR (flstmtitem_qtr <> 0) OR (flstmtitem_type <> 'I'))\n<? endif ?>\n;\n \n \n notes\n SELECT * FROM (\nSELECT 1 AS seq, flhead_notes AS notes\nFROM flhead\n JOIN flcol ON (flhead_id=flcol_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (length(flhead_notes) > 0))\nUNION ALL\nSELECT 2 AS seq, flnotes_notes AS notes\nFROM flnotes\n JOIN flcol ON (flcol_flhead_id=flnotes_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (flnotes_period_id=<? value("period_id") ?>)\n AND (length(flnotes_notes) > 0))) data\nORDER BY seq;\n\n \n \n 167\n \n \n 0.00540306\n 162.686\n 749.477\n 162.686\n 2\n \n \n \n 580\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n \n 380\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 100\n 80\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_name\n \n \n \n \n 380\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 459\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 100\n 100\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n flstmthead_typedescrip1\n \n \n \n \n \n \n 580\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_qtr\n \n \n \n \n \n 660\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_qtr\n \n \n \n \n \n 99\n 59.6\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n prj_name\n \n \n \n \n 15\n 59.5\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n project\n \n \n \n \n \n 4\n \n \n 37\n \n \n 380\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n 0.393337\n 30\n 750\n 30\n 2\n \n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_qtr\n \n \n \n \n 380\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n \n 660\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_qtr\n \n \n \n \n 459\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 580\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n \n
\n detail\n \n subgrp\n flstmtitem_subgrp\n \n 4\n \n 380\n 1\n 740\n 1\n 0\n \n \n \n \n \n detail\n \n 19\n \n \n 660\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_qtrprcnt\n \n \n \n \n 459\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_monthprcnt\n \n \n \n \n 25\n 0\n 345\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_name\n \n \n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_qtr\n \n \n \n \n 380\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_month\n \n \n \n
\n
\n notes\n \n \n notes\n \n 24\n \n \n 25\n 9\n 700\n 15\n \n 0\n \n Arial\n 9\n normal\n \n \n \n \n notes\n notes\n \n \n \n
\n \n 22\n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 695\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 7\n \n
\n \N 0 2013-07-26 16:17:54.38447 330 FinancialReportMonthYear \N \n\n Financial Report Month and Year\n FinancialReportMonthYear\n \n \n Financial Report Column Layout\n SELECT flcol_id, flhead_name || ' - ' || flcol_name FROM flcol, flhead WHERE ((flcol_flhead_id=flhead_id) AND (flhead_active))\n \n \n Accounting Period Reference\n SELECT period_id, \n CASE\n WHEN period_name <> '' THEN period_name \n ELSE (formatdate(period_start) || '-' || formatdate(period_end)) \n END \nFROM period \nORDER BY period_end DESC\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT \n <? value("project") ?> AS project,\n (SELECT prj_name FROM prj WHERE prj_id=<? value("prj_id") ?>) AS prj_name,\n flstmthead_username,\n flstmthead_flhead_name || ' - ' || flstmthead_flcol_name AS f_name,\n flstmthead_typedescrip1,\n flstmthead_typedescrip2,\n flstmthead_month,\n flstmthead_qtr,\n flstmthead_year,\n flstmthead_prmonth,\n flstmthead_prqtr,\n flstmthead_pryear\nFROM getflstmthead(<? value("flcol_id") ?>,<? value("period_id") ?>)\n \n \n detail\n SELECT \n flstmtitem_flhead_id,\n flstmtitem_period_id,\n flstmtitem_username,\n flstmtitem_order,\n flstmtitem_level,\n flstmtitem_subgrp,\n flstmtitem_type,\n flstmtitem_type_id,\n flstmtitem_parent_id,\n flstmtitem_accnt_id,\n flstmtitem_name,\n formatMoney(flstmtitem_month) AS flstmtitem_month,\n formatMoney(flstmtitem_monthdb) AS flstmtitem_monthdb,\n formatMoney(flstmtitem_monthcr) AS flstmtitem_monthcr,\n formatPrcnt(flstmtitem_monthprcnt) AS flstmtitem_monthprcnt,\n formatMoney(flstmtitem_monthbudget) AS flstmtitem_monthbudget,\n formatPrcnt(flstmtitem_monthbudgetprcnt) AS flstmtitem_monthbudgetprcnt,\n formatMoney(flstmtitem_monthbudgetdiff) AS flstmtitem_monthbudgetdiff,\n formatPrcnt(flstmtitem_monthbudgetdiffprcnt) AS flstmtitem_monthbudgetdiffprcnt,\n formatMoney(flstmtitem_qtr) AS flstmtitem_qtr,\n formatMoney(flstmtitem_qtrdb) AS flstmtitem_qtrdb,\n formatMoney(flstmtitem_qtrcr) AS flstmtitem_qtrcr,\n formatPrcnt(flstmtitem_qtrprcnt) AS flstmtitem_qtrprcnt,\n formatMoney(flstmtitem_qtrbudget) AS flstmtitem_qtrbudget,\n formatPrcnt(flstmtitem_qtrbudgetprcnt) AS flstmtitem_qtrbudgetprcnt,\n formatMoney(flstmtitem_qtrbudgetdiff) AS flstmtitem_qtrbudgetdiff,\n formatPrcnt(flstmtitem_qtrbudgetdiffprcnt) AS flstmtitem_qtrbudgetdiffprcnt,\n formatMoney(flstmtitem_year) AS flstmtitem_year,\n formatMoney(flstmtitem_yeardb) AS flstmtitem_yeardb,\n formatMoney(flstmtitem_yearcr) AS flstmtitem_yearcr,\n formatPrcnt(flstmtitem_yearprcnt) AS flstmtitem_yearprcnt,\n formatMoney(flstmtitem_yearbudget) AS flstmtitem_yearbudget,\n formatPrcnt(flstmtitem_yearbudgetprcnt) AS flstmtitem_yearbudgetprcnt,\n formatMoney(flstmtitem_yearbudgetdiff) AS flstmtitem_yearbudgetdiff,\n formatPrcnt(flstmtitem_yearbudgetdiffprcnt) AS flstmtitem_yearbudgetdiffprcnt,\n formatMoney(flstmtitem_prmonth) AS flstmtitem_prmonth,\n formatPrcnt(flstmtitem_prmonthprcnt) AS flstmtitem_prmonthprcnt,\n formatMoney(flstmtitem_prmonthdiff) AS flstmtitem_prmonthdiff,\n formatPrcnt(flstmtitem_prmonthdiffprcnt) AS flstmtitem_prmonthdiffprcnt,\n formatMoney(flstmtitem_prqtr) AS flstmtitem_prqtr,\n formatPrcnt(flstmtitem_prqtrprcnt) AS flstmtitem_prqtrprcnt,\n formatMoney(flstmtitem_prqtrdiff) AS flstmtitem_prqtrdiff,\n formatPrcnt(flstmtitem_prqtrdiffprcnt) AS flstmtitem_prqtrdiffprcnt,\n formatMoney(flstmtitem_pryear) AS flstmtitem_pryear,\n formatPrcnt(flstmtitem_pryearprcnt) AS flstmtitem_pryearprcnt,\n formatMoney(flstmtitem_pryeardiff) AS flstmtitem_pryeardiff,\n formatPrcnt(flstmtitem_pryeardiffprcnt) AS flstmtitem_pryeardiffprcnt\nFROM financialreport(<? value("flcol_id") ?>,<? value("period_id") ?>,\n<? if exists("shownumbers") ?>\n true\n<? else ?>\n false\n<? endif ?>\n,True,<? value("prj_id") ?>)\n<? if not exists("showzeros") ?>\n WHERE ((flstmtitem_month <> 0) OR (flstmtitem_year <> 0) OR (flstmtitem_type <> 'I'))\n<? endif ?>\n;\n \n \n notes\n SELECT * FROM (\nSELECT 1 AS seq, flhead_notes AS notes\nFROM flhead\n JOIN flcol ON (flhead_id=flcol_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (length(flhead_notes) > 0))\nUNION ALL\nSELECT 2 AS seq, flnotes_notes AS notes\nFROM flnotes\n JOIN flcol ON (flcol_flhead_id=flnotes_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (flnotes_period_id=<? value("period_id") ?>)\n AND (length(flnotes_notes) > 0))) data\nORDER BY seq;\n\n \n \n 166\n \n \n 380\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n \n 660\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n \n \n 100\n 80\n 460\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_name\n \n \n \n \n \n 2.08287\n 160\n 748\n 160\n 2\n \n \n \n 580\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n \n 460\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 380\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n \n 100\n 100\n 460\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n flstmthead_typedescrip1\n \n \n \n \n 580\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n \n 99\n 59.6\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n prj_name\n \n \n \n \n 15\n 59.5\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n project\n \n \n \n \n \n 3\n \n \n 36\n \n \n 460\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n \n 580\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 380\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 660\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n \n 380\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_month\n \n \n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n 1.43183\n 30.3326\n 748.17\n 30.3326\n 2\n \n \n \n \n
\n detail\n \n subgrp\n flstmtitem_subgrp\n \n 3\n \n 380\n 1\n 740\n 1\n 0\n \n \n \n \n \n detail\n \n 18\n \n \n 660\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_yearprcnt\n \n \n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_year\n \n \n \n \n 380\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_month\n \n \n \n \n 25\n 0\n 345\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_name\n \n \n \n \n 460\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_monthprcnt\n \n \n \n
\n
\n notes\n \n \n notes\n \n 24\n \n \n 25\n 9\n 700\n 15\n \n 0\n \n Arial\n 9\n normal\n \n \n \n \n notes\n notes\n \n \n \n
\n \n 21\n \n \n 695\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 6\n \n
\n \N 0 2013-07-26 16:17:54.38447 336 FinancialReportQuarter \N \n\n Financial Report Quarter\n FinancialReportQuarter\n \n \n Financial Report Column Layout\n SELECT flcol_id, flhead_name || ' - ' || flcol_name FROM flcol, flhead WHERE ((flcol_flhead_id=flhead_id) AND (flhead_active))\n \n \n Accounting Period Reference\n SELECT period_id, \n CASE\n WHEN period_name <> '' THEN period_name \n ELSE (formatdate(period_start) || '-' || formatdate(period_end)) \n END \nFROM period \nORDER BY period_end DESC\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT \n <? value("project") ?> AS project,\n (SELECT prj_name FROM prj WHERE prj_id=<? value("prj_id") ?>) AS prj_name,\n flstmthead_username,\n flstmthead_flhead_name || ' - ' || flstmthead_flcol_name AS f_name,\n flstmthead_typedescrip1,\n flstmthead_typedescrip2,\n flstmthead_month,\n flstmthead_qtr,\n flstmthead_year,\n flstmthead_prmonth,\n flstmthead_prqtr,\n flstmthead_pryear\nFROM getflstmthead(<? value("flcol_id") ?>,<? value("period_id") ?>)\n \n \n detail\n SELECT \n flstmtitem_flhead_id,\n flstmtitem_period_id,\n flstmtitem_username,\n flstmtitem_order,\n flstmtitem_level,\n flstmtitem_subgrp,\n flstmtitem_type,\n flstmtitem_type_id,\n flstmtitem_parent_id,\n flstmtitem_accnt_id,\n flstmtitem_name,\n formatMoney(flstmtitem_month) AS flstmtitem_month,\n formatMoney(flstmtitem_monthdb) AS flstmtitem_monthdb,\n formatMoney(flstmtitem_monthcr) AS flstmtitem_monthcr,\n formatPrcnt(flstmtitem_monthprcnt) AS flstmtitem_monthprcnt,\n formatMoney(flstmtitem_monthbudget) AS flstmtitem_monthbudget,\n formatPrcnt(flstmtitem_monthbudgetprcnt) AS flstmtitem_monthbudgetprcnt,\n formatMoney(flstmtitem_monthbudgetdiff) AS flstmtitem_monthbudgetdiff,\n formatPrcnt(flstmtitem_monthbudgetdiffprcnt) AS flstmtitem_monthbudgetdiffprcnt,\n formatMoney(flstmtitem_qtr) AS flstmtitem_qtr,\n formatMoney(flstmtitem_qtrdb) AS flstmtitem_qtrdb,\n formatMoney(flstmtitem_qtrcr) AS flstmtitem_qtrcr,\n formatPrcnt(flstmtitem_qtrprcnt) AS flstmtitem_qtrprcnt,\n formatMoney(flstmtitem_qtrbudget) AS flstmtitem_qtrbudget,\n formatPrcnt(flstmtitem_qtrbudgetprcnt) AS flstmtitem_qtrbudgetprcnt,\n formatMoney(flstmtitem_qtrbudgetdiff) AS flstmtitem_qtrbudgetdiff,\n formatPrcnt(flstmtitem_qtrbudgetdiffprcnt) AS flstmtitem_qtrbudgetdiffprcnt,\n formatMoney(flstmtitem_year) AS flstmtitem_year,\n formatMoney(flstmtitem_yeardb) AS flstmtitem_yeardb,\n formatMoney(flstmtitem_yearcr) AS flstmtitem_yearcr,\n formatPrcnt(flstmtitem_yearprcnt) AS flstmtitem_yearprcnt,\n formatMoney(flstmtitem_yearbudget) AS flstmtitem_yearbudget,\n formatPrcnt(flstmtitem_yearbudgetprcnt) AS flstmtitem_yearbudgetprcnt,\n formatMoney(flstmtitem_yearbudgetdiff) AS flstmtitem_yearbudgetdiff,\n formatPrcnt(flstmtitem_yearbudgetdiffprcnt) AS flstmtitem_yearbudgetdiffprcnt,\n formatMoney(flstmtitem_prmonth) AS flstmtitem_prmonth,\n formatPrcnt(flstmtitem_prmonthprcnt) AS flstmtitem_prmonthprcnt,\n formatMoney(flstmtitem_prmonthdiff) AS flstmtitem_prmonthdiff,\n formatPrcnt(flstmtitem_prmonthdiffprcnt) AS flstmtitem_prmonthdiffprcnt,\n formatMoney(flstmtitem_prqtr) AS flstmtitem_prqtr,\n formatPrcnt(flstmtitem_prqtrprcnt) AS flstmtitem_prqtrprcnt,\n formatMoney(flstmtitem_prqtrdiff) AS flstmtitem_prqtrdiff,\n formatPrcnt(flstmtitem_prqtrdiffprcnt) AS flstmtitem_prqtrdiffprcnt,\n formatMoney(flstmtitem_pryear) AS flstmtitem_pryear,\n formatPrcnt(flstmtitem_pryearprcnt) AS flstmtitem_pryearprcnt,\n formatMoney(flstmtitem_pryeardiff) AS flstmtitem_pryeardiff,\n formatPrcnt(flstmtitem_pryeardiffprcnt) AS flstmtitem_pryeardiffprcnt\nFROM financialreport(<? value("flcol_id") ?>,<? value("period_id") ?>,\n<? if exists("shownumbers") ?>\n true\n<? else ?>\n false\n<? endif ?>\n,True,<? value("prj_id") ?>)\n<? if not exists("showzeros") ?>\n WHERE ((flstmtitem_qtr <> 0) OR (flstmtitem_type <> 'I'))\n<? endif ?>\n;\n \n \n notes\n SELECT * FROM (\nSELECT 1 AS seq, flhead_notes AS notes\nFROM flhead\n JOIN flcol ON (flhead_id=flcol_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (length(flhead_notes) > 0))\nUNION ALL\nSELECT 2 AS seq, flnotes_notes AS notes\nFROM flnotes\n JOIN flcol ON (flcol_flhead_id=flnotes_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (flnotes_period_id=<? value("period_id") ?>)\n AND (length(flnotes_notes) > 0))) data\nORDER BY seq;\n\n \n \n 168\n \n 1\n 160\n 750\n 160\n 2\n \n \n \n \n 100\n 80\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_name\n \n \n \n \n \n \n \n 590\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 670\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_qtr\n \n \n \n \n 100\n 100\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n flstmthead_typedescrip1\n \n \n \n \n 590\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_qtr\n \n \n \n \n \n 99\n 59.6\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n prj_name\n \n \n \n \n 15\n 59.5\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n project\n \n \n \n \n \n 5\n \n \n 38\n \n \n 590\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 590\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_qtr\n \n \n \n 1\n 30\n 749\n 30\n 2\n \n \n \n \n 670\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_qtr\n \n \n \n \n
\n detail\n \n subgrp\n flstmtitem_subgrp\n \n 5\n \n 380\n 1\n 740\n 1\n 0\n \n \n \n \n \n detail\n \n 20\n \n \n 25\n 0\n 550\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_name\n \n \n \n \n 590\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_qtr\n \n \n \n \n 670\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_qtrprcnt\n \n \n \n
\n
\n notes\n \n \n notes\n \n 24\n \n \n 25\n 9\n 700\n 15\n \n 0\n \n Arial\n 9\n normal\n \n \n \n \n notes\n notes\n \n \n \n
\n \n 23\n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 695\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 8\n \n
\n \N 0 2013-07-26 16:17:54.38447 337 FinancialReportQuarterBudget \N \n\n Financial Report Quarter and Budget\n FinancialReportQuarterBudget\n \n \n Financial Report Column Layout\n SELECT flcol_id, flhead_name || ' - ' || flcol_name FROM flcol, flhead WHERE ((flcol_flhead_id=flhead_id) AND (flhead_active))\n \n \n Accounting Period Reference\n SELECT period_id, \n CASE\n WHEN period_name <> '' THEN period_name \n ELSE (formatdate(period_start) || '-' || formatdate(period_end)) \n END \nFROM period \nORDER BY period_end DESC\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT \n <? value("project") ?> AS project,\n (SELECT prj_name FROM prj WHERE prj_id=<? value("prj_id") ?>) AS prj_name,\n flstmthead_username,\n flstmthead_flhead_name || ' - ' || flstmthead_flcol_name AS f_name,\n flstmthead_typedescrip1,\n flstmthead_typedescrip2,\n flstmthead_month,\n flstmthead_qtr,\n flstmthead_year,\n flstmthead_prmonth,\n flstmthead_prqtr,\n flstmthead_pryear\nFROM getflstmthead(<? value("flcol_id") ?>,<? value("period_id") ?>)\n \n \n detail\n SELECT \n flstmtitem_flhead_id,\n flstmtitem_period_id,\n flstmtitem_username,\n flstmtitem_order,\n flstmtitem_level,\n flstmtitem_subgrp,\n flstmtitem_type,\n flstmtitem_type_id,\n flstmtitem_parent_id,\n flstmtitem_accnt_id,\n flstmtitem_name,\n formatMoney(flstmtitem_month) AS flstmtitem_month,\n formatMoney(flstmtitem_monthdb) AS flstmtitem_monthdb,\n formatMoney(flstmtitem_monthcr) AS flstmtitem_monthcr,\n formatPrcnt(flstmtitem_monthprcnt) AS flstmtitem_monthprcnt,\n formatMoney(flstmtitem_monthbudget) AS flstmtitem_monthbudget,\n formatPrcnt(flstmtitem_monthbudgetprcnt) AS flstmtitem_monthbudgetprcnt,\n formatMoney(flstmtitem_monthbudgetdiff) AS flstmtitem_monthbudgetdiff,\n formatPrcnt(flstmtitem_monthbudgetdiffprcnt) AS flstmtitem_monthbudgetdiffprcnt,\n formatMoney(flstmtitem_qtr) AS flstmtitem_qtr,\n formatMoney(flstmtitem_qtrdb) AS flstmtitem_qtrdb,\n formatMoney(flstmtitem_qtrcr) AS flstmtitem_qtrcr,\n formatPrcnt(flstmtitem_qtrprcnt) AS flstmtitem_qtrprcnt,\n formatMoney(flstmtitem_qtrbudget) AS flstmtitem_qtrbudget,\n formatPrcnt(flstmtitem_qtrbudgetprcnt) AS flstmtitem_qtrbudgetprcnt,\n formatMoney(flstmtitem_qtrbudgetdiff) AS flstmtitem_qtrbudgetdiff,\n formatPrcnt(flstmtitem_qtrbudgetdiffprcnt) AS flstmtitem_qtrbudgetdiffprcnt,\n formatMoney(flstmtitem_year) AS flstmtitem_year,\n formatMoney(flstmtitem_yeardb) AS flstmtitem_yeardb,\n formatMoney(flstmtitem_yearcr) AS flstmtitem_yearcr,\n formatPrcnt(flstmtitem_yearprcnt) AS flstmtitem_yearprcnt,\n formatMoney(flstmtitem_yearbudget) AS flstmtitem_yearbudget,\n formatPrcnt(flstmtitem_yearbudgetprcnt) AS flstmtitem_yearbudgetprcnt,\n formatMoney(flstmtitem_yearbudgetdiff) AS flstmtitem_yearbudgetdiff,\n formatPrcnt(flstmtitem_yearbudgetdiffprcnt) AS flstmtitem_yearbudgetdiffprcnt,\n formatMoney(flstmtitem_prmonth) AS flstmtitem_prmonth,\n formatPrcnt(flstmtitem_prmonthprcnt) AS flstmtitem_prmonthprcnt,\n formatMoney(flstmtitem_prmonthdiff) AS flstmtitem_prmonthdiff,\n formatPrcnt(flstmtitem_prmonthdiffprcnt) AS flstmtitem_prmonthdiffprcnt,\n formatMoney(flstmtitem_prqtr) AS flstmtitem_prqtr,\n formatPrcnt(flstmtitem_prqtrprcnt) AS flstmtitem_prqtrprcnt,\n formatMoney(flstmtitem_prqtrdiff) AS flstmtitem_prqtrdiff,\n formatPrcnt(flstmtitem_prqtrdiffprcnt) AS flstmtitem_prqtrdiffprcnt,\n formatMoney(flstmtitem_pryear) AS flstmtitem_pryear,\n formatPrcnt(flstmtitem_pryearprcnt) AS flstmtitem_pryearprcnt,\n formatMoney(flstmtitem_pryeardiff) AS flstmtitem_pryeardiff,\n formatPrcnt(flstmtitem_pryeardiffprcnt) AS flstmtitem_pryeardiffprcnt\nFROM financialreport(<? value("flcol_id") ?>,<? value("period_id") ?>,\n<? if exists("shownumbers") ?>\n true\n<? else ?>\n false\n<? endif ?>\n,True,<? value("prj_id") ?>)\n<? if not exists("showzeros") ?>\n WHERE ((flstmtitem_qtr <> 0) OR (flstmtitem_qtrbudget <> 0) OR (flstmtitem_type <> 'I'))\n<? endif ?>\n;\n \n \n notes\n SELECT * FROM (\nSELECT 1 AS seq, flhead_notes AS notes\nFROM flhead\n JOIN flcol ON (flhead_id=flcol_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (length(flhead_notes) > 0))\nUNION ALL\nSELECT 2 AS seq, flnotes_notes AS notes\nFROM flnotes\n JOIN flcol ON (flcol_flhead_id=flnotes_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (flnotes_period_id=<? value("period_id") ?>)\n AND (length(flnotes_notes) > 0))) data\nORDER BY seq;\n\n \n \n 167\n \n \n \n 380\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 380\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_qtr\n \n \n \n \n 580\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_qtr\n \n \n \n 1\n 160\n 749\n 160\n 2\n \n \n \n \n 500\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_qtr\n \n \n \n \n \n 100\n 100\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n flstmthead_typedescrip1\n \n \n \n \n \n 100\n 80\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_name\n \n \n \n \n 660\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_qtr\n \n \n \n \n \n \n 99\n 59.6\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n prj_name\n \n \n \n \n 15\n 59.5\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n project\n \n \n \n \n \n 4\n \n \n 37\n \n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_qtr\n \n \n \n \n \n \n 380\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_qtr\n \n \n \n \n 1.80678\n 30\n 750\n 30\n 2\n \n \n \n 380\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 660\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_qtr\n \n \n \n \n 500\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_qtr\n \n \n \n \n
\n detail\n \n subgrp\n flstmtitem_subgrp\n \n 4\n \n 380\n 1\n 740\n 1\n 0\n \n \n \n \n \n detail\n \n 19\n \n \n 660\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_qtrbudgetdiffprcnt\n \n \n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_qtrbudgetdiff\n \n \n \n \n 500\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_qtrbudget\n \n \n \n \n 25\n 0\n 345\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_name\n \n \n \n \n 380\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_qtr\n \n \n \n
\n
\n notes\n \n \n notes\n \n 24\n \n \n 25\n 9\n 700\n 15\n \n 0\n \n Arial\n 9\n normal\n \n \n \n \n notes\n notes\n \n \n \n
\n \n 22\n \n \n \n 695\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 7\n \n
\n \N 0 2013-07-26 16:17:54.38447 338 FinancialReportQuarterPriorQuarter \N \n\n Financial Report Quarter and Prior Quarter\n FinancialReportQuarterPriorQuarter\n \n \n Financial Report Column Layout\n SELECT flcol_id, flhead_name || ' - ' || flcol_name FROM flcol, flhead WHERE ((flcol_flhead_id=flhead_id) AND (flhead_active))\n \n \n Accounting Period Reference\n SELECT period_id, \n CASE\n WHEN period_name <> '' THEN period_name \n ELSE (formatdate(period_start) || '-' || formatdate(period_end)) \n END \nFROM period \nORDER BY period_end DESC\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT \n <? value("project") ?> AS project,\n (SELECT prj_name FROM prj WHERE prj_id=<? value("prj_id") ?>) AS prj_name,\n flstmthead_username,\n flstmthead_flhead_name || ' - ' || flstmthead_flcol_name AS f_name,\n flstmthead_typedescrip1,\n flstmthead_typedescrip2,\n flstmthead_typedescrip2 || ' Diff.' AS f_diff,\n flstmthead_typedescrip2 || ' % Diff.' AS f_diffprcnt,\n flstmthead_month,\n flstmthead_qtr,\n flstmthead_year,\n flstmthead_prmonth,\n flstmthead_prqtr,\n flstmthead_pryear\nFROM getflstmthead(<? value("flcol_id") ?>,<? value("period_id") ?>)\n \n \n detail\n SELECT \n flstmtitem_flhead_id,\n flstmtitem_period_id,\n flstmtitem_username,\n flstmtitem_order,\n flstmtitem_level,\n flstmtitem_subgrp,\n flstmtitem_type,\n flstmtitem_type_id,\n flstmtitem_parent_id,\n flstmtitem_accnt_id,\n flstmtitem_name,\n formatMoney(flstmtitem_month) AS flstmtitem_month,\n formatMoney(flstmtitem_monthdb) AS flstmtitem_monthdb,\n formatMoney(flstmtitem_monthcr) AS flstmtitem_monthcr,\n formatPrcnt(flstmtitem_monthprcnt) AS flstmtitem_monthprcnt,\n formatMoney(flstmtitem_monthbudget) AS flstmtitem_monthbudget,\n formatPrcnt(flstmtitem_monthbudgetprcnt) AS flstmtitem_monthbudgetprcnt,\n formatMoney(flstmtitem_monthbudgetdiff) AS flstmtitem_monthbudgetdiff,\n formatPrcnt(flstmtitem_monthbudgetdiffprcnt) AS flstmtitem_monthbudgetdiffprcnt,\n formatMoney(flstmtitem_qtr) AS flstmtitem_qtr,\n formatMoney(flstmtitem_qtrdb) AS flstmtitem_qtrdb,\n formatMoney(flstmtitem_qtrcr) AS flstmtitem_qtrcr,\n formatPrcnt(flstmtitem_qtrprcnt) AS flstmtitem_qtrprcnt,\n formatMoney(flstmtitem_qtrbudget) AS flstmtitem_qtrbudget,\n formatPrcnt(flstmtitem_qtrbudgetprcnt) AS flstmtitem_qtrbudgetprcnt,\n formatMoney(flstmtitem_qtrbudgetdiff) AS flstmtitem_qtrbudgetdiff,\n formatPrcnt(flstmtitem_qtrbudgetdiffprcnt) AS flstmtitem_qtrbudgetdiffprcnt,\n formatMoney(flstmtitem_year) AS flstmtitem_year,\n formatMoney(flstmtitem_yeardb) AS flstmtitem_yeardb,\n formatMoney(flstmtitem_yearcr) AS flstmtitem_yearcr,\n formatPrcnt(flstmtitem_yearprcnt) AS flstmtitem_yearprcnt,\n formatMoney(flstmtitem_yearbudget) AS flstmtitem_yearbudget,\n formatPrcnt(flstmtitem_yearbudgetprcnt) AS flstmtitem_yearbudgetprcnt,\n formatMoney(flstmtitem_yearbudgetdiff) AS flstmtitem_yearbudgetdiff,\n formatPrcnt(flstmtitem_yearbudgetdiffprcnt) AS flstmtitem_yearbudgetdiffprcnt,\n formatMoney(flstmtitem_prmonth) AS flstmtitem_prmonth,\n formatPrcnt(flstmtitem_prmonthprcnt) AS flstmtitem_prmonthprcnt,\n formatMoney(flstmtitem_prmonthdiff) AS flstmtitem_prmonthdiff,\n formatPrcnt(flstmtitem_prmonthdiffprcnt) AS flstmtitem_prmonthdiffprcnt,\n formatMoney(flstmtitem_prqtr) AS flstmtitem_prqtr,\n formatPrcnt(flstmtitem_prqtrprcnt) AS flstmtitem_prqtrprcnt,\n formatMoney(flstmtitem_prqtrdiff) AS flstmtitem_prqtrdiff,\n formatPrcnt(flstmtitem_prqtrdiffprcnt) AS flstmtitem_prqtrdiffprcnt,\n formatMoney(flstmtitem_pryear) AS flstmtitem_pryear,\n formatPrcnt(flstmtitem_pryearprcnt) AS flstmtitem_pryearprcnt,\n formatMoney(flstmtitem_pryeardiff) AS flstmtitem_pryeardiff,\n formatPrcnt(flstmtitem_pryeardiffprcnt) AS flstmtitem_pryeardiffprcnt\nFROM financialreport(<? value("flcol_id") ?>,<? value("period_id") ?>,\n<? if exists("shownumbers") ?>\n true\n<? else ?>\n false\n<? endif ?>\n,True,<? value("prj_id") ?>)\n<? if not exists("showzeros") ?>\n WHERE ((flstmtitem_qtr <> 0) OR (flstmtitem_prqtr <> 0) OR (flstmtitem_type <> 'I'))\n<? endif ?>\n;\n \n \n notes\n SELECT * FROM (\nSELECT 1 AS seq, flhead_notes AS notes\nFROM flhead\n JOIN flcol ON (flhead_id=flcol_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (length(flhead_notes) > 0))\nUNION ALL\nSELECT 2 AS seq, flnotes_notes AS notes\nFROM flnotes\n JOIN flcol ON (flcol_flhead_id=flnotes_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (flnotes_period_id=<? value("period_id") ?>)\n AND (length(flnotes_notes) > 0))) data\nORDER BY seq;\n\n \n \n 167\n \n \n 380\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_qtr\n \n \n \n \n 500\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 580\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diff\n \n \n \n \n 100\n 100\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n flstmthead_typedescrip1\n \n \n \n \n \n 500\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_prqtr\n \n \n \n 0\n 159\n 749\n 159\n 2\n \n \n \n \n 580\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_prqtr\n \n \n \n \n 660\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diffprcnt\n \n \n \n \n \n \n 100\n 80\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_name\n \n \n \n \n 660\n 130\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_prqtr\n \n \n \n \n 380\n 145\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 99\n 59.6\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n prj_name\n \n \n \n \n 15\n 59.5\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n project\n \n \n \n \n \n 4\n \n \n 37\n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_prqtr\n \n \n \n \n 500\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 660\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diffprcnt\n \n \n \n \n 380\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_qtr\n \n \n \n \n 380\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 660\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_prqtr\n \n \n \n \n 580\n 15\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diff\n \n \n \n \n 500\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_prqtr\n \n \n \n 1\n 30\n 748\n 30\n 2\n \n \n \n
\n detail\n \n subgrp\n flstmtitem_subgrp\n \n 4\n \n 380\n 1\n 740\n 1\n 0\n \n \n \n \n \n detail\n \n 19\n \n \n 380\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_qtr\n \n \n \n \n 660\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_prqtrdiffprcnt\n \n \n \n \n 500\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_prqtr\n \n \n \n \n 25\n 0\n 345\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_name\n \n \n \n \n 580\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_prqtrdiff\n \n \n \n
\n
\n notes\n \n \n notes\n \n 24\n \n \n 25\n 9\n 700\n 15\n \n 0\n \n Arial\n 9\n normal\n \n \n \n \n notes\n notes\n \n \n \n
\n \n 22\n \n \n 695\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 7\n \n
\n \N 0 2013-07-26 16:17:54.38447 339 FinancialReportYear \N \n\n Financial Report Year\n FinancialReportYear\n \n \n Financial Report Column Layout\n SELECT flcol_id, flhead_name || ' - ' || flcol_name FROM flcol, flhead WHERE ((flcol_flhead_id=flhead_id) AND (flhead_active))\n \n \n Accounting Period Reference\n SELECT period_id, \n CASE\n WHEN period_name <> '' THEN period_name \n ELSE (formatdate(period_start) || '-' || formatdate(period_end)) \n END \nFROM period \nORDER BY period_end DESC\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT \n <? value("project") ?> AS project,\n (SELECT prj_name FROM prj WHERE prj_id=<? value("prj_id") ?>) AS prj_name,\n flstmthead_username,\n flstmthead_flhead_name || ' - ' || flstmthead_flcol_name AS f_name,\n flstmthead_typedescrip1,\n flstmthead_typedescrip2,\n flstmthead_month,\n flstmthead_qtr,\n flstmthead_year,\n flstmthead_prmonth,\n flstmthead_prqtr,\n flstmthead_pryear\nFROM getflstmthead(<? value("flcol_id") ?>,<? value("period_id") ?>)\n \n \n detail\n SELECT \n flstmtitem_flhead_id,\n flstmtitem_period_id,\n flstmtitem_username,\n flstmtitem_order,\n flstmtitem_level,\n flstmtitem_subgrp,\n flstmtitem_type,\n flstmtitem_type_id,\n flstmtitem_parent_id,\n flstmtitem_accnt_id,\n flstmtitem_name,\n formatMoney(flstmtitem_month) AS flstmtitem_month,\n formatMoney(flstmtitem_monthdb) AS flstmtitem_monthdb,\n formatMoney(flstmtitem_monthcr) AS flstmtitem_monthcr,\n formatPrcnt(flstmtitem_monthprcnt) AS flstmtitem_monthprcnt,\n formatMoney(flstmtitem_monthbudget) AS flstmtitem_monthbudget,\n formatPrcnt(flstmtitem_monthbudgetprcnt) AS flstmtitem_monthbudgetprcnt,\n formatMoney(flstmtitem_monthbudgetdiff) AS flstmtitem_monthbudgetdiff,\n formatPrcnt(flstmtitem_monthbudgetdiffprcnt) AS flstmtitem_monthbudgetdiffprcnt,\n formatMoney(flstmtitem_qtr) AS flstmtitem_qtr,\n formatMoney(flstmtitem_qtrdb) AS flstmtitem_qtrdb,\n formatMoney(flstmtitem_qtrcr) AS flstmtitem_qtrcr,\n formatPrcnt(flstmtitem_qtrprcnt) AS flstmtitem_qtrprcnt,\n formatMoney(flstmtitem_qtrbudget) AS flstmtitem_qtrbudget,\n formatPrcnt(flstmtitem_qtrbudgetprcnt) AS flstmtitem_qtrbudgetprcnt,\n formatMoney(flstmtitem_qtrbudgetdiff) AS flstmtitem_qtrbudgetdiff,\n formatPrcnt(flstmtitem_qtrbudgetdiffprcnt) AS flstmtitem_qtrbudgetdiffprcnt,\n formatMoney(flstmtitem_year) AS flstmtitem_year,\n formatMoney(flstmtitem_yeardb) AS flstmtitem_yeardb,\n formatMoney(flstmtitem_yearcr) AS flstmtitem_yearcr,\n formatPrcnt(flstmtitem_yearprcnt) AS flstmtitem_yearprcnt,\n formatMoney(flstmtitem_yearbudget) AS flstmtitem_yearbudget,\n formatPrcnt(flstmtitem_yearbudgetprcnt) AS flstmtitem_yearbudgetprcnt,\n formatMoney(flstmtitem_yearbudgetdiff) AS flstmtitem_yearbudgetdiff,\n formatPrcnt(flstmtitem_yearbudgetdiffprcnt) AS flstmtitem_yearbudgetdiffprcnt,\n formatMoney(flstmtitem_prmonth) AS flstmtitem_prmonth,\n formatPrcnt(flstmtitem_prmonthprcnt) AS flstmtitem_prmonthprcnt,\n formatMoney(flstmtitem_prmonthdiff) AS flstmtitem_prmonthdiff,\n formatPrcnt(flstmtitem_prmonthdiffprcnt) AS flstmtitem_prmonthdiffprcnt,\n formatMoney(flstmtitem_prqtr) AS flstmtitem_prqtr,\n formatPrcnt(flstmtitem_prqtrprcnt) AS flstmtitem_prqtrprcnt,\n formatMoney(flstmtitem_prqtrdiff) AS flstmtitem_prqtrdiff,\n formatPrcnt(flstmtitem_prqtrdiffprcnt) AS flstmtitem_prqtrdiffprcnt,\n formatMoney(flstmtitem_pryear) AS flstmtitem_pryear,\n formatPrcnt(flstmtitem_pryearprcnt) AS flstmtitem_pryearprcnt,\n formatMoney(flstmtitem_pryeardiff) AS flstmtitem_pryeardiff,\n formatPrcnt(flstmtitem_pryeardiffprcnt) AS flstmtitem_pryeardiffprcnt\nFROM financialreport(<? value("flcol_id") ?>,<? value("period_id") ?>,\n<? if exists("shownumbers") ?>\n true\n<? else ?>\n false\n<? endif ?>\n,True,<? value("prj_id") ?>)\n<? if not exists("showzeros") ?>\n WHERE ((flstmtitem_year <> 0) OR (flstmtitem_type <> 'I'))\n<? endif ?>\n;\n \n \n notes\n SELECT * FROM (\nSELECT 1 AS seq, flhead_notes AS notes\nFROM flhead\n JOIN flcol ON (flhead_id=flcol_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (length(flhead_notes) > 0))\nUNION ALL\nSELECT 2 AS seq, flnotes_notes AS notes\nFROM flnotes\n JOIN flcol ON (flcol_flhead_id=flnotes_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (flnotes_period_id=<? value("period_id") ?>)\n AND (length(flnotes_notes) > 0))) data\nORDER BY seq;\n\n \n \n 167\n \n \n \n \n 100\n 80\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_name\n \n \n \n \n 1\n 160\n 749\n 160\n 2\n \n \n \n \n 570\n 130\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n \n \n 665\n 130\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n \n 570\n 145\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 100\n 100\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n flstmthead_typedescrip1\n \n \n \n \n 99\n 59.6\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n prj_name\n \n \n \n \n 15\n 59.5\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n project\n \n \n \n \n \n 4\n \n \n 37\n \n \n 570\n 0\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n \n 660\n 0\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n 0\n 31\n 751\n 31\n 2\n \n \n \n 570\n 15\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n \n
\n detail\n \n subgrp\n flstmtitem_subgrp\n \n 4\n \n 390\n 0\n 750\n 0\n 0\n \n \n \n \n \n detail\n \n 19\n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_yearprcnt\n \n \n \n \n 25\n 0\n 550\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_name\n \n \n \n \n 570\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_year\n \n \n \n
\n
\n notes\n \n \n notes\n \n 24\n \n \n 25\n 9\n 700\n 15\n \n 0\n \n Arial\n 9\n normal\n \n \n \n \n notes\n notes\n \n \n \n
\n \n 22\n \n \n 695\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 7\n \n
\n \N 0 2013-07-26 16:17:54.38447 340 FinancialReportYearBudget \N \n\n Financial Report Year and Budget\n FinancialReportYearBudget\n \n \n Financial Report Column Layout\n SELECT flcol_id, flhead_name || ' - ' || flcol_name FROM flcol, flhead WHERE ((flcol_flhead_id=flhead_id) AND (flhead_active))\n \n \n Accounting Period Reference\n SELECT period_id, \n CASE\n WHEN period_name <> '' THEN period_name \n ELSE (formatdate(period_start) || '-' || formatdate(period_end)) \n END \nFROM period \nORDER BY period_end DESC\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT \n <? value("project") ?> AS project,\n (SELECT prj_name FROM prj WHERE prj_id=<? value("prj_id") ?>) AS prj_name,\n flstmthead_username,\n flstmthead_flhead_name || ' - ' || flstmthead_flcol_name AS f_name,\n flstmthead_typedescrip1,\n flstmthead_typedescrip2,\n flstmthead_month,\n flstmthead_qtr,\n flstmthead_year,\n flstmthead_prmonth,\n flstmthead_prqtr,\n flstmthead_pryear\nFROM getflstmthead(<? value("flcol_id") ?>,<? value("period_id") ?>)\n \n \n detail\n SELECT \n flstmtitem_flhead_id,\n flstmtitem_period_id,\n flstmtitem_username,\n flstmtitem_order,\n flstmtitem_level,\n flstmtitem_subgrp,\n flstmtitem_type,\n flstmtitem_type_id,\n flstmtitem_parent_id,\n flstmtitem_accnt_id,\n flstmtitem_name,\n formatMoney(flstmtitem_month) AS flstmtitem_month,\n formatMoney(flstmtitem_monthdb) AS flstmtitem_monthdb,\n formatMoney(flstmtitem_monthcr) AS flstmtitem_monthcr,\n formatPrcnt(flstmtitem_monthprcnt) AS flstmtitem_monthprcnt,\n formatMoney(flstmtitem_monthbudget) AS flstmtitem_monthbudget,\n formatPrcnt(flstmtitem_monthbudgetprcnt) AS flstmtitem_monthbudgetprcnt,\n formatMoney(flstmtitem_monthbudgetdiff) AS flstmtitem_monthbudgetdiff,\n formatPrcnt(flstmtitem_monthbudgetdiffprcnt) AS flstmtitem_monthbudgetdiffprcnt,\n formatMoney(flstmtitem_qtr) AS flstmtitem_qtr,\n formatMoney(flstmtitem_qtrdb) AS flstmtitem_qtrdb,\n formatMoney(flstmtitem_qtrcr) AS flstmtitem_qtrcr,\n formatPrcnt(flstmtitem_qtrprcnt) AS flstmtitem_qtrprcnt,\n formatMoney(flstmtitem_qtrbudget) AS flstmtitem_qtrbudget,\n formatPrcnt(flstmtitem_qtrbudgetprcnt) AS flstmtitem_qtrbudgetprcnt,\n formatMoney(flstmtitem_qtrbudgetdiff) AS flstmtitem_qtrbudgetdiff,\n formatPrcnt(flstmtitem_qtrbudgetdiffprcnt) AS flstmtitem_qtrbudgetdiffprcnt,\n formatMoney(flstmtitem_year) AS flstmtitem_year,\n formatMoney(flstmtitem_yeardb) AS flstmtitem_yeardb,\n formatMoney(flstmtitem_yearcr) AS flstmtitem_yearcr,\n formatPrcnt(flstmtitem_yearprcnt) AS flstmtitem_yearprcnt,\n formatMoney(flstmtitem_yearbudget) AS flstmtitem_yearbudget,\n formatPrcnt(flstmtitem_yearbudgetprcnt) AS flstmtitem_yearbudgetprcnt,\n formatMoney(flstmtitem_yearbudgetdiff) AS flstmtitem_yearbudgetdiff,\n formatPrcnt(flstmtitem_yearbudgetdiffprcnt) AS flstmtitem_yearbudgetdiffprcnt,\n formatMoney(flstmtitem_prmonth) AS flstmtitem_prmonth,\n formatPrcnt(flstmtitem_prmonthprcnt) AS flstmtitem_prmonthprcnt,\n formatMoney(flstmtitem_prmonthdiff) AS flstmtitem_prmonthdiff,\n formatPrcnt(flstmtitem_prmonthdiffprcnt) AS flstmtitem_prmonthdiffprcnt,\n formatMoney(flstmtitem_prqtr) AS flstmtitem_prqtr,\n formatPrcnt(flstmtitem_prqtrprcnt) AS flstmtitem_prqtrprcnt,\n formatMoney(flstmtitem_prqtrdiff) AS flstmtitem_prqtrdiff,\n formatPrcnt(flstmtitem_prqtrdiffprcnt) AS flstmtitem_prqtrdiffprcnt,\n formatMoney(flstmtitem_pryear) AS flstmtitem_pryear,\n formatPrcnt(flstmtitem_pryearprcnt) AS flstmtitem_pryearprcnt,\n formatMoney(flstmtitem_pryeardiff) AS flstmtitem_pryeardiff,\n formatPrcnt(flstmtitem_pryeardiffprcnt) AS flstmtitem_pryeardiffprcnt\nFROM financialreport(<? value("flcol_id") ?>,<? value("period_id") ?>,\n<? if exists("shownumbers") ?>\n true\n<? else ?>\n false\n<? endif ?>\n,True,<? value("prj_id") ?>)\n<? if not exists("showzeros") ?>\n WHERE ((flstmtitem_year <> 0) OR (flstmtitem_yearbudget <> 0) OR (flstmtitem_type <> 'I'))\n<? endif ?>\n;\n \n \n notes\n SELECT * FROM (\nSELECT 1 AS seq, flhead_notes AS notes\nFROM flhead\n JOIN flcol ON (flhead_id=flcol_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (length(flhead_notes) > 0))\nUNION ALL\nSELECT 2 AS seq, flnotes_notes AS notes\nFROM flnotes\n JOIN flcol ON (flcol_flhead_id=flnotes_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (flnotes_period_id=<? value("period_id") ?>)\n AND (length(flnotes_notes) > 0))) data\nORDER BY seq;\n\n \n \n 167\n \n \n 465\n 130\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n \n 360\n 130\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n \n \n 360\n 145\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 560\n 145\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n Budget Diff.\n \n \n \n \n 100\n 100\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n flstmthead_typedescrip1\n \n \n \n \n \n 560\n 130\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n \n \n 100\n 80\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_name\n \n \n \n \n \n \n 3.53065\n 160\n 749.738\n 160\n 2\n \n \n \n 650\n 130\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n \n 99\n 59.6\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n prj_name\n \n \n \n \n 15\n 59.5\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n project\n \n \n \n \n \n 4\n \n \n 37\n \n \n 555\n 0\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n \n \n 355\n 15\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 650\n 0\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n \n 455\n 0\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n \n 355\n 0\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n \n -0.610015\n 29.5831\n 748.788\n 29.5831\n 2\n \n \n \n 555\n 15\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n Budget Diff.\n \n \n \n \n
\n detail\n \n subgrp\n flstmtitem_subgrp\n \n 4\n \n 355\n 0\n 750\n 0\n 0\n \n \n \n \n \n detail\n \n 19\n \n \n 459\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_yearbudget\n \n \n \n \n 560\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_yearbudgetdiff\n \n \n \n \n 650\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_yearbudgetdiffprcnt\n \n \n \n \n 360\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_year\n \n \n \n \n 25\n 0\n 345\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_name\n \n \n \n
\n
\n notes\n \n \n notes\n \n 24\n \n \n 25\n 9\n 700\n 15\n \n 0\n \n Arial\n 9\n normal\n \n \n \n \n notes\n notes\n \n \n \n
\n \n 22\n \n \n 695\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 7\n \n
\n \N 0 2013-07-26 16:17:54.38447 341 FinancialReportYearPriorYear \N \n\n Financial Report Year and Prior Year\n FinancialReportYearPriorYear\n \n \n Financial Report Column Layout\n SELECT flcol_id, flhead_name || ' - ' || flcol_name FROM flcol, flhead WHERE ((flcol_flhead_id=flhead_id) AND (flhead_active))\n \n \n Accounting Period Reference\n SELECT period_id, \n CASE\n WHEN period_name <> '' THEN period_name \n ELSE (formatdate(period_start) || '-' || formatdate(period_end)) \n END \nFROM period \nORDER BY period_end DESC\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT \n <? value("project") ?> AS project,\n (SELECT prj_name FROM prj WHERE prj_id=<? value("prj_id") ?>) AS prj_name,\n flstmthead_username,\n flstmthead_flhead_name || ' - ' || flstmthead_flcol_name AS f_name,\n flstmthead_typedescrip1,\n flstmthead_typedescrip2,\n flstmthead_typedescrip2 || 'Diff.' AS f_diff,\n flstmthead_typedescrip2 || ' % Diff.' AS f_diffprcnt,\n flstmthead_month,\n flstmthead_qtr,\n flstmthead_year,\n flstmthead_prmonth,\n flstmthead_prqtr,\n flstmthead_pryear\nFROM getflstmthead(<? value("flcol_id") ?>,<? value("period_id") ?>)\n \n \n detail\n SELECT \n flstmtitem_flhead_id,\n flstmtitem_period_id,\n flstmtitem_username,\n flstmtitem_order,\n flstmtitem_level,\n flstmtitem_subgrp,\n flstmtitem_type,\n flstmtitem_type_id,\n flstmtitem_parent_id,\n flstmtitem_accnt_id,\n flstmtitem_name,\n formatMoney(flstmtitem_month) AS flstmtitem_month,\n formatMoney(flstmtitem_monthdb) AS flstmtitem_monthdb,\n formatMoney(flstmtitem_monthcr) AS flstmtitem_monthcr,\n formatPrcnt(flstmtitem_monthprcnt) AS flstmtitem_monthprcnt,\n formatMoney(flstmtitem_monthbudget) AS flstmtitem_monthbudget,\n formatPrcnt(flstmtitem_monthbudgetprcnt) AS flstmtitem_monthbudgetprcnt,\n formatMoney(flstmtitem_monthbudgetdiff) AS flstmtitem_monthbudgetdiff,\n formatPrcnt(flstmtitem_monthbudgetdiffprcnt) AS flstmtitem_monthbudgetdiffprcnt,\n formatMoney(flstmtitem_qtr) AS flstmtitem_qtr,\n formatMoney(flstmtitem_qtrdb) AS flstmtitem_qtrdb,\n formatMoney(flstmtitem_qtrcr) AS flstmtitem_qtrcr,\n formatPrcnt(flstmtitem_qtrprcnt) AS flstmtitem_qtrprcnt,\n formatMoney(flstmtitem_qtrbudget) AS flstmtitem_qtrbudget,\n formatPrcnt(flstmtitem_qtrbudgetprcnt) AS flstmtitem_qtrbudgetprcnt,\n formatMoney(flstmtitem_qtrbudgetdiff) AS flstmtitem_qtrbudgetdiff,\n formatPrcnt(flstmtitem_qtrbudgetdiffprcnt) AS flstmtitem_qtrbudgetdiffprcnt,\n formatMoney(flstmtitem_year) AS flstmtitem_year,\n formatMoney(flstmtitem_yeardb) AS flstmtitem_yeardb,\n formatMoney(flstmtitem_yearcr) AS flstmtitem_yearcr,\n formatPrcnt(flstmtitem_yearprcnt) AS flstmtitem_yearprcnt,\n formatMoney(flstmtitem_yearbudget) AS flstmtitem_yearbudget,\n formatPrcnt(flstmtitem_yearbudgetprcnt) AS flstmtitem_yearbudgetprcnt,\n formatMoney(flstmtitem_yearbudgetdiff) AS flstmtitem_yearbudgetdiff,\n formatPrcnt(flstmtitem_yearbudgetdiffprcnt) AS flstmtitem_yearbudgetdiffprcnt,\n formatMoney(flstmtitem_prmonth) AS flstmtitem_prmonth,\n formatPrcnt(flstmtitem_prmonthprcnt) AS flstmtitem_prmonthprcnt,\n formatMoney(flstmtitem_prmonthdiff) AS flstmtitem_prmonthdiff,\n formatPrcnt(flstmtitem_prmonthdiffprcnt) AS flstmtitem_prmonthdiffprcnt,\n formatMoney(flstmtitem_prqtr) AS flstmtitem_prqtr,\n formatPrcnt(flstmtitem_prqtrprcnt) AS flstmtitem_prqtrprcnt,\n formatMoney(flstmtitem_prqtrdiff) AS flstmtitem_prqtrdiff,\n formatPrcnt(flstmtitem_prqtrdiffprcnt) AS flstmtitem_prqtrdiffprcnt,\n formatMoney(flstmtitem_pryear) AS flstmtitem_pryear,\n formatPrcnt(flstmtitem_pryearprcnt) AS flstmtitem_pryearprcnt,\n formatMoney(flstmtitem_pryeardiff) AS flstmtitem_pryeardiff,\n formatPrcnt(flstmtitem_pryeardiffprcnt) AS flstmtitem_pryeardiffprcnt\nFROM financialreport(<? value("flcol_id") ?>,<? value("period_id") ?>,\n<? if exists("shownumbers") ?>\n true\n<? else ?>\n false\n<? endif ?>\n,True,<? value("prj_id") ?>)\n<? if not exists("showzeros") ?>\n WHERE ((flstmtitem_year <> 0) OR (flstmtitem_pryear <> 0) OR (flstmtitem_type <> 'I'))\n<? endif ?>\n;\n \n \n notes\n SELECT * FROM (\nSELECT 1 AS seq, flhead_notes AS notes\nFROM flhead\n JOIN flcol ON (flhead_id=flcol_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (length(flhead_notes) > 0))\nUNION ALL\nSELECT 2 AS seq, flnotes_notes AS notes\nFROM flnotes\n JOIN flcol ON (flcol_flhead_id=flnotes_flhead_id)\nWHERE ((flcol_id=<? value("flcol_id") ?>)\n AND (flnotes_period_id=<? value("period_id") ?>)\n AND (length(flnotes_notes) > 0))) data\nORDER BY seq;\n\n \n \n 167\n \n \n 650\n 130\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_pryear\n \n \n \n \n 555\n 145\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diff\n \n \n \n \n \n \n 360\n 145\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 459\n 130\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_pryear\n \n \n \n \n 555\n 130\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_pryear\n \n \n \n \n 650\n 145\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diffprcnt\n \n \n \n \n 100\n 100\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n flstmthead_typedescrip1\n \n \n \n \n 100\n 80\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_name\n \n \n \n \n 459\n 145\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n \n 360\n 130\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n 0\n 160\n 750\n 160\n 2\n \n \n \n \n 99\n 59.6\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n prj_name\n \n \n \n \n 15\n 59.5\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n project\n \n \n \n \n \n 4\n \n \n 37\n \n \n 650\n 0\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_pryear\n \n \n \n \n 1\n 30\n 749\n 30\n 2\n \n \n \n 555\n 15\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diff\n \n \n \n \n 555\n 0\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_pryear\n \n \n \n \n 360\n 15\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n \n 360\n 0\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_year\n \n \n \n \n 459\n 0\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_pryear\n \n \n \n \n 650\n 15\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_diffprcnt\n \n \n \n \n 459\n 15\n 85\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n flstmthead_typedescrip2\n \n \n \n
\n detail\n \n subgrp\n flstmtitem_subgrp\n \n 4\n \n 360\n 0\n 750\n 0\n 0\n \n \n \n \n \n detail\n \n 19\n \n \n 25\n 0\n 345\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_name\n \n \n \n \n 459\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_pryear\n \n \n \n \n 555\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_pryeardiff\n \n \n \n \n 360\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_year\n \n \n \n \n 650\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n flstmtitem_pryeardiffprcnt\n \n \n \n
\n
\n notes\n \n \n notes\n \n 24\n \n \n 25\n 9\n 700\n 15\n \n 0\n \n Arial\n 9\n normal\n \n \n \n \n notes\n notes\n \n \n \n
\n \n 22\n \n \n \n 695\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 7\n \n
\n \N 0 2013-07-26 16:17:54.38447 344 FinancialTrend \N \n\n Financial Trend\n FinancialTrend\n Financial Trend Report\n \n Financial Report Layout\n SELECT flhead_id, flhead_name FROM flhead WHERE (flhead_active)\n \n \n Time period buckets\n Month\n Quarter\n Year\n \n \n Accounting Period Reference\n SELECT period_id, \n CASE\n WHEN period_name <> '' THEN period_name \n ELSE (formatdate(period_start) || '-' || formatdate(period_end)) \n END \nFROM period \nORDER BY period_end DESC\n \n \n Display account numbers with description\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 25\n 25\n \n head\n SELECT \n <? value("project") ?> AS project,\n (SELECT prj_name FROM prj WHERE prj_id=<? value("prj_id") ?>) AS prj_name,\n fltrendhead_username,\n fltrendhead_flhead_name,\n fltrendhead_typedescrip,\n fltrendhead_fld1,\n fltrendhead_fld2,\n fltrendhead_fld3,\n fltrendhead_fld4,\n fltrendhead_fld5,\n fltrendhead_fld6,\n fltrendhead_fld7,\n fltrendhead_fld8,\n fltrendhead_fld9,\n fltrendhead_fld10,\n fltrendhead_fld11,\n fltrendhead_fld12,\n fltrendhead_grndttl\nFROM getfltrendhead(<? value("flhead_id") ?>,ARRAY[\n <? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n <? endforeach ?>\n],<? value("interval") ?>)\n \n \n detail\n SELECT \n fltrenditem_flhead_id,\n fltrenditem_username,\n fltrenditem_order,\n fltrenditem_level,\n fltrenditem_subgrp,\n fltrenditem_type,\n fltrenditem_type_id,\n fltrenditem_parent_id,\n fltrenditem_accnt_id,\n fltrenditem_name,\n fltrenditem_fld1,\n fltrenditem_fld2,\n fltrenditem_fld3,\n fltrenditem_fld4,\n fltrenditem_fld5,\n fltrenditem_fld6,\n fltrenditem_fld7,\n fltrenditem_fld8,\n fltrenditem_fld9,\n fltrenditem_fld10,\n fltrenditem_fld11,\n fltrenditem_fld12,\n fltrenditem_grndttl\nFROM\n financialReport(<? value("flhead_id") ?>, ARRAY[\n <? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n <? endforeach ?>\n],<? value("interval") ?>,\n<? if exists("shownumbers") ?>\n true\n<? else ?>\n false\n<? endif ?>\n,<? value("prj_id") ?>)\n<? if not exists("showzeros") ?>\n WHERE ((fltrenditem_fld1 <> formatMoney(0) AND fltrenditem_fld1 IS NOT NULL) \n\tOR (fltrenditem_fld1 <> formatMoney(0) AND fltrenditem_fld1 IS NOT NULL)\n\tOR (fltrenditem_fld2 <> formatMoney(0) AND fltrenditem_fld2 IS NOT NULL)\n\tOR (fltrenditem_fld3 <> formatMoney(0) AND fltrenditem_fld3 IS NOT NULL)\n\tOR (fltrenditem_fld4 <> formatMoney(0) AND fltrenditem_fld4 IS NOT NULL)\n\tOR (fltrenditem_fld5 <> formatMoney(0) AND fltrenditem_fld5 IS NOT NULL)\n\tOR (fltrenditem_fld6 <> formatMoney(0) AND fltrenditem_fld6 IS NOT NULL)\n\tOR (fltrenditem_fld7 <> formatMoney(0) AND fltrenditem_fld7 IS NOT NULL)\n\tOR (fltrenditem_fld8 <> formatMoney(0) AND fltrenditem_fld8 IS NOT NULL)\n\tOR (fltrenditem_fld9 <> formatMoney(0) AND fltrenditem_fld9 IS NOT NULL)\n\tOR (fltrenditem_fld10 <> formatMoney(0) AND fltrenditem_fld10 IS NOT NULL)\n\tOR (fltrenditem_fld11 <> formatMoney(0) AND fltrenditem_fld11 IS NOT NULL)\n\tOR (fltrenditem_fld12 <> formatMoney(0) AND fltrenditem_fld12 IS NOT NULL)\n\tOR (fltrenditem_type <> 'I'))\n<? endif ?>\n \n \n notes\n SELECT * FROM (\nSELECT 1 AS seq, text('Notes') AS label, flhead_notes AS notes, \n startOfTime() AS period_end\nFROM flhead\nWHERE ((flhead_id=<? value("flhead_id") ?>)\n AND (length(flhead_notes) > 0))\nUNION ALL\nSELECT 2 AS seq, period_name AS label, flnotes_notes AS notes, \n period_end\nFROM flnotes\n JOIN period ON (flnotes_period_id=period_id)\nWHERE ((flnotes_flhead_id=<? value("flhead_id") ?>)\n AND (\n <? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n OR \n <? endif ?>\n (flnotes_period_id=<? value("period_id_list") ?>)\n <? endforeach ?>\n )\n AND (length(flnotes_notes) > 0))) data\nORDER BY seq, period_end;\n\n \n \n 149\n \n \n 208\n 120\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld1\n \n \n \n \n 100\n 60\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n fltrendhead_flhead_name\n \n \n \n \n 860\n 120\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld11\n \n \n \n \n 918\n 120\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld12\n \n \n \n \n 469\n 120\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld5\n \n \n \n \n 405\n 120\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld4\n \n \n \n \n 600\n 120\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld7\n \n \n \n \n \n 275\n 120\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld2\n \n \n \n \n 795\n 120\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld10\n \n \n \n 5\n 135\n 1050\n 135\n 2\n \n \n \n 535\n 120\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld6\n \n \n \n \n 665\n 120\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld8\n \n \n \n \n 104\n 80\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n fltrendhead_typedescrip\n \n \n \n \n \n 989\n 120\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_grndttl\n \n \n \n \n \n \n 340\n 120\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld3\n \n \n \n \n 730\n 120\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld9\n \n \n \n \n 100\n 40\n 459\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n prj_name\n \n \n \n \n 20\n 40\n 80\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n project\n \n \n \n \n \n 10\n \n \n 43\n \n \n 208\n 10\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld1\n \n \n \n \n 340\n 10\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld3\n \n \n \n \n 665\n 10\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld8\n \n \n \n \n 600\n 10\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld7\n \n \n \n \n 535\n 10\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld6\n \n \n \n 5\n 30\n 1050\n 30\n 2\n \n \n \n 405\n 10\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld4\n \n \n \n \n 730\n 10\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld9\n \n \n \n \n 795\n 10\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld10\n \n \n \n \n 918\n 10\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld12\n \n \n \n \n 860\n 10\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld11\n \n \n \n \n 280\n 10\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld2\n \n \n \n \n 469\n 10\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_fld5\n \n \n \n \n 985\n 10\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n fltrendhead_grndttl\n \n \n \n \n
\n detail\n \n subgrp\n fltrenditem_subgrp\n \n 7\n \n 204\n 0\n 1055\n 0\n 1\n \n \n \n \n \n detail\n \n 19\n \n \n 925\n 0\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n fltrenditem_fld12\n \n \n \n \n 665\n 0\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n fltrenditem_fld8\n \n \n \n \n 340\n 0\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n fltrenditem_fld3\n \n \n \n \n 469\n 0\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n fltrenditem_fld5\n \n \n \n \n 860\n 0\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n fltrenditem_fld11\n \n \n \n \n 600\n 0\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n fltrenditem_fld7\n \n \n \n \n 535\n 0\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n fltrenditem_fld6\n \n \n \n \n 405\n 0\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n fltrenditem_fld4\n \n \n \n \n 730\n 0\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n fltrenditem_fld9\n \n \n \n \n 208\n 0\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n fltrenditem_fld1\n \n \n \n \n 795\n 0\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n fltrenditem_fld10\n \n \n \n \n 989\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n fltrenditem_grndttl\n \n \n \n \n 5\n 0\n 195\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n fltrenditem_name\n \n \n \n \n 275\n 0\n 60\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n fltrenditem_fld2\n \n \n \n
\n
\n notes\n \n \n notes\n \n 32\n \n \n 10\n 17\n 1025\n 15\n \n 0\n \n Arial\n 9\n normal\n \n \n \n \n notes\n notes\n \n \n \n \n 5\n 2\n 500\n 15\n \n \n Arial\n 9\n bold\n \n \n \n \n notes\n label\n \n \n \n
\n \n 29\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 930\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n Financial Trend Report 0 2013-07-26 16:17:54.38447 428 Incident \N \n\n Incident\n Incident\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n select incdt_number, incdt_summary, \n incdt_assigned_username, incdt_status, \n incdt_owner_username, incdtseverity_name,\n incdtpriority_name, incdtcat_name,\n crmacct_name, cntct_first_name || ' ' ||cntct_last_name as f_name, \n cntct_phone, cntct_email,cntct_title\n from incdt left outer join incdtseverity on \n (incdt_incdtseverity_id = incdtseverity_id)\n left outer join incdtpriority on\n (incdt_incdtpriority_id = incdtpriority_id) \n left outer join incdtcat on\n (incdt_incdtcat_id = incdtcat_id)\n left outer join crmacct on \n (incdt_crmacct_id = crmacct_id) \n left outer join cntct on \n (incdt_cntct_id = cntct_id) \n where incdt_id = <? value("incdt_id") ?>;\n \n \n \n detail\n select incdt_descrip \n from incdt\n where incdt_id = <? value("incdt_id") ?>;\n \n \n detail2\n select comment_date, comment_user, comment_text \n from comment\n where comment_source_id = <? value("incdt_id") ?> and comment_source = 'INCDT'\norder by comment_date desc;\n \n \n detail3\n select url_title, url_url \nfrom url \nwhere url_source_id = <? value("incdt_id") ?>\nand url_source = 'INCDT'\n\n\n \n \n 268\n \n \n 136\n 57\n 598\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n incdt_summary\n \n \n \n \n 128\n 123\n 251\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_name\n \n \n \n \n 370\n 10\n 171\n 35\n \n \n Arial\n 18\n bold\n \n \n \n \n head\n incdt_number\n \n \n \n \n 540\n 144\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n incdtseverity_name\n \n \n \n \n \n 128\n 165\n 342\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cntct_title\n \n \n \n \n \n \n \n \n 540\n 187\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n incdt_owner_username\n \n \n \n \n \n \n 540\n 208\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n incdt_assigned_username\n \n \n \n \n 128\n 208\n 279\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cntct_email\n \n \n \n \n \n \n 540\n 105\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n incdtcat_name\n \n \n \n \n \n 540\n 123\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n incdt_status\n \n \n \n \n 128\n 105\n 263\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n crmacct_name\n \n \n \n \n \n 540\n 165\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n incdtpriority_name\n \n \n \n \n \n \n 128\n 144\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cntct_phone\n \n \n \n \n \n 128\n 187\n 170\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cntct_phone\n \n \n \n \n \n \n 6\n \n \n 36\n \n 5\n 30\n 745\n 30\n 2\n \n \n
\n detail\n \n \n detail\n \n 37\n \n \n 10.9\n 8\n 730\n 17\n \n 14\n \n Helvetica\n 9\n normal\n \n \n \n \n detail\n incdt_descrip\n \n \n \n
\n
\n detail2\n \n labour\n \n \n 33.9041\n \n \n 2.90454\n 3.94806\n 744.812\n 3.62203\n 1\n \n \n \n \n \n detail2\n \n 49.0959\n \n \n 10.9\n 0.621\n 150\n 20\n \n \n Helvetica\n 9\n normal\n \n \n \n \n detail2\n comment_date\n \n \n \n \n 196\n 0.621\n 150\n 20\n \n \n Arial\n 9\n normal\n \n \n \n \n detail2\n comment_user\n \n \n \n \n 10.9\n 23.1\n 730\n 17\n \n 14\n \n Helvetica\n 9\n normal\n \n \n \n \n detail2\n comment_text\n \n \n \n
\n
\n jobcost_head\n \n \n head\n \n 47.4021\n \n 4.90454\n 5.44606\n 746.812\n 5.12003\n 1\n \n \n \n \n \n
\n
\n detail3\n \n detail3_footer\n \n \n 39.6984\n \n \n \n \n detail3\n \n 28.8318\n \n \n 289\n 4.08\n 460\n 18\n \n \n Arial\n 9\n normal\n \n \n \n \n detail3\n url_url\n \n \n \n \n 10.9\n 2.9979\n 274.1\n 20\n \n \n Arial\n 9\n normal\n \n \n \n \n detail3\n url_title\n \n \n \n
\n \n 16\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 27.5186\n \n
\n \N 0 2013-07-26 16:17:54.38447 321 IncidentWorkbenchList \N \n\n Incident List\n IncidentWorkbenchList\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n incidents\n detail\n \n \n 144\n \n 2\n 139\n 742\n 139\n 2\n \n \n \n \n \n \n \n \n \n \n \n \n 10\n 39\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 5\n \n \n 21\n \n \n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n
\n detail\n \n ByUser\n usr_username\n \n \n \n detail\n \n 28\n \n \n 320\n 0\n 230\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdt_summary\n \n \n \n \n 65\n 0\n 110\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n crmacct_name\n \n \n \n \n 240\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdt_assigned_username\n \n \n \n \n 180\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdt_status\n \n \n \n \n 690\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdtpriority_name\n \n \n \n \n 560\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdt_timestamp\n \n \n \n \n 640\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdtseverity_name\n \n \n \n \n 10\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdt_number\n \n \n \n \n 320\n 15\n 430\n 15\n \n 0\n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdt_descrip\n \n \n \n
\n \n 15\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 170 ItemCostHistory \N \n\n Item Costs History\n ItemCostHistory\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n item_descrip1,\n item_descrip2\n FROM item\n WHERE (item_id=<? value("item_id") ?>);\n\n \n \n detail\n SELECT costhist_id,\n costelem_type as f_element,\n formatBoolYN(costhist_lowlevel) as f_lower,\n CASE WHEN costhist_type='A' THEN 'Actual'\n WHEN costhist_type='S' THEN 'Standard'\n WHEN costhist_type='D' THEN 'Delete'\n WHEN costhist_type='N' THEN 'New'\n END as f_type,\n formatDateTime(costhist_date) as f_time,\n costhist_username as f_user,\n formatCost(costhist_oldcost) as f_oldcost,\n formatCost(costhist_newcost) as f_newcost\n FROM costhist, costelem \n WHERE ((costhist_costelem_id=costelem_id)\n AND (costhist_item_id=<? value("item_id") ?>)\n)\nORDER BY costhist_date, costelem_type;\n \n \n 221\n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n 100\n 100\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n 100\n 120\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n \n 100\n 80\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n \n \n \n \n 6\n \n \n 26\n \n \n \n \n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 50\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_element\n \n \n \n \n 470\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_user\n \n \n \n \n 245\n 0\n 45\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_lower\n \n \n \n \n 295\n 0\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_type\n \n \n \n \n 575\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_oldcost\n \n \n \n \n 365\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_time\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_newcost\n \n \n \n
\n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 169 ItemCostSummary \N \n\n Item Costs Summary\n ItemCostSummary\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n item_descrip1,\n item_descrip2\n FROM item\n WHERE (item_id=<? value("item_id") ?>);\n\n \n \n detail\n SELECT itemcost_id,\n CASE WHEN (costelem_sys) THEN 1\n ELSE 0\n END,\n costelem_type as f_element,\n formatBoolYN(itemcost_lowlevel) as f_lower,\n formatCost(itemcost_stdcost) as f_stdcost,\n formatDate(itemcost_posted, 'Never') as f_posted,\n formatcost(currToBase(itemcost_curr_id, itemcost_actcost, NULL)) as f_actcost,\n formatDate(itemcost_updated, 'Never') as f_updated,\n itemcost_stdcost AS stdcost, currToBase(itemcost_curr_id, itemcost_actcost, NULL) AS actcost\n FROM itemcost, costelem\n WHERE ((itemcost_costelem_id=costelem_id)\n AND (itemcost_item_id=<? value("item_id") ?>)\n)\nORDER BY itemcost_lowlevel, costelem_type;\n \n \n 221\n \n \n \n 100\n 80\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n \n \n \n \n \n 100\n 120\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n 100\n 100\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n 6\n \n \n 26\n \n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 330\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_stdcost\n \n \n \n \n 50\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_element\n \n \n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_updated\n \n \n \n \n 280\n 0\n 45\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_lower\n \n \n \n \n 409\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_posted\n \n \n \n \n 490\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_actcost\n \n \n \n
\n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 16\n \n \n 490\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n actcost\n \n price\n \n \n \n \n \n 330\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n stdcost\n \n price\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 317 IncidentPrioritiesList \N \n\n Incident Priorities\n IncidentPrioritiesList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT incdtpriority_name, incdtpriority_order, incdtpriority_descrip\n FROM incdtpriority\nORDER BY incdtpriority_order, incdtpriority_name;\n \n \n 76\n \n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 100\n 0\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdtpriority_name\n \n \n \n \n 10\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdtpriority_order\n \n \n \n \n 250\n 0\n 500\n 15\n \n 0\n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdtpriority_descrip\n \n \n \n
\n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 168 ItemCostsByClassCode \N \n\n Item Costs By Class Code\n ItemCostsByClassCode\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("classcode_id") ?>\n ( SELECT (classcode_code || '-' || classcode_descrip)\n FROM classcode\n WHERE (classcode_id=<? value("classcode_id") ?>) )\n <? elseif exists("classcode_pattern") ?>\n text(<? value("classcode_pattern") ?>)\n <? else ?>\n text('All Class Codes')\n <? endif ?>\n AS classcode;\n \n \n detail\n SELECT item_id,\n item_number,\n item_descrip1,\n item_descrip2,\n uom_name as f_uom,\n formatCost(scost) as f_stdcost,\n formatCost(acost) as f_actcost,\n classcode_code\n FROM ( SELECT item_id,\n item_number,\n item_descrip1,\n item_descrip2,\n uom_name,\n stdcost(item_id) AS scost,\n actcost(item_id) AS acost,\n classcode_code\n FROM item, classcode, uom\n WHERE ((item_classcode_id=classcode_id)\n AND (item_inv_uom_id=uom_id)\n <? if exists("classcode_id") ?>\n AND (classcode_id=<? value("classcode_id") ?>)\n <? elseif exists("classcode_pattern") ?>\n AND (classcode_code ~ <? value("classcode_pattern") ?>)\n <? endif ?>\n )\n ) AS data\n WHERE ( (true)\n<? if exists("onlyShowZeroCosts") ?>\n AND ((scost=0) OR (acost=0))\n<? endif ?>\n<? if exists("onlyShowDiffCosts") ?>\n AND (scost != acost)\n<? endif ?>\n )\nORDER BY item_number\n \n \n 234\n \n \n \n \n \n \n 5\n 228\n 745\n 228\n 2\n \n \n \n \n \n 120\n 120\n 565\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n classcode\n \n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 51\n \n \n 400\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_uom\n \n \n \n \n 500\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_stdcost\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 5\n 0\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n classcode_code\n \n \n \n \n 70\n 0\n 228\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 70\n 30\n 228\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 70\n 15\n 228\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 600\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_actcost\n \n \n \n
\n \n 16\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 455 ItemSources \N \n\n Item Sources\n ItemSources\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT item_number, vend_name,\n item_descrip1, item_descrip2,\n uom_name,\n itemsrc_vend_item_number as f_venditem,\n itemsrc_vend_uom as f_venduom,\n formatQty(itemsrc_invvendoruomratio) as f_uomratio\nFROM itemsrc, vendinfo, item, uom\nWHERE ((itemsrc_vend_id=vend_id)\n AND (itemsrc_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n<? if exists("item_id") ?>\n AND (itemsrc_item_id=<? value("item_id") ?>)\n<? endif ?>\n<? if exists("vend_id") ?>\n AND (itemsrc_vend_id=<? value("vend_id") ?>)\n<? endif ?>\n)\nORDER By item_number, vend_name;\n \n \n 221\n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n \n \n \n \n \n 15\n 38\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 56\n \n \n 435\n 2\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n \n 695\n 2\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_uomratio\n \n \n \n \n 230\n 2\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 640\n 2\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_venduom\n \n \n \n \n 230\n 32\n 400\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 230\n 17\n 400\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n 5\n 50\n 745\n 50\n 0\n \n \n \n 485\n 2\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_venditem\n \n \n \n \n 5\n 2\n 215\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_name\n \n \n \n
\n \n 16\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 85\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 364 JobCosting \N \n\n Job Costing\n JobCosting\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatwonumber(<? value("wo_id") ?>) AS wonumber;\n \n \n \n detail\n manufacture\n jobcosting\n \n \n 141\n \n \n \n \n 0\n 135\n 740\n 135\n 2\n \n \n \n \n \n \n \n 120\n 70\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n wonumber\n \n \n \n \n \n \n 9\n \n \n 29\n \n \n \n \n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n
\n detail\n \n \n detail\n \n 21\n \n 0\n 20\n 740\n 20\n 0\n \n \n \n 630\n 0\n 29\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom\n \n \n \n \n 80\n 0\n 219\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n code\n \n \n \n \n 305\n 0\n 229\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n descrip\n \n \n \n \n 15\n 0\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n type\n \n \n \n \n 540\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qty\n \n qty\n \n \n \n 666\n 0\n 84\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cost\n \n cost\n \n \n
\n \n 21\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 18\n \n \n 670\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cost\n \n cost\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 171 ItemMaster \N \n\n Item Master\n ItemMaster\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n formatBoolYN(item_active) AS f_item_active,\n item_descrip1, item_descrip2,\n CASE WHEN(item_type='P') THEN 'Purchased'\n WHEN(item_type='M') THEN 'Manufactured'\n WHEN(item_type='J') THEN 'Job'\n WHEN(item_type='F') THEN 'Phantom'\n WHEN(item_type='B') THEN 'Breeder'\n WHEN(item_type='C') THEN 'Co-Product'\n WHEN(item_type='Y') THEN 'By-Product'\n WHEN(item_type='R') THEN 'Reference'\n WHEN(item_type='T') THEN 'Tooling'\n WHEN(item_type='O') THEN 'Outside Process'\n WHEN(item_type='K') THEN 'Kit'\n ELSE item_type\n END AS f_item_type,\n formatBoolYN(item_config) AS f_item_config,\n (classcode_code||' - '||classcode_descrip) AS f_classcode,\n CASE WHEN (COALESCE(freightclass_id, -1) <> -1) THEN (freightclass_code||' - '||freightclass_descrip) END AS f_freightclass,\n iuom.uom_name AS invuom,\n formatBoolYN(item_picklist) AS f_item_picklist,\n formatBoolYN(item_fractional) AS f_item_fractional,\n itemcapuom(item_id) AS capuom, itemaltcapuom(item_id) AS altcapuom, puom.uom_name AS shipuom,\n formatUOMRatio(itemcapinvrat(item_id)) AS f_capinvrat,\n formatUOMRatio(itemaltcapinvrat(item_id)) AS f_altcapinvrat,\n formatUOMRatio(iteminvpricerat(item_id)) AS f_shipinvrat,\n formatWeight(item_prodweight) AS f_item_prodweight,\n formatWeight(item_packweight) AS f_item_packweight,\n formatBoolYN(item_sold) AS f_item_sold\n FROM item JOIN classcode ON (classcode_id=item_classcode_id)\n JOIN uom iuom ON (iuom.uom_id=item_inv_uom_id)\n JOIN uom puom ON (puom.uom_id=item_price_uom_id)\n LEFT OUTER JOIN freightclass ON (freightclass_id=item_freightclass_id)\n WHERE (item_id=<? value("item_id") ?>)\n;\n \n \n sold\n SELECT uom_name,\n formatUOMRatio(iteminvpricerat(item_id)) AS f_iteminvpricerat,\n (prodcat_code||' - '||prodcat_descrip) AS f_prodcat,\n formatBoolYN(item_exclusive) AS f_item_exclusive,\n formatPrice(item_listprice) AS f_item_listprice,\n formatExtPrice(item_listprice / iteminvpricerat(item_id)) AS f_extprice\n FROM item, prodcat, uom\n WHERE ((item_id=<? value("item_id") ?>)\n AND (item_price_uom_id=uom_id)\n AND (item_sold)\n AND (item_prodcat_id=prodcat_id) );\n \n \n notes\n SELECT item_comments, item_extdescrip\n FROM item\n WHERE (item_id=<? value("item_id") ?>);\n \n \n itemchar\n SELECT 1 as one,\n char_name as charass_name,\n charass_value\n FROM charass, char\n WHERE ((charass_target_type='I')\n AND (charass_char_id=char_id)\n AND (charass_target_id=<? value("item_id") ?>))\nORDER BY char_name;\n \n \n imglist\n SELECT 1 as one,\n image_name, firstLine(image_descrip) as f_descrip,\n CASE WHEN (imageass_purpose='I') THEN 'Inventory Description'\n WHEN (imageass_purpose='P') THEN 'Product Description'\n WHEN (imageass_purpose='E') THEN 'Engineering Reference'\n WHEN (imageass_purpose='M') THEN 'Miscellaneous'\n ELSE 'Other'\n END as f_purpose\nFROM imageass, image\nWHERE ( (imageass_image_id=image_id)\n AND (imageass_source='I')\n AND (imageass_source_id=<? value("item_id") ?>) )\nORDER BY image_name;\n \n \n comments\n SELECT 1 as one,\n formatDate(comment_date) as f_date,\n comment_user,\n comment_text\nFROM comment\nWHERE ( (comment_source='I')\n AND (comment_source_id=<? value("item_id") ?>) )\nORDER BY comment_date;\n \n \n 333\n \n \n 135\n 310\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_item_sold\n \n \n \n \n \n 465\n 252\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_shipinvrat\n \n \n \n \n \n \n \n 505\n 135\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_item_config\n \n \n \n \n 505\n 155\n 225\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_freightclass\n \n \n \n \n \n 135\n 227\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n altcapuom\n \n \n \n \n 390\n 285\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_item_packweight\n \n \n \n \n 465\n 207\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_capinvrat\n \n \n \n \n 135\n 102\n 400\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n \n \n 135\n 155\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_classcode\n \n \n \n \n 135\n 135\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_item_type\n \n \n \n \n 135\n 65\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n 135\n 185\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n invuom\n \n \n \n \n \n \n \n 465\n 227\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_altcapinvrat\n \n \n \n \n \n \n \n 135\n 252\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n shipuom\n \n \n \n \n 135\n 285\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_item_prodweight\n \n \n \n \n 135\n 207\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n capuom\n \n \n \n \n 135\n 85\n 400\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n 565\n 65\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_item_active\n \n \n \n \n \n \n \n \n \n 590\n 185\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_item_fractional\n \n \n \n \n 370\n 185\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_item_picklist\n \n \n \n
\n sold\n \n \n sold\n \n 93\n \n \n \n 207\n 45\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n sold\n f_item_listprice\n \n \n \n \n 640\n 45\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n sold\n f_item_exclusive\n \n \n \n \n \n \n \n 207\n 25\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n sold\n f_prodcat\n \n \n \n \n 545\n 5\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n sold\n f_iteminvpricerat\n \n \n \n \n \n 207\n 65\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n sold\n f_extprice\n \n \n \n \n \n 207\n 5\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n sold\n uom_name\n \n \n \n \n
\n
\n notes\n \n \n notes\n \n 36\n \n \n \n 120\n 5\n 615\n 20\n \n 5\n \n Arial\n 10\n bold\n \n \n \n \n notes\n item_comments\n \n \n \n
\n
\n extdescrip\n \n \n notes\n \n 36\n \n \n \n 120\n 5\n 615\n 20\n \n 5\n \n Arial\n 10\n bold\n \n \n \n \n notes\n item_extdescrip\n \n \n \n
\n
\n itemchar\n \n itemchar\n one\n \n 57\n \n 120\n 50\n 690\n 50\n 0\n \n \n \n \n \n \n \n \n itemchar\n \n 21\n \n \n 300\n 0\n 385\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n itemchar\n charass_value\n \n \n \n \n 125\n 0\n 160\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n itemchar\n charass_name\n \n \n \n
\n
\n imglist\n \n imglist\n one\n \n 57\n \n \n \n \n \n 120\n 50\n 690\n 50\n 0\n \n \n \n \n \n imglist\n \n 21\n \n \n 565\n 0\n 130\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n imglist\n f_purpose\n \n \n \n \n 125\n 0\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n imglist\n image_name\n \n \n \n \n 250\n 0\n 315\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n imglist\n f_descrip\n \n \n \n
\n
\n comments\n \n comments\n one\n \n 57\n \n \n \n \n 120\n 50\n 690\n 50\n 0\n \n \n \n \n \n \n comments\n \n 21\n \n \n 315\n 0\n 370\n 15\n \n 5\n \n Arial\n 8\n bold\n \n \n \n \n comments\n comment_text\n \n \n \n \n 207\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n comments\n comment_user\n \n \n \n \n 125\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n comments\n f_date\n \n \n \n
\n \n 21\n \n \n \n \n 102\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 460 ItemSites \N \n\n Item Sites\n ItemSites\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT warehous_code,\n formatBoolYN(itemsite_active) AS active,\n item_number,\n item_descrip1,\n item_descrip2,\n formatBoolYN(itemsite_wosupply) AS supplied,\n formatBoolYN(itemsite_sold) AS sold,\n itemsite_soldranking,\n formatBoolYN(itemsite_stocked) AS stocked,\n formatBoolYN(itemsite_createpr) AS createpr,\n CASE WHEN (itemsite_controlmethod='N') THEN 'None'\n WHEN (itemsite_controlmethod='R') THEN 'Regular'\n WHEN (itemsite_controlmethod='L') THEN 'Lot #'\n WHEN (itemsite_controlmethod='S') THEN 'Serial #'\n ELSE '?'\n END AS controlmethod,\n formatBoolYN(itemsite_loccntrl) AS locationcontrol,\n CASE WHEN (itemsite_location_id=-1) THEN 'None'\n ELSE ( SELECT location_name\n FROM location\n WHERE (location_id=itemsite_location_id) )\n END AS defaultlocation,\n formatBoolYN(itemsite_useparams) AS enforceparams,\n formatBoolYN(itemsite_useparamsmanual) AS onmanualorders,\n formatQty(itemsite_reorderlevel) AS reorderlevel,\n formatQty(itemsite_ordertoqty) AS orderupto,\n formatQty(itemsite_multordqty) AS ordermult,\n formatQty(itemsite_safetystock) AS safetystock,\n itemsite_abcclass,\n itemsite_cyclecountfreq,\n itemsite_leadtime,\n itemsite_eventfence,\n formatQty(itemsite_qtyonhand) AS qoh,\n formatDate(itemsite_datelastused, 'Never') AS lastused,\n formatDate(itemsite_datelastcount, 'Never') AS lastcounted,\n CASE WHEN(itemsite_plancode_id=-1) THEN 'Error'\n ELSE (SELECT (plancode_code || '-' || plancode_name)\n FROM plancode\n WHERE (plancode_id=itemsite_plancode_id) )\n END AS plannercode\n FROM item, uom, itemsite, whsinfo\n WHERE ((itemsite_warehous_id=warehous_id)\n AND (itemsite_item_id=item_id)\n AND(item_inv_uom_id=uom_id)\n <? if exists("search_pattern") ?>\n AND ((item_number ~* <? value("search_pattern") ?>)\n OR (item_descrip1 || ' ' || item_descrip2 ~* <? value("search_pattern") ?>)\n OR (warehous_code ~* <? value("search_pattern") ?>))\n <? endif ?>\n <? if exists("item_id") ?>\n AND (item_id=<? value("item_id") ?>)\n <? endif ?>\n <? if exists("classcode_id") ?>\n AND (item_classcode_id=<? value("classcode_id") ?>)\n <? endif ?>\n <? if exists("itemgrp_id") ?>\n AND (item_id IN (SELECT itemgrpitem_item_id \n FROM itemgrpitem \n WHERE (itemgrpitem_itemgrp_id=<? value("itemgrp_id") ?>)))\n <? endif ?>\n <? if exists("plancode_id") ?>\n AND (itemsite_plancode_id=<? value("plancode_id") ?>)\n <? endif ?>\n <? if exists("costcat_id") ?>\n AND (itemsite_costcat_id=<? value("costcat_id") ?>)\n <? endif ?>\n <? if exists("classcode_pattern") ?>\n AND (item_classcode_id IN (SELECT classcode_id \n FROM classcode \n WHERE (classcode_code ~ <? value("classcode_pattern") ?>)))\n <? endif ?>\n <? if exists("itemgrp_pattern") ?>\n AND (item_id IN (SELECT itemgrpitem_item_id \n FROM itemgrpitem, itemgrp \n WHERE ( (itemgrpitem_itemgrp_id=itemgrp_id) \n AND (itemgrp_name ~ <? value("itemgrp_pattern") ?>) ) ))\n <? endif ?>\n <? if exists("plancode_pattern") ?>\n AND (itemsite_plancode_id IN (SELECT plancode_id \n FROM plancode \n WHERE (plancode_code ~ <? value("plancode_pattern") ?>)))\n <? endif ?>\n <? if exists("costcat_pattern") ?>\n AND (itemsite_costcat_id IN (SELECT costcat_id \n FROM costcat \n WHERE (costcat_code ~ <? value("costcat_pattern") ?>)))\n <? endif ?>\n <? if exists("warehous_id") ?>\n AND (warehous_id=<? value("warehous_id") ?>)\n <? endif ?>\n <? if not exists("showInactive") ?>\n AND (itemsite_active)\n <? endif ?>\n)\nORDER BY item_number, warehous_code;\n \n \n 281\n \n \n \n \n \n \n \n \n \n \n \n \n 5\n 275\n 745\n 275\n 2\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 10\n 38\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 81\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 5\n 75\n 745\n 75\n 2\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 81\n \n \n 580\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n orderupto\n \n \n \n \n 490\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n enforceparams\n \n \n \n \n 10\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 260\n 60\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qoh\n \n \n \n \n 430\n 60\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n lastcounted\n \n \n \n \n 580\n 45\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n safetystock\n \n \n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n reorderlevel\n \n \n \n \n 409\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n controlmethod\n \n \n \n \n 50\n 0\n 229\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 280\n 0\n 45\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n supplied\n \n \n \n \n 330\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n createpr\n \n \n \n \n 280\n 30\n 45\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n stocked\n \n \n \n \n 330\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemsite_soldranking\n \n \n \n \n 409\n 30\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n defaultlocation\n \n \n \n \n 409\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n locationcontrol\n \n \n \n \n 10\n 15\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n active\n \n \n \n 5\n 75\n 745\n 75\n 0\n \n \n \n 670\n 15\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemsite_cyclecountfreq\n \n \n \n \n 280\n 15\n 45\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n sold\n \n \n \n \n 50\n 30\n 229\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 670\n 0\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemsite_abcclass\n \n \n \n \n 50\n 15\n 229\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 490\n 15\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n onmanualorders\n \n \n \n \n 50\n 45\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n plannercode\n \n \n \n \n 345\n 60\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n lastused\n \n \n \n \n 670\n 45\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemsite_eventfence\n \n \n \n \n 580\n 30\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ordermult\n \n \n \n \n 670\n 30\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemsite_leadtime\n \n \n \n
\n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 217 LocationDispatchList \N \n\n Location Dispatch List\n LocationDispatchList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT warehous_code\nFROM whsinfo\nWHERE (warehous_id=%1);\n \n \n detail\n SELECT formatLocationBarcode(location_id) AS barcode,\n formatLocationIssueBarcode(location_id) AS issuebarcode,\n formatLocationContentsBarcode(location_id) AS contentsbarcode,\n location_name, firstLine(location_descrip) AS description\nFROM location\nWHERE (location_id IN (%2))\nORDER BY location_name;\n \n \n 131\n \n \n 5\n 125\n 985\n 125\n 2\n \n \n \n \n \n 510\n 35\n 80\n 20\n \n \n Arial\n 12\n bold\n \n \n \n \n head\n warehous_code\n \n \n \n \n \n \n \n
\n detail\n \n detail\n location_name\n \n \n \n detail\n \n 71\n \n \n 15\n 5\n 125\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n location_name\n \n \n \n \n 335\n 30\n 280\n 25\n \n 128\n 20\n \n \n detail\n contentsbarcode\n \n \n \n \n 5\n 30\n 280\n 25\n \n 128\n 20\n \n \n detail\n barcode\n \n \n \n \n 670\n 30\n 280\n 25\n \n 128\n 20\n \n \n detail\n issuebarcode\n \n \n \n \n 170\n 5\n 275\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n description\n \n \n \n 5\n 65\n 985\n 65\n 0\n \n \n
\n
\n \N 0 2013-07-26 16:17:54.38447 94 MaterialUsageVarianceByBOMItem \N \n\n Material Usage Variance By BOM Item\n MaterialUsageVarianceByBOMItem\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT parent.item_number AS parent_number,\n parent.item_descrip1 AS parent_descrip1,\n parent.item_descrip2 AS parent_descrip2,\n puom.uom_name AS parent_invuom,\n child.item_number AS comp_number,\n child.item_descrip1 AS comp_descrip1,\n child.item_descrip2 AS comp_descrip2,\n cuom.uom_name AS comp_invuom,\n bomitem_seqnumber as comp_seqnumber,\n <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse\n FROM item as parent, item as child, uom AS puom, uom AS cuom, bomitem\n WHERE ((parent.item_id=<? value("item_id") ?>)\n AND (parent.item_inv_uom_id=puom.uom_id)\n AND (bomitem_item_id=child.item_id)\n AND (child.item_inv_uom_id=cuom.uom_id)\n AND (bomitem_id=<? value("bomitem_id") ?>) );\n\n \n \n detail\n SELECT formatDate(posted) AS f_posted,\n formatQty(ordered) AS f_ordered,\n formatQty(received) AS f_produced,\n formatQty(projreq) AS f_projreq,\n formatQtyPer(projqtyper) AS f_projqtyper,\n formatQty(actiss) AS f_actiss, \n formatQtyPer(actqtyper) AS f_actqtyper,\n formatQtyPer(actqtyper - projqtyper) AS f_qtypervar,\n CASE WHEN (actqtyper=projqtyper) THEN formatPrcnt(0)\n WHEN (projqtyper=0) THEN formatPrcnt(actqtyper)\n ELSE formatPrcnt((1 - (actqtyper / projqtyper)) * -1)\n END AS f_percent\n FROM ( SELECT womatlvar_posted AS posted,\n womatlvar_qtyord AS ordered,\n womatlvar_qtyrcv AS received,\n (womatlvar_qtyrcv * (womatlvar_qtyper * (1 + womatlvar_scrap))) AS projreq,\n womatlvar_qtyper AS projqtyper,\n (womatlvar_qtyiss) AS actiss, (womatlvar_qtyiss / (womatlvar_qtyrcv * (1 + womatlvar_scrap))) AS actqtyper \n FROM womatlvar, itemsite AS component,\n itemsite AS parent\n WHERE ((womatlvar_parent_itemsite_id=parent.itemsite_id)\n AND (womatlvar_component_itemsite_id=component.itemsite_id)\n AND (womatlvar_bomitem_id=<? value("bomitem_id") ?>)\n AND (womatlvar_posted BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n<? if exists("warehous_id") ?>\n AND (component.itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n )\n ) AS data\nORDER BY posted;\n \n \n 237\n \n \n 80\n 140\n 50\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n comp_seqnumber\n \n \n \n 5\n 227\n 745\n 227\n 2\n \n \n \n 140\n 180\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n 360\n 60\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n parent_invuom\n \n \n \n \n \n \n \n \n 140\n 60\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n parent_number\n \n \n \n \n 360\n 120\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n comp_invuom\n \n \n \n \n \n \n \n 140\n 80\n 350\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n parent_descrip1\n \n \n \n \n \n 140\n 120\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n comp_number\n \n \n \n \n 140\n 160\n 350\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n comp_descrip2\n \n \n \n \n \n \n \n \n \n \n 140\n 140\n 350\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n comp_descrip1\n \n \n \n \n 140\n 100\n 350\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n parent_descrip2\n \n \n \n \n \n \n 7\n \n \n 22\n \n \n \n \n \n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 250\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_projreq\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_percent\n \n \n \n \n 165\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_produced\n \n \n \n \n 85\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ordered\n \n \n \n \n 415\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_actiss\n \n \n \n \n 5\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_posted\n \n \n \n \n 330\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_projqtyper\n \n \n \n \n 493\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_actqtyper\n \n \n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtypervar\n \n \n \n
\n \n 17\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 96 MaterialUsageVarianceByComponentItem \N \n\n Material Usage Variance By Component Item\n MaterialUsageVarianceByComponentItem\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n item_descrip1,\n item_descrip2,\n uom_name,\n <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate\n FROM item JOIN uom ON (item_inv_uom_id=uom_id)\n WHERE (item_id=<? value("component_item_id") ?>);\n\n \n \n detail\n workOrderVariance\n material\n \n \n 234\n \n \n \n \n \n \n 120\n 120\n 350\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n \n \n \n 590\n 120\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n 5\n 228\n 745\n 228\n 2\n \n \n \n \n \n 120\n 80\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n 340\n 80\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n uom_name\n \n \n \n \n \n \n 120\n 100\n 350\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n \n \n 120\n 145\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n 590\n 100\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n 6\n \n \n 36\n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 51\n \n \n 580\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_actqtyper\n \n \n \n \n 85\n 15\n 400\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n parentdescrip\n \n \n \n \n 5\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_posted\n \n \n \n \n 494\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_projqtyper\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 494\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_projreq\n \n \n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_actiss\n \n \n \n \n 315\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ordered\n \n \n \n \n 665\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtypervarpercent\n \n \n \n \n 400\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_received\n \n \n \n \n 85\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n parentitemnumber\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtypervar\n \n \n \n
\n \n 16\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 425 MetaSQLMasterList \N \n\n List of MetaSQL statements\n MetaSQLMasterList\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 100\n 100\n 100\n 100\n \n Detail\n metasqls\n detail\n \n \n 100\n \n \n
\n Detail\n \n \n Detail\n \n 27.4992\n \n \n 100\n 0\n 100\n 12.5\n \n \n Arial\n 9\n bold\n \n \n \n \n Detail\n metasql_group\n \n \n \n \n 200\n 0\n 150\n 12.5\n \n \n Arial\n 9\n bold\n \n \n \n \n Detail\n metasql_name\n \n \n \n \n 350\n 0\n 300\n 14\n \n 12\n \n Arial\n 9\n normal\n \n \n \n \n Detail\n metasql_notes_qttooltiprole\n \n \n \n \n 0\n 0\n 100\n 12.5\n \n \n Arial\n 9\n bold\n \n \n \n \n Detail\n pkgname\n \n \n \n
\n \n 65.9806\n \n \n \n 330\n 22.5008\n 100\n 25\n \n \n Arial\n 10\n normal\n \n \n \n \n Context Query\n page_count\n \n \n \n \n 200\n 22.5008\n 100\n 25\n \n \n Arial\n 10\n normal\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 362 OpportunityList \N \n\n Opportunity List\n OpportunityList\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n opportunities\n detail\n \n \n queryParams\n SELECT\n formatDate(<? value("startDate") ?>,'Earliest') AS f_startDate,\n formatDate(<? value("endDate") ?>,'Latest') AS f_endDate,\n <? if exists("username") ?>\n <? value("username") ?> AS usr_username\n <? elseif exists("usr_pattern") ?>\n <? value("usr_pattern") ?> AS usr_username\n <? else ?>\n text('All') AS usr_username\n <? endif ?>\n;\n \n \n 163\n \n \n \n \n \n \n \n 5.66667\n 158.333\n 745.667\n 158.333\n 2\n \n \n \n \n \n \n \n \n \n 10\n 43\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 41\n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n ByUser\n usr\n \n \n \n detail\n \n 36\n \n \n 220\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n opsource_name\n \n \n \n \n 395\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_amount\n \n \n \n \n 50\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n crmacct_number\n \n \n \n \n 480\n 0\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_currency\n \n \n \n \n 10\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ophead_name\n \n \n \n \n 305\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ophead_probability_prcnt\n \n \n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_actualdate\n \n \n \n \n 220\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n opstage_name\n \n \n \n \n 540\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_targetdate\n \n \n \n \n 135\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ophead_owner_username\n \n \n \n \n 305\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n optype_name\n \n \n \n
\n \n 18\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 146 POLineItemsByVendor \N \n\n P/O Line Items By Vendor\n POLineItemsByVendor\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT\n<? if exists("vend_id") ?>\n (SELECT ('Vendor = ' || vend_name) FROM vendinfo WHERE vend_id=<? value("vend_id") ?>)\n<? elseif exists("vendtype_id") ?>\n (SELECT ('Vendor Type = ' || vendtype_code) FROM vendtype WHERE vendtype_id=<? value("vendtype_id") ?>)\n<? elseif exists("vendtype_pattern") ?>\n ('Vendor Type pattern = ' || <? value("vendtype_pattern") ?>)\n<? else ?>\n 'All Vendors'\n<? endif ?>\n AS selection,\n <? if exists("warehous_id") ?>\n ( SELECT warehous_code FROM whsinfo WHERE warehous_id=<? value("warehous_id") ?>)\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("agentUsername") ?>\n TEXT(<? value("agentUsername" ?>)\n <? else ?>\n TEXT('All Agents')\n <? endif ?>\n AS agentUsername,\n <? if exists("openItems") ?>\n text('Open Items')\n <? elseif exists("closedItems") ?>\n text('Closed Items')\n <? else ?>\n text('All Items')\n <? endif ?>\n AS f_whichitems\n;\n \n \n detail\n poItems\n detail\n \n \n 224\n \n \n \n \n 535\n 75\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n agentUsername\n \n \n \n \n \n 475\n 130\n 165\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_whichitems\n \n \n \n \n \n \n \n \n \n \n 535\n 95\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n 150\n 75\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n selection\n \n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n 9\n \n \n 24\n \n \n \n \n \n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n
\n detail\n \n \n detail\n \n 19\n \n \n 440\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemuom\n \n \n \n \n 225\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemnumber\n \n \n \n \n 45\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n pohead_number\n \n \n \n \n 135\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n poitem_duedate\n \n \n \n \n 5\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 493\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n poitem_qty_ordered\n \n qty\n \n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n poitem_qty_received\n \n qty\n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n poitem_qty_returned\n \n qty\n \n \n
\n \n 19\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 103\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 450 TimePhasedSalesHistory \N \n\n Time Phased Sales History\n TimePhasedSalesHistory\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("byCust") ?>\n text('Customer')\n <? elseif exists("byProdcat") ?>\n text('Product Category')\n <? else ?>\n text('Item')\n <? endif ?>\n AS groupby,\n <? if exists("byCust") ?>\n text('Name')\n <? else ?>\n text('Description')\n <? endif ?>\n AS groupbyDescrip,\n <? if exists("salesDollars") ?>\n text('')\n <? else ?>\n text('UOM')\n <? endif ?>\n AS lbl_uom,\n <? if exists("inventoryUnits") ?>\n text('Qty.')\n <? elseif exists("capacityUnits") ?>\n text('Capacity')\n <? elseif exists("altCapacityUnits") ?>\n text('Alt. Capacity')\n <? elseif exists("salesDollars") ?>\n text('Sales')\n <? else ?>\n text('ERROR')\n <? endif ?>\n AS lbl_unittype; \n \n \n detail\n SELECT *, \n coalesce(unit,0) AS unit, \n<? if exists("salesDollars") ?>\n formatExtPrice(coalesce(unit,0)) AS f_unit\n<? else ?>\n formatQty(coalesce(unit,0)) AS f_unit\n<? endif ?>\nFROM\n-- Outer Table Query\n(SELECT DISTINCT\n calitem_id,\n findPeriodStart(calitem_id) AS pstart,\n findPeriodEnd(calitem_id) AS pend,\n (formatDate(findPeriodStart(calitem_id)) || '-' || formatDate(findPeriodEnd(calitem_id))) AS period,\n<? if exists("byCust") ?>\n cust_id, cust_number AS f_number, cust_name AS f_description\n<? elseif exists("byProdcat") ?>\n prodcat_id, prodcat_code AS f_number, prodcat_descrip AS f_description\n<? elseif exists("byItem") ?>\n item_id, item_number AS f_number, item_descrip1 AS f_description\n<? endif ?>\n , warehous_id, warehous_code\n<? if exists("salesDollars") ?>\n , <? value("baseCurrAbbr") ?>::text AS f_uom\n<? else ?>\n <? if exists("inventoryUnits") ?>\n , uom_name AS f_uom\n <? elseif exists("capacityUnits") ?>\n , itemcapuom(item_id) AS f_uom\n <? elseif exists("altCapacityUnits") ?>\n , itemaltcapuom(item_id) AS f_uom\n <? endif ?>\n<? endif ?>\nFROM cohist JOIN itemsite ON (itemsite_id=cohist_itemsite_id)\n JOIN item ON (item_id=itemsite_item_id)\n<? if exists("inventoryUnits") ?>\n JOIN uom ON (item_inv_uom_id=uom_id)\n<? endif ?>\n JOIN site() ON (itemsite_warehous_id=warehous_id)\n<? if reExists("[cC]ust") ?>\n JOIN custinfo ON (cohist_cust_id=cust_id)\n<? endif ?> \n<? if reExists("[pP]rodcat") ?>\n JOIN prodcat ON (item_prodcat_id=prodcat_id)\n<? endif ?>\n<? if reExists("custgrp") ?>\n JOIN custgrpitem ON (custgrpitem_cust_id=cohist_cust_id)\n JOIN custgrp ON (custgrpitem_custgrp_id=custgrp_id)\n<? endif ?>\n , ( SELECT rcalitem_id AS calitem_id,\n findPeriodStart(rcalitem_id) AS calitem_start,\n findPeriodEnd(rcalitem_id) AS calitem_end\n FROM rcalitem\n WHERE (rcalitem_id IN (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n )\n )\n UNION\n SELECT acalitem_id AS calitem_id,\n findPeriodStart(acalitem_id) AS calitem_start,\n findPeriodEnd(acalitem_id) AS calitem_end\n FROM acalitem\n WHERE (acalitem_id IN (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n )\n )\n ) AS calitem\nWHERE ((cohist_invcdate BETWEEN\n<? foreach("period_id_list") ?>\n <? if isfirst("period_id_list") ?>\n findPeriodStart(<? value("period_id_list") ?>)\n <? endif ?>\n <? if isLast("period_id_list") ?>\n AND findPeriodEnd(<? value("period_id_list") ?>)\n <? endif ?>\n<? endforeach ?>\n)\n<? if exists("item_id") ?> \n AND (item_id=<? value("item_id") ?>)\n<? endif ?>\n<? if exists("cust_id") ?> \n AND (cust_id=<? value("cust_id") ?>)\n<? endif ?>\n<? if exists("custtype_id") ?> \n AND (cust_custtype_id=<? value("custtype_id") ?>)\n<? endif ?>\n<? if exists("custtype_pattern") ?>\n AND (cust_custtype_id IN (SELECT custtype_id \n FROM custtype \n WHERE (custtype_code ~ <? value("custtype_pattern") ?>)))\n<? endif ?>\n<? if exists("custgrp_id") ?> \n AND (custgrpitem_custgrp_id=<? value("custgrp_id") ?>)\n<? endif ?>\n<? if exists("custgrp_pattern") ?>\n AND (cust_custgrp_name ~ <? value("custgrp_pattern") ?>)))\n<? endif ?>\n<? if exists("prodcat_id") ?> \n AND (item_prodcat_id=<? value("prodcat_id") ?>) \n<? endif ?>\n<? if exists("prodcat_pattern") ?>\n AND (item_prodcat_id IN (SELECT prodcat_id \n FROM prodcat \n WHERE (prodcat_code ~ <? value("prodcat_pattern") ?>)))\n<? endif ?>\n<? if exists("warehous_id") ?> \n AND(itemsite_warehous_id=<? value("warehous_id") ?>) \n<? endif ?>\n )\nORDER BY pstart, f_number, f_description, f_uom, warehous_code) list\nLEFT OUTER JOIN\n-- Sales calcuations\n-- Loop through each period bucket to find bookings for period\n(<? foreach("period_id_list") ?>\n SELECT \n <? value("period_id_list") ?> AS calitem_id,\n warehous_id,\n<? if exists("byCust") ?>\n cust_id\n<? elseif exists("byProdcat") ?>\n prodcat_id \n<? elseif exists("byItem") ?>\n item_id\n<? endif ?>\n<? if exists("salesDollars") ?>\n , sum(round(cohist_qtyshipped * currtobase(cohist_curr_id, cohist_unitprice, cohist_invcdate), 2)) AS unit\n , <? value("baseCurrAbbr") ?>::text AS f_uom\n<? else ?>\n , sum(cohist_qtyshipped)\n <? if exists("capacityUnits") ?>\n * itemcapinvrat(item_id)\n <? elseif exists("altCapacityUnits") ?>\n * itemaltcapinvrat(item_id)\n <? endif ?>\n AS unit\n <? if exists("inventoryUnits") ?>\n , uom_name AS f_uom\n <? elseif exists("capacityUnits") ?>\n , itemcapuom(item_id) AS f_uom\n <? elseif exists("altCapacityUnits") ?>\n , itemaltcapuom(item_id) AS f_uom\n <? endif ?>\n<? endif ?>\nFROM cohist JOIN itemsite ON (itemsite_id=cohist_itemsite_id)\n JOIN item ON (item_id=itemsite_item_id)\n<? if exists("inventoryUnits") ?>\n JOIN uom ON (item_inv_uom_id=uom_id)\n<? endif ?>\n JOIN site() ON (itemsite_warehous_id=warehous_id)\n<? if reExists("[cC]ust") ?>\n JOIN custinfo ON (cohist_cust_id=cust_id)\n<? endif ?> \n<? if reExists("[pP]rodcat") ?>\n JOIN prodcat ON (item_prodcat_id=prodcat_id)\n<? endif ?>\n<? if reExists("custgrp") ?>\n JOIN custgrpitem ON (custgrpitem_cust_id=cohist_cust_id)\n JOIN custgrp ON (custgrpitem_custgrp_id=custgrp_id)\n<? endif ?>\n WHERE ((cohist_invcdate BETWEEN findPeriodStart(<? value("period_id_list") ?>) AND findPeriodEnd(<? value("period_id_list") ?>))\n<? if exists("item_id") ?> \n AND (item_id=<? value("item_id") ?>)\n<? endif ?>\n<? if exists("cust_id") ?> \n AND (cust_id=<? value("cust_id") ?>)\n<? endif ?>\n<? if exists("custtype_id") ?> \n AND (cust_custtype_id=<? value("custtype_id") ?>)\n<? endif ?>\n<? if exists("custtype_pattern") ?>\n AND (cust_custtype_id IN (SELECT custtype_id \n FROM custtype \n WHERE (custtype_code ~ <? value("custtype_pattern") ?>)))\n<? endif ?>\n<? if exists("custgrp_id") ?> \n AND (custgrpitem_custgrp_id=<? value("custgrp_id") ?>)\n<? endif ?>\n<? if exists("custgrp_pattern") ?>\n AND (cust_custgrp_name ~ <? value("custgrp_pattern") ?>)))\n<? endif ?>\n<? if exists("prodcat_id") ?> \n AND (item_prodcat_id=<? value("prodcat_id") ?>) \n<? endif ?>\n<? if exists("prodcat_pattern") ?>\n AND (item_prodcat_id IN (SELECT prodcat_id \n FROM prodcat \n WHERE (prodcat_code ~ <? value("prodcat_pattern") ?>)))\n<? endif ?>\n<? if exists("warehous_id") ?> \n AND(itemsite_warehous_id=<? value("warehous_id") ?>) \n<? endif ?>\n )\nGROUP BY\n<? if exists("byCust") ?>\n cust_id, \n <? if exists("capacityUnits") ?>\n item_id,\n <? elseif exists("altCapacityUnits") ?>\n item_id,\n <? endif ?>\n<? elseif exists("byProdcat") ?>\n prodcat_id,\n <? if exists("capacityUnits") ?>\n item_id,\n <? elseif exists("altCapacityUnits") ?>\n item_id,\n <? endif ?>\n<? elseif exists("byItem") ?>\n item_id,\n<? endif ?>\n f_uom, warehous_id\n <? if isLast("period_id_list") ?>\n <? else ?>\nUNION\n <? endif ?>\n<? endforeach ?> \n) sales ON\n<? if exists("byCust") ?>\n (list.cust_id=sales.cust_id)\n<? elseif exists("byProdcat") ?>\n (list.prodcat_id=sales.prodcat_id)\n<? elseif exists("byItem") ?>\n (list.item_id=sales.item_id)\n<? endif ?>\n AND (list.calitem_id=sales.calitem_id)\n AND (list.warehous_id=sales.warehous_id)\n AND (list.f_uom=sales.f_uom)\n \n \n 221\n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n 660\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_unittype\n \n \n \n \n 530\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_uom\n \n \n \n \n \n 220\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n groupby\n \n \n \n \n 330\n 200\n 200\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n groupbyDescrip\n \n \n \n \n 10\n 33\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 21\n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n 530\n -1\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_uom\n \n \n \n \n 660\n -1\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_unittype\n \n \n \n \n 215\n -1\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n groupby\n \n \n \n \n 330\n -1\n 200\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n groupbyDescrip\n \n \n \n
\n detail\n \n detail\n pstart\n \n 6\n \n \n 10\n 5\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n period\n \n \n \n \n 31\n \n \n 660\n 5\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n unit\n \n extprice\n \n \n \n 640\n 0\n 745\n 0\n 0\n \n \n \n \n \n \n detail\n \n 16\n \n \n 660\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_unit\n \n \n \n \n 615\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 530\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_uom\n \n \n \n \n 220\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_number\n \n \n \n \n 330\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_description\n \n \n \n
\n \n 16\n \n \n \n 95\n -1\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 690\n -1\n 51\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 79 ListOpenSalesOrders \N \n\n List Open Sales Orders\n ListOpenSalesOrders\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse;\n\n \n \n detail\n SELECT DISTINCT cohead.*,\n COALESCE(cust_number, :error) AS cust_number,\n getSoSchedDate(cohead_id) AS scheddate,\n formatDate(cohead_orderdate) AS f_orderdate\nFROM cohead \n JOIN custinfo ON (cohead_cust_id=cust_id) \n <? if exists("selectedSites") ?> \n JOIN coitem ON (coitem_cohead_id=cohead_id) \n JOIN itemsite ON (coitem_itemsite_id=itemsite_id) \n JOIN site() ON (itemsite_warehous_id=warehous_id) \n <? else ?> \n LEFT OUTER JOIN coitem ON (coitem_cohead_id=cohead_id) \n LEFT OUTER JOIN itemsite ON (coitem_itemsite_id=itemsite_id) \n LEFT OUTER JOIN site() ON (itemsite_warehous_id=warehous_id) \n <? endif ?> \nWHERE((true) \n <? if exists("cust_id") ?>\n AND (cust_id=<? value("cust_id") ?> )\n <? endif ?>\n <? if not exists("showClosed") ?> \n AND ((coitem_status = 'O') OR (coitem_status IS NULL)) \n <? endif ?>\n <? if exists("warehous_id") ?>\n AND (warehous_id=<? value("warehous_id") ?>)\n <? endif ?>\n ) \nORDER BY cohead_number \n \n \n 173\n \n \n \n 4\n 168\n 744\n 168\n 2\n \n \n \n \n \n \n 10\n 43\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 95\n 0\n 325\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cohead_billtoname\n \n \n \n \n 425\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cohead_custponumber\n \n \n \n \n 580\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_orderdate\n \n \n \n \n 5\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cohead_number\n \n \n \n
\n \n 16\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 348 POsByDate \N \n\n P/Os By Date\n POsByDate\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?>\n (SELECT warehous_code FROM whsinfo WHERE warehous_id=<? value("warehous_id") ?>)\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("agentUsername") ?>\n TEXT(<? value("agentUsername" ?>)\n <? else ?>\n TEXT('All Agents')\n <? endif ?>\n AS agentUsername,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate\n\n \n \n detail\n purchaseOrders\n detail\n \n \n 221\n \n \n 550\n 95\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n 135\n 75\n 275\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n agentUsername\n \n \n \n \n \n 135\n 95\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n 550\n 75\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 18\n \n \n 5\n 2\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehousecode\n \n \n \n \n 325\n 2\n 230\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_name\n \n \n \n \n 650\n 2\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_duedate\n \n \n \n \n 80\n 2\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n pohead_number\n \n \n \n \n 200\n 2\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_status\n \n \n \n \n 565\n 2\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_orderdate\n \n \n \n
\n \n 18\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 103\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 349 POsByVendor \N \n\n P/Os By Vendor\n POsByVendor\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?>\n (SELECT warehous_code FROM whsinfo WHERE warehous_id=<? value("warehous_id") ?>)\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n<? if exists("vend_id") ?>\n (SELECT ('Vendor = ' || vend_name) FROM vendinfo WHERE vend_id=<? value("vend_id") ?>)\n<? elseif exists("vendtype_id") ?>\n (SELECT ('Vendor Type = ' || vendtype_code) FROM vendtype WHERE vendtype_id=<? value("vendtype_id") ?>)\n<? elseif exists("vendtype_pattern") ?>\n ('Vendor Type pattern = ' || <? value("vendtype_pattern") ?>)\n<? else ?>\n 'All Vendors'\n<? endif ?>\n AS selection,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("byReceiptDate") ?>\n TEXT('By Receipt Date')\n <? elseif exists("byDueDate") ?>\n TEXT('By Due Date')\n <? else ?>\n TEXT('By Order Date')\n <? endif ?>\n AS f_byDate,\n <? if exists("descrip_pattern") ?>\n TEXT('Where Item Description contains ' || <? value("descrip_pattern") ?>)\n <? else ?>\n TEXT('')\n <? endif ?>\n AS f_descrip\n\n \n \n detail\n purchaseOrders\n detail\n \n \n 221\n \n \n 135\n 135\n 540\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_descrip\n \n \n \n \n 550\n 115\n 180\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_byDate\n \n \n \n \n \n \n 135\n 95\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n 135\n 75\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n selection\n \n \n \n \n \n 550\n 95\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n 550\n 75\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n 6\n \n \n 21\n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 18\n \n \n 650\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_orderdate\n \n \n \n \n 5\n 0\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehousecode\n \n \n \n \n 200\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_status\n \n \n \n \n 80\n 0\n 110\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n pohead_number\n \n \n \n \n 330\n 0\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_number\n \n \n \n
\n \n 18\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 103\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 294 OrderActivityByProject \N \n\n Order Activity By Project\n OrderActivityByProject\n Order Activity Report\n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT prj_name, prj_number\n FROM prj\n WHERE (prj_id=<? value("prj_id") ?>);\n \n \n detail\n -- Group: orderActivityByProject\n-- Name: detail\n-- Notes: \n\nSELECT *, \n formatQty(qty) AS f_qty,\n formatMoney(value) AS f_value,\n 'curr' AS qty_xtnumericrole,\n 'curr' AS value_xtnumericrole\nFROM (\n<? if exists("showSo") ?>\n----- QUOTES -----\nSELECT quhead_id AS id, \n 15 AS type,\n quhead_number::text AS subtype,\n 1 AS section,\n <? value("quotes") ?> AS section_qtdisplayrole,\n quhead_number::text AS name,\n CASE WHEN (quhead_status = 'C') THEN \n <? value("converted") ?>\n WHEN (quhead_status = 'X') THEN\n <? value("canceled") ?>\n WHEN (COALESCE(quhead_expire, current_date + 1) > current_date) THEN\n <? value("open") ?>\n ELSE\n <? value("expired") ?>\n END AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n NULL AS value,\n 0.0 AS ordertotal,\n 1 AS xtindentrole\n FROM quhead\n JOIN quitem ON (quitem_quhead_id = quhead_id)\n WHERE (quhead_prj_id = <? value("prj_id") ?>)\nGROUP BY quhead_id, quhead_number, quhead_status, quhead_expire, quhead_freight, quhead_misc\n\nUNION ALL\n\nSELECT quitem_id AS id, \n 17 AS type,\n quhead_number::text AS subtype,\n 1 AS section,\n <? value("quotes") ?> AS section_qtdisplayrole,\n quitem_linenumber::text AS name, \n CASE WHEN (quhead_status = 'C') THEN \n <? value("converted") ?>\n WHEN (quhead_status = 'X') THEN\n <? value("canceled") ?>\n WHEN (COALESCE(quhead_expire, current_date + 1) > current_date) THEN\n <? value("open") ?>\n ELSE\n <? value("Expired") ?>\n END AS status,\n item_number AS item,\n item_descrip1 || ' ' || item_descrip2 AS descrip,\n quitem_qtyord,\n uom_name AS uom,\n (quitem_qtyord * quitem_qty_invuomratio) * (quitem_price / quitem_price_invuomratio) AS value,\n 0.0 AS ordertotal,\n 2 AS xtindentrole\n FROM quhead\n JOIN quitem ON (quitem_quhead_id = quhead_id)\n JOIN uom ON (quitem_qty_uom_id = uom_id)\n JOIN itemsite ON (quitem_itemsite_id = itemsite_id)\n JOIN item ON (itemsite_item_id = item_id)\n WHERE (quhead_prj_id = <? value("prj_id") ?>)\n\nUNION ALL\n\nSELECT quhead_id AS id, \n 18 AS type,\n quhead_number::text AS subtype,\n 1 AS section,\n <? value("quotes") ?> AS section_qtdisplayrole,\n <? value("total") ?> AS name,\n NULL AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n SUM((quitem_qtyord * quitem_qty_invuomratio) * (quitem_price / quitem_price_invuomratio)) AS value,\n SUM((quitem_qtyord * quitem_qty_invuomratio) * (quitem_price / quitem_price_invuomratio)) AS ordertotal,\n 1 AS xtindentrole\n FROM quhead\n JOIN quitem ON (quitem_quhead_id = quhead_id)\n WHERE (quhead_prj_id = <? value("prj_id") ?>)\nGROUP BY quhead_id, quhead_number\n\nUNION ALL\n\n------ SALES ORDERS ------\nSELECT cohead_id AS id, \n 25 AS type,\n cohead_number::text AS subtype,\n 2 AS section,\n <? value("sos") ?> AS section_qtdisplayrole,\n cohead_number::text AS name,\n COALESCE((SELECT \n CASE WHEN (coitem_status = 'O') THEN\n <? value("open") ?>\n WHEN (coitem_status = 'C') THEN\n <? value("closed" ?>\n ELSE\n <? value("canceled") ?>\n END\n FROM \n (SELECT coitem_status,\n CASE \n WHEN (coitem_status = 'O') THEN 1\n WHEN (coitem_status = 'C') then 2\n ELSE 3\n END AS type\n FROM coitem\n WHERE (coitem_cohead_id=cohead_id)\n ORDER BY type\n LIMIT 1) AS sts) ,'O')\n AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n NULL AS value,\n 0.0 AS ordertotal,\n 1 AS xtindentrole\n FROM cohead\n JOIN coitem ON (coitem_cohead_id = cohead_id)\n WHERE (cohead_prj_id = <? value("prj_id") ?>)\nGROUP BY cohead_id, cohead_number\n\nUNION ALL\n\nSELECT coitem_id AS id, \n 27 AS type,\n cohead_number::text AS subtype,\n 2 AS section,\n <? value("sos") ?> AS section_qtdisplayrole,\n coitem_linenumber::text AS name, \n CASE WHEN (coitem_status = 'O') THEN\n <? value("open") ?>\n WHEN (coitem_status = 'C') THEN\n <? value("closed") ?>\n WHEN (coitem_status = 'X') THEN\n <? value("canceled") ?>\n END AS status,\n item_number AS item,\n item_descrip1 || ' ' || item_descrip2 AS descrip,\n coitem_qtyord,\n uom_name AS uom,\n (coitem_qtyord * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio) AS value,\n 0.0 AS ordertotal,\n 2 AS xtindentrole\n FROM cohead\n JOIN coitem ON (coitem_cohead_id = cohead_id)\n JOIN uom ON (coitem_qty_uom_id = uom_id)\n JOIN itemsite ON (coitem_itemsite_id = itemsite_id)\n JOIN item ON (itemsite_item_id = item_id)\n WHERE (cohead_prj_id = <? value("prj_id") ?>)\n\nUNION ALL\n\nSELECT cohead_id AS id, \n 28 AS type,\n cohead_number::text AS subtype,\n 2 AS section,\n <? value("sos") ?> AS section_qtdisplayrole,\n <? value("total") ?> AS name,\n NULL AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n SUM((coitem_qtyord * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio)) AS value,\n SUM((coitem_qtyord * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio)) AS ordertotal,\n 1 AS xtindentrole\n FROM cohead\n JOIN coitem ON (coitem_cohead_id = cohead_id)\n WHERE (cohead_prj_id = <? value("prj_id") ?>)\nGROUP BY cohead_id, cohead_number\n\nUNION ALL\n\n------ INVOICES -------\nSELECT invchead_id AS id,\n 35 AS type,\n invchead_invcnumber::text AS subtype,\n 3 AS section,\n <? value("invoices") ?> AS section_qtdisplayrole,\n invchead_invcnumber::text AS name,\n CASE WHEN (invchead_posted) THEN\n <? value("posted") ?>\n ELSE <? value("unposted") ?>\n END AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n NULL AS value,\n 0.0 AS ordertotal,\n 1 AS xtindentrole\n FROM invchead\n JOIN invcitem ON (invcitem_invchead_id = invchead_id)\n WHERE (invchead_prj_id = <? value("prj_id") ?>)\nGROUP BY invchead_id, invchead_invcnumber, invchead_freight, invchead_misc_amount, invchead_posted\n\nUNION ALL\n\nSELECT invcitem_id AS id, \n 37 AS type,\n invchead_invcnumber::text AS subtype,\n 3 AS section,\n <? value("invoices") ?> AS section_qtdisplayrole,\n invcitem_linenumber::text AS name, \n CASE WHEN (invchead_posted) THEN\n <? value("posted") ?>\n ELSE <? value("unposted") ?>\n END AS status,\n COALESCE(item_number,invcitem_number) AS item,\n COALESCE(item_descrip1 || ' ' || item_descrip2,invcitem_descrip) AS descrip,\n invcitem_billed AS qty,\n uom_name AS uom,\n (invcitem_billed * invcitem_qty_invuomratio) * (invcitem_price / invcitem_price_invuomratio) AS value,\n 0.0 AS ordertotal,\n 2 AS xtindentrole\n FROM invchead\n JOIN invcitem ON (invcitem_invchead_id = invchead_id)\n LEFT OUTER JOIN item ON (invcitem_item_id = item_id)\n LEFT OUTER JOIN uom ON (invcitem_qty_uom_id = uom_id)\n WHERE (invchead_prj_id = <? value("prj_id") ?>)\n\nUNION ALL\n\nSELECT invchead_id AS id, \n 38 AS type,\n invchead_invcnumber::text AS subtype,\n 3 AS section,\n <? value("invoices") ?> AS section_qtdisplayrole,\n <? value("total") ?> AS name,\n NULL AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n SUM((invcitem_billed * invcitem_qty_invuomratio) * (invcitem_price / invcitem_price_invuomratio)) AS value,\n SUM((invcitem_billed * invcitem_qty_invuomratio) * (invcitem_price / invcitem_price_invuomratio)) AS ordertotal,\n 1 AS xtindentrole\n FROM invchead\n JOIN invcitem ON (invcitem_invchead_id = invchead_id)\n WHERE (invchead_prj_id = <? value("prj_id") ?>)\nGROUP BY invchead_id, invchead_invcnumber\n\n<? endif ?>\n\n\n<? if exists("showWo") ?>\n\n<? if exists("showSo") ?>\n\nUNION ALL\n\n<? endif ?>\n\n------ WORK ORDERS -------\nSELECT wo_id AS id, \n 45 AS type,\n formatWoNumber(wo_id) AS subtype,\n 4 AS section,\n <? value("wos") ?> AS section_qtdisplayrole,\n formatWoNumber(wo_id) AS name,\n CASE WHEN (wo_status = 'O') THEN\n <? value("open") ?>\n WHEN (wo_status = 'E') THEN\n <? value("exploded") ?>\n WHEN (wo_status = 'R') THEN\n <? value("released") ?>\n WHEN (wo_status = 'I') THEN\n <? value("inprocess") ?>\n WHEN (wo_status = 'C') THEN\n <? value("closed") ?>\n END AS status,\n item_number AS item,\n item_descrip1 || ' ' || item_descrip2 AS descrip,\n wo_qtyord AS qty,\n uom_name AS uom,\n wo_postedvalue AS value,\n wo_postedvalue AS ordertotal,\n 1 AS xtindentrole\n FROM wo\n JOIN itemsite ON (itemsite_id=wo_itemsite_id)\n JOIN item ON (itemsite_item_id=item_id)\n JOIN uom ON (item_inv_uom_id=uom_id)\n WHERE (wo_prj_id = <? value("prj_id") ?>)\n\n<? endif ?>\n\n\n<? if exists("showPo") ?>\n<? if exists("showSo") ?>\n UNION ALL\n<? elseif exists("showWo") ?>\n UNION ALL\n\n<? endif ?>\n------ PURCHASE REQUESTS ------\nSELECT pr_id AS id, \n 55 AS type,\n pr_number::text || '-' || pr_subnumber::text AS subtype,\n 5 AS section,\n <? value("prs") ?> AS section_qtdisplayrole,\n pr_number::text || '-' || pr_subnumber::text AS name,\n <? value("open") ?> AS status, \n item_number AS item,\n (item_descrip1 || ' ' || item_descrip2) AS descrip,\n pr_qtyreq AS qty,\n uom_name AS uom,\n stdcost(item_id) * pr_qtyreq AS value,\n stdcost(item_id) * pr_qtyreq AS ordertotal,\n 1 AS xtindentrole\n FROM pr\n JOIN itemsite ON (itemsite_id = pr_itemsite_id)\n JOIN item ON (itemsite_item_id = item_id)\n JOIN uom ON (item_inv_uom_id = uom_id)\n WHERE (pr_prj_id=<? value("prj_id") ?>)\n\nUNION ALL\n\n------ PURCHASE ORDERS ------\nSELECT pohead_id AS id,\n 65 AS type,\n pohead_number::text AS subtype,\n 6 AS section,\n <? value("pos") ?> AS section_qtdisplayrole,\n pohead_number::text AS name,\n CASE WHEN (pohead_status = 'U') THEN\n <? value("unreleased") ?>\n WHEN (pohead_status = 'O') THEN\n <? value("open") ?>\n WHEN (pohead_status = 'C') THEN\n <? value("closed") ?>\n END AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL AS uom,\n NULL AS value,\n 0.0 AS ordertotal,\n 1 AS xtindentrole\n FROM pohead\n JOIN poitem ON (poitem_pohead_id = pohead_id)\n WHERE (poitem_prj_id = <? value("prj_id") ?>)\nGROUP BY pohead_id, pohead_number, pohead_freight, pohead_status\n\nUNION ALL\n\nSELECT poitem_id AS id, \n 67 AS type,\n pohead_number::text AS subtype,\n 6 AS section,\n <? value("pos") ?> AS section_qtdisplayrole,\n poitem_linenumber::text AS name, \n CASE WHEN (poitem_status = 'U') THEN\n <? value("unreleased") ?>\n WHEN (poitem_status = 'O') THEN\n <? value("open") ?>\n WHEN (poitem_status = 'C') THEN\n <? value("closed") ?>\n END AS status,\n COALESCE(item_number,poitem_vend_item_number) AS item,\n COALESCE((item_descrip1 || ' ' || item_descrip2),poitem_vend_item_descrip) AS descrip,\n poitem_qty_ordered,\n poitem_vend_uom AS uom,\n (poitem_qty_ordered * poitem_unitprice) AS value,\n 0.0 AS ordertotal,\n 2 AS xtindentrole\n FROM pohead\n JOIN poitem ON (poitem_pohead_id = pohead_id)\n LEFT OUTER JOIN itemsite ON (poitem_itemsite_id=itemsite_id)\n LEFT OUTER JOIN item ON (itemsite_item_id = item_id)\n WHERE (poitem_prj_id = <? value("prj_id") ?>)\n\nUNION ALL\n\nSELECT pohead_id AS id, \n 68 AS type,\n pohead_number::text AS subtype,\n 6 AS section,\n <? value("pos") ?> AS section_qtdisplayrole,\n <? value("total") ?> AS name,\n NULL AS status,\n NULL::text AS item,\n NULL::text AS descrip,\n NULL AS qty,\n NULL::text AS uom,\n SUM(poitem_qty_ordered * poitem_unitprice) AS value,\n SUM(poitem_qty_ordered * poitem_unitprice) AS ordertotal,\n 1 AS xtindentrole\n FROM pohead\n JOIN poitem ON (poitem_pohead_id = pohead_id)\n WHERE (poitem_prj_id = <? value("prj_id") ?>)\nGROUP BY pohead_id, pohead_number\n\n<? endif ?>\n\n) data\nORDER BY section, subtype, type, id;\n \n \n 75\n \n \n \n 140\n 25\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n prj_number\n \n \n \n \n \n 140\n 45\n 509\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n prj_name\n \n \n \n \n
\n section\n \n type\n section\n \n 53\n \n \n 0\n 45\n 750\n 45\n 2\n \n \n \n \n 77\n 45\n 77\n 45\n 0\n \n \n \n \n \n 90\n 5\n 610\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n section_qtdisplayrole\n \n \n \n \n \n 33\n \n \n 305\n 5\n 750\n 5\n 0\n \n \n \n 610\n 10\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ordertotal\n \n money\n \n \n \n \n \n \n detail\n \n 18\n \n \n 305\n 0\n 135\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item\n \n \n \n \n 100\n 0\n 95\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n name\n \n \n \n \n 209\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n status\n \n \n \n \n 444\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qty\n \n \n \n \n 544\n 0\n 165\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_value\n \n \n \n
\n \n 41\n \n \n \n 700\n 15\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 0\n 5\n 750\n 5\n 2\n \n \n \n 75\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n Order Activity Report 0 2013-07-26 16:17:54.38447 149 POHistory \N \r\n\r\n P/O History\r\n POHistory\r\n \r\n \r\n \r\n select pohead_id, pohead_number from pohead order by pohead_number desc;\r\n \r\n Letter\r\n \r\n 50\r\n 50\r\n 50\r\n 50\r\n \r\n head\r\n SELECT pohead_number, \r\n vend_name \r\n FROM pohead, vendinfo \r\n WHERE ((pohead_id=<? value("pohead_id") ?>) \r\n AND (pohead_vend_id=vend_id));\r\n \r\n \r\n detail\r\n SELECT \r\npoitem_linenumber as f_number, \r\nitem_number as f_item, \r\nuom_name as f_uom1, \r\nformatDate(poitem_duedate) as f_duedate, \r\npoitem_vend_item_number as f_vend_item, \r\npoitem_vend_uom as f_uom2, \r\nformatQty(poitem_qty_ordered) as f_ordered, \r\nformatqty(poitem_qty_received) as f_received \r\nFROM poitem, itemsite, item, uom \r\nWHERE ((poitem_itemsite_id=itemsite_id) \r\nAND (itemsite_item_id=item_id) \r\nAND (item_inv_uom_id=uom_id) \r\nAND (poitem_pohead_id=<? value("pohead_id") ?>)) \r\n \r\nUNION \r\n \r\nSELECT \r\npoitem_linenumber as f_number, \r\npoitem_vend_item_number as f_item, \r\nexpcat_code as f_uom1, \r\nformatDate(poitem_duedate) as f_duedate, \r\npoitem_vend_item_descrip as f_vend_item, \r\nexpcat_descrip as f_uom2, \r\nformatQty(poitem_qty_ordered) as f_ordered, \r\nformatqty(poitem_qty_received) as f_received \r\nFROM poitem, expcat \r\nWHERE ((poitem_expcat_id = expcat_id) \r\nAND (poitem_pohead_id=<? value("pohead_id") ?>)) \r\n \r\nORDER BY f_number;\r\n \r\n \r\n 205\r\n \r\n 5\r\n 200\r\n 990\r\n 200\r\n 2\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 105\r\n 120\r\n 385\r\n 20\r\n \r\n \r\n Arial\r\n 10\r\n bold\r\n \r\n \r\n \r\n \r\n head\r\n vend_name\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 105\r\n 100\r\n 385\r\n 20\r\n \r\n \r\n Arial\r\n 10\r\n bold\r\n \r\n \r\n \r\n \r\n head\r\n pohead_number\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 8\r\n \r\n \r\n 42\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 5\r\n 37\r\n 990\r\n 37\r\n 2\r\n \r\n \r\n \r\n \r\n
\r\n detail\r\n \r\n \r\n detail\r\n \r\n 18\r\n \r\n \r\n 45\r\n 0\r\n 150\r\n 15\r\n \r\n \r\n Arial\r\n 8\r\n bold\r\n \r\n \r\n \r\n \r\n detail\r\n f_item\r\n \r\n \r\n \r\n \r\n 805\r\n 0\r\n 80\r\n 15\r\n \r\n \r\n Arial\r\n 8\r\n bold\r\n \r\n \r\n \r\n \r\n detail\r\n f_ordered\r\n \r\n \r\n \r\n \r\n 900\r\n 0\r\n 90\r\n 15\r\n \r\n \r\n Arial\r\n 8\r\n bold\r\n \r\n \r\n \r\n \r\n detail\r\n f_received\r\n \r\n \r\n \r\n \r\n 180\r\n 0\r\n 145\r\n 15\r\n \r\n \r\n Arial\r\n 8\r\n bold\r\n \r\n \r\n \r\n \r\n detail\r\n f_uom1\r\n \r\n \r\n \r\n \r\n 5\r\n 0\r\n 35\r\n 15\r\n \r\n \r\n Arial\r\n 8\r\n bold\r\n \r\n \r\n \r\n \r\n detail\r\n f_number\r\n \r\n \r\n \r\n \r\n 730\r\n 0\r\n 55\r\n 15\r\n \r\n \r\n Arial\r\n 8\r\n bold\r\n \r\n \r\n \r\n \r\n detail\r\n f_duedate\r\n \r\n \r\n \r\n \r\n 525\r\n 0\r\n 195\r\n 15\r\n \r\n 1\r\n \r\n Arial\r\n 8\r\n bold\r\n \r\n \r\n \r\n \r\n detail\r\n f_vend_item\r\n \r\n \r\n \r\n \r\n 325\r\n 0\r\n 190\r\n 15\r\n \r\n 1\r\n \r\n Arial\r\n 8\r\n bold\r\n \r\n \r\n \r\n \r\n detail\r\n f_uom2\r\n \r\n \r\n \r\n
\r\n \r\n 32\r\n \r\n \r\n \r\n 945\r\n 17\r\n 40\r\n 15\r\n \r\n \r\n Arial\r\n 8\r\n bold\r\n \r\n \r\n \r\n \r\n Context Query\r\n page_number\r\n \r\n \r\n \r\n \r\n 85\r\n 17\r\n 100\r\n 15\r\n \r\n \r\n Arial\r\n 8\r\n bold\r\n \r\n \r\n \r\n \r\n Context Query\r\n report_date\r\n \r\n \r\n \r\n \r\n
\r\n \N 0 2013-07-26 16:17:54.38447 147 POLineItemsByDate \N \n\n P/O Line Items By Date\n POLineItemsByDate\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?>\n (SELECT warehous_code FROM whsinfo WHERE warehous_id=<? value("warehous_id") ?>)\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("agentUsername") ?>\n TEXT(<? value("agentUsername" ?>)\n <? else ?>\n TEXT('All Agents')\n <? endif ?>\n AS agentUsername,\n <? if exists("openItems") ?>\n text('Open Items')\n <? elseif exists("closedItems") ?>\n text('Closed Items')\n <? else ?>\n text('All Items')\n <? endif ?>\n as f_whichitems,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate\n\n \n \n detail\n SELECT CASE WHEN (itemsite_id IS NULL) THEN ( SELECT warehous_code\n FROM whsinfo\n WHERE (pohead_warehous_id=warehous_id) )\n ELSE ( SELECT warehous_code\n FROM whsinfo\n WHERE (itemsite_warehous_id=warehous_id) )\n END AS warehousecode,\n pohead_number as f_ponumber,\n poitem_linenumber as f_linenumber,\n vend_name,\n formatDate(poitem_duedate) as f_duedate,\n COALESCE(item_number, (text('NonInv - ') || poitem_vend_item_number)) AS itemnumber,\n COALESCE(uom_name, poitem_vend_uom) AS itemuom,\n formatQty(poitem_qty_ordered) as f_ordered,\n formatQty(poitem_qty_received) as f_received,\n formatQty(poitem_qty_returned) as f_returned\n FROM pohead, vendinfo,\n poitem LEFT OUTER JOIN\n (itemsite JOIN item\n ON (itemsite_item_id=item_id) JOIN uom ON (item_inv_uom_id=uom_id))\n ON (poitem_itemsite_id=itemsite_id) \n WHERE ((poitem_pohead_id=pohead_id)\n AND (pohead_vend_id=vend_id)\n AND (poitem_duedate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n<? if exists("warehous_id") ?>\n AND ( ( (itemsite_id IS NULL) AND (pohead_warehous_id=<? value("warehous_id") ?>) ) OR\n ( (itemsite_id IS NOT NULL) AND (itemsite_warehous_id=<? value("warehous_id") ?>) ) )\n<? endif ?>\n<? if exists("agentUsername") ?>\n AND (pohead_agent_username=<? value("agentUsername") ?>)\n<? endif ?>\n<? if exists("openItems") ?>\n AND (poitem_status='O')\n<? elseif exists("closedItems") ?>\n AND (poitem_status='C')\n<? endif ?>\n)\nORDER BY poitem_duedate;\n \n \n 237\n \n \n 135\n 75\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n agentUsername\n \n \n \n \n \n \n 5\n 229\n 745\n 229\n 2\n \n \n \n \n \n \n \n \n \n \n \n 550\n 95\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n 475\n 130\n 165\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_whichitems\n \n \n \n \n \n \n 135\n 95\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n 550\n 75\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n 7\n \n \n 37\n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 37\n \n 5\n 30\n 745\n 30\n 0\n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_returned\n \n \n \n \n 525\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemuom\n \n \n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ordered\n \n \n \n \n 370\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemnumber\n \n \n \n \n 45\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ponumber\n \n \n \n \n 580\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_received\n \n \n \n \n 5\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehousecode\n \n \n \n \n 285\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_duedate\n \n \n \n \n 130\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_name\n \n \n \n \n 5\n 15\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_linenumber\n \n \n \n
\n \n 17\n \n \n \n 103\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 148 POLineItemsByItem \N \n\n P/O Line Items By Item\n POLineItemsByItem\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number, item_descrip1, item_descrip2, uom_name,\n <? if exists("warehous_id") ?>\n ( SELECT warehous_code FROM whsinfo WHERE warehous_id=<? value("warehous_id") ?>)\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("agentUsername") ?>\n TEXT(<? value("agentUsername" ?>)\n <? else ?>\n TEXT('All Agents')\n <? endif ?>\n AS agentUsername,\n <? if exists("openItems") ?>\n text('Open Items')\n <? elseif exists("closedItems") ?>\n text('Closed Items')\n <? else ?>\n text('All Items')\n <? endif ?>\n AS f_whichitems\n FROM item JOIN uom ON (item_inv_uom_id=uom_id)\n WHERE (item_id=<? value("item_id") ?>);\n\n \n \n detail\n SELECT warehous_code, pohead_number as f_ponumber, vend_name,\n formatDate(poitem_duedate) as f_duedate,\n poitem_vend_uom as uom_name, \n formatQty(poitem_qty_ordered) as f_ordered,\n formatQty(poitem_qty_received) as f_received,\n formatQty(poitem_qty_returned) as f_returned \n FROM pohead, poitem, vendinfo, itemsite, whsinfo\n WHERE ((poitem_pohead_id=pohead_id)\n AND (pohead_vend_id=vend_id)\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("agentUsername") ?>\n AND (pohead_agent_username=<? value("agentUsername") ?>)\n<? endif ?>\n<? if exists("openItems") ?>\n AND (poitem_status='O')\n<? elseif exists("closedItems") ?>\n AND (poitem_status='C')\n<? endif ?>\n AND (poitem_itemsite_id=itemsite_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_item_id=<? value("item_id") ?>)\n) \nORDER BY poitem_duedate;\n \n \n 221\n \n \n \n \n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n 325\n 75\n 80\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n uom_name\n \n \n \n \n \n 475\n 130\n 165\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_whichitems\n \n \n \n \n 110\n 112\n 250\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n 535\n 95\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n 110\n 75\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n 110\n 95\n 250\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n 535\n 75\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n agentUsername\n \n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_received\n \n \n \n \n 440\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n \n 5\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_returned\n \n \n \n \n 355\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_duedate\n \n \n \n \n 493\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ordered\n \n \n \n \n 135\n 0\n 215\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_name\n \n \n \n \n 45\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ponumber\n \n \n \n
\n \n 16\n \n \n 103\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 421 PackageMasterList \N \n\n Package Master List\n PackageMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT *, formatboolyn(packageIsEnabled(pkghead_name)) AS enabled\nFROM pkghead\nORDER BY pkghead_name, pkghead_version DESC;\n \n \n 76\n \n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n 6\n \n \n 21\n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 265\n 0\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n pkghead_descrip\n \n \n \n \n 10\n 0\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n pkghead_name\n \n \n \n \n 565\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n pkghead_version\n \n \n \n \n 665\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n enabled\n \n \n \n
\n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 173 PackingListBatchEditList \N \n\n Packing List Batch Edit List\n PackingListBatchEditList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT cohead_number AS order_number, pack_head_type,\n cohead_shipvia AS shipvia,\n formatShipmentNumber(pack_shiphead_id) AS shipment_number, \n cust_number AS number, cohead_billtoname AS name,\n CASE WHEN (cohead_holdtype='N') THEN <? value("none") ?>\n WHEN (cohead_holdtype='C') THEN <? value("credit") ?>\n WHEN (cohead_holdtype='S') THEN <? value("ship") ?>\n WHEN (cohead_holdtype='P') THEN <? value("pack") ?>\n WHEN (cohead_holdtype='R') THEN <? value("return") ?>\n ELSE <? value("other") ?>\n END AS f_holdtype,\n formatBoolYN(pack_printed) AS f_printed\nFROM pack, cohead, custinfo\nWHERE ((pack_head_id=cohead_id)\n AND (cohead_cust_id=cust_id)\n AND (pack_head_type='SO'))\n<? if exists("MultiWhs") ?>\n AND checkSOSitePrivs(cohead_id)\nUNION \nSELECT tohead_number AS order_number, pack_head_type,\n tohead_shipvia AS shipvia,\n formatShipmentNumber(pack_shiphead_id) AS shipment_number, \n tohead_destname AS number, tohead_destcntct_name AS name,\n '' AS f_holdtype,\n formatBoolYN(pack_printed) AS f_printed\nFROM pack, tohead \nWHERE ((pack_head_id=tohead_id)\n AND (pack_head_type='TO')) \n<? endif ?>\nORDER BY order_number;\n \n \n 75\n \n \n \n \n \n \n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n 5\n \n \n 31\n \n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 15\n \n \n 115\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shipment_number\n \n \n \n \n 675\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_printed\n \n \n \n \n 220\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n number\n \n \n \n \n 10\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n order_number\n \n \n \n \n 600\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_holdtype\n \n \n \n \n 320\n 0\n 160\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n name\n \n \n \n \n 490\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shipvia\n \n \n \n
\n \n 15\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 91 PendingWOMaterialAvailability \N \n\n Pending W/O Material Availability\n PendingWOMaterialAvailability\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number, item_descrip1, item_descrip2,\n <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse\n FROM item\nWHERE (item_id=<? value("item_id") ?>);\n \n \n detail\n pendingAvailability\n detail\n \n \n 234\n \n \n 140\n 140\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n 140\n 160\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n 5\n 229\n 745\n 229\n 2\n \n \n \n \n \n \n \n \n \n 140\n 100\n 198\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n \n 140\n 120\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 41\n \n \n 290\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n \n 405\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n pendalloc\n \n qty\n \n \n 6\n 32\n 745\n 32\n 0\n \n \n \n 110\n -1\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 575\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qoh\n \n qty\n \n \n \n 110\n 15\n 615\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip\n \n \n \n \n 490\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n totalalloc\n \n qty\n \n \n \n 660\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n totalavail\n \n qty\n \n \n \n 60\n -1\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n bomitem_seqnumber\n \n \n \n \n 15\n -1\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n bomdata_bomwork_level\n \n \n \n
\n \n 18\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 367 PickingListSOLocsNoClosedLines \N \n\n Picking List SO With Locations\n PickingListSOLocsNoClosedLines\n This report definition shows location / lot / serial information on an SO Pick List. If the item is not Location Controlled it shows the contents of its Location Comment in the corresponding Item Site record.\n \n \n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 25\n 25\n 25\n 25\n \n head\n SELECT cust_number,\n formatsobarcode(cohead_id) AS order_barcode,\n\n formataddr(cohead_billtoaddress1, cohead_billtoaddress2, cohead_billtoaddress3, (cohead_billtocity || ' ' || cohead_billtostate || ' ' || cohead_billtozipcode), cohead_billtocountry) AS billing_address, \n\n formataddr(cohead_shiptoaddress1, cohead_shiptoaddress2, cohead_shiptoaddress3, (cohead_shiptocity || ' ' || cohead_shiptostate || ' ' || cohead_shiptozipcode), cohead_shiptocountry) AS shipping_address, \n\n trim(cntct_first_name || ' ' || cntct_last_name) AS cust_contact,\n cohead_billtoname,\n cohead_billtoaddress1,\n cohead_billtoaddress2,\n cohead_billtoaddress3,\n (cohead_billtocity || ' ' || cohead_billtostate || ' ' || cohead_billtozipcode) AS billtocitystatezip,\n cntct_phone AS cust_phone,\n cohead_shiptoname,\n cohead_shiptoaddress1,\n cohead_shiptoaddress2,\n cohead_shiptoaddress3,\n (cohead_shiptocity || ' ' || cohead_shiptostate || ' ' || cohead_shiptozipcode) AS shiptocitystatezip,\n cohead_number,\n cohead_shipvia,\n cohead_shiptophone,\n cohead_custponumber,\n formatDate(cohead_orderdate) AS orderdate,\n cohead_shipcomments, \n terms_descrip\n FROM custinfo\n LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id)\n JOIN cohead ON (cohead_cust_id=cust_id)\n LEFT OUTER JOIN terms ON (cohead_terms_id=terms_id)\n WHERE (cohead_id=<? value("sohead_id") ?>)\n-- AND (cohead_id='9999')\n);\n \n \n scheddate\n SELECT formatDate(MIN(coitem_scheddate)) AS scheddate\n FROM coitem\n WHERE ((coitem_status <> 'X') AND (coitem_cohead_id=<? value("sohead_id") ?>));\n \n \n detail\n SELECT \n coitem_linenumber AS sortline, coitem_subnumber AS sortsubline,\n formatsolinenumber(coitem_id) AS linenumber,\n coitem_memo,\n item_number,\n formatitemsitebarcode(itemsite_id) AS item_barcode,\n CASE WHEN (formatLocationName(location_id) = 'N/A') THEN itemsite_location_comments || ' ' || '(comment)'\n ELSE formatLocationName(location_id)\n END AS location_name,\n itemsite_location_comments AS location_comment,\n formatlotserialnumber(itemloc_ls_id),\n formatDate(itemloc_expiration, 'N/A') AS expiration,\n itemloc_qty AS location_qty_qty,\n CASE WHEN (SELECT metric_value::boolean FROM metric WHERE metric_name = 'EnableSOReservationsByLocation') \n THEN formatQty(qtyReservedLocation(itemloc_id, 'SO', coitem_id)) \n ELSE formatQty(0) \n END AS location_reserved_qty,\n itemuomtouomratio(item_id,item_inv_uom_id, coitem_qty_uom_id) * itemloc_qty AS loc_issue_uom_qty,\n formatqty(itemuomtouomratio(item_id,item_inv_uom_id, coitem_qty_uom_id) * itemloc_qty) AS loc_issue_uom_fmt,\n coitemuom.uom_name AS uom_name,\n item_descrip1,\n item_descrip2,\n formatQty(coitem_qtyord) AS ordered,\n CASE WHEN ((coitem_qtyshipped - coitem_qtyreturned) > 0.0) THEN formatQty(coitem_qtyshipped - coitem_qtyreturned)\n ELSE NULL\n END AS shipped,\n CASE WHEN ((coitem_qtyshipped - coitem_qtyreturned) > 0.0) THEN formatQty(noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned))\n ELSE NULL\n END AS balance,\n CASE WHEN (qtyAtShipping('SO', coitem_id) > 0.0) THEN formatQty(qtyAtShipping('SO', coitem_id))\n ELSE NULL\n END AS atShipping,\n formatQty(roundUp((coitem_qtyord * coitem_qty_invuomratio))) AS shipordered,\n formatQty(roundUp(((coitem_qtyshipped - coitem_qtyreturned) * coitem_qty_invuomratio))) AS shipshipped,\n formatQty(roundUp((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio))) AS shipbalance,\n CASE WHEN (coitem_status='O' AND cust_creditstatus='H') THEN 'H'\n WHEN (coitem_status='O' AND ((SELECT SUM(invcitem_billed)\n FROM cohead, invchead, invcitem\n WHERE ((invchead_ordernumber=cohead_number)\n AND (invcitem_invchead_id=invchead_id)\n AND (invcitem_item_id=item_id)\n AND (invcitem_warehous_id=itemsite_warehous_id)\n AND (invcitem_linenumber=CASE WHEN(coitem_subnumber > 0) THEN (coitem_linenumber * 1000) + coitem_subnumber ELSE coitem_linenumber END)\n AND (cohead_id=coitem_cohead_id))) >= coitem_qtyord)) THEN 'I'\n WHEN (coitem_status='O' AND ((SELECT SUM(invcitem_billed)\n FROM cohead, invchead, invcitem\n WHERE ((invchead_ordernumber=cohead_number)\n AND (invcitem_invchead_id=invchead_id)\n AND (invcitem_item_id=item_id)\n AND (invcitem_warehous_id=itemsite_warehous_id)\n AND (invcitem_linenumber=CASE WHEN(coitem_subnumber > 0) THEN (coitem_linenumber * 1000) + coitem_subnumber ELSE coitem_linenumber END)\n AND (cohead_id=coitem_cohead_id))) > 0)) THEN 'P'\n WHEN (coitem_status='O' AND (itemsite_qtyonhand - qtyAllocated(itemsite_id, CURRENT_DATE)\n + qtyOrdered(itemsite_id, CURRENT_DATE))\n >= (coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned)) THEN 'R'\n ELSE coitem_status\n END AS f_status\n \n FROM coitem\n JOIN cohead ON (cohead_id = coitem_cohead_id)\n JOIN custinfo ON (cust_id = cohead_cust_id)\n JOIN itemsite ON (itemsite_id = coitem_itemsite_id)\n\t JOIN item ON (item_id = itemsite_item_id)\n\t JOIN whsinfo ON (warehous_id = itemsite_warehous_id)\n\t JOIN uom invuom ON (invuom.uom_id = item_inv_uom_id)\n\t JOIN uom coitemuom ON (coitemuom.uom_id = coitem_qty_uom_id) \n LEFT OUTER JOIN itemloc ON (itemloc_itemsite_id = itemsite_id)\n LEFT OUTER JOIN location ON (itemloc_location_id = location_id)\n WHERE ( (coitem_status <> 'X')\n AND (coitem_status <> 'C')\n AND (item_type != 'K')\n--REMOVE LINE ABOVE AND CLOSED LINES WILL BE DISPLAYED\n AND (coitem_cohead_id=<? value("sohead_id") ?>)\n)\n\nORDER BY sortline, sortsubline, expiration, location_name;\n \n \n logo\n SELECT image_data \nFROM image \nWHERE ((image_name='logo'));\n \n \n 467\n \n \n 375\n 5\n 425\n 85\n \n stretch\n \n logo\n image_data\n \n \n \n \n 170\n 125\n 170\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cust_number\n \n \n \n \n \n \n \n 75\n 280\n 295\n 20\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n head\n billing_address\n \n \n \n \n 5\n 425\n 797\n 425\n 0\n \n \n \n 100\n 400\n 253\n 25\n \n \n Arial\n 12\n normal\n \n \n \n \n head\n cust_contact\n \n \n \n \n 170\n 200\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n scheddate\n scheddate\n \n \n \n \n 475\n 400\n 320\n 20\n \n \n Arial\n 12\n normal\n \n \n \n \n head\n terms_descrip\n \n \n \n \n \n 170\n 220\n 390\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cohead_shipvia\n \n \n \n \n 170\n 155\n 170\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cohead_custponumber\n \n \n \n \n \n 170\n 95\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cohead_number\n \n \n \n \n \n \n \n 375\n 130\n 177\n 25\n \n 3of9\n 10\n \n 0.01\n \n head\n cust_number\n \n \n \n \n 375\n 95\n 233\n 25\n \n 128\n 10\n \n 0.01\n \n head\n order_barcode\n \n \n \n \n 170\n 180\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n orderdate\n \n \n \n \n \n 465\n 260\n 305\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cohead_shiptoname\n \n \n \n \n \n \n \n \n \n \n \n 75\n 260\n 305\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cohead_billtoname\n \n \n \n \n \n \n 465\n 280\n 305\n 20\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n head\n shipping_address\n \n \n \n \n \n 375\n 160\n 307\n 25\n \n 3of9\n 20\n \n 0.01\n \n head\n cohead_custponumber\n \n \n \n
\n detail\n \n lineitems\n linenumber\n \n 132\n \n 5\n 5\n 797\n 5\n 2\n \n \n \n \n \n 30\n 25\n 285\n 20\n \n \n Arial\n 11\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 20\n 10\n 200\n 20\n \n \n Arial\n 11\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n \n 408\n 35\n 380\n 45\n \n 128\n 15\n \n 0.01\n \n detail\n item_barcode\n \n \n \n \n \n \n \n 225\n 10\n 85\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n uom_name\n \n \n \n \n \n 620\n 10\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n atshipping\n \n \n \n 135\n 75\n 175\n 75\n 0\n \n \n 75\n 75\n 112\n 75\n 0\n \n \n \n \n 75\n 95\n 112\n 95\n 0\n \n \n 252\n 75\n 295\n 75\n 0\n \n \n \n 515\n 10\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n balance\n \n \n \n 252\n 95\n 295\n 95\n 0\n \n \n 615\n 30\n 535\n 30\n 0\n \n \n 135\n 95\n 175\n 95\n 0\n \n \n \n 415\n 10\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n shipped\n \n \n \n 745\n 25\n 795\n 25\n 1\n \n \n 195\n 95\n 235\n 95\n 0\n \n \n \n 365\n 30\n 25\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n f_status\n \n \n \n \n 30\n 40\n 285\n 20\n \n \n Arial\n 11\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n 195\n 75\n 235\n 75\n 0\n \n \n 70\n 120\n 793\n 120\n 0\n \n \n \n 305\n 10\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n ordered\n \n \n \n \n 29\n \n \n 490\n 5\n 50\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n uom_name\n \n \n \n \n 70\n 5\n 793\n 5\n 0\n \n \n \n 415\n 5\n 70\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n loc_issue_uom_qty\n \n qty\n \n \n \n \n 110\n 5\n 135\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n item_number\n \n \n \n \n \n \n \n detail\n \n 29\n \n \n 250\n 0\n 145\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n formatlotserialnumber\n \n \n \n \n 490\n 0\n 70\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n location_reserved_qty\n \n \n \n \n 415\n 0\n 70\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n loc_issue_uom_fmt\n \n \n \n 745\n 15\n 795\n 15\n 1\n \n \n \n 80\n 0\n 155\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n location_name\n \n \n \n \n 565\n 0\n 50\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n uom_name\n \n \n \n \n 635\n 0\n 85\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n expiration\n \n \n \n
\n \n 29\n \n \n \n \n 750\n 5\n 45\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 430\n 5\n 80\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n cohead_number\n \n \n \n \n \n 70\n 5\n 95\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 94\n \n 0\n 0\n 203\n 0\n 2\n \n \n \n \n 215\n 35\n 580\n 17\n \n 14\n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_shipcomments\n \n \n \n 202\n 0\n 203\n 55\n 2\n \n \n 155\n 25\n 195\n 25\n 0\n \n \n \n \n 155\n 50\n 195\n 50\n 0\n \n \n 0\n 55\n 203\n 55\n 2\n \n \n
\n This report definition shows location / lot / serial information on an SO Pick List. If the item is not Location Controlled it shows the contents of its Location Comment in the corresponding Item Site record. 0 2013-07-26 16:17:54.38447 141 PlannerCodeMasterList \N \n\n Planner Code Master List\n PlannerCodeMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT plancode_id,\n plancode_code, \n plancode_name\n FROM plancode\nORDER BY plancode_code;\n \n \n 76\n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n 6\n \n \n 21\n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 175\n 0\n 565\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n plancode_name\n \n \n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n plancode_code\n \n \n \n
\n \n 16\n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 156 PartiallyShippedOrders \N \n\n Partially Shipped Orders\n PartiallyShippedOrders\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT CASE WHEN (cohead_holdtype IN ('P', 'C', 'R')) THEN -1\n ELSE cohead_id\n END AS _coheadid, cohead_id,\n cohead_holdtype, cohead_number, cust_name,\n CASE WHEN (cohead_holdtype='N') THEN <? value("none") ?>\n WHEN (cohead_holdtype='C') THEN <? value("credit") ?>\n WHEN (cohead_holdtype='S') THEN <? value("ship") ?>\n WHEN (cohead_holdtype='P') THEN <? value("pack") ?>\n WHEN (cohead_holdtype='R') THEN <? value("return") ?>\n ELSE <? value("Other") ?>\n END AS f_holdtype,\n formatDate(cohead_orderdate) AS f_orderdate,\n formatDate(MIN(coitem_scheddate)) AS f_scheddate,\n formatDate(cohead_packdate) AS f_packdate,\n <? if exists("showPrices") ?>\n formatExtPrice( SUM( (noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) *\n (coitem_price / coitem_price_invuomratio) ) )\n <? else ?>\n text('')\n <? endif ?>\n AS f_extprice,\n SUM( (noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) *\n (coitem_price / coitem_price_invuomratio) ) AS backlog,\n MIN(coitem_scheddate) AS scheddate,\n COALESCE(MIN(shipitem_id), 0) AS shipped\n FROM cohead, itemsite, item, custinfo,\n coitem LEFT OUTER JOIN shipitem ON (shipitem_orderitem_id=coitem_id) \n WHERE ( (coitem_cohead_id=cohead_id)\n AND (cohead_cust_id=cust_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (coitem_status='O')\n AND (cohead_id IN ( SELECT DISTINCT coitem_cohead_id\n FROM coitem\n WHERE (coitem_qtyshipped > 0) ))\n AND (coitem_qtyshipped < coitem_qtyord)\n AND (coitem_scheddate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n)\nGROUP BY cohead_id, cohead_number, cust_name, cohead_holdtype,\n cohead_orderdate, cohead_packdate\nORDER BY scheddate, cohead_number;\n \n \n head\n SELECT <? if exists("warehous_id") ?>\n ( SELECT (warehous_code||'-'||warehous_descrip)\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("showPrices") ?>\n text('$ Amount')\n <? else ?>\n text('')\n <? endif ?>\n AS f_amount,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate;\n \n \n 205\n \n \n \n 484\n 75\n 220\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n 113\n 75\n 220\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n \n 484\n 95\n 220\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n 5\n 200\n 745\n 200\n 2\n \n \n \n \n \n \n \n 665\n 185\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_amount\n \n \n \n \n \n \n 8\n \n \n 28\n \n \n \n \n \n \n 665\n 5\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_amount\n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 18\n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_packdate\n \n \n \n \n 409\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_orderdate\n \n \n \n \n 75\n 0\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_name\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_extprice\n \n \n \n \n 325\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_holdtype\n \n \n \n \n 495\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_scheddate\n \n \n \n \n 5\n 0\n 65\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cohead_number\n \n \n \n
\n \n 19\n \n \n 80\n 0\n 140\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 715\n 0\n 30\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 53 PendingBOMChanges \N \n\n Pending Bill of Material Changes\n PendingBOMChanges\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n uom_name,\n item_descrip1,\n item_descrip2,\n CASE WHEN (<? value("cutOffDate") ?> >= date('2099-12-31')) THEN text('Latest')\n ELSE formatDate(<? value("cutOffDate") ?>)\n END AS cutoffdate\n FROM item JOIN uom ON (item_inv_uom_id=uom_id)\n WHERE (item_id=<? value("item_id") ?>);\n \n \n \n detail\n SELECT formatDate(bomitem_effective) as actiondate,\n 'Effective' AS action,\n bomitem_seqnumber, item_number, uom_name,\n item_descrip1, item_descrip2, uom_name,\n formatQty(itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, bomitem_qtyfxd)) AS qtyfxd,\n formatQtyPer(itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, bomitem_qtyper)) AS qtyper,\n formatScrap(bomitem_scrap) AS scrap,\n formatQtyPer(itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, (bomitem_qtyfxd + bomitem_qtyper) * (1 + bomitem_scrap))) AS qtyreq,\n formatDate(bomitem_effective, 'Always') AS effective,\n formatDate(bomitem_expires, 'Never') AS expires,\n formatBoolYN(bomitem_createwo) AS createchild,\n CASE WHEN (bomitem_issuemethod='S') THEN 'Push'\n WHEN (bomitem_issuemethod='L') THEN 'Pull'\n WHEN (bomitem_issuemethod='M') THEN 'Mixed'\n ELSE 'Special'\n END AS issuemethod\n FROM bomitem(<? value("item_id") ?>,<? value("revision_id") ?>), item, uom\n WHERE ((bomitem_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (bomitem_effective BETWEEN CURRENT_DATE AND <? value("cutOffDate") ?>)\n)\nUNION\nSELECT formatDate(bomitem_expires) as actiondate,\n 'Expires' AS action,\n bomitem_seqnumber, item_number, uom_name,\n item_descrip1, item_descrip2, uom_name,\n formatQty(itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, bomitem_qtyfxd)) AS qtyfxd,\n formatQtyPer(itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, bomitem_qtyper)) AS qtyper,\n formatScrap(bomitem_scrap) AS scrap,\n formatQtyPer(itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, bomitem_qtyper + (1 * bomitem_scrap))) AS qtyreq,\n formatDate(bomitem_effective, 'Always') AS effective,\n formatDate(bomitem_expires, 'Never') AS expires,\n formatBoolYN(bomitem_createwo) AS createchild,\n CASE WHEN (bomitem_issuemethod='S') THEN 'Push'\n WHEN (bomitem_issuemethod='L') THEN 'Pull'\n WHEN (bomitem_issuemethod='M') THEN 'Mixed'\n ELSE 'Special'\n END AS issuemethod\nFROM bomitem(<? value("item_id") ?>,<? value("revision_id") ?>), item, uom\nWHERE ((bomitem_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (bomitem_expires BETWEEN CURRENT_DATE AND <? value("cutOffDate") ?>)\n)\nORDER BY action, actiondate, bomitem_seqnumber;\n \n \n \n bomhead\n SELECT bomhead_docnum, bomhead_revision, formatDate(bomhead_revisiondate) AS f_revisiondate\nFROM bomhead\nWHERE ((bomhead_item_id=<? value("item_id") ?>)\n AND (bomhead_rev_id=<? value("revision_id") ?>));\n \n \n 234\n \n \n \n \n 120\n 140\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n 5\n 229\n 745\n 229\n 2\n \n \n \n \n 475\n 140\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n f_revisiondate\n \n \n \n \n \n 430\n 55\n 110\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cutoffdate\n \n \n \n \n \n 120\n 120\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n \n \n \n \n 475\n 160\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n bomhead_revision\n \n \n \n \n \n 120\n 160\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n \n \n \n 475\n 120\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n bomhead_docnum\n \n \n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 53\n \n \n 100\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n actiondate\n \n \n \n \n 5\n 0\n 75\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n action\n \n \n \n \n 600\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n scrap\n \n \n \n \n 600\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n createchild\n \n \n \n \n 254\n 30\n 229\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 675\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n issuemethod\n \n \n \n \n 254\n 0\n 229\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 254\n 15\n 229\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 675\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyreq\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 560\n 0\n 38\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n \n 484\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyper\n \n \n \n \n 204\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n bomitem_seqnumber\n \n \n \n \n 485\n 14\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyfxd\n \n \n \n
\n \n 18\n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 81 PickList \N \n\n Pick List\n PickList\n \n Letter\n \n 50\n 28\n 0\n 0\n \n Head\n SELECT formatWoNumber(wo_id) AS wonumber, wo_prodnotes,\n item_number, uom_name, item_descrip1, item_descrip2,\n warehous_code, formatQty(wo_qtyord) AS qtyord,\n formatQty(wo_qtyrcv) AS qtyrcv,\n formatDate(wo_startdate) AS startdate,\n formatDate(wo_duedate) AS duedate\n FROM wo, itemsite, item, whsinfo, uom\n WHERE ((wo_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (wo_id=%1))\n \n \n \n Detail\n SELECT item_number,\n uom_name,\n item_descrip1,\n item_descrip2,\n formatQty(womatl_qtyreq) AS qtyreq,\n formatQty(womatl_qtyiss) AS qtyiss,\n formatQty(noNeg(womatl_qtyreq - womatl_qtyiss)) AS qtybalance,\n itemsite_location,\n CASE WHEN (womatl_issuemethod='S') THEN text('Push')\n WHEN (womatl_issuemethod='L') THEN text('Pull')\n WHEN (womatl_issuemethod='M') THEN text('Mixed')\n ELSE text(womatl_issuemethod)\n END AS f_issuemethod\n FROM womatl, itemsite, item, uom\n WHERE ((item_picklist)\n AND (womatl_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (womatl_uom_id=uom_id)\n AND (womatl_wo_id=%1) );\n \n \n \n 246\n \n \n \n 196\n 140\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n Head\n qtyord\n \n \n \n \n 653\n 65\n 150\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n Head\n wonumber\n \n \n \n \n 196\n 102\n 300\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n Head\n item_descrip2\n \n \n \n \n \n 653\n 102\n 130\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n Head\n startdate\n \n \n \n \n 653\n 84\n 130\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 653\n 121\n 130\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n Head\n duedate\n \n \n \n \n \n 196\n 65\n 200\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n Head\n item_number\n \n \n \n \n \n \n \n \n \n \n \n 196\n 158\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n Head\n qtyrcv\n \n \n \n \n 196\n 84\n 300\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n Head\n item_descrip1\n \n \n \n \n 195\n 120\n 120\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n Head\n warehous_code\n \n \n \n \n \n 10\n 240\n 822\n 240\n 2\n \n \n \n \n \n \n \n \n 6\n \n \n 47\n \n \n \n 10\n 40\n 822\n 40\n 2\n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n Detail\n \n 61\n \n \n 215\n 0\n 130\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n itemsite_location\n \n \n \n \n 45\n 0\n 160\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n item_number\n \n \n \n 680\n 30\n 780\n 30\n 1\n \n \n \n 350\n 0\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n qtyreq\n \n \n \n \n 457\n 0\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n qtyiss\n \n \n \n \n 350\n 20\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n uom_name\n \n \n \n \n 46\n 37\n 300\n 14\n \n \n Arial\n 8\n normal\n \n \n \n \n Detail\n item_descrip2\n \n \n \n \n 459\n 20\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n f_issuemethod\n \n \n \n 10\n 55\n 822\n 55\n 0\n \n \n \n 569\n 0\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n qtybalance\n \n \n \n \n 45\n 20\n 300\n 14\n \n \n Arial\n 8\n normal\n \n \n \n \n Detail\n item_descrip1\n \n \n \n
\n \n 57\n \n \n \n 46\n 28\n 746\n 22\n \n 0\n \n Arial\n 12\n 48\n \n \n \n \n Head\n wo_prodnotes\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 346 PickingListSOClosedLines \N \n\n Picking List - SO\n PickingListSOClosedLines\n Shows Closed Lines -- With Barcodes formatitemsitebarcode(itemsite_id) -- SO # barcoded formatsobarcode(cohead_id) -- With Logo, place logo graphic in images DB with name "logo"\n\n \n \n \n 0.05\n 0.05\n \n Letter\n \n 25\n 25\n 25\n 25\n \n head\n SELECT cust_number,\n formatsobarcode(cohead_id) AS order_barcode,\n\n formataddr(cohead_billtoaddress1, cohead_billtoaddress2, cohead_billtoaddress3, (cohead_billtocity || ' ' || cohead_billtostate || ' ' || cohead_billtozipcode), cohead_billtocountry) AS billing_address, \n\n formataddr(cohead_shiptoaddress1, cohead_shiptoaddress2, cohead_shiptoaddress3, (cohead_shiptocity || ' ' || cohead_shiptostate || ' ' || cohead_shiptozipcode), cohead_shiptocountry) AS shipping_address, \n\n trim(cntct_first_name || ' ' || cntct_last_name) AS cust_contact,\n cohead_billtoname,\n cohead_billtoaddress1,\n cohead_billtoaddress2,\n cohead_billtoaddress3,\n (cohead_billtocity || ' ' || cohead_billtostate || ' ' || cohead_billtozipcode) AS billtocitystatezip,\n cntct_phone AS cust_phone,\n cohead_shiptoname,\n cohead_shiptoaddress1,\n cohead_shiptoaddress2,\n cohead_shiptoaddress3,\n (cohead_shiptocity || ' ' || cohead_shiptostate || ' ' || cohead_shiptozipcode) AS shiptocitystatezip,\n cohead_number,\n cohead_shipvia,\n cohead_shiptophone,\n cohead_custponumber,\n formatDate(cohead_orderdate) AS orderdate,\n cohead_shipcomments, \n terms_descrip\n FROM cohead\n JOIN custinfo ON (cohead_cust_id=cust_id)\n JOIN terms ON (cohead_terms_id=terms_id)\n LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id)\n WHERE (cohead_id=<? value("sohead_id") ?>);\n \n \n \n scheddate\n SELECT formatDate(MIN(coitem_scheddate)) AS scheddate\n FROM coitem\n WHERE ((coitem_status <> 'X') AND (coitem_cohead_id=<? value("sohead_id") ?>));\n \n \n detail\n SELECT 1 AS groupby,\n coitem_linenumber AS sortline, coitem_subnumber AS sortsubline,\n formatsolinenumber(coitem_id) AS linenumber,\n coitem_memo,\n item_number,\n formatitemsitebarcode(itemsite_id) AS item_barcode,\n-- In 2.3 replaced the next line:\n-- uom_name,\n-- with:\n (select uom_name from uom where uom_id = coitem_qty_uom_id) AS uom_name,\n itemsellinguom(item_id) AS shipuom,\n item_descrip1,\n item_descrip2,\n formatQty(coitem_qtyord) AS ordered,\n CASE WHEN ((coitem_qtyshipped - coitem_qtyreturned) > 0.0) THEN formatQty(coitem_qtyshipped - coitem_qtyreturned)\n ELSE NULL\n END AS shipped,\n CASE WHEN ((coitem_qtyshipped - coitem_qtyreturned) > 0.0) THEN formatQty(noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned))\n ELSE NULL\n END AS balance,\n CASE WHEN (qtyAtShipping('SO', coitem_id) > 0.0) THEN formatQty(qtyAtShipping('SO', coitem_id))\n ELSE NULL\n END AS atShipping,\n CASE WHEN (coitem_status='O' AND (SELECT cust_creditstatus FROM custinfo,cohead WHERE coitem_cohead_id=cohead_id AND cust_id=cohead_cust_id)='H') THEN 'H'\n WHEN (coitem_status='O' AND ((SELECT SUM(invcitem_billed)\n FROM cohead, invchead, invcitem\n WHERE ((invchead_ordernumber=cohead_number)\n AND (invcitem_invchead_id=invchead_id)\n AND (invcitem_item_id=item_id)\n AND (invcitem_warehous_id=itemsite_warehous_id)\n AND (invcitem_linenumber=CASE WHEN(coitem_subnumber > 0) THEN (coitem_linenumber * 1000) + coitem_subnumber ELSE coitem_linenumber END)\n AND (cohead_id=coitem_cohead_id))) >= coitem_qtyord)) THEN 'I'\n WHEN (coitem_status='O' AND ((SELECT SUM(invcitem_billed)\n FROM cohead, invchead, invcitem\n WHERE ((invchead_ordernumber=cohead_number)\n AND (invcitem_invchead_id=invchead_id)\n AND (invcitem_item_id=item_id)\n AND (invcitem_warehous_id=itemsite_warehous_id)\n AND (invcitem_linenumber=CASE WHEN(coitem_subnumber > 0) THEN (coitem_linenumber * 1000) + coitem_subnumber ELSE coitem_linenumber END)\n AND (cohead_id=coitem_cohead_id))) > 0)) THEN 'P'\n WHEN (coitem_status='O' AND (itemsite_qtyonhand - qtyAllocated(itemsite_id, CURRENT_DATE)\n + qtyOrdered(itemsite_id, CURRENT_DATE))\n >= (coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned)) THEN 'R'\n ELSE coitem_status\n END AS f_status\n FROM itemsite, item, uom, coitem\n WHERE ( (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (item_type != 'K')\n AND (coitem_status <> 'X')\n AND (coitem_cohead_id=<? value("sohead_id") ?>)\n)\n--2.3 add coitem_qty_uom_id, to the GROUP BY clause\nGROUP BY coitem_qty_uom_id,\n linenumber, coitem_linenumber, coitem_subnumber, coitem_id, coitem_memo, item_number, uom_name, shipuom,\n item_descrip1, item_descrip2, coitem_qtyord, coitem_qty_invuomratio, coitem_qtyshipped,\n coitem_qtyreturned, coitem_status, coitem_cohead_id,\n itemsite_id, itemsite_qtyonhand, itemsite_warehous_id, item_id\nORDER BY sortline, sortsubline;\n \n \n logo\n SELECT image_data \nFROM image \nWHERE ((image_name='logo'));\n \n \n 477\n \n \n 375\n 0\n 425\n 85\n \n stretch\n \n logo\n image_data\n \n \n \n \n 465\n 280\n 305\n 20\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n head\n shipping_address\n \n \n \n \n 120\n 400\n 252\n 25\n \n \n Arial\n 12\n normal\n \n \n \n \n head\n cust_contact\n \n \n \n 25\n 425\n 822\n 425\n 0\n \n \n \n 170\n 155\n 170\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cohead_custponumber\n \n \n \n \n \n 75\n 280\n 295\n 20\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n head\n billing_address\n \n \n \n \n \n \n 375\n 95\n 232\n 25\n \n 128\n 10\n \n 0.01\n \n head\n order_barcode\n \n \n \n \n \n \n 465\n 260\n 305\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cohead_shiptoname\n \n \n \n \n \n \n 432\n 215\n 331\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cohead_shipvia\n \n \n \n \n 170\n 125\n 170\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cust_number\n \n \n \n \n \n 75\n 260\n 305\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cohead_billtoname\n \n \n \n \n 170\n 95\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cohead_number\n \n \n \n \n 175\n 195\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n orderdate\n \n \n \n \n \n \n \n 25\n 465\n 822\n 465\n 0\n \n \n \n 175\n 215\n 100\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n scheddate\n scheddate\n \n \n \n \n 375\n 160\n 307\n 25\n \n 3of9\n 20\n \n 0.01\n \n head\n cohead_custponumber\n \n \n \n \n \n 467\n 400\n 320\n 20\n \n \n Arial\n 12\n normal\n \n \n \n \n head\n terms_descrip\n \n \n \n \n \n \n \n 375\n 130\n 177\n 25\n \n 3of9\n 10\n \n 0.01\n \n head\n cust_number\n \n \n \n \n \n \n
\n detail\n \n detail\n groupby\n \n 73\n \n \n 50\n 5\n 625\n 17\n \n 14\n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_shipcomments\n \n \n \n \n \n lineitem\n linenumber\n \n 28\n \n 5\n 5\n 842\n 5\n 0\n \n \n \n \n \n detail\n \n 156\n \n \n 415\n 80\n 500\n 80\n 0\n \n \n 305\n 110\n 395\n 110\n 0\n \n \n 80\n 80\n 170\n 80\n 0\n \n \n 745\n 15\n 795\n 15\n 1\n \n \n \n 25\n 0\n 200\n 20\n \n \n Arial\n 11\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 100\n 120\n 700\n 17\n \n 14\n \n Arial\n 10\n normal\n \n \n \n \n detail\n coitem_memo\n \n \n \n 415\n 110\n 500\n 110\n 0\n \n \n 305\n 80\n 395\n 80\n 0\n \n \n \n 630\n 95\n 85\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n f_status\n \n \n \n \n 365\n 30\n 467\n 35\n \n 128\n 15\n \n 0.01\n \n detail\n item_barcode\n \n \n \n \n \n 190\n 80\n 280\n 80\n 0\n \n \n \n 530\n 0\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n balance\n \n \n \n 80\n 110\n 170\n 110\n 0\n \n \n 632\n 80\n 720\n 80\n 0\n \n \n \n \n 25\n 40\n 295\n 20\n \n \n Arial\n 11\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 320\n 0\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n ordered\n \n \n \n \n 227\n 0\n 85\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n uom_name\n \n \n \n \n 425\n 0\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n shipped\n \n \n \n 190\n 110\n 280\n 110\n 0\n \n \n \n 25\n 20\n 295\n 20\n \n \n Arial\n 11\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 635\n 0\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n atshipping\n \n \n \n \n
\n \n 57\n \n \n \n \n 735\n 5\n 45\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 5\n 95\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 455\n 5\n 80\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n cohead_number\n \n \n \n \n 113\n \n \n 186\n 90\n 360\n 90\n 0\n \n \n \n 185\n 25\n 362\n 25\n 0\n \n \n
\n Shows Closed Lines -- With Barcodes formatitemsitebarcode(itemsite_id) -- SO # barcoded formatsobarcode(cohead_id) -- With Logo, place logo graphic in images DB with name "logo"\n 0 2013-07-26 16:17:54.38447 258 PricingScheduleAssignments \N \n\n Pricing Schedule Assignments\n PricingScheduleAssignments\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT ipsass_id,\n CASE WHEN (ipsass_shipto_id != -1) THEN (SELECT shipto_num FROM shiptoinfo WHERE (shipto_id=ipsass_shipto_id))\n WHEN (COALESCE(LENGTH(ipsass_shipto_pattern), 0) > 0) THEN ipsass_shipto_pattern\n ELSE TEXT('ANY')\n END AS shiptonum,\n CASE WHEN (ipsass_shipto_id != -1) THEN (SELECT cust_number FROM shiptoinfo, custinfo WHERE ((shipto_cust_id=cust_id) AND (shipto_id=ipsass_shipto_id)))\n WHEN (ipsass_cust_id=-1) THEN TEXT('Any')\n ELSE (SELECT cust_number FROM custinfo WHERE (cust_id=ipsass_cust_id))\n END AS custnumber,\n CASE WHEN (ipsass_shipto_id != -1) THEN (SELECT cust_name FROM shiptoinfo, custinfo WHERE ((shipto_cust_id=cust_id) AND (shipto_id=ipsass_shipto_id)))\n WHEN (ipsass_cust_id=-1) THEN ''\n ELSE (SELECT cust_name FROM custinfo WHERE (cust_id=ipsass_cust_id))\n END AS custname,\n CASE WHEN (ipsass_cust_id != -1) THEN TEXT('N/A')\n WHEN (ipsass_shipto_id != -1) THEN TEXT('N/A')\n WHEN (COALESCE(LENGTH(ipsass_shipto_pattern),0) > 0) THEN TEXT('N/A')\n WHEN (ipsass_custtype_id=-1) THEN ipsass_custtype_pattern\n ELSE (SELECT custtype_code FROM custtype WHERE (custtype_id=ipsass_custtype_id))\n END AS custtype,\n ipshead_name\nFROM ipsass, ipshead\nWHERE (ipshead_id=ipsass_ipshead_id)\nORDER BY custname, custtype;\n\n \n \n 78\n \n \n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 18\n \n \n 465\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n custtype\n \n \n \n \n 5\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shiptonum\n \n \n \n \n 240\n 0\n 205\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n custname\n \n \n \n \n 115\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n custnumber\n \n \n \n \n 580\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ipshead_name\n \n \n \n
\n \n 18\n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 44 ProductCategoriesMasterList \N \n\n Product Categories Master List\n ProductCategoriesMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n select prodcat_code, prodcat_descrip\n from prodcat\norder by prodcat_code;\n \n \n 76\n \n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n 6\n \n \n 21\n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n prodcat_code\n \n \n \n \n 175\n 0\n 565\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n prodcat_descrip\n \n \n \n
\n \n 16\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 298 ProjectTaskList \N \n\n ProjectTaskList\n ProjectTaskList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT prjtask_number, prjtask_name, prjtask_descrip\n FROM prjtask\n WHERE (prjtask_prj_id=<?value("prj_id")?>)\n ORDER BY prjtask_number;\n \n \n head\n SELECT (prj_number||'-'||prj_name) AS project\n FROM prj\n WHERE (prj_id=<? value("prj_id") ?>);\n \n \n 102\n \n \n \n \n 120\n 50\n 450\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n project\n \n \n \n \n \n 5\n 95\n 745\n 95\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 10\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n prjtask_number\n \n \n \n \n 285\n 0\n 450\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n prjtask_descrip\n \n \n \n \n 70\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n prjtask_name\n \n \n \n
\n \n 18\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 259 PurchaseOrderTypes \N \n\n Purchase Order Types\n PurchaseOrderTypes\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT potype_id,\n potype_name,\n potype_descrip\n FROM potype\nORDER BY potype_name;\n \n \n 77\n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n 7\n \n \n 22\n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 175\n 0\n 565\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n potype_descrip\n \n \n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n potype_name\n \n \n \n
\n \n 17\n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 11 QOHByLocation \N \n\n Quantities on Hand by Location\n QOHByLocation\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT (location_name||'-'||firstLine(location_descrip)) AS f_location,\n formatBoolYN(location_netable) AS f_netable,\n formatBoolYN(location_restrict) AS f_restricted,\n warehous_code,\n formatDate(<? value("asOf") ?>) AS asofdate\n FROM location, whsinfo\n WHERE ((location_warehous_id=warehous_id)\n AND (location_id=<? value("location_id") ?>) );\n \n \n detail\n qoh\n detail\n \n \n 234\n \n \n 130\n 140\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehous_code\n \n \n \n \n \n \n \n 435\n 140\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_restricted\n \n \n \n \n \n \n \n \n 130\n 120\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_location\n \n \n \n 5\n 228\n 745\n 228\n 2\n \n \n \n \n \n 435\n 120\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_netable\n \n \n \n \n \n \n 130\n 160\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n asofdate\n \n \n \n \n \n \n \n 6\n \n \n 41\n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 51\n \n \n 320\n 0\n 230\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_lotserial\n \n \n \n \n 85\n 0\n 220\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 565\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n \n 85\n 15\n 526\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_descrip\n \n \n \n \n 10\n 0\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qoh\n \n qty\n \n \n \n 665\n 14\n 80\n 20\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n reservedqty\n \n qty\n \n \n
\n \n 16\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 210 PurchaseOrder \N \n\n Purchase Order\n PurchaseOrder\n Selecting an Alt Address on the PO will cause the printed PO to display that address as the Ship To on the printed document.\n \n \n \n \n \n Head\n title\n \n 25\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 28\n 28\n 20\n 20\n \n Head\n SELECT pohead_number,\n formatDate(pohead_orderdate) AS f_orderdate,\n pohead_fob,\n pohead_shipvia,\n terms_descrip,\n vend_number,\n vend_name,\n warehous_descrip,\n pohead_agent_username,\n usr.usr_propername AS username,\n pohead_comments,\n text(<? value("title") ?>) AS title\n FROM pohead\n LEFT OUTER JOIN usr ON (pohead_agent_username = usr_username)\n LEFT OUTER JOIN terms ON (pohead_terms_id = terms_id)\n LEFT OUTER JOIN vendinfo ON (pohead_vend_id = vend_id)\n LEFT OUTER JOIN whsinfo ON (pohead_warehous_id = warehous_id)\n WHERE (pohead_id=<? value("pohead_id") ?>);\n \n \n Detail\n SELECT poitem_linenumber,\n poitem_comments,\n poitem_linenumber AS f_line,\n item_number,\n poitem_vend_item_number, \n CASE WHEN (LENGTH(TRIM(BOTH '\t' FROM poitem_vend_item_descrip)) <= 0) THEN\n (item_descrip1 || '' || item_descrip2)\n ELSE (poitem_vend_item_descrip)\n END AS itemdescription,\n formatQty(poitem_qty_ordered) AS f_ordered,\n CASE WHEN (poitem_vend_uom LIKE '') THEN (uom_name)\n ELSE (poitem_vend_uom)\n END AS itemuom,\n formatPurchPrice(poitem_unitprice) AS f_price,\n formatExtPrice(poitem_unitprice * poitem_qty_ordered) AS f_extended,\n formatDate(poitem_duedate) AS f_duedate,\n characteristicsToString('PI', poitem_id, '=', ', ') AS poitem_characteristics\nFROM poitem\n\tLEFT OUTER JOIN itemsite ON (poitem_itemsite_id = itemsite_id)\n\tLEFT OUTER JOIN (item JOIN uom ON (item_inv_uom_id=uom_id)) ON (itemsite_item_id = item_id)\nWHERE \t(poitem_pohead_id=<? value("pohead_id") ?>) \nORDER BY poitem_linenumber;\n \n \n Foot\n SELECT formatExtPrice(subtotal) AS f_subtotal,\n formatExtPrice(totalfreight) AS f_totalfreight,\n formatExtPrice(tax) AS f_tax,\n formatExtPrice(subtotal + totalfreight + tax) AS f_totaldue\nFROM\n( SELECT COALESCE(SUM(poitem_qty_ordered * poitem_unitprice), 0) AS subtotal,\n COALESCE(SUM(poitem_freight)+pohead_freight,0) AS totalfreight,\n (SELECT COALESCE(SUM(tax), 0.0)\n FROM (SELECT ROUND(SUM(taxdetail_tax),2) AS tax\n FROM tax\n JOIN calculateTaxDetailSummary('PO', <? value("pohead_id") ?>, 'T') ON (taxdetail_tax_id=tax_id)\n GROUP BY tax_id) AS taxdata) AS tax\n FROM pohead JOIN poitem ON (poitem_pohead_id=pohead_id)\n WHERE (pohead_id=<? value("pohead_id") ?>)\n GROUP BY pohead_freight ) AS data;\n\n \n \n Logo\n SELECT image_data \nFROM image \nWHERE ((image_name='logo'));\n \n \n Currency\n SELECT\n curr_symbol\nFROM\n pohead,\n curr_symbol\nWHERE (pohead_id = <? value("pohead_id") ?>) AND\n pohead_curr_id = curr_id;\n \n \n Address\n SELECT\n warehous_descrip,\n formatAddr(addr_line1, addr_line2, addr_line3, ( addr_city || ' ' || addr_state || ' ' || addr_postalcode), addr_country) AS warehouse_address\nFROM\n whsinfo, \n addr, \n pohead\nWHERE \n addr_id = warehous_addr_id\n and pohead_warehous_id = warehous_id\n AND pohead_id=<? value("pohead_id") ?> ;\n \n \n ShipToAddress\n SELECT pohead_number,\n formatDate(pohead_orderdate) AS f_orderdate,\n pohead_fob,\n pohead_shipvia,\n terms_descrip,\n vend_number,\n vend_name,\n va.addr_line1 AS vend_address1,\n va.addr_line2 AS vend_address2,\n va.addr_line3 AS vend_address3,\n (va.addr_city || ' ' || va.addr_state || ' ' || va.addr_postalcode) AS vendcitystatezip,\n formatcntctname(pohead_vend_cntct_id) AS vend_contact,\n formataddr(pohead_vendaddress1, pohead_vendaddress2, pohead_vendaddress3, (pohead_vendcity || ' ' || pohead_vendstate || ' ' || pohead_vendzipcode), pohead_vendcountry) as vend_address,\n warehous_descrip,\n wa.addr_line1 as warehous_addr1,\n wa.addr_line2 as warehous_addr2,\n wa.addr_line3 as warehous_addr3,\n wa.addr_city as warehous_addr4,\n wa.addr_postalcode as zip,\n wa.addr_state,\n wa.addr_country,\n formatcntctname(pohead_shipto_cntct_id) AS shipto_contact,\n formataddr(pohead_shiptoaddress1, pohead_shiptoaddress2, pohead_shiptoaddress3, (pohead_shiptocity || ' ' || pohead_shiptostate || ' ' || pohead_shiptozipcode), pohead_shiptocountry) as shipto_address,\n pohead_agent_username AS username,\n pohead_comments,\n text(<? value("title") ?>) AS title\n FROM pohead\n LEFT OUTER JOIN terms ON (pohead_terms_id = terms_id),\n vendinfo\n LEFT OUTER JOIN addr va ON (vend_addr_id=va.addr_id),\n whsinfo\n LEFT OUTER JOIN addr wa ON (warehous_addr_id = wa.addr_id)\n WHERE ((pohead_vend_id=vend_id)\n AND (pohead_warehous_id = warehous_id)\n AND (pohead_id=<? value("pohead_id") ?>) );\n \n \n 376\n \n \n 290\n 10\n 225\n 75\n \n stretch\n \n Logo\n image_data\n \n \n \n \n 0\n 130\n 270\n 130\n 0\n \n \n 5\n 315\n 805\n 315\n 0\n \n \n \n 535\n 130\n 810\n 130\n 0\n \n \n 535\n 0\n 535\n 130\n 0\n \n \n \n \n \n \n 645\n 60\n 140\n 17\n \n \n Arial\n 12\n normal\n \n \n \n \n Head\n f_orderdate\n \n \n \n \n 500\n 142\n 300\n 17\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n ShipToAddress\n shipto_contact\n \n \n \n \n \n 5\n 25\n 265\n 17\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n Address\n warehouse_address\n \n \n \n \n 5\n 5\n 267\n 17\n \n \n Arial\n 12\n normal\n \n \n \n \n Address\n warehous_descrip\n \n \n \n \n 645\n 40\n 126\n 17\n \n \n Arial\n 12\n normal\n \n \n \n \n Head\n pohead_number\n \n \n \n 5\n 360\n 805\n 360\n 0\n \n \n \n \n 75\n 155\n 300\n 17\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n ShipToAddress\n vend_contact\n \n \n \n 270\n 0\n 270\n 130\n 0\n \n \n \n \n \n 5\n 290\n 187\n 17\n \n \n Arial\n 11\n normal\n \n \n \n \n Head\n pohead_fob\n \n \n \n \n 202\n 290\n 252\n 17\n \n \n Arial\n 11\n normal\n \n \n \n \n Head\n pohead_shipvia\n \n \n \n \n \n \n \n \n \n \n \n 655\n 290\n 117\n 17\n \n \n Arial\n 11\n normal\n \n \n \n \n Head\n username\n \n \n \n \n 442\n 290\n 202\n 17\n \n \n Arial\n 11\n normal\n \n \n \n \n Head\n terms_descrip\n \n \n \n \n \n 645\n 85\n 35\n 16\n \n \n Arial\n 12\n normal\n \n \n \n \n Context Query\n page_number\n \n \n \n 5\n 285\n 805\n 285\n 0\n \n \n \n \n \n \n \n 75\n 137\n 300\n 20\n \n \n Arial\n 12\n normal\n \n \n \n \n Head\n vend_name\n \n \n \n \n 645\n 107\n 140\n 17\n \n \n Arial\n 12\n normal\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 500\n 162\n 300\n 17\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n ShipToAddress\n shipto_address\n \n \n \n \n 75\n 172\n 300\n 17\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n ShipToAddress\n vend_address\n \n \n \n
\n detail\n \n \n Detail\n \n 107\n \n \n 625\n 25\n 55\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n itemuom\n \n \n \n \n 50\n 65\n 605\n 17\n \n 0\n \n Arial\n 10\n normal\n \n \n \n \n Detail\n poitem_comments\n \n \n \n \n 700\n 25\n 100\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n f_duedate\n \n \n \n \n 700\n 5\n 92\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n f_extended\n \n \n \n \n 50\n 45\n 750\n 17\n \n \n Arial\n 9\n normal\n \n \n \n \n Detail\n poitem_characteristics\n \n \n \n \n 545\n 25\n 75\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n f_ordered\n \n \n \n \n 555\n 5\n 75\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n f_price\n \n \n \n \n 505\n 5\n 25\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n Currency\n curr_symbol\n \n \n \n \n 150\n 5\n 350\n 17\n \n 0\n \n Arial\n 10\n normal\n \n \n \n \n Detail\n itemdescription\n \n \n \n \n 50\n 25\n 225\n 17\n \n \n Arial\n 9\n normal\n \n \n \n \n Detail\n poitem_vend_item_number\n \n \n \n \n 50\n 5\n 92\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n item_number\n \n \n \n \n 10\n 5\n 36\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n Detail\n f_line\n \n \n \n
\n \n \n 113\n \n \n 670\n 85\n 25\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n Currency\n curr_symbol\n \n \n \n \n 35\n 10\n 530\n 17\n \n 14\n \n Arial\n 10\n normal\n \n \n \n \n Head\n pohead_comments\n \n \n \n \n \n 705\n 55\n 100\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n Foot\n f_tax\n \n \n \n \n 705\n 85\n 100\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n Foot\n f_totaldue\n \n \n \n \n 670\n 12\n 25\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n Currency\n curr_symbol\n \n \n \n \n 670\n 55\n 25\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n Currency\n curr_symbol\n \n \n \n 585\n 75\n 806\n 75\n 0\n \n \n \n \n \n 705\n 35\n 100\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n Foot\n f_totalfreight\n \n \n \n 10\n 5\n 805\n 5\n 0\n \n \n \n 705\n 12\n 100\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n Foot\n f_subtotal\n \n \n \n \n \n 670\n 35\n 25\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n Currency\n curr_symbol\n \n \n \n \n 57\n \n \n
\n Selecting an Alt Address on the PO will cause the printed PO to display that address as the Ship To on the printed document. 0 2013-07-26 16:17:54.38447 161 PurchasePriceVariancesByItem \N \n\n Purchase Price Variances By Item\n PurchasePriceVariancesByItem\n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number, item_descrip1,\n item_descrip2, uom_name,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("warehous_id") ?>\n (SELECT warehous_code FROM whsinfo WHERE warehous_id=<? value("warehous_id") ?>)\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("agentUsername") ?>\n TEXT(<? value("agentUsername" ?>)\n <? else ?>\n TEXT('All Agents')\n <? endif ?>\n AS agentUsername\n FROM item JOIN uom ON (item_inv_uom_id=uom_id)\n WHERE (item_id=<? value("item_id") ?>);\n \n \n detail\n poPriceVariances\n detail\n \n \n 236\n \n \n 95\n 135\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n \n \n \n \n 550\n 65\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n 95\n 155\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n agentUsername\n \n \n \n \n \n 550\n 85\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n 95\n 65\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n 95\n 85\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n \n \n \n 95\n 103\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n 5\n 230\n 745\n 230\n 2\n \n \n \n 310\n 65\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n uom_name\n \n \n \n \n \n \n \n \n 6\n \n \n 41\n \n \n \n \n \n \n \n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 36\n \n \n 5\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n recv_order_number\n \n \n \n \n 665\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_varprcnt\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_variance\n \n \n \n \n 60\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_name\n \n \n \n 5\n 30\n 745\n 30\n 0\n \n \n \n 575\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_recv_value\n \n \n \n \n 215\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_date\n \n \n \n \n 300\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemnumber\n \n \n \n \n 300\n 15\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemdescrip\n \n \n \n \n 490\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qty\n \n \n \n \n 575\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_voucher_value\n \n \n \n
\n \n 17\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 103\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 162 PurchasePriceVariancesByVendor \N \n\n Purchase Price Variances By Vendor\n PurchasePriceVariancesByVendor\n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("warehous_id") ?>\n (SELECT warehous_code FROM whsinfo WHERE warehous_id=<? value("warehous_id") ?>)\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("agentUsername") ?>\n TEXT(<? value("agentUsername" ?>)\n <? else ?>\n TEXT('All Agents')\n <? endif ?>\n AS agentUsername;\n \n \n detail\n poPriceVariances\n detail\n \n \n 236\n \n \n \n 550\n 64.8725\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n 550\n 85\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n 94.254\n 64.8725\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n \n \n \n \n 95.746\n 84.8725\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n agentUsername\n \n \n \n \n \n \n \n 5\n 230\n 745\n 230\n 2\n \n \n \n \n \n \n 6\n \n \n 41\n \n \n \n \n \n \n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 36\n \n \n 665\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_varprcnt\n \n \n \n \n 6.49\n -1.88608e-20\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n recv_order_number\n \n \n \n 5\n 30\n 745\n 30\n 0\n \n \n \n 490\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qty\n \n \n \n \n 300\n 15\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemdescrip\n \n \n \n \n 575\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_voucher_value\n \n \n \n \n 215\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_date\n \n \n \n \n 300\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemnumber\n \n \n \n \n 575\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_recv_value\n \n \n \n \n 69.9\n 0\n 143\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_name\n \n \n \n \n 665\n -0.442\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_variance\n \n \n \n
\n \n 17\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 103\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 145 PurchaseRequestsByItem \N \n\n Purchase Requests By Item\n PurchaseRequestsByItem\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n item_descrip1,\n item_descrip2,\n uom_name,\n <? if exists("warehous_id") ?>\n (SELECT warehous_code\n FROM whsinfo\n WHERE warehous_id=<? value("warehous_id") ?>)\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse\n FROM item JOIN uom ON (item_inv_uom_id=uom_id)\n WHERE (item_id=<? value("item_id") ?>);\n \n \n detail\n SELECT pr_status,\n pr_number || '-' || pr_subnumber AS pr_number,\n CASE WHEN (pr_order_type='W') THEN ('W/O ' || ( SELECT formatWoNumber(womatl_wo_id)\n FROM womatl\n WHERE (womatl_id=pr_order_id) ) )\n WHEN (pr_order_type='S') THEN ('S/O ' || (SELECT formatSoNumber(pr_order_id)))\n WHEN (pr_order_type='F') THEN ('Planned Order')\n WHEN (pr_order_type='M') THEN 'Manual'\n ELSE 'Other'\n END as f_type,\n pr_createdate as f_createdate,\n formatDate(pr_duedate) as f_duedate,\n formatQty(pr_qtyreq) as f_qtyreq,\n pr_releasenote as f_notes\n FROM pr, itemsite \n WHERE ((pr_itemsite_id=itemsite_id)\n AND (itemsite_item_id=<? value("item_id") ?>)\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n ) \nORDER BY pr_duedate;\n \n \n 221\n \n \n \n 135\n 85\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n 135\n 105\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n 135\n 135\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n 135\n 65\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n \n 355\n 65\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n uom_name\n \n \n \n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n 5\n \n \n 25\n \n \n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 39\n \n \n 655\n 0\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyreq\n \n \n \n \n 190\n 0\n 209\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_type\n \n \n \n \n 560\n 0\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_duedate\n \n \n \n \n 10\n 0\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n pr_number\n \n \n \n \n 105\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n pr_status\n \n \n \n \n \n 52\n 18\n 683\n 15\n \n 14\n \n Helvetica\n 6\n normal\n \n \n \n \n detail\n f_notes\n \n \n \n \n 445\n 0\n 110\n 16\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_createdate\n \n \n \n
\n \n 15\n \n \n 105\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 203 PurchaseReqsByPlannerCode \N \n\n Purchase Requests By Planner Code\n PurchaseReqsByPlannerCode\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("plancode_id") ?>\n ( SELECT (plancode_code||'-'||plancode_name)\n FROM plancode\n WHERE plancode_id=<? value("plancode_id") ?>)\n <? elseif exists("plancode_pattern") ?>\n text(<? value("plancode_pattern") ?>)\n <? else ?>\n text('All Planner Codes')\n <? endif ?>\n AS plancode,\n <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE warehous_id=<? value("warehous_id") ?>)\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n formatDate(<? value("startDate") ?>) AS startdate,\n formatDate(<? value("endDate") ?>) AS enddate;\n \n \n detail\n SELECT item_number,\n (item_descrip1 || ' ' || item_descrip2) as item_descrip,\n pr_status,\n CASE WHEN (pr_order_type='W') THEN ('W/O ' || ( SELECT formatWoNumber(womatl_wo_id)\n FROM womatl\n WHERE (womatl_id=pr_order_id) ) )\n WHEN (pr_order_type='S') THEN ('S/O ' || (SELECT formatSoNumber(pr_order_id)))\n WHEN (pr_order_type='F') THEN ('Planned Order')\n WHEN (pr_order_type='M') THEN 'Manual'\n ELSE 'Other'\n END AS f_type,\n formatDate(pr_duedate) AS f_duedate,\n formatQty(pr_qtyreq) AS f_qtyreq\n FROM pr, itemsite, item\n WHERE ((pr_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (pr_duedate BETWEEN <? value("startDate") ?> and <? value("endDate") ?>)\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("plancode_id") ?>\n AND (itemsite_plancode_id=<? value("plancode_id") ?>)\n<? elseif exists("plancode_pattern") ?>\n AND (itemsite_plancode_id IN (SELECT plancode_id\n FROM plancode\n WHERE (plancode_code ~ <? value("plancode_pattern") ?>) ) )\n<? endif ?>\n)\nORDER BY pr_duedate;\n \n \n 171\n \n \n \n \n 555\n 85\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n 555\n 65\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n 5\n 165\n 745\n 165\n 2\n \n \n \n \n \n \n \n \n 135\n 65\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n plancode\n \n \n \n \n \n 135\n 85\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n \n 6\n \n \n 26\n \n \n \n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyreq\n \n \n \n \n 10\n 0\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 135\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip\n \n \n \n \n 340\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n pr_status\n \n \n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_duedate\n \n \n \n \n 425\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_type\n \n \n \n
\n \n 16\n \n \n \n 105\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 457 QOH \N \n\n Quantities on Hand\n QOH\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("onlyShowPositive") ?>\n text('Only Showing Positive Quantities')\n <? elseif exists("onlyShowNegative") ?>\n text('Only Showing Negative Quantities')\n <? else ?>\n text('Showing All Quantities')\n <? endif ?>\n AS showquantities,\n <? if exists("showValue") ?>\n text('Unit Cost') AS lbl_unitcost,\n text('Value') AS lbl_value,\n text('NN Value') AS lbl_nnvalue,\n text('Cost Method') AS lbl_costmethod,\n <? else ?>\n text('') AS lbl_unitcost,\n text('') AS lbl_value,\n text('') AS lbl_nnvalue,\n text('') AS lbl_costmethod,\n <? endif ?>\n <? if exists("showValue") ?>\n <? if exists("useActualCosts") ?>\n text('Showing Actual Costs')\n <? elseif exists("useStandardCosts") ?>\n text('Showing Standard Costs')\n <? else ?>\n text('Showing Posted Costs')\n <? endif ?>\n <? else ?>\n text('')\n <? endif ?>\n AS showvalues;\n\n \n \n detail\n qoh\n detail\n \n \n total\n SELECT SUM(qoh) AS f_qoh,\n SUM(nonnetable) AS f_nonnetable,\n <? if exists("showValue") ?>\n FormatExtPrice(SUM(standardcost * qoh))\n <? else ?>\n ''\n <? endif ?>\n AS f_value,\n <? if exists("showValue") ?>\n FormatExtPrice(SUM(CASE WHEN (itemsite_loccntrl) THEN (standardcost * nonnetable)\n ELSE 0\n END))\n <? else ?>\n ''\n <? endif ?>\n AS f_nonnetvalue\nFROM ( SELECT itemsite_id, itemsite_costmethod,\n item_number,\n item_descrip1, item_descrip2, itemsite_loccntrl,\n warehous_code,\n uom_name,\n CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel ELSE 0.0 END AS reorderlevel,\n itemsite_qtyonhand AS qoh,\n CASE WHEN ((itemsite_loccntrl) OR (itemsite_controlmethod IN ('L', 'S'))) THEN 1\n ELSE 0\n END AS detail,\n itemsite_nnqoh AS nonnetable,\n <? if exists("useActualCosts") ?>\n actcost(itemsite_item_id)\n <? elseif exists("useStandardCosts") ?>\n stdcost(itemsite_item_id)\n <? else ?>\n (itemsite_value / CASE WHEN(itemsite_qtyonhand=0) THEN 1 ELSE itemsite_qtyonhand END)\n <? endif ?>\n AS standardcost\n FROM itemsite, item, uom, whsinfo, costcat\n WHERE ((itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_costcat_id=costcat_id)\n AND (itemsite_active)\n<? if exists("item_id") ?>\n AND (item_id=<? value("item_id") ?>)\n<? endif ?>\n<? if exists("classcode_id") ?>\n AND (item_classcode_id=<? value("classcode_id") ?>)\n<? endif ?>\n<? if exists("classcode_pattern") ?>\n AND (item_classcode_id IN (SELECT classcode_id\n FROM classcode\n WHERE (classcode_code ~ <? value("classcode_pattern") ?>) ) )\n<? endif ?>\n<? if exists("costcat_id") ?>\n AND (costcat_id=<? value("costcat_id") ?>)\n<? endif ?>\n<? if exists("costcat_pattern") ?>\n AND (costcat_id IN (SELECT costcat_id\n FROM costcat\n WHERE (costcat_code ~ <? value("costcat_pattern") ?>) ) )\n<? endif ?>\n<? if exists("itemgrp_id") ?>\n AND (item_id IN (SELECT itemgrpitem_item_id FROM itemgrpitem WHERE (itemgrpitem_itemgrp_id=<? value("itemgrp_id") ?>)))\n<? endif ?>\n<? if exists("itemgrp_pattern") ?>\n AND (item_id IN (SELECT itemgrpitem_item_id\n FROM itemgrpitem, itemgrp\n WHERE ( (itemgrpitem_itemgrp_id=itemgrp_id)\n AND (itemgrp_name ~ <? value("itemgrp_pattern") ?>) ) ))\n<? endif ?>\n<? if exists("onlyShowPositive") ?>\n AND (itemsite_qtyonhand > 0)\n<? elseif exists("onlyShowNegative") ?>\n AND (itemsite_qtyonhand < 0)\n<? endif ?>\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n) ) AS data\n;\n\n \n \n 234\n \n \n \n 590\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_value\n \n \n \n \n 509\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_unitcost\n \n \n \n \n \n 185\n 43\n 300\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n showvalues\n \n \n \n 8\n 231.167\n 748\n 231.167\n 2\n \n \n \n \n \n \n 670\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_nnvalue\n \n \n \n \n \n 10\n 43\n 300\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n showquantities\n \n \n \n \n 670\n 215\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_costmethod\n \n \n \n \n \n 10\n 58\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n \n 6\n \n \n 36\n \n \n 590\n 0\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_value\n \n \n \n \n \n 670\n 0\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_nnvalue\n \n \n \n \n 509\n 0\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_unitcost\n \n \n \n \n \n \n \n 670\n 15\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_costmethod\n \n \n \n \n \n \n 10\n 33.3333\n 750\n 33.3333\n 2\n \n \n
\n detail\n \n \n detail\n \n 51\n \n \n 265\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_reorderlevel\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 104\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 104\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 5\n 0\n 95\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 10\n 15\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n defaultlocation\n \n \n \n \n 585\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_value\n \n \n \n \n 345\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qoh\n \n \n \n \n 104\n 15\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_nnvalue\n \n \n \n \n 580\n 15\n 170\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_costmethod\n \n \n \n \n 505\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_cost\n \n \n \n \n 425\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_nnqoh\n \n \n \n
\n \n 16\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 16\n \n \n 425\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n nnqoh\n \n qty\n \n \n \n \n 585\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_value\n \n money\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_nnvalue\n \n money\n \n \n \n \n 345\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qoh\n \n qty\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 172 Quote \N \n\n Quote\n Quote\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT quhead_number,\n quhead_shipvia,\n formatDate(quhead_quotedate) as f_orderdate,\n formatDate(quhead_packdate) as f_packdate,\n salesrep_name,\n formatScrap(quhead_commission) as f_commission,\n (terms_code||' - '||terms_descrip) as f_terms,\n cust_number,\n quhead_billtoname,\n formatAddr(quhead_billtoaddress1,\n quhead_billtoaddress2,\n quhead_billtoaddress3,\n (quhead_billtocity || ', ' || quhead_billtostate || ' ' || quhead_billtozip),\n quhead_billtocountry) AS f_billtoaddress,\n CASE WHEN(quhead_shipto_id=-1) THEN text('')\n ELSE (SELECT text(shipto_num) FROM shiptoinfo WHERE (shipto_id=quhead_shipto_id))\n END AS f_shiptonum,\n quhead_shiptoname,\n formatAddr(quhead_shiptoaddress1,\n quhead_shiptoaddress2,\n quhead_shiptoaddress3,\n (quhead_shiptocity || ', ' || quhead_shiptostate || ' ' || quhead_shiptozipcode),\n quhead_shiptocountry) AS f_shiptoaddress,\n quhead_custponumber,\n quhead_fob, saletype_code\nFROM quhead\n LEFT OUTER JOIN custinfo ON (quhead_cust_id = cust_id)\n LEFT OUTER JOIN terms ON (quhead_terms_id = terms_id)\n LEFT OUTER JOIN salesrep ON (quhead_salesrep_id = salesrep_id)\n LEFT OUTER JOIN saletype ON (quhead_saletype_id = saletype_id)\nWHERE (quhead_id = <? value("quhead_id") ?>)\n\n \n \n notes\n SELECT quhead_ordercomments,\n quhead_shipcomments\n FROM quhead\n WHERE (quhead_id=<? value("quhead_id") ?>);\n \n \n items\n SELECT quitem_id,\n quitem_linenumber,\n quitem_custpn, \n item_number,\n item_descrip1,\n --The following 2 lines are new in 2.3\n (select uom_name from uom where uom_id = quitem_qty_uom_id) AS uom_ordered,\n (select uom_name from uom where uom_id = quitem_price_uom_id) AS uom_pricing,\n warehous_code,\n formatQty(quitem_qtyord) as f_ordered,\n formatPrice(quitem_price) as f_price,\n --The following line was changed in 2.3 from:\n --formatExtprice(quitem_qtyord * (quitem_price / iteminvpricerat(item_id))) as f_extprice\n --To:\n formatExtprice((quitem_qtyord * quitem_qty_invuomratio) * (quitem_price / quitem_price_invuomratio)) as f_extprice,\n quitem_memo,\n char_name, \n charass_value \nFROM quitem\n JOIN item ON (item_id=quitem_item_id)\n LEFT OUTER JOIN (itemsite JOIN whsinfo ON (itemsite_warehous_id=warehous_id)) ON (quitem_itemsite_id=itemsite_id)\n LEFT OUTER JOIN charass ON ((charass_target_id = quitem_id) \n AND (charass_target_type = 'QI'))\n LEFT OUTER JOIN char ON (charass_char_id = char_id)\nWHERE (quitem_quhead_id=<? value("quhead_id") ?>) \nORDER BY quitem_linenumber;\n \n \n totals\n SELECT 1 as one,\n formatExtPrice(subtotal) AS f_subtotal,\n formatExtPrice(tax) AS f_tax,\n formatExtPrice(quhead_freight) AS f_freight,\n formatExtPrice(quhead_misc) AS f_misc,\n formatExtPrice(subtotal + tax + quhead_freight + quhead_misc) AS f_total\n FROM quhead,\n (SELECT SUM(ROUND((quitem_qtyord * quitem_qty_invuomratio) * (quitem_price / quitem_price_invuomratio),2)) AS subtotal\n FROM quitem\n WHERE (quitem_quhead_id=<? value("quhead_id") ?>) ) AS subtot,\n (SELECT COALESCE(SUM(tax),0.0) AS tax \n FROM (\n SELECT ROUND(SUM(taxdetail_tax),2) AS tax \n FROM tax \n JOIN calculateTaxDetailSummary('Q', <? value("quhead_id") ?>, 'T') ON (taxdetail_tax_id=tax_id)\n\tGROUP BY tax_id) AS data) AS taxtot\n \n\n\n WHERE (quhead_id=<? value("quhead_id") ?>);\n\n \n \n logo\n SELECT image_data \nFROM image \nWHERE ((image_name='logo'));\n \n \n currency_info\n --this was added in version 2.3\nSELECT curr_name,\n curr_symbol,\n curr_abbr\nFROM quhead, curr_symbol\nWHERE ( (quhead_curr_id = curr_id)\n AND (quhead_id = <? value("quhead_id") ?>) );\n \n \n address\n SELECT warehous_descrip,\n formatAddr(addr_line1,\n addr_line2,\n addr_line3,\n (addr_city || ' ' || addr_state || ' ' || addr_postalcode),\n addr_country) AS warehouse_address\nFROM whsinfo, \n addr, \n quhead\nWHERE ( (addr_id = warehous_addr_id)\n AND (quhead_warehous_id = warehous_id)\n AND (quhead_id=<? value("quhead_id") ?>) );\n \n \n contact_fax_phone\n SELECT cntct_fax,\n cntct_phone\nFROM cntct, quhead, custinfo\nWHERE ( (cust_id = quhead_cust_id)\n AND (cust_cntct_id = cntct_id)\n AND (quhead_id = <? value("quhead_id") ?>) );\n\n \n \n 427\n \n \n 275\n 5\n 238\n 100\n \n stretch\n \n logo\n image_data\n \n \n \n \n 10\n 25\n 265\n 15\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n address\n warehouse_address\n \n \n \n \n 100\n 175\n 206\n 21\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_number\n \n \n \n \n 440\n 215\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n quhead_shiptoname\n \n \n \n \n \n 55\n 325\n 121\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n contact_fax_phone\n cntct_phone\n \n \n \n \n \n \n 55\n 215\n 285\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n quhead_billtoname\n \n \n \n \n 208\n 325\n 121\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n contact_fax_phone\n cntct_fax\n \n \n \n \n 440\n 190\n 206\n 21\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_shiptonum\n \n \n \n \n 100\n 130\n 206\n 21\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n quhead_number\n \n \n \n \n \n \n 440\n 145\n 103\n 21\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_packdate\n \n \n \n \n \n \n 100\n 160\n 206\n 21\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n saletype_code\n \n \n \n \n \n \n \n \n \n \n 100\n 145\n 206\n 21\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n salesrep_name\n \n \n \n \n \n \n \n \n \n 440\n 130\n 103\n 21\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_orderdate\n \n \n \n \n \n \n \n \n 505\n 350\n 206\n 21\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n quhead_shipvia\n \n \n \n \n 140\n 370\n 206\n 21\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n quhead_fob\n \n \n \n \n \n 440\n 160\n 262\n 21\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_terms\n \n \n \n \n 55\n 233\n 300\n 15\n \n 0\n \n Arial\n 10\n normal\n \n \n \n \n head\n f_billtoaddress\n \n \n \n \n 140\n 350\n 206\n 21\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n quhead_custponumber\n \n \n \n \n 10\n 5\n 257\n 19\n \n \n Arial\n 10\n bold\n \n \n \n \n address\n warehous_descrip\n \n \n \n \n 440\n 233\n 300\n 15\n \n 0\n \n Arial\n 10\n normal\n \n \n \n \n head\n f_shiptoaddress\n \n \n \n
\n lineitems\n \n lineitems\n quitem_linenumber\n \n 32\n \n \n 155\n 0\n 225\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n items\n item_descrip1\n \n \n \n 5\n 0\n 783\n 0\n 2\n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n items\n f_extprice\n \n \n \n \n \n 5\n 0\n 25\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n items\n quitem_linenumber\n \n \n \n \n 385\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n items\n warehous_code\n \n \n \n \n 640\n 0\n 37\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n items\n uom_pricing\n \n \n \n \n 525\n 0\n 37\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n items\n uom_ordered\n \n \n \n \n \n 45\n 0\n 103\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n items\n item_number\n \n \n \n \n 565\n 0\n 72\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n items\n f_price\n \n \n \n \n 440\n 0\n 77\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n items\n f_ordered\n \n \n \n \n 33.8828\n \n \n \n 290\n 0\n 454.347\n 13.2412\n \n 10\n \n Arial\n 8\n bold\n \n \n \n \n items\n quitem_memo\n \n \n \n \n \n 289.596\n 15.5884\n 199\n 17.1\n \n 0\n \n Sans Serif\n 8\n bold\n \n \n \n \n items\n quitem_custpn\n \n \n \n \n \n \n items\n \n 18\n \n \n 385\n 0\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n items\n charass_value\n \n \n \n \n 208\n 0\n 165\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n items\n char_name\n \n \n \n
\n
\n items\n \n items\n one\n \n 87\n \n \n \n 670\n 65\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n totals\n f_total\n \n \n \n \n \n 670\n 50\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n totals\n f_tax\n \n \n \n \n \n 670\n 35\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n totals\n f_freight\n \n \n \n \n 670\n 20\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n totals\n f_misc\n \n \n \n \n \n \n \n 204\n 10\n 206\n 18\n \n \n Arial\n 10\n bold\n \n \n \n \n currency_info\n curr_name\n \n \n \n \n 670\n 5\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n totals\n f_subtotal\n \n \n \n \n \n \n items\n \n 7\n \n
\n
\n notes\n \n \n notes\n \n 32\n \n \n \n 155\n 5\n 591\n 18\n \n 5\n \n Arial\n 10\n bold\n \n \n \n \n notes\n quhead_ordercomments\n \n \n \n
\n
\n extdescrip\n \n \n notes\n \n 32\n \n \n \n 155\n 5\n 591\n 21\n \n 5\n \n Arial\n 10\n bold\n \n \n \n \n notes\n quhead_shipcomments\n \n \n \n
\n \n 29\n \n \n 705\n 0\n 42\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 85\n 0\n 103\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 278 ReasonCodeMasterList \N \n\n Reason Code Master List\n ReasonCodeMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT rsncode_code, rsncode_descrip\n FROM rsncode\nORDER BY rsncode_code;\n \n \n 77\n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n 7\n \n \n 22\n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n rsncode_code\n \n \n \n \n 175\n 0\n 565\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n rsncode_descrip\n \n \n \n
\n \n 17\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 181 ReceiptsReturnsByDate \N \n\n Receipts and Returns By Date\n ReceiptsReturnsByDate\n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("warehous_id") ?>\n (SELECT warehous_code FROM whsinfo WHERE warehous_id=<? value("warehous_id") ?>)\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("agentUsername") ?>\n TEXT(<? value("agentUsername" ?>)\n <? else ?>\n TEXT('All Agents')\n <? endif ?>\n AS agentUsername,\n <? if exists("showVariances") ?>\n text('Purch. Cost') AS f_purchcost,\n text('Recv. Cost') AS f_recvcost\n <? else ?>\n text('') AS f_purchcost,\n text('') AS f_recvcost\n <? endif ?>\n \n \n detail\n receivings\n detail\n \n \n 221\n \n \n \n \n 645\n 185\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_purchcost\n \n \n \n \n \n 455\n 70\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n 120\n 70\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n 645\n 200\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_recvcost\n \n \n \n \n \n \n 455\n 95\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n \n 120\n 95\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n agentUsername\n \n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n \n 6\n \n \n 41\n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n \n \n \n 645\n 20\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_recvcost\n \n \n \n \n 645\n 5\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_purchcost\n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 56\n \n \n 215\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n venditemnumber\n \n \n \n \n 530\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qty\n \n \n \n \n 645\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_recvcost\n \n \n \n \n 215\n 15\n 400\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n venditemdescrip\n \n \n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_purchcost\n \n \n \n \n 5\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_name\n \n \n \n \n 110\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_duedate\n \n \n \n \n 110\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_recvdate\n \n \n \n 5\n 50\n 745\n 50\n 0\n \n \n \n 5\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ponumber\n \n \n \n \n 418\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n sense\n \n \n \n
\n \n 16\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 85\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 182 ReceiptsReturnsByItem \N \n\n Receipts and Returns By Item\n ReceiptsReturnsByItem\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n item_descrip1,\n item_descrip2,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("warehous_id") ?>\n (SELECT warehous_code FROM whsinfo WHERE warehous_id=<? value("warehous_id") ?>)\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("agentUsername") ?>\n TEXT(<? value("agentUsername" ?>)\n <? else ?>\n TEXT('All Agents')\n <? endif ?>\n AS agentUsername,\n <? if exists("showVariances") ?>\n text('Purch. Cost') AS f_purchcost,\n text('Recv. Cost') AS f_recvcost\n <? else ?>\n text('') AS f_purchcost,\n text('') AS f_recvcost\n <? endif ?>\n FROM item\n WHERE (item_id=<? value("item_id") ?>);\n \n \n detail\n receivings\n detail\n \n \n 221\n \n \n 120\n 90\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n 455\n 90\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n 120\n 155\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n agentUsername\n \n \n \n \n \n 645\n 185\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_purchcost\n \n \n \n \n 645\n 200\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_recvcost\n \n \n \n \n \n 455\n 70\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n \n \n \n \n 120\n 70\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n 120\n 110\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n 120\n 135\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n \n 6\n \n \n 41\n \n \n 645\n 20\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_recvcost\n \n \n \n \n \n \n \n 645\n 5\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_purchcost\n \n \n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 37\n \n \n 215\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n venditemnumber\n \n \n \n \n 110\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_recvdate\n \n \n \n \n 215\n 15\n 400\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n venditemdescrip\n \n \n \n \n 418\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n sense\n \n \n \n \n 5\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_name\n \n \n \n \n 110\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_duedate\n \n \n \n \n 5\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ponumber\n \n \n \n \n 645\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_recvcost\n \n \n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_purchcost\n \n \n \n \n 530\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qty\n \n \n \n 5\n 30\n 745\n 30\n 0\n \n \n
\n \n 17\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 85\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 183 ReceiptsReturnsByVendor \N \n\n Receipts and Returns By Vendor\n ReceiptsReturnsByVendor\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT vend_name,\n vend_number,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("warehous_id") ?>\n (SELECT warehous_code FROM whsinfo WHERE warehous_id=<? value("warehous_id") ?>)\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("agentUsername") ?>\n TEXT(<? value("agentUsername" ?>)\n <? else ?>\n TEXT('All Agents')\n <? endif ?>\n AS agentUsername,\n <? if exists("showVariances") ?>\n text('Purch. Cost') AS f_purchcost,\n text('Recv. Cost') AS f_recvcost\n <? else ?>\n text('') AS f_purchcost,\n text('') AS f_recvcost\n <? endif ?>\nFROM vendinfo\nWHERE (vend_id=<? value("vend_id") ?>);\n \n \n detail\n receivings\n detail\n \n \n 221\n \n \n 120\n 70\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n vend_number\n \n \n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n \n \n 455\n 70\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n \n 645\n 185\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_purchcost\n \n \n \n \n 645\n 200\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_recvcost\n \n \n \n \n 120\n 140\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n agentUsername\n \n \n \n \n 120\n 112\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n 120\n 90\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n vend_name\n \n \n \n \n \n 455\n 90\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n \n 6\n \n \n 41\n \n \n \n 645\n 20\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_recvcost\n \n \n \n \n \n \n \n 645\n 5\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_purchcost\n \n \n \n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n
\n detail\n \n \n detail\n \n 56\n \n \n 530\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qty\n \n \n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_purchcost\n \n \n \n 5\n 50\n 745\n 50\n 0\n \n \n \n 215\n 15\n 400\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n venditemdescrip\n \n \n \n \n 645\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_recvcost\n \n \n \n \n 215\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n venditemnumber\n \n \n \n \n 5\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ponumber\n \n \n \n \n 418\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n sense\n \n \n \n \n 110\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_recvdate\n \n \n \n \n 110\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_duedate\n \n \n \n
\n \n 16\n \n \n \n 85\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 417 ReceivingLabel \N \n\n Receiving Label\n ReceivingLabel\n \n \n must be a positive number or 0. used to specify how many day back from today the report takes into account when printing recieving labels\n \n \n Item Number - Used to filter the item numbers by the first matching characters from the left of the string\n \n \n used to specify the number of repeated sets of labels required\n \n \n used with the pirnt receiving label form\n \n \n used to filter the report by a PO number\n \n CILS ALP1-9200-1\n Labels\n \n 10\n 0\n 0\n 10\n \n detail\n SELECT formatDate(current_date) AS date, \n COALESCE(item_number,poitem_vend_item_number) AS item_number, \n COALESCE(item_descrip1, poitem_vend_item_descrip) AS item_descrip1,\n <? value("vendorItemLit") ?> AS vendoritemlit,\n poitem_vend_item_number, \n <? value("ordertype") ?> || '#:' AS typenum,\n pohead_number AS head_number \n FROM pohead, poitem \n LEFT OUTER JOIN itemsite ON (itemsite_id = poitem_itemsite_id)\n LEFT OUTER JOIN item ON (item_id = itemsite_item_id) \n WHERE ((pohead_id = poitem_pohead_id)\n AND (poitem_id = <? value("orderitemid") ?>)\n AND ('PO' = <? value("ordertype") ?>))\nUNION\nSELECT formatDate(current_date) AS date, \n item_number AS item_number, \n item_descrip1 AS item_descrip1,\n NULL, NULL, \n <? value("ordertype") ?> || '#:' AS typenum,\n rahead_number AS head_number\n FROM rahead, raitem \n JOIN itemsite ON (itemsite_id = raitem_itemsite_id)\n JOIN item ON (item_id = itemsite_item_id) \n WHERE ((rahead_id = raitem_rahead_id)\n AND (raitem_id = <? value("orderitemid") ?>)\n AND ('RA' = <? value("ordertype") ?>))\nUNION\nSELECT formatDate(current_date) AS date, \n item_number AS item_number, \n item_descrip1 AS item_descrip1,\n NULL, NULL, \n <? value("ordertype") ?> || '#:' AS typenum,\n tohead_number AS head_number\n FROM tohead, toitem \n JOIN item ON (item_id = toitem_item_id) \n WHERE ((tohead_id = toitem_tohead_id)\n AND (toitem_id = <? value("orderitemid") ?>)\n AND ('TO' = <? value("ordertype") ?>))\n \n
\n detail\n \n \n detail\n \n 698\n \n \n 5\n 5\n 190\n 15\n \n \n Arial\n 11\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 5\n 20\n 175\n 10\n \n 0\n \n Arial\n 7\n normal\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 80\n 50\n 100\n 15\n \n \n Helvetica\n 8\n normal\n \n \n \n \n detail\n poitem_vend_item_number\n \n \n \n \n 35\n 65\n 45\n 15\n \n \n Helvetica\n 8\n normal\n \n \n \n \n detail\n head_number\n \n \n \n \n \n 115\n 65\n 65\n 15\n \n \n Helvetica\n 8\n normal\n \n \n \n \n detail\n date\n \n \n \n \n 5\n 65\n 25\n 15\n \n \n Helvetica\n 8\n normal\n \n \n \n \n detail\n typenum\n \n \n \n \n 5\n 50\n 75\n 15\n \n \n Helvetica\n 8\n normal\n \n \n \n \n detail\n vendoritemlit\n \n \n \n
\n
\n \N 0 2013-07-26 16:17:54.38447 461 ReceivingLabelOrder \N \n\n Receiving Label Order\n ReceivingLabelOrder\n \n \n must be a positive number or 0. used to specify how many day back from today the report takes into account when printing recieving labels\n \n \n Item Number - Used to filter the item numbers by the first matching characters from the left of the string\n \n \n used to specify the number of repeated sets of labels required\n \n \n used with the pirnt receiving label form\n \n \n used to filter the report by a PO number\n \n \n \n \n 0.05\n 0.05\n \n CILS ALP1-9200-1\n Labels\n \n 10\n 0\n 0\n 10\n \n detail\n SELECT formatDate(current_date) AS date, \n COALESCE(item_number,poitem_vend_item_number) AS item_number, \n COALESCE(item_descrip1, poitem_vend_item_descrip) AS item_descrip1,\n <? value("vendorItemLit") ?> AS vendoritemlit,\n poitem_vend_item_number, \n <? value("orderhead_type") ?> || '#:' AS typenum,\n pohead_number AS head_number \n FROM pohead\n JOIN poitem ON (poitem_pohead_id = pohead_id)\n LEFT OUTER JOIN itemsite ON (itemsite_id = poitem_itemsite_id)\n LEFT OUTER JOIN item ON (item_id = itemsite_item_id) \n WHERE ((pohead_id = <? value("orderhead_id") ?>)\n AND ('PO' = <? value("orderhead_type") ?>))\nUNION\nSELECT formatDate(current_date) AS date, \n item_number AS item_number, \n item_descrip1 AS item_descrip1,\n NULL, NULL, \n <? value("orderhead_type") ?> || '#:' AS typenum,\n rahead_number AS head_number\n FROM rahead\n JOIN raitem ON (raitem_rahead_id = rahead_id)\n JOIN itemsite ON (itemsite_id = raitem_itemsite_id)\n JOIN item ON (item_id = itemsite_item_id) \n WHERE ((rahead_id = <? value("orderhead_id") ?>)\n AND ('RA' = <? value("orderhead_type") ?>))\nUNION\nSELECT formatDate(current_date) AS date, \n item_number AS item_number, \n item_descrip1 AS item_descrip1,\n NULL, NULL, \n <? value("orderhead_type") ?> || '#:' AS typenum,\n tohead_number AS head_number\n FROM tohead\n JOIN toitem ON (toitem_tohead_id = tohead_id)\n JOIN item ON (item_id = toitem_item_id) \n WHERE ((tohead_id = <? value("orderhead_id") ?>)\n AND ('TO' = <? value("orderhead_type") ?>))\n \n
\n detail\n \n \n detail\n \n 698\n \n \n 5\n 5\n 190\n 15\n \n \n Arial\n 11\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 5\n 20\n 175\n 10\n \n 0\n \n Arial\n 7\n normal\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 80\n 50\n 100\n 15\n \n \n Helvetica\n 8\n normal\n \n \n \n \n detail\n poitem_vend_item_number\n \n \n \n \n 35\n 65\n 45\n 15\n \n \n Helvetica\n 8\n normal\n \n \n \n \n detail\n head_number\n \n \n \n \n \n 115\n 65\n 65\n 15\n \n \n Helvetica\n 8\n normal\n \n \n \n \n detail\n date\n \n \n \n \n 5\n 65\n 25\n 15\n \n \n Helvetica\n 8\n normal\n \n \n \n \n detail\n typenum\n \n \n \n \n 5\n 50\n 75\n 15\n \n \n Helvetica\n 8\n normal\n \n \n \n \n detail\n vendoritemlit\n \n \n \n
\n
\n \N 0 2013-07-26 16:17:54.38447 163 RejectedMaterialByVendor \N \n\n Rejected Material By Vendor\n RejectedMaterialByVendor\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT vend_number, vend_name,\n <? if exists("warehous_id") ?>\n (SELECT warehous_code\n FROM whsinfo\n WHERE warehous_id=<? value("warehous_id") ?>)\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("agentUsername") ?>\n TEXT(<? value("agentUsername" ?>)\n <? else ?>\n TEXT('All Agents')\n <? endif ?>\n AS agentUsername,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate\n FROM vendinfo\n WHERE (vend_id=<? value("vend_id") ?>);\n \n \n detail\n SELECT poreject_id, poreject_ponumber, vend_name,\n formatDate(poreject_date) as f_date,\n poreject_vend_item_number as f_itemnum,\n poreject_vend_item_descrip as f_itemdescrip,\n formatQty(poreject_qty) as f_qty,\n rjctcode_code as f_rejectcode\nFROM poreject, vendinfo, itemsite, rjctcode\nWHERE ( (poreject_posted)\n AND (poreject_vend_id=vend_id)\n AND (poreject_rjctcode_id=rjctcode_id)\n AND (poreject_itemsite_id=itemsite_id)\n AND (vend_id=<? value("vend_id") ?>)\n AND (date(poreject_date) BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("agentUsername") ?>\n AND (poreject_agent_username=<? value("agentUsername") ?>)\n<? endif ?>\n )\nORDER BY poreject_date DESC;\n \n \n 236\n \n \n \n \n 95\n 135\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n \n 95\n 85\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n vend_name\n \n \n \n \n \n \n 95\n 65\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n vend_number\n \n \n \n \n \n \n \n \n 5\n 229\n 745\n 229\n 2\n \n \n \n 550\n 85\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n 95\n 155\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n agentUsername\n \n \n \n \n 550\n 65\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n 6\n \n \n 41\n \n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 36\n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_rejectcode\n \n \n \n \n 492\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qty\n \n \n \n \n 300\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_itemnum\n \n \n \n \n 60\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_name\n \n \n \n \n 5\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n poreject_ponumber\n \n \n \n \n 300\n 15\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_itemdescrip\n \n \n \n \n 215\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_date\n \n \n \n 5\n 30\n 745\n 30\n 0\n \n \n
\n \n 16\n \n \n 102\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 139 ReorderExceptionsByPlannerCode \N \n\n Reorder Exceptions by Planner Code\n ReorderExceptionsByPlannerCode\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("plancode_id") ?>\n ( SELECT (plancode_code || '-' || plancode_name)\n FROM plancode\n WHERE plancode_id=<? value("plancode_id") ?>)\n <? elseif exists("plancode_pattern") ?>\n text(<? value("plancode_pattern") ?>)\n <? else ?>\n text('All Planner Codes')\n <? endif ?>\n AS plannercode,\n <? if exists("includePlannedOrders") ?>\n formatBoolYN(true)\n <? else ?>\n formatBoolYN(false)\n <? endif ?>\n AS includeplnord,\n <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse;\n \n \n detail\n SELECT warehous_code, item_number, item_descrip1, item_descrip2,\n formatDate(reorderdate) AS f_reorderdate,\n formatQty(reorderlevel) AS f_reorderlevel,\n formatQty((itemsite_qtyonhand - qtyAllocated(itemsite_id, reorderdate) + qtyOrdered(itemsite_id, reorderdate))) AS f_projavail,\n reorderdate \n FROM ( SELECT itemsite_id,\n CASE WHEN (item_type IN ('M', 'B', 'T')) THEN 1\n WHEN (item_type IN ('P', 'O')) THEN 2\n ELSE 3\n END AS itemtype,\n warehous_code, item_number, item_descrip1, item_descrip2,\n reorderDate(itemsite_id, <? value("lookAheadDays") ?>, <? if exists("includePlannedOrder") ?>true<? else ?>false<? endif ?>) AS reorderdate, itemsite_qtyonhand,\n reorderlevel \n FROM ( SELECT itemsite_id, itemsite_item_id, itemsite_warehous_id,\n itemsite_qtyonhand,\n CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel ELSE 0.0 END AS reorderlevel\n FROM itemsite \n WHERE ((true)\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("plancode_id") ?>\n AND (itemsite_plancode_id=<? value("plancode_id") ?>)\n<? elseif exists("plancode_pattern") ?>\n AND (itemsite_plancode_id IN (SELECT plancode_id\n FROM plancode\n WHERE (plancode_code ~ <? value("plancode_pattern") ?>)))\n<? endif ?>\n )\n ) AS itemsitedate, item, whsinfo\n WHERE ((itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id))\n ) AS data \n WHERE (reorderdate IS NOT NULL) \nORDER BY reorderdate, item_number;\n \n \n 221\n \n \n \n \n \n \n \n \n 140\n 120\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n lookAheadDays\n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n 525\n 80\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n includeplnord\n \n \n \n \n 140\n 100\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n 140\n 80\n 385\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n plannercode\n \n \n \n \n \n \n \n 6\n \n \n 41\n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 51\n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 5\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 50\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 385\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_reorderdate\n \n \n \n \n 490\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_reorderlevel\n \n \n \n \n 595\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_projavail\n \n \n \n \n 50\n 0\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 50\n 15\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n
\n \n 16\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 105 ReportsMasterList \N \n\n Reports Master List\n ReportsMasterList\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n reports\n detail\n \n \n 76\n \n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n 6\n \n \n 21\n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 80\n 2\n 175\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n report_name\n \n \n \n \n 0\n 2\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n pkgname\n \n \n \n \n 265\n 2\n 475\n 15\n \n 1\n \n Arial\n 8\n bold\n \n \n \n \n detail\n report_descrip_qttooltiprole\n \n \n \n
\n \n 16\n \n \n 90\n 1\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 1\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 426 ReturnAuthorizationWorkbenchDueCredit \N \n\n Return Authorization Workbench Due Credit\n ReturnAuthorizationWorkbenchDueCredit\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT \n<? if exists("cust_id") ?>\n cust_number AS f_custtype\n FROM custinfo\n WHERE(cust_id=<? value("cust_id") ?>);\n<? elseif exists("custtype_id") ?>\n custtype_name AS f_custtype\n FROM custtype\n WHERE(custtype_id=<? value("custtype_id") ?>);\n<? elseif exists("custgrp_id") ?>\n custgrp_name AS f_custtype\n FROM custgrp\n WHERE(custgrp_id=<? value("custgrp_id") ?>);\n<? else ?>\n text('All Customer Types') AS f_custtype\n<? endif ?>\n \n \n detail\n SELECT DISTINCT rahead_id,\nCASE\n WHEN rahead_creditmethod = 'M' THEN\n 1\n WHEN rahead_creditmethod = 'K' THEN\n 2\n WHEN rahead_creditmethod = 'C' THEN\n 3\nEND,\nrahead_number, cust_name,\nformatDate(rahead_authdate) AS f_authdate, formatDate(NULL) AS f_eligibledate,\nformatMoney(currtobase(rahead_curr_id,\n calcradueamt(rahead_id), current_date)) AS f_amount,\nCASE\n WHEN rahead_creditmethod = 'M' THEN\n <? value("creditmemo") ?>\n WHEN rahead_creditmethod = 'K' THEN\n <? value("check") ?>\n WHEN rahead_creditmethod = 'C' THEN\n <? value("creditcard") ?>\nEND AS creditmethod, rahead_authdate\nFROM rahead, raitem, custtype, custinfo LEFT OUTER JOIN custgrpitem ON (cust_id=custgrpitem_cust_id)\nWHERE ( (rahead_id=raitem_rahead_id)\n AND (rahead_cust_id=cust_id)\n AND (cust_custtype_id=custtype_id)\n AND ((raitem_disposition = 'R' AND rahead_timing = 'R' AND raitem_qtyreceived > raitem_qtycredited)\n OR (raitem_disposition = 'R' AND rahead_timing = 'I' AND raitem_qtyauthorized > raitem_qtycredited)\n OR (raitem_disposition = 'C' AND raitem_qtyauthorized > raitem_qtycredited))\n AND (raitem_status = 'O')\n AND (rahead_creditmethod != 'N')\n AND (calcradueamt(rahead_id) > 0)\n AND (raitem_disposition IN ('C','R'))\n <? if exists("cust_id") ?>\n AND (cust_id=<? value("cust_id") ?>)\n <? elseif exists("custtype_id") ?>\n AND (custtype_id=<? value("custtype_id") ?>)\n <? elseif exists("custtype_pattern") ?>\n AND (custtype_pattern=<? value("custtype_pattern") ?>)\n <? elseif exists("custgrp_id") ?>\n AND (custgrpitem_custgrp_id=<? value("custgrp_id") ?>)\n <? endif ?>\n AND (rahead_creditmethod IN ('$'\n <? if exists("doM") ?>, 'M'<? endif ?>\n <? if exists("doK") ?>, 'K'<? endif ?>\n <? if exists("doC") ?>, 'C'<? endif ?>\n ))\n ) \nORDER BY rahead_authdate,rahead_number;\n \n \n 223\n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n \n \n 185\n 80\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_custtype\n \n \n \n \n \n \n \n 6\n \n \n 28\n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 18\n \n \n 245\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_eligibledate\n \n \n \n \n 325\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_amount\n \n \n \n \n 410\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n creditmethod\n \n \n \n \n 5\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n rahead_number\n \n \n \n \n 90\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_name\n \n \n \n \n 170\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_authdate\n \n \n \n
\n \n 18\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 427 ReturnAuthorizationWorkbenchReview \N \n\n Return Authorization Workbench Review\n ReturnAuthorizationWorkbenchReview\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT \n<? if exists("cust_id") ?>\n (cust_number || '-' || cust_name) AS f_custtype\n FROM custinfo\n WHERE(cust_id=<? value("cust_id") ?>)\n<? elseif exists("custtype_id") ?>\n (custtype_code || '-' || custtype_descrip) AS f_custtype\n FROM custtype\n WHERE(custtype_id=<? value("custtype_id") ?>)\n<? elseif exists("custgrp_id") ?>\n (custgrp_name || '-' || custgrp_descrip) AS f_custtype\n FROM custgrp\n WHERE(custgrp_id=<? value("custgrp_id") ?>)\n<? else ?>\n text('All Customer Types') AS f_custtype\n<? endif ?>\n;\n \n \n detail\n SELECT * FROM (\nSELECT rahead_id, rahead_number, COALESCE(cust_name,text('Undefined')) AS custnumber,\nformatDate(rahead_authdate) AS f_authdate, COALESCE(formatDate(rahead_expiredate),text('Never')) AS f_expiredate,\nCASE\n WHEN raitem_disposition = 'C' THEN\n text('Credit')\n WHEN raitem_disposition = 'R' THEN\n text('Return')\n WHEN raitem_disposition = 'P' THEN\n text('Replace')\n WHEN raitem_disposition = 'V' THEN\n text('Service')\n WHEN raitem_disposition = 'S' THEN\n text('Shipment')\n END AS disposition,\nCASE\n WHEN rahead_creditmethod = 'N' THEN\n text('None')\n WHEN rahead_creditmethod = 'M' THEN\n text('Memo')\n WHEN rahead_creditmethod = 'K' THEN\n text('Check')\n WHEN rahead_creditmethod = 'C' THEN\n text('Card')\nEND AS creditmethod,\nCASE\n WHEN raitem_status = 'C' THEN\n text('Closed')\n WHEN raitem_disposition = 'C' THEN\n text('Payment')\n WHEN raitem_disposition = 'R'\n AND SUM(raitem_qtyauthorized-raitem_qtycredited) > 0\n AND SUM(raitem_qtyauthorized-raitem_qtyreceived) > 0 THEN\n text('Receipt') || ',' || text('Payment')\n WHEN raitem_disposition = 'R'\n AND SUM(raitem_qtyreceived-raitem_qtycredited) > 0 THEN\n text('Payment')\n WHEN raitem_disposition = 'R'\n AND SUM(raitem_qtyauthorized-raitem_qtyreceived) > 0 THEN\n text('Receipt')\n WHEN raitem_disposition IN ('P','V')\n AND SUM(raitem_qtyauthorized-COALESCE(coitem_qtyshipped,0)) > 0\n AND SUM(raitem_qtyauthorized-raitem_qtyreceived) > 0 THEN\n text('Receipt') || ',' || text('Shipment')\n WHEN raitem_disposition IN ('P','V')\n AND SUM(raitem_qtyauthorized-COALESCE(coitem_qtyshipped,0)) > 0 THEN\n text('Shipment')\n WHEN raitem_disposition IN ('P','V')\n AND SUM(raitem_qtyauthorized-raitem_qtyreceived) > 0 THEN\n text('Receipt')\n WHEN raitem_disposition = 'S' THEN\n text('Shipment')\n ELSE ''\nEND AS awaiting\nFROM rahead\n LEFT OUTER JOIN custinfo ON (rahead_cust_id=cust_id)\n LEFT OUTER JOIN custtype ON (cust_custtype_id=custtype_id)\n LEFT OUTER JOIN custgrpitem ON (custgrpitem_cust_id=cust_id), \n raitem\n LEFT OUTER JOIN coitem ON (raitem_new_coitem_id=coitem_id)\nWHERE ( (rahead_id=raitem_rahead_id)\n\n<? if exists("cust_id") ?>\n AND (cust_id=<? value("cust_id")?>)\n<? elseif exists("custtype_id") ?>\n AND (custtype_id=<? value("custtype_id") ?>)\n<? elseif exists("custgrp_id") ?>\n AND (custgrpitem_custgrp_id=<? value("custgrp_id") ?>)\n<? elseif exists("custtype_pattern") ?>\n AND (custtype_code ~ <? value("custtype_pattern") ?>)\n<? endif ?>\n\n<? if not exists("showExpired") ?>\n AND (COALESCE(rahead_expiredate,CURRENT_DATE) >= CURRENT_DATE)\n<? endif ?>\n<? if exists("showClosed") ?>\n AND (raitem_status='O' OR rahead_authdate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n<? else ?>\n AND (raitem_status = 'O')\n<? endif ?>\n ) GROUP BY rahead_id,rahead_number,cust_name,rahead_expiredate,\n rahead_authdate,raitem_status,raitem_disposition,rahead_creditmethod,\n rahead_curr_id\n ORDER BY rahead_authdate,rahead_number\n) as data\n\nWHERE (FALSE)\n<? if exists("showReceipts") ?>\n OR ((disposition IN ('Return','Replace','Service'))\n AND (awaiting ~ 'Receipt'))\n<? endif ?>\n<? if exists("showShipments") ?>\n OR ((disposition IN ('Replace','Service','Shipment'))\n AND (awaiting ~ 'Shipment'))\n<? endif ?>\n<? if exists("showPayments") ?>\n OR ((disposition IN ('Credit','Return'))\n AND (awaiting ~ 'Payment'))\n<? endif ?>\n<? if exists("showClosed") ?>\n OR ((awaiting = 'Closed'))\n<? endif ?>\n\n \n \n 223\n \n \n \n \n \n \n 185\n 80\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_custtype\n \n \n \n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n 6\n \n \n 28\n \n \n \n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 18\n \n \n 5\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n rahead_number\n \n \n \n \n 170\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_authdate\n \n \n \n \n 245\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_expiredate\n \n \n \n \n 410\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n creditmethod\n \n \n \n \n 325\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n disposition\n \n \n \n \n 525\n 0\n 195\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n awaiting\n \n \n \n \n 90\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n custnumber\n \n \n \n
\n \n 18\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 137 RunningAvailability \N \n\n Running Availability\n RunningAvailability\n Updated in 2.3 to show order number and item code on higherlevel planned work orders.\n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n item_descrip1,\n item_descrip2,\n uom_name,\n warehous_code AS warehouse,\n <? if exists("showPlanned") ?>\n text('Yes')\n <? else ?>\n text('No')\n <? endif ?>\n AS showplnord\n FROM item, uom, whsinfo\n WHERE ((item_id=<? value("item_id") ?>)\n AND (item_inv_uom_id=uom_id)\n AND (warehous_id=<? value("warehous_id") ?>))\n \n \n detail\n runningAvailability\n detail\n \n \n info\n SELECT\n formatQty(itemsite_qtyonhand) AS qoh,\n formatQty(CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel ELSE 0.0 END) AS reorderlevel,\n formatQty(CASE WHEN(itemsite_useparams) THEN itemsite_ordertoqty ELSE 0.0 END) AS ordertoqty,\n formatQty(CASE WHEN(itemsite_useparams) THEN itemsite_multordqty ELSE 0.0 END) AS multorderqty \nFROM itemsite \nWHERE ((itemsite_item_id=<? value("item_id") ?>)\n AND (itemsite_warehous_id=<? value("warehous_id") ?>));\n \n \n 238\n \n \n \n \n 95\n 125\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n 95\n 75\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n 95\n 95\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n \n \n 595\n 145\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n info\n ordertoqty\n \n \n \n \n 365\n 125\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n info\n qoh\n \n \n \n \n \n \n 305\n 55\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n uom_name\n \n \n \n \n \n \n 595\n 125\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n info\n reorderlevel\n \n \n \n \n 595\n 75\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n showplnord\n \n \n \n 5\n 228\n 740\n 228\n 2\n \n \n \n 95\n 55\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n \n 365\n 145\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n info\n multorderqty\n \n \n \n \n \n \n \n \n \n \n 12\n \n \n 28\n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 22\n \n \n 90\n 0\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ordernumber\n \n \n \n \n 285\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_duedate\n \n \n \n \n 5\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ordertype\n \n \n \n \n 555\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_balance\n \n \n \n \n 385\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyordered\n \n \n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n balance\n \n qty\n \n \n \n \n 467\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyreceived\n \n \n \n \n 150\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n
\n \n 22\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 102\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n Updated in 2.3 to show order number and item code on higherlevel planned work orders. 0 2013-07-26 16:17:54.38447 71 SalesAccountAssignmentsMasterList \N \n\n Sales Account Assignments Master List\n SalesAccountAssignmentsMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT salesaccnt_id,\n CASE WHEN salesaccnt_warehous_id=-1 THEN 'Any'::TEXT\n ELSE (SELECT warehous_code FROM whsinfo WHERE (warehous_id=salesaccnt_warehous_id))\n END AS warehouscode,\n CASE WHEN salesaccnt_custtype_id=-1 THEN salesaccnt_custtype\n ELSE (SELECT custtype_code FROM custtype WHERE (custtype_id=salesaccnt_custtype_id))\n END AS custtypecode,\n CASE WHEN salesaccnt_prodcat_id=-1 THEN salesaccnt_prodcat\n ELSE (SELECT prodcat_code FROM prodcat WHERE (prodcat_id=salesaccnt_prodcat_id))\n END AS prodcatcode,\n formatGLAccount(salesaccnt_sales_accnt_id) AS salesaccnt,\n formatGLAccount(salesaccnt_credit_accnt_id) AS creditaccnt,\n formatGLAccount(salesaccnt_cos_accnt_id) AS costaccnt,\n formatGLAccount(salesaccnt_returns_accnt_id) AS returnsaccnt,\n formatGLAccount(salesaccnt_cor_accnt_id) AS coraccnt,\n formatGLAccount(salesaccnt_cow_accnt_id) AS cowaccnt\n FROM salesaccnt\nORDER BY warehouscode, custtypecode, prodcatcode;\n \n \n 87\n \n 0\n 81\n 740\n 81\n 2\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 7\n \n \n 27\n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 230\n -1\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n salesaccnt\n \n \n \n \n 5\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehouscode\n \n \n \n \n 65\n -1\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n custtypecode\n \n \n \n \n 315\n -1\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n creditaccnt\n \n \n \n \n 150\n -1\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n prodcatcode\n \n \n \n \n 400\n -1\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n costaccnt\n \n \n \n \n 485\n -1\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n returnsaccnt\n \n \n \n \n 570\n -1\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n coraccnt\n \n \n \n \n 655\n -1\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cowaccnt\n \n \n \n
\n \n 17\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 422 SalesCategoriesMasterList \N \n\n Sales Categories Master List\n SalesCategoriesMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT salescat_id, salescat_name, salescat_descrip,\n formatGLAccount(salescat_sales_accnt_id) AS salesaccnt,\n formatGLAccount(salescat_prepaid_accnt_id) AS prepaidaccnt,\n formatGLAccount(salescat_ar_accnt_id) AS araccnt\n FROM salescat\nORDER BY salescat_name;\n \n \n 87\n \n 0\n 81\n 740\n 81\n 2\n \n \n \n \n \n \n \n \n \n \n 7\n \n \n 27\n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 230\n -1\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n salesaccnt\n \n \n \n \n 5\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n salescat_name\n \n \n \n \n 65\n -1\n 155\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n salescat_descrip\n \n \n \n \n 315\n -1\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n prepaidaccnt\n \n \n \n \n 400\n -1\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n araccnt\n \n \n \n
\n \n 17\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 72 SalesRepsMasterList \N \n\n Sales Reps Master List\n SalesRepsMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n select salesrep_number, salesrep_name,\n formatBoolYN(salesrep_active) AS f_active,\n formatScrap(salesrep_commission) AS f_commprcnt\n from salesrep\norder by salesrep_name;\n \n \n 76\n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 610\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_active\n \n \n \n \n 10\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n salesrep_number\n \n \n \n \n 115\n 0\n 490\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n salesrep_name\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_commprcnt\n \n \n \n
\n \n 16\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 478 SaleTypesMasterList \N \n\n Sale Types Master List\n SaleTypesMasterList\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n select *\n from saletype\norder by saletype_code;\n \n \n 76\n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n \n \n 6\n \n \n 21\n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n saletype_code\n \n \n \n \n 240\n 0\n 500\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n saletype_descr\n \n \n \n \n 180\n 2\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n saletype_active\n \n \n \n
\n \n 16\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 403 SalesOrderAcknowledgement \N \n\n Sales Order Acknowledgement\n SalesOrderAcknowledgement\n Sales Order Acknowledgement Omits Closed Lines -- With Barcodes formatitemsitebarcode(itemsite_id) -- SO # barcoded formatsobarcode(cohead_id) -- With Logo, place logo graphic in images DB with name "logo"\n \n \n \n 0.05\n 0.05\n \n Letter\n \n 25\n 25\n 25\n 25\n \n head\n SELECT cust_number,\n formatsobarcode(cohead_id) AS order_barcode,\n\n formataddr(cohead_billtoaddress1, cohead_billtoaddress2, cohead_billtoaddress3, (cohead_billtocity || ' ' || cohead_billtostate || ' ' || cohead_billtozipcode), cohead_billtocountry) AS billing_address, \n\n formataddr(cohead_shiptoaddress1, cohead_shiptoaddress2, cohead_shiptoaddress3, (cohead_shiptocity || ' ' || cohead_shiptostate || ' ' || cohead_shiptozipcode), cohead_shiptocountry) AS shipping_address, \n\n trim(cntct_first_name || ' ' || cntct_last_name) AS cust_contact,\n cohead_billtoname,\n cohead_billtoaddress1,\n cohead_billtoaddress2,\n cohead_billtoaddress3,\n (cohead_billtocity || ' ' || cohead_billtostate || ' ' || cohead_billtozipcode) AS billtocitystatezip,\n cntct_phone AS cust_phone,\n cohead_shiptoname,\n cohead_shiptoaddress1,\n cohead_shiptoaddress2,\n cohead_shiptoaddress3,\n (cohead_shiptocity || ' ' || cohead_shiptostate || ' ' || cohead_shiptozipcode) AS shiptocitystatezip,\n cohead_number,\n cohead_shipvia,\n cohead_shiptophone,\n cohead_custponumber,\n formatDate(cohead_orderdate) AS orderdate,\n cohead_shipcomments, \n terms_descrip\n FROM cohead, custinfo, terms, cntct\n WHERE ((cohead_cust_id=cust_id)\n AND (cust_cntct_id=cntct_id)\n AND (cohead_terms_id=terms_id)\n AND (cohead_id=<? value("sohead_id") ?>)\n);\n \n \n scheddate\n SELECT formatDate(MIN(coitem_scheddate)) AS scheddate\n FROM coitem\n WHERE ((coitem_status <> 'X') AND (coitem_cohead_id=<? value("sohead_id") ?>));\n \n \n detail\n salesOrderItems\n list\n \n \n logo\n SELECT image_data \nFROM image \nWHERE ((image_name='logo'));\n \n \n 477\n \n \n 375\n 0\n 425\n 85\n \n stretch\n \n logo\n image_data\n \n \n \n \n 120\n 400\n 253\n 25\n \n \n Arial\n 12\n normal\n \n \n \n \n head\n cust_contact\n \n \n \n \n \n 175\n 195\n 100\n 20\n \n \n helvetica\n 14\n normal\n \n \n \n \n head\n orderdate\n \n \n \n \n \n 469\n 400\n 320\n 20\n \n \n Arial\n 12\n normal\n \n \n \n \n head\n terms_descrip\n \n \n \n \n \n 375\n 130\n 177\n 25\n \n 3of9\n 10\n \n 0.01\n \n head\n cust_number\n \n \n \n \n 375\n 160\n 307\n 25\n \n 3of9\n 20\n \n 0.01\n \n head\n cohead_custponumber\n \n \n \n \n \n 170\n 155\n 170\n 20\n \n \n helvetica\n 14\n normal\n \n \n \n \n head\n cohead_custponumber\n \n \n \n \n \n \n 433\n 215\n 331\n 20\n \n \n helvetica\n 14\n normal\n \n \n \n \n head\n cohead_shipvia\n \n \n \n \n \n 170\n 95\n 100\n 20\n \n \n helvetica\n 14\n normal\n \n \n \n \n head\n cohead_number\n \n \n \n \n 375\n 95\n 234\n 25\n \n 128\n 10\n \n 0.01\n \n head\n order_barcode\n \n \n \n \n 25\n 465\n 823\n 465\n 0\n \n \n \n \n 75\n 260\n 305\n 20\n \n \n Arial\n 14\n normal\n \n \n \n \n head\n cohead_billtoname\n \n \n \n \n 75\n 280\n 295\n 20\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n head\n billing_address\n \n \n \n \n \n \n \n 465\n 280\n 305\n 20\n \n 10\n \n Arial\n 10\n normal\n \n \n \n \n head\n shipping_address\n \n \n \n \n 170\n 125\n 170\n 20\n \n \n helvetica\n 14\n normal\n \n \n \n \n head\n cust_number\n \n \n \n \n \n \n 465\n 260\n 305\n 20\n \n \n helvetica\n 14\n normal\n \n \n \n \n head\n cohead_shiptoname\n \n \n \n \n \n 175\n 215\n 100\n 20\n \n \n helvetica\n 14\n normal\n \n \n \n \n scheddate\n scheddate\n \n \n \n 25\n 425\n 823\n 425\n 0\n \n \n \n \n \n \n
\n detail\n \n detail\n groupby\n \n 72\n \n \n 50\n 5\n 625\n 17\n \n 14\n \n helvetica\n 10\n normal\n \n \n \n \n head\n cohead_shipcomments\n \n \n \n \n \n lineitem\n coitem_linenumber\n \n 28\n \n 5\n 5\n 843\n 5\n 0\n \n \n \n \n \n detail\n \n 153\n \n \n 425\n 0\n 100\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n detail\n f_qtyshipped\n \n \n \n \n 635\n 0\n 100\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n detail\n f_qtyatshipping\n \n \n \n \n 365\n 30\n 469\n 35\n \n 128\n 15\n \n 0.01\n \n detail\n item_barcode\n \n \n \n \n 630\n 95\n 85\n 15\n \n \n helvetica\n 10\n normal\n \n \n \n \n detail\n enhanced_status\n \n \n \n \n 100\n 120\n 700\n 17\n \n 14\n \n helvetica\n 10\n normal\n \n \n \n \n detail\n coitem_memo\n \n \n \n 80\n 80\n 170\n 80\n 0\n \n \n \n \n 415\n 80\n 500\n 80\n 0\n \n \n \n \n 530\n 0\n 100\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n detail\n f_balance\n \n \n \n \n 80\n 110\n 170\n 110\n 0\n \n \n \n 25\n 40\n 295\n 20\n \n \n Arial\n 11\n bold\n \n \n \n \n detail\n item_descrip2_cust\n \n \n \n 305\n 110\n 395\n 110\n 0\n \n \n \n 25\n 0\n 200\n 20\n \n \n Arial\n 11\n bold\n \n \n \n \n detail\n item_number_cust\n \n \n \n \n 25\n 20\n 295\n 20\n \n \n Arial\n 11\n bold\n \n \n \n \n detail\n item_descrip1_cust\n \n \n \n 745\n 15\n 795\n 15\n 1\n \n \n 190\n 80\n 280\n 80\n 0\n \n \n 632\n 80\n 720\n 80\n 0\n \n \n 190\n 110\n 280\n 110\n 0\n \n \n \n 228\n 0\n 85\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n detail\n qty_uom\n \n \n \n \n 415\n 110\n 500\n 110\n 0\n \n \n 305\n 80\n 395\n 80\n 0\n \n \n \n 320\n 0\n 100\n 20\n \n \n helvetica\n 10\n normal\n \n \n \n \n detail\n f_qtyord\n \n \n \n
\n \n 57\n \n \n 90\n 5\n 95\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 455\n 5\n 80\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n cohead_number\n \n \n \n \n \n \n 735\n 5\n 45\n 17\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 113\n \n 185\n 25\n 363\n 25\n 0\n \n \n 186\n 90\n 360\n 90\n 0\n \n \n \n \n
\n Sales Order Acknowledgement Omits Closed Lines -- With Barcodes formatitemsitebarcode(itemsite_id) -- SO # barcoded formatsobarcode(cohead_id) -- With Logo, place logo graphic in images DB with name "logo" 0 2013-07-26 16:17:54.38447 247 SelectPaymentsList \N \n\n Select Payments List\n SelectPaymentsList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT apopen_id, apselectid, vendor, apopen_docnumber, apopen_ponumber,\n formatDate(apopen_duedate) AS f_duedate,\n formatDate(apopen_docdate) AS f_docdate,\n formatMoney(amount) AS f_amount,\n f_selected, f_late, status\n FROM (SELECT apopen_id, COALESCE(apselect_id, -1) AS apselectid,\n (vend_number || '-' || vend_name) AS vendor,\n apopen_docnumber, apopen_ponumber,\n apopen_duedate, apopen_docdate,\n (apopen_amount - apopen_paid -\n COALESCE((SELECT SUM(checkitem_amount / checkitem_curr_rate)\n FROM checkitem, checkhead\n WHERE ((checkitem_checkhead_id=checkhead_id)\n AND (checkitem_apopen_id=apopen_id)\n AND (NOT checkhead_void)\n AND (NOT checkhead_posted))\n ), 0)) AS amount,\n formatMoney(COALESCE(SUM(apselect_amount), 0)) AS f_selected,\n formatBoolYN(apopen_duedate <= CURRENT_DATE) AS f_late,\n CASE WHEN (apopen_status='O') THEN TEXT('Open')\n ELSE CASE WHEN (apopen_status='H') THEN TEXT('On Hold')\n ELSE CASE WHEN (apopen_status='C') THEN TEXT('Close')\n END\n END\n END AS status\n FROM vendinfo, apopen LEFT OUTER JOIN apselect ON (apselect_apopen_id=apopen_id)\n WHERE ( (apopen_open)\n AND (apopen_doctype IN ('V', 'D'))\n AND (apopen_vend_id=vend_id)\n<? if exists("vend_id") ?>\n AND (vend_id=<? value("vend_id") ?>)\n<? elseif exists("vendtype_id") ?>\n AND (vend_vendtype_id=<? value("vendtype_id") ?>)\n<? elseif exists("vendtype_pattern") ?>\n AND (vend_vendtype_id IN (SELECT vendtype_id\n FROM vendtype\n WHERE (vendtype_code ~ <? value("vendtype_pattern") ?>)))\n<? endif ?>\n )\nGROUP BY apopen_id, apselect_id, vend_number, vend_name,\n apopen_docnumber, apopen_ponumber,\n apopen_duedate, apopen_docdate, apopen_amount, apopen_paid, apopen_curr_id, apopen_status) AS data\n WHERE (amount <> 0.0)\nORDER BY apopen_duedate, amount DESC;\n \n \n head\n SELECT <? if exists("vend_id") ?>\n ( SELECT vend_name\n FROM vendinfo\n WHERE (vend_id=<? value("vend_id") ?>) )\n <? elseif exists("vendtype_id") ?>\n ( SELECT (vendtype_code || '-' || vendtype_descrip)\n FROM vendtype\n WHERE (vendtype_id=<? value("vendtype_id") ?>) )\n <? elseif exists("vendtype_pattern") ?>\n text(<? value("vendtype_pattern") ?>)\n <? else ?>\n text('All Vendors')\n <? endif ?>\n AS f_value,\n <? if reExists("vendtype_.*") ?>\n text('Vendor Type:')\n <? else ?>\n text('Vendor:')\n <? endif ?>\n AS f_label;\n \n \n \n 141\n \n \n 20\n 65\n 125\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n f_label\n \n \n \n \n \n \n \n \n \n \n \n 150\n 65\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_value\n \n \n \n \n 5\n 135\n 745\n 135\n 2\n \n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 205\n -1\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n apopen_ponumber\n \n \n \n \n 280\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_duedate\n \n \n \n \n 590\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_selected\n \n \n \n \n 505\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_amount\n \n \n \n \n 360\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_docdate\n \n \n \n \n 680\n 0\n 65\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_late\n \n \n \n \n 130\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n apopen_docnumber\n \n \n \n \n 5\n 0\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vendor\n \n \n \n \n 435\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n status\n \n \n \n
\n \n 17\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 246 SelectedPaymentsList \N \n\n Selected Payments List\n SelectedPaymentsList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT apopen_id, apselect_id,\n (bankaccnt_name || '-' || bankaccnt_descrip) AS bankaccnt,\n (vend_number || '-' || vend_name) AS vendor,\n apopen_docnumber,\n apopen_ponumber,\n formatMoney(apselect_amount) AS f_selected\n FROM apselect, apopen, vendinfo, bankaccnt\n WHERE ((apopen_vend_id=vend_id)\n AND (apselect_apopen_id=apopen_id)\n AND (apselect_bankaccnt_id=bankaccnt_id)\n<? if exists("vend_id") ?>\n AND (vend_id=<? value("vend_id") ?>)\n<? elseif exists("vendtype_id") ?>\n AND (vend_vendtype_id=<? value("vendtype_id") ?>)\n<? elseif exists("vendtype_pattern") ?>\n AND (vend_vendtype_id IN (SELECT vendtype_id\n FROM vendtype\n WHERE (vendtype_code ~ <? value("vendtype_pattern") ?>)))\n<? endif ?>\n )\nORDER BY bankaccnt_name, vend_number, apopen_docnumber;\n \n \n 141\n \n \n \n \n \n \n 5\n 135\n 745\n 135\n 2\n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 575\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_selected\n \n \n \n \n 450\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n apopen_ponumber\n \n \n \n \n 10\n 0\n 225\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n bankaccnt\n \n \n \n \n 365\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n apopen_docnumber\n \n \n \n \n 240\n 0\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vendor\n \n \n \n
\n \n 16\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 75 ShipToMasterList \N \n\n Ship-To Master List\n ShipToMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT cust_number, cust_name\n FROM custinfo\nWHERE (cust_id=<? value("cust_id") ?>);\n \n \n \n detail\n SELECT shipto_num AS num,\n shipto_name AS name,\n addr_line1 AS address,\n (addr_city || ', ' || addr_state || ' ' || addr_postalcode) AS citystatezip\n FROM shiptoinfo\n LEFT OUTER JOIN addr ON (shipto_addr_id=addr_id)\n WHERE (shipto_cust_id=<? value("cust_id") ?>) \nORDER BY shipto_num;\n \n \n 171\n \n 5\n 165\n 745\n 165\n 2\n \n \n \n \n 135\n 70\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_number\n \n \n \n \n 135\n 90\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_name\n \n \n \n \n \n \n \n \n \n \n 6\n \n \n 21\n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 5\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n num\n \n \n \n \n 270\n 0\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n address\n \n \n \n \n 545\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n citystatezip\n \n \n \n \n 65\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n name\n \n \n \n
\n \n 16\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 105\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 416 ShipmentsPending \N \n\n Shipments Pending\n ShipmentsPending\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse;\n\n \n \n detail\n maintainShipping\n detail\n \n \n 221\n \n \n \n \n \n \n \n \n 140\n 70\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n \n \n 5\n \n \n 41\n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 33\n \n \n 240\n 0\n 140\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n dest\n \n \n \n \n 520\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_shipqty\n \n \n \n 5\n 28\n 745\n 28\n 0\n \n \n \n 5\n 0\n 95\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shiphead_number\n \n \n \n \n 600\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_shipvalue\n \n \n \n \n 160\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n linenumber\n \n \n \n \n 105\n 0\n 45\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ordertype\n \n \n \n \n 390\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shiphead_shipvia\n \n \n \n \n 240\n 13\n 455\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n description\n \n \n \n \n 480\n 0\n 30\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n
\n \n 15\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 100\n \n \n 600\n 10\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shipvalue\n \n cost\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 266 ShippingLabelsByInvoice \N \n\n Shipping Labels By Invoice\n ShippingLabelsByInvoice\n \n Avery 5263\n Labels\n \n 100\n 100\n 100\n 100\n \n detail\n SELECT sequence_value,\n invchead_invcnumber,\n cust_number,\n invchead_ordernumber,\n invchead_ponumber,\n invchead_shipto_name,\n invchead_shipto_address1,\n invchead_shipto_address2,\n invchead_shipto_address3,\n (COALESCE(invchead_shipto_city,'') || ' ' || COALESCE(invchead_shipto_state,'') || ' ' || COALESCE(invchead_shipto_zipcode,'')) AS citystatezip\n FROM invchead, custinfo, sequence\n WHERE ( (invchead_cust_id=cust_id)\n AND (sequence_value BETWEEN <? value("labelFrom") ?> AND <? value("labelTo") ?>)\n AND (invchead_id=<? value("invchead_id") ?>) );\n \n \n
\n detail\n \n \n detail\n \n 201\n \n \n 100\n 125\n 155\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n cust_number\n \n \n \n \n \n \n \n 100\n 140\n 155\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n invchead_invcnumber\n \n \n \n \n 285\n 180\n 36\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n sequence_value\n \n \n \n \n 30\n 85\n 285\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n citystatezip\n \n \n \n \n 30\n 40\n 285\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n invchead_shipto_address1\n \n \n \n \n 340\n 180\n 36\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n Parameter Query\n labelTo\n \n \n \n \n \n 30\n 25\n 285\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n invchead_shipto_name\n \n \n \n \n 30\n 70\n 285\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n invchead_shipto_address3\n \n \n \n \n 30\n 55\n 285\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n invchead_shipto_address2\n \n \n \n \n 100\n 155\n 155\n 17\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n invchead_ponumber\n \n \n \n
\n
\n \N 0 2013-07-26 16:17:54.38447 267 ShippingLabelsBySo \N \n\n Shippinig Labels By S/O\n ShippingLabelsBySo\n \n Letter\n \n 100\n 100\n 100\n 100\n \n detail\n SELECT sequence_value, \n cust_number, \n cohead_number, \n \nformataddr(cohead_shiptoaddress1, cohead_shiptoaddress2, cohead_shiptoaddress3, (cohead_shiptocity || ' ' || cohead_shiptostate || ' ' || cohead_shiptozipcode), cohead_shiptocountry) AS shipping_address, \n \n \n cohead_custponumber, \n cohead_shiptoname, \n cohead_shiptoaddress1, \n cohead_shiptoaddress2, \n cohead_shiptoaddress3, \n (COALESCE(cohead_shiptocity,'') || ' ' || COALESCE(cohead_shiptostate,'') || ' ' || COALESCE(cohead_shiptozipcode,'')) AS citystatezip \nFROM cohead, custinfo, sequence \nWHERE ( (cohead_cust_id=cust_id) \n AND (sequence_value BETWEEN <? value("labelFrom") ?> AND <? value("labelTo") ?>) \n AND (cohead_id=<? value("sohead_id") ?>) ) \nLIMIT <? value("labelTo") ?>; \n \n \n
\n detail\n \n \n detail\n \n 494\n \n \n \n 725\n 9\n 155\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n cust_number\n \n \n \n \n 800\n 445\n 36\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n Parameter Query\n labelTo\n \n \n \n \n 15\n 119\n 880\n 55\n \n 0\n \n Arial\n 36\n bold\n \n \n \n \n detail\n shipping_address\n \n \n \n \n 9\n 65\n 884\n 50\n \n \n Arial\n 36\n bold\n \n \n \n \n detail\n cohead_shiptoname\n \n \n \n \n 725\n 40\n 155\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n cohead_custponumber\n \n \n \n \n \n 725\n 25\n 155\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n cohead_number\n \n \n \n \n 735\n 445\n 36\n 16\n \n \n Arial\n 10\n normal\n \n \n \n \n detail\n sequence_value\n \n \n \n \n \n
\n
\n \N 0 2013-07-26 16:17:54.38447 73 ShippingZonesMasterList \N \n\n Shipping Zones Master List\n ShippingZonesMasterList\n \n \n 850\n 1100\n \n \n 50\n 50\n 50\n 50\n \n detail\n select shipzone_name, shipzone_descrip\n from shipzone\norder by shipzone_name;\n \n \n 76\n \n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n 6\n \n \n 21\n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shipzone_name\n \n \n \n \n 175\n 0\n 565\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shipzone_descrip\n \n \n \n
\n \n 16\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 49 SingleLevelBOM \N \n\n Single Level Bill of Materials\n SingleLevelBOM\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number, uom_name AS item_invuom, item_descrip1, item_descrip2\nFROM item, uom\nWHERE ((item_id=<? value("item_id") ?>)\nAND (item_inv_uom_id=uom_id));\n \n \n \n detail\n SELECT bomitem_seqnumber, item_number,\n invuom.uom_name AS invuomname, issueuom.uom_name AS issueuomname,\n item_descrip1, item_descrip2,\n formatBoolYN(bomitem_createwo) AS createchild,\n CASE WHEN (bomitem_issuemethod='S') THEN 'Push'\n WHEN (bomitem_issuemethod='L') THEN 'Pull'\n WHEN (bomitem_issuemethod='M') THEN 'Mixed'\n ELSE 'Special'\n END AS issuemethod,\n formatQty(bomitem_qtyfxd) AS issueqtyfxd,\n formatQty(itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, bomitem_qtyfxd)) AS invqtyfxd,\n formatQtyPer(bomitem_qtyper) AS issueqtyper,\n formatQtyPer(itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, bomitem_qtyper)) AS invqtyper,\n formatScrap(bomitem_scrap) AS scrap,\n formatQtyPer((bomitem_qtyfxd + bomitem_qtyper) * (1 + bomitem_scrap)) AS qtyreq,\n formatDate(bomitem_effective, <? value("always") ?>) AS effective,\n formatDate(bomitem_expires, <? value("never") ?>) AS expires,\n bomitem_ecn\n<? if exists("revision_id") ?>\n FROM bomitem(<? value("item_id") ?>,<? value("revision_id") ?>)\n<? else ?>\n FROM bomitem(<? value("item_id") ?>)\n<? endif ?>\n, item, uom AS issueuom, uom AS invuom\nWHERE ((bomitem_item_id=item_id)\nAND (item_inv_uom_id=invuom.uom_id)\nAND (bomitem_uom_id=issueuom.uom_id)\n<? if exists("expiredDays") ?>\n AND (bomitem_expires > (CURRENT_DATE - <? value("expiredDays") ?>))\n<? else ?>\n AND (bomitem_expires > CURRENT_DATE)\n<? endif ?>\n\n<? if exists("effectiveDays") ?>\n AND (bomitem_effective <= (CURRENT_DATE + <? value("effectiveDays") ?>))\n<? else ?>\n AND (bomitem_effective <= CURRENT_DATE)\n<? endif ?>\n\n)\nORDER BY bomitem_seqnumber, bomitem_effective;\n\n \n \n bomhead\n SELECT bomhead_docnum, bomhead_revision,\n formatDate(bomhead_revisiondate) AS f_revisiondate\nFROM bomhead\nWHERE ((bomhead_item_id=<? value("item_id") ?>)\n<? if exists("revision_id") ?>\nAND (bomhead_rev_id=<? value("revision_id") ?>)\n<? else ?>\nAND (bomhead_rev_id=getActiveRevId('BOM',<? value("item_id") ?>))\n<? endif ?>\n);\n \n \n 208\n \n \n \n \n 120\n 110\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n \n \n \n 482\n 130\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n bomhead_revision\n \n \n \n \n \n \n \n \n \n \n 120\n 90\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n \n \n 482\n 110\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n f_revisiondate\n \n \n \n \n 482\n 90\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n bomhead_docnum\n \n \n \n \n \n \n 120\n 130\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n 5\n 202\n 745\n 202\n 2\n \n \n \n \n \n \n \n \n 7\n \n \n 37\n \n \n \n \n \n \n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 57\n \n \n 405\n 18\n 37\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invuomname\n \n \n \n \n 675\n 18\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n issuemethod\n \n \n \n \n 675\n 3\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n expires\n \n \n \n \n 440\n 3\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n scrap\n \n \n \n \n 15\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n bomitem_seqnumber\n \n \n \n \n 315\n 33\n 227\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 315\n 18\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invqtyper\n \n \n \n \n 70\n 0\n 115\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 600\n 3\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n effective\n \n \n \n \n 455\n 18\n 135\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n bomitem_ecn\n \n \n \n \n 525\n 3\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyreq\n \n \n \n \n 600\n 18\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n createchild\n \n \n \n \n 70\n 33\n 227\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 315\n 3\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n issueqtyper\n \n \n \n \n 405\n 3\n 37\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n issueuomname\n \n \n \n \n 235\n 3\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n issueqtyfxd\n \n \n \n \n 235\n 18\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invqtyfxd\n \n \n \n
\n \n 21\n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 52 SingleLevelWhereUsed \N \n\n Single Level Where Used\n SingleLevelWhereUsed\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n uom_name,\n item_descrip1,\n item_descrip2,\n <? if exists("effective") ?>\n formatDate(<? value("effective") ?>)\n <? else ?>\n text('Now')\n <? endif ?>\n AS effective\n FROM item JOIN uom ON (item_inv_uom_id=uom_id)\n WHERE (item_id=<? value("item_id") ?>);\n \n \n \n detail\n whereUsed\n detail\n \n \n 241\n \n \n \n \n 5\n 235\n 745\n 235\n 2\n \n \n \n 114\n 140\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n \n \n \n \n \n \n 450\n 120\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n effective\n \n \n \n \n 114\n 160\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n \n 114\n 120\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n \n 450\n 138\n 185\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n uom_name\n \n \n \n \n \n \n \n 6\n \n \n 41\n \n \n \n \n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 56\n \n \n 444\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_scrap\n \n \n \n \n 75\n 15\n 229\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 75\n 30\n 229\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 404\n 0\n 38\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n \n 675\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_issuemethod\n \n \n \n \n 675\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_expires\n \n \n \n \n 75\n 0\n 229\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n 4\n 50\n 745\n 50\n 0\n \n \n \n 5\n 0\n 65\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n bomitem_seqnumber\n \n \n \n \n 525\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyreq\n \n \n \n \n 600\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_createwo\n \n \n \n \n 315\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyper\n \n \n \n \n 600\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_effective\n \n \n \n \n 315\n 17\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyfxd\n \n \n \n
\n \n 16\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 424 SiteTypesMasterList \N \n\n Site Types Master List\n SiteTypesMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n select sitetype_name, sitetype_descrip\n from sitetype\norder by sitetype_name;\n \n \n 76\n \n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n 6\n \n \n 21\n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n sitetype_name\n \n \n \n \n 175\n 0\n 565\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n sitetype_descrip\n \n \n \n
\n \n 16\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 175 SlowMovingInventoryByClassCode \N \n\n Slow Moving Inventory By Class Code\n SlowMovingInventoryByClassCode\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?>\n (SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("classcode_id") ?>\n (SELECT (classcode_code || '-' || classcode_descrip)\n FROM classcode\n WHERE (classcode_id=<? value("classcode_id") ?>) )\n <? elseif exists("classcode_pattern") ?>\n text(<? value("classcode_pattern") ?>)\n <? else ?>\n text('All Class Codes')\n <? endif ?>\n AS classcode,\n <? if exists("showValue") ?>\n <? if exists("useActualCosts") ?>\n text('Show Inventory Value with Actual Costs')\n <? else ?>\n text('Show Inventory Value with Standard Costs')\n <? endif ?>\n AS showvalues,\n text('Unit Cost') AS f_unitcost,\n text('Value') AS f_value,\n <? else ?>\n text('') AS showvalues,\n text('') AS f_unitcost,\n text('') AS f_value,\n <? endif ?>\n formatDate(<? value("cutoffDate") ?>) AS f_cutoff;\n \n \n detail\n SELECT warehous_code,\n item_number,\n item_descrip1,\n item_descrip2,\n uom_name,\n formatQty(itemsite_qtyonhand) AS f_qoh,\n formatDate(itemsite_datelastused) AS f_datelastused,\n <? if exists("showValue") ?>\n formatCost(cost)\n <? else ?>\n text('')\n <? endif ?>\n AS f_unitcost,\n noNeg(cost * itemsite_qtyonhand) AS value,\n <? if exists("showValue") ?>\n formatExtPrice(noNeg(cost * itemsite_qtyonhand))\n <? else ?>\n text('')\n <? endif ?>\n AS f_value\n FROM ( SELECT itemsite_id,\n warehous_code,\n item_number,\n item_descrip1,\n item_descrip2, uom_name,\n itemsite_qtyonhand,\n itemsite_datelastused,\n <? if exists("useActualCosts") ?>\n actcost(itemsite_item_id)\n <? else ?>\n stdcost(itemsite_item_id)\n <? endif ?>\n AS cost\n FROM itemsite, item, whsinfo, uom\n WHERE ((itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_active)\n AND (itemsite_datelastused < <? value("cutoffDate") ?>)\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("classcode_id") ?>\n AND (item_classcode_id=<? value("classcode_id") ?>)\n<? elseif exists("classcode_pattern") ?>\n AND (item_classcode_id IN (SELECT classcode_id\n FROM classcode\n WHERE classcode_code ~ <? value("classcode_pattern") ?>) )\n<? endif ?>\n )\n ) AS data\nORDER BY warehous_code,\n<? if exists("orderByInventoryValue") ?>\n value DESC\n<? elseif exists("orderByDateLastUsed") ?>\n itemsite_datelastused\n<? else ?>\n item_number\n<? endif ?>\n \n \n 236\n \n \n 575\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_unitcost\n \n \n \n \n 130\n 140\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n 5\n 229\n 745\n 229\n 2\n \n \n \n \n \n \n \n \n \n 440\n 140\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n showvalues\n \n \n \n \n \n \n 660\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_value\n \n \n \n \n \n \n 130\n 120\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n classcode\n \n \n \n \n 540\n 120\n 195\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_cutoff\n \n \n \n \n \n 6\n \n \n 41\n \n \n 5\n 35\n 745\n 34\n 2\n \n \n \n \n \n \n 660\n 5\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_value\n \n \n \n \n \n 575\n 5\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_unitcost\n \n \n \n \n
\n detail\n \n \n detail\n \n 51\n \n \n 380\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_datelastused\n \n \n \n \n 105\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 660\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_value\n \n \n \n \n 105\n 15\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 25\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 490\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qoh\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 105\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 265\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n \n 575\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_unitcost\n \n \n \n
\n \n 16\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 16\n \n
\n \N 0 2013-07-26 16:17:54.38447 248 StandardJournalGroupMasterList \N \n\n Standard Journal Group Master List\n StandardJournalGroupMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT stdjrnlgrp_id,\n stdjrnlgrp_name,\n stdjrnlgrp_descrip\n FROM stdjrnlgrp\nORDER BY stdjrnlgrp_name;\n \n \n 77\n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n 7\n \n \n 22\n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 220\n 0\n 500\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n stdjrnlgrp_descrip\n \n \n \n \n 10\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n stdjrnlgrp_name\n \n \n \n
\n \n 17\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 282 StandardJournalHistory \N \n\n Standard Journal History\n StandardJournalHistory\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("source") ?>\n text(<? value("source") ?>)\n <? else ?>\n text('All Sources')\n <? endif ?>\n AS source,\n <? if exists("startJrnlnum") ?>\n text('Start Journal Number:')\n <? else ?>\n text('')\n <? endif ?>\n AS startJrnlnumLit,\n <? if exists("endJrnlnum") ?>\n text('End Journal Number:')\n <? else ?>\n text('')\n <? endif ?>\n AS endJrnlnumLit;\n \n \n detail\n SELECT formatDate(gltrans_date) AS transdate,\n gltrans_journalnumber,\n gltrans_docnumber,\n (formatGLAccount(accnt_id) || ' - ' || accnt_descrip) AS account,\n CASE WHEN (gltrans_amount < 0) THEN formatMoney(gltrans_amount * -1)\n ELSE ''\n END AS f_debit,\n CASE WHEN (gltrans_amount > 0) THEN formatMoney(gltrans_amount)\n ELSE ''\n END AS f_credit,\n formatBoolYN(gltrans_posted) AS f_posted\n FROM gltrans, accnt\n WHERE ( (gltrans_accnt_id=accnt_id)\n AND (NOT gltrans_deleted)\n AND (gltrans_date BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n AND (gltrans_doctype='ST') )\nORDER BY gltrans_date, gltrans_sequence, gltrans_docnumber, gltrans_amount;\n \n \n 162\n \n \n \n \n 200\n 65\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n \n 200\n 85\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n 5\n 155\n 745\n 155\n 2\n \n \n \n \n \n \n \n 6\n \n \n 21\n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n \n \n \n
\n detail\n \n JournalSeries\n gltrans_journalnumber\n \n 16\n \n \n 680\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_posted\n \n \n \n \n 10\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n transdate\n \n \n \n \n 100\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_journalnumber\n \n \n \n \n \n JournalName\n gltrans_docnumber\n \n 16\n \n \n 190\n 0\n 130\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_docnumber\n \n \n \n \n \n \n detail\n \n 17\n \n \n 595\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_credit\n \n \n \n \n 330\n 0\n 175\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n account\n \n \n \n \n 509\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_debit\n \n \n \n
\n \n 18\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 249 StandardJournalMasterList \N \n\n Standard Journal Master List\n StandardJournalMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT stdjrnl_id,\n stdjrnl_name,\n stdjrnl_descrip\n FROM stdjrnl\nORDER BY stdjrnl_name;\n \n \n 76\n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n 6\n \n \n 21\n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 220\n 0\n 500\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n stdjrnl_descrip\n \n \n \n \n 10\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n stdjrnl_name\n \n \n \n
\n \n 16\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 274 SubAccountTypeMasterList \N \n\n Subaccount Type Master List\n SubAccountTypeMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT subaccnttype_code, subaccnttype_descrip,\n CASE WHEN(subaccnttype_accnt_type='A') THEN text('Asset')\n WHEN(subaccnttype_accnt_type='L') THEN text('Liability')\n WHEN(subaccnttype_accnt_type='E') THEN text('Expense')\n WHEN(subaccnttype_accnt_type='R') THEN text('Revenue')\n WHEN(subaccnttype_accnt_type='Q') THEN text('Equity')\n ELSE text('ERROR')\n END AS f_type\n FROM subaccnttype\nORDER BY subaccnttype_code;\n \n \n 76\n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n 6\n \n \n 21\n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 240\n 0\n 500\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n subaccnttype_descrip\n \n \n \n \n 120\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_type\n \n \n \n \n 10\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n subaccnttype_code\n \n \n \n
\n \n 16\n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 261 Statement \N \n\n Statement\n Statement\n "As of" date included\n \n \n \n 0.05\n 0.05\n \n Letter\n \n 100\n 100\n 100\n 100\n \n detail\n SELECT CASE WHEN (araging_doctype = 'I') THEN <? value("invoice") ?>\n WHEN (araging_doctype = 'D') THEN <? value("debit") ?>\n WHEN (araging_doctype = 'C') THEN <? value("credit") ?>\n WHEN (araging_doctype = 'R') THEN <? value("deposit") ?>\n ELSE 'Misc.'\n END AS doctype,\n araging_docnumber AS f_docnumber,\n formatDate(CAST(araging_docdate AS DATE)) AS f_docdate,\n CASE WHEN (araging_doctype IN ('I','C','D')) THEN formatDate(araging_duedate)\n ELSE ''\n END AS f_duedate,\n formatMoney(araging_aropen_amount) AS f_amount,\n formatMoney(araging_aropen_amount - araging_total_val) AS f_applied,\n formatMoney(araging_total_val) AS f_balance\nFROM araging(<? value("asofdate") ?>, true, false)\nWHERE ((araging_cust_id = <? value("cust_id") ?>)\n AND (abs(araging_aropen_amount) > 0)\n )\nORDER BY araging_duedate;\n \n \n head\n SELECT cust_name, addr_line1 AS cust_address1, addr_line2 AS cust_address2, addr_line3 AS cust_address3,\n (addr_city || ' ' || addr_state || ' ' || addr_postalcode) AS citystatezip,\n formatDate(COALESCE(<? value("asofdate") ?>, current_date)) AS asofdate\nFROM custinfo\nLEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id)\nLEFT OUTER JOIN addr ON (cntct_addr_id=addr_id)\nWHERE (cust_id = <? value("cust_id") ?>);\n \n \n Currency\n SELECT currconcat(cust_curr_id) AS currAbbr\n FROM custinfo\n WHERE (cust_id=<? value("cust_id") ?>)\n\n \n \n foot\n SELECT formatMoney(SUM(araging_cur_val)) AS f_current,\n formatMoney(SUM(araging_thirty_val)) AS f_thirty,\n formatMoney(SUM(araging_sixty_val)) AS f_sixty,\n formatMoney(SUM(araging_ninety_val)) AS f_ninety,\n formatMoney(SUM(araging_plus_val)) AS f_plus,\n formatMoney(SUM(araging_total_val)) AS f_total\nFROM araging(<? value("asofdate") ?>, true, false)\nWHERE ((abs(araging_aropen_amount) > 0)\n AND (araging_cust_id = <? value("cust_id") ?>));\n \n \n 277\n \n 475\n 245\n 475\n 270\n 0\n \n \n \n 25\n 190\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n citystatezip\n \n \n \n \n \n 10\n 245\n 10\n 270\n 0\n \n \n \n \n 445\n 40\n 445\n 75\n 0\n \n \n \n 395\n 245\n 395\n 270\n 0\n \n \n 445\n 75\n 585\n 75\n 0\n \n \n 310\n 245\n 310\n 270\n 0\n \n \n 123.972\n 244.219\n 123.972\n 269.461\n 0\n \n \n \n \n 25\n 150\n 300\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_address1\n \n \n \n \n 25\n 165\n 300\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_address2\n \n \n \n \n 10\n 244.541\n 640\n 244.541\n 0\n \n \n \n 25\n 135\n 300\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_name\n \n \n \n 210\n 245.459\n 210\n 270.459\n 0\n \n \n \n 475\n 60\n 90\n 15\n \n \n Arial\n 12\n normal\n \n \n \n \n Context Query\n report_date\n \n \n \n 640\n 245\n 640\n 270\n 0\n \n \n \n 25\n 180\n 300\n 15\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cust_address3\n \n \n \n \n 545\n 245\n 545\n 270\n 0\n \n \n \n 585\n 40\n 585\n 75\n 0\n \n \n 445\n 40\n 585\n 40\n 0\n \n \n 10\n 270\n 640\n 270\n 0\n \n \n 445\n 55\n 585\n 55\n 0\n \n \n \n \n 105\n 50\n 100\n 15\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n asofdate\n \n \n \n
\n detail\n \n unnamed\n \n \n \n \n detail\n \n 16\n \n \n 20\n 0\n 100\n 15\n \n \n Arial\n 12\n normal\n \n \n \n \n detail\n doctype\n \n \n \n \n 395\n 0\n 80\n 15\n \n \n Arial\n 11\n normal\n \n \n \n \n detail\n f_amount\n \n \n \n \n 130\n 0\n 75\n 15\n \n \n Arial\n 11\n normal\n \n \n \n \n detail\n f_docnumber\n \n \n \n \n 480\n 0\n 75\n 15\n \n \n Arial\n 11\n normal\n \n \n \n \n detail\n f_applied\n \n \n \n \n 315\n 0\n 75\n 15\n \n \n Arial\n 11\n normal\n \n \n \n \n detail\n f_duedate\n \n \n \n \n 215\n 0\n 90\n 15\n \n \n Arial\n 11\n normal\n \n \n \n \n detail\n f_docdate\n \n \n \n \n 560\n 0\n 80\n 15\n \n \n Arial\n 11\n normal\n \n \n \n \n detail\n f_balance\n \n \n \n
\n \n \n 111\n \n 190\n 5\n 190\n 35\n 0\n \n \n 10\n 5\n 10\n 35\n 0\n \n \n \n 100\n 5\n 100\n 35\n 0\n \n \n 365\n 5\n 365\n 35\n 0\n \n \n \n \n \n 190\n 15\n 85\n 20\n \n \n Arial\n 11\n normal\n \n \n \n \n foot\n f_sixty\n \n \n \n \n 365\n 15\n 85\n 20\n \n \n Arial\n 11\n normal\n \n \n \n \n foot\n f_plus\n \n \n \n \n 100\n 15\n 85\n 20\n \n \n Arial\n 11\n normal\n \n \n \n \n foot\n f_thirty\n \n \n \n 10\n 35\n 640\n 35\n 0\n \n \n \n 10\n 15\n 85\n 20\n \n \n Arial\n 11\n normal\n \n \n \n \n foot\n f_current\n \n \n \n 640\n 5\n 640\n 35\n 0\n \n \n \n \n 280\n 5\n 280\n 35\n 0\n \n \n \n \n \n 280\n 15\n 80\n 20\n \n \n Arial\n 11\n normal\n \n \n \n \n foot\n f_ninety\n \n \n \n 455\n 5\n 455\n 35\n 0\n \n \n \n 100\n 45\n 67\n 15\n \n \n Arial\n 11\n normal\n \n \n \n \n Currency\n currAbbr\n \n \n \n 10\n 5\n 640\n 5\n 0\n \n \n \n 544\n 15\n 85\n 20\n \n \n Arial\n 11\n normal\n \n \n \n \n foot\n f_total\n \n \n \n
\n "As of" date included 0 2013-07-26 16:17:54.38447 19 SubstituteAvailabilityByRootItem \N \n\n Substitue Availability By Root Item\n SubstituteAvailabilityByRootItem\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n item_descrip1,\n item_descrip2,\n <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse\n FROM item\n WHERE (item_id=<? value("item_id") ?>);\n \n \n detail\n SELECT warehous_code,\n item_number,\n item_descrip1,\n item_descrip2,\n formatQty(sub.itemsite_qtyonhand) AS f_qtyonhand,\n formatQty(CASE WHEN(sub.itemsite_useparams) THEN sub.itemsite_reorderlevel ELSE 0.0 END) AS f_reorderlevel,\n sub.itemsite_leadtime as leadtime,\n<? if exists("byDays") ?>\n formatQty(qtyAllocated(sub.itemsite_id, <? value("byDays") ?>)) AS f_allocated,\n formatQty(qtyOrdered(sub.itemsite_id, <? value("byDays") ?>)) AS f_ordered,\n formatQty(sub.itemsite_qtyonhand + qtyOrdered(sub.itemsite_id, <? value("byDays") ?>) - qtyAllocated(sub.itemsite_id, <? value("byDays") ?>)) as f_avail\n<? elseif exists("byDate") ?>\n formatQty(qtyAllocated(sub.itemsite_id, (<? value("byDate") ?> - CURRENT_DATE))) AS f_allocated,\n formatQty(qtyOrdered(sub.itemsite_id, (<? value("byDate") ?> - CURRENT_DATE))) AS f_ordered,\n formatQty(sub.itemsite_qtyonhand + qtyOrdered(sub.itemsite_id, (<? value("byDate") ?> - CURRENT_DATE)) - qtyAllocated(sub.itemsite_id, (<? value("byDate") ?> - CURRENT_DATE))) as f_avail\n<? else ?>\n formatQty(qtyAllocated(sub.itemsite_id, sub.itemsite_leadtime)) AS f_allocated,\n formatQty(qtyOrdered(sub.itemsite_id, sub.itemsite_leadtime)) AS f_ordered,\n formatQty(sub.itemsite_qtyonhand + qtyOrdered(sub.itemsite_id, sub.itemsite_leadtime) - qtyAllocated(sub.itemsite_id, sub.itemsite_leadtime)) as f_avail\n<? endif ?>\n FROM item, itemsite AS sub, itemsite AS root, whsinfo, itemsub\n WHERE ((sub.itemsite_item_id=item_id)\n AND (root.itemsite_item_id=itemsub_parent_item_id)\n AND (sub.itemsite_item_id=itemsub_sub_item_id)\n AND (root.itemsite_warehous_id=sub.itemsite_warehous_id)\n AND (sub.itemsite_warehous_id=warehous_id)\n AND (root.itemsite_item_id=<? value("item_id") ?>)\n<? if exists("warehous_id") ?>\n AND (root.itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n)\nORDER BY itemsub_rank;\n \n \n 221\n \n \n 140\n 140\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n \n 140\n 100\n 385\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n 140\n 120\n 385\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n 140\n 80\n 385\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n \n \n \n \n \n \n \n 6\n \n \n 41\n \n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 56\n \n \n 65\n 30\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 65\n 15\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 10\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 330\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyonhand\n \n \n \n \n 10\n 15\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n leadtime\n \n \n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_avail\n \n \n \n \n 540\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ordered\n \n \n \n \n 540\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_reorderlevel\n \n \n \n \n 434\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_allocated\n \n \n \n \n 65\n 0\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n 5\n 50\n 745\n 50\n 0\n \n \n
\n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 220 SummarizedBOM \N \n\n Summarized Bill of Materials\n SummarizedBOM\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n uom_name AS item_invuom,\n item_descrip1,\n item_descrip2\n FROM item, uom\n WHERE ((item_id=<? value("item_id") ?>)\n AND (item_inv_uom_id=uom_id));\n \n \n \n detail\n select bomdata_item_number AS item_number,\n bomdata_uom_name AS item_invuom,\n bomdata_item_descrip1 AS item_descrip1,\n bomdata_item_descrip2 AS item_descrip2,\n formatQtyPer(bomdata_qtyreq) AS qtyreq\n FROM summarizedBOM(<? value("item_id") ?>,<? value("revision_id") ?>,<? value("expiredDays") ?>,<? value("futureDays") ?>)\n\n\n \n \n bomhead\n SELECT bomhead_docnum, bomhead_revision,\nformatDate(bomhead_revisiondate) AS f_revisiondate\nFROM bomhead\nWHERE ((bomhead_item_id=<? value("item_id") ?>)\nAND (bomhead_rev_id=<? value("revision_id") ?>));\n \n \n 242\n \n \n 315\n 103\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_invuom\n \n \n \n \n 585\n 103\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n bomhead_docnum\n \n \n \n \n \n \n 100\n 145\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n 5\n 235\n 745\n 235\n 2\n \n \n \n \n 100\n 103\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n 100\n 125\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n \n \n \n \n \n 585\n 145\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n bomhead_revision\n \n \n \n \n \n 585\n 125\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n bomhead\n f_revisiondate\n \n \n \n \n \n 6\n \n \n 36\n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 52\n \n \n 112\n 15\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 112\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 112\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 275\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_invuom\n \n \n \n \n 425\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyreq\n \n \n \n
\n \n 17\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 65 SummarizedBacklogByWarehouse \N \n\n Summarized Backlog By Site\n SummarizedBacklogByWarehouse\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("custtype_id") ?>\n ( SELECT (custtype_code||'-'||custtype_descrip)\n FROM custtype\n WHERE (custtype_id=<? value("custtype_id") ?>) )\n <? elseif exists("custtype_pattern") ?>\n text(<? value("custtype_pattern") ?>)\n <? else ?>\n text('All Customer Types')\n <? endif ?>\n AS custtype,\n <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("showPrices") ?>\n text('Sales') AS lbl_sales,\n text('Cost') AS lbl_cost,\n text('Margin') AS lbl_margin,\n text('Totals:') AS lbl_totals,\n <? else ?>\n text('') AS lbl_sales,\n text('') AS lbl_cost,\n text('') AS lbl_margin,\n text('') AS lbl_totals,\n <? endif ?>\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate;\n \n \n detail\n SELECT CASE WHEN (cohead_holdtype='P') THEN -1\n ELSE cohead_id\n END AS _coheadid, cohead_id,\n cohead_holdtype, cohead_number, cust_name,\n CASE WHEN (cohead_holdtype='N') THEN <? value("none") ?>\n WHEN (cohead_holdtype='C') THEN <? value("credit") ?>\n WHEN (cohead_holdtype='S') THEN <? value("ship") ?>\n WHEN (cohead_holdtype='P') THEN <? value("pack") ?>\n WHEN (cohead_holdtype='R') THEN <? value("return") ?>\n ELSE <? value("Other") ?>\n END AS f_holdtype,\n formatDate(cohead_orderdate) AS f_orderdate,\n formatDate(MIN(coitem_scheddate)) AS f_scheddate,\n formatDate(cohead_packdate) AS f_packdate,\n <? if exists("showPrices") ?>\n formatMoney( SUM( round((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) *\n (coitem_price / coitem_price_invuomratio),2) ) )\n <? else ?>\n text('')\n <? endif ?>\n AS f_sales,\n <? if exists("showPrices") ?>\n formatCost(SUM((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) * stdcost(item_id) ) )\n <? else ?>\n text('')\n <? endif ?>\n AS f_cost,\n <? if exists("showPrices") ?>\n formatMoney( SUM( (noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) *\n ((coitem_price / coitem_price_invuomratio) - stdcost(item_id)) ) )\n <? else ?>\n text('')\n <? endif ?>\n AS f_margin,\n SUM( round( (noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) *\n (coitem_price / coitem_price_invuomratio),2) ) AS sales,\n SUM((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) * stdcost(item_id) ) AS cost,\n SUM((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) *\n ((coitem_price / coitem_price_invuomratio) - stdcost(item_id)) ) AS margin,\n MIN(coitem_scheddate) AS scheddate,\n formatShipmentNumber(shiphead_id) AS shiphead_number,\n CASE WHEN (shiphead_shipped IS NULL) THEN text('')\n WHEN (shiphead_shipped) THEN text('Yes')\n WHEN (NOT shiphead_shipped) THEN text('No')\n END AS shipstatus,\n COALESCE(shiphead_shipvia, '') AS shipvia,\n CASE WHEN (shiphead_shipdate IS NULL) THEN text('')\n ELSE formatDate(shiphead_shipdate)\n END AS shipdate\n FROM coitem, itemsite, item, custinfo,\n cohead LEFT OUTER JOIN shiphead ON (shiphead_order_id=cohead_id AND shiphead_order_type='SO') \n WHERE ( (coitem_cohead_id=cohead_id)\n AND (cohead_cust_id=cust_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (coitem_status NOT IN ('C','X'))\n AND (coitem_scheddate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n<? if exists("custtype_id") ?>\n AND (cust_custtype_id=<? value("custtype_id") ?>)\n<? elseif exists("custtype_pattern") ?>\n AND (cust_custtype_id IN (SELECT custtype_id\n FROM custtype\n WHERE (custtype_code ~ <? value("custtype_pattern") ?>)))\n<? endif ?>\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n)\nGROUP BY cohead_id, cohead_number, cust_name, cohead_holdtype,\n cohead_orderdate, cohead_packdate, shiphead_shipped,\n shiphead_shipvia, shiphead_shipdate, shiphead_id\nORDER BY \n<? if exists("orderByShipDate") ?>\n scheddate,\n<? elseif exists("orderByPackDate") ?>\n cohead_packdate,\n<? endif ?>\ncohead_number, shiphead_shipped;\n \n \n totals\n SELECT\n<? if exists("showPrices") ?>\n formatMoney( SUM( sales ) ) AS f_sales,\n formatCost( SUM( cost ) ) AS f_cost,\n formatMoney( SUM( margin ) ) AS f_margin\n FROM (\nSELECT SUM( round((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) *\n (coitem_price / coitem_price_invuomratio),2) ) AS sales,\n SUM((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) * stdcost(item_id) ) AS cost,\n SUM((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) *\n ((coitem_price / coitem_price_invuomratio) - stdcost(item_id)) ) AS margin\n FROM coitem, itemsite, item, custinfo,\n cohead\n WHERE ( (coitem_cohead_id=cohead_id)\n AND (cohead_cust_id=cust_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (coitem_status NOT IN ('C','X'))\n AND (coitem_scheddate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n<? if exists("custtype_id") ?>\n AND (cust_custtype_id=<? value("custtype_id") ?>)\n<? elseif exists("custtype_pattern") ?>\n AND (cust_custtype_id IN (SELECT custtype_id\n FROM custtype\n WHERE (custtype_code ~ <? value("custtype_pattern") ?>)))\n<? endif ?>\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n)\nGROUP BY cohead_id, cohead_number, cust_name, cohead_holdtype,\n cohead_orderdate, cohead_packdate\n) AS data\n<? else ?>\n text('') AS f_sales,\n text('') AS f_cost,\n text('') AS f_margin\n<? endif ?>\n \n \n 206\n \n 5\n 200\n 745\n 200\n 2\n \n \n \n 670\n 170\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_margin\n \n \n \n \n \n \n \n 140\n 104\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n 140\n 85\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n custtype\n \n \n \n \n \n 515\n 85\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n \n 510\n 170\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_sales\n \n \n \n \n \n \n 515\n 104\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n 590\n 170\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_cost\n \n \n \n \n \n \n \n \n \n \n 6\n \n \n 28\n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n \n \n 585\n 5\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_cost\n \n \n \n \n 665\n 5\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_margin\n \n \n \n \n \n 505\n 5\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_sales\n \n \n \n
\n detail\n \n unnamed\n cohead_id\n \n 18\n \n \n 70\n 0\n 145\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_name\n \n \n \n \n 370\n 0\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_scheddate\n \n \n \n \n 510\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_sales\n \n \n \n \n 290\n 0\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_orderdate\n \n \n \n \n 670\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_margin\n \n \n \n \n 5\n 0\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cohead_number\n \n \n \n \n 220\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_holdtype\n \n \n \n \n 590\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_cost\n \n \n \n \n 440\n 0\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_packdate\n \n \n \n \n \n \n detail\n \n 18\n \n \n 220\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shiphead_number\n \n \n \n \n 5\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shipstatus\n \n \n \n \n 70\n 0\n 145\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shipvia\n \n \n \n \n 290\n 0\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n shipdate\n \n \n \n
\n \n 18\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 18\n \n \n 590\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n totals\n f_cost\n \n \n \n \n 407\n 0\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_totals\n \n \n \n \n 510\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n totals\n f_sales\n \n \n \n \n 670\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n totals\n f_margin\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 295 SummarizedBankrecHistory \N \n\n Summarized Bank Reconciliation History\n SummarizedBankrecHistory\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT bankrec_id,\n formatBoolYN(bankrec_posted) AS f_posted,\n formatDate(bankrec_created) AS f_created,\n formatDate(bankrec_postdate) AS f_postdate,\n bankrec_username AS f_username,\n formatDate(bankrec_opendate) AS f_opendate,\n formatDate(bankrec_enddate) AS f_enddate,\n formatMoney(bankrec_openbal) AS f_openbal,\n formatMoney(bankrec_endbal) AS f_endbal\n FROM bankrec\n WHERE (bankrec_bankaccnt_id=<? value("bankaccntid") ?>)\n ORDER BY bankrec_created;\n \n \n head\n SELECT (bankaccnt_name || '-' || bankaccnt_descrip) AS f_bankaccnt\n FROM bankaccnt\n WHERE (bankaccnt_id=<? value("bankaccntid") ?>);\n \n \n 121\n \n \n \n \n \n \n 5\n 115\n 745\n 115\n 2\n \n \n \n 145\n 60\n 220\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_bankaccnt\n \n \n \n \n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 10\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_posted\n \n \n \n \n 96\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_postdate\n \n \n \n \n 370\n 0\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_opendate\n \n \n \n \n 655\n 0\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_endbal\n \n \n \n \n 560\n 0\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_openbal\n \n \n \n \n 180\n 0\n 185\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_username\n \n \n \n \n 465\n 0\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_enddate\n \n \n \n
\n \n 18\n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 250 SummarizedGLTransactions \N \n\n Summarized G/L Transactions\n SummarizedGLTransactions\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("source") ?>\n text(<? value("source") ?>)\n <? else ?>\n text('All Sources')\n <? endif ?>\n AS source,\n <? if exists("showUsernames") ?>\n text('Username')\n <? else ?>\n text('')\n <? endif ?>\n AS f_username;\n \n \n detail\n SELECT data.accnt_id AS accnt_id,\n-- account information\n formatGLAccount(data.accnt_id) AS account,\n accnt_descrip,\n f_debit,\n f_credit,\n-- transactionn details\n formatDate(gltrans_date) AS transdate,\n gltrans_source,\n gltrans_doctype,\n gltrans_docnumber,\n gltrans_notes,\n f_debitdetail,\n f_creditdetail,\n <? if exists("showUsernames") ?>\n gltrans_username\n <? else ?>\n text('')\n <? endif ?>\n AS f_username\n FROM ( SELECT accnt_id,\n accnt_number,\n accnt_profit,\n accnt_sub,\n accnt_descrip,\n formatMoney( SUM( CASE WHEN (gltrans_amount < 0) THEN (gltrans_amount * -1)\n ELSE 0\n END ) ) AS f_debit,\n formatMoney( SUM( CASE WHEN (gltrans_amount > 0) THEN gltrans_amount\n ELSE 0\n END ) ) AS f_credit\n FROM gltrans, accnt\n WHERE ( (gltrans_accnt_id=accnt_id)\n AND (NOT gltrans_deleted)\n AND (gltrans_date BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n <? if exists("source") ?>\n AND (gltrans_source=<? value("source") ?>)\n <? endif ?>\n <? if exists("unpostedTransactions") ?>\n AND (NOT gltrans_posted)\n <? elseif exists("postedTransactions") ?>\n AND (gltrans_posted)\n <? endif ?>\n )\n GROUP BY accnt_id, accnt_number, accnt_profit, accnt_sub, accnt_descrip\n ) AS data LEFT OUTER JOIN\n ( SELECT accnt_id,\n gltrans_date,\n gltrans_created,\n gltrans_source,\n gltrans_doctype,\n gltrans_docnumber,\n gltrans_notes,\n gltrans_username,\n CASE WHEN (gltrans_amount < 0) THEN formatMoney(gltrans_amount * -1)\n ELSE ''\n END AS f_debitdetail,\n CASE WHEN (gltrans_amount > 0) THEN formatMoney(gltrans_amount)\n ELSE ''\n END AS f_creditdetail\n FROM gltrans, accnt\n WHERE ((gltrans_accnt_id=accnt_id)\n AND (NOT gltrans_deleted)\n AND (gltrans_date BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n <? if exists("source") ?>\n AND (gltrans_source=<? value("source") ?>)\n <? endif ?>\n <? if exists("unpostedTransactions") ?>\n AND (NOT gltrans_posted)\n <? elseif exists("postedTransactions") ?>\n AND (gltrans_posted)\n <? endif ?>\n )\n ) AS data2 ON (data.accnt_id=data2.accnt_id)\nORDER BY accnt_number, accnt_profit, accnt_sub, gltrans_date DESC, gltrans_created;\n \n \n 201\n \n \n 5\n 200\n 745\n 200\n 2\n \n \n \n 545\n 90\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n \n 140\n 70\n 290\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n source\n \n \n \n \n \n 665\n 185\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_username\n \n \n \n \n \n \n \n \n 545\n 70\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n \n \n \n 17\n \n \n 28\n \n \n \n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n 665\n 5\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_username\n \n \n \n \n \n
\n detail\n \n detail\n accnt_id\n \n 23\n \n \n 10\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n account\n \n \n \n \n 595\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_credit\n \n \n \n \n 120\n 0\n 305\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n accnt_descrip\n \n \n \n \n 509\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_debit\n \n \n \n \n 14\n \n 112\n 5\n 744\n 5\n 0\n \n \n \n \n \n detail\n \n 24\n \n \n 10\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n transdate\n \n \n \n \n 375\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_doctype\n \n \n \n \n 595\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_creditdetail\n \n \n \n \n 330\n 0\n 36\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_source\n \n \n \n \n 434\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_docnumber\n \n \n \n \n 120\n 0\n 200\n 15\n \n 5\n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_notes\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_username\n \n \n \n \n 509\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_debitdetail\n \n \n \n
\n \n 26\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 448 SummarizedSalesHistory \N \n\n Summarized Sales History\n SummarizedSalesHistory\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n summarizedSalesHistory\n detail\n \n \n 163\n \n \n \n \n 3\n 159\n 743\n 159\n 2\n \n \n \n \n \n \n \n 15\n 40\n 725\n 15\n \n 11\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n \n \n 6\n \n \n 21\n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 605\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n totalsales\n \n extprice\n \n \n \n 540\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n qtyshipped\n \n \n \n \n 405\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n firstdate\n \n \n \n \n 475\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n lastdate\n \n \n \n \n 10\n 0\n 80\n 15\n \n 11\n \n Arial\n 8\n bold\n \n \n \n \n detail\n groupsLit\n \n \n \n \n 100\n 0\n 90\n 15\n \n 11\n \n Arial\n 8\n bold\n \n \n \n \n detail\n groups\n \n \n \n \n 200\n 0\n 190\n 15\n \n 11\n \n Arial\n 8\n bold\n \n \n \n \n detail\n groupsDescrip\n \n \n \n \n 695\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n currAbbr\n \n \n \n
\n \n 17\n \n \n \n 105\n 1\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 1\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 351 TaxAuthoritiesMasterList \N \n\n Tax Authorities Master List\n TaxAuthoritiesMasterList\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n taxAuthorities\n detail\n \n \n 128\n \n 5\n 120\n 745\n 120\n 2\n \n \n \n \n \n \n 10\n 38\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 21\n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n taxauth_code\n \n \n \n \n 175\n 0\n 565\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n taxauth_name\n \n \n \n
\n \n 16\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 352 TaxTypesMasterList \N \n\n Tax Types Master List\n TaxTypesMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n select taxtype_name, taxtype_descrip\n from taxtype\norder by taxtype_name;\n \n \n 76\n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n \n 6\n \n \n 21\n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n
\n detail\n \n \n detail\n \n \n 16\n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n taxtype_name\n \n \n \n \n 175\n 0\n 565\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n taxtype_descrip\n \n \n \n
\n \n 16\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 74 TermsMasterList \N \n\n Terms Master List\n TermsMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n select terms_code, terms_descrip,\n terms_duedays, terms_discdays,\n formatScrap(terms_discprcnt) AS f_discprcnt\n from terms\norder by terms_code;\n \n \n 76\n \n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 495\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n terms_duedays\n \n \n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n terms_discdays\n \n \n \n \n 95\n 0\n 395\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n terms_descrip\n \n \n \n \n 10\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n terms_code\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_discprcnt\n \n \n \n
\n \n 16\n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 136 TimePhasedAvailability \N \n\n Time Phased Availability\n TimePhasedAvailability\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("plancode_id") ?>\n ( SELECT (plancode_code || '-' || plancode_name)\n FROM plancode\n WHERE (plancode_id=<? value("plancode_id") ?>) )\n <? elseif exists("plancode_pattern") ?>\n text(<? value("plancode_pattern") ?>)\n <? else ?>\n text('All Planner Codes')\n <? endif ?>\n AS plncode;\n \n \n detail\n SELECT findPeriodStart(rcalitem_id) AS pstart,\n findPeriodEnd(rcalitem_id) AS pend,\n (formatDate(findPeriodStart(rcalitem_id)) || '-' || formatDate(findPeriodEnd(rcalitem_id))) AS period,\n item_number,\n uom_name AS f_uom,\n warehous_code,\n formatQty(qtyAvailable(itemsite_id, findPeriodStart(rcalitem_id))) AS f_unit\n FROM rcalitem, itemsite, item, uom, whsinfo\n WHERE ((rcalitem_id in (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n ))\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("plancode_id") ?>\n AND (itemsite_plancode_id=<? value("plancode_id") ?>)\n<? elseif exists("plancode_pattern") ?>\n AND (itemsite_plancode_id IN ( SELECT plancode_id\n FROM plancode\n WHERE (plancode_code ~ <? value("plancode_pattern") ?>)))\n<? endif ?>\n )\n UNION\nSELECT findPeriodStart(acalitem_id) AS pstart,\n findPeriodEnd(acalitem_id) AS pend,\n (formatDate(findPeriodStart(acalitem_id)) || '-' || formatDate(findPeriodEnd(acalitem_id))) AS period,\n item_number,\n uom_name AS f_uom,\n warehous_code,\n formatQty(qtyAvailable(itemsite_id, findPeriodStart(acalitem_id))) AS f_unit\n FROM acalitem, itemsite, item, uom, whsinfo\n WHERE ((acalitem_id IN (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n ))\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("plancode_id") ?>\n AND (itemsite_plancode_id=<? value("plancode_id") ?>)\n<? elseif exists("plancode_pattern") ?>\n AND (itemsite_plancode_id IN ( SELECT plancode_id\n FROM plancode\n WHERE (plancode_code ~ <? value("plancode_pattern") ?>)))\n<? endif ?>\n )\nORDER BY pstart, item_number, warehous_code;\n \n \n 221\n \n \n \n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n 140\n 105\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n 140\n 80\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n plncode\n \n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n
\n detail\n \n detail\n pstart\n \n 6\n \n \n 10\n 5\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n period\n \n \n \n \n \n \n detail\n \n 16\n \n \n 660\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_unit\n \n \n \n \n 530\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_uom\n \n \n \n \n 615\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 320\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n
\n \n 16\n \n \n \n 690\n 0\n 51\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 273 TimePhasedPlannedRevenueExpensesByPlannerCode \N \n\n Time Phased Planned Revenue/Expenses By Planner Code\n TimePhasedPlannedRevenueExpensesByPlannerCode\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("plancode_id") ?>\n ( SELECT (plancode_code || '-' || plancode_name)\n FROM plancode\n WHERE (plancode_id=<? value("plancode_id") ?>) )\n <? elseif exists("plancode_pattern") ?>\n text(<? value("plancode_pattern") ?>)\n <? else ?>\n text('All Planner Codes')\n <? endif ?>\n AS plncode;\n \n \n detail\n SELECT (formatDate(calitem_startdate) || '-' || formatDate(calitem_enddate)) AS period,\n formatMoney(COALESCE(cost,0.0)) AS f_cost,\n formatMoney(COALESCE(revenue,0.0)) AS f_revenue,\n formatMoney(COALESCE(revenue,0.0) - COALESCE(cost,0.0)) AS f_profit\n FROM ( SELECT calitem_startdate,\n calitem_enddate,\n SUM(plannedCost(plancode_id, warehous_id,\n <? if exists("actualCost") ?>'A'<? else ?>'S'<? endif ?>\n , calitem_id))\n AS cost,\n <? if exists("averagePrice") ?>\n SUM(plannedRevenue(plancode_id, warehous_id, 'A', calitem_id,\n <? value("startEvalDate") ?>, <? value("endEvalDate") ?>))\n <? else ?>\n SUM(plannedRevenue(plancode_id, warehous_id, 'L', calitem_id))\n <? endif ?>\n AS revenue\n FROM plancode, whsinfo,\n ( SELECT rcalitem_id AS calitem_id,\n findPeriodStart(rcalitem_id) AS calitem_startdate,\n findPeriodEnd(rcalitem_id) AS calitem_enddate\n FROM rcalitem\n WHERE (rcalitem_id in (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n ))\n UNION\n SELECT acalitem_id AS calitem_id,\n findPeriodStart(acalitem_id) AS calitem_startdate,\n findPeriodEnd(acalitem_id) AS calitem_enddate\n FROM acalitem\n WHERE (acalitem_id in (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n ))\n ) AS calitem\n WHERE ((TRUE)\n<? if exists("warehous_id") ?>\n AND (warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("plancode_id") ?>\n AND (plancode_id=<? value("plancode_id") ?>)\n<? elseif exists("plancode_pattern") ?>\n AND (plancode_code ~ <? value("plancode_pattern") ?>)\n<? endif ?>\n )\n GROUP BY calitem_startdate, calitem_enddate\n ) AS data\nORDER BY calitem_startdate\n \n \n 221\n \n \n 140\n 105\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n \n \n \n \n \n 140\n 80\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n plncode\n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n 6\n \n \n 26\n \n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 430\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_cost\n \n \n \n \n 10\n 0\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n period\n \n \n \n \n 640\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_profit\n \n \n \n \n 535\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_revenue\n \n \n \n
\n \n 16\n \n \n 690\n 0\n 51\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 201 TimePhasedProductionByItem \N \n\n Time Phased Production By Item\n TimePhasedProductionByItem\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("plancode_id") ?>\n ( SELECT (plancode_code||'-'||plancode_name)\n FROM plancode\n WHERE plancode_id=<? value("plancode_id") ?>)\n <? elseif exists("plancode_pattern") ?>\n text(<? value("plancode_pattern") ?>)\n <? else ?>\n text('All Planner Codes')\n <? endif ?>\n AS plancode ;\n \n \n detail\n SELECT findPeriodStart(calitem_id) AS pstart,\n findPeriodEnd(calitem_id) AS pend,\n (formatDate(findPeriodStart(calitem_id)) || '-' || formatDate(findPeriodEnd(calitem_id))) AS period,\n item_number,\n uom_name,\n warehous_code,\n formatQty(SUM(summProd(itemsite_id, calitem_id))) AS f_unit\n FROM itemsite, item, uom, whsinfo,\n (SELECT rcalitem_id AS calitem_id\n FROM rcalitem\n WHERE (rcalitem_id in (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n ))\n UNION\n SELECT acalitem_id as calitem_id\n FROM acalitem\n WHERE (acalitem_id in (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n ))\n ) AS calitem\n WHERE ((itemsite_warehous_id=warehous_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("plancode_id") ?>\n AND (itemsite_plancode_id=<? value("plancode_id") ?>)\n<? elseif exists("plancode_pattern") ?>\n AND (itemsite_plancode_id IN (SELECT plancode_id FROM plancode WHERE (plancode_code ~ <? value("plancode_pattern") ?>)))\n<? endif ?>\n )\nGROUP BY pstart, pend, period, item_number, warehous_code, uom_name\nORDER BY pstart, item_number, warehous_code;\n \n \n 221\n \n \n 140\n 80\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n plancode\n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n \n \n 140\n 105\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n
\n detail\n \n detail\n pstart\n \n 6\n \n \n 10\n 5\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n period\n \n \n \n \n \n \n detail\n \n 16\n \n \n 660\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_unit\n \n \n \n \n 615\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 320\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 530\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n
\n \n 16\n \n \n 690\n 0\n 51\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 200 TimePhasedProductionByPlannerCode \N \n\n Time Phased Production By Planner Code\n TimePhasedProductionByPlannerCode\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("plancode_id") ?>\n ( SELECT (plancode_code||'-'||plancode_name)\n FROM plancode\n WHERE plancode_id=<? value("plancode_id") ?>)\n <? elseif exists("plancode_pattern") ?>\n text(<? value("plancode_pattern") ?>)\n <? else ?>\n text('All Planner Codes')\n <? endif ?>\n AS plancode,\n <? if exists("inventoryUnits") ?>\n text('Qty.')\n <? elseif exists("capacityUnits") ?>\n text('Capacity')\n <? elseif exists("altCapacityUnits") ?>\n text('Alt. Capacity')\n <? else ?>\n text('ERROR')\n <? endif ?>\n AS lbl_unittype,\n <? if exists("showInactive") ?>\n text('Showing Active and Inactive Item Sites')\n <? else ?>\n text('Showing Active Item Sites Only')\n <? endif ?>\n AS lbl_showing ;\n \n \n detail\n SELECT findPeriodStart(calitem_id) AS pstart,\n findPeriodEnd(calitem_id) AS pend,\n (formatDate(findPeriodStart(calitem_id)) || '-' || formatDate(findPeriodEnd(calitem_id))) AS period,\n plancode_code,\n <? if exists("inventoryUnits") ?>\n uom_name\n <? elseif exists("capacityUnits") ?>\n itemcapuom(item_id)\n <? elseif exists("altCapacityUnits") ?>\n itemaltcapuom(item_id)\n <? else ?>\n text('')\n <? endif ?>\n AS f_uom,\n warehous_code,\n <? if exists("inventoryUnits") ?>\n formatQty(SUM(summProd(itemsite_id, calitem_id)))\n <? elseif exists("capacityUnits") ?>\n formatQty(SUM(summProd(itemsite_id, calitem_id) * itemcapinvrat(item_id)))\n <? elseif exists("altCapacityUnits") ?>\n formatQty(SUM(summProd(itemsite_id, calitem_id) * itemaltcapinvrat(item_id)))\n <? else ?>\n formatQty(SUM(summProd(itemsite_id, calitem_id)))\n <? endif ?>\n AS f_unit\n FROM itemsite, item, uom, whsinfo, plancode,\n (SELECT rcalitem_id AS calitem_id\n FROM rcalitem\n WHERE (rcalitem_id in (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n ))\n UNION\n SELECT acalitem_id as calitem_id\n FROM acalitem\n WHERE (acalitem_id in (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n ))\n ) AS calitem\n WHERE ((itemsite_warehous_id=warehous_id)\n<? if not exists("showInactive") ?>\n AND (itemsite_active)\n<? endif ?>\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_plancode_id=plancode_id)\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("plancode_id") ?>\n AND (plancode_id=<? value("plancode_id") ?>)\n<? elseif exists("plancode_pattern") ?>\n AND (plancode_code ~ <? value("plancode_pattern") ?>)\n<? endif ?>\n )\nGROUP BY pstart, pend, period, plancode_code, warehous_code, f_uom\nORDER BY pstart, plancode_code, warehous_code, f_uom;\n \n \n 221\n \n \n \n 140\n 105\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n 140\n 80\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n plancode\n \n \n \n \n \n 660\n 200\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_unittype\n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n 360\n 80\n 380\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n lbl_showing\n \n \n \n \n \n \n \n \n \n 6\n \n \n 21\n \n \n 660\n 0\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_unittype\n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n
\n detail\n \n detail\n pstart\n \n 6\n \n \n 10\n 5\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n period\n \n \n \n \n \n \n detail\n \n 16\n \n \n 530\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_uom\n \n \n \n \n 615\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 660\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_unit\n \n \n \n \n 320\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n plancode_code\n \n \n \n
\n \n 16\n \n \n \n 690\n 0\n 51\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 221 TimePhasedStatisticsByItem \N \n\n Time Phased Usage Statistics By Item\n TimePhasedStatisticsByItem\n Shows graph\n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n item_descrip1,\n item_descrip2,\n <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Warehouses')\n <? endif ?>\n AS warehouse\n FROM item\n WHERE (item_id=<? value("item_id") ?>);\n \n \n detail\n SELECT calitem_pstart AS pstart,\n calitem_pend AS pend,\n (formatDate(calitem_pstart) || '-' || formatDate(calitem_pend)) AS period,\n warehous_code,\n formatQty(summTransR(itemsite_id, calitem_id)) AS received,\n formatQty(summTransI(itemsite_id, calitem_id)) AS issued,\n formatQty(summTransS(itemsite_id, calitem_id)) AS sold,\n formatQty(summTransC(itemsite_id, calitem_id)) AS scrap,\n formatQty(summTransA(itemsite_id, calitem_id)) AS adjustments,\n--\n summTransR(itemsite_id, calitem_id) AS a_received,\n summTransI(itemsite_id, calitem_id) AS a_issued,\n summTransS(itemsite_id, calitem_id) AS a_sold,\n summTransC(itemsite_id, calitem_id) AS a_scrap,\n summTransA(itemsite_id, calitem_id) AS a_adjustments\n\n FROM itemsite, whsinfo,\n\n ( SELECT rcalitem_id as calitem_id,\n findPeriodStart(rcalitem_id) as calitem_pstart,\n findPeriodEnd(rcalitem_id) as calitem_pend\n FROM rcalitem\n WHERE (rcalitem_id in (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n ))\n UNION\n SELECT acalitem_id as calitem_id,\n findPeriodStart(acalitem_id) as calitem_pstart,\n findPeriodEnd(acalitem_id) as calitem_pend\n FROM acalitem\n WHERE (acalitem_id in (\n<? foreach("period_id_list") ?>\n <? if not isfirst("period_id_list") ?>\n ,\n <? endif ?>\n <? value("period_id_list") ?>\n<? endforeach ?>\n ))\n ORDER BY calitem_pstart, calitem_pend\n ) as calitem\n\n WHERE ((itemsite_warehous_id=warehous_id)\n AND (itemsite_item_id=<? value("item_id") ?>)\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n)\nORDER BY calitem_pstart, warehous_code;\n \n \n Blue\n 0\n 0\n 255\n \n \n BlueGreen\n 0\n 255\n 255\n \n \n Green\n 0\n 255\n 0\n \n \n Red\n 255\n 0\n 0\n \n \n RedBlue\n 255\n 0\n 255\n \n \n RedGreen\n 255\n 255\n 0\n \n \n 683\n \n \n 130\n 63\n 385\n 18\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n \n \n 130\n 50\n 200\n 18\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n 0\n 675\n 735\n 675\n 2\n \n \n \n \n \n \n \n \n 35\n 116\n 712\n 467\n \n \n Arial\n 8\n normal\n \n \n detail\n \n \n \n <string>Time Phased Activity Graph</string>\n \n \n \n <string>Date Range</string>\n \n period\n \n \n \n <string>Quantity</string>\n \n 0\n 0\n true\n \n \n IssuedQuanity\n a_issued\n Green\n \n \n \n Received\n a_received\n BlueGreen\n \n \n \n Sold\n a_sold\n Blue\n \n \n \n Scrapped\n a_scrap\n RedGreen\n \n \n \n Adjusted\n a_adjustments\n RedBlue\n \n \n \n \n \n \n 543\n 43\n 200\n 18\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n 130\n 80\n 385\n 18\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n \n 9\n \n \n 23\n \n \n \n \n \n 5\n 13\n 738\n 13\n 2\n \n \n \n \n \n
\n detail\n \n detail\n pstart\n \n 15\n \n \n 10\n 5\n 250\n 13\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n period\n \n \n \n \n \n \n detail\n \n 18\n \n \n 405\n 0\n 80\n 13\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n issued\n \n \n \n \n 575\n 0\n 80\n 13\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n scrap\n \n \n \n \n 318\n 0\n 80\n 13\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n received\n \n \n \n \n 268\n 0\n 35\n 13\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 488\n 0\n 80\n 13\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n sold\n \n \n \n \n 660\n 0\n 80\n 13\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n adjustments\n \n \n \n
\n \n 18\n \n \n \n 688\n 0\n 51\n 13\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 93\n 0\n 100\n 13\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n Shows graph 0 2013-07-26 16:17:54.38447 410 TodoItem \N \n\n To-Do Item\n TodoItem\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT todoitem_id AS id,\n 'T' AS type, todoitem_seq AS seq, \n todoitem_name AS name, \n firstLine(todoitem_description) AS descrip, \n todoitem_status AS status, todoitem_due_date AS due, \n todoitem_username AS usr, incdt_number AS incdt \nFROM todoitem LEFT OUTER JOIN incdt ON (incdt_id=todoitem_incdt_id) \nWHERE (todoitem_id=<? value("todoitem_id") ?>)\nORDER BY seq, usr;\n \n \n 141\n \n \n \n 385\n 30\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n status\n \n \n \n \n 110\n 35\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n type\n \n \n \n \n \n \n \n 385\n 45\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n due\n \n \n \n \n 385\n 60\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n incdt\n \n \n \n \n \n \n 110\n 20\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n usr\n \n \n \n \n 110\n 65\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n name\n \n \n \n \n 110\n 80\n 600\n 15\n \n 0\n \n Arial\n 8\n bold\n \n \n \n \n detail\n descrip\n \n \n \n \n \n 10\n 135\n 750\n 135\n 2\n \n \n \n 110\n 50\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n seq\n \n \n \n \n \n 6\n \n \n 21\n \n 5\n 15\n 745\n 15\n 2\n \n \n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n\n \N 0 2013-07-26 16:17:54.38447 324 TodoList \N \n\n To-Do List\n TodoList\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n todolist\n detail\n \n \n queryParams\n SELECT\n <? if exists("completed") ?> 'Yes' <? else ?> 'No' <? endif ?> AS showClosed,\n <? if exists("projects") ?> 'Yes' <? else ?> 'No' <? endif ?> AS showTasks,\n <? if exists("incidents") ?> 'Yes' <? else ?> 'No' <? endif ?> AS showIncdts;\n \n \n 141\n \n \n 325\n 43\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n queryParams\n showClosed\n \n \n \n \n \n \n \n \n 110\n 43\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n queryParams\n showIncdts\n \n \n \n 10\n 135\n 750\n 135\n 2\n \n \n \n \n \n \n \n \n \n \n 555\n 43\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n queryParams\n showTasks\n \n \n \n \n 10\n 63\n 725\n 15\n \n 12\n \n Arial\n 8\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n \n
\n detail\n \n ByUser\n assigned\n \n \n \n detail\n \n 31\n \n \n 630\n 0\n 115\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_parent\n \n \n \n \n 10\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n assigned\n \n \n \n \n 230\n 15\n 520\n 15\n \n 0\n \n Arial\n 8\n bold\n \n \n \n \n detail\n notes\n \n \n \n \n 435\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n stage\n \n \n \n \n 100\n 0\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n type\n \n \n \n \n 165\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n priority\n \n \n \n \n 540\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n due\n \n \n \n \n 230\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n name\n \n \n \n
\n \n 16\n \n \n \n \n 90\n 1\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 1\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 223 UOMs \N \n\n Units of Measure\n UOMs\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT uom_name,\n uom_descrip\n FROM uom\nORDER BY uom_name;\n \n \n 76\n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n \n 6\n \n \n 21\n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n \n 175\n 0\n 565\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_descrip\n \n \n \n
\n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 268 UnappliedAPCreditMemos \N \n\n Unapplied A/P Credit Memos\n UnappliedAPCreditMemos\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT apopen_id, apopen_docnumber,\n (vend_number || '-' || vend_name) AS vendor,\n formatMoney(apopen_amount) AS f_amount,\n formatMoney(apopen_paid) AS f_paid,\n formatMoney(apopen_amount - apopen_paid) AS f_balance\nFROM apopen, vendinfo\nWHERE ( (apopen_doctype='C')\n AND (apopen_open)\n AND (apopen_vend_id=vend_id)\n<? if exists("vend_id") ?>\n AND (vend_id=<? value("vend_id") ?>)\n<? elseif exists("vendtype_id") ?>\n AND (vend_vendtype_id=<? value("vendtype_id") ?>)\n<? elseif exists("vendtype_pattern") ?>\n AND (vend_vendtype_id IN (SELECT vendtype_id\n FROM vendtype\n WHERE (vendtype_code ~ <? value("vendtype_pattern") ?>)))\n<? endif ?>\n)\nORDER BY apopen_docnumber;\n \n \n 77\n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n \n \n \n 6\n \n \n 26\n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_balance\n \n \n \n \n 10\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n apopen_docnumber\n \n \n \n \n 540\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_paid\n \n \n \n \n 434\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_amount\n \n \n \n \n 100\n 0\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vendor\n \n \n \n
\n \n 17\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 269 UnappliedARCreditMemos \N \n\n Unapplied A/R Credit Memos\n UnappliedARCreditMemos\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT aropen_id, aropen_docnumber,\n (cust_number || '-' || cust_name) AS cust,\n formatMoney(aropen_amount) AS f_amount,\n formatMoney(aropen_paid) AS f_paid,\n formatMoney(aropen_amount - aropen_paid) AS f_balance\nFROM aropen, custinfo\nWHERE ( (aropen_doctype IN ('C', 'R'))\n AND (aropen_open)\n AND (aropen_cust_id=cust_id) )\nORDER BY aropen_docnumber;\n \n \n 77\n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n \n \n \n 6\n \n \n 26\n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_balance\n \n \n \n \n 10\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n aropen_docnumber\n \n \n \n \n 540\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_paid\n \n \n \n \n 434\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_amount\n \n \n \n \n 100\n 0\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust\n \n \n \n
\n \n 17\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 232 UniformBOL \N \n\n Uniform Bill of Lading\n UniformBOL\n \n \n \n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 25\n 25\n \n head\n SELECT shiphead_shipvia, formatDate(shiphead_shipdate) AS shipdate,\n cust_name, cust_number, cohead_number, cohead_fob, cohead_custponumber,\n warehous_descrip, addr_line1 AS warehous_addr1, addr_line2 AS warehous_addr2, addr_line3 AS warehous_addr3, addr_city AS warehous_addr4, warehous_fob,\n cohead_shiptoname, cohead_shiptoaddress1, cohead_shiptoaddress2, cohead_shiptoaddress3,\n (cohead_shiptocity || ' ' || cohead_shiptostate || ' ' || cohead_shiptozipcode) AS shiptocitystatezip,\n cohead_shiptophone\n FROM shiphead JOIN cohead ON (cohead_id=shiphead_order_id)\n LEFT OUTER JOIN whsinfo ON (warehous_id=cohead_warehous_id)\n JOIN custinfo ON (cust_id=cohead_cust_id)\n LEFT OUTER JOIN addr ON (warehous_addr_id=addr_id)\n WHERE (shiphead_id=<? value("shiphead_id") ?>);\n \n \n detail\n SELECT 1 as one,\n coitem_linenumber,\n formatQty(SUM(shipitem_qty)) AS invqty,\n uom_name,\n itemsellinguom(item_id) AS shipuom,\n roundUp(SUM(shipitem_qty) / iteminvpricerat(item_id))::integer AS shipqty,\n item_number, item_descrip1, item_descrip2,\n formatQty(SUM(shipitem_qty) * item_prodweight) AS netweight,\n formatQty(SUM(shipitem_qty) * (item_prodweight + item_packweight)) AS grossweight\n FROM shipitem, coitem, itemsite, item, uom\n WHERE ((shipitem_orderitem_id=coitem_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (shipitem_shiphead_id=<? value("shiphead_id") ?>))\nGROUP BY coitem_linenumber, item_number, item_id,\n uom_name, shipuom,\n item_descrip1,\n item_descrip2, item_prodweight,\n item_packweight\nORDER BY coitem_linenumber;\n \n \n \n foot\n SELECT formatQty(SUM(shipitem_qty * item_prodweight)) AS netweight,\n formatQty(SUM(shipitem_qty * (item_prodweight + item_packweight))) AS grossweight \n FROM shipitem, coitem, itemsite, item\n WHERE ((shipitem_orderitem_id=coitem_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (shipitem_shiphead_id=<? value("shiphead_id") ?>));\n \n \n notes\n SELECT shiphead_notes\n FROM shiphead\n WHERE (shiphead_id=<? value("shiphead_id") ?>);\n \n \n legal1\n SELECT \n text('*If the shipment moves between two ports by carrier by water, the law requires that the Bill Of Lading shall state whether it is ''carrier''s or shipper''s weight''.\\n\\nNOTE: Where the rate is dependent on value, shippers are required to state specifically in writing the agreed or declared value of the property. The agreed or declared value of the property is hereby specifically stated by the shipper to be not exceeding:\\n\\n_________________________\\n\\nper ______________________') AS legal3\n \n \n 42\n \n \n 5\n 35\n 795\n 35\n 2\n \n \n \n \n \n \n \n \n \n 332\n \n \n 145\n 5\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cust_number\n \n \n \n \n 405\n 85\n 405\n 185\n 0\n \n \n \n 419\n 160\n 370\n 25\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n shiphead_shipvia\n \n \n \n \n \n 100\n 305\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehous_addr4\n \n \n \n 795\n 85\n 795\n 185\n 0\n \n \n 405\n 185\n 795\n 185\n 0\n \n \n \n 145\n 45\n 200\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_fob\n \n \n \n \n 405\n 150\n 795\n 150\n 0\n \n \n 600\n 112\n 600\n 150\n 0\n \n \n \n 100\n 285\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehous_addr3\n \n \n \n \n 100\n 190\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cohead_shiptophone\n \n \n \n \n \n 100\n 130\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cohead_shiptoaddress2\n \n \n \n \n \n 100\n 225\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehous_descrip\n \n \n \n \n \n \n 145\n 25\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n cohead_number\n \n \n \n \n 100\n 170\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n shiptocitystatezip\n \n \n \n \n \n \n \n 615\n 125\n 175\n 25\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cohead_custponumber\n \n \n \n \n 100\n 150\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cohead_shiptoaddress3\n \n \n \n \n \n 100\n 265\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehous_addr2\n \n \n \n \n 415\n 200\n 380\n 15\n \n 0\n \n Arial\n 8\n bold\n \n \n \n \n notes\n shiphead_notes\n \n \n \n \n \n 100\n 90\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cohead_shiptoname\n \n \n \n \n \n \n \n 100\n 245\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehous_addr1\n \n \n \n 405\n 85\n 795\n 85\n 0\n \n \n \n 635\n 50\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n shipdate\n \n \n \n 405\n 112\n 795\n 112\n 0\n \n \n \n \n \n \n 100\n 110\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n cohead_shiptoaddress1\n \n \n \n \n
\n detail\n \n \n detail\n \n 52\n \n \n 150\n 35\n 380\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 540\n 0\n 120\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n grossweight\n \n \n \n \n 5\n 0\n 80\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n shipqty\n \n \n \n \n 150\n 20\n 380\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 145\n 0\n 390\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n item_number\n \n \n \n
\n \n \n 466\n \n \n \n 5\n 90\n 795\n 90\n 0\n \n \n \n \n \n \n \n \n \n 220\n 80\n 228\n 80\n 0\n \n \n \n 560\n 75\n 570\n 75\n 0\n \n \n 400\n 90\n 400\n 245\n 0\n \n \n \n \n 5\n 5\n 5\n 445\n 0\n \n \n 210\n 220\n 385\n 220\n 0\n \n \n \n \n \n \n \n 220\n 70\n 228\n 70\n 0\n \n \n 220\n 55\n 220\n 65\n 0\n \n \n 600\n 90\n 600\n 245\n 0\n \n \n \n \n \n \n \n 560\n 65\n 560\n 75\n 0\n \n \n \n \n 560\n 60\n 570\n 60\n 0\n \n \n 600\n 135\n 795\n 135\n 0\n \n \n 560\n 50\n 570\n 50\n 0\n \n \n \n \n \n \n \n 540\n 5\n 120\n 25\n \n \n Arial\n 10\n bold\n \n \n \n \n foot\n grossweight\n \n \n \n 795\n 5\n 795\n 445\n 0\n \n \n \n \n \n \n \n \n 560\n 50\n 560\n 60\n 0\n \n \n 765\n 70\n 765\n 80\n 0\n \n \n \n 570\n 75\n 570\n 65\n 0\n \n \n 5\n 320\n 795\n 320\n 0\n \n \n 228\n 65\n 228\n 55\n 0\n \n \n 200\n 90\n 200\n 245\n 0\n \n \n \n \n \n 665\n 5\n 665\n 30\n 0\n \n \n \n \n 220\n 70\n 220\n 80\n 0\n \n \n \n 580\n 30\n 580\n 90\n 0\n \n \n 5\n 340\n 795\n 340\n 0\n \n \n \n 210\n 30\n 210\n 90\n 0\n \n \n 390\n 30\n 390\n 90\n 0\n \n \n 220\n 65\n 228\n 65\n 0\n \n \n 5\n 408\n 795\n 408\n 0\n \n \n 433\n 240\n 586\n 240\n 0\n \n \n 765\n 80\n 775\n 80\n 0\n \n \n \n 5\n 375\n 795\n 375\n 0\n \n \n \n 5\n 50\n 210\n 50\n 0\n \n \n \n 408\n 220\n 586\n 220\n 0\n \n \n 560\n 65\n 570\n 65\n 0\n \n \n 670\n 170\n 762\n 170\n 0\n \n \n 5\n 30\n 795\n 30\n 0\n \n \n 5\n 445\n 795\n 445\n 0\n \n \n \n \n \n \n \n \n 775\n 80\n 775\n 70\n 0\n \n \n \n \n 765\n 70\n 775\n 70\n 0\n \n \n 5\n 245\n 795\n 245\n 0\n \n \n \n \n 685\n 408\n 685\n 445\n 0\n \n \n \n 400\n 320\n 400\n 445\n 0\n \n \n \n \n 228\n 80\n 228\n 70\n 0\n \n \n \n \n 5\n 5\n 795\n 5\n 0\n \n \n \n 535\n 5\n 535\n 30\n 0\n \n \n \n \n \n \n \n 600\n 110\n 795\n 110\n 0\n \n \n 220\n 55\n 228\n 55\n 0\n \n \n \n \n \n \n 570\n 60\n 570\n 50\n 0\n \n \n
\n \N 0 2013-07-26 16:17:54.38447 159 UninvoicedReceipts \N \n\n Uninvoiced Receipts\n UninvoicedReceipts\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?> \n ( SELECT warehous_code \n FROM whsinfo \n WHERE (warehous_id=<? value("warehous_id") ?>) ) \n <? else ?> \n text('All Sites') \n <? endif ?> \n AS warehouse, \n <? if exists("agentUsername") ?> \n TEXT(<? value("agentUsername" ?>) \n <? else ?> \n TEXT('All Agents') \n <? endif ?> \n AS agentUsername; \n\n \n \n detail\n SELECT recv_id,\n formatDate(recv_date) as f_date,\n recv_trans_usr_name as f_user,\n recv_order_number AS f_ponumber, poitem_linenumber,\n vend_name, \n COALESCE(item_number, ('Misc. - ' || recv_vend_item_number)) AS item_number,\n formatQty(recv_qty) as f_qty,\n 'Receipt' AS f_type,\n recv_value AS value,\n formatMoney(recv_value) AS f_value\n FROM recv\n LEFT OUTER JOIN itemsite ON (recv_itemsite_id=itemsite_id)\n LEFT OUTER JOIN item ON (itemsite_item_id=item_id),\n poitem, vendinfo\n WHERE ((recv_orderitem_id=poitem_id)\n AND (recv_order_type='PO')\n AND (recv_vend_id=vend_id)\n AND (recv_posted)\n AND (recv_vohead_id IS NULL)\n AND (NOT recv_invoiced)\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("agentUsername") ?>\n AND (recv_agent_username=<? value("agentUsername") ?>)\n<? endif ?>\n)\nUNION\nSELECT poreject_id,\n formatDate(poreject_date) as f_date,\n poreject_trans_username as f_user,\n poreject_ponumber AS f_ponumber, poitem_linenumber,\n vend_name, \n COALESCE(item_number, ('Misc. - ' || poreject_vend_item_number)) AS item_number,\n formatQty(poreject_qty) as f_qty,\n 'Return' AS f_type,\n poreject_value *-1 AS value,\n formatMoney(poreject_value*-1) AS f_value\n FROM poreject\n LEFT OUTER JOIN itemsite ON (poreject_itemsite_id=itemsite_id)\n LEFT OUTER JOIN item ON (itemsite_item_id=item_id),\n poitem, vendinfo\n WHERE ((poreject_poitem_id=poitem_id)\n-- AND (poreject_itemsite_id=itemsite_id)\n-- AND (itemsite_item_id=item_id)\n AND (poreject_vend_id=vend_id)\n AND (poreject_posted)\n AND (NOT poreject_invoiced)\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n<? if exists("agentUsername") ?>\n AND (poreject_agent_username=<? value("agentUsername") ?>)\n<? endif ?>\n)\nORDER BY f_ponumber, poitem_linenumber;\n \n \n 221\n \n \n \n 145\n 90\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n \n \n 145\n 110\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n agentUsername\n \n \n \n \n \n 6\n \n \n 29\n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 18\n \n \n 85\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_user\n \n \n \n \n 520\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qty\n \n \n \n \n 170\n 0\n 65\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_ponumber\n \n \n \n \n 285\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_name\n \n \n \n \n 400\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 5\n 0\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_date\n \n \n \n \n 245\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n poitem_linenumber\n \n \n \n \n 590\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_type\n \n \n \n \n 665\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_value\n \n \n \n
\n \n 18\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 104\n \n \n \n 665\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n value\n \n qty\n \n \n
\n \N 0 2013-07-26 16:17:54.38447 77 UninvoicedShipments \N \n\n Uninvoiced Shipments\n UninvoicedShipments\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse;\n\n \n \n detail\n SELECT cohead_id, shipitem_id, cohead_number, coitem_linenumber,\n item_number, item_descrip1, item_descrip2,\n uom_name,\n shipped, formatQty(shipped) AS f_shipped,\n selected, formatQty(selected) AS f_selected\nFROM (\nSELECT cohead_id, shipitem_id, cohead_number, coitem_linenumber,\n item_number, item_descrip1, item_descrip2,\n uom_name,\n COALESCE(SUM(shipitem_qty), 0) AS shipped,\n COALESCE(SUM(cobill_qty), 0) AS selected\nFROM cohead, itemsite, item, uom,\n whsinfo, shipitem, shiphead,\n coitem LEFT OUTER JOIN\n ( cobill JOIN cobmisc\n ON ( (cobill_cobmisc_id=cobmisc_id) AND (NOT cobmisc_posted) ) )\n ON (cobill_coitem_id=coitem_id)\nWHERE ( (shipitem_orderitem_id=coitem_id)\n AND (shipitem_shiphead_id=shiphead_id)\n AND (coitem_cohead_id=cohead_id)\n AND (coitem_itemsite_id=itemsite_id)\n AND (coitem_qty_uom_id=uom_id)\n AND (itemsite_item_id=item_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (shiphead_shipped)\n AND (NOT shipitem_invoiced)\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n )\nGROUP BY cohead_number, coitem_id, coitem_linenumber, item_number,\n item_descrip1, item_descrip2, cohead_id, shipitem_id, uom_name\n) AS data\n<? if exists("showUnselected") ?>\n WHERE (selected = 0)\n<? endif ?>\n;\n \n \n 236\n \n \n 100\n 104\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n 5\n 229\n 745\n 229\n 2\n \n \n \n \n \n \n \n \n \n \n \n \n \n 6\n \n \n 37\n \n \n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n
\n detail\n \n \n detail\n \n 57\n \n \n 5\n 0\n 85\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cohead_number\n \n \n \n \n 494\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n \n 665\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_selected\n \n \n \n \n 150\n 15\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 95\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n coitem_linenumber\n \n \n \n \n 580\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_shipped\n \n \n \n \n 150\n 0\n 229\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 150\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n 5\n 50\n 745\n 50\n 0\n \n \n
\n \n 18\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 355 UnpostedGLTransactions \N \n\n Unposted G/L Transactions\n UnpostedGLTransactions\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n <? if exists("period_id") ?>\nSELECT formatDate(period_start, 'Earliest') AS startdate,\n formatDate(period_end, 'Latest') AS enddate,\n period_name\nFROM period\nWHERE (period_id=<? value("period_id") ?>);\n<? else ?>\nSELECT 'Earliest' AS startdate,\n 'Latest' AS enddate,\n 'All Periods' AS period_name;\n<? endif ?>\n \n \n detail\n SELECT gltrans_id,\n formatDate(gltrans_date) AS transdate,\n gltrans_source,\n gltrans_doctype,\n gltrans_docnumber,\n invhist_docnumber,\n firstLine(gltrans_notes) AS transnotes,\n (formatGLAccount(accnt_id) || ' - ' || accnt_descrip) AS account,\n-- Debits:\n CASE WHEN (gltrans_amount < 0) THEN formatMoney(ABS(gltrans_amount))\n ELSE ''\n END AS f_debit, \n CASE WHEN (gltrans_amount < 0) THEN ABS(gltrans_amount)\n ELSE 0\n END AS debit_amt, \n--Credits:\n CASE WHEN (gltrans_amount > 0) THEN formatMoney(gltrans_amount)\n ELSE ''\n END AS f_credit,\n CASE WHEN (gltrans_amount > 0) THEN gltrans_amount\n ELSE 0\n END AS credit_amt,\n--Balance:\n gltrans_amount * -1 as balance_amt\n--\n FROM period, gltrans JOIN accnt ON (gltrans_accnt_id=accnt_id)\n LEFT OUTER JOIN invhist ON (gltrans_misc_id=invhist_id AND gltrans_docnumber='Misc.')\nWHERE (NOT gltrans_posted\n AND (NOT gltrans_deleted)\n AND (gltrans_date BETWEEN period_start AND period_end)\n<? if exists("period_id") ?>\n AND (period_id=<? value("period_id") ?>)\n<? endif ?>\n)\nORDER BY gltrans_created, gltrans_sequence, gltrans_amount;\n \n \n 205\n \n \n \n \n \n 545\n 70\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n 140\n 70\n 290\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n period_name\n \n \n \n \n \n \n \n \n \n \n 545\n 90\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n 0\n 200\n 1000\n 200\n 2\n \n \n \n \n \n \n 5\n \n \n 45\n \n \n \n 0\n 40\n 1000\n 40\n 2\n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 31\n \n \n 310\n 0\n 270\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n account\n \n \n \n \n 12500\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_doctype\n \n \n \n \n 208\n 15\n 95\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invhist_docnumber\n \n \n \n \n 0\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n transdate\n \n \n \n \n 125\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_doctype\n \n \n \n \n 204\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_docnumber\n \n \n \n \n 310\n 15\n 265\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n transnotes\n \n \n \n \n 720\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_credit\n \n \n \n \n 65\n 0\n 60\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_source\n \n \n \n \n 605\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_debit\n \n \n \n
\n \n \n 75\n \n \n 835\n 25\n 105\n 14\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n balance_amt\n \n money\n \n \n \n \n \n 605\n 5\n 1015\n 5\n 2\n \n \n \n \n 960\n 60\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 60\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 720\n 25\n 105\n 14\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n credit_amt\n \n money\n \n \n \n \n \n 605\n 25\n 105\n 14\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n debit_amt\n \n money\n \n \n \n \n 15\n \n \n \n 960\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 354 UnpostedGlSeries \N \n\n Unposted G/L Series Transactions\n UnpostedGlSeries\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT *, glseries_sequence,\n (formatGLAccount(glseries_accnt_id) || ' - ' ||\n accnt_descrip) AS account,\n CASE WHEN (glseries_amount < 0) THEN\n formatMoney(glseries_amount * -1)\n ELSE '' END AS debit,\n CASE WHEN (glseries_amount >= 0) THEN\n formatMoney(glseries_amount)\n ELSE '' END AS credit\nFROM glseries, accnt\nWHERE (glseries_accnt_id=accnt_id)\nORDER BY glseries_distdate, glseries_sequence, glseries_amount;\n \n \n 75\n \n \n \n \n \n \n \n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n 11\n \n \n 51\n \n \n \n \n \n \n 5\n 40\n 740\n 40\n 2\n \n \n \n \n \n
\n detail\n \n glseries_sequence\n glseries_sequence\n \n 11\n \n 10\n 0\n 40\n 0\n 0\n \n \n \n \n \n detail\n \n 21\n \n \n 610\n 0\n 150\n 11\n \n 0\n \n Arial\n 8\n bold\n \n \n \n \n detail\n glseries_notes\n \n \n \n \n 95\n 0\n 45\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n glseries_source\n \n \n \n \n 310\n 0\n 130\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n account\n \n \n \n \n 0\n 0\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n glseries_distdate\n \n \n \n \n 530\n 0\n 70\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n credit\n \n \n \n \n 450\n 0\n 70\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n debit\n \n \n \n \n 200\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n glseries_docnumber\n \n \n \n \n 145\n 0\n 45\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n glseries_doctype\n \n \n \n
\n \n 15\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 356 UnpostedPoReceipts \N \n\n Unposted Purchase Order Receipts\n UnpostedPoReceipts\n \n \n \n \n \n \n \n \n \n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT recv_id, recv_orderitem_id, recv_order_number, recv_order_type,\n orderhead_from,\n orderitem_linenumber,\n formatDate(recv_duedate) AS recv_duedate,\n warehous_code,\n COALESCE(item_number, <? value("nonInventory") ?>) AS item_number,\n COALESCE(uom_name, <? value("na") ?>) AS uom_name,\n recv_vend_item_number,\n recv_vend_uom,\n formatQty(orderitem_qty_ordered) AS qty_ordered,\n formatQty(orderitem_qty_received) AS qty_received,\n formatQty(recv_qty) AS recv_qty,\n formatDate(recv_date) AS recv_date,\n formatDate(COALESCE(recv_gldistdate, recv_date)) AS recv_gldistdate\nFROM orderhead JOIN\n orderitem ON ((orderitem_orderhead_id=orderhead_id)\n\t AND (orderitem_orderhead_type=orderhead_type)) JOIN \n recv ON ((recv_orderitem_id=orderitem_id)\n\t AND (recv_order_type=orderitem_orderhead_type)) LEFT OUTER JOIN\n (itemsite JOIN item ON (itemsite_item_id=item_id)\n\t JOIN uom ON (item_inv_uom_id=uom_id)\n JOIN site() ON (itemsite_warehous_id=warehous_id)\n )\n ON (recv_itemsite_id=itemsite_id) LEFT OUTER JOIN\n vendinfo ON (orderhead_type='PO' AND orderhead_from_id=vend_id)\nWHERE (NOT recv_posted)\nORDER BY orderhead_from, recv_order_number, orderitem_linenumber;\n\n \n \n 76\n \n 5\n 70\n 745\n 70\n 2\n \n \n \n
\n detail\n \n ponumber\n recv_order_number\n \n 51\n \n \n \n \n \n 100\n 0\n 27\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n recv_order_type\n \n \n \n \n \n 100\n 15\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n orderhead_from\n \n \n \n \n \n \n \n 135\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n recv_order_number\n \n \n \n \n \n \n \n \n \n \n \n detail\n \n 21\n \n \n 685\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n recv_date\n \n \n \n \n 130\n 0\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n item_number\n \n \n \n \n 395\n 0\n 40\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n recv_vend_uom\n \n \n \n \n 0\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n orderitem_linenumber\n \n \n \n \n 285\n 0\n 100\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n recv_vend_item_number\n \n \n \n \n 520\n 0\n 70\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n qty_received\n \n \n \n \n 40\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n recv_duedate\n \n \n \n \n 240\n 0\n 40\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n uom_name\n \n \n \n \n 600\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n recv_qty\n \n \n \n \n 440\n 0\n 70\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n qty_ordered\n \n \n \n
\n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 357 UnpostedReturnsForPO \N \n\n Unposted Returns For Purchase Order\n UnpostedReturnsForPO\n \n Letter\n \n 100\n 100\n 50\n 50\n \n address\n select formatAddr(<? value("addr_id") ?>) AS f_addr;\n \n \n detail\n SELECT poitem_linenumber,\n COALESCE(item_number, 'Non-Inventory') AS item_number,\n COALESCE(uom_name, 'N/A') AS uom_name,\n poitem_vend_item_number, poitem_vend_uom,\n formatQty(poitem_qty_ordered) AS f_poitem_qty_ordered,\n formatQty(poitem_qty_received) AS f_poitem_qty_received,\n formatQty(poitem_qty_returned) AS f_poitem_qty_returned,\n formatQty(SUM(COALESCE(poreject_qty, 0))) AS f_poreject_qty,\n rjctcode_code\nFROM poreject LEFT OUTER JOIN rjctcode ON (poreject_rjctcode_id=rjctcode_id),\n poitem LEFT OUTER JOIN\n ( itemsite JOIN item\n ON (itemsite_item_id=item_id) JOIN uom ON (item_inv_uom_id=uom_id)\n ) ON (poitem_itemsite_id=itemsite_id)\nWHERE ((poreject_poitem_id=poitem_id)\n AND (NOT poreject_posted)\n AND (poitem_pohead_id=<? value("pohead_id") ?>))\nGROUP BY\n poitem_linenumber,\n item_number,\n uom_name,\n poitem_vend_item_number,\n poitem_vend_uom,\n poitem_qty_ordered,\n poitem_qty_received,\n poitem_qty_returned,\n rjctcode_code\nORDER BY poitem_linenumber;\n \n \n pohead\n SELECT *\nFROM pohead, vendinfo\nWHERE ((pohead_vend_id=vend_id)\n AND (pohead_id=<? value("pohead_id") ?>));\n \n \n logo\n SELECT image_data \nFROM image \nWHERE ((image_name='logo'));\n \n \n 127\n \n \n \n 5\n 5\n 155\n 95\n \n stretch\n \n logo\n image_data\n \n \n \n 0\n 113\n 740\n 113\n 2\n \n \n
\n Address\n \n \n address\n \n 23\n \n \n \n 60\n 0\n 500\n 18\n \n 11\n \n Arial\n 10\n bold\n \n \n \n \n address\n f_addr\n \n \n \n
\n
\n POHead\n \n \n pohead\n \n 107\n \n \n \n \n \n 100\n 41\n 100\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n pohead\n vend_number\n \n \n \n \n \n \n \n 100\n 30\n 100\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n pohead\n pohead_number\n \n \n \n 0\n 95\n 740\n 95\n 0\n \n \n \n \n \n \n
\n
\n detail\n \n \n detail\n \n 42\n \n \n 355\n 0\n 85\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_poitem_qty_received\n \n \n \n \n 200\n 0\n 100\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n poitem_vend_item_number\n \n \n \n \n 570\n 0\n 85\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_poreject_qty\n \n \n \n \n 45\n 15\n 645\n 11\n \n 1\n \n Arial\n 8\n bold\n \n \n \n \n detail\n rjctcode_code\n \n \n \n \n 310\n 0\n 40\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n poitem_vend_uom\n \n \n \n \n 1\n 0\n 35\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n poitem_linenumber\n \n \n \n \n 459\n 0\n 90\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_poitem_qty_returned\n \n \n \n \n \n 150\n 0\n 40\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n \n 40\n 0\n 100\n 11\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n
\n \n 23\n \n \n \n \n 90\n 0\n 100\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 700\n 0\n 40\n 11\n \n \n Arial\n 8\n normal\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 463 UnpostedVouchers \N \n\n Unposted Vouchers\n UnpostedVouchers\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n openVouchers\n populate\n \n \n 78\n \n \n \n \n \n \n 3.66667\n 74\n 743.667\n 74\n 2\n \n \n \n \n \n \n \n \n 6\n \n \n 41\n \n 5\n 35\n 745\n 35\n 2\n \n \n \n \n \n \n \n \n \n \n
\n detail\n \n detail\n orderid\n \n \n \n detail\n \n 17\n \n \n 650\n 2\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_amount\n \n \n \n \n 400\n 2\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vohead_invcnumber\n \n \n \n \n 90\n 2\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ponumber\n \n \n \n \n 5\n 2\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vohead_number\n \n \n \n \n 490\n 2\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_distdate\n \n \n \n \n 310\n 2\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vendtype_code\n \n \n \n \n 570\n 2\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_postdate\n \n \n \n \n 150\n 2\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vendor\n \n \n \n
\n \n 16\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 222 UnusedPurchasedItems \N \n\n Unused Purchased Items\n UnusedPurchasedItems\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT <? if exists("classcode_id") ?>\n ( SELECT (classcode_code||'-'||classcode_descrip)\n FROM classcode\n WHERE (classcode_id=<? value("classcode_id") ?>) )\n <? elseif exists("classcode_pattern") ?>\n text(<? value("classcode_pattern") ?>)\n <? else ?>\n text('All Class Codes')\n <? endif ?>\n AS classcode,\n <? if exists("includeUncontrolledItems") ?>\n text('Showing Uncontrolled Items')\n <? else ?>\n text('')\n <? endif ?>\n AS lbl_showuncontrolled\n \n \n detail\n SELECT DISTINCT item_id,\n item_number,\n item_descrip1,\n item_descrip2,\n uom_name,\n formatQty(SUM(itemsite_qtyonhand)) AS f_qoh,\n formatDate(MAX(itemsite_datelastcount), 'Never') AS f_lastcntd,\n formatDate(MAX(itemsite_datelastused), 'Never') AS f_lastused\n FROM item, itemsite, uom\n WHERE ((itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (item_id NOT IN (SELECT DISTINCT bomitem_item_id FROM bomitem))\n AND (NOT item_sold)\n AND (item_type IN ('P', 'O'))\n<? if exists("classcode_id") ?>\n AND (item_classcode_id=<? value("classcode_id") ?>)\n<? elseif exists("classcode_pattern") ?>\n AND (item_classcode_id IN (SELECT classcode_id\n FROM classcode\n WHERE (classcode_code ~ <? value("classcode_pattern") ?>)))\n<? endif ?>\n<? if not exists("includeUncontrolledItems") ?>\n AND (itemsite_controlmethod <> 'N')\n<? endif ?>\n)\nGROUP BY item_id, item_number, uom_name, item_descrip1, item_descrip2\nORDER BY item_number;\n \n \n 236\n \n \n 130\n 120\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n classcode\n \n \n \n \n \n \n 440\n 120\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n lbl_showuncontrolled\n \n \n \n 5\n 229\n 745\n 229\n 2\n \n \n \n \n \n \n \n \n \n \n 6\n \n \n 37\n \n \n 5\n 30\n 745\n 31\n 2\n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 51\n \n \n 509\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_lastused\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 425\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_lastcntd\n \n \n \n \n 15\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 15\n 15\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 320\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qoh\n \n \n \n \n 225\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n uom_name\n \n \n \n \n 15\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n
\n \n 16\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 8 ValidLocationsByItem \N \n\n Valid Locations By Item\n ValidLocationsByItem\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number,\n item_descrip1,\n item_descrip2,\n <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse\n FROM item\n WHERE (item_id=<? value("item_id") ?>);\n\n \n \n detail\n SELECT warehous_code,\n formatLocationName(location_id) AS locationname,\n firstLine(location_descrip) as f_descrip,\n formatBoolYN(location_restrict) AS restricted,\n formatBoolYN(location_netable) AS netable\n FROM itemsite, location, whsinfo\n WHERE ((validLocation(location_id, itemsite_id))\n AND ((itemsite_loccntrl) OR (itemsite_location_id=location_id))\n AND (itemsite_item_id=<? value("item_id") ?>)\n AND (itemsite_warehous_id=warehous_id)\n<? if exists("warehous_id") ?>\n AND (warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n)\n\nORDER BY warehous_code, locationname;\n \n \n 221\n \n \n 100\n 120\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n 100\n 80\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n \n \n \n 100\n 145\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n 100\n 100\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n 6\n \n \n 21\n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 10\n 0\n 45\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 640\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n netable\n \n \n \n \n 555\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n restricted\n \n \n \n \n 70\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n locationname\n \n \n \n \n 235\n 0\n 310\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_descrip\n \n \n \n
\n \n 16\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 236 VendorAPHistory \N \n\n Vendor AP History\n VendorAPHistory\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT vend_number,\n vend_name,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate\n FROM vendinfo\n WHERE (vend_id=<? value("vend_id") ?>);\n \n \n detail\n SELECT 1 AS type, apopen_id, -1 AS applyid,\n apopen_docdate AS sortdate, apopen_docnumber AS sortnumber,\n apopen_docnumber AS docnumber,\n formatBoolYN(apopen_open) AS f_open,\n CASE WHEN (apopen_doctype='V') THEN text('Voucher')\n WHEN (apopen_doctype='C') THEN text('C/M')\n WHEN (apopen_doctype='D') THEN text('D/M')\n ELSE text('Other')\n END AS documenttype,\n apopen_invcnumber AS invoicenumber,\n apopen_ponumber AS ponumber,\n formatDate(apopen_docdate) AS f_docdate,\n formatDate(apopen_duedate) AS f_duedate,\n formatMoney(apopen_amount) AS f_amount,\n formatMoney((apopen_amount - apopen_paid)) AS f_balance\nFROM apopen\nWHERE ( (apopen_vend_id=<? value("vend_id") ?>)\n AND (apopen_docdate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>) )\n\nUNION\nSELECT 2 AS type, apopen_id, apapply_source_apopen_id AS applyid,\n apopen_docdate AS sortdate, apopen_docnumber AS sortnumber,\n apapply_source_docnumber AS docnumber,\n '' AS f_open,\n CASE WHEN (apapply_source_doctype='C') THEN text('C/M')\n WHEN (apapply_source_doctype='K') THEN text('Check')\n ELSE text('Other')\n END AS documenttype,\n '' AS invoicenumber,\n '' AS ponumber,\n formatDate(apapply_postdate) AS f_docdate,\n '' AS f_duedate,\n formatMoney(apapply_amount) AS f_amount,\n '' AS f_balance\nFROM apapply, apopen\nWHERE ( (apapply_target_apopen_id=apopen_id)\n AND (apapply_vend_id=<? value("vend_id") ?>)\n AND (apopen_vend_id=<? value("vend_id") ?>)\n AND (apopen_docdate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>) )\n\nUNION\nSELECT 3 AS type, apopen_id, apapply_target_apopen_id AS applyid,\n apopen_docdate AS sortdate, apopen_docnumber AS sortnumber,\n apapply_target_docnumber AS docnumber,\n '' AS f_open,\n CASE WHEN (apapply_target_doctype='V') THEN text('Voucher')\n WHEN (apapply_target_doctype='D') THEN text('D/M')\n ELSE text('Other')\n END AS documenttype,\n apopen_invcnumber AS invoicenumber,\n '' AS ponumber,\n formatDate(apapply_postdate) AS f_docdate,\n '' AS f_duedate,\n formatMoney(apapply_amount) AS f_amount,\n '' AS f_balance\nFROM apapply, apopen\nWHERE ( (apapply_source_doctype IN ('C', 'K'))\n AND (apapply_source_doctype=apopen_doctype)\n AND (apapply_source_docnumber=apopen_docnumber)\n AND (apapply_vend_id=<? value("vend_id") ?>)\n AND (apopen_vend_id=<? value("vend_id") ?>)\n AND (apopen_docdate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>) )\n\nORDER BY sortdate, apopen_id, type;\n \n \n 162\n \n \n \n 550\n 85\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n 95\n 65\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n vend_number\n \n \n \n \n \n \n \n \n \n \n 5\n 155\n 745\n 155\n 2\n \n \n \n \n \n 95\n 85\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n vend_name\n \n \n \n \n \n 550\n 65\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n \n \n 6\n \n \n 21\n \n 5\n 15\n 745\n 14\n 2\n \n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 400\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_docdate\n \n \n \n \n 570\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_amount\n \n \n \n \n 655\n 0\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_balance\n \n \n \n \n 315\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n ponumber\n \n \n \n \n 60\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n documenttype\n \n \n \n \n 485\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_duedate\n \n \n \n \n 5\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_open\n \n \n \n \n 145\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n docnumber\n \n \n \n \n 230\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invoicenumber\n \n \n \n
\n \n 17\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 104\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 412 VendorInformation \N \n\n Vendor Information\n VendorInformation\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT vend_name, vend_vendtype_id, vend_terms_id,\n vend_shipvia, vend_active, vend_cntct1_id,\n vend_cntct2_id, crmacct_id, vend_number,\n MIN(pohead_orderdate) AS minpodate, \n MAX(pohead_orderdate) AS maxpodate, \n formatMoney(SUM(currToBase(pohead_curr_id,\n (poitem_qty_ordered - poitem_qty_received) * poitem_unitprice,\n CURRENT_DATE))) AS backlog ,\n c1.cntct_first_name || ' ' || c1.cntct_last_name AS contact1_name,\n c1.cntct_phone AS contact1_phone, c1.cntct_phone2 AS contact1_phone, \n formataddr(a1.addr_id) AS contact1_address,\n c1.cntct_fax as contact1_fax, c1.cntct_email AS contct1_email,\n c2.cntct_first_name || ' ' || c2.cntct_last_name AS contact2_name,\n c2.cntct_phone AS contact2_phone, c2.cntct_phone2 AS contact2_phone, \n c2.cntct_fax as contact2_fax, c2.cntct_email AS contct2_email,\n formataddr(a2.addr_id) AS contact2_address,\n vend_comments\n FROM vendinfo\n LEFT OUTER JOIN cntct c1 ON (vend_cntct1_id = c1.cntct_id)\n LEFT OUTER JOIN addr a1 ON (c1.cntct_addr_id = a1.addr_id)\n LEFT OUTER JOIN cntct c2 ON (vend_cntct2_id = c2.cntct_id)\n LEFT OUTER JOIN addr a2 ON (c2.cntct_addr_id = a2.addr_id)\n LEFT OUTER JOIN pohead ON (pohead_vend_id=vend_id)\n LEFT OUTER JOIN poitem ON (poitem_pohead_id=pohead_id\n AND poitem_status='O')\n JOIN crmacct ON (crmacct_vend_id=vend_id)\n WHERE (vend_id=<? value("vend_id") ?>) \n GROUP BY vend_name, vend_vendtype_id, vend_terms_id,\n vend_shipvia, vend_active,vend_cntct1_id,\n vend_cntct2_id, crmacct_id,\n c1.cntct_first_name, c1.cntct_last_name,\n c1.cntct_phone, c1.cntct_phone2, \n a1.addr_id,c1.cntct_fax, c1.cntct_email,\n c2.cntct_first_name,c2.cntct_last_name ,\n c2.cntct_phone, c2.cntct_phone2, \n c2.cntct_fax, c2.cntct_email,a2.addr_id,\n vend_comments, vend_number;\n \n \n lypurch\n SELECT formatMoney(SUM(currToBase(vohead_curr_id,\n vohead_amount,\n vohead_gldistdate))) AS purchases \n FROM vohead \n WHERE (vohead_posted\n AND (vohead_gldistdate \n BETWEEN (DATE_TRUNC('year', CURRENT_DATE) - INTERVAL '1 year')\n AND (DATE_TRUNC('year', CURRENT_DATE) - INTERVAL '1 day'))\n AND (vohead_vend_id=<? value("vend_id") ?>));\n \n \n ytdpurch\n SELECT formatMoney(SUM(currToBase(vohead_curr_id,\n vohead_amount,\n vohead_gldistdate))) AS purchases \n FROM vohead \n WHERE (vohead_posted\n AND (vohead_gldistdate \n BETWEEN (DATE_TRUNC('year', CURRENT_DATE))\n AND (CURRENT_DATE - INTERVAL '1 day'))\n AND (vohead_vend_id=<? value("vend_id") ?>));\n \n \n backlog\n SELECT formatMoney( COALESCE( SUM( (noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio) ), 0 ) ) AS backlog FROM cohead, coitem, itemsite, item WHERE ( (coitem_cohead_id=cohead_id) AND (coitem_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (coitem_status='O') AND (cohead_cust_id=<? value("cust_id") ?>) );\n \n \n OpenBalance\n SELECT formatMoney(COALESCE(SUM((apopen_amount-apopen_paid) / apopen_curr_rate * \n CASE WHEN (apopen_doctype IN ('D','V')) THEN 1 \n ELSE -1 END), 0.0)) AS balance \n FROM apopen \n WHERE ((apopen_open)\n AND (apopen_vend_id=<? value("vend_id") ?>));\n\n \n \n podate\n SELECT formatDate(MIN(pohead_orderdate)) AS firstpodate, formatDate(MAX(pohead_orderdate)) AS lastpodate\nFROM pohead\nWHERE (pohead_vend_id=<? value("vend_id") ?>)\n \n \n 392\n \n \n \n 105\n 368\n 575\n 15\n \n 0\n \n Arial\n 8\n bold\n \n \n \n \n head\n vend_comments\n \n \n \n \n 134\n 305\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n podate\n firstpodate\n \n \n \n 370\n 160\n 370\n 295\n 0\n \n \n 5\n 155\n 360\n 155\n 0\n \n \n \n \n 99.8\n 229\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n contact1_name\n \n \n \n \n 100\n 260\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n contact1_fax\n \n \n \n \n \n 474\n 229\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n contact2_name\n \n \n \n \n \n 5\n 295\n 740\n 295\n 2\n \n \n \n \n \n 400\n 305\n 145\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n lypurch\n purchases\n \n \n \n \n 475\n 275\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n contact2_email\n \n \n \n \n 100\n 275\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n contact1_email\n \n \n \n \n 475\n 260\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n contact2_fax\n \n \n \n \n \n 100\n 75\n 295\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n vend_name\n \n \n \n \n \n 400\n 325\n 145\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n ytdpurch\n purchases\n \n \n \n \n \n \n 475\n 245\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n contact2_phone\n \n \n \n \n 380\n 155\n 735\n 155\n 0\n \n \n \n \n \n \n 130\n 344.893\n 103\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n backlog\n \n \n \n \n 100\n 245\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n contact1_phone\n \n \n \n \n 130\n 325\n 105\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n podate\n lastpodate\n \n \n \n \n 410\n 345\n 134.643\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n OpenBalance\n balance\n \n \n \n \n \n \n 100\n 95\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n vend_number\n \n \n \n \n \n \n \n 21\n 163\n 341\n 12\n \n 0\n \n Arial\n 8\n bold\n \n \n \n \n head\n contact1_address\n \n \n \n \n 399\n 164\n 333\n 12\n \n 0\n \n Arial\n 8\n bold\n \n \n \n \n head\n contact2_address\n \n \n \n \n 18\n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n\n \N 0 2013-07-26 16:17:54.38447 194 WOHistoryByClassCode \N \n\n Work Order History By Class Code\n WOHistoryByClassCode\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n Detail\n workOrderHistory\n detail\n \n \n head\n SELECT <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("classcode_id") ?>\n ( SELECT (classcode_code||'-'||classcode_descrip)\n FROM classcode\n WHERE (classcode_id=<? value("classcode_id") ?>) )\n <? elseif exists("classcode_pattern") ?>\n text(<? value("classcode_pattern") ?>)\n <? else ?>\n text('All Class Codes')\n <? endif ?>\n AS classcode,\n <? if exists("showOnlyTopLevel") ?>\n text('Only Show Top level Work Orders')\n <? else ?>\n text('')\n <? endif ?>\n AS lbl_toplevel,\n <? if exists("showCosts") ?>\n text('Cost')\n <? else ?>\n text('')\n <? endif ?>\n AS lbl_cost\n;\n \n \n 172\n \n \n \n \n \n 5\n 165\n 740\n 165\n 2\n \n \n \n \n \n \n \n \n \n 135\n 85\n 170\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n classcode\n \n \n \n \n \n 365\n 85\n 355\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n lbl_toplevel\n \n \n \n \n 135\n 105\n 170\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n 665\n 151\n 70\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_cost\n \n \n \n \n \n 7\n \n \n 32\n \n \n \n \n \n \n \n 5\n 25\n 740\n 25\n 2\n \n \n \n \n \n \n 660\n 8\n 70\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_cost\n \n \n \n
\n detail\n \n \n Detail\n \n 52\n \n \n 5\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n wonumber\n \n \n \n \n 85\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n warehous_code\n \n \n \n \n 509\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n f_wo_duedate\n \n \n \n \n 45\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n wo_status\n \n \n \n \n 125\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n item_number\n \n \n \n \n 229\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n uom_name\n \n \n \n \n 125\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n item_descrip2\n \n \n \n \n 670\n 0\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n f_wo_postedvalue\n \n \n \n \n 270\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n f_wo_qtyord\n \n \n \n \n 125\n 15\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n item_descrip1\n \n \n \n \n 350\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n f_wo_qtyrcv\n \n \n \n 5\n 45\n 740\n 45\n 0\n \n \n \n 430\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n f_wo_startdate\n \n \n \n
\n \n 17\n \n \n \n 95\n 0\n 113\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 86 WOHistoryByItem \N \n\n Work Order History by Item\n WOHistoryByItem\n \n Letter\n \n 50\n 50\n 50\n 50\n \n Detail\n SELECT formatWONumber(wo_id) AS wonumber,\n wo_status, warehous_code,\n formatQty(wo_qtyord) AS ordered,\n formatQty(wo_qtyrcv) AS received,\n formatDate(wo_startdate) AS startdate,\n formatDate(wo_duedate) AS duedate,\n <? if exists("showCosts") ?>\n formatCost(wo_postedvalue)\n <? else ?>\n text('')\n <? endif ?>\n AS value\n FROM wo, itemsite, whsinfo\n WHERE ((wo_itemsite_id=itemsite_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (itemsite_item_id=<? value("item_id") ?>)\n<? if exists("showOnlyTopLevel") ?>\n AND ((wo_ordtype<>'W') OR (wo_ordtype IS NULL))\n<? endif ?>\n<? if exists("warehous_id") ?>\n AND (itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n AND (wo_duedate BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>) )\nORDER BY wo_startdate DESC, wo_number, wo_subnumber;\n \n \n \n head\n SELECT item_number,\n item_descrip1,\n item_descrip2,\n <? if exists("warehous_id") ?>\n (SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>))\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse,\n <? if exists("showOnlyTopLevel") ?>\n text('Only Show Top Level Work Orders')\n <? else ?>\n text('')\n <? endif ?>\n AS lbl_toplevel,\n <? if exists("showCosts") ?>\n text('Cost')\n <? else ?>\n text('')\n <? endif ?>\n AS lbl_cost,\n formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate\n FROM item\n WHERE (item_id=<? value("item_id") ?>);\n \n \n 191\n \n \n \n \n 135\n 85\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n 550\n 85\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n 445\n 105\n 250\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n lbl_toplevel\n \n \n \n \n \n \n \n \n 550\n 65\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n 135\n 105\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n 5\n 185\n 740\n 185\n 2\n \n \n \n \n \n \n 135\n 125\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n 135\n 65\n 305\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n \n 660\n 170\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_cost\n \n \n \n \n \n \n 6\n \n \n 31\n \n \n \n \n 5\n 25\n 740\n 25\n 2\n \n \n \n \n 660\n 10\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n lbl_cost\n \n \n \n \n \n \n
\n detail\n \n \n Detail\n \n 16\n \n \n 405\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n startdate\n \n \n \n \n 170\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n warehous_code\n \n \n \n \n 490\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n duedate\n \n \n \n \n 10\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n wonumber\n \n \n \n \n 114\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n wo_status\n \n \n \n \n 235\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n ordered\n \n \n \n \n 320\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n received\n \n \n \n \n 660\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n value\n \n \n \n
\n \n 16\n \n \n 95\n 0\n 114\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 87 WOHistoryByNumber \N \n\n Work Order History by Number\n WOHistoryByNumber\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n Detail\n SELECT formatWoNumber(wo_id) AS number,\n wo_subnumber AS subnumber,\n wo_status, warehous_code,\n item_number, item_descrip1, item_descrip2, uom_name,\n formatQty(wo_qtyord) AS ordered,\n formatQty(wo_qtyrcv) AS received,\n formatDate(wo_startdate) AS startdate,\n formatDate(wo_duedate) AS duedate,\n <? if exists("showCosts") ?>\n text('W/O Cost') AS lbl_value,\n formatCost(wo_postedvalue) AS value\n <? else ?>\n text('') AS lbl_value,\n text('') AS value\n <? endif ?>\n FROM wo, itemsite, whsinfo, item, uom\n WHERE ((wo_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (CAST(wo_number AS TEXT) ~ <? value("woNumber") ?>)\n<? if exists("showOnlyTopLevel") ?>\n AND ((wo_ordtype<>'W') OR (wo_ordtype IS NULL))\n<? endif ?>\n )\nORDER BY wo_subnumber;\n \n \n \n 172\n \n \n \n \n \n \n \n \n \n \n \n 135\n 85\n 170\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n woNumber\n \n \n \n \n 5\n 165\n 740\n 165\n 2\n \n \n \n \n 670\n 151\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n lbl_value\n \n \n \n \n \n 7\n \n \n 32\n \n \n \n \n \n \n \n 5\n 25\n 740\n 25\n 2\n \n \n \n \n \n \n 665\n 13\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n lbl_value\n \n \n \n
\n detail\n \n \n Detail\n \n 52\n \n \n 125\n 15\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n item_descrip1\n \n \n \n \n 5\n 0\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n number\n \n \n \n \n 125\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n item_descrip2\n \n \n \n \n 270\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n ordered\n \n \n \n \n 350\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n received\n \n \n \n \n 670\n 0\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n value\n \n \n \n \n 65\n 0\n 20\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n wo_status\n \n \n \n \n 85\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n warehous_code\n \n \n \n \n 430\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n startdate\n \n \n \n 5\n 45\n 740\n 45\n 0\n \n \n \n 508\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n duedate\n \n \n \n \n 228\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n uom_name\n \n \n \n \n 125\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n item_number\n \n \n \n
\n \n 17\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 95\n 0\n 112\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 280 WOLabelForm \N \n\n WO Order Label\n WOLabelForm\n Labels generated for use in labeling parts out of a work order\n \n 275\n 212\n \n \n 25\n 25\n 25\n 25\n \n detail\n SELECT \n sequence_value,\n formatDate(wo_duedate) AS due_date, \n item_number,\n item_descrip1,\n prodcat_descrip \n FROM \n wo, \n itemsite,\n item,\n prodcat,\n sequence\nWHERE ( (wo_itemsite_id = itemsite_id)\nAND (wo_id=<? value("wo_id") ?>)\nAND (item_prodcat_id = prodcat_id)\nAND (itemsite_item_id = item_id)\nAND (sequence.sequence_value \nBETWEEN 1 AND 1));\n \n
\n detail\n \n \n detail\n \n 214\n \n \n 21\n 91\n 192\n 25\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n prodcat_descrip\n \n \n \n \n 10\n 182\n 212\n 25\n \n 3of9\n 5\n
\n \n detail\n item_number\n \n \n \n \n \n 62\n 122\n 265\n 17\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 145\n 5\n 77\n 17\n \n \n Arial\n 9\n bold\n \n \n \n \n detail\n due_date\n \n \n \n \n 20\n 151\n 185\n 25\n \n \n Arial\n 10\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n
\n
\n Labels generated for use in labeling parts out of a work order 0 2013-07-26 16:17:54.38447 88 WOMaterialRequirementsByComponentItem \N \n\n W/O Material Requirements By Component Item\n WOMaterialRequirementsByComponentItem\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT item_number, item_descrip1, item_descrip2,\n <? if exists("warehous_id") ?>\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) )\n <? else ?>\n text('All Sites')\n <? endif ?>\n AS warehouse\n FROM item\n WHERE (item_id=<? value("item_id") ?>);\n\n \n \n detail\n workOrderMaterial\n detail\n \n \n total\n SELECT formatQty(SUM(womatl_qtyreq)) AS required,\n formatQty(SUM(womatl_qtyiss)) AS issued,\n formatQty(SUM(noNeg(womatl_qtyreq - womatl_qtyiss))) AS balance\n FROM wo, womatl, itemsite AS parentsite, itemsite AS componentsite, item, uom\nWHERE ((womatl_wo_id=wo_id)\n AND (womatl_uom_id=uom_id)\n AND (wo_status <> 'C')\n AND (wo_itemsite_id=parentsite.itemsite_id)\n AND (womatl_itemsite_id=componentsite.itemsite_id)\n AND (parentsite.itemsite_item_id=item_id)\n AND (componentsite.itemsite_item_id=<? value("item_id") ?>)\n<? if exists("warehous_id") ?>\n AND (componentsite.itemsite_warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n )\n;\n \n \n 236\n \n \n 100\n 120\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n \n \n 100\n 145\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n \n \n \n \n 100\n 100\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n \n \n \n 100\n 80\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n 5\n 229\n 745\n 229\n 2\n \n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 51\n \n \n 10\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n wonumber\n \n \n \n \n 95\n 32\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 590\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_balance\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 515\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyiss\n \n \n \n \n 670\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_duedate\n \n \n \n \n 200\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n issuemethod\n \n \n \n \n 360\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_scrap\n \n \n \n \n 400\n 32\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 440\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyreq\n \n \n \n \n 280\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyper\n \n \n \n \n 280\n 17\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyfxd\n \n \n \n
\n \n 16\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 16\n \n \n 595\n 1\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n total\n balance\n \n \n \n \n \n 520\n 1\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n total\n issued\n \n \n \n \n 445\n 1\n 70\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n total\n required\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 89 WOMaterialRequirementsByWorkOrder \N \n\n W/O Material Requirements By Work Order\n WOMaterialRequirementsByWorkOrder\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatWONumber(wo_id) AS wonumber,\n warehous_code as warehouse,\n item_number, item_descrip1,\n item_descrip2, uom_name,\n wo_status AS status\n FROM wo, itemsite, item, uom, whsinfo\n WHERE ((wo_itemsite_id=itemsite_id)\n AND (itemsite_item_id=item_id)\n AND (item_inv_uom_id=uom_id)\n AND (itemsite_warehous_id=warehous_id)\n AND (wo_id=<? value("wo_id") ?>) );\n \n \n detail\n workOrderMaterial\n detail\n \n \n 236\n \n \n \n 100\n 165\n 100\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n status\n \n \n \n \n 100\n 100\n 150\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_number\n \n \n \n \n \n \n \n \n \n \n \n 100\n 140\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip2\n \n \n \n \n \n \n \n 100\n 75\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n warehouse\n \n \n \n \n \n 100\n 120\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n item_descrip1\n \n \n \n \n 100\n 55\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n wonumber\n \n \n \n \n \n 5\n 229\n 745\n 229\n 2\n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 51\n \n \n 10\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 430\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyreq\n \n \n \n \n 190\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n issuemethod\n \n \n \n \n 350\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_scrap\n \n \n \n \n 509\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyiss\n \n \n \n 5\n 45\n 745\n 45\n 0\n \n \n \n 10\n 30\n 300\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 670\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_duedate\n \n \n \n \n 590\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_balance\n \n \n \n \n 10\n 15\n 255\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 270\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyper\n \n \n \n \n 270\n 17\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qtyfxd\n \n \n \n
\n \n 16\n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 413 WarehouseLocationMasterList \N \n\n Warehouse Location Master List\n WarehouseLocationMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT (warehous_code || ' ' || location_name) AS whs_bin,\n warehous_code,\n formatLocationName(location_id) AS locationname,\n location_descrip,\n formatBoolYN(location_netable) AS f_netable,\n formatBoolYN(location_restrict) AS f_restrict,\n item_number,\n (item_descrip1 || ' ' || item_descrip2) AS itemdesc\n FROM location LEFT OUTER JOIN\n (SELECT locitem_location_id,\n item_number,\n item_descrip1,\n item_descrip2\n FROM locitem, item\n WHERE locitem_item_id=item_id) AS itemlocation\n ON (locitem_location_id=location_id and location_restrict=true), whsinfo\n WHERE ((location_warehous_id=warehous_id)\n<? if exists("warehous_id") ?>\n AND (warehous_id=<? value("warehous_id") ?>)\n<? endif ?>\n) ORDER BY warehous_code, location_name;\n \n \n head\n SELECT <? if exists("warehous_id") ?>\n text('Warehouse:') AS f_text,\n ( SELECT warehous_code\n FROM whsinfo\n WHERE (warehous_id=<? value("warehous_id") ?>) ) AS f_value\n <? else ?>\n text('') AS f_text,\n text('') AS f_value\n <? endif ?>\n \n \n 102\n \n \n \n 30\n 50\n 100\n 20\n \n \n Arial\n 10\n normal\n \n \n \n \n head\n f_text\n \n \n \n \n \n \n \n \n \n 140\n 50\n 175\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n f_value\n \n \n \n 5\n 100\n 745\n 100\n 2\n \n \n \n \n \n 6\n \n \n 21\n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n \n \n
\n detail\n \n detail\n locationname\n \n 21\n \n \n 225\n 5\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_restrict\n \n \n \n \n 5\n 5\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 395\n 5\n 350\n 15\n \n 0\n \n Arial\n 8\n bold\n \n \n \n \n detail\n location_descrip\n \n \n \n 5\n 0\n 745\n 0\n 0\n \n \n \n 55\n 5\n 114\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n locationname\n \n \n \n \n 170\n 5\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_netable\n \n \n \n \n \n \n detail\n \n 18\n \n \n 290\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 395\n 0\n 350\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemdesc\n \n \n \n
\n \n 18\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 30 WarehouseMasterList \N \n\n Warehouse Master List\n WarehouseMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT warehous_code,\n formatBoolYN(warehous_active) AS f_active,\n warehous_descrip,\n addr_line1 AS warehous_addr1,\n addr_line2 AS warehous_addr2,\n addr_line3 AS warehous_addr3,\n (addr_city || ',' || addr_state || ' ' || addr_postalcode) AS warehous_addr4,\n warehous_fob,\n warehous_bol_prefix,\n warehous_bol_number,\n formatBoolYN(warehous_shipping) AS f_shipping,\n warehous_counttag_prefix,\n warehous_counttag_number,\n formatBoolYN(warehous_useslips) as f_useslips\n FROM site() JOIN addr ON (addr_id=warehous_addr_id)\nLEFT OUTER JOIN sitetype ON (sitetype_id=warehous_sitetype_id) \nWHERE ((TRUE)\n<? if not exists("showInactive") ?>\n AND (warehous_active) \n<? endif ?>\n) ORDER BY warehous_code;\n \n \n head\n SELECT <? if exists("showInactive") ?>\n text('Showing Active and Inactive Warehouses')\n <? else ?>\n text('Showing Active Warehouses')\n <? endif ?>\n AS f_show;\n \n \n 61\n \n 5\n 55\n 745\n 55\n 2\n \n \n \n 10\n 40\n 450\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n head\n f_show\n \n \n \n \n
\n detail\n \n \n detail\n \n 151\n \n \n 615\n 110\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_shipping\n \n \n \n 5\n 145\n 745\n 145\n 0\n \n \n \n 120\n 5\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n \n 295\n 90\n 450\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_fob\n \n \n \n \n 350\n 110\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_bol_number\n \n \n \n \n 120\n 25\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_active\n \n \n \n \n 295\n 5\n 450\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_descrip\n \n \n \n \n 295\n 110\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_bol_prefix\n \n \n \n \n \n \n 295\n 125\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_counttag_prefix\n \n \n \n \n \n 295\n 70\n 450\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_addr4\n \n \n \n \n 350\n 140\n 450\n 140\n 0\n \n \n \n 295\n 125\n 345\n 125\n 0\n \n \n \n \n \n 350\n 125\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_counttag_number\n \n \n \n 350\n 125\n 450\n 125\n 0\n \n \n \n 295\n 25\n 450\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_addr1\n \n \n \n \n \n 615\n 125\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_useslips\n \n \n \n \n 295\n 55\n 450\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_addr3\n \n \n \n \n \n 295\n 40\n 450\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_addr2\n \n \n \n 295\n 140\n 345\n 140\n 0\n \n \n
\n \n 16\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 95\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 106 UsersMasterList \N \n\n Users Master List\n UsersMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n select usr_username,\n usr_propername,\n usr_initials,\n formatBoolYN(usr_active) AS f_active,\n formatBoolYN(usr_agent) AS f_pa,\n locale_code\n FROM usr, locale\n WHERE ((usr_locale_id=locale_id)\n<? if not exists("showInactive") ?>\n AND (usr_active=true)\n<? endif ?>\n)\nORDER BY usr_username;\n \n \n 76\n \n \n \n \n \n \n \n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 434\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_pa\n \n \n \n \n 114\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_active\n \n \n \n \n 375\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n usr_initials\n \n \n \n \n 170\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n usr_propername\n \n \n \n \n 10\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n usr_username\n \n \n \n \n 500\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n locale_code\n \n \n \n
\n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 300 VendorAddressList \N \n\n Vendor Address List\n VendorAddressList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT vend_number, vend_name\n FROM vendinfo\n WHERE (vend_id=<? value("vend_id") ?>);\n \n \n \n detail\n SELECT vendaddr_code as num,\n vendaddr_name as name,\n addr_line1 AS address,\n (addr_city || ', ' || addr_state || ' ' || addr_postalcode) AS citystatezip\n FROM vendaddrinfo\n LEFT OUTER JOIN addr ON (vendaddr_addr_id=addr_id)\n WHERE (vendaddr_vend_id=<? value("vend_id") ?>) \nORDER BY vendaddr_code;\n \n \n 171\n \n \n \n \n \n \n 135\n 70\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n vend_number\n \n \n \n \n 5\n 165\n 745\n 165\n 2\n \n \n \n \n 135\n 90\n 300\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n vend_name\n \n \n \n \n \n 6\n \n \n 21\n \n \n \n \n \n 5\n 15\n 745\n 15\n 2\n \n \n
\n detail\n \n \n detail\n \n 17\n \n \n 5\n 0\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n num\n \n \n \n \n 65\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n name\n \n \n \n \n 545\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n citystatezip\n \n \n \n \n 270\n 0\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n address\n \n \n \n
\n \n 17\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 105\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 260 ViewAPCheckRunEditList \N \n\n View Check Run Edit List\n ViewAPCheckRunEditList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT CASE WHEN checkhead_void THEN 0\n ELSE checkhead_amount END AS amt_check,\n CASE WHEN checkhead_void THEN 0\n ELSE currToBase(checkhead_curr_id,checkhead_amount,\n checkhead_checkdate)\n END AS base_amt_check,\n checkhead_id AS primaryid,\n -1 AS secondaryid,\n formatBoolYN(checkhead_void) AS f_void,\n formatBoolYN(checkhead_printed) AS f_printed,\n TEXT(checkhead_number) AS number,\n (checkrecip_number || '-' || checkrecip_name) AS description,\n formatDate(checkhead_checkdate) AS f_checkdate,\n formatMoney(checkhead_amount) AS f_amount,\n formatMoney(currtobase(checkhead_curr_id,checkhead_amount,checkhead_checkdate)) AS f_baseamount,\n currconcat(checkhead_curr_id) AS currAbbr,\n checkhead_number,\n 1 AS orderby\n FROM checkhead LEFT OUTER JOIN\n checkrecip ON ((checkrecip_id=checkhead_recip_id)\n\t\t AND (checkrecip_type=checkhead_recip_type))\n WHERE ((checkhead_bankaccnt_id=<? value("bankaccnt_id") ?>)\n AND (NOT checkhead_posted)\n AND (NOT checkhead_replaced)\n AND (NOT checkhead_deleted)\n<? if exists("vend_id") ?>\n AND (checkrecip_type='V')\n AND (checkrecip_id=<? value("vend_id") ?>)\n<? elseif exists("vendtype_id") ?>\n AND (checkrecip_type='V')\n AND (checkrecip_id IN (SELECT vend_id\n FROM vendinfo\n WHERE (vend_vendtype_id=<? value("vendtype_id") ?>)))\n<? elseif exists("vendtype_pattern") ?>\n AND (checkrecip_type='V')\n AND (checkrecip_id IN (SELECT vend_id\n FROM vendinfo, vendtype\n WHERE ((vend_vendtype_id=vendtype_id)\n AND (vendtype_code ~ <? value("vendtype_pattern") ?>))))\n<? endif ?>\n )\n\nUNION SELECT 0 AS amt_check,\n 0 AS base_amt_check,\n checkitem_checkhead_id AS primaryid,\n checkitem_id AS secondaryid,\n '' AS f_void,\n '' AS f_printed,\n CASE WHEN (checkitem_ranumber IS NOT NULL) THEN checkitem_ranumber::TEXT\n\t ELSE checkitem_vouchernumber\n\t END AS number,\n CASE WHEN (checkitem_cmnumber IS NOT NULL) THEN checkitem_cmnumber::TEXT\n\t ELSE checkitem_invcnumber\n\t END AS description,\n '' AS f_checkdate,\n formatMoney(checkitem_amount) AS f_amount,\n formatMoney(currtobase(checkitem_curr_id,checkitem_amount,checkhead_checkdate)) AS f_baseamount,\n currconcat(checkitem_curr_id) AS currAbbr,\n checkhead_number,\n 2 AS orderby\n FROM checkitem, checkhead\n WHERE ( (checkitem_checkhead_id=checkhead_id)\n AND (checkhead_bankaccnt_id=<? value("bankaccnt_id") ?>)\n AND (NOT checkhead_posted)\n AND (NOT checkhead_replaced)\n AND (NOT checkhead_deleted)\n<? if exists("vend_id") ?>\n AND (checkhead_recip_type='V')\n AND (checkhead_recip_id=<? value("vend_id") ?>)\n<? elseif exists("vendtype_id") ?>\n AND (checkhead_recip_type='V')\n AND (checkhead_recip_id IN (SELECT vend_id\n FROM vendinfo\n WHERE (vend_vendtype_id=<? value("vendtype_id") ?>)))\n<? elseif exists("vendtype_pattern") ?>\n AND (checkhead_recip_type='V')\n AND (checkhead_recip_id IN (SELECT vend_id\n FROM vendinfo, vendtype\n WHERE ((vend_vendtype_id=vendtype_id)\n AND (vendtype_code ~ <? value("vendtype_pattern") ?>))))\n<? endif ?>\n )\nORDER BY checkhead_number, primaryid, orderby;\n \n \n head\n SELECT (bankaccnt_name || '-' || bankaccnt_descrip) AS bankaccnt\n FROM bankaccnt\n WHERE (bankaccnt_id=<? value("bankaccnt_id") ?>);\n \n \n 127\n \n \n 5\n 112\n 745\n 112\n 2\n \n \n \n \n \n \n 145\n 55\n 350\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n bankaccnt\n \n \n \n \n \n \n \n \n \n \n \n \n 11\n \n \n 28\n \n \n \n 5\n 20\n 745\n 20\n 2\n \n \n \n \n \n \n \n
\n detail\n \n detail\n orderid\n \n \n \n detail\n \n 21\n \n \n 130\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n number\n \n \n \n \n 585\n 0\n 53\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n currAbbr\n \n \n \n \n 5\n 0\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_void\n \n \n \n \n 65\n 0\n 55\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_printed\n \n \n \n \n 465\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_checkdate\n \n \n \n \n 245\n 0\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n description\n \n \n \n \n 645\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_amount\n \n \n \n
\n \n 21\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 61\n \n \n 645\n 5\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n amt_check\n \n qty\n \n \n \n 645\n 20\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n base_amt_check\n \n qty\n \n \n \n 567\n 2\n 745\n 2\n 2\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 287 VoucherRegister \N \n\n Voucher Register\n VoucherRegister\n \n Letter\n \n 50\n 50\n 50\n 50\n \n head\n SELECT formatDate(<? value("startDate") ?>, 'Earliest') AS startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS enddate,\n <? if exists("accnt_id") ?>\n ( SELECT (accnt_number || '-' || accnt_descrip)\n FROM accnt\n WHERE (accnt_id=<? value("accnt_id") ?>) )\n <? else ?>\n text('All Accounts')\n <? endif ?>\n AS accnt,\n <? if exists("showUsernames") ?>\n text('Username')\n <? else ?>\n text('')\n <? endif ?>\n AS f_username\n \n \n detail\n SELECT gltrans_id,\n formatDate(gltrans_date) AS transdate,\n vend_number, vend_name,\n gltrans_doctype,\n gltrans_docnumber,\n firstLine(gltrans_notes) AS transnotes,\n (formatGLAccount(accnt_id) || ' - ' || accnt_descrip) AS account,\n CASE WHEN (gltrans_amount < 0) THEN formatMoney(ABS(gltrans_amount))\n ELSE ''\n END AS f_debit,\n CASE WHEN (gltrans_amount > 0) THEN formatMoney(gltrans_amount)\n ELSE ''\n END AS f_credit,\n <? if exists("showUsernames") ?>\n gltrans_username\n <? else ?>\n text('')\n <? endif ?>\n AS f_username\n FROM accnt, gltrans LEFT OUTER JOIN vohead JOIN vendinfo ON (vohead_vend_id=vend_id) ON (gltrans_doctype='VO' and gltrans_docnumber=vohead_number)\n WHERE ((gltrans_accnt_id=accnt_id)\n AND (gltrans_date BETWEEN <? value("startDate") ?> AND <? value("endDate") ?>)\n<? if exists("accnt_id") ?>\n AND (gltrans_accnt_id=<? value("accnt_id") ?>)\n<? endif ?>\n AND (gltrans_source='A/P')\n )\nORDER BY gltrans_created DESC, gltrans_sequence, gltrans_amount;\n \n \n 221\n \n \n 545\n 70\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n startdate\n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n 670\n 170\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_username\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 545\n 90\n 200\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n enddate\n \n \n \n \n 140\n 70\n 290\n 20\n \n \n Arial\n 10\n bold\n \n \n \n \n head\n accnt\n \n \n \n \n \n 6\n \n \n 56\n \n \n \n \n \n \n \n \n \n \n \n 670\n 5\n 80\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n head\n f_username\n \n \n \n 5\n 50\n 745\n 50\n 2\n \n \n
\n detail\n \n \n detail\n \n 46\n \n \n 245\n 0\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n transnotes\n \n \n \n \n 15\n 30\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_number\n \n \n \n \n 245\n 15\n 260\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n account\n \n \n \n \n 160\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_doctype\n \n \n \n \n 10\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n transdate\n \n \n \n \n 510\n 30\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_debit\n \n \n \n \n 105\n 30\n 265\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_name\n \n \n \n \n 595\n 30\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_credit\n \n \n \n \n 620\n 0\n 120\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_username\n \n \n \n \n 160\n 15\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n gltrans_docnumber\n \n \n \n
\n \n 18\n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 458 UsageStatistics \N \n\n Item Usage Statistics\n UsageStatistics\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n usageStatistics\n detail\n \n \n 221\n \n \n \n \n \n \n \n \n 5\n 215\n 745\n 215\n 2\n \n \n \n \n \n \n 10\n 38\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 36\n \n \n \n \n \n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 37\n \n \n 425\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_sold\n \n \n \n \n 10\n 0\n 35\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n warehous_code\n \n \n \n 3\n 31\n 743\n 31\n 0\n \n \n \n 665\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_transfer\n \n \n \n \n 505\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_scrap\n \n \n \n \n 585\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_adjust\n \n \n \n \n 345\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_issued\n \n \n \n \n 65\n 15\n 250\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n itemdescrip\n \n \n \n \n 65\n 0\n 185\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 260\n 0\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_received\n \n \n \n
\n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 142 VendorMasterList \N \n\n Vendor Master List\n VendorMasterList\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n vendors\n detail\n \n \n 153\n \n \n \n \n \n 8\n 149\n 748\n 149\n 2\n \n \n \n 10\n 43\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 36\n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n
\n detail\n \n \n detail\n \n 91\n \n \n 175\n 30\n 565\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n addr_line2\n \n \n \n \n 515\n 60\n 204\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n addr_zip\n \n \n \n \n 175\n 0\n 565\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_name\n \n \n \n \n 175\n 15\n 565\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n addr_line1\n \n \n \n \n 175\n 60\n 204\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n addr_city\n \n \n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vend_number\n \n \n \n \n 175\n 45\n 565\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n addr_line3\n \n \n \n \n 370\n 60\n 140\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n addr_state\n \n \n \n
\n \n 21\n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 186 VendorTypesMasterList \N \n\n Vendor Types Master List\n VendorTypesMasterList\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT vendtype_id,\n vendtype_code,\n vendtype_descrip\n FROM vendtype\nORDER BY vendtype_code;\n \n \n 76\n \n \n 5\n 70\n 745\n 70\n 2\n \n \n \n \n \n \n 6\n \n \n 21\n \n 5\n 15\n 745\n 15\n 2\n \n \n \n \n
\n detail\n \n \n detail\n \n 16\n \n \n 175\n 0\n 565\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vendtype_descrip\n \n \n \n \n 10\n 0\n 150\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vendtype_code\n \n \n \n
\n \n 16\n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 279 WOLabel \N \n\n WO Order Label\n WOLabel\n Labels generated for use in labeling parts out of a work order\n \n \n \n 0.05\n 0.05\n \n \n 400\n 333\n \n \n 25\n 25\n 25\n 25\n \n detail\n SELECT \n sequence_value,\n formatDate(wo_duedate) AS due_date, \n item_number,\n item_descrip1,\n COALESCE(prodcat_descrip, '') AS prodcat_descrip \n FROM wo JOIN itemsite ON (itemsite_id=wo_itemsite_id)\n JOIN item ON (item_id=itemsite_item_id)\n JOIN sequence ON (sequence.sequence_value BETWEEN 1 AND <? value("labelTo") ?>)\n LEFT OUTER JOIN prodcat ON (prodcat_id=item_prodcat_id)\nWHERE (wo_id=<? value("wo_id") ?>);\n\n \n
\n detail\n \n \n detail\n \n 218\n \n \n 10\n 150\n 330\n 25\n \n \n Arial\n 12\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 10\n 95\n 330\n 25\n \n \n Arial\n 12\n bold\n \n \n \n \n detail\n prodcat_descrip\n \n \n \n \n 10\n 180\n 330\n 25\n \n 3of9\n 5\n \n 0.01\n \n detail\n item_number\n \n \n \n \n 150\n 35\n 120\n 18\n \n \n Arial\n 12\n bold\n \n \n \n \n detail\n due_date\n \n \n \n \n 75\n 125\n 265\n 18\n \n \n Arial\n 12\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n
\n
\n Labels generated for use in labeling parts out of a work order 0 2013-07-26 16:17:54.38447 456 Items \N \n\n Items\n Items\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n SELECT\n <? if exists("ListNumericItemNumbersFirst") ?>\n DISTINCT ON ( toNumeric(item_number, 999999999999999), item_number )\n <? else ?>\n DISTINCT ON ( item_number )\n <? endif ?>\n item_number,\n item_descrip1,\n item_descrip2,\n formatBoolYN(item_active) AS active,\n CASE WHEN (item_type='M') THEN 'Manufactured'\n WHEN (item_type='P') THEN 'Purchased'\n WHEN (item_type='F') THEN 'Phantom'\n WHEN (item_type='B') THEN 'Breeder'\n WHEN (item_type='C') THEN 'Co-Product'\n WHEN (item_type='Y') THEN 'By-Product'\n WHEN (item_type='R') THEN 'Reference'\n WHEN (item_type='T') THEN 'Tooling'\n WHEN (item_type='O') THEN 'Outside Process'\n WHEN (item_type='J') THEN 'Job'\n WHEN (item_type='K') THEN 'Kit'\n WHEN (item_type='L') THEN 'Planning'\n ELSE item_type\n END AS itemtype,\n iuom.uom_name AS invuom,\n itemcapuom(item_id) AS capuom,\n itemaltcapuom(item_id) AS altcapuom,\n puom.uom_name AS priceuom,\n puom.uom_name AS shipuom,\n formatRatio(itemcapinvrat(item_id)) AS capratio,\n formatRatio(itemaltcapinvrat(item_id)) AS altcapratio,\n formatRatio(iteminvpricerat(item_id)) AS shipratio,\n formatRatio(iteminvpricerat(item_id)) AS priceratio,\n formatBoolYN(item_sold) AS sold,\n formatBoolYN(item_exclusive) AS exclusive,\n formatBoolYN(item_picklist) AS picklist,\n formatBoolYN(item_config) AS configured,\n formatWeight(item_prodweight) AS prodweight,\n formatWeight(item_packweight) AS packweight,\n classcode_code\nFROM item\n JOIN classcode ON (item_classcode_id=classcode_id)\n JOIN uom iuom ON (item_inv_uom_id=iuom.uom_id)\n JOIN uom puom ON (item_price_uom_id=puom.uom_id)\n<? if exists("itemgrp_id") ?>\n JOIN itemgrpitem ON (item_id=itemgrpitem_item_id)\n JOIN itemgrp ON (itemgrp_id=itemgrpitem_itemgrp_id)\n<? endif ?>\n<? foreach("char_id_text_list") ?>\n LEFT OUTER JOIN charass charass_alias<? literal("char_id_text_list") ?> \n ON ((charass_alias<? literal("char_id_text_list") ?>.charass_target_type='I') \n AND (charass_alias<? literal("char_id_text_list") ?>.charass_target_id=item_id)\n AND (charass_alias<? literal("char_id_text_list") ?>.charass_char_id=<? value("char_id_text_list") ?>))\n LEFT OUTER JOIN char char_alias<? literal("char_id_text_list") ?> \n ON (charass_alias<? literal("char_id_text_list") ?>.charass_char_id=char_alias<? literal("char_id_text_list") ?>.char_id)\n<? endforeach ?>\n<? foreach("char_id_list_list") ?>\n LEFT OUTER JOIN charass charass_alias<? literal("char_id_list_list") ?> \n ON ((charass_alias<? literal("char_id_list_list") ?>.charass_target_type='I') \n AND (charass_alias<? literal("char_id_list_list") ?>.charass_target_id=item_id)\n AND (charass_alias<? literal("char_id_list_list") ?>.charass_char_id=<? value("char_id_list_list") ?>))\n LEFT OUTER JOIN char char_alias<? literal("char_id_list_list") ?> \n ON (charass_alias<? literal("char_id_list_list") ?>.charass_char_id=char_alias<? literal("char_id_list_list") ?>.char_id)\n<? endforeach ?>\n<? foreach("char_id_date_list") ?>\n LEFT OUTER JOIN charass charass_alias<? literal("char_id_date_list") ?> \n ON ((charass_alias<? literal("char_id_date_list") ?>.charass_target_type='I') \n AND (charass_alias<? literal("char_id_date_list") ?>.charass_target_id=item_id)\n AND (charass_alias<? literal("char_id_date_list") ?>.charass_char_id=<? value("char_id_date_list") ?>))\n LEFT OUTER JOIN char char_alias<? literal("char_id_date_list") ?> \n ON (charass_alias<? literal("char_id_date_list") ?>.charass_char_id=char_alias<? literal("char_id_date_list") ?>.char_id)\n<? endforeach ?>\nWHERE ( true\n<? if exists("search_pattern") ?>\n AND ( (item_number ~* <? value("search_pattern") ?>)\n OR (item_descrip1 || item_descrip2 ~* <? value("search_pattern") ?>) )\n<? endif ?>\n<? if exists("showPurchased") ?>\n AND (item_type IN ('P', 'O'))\n<? elseif exists("showManufactured") ?>\n AND (item_type IN ('M', 'F', 'B','K'))\n<? elseif exists("showSold") ?>\n AND (item_sold)\n<? endif ?>\n<? if exists("item_type") ?>\n AND (item_type=<? value("item_type") ?>)\n<? endif ?>\n<? if not exists("showInactive") ?>\n AND (item_active)\n<? endif ?>\n<? if exists("classcode_id") ?>\n AND (item_classcode_id=<? value("classcode_id") ?>)\n<? endif ?>\n<? if exists("prodcat_id") ?>\n AND (item_prodcat_id=<? value("prodcat_id") ?>)\n<? endif ?>\n<? if exists("freightclass_id") ?>\n AND (item_freightclass_id=<? value("freightclass_id") ?>)\n<? endif ?>\n<? if exists("itemgrp_id") ?>\n AND (itemgrp_id=<? value("itemgrp_id") ?>)\n<? endif ?>\n<? if exists("item_number_pattern") ?>\n AND (item_number ~* <? value("item_number_pattern") ?>)\n<? endif ?>\n<? if exists("item_descrip_pattern") ?>\n AND (item_descrip1 || item_descrip2 ~* <? value("item_descrip_pattern") ?>)\n<? endif ?>\n<? if exists("classcode_pattern") ?>\n AND (classcode_code ~* <? value("classcode_pattern") ?>)\n<? endif ?>\n<? if exists("prodcat_pattern") ?>\n AND (prodcat_code ~* <? value("prodcat_pattern") ?>)\n<? endif ?>\n<? if exists("freightclass_pattern") ?>\n AND (freightclass_code ~* <? value("freightclass_pattern") ?>)\n<? endif ?>\n<? literal("charClause") ?>\n) ORDER BY\n<? if exists("ListNumericItemNumbersFirst") ?>\n toNumeric(item_number, 999999999999999),\n<? endif ?>\n item_number;\n \n \n 241\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 5\n 235\n 745\n 235\n 2\n \n \n \n \n 10\n 28\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 81\n \n \n \n 5\n 75\n 745\n 75\n 2\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n unnamed\n \n \n detail\n \n 81\n \n \n 565\n 30\n 60\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n picklist\n \n \n \n \n 10\n 15\n 250\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 565\n 15\n 60\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n exclusive\n \n \n \n \n 433\n 45\n 90\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n priceratio\n \n \n \n \n 10\n 45\n 250\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n itemtype\n \n \n \n \n 640\n 0\n 100\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n packweight\n \n \n \n \n 10\n 30\n 250\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n item_descrip2\n \n \n \n \n 433\n 30\n 90\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n altcapratio\n \n \n \n \n 275\n 60\n 100\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n shipuom\n \n \n \n \n 10\n 0\n 250\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n detail\n item_number\n \n \n \n 5\n 75\n 745\n 75\n 0\n \n \n \n 565\n 0\n 60\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n sold\n \n \n \n \n 565\n 45\n 60\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n configured\n \n \n \n \n 275\n 45\n 100\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n priceuom\n \n \n \n \n 275\n 0\n 100\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n invuom\n \n \n \n \n 10\n 60\n 50\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n active\n \n \n \n \n 433\n 15\n 90\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n capratio\n \n \n \n \n 104\n 60\n 66\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n classcode_code\n \n \n \n \n 275\n 30\n 100\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n altcapuom\n \n \n \n \n 275\n 15\n 100\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n capuom\n \n \n \n \n 640\n 15\n 100\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n prodweight\n \n \n \n \n 433\n 60\n 90\n 15\n \n \n Arial\n 8\n 40\n \n \n \n \n detail\n shipratio\n \n \n \n
\n \n 16\n \n \n \n \n 80\n 0\n 140\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 715\n 0\n 30\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 451 WOSchedule \N \n\n Work Order Schedule\n WOSchedule\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n Detail\n workOrderSchedule\n detail\n \n \n Head\n SELECT formatDate(<? value("startDate") ?>, 'Earliest') AS f_startdate,\n formatDate(<? value("endDate") ?>, 'Latest') AS f_enddate,\n<? if exists("warehous_id") ?>\n warehous_code\nFROM whsinfo\nWHERE (warehous_id=<? value("warehous_id") ?>);\n<? else ?>\n TEXT('All Sites') AS warehous_code;\n<? endif ?>\n\n \n \n 191\n \n 5\n 185\n 740\n 185\n 2\n \n \n \n \n \n \n \n \n \n \n \n \n \n 10\n 38\n 725\n 15\n \n 12\n \n Arial\n 10\n bold\n \n \n \n \n Parameter Query\n filter\n \n \n \n \n \n 6\n \n \n 31\n \n \n \n \n \n \n \n \n 5\n 25\n 740\n 25\n 2\n \n \n \n \n
\n detail\n \n \n Detail\n \n 52\n \n \n 405\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n ordered\n \n \n \n \n 190\n 30\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n item_descrip2\n \n \n \n \n 360\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n uom_name\n \n \n \n \n 190\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n item_number\n \n \n \n \n 140\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n warehous_code\n \n \n \n \n 490\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n received\n \n \n \n \n 10\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n wonumber\n \n \n \n 5\n 45\n 740\n 45\n 0\n \n \n \n 190\n 15\n 200\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n item_descrip1\n \n \n \n \n 95\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n wo_status\n \n \n \n \n 575\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n startdate\n \n \n \n \n 660\n 0\n 80\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Detail\n duedate\n \n \n \n
\n \n 17\n \n \n 95\n 0\n 112\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n
\n \N 0 2013-07-26 16:17:54.38447 \. -- -- Data for Name: rjctcode; Type: TABLE DATA; Schema: public; Owner: admin -- COPY rjctcode (rjctcode_id, rjctcode_code, rjctcode_descrip) FROM stdin; 17 DAMAGED Damaged Material 18 WRONG Wrong Item \. -- -- Data for Name: rsncode; Type: TABLE DATA; Schema: public; Owner: admin -- COPY rsncode (rsncode_id, rsncode_code, rsncode_descrip, rsncode_doctype) FROM stdin; 1 PREPAY Prepayment \N 2 RETURN Return for Credit \N 3 DAMAGE Damaged \N 4 WRONG Wrong Product \N \. -- -- Data for Name: sale; Type: TABLE DATA; Schema: public; Owner: admin -- COPY sale (sale_id, sale_name, sale_descrip, sale_ipshead_id, sale_startdate, sale_enddate) FROM stdin; \. -- -- Data for Name: salesaccnt; Type: TABLE DATA; Schema: public; Owner: admin -- COPY salesaccnt (salesaccnt_id, salesaccnt_custtype_id, salesaccnt_prodcat_id, salesaccnt_warehous_id, salesaccnt_sales_accnt_id, salesaccnt_credit_accnt_id, salesaccnt_cos_accnt_id, salesaccnt_custtype, salesaccnt_prodcat, salesaccnt_returns_accnt_id, salesaccnt_cor_accnt_id, salesaccnt_cow_accnt_id, salesaccnt_saletype_id, salesaccnt_shipzone_id) FROM stdin; 32 -1 -1 -1 103 121 108 .* .* \N \N \N -1 -1 \. -- -- Data for Name: salescat; Type: TABLE DATA; Schema: public; Owner: admin -- COPY salescat (salescat_id, salescat_active, salescat_name, salescat_descrip, salescat_sales_accnt_id, salescat_prepaid_accnt_id, salescat_ar_accnt_id) FROM stdin; 1 t PRODUCT Product Sales Category 103 121 106 2 t SERVICE Professional Services Sale 129 121 106 \. -- -- Data for Name: salesrep; Type: TABLE DATA; Schema: public; Owner: admin -- COPY salesrep (salesrep_id, salesrep_active, salesrep_number, salesrep_name, salesrep_commission, salesrep_method, salesrep_emp_id) FROM stdin; 29 t 10 Inside Sales 0.0000 \N \N \. -- -- Data for Name: saletype; Type: TABLE DATA; Schema: public; Owner: admin -- COPY saletype (saletype_id, saletype_code, saletype_descr, saletype_active) FROM stdin; 1 CUST Customer t 2 INT Internet t 3 REP Sales Rep t \. -- -- Data for Name: schemaord; Type: TABLE DATA; Schema: public; Owner: admin -- COPY schemaord (schemaord_id, schemaord_name, schemaord_order) FROM stdin; \. -- -- Data for Name: script; Type: TABLE DATA; Schema: public; Owner: admin -- COPY script (script_id, script_name, script_order, script_enabled, script_source, script_notes) FROM stdin; 1 storedProcErrorLookup 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2009 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\n/* This simplified version of xtuple/common/storedProcErrorLookup.cpp takes\n an error structure, allowing packages to define their own errors.\n*/\nfunction storedProcErrorLookup(procName, returnVal, errorStruct)\n{\n var message;\n\n if (null != errorStruct)\n {\n if (procName in errorStruct &&\n returnVal in errorStruct[procName])\n message = errorStruct[procName][returnVal];\n else\n {\n procName = procName.toLowerCase();\n for (var tmpProcName in errorStruct)\n if (procName == tmpProcName.toLowerCase())\n {\n message = errorStruct[tmpProcName][returnVal];\n break;\n }\n }\n\n if (message != null)\n return "

" + message\n + qsTr("
(%1, %2)
").arg(procName).arg(returnVal);\n }\n\n return toolbox.storedProcErrorLookup(procName, returnVal);\n}\n this scripted version of the error lookup routine allows packages to define their own messages \. -- -- Data for Name: sequence; Type: TABLE DATA; Schema: public; Owner: admin -- COPY sequence (sequence_value) FROM stdin; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 \. -- -- Data for Name: shift; Type: TABLE DATA; Schema: public; Owner: admin -- COPY shift (shift_id, shift_number, shift_name) FROM stdin; 1 1ST First Shift \. -- -- Data for Name: shipchrg; Type: TABLE DATA; Schema: public; Owner: admin -- COPY shipchrg (shipchrg_id, shipchrg_name, shipchrg_descrip, shipchrg_custfreight, shipchrg_handling) FROM stdin; 3 CUST-PAY Customer Pays Shipping t \N 4 WE-PAY We Pay Shipping f \N 5 CUST-PICKUP Customer Pickup f \N \. -- -- Data for Name: shipdata; Type: TABLE DATA; Schema: public; Owner: admin -- COPY shipdata (shipdata_cohead_number, shipdata_cosmisc_tracknum, shipdata_cosmisc_packnum_tracknum, shipdata_weight, shipdata_base_freight, shipdata_total_freight, shipdata_shipper, shipdata_billing_option, shipdata_package_type, shipdata_void_ind, shipdata_lastupdated, shipdata_shiphead_number, shipdata_base_freight_curr_id, shipdata_total_freight_curr_id) FROM stdin; \. -- -- Data for Name: shipdatasum; Type: TABLE DATA; Schema: public; Owner: admin -- COPY shipdatasum (shipdatasum_cohead_number, shipdatasum_cosmisc_tracknum, shipdatasum_cosmisc_packnum_tracknum, shipdatasum_weight, shipdatasum_base_freight, shipdatasum_total_freight, shipdatasum_shipper, shipdatasum_billing_option, shipdatasum_package_type, shipdatasum_lastupdated, shipdatasum_shipped, shipdatasum_shiphead_number, shipdatasum_base_freight_curr_id, shipdatasum_total_freight_curr_id) FROM stdin; \. -- -- Data for Name: shipform; Type: TABLE DATA; Schema: public; Owner: admin -- COPY shipform (shipform_id, shipform_name, shipform_report_id, shipform_report_name) FROM stdin; 12 STD-PACKING-LIST 80 PackingList \. -- -- Data for Name: shiphead; Type: TABLE DATA; Schema: public; Owner: admin -- COPY shiphead (shiphead_id, shiphead_order_id, shiphead_order_type, shiphead_number, shiphead_shipvia, shiphead_freight, shiphead_freight_curr_id, shiphead_notes, shiphead_shipped, shiphead_shipdate, shiphead_shipchrg_id, shiphead_shipform_id, shiphead_sfstatus, shiphead_tracknum) FROM stdin; \. -- -- Data for Name: shipitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY shipitem (shipitem_id, shipitem_orderitem_id, shipitem_shiphead_id, shipitem_qty, shipitem_shipped, shipitem_shipdate, shipitem_transdate, shipitem_trans_username, shipitem_invoiced, shipitem_invcitem_id, shipitem_value, shipitem_invhist_id) FROM stdin; \. -- -- Data for Name: shiptoinfo; Type: TABLE DATA; Schema: public; Owner: admin -- COPY shiptoinfo (shipto_id, shipto_cust_id, shipto_name, shipto_salesrep_id, shipto_comments, shipto_shipcomments, shipto_shipzone_id, shipto_shipvia, shipto_commission, shipto_shipform_id, shipto_shipchrg_id, shipto_active, shipto_default, shipto_num, shipto_ediprofile_id, shipto_cntct_id, shipto_addr_id, shipto_taxzone_id) FROM stdin; \. -- -- Data for Name: shipvia; Type: TABLE DATA; Schema: public; Owner: admin -- COPY shipvia (shipvia_id, shipvia_code, shipvia_descrip) FROM stdin; 13 UPS-Ground UPS Ground 14 UPS-Next Day UPS-Next Day 15 SAIA SAIA 17 AVERITT Averitt 18 DHL DHL 19 FEDEX-Ground FEDEX-Ground 20 FEDEX-Next Day FEDEX-Next Day 21 ROADWAY ROADWAY 22 USF USF 23 WATKINS Watkins 24 YELLOW Yellow \. -- -- Data for Name: shipzone; Type: TABLE DATA; Schema: public; Owner: admin -- COPY shipzone (shipzone_id, shipzone_name, shipzone_descrip) FROM stdin; 35 ZONE1 Zone 1 43 ZONE9 Zone 9 41 ZONE7 Zone 7 40 ZONE6 Zone 6 42 ZONE8 Zone 8 39 ZONE5 Zone 5 38 ZONE4 Zone 4 37 ZONE3 Zone 3 36 ZONE2 Zone 2 45 ZONE0 Zone 0 \. -- -- Data for Name: sitetype; Type: TABLE DATA; Schema: public; Owner: admin -- COPY sitetype (sitetype_id, sitetype_name, sitetype_descrip) FROM stdin; 1 WHSE Warehouse \. -- -- Data for Name: sltrans; Type: TABLE DATA; Schema: public; Owner: admin -- COPY sltrans (sltrans_id, sltrans_created, sltrans_date, sltrans_sequence, sltrans_accnt_id, sltrans_source, sltrans_docnumber, sltrans_misc_id, sltrans_amount, sltrans_notes, sltrans_journalnumber, sltrans_posted, sltrans_doctype, sltrans_username, sltrans_gltrans_journalnumber, sltrans_rec) FROM stdin; \. -- -- Data for Name: sltrans_backup; Type: TABLE DATA; Schema: public; Owner: admin -- COPY sltrans_backup (sltrans_old_id, sltrans_new_id) FROM stdin; \. -- -- Data for Name: source; Type: TABLE DATA; Schema: public; Owner: admin -- COPY source (source_id, source_module, source_name, source_descrip) FROM stdin; 1 CRM ADDR Address 2 Products BBH Breeder Bill of Materials 3 Products BBI Breeder Bill of Materials Item 4 Products BMH Bill of Materials 5 Products BMI Bill of Materials Item 6 Products BOH Bill of Operations 7 Products BOI Bill of Operations Item 8 CRM CRMA CRM Account 9 CRM T Contact 10 Sales C Customer 11 System EMP Employee 12 CRM INCDT Incident 13 Products I Item 14 Inventory IS Item Site 15 Purchase IR Item Source 16 Inventory L Location 17 Inventory LS Lot Serial 18 CRM OPP Opportunity 19 CRM J Project 20 Purchase P Purchase Order 21 Purchase PI Purchase Order Item 22 Sales RA Return Authorization 23 Sales RI Return Authorization Item 24 Sales Q Quote 25 Sales QI Quote Item 26 Sales S Sales Order 27 Sales SI Sales Order Item 28 Inventory TO Transfer Order 29 Inventory TI Transfer Order Item 30 Purchase V Vendor 31 Inventory WH Site 32 Manufacture W Work Order 33 CRM TD Todo Item 34 CRM TA Tasks 35 CRM PSPCT Prospect 36 Sales SR Sales Rep 37 Accounting TAXAUTH Tax Authority 38 System USR User \. -- -- Data for Name: state; Type: TABLE DATA; Schema: public; Owner: admin -- COPY state (state_id, state_name, state_abbr, state_country_id) FROM stdin; 1 Alabama AL 230 2 Alaska AK 230 3 American Samoa AS 230 4 Arizona AZ 230 5 Arkansas AR 230 6 California CA 230 7 Colorado CO 230 8 Connecticut CT 230 9 Delaware DE 230 10 District Of Columbia DC 230 11 Federated States Of Micronesia FM 230 12 Florida FL 230 13 Georgia GA 230 14 Guam GU 230 15 Hawaii HI 230 16 Idaho ID 230 17 Illinois IL 230 18 Indiana IN 230 19 Iowa IA 230 20 Kansas KS 230 21 Kentucky KY 230 22 Louisiana LA 230 23 Maine ME 230 24 Marshall Islands MH 230 25 Maryland MD 230 26 Massachusetts MA 230 27 Michigan MI 230 28 Minnesota MN 230 29 Mississippi MS 230 30 Missouri MO 230 31 Montana MT 230 32 Nebraska NE 230 33 Nevada NV 230 34 New Hampshire NH 230 35 New Jersey NJ 230 36 New Mexico NM 230 37 New York NY 230 38 North Carolina NC 230 39 North Dakota ND 230 40 Northern Mariana Islands MP 230 41 Ohio OH 230 42 Oklahoma OK 230 43 Oregon OR 230 44 Palau PW 230 45 Pennsylvania PA 230 46 Puerto Rico PR 230 47 Rhode Island RI 230 48 South Carolina SC 230 49 South Dakota SD 230 50 Tennessee TN 230 51 Texas TX 230 52 Utah UT 230 53 Vermont VT 230 54 Virgin Islands VI 230 55 Virginia VA 230 56 Washington WA 230 57 West Virginia WV 230 58 Wisconsin WI 230 59 Wyoming WY 230 60 Armed Forces Africa, Canada, Europe, Middle East AE 230 61 Armed Forces Americas (except Canada) AA 230 62 Armed Forces Pacific AP 230 63 Alberta AB 39 64 British Columbia BC 39 65 Manitoba MB 39 66 New Brunswick NB 39 67 Newfoundland and Labrador NL 39 68 Northwest Territories NT 39 69 Nova Scotia NS 39 70 Nunavut NU 39 71 Ontario ON 39 72 Prince Edward Island PE 39 73 Quebec QC 39 74 Saskatchewan SK 39 75 Yukon YT 39 76 Aguascalientes AGS 140 77 Baja California BC 140 78 Baja California Sur BCS 140 79 Campeche CAM 140 80 Coahuila COAH 140 81 Colima COL 140 82 Chiapas CHIS 140 83 Chihuahua CHIH 140 84 Distrito Federal DF 140 85 Durango DGO 140 86 Guanajuato GTO 140 87 Guerrero GRO 140 88 Hidalgo HGO 140 89 Jalisco JAL 140 90 Mexico MEX 140 91 Michoacan MICH 140 92 Morelos MOR 140 93 Nayarit NAY 140 94 Nuevo Leon NL 140 95 Oaxaca OAX 140 96 Puebla PUE 140 97 Queretaro QRO 140 98 Quintana Roo Q ROO 140 99 San Luis Potosi SLP 140 100 Sinaloa SIN 140 101 Sonora SON 140 102 Tabasco TAB 140 103 Tamaulipas TAMPS 140 104 Tlaxcala TLAX 140 105 Veracruz VER 140 106 Yucatan YUC 140 107 Zacatecas ZAC 140 108 Australian Capital Territory ACT 13 109 New South Wales NSW 13 110 Northern Territory NT 13 111 Queensland QLD 13 112 South Australia SA 13 113 Tasmania TAS 13 114 Victoria VIC 13 115 Western Australia WA 13 116 Schleswig-Holstein SH 81 117 Mecklenburg-Vorpommern MV 81 118 Hamburg HH 81 119 Bremen HB 81 120 Berlin BE 81 121 Brandenburg BB 81 122 Niedersachsen NI 81 123 Nordrhein-Westfalen NW 81 124 Sachsen-Anhalt ST 81 125 Sachsen SN 81 126 Hessen HE 81 127 Thüringen TH 81 128 Bayern BY 81 129 Rheinland-Pfalz RP 81 130 Saarland SL 81 131 Baden-Württemberg BW 81 132 Acre AC 30 133 Alagoas AL 30 134 Amapá AP 30 135 Amazonas AM 30 136 Bahia VA 30 137 Ceará CE 30 138 Distito Federal DF 30 139 Espirito Santo ES 30 140 Goiás GO 30 141 Maranhão MA 30 142 Mato Grosso MT 30 143 Mato Grosso do Sul MS 30 144 Minas Gerais MG 30 145 Pará PA 30 146 Paraiba PB 30 147 Paraná PR 30 148 Pernambuco PE 30 149 Piaui PI 30 150 Rio de Janeiro RJ 30 151 Rio Grande do Norte RN 30 152 Rio Grande do Sul RS 30 153 Rondônia RO 30 154 Roraima RR 30 155 Santa Catarina SC 30 156 São Paulo SP 30 157 Sergipe SE 30 158 Tocantins TO 30 \. -- -- Data for Name: status; Type: TABLE DATA; Schema: public; Owner: admin -- COPY status (status_id, status_type, status_code, status_name, status_seq, status_color) FROM stdin; 1 INCDT N New 0 #00FA9A 2 INCDT F Feedback 1 #F4F776 3 INCDT C Confirmed 2 #F2F2F2 4 INCDT A Assigned 3 #DB7093 5 INCDT R Resolved 4 #EEB4B4 6 INCDT L Closed 5 #FF6EC7 \. -- -- Data for Name: stdjrnl; Type: TABLE DATA; Schema: public; Owner: admin -- COPY stdjrnl (stdjrnl_id, stdjrnl_name, stdjrnl_descrip, stdjrnl_notes) FROM stdin; \. -- -- Data for Name: stdjrnlgrp; Type: TABLE DATA; Schema: public; Owner: admin -- COPY stdjrnlgrp (stdjrnlgrp_id, stdjrnlgrp_name, stdjrnlgrp_descrip) FROM stdin; \. -- -- Data for Name: stdjrnlgrpitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY stdjrnlgrpitem (stdjrnlgrpitem_id, stdjrnlgrpitem_stdjrnl_id, stdjrnlgrpitem_toapply, stdjrnlgrpitem_applied, stdjrnlgrpitem_effective, stdjrnlgrpitem_expires, stdjrnlgrpitem_stdjrnlgrp_id) FROM stdin; \. -- -- Data for Name: stdjrnlitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY stdjrnlitem (stdjrnlitem_id, stdjrnlitem_stdjrnl_id, stdjrnlitem_accnt_id, stdjrnlitem_amount, stdjrnlitem_notes) FROM stdin; \. -- -- Data for Name: subaccnt; Type: TABLE DATA; Schema: public; Owner: admin -- COPY subaccnt (subaccnt_id, subaccnt_number, subaccnt_descrip) FROM stdin; 1 01 Subaccount 01 \. -- -- Data for Name: subaccnttype; Type: TABLE DATA; Schema: public; Owner: admin -- COPY subaccnttype (subaccnttype_id, subaccnttype_accnt_type, subaccnttype_code, subaccnttype_descrip) FROM stdin; 1 A CA Cash Assets 2 A AR Accounts Receivable 3 A IN Inventory 4 A CAS Current Assets 5 A FA Fixed Assets 6 A AD Accumulated Depreciation 7 L CL Current Liabilities 8 L AP Accounts Payable 9 L LTL Long Term Liabilities 10 Q EDC Equity do not close 11 Q ERE Equity Retained Earnings 12 Q EC Equity close 13 R SI Sales Income 14 R II Interest Income 15 R IV Investment Income 16 R RT Returns 17 E COGS Cost of Goods Sold 18 E EXP Expenses 19 E DEP Depreciation Expense \. -- -- Data for Name: tax; Type: TABLE DATA; Schema: public; Owner: admin -- COPY tax (tax_id, tax_code, tax_descrip, tax_sales_accnt_id, tax_taxclass_id, tax_taxauth_id, tax_basis_tax_id) FROM stdin; 13 Sales Tax Sales Tax 102 \N \N \N \. -- -- Data for Name: taxass; Type: TABLE DATA; Schema: public; Owner: admin -- COPY taxass (taxass_id, taxass_taxzone_id, taxass_taxtype_id, taxass_tax_id) FROM stdin; 1 1 \N 13 \. -- -- Data for Name: taxauth; Type: TABLE DATA; Schema: public; Owner: admin -- COPY taxauth (taxauth_id, taxauth_code, taxauth_name, taxauth_extref, taxauth_addr_id, taxauth_curr_id, taxauth_county, taxauth_accnt_id) FROM stdin; 1 SALES TAX State Sales Tax Authority \N 1 102 \. -- -- Data for Name: taxclass; Type: TABLE DATA; Schema: public; Owner: admin -- COPY taxclass (taxclass_id, taxclass_code, taxclass_descrip, taxclass_sequence) FROM stdin; \. -- -- Data for Name: taxhist; Type: TABLE DATA; Schema: public; Owner: admin -- COPY taxhist (taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber) FROM stdin; \. -- -- Data for Name: taxrate; Type: TABLE DATA; Schema: public; Owner: admin -- COPY taxrate (taxrate_id, taxrate_tax_id, taxrate_percent, taxrate_curr_id, taxrate_amount, taxrate_effective, taxrate_expires) FROM stdin; 1 13 0.050000 1 0.00 1970-01-01 2100-12-31 \. -- -- Data for Name: taxreg; Type: TABLE DATA; Schema: public; Owner: admin -- COPY taxreg (taxreg_id, taxreg_rel_id, taxreg_rel_type, taxreg_taxauth_id, taxreg_number, taxreg_taxzone_id, taxreg_effective, taxreg_expires, taxreg_notes) FROM stdin; \. -- -- Data for Name: taxtype; Type: TABLE DATA; Schema: public; Owner: admin -- COPY taxtype (taxtype_id, taxtype_name, taxtype_descrip, taxtype_sys) FROM stdin; 1 Freight System Defined Freight Tax Type. DO NOT CHANGE. t 2 Taxable Taxable Item f 3 Adjustment System Defined Adjustment Tax Type. DO NOT CHANGE. t \. -- -- Data for Name: taxzone; Type: TABLE DATA; Schema: public; Owner: admin -- COPY taxzone (taxzone_id, taxzone_code, taxzone_descrip) FROM stdin; 1 SALES TAX State Sales Tax Authority \. -- -- Data for Name: terms; Type: TABLE DATA; Schema: public; Owner: admin -- COPY terms (terms_id, terms_code, terms_descrip, terms_type, terms_duedays, terms_discdays, terms_discprcnt, terms_cutoffday, terms_ap, terms_ar) FROM stdin; 42 2-10-NET-30 2-10-NET-30 D 30 10 0.020000 1 t t 43 NET30 Net 30 Days D 30 0 0.000000 1 t t \. -- -- Data for Name: todoitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY todoitem (todoitem_id, todoitem_name, todoitem_description, todoitem_incdt_id, todoitem_creator_username, todoitem_status, todoitem_active, todoitem_start_date, todoitem_due_date, todoitem_assigned_date, todoitem_completed_date, todoitem_seq, todoitem_notes, todoitem_crmacct_id, todoitem_ophead_id, todoitem_owner_username, todoitem_priority_id, todoitem_username, todoitem_recurring_todoitem_id, todoitem_cntct_id) FROM stdin; \. -- -- Data for Name: trgthist; Type: TABLE DATA; Schema: public; Owner: admin -- COPY trgthist (trgthist_src_cntct_id, trgthist_trgt_cntct_id, trgthist_col, trgthist_value) FROM stdin; \. -- -- Data for Name: trialbal; Type: TABLE DATA; Schema: public; Owner: admin -- COPY trialbal (trialbal_id, trialbal_period_id, trialbal_accnt_id, trialbal_beginning, trialbal_ending, trialbal_credits, trialbal_debits, trialbal_dirty, trialbal_yearend) FROM stdin; 8159 53 83 0.00 0.00 0.00 0.00 f 0.00 8160 54 83 0.00 0.00 0.00 0.00 f 0.00 8161 55 83 0.00 0.00 0.00 0.00 f 0.00 8162 56 83 0.00 0.00 0.00 0.00 f 0.00 8163 57 83 0.00 0.00 0.00 0.00 f 0.00 8164 58 83 0.00 0.00 0.00 0.00 f 0.00 8165 59 83 0.00 0.00 0.00 0.00 f 0.00 8166 60 83 0.00 0.00 0.00 0.00 f 0.00 8167 61 83 0.00 0.00 0.00 0.00 f 0.00 8168 62 83 0.00 0.00 0.00 0.00 f 0.00 8169 63 83 0.00 0.00 0.00 0.00 f 0.00 8170 64 83 0.00 0.00 0.00 0.00 f 0.00 8171 65 83 0.00 0.00 0.00 0.00 f 0.00 8172 66 83 0.00 0.00 0.00 0.00 f 0.00 8173 67 83 0.00 0.00 0.00 0.00 f 0.00 8174 68 83 0.00 0.00 0.00 0.00 f 0.00 8175 69 83 0.00 0.00 0.00 0.00 f 0.00 8176 70 83 0.00 0.00 0.00 0.00 f 0.00 8177 71 83 0.00 0.00 0.00 0.00 f 0.00 8178 72 83 0.00 0.00 0.00 0.00 f 0.00 8179 73 83 0.00 0.00 0.00 0.00 f 0.00 8158 52 83 0.00 0.00 0.00 0.00 f 0.00 8203 53 89 0.00 0.00 0.00 0.00 f 0.00 8204 54 89 0.00 0.00 0.00 0.00 f 0.00 8205 55 89 0.00 0.00 0.00 0.00 f 0.00 8206 56 89 0.00 0.00 0.00 0.00 f 0.00 8207 57 89 0.00 0.00 0.00 0.00 f 0.00 8208 58 89 0.00 0.00 0.00 0.00 f 0.00 8209 59 89 0.00 0.00 0.00 0.00 f 0.00 8210 60 89 0.00 0.00 0.00 0.00 f 0.00 8211 61 89 0.00 0.00 0.00 0.00 f 0.00 8212 62 89 0.00 0.00 0.00 0.00 f 0.00 8213 63 89 0.00 0.00 0.00 0.00 f 0.00 8214 64 89 0.00 0.00 0.00 0.00 f 0.00 8215 65 89 0.00 0.00 0.00 0.00 f 0.00 8216 66 89 0.00 0.00 0.00 0.00 f 0.00 8217 67 89 0.00 0.00 0.00 0.00 f 0.00 8218 68 89 0.00 0.00 0.00 0.00 f 0.00 8219 69 89 0.00 0.00 0.00 0.00 f 0.00 8220 70 89 0.00 0.00 0.00 0.00 f 0.00 8221 71 89 0.00 0.00 0.00 0.00 f 0.00 8222 72 89 0.00 0.00 0.00 0.00 f 0.00 8223 73 89 0.00 0.00 0.00 0.00 f 0.00 8202 52 89 0.00 0.00 0.00 0.00 f 0.00 8247 53 91 0.00 0.00 0.00 0.00 f 0.00 8248 54 91 0.00 0.00 0.00 0.00 f 0.00 8249 55 91 0.00 0.00 0.00 0.00 f 0.00 8250 56 91 0.00 0.00 0.00 0.00 f 0.00 8251 57 91 0.00 0.00 0.00 0.00 f 0.00 8252 58 91 0.00 0.00 0.00 0.00 f 0.00 8253 59 91 0.00 0.00 0.00 0.00 f 0.00 8254 60 91 0.00 0.00 0.00 0.00 f 0.00 8255 61 91 0.00 0.00 0.00 0.00 f 0.00 8256 62 91 0.00 0.00 0.00 0.00 f 0.00 8257 63 91 0.00 0.00 0.00 0.00 f 0.00 8258 64 91 0.00 0.00 0.00 0.00 f 0.00 8259 65 91 0.00 0.00 0.00 0.00 f 0.00 8260 66 91 0.00 0.00 0.00 0.00 f 0.00 8261 67 91 0.00 0.00 0.00 0.00 f 0.00 8262 68 91 0.00 0.00 0.00 0.00 f 0.00 8263 69 91 0.00 0.00 0.00 0.00 f 0.00 8264 70 91 0.00 0.00 0.00 0.00 f 0.00 8265 71 91 0.00 0.00 0.00 0.00 f 0.00 8266 72 91 0.00 0.00 0.00 0.00 f 0.00 8267 73 91 0.00 0.00 0.00 0.00 f 0.00 8246 52 91 0.00 0.00 0.00 0.00 f 0.00 8269 53 92 0.00 0.00 0.00 0.00 f 0.00 8270 54 92 0.00 0.00 0.00 0.00 f 0.00 8271 55 92 0.00 0.00 0.00 0.00 f 0.00 8272 56 92 0.00 0.00 0.00 0.00 f 0.00 8273 57 92 0.00 0.00 0.00 0.00 f 0.00 8274 58 92 0.00 0.00 0.00 0.00 f 0.00 8275 59 92 0.00 0.00 0.00 0.00 f 0.00 8276 60 92 0.00 0.00 0.00 0.00 f 0.00 8277 61 92 0.00 0.00 0.00 0.00 f 0.00 8278 62 92 0.00 0.00 0.00 0.00 f 0.00 8279 63 92 0.00 0.00 0.00 0.00 f 0.00 8280 64 92 0.00 0.00 0.00 0.00 f 0.00 8281 65 92 0.00 0.00 0.00 0.00 f 0.00 8282 66 92 0.00 0.00 0.00 0.00 f 0.00 8283 67 92 0.00 0.00 0.00 0.00 f 0.00 8284 68 92 0.00 0.00 0.00 0.00 f 0.00 8285 69 92 0.00 0.00 0.00 0.00 f 0.00 8286 70 92 0.00 0.00 0.00 0.00 f 0.00 8287 71 92 0.00 0.00 0.00 0.00 f 0.00 8288 72 92 0.00 0.00 0.00 0.00 f 0.00 8289 73 92 0.00 0.00 0.00 0.00 f 0.00 8268 52 92 0.00 0.00 0.00 0.00 f 0.00 8291 53 93 0.00 0.00 0.00 0.00 f 0.00 8292 54 93 0.00 0.00 0.00 0.00 f 0.00 8293 55 93 0.00 0.00 0.00 0.00 f 0.00 8294 56 93 0.00 0.00 0.00 0.00 f 0.00 8295 57 93 0.00 0.00 0.00 0.00 f 0.00 8296 58 93 0.00 0.00 0.00 0.00 f 0.00 8297 59 93 0.00 0.00 0.00 0.00 f 0.00 8298 60 93 0.00 0.00 0.00 0.00 f 0.00 8299 61 93 0.00 0.00 0.00 0.00 f 0.00 8300 62 93 0.00 0.00 0.00 0.00 f 0.00 8301 63 93 0.00 0.00 0.00 0.00 f 0.00 8302 64 93 0.00 0.00 0.00 0.00 f 0.00 8303 65 93 0.00 0.00 0.00 0.00 f 0.00 8304 66 93 0.00 0.00 0.00 0.00 f 0.00 8305 67 93 0.00 0.00 0.00 0.00 f 0.00 8306 68 93 0.00 0.00 0.00 0.00 f 0.00 8307 69 93 0.00 0.00 0.00 0.00 f 0.00 8308 70 93 0.00 0.00 0.00 0.00 f 0.00 8309 71 93 0.00 0.00 0.00 0.00 f 0.00 8310 72 93 0.00 0.00 0.00 0.00 f 0.00 8311 73 93 0.00 0.00 0.00 0.00 f 0.00 8290 52 93 0.00 0.00 0.00 0.00 f 0.00 8313 53 94 0.00 0.00 0.00 0.00 f 0.00 8314 54 94 0.00 0.00 0.00 0.00 f 0.00 8315 55 94 0.00 0.00 0.00 0.00 f 0.00 8316 56 94 0.00 0.00 0.00 0.00 f 0.00 8317 57 94 0.00 0.00 0.00 0.00 f 0.00 8318 58 94 0.00 0.00 0.00 0.00 f 0.00 8319 59 94 0.00 0.00 0.00 0.00 f 0.00 8320 60 94 0.00 0.00 0.00 0.00 f 0.00 8321 61 94 0.00 0.00 0.00 0.00 f 0.00 8322 62 94 0.00 0.00 0.00 0.00 f 0.00 8323 63 94 0.00 0.00 0.00 0.00 f 0.00 8324 64 94 0.00 0.00 0.00 0.00 f 0.00 8325 65 94 0.00 0.00 0.00 0.00 f 0.00 8326 66 94 0.00 0.00 0.00 0.00 f 0.00 8327 67 94 0.00 0.00 0.00 0.00 f 0.00 8328 68 94 0.00 0.00 0.00 0.00 f 0.00 8329 69 94 0.00 0.00 0.00 0.00 f 0.00 8330 70 94 0.00 0.00 0.00 0.00 f 0.00 8331 71 94 0.00 0.00 0.00 0.00 f 0.00 8332 72 94 0.00 0.00 0.00 0.00 f 0.00 8333 73 94 0.00 0.00 0.00 0.00 f 0.00 8312 52 94 0.00 0.00 0.00 0.00 f 0.00 8335 53 96 0.00 0.00 0.00 0.00 f 0.00 8336 54 96 0.00 0.00 0.00 0.00 f 0.00 8337 55 96 0.00 0.00 0.00 0.00 f 0.00 8338 56 96 0.00 0.00 0.00 0.00 f 0.00 8339 57 96 0.00 0.00 0.00 0.00 f 0.00 8340 58 96 0.00 0.00 0.00 0.00 f 0.00 8341 59 96 0.00 0.00 0.00 0.00 f 0.00 8342 60 96 0.00 0.00 0.00 0.00 f 0.00 8343 61 96 0.00 0.00 0.00 0.00 f 0.00 8344 62 96 0.00 0.00 0.00 0.00 f 0.00 8345 63 96 0.00 0.00 0.00 0.00 f 0.00 8346 64 96 0.00 0.00 0.00 0.00 f 0.00 8347 65 96 0.00 0.00 0.00 0.00 f 0.00 8348 66 96 0.00 0.00 0.00 0.00 f 0.00 8349 67 96 0.00 0.00 0.00 0.00 f 0.00 8350 68 96 0.00 0.00 0.00 0.00 f 0.00 8351 69 96 0.00 0.00 0.00 0.00 f 0.00 8352 70 96 0.00 0.00 0.00 0.00 f 0.00 8353 71 96 0.00 0.00 0.00 0.00 f 0.00 8354 72 96 0.00 0.00 0.00 0.00 f 0.00 8355 73 96 0.00 0.00 0.00 0.00 f 0.00 8334 52 96 0.00 0.00 0.00 0.00 f 0.00 8357 53 98 0.00 0.00 0.00 0.00 f 0.00 8358 54 98 0.00 0.00 0.00 0.00 f 0.00 8359 55 98 0.00 0.00 0.00 0.00 f 0.00 8360 56 98 0.00 0.00 0.00 0.00 f 0.00 8361 57 98 0.00 0.00 0.00 0.00 f 0.00 8362 58 98 0.00 0.00 0.00 0.00 f 0.00 8363 59 98 0.00 0.00 0.00 0.00 f 0.00 8364 60 98 0.00 0.00 0.00 0.00 f 0.00 8365 61 98 0.00 0.00 0.00 0.00 f 0.00 8366 62 98 0.00 0.00 0.00 0.00 f 0.00 8367 63 98 0.00 0.00 0.00 0.00 f 0.00 8368 64 98 0.00 0.00 0.00 0.00 f 0.00 8369 65 98 0.00 0.00 0.00 0.00 f 0.00 8370 66 98 0.00 0.00 0.00 0.00 f 0.00 8371 67 98 0.00 0.00 0.00 0.00 f 0.00 8372 68 98 0.00 0.00 0.00 0.00 f 0.00 8373 69 98 0.00 0.00 0.00 0.00 f 0.00 8374 70 98 0.00 0.00 0.00 0.00 f 0.00 8375 71 98 0.00 0.00 0.00 0.00 f 0.00 8376 72 98 0.00 0.00 0.00 0.00 f 0.00 8377 73 98 0.00 0.00 0.00 0.00 f 0.00 8356 52 98 0.00 0.00 0.00 0.00 f 0.00 8379 53 99 0.00 0.00 0.00 0.00 f 0.00 8380 54 99 0.00 0.00 0.00 0.00 f 0.00 8381 55 99 0.00 0.00 0.00 0.00 f 0.00 8382 56 99 0.00 0.00 0.00 0.00 f 0.00 8383 57 99 0.00 0.00 0.00 0.00 f 0.00 8384 58 99 0.00 0.00 0.00 0.00 f 0.00 8385 59 99 0.00 0.00 0.00 0.00 f 0.00 8386 60 99 0.00 0.00 0.00 0.00 f 0.00 8387 61 99 0.00 0.00 0.00 0.00 f 0.00 8388 62 99 0.00 0.00 0.00 0.00 f 0.00 8389 63 99 0.00 0.00 0.00 0.00 f 0.00 8390 64 99 0.00 0.00 0.00 0.00 f 0.00 8391 65 99 0.00 0.00 0.00 0.00 f 0.00 8392 66 99 0.00 0.00 0.00 0.00 f 0.00 8393 67 99 0.00 0.00 0.00 0.00 f 0.00 8394 68 99 0.00 0.00 0.00 0.00 f 0.00 8395 69 99 0.00 0.00 0.00 0.00 f 0.00 8396 70 99 0.00 0.00 0.00 0.00 f 0.00 8397 71 99 0.00 0.00 0.00 0.00 f 0.00 8398 72 99 0.00 0.00 0.00 0.00 f 0.00 8399 73 99 0.00 0.00 0.00 0.00 f 0.00 8378 52 99 0.00 0.00 0.00 0.00 f 0.00 8423 53 101 0.00 0.00 0.00 0.00 f 0.00 8424 54 101 0.00 0.00 0.00 0.00 f 0.00 8425 55 101 0.00 0.00 0.00 0.00 f 0.00 8426 56 101 0.00 0.00 0.00 0.00 f 0.00 8427 57 101 0.00 0.00 0.00 0.00 f 0.00 8428 58 101 0.00 0.00 0.00 0.00 f 0.00 8429 59 101 0.00 0.00 0.00 0.00 f 0.00 8430 60 101 0.00 0.00 0.00 0.00 f 0.00 8431 61 101 0.00 0.00 0.00 0.00 f 0.00 8432 62 101 0.00 0.00 0.00 0.00 f 0.00 8433 63 101 0.00 0.00 0.00 0.00 f 0.00 8434 64 101 0.00 0.00 0.00 0.00 f 0.00 8435 65 101 0.00 0.00 0.00 0.00 f 0.00 8436 66 101 0.00 0.00 0.00 0.00 f 0.00 8437 67 101 0.00 0.00 0.00 0.00 f 0.00 8438 68 101 0.00 0.00 0.00 0.00 f 0.00 8439 69 101 0.00 0.00 0.00 0.00 f 0.00 8440 70 101 0.00 0.00 0.00 0.00 f 0.00 8441 71 101 0.00 0.00 0.00 0.00 f 0.00 8442 72 101 0.00 0.00 0.00 0.00 f 0.00 8443 73 101 0.00 0.00 0.00 0.00 f 0.00 8422 52 101 0.00 0.00 0.00 0.00 f 0.00 8445 53 103 0.00 0.00 0.00 0.00 f 0.00 8446 54 103 0.00 0.00 0.00 0.00 f 0.00 8447 55 103 0.00 0.00 0.00 0.00 f 0.00 8448 56 103 0.00 0.00 0.00 0.00 f 0.00 8449 57 103 0.00 0.00 0.00 0.00 f 0.00 8450 58 103 0.00 0.00 0.00 0.00 f 0.00 8451 59 103 0.00 0.00 0.00 0.00 f 0.00 8452 60 103 0.00 0.00 0.00 0.00 f 0.00 8453 61 103 0.00 0.00 0.00 0.00 f 0.00 8454 62 103 0.00 0.00 0.00 0.00 f 0.00 8455 63 103 0.00 0.00 0.00 0.00 f 0.00 8456 64 103 0.00 0.00 0.00 0.00 f 0.00 8457 65 103 0.00 0.00 0.00 0.00 f 0.00 8458 66 103 0.00 0.00 0.00 0.00 f 0.00 8459 67 103 0.00 0.00 0.00 0.00 f 0.00 8460 68 103 0.00 0.00 0.00 0.00 f 0.00 8461 69 103 0.00 0.00 0.00 0.00 f 0.00 8462 70 103 0.00 0.00 0.00 0.00 f 0.00 8463 71 103 0.00 0.00 0.00 0.00 f 0.00 8464 72 103 0.00 0.00 0.00 0.00 f 0.00 8465 73 103 0.00 0.00 0.00 0.00 f 0.00 8444 52 103 0.00 0.00 0.00 0.00 f 0.00 8467 53 104 0.00 0.00 0.00 0.00 f 0.00 8468 54 104 0.00 0.00 0.00 0.00 f 0.00 8469 55 104 0.00 0.00 0.00 0.00 f 0.00 8470 56 104 0.00 0.00 0.00 0.00 f 0.00 8471 57 104 0.00 0.00 0.00 0.00 f 0.00 8472 58 104 0.00 0.00 0.00 0.00 f 0.00 8473 59 104 0.00 0.00 0.00 0.00 f 0.00 8474 60 104 0.00 0.00 0.00 0.00 f 0.00 8475 61 104 0.00 0.00 0.00 0.00 f 0.00 8476 62 104 0.00 0.00 0.00 0.00 f 0.00 8477 63 104 0.00 0.00 0.00 0.00 f 0.00 8478 64 104 0.00 0.00 0.00 0.00 f 0.00 8479 65 104 0.00 0.00 0.00 0.00 f 0.00 8480 66 104 0.00 0.00 0.00 0.00 f 0.00 8481 67 104 0.00 0.00 0.00 0.00 f 0.00 8482 68 104 0.00 0.00 0.00 0.00 f 0.00 8483 69 104 0.00 0.00 0.00 0.00 f 0.00 8484 70 104 0.00 0.00 0.00 0.00 f 0.00 8485 71 104 0.00 0.00 0.00 0.00 f 0.00 8486 72 104 0.00 0.00 0.00 0.00 f 0.00 8487 73 104 0.00 0.00 0.00 0.00 f 0.00 8466 52 104 0.00 0.00 0.00 0.00 f 0.00 8489 53 105 0.00 0.00 0.00 0.00 f 0.00 8490 54 105 0.00 0.00 0.00 0.00 f 0.00 8491 55 105 0.00 0.00 0.00 0.00 f 0.00 8492 56 105 0.00 0.00 0.00 0.00 f 0.00 8493 57 105 0.00 0.00 0.00 0.00 f 0.00 8494 58 105 0.00 0.00 0.00 0.00 f 0.00 8495 59 105 0.00 0.00 0.00 0.00 f 0.00 8496 60 105 0.00 0.00 0.00 0.00 f 0.00 8497 61 105 0.00 0.00 0.00 0.00 f 0.00 8498 62 105 0.00 0.00 0.00 0.00 f 0.00 8499 63 105 0.00 0.00 0.00 0.00 f 0.00 8500 64 105 0.00 0.00 0.00 0.00 f 0.00 8501 65 105 0.00 0.00 0.00 0.00 f 0.00 8502 66 105 0.00 0.00 0.00 0.00 f 0.00 8503 67 105 0.00 0.00 0.00 0.00 f 0.00 8504 68 105 0.00 0.00 0.00 0.00 f 0.00 8505 69 105 0.00 0.00 0.00 0.00 f 0.00 8506 70 105 0.00 0.00 0.00 0.00 f 0.00 8507 71 105 0.00 0.00 0.00 0.00 f 0.00 8508 72 105 0.00 0.00 0.00 0.00 f 0.00 8509 73 105 0.00 0.00 0.00 0.00 f 0.00 8488 52 105 0.00 0.00 0.00 0.00 f 0.00 8511 53 107 0.00 0.00 0.00 0.00 f 0.00 8512 54 107 0.00 0.00 0.00 0.00 f 0.00 8513 55 107 0.00 0.00 0.00 0.00 f 0.00 8514 56 107 0.00 0.00 0.00 0.00 f 0.00 8515 57 107 0.00 0.00 0.00 0.00 f 0.00 8516 58 107 0.00 0.00 0.00 0.00 f 0.00 8517 59 107 0.00 0.00 0.00 0.00 f 0.00 8518 60 107 0.00 0.00 0.00 0.00 f 0.00 8519 61 107 0.00 0.00 0.00 0.00 f 0.00 8520 62 107 0.00 0.00 0.00 0.00 f 0.00 8521 63 107 0.00 0.00 0.00 0.00 f 0.00 8522 64 107 0.00 0.00 0.00 0.00 f 0.00 8523 65 107 0.00 0.00 0.00 0.00 f 0.00 8524 66 107 0.00 0.00 0.00 0.00 f 0.00 8525 67 107 0.00 0.00 0.00 0.00 f 0.00 8526 68 107 0.00 0.00 0.00 0.00 f 0.00 8527 69 107 0.00 0.00 0.00 0.00 f 0.00 8528 70 107 0.00 0.00 0.00 0.00 f 0.00 8529 71 107 0.00 0.00 0.00 0.00 f 0.00 8530 72 107 0.00 0.00 0.00 0.00 f 0.00 8531 73 107 0.00 0.00 0.00 0.00 f 0.00 8510 52 107 0.00 0.00 0.00 0.00 f 0.00 8533 53 108 0.00 0.00 0.00 0.00 f 0.00 8534 54 108 0.00 0.00 0.00 0.00 f 0.00 8535 55 108 0.00 0.00 0.00 0.00 f 0.00 8536 56 108 0.00 0.00 0.00 0.00 f 0.00 8537 57 108 0.00 0.00 0.00 0.00 f 0.00 8538 58 108 0.00 0.00 0.00 0.00 f 0.00 8539 59 108 0.00 0.00 0.00 0.00 f 0.00 8540 60 108 0.00 0.00 0.00 0.00 f 0.00 8541 61 108 0.00 0.00 0.00 0.00 f 0.00 8542 62 108 0.00 0.00 0.00 0.00 f 0.00 8543 63 108 0.00 0.00 0.00 0.00 f 0.00 8544 64 108 0.00 0.00 0.00 0.00 f 0.00 8545 65 108 0.00 0.00 0.00 0.00 f 0.00 8546 66 108 0.00 0.00 0.00 0.00 f 0.00 8547 67 108 0.00 0.00 0.00 0.00 f 0.00 8548 68 108 0.00 0.00 0.00 0.00 f 0.00 8549 69 108 0.00 0.00 0.00 0.00 f 0.00 8550 70 108 0.00 0.00 0.00 0.00 f 0.00 8551 71 108 0.00 0.00 0.00 0.00 f 0.00 8552 72 108 0.00 0.00 0.00 0.00 f 0.00 8553 73 108 0.00 0.00 0.00 0.00 f 0.00 8532 52 108 0.00 0.00 0.00 0.00 f 0.00 8555 53 110 0.00 0.00 0.00 0.00 f 0.00 8556 54 110 0.00 0.00 0.00 0.00 f 0.00 8557 55 110 0.00 0.00 0.00 0.00 f 0.00 8558 56 110 0.00 0.00 0.00 0.00 f 0.00 8559 57 110 0.00 0.00 0.00 0.00 f 0.00 8560 58 110 0.00 0.00 0.00 0.00 f 0.00 8561 59 110 0.00 0.00 0.00 0.00 f 0.00 8562 60 110 0.00 0.00 0.00 0.00 f 0.00 8563 61 110 0.00 0.00 0.00 0.00 f 0.00 8564 62 110 0.00 0.00 0.00 0.00 f 0.00 8565 63 110 0.00 0.00 0.00 0.00 f 0.00 8566 64 110 0.00 0.00 0.00 0.00 f 0.00 8567 65 110 0.00 0.00 0.00 0.00 f 0.00 8568 66 110 0.00 0.00 0.00 0.00 f 0.00 8569 67 110 0.00 0.00 0.00 0.00 f 0.00 8570 68 110 0.00 0.00 0.00 0.00 f 0.00 8571 69 110 0.00 0.00 0.00 0.00 f 0.00 8572 70 110 0.00 0.00 0.00 0.00 f 0.00 8573 71 110 0.00 0.00 0.00 0.00 f 0.00 8574 72 110 0.00 0.00 0.00 0.00 f 0.00 8575 73 110 0.00 0.00 0.00 0.00 f 0.00 8554 52 110 0.00 0.00 0.00 0.00 f 0.00 8577 53 111 0.00 0.00 0.00 0.00 f 0.00 8578 54 111 0.00 0.00 0.00 0.00 f 0.00 8579 55 111 0.00 0.00 0.00 0.00 f 0.00 8580 56 111 0.00 0.00 0.00 0.00 f 0.00 8581 57 111 0.00 0.00 0.00 0.00 f 0.00 8582 58 111 0.00 0.00 0.00 0.00 f 0.00 8583 59 111 0.00 0.00 0.00 0.00 f 0.00 8584 60 111 0.00 0.00 0.00 0.00 f 0.00 8585 61 111 0.00 0.00 0.00 0.00 f 0.00 8586 62 111 0.00 0.00 0.00 0.00 f 0.00 8587 63 111 0.00 0.00 0.00 0.00 f 0.00 8588 64 111 0.00 0.00 0.00 0.00 f 0.00 8589 65 111 0.00 0.00 0.00 0.00 f 0.00 8590 66 111 0.00 0.00 0.00 0.00 f 0.00 8591 67 111 0.00 0.00 0.00 0.00 f 0.00 8592 68 111 0.00 0.00 0.00 0.00 f 0.00 8593 69 111 0.00 0.00 0.00 0.00 f 0.00 8594 70 111 0.00 0.00 0.00 0.00 f 0.00 8595 71 111 0.00 0.00 0.00 0.00 f 0.00 8596 72 111 0.00 0.00 0.00 0.00 f 0.00 8597 73 111 0.00 0.00 0.00 0.00 f 0.00 8576 52 111 0.00 0.00 0.00 0.00 f 0.00 8599 53 116 0.00 0.00 0.00 0.00 f 0.00 8600 54 116 0.00 0.00 0.00 0.00 f 0.00 8601 55 116 0.00 0.00 0.00 0.00 f 0.00 8602 56 116 0.00 0.00 0.00 0.00 f 0.00 8603 57 116 0.00 0.00 0.00 0.00 f 0.00 8604 58 116 0.00 0.00 0.00 0.00 f 0.00 8605 59 116 0.00 0.00 0.00 0.00 f 0.00 8606 60 116 0.00 0.00 0.00 0.00 f 0.00 8607 61 116 0.00 0.00 0.00 0.00 f 0.00 8608 62 116 0.00 0.00 0.00 0.00 f 0.00 8609 63 116 0.00 0.00 0.00 0.00 f 0.00 8610 64 116 0.00 0.00 0.00 0.00 f 0.00 8611 65 116 0.00 0.00 0.00 0.00 f 0.00 8612 66 116 0.00 0.00 0.00 0.00 f 0.00 8613 67 116 0.00 0.00 0.00 0.00 f 0.00 8614 68 116 0.00 0.00 0.00 0.00 f 0.00 8615 69 116 0.00 0.00 0.00 0.00 f 0.00 8616 70 116 0.00 0.00 0.00 0.00 f 0.00 8617 71 116 0.00 0.00 0.00 0.00 f 0.00 8618 72 116 0.00 0.00 0.00 0.00 f 0.00 8619 73 116 0.00 0.00 0.00 0.00 f 0.00 8598 52 116 0.00 0.00 0.00 0.00 f 0.00 8621 53 88 0.00 0.00 0.00 0.00 f 0.00 8622 54 88 0.00 0.00 0.00 0.00 f 0.00 8623 55 88 0.00 0.00 0.00 0.00 f 0.00 8624 56 88 0.00 0.00 0.00 0.00 f 0.00 8625 57 88 0.00 0.00 0.00 0.00 f 0.00 8626 58 88 0.00 0.00 0.00 0.00 f 0.00 8627 59 88 0.00 0.00 0.00 0.00 f 0.00 8628 60 88 0.00 0.00 0.00 0.00 f 0.00 8629 61 88 0.00 0.00 0.00 0.00 f 0.00 8630 62 88 0.00 0.00 0.00 0.00 f 0.00 8631 63 88 0.00 0.00 0.00 0.00 f 0.00 8632 64 88 0.00 0.00 0.00 0.00 f 0.00 8633 65 88 0.00 0.00 0.00 0.00 f 0.00 8634 66 88 0.00 0.00 0.00 0.00 f 0.00 8635 67 88 0.00 0.00 0.00 0.00 f 0.00 8636 68 88 0.00 0.00 0.00 0.00 f 0.00 8637 69 88 0.00 0.00 0.00 0.00 f 0.00 8638 70 88 0.00 0.00 0.00 0.00 f 0.00 8639 71 88 0.00 0.00 0.00 0.00 f 0.00 8640 72 88 0.00 0.00 0.00 0.00 f 0.00 8641 73 88 0.00 0.00 0.00 0.00 f 0.00 8620 52 88 0.00 0.00 0.00 0.00 f 0.00 8643 53 117 0.00 0.00 0.00 0.00 f 0.00 8644 54 117 0.00 0.00 0.00 0.00 f 0.00 8645 55 117 0.00 0.00 0.00 0.00 f 0.00 8646 56 117 0.00 0.00 0.00 0.00 f 0.00 8647 57 117 0.00 0.00 0.00 0.00 f 0.00 8648 58 117 0.00 0.00 0.00 0.00 f 0.00 8649 59 117 0.00 0.00 0.00 0.00 f 0.00 8650 60 117 0.00 0.00 0.00 0.00 f 0.00 8651 61 117 0.00 0.00 0.00 0.00 f 0.00 8652 62 117 0.00 0.00 0.00 0.00 f 0.00 8653 63 117 0.00 0.00 0.00 0.00 f 0.00 8654 64 117 0.00 0.00 0.00 0.00 f 0.00 8655 65 117 0.00 0.00 0.00 0.00 f 0.00 8656 66 117 0.00 0.00 0.00 0.00 f 0.00 8657 67 117 0.00 0.00 0.00 0.00 f 0.00 8658 68 117 0.00 0.00 0.00 0.00 f 0.00 8659 69 117 0.00 0.00 0.00 0.00 f 0.00 8660 70 117 0.00 0.00 0.00 0.00 f 0.00 8661 71 117 0.00 0.00 0.00 0.00 f 0.00 8662 72 117 0.00 0.00 0.00 0.00 f 0.00 8663 73 117 0.00 0.00 0.00 0.00 f 0.00 8642 52 117 0.00 0.00 0.00 0.00 f 0.00 8665 53 118 0.00 0.00 0.00 0.00 f 0.00 8666 54 118 0.00 0.00 0.00 0.00 f 0.00 8667 55 118 0.00 0.00 0.00 0.00 f 0.00 8668 56 118 0.00 0.00 0.00 0.00 f 0.00 8669 57 118 0.00 0.00 0.00 0.00 f 0.00 8670 58 118 0.00 0.00 0.00 0.00 f 0.00 8671 59 118 0.00 0.00 0.00 0.00 f 0.00 8672 60 118 0.00 0.00 0.00 0.00 f 0.00 8673 61 118 0.00 0.00 0.00 0.00 f 0.00 8674 62 118 0.00 0.00 0.00 0.00 f 0.00 8675 63 118 0.00 0.00 0.00 0.00 f 0.00 8676 64 118 0.00 0.00 0.00 0.00 f 0.00 8677 65 118 0.00 0.00 0.00 0.00 f 0.00 8678 66 118 0.00 0.00 0.00 0.00 f 0.00 8679 67 118 0.00 0.00 0.00 0.00 f 0.00 8680 68 118 0.00 0.00 0.00 0.00 f 0.00 8681 69 118 0.00 0.00 0.00 0.00 f 0.00 8682 70 118 0.00 0.00 0.00 0.00 f 0.00 8683 71 118 0.00 0.00 0.00 0.00 f 0.00 8684 72 118 0.00 0.00 0.00 0.00 f 0.00 8685 73 118 0.00 0.00 0.00 0.00 f 0.00 8664 52 118 0.00 0.00 0.00 0.00 f 0.00 8687 53 119 0.00 0.00 0.00 0.00 f 0.00 8688 54 119 0.00 0.00 0.00 0.00 f 0.00 8689 55 119 0.00 0.00 0.00 0.00 f 0.00 8690 56 119 0.00 0.00 0.00 0.00 f 0.00 8691 57 119 0.00 0.00 0.00 0.00 f 0.00 8692 58 119 0.00 0.00 0.00 0.00 f 0.00 8693 59 119 0.00 0.00 0.00 0.00 f 0.00 8694 60 119 0.00 0.00 0.00 0.00 f 0.00 8695 61 119 0.00 0.00 0.00 0.00 f 0.00 8696 62 119 0.00 0.00 0.00 0.00 f 0.00 8697 63 119 0.00 0.00 0.00 0.00 f 0.00 8698 64 119 0.00 0.00 0.00 0.00 f 0.00 8699 65 119 0.00 0.00 0.00 0.00 f 0.00 8700 66 119 0.00 0.00 0.00 0.00 f 0.00 8701 67 119 0.00 0.00 0.00 0.00 f 0.00 8702 68 119 0.00 0.00 0.00 0.00 f 0.00 8703 69 119 0.00 0.00 0.00 0.00 f 0.00 8704 70 119 0.00 0.00 0.00 0.00 f 0.00 8705 71 119 0.00 0.00 0.00 0.00 f 0.00 8706 72 119 0.00 0.00 0.00 0.00 f 0.00 8707 73 119 0.00 0.00 0.00 0.00 f 0.00 8686 52 119 0.00 0.00 0.00 0.00 f 0.00 8709 53 121 0.00 0.00 0.00 0.00 f 0.00 8710 54 121 0.00 0.00 0.00 0.00 f 0.00 8711 55 121 0.00 0.00 0.00 0.00 f 0.00 8712 56 121 0.00 0.00 0.00 0.00 f 0.00 8713 57 121 0.00 0.00 0.00 0.00 f 0.00 8714 58 121 0.00 0.00 0.00 0.00 f 0.00 8715 59 121 0.00 0.00 0.00 0.00 f 0.00 8716 60 121 0.00 0.00 0.00 0.00 f 0.00 8717 61 121 0.00 0.00 0.00 0.00 f 0.00 8718 62 121 0.00 0.00 0.00 0.00 f 0.00 8719 63 121 0.00 0.00 0.00 0.00 f 0.00 8720 64 121 0.00 0.00 0.00 0.00 f 0.00 8721 65 121 0.00 0.00 0.00 0.00 f 0.00 8722 66 121 0.00 0.00 0.00 0.00 f 0.00 8723 67 121 0.00 0.00 0.00 0.00 f 0.00 8724 68 121 0.00 0.00 0.00 0.00 f 0.00 8725 69 121 0.00 0.00 0.00 0.00 f 0.00 8726 70 121 0.00 0.00 0.00 0.00 f 0.00 8727 71 121 0.00 0.00 0.00 0.00 f 0.00 8728 72 121 0.00 0.00 0.00 0.00 f 0.00 8729 73 121 0.00 0.00 0.00 0.00 f 0.00 8708 52 121 0.00 0.00 0.00 0.00 f 0.00 8731 53 122 0.00 0.00 0.00 0.00 f 0.00 8732 54 122 0.00 0.00 0.00 0.00 f 0.00 8733 55 122 0.00 0.00 0.00 0.00 f 0.00 8734 56 122 0.00 0.00 0.00 0.00 f 0.00 8735 57 122 0.00 0.00 0.00 0.00 f 0.00 8736 58 122 0.00 0.00 0.00 0.00 f 0.00 8737 59 122 0.00 0.00 0.00 0.00 f 0.00 8738 60 122 0.00 0.00 0.00 0.00 f 0.00 8739 61 122 0.00 0.00 0.00 0.00 f 0.00 8740 62 122 0.00 0.00 0.00 0.00 f 0.00 8741 63 122 0.00 0.00 0.00 0.00 f 0.00 8742 64 122 0.00 0.00 0.00 0.00 f 0.00 8743 65 122 0.00 0.00 0.00 0.00 f 0.00 8744 66 122 0.00 0.00 0.00 0.00 f 0.00 8745 67 122 0.00 0.00 0.00 0.00 f 0.00 8746 68 122 0.00 0.00 0.00 0.00 f 0.00 8747 69 122 0.00 0.00 0.00 0.00 f 0.00 8748 70 122 0.00 0.00 0.00 0.00 f 0.00 8749 71 122 0.00 0.00 0.00 0.00 f 0.00 8750 72 122 0.00 0.00 0.00 0.00 f 0.00 8751 73 122 0.00 0.00 0.00 0.00 f 0.00 8730 52 122 0.00 0.00 0.00 0.00 f 0.00 8753 53 97 0.00 0.00 0.00 0.00 f 0.00 8754 54 97 0.00 0.00 0.00 0.00 f 0.00 8755 55 97 0.00 0.00 0.00 0.00 f 0.00 8756 56 97 0.00 0.00 0.00 0.00 f 0.00 8757 57 97 0.00 0.00 0.00 0.00 f 0.00 8758 58 97 0.00 0.00 0.00 0.00 f 0.00 8759 59 97 0.00 0.00 0.00 0.00 f 0.00 8760 60 97 0.00 0.00 0.00 0.00 f 0.00 8761 61 97 0.00 0.00 0.00 0.00 f 0.00 8762 62 97 0.00 0.00 0.00 0.00 f 0.00 8763 63 97 0.00 0.00 0.00 0.00 f 0.00 8764 64 97 0.00 0.00 0.00 0.00 f 0.00 8765 65 97 0.00 0.00 0.00 0.00 f 0.00 8766 66 97 0.00 0.00 0.00 0.00 f 0.00 8767 67 97 0.00 0.00 0.00 0.00 f 0.00 8768 68 97 0.00 0.00 0.00 0.00 f 0.00 8769 69 97 0.00 0.00 0.00 0.00 f 0.00 8770 70 97 0.00 0.00 0.00 0.00 f 0.00 8771 71 97 0.00 0.00 0.00 0.00 f 0.00 8772 72 97 0.00 0.00 0.00 0.00 f 0.00 8773 73 97 0.00 0.00 0.00 0.00 f 0.00 8752 52 97 0.00 0.00 0.00 0.00 f 0.00 8775 53 123 0.00 0.00 0.00 0.00 f 0.00 8776 54 123 0.00 0.00 0.00 0.00 f 0.00 8777 55 123 0.00 0.00 0.00 0.00 f 0.00 8778 56 123 0.00 0.00 0.00 0.00 f 0.00 8779 57 123 0.00 0.00 0.00 0.00 f 0.00 8780 58 123 0.00 0.00 0.00 0.00 f 0.00 8781 59 123 0.00 0.00 0.00 0.00 f 0.00 8782 60 123 0.00 0.00 0.00 0.00 f 0.00 8783 61 123 0.00 0.00 0.00 0.00 f 0.00 8784 62 123 0.00 0.00 0.00 0.00 f 0.00 8785 63 123 0.00 0.00 0.00 0.00 f 0.00 8786 64 123 0.00 0.00 0.00 0.00 f 0.00 8787 65 123 0.00 0.00 0.00 0.00 f 0.00 8788 66 123 0.00 0.00 0.00 0.00 f 0.00 8789 67 123 0.00 0.00 0.00 0.00 f 0.00 8790 68 123 0.00 0.00 0.00 0.00 f 0.00 8791 69 123 0.00 0.00 0.00 0.00 f 0.00 8792 70 123 0.00 0.00 0.00 0.00 f 0.00 8793 71 123 0.00 0.00 0.00 0.00 f 0.00 8794 72 123 0.00 0.00 0.00 0.00 f 0.00 8795 73 123 0.00 0.00 0.00 0.00 f 0.00 8774 52 123 0.00 0.00 0.00 0.00 f 0.00 8797 53 102 0.00 0.00 0.00 0.00 f 0.00 8798 54 102 0.00 0.00 0.00 0.00 f 0.00 8799 55 102 0.00 0.00 0.00 0.00 f 0.00 8800 56 102 0.00 0.00 0.00 0.00 f 0.00 8801 57 102 0.00 0.00 0.00 0.00 f 0.00 8802 58 102 0.00 0.00 0.00 0.00 f 0.00 8803 59 102 0.00 0.00 0.00 0.00 f 0.00 8804 60 102 0.00 0.00 0.00 0.00 f 0.00 8805 61 102 0.00 0.00 0.00 0.00 f 0.00 8806 62 102 0.00 0.00 0.00 0.00 f 0.00 8807 63 102 0.00 0.00 0.00 0.00 f 0.00 8808 64 102 0.00 0.00 0.00 0.00 f 0.00 8809 65 102 0.00 0.00 0.00 0.00 f 0.00 8810 66 102 0.00 0.00 0.00 0.00 f 0.00 8811 67 102 0.00 0.00 0.00 0.00 f 0.00 8812 68 102 0.00 0.00 0.00 0.00 f 0.00 8813 69 102 0.00 0.00 0.00 0.00 f 0.00 8814 70 102 0.00 0.00 0.00 0.00 f 0.00 8815 71 102 0.00 0.00 0.00 0.00 f 0.00 8816 72 102 0.00 0.00 0.00 0.00 f 0.00 8817 73 102 0.00 0.00 0.00 0.00 f 0.00 8796 52 102 0.00 0.00 0.00 0.00 f 0.00 8819 53 124 0.00 0.00 0.00 0.00 f 0.00 8820 54 124 0.00 0.00 0.00 0.00 f 0.00 8821 55 124 0.00 0.00 0.00 0.00 f 0.00 8822 56 124 0.00 0.00 0.00 0.00 f 0.00 8823 57 124 0.00 0.00 0.00 0.00 f 0.00 8824 58 124 0.00 0.00 0.00 0.00 f 0.00 8825 59 124 0.00 0.00 0.00 0.00 f 0.00 8826 60 124 0.00 0.00 0.00 0.00 f 0.00 8827 61 124 0.00 0.00 0.00 0.00 f 0.00 8828 62 124 0.00 0.00 0.00 0.00 f 0.00 8829 63 124 0.00 0.00 0.00 0.00 f 0.00 8830 64 124 0.00 0.00 0.00 0.00 f 0.00 8831 65 124 0.00 0.00 0.00 0.00 f 0.00 8832 66 124 0.00 0.00 0.00 0.00 f 0.00 8833 67 124 0.00 0.00 0.00 0.00 f 0.00 8834 68 124 0.00 0.00 0.00 0.00 f 0.00 8835 69 124 0.00 0.00 0.00 0.00 f 0.00 8836 70 124 0.00 0.00 0.00 0.00 f 0.00 8837 71 124 0.00 0.00 0.00 0.00 f 0.00 8838 72 124 0.00 0.00 0.00 0.00 f 0.00 8839 73 124 0.00 0.00 0.00 0.00 f 0.00 8818 52 124 0.00 0.00 0.00 0.00 f 0.00 8841 53 95 0.00 0.00 0.00 0.00 f 0.00 8842 54 95 0.00 0.00 0.00 0.00 f 0.00 8843 55 95 0.00 0.00 0.00 0.00 f 0.00 8844 56 95 0.00 0.00 0.00 0.00 f 0.00 8845 57 95 0.00 0.00 0.00 0.00 f 0.00 8846 58 95 0.00 0.00 0.00 0.00 f 0.00 8847 59 95 0.00 0.00 0.00 0.00 f 0.00 8848 60 95 0.00 0.00 0.00 0.00 f 0.00 8849 61 95 0.00 0.00 0.00 0.00 f 0.00 8850 62 95 0.00 0.00 0.00 0.00 f 0.00 8851 63 95 0.00 0.00 0.00 0.00 f 0.00 8852 64 95 0.00 0.00 0.00 0.00 f 0.00 8853 65 95 0.00 0.00 0.00 0.00 f 0.00 8854 66 95 0.00 0.00 0.00 0.00 f 0.00 8855 67 95 0.00 0.00 0.00 0.00 f 0.00 8856 68 95 0.00 0.00 0.00 0.00 f 0.00 8857 69 95 0.00 0.00 0.00 0.00 f 0.00 8858 70 95 0.00 0.00 0.00 0.00 f 0.00 8859 71 95 0.00 0.00 0.00 0.00 f 0.00 8860 72 95 0.00 0.00 0.00 0.00 f 0.00 8861 73 95 0.00 0.00 0.00 0.00 f 0.00 8840 52 95 0.00 0.00 0.00 0.00 f 0.00 8863 53 84 0.00 0.00 0.00 0.00 f 0.00 8864 54 84 0.00 0.00 0.00 0.00 f 0.00 8865 55 84 0.00 0.00 0.00 0.00 f 0.00 8866 56 84 0.00 0.00 0.00 0.00 f 0.00 8867 57 84 0.00 0.00 0.00 0.00 f 0.00 8868 58 84 0.00 0.00 0.00 0.00 f 0.00 8869 59 84 0.00 0.00 0.00 0.00 f 0.00 8870 60 84 0.00 0.00 0.00 0.00 f 0.00 8871 61 84 0.00 0.00 0.00 0.00 f 0.00 8872 62 84 0.00 0.00 0.00 0.00 f 0.00 8873 63 84 0.00 0.00 0.00 0.00 f 0.00 8874 64 84 0.00 0.00 0.00 0.00 f 0.00 8875 65 84 0.00 0.00 0.00 0.00 f 0.00 8876 66 84 0.00 0.00 0.00 0.00 f 0.00 8877 67 84 0.00 0.00 0.00 0.00 f 0.00 8878 68 84 0.00 0.00 0.00 0.00 f 0.00 8879 69 84 0.00 0.00 0.00 0.00 f 0.00 8880 70 84 0.00 0.00 0.00 0.00 f 0.00 8881 71 84 0.00 0.00 0.00 0.00 f 0.00 8882 72 84 0.00 0.00 0.00 0.00 f 0.00 8883 73 84 0.00 0.00 0.00 0.00 f 0.00 8862 52 84 0.00 0.00 0.00 0.00 f 0.00 8885 53 113 0.00 0.00 0.00 0.00 f 0.00 8886 54 113 0.00 0.00 0.00 0.00 f 0.00 8887 55 113 0.00 0.00 0.00 0.00 f 0.00 8888 56 113 0.00 0.00 0.00 0.00 f 0.00 8889 57 113 0.00 0.00 0.00 0.00 f 0.00 8890 58 113 0.00 0.00 0.00 0.00 f 0.00 8891 59 113 0.00 0.00 0.00 0.00 f 0.00 8892 60 113 0.00 0.00 0.00 0.00 f 0.00 8893 61 113 0.00 0.00 0.00 0.00 f 0.00 8894 62 113 0.00 0.00 0.00 0.00 f 0.00 8895 63 113 0.00 0.00 0.00 0.00 f 0.00 8896 64 113 0.00 0.00 0.00 0.00 f 0.00 8897 65 113 0.00 0.00 0.00 0.00 f 0.00 8898 66 113 0.00 0.00 0.00 0.00 f 0.00 8899 67 113 0.00 0.00 0.00 0.00 f 0.00 8900 68 113 0.00 0.00 0.00 0.00 f 0.00 8901 69 113 0.00 0.00 0.00 0.00 f 0.00 8902 70 113 0.00 0.00 0.00 0.00 f 0.00 8903 71 113 0.00 0.00 0.00 0.00 f 0.00 8904 72 113 0.00 0.00 0.00 0.00 f 0.00 8905 73 113 0.00 0.00 0.00 0.00 f 0.00 8884 52 113 0.00 0.00 0.00 0.00 f 0.00 8907 53 86 0.00 0.00 0.00 0.00 f 0.00 8908 54 86 0.00 0.00 0.00 0.00 f 0.00 8909 55 86 0.00 0.00 0.00 0.00 f 0.00 8910 56 86 0.00 0.00 0.00 0.00 f 0.00 8911 57 86 0.00 0.00 0.00 0.00 f 0.00 8912 58 86 0.00 0.00 0.00 0.00 f 0.00 8913 59 86 0.00 0.00 0.00 0.00 f 0.00 8914 60 86 0.00 0.00 0.00 0.00 f 0.00 8915 61 86 0.00 0.00 0.00 0.00 f 0.00 8916 62 86 0.00 0.00 0.00 0.00 f 0.00 8917 63 86 0.00 0.00 0.00 0.00 f 0.00 8918 64 86 0.00 0.00 0.00 0.00 f 0.00 8919 65 86 0.00 0.00 0.00 0.00 f 0.00 8920 66 86 0.00 0.00 0.00 0.00 f 0.00 8921 67 86 0.00 0.00 0.00 0.00 f 0.00 8922 68 86 0.00 0.00 0.00 0.00 f 0.00 8923 69 86 0.00 0.00 0.00 0.00 f 0.00 8924 70 86 0.00 0.00 0.00 0.00 f 0.00 8925 71 86 0.00 0.00 0.00 0.00 f 0.00 8926 72 86 0.00 0.00 0.00 0.00 f 0.00 8927 73 86 0.00 0.00 0.00 0.00 f 0.00 8906 52 86 0.00 0.00 0.00 0.00 f 0.00 8929 53 85 0.00 0.00 0.00 0.00 f 0.00 8930 54 85 0.00 0.00 0.00 0.00 f 0.00 8931 55 85 0.00 0.00 0.00 0.00 f 0.00 8932 56 85 0.00 0.00 0.00 0.00 f 0.00 8933 57 85 0.00 0.00 0.00 0.00 f 0.00 8934 58 85 0.00 0.00 0.00 0.00 f 0.00 8935 59 85 0.00 0.00 0.00 0.00 f 0.00 8936 60 85 0.00 0.00 0.00 0.00 f 0.00 8937 61 85 0.00 0.00 0.00 0.00 f 0.00 8938 62 85 0.00 0.00 0.00 0.00 f 0.00 8939 63 85 0.00 0.00 0.00 0.00 f 0.00 8940 64 85 0.00 0.00 0.00 0.00 f 0.00 8941 65 85 0.00 0.00 0.00 0.00 f 0.00 8942 66 85 0.00 0.00 0.00 0.00 f 0.00 8943 67 85 0.00 0.00 0.00 0.00 f 0.00 8944 68 85 0.00 0.00 0.00 0.00 f 0.00 8945 69 85 0.00 0.00 0.00 0.00 f 0.00 8946 70 85 0.00 0.00 0.00 0.00 f 0.00 8947 71 85 0.00 0.00 0.00 0.00 f 0.00 8948 72 85 0.00 0.00 0.00 0.00 f 0.00 8949 73 85 0.00 0.00 0.00 0.00 f 0.00 8928 52 85 0.00 0.00 0.00 0.00 f 0.00 8951 53 109 0.00 0.00 0.00 0.00 f 0.00 8952 54 109 0.00 0.00 0.00 0.00 f 0.00 8953 55 109 0.00 0.00 0.00 0.00 f 0.00 8954 56 109 0.00 0.00 0.00 0.00 f 0.00 8955 57 109 0.00 0.00 0.00 0.00 f 0.00 8956 58 109 0.00 0.00 0.00 0.00 f 0.00 8957 59 109 0.00 0.00 0.00 0.00 f 0.00 8958 60 109 0.00 0.00 0.00 0.00 f 0.00 8959 61 109 0.00 0.00 0.00 0.00 f 0.00 8960 62 109 0.00 0.00 0.00 0.00 f 0.00 8961 63 109 0.00 0.00 0.00 0.00 f 0.00 8962 64 109 0.00 0.00 0.00 0.00 f 0.00 8963 65 109 0.00 0.00 0.00 0.00 f 0.00 8964 66 109 0.00 0.00 0.00 0.00 f 0.00 8965 67 109 0.00 0.00 0.00 0.00 f 0.00 8966 68 109 0.00 0.00 0.00 0.00 f 0.00 8967 69 109 0.00 0.00 0.00 0.00 f 0.00 8968 70 109 0.00 0.00 0.00 0.00 f 0.00 8969 71 109 0.00 0.00 0.00 0.00 f 0.00 8970 72 109 0.00 0.00 0.00 0.00 f 0.00 8971 73 109 0.00 0.00 0.00 0.00 f 0.00 8950 52 109 0.00 0.00 0.00 0.00 f 0.00 8973 53 125 0.00 0.00 0.00 0.00 f 0.00 8974 54 125 0.00 0.00 0.00 0.00 f 0.00 8975 55 125 0.00 0.00 0.00 0.00 f 0.00 8976 56 125 0.00 0.00 0.00 0.00 f 0.00 8977 57 125 0.00 0.00 0.00 0.00 f 0.00 8978 58 125 0.00 0.00 0.00 0.00 f 0.00 8979 59 125 0.00 0.00 0.00 0.00 f 0.00 8980 60 125 0.00 0.00 0.00 0.00 f 0.00 8981 61 125 0.00 0.00 0.00 0.00 f 0.00 8982 62 125 0.00 0.00 0.00 0.00 f 0.00 8983 63 125 0.00 0.00 0.00 0.00 f 0.00 8984 64 125 0.00 0.00 0.00 0.00 f 0.00 8985 65 125 0.00 0.00 0.00 0.00 f 0.00 8986 66 125 0.00 0.00 0.00 0.00 f 0.00 8987 67 125 0.00 0.00 0.00 0.00 f 0.00 8988 68 125 0.00 0.00 0.00 0.00 f 0.00 8989 69 125 0.00 0.00 0.00 0.00 f 0.00 8990 70 125 0.00 0.00 0.00 0.00 f 0.00 8991 71 125 0.00 0.00 0.00 0.00 f 0.00 8992 72 125 0.00 0.00 0.00 0.00 f 0.00 8993 73 125 0.00 0.00 0.00 0.00 f 0.00 8972 52 125 0.00 0.00 0.00 0.00 f 0.00 8995 53 106 0.00 0.00 0.00 0.00 f 0.00 8996 54 106 0.00 0.00 0.00 0.00 f 0.00 8997 55 106 0.00 0.00 0.00 0.00 f 0.00 8998 56 106 0.00 0.00 0.00 0.00 f 0.00 8999 57 106 0.00 0.00 0.00 0.00 f 0.00 9000 58 106 0.00 0.00 0.00 0.00 f 0.00 9001 59 106 0.00 0.00 0.00 0.00 f 0.00 9002 60 106 0.00 0.00 0.00 0.00 f 0.00 9003 61 106 0.00 0.00 0.00 0.00 f 0.00 9004 62 106 0.00 0.00 0.00 0.00 f 0.00 9005 63 106 0.00 0.00 0.00 0.00 f 0.00 9006 64 106 0.00 0.00 0.00 0.00 f 0.00 9007 65 106 0.00 0.00 0.00 0.00 f 0.00 9008 66 106 0.00 0.00 0.00 0.00 f 0.00 9009 67 106 0.00 0.00 0.00 0.00 f 0.00 9010 68 106 0.00 0.00 0.00 0.00 f 0.00 9011 69 106 0.00 0.00 0.00 0.00 f 0.00 9012 70 106 0.00 0.00 0.00 0.00 f 0.00 9013 71 106 0.00 0.00 0.00 0.00 f 0.00 9014 72 106 0.00 0.00 0.00 0.00 f 0.00 9015 73 106 0.00 0.00 0.00 0.00 f 0.00 8994 52 106 0.00 0.00 0.00 0.00 f 0.00 9017 53 126 0.00 0.00 0.00 0.00 f 0.00 9018 54 126 0.00 0.00 0.00 0.00 f 0.00 9019 55 126 0.00 0.00 0.00 0.00 f 0.00 9020 56 126 0.00 0.00 0.00 0.00 f 0.00 9021 57 126 0.00 0.00 0.00 0.00 f 0.00 9022 58 126 0.00 0.00 0.00 0.00 f 0.00 9023 59 126 0.00 0.00 0.00 0.00 f 0.00 9024 60 126 0.00 0.00 0.00 0.00 f 0.00 9025 61 126 0.00 0.00 0.00 0.00 f 0.00 9026 62 126 0.00 0.00 0.00 0.00 f 0.00 9027 63 126 0.00 0.00 0.00 0.00 f 0.00 9028 64 126 0.00 0.00 0.00 0.00 f 0.00 9029 65 126 0.00 0.00 0.00 0.00 f 0.00 9030 66 126 0.00 0.00 0.00 0.00 f 0.00 9031 67 126 0.00 0.00 0.00 0.00 f 0.00 9032 68 126 0.00 0.00 0.00 0.00 f 0.00 9033 69 126 0.00 0.00 0.00 0.00 f 0.00 9034 70 126 0.00 0.00 0.00 0.00 f 0.00 9035 71 126 0.00 0.00 0.00 0.00 f 0.00 9036 72 126 0.00 0.00 0.00 0.00 f 0.00 9037 73 126 0.00 0.00 0.00 0.00 f 0.00 9016 52 126 0.00 0.00 0.00 0.00 f 0.00 9039 53 127 0.00 0.00 0.00 0.00 f 0.00 9040 54 127 0.00 0.00 0.00 0.00 f 0.00 9041 55 127 0.00 0.00 0.00 0.00 f 0.00 9042 56 127 0.00 0.00 0.00 0.00 f 0.00 9043 57 127 0.00 0.00 0.00 0.00 f 0.00 9044 58 127 0.00 0.00 0.00 0.00 f 0.00 9045 59 127 0.00 0.00 0.00 0.00 f 0.00 9046 60 127 0.00 0.00 0.00 0.00 f 0.00 9047 61 127 0.00 0.00 0.00 0.00 f 0.00 9048 62 127 0.00 0.00 0.00 0.00 f 0.00 9049 63 127 0.00 0.00 0.00 0.00 f 0.00 9050 64 127 0.00 0.00 0.00 0.00 f 0.00 9051 65 127 0.00 0.00 0.00 0.00 f 0.00 9052 66 127 0.00 0.00 0.00 0.00 f 0.00 9053 67 127 0.00 0.00 0.00 0.00 f 0.00 9054 68 127 0.00 0.00 0.00 0.00 f 0.00 9055 69 127 0.00 0.00 0.00 0.00 f 0.00 9056 70 127 0.00 0.00 0.00 0.00 f 0.00 9057 71 127 0.00 0.00 0.00 0.00 f 0.00 9058 72 127 0.00 0.00 0.00 0.00 f 0.00 9059 73 127 0.00 0.00 0.00 0.00 f 0.00 9038 52 127 0.00 0.00 0.00 0.00 f 0.00 9061 53 120 0.00 0.00 0.00 0.00 f 0.00 9062 54 120 0.00 0.00 0.00 0.00 f 0.00 9063 55 120 0.00 0.00 0.00 0.00 f 0.00 9064 56 120 0.00 0.00 0.00 0.00 f 0.00 9065 57 120 0.00 0.00 0.00 0.00 f 0.00 9066 58 120 0.00 0.00 0.00 0.00 f 0.00 9067 59 120 0.00 0.00 0.00 0.00 f 0.00 9068 60 120 0.00 0.00 0.00 0.00 f 0.00 9069 61 120 0.00 0.00 0.00 0.00 f 0.00 9070 62 120 0.00 0.00 0.00 0.00 f 0.00 9071 63 120 0.00 0.00 0.00 0.00 f 0.00 9072 64 120 0.00 0.00 0.00 0.00 f 0.00 9073 65 120 0.00 0.00 0.00 0.00 f 0.00 9074 66 120 0.00 0.00 0.00 0.00 f 0.00 9075 67 120 0.00 0.00 0.00 0.00 f 0.00 9076 68 120 0.00 0.00 0.00 0.00 f 0.00 9077 69 120 0.00 0.00 0.00 0.00 f 0.00 9078 70 120 0.00 0.00 0.00 0.00 f 0.00 9079 71 120 0.00 0.00 0.00 0.00 f 0.00 9080 72 120 0.00 0.00 0.00 0.00 f 0.00 9081 73 120 0.00 0.00 0.00 0.00 f 0.00 9060 52 120 0.00 0.00 0.00 0.00 f 0.00 9083 53 128 0.00 0.00 0.00 0.00 f 0.00 9084 54 128 0.00 0.00 0.00 0.00 f 0.00 9085 55 128 0.00 0.00 0.00 0.00 f 0.00 9086 56 128 0.00 0.00 0.00 0.00 f 0.00 9087 57 128 0.00 0.00 0.00 0.00 f 0.00 9088 58 128 0.00 0.00 0.00 0.00 f 0.00 9089 59 128 0.00 0.00 0.00 0.00 f 0.00 9090 60 128 0.00 0.00 0.00 0.00 f 0.00 9091 61 128 0.00 0.00 0.00 0.00 f 0.00 9092 62 128 0.00 0.00 0.00 0.00 f 0.00 9093 63 128 0.00 0.00 0.00 0.00 f 0.00 9094 64 128 0.00 0.00 0.00 0.00 f 0.00 9095 65 128 0.00 0.00 0.00 0.00 f 0.00 9096 66 128 0.00 0.00 0.00 0.00 f 0.00 9097 67 128 0.00 0.00 0.00 0.00 f 0.00 9098 68 128 0.00 0.00 0.00 0.00 f 0.00 9099 69 128 0.00 0.00 0.00 0.00 f 0.00 9100 70 128 0.00 0.00 0.00 0.00 f 0.00 9101 71 128 0.00 0.00 0.00 0.00 f 0.00 9102 72 128 0.00 0.00 0.00 0.00 f 0.00 9103 73 128 0.00 0.00 0.00 0.00 f 0.00 9082 52 128 0.00 0.00 0.00 0.00 f 0.00 9105 53 112 0.00 0.00 0.00 0.00 f 0.00 9106 54 112 0.00 0.00 0.00 0.00 f 0.00 9107 55 112 0.00 0.00 0.00 0.00 f 0.00 9108 56 112 0.00 0.00 0.00 0.00 f 0.00 9109 57 112 0.00 0.00 0.00 0.00 f 0.00 9110 58 112 0.00 0.00 0.00 0.00 f 0.00 9111 59 112 0.00 0.00 0.00 0.00 f 0.00 9112 60 112 0.00 0.00 0.00 0.00 f 0.00 9113 61 112 0.00 0.00 0.00 0.00 f 0.00 9114 62 112 0.00 0.00 0.00 0.00 f 0.00 9115 63 112 0.00 0.00 0.00 0.00 f 0.00 9116 64 112 0.00 0.00 0.00 0.00 f 0.00 9117 65 112 0.00 0.00 0.00 0.00 f 0.00 9118 66 112 0.00 0.00 0.00 0.00 f 0.00 9119 67 112 0.00 0.00 0.00 0.00 f 0.00 9120 68 112 0.00 0.00 0.00 0.00 f 0.00 9121 69 112 0.00 0.00 0.00 0.00 f 0.00 9122 70 112 0.00 0.00 0.00 0.00 f 0.00 9123 71 112 0.00 0.00 0.00 0.00 f 0.00 9124 72 112 0.00 0.00 0.00 0.00 f 0.00 9125 73 112 0.00 0.00 0.00 0.00 f 0.00 9104 52 112 0.00 0.00 0.00 0.00 f 0.00 9127 53 129 0.00 0.00 0.00 0.00 f 0.00 9128 54 129 0.00 0.00 0.00 0.00 f 0.00 9129 55 129 0.00 0.00 0.00 0.00 f 0.00 9130 56 129 0.00 0.00 0.00 0.00 f 0.00 9131 57 129 0.00 0.00 0.00 0.00 f 0.00 9132 58 129 0.00 0.00 0.00 0.00 f 0.00 9133 59 129 0.00 0.00 0.00 0.00 f 0.00 9134 60 129 0.00 0.00 0.00 0.00 f 0.00 9135 61 129 0.00 0.00 0.00 0.00 f 0.00 9136 62 129 0.00 0.00 0.00 0.00 f 0.00 9137 63 129 0.00 0.00 0.00 0.00 f 0.00 9138 64 129 0.00 0.00 0.00 0.00 f 0.00 9139 65 129 0.00 0.00 0.00 0.00 f 0.00 9140 66 129 0.00 0.00 0.00 0.00 f 0.00 9141 67 129 0.00 0.00 0.00 0.00 f 0.00 9142 68 129 0.00 0.00 0.00 0.00 f 0.00 9143 69 129 0.00 0.00 0.00 0.00 f 0.00 9144 70 129 0.00 0.00 0.00 0.00 f 0.00 9145 71 129 0.00 0.00 0.00 0.00 f 0.00 9146 72 129 0.00 0.00 0.00 0.00 f 0.00 9147 73 129 0.00 0.00 0.00 0.00 f 0.00 9126 52 129 0.00 0.00 0.00 0.00 f 0.00 \. -- -- Data for Name: uiform; Type: TABLE DATA; Schema: public; Owner: admin -- COPY uiform (uiform_id, uiform_name, uiform_order, uiform_enabled, uiform_source, uiform_notes) FROM stdin; \. -- -- Data for Name: uom; Type: TABLE DATA; Schema: public; Owner: admin -- COPY uom (uom_id, uom_name, uom_descrip, uom_item_weight) FROM stdin; 7 LB Pounds t 5 CS Case f 4 EA Each f 6 PL Pallet f 8 KG Kilos f \. -- -- Data for Name: uomconv; Type: TABLE DATA; Schema: public; Owner: admin -- COPY uomconv (uomconv_id, uomconv_from_uom_id, uomconv_from_value, uomconv_to_uom_id, uomconv_to_value, uomconv_fractional) FROM stdin; 1 7 2.2040000000 8 1.0000000000 t \. -- -- Data for Name: uomtype; Type: TABLE DATA; Schema: public; Owner: admin -- COPY uomtype (uomtype_id, uomtype_name, uomtype_descrip, uomtype_multiple) FROM stdin; 1 Selling Selling a.k.a. Pricing and Shipping UOMs. t 2 Capacity Capacity UOMs. f 3 AltCapacity Alternate Capacity UOMs. f 4 MaterialIssue Material Issuing UOMs. f \. -- -- Data for Name: urlinfo; Type: TABLE DATA; Schema: public; Owner: admin -- COPY urlinfo (url_id, url_title, url_url) FROM stdin; \. -- -- Data for Name: usr_bak; Type: TABLE DATA; Schema: public; Owner: admin -- COPY usr_bak (usr_id, usr_username, usr_propername, usr_passwd, usr_locale_id, usr_initials, usr_agent, usr_active, usr_email, usr_window) FROM stdin; 1 mfgadmin OpenMFG Administrator \N 3 ADMIN t t matherton@openmfg.com 2 admin Administrator 3 ADMIN t t admin@xtuple.com \N \. -- -- Data for Name: usrgrp; Type: TABLE DATA; Schema: public; Owner: admin -- COPY usrgrp (usrgrp_id, usrgrp_grp_id, usrgrp_username) FROM stdin; 1 1 admin \. -- -- Data for Name: usrpref; Type: TABLE DATA; Schema: public; Owner: admin -- COPY usrpref (usrpref_id, usrpref_name, usrpref_value, usrpref_username) FROM stdin; 2 ShowIMMenu t mfgadmin 3 ShowPDMenu t mfgadmin 4 ShowMSMenu t mfgadmin 5 ShowCPMenu t mfgadmin 6 ShowWOMenu t mfgadmin 7 ShowPOMenu t mfgadmin 8 ShowSOMenu t mfgadmin 9 ShowSRMenu t mfgadmin 10 ShowSAMenu t mfgadmin 28 ShowGLMenu t mfgadmin 34 UseCustCache f mfgadmin 29 ShowAPMenu t mfgadmin 27 ShowARMenu t mfgadmin 48 ShowPDToolbar t mfgadmin 51 ShowMSToolbar t mfgadmin 52 ShowCPToolbar t mfgadmin 49 ShowWOToolbar t mfgadmin 30 ShowSOToolbar t mfgadmin 53 ShowSRToolbar t mfgadmin 73 UsedFixedWidthFonts f mfgadmin 47 ShowIMToolbar t mfgadmin 74 ShowSAToolbar t mfgadmin 50 ShowPOToolbar t mfgadmin 76 ShowGLToolbar t mfgadmin 108 ToolbarPositions \n\n\nI/M Tools,P/D Tools,W/O Tools,P/O Tools,S/O Tools,\n[I/M Tools,0,0,-1,-1,1][P/D Tools,0,0,-1,-1,1][W/O Tools,0,0,-1,-1,1][P/O Tools,0,0,-1,-1,1][S/O Tools,0,0,-1,-1,1]\n\n\n\n\n\n\n mfgadmin 11 PreferredWarehouse 35 mfgadmin 112 UseItemCache f mfgadmin 54 ShowRIWorkOrdersByDefault f mfgadmin 113 ListNumericItemNumbersFirst f mfgadmin 114 ShowSOItemAvailability t mfgadmin 116 DefaultEllipsesAction list mfgadmin 117 ShowPMMenu t mfgadmin 118 ShowPMToolbar t mfgadmin 75 ShowAPToolbar t mfgadmin 111 ShowARToolbar t mfgadmin 119 ShowCRMMenu t mfgadmin 120 ShowCRMToolbar t mfgadmin 121 InterfaceWindowOption Workspace mfgadmin 1 BackgroundImageid 14 mfgadmin 122 reports/_report/columnsShown 0,on|1,on|2,on| mfgadmin 123 user/_available/columnsShown 0,on| mfgadmin 124 user/_granted/columnsShown 0,on| mfgadmin 125 users/_usr/columnsShown 0,on|1,on|2,on| mfgadmin 126 UseOldMenu f mfgadmin 127 XCheckBox/forgetful f mfgadmin 115 IdleTimeout 30 mfgadmin 128 userPreferences/_hotkey/columnsShown 0,on|1,on|2,on| mfgadmin 129 userPreferences/_event/columnsShown 0,on|1,on|2,on| mfgadmin 130 userPreferences/_warehouses/columnsShown 0,on|1,on|2,on| mfgadmin 131 configureIM/_shipformWatermarks/columnsShown 0,on|1,on|2,on| mfgadmin 132 configureSO/_invoiceWatermarks/columnsShown 0,on|1,on|2,on| mfgadmin 133 configureSO/_creditMemoWatermarks/columnsShown 0,on|1,on|2,on| mfgadmin 134 salesAccounts/_salesaccnt/columnsShown 0,on|1,on|2,on|3,on|4,on|5,on|6,off|7,off|8,off| mfgadmin 135 /_accnt/columnsShown 0,on|1,on|2,on|3,on|4,on| mfgadmin 136 accountNumbers/_account/columnsShown 0,on|1,on|2,on|3,on|4,on|5,on| mfgadmin 137 arAccountAssignments/_araccnt/columnsShown 0,on|1,on|2,on|3,on|4,on| mfgadmin 138 classCodes/_classcode/columnsShown 0,on|1,on| mfgadmin 139 costCategories/_costcat/columnsShown 0,on|1,on| mfgadmin 140 termses/_terms/columnsShown 0,on|1,on|2,on|3,on|4,on| mfgadmin 141 apAccountAssignments/_apaccnt/columnsShown 0,on|1,on|2,on|3,on| mfgadmin 142 accountingYearPeriods/_period/columnsShown 0,on|1,on|2,on| mfgadmin 143 accountingPeriods/_period/columnsShown 0,on|1,on|2,on|3,on|4,on|5,on|6,on| mfgadmin 144 dspFinancialReport/_periods/columnsShown 0,on|1,on| mfgadmin 145 dspFinancialReport/_showBegBal/checked 0 mfgadmin 146 dspFinancialReport/_showBegBalPrcnt/checked 0 mfgadmin 147 dspFinancialReport/_showDebits/checked 0 mfgadmin 148 dspFinancialReport/_showDebitsPrcnt/checked 0 mfgadmin 149 dspFinancialReport/_showCredits/checked 0 mfgadmin 150 dspFinancialReport/_showCreditsPrcnt/checked 0 mfgadmin 151 dspFinancialReport/_showEndBal/checked 0 mfgadmin 152 dspFinancialReport/_showEndBalPrcnt/checked 0 mfgadmin 153 dspFinancialReport/_showBudget/checked 0 mfgadmin 154 dspFinancialReport/_showBudgetPrcnt/checked 0 mfgadmin 155 dspFinancialReport/_showDiff/checked 0 mfgadmin 156 dspFinancialReport/_showDiffPrcnt/checked 0 mfgadmin 157 dspFinancialReport/_showCustom/checked 0 mfgadmin 158 dspFinancialReport/_showCustomPrcnt/checked 0 mfgadmin 159 dspFinancialReport/_shownumbers/checked 2 mfgadmin 160 dspFinancialReport/_showzeros/checked 2 mfgadmin 161 dspFinancialReport/_layout/columnsShown 0,on|1,on|2,on|3,on|4,on| mfgadmin 162 fixSerial/_serial/columnsShown 0,on|1,on|2,on|3,on|4,on| mfgadmin 163 importXML/_file/columnsShown 0,on|1,on| mfgadmin 164 importXML/_autoUpdate/checked 0 mfgadmin 165 taxCodes/_tax/columnsShown 0,on|1,on| mfgadmin 166 expenseCategories/_expcat/columnsShown 0,on|1,on| mfgadmin 167 incidentCategories/_incidentCategories/columnsShown 0,on|1,on|2,on| mfgadmin 168 opportunitySources/_oplist/columnsShown 0,on|1,on| mfgadmin 169 incidentWorkbench/_statusFeedback/checked 2 mfgadmin 170 incidentWorkbench/_statusConfirmed/checked 2 mfgadmin 171 incidentWorkbench/_statusNew/checked 2 mfgadmin 172 incidentWorkbench/_statusResolved/checked 2 mfgadmin 173 incidentWorkbench/_statusClosed/checked 2 mfgadmin 174 incidentWorkbench/_statusAssigned/checked 2 mfgadmin 175 incidentWorkbench/_incdt/columnsShown 0,on|1,on|2,on|3,on|4,on| mfgadmin 176 incidentWorkbench/_autoUpdate/checked 2 mfgadmin 177 customerFormAssignments/_custform/columnsShown 0,on|1,on|2,on|3,on|4,on|5,on|6,on| mfgadmin 368 agent t mfgadmin 178 taxAuthorities/_taxauth/columnsShown 0,on|1,on| mfgadmin 179 uom/_uomconv/columnsShown 0,on|1,on|2,on| mfgadmin 180 items/_showInactive/checked 0 mfgadmin 181 items/_item/columnsShown 0,on|1,on|2,on|3,on|4,on|5,on| mfgadmin 182 costingElements/_costelem/columnsShown 0,on| mfgadmin 183 uoms/_uoms/columnsShown 0,on|1,on| mfgadmin 184 _commentsTab/_comment/columnsShown 0,on|1,on|2,on|3,on| mfgadmin 185 warehouse/_whsezone/columnsShown 0,on|1,on| mfgadmin 186 taxTypes/_taxtype/columnsShown 0,on|1,on| mfgadmin 187 taxSelections/_taxsel/columnsShown 0,on|1,on|2,on| mfgadmin 188 salesCategories/_salescat/columnsShown 0,on|1,on| mfgadmin 189 bankAccounts/_bankaccnt/columnsShown 0,on|1,on|2,on|3,on|4,on|5,off| mfgadmin 190 vendorTypes/_vendtype/columnsShown 0,on|1,on| mfgadmin 191 shippingForms/_bolformat/columnsShown 0,on| mfgadmin 192 financialLayout/_layouts/columnsShown 0,on|1,on| mfgadmin 193 financialLayout/_layout/columnsShown 0,on|1,on|2,on|3,on|4,on|5,on|6,on|7,on|8,on| mfgadmin 194 financialLayouts/_flhead/columnsShown 0,on|1,on|2,on|3,on| mfgadmin 195 checkFormats/_form/columnsShown 0,on|1,on| mfgadmin 196 subAccntTypes/_subaccnttypes/columnsShown 0,on|1,on|2,on| mfgadmin 197 companies/_company/columnsShown 0,on|1,on| mfgadmin 198 profitCenters/_prftcntr/columnsShown 0,on|1,on| mfgadmin 199 reasonCodes/_rsncode/columnsShown 0,on|1,on| mfgadmin 200 bankAdjustmentTypes/_bankadjtype/columnsShown 0,on|1,on| mfgadmin 109 DisableExportContents f mfgadmin 110 UseEnhancedAuthentication f mfgadmin 201 eventManager/_showAcknowledged/checked 0 mfgadmin 202 eventManager/_event/columnsShown 0,on|1,on|2,on|3,on|4,on|5,on|6,on|7,on| mfgadmin 203 eventManager/_autoUpdate/checked 0 mfgadmin 204 images/_image/columnsShown 0,on|1,on|2,on| mfgadmin 205 forms/_form/columnsShown 0,on|1,on| mfgadmin 206 currencies/_curr/columnsShown 0,on|1,on|2,on|3,on| mfgadmin 207 productCategories/_prodcat/columnsShown 0,on|1,on| mfgadmin 208 /_item/columnsShown 0,on|1,on| mfgadmin 209 shipVias/_shipvia/columnsShown 0,on|1,on| mfgadmin 210 customer/_cc/columnsShown 0,on|1,on|2,on|3,on| mfgadmin 211 tabComments/_comment/columnsShown 0,on|1,on|2,on|3,on| mfgadmin 212 customer/_charass/columnsShown 0,on|1,on| mfgadmin 213 customer/_shipto/columnsShown 0,on|1,on|2,on|3,on|4,on| mfgadmin 214 customer/_taxreg/columnsShown 0,on|1,on| mfgadmin 215 salesReps/_salesrep/columnsShown 0,on|1,on|2,on| mfgadmin 216 shippingZones/_shipzone/columnsShown 0,on|1,on| mfgadmin 217 crmaccounts/_crmaccount/columnsShown 0,on|1,on|2,on|3,on|4,on|5,on|6,on|7,on| mfgadmin 218 customers/_cust/columnsShown 0,on|1,on|2,on|3,on|4,on|5,on| mfgadmin 219 customCommands/_commands/columnsShown 0,on|1,on| mfgadmin 220 departments/_deptList/columnsShown 0,on|1,on| mfgadmin 221 calendars/_calhead/columnsShown 0,on|1,on| mfgadmin 222 ShowIMMenu t admin 223 ShowPDMenu t admin 224 ShowMSMenu t admin 225 ShowCPMenu t admin 226 ShowWOMenu t admin 227 ShowPOMenu t admin 228 ShowSOMenu t admin 229 ShowSRMenu t admin 230 ShowSAMenu t admin 231 ShowGLMenu t admin 232 UseCustCache f admin 233 ShowAPMenu t admin 234 ShowARMenu t admin 235 ShowPDToolbar t admin 236 ShowMSToolbar t admin 237 ShowCPToolbar t admin 238 ShowWOToolbar t admin 239 ShowSOToolbar t admin 240 ShowSRToolbar t admin 241 UsedFixedWidthFonts f admin 242 ShowIMToolbar t admin 243 ShowSAToolbar t admin 244 ShowPOToolbar t admin 245 ShowGLToolbar t admin 246 ToolbarPositions \n\n\nI/M Tools,P/D Tools,W/O Tools,P/O Tools,S/O Tools,\n[I/M Tools,0,0,-1,-1,1][P/D Tools,0,0,-1,-1,1][W/O Tools,0,0,-1,-1,1][P/O Tools,0,0,-1,-1,1][S/O Tools,0,0,-1,-1,1]\n\n\n\n\n\n\n admin 247 PreferredWarehouse 35 admin 248 UseItemCache f admin 249 ShowRIWorkOrdersByDefault f admin 250 ListNumericItemNumbersFirst f admin 251 ShowSOItemAvailability t admin 252 DefaultEllipsesAction list admin 253 ShowPMMenu t admin 254 ShowPMToolbar t admin 255 ShowAPToolbar t admin 256 ShowARToolbar t admin 257 ShowCRMMenu t admin 258 ShowCRMToolbar t admin 260 BackgroundImageid 14 admin 261 reports/_report/columnsShown 0,on|1,on|2,on| admin 262 user/_available/columnsShown 0,on| admin 263 user/_granted/columnsShown 0,on| admin 264 users/_usr/columnsShown 0,on|1,on|2,on| admin 265 UseOldMenu f admin 266 XCheckBox/forgetful f admin 267 IdleTimeout 30 admin 268 userPreferences/_hotkey/columnsShown 0,on|1,on|2,on| admin 269 userPreferences/_event/columnsShown 0,on|1,on|2,on| admin 270 userPreferences/_warehouses/columnsShown 0,on|1,on|2,on| admin 271 configureIM/_shipformWatermarks/columnsShown 0,on|1,on|2,on| admin 272 configureSO/_invoiceWatermarks/columnsShown 0,on|1,on|2,on| admin 273 configureSO/_creditMemoWatermarks/columnsShown 0,on|1,on|2,on| admin 274 salesAccounts/_salesaccnt/columnsShown 0,on|1,on|2,on|3,on|4,on|5,on|6,off|7,off|8,off| admin 278 classCodes/_classcode/columnsShown 0,on|1,on| admin 279 costCategories/_costcat/columnsShown 0,on|1,on| admin 280 termses/_terms/columnsShown 0,on|1,on|2,on|3,on|4,on| admin 281 apAccountAssignments/_apaccnt/columnsShown 0,on|1,on|2,on|3,on| admin 282 accountingYearPeriods/_period/columnsShown 0,on|1,on|2,on| admin 283 accountingPeriods/_period/columnsShown 0,on|1,on|2,on|3,on|4,on|5,on|6,on| admin 284 dspFinancialReport/_periods/columnsShown 0,on|1,on| admin 285 dspFinancialReport/_showBegBal/checked 0 admin 286 dspFinancialReport/_showBegBalPrcnt/checked 0 admin 287 dspFinancialReport/_showDebits/checked 0 admin 288 dspFinancialReport/_showDebitsPrcnt/checked 0 admin 289 dspFinancialReport/_showCredits/checked 0 admin 290 dspFinancialReport/_showCreditsPrcnt/checked 0 admin 291 dspFinancialReport/_showEndBal/checked 0 admin 292 dspFinancialReport/_showEndBalPrcnt/checked 0 admin 293 dspFinancialReport/_showBudget/checked 0 admin 294 dspFinancialReport/_showBudgetPrcnt/checked 0 admin 295 dspFinancialReport/_showDiff/checked 0 admin 296 dspFinancialReport/_showDiffPrcnt/checked 0 admin 297 dspFinancialReport/_showCustom/checked 0 admin 298 dspFinancialReport/_showCustomPrcnt/checked 0 admin 299 dspFinancialReport/_shownumbers/checked 2 admin 300 dspFinancialReport/_showzeros/checked 2 admin 301 dspFinancialReport/_layout/columnsShown 0,on|1,on|2,on|3,on|4,on| admin 302 fixSerial/_serial/columnsShown 0,on|1,on|2,on|3,on|4,on| admin 303 importXML/_file/columnsShown 0,on|1,on| admin 304 importXML/_autoUpdate/checked 0 admin 305 taxCodes/_tax/columnsShown 0,on|1,on| admin 306 expenseCategories/_expcat/columnsShown 0,on|1,on| admin 307 incidentCategories/_incidentCategories/columnsShown 0,on|1,on|2,on| admin 308 opportunitySources/_oplist/columnsShown 0,on|1,on| admin 309 incidentWorkbench/_statusFeedback/checked 2 admin 310 incidentWorkbench/_statusConfirmed/checked 2 admin 311 incidentWorkbench/_statusNew/checked 2 admin 312 incidentWorkbench/_statusResolved/checked 2 admin 313 incidentWorkbench/_statusClosed/checked 2 admin 314 incidentWorkbench/_statusAssigned/checked 2 admin 315 incidentWorkbench/_incdt/columnsShown 0,on|1,on|2,on|3,on|4,on| admin 316 incidentWorkbench/_autoUpdate/checked 2 admin 317 customerFormAssignments/_custform/columnsShown 0,on|1,on|2,on|3,on|4,on|5,on|6,on| admin 318 taxAuthorities/_taxauth/columnsShown 0,on|1,on| admin 319 uom/_uomconv/columnsShown 0,on|1,on|2,on| admin 320 items/_showInactive/checked 0 admin 321 items/_item/columnsShown 0,on|1,on|2,on|3,on|4,on|5,on| admin 322 costingElements/_costelem/columnsShown 0,on| admin 323 uoms/_uoms/columnsShown 0,on|1,on| admin 324 _commentsTab/_comment/columnsShown 0,on|1,on|2,on|3,on| admin 325 warehouse/_whsezone/columnsShown 0,on|1,on| admin 326 taxTypes/_taxtype/columnsShown 0,on|1,on| admin 327 taxSelections/_taxsel/columnsShown 0,on|1,on|2,on| admin 328 salesCategories/_salescat/columnsShown 0,on|1,on| admin 329 bankAccounts/_bankaccnt/columnsShown 0,on|1,on|2,on|3,on|4,on|5,off| admin 330 vendorTypes/_vendtype/columnsShown 0,on|1,on| admin 331 shippingForms/_bolformat/columnsShown 0,on| admin 332 financialLayout/_layouts/columnsShown 0,on|1,on| admin 334 financialLayouts/_flhead/columnsShown 0,on|1,on|2,on|3,on| admin 335 checkFormats/_form/columnsShown 0,on|1,on| admin 336 subAccntTypes/_subaccnttypes/columnsShown 0,on|1,on|2,on| admin 337 companies/_company/columnsShown 0,on|1,on| admin 338 profitCenters/_prftcntr/columnsShown 0,on|1,on| admin 339 reasonCodes/_rsncode/columnsShown 0,on|1,on| admin 340 bankAdjustmentTypes/_bankadjtype/columnsShown 0,on|1,on| admin 343 eventManager/_showAcknowledged/checked 0 admin 344 eventManager/_event/columnsShown 0,on|1,on|2,on|3,on|4,on|5,on|6,on|7,on| admin 345 eventManager/_autoUpdate/checked 0 admin 346 images/_image/columnsShown 0,on|1,on|2,on| admin 347 forms/_form/columnsShown 0,on|1,on| admin 348 currencies/_curr/columnsShown 0,on|1,on|2,on|3,on| admin 349 productCategories/_prodcat/columnsShown 0,on|1,on| admin 350 /_item/columnsShown 0,on|1,on| admin 351 shipVias/_shipvia/columnsShown 0,on|1,on| admin 352 customer/_cc/columnsShown 0,on|1,on|2,on|3,on| admin 353 tabComments/_comment/columnsShown 0,on|1,on|2,on|3,on| admin 354 customer/_charass/columnsShown 0,on|1,on| admin 355 customer/_shipto/columnsShown 0,on|1,on|2,on|3,on|4,on| admin 356 customer/_taxreg/columnsShown 0,on|1,on| admin 357 salesReps/_salesrep/columnsShown 0,on|1,on|2,on| admin 358 shippingZones/_shipzone/columnsShown 0,on|1,on| admin 359 crmaccounts/_crmaccount/columnsShown 0,on|1,on|2,on|3,on|4,on|5,on|6,on|7,on| admin 360 customers/_cust/columnsShown 0,on|1,on|2,on|3,on|4,on|5,on| admin 361 customCommands/_commands/columnsShown 0,on|1,on| admin 362 departments/_deptList/columnsShown 0,on|1,on| admin 275 /_accnt/columnsShown 0,on|1,on|2,on|3,on|4,on|5,on|6,off|7,off| admin 333 financialLayout/_layout/columnsShown 0,on|1,on|2,on| admin 276 accountNumbers/_account/columnsShown 0,on|1,on|2,on|3,on|4,on|5,on|6,on|7,on| admin 363 calendars/_calhead/columnsShown 0,on|1,on| admin 364 propername OpenMFG Administrator mfgadmin 365 initials ADMIN mfgadmin 366 email matherton@openmfg.com mfgadmin 367 locale_id 3 mfgadmin 369 active t mfgadmin 370 window mfgadmin 379 user/_availableSite/columnsShown 0,on| admin 380 user/_grantedSite/columnsShown 0,on| admin 381 user/_availableGroup/columnsShown 0,on| admin 382 user/_grantedGroup/columnsShown 0,on| admin 383 group/_available/columnsShown 0,on| admin 384 group/_granted/columnsShown 0,on| admin 385 groups/_list/columnsShown 0,on|1,on| admin 377 window admin 386 taxCode/_taxitems/columnsShown 0,on|1,on|2,on|3,on|4,on| admin 387 taxClasses/_taxclass/columnsShown 0,on|1,on|2,on| admin 388 taxAssignment/_taxCodeOption/columnsShown 0,on| admin 389 taxAssignment/_taxCodeSelected/columnsShown 0,on| admin 390 taxAssignments/_taxass/columnsShown 0,on|1,on|2,on|3,on| admin 391 accountNumbers/_showExternal/checked 0 admin 392 /_layout/columnsShown 0,on|1,on|2,on| admin 393 locales/_locale/columnsShown 0,on|1,on| admin 277 arAccountAssignments/_araccnt/columnsShown 0,on|1,on|2,on|3,on|4,on|5,on| admin 394 IngoreMissingTranslationFiles f admin 259 InterfaceWindowOption TopLevel admin 396 CopyListsPlainText f admin 397 EmailEvents f admin 398 AlarmEventDefault f admin 399 AlarmEmailDefault f admin 400 AlarmSysmsgDefault f admin 401 EnableScriptDebug f admin 402 unpostedPurchaseOrders/_queryonstart/checked 2 admin 403 unpostedPurchaseOrders/_showOpen/checked 0 admin 404 unpostedPurchaseOrders/_showUnreleased/checked 0 admin 405 unpostedPurchaseOrders/_autoupdate/checked 0 admin 406 accountNumbers/_showInactive/checked 0 admin 407 metasqls/_byPackage/checked 2 admin 408 reports/_byPackage/checked 0 admin 341 DisableExportContents f admin 342 UseEnhancedAuthentication f admin 378 selectedSites f admin 371 propername Administrator admin 373 email admin@xtuple.com admin 372 initials ADMIN admin 374 locale_id 3 admin 375 agent t admin 376 active t admin 409 packages/_autoUpdate/checked 0 admin 410 vendors/_queryonstart/checked 2 admin 411 vendor/_verbose/checked 0 admin 413 crmaccount/_todolist/checked 0 admin 414 crmaccount/_opportunities/checked 0 admin 415 crmaccount/_incidents/checked 0 admin 416 crmaccount/_autoupdate/checked 0 admin 417 crmaccount/_verbose/checked 0 admin 418 crmaccount/_activeOnly/checked 0 admin 419 vendors/_autoupdate/checked 0 admin 420 customers/_queryonstart/checked 2 admin 421 customers/_autoupdate/checked 0 admin \. -- -- Data for Name: usrpriv; Type: TABLE DATA; Schema: public; Owner: admin -- COPY usrpriv (usrpriv_id, usrpriv_priv_id, usrpriv_username) FROM stdin; 1 3 mfgadmin 3 5 mfgadmin 11 45 mfgadmin 12 44 mfgadmin 13 100 mfgadmin 14 48 mfgadmin 15 49 mfgadmin 16 53 mfgadmin 17 54 mfgadmin 18 63 mfgadmin 19 64 mfgadmin 20 65 mfgadmin 21 73 mfgadmin 26 4 mfgadmin 28 17 mfgadmin 29 16 mfgadmin 30 91 mfgadmin 31 27 mfgadmin 33 11 mfgadmin 34 93 mfgadmin 35 12 mfgadmin 36 13 mfgadmin 37 26 mfgadmin 38 75 mfgadmin 39 76 mfgadmin 40 94 mfgadmin 41 121 mfgadmin 42 122 mfgadmin 43 101 mfgadmin 45 87 mfgadmin 46 103 mfgadmin 47 104 mfgadmin 48 105 mfgadmin 50 107 mfgadmin 51 1 mfgadmin 52 2 mfgadmin 60 123 mfgadmin 63 120 mfgadmin 65 124 mfgadmin 66 125 mfgadmin 75 134 mfgadmin 78 137 mfgadmin 80 140 mfgadmin 81 22 mfgadmin 82 23 mfgadmin 83 51 mfgadmin 84 55 mfgadmin 85 56 mfgadmin 86 57 mfgadmin 87 58 mfgadmin 88 61 mfgadmin 89 62 mfgadmin 90 59 mfgadmin 91 60 mfgadmin 92 50 mfgadmin 93 88 mfgadmin 94 89 mfgadmin 96 126 mfgadmin 97 127 mfgadmin 98 141 mfgadmin 99 142 mfgadmin 100 143 mfgadmin 101 144 mfgadmin 118 160 mfgadmin 119 31 mfgadmin 123 161 mfgadmin 124 162 mfgadmin 125 163 mfgadmin 127 68 mfgadmin 129 166 mfgadmin 130 167 mfgadmin 131 168 mfgadmin 132 169 mfgadmin 133 170 mfgadmin 135 173 mfgadmin 138 176 mfgadmin 139 177 mfgadmin 140 178 mfgadmin 142 180 mfgadmin 143 181 mfgadmin 144 182 mfgadmin 147 189 mfgadmin 148 190 mfgadmin 149 191 mfgadmin 150 192 mfgadmin 151 193 mfgadmin 152 194 mfgadmin 153 195 mfgadmin 154 196 mfgadmin 155 197 mfgadmin 156 198 mfgadmin 157 199 mfgadmin 158 200 mfgadmin 159 201 mfgadmin 160 202 mfgadmin 161 232 mfgadmin 162 203 mfgadmin 164 205 mfgadmin 165 233 mfgadmin 166 207 mfgadmin 167 208 mfgadmin 168 209 mfgadmin 170 234 mfgadmin 171 235 mfgadmin 172 211 mfgadmin 173 212 mfgadmin 174 213 mfgadmin 177 236 mfgadmin 188 228 mfgadmin 189 231 mfgadmin 194 239 mfgadmin 195 242 mfgadmin 391 246 mfgadmin 392 244 mfgadmin 393 245 mfgadmin 397 248 mfgadmin 401 249 mfgadmin 402 250 mfgadmin 410 253 mfgadmin 748 258 mfgadmin 749 257 mfgadmin 750 204 mfgadmin 809 187 mfgadmin 810 188 mfgadmin 811 259 mfgadmin 825 262 mfgadmin 827 263 mfgadmin 828 261 mfgadmin 829 269 mfgadmin 839 214 mfgadmin 840 274 mfgadmin 841 47 mfgadmin 842 46 mfgadmin 843 256 mfgadmin 844 255 mfgadmin 846 276 mfgadmin 847 275 mfgadmin 848 277 mfgadmin 849 278 mfgadmin 850 280 mfgadmin 851 215 mfgadmin 852 217 mfgadmin 853 218 mfgadmin 854 219 mfgadmin 855 220 mfgadmin 856 223 mfgadmin 857 224 mfgadmin 858 225 mfgadmin 859 216 mfgadmin 860 222 mfgadmin 861 221 mfgadmin 862 226 mfgadmin 863 227 mfgadmin 872 10 mfgadmin 873 30 mfgadmin 874 29 mfgadmin 875 37 mfgadmin 876 42 mfgadmin 877 84 mfgadmin 878 82 mfgadmin 879 83 mfgadmin 880 85 mfgadmin 881 86 mfgadmin 882 90 mfgadmin 883 116 mfgadmin 884 117 mfgadmin 885 118 mfgadmin 887 14 mfgadmin 888 15 mfgadmin 889 128 mfgadmin 890 129 mfgadmin 891 131 mfgadmin 892 130 mfgadmin 893 132 mfgadmin 894 133 mfgadmin 895 147 mfgadmin 896 81 mfgadmin 897 148 mfgadmin 898 19 mfgadmin 900 150 mfgadmin 901 151 mfgadmin 902 152 mfgadmin 903 154 mfgadmin 904 153 mfgadmin 905 35 mfgadmin 906 36 mfgadmin 907 164 mfgadmin 908 241 mfgadmin 909 238 mfgadmin 910 264 mfgadmin 911 265 mfgadmin 912 179 mfgadmin 913 251 mfgadmin 914 252 mfgadmin 915 254 mfgadmin 916 266 mfgadmin 917 267 mfgadmin 918 268 mfgadmin 919 271 mfgadmin 920 272 mfgadmin 1193 281 mfgadmin 1195 106 mfgadmin 1219 111 mfgadmin 1220 260 mfgadmin 1523 294 mfgadmin 1537 297 mfgadmin 1538 298 mfgadmin 1552 279 mfgadmin 1553 302 mfgadmin 1554 303 mfgadmin 1555 305 mfgadmin 1556 70 mfgadmin 1557 273 mfgadmin 1563 306 mfgadmin 1564 307 mfgadmin 1779 316 mfgadmin 1780 317 mfgadmin 2039 369 mfgadmin 2040 370 mfgadmin 2041 371 mfgadmin 2042 334 mfgadmin 2043 356 mfgadmin 2044 357 mfgadmin 2045 358 mfgadmin 2046 372 mfgadmin 2047 335 mfgadmin 2048 373 mfgadmin 2049 382 mfgadmin 2050 313 mfgadmin 2051 314 mfgadmin 2052 315 mfgadmin 2053 374 mfgadmin 2054 375 mfgadmin 2055 376 mfgadmin 2056 377 mfgadmin 2057 378 mfgadmin 2058 379 mfgadmin 2059 380 mfgadmin 2060 350 mfgadmin 2061 351 mfgadmin 2063 270 mfgadmin 2064 362 mfgadmin 2065 363 mfgadmin 2066 349 mfgadmin 2067 353 mfgadmin 2068 354 mfgadmin 2069 368 mfgadmin 2070 383 mfgadmin 2071 347 mfgadmin 2072 348 mfgadmin 2073 336 mfgadmin 2074 337 mfgadmin 2075 346 mfgadmin 2076 355 mfgadmin 2078 385 mfgadmin 2079 386 mfgadmin 2080 345 mfgadmin 2081 359 mfgadmin 2086 388 mfgadmin 2087 352 mfgadmin 2088 389 mfgadmin 2089 390 mfgadmin 2090 391 mfgadmin 2091 392 mfgadmin 2092 393 mfgadmin 2093 394 mfgadmin 2094 407 mfgadmin 2096 415 mfgadmin 2097 416 mfgadmin 2099 418 mfgadmin 2100 446 mfgadmin 2101 420 mfgadmin 2103 422 mfgadmin 2104 423 mfgadmin 2105 424 mfgadmin 2106 425 mfgadmin 2107 426 mfgadmin 2108 427 mfgadmin 2109 428 mfgadmin 2110 429 mfgadmin 2111 430 mfgadmin 2112 431 mfgadmin 2113 447 mfgadmin 2114 433 mfgadmin 2116 435 mfgadmin 2117 436 mfgadmin 2118 437 mfgadmin 2119 438 mfgadmin 2120 439 mfgadmin 2121 440 mfgadmin 2122 441 mfgadmin 2123 442 mfgadmin 2124 443 mfgadmin 2125 444 mfgadmin 2126 419 mfgadmin 2127 432 mfgadmin 2128 448 mfgadmin 2129 449 mfgadmin 2130 450 mfgadmin 2131 451 mfgadmin 2132 395 mfgadmin 2133 396 mfgadmin 2134 397 mfgadmin 2135 398 mfgadmin 2139 399 mfgadmin 2140 403 mfgadmin 2141 404 mfgadmin 2143 406 mfgadmin 2144 445 mfgadmin 2148 408 mfgadmin 2149 409 mfgadmin 2151 452 mfgadmin 2152 453 mfgadmin 2153 454 mfgadmin 2154 455 mfgadmin 2155 456 mfgadmin 2156 457 mfgadmin 2157 458 mfgadmin 2158 461 mfgadmin 2159 462 mfgadmin 2160 463 mfgadmin 2161 464 mfgadmin 2162 465 mfgadmin 2163 466 mfgadmin 2164 467 mfgadmin 2165 468 mfgadmin 2166 469 mfgadmin 2167 470 mfgadmin 2168 459 mfgadmin 2169 460 mfgadmin 2170 487 mfgadmin 2171 488 mfgadmin 2172 489 mfgadmin 2173 475 mfgadmin 2174 476 mfgadmin 2175 492 mfgadmin 2176 483 mfgadmin 2177 484 mfgadmin 2178 480 mfgadmin 2179 481 mfgadmin 2180 482 mfgadmin 2181 485 mfgadmin 2182 486 mfgadmin 2183 471 mfgadmin 2184 490 mfgadmin 2185 491 mfgadmin 2549 523 admin 2550 485 admin 2551 486 admin 2552 100 admin 2553 63 admin 2554 64 admin 2555 65 admin 2556 73 admin 2557 121 admin 2558 122 admin 2559 101 admin 2560 87 admin 2561 123 admin 2562 124 admin 2563 68 admin 2564 166 admin 2565 167 admin 2566 168 admin 2567 169 admin 2568 170 admin 2569 236 admin 2570 248 admin 2571 253 admin 2572 3 admin 2573 345 admin 2574 359 admin 2575 388 admin 2576 394 admin 2577 399 admin 2578 403 admin 2579 404 admin 2580 406 admin 2581 445 admin 2582 453 admin 2583 471 admin 2584 490 admin 2585 491 admin 2586 493 admin 2587 496 admin 2588 497 admin 2589 498 admin 2590 499 admin 2591 500 admin 2592 494 admin 2593 502 admin 2594 504 admin 2595 517 admin 2596 518 admin 2597 519 admin 2598 520 admin 2599 521 admin 2600 522 admin 2601 524 admin 2626 22 admin 2627 23 admin 2628 51 admin 2629 55 admin 2630 56 admin 2631 57 admin 2632 58 admin 2633 61 admin 2634 59 admin 2635 60 admin 2636 50 admin 2637 88 admin 2638 89 admin 2639 111 admin 2640 126 admin 2641 127 admin 2642 141 admin 2643 142 admin 2644 180 admin 2645 181 admin 2646 190 admin 2647 192 admin 2648 193 admin 2649 194 admin 2650 195 admin 2651 196 admin 2652 197 admin 2653 198 admin 2654 199 admin 2655 200 admin 2656 201 admin 2657 232 admin 2658 203 admin 2659 233 admin 2660 70 admin 2661 234 admin 2662 235 admin 2663 211 admin 2664 212 admin 2665 239 admin 2666 242 admin 2667 257 admin 2668 258 admin 2669 273 admin 2670 274 admin 2671 281 admin 2672 336 admin 2673 337 admin 2674 346 admin 2675 347 admin 2676 348 admin 2677 355 admin 2678 385 admin 2679 386 admin 2680 389 admin 2681 393 admin 2682 459 admin 2683 460 admin 2684 510 admin 2685 539 admin 2686 540 admin 2687 541 admin 2688 542 admin 2696 575 admin 2697 576 admin 2698 577 admin 2699 578 admin 2700 579 admin 2701 580 admin 2702 581 admin 2703 582 admin 2704 583 admin 2705 584 admin 2706 585 admin 2707 586 admin 2708 587 admin 2709 588 admin 2710 589 admin 2711 590 admin 2712 591 admin 2713 592 admin 2714 593 admin 2715 594 admin 2716 595 admin 2717 596 admin 2718 597 admin 2719 598 admin 2720 635 admin 2721 638 admin 2722 637 admin 2723 636 admin 2724 179 admin 2725 251 admin 2726 252 admin 2727 254 admin 2728 260 admin 2729 261 admin 2730 262 admin 2731 263 admin 2732 266 admin 2733 267 admin 2734 268 admin 2735 271 admin 2736 272 admin 2737 275 admin 2738 276 admin 2739 277 admin 2740 278 admin 2741 279 admin 2742 280 admin 2743 294 admin 2744 297 admin 2745 298 admin 2746 302 admin 2747 303 admin 2748 305 admin 2749 369 admin 2750 370 admin 2751 313 admin 2752 314 admin 2753 315 admin 2754 371 admin 2755 372 admin 2756 334 admin 2757 335 admin 2758 373 admin 2759 374 admin 2760 375 admin 2761 376 admin 2762 377 admin 2763 378 admin 2764 356 admin 2765 357 admin 2766 358 admin 2767 379 admin 2768 380 admin 2769 512 admin 2770 382 admin 2771 395 admin 2772 396 admin 2773 397 admin 2774 398 admin 2775 407 admin 2776 455 admin 2777 456 admin 2778 457 admin 2779 458 admin 2780 461 admin 2781 462 admin 2782 463 admin 2783 464 admin 2784 467 admin 2785 468 admin 2786 469 admin 2787 475 admin 2788 476 admin 2789 487 admin 2790 488 admin 2791 489 admin 2792 187 admin 2793 188 admin 2794 259 admin 2795 492 admin 2796 505 admin 2797 62 admin 2798 191 admin 2799 202 admin 2800 513 admin 2801 514 admin 2802 515 admin 2803 465 admin 2804 466 admin 2805 599 admin 2806 600 admin 2807 601 admin 2808 602 admin 2809 629 admin 2810 630 admin 2811 631 admin 2812 516 admin 2813 632 admin 2814 633 admin 2815 634 admin 2816 446 admin 2817 420 admin 2818 422 admin 2819 426 admin 2820 429 admin 2821 447 admin 2822 433 admin 2823 435 admin 2824 436 admin 2825 441 admin 2826 444 admin 2827 448 admin 2828 449 admin 2829 450 admin 2830 451 admin 2831 480 admin 2832 481 admin 2833 482 admin 2834 511 admin 2835 614 admin 2836 431 admin 2837 416 admin 2838 626 admin 2839 425 admin 2840 423 admin 2841 419 admin 2842 483 admin 2843 424 admin 2844 392 admin 2845 440 admin 2846 437 admin 2847 432 admin 2848 484 admin 2849 439 admin 2850 391 admin 2851 427 admin 2852 618 admin 2853 620 admin 2854 622 admin 2855 624 admin 2856 628 admin 2857 442 admin 2858 617 admin 2859 619 admin 2860 621 admin 2861 623 admin 2862 625 admin 2863 627 admin 2864 639 admin 2865 640 admin 2866 615 admin 2867 616 admin 2868 605 admin 2869 606 admin 2870 607 admin 2871 608 admin 2872 641 admin 2873 642 admin 2874 609 admin 2875 610 admin 2876 611 admin 2877 612 admin 2878 613 admin \. -- -- Data for Name: vendaddrinfo; Type: TABLE DATA; Schema: public; Owner: admin -- COPY vendaddrinfo (vendaddr_id, vendaddr_vend_id, vendaddr_code, vendaddr_name, vendaddr_comments, vendaddr_cntct_id, vendaddr_addr_id, vendaddr_taxzone_id) FROM stdin; \. -- -- Data for Name: vendinfo; Type: TABLE DATA; Schema: public; Owner: admin -- COPY vendinfo (vend_id, vend_name, vend_lastpurchdate, vend_active, vend_po, vend_comments, vend_pocomments, vend_number, vend_1099, vend_exported, vend_fobsource, vend_fob, vend_terms_id, vend_shipvia, vend_vendtype_id, vend_qualified, vend_ediemail, vend_ediemailbody, vend_edisubject, vend_edifilename, vend_accntnum, vend_emailpodelivery, vend_restrictpurch, vend_edicc, vend_curr_id, vend_cntct1_id, vend_cntct2_id, vend_addr_id, vend_match, vend_ach_enabled, vend_ach_accnttype, vend_ach_use_vendinfo, vend_ach_indiv_number, vend_ach_indiv_name, vend_ediemailhtml, vend_ach_routingnumber, vend_ach_accntnumber, vend_taxzone_id, vend_accnt_id, vend_expcat_id, vend_tax_id) FROM stdin; 78 State Sales Tax Authority \N t f SALES TAX f \N W 43 USPS 19 f f f 1 \N \N \N f f \N t f \N \N -1 -1 \. -- -- Data for Name: vendtype; Type: TABLE DATA; Schema: public; Owner: admin -- COPY vendtype (vendtype_id, vendtype_code, vendtype_descrip) FROM stdin; 18 NORMAL Normal Vendor 19 TAX AUTHORITY Tax Authority 20 EMPLOYEE Employee \. -- -- Data for Name: vodist; Type: TABLE DATA; Schema: public; Owner: admin -- COPY vodist (vodist_id, vodist_poitem_id, vodist_vohead_id, vodist_costelem_id, vodist_accnt_id, vodist_amount, vodist_qty, vodist_expcat_id, vodist_tax_id, vodist_discountable, vodist_notes) FROM stdin; \. -- -- Data for Name: vohead; Type: TABLE DATA; Schema: public; Owner: admin -- COPY vohead (vohead_id, vohead_number, vohead_pohead_id, vohead_posted, vohead_duedate, vohead_invcnumber, vohead_amount, vohead_docdate, vohead_1099, vohead_distdate, vohead_reference, vohead_terms_id, vohead_vend_id, vohead_curr_id, vohead_adjtaxtype_id, vohead_freighttaxtype_id, vohead_gldistdate, vohead_misc, vohead_taxzone_id, vohead_taxtype_id, vohead_notes, vohead_recurring_vohead_id) FROM stdin; \. -- -- Data for Name: voheadtax; Type: TABLE DATA; Schema: public; Owner: admin -- COPY voheadtax (taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber) FROM stdin; \. -- -- Data for Name: voitem; Type: TABLE DATA; Schema: public; Owner: admin -- COPY voitem (voitem_id, voitem_vohead_id, voitem_poitem_id, voitem_close, voitem_qty, voitem_freight, voitem_taxtype_id) FROM stdin; \. -- -- Data for Name: voitemtax; Type: TABLE DATA; Schema: public; Owner: admin -- COPY voitemtax (taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber) FROM stdin; \. -- -- Data for Name: whsezone; Type: TABLE DATA; Schema: public; Owner: admin -- COPY whsezone (whsezone_id, whsezone_warehous_id, whsezone_name, whsezone_descrip) FROM stdin; \. -- -- Data for Name: whsinfo; Type: TABLE DATA; Schema: public; Owner: admin -- COPY whsinfo (warehous_id, warehous_code, warehous_descrip, warehous_fob, warehous_active, warehous_counttag_prefix, warehous_counttag_number, warehous_bol_prefix, warehous_bol_number, warehous_shipping, warehous_useslips, warehous_usezones, warehous_aislesize, warehous_aislealpha, warehous_racksize, warehous_rackalpha, warehous_binsize, warehous_binalpha, warehous_locationsize, warehous_locationalpha, warehous_enforcearbl, warehous_default_accnt_id, warehous_shipping_commission, warehous_cntct_id, warehous_addr_id, warehous_transit, warehous_shipform_id, warehous_shipvia_id, warehous_shipcomments, warehous_costcat_id, warehous_sitetype_id, warehous_taxzone_id, warehous_sequence) FROM stdin; 35 WH1 Main Warehouse t WH1 90000 WH1 10000 t t f 2 t 2 t 2 t 2 t t 83 0.0000 2 2 f \N \N \N \N 1 \N 0 \. -- -- Data for Name: wo; Type: TABLE DATA; Schema: public; Owner: admin -- COPY wo (wo_id, wo_number, wo_subnumber, wo_status, wo_itemsite_id, wo_startdate, wo_duedate, wo_ordtype, wo_ordid, wo_qtyord, wo_qtyrcv, wo_adhoc, wo_itemcfg_series, wo_imported, wo_wipvalue, wo_postedvalue, wo_prodnotes, wo_prj_id, wo_priority, wo_brdvalue, wo_bom_rev_id, wo_boo_rev_id, wo_cosmethod, wo_womatl_id, wo_username) FROM stdin; \. -- -- Data for Name: womatl; Type: TABLE DATA; Schema: public; Owner: admin -- COPY womatl (womatl_id, womatl_wo_id, womatl_itemsite_id, womatl_qtyper, womatl_scrap, womatl_qtyreq, womatl_qtyiss, womatl_qtywipscrap, womatl_lastissue, womatl_lastreturn, womatl_cost, womatl_picklist, womatl_status, womatl_imported, womatl_createwo, womatl_issuemethod, womatl_wooper_id, womatl_bomitem_id, womatl_duedate, womatl_schedatwooper, womatl_uom_id, womatl_notes, womatl_ref, womatl_scrapvalue, womatl_qtyfxd, womatl_issuewo) FROM stdin; \. -- -- Data for Name: womatlpost; Type: TABLE DATA; Schema: public; Owner: admin -- COPY womatlpost (womatlpost_id, womatlpost_womatl_id, womatlpost_invhist_id) FROM stdin; \. -- -- Data for Name: womatlvar; Type: TABLE DATA; Schema: public; Owner: admin -- COPY womatlvar (womatlvar_id, womatlvar_number, womatlvar_subnumber, womatlvar_posted, womatlvar_parent_itemsite_id, womatlvar_component_itemsite_id, womatlvar_qtyord, womatlvar_qtyrcv, womatlvar_qtyiss, womatlvar_qtyper, womatlvar_scrap, womatlvar_wipscrap, womatlvar_bomitem_id, womatlvar_ref, womatlvar_notes, womatlvar_qtyfxd) FROM stdin; \. -- -- Data for Name: xsltmap; Type: TABLE DATA; Schema: public; Owner: admin -- COPY xsltmap (xsltmap_id, xsltmap_name, xsltmap_doctype, xsltmap_system, xsltmap_import, xsltmap_export) FROM stdin; 1 Yahoo OrderList http://store.yahoo.com/doc/dtd/OrderList2.dtd yahoo_to_xtupleapi.xsl \. -- -- Data for Name: yearperiod; Type: TABLE DATA; Schema: public; Owner: admin -- COPY yearperiod (yearperiod_id, yearperiod_start, yearperiod_end, yearperiod_closed) FROM stdin; 3 2008-01-01 2008-12-31 f 4 2009-01-01 2009-12-31 f 6 2010-01-01 2010-12-31 f 7 2011-01-01 2011-12-31 f 8 2012-01-01 2012-12-31 f 9 2013-01-01 2013-12-31 f \. SET search_path = te, pg_catalog; -- -- Data for Name: pkgcmd; Type: TABLE DATA; Schema: te; Owner: admin -- COPY pkgcmd (cmd_id, cmd_module, cmd_title, cmd_descrip, cmd_privname, cmd_executable, cmd_name) FROM stdin; \. -- -- Data for Name: pkgcmdarg; Type: TABLE DATA; Schema: te; Owner: admin -- COPY pkgcmdarg (cmdarg_id, cmdarg_cmd_id, cmdarg_order, cmdarg_arg) FROM stdin; \. -- -- Data for Name: pkgimage; Type: TABLE DATA; Schema: te; Owner: admin -- COPY pkgimage (image_id, image_name, image_descrip, image_data) FROM stdin; \. -- -- Data for Name: pkgmetasql; Type: TABLE DATA; Schema: te; Owner: admin -- COPY pkgmetasql (metasql_id, metasql_group, metasql_name, metasql_notes, metasql_query, metasql_lastuser, metasql_lastupdate, metasql_grade) FROM stdin; 416 projects detailte -- Group: projects\n-- Name: detailte\n-- Notes: \nSELECT prj_id, prj_number, prj_name,\n CASE WHEN(prj_status='P') THEN \n WHEN(prj_status='O') THEN \n WHEN(prj_status='C') THEN \n ELSE \n END AS prj_status, \n prj_username, \n COALESCE(SUM(prjtask_hours_budget), 0.0) AS budget_hrs,\n COALESCE(SUM(prjtask_hours_actual), 0.0) AS actual_hrs,\n COALESCE(SUM(prjtask_hours_budget - prjtask_hours_actual), 0.0) AS balance_hrs, \n CASE WHEN COALESCE(SUM(prjtask_hours_budget - prjtask_hours_actual), 0.0) < 0 THEN \n 'error' END AS balance_hrs_qtforegroundrole, \n 'qty' AS budget_hrs_xtnumericrole, \n 'qty' AS actual_hrs_xtnumericrole, \n 'qty' AS balance_hrs_xtnumericrole \nFROM prj\nLEFT OUTER JOIN prjtask ON (prj_id=prjtask_prj_id)\n\nWHERE (prj_status <> 'C')\n\nGROUP BY prj_id, prj_number, prj_name, prj_status, prj_username \n ORDER BY prj_number; \N \N 0 364 customer seltecustrate Select Default Customer Project Info Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: customer\n-- Name: seltecustrate\n-- Notes: Select Default Customer Project Info\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT *\nFROM te.tecustrate\nWHERE (tecustrate_cust_id=);\n \N \N 0 365 customer updtecustrate Update customer rate record Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: customer\n-- Name: updtecustrate\n-- Notes: Update customer rate record\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nUPDATE te.tecustrate SET\n tecustrate_cust_id=,\n tecustrate_rate=,\n tecustrate_curr_id=\nWHERE (tecustrate_id=)\nRETURNING *;\n \N \N 0 362 customer deltecustrate Delete customer project defaults Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: customer\n-- Name: deltecustrate\n-- Notes: Delete customer project defaults\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nDELETE FROM te.tecustrate\nWHERE (tecustrate_cust_id=);\n \N \N 0 363 customer instecustrate Insert customer rate record Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: customer\n-- Name: instecustrate\n-- Notes: Insert customer rate record\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nINSERT INTO te.tecustrate (\n tecustrate_cust_id,\n tecustrate_rate,\n tecustrate_curr_id )\nVALUES (\n ,\n ,\n )\nRETURNING *;\n \N \N 0 377 projectGantt getprj Fetch Project Info Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: projectGantt\n-- Name: getprj\n-- Notes: Fetch Project Info\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT prj_id\nFROM prj\nWHERE (prj_number=);\n \N \N 0 378 projectGantt jsgantt Loads jsGantt script file Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: projectGantt\n-- Name: jsgantt\n-- Notes: Loads jsGantt script file\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT script_source FROM script WHERE script_name = 'jsGantt';\n \N \N 0 379 projectGantt jsganttcss Loads jsGantt CSS file Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: projectGantt\n-- Name: jsganttcss\n-- Notes: Loads jsGantt CSS file\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT script_source FROM script WHERE script_name = 'jsGanttCSS';\n \N \N 0 380 projectGantt tasks Load project tasks for jsGantt Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: projectGantt\n-- Name: tasks\n-- Notes: Load project tasks for jsGantt\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT \n prjtask_id, \n prjtask_name, \n EXTRACT('day' FROM prjtask_start_date) || '/' || \n EXTRACT('month' FROM prjtask_start_date) || '/' || \n EXTRACT('year' FROM prjtask_start_date) AS start_date,\n EXTRACT('day' FROM prjtask_due_date) || '/' || \n EXTRACT('month' FROM prjtask_due_date) || '/' || \n EXTRACT('year' FROM prjtask_due_date) AS due_date \nFROM (\n SELECT \n prjtask_id,\n prjtask_name,\n COALESCE(prjtask_start_date,prjtask_due_date) AS prjtask_start_date,\n prjtask_due_date\n FROM prjtask\n\n\n WHERE (prjtask_prj_id = )\n) data;\n \N \N 0 381 task insteprjtask Insert task time expense record Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: task\n-- Name: insteprjtask\n-- Notes: Insert task time expense record\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nINSERT INTO te.teprjtask (\n teprjtask_prjtask_id,\n teprjtask_cust_id,\n teprjtask_rate,\n teprjtask_curr_id,\n teprjtask_item_id )\nVALUES (\n ,\n ,\n ,\n ,\n );\n \N \N 0 382 task selteprjtask Select Default Task Time Expense Info Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: task\n-- Name: selteprjtask\n-- Notes: Select Default Task Time Expense Info\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT \n COALESCE(teprjtask_cust_id,-1) AS cust_id,\n COALESCE(teprjtask_curr_id,-1) AS curr_id,\n COALESCE(teprjtask_item_id,-1) AS item_id,\n *\nFROM te.teprjtask\nWHERE (teprjtask_prjtask_id=);\n \N \N 0 383 task updteprjtask Update task time expense Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: task\n-- Name: updteprjtask\n-- Notes: Update task time expense\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nUPDATE te.teprjtask SET\n teprjtask_cust_id=,\n teprjtask_rate=,\n teprjtask_curr_id=,\n teprjtask_item_id=\nWHERE (teprjtask_id=);\n \N \N 0 411 timeexpensesheets voucher Voucher Time Expense Sheet Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheets\n-- Name: voucher\n-- Notes: Voucher Time Expense Sheet\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT te.voucherSheet();\n \N \N 0 366 employee insteemp Insert employee time expense record Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: employee\n-- Name: insteemp\n-- Notes: Insert employee time expense record\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nINSERT INTO te.teemp (\n teemp_emp_id,\n teemp_contractor )\nVALUES (\n ,\n );\n \N \N 0 367 employee selteemp Select Default Employee Time Expense Info Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: employee\n-- Name: selteemp\n-- Notes: Select Default Employee Time Expense Info\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT *\nFROM te.teemp\nWHERE (teemp_emp_id=);\n \N \N 0 368 employee updteemp Update employee time expense Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: employee\n-- Name: updteemp\n-- Notes: Update employee time expense\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nUPDATE te.teemp SET\n teemp_contractor=\nWHERE (teemp_id=);\n \N \N 0 369 item delteexp Delete Item Expense Settings Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: item\n-- Name: delteexp\n-- Notes: Delete Item Expense Settings\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nDELETE FROM te.teexp\nWHERE (teexp_id=);\n \N \N 0 370 item insteexp Insert item expense settings Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: item\n-- Name: insteexp\n-- Notes: Insert item expense settings\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nINSERT INTO te.teexp (\n teexp_id,\n teexp_expcat_id,\n teexp_accnt_id )\nVALUES (\n ,\n ,\n );\n \N \N 0 371 item selteexp Select Item Expense Settings Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: item\n-- Name: selteexp\n-- Notes: Select Item Expense Settings\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT \n teexp_expcat_id,\n teexp_accnt_id\nFROM te.teexp\nWHERE (teexp_id=);\n \N \N 0 372 item updteexp Update item expense settings Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: item\n-- Name: updteexp\n-- Notes: Update item expense settings\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nUPDATE te.teexp SET\n teexp_expcat_id=,\n teexp_accnt_id=\nWHERE (teexp_id=);\n \N \N 0 373 project formatdates Formats Dates for jsGantt Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: project\n-- Name: formatdates\n-- Notes: Formats Dates for jsGantt\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT\n EXTRACT('day' FROM start_date) || '/' || \n EXTRACT('month' FROM start_date) || '/' || \n EXTRACT('year' FROM start_date) AS start_date,\n EXTRACT('day' FROM due_date) || '/' || \n EXTRACT('month' FROM due_date) || '/' || \n EXTRACT('year' FROM due_date) AS due_date\nFROM (\n SELECT COALESCE(,)::date AS start_date,\n ::date AS due_date\n) data\n \N \N 0 374 project insteprj Insert project time expense record Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: project\n-- Name: insteprj\n-- Notes: Insert project time expense record\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nINSERT INTO te.teprj (\n teprj_prj_id,\n teprj_cust_id,\n teprj_rate,\n teprj_curr_id )\nVALUES (\n ,\n ,\n ,\n );\n \N \N 0 375 project selteprj Select Default Project Time Expense Info Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: project\n-- Name: selteprj\n-- Notes: Select Default Project Time Expense Info\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT COALESCE(teprj_cust_id,-1) AS cust_id,\n COALESCE(teprj_curr_id,-1) AS curr_id,\n *\nFROM te.teprj\nWHERE (teprj_prj_id=);\n \N \N 0 376 project updteprj Update project time expense Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: project\n-- Name: updteprj\n-- Notes: Update project time expense\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nUPDATE te.teprj SET\n teprj_cust_id=,\n teprj_rate=,\n teprj_curr_id=\nWHERE (teprj_id=);\n \N \N 0 384 timeexpensehistory detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensehistory\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT\n teitem.*,\n item_number, item_descrip1,\n cust_number, cust_name,\n tehead.*, tehead_number || '-' || teitem_linenumber::text AS f_sheet_number,\n emp_code,\n prj_number, prj_name,\n prjtask_number, prjtask_name,\n CASE WHEN (tehead_status='O') THEN \n \n WHEN (tehead_status='A') THEN\n \n ELSE \n END AS tehead_status_qtdisplayrole,\n CASE WHEN (teitem_type='T') THEN\n \n WHEN (teitem_type='E') THEN\n \n ELSE\n \n END AS teitem_type_qtdisplayrole,\n\n '0' AS teitem_qty_xttotalrole,\n\n\n '0' AS teitem_total_xttotalrole,\n\n\n formatQty(teitem_qty) AS f_qty,\n formatSalesPrice(teitem_rate) AS f_rate,\n formatBoolYN(teitem_billable) AS f_billable,\n formatExtPrice(teitem_total) AS f_total,\n formatDate(teitem_workdate) AS f_workdate,\n\n 'qty' AS teitem_qty_xtnumericrole,\n 'salesprice' AS teitem_rate_xtnumericrole,\n 'extprice' AS teitem_total_xtnumericrole\nFROM te.tehead\n JOIN te.teitem ON (tehead_id = teitem_tehead_id)\n JOIN emp ON (tehead_emp_id= emp_id)\n JOIN item ON (teitem_item_id = item_id)\n JOIN classcode ON (item_classcode_id=classcode_id)\n LEFT OUTER JOIN custinfo ON (teitem_cust_id=cust_id)\n\n JOIN custtype ON (cust_custtype_id=custtype_id)\n\n JOIN prjtask ON (teitem_prjtask_id=prjtask_id)\n JOIN prj ON (prjtask_prj_id=prj_id)\n\n JOIN custgrpitem ON (custgrpitem_cust_id=cust_id)\n\n\n JOIN empgrpitem ON (empgrpitem_emp_id=emp_id)\n\n\n JOIN itemgrpitem ON (itemgrpitem_item_id=item_id)\n\nWHERE (true\n\n AND (teitem_workdate >= )\n\n\n AND (teitem_workdate <= )\n\n\n AND (teitem_type = 'T')\n\n\n AND (teitem_type = 'E')\n\n\n AND (prj_id = )\n\n\n AND (cust_id = )\n\n\n AND (cust_custtype_id = )\n\n\n AND (custtype_code ~* )\n\n\n AND (custgrpitem_custgrp_id=)\n\n\n AND (emp_id = )\n\n\n AND (empgrpitem_empgrp_id=)\n\n\n AND (item_id = )\n\n\n AND (itemgrpitem_itemgrp_id=)\n\n\n AND (classcode_id = )\n\n\n AND (classcode_code ~* )\n\n) \nORDER BY tehead_number, teitem_linenumber;\n \N \N 0 385 timeexpensesheet deltehead Delete Time Expense Sheet Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheet\n-- Name: deltehead\n-- Notes: Delete Time Expense Sheet\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nDELETE FROM docass WHERE (docass_source_id= AND docass_source_type='TE');\nDELETE FROM te.tehead WHERE (tehead_id=);\n \N \N 0 386 timeexpensesheet delteitem Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheet\n-- Name: delteitem\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nDELETE FROM te.teitem\nWHERE teitem_id=\n \N \N 0 387 timeexpensesheet detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheet\n-- Name: detail\n-- Notes:\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT\n teitem.*,\n CASE WHEN (teitem_type = 'T') THEN\n teitem_qty\n END AS hours,\n CASE WHEN (teitem_type = 'E') THEN\n teitem_total\n END AS expense,\n item_number, item_descrip1,\n cust_number, cust_name,\n tehead.*, emp_code,\n prj_number, prj_name,\n prjtask_number, prjtask_name,\n CASE WHEN teitem_type='E' THEN 0\n ELSE COALESCE(teitem_empcost, te.calcRate(emp_wage, emp_wage_period))\n END AS teitem_hrlycost,\n CASE WHEN teitem_type='E' THEN 0\n ELSE COALESCE(teitem_empcost, te.calcRate(emp_wage, emp_wage_period))\n * teitem_qty END AS teitem_totalcost,\n CASE WHEN (teitem_type='T') THEN\n \n WHEN (teitem_type='E') THEN\n \n ELSE\n \n END AS teitem_type_qtdisplayrole,\n 'qty' AS teitem_qty_xtnumericrole,\n 'qty' AS hours_xtnumericrole,\n 'qty' AS teitem_qty_xtnumericrole,\n 'qty' AS hours_xtnumericrole,\n 'extprice' AS expense_xtnumericrole,\n '--' AS hours_xtnullrole,\n '--' AS expense_xtnullrole,\n 'salesprice' AS teitem_rate_xtnumericrole,\n 'extprice' AS teitem_total_xtnumericrole,\n 0 AS hours_xttotalrole,\n 0 AS expense_xttotalrole,\n firstLine(teitem_notes) AS f_notes\nFROM te.tehead\n JOIN te.teitem ON (tehead_id = teitem_tehead_id)\n JOIN emp ON (tehead_emp_id= emp_id)\n JOIN item ON (teitem_item_id = item_id)\n LEFT OUTER JOIN custinfo ON (teitem_cust_id=cust_id)\n JOIN prjtask ON (teitem_prjtask_id=prjtask_id)\n JOIN prj ON (prjtask_prj_id=prj_id)\nWHERE (tehead_id = )\nORDER BY teitem_linenumber;\n \N \N 0 388 timeexpensesheet header Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheet\n-- Name: header\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT\n tehead.*, emp_code\nFROM te.tehead\n JOIN emp ON (tehead_emp_id= emp_id)\nWHERE (tehead_id = );\n \N \N 0 389 timeexpensesheet instehead Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheet\n-- Name: instehead\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nINSERT INTO te.tehead(\n tehead_emp_id,\n tehead_warehous_id,\n tehead_weekending,\n tehead_notes) \nVALUES (\n ,\n ,\n ,\n )\nRETURNING *;\n \N \N 0 390 timeexpensesheet updtehead Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheet\n-- Name: updtehead\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nUPDATE te.tehead SET \n tehead_emp_id = ,\n tehead_warehous_id = ,\n tehead_notes = \nWHERE tehead_id=;\n \N \N 0 391 timeexpensesheetitem detail Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheetitem\n-- Name: detail\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT *,\n (SELECT (COUNT(teitem_id) = 0)\n FROM te.teitem maxte\n WHERE ((maxte.teitem_tehead_id=tehead_id)\n AND (maxte.teitem_linenumber > curr.teitem_linenumber))) AS ismax,\n COALESCE(curr.teitem_empcost, te.calcRate(emp_wage, emp_wage_period)) AS teitem_hrlycost\nFROM te.tehead\n JOIN te.teitem curr ON (tehead_id = curr.teitem_tehead_id) \n JOIN prjtask ON (prjtask_id=curr.teitem_prjtask_id)\n JOIN prj ON (prj_id=prjtask_prj_id)\t\t\n LEFT JOIN emp ON (tehead_emp_id = emp_id)\nWHERE (curr.teitem_id=);\n \N \N 0 410 timeexpensesheets unapprove Unapprove Time Expense Sheet Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheets\n-- Name: unapprove\n-- Notes: Unapprove Time Expense Sheet\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nUPDATE te.tehead SET \n tehead_status = 'O' \nWHERE (tehead_id=);\n \N \N 0 392 timeexpensesheetitem emptotals Employee Hours Totals Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheetitem\n-- Name: emptotals\n-- Notes: Employee Hours Totals\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT\n formatqty(coalesce(sum(day_hours),0) + coalesce(,0)) as day_hours,\n formatqty(coalesce(sum(sheet_hours),0) + coalesce(,0)) as sheet_hours\nFROM (\n SELECT teitem_qty AS day_hours, 0 AS sheet_hours\n FROM te.teitem\n JOIN te.tehead ON (teitem_tehead_id=tehead_id)\n WHERE ((tehead_emp_id=)\n AND (teitem_id != )\n AND (teitem_workdate = )\n AND (teitem_type = 'T'))\n UNION ALL\n SELECT 0 AS day_hours, teitem_qty AS sheet_hours\n FROM te.teitem\n JOIN te.tehead ON (teitem_tehead_id=tehead_id)\n WHERE ((tehead_emp_id=)\n AND (teitem_id != )\n AND (tehead_id = )\n AND (teitem_type = 'T')) \n) AS data;\n \N \N 0 393 timeexpensesheetitem getcustinfo Get customer currency rate Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheetitem\n-- Name: getcustinfo\n-- Notes: Get customer currency rate\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT cust_curr_id \nFROM custinfo \nWHERE (cust_id=);\n \N \N 0 394 timeexpensesheetitem gettask Get Project task list Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheetitem\n-- Name: gettask\n-- Notes: Get Project task list\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT \n prjtask_id,\n (prjtask_number || ' - ' || prjtask_name) AS name \nFROM prjtask \nWHERE (prjtask_prj_id = )\n\n AND (prjtask_status IN ('O','P'))\n\nORDER by prjtask_number;\n \N \N 0 395 timeexpensesheetitem getterate Get billing rate for Time Expense Item Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheetitem\n-- Name: getterate\n-- Notes: Get billing rate for Time Expense Item\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT COALESCE(rate,0) AS rate \nFROM (\n\n-- Project Task Rate\nSELECT teprjtask_rate AS rate, \n teprjtask_curr_id AS curr_id,\n 10 AS seq \nFROM te.teprjtask\nWHERE ((teprjtask_prjtask_id = )\n AND (teprjtask_curr_id IS NOT NULL))\nUNION\n\n-- Project Rate\nSELECT teprj_rate AS rate, \n teprj_curr_id AS curr_id,\n 20 AS seq\nFROM te.teprj\nWHERE ((teprj_prj_id = )\n AND (teprj_curr_id IS NOT NULL))\nUNION\n\n-- Employee Rate\nSELECT emp_extrate AS rate, \n baseCurrId() AS curr_id,\n 30 AS seq\nFROM emp\nWHERE ((emp_id = )\n AND (emp_extrate > 0))\nUNION\n\n-- Customer Rate\nSELECT tecustrate_rate as rate, \n tecustrate_curr_id,\n 40 AS seq\nFROM te.tecustrate\nWHERE ((tecustrate_cust_id = )\n AND (tecustrate_curr_id IS NOT NULL))\nUNION\n\n\n-- Item List Price\nSELECT item_listprice as rate, \n baseCurrId(),\n 50 AS seq\nFROM item\nWHERE (item_id = )\n) AS rates\nORDER BY seq\nLIMIT 1;\n \N \N 0 396 timeexpensesheetitem instask Insert a default Project Task Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheetitem\n-- Name: instask\n-- Notes: Insert a default Project Task\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nINSERT INTO prjtask\nSELECT\n nextval('invchead_invchead_id_seq'),\n ,\n ,\n ,\n ,\n null,\n 'O',\n 0,\n 0,\n 0,\n 0,\n current_user,\n ,\n null,\n ,\n null,\n current_user;\n \N \N 0 397 timeexpensesheetitem insteitem Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheetitem\n-- Name: insteitem\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nINSERT INTO te.teitem (\n teitem_tehead_id,\n teitem_linenumber,\n teitem_type,\n teitem_workdate,\n teitem_cust_id,\n teitem_po,\n teitem_item_id,\n teitem_uom_id,\n teitem_qty,\n teitem_rate,\n teitem_total,\n teitem_prjtask_id,\n teitem_billable,\n teitem_prepaid, \n teitem_notes,\n teitem_curr_id, \n teitem_empcost )\nSELECT\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n item_price_uom_id,\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n ,\n \nFROM item\nWHERE (item_id=)\nRETURNING *;\n \N \N 0 398 timeexpensesheetitem nextlinenum Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheetitem\n-- Name: nextlinenum\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT COALESCE(MAX(teitem_linenumber),0) +1 AS linenumber\nFROM te.teitem\nWHERE (teitem_tehead_id=);\n \N \N 0 399 timeexpensesheetitem taskbudg Task Budget Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheetitem\n-- Name: taskbudg\n-- Notes: Task Budget\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT\n formatqty(prjtask_hours_budget) as budget_hours,\n formatqty(prjtask_hours_actual) as actual_hours,\n formatmoney(prjtask_exp_budget) as budget_cost,\n formatmoney(prjtask_exp_actual) as actual_cost \nFROM prjtask \nWHERE (prjtask_id = )\n \N \N 0 400 timeexpensesheetitem taskdefaults Project Task default values Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheetitem\n-- Name: taskdefaults\n-- Notes: Project Task default values\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT \n COALESCE(teprj_cust_id,teprjtask_cust_id,-1) AS cust_id,\n COALESCE(teprjtask_item_id,-1) AS item_id\nFROM prjtask\n JOIN prj ON (prj_id=prjtask_prj_id)\n LEFT OUTER JOIN te.teprj ON (teprj_prj_id=prj_id)\n LEFT OUTER JOIN te.teprjtask ON (teprjtask_prjtask_id=prjtask_id)\nWHERE (prjtask_id=)\n \N \N 0 401 timeexpensesheetitem taskrollup Total hours and expenses including unapproved sheets Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheetitem\n-- Name: taskrollup\n-- Notes: Total hours and expenses including unapproved sheets\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT \n formatQty(SUM(total_hours)) AS total_hours,\n formatMoney(SUM(total_expense)) AS total_expense\nFROM\n (\n SELECT \n prjtask_hours_actual AS total_hours,\n prjtask_exp_actual AS total_expense\n FROM prjtask \n WHERE prjtask_id = \n UNION\n SELECT\n SUM(teitem_qty) as total_hours,\n 0 as total_expense\n FROM te.teitem \n JOIN te.tehead ON (tehead_id=teitem_tehead_id)\n WHERE teitem_prjtask_id = \n AND teitem_type = 'T' \n-- AND teitem_id != \n AND tehead_status = 'O'\n UNION\n SELECT \n 0 as total_hours,\n SUM(teitem_total) AS total_expense\n FROM te.teitem \n JOIN te.tehead ON (tehead_id=teitem_tehead_id)\n WHERE teitem_prjtask_id = \n AND teitem_type = 'E'\n-- AND teitem_id != \n AND tehead_status = 'O'\n) AS rollup;\n \N \N 0 402 timeexpensesheetitem teitemnext Find Next Item Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheetitem\n-- Name: teitemnext\n-- Notes: Find Next Item\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT a.teitem_id\nFROM te.teitem AS a, te.teitem AS b\nWHERE ((a.teitem_tehead_id = b.teitem_tehead_id)\n AND (a.teitem_linenumber > b.teitem_linenumber)\n AND (b.teitem_id=))\nORDER BY a.teitem_linenumber\nLIMIT 1;\n \N \N 0 403 timeexpensesheetitem teitemprev Find previous item Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheetitem\n-- Name: teitemprev\n-- Notes: Find previous item\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n\nSELECT a.teitem_id\nFROM te.teitem AS a, te.teitem AS b\nWHERE ( (a.teitem_tehead_id = b.teitem_tehead_id)\n AND (a.teitem_linenumber < b.teitem_linenumber)\n AND (b.teitem_id=) ) \nORDER BY a.teitem_linenumber DESC\nLIMIT 1;\n\nSELECT teitem_id\nFROM te.teitem\nWHERE (teitem_tehead_id=)\nORDER BY teitem_linenumber DESC\nLIMIT 1;\n\n \N \N 0 404 timeexpensesheetitem updteitem Update Time Expense Item Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheetitem\n-- Name: updteitem\n-- Notes: Update Time Expense Item\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nUPDATE te.teitem SET \n teitem_tehead_id=,\n teitem_linenumber=,\n teitem_type=,\n teitem_workdate=,\n teitem_cust_id=,\n teitem_po=,\n teitem_item_id=,\n teitem_uom_id=item_price_uom_id,\n teitem_qty=,\n teitem_rate=,\n teitem_total=,\n teitem_prjtask_id=,\n teitem_billable=,\n teitem_prepaid=, \n teitem_notes=,\n teitem_curr_id=,\n teitem_empcost=\nFROM item\nWHERE ((teitem_id=)\n AND (teitem_item_id=item_id))\nRETURNING *;\n \N \N 0 405 timeexpensesheets approve Approve Time Expense Sheet Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheets\n-- Name: approve\n-- Notes: Approve Time Expense Sheet\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nUPDATE te.tehead SET \n tehead_status = 'A' \nWHERE (tehead_id=);\n \N \N 0 406 timeexpensesheets close Close Time Expense Sheet Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheets\n-- Name: close\n-- Notes: Close Time Expense Sheet\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nUPDATE te.tehead SET \n tehead_status = 'C' \nWHERE (tehead_id=);\n \N \N 0 407 timeexpensesheets detail Time Expense Sheet List Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheets\n-- Name: detail\n-- Notes: Time Expense Sheet List\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT\n tehead_id,\n tehead_number,\n tehead_weekending,\n tehead_status,\n emp_code,\n invoiced,\n vouchered,\n posted,\n\n SUM(tovoucher) AS total_e,\n SUM(toinvoice) AS total_i,\n \n CASE WHEN (invoiced = 1) THEN \n WHEN (invoiced = 0) THEN \n ELSE \n END AS invoiced_qtdisplayrole,\n CASE WHEN (vouchered = 1) THEN \n WHEN (vouchered = 0) THEN \n ELSE \n END AS vouchered_qtdisplayrole,\n CASE WHEN (posted = 1) THEN \n WHEN (posted = 0) THEN \n ELSE \n END AS posted_qtdisplayrole,\n CASE WHEN (tehead_status='O') THEN\n \n WHEN (tehead_status='A') THEN\n \n ELSE \n END AS tehead_status_qtdisplayrole,\n 'curr' AS total_xtnumericrole,\n CASE WHEN (invoiced = -1) THEN 'LightGray'\n WHEN (invoiced = 0 AND tehead_status = 'A') THEN 'altemphasis'\n END AS invoiced_qtforegroundrole,\n CASE WHEN (vouchered = -1) THEN 'LightGray'\n WHEN (vouchered = 0 AND tehead_status = 'A') THEN 'altemphasis'\n END AS vouchered_qtforegroundrole,\n CASE WHEN (posted = -1) THEN 'LightGray'\n WHEN (posted = 0 AND tehead_status = 'A') THEN 'altemphasis'\n END AS posted_qtforegroundrole,\n CASE WHEN (tehead_status = 'O') THEN 'emphasis'\n WHEN (tehead_status = 'A') THEN 'altemphasis'\n END AS tehead_status_qtforegroundrole\n\n ,\n formatMoney(SUM(toinvoice)) AS f_total,\n formatDate(tehead_weekending) AS f_weekending\n\n\nFROM (\n SELECT\n tehead_id,\n tehead_number,\n tehead_weekending,\n tehead_status,\n emp_code, \n CASE WHEN (teitem_type='E' AND teitem_prepaid=false) \n THEN teitem_total\n WHEN (teitem_type='T' AND teemp_contractor = true) \n THEN COALESCE(teitem_empcost, te.calcRate(emp_wage, emp_wage_period))* teitem_qty\n ELSE 0 \n END as tovoucher,\n \n CASE WHEN (teitem_billable=TRUE) \n THEN teitem_total\n ELSE 0 \n END AS toinvoice,\n\n te.sheetstate(tehead_id, 'I') AS invoiced,\n te.sheetstate(tehead_id, 'V') AS vouchered,\n te.sheetstate(tehead_id, 'P') AS posted\n FROM te.tehead\n LEFT OUTER JOIN te.teitem ON (tehead_id=teitem_tehead_id)\n JOIN emp ON (tehead_emp_id=emp_id)\n LEFT OUTER JOIN te.teemp ON (tehead_emp_id=teemp_emp_id)\n WHERE (\n\n (tehead_weekending >= )\n AND (tehead_weekending <= )\n AND (tehead_status IN ())\n\n AND \n (tehead_emp_id=)\n\n)) AS data\nGROUP BY\n tehead_id,\n tehead_number,\n tehead_weekending,\n tehead_status,\n emp_code,\n invoiced,\n vouchered,\n posted\nORDER BY tehead_number;\n \N \N 0 408 timeexpensesheets invoice Invoice Time Expense Sheet Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheets\n-- Name: invoice\n-- Notes: Invoice Time Expense Sheet\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT te.invoiceSheets(ARRAY[\n \n \n ,\n \n \n \n]\n);\n \N \N 0 409 timeexpensesheets post Post Time Expense Sheet Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: timeexpensesheets\n-- Name: post\n-- Notes: Post Time Expense Sheet\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT te.postSheet(, , );\n \N \N 0 \. -- -- Data for Name: pkgpriv; Type: TABLE DATA; Schema: te; Owner: admin -- COPY pkgpriv (priv_id, priv_module, priv_name, priv_descrip, priv_seq) FROM stdin; 605 TE MaintainTimeExpenseOthers Allowed to Maintain Time/Exp Sheets for all users \N 606 TE MaintainTimeExpenseSelf Allowed to Maintain Time/Exp Sheets \N 607 TE MaintainTimeExpense Allowed to Maintain Time/Exp Sheets \N 608 TE CanViewRates Allowed to view rates in the Time Entries \N 641 TE MaintainEmpCostAll Allowed to maintain employee costs for all users \N 642 TE MaintainEmpCostSelf Allowed to maintain own employee costs \N 609 TE CanApprove Allowed to Approve Time/Exp Sheets \N 610 TE allowInvoicing Allowed to Invoice Time/Exp Sheets \N 611 TE allowVouchering Allowed to Voucher Time/Exp Sheets \N 612 TE PostTimeSheets Allowed to Post Time Sheets \N 613 TE ViewTimeExpenseHistory Allowed to view Time Expense Sheet history \N \. -- -- Data for Name: pkgreport; Type: TABLE DATA; Schema: te; Owner: admin -- COPY pkgreport (report_id, report_name, report_sys, report_source, report_descrip, report_grade, report_loaddate) FROM stdin; 439 TimeExpenseHistory \N \n\n Time Expense History\n TimeExpenseHistory\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n timeexpensehistory\n detail\n \n \n 95\n \n \n \n \n 3.33333\n 89.3333\n 743.333\n 89.3333\n 2\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 6\n \n \n 49\n \n \n \n 6.33333\n 41.3333\n 746.333\n 41.3333\n 2\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n

\n detail\n \n \n detail\n \n 40\n \n \n 394\n 19\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_number\n \n \n \n \n 480\n 19\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n item_descrip1\n \n \n \n \n 394\n 3.84333\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n prjtask_number\n \n \n \n \n 479\n 3.84333\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n prjtask_name\n \n \n \n \n 547\n 3.84333\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_qty\n \n \n \n \n 626\n 3.84333\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_billable\n \n \n \n \n 204\n 19\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_number\n \n \n \n \n 294\n 3.84333\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n prj_name\n \n \n \n \n 204\n 3.84333\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n prj_number\n \n \n \n \n 294\n 19\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n cust_name\n \n \n \n \n 10\n 3.84333\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n tehead_number\n \n \n \n \n 669.333\n 3.84333\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_total\n \n \n \n \n 25\n 19\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_workdate\n \n \n \n \n 111.667\n 4.33333\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n teitem_type_qtdisplayrole\n \n \n \n \n 111.667\n 19\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n emp_code\n \n \n \n \n 627\n 19\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n tehead_status_qtdisplayrole\n \n \n \n
\n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n \n 35\n \n \n 549\n 4.33\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n teitem_qty\n \n money\n \n \n \n \n \n 668\n 4\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n teitem_total\n \n %0.2f\n \n \n \n\n \N 0 \N 440 TimeExpenseSheet \N \n\n Time Expense Sheet\n TimeExpenseSheet\n \n \n \n SELECT tehead_id, tehead_number || '-' || tehead_username FROM tehead ORDER By tehead_number DESC;\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n header\n SELECT \n tehead_number,\n formatDate(tehead_weekending) AS f_weekending,\n warehous_code,\n emp_code || ' - ' || COALESCE(cntct_name,'') AS f_employee,\n CASE WHEN (tehead_status='O') THEN \n <? value("open") ?> \n WHEN (tehead_status='A') THEN\n <? value("approved") ?> \n ELSE <? value("closed") ?>\n END AS f_status,\n tehead_notes\nFROM te.tehead\n JOIN emp ON (tehead_emp_id=emp_id)\n JOIN whsinfo ON (warehous_id=tehead_warehous_id)\n LEFT OUTER JOIN cntct ON (emp_cntct_id=cntct_id)\nWHERE (tehead_id=<? value("tehead_id") ?>);\n\n \n \n time\n SELECT\n teitem_tehead_id,\n formatDate(teitem_workdate) AS f_workdate,\n prj_number,\n prj_name,\n prjtask_number,\n prjtask_name,\n cust_number,\n cust_name,\n item_number,\n item_descrip1,\n formatQty(teitem_qty) AS f_hours,\n teitem_qty,\n CASE WHEN (teitem_billable) THEN\n formatMoney(teitem_total)\n ELSE ' -- ' END AS f_billing_total,\n CASE WHEN (teitem_billable) THEN\n teitem_total\n ELSE 0 END AS billing_total,\n formatBoolYN(teitem_billable) AS f_billable,\n teitem_notes\nFROM te.teitem\n JOIN prjtask ON (teitem_prjtask_id=prjtask_id)\n JOIN prj ON (prjtask_prj_id=prj_id)\n JOIN item ON (item_id=teitem_item_id)\n LEFT OUTER JOIN custinfo ON (cust_id=teitem_cust_id)\nWHERE ((teitem_tehead_id=<? value("tehead_id") ?>)\n AND (teitem_type='T'))\nORDER BY teitem_tehead_id, teitem_workdate, teitem_linenumber;\n \n \n expense\n SELECT\n teitem_tehead_id,\n formatDate(teitem_workdate) AS f_workdate,\n prj_number,\n prj_name,\n prjtask_number,\n prjtask_name,\n cust_number,\n cust_name,\n item_number,\n item_descrip1,\n formatQty(teitem_qty) AS f_qty,\n teitem_qty,\n formatMoney(teitem_total) AS f_total,\n teitem_total,\n CASE WHEN (teitem_billable) THEN\n formatMoney(teitem_total)\n ELSE ' -- ' END AS f_billing_total,\n CASE WHEN (teitem_type = 'E') THEN\n teitem_total\n ELSE 0 END AS expense_total,\n CASE WHEN (teitem_billable) THEN\n teitem_total\n ELSE 0 END AS billing_total,\n formatBoolYN(teitem_billable) AS f_billable,\n teitem_notes\nFROM te.teitem\n JOIN prjtask ON (teitem_prjtask_id=prjtask_id)\n JOIN prj ON (prjtask_prj_id=prj_id)\n JOIN item ON (item_id=teitem_item_id)\n LEFT OUTER JOIN custinfo ON (cust_id=teitem_cust_id)\nWHERE ((teitem_tehead_id=<? value("tehead_id") ?>)\n AND (teitem_type='E'))\nORDER BY teitem_workdate, teitem_linenumber;\n \n \n prjsum\n SELECT\n teitem_tehead_id,\n prj_number,\n SUM(teitem_qty) AS total_hours,\n SUM(teitem_total) AS billing_total,\nCASE WHEN (\n (checkprivilege('MaintainEmpCostAll') \n OR \n (checkprivilege('MaintainEmpCostSelf') \n AND \n current_user = (SELECT tehead_username \n FROM te.tehead \n WHERE teitem_tehead_id = tehead_id)\n ) \n )\n )\n THEN SUM(teitem_empcost * teitem_qty)\n ELSE 0 END AS cost_total,\nCASE WHEN (\n (checkprivilege('MaintainEmpCostAll') \n OR\n (checkprivilege('MaintainEmpCostSelf')\n AND \n current_user = (SELECT tehead_username \n FROM te.tehead \n WHERE teitem_tehead_id = tehead_id)\n )\n )\n )\n THEN 'Cost'\n ELSE 'No Priv' END AS title\n\nFROM te.teitem\n JOIN prjtask ON (teitem_prjtask_id=prjtask_id)\n JOIN prj ON (prjtask_prj_id=prj_id)\n JOIN item ON (item_id=teitem_item_id)\n LEFT OUTER JOIN custinfo ON (cust_id=teitem_cust_id)\nWHERE ((teitem_tehead_id=<? value("tehead_id") ?>)\n AND (teitem_type='T'))\nGROUP BY teitem_tehead_id, prj_number;\n \n \n prjexpsum\n SELECT\n teitem_tehead_id,\n prj_number,\n SUM(teitem_total) AS total\nFROM te.teitem\n JOIN prjtask ON (teitem_prjtask_id=prjtask_id)\n JOIN prj ON (prjtask_prj_id=prj_id)\n JOIN item ON (item_id=teitem_item_id)\n LEFT OUTER JOIN custinfo ON (cust_id=teitem_cust_id)\nWHERE ((teitem_tehead_id=<? value("tehead_id") ?>)\n AND (teitem_type='E'))\nGROUP BY teitem_tehead_id, prj_number;\n \n \n 110\n \n \n \n \n \n \n \n \n 135\n 35\n 175\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n header\n tehead_number\n \n \n \n \n 135\n 50\n 175\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n header\n f_weekending\n \n \n \n \n 135\n 65\n 175\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n header\n warehous_code\n \n \n \n \n 135\n 80\n 175\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n header\n f_employee\n \n \n \n \n 355\n 80\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n header\n f_status\n \n \n \n \n \n \n 6\n \n \n 14\n \n
\n time\n \n timefoot\n teitem_tehead_id\n \n 70\n \n \n \n \n \n \n \n \n \n \n \n \n \n 3.33333\n 61.333\n 743.333\n 61.333\n 2\n \n \n \n 15\n \n \n \n \n time\n \n 45\n \n \n 625\n 5\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n time\n f_billable\n \n \n \n \n 200\n 5\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n time\n prj_name\n \n \n \n \n 385\n 5\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n time\n prjtask_name\n \n \n \n \n 110\n 5\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n time\n prj_number\n \n \n \n \n 670\n 5\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n time\n f_billing_total\n \n \n \n \n 490\n 5\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n time\n f_hours\n \n \n \n \n 10\n 5\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n time\n f_workdate\n \n \n \n \n 300\n 5\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n time\n prjtask_number\n \n \n \n \n 110\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n time\n cust_number\n \n \n \n \n 200\n 15\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n time\n cust_name\n \n \n \n \n 300\n 15\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n time\n item_number\n \n \n \n \n 385\n 15\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n time\n item_descrip1\n \n \n \n \n 10\n 30\n 370\n 15\n \n 0\n \n Arial\n 8\n normal\n \n \n \n \n time\n teitem_notes\n \n \n \n
\n
\n projsum\n \n \n prj_sum\n teitem_tehead_id\n \n \n 50\n \n \n \n \n \n 3.33333\n 46.333\n 743.333\n 46.333\n 2\n \n \n \n 615\n 30\n 50\n 15\n \n \n Arial\n 8\n normal\n \n \n \n \n prjsum\n title\n \n \n \n \n 30\n \n \n 695\n 5\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n prjsum\n billing_total\n \n money\n \n \n \n \n 505\n 5\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n prjsum\n total_hours\n \n qty\n \n \n \n 360\n 5\n 745\n 5\n 2\n \n \n 420\n 5\n 520\n 5\n 0\n \n \n \n 615\n 5\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n prjsum\n cost_total\n \n money\n \n \n \n \n \n \n prjsum\n \n 25\n \n \n 695\n 5\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n prjsum\n billing_total\n \n money\n \n \n \n 615\n 5\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n prjsum\n cost_total\n \n money\n \n \n \n 380\n 5\n 115\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n prjsum\n prj_number\n \n \n \n \n 505\n 5\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n prjsum\n total_hours\n \n qty\n \n \n
\n
\n expense\n \n expdetail\n teitem_tehead_id\n \n 65\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 35\n \n \n 670\n 5\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n expense\n billing_total\n \n money\n \n \n \n \n \n 550\n 3.33\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n expense\n expense_total\n \n money\n \n \n \n \n \n \n expense\n \n 50\n \n \n 300\n 20\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n expense\n item_number\n \n \n \n \n 385\n 20\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n expense\n item_descrip1\n \n \n \n \n 300\n 5\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n expense\n prjtask_number\n \n \n \n \n 385\n 5\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n expense\n prjtask_name\n \n \n \n \n 490\n 5\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n expense\n f_qty\n \n \n \n \n 625\n 5\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n expense\n f_billable\n \n \n \n \n 670\n 5\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n expense\n f_billing_total\n \n \n \n \n 110\n 20\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n expense\n cust_number\n \n \n \n \n 200\n 5\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n expense\n prj_name\n \n \n \n \n 110\n 5\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n expense\n prj_number\n \n \n \n \n 200\n 20\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n expense\n cust_name\n \n \n \n \n 10\n 5\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n expense\n f_workdate\n \n \n \n \n 550\n 5\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n expense\n f_total\n \n \n \n 4.13052\n -5.20281\n 744.13\n -5.20281\n 2\n \n \n \n 110\n 35\n 600\n 15\n \n 0\n \n Arial\n 8\n normal\n \n \n \n \n expense\n teitem_notes\n \n \n \n
\n
\n prjexpsum\n \n prjexpsum\n teitem_tehead_id\n \n 60\n \n \n \n \n 4.13052\n 53.1454\n 744.13\n 53.1454\n 2\n \n \n \n 40\n \n \n 695\n 5\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n prjexpsum\n total\n \n money\n \n \n \n 655\n 5\n 745\n 5\n 2\n \n \n \n \n \n prjexpsum\n \n 25\n \n \n 370\n 5\n 115\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n prjexpsum\n prj_number\n \n \n \n \n 695\n 5\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n prjexpsum\n total\n \n money\n \n \n
\n \n 25\n \n \n 680\n 5\n 15\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n 90\n 5\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n \n \n 710\n 5\n 20\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_count\n \n \n \n \n 30\n \n \n 110\n 5\n 600\n 15\n \n 0\n \n Arial\n 8\n normal\n \n \n \n \n header\n tehead_notes\n \n \n \n \n
\n \N 0 \N 441 TimeExpenseSheets \N \n\n Time Expense Sheets\n TimeExpenseSheets\n \n \n \n \n 0.05\n 0.05\n \n Letter\n \n 50\n 50\n 50\n 50\n \n detail\n timeexpensesheets\n detail\n \n \n 131\n \n \n \n \n 10\n 130\n 750\n 130\n 2\n \n \n \n \n \n \n \n \n \n \n 6\n \n \n 36\n \n \n \n 5\n 30\n 745\n 30\n 2\n \n \n \n \n \n \n \n \n
\n detail\n \n \n detail\n \n 22\n \n \n 625\n 1.84\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n vouchered_qtdisplayrole\n \n \n \n \n 225\n 1.84\n 105\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n emp_code\n \n \n \n \n 550\n 1.84\n 75\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n invoiced_qtdisplayrole\n \n \n \n \n 110.599\n 1.84\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_weekending\n \n \n \n \n 700\n 1.84\n 50\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n posted_qtdisplayrole\n \n \n \n \n 450\n 1.84\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n f_total\n \n \n \n \n 8.59883\n 1.84\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n tehead_number\n \n \n \n \n 350\n 1.84\n 90\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n detail\n tehead_status_qtdisplayrole\n \n \n \n
\n \n 16\n \n \n 90\n 0\n 100\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n report_date\n \n \n \n \n \n 705\n 0\n 40\n 15\n \n \n Arial\n 8\n bold\n \n \n \n \n Context Query\n page_number\n \n \n \n \n
\n \N 0 \N \. -- -- Data for Name: pkgscript; Type: TABLE DATA; Schema: te; Owner: admin -- COPY pkgscript (script_id, script_name, script_order, script_enabled, script_source, script_notes) FROM stdin; 109 dspTimeExpenseHistory 0 t /*\n * This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\ninclude("xtte");\nxtte.dspTimeExpenseHistory = new Object;\n\nvar _close = mywindow.findChild("_close");\nvar _print = mywindow.findChild("_print");\nvar _query = mywindow.findChild("_query");\nvar _list = mywindow.findChild("_list");\nvar _parameterWidget = mywindow.findChild("_parameterWidget");\n\n_list.addColumn(qsTr("Sheet #"), XTreeWidget.orderColumn, Qt.AlignLeft, true, "f_sheet_number");\n_list.addColumn(qsTr("Employee #"), XTreeWidget.orderColumn, Qt.AlignLeft, true, "emp_code");\n_list.addColumn(qsTr("Work Date"), XTreeWidget.dateColumn, Qt.AlignLeft, true, "teitem_workdate");\n_list.addColumn(qsTr("Type"), XTreeWidget.dateColumn, Qt.AlignLeft, true, "teitem_type");\n_list.addColumn(qsTr("Status"), XTreeWidget.dateColumn, Qt.AlignLeft, true, "tehead_status");\n_list.addColumn(qsTr("Project#"), XTreeWidget.orderColumn, Qt.AlignLeft, true, "prj_number");\n_list.addColumn(qsTr("Project Name"), -1, Qt.AlignLeft, false, "prj_name");\n_list.addColumn(qsTr("Task#"), XTreeWidget.orderColumn, Qt.AlignLeft, false, "prjtask_number");\n_list.addColumn(qsTr("Task Name"), -1, Qt.AlignLeft, false, "prjtask_name");\n_list.addColumn(qsTr("Cust.#"), XTreeWidget.orderColumn, Qt.AlignLeft, false, "cust_number");\n_list.addColumn(qsTr("Cust. Name"), -1, Qt.AlignLeft, false, "cust_name");\n_list.addColumn(qsTr("PO"), XTreeWidget.orderColumn, Qt.AlignLeft, false, "teitem_po");\n_list.addColumn(qsTr("Item"), XTreeWidget.itemColumn, Qt.AlignLeft, true, "item_number");\n_list.addColumn(qsTr("Description"), -1, Qt.AlignLeft, true, "item_descrip1");\n_list.addColumn(qsTr("Qty"), XTreeWidget.qtyColumn, Qt.AlignRight, true, "teitem_qty");\nif (privileges.check("CanViewRates"))\n{\n _list.addColumn(qsTr("Billable"), XTreeWidget.qtyColumn, Qt.AlignRight, false, "teitem_billable");\n _list.addColumn(qsTr("Ext."), XTreeWidget.moneyColumn, Qt.AlignRight, true, "teitem_total");\n}\n\nvar teSql = "SELECT 1,'" + qsTr("Time") + "','T' "\n + "UNION "\n + "SELECT 2,'" + qsTr("Expense") + "','E';";\n\nvar empGrpSql = "SELECT empgrp_id, empgrp_name, empgrp_name "\n + "FROM empgrp "\n + "ORDER BY empgrp_name;";\n\n_parameterWidget.append(qsTr("Start Date"), "startDate", ParameterWidget.Date, mainwindow.dbDate());\n_parameterWidget.append(qsTr("End Date"), "endDate", ParameterWidget.Date, mainwindow.dbDate());\n_parameterWidget.appendComboBox(qsTr("Type"), "typeEnum", teSql);\n_parameterWidget.append(qsTr("Employee"), "emp_id", ParameterWidget.Employee);\n_parameterWidget.appendComboBox(qsTr("Employee Group"), "empgrp_id", empGrpSql);\n_parameterWidget.append(qsTr("Project"), "prj_id", ParameterWidget.Project);\n_parameterWidget.append(qsTr("Customer"), "cust_id", ParameterWidget.Customer);\n_parameterWidget.appendComboBox(qsTr("Customer Type"), "custtype_id", XComboBox.CustomerTypes - 0);\n_parameterWidget.append(qsTr("Customer Type Pattern"), "custtype_pattern", ParameterWidget.Text);\n_parameterWidget.appendComboBox(qsTr("Customer Group"), "custgrp_id", XComboBox.CustomerGroups - 0);\n_parameterWidget.append(qsTr("Item"), "item_id", ParameterWidget.Item);\n_parameterWidget.appendComboBox(qsTr("Item Group"), "itemgrp_id", XComboBox.ItemGroups - 0);\n_parameterWidget.appendComboBox(qsTr("Class Code"), "classcode_id", XComboBox.ClassCodes - 0);\n_parameterWidget.append(qsTr("Class Code Pattern"), "classcode_pattern", ParameterWidget.Text);\n\n_parameterWidget.applyDefaultFilterSet();\n\nxtte.dspTimeExpenseHistory.populateMenu = function(pMenu, pItem, pCol)\n{\n if(pMenu == null)\n pMenu = _booitem.findChild("_menu");\n\n if(pMenu != null)\n {\n var editAct = pMenu.addAction(qsTr("Edit..."));\n editAct.triggered.connect(xtte.dspTimeExpenseHistory.editItem);\n editAct.enabled = (privileges.check("MaintainTimeExpense") &&\n pItem.rawValue("tehead_status") == 'O');\n\n var viewAct = pMenu.addAction(qsTr("View..."));\n viewAct.triggered.connect(xtte.dspTimeExpenseHistory.viewItem);\n }\n}\n\nxtte.dspTimeExpenseHistory.getParams = function()\n{\n var params = _parameterWidget.parameters();\n params.open = qsTr("Open");\n params.approved = qsTr("Approved");\n params.closed = qsTr("Closed");\n params.time = qsTr("Time");\n params.expense = qsTr("Expense");\n\n if("typeEnum" in params)\n {\n if (params.typeEnum == 1)\n params.timeOnly = true;\n else\n params.expenseOnly = true;\n }\n\n return params;\n}\n\nxtte.dspTimeExpenseHistory.print = function()\n{\n var params = xtte.dspTimeExpenseHistory.getParams();\n params.includeFormatted = true;\n\n toolbox.printReport("TimeExpenseHistory", params);\n}\n\nxtte.dspTimeExpenseHistory.fillList = function()\n{\n var qry = toolbox.executeDbQuery("timeexpensehistory", "detail", xtte.dspTimeExpenseHistory.getParams());\n _list.populate(qry)\n if(!qry.first())\n xtte.errorCheck(qry);\n}\n\nxtte.dspTimeExpenseHistory.editItem = function()\n{\n xtte.dspTimeExpenseHistory.openItem(xtte.editMode);\n}\n\n\nxtte.dspTimeExpenseHistory.viewItem = function()\n{\n xtte.dspTimeExpenseHistory.openItem(xtte.viewMode);\n}\n\n\nxtte.dspTimeExpenseHistory.openItem = function(mode)\n{ \n var params = new Object;\n params.mode = mode;\n params.teitem_id = _list.id();\n\n var wnd = toolbox.openWindow("timeExpenseSheetItem", mywindow);\n toolbox.lastWindow().set(params);\n if (wnd.exec() > 0)\n xtte.timeExpenseSheet.fillList();\n}\n\n// Connections\n_print.clicked.connect(xtte.dspTimeExpenseHistory.print);\n_query.clicked.connect(xtte.dspTimeExpenseHistory.fillList);\n_list["populateMenu(QMenu *, XTreeWidgetItem *, int)"].connect(xtte.dspTimeExpenseHistory.populateMenu)\n_close.clicked.connect(mywindow, "close");\n\n Time and Expense package 113 jsGantt 0 t /* \n _ ___ _ _ _ ____ \n (_)___ / _ \\__ _ _ __ | |_| |_ / | |___ \\ \n | / __| / /_\\/ _` | '_ \\| __| __| | | __) |\n | \\__ \\/ /_\\\\ (_| | | | | |_| |_ | |_ / __/ \n _/ |___/\\____/\\__,_|_| |_|\\__|\\__| |_(_)_____|\n|__/ \n\nCopyright (c) 2009, Shlomy Gantz BlueBrick Inc. All rights reserved.\n \n*\n* Redistribution and use in source and binary forms, with or without\n* modification, are permitted provided that the following conditions are met:\n* * Redistributions of source code must retain the above copyright\n* notice, this list of conditions and the following disclaimer.\n* * Redistributions in binary form must reproduce the above copyright\n* notice, this list of conditions and the following disclaimer in the\n* documentation and/or other materials provided with the distribution.\n* * Neither the name of Shlomy Gantz or BlueBrick Inc. nor the\n* names of its contributors may be used to endorse or promote products\n* derived from this software without specific prior written permission.\n*\n* THIS SOFTWARE IS PROVIDED BY SHLOMY GANTZ/BLUEBRICK INC. ''AS IS'' AND ANY\n* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\n* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\n* DISCLAIMED. IN NO EVENT SHALL SHLOMY GANTZ/BLUEBRICK INC. BE LIABLE FOR ANY\n* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\n* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\n* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\n* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n*/\n\nvar JSGantt; if (!JSGantt) JSGantt = {};\n\nvar vTimeout = 0;\nvar vBenchTime = new Date().getTime();\n\nJSGantt.isIE = function () {\n\t\n\tif(typeof document.all != 'undefined')\n\t\treturn true;\n\telse\n\t\treturn false;\n}\n\n\nJSGantt.TaskItem = function(pID, pName, pStart, pEnd, pColor, pLink, pMile, pRes, pComp, pGroup, pParent, pOpen, pDepend, pCaption)\n{\n\n var vID = pID;\n var vName = pName;\n var vStart = new Date();\t\n var vEnd = new Date();\n var vColor = pColor;\n var vLink = pLink;\n var vMile = pMile;\n var vRes = pRes;\n var vComp = pComp;\n var vGroup = pGroup;\n var vParent = pParent;\n var vOpen = pOpen;\n var vDepend = pDepend;\n var vCaption = pCaption;\n var vDuration = '';\n var vLevel = 0;\n var vNumKid = 0;\n var vVisible = 1;\n var x1, y1, x2, y2;\n\n if (vGroup != 1)\n { \n vStart = JSGantt.parseDateStr(pStart,g.getDateInputFormat());\n vEnd = JSGantt.parseDateStr(pEnd,g.getDateInputFormat());\n }\n\n this.getID = function(){ return vID };\n this.getName = function(){ return vName };\n this.getStart = function(){ return vStart};\n this.getEnd = function(){ return vEnd };\n this.getColor = function(){ return vColor};\n this.getLink = function(){ return vLink };\n this.getMile = function(){ return vMile };\n this.getDepend = function(){ if(vDepend) return vDepend; else return null };\n this.getCaption = function(){ if(vCaption) return vCaption; else return ''; };\n this.getResource = function(){ if(vRes) return vRes; else return ' '; };\n this.getCompVal = function(){ if(vComp) return vComp; else return 0; };\n this.getCompStr = function(){ if(vComp) return vComp+'%'; else return ''; };\n\n this.getDuration = function(vFormat){ \n if (vMile) \n vDuration = '-';\n else if (vFormat=='hour')\n {\n tmpPer = Math.ceil((this.getEnd() - this.getStart()) / ( 60 * 60 * 1000) );\n if(tmpPer == 1) \n vDuration = '1 Hour';\n else\n vDuration = tmpPer + ' Hours';\n }\n \n else if (vFormat=='minute')\n {\n tmpPer = Math.ceil((this.getEnd() - this.getStart()) / ( 60 * 1000) );\n if(tmpPer == 1) \n vDuration = '1 Minute';\n else\n vDuration = tmpPer + ' Minutes';\n }\n \n \t\t else { //if(vFormat == 'day') {\n tmpPer = Math.ceil((this.getEnd() - this.getStart()) / (24 * 60 * 60 * 1000) + 1);\n if(tmpPer == 1) vDuration = '1 Day';\n else vDuration = tmpPer + ' Days';\n }\n\n //else if(vFormat == 'week') {\n // tmpPer = ((this.getEnd() - this.getStart()) / (24 * 60 * 60 * 1000) + 1)/7;\n // if(tmpPer == 1) vDuration = '1 Week';\n // else vDuration = tmpPer + ' Weeks'; \n //}\n\n //else if(vFormat == 'month') {\n // tmpPer = ((this.getEnd() - this.getStart()) / (24 * 60 * 60 * 1000) + 1)/30;\n // if(tmpPer == 1) vDuration = '1 Month';\n // else vDuration = tmpPer + ' Months'; \n //}\n\n //else if(vFormat == 'quater') {\n // tmpPer = ((this.getEnd() - this.getStart()) / (24 * 60 * 60 * 1000) + 1)/120;\n // if(tmpPer == 1) vDuration = '1 Qtr';\n // else vDuration = tmpPer + ' Qtrs'; \n //}\n return( vDuration )\n };\n\n this.getParent = function(){ return vParent };\n this.getGroup = function(){ return vGroup };\n this.getOpen = function(){ return vOpen };\n this.getLevel = function(){ return vLevel };\n this.getNumKids = function(){ return vNumKid };\n this.getStartX = function(){ return x1 };\n this.getStartY = function(){ return y1 };\n this.getEndX = function(){ return x2 };\n this.getEndY = function(){ return y2 };\n this.getVisible = function(){ return vVisible };\n\t this.setDepend = function(pDepend){ vDepend = pDepend;};\n this.setStart = function(pStart){ vStart = pStart;};\n this.setEnd = function(pEnd) { vEnd = pEnd; };\n this.setLevel = function(pLevel){ vLevel = pLevel;};\n this.setNumKid = function(pNumKid){ vNumKid = pNumKid;};\n this.setCompVal = function(pCompVal){ vComp = pCompVal;};\n this.setStartX = function(pX) {x1 = pX; };\n this.setStartY = function(pY) {y1 = pY; };\n this.setEndX = function(pX) {x2 = pX; };\n this.setEndY = function(pY) {y2 = pY; };\n this.setOpen = function(pOpen) {vOpen = pOpen; };\n this.setVisible = function(pVisible) {vVisible = pVisible; };\n\n }\n\n\t\n // function that loads the main gantt chart properties and functions\n // pDiv: (required) this is a DIV object created in HTML\n // pStart: UNUSED - future use to force minimum chart date\n // pEnd: UNUSED - future use to force maximum chart date\n // pWidth: UNUSED - future use to force chart width and cause objects to scale to fit within that width\n // pShowRes: UNUSED - future use to turn on/off display of resource names\n // pShowDur: UNUSED - future use to turn on/off display of task durations\n // pFormat: (required) - used to indicate whether chart should be drawn in "day", "week", "month", or "quarter" format\n // pCationType - what type of Caption to show: Caption, Resource, Duration, Complete\nJSGantt.GanttChart = function(pGanttVar, pDiv, pFormat)\n{\n\n var vGanttVar = pGanttVar;\n var vDiv = pDiv;\n var vFormat = pFormat;\n var vShowRes = 1;\n var vShowDur = 1;\n var vShowComp = 1;\n var vShowStartDate = 1;\n var vShowEndDate = 1;\n var vDateInputFormat = "mm/dd/yyyy";\n var vDateDisplayFormat = "mm/dd/yy";\n\t var vNumUnits = 0;\n var vCaptionType;\n var vDepId = 1;\n var vTaskList = new Array();\t\n\t var vFormatArr\t= new Array("day","week","month","quarter");\n var vQuarterArr = new Array(1,1,1,2,2,2,3,3,3,4,4,4);\n var vMonthDaysArr = new Array(31,28,31,30,31,30,31,31,30,31,30,31);\n var vMonthArr = new Array("January","February","March","April","May","June","July","August","September","October","November","December");\n\t this.setFormatArr = function() \t {\n\t\t\t\t\t\t\t\t\t\t vFormatArr = new Array();\n\t\t\t\t\t\t\t\t\t\t for(var i = 0; i < arguments.length; i++) {vFormatArr[i] = arguments[i];}\n\t\t\t\t\t\t\t\t\t\t if(vFormatArr.length>4){vFormatArr.length=4;}\n\t\t\t\t\t\t\t\t\t\t };\n this.setShowRes = function(pShow) { vShowRes = pShow; };\n this.setShowDur = function(pShow) { vShowDur = pShow; };\n this.setShowComp = function(pShow) { vShowComp = pShow; };\n this.setShowStartDate = function(pShow) { vShowStartDate = pShow; };\n this.setShowEndDate = function(pShow) { vShowEndDate = pShow; };\n this.setDateInputFormat = function(pShow) { vDateInputFormat = pShow; };\n this.setDateDisplayFormat = function(pShow) { vDateDisplayFormat = pShow; };\n this.setCaptionType = function(pType) { vCaptionType = pType };\n this.setFormat = function(pFormat){ \n vFormat = pFormat; \n this.Draw(); \n };\n\n this.getShowRes = function(){ return vShowRes };\n this.getShowDur = function(){ return vShowDur };\n this.getShowComp = function(){ return vShowComp };\n\t this.getShowStartDate = function(){ return vShowStartDate };\n\t this.getShowEndDate = function(){ return vShowEndDate };\n this.getDateInputFormat = function() { return vDateInputFormat };\n this.getDateDisplayFormat = function() { return vDateDisplayFormat };\n this.getCaptionType = function() { return vCaptionType };\n this.CalcTaskXY = function () \n {\n var vList = this.getList();\n var vTaskDiv;\n var vParDiv;\n var vLeft, vTop, vHeight, vWidth;\n\n for(i = 0; i < vList.length; i++)\n {\n vID = vList[i].getID();\n vTaskDiv = document.getElementById("taskbar_"+vID);\n vBarDiv = document.getElementById("bardiv_"+vID);\n vParDiv = document.getElementById("childgrid_"+vID);\n\n if(vBarDiv) {\n vList[i].setStartX( vBarDiv.offsetLeft );\n vList[i].setStartY( vParDiv.offsetTop+vBarDiv.offsetTop+6 );\n vList[i].setEndX( vBarDiv.offsetLeft + vBarDiv.offsetWidth );\n vList[i].setEndY( vParDiv.offsetTop+vBarDiv.offsetTop+6 );\n }\n }\n }\n\n this.AddTaskItem = function(value)\n {\n vTaskList.push(value);\n }\n\n this.getList = function() { return vTaskList };\n\n this.clearDependencies = function()\n {\n var parent = document.getElementById('rightside');\n var depLine;\n var vMaxId = vDepId;\n for ( i=1; i 0)\n {\n \n\t\t // Process all tasks preset parent date and completion %\n JSGantt.processRows(vTaskList, 0, -1, 1, 1);\n\n // get overall min/max dates plus padding\n vMinDate = JSGantt.getMinDate(vTaskList, vFormat);\n vMaxDate = JSGantt.getMaxDate(vTaskList, vFormat);\n\n // Calculate chart width variables. vColWidth can be altered manually to change each column width\n // May be smart to make this a parameter of GanttChart or set it based on existing pWidth parameter\n if(vFormat == 'day') {\n vColWidth = 18;\n vColUnit = 1;\n }\n else if(vFormat == 'week') {\n vColWidth = 37;\n vColUnit = 7;\n }\n else if(vFormat == 'month') {\n vColWidth = 37;\n vColUnit = 30;\n }\n else if(vFormat == 'quarter') {\n vColWidth = 60;\n vColUnit = 90;\n }\n \n else if(vFormat=='hour')\n {\n vColWidth = 18;\n vColUnit = 1;\n }\n \n else if(vFormat=='minute')\n {\n vColWidth = 18;\n vColUnit = 1;\n }\n \n vNumDays = (Date.parse(vMaxDate) - Date.parse(vMinDate)) / ( 24 * 60 * 60 * 1000);\n vNumUnits = vNumDays / vColUnit;\n \n \n vChartWidth = vNumUnits * vColWidth + 1;\n vDayWidth = (vColWidth / vColUnit) + (1/vColUnit);\n\n vMainTable =\n '' +\n '';\n\n vMainTable += vLeftTable;\n\n // Draw the Chart Rows\n vRightTable = \n '
';\n\n if(vShowRes !=1) vNameWidth+=vStatusWidth;\n if(vShowDur !=1) vNameWidth+=vStatusWidth;\n if(vShowComp!=1) vNameWidth+=vStatusWidth;\n\t\t if(vShowStartDate!=1) vNameWidth+=vStatusWidth;\n\t\t if(vShowEndDate!=1) vNameWidth+=vStatusWidth;\n \n\t\t // DRAW the Left-side of the chart (names, resources, comp%)\n vLeftTable =\n '
' +\n '' +\n ' ' +\n ' '; \n\n if(vShowRes ==1) vLeftTable += ' ' ;\n if(vShowDur ==1) vLeftTable += ' ' ;\n if(vShowComp==1) vLeftTable += ' ' ;\n\t\t\tif(vShowStartDate==1) vLeftTable += ' ' ;\n\t\t\tif(vShowEndDate==1) vLeftTable += ' ' ;\n\n vLeftTable +=\n '' +\n ' ' +\n ' ' ;\n\n if(vShowRes ==1) vLeftTable += ' ' ;\n if(vShowDur ==1) vLeftTable += ' ' ;\n if(vShowComp==1) vLeftTable += ' ' ;\n if(vShowStartDate==1) vLeftTable += ' ' ;\n if(vShowEndDate==1) vLeftTable += ' ' ;\n \n vLeftTable += '';\n\n for(i = 0; i < vTaskList.length; i++)\n {\n if( vTaskList[i].getGroup()) {\n vBGColor = "f3f3f3";\n vRowType = "group";\n } else {\n vBGColor = "ffffff";\n vRowType = "row";\n }\n \n vID = vTaskList[i].getID();\n\n \t\t if(vTaskList[i].getVisible() == 0) \n vLeftTable += '' ;\n\t\t\t else\n vLeftTable += '' ;\n\n\t\t\t vLeftTable += \n ' ' +\n ' ' ;\n\n if(vShowRes ==1) vLeftTable += ' ' ;\n if(vShowDur ==1) vLeftTable += ' ' ;\n if(vShowComp==1) vLeftTable += ' ' ;\n if(vShowStartDate==1) vLeftTable += ' ' ;\n if(vShowEndDate==1) vLeftTable += ' ' ;\n\n vLeftTable += '';\n\n }\n\n // DRAW the date format selector at bottom left. Another potential GanttChart parameter to hide/show this selector\n vLeftTable += '' +\n '
ResourceDuration% Comp.Start DateEnd Date
 ';\n\n for(j=1; j ' ;\n else\n vLeftTable += '+ ' ;\n\t\t\t\t \n } else {\n\n vLeftTable += '   ';\n }\n\n vLeftTable += \n ' ' + vTaskList[i].getName() + '' + vTaskList[i].getResource() + '' + vTaskList[i].getDuration(vFormat) + '' + vTaskList[i].getCompStr() + '' + JSGantt.formatDateStr( vTaskList[i].getStart(), vDateDisplayFormat) + '' + JSGantt.formatDateStr( vTaskList[i].getEnd(), vDateDisplayFormat) + '
  Powered by jsGantt      Format:';\n\t\t\n\t\t\tif (vFormatArr.join().indexOf("minute")!=-1) { \n if (vFormat=='minute') vLeftTable += 'Minute';\n else vLeftTable += 'Minute';\n\t\t\t}\n\t\t\t\n\t\t\tif (vFormatArr.join().indexOf("hour")!=-1) { \n if (vFormat=='hour') vLeftTable += 'Hour';\n else vLeftTable += 'Hour';\n\t\t\t}\n\t\t\t\n\t\t\tif (vFormatArr.join().indexOf("day")!=-1) { \n if (vFormat=='day') vLeftTable += 'Day';\n else vLeftTable += 'Day';\n\t\t\t}\n\t\t\t\n\t\t\tif (vFormatArr.join().indexOf("week")!=-1) { \n if (vFormat=='week') vLeftTable += 'Week';\n else vLeftTable += 'Week';\n\t\t\t}\n\t\t\t\n\t\t\tif (vFormatArr.join().indexOf("month")!=-1) { \n if (vFormat=='month') vLeftTable += 'Month';\n else vLeftTable += 'Month';\n\t\t\t}\n\t\t\t\n\t\t\tif (vFormatArr.join().indexOf("quarter")!=-1) { \n if (vFormat=='quarter') vLeftTable += 'Quarter';\n else vLeftTable += 'Quarter';\n\t\t\t}\n\t\t\t\n// vLeftTable += ' .';\n\n vLeftTable += '
' +\n '
' +\n '' +\n '';\n\n vTmpDate.setFullYear(vMinDate.getFullYear(), vMinDate.getMonth(), vMinDate.getDate());\n vTmpDate.setHours(0);\n vTmpDate.setMinutes(0);\n\n // Major Date Header\n while(Date.parse(vTmpDate) <= Date.parse(vMaxDate))\n {\t\n vStr = vTmpDate.getFullYear() + '';\n vStr = vStr.substring(2,4);\n \n \n if(vFormat == 'minute')\n {\n vRightTable += '';\n vTmpDate.setHours(vTmpDate.getHours()+1);\n }\n \n if(vFormat == 'hour')\n {\n vRightTable += '';\n vTmpDate.setDate(vTmpDate.getDate()+1);\n }\n \n \t if(vFormat == 'day')\n {\n\t\t\t vRightTable += '';\n vTmpDate.setDate(vTmpDate.getDate()+1);\n }\n else if(vFormat == 'week')\n {\n \t\t vRightTable += '';\n vTmpDate.setDate(vTmpDate.getDate()+7);\n }\n else if(vFormat == 'month')\n {\n\t vRightTable += '';\n vTmpDate.setDate(vTmpDate.getDate() + 1);\n while(vTmpDate.getDate() > 1)\n {\n vTmpDate.setDate(vTmpDate.getDate() + 1);\n }\n }\n else if(vFormat == 'quarter')\n {\n\t vRightTable += '';\n vTmpDate.setDate(vTmpDate.getDate() + 81);\n while(vTmpDate.getDate() > 1)\n {\n vTmpDate.setDate(vTmpDate.getDate() + 1);\n }\n }\n\n }\n\n vRightTable += '';\n\n // Minor Date header and Cell Rows\n vTmpDate.setFullYear(vMinDate.getFullYear(), vMinDate.getMonth(), vMinDate.getDate());\n vNxtDate.setFullYear(vMinDate.getFullYear(), vMinDate.getMonth(), vMinDate.getDate());\n vNumCols = 0;\n \n while(Date.parse(vTmpDate) <= Date.parse(vMaxDate))\n {\t\n if (vFormat == 'minute')\n {\n\t\t\t\n\t\t\t if( vTmpDate.getMinutes() ==0 ) \n vWeekdayColor = "ccccff";\n else\n vWeekdayColor = "ffffff";\n\t\t\t\t \n\t\t\t\t \n vDateRowStr += '';\n vItemRowStr += '';\n vTmpDate.setMinutes(vTmpDate.getMinutes() + 1);\n }\n \n else if (vFormat == 'hour')\n {\n\t\t\t\n\t\t\t if( vTmpDate.getHours() ==0 ) \n vWeekdayColor = "ccccff";\n else\n vWeekdayColor = "ffffff";\n\t\t\t\t \n\t\t\t\t \n vDateRowStr += '';\n vItemRowStr += '';\n vTmpDate.setHours(vTmpDate.getHours() + 1);\n }\n\n\t else if(vFormat == 'day' )\n {\n if( JSGantt.formatDateStr(vCurrDate,'mm/dd/yyyy') == JSGantt.formatDateStr(vTmpDate,'mm/dd/yyyy')) {\n vWeekdayColor = "ccccff";\n vWeekendColor = "9999ff";\n vWeekdayGColor = "bbbbff";\n vWeekendGColor = "8888ff";\n } else {\n vWeekdayColor = "ffffff";\n vWeekendColor = "cfcfcf";\n vWeekdayGColor = "f3f3f3";\n vWeekendGColor = "c3c3c3";\n }\n \n if(vTmpDate.getDay() % 6 == 0) {\n vDateRowStr += '';\n vItemRowStr += '';\n }\n else {\n vDateRowStr += '';\n if( JSGantt.formatDateStr(vCurrDate,'mm/dd/yyyy') == JSGantt.formatDateStr(vTmpDate,'mm/dd/yyyy')) \n vItemRowStr += '';\n else\n vItemRowStr += '';\n }\n\n vTmpDate.setDate(vTmpDate.getDate() + 1);\n\n }\n\n\t else if(vFormat == 'week')\n {\n\n vNxtDate.setDate(vNxtDate.getDate() + 7);\n\n if( vCurrDate >= vTmpDate && vCurrDate < vNxtDate ) \n vWeekdayColor = "ccccff";\n else\n vWeekdayColor = "ffffff";\n\n if(vNxtDate <= vMaxDate) {\n vDateRowStr += '';\n if( vCurrDate >= vTmpDate && vCurrDate < vNxtDate ) \n vItemRowStr += '';\n else\n vItemRowStr += '';\n\n } else {\n vDateRowStr += '';\n if( vCurrDate >= vTmpDate && vCurrDate < vNxtDate ) \n vItemRowStr += '';\n else\n vItemRowStr += '';\n\n }\n\n vTmpDate.setDate(vTmpDate.getDate() + 7);\n\n }\n\n\t else if(vFormat == 'month')\n {\n\n vNxtDate.setFullYear(vTmpDate.getFullYear(), vTmpDate.getMonth(), vMonthDaysArr[vTmpDate.getMonth()]);\n if( vCurrDate >= vTmpDate && vCurrDate < vNxtDate ) \n vWeekdayColor = "ccccff";\n else\n vWeekdayColor = "ffffff";\n\n if(vNxtDate <= vMaxDate) {\n vDateRowStr += '';\n if( vCurrDate >= vTmpDate && vCurrDate < vNxtDate ) \n vItemRowStr += '';\n else\n vItemRowStr += '';\n } else {\n vDateRowStr += '';\n if( vCurrDate >= vTmpDate && vCurrDate < vNxtDate ) \n vItemRowStr += '';\n else\n vItemRowStr += '';\n }\n\n vTmpDate.setDate(vTmpDate.getDate() + 1);\n\n while(vTmpDate.getDate() > 1) \n {\n vTmpDate.setDate(vTmpDate.getDate() + 1);\n }\n\n }\n\n\t else if(vFormat == 'quarter')\n {\n\n vNxtDate.setDate(vNxtDate.getDate() + 122);\n if( vTmpDate.getMonth()==0 || vTmpDate.getMonth()==1 || vTmpDate.getMonth()==2 )\n vNxtDate.setFullYear(vTmpDate.getFullYear(), 2, 31);\n else if( vTmpDate.getMonth()==3 || vTmpDate.getMonth()==4 || vTmpDate.getMonth()==5 )\n vNxtDate.setFullYear(vTmpDate.getFullYear(), 5, 30);\n else if( vTmpDate.getMonth()==6 || vTmpDate.getMonth()==7 || vTmpDate.getMonth()==8 )\n vNxtDate.setFullYear(vTmpDate.getFullYear(), 8, 30);\n else if( vTmpDate.getMonth()==9 || vTmpDate.getMonth()==10 || vTmpDate.getMonth()==11 )\n vNxtDate.setFullYear(vTmpDate.getFullYear(), 11, 31);\n\n if( vCurrDate >= vTmpDate && vCurrDate < vNxtDate ) \n vWeekdayColor = "ccccff";\n else\n vWeekdayColor = "ffffff";\n\n if(vNxtDate <= vMaxDate) {\n vDateRowStr += '';\n if( vCurrDate >= vTmpDate && vCurrDate < vNxtDate ) \n vItemRowStr += '';\n else\n vItemRowStr += '';\n } else {\n vDateRowStr += '';\n if( vCurrDate >= vTmpDate && vCurrDate < vNxtDate ) \n vItemRowStr += '';\n else \n vItemRowStr += '';\n }\n\n vTmpDate.setDate(vTmpDate.getDate() + 81);\n\n while(vTmpDate.getDate() > 1) \n {\n vTmpDate.setDate(vTmpDate.getDate() + 1);\n }\n\n }\n }\n\n vRightTable += vDateRowStr + '';\n vRightTable += '
' ;\n vRightTable += JSGantt.formatDateStr(vTmpDate, vDateDisplayFormat) + ' ' + vTmpDate.getHours() + ':00 -' + vTmpDate.getHours() + ':59 ' ;\n vRightTable += JSGantt.formatDateStr(vTmpDate, vDateDisplayFormat) + '' +\n\t\t\t JSGantt.formatDateStr(vTmpDate,vDateDisplayFormat.substring(0,5)) + ' - ';\n vTmpDate.setDate(vTmpDate.getDate()+6);\n\t\t vRightTable += JSGantt.formatDateStr(vTmpDate, vDateDisplayFormat) + '`'+ vStr + '`'+ vStr + '`'+ vStr + '
' + vTmpDate.getMinutes() + '
  
' + vTmpDate.getHours() + '
  
' + vTmpDate.getDate() + '
 
' + vTmpDate.getDate() + '
  
  
' + (vTmpDate.getMonth()+1) + '/' + vTmpDate.getDate() + '
  
  
' + (vTmpDate.getMonth()+1) + '/' + vTmpDate.getDate() + '
  
  
' + vMonthArr[vTmpDate.getMonth()].substr(0,3) + '
  
  
' + vMonthArr[vTmpDate.getMonth()].substr(0,3) + '
  
  
Qtr. ' + vQuarterArr[vTmpDate.getMonth()] + '
  
  
Qtr. ' + vQuarterArr[vTmpDate.getMonth()] + '
  
  
';\n\n // Draw each row\n\n for(i = 0; i < vTaskList.length; i++)\n\n {\n\n vTmpDate.setFullYear(vMinDate.getFullYear(), vMinDate.getMonth(), vMinDate.getDate());\n vTaskStart = vTaskList[i].getStart();\n vTaskEnd = vTaskList[i].getEnd();\n\n vNumCols = 0;\n vID = vTaskList[i].getID();\n\n // vNumUnits = Math.ceil((vTaskList[i].getEnd() - vTaskList[i].getStart()) / (24 * 60 * 60 * 1000)) + 1;\n vNumUnits = (vTaskList[i].getEnd() - vTaskList[i].getStart()) / (24 * 60 * 60 * 1000) + 1;\n\t if (vFormat=='hour')\n\t {\n vNumUnits = (vTaskList[i].getEnd() - vTaskList[i].getStart()) / ( 60 * 1000) + 1;\n\t }\n\t else if (vFormat=='minute')\n\t {\n vNumUnits = (vTaskList[i].getEnd() - vTaskList[i].getStart()) / ( 60 * 1000) + 1;\n\t }\n\t \n\t if(vTaskList[i].getVisible() == 0) \n vRightTable += '';\n\n }\n\n vMainTable += vRightTable + '
';\n\n\t\t vDiv.innerHTML = vMainTable;\n\n }\n\n } //this.draw\n\n this.mouseOver = function( pObj, pID, pPos, pType ) {\n if( pPos == 'right' ) vID = 'child_' + pID;\n else vID = 'childrow_' + pID;\n \n pObj.bgColor = "#ffffaa";\n vRowObj = JSGantt.findObj(vID);\n if (vRowObj) vRowObj.bgColor = "#ffffaa";\n }\n\n this.mouseOut = function( pObj, pID, pPos, pType ) {\n if( pPos == 'right' ) vID = 'child_' + pID;\n else vID = 'childrow_' + pID;\n \n pObj.bgColor = "#ffffff";\n vRowObj = JSGantt.findObj(vID);\n if (vRowObj) {\n if( pType == "group") {\n pObj.bgColor = "#f3f3f3";\n vRowObj.bgColor = "#f3f3f3";\n } else {\n pObj.bgColor = "#ffffff";\n vRowObj.bgColor = "#ffffff";\n }\n }\n }\n\n} //GanttChart\t\t\n\n// Recursively process task tree ... set min, max dates of parent tasks and identfy task level.\nJSGantt.processRows = function(pList, pID, pRow, pLevel, pOpen)\n{\n\n var vMinDate = new Date();\n var vMaxDate = new Date();\n var vMinSet = 0;\n var vMaxSet = 0;\n var vList = pList;\n var vLevel = pLevel;\n var i = 0;\n var vNumKid = 0;\n var vCompSum = 0;\n var vVisible = pOpen;\n \n for(i = 0; i < pList.length; i++)\n {\n if(pList[i].getParent() == pID) {\n\t\t vVisible = pOpen;\n pList[i].setVisible(vVisible);\n if(vVisible==1 && pList[i].getOpen() == 0) \n vVisible = 0;\n \n pList[i].setLevel(vLevel);\n vNumKid++;\n\n if(pList[i].getGroup() == 1) {\n JSGantt.processRows(vList, pList[i].getID(), i, vLevel+1, vVisible);\n }\n\n if( vMinSet==0 || pList[i].getStart() < vMinDate) {\n vMinDate = pList[i].getStart();\n vMinSet = 1;\n }\n\n if( vMaxSet==0 || pList[i].getEnd() > vMaxDate) {\n vMaxDate = pList[i].getEnd();\n vMaxSet = 1;\n }\n\n vCompSum += pList[i].getCompVal();\n\n }\n }\n\n if(pRow >= 0) {\n pList[pRow].setStart(vMinDate);\n pList[pRow].setEnd(vMaxDate);\n pList[pRow].setNumKid(vNumKid);\n pList[pRow].setCompVal(Math.ceil(vCompSum/vNumKid));\n }\n\n}\n\n\n// Used to determine the minimum date of all tasks and set lower bound based on format\nJSGantt.getMinDate = function getMinDate(pList, pFormat) \n {\n\n var vDate = new Date();\n\n vDate.setFullYear(pList[0].getStart().getFullYear(), pList[0].getStart().getMonth(), pList[0].getStart().getDate());\n\n // Parse all Task End dates to find min\n for(i = 0; i < pList.length; i++)\n {\n if(Date.parse(pList[i].getStart()) < Date.parse(vDate))\n vDate.setFullYear(pList[i].getStart().getFullYear(), pList[i].getStart().getMonth(), pList[i].getStart().getDate());\n }\n\n if ( pFormat== 'minute')\n {\n vDate.setHours(0);\n vDate.setMinutes(0);\n }\n\t\t else if (pFormat == 'hour' )\n {\n vDate.setHours(0);\n vDate.setMinutes(0);\n }\n // Adjust min date to specific format boundaries (first of week or first of month)\n else if (pFormat=='day')\n {\n vDate.setDate(vDate.getDate() - 1);\n while(vDate.getDay() % 7 > 0)\n {\n vDate.setDate(vDate.getDate() - 1);\n }\n\n }\n\n else if (pFormat=='week')\n {\n vDate.setDate(vDate.getDate() - 7);\n while(vDate.getDay() % 7 > 0)\n {\n vDate.setDate(vDate.getDate() - 1);\n }\n\n }\n\n else if (pFormat=='month')\n {\n while(vDate.getDate() > 1)\n {\n vDate.setDate(vDate.getDate() - 1);\n }\n }\n\n else if (pFormat=='quarter')\n {\n if( vDate.getMonth()==0 || vDate.getMonth()==1 || vDate.getMonth()==2 )\n vDate.setFullYear(vDate.getFullYear(), 0, 1);\n else if( vDate.getMonth()==3 || vDate.getMonth()==4 || vDate.getMonth()==5 )\n vDate.setFullYear(vDate.getFullYear(), 3, 1);\n else if( vDate.getMonth()==6 || vDate.getMonth()==7 || vDate.getMonth()==8 )\n vDate.setFullYear(vDate.getFullYear(), 6, 1);\n else if( vDate.getMonth()==9 || vDate.getMonth()==10 || vDate.getMonth()==11 )\n vDate.setFullYear(vDate.getFullYear(), 9, 1);\n\n }\n\n return(vDate);\n\n }\n\n\n\n\n\n\n\n // Used to determine the minimum date of all tasks and set lower bound based on format\n\nJSGantt.getMaxDate = function (pList, pFormat)\n{\n var vDate = new Date();\n\n vDate.setFullYear(pList[0].getEnd().getFullYear(), pList[0].getEnd().getMonth(), pList[0].getEnd().getDate());\n \n \n // Parse all Task End dates to find max\n for(i = 0; i < pList.length; i++)\n {\n if(Date.parse(pList[i].getEnd()) > Date.parse(vDate))\n {\n //vDate.setFullYear(pList[0].getEnd().getFullYear(), pList[0].getEnd().getMonth(), pList[0].getEnd().getDate());\n vDate.setTime(Date.parse(pList[i].getEnd()));\n\t\t\t}\t\n\t }\n\t \n\t if (pFormat == 'minute')\n {\n vDate.setHours(vDate.getHours() + 1);\n vDate.setMinutes(59);\n }\t\n\t \n if (pFormat == 'hour')\n {\n vDate.setHours(vDate.getHours() + 2);\n }\t\t\t\t\n\t\t\t\t\n // Adjust max date to specific format boundaries (end of week or end of month)\n if (pFormat=='day')\n {\n vDate.setDate(vDate.getDate() + 1);\n\n while(vDate.getDay() % 6 > 0)\n {\n vDate.setDate(vDate.getDate() + 1);\n }\n\n }\n\n if (pFormat=='week')\n {\n //For weeks, what is the last logical boundary?\n vDate.setDate(vDate.getDate() + 11);\n\n while(vDate.getDay() % 6 > 0)\n {\n vDate.setDate(vDate.getDate() + 1);\n }\n\n }\n\n // Set to last day of current Month\n if (pFormat=='month')\n {\n while(vDate.getDay() > 1)\n {\n vDate.setDate(vDate.getDate() + 1);\n }\n\n vDate.setDate(vDate.getDate() - 1);\n }\n\n // Set to last day of current Quarter\n if (pFormat=='quarter')\n {\n if( vDate.getMonth()==0 || vDate.getMonth()==1 || vDate.getMonth()==2 )\n vDate.setFullYear(vDate.getFullYear(), 2, 31);\n else if( vDate.getMonth()==3 || vDate.getMonth()==4 || vDate.getMonth()==5 )\n vDate.setFullYear(vDate.getFullYear(), 5, 30);\n else if( vDate.getMonth()==6 || vDate.getMonth()==7 || vDate.getMonth()==8 )\n vDate.setFullYear(vDate.getFullYear(), 8, 30);\n else if( vDate.getMonth()==9 || vDate.getMonth()==10 || vDate.getMonth()==11 )\n vDate.setFullYear(vDate.getFullYear(), 11, 31);\n\n }\n\n return(vDate);\n\n }\n\n\n\n\n\n\n\n // This function finds the document id of the specified object\n\nJSGantt.findObj = function (theObj, theDoc)\n\n {\n\n var p, i, foundObj;\n\n if(!theDoc) theDoc = document;\n\n if( (p = theObj.indexOf("?")) > 0 && parent.frames.length){\n\n theDoc = parent.frames[theObj.substring(p+1)].document;\n\n theObj = theObj.substring(0,p);\n\n }\n\n if(!(foundObj = theDoc[theObj]) && theDoc.all) \n\n foundObj = theDoc.all[theObj];\n\n\n\n for (i=0; !foundObj && i < theDoc.forms.length; i++) \n\n foundObj = theDoc.forms[i][theObj];\n\n\n\n for(i=0; !foundObj && theDoc.layers && i < theDoc.layers.length; i++)\n\n foundObj = JSGantt.findObj(theObj,theDoc.layers[i].document);\n\n\n\n if(!foundObj && document.getElementById)\n\n foundObj = document.getElementById(theObj);\n\n\n\n return foundObj;\n\n }\n\n\n\n\n\nJSGantt.changeFormat = function(pFormat,ganttObj) {\n\n\n\n if(ganttObj) \n\n\t\t{\n\n\t\tganttObj.setFormat(pFormat);\n\n\t\tganttObj.DrawDependencies();\n\n\t\t}\n\n else\n\n alert('Chart undefined');\n\n\n\n }\n\n\n\n\n\n // Function to open/close and hide/show children of specified task\n\nJSGantt.folder= function (pID,ganttObj) {\n\n var vList = ganttObj.getList();\n\n for(i = 0; i < vList.length; i++)\n {\n if(vList[i].getID() == pID) {\n\n if( vList[i].getOpen() == 1 ) {\n vList[i].setOpen(0);\n JSGantt.hide(pID,ganttObj);\n\n if (JSGantt.isIE()) \n JSGantt.findObj('group_'+pID).innerText = '+';\n else\n JSGantt.findObj('group_'+pID).textContent = '+';\n\t\t\t\t\n } else {\n\n vList[i].setOpen(1);\n\n JSGantt.show(pID, 1, ganttObj);\n\n if (JSGantt.isIE()) \n JSGantt.findObj('group_'+pID).innerText = 'ñ';\n else\n JSGantt.findObj('group_'+pID).textContent = 'ñ';\n\n }\n\n }\n }\n}\n\nJSGantt.hide= function (pID,ganttObj) {\n var vList = ganttObj.getList();\n var vID = 0;\n\n for(var i = 0; i < vList.length; i++)\n {\n if(vList[i].getParent() == pID) {\n vID = vList[i].getID();\n JSGantt.findObj('child_' + vID).style.display = "none";\n JSGantt.findObj('childgrid_' + vID).style.display = "none";\n vList[i].setVisible(0);\n if(vList[i].getGroup() == 1) \n JSGantt.hide(vID,ganttObj);\n }\n\n }\n}\n\n// Function to show children of specified task\nJSGantt.show = function (pID, pTop, ganttObj) {\n var vList = ganttObj.getList();\n var vID = 0;\n\n for(var i = 0; i < vList.length; i++)\n {\n if(vList[i].getParent() == pID) {\n vID = vList[i].getID();\n if(pTop == 1) {\n if (JSGantt.isIE()) { // IE;\n\n if( JSGantt.findObj('group_'+pID).innerText == '+') {\n JSGantt.findObj('child_'+vID).style.display = "";\n JSGantt.findObj('childgrid_'+vID).style.display = "";\n vList[i].setVisible(1);\n }\n\n } else {\n \n if( JSGantt.findObj('group_'+pID).textContent == '+') {\n JSGantt.findObj('child_'+vID).style.display = "";\n JSGantt.findObj('childgrid_'+vID).style.display = "";\n vList[i].setVisible(1);\n }\n\n }\n\n } else {\n\n if (JSGantt.isIE()) { // IE;\n if( JSGantt.findObj('group_'+pID).innerText == 'ñ') {\n JSGantt.findObj('child_'+vID).style.display = "";\n JSGantt.findObj('childgrid_'+vID).style.display = "";\n vList[i].setVisible(1);\n }\n\n } else {\n\n if( JSGantt.findObj('group_'+pID).textContent == 'ñ') {\n JSGantt.findObj('child_'+vID).style.display = "";\n JSGantt.findObj('childgrid_'+vID).style.display = "";\n vList[i].setVisible(1);\n }\n }\n }\n\n if(vList[i].getGroup() == 1) \n JSGantt.show(vID, 0,ganttObj);\n\n }\n }\n}\n\n\n \n\n\n // function to open window to display task link\n\nJSGantt.taskLink = function(pRef,pWidth,pHeight) \n\n {\n\n if(pWidth) vWidth =pWidth; else vWidth =400;\n if(pHeight) vHeight=pHeight; else vHeight=400;\n\n var OpenWindow=window.open(pRef, "newwin", "height="+vHeight+",width="+vWidth); \n\n }\n\nJSGantt.parseDateStr = function(pDateStr,pFormatStr) {\n var vDate =new Date();\t\n vDate.setTime( Date.parse(pDateStr));\n\n switch(pFormatStr) \n {\n\t case 'mm/dd/yyyy':\n\t var vDateParts = pDateStr.split('/');\n vDate.setFullYear(parseInt(vDateParts[2], 10), parseInt(vDateParts[0], 10) - 1, parseInt(vDateParts[1], 10));\n break;\n\t case 'dd/mm/yyyy':\n\t var vDateParts = pDateStr.split('/');\n vDate.setFullYear(parseInt(vDateParts[2], 10), parseInt(vDateParts[1], 10) - 1, parseInt(vDateParts[0], 10));\n break;\n\t case 'yyyy-mm-dd':\n\t var vDateParts = pDateStr.split('-');\n vDate.setFullYear(parseInt(vDateParts[0], 10), parseInt(vDateParts[1], 10) - 1, parseInt(vDateParts[1], 10));\n break;\n }\n\n return(vDate);\n \n}\n\nJSGantt.formatDateStr = function(pDate,pFormatStr) {\n vYear4Str = pDate.getFullYear() + '';\n \t vYear2Str = vYear4Str.substring(2,4);\n vMonthStr = (pDate.getMonth()+1) + '';\n vDayStr = pDate.getDate() + '';\n\n var vDateStr = "";\t\n\n switch(pFormatStr) {\n\t case 'mm/dd/yyyy':\n return( vMonthStr + '/' + vDayStr + '/' + vYear4Str );\n\t case 'dd/mm/yyyy':\n return( vDayStr + '/' + vMonthStr + '/' + vYear4Str );\n\t case 'yyyy-mm-dd':\n return( vYear4Str + '-' + vMonthStr + '-' + vDayStr );\n\t case 'mm/dd/yy':\n return( vMonthStr + '/' + vDayStr + '/' + vYear2Str );\n\t case 'dd/mm/yy':\n return( vDayStr + '/' + vMonthStr + '/' + vYear2Str );\n\t case 'yy-mm-dd':\n return( vYear2Str + '-' + vMonthStr + '-' + vDayStr );\n\t case 'mm/dd':\n return( vMonthStr + '/' + vDayStr );\n\t case 'dd/mm':\n return( vDayStr + '/' + vMonthStr );\n }\t\t \n\t \n}\n\nJSGantt.parseXML = function(ThisFile,pGanttVar){\n\tvar is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1; // Is this Chrome \n\t\n\ttry { //Internet Explorer \n\t\txmlDoc=new ActiveXObject("Microsoft.XMLDOM");\n\t\t}\n\tcatch(e) {\n\t\ttry { //Firefox, Mozilla, Opera, Chrome etc. \n\t\t\tif (is_chrome==false) { xmlDoc=document.implementation.createDocument("","",null); }\n\t\t}\n\t\tcatch(e) {\n\t\t\talert(e.message);\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (is_chrome==false) { \t// can't use xmlDoc.load in chrome at the moment\n\t\txmlDoc.async=false;\n\t\txmlDoc.load(ThisFile);\t\t// we can use loadxml\n\t\tJSGantt.AddXMLTask(pGanttVar)\n\t\txmlDoc=null;\t\t\t// a little tidying\n\t\tTask = null;\n\t}\n\telse {\n\t\tJSGantt.ChromeLoadXML(ThisFile,pGanttVar);\t\n\t\tta=null;\t// a little tidying\t\n\t}\n}\n\nJSGantt.AddXMLTask = function(pGanttVar){\n\n\tTask=xmlDoc.getElementsByTagName("task");\n\t\n\tvar n = xmlDoc.documentElement.childNodes.length;\t// the number of tasks. IE gets this right, but mozilla add extra ones (Whitespace)\n\t\n\tfor(var i=0;i/gi);\n\n\t\tvar n = ta.length;\t// the number of tasks. \n\t\tfor(var i=1;i/i)\n\t\n\t\t\tif(te.length> 2){var pID=te[1];} else {var pID = 0;}\n\t\t\tpID *= 1;\n\t\n\t\t\tvar te = Task.split(//i)\n\t\t\tif(te.length> 2){var pName=te[1];} else {var pName = "No Task Name";}\n\t\n\t\t\tvar te = Task.split(//i)\n\t\t\tif(te.length> 2){var pStart=te[1];} else {var pStart = "";}\n\t\n\t\t\tvar te = Task.split(//i)\n\t\t\tif(te.length> 2){var pEnd=te[1];} else {var pEnd = "";}\n\t\n\t\t\tvar te = Task.split(//i)\n\t\t\tif(te.length> 2){var pColor=te[1];} else {var pColor = '0000ff';}\n\n\t\t\tvar te = Task.split(//i)\n\t\t\tif(te.length> 2){var pLink=te[1];} else {var pLink = "";}\n\t\n\t\t\tvar te = Task.split(//i)\n\t\t\tif(te.length> 2){var pMile=te[1];} else {var pMile = 0;}\n\t\t\tpMile *= 1;\n\t\n\t\t\tvar te = Task.split(//i)\n\t\t\tif(te.length> 2){var pRes=te[1];} else {var pRes = "";}\t\n\t\n\t\t\tvar te = Task.split(//i)\n\t\t\tif(te.length> 2){var pComp=te[1];} else {var pComp = 0;}\t\n\t\t\tpComp *= 1;\n\t\n\t\t\tvar te = Task.split(//i)\n\t\t\tif(te.length> 2){var pGroup=te[1];} else {var pGroup = 0;}\t\n\t\t\tpGroup *= 1;\n\n\t\t\tvar te = Task.split(//i)\n\t\t\tif(te.length> 2){var pParent=te[1];} else {var pParent = 0;}\t\n\t\t\tpParent *= 1;\n\t\n\t\t\tvar te = Task.split(//i)\n\t\t\tif(te.length> 2){var pOpen=te[1];} else {var pOpen = 1;}\n\t\t\tpOpen *= 1;\n\t\n\t\t\tvar te = Task.split(//i)\n\t\t\tif(te.length> 2){var pDepend=te[1];} else {var pDepend = "";}\t\n\t\t\t//pDepend *= 1;\n\t\t\tif (pDepend.length==0){pDepend=''} // need this to draw the dependency lines\n\t\t\t\n\t\t\tvar te = Task.split(//i)\n\t\t\tif(te.length> 2){var pCaption=te[1];} else {var pCaption = "";}\n\t\t\t\n\t\t\t// Finally add the task\n\t\t\tpGanttVar.AddTaskItem(new JSGantt.TaskItem(pID , pName, pStart, pEnd, pColor, pLink, pMile, pRes, pComp, pGroup, pParent, pOpen, pDepend,pCaption \t));\n\t\t}\n\t}\n}\n\nJSGantt.benchMark = function(pItem){\n var vEndTime=new Date().getTime();\n alert(pItem + ': Elapsed time: '+((vEndTime-vBenchTime)/1000)+' seconds.');\n vBenchTime=new Date().getTime();\n}\n\n\n Time and Expense package 107 configureCRM 0 t /*\n This file is part of the xtprjaccnt Package for xTuple ERP,\n and is Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. It\n is licensed to you under the xTuple End-User License Agreement ("the\n EULA"), the full text of which is available at www.xtuple.com/EULA.\n While the EULA gives you access to source code and encourages your\n involvement in the development process, this Package is not free\n software. By using this software, you agree to be bound by the\n terms of the EULA.\n*/\n\ninclude("xtte");\n\nxtte.configureCRM = new Object;\n\nvar _telayout = new QBoxLayout(mywindow);\nvar _tespcr = new QSpacerItem(10, 0, 1, 1 | 4);\nvar _laborAndOverheadLit = toolbox.createWidget("QLabel", mywindow, "_laborAndOverheadLit");\nvar _laborAndOverhead = toolbox.createWidget("GLCluster", mywindow, "_laborAndOverhead");\n_laborAndOverheadLit.text = qsTr("Project Labor And Overhead:");\n_laborAndOverheadLit.buddy= _laborAndOverhead;\n_laborAndOverhead.setType(0x02); // Liability\n\n_telayout.addWidget(_laborAndOverheadLit);\n_telayout.addWidget(_laborAndOverhead);\n_telayout.addItem(_tespcr);\n\nvar _useProjects = mywindow.findChild("_useProjects")\nvar _layout = toolbox.widgetGetLayout(_useProjects);\n_layout.insertLayout(1, _telayout);\n\nxtte.configureCRM.save = function()\n{ \n var id = -1;\n if (_useProjects.checked)\n id = _laborAndOverhead.id() \n \n metrics.set("PrjLaborAndOverhead", id);\n}\n// Initialize\n_laborAndOverhead.setEnabled(_useProjects.checked);\n_laborAndOverhead.setId(metrics.value("PrjLaborAndOverhead"));\n\n// Connections\nmywindow.saving.connect(xtte.configureCRM.save);\n_useProjects["toggled(bool)"].connect(_laborAndOverheadLit, "setEnabled(bool)");\n_useProjects["toggled(bool)"].connect(_laborAndOverhead, "setEnabled(bool)");\n\n Time and Expense package 115 projectGantt 0 t /*\n * This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\ninclude("xtte");\nxtte.projectGantt = new Object;\n\nvar _webView = new QWebView(mywindow);\nvar _toolBar = mywindow.findChild("_toolBar");\nvar _layout = toolbox.widgetGetLayout(_toolBar);\nvar _prjid;\nvar _prjNumber;\nvar _prjName;\nvar _startDate;\nvar _dueDate;\nvar _jsCode;\nvar _cssCode;\nvar _jsPath;\nvar _cssPath;\nvar _qry;\nvar _page;\nvar _gantt;\n\nset = function (input) \n{ \n if ("startDate" in input)\n _startDate = input.startDate;\n\n if ("dueDate" in input)\n _dueDate = input.dueDate;\n\n if ("prjName" in input)\n _prjName = input.prjName;\n\n if ("prjNumber" in input)\n {\n _prjNumber = input.prjNumber;\n qry = toolbox.executeDbQuery("projectGantt","getprj",input);\n if (qry.first())\n _prjid = qry.value("prj_id");\n\n xtte.projectGantt.populate();\n }\n}\n\nxtte.projectGantt.populate = function()\n{\n\n _page = '';\n _page = _page + '';\n _page = _page + '';\n _page = _page + '';\n _page = _page + '
';\n\n _gantt = "";\n \n var html = _page + _gantt;\n _webView.setHtml(html);\n // This snippet should make the link open in a new browser, but nothing happens. Why?\n //_webView.page().linkDelegationPolicy = QWebPage.DelegateAllLinks;\n}\n\n// Initialize\nmywindow.findChild("_close").triggered.connect(mywindow, "close");\n\n_layout.addWidget(_webView, 1, 0);\n\n// Create jsGantt files on local OS if they don't already exist\nvar tmpdir = QDir.tempPath();\n_jsPath = tmpdir + "/jsgantt.js";\n_cssPath = tmpdir + "/jscantt.css";\n\nif (!QFile.exists(_jsPath))\n{\n // Create jsGantt script\n qry = toolbox.executeDbQuery("projectGantt","jsgantt");\n if (qry.first());\n _jsCode = qry.value("script_source");\n\n toolbox.textStreamWrite(_jsPath, _jsCode);\n\n // Create jsGantt style sheet\n qry = toolbox.executeDbQuery("projectGantt","jsganttcss");\n if (qry.first());\n _cssCode = qry.value("script_source");\n\n toolbox.textStreamWrite(_cssPath, _cssCode);\n}\n Time and Expense package 116 project 0 t /*\n * This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\ninclude("xtte");\nxtte.project = new Object;\n\nvar _tab = mywindow.findChild("_tab"); \nvar _tebilling = toolbox.loadUi("tebilling", mywindow);\n_tab.insertTab(2, _tebilling, qsTr("Billing"));\n_tab.setEnabled(2, privileges.check("CanViewRates"));\n\nvar _buttonBox = mywindow.findChild("_buttonBox");\nvar _gantt = _buttonBox.addButton(qsTr("Gantt..."), QDialogButtonBox.ActionRole);\n\nvar _owner = mywindow.findChild("_owner");\nvar _assignedTo = mywindow.findChild("_assignedTo");\nvar _started = mywindow.findChild("_started");\nvar _due = mywindow.findChild("_due");\nvar _assigned = mywindow.findChild("_assigned");\nvar _completed = mywindow.findChild("_completed");\nvar _prjtask = mywindow.findChild("_prjtask");\nvar _newTask = mywindow.findChild("_newTask");\nvar _editTask = mywindow.findChild("_editTask");\nvar _viewTask = mywindow.findChild("_viewTask");\nvar _number = mywindow.findChild("_number");\nvar _name = mywindow.findChild("_name");\nvar _billingGroup = mywindow.findChild("_billingGroup");\nvar _itemGroup = _tebilling.findChild("_itemGroup");\nvar _useItem = _tebilling.findChild("_useItem");\nvar _cust = _tebilling.findChild("_cust");\nvar _rate = _tebilling.findChild("_rate");\nvar _mode = 'new';\nvar _teprjid = -1; \nvar _prjid = -1;\n\n//set = function(input)\nxtte.project.populated = function(input)\n{\n if (_number.enabled)\n _mode = "edit";\n else\n _mode = "view";\n\n if (input.mode == "view")\n {\n _cust.enabled = false;\n _billingGroup.enabled = false;\n }\n\n sql = "SELECT prj_id FROM prj WHERE prj_number=;";\n var params = new Object;\n params.prj_number = _number.text;\n \n var data = toolbox.executeQuery(sql, params);\n if (data.first())\n {\n _prjid = data.value("prj_id");\n xtte.project.populate();\n }\n}\n\nxtte.project.save = function(prjId)\n{\n if (prjId <= 0)\n return;\n\n var params = new Object();\n params.teprj_id\t= _teprjid;\n params.prj_id\t= prjId;\n if (_cust.isValid())\n params.cust_id \t= _cust.id();\n if (_billingGroup.checked)\n {\n params.rate\t= _rate.localValue;\n params.curr_id\t= _rate.id();\n }\n\n var query = "updteprj";\n if (_teprjid == -1)\n query = "insteprj";\n\n var q = toolbox.executeDbQuery("project", query, params);\n xtte.errorCheck(q);\n}\n\nxtte.project.populate = function()\n{\n var params = new Object();\n params.prj_id = _prjid; \n\n var q = toolbox.executeDbQuery("project", "selteprj", params);\n\n if (q.first())\n {\n _teprjid = q.value("teprj_id");\n _cust.setId(q.value("cust_id"));\n if (q.value("curr_id") == -1)\n _billingGroup.checked = false;\n else\n {\n _billingGroup.checked = true;\n _rate.setId(q.value("curr_id"));\n _rate.localValue = q.value("teprj_rate");\n }\n return;\n }\n else\n xtte.errorCheck(q);\n}\n\nxtte.project.newTask = function()\n{\n if (_prjid == -1)\n {\n if (!mywindow.sSave(true))\n return;\n else\n {\n var params = new Object;\n params.prjNumber = _number.text;\n\n var q = toolbox.executeDbQuery("projectGantt", "getprj", params);\n if (q.first())\n _prjid = q.value("prj_id");\n else\n return;\n }\n }\n\n xtte.project.openTask("new");\n}\n\nxtte.project.editTask = function()\n{\n xtte.project.openTask("edit");\n}\n\nxtte.project.viewTask = function()\n{\n xtte.project.openTask("view");\n}\n\nxtte.project.openTask = function(mode)\n{\n params = new Object;\n params.mode = mode;\n if (mode == "new")\n {\n params.prj_id = _prjid;\n params.prj_owner_username = _owner.username();\n params.prj_username = _assignedTo.username();\n params.prj_start_date = _started.date;\n params.prj_due_date = _due.date;\n params.prj_assigned_date = _assigned.date;\n params.prj_completed_date = _completed.date;\n }\n else\n params.prjtask_id = _prjtask.id();\n if (_cust.isValid())\n params.cust_id = _cust.id();\n\n var win = toolbox.openWindow("task", mywindow, Qt.ApplicationModal);\n toolbox.lastWindow().set(params);\n var result = win.exec();\n if(result != 0)\n mywindow.populate();\n}\n\nxtte.project.gantt = function()\n{\n if (!_due.isValid())\n {\n var msg = qsTr("You must enter a valid Due Date");\n QMessageBox.critical(mywindow, qsTr("Invalid Date"), msg);\n return;\n }\n\n var dparams = new Object;\n dparams.startDate = _started.date;\n dparams.dueDate = _due.date;\n\n var qry = toolbox.executeDbQuery("project","formatdates",dparams);\n if (qry.first())\n {\n var params = new Object;\n params.prjNumber = _number.text;\n params.prjName = _name.text;\n params.startDate = qry.value("start_date");\n params.dueDate = qry.value("due_date");\n\n toolbox.openWindow("projectGantt", mywindow, Qt.ApplicationModal);\n toolbox.lastWindow().set(params);\n }\n}\n\n// Initialize\n_itemGroup.hide();\n_useItem.hide();\n\n// Connections\ntoolbox.coreDisconnect(_newTask, "clicked()", mywindow, "sNewTask()");\ntoolbox.coreDisconnect(_editTask, "clicked()", mywindow, "sEditTask()");\ntoolbox.coreDisconnect(_viewTask, "clicked()", mywindow, "sViewTask()");\n\nmywindow.populated.connect(xtte.project.populated);\n_newTask.clicked.connect(xtte.project.newTask);\n_editTask.clicked.connect(xtte.project.editTask);\n_viewTask.clicked.connect(xtte.project.viewTask);\n_gantt.clicked.connect(xtte.project.gantt);\nmydialog["finished(int)"].connect(xtte.project.save);\n\n Time and Expense package 119 timeExpenseSheet 0 t /*\n * This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\ndebugger;\nvar _debug = false;\ninclude("xtte");\n\ntry\n{\n if (_debug)\n print("xtte.timeExpenseSheet script entered");\n\n // Define Variables\n xtte.timeExpenseSheet = new Object;\n\n var _all = mywindow.findChild("_all");\n var _buttonBox = mywindow.findChild("_buttonBox");\n var _edit = mywindow.findChild("_edit");\n var _new = mywindow.findChild("_new");\n var _delete = mywindow.findChild("_delete");\n var _view = mywindow.findChild("_view");\n var _print = mywindow.findChild("_print");\n var _printSheet = mywindow.findChild("_printSheet");\n var _lines = mywindow.findChild("_lines");\n var _selected = mywindow.findChild("_selected");\n var _weekending = mywindow.findChild("_weekending");\n var _employee = mywindow.findChild("_employee");\n var _sheetNumberExtra = mywindow.findChild("_sheetNumberExtra");\n var _site = mywindow.findChild("_site");\n var _orderComments = mywindow.findChild("_orderComments");\n var _documents = mywindow.findChild("_documents");\n\n var _sheet;\n var _id = -1;\n var _type;\n var _admin;\n\n _lines.addColumn(qsTr("Type"),\t\tXTreeWidget.docTypeColumn,Qt.AlignLeft, false, "teitem_type");\n\n //add logic to determine the next Sunday date and populate both start and end with it\n _lines.addColumn(qsTr("Line #"), XTreeWidget.seqColumn, Qt.AlignLeft, true, "teitem_linenumber");\n _lines.addColumn(qsTr("Sheet Date"), XTreeWidget.dateColumn, Qt.AlignLeft, false, "tehead_weekending");\n _lines.addColumn(qsTr("Work Date"), XTreeWidget.dateColumn, Qt.AlignLeft, true, "teitem_workdate");\n _lines.addColumn(qsTr("Project#"), XTreeWidget.orderColumn, Qt.AlignLeft, true, "prj_number");\n _lines.addColumn(qsTr("Project Name"), -1, Qt.AlignLeft, false, "prj_name");\n _lines.addColumn(qsTr("Task#"), XTreeWidget.orderColumn, Qt.AlignLeft, true, "prjtask_number");\n _lines.addColumn(qsTr("Task Name"), -1, Qt.AlignLeft, false, "prjtask_name");\n _lines.addColumn(qsTr("Cust.#"), XTreeWidget.orderColumn, Qt.AlignLeft, false, "cust_number");\n _lines.addColumn(qsTr("Cust. Name"), -1, Qt.AlignLeft, false, "cust_name");\n _lines.addColumn(qsTr("PO"), XTreeWidget.orderColumn, Qt.AlignLeft, false, "teitem_po");\n _lines.addColumn(qsTr("Item"), XTreeWidget.itemColumn, Qt.AlignLeft, true, "item_number");\n _lines.addColumn(qsTr("Description"), -1, Qt.AlignLeft, true, "item_descrip1");\n _lines.addColumn(qsTr("Hours"), XTreeWidget.qtyColumn, Qt.AlignRight, true, "hours");\n _lines.addColumn(qsTr("Expense"), XTreeWidget.qtyColumn, Qt.AlignRight, true, "expense");\n _lines.addColumn(qsTr("Notes"), -1, Qt.AlignLeft, false, "f_notes");\n\n\n if (privileges.check("CanViewRates"))\n {\n _lines.addColumn(qsTr("Billable"), XTreeWidget.ynColumn, Qt.AlignLeft, true, "teitem_billable");\n _lines.addColumn(qsTr("Rate"), XTreeWidget.priceColumn, Qt.AlignRight, false, "teitem_rate");\n _lines.addColumn(qsTr("Extended"), XTreeWidget.moneyColumn, Qt.AlignRight, false, "teitem_total");\n }\n\n}\n\ncatch (e)\n{\n QMessageBox.critical(mywindow, "timeExpenseSheet",\n qsTr("timeExpenseSheet.js exception: ") + e);\n}\n\nset = function(input)\n{\n try\n {\n if (_debug)\n print("xtte.timeExpenseSheet.set entered");\n\n if("emp_id" in input)\n _employee.setId(input.emp_id); \n \n if("sheet" in input) \n _sheet = input.sheet;\n\n if ("tehead_id" in input)\n {\n _id = input.tehead_id;\n _documents.setId(_id);\n }\n\n if("mode" in input)\n {\n if (input.mode <= xtte.editMode)\n {\n _lines["valid(bool)"].connect(_edit["setEnabled(bool)"]);\n _lines["valid(bool)"].connect(_delete["setEnabled(bool)"]);\n _lines.itemSelected.connect(_edit, "animateClick");\n }\n\n if (input.mode == xtte.newMode)\n {\n _mode = "new";\n _weekending.enabled = true;\n }\n else if (input.mode == xtte.editMode)\n {\n _mode = "edit";\n _weekending.enabled = false;\n _employee.enabled = false;\n _site.enabled = false;\n var shortcut = _buttonBox.button(QDialogButtonBox.Cancel).shortcut;\n _buttonBox.removeButton(_buttonBox.button(QDialogButtonBox.Cancel));\n _buttonBox.addButton(QDialogButtonBox.Close);\n _buttonBox.button(QDialogButtonBox.Close).shortcut = shortcut;\n\n xtte.timeExpenseSheet.populate();\n }\n else if (input.mode == xtte.viewMode)\n {\n _mode = "view";\n _new.enabled = false;\n _orderComments.enabled = false;\n var shortcut = _buttonBox.button(QDialogButtonBox.Cancel).shortcut;\n _buttonBox.clear();\n _buttonBox.addButton(QDialogButtonBox.Close);\n _buttonBox.button(QDialogButtonBox.Close).shortcut = shortcut;\n _lines.itemSelected.connect(_view, "animateClick");\n _printSheet.hide();\n\n xtte.timeExpenseSheet.populate();\n }\n }\n return mainwindow.NoError;\n }\n catch (e)\n {\n QMessageBox.critical(mywindow, "timeExpenseSheet",\n qsTr("set exception: ") + e);\n }\n}\n\nxtte.timeExpenseSheet.populateMenu = function(pMenu, pItem, pCol)\n{\n try\n {\n if (_debug)\n print("xtte.timeExpenseSheet.populateMenu entered");\n\n var tmpact;\n\n if(pMenu == null)\n pMenu = _lines.findChild("_menu");\n\n if(pMenu != null)\n {\n var currentItem = _lines.currentItem();\n if (currentItem != null)\n {\n tmpact = pMenu.addAction(qsTr("Edit..."));\n tmpact.triggered.connect(xtte.timeExpenseSheet.editItem);\n tmpact.enabled = (_mode != "view" && privileges.check("MaintainTimeExpense"));\n\n tmpact = pMenu.addAction(qsTr("View..."));\n tmpact.triggered.connect(xtte.timeExpenseSheet.viewItem);\n\n tmpact = pMenu.addAction(qsTr("Delete..."));\n tmpact.triggered.connect(xtte.timeExpenseSheet.deleteItem);\n tmpact.enabled = (_mode != "view" && privileges.check("MaintainTimeExpense"));\n }\n }\n }\n catch (e)\n {\n QMessageBox.critical(mywindow, "timeExpenseSheet",\n qsTr("populateMenu exception: ") + e);\n }\n}\n\nxtte.timeExpenseSheet.deleteItem = function()\n{\n try\n {\n if (_debug)\n print("xtte.timeExpenseSheet.deleteItem entered");\n\n var msg = qsTr("Are you sure you want to delete this line?");\n if (QMessageBox.question(mywindow, mywindow.windowTitle, msg,\n QMessageBox.Yes | QMessageBox.Escape,\n QMessageBox.No | QMessageBox.Default) == QMessageBox.Yes)\n {\n var params = new Object();\n params.teitem_id = _lines.id();\n\n q = toolbox.executeDbQuery("timeexpensesheet","delteitem", params );\n xtte.errorCheck(q);\n xtte.timeExpenseSheet.fillList();\n }\n }\n catch (e)\n {\n QMessageBox.critical(mywindow, "timeExpenseSheet",\n qsTr("deleteItem exception: ") + e);\n }\n}\n\nxtte.timeExpenseSheet.newItem = function()\n{\n try\n {\n if (_debug)\n print("xtte.timeExpenseSheet.newItem entered");\n\n if (!xtte.timeExpenseSheet.save())\n return;\n\n xtte.timeExpenseSheet.openItem(xtte.newMode);\n }\n catch (e)\n {\n QMessageBox.critical(mywindow, "timeExpenseSheet",\n qsTr("newItem exception: ") + e);\n }\n}\n\nxtte.timeExpenseSheet.editItem = function()\n{\n try\n {\n if (_debug)\n print("xtte.timeExpenseSheet.editItem entered");\n\n xtte.timeExpenseSheet.openItem(xtte.editMode);\n }\n catch (e)\n {\n QMessageBox.critical(mywindow, "timeExpenseSheet",\n qsTr("editItem exception: ") + e);\n }\n}\n\nxtte.timeExpenseSheet.viewItem = function()\n{\n try\n {\n if (_debug)\n print("xtte.timeExpenseSheet.viewItem entered");\n\n xtte.timeExpenseSheet.openItem(xtte.viewMode);\n }\n catch (e)\n {\n QMessageBox.critical(mywindow, "timeExpenseSheet",\n qsTr("viewItem exception: ") + e);\n }\n}\n\nxtte.timeExpenseSheet.openItem = function(mode)\n{\n try\n {\n if (_debug)\n print("xtte.timeExpenseSheet.openItem entered");\n\n var params = new Object;\n params.tehead_id = _id;\n params.site = _site.text;\n params.weekending = _weekending.date;\n params.emp_id = _employee.id();\n params.mode = mode;\n if (mode) // Not new\n params.teitem_id = _lines.id();\n\n var wnd = toolbox.openWindow("timeExpenseSheetItem", mywindow);\n toolbox.lastWindow().set(params);\n wnd.exec();\n\n xtte.timeExpenseSheet.fillList();\n }\n catch (e)\n {\n QMessageBox.critical(mywindow, "timeExpenseSheet",\n qsTr("openItem exception: ") + e);\n }\n}\n\nxtte.timeExpenseSheet.accepted = function()\n{\n try\n {\n if (_debug)\n print("xtte.timeExpenseSheet.accepted entered");\n\n if (!xtte.timeExpenseSheet.save())\n return;\n\n if (_printSheet.checked)\n xtte.timeExpenseSheet.printSheet();\n\n mywindow.close();\n }\n catch (e)\n {\n QMessageBox.critical(mywindow, "timeExpenseSheet",\n qsTr("accepted exception: ") + e);\n }\n}\n\nxtte.timeExpenseSheet.save = function()\n{\n try\n {\n if (_debug)\n print("xtte.timeExpenseSheet.save entered");\n\n if (!_employee.isValid())\n throw new Error(qsTr("Employee Required"));\n\n if (_site.id() == -1)\n throw new Error(qsTr("Site Required"));\n\n if (!_weekending.isValid())\n throw new Error(qsTr("Week Ending Date Required"));\n\n var params = new Object();\n params.tehead_id = _id;\n params.emp_id = _employee.id();\n params.warehous_id = _site.id();\n params.weekending = _weekending.date;\n params.notes = _orderComments.plainText;\n\n var query = "updtehead";\n if (_id == -1)\n query = "instehead";\n\n q = toolbox.executeDbQuery("timeexpensesheet", query, params );\n if (q.first())\n {\n _id = q.value("tehead_id");\n _documents.setId(_id);\n _sheetNumberExtra.text = q.value("tehead_number");\n }\n else if (!xtte.errorCheck(q))\n return false;\n\n _weekending.enabled = false;\n _employee.enabled = false;\n _site.enabled = false;\n\n return true;\n }\n catch (e)\n {\n QMessageBox.critical(mywindow, qsTr("timeExpenseSheet"), e.message);\n return false;\n }\n}\n\nxtte.timeExpenseSheet.handleNewButton = function()\n{\n try\n {\n if (_debug)\n print("xtte.timeExpenseSheet.handleNewButton entered");\n\n _new.enabled = (_weekending.isValid() &&\n _employee.isValid() &&\n _mode != "view");\n }\n catch (e)\n {\n QMessageBox.critical(mywindow, "timeExpenseSheet",\n qsTr("handleNewButton exception: ") + e);\n }\n}\n\nxtte.timeExpenseSheet.populate = function()\n{\n try\n {\n if (_debug)\n print("xtte.timeExpenseSheet.populate entered");\n\n var params = new Object;\n params.type = _type;\n params.emp = _employee.id();\n params.tehead_id = _id;\n\n q = toolbox.executeDbQuery("timeexpensesheet", "header", params);\n\n if (q.first())\n {\n _weekending.date = q.value("tehead_weekending");\n _sheetNumberExtra.text = q.value("tehead_number");\n _employee.setId(q.value("tehead_emp_id"));\n _site.setId(q.value("tehead_warehous_id"));\n _orderComments.setPlainText(q.value("tehead_notes"));\n }\n else if (!xtte.errorCheck(q))\n return;\n\n if (_mode == "view")\n {\n _weekending.enabled = false;\n _employee.enabled = false;\n _site.enabled = false;\n }\n\n xtte.timeExpenseSheet.fillList();\n }\n catch (e)\n {\n QMessageBox.critical(mywindow, "timeExpenseSheet",\n qsTr("populate exception: ") + e);\n }\n}\n\nxtte.timeExpenseSheet.testCurrEmpId = function()\n{\n var params = new Object;\n params.emp_id = _employee.id();\n qry = toolbox.executeQuery("SELECT crmacct_emp_id = ::integer AS test "\n + "FROM crmacct "\n + "WHERE crmacct_usr_username = getEffectiveXtUser();", params);\n if (qry.first()) {\n return qry.value("test");\n }\n else\n QMessageBox.information(mywindow, "Database Error", qry.lastError().text);\n return false;\n}\n\nxtte.timeExpenseSheet.fillList = function()\n{\n try\n {\n if (_debug)\n print("xtte.timeExpenseSheet.fillList entered");\n\n if ( ( privileges.check("MaintainEmpCostSelf") && xtte.timeExpenseSheet.testCurrEmpId()) || privileges.check("MaintainEmpCostAll") )\n {\n _lines.addColumn(qsTr("Hourly Cost"), XTreeWidget.priceColumn, Qt.AlignRight, false, "teitem_hrlycost");\n _lines.addColumn(qsTr("Total Cost"), XTreeWidget.priceColumn, Qt.AlignRight, false, "teitem_totalcost");\n }\n\n var params = new Object;\n params.tehead_id = _id;\n params.time = qsTr("Time");\n params.expense = qsTr("Expense");\n params.error = qsTr("Error");\n\n q = toolbox.executeDbQuery("timeexpensesheet", "detail", params);\n\n _lines.populate(q);\n\n xtte.errorCheck(q);\n }\n catch (e)\n {\n QMessageBox.critical(mywindow, "timeExpenseSheet",\n qsTr("fillList exception: ") + e);\n }\n}\n\nxtte.timeExpenseSheet.printSheet = function()\n{\n try\n {\n if (_debug)\n print("xtte.timeExpenseSheet.printSheet entered");\n\n var params = new Object;\n params.tehead_id = _id;\n params.approved = qsTr("Approved");\n params.closed = qsTr("Closed");\n params.open = qsTr("Open");\n\n toolbox.printReport("TimeExpenseSheet", params);\n }\n catch (e)\n {\n QMessageBox.critical(mywindow, "timeExpenseSheet",\n qsTr("printSheet exception: ") + e);\n }\n}\n\nxtte.timeExpenseSheet.close = function()\n{\n try\n {\n if (_debug)\n print("xtte.timeExpenseSheet.close entered");\n\n if (_mode == "new" && _id != -1)\n {\n if (QMessageBox.question(mywindow,\n qsTr("Delete Sheet"),\n qsTr("

Are you sure you want to cancel this "\n + "sheet and discard all your changes?"),\n QMessageBox.Yes, QMessageBox.No) == QMessageBox.Yes)\n {\n var params = new Object;\n params.tehead_id = _id;\n\n toolbox.executeDbQuery("timeexpensesheet", "deltehead", params);\n }\n else\n return;\n }\n\n mywindow.close();\n }\n catch (e)\n {\n QMessageBox.critical(mywindow, "timeExpenseSheet",\n qsTr("close exception: ") + e);\n }\n}\n\n// Initialize\n_employee.enabled = privileges.check("MaintainTimeExpenseOthers");\n_new.enabled = false;\n\n// Make connections\n_employee.newId.connect(xtte.timeExpenseSheet.handleNewButton);\n_weekending.newDate.connect(xtte.timeExpenseSheet.handleNewButton);\n_lines["valid(bool)"].connect(_view["setEnabled(bool)"]);\n\n_buttonBox.accepted.connect(xtte.timeExpenseSheet.accepted);\n_buttonBox.rejected.connect(xtte.timeExpenseSheet.close);\n\n_new.clicked.connect(xtte.timeExpenseSheet.newItem);\n_edit.clicked.connect(xtte.timeExpenseSheet.editItem);\n_delete.clicked.connect(xtte.timeExpenseSheet.deleteItem);\n_view.clicked.connect(xtte.timeExpenseSheet.viewItem);\n\n_lines["populateMenu(QMenu *, XTreeWidgetItem *, int)"].connect(xtte.timeExpenseSheet.populateMenu); Time and Expense package 120 timeExpenseSheetItem 0 t /*\n * This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\ninclude("xtte");\n\n// Define local variables\nxtte.timeExpenseSheetItem = new Object;\n\nvar _hours = mywindow.findChild("_hours");\nvar _total = mywindow.findChild("_total");\t\nvar _totalLit = mywindow.findChild("_totalLit");\t\nvar _rate = mywindow.findChild("_rate");\nvar _rateLit = mywindow.findChild("_rateLit");\nvar _clients = mywindow.findChild("_clients");\nvar _employee = mywindow.findChild("_employee");\nvar _items = mywindow.findChild("_items");\nvar _po = mywindow.findChild("_po");\nvar _project = mywindow.findChild("_project");\nvar _task = mywindow.findChild("_task");\nvar _linenumber = mywindow.findChild("_linenumber");\nvar _sheet = mywindow.findChild("_sheet");\nvar _buttonBox = mywindow.findChild("_buttonBox");\nvar _weekending = mywindow.findChild("_weekending");\nvar _workdate = mywindow.findChild("_workdate");\nvar _type = mywindow.findChild("_type");\nvar _qtyLabel = mywindow.findChild("_qtyLabel");\nvar _billable = mywindow.findChild("_billable");\nvar _prepaid = mywindow.findChild("_prepaid");\nvar _actual = mywindow.findChild("_actual");\nvar _budget = mywindow.findChild("_budget");\nvar _actualCost = mywindow.findChild("_actualCost");\nvar _budgetCost = mywindow.findChild("_budgetCost");\nvar _notes = mywindow.findChild("_notes");\nvar _sheetLit = mywindow.findChild("_sheetLit");\nvar _dayHrs = mywindow.findChild("_dayHrs");\nvar _weekHrs = mywindow.findChild("_weekHrs");\n\nvar _empcostLit\t\t\t= mywindow.findChild("_empcostLit");\nvar _empcost\t\t\t= mywindow.findChild("_empcost");\nvar _totCostLit = mywindow.findChild("_totCostLit");\nvar _totCost = mywindow.findChild("_totCost");\n\nvar _cancel = _buttonBox.button(QDialogButtonBox.Cancel);\nvar _prev = _buttonBox.addButton(qsTr("Prev"), QDialogButtonBox.ActionRole);\nvar _next = _buttonBox.addButton(qsTr("Next"), QDialogButtonBox.ActionRole);\n\nvar _sheetnum;\nvar _linenum;\nvar _teitemid = -1;\nvar _headid = -1;\nvar _taskid = -1;\nvar _site;\nvar _mode = xtte.newMode;\nvar _modified = false;\nvar _populating = false;\nvar _last = true;\n\n\nset = function(input)\n{\n if("emp_id" in input)\n _employee.setId(input.emp_id);\n \n if("weekending" in input)\n _weekending.date = input.weekending;\n\n if ("tehead_id" in input)\n _headid = input.tehead_id;\n\n if ("site" in input)\n _site = input.site;\n\n if ("teitem_id" in input)\n _teitemid = input.teitem_id;\n\n if ("mode" in input)\n {\n _mode = input.mode;\n\n if (input.mode == xtte.newMode)\n {\n xtte.timeExpenseSheetItem.clear();\n }\n else if (input.mode == xtte.viewMode)\n {\n var shortcut = _buttonBox.button(QDialogButtonBox.Cancel).shortcut;\n _buttonBox.removeButton(_buttonBox.button(QDialogButtonBox.Cancel));\n _buttonBox.removeButton(_buttonBox.button(QDialogButtonBox.Save));\n _buttonBox.addButton(QDialogButtonBox.Close);\n _buttonBox.button(QDialogButtonBox.Close).shortcut = shortcut;\n _weekending.enabled = false;\n _next.enabled = false;\n _prepaid.enabled = false;\n _type.enabled = false;\n _weekending.enabled = false;\n _workdate.enabled = false;\n _hours.enabled = false;\n _rate.enabled = false;\n _items.enabled = false;\n _employee.enabled = false;\n _clients.enabled = false;\n _po.enabled = false;\n _project.enabled = false;\n _task.enabled = false;\n _notes.enabled = false;\n _billable.enabled = false; \n _empcost.enabled = false;\n }\n else if (input.mode == xtte.editMode)\n {\n _project.enabled = false;\n _task.enabled = false;\n }\n\n xtte.timeExpenseSheetItem.populate();\n }\n\n \n return mainwindow.NoError;\n}\n\nxtte.timeExpenseSheetItem.extension = function()\n{\n _total.localValue = (_hours.toDouble() * _rate.localValue);\n _totCost.localValue = (_hours.toDouble() * _empcost.localValue);\n if (_type.code == 'T')\n xtte.timeExpenseSheetItem.empTotals();\n xtte.timeExpenseSheetItem.modified();\n}\n\nxtte.timeExpenseSheetItem.gettask = function()\n{\n if (_project.isValid())\n {\n var params = new Object();\n params.prj_id = _project.id();\n params.name = qsTr("Default");\n if (_mode == xtte.newMode)\n params.active = true;\n if (_workdate.isValid())\n params.startDate = _workdate.date;\n\n var qry = toolbox.executeDbQuery("timeexpensesheetitem", "gettask", params);\n if(!xtte.errorCheck(qry))\n return;\n\n _task.populate(qry);\n\n if(_taskid > 0)\n _task.setId(_taskid);\n\n if (!qry.first())\n {\n var msg = qsTr("No task found. A default task will be added");\n QMessageBox.critical(mywindow, qsTr("task"), msg);\n toolbox.executeDbQuery("timeexpensesheetitem","instask",params);\n\n qry = toolbox.executeDbQuery("timeexpensesheetitem", "gettask", params);\n _task.populate(qry);\n }\n\n xtte.timeExpenseSheetItem.getPrice();\n xtte.timeExpenseSheetItem.budgTotals();\n xtte.timeExpenseSheetItem.actTotals();\n }\n}\n\nxtte.timeExpenseSheetItem.modified = function()\n{\n if (_populating)\n return;\n\n _modified = true;\n}\n\nxtte.timeExpenseSheetItem.getPrice = function()\n{\n if (_populating || !_clients.isValid())\n return;\n if (_type.code == 'T' && !_billable.checked)\n {\n _rate.localValue = 0;\n _rate.enabled = false;\n } \n else if (_mode == xtte.editMode)\n {\n if (QMessageBox.question(mywindow,\n qsTr("Update Rate?"),\n qsTr("

Would you like to update the existing rate?"),\n QMessageBox.Ok, QMessageBox.Cancel) == QMessageBox.Cancel)\n return;\n }\n\n var params = new Object();\n params.item_id = _items.id();\n params.task_id = _task.id();\n params.prj_id = _project.id();\n params.cust_id = _clients.id();\n params.emp_id = _employee.id();\n if (_type.code == "T")\n params.time = true;\n \n var qry = toolbox.executeDbQuery("timeexpensesheetitem", "getterate", params);\n \n if (qry.first())\n {\n if(_billable.checked)\n {\n _rate.setBaseValue(qry.value("rate"));\n _rate.enabled = true;\n }\n }\n else\n xtte.errorCheck(qry);\n \n var qry2 = toolbox.executeQuery("SELECT te.calcRate(emp_wage, emp_wage_period) as cost "\n + "FROM emp WHERE emp_id = ", params);\n if (qry2.first())\n {\n if(_type.code == 'T')\n {\n _empcost.setBaseValue(qry2.value("cost"));\n _totCost.setBaseValue(qry2.value("cost") * _hours.toDouble());\n }\n }\n else\n xtte.errorCheck(qry2);\n\n xtte.timeExpenseSheetItem.modified();\n}\n\nxtte.timeExpenseSheetItem.populate = function()\n{\n _modified = false;\n \n // Edit or View mode\n var params = new Object();\n params.teitem_id = _teitemid;\n\n qry = toolbox.executeDbQuery("timeexpensesheetitem","detail", params);\n if (qry.first())\n {\n if (_mode == xtte.newMode)\n _mode = xtte.editMode;\n _populating = true; \n\n _headid = qry.value("teitem_tehead_id");\n _sheet.text = (qry.value("tehead_number"));\n _sheetnum = (qry.value("tehead_number"));\n _employee.setId(qry.value("tehead_emp_id"));\n _weekending.date = (qry.value("tehead_weekending"));\n\n _linenumber.text = (qry.value("teitem_linenumber"));\n _linenum = (qry.value("teitem_linenumber"));\n _workdate.date = (qry.value("teitem_workdate"));\n _type.code = qry.value("teitem_type");\n _clients.setId(qry.value("teitem_cust_id"));\n _po.text = (qry.value("teitem_po"));\n _items.setId(qry.value("teitem_item_id"));\n _hours.text = (qry.value("teitem_qty"));\n _rate.setId(qry.value("teitem_curr_id") - 0);\n _rate.localValue = (qry.value("teitem_rate"));\n _total.localValue = (qry.value("teitem_total"));\n _project.setId(qry.value("prj_id"));\n _task.setId(qry.value("teitem_prjtask_id"));\n _billable.checked = qry.value("teitem_billable");\n _prepaid.checked = qry.value("teitem_prepaid")\n _notes.plainText = qry.value("teitem_notes");\n _empcost.localValue = qry.value("teitem_hrlycost");\n _totCost.localValue = qry.value("teitem_hrlycost")*qry.value("teitem_qty");\n\n _last = qry.value("ismax");\n if (_last && _mode == xtte.editMode)\n _next.text = qsTr("New");\n else\n _next.text = qsTr("Next");\n\n _next.enabled = !(_last && _mode == xtte.viewMode);\n _prev.enabled = (_linenum > 1);\n\n _populating = false;\n _modified = false;\n }\n else if (!xtte.errorCheck)\n return;\n\n xtte.timeExpenseSheetItem.empTotals();\n}\n\nxtte.timeExpenseSheetItem.accepted = function()\n{\n if (xtte.timeExpenseSheetItem.save())\n {\n if (_mode == xtte.newMode)\n xtte.timeExpenseSheetItem.clear();\n else\n mywindow.close();\n }\n}\n\nxtte.timeExpenseSheetItem.save = function()\n{\n try\n {\n if (!_workdate.isValid())\n throw new Error(qsTr("Work Date Required"));\n \n if (!_project.isValid())\n throw new Error(qsTr("Project Required"));\n \n if (!_items.isValid())\n throw new Error(qsTr("Item Required"));\n\n if (_task.id == -1)\n throw new Error(qsTr("Task Required"));\n\n if (_hours.toDouble < 0 && _billable.checked)\n throw new Error(qsTr("Billing of negative amounts is not supported"));\n }\n catch (e)\n {\n QMessageBox.critical(mywindow, qsTr("Processing Error"), e.message);\n return false;\n }\n\n if (_hours.toDouble() <= 0 && _type.code == 'E' && !_prepaid.checked)\n {\n var msg = qsTr("The system only supports vouchering positive expense quantities. "\n + "Do you want to save anyway?")\n if (QMessageBox.question( mywindow, mywindow.windowTitle, msg, \n QMessageBox.Yes | QMessageBox.Escape, QMessageBox.No | QMessageBox.Default) == QMessageBox.No)\n return false;\n }\n\n\n var params = new Object();\n params.teitem_tehead_id = _headid;\n params.teitem_linenumber = _linenum;\n params.teitem_type \t = _type.code;\n params.teitem_workdate = _workdate.date;\n params.teitem_cust_id = _clients.id();\n params.teitem_po = _po.text;\n params.teitem_item_id = _items.id();\n params.teitem_qty = _hours.toDouble();\n params.teitem_rate = _rate.localValue;\n params.teitem_total = _total.localValue;\n params.teitem_prjtask_id = _task.id();\n params.teitem_billable = _billable.checked;\n params.teitem_prepaid = _prepaid.checked;\n params.teitem_notes = _notes.plainText;\n params.teitem_id = _teitemid;\n params.teitem_curr_id = _rate.id();\n params.teitem_empcost = _empcost.localValue;\n\n var query = "updteitem";\n if (_teitemid < 0)\n query = "insteitem";\n\n var q = toolbox.executeDbQuery("timeexpensesheetitem", query, params);\n if (q.first())\n _teitemid = q.value("teitem_id");\n else if (!xtte.errorCheck(q))\n return;\n\n _prev.enabled = true;\n\n return true;\n}\n\n\nxtte.timeExpenseSheetItem.typeChanged = function()\n{\n if (_type.code == "T")\n {\n _qtyLabel.text = qsTr("Hours:");\n _rateLit.text = qsTr("Rate:");\n _rate.enabled = _clients.isValid();\n _billable.visible = true;\n _prepaid.visible = false;\n _prepaid.checked = false;\n _empcost.enabled = true;\n } \n else\n {\n _qtyLabel.text = qsTr("Qty:");\n _rateLit.text = qsTr("Unit Cost:");\n _billable.visible = true;\n _prepaid.visible = true;\n _empcost.enabled = false;\n _empcost.localValue = 0;\n _rate.enabled = true;\n _rate.localValue = 0;\n\n var params = new Object();\n params.emp_id = _employee.id();\n\n var qry = toolbox.executeQuery("SELECT COALESCE (crmacct_vend_id,-1) AS crmacct_vend_id FROM crmacct WHERE crmacct_emp_id= ;",params);\n\n if (qry.first())\n {\n var vend_id= qry.value("crmacct_vend_id");\n if(vend_id ==-1)\n {\n var msg = qsTr("The Employee is not a Vendor, this expense cannot be vouchered. "\n + "Do you want to continue?")\n if (QMessageBox.question( mywindow, mywindow.windowTitle, msg,\n QMessageBox.Yes | QMessageBox.Escape, QMessageBox.No | QMessageBox.Default) == QMessageBox.No)\n {\n _type.code= "T";\n return false;\n }\n }\n }\n }\n xtte.timeExpenseSheetItem.getPrice();\n xtte.timeExpenseSheetItem.empTotals();\n xtte.timeExpenseSheetItem.modified();\n}\n\nxtte.timeExpenseSheetItem.customerChanged = function()\n{\n _billable.enabled = _clients.isValid();\n _rate.enabled = (_clients.isValid() || _type.code == 'E');\n\n if (_populating)\n return;\n\n if (!_clients.isValid())\n {\n _po.clear();\n _rate.localValue = 0;\n _billable.checked = false;\n }\n\n var params = new Object;\n params.cust_id = _clients.id();\n\n q = toolbox.executeDbQuery("timeexpensesheetitem", "getcustinfo", params);\n if (q.first())\n _rate.setId(q.value("cust_curr_id") - 0);\n else if (!xtte.errorCheck(q))\n return;\n\n xtte.timeExpenseSheetItem.getPrice();\n}\n\nxtte.timeExpenseSheetItem.projectChanged = function()\n{\n //enable and reset the task fields\n _task.enabled = (_project.isValid() && _mode == xtte.newMode);\n\n xtte.timeExpenseSheetItem.gettask();\n xtte.timeExpenseSheetItem.modified();\n xtte.timeExpenseSheetItem.getPrice();\n}\n\n\nxtte.timeExpenseSheetItem.taskChanged = function()\n{ \n var custid = -1;\n var itemid = -1;\n var params = new Object;\n params.prjtask_id = _task.id();\n\n q = toolbox.executeDbQuery("timeexpensesheetitem", "taskdefaults", params);\n if (q.first())\n {\n custid = q.value("cust_id");\n itemid = q.value("item_id")\n }\n else if (!xtte.errorCheck(q))\n return;\n\n if (_populating)\n {\n // Disable if customer matches default, otherwise default must have changed\n // so allow for editing so user can decide what to do\n _clients.enabled = !(_clients.isValid() && _clients.id() == custid)\n _items.enabled = !(_items.isValid() && _items.id() == itemid)\n }\n else\n {\n if (custid > 0)\n {\n _clients.setId(custid);\n _clients.enabled = false;\n }\n else\n _clients.enabled = true;\n\n if (itemid > 0)\n {\n _items.setId(itemid);\n _items.enabled = false;\n }\n else\n _items.setId(-1);\n _items.enabled = true;\n }\n\n xtte.timeExpenseSheetItem.getPrice();\n xtte.timeExpenseSheetItem.budgTotals();\n xtte.timeExpenseSheetItem.actTotals();\n xtte.timeExpenseSheetItem.modified();\n}\n\nxtte.timeExpenseSheetItem.budgTotals = function()\n{\n var params = new Object;\n params.prj_id = _project.id();\n params.task_id = _task.id();\n \n var q = toolbox.executeDbQuery("timeexpensesheetitem", "taskbudg",params);\n if (q.first())\n {\n _budget.text = q.value("budget_hours"); \n _actual.text = q.value("actual_hours"); \n _budgetCost.text = q.value("budget_cost"); \n _actualCost.text = q.value("actual_cost"); \n \n }\n else \n xtte.errorCheck(q);\n}\n\n\nxtte.timeExpenseSheetItem.actTotals = function()\n{\n var params = new Object;\n params.task_id = _task.id();\n params.teitem_id = _teitemid;\n\n var expense = 0;\n var hours = 0; \n\n // get the task actuals then add the current\n var q = toolbox.executeDbQuery("timeexpensesheetitem","taskrollup",params);\n\n if (q.first())\n {\n _actual.text = q.value("total_hours");\n _actualCost.text = q.value("total_expense");\n } \n else\n xtte.errorCheck(q);\n}\n\nxtte.timeExpenseSheetItem.empTotals = function()\n{\n if (_populating)\n return;\n\n var params = new Object;\n params.teitem_id = _teitemid;\n params.tehead_id = _headid;\n params.emp_id = _employee.id();\n params.workDate = _workdate.date;\n if (_type.code == 'T')\n params.hours = _hours.toDouble() - 0;\n\n var q = toolbox.executeDbQuery("timeexpensesheetitem", "emptotals", params);\n\n if (q.first())\n {\n _dayHrs.setText(q.value("day_hours"));\n _weekHrs.setText(q.value("sheet_hours"));\n } \n else\n xtte.errorCheck(q);\n}\n\nxtte.timeExpenseSheetItem.prev = function()\n{\n if ( (_modified) && (_mode != xtte.viewMode) )\n {\n if (QMessageBox.question(mywindow,\n qsTr("Unsaved Changed"),\n qsTr("

You have made some changes "\n + "which have not yet been saved!

"\n + "Would you like to save them now?"),\n QMessageBox.Save, QMessageBox.No) == QMessageBox.Save)\n {\n if (!xtte.timeExpenseSheetItem.save())\n return;\n }\n }\n\n var params = new Object;\n if (_teitemid > 0)\n params.teitem_id = _teitemid;\n else\n params.tehead_id = _headid;\n\n var q = toolbox.executeDbQuery("timeexpensesheetitem", "teitemprev", params);\n\n if (q.first())\n {\n _teitemid = q.value("teitem_id");\n _modified = false;\n\n if (_mode == xtte.newMode)\n _mode = xtte.editMode;\n\n _next.enabled = true;\n xtte.timeExpenseSheetItem.populate();\n }\n else\n xtte.errorCheck(q);\n}\n\n\nxtte.timeExpenseSheetItem.next = function()\n{\n if ( (_modified) && (_mode != xtte.viewMode) )\n {\n\n if (QMessageBox.question(mywindow,\n qsTr("Unsaved Changed"),\n qsTr("

You have made some changes "\n + "which have not yet been saved!\\n" \n + "Would you like to save them now?"),\n QMessageBox.Save, QMessageBox.Cancel) != QMessageBox.Save)\n return;\n\n if (!xtte.timeExpenseSheetItem.save())\n return;\n }\n\n if (_last)\n xtte.timeExpenseSheetItem.clear();\n else\n {\n var params = new Object;\n params.teitem_id = _teitemid;\n var q = toolbox.executeDbQuery("timeexpensesheetitem","teitemnext",params);\n\n if (q.first())\n {\n _modified = false;\n _teitemid = q.value("teitem_id");\n _prev.enabled = true;\n xtte.timeExpenseSheetItem.populate();\n }\n else if (xtte.errorCheck(q))\n xtte.timeExpenseSheetItem.clear();\n }\n}\n\nxtte.timeExpenseSheetItem.clear = function()\n{\n var params = new Object();\n params.tehead_id = _headid;\n\n var q = toolbox.executeDbQuery("timeexpensesheet","header",params);\n\n if (q.first())\n {\n _weekending.date = (q.value("tehead_weekending")); \n _sheet.text = (q.value("tehead_number"));\n _sheetnum = (q.value("tehead_number"));\n _employee.setId(q.value("tehead_emp_id"));\n }\n else if (!xtte.errorCheck(q))\n return;\n\n q = toolbox.executeDbQuery("timeexpensesheetitem", "nextlinenum", params);\n if (q.first())\n {\n _linenumber.setText(q.value("linenumber"));\n _linenum = (q.value("linenumber"));\n } \n else \n xtte.errorCheck(q);\n\n _mode = xtte.newMode;\n _teitemid = -1;\n _prev.enabled = true;\n _type.enabled = true;\n _workdate.clear();\n _workdate.enabled = true;\n _workdate.setFocus();\n _hours.text = "0.0";\n _hours.enabled = true;\n _rate.localValue = 0;\n _empcost.enabled = true;\n _empcost.localValue = 0;\n _items.enabled = true;\n _items.setId(-1);\n _employee.enabled = false;\n _clients.enabled = true;\n _po.clear();\n _po.enabled = true;\n _project.enabled = true;\n _task.enabled = true;\n _notes.clear();\n _notes.enabled = true;\n _next.text = qsTr("New");\n _next.enabled = false;\n\n xtte.timeExpenseSheetItem.getPrice();\n\n _modified = false;\n}\n\n\nxtte.timeExpenseSheetItem.setSecurity = function()\n{\n if (privileges.check("CanViewRates"))\n {\n _rate.visible = true;\n _total.visible = true;\n _rateLit.visible = true;\n _totalLit.visible = true;\n }\n else\n {\n _rate.visible = false;\n _total.visible = false;\n _rateLit.visible = false;\n _totalLit.visible = false;\n }\n if ( ( privileges.check("MaintainEmpCostSelf") && xtte.timeExpenseSheetItem.testCurrEmpId()) || privileges.check("MaintainEmpCostAll") ) \n {\n _empcostLit.visible = true;\n _empcost.visible = true;\n _totCostLit.visible = true;\n _totCost.visible = true;\n }\n else\n {\n _empcostLit.visible = false;\n _empcost.visible = false;\n _totCostLit.visible = false;\n _totCost.visible = false;\n }\t\n}\n\nxtte.timeExpenseSheetItem.testCurrEmpId = function()\n{\n var params = new Object;\n params.emp_id = _employee.id();\n qry = toolbox.executeQuery("SELECT crmacct_emp_id = ::integer AS test "\n + "FROM crmacct "\n + "WHERE crmacct_usr_username = getEffectiveXtUser();", params);\n if (qry.first()) {\n return qry.value("test");\n }\n else \n QMessageBox.information(mywindow, "Database Error", qry.lastError().text);\n return false;\n}\n\n// Initialize default states\n_hours.setValidator(mainwindow.transQtyVal());\n\n_prev.enabled = false;\n_next.enabled = false;\n_task.enabled = false;\n_weekending.enabled = false;\n_linenumber.enabled = true;\n_employee.enabled = false;\n_total.enabled = false;\n_total.readonly = true;\n_rate.enabled = false;\n_billable.visible = true;\n_billable.enabled = false;\n_prepaid.visible = false;\n_next.enabled = false;\n\n_type.append(1, qsTr("Time"), "T");\n_type.append(2, qsTr("Expense"), "E");\n\n_items.setQuery(xtte.itemSql);\n\n_project.setAllowedStatuses(0x02); // In process\n\n// Define connections\n_buttonBox.accepted.connect(xtte.timeExpenseSheetItem.accepted);\n_buttonBox.rejected.connect(mydialog, "reject");\n_prev.clicked.connect(xtte.timeExpenseSheetItem.prev);\n_next.clicked.connect(xtte.timeExpenseSheetItem.next);\n\n_task.newID.connect(xtte.timeExpenseSheetItem.taskChanged);\n_rate.valueChanged.connect(xtte.timeExpenseSheetItem.extension);\n_workdate.newDate.connect(xtte.timeExpenseSheetItem.empTotals);\n_hours.textChanged.connect(xtte.timeExpenseSheetItem.extension);\n_empcost.valueChanged.connect(xtte.timeExpenseSheetItem.extension);\n_hours.editingFinished.connect(xtte.timeExpenseSheetItem.actTotals);\n_rate.valueChanged.connect(xtte.timeExpenseSheetItem.actTotals);\n_type.newID.connect(xtte.timeExpenseSheetItem.typeChanged);\n_items["newId(int)"].connect(xtte.timeExpenseSheetItem.getPrice);\n_clients["newId(int)"].connect(xtte.timeExpenseSheetItem.customerChanged);\n_project["newId(int)"].connect(xtte.timeExpenseSheetItem.projectChanged);\n_employee.newId.connect(xtte.timeExpenseSheetItem.modified);\n_po.textChanged.connect(xtte.timeExpenseSheetItem.modified);\n_workdate.newDate.connect(xtte.timeExpenseSheetItem.modified);\n_billable.toggled.connect(xtte.timeExpenseSheetItem.getPrice);\n_prepaid.toggled.connect(xtte.timeExpenseSheetItem.modified);\n_notes.textChanged.connect(xtte.timeExpenseSheetItem.modified);\n\nxtte.timeExpenseSheetItem.getPrice();\n_employee["newId(int)"].connect(xtte.timeExpenseSheetItem.setSecurity);\n Time and Expense package 121 timeExpenseSheets 0 t /*\n * This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\ninclude("xtte");\n\n// Define Variables\nxtte.timeExpenseSheets = new Object;\n\nvar _all = mywindow.findChild("_all");\nvar _close = mywindow.findChild("_close");\nvar _query = mywindow.findChild("_query");\nvar _new = mywindow.findChild("_new");\nvar _print = mywindow.findChild("_print");\nvar _sheets = mywindow.findChild("_sheets");\nvar _selected = mywindow.findChild("_selected");\nvar _approve = mywindow.findChild("_approve");\nvar _process = mywindow.findChild("_process");\nvar _weekending = mywindow.findChild("_weekending");\nvar _showAllEmployees = mywindow.findChild("_showAllEmployees");\nvar _employee = mywindow.findChild("_employee");\nvar _selected = mywindow.findChild("_selected");\nvar _open = mywindow.findChild("_open");\nvar _approved = mywindow.findChild("_approved");\nvar _closed = mywindow.findChild("_closed");\nvar _invoice = mywindow.findChild("_invoice");\nvar _voucher = mywindow.findChild("_voucher");\nvar _post = mywindow.findChild("_post");\n\n// Set up columns\n_sheets.addColumn(qsTr("Sheet#"), XTreeWidget.orderColumn, Qt.AlignLeft, true, "tehead_number");\n_sheets.addColumn(qsTr("Date"), XTreeWidget.dateColumn, Qt.AlignLeft, true, "tehead_weekending");\n_sheets.addColumn(qsTr("Employee"), -1, Qt.AlignLeft, true, "emp_code");\n_sheets.addColumn(qsTr("Status"), XTreeWidget.bigMoneyColumn, Qt.AlignCenter, true, "tehead_status");\nif (privileges.check("CanViewRates")) {\n _sheets.addColumn(qsTr("To Invoice"), XTreeWidget.bigMoneyColumn, Qt.AlignLeft, true, "total_i");\n _sheets.addColumn(qsTr("To Voucher"), XTreeWidget.bigMoneyColumn, Qt.AlignLeft, true, "total_e");\n}\n_sheets.addColumn(qsTr("Invoiced"), XTreeWidget.dateColumn, Qt.AlignLeft, true, "invoiced");\n_sheets.addColumn(qsTr("Vouchered"),XTreeWidget.dateColumn, Qt.AlignLeft, true, "vouchered");\n_sheets.addColumn(qsTr("Posted"), XTreeWidget.dateColumn, Qt.AlignLeft, true, "posted");\n\nxtte.timeExpenseSheets.populateMenu = function(pMenu, pItem, pCol)\n{\n var tmpact;\n\n if(pMenu == null)\n pMenu = _sheets.findChild("_menu");\n\n if(pMenu != null)\n {\n var currentItem = _sheets.currentItem();\n var selected = _sheets.selectedItems();\n\n if (currentItem != null)\n {\n if (selected.length == 1) // Can only handle editing for a single select\n {\n var status = currentItem.rawValue("tehead_status");\n\n tmpact = pMenu.addAction(qsTr("Print"));\n tmpact.triggered.connect(xtte.timeExpenseSheets.printSheet);\n\n pMenu.addSeparator();\n\n tmpact = pMenu.addAction(qsTr("Edit..."));\n tmpact.triggered.connect(xtte.timeExpenseSheets.editSheet);\n tmpact.enabled = (status == 'O' && privileges.check("MaintainTimeExpense"));\n \n tmpact = pMenu.addAction(qsTr("View..."));\n tmpact.triggered.connect(xtte.timeExpenseSheets.viewSheet);\n \n tmpact = pMenu.addAction(qsTr("Delete"));\n tmpact.triggered.connect(xtte.timeExpenseSheets.deleteSheet);\n tmpact.enabled = (status == 'O' && privileges.check("MaintainTimeExpense"));\n }\n\n if (xtte.timeExpenseSheets.canApprove(selected))\n {\n pMenu.addSeparator();\n tmpact = pMenu.addAction(qsTr("Approve"));\n tmpact.enabled = privileges.check("CanApprove");\n tmpact.triggered.connect(xtte.timeExpenseSheets.approveSheets);\n }\n else if (xtte.timeExpenseSheets.canUnapprove(selected))\n {\n pMenu.addSeparator();\n tmpact = pMenu.addAction(qsTr("Unapprove"));\n tmpact.enabled = privileges.check("CanApprove");\n tmpact.triggered.connect(xtte.timeExpenseSheets.unapproveSheets);\n }\n\n if (status == 'A' || status == 'O')\n {\n tmpact = pMenu.addAction(qsTr("Close"));\n tmpact.enabled = privileges.check("MaintainTimeExpense");\n tmpact.triggered.connect(xtte.timeExpenseSheets.closeSheet);\n }\n\n if ((xtte.timeExpenseSheets.canProcess("invoiced", selected)) ||\n (xtte.timeExpenseSheets.canProcess("vouchered", selected)) ||\n (xtte.timeExpenseSheets.canProcess("posted", selected)))\n pMenu.addSeparator();\n\n if (xtte.timeExpenseSheets.canProcess("invoiced", selected))\n {\n tmpact = pMenu.addAction(qsTr("Invoice"));\n tmpact.triggered.connect(xtte.timeExpenseSheets.invoiceSheets);\n tmpact.enabled = privileges.check("allowInvoicing");\n }\n\n if (xtte.timeExpenseSheets.canProcess("vouchered", selected))\n {\n tmpact = pMenu.addAction(qsTr("Voucher"));\n tmpact.triggered.connect(xtte.timeExpenseSheets.voucherSheets);\n tmpact.enabled = privileges.check("allowVouchering");\n }\n\n if (xtte.timeExpenseSheets.canProcess("posted", selected))\n {\n tmpact = pMenu.addAction(qsTr("Post Time"));\n tmpact.triggered.connect(xtte.timeExpenseSheets.postSheets);\n tmpact.enabled = privileges.check("PostTimeSheets");\n }\n }\n }\n}\n\nxtte.timeExpenseSheets.canApprove = function(selected)\n{\n for (var i = 0; i < selected.length; i++)\n {\n if (selected[i].rawValue("tehead_status") != 'O')\n return false;\n }\n return true;\n}\n\nxtte.timeExpenseSheets.canUnapprove = function(selected)\n{\n for (var i = 0; i < selected.length; i++)\n {\n if ((selected[i].rawValue("tehead_status") != 'A') ||\n (selected[i].rawValue("posted") > 0) ||\n (selected[i].rawValue("vouchered") > 0) ||\n (selected[i].rawValue("invoiced") > 0))\n return false;\n }\n return true;\n}\n\nxtte.timeExpenseSheets.canProcess = function(process, selected)\n{\n for (var i = 0; i < selected.length; i++)\n {\n if ((selected[i].rawValue("tehead_status") != 'A') ||\n (selected[i].rawValue(process) != 0))\n return false;\n }\n return true;\n}\n\nxtte.timeExpenseSheets.approve = function()\n{\n toolbox.executeBegin();\n for (var i = 0; i < _sheets.topLevelItemCount; i++)\n {\n var item = _sheets.topLevelItem(i);\n if (item.rawValue("tehead_status") == "O")\n {\n var params = new Object();\n params.tehead_id = item.id(); \n \n q = toolbox.executeDbQuery("timeexpensesheets", "approve", params );\n if (!xtte.errorCheck(q))\n {\n toolbox.executeRollback();\n return;\n }\n } \n }\n toolbox.executeCommit();\n xtte.timeExpenseSheets.fillList();\n}\n\nxtte.timeExpenseSheets.approveSheets = function()\n{\n toolbox.executeBegin();\n var selected = _sheets.selectedItems();\n for (var i = 0; i < selected.length; i++)\n {\n var params = new Object();\n params.tehead_id = selected[i].id(); \n\n q = toolbox.executeDbQuery("timeexpensesheets", "approve", params ); \n if (!xtte.errorCheck(q))\n {\n toolbox.executeRollback();\n return;\n }\n }\n toolbox.executeCommit();\n xtte.timeExpenseSheets.fillList(); \n}\n\nxtte.timeExpenseSheets.unapproveSheets = function()\n{\n toolbox.executeBegin();\n var selected = _sheets.selectedItems();\n for (var i = 0; i < selected.length; i++)\n {\n var params = new Object();\n params.tehead_id = selected[i].id(); \n\n q = toolbox.executeDbQuery("timeexpensesheets", "unapprove", params ); \n if (!xtte.errorCheck(q))\n {\n toolbox.executeRollback();\n return;\n }\n }\n toolbox.executeCommit();\n xtte.timeExpenseSheets.fillList(); \n}\n\n\nxtte.timeExpenseSheets.invoiceSheets = function()\n{\n xtte.timeExpenseSheets.processSheets(_sheets.selectedItems(), true, false, false);\n} \n\nxtte.timeExpenseSheets.voucherSheets = function()\n{\n xtte.timeExpenseSheets.processSheets(_sheets.selectedItems(), false, true, false);\n}\n\nxtte.timeExpenseSheets.postSheets = function()\n{ \n xtte.timeExpenseSheets.processSheets(_sheets.selectedItems(), false, false, true);\n}\n\nxtte.timeExpenseSheets.process = function()\n{\n toolbox.executeBegin();\n\n // First loop through and invoice\n if (_invoice.checked)\n {\n var ids = [];\n for (var i = 0; i < _sheets.topLevelItemCount; i++)\n {\n var item = _sheets.topLevelItem(i);\n if ((item.rawValue("tehead_status") == 'A') &&\n (item.rawValue("invoiced") == 0)) \n ids[i] = item.id();\n }\n\n if (ids.length)\n {\n var params = new Object();\n params.tehead_ids = ids; \n\n q = toolbox.executeDbQuery("timeexpensesheets", "invoice", params ); \n if (!xtte.errorCheck(q))\n {\n toolbox.executeRollback();\n return;\n }\n }\n }\n\n // Now loop through and do the others\n for (var i = 0; i < _sheets.topLevelItemCount; i++)\n {\n var item = _sheets.topLevelItem(i);\n var params = new Object();\n params.tehead_id = item.id(); \n\n if ((_voucher.checked) && \n (item.rawValue("tehead_status") == 'A') &&\n (item.rawValue("vouchered") == 0))\n {\n q = toolbox.executeDbQuery("timeexpensesheets", "voucher", params ); \n if (!xtte.errorCheck(q))\n {\n toolbox.executeRollback();\n return;\n }\n }\n\n if ((_post.checked) && \n (item.rawValue("tehead_status") == 'A') &&\n (item.rawValue("posted") == 0))\n {\n if (metrics.value("PrjLaborAndOverhead") - 0 <= 0)\n {\n QMessageBox.critical(mywindow, qsTr("Setup Error"),\n qsTr("No Labor and Overhead Account defined in CRM Setup."));\n {\n toolbox.executeRollback();\n return;\n }\n }\n\n params.phrase1 = qsTr("Post Time Sheet for ");\n params.phrase2 = qsTr(" to Project");\n\n q = toolbox.executeDbQuery("timeexpensesheets", "post", params ); \n if (!xtte.errorCheck(q))\n {\n toolbox.executeRollback();\n return;\n }\n } \n }\n\n toolbox.executeCommit();\n\n if (_invoice.checked)\n mainwindow.invoicesUpdated(1, true);\n\n if (_voucher.checked)\n mainwindow.vouchersUpdated();\n\n if (_post.checked)\n mainwindow.glSeriesUpdated();\n\n xtte.timeExpenseSheets.fillList();\n}\n\nxtte.timeExpenseSheets.processSheets = function(selected, invoice, voucher, post)\n{\n toolbox.executeBegin();\n if (invoice)\n { \n // Create an array so invoices can be consolidated\n var ids = [];\n for (var i = 0; i < selected.length; i++)\n ids[i] = selected[i].id();\n \n var params = new Object();\n params.tehead_ids = ids; \n\n q = toolbox.executeDbQuery("timeexpensesheets", "invoice", params ); \n if (!xtte.errorCheck(q))\n {\n toolbox.executeRollback();\n return false;\n }\n }\n\n for (var i = 0; i < selected.length; i++)\n {\n var params = new Object();\n params.tehead_id = selected[i].id(); \n\n if (voucher)\n {\n q = toolbox.executeDbQuery("timeexpensesheets", "voucher", params ); \n if (!xtte.errorCheck(q))\n {\n toolbox.executeRollback();\n return false;\n }\n }\n\n if (post)\n {\n if (metrics.value("PrjLaborAndOverhead") - 0 <= 0)\n {\n QMessageBox.critical(mywindow, qsTr("Setup Error"),\n qsTr("No Labor and Overhead Account defined in CRM Setup."));\n {\n toolbox.executeRollback();\n return false;\n }\n }\n\n params.phrase1 = qsTr("Post Time Sheet for ");\n params.phrase2 = qsTr(" to Project");\n\n q = toolbox.executeDbQuery("timeexpensesheets", "post", params ); \n if (!xtte.errorCheck(q))\n {\n toolbox.executeRollback(); \n return false;\n }\n }\n }\n \n toolbox.executeCommit();\n\n if (invoice)\n mainwindow.invoicesUpdated(1, true);\n\n if (voucher)\n mainwindow.vouchersUpdated();\n\n if (post)\n mainwindow.glSeriesUpdated();\n\n xtte.timeExpenseSheets.fillList(); \n \n return true;\n}\n\nxtte.timeExpenseSheets.deleteSheet = function()\n{\n var msg = qsTr("This action can not be undone. Are you sure you want to delete this sheet?");\n if (QMessageBox.question( mywindow, mywindow.windowTitle, msg, \n QMessageBox.Yes | QMessageBox.Escape, QMessageBox.No | QMessageBox.Default) == QMessageBox.Yes)\n {\n var params = new Object();\n params.tehead_id = _sheets.id(); \n\n toolbox.executeDbQuery("timeexpensesheet", "deltehead", params );\n\n xtte.timeExpenseSheets.fillList();\n }\n}\n\nxtte.timeExpenseSheets.closeSheet = function()\n{\n var msg = qsTr("This action can not be undone. Are you sure you want to close this sheet?");\n if (QMessageBox.question( mywindow, mywindow.windowTitle, msg, \n QMessageBox.Yes | QMessageBox.Escape, QMessageBox.No | QMessageBox.Default) == QMessageBox.Yes)\n {\n var params = new Object();\n params.tehead_id = _sheets.id(); \n\n q = toolbox.executeDbQuery("timeexpensesheets", "close", params ); \n if (xtte.errorCheck(q))\n xtte.timeExpenseSheets.fillList(); \n }\n}\n\nxtte.timeExpenseSheets.editSheet = function()\n{\n if (_sheets.currentItem().rawValue("tehead_status") == 'O')\n xtte.timeExpenseSheets.openSheet(xtte.editMode);\n else\n xtte.timeExpenseSheets.openSheet(xtte.viewMode);\n}\n\nxtte.timeExpenseSheets.newSheet = function()\n{\n xtte.timeExpenseSheets.openSheet(xtte.newMode);\n}\n\nxtte.timeExpenseSheets.viewSheet = function()\n{\n xtte.timeExpenseSheets.openSheet(xtte.viewMode);\n}\n\nxtte.timeExpenseSheets.openSheet = function(mode)\n{\n var params = new Object();\n params.mode = mode;\n if (mode) // Not new\n params.tehead_id = _sheets.id();\n else // New\n {\n if (_selected)\n params.emp_id = _employee.id();\n }\n\n var te = toolbox.openWindow("timeExpenseSheet", mywindow, Qt.ApplicationModal);\n toolbox.lastWindow().set(params);\n te.exec();\n xtte.timeExpenseSheets.fillList();\n}\n\nxtte.timeExpenseSheets.getParams = function()\n{\n params = new Object();\n\n if (!_open.checked &&\n !_approved.checked &&\n !_closed.checked)\n {\n params.statusList = "";\n return params;\n }\n\n params.startDate = _weekending.startDate;\n params.endDate = _weekending.endDate;\n if (!_showAllEmployees.checked)\n params.emp_id = _employee.id();\n\n var statusList = [];\n var num = 0;\n \n if (_open.checked)\n {\n statusList[num] = "'O'";\n num = num + 1;\n }\n if (_approved.checked)\n {\n statusList[num] = "'A'";\n num = num + 1;\n }\n if (_closed.checked)\n statusList[num] = "'C'";\n \n params.statusList = statusList.toString();\n params.approved = qsTr("Approved");\n params.closed = qsTr("Closed");\n params.open = qsTr("Open");\n params.yes = qsTr("Yes");\n params.no = qsTr("No");\n params.na = qsTr("N/A");\n\n return params;\n}\n\n\nxtte.timeExpenseSheets.fillList = function()\n{ \n var params = xtte.timeExpenseSheets.getParams();\n if (!params.statusList.length)\n return;\n\n q = toolbox.executeDbQuery("timeexpensesheets","detail", params);\n\n _sheets.populate(q);\n if (!xtte.errorCheck(q))\n return;\n}\n\nxtte.timeExpenseSheets.printSheet = function()\n{\n params = xtte.timeExpenseSheets.getParams();\n params.tehead_id = _sheets.id();\n toolbox.printReport("TimeExpenseSheet",params);\n}\n\nxtte.timeExpenseSheets.printReport = function()\n{\n var params = xtte.timeExpenseSheets.getParams();\n params.includeFormatted = true;\n\n toolbox.printReport("TimeExpenseSheets",params);\n}\n\nxtte.timeExpenseSheets.populateEmployees = function()\n{\n // getEffectiveXtUser and crmacct_emp_id were created in the same release\n var q = toolbox.executeQuery("SELECT crmacct_emp_id AS emp_id"\n + " FROM crmacct "\n + " WHERE crmacct_usr_username = getEffectiveXtUser();");\n // if they don't exist, try the older relationship maintained in the emp table\n if (q.lastError().type != QSqlError.NoError)\n q = toolbox.executeQuery("SELECT emp_id "\n + " FROM emp "\n + " WHERE emp_username = CURRENT_USER;");\n\n if (q.first()) \n _employee.setId(q.value("emp_id"));\n\n if (privileges.check("MaintainTimeExpenseOthers"))\n _showAllEmployees.visible = true;\n else\n {\n _showAllEmployees.visible = false;\n _employee.enabled = false;\n if (privileges.check("MaintainTimeExpenseSelf"))\n {\n if (_employee.id() == -1)\n QMessageBox.critical(mywindow, mywindow.windowTitle, \n qsTr("It appears that your current user isn't an active employee.") ); \n }\n else\n {\n QMessageBox.critical(mywindow, qsTr("Permissions Error"),\n qsTr("You do not have permissions to maintain time and expense entries"));\n if (mywindow.windowModality)\n mydialog.reject();\n else\n mywindow.close();\n }\n }\n}\n\n// Initialize\n_weekending.setStartNull(qsTr("Earliest"), startOfTime, true);\n_weekending.setEndNull(qsTr("Latest"), endOfTime, true);\n\n_approve.enabled = privileges.check("CanApprove");\n_selected.checked = true;\n_showAllEmployees.visible = false;\n\nif (!privileges.check("allowInvoicing"))\n{\n _invoice.forgetful = true;\n _invoice.checked = false;\n _invoice.enabled = false;\n}\n\nif (!privileges.check("allowVouchering"))\n{\n _voucher.forgetful = true;\n _voucher.checked = false;\n _voucher.enabled = false;\n}\n\nif (!privileges.check("PostTimeSheets"))\n{\n _post.forgetful = true;\n _post.checked = false;\n _post.enabled = false;\n}\n\n// Make connections\n_new.triggered.connect(xtte.timeExpenseSheets.newSheet);\n_close.triggered.connect(mywindow, "close");\n_approve.triggered.connect(xtte.timeExpenseSheets.approve);\n_process.triggered.connect(xtte.timeExpenseSheets.process);\n_print.triggered.connect(xtte.timeExpenseSheets.printReport);\n_query.triggered.connect(xtte.timeExpenseSheets.fillList);\n\n_showAllEmployees["toggled(bool)"].connect(_employee["setDisabled(bool)"]);\n_employee["newId(int)"].connect(xtte.timeExpenseSheets.fillList);\n\nmainwindow.invoicesUpdated.connect(xtte.timeExpenseSheets.fillList);\nmainwindow.vouchersUpdated.connect(xtte.timeExpenseSheets.fillList);\n\n_sheets["populateMenu(QMenu *, XTreeWidgetItem *, int)"].connect(xtte.timeExpenseSheets.populateMenu);\nif (privileges.check("MaintainTimeExpense"))\n _sheets.itemSelected.connect(xtte.timeExpenseSheets.editSheet);\nelse\n{\n _new.enabled = false;\n _sheets.itemSelected.connect(xtte.timeExpenseSheets.viewSheet);\n}\n\nxtte.timeExpenseSheets.populateEmployees();\n Time and Expense package 108 customer 0 t /*\n * This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\ninclude("xtte");\nxtte.customer = new Object;\n\n\nif (privileges.check("CanViewRates"))\n{\n var _custid = -1;\n var _creditGroup = mywindow.findChild("_creditGroup");\n var _layout = toolbox.widgetGetLayout(_creditGroup);\n var _tecustomer = toolbox.loadUi("tecustomer", mywindow);\n var groupBox_3 = mywindow.findChild("groupBox_3");\n var groupBox_4 = mywindow.findChild("groupBox_4");\n var _creditStatusGroup = mywindow.findChild("_creditStatusGroup");\n\n _layout.addWidget(_tecustomer, 0, 0, 1, 3);\n _layout.addWidget(groupBox_4, 1, 0, 1, 1);\n _layout.addWidget(_creditStatusGroup, 1, 1, 1, 1);\n _layout.addWidget(groupBox_3, 1, 2, 1, 1);\n _layout.addWidget(_creditGroup, 2, 0, 1, 3);\n\n var _number = mywindow.findChild("_number");\n var _blanketPos = mywindow.findChild("_blanketPos");\n var _billingGroup = mywindow.findChild("_billingGroup");\n var _rate = _tecustomer.findChild("_rate");\n var _tecustrateid = -1;\n var _basecurrid = _rate.id();\n\n xtte.customer.modeChanged = function(mode)\n {\n _billingGroup.enabled = (mode == mainwindow.cNew || mode == mainwindow.cEdit);\n }\n\n xtte.customer.save = function()\n {\n\n var params = new Object();\n params.tecustrate_id = _tecustrateid;\n params.cust_id = _custid;\n params.curr_id = _rate.id();\n params.rate = _rate.localValue;\n\n var query = "updtecustrate";\n if (!_billingGroup.checked)\n query = "deltecustrate";\n else if (_tecustrateid == -1)\n query = "instecustrate";\n\n var q = toolbox.executeDbQuery("customer", query, params);\n if (q.first())\n _tecustrateid = q.value("tecustrate_id");\n else\n xtte.errorCheck(q);\n }\n\n xtte.customer.populate = function(custId)\n {\n if (_custid == custId)\n return;\n\n _custid = custId;\n\n var params = new Object();\n params.cust_id = _custid;\n\n var q = toolbox.executeDbQuery("customer", "seltecustrate", params);\n\n if (q.first())\n {\n _billingGroup.checked = true;\n _tecustrateid = q.value("tecustrate_id");\n _rate.setId(q.value("tecustrate_curr_id"));\n _rate.localValue = q.value("tecustrate_rate");\n return;\n }\n else\n xtte.errorCheck(q);\n\n _billingGroup.checked = false;\n _tecustrateid = -1;\n _rate.setId(_basecurrid);\n _rate.localValue = 0;\n }\n\n // Initialize\n QWidget.setTabOrder(_blanketPos, _rate);\n\n mywindow["newId(int)"].connect(xtte.customer.populate);\n mywindow["newMode(int)"].connect(xtte.customer.modeChanged);\n mywindow["saved(int)"].connect(xtte.customer.save);\n\n xtte.customer.populate();\n}\n Time and Expense package 110 employee 0 t /*\n * This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\ninclude("xtte");\nxtte.employee = new Object;\n\nvar _externalRate = mywindow.findChild("_externalRate"); \nvar _layout = toolbox.widgetGetLayout(_externalRate);\nvar _contractor = toolbox.createWidget("QCheckBox", mywindow, "_contractor");\n_contractor.text = qsTr("Contractor");\n\n_layout.addWidget(_contractor, 1, 4);\n\nvar _teempid = -1; \nvar _empid = -1;\n\nset = function(input)\n{\n if("emp_id" in input)\n {\n _empid = input.emp_id;\n xtte.employee.populate();\n }\n\n if("mode" in input)\n {\n if (input.mode == "view")\n _contractor.enabled = false;\n }\n\n return mainwindow.NoError;\n}\n\nxtte.employee.save = function(empId)\n{\n if (empId <= 0)\n return;\n\n var params = new Object();\n params.teemp_id\t= _teempid;\n params.emp_id\t= empId;\n params.contractor\t= _contractor.checked;\n\n var query = "updteemp";\n if (_teempid == -1)\n query = "insteemp";\n\n var q = toolbox.executeDbQuery("employee", query, params);\n xtte.errorCheck(q);\n}\n\nxtte.employee.populate = function()\n{\n var params = new Object();\n params.emp_id = _empid; \n\n var q = toolbox.executeDbQuery("employee", "selteemp", params);\n\n if (q.first())\n {\n _teempid = q.value("teemp_id");\n _contractor.checked = (q.value("teemp_contractor"));\n }\n else\n xtte.errorCheck(q);\n}\n\nmydialog["finished(int)"].connect(xtte.employee.save);\n\n\n Time and Expense package 118 tebilling 0 t /*\n * This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _item\t\t= mywindow.findChild("_item");\n\n_item.populate("select item_id,item_number,item_descrip1,item_listprice from item where item_sold = true and item_active = true and item_type = 'R'");\n\n Time and Expense package 111 initMenu 0 t /*\n * This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\ninclude("xtte");\nxtte.initMenu = new Object;\n\n// Define menu and action variables\nvar crmMenu = mainwindow.findChild("menu.crm.projects");\ncrmMenu.addSeparator();\n\nvar tesheetAction = crmMenu.addAction(qsTr("Time and Expense..."), mainwindow);\ntesheetAction.objectName = "pm.teSheets";\ntesheetAction.setData("MaintainTimeExpense");\ntesheetAction.enabled = privileges.value("MaintainTimeExpense");\n\nvar crmRptMenu = mainwindow.findChild("menu.crm.reports");\nvar orderActPrj = mainwindow.findChild("pm.dspOrderActivityByProject");\n\nvar historyAction = new QAction(qsTr("Time and Expense History"), mainwindow);\nhistoryAction.objectName = "pm.teHistory";\nhistoryAction.setData("ViewTimeExpenseHistory");\nhistoryAction.enabled = privileges.value("ViewTimeExpenseHistory");\ncrmRptMenu.insertAction(orderActPrj, historyAction);\n\n// Define function(s)\nxtte.initMenu.openSheets = function()\n{\n toolbox.openWindow("timeExpenseSheets");\n}\n\nxtte.initMenu.openHistory = function()\n{\n toolbox.openWindow("dspTimeExpenseHistory");\n}\n\n// Connect Actions\ntesheetAction.triggered.connect(xtte.initMenu.openSheets);\nhistoryAction.triggered.connect(xtte.initMenu.openHistory);\n Time and Expense package 112 item 0 t /*\n * This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\ninclude("xtte");\nxtte.item = new Object;\n\nvar _tab = mywindow.findChild("_tab"); \nvar _expensePage = toolbox.loadUi("teexpense", mywindow);\n_tab.insertTab(2, _expensePage, "Project");\n\nvar _projectExpense = mywindow.findChild("_projectExpense");\nvar _itemtype = mywindow.findChild("_itemtype");\nvar _close = mywindow.findChild("_close");\nvar _description = mywindow.findChild("_description");\nvar _account = mywindow.findChild("_account");\nvar _expcat = mywindow.findChild("_expcat");\nvar _accountSelected = mywindow.findChild("_accountSelected");\nvar _expcatSelected = mywindow.findChild("_expcatSelected");\nvar _allowExpenseGroup = mywindow.findChild("_allowExpenseGroup");\nvar _inventoryUOM = mywindow.findChild("_inventoryUOM");\nvar _save = mywindow.findChild("_save");\n\nvar _saved = false;\nvar _isnew = true;\n\nxtte.item.clickswitch = function()\n{\n if(_accountSelected.checked)\n {\n _account.enabled = true;\n _expcat.enabled = false;\n _expcat.setId(-1);\n }\n else\n {\n _account.enabled = false;\n _expcat.enabled = true;\n _account.setId(-1);\n }\n}\n\nxtte.item.save = function(id)\n{\n var params = new Object;\n params.item_id = id;\n params.expcat_id = _expcat.id();\n params.accnt_id = _account.id();\n\n var query = "updteexp";\n if (!_projectExpense.checked)\n query = "delteexp";\n else if (_isnew)\n query = "insteexp";\n\n var q = toolbox.executeDbQuery("item", query, params);\n xtte.errorCheck(q);\n}\n\nxtte.item.populate = function(itemId)\n{\n var params = new Object;\n params.item_id = itemId;\n\n var q = toolbox.executeDbQuery("item", "selteexp", params);\n\n if (q.first())\n {\n _projectExpense.checked = true;\n _expcat.setId(q.value("teexp_expcat_id"));\n _account.setId(q.value("teexp_accnt_id"));\n\n if(_account.id() > 0)\n _accountSelected.checked = true;\n else\n _expcatSelected.checked = true;\n\n _isnew = false;\n }\n else if (!xtte.errorCheck(q))\n return\n else\n {\n _projectExpense.checked = false;\n _isnew = true;\n }\n\n xtte.item.handleExpense();\n}\n\nxtte.item.handleExpense = function()\n{\n _tab.setTabEnabled(_tab.indexOf(_expensePage), _itemtype.currentIndex == 3);\n}\n\nxtte.item.checkSave = function()\n{\n if (_projectExpense.checked == true &&\n !_expcat.isValid() && \n !_account.isValid())\n {\n QMessageBox.critical(mywindow,\n qsTr("Can not save item"),\n qsTr("You must select a G/L Account or an expense account for Project Expense Items."));\n }\n else\n mywindow.sSave();\n}\n\n// Initialize\n_expcat.enabled = false;\n_account.setType(0x01 | 0x02 | 0x04); // Asset, Liability, Expense\n\n// Connections\ntoolbox.coreDisconnect(_save, "clicked()", mywindow, "sSave()"); \n_save.clicked.connect(xtte.item.checkSave);\nmywindow["saved(int)"].connect(xtte.item.save);\nmywindow["newId(int)"].connect(xtte.item.populate);\n_accountSelected.toggled.connect(xtte.item.clickswitch);\n_expcatSelected.toggled.connect(xtte.item.clickswitch);\n_itemtype['currentIndexChanged(QString)'].connect(xtte.item.handleExpense);\n_inventoryUOM.newID.connect(xtte.item.handleExpense);\n\n Time and Expense package 114 jsGanttCSS 0 t ..gantt { font-family:tahoma, arial, verdana; font-size:10px;}\n\n..gdatehead { BORDER-TOP: #efefef 1px solid; FONT-SIZE: 12px; BORDER-LEFT: #efefef 1px solid; HEIGHT: 18px }\n\n..ghead { BORDER-TOP: #efefef 1px solid; FONT-SIZE: 12px; BORDER-LEFT: #efefef 1px solid; WIDTH: 24px; HEIGHT: 20px }\n\n..gname { BORDER-TOP: #efefef 1px solid; FONT-SIZE: 12px; WIDTH: 18px; HEIGHT: 18px }\n\n..ghead A { FONT-SIZE: 10px; COLOR: #000000; TEXT-DECORATION: none }\n\n..gheadwkend A { FONT-SIZE: 10px; COLOR: #000000; TEXT-DECORATION: none }\n\n..gheadwkend { BORDER-TOP: #efefef 1px solid; FONT-SIZE: 12px; BORDER-LEFT: #efefef 1px solid; WIDTH: 24px; HEIGHT: 20px; background-color: #cfcfcf }\n\n..gfiller { BORDER-TOP: #efefef 1px solid; BORDER-LEFT: #efefef 1px solid; WIDTH: 18px; HEIGHT: 18px }\n\n..gfillerwkend { BORDER-LEFT: #efefef 1px solid; WIDTH: 18px; HEIGHT: 18px; BACKGROUND-COLOR: #cfcfcf }\n\n..gitem { BORDER-TOP: #cccccc 1px solid; WIDTH: 18px; HEIGHT: 18px }\n\n..gitemwkend { BORDER-TOP: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; WIDTH: 18px; HEIGHT: 18px }\n\n..gmilestone {\tBORDER-TOP: #efefef 1px solid; FONT-SIZE: 14px; OVERFLOW: hidden; BORDER-LEFT: #efefef 1px solid; WIDTH: 18px; HEIGHT: 18px}\n\n..gmilestonewkend {\tBORDER-TOP: #efefef 1px solid; BORDER-LEFT: #cccccc 1px solid; WIDTH: 18px; HEIGHT: 18px}\n\n..btn { BORDER-RIGHT: #ffffff; BORDER-TOP: #ffffff; FONT-WEIGHT: bold; FONT-SIZE: 10px; BORDER-LEFT: #ffffff; WIDTH: 12px; COLOR: #cccccc; BORDER-BOTTOM: #ffffff; BACKGROUND-COLOR: #ffffff }\n\n..hrcomplete { BORDER-RIGHT: #000000 2px solid; PADDING-RIGHT: 0px; BORDER-TOP: #000000 2px solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; BORDER-LEFT: #000000 2px solid; WIDTH: 20px; COLOR: #000000; PADDING-TOP: 0px; BORDER-BOTTOM: #000000 2px solid; HEIGHT: 4px }\n\n..hrhalfcomplete { BORDER-RIGHT: #000000 2px solid; BORDER-TOP: #000000 2px solid; BORDER-LEFT: #000000 2px solid; WIDTH: 9px; COLOR: #000000; BORDER-BOTTOM: #000000 2px solid; HEIGHT: 4px }\n\n..gweekend { font-family:tahoma, arial, verdana; font-size:11px; background-color:#EEEEEE; text-align:center; }\n\n..gtask { font-family:tahoma, arial, verdana; font-size:11px; background-color:#00FF00; text-align:center; }\n\n..gday { font-family:tahoma, arial, verdana; font-size:11px; text-align:center; }\n\n..gcomplete { background-color:black; height:5px; overflow: auto; margin-top:4px; }\n\nDIV.scroll { BORDER-RIGHT: #efefef 1px solid; PADDING-RIGHT: 0px; BORDER-TOP: #efefef 1px solid; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; OVERFLOW: hidden; BORDER-LEFT: #efefef 1px solid; WIDTH: 420px; PADDING-TOP: 0px; BORDER-BOTTOM: #efefef 1px solid; BACKGROUND-COLOR: #ffffff }\n\nDIV.scroll2 { position:relative; PADDING-RIGHT: 0px; overflow:auto ;overflow-x:scroll;overflow-y:hidden; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; WIDTH: 482px; PADDING-TOP: 0px; BACKGROUND-COLOR: #ffffff }\n\n Time and Expense package 117 task 0 t /*\n * This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\ninclude("xtte");\nxtte.task = new Object;\n\nvar _tab = mywindow.findChild("_tab"); \nvar _tebilling = toolbox.loadUi("tebilling", mywindow);\n_tab.insertTab(2, _tebilling, qsTr("Billing"));\n_tab.setEnabled(2, privileges.check("CanViewRates"));\n\nvar _number = mywindow.findChild("_number");\nvar _actualHours = mywindow.findChild("_actualHours");\nvar _actualExp = mywindow.findChild("_actualExp");\nvar _billingGroup = _tebilling.findChild("_billingGroup");\nvar _itemGroup = _tebilling.findChild("_itemGroup");\nvar _cust = _tebilling.findChild("_cust");\nvar _rate = _tebilling.findChild("_rate");\nvar _item = _tebilling.findChild("_item");\nvar _useItem = _tebilling.findChild("_useItem");\nvar _teprjtaskid = -1; \nvar _prjtaskid = -1;\n\nset = function(input)\n{\n if("prjtask_id" in input)\n {\n _prjtaskid = input.prjtask_id;\n xtte.task.populate();\n }\n\n if("cust_id" in input)\n {\n _cust.setId(input.cust_id);\n _cust.enabled = false;\n }\n\n if("mode" in input)\n {\n if (input.mode == "view")\n {\n _cust.enabled = false;\n _billingGroup.enabled = false;\n _itemGroup.enabled = false;\n }\n }\n\n return mainwindow.NoError;\n}\n\nxtte.task.save = function(prjtaskId)\n{\n if (prjtaskId <= 0)\n return;\n\n var params = new Object();\n params.teprjtask_id\t= _teprjtaskid;\n params.prjtask_id\t= prjtaskId;\n if (_cust.isValid())\n params.cust_id \t= _cust.id();\n if (_billingGroup.checked)\n {\n params.rate\t= _rate.localValue;\n params.curr_id\t= _rate.id();\n }\n if (_useItem.checked && _item.isValid())\n params.item_id\t= _item.id()\n\n var query = "updteprjtask";\n if (_teprjtaskid == -1)\n query = "insteprjtask";\n\n var q = toolbox.executeDbQuery("task", query, params);\n xtte.errorCheck(q);\n}\n\nxtte.task.populate = function()\n{\n var params = new Object();\n params.prjtask_id = _prjtaskid; \n\n var q = toolbox.executeDbQuery("task", "selteprjtask", params);\n\n if (q.first())\n {\n _teprjtaskid = q.value("teprjtask_id");\n\n if (!_cust.isValid())\n _cust.setId(q.value("cust_id"));\n\n if (q.value("curr_id") == -1)\n _billingGroup.checked = false;\n else\n {\n _billingGroup.checked = true;\n _rate.setId(q.value("curr_id"));\n _rate.localValue = q.value("teprjtask_rate");\n }\n\n if (q.value("item_id") == -1)\n _useItem.checked = false;\n else\n {\n _useItem.checked = true;\n _item.setId(q.value("item_id"));\n }\n }\n else\n xtte.errorCheck(q);\n}\n\n// Initialize\n_item.setQuery(xtte.itemSql);\n_useItem.checked = false;\n\n// Connections\nmydialog["finished(int)"].connect(xtte.task.save);\n\n Time and Expense package 122 xtte 0 t /*\n * This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar xtte;\nif (!xtte)\n xtte = new Object;\n\nxtte.itemSql = "SELECT item_id,item_number,item_descrip1,item_descrip2, "\n + " item_type,item_config,item_upccode, item_active,uom_name "\n + "FROM item JOIN uom ON (uom_id=item_inv_uom_id) "\n + " JOIN te.teexp ON (teexp_id=item_id) "\n + "WHERE item_type='R' "\n\nxtte.newMode \t= 0;\nxtte.editMode\t= 1;\nxtte.viewMode\t= 2;\n\nxtte.errorCheck = function (q)\n{\n if (q.lastError().type != QSqlError.NoError)\n {\n QMessageBox.critical(mywindow,\n qsTr("Database Error"), q.lastError().text);\n return false;\n }\n\n return true;\n}\n Time and Expense package \. -- -- Data for Name: pkguiform; Type: TABLE DATA; Schema: te; Owner: admin -- COPY pkguiform (uiform_id, uiform_name, uiform_order, uiform_enabled, uiform_source, uiform_notes) FROM stdin; 50 dspTimeExpenseHistory 0 t \n\n This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL. By using this software, you agree\nto be bound by its terms.\n dspTimeExpenseHistory\n \n \n \n 0\n 0\n 800\n 600\n \n \n \n Time and Expense History\n \n \n \n \n \n \n \n \n \n \n Close\n \n \n \n \n \n \n Query\n \n \n \n \n \n \n Print\n \n \n \n \n \n \n Qt::Vertical\n \n \n \n 20\n 0\n \n \n \n \n \n \n \n \n \n \n 0\n 1\n \n \n \n QFrame::NoFrame\n \n \n QFrame::Raised\n \n \n \n 0\n \n \n \n \n Time Sheet Items\n \n \n \n \n \n \n false\n \n \n \n \n \n \n \n \n \n \n ParameterWidget\n QWidget\n

parameterwidget.h
\n \n \n XTreeWidget\n QTreeWidget\n
xtreewidget.h
\n 1\n
\n \n \n \n\n Time and Expense package 52 tebilling 0 t \n\n This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL. By using this software, you agree\nto be bound by its terms.\n tebilling\n \n \n \n 0\n 0\n 396\n 334\n \n \n \n Billing\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n false\n \n \n Qt::Horizontal\n \n \n \n \n \n \n \n \n \n \n 0\n 1\n \n \n \n Use specified billing rate\n \n \n true\n \n \n false\n \n \n \n \n \n Rate:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 112\n 20\n \n \n \n \n \n \n \n \n \n \n 0\n \n \n \n \n \n \n Qt::Horizontal\n \n \n QSizePolicy::Fixed\n \n \n \n 12\n 10\n \n \n \n \n \n \n \n Qt::StrongFocus\n \n \n Use Specified item\n \n \n true\n \n \n \n \n \n \n \n \n \n 0\n 130\n \n \n \n \n \n \n false\n \n \n false\n \n \n \n \n \n true\n \n \n true\n \n \n \n \n \n \n \n \n \n \n \n \n \n Qt::Vertical\n \n \n \n 20\n 0\n \n \n \n \n \n \n \n \n \n qPixmapFromMimeSource\n \n \n CurrCluster\n CurrDisplay\n
currcluster.h
\n
\n \n CurrDisplay\n QWidget\n
currcluster.h
\n
\n \n CustCluster\n QWidget\n
custcluster.h
\n
\n \n ItemCluster\n QWidget\n
itemcluster.h
\n 1\n
\n
\n \n _rate\n \n \n \n \n _billingGroup\n toggled(bool)\n _rate\n setCurrencyEnabled(bool)\n \n \n 210\n 133\n \n \n 167\n 142\n \n \n \n \n _useItem\n toggled(bool)\n _item\n setEnabled(bool)\n \n \n 200\n 189\n \n \n 196\n 250\n \n \n \n \n
\n Time and Expense package 54 teexpense 0 t \n\n This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL. By using this software, you agree\nto be bound by its terms.\n teexpense\n \n \n \n 0\n 0\n 373\n 161\n \n \n \n \n 0\n 0\n \n \n \n \n 0\n 0\n \n \n \n Expense Item Setup\n \n \n \n \n \n 4\n \n \n \n \n \n \n Qt::Horizontal\n \n \n QSizePolicy::Fixed\n \n \n \n 10\n 20\n \n \n \n \n \n \n \n Allow use as Expense Item on Projects\n \n \n false\n \n \n \n \n \n \n \n \n false\n \n \n \n \n \n false\n \n \n \n \n \n \n \n \n \n Account\n \n \n true\n \n \n \n \n \n \n Expense Category\n \n \n \n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n 0\n 0\n \n \n \n Qt::StrongFocus\n \n \n \n \n \n false\n \n \n Qt::Horizontal\n \n \n false\n \n \n true\n \n \n \n \n \n \n \n \n Qt::Vertical\n \n \n \n 20\n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n qPixmapFromMimeSource\n \n \n ExpenseCluster\n QWidget\n
expensecluster.h
\n
\n \n GLCluster\n QWidget\n
glcluster.h
\n
\n
\n \n _accountSelected\n _account\n _expcatSelected\n \n \n \n \n _accountSelected\n toggled(bool)\n _account\n setEnabled(bool)\n \n \n 75\n 64\n \n \n 283\n 68\n \n \n \n \n _expcatSelected\n toggled(bool)\n _expcat\n setEnabled(bool)\n \n \n 130\n 126\n \n \n 448\n 140\n \n \n \n \n _projectExpense\n toggled(bool)\n _allowExpenseGroup\n setEnabled(bool)\n \n \n 196\n 25\n \n \n 186\n 96\n \n \n \n \n
\n Time and Expense package 55 timeExpenseSheet 0 t \n\n This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL. By using this software, you agree\nto be bound by its terms.\n timeExpenseSheet\n \n \n \n 0\n 0\n 800\n 600\n \n \n \n \n 775\n 400\n \n \n \n Time and Expense\n \n \n \n \n \n 12\n \n \n \n \n Sheet #:\n \n \n \n \n \n \n ...\n \n \n \n \n \n \n Qt::Horizontal\n \n \n QSizePolicy::Expanding\n \n \n \n 0\n 20\n \n \n \n \n \n \n \n QDialogButtonBox::Cancel|QDialogButtonBox::Save\n \n \n \n \n \n \n \n \n true\n \n \n 0\n \n \n \n S&heet\n \n \n \n \n \n \n \n Week of Date:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n true\n \n \n \n 0\n 0\n \n \n \n Qt::StrongFocus\n \n \n XDateEdit::None\n \n \n \n \n \n \n Site:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n 3\n \n \n \n \n \n \n \n 0\n 0\n \n \n \n \n 200\n 16777215\n \n \n \n \n \n \n \n Employee:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n 3\n \n \n \n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 0\n 20\n \n \n \n \n \n \n \n \n \n Qt::StrongFocus\n \n \n false\n \n \n true\n \n \n \n \n \n \n \n \n false\n \n \n &New\n \n \n \n \n \n \n false\n \n \n &Edit\n \n \n true\n \n \n \n \n \n \n false\n \n \n &View\n \n \n true\n \n \n \n \n \n \n false\n \n \n &Delete\n \n \n true\n \n \n \n \n \n \n Qt::Vertical\n \n \n QSizePolicy::Expanding\n \n \n \n 20\n 20\n \n \n \n \n \n \n \n \n \n \n Notes\n \n \n \n \n \n Qt::ClickFocus\n \n \n \n \n \n \n \n Documents\n \n \n \n \n \n Documents::TimeExpense\n \n \n \n \n \n \n \n \n \n \n Print on Save\n \n \n \n \n \n \n qPixmapFromMimeSource\n \n \n DLineEdit\n QWidget\n
datecluster.h
\n 1\n
\n \n Documents\n QWidget\n
documents.h
\n
\n \n EmpCluster\n QWidget\n
empcluster.h
\n
\n \n WComboBox\n XComboBox\n
wcombobox.h
\n
\n \n XCheckBox\n QCheckBox\n
xcheckbox.h
\n
\n \n XComboBox\n QComboBox\n
xcombobox.h
\n
\n \n XTreeWidget\n QTreeWidget\n
xtreewidget.h
\n 1\n
\n
\n \n \n
\n Time and Expense package 56 timeExpenseSheetItem 0 t \n\n This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2011 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL. By using this software, you agree\nto be bound by its terms.\n timeExpenseSheetItem\n \n \n \n 0\n 0\n 825\n 626\n \n \n \n Time and Expense\n \n \n false\n \n \n Time and Expense\n \n \n \n \n \n \n \n Sheet:\n \n \n \n \n \n \n \n 80\n 0\n \n \n \n \n \n \n \n Line #:\n \n \n \n \n \n \n \n 80\n 0\n \n \n \n \n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 19\n 20\n \n \n \n \n \n \n \n \n \n Qt::Vertical\n \n \n QDialogButtonBox::Cancel|QDialogButtonBox::Save\n \n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n Week of:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n Qt::NoFocus\n \n \n XDateEdit::Empty\n \n \n \n \n \n \n Work Date:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n Project #:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n Qt::StrongFocus\n \n \n \n \n \n true\n \n \n Qt::Horizontal\n \n \n false\n \n \n false\n \n \n \n \n \n \n \n \n Qt::StrongFocus\n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 0\n 20\n \n \n \n \n \n \n \n \n \n Task:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n \n \n Qt::StrongFocus\n \n \n QComboBox::AdjustToContents\n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 0\n 13\n \n \n \n \n \n \n \n \n \n Type:\n \n \n \n \n \n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 0\n 20\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Qt::StrongFocus\n \n \n CLineEdit::AllCustomers\n \n \n \n \n \n \n \n \n Cust. PO#:\n \n \n \n \n \n \n \n 0\n 0\n \n \n \n Qt::StrongFocus\n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 0\n 20\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 231\n 171\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Hours:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n Rate:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n Total:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n \n \n \n \n \n \n \n Employee:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n \n \n \n \n \n Qt::StrongFocus\n \n \n Billable\n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 40\n 20\n \n \n \n \n \n \n \n \n \n \n \n Qt::StrongFocus\n \n \n timedtl_rate\n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 40\n 20\n \n \n \n \n \n \n \n \n \n \n \n Qt::NoFocus\n \n \n false\n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 40\n 20\n \n \n \n \n \n \n \n \n \n Qt::StrongFocus\n \n \n Prepaid (not reimbursable)\n \n \n \n \n \n \n Hourly Cost:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n \n \n false\n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 40\n 20\n \n \n \n \n \n \n \n \n \n Total Cost:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n \n \n false\n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 40\n 20\n \n \n \n \n \n \n \n \n \n \n \n \n \n Qt::Vertical\n \n \n \n 20\n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 0\n \n \n \n Summary\n \n \n \n \n \n Task\n \n \n \n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 40\n 20\n \n \n \n \n \n \n \n \n \n Planned Hours:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n \n \n \n Qt::Vertical\n \n \n \n \n \n \n Planned Expense:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n \n \n \n Actual Hours:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n \n \n \n Actual Expense:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 0\n 20\n \n \n \n \n \n \n \n \n \n Qt::Vertical\n \n \n \n 20\n 0\n \n \n \n \n \n \n \n \n \n \n \n \n Employee\n \n \n \n \n \n \n \n \n \n \n \n Day Total:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n \n \n \n Sheet Total:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n \n \n \n Hours\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n Hours\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 0\n 20\n \n \n \n \n \n \n \n \n \n Qt::Vertical\n \n \n \n 20\n 0\n \n \n \n \n \n \n \n \n \n \n \n \n \n Notes\n \n \n \n \n \n Qt::StrongFocus\n \n \n true\n \n \n \n \n \n \n \n \n \n \n \n CurrCluster\n \n
currcluster.h
\n
\n \n CustCluster\n \n
custcluster.h
\n
\n \n DLineEdit\n \n
datecluster.h
\n 1\n
\n \n EmpCluster\n \n
empcluster.h
\n
\n \n ItemCluster\n \n
itemcluster.h
\n 1\n
\n \n ProjectCluster\n \n
projectcluster.h
\n
\n \n XComboBox\n \n
xcombobox.h
\n
\n \n XLabel\n \n
xlabel.h
\n
\n \n XLineEdit\n \n
xlineedit.h
\n 1\n
\n \n XTextEdit\n \n
xtextedit.h
\n
\n
\n \n _workdate\n _type\n _project\n _task\n _clients\n _po\n _items\n _employee\n _hours\n _billable\n _rate\n _prepaid\n _tab\n _notes\n _buttonBox\n \n \n \n \n _rate\n idChanged(int)\n _total\n setId(int)\n \n \n 598\n 292\n \n \n 598\n 330\n \n \n \n \n
\n Time and Expense package 57 timeExpenseSheets 0 t \n\n This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL. By using this software, you agree\nto be bound by its terms.\n timeExpenseSheets\n \n \n \n 0\n 0\n 800\n 600\n \n \n \n \n 0\n 0\n \n \n \n \n 700\n 370\n \n \n \n Time and Expense Sheets\n \n \n \n 0\n \n \n 0\n \n \n \n \n true\n \n \n Qt::Horizontal\n \n \n Qt::ToolButtonIconOnly\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n QFrame::StyledPanel\n \n \n QFrame::Raised\n \n \n \n \n \n \n 301\n 111\n \n \n \n \n 0\n 0\n \n \n \n Employees\n \n \n \n \n \n \n \n All\n \n \n \n \n \n \n Qt::Horizontal\n \n \n QSizePolicy::Preferred\n \n \n \n 40\n 10\n \n \n \n \n \n \n \n \n \n \n \n Selected:\n \n \n \n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 40\n 10\n \n \n \n \n \n \n \n \n \n \n \n \n \n 253\n 111\n \n \n \n Week of\n \n \n \n 5\n \n \n \n \n \n \n \n \n \n \n Status\n \n \n \n \n \n Open\n \n \n \n \n \n \n Approved\n \n \n \n \n \n \n Closed\n \n \n \n \n \n \n \n \n \n \n \n \n QAbstractItemView::ExtendedSelection\n \n \n false\n \n \n \n \n \n \n 12\n \n \n 6\n \n \n \n \n When Processing:\n \n \n \n \n \n \n Invoice\n \n \n \n \n \n \n Voucher\n \n \n \n \n \n \n Post Time\n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 40\n 0\n \n \n \n \n \n \n \n \n \n New\n \n \n Ctrl+N\n \n \n \n \n Close\n \n \n Ctrl+W\n \n \n \n \n Process\n \n \n Process Approved\n \n \n \n \n Approve\n \n \n Approve All\n \n \n \n \n Query\n \n \n Ctrl+R\n \n \n \n \n Print\n \n \n Ctrl+P\n \n \n \n \n \n DateCluster\n QWidget\n
datecluster.h
\n 1\n
\n \n EmpCluster\n QWidget\n
empcluster.h
\n
\n \n XCheckBox\n QCheckBox\n
xcheckbox.h
\n
\n \n XTreeWidget\n QTreeWidget\n
xtreewidget.h
\n 1\n
\n
\n \n \n
\n Time and Expense package 51 projectGantt 0 t \n\n This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL. By using this software, you agree\nto be bound by its terms.\n projectGantt\n \n \n Qt::NonModal\n \n \n \n 0\n 0\n 800\n 600\n \n \n \n Project Gantt\n \n \n \n \n \n \n 0\n \n \n 0\n \n \n \n \n true\n \n \n Qt::Horizontal\n \n \n Qt::ToolButtonIconOnly\n \n \n \n \n \n \n \n \n Close\n \n \n Ctrl+W\n \n \n \n \n \n\n Time and Expense package 53 tecustomer 0 t \n\n This file is part of the xtte package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL. By using this software, you agree\nto be bound by its terms.\n tecustomer\n \n \n \n 0\n 0\n 323\n 91\n \n \n \n Billing\n \n \n \n 0\n \n \n 6\n \n \n 0\n \n \n 0\n \n \n \n \n \n 0\n 1\n \n \n \n Use specified billing rate\n \n \n true\n \n \n false\n \n \n \n \n \n Rate:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 41\n 20\n \n \n \n \n \n \n \n \n \n \n qPixmapFromMimeSource\n \n \n CurrCluster\n CurrDisplay\n
currcluster.h
\n
\n \n CurrDisplay\n QWidget\n
currcluster.h
\n
\n
\n \n _rate\n \n \n \n \n _billingGroup\n toggled(bool)\n _rate\n setCurrencyEnabled(bool)\n \n \n 210\n 133\n \n \n 167\n 142\n \n \n \n \n
\n Time and Expense package \. -- -- Data for Name: tecustrate; Type: TABLE DATA; Schema: te; Owner: admin -- COPY tecustrate (tecustrate_cust_id, tecustrate_rate, tecustrate_id, tecustrate_curr_id) FROM stdin; \. -- -- Data for Name: teemp; Type: TABLE DATA; Schema: te; Owner: admin -- COPY teemp (teemp_id, teemp_emp_id, teemp_contractor) FROM stdin; \. -- -- Data for Name: teexp; Type: TABLE DATA; Schema: te; Owner: admin -- COPY teexp (teexp_id, teexp_expcat_id, teexp_accnt_id) FROM stdin; \. -- -- Data for Name: tehead; Type: TABLE DATA; Schema: te; Owner: admin -- COPY tehead (tehead_id, tehead_number, tehead_weekending, tehead_lastupdated, tehead_notes, tehead_status, tehead_emp_id, tehead_warehous_id, tehead_username) FROM stdin; \. -- -- Data for Name: teitem; Type: TABLE DATA; Schema: te; Owner: admin -- COPY teitem (teitem_id, teitem_tehead_id, teitem_linenumber, teitem_type, teitem_workdate, teitem_cust_id, teitem_vend_id, teitem_po, teitem_item_id, teitem_qty, teitem_rate, teitem_total, teitem_prjtask_id, teitem_lastupdated, teitem_billable, teitem_prepaid, teitem_notes, teitem_posted, teitem_curr_id, teitem_uom_id, teitem_invcitem_id, teitem_vodist_id, teitem_postedvalue, teitem_empcost) FROM stdin; \. -- -- Data for Name: teprj; Type: TABLE DATA; Schema: te; Owner: admin -- COPY teprj (teprj_id, teprj_prj_id, teprj_cust_id, teprj_rate, teprj_curr_id) FROM stdin; \. -- -- Data for Name: teprjtask; Type: TABLE DATA; Schema: te; Owner: admin -- COPY teprjtask (teprjtask_id, teprjtask_cust_id, teprjtask_rate, teprjtask_item_id, teprjtask_prjtask_id, teprjtask_curr_id) FROM stdin; \. SET search_path = xtdesktop, pg_catalog; -- -- Data for Name: pkgcmd; Type: TABLE DATA; Schema: xtdesktop; Owner: admin -- COPY pkgcmd (cmd_id, cmd_module, cmd_title, cmd_descrip, cmd_privname, cmd_executable, cmd_name) FROM stdin; \. -- -- Data for Name: pkgcmdarg; Type: TABLE DATA; Schema: xtdesktop; Owner: admin -- COPY pkgcmdarg (cmdarg_id, cmdarg_cmd_id, cmdarg_order, cmdarg_arg) FROM stdin; \. -- -- Data for Name: pkgimage; Type: TABLE DATA; Schema: xtdesktop; Owner: admin -- COPY pkgimage (image_id, image_name, image_descrip, image_data) FROM stdin; 6546 ImgLeftArrow begin 644 internal\nMB5!.1PT*&@H````-24A$4@```!`````0"`,````H+0]3````NE!,5$4```#_\nM___,S,R99@"MK:WSB;_;;::5BY(5#!6TA+3\\]/QE#&WAKO6[8^L:&2?DX_L$\nM!(0$!`P("!3T]/S#P\\2\\O]&BI*SBY.P$-,QRE/S+SM4P6:L&.9@:5L`82J,U\nM??P]:KM*>\\='6747-5XP68YJEI^BIHC9+0E7)\\Y:Z>2LMG,\nMV^T$:=@]>+@V9)A3B<-FB[:?O=VRR>/D[/4E3'(]=*Q*>:I[N?:9R_M#3%39\nMY_3:KCHZ`````7123E,`0.;89@````EP2%ES```+$P``"Q,!`)J<&````$])\nM1$%4&)5C8"`2&*+ST00,U5`%#%5M#>$`R%=1U0,"#3`R40'RC7010`TDH&-A\nM`(<6*B`M!D8(`!)@,#=2-8<#!HB(.9K#S-$%&#`$\\```;J02#'C$':4`````\n(245.1*Y"8(((\n`\nend\n 6547 gear_16 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```!`````0"`8````?\\_]A````"7!(67,```L3\nM```+$P$`FIP8```#!$E$050XC:6376A;91C'_V_>]YR3\\Y&F25JSUB5=IE/;\nM364RI]$B.*8P/Y`A0THIZ(5>J'@AXI4?B"!>.5!!1*:XFX+M',P;9>!T.I55\nMF'5C;B.X-6V:[Y-DR3EOUZLQ-N:-_B[_/,^/!Q[^P/^$7!]LGUE`H]4G\nM3SPT,>0,A/GKF7I-`D'AT+X;"B+7!TQ3"YN6D4Y?2F;)5_^%F@RDFE[$ARON&G>ZZ/H.\\UQW5Q^LE)TW%=;W:][778QKT+H(2P[HL+\nM(SW+RJA155]IA5AU2>746O_IBFJ,$,;FI:X:FL)23=?=7FCZ9Q,J+,)HA]VY\nM.8$A@Z4;7"[\\?)%/5;HA]:,2S8`JC=S(K3'*,[*E*$Y?0P*1T`[%ZZA!=R[P+&9;I"[M4E2(#MW!S;\nHD+18]\\ARY_*HQ>3RNW?_V\\I_XQ^8Q6FM@=RAW0````!)14Y$KD)@@H#M\n`\nend\n 6548 reload_16 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```!`````0"`8````?\\_]A````"7!(67,```L3\nM```+$P$`FIP8```#6DE$050XC3W3RT\\<=0#`\\>_,;V9^PS[9I;N475X%FR5!\nM0Z"Q(%!*326E28U73UY[,=&#B1=.MO'6^`_HP4M/7DR,AJ*A"=@6;+NE+=:4\nMU[Z`LLN^V0>[.^.AT>_]>_PH_)<$!H`J;KQ,2:^<=CJ[MI`(P`SP"3B<'AP:^O7KQZ9>3\\B$=*2:Z28^=PAZ<[3TN;B$`$603`!LS.S[+7V/KYVZ=H/MV[>&I^?FI=NCQO=T#$Q\\?O]!+H"\nMTG`8D6*C.%>6Y=W!"X.OG9B;GOO^]LW;?5*1;&UMD;6.J51.\nM6/MYC8=+#S%5$W>WDX*2]V:KNLSU[^Z/'K9\nMW'B\\02%?()5*04<+-=1$[6S2\\UZ(8J+,\\P3]C:$4+$L"TT5&(:&80C4\nM6K,6BQW%P`,^OX_X=H)*Z81,XQ!5LS&DH-WCHK&KD]H]Q-_IPW8VT86&$"(F\nM[+`ML_7LC:R6E4$19'-]$U$T>&=H`(=7XE0]-#9<_+1PG^3>`>.?C-(:/*%6\nM;Q9+E?(=09BCJEV]<%`]B'1&@G1:078V8IR\\:F'NGZ&XIG#_QR?$MQ.\\_]$H\nM@7D'FI0M_T(@HZFJH#T.04$;)PC"GX\nM`P&B\\6?)Y\\D7GTK=6!&<`Q9)<)>8A369MHZ\\U4`)_:R""(#2W<08@K[1,.>[\nMAHDFHLEH,OIEV8>ZQE97G&?]]EK;77OIU]SIPY3I9/QPH>H="*%DX72\nMAZ.EDRFEJ&[:VGSE`CZU?Q9`:T4C,KK?B(U$AC2Q:DMBU?6QT>](K+HFL6I]\nM8G6<6$5B58B-'D1&S>5>#IU8*O<_<7)P_W_B*_]20$A`+!):>X&2A>",UIM"D%=),)&JY6M6TT]4B1&$1E%I)6QFL@H\nMVI7B0A%NSBKY\\.+"XI-9;&U6C>P2:!A`*X52@M&*R$()1.BZ1G;X$';D<&L0\nMIGR00Z67,T`-J(+P9PH6?Y+O3PL00>#B2.FW1UHUK%;$>DBX::%.2:UT6"<8\nM,VP56A.T0EE#K"T3B6)[)VHG.MQ0T\\(%[8A1(Z@\\QU<5WGLD""H()@2B`*DH\nM4!9M3*1%;1-1VT(`,5!YF?=!=BBE?KZ`CS]X%@`OZDUQ*!H34F"\\)D'1LH:F\nM:-IQ1*M>(XEC\\L$`[QQ*"?6T1I$7E'E.ZH6==KUB%IUXEJ"\nM,0:40@`1R+*,7K]/4SP]YTF\\D`H42BB#8SK$8YG$5VKDL9\\KP'FA[R1JQ'I/\nM0P9]%$D!L94A3A%B!*T-0@)1FM0BK;-H`I7\nM[=H0C_H@"_]C!U8'^!(5W.1(S:!0..>PU@Z3K^XL'27(R'HR[S%*8Q28*('@\nM<2A4MH+RR:I%9%CQ5;L(,F2^!D%,1!6EJ!!098YHC745*NNATB:=FH6^NU"(\nM=@1YL0!][N9#]TZA%`2X3H>JWJG'..>'A[1Y/J>`*(V.:QAC4$HQ*$N*RN%0\nM+#M8BIJ4)N8R9=M6#C[UU/6)#K5UC2%I[SUF=8#5ZMY6#"L]&!246(Q5*$!K3='/\nM<'&3**HCH52SXM!*20(?1NDL8K?%%Q06'\nM'R9YZL<=M[)P8W?WVQ_>,ZJY;3$,!:@XY9_NO"M]\\TTW7;LN[3/6&J>J*E!J\nM;8!EF)6JJJBJ@B+/D1`@LBBUZFBE"&BZ+E"F;83Y!LAS^&@>1\nM53MJE%;4:BDNBAGD.2A--+Z%N6[&J<>^QN;O?(7+'[N7)3%[_^[PZ;O?>-EU\nM!0_M'PI(FF-,1,W)(IA+QQH)(\\TZ>5$0Q0F"PE4EQ2"CR`5EZ&R\\,Y3U$49-D*`D1Q0F1B\nM3BT?Y\\Z'G^:1F9S=9U=XNVMQX+)W;K^G??7HN`QFU@3$S5&BEMZ5.S;8T8UD\nM8BD6IE!`518H(*VGM-L=4##(<^:6NT/_*[!:D5A#FB34ZG5J*!:R^=4*"PKH\nMC'8((3#("P:]`85S^"`$`:,UM22FV6X#BBP;<&3F`/O3+]*^\\A!;#NQ@?^N7\nMV=>Z@4V3UVS=6)87A=">`;#O^M))[OWRE[GT3=?O*8M^?#;7'%LIV9K4J-=2\nMTK1&"('E7L;1V3.L5$"48..8.+8D1I-H18(0%1[I+Z-#("O=VJ#VBXJ39Q<(\nM2A-,1$F-TB@*"11>*/,*MY2#6Z9M8:R=\\)!\\CN6=3=-2M'S^Y[Q^>/8SNIX4_>_X>-'Q^9OG9V:IE6L<"XM/$JXN1"G_G>\nM/$LE5+:&K;5`&[)!(%L1!$]B`XW8,-8P3#1C&FF#7NZ8&O2HB##*PT\nMB:QF(0N<[3D6^HZL#!1.,$JHQPF-I,Z<$^XY_$V^D7T.%5>,A`W\\0FN4T[.6\nMYM(D*]4,G8MV7O_66V^,3AT[7=D-HS5B*UL[[?HE9XX7//G$8RS-;J2U?C.F\nM5B>.1X@CBZLJ9F>7.+TP8*E0!%/#1A%IK&G$FD9B:,5"4BX02T%N6JR4@5P"\nMCQ]?X(>'C]+U,44R3L]I>KDG*X6\\]/@JQX:"T52Q9:3.PZ>.<3`?,)9XKMCX\nM1AXY->#HXY?"X`QJ4-$YW:*?O$OF]#<#O+=,.XR_M,9XO8]CA5\nM6Q'YBL'L(HM+7196K8Q"/6(@%\\&#[)+O=SEJ9FF#M^B(4STPR\\\nM!0)']A5T)C8SONTB.IL;2%0GG'N,D$`(GD%1T5WJ\\\\3CL_CMM[!K.B4_\\2B'\nMK]Q,O]K+2,M3FD.4Y3J63AS<_,@S,]N5-J?L0_=^'1$9L4G=1O46QECZV8#H\nMR'.(LG@,*JJMDD[!!A"/A$`(@A<_I]9/47+*1RV5L'*/,^U15%^\\E/=Q;F>>^L>K[]\\\nM+P_>?C-ZTS_"]-F6_/&O_XM<-K;GJE/S;"\\7E[^[.'4H=)@,13$65!F+!"4A\nMB(20B\\A)D&4`-7+#NY$0(A/7)DU<>X.)TPTF28V)Z\\XFZ8R)TQ,ZJDV;N)F%\nM*N?@9]_'JX;:7T#^:<-O?N.ON/'B.R:G5Z);JJ7JU#//W+%/3GQFTP43&UPQ\nMV.J+P80O,^.+@?/E8-J7^9'@JRF4\\J\\>F9>-F^$K`C?^VV_QB4,+]8\\^)>_Z\nMP(/R.[=^X0OPNZWUXQ]X25%>UHNM5P\\WP-[;86;J"GY[SQ>)DTM^Z<19+JS.\nM?._^^[[S>ZWVNJ,'#OSM2XJD__HP<.?.(EA_JI]T*O.=K_`$`_2"L_`W<\\M7W<>6V]T>'Y]6U55=\\?_J?[WO@\nM2Y]OMY_$^_]X62'-:T3U9^`&^*./@_G%O;QMUZ=UMQJ[;F:.#7[VG@?W[?_(\nM^O4[N[.SGWG945^W&;"[_Y3&_H/,U\\T1ZYIJ%IV?8YO+YYYY[]O;;;OOS\nM)S_TES<#C[^BV*^+@&:SC3WQ[U%K8M/NF\\IY%CO^]'W?.G''P:>?_?HCCWZ'\nM5TH>7B<+Y45)M]L?[76[VUU5?,OJV7<>?/;NS_W*KYWU9?F5_U/LUV6(9\\].\nM<^+HH=&JK*:5MG?5FYW#WW_H`9X[//UZI'_58'@-"O;?<,`@#IZ3WM$`````\n(245.1*Y"8(*5\n`\nend\n 6558 accounting_zoom_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```-+$E$051H@>V868QD5WG'?V>Y6U5U]3K=TS/M6>RQ9\\`#\nM>,!@&Y(8BQCR@,.2C22*$B4((@@O(!(B$2%")!+Q$!*41#R01$0()7E`H("8\nM$##&#C:#E_$,P1Z;V:>WZ:VJN^K67NX1JNX1JNX1JNX1K^_T+].,%?NM`C"$ELU.[8ZGV)56.)42JVNDJL\nM6K%&S7MAY9%!51S)8O8G!H!Y%W!*D2&9"S)=.=E=.9DJ?8@J)U(Z6:]\\.%LY\nM65"*^NX]K?^Y@(\\\\N`*@M:(9&=UOQD8B0Y98-9=8=4=L]#V)52]/K-J16!TG\nM5I%8%6*C!Y%1JX67IRYTJ@>/7QS<^_6G-QYO)-;<>7#LI4?FLKMVMJ/;"'*@\nM\\C)9NI"53E3EA=*%LJQEN?3R4.G"YTHGQRHO"\\Y3]DJO*R_-(+(%R'OOV/$L\nMOO9[!80`P*S2?`RH7`C.:#4;@KI)A)U6*]NPFD:D2(PB,HI(*V,UD5&T:\\7U\nM(OQ"7LM[-M8W3N:QM7D]>EB@:0"M%$H)1BLB"Q40H1L:V>]#V%_`+P=AP0=Y\nMJO*R#*1`'81W*MCX7K[/%2""P,%(Z==&6C6M5L1Z2+AEH4%%6CFL$XP9E@JM\nM"5JAK"'6ENE$L6\\L:B>R0(*@@F!*(`F2A0%FU,\nMI$7M%5%[0P`Q4'M9\\T'V*Z5^N(`_O?\\R`%[4K7$HF]-28KPF03%B#2W1M..(\nMD49*$L<4@P'>.902&EE*691414'FA0,-RU2F26/%GKA$]7I$(PWB-,$8`THA\nM@`CD>4ZOWZ16)@0M6(4X0H05N#D&"T!J5HVQSJ<.3P3#SN\nM@ZS_P`IL-_`A%=SNT=2@4#CGL-8.)]]>LW24(*,[R+W'*(U18*($@L>A4/DF\nMRB?;%I%AQK?M(LB0^54(8B+J*$.%@*H*1&NLJU%Y#Y6U&$LM]-WU0K0_R+,%\nMZ"LO[SZZ@%(0X#8=ZL98(\\8Y/PS2YKMS"HC2Z#C%&(-2BD%54=8.AZ+KH!.U\nMJ$S,%:[;B2=(^&X%MDL@(HA2#$33P]"W*06&TB04V2B%3AA)#";4XT%XF8CP\nMGB\\N/5=`$.@.?!P"+X^EIMW,**L*8RRBU%7/7DF?5HJJJJGJ&I0>KBPB-!H9\nM29JAM!Z2N\\+^F>_?S?W08DH3)PG66JRUPR;7AJ`T+GA:64PLM0I!;CN]5JOP\nMC'&N"JC*$N^JG=[[PTWMR-*4HBB(XG@XU96FNR)$*1I::$A-2WE2!4HI7%F2\nM]WO;=GE&/&K;3J!0H!0^!*K:X9Q'UQ6^NT;5[U^=-X2`HX`X36F46T3%\nM@&477R5\\M7FW;=/=W&)^<9E+EQ;I=+HX[XF"8RH6]NR:9F)Z)R0)J89@(Y2V\nMC"7@\\_)Z5Y0''*P]2\\#^W_HP^\\QVPVLMM=MQ3#3\nM@T%)A<58A0*TUI3]'!>WB*(&LMJY:B%!0"GJNF9A>95CWSS.HR=/L9&78"Q&\nM@2\\+M"N9G1SC]I>]F)>.3J%[G6&UM&4BBW`+_;'^YN9MXSMFOS'UNG>P>O1O\nMAP)4G/&7'_Z+[,Z[[W[%9-9G8F2*NJY!J:L-+$J!"'5=4]?XQ'SBQQ_>$7.=(TP85`412L+RUR\nM[L1C?/;?OT:G"MQYU\\\\!8$S$1+6*KM?9ZO5N^]1;]YOK?OU#_FH%DM8$TU%K\nM=QG,"R>:":.M!D59$L4)@L+5%>4@IRP&*"!-$[*L@;4&I4"KH36<,OTK?[8C;4\\N7140M\\:)1O3APC%CQW>2\nMBZ5<7T`!=56B@*R1T6Z/@8)!4;#:W1KZ7X'5BL0:LB0A;31(4:SG:\\-SE0A5\nM53._L,!#I^:YYTV_R('9";;*BK5^07=0T4HC6EE,,XO9.=EF)/UY_O,+7^3A\nM8X\\P=]T6<75EFLP:B!!O'Q+$E,9I$*Q*$J/1(OXL.@;QR\nM5YN^JAVG3I]G9/8Z;IR;HE?6.`P=IW%12J$-OH)>5="P,#XYP0TO.,13CQ]G\nM:7&9O5G&@HM8*Q1E'5K-R5TO+S;7OG;/)\\]CQS+#6]_VV\\W_.KWXBI6%+B/E\nM.E/2QJN(B^M]UGIK="JH;8I-1T`;\\D$@WQ0$3V(#S=@PT31,MV*:69->X5@8\nM]*B),,JR7L+\\Y75F]A^F]$+NAL]*#K4H&HFFE5J::40IPGJOPKCQ)'%U34K*QWFUP=T2D4P*3:*R&)-,]8T$\\-(+"35.K&4%&:$\nMS2I02&"M5S,H*ZK2TQG4=`M/OQ96^YZU0<"H$D.@&2DFVRF[)EK$K3'&Q\\$L(GL>*`[32F.\\LK;`Y.$#EH?80:75UAZZ\\(^]7+%Y>1^UNTZJZQ-;2KV)<\nMI5GI.1:6+U,GDW0NGMKUS5-+^Y0VE^P#1S^/B(S:I&&CQ@C&6/KY@.CT&419\nM/`85I=ND,[`!Q",A$(+@10@R_*V+@FJ04^0YG=5E\\JTN(0B/CPIO?,7-'#M^\nMCK,KAYD:;5$XH7!A^WPTW*X5PE0K9B*!I\\BUYG%>_.\nM.(-!]\\\\%C_\nMUB.'MWKYH#>_UMOT0:HXCHVV<:N1)CMNF&JW.Y<78[.ZR#?/KI(SBL_7\\.7P\nM\\N3+G%!7&HA$!#L\\X(<-D7!6).PDA`0)"@DB(90$OR82GI+@[Y,0[I7@GPS>\nM=4)5U]4@Y_[WWR-%WM_MO7L1,*>4DLU>_VQGJ^=N\nM.;3O(YO'3ESW'Y][>KF.DC.^'JPE4O>.G-^\nM88D)@$DDQ")!20@B(10B3G=KMJKK\nM./@@(&5=54_V>MV+49R\\7@_Z7]WU]+%W?/3$J>_<#CST`\\;]B0FX@K?_P7LI\nMBMSLF-FU*_AP$TI/]/LYZ^MKB^OKZT_,WGBHOFO?]-_?F(5?.O7/__CT\\7-+\nM[_Z].V[YMS=^^@M.]Q,7\\*.P\\%?O9V6C^QNS1>>3YT\\\\;KX]?L,3]S]R\nM\\BT[Q]HG/O'0HRQ^3[SYJ;#\\(;CEW".<.?'8^\nM!Q_^T@LFQ_*3O?Q9\\<\\[`9V\\Y@UMU[]8\\<2H\\J^9Z*U.J)U[#MC)&?.IQ[_]\nMU9_)8G]Z^ZX.ST,!YVJP*/[D9A:^OJ96)ZE?.^H&B=ISTTLFHV3AD^6.F6C-NZY59FB0RN^_(Q_[PCQY^W>%#%^X]\nM/T_@>2H`X"M;\\-Z=*ERH.#YJY(4SQ<;!9')FM&Z-'_S\\EQ_X\\HNSN/N$\\\\]?\nM`0"?[<([I]5@H58GV[A7-_OK.\\YY>UT0B?YI;>OH*PVB?_0P/UU\\L0NO'K??\nM.E6H]Y_7C8W](]&9O9&['PA:/0_W@>^'#QYHTQ<=_6Q;OV:/+RZ\\YT3^Q)L3\n>Y!WE3YO9_P'^&ZX+2WXT43Y:`````$E%3D2N0F""\n`\nend\n 6559 availability_write_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```*PTE$051H@>V8;8Q<9W7'?\\]S[YV9G9E]F[4=;^QL["3$\nM&+!#&DN.`(4T2MK05OD"K5"J"*$(":E2D2A%02!0O[2BJBHAD*`2;47:2D`+\nMI)&B"HNF!1+L4MMI8LC:7GL3>]>S.SNS.[L[;_<^K_UP[^RN\\0;B-62_^$A7\nM<^=JYMSS?_[GG.?\\'[AI-^VFW;2;=@,FMOI'?Q*`>X#W$>!Q@`-GP3IP+ONT\nMU]X[!]:"L7CO>1XXM^^#6XLCW"H`YT`('HH3_G;J,F@-HK\\Y7"3,E^@L\nMOL9P90RE>OADA>)@B;C3(A="(&/*I8"<:^),O`[\\K01@#.!!*]BW_^W\\SA_]\nM->=_\\B5&*CLI5-[.I9-?9_RN]]!>;="JGF!DYVTLSD\\3TD$`411BS0K6;#WX\nM7PL`ZP"?$+>KZ*2-BB-$>PZC8SKUEUA=?`W56J#9?8EN)R"?'\\#I.L71.Q!6\nM8C4W4(DW",!GA8F+T9U9C&IC8K!)G:1]A97><;J='H2[D#9&ZP%D('`:K`O!\nM"(QA>U)(:_!!VDV$2U"=*QC5IE/[&:IS`9T,X?(.Z\\`;@12@C4!J@==@;8`W\nM`K/=#%@+^!C5OH3JUA#F$E9WL'888_M`!0)0&F0@\\"9EP-N4@6T!H#6XC`%<\nM0KMV@FYSBK`H,3I=;2,S`%X@Z7>N+(5L@#,B;;]R&P`8D[9VK4'WFK1KBR@5\nMH7,AUH#6`BW3`#T"Z5-0H>G70(`U`KU=-;`QA4S2)NF!UB.8+*\\W,D`?@(8H\nM6B]B8^7V%;$QX&0*P+N,"9,%KD%;@9;I,X1`.E)P1F`U.!=@;UE=>"5E\nMP&T3`(!00&409.`8*R_CD81Y0<[/XA&4!R3>S^"E8#"_C-_YM!#LP./=1H'2%R8>M[K"X4Z'HU<]SWZG%*_.SO#E("`\\\nM>)`_CR(F^G[ZE_?XD5%^-#+,>>N0=H/@V2!^A&J)>O78>VN[YN;'H]K%9_??\nM/_["%Y^K\\M3<)@Q8"T`)^/`K4TS,SD,0@!02*1Q""`(A$#@0DD!Z!!XA`J2P\nM2"FI#(6$4E5'1_G'`PGODC](I'"\nM$PB@,$AC?MCLS0^S<_7ET`J_]ZEGJL?O*6%A$P#]U/`>7CX?<=O!)QG(1[1K\nMI]EY^WTTY\\\\2R82!H5TTJY.4A@:QWA*O+E(J!7B["@%H-8]2"*T!#V>F!/F=\nMCS.V>R]+K_^0L?U':"U=QB=U!LIY@6!\nM7::\\ZR`B7F!H,$"I#C*1#(1=G'!X\\FG/-]E.["$*!`<./<#XQ&%>-]/L._0(\nMC9E3),N3C-UV!*F7*>9CO#?0E=BBY=4#=S)GQN.E]_']XN'DLJ##^R]\nMXVA-DZR^3&^Y3M!;)8Y;\nM:#^.4'5$6"(JE-+=6*_/3'C0O3IQ:S;S-8/J-DA:518O?IO.8A5R74S2I&-O\nMX<>WEI@M1;3;<_SVQ.T\\^(=Q\\^_TP(F[@\\I'N_KU9T/-_*],(8''Q'6\\#+"F\nM1[=^DD[]-(&M@ZZA5043^G2EO4!*D`BL#;)-;0,`/$XMH;MS6)/06SI#N_93\nM;*^&6:EBDB%L('$63NJ8;\\=@STXRXG9Q>&C4_=\\Y-?N-[?_F!,R3FZ5]>`_U5L[T%E%K&Q"N8H(6U1;01D*6(#K.=5P@"\nM!X$46!=D$^GZJ`%@U2*]Y@HJ;F*B5:P-P`I<5BM&P7]4'^;"^.=YU\\P)DIE3\nM+!]J85;NHF"'O[4P>?'9TV,/>EW_S%J\\O[2(\\9YX=8I>\\R):ES`^'=B",%55\nM2@M,E,TX2`(!7DJLRU(HJP'GLGFI/-P1@'6CMZ#0F44F,$8-H\nMGW46D^I:W11V^:`>\\S\nMR9AU$RT%)IO[(YLRT.\\TVH!!H!T(*[`N?:FQK+V\\[\\N1+80$HQTGFD?YSFU_\nM1KZ>\\)ZD3;GY'<:'?XCW$FT$S@=KF^'U,>#7&5`:;)#1GK4[F^E>K5.!8A!H\nM"X%99T";+.@,@"%CP`NL]+R^O)=_&GV2MA[BO?4:M[@7F(C^A5PXO":$G`\\W\nM["77"6!-:2F!C20Z8TAKB569A`S37F^$(+!@7;9JFW0ADTV8!D&]-\\(W"Y]B\nMH?(V]IZ:X4#I"GO\\TPSEE^FH47)2(,D`Z*T`<%`L%BF7=U!P$3[<28X"H2F2\nM+PSB5(62KU#,>T:4PN=VD^-.\\L515+=V51=R#O+Y`@/%G0@1$IG=/#WW""_O\nM^WU*IZH&/PSM(IYW5'\nM^$6+A1_5CI:^?_L303BUQ%&]ZO;GO]N](_>LZRX&."_Q_@+*"9R7)+W5P%@Z\nMWF]>!=?J@;3:%[SG">=,WEKSBP+C*M%A-WF&0'A8QJ&=PSC/GSAKRWG?-5\\Y\nM\\_A#Q][UB2_HAAZX?[G)#M\\X%G1?_"NAFJK3OMI7%HOPT,&SLAF`&SA2NCX3\nM[_X642_>IQZ[[YO!6/'HD8MSW*T67CUYXN2'1RN[SOSD^#>`T]?M=\\N:^'KL\nML0\\]@;MG#^/ZXA/_-W#EZ-*DYW83+TY/7_C,QS[VIV<^^:E'@9>VY/LM`5`N\nM#Q%>_K=H<-?X;SVB%FF.V"O/'[O\\%^9*O!`]S`D=*;MSA1M%J=\nMT7:KM<_HY%@HZQ\\\\=^'+7W_X]Q:L4L_V9:8PEUU7'?_=6U:NWK]T]O4S/]&SVC)UX\nML"4GD`1%(;%C)R`%L@F2*"#$$D4("80$?$!*!)&"!)'"MX0/@)`04@((R&9C\nM0SP0X\\0Q\\M:U?^TKO_8T^5JLVD_^V_N#,`I`0<\nM0>B)XE(S)/#`6##.8:W#.+"6/;;#.(>Q670"TA:.2;C(OUNOOSR\nMZMI'PV+E$:W5WVRNK7Q^YM$_N+G^[2_#>/,V`0B!`_*^X,&E(K6BC[$.;1W&\nMI/M$&;1Q&)LZOFMG]UEVCHTE.^LKPP&R>V>FW4"I7'KIRZ?R?]SI;OW+B\nMXW_W($FM'\nME%@B;8F4(U*66%DFRA&KW7/1MITH;%_P4$$QG7/PIF.4*Y7WKZ_=^G@^'WYQ\nM\\8^^QF.???\\;!2!V``C`461US><;3X\\Y-\\S1N+N!7PX(/$$82$(#"(MS,DUT\nME]H`UEEP$D=VW4&J80&3VCZ^_)WK5/6`N_:UJ$C?\\^?F?BE7*/_MK+/MQ]YH\nM!#R9RJ`4`B$$*YV`KYQ:HUT(X605<7<3OYPCD(*\\+\\GG'`()6!`R>\\L>6VS;\nMV5ZDUUVIS$CFF"YH'CC1X@=7-UE?Z1P.HF@1:&_[\\X8H!"!$JDB]6I'V_CH<\nM;L#^*ARNX9>V(R#(V]0YATR+`WM`9)$0;$Y7,':(MP>@.TD%@@!#Y_(\\S-&9[.6\nMX%R"F3AZSN$C*#J',:"MS>0TU7XCT_J@<1@!QG,8/U6B[;IAK$-(#]_S\\:3`\nMDQ+/DZ_PY\\>OQ`(@E5!K+!>WUDCR);0AFSU+H@S]=H>@TLAD$D;]'AH/Z^=W\nM9C_N=U%>B"9(HZ,->M0E#JHD&F)M.5'1/'S?$EY&V5>/'S^)A<")-`+@P/,)\nM*E4P8+1#:(N+-2J8(/)EE(;8."9>C,;'^D5B9XEQ3!BC*)*('#$6Y0Q*CYG(\nM(HEQC+5E48_PI<"3(OO-VP0@)3C'3@[(R1B_O4D\\&%`K5;"`UH:<&5)S>9P$\nM*V&0C_`\\CWQ1HG1*D38*@@B\\K,AIP[B@*%05V@J4MA2LP_<$GB=V!.3V`&1U\nM0(BT`RWZ`=5B`3L:,ETI(H1`:T.H)DPWRP`(!!VI"0*?4KF"L1;K8%W&A(4B\nM?A"F55AKML*$:J.*L0)C'8.>3?DO,@"O`G%;K00(G',XY^AHR_I0H2W$B:;3\nM3@C-9*=5&'9':.%!8$FT)3$PZ?;1OD*+7'I.&=2@3Y+S2$Q:G>^O)WQDO\\23\nMN\\)Q^P!$JN9"@+&6)$E`:WRCD!:PAM!IBBBT`",!SZ0J[QNT<&@/1CF+"RQ6\nM9M(:.";*X0HIZ%@Y:B'XGL#/>J_;!R!%F@.9(N2"@%*IQ+[RF'U3-804&&/8\nM##2SLRT`A)"T.SZ![U.I5'#.(85@?<.G4BX3YO-HZU!*L[8>T&S-8!P8XUC?\nMW,239!'@#E(HFXHXCAD,!JSUAVQY(=:!4H;.5I>KB9_I.0QZ79`^7CC&&(MQ\nM,.AL(<,!>"':6!)M&'?;R))"&4BTY4!!\\=ZY^52%7B>+;ZL;%4`NEZ-<*B'S\nM(\\9!`6T@-HJ^R!&[@,1";`1#':"=AW,^B4JK[&3D86.)$H)(R;06]`7Q1)!H\nMF"0"?P9R=Y1">U2(+`?B)*'D-(N!1882$TK:B*<4*34UXFHX)!=T(A\\?`"G:W<#-WVA!4UPEA0VE+W%,=]\nMN9,#=RZ)A<@H%%*N5+##,5NY(LH((JWIF!'K<6ZGB1OV/93PL1./1(F46CT/\nM+2'&4I`6904;ZX8H3&5V%&G>/6=XCY_V07>(0G(WB85`*]Z2).8GK9(8VE?E!EHA]6&,W._SVKCDRAC\nM&'8CE(D8W#C-:&69%R]=Y]CA)4Z_<(ZGG_X.LW-SU!M-5E=NP*5+A$&.TR]=\nM1'SS%%O],:9Q5Q8!]UH`UJ0S+02-1''PZ_\\)PU%6/*2'YUDD#B$DOB<0H@NN\nMA^\\)I+0(P),^4FB$@$:]1"T_HN@&-*3".$,@%1HLWK^F\\P>O!5*@([;%,H-='R!@]4";UZ:PI..*U?'G%];1CB7RJ\\Q-%I3+,PO4"B4\nMN')]!7/E.M+S.;ATB&O7EM,6A92Z[>LOTJKNI]RC5B^?IV#2X>8F9FF7J\\SBA3-1IU;JRMT-FYQ^-!!]C7+Q(FBO;4)PP11\nM;+P6P*LC((7%Q%LH`=8DF+B+-3$Z[C%<.X^);S(9>,A2`^P`K24(@42D_W=:\nM'Z7A:*W(U-$I7KJPR>/7+V.,IEJI4*O7.7)T"L\\+6%Z^ROSL#"MK&]0;#?J]\nM-ICQ_^BR]\nM48S,E8BC27&PN?+.A]]^/P^\\_5V[`,P>YVU&(1-OH2?K&!TQ6'F2J/,BUABL\nM$UF9SYS6H-4>6XL,`#@GB!/#J5/_1:TUR\\*!0Q1+%02",V?.L+:^QN*!`R0:\nM*N4BI4(>9>#@TB$VUC<)P^?8:-]0VJM1J>YR$]CVJMSM;F)J?/G$$X0ZE8($EBK#442V5:\nM^^9':S>OZT&_^_H4,@8\\`3W-JYM![/O"+LR??^M.OHT(BM<$PVCQ#,MY$F874V;V4\nMT2F%C!:X[;S1`NW`.($ES0$0_.#,"UR]=HUZK88)),XH>KV8>JW*!W[N4=[W\nMZ",,^SV,L4PF$Z:;-3[]:Y_D7_[U:\\31A%ZOG[8UR00UF:"2Y)CO!^^M5&M?\nMNN>!G]P3`;T;`:PF'FWMS*[)Z*$,:+.'0GMHLWW>:'`NP!C!<#3A\\2>>)!\\(\nMYO;-,EV?8G9V'N'GN+&RRMO>^B`GW_PFK+5[)GQ\nM5&GV\\#Z+@-+@&9$I4*I"SDK.G#G'C94&,FKQW%>[V-$(5QS0O,=2;NYC?;.-\nMYWF4RV7.GS_/S,P,@\\&`^?EYE'&46S-T;RDN/WD#.:[A%2VM>^LTFZVWOGSU\nMPH.^M/^^F\\1[BD,C"[D=M5(4=:!YYY[BS]+[^/D2`(U&@_ONNX]ZO<[,S`RU6@T_7Z:]UN?L8]>)K]0I\nM=4]@K\\UR_EN;V*A0G9G?__X7?O#L;B'+FCF,SB*0T4%G,ZM?;6=.;^<`1N!E\nMB>OPB6+HC/.L7%Y!,LW"T1K50IGBJ$9[V7'YS"76-S8`.'+D"$HIQN,QM5H-\nM@(W-32Z=O4!H]C-_I,Y,N7R*K6#]7N$$/D=`,YE`#(*F8SCR@B,\nM?KV93@')[#Z,P-APX-,V1MW@4\\A&-48X5*]A83;\\);X\\@\nM"*C5:NEZ&Q@.^HRC+K/[%SGZ8)YZ)2+1@@U/<*77`YJ)[_MV1X5V(I`!4/I5\nM_%<9;;3(J)5N0H-2($QZW@F1BIN#Z7J.*#.Q8M=HMP6M>D2\nMNN4F@'19/S]G_WH\nM+R>OH9#6(&6`\\')(P+,EI&^0.4-`%2^7PPO[!*9*4&@BQ(`0GUQYBGS80\\@`\nM/ZR@C6"N&7Q'>.P/:^&!YZ^>Y>;@%IL;FQ1;>;9&^GQS[M#7-P;::&-VOB%;\nM!T)8*C-+TCG[2+%9O/?BZF7Z=D2GVR77##"WU+5AI_]/PT%_5X6<26/G+.R;\nMKE`L-7#.HXJ/+ULXUZ)&B.\\%N$:%I@N07@BNSC0^PBL@J2%D0'_C`O$DHJB>\nM_,JUJ_=>C::K?]:HE0\\[IQA/NN["BV=/KZ^M_O9O?N3=WZXUI[EU8YF](Q?F\nM"?,%M%;_.![VOEBKEN^WM(318VY>O[+<;K?_%(^+(2;'HW&-^)H\nM\\DU@64B)LY8?-M*/6>Y`+LP_4BJ5%AUL&>,>SX7!.:.-Z[8W4P#?^MQ.$I>L\nHI?0:I]Z@#0R!\\6]\\Z8?Z^/_C?P$6V;R).I+A9`````!)14Y$KD)@@MQ.\n`\nend\n 6610 order_write_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```.Z$E$051H@=69::Q=5W7'?VOO,]SY^;[!0VS'CA.,(P(D\nMII`RB1(2:$I5BA"@ME2H:C^T0OT`J!65`*ET4*E*D>!#I4*A!3X442I`A:0A\nM`P14(!!*%-+82?L<^Y=_[W^\nM:]H'_I\\/^45?^/A=:PCL]2$<#('@`_@`(00*.>"!X-F\\#N$\\,A!\\\\8YSCM%H\nMP'#09S388#SL;XP&@\\<:2RO9=S[Z]N?4)[H8Q`)O%Y&_\\B'X`$`@`&'^1`BE\nM3#E['CELR:(4:5K%5`PF-^33\\;A:K7SKS%./?UK?\\#OWUEN+^>#;G[P\\`)0"\nM`G&JI79P,276X#RX$/`^X`)XSS8YX$+`^=(Z`5RY\\OX9[\\7D2PG328U!O](X\nM<7KUG6FM^:O6FL^MKY[ZZ,Y;_^SDVK<_!9/U2P0@0@`JD?#R@S46:A'.!ZP/\nM.%><<^.P+N!\\H?B67#[GV;QVGO)>P/D$ZVK,LA;W^1G[&GL7JM7:'_\\L28]T\nMSI[^H[TWO^=G)[_VM\\#T4@`4IE=*4`(_^-[CG#C1QZ.P+@))>-5KKJ#>BNF9\nMP-0&C"L.ZSS&!7(7,#9@W=9<[K9=YXX-XSBZN\\+NE5=0;S1O>?RQ8W^_T>O\\\nMWK7O^LONPU]X_V4`(`4][K[S.$O+39YZ,C;[Y8`+()0(!`C=.K$;=];\\+_C!+:+VP3-6)B+:2Q(G6`>$)0\nMA:.'0@;PP4-0!,KY`$4,BYDN[.)3__5S6G;(X5U+-%6DHSU[?CNI-KZP._CN\nM'1=K`:V*,*A$$!%.]6+^[3NK=*LIO+2%O'"1J)$0*Z$2*2I)0%"`!U'EKVR3\nM92Z79RGF0[W!6"6L5"U'KUWB)T^LLW:J=RB>S?8#W;D^%T4A`)$B(FTLU.CN\nMVP&'VK"O!8<6B.IS"P@57R@74$5R8!N(TA+"W"KE?!E??4BH-FI4TIC6CC;5\nMD:0FGU5E6_JZ*`H)H:"0".]ZZT&.OMZB%E)",Z76B-E;%Y((KJS"2JP*)[7%\nM84I'-K9TYDW98VS8YN2>W`7JD2*)%'&D:32:>%^#2P,P=V)!!-YX;86;G"U7\nM+2>$'#<-;(1`A%`+`>?`>E^&TR+V.U7D!TO`"3@=<%$1B>9YP_F`*$VD([02\nMM%)HK9ZASR^>B06@"*'>>1[MK))7ZEA'N7J>W#@&W1YQLUV&21@/-K!H?%39\nM7/ULT,?H%$M<6,\nMP;`R0VM-I:8PMJ!(%P/Q#'29Y*QC4C546P;K!6,]51^(M*"U;`:02P-0Y@&1\nMH@*M13&M6A4_'K'2K"$B6.M(S925Q08`@M!3ECB.J#>:.._Q`=941EJM$<5I\nMD86MI9/FM-HMG!><#PPW?,%_*0&<`^*22@D00@B$$.A9S]K(8#UDN:77S4G=\nM=+-4&/7'6-$0>W+KR1U,^P-L9+"2%/>,PPP'Y(DF=T5VOF%'SCOV*;3:"AR7\nM#D"*:"X"SGOR/`=KB9Q!><`[TF"I8;`"3@':%5$^DWT75#<9!;CU75@UOVG-%$87.X\\675(T*D"0)C7H=51DSB:M8\nM!YDS#"0A"S&YA\\P)(QMC@R:$B-P4678ZUOA,8428&57D@H&0387U2J<*FBFVN6EY.B5P;ZE1BM(^J-2E&%(O0Z4YK-\nM)DF:%IG:>KH=P^)2&Q>*1F@V&I196"ZS$Y<_Y)S%&L/4&+JS'`!C'?U)AAO-\nMBB8>V!AG!+$D1I=A5!CVIU1SC8XM/A3YH]>=S0AB.1VO2!R^?$\nM(B6%4AK-)GXTH9/4,$Z864O/C5G+DLTB;C30&(GP4TUNI&AR^F"TPX@CLY[<\nM>.S`,DEL0;'<<_,5CIMCA8YT@4!'12:]>`NH+2<6P1C+:#0ASG(6708()G+T\nM$D>[9LLF!08J(,I3J8'W0D#H-S5I-29*$GP(..?9Z*8TVQ5"*!)9-4P)LRGM\nMGWR35SQP?UH_\\>"AREO>]WW9`Q\\X70((/V9>@[>`A>"W[>N4Y^"*<_QTPSVP\nM\\ZX=0:Z`64H<5JGJ%JVHRW)FW'?/5UBXY]\\Y?/_MJ\\\nM=3RXYP.<;K\\;XQRCW@PKAA!31B&8]H?8R&YE8NLP@QYY"L8)CE6>RDZSFDVY\nM877(K;-*?KB^ZRMO>/FR&][VHRT*>5>LM`CMW'#@&]^%T;A,'DJCM4<1$%%$\nM6A#I0]@@TH)2'@&TBE!B$8'VCCH+E3&U,*2M#"XXDL@2)*`3B]%%,3?*'))X\nM@BYZ!>M@2D#7A*[KTMOW59JMQXD>NHKO-5_+O:T;V?/J7[DR^?+#\\?`5?V#X\nM_A\\6`)PMDHU2,)[`L2'P#6\\C;>[%]1[DX)'7$=7W8\\+0[9>.)=8*W#/M]@HK0Z;A8;0^C7@<7UP@J@1"P\nMSI$-^JQ5OL4W_3_A=,8.OXOK%Q9Y_&R=I'^ET6L;GWCW/[QW];VO>O<6A9PK\nM`(10R$H"^70-$;`V)Y^NXX+"F1EF>A:WVF/:>X28(7;X(\\:C#(EV,\\Z?QGE%\nMI;4?YP3C8>8%XQ0S(G*O";F0;W9OFB!@"9N=VW0$7W_X"7X6C5E,'-?O>0&=\nM::#WU%&NV;C(O-7V$9O:U/%.#3\nMMVM<[2U<]^0"V8G[,3<=8MJ\\E1M?M(?V[BJBA.3XC91H=*,^"MP?NB4`L.C"W"IY9YV(UP3HBCF'HU`9+GE6.^\\^,.\nM'SL1,BV#4HMPM+"KFL`S[#\nMV1G#4W=C9UV\\6\\('7:9YL%90#JS9#D!*``68YSN>/#'F3[_;Y[01;EKO\\;*]\nMPMO>>I0#AU:(5$4E:1PFY^K8FP\nMS],"X]&$#WW^(?[5[&3OJ3XOUXM@5*'W`.\\)9LW,&Y0J$Y0./`NBT0\nMUH$N9>4$.Z^;0HRS97GR'..!8WT^^,"$P=CSRK4N!U9&O/T=+R9)9C0:#9:6\nMEI"2],*\\@'RF$0H`K@R?91@E@#7EUY-M*VZM8-TS?2"4<]I)09M01"'KY#DI\nMM+8VY0-W=3B6*_8=.\\E+5Z:\\]C5+:#UF:6D7[79[4_GM%C@_`#O_KC6G4`EJ\nMDQI;JSZGC2G!A/(^I65\\$`)E%+H`A;*IY:__GS#:Y=.CM`+0KJU5?ZQ`]$C'6ZT0][T^F5NNNEJO#>T6JWS@IY3Z()1*(020$DA5W+<.,%M\nMM\\`S?$!0Y7,X(;*%XP;B"U+HGA]W^,CQC-G:C!O[?=[PTAIO^T`MJ)+*9N2-E:P9FM.+!@#XHK[001*"JT-+7K=$7Q19I\\Z\nM/>']W]W@=";\\TGJ/&_?##:^[BJZ/.'MZ1F#K0_B\\_RC.@=[$H2^TK;*=0M:"\nM4C&B$Q2@?1T5.53BB&FADP2=#HA=B[BZB,B0E(BDL4PEW4!43)0V<4ZQ?NKX\nM/7K,?<%:I96$'_[TX9OU='STT''/52[K[%AN?VGABO;@S(:1^3=D7S91\\^NY\nM7&XHSP*<.M%V*43B%X\nM/!&BJR@7Z]*9>\\+1UX!'#O7?\\!D%QS^+J/'3ST@MN65W9V,'"IRO]?#UT>\n8EW7\\+Y^L^Y,,G%8,`````$E%3D2N0F""\n`\nend\n 6611 order_zoom_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```/,DE$051H@=69:XPDUU7'?_=655>_>WIF9W>\\N[->>[T;\nM;^*LX\\1V(I.0$)P0)S$(HA#))""43[R$$$2`!'P(("5\\(`&D\\"$AB,@"@@(2\nM!F++X$#B$">VXZSCU^YZO6OO>V9GNJ>?U57W64;!#B^R6P3Q`EY`1,AMP0/BF9Z+7,8&Q.>_\nM<9+*TMG/KWUGM\\]O?SUS\\-XY2H!*(4`Y5!QQ^XJK6J(\nM\\X+U@G/Y9V8<;QYHM\nMHS/QI%:89)Z)]4R,,#&>U'@2(Z1FX[O)NIT9?%_QGHIAOB1PRU[JC<8'EI?.\nM?;13!Q\\8\\/RS1?EV;L!X1!8HXTL0.\nM4!X1G0>ZY#:`%P^B$8KK`KF&122M;7S^6R=HV@'[MLW1T&$07G?=?:5*_?X%\nM\\9V'7ZL'`IW+H%8*I11GNA%?>72)3B6&6YNHU\\T2UDM$6E$.->62H-"`!Z6+\nMIVRRU;I=?*K\\NM3JC'2)^8KES?OG.'A\\A>4SW1NCR601Z*S/YS51"$"I7)%Z\nMK2J=G3-P8QMV-N'&%F%MW0.*LL\\G)^@\\.;`)1.$)Q;I7BNN%OGHI4:E7*<<1\nMS9DVE:&*33:IJ$WIZS512"$YA93BHS^]FS?_F$6W8J014ZU'[*@I2B'LJL!\\\nMI/,@M?EABD`VM@CFJ>TQ5C8%N2=S0BW4E$)-%`;4ZPV\\K\\+5`5@/8H52\\-[]\nM9=[M;+%J&2(9+A%Z(H0HJB(X!];[0DYS[7#"7(G6\\X;S@M(!\nM81`2:$6@-4&@+YC/#Y^)%4`NH=YY7EQ=(BO7L(YB]3R96JQMB<(AT,1!,(BB1G'>.*H=(T6*\\PUE/Q0A@H@D!-!>3J\nM`!1Y0*F\\`JV&$87SPJ#G<_ZK`L!%(*ZJE`"%B"`B=*UG>6BP'M+,\nMTNUDQ"Z9E@K#M1%6!1!Y,NO)'"1K?6QHL*J4?V<<9M`G*P5D+L_.M\\UD_.Q.\nM3:`WA./J`:A`=L5BJ&*P"IX'`Y2H?.JP2;`"CDD%M$9"8@2IY*!3([1B"`-%6-1>5P]`JSP&"D4H11&U6HUM]3';MK106N&<\nM8R6R+"S,`:"4IM,-B<*01J.!B*"58OE\\2*->)RZ7L5XPQK*T'#$[MQ4GX)RP\nMO+)"H"D\\P#6D4+$4:9HR&`Q8Z@]9#6*\\@#&.[NH:Q[.PT',8]-9`AP3Q&.<\\\nM3F#0747'`PABK/-DUC%>ZZ!K!N,@LYY=%<-/7+<]5Z'+1/%55:,**)5*U&LU\nM='G$.*I@':3.T%40IM4B"(&TBRC)I;%R*-CC8LUG2Q@RY92WBL#:^6((`BIU(\\4UM/9]4P.]?&2=X(38;](@NK:QS$Q8.Q`.]48HH2V0"G,^;^^':F&H*091B16$]=%<3SI@1SH.QGIG`\nM<'.HIS%P[8)8J8)",?5&`S\\"6"F,L0R'8Z(T\nM8]:E@,*$CF[)T:[:HDF!OA:,S>B-SW'VQ"L<.7*4SB!!1Q&A5O@T04Q*K=)D\nMWTW[N./V`T1AF;(;H[4B#*Z0!^0IUFOP)M`2O^F]3O$I+O^,3M7=TUL?F1&U\nM'28QD2Q1"9HTPPY;HKR\\<-81QQU:E19.UP!%V5?I]88\\^?WO\\\\1+Y]C[Q@/L\nMW;%`K5K!BC`>)RR?/,&QI[_+J6>?9/_6,K??>0?)R.:]AU)H?8F*%AZ0HM=0\nM?`SA$^05+=/#4[2#,-'(GI4/M:V:P2Q!D*3TK$<[3^=%78`6O'4\\<]WO<+;]\nM"QAK:9N$8T\\=Y)LO][CG@_>R?7Z&WGC"R;YA)?%X*:.VWDSC]EGZ+SS%@__^\nM*'_W_(2[;KV)F_<4#=2K486K^?6&[:19(96)6)0#EAH5YEK5*C'$7&H\nM&`T'-)LS_+?MHI[\\+CO#(13]]ZMZP&X"X!PT:B7VW?8AXL8.7/<9=M_\\3L+:\nM(G9TFOEMUU.9VP?.$KH.]2V+((9L:*B4\\D8E"$O8,;S82>@=6Z5N1YQ>[M+:\nMM9]1:AE,#*D33JQ-D(&CW'.4BD[+C`=$5<](-:C6&[QT:JD0CRMYP.4`1');\nM*R%+EE$*K,W(DA6<:)R98)+SN*4N2?<($0/LX$E&PQ05+C#*3N&\\IMQ4S4.NR\nM&^*<(@HC:I6(N7:3&W8N\\/"SQSF[=@L+K0H*A6B%#@)T&*+#"!4&Q*$&YQGT\nM!B3C,;MW[=P$X%(*Z74*69L?OJ"02U>QR3+.3AB<^1J3[@MXY_"BBC2?N]M:\nML&:3;54!(`<#T*Q7>I_FDG<):A;-,\nM)QL4X%60/RQ_C1YA;5YR``1!P/Y]-_#.M[Z)A[[Q!(_B6=S[.MK-*DIK`FW1\nM6F'2"=\\_>HP7GGZ&[ODEWO$S]TP3E[I2(MM,(><@4)"-3I%TGL6D$2[>F+1S\nM^4H;JS!.(86M0XV=[M:$V$T>`&BW&KSSKMLQQO"M)Y[FN5/'F5^\\GG:[22B.\nMLA(Z9T]S_O1I3IUXF8_=]R'>]*8#!$7GI%7^1N2R#`7C\nM=N23W4P9FU/(V1R`M:"MP@HX47CR&/!RX9\\M;-O"!]_W+A:W+_#=@\\]P\\M2+\nMG#HZP3I'7(JHQ!&-:D1S9H;G#C[#GOD6M[SU;81A.`WBRP*8JM`Z`&])1ZLX\nMEZ^N#N<>B'"V*$\\N&C/-!C_Z([=SVZW[65GMTNFL\nM\\=SSS[']N@6ZG?/<<<>=//?XD[163_/*%_Z,JK.\\_MUW3S,Q%SDA!^`*^2QD\nM%`%KBMV332MNK<*Z"V-`BFN!4SEM)%S#&,!Z/:;5:`&S]C4^Q_%L?X;KC3S&IMCBJ9JC]^'V$Y0KBW<8"\nMK`-P;N-`UB>?2Z?;[($+8D!-8\\%NND^(KDBARXTHBFBU6M/MVM8;WT+]5S^)\nM*D4LGGB:]O''Z3[V(-8:W.2B3;[UI*/4!@!C+^*_*6AC59&X"OVW8`PHEW\\O\nM2D%!H>6!)5AQB+>7G;04^\\G3OH.-C7!!X0[XX=SS#`E+W_O:\nM`PM[;]I'!)C+48E0@=Q"`SS!.B@@J:%DI'],\\?(4M3QM_[XK]T#W[Q,Q__W`].\nMI0O&'WZ5!_[Z_1P1?4NY[+_%0#@<^>%\nM;:T*(ZW_]1UI>M^NTX=/?/;8^(7/Q<@OIU?[]/\\#XW\\`L./*LPG&87H`````\n(245.1*Y"8()I\n`\nend\n 6612 payment_ok_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```0*DE$051H@=69>71=Q7W'/W/GOOT][9(E2[(MV<@KV"(V\nM9C'4!@(EA)@8)TU[2!MH%@XD-(04,$Y3A^`LM)#UL"4Y@1P**3@M`8H3(`DF\nMF(`=P)8M&TNV),N2M3X]O?V^>^_,]`^14!*P16I.TSEGSOWK_K[?S_W-_&:Y\nM\\/^\\B7(P$Q2H`+Y[XF3>'8"-@`\\(-J#8C&($GTX4OT'Q\nM`H8#:`:0N-S]OY.R3X3?/VH""!'"Y\\R*2(60VJK/Y?/U;LD]SRCCH!G!8R=%\nM?LU'>`F?;CQ26!C^\\\\\\!P`*@2=KRY(:*!@(J0#Z4)^_DR>?SX5*Q--M3WFR#\nMN0S(``<1[,#G7M:RBY_^.0`8ED6"D9E1.\\+$:`I?^41C$61<(B*"F(SAE3R1\nMR6;*)R%C+`4PY[CRUDG',`"$I0A65F3J"$4\nM"F,';*24V'+J*2S!:':4B<($",@6LQ#$0K(>P^,(OH3++/X!N/38I6NI:I>`&6$.3O\nM,<3?;BB=>`"?&5;`>D]#>0,!.?7%M3:,C(XP-CY&:C)%J53"MFWR;HYD/DDP\nM%,0(D)8D74RSLVLG=35U!,/!&C1?0W`Y`KCDW080@&!1/!R?,Z-L!I:46)9%\nM)IM!&TU9HHQX+`X"I+1Q5`E7NX3"02S+(AP(\\]S^YQ!"L/;TM21B"8!]P+-O\nM)WGBUH$[F=H^6)Q1':^.ED?+<5T/I11**1*Q.-H8?-]'*876&H-!2$$@%"0<\nM"'-T\\BB'1@YQ[L)SZ1SH)#F9',-B`T%>PP$>?SHKZHGK_*\\U/62B^#K\nM./R<*/#H6\\O^20#&&'B]XD_V_+9V=-?6QO'.[7.V3KZ\\^)OSLRMF51LR(/&T2S@41DI))I?!]5UB%3%>Z7T%I=5#P#V4\nM87CP[;V\\8X#LP%YV?>\\J9JZ\\;-U$U_8;)GIWS4P.'*P8&QZ.]I2GO42B.E!?\nM5H^E+2QAD1Y/@Y["U;ZFH;F!1'F"5#Z%AT]YN`*`HELD$`@PD!J@Z!5?Q&(3\nMDASW']O/.P;(#.ZG<>6E\\P=>>N1+/=NW+/)>WOUR$"#*[_2P2=7.H.[R/2;\\C6!3U!.T`\nMKNT1"H:8OZB-UK964LD)?%^A4?3T]U)0!<+!,,(29)TLTI:XGNL8S*W\\@&U\\\nM`OCA\\3U-^T#SQ.U7XKLE`N'X%6.'7KXS+@KADY:=3:QV-EIKT(K\\4!='A_1D<5MY,MB).)EF-=['.H]1-_`8?8,["%NQU&>8BP]AM`"Y:F[4'P.\nM@<-=T_,U[0P,#HWB^BR)F<,WS:PI#\\]=^G[L2!G&:$+12M*'=]'3M9O#_4-$\nM#@QRRF"*_K9FW/9%!&IJ\\5R7_L$C9'-9/./A&0];VHQGQM%H,#R+X%8".'QG\nMNJZFN9!]=5T#AW<]&RO7(SN^'S5_%7KRNOGHMP":!]I!XF4U]/[PA9RON#T?(%P[[^JFTSZXL;)Y<4C[#I8%EK2PI(67'2&33C*CH9%(.$0D&B-0\nM4TMO0Q5#98KM;@==]0'L0!#;ME$H,FX&5[DHHPP6]V!XB#SPC3?K]^SH8>]3\nM>T5N)%?I3#CSG*33.CDP&3/&\\-`W'SI^!H24N*DCR"L:J`L8K8`D!PD(8\nM`(.?&\\&R;:)2XDX>04:J:&B>3<>I\\QBL*R/O%%&E$K)81$J;O%^@X!=^)_$S\nMX.L$-_AU.$&V[+-@KH%KYV4.NGN\nMY6N6/]9_J-\\[)L"JS?MX^;8:T/XNY:2=8+PRK$O>%``"C`;C$R\\K(Y=.X66.\nMXN63U(9#E.<=)D-U2%]A>SZVE-A2,N%,X!L?H`N+FY&,H=[0W/+(%BY;?QG9\nM5/;L[ESWMWZTXT?MG4.=A.P0QABTT4WKV]>?MG;1V@V/??^QNX\\[!V0@@%?(\nM'E1.>M2JK)]EO#R6):8*L)F"**NH))_+8-P,ONL2*+E435B,JQG84A((!/!\\\nM'R,=;SWYK87-E,U>>\nM>27)?))M7=O8UK6-COZ.LME5L[_PX8]_N./X`,$@SMCHL'8S/9:T9QEI85D"\nM(::.7FA%-!8G%`XC@T&,`7P?-=S'0SMW4!Z?P2]'"DGI;'X-GG^\nM`P%\\^0VMZS][/>F1=%-_J?^.>[??NW#QS,4T5C2R=>]6GM[_-*/I42ICE5R^\nMZG*_J;QI5[:0G3PN@&V'6+EY(-^[Y3,=8%9/[?&GJ@E&8;1/,"B)1*/(H,1H\nMC5&*!E%%(;F;O1,'D5H2EW'"A"BHPB$"?)\\&?#[WALY++[Y$7T>?W71JT_7W\nMO73?V=%@%%_YW/GLG70,=*!\\Q9+F)6RX<,/8!6T7W&$[]CT5M16IXP(L_-2C\nM]%9^"I3:C2H9RPX("XUE6PAMT,8B$(D2BT6Q`P:C?+3G4A.MH[&0H,?D44J1\nM=M.D-2#8@>3H']:_%:>MH)`NK-FR?\\O?[1W:2U-E$_>_>#]'DD<`.'_)^6QZ\nMWZ;.93.6W="QK>-G=2UUNK*QG]3*@)[*C-^A7KV?S^S;]L\nMC;=>&:N,[?[Q`S^F_?3VWWN;5@8L8>$>,`PBQ&&,0&-!%A)JJ2L*R\nM0$Q-;B%M1#C!A6+63GQN!"X"'L5GC-";8S_\\\\,.D=J>"J:;4WS[>^W@BJ9.4\nM*"$CDO-;SN>+:[[X_*SPK*LB99'NE:>M9,?.'6]Z?UH``JA?\\WG/S8[L-MI?\nMAS%HKP@J"]I'*XW1&HS!&(,5B&`%(GBE;*8S_.&!Q9]X^'MO%WO!@@5$1?24\nM)_N??.^>]!Y44"$"@O;J=C:>L[%S=G#VM9&J2/?O_R#Q,Z\nM4<7,+N4676,,?B&-5\\SBE8HHKX3R/;12&.43B->AE9?W80J@!!HWT=Y[N\\A(I6S*::.]'B9X=A>`A+6'Q\\T_K:_I`_@^;FKPJ%=(]5J!A@;E*XQ;`J.G[CP]%^65\nM$,$$")O"\\/Z?QM<^G)N5'+OAU?2^:SJ3G4TYE1/+9BR;6-ZT_%_Z]_??,;]]\nMOJL<=7;'4,>"M$QC12U6UZUF_:SU/W=&G;L_V++>U[/';-\nMMJR72QY02J%\\']_S\\9P"OE/$+SGXKHL=KRWDR_\\6TW+S$U/]OW7K=V3\nMW^,&?!G(^LCZP729V\\:$=NAVU%+694S."*UBM&\nM:E3-5ZN:JU(///C`<7U-.P/%S"3G?:4]H929K9P"7C$/6J-*SM3BY?L8*XB3\nM.MKO3/3=X%[PY$%TLEC2)>^5\\5?LG:F=##J#5,0K&!\\;CS7&&J]_L/_!PZ_Z\nMKYYQ4!TD$`NPMGXM[9'V'UYWZ74O?.BF#[%QX\\;C^IK6]?K>[UV`40&L0.0O\nM([7S/NOE1@/*R:&5CW*+*-=!>9Y17FFGEY_XS.Y[MS[3=M$:7B>W+[V-0#9(D22P3G$RZC][QZ+V7-%[RR<;)B)`@;:5Y*ON4\nMW2?Z5NU1>\\(R)KFX]F+32NL/RAO+>PX<.#`M\\],&T!K"M2>M1`3/*X[WXQ9R\nM4[V8Q7,*>*4"GE-\\KIC3A[QLDO=LG/K-M7+U2N:=-4_'*^*/GAD]\\\\I-)V_J\nM6EJS%"MH,2R&N77T5CI-)ZUEK:R.K.[TQKV'^P_WLV;-FA,'\\,RU30SN>,7&\nM"EWNYB=YH=(LNW[;F]Y?_;[5W'?/?937E?]J\nMF5SVR0US-W0MKER,#FKVZ7V40B56)U8S2\\UZL'IN]9&77WEYVN:G!:!\\EWA3\nMU1S/*9[G.7E\\U\\'-IRGET[CY#&XAB^<4CGJEXBM>R7G+&%=<=05//_DT975E\nMVY;H)5==UW!=;TNL!1$4U(1K6&6OZA.3XB=#1X=8MV[=B068VB:H03X3@'/*7;XKG/$=]\\:`.""BR_@^5\\]3UE=V:].-:=>\nM?W7EU>.5=B5+[:6TJM:MMWWTMH-[]D[CM^0?M&G=PCQVN<3-*A&M+5\\4J6Y>\nM'Z]O.T]85DLI,Q)W)@8L[;NW&&-N-WA<^-VQ8\\9Z_MGG>?S+CXN;?W+SM4]8\nM3]Q6;I5[YQ3.N=2.V<]$8]%W!^!W[3N-,#X("R\\D$:^/U-F16$((2P"'@8D+\nM[QJ=5IRN_5V8O(G6S*^YT[*LUJ'NH4L\\X:67+EWZC@'^S]KPX#"]!WM;#_<>\n?_@N`6VZYY4^*\\]_7<\\-],"VQK0````!)14Y$KD)@@@'^\n`\nend\n 6613 printer_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```(ODE$051H@>V96XQ=51G'?VOMR[G,G+E/AY9IF=:V8(#2\nM0@I*3!.()AHR1L4H^FXD/)CX8GB`-Q,?Y,'X8#2:&$P,/NB#&`5?K(`$,%PL\nM4(&2H+;#,--VF)[9Y[+W7C'1/(&'BII:0MI19Z\nMAW6;P&P&MFUS8.D99PH@2Q00"#?@E?]3`IWNM\\YU`QT`::\\6`0%HRQ8"@V9[$+%V3F3(\\R+PL1)P';.V\nMA0!]8G^`!W);/FX]_&H0R%IC0=EN$%?D`;$90E?-`Y"%D-E:=?I5H>T2&39#\nMR%X-`NTDSG*@"S"7#Z&^!/+)V3G^CQ!";I/`Y2K.=F$DLLFX:@3R6=/]/'`%\nM>2!$AR>N9@YT>F"HA8O^GA&=2;QS_%<60D+@^N;`=A[H1RHCD$V*\\^4V+QX@\nM._J)$(+)DMCURU_\\_(C25N9AI+.2JK=190;=*XBB:.+!![]]YU?ON[>TN+CX\nM\\1$(PP!@\\>D__OX'J58%*P0&@,3X^-[BX5P1P2V\nM;KYO_3I$#6]L]Z[[*J/E&\\#9?-/F$#9>.7-B84P_L/CEKZ%EZV4.T=[K@^AI\nML^M]6@`A)5Y]E9=?.Q4M-4L_BK1<$1VXTE2SOE%_1DKYIFY>@K>>[(*[)0?$\nMR!S.-:__W(D['CMQ]."A.-4DJ2).-8G2K%P\\RIF7_LRN0H(?&)32:*W01J.U\nM06N-5@JE5>N:4FBM45IAM,&83*W!&(NUAHU:DV3\\YLJ1PPY`EP*-=4U0:G@\nM4PI]0M_#]R1B9(3)W?+NY`MSL^5B_@WWW'P]?W]WY<[1T5)X\nM/HII)(IFHJDGBF:J68\\VB"XL\\]33JT11C4:C09(D:*TQQN"<0PB!E!(I)9[G\nMM?O];$((BH60Z3)\\&'C$%M+4X&E'X$E"7S(W.[$P.35V"-B>P/S<.,^^NQHN\nM[!J[93U6)%'<"AUM2)7!.(%)(SXX]Q[OZW0+(-_W\\3ROB\\`P.C(RPLQTR,SU\nM4PCI`>`VDPHAQ)@4XA9C[?.GMB.P,#_%POSDF#%NP3E'&'B$Y;"540*$]+#+\nM,;YPR$(!Z7GXGD<8A@1A2!B&A$%`$`0$04@0MOJYS6]?"Y!28K1&*47@^U`.\nMD;M'\\8NC]%O2A."F:BWA^W]XA4<6[^A/X."^:8`I:]W,EB>T9@)]=IKX]N/M\nM6?<\\GR#PV\\!R]?V`(/`[6I_`#_"SOI2RE=Q9GL2I9F[/!(6QB?[[:L'>()"^\nMM4X/],#!?3,(P:QU;JP?`><'%9`(37%9'K*22F^V:C)-548NL7D)[?!M(&V`&N#;*/YM[LLA7*O'G1XVP(\nMSFXN=`Z8*8"R!*NQ\\$H]A;]K^-SKRUAKP[OW3WIG-B3KB>M:JIW5+)W?('KC\nM1?PPI%`H4"@4LS;7D&+6EU)F"UVNJMTWV:)GK44(\\((R_UA*D(TFN$T/6`='\nM9B2U1EQX]NVS_E31&TS@;T\\\\!M;(E0.'J=HRL>XYZ'`.'36QX_/MLND'`;[G\nMX^/C:P\\/']]X^"D(X3`&C!%8ZV5]B34>QMKVN@%``_0S?\\(6*^!:&Q&7;567\nM1@+JZ^][9TZ_*LO%XF`";O8`0HCDR*%]]N3I<_)BM=Y>*7,I3._'F]J'!E+R\nM<.AT>#;.CR]$[UOZBQ,2%2>$C74\\9VB*$F.F3B2*'-M[F&9EH?GZBDE'=HT!\nMO^Y/H'8AQN'BI=78U"/K)Y&C$[]PECW1:4:3\\TC/:]7Z(.BH]R%^X!-F=@0H\nMI5"I(DU34I62I@J5INVQ2A5:*Y179GGF+HX>7*4RW^34R0H/SUJ>7(75M0,T\nMDS1A+39-OS#8`\\G%%:QCY=1K]>KZ1GV72KLJ%L)9-JKG.'KD!KYX_S>004#+\nMV:(UU6*S[X1H?;A8AW4.D[76MM0XA[6@FQ&_^]5/>.>]_Y"RGU?%,B634/O0\nMX]E_+[%6H]4?6F/OHN>TSUGC1@I^\nMY5L/?>>>VXY_JJ1,*\\F,ZVZM[3Y2Z:NT/N8]";['^J/?^^Y?=;2FJO$T&V?!\nM"<<3X1XP`GGN7QHI?^9[)E7K&]V3NB48"_-@C:`T*I#=&>_6W[+-U#Q0U_+Q\nM6!/V@C*7`]VKMO6;\\2)K>TIJ,(XJ,9,3Q;"+]W[N'YA??D-\nM.UD:_D^.H3_JK07M.-!4[M.Q;H'<;L9[KQN[>:S2&V*I@6KB/OO4-_V9FN+B\nMT.AW0B`V(`7'FYK=>>P/,[M#W6>AFG#H4L(GG>.YG1`8ZJ.^J1R/G%0DAN.Q\nM1JKL9.&R:H94"QL)E5K*':MUQVK4=S-WY02L@Q]_/AA-M;M-F2SYAM"^9T/T\nM#[=80U-Q[+;KA-S)"=W0(908@H(O7IXNL9R5]_9BVSYBI\\=&C[W3UG,?($L!\nM[T8)/J*UZQY&ADKWNFZ](A3(*SD]&T8<<"F&AL8&'LR5=_P/\\#6Y)M?D_U'^\n5"V]#6$Q^&,Z+`````$E%3D2N0F""\n`\nend\n 6614 reward_clock_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```4L4E$051H@>V9:9"E5WG??V=[E[OVWK./>C2C6=&"A+"%\nM(@%"R"!AHX2*';.8&`BQ@T-BNT(<$\\?(5*!2AB2*30H;4F4[K[W]EW>]9R3#]T:+0@*EV/S)4_56_>YY\\,Y\nM__]Y_L]SGO>\\\\/_M)VOBE0._]>__&!769&=IKMKM=NI)DE2L==+C`6&-T?U*\nMI=8=&5\\WR+/,WWG'K_X$8+]H`F#+SC=R]M@#_-/?_-3Z:B6ZI=5>OK$LBLOB\nM.)J(X[BBM1;.>VOO#E;_#$M__DK[7X\nM;WSLX_2Z77'9[CW1OM=<$4JI.'OFM#UT\\,ED=F:V_."'/\\PM;[KN1Q-XWT<^\nMP9?^X-_QT=_^S#L;M>AW3YT^M7=B?%3_]+57LV%RG%ZOS_FY!1:7VPAE"**8\nME6Z/5JM%4>39\\-#P(U*JW_*N?&S+9;OXQS]WXX]<\\#-W_E>6EY?%55=?LZ5:\nMJ;U1&W,=WF^72C>MM2)-TRQ+TYDD30_T^_WO+B[,']RX>6ORR^^^_57G4SOW\nM7??=]_Q%F73=XX\\\\\\*H+O>>7/L"7_N?7`29W\nM[][[T69SZ/>EUN_O=GNOFY^;GSIW;F;#_-S\\^G:[O;FT=D\\0!#<%8?@/HKAR\nMY4JG]FZ=1-;MVYBR\\9U##7KV**@R'/JM0H'G]P_\\_6O_-F?YVEBYV;/_`#X\nMW_OT9_A/O_\\I]A\\X_/KAD='/*Z7>?^+X\\V/W?NV_W,_#SYSEP.E%GIY>\nMXLCI.8X^=Y*SITZ1)8.H5JOM"9;B^\\]<.^+$MJ\\;3?>\nMN=H5\\[,S9&>/,5JVN7SW#D;'1O-!O__9\nMF7/3=\\1QG'SVT[^S&H%J;0AK;5-*]?X\\+X>7%I=HMU?H]P;TNGTZG17:[17:\nMG2Z=;H]>/R4O'$M+;:9G9FDMM^BTEIY?.#_S9UIK>V'N[$7P-]U\\"^]Y_P>9\nM/G-ZW]#PR!?;[<[>KWSM6SQTOF#SZV_B5]_U)MY]PQ[&18]JV67+6(-&V>::\nM*_:Q<>,ZU,0E+)::Z:-/$PJGZO7ZZY12@^\\]>-^C-]WR#O_4DX^AC0GPWJ.D\nM0@@PQB`09&E*M]O%.8]W``*E-&$H`(''XYVE+`NT"6D,CQ%&\\<\nM/G6RL67K)7<,!LGE_^N;=_-7G9#K?^86WG_#94@!T\\M]%OH%B^T5RJ46E<8(\nMJ7740\\UKMHPPW+B68XT&1_;?#_BPT6S^J]=?=^/!>KUYSW4WWHPNRASO'$)*\nMA)"494E1Y%@7(81`2H&0X+VG=):B*-#&X#UH;3#:4!09_6X'K>1%\\&^\\Z:WL\nMN_PJSIP^^4XIY:V///(8CY]/>,V;;^/6O6-<:'5P*L1Y3UAK,K)!45I++@,6\nM^QF%]91Y2E3TV;9C&R?S`<__YE._>M:*T->.^54CAG\nM45H1!`%&&X00JP\\2I11&:8+`H+4"H"@*BK(D#&/]EK?_W%:ES?@5UUZWWEI;\nM=PYYY^>^J&Z_[>8/S<\\M!`\\?/$9EQQMXQ]536&%9NK#$T,0ZK(>@6L='58TQ.&(58Y[#.4MJ2HBPIBA)M'%)*PB`D#`*,T==DV>#;(Y6A\nML.'N>YYT\\S,3&!M9:39V=08UO9-M$D+1P.P?SY6;[[E?_&C;?>3G//\nM3]&SBGHE)#"*O'V!UC./0U[PAI__92K#XQ2E1:U?3WMHE#S/<_^RVR0T^Q\nM[NH;&1T?9W'F-$LG#C-UY;7LON):E#'D:88;]*E5*]3')_`7SF&=7:^,&=,(\nM`4@OE<9:"\\(3!(8P"C'&H)1":8U6:NW1X#U%69)E&2#HK/3XSH/?8].F352B\nMF+??>@LCPT,H)5E>:I.5GC`,F#U^".DLF_9=@PE#-N_Y+M?_^_\\G__X\nM<:J5F$U[K^26]_T3UE]R*4*L%H^D3#E_\\FF:E^RBVFB0+2M\\7L1!&,<:`.^%\nM]PX3!"BE*8J2-$G1VA`$P<5D+&;K?GTB1Q&N\\!/`C*O"`('&$84JU5J51CHB@B\nM#,,7]:\\4UEGR/"?-4ISS)$G*L6>?I=%HTF@VJ=?K5&M5IB[92K->(50PR#-$\nM;8*19A.K`EQIZ166$JC%$;=_Y&,TKMK,4%,1&$6HU5JN>6S:8V1\\G'ALC,43\nMSQ,&`5F>==OMY:Z64N+7(B"D!`19EB%[?820**G19BV1@P!K'9%4!&MC?O64\nM(PQ#@B!`*;56?B59EB$:59J5D%9[D25Q*<.18=#-*/$():G'!B6A4JU2N^H&\nMJK//HO=>31P:M))8YU"C(\\3U)JU6%Y$F:*U)D^Q<.A@L26M+K"V]$`+G+-:6\nM**4(HY`H"@F"5:!::Y24"`&%+.^14J*UQCE/GN6D:4J6Y11Y05F66+>Z\nMV\\%:2=5:8VV)$!#%:[*K5(BBB"B*$$+23U(F)B=HYFUL:PZ/Q!49Y?(Y<.6+\nM7:4`$54H)K#N$\\\\>1A9%\nM1I&G?E5*JZ>K$!ZS5HG",,`$!J454@J<L7%B@-7N.8L-EI&>/D2Q=\nMP.N(LM<#ZYA^[GDJ-J??ZS-S_OS=O6[[\\5ZO@PQ,2!!$PGM06A'%,5)I;&G)\nMLX(\\SRF+`F?=6O^CB<)5>1FML+;`(]!&$5V47;!V^&D\\@KRT3$Y.L"%R%$>_\nMCUIS$\\QG//GB29/<=HL\\H3\nM^P^>75E9^6RC.9+N?^2>U0CD18KW#EM:LC3%68L)]!J@B"`,4%HCA,!:2Y9G\nM9%E.:1U2*KRS6.M(L^QELBO*$N<<01"CC6'3Q@V,%FT&3SW$8'$>)035P%`S\nMBEJM!OTN$T:P]:=OIM$<96ZIPU,'GF$P?9;-XT/<]YV'.F?.G/V=)Q^Y^XE.\nM:PD`;8(0[_UJG<:CM4$(25&L'E2K%2@@"$I8RY/`K.H?/$61(^1JY0F#D"B,\nM",,`%:X>?%)(/!!6:I@D97QLE&!EA>3@@\\PO7DJY=1L3D^.,3>VF$D@Z_8S%\nM7+*2U$@?>9R&]$3"\\I6O?7/YZ2//_G9G:>'+^UY[(\\\\<_,M5`D6>X;PC"BN`\nMH"ARM`D0K$I*:X54$H3`>4]9KE:@LK2(M7;"6XG9[A\nMR8.'GYF=G?NW_5[K&W&U9H\\<>.AB\\FMC0CQX(14>OUHRS6HK[:Q;T[Y?)20E\nMQAA"$Y`JA7,EJ1@@MUC4IAP[D9-5,G1D:,:3K!_:S=3HM6RN[T/E`C*Z\\_\nM_M1C]_%2\\*L1*#*R:>AJUM5W40_'4,H`'JL=U5U0V=@FW="FLW!F)2HJ\nMA\\5,I.R\\%/8"99G;/,_S/,NSZ3S/GDS3])&5]N)I$T3VJU_\\O5?>%;PD`MH+\nM[\\$Y1ZU2(8ZKQ'&,T0:M--HHH54*1^]%.7_X?.O?XO>*O\\^Z\\*_.+YL6'+=IQSFX,P?J!6']H6A#%1\nM7*'>:-)L-+$C*8,M%["-A#+(00IB,\\%PO)O1RI4,QSN)S1IH#PB'$WUR-4-?\nM/DM?G:"02[3.7^#L@6G".$(KA2TLZW:L9W)J@K(L2;.,(B^\\MZXEA3P1ZO")\nM2EAYM!;7#HS7Q\\_\\\\_4?[=]3WLTMYFTO)[!Y:C?@-VD3/AA&\\;9JK4&E6J=:\nMK5&KUCD5'^%@^!#U2HVIC7MYPYY_2:SVHN0(4ABD6.T%2]_#!_.4X0DRF*=*"T0TC;-JY":TU)C#T6WV44GCGLRY=N6T:4M<-8*$X07;Q7RM5?*\nM,K)X[[&%I=WJT(XS+IN\\#N]KK"0%O;1DJ7\\2IY]EQ1YBD)PEJ#BJU2K5N$9D\nM*KC89(S)E52S,XLS1S[0_,"=GWSJD_?H,(S!^QQ$M\\AS\nMXDJ%:FTU`G$T"`\\YY!7F*411M!8`L>.?(INOD!-FW8S/C8!&$>DY<%\nM26<1;32!"IBZ:HJQ\\3&TU$@AF2OGN&ON+D9G1I@4DXR,CM!K]QG?.\\[4GBFR\nM,N-\\ZSQ)D1"9B,LV7$:H0_J#?C!_8>&2\\_/G+^GUND_,+R[Z16!JO=Q4MXZSR]U**THR@=@]S2Z;4Y>WZ:F=GSU*HU\nM)L8GV;1A$^LGUU$U-1R.I$@X,7T":21+EU208#LB)'Y1GZ]/'#`'[]YIT/\nM.&S:Y4`=#.'*BVY]:2Y0TI#%`=H%6"=8VYA\nMCL6E"QP[46%L9(R1X6'2(F.F-"-1RCPPM/R+;YO'^.94T>IB`K;\nMUVUGT\\0FRO%QW)!CD"2T.VWZ_3Z#9$">9:NM3)XAI4*_D,U//_D@0`(DO+M6C+-MEB1G!%P/#(,)V5#DF2\nMD*;)6O^5K?9;64J6YR@I7R3P4KOO6W\\*@#EB\\-KO#V1POU14+R&RYBLED5(Q,2HHRH(D3TC+%.LLSCOB,&;7U$[V\nM[MA'K5)ED`SH#_IK@#.R+"7-T]7?M2BHET;@U:Q6C6G]PO?:O'0C>6F%T@&5*$9*LPI6J370\\B*AB_[:N%(UI!P%+5!5Q>CD\nM*)>.7\\I0U"3)$OK]/DGZPGO%"Z#3M0B\\,)9[I>0/?B/[8?:ZSS_'Y5L;G%M.\nM*Z7UN[/2OSDMDIO3P>^^5O@C(U(9\\3+@+_BO)/1*7RGV[MG#^,@$O7Z7P6#`\nM($D8)(,U_R7/ZO\\B3=.'\\B+_-U**QW]L`B^U7?_E60+Q)4K>5='N8[N,6GJ+\nMUOI6I=152JJZ?!42:DU.+P)_T=^V=8I&O7$Q45\\!^**?I,ES:9[=F679_PB,\nM::WTNS]^!'Z8W?@G;Z2;=ZBH2D,I]5JM].U:Z;_>[9SXUR>`5_G,^C>Q6[_Z=CQ>"B$W\nM:ZW?;K3^>:74ZY14%?F2""CU\\B2OUQH(`?V7[OKJKTW3]-$LSSZ59LF]2JGB\nMP$<.OFS-_Z<$7K#WWO]>LD&",J:AE+K1:/T^I?1;E))#WD.>92BMJ56JJ[>!\nM4I)F*9U.AZS(R;*409+,9UGVN:S(/A^%X?QB:YE#O_;4#ZSUMT+@!?O(_E\\C\nM3S.`2"OU4UKK#VJEWV:='5E:7F9Y>8E&O4$4Q5Q87""*8X3`IFGV0)YGGUCI\nM=Q\\.@]`]^$L/_M`U_E8)O-1^\\]!O``1*J=<;;3ZLE+ZUU^L./7GP`'/SY]FY\nMS-(^][[[_A\\Y[]\\9@1?L$Z<^`=Z'6NF_9TSP$?!O\nM/77F5-SIKAS(\\^SC@\\'@V\\88^XW;O_ECS?=W3@#@<^T[R8H2[ZD:K6^;GIF^\nM^N294W]4K51.=`=]OG[;UW[LN7XB!%ZP+Z9?H-?OL=Q:EI]XYQV.I__Z<_Q?\n4SY"4-VVJBH4`````245.1*Y"8((B\n`\nend\n 6615 reward_write_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```2*DE$051H@>V9:;!=5W7G?WLZPYW>/$AZ3[;D9S\\-QI.P\nM;-P8XYC$;0,!3"BZDX8.94(2XL0,3@>'5(@INNFDR^EJ)5!-2)."!%+I="=M\nM<*IM`\\9RRJ,L2TC69,N6-?D->M-]=SKG['/V[@_W299M('9,X$NOJE-WW?UA\nMG_]_K__::^U]X/_;3]?$RP=N_T]?1H4569^?+C<:]6JGTRD5A9,>#XC"&-TJ\nME2J-_J'1=I:F?MMG/_I3@/VB"8"UDV_EV*$'^+7;/K^J7(JN7UQ:N":W]H(X\nMCH;C."YIK85SGCS/79)F36OSZ2`(]I?+Y>\\"]T].G+/XYU^_BQWW?O4G3^"#\nMM]S!U_[T,]SZZ3O?7:M$?W#D^2.;AX<&])NV;F'UR!#-9HNIZ5GF%I80RA!$\nM,J,P\nM;=8;#MPMQQ,`U.2%6Q@]=W/_Y/GKO[RX,']IH[$L/_B+_X:U8ZN9F9[F;_[V\nMFSRQ>R\\+BPVT-HRN&F%P<(!5H\\-T.AT=!F9=K5KIN>>>^_X^[S3V+9.[EQ\nM$_7E.H_OW,W:M6,4-N.\\B75L'>A'2$E/3R^K1H=16K.PL$1_;XTP,#RQ8T?/\nM`]_^![4X>R+_L2$?^'68/RI^:>*]6]X_=.^G5L],W;1ZZIAPWN]\\7S^B)/$`\nMJE+K0T#O[.S,A^I+];Z>GEZ:S1;S"XMTDHS>_GY*Y3+E7J=1ZZ>\\?H+>W\nMETJU0KE<)HYCHC@BBB+",&*YOLP+4R_0:G4H\\HSZPBD$`Z\\;_/A-@TS>L)HG\nM[O_*%>LG1OYDA(?.77_D.4X^/^Z_<>K?91-;WOHK`[OV'SZ_AZ5#CW\\4;4R`\nM]QXE%4*`,0:!($T2&HT&SGF\\`Q`HI0E#`0@\\'N\\*\\MRB34BM;Y`PBE\\W@?RZ\nMG&_>_43?YDO&/QLMF_.6&@E7U[9R_I7)\\T>.]#VRII&O6EBJXYP&0-H\\P]J4\nMPA4((5'@/6AM,-I@;4JK4<=FZ>M#OZK,\nMXN@RS2Q]YX&I$]<^^-0!LNDJ[:ET^7_>/;-='CM?+1P\\=GMY]>32,P=V`:"U\nM-N"]5TKA7('2BB`(,-H@A.@^2)12&*4)`H/6"@!K+3;/"<-8O^W&=YVCM!FZ\nM>.M5JXJBJ'J/%$+@P2HI%Z(H.EDNEX\\7N5\\00K@O_.%MK\\#?._A'^%OE2'S3\nM\\9M;[>^8`;W`P)K!QO_:=_2^YW;?V*PL+&\\[-?R&??J!CP,/=PD4N<4Y)Y0V\nM&!/@':19AC$98112.$?A"O(BQ^8YUN9HXY!2$@8A81!@C'YCFK;O[2_U#HZO\nM61M7*V6%$&2I)+UU]93/VO^U<>&Y1^3_O0]K\nM'SY#6DNED=*#$.2Y)2J5*,4QI5),&(88;3"F*Y4P"`@"@Y(2YQV936_0>>X9GGCM))4GKZ!L3Y$^<%:6;[E^I+_4N+"Q=52K7W\nM77[IYEN4Y/]L^\\K?\\5L?^1XT?A^NO^N7N>2-K1GAJ\nMWWYJMZ>G#\nMGY][[!-S;YJ]68Y\\^A\\@_^^OD)U&"$!ZJ31%48#P!($AC$*,,2BE4%JCE5IY\nM-'B/S7/2-`4$]>4FW]W^CXR-C5&*8FY\\^_7T]_6"]U2J%2J5$EEFF3DUSZKA\nM0>;GY]C^P(,:8/O4]?#4/>?Q_C?_H8Z"U5=.SU%JS.[_QQU[/C4Q,3DW]]@6\nM'N%)]\\B)'YSWW;W(>^&]PP0!2FFLS4DZ"5H;@B`XDZPVSRE6(A4$`7$4HY0D\nM3=H0[?_ZD=NW7O;;_]K8->/W+@TW@-X$.29)0@<\nM81A2KI0IE>.5PA6^J'^E*%Q!EF4D:8)SGDXGX=#!@]1J/=1Z>JA6JY2K%$>16P]K##?]S,?8M.87AHXL_3PXG=SW\\3X+O)K&4^)4(""D!09JFR&8+(21*:K192>0@H"@L'W1JBI$2H;M+;W)+9#(3$&.UYRQ^_AZWK/ZY/+.LK.LLTETY\\\nM_=[[[OWBP,"ON?GY5^K]!YDLBIRBR+T0`N<*BB)'*448A4112!!T@6JMNV`$\nMV"(GS3*LM4BI`$&669(D)4W3%R5GN[)SA4-)11B&Q%&$DK#8Z7\\#;]G\\'VD7\nMO9M/S%%MGWKHT4=W?69R\\M+FJP4/()4.4#H0WGNDE&BM<$*TBPE31,Z2=>./J9G;M^[R$A;@`.O38"@0E7<@"45D1QC%2:(B_(\nM4DMF,D)K<85;Z7\\T41ABHQ"C%45A\\0BTD41G9!>HMHN7YSZPO>V_]DWRN4G@'M>$W@`:6U*9A.\\=Q1Y09HDN*+`!'H%\nM4$00!BBM$4)0%*>ED)$7#BD5WA44A2-)TY?(SN8Y;D5V86!HV!Z>6K>5L%%P\nM7=ZBE)SZUH,//O1?QL=NL.WV7[UF\\`#:!"'>>X00@$=K@Q`2:[N%JBN%@"#(\nM825/`M/5/WBLS1"RN\\IA$!*%$6$8H,)NX9-"GB%7+66\\M;F7%YX5V*7DX-XC\nM1WYW4<4E@"!M1G:!`BZDM):(94$(7#>D^?='2C/\nMN^VW,0&^<$AC2'R;(NI0'\\PH>A+*HH?5>AWK*Q=2"BK,S9YBLT]9-;3,CF-/\nM[]Q_8,_!R8O._6>#[T;`A'CP0BH\\OJM=TVVE7>%6M.^[A*3$&$-H`A*E<"XG\nM$6WDV@(UEE$,9Z2E%!T9>N(15O5N9-W`5M96WT`ZOTSZ[+.4>X9HS"Y@HJ:#\nM_5[KOM='P-H45Q24JST$)J`H"FR64811]]9(=.^^O(>B<&0V(U%M7I#/IFQGJW,%K=0#4<1"D#0I`&.4-ON@@_V('QW=0N]E>^\nM]V,W_784Q(^^.=I\\<*1G=+Z5MHH[M][YF@B(M>LWX;T?UR9XH%RIK:_U]A''\nM9>)2]QQ<+E>HU,J(LB.M-FF4YUC2L[1%':$4Y6"$@=)&1FN7,53>2#D81$D#\nM>,"1BP8MCK+$?I;RIVED,V2V0]K)<+E#"MF4J.<#%3P9!]'#I;"\\L[?4>6@]%?T)[[2F*\nM6H<\\R$`*8C-,7[R1@=(E],63Q&8%M`>$PXD6F3I)2QZDI0YCY3R+4ZG/#2PF,K]L(^#%MPNUA%*\\O5VJ4RM7NRI>K'(GWL3M\\D&JIPKHU\nMF_E7FSY.K#:C9#]2&*0`\\.2^B0]FR,/#I.8PN9P%:6G,-&@MM`FCD&-[CF,3\nMR\\#J?L8FQ]!:8P)#:[&%4@KO/(4K&!@?(/K@(T:;\nM/;VEWA<^_."OI`OO6$#GA<45A3!!>.96(5LY4N91@?>>PA8L+=99BE,N&+D*\nM[RLL=RS-)&>^]1Q.'V2YV$.[$."\\\nMIYWE&%6@C2`H+`_O^SR-;!=CJ\\<9&APFS&*RW-*ISZ&-)E`!ZRY=Q^#0(%IJ\nMI)!,Y]/7:F.UDTBXA(4#,];!K9R.8++R0>BCFQ?!(I);6XRG#?,!))\nML]7DZ/11YN;G6&XVZ+3;I#9#92GZ^6?V`OA5XY,/.%<\\)H2<\\)XW%GEQH9:DYAM<4;CU#@A6?1+_)H\\1C[CQR@)$I,C$XP-CQ&/C2$ZW6T.QV6\nMZDNT6BW:G399FG9;F2Q%2K5RI`2>>G([0`?8^[9W?F#O=[[UE_`%T-\\WGQ!"\nMW(GT""EII@52=@FDMD`90QS%:!4@E41)A902*02+]47JC7JW31>*435"L]6B\nMU6IA,XO+'3@H?,&B6V1)+I'.I007!_3U]U%?KM/I=$B2SDK_E7;[K30AS3*4\nME"\\2.-N^\\ZV_!,#L,WCM=P8RN%\\J+M8F[&^F3B`*;.%)K4.IH)LKTB!EM^V0\nM\\BPB*[Y2$BD5PP,"FULZ68=?2*54IMUITVJW5@!W\nMSQ%)EG1_5Z*@SH[`#[)*.6;Q3Y>W1[\\>_;S`;@B#_FL[5OQ[ZL[P0\nM2@>4HA@I31>L4BN@Y1E"9_R5<:4J2#D`6J#*BH&1`J(=.VJ'5:M%)\nM.BN=[6G0R4H$3H]E7BGYRF]D/\\PN_]+37'1.C1,+22DO_,8T]S^3V,[/)NT_\nMN$SX??U2&?$2X*?]EQ-ZN:\\4FS=M8JA_F&:K0;O=IMWIT.ZT5_RSGNY_FR3)\nM@YG-?E=*\\?BK)G"V;?B3@P3B:^3\\0DF[W]E@U/S;M-9O5TI=JJ2JRA]`0JW(\nMZ47@+_KKSUE'K5H[DZ@O`WS&[R2=IY,LW9:FZ3<"8Q:76XU7'X$?9M=\\]:TT\nMLCHE5:HII2[32K]'*WV#4FJ]5$J]F+3!(<_U?V0\\KH)G&UO_]L;\\7@IA!S76M]HM'Z_4NIR)55)GA4!\nMI5Z:Y-5*#2&@=?:J=W^+)$D>2;/T\\TG:^;92RNZZ9?=+WOEC)7#:/G#_!TC;\nM'90Q-:74-4;K#RJEWZ:4[/4>LC1%:4VE5.[>!DI)DB;4ZW52FY&F">U.9R9-\nMTR^F-OU2%(8S97E=)O;S8;O4_NWL7TS!23DQN(PG`A29,OI%FV32D]ER8M\nMOOU+]__(>7]B!$[;'4?N`.]#K?35Q@2W@/^Y(T>/Q/7&\\JXL2W^OW6[?:XPI\nM[GK/-U_5?#]Q`@!?7-I&:G.\\IVRT?L?QD\\>W/'?TR)^52Z7#C7:+OWO'_W[5\nM<_U4")RV_Y'\\..JUS_'_`,'I$&U=>3H$`````$E%3D2N\n#0F""\n`\nend\n 6616 script_write_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```,(TE$051H@>V9:XQ=UU7'?VN?Q[TSXYFQ[]B.[7$>N&D;\nMTJ"D35*%QJU*$A[E(P6DMH``M2B(0E#$AQ0A/M"*A@`55OQ8=]SID[<3W.)(9/W=+6.?>>\nMU_JOYW^O#3\\8/QAO:\\AZ%__AD?WLV+5##KU\\J'7L\\-&FJEYTCXMBHCC!Q3%1\nM'..B"!=%B',XY\\`Y!$$``\\P44PM'[U'O\\=ZC18XO"M07N:H_+XA^^?._\\_8`\nM//0W_X2JW3`Z.OZW9T]/[VQ?:)N(8&;A87%!\\"0ABMX((,(YAXB`#`(HA5=%\nM2P#J?26\\:%%TU/O?%9%'5)4_?W!]$/&E+GSBT_>S,-]F>6GI(_FV;.^FT6$6\nMYA<`8V1XF,@Y)(J"T'%,%,6X*`"0R.%?:2=0,1$KA@J:M$E8JC8?WF1EJ!.'-`@`?0'CO,57.S5[@^9>.D)O=ZHQW\nM`<]?#D!TJ0O;=DZ2INEXUNO>YXMBTCE'%"44A=+:/,8[WW$U:9*0)BE)DI`F\nM<3BF,4D\\,).8.(Z)XRC,*"*.7'GNB%Q$%#DB%^;KLQ?HY_D0<%"]WA<6YMN;AT=&BHFM0Q\\2<;\\X/3-'M]G0$-G*RKH6N"2`9[_]'P`=X*L`\nMO_'`'P.<1OCYA>5.8W&YP\\26\\>!&QEH0I?M0"5_^KZR>#_Y?>&.EF['2[=%L\nM-G!1A)G=V%M9'A;G.NL!<.O"NWA,BC!L/-)E$4(\\[MB:)XJY/U1=P@`)MUSLV8P=S"$EZM=H%*\nMHUIK5FJM>S4*A=P;O<*SDA4L=OLL=C(Z68Y7ZF20I@EQ$N/$38B327'KBWA)\nM%WKC$.=0U241=U:AGV8B8F[R<7!NP@'#\\\\(L]<>Z,U4ZO3[MY1[S\nM*QE+O9PL5W(U?.5*$@06"94:YX+FZPG..=(T19R+Q+E)%UTR46X,0!3%O.>V\nMO;@HFA(7D>4%O2S'J[+2[3.WV&&AD]$O%#,IB]CWGT'P-PHOI46$-(T1<8#L\nMCJ*$^__@+]\\^@"]^]K<(&5->%^?PJBPN=YE?ZC*_W"4OE*J8(1*$=`YQ@58@\nM#ES0O)3"AZ-;6PP1DB0)-,3)9'=ER:U6\\XO'FXX!"'&`V7GGQ*L1G9]?0J(8\nMB:)2!GG#++6-A.MFF`2UB3E0K86WTH4`XCC"10[QM82OO,$K-!W"K-22\\P[FHY%(R)B(-@2L#()B=)1')\nM1*19>"V#.+!-UEC!#;B1JZN7`)B"#EBJ=I]PFZNH.+))Q#76X\\P;J@-!H[*,\nM2%]$*+QB@4R$`!P@=96/U\\%;4FSJ&%C5OE6SK!TB4E'Q480Q60?!ABT`Y")2\nM(%)67W`5XX1:D%40T8`;*6(VD(%*$`P\\7[[+10Z$IB!#ZUE@8S$`8*(@*I0`\nMM+)`904NL/*E^!ZU+A$@L5PQ`X/LJ@E:R#K+-2@`J\nM,`-`Q+GPB*[Z_:KPU;G5)BB34B20K"?3QKA0G>I6_=W,T#(.E%5.-/A,703=WYZ/!WZW+:I;/<#7SM[\nMX.81_(8!B!J&Q9C%%9Q*D#<*)6:(:LCY7A&QL(!71]\\+PQ_8VK[YNZ]>EQ?2LZUNGZ?NW5@,E)EB&$BMK*K51^M.P\\#TJGBO%(6GJ!I87O'J\\26(\nM`$0'K*`4VN?4CB=9WGJ2Q>5I?NP:XU=_KM<>NF'HJ7=%K5_IY^U6W.T!&PSB\nM\\$$;,[,&&%63J^KSF`Z"\\![1W].R??/RO[GO]Y"NAX[*Q2AS\\=*>I-LT,)Z"J(!J8I09_\nM)]0ZC$#V4%<^;L$"%8CZ6`(QI9]YGGUMAB-)1BLMN/FJZW7?H9?V/_'U#RZ,\nMS^NW]-#?_^L??N0ELN(K&P-P_V?_H@K4'686888,`!"O(#[0!O7@RW:B$0!5\nM-4,]WA?XPM>-K.0G3P[_`35.[Z4T]J\\]=DSWSZIF[OVN]B:]U#WW]\nMF\\]/?%CSV<_4>U#/D:F"1]UN+$^YL7,KIX_;$W.M=Q^^SL53]SWW4X_]]I[C<.(S:^1Z\nM\\P`*S^Y;;N;DB_^]W;2LI0:^U'RHLKY>^X8"9?4*K"I0ICH@?%&V%3TSLWT>\nM7MK*RN@0=YV;X^K&/,.WI(^>Q/UU<_%HX]19LL\nM.J?7W9">O59/+7[A[^[ER6]\\?[G>/`!5Q&Q<5:]UJL%]+`2DX<*2L%Z5!=<1\nM9Z$[735]!YJZ(2L5%%G.OF/"?\\N=N5L_>!?+BPL3M]QVQZ]__)?O\nMG1@9'?,'GSSPOM.G3L68K@4@JWQ>#5QDB`TL':6B^255,,_"A3[_-CO&S.@F\nMKG[N-->/+=#8LL3(J"/K]3'35Y)F(\\O[_;<&8&AXA.;0T-[Y^?;OS\nM4^0Y0?N"F>(+OZKYDD!*R4!=W/`YDGBHW/<42PQL;W-Q*3#?`AL\nM55TPU4,&?/%S]VT>HB@X\\-(BCS\nMU>&Z&T>0J&!EN4,_\\*CC9OHJETM!EP+0VKJ-NW[ZH[SP]'_E4R>.<>;T%",C\nMF]G2V@D8G6Z77M8G3A*2-"5.4N(DM,6C."&*H[!K66_V!29[H:U\\Y?Q.%M.4\nMVV>G^>&Q)1JM);IY3+Z2D_?[^*+`5)]9.K]X8:0U^M8`C(UOYM7#+]J6+:V'\nM1>3N1G-XO+/2KQ>)@4(7>%4*KT2%)^KGN(%M5E?W08.+.83ECA]JQ2Z10]/L\nM(ZPV,1O6Y6%K9"U/OSIOK5T8E1R_+U`QC6L=$_?_,91"06>,?,N=G6\nM]PX=-N_7!E2]3QQ7F]U!\\Q*5>\\3.!7<307V1].:F'TP<'VA?\\&>^LW_F3^_Y\nMV9N^DR8FI?`!0%&TM?!'1<1_Z?/WOW4`5W+\\S,<^A<&V;=NV?V/SV*:9[DK[\nM][_TY8<.WO/CM]KCCS[WMMZ]_N[!%1JS,]-,G3C2ROOYM+CXCX8W;3YZGKT````"7!(67,```L3\nM```+$P$`FIP8````&71%6'13;V9T=V%R90!!9&]B92!);6%G95)E861Y<>,@+\\.8$>$$*4AXB(`B"HUC@Q,9V#GL=\nMASCQFMAKK[WKG=V=JX^JCX?JGIE=-B(2E/1U57=7?]^__O4=U6KQTCL>H``-\nMZ/H;SWU1B;I5E%((@(`(^<7=6R,(`E:PQ@DBB(`U%K&6++/]]R8Q$K=3:6QZ\nMMGW[-]X";"ZB<@#:]T,_.O#T>;5A1P.MD"QS<\\2`$<"XL;4.B\\U`<+W-Y]E<\nMQ*X1&7RS=/[D\\CV/W5R`T/GJ5;3OYP?5EMT-09`L<9--"EGFE(L=&+!9KG"-\nM0024[883943^'YD*6%\nM7H52'FTS1O7J6_#\\(#=:[([EU?)'>7!ZC%YF"3SWW'HEK#%\\864?7]\\ZQV@H\nMJ%)EBKSI,!KSM?8\\)`WH+>-+RJ:I7.';[]&C/+Y>LR2R]\nM%L1M2+IH&S.Y:Q>S\\U>!E/"\\$)$R5DIDMD0]B%D^_1IB4@3%R]S,GOTA*XLM\nMHBQU_J,]4(K[+OV1![?-4F&PK6)2^@P@8JUD0M*!I`5I&^(NVB9LVKZ#06>Z>^S/?N>X]RBH!\nMFX+)P,1@4ND#D"*\\D@[$'=>;&&R&IX5-4]MY;P;\\($)[-9`(L67$5J`T#J=?\nMX\\F/S'"G.4FKE6%[*;;=XZZYO_#0C>]2"U+GS"8%DSBGLF:8`>L`V!1E,I3-\nM7&]2E#4$OF;3U#;.O-,B"&OHH`Y4$4+PZYCZ-7@7S_"+6\\^R<^44\\4K*IUJ'\nM>6C'66I>YJ+(&K?ZW+BR61^`;PLT)G4K1R':N%`2"_@$98^K=M[`S/%3;-WU\nM(?`KB*?!\\_&J8^!O)WSW$'MOBWGRR$6^>],*H^4,C'%Z;0Y"C&.YLRBKPA!!\nM85(7_TJ!>*"UBUNQX/F$4<#FW=OHM#O4M^_`>"&Z<07B!VAK4:9-\\%$$Y@J`"I0H2CI.^\nM?1YYYQG,^=.8F9-(NT5EI,I\\NT+]OGM1C0:/'-C*OJ/S'*M.,6HO<\\^6YH!1\nMAGKZ#/0!J'[5,PDD>1_T$#^B^_E5B*%3\\Y\\3$\\\\S?NWCRWIBC908T`I?MW8@9%IQ@'->+7+Y$>GH92\nM`X)1\\.J4;$"G+20[MG+E!GCJC3K/'[I,+2ICC,$D,R0OO8[RJA`#72'H"MVNHK-MG,T[&I"EW#/R#VX.\nM7L.*A\\U2,`:5I5Q.(AX]?CL'YD9SW86PB@'7ABDJC]![.Z"W[QB4:I""]!1^\nMSSGU\\O4C3&ZO0)I`%G-C/>7QW=-<:Z:Q$N*+P5."3\\I"6N,')S[)X?E&7I+S\nMTMS/A*L`&*0\\3G=FE/BYHW@J0G6`MN"W+;TN')PE/\\X?9C8.M^(\\HR#/BPBF/I1>.\nMH*ZH(IXFLPZG,C![59V)+4)Y\\1R^!^-5((6H9#D;9TR$=>Z:.,:+%U?PM";4\nM!FL5)65HI15^<_IJ/GOEZ2$?',XR>>H=W;A$[4+;J&.=P%D`$"4$(3*\nMEQ;^-77,14&,004:M#/HBR)M"T:!U^=.^M=F+T!4R/71,HA%;$9F%5WC,599\nM86MYR=4'4:L`N)NT.X=?VD@T!D&(=\\,$TLOR\\_+`54H"HH%`KV+`BB*J>M2*\nM50FL>3.'H_41DA[?`+G]OWS.UI[YZR)M[ZV>D\\5C_9*NT\nM&M;;/S\\,T0_#6/JC$>+638Q-NJS:6A@D^#E1:V1MD_<9K\\8!\nMC/[T$[_$"[[&V*1CH;7@&-!>L_GHT2O)=U.&I`A2\\P$D^V_/F@\\??("D^ROF\nMST`X`N7:X/\\BMUEXUUH`'P3(VKGK?6.;CQ[90])ZFH4SKM+Z)7O/ZTOS1B?M)\nM>WOI+1>+9ST&AMMZBO^GUOSQ/^_'9'O)DG49>#^C_T^A^<2I^Q'[K<+@OP'#\n33-I\\2K+<&`````!)14Y$KD)@@N_'\n`\nend\n 6617 spreadsheet_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```*CTE$051H@>V938QLQU7'?Z>J[KT]/=WS]>:]%]LACO-A\nM64C@2-A\\2HA5!!&+*)N(B$6D[+)((B&Q88642)%@8;$`-@@I(*$LB(C$R@L0\nM6:``!MD+DB`3(^S$>>]-S^MYT]W3W?=6G9-%W;[=/6_F&2,+&<5'*G7=^NIS\nMZISSKU.GX#UZCWZR2?[ZW\\8(8%"IX=4,55!`K2T*AK5U0RW7S2"I8:S'Y3F6\nMYZ?5/".MYK9C33?6-\\MK&5Q,)YR=C9B,[S.;GJ?E9+3TH>3;?_KY*P4((B!"\nMP/A],7Z)O`X8F4/+`ZW]D\\VBMC',,K-&^VN`@&E;;]?!0+IEUXWM<,JJQ^[N\nM'JF)$F-S(=QX<30:?0-XH_?L;[-XY2^W-?`W+Y\\A(H6J?K,(\\AO[/9^9ZQBS\nM#4;7.W]YS&J'4ZO!I+0[WVK4++=I7J,;9VO-IE:+==-P,9MR?G;*Z>FICN?I\nMW__[M?_XPS=>>_7K_<%P>?;W?[36@!,0#!/AJ!]X_H.[.'G[MI@9-&*"J$I,\nM1DQMF^9Z5$BI_=;M_I3HVI.6Q-1G61_RRG?-38L;/U-5U9\\41?7,O1^^_N7'\nM?_/W+M[\\VZ]D`;P#$;`$3M;E[9(3(3@A.",F1W262S*\\6MMN1`&ON02!J.!5\nMB&)=>TS@!8(O.3X8\\I&C`1]X[!?[WQ[L_\nMX$00`>_^=XQ?)N_R>I($$4-$D79S9%42B`@.:\\?81CL(@HCB#'K]`8<]8]\\U\nM+)]YLCS8W__"DT]]]$41>?D5.A,"D[R+[P0Y$0J_TJ;#2=Y]$4-:IEVKC8[I\nMEH\\LJ"')D=38&_3YP?TIS?(,FR^HS)XXVA]^\\GP\\>OEWO_X:(>^88$F[1=X)\nM$H'@LS:<"$X4MS+3Q!;S3@67%"<057#)6J'AB:-=;A_T26HLFL3I=^[RH]/S\nMCSE?A1_>N1O#2F+O!">"`4T=J>NTP8QT)01'43A@`\\,O,6^7&A1#$516]78N\nMN20S$M*ME\\Q(JB158LK%N4`1/,/]`R:I*.<74RG+JO4!P,1P`IJ4%U[X!U25\nMJBJ8S93Q6+E[DK@W5C[S6T_SV<]\\&(`[\\\\3WSFJBTJ*,7?%+]]U$HTF72T:L\nM)I&_HU+7-?7%.J\nM\\=KW'_#\\\\Q^DCH%_?OF$?_WNA!],$O.BX.=GVNUL8\\;Y!E-UVF:T7C&TR7#<\nMKF_VU5V?4#=]ZIA8U$OB_():A3)(!AL'F'1FRLIWLSD)\\W3`U[YYCU=/:NXL\nMP0X'\\%0?CG:0)_<[`8(3^I7KF"I6S+C,6$A&XX0BZ9IIM\\&T-XH-@0J_$E`H\nMO:,I"LJ=7>+>(;W!D,()W@E>!)PA0)"6>[="(1%F1WM\\Z]7[\\,0AW.S#C;8<\nM[6#OWUL+X(6=TA%<9M9'PSO#.\\4G"!&"@Y#<1I_ADQ%B/AM6WSXJWK7C8X9U\nM[QS.]]"JI.KU"7[CG&I-/VQ#1U;/IS[Y%$__ROMQNP7T<[%^@?8"OW:X'KY?\nM.)X9EEUXL`H9NH!N\\[L+(=;UU9BF]9=F98+)B*W6\\FD-'SKPA%8#V81:I+L,\nM?TZ$7_]9^(7%I(64?+"4OD!,L!I>'X&8Y*CL"@HY..GF;^^18&)KO/9@(4>U\nMFB2'(6JDC3##3!CVCDE6$%QK*:WO/B2`"'SM>W_!5^]\\E4``!5'!FT[4TFDV#1F(=Y#K.3$5/$S)`DI#HQ\nM88+IM@"F1JH3R:4L@$),$4T*"5*3F,N\\JW?7FE"BO&)\nM&Y_@XT]\\',,X/1TQ'`XIBJ(3T,PXOW_.S>.;B!/,C"8U@*&JG)T^X/#&`2N`\nMV#S8SL?G'.P?4)9%WJS4H):A^>STC,%P0"@"VIXM28WYQ8+W[;\\OF\\\\*1J_5\nM`-"3'GW7QWN/\\R5.AG@INGN!FF$IL*@/0-S&!<=(25G4@=GRN+OTU&JMXPK3\nMB6.JN_BBZFYBJW&3*"VT>>,CB"M":$Y=\nMM,:8&A"W8_L'2V,\\5]16,7Q[ZB9E=MY0VH)D0M+LH$GSB;QXL"2=!]1E85=S\nMDT*:SK%22%*T_Y7G%&G!+W_8*()T(4^.6*_1@/>>LBSQSK%753PVZ%&696<*\nM9LJ)S3B^.<0YMRDWFI3[HX9;MV_F('%C71'AY)ZC/QA25A67@>K^J.3@\\("R\nM*+?F3*=3=HI`X5UG0M<[L4!*B<5B@0N!^O57V7GI15(1P'L(`7,>30[='T+P\nM&))-1)48E=EDQID73!5-BJ;E+U+*HJF0>HF.W!,I"81=P?$\nM^0(OK&'T6@$V5"<8[J//XK_\\5X2RW)01?_;64TOL_AT0W*HLB-EB=-9S-ZPSW,VE#BK4Q(-8>T\nMWCFF,7'6@+.,)"NG'%\\8;U;9QKN00;,3GX\\3?5VV>:/-T`%F#VI\\%9#@UIF*\nM-MR8/ZCQ=R:8"SGL:.=1S_GT=54C";`F3>4Z3K#(1J4VA+&:*U8IZ[7"^0YQI(ETDDLA&]@**E*BC\nM=I;Q:!AM!WGO<WO[E.7#*#2H"HR5";4WQ$>9T'*Y;%'H/VF^\\2)<0J&F\nM,>)N#Q="/O4U(T9,RO2BIBC#U2BTC)P!@37*K.:>Q43/N`*%`L]]\\4O(\\8W6\nMA%;"O84)N5#@KT,AUR/T7(="*=\\KD:C0@&J#MLBSA4+JL*;!-7$+@5),3'S)\nM?+&X&H46"V"5('@4C&Z9D!">_MC5*'1R0G%\\C/.^,ZN5"=6C4V[=/+X2A4Y&\nM(P:#(555;ML/<#(Z97]_[VH4VMOK[@#_HX-LN5SBG6/21,97H=`T\\6:(F*1+\nM*)0X'R_IQ^M0:(FO/!+B.A^Z0J&S*7Y'KD:AGQMT*-3ECKC&B[;,#E/!!V")<0:/UQC%V3\nM/C-;_]=Z6H;+@T$?U=8'WBJ+90TYU`?'0N]RVDS>_[_5`#!N4>%\nM$N]RNEX#`G4T[D[B.Y:A?GMDW7L;K)_G;"-YG!3J9'B7!VS&0B;PTD6M_K]&\nMR_30VO\\'M/G^MDZ.;23(R.>)&=X[>V96XQ>UU7'?VOO?/42>WX-K=O9K[[.7OOQ<,YWV4FXU1MG;S0)6V=??;M\nMK+77VO^U]CKP4_HI_?\\F^=9_UQ%`(8V*C:K$"!&(6I8(BI9U)6I15X40%64X\nMKIBCQ?S0GZ>$_MQRK,:1]56+M13:S0:KJTLTZBNTFNNQUUCN69?P])\\]N*4`\nM3@1$<"@/B7*,8AU0"@ZU&*CE1T9+U)%A6C"KE$\\%!#26]7(=%&2P[+"Q'$Y:\nM&6-B8ALA]^)]WA9FCR\\M+3T*G!^[]5?HGGQDHP8>.[&*B"0QQL<3)[\\P-68+\nMY@:,Z0BCPYW?/*:_PZ'48(B4.U]J5+5HB\\4:@W$ZU&PHM9CE.>U6D_7599:7\nMEV.]$UXX=_;TE\\^=/?/-ZF2MM_K4'P\\U8`0$1468K3J.'IS`R(]NBP6#B@_@\nM8\\0'Q8>R+19U'R&$\\CUN[`^!07N(*3Y4Z64SG'Q)33/9?G.E4OFJ2RHW+ESX\nMP1?W?OQWVQ>__?N%`-:`"&@`(\\/RHY(1P1G!&<4'@S=:E*#8J&6[X@5L+(H3\nM\\!%L%+SHH-T'L`+.ILQ-US@\\.\\F!/7=6GY[<]MOG9^=6GW[J^!\\=^=Q7],1?\nM/H@S(HB`-3\\>XYO)FF(]"8*((A*11,&$B!'P43!!2Z%AW^P$NZ:KA*AT\\\\#RBU>X\nMM+Q^FS$5=^'R%>_Z$ELC&!$4R#-/EH419F10G#,DB0%&,'P3\\[JI(:)$A"C]\nM>CF7H@15`C)8+Z@28B3$B`]%,<:1.$MM:II&2-).NREI6BG/`*"B&($8(@\\_\nM_!UBC%0J":U6I%Z/7%D,+-0CG_W,#?SZ9]\\)P.5.X-1JAH^4**-;/!F\\YU[)\nMP^92(%8>*-Y]),LRLO8ZO6:=K%''M]=XX&>/)/..9T\\L\\E\\O-7B]$>@D">]KQ<'.YJJLCS"5A8V,9GV&\nM1AGV&^NC?=F@3\\CR*ID/=+,>OM,FBT+JI``;`Z@,S)3^V2W,2>B$:;[Q^`)G\nM%C,N]T!G)N%0%6;'D?FI@0#."-6*&3"5])DQ!6,N*+D1DA"'3)L1IJV2C`B4\nMV+Z`0FH->9*0CD_@M\\TP-EDC,8(U@A4!HPC@I.3>]%%(A-;L-O[MS`KLFX$=\nM5=A>EMEQ=/^VH0!6&$\\-SA3,6J]8HU@3L0&'Y.7YR7OFV!0?*FUPEO#==,65VJ@\nM,*$2Z3;#GQ'A[EO@_=U&"2F%8TEM@JB@&9Q;`E$IHK(MR!7!R6#^QCT25'2(\nMUQ;4%5%M#%*$(5$)(V&&JE`;FR-H@C.EI91G]PT"B,`W3OTM7[K\\)1P.(D@4\nMK%JDP$$D"K5VC4;:0'4$#_M]W1H-]\\8^(DSFDW3IXO$02@'[?;Y&1]OX(@Y'\nM(VA0INPT#W_JZ\\SOO0EC9.C5MQ(`!1\\]'D]&1HRQV.U1)H.@7NFX3A%F!\\4'\nMCZHB00A9H$$#C1L%T*B$+!!,*`2(X(,GA@@!0A[H2`/[/L(BK*\\O$2M5B-)DH&`JLKZRCH[YG8@1E!5\\I`#2HR1\nMU>4U9K9/TP>(4<>V7E]G>FJ:-$V*S0HY40MH7EU>9;(VB4L"J(H&1S>;!C$C%QPEA$@W<[1Z\nM01'R'OMMDU:TF=P4EI\nM0F@1&6QE0@!BBD.:H305\\!MC^[6>4N]$HO9C^-+KADAK/2?5+D&%$(L#&F+A\nMD;MK/<*Z(YI"V/[<$"$T.V@J!$G*;Q5SDM#C`X>%)+$89S'BRXCU*AJPUI*F\nM*=88ME4J[)D<(TW3@2FH1A:UQ=R.&L:84;F)(;*RE+-SUXXB2!Q95T187#!4\nM)VNDE0J;@6IE*65Z9IHT23?,:2XOT7W^2?S*!::J-W-Q]^VH&(S&+000""'0\nM[78QSI&=.\\/X\\\\<)B0-KP3G46&(PQ*D:.(LBA8G$B/>15J/%JA4T1F*(Q%#T\nMQ:C4L\\!XI8)#B#&BHWW='I=[&2;&(ED0E/5DG&PJ$V.UB\\IS@(SZ4?3ZR[BHD>8YD.3$H2S3XA]OOYO3>\nM&SFZ\\#WNDVDF[G@`D@J5K(6YF@GU52?LZW1O"J=/O8O%,QWV5\\?9>3S3[S.:^?;S%8"M^ZY@`&.V\\@.E"?5ZO1*%\nM7B%_]#AL0J$\\5_S$&,:YPNM')9;7OV8[(TG=UBC4\\ZP"#BW:0QS,7?.1_TB.\nM\\C^[[^4]E\\;IOO8L%^=:K%?V\\KE[#W+?1_?SQ(OK@^S)UGY@Q(2,2[!70R$S\nMAALS`Q0*Q;T2\\1%RB#$GELBS`86B0?,CVL,31R3WTK%&H&+CJ/2MB$0H'U>H^JOQH*];`5\nMBS@_R&SGK9S'_C?GN]49CIQ?8CXTN3!A>'+%H\\N7T:S#IV[?PPS#&UF18]KJ\nM#`!IF@Y0R"0)7>/8C$(=<81HB"H;4"@$H1,6/3XJ(RA!+%ECHDRG+Y*+"0(.W?N),]S\nM``[MW4/_^K0A`[1K8I`-V)P'0F=@$P(-7^;0G//#+-U.M)H.4O8@P/5DEQC))]L/"Z4JEL@'FWBKZ[NDUOGS6T&I[CBVL\nM\\)Z#D?M_\\=WLWS.SY?@0BQSJZ(7&;#GR;:"%A0Z_\\^02IWK"_A=[[WGT_=&YA\nM0C(PH;=?`U'YZZ>N\\!?+X%Y>YD[?X.Z?VPNZ;T&#WV:P!@+SS;/'(I6CFZ5.>F6N?\\X=NN\nM_]ZZI-2O=`?_WX;)L9$$&84_4<5:(\\^KBHZBD`<>XMK]'G@#O?]@-7S];Q[]\nMO5IEYVW7G5(.^N[RRZ^]\\IM?^_./??N9'W2,,8*4S-+_\\4M9-Z4ZR@P(BD;!\nMRUO)\\"A]^M<>Q+DDV;E[[]]7TN3^U95PX5^.G_O"Z9=>^:LTK80L>^S'7OMM\nM.<19EM-JM6>:C<;!D/>..[/XR=.O_,G7[KIGX2=B'L!>(Q[?E!87+G'NU9=G\nM\\BR_),;]875R^LRS__ZOG#USZ>WX_#4CRUNP8?\\'6#O1AQRH-!8`````245.\n%1*Y"8(+]\n`\nend\n 6619 spreadsheet_zoom_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```-/DE$051H@>V9?XQ^^][,SN[L[.^UO?;:3AS'\nM"4FN_?PQWLS.^O:28-<)1(]TM6\\\nM=W_-.?><\\[W?>Q]\\7[XO_[]%OGJXB@`*D5<"KXKWX`&O>?&@:/ZL>,V>5<%Y\nM1=GHEXW1;+SKCE-<=VS>5WW?_*K97`K->HW5U65JU2LTZNN^4UOI!#;DU3][\nM\\IH&6!$0P:+\\GB@_1#8/*)F&FG74_$_ZB]>^;IHIJ^2_"@BHSY_S>5"0WK0;\nME7EWHD*1P<%A7))*FB9-8>R%Y>7EYX#SQ?V_0/OHWVWVP#\\=645$0N_]\\Z&5\nMGZ@4@TRYGF+:I^C&RE_=I[O"+O>@\\^0KGWM4-:OSV1R]?KKA69=[,4X2FHTZ\nMZZLKK*RL^&K+_<^YLZ?^\\-S9T\\^6ALJ=U9?^>,,#1D!05(2QDN6^78,8^>"Q\nMF"FHI`Y2[TF=DKJ\\SF?/J0?G\\G>_N=TY>O7.1Z2N1"<>Y>@)-?5P_,Y"H?`E\nM&Q;V7;HX_\\5MG_[-YL*__'YF0&!`!-2!D8WR0<6(8(U@C9(Z0VHT*TX)O.;U\nM2BH0^*Q8@=1#X(54M%>?.@@$;!`Q,5)FS]@0LUL?*+TZ-/R%\\V,3JZ^^],(?\nMW/W+?ZI'_O))K!%!!`+S?U/\\:@E,-I\\X0401\\4B^.-(M#D0$@^9]M*\\>!$'$\nM8Q2*I2%&BTK%)'3V[8Q&*I7/[]Q]RPLB8-(X(1C^F&J6.3\\L8+QGF,0.H%XS0W&F;&!ID>*>&\\\nMTDX<*\\>7>'=E_1YC"O;BXE)JNQ8'1C`B*)#$*7'L^I217K'6$(8&Z,/PJY37\nMJRH\\BD?PTGW.QY(5IXI#>O,Y59SW..])75:,L80VH%P9H>;"J-6L2Q05\\AP`\nM5!0CX)WGF6?^`^\\]A4)(H^&I5CU+EQV7JIXG?GXOGWOB9@`66XZ3JS&I)T<9\nMO<8OO?I6X5B5MKO'X)^YCS^P.PB!@8&"0\nM@6(I\\[(Q>0[XS-W>*V??7N.^^W81IY;7CESF]1,U+M0TU23V0F0E`QL#J/3"E&[N9N$D\nMM-P(7W[^$J'8'<)Q@:0G96>`=8(I8+I*15VE3&98M8IB1%"YS>4\nM-GU*!TK89U`8=`T4HL"0A"'1P"#I\\"C%H3*A$0(C!")@%`&LY-J;+@J)T!@;\nMYC]/7X&949@LP7A>Q@;0[<,;!@3"0&2P)E,V2)7`*('Q!`YL"M:`=::O30F<\nM8M-L;^B^!ZDG,'G_-(/UP!A,4,07(@K%$C;HVZ?RT+>;H2-SS^./[6;O0]LQ\nM@R&4LJ*E$%^T/#RZT;T2&O:5HQX]Z%*&'J'K?^]1B(WG;I\\DSY>D&X).27.O\nM9;LUW#028',/9"&4(]W5\\&=$^/&[X`?;M1Q2LHTE"D)$!8WAW#*(2L;*KB$V\nM(R>]\\9O72%#1#;P.0&W&:KV3C(9XQ?71#%6A7)S`:8@U>:3DN?L=!HC`ET_^\nM#4\\O/HW%@@?Q0J`!DN$@XH5RLTPMJJ':AX?=MG:9FOW.-CP,)4.T:9.2@LL-\nM[+:E95K:),UX..I!G5()1GCF,W_%SFVW8XQL[.K7,@"%U*>DI,3$>.^SU>Y7\nMT@F:*BW;RFBV4U*7HJJ($USLJ%%#_68#U"LN=CCC,@,\\I"[%.P\\.7.)H28O4\nMIQMCG&*L(#@BF_&M(,_;:X:01WET_%$>F7D$15E96:9<+A.&8<]`567]RCJ3\nM$Y.($525Q"6`XKUG=66-T?$1N@#1O[&M5]<9J8P012$H)"Y%-8/FU94J0^4A\nM;&CQ^=[BO-)JMME2V9*%3Q=&K^L!H"A%2J9$$`28(,)(F4#"WKG`JZ+.THY'\nM0$S?`4=QSM..+8W.1._0$WO-$U>HUPQU/T@0%A#O($]RAV%]78G<,,984J^T\nM$D_J(6DWF1X+B*S!2AY":,8,KA5"`&*R)(U1Z@JDF[G]6D>IMCQ>NQP^WW6=\nMI[&>$&D;IX+S68(ZGR%0:RV&=R]I@8K*,,:;?\nM;KSS7%E.F)J>S$ABW\\KXU'%ZKL&;)TYQ^LP[5)L=)+`$!ERGA<8=1BO#?/R!\nMC_'@_?=@HP@1H5ZO,Q!:PL#T0NCZ22S@G*/=;F.L)3YWFH%#+^!""T$`UJ(F\nMP#N#KY3!!BB2A8CWI*FG46NP&@CJ/=YEQ0V4:>__)`>/GN*UHV^Q\\]9]W'_W\nM#@JBQ(TZM2M76'AGCN5WYOFW6HVE8T>Y>6D>[72(;<2]O_H4X>3$^R/XB-+-@(HA"U$58BP@A,&.(1TM2C&7.#-,#C\\*G#.8]+4I([\nM'N+;Q][BU1,7^,E''V'[Q#"MM766+RX0+RY12MKL'BZRHSC#7+/-X3/G67_C\nM%;;'=9+!,FFK32!LP.AU#>@Z0@1!,;?L)_CB5[!1M"E-@J4ES-@HQAA,GRN=\nM\\W2J5::FIWLHU(E3#I^Y?6V=%[_V31K;M_')S_X,Q@B%H3*J.95XOQ#R/J.T@3'44\\=J`D8S).DF\nM9;6I+!2R&.]1!I\\E\\7K54?*=_-X(1JSGY-GS%"9GV#TSP7(]IIUZSJQT2%49\nMB"!L*;[C"9H=5$J$6W;3F#_!GW]KCJ'Q*7[NP!!C9`8$N?;7W+SXU^]&1-&-D.AU-'>LH?!R/+NV3EJLV.0\nM=)"X3;.Z@ENKTA;'FD])T@Y5[QC=/DNU#1'*Q;_]:X*O5SCP^:>0B?$\\A+H+\nM_3XA9&Q(<#T4,D5LT?10R&7G2B3UD(#W"3[U^"2%9H==6^[F^"O'.;=W)],#\nM!M^L45])/ET)*VVT#W@N"]8'13\nM"`EV[]W71J'+EPDG)C!!T`NK;@C%RRM,34YL<"&$]ML7.')JCD-G+_#P0_<1\nMC6_!;-U-I6`I%RV#48!/.DQ6RLR?6V#QT&%F;MK)8__Z-1K-)L7AX=X9X+O:\nMR#J=#H$QU)*4ZK50J.Y8L"DJ[BH4[:\nMO''L%.??/8^=W$ZI,L)`:(F2!EQ9(*TNL;!PD>B.3[%BQUE8BBFB.`GR.Z8<\nM1J_'A01A:FJ*)$D`V+UM*]WCTZ8;H.G!WFW`U?=`Z"ALXD%YW,DD:3++;7MV\nMQ\nMCTX7"@4*A<*UFFZ(?.+!4>ZYZS:65ZK4Z@V<_P[Y?>I+;?^130!:ZTO/`^U")[Z6(",/E(8;+0]=L/[!CC/:W#E%8>HLS\nM7W^>RLQV9F[=!VR^/<^/QA\\]";?.4GUW@:F%DXR>>9VC__CWK"\\OY[NP9(0N\nMR'\\_;&6O)87Q2:9_[6F2;;O8.G<8>_P@KS_W#\\3M=G8>R%?>;`HA@3A5EFKI\nM#;NA_F"BO>]M`#I[-XW/_C8#S_P*L^>.C[5%O<6]8W'KIE[*Z5,W^Q?;#P4^_N\nM?9"#]>"UEPX=>R)=7'K[-U0_/(6_6_GG/4(UY8Z[!O390KER^XO1#H[/+_[)\nME\\XO/_5@@/M()G&_?&,-'AZU;YYJRV_-FU)U=SD\\NS-T_P7X[M'R(R^_NV>8\nMAIKPAX?-C\\ZZ]KDO_'?SQ.,%],G.AZW9#9#_!>AA7-`:7_3'`````$E%3D2N\n#0F""\n`\nend\n 6620 stamp_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```-K$E$051H@>V8:9`=U77'?[>[7[_7;W^S+]I7T&HA9,`L\nML6,$40H,9@F8@*4D.%!QQ66[C$F,DU`IBKAB*A5C2"`$%\\0XF!B,PV)6_>O*77>V\\^O!DM-A!KI,CYX%-UJKMO=]_[_Y]S\nM[[GG'OB-_'I%G)!>/KL5E#:PK'8,!V4LK"LT[&L:[&LCV(8<]`RB0I-4"!,A17WP1Q"1EN0\\CM$:C,"\nME[M6_AH)?.95T#J'97T.T_I3+*,=?P+*>V"B'R:'H#X*L22T+H*NE="R"`R[\nM3A0]3"1OQ1`'<'VX?]U))O"'+X/6:2SK#BSK>F*6B5N$R?V@?#!$LV<50A1"\nMZ(&2D.Z!CI5@.A"&SQ#)/T:(_=RSYB02N.Y%L&.@]29,\\U[B<1OI@CL"0H,I\nMI@AH0$$40>1#X$'@0[(#6D^!2$,4?IVQTLT4D;89T:@)6V1\nM2UEKDS%QYJ%&,P968DKCAZ]F',P$Q`Z_$[$$AF$"&@.]T#98G[0%;'KI)!#X\nMY&:6]3ATI,U5I\\U)IH36H"">S.*DT@C3!A$#+-`F:&/J:H&(D4AFR/!E#,B8!W3UZ9D;FNMZ2#&.N9L=H1"3C=!5R%%+@\nM!B%5/R14"A.%B44FYM":BA,92?K&-;+JXYB:SK3!T)AL8?T#%DI%__<$A.;=\nM_57JC;`1-^"Z,UKX[NL5WBZ&'!S71,KAE.XL"]MB]&1-VI(&;JC9-1[QQH&`\nM'4,NGAO2%H<%^1BE"8^&&WI86J'43/`?(X'O7<"NZ_Z32*K=Q;(7+9N;M3:=\nM66#K09^?#+@,3KC\\>,+GQ9A)W#8Q#4$H-;XO$5K1GA2<,<\\F;VOV%1L,EUQD\nM$/51!((`)-5'^5&6_>.U(?FM#NS0PTK.FU6]R8H>9H#E8BQAB+2`LL4\nMV";D$@:MC@%*T3_BLO-`C?VC#>HUST6JEY#`HQ><'`(JDO#3`WO>G9?>O*0G\nMN3'IQ)BHAT1:$+=-%K=8K.VU2<0,8J;`#32#)9^^D1H#18^1LL?8A$>C$8"4\nM/T.K5XXG(3AF`CQU,(%DHA92G/"H-4)4&(&4$J7^!2'&D3/?"(Z=`.#6?.BOO/BSC/E(2SIV8SX3\nM)XB:P$.IF_>1)HP4GB\\Y4/(9G?")(ME,*:2"2/P893\\""I[=,&,",_:=\\=O?\nM105RR;)%AN\nMFO/#%R+X(8JR%K#A+XX=ASE3`KKS8KJZD^,'AVLCIN#"=,)(^$&$[T4$042M\nMYK/G0)7RA#N5#T401IA1@T\\O>=*XX>R154[+O$NE7SS3$%'9LMFW<3W1@\\\\=\nM&X[C.P^L_6?8.VEF5[7?NFQ!X2N9E&WXD<(-%/W#=<8J_A1;W50%EY\\)=VRT\nMZ)RU`JU@?.`9BML?J#5*.Y[42M^)P:L"Y'E?.!D$`$Z[%_RHNWM6]HGYO=G3\nMI=8,C;D,%AMH?7AQ&@)Z6RT>_:OYK)P+@5]MMELIHJ!*:??CE/J?*@;UT8>`\nM>R3T&:#/_?P'#S_C*71(6JXDWV76)BLR%[>-"Z)(,3A<(PKE("#BNHL(+TBFC9(-EZ"JGV52F4>U;D%3<(%<6`/==OH/[IWX$'\nM?O3>PQ^W!]ZX!TZ[<90/7WS;A4/AZL="%4L-CS<.?Z`TRQ>U\\*$E!=8O>)E+\nMUM6(U-2P&C2@%2BMP4B`B..6=S(Q^+QT)_>_IB)UIU(\\@:`F))QWTPDB\\-)=\nMH#2F9;+$,KFRY!>N^K/GOW1J7VF6J-2\\PQ]JS9EB"O%6M/D]PW3O-A*9&9UM\\X5G7G)]N+125GYZ_9/\\O..3M3U]_R*\nM!)[]&B1L"".R4<1'39/K#$-\\W(S9!3N1PHX[F&*,K#5,$,XZPOH0BQGT'ZQ2\nM+AT@9P]@$:(T2-UT_Z$`I4!(0(*.0$;3T5>@I0#(`Y_)Y=BP\\0^XM?<3W*]?\nM^U\\(//W7X'D@([H]S>^:)M<*P1F&@6.8`M.0"%5!!V50&EM,(.41'A"@E&;;\nMKA)Y627E:&RK:6D1-:_3!`P#E`%"@1!,E92:5M!:DW!BM'^`EIAA"&+;)O+@:N%8)EA8!E&-\\>'9(+-8,ITH="7`*ICY:IS?N6-RA\nM^,X706OL,.1#EL4U:"X%Y@B!F+;*>VISMI!A&-/?C8QU-L_"@(PD(R,5:BV*\nM(!0(@U^8\\TU5ZK!*"68L2;YG$>T]O:3BHXB@#Z+*U$B\\"6AQ^A2!'_PEI#.D\nM#N[G/"&X3FO6`VV(7[;4>XJ`4E40+ZSA4^?W\\O:[@QPL"WR5P(@Y1")+J!SJ\nMKHF(A41'`(^BH^^U2)+M64U+SRJ<^`2BL059'6QZW;!`1PW0;TT/;;UZ/Y@F\nM"1GQ=<]G4Z6,<^3B^B`]TFI[AS1];SU#T4F1[UU!OM=BLBXI37J(8(#+E_\\'\nMEO+Q_,-6/@0\\!"T)V@)IX#G]R!Z:=QW3.1<>RJ'"?-OSMKQD$\nM[TSO\\9;G`1I;&&*-D\\&I^AJ_`'"KD&8F]Q)C[Z#T9$Y3$9=\nMY(7!+'.1\nM7X<2T"AMF]3>P+\\+6;E;1+R&@>R]])>7GW7U;4!R)8V*-]09F"0S[21;3V?9\nMZE:2SDMLV3;*COVP;C$LZ#X,WC2;ENP?AIH+\\=C1X*>E/0M:@B\\%L50OV=D;\nM2'6=2U`?9."E+^)7WL)V6DD6SD78&1J5O9YR!S83E;XI%,\\+`W_15>\\?/TR`\nMLQ?7WP;%">@N-,%J!<4*[!]KAGW3\nM;'K)-)KU7=-H>J6G!5*9%IRNCY&9009U$?CEV9A&A5X[<\nM\\EM;@FK_5R.O<7LDV>Y6D2LVO3_X0P3.6AA2JZB^R=*^-VJ5TES3SLRVG8+`\nM<##L`BESDJ[,)(-C\\-9`:FY4A()U.,FO^"C*]'T,96<;V\nM;F9T]Y,$?IE$;BF)_%)D&.AZ><<[_N3NVT.W=HO4>DO0(%AW`_S3TQ\\,'H[(\nM1C_2#E=>)MC;KSO:>CIN[)ZW^D\\ZYYS:&;-,W.HPQ;TO4RL/,#:I&1R#I`V]\nMK9",@S":'0G1[#$6BY%O[:*C=S&)9!*WTH]7V8-I&J3R?GV[IB@3?!\nM&B%"Z&1K3#K2D(99H5J`-`[3TL&(VJ6P'B70;`HE?'ZZ'\nM[LC32.^;0O,R$%UYV\\R`3\\M['BGW^O!J/_3$\\#:_ZF_)F`=?J$Z4"L)(+,JU\nMS;>T2%`I3Q`&(::82@$`T]1$H8_6X&2Z2>9F(_[Q7&[LY]*._\nMBR1[*B.HC7<>'WCX%4]D5ZP$KT&JO2?Y>QT]\\[[\nM6,C5:W8O+G2TW=3>,_]3F7Q;.O1=)LLC!-5=M.0BLJT]Q.R$]ANC?2JHW8?6\nM#XDX0\\J%+SUPXH`?,X%IN6(EN'7BK9WV187VKC]OZ9AU6N![HC&^C71:8MOQ\nM(4'T;92\\+Z;8'0GT+0^?>.#3,J-#_=D]<-Y9)KO[Y.Q<:^YS=CS^1S$Q*IRX\nM_KXAN%MKMB)0MW__1,/]93FNLLIER\\'WL%K;.3>7A:3#3Z0DN..I$P7O-_+_\n77_X'437:/$%6J)X`````245.1*Y"8(+W\n`\nend\n 6621 stamp_zoom_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```/O4E$051H@>V:>;!D57W'/^?>V[?[]MYO?_/>S#`[LS,P\nM!I!`&65QE%'<2D-`2$JB%2N6&B-QBUNLBDM908U"*5%11`(8`^((&`8%81!F\nMWV?>F_?>O+W?ZWZ]]UW./2=_].`,<41G0/PGOZI3I^_IT_?W_9S?V:OA_^U/\nM:^(E>@:TSF!9[\\.T_A[+Z,0KP=PQ*`U!91+J,Q")0_M2Z%D+;4O!L.M(>1VO>)D!_F8;:)W$LKZ$9;V+B&72S$-E#)0'AFB]604@`PA<4"$DYT'7\nM6C`="((MR/!O$6*,6S>\\C`#7/P%V!+2^$=.\\C6C4)FQ"N"[X'L0[X+V3"ZC^>;91<$XXU]H#:Z70>OK$,(&#;()I@VV\nM`W88AM<&;<%W/C4RP#PID=9/<^A\nM*VFN.W]!/"&T!@71>!HGD428-H@(8($V01LG<@M$A%@\\1;9O&2*:@C`D90OB\nM$9;K8;+]L>8K9IN;0C$2&47IR&7():/H!52\\@\nM4`H3A8E%*N+0GH@BC3@#!4U8]7!,37?28'(V;..*GUDH)?_X`$)S9*Q*O1$T\nMH@99G\\^8**@D@_0X![KN3H]?^##-5`ON3*50O2UHT7Y=@UX?&K\nMX2:CI2:_*'D\\$3&)VB:F(0A"C>>%"*WHC`LN/,9?I.9?9DDNCX4,8[D&K7[^8\nM#<$9`_"3S3AOO%\\.CE:^NZ\\C^H;U2W,Y+P0OA+DJ#$]K_!`\\J4\\DA>N'E&H!\nM^9)+K1&@`@EA&*+4'0A1(#S[A>#,`8!FS8.A\\A-[4^;=;[*I*+YL"0]"\nMW?HL-8%4N%[(>-%CIN0A9=C:4H0*I/@%RKX;%#R\\Z:P!SCIVQJM_B/+#Y:N6\nMYN[;L+QMC1)&J\\7#5LO[4E%KA@SG&\\S5`K12K54\\5#BB[EZWX*[OOWW!3Q^3\nM\\%,4N.%B:G:M"FX*ADS8IXO\\5R)[TMJ-8]CXU7F\nM2LT3^R$)@<24#=ZY_`'CW9=,KW/:SKDF]/(7&4+.63;';[@"^=U'SDS'BSL/\nM7/`M&*F8Z76=GUJU./?15,(V/*EH^HJAJ3JS9>\\$K6XE!6^Y"+YT@T5W_QJT\nM@L+P%O('OE-K%`\\]H)7^BC!X!@@O^\\#+`0"PX3;P96]O?_K^17WIC:'63,XV\nM&G[7]C]67>AWUC[V\\CVF+5*.-**16C4S5D$/ZFY2.F8$E?FBO6-GCK\nMQBE"=QH=E%%!F=#-HU6=>-M*$IWK$JCFQ=+-;Q)*1H!C[]I$_9VOA>_\\[/3N\nM7W0$=MP*Y[]GAC_;_"]730;K[PM4)#%5:)RLH#2KE[9QWO(<5RS>QC6OJ"%5\nM*S*AM@B5@=8*H16F9:-%E$;Q"*71K6&S,O:LDNHK2G$_@II0<-F'7B*`I[X&\nM2F-:)LLMD[<5O=S;_VGKAU8.%/M%N>:>K*@U'[YA`X1EKEYT%VOF>U3D//*-\nM?B;G8I2J$AGXV(9+>Z)$?V:63%P2RI#:[$%JA<-NX-8?"4-N"4,>%P+_\\IM/\nMOOZ,UH&??0&245"*J%)<8)K\\E6&:FZU8JK^W?:'HSH8S1B6K%9\nMN8U+0=_C>7SM=C=W;T$JA0P,@"]R4R;#IQK_F4WUOX';][.\\!>/`S\nMX+H02GI=S>M,D^N$X$+#P#%,@6F$"%5&^W.@-+8H$8:G1$"`4IH#QPJL7[*6\nM[<.3[!PYPNO?\\&KF=R3QO2+ETB"N/TT\\T:1[&2SJ#=FUSV/W[,6DK6F6M0VB\nMM2+F1.CLCM';[?<[,>]:O9V[T#1."W#?1T$KC"!@J6WS%N`=0K#*,+`,HW6<\nM-81"H!"TGDT#M`I!B>>=\\UPOI%AI,0CQ8@;()F%$T3_D\\$[OP@\nM:(T=!)QG65R+YAI@@1`((>!WIE9O(<44IC=(&.ENG84!)24].9/"S!CIK@Y6\nMS.^ET2B@E8O;G")F>,0MGYAPB6@?K22]*<&2>6T,CIU+;%Z=1Q_XCHTS,\nM"3P5`SO&TGD1I@L%NOLZD=(G5`$Z]#&41T1(;'QL7"Q5QS0L8FTK6!Y;S&Q=\nM42Q-H6N[T(!A6*!E`_3>YUQ;S]P.IDDLE'S1];BQ/(;"9-J-.$SB5H,XL*CFO#._"L@7_PN37>L,)AOYIFG-S$>7<3TS"P-UT-+\nMB1&&@$6H(EB9U:1[SB<5CQ!6GL#W?%RW@U@T0CJW&$F1L'KXF"&/WV[BW^$J\nM:](Q6G<`5KD"Y9TYM-=*Y#&(,>&IY@I*KI3D$F<%!R&+='/W8!HW7H>\nMF8:Y2FNJC0N/7/PH@J,@P#)@H9/#RIS'@1T'.#Y3H#MI@%0$9@^)>1<2S?7B\nM-G;@3F_%L01.Q^7,-2UJQ?VD#_H$@)3/SRLU&!AK"8U:8%L0,2%B\nMM)\\6V9_90;`KJ9A_-V!KJ;H/)@;N9'GT,5W=BMK^.0Z,6\nM`T,5)D9V/Y!4!S?3J'VH4>=0YG7HW%7/'W[FO;^$E='[J);G-F9[SGM5Q.G$\nMM'/D2U`^B!""6&HQV.=P:*#&_OTE]NX]]*NG=XS<=._3J_>_\nM__-']9=_>/KYPP2X9%F-9J.9,^WLE?',?$<8,;1PB"=RM#MSN,T:6W=#O@2]\nM.8A&6A')EV%LMC7MFZ>(-D4KMPR8UP:)5!NISC6T=\\TG8F>9&LDS-GB8>JV*\nM#!-X09;\\M.;@_EF.'"IP8/\\!?W#@Z,?3ZW$*D^2E=')_%8'UY54"D$%"8;:G:J6B\\6JKN*A=FG\nMHXZSHB,1SRX9V_OTMHG)XFH!,R\\$\\-A^"`JH]6O5X.#!R0K['A'\nM,F)G,>UV0K].NU/&L>'P>$N\\8T,LM2-T=/4Q?_%Z['@[I>E]%$9^\nMB=^<(Y%JIROCTQ4=H,,Z,&J;?'W.Z_QJI5*Z;79VYI;VO>U_(_<!4VW7)/08Z/8>-3HQ7'BP4AK+-YO>REBB/9O(\nM]N.Z(=52D:BIB%G0\\$!I<")@V1'L6)Q0NC0JTT@9$$OVXF07(8PH]?)XO58<\nM_+%7+WY0>N$W/9^I"_\\1_8TM)_V?-[R=8WMV3D&@-3JJ7>*8?8<9H5*;]:F%HJUN;O3GPY)=ER+'R\nM%.J&K_RV[U(CX(UI61_U.9@1X6O::K-MHF?!4JN]V[QS]X''_MRQPT%Y\\BK^\nM!<_$@V5H`"O:F)H>KVQIU*:&?==;DL%GE&9WM8Q\\S[_#@[M.[W,X``O!)U8S\\61!S+83\nM7)F1S:A8L'Q]>R0Z<;M;G\nM8E8DMB+3WF]'XVTM$'>.J*V(I;I0"ETIC@XTRODO!*[_D=#@<;^!^[[;X*'?\nM(?Q4V]4$VX6'RAQ:YHADMZR^THE%H[KWG`U?_?#-SUZUYMSC6T?&49S%F?BM\nM:Z%9)]K>;5^=Z^SY2%M7__F^YXI&83?)9(AM1R<%\\GNH\\)L1Q:`4Z(_==:9>\nM6O8?"P6ED/8+$_K;_8GHYLD5E["MI)]\\8,O6:S../?*CIG_FURH'\\M#E$*Y=\nMQ<'C0Z4MOE=1@=]8:8BZ9PI^$,KP`X&O[PQ""I^\\!Q[==W;B`?Z[#._M$LV)\nM0.Q-(U^5J!<[AT-KOM(Z\\KU"]:%7FNBSNA<:K<(3!S4K.JB4"MY6TZAOLR/<\nM;5E\\(Y",??Y^].,'SU[XJ98S!==U6_E=-3WIIG)79C*927^N^.V?S[G[%IHO\nMU7\\E_LCVZ:5IZMJ(7)HV7K,@=(__PY[&P3='T7_G_:F5O03VOX8VZ?-H&J1K\n,`````$E%3D2N0F""\n`\nend\n 6622 store_house_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```-@DE$051H@>V82Z]EQU6`OU55>^]SS[G/ONU^V$FZ;<=.\nMK$@.MB&1$"."I41"_``&,.4'\\".8(3&!(:.($1)B&JP,("C8V&#\\C-LFMKO;\nMW?>Z[SWWG'OVHUZ+P=[G<6\\[8AS))=59JU;5J:KU7KO@Z_9U^[K]5C>Y]>WO\nMH%E?,-:^;*U5$0$1!$$$0!C`!KZFB4DFO.;JOJ^V]N_0MM&=L41@R!V>S,S,_G?YEB?-_=NO4TIZ.VM3:,%[\nM)I,QH]&(:`5W='1,US9\\^*L[[!V<,AJ-UA??N.B:F^HB^96OK*_[?^\nM*_?<8*IM&AX=/R3&2--VN+.S4X+WA!CP74=959?4>'%3-C9=2_@RU=-&<\nM'C>7B_:^@7_%N.M:SDY/B#'BVQ87/_^$X`/7GK[-?BXQ30N:0;6'65>XJB++\nMN;Q<>VW[RXC4XP;(*>,Z#UE)*>%N\nM:V`>:EY]\\7OX'\\`KS!*Y`&16.3]]\\@^;C#RE%>ILU@PH'\nMB"J:$RF$7C+&8JQ!C$6J$46U17%XM1_;OF/[D$Q.V)R0G#!#MSEA'22M,1";FG9Z2C<]\nMQ<_/2%V+:,:(8`8'-2(8LW966=%[<[`"!NVEN(2B:YH\\/N>6X\\TYZ4W(>K!9\nM,5EPBF*OIUJ[@9F?HV5C46A`A\nM;4A^+?T-J>>$&22]DKZNH1NTH9K(,2)MPN3<,]!X3QTBN2Q9-"WQT1$:0B\\U\nM$:P!NY2R#/B*]A5S0\\2P&UJP:._(@R8,CT-!!\\]6%$@;,`Q[&.`\\*5.O=$L?\nM^&1R2$R)+\\\\#(U4%05.X=7:=J6\nMJG"XLD*5X8#EYH_WQ^?LXV/;X_8K:,OUU@[_&X1GK<6W+4)F=_^0DR^/V-W;\nMI;EWGQ`\\_;;S].V#;M[!Q16^.X+W^/^PX?LC`JJ[7U"C(-SF@M1:44S\nMZ^1D+JU9:NLB33:T2;C?VS!1%299^/)Y,4-55&8(([M'1\nM0]JN)83`>&N+C^_$_3+'"?O?X+8DJ,BH(M9WE0\nM%'W-LRR-AZ^@Z]=N\\(UGGNWY2(F<$BE%0DSD&$AAV3W)>Z+OH>:T_B#9L,7-\nM6FC-'%@$,="9Y5)%5#&FCTA1X:SK*%&.?,(]<7I,I\\K$&K8+B[.6;"T`14X4\nM.2&^X^7??9E7__@GW'WC=7S;$MN6V+7$IB6D2$PMH:O[FNA\\3G-Z0FB:OOA;\nM)L,E7-=T*QP!IU!F."_`CBU!+,%8O+%D$2I-D!*SD'`Y>NJ`%[__"J.J&JK+C"5C)&-(&!*:.N:=\\.35;4@MUDB?;363\nM4B"GA.9,RID8$^7.`5MW&^Q[=W&:,.=G=/4"?_R0SCHRPD@C&B/!1R1%0M/A\nM#G9W*$/DZF3,S8-])GM[V-V]WOK.9S"?$DX>8363VH;*";>_=8,__;._0),G\nMA984.W+HR+$EQQ:-'>?3AWSRZ3V>_N8UBJ)`4R"TY_CVG-"UQ!B)*1-3POM$\nM.9ZP-5*2P*BP'![LDK?WR=M[I.U]U#EU=AY@S$/L"+8(:(MLO*@RXC`\nM%_4"]\\5S+Z-`N[5%/#QD>_BP+XH"5_20G`EG7Y*;,PIGL`92Z-`<(/>7WKS\\\nMB@%;4!@E+$XH!,K*H6I)64DI$P9AB,!H-**J(DG@P#2;X5YXY0TU$WU#\nM3@')`2'U#)`PDK`D)+>H6*JJP'J+-7:(R$I*2DP9.Q2`H%35B+**=,#ADT]Q\nMY0]_TB`U+5H\nM5U,X@Q$(OD4&\\U%)"`F1A.1(:$])S0G*/J/1B.0+K.V3?LY*RID04^_8(JAF\nMRJJD+$NL@<(YW&0'39&4$BEGTI![T)Z9G!*JBDNIOVR,B1`BS@527E^^[3S=\nM\\7N4\\\\_1ML-9P:#$KL8:,$24!)*!@*^/D3#'&7G/0(J1F%+_4=]SV&?5E"(Q1G+.O0;"\nME-F]=WET=`+')X3%.<40#D-7(Z6#0?*JD79QA,0Y6U6!B!"SI2A+3.5P18$`\nM.6="S(/DE9PST=F5K5N!_:V.V[<^YK77W^4X?H_1Y("<4[\\VIN'R<\nM17&#L^G)(\\;^;5Y]L>;N]!G>_L\\WZ6;'N)MC(-/5,R176.FE[YM'2)BQ514X\nM:T"4J-)?K'*4I1LB6J8+$5#R$$:M%:QS?="P\\-'G!>;T:5ZX]C.:=]_EP?0/\nMV+GZ+*I*C(-9Q5[(+N6E!E+/78R$X+E]^)!WWI[SSU\\*K_Z^4[1$X:[!&:+QP4BOS-G$R]YPM(E82E56<\nM*`YAQ_51SQJXLJO^J7P5/DIHKNTV]_$6"'&,#`1-TPHY:'W)M2VGALW\nM/"__./*//U?>^%"9GT-AP!E!K&5G9X?)]AY%65)6(\\JJHC*1RD;&14)B3>E`\nMR$PF6^Q4.UREY'JTU!ZB;TE^@6\\7=(LIQCJ<*S#`M0/E]O<#;_]'QT]?$YYY\nM+O&=FY&<(<3$VNP3+@_>G5-O6S8F0O#\\R^OP_%7+CUX.W#^'MS*]TQI(JFB.\nM=/49]>D<0V14%4RV*G1<44PJ"FLHK9)3!-_T63LKN0ODUA/#4N.)'#QB',X-\nM)O29X#^%'_]>))TI[Y]F8HB(L&%"`P/>>T((=-[3M2T@-'7-LT]V?/2)X'Z`9CC_HVG4V5^WE!L[6"K)Y%B&V\\=P4;24#'N2(>33`B!IA$6J>#<\nM.\\Y:PZ(#)X%*.IPVV)1!+-856.DU\\.#4\\(N?.YXY$)@DFJ;!F/YMU/L.'P(A\nM>%Q=+VB;%CMDO:[KF,UF['^KX<]_DGCMK6W>O",L9N#,\\#0B,*X,-D_9HF7L\nMYHQ'!55AJ0I#51A4$U9Z;98F,*F$Z]L)52%FI?.!KNMHVX[%(J)B<46?8PYV\nME9=>4CYXR_`/KPE/W.QXJCQ#@*:NJ1<+8DRTS0)7+Q9T;3N\\!CC*LF(^F_&S\nM7R:F)XX?O"#<.X6W&$Q((*5$?3ZCL(IH0%*'AH)4%6A50"Z&CY1$UW5(V^)#\nM0!"R9E+,^)CP(='YB`\\!Q6"=H7#PT6>&^M>6/WI%26?*O]WIF)^=(0)-TU`O\nM%J@J=5WCFKHF!)^-,2K&)%<4+.8S7GI1N'LD?/)%X`??/>.)W:QFVC]`Q1CI\nMN@Y3%<2A+(@I$V/&V[3^S,R1KFW1-F)L_TJ=E54)[4/"AT@($<7@7(D%;EZ)\nMW'\\PY=__-?'M?7CNAN?^;(81Z+J6IJF-B,E=V^``C+'_E'/^WZYM-'C/8E%S\nMZYKEX!G#7__T$7<^^)`?MEVRTI='>4A`?==U%!L28$QY>!#.?6*,"9-U50OE\nMI(15V.[7J_:O$`+DGAL/#2!?:OH0)`4",,?]CC.7K]G7[\n:NOV6M_\\#@*=@>"+)(0D`````245.1*Y"8(+#\n`\nend\n 6623 taxes_add_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```/\\DE$051H@>V9>[!D1UW'/]U]^LQ[YN[4""\nMD!!"LED@V6P>N\\EFG_?N?<^=YWGTRS]F[F:#A+TA:_F/OZFNT]W3^#_[?_6Q*D&_-U="X`0'K_!$PH^@/<0`O@`/@2\\!\\^H/OK>$PA^U#ZI\nMI$E"9W6%3GN%[NJ*S]*T5:Z4\\F__]?4_$X#HE`BE0$`<@OB8"%Q!P`$$`N'D\nMUQ"`((;(&+5/O)\\3(XFTIEBND.<963)PWN8/+2PLW*POON&>:G,J;WWK;T\\O\nM`"E`@/1PYG1-;]_G`^X$'`>_$EUYT_N&[9/KCNO,5:33A;I=BL<.7KL\nM)97&^#7&Y%^DWO._XW-&G8>\\MIP>`D*.KATV-B%=NKV)<#U@6L'Y9AFV']6?T:ZXH86Z=$PIEZHE&KUW]_7Z%X]M+"\\7>=M>/\\\nM(X?WKFO^IP:@1BP(0J`CQ?XGYOC.W0<(*-IML!3XC>MWH&N:F=23VD!N/;D-\nM9">N)_694=T%,N-8:%NN/C_BW+,NH5ZK7_/44_L_N+*T\\.[+W_V/R8.?>OL+\nM!R"%&`$)*`E'CJR2IX&E%<\\MM\\^158J\\Z;IS:$C!DH.>":0FD!A/DGO2/)#D\nM?M@>]26Y'X[)/6E:9,?R"M6XR]:)$K%^Z76]9/N_!N=NN^%8X`_/_.DZP@\\`@A$$(B!$A&\nM183AF+$)OO;T$IO5,J\\Z:P-S2:^J1?%UG_O`']S6;'[A5--;7Q"O786`7,?\\\nMUWP@/:L)V\\;@_'&BLJ80"8K:XX(`Y%"4PC/%!T\\8]7O`X_%!$`H:UYQBHC[-\nMN6?76+!+')YKG77=^_\\J6EQNV=,$0`S?6(#)+36N?,LY^*D*86.%J4T5ZN6(\nMD@QL+"F22)(93V8$:3RJVT!J/)D9QD5FAK&2C?H2XYDN*[025"I5&DT5)G*^0.C`.3],B#P@1-:CW;:X&=YVY%R9'7\nME5A'GK`N&5U3H2$8XQRB5H>XA#<>8P.)5_1=ABJ,D4K/P`SH>0^R3B8\\&9Y!\nM-L#(*IF%S`7R)",E)J7`(/=450^MAJ(A1PIP>CPP6L@"HQLZ2W$P(,T6:12+\nM2!51LWTR";A\\&J4HPM4YC02\\2U,,R34&KT4(V\nM=,%IHI`<`?`G*!1K?1*%`MV^9Y`&E/?/4J&3*92T!MB\\2[YX#)7UB+PAC@L(\nM%;$RL&QN5IEHC!')`CH*Z+B,.&DK^C,#6*,0ST6AZ"0*U7A."CW1[7'@P#[.\nM'!^G-C7%H<,'65PX0&5>)QO_>!F*AM?C!.5C=^]^],7]1=6'N5J\nM$K[]@CS`R`/#H))2HI0BCA3%2*$BA5&2H,1)%-+#A6Q$(><\\R?(\\C7*!9K/*\nM_N./<,N#7V:E-\\>636>P9>,6+KSX'*PSM'H/\nMV$,K.\\ZU5U[+FZY\\$UNGMV*]I3/HT$[:M`=M%MH+\\JF9IR;NWW?_&_<\\O>,-N4]J\nM'58X4NO(G">V'A^&_=W,PL#@`RPL'>)[AV[C#5>_EIO>?1-""@[,':";=1%*\nML*VQC:27T.JUJ&^L<_3`8?JN3R\\,J(Y5N?2"2^%)+IN9F_D4`WZ;2]G/1F#W\nM.@#\\N$DI*99*K.:&6:_P1M#+!(,$%,,=5S)P]/L@3*#;[_$OMWR$+5,;^<@[\nM/T)F,Q:[B\\.4V_2(1^ZYA[?^\\6]AR#`BPXB4GF_3\\:M4FQ5T\nMJE]N(O-A6KR-:3KK\\L"S+5"MU>AVNXQ7*VQ0PY][7<:'$D(J?)`$'V%L$63,\nM%^_X3Y+EQ_FSW_L\\QAOF5^?IVSX#.V!@^Y15B1`:I%G*ZFH;C\\.JC+YO<[A[\nMD*.MHZSVV@R2#%D"$<2U081?9YS/\\@O/$T`(4"J5*)5*ZQJ_TEGA[A_\\!]==\nM_6:F)Z:979FE;_OT;9_4)Z0N07E!(."LPUI+D)ZE?);][<=I92V\\MI0J&J%`\nM*H$0Z!S[#C\\;_IT-+#YO"CT?>^#1!YA=G.6J2Z[B>.LXG;1#W_5)_(`\\I.0^\nMI1`B((QR+4';+',XW4A;THJ;AP^A*F*E,G\\AB`>_?L4:5X"LXY\\ES2YKF=/O):/(!YWR!/+RR.4+_?@Y`5Q_Y_5\\^>8O\\Z>[?JE4](T++IJX&4;L=8LNWF>6KB5^60/2]TG*5C%CV9_R!7;KZ0]:#-1F&#VZ5EF\nMCLX,)Q7"<'\\A!-99:K4:5UUU%8_OWD\\T$H<0`LX[LB1CRT6;J%>J+/=6B/.(\nM3-NFWJ0*SPG@*U_]"K(AZP\\]O.<3TU.;WN!#;7RL?`F;&[_"6.E%1"HFZ&5F\nM_2X&Y@DZV4%6YF:9WS]'O=F@-E[#2D=F,CI)AVJ]RO']Q_GL9SY+FJ9X[X'A\nM!LD[1YJE%`H%QL;&T$H3`&LM69I"@/=_[+T4"AJM%5&DB)04*A+/K4)9G@$4\nM%Y<6=R9],W'-R_Z&#;7+6>JL>:SS"!31N,`^DA,IA5(2I63/M8)95Q`[Y\\EL1!""3G*06^_[(VIU\nMR>9-9S(Y.8FO!\\K-"L4SBH128)?9Q6)KD5ZQSWQKGLZ@PT*ZP!,KCR.TQ\\J4\nM7EBA)U8X>^/97'OI6RGJ$G?<\\0W&7Q:S;^I.TBRGVTGHC,KRX39]VT,I120C\nMA!1'S9TN71<`#[0&%A$;6HDE-X:YA0ZM5H=ZK<[DQ"3%2I'YWAP+?I&.[!#D\nM4!K5LF+?L7W8HJ4GNB1TR6076714:C%3C0E&])X1`;C-:O199;NBG*9TL\nMH9,F)&:`#X%25*9/'G#A!UMOFGAN"DDA"81<2O%$K`M;VZDON:ZADP6JE1H!\nM011II)2LMENH?H16,9O")L;2!H,LP10,;=/F]@=OAP90"91K,?5&B494QKOA\nMN2FLR:/#&$>GDV"L)4T->68QQF&L0Q,3ZQJS9G$VY-QKENQS`]!:DW6S55U7\nM;ZN6FY?94+UFJ6>N[*3^O$JU5I)"$JD(%44G-#Q2BBB*4"I"1()JL\\K,AAEV\nM?W2YQ1A+"."\\P^0YQCK:R0#GAM\\G24Z:YG@#VVKG\\N3Q\nM`V19]M6E![O[FB^I_I0@_D0&0(I=V?(/MWYSKL>=<:0G$M.^M%34K]>Z]CH=\nMZ1U1%,61&D[^&3`*I13-2I/MK]_.P2<.LMQ;)IB`,98\\'Y8LDV39\\"^`/#[PO^6)<\\3+JY1IQ\nM'+&8S#$_F*&H2EPT=3FOWW8MC\\[MY8N[;^XL+BU]H/^4^:1N2#/WZ?8+`W"R\nMO>O[[\\0Y)^,XWA''\\0T@;FBU5K8=GYL36D>4RJ5C29+>=/N7;N];;?]<5N6V\nM:J-$M5*F5-3HHJ)8B"D7BDQ4)]DQ<1Z7;7X%DZ5I;G_BZ]SVV->.=MK=&_-C\nM_DNJ)NSQOU\\]\\>S3`F#-;GSR1K(L$]5J98>.]#OF%Q9NF%N<>]Q:^_ZCJX<>\nMN/^&!P-OY!*JO$=5U36-1KTQO6&231LV,EF?H%D=IUEN$D+@R.HA'CW^2&=^\nM=>X.U_*L/2Y[K/>N9I!;!FGVQ_DFJEHN87YL\\[?/3P4KU>GW_D\nML;U\\_2U?AU\\&4HJ,<3EEKHF*ZO)BL7!FL1`78QV!")GUYIAU=C>&V^C+7;),\nMLO3QWD]\\UO\\*@'79A<`"@DLI4V)<%451*8$,,L6(E?1^TQ=3(H0'?OKAUG\\#\n4>6TU;$`D4RP`````245.1*Y"8()<\n`\nend\n 6624 taxes_clock_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```0I$E$051H@>V8>:Q=1WW'/S-SYIQ[[OKV9SM^MA/;+X[C\nM."1AR0:$52'04D@0$*,ND(JEA:(B5;11H46B*JTHJBH*$FIH&T0A;1$"`DF(\nML[!DL[,XMN,E7N+EV6^_[]WEG'N6F>D?]]HX@/$CN.H__4E'9V;NW'/F>W[?\nMW_:\\(_W3P-"6&R_Q076@;7@'%@'UCFL!4NOW?O=XG"VUS_C\nMZL0QC85Y&HOS-!?F;=+IU(NE,'WP[V]]20"\\3&DO<6\nMG.66W#B,=>3&D=ONU>W3;;]H7).;`EE>)21FI1ZJ5:K5/]X7%"Z:G3[YX=7C\nMEQX]LFM)ZS\\W`-5C@1,"[2GV[YWDH8S'G=I1[K5U])M5*]Z<"!_7\\]/SO]D5=\\Y%_B;?_\\\nM@=\\<@!2B!\\2A)!P]ND#:<>$LK7ON?SICO;SGN^/C*7ZTS\nMY_:`[#[`T8T':PO<_TB;[4=3IHLE5EXQ@BYI?$\\0^A+;FR>ZL8/`(H1`"(D0\nM(.E=PG7G]`WQG4.SK%!S7+^ZG\\FX5=:B\\*:O?OICWQ\\8^+=S+6]I07SJ+@2D\nMVN>!*4=G]0"LZ8-+!_&*FL`3%+3%.`'(KBBYGUW665QOW`(6BW4"%VC,P`A#\nMU66LOZC"=#[+DS)%DW+I*L&RM);RS.+,N*"JT$I5*9VH#R\nMXC@26OOG6MX2`$@`AT)@'5P]7N:NU<$I?B"P!*1@'*LDY-J12]>]]Y2GJT"B\nMJUI&=MO&D5MY6IT<$H/`4Y)"H4#@AXASIMDE!K$`G'!(`?7%!8ZWVJ!T3TX=\nM41R3ICDR*':5)DF)HQB"$FE/@9)6`Z-+I`8R`UG<(G6*S&DZN65MQ?'*]:M0\nMLN=U)9:P3UB2C)Y2H2Z8S!A$I0I^B,TL6>Z(K:)M$E301T=:HBRB92W(*HFP\nM)%BB)"*399(<$N-(XX0./AT"HM125BVTZHJ&["G`^?%`+Y$Y>@\\T.84HHI/,\nM4"L4D,JCDK=)2"DKC16.CDMHF0Z5O@Z9Z2:Z>9<35E.,ZU*I6&5`QEK+Q2GJ4KO@_WF'I!=N5'8;B(SAC3+$%G*:)#A*4'+-R3.42YWM]8=\nM7]#R!-4^B;$"8R7U4%.N^:[%%*B1]GSX8%36PG7\nM4R,A)5)*M)*$GD)KA=,*[2RUP.M2"(.7>_05?9SK[D9EK*F5?1`28QU!IO'\\\nM`*4#TMQ@.BG:$UT5D@+GSE<0G^+BJ>V!$.@S*62@V79$L47E.8FQIRE$CT)I\nM9HGJ$;;@DQA!DD/::I.XC$3X1(GANI&<#1?)TT$LY'D"H$ZK4%?>C#%D9U!(\nM:T$4.!(!E:H@,X+XEU"H4?2I#818)TB-H[%0P/,#I"Z09):BC5#J9Q3J?K-S\nM(UCR7LB="N:?IY#G83T%)B?P)`5/$N#]`H6(%"5?H:1$.DO0<00%@0X$N=.8\nM1!-HU4MD71><)PK)'@![FD*^UF=0R-%L6Z*.0UG[(A4ZDT)Q/2)/FZ0SQU%)\nM"V4SM-8@)/.QX8+!"@/5*E+X"'D>`9RB$&>CD'<&A2J??0Y57L:(<\\O=[//7U&=.[@`6W_.^/^`;\nM7_OJ2_4`/0]T@TI*B5(*WU,4/(7R%)F2."7.H)#N)K(>A8RQQ'-35`L^RT8&\nM&1H<8'2XGR#0>%J3=!)&1X;)L@Q7/TI5J:M^\nM[1TSW_S:O_*#[WWK)0*0+TXLD75,=`PNS6FV#'''H$Q&DEGB*"9J1HBZWSM&\nM&G;N/,2(SEFW[B+*I2(FS]BS9Q_[]A_BY'R#.#.`0`E'M:#%\\N'^ZMC8RNMJ\nMM>K5M;[^=YV8F/C+K??=\\Y,/??3/W)?_Z>^6#N#4B0SKD(#KE4T*`M:&'EIK\nM6GAT?$NEUMU*)!U'5,D9&*S@7+<`('8.,K9R)DV#K8D8FB,\nM_E474RX7R;,,`TRV6QR9F6#'H6U<-%)5&RX>?VT8%K]^^V?^]N.?_N3'_OL/\nM_^@3?.6+GP>6D.P>/=@&"*USWUG1Y[\\QS.9(DH3%=AM=KN)IGW:K19)F5*I]\nM6&?I=!(6&TTJ?8,8:Y'.$LW-@A!LW?HP]SUU@'QL,V^X[DI>OVF,YM0Q&HU%\nM,B=I-EO4+KR4P[--]KTPP=SN[?2W)[E\\TP;"L##16%R\\;I)04PI"%-..$5=A,T$H$40R*[HDKC@SM-I!V*Q$KO815RF/KUH>X\nM^ZG##+[\\37SPQBO9L*S"0IPSE1GJBTV$]D%)"EJR?J3"2'4M^T>&./S4XSSU\nM[&XV;QR_P-/^W^_:M>/PRK$U^Y9$H1>;HURIT&PV&2R7Z%?=OUM=Q+H0(176\nM29SUR/("3BB:[9BXV6'GCIWMY'ADL?AV7:W5H1$^CYYFA'4\nM!FFG.:FQ6&<9JRK\\JZ_CP",I>_W_U0_FL!<`["\nM,"0,PR7.=^P_=(S)>IT'?KJ-:/E&MKQZ,P7E.'#X*'TCRS$.2H.C%`9&F(M2\nM)AL=XMD6"(%I+V";\\YQ\\X2!#ZRYANC[-S/0,U5KUYC5KQ^_0VM\\FS[V,EVY1\nMG#`[O\\C>O?LYV(1-EVUBU4`1XX4('5"?G\\?0K>Z=:'0X--5@2^PD1-\nMGOOQ/3079AD8'6%T\\U7,+S3)LWQ8"'73JM5K?_T8.&69S3C9.,&NZ5THJ=B\\\nM[$I&2B.G]S$`C5:;1K/%_@.',?TKV3@V1&H,!LG^YW;RY/W?X<8MMQ$L7\\MT\nM.R7P%8&OD3:G>6@7];T[N.2:&QB]Y&48*_!6KZ&YYRG2-,5:>^W##]Y7/"<`\nM3_H(A,ML1F93#M>/\\\\SD,VP[L8W#"\\=QHLJ:P9=3=Q%CM922UT&Y:4;""@N-\nMB&:CR=1\\@]+8!OJ*'G&:XX3DPDU7,C=]DL>^^TVJZU]&W\\974*J421>FF-C^\nM,,52D6$8ON@05A%S]UG>Q;]?3//1?_TYRW[<96;Z"\nM+#=<\\?HW<\\DU-Q`$`=8YHF;$]///4EVUGLK``%EK#F==I5`H5=39`.RO[SDA/LA1Z)[.73\\)QQXZAE<\nM:O$*'LOT&&K>9^?^PZCEZQB4$:V9"UCED]EN@3?*#$/+5_#>/_\\L\\L$[&;]TG-!7^`J4E%@'\nM>=2D$/B4RR7FG27P?=(LC1<6YN,E!;$QEB3W<$+0B`]S]R-_2J4J6;%\\)8*H^Q1N3MW&]6$DY4$PV%TB*%](WM()6:D@[.:F#\nM8N#A25BQ=CV#XBT4I_;B77PIH2=12F*M10T-4'C5M;0[.20Q6FN23CK=B:/Y\nM)0&P0#W*$7Y&/H-JIB9TDC3H=?QA/&71<1_C#\nM".%WRS6`J/1C!U?@3>Q#C8Z212WP?`J>Q&2&N2-'Z"L6V'/DA32*H_O>\\-8M\nM[JP`M-8DS61!5]7[R\\6!E^>N?--L*WM-HV,WE,J54`J)ISR4Y^$I#\\_S\\)3"\nM\\SR4\\A">H#18(O`$Q=U%QOI+'#F\\$P9NP+:;2!^U1U'[(Y!EG52'SA($=D#]AXXV_\nM]_C!9E*Z-[?AM^)T_X\\]^?A,&.I*&!;[PC!482$D+!0HA"%A(20,"Q0+(4.5\nM04;&!LFGH$2%A1-'R"R4EJ\\BK/5W`2N!)V%J]Y.0IU16K84#3R.D8FC-.)4P\nMY/CD'$>>V3(L=MKM?YM\\[.32\\O$3]RV#KJUIIGKOWK]/0CO\nM7JP>];7_VL#W;]':OT%K;TBI%WNAX!=HFQ;QR@6"F2'6K1GC\\/&]M#U!:>,5\nM!*6`P%,(8\\CCB,;,%-I:!C9?2VGQ)&2&`T>G.+%G'Q>-]O/XX]OM8BXEB0#!Q49K1;8]^;1YX,&?W+FP4/]$$`3S3S]V'["TZMTY[<./?@ACC/1]\nM?]SW_2T@MM3K\\VM.3DX*K3W",#S>23N?&WETPX2?%3_CG-V4)"E&2/S:(,7!\nM(4JU&H7`1TN!S%,"FU/1DC2)V;;]Z?:NW7N_W&PN?E;KH/[LMOM/O_N\\`#AE\nMGWK^4R1)(LKETKCV]&U3T]-;)FH[L??TOZ`7=RY[&+E?(^`>*=\nMP*!2"M_7!$%`$/CXOH^G)&F21#+WKG\nM>05PRKZX^$7*I9*:FI[:<.38D=EJM3JU\\[E=?._F[_$[[WX_2=+QB\\7*%2!^\nMRSEWC7.L$H*R=0Z3YUF2I#-1%#T;1?&]21)O[1\\$T=1UFHUYIJ-^KP?%,R^9Q_]E<_Y'T*`\n2VI(Q1&%\\`````$E%3D2N0F""\n`\nend\n 6625 taxes_ok_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```/=$E$051H@>V8>Y"=19G&?]W]?=^YGS/WD,DDDTPN!G(C\nM&..%2Z!$7''9**;<$K#61:U5RK*VW%HUXK)L7*E=4-%R`=U%`9?U6KJUB+(*\nMHE@L+@FK(28D3$)"DDDR<^9R9LXY<\\YWZ^[]XSLS"2K.`+'VGWVKNKJ_/CT]\nM[]/]O$^_W?#_]G]K8JX!7WBD#`AA,.T&FS(6C`%KP5@PUF(,&%KMUN\\&BS6M\nM[S.*WVQ2G9R@.C5!;7+"!+Y?R>8RX4]ON^9E`7#F1"@%`CQKQ6>%Y6(L&L!B\nML6_ZFZ\\]N?YCIZP\\I/;\nMSRX`*4"`--!W3L%=WEMRT`:TL6AKT0;,&6UMSNQ+OL]L:^,2Q2Y^=YI:+<>Q\nMXT/GYDJ=5T91^*\\C)X[=C:5'A@KG_I@\nM_ZHUQX[NG9?_"!87[VV'-8%%-3$)/B7=>LPBVXG/`-?FP)\nM8T,86X+9^HR^J-76EB#2E*=B+EOCL++_`HJ%XI6'#@W^W<18^8;7W/"5YJX[\nMW_O*`4@A6D`L2L*Q8Y.$OF5LPO#MAX8)C25=&3SWO&WUYO+O6*U_>.V0Y2_[?K_.\nMS+T#,IG`DL2#,6D>>6*:IXZ%E+,Y^C;VX.90\\22F-4XDL8/`((1`"(D0\nM(&D589,Q;5T\\<'B,7C7.1?WM##?K>5>DWW3/WW[XAQT=]\\WEWOR">*86`D+7\nMX]$1B]_?`4O;8$TG3M8EY0C2KD%;`A;F*&8=\nM,M*R(*-H.I(@,@21P/=:[=CB1X8@2N(BB))8"5I]S-VJ/-_N3\\WP`X$A10C:LD1"[%IB:9.ZI3R)`HE$\nMM;1,VMH2&SFK3A:)1N`H23J=)N5E$',>L_,,8@%889$"*E.3#-6G0;DM.;4T\nMFDW",$:FLHG2!"'-1A-2.<*6`@7U*MK-$6J(-$3-.J%51-;%CPW+"Y;-*Y>@\nM9&O7E9A'GC`O&9U1H01,I#6B4`0O@XD,46QI&L6T#E"I-GQI:$0-ZL:`+!((\nM0X"A$32(9)X@AD!;PF:`CX=/BD9HR*LZKDI$0[84X.SL0.L@L[0FU#'I1@,_\nM&*643B.50R&>)B`DKUR,L/@VH*Y]"FT^D4X.N@D;DRF&:)M0J9:+02EP#%&L\nM21EPE&@!2/[G//R?WT&64$@@!"@A*2B%-4TR2N)Z#G@*%X=2VL582UIHG-BE\nM+9=":T.D+31=\\CD/@T`;\\"(7Y::0KD<4&W0SPE4R`2!/R_`K!C`S42*C`B$$\nMCN,02H?A6&*,H#8-#=^@M":(-+(6F*A["22&<%&%LR!B+(Q,**=&B[-G8@9E4\nMPK;42$B)E!)723*.PG45UE6XUE!*.0F%T#BQ0UO6P]HD&Y5-EU+>`R'1QI**\nM7!POA7)3A+%&^R&N(Q(5D@)KSU80SW!Q)CT0`O=,"FFH35L:38.*8P)M9BE$\nMBT)A9&A4&IBT1Z`%00QA?9K`1@3"HQ%H+NR)63T@9X-8R+,$0,VJ4")O6FNB\nM,RCDNH)&RA((*!0%D18T?P>%JEF/4D<&8P6AME0GTSA>"NFF"2)#UC10ZC2%\nMDC6;&\\&\\YX%4C$]'+.HLT%$J(H5W6D;G`4#.-4#)F7*:0GX0)!0B8HFC\nM69:RK,C`^@*<7Q2('DLH6*R_L<5CIUO..[&<@9SNWK(B\\-\\629\nMM8M*_-D5KR:JG.3?OO7OC)9'<91$`IW*L/?'>T5]I-[N3_@K_'%_8')H,F>M\nMY1N?_\\9\\=X#6#B0K(J5$*87G*-*.0CF*2$FL$F=0R$T.LA:%M#8TQTH9P_3MZ:;$Z.3_,6EG4M]V?WG.T=V\nM7GFT+VQ5S_\nMANL9GQ[GL<''>&SP,?8J!H-$$1>)HLZ&9G@;"UNTKTIQL6')*SN93M&HA$G&02I%*I5BW\nM-,NWGOHGLEZ.6,?<^;,[V3.T!QUKUBY>R_8W;Q^]8M45GW-\\Y\\MMW6V5EPC`\nMDB\\4J-5J=.9SM*ODSXV;Q=@,0BJ,E5CC$,5I#`J+16N'1D%1;IZ61C%36B",\nM-KQ^\\R:F"R=Y^M>[6=R^F/O^^SZ.CQ\\'X/*UEW/SE3?O.W_!^1_=\\]B>_^Q9\nMUF/:%[7/K4(O<-]")I,AD\\F\\)-C&&$JY-*>TF7UY;'D_.V\\VFV'+FU_+_8?O\nMP3J6APX^Q$AC!)F2O'W=V[GY+3<_OBR_[$.Y4N[IS((,*]:O`.9Q#IPM$ZV\\\nMO*4DL[%@C"&*(S:N7\\O)W#&>G7R6_5/[F=`3.%F';:_9QJ?_^-./#N0'KL^U\nMYY[^YOW?9./K-L[.^Y)C8,8B$W&J>I*]Y;THJ5A_S@7TY'IF\\YC?`D!RJDLA\nMDEJ>+KELCDT7K^,KQ[_(A)D@($!E%)S<\nMM?,%\\\\X)P)$>`F$C$Q&9D".5(78/[V;7R5T3K3G;C2!9*5MW;F1=O.OF(;8UBQK)^ISC)/']Z#]C3"%6SLW,B-E]RX\nMK]_K_W"F(W/PQNTW_I;SOQ?`-0]?P]>_^G4^L?./,FE36KNAZY+N2G"<;UOIS.W%,]U&="8CU%ZSB1U/?)?9BE%#TI'OXV.L_-GIN[MR/YCORO[KKSKNXY1]N\nM^9U^JA<#,%@:Q'JV6*W6[HJ);FX*EJ%6BP6%/Z&_?2OMV?7@&B;%KSEI'^9H\nMXT<<'GJ<0[__EO%>M)-^9I69K!,V09JU)(9-A\nMY9:%?'WX?B(5X:9<;EA[@[ZZ[^I;[OOD??>Z"URVOFWKBS/DQ7X(P@`@/3HV\nMNKDY'75=N>YSM!=>PUAUDJ.57Q`X3V.R)TCG-1DG37VD@FQ*NCM[R'?GZ5C0\nM065PDC<.O)&^["(.-@\\RD2FS;NEZNER/9R:?I3'HLS)X%4>]YZBJ*C(KN;3G\nM4K8MO>Y_FE/J[JW;WV7[^[I?U/G?"^!,T]H0Q`Y6"*K-(_S@B8]0*$IZ%_;1\nMW=V-*5JR'3G2B]+8C.7)\\$FFIJK\\_?I/$38BGI\\XRLK.553""D^./,FFWDWT\nM9GO8*9_@XO,V\\\\WI!Y%929?7R7N7?Y#Q2OO(]YX>F]S0EYW3MWD!,$"E$2.\\\nMB$HS)HPBALM5*I4JQ4*1[JYNTKDT(_5ARF:4JJCB*(<#JY^E)]7#GLH>=E5V\nM<<(_05N^C;%38VQ=N)5EF678MIB#)P[BYERVGO,VNN/U')STV;`HBRM?P8U,\nM"HG%AE**`YZ;6C+EFXRN150#2SY7P")P'!O>S>/1H]2=^LL;UO.Z\\(+\nMV?G,`;J6K@9L0Z\\@2]8>D.U+LN'`'M^^_G4/1(:;D%`_7'N:J\nM15>Q;W0?*J=X:^=;^=5]^^SQFGSDJE7K'PS"T,SG664^8]A\\]R&,07A.OJOA\nM__S5-O[L%:ZKW^0Z[BK'<3Q'):F?%P`JJ]2J]]+*\\L(([CM_!\nM@>@`Z5R:=>WK>)[GZ4QU\\C&]??SS'[G[.S]_XO%;BL7"\\>?V_W(^KLT/P)EV\nMT3T7@;`"(Q9XKK[U'6=+J5>N`NY3);V]G:JM1H3DQ,L32VU%RZ[\nM,+ZK545Q3N(;W!._YFZZNKD]???6[[/>^]XUY^_.2`WYZ\nM'5-3TPA)RG7<#9[G_:GG>>]PE+,DUK&04E'(%]!QS%1UBMIT/:S6I_[C(^O^\nMZL?9WNSV6Z=N'3CAG*`GU\\..]([G5Y=7O[GA-@9[%_6^)#]>=BYT[V7WSS2#\nM#_[B`SNUUD]YGO^^]9#6SZYY27[\\;)WX'?930=O(@@"D<_G\nM5KF.^[Z163UT>-'QXK%XLBOG]G+@^]X\nM$(#!_8/8:9OM>E77G5+*@5,'3UT5B6AJPX8-?PAW_C`V?&*8(X>.#!P]V8::Q=5WF&GS7LO<\\^XYWMZSB^GN/$(1,A\nMH29``@TBH551B4J;H`K:/R&BI2H21>V/BE84%41II4(KT22MJJ8*2$4*0PH-\nMA(800F,;VW$2Q_-P[3O?<\\^XQ[56?YSCFYN"\\;5CB3_]CK;6L-=9>[WK>]?[\nM?7O#_]LOU\\3%!OS=4[.`$!8[:'&!=6`M.`?6@74.:\\'2K_?O6QS.]MLKKCB*\nM:"XMTFPLTEI:M$DB?8\\"L42:9J01%UC\\W3?[.SL(][-#SQ3'AI+Z]_[XI4%(`4(\nMD!;6KZUX6];5-,:"L0[C',:"75$W=F5?K[VR;JQ'EGO$HP5:K1*GSTQ>6ZH-\nMWYMEZ;_.G#W]5VOO^=34])GC_JM>G57]?OD9L"65XE)&*]-U*K5*L?>S4H;)Z?G?KHQ/:=IT\\=\nM7-7Z+PY`]5G@A,#3BL.'IOG!?Q_#H6@T("?@=^[?CE?Q.!M;XMR1YI8T=R3+\nMY8J^K%\\WCB0SS#9R[MJIV39Q"]5*]=ZC1P]_>G%^]J&W//1P],*7?_^-`Y!"\nM]($XE(33IY=(8\\?\\HN6K3TZ3E`K\\QGU;J4G!O(%VYH@S1Y19HM02IXXHM;UV\nMOR]*;6],:HGC`ML7%BG[+3:,A/C>=?>UHRU?<\\9\\^X%)QQ^M_\\4Z6M[A"?+X6`U//Y_HPC\nMGAB"C0.P^VRSN+Z_1:P6*P3N,###(TQ4EW+MLT5\nM9O-Y3DW7)^[[L[_6F$I0:E4IC:D=!1UA>?Y\nM%UO>*@!(`(="8!V\\=7N9KTX$Y_F!P!*0@G%LD)![CERZ7ME7GIX"B9YJ&=FK\nM&T=NY;(Z.20&@5:20J%`X(>(BX;951YB`3CAD`+JC24FVQU07E].'=TH(DUS\nM9%#L*4V2$G4C"$JD?05*VDV,5R(UD!G(HC:I4V3.(\\XM6RJ.V[9M0,F^UY58\nM19ZP*AD]KT(],)DQB$H5_!";6;+<$5E%QR2H8(!86KI9E[:U(*LDPI)@Z29=\nM,EDFR2$QCC1*B/&)">BFEK)JXZF>:,B^`EP9#_0#F:,_HC4JN4@U*@+5EN""QH)?H`\nM>L]:AW[@K865`)[">0K/66J![E$(@\\XU`T4?YWK9J(P\\:F4?A,181Y!Y:#]`>0%I;C!Q\nMBJ=%3X6DP+DK=8C/<_%\\>B`$WDH*&6AU'-W(HO*I8NK%#6?LZ%5I)H:C>)4];I'.3J*2#MBF>YY,[\nMQV(W9\\.:089K5:0(^C+J$*M`L&H*<2$*Z144JG!!"AUJM3EZ]%6N&AZBMG84\nM80U:":)NQ$*]3OWL<;[^1!>U_F9T>1RABV"S-P[@=102/0HII?"UHJ`52BLR\nM)7%*K*"0UPMD?0H98XD6IAFNAFR>6,?"_"('#AUEKMG%.+#6($W&[/PBM>D%\nMBF,3Y879Z5`ZU$QP]=I(?OWJ6J[9NXTTWK05G65QJ,#,SP\\+9,[1GIJDNSNQ*\nMXO@31XX<_LROON^#Z5/?>OSR`9Q_(\\,Z).#ZGTT*`K:$&L_S:*.)?4NEUDLE\nMDMC1K>0,#5=PSI'GEB/J=HX>/.'QP8'/[:+;??Q=Z?//WS-_AB`$3_)_MI1"^?RS'6\nM$N>&*#?$N2$QMIQFS'?2>FD.07/X]F73G'O>]_%CJM'R+*4F<4&\nMY^86,&F,S!-D'C$P,,"&F]XZ'12+>;5:_8/]^W\\Z$):JE^^!GT$L)84P9"G-\nM.&<5-A.T$T$W`D7OC2OJ&CH=(+7$F67<-RP=.D8X,LYU$VMI="-R:ZDW.RAL\nM[YL-AMQD>,)1'1R<2O7L%0+@*%%P1)V,?Y]98&S-)C)C,,9BC,$YBQ:]>7-C<%F"QE+0\nMVH(]-C@X]*YB6-Q2"(M7!H!S$(8A81A>$NSCI\\X1)RD:B-*QFL0R"E0@A!K:#"T>'AM87`,YUN]VRG&U]Y`)G-F&J>X^#L0914W+#V\nM%L9*8\\MYS$JKEHMLFUC'ON<.<6JNP9I:V(O0QO52!J60VD-Z`<5`4PLPY7+U\nMFJDSI\\^=/'GZE5JUX$32Y,X467C\\*W4\nM79>K:RDE':/<+*-AF>'",)[TJ)2*;-JPGHT'7N4G>UYDUVTW$4_@2Z_\\[=&7GCN]XX9?N>#Z+IALW/]?]_/8(X]Q\nM]_O?'19L[?H;1][QE7IRYL;9:(K<51@MW\\#Z@5L9+FW$]SP2,4,]?X69Z`#S\nMS2,49<"6P2WL&-C!UNI6GOG67K(V['OE%-'@583#8TAKD":&-,)S&15?,%@;\nM)F\\L3N9[]]Z0""CP5D>58='AK^^[5CX_=L&+MY>*!X\nMBQ@IWL)`N`FM?)RW0**/TI6':"8G6)P^Q\\SA::I#-0;'!ZFMJ9&E&2(3$"L&\nMLE%&9]=SXL`<4QV#*-?P?8TG+)Y)\\4T*:>_^%WR=+H\nMP@RYT(TD30`*<_-SMT6=;.3>-_T-@Y6W,-]_X!2<1TS2Z_PQ',/,E=_$?(,[33"28)20&U-C?*F,OLK^]G=V(.*%,.%(3;M\nMW(0J*A!0K(9D@Q'SA;/4@QEDTR=:2#@W=8[)R5/<>N?[N//F&[A[7;!9'W_I\nMO1N$./&7][S]\\),'C]"X%`^L-`O4NSG"SZA'.6F6,3W;I%YO4JU4&1T9I5`J\nM,-.>9M;.T91-G'#,9#.,\nM5*)2+-/NM&FU6K3:33J=-IU.AXHQ"*&77[R5$"R5UNP]]HW'HW%E[]Q^=[Z=O:,9VQVE\nMWF:ZD&5=KM%O6E.NU.NP>DTR+I\nM9`BS4D>__CQVQPL&B:_S9^8N^6[K7OO.>.7;?]R1>_^X,_?4_H\nMI]^-TN5_K.;3"[?]TU&L1?BZ/-*-GWFSR[_P'L\\S=WO:VZZU]K7J+?XU,`JE\nM%(.U0;9NWDJKW6:I4:?1;%!O+-%L-IU>"MWH_";T?,DMSBW&]86%R59K\\?MQ\nMU/VLASMS:/U^OGZ"^Z\\+W#^ZD:LJAS:_M?.CEXY]_//_\\].'=RK!R_82`*RT\nM.QZ]`X036+'&]_QW!KY_G^?Y=WJ>'E'J]5XHA44&!P=IMEHL->HL-1HT6XTS\nM:2?_RHV-=QU6-1U)F64IF#>Y[F,^M@3P?OP3'Q%]L*\nM?+*QZ2:YOSQQYIGG]SYPW?KQ'W[JF9^070Z`\\_;AIS]$H]%!2`)/>S?ZOO]!\nMW_<_H)7>D)M<2*FHE"N8/*?1;-#JM--VI_W-;K?SF9/G3OYT=&C,[7UH[R]\\\nMQB,3@B7#\\.TE]^CZ4O#K4]>\\C>>7W'/?>/+I^VNA?^H_HO3R`:RTC_[X08PQ\nMTO?][;[O/P#B@7I]<>/4]+3P/$T8AI-Q$G^NW>W^LZ=UZSN__9U5S_W$5D$]\nMY_H;0O=X4*E=]SW_:EX^-?.E?S@S]_%="G/A.'`)MOOAW>QY9*][[R?OF7>.\nM']2JU?\\<&QU+PK"X*0ES3VH!!]:HV?WM=U4\nM7!E\\3ZU6FTKKBX\\^58\\/3J@W0*%?9%]J?(ERJ:1F9F=VG#IS:KY:K6J7CI/?VJGSW!A.?_L2![BN_&>`>2J[PPG\\9]K_M-C2="WSR\n-)`````!)14Y$KD)@@O?V\n`\nend\n 6627 time_sheet_write_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```0#$E$051H@=V9:9"=59G'?^==[WY[O;VDEW0G9.UL)"1@\nM9D`,:]!!5'#&`41Q1-%AF&$L9Z9&+;4L=G\\^-/_N[(SF0L6CG\\O8]=_LNJ'_K;?)S0>NX\nM^P'^^5GC!8_QC@*,9DN(\nMUH][>X[G6U^;0C0OWR3[5BW6ZWN2]>'L\\9;-O7%Z[ON?"QKC;0NA;<`3P-]U\nMU,>:$X[]K][ZXOXMMZS?U-M\\3RR6N-%K;$]O7MXRLZC.B3V_YYC]])[)5Z/)\nMQG],))(/*:WF?O6)WG<>X!NW@X&HD62$P'=ME'J8OWO7##?5==O[:S:[8L>63/&-%4'=KR&,XI7"]"U'>#1-3Y27ONJ6^O\nM>?FVJ?9V2V"J8QG`&-`&8PQY;K9)58YD6U[\\5&6)O1O?LS#F)$`-(H_A.\\+H?S)"F/=]]22$?P\nMWB(5X^'Y<6()ESK/)NI9Q'R+F">J[YXMHO[*!F'^BN*NSY!P\\QA3%<)HA=$:\nM786X'<1_`S.G^G7.`(X-6N+7-W\nMZ.7!@B@LRM%7RZ:RF)[Z+2\nM/D;82*D1!^['GWX&(RRTP3<&^PR_SA7`ML"U0:#080$;0ZEY$4_7/46EF&4V\nM)[FZ^=UD+J^@_"Z6AB&+&RT:4I"*0-(7)#R#8X/!@`!A*2P+;%M@6V!Z+F%M\nM;R\\5;?/;H2+Y_3\\D(FJ35PNG\\P9P;#`66$(!$L;O&9NWYXFEM8870)JHZM:,P8Q_QL:@<%H33(:H2ENDP_`&(G!X-I@\nM.Z#U!0+8%A@;+#26"9DLU//"@>7D["R=L9!,=RL3IIL,6_C,78OIZ4Z<:]=G\nMF$&AM<$2!M=YNP$L3;'H\\$-Q-]F.&]GX\\J^IC.UAIFX#[8U;N.>V1;0T^N?M\nM?(T`90`!MET+(?$VA)`P8,*0AP;7L6/QE?2,Y.EU._C]]Z_"6=K-LI1UX^B_J9"ELKLVQ>G^#V6]=1+LWQZN[=\nM//'$`J.<2_?&$(U&V;AQ(^"A="WG7+"\\Y[J5Q.,>CI.@KV\\U9J%1SM%LV\\9S7?MO#&&6"S&)9LV`5XU\nMB4]7X+P`ZKX"!W=$N?6C7Z"G:5OG@4G66F-TZ']C/A.UG=^+'HPRQ:5I]O_\nM):L:=B%.Z6U\\?)R]>_>^I9-O%F+S"FS>O!F$]X8D/D\\%/@B?_33L6'87-R_9AS1K$*;.1R62(1J-G==[SO+.J)(3`<6S*18W2X)R:\nM`Z*Z%YP[P"4?@9\\^NHR;+_L&QF[I/3#"JOC>N;[ZAV)U\\;@].ZLQQLQ7OTQ,\nM3+!OW[ZSSG![>SM]?7T(KF>3[SW:S2G\nM-V1>&F*M5QQ.!+_XS[86S^W0NA*M.+4(4-#&(0P#GD0%=/+T/C'%D\nM8#?CD].4RA6,,7BN0SH9)Y-IIJFID<,#QVBL3V&;`,>"<]D93FYD%Z.-6U6`\nM&H!=I7I+@&W7WD2KNM\\IK;KTEH/EG:GQ0YI,2YQU&]NLUU]_S7_V^9T^1UFES%\\B7=M+>WX[DVFR]>3>>B%O0"\\I]NEF4C\nM;)>@;)`U!81=#2-AJB%U5@#7BY*U$_7>[/B*S?4)XI>GJ6OP>>[YIWCVM4%*\nM+2M8?^U:MJ[J))P>(1:+,3HV!GX^W](Y?)Q5JU;PTJO]\nM'!T<)!X[>XVDC<'W(ZQ;OY%0>B<4$'95`:/!>BN`@2,'""I!9O6:M;'%O3TT\nM-C;ROX_^DJ>/Y&C>=`U_>O4&-G8U4`P5.R<.(0-!(NJA5)E,OIRD9X=#$'($V\nM%`.)+$Z3FQREI78T(*P:@%I8N3<`_,L##X*A!=C4W[^79W8?\nM(+;ZW=QV^4KR4Z,4RW78GH_2AJ;NB]!:$VOK(1MHQJ<+U0-7J8`=Y*EW/<(-\nMES'ZW&,D1\\<0P+8K?H_E%_6@:DY+90A5]2F51FK`LJH*F&I!)ZR3;:%2XL1T\nM//'+KGQ([1T]9!92$-%&4)9S8%35RXAJLZ>G@8G0DA*\nM!8).`3W#QX:9M>.L;\\_@6!:56H?Y8H'7'WJ`K=L_@.I8C>UZQ#T;UX*9HP<8\nM^]T+^'6-7''KI_#B*4(I\\=P4Z46=A&-'F9S*,C(Z1??B.('4U1#2\\R%4#2>E\nM3SY/77D-"^\\GIP"$@&@SF.3DY#0FFJ8^YC$U.88;3V&['N^ZX6;:>Y?QRJ\\>\nMH6+OH/OBK:3228[U[Z8T/DS?>ZZG<^5:$!9!I4(PDR,22U*7:65V?(ARN8-N:"TJ8:0.>T@7[O$>%,%PE`B!`FMC5,LE;$C=91G)A@8\nM.DJZO8OFQ][E(HEI*XZ'ZC35B%]\\ADJ0Z@TH=08S8G&V4H)\nM*25`UD`EXGF.-5LD,`Z-+9W$F]H(I$*9ZFIC.Q9U#8W<^=5_H.'%ATBY(:[O\nMX-D"6XCJ+5I8)IE,$&EJ8V3_(2*^3[%0P/4BU226^C3GJ2J@#950DI_-$90K\nM&,4))A:.9:&TP;+2^.LVD"\\%',V_0C3B8Q#$DVDJ877%.3'K"J8+\nM`6/9`CHLDRV4T4&%4KZ`4;P!XG0[L8Q**5%2C01!V)^N2Y-0>:;&Q]D[-LO`\nM5(')0HA4&DL(+$M@"8&-P70LQ],A?BE'U'-)1%VBGH/G6$0<"UDL8`IY;$L0\nMC26(I^NI2$4H34V):L@4RQ5:4C:M+;R]&]9"FN'R6LA<^)I@W%0I%C.K\\:T-QD!^>IKB3)9R\nM:R_!X3V49V:H*,B/3V`;P_CQ,I[-S"8E0QF%4=SDJ&<9"@;\nM.9]EU:(+G?O,2Z70]F]:L(.6[)P!.;0OF`$`H)?FYXI%H+')_)!K]\nMSI*.5N_@_I>0B01V>SLX'LIHI#84"WFF?K>#SI5]))8N0Q@;L?=E6BZYDC`:\nMX\\CH),?W]-/3UL3C3SY-I+6+H:)AX-!(K1:J;IZ%_!PSN6EFLY/,Y?-T=/=R\nM\\8I6EJ0*S!*B0S`N&`E&S^\\";_*%YO-_]@F^_,WO(Z7\\+RGE)8U-C1^K!`$3\nMKSU'D4N)]?02L6TBC@WE`L88"A.C)%>NI'']5IR)0?*E@"-#(TSN/\\C2UD9>\nM?'$GUNPO>=^R*9S<]ZOWG@(,HJHX"IF05-P`,A;Q1!I_V$:/0"(8PA:@0]!*\nM+'@F7O"$_==?_GN$$*U2RN]**6^>RH2F=\nMI*N[BS"43&5SS(R-(V9G:*V/L_/EW12R!_GX]C(M#;)V.J]@*(.I@"EC3/7=\nMZ`I&E]&RA)9EM*J@90`R0"N-D>PRVER%(+OT`V_QC6QR+$?B^7WMZ.+9%I5+A^.B8\nM'A@\\]KJOQQ[\\FQM^,YQ)%82B.OG"KC6K=E"WJE7F&5Z8^8U+8+001E$PAF>`\nMB66WO'$S>,M+FML^>1_I^C2ST[/M4LGM4LKM2ND^C&X"7&T,6BE9"8*I8K&T\nMIUP.'M-:/VR[]I!6FI>>^>E;#7%!=L[?B:^_Z0YBL3A:*T]KU2Q#F0FEC$HI\nMD5)5E))C2ID)WW$CQ0````!)14Y$KD)@\n!@E)5\n`\nend\n 6628 trash_ok_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```3F$E$051H@=69:9!^^Y9>IKMGG\\$,!OLZ`$B(\nM`$12(BESDV31H2B++$K1!\\?%,$NEY"2TG(1E)PZ+6<3$JDI))=N18A>]I!Q5\nM4=3BD)3ILDQS!260(`&(Q([9>Y:>Z?WM]^9#-T`"`DE9Y4HJI^KT>_U>OW?_\nM_WNV>T_#_^).L;83Q>;<>]?A!G@R#V?#]RXC"6:1A;(DD028J(.T?B\nM!*6U<8Q.;6/2K"W"G)+A2"G;&"IE%H;ZLG,C`SWG1X<+I_MZ6)?VM9503Y1;2>]"*W8KC9!J\nM*Z+5#@G:`:D?01A#&$$00A!USL/X\\O,P>D>C&*(8.TW("BBZ%D.%#!/#/>GV\nMC0/-73M'YB?/PB[V]^1>!GP#-*\\D(`/'`8YAO_@8W/O[LNFO7C_QB\nM7[%P=TLZ!Z93-7C6N-:,S%`+-$D00=`%$G5!A%$79`<007@YX)_ZWM7H*H3]\nMCHHT(9L13*POL'__>G/3S;NK'_W(Y.O;MX]_VW'L[[YQY*79/=<>0BD;,?;;\nM_YWR:M6]Z]"^^[>/#OV+EK#WO-;2ULG8IN;DT+D"Y'H@->\\`:/F(M@^-)J+9\nM1K0"\\$.$'W:!)I"D$%^A751\\&;FT@JQ4$?46HN$CXA02`ZE`:`'F8OA:';WR.Q:F&]X8\nMB3%@=(I.8DSDH_T:VJ]BPAHF;H+V@1!C0I1*^.QG/\\:7O_QKC<'!TD/U>O,;\nMXL!__A_]M^S<]+2VW8./GRQ35Q["O,JOB@1/8SB+E"`6DA\nM50:9[8/>+%KW8H(UXK4RCE\\EFW'QXS@TTDKD][_R#UJO/7EFUIM=X^#*')GC\nM;\\#B`L01"-D!+"Z"_;\\IAHY_&9`6)INEN&TC#W[I5U@WN8W_^MSK;_7WY.KJ\nM[.E5\\R\\?>F)F-,CAKMM#\\?HL;YXY0WFE2IQH!)*_15WYNX-O0*<&(0V%'H=K\nM=JWC4[?OPQL?Y%^]<(PCYZ9G?O_H:=0?/OX*!F:V;ADFBH;IRPXST;N=V'GE&"\nMOAQ/+5=Y^<6W:*ZM&B7$3"L(42^_=)Y6*YIM-:-H:+C@"-%/3[Z'_MPHF_KV\nM4/?;-*,Z:WZ5M6:-:K-)LQ40A"E1;$BU0*>@C<&8#L'+U'05T77%#DA+@%(2\nMVU9D,R[%8H;!H1S#XQD&-N5Q)TK4"BX7XH1G5NLLG%TAKJUBQ0E2$!@AY@R@\nM3M8CXB@M/_',R=8OWK+5*?7F\\#R+GAZG$\\#:Q:*(9XTS5#"D0I/*A)2$6,>D\nM)B75,6$4H[4AU9HT-1@D0EH(82&$1-D*Y3C8KH.7\\W#R'DXQ`UD7T>,1YERJ\nMGL,9I7A>*):!=J.%:;80[0BI#;)K\\KYLOC%8ZELT@!JX:Q_"DLL_6:A7SSU]\nMJG>R-\\^.B7YR.0\\A!4H)1&2(DY1&H&F&FE9B:*<6@;$($:1*8I3$SBJY;F!X=:S06XG2%*5L"P.UW'AQ68[V;'JMW.3H\\06*H<6`Z]'C>=B.(A&=\nMR.J\\T)"FAC`V-)*.MHW`V!)FV3\\6ES"P`J34J,&3"B"(Q\nM@TG`:-1DQ(3T*T/6M5&V`D`;,V?9GJ^C-@IAX0D_"5,UTYMSN&O?,-.5-L=F\nM:YQ::K)4"VCY,5&8DH2:)#`DH4%&!CL1N"ED4T%D!`F06@9C&[`-V"G8W1HH\nM#9;06#K%CCNWO+;!,08[-3AA@ANF%*R$8B8EYQDR.8F=42AE8>AL%JQ.[II.\nMVA5M63G4D8=OXL"C/T1K/;W2#%&69,-`EOZ\\PS43)=::$"_([$F',S$7_NT0`PWS-C_TX-?F\\*[$MV;W<*3+Z8E47`MN2"`I"LVZ3D)0+O9U#7MK"$9,O&F&G[!:)V2#-NLA(L,]N>8:8Y33-NH8T&\nM*9#"8BZ<8L/P07:K3S`^Y/#\\X8!F_,'6,.\\L6)>`*N^V@`"D$,T@UN5J.]IK\nM6Q)769H)F\nMT@1C.&8_R34[I\\FM?)8@++SO&`!YUZ'0DT7:BE"S4//CMJLNLX"@X14"&:S-\nMKC0CE)1XMD')]_$A`ZZRV+]=<3SW%OTZ@T%04`4.-![@S.L;.XL_`X.]%K?M\nMTQR-GP($J6F1*I^UN5Y2'5]UH6X,#!8R7+>CA+'G66R;H18$ES5#>2K^9`!2UCD78N@#;\\P],^87/<*\nMI_0+#,1[F3JZGJKO8W4SF6,K-I6V496#)&F*%(*=[9LYL6PA94*JS4^!WS%>\nMXMK)B">/_PXGYH[AVA[::+36V^[]T'U_O2O\nMT,9,5YH1!G`=ZU*0OANY9UL,]:4LQ&_C.V4BITRMD"5S[@[6MP_0:DL6*C&R\nMFYWR&9N]6SS2=(`/6Y]#9^M83H*S="T[KJE16_8X<>*=]*D-;!TKLF=7DZ^_\nM^!@3O1OXU8\\\\0*55X;E3S_']\\!];ZHKJ,]66E$0QMKS\nM[*L1@%0;4I-R.OT;GE]^DH%B#QO<0?;W;N#P2V.THNB22P@!=3_BN\\]7<>48\nM&7N"G"O9O=4FWG"$8X7_Q4CQ(_3-?H+E2M1QFU*&&_8+_N3(U]BS;B]CI3&>\nM/OXTS[[U+$NU)7ISO7SAHU](QHOC1QOM1O4R`D*(H]4Z^04&L8_$"SVJK3#F+ZU#!ZY`T&!S7[MO;2\nM<%[FS?EC1#KF\\5<>Y_7IUTEURNU[;N=W/_\\'Y4_M_/0#YWYX[+%*I;(FG(M[\nMP^[L2BGJ09PNENL!<6JZKO!N!@+/B7ECZ2D:]0;-=DC=]]FL/X+_^J?1S0%*\nM><5[50\\AH+P<$[]]`U[2CZUS;,GN9"#KLFG7`C<>E'S[[?^)48:G3S_-7'L.\nMZ4H^<^`S_/9=7V.^.G[TT1^>_\\&+O1-ZZ[ZMG4E_]\\NE$'Z\\YM(@QF!+DZ;:3)=K`4&#09A^MO9>PZ[\\3H;$,`O5\nM)2XD1Q@NN>0]]=,I$;`MR6AOYI)%!X<3IL.WZ:%$UF1)PI2!GGZ^<_8[K.I5\nMZM2Q,A8?WW,G7[SA$5X]G;!4;R,1T_7)2<+V50B\\^INWHCL#3B\\W(OPH)=7F\nMBK:V(8@EZXLW,)Z=X+:1V\\CI`L\\L_S%>WP(#/1EL2Y+J3CKL/"+8N]WFQOTN\nM.A7TYEV2L5/`21V*=HFY<)XW:V^2.BDB(]B_\\5H>^O`CO'X*%FMM\nMI!#&8*:--ORG^SYT"='E:;0C,VNM*&F$L;*EO,(9!,:DZ&20T=PD;FKCN`XO\nM-9_G#?TM/KSY'S(P8!-$FF9=<6X^9'S08?BZPX3^(+MW3%#HJ_!D\\T_PVS&%\nM4A$=PH:Q;?RWTX^1.`F6L!AT!_GU@[_%V;-YII?7<#,*`P'&S%X)]J<(",%"\nM/8C;U59<*.66X>NH/S/T9NS.XDY<3+G0"A5%M1F_?097%MGB7$.N-(CC&OK,!.65%#]*>*WR*C^J\nMOLI<,$9F_/_8KM"[D"8LSG%D^@YVS^?3H/?CG-_'VU"R9K$`*2#"<\nM;]8YLE*>._M7_]O/[+_^O0FD40K\\49@L?&FF?WJ-LS,MS@SUT+NA0-]@AMZ\\\nM0R%KD[,M'"FQA*#I%W#5A]#&8*4PD@J2Q'`J3#@:SG+#CMNX:;R7KYQXE)EX\nM%B_R&$P&F2AMY)<./L@/Y%_2M)ML*6[F9GDW3QY>(<'04(HI:;C@MYBN+1,V\nM&]/VQSZIDY6E]R8`%CMW?MDL+M:F[KUG#]E,EN>>G^/X"Q7>TA)1=,@,.^3Z\nM'#(YA>=)'-M"66!)>:DGA1'0;04^]>,%KMNRAW^[_[_PU:G_P.GX+#59XR\\:\nMSW#7SD]R?/DH5D[QJ8%?XM73X_S%0(UVOI>:"&GY-70CQ$H3)&::T"?\\G7]^\nM!>++Y#!1=(@H2C9X7^??U=9SISU-3FC`*$&$;&?B(T(]$$G\\#.)4^]_WW(P!);3?/1;-9=5RQF4$J1RSD,#F49&\\LQOB['4'^64L[%4S8"1119-'Q)I6VQ\nMV+*8;RL68INR]B@+E]?J4`E&>'#R`&7K!"O6*JMJ%>VEW-WS:4Y6/LZ?UP!2\nM1-!&!FU$Z","'Q&'+XLD^BI"-#Z0@#&'D'*X.CL[_^+1HVOYJ:G6^B`@*X2%\nM$9+40-+MYV`)I"VQ'(G5;>8:2Y)*22P%VK)`2;`ML"W.MU)6@R%^=?M>IN0;\nM-.PF0]E!/FG]8[XZ-<2*`4S2`1VVC0C]91&%?R:2^%]3[+]@_!;Z"@+OL^E]\nM&(@<*.YSW>(G!P9+MPRMZ]E9&LP,>@7'L;,V6@DB(?$-M#0T-32UH&F@)22I\nM:X%G=QJ\\GMUI[+H6G]E5Y/Z#1_B]Z%$.Y@\\PLO8(#YVST)X*B8,ET5A[2S;7\nM?BB:M1_0K!]'J3CYIW=>%>7/\\!_+KP,O`_=D(3=.SMMI%=T];L'9;OZC&NE=6.E8V5I6(EK4A90KNJ`SJCP%,&3Z5X*I:>W7[X0$^X:_OWAPNR\nME#YU_H[O_>ZR_C&>=8(T/"D:M7GSB5&?[YR&>[:_+[J?[T\\B[W&(0L%PP:/@\nMY,G;>;)VGJS=2T;ER:@,GI)X70(=U7BJC:>:.&KUYA$G>N)V]5M*LG'Z]-+?\nM$U9XP=UUW'/^YYP??\\S=74.<-&LG!48ZTNSL\nMG9GOY_P>YW=^`__/#_5R/#1-4_(\\5_OV[;/#P\\,I8$(($D+(G7.Y4DH>>^RQ\nME^1=+PG`;;?=AHAH:^V4UOI@',>O3I)D-HJBO2&$J;(LHUZO)^UVN]7K]8Z5\nM9?G7699]QUH;3IPX\\;\\'7FQ*(I/S,W-_=G.G3ME<7'QDC78RQ$?0AB)\nMHNB7=^[<^:%#APY-'3Y\\F-V[=Z.4HMUN<_[\\>187%^ET.H@((02\\]SCG=I9E\nM^5OCX^,/.^<>OF3UEPKPAC>\\@3S/DX&!@=^YV_-LNS[@/^1`H00""$<\nMV;5KUWN/'#EBAH:&6%A8H*JJS9E?6EIB8>$L9^;G65A8H+/Z+%%HLW^]C4S/3T]/3\\_SS,G3Q'G<[QVNB0U\nM"9-:D^XR3,RF3$]-,[-KG+&1810>EZWBNDO$VK-O8IVYE0J`ZZ^_?O_1HT<'\nM?R0`69:AE)*UM;7\\^X\\\\0D.7?.PG$^Y\\QSV8H1FT35`(2BE$/+[*\\?D:(5M!\nM.8>*NC1'QGG7Z\\[QGR<[S,\\O,#DYN084V]5R20!YGE,41:B<>P(1[KXY<,<;\nMWXF=O![3&$69&/$EXC*DZJ&"H&T#;`,=-="V@;W[]F\\-ZM?VVVU[)X/2KD2HCE&VD;$,H4`A:\nM:[2Q:&U1)D)IB](&I0PV2GC;31%Q<:X\\]KWC_[QKU^YMB]\\VP'4[0.3/^>S/\nM38V\\ZY:!Y3<=5,>OW'KA>N!+%!ZE%$IIE-;U.0I$0`(2/#N'%8?V\nMY">.7*U.?_[NYAC`+QW:'L"V;/8;;Y^DN[XR=N=[?_W^/9/-UW2__Z?-G?L/\nM3293!S&-473O"^=T>-H<5?^-+2B]:TK1AH1(*+T*GJ7#4Y<>6^YMZK"?EY\nM0M%&:P-*(5JAE489BP*\\RY#>$KY]!M]=1*HVA!*1`"A>^:K9L1VCZ5AQ>L6/\nMI"&VR?;6M&VY4)2O\\.D'/W&^>_S+7UW[W@,T1G:C0D7(6X2R3:@Z2-5%7`?*\nM-21;(G3F"=DRXC(0CX3:?20X3#Q(?^]>^^]5?%_)AN;0O`;.?'\nMWWA">'/^37RG\\\\10TU[1&-V[-Y3=-5]V4D50A`)<#\\HN4K61HDTH._BR@R_J\nM$C@BS9F8.QL<]?!4+7/_F.Y\\O0G?_R.B;6;/K6V+8!MI]$?^XPP]X5K\nM%GW>^4"Q>NI5/E^[`KC?A6*$:@S5&(%D"'$)B!"JC%!T"%6O/J]R@L_QOFK[\nM;NL776?IE,O73XR^XM;SSWS];[4'5R^CL]6<5D+UUNAR-H/=K/JG<;H[HV_'2Y9PR67TP`Z%$@\\\nMW!,)7PPN/^++:!A`^1*E#"*>X`I"V<,7;7S1)I1=7)5W2N>_F#9,=WG]D@O1\nM6L/EW#SSX:<07R&N."JN^(HOVKA\\O:YYLA:NU\\)G+5R^BL];A.`))J$HJ[]L\nM]\\+7.WG@ML]>EOZ79DLY=]^U('*%TOK+2D>O5]J"HLXVKB"X')U.H0=WT3KQ\nM;]]NKRR]RUIUXO#OR&6_^[(LL'%,#"F"S^B-VZ@;./OWPF:7EI8\\ZKT^W1QF,$[4V'?_1?9DVY&P(Z@?.A8>=XUL^\\%@CHK>T!A]_X&4`^*.?!Q$&%;PI\nM;:9W3^RY]M9=^V^92(G]A]XR>_-=`U-7'L)&"0N/?I50K=)($]QHQ9/?R0E/:G8V\nM84<,PQ9&K!!5@=4L<'+NL?L,%\nM^=1;#O"0_J#B(_>]<*R\\8"GQ>_>`T5`)MR1)XX%K;OZ9-[[V31^/AD:GJ?(6\nM>?LL\\X_\\!57O'(.#":-7)+2;EJ[1.*40I1"KZ34L\\V,Q9ZY.*:X;I-&T:&V0\nM4&+C04!AC"5.!HWWY=6^S&__P0J/-ZQ^^B=N%!Y\\Z!(MH)2B\\K(OMN9SK[SQ\nMK==???AG*7OG*5P/"!3M!8KV::(XP481>W=;KMACJ(+&>84$:&F%M0IC%4TM\nMT.\\->>?PSN.R1=`IKLB0*F=@(,67O5=DO=[G"A?>:;1Z!)[?"L\\+\\)E[%-T<\nMG<;(SA&H%?J3P?^,*'5/FA+UPR>0VN%M1'66FP482*+L09C#-J830!$""(U\nM@/,XXU!:H:J2C>QOI"'EG$2TE\nMFA*E`EH)OEC%6(VU!A-9;-R'L!9KMP#J#H7T+1#PQJ$OW&;V_R\\B2.C_+GA\\\nM8$J$URG%L3^Y%][_QR\\2X--W@U808#:*!XPKNXA;1TN)40ZM`UI#\\+UZIJW!\nM6(NQ$3:*L%'M2L::33<2J6(_;<*U-]Q*D[O;5%O`!8P+&"R(<:#8-Z^ON\nMQ5M`:YB>2CAS+M^==9YE^A`\\#E:&XRN7<;8>EAKL7'M\nM5AM6V&SNNMIU4'5HUCNT6KSI`QIO,%YCC"<(.UNKSD16^8L%\\\\5=2!1/S>6F\nMD:A)7^6_[L:.-P>B`5[(CLB1:2>]%6T!$,)H$85SUW^:*#H7O0&*@\nMD:!)P"2;/JZTV@31?9`-2QAC0,`YAT+U.RMU0`>_(5K7PK5&:[7Y'*W\\F-9J\nM0"EZ%[/`1:M1J?US0&!\\ZY8-GU44SB!*;SWOPH)DHQ>D:D'66J(X)DKB?JK=\nMR%`;L`9E#)6W*%4+WYB(N#&$UF9$(4WU/&O!Q0%$$*$IPK#0]]7^\\$%8Z<9`\nMM)4Y+AALG'/!-47?0OVA+AR@=$2K%Q&$S>L`27,*&P\\T$8;5\\Y1M%P4(02'"\nMN(\nMU6Y$Y?JP]302#XP2#XP.2&#LHNIYGA@(M;7&@C"P(3[T08I":!<-M+&$JO/?\nMQ`;G\\<:CC<<;MQFPP0>44OTL5*_$H9]])`24CN@4BCP.#"8U&"*8J$'2W)G(\nMXNGQBSO0"P"(L$,IDM`7[^MK=',(JH&Q$67NMTH#[_'>H9U&&TVU(3X(VO3S\nMODB=B:IZ-=X`5U&,Q]++/6F\\Y8;!E23-28MB\\ODL<%$7\\@%\\8"((-DC]=ZBO\nMTU^$!7[U[1!J*TSI`-Z#UYM0=`MH3J28\nM.-T4KC8+-UV7!1L!'`+>FYV73O/*\nM$F4&&1PT!.]PSJ)L2A)/H!L3*-L`W9@8FUJ/O#SW,]1%+:#JZUT1GO(!OP$B\nMKLYR:9KJ>'`*Y_!:.R[\\-"2A+ILE",'X>J'26[E](X4&W__H757H:%BGJ5)*\nM?*A*1&D%5@B5X]R)?S=EWEV+FT0NJ.)_KL87R4(*H`)^#8@VTF<(@$#ET8UT\nM3*>C>_&"VZCA@PD$YPG]A<@#B"%H06L%:B-?R.;:4:=>1SRXVR2=7%7.!^\\E\nMN"PCS];(LM,4)>B&V9VV\\<5QG`?]\\YL[ZL77N]\\07'CF^Q@Q,G\nM<9(VA(8V32IP(H*`"IX0CWWC?R@(!(B'/L$+0D(5*A(\\@`0\\M`*A-,VEI8DI\nMB92D:9M-[SOH:'OBDLW/FNYWO.F?G#/P?GBX(\nMO`K,B]_?.]39V;Y=:Z7R1&,*L\\*\\&J[(;TKFRW&E]WFTB!"+)4@F;2#/JW+S\nM_+V5&P(8%S(AR,Q``Y;?'\\!QV@Z<.K7GS5V[NH<\\+R]DRHPP%'6:/"V'-Z::\nMDV:9$Y5X$2$:33`]?8_.S@"B&XC-+S$;B3(XT(GV-;$03Q%Y^)#]0RYMC89X\nMPG`YU'1A;D&^#RILM;3VX;EFW.?;MOM16(OK>'C&X'E"T1DIIDQ`E*`D:X#D\nMK]0')N>0ZQI2*9=0"`(=?>P]/,+]QF=(1)<8OW>/8R\\,TKJCFTL?S=%Y\\1*O\nM?C7*<'<+]\\Y?(+)PZ/#<@MZ.$+82`SLQQCCOQ9J,$S5BI\\')&!QW>8GD02E!\nM:T$KP;($RU)8.H<3H5B$17`]<%U#QO5(9SQLVR.5,J0S`29Z?'SXP(,309*C\nM772X'A<_S;`8$%KW]:'OWL7Y]%UV['P1OQ/%/[P#5%!H=+"6IG8!<#=;&Y4!\nM7SF4E?`DN4H9R?ZD+)<^SZ%U>PLS2A.9V$Y[)$%33RN)@)_DL\\-\\%NIE^E_3\nM.*-?)NS?#XNMH%VL43F/B.`X3J%6)?\\K5=;+(ZL8*X9LC57U*Z>OBD[+"%$-\nMT:O@FFSI9EH%YV-P$&S'\\->>O;PE'ADT.OT?&5-I):*Q3LQ<1$1P73<7HEP]\nMY^J[>$\\YK>*:OQ2ZH0H-!)&2,%3P9.FY9TT)7U8F2Q`1E`B93$:TUEB]??VX\nMKDM/3P][]NPI+$!!L#:L1*^D5>-=::U:--NV"85")I5*N4HI+!'!&$,P&&1T\nM=)14*E53>#7SC5[1`2F=(,U'1@+8JKT>HU>K4.YZ&LA*KM`YL9R?7@EF4@;WRMZ/^O\nMX4HS4+8/U&J2IQ'Q4EI=/:!RKU"URJA>`S;58:6R0\\IMK;D//.TLY.=**;R4\nM3>+2.5KNWT3;($W;"GW[Q/]"FQ7Q>OB4:.:6;&Z__Q9=?_\\;@92:X2?3(&]9X[Q[_87^5;'/G:[$92JLPL#%A-+'!\\8XN3W#->OC7'GMI^Q,0NML_VQXE^)>HW:2)Q6FHN1\nM<_SVYALXVB;@]3#9'B29:*%E<9@O=H;P639@(>(M?R-;CP'KS8Q20CKM\\H?S\nMU[CV*$&PP>5`[QCA>(;YVP>9VM]-H"'*G;OS!3UE/?`T(EZ&0_CCQ2COSW^=\nMO0^:L.]-DWIID$7_25XY.LC4D6V<.?-1SME->HRN5=;2B@M78OS\\%BRF6WE^\nMZ1"]P1UT!"<8:&YDZDL=B-3Y;W3+(IZO>ZWX[/X2KUVV>60:>/GQ8P[V&+[[\nMG>?H'PSB9KS.,#PE34R-8EEY6+J5E7LB@2/&%IE+@2=%=\nM:_F)")967/UDD1]?=XG%'0Z&9]D=S'#Z]`CM[4TU;:G,@*KG5&X]F:DFJY00\nMCMC\\\\$*"3UR+_NLS/-MF,S75S\\!@1UG)5.HH=:!F#]2*6B6]7K[*>3KE\\OJ9\nM.?[I-=%RY7.>;TYRXM@7F)SLQ?/,$W6797(E`S:J6WVE5)9#UX)W'YH\\]JTS4Q:\\UQDCJ-]\nM#J=.CM#>[L.V[9KK%0*@-9E,INQ\\M."`;=M(51#T]^>)X'\nM&&)N`&5O9_B&RZA9(I6\\P=EWKW+FG>HRU70]?OR8R[7P4B?ZLJ;'A9F]7\\V_V3_0O:-T@QE!V\nM*E)-9R7>\\SS'&!/*AF4+(-C9`]`W-K[O^/#(KK<[N[JCOWK]1UNQ](:"SHT-\n7A?\\">74FVT/(N,,`````245.1*Y"8(+O\n`\nend\n 6543 ImgUpArrow begin 644 internal\nMB5!.1PT*&@H````-24A$4@```!`````0"`,````H+0]3````R5!,5$7NE<^5\nMBY*Z@K(<%!S\\]/QE#&T5#!>^8>H$!(0$!!`,#!04%!TT-#S+R]KT]/RYN;KC\nMY.V\\O]%ZDOAP=Y;.U.O6W/($-,P$%U>AI*SEZO==C?PP6:L%.)<:5L`]:KL6\nM2J%)>\\A/6VTO69%ZF<2-FJLC9+08.&`Y:Z=JELU_IM6KPM\\&:-HD8:,]>+@V\nM9)A4B<1->JUDB[:6MMIF=(.WSN=^C)LE3'(_=*E[N?:9ROO(VNQ#3%39Y_3K\nM]/PTDN-39G:IM+U1L?N>QN,76J[5`````7123E,`0.;89@````EP2%ES```+\nM$P``"Q,!`)J<&````%!)1$%4&)5C8,`!]/30^)*2*")Z5D"`)*)G`@9P$24G\nM*%""\\H'`"`A`-%R-)A`H(\\='6747-5XP68YJEI^BIHC9+0E7)\\Y:Z>2LMG,\nMV^T$:=@]>+@V9)A3B<-FB[:?O=VRR>/D[/4E3'(]=*Q*>:I[N?:9R_M#3%39\nMY_3:KCHZ`````7123E,`0.;89@````EP2%ES```+$P``"Q,!`)J<&````$Q)\nM1$%4&)5C8"`>&&((H(L8JAE")6#`5A4LHF*BH:<'07JJ*B`!-5T$,`**J%@8\nM(*`.2,`(`0Q`6LSA0-7(',5:^8>H$!(0$!!`,#!04%!TT-#S+R]KT]/RYN;KC\nMY.V\\O]%ZDOAP=Y;.U.O6W/($-,P$%U>AI*SEZO==C?PP6:L%.)<:5L`]:KL6\nM2J%)>\\A/6VTO69%ZF<2-FJLC9+08.&`Y:Z=JELU_IM6KPM\\&:-HD8:,]>+@V\nM9)A4B<1->JUDB[:6MMIF=(.WSN=^C)LE3')SHHH%%`)0^&`/L4#-*?KAQZ[%]KML_SHVW(0'4R`)S(`````245.1*Y"8()(\n`\nend\n 6549 home_32 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```"`````@"`8```!S>GKT````"7!(67,```L3\nM```+$P$`FIP8```&X$E$0518A>V66XC?Q17'/V=^E_]M=_^;W>QNUI!$=W,S\nM7E.KU&B*%FO!M-0'*6JE0DJQJ%"17D`KI13Z4(JEU5I[`VFAEM(B@;;0!RT5\nM>XL2K#%73#3&O22[F]W_9?^_V\\R-D57ZE5*ROML6/_NG_5JL;XP@)_?I\\`YZW`;Z.(I"@J0QLW?JXVONYAUUE8\nMY9H',.5QU+(S>?W0PY/'CS]7!_^9_R3`4\\"Z]>N9GYR\\L#HV]DA0Z[W3+1PJ\nMC]ZTR.BV2SCZZ]W,O-"'A,MF?&/^N_G4U)-!'#>/YCF?/P^`LX;@CR*$$!B1\nM3U1&1IZDDVP+96\\X?N\\`:^[Y-I5+O\\ZRJT<)PK^RN.MHC4[YAKA27A_D^:NC\nMJU?/WKFPP"\\^B`)_`DIQC+>V/ZCWW2]1^0&?MP;KUR:L^=(-U*_]&I0NQN8I\nM82BX]BY._.51)AY[D>2E&%&S3VSQB"F*'8C8CZB>/\\#S@$01%,5E$L??4H)M\nM03T-A^[J8>3N.ZA>=!>'CRSRS.]WT>X(FS8NYY8;UU(*YVD=?)J9I_[`XN]2\nM:`1-P3\\1H(\\",X4JUYP!X+00O%BM$H9A'-=JMYO"/F&LW5*]I#`KOCK&\\.WW\nM$0_?S(FY>;[WLW]0E*^@,K2>5Z<"1$\\P-N0P?>.4+AV"D:/HF\\U2<((M@;(Y\nM$O;WP^0]P`_/!/`\\\\-"55R(P6EZQXIN29-\\POKVBMBU@Z,O7TK=E.Q*O`=MB\nMSX$C_.2%&D?\\`*^U+<>DPIPU;+U@&BD:$/037K@:W=!$6W,23>AXZ.1F1-J1\nMR-X'1.SW3P$(`88'!K"'#U]6R._<#?5'?F::(['!*XV\nM\\-"$R-S*I;P(`23/0:3I]QV<8+AQ.+J_?E'MNEN-J8R1=^91;U%UJ'<,EAS;\nMM_;RH^.7TRKUT=\\3:OT8>;+:UGNIQB9?Q:;\nM',?9'.]RO+==)8"\\/4V>S>Y;]J)\\>NTOB[=2D63Y*;093:E2!O,YFV\\S7"N0+W%>U!5P*"J2%"1V:OB\nMYLSF//GX@^W3%`A/'>0Y*&!U$3][$#$QZOV2"A;O4ER1XHH$9U.\\*_!>4>WZ\nMH>!\\MU4%58\\JA.68P%1QW@!G`RBZK>8=TLX^%(-J=\\'%U//R&[U`B'>*=R'>\nM@W<6[SW6P5`=+EX-_FT`4!4DCA%J7;AWV6D`6=Y-BB2#)`<1Q8A@C-!<%+2R\nMD:$50Q0>U&6H[\\9<78%K3S(],<7R/D$51`0C!F/`E$L$4L6I/3M`GH-1V#4]\nMCK_\\0<*XW#UEEE*9?QSO,MH;OD"T\\BJRM"#+/5GF23.HO_8#DD./\\W+P608W\nMW82W#N<-,O,RF]RS5$T)K^5S`X0>&F:8(SVWX'V)HIVC[18?TM^`G>6%B9#Y\nM!<%U%#*/9A:;*%=E$=[#1&4S$SV?)&\\FY!W'<&'85-J)U^C\\`$1@,5%V/#>)\nM[P302JF[G,WK^O!NBE?V-W@C/=:-4UI`8B%5QBZ"`6/8>WB1_6^^"XYTZ?M/0H4P%B\\G_N&'\\($,6%8\nM(HY*S,^>(-:`+ZY\\G&2D1B@101`3!24,%2(_QKR"]^`L-*>JM!-#\nM7GC4MM&BC5WR4PS](^,$<1TO\\^<.`="M@$OWV"]5S;P`M*`H%.NZFW?<0;_N*H!(C414UYTC"]&0A.EE$3NEG!1A?8&T70/5T"*]@W9G7\nM<,28H(J>*PG3_)W^Z=5,20N(U6$=N%,4.`G@+!06DDP1WMD<49P7U`2HO/<+\nM>B8%%$4543$AQH28,"+P!F^;%(7#>=!W`SBH]`PRLFH%(K+TS@I&C)3*-6V<\nMF")-VF<'L-U*N4MA.X@8#&I"D`A,2%88VDD7X-3-3ZIGPC+5WD&,`"((`B(R\nF,_WZ0G/_/QNJ9W@,_F__\\_9O.@?:"4TZGOH`````245.1*Y"8(*,\n`\nend\n 6550 clients_32 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```"`````@"`8```!S>GKT````"7!(67,```L3\nM```+$P$`FIP8```(&DE$0518A>V66XQ=51G'?VM?SS[WN9PS,YTI[;2E4\\JT\nMA=IBZPS4MBJ*+45#0+FI(20%0:`&;P31!U`)*(D27\\!$,5ZB@1A,3%!>L-=T\nM:J=VRK2==MI)YWXY9_:Y[/O%AU%2*,68F/#"_W$E>_U_^_]]ZUL+/M2'^H`E\nM_I^;+5Z\\F/GY>67MVK7Y3":3J50J<:52F=$TK>ZZ+B=.G+CD&^7]-KS^^NL9\nM'!S4UJU;5VQJ:FIQ'"%CM.W+$FYZ9^=OT]/3#BJ),]/;V\\L8;;\\B[=^]^?.NV[5]?\nMNF2I-CIZ@=+<'-6Y47#F%KN./6\\V[^WM9>_>O1PX\nM<.#!;=NV_VS3YLUK=2W1>&%T-#$X>$*;&!DRRG/35]5MSTNGTWU1%+F%0J$M\nMF\\W^*!%,%6='CE(:.49[8H:;KH8US26.C8KUJ]==-]/;V[-_W[Y][Y]`K5:C\nML[.SX:.;-MTUA;YW-F59%]?*/VR+__-:]9OF"D4"L^_\nM^.M7O8RTU[[_4SM9WW,3$B&2;^*7S]"9KW/PY'$.CX_7RJ69_UZ"4JF,&\\0<\nM/7Q`ZFE?Q:VWW8:L&B0D#]DOXY=.TZA6V']N4BZ;577-JB7\\\\9G;6ZW10]7N\nMKF6HBH2D&,0$Q,CHBN!SUPI[59C3MUR=U@<^ML&]\\X=][PWPT%;!BMZMC$R:\nMX=S9`T.?V;)N?6-A$4))$`5:H(K&YH_WMS:\nMN5E8$X35+'*RD=B9):I>P+?F6+&TU5A9;+^]__";+V=I\nM5:OW?7)M]MY\\)F7(JH$DR<@2A/5)_-(0;OD<;<>.G4MD\\ZV_M(<#_7JZ\nM83RL3Z\\DJ#?BUPAJDWCF!3QS+!3P*T/7?K#^X8.G2W_^&B\\=O$P)%!G&7GL"\nMS0[ZL\\7VL;@^E@C*6E(*3)`D0O,\\H35+Y%MQ)E,L*?[P/Z2QPZ5)T>*N7M7V\nM4VO\\:-(G>CJRYZ7(M_"J$P1N[;A3F7ZB/CL\\VB(N'3OO2&#_67A@0PU1N7`A\nMT=C^BE^;S.'7-Q*ZA'89OS:%7QG'JTU/!9Y]5[:X_!<=*U8ZJQ[H8\\^6`)5H\nMT+(JW:%37AE'(4ZH5.RZN<=M6W.H]>P(SQZ^Q/_RDW#TQ6LACM9(:NI/LI[I\nMC(D);1/?,;'*X\\^.G:U\\R\\J)<-=/8A*/)XJK5Z[>>&[NW-6/'JI^]H8KDC=@\nMY+$G3?,UU7SYI6NR_5H][JM.5@/C8]73;J@5.ZD=!5\nM0JT!LQ8<+$_-[AEM2)BWS[AJ]Y>[[[AGTSTO;%ZR^<'CYM%/*P.U)8O&`E+3\nM)G(0)5Y?IEX77M&QQ5+:0OJP=VD*;VK";\\/\nM5(RNKD?NW;&SZZLK5Q56O/#[\\\\K(X").]659E;')JPIGZ\\L[1K)M7VHM).-6\nM\\87XZ,NSDG7+22;:3Y`Q=!JS6=2D@:^J&%%,F^,R7Z\\S6YVDJE0(]?`3A&Q!\nM\\.I%`-\\#GJ2EY?D'=NZ\\\\JF/;%RD#XY:#%<#:DMOY0EM*T6YCI`3C&>+5+04\nMF3`02FB(RD">DX,5VAYUR"S7R1M)FM(9THD$,5"U;11)(HPB7-_'=7S-#\\,K\nM48"GWP:0@.\\L7;:L87E='5-D]`T,H9!(9M%$@)5EO&"@)KCDM1T=%TE].)B(I_`\\JW_\nM``A`6^8XKN*<%SQ!?U@-0\\<'Q..S\\NH"6#\nMU9B$0@I2*N1T*"8AI8$;+H"$,=@!U#Q(>_AN"JL64<\\[5&P;69)0%86ZX^"%\nM`:J=(+`B%$6AR6AIGGIH2B7"NP@@+OA!*)=++G)"$&>TA60D`:H,20V:D^`$\nMX`9045$2,:$N$(:"+FA-'"W\\>0D2RJD0.J1#'7$,V6Q)32\nM5/7",*;N.*BR3!!%.+Y/H]J)'T0D24FQ%]=$+'1<4,`'6H#A`O@0>J2E&GX<\nM8=<\\J+A@J"!+8/L+K#4/[(`&)<#RZOB^04YJL,S7=]Y?7_/C([(MRV$4H<@R\nM413A!2&Z8N!%(9Y=9VA^*(C]N"PD@0(!0AR4XSA7!!6PR.H"'Y@KVZ#+(,1"\nM$DEUH21.@*AZ%),RDZZ+;ZL(3U*;9C8ZP8._&1T:NN.2R7J"WUZR%A.C""$`\nM0Q$BK,6Q.P12F#*R1$)`R5[H]CA>J'M"60#P(X3ETYS74)R(G!R#'T2692F:\nM]K[OW$NDQ'&,$)('\\1X(5`@`%=F/%J).J0OW=,S""9`$!!'""9!#G=B3J,XY\nE_/-\\#=^S*D)(_Q/`A_K`]2^6(.KG=#/%80````!)14Y$KD)@@I!#\n`\nend\n 6551 reward_32 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```"`````@"`8```!S>GKT````"7!(67,```L3\nM```+$P$`FIP8```'L$E$0518A<65:VP<5Q7'__)'W!C3\nMI"TD!$$?E)0B-6K*A_(%PJ,%"2%5!?$,2(@66J2&5$)!0JBE@H($%8)0*J02\nMFDHH)"%5:$V>MN/$S\\3V;KRSN_.>O9`\nM_W,0`/CI@1/X]K>^@/L^_("8F9G.U.MADE+**"4*@&4DDN;P;=O=Z8OC^,'C\nMGU]=@$?W/`TI59HS\\F"M5MG9T5[HSV72&==GEN+G-A8C(=T_5T\nM?W]O:VL^WQL$_HY,.KEF9F;Z957WZD?__*=5`>!M68WLN/^C`UUKNUGIBHF3\nMY\\XC4`2;A@:1R690:,W#MAWXKH7QL;'>UPZ^JK6TY+Q540?``>#7['JJ5ZFKI1P"$$@2^AW)Y\nM"2`485W"=7WDGDP8U,6264%=$>EZON4Z[J3KE%_,9M(_>F+?\nM.Q3-PX@E814$H!J[K3A1O1(*4!*B:1AQ.]\\_WOC5-7QAU=>15T2#&P<\nM0&=7IUXL%O.52F4S4>%"1UO^N14Y0`D%`8%2*DHIHU\\H1`P*A!#8CH/#1U]'\nM>WL!`X,;D4ZED$FGP`6''A.8-AQM;>W(M^:1R:212J61,`R42B6,C4]@L5A2-&0"@(*5`E.KJ\\Y4`-!>B-!K'9A)*HB1H",F(9[DT!%>EU/+DKB26BZ74]7T0\nM[51%>8T@)""IA*?74-,``SJ42@%*18<8(:",KRNZ,EO0:O1`$S&XN`+90L!:7:2WA1_3\nM,E;R0G#QZ.Y#NT\\5DH7YL\\4SP?Z[]V-=K.D??CZ9RGX\\D\\TCU]**\nM1"$&O]M$D+,0)B1T?0WRQCO19FQ!-MX#C<T[VM-._,RT^W/'P58/W`+3\\QDNG=\nMR706+;D"*KE%'#=>P;K.0>S<]C1B=!!2ZE"D"EN.(4R,`HE9$%[%E9E%5!71V=&)-1P?B1@(EKX2R:>(\\SN,R+B'A&!AH[T1VNF%5))>(&'@`30XSKZNOK0NW8#`,"L\nMF+#L2-BR+=0L"Z[GXBU?C>"'`0I?*UQ87%A\\+),:*#B!N-T-Y;UV$-YI&,D!\nMSD*=-0%X!-`$X3Q*H7,,W3R$;"+;V'4Y$K8LU*P:+*L6.*YSU/7<\\G\\]/(?V\nMCT+1?L+"O05.?GF[)NC]FA`?Y$+T<,99TPG.(RC&.`07V+!N/0@E*)MEF)4*\nMS$K#_EKUM&5;^VS;^E5,BU56='I_X(6[H0#**.T60KM7$]I#0HBMG/,$9PR4\nM,0@NP#E'-I.%[_LPS7(D7JV4+=OZF>W8SSSXH5T3+_SVYQC]TBC>QN<#^.1K\nMNV'9#ABE:2'$^S2A?4((L:->KZ=]WT:VW!=",/>>^B4IE"0!TP<5V(<1G/<^[;W)Z*F563.1RN8J4]1_;\nMCK,WH>N7YHM%_.7AP]>M\\3\\!-&-O\\?NPJC4`2M=C^AU!$#QZ<>KB&K-:>:):\nMJ_Y.T[3@P`,'_N6[JP+0C.>#9U&MV0!4;O;27.JI[SPU_9&'=JE?[_S-OWWG\n5'XD"KSY"@AH;`````$E%3D2N0F""\n`\nend\n 6552 accounting_32 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```"`````@"`8```!S>GKT````"7!(67,```L3\nM```+$P$`FIP8```%ADE$0518A>V6RZN>5Q6'GWU[O\\M[ON_+N24G'I(F:DPB\nM-J1I;$H(BB`%%04GCG4@*H@*3BP41PKBI"-QU)F(`RD.!#4@5;S6E@I!3*$-\nM";8<3\\[]N[W7O==R<$XB3OP'>A[8L-E[L]=O_?9BL>&88XYYKV,>35Y\\;>OQ\nMXJF%#G6CG,CMB5ZP5_O!/IUG=KF?V=0+=E,-=^_M-'=OWYT\\7,R]^>3%P>GU\nM8;C<)KE4-'*J:,46C6P5C;Q>MGIG8Y(F2WW#=@&J`BC?>'H)`/\\H:-L:5%GQ\nMSGQI7";-,[NN:I[UQGRD:UGH6LA0`DI44Q:-/GCGX?X?=S/O;IY?N&71LUZU\nMFZ&(@62A,6:BJG<&F7EUOTB;;2L2D[YD8/PH[F,!213%7.Z;]-V>D86^L8Q,\nM8LG`T!A\\J[AD\\,EAH'>Z8RXO97JY&X1EU^*JB!/%J])5I2,1CPZ--;?4RHX\\\\8+KVSS\nMO4^L8A]E_^;4.U*ZL9H'5@9]5A>'Y'D/YQUI-L&T-4%:@H'<"$.;L*H8`UGP\nM&&O`@'(X>LZ2:\\O0PTJ><7HA8[7O#"D^^YU[JR9)`C@4$$49N7C2:KPRZGK:\nME##6(JJ'=9H/J4.7PG9HL90X&C7(4;:BBJH>!M>C)W6!TF:T&%(21)1!YK`2\nMG_KFZ=W%)/I?`4D42>EB1CK;SSPJ8(Q%!505:RQ&!:N"B(!U)-\\YLOOP(E4%\nM/7)`%6L=JDJKAN0"CD"*+<$[\nM!$.=E"8IQAHR9^AZ2S*"9[MPK$S3\\SJA$BB9X6>;5EPPB@SY!W'?#9G-J^&2Z?/\nM?O1@;__/_EN?6N_\\;=,_\\^[;F]Q^=8^U\\QP&Q_`SLX1=598:](3,M(K`IZIF9M&%@>Y63!HZEF\\\\$]\nMQKL33IV_>..+UY:<.?/IKRR'XK[2&HI(ZCO$?I#0CZBV\\]U\nMT/,L9&JF&V]S_^]_8O-?]Q$53JX_P;FK-QFL7V+>6IV5#4TQ-4TQ)A83;*SH\nM!O`6QEL;'.SM8C7^H3WX]V?\\>'_?VUEA0V]`6Y>,IP6A/](L'XU#/_NGJKRN\nMDMX2T;$HQ#8.R]GD7#&?/MG6Y7E`R_GL7CF;_J,7VP>BV4Q4C$HZ@:0/J:3K\nM95E>GNR,!VTQ-K&HZ]W[X$P)7G?X'O\nM](W$=H3$#Z-R!?0)%GKT````"7!(67,```L3\nM```+$P$`FIP8```'8DE$0518AF]N/<\\Y^U-M!G7OM))WV.K.@6`7[45]]WU>K5@EW:4__=@]`$KE)\nM223F3$H04R:1B8?C?!B%PW?ZOF/OZMMKA+V;_\nM]Y\\=S2'UYYM*$6(FQ(3UJ8Q3?E^$&#,^99P/=(L%\nME]_\\)U=V%Z]??NW5;U_ZZY]^M'[BE)^]<.&_,Z"5$!*TM>;,%/[U^BZCS;A@\nM^.C#.\\1*,;,)&Q+6YQ)#QH6$\\AFT`;/!]GR3!\\^>.[>]O?WTYO8)_<<+7WWF\nMHV,>&?/^I]>KY!W-__KE?7^2EO_6\\Y?''JQPL>;U:_,KG?5?4"(7G_W&IU%W94`$\nM(X(6(2;#+_[@^/E5PXV/G:'>:&AKH:U5Z8UF4JO2JQ*;2FAJ!=,M?O5&P$AD\nM:\\6$J[*N$G"A8R/X(*4'HMY5R?".W7%VOHZ1LGQ&#!),$IP?F10'B\\5\nMP^"Y/.NP4?!2L9AWC`$<-<-@Z8<1JUH&Z[%]3T>+"HXO/;Q%9:JRL*7[[@K`\nM*"'IX@520GM'(K"J*K)$6BVHJF+J,JD6,(JN$A9:2)5FL)'1"+DV1!=9,64Q\nM6@2MC@%`2T&JE*"`C9R8.4N]6H&&+$)5"TVC0`1=*SK1=&A4HQAK3:$E>'P&SN<4E(6IC/1FP2\nMHB2&860<1[Q.#-8S=!VCBJCH>>*3TR*!<#P3:A&26IH02"FQH:"M%=V*1I2B\nM;FH6=4U"J)L&:X7@->UT%>L\\BX70K!0&MERXS\nM'Q(^)I)Q+&:.,0I1"<,X,@Z6:,!:3]=U6)W1T?&UG0TJ(T<)[@A`SL`EA`V@\nM!3P0X(G7UO*7M_9$RPI"1@2V*F'2:A91@RCJIF%1^^6X>&`<-9/I&MY[^D[3\nMKJX3W,C6BL8L&3UB(+\\$O(+D@2?#NSQJ'3$E2!&^DR3[;FW:KSQV*NW7^'%$\nMQ4S2AB9X9M-'>6OG*RSF'I^$;&2Y"RS4FM%ZQKXG5H)$QYF==;12[Y4@!M`5\nMQ,AG?O\\7_?B-_EY4=C2U(45'92#'Y]`2$%^KX-MAM%XS4Q"[HV\nMC#HRF(B95#@'0UVA)PTY0*4%),WF/(B#;E9+W=A,Y!WX'W0(JX[DW<>)W%[IO,=R^B_=OT@Z4R\nM$ZRUH%J20!4,)U8F?.+\\:3A^9KJZ6]'X;`\\H[\nM"&')0$[T!R_377\\5[P/>@_-E8NM*=+X`"M$0PIVGM-9R<'``P#`,[.[NDE)"\nMB4(M5W^8W(SS9?7>0PJ.^>[+#,,$70O6"4*)50;K*/950DB&&.\\,((3`_OX^\nM(01FLQE55159RJ+@X(![[KF'DR=/,IU.2U:5DF'-[1[0>LE`*M$YH982]1)(I@"0O`20/EP"\nM8PQGSYXEQLC&Q@;3Z?3HF5+O.PN<@\\HL`43P::F[@/,E;5HG!8`ODAP!B.6T\nMO)/Q3IXZ34P1K10Q'>:)/77OS:*LM6\\IELI3+O;$D*X@)YF-41JOYX:8QSI4[GG.PTK;4]19-\nMGF+T)LUZA=$5[09HTQ!C0IE5C`9G!P[>^,TOV\\_Q+5)XSR8LV;!<6./RXAK3\nMLK80T"('AZ!-"*`TQ,CO:AE]O_R]\nAR948XGKT````"7!(67,```L3\nM```+$P$`FIP8```&=TE$0518A>V62XP<1QW&?U7=/3W/GAG/V%Y[_5A[O,D(("7*P"`D(!8E('$"(`Y+-`0DDI!PX<7;,\nM2R`B10D.H!AV;:_7NSLS.SO/?E9W%8=9;-9VA`_FA/_2I^Y2?_KWK[[J*C4\\\nMKO_W$@]CBDX`8&T.L_P[#_;];`H4.$!JP)Q?^^^]Y<,`&`0&<3#3XO-!B-L[\nM^B&@$]\\YI<7IO"/Y8>,1`4PH3$$7BM_2!??"<(Q[>_X!S6P'85E/6(7BI=;8\nM/.M8@N_5'A&`\\3'.J;-%^_0+KPK/OC#T*LG7ZV1*Y;TW',OS-4/S%SJ\nM^!.(U[Q'`$`&HE@VQ9>^X+K/?.(56;&^,0@I_.705IO.,AI[]G'\\^7/S]3U3\nME]KA!.+E\\H/;VO^^>?5'/T>EVFG6O#/=UNW&VW^X,KZ^<.VR[3@!O`,23!0@\nM,T7E4R\\5XB!X)?CS[ZV!G[WQIUG"4PM`EH'1J.&`;;OV,V?=XI%C%RQ7?'.H*+QU`(S68`SI:$C<7:>6SW-T=FZ^6BK^="4V9PH2\nM/EO8NO'N)/"YMWZ`"0-RAPZ+CE7AN-L0BT8)/>J!.P$P<0B]-EE[!=-IX=5K\nM;MCZ>20*M->,;BP2M%I+)$@@))AC"J,N[.S_"]W_W/K;CQY[C%VL#AK[/_%,G:=Y>X2[(THNKL3GOV5PYJP7VFP<%\nM!AJ_ZJ1?J4BQ<_^MUAYM#RG[@_JIZ?"UNL-`&7!S;-=Q6,J0_*T7LF?O?AKU\nM&OU>EUL*CC9WY,+4?"WH#3I&)=S,H+%CBH.5,KX_9E7:S`C!,2GG5):]?C/A\nMQ:)@:&_.NR:-.:\\UTVN=/D79Q[/P7(LO&L0D'+'I5#'>>)DD+I/?O8OB\\H#]\nM)%B6Q?9&,Y]D[#5*(:]?(VSL8_>N*:+5VS3Z&T@A:`K!TX+:;HSC&!#+QX"4\nM63ES\\#>R,35M8["$P9)@";`L@25`&HVR;+)9)45D&I6D\nMQ)$BB17C%-YSR@QS!6KM-7;W^XA4H^*45*57=68^#G3MZ9R`Q,#IY^'D&1AV\nM(1A"-)YH&':)(H94F\nM!1*M`3";FNP"/T^_07UJDDPE2E9+$$5X4,Y,,(>>",0@IZ>^<95WGB*.8\nM,%(41CVJK:6M1YP0B">/D[IEHC`FC!6BW4%^\\/<'G`,"",?0[W`ULOAC?IH;\nMMVZQNIYP9OLVONKT$)O,0DK>K\\[P5[O)XL(B:[T^9_)-/BF7M[Y?6G2>.,;M\nMZ5D6%J[3[O8YXGH<_L<'6WSR#D#@P[!'IE+:W1ZKK0X@L6R'>RM-,UJM#BMK\nM;002V[(G^?\\G`)"FFE9[G=75-B"Q;?N^7O8=C-"'C19*55GIQ.3+E*MU\\G*$N;>S@$0IEGMKN/D"Y5J=O$GN`[V[!,$(;@PP\nMVYY"V$UJ%8]BI4JAF&P!$$"::2S+H5(M4_)JN(FZ;V8"R#*-M')XE4U0?W`?\nMJ`UF@M%K@XJPISY*K;2=6J5,OE0A3P_6S83<:#`")^=2VU:D7O7(5SSXW)9#R/0K_](4L@@'X'W#SSTNW?0G&V0R[DH;2A0)K?W`(0Q(HH184*:*`XX4*M82#-&K0]0JTLD]R9E\nM3@*&G3CV=RA[#6H-0ZT.Y2J4/2AY4*I@BF4RZ9`)"V.[:)DCPR)5"N7[*#]`\nM!0&)'Z#&/LG81P41B1\\0#4:$P]'DVA_))(IOZ,R\\#HR$.;&)8DE)8J!O8`PD\nM@`+T)"&309A.'HV`X:8"(&+RF:A-I4"V*GKT````"7!(67,```L3\nM```+$P$`FIP8```'ETE$0518A>V766P=U1G'_]\\Y,W/GSKW>KQ,`G&NZ^OKSUW[FQGZ4-2IVGL$E#5OO!_')TY_]^<[W\\^?0-\\\nMIO^SZ),M_RJ`47)6?-UI:*TICZ0V^H<+0P2(:.\\-GPK`.-.%BRY_#%&LZJ]9\nMW_"]IL5E%WB!K-WW[L1$WZA_M6'0$`#@_)V`1@*^S]&PJHCGK@`P\\M\\!\\&,@\nM%D@2Y]=,>:)NWY%)O#]0X((;AB8"UN[&Y2L7XMB8=]6%K577C^4*]SWWXBVO\nM)<];)/V#\\Y\\./U.`H/H*1'M[\\^Y9%2N.#'IMAWIG,!/J&1A\\E^;&-%DFCKZ5\nM33>U9K:O7I[9V%A7NJFZK4:_,QYTG=W^C7CZ;[^?<]\\Y,U"_X7?@I-+<3JP:\nMR07[A=1%/UT&BP%"JILTZ$%-C(-S#XP]#]`Q$!T"P5Z("2%3O@'GZ:W7S7'3_(NO&/7NV:N#<_$?X*'">45A?#!<-`[VNTI\nM`+S5\\BDD"L\nM@$AJ"$6HJ7:PQC;Q9J^+D7RT`+9M`0CG=?]W`*T!U)?+5]\\:[2PO=U-3174A\nMN.&AM"\nM_@)M3_*R9:5+.2%PDGQ@\\)&U\\V<`^`IPTT^`_0?3J*W<8B83.WY\\74NJJ:X4\nMAP>+B#4A!ITP)<0*R(<:1\\9"#.=C1+&"5@J0$I#R`Z;DW0WE_*)+FM,;XE#\\\nMX=>W+N^@JUX`GMHP1P8``$\\#CSX-?'E/`;'T%Y^5MFNJDGAWJ`A?'O_:4!,^\nMG);!D*NZ!1C+^KHE[Y,)9@'6"7/&`*)F+?`P,[A159I`J66OHHN?31DU*4^<\nM<&-S%F;SLX!E`8Q]KJ8JR;.>1#Y0\\`7@2Z`O+Z,#'X4_?;\\WN+1G3*S+,^M1\nMV`D@81U_S[+`$R8LVR3-#:,G)_!&OPD@F5$R"+.#L=8&%5$@F3U=77ENX^,E1<.%K0&D357J0Q\nM'2CX@A`3$!(AXH:#\\TK+$:HL[GX3^-F%K:6NGRB8%8AC!8!@!%"\nMW#XV$^GLE"])RC']+]&;!6!$2":,>/7RZDK!IA:/=\\]`$6'2$W`#B0`<,6G$\nM#$A9O)$1>T"U5?P1CUQY!\nM]^#$=#@FI'Z,"-]U0W5T,!?!CQ3ROD+_9(S!:0$M`%7@5!15Z$,M\\H(?O]0:\nM:*KD<`S"I*]\\D#8PE'=P9R]0]LQI`*?T@=IKGX%?C)?$$H[;XW:CO26&##ML\nM)[$]76)S5QL(F3F;=%@68%J`:1R_=DKAG)3"FH7`ZWU%#(S[6)14A46.WCLS\nM$^SJ[IE^BAPSTCO;3R\\!``QU7@D`_;,/5KT&$#TUUI=W%B153O@:^0B%X8*^#8E$`,-H!^=+P-@Z$#E$)`G8RK5\\\nM-#822'IY<$;I*IO61%Z\\3X+<\\?O//\\UJWJFX^>97,)3U4ULNKKMU67U91R'6\nME7NZ\\B__]=#45:BV7927`5K7`WB-<;9X294%(?6N#_<,?ANKJB1^U?8?:GM2\nM\\V:@^Z%U2!%Y.Q\\X?$]7W_1U8[G@>;<0_&;C114NH@@L"H$HU-4)I=L7&;CR\nM7`=?K+?6F^WEC2E3G9$Y\\#%3\\?@3FP#:)A\\?6?F2?OOH&T@8HKL'P)\\V(K'U\nM`(34V8>XQ=5W7&?_MQSKGGWCOCF?'X@<>.'PUV\nMU4XI-0NPF)/$K!+\\RML=%`HD;YH_ZDJ[./\nM[M%>W[?6M_;9^\\!9G,59G,59G,59G,7_7ZB7\\O`#QYIX(0J-&@BM7A%9U1,9\nMI4*K\\\\BJ4]:H82><>JR=IQOCD)61`6"X])1*$2-QZ65A7LI`7DI_YGR0ER)9\nM*9.Y\\X-Y*2-*45QQ3OWE"[AMQRD`K16UP.A6+302&.+(JJ6159M"HZ^)K'IC\nM9-6"R.HPLHK(*A\\:W0Z,&D^='#C6R'?L&FK_Y.[NKD367KNFY8./2^/+%\nMW<&;\\7)N[F1^5OHX*T7E3LA*GV6%C&9.=F:E_T%6RB.YDY'2D34SIW,G-2\\R\nM"\\C-FQ8\\AZ]]O@#O`7B-TGP9R$OO2Z/5:[Q7JT58;+6R5:NI!HK(*`*C"+0R\nM5A,817>A6"7"[R:%W#0U.;4W":U-BGGK!&H&T$JAE&"T(K"0`P&ZJI&5SON5\nM*5SOA1'GY4#N9!2H`(47/JQ@ZOE\\7RA`!($U@=)7!EK5K%:$ND.X;J%*3B4O\nML:5@3*=4:(W7"F4-H;8LC!0K>H+N2/N+*UI8UAW0:P25IKBBP#F'>$%YP7A/\nMX"$6!`5_;&A:C6U:A6M#8(@TB$O"K0V>.^)*Q5":UC2%]/.,O*\\H'2:Z>&VFI3@\nMHO\\>RN[ZBVUC\\IG+%OYJ`IWIHJ!6[\\)8.VWG.3Q$9Z%,%4BI\\$*&M08@P6H-2\nM=-L$"K]QW:*PUWF9_%\\K,-?`YRE?#LRK&!2*LBRQUG:"SZU9.HB0>0M(G,,H\nMC5%@@@B\\HT2ADAF4B^8L(IV,S]E%D`[S,Q#$!!1!C/(>E:>(UMBR0"5-5%RG\nMIV*A5:X2@I5>GBM`GQY\\=,L(2H&'-VM?5'NJ(67I.@]I\\TQ,`5$:'58PQJ"4\nMHIWG9$5)B6*ZA$90)S('IM@N]YXVA%'378K(\\QQB+*'7&LZ?3IY4B\nMSPORH@"E.RN+"-5J3%2)45IWR)UF_^SQ,[GO6$QIPBC"6HNUMM/DVN"5IO2.\nM>AP22J&\\ES79SV/FK/3F4(^ISJF+"BGQLF:LV?B>N\\I2T\\E\nMBJCJ$N?4X01CP[<<\\$%BA+G/.X\nMHL#G*8$Q5+-9>M)I5&OZ#.$SS7OF^KRY4%AKJ&E/M35)968<\\HQ(01R%U*LU\nM5O366!B;52OJ^KSNT/"=O_T.,-?$*__@\\RQ=?@[[]^W;%&E?F5^K(P+..(]!!:EYARM\nM%![-;.G)XVZ$B=,N1U!D68YSGCSOO(V]R)P=-4HK*I68,@A)TI3(!IR*,-=UZZ]]N,_^-H/OF(!HGH?"X/Z0.;-VKY:Q+QZ\nME33+.O9!418Y63LA2]LHH%*)B.,JUAJ4`JTZ7BC+$N]S%.#*,F-3+0FV'Y@\nM.]L/;&?/L;W=R_N6?^I=-[YKCP4(Z[T$77I=6K+(]BXF$4LV.8("BCQ#`7$U\nMIKN[!Q2TTY3QZ5F<]R@%5BLB:XBCB$JU2@7%9#(QEV%!`3V]/7CO::<9[6:;\nMK"QQ7O`"1FLJ44BMNQNK#).M$>[XS]MY_=+7,]`SP/W[[N>!IQY@;'J,WEH/\nM[[WD?>72>4MWS2:S#?NN[PZQY7O?8^V%FR[*LU8XEFJ.S.2<$U6H5F+BN(+W\nMGNEFPN"I468*((BP84@86B*CB;0B0@@RA[2FT=Z3Y.691FUE!4-CDWBE\\28@\nMIT)N%)EX,B?D:4'12#%NAO5+ZWQMQS]0#:N4KN3.;7>RY_@>7.E8MVPM'WW;\nMIUFYX+)_7V;##W7-GS=E>V+#C1]\\7^W)PR?>=&IDFJYLDG[IQJF`H+)-(U-X4\\$&`7&HJ86:6F3H"H4HGR24C-1T,9-[\nM4O$\\<722W0<'F74A6=1/L]0T4T>2"VGN<$5*EW&L>4N%?]O]+200[C]X/Z/)\nM*#K27/?Z=_)'O_-IOKMMF!W'FKSV_#>L7ZQG%_?UQ\\?MKI\\^`+X\\-X\\7]9=I\nMBQ/)%+:[GZ);$;B"]JDIIAJS3,ZD)$ZA@Q@;5;&10ZQ%/#C?V,JRY'6OJ7%H:BO[9P[2\nMREM,NDELU7+=VG?R@3?>RCT[QGADWR_QE?DTAO8O>73_R15*F^/VH2V;$9%Y\nM-JK:H-J%,996TB8X_#2B+`Z#"BISI&.P'L0AWN.]X$3PTKD6:4K>3DB3A,;X\nM*,GL-`A4:G7BKA[RN97,F!@OX$00[XF,XL+ECJ__XAXF_209&28VO&W56WG/\nMZH]RVS=WV;!,DRZE%%:\\0T0"7V2J3#4256G-SF*R$ENI\nM8J(J5CR(1\\3/XOT1\\7Y0Q`^)2,/+W.'*2W>>I4O2)%F>)JUSRCR?KY0V*"C+\nMHDR3UGC:3H[&6?MH&/L3WM,400KGN&1IUX99_=`[=D_OU2YTJ$!Q0?]&;EQW\nM"U^]YR![#QV!(L65)2Y+\\$6N@4!$L)T-OI\\2\\8,B?C'>1XA7B!?Q/L.["1%_\nM0+S;+M[_1+S[I7=EP^=%D;<3'KSE(BZ_;0O)EV]!_\\E?V31I=J5):\\"Y\\GQ@\nM*2!I.QL=$MKZX]G9G8='N[52D(G7HGW(MZG(C($,@U@!8]XOQG8A?H(>9)WS5L\\[T-/\nM-9[Z\\),33RYMNJ;:L&C#Y(5]%]YV[*EC=ZS9N"9WJ7OW5T]\\]9MW[+_#"L)E\nM"R_CLZ_[['WQ1/S>S&93RU"WJ7]'[FOB/W??9@\nMX^"RU0M6JY7S5[)C?$??PXV'/[7BO!7OOCZ^7DWXB=][I/F(U57-HIY%O'_5\nM^T?[7?_G^Y;U37WK[F_]VE@O^*SR?P&E5.=0`JW,9\\7CXX_;1Z<>93@=IJ?>\nMP_BI\\=I`;>"FNX_=??2)\\HE-A]PA@EK`M8NO96.\\\\:Z/O/,C#]]PRPU\\\\I.?\nM?"7H_688/#C(H5V'PO&)\\3^^>]_=8QN_LU'Z_Z5?EMZS5#8^L%&^>."+1:O9\nM>O!+0U]JK_GY&KGRR2OEB<83OV@<;ZP:&1GYC>.\\(A8"6/G:E4PT)O+OW_']\nM?[QFX)H/?NZBSQTY?]'YJ$@QK:?9.KO5'E%'+MGK]E9,S7#5@JMD%:O^:=[`\nMO*?W[]__2M%ZZ=AVWS9$A,9HX_+M(]OW7[WS:CGWP7-EW>/KY#V#[Y%-@YOD\nMZN&K9??L[KWCA\\:7'3UR]-6F_$+<]96[$!&F1Z+U<,'*!W#YSNTPUICXN(MQ[[[VO-MU?C:V;MYX6YL?G4Y2^O'U'1C^L^^/?/M[$?-'S5GQF;>EK22ES7?\nM*_8F?C$<>.H`TI)J_YK^.[76JTXO7OQIT7AY.#I]D\\-#@JJ.#\n@1R\\%N/766U_6//\\#[LK3K##A%88`````245.1*Y"8()T\n`\nend\n 6598 inventory_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```+S4E$051H@>V96XA=UWG'?VOMO<\\Y<\\Z9ZN*$)DXL&B>UE,JZVI)GU!E=1C-S[F>M]7U]6/O,S2-Y/)X&`EVPV7N?\nMV7NM[[_^__^WOK4'?L:;^6D-].D_>YE6NU][Y.#V7VSW_:_T?SZ%S;=[T\\%P*'/?8TK?_$W]D_^Y2^_M*M>?GYJKMU[Z[:_G>^.R;?^GGWOBOL\\]-%[8?N;J5=*?WKH^G>^^9=2E*H4ADI4BDF>>#Y44B&*V-/_4*W\\6N$\nM6W]+*3-(/OMJ%1$098]!7\\?061G+I@"D"02HC.V^OUP:JC!U\\1P['GN!K%3#\nM&L48Y3\\NEYCK'Z73KU"IEKB_4J!62JB5$LH%2R$U%#)#(;.4,DNI6($G/D_W\nMRD.4:F5$+#+S;;*I?R2U($I=,1G0B=Q\\6``):DW`]Q9("V5V/GR*^_>-DUGH\nM!^55G6;B=I>=U8S1@N$BE#(%$P]K#=9"FO;1>HUMC_P*A_;OY^+-\nMP-7%%B/Z$D,%0Y`8]EK-;PI`8B,(2\\#@26R\\KA8@LU&WGWVT2KM70E50#8""\nM!L`#BM$XBP:-]UY1">S.LNQB>.,U_=^X#$DG_$T@4)*9$#?^]SF`-@!@+`:0#[`^5OG^?(K\nM7^;(Z!'&"Q.8ED599_1U6KE<9F1D))K8@,T@3<%N)8!DP``"N"@A8_GQK1_S\nMH\\9IIKO3//7H4SRSYQG._?AKO_:KW1>0]?0X`C(^/,SX^'CW`,@,,&%C3\nM/B0#.8"[%"2E4HG)RWWCK&[SX\\1?95]M'M]O=<-])DI!E662&A'`"1];7M\nM0S%@<@:,20DB/+;C,49'RW1,E\\/%P_1Z/0X<.'#7K+,>@%JM1A#P06/MDT09\nMJ8+9*A,;8C&)"BH>2`G1%!PI+>O=.<_MN7F\\#]CU1E_3@@A!#;71';B09Z%T\nM&<"&3*S_"<`H\\"20:5X%BL0T)@(8D5LWF)R;;Q6R+.#HHNU_Q\\YR1E03!)!&&'=>OJ]`&+?]ZGR=WW'2+N+\nMJBSO3P='6H+M.Q<2E86X]9M^D=M3JY\\1450$LCW4#_\\#%/<"0I9EF+PN5M4H\nM&5&\\%PJE,CTORPQ8L`E(DD_*^P'(%TUC#%OI!@`T'@MFLMU&<2&:J%!V6)-3)>E\\BCED4-DI5'2T*-8W4-6\nM&L$F!0K%$8)W&&-0W\\"[)N);^%Z+T)\\CRT>WV2-,NJ-!L=_`A!NJ#\nM+%V[H!B;8;,2/BAA:=>6-[-Q"6%-?%%#@WY["M]?Q&@'U[Z.[]XA^`[-&Z_1\nMN'4>UVW3FKV(ZS?I=T;IIPF^.T^A.H1H0J?3XLR9,_CT-B)"$%T^#*`1@.O,X%T+$VYRY\\K76?R?"YAT+T)`-`_:QW?=BG,:+"()WH'K.8+T\nM(X!!X,+2S`]`:>HI^/Q^P((0];\\A#^0,6.+#&EJX]@S!-9'658),(<%BK"%`\nM#"X8O#=YX`8?(J`@EJ`)S@G-A45\\.D^00,B#%8&@`_G$A4QM@:&@]/J.;J>+\nM^+B`Z0#(^V8AOT9"H45O\\3*=^0N4TIC:@C>H-60:`7N_XNQ9`A."1<2B)(SM\nMV(,4)_!!2+(B@L7E!O:YC.ZT'(V@M&;G6+C3I==J+`,(&UR)!Q(R`PFY!HV9\nMU^@V9DAKVR%$>6`-WAJBV:2TL(IYX?!``*U-5KSE-6SHXG^&]@3PXDOBU+,Z^\nM(2Q)*()P.0-!+$E2Y,'CCV,JDS@?\\&KHN;`J??J@M%LMO-W&FU=O\\L[4+`]N\nMWXUZLP0"OQ$)Y1X8['%=MX'+P/O"$@#GP20&;W(`8E9(:;4'1!.Z#J[.*[XW\nM,*?@))K4"_2=I]5J<>WZ/%/SL\\S/SW/RL8]RP)TG.$6=0?TF)*0:J5N21_YE\nMT'LPJ<&S`L`*&0TD)&)13>AT^UR^=)9N=@>1$'._QGVO\\T*KV63ASFWF;LVB\nM6(X_;CW5^CT32N+>U@%4411)!,B'4`WZOPR89:9)BKROJ.M2V&4(?Q)L5\nM6>@>`)88R)\\3C:G2A[A`#0#8E0!8K?^!'Z*$+-:6>>"A7Z:R;0*;53!&4&FB\nMTHCGT`1I(J&)^@;!-Q#71)S']XJ$?A\\16HCZ#9<2AKS^UQ42\\F9)0C8LFSB8\nMY5GW(8)U;B"AE%ZWW9M_YUMGW9URUZ9)+,R,Q]B!,W-MJD[B\nME`[VPJOVQFOVR8._KWIV.?!9$3IK#?A_`B#_`G)!E5]5Q0QJ\\D'`2_V968QVOMO=W=MC7V>)G!TQYB\nM9F1@HB$;($6#(`D*B$T@0!$2$%Y0%!X0+T@@Q#82`O&`B!`*3X@'(B4*6).0\nM;6;,X(S'LW@9Q_9T3W>[M^KJKJI;=>ML'P_W5G<;>Y+8#M-Y\\">5ZM:I>V]]\nM__O_MO\\I>&`/[($]L`=V'Z;N]4(Y!\\`/`>\\C0@A`@.#!!PBA>/>W'X<`WH/S\nMB`A?!JX<^;E[\\R.^5P`A@%+\\1-;GV:OS8"VHP>.0XECRCTHID/R#0B$B)+&F\nM5A81D5\\'KMRK'_<,P%J(8UA>A^?.'>3DJ0^PM7R%H:$:<;E.VKC!Z,0DQO20\nM_A:UX3I9VJ840Z0SANH1I=`DN&P'^+L)P#E`P!HX8^[7KQ*0H($EBO-O"NWMW_GL"P`=`^F2=\nM)6R_@\\D25.)P`I\nM$I.08=,%G.G@,O#]-?J=1;9Z+])->Q!/HWV&M55TI`@6?(C!*9QC;T+(6I`H\nMKR8J]#'I(LYT2%=>QZ3?PO9'".6`#R!.H158I]!6(1:\\CQ"G<'O-@/>`9)C.\nM'*:[@G)S>)OB_2C.#X`J%&`LZ$@A+F=`?,[`G@"P%D+!`*%/9^4LW>95XIK&\nMV?QI.UT`$(5F4+F*$/(1P:F\\_.H]`.!<7MJM!=MKTEEI8$R"+<5X!]8JK,X=\nM%!1:BQ`:_'#P12@Y,#9WR%EP\nM0>&*$$*!+D"Z(G&]Q-ML[5D.Z#LPX(K$M**PJIB1(D7D;F4HA&@;S)X`&##@\nM?@8M&5@R1^B-@.4QL:1;()ZN,'::]?I,]8]=_E7\\N_]3M?\nM]/_P]\\^Z??NF:336OFL_[CG_G_MS`'X_!/4LT0@Z*A$D0M"(*$1B!(6(1B3*\nMU]"@$^+1D\\C8:58:71J]X6NI+2]Z[U:R+'NQW=KZ_`M?_^JWCAX_+I_[M\\_>\nM/8!"J$R*\\`=*L0]!PFZ!,A`F0FAM<2I->>J6]>(\\8[BX\\#9_&T7$L[-\\.HXY\nMW/?#+/'+S&5/<6ENE69G"Z4L$9[@`)]($E>NGYQY_86/S'[!E"*#V$/(>@#KP2Z]>Y?#",D01:*71*J"4(E(*10"EB;2@$)2*T,JC\nMM69B)";69FE\\G'\\Z<8**!'YSH3%Z>*OR*5Z[>(CGW[C*\\1,'^.$G#U.*+/UL\nM@[358&UY4ZTLM(^_L73T>$5.\\_CD_S`^HBG'YC41_@[H_%]_;P/@BOE9>O@TS>7+)+I/=62:YM(EZB/#>/%DK0;U>H3X%D1@S3+&\nMH*P!'Q0;I5_EJY>)O)MWK>OB>TO2B'H;K-W!!`"5$LQLT_^%.52PLH;ZQP^]0Q+947D-QF:\nMGD5EJXP,1QB3HON::MPEJ(!0SFN^`VV@%3_.6O@@W[P^ST<^^@S'9RKTO:)O\nM4JS=9-_$%$ZM4B\\9(F71CWDN7![F6OLTI^U98K>M2+\\S@+SU#RX0;/A=I]^Z0&]SC:C7(LO:6#F`,FNHN$Y2J>?=V()DT!K[<2[>Z#,Z\nM,\\T//#1)N[6*CF.ZW0:)WT"W%XG[#1+?`=]BNC[.T8,)-Q:/L]A\\G8?*A7"Z\nM&P9$0"&X;`W1$=[UZ*Z=(UU[F.X)S!>X>$+J%WD\\2NH\\(*D8-2U,]#D#HSHX;USAAKFYK]DW:JU823LC`6N:%R1!HW&^R@?%QST/1A7HF\\ZE`GTC<'9\nM#.W7B$**5H*2`$%0O@\\F12>:2J7*^-@H8:.XU[TP`(+OK6+,)B[;PD5MO*]A\nMG8(B1&Q<=%ZEB`)$6N%#A+-@')"!JJ]2KXRQMKY!FJ5X9]#>H'4);Q5.*<0K\nMK(^0$)-4IA`S0:52IEZ)L;8`<(>N==L4X@KJKQ5J/*P8V9]7V\nM\\.8&,X[51>)J?"A"R(*WD*0O<&3_",MS<\\PO+].WGLPX>B;0=Q%]'Y/Y$CU?\nM@>H1*A.SI'X?S=6W&*O)=D%P]FX`.+`VD*Y?(NNVL$YOW\\@.!K:!<+$[0YIS\nM.PPX!RD0MY_GX;$%#E1*O/C2RZRW>VRTNZRWNG1=0M>6Z+HR-IJB-/X$5^8-\nM;R][^C?_B^&RW0%PARV8VP#8(C1RP1(P67?'P<+A[8ESP$#AN'5Y7@P8L!:,\nMAV#;].;^A2<>&44V4KYQ]A4NS=]D,X.N*]'U-5P\\23]ZB%>O95Q]*V/AXAD>\nM+E]`B+?O9>_`P+?M`\\A..#D--N1//7:Y,+=.[;`1*6)1J$3GHW*A"W)-#%GS\nM,I/^,_S8["]R_EJ?MR]M4!V.Z8Y4&4I*!`Y;>OLR3PU]C*.GA?;RM\nM_NYDW[8*2<@KB7-@M<(584/<<%&_IT4#R/IG&?&K'!J\nMZJ=IC,ZPLBFD*YYV4"C)J,H<);-*;>@8#?<>TM:K!(EQ]BX:V38#LL.`L>"C\nM0J07H>3M(!>*V$=A/41NAP%;E-(0>\nM(#M5R.T&4$RK5@":)+TVE2A#^6N(GT0'3:^745Y\\B1.]+A5ON;PQ15M5&)W.\nM\\FW([QI`@%JMQM#0/BHA0>(I2E2(78UR99A@)JC+!+6R,&8,4MI/B>.4:^.8\nM[LJV\\];F]RJ7*U1K4Z`2:FJ*:E0C'BN15";`CE+Q(]0J"<[V\\&Z*N:]]A:G%\nM);+J>WDC^='Z\\V?.#M4KE75H?0<`.4H)0GNX;#K*-T(L"LE6<:*)16$SE6]6\nMR1R]CB:(0N1-LI"O9^EF[`-=ZQ'GD.!)A\\HV5;+A)2A46,L[MVA<]A8BBD@4\nMO5011"-LV>^\\H'%UX;Z1Y[[V__QH\\\\<>DO7SK_F<SP^__Z`T^1%.?=QW[`_Z]]N0V?WJ_"O.&5T4A.\nMSF3-$^7)F5$[-'[B"U_ZQI=.54M;EYS__@4`\\+DM^.2TZBU9]=H([D/U=&/J\nM+1\\?"B+)9QOM_WPZ0NYC2^G=L?_8@@^-QZ]?R=0?S>E:\\^APCD_2/Z)P_[;/Y3KW8O?;R,_&Y_KSW['MC_`M.A.4O;WSF_\n,`````$E%3D2N0F""\n`\nend\n 6561 balance_zoom_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```/84E$051H@>U99W18\\60@D)>0DOP*,^4TQYCT"HICMQMXQM\nMW"2K6+*Z-*,VFEYN/>^'C8V19#O$K.2MQ;?6S)][SC[?=_?>9^]S+O`MOL6W\nM^!;_3)!_-H&O8FC'V7`YS73]SK"WKGY`6?_1@:'R2B\\>?MX_ZGC^9!.X_4+`\nMY0`T`W:>PB8*""432',\\<.>KQY_O'_:B>U"9V]TJ/-W1)O>)6:X?^@>,WK'&\nMGU0!?[S!!,T@U"(:+(9H]D!$\\YCI-RS@UQ=S^/7;.G)R\nM\\XM,/+E!)\\)U,5=%3K?-@Z3<6.ZD@7/S3'%DFQ3%:C+B5K,ZC8[:%F-@,(*X183^XCTF\nMM'<95Y>.ITE90Y>NXNSOWZ\\^M'P184]^R$Y,0/>6)<@OMW`?O#>X]$!GJC0<\nM#+YL$OC.<:8&Q*(JR?%:?:+%OL0LV:XV\\<94IH6XB&P"))'9!)KF=#T9"LD9\nMC.E<));:W3N0>CPPA/T-[>C>WHA@6D$*P`@V/ZHF4%7FF',*?_>T2=QCFW<;\nM05\\.N3<:-9[1#;0O?T0;P774$.KM2Z!O*)37TBP^R/4X)L"2ED_)V_Y,4N,K\nM[3;^`LKI%S(]5IB,A1.*JC6D570ETFB-Q%ES(*@W\\R"BP?@7JJ:Y,ZV25G?O\nMRM2+#]_`LZ??&4G@RRCV4:@J9CH=I'_N,KEG[9,"^H;8'JN5G%Y40-NG^#34\nM=YV`@):V$'C)",X/H7-_%_IV\nM-!H154,:`)[].0^.8^7[>XDA"!P(XP@`\\,?)MJOF`W>LU.GCMW!SW4[RR:>/\nM"FCN9.`H-MLDW+QCCVZ_JIJ+W;GRZ%P8U>SOGJW%%6?HL52:/&/+A,T$O6-S\nM'7Z[YX`^4-?&DAC%_5^``6"'GA)0$$*/S?P0QN50W'$YBIUV*I671TIX/LW+)=2\\_\\OHS_^:N!5^\\/\nM0U&QD>=QVBM_5NGMEQQM;U3K^7D4=U[1-LYF)[GY>=QZ3<=>R4S.G#J1PXWG\nMG@A]@!(`Y,0\\D.4A>'VUDN&TD[(L#ZDI*3HRIZY%1[N?U3'`B\nM`CK382?^:U?(?>J7HF17O8Y3*[BTHI%=@D#G%?IX_&SQ,02X700?K5,ENYW,\nML%G)QL("#LM_+_AU@P5L-CJKV'=B,4T)0`AW7`]SLQ::V\nM9)IAU:\\4I-+8P'$X;<,6C;O]TN.+H!2@)Y`#A>,H;KN:3K#;B*FTA&LPFT>6\nMI@\\VZ_C9G\\0^164!02!5WJPC-H^ROF06<.L3SR'#2>9;+&3SFC<5MOAV!74M\nM!IHZ63T#,PB0%SVMIT^N"UW$@!4\\HH'KCFV@*KA7BL%K)+-0Z^C3^^IN.,\nMF51.R^QSGL/IQ44F@;)<81`4\\\\NPKI=)KWYN7-\nMT'5V83R>J(J)B[W]VAD9K1'[^'1_NN9[/XA\\L'73A@/C2TK8NW]Y^X2,LOEY(C`B:6$'R\\3K7,GL%/D\\SD62(15-]\\Q)T?;-"Q\nM[2/KP*I52I=-(K,<=O+I\\3W`'?9`_AG/068.5WZ![Q=]_8,W-C2WN7H'AI,,\nMC$@2;R-:L(@GPE+!)/[T1]_+JZDN>U>Y_V(S0A&&N&R'SOE`S$4LVVEU];2L\nM#;[Q:N^JO%*B'Q8PI8R#JJ'2;":AZA];.Y^_+W84H>TMP!-/*]!U;+*(;'%X\nMV%C[V`I.6_'8Z&WNP5WH$2_;U%)38S6=A6KX?,$=!P0/4!4YT@*DF(Y8T+5_TP[/T\nM[1O_=M`#URP`;OR#AI?NYN<*)FS^Y,DXKG]0'4%JQSX=H1AKNO1LGMKL7*DS\nM`XU?+>T'V1X40`F%02@#P'D\\GEOV-39?M;:V;>C<1=6I3(>%&PP.LY:.CHY@\nM7W?:;I9M5@O5[*XT"W23S"TMI06?;/(W\\.F>W38)Q,QW@*<[B*'I<265_+2O\nMIQ-/?G@H!R:7_V!B+)ZX=MVN_8F++CC7*,AVFGKZ!N,]@;Y`_?X#K5!3\nM>SBF)IFNRH"AB9R0:[,XES/[[.&:1GY%:\\.6$`ZU_E8>&.^`<7B=BZ8#LV9P\nM<&>0N8)(]A"#)2^_2QE!Z,M>Z.XSMLDJ\\S%%]RQ<,'J;22DY'#YVAWM>>V=O\nMGN#*C)?YO'PH&D_+CKU]54G.A*7)=343V=#&F)1"@1"S<9C&W+RO3,\nMR,_/G;S@O,L8``.`D=!@[!L&]@T?7(?W%1#\\Y7U%FEDI?2<:I^]Z/:G2KM6$\nM>#((HG$@'#WRBR8%Q%,2PG&+$8Y%F:8JLVTV^B$P,MR^R`$0CNJZ4>8?")*<\nMG!PCE98U65%515$459'3U-!EZ$J*J7)"DY,Q755E410%!KW5Y6>')M&JO,ZY=@^``;Z$0H<%L:)!T%6E=`Q-)H@B@:X1A2A@HX0!P1)9E*:TH3#.8GI`5J*JJ:9JN6T2>!IFA\nM,&[V^$R'S4I<&4Y#$$R\\Q2*-&1'\\,Q\\R/+1BNC(X&'I;\nM3FJ7D-P1X358U0]$T0S`)PA=;%2&$$H[C",>;*J9.RY>L\nMF7FB:-(3R61O(ID>6P``[-RV!XQAK=V!Q8$`X??L:T)2!EI[&9HZ`%T'\\C(!\nMCP-PF`&1`Z$&!@E#$"0UNH!#(40)QU+)^-8";U:RIFFWN;UO..P0"9-5G:55\nM'2"<0"@O$),@057U.:=6>,O*)E:$HTIYP._W=W1T-3H=]F,+>',;`"`"8,U8\nMYY7.OC%MC"Z``@0$H!S7M'==3>-\\D]LZ^R='\nM0M%Y^^KJMS>W''BB:MXBUE2[=G^TFWR]GQV:9C\nM=BS?C`<8,V`2+.`%*[X(R4=NJT!5U;PUBI)>4ER0]WA5N2]=XX8\nMTO&#U^*AO;5U?V-#[6V:IBRPF$T79CAL5XH"?U4B'EW8U^<_SYY;\nM<,W"F5/?N_F>3\nM9S+=L`4&L4TWL&SM+J-^8B%A5]XY=I4'`/^C=V,P%+DR-QU^J;-V+]?@*FG<\nMM+/NA[PU(,GN6A]YJMQ*'\nMB:<`07XPA$748.,BPPS?K2#]B^90]9,=H^]VTSMVHJUV=[_8M'-&3CI4PMDS\nMLDAV?N&&K9^OF>3)2-;%DR='P+FYP'V_F@.>%XNBZ>(K*#%^9Y'H3YPV3!<%\nMPQR-,00&#<23##S',AQ6=II98)?8[/QXR9'#JLK0?=YL7EVSX^@V))Q4<9%#\nM2W0K:'02_2QW?,A-O+X)O">'>W5OP_IYDJ"W:D1THS,]`27$FBHNSD>%RFT"E2MXZ:0DQ\nM90PL_VW3#K7E-]A4=\\0;'2K`@^">*?#7!,F0!VJU4TN)Q%=6Z3&)_IG:_\nM\\8W9G3)06`QD\nM90-6`7`(@%,"/%;`;04"@T!S"-B^&X@PBLQB8F@RV&]>&?U4]WPA05B'9[:5\nMO9!O%2\\(E,_%9V%6L_JC=55\\JMX;P)!2,/4"HG]6;0[)_]-\nM*$!#9_\\33W4/WG(:!_T;:R5.%CZ.`&>Z^'W[T^3N3FH)C;>;V@I-VB8`!B7_\nM@M^)1\\-]$QQ(,&J:[Z!G^?1TUR]JDXU+1+#E(^_`_O_A_P`7+.T"(LFS_@``\n*``!)14Y$KD)@@FJ:\n`\nend\n 6562 bank_ok_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```.L$E$051H@>V9:9!=Q77'?Z>[[[UOWKS9I-$,6D;2:$<6\nM%@*,S)8@`S(V14`)D!C;96>Q*\\1+C.,-$L<"8U,&%P456\\$FJ00GA%398`=#\nM0,8+8,PB@T%B)(0D&&VC&69?WG:W[GRX;V8D&8LJ$/:'N*NZ;M_;,Z?/__S/\nM.7VZ'_R^_;[]_V[R5@E^V3D$6AT4-5=V^]+^Z"]MQQ6?>X`'AR+,9:BXB^W:R`"I>0;W7M'\nMECW\\LV[.>L=YF$EUFW-XIS3VHCT,*K\nMI83^'2@1%JO,G]_LO,#<$R7N:J4X:"W.!C,:`E9T-#)<23E43"A%EL0Z4@O6.E*7C5/K\nM:CT;.Z!:<4,#/>9OCU'U"";NM%6Z[L/WX`KBC:PP'K4JX,8R2#Q_J\nM*YG&>I^&0L!@*:$<9\\K:264=1R@\\-7;38VL=493BPHCVF77X.>\\7<6H_IH2M\nM#L4=%\\]^\\P`V;1_%QH`P3\\$M893\\2=]@13FMT%I1CE+2U)):1Y+:J7&:6A)K\nM2=,,C'5RU#,;6R>DUJ&LI:TY1Y`S6Y/4_8UOY(DP<=Q]><<;!_!D9'GL5R/4\nMU7E+;&K_*;7VPM'Q*E$8(FD$<0A)B"01DH38."2.0I*P2A*%)%&5-(Y!>RC/\nM1TP.,0&8`&=\\0GPBR7J(AU,^N?H\\B.Q.K'S\\^U?.^]&&[XWP@\\M^?TK9T^9(%M_I![NS4.JQU"%D1)9(]E4Q;PCF'\nM=;6@M0Y7L[9CTNJ9Z-1E`1XECB@E&Z=9ZK5`DJ0')D:'_V[[@;X?&6.F#)WS\nM#(UU7ME!=.#6*S$`B]L;*87)AO4GS?U<4]YWN$PYYW#.INVV4IE7J51Q2#:!\nM`E&(*%"UITAM7@&U\\932-2#69N_69@%N'39-4=;BN13M4G)B<=;BE.V8.3/W\nMK<5MB_;65$%$&)RHRM[!B>L5\\@,@`U`*$Z(D;>L9*:\\9+4<$GJ$N"`B"'$%=\nM';[O8SP/SWCXGL;3"L\\H/"TH!48+6@FB!"6@E&3JB^#<=$#'Z72/$D><6*J)\nM(XPM86*I1I8X28CBA#B*L$G8DL1ABTLBG(T09TFM!9@YR8@!&"N'@#SQ8L_(\nMM:(4YYZZ]/*JU*WIKSC\\4FET(+;_K$PR)ZX.?"#M>TD7.I;A^0$-.%JA-6B1C#"$U$)G>P.SFNO9/QA!=8(]_46JJ2:V4.KM)L*0\nMFS7_\\4*^\\,"BCH;WCY3B54,C)=*)P<'=`^&WDS@<3Y-0!)[)$G$-P(';W@_P\nMS#.E])E3\\TI^V%-9L75_94WWH0ERQ;'Q5[I^^8WBS!5K7%R]'K8..912*)&LU\\8.T$IH+.0Y-!*1*XVQ<^\\0H0H0\nM48R_V`5^GKPK;-EY[8E?N[^G?-KS^RNK/)?B":P#/D`H^<7WL&'IY1M;C(\nM[.=[FIQO"'R#'P0$@4_@F<-B!U(K--;EO)O^]-S.GEL^LG#TX&B]2""Y_G@\nM^7@U`,Y!6]YCY?)ZZFS/O/[QKGOO>N&Y:'G;BI>6CBR]_;1UI]VW_^7]\\;$!\nM3*E=&P"B#*^U?236H43PC<$S!JVRC4XI08D"`5T#;VN![1F#\\0Q.!,_W$<_#\nMKP%8U!BH678___WD-]G>N]T+3*X]\\PK;<=F:RTZ_9.4EU]SW+_?=?DP`UAWU\nM04"TJ07FKP,0$3RC\\8S&:(6NL:!5!L#H:0:L737HVS;OZUQP8P%_W#%7UVQ[75?+`>,9M#%3RAM="V;)@G92L"-CP/,\\'&`\\GU/GMU`J/Y;?UMM%\nM1TL'=SYU)P>&#@!P_JKSV?C>C=M/;C_Y<]L>W?906V>;;9G;:3K"*,K7F$#C'#0W%CAM\nM@>4_7_@/G'$\\N/M!7BV_B@H4&TZZE(WON>[QSD+GQ^N;ZK?6M=>QY.U+@-=)\nMHT<1`9*ET\nM^"'O^^#[IG0[)H#7RC;*>%/*Z]J&A@,E@E8:O]!`GUF#GK..1[;WT56*^$QA\nMB,ZY[NXZIU?X:=;)XJW\nMW??COL#W.73'7Q^ISS$!')7O!5#:RWRZ%IQ3@@1$:7+Y>N)4^.Z6$1[NAX$3\nMVNFW&FL=VE-3AM$B:$^A`D7GS!ROEAYGV]@+I'Z*U`EK%IS,I\\ZZD9^\\7.#`\nM:)E"8%"O8=%C,J!DF@5'EF64\\6K6G\\XJ`$8)J5;4%1KPW`C8?9RVN`'5KJBS\nM1=(T1;34Y(!2H'R%E],L;T[XWHX?DO@I6C2S@EE<<_9&>HH+Z1X=I""2I?/7\nM\\(C7=2$YXEW0IL:`U-)C#:&NE0S*SW/QLG[>M:"/8B6F7$VI;^J@KOELZILU\nM@PA&U0H]3]'6$.!)%\\]//$=0"%"B^.C*CR0+FLZ)GNTMY8V:K&B/WI!J1GX]\nM!@[_UTD&I@J[27HD8T`IC=4^XV-C%$<&J!8GF+W\\#TC6G,-3$T_Q])[;J#=;\nM6+\\H3V`4>,*2)L.>XE.,FR(JKSAW_KE<-O_RGQXHI4\\=KL-OU/&8#"!,G%.UO<'J@('A(D-C(;-/NX)?M>385>UC2>LR.EL6\\73_(]0W/LVI\nM'05\\3S,W*//4^..HO**]N9T_7_SA5UM=ZU=LOK9U(P?C'G)1CEG)+#I:%G))^R=Y:'P+1;_(\nMXOPBSLE?RI!2MF73*G.:?LY,4$X)"\\0RY$I'9XSP[M(M,I:CHFP,D"+&NF;AYB\nM:YF?>S=?.:.%FW=^B9>35QA38_QH?#,7S7DO+R3/H>L-%\\V\\F+Z#)Y#:@:5+\nM3VA>FJ0)RJ7X@0,_5V@I<.%`,:(4538?GDT-P&`QQ#JXOZN?.D_A&4W.]_"-\nMA^][&.VACX[`4^0\\(3`*WPB>`5^#;Q1&"Y[*#OL.(;6*_6'"W/JU7+?F\nM%F[J_B(OQ;OHDSYNZ+^!O>QE4=-"5LMZ_G5WR+ZB(4D@35*2Q)(F,=8F"(XD\nMJWC=X16R`:AD1TEW8*1LM1)\\XY$++'4!Y`(AYROJ`DU#SJ&T(R"[B*HQI8F;S5?7':C?/70%V4/>]AA=Z#K%.L:SF/B\nMT!SK^Q/,;LI1#F.JD5`)H0I4PI0P3DBM$X[*IV8RBP"_0.1*0-Q4@%J2VH63\nM2BQ>(IA8,-JB8D&4G?0HG&3E=P(D5O#2K#IUSA%;1Y@X^DJA6U6_O/73LS_]\nMV9O';^[L,3VTYF9QIC[[0-=@?$,QM".5V$HUL41)MG9B+?;(0\\FSQTA*;VW[\nM^4]_GOU&,#B^X8'1!P;6]:YSGQW_K.N?Z-]T[3G7JLV;-[^^D-]U>_R1Q_G\\\nM>9^7L=&QO[UK_*[P_N+]Q?'^\\?/+I?(;DO>6_5)_K+;KQ5VXDLNW+F_=I)1:\nMU+N[]^)8XK'5JU?_+M1Y8ZVOIX_N/=V+]G7O^T.`ZZ^__@W)^3]Q%"?97MC*\n-YP````!)14Y$KD)@@M1Y\n`\nend\n 6563 bank_write_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```.#$E$051H@>V9>XQ?1W7'/V=F[KV_?=F[7GO77GMMQTF,\nM8_)R#"0A@`(B(51`&VBJRM`6I#Z@T-*T"*54+2\\)E+9J04`*H:T*+4)M@400\nM6CDT"="01&F>QO$C=N+U]N^M'&B/BT#_@2*,[]\\[N\nMS/F><[YGSLP/?B&_D)]OD9=JXF="0&!Y@-X:C*4A<+Y2YWR=Z^7.+8#=>2`K'+D-%[C`EZ<;^4WC]?:6PO-/\nM,RU__26UW^&!Z?Q<+GGN0NC15@$>`ERJM7QA\\D3G-5_[]YW,-0O>_K9-K%_?\nM?S@K_,VS:?A63RSANN':.5GWG`!XL%'@O4=$KM9*;CLZ/G?Y-[^]A\\T;5S"Z\nMNH__^N^#O'+K"!LW+J\\7-MR2%OZK1HO]E;4]+WKM%PW@OGK&P/*,F1/)=4K)\nMYP^,36_\\WGT'N.:5JWG3%:O0`H\\>G..N[Q_@O/7];-X\\W'`^?"S-_6U:2?[.\nMC7W_?P"VCW?P/H@VIR=''WMB@NNN6<=5%_2C@<('4@=[ZQVV/W"(\nMI7T)FU\\^W`XB?YD7X:]$:/_NQ4M_]@#N.M+&^Z"5EM\\`;MVUJSYT\\$B#-U^S\nMEHM6]A!\\H'"!PD/N`[D+'&X4_/#Q39N'!9N%IY9YV$=LRDCM26EK\nMPZ=?/_32`/C*GED@+%%*?33+[/L/C,TDR_H2-HTN8:KC.-:TM'*/]0'GP?N`\nM"V7?^5"ULA^`=JO`ME-&5O82UZ+MA0M_H(1]W@N?O6'XW`+X\\LX&`98KX=-9\nM;M]];*)EEO3$]/4F3+8L[:)4UL\\K&SA%X85^6.Q['\\AS1\\ARA@>[B&O1CPKG\nMWZ^$)P.*+[]UU8L'<-M3,_@"$-8H^)LLM^^8F.RHH!5:*]JYPSF/\\P'K_$+?\nM.8_U'N=*,#[(:<^R[X/@?$!YSU!_C:1FGK0N_'YLY(',!KY^T^A/#^#!W//#\nMQZ;IZHHN\\,Y_SGE_P\\QL2IYEB,NAR,!FB,T1F^&+C"+/L%F*S3-LGN**`G2$\nMBF+$U!"3@$D()B8C)I>R940$%5/KZ0:1?=;+!^[8MN;N&[\\QS9V_^G]G*`%8\nM_KZO8K1*3LQUN@KKRY$0(+7^^BN&+GS9!>L^$R>UUS@?\\#X@E$642/E4LFB)\nM$`(^5*3U@5!9.S!O]7)J%TJ"YS:0.\\J^*U.O!ZQUA^=FIO[DJ<,3=QMC%@Q=\nMBPQ+NJ)V@/SP9[9A`,X?7D(KLS=>?\\GJ#R_MC@.A5"X$0O!NV'H/SHX&#M\nM2^6XYU`W&K-U`O_=\\K8D2*MO\\M-[-6]HQN)XH2^FN;*C4.T,L'G\nM&9UF@\\D,(JW0&K1(Z3`$Y^&\\X3Y6]/=P:#*'=([]QYND3E-X:(T?(,=06['V\nM_M[NWN]N&.U[YW2KN/C$=`LW-SFYKY[=;HMLUME,!!XI$W$%X/!GWPGPR",M\nM]\\C6;B7?.=K9].2ASI8#Q^:H-1NSS^[\\G\\\\W!S=M"46Z;>[)!W4O?4C2S=+N\nMB-=N7L'$7*`UW6+\\Z%&>/!%02J%$RE;U`Z"5L*2WFV/3.;56@SUC)\\A4@HAB\nM=O=.B+OI#KT/[_G(1;?>=;3]BB<.=2Z.@B-6,K5SY]CGO9CQ([>_]Q02FY-?\nM2@(KO`\\R3\\80((@@4L:_F!A1"A%!%JF+#R`B&"48H]&J3+/S(`(0&57QHK1?\nM'&E$&Q!%G"1(')-$9H$[(9Q$_#)MG)&%S!E?3I(03GD#!-'ZS+^CC'$1P1A%\nM%!F,4J7U50F``%K-`RCG-EHC400B1%$,44P4G:J2#X(N\\MHG&_?\\]C533_3J\nMB^4[YUVUZOY;OWN,6\\;/!F!![:H#B#+/:PGK`TJ$V!@B8Q8]H`0E"@1T!=Y7\nMQ(Z,P42&($(4QT@4+7B@%$4SS5DU^T*@$8O>@!'P*1T1`9$"&N`,21KI;2\nM6)YC;[J7!WJ6ZEW3'=XTXQJ;4_[E#@I]NS:P(.]KV5[\nM]Z79LFM?MV;#SD9\\;%DGYZ'WGL4#9WR1*H1*"/.6G;>J5"$4&XW6"J/T0A@)\nMLL"!0%G(&:W046F0N`(0189M=UX;Q6M7]<5+)YEK-7G]VO.X]J9T^DM%UT,;\nM];+WM(NQ;YN"B;-Z8"'N3_>`@%*J).'"CEMRP$0&;/N,%7==42EOHA+EW2[^_;L>?>[LFWZ73RV%]O\nM^^(')SY\\U6]Q=@#/(Z(,(FJ!I(OH!%^D-)[X)JMZ`TE/+W%7+W%W+Z;6BUJV\nMEL@L/<4H*M:81!,"1$F,Z`2QMIMGKW_WH7Q'_T"4I/#F"!!E*FT=+Z)0A9'*+(,];-/LROOVP9UBREED3H\nM)&;]4,S8T"`'8E/-5>[0.A)TK4RQ42U"Q#!VH''#BK6?6K[LR`](#SW*[LM6\nMTVQ>3;#%OTWM_L0=CPV^*Q3U/UW0[04!/%^V429:4%Y7&QH!E`A::>+>/B;,\nM%O3(Z_G^4Q/L;.5\\J/<$Y]4$;03FJUDEZ%@M>J`KYKFQ#KN2X0V1@TM;6VFJ\nM$=)X$TOS^HE5+WOZ07?1'X9C__![I^CSP@!.R_<"*!V5,5V1GB:)UI@SA_FN)]AG0_H2$'F2NN+H".%J2F"AZ*(V=%6Y+V&UXS7N7"Y\nMQ[]A"],J(>F?Y9XGRT+Q#(.^$``EBUX(E4N4B2KK+V85`*,$I15=O7U$81K\\\nM05YQ?HLKAAMTT\\9[CZK*>A%0"E2L,#6-*RR[ZMW,KASADO$I-A0S,\\.7#HX/\nM;UB.,5#K>?[-\\^P>D%/_3430IO*`5.FQ0JBKDD'%W;QUXW'>L&Z"9L?23BUY\nM(R=?OP%M%)[Y<"L]H(SPU(X&SW3UL/KH#%O=7''TP,&_O?Z/K[I\\Y['\\1K40\nMQZ=O2#\\!`'6R]2L`8J+R*8O*(Y4'E,;KF-E&@TXG8ZZ5T6RG--L9?;9`&ZD`\nM5"!BQ=BN&1Y/(VJ3+:[)YYAMU+4R_-CJMH;O$ZH3S^B3,R$$F3?B"V%0`(,W_P=#'_I/N?K7OF;>\\M'OF;SPXA;N=`)9\nM+L;YH`,0M,$#GK+5Q5>1MJI(^2=YDSJ[L]<\nM2%NY^R*P_<`GW@A4'!CLB+8L'$9LY:7".@KKL3V>R8,ISPP.HO>=X$H[1S*:L.SR4;P$\nM7&0O<+7D`NLL*CCB)$!5=[:?O#\\9@,EFA@]PU\\[C=$6*R&AJ\nM<41L(N(XPN@(;4SY/0HDD:(6"8E1Q$:(#,0:8J,P6HA4>=@O#SI2'N(=:*O8\nML6.:>_.(T.APY6-%=M5JL\nMZ#)2@E%EV5RX0&8#SQYLRKT33II!\\IO6G\\/>NG+5P,%6\nMVZIV[ND494NM)[?EVM9[_*F'DD=/?GG)?B<^6;:]YP-HIF\nMW-%[[S[T\\;V[]_]C'"<^][\\\\/X^D:4:SU5G6G&MN<$5VMU'U=^S=\nM_[F_?^,O'7]1R@.<><7P$DC]^#B'#CP]4.3%N"AS:W=O_[Z'[_\\^S^X;_UDL\n=?\\Y$\\Q(8['\\!(!11!+FE,7X`````245.1*Y"8()S\n`\nend\n 6564 barcode_back_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```)[TE$051H@>V9:VQ+*NG7C&'GOFS)ES/^?=#\\;#)=M0M"3>#_E+,])Y\nMYSW/_']SWN>]/`.7=$F7=$FK*2&E!!@`A@"YJF[^?`E@"CBMO=-P&W`_$*^:\nMI8\\F#7@`^+L5`!TPWGE=$$DI<5T73=,P3?/C"*G#,LG[%$41GN>A*`IQ'#,W\nM-\\?P\\#"^[R.$X,"!`VSWEXT36-\\?!S3--FP80.-1H.AH2$\\S\\,T36JU\nM&I5*A?[^?FJU&D\\]]11=75WLWKV;-$T)PY"77WZ9D9$1.CL[$4*PM+2$XSA(\nM*9FWL9'Q]G>'B8UUY[C9,G3[)U\nMZU;R^3Q34U/8MHWKNAP[=HQ"H<#SSS]/H5#`MFTT36-Z>II2J41W=S?[]^]G\nM>'B8:K6*XSC8MLVN7;L00K3\\*A\\$",.0,`R)XY@T34G3%"DEON\\CI6S=[/L^\nM:9JV[DN2I-4_"(+6+Y:F::NOHB@((9!2MCY;B??![P000I`D";[OX_L^412=\nM,X[.`?A3>B_U^:[?V_[!/A="?S;`_U==`EAM70)8;5T"6&U=`EAMK3J`0""$\nM>'&7^&0Z<.,;NILOJ^I,@%PU@\nMQ<`;TV^P[_O[R.?RW/KY6QG;,D9[OATO\\FBX#6INC3.+9WCKCV]QZ,0A[MES\nM#]H=*HT/`;.*&#\nM&[HD6D)?;Q_M:]HY=>84!X\\=Y-C<,>ZZX:YSGL0%3V(A!'$2\\]R1YZ@J51[]\nM[J/<^>4[J;MU)NXII/7T.I7&+>F<<.;1I1`R=NX"8.OG0)\nMI$>`1XA')'Q?\nMX2>'?@(L#\\L+F@.*4!A_>QS=U/G:35]C>F&:NE>GF31Q$Y<@\\0A2CV*NR*?;\nMKR2GYU`-L)TJ)^MO46F6\\0DQ+$%6F`A%T,#E\\8./<^WEUW*X=/CC!WBG4(80\nM@C`-.5T_S>XO[2:6,=5&E6;2Q$M=@M0GE#X]A1ZNL#:1VA(GVZ2>+C#E'B=0\nM&^3;,I@9C2"(T#0515E.X!/5X_S@^1^P]^#>#P=8,:2J*K!\\>)=2M@[H*X?^\nM]QI7516!H!$T2+2$39_81*5>P0YMFFF30'K$1&SLW,CZN!MGOHFNZ2111#D^\nMC99-*&3SQ$E"&$1XOH:B*"T_C<3G%[__>=&ZY3S3J)22OKX^QL;&,`R#D9$1\nM#,-@^_;MK;J095ELV;(%R[+HZ>FAN[L;3=,8'1TE#$(6F@M860M-UZBY-9S$\nMP4V;2#5A<]=FS&J6,XMGR>5R+"W56-M=9%?W;7AQ$Q#(5)*D*6DB<1*'/1./\nM,Q.?)0P38M^_POTAF?,"9#(9',?AZ-&C^+Y/$`1<=]UU3$U-,3P\\3*E4HE`H\nML&;-&F9G9^GIZ6'?OGT,#P^S?MUZ;-=&UW2\\T"-.8YS40='AJK57X;[M,UN9\nMPC`-YN?GL6V;PX?'45"(PI`PBHBBF#B.2>*8+]^^B_6%=53J%0Q#(\\RHG9G+\nM->L<`,,P,`P#3=/(Y7(((3AUZA2JJJ*J*H[C<.;,&5:&:O#PA5-8C7DM[,OL'G#9K[_\nMP^_QT'T/<^+D"73=X#OWWL.Z,8-F;)/&DB"(\\/V(*(AY6WN#I85Y5$5%5W4$\nMWHSWR]`][RRD*$JKDKPR"ZVTKVAE+[_29ACO%KB'>H1INK@\nM*PZ!TF2B.LY-`SMYX!_OXQ_N_R?^:V*"5(]Y4S^(K%Z,$P5("4&0$$62-($DEF@8Y/5V4E/C[NN_'?_[\nMQ$];.>`!=2#Y.`&$$-QRTRUB[W_LS=?"FDX$<9P21RE1&)-D#"867R<2/M_X\nMWAU\\8NT@Q^T7J(S0C2V`\nM)X$7N`!_,5TU=)4DX4[@&\\2(.$J(HI@PC`F"$%U7.5'_`S^3C_&Y]B\\RO[2(\nMDW@@(8X3/#\\D#B0CEXWA-%UF%V=+(VNN^596SQ[*=F2Y\\.7CSP(1W11X@C8^\nM+]K`S!NTM67(YS/D9Y^?8]=6:CT'45(8AD(F>D3%\\7L7A1UL6$T$58>ZSY\nMOX:[^`#OU3;`1C!,5ND5IF8H"(\\T>CMM9J[6(G=O!)7SA_@?"A+W#7*P^=4`\n+````245.1*Y"8(),\n`\nend\n 6565 barcode_ok_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```'ODE$051H@>V96VP35QK'?V=F/&,[CC-U+K)S<8D)!J5`\nM4F`IL`N(4E5E6P1;MBKJ"P^M5*G[L`]556U?RK9J5BJM^H:V?:F0J"KM`T+;\nM"P4VW5`*1($-VA*@FP"Y8(/'V?APH74U-2@:1H='1T8AD%=71WCX^,$`@$F)RKWLW+D3R[+(9K.<.'&"YN9F*BHJ$$(P-C9&,IE$2LFE2Y?8\nML&%#44LFD\\'C\\=RB=YJ!WMY>0J$0I:6E:)I&6UL;"Q8LX/3ITP0"`5I;6\\ED\nM,HR,C%!?7T][>SL.AX/1T5$&!@:HJ:FAHZ.#8##(F3-GZ.[N9OGRY;A<+JY<\nMN4(BD2"52G'^_'E,T^3(D2.8IDDBD4#3-`8&!NCM[<7G\\]'6UD8P&"02B9!,\nM)DDD$FS=NA4A1%&O8-S#;S!F:;>0.SS9PW<+_9?-K'W%SB\nMQF(+F\\U&J:L439TN=\\Z.@)02L\\S$Z7)2*"O0K_83=4?IB_05C<$<'0'+LE@8\nM6(A1:=#RSQ;.#Y[';K-C28M/3G["KK6[V-&\\H_R%QU\\0<\\Z`E!+#,,B69OGX\nMNX_Q>_R\\_.N7B4Q$.-9]C&/=Q^@*=5'EJOK]Y\\<__]N<,B"EI*JR"J54X<-_\nM?,C2FJ74F#4.\nM?>W[N!JY"L"3CSW)^]O?9V7]REO:S)FWD*[K1+-1]OUK'](F.=1SB'`JC&(H\nM/+_J>?;\\=@^35R=O>0/!#!BXO8,'P;(L'O4_2N=X)]WQ;B[&+Q(M1-&<&CM^\nMM8.6+2U,#$\\P-#(TK>U]4VA*D*JJP$^+=REE<8$^M>B?JB>$0%75.\\Z@-YN;\nMBF=9%@)!6DUSL/<@42M*A@RJ0V5S_6;>W?0NR<$DR8GD'6/>U8"4DMK:6M:M\nM6X>NZS0W-Z/K.JM7KR[N"SD<#I8M6X;#X:"ZNAJ?SX>F::Q8L8),)G-+/-,T\nM<;O=5%55H6D:C8V-*(K"JE6K\\-?Y.=IWE'/QKV$\nMPV%<+A=??/$%@X.#*(I2O.-3VS*!^@!KUZZEM;654"A$(I&@MJ86C\\_#P;Z#\nM%(P"JE/%Z_&R>\\-NXCUQNGNZ492[9_JT$=!U'5W7T32-DI(2A!#T]/2@JBJJ\nMJI),)AD<'&1X>)A3ITXAA,`P#'*Y'*E4BE`HA,OEPNOUHNLZJJIBFB:E[E*"\nM2X)4E%!(A1>?>Q5UE6NH_7?K;C=;MQN\nM-_E\\_H[[0M,,U-?7X_/Y4%65:#1*+I>CKJZ.B8D)"H4"#H<#PS"P+(N5*U<2\nMB41P.!P,#P]35E:&W^^GK*P,C\\?#^M^L9_&2Q43T"-^.?DO"G@`5%@06$(O$\nML"P+7[6/D]&3)+4DBJ:PL7(C+_I?)#00PC`,_'X_?K^?7"Y'-IN=EDK3#-AL\nM-FPV&P!VNYW-FS>CZWKQ8544A=K:6A1%*::)E))"H8"F:>1R.31-0U$4W(^X\nM^?KJUTPF)UE4L8BQW!C?#7_'$]XG>&;M,P@$58]6\\='9CU"<"N5Z.:\\M>8T:\nMLP;+;;$HN*CXL-ML-IQ.Y_U'X&8412GN)$\\%FBJ?0@B!$*)8INO_V^`6"+)6\nMEM/#ISDS=H9P.HSI,KD^=)U%GD4TN!KHF>SA-9,ZV/>S&C\nM,[&JJ.QZ?!?EE\\MY^_3;A/-A[%D[E?E*`L,!7G>]3L=$!TD]2;VCGI>J7T(5\nMZOT#W\\24@4D@#A1^<1-"95O#-DRG:=]];K?SV$ZU$\nM8VO%5MG@:$@\\H`;UAN;B$9,7\\#%S1TQ6-I5=V!YO_\\N>@3V+?\\S]B+W$SK)'\nMEM%''^5Z.2UE+1>6JDO_(.QBC)^.D.Z%`*X!TZ?FF>#3OWZ*E)+X<'SCB>LG\nM_K.M:YML[&J439>;Y(K!%?*#Q`=R+#;V)RDE!PX<^+]H^MD<^>K(E(E-;9&V\nM*\\_V/BN;KS;+IZ-/R_94>V^L+Q8<#`_.MLQ[<_S;XT@I28PF?O=5[*OKFZYM\nMDF\\DWI`CXR-[WUK_EG+X\\.'9EGA_OF_[GCJAX,W^$<@>Z+W8C)Z2S8G'%7D51`M=ZKFW-B5R\\J:EI-N0\\'$/A(7HO\nC]0;Z>_LW`KSSSCL/%>>_SCA<3)0^(-H`````245.1*Y"8()I\n`\nend\n 6566 book_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```+D4E$051H@>V9:XPDUU7'?_=1[^[I><^L[=CKS2Z[7CN)\nMUWDL3D)X*";&4A`0`G*T&,=.D(%`$"`$4HBP<)`2/E@*^4"P`\\:1@TC,(QCY\nM"\\@FQ,0"8[*VX\\!Z7S.SN[/S[NZ9[GI773Y4]T[/[,.[-GS;(QW=*E6IZO^[\nMYYYS;]V"JW;5KMI5NVIOPL3_W:,>`#:`FS4,NTC+PY)#0HF&$(R9THR;TDQ2\nMFAT8CB%X'$C)/OFFWJI?_Q87B(&?U+#'@3$?_#K";6C7&O4"/6&[>L)RY)14\nM<@HA)DICQHK"C!:EJ:=964O3TLNRTJ8T$@,8TT$(P9#_*)V_-+1^\\0T#"/@#\nM(`#:#5"C(!I26J.UFC\\Q/.Q/U.ON9+WN3@6!,^'[UKCK62.VK1O*EC4AA5>`\nME16H)"^)DI).F+.VGK+6SM@(1&'`F&-(<0_&/(^08L+L9L;&2$84$8ET1)0909HJPDSDKBW-#JYIQ:\nMBCFSFM!-2HP0X%H@1>5]`,%F%/H1*&I#"$N6%F*>9[LQWF\nMVQFID.!HWV#V9)-77FDR,N*S:]';!&]O^Z*=`?&V!EN")?>@Y!BV>I9=]R2<^.KE`_`CG_*$)>_S)#NG\nMAVPF&C:OO;;"D2-=]NX;Q?4U:^O9N=YO1P4O'MU@;B7!V`,]W1=W09C^<1]@\nM`,B6%8R6MZ"EPE+/L??>@M<>NTR`#_^6S$OS,TE<[/&,X<;I@")).7:LS>F%\nMC)O?/D8W*>G$!6%F^-Y,E]GE9$!87[R^@*MJ2-D#T1B,0M^U!"TE6KX3+5JX\nM^@7VWV=X]<\\O`R"Y,^>6J8-16A[,NQEU#7NN&V)AOLG,Z9BH$-RPLTXKS#G;\nM3/GON2Z%EINB!L6[`SWMZ@M$Y$)Y(/NY`%I82'$0P4D\\_2HWW0>O?.5U`'[C\nM(?`M'RE_JKN>*A/E3-8LKAMW.7%BE5,K!6Y@46\\X'#T3LMS)-X=!?QP/]JAS\nM`>'N]FBI;8DL>U%0H*6'E`LMY,\nM4%G!C5,^#CDSI]=9[$"M8;/6+6C'Y4`2*G#D^>+MP2&T;3@-WF,/B+<3]\\]\\(0BI__75A/P@I"_D21%&YK+<$WL._Z(5J++19;\nM&>VL>E$W9S/L@R#VMBALR8MM$=E>C:Q>'B@)2E0NQ!2"?1B>Q5)M]MP/KSQR\nM'H#D%R:AX<)4_6GJ]B-,U^C675Y<2CD;&=Y[^_4,RX1V.Z;5R1&2W@S;\\_Z$\nMU7^Q&NC1OE!7@V=5'MA0=S:]9E<>#+AO@:?!T3^*);\\`8I11ZX(1D`#<.P4K\nMW9S`?IAA]]M,UVAY-M^9B\\@]E]MOFT)OK),F!::D6@J<9]N!>KVI>]'J@_@6\nM!-:F\\+I=G0?6IG"W!^MJL-1'4>*SE,;C4]^]"`!4X[.;G26P'F3<7V:ZQI+2\nM/'>\\RXZ=X^R_UH6-C4I\\?T'6=S/@#,`-1DD-@/C6IOA^[_<%NWJS]%8NT?(!\nME/AUXDSQRR]>!.#09/7`FR:>I>Y\\B:F@9#I@+H/_G`TY<.!:IH@AC*$`BK+R\nMLK3XDIHJ4%!6(9VV=I>V!?+`&7$L'(7X/K0[QU/?A$R\\,)/&@\nM_=T?P_M_U>#J5Q'\nM9/H\\@Y`%V]H2\\A+R`DKC4IB#W#CV*IXZQMZ/P\\N/;@,`>.@A.-X)<3=']/#&BBE2:0Y1`IPOK;6BO\nM(=NK6!NKN&$3+^W@EPDN);80B%+4BZQ\\%]WLWU%BGGWW7N23\\HDE^-@$_-G\\\nM;[(2?IZ9EN9$DYUES@=VN?S+MXXSI^LPUMBL[5Y__%I;5Z66`%V"R*`,4?D&\nM;M:DEJTS)'-JML)W71PW0'EU2KM.*GVZI4,W570B"+LE49B3=7.**(.X>)XT\nMOP>ECEW\\F_BQ1;!D@U;\\%RQT?IH33>1LB_=.VEQCI3S][3DZDU-0R,CPKH69G--R"$1=&`DTC<`@"'QT,$3H-5F3`K<'@>=H_]$JO1%YEI.9QLLM\\RO.<:F^>?.\\Z14*,F\nM1E">A7`UI:TH+54M^'2O3,@21($@QQ(YKBBHJY)A1S+F*2;K#M,-CQVC`>/#\nM`2,-GZ&:1^`[.(Z%UJI*)\\F3OL?=94&^;Z*2?NE=B;O'X/$EL9HWL]/GCG.Q@?;V!IU1.GMH@40O1ZLJQ*:,^JZBMZ%?C2XH6`\nMH\\WTAS_TY/SUKA)SYY[QN@``/S<*.VHP[#S)D/U5IFO$(QY)`_;?-L7P*S412/>B'MB-L6)WKD\\YYL@\nM+X,\\S,'.;T\nMS-DK`_C(,'QM!8::VJ%0*R\nMK"0,<\\*HH-7)6&JES#=CYM=3%KLI*U%*.TT)\\S1/\\K1K\\F2-+%DDB\\^(*#IA\nM6JT`K:\\P`@`?&X?'EW(FAQ]F?.CVD__Q\\OM:R^M,7S^&4@JM)5HII!`464$G\nM3$G"G$X[I;4:L[H8L[P?..I>7;?\\&!3\\K47_OGP^`_^^`&2\nM,*';ZM)>W:"UTJ&U%K/>3NET$+A>PDS6'\nMV/\\9L-4$S?#73%;D:'D2+4X)+YEV.`````$E%3D2N0F""\n`\nend\n 6567 cabinet_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```+VDE$051H@=V:28]E1UJ&GX@XPYTR*VNTJVQ06VTW;2/$\nM(`3LD/H7L`"$0$)"]((M"R06O>DU&W:LV+#C%UBLD+"%&B%`W1B0VZZRVV6[\nM,K,JASN=(2*^"!81]]R;Y<7YS'/-^^'D._]M'?R;^7G+/`%('_U_3__\nMJ7(6EP&((0)\nMT?G<:$U1%(PFTPL`XE4!2)!AOG'`$`)OO_TV?_2'?\\"XKO`2D'Q=)(\\A("(X\nM+SCGL-;1]Y:VZ^BZGMY:O//Y';EP]%W+>#I#@A`D;$WT2AH83"AK(004FO%X\nMS%MOOL'^;(IU#N\\$YWT2V'OZWM*T'\\0,2@=8DI%'@A1%"!\nM;#H1I11&:YQSVXCW-2IX/A\\`)`10B@BT;8]6"NL\\W@O.>;J^9[Y8+WER\nMHQ"T-BDTO[P)20:P]0&E-*#H^Z3B^6+-\nMX>,3YHL5UEH.CPZ9S\\^3X)M5ED`(,OB0=Y:#@QO4]3@#VP(HC<)D#0PF=%4`\nMO7KW/[]FWNW+G#[/H^\nMG76TO:6S@>/'1X#BQ@V#\nMXYS#>T=%A2E&B`BSV36,*>AZFTW-XT7PSC&JR^0#,87E%(%>T@="5$S5([YY\nM\\X@WOOW[Z&("@_`I`BH5J/I_X?7/[O/C_AV,5F`TQ`*M0+3&>XW6'JTTWOLA\nM^FPUX(AA])0/A)E1Q>^\\_N?VZXKU/?ATKQ=7S@&03"@"QIQJ_\nMP=[KO\\W>SW\\';2K$-43?$GQ'R.-,&KXI#<%WQ-`20Y>/AN#GB'U"<"?$L$X+\nMD((:2K.MB=3'5/$.[SWX%40T+V%".P"TT9OOL,L<<0UB@MZ'(K]"X(%!@%IMM4I_(R``1C#+;K\nM^.1LQ0]^9+D=UK2GPOK]OV;ZRJ]ARBE16J+T1.D@KSBA0[I'N.8!P9^C\\"A3\nMH/0!VH#2"C8`%*"RD"J9YO%\\QFJ])C##:/U,,WJF!D:C,<='A_S#^X]Y_[_V\nM*-[]&Z+2J.!1^CU,4:&5&BI3/52H"MA#\\-6Z\\BXEX<@$A`)/4!-V[>XGM_^1=,)Q-Z:['68JW#N718YU-!Y]P0\nMTYWW]-;1=AW-NF7=-+1=1]^G^)^A@T#H0@F>U;CF?+UBL5G1=CQ\\M\nM\\_F"QR=GS.<+NMX2`:,-IB@IJQ%&ZQUSVK9>0[.?*U"1!$"AF)_-$>=SR+T"\nM`)%4CVAM6*[6."]8ZW(B$MJVX_C)"4?')ZS6#1$HBI)Z-*8H"HJBR%V7P6BS\nMT\\6I"RL?8B!(!I`KUTTIX>79D>B9I81X(1)16K-:KW&Y_N^MY?#X,5]\\>C[CJ9I*:N*HBB3X$613&^8&XPI4OMH#./QF/V]O:R!W)7M9&CODN.*R)`C\nM7EP#(9F00K%>-UCGF<^7?/J3AYR>S]'&,*I'S.=G+-=K;LVN)3OV`MZC'AQP>'7'XZ)"V60.1Z6Q&#!'G'=XYG"MPSJ"UHRS+!,!+JJNNI($'A,C5'6=(U%B%>IZQ,F3QSQ\\\\.&6D3`%15%F-B+9OZYFO/:-M]"F\nM8&\\VHZIJ`(PS6*5!;?DE8S95Z55-2`)!)R?NNHZ/'WR"4IJR+'%.YV>2K8['\nM8]Y\\\\UN#K1?9_DUA*(J2JJJIZQ%E50WT2E$4G)^=HK4>`H;WVQXZABT3$L(5\nM3"BU@3+\\N%)0UP5%H2F-HC10Z(A1@E8AA4DL^(CXB,\\Q/8:00FE9458U9551\nMEA5%66&*$IT=FR%;I\\-[][(`PI`98XQ45<5T.F4VFS&=3IE.ITPFDW2,QXS'\nM8T:C$>/1B'I4,ZIKJKSB(:20&4),3BX!+V'(WM8Z>FOINS[Q1WV'4HH@,F3H\nM%P:0RFF/4H:R&K%>+3D].2%&,"8Y[89Q2RS<4^<;-LYH3&;BE-:I=LK?2(1!\nMN)#,O$\\1J&G6M&W#]=E-8O!7U8#%&,,KK_X<7=OPV:?WV=^?:X#:<:YM\nML394CG&'*,)S,>/3K&.9()P9!*368U$4:_`4!;%K*5'!E\nMC>0.I.EZE&(H['KK:)J.L_,%)Z?GG"^6M&TWE-=)2U^E$L7+3A;V%`:,,?F;\nMESON\nMDPQ`509C],XF25K`*P)XVH02.QTDL%HW]+WA]&S!EX>/F2^66.M8KI:T;9MK\nMFN03&])V4R9[[QB-)FAM!FI1>`\\)SA=&M!C0BPLGI>:I;+G#^GCNW\nM7^'@VD'JU)SE?-'A3U<#O1[$,YWL498U?:86=ZGW("$5<3P?K?A,`,,64V3H\nMG+36A!BPMK_`]6_X38VB-`4J*K12%*;8>6ZW8?%X;[<^(&'H?9.R*M-G\nM=S+ZU0!<8*>3&6FC46B\\\\XS'8R:3$9/)F,EXG,;)F.EDLKTV'6.TH>\\M7=_O\nMC#U=GXJWKK?YO*=K.S[XT0]QUK)A=5]ZCVSP@1A`H)%`U_7,%TM,WC9-/8#>\nM*>)THF&,`1C"JLOA1J\\;)=>7;B\nM]U>2T5/%'<.="SOEPXI'HB;&0^"9*?D9_RL1`,Z`/PXA5!>$SA]3*HFD\\LY[\nM5`PDP`98&M463-P^%XFHJ!+UOE/V;-X#;);A_^_?_P+8B:=<[GC@@P````!)\n'14Y$KD)@@M46\n`\nend\n 6568 calculation_write_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```*NDE$051H@>V9;9!<59G'_\\]YZWO[=O=DALS$R4QFDB&$\nMR"8!,K#95``AQ)58K*(;M=S=H!0J?K#([I:K"VZA5NV+2PE:!5+"?K!4K+(P\nM[IJE3"J2A1A()3&&#.1ES,1,XC`SFUM=L(0`0$H)*>4Q*66LE%JME,+FS9OGRMM%\nMZ2T!GGKJ*7#.8\\[YLYSS.SGG\\S.9S%QYNRA=L(3.:]VZ=8CCN""$L`#<98P9\nM6K-F36W5JE4X?/CP'%A\\:UVPC;Y1]]]_/Y12Y'G>AB1)[HBBZ&`8A@=KW-==T>UW7GNZ[+?=\\O!4%P+`B"LT1DC#'O'@``;-FR!:=.G<*B\nM18MZHRC:&(;A59[G"<_SC.NZNEZO>_5ZO>2Z;NRZKO1]OR<(@IXHBIZ-X_C[\nM1!1>#HB+!CBO^^Z[#^O7K\\?V[=LMW_=SGN=QS_,BW_\nM(BR=[7EPF0#^&L`F`K[(MV[]=V8@NQ)#=AC3LH%C'^$07V?`O0"V-!WIDMOH\nM!6^T^DD88%7.D1]MR:HVSEB+,<;QPX0CRE]OHDIOQ4LFDW3OODPZ54];O,X9\nM%:?+P6NU:O@,.$WAP&[LS('53^+.6WKPPJ&SF^^]:_D7K^S.H5#V\\;N)\nM&G[YRB1&IEIAI5L025I@6>JNUE8+7?/36-77"M>+H^_M.#DA&/TT?@>A9Z>$\nM"'CVAZ]F>]^36=/_WG:D;8&*'^.EP3S.%#VHK$)+CL!MAD@RC-9#'#A3PO97\nM)K"X)R<[%V;7WO.AJR`_^*-W"0``VNSN[@YG:1`E&!JMX.<'QS%<<,%L"9E1\nMR&0)S&;@C@1/2W!'8M*/<6;:0\\<"I_\\_?C+H,/O2EZ59*2'."$E6+;]BGC5_\nM?-K#SH$)G,J[X&D)DAS247`L@$4<9*G7)UZ2&/RVZ,'.IJ["PEP7L\\70W`/<\nM\\!0ZW^.@6`Y6*4O(%X]/87"\\!F9+L!0'J09`1AGP@($%J"\nM.0K,41".0I4(=8)*9=1*F9;(_=V.-]W^T>XV_-N">?8+?WG[9T]L6/KP\\`JZ\nMR7QF(;[1V1AO.@-,,.@5'3D(NO+86!6N-@V3M@1+"4!QJ$P*F5B#61P\\DP)H\nM9D>J#;0VJ`!@:;DBBA,F!->-P5W(/OH(_G[WBI8'<_L_UR+MK[>/3-H)F>Y_\nM_-GXOFL=)+,"0(*!Y51'-4PZJS4?E&(`"T$F`F(#@H&N5Q#41X$P`&P&X@*0\nM"H8)&,[A&0)9_"IE>`Z$TNIO]2'3_BAX,MTW].=]W_Y>O/0#QW=O51\\HQ>5K\nM?#R]O@U)^;>-^,UG0#(8H),)T^+8"3(9C:P#9&U"QB(X2B,K(V3;%^'#"8,G\nM/+@DX2)&W0BX1J"N)7PANF*P!024EMS0#J]RMG/)LH['E^`7&P>/+\\:^7]^$\nMG>F50=NMMW3W'2VK\\38OQ/[/ST(&)`,9]$(*.U0*M50*?DJB:"F(M(1,2W!+\nM@)1HP#*"88`Q`(R!CA,@3,#\\N(W%NH=0./'3'Q^0&S:M?"!`M+'BGL5M/;VX\nM]6-^\\%V`/K2G'SR<+XYM%Z`2VZ`ZMR\nM\\Y(77OW-\\^G\\A[B?'__F7WUWR\\27_NQ3:!I`*$)P-1Q#$/V@>@!B!=6=30K*%\nM/>T.[!0'10G`"(81P!F(#&(R`",P2X`I#A(,8-0`B#5TR``B&!8O*=QYW3T+\nM>C[XT=;7=L,?^;4^U!,S,3(ED-W[/S;OF'@]`-OLM!B)!Q]ZZ*L#=]]]&X"]V/N+_SM^4P`SZRD9\nM`])_?-Y#P'28H)IH,"X`3F""@2G^>BG!&,`8E`Y74$UET#5>0G]2C4=.#G]S\nMW_Y_V';HY8,`]KZEAZ;V0D0`,?BQ-H$7)J`WO-]%VF"\\'D&;\\XFAQL1EU%B]\nM9\\JI^DH9^9J"/5G'.K^*\\MAK/]ZQ\\_G'VN=_(0G#9][60U,`!@`9E,-(YPO5\nM$)P(F#%<#1*4@QADS,R#-H`VC1_-9,L;JF#B1`A=B]$_-0TRE;%?UG\\H]?E(?F,F"`N.A5HD0?/351@^0S1X<&J`4QPDC#:`.3:)A8-ZY1`ATE\nM"$:J&-L]C2#A6#0X@.WRZ\nM&/E!#$X$HS7BN&$:,]=&OT^@PP1)T&K:\nMM5ZKA-TQ3+H>:6@TVNC5;@%M40FIP0*6P8T&>^R#P?(%_\\1B\\X31QCV]H>^2\nM8\\_:R=QYV?=O!Q*MF"6OE6FY4:;E.F:)7F%QY];R8,=B/Z^FBWILU_[2(_G/\nM??R'Q7O_.=^WY]L8OJ7K'<6;=8#SRGWE.7C3->06MEG&L5MZ\\T>[^]W?/=V6\nML4:\\>O&AQQY_^%<;WM]O=FT_U%2\nB?^1KV968Q=R5G'?W7VN]_;[L5+=\\_8'B\\S=A8<\nM.S.!9(*$2`(H(D!$4)`0$I%X0#R`$`)%D(&R/[;'=[G:W>_/M[=Z^R]EJX>'<>]MM]W@F:,0#Y),^U:FJ4\\N_\nMZMNJ"GY*/Z7_WR2VY=[S]P`5C#F`Z=6)^QN]<6\\66'=QGXS)6"O0.OO^23L7\nMS`)KO/S[VXJ=NS.6)=!*O^\\7GQC_ZCL>V>4JI=$&M#9HD['19E!F3._;@$9@\nMA$#3YUYYOXTR:*702F&41BN=I>:>_G36IC^F,=#JIF)FL?6'MB6^UKT'US8`\nM(EL0]_!DM?K!$[O=)-4H;3)6!J6SO%8&90S*"%1OP@J!PD(!V@B4Z4^$K)W4\nM2*61J42E"IFDR$2B4HF2"MT?1QO,/2#6FC&W[[0]Q[:XE[8!H+>SS7;"2B/"\nM$@+36P6ES5V#D$U<"*2P4,)"(DB-16H$D8)0&KJIH14INK&F$Z9$H20,$](H\nM)@D39!1CH@23Q)A4@C$8P!)@6P+'MG`=BU1II-1H;1X,0&D#`IY^;I;3E^Y0\nM*7KD`P??L_%="R$$!H&V'8SKHFR7Q+*)A4.$36AL0FQ";1$9BU1#J@Q:`E)`\nM"B1`?%<::X@TQ`FD#YX)M9PJK)*0IQ#'$#MA6QJ(W66/(Y*;'/X%R[P"`3!GN[W@'ENILEQ#%;4LT0:I,S8LK_8#!<#1,]$?NY!.R!5MO)AHOB7%V<8*^=Q;&O0:7\\E3,_V\nM#P;L#=8'M"V_K>[NO+FKWYW[4L:0Q#&?.'60G.\\.%N0-`?1)&T/.M?FY\\8#`\nMV5HAW3.E6*+G4#/;OK5ZF9F54B$LT1-Y@U0J&UR(GM/2I%(BA#58&*4T2FF$\nM)0:.+4Q2KJ8^4F^!>TL`(!O$DC'54S.S7([EUB[M`&";:^N'"_UP15@6CN,.V'9<+,O&LFTN7KA`&(59\nMG>>QNK;.V;-GL&P;V[%Q/8^+%R\\P<^L6GN?C>A[=;I?3IT]CV0Z.Z^('.:Y<\nMN<+L["Q^$.#Y/E)KSIXYBU(:QW&W0I4>OPF`GCF^RPIL)X/!8/4"-2E55FJR\nM.,:RK$&=,88XCFEM;F*,02!H-INLU.MHK0<#&`-KJRL#Q4V2A,6E!;IA=YO.\nMF3<`L$V$^C_TY1D8:']&(K-*0O#P_@,4"@72)$$`0>`S,3DY^%\\(P<3$),5B\nM<0!HS]Z]O/\\#3^+8]J#'\\?%QS"#TA6*QR(GWG"1?**#7-@83?R,1V@;`&-"B\nM#T30Z7182L,!&"E3XCBFW6IA@-5ZG3#L8MDVCN/@NQZWYV8)NUU:K19!X).F\nM"?/S9Y'M5K#VVC@\nMUEIT0ZY=GV9A=I%F8Q-]YQD\\SZ%:*9'+EW`];]"V7"DS/#+2\nM$Q>H5"KL'=]'N5+NJ;ZA-K2+R#AAQX:*'$0!!P[=APA!'-SLV`,CNLR/#+,:KU.M]LAE\\LS.C:*,8:9\nMFS=)TA3'=3ERY`AAM\\O*1A/#_D%H\\:8[T&DV,`:GN7I'S+SZ$E?K;8Z^\\R3O\nMWC.*YSHD2M'MM&G<66+ZPGF^^Y\\_XM2)8SSY@<=Q;&<@/K9M4ZY42)($R[*(\nMHPB`()_90\nM*!9P'(OHF5RZ_1I#+XW@^EYH.\\VW%=+WQG:EZX_R9\nM;WUQ&X"!$N^;F.30D<>>N%-?_8T+"YO\\]J]_A,GA,L9H-I:6Z"PNDG>@%-B4\nM/(M:.<>1=SZ&Z^9G3>`Z'G9A7DZG0X8L(1%\nM8V.#I<5%TI[Y3>*8QL8&C<8&QA@F=@^3JU:PBR7L8FEG$?KC/_TTAXX\\RLS4\nM]5^X/KM0G3ATA,F1,JUNMO6Z4J-6*5,(7%S'HEHK8R;V4BB6\\!']CS]!K59%2DDNG^/8\\>/$28(1\nMD*8IQ5*90T>/,C0\\3!BE.)Y#WO?1.\\E/'\\#J:IW?_-B'K,]^_@N'[VQT.'AH\nMC"A52"61,B7U/6P'NIT6KE`(WV.D6@(AJ%1*U(.`S)^QVR>5S\nMV+9-_D,`OA?PR,'#5A+'?B(E"D$L-09!X/M4K`Z!95&NE7`M@RL,<;=+\nM/I]C]]@H*_,+I%*BM&9D9!0I)99MTVZU<#V7D9%1P-#I=.ET.NS9.T88=O&"\nM@+6U-800[!H9)DD24JE87U^C5AU&6R[+@WLIM2,`"Z#5VN3K7_N*M&QG+><(\nMEEXNR9,ZRNK>+[\nM/HV-#9Y]YD=<>/557,_%<3VFIF[PPO//45^IX_D^<11QYL47>.7E04CX_.5)5MVY,L=R,2*0F3B2)\nML#&E2I:7FEAI1L9V4RI7::PWZ+0[C([LPG:P\nM;7NW;3G?_L&9"X][C_P,/_NNP]C"$'(X4DD*A0)1&.)Z'DHI/,]#IA)C#%)*4ID2!#G:[1:>']#NM-%:X[@N\nM<1RCC2%)$OQ\\COGY)2XZCQ(%0TBE/B7@'[[\\JQ/WZP#`]__KN_S!I_]Z>7EN\nM^LM/O.O14\\^<.V<]V]EDU]Z]E/,^'2DIA%V*KDUH&2[.S;,\\=YNPU>#8X7'6\nMU].S88[QVZ1)**28F)AD;&Z,;ALS-SK)[\nM]Q[V[ML'0+%80JG,NM7K=0*15(ET4HQ.SM/%,4TD@W"\nM=NN>P]4]``",L#$&W-H8XR?>3[529'YZAH6%FRPG*<:R<%T'6V@"%QS?Y_7S\nMESB\\=XREI266%A?)Y7+LWW\\`HSO,WII!",'HV"@8<%P'1'9'9%D6EFUG89Y2\nM6+;5*[-PA(T2`MOUR!O-_II'6P@*A3S?>Q"`NX^4=K[$L6-'>.+@./,OGB:4\nM"N?08;Q2@+80P,#X\\P.CH*"`QZ\nM<';6O=08@V:KK'\\&WCVZ!]P\\[JX##*F`ZXOK/'7F#.5BX<$[T/=V_;N:5$K\\\nM74/L_\\B'`8,4@FZWR[Y]>U!*8UT]1^V'WT5T[U`41WGHL6,4AD=H;C:I#@UQ\nM\\O$GL"R;S58+K0UQJI!*H92DU>YD5_0]$0J[7:(H(M60WS5)J$LL:\\526_*#\nM5ZYQ8VD#VVZ^"8"^*!G0PF:)&LL-A39VSYEHE"YB.@:-@]9[.'CY&A,K4R2E\nM&J\\\\721]\\N-H)X_92'I'4X4R;N^`E#E';5RT&V\\]C!X4L]0L(\nM/P=.@'%\\M..3$B",8*9MLY&D3-U>XO*%BT@GAQ,4=HRG'P!@Z_W+MAT*A2+%\nM?![!$,)H+`S":.SWGF)ASQ"'OO$9]L]?X.^R1CCW\\0I?3@U29CB]18\nM)$80*XBD(4P-W533CE/::PV4<+FZO,G,S"T6YFXA;3=;?3^_8T!TW[4*<-W`\nMYPW8_3-Q]FAG8X2=B87(=L@(@Q86^O%/&N_I+Y]Z9&7FPX>JH^+\\^=/RM#?Q\nM;\\5W/WE-IHFEM1F\\F2F3O02E4I&D,F-I:+5C-AIMI.TR?^4RZRLK6/DR3J&$\nM%12P@L*K1M\\/X"=Y1'U#^M8!04/RT(F\\^>9(J?"^N2/OY\\7YS6]_\\T>G?V_4\nM$NO?W^DL^#:1_>:_O#GE!/QR531O)>)&U20?>UO5;Z8[[_'>RW\nM99__%^AOC];XJZ-#^>^=J'WTTO%@OS&?Y#-ORQ[_'Z;_!O"KKK37;16M````\n)`$E%3D2N0F""\n`\nend\n 6570 chat_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```.&$E$051H@=68>[!=57W'/^NQ'^><>^[[@4D(%R24AD<0\nMB4`@9A(!4:`69ZAC"V@KK:B4T3I:6Z?I./:AG:%V4*NE5!1QQCK*C*-8889:\nM)VBM5E0@!`-Y@+G)?3_.:^^SUZM_[`-)K8W8W-AQS:R9LQ^SS_?S^WU_O[7W\nM@E_Q(4[V']2VW6,E.R14GQ;"/$P(3PIA#`/?.2J7P[`T(Y/XWQ0B59;\nMA!1OK23ZRC5CU?&SU@\\PN:;.Z$!*$BN<#QCK*8RGG5L:K8)&Q]#.+,9Z0B``\nMLP@>$HB[@N#;!/P7_WK[R0,8WO$90F!02G%[$LG;SCUS>.QUVT[C9;\\V2AHK\nM\\L+1R1UYX3#645B/L0%K/87U=`O'2MLPM]REDQN\\!^<#WH=9X*/`1Q&LW+MS\nMZ^H##&W_-"$PKJ2X8Z">O/&WKWZINNFU&XB49&8QHY59"NNQSF-=P+J`\\P'G\nM`GGA:.>65F;)NP[C`MX'?"BO.^`=PN8_X?W;5D]@*'MG^GY7=S1\nMWQ>_XWUOOD"\\X\\)]A[O`?C`IW>.%)4\nMDH@T4<21(M(2K21*"A`0PO/B/85Q%,8119*\\*X:,\\3ND9-?.?WS\\Q`&4$HP-\nMU9A>:+VDKZ*II1$S"QF=W.(\\+_AX>C%G;J6+5I)JJJFF$954D\\:*)%$DD2+2\nM"J7$"QDHB]O1+1QYUZ&D10B!DFYB=#AA>BX[<0`I!:VLB]9BSKK`D84.0_6$\nMK.L(`5P(3,UES"WGI(DFB54I.E:DB:*21E0319IHXE@1*8D09?\\\\/DM>E*TR*QP+*UT.SW<0\nM0J!5:1.M)5$DB;0BB21)K*FDFKY*Q$!?PF`]I;\\64ZUH*HDFB^LX/YMU3Q[[QGT=>=<%9(XP.I810WA]"P/M>9SEF6N=+\nMKQN/E!8?`E(*K/48Z^BO*K143,UEY(7_5R'$SEHEZAA;/OA%K0/KUJWC\\LLO\nMY]EGGQT:&AK:,CX^OFU\\?'Q3M5I=V^UVZXN+BW)J:JHX/'5H=T>M^]KPIC^X\nMI%:);I@8J5;'!E-,+P/52M0K8$VU$E%)2NM4>K411PJMRHQ48LEP/<(8S\\'I\nM=F>AT?U\\8?P'M!+/Y87CEFO.>'$`V[=O9W9V5JQ=N_:JR?/%&S=N\nM3&NU&HU&@\\.'#[-OWS[V[-G#GCU[F)V9.6Q$]DM?-:HE\nML::::"H]7S\\_TT0=%:\\EL9;T5321%F2Y:R^WS2-YX3[I77A02)'==.7Z_Z;O\nMN`!;MVZE6JW2[79W;-JTZ;[KKKON)1LV;,`8P_3T-`X6MI=5*-I04^WW@6\\Z'![P/WTD2U3QTN,E[;]SX/S0>%V#SYLWLW;LWVKIU\nMZ^>NN.**&T9&QV@VFRPO+3,S?'2!1_9']J*+\nM7O[HS,S,C4&HI\\]]W<=$K:('TUB?EL1J?:3E+5$DKXNC,O)Q)*>26'TJCM0/\nMI10'!!PLK%N60H3;7G_6<1URW"+.LHR1D9%ZH]'8L&O7(XSJ.3:=7.&/-F:P;34E"B]!\\CBAT^.;>EEZ_?OV%]7K]G"1)GK[_PSL"L/0[.[^Y\nMU,K,D4JB_K1GFQ#'ZI$T5N^/(_7(PG(>=O[N><<5_`L!-!H-0@AF_XB=^\nM/V][ZV8NN_HF1%P'7X`K\\$43TY[#-J8PW3:O/'>$+=]MLG__@6ZM5EW*L@R`\nMJV[_%Y24M-K=-UKK-W<+UTH3?7?JPM\\T6\\61^:6,3[SWTE](_,\\%F)I>P!4O\nM:R;)]QZ]^=(UEVZ^9!LAJB-T!4(,(@-GD+J"U"E")XP.U[EE6\\R?/;![_V+1\nM]V-A.P"T.Y9GVLNG);&Z)8G5@311.YT/7VQVBN(+?[G]>#*..]3_=N']UX\\B\nMIU?$/1^_;D.M.##Y&UO/VKKFC',5@""44P1$<&`S?'<%UYG'MF:I^"5RG_['\nMNW[OVA^>WW]@_ISS+W;_?,]?<.?GGWB;]U1#"&]][/'9ARNUR#WPMS_[4_&$\nM`:Y[Q1CUZDKELE>_\\9]V7+CF38-R(8KZ)H24"B$D4BFD5&!S7/L(=N4Y;.,0\nMKC,/-F/K:V^:'!HYY8JY@X]^92%,+KWEKC#B`T,AA(]T\nMCF.AJNIPQ\\,A>^(3VWY463=YC4]KV-8T4BJD"(`%*0GM&7SS,+Z[3+`YWAFB\nM2C_].D^6CSR\\KY)/S4XF`QCKEXWS7VIGQDT_>.,)"_^Y`+?=,\\=59PWB6^V/\nM^I'ZH%3Q.7;IF8N%;:?D0Y#V(U6$*UJXHH4W&=[F>)NADL$?X+)G5.?PAU[]\nMFNW-!^[^!M,/W>A63?4QX^>NQ$?NO033;FDA_)B,*O?KZN@ENC:*3OL10N%,\nMALV6,*U93/,(W>;L0K>;7W_:16_X]_NNO<]>_O8JY_]]YV1H?W$``#_YY$9D\nM4B?8[N_+N/9QG0Y&,JH``F]S7+Z,:<]C.HODK:5/+:P4MU92:3;_E3]IPI\\?\nM+^IU^M1;G\\07;;PKON"ZK:^9SCRF-8-I'L$T#V-:7B0`P+HM3Z"\\7TETX[U%:^'[ICF#[2P04$03F^@PL+S<6'E/LWK!$Z<,\nM6J[]V,F4?72\\B.^!]P-M+R#0"%`777^>>L__I9;SK_]YC>=?>'01&WLH>\\M\nMI,%/RW4+NYE8-HPO>=8OP>2*PAZJ\\*7L(O&M^.7QT&AU1G8+0Z.*76:#05+HGH)IHE)$;),N(576:@GD!?7)Y3`HR#S()61W=GK2^%Y[8W50WG\nM1Q&BA%M=``!9<\\[W[]Z]R/Z#%CUB#U\nMN+12UY;/>#X3B4;&`A])B"0BED352)G"C00I5PW@F%<)#_@A\\)4>#(1`*E;0\nM(O0V[,,+EPB]WT*468E5":4E*('0DJKJ((0%)1%:,C:6$B5JO%+7H.XZ*0##\nM)8"'X,$8JG*11`8POC=[!5FX,NKM`E9R:)ORG/,00"#HEVV$;8,0!&!LO$)_\nM/1J]Z>WGEN"K"^``-P9.@X/@P.3T11D5*4JQ75O:(S.E\\$8!RSDL9+"2%KINOHJZAAV!;A?7<5\nM`:!48\\?+I%C``!WJE005B3+BB0+=Z_&!LDUFN@1X?C$K'+0-D?>,#290%%!8\nM*!R=AF$PE<-02<&N)H``,B&$F`C!4K:(".C27QLBC10TNV7DC^WQ77MT-9:B\nM]+_QD!EB+3BEOX;H>K2U#-0U0WT*:8H!B&I@5U81($`9^D>%<"H$Z\\H,.**H\nM@I)`NV6P&`B3N*(#OM='JM#0J\\*R&<)_:>B"':;0VS\nICX']$?!OP'G`*T.9Y3]>%8A?Z?%?#^3MDE]TA?8`````245.1*Y"8(+:\n`\nend\n 6571 check_ok_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```)<$E$051H@>V7>VS5Y1G'/^_[^YUSVM.6TD)+H<6V"'0K\nM(!1-E(D7U!$5M&Q#-Y*Y:$:,F]-@ZG\nM&TL+MA,TX`1,A%P@+A"U;2PXZR&M$M9)_F;W$[]ZE/&1YV/H<^;UQ2WZK#@8\nMVJ5$2"O@"\\6)VL(9?X32Z574S*Y`&&XUI8=;3269EOA/):RML]:,T#AGK_.=\nM<[9I#0T>'PW]_H0Q,A4(1!(*!*,610Y-KLO$;<:P+(N4D8<)H,!TF`3C.MUG\nM#,''$G"L]88&P]#)>$CR,*7`8(8"`+E.\\!X_1K\\G@"\\8I3<09<`6A@Q%7"F(\nM6=QSPQSR2RJ(6'+^PT>SME89_80UQ[7&3%"+Q)*4!RRBMN`+QY&DN[K/!/FF\nMN8MV7P1?<2[QBDFH&06H/`?B#^-UFTS*]$[&H>=3R#`U;?N^I/&]S8`@8G/U\nMK3]F\\;);L>V$`5/"I;12J8`V0)D*I;,HU!^,,639A'QA+!+NZO=%:&SJP3$]\nM'U=1$:ZJ0IPU4]#%;NR>`(Y\\%TK&Q_N4@FGZ.1VX"PH0$4!PNER$@P'ZND\\D\nM\\GIJ#4)>82%39U0D#)5.L5D*=/O#6%;"15HG,LUU2RZGNFH*.L>!+G2A)[G0\nM;@?*,J#0H-KA(A"2\\5,FZ1D1FUGSZYA]Q>+T7!#$MJF877..%W52IF$4RE;`\nM4@HQ2*>KJ"48!2643RY-;)3D)Q&!B*"4PA^31/X>KP>&*2@(@A+2V4X;"J6,\nMT977)/B:CH&,(%:&1HF@#)W46-'4^"&'OVQ`:8T";+&8L^A:KKYM#8H1+)])\nME7&FU-&\\EQU#.8;&;4)9KH/\\>)P@-F9F$"M3(TD%$M4O:^-D1=5*(78<3\\\\)\nMK'ATU#0X+*.,%=C)&@)RSAZ%.0[F54[#Y^N@O:^-LM`+8*044("RZ\\4X6WU0_7!D2')XR?2:DO#`&Y\\]G\\?!0@/#0(.[\\?'+S\nM"S*$%TJ<&CW8PFO;UW&H^Q`N1PXB-B(6JQ?_]+[>VOJ6[:__?5.20BI9SA,>\nMT%H1#8>(A`)C"C*6D"/]CX+2A297%E4_=O?;N9C-!))U(B:E[AP*1\nM.+'HT+>FQ(@"I];K)!V58)J:*Y8NHW3F94ROK"8:#A&+A,ES:)R!,_RI\\446\nME%]!^>1RMAW'/Z'7UTN1>S(_7WIOO**P8E]@*.`]2R'A[.5)"3EY^;@+\nM"L:V\\K>Y_V0&-X+24YA>79E.B8:AJ#+#O+IM`[E.-W$KSL8=&VD^U8P5MYA?\nM4[#2:RD*D2CYGA1RMG8\\RJ7U&:\\5E\nMTRDN*TO7C3*7P>Z#K]+J:R48"])O]6.Z359]OYYGZC+Q@&0^.K*^R7Z\\)%]8I*B:W"_'-+A;`OSMR+OT\nM2S\\1(ABY!K=4W<0O;E_/ZZYI^&-QNI)%-E&))S^EES;$-QI9GK;.OYM[O9?P#+::$FN\nMB.RS+;21$-XPE$:I2"J@$FDT<;]^1VGU'V4H45D'8E[XPQRM":&LD"6"V.08\nMF@)#FSHY)R[(`T[?8Z^=^FA-W&EA*(/2G%(>7_)$;XG[\\M_LLN(')AE:ISR/\nM4@KH3"4#$\\#SNQL!>I+M.X-UJ!7M\\:O8O#DU(8E<8XGE*C#R]L5/=>X1PXR?\nM,:#OZ_=X#M3[#AW9K;BR]D=67K=X>[@UONO/1.Z6RNO*\\Y^B+(?R>/7OH[>QU\nM%,TH>N;CCH^?:_6VSIQ;,E=53ZEF5]^NXB^\\7SQ5];VJGZW.7:T\\MN>VKP:_\nM,K5;,VWR-.Z;==_IJ=;4WQ?/+!YX:\\M;8YYU43R@E,(P#(!@Q([$]O;M-;\\>\nM^)K.<">3\\R?3=Z8OKSRO_-$M)[8<;XHW+6FSVG#D.:@OJZ_N*N\nM)^[BR2>?O!CBC0_MK>VT[6MS]GGZ'MAR<$MOW3MU,O6O4Z7BO0JI^Z1.7FAY\nM(18<#.[<<')#J.:;&EE^:+DT>9O^ZSWEG=75U37NL`ZD&/D&:PH62&SF/7GPO+"\nM8T>.'+E88GU[[/AX!R*"][1W66-7XY&5NU?*[)VS9?[>^;*F?8TL:5\\B*SM7\nMRO[`_@-];7TSCW<'2A+.Y:\nM+.O]ZV7`._!;$>']]]^_U.*.C(:M#2DEENWP[#BVHGV%+#JY2);W+Y?=0[O;\nMO1W>N5V=X^?^)<'.3W>MO_=N2CP8\\&_;W^6X:"0Q>TWSB>)-\\]6@ZW($%Q\nM3ZV9NE%K/:N[M?N.F(KY%BY<>"G$N3#T=/;0WM8^ZWC[\\1L`GGWVV0O:YW]7\n3H/,0````!)14Y$KD)@@BG$\n`\nend\n 6572 check_write_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```(($E$051H@>V7?XQ4U17'/^>^-S.[P\\PLNPLKBR"["Q1*\nMJ>"*BD*%18Q@4FFH;:+6IFFJ2=.T)HVU@3:I-FFC:=.F:?^P21.-?UC;V%3:\nM8"M1"E1"51`*N(BNN[JP/]S?N[,[,^_-O'?[QWLS.S,[RRPHFS39D]R\\>^^[\nMY]SS/;_NO3!'%P^:U8BB-$C`$+4*N\nMK_R^/T:IW!HW;UX,A1B"F`HQ5.'0`F;(?J@*(R9!(VTSB.0];(!0H(F`&3B8S*C2FC\nM>#D%R_$;"@Q#^?G@QV$6P'@>`(#*((Q\\U,[08)S1"9N^N,VPJTD80D8$T@X/\nM;EE)9.$2+$=?>O/IK*TD;^Q9"Q9#SC8KF8TE4'[[NKIG^#XZ6XZ\nM1BU&:RK)+(DABZ/(O`!Z+,5(V"26[YV\\32\\%R#`5;:?>X/!?G@$T6KOH7(EM@A`SU@*Q_%7K5!!"Q0`<$;1!\nMKES9CL:(+N3:^76>(#\\^L318&A%A+*V]^CU3#Q0`U&@THLE5.V4((L:E^91`\nM+@?RDE@,A6B-&,I'+)P\\O(]S;QQ`E$(`5SNL7+^)6W;>AU#"\\OFA,L.2.IWW\nM2N:0(6`:$#"]I,]/8C$5V@?@(2UB]D]4)8)V,PSV=N)D[&G+8$%%*9?8_AD"\nM4ZL9:&(UM=14Q:AXZR!;VD[1]YD-_'?MK9B93"$`W"P``33KM]Y#\\[9=A6#P\nM8KBV?BEDO5`FYB]E\\50B3BHQ3C@2H3(2G>H-A`G;IN?H2ZQ_Y46:W]J/W+Z+\nM=]?<2*4UGA]"XA_GG@>4$NQ4$BL9+ZM(.25+_4>@AWURQJQ4TG2=LI+:!&2S@#MH6>Y\nM9LT%EM+$L>CMO%JUB?KPC50FTS@C=E$(:28O3Z*IF!?:SA$XF&*]-X)X=*JQ"\nMY">Q9(]#_XCWVQ0J.5E(.LN?[63G71?M:EQGTA!:P%0&9P<.L>_=WZ-5BBKW\nM&M;%:NA)5A&)-S"R*8:[>CZJ,5KL`0VY,@JN+F_ILA>X8JOGM:&!7B9&AR?O\nM1/XZQ];L.WZ8<\\EQ:H(.Z^I7TC[A,O#A#:AUBW!O6X0RQ;LNE*I"9(]\\)I6<\nMKETJ9+)RIFLUB^JI6;2H`)P"7CG40Y=[+VN[:[`NG&!X:Q.)R$ZV;FZB?T,U\nM_P#_(,L[B?,?%<<^[.'\\X"BHO*1618^/_(='_J.CJ$_QXR5[FF9#-9_/5,1;\nM1SG49I.Q(ZQ.---=LXS^FK4L"%?PWLW5=.$=LE,!>$ELH63L@^&X^\\'8>-[%\nMR=^PY#LU.U8EUOMCLVA<:DU`Z?3%9$77V_'*#$&V#0Y06^ND+NR^*<7RA?0[\nM+A]K[[IA&*(0L;()Y951[W[]1U%R1`S14K0AYB=XF"O_*:FR_PO7J`I3ITYU\nM1R\\>2SQIU2VX]8:+@S3:(T,G^[H>T^NWG!"T$M/`T-JSO(@`7>7+QVR0^@Z`\nMXHLO/\\8OVZUK'SVEO_7(H?3.NY[>"QC!X%?+BC"NMH[3TP[XZ_/0M?9+M*SY\nM17@X%=F>&"75T_G\\OK\\?^,G"!2VI>/R9LE)F4,FO!FV"ECW0V[V.W1M?(!A:\nMO;FSCZ;TQ__YU\\&C]T=CM1VMK3^>D21UE34M38U?@^.GZ[AC_9-4158O/==+\nM0V;XXCMGSO]PX\\:6CM;6G\\]8E'D5U2Q-L9]!QQLA'OCZ7IKJ[HJU<,?:WZAXNN:6W@&N18S]8N'!%\nMO+__=Y^_^?HAVM_OF8WM/S4RN`H&^Q]^&ONPU?-%.`````!)14Y$KD)@@J+,\n`\nend\n 6573 check_zoom_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```(ZTE$051H@>V966Q<5QG'?]^Y]\\Z=Q3/C\\6[':6P*1![8'Q$.A*H(*(1Z0`-%`2Y.6\nM-@E)G3JA=F@6QW;L.%['X_$L=SD\\W#OC\\<2)0X72(/F3CNXY9[YS[O?_EO\\Y\nM5P.;LBF;LBF;LBF;LBF;\\G\\K`I#>_QS%DM\\1CYM;Q%`:)6`(6H1J7X7]<(Q2\nM51V_9EX,A1B"F`HQU-JY=SL.]PKG!"47\\?6E\\P_U8P(\\?-\\M#)U9>.+N#[0]\nMC>`7'8^2IRFY/F5/4_)]2IZF[/F4?$W!]2EXFI+GXP!:@B8U3V&U5>?J=01$\nM)!Q+=8R`%D$4B`J<%/A2$"5*E#RMA1\\"`8#FQB@-""H6S1FBJ`\nM;,&E[&MFEDJT=?8PL+T;S5JOB5KK-0DS+?A-`F^KNC7K-*[8ZUKO66U*P8&Y\nM+`?FEP)GU`+(E0(`^;)'QE+$;).XZ>!Y'A4GKS%`P+1,\\JZJCMG`\\(T,W&B]\nMH<`P5%@/81Y6`"S7``"(16#QPCGFYW)D\\V4NY\\HL^)H50W!%P/'XPD?Z:6CM\nMIN3I:[_\\:MY64C,.O'E=:\\P@M0B65"+@4?8UV:*+#L,U-9/GV-`DY[,ELDTQ\nMW.X4TI5$$A9ZJ8<7S*62+>`3AFL^6.#AX":NS`3N3P>Y)$QEH\nM1C7%\\2_EL!IL1%]?WE<`5M,O8A%/)M%:`YJ(;5/,YYB=&@MXO;(&32*=IJ6K\nM.W!4E6+K`$PM%?&\\($1*!4QS_SU]]/8THZ(6*FVC4C8J;B&>`6F#7LLF5]#7\nMGS)A9+3V>=_M>]B^:V]5MQ*)[NT#5T11A3:M2:%Z`)X(VJ!*5V5/8R1;V=+8\nM%FP4YB9^[0*_3==3<[]W^,2-1&\nMJ9#M:FA4U];`ZG$>1$`IH5PL4"KD-J3%C0X@PD+LL!S>&1KDR$2.AQ]]A.ZV\nM#-/3TQPY]CK1MFZV]N\\@,;"#UBWMG#OT,A<&CY-L:Z5WSQU8D7C@!$.J-+KF\nM*H&I`DJLW#L$M'9QRBO73(GK`81`%(_B]"3_.'V1AS_]"`-=363++F4[06;[\nM3C)-&:*FH/!(-#<2W;>/.TM"UC9V]'>2*#BB3LAFEJZ>'AJA%U#:Q+0/#\nM$'1'*\\[,-..#;^*L%#`,"4E&$*V@)@*JRD*5`JD:I`$?\\)&P4=]DG;GZIGVD\nMO,+DS`(='>VXGH^GP43+,U>7K6I4@-F\\*R+\nM@(8JC8*O-_;TAA>X<(WV7$IE!T,4)=?'TQK'<7#S.8I:HU<,RI;",A1*0=0R\nMH%P@W9C$+17#`RU,<=F`A:@<^:P:>;5VK<*M[(,(OF&2B)A,SRV0+WOX@)@6\nMC9DF'*5HB$>(V2:1B(EA*-*F,)DODK-M(FUMP=GB!WN*JAQDZ[*0\\,;H%*?G\nMLH%RI:C5ZD<%-7VI_YBIZQ/J=VJ'[5WM'!\\ZPZG;!VA)QR@@3+D^>EV8FYWC?&Z9\\=9F#CLN(G`Q/&2O!!`4<0DE2V<76UIYZQ\nMYINTYCNU,E;KZ(>_F4+<$+9T=5N]PV<2!X\\.ZCL_M,?+H_7YLJ=UU-*F9VGE\nMF#H>LU1&1?3;H^.V>?K?O!F++5]J:?&4UA`:;QBB$"D%X:W0:'"_?D&4'!)#\nMM*PQ*##B77^8*\\6R:?I+CK-MSZV]/U@:'.Y[;?S\\J->0&O>57K)-"I8EQ63<\nM)IV,-5XN.[W62F'7A9&1UR]_<.]39B*:%=>52N01$>`BH0@W0+[TE6_R[,]_\nMPL^>?>'CQ5+I1R/OC`Z')J?J?`S%7VOB$1J)6O?N-)\nMBL45H[6]J\\OW_!V(:LKG5YB?GYN:GY\\?[NR_U=G7T_:+_IC_V=._?>Z=$Z.7\nMOO7E>W;_\\3,O_)DQ?>5^-QS`1C+YXZ>86,MS-]PZ\\>/_FY\nMCL;4T+.'WV2J3O^&I-!_([M'CW-N:'#:'CF^I[VXT&._?7]\nMS8TK)Y=7UNC?=``65QP>2[GY\\3+#:?'V-RW/-DG'+=O-YG;CUV^]_S#+2'Y.&=C=W;RQJV[JS9\\]/O_/=8Y^\\_=:QOU^XB,]-"@#@\nMY1P\\V2'^6)D3:4/?UEY<&+";V]-.0V;@3R^]]M*N6"0[['HW+P"`/V3AZVU2\nMF'3D9`KW@41^OG74,[?Z6EN_FLN]>*^!5N^UD1O)7[+P0,8\\=;HH3UU0\\87>\nMI'5NF^6^"L'?$C?=.;">/+,]15XKZ_Z4VG^+5QS[]M#*\\.,V^FNE]]JR_X'\\\n5!QU5?LH<2D+]`````$E%3D2N0F""\n`\nend\n 6574 clients_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```.H4E$051H@>V8>Y!>97W'/\\]S+N]]]]UK$I+L)BQ!""$1\nM<]SWG?#_/]_O\\\nMS@7.U;DZ5^?J7/TVE_C_/'E'1T>P:M6JSG*Y7#'&!$F29&F:UGS?C[36'#QX\nM\\&6/X?^Z)Y=2XIR3W=W=02Z7DX`>'Q]7^7R>)$E>2)(F_=.G2#C84B\\7SM=8]]7K=K]5JK?[^_J>;S>8_E,OEPW-S\nM_^JKKR9-T^ZAH:&[-V_>_/M;MV[MZ^WMI5ZO,S8VQJ%#AYBMD([=BQ@TJE0JO5NJ"_O_\\/UZY=>]/:M6M7]O3T\nM^%IKIJ:F&!T=Y>#!@QPX<(!:K;8GBJ+?DU(>FIRV6JU[A!#:.4<I%6G\nM7I\\G:\\U1\\6-VOT(P]#N=>&G"1[]6\\XZG@^_:NF53^:&''KH3T+\\6P-:M6WGT\nMT4?EKEV[WK-^_?HMU6H7^W[V#//S6:BWU4:YKO']2%G==/'*41I;99G]E]Z[;BJMO>_%:6770EO>==0*EK"7Y8Q#F+U0DF:S)87N#@\nMZ#S[1M.';WW3FQYYXLDGSJCQK`XTFTVLM0P?/RZFQH=YW\\TKN';W&Q"Y#CQA\nM"7R!M`H3SY'53Z#G'3O637#^X\\\\S<7+2Y<)`"R&8F9[BP0_=(+_UR'_LV77E\nMNJNDET.WII%!#N$<4OHX+T!('Q!4"C[7790E)_>>M5`8VD>]<1ECH1/HY<."L`IU@LR:=?H,2\\_S[\nMWN;8Y&SCT]G"B;E;-]3SU[_I[9^]_O*.U_54O+)?Z!92"J202,]'.(V-IM$+\nM(ZCZ&*I9H[>K[&ZY\\Z[-SQPZWKKBZEU/94>^S8]?HB?),TE_R^4P.SO#O]R[\nM*;>NK_7DC5><;PJ5'FPT@XWG<"9!")">WQ;A>2`$#L'FU1ZOZ)S:^X:M7^U^RNY)9Y-A6F=1(;3>/2.40ZCVM-8!MCV'@:IV*[;>C9N?M551Y_[V7_]T;75^4KSP/YR\nM[TII=:1L,C>`2830+5S6P,:SJ&@6'<^BHQET/-?,50>^*VWZ-\\V#/_Y'I^;T\nM'0^JE]1Y1@=*ON;1'Z*"F2?HZPQ7%?.!;UHU;#*'2^N@(X2.<-$DIC&&C6HX\nMU<*9C"!78D5OL;^P\\%1'Q=6B1BMAR25KQGK7K_]CM3!VEXFF)DQS$MVJH1KC\nM9(V3Z&@:$\\]CDCI&I3^:/OR#._J6K_A4U^#RY))[HS/)/+,#C^QM\\.-/]KAT\nM8M](N=J_3@8%ST0S1>FL%#9&Z"8NG_]38]Q]FPP=.\\O9U,ZAXIB:#TA*[]H&AW-H=)&(TN:]P2^\nM]]/CS_Z$2S[4.*/XLSH`H.,%UM_][$]-UGB=JH^_WC1.'%4+P^VH-"90C0E4\nM:QH=SV/2!C9K8E02I8W:>ZV.KD&WOCGZ[0>X[G/MXZU\\UW["0J\\5.OF,2>:^\nMIYJ39/43J/HXUB@H+C&9\\;[8J.E_B^.,S7]^5NW`+WDW.O;YBUEZ[<>9_,][\nM/^J%E0_[A2YD6`(AL"K&)`OHUA19XGFBOO%C[N$%WY#!L6-TL\\!#JL23+*`=98TJL\\TYR9N#P/ON_M&%+<_"-P.3"%X)2MZ\nME_=>4:U4MPPO#%_XQN_8H5L&O35>P?.0`?.MC&I+I4=\\GGW_-G&L3.G9.(H?\nMUTW]!'!3_P?`,S#98Z-7D`YWWJUMOZ#"&\\E#IP0^.7S2(U(YI]_^D_5\nML[6_+*S&7CH/A$!*_[(5R]ZY\\Q4[[[AJ]55#SS2?\\1_8^WEV_9WAMIRDI].2\nMQ]$5"`HQ?&6IY),[/#94+T.OS3J?FIS]O8_C,>,1_]>5V_Y.WTY_!N\nM?LY';JBL"O:,?NHM7_[O5/D+KQ1!G`;@'R'SHN["G)[=S\nM8-65VX^'.9E.,)Z,TEDH$5R:Y_AE`1/")Q`2ZX$6#D]INK.,\nMII[C4&L_C2Q&Y55>YN1=UMJCA'R!#P/WG1'@/J``)$-+EJRX:^?.U6_XW:L'\nMSM-"BH]\\Y@`F,\\P>=@P!73E'23JJOH0ZXNFLH]MTYKO[>BL7KUM9O'YT]`]X\nM_`LMFC>-L'13@XET#"LSRKD\\Y5R>4BY'/@SP/0^!0!M#IC51$-!*$NIQG8B(\nM!@DZU"&:.TEYB(#9,SAP[^*F>./0T-(OO/.=EVW:N&D9J8&O_>L8TYE%+KN*\nM+V8^3Q]YCHN".LM"1S/HXBDQQ*,=KT(5JDQ;2Y(+6#:PE)/'ZGSKXY:+;I^F\nM\\]4G"7Q),0PIY_.4\\WF*84@8!$C1!DB4(O!]I!`XP#J'-A:M+5;9-3@&$6<$\nMD$"\\M+N[ZU.WW[YVT^!@%T='FK04/'VL">4`6UG"D>(M'`D=PC<(*;`R!.N!\nM,A`KDECQS&1*D"B,MF1IF20IAB"]ZSP``SLT$8=A[\nMS9(E%7GB1$2D!:GO,9,Y(B&@N"B^DH-R"'D?`@E"@%X$:/G@>VTS'6`M*`NI\nM)3TZB*IU0D^"$`(I!+Z4Y'R?2CY/JC7*&&+?)_0]0N'C:1_/\\P@\\CTJNXC54\nMLP\\)%ON_`010+#@GED],1%B7)Y4>:>@SYP1*>E#PVQ#E18A2`#D/Y")`K"%8\nM7+<.M&O'*C60&$Q<)ILM86P+8RW:&-3BDFJ-L1;W(CVA"1$+$EEJP_86EV!2\nMVUK)\\+N+Z'*.N!"@"T%;7.BU1[X40$>N\nM#>3+MM"6:KMA[:)P#4G0!LM[N#0D;81DNIWI6"G"-$5*2:84#DB4(M,:936!\nMS>'F);9H,=;27>PB"=,E(W>.(.X7+S6)*0,=2EEJM1@2H,="CX1B")YHBPUD\nM>^0+?ALB[T-F7G`BU9#7B)R'"Q>A0P_/#TD7\\L191B!2/,]#`-I:0K\\M11E#\nME*8DF:(L.A&QA](&90W6.2I>I4]<+WRN:C_HOPC``%3!%=OA;2\\YV<2(`MJZ\nM%S:?;EJR[4HI:,,E?GL]D`C?(^\\G)-+@/(D,)-W=1=)ZGF:2(IV/$`)C+>EB\nMZSP%DRI%,TWHED6D\\TE31:8541I3E,4>5A"B?P'``G2#+8`%9T$;BG*6U.M%\nM:]<>7;TX*96%3$.BVA/6N'8G+GZD&91#64?4S9K(,;#?..#H[`\\JS:_;/\nM1>KKGDB=`)QS*&,(/`\\A!-;:=B?*4O(=163.)U$*'\\=4?4HLS"W,$I*V`W,:\nMX#V+$;+]8&3[/9(!E5+).80GF(ET>S)&JAT3;[$9*]O.>#O`[=]CC:<,W7G)\nML2P"4P5M,4;3-[ON^/C;WOMG,6LR>"MGJT,\\*-:&$_DH1D1D\\I2`:0IAGG%.F#:$I\nMY$N$GH1FUH[*J=&W%M1BCS_E@'6G70CRDJY"`3*)S#0=@<0D2H[.-L;!]\\_R\nMNO/7!<`ZQ[U@/W8Z0GA$D8^0V>+5=%&L)]NF6=J"3\\7J%$"JLV9=Y!D5W7&?^?>%SKWS/1,3]R=W9G=U2K'\nMA96$$382&!,<$!B,R2:XC"EL@RALDD6PP=@$XX+"0`F7C:'*!54V+KN,P"21\nM@PP2FT:S869V9KMW0N=^Z5[_\\7IF)2$;@1S^X5:]>EU=W?W.=\\YWOA,:?G;^\nM?X_\\3_W0TU_P:N(XQO4\\3X0REI*%K(AL/Z./2--:VXR-[8M@/_W1=S[BYSXB\nM`+>^Z#8`)<(4R#76VL/`%<"LB`P!_C8`$4*0!K`LPA&0;PE\\W6+/"(1__Z$_\nM^;\\#,#`\\*R*'K+7/!&Y62NWU/=?+9'PROH?K."!@C,480Q3'1%%,%,9-/?NCM_SL`;GW1;5AK':7486OM*T7D";ELICQ6\nM&69L=)ALQB>.$[J]/KU^0!A%)'&"L19C+5B+M9;$&*(H)HX3DB3!6AM9N!OX\nMH,"G!-F*3][\nMTT\\'X)F_]5JLQ55*7HCE]LK(T/BAJRZA7"YR;.$4)\\^[Z.U!L!:2Q2%A&&(-08_DV%XI,I8=9)\\H;3SF>W+&-L$;@?>\nM!T0??>\\;?S(`O_Z2UV&M=47DE2+RYME=$X4;#EU)N]WE.]\\_2JU>YWSM++5S\nM*P3]+DII2N5A1JN3#(]4R1>*N-X%`%A+DB0$08^MS77JY\\ZRN5'#6JB.3S$U\nMO8=,-H?16GEU;Y[O>/4JNMLK*T2*NYA5**D=%Q=LWNHSH^1:EG6Y_D+PQS<8F2Z?O8V7Y%*[K,3=_D.&1,1#(^!Z]?D`4Q1O6\nM\\A(E\\JG8&C[R%Z]_@*W.0WE>E$*)]WC@S7.S4X6;KK^&^TXM\\ZV[?\\C9E=.L\nM+"T2A0'%4ID]\\Q>S:W:.F:D)YG=/LFNJ2JF8QW52SQMC,,82Q3&]?L#Z9I.5\nMM?.LUC;P/(^1RA@SN_=RY-Z[.7;T!^S;?PG5\\2GBQ#!4*M)HM4>B*'X+<,01\nM=>3!]NH'OW'5HQZ'(-/`!ZNCPP=OONDPJ^?.\\XWOWL/2F466S]R',0D34[NY\nMXIK#7'+)I=QXW65&)#$D28(Q%J44^6R&L:6Y-MWW?G0\nM`)[S\\M<3)XDHK5Z;\\;UG__R-UZ&4XBO?_!Y+IQ=9.K,`6';OW<_5UU[/M5=>\nMRDV'KV3W=!6E%&$4T>WV"8+P@LX;0S(H9G&<$"?)(-$5P^4B^5R63J>/*,U8\nM=9)6N\\G*\\BE&*J,XCDLVZ^,X#F$8[E,BWQ,E)P[=>`O?&H!X`(644KA*K@*>\nM?V!^ELGQ43[_Y6^SMKK*RO))K#',S,YSU36'.7SM95Q^<"^.UH1AC,4B6#8V\nMU@GZ`8DQ6`M(*J&>YZ6RJ5+M3XS!&,-0J<#^N1D63JV@E'#EU8?X^EU?X-3B\nM<2Z]_!JZO3XC0R7Z_:`81O%O6\\L7E*+S(Q%XWN^\\D2B,13OZM85\\[I:;;KB6\nMY=4:]QPYSLG[CM#IM*E4JEQSW8U3X'+KZ"RR[>S\\%]NXD'O$XUVV"M(C&&(`CI]GJ8Q`P^8PC#B%:[\nMP^96DTZGAW(^<<(8*U]O.LY>_;OW<7R:IWSZQO4:V>Q\nMUC(^.<.^??LXN']WZODHWB[_6&.)XX0CQQ8Y5ULG#",2DQ!&$6MK=4Z>6F)]\nMLX$Q%L_W\\7V?;C]B?K]&:8T@>*Z#[[OXGDL4"_L/7,S:EU;8VEK''Y\\""X5\\\nMED:K\\UBMU"2PL@-`!*RUOH@\\J50L2+E4X.C"*;:VUNEVV[BNQ^R>?\\3!5TZG2Z]\nM7L#)TTM\\[HMW<>S$(M:"G\\G@^QZ>EUZ^ERI+',=HI7&T0CL*K=2@X5.XKLO,\nMS"SM=BM]5I*D;;KK9)52EVNMN%\\$!.`2I62B.CK,YE:3;K=+N]5`1!@=JS(V\nM6AF$-]YIO(P%UU%,5,O$X10+]YUF8?$,W[_G*/T@(#.@R[;AWOU`>)Z'`%HK\nMK!7$6*P8Q%A$TLA61L<0@:#?IY`OH!V-ZS@88^8\\U^6VM_QE"D!KA3'V$M?1\nM7JF89ZVV0;_?)PCZ:.TP.CI.J9!+&[+8[%`'($D2OGWW<8X?.\\X]1TYPY,@)\nMHCC>,=+U/#S/'=RWWW/Q/`_'=5(`VT8;008@C#7D3C'OT>J$>US7P75=.MT>8=@G21)PP(D3BQP[L4@<)SBN^P!/>]X@"N[]H^"3S^5PM,:(0:S%B$4,\nM@`4+KNOB^3YQ'*.4H)3"<30BDM=:*Q%)'"5"HQEHQU$CCN,@(H113!+'6&MQ\nM/8],)D.2)$3Q]I"2GGZOP^F3BRPLG.+8B9/$\\:"5=ET\\WWN`UW+$4`,8A1&IWFQ762U4FBE44H2:U/J*U&"TB*B5$8I-6B^3-JG\nM2CI):<IZ'UGK@?5"B&I&)$A'!44JPB!61**6%18G@:`<1\nMM%M99N/QA0R-#M!01AC$4H%O.X\nMGHMV4A'(9K,IE=P'4LB*8JO13A5E8&1*']D!DDR:1R`^!N-7NDLOZ9'-Y"L42B4DX?[X.0!"$Q'%"\nM&$8$880,*%*G'UY0=XSJU/X'G/?"*E8N$A\\R$((OK](/6X'EPJ-;B0\nMSY+QO'3UDL2<75UA?'P"W_,I%'*$00AP4D2.BSRHD(EPCXC4MYJMR9G)*AG?\nM8VQLG/7U.N?65@GZ?3S7H1^&:1LQ^%Z4)-SXZ"LY<&">H:%A\\ODLU9$<]QY?\nM8FEU8T"E"\\5,.PZ]?D0^EQTHC,%:(9OQJ0P76:MMHI6B7J_3;K>YXK(KR&9\\\nMLK[/6FT=@;LV-C?KE9$1=EH)$<'"*:7D>YU.#VLAD_&9F)@DE\\NSM;7)ZNI*\nM*K%AO)/HHH3EM0:;7>C&+B=7&RPN;P#"%9?,I?QW75S7';3)&68F1A@?35MD\nMI11*A%S&9_=4E2B*":,88PQ'CQYE;'2,;2_=-<=_E>IB1H2*W\nM/ODPO_S$0SSV\\*7LFADG3!2=?KKL^\nMP_S<')5*A;'*<"K;K4XD(G>XKK,E]]NE[$QD/_?X7Z*0SS?B)!FRUOZ"XVBR\nM&1]1&JTUYVKGV-C<8*@\\1*52V>E-MDN\\4K)3D&)CZ?9C@@2Z@:75BPGBM`71\nM*O7ZGIEQIJH5FITNBZ=7Z?5#.MTN__[%+Z*UYNJKKF9XJ,34^"@K:W6:[>[G\nM!=XJ(OW??_EO[`#8KAK\\Z>M?01`$B,C'1.2[S58'$<%U'?;,[F7OGCG"(.`;\nMW_@:2TM+;*O`0QUC+!O-/IO-/KT@];CG.)2*.68FQMB[:X)2(<_9VCH+IU;H\nM!2&M=HO/?^$+=+M='G7=(PJE%`NGEI,@"-^1Q.9C2BG[RI<\\\\[\\&\\*4[/\\--MSP5K%U06HUB[:-`Q'4=\nMM.,P,3Y.'$?4ZG66EI?H]7L,E8?(Y;)HK78VSC(H2K[GXOMNV@)82Z?;H[[9\nMX/Q&DVZOS]96@^]\\[S_X\\EU?I3(\\S`V'#S-:&69N=IILQN?HPFE:G>['@3/N??Q@+XUJI#VNMG^*Y+MI1*%%8:U@\\N.G>">(T>PQG+Y99KX<%7,=E>[ZP`-;B^SZCE1'V[-[-S,PTI4*1-_'D)2_8UJIURBM7JJU\nM*KN.@^>Z*>\\'7:0UAB`,:+?;=#H=@C`$TD$DX_N42B7*I=)@3/0H%_,[B^"U\nMVCH+)Y?9V&H=-R9YN[7V$X@$+WK64_X[\\WX\\@.WSK@_\\'=985SOZ%J74J[52\nM-SJ.]CPW74BYCA[,"3+X^TAV"IRH"[-L-N-3+N89&2KAN0X;6RU.KZRQL=FH\nMQW'R#Q;>>^S$VK$#\\^.\\\\%E/?CBF/?P_^=[U@4_BNY!8.ZR4>JI6ZKE*J4=K\nMK8NNZY#Q/3*^EZY/7!?7<7`OH%*3K(`C](*31;+/5;)MNK[^4&///P!W6\nMF+L1B9[_C"<]7)-^,@#;YST?^02^]DE,4E1*KE%*/5$I=;U2LD\\I->9H[3N.\nMQG$$S;K;5[VXE]Y\n>)";\\[/SL/-+SGVP_9I&"BT+8`````$E%3D2N0F""\n`\nend\n 6576 coin_clock_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```46$E$051H@>V::8QDUW7??^?>M]1>7=7[/CMGAK.0,]PI\nMBQ07GJ9GMZ[JFM_V[WY4#U#4F1B.W*4+SG`PT,]/+Q[\nM_N?\\[]ENP?^7_[!U`B#(,!1P!)D6D!_"O`Q`A!-D"KHIP`>2D\nMP*L6.R\\0_N??_V<_/@#;BJ=%Y'9K[2>`AY12.WW/]5(IGY3OX3H."!AC,<80\nMQ3%1%!/%,4EL,-;&8)>`5X&O`<_N&RNO79C?X+_\\_I?_[P!X[#./8ZUUE%)W\nM6FM_641^,I-.%?M[2_3WE4BG?.(XH=7NT.X$A%%$$B<8:S'6@K58:TF,(8IB\nMXC@A21*LM9&%-X&O"#PI2#4V,?_I*W\\QD+\\4@(]]^E=P78TQ=ASXAPB?RF>S\nM?;LF1QD9ZB.*$U;7-EG?K-)J=8CB:%LQY(@C)B^\nMLL#J^B:M5HM6LTZS4:/=;A`&'9(DOK&,U@Z^[Y/.Y,@72N1R!5S/1X2N\\L9B\nMN7&_BN77$/XC$/_1;W_Q_PS`)_[>Y[$65RGY>2Q/])9[!F^_Y2#%8IZIZ5FN\nMS%]C:ZM"96.5ZN8:[7:3)$G06N-Y*3S?1VL-@+66*`H)PQ!K#'XJ1:D\\0/_`\nM,-E8G5MC?75:ZRN+!)T6BBE*11+]`T,4RH/D,WE<;VW`6`M29(0!&VJ\nME0W65JY1V5S%6A@8'&%D=`>I=`9K#$HIDB0A3DP3[#].++^K!//5W_JUOQR`\nMO_G9+V!,+$JYGT7XEWMW3>0^<.K,6ZRN+K&X,$.]5D4I1;EOD/')\nM/0P,CE`H%BCF<^2S:7S?18#$6-J=@$:S3;/5V=Z\\,;6M"@MSEUF\\.HOK>NS:\nMO9]2N1\\$4KY'NQ,01?&FM?R"$GDRMH:O_JM??9>NSOM97I1"B?<@\\,5=DR.Y\nM^^X^QN79JYQ\\\\SS7%N=87)@A"@/RA2([=A]@?'(78R-#[)X89GQD@$(^B^MT\nM+6^,P1A+%,>T.P$;E1J+R^LLK6[B>1[EWG[&)G9RX=R;3+WU`_;L/R#`R-T&HV6)B?(9O-DOO_+L^P/XV5_\\5>(X$:75XRG?^UL?NOJ/&XM59RKU].(Y+.NWC.`YA&.Y1(J=%R:7;[WV8\nMD]L@WD4AI12N)[<`G]ZW>Y+AP3Z>__/765Y:8O'J%:PQC$WNYI9C=W'7\\4,<\nMWK\\31VO",,9B$2R;FQL$G8#$&*P%I!M"/<_KADW5C?V),1ACZ"GDV+MKC.G9\nM1902CMYZ.Z^^\\@*S,Q>Y^?`Q6NT.Y9X"G4Z0#Z/X%ZWE!:5HOL<#G_H'OTX4\nMQJ(=_?E<-O/P??<P?N9M#X@2_+2[\nM&\\O/[)H<)9/VN3@]Q]KJ$K5:%<_SV7?@"(<.[&7_G@GB;5YW8[;!6D5B#$$0\nMTFJW,8G9?L<0AA'U1I-*M4:SV48Y#B-C8Y3+O3B.QO=LV/O\nMSG&N+JVQOK')VNHUK+4,#H^Q9\\\\>]N^=Z%H^BJ^G?ZRQQ''"A:D95E8W",.(\nMQ"2$4<3R\\AI79A?8J&QAC,7S?7S?I]6)V+U7H[1&$#S7P?==?,\\EBH6]^PZP\nM_-(BU>H&_N`(6,AETVS5FQ_42@T#BS<`B("UUA>11POYG!0+.=Z:GJ5:W:#5\nM:N"Z'I,[]K!K?M-;>?!V``E"BT$J/B.[%5YBZ-(.UX*=2^+Z'YW4OW^M&ECB.T4KC\nM:(5V%%JI[8)/X;HN8V.3-!KU[EI)TBW372>ME#JLM>(='A"`@TK)T$!?B4JU\nM1JO5HE'?0D3HZQ^@OZ]WV[WQC<++6'`=Q=!`D3@<8?KR'-,S\\YPY^Q:=(""U\nM39?KBGOO`.%Y'@)HK;!6$&.Q8A!C$>EZMK>O'Q$(.AURV1S:T;B.@S%FE^\nM?_,B%Z4=#T/SW.W[]>?N7B>A^,Z70#7E3:";(,PUI#-\nM9/#]%&'804302N&Z#E$<]P=1I)52B?/9SWV9?-:CW@QWN*Z#Z[HT6VW"L$.2\nM)+BN1Z%01&M%'"<8NQW?M\\N$M;4U+D]/<^G2#%.79HCC!,=UWV5IS]OV@OM.\nM+_AD,QFT4EBQ7:7%@%&`!0.NZ^+Y/G$9>K2%>)XNY1V\nM73S?>Y?5;U#([3[OZ2E0*A?Q7`>GN+B&R[W//P?/^'Z.+ANA[97(:]>W8R/CI,H]'@]9-O,'5IAJ7-\nM&NTH`00MED+*9;B_Q/CX&(#I<149(0!!&>VYTV-)HQ:QM;]/?XY#)I',=]M\\5_\nM2/E"(<_1PP?H+1?Y_IMG>.Z5DUQN**1OG-+$3>1R&>(H(@&6FPWFUA;Y_LQ)\nM=@T4V'_37E+I-*U6:[NJE6EKX8G/_WT%C/S6!M78^,99.$.)['IE,%L_S\nMB**(5K..M8.T.@%*"8@0!&&7IPCY?!;7<]%.-PBDT^GN1G:[$2>;RW+HYGWT\nM%/,\\_?1S?/O4-/'X$1[Y\\#$>.#1.?66!6FV+R"KJ]0;%G<>YLEYG:G:12^=>\nM9_V[KW/TT'YRN1R)H:Z4.GNC`/V=W_@51$!$+@!QO=$BD_9)9[+D\\@42D["^\nMO@9`$(0W-ED01L@VY0KY+*6>`K<>WL?//O:3?.H3CU#(YW`]#]_WV;M[!WWE\nM$L\\__R)?/W6%PFT/\\X6?>Y1/?6`/.5_3BA(J6W6:[39H1L_])Q`1JT0>4TKRO:4B]4:+(`C8\nMV%C#&LODY$Y*#`V%"9HT<.R<'[3G2S>3I-=7Z&E+(D21+^X,RI)V]T9#_QX(?)9;-;<9+T6&L?\nMV_4)M=3O%+=WUHK8F-I=6(:K9#UC2K?\nM>?T,T?!-W'%@'"T0&TN^W$>KU63ZM1>IU.KXY7ZR:8]H:YWY5[X%49M]]SW*\nMR-[]N%H0+*[GTUBYANHTB),D#L/@O]\\`\\/+SW^#>^T^`R!6EU/UQ'`]G,VF,\nMM13R!<(P8&-]C?7U-4JE,J52"27R+@#7[R)"$"8T6VTJFQ7>.#^--W83?4F%\nMVL8*J4(9[?F,WW0S2:;`:T\\_Q:67OLGFI3/,??\\DNXX>X_`#'Z94+N$Z"A.T\nM6)OZ/NE\\@:!>P]8JQ%$<@OQ7Q3M%!,]UKHK(;QIKF[5&"]]S<5V7PX>/,CX^\nM2:U>Y\\677N#BQ2F,M;Q]?O$.L;8[\\S2&,(JPMEO+M)H--A9G:0<=PL00)8;R\nM[L-\\\\.?_$>U.P*O??(IC#YW@SD=^FE(Q2R[MD$^[]!3S>-JBXP[IE(_K.B1)\nM(G&T]$842M5F=J>I:X;Y+Q@1Y\\SR/=-X(5H1D96E%,L=3#\nM_F.WP0+O3P?>Z\nMK:+C.%TJB2((0QK-)O-S\\VRY189V[";7.TADH1[$-*($S]6D/$W?T""3/2GR\nMM6OXNP^1]9PN`"VXOD]Q<`3EI5B=>@L=ARPOKTW5MBI_\\!X```^<^!D"D$XG(`XC\nM:M4J2Y46C<(P]3"A$29$!CRG:^64ITFY&K=8)G_U+/[X'K*%/)F4T^T7`*TT\nMM?5-JES#64MVJ,K^PP,7IRUQX:XKIF1D*^3RY;);%V1F2\\B@Z\nME<%1H%N;I-,I_)2'[SKXKL;/Y?";&Z3B-O[H3I)V$T2A14ABP\\R9<_AAF_GY\nMJ^'2\\O*_V'?P^/GW!0#P_+>>XN%'/XKJ@GA6=5UP2(244@I':[16I#,9!@<'\nMV;5C![MW[6)R8H+1X6$&!P88Z.\\GE\\WB>R[MK2K5RA:IX4F(Y&DA!)0OQ\\$7WA.ZB=AVBTVK0J%?+Y`@MSBU0N3^.*X8W39[Y7K5;^N4FB\nMUO\\2`,"SWWR*9[[Q)"<^\\EC+6ON"4NI-$1D!1@&ME,)UG&X#XKJD_!3%8I'^\nMOGZ&AX<8'1ZFV%.DV6SA.)JM:W-$!K+#$Z2+)1RM<;3@*%@Y]P;$(?F)W3!]\nM&E&:OAW[R*?37%W>8.[-'S#2D^,[KYYLSLTM_)-BL71R763A[\nM@1U]!4Z?/F.^=_+4[]6V*K\\;QV'R@S=>_*L?L_[KK_XQOO9)3))72HXII1Y1\nM2MVME.Q12O4[6ON.HW$I5*J_\nM;*T]%`0AB2B\\8B^9WCZRQ6)W<*4$%8?X)B;O*L*@S;2T3(N2,M21Q'`5!N-9JM:QD1W7&?[7=NG7O[>ZWS/+>C&>QQPO&\nMF,48L1I$6!P,.*QRA&2R*'\\DY(\\D(H1(*$@018I(%(B0B!0I1`I1(@))P!!0\nMG&0,=L#$NSUX83S>9][SF[?V>O>J_-%O!HLQC!7LD5+2E5JEKE9]]YSO?-\\Y\nM#?_/EW@N7_K01S[-QD9?G+=W9R)%Z-5UW6O;UGKO!0$"(4@A"Z5U7VO3;UJ1\nM2TGXXF?_\\(6^_T\\'\\/I?_#`K3Z_(-[[I]1?TNMF;\\GSRFO%X?'%5E0L@>DK)\nM2$HI`$(@A!!*A.@;;99B%S^4)NGW`]R\\M'3RJ31UX8M_^.C@>;_M??/^$\\>/'ZBJ4AXZ=#X777"0F5Z7.+;4=HP''GB(QYXX3EY4Q"YA87&1W8L+\nMS,WOH*IK-C)[-L[HK!***]@Q/T]_,**<#/G6OQ_FOON/DG4R9N?FZ?0BTC2AFR5(*9%2\nMLKAKGO%P@!2P8[9WU>;FYB$1U`L/X)[;ODM9%"[60;WT92]C_[[]W'''G0@A\nMV+5CGLA(7OG*RUG8L\\CY!\\\\CSTL0BL7%W72Z'6P44545/SKV.#.]#A=>L)^[\nM[KQ+'#Y\\6%H;/=_W/Q-`?W,=0-[ZWS>QN;'&)9>^&.\\#]]__`(\\ECFZOQX[Y\nM60X>.D0<6^;F(Z22:*7))Q-65]>8Y`5:"7;MF./FFV_AWGN/$#!4U7,J>C\\?\nM`(`0?"`$CC[X(,>??(I="PLL+.ZAJ7O457F;IQ!*;FUM8ZQB/1G@A7W@`35T#06`A[7000K&VNL[FY@#G$K).1I9E\nM)&F*PV!K0%E4I)T.G4X78PQQ$N-<3&0CE-$@!77;,)[D5$U#\nM7=549840"FL3JG*%S?63B',2`1MO?PJ$T!*[#EI'-%7+>#3!MX&F::CKAJ1I\nM\\6U`(#':$!E#EJ3443U]$7W/9#)$2,7LC@7$"Q"",UY)VS8T31V4-A`$95'@\nM?4MD#4GB<(DC=FX[[RV1-6BCD5+0M"WC/*<_'#$:CZFJFCA.L39F,NZ33P;/\nM.X`S(N"]!X((;8OMQ&AM:7T@GQ2$`"$$$.*T8`DI$5(AE4)K@]$&E4B:LD-;\nMU^3C$64Q1@@)XAR4T)(TP1B+\nMD(JF;BF+$B$D0@@D4Q]$%-!2XFQ,FB94V_7?^X;Q>(!4AKGYQ=,DOOY7?@-C\nM(O;N/V`GD[$MRZHMB[+\\ZR_\\1;-CQR[6UU>?,X`S8KKGP$6$$'XICM.O1#8V\nMQEA^\\[KJ/__MR\\\\]`B[IT#3UI<9$'W0N4P%!T[1X[Q%"HK3"\nM:(TV&J440@J04T4.(2"DQ/M`4S=X[VF:FLWUU>J:=[Q]SWI_^)[#]ST^OOJ=\nM5Y=77'9QYN+(;HUR-2I*$3NG.C,SPV#TH]3-?!R9MTDA']JY:^$!;2S+)QY_\nM;A&(70I3G26$ED[6PT3QU+!)M6VG6YJZQ1N/0*"EPD8169+@$D=5U8RUHFDJ\nMRJK@Q2^YO+-K]\\+;_NGP[>K=UU[3O6CO_,SZ8$SI):V*]NU96$#2!MJF#2$4\nM35%0KZZDW:KZW5%>W/[TD>\\__IY?^QA?^]L_.WL$DJQ+T]0OTB;ZH)!:U4V#\nM`*RU)&E"FJ6D24*2.IR+L;'%1!%:*SS0M"V3?,+&QB9*:7;LV,G!@_O$N"CE\nMINQP[9NN%+4/:&,8URU98IGK).R<[8F=<[,RTXD-\nML]V4Q5T[F.]ES,]TZ=J(IYM*#L?Y2^=FNY\\W1O=#"%\\[:PH)*2&$H+2AKFJT\nMKDBSF"1)L;&;DC;>)G(\\);&U$=9&Z&T_-!P-J:L2@*+(B2)+,1PC@V!2UHPF\nM.?W!$*,4Q)8DL?0Z&3.=!<UD8X">7&#'7KF9^;Z:RMKKYH_X ^=`5180\nM@E#:8&U,"(+)9$+3M"2MGT9):TS;;+>6-5(I@A#X`$(IFKKAGCMN)8[>P)6O\nM>C52*A*C6'KZ)(/\\($H;9N?F<-T.;5-C\\,SW,F921V04<6386-T@C@Q[%G;Q\nMT`/W<_B_#K-S]\\ZS`W@FB=NVIMOI8*U#2HTV!H'`MYZV]00_]3=::9RU4VXX\nM1YF/65M=X89__2J77G8YO4[*WEUSW'''PSQ\\R07L[CF\\]PPG%2&T=)UA4M94\nM98E1@KENQF0\\YLFG3O#D\\>,L+Z_@,6)U]O"P9C$<,1^/I;U45]]U[#S=\\_09&HQ$7\nM]C2WWG8WRYLCEM:W>&)EG9/K?997MSBQNL'&,">*8AY^Y#@K)T[PY/%E?)CR\nML*DG(4GB,P"<$0&M#8#POB6*(ER2`I(BKPA^1%.WU%4S+:5-.R4Q`JDTL56D\nM+J'.2@@!:R.2I$OP\\/U;;^.-5[V.K0\nM?Y3^\\@F6EY:8FY]G/!YR\\H^)PFQCV9BF*@F.//,;++S[`(T\\N$^R[0^;ND*(J8KW^WWRHJ0H2E96\nM3G+@P'XN6[2,QD/*]0T*'R@):*T10N"RE'8X1`NPUE&7*XR&F^'9QC(_A<13\nM%C=-36^F@XT3E-)H;9AR8SIZQ(-\\QFAQ*G`)53'!1):B'*"4)'8.K2.$D(S'\nM.8\\]_A3=;I+"T.?(U_^96Y@!Z>C-[A1:GSF+\nM/H/$=552E7G0Q@""X6#`:#B@;9MM8;,DJ9O.0=W4P"FM"`2*JF0X&C,8C6C;\nM%JTCZKJFR'.\\;U!:$MF(R!J$A-9[D`(=68R-:-J645X0%P,N?N)V7L4&;YB+\nMR'S%>#((`7_V"$@I"4%(W[8BG9FVDMY#65:$,*9M/'7=/H/$GH!`2D4465SL\nMZ*090H!2DC3K(*7&MU#D)0+)U(;+J3E4"J4TQAATK,B[AP^4%>\nMEG0Y8698*PJA1X^>'8`V$80P#(%B.-C*Z$*W-TN:=K!Q?+H?CN-3)(ZG)':.\nM.(X0(E`W-5(JZJJ@R"=DW1YIFA$[MVW)+3;^\\;G31<`80O",=$KW=1=6->77ZOF>8N=GYW800GE9:;REE+O">V;*L\nM9%E6M&W#M&1N]\\1"`()`H/6>IO4@)/EDPOWWW854&J7-=NFM:5M_>BRIM$:J\nM:6N*F-IQOVW'E92,HXPU(@XN_Y#9LQ6U'-$L2E%*41`K/O\\''[_CZI>\\Z,F;GCB!?[84`GCX@=MA6HF>O/+U\nMU_Q]\\/X?$6(66!1"[)5"[!)"9*?:22&$!P8!G@XA+*VL+&_F>?YQI-.N0=2RQL[CD5,K9TU..0*"LJM,SIDF>TWBX=_]KVCV#Y=&KG[J_>\\F+\nM9O=M7G+H3[_Q[9L^]&X7/?$O>?7L`)ZY[OC>MP!:8&W[.7*V,Q=>^DJ`3P@I\nMOB.$O`[$J\\NRV@?CJ#W5$#7MC^VX$"BEB2*!BV.44J&IJHUBG!\\9NNXW'A*=\nM(Q<5QS_;?>3.RU2T[W47[]OYL;]Z:O5W7J=HSPK@_[*./7@G0/[2*W_AAM:W\nMWT*P1PCQZ2072FE5$JAIT^NE%J50CPAA'A(2GF/TNKH#P9Z\nM].GF4?ZG$'_4ZR5_2),.E\nM"8F+Z]BYZIO_\\+GVO1_^.!_]K>M.G_O4A5W&09JKNO(M^]OBR8_>-WGP?9;P\n=D?)9!<1WW'/]WOFG-G=_;P'EII=R6M)$N6\nM)9^R;"1\\88BAL(,+2$BX*N`D90A00`(A4!"@@!1.4:2H%!0$2(!PA3@0;(.-\nMC8U!MK$D2Y:L8W7L:G?VFMFY9]Z;][H[?^Q*%I"UD<"0=%77S-2;U_W]O._O\nMU\\=K^']>Q//=06S[.PE:D;CDNBO2+6/T_O_>4Y-][>C[W_=;:=_ZK;2R3!EZ\nMZQ>9_^:[L'NZ_O#J]?W_U-N1>E5ZS:JI5UR1/3Y[^=^P\\*-__HW[>%X=N/[#\nM_XF49&_>,O2]8JWYDTG?RZA89E6VJ^-6J<*FN>_3U*I5,;KAPMBFBR[VI+28\nM&#^I]NW=W<%7-@UG\nM.^N-QHZ[=QV][6VC?B.12+[0=ISM&+-&6G9&*25\\WP\\"WY]J^OZ>>KW^0'YN\nM=N_`X*KF&U]SZ^\\(X`\\^1L_*;LKU(+MEJ.M-5X_V_?ETTUJU8F6?6=63%'N/\nMS)HA+QS;N<(1*HI&2J6RM5`H4*W549%"2D$\\D2"12("@Y#?]^ZN5RJ<./7W@\nMI^T='>H3'_[%W#EG@(^^#HRAS1+RUH/G>5**"$F(),(FX(0:,3_)OG_3\nM]DT;=G:DD_;NR3HG:Y*A;)P;!P0KXB''CH[Q^.Y]C.4*E"-))!VDE%A&$=,!\nM77&+X<%>5JU:B6U;<]5J]1]FIG.?B<<3C8]\\X%WG#_#QUPNT,K?TC6SY][ZA\nM+5ZM<`SEES!1'5251DMQMW@#]O"MA#+.?&"#$V-MA\\TM*T.LQ@(_^.&#/')X\nMBGK[*E:N74M?-DW2LV@T&D18^,9B-C=%,'&8SJC$Y@UKZ>SJ;#7J]3NG)D]]\nM*!Z/-^_\\V/N!\\QB%;K[<00ASU>J+7_**5FV&)FFR%[^!U.`+2*^ZGF.)&WG4\nMO(`HEL6*M]'7F69]E\\V+>GVHS/&U;WV7AZ=#!J^\\GK^\\[5I>L^-"ND6-9%1E\nM95<;;5&)RR[>Q,!`+U;/$/G(YM333^$);:73ZZUBW[?5T)T$(F'^JP.C!`MFD34=?!.OWS&*%'!JH]/IS`^V[[SQW`%L"PP@3(0E%$9H'&&(VXO1^*(U\nM";;U"8PQ@&&A6*58JO+`([MX;-KGHNM>RLT;NY@OEM&6AS8&+Y4AVV\\1*45+\nMNN3K`:$R1"V?6%AG9.T(QUL-CNY_A`UKG4XIK7><.'YTU^BZ395S!Y!+`$1(\nMH3#R%Z^W)>.T)>,`**4I+E28SLWPR-XC)-9>S[IVQ.+)':[G?4_^\nMJL3G=L"6($R(1"&?91BHU1LLE,HN%F!;DE3"(^E`?>)I2Z.@FC!167Q^E]DY:K19:\nMFZTOO?5/V\\\\]B:5!LI@#$HTYRX'Q\\7'","23R3`[.XMP$E2K-0K5!FUKNG!,\nM2*6JL&-Q1C9?AAU/\\-0#WR78]R2]E^ZDL[N;_-1)"F/[&=YR!1LNO@++<6CY\nM`;I1)Y5,D.[NP^#@X,\\>>`(S4:#(#)X\nMGDONZ#ZD5JS8=!F.YS&X;A-.QP4\\\\!__QMW_^#Z2B3@K-F[AIM>^F;ZAU0@!\nMQAB:D<_T\\:?(#*TGV=9&L&!A6F'<]>+Q\\P+$XQX.$3'7P;@.U6I-^\\VF/G<`(1;CWD1(U.)<+D`I13Z?QQA#N5PF\nM%HLM);C`LZ#1"A"I'K*9#,IRT9&B%BHB(!6/<>L=?TW;UD':,Q:N8^'9%I:4\nM:&-0?HUL=S?QKB[R8\\?P7)>@%51+I87J.0-("<8L.@"+3]<8@^.Z;-RX$8#>\nMWEX`U/@DMFV127@42WD*8C4=,8=&-2#"("Q).NY@24@DDZ2V[B"9.X2]\\5+B\nMGH-M29366)U9XND,Q6(5X3>Q;1N_&4SZC4;AW(=1J;&E-I8(L<2B`\\:`4A'3\nMT],4BT6.'CU*N52B7%S`&,,%75G(G^+X;(DC/S*=>6`;JN,`^C%21>E%$((;-L&((K`0]87(:(6(+P@A%BQ_?!^YXXRO)%\\NKPZ!^9U]/]MK-F]:G\nMYF;GQ7RAA)=Z.6-1R%CM..OUA8QHA64[K%BQ`H#V]G8`,ID,RDC&3TTS/-##\nMT\\?VH+MZ$*[!3G6@I8O6H(V@,C]'5);$^T?Q?_H-1&$;QHVC:A4\\)\\:I(\\=(\nMJ!;56IVIZ>E[:M728U$87WXUNF9T([,S4R^Q;>L]_0/]7D]WES@Y?@K/BS$\\\nMM)+!%?TTHQB5,,7HFF&2CF9BXA1!$#`V-H9E68R-C9%.)`9&?FV=\\?)+>WAXR[6T$K0#?\nM]YF;G:'B&[2^`=MR:6]OQ_,\\;-LFE4HQ,#!`,IGDAA=NQP]"_*:/R$U3?_(A\nMO(NN)+UB@*3KD+"AF4I!O4J/(^B\\ZD9,?HJ90ID31XX3Y><8[&[G.W?=71X?\nMGWC_[I_>\\_C&K2\\`GF4_D.GH1BN]!2%O,4C",*(51H2APB")M&$Z-TVD)5==\nM=05=;1Y""!J-!JE4BGJ]?F9.B,=B=&4SG!B?0"F-].LT9R8(&@V,L/`\\C[9L\nM)^W=/5BVRUQ3VE4"B0\nM3":Q).S1XYV\\*3D'0L;`&')B?9\nMO7?_P5QNYN_JM>)=\\61*'=CST!F=RP(((1$H$`+#XEAOC,%@P!@,+$UBX@Q`\nM3T\\//3T]`'1W=P//S`D`0T-#7+1Y"T-#PSSTDUV,3TS@URI$S3I1R2%P;6S;\nM)5+0;)0H%&9FIW+E?ZTW:I^]<,LU1Y]\\]#[.%O_L`%(@E$!:$LNRD%(BA5S\\\nME!+;DMB61:A!GR98SDU`:4,8&;2PV+QE,RM'5G/\\Q`1C8\\?)34]3J]99J$>T\nMJD?9V/\\$ZS<5Z$S5OWWM;>]Y]YH+OV6^^?F__U_;7A9`:XTQYDSX++JRM*99\nMNAXIA3(VSR;?&(B4H:4T860((TU+&:3M,;1Z+?U#:PA:$4%+\\?/)B/+XIWGE\nMAL_3TPY10%`\\\\"[3L7'Y]I<%D%*B8?'I+X6)-N8,&`BDE`C]3`C]WBV=]#R-#9`0:B38"'8&*!$JQM-I=_A$]JP-::\\(P0FE]YNF?\nM=L`8C8HB0BT79^*SBC$0Z;-$1TM"E\\2>+3Q49NF_AE:D"((0K<"$GPF?)8C3OR-EJ`6:4CT@;+4H\nM+C1HU:OHB&<@SAM`+$(((;#D8B(_D\\P"N>3&Z1%*A1&-9H`1%EI*E!:$2XG;\nM.BU^*?Y/@T3*4*SY:!52#PT5/R*LU!8!EB">B^!9-D[13]J1%&VC82=^*X;AS+B8&TB!"$FE\\)G4:C22@[$FMI.+6EC92"0-8I9V:83Y_BV[FC\nMQ-,9>C,7D4J/,!WO)@SR3)_<15`-B)D^8DX7MIM!.'&,Y1(::#::Y*8+3!:;\nME,I5+MFZE57^XZ@69UP0Y^N`-AJCC3!G`EP0VDWF$N.<=)ZDX=:0:]L9;KN!\nMWO16.A/#.*XDD#GV!=_GU.S/*38GT6A2R6ZHML%<)U8MCNN#5(+0K].LY8E4\nMBXO7KF.MW9DWC`(.Q/%%80X4U5*!18:2,YMASO3Y?/HF%\nMC9'J!UJ9-P=!Z\\8H#->'IK4:24.459ENT\\6%J8V<*D]P@7,!'9DL81!R8N8D,_.S.*KP]:O:GKZ_\nMI2VIE<$HA%$4C>'>Y]"_/,"Q0T\\`5*[<^?(OAV'T%;>12DYVC7W0LJRW57W#\nM3#FD'$`JV881/O5&C1/C)YB>R6$D^"T?ZN`U/1:B(KOD+D9'1KGRTC@J5)3*\nM)1:*16K5*C]LQ!YYL'CYYQ[[B\\>?2^^O#W"Z//KCNP#4@;=X%:74)V.NMT>)\nMS(USU=;5%=^L3*MNU@VS:V;>/8-K;M+"U'%$[*971HE/YL'[[O4R@N\nM4*U6J=:J5&L54V\\T6I9U?@>FO_9KE>#3`<#DM5\\Y^F407RTWQ^]A":6%7/!93A]]]Y'Z[W.\nM=9P7&F/26FM2R11A%%*I5JC6:A.U>NV3M7KM2YX7*T_EQCGVWI/GW?=O]9CU\nMCL?O6-RU:1UW76^'8]NWU^OU%TU.32:%)97C./7)J\\N?U1OU3KNL6#QXYP+ZW[G^^NO[M\nME6^;;\\)6^,3TQ^/OV/MV^VU[_NKW+>G_7OD?%$V@`````245.1*Y"\n"8(*;\n`\nend\n 6579 collection_account_write_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```.%$E$051H@=69>9!HPHY=Q,$I)Q5LXI2K8@J3V"EC%TE!01RG<"K&E.,*\nM)$$*1B1<$4+".CAD';O2GC,[.SLS;V9GYKWNSA\\SNQ*'D%E$G'35JWFSV]/]\nM^_3W]_OUK]^#_^=-O-\\31"[[,M5:*"[<=G&B9HP^\\/@^7_8THY^\\\\YR,;YV3\nM4<[0!K[X?3*/_#%V9_O'+E^SY'O=+?&;$T/+QCY^<>NQJ8O^E)F?_>U[GN-]\nM5>":O_AGI*3UPQ<,/);SYYX9K7@I%4DM:VUO^:A4P=Q?;>]ZSW/(G5O4_^^_8>6_>6UHZR_Z_FS#I,`]FQ=\nMPUT]JJK1<,M-]Z^:J>WY^8LY;U\nM+^TQ`UTQ\\9\\'TV9X1K_6DDK>D9AWOXD@NH557ON@TK[NX=\nM__E:F1[^NY[]YKX'^C&WGEP$P%V?`6-(6D)^(A9/K/4\\3TH1(@F0A-A4.:X&\nMS3.M7UM_V?JU6UH2,7OO:(D17V)%8DC+(1YQB$>L:CN3.U?L_NVC`^YA85D2\nM`Q@#1F,TC*FB^,>;T@]UW=SQ^!VW3$U\\;-W^YX0PZO[;)_G\\30GT)T?`?K<`\nMEA!H;;9U+]]P;\\_`!9Z?/8JJS&+"$J@BY5J4`\\Z-M'4-_2M*>PQB!`;0V&&W,D;5=6R_8`10"XCHV284O/P$:OYD]0LUII^\\`M6$)C\nM"<.>21A-KR$N6FF*1%G>YM+<9)&*6#1Y$L^6N*X@XD@BKH7;_DET*H;E:6K&\nM0HWOP!O[$9-M"3%]Q>H/;8X]P]"Q(XP-]YL?9GZW-K3IZEO;]KUR9&6*V==W\nM?V$1"E@&"4:8`%6=)=J]C=6;?X^.&`@!F8-95KV2I35FTQ(5I"**9,20\\#2N\nM!0B0LGY9@&U!=&@;YPT,<'@:CL]DJ,D?L;._A:*JDA^=YW$*V!880)@02RB,T#C"$+7KX73=4!.;>P3&&#`&0^/3&.J_\nMI.[H"W_7Q!))DA&)+0*$UCPGX+'\\-/)`GC7>!LI>M?#(8U-/RQ,71V?4B3MB\nM2U;/[MWYXT4"R`8`(5(HS)L2<3(6)1F+OMMA&UR&7*6979E/,>N_3H<]0UMO\nM>_''AT9V''OY>C\\^4[@WTWG^(7O7EX#G%@FPH$"`1&'.82*NEJL\\.G411Y=M\nM9].K+S.]_]G24RO8G2]=.6%JY;\\NKA\\X+O]M!T'PW"E[%@.@Q;P"&B-/$50J\nM%;36V+9-K5;#\\SRJU2J>YU&KU;!M&V/,V_=Q/9[<-\\.3;@>=F3(#IHVDC#TF\nMX]<\\VU;<`EC1(ZC$@T6]08&1DA"`(2*523$U-\nMT=?7QXD3)^CKZR.=3I-,)@F"X"U]QD9/`!3!]"-(-9*\nMD9F>)A:+4:E4L&T;(02U6HUH-(KO^R2328K%XD(?Q[9!-/%G.]+L"6W.'\\NR\nMFF$V]OT-*Y9.HD*)L0#T&>U9U$YLI``3(E'U8D2`4HKIZ6F,,>3S>3S/0TI)\nMN5RFI:6%3":#;=NDTVDZ.CHH%`HXEL,_O)3GD9)-^W"637*.A/,T:P<.(!R)\nM%"#.4O"_:P`IZVE]=&YO;U_H\\\\BN*;X]\nM/@*Y#L=5@ZF,+V#-(!A$!8YMP"V%)CC#:6"$`HM*@#*1623F>(1"),\nM3T_3T=%!-ILEF4Q2J5000N"Z+K[OT][6PK-[TWSE99M\\+F3]B0R;UML,;1FB\nM,NTA;+`<0!CD8A6(#U[%U[_\\.<:GIA/9;&:#-GHHZGG)GQ0MTRM>O&1UODJ'\nME<X+9;?HOI7'Y%4"U]NZ>S=>N&]6OBZ:F,R&1G\\>(W\nM`\\Q,#DZ0JE4CO;W=PO,BS,SFB40B#"SM\nM)19KXOAPG+'9&&$84JMIQL;&B4:C3$Y.TMO;R_CX.%U=7>1R.:+1*!AX\\&OF$YG\nM&!D9I;N[DU1SDFJM2J52(3TU2:%BT/I:;,NEN;D9S_.P;9MX/$Y?7Q_1:!3/\nM\\W!=F]T'LMR?=J`\\Q];0YXIU4:Z_80U&6E0#707L;$QNKN[R6:SQ&(Q@C#DM4,'V6#-<<-U?0RN\nM&$1:):9G\\L13;:=NG;%C?\nMF(0^Y4)O;DK7C7NCP?5@#>?OPWD`0Z@T2H%6#>,-B+.(^XX*:*T)@A"E]<+J\nMSRM@C$:%(8&6Z#=-8@R$^C2C&QEFWEWF(>:-#Q=`-=5J@%9@YJ]WMO\\=:J'&\nM+X5HN$L0UJ^P#E3/%@(AY!L4,(8%8^93XYM7>OY[J`Q^53-;JA+4:N1FRM1*\nM173(*8A%`X@ZA!`"JU'/G`IF@6RH,9^A5!!2GJMBA(66$J4%@6ZL^+SQH3[-\nMY^L`.;^"5@&EP%"HA`0%OP[0@#@;P3O&`!@CA'Q#+IMW(R$$MK`)JA7VO[Z7\nMUTZ,,^R?9$E\\D,'D.J).%->-8CD1D!8A@D#S%MA\nM`S"-2R]V(Q.-'";EO`)U%6QI(Z6@*DOD4Y-D$B=Y=/P71!,INE/G$T\\,,A'M\nM(*A.,S'\\`M5BE8CI(>*T8[LIA!/%6"Z!@;GR'.,3649S<\\SFBURX<2/+*B^B\nM:BRHL/@@-AJCC3`+#BX([#G232,,.S^G[/K(EQRX?0\nM-@T(@7ASAOAE`1HVH[5!-?:"`]7=3!0.LWGIS0QU?!K/6H9MN=089=0\\1TI=+Z`FIR@IUPD44RSMM5G24JC\nMJB$F7B,5M5`U@U8@5",8WRV`D!()OF7)JF59GI06(-L^2;'6))6,X.+2D6EER62\\9F>&$/H$\\*HD18]6%JTETQ*EU=A*L\nM&,`5#I,3$PR5#]$?F28,?%3@HZH:%83*:(Z>[;G9F8-8V!BI=FAE/ENMUK:'\nM0;`F,+452%H*U8!L*2!32//2H7_!<0T=;9TLZ5E"2VL+Y;#$S/0,1_4Q\\BI/\nMAVGGO/@Z3N9/T.5TT9)J):@&')\\<9C(SA:.R_W1I\\M4G:]J26AF,0AA%SAB>\nM.(O]9P8X^MI+`(5+MMSX@R`('W;+\\=AH^Y&O6Y9U>[%BF,P'Y*L0CR4QHD*I\nM['-\\Y#@3D^,8"95:!4K@S7G,A#E>D"^P:G`5EVR*H@+%;'Z6F5P.OUAD9SGR\nM[*[<10_L_OR+9[/WEP>8;__]]$\\!U*$_\\`I*J6]%7&^?$JGMZ6+M\\D+%+$TD\nM4I:4'K;M8-LVMFWCV#:V[33*$843=UDUL(HEK3U4*A6RN1F*Q2)%OTC1+YA2\nMN5RSK,6],/VEGTI4OUL%&-WZ\\"]^`.*'^3FQM!SDKVAJBGS0=;RK',=9XMBV\nML.8A+'L!J*VUC:&^(?+Y//E"GJ)?H.`7\\4M^NE*M/E2M5G^Z6(#W]&QY\\_V;\nM,>`XMC7DN=Z'7-?[3==U-SJV';%/`XC'XC2G6I@MS)++S9";S06%8O$)O^3?\nM/3,[\\T(T$E&O_\\GA_WV`^?8[3WR"R8D\\+6W15M?UMGJN]QG7<:XVQB2TUL1C\nM<8(PH%`L4/3]$W[)_Y9?\\O_>\\R+YL?$1CGYE>-%SG]/7K+>]>%O]U*9UU'6]\nMJQS;_ERI5+IN=&PT)BRI',?Y][E*^<\\/OO[*WN7]`V;7IW>]YSG?MS?U=YW\\\nM!D:;J.MZVV=F9SX[.C:ZIU0N?<=UW=PKAP^Q_XL'WJ^ISUU[U#P"&^&>B6]&\nE_^CE+]FW[_O#7[5)__?:_P#II'^^>EO%T@````!)14Y$KD)@@CP"\n`\nend\n 6580 company_write_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```-84E$051H@>69:9!5D"()@3AQ3,I)P)`J5UQV7)6BRA7L4#B`RZI*,(X#%N8'MD.*\nMV&`[-DL??O>>\\[)C]O3&B&0!FNF[SG?\nM^WWO]Y[WZX;_[TM*CZ>?_6'RU,29\\,29Z?_S\\XW+W>"1KW^+8R%4N4#'/';ZKMMONU4<./#X1L3YCNNR`0"@\nM->%PF-FY)3+I148&>\\3<0OKCG_N'+]QTVVU_PN+BXH8<\\W9K8P#4EQV.LIPK\nMT][903@:WURN.E]]ZMM/?VIB?+SCB2>?PBGE-O(X8(,!#`WV885L\\OD".W;N\nM)%VH];WPRJ'[GG_EIT\\90EWSC6\\]PW?^\\YF-/')C`;0T)VF*Q1D_,PM>E=&1\nM$32V>69F\\883XV<^,["I)9;)K&SDD>\\,8/^_/LE#CQSH>?G50[NUUF8FDUG?\nMAJ9!/);DT-&3Y+-INMJ;0W#``UCO]8WHNC=)Z\nMYY'CIQ_)Y@K/*.E]Q2TMCYV=2ZO1;3O>]AGI2X00;.ILPW&J3$[/D8BF230E\nM64Y7XZ-=K_8C:;6U\\V+@=`7V\\OPC`8GYKLRN<+=R/,WSMQ:N*)WDTM\nM7_Z71[\\V]_$[/GK!,QJ-$(*N31UXKHL`ILY,L;*2I2D692F]\\CY#^W^46ES9\nM?^>==[)___[+!O".%`J%0H1MFW`XPN'#A\\EETOVIQ95/'SIRZG[E.8K$F\nM-!'2F2+%4FE7-I?[V-D31\\5O?_C#OT@`J\\%H6EJ:D_\\\nMX*7G]G_EL4]N[X]W`!K`=3VT4FBM4%)A&@;#@_UL&QTFF4Q@6#&65BK,I);^\nMU#'"[UG:`$5ZQQY8"Z"G>S.AD,7DV13#_5WT]0^9LW/S5R_GJ@^DTTO7=?=M\nM'0,(VS9>O9$-0R`,`XVFH[V5T2U#*"E9D!Z5DM?GUBJW-"62A_J&=S`[=?R\\\nM\\P#QPY<.MKSZLZ.%4KDJ[_N[NW]^`*O+,`RBT3A'CD^0C-MT=[:PG"TS,37W\nMN^%(XAI`"R,@E&6:1!)-&(:@5"KC>3[Q>(RAP3Z6TDO8X1@(HW7DBFLIE5\\!\nM8#XU2W=/']_\\C^_VA$+V[3.IQ2MG4LN?2#3%\\A>+:QT`!*I.BYZN30A@+I5B\nM?F&1YJ882LK(S-S"]F1S*THJ-.!Z'I6*A_1]?-]'2HE6&L,P4%(1LD/XTJ.:\nM3V.&;!X_\\`0OO_R*_;E_?.@C)\\>G[U+*VUVJ>*]=NWLWM5KUXHF]-(!`&D'0\nMW)Q@Z\\@`6X8'$4:$Z;DERL4LMA5T;[W\\*%7_J352*GS?)YU9P75=A"&(A&T$\nM@K!M\\3O[;N`CM]_&BR^_<>M*MO!@)KVX^_#A8X1"86P[A&%?^C>Q9\\]UH__T\\/Y[:Y[Z?%]?3U-Z>86JXV,8!EJK2\\:V+@KYOD0JA5(*\nMU_4`&!T9)!JQ02FL4!@@H!I!YH4.?I=2LIS)X7H^@>P:A,-A$$(_\\-"7;U[(\nME.ZO5*O#/?V#HNJXF*$PW5WQ1C4W`(#&M$P,PZAGSR86C:"DI"698'1T&(2%\nM)Q6%0@F%0"L=2*E25*H.A6(IJ*(0""/8HZTEN>/XJ:E?#86;1EI;XF26TP@S\nM0CP66SUV76M=%#+J%-+UUZ9I(I7$]3Q,PZ"_KQM#&-AVB-4+,*``Y`M%/,]'\nM`,(P$$(0B83Q?;FWD"_N<,HYSIR=06J3X:%^+,M"2KF^Z-<'0.#[/DKK@$)>\nMH"R^)_&E#`+T?1`0C48:@4/`_V*Q#&B4UGBNAR$$D7`8*7VK4,B)=*9`<[*-\nM7=M'Z>W:A&$(S#6-*U]]D<]O;HD^__L?_(N3O[;U_LDKQ5Y]1P]?Z%XW`(UI\nMFAA"U-5%HY3&EY)JU6%^?@G7]5CK*)36N)Y'H5C"J=6`@#ZF9085"(=Q/86O\nM+`8'!MBQ;0MA.X360?54/0.V".E/3(ID\\::K[FI.1A_NS"_^;4+HO_[TTRES\nMP`[.6E<32RE16J.50DJ%5#*0QN4LY4KEG'Q*50]"H:2D7*DB9:`D0@@LTZSW\nM0)BF>!/;1K>P97B`IGCL/+D,DB'4<\\YC6WH^],OW?LW?OF_LA6_:OY'S\\SL=\nM#MS8ALR/KQ>``*=6PW7=H`?JS5RI5,EF@QG7,DU`8!@&`@$:0E8(0Q@-<+I.\nMP:!7;-K;6^GH:,/S?9121.U077H%AC#PPJ7.UCVYA_<9WW__\\;$A7GE]+]^+\nM755KN^'ZOI&C>3O55G4Y^)?KH)"&IG@OH(_/V=[7ABM6:6^A/,\\'!C1_?HN3\nMC6Z/'KS";/NHZV7;K*H#O,N96&N%YWE4JPZ%8OEOF=[[4-\nMXUP/**5(+Z^0S>8#4:A;#@.#Y<0,KQH_%O]]XKB8F7:(Y%ODP<-3/XHM[U+.\nMZ=0#?_S/]RR<.78HJ/[Z`M=H'5@$*17E2I5:S6T$9ED6@D!U`JKHU>*]=2>,\nM>@^8IHE&LY3.T-O317-SD$O'\\3A>DTQ.2MI"/KN[MJH7QH[\\^*5GWY]OSJD?\nMJ;''_OV^WSQ"S7]\\_0`,PT"(8&2TPR%,TT1IU?B;[_M`,,4)40N:7:GS;E,I\nM)95*%0CN$:TU:*A4'?*%$IV=G6@IF:KUDQ_FYC[X''M\nMM#]='7OV!X?:;U!>^C.-?===@=6?IF$$.JV#R4M`W>QQ;B)#!Y??FG%-"('G\nM^VBM<%UWS=Z*;+Z`4ZTPGFWB8-][T42XNO)+3)]6_Y5MVSXY9%C3][RQ[WM_\nM,S()4^>"7Q\\``;Z4@<^I4TB]Q:>L]D"E4D6I<[*Y)@6$+(NFICA+2VD@!5)9S/EYC@W+BS3'RK-I4+5SPZ8G#8+BR'UW7F82E\\0WJ4!:`A9\nM5N#EM3[/F0J"J@34@(G)L[1W=`"!4IUGR(1HR*I3JZ'4N40X5S;S\nMGMD,P]XRRDRE/G;/MM-.I9+_U*-_QO]\\_^W#6Y<*K:5076-6L6$8!I&P'5"J\nM_O[59G[K'JL78JU6:Y@[%!PI]W.H:RN]J1Q[=(EB_@2=72ZM+:TDDO9%8[LD\nM`"$$,[/S=4\\#6ND&32`P:-%H!(UF9*B?>"R*E`I#"(SS:%2GFE(X-1?/\\U"^\nM1ZK:Q=C.ZXDL5WF?4Z*R/$;'I@J&*9!2HR^4LG<'``%5QVF,A:SA;H!(X_F!\nM>XS%HEB6V5"@M6(JA,`T`PK5'(>P'<+1G8QMNPE/V5R[M$*K7(30#%*[%X3Q\nM

XZH645"BUV@.!M:!N)58I5"H+CG??0&5S\nM'WUC*7:&BVSJJ2"L&K-S\\V\\1@@EJ;.ZUG\\3U[T,0IQ7\nM`*UU8\\PT#-%0)B%$(_GHX&-'.V0A?9C=M-@$"3];HXO.U&R/GL\nMR>5H8PHC/$\\D;-7MBFI8D0T#8!H&AB'J"J2#9EZ#P#3K/5#7?B&H?_%GT!!7\nMI:AX<6:NN1DOT<9UZ1R#9HJ2.T;(5OA^,.&M)F4#`0@J50?7]5!:X]1<:J[7\nMF)Y\\WR>S$LP%TS,I*E4'I^8R,35#>CD;@-::?*&(M$QV#5H,CYUBQ%DDG7D=\nM.UP#+1JW_;M=E^P!80CFYY>0RF=`:^92"]2<&BW-2<*V12ZG22TLD4PVD\\L7\nML.UP@T;-S0F:DW&<:I5,)DLL*OEU]R@+\\3(_.W22SBZ3:"2)99G,+Z2Q(Q&*\nMI1+E4H7.S3T;`L`!YI16$:TUEFEBQV(T)^+8(0NW5F-^88E0)$KC$SP1-',D\nM',(TP]B6B1,)XWF>Z?FJ=65E.3<^?LR/QB7]?;L8Z.\\C'H]3\\WR4%GB>3]5Q\nM3`2+P"5+9`%@>!+\nM"(M+`J%[I95V-3N[LSMW]W1/=[_\\L4+(+EFL!,JOZE?=-?5^_;Z?^KW?O-_K\nM:H4SM$*A8*U8L2*CJJK5:K5:[79[3M=UN6O7KC-]Y!F96.C`@8$!;KKI)K9M\nMVS8\\.CKZKN7+EV]2%&5X;&S,_O6VIZKU>O.NZ]]QXW?FYKY`N5P^FYI_PY2%\nM#MR\\>3/M=KOOJJNN^N;E5VRZ*I5,LF?/;I[9]@2[=OR:7?N.['*[W%R=FWW"\nMLBPZG<[9U'WXS109]KSW/9/WZTZ/2M\nM&;Y@[9H'J]5JM]5JG4W=QVW!2VCWGMVTO:"QKJ_IO_G2VZQ,WS*4L$W4G,`O\nMJ;SWTH-\\:MU%BY*=*&D;*#)$%28A$'4[C"Z"CUY;Z!E9K8P8'WCW_G7ONNMX_(TWWLC4\nMU%1A_?KUUR]9LN2*9K,U],RSS\\H=.Y[_UNY=.[\\^-#043TY.GCT`4Y/\\VWT[\nMXD>_O/3=YI`RRH!AY^\nMKLK!KVV4_LS1)PU3W1%[E4U*Z"9C=XZ@,4%0.TS@5G]L909NT2=VOAC-'9*?\nM?61^661S.1#V4,;P_VY%MI:WPS)+TW6N7!'2K4^DJW(@=?V[__#!B?&QN-%H\nMG#;`@FN@^/XGF;AG;;5;'_^N9N??0.1_#$4C\\AMT.^URQVW<%>U[Y(5['_.X\nMZ[&7X\\X=S%*MU8,UV=+IJW;=Q).ZR7UKY^E#\nM/[OG[`$`++JU@AS[FW#L2.<;WN[_>8_N3?0'1B_-S.4/[TI^GOW/V+?8:^Y]I;,4''YSE__5*T:2Y`;/CGTF<]YZ[_U\nM;6.D&Q;K87A9!:Z1\\"BWKJ^@M"?F,H[NRL[68N>_O;+_S7JS>O?//!FLERSEMA\nMH_[\\?LSAE93RH]SWF>>8WC--N>Q/'!SS_LGKR'M`">$V*O>>AQHV==\\<^JQF\nM9N\\`B=\\H>W[UT.V1WO/5M#[&P$=/6SL`ZBGI%$&Y_(SYNM<-?W+#AI$;7#>T\nM]D\\''/85,$P*OD*GVF<L$U+7;O[S!5CA9%FOYI'/-*;!U83L_->Y7\\AS:9\nM>XI_NN5H,VX?/'20,6WM]'>=K^U;^>>;K?=\\4P)KSPA@`35PSG`B8;UQ?+S&\nMW&R'DI%C]G#`XF&?7DVCVG1YY$B5H[Z*'POF6CXX>@Y#NR[;G7LXU*Y;=-UU\nM%WRP9R!_[;@87<[YR41ERS'YN\\YP&XY;]UH;:ZX9^\\\nM=@!2&H!>?.JIJHURN<"@LXD\\UB`T-,B8X`@RQ\nMN+9W?_];WK+J/S9?M?*Z(W5)T]!)#Z^GN&^"F=2((A-3`U*S!Z0,WB0L[=RN\nMHO\\MYG]&M/]HP0"G7$)@`E9?K2;M`P=:3$SXX>3N*8*:S[X]+=JU%H=>&*,=\nMF+0;=>K=*"9CQ:1,R%@]J9[,U3V%Y.8#!ZKLV-_@%T&JOR?"6B\nM5(7)V4@/'?U&,F*$I+Y@\\?"*2\\@"Y`!H`D0(>K7=$,7RDW-`DNUVD]W-#,U#\nM+6HS!C*M^]C"PQ)Y++W@AF+M8X\\=-FS;(79LD@F#G>D>!B8G>:%RB,J4@C14\nMR-K@Z'ETM0\\XP&ETXZ<`N//850[._]L*3PAC5JJB6)V,:&^M\\%_%'`=DD7*Y\nM3:Q9D!!=;#$S#R#RD>:L/GRD`T.FXS02V,(W(6\nM.+J-H?41RX6K/S6``;042,X#*'H]67!:OJ+BQ1!T8W[9&"0TD\\2F`%N`*50L\nM4<(2*S&U+%9R'82`,1L$1L_4UJ:Z56KTQ!9C4E">BHC320]'#W!$'D,;();P\nMCI_#@U>\\2@#%!*D;J-H`0@.AS>07IX-9-\\0+)(H5#&ZTV!9?H*Z[*=MVO.9<_0I''T%IC;()T;A\\Z<\\\nM3RP0(&F@0!JA%J2A@5"/9/J=HN9)$!%8&H>E3:P:D#9?!C"T%HX^ISAZCJ$,\nM80DGBF00OEJ`T?6]\nM>)VHN*_D)5J-KHLI2E6IV(&M@ZT26S;C^NL(^E=`UP!+F\\^"H6DDC7'%%I?U\nM+\\U0ZW6F0L>(W$"!G""A-;A"WT,ENY*J98,C="Q1)Z'7\\EFCT)_6TWXD:WM?\nM+<`%ZWHH5;H#ASIS)K%Z5$GHL[.Q8@6V`;H&IDK%ET2Z.E\\O+P,X),VQV!)D\nM$RK64/K(+*KF6CI8*FW1QX["Q;AV`0P-;%U@"H^4,9TMF,.K>HV\\(N7AA0*<\nM="?>]RF%I-5F4-DVN*38(%6@K&2,U@RJ'24-R)BH3LQZ=R=KW`.0L>;K8-Z3\nM3C+:WY]HRX)QA,)@<+"$:GF.`3D;T_08GGD6RXGF-["RR.EG4-G`\nM.8441U2=FFG('N$.?$E^U7*FQH0UON6:39^Z^-';;WYO_,5[[S\\S`%#IQ+&2\nML,3X0*\\82P\\F]ETIPIU;O[+["]V)R;^J"$6K"Y6#N@`%_$@AUE3B_O3CPV],\nM?[MKU#:\\?K6V8]:(PI\\<*>?TV>W?4`Z5-M9#\\JZN<\\#4B.,#:(9&=BC]^,:-\nMW@MKSJUF!T3U\\>]/1#U_?,7T2&\\WZW]QX\\;*;4\\^Z9=6KF1PSYZ3*CWI@6;?\nM/PARJ]^)6]IN)H9&\\W;QO%;?E:5FRU-N`.4!0)?'0!6AE&'0V$33WJD5F=H\nM=5L,_X%#-NKBIJMA^>F\\=_Z`D[KFPC2AZQ>C5KL8N2Y>HT&B5B.LU\\EZ'D&S\nMV1-,3/P+,'[RE7(:AWHI7U*O`OI+7I+$`V/-0X8U4Z/A-VEWVS2#)E6_2MDM\nM4_$JM/P6?M3=)XI@(\nMB./XE.?>TW@K80&2^<[T98!8AH6')Q\\QMB5:=/R`IM^D[M>I>E7:09LHC"!B\nMWB70%AZDIKR]3RZ?/O!#`JD0Q3&AE,>'G>CQ*Z@Z#0#[!`#!?!GHI1A_Q3/E\nM9\\&<@.X)L_[NJX^>*'>E1CN,"4XB.F*^AWTIY"QE0`!&"9V`0`7OMV:-3G(O\nM`27VR-K3W8[`;7(<(.3D(&<'0-%!$S&Z/DTJ[A">`/"[Q+]TKX0N>6,>AQ%2AAYYJ[+'."_^<>+-:L$,#EP0'WY2<1)((8A\\\nMG]#S"+M=)5*41@PSKPV`8X&4\\WV0?0Q`URLDPX[2U4F$#@6S2-;(DA`)',TA\nMCF(\\W\\/S/6KM&M.-:5PE;I,UJD_U;XJ>MJ]2,=3'[[SODEL>`*7!?)YSP`I@\nM%9"%N/N:`&3,EP'F>_\\NAE;%*;CRZ,VT&W4\\<_:7,^FOWZM*%56J$$$<=678\nM7-K7G;OA+V-AYC2MT!:]R6I7$,6VKF,)/G[3%DE?6G+GFN/3/;Y`60L'2)N_\nMG8$`76N0,MO(RY&A3J2*_>XYG[N/9_;`/>OFXZ[Y&4B682@?40T]5RB8[62O\nM6:MTZ394U<(2T`DA;R]8RID#`.@J6`(]H?N&)>I^PFB%8OXW3`WR=T.06\nMQ'SMZRI&VF3ITF1;R9BM-(J_O1FGI"G`C^:[TK,*D/G-&L@6K4XJ(5J>;;2G\nM`TEDBOG^WK$A?8*80NK83`K9HL7J9>GF$RU:%P]9_M1,Q%2LH$:2N)`\\RP!I\nM$Y@'4!W!HD5)MR/I]/?9#;\\>,8EJN)6ZTOB+:UEQ]?4L]!!S9@`G%+&5,E@^DG1_N+_MG=]G-Y4<\nM_&HNF@<8$//9.F:)G_TC81BM*_0-]%J'SZ5D6XOC_WUTX*<]Q>SB)4NX*.&L\nM,A_]?"86U,\\N0-8Y%J&2Z[58NBC9=K]7"?1-@\\U+TCK[S2[E6)'D@9QS/$S7\nM#:0,IAU=^W;6%D8VF]JJ*;3U./QN2JBYGESV12EE%+W"AO6J`;3M7T'ZKM3[\nMSY$]8@E[GM;;//A4M'O=FGI4<.CK0%R9448^>*LR=^V'Y8&7N+-9#AX\\^'/;\nM<7[A^X'2[7;C5:M6X;KN;6$4*:[KQG$<\\Z,?_>B,`!;\\J8&4$L>V/U_L[?W(\nMX*)ADLG$B\\3AYE]MV?K)8E__AX8&!T@Y]G9-$U=+Y,Q##SUT1H).UQ:<`451\nMU%0J5;8L:WLZ86OY?&Y?O5Y7A*8>M0VQ(YU,J+E<;F\\8AE+*TWM!^VILP0`C\nM(R-QK5:[4U&4>\\(HTL(P;/?T]+0T3?MGX(MA&&IA&+:!UO\\GP/\\!23H,Y&L4\n.QEL`````245.1*Y"8((P\n`\nend\n 6582 customers_add_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```2;TE$051H@;6:>91D5UW'/_>]^[:JZJKNZNIUMLXD,PG,\nMEF8FD\\5D)F8&),$3%51B)"!$B"`<.9Z(>E""@"@817##')4@BXA@%)&,(6XA\nM3";)9$AFR4S/]/0LW=75:^VOWOZN?]0D`9?0$\\RM<\\_]X]W[.[_/_?[N?;][\nM7PE>8NGO[[V]]P^U?J5;_F/GY^9?3Y^\\I\nM8J4=]^[=B^NZ0WOV[/G"#;MV[^G)Y9B8.,&A)Q_C^.$G.'YJ^G@GXLY:=?DQ\nMV[;Q??_E]/OYHJ^TXYHU:U"(ZW.V?%^O*LO&[+-(=XKQT8";K^@P>6YV(#.T\nM>>W6+9N_6JO5HG:[_7+Z_7Q9<0B=F#B!ZX7-;4.MX+77_8)=&+H,$;LDK1F"\nMBL9MUYWAT_L7:HORZM`TC[Z8*:VOK\\^P;9M.IQ,*(52]7G]Y`7[[S1N09D9>\nMOFGK5:M[_"3GF`@5HTF+&$@BG_'5\\)Z;^TOK-VECQAT_/;GMI^Y]?OSMM]_.\nMW-Q<_XX=.VY=MV[=KE:KO>K0=[ZC#A\\^\\L43QX]];M6J56FY7'[Y`"Q=\\;&_\nM>";]S\\]<UPZBWM%G$GEW:JA,T9POIYPD[M&W9AY.W&S+%GD^I9\nM]8-,"*UT#I30>8N6]++6J<>T!WBC]$$OP20B<)FD2^.^]WFO&K:_[QWXA_?:'@SPZ$Y2*MPPT/'LU?M'U(3?/*1\nM-G#_\\V/^X%U749F;W[FJ$%^JA572SA+$+G&[0K_M\\:Z?V+P[-/]S@S82/7O1\nMWK.B$-+)Y3Y(&*[)[]SY8S_RI8>==SF;;WY[8=7`AF-/?%.KF>M0.^]9]8E/\nM>CN^^!5S+(H'&G%\\_1*\\1L&_\\HX=2PAWIEK(&!WE5[>+I.,D;H5@^111:_Y8\nMKE#ZB!$M/";=\\_$?_E/EH@&^SXOLG0P-]5*O=RY[_>NO_+U7[[W\\M6<60WO]\nMM1NX8J.#]LB7L-9>3J4XSOV?>)J%B07FYX.9,U/>[WB^N@]$#+_`TE]>@18W\nMC2^HGWUGHI<^F[>F&'G/1?L.@/:B=$(R/W_(>M6KUMZS\nM<^?8CW33L6Q.3/K,S2>K$]WX"!GK)AP#N(S2\nMG1.B>->-UL3`>Q^;;:7NF;-GF-*W+CS@_/6IR^_>:[_Q\\PK8\\I(`5K`&+EF;\nMS=HWGCM7I[KL4S'[6#X?LF9MP*"N4VMU>'BZQFR@$:22:CN`C-&'J=_2&U4?\nMBO77K;[EEJUO*XT4;SXGQS?PREQV:?\\7Z!]_U]JS_\\!7MFS9>62J?-_?PMN_\nM;$BM'<7O_O\\#4,H$C-+!@W.%,V<\\@@"RHQTL&XX.CG%#H\\[\\_!)GXP&"N2:I\nMJ4/!@HP$4ZZNGYP<_M$??<6?[]US^2W3#47+-,BOW<'`J1D6>\\:$RLZ-*-T9\nM42K\\86GKET7"^$VLSR2X;UTQP(N&$%B`/52O*^?TZ38S,T%W0*-[1PFPT:49)2L%-Z+"C8`SVEPJM+_;F]IT_7.#S9Y%NS"?->BJ82\nM#D[5.+*44*E!>3DQXHQQ.P4Y1LY8L?/P?4/(!M0(Z!)D#$;5;K0(YG\nMG!8G6@5:9]O4%TU4W@API(66_[MW\\Z;CI,AS3CDLB;'\\B5&RF6.\nM+IUE:4Z@3`UZ'<@810QM"#C-163C+P+P\\0NM6M7=;:4GI5E5FARLE1/<`TO\\\nMS4`?I]4`\\_,NJ6Y#5D8XIPF]-F0,1P,?1"E5N[]BP.80%M`;A1T$$8CUY]I!T+#2R&,4AYMCA);\nM.5)+@B/!DAJVG,.65V#KO=BY;1`#YG(8FJ6Y`RWM@-(II3932C(_EY#FV]DGG-(#$-<(R(\nMC+&$(XM8&UO84FG,>=%*4XS#=,T[8LQHZ\nM!M@2;"FQ9!5'NCC2I%@0Z)V@9[AGB8RA^5Z*D6ER67&&AAK&M9RN-2W.7%*@_[50'UN6]G(09DQ\nM,TFJPN@'!1C?,8CG)P.G*EZVW8PZ6+)24\\(.'0,\\BG!X(T0FV'I7\nM!5/7R9GGA".O'UY?H#Z8F8LS9M()!?1)LGJ37>8D2_DQ:DD%ZB=,IA[;3K87\nM9+H^G-SW_K13/)*TL\\$OJTS]Q#/CG'\nM^H&BOG;#JFNS3D"<)DZU.'[W].)T6EXN5]V.^S@1][.3;V#0X=LK!#CU(<'?\nMV"ZCXIG1=0,#5+'F7,ML+Z(Y2:[KJ*8%[*@=P^V83*U9]]PN!*:>RV22I_JL\nM(.T/YK3^T?!L)!R>\\#H(3@32>OM+R>H6O?\nML.DZ@MP&\\2N3>[('FJ.:E=$I]5D,%')D7_DS&/E^MF*QA&!9-U"Z&OJR^R>;\nM^U5#F.4G>2IO.._H?,K1PN-H4Q_B-5<,\\H$[O\\@5ZZY@N;7,8FN1*(T(DQ!?\nM^;2B%I[R*`X4N2%W`ZM&5SG[G]W_L[,+LY>KMKJ+<0X1`-,O&D(:?IJ*K"W/\nMC0S*J?QH]M1-,CYVX*]._$DT4_[U)2GTAM0X8T@0$"2"5-=(A_/_L?;&_-]%\nM9GWG]DWZX64SB1^<7NBE_85_5K4O[_K973MRO_/.CR$TP>FYT[2"%D(7C!7&\nM\\-H>M7:-_%">Z=/GYN7^)R-\nM6_@$E*,*I=X2[_^YWR!*(^;K\\[BQ2R?NT(E=,KJ#4@7\\P*=>;Y"2$.L!;MK@\nM7.L,T[5IZNT&'2]`*Y6%.G(5.NL:2_6\nM:08MW,BE%;:H!34JU0J//O@H;]WU5H9+P\\Q69W%C%S=V\\5,//_'04X%"D<0)\nM<1RCM)2E<):3C>/4@AJI$>-D#80.FBX0`B,D_OET5CU`'XL7<2MA`XIN9OH"\nM0*KB_H?*#YM/9MOX04@K:-$(&M2"&NW)-H/>(+O&=U&I56CZ3=S$Q4L[A,HG\nM3'TL);MV!0@A:$3+G/,G4%9(7F8(HYC`CY!21]/$A($H2DB"]/+J9UWSI0$(`W298A@+]*0^\\7EA]^[='#]X$JG+%V8[\nM30B\\@#7;1LAGA*/6"!\\T!(=\nMD8INC43W!16'-+TFN7R.RLD*]WWZ/GS?)TW3KEE-(TT2_,#'LBQZ>WLQ=`,%\nMQ'%,X/N@X/V__ZM8EH%AZ$BI(W5-Z%)Z.UO1H7JC+YQJX<1M=\nMUY&:1&AB.OIFXJ\\<(&_]=P4"#+U!C^6B;D#%!HDF)SN7?/)^#DT@CET)/GIY\nMJ?S:B9D)+;9CVJ*%1XM`:Z'9"=D>D\\%"B223D*8I2BG".*#6KA&$$:[OTPP\\\nMFKZ'%W5(E<*1&5Q"1:*>6OOQTD6$4-[JMD8WZS2R1FC:LAEDS78L+V2BE@[%\nM!O1JJ$"!XMO+]>7I!P\\^N(X\\D%5D>DSR!8>"S)`FBB3IWD)TM\\>$*$IH-CVB\nM.,;W(\\(@)HH2HCC!P,0T>IB-%F=5R*/14OS]+K:^.X3L+D3>AH)-[TC6'UJ=\nM;0^,9EV]U[[PW(:,TVU=X!"3*E4/1$%$%$3$<4*2I"1Q2A0EA&%,%,4H!4F:\nM$(4A49S0:'9HM3Q)Y/'"4TFQWB."&.$SP_)/856XM74V\\UF:U63B=N^NE5-Q:3\\Q]>NA@%\nMK`L*6-A]#AO&Q5OO^CF4#O5ZAT:S0ZW11@MM]J[Y[1U;=Y@THJ83X6B\nM"/1ENF,.@S5L(3WYK=1(O^)EO+VIH7H#(T;70X0&4_-G^-C!#Y+/]&#V2A9/\nMS%'M-+%UAVV#U_":L5LY-G>4!Y[Y7'-YN7I/9RKZXM/O.T_UR^V+`]"?^2M4\nMT,$8OD25Y#HFGC)1P?.#ASP2MYMZ'PXUM.QU`0B2>`E')XY@FV99"R;4FZ`G0,WLF/T&@:<\nM81X\\_G6^\\>S7IIN-U@?"F?3S9K\\>5_[HA>_**_ZK@5**C.-\\:F!P\\#VCJ]>2\nMRV6?)8WW?GO_@7L&AH;O6C4Z0D_&>5K7Y6L4:G'?OGW?:V`G\\`2"US%.CKOU\nMG'Y+H9`O#/<-,-(WQ$"^1#'73S%31"G%^?I9CE6.-.?K<_L2-[W7?30Y:+U2\nM4TN?:7V/V14K((30>GIZYFW;?B:?=?1BL>]4H]$04M=F'5,>SN>R6E]?W\\DX\nMCI7ZWRYHG^C.`X)#+/.V)$FNJD:U6YKMYE7G%V=6VY9IFX8$H8(XC6;B)#Y(\nMQ#=PM2>T#%[K<9?6X__3[(H!QL;&TGJ]_G$AQ'UQDNAQ'+NE4JFMZ_KO`G\\6\nMQ[$>Q[$+M/]7@.?*UP'PV'N2:3N=?L_V;%T7:$KSB435/Q"Y8E`H\n;]?B+WU;_%TCA'_.X-T$X`````$E%3D2N0F""\n`\nend\n 6583 customers_help_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```2V$E$051H@;6:>;`=]77G/]W]Z_5N[[Y]UX(D!%J0B"P6\nMLYG%LK'C)3@&5"9>5`:;F'(R1:CRX(QG[-AQ8L:8#*Z)F7@%`W&`.&9B/!B;\nM,3!(""$A@=#V]/3V];Z[]^W;ZV_^>#+@E`/OV>%4_>K^T;]SZGSJ>T[WZ5]?\nMA=_1VMK:K'7KUN545;7J]7K===VBKNORR)$COVO(W\\G$4C?V]/1PPPTWL'__\nM_L$M6[9\\:.W:M9>26NZW9=<<45/[SXDDNOR*33'#MVE/W/[^;(H;T<.3%^I!&RJU1$.L[77Y]WK&PR-3G4X71L'\nM-V_:^'"I5`KK]?I;F?>KMN02.GKL**X75,_IJOGONO!35JYK#4KD$M?SNF59-!J-0%$462Z7WUJ`+__)6H3AB#,W\nM;'Y;?Z89IVT#14:HPB0"XK#)UGZXY=UM[:LWJ"OU&SX\\=,X?W_&J_\\Z=.YF9\nMF6G;MFW;^U:L6'%)K5;OVW_@@#QTZ*7[CQXY?&]?7U\\R.3GYU@&8FN1O_N%@\nM\\JOOKCJCO<6RP^)QJVV:C>$9]XXN6_?]SC\nMKJ=>\\SNCMX5RI1)N:IDN7GK>>U:E.]4?_Y5K=F^@.C$YJN8L?/Y)ZV[-=\\AAW/54'\nMOO>JS]=O?AO3,[/;^W+1&6I0)&D4('*)ZM.T61XW?W#CI8'QJ[5J3_C*LK-G\nM226DD4[_5X)@(+M]^_MW//B$?;.]\\=V?S/5UK#V\\]^=JR5B!W/Z%OCOO\\K;=\nM_Y"Q,HPZ*E%T40'>*>$7W+BM@.).%'..WI#-XA\\H<<..W6G\\A1.$M=G#Z5S[\nM7^GAW&[ACD7?>'1ZV0!O\\B#[-%U=+93+C35_]$=;OG;5E6>^Z]1\\8*V^8"WK\nMU]FH3SV(.7@FTZU;^=Z=+S)W;([967_BU+#WUUY3W@-*!)^B\\.WUJ%%5]\\W^\nM.S6SY4]!XE=G/;\\\\\\NE8:_]^UARFYY9EYPZ`^H9TBF!V=K]Y[KF#7]B^?>4'\nM&HW(&IH+&/,5,$S:?(5FJV[CBFM\nM-UUF'NOXL]U3M<0]-7**86WSW#_;/SAQYJU76M?>)X%-OQ/`$GI@U6`J95TV\nM.EJFN-!DVLBS,!8P,.C3J6F4:@V>&"\\QY:OXB:!8]\\'1\\QC:U2UA\\?%(>T__\nMU5=O_D1[3^N[1\\76M9R=3A6>_2%M6V\\>'/DQ#VW:M/VEX<>;5XQ5)S=#)#FZCX\\0$\\YF5BDS-]$C-[I$R>(>P\nMM#6AHO\\EYG=CW(\\O&>`-2PA,P.HJEZ5]\\F2=B0D_FCPZ0U#V.7&LCENN,_+R\nM,&Y@XE8K5,(X(6+'%HJ,K34S&S7H(J8_8-EWBI\nM$#-=@LF%6(\\86`41KK#D;QL:K@`P-HZ'U#+2J1WM--HW/,J)5:-12E*,D\nM)F^!H]OH6B=2+CW[-P8P@+H"Z5[00-$KZ3:G[BLJ7@)!F/!,M9?(3).8`FP!\nMIE"QQ`R66(^EM6"ESX$(,!:"P&B?V5-3]TB-]L1B6`IF9V*2;-HCI0?8HA5#\nMZR61<,U3\\/`EOR>`8H+4#52M!Z&!T.9;![/!@AOA!1+%BKBJ\\WF:]EH>"[:"\nMJ8(E-"PQ@RT"#,TFE>X%/S$L>TZUC+9FJ'#T)8]BRQ9F59W8T,'60QR]@"U:\nM,44O00QIXS]``=N$1#H(M0-3`Z%-=PUFDEZ$Z5-:T35&0WKFDO*N?H,SCZ.DRME]NV\nMPM^]X?O$$@'2!@ID$6J;-#00ZGBNVVG7/`DB!DMC3-HDJ@%9\\S4`0ZOCZ$7%\nMT?/TY9#'2_6.U=ER`U5;*(8HZ81T1SM*G`9A@2,$CCZ-K8,ENKEWR"!C!+\\W\nM0-?*#$"K&\\AL/0%T=;PIM`M]2X`F4(V`R]E'P]S(3YSSP5#!%@JZ"$GITUI*\nM/R.]*D?Y1;O8L2+K3=8BD!J^"2?4'+YC@V6!HPM2QCR.[@E'=(J4X<2Q#,+?\nM%V#KMDZ\\9MQQ8MI+U:MA`U-,EZ1B!;8.MDIBV8SJYQ)TKX/0`$M;5,'0--+&\nMJ&*+B[I7YRAW.C.18\\2-0(&\\(*55N<0X3J%E/24E`7].9^SD(+EL)'1E(-K[\nMY'71S,1!!MXS3%B>1[,2)G^Q?(#-Y[0S70A[1II%DT2=4E+ZPD*BV(%M@*Z!\nMJ5+P);&N+O;+:P`.:7,XL00M*16K+SNV@*HU+!TL%=?HX7G.Q#WU`F)NE`XK\nM%GUYYP]334-)&F3J_:W?G+$U=Z%8'0V:SA/(\\#ZE_](748Q8CO]\\:0`GOJCP\nM@.72JQSL7='101%SQC6-^CRJ':<7$U55GVVEP[@-@^&!%;^^"X&AI1TG?B%O\nM^DF;/Z.V]08CT[%S5M,1H$GBT:.,3+S`5>>LY$,W7,WF]2NP3%UQ/9]JO4FI\nMXJJ3L^7,RT,3&_<>'-YX_-3T=4W/^9\\D_O_@C.M+G'S@S0&DHO"1XUM,+]-U\nMP34;+L1/KU7^8NB*U)YJKVHZ&NUYDXY'_4E@HGTWD_CGK;ISF^#UO#``JS2114I88\nM[>D4P]G>U(G+171XSW>.?C.CBAM#1.<+'+L3^'=>\nM:$Y\\69#?\\"$:TP?-5-_65KMC?;WK\\NE:W5,^`,J/`%V>!E6$RD7O[V+KUAQM\nM[?[XFG/:?BYT4UDST.JYOIL\\?^!$[P]^>"KT2\\X'OW_'IXV^KE:*Y3I]77G\\\nMILO8Z`A34U.$88AAZ`P,K*2S;Q5[CU7XZ7,3%"L^I4J3Z=D:PZ-S2=2L?XWR\nM*Y_';(L8NNNW*[#V]@AX$,"'(],`BG++ZW`5D!J@!\\)1]!L^NT&YZ+S55)OU\nM@4;H?<*+FXQ$-9I*DUK*I%S2^.+-'Z"W,\\_H9(%TRJ$P-\\W'/O91AH:&B..8\nM,`SQ/(]L-LN.'>_DOWWIRXR6V_GZCX]0J?J$7H1T,JJB&#=)==,O$>G'WZ"$\nM?DM?R%]GKP+ZK]>T).D9KHT8UGR9JE_##5UJ08V27V36G>>%!U6VK#Z?"[:L\nM871J@6K=1Q4FNA%SWGGG<>NMM]+9T4&>."!![$MBT_]Y[_E\nMKBGWS">#Y5\nMI^D'U/P:%;]"J5G"G0/]R%5\\[I8M%"LNY6J#NB=11<3&+:NX[OJ=//W\nM2^@86,FN6_Z"\\;%QOO/=[_+<UGA]-/3D6-NH4K=BW&;&D77\nM8ZHRRO,'CN.;O1C9'D;*@G,;DL'!`0"<5`H)A(J/:,V`%RT^*>.ZYO0#L>.=53'D1!:%BI&T2,T`1"HJB0"(AT=>G=GQX.0=;\nMKP-0=-!$@J[/D4F:1*\\#2%X'4;>PL@8UMTG=2VCX.FZHX2'Q5(5(A?6#+6Q;\nMW4J?WN3N.[[*T\\\\\\PT=ON(&=']_%EW8?(^QJ1R@6L5!`42"!)$R0<:ICX:__\nM5%DZ@'(:0-7`$&")&,.8)Q-[1`I*$]180TF4TPO"2!!%,96:A^NK-`(5-XYI\nMJ@H-32&?,;EF'L/9C9/XH7$*LA8H@8Q:C-"-35B-ZSL>N*3R=(!O7KZ>]O9T'*AZ39YV-DW6084RD*<@H06W&*(:&,`48&I%01A_ZZLO+\nMZ(&L^6\\5\\-&U"AG315Z,C'1B50PU5MWU/?8?0_G%EY!Q='@A4[WVX-'Q-MWJ\nMH!9F*"4:)46A80L&;9VZ:O&Y+WZ%)(F))-2'I]`S%EK&(/$C5#]&%2J*IJ!H\nM"FE34-&4)L0'XH6Q90(`Z(M3IY[2`\\,253]EU"-Q>A(U-6BM0(L*80-DVG=\\!WH5:?2@9M.(-@?-U!C(6;3;&J'?((EC;-OBG)YN#L02&<3(,$$F\nM"5)"DDBRND;:B%F(HU=DX.Z7L?=F!UNO+R%K$2)K0Y_IH/\\MX=\nM5_&+?WV4+DTE*GN$18^HTB1Q0^)FB)W`AHQ!K1'(*/`?:/GP1^>BL8/+56"Q\nMA%1'T-^?;C2AV=UI5_U*3!%U48$V>[%?F@7PYB'Q?X)E_F\\(KR$)D5%,$B4H\nM44(<1K2W][#SNFOQ/(^SSSJ+?0V?J.2!%R,32>2%I(*8=[3;C$S5*)0;3\\MJ\nMX=[Z3_\\1]U__^W(4,$\\K8&+E;=:N3#=&(\\7KZ;)K9ZU,OWJ-'K&H!B!+1S'B\nM2DTOO_B8".8@\\9%AC`QB"&)>&2WST'$?L>T/R5U^'7M%#X\\/%XDJ/L%"`W^A\nM05\\D^7AOEL0-.3!:'`GKU=N-%6MG&\\\\^`BSG"TV+`R`1*OE.B]7]:;?QXT)@\nM7-I;NR"K,V2&S":*I!7(.XL^U2$<+4\\4-(\\;Z?1]I63@O"3,K)5-`_R8$^-5\nM/O_($;2,CI8VT-(&JJTC+)TV1V?'0(ZK>M+\\GQ-%?G)HZE2]6/[,JB^_[YFA\nMCWX-?\\^/E@>@'?P.TF^@=Z^2[6(%QU[071[>%Q\\Y9V,E:G/H:D)2F%=6[;I1\nM*;[K,W+HM-]6O<3\\5VM/'[HU\\[1J;-^"ZOY-TC2O,`-=H_>"V5_-:\\E\\-I)0X\nMMOUW'9V=M_3V#Y).IUXAB:[\\?\\_N^4)'5_=-?;T]9!S[14T3[Y3(^9_][&>_\nM&:#O_=!V(?B%=NRNCVOI[,>*\nMU36:8Z142X!0O5AC1!+O5J/&KQ@].$*F/:G>=?UOSVNI`"M7KJ1<+NM=75TM\nM?7U]6FMKJVO;=OW11Q_5N[JZ!>I(D\\I%''GGSH&MV0=!4U-8V\nJ2\\UUZ(HI(*A$LC+OH2"C_=]^TQ#_'Q?BMQ+!Y0<59W'OU5U;[WZW3T]/>^93#))S'M@\nM,@DQ(9@'$%3$M^2`>U961!:.KF=UQ5UUW:/NZB**JQYD%T%%5V-`!!8_,VZV$[=L\nMV0)-TQ*;-V_^Q88K-VX.^/WH[>U!U\\%]Z#YZ`-U]H]VZC5MRV>E]LBRC4JE<\nM2MWG3)CMQ,;&1C!PZ_TR^4*8C9/"Q$D0;0#M=2:V+=;1/SP15Q/+FE8L7_9(\nM+I>SR^7RI=1]SF:=0CV]/=`,J[@R43*O77>;'$HL`.=H<$MC,),\\/K9N$/>]\nM-)F;(FLL43Q^H:7X2"1"95F&KNL6QW$LG\\]?6H!O?+P-1%3)HJ4K5C<$*JY?\nM$<$Q!SR1X`!P[0K:&X`[M\\6J6I?R+?3FC_2O_/#=Y_RW;]^.5"H5Z^CHN+ZY\nMN?G*4JE(]_R#\\^97A67%\nMSIYB/+,XCE!X^0$XI0E(A'GK5S0VFBPI\\\\P]Y[MQXT;L>^DEY6,W;K]GW15K\nM;Y(DRO><.((0GP=O32\\-1:+I\\?'Q/RB*`L,PY@PPJQK8]6H6(P^O996I\\9=%\nMB3_J&9F-G*/[/3T+JS@&*S\\"2\\\\]*8=J/TG'3IQTLT/L>[MGTB(,5B<G[W46J,U5AB-4JA#;NZ?:M?2K!>W+NW#."AM+#P]`S@:G'(2,=G`[>]?MM$2GV_C:^V3)K/B12(21S^L+/O"!5?^Y=G++GUBC8L7JB`W_LK2$V+D(RVXZ'OOHK)\nMWDFDT^;8X(#Q[T:%W0]P#G`;,@\\L!N\\4J2DU?%>0PG\\/,)C%M&'FAS[M"E4_\nM#4H#J+USSMH!`/P%Z3B"=+I+NNRRIJ]V=K;02KL-KD"_#E7:!(4"6("J6WJYZ*>NDGKCG]TW4?*TP:%!#`@K\nM)G^K_*QOT3]ND3_Z,`.P_*(`9E$#\\YI\\/OFJX>$\\LM,5),4(ID'4+-A3R2**(`A"1`)8!(&O*G^FO>\\YYW_'C+YD77\nMC1882B)%L*D#\\;XQ3`5:..9+U3)!J67,>A>1A04V1[\\,Z4$7VM_.&N""*01(\nM`.1$/L^4TZ?+&!LSG?&>%*R\\B;[>,K1\\&4/'!Z!9$K1B`07;]1"2/00D("3'\nM`U6AK54Q_Y;3IW,XVE_$"Q,NTH8'GKDX-)##L8R+9`X8GW:IH]+M")$6^.FL\nMQ0-_-85D`*P6$`A`'(!FM2*I3K^#'$:6$GE((I:$R\\E,B6)":4(@!F40A\nMTYCND.5[]HR(BJ+"4Q7X?2).!*M0.SZ.XYDA9%(%)!%`((!$>,DE!)HLA"V'(\nM_I6``T"`SXX%[@D2O?\nM(@`G`8R*X(5:$`$@PE2T*6A-:PX,BX&3'6RM/HB*TH:GK'9`X@&9")!)"@JQ\nM(`H*?/XZP/1$69GD93%6L3GT'#.0#:]"FJ=P10HHU(9*,U!(%!*I@^4"?O%M\nMB(`B`1Y30?@X)`$@0C+1%`@54P:@>V"*@M%`.ZQ``Z!30":`3`@DDH5"-"A$\nM1#3$0=#-0$T@`Y7R%<,#58M8$!U#@=5`DY29R*DT!94NA"34X0OMP/)Z8\nM)8!?!`<$0?@8$P6`\\*.A&K5*,!A`7$`6,,(4>+P(!*77`$2A#)5F.95&4!\\"\nM.Y4KQUN#>1V\\,)VUP?D]^.-5X%P_0&1`)00J34*A@$QJ\\/-^$0'1>LL`B98`\nM`$0UBP7+'@#*CU:(L,Z4"2`0\\**%33@$75J&Q]6U@,@#"N%`B0T?30H^.M\\_\nM+X3\\JTHVWAPTQDL.P`28$M#'AV"J"B!+@$((5)J!2BN"0JJ)3%3799;S5@':\nM.ZIA5-QX7]+PE8NV#HDD#)!V,=#K@^.3(,7=)D",@^-)'`TMA:Z$@-$`5`H@40,!,3)<$QJ>D>U&.$9\nM&SD+<$]#%*;M*6O77WY376&XC:9./SYO;>V+W_J_"7PQ^28[<=^_`J^X?A$(2>!5#QWZ"2S33P,A>:8.9H9?];O]-3[-BXFC\nMB-590TGPLJ&*0$2!)!EHFGH%LNK.;&`1&8C(3`C3$54U_3YGI#J`%(#="-RS\nM#9^[[)90:>OR.T)!Y=YX(?WY`,=N_^)C$T*3>($(,([#3:=6248@<<4'EZZ#\nMZ6_C/M^_V;>_6,=+JH"JB(1XR`_?DAM!@S&L@(0,.$P+%$Q@B1W:#Y?%6($3\nMQP_B<)`JMVKWJ%3F$(](:%!K4,=U8EXL@%&>(B^)K(KHM?>QG\\IJ:H#(PR]=\nMO?'?UCYS]8]3GBUG6T]=W?J]!YT%UYQ\\;J=X3=XI+*G@X4U1N(7^"Z80CXKG\nM<3Z9#-=6DX%@G:]O$W%.[/])SP_ML?&[,H03"H3'("4`!Y@N!T_@X=4$GVNZ\nM*O@;6\\QW7KY4.#HMNLY3H^DPF3[R,#>47%-P$-4IQ6E)@.>=AB`*"-<'GUNS\nMQCB^;'XN7$MRSSX^YE;=MG:ZB><$/[X&@-L!@+(S\nMH!SAL?Y]";2WAQ"K,D<7K(P]3:C$+6B,&IJI>0=?[:^3@S[CU7TC'^H;*TK=\nM^QVD#RNXH2..3]_6B405IFJCG[>1ZCWRV3>.0-L_.P!^!0`FT)T$`(Z[\\[SS\nM&PCQI):-7#UJB`-%<&P\nM^^S1GCUJYGJADIFX>_M]GTE]8>W?7"B%WJ`NV%GU/`!Z=B09O-J!TI`H3^51\nM-$O0;`TEJX2_CTLQL'U/#B,P0/P>/VU.-+Y92P;>QF5D8/>X4;ST.F)S=VL\nM$GO,./G4TUVQJSQ[ZJYSJN8`H)P'0#!3!C3IP5S8E7X%D,8`^XQ0[X)7$]27\nMMID`S?%@G3`*#4W^AZN(`.`H(Q`.EDPAX%3CG\nM`;R9^+/WG*,CJDZY.0K+X.`%@M!H$`\\M^Q1Z.J_$JK$,%FL3J#[P,&+V!-ST\nM>.[S.]^5^[N=;ZQJ]@#<&0!>`$0"R,2%*$XAX!IP.'`5@'<%L7%WI/^:_D8,8>/UJZ17GCW]IKZ\\2PZW))E'G[ZN;I2=\\81\nMA)+G.7_YVB\\*0)4!QF;Z(.4,`*49^)T*9U/X'!4Q*8ZP&(:/^*`**CS7@V$:\nM,$P#>2V/R>(D=,[3$!9SAVHVNH?E33PJILM6-U)E2L<[*R444B,[_GAPY([;\nM,%U\\%N"B@&>_+0`AZ36`F=[?ABCDH,9T-G$+M&(!AC3]XE3PYP_PC`?/>,`%\nM/-=F3JDU86=O^*)'I(@@Q#12[<_:E',]RZ%HKFF%S7#Y5`ZRG=[_[/ZNKS0L\nM65VX[.3O@)F?<^A*Y>X/Z5,WY7\nM/P\\P+(#(WL]`8AO_P."[CROK$\\.#7#G5]:2\\A6P'HEP`@].>[7/PL&C\\%U=\\]:TMP`@A*`&0!>)6AH\\.L5H%)3K13-@HLL^)D(Q)29>CEC\nMW.`38([-D40SZJH;T'>(7X4UK1_@IW6Z.I]'R![?]\\+^?=]J:EIKC8S<,R?Q\nMT;^"99Z!B;0#,WC&3N#^A8/58!_!@9F;/^.0"$50!@(#PBU3):&_R:\nM_EC&$C?6E:X(4O1+-M(>QQ`%$%'/N5$J@C%K4B'\\CL5+EEXA-G#SLR=[T>Q4\nMLNGD@1?B9XN;=%RL=1,@KY=A,]]I;?_OPYL\nMV7HYXS@`N#CQ=TS79B2TL+\\OD\\\nM3202X?KZ>B$:C6J*HI2?>.()FD@D0@T-#4(D$M$`E#W/8X\\^^NCKESC[A^+%\n:)?N;V/\\#IU/(G@5P#>0`````245.1*Y"8((D\n`\nend\n 6585 customers_zoom_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```1YTE$051H@;6:>90V9Z>G:-9M$NC1"2\nM480%DB"L,AC;V`KBV&`P9CG.<6+LQ$[(R;%CQR;&D-@X)&`2;,`L(C;@V)(`\nM(S"2T`*S2*/1K!K-3$_/]/1>55WKRQ\\CA"!&GF&YY]1YW:?JOOI^?>^M>N^>\nM)GB?%HO%Y+:VMA#'<7*I5"IIFI81!('U]O:^WRG?E]&Y7IA()+!]^W8O?6:;4]E,O^&5"KU46I^AY&Y7KAE\nMRQ9HFA;?O'GS+\\[_^,;-`;\\??7W'_I.]NHT;LYF9O;(LHUPN\nM?Y2Z3QL_UPOKZ^O!0#;X97IGF(W3_,114&T('34F+EVD8^#$1*4:7]:P8OFR\nMI[/9K%TJE3Y*W:=MSBETK.\\8-,,JK(P7S4O6WR*'XBT@C@:W.`8SR>&SZX?Q\nMT]>FLM-TG26*/6>;BHM$(H(LR]!UW2*$L%PN]]$"?.?Z5E!1I>U+5YQ;%RB[\nM?D4$80XX*L$!X-IE=-0!=UP:JVA>RC4)VS\\SL/+3=Y_VW[9M&R8G)V-KUJS9\nMVMC8^/%BL51[^(TW6%=7]Z/'>H\\\\4EM;ZXV/CW]T`!+/\\,__V>F]_+,%"RO"\nMLF)GCC..6810`5YN"$YQ`A)EWH85]?4F2\\H<TWY[.>V_7#]\nM>1^[3I($[MB13H2X'#AK9FDH$DV-CX__5E$4&(8Q;X`YU<#.-S,8_?G'6'EZ\nM?+\\H<5V>D=Y('-WOZ1E8A3%8N5%8>O8WE.`_?N>=MO84T8N7S>\nM7AY.9C:NNWR!OZH-K)Q%.7D(5Z\\[`LW))Y>OZ<"FIAP^\\]4'/CH``*B[.0TV\nM]"UGZ&3YY\\:Q7UTK&&/5EEB%8NC\\G;V^O6RC9;XN\nM_<2?/[Y;N559=NE-H=K*UB.O[^*R8B/8VKMJ[[G76//H4V*3[53F'6=#&KB8\nM`2_@YC5I$&TL$U(%G94SYQ!75UPM"7.F'W8Q=<0?JOBV8$_MI=JH\\Z-GD_,&\nM^!,OLB\\C'@\\CE]-;/OG)53^X:$O[)&AXSO&F7V`$`1+>K8?3*+"9.#Z5%D2B:@"A&(_&5A.[/3X2^ON^RR%3=4)**7GJ`=K5CB\nM]Z5?^P5B';D*@7,EV;O_P`!@3`0@5!P].AH:'\nM#9@FX*O1()4PIPLP!-Y("0!*@5$6I<[/E!]Q16+_WW+\nMYO;+3N89BJ*`8,,:5/:/83K01)AO,L%X)<&8=2&5^1:;"'\\'Z6"L\nM*01(`.1X+L>4P<$2QL9,9_S8)*R@C)'@(2\nM$)(K`Q6ABRIB_BV#@UET#13PRH2+E.&!8RX.#F71G7:1S`+C,Z[@J,(VA&@3\nM_,*M(C2$\\2,)$#P@J@"E$(7!S`\nM(.:Q&C\\+P/=/C:QV]FE+#4K%#.-H57;`X"<$,**"J"$'E*9&Y?%F1RD25JGA%\nM5#V/6A84P6C[%;V)PU?J6#KD&@RRXAL*0*@$U;"JVP!;!&1^\nM-@HBS\\,OGB`*W5#='$*N2IUT5-'5+0*$*8)"$9^.]&.FK1:*F`.Q2A+G&)=-\nM$+^0Y4,)-3W>_LPWK]__B1>WXU=//?+^`5:LK$`R;2=&RAD)'C=!?,+,C$<4\nM2Q$!@0_L^7R:ZW=S_]R?@",$%QW?)5D!.+G7;-T/4Q_*_G:\nMP&;?OD(-)ZD\\*B(2*D-^^)9\\#D(PAA60D`;!#"^`\\2S^A/;C93&6)^+X`1P,\nM",J7C'O4+ZX$JO5N[!K*X?*M6Q%-))`R/70571B"X%XDGW1C51HF=&_P<+<&U8NNN`(-%1%,3&8Q,I+%:&KF1'4@-U9;9[E5=K:<9W:)XUF7\nMK,C;@\\'@[9V=;^P*^(/OV7?YHQN:_N]01)9^"GJR4_+5=D25RD6E^*9DL620\nMJP#R!`"!G0(EE,.&3\\31T1%"K,(\\V;(RMHL*$FFICQJ:J7FOOW&\\9EGC&N[H\nMON36_:DR=]/5%V,B60+G.C!L"R(S]`K)2X=%S@SPL'2]+`'@WAP9K^\\9'"EW\nM=W=?QG'\\JR_]]HFY1Z#UFPZ`QP'`!'J3`$#('6?@$H#Q``2+JD38_I6E9,.Z\nM9A3*I7K=-FXPW#)&G"(,9B"X+(RR86,BG45]_6](C#G33UC;ZGG``AO'4D&+S%4\nM'!'EZ1P*9A&:K:%H%9$ULTCI*:3U-"Y1KD;9!@D&@8:%B#2W$T$4J:HJ[ZEK'ET)&0##[,KT;0"/.;&=\nMX[O%`[X2RJ:%HEE$WLPC:V2A61IW(2^>869CG4*1=*HCDX\nM"/?$,#Q+AV64(!@EP"S#U]P,.QB&((FFH>OCAO'>C>)Y`"AG`%#,EH&0]&"V\nM'4Z]`4AC@`W`!>"=,3I`3Z83JZK/PZN'CF)@*LW"3LPQ;`\\ERP$#!\\)1N(($\nMWO,@5R?@M2U"D5'<$*``Q"0$6+`XP9L6^`^#4T6.^\nMB:F&,2SQ![!O?[=[3OMZRR[IL`HZ)%Z`RUP(@@?5[T=@Z6+TESV,R0RE7;]C\nMFT9[`2K@O5I>[P^`"`!//0C"%`)>&*/_79<'4\\,?((OM!Z&XJ'4V3?\nMP4.D5I#0[G$(^D(`#2&H"/"B(726=$Q),C*O[$%S[YL@`%S'?D]5JQ4\\YV@S1K3+1;)/W++UD6U:OIA7&9+__RN3J=446X/[UOIZ^L?5D]K?[\nM8``AZ6V`V;6_#9'/0HWI;.)&:(4\\#&GFU>G@(P]RC`/'.,`%/-=F3K$Y;F>N\nM^H9'I4B*CPW=K[<]+"KNE2&?+5<$"K\\_1]]W?R:3F^PU&_PC$W`&"TKLC8$+@\\PA(&MCY8(X`EZ,#\nM^H)['\\;A/N"!E;-^%[\\,,+1`)'=PHA")Q23-7R7ETC;L$8Z71^3ZX8.EAJ>P\nM+`A\\HQD3]WX+T]F^'8E4[BI%<5K%]>N^_Y-#W:/7KUO=]>"^PWAW]W1^```@\nMS*XZ!9]@B3(MF#ZQY-!3*U&)!Z)Y('Q&NRE&9\\,O1E0E=GQ-$``J`@`,3_"\nM-0$L:PD7\\XI<6MT2,N-U02#F`U?I`V)^`,!#HQH60I\\:,/&W>=,:3`P?1JOD\nM7KIA_=JO[TQ.BQ!_AV$9@XB@1&8Z5YM:+A;,\\XEW>QW:?GH=`.`E'7AT\nM!OB+%AP13YXZ=\\?C;#T'(4.*3AR5NJR/+6[,2="S)#OD)KTUU?7-AX\nM_,8-ZU[YQI[]L.<5@;`*1'P,8161A!_-=7Y-[S$L,:@4SVL.(I[P`V&5(0H@\nMHIYV$P01/,]/J0+_9%BA3U:&`_MX`DWPG&<"E'NR(A+>Z0\\&79_/]X[;?7,"\nMN"),[!X#=T]8[/G(V%&TLT+]\\O:%W_O-GOV-5YY*I3E'@.]\\",S4(50O8!6T\nM$7V'!`U/'W1[5R[+.S$5\\3+@I:?)@AMO)IE+;F<#;W&'PQ@>'MZCJ.HKIFD1\nMV[:]Q8L70]?U6QS7);JN>Y[GX?GGG_]_][SA!,.O6\\C,@$G^5N7,A<'!0TMX\nML7Y]6WWEU^X_.?V5]3S<.0,XN_\\%JJ)LKJRJ$I6)!A3]OH5;MCCQ/WSOON69\nM>#5J:Q+H4)55_-I+*Z*9@>FW`(:'AP$`75U=#.]\\';W[^Q^UW^:!K]?1GKTY\nMYUNAD/K@@H"0U03G%0`>1^81`4((%P@$4K(L=P9]"A^-1OKS^3RA/#>AB+0K\nMZ/=QD4CDN.,XC,VS07LV^\\DT0SRD0..XY\\XWS6T-XWVC/QK2>W\\B@=UJSN//\nM'DU-3#Q45U?'1R(1#4#)\\SRV8\\>.\n:#PWB;/9_KC?X%D$"^&0`````245.1*Y"8(+Q\n`\nend\n 6586 dispatch_order_ok_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```11TE$051H@>V8:9!<5W7'?_?>]WJ=F>X>:199JT>2L78C\nM"YO88`,V)JRV*38;0\\`!AY!*$2`&XY``AB(5.S9A*82\\B2/)K1-OM,3_?T\\MZ[6S[T+!(2_F!4^<2MZKJW[WW]^OSO^?_/\nMN??`']H?VN_5Q&]/_-./Q@'.]=Y?:CW">7#>XSSXD\\;._8[Y4Y[Q-!MU*C/3\nMS%;*8K8\\.=UL-G?]ZE_?,]ZVXWIJ3WSM[`/X[,/C`-=YSU>%0)YFG#N#H=XO\nM@G"GKFEC:-1FJ59GJ$R,Z%CK_O'Q\\2\\>'3CPC5Q'87;\\@7_XO0`$OSTA!7B/\nMR*6DN&A-3F13`F/!.H]QOM5;AW7,?1;G%S]@'%CGL"Z-L5GBN$"YW)YZ^NCX\nMCO9BU]UX__*QD>.WK+KVXT-'#^Z'??]UM@`('!`JP8IBB+"&9F2P`IP4J$`B\nM@P!M/8F=,]YZ]-S86+\\`REBYV&<5;6G%3*7">1O6I]K:VMY\\8/_>4GER[,;U\nM6[:?.'2V`"@)PH-2@F8SX2M?>@RM'>,3EH,#AE=>O9ZW7;^.X[%AM&F)M2?6\nMCLC,]=H3&T>D';'VK>]SZXU&@[#:Y,:+4RSMV$A'1_M51XX<^<#HZ,B'7G;K\nMM^S#G[[V;'A@L=?:X5U`1Z'(=Q\\YSNYAS38C"`.)$X)8""(\\D1F[!^_['SX;'I!"\nM+`"04K%OP//(;XXQ+$/8OI1@39&T$F12DISU2$#@$$(B1"LJ2`$"OS"6`H1H\nMO;M.%[MFRERQ(LV*]I"1@-?_'.Q_=@_(0#*DL@SW!K"V!*N+R)4=\nMA$J0#@294`+@`7!X+_&^]=WC\\`@\\<(H;B$TM(L/1TAN4E!97;VG"!(\nM/Q?[SZ0!@?`>*03IM.3MUZ_E,BV0G5E<(<-+>P*4@IYL0%8Y$N-)S&(?&X\\V\nMGMC.SRVNQR>-5[<'*`GY?!L$:8(@/#L`YCT@!*1#R=LNSF.LQ7L'-'#>,U7V\nM@"#G/2D+QMK%T(G#"(\\1#AL(C/18Y3&!PWKF0K(CG1;438!2@E08(D[+2+\\7\nM`($48(UA:&H2D^]`F\\4=+4].$N0+:"=(+-0K%302JS*MG8YBHD8=D^IH>45[\nMS.PT4=A!;$$GFE>?FV9Y3^^`G>X[W#`D(J'!+G\nM/=J#$1(G`HSP:#2)$U@4B1=H'(F#V"MB#XFS@"=4`B7%@M#/"H"31>R]I\\U:\nM4LTZC4:#8K&$"SP364]G!T@E`$DY5(2I%)EL"F,]C::E6DW17LQ@K$,;Q]14\nMAGQ'%H<@B@)2PIUB_%D$,!=&I4`(T3JU&*F):I;3,T0:T^B';IJB%*ZI8%8\nMT]46TA4L&B_DV0)P4B(#CW<>9RT]RE/*"GQ:,=Y0="X)D+*5QLK9%&$J33:7\nMQWM/'"EJ=2B6"ACKT<8Q.1'35BSBO""*8U+"HV1+/6<3N.8AKU)I.FCG$MKU3*,6G=G*-0\nMS/.Z,K0%$$4QFWLS=`1RP0-G3P-2X+PX\nMG4*!I6(5`LBD`X+0XFQ+@)@J264OIG&<9C2.;@3$9I9T?BFQ$.P\\9CC12$C"\nM9HM"2<*R0HKEP4EYX`P4.KSK,(V9AEBS;4TQ"(,E>%S4C,8*RPOUKW_VZUSW\nM5]>=V0/S(H:Y.["U]$I'IX/C#DQS&.T\\IGX$'>VF/KD/82?0K@M$E20I$'B'\nM3"N"T//V+>U4;)'.SB((29(DM(6MS6I%H5-%?-?M=_'^F]]/9;QR;KXO_XY=\nM8[M>=:1\\9%D@`W]^]_E/KR^O_^*.E^ZX_^C`47UC\\`H7/X;\nM+KIZX]4?N?]+]W_QC%'(>['@@<4H9$D[A?>@:T-8/8&-&VCM<%*`AM@)/)!H\nM00BDC,+@^,DQS5B<$)]$H=Z.-,OG!#P[.?+"XXN_NB;WO6F_C/F`<]\\./6G4*A=\nMP*B%QN23"*>1*DV2@)<"KT'[UH^31)!"8&R`4HZW;^F@QND4=F&+K[\\R\\^QZ9S-+"\\NYX&]#_#0_H<8KXQ3RI>XX44WF!6%\nM%7MF&[,SIP$0\\YF8TRDD8HNS$"5EI,RA`EH`%'@-B1?@(-:0`HQ1&"<8F&PR\nMR^D4*LPEL$!)GTZGL3[+&U^U@0>'OD`NS&.LX>Y'[J;_>#_66#:OW,Q'7O&1\nMB:O.N^JN(`K^I=A5+)\\&8!$)IU'(.X6S8$W+2Z$7)!J\\D_@$M)!@6AY(/!@;\nM8(S@)\\A1^D_TLZ*TDGM^<0_'IHX!\\/+-5_#Q\nM5W]BW[:N"S[4_Y/^'W2?V^U*RTNG1Z&3F^^I)/VY_72W=\\LVF^__?=DNS6=:T-?C8`IU`H,:22%H6,!NW`>4$<\nM"X23N!@2)?`)Q+$@9<':`.-;%&JHTRE4%(M:.W]='_WUQSE8.40]J3-MIPER\nM`==NO(8_O>CCW+D_4?OD]`N*KSW_*]_^::^?MW$!P!O?\\3Z"(%C]\\0_^Q`C5/(8,R$H$@G2\\1TD80Y@A260@Z\\3J+#;I1-H>R17)A3+:P\nMC/'A,KN.:.XLU-,>LL*W2B]*2KI7=_A_?NI^IMTT,3$JJ[CBW"OX\nMRQ?F?__*]]#_5S]JU:V\\?/'SX74N[\nMECZ]S0E9GRN`AL@[5/(@M/XE06820\\Y6?>^R927AW1^-\nM'CO*R$E1J=560&Y5J\\C#?#UH43'S$QX6GJ%=X"L&Y\\JM%2%04C$S.86?\\\\#&\nMRR[HO*?\\,"9E4$+1G>GBYAVW<.#18PP-'B4C!6$0$/;7E+;NC6%U]AL#2M86\nM*&2,00CAG+5Q-IO%.X\\Q&ITD)#K&Z`2M=:LW&C,W-D;CG)NSU9_4^[EBEL,[\nM3U_?6IZ__0*"5,C3>_?SZSV[%]9ZNKMI=JQAS]@>TFUII)#PHM35_+@X9^R9$D);2Q::Y+$8*P#O/,>?8J(DR3!\nM&(LQYG`+@%\\@2+-1IUXMSQ6VSM!\\*]PN_$8H>5\nMSJ.LR_17^GG!NHMHG^KB9[_8S:8=FWF\\\\3@R)UF:7LI;>V_@^__Y(_8?>@;O\nM!0B%5,'\\.0B\\GP&F3@%PVRU_SE__W9T`@]ZCO?)KU&DFCC(ZJ"[3`^U.J\nM4'ZN&"JDP'N/E(KI1HU,6R?EZ0HU66?W]*_8-;V+$]$)BFU%)B?W6-[/J\nMR#+B);,\\,_4,83[DFF77$#\\5LV?WS]`Z(9]O(TCGJ58-*LRT+ECX2;RH+B3:\nM>4/B*`(XYJ'FO2\\9K:E,C7#X8#])'!&&(;.SLXR.CE*I5!:,[^CH8.W:M2BE\nMJ%0JE,MESCM_$STKUG/?MW_(BR_=P8NV7,9=!_^1X_HXF21#E^EB56$5UU[S\nM!GZ0^@ZUL,:ZXCJV5[?SN<]_CNF9:9(DH5*I4.KL9-UYFYFI55`JA?=^%.\\;\nM\\UE4HDXCLED,GCO.3QPB&PN3W?OUW_N_W..D>)'">#4$0E((@9+9:04E'[[)EC(Z-LW[#5LY=\nM?SZ=2Y:0R60`V+QY,_E\\GNERA0U;MK.Z;SVE4@DI)<>/#)!*A704"OSFT"!#\nM.V?XX/);V-:U%9F2C(I1/C7^*?;Y??05^SA_XGR&!H<8&1VEK=#)AJT7'!@[M\nM7+YL2:B39&5'J8N-VRY$&X?",7AX(-'&_,>."R^4]7J]IWO92L[;M)4XT6`U\nM0X.#M7J]_F4OT]^W.AYLR\\B-4Y/C05N)TM\nM["X^]MACCW8VHSB]8>N%%)=TX8QE>G*,D9&1IX1,?VFVUGAT;'3L!]5J]=<3\nM$Q/NZ;U/+&K@A_=_%>``\\(D[[KB#)Y^4I-/IR2B*+@F5X.#^?:UKGW-$4326\nMQ/$G"X7"NZ(HVHHS'/C-7L)`8G1"',<#<1Q_[.)M?1.77W[Y.N?L-N_I=LYY\nM]XSC_1O>7[RC?D?[B>`$2S-+N51>>F3&SGS,&//Y;":S:6)LA,18KV.\nM,>9[0\\\\\\]=&]3_X"G22G!,$S5F-NOOEFG'/$/7@X.!E0T-#ES_\\XX=?O#'9^)[WEMX[40I*;`NVT6?Z'NR_MW]G',??+)>G\nM7:T\\CC0-?OW$+H:'AX]Y[^^KU^NG&7]*%/KM%D410T-#AWMZ>OYL=G;VPP<.\nM'+AP9F8FJE:KWP'N*)5*?L>.';]Z\\,$';QH?'__`OGW[-I7+Y)7[^6T_\nM_VRM5@N&AX=?7ZU6V\\OE\\M/6VKN,,4\\$P9E-?=9JS+9MVQ!"H)3*-!J-WEJM\nMEM1JM3&EE)VK5:G0B"P$U/3__.]Q[N75OK[^^G5JL]\nMFZG__VWTQ"B#SPSV'1D\\\\W\\TSD=FB_U)#P````!)14Y$KD)@\n!@JG_\n`\nend\n 6587 dispatch_order_zoom_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```0=DE$051H@>V9:9!=1W7'?]U][]OGS7M/,QH):[$\\DFW)\nMEH1MV2:8X+`X*2HF!@K*V`F4<1FR%Q6(`T42`R&5*N**"RHI$DQ,52"+X[`$\nMXA"6X++!&`S>)$N697NDD30:S?[F[7?I[I,/;Q;)LDUB]"$?Z*JN[MOWW7?/\nMO\\__?TYW7_AY^7GYF8IZ_L"GOCL#L$5$KG*"\\@)>!"\\@I_2]?Y'QTWXC]+H=\nM&HL+M!IUU:K/+?1ZO1\\_>N=OS93VW$C[D7\\^^P`^?=\\,P`TB?%$I]!G&^1]-:/C1][YB`<^->S!4#A@=`H-E1"E+/T(HM3X+7"\nM!!H=!*1.2-R2\\4Y(E_K6R0HHZ_1JFS>4LH;%1H/SMV_+E$JEZP\\=W%^MSTW?\nMO&WGI2>>/5L`C`8E8(RBUTOXPM__@#3US,PZGAFSO.FZ;;SKQJU,Q):IGB-.\nMA3CU1':I3878>J+4$Z?2OUZZW^UV"9L];KXRPU!Y!^7RP"\\?/7KT`U-3)__H\nM]1_YJKOO+]YZ-CRPVJ:I1WQ`>;#"O?=/\\-ADRFZK"`.-5XI8*2*$2!0]+_0\\\nM])P06:%GH9<*O<03)9Y>ZNG:`,T@7WUH+T6MJ64'T9LWW;#IW//^`9%]]YT-\nM#VBE5@!H;3@P)MS_U'$F=0B7#A&<6R%K%+F,IN`$#2@\\2FF4ZD<%K4`A*WVM\nM0*G^?W<8YL>+==ZP(F/>4*HK*$ZE&>D'%*84S1:K5<$\nM0?;EV/]"&E`H$;129+.:=]\\XRFM3A:[E\\8,Y7C<28`R,Y`/RQI-8(;&K;6R%\nMU`JQ6QY;O1^?TM\\\\$&`T%(LE"+($07AV`"Q[0"G(AIIW75G$.H>(![IX$>;K\nM`B@*(F0<6.=60R<>JP2K/"Y06"TX(]C`XX2ED.S)9A4=&V",(A.&J#,RTL\\$\nM0*$5.&L9GY_#%LND=G5&ZW-S!,5!4J](''0:#5(TSN3Z,QW%1-T.-E/N>R45\nM;&N!*"P3.TB3E%_=DN6(#838OU,J@C0(T]=`09C+D\\AFL$[H]1[.98:"2PSI/:CWS\\SF*\nMY3P>110%9)0_S?BS"&`IC&J%4JJ_:K,IK2C&1PG.>^I12MI)0&N\\0+.=H(R0\nMB36I$WJ]F$X[)BL1J?6DUM%LQ&1LA/40QPE;:QD*1J^`,&<-@`9D=4:"H#^[\nM'1/2(21VCGEK"&.SI`&AW8)4!!_VHU#<Q0R*]FT3R'G/C'..>J]"-ON@>I3J-&*T($CC/O+[3B*Z79ZS-D.UO>]TJC'9-/>$H5B+AC.\nM40KT$O_56=3`BU"H;;+DDONI=?^=G.TA]2S6*ZP3JG&"]0I'@#@A2#V%),4M\nM9(A=CA_86YAKYHDS,8F#)$YX[T"&=2M1J.^-LP-`J?X"8&ECL$HAV"P'.;+O\nM'@X>KY#/*(SR?;'C"`R(]X2!H*VG&'KR64.U4F#GKIN9CZM4JQ4\\FEX4D]6>\nM8%G`6IW=1"8L+\\!6*=1)+.W`,;L(Y^WY4ZH%CX^G,;DU=&:?H%#=3'WB$4KE\nM`>9/'J942#$Z(K(QQ^:ZS$5=\\G$&)XHHBKAX),^`@0"/]FGPD6LW*1&1H:&U\nMS,_/OGP`1BN\\J#,I%#@:SJ"`7#8@"!W>]06(;9(T]F.[$_2B&=)N0&Q;9(M#\nMQ$KQP''+B6Y"&D;$#O+:D4UFF#AV'#VH>)CS8WB2I%VSG*>&)VY`R@W\nM2^J'035)DD$"\\>BL(0B%=^\\4WE?^Y7/_5P`*058HY)>C4&HI)`[Q\nMX*)I$B=TIGY`VIM!=`6LD/H^_^)$$0"!,SAQ3,SUB.BR12L.[=_/`P=/L&/W\nM3EX[>AYM9Z@OS'=FCX]-1HW%:F=^>K,1;M]T[GF[+KG\\BL??].:W&!%YR!CS\nM>+?;X?=O?OM/`:!!1*UX8#4*.;+>(`)I>QR7SN+B+FGJ\\5I!"K%7")"DBA#(\nM6(/%\\[T3EG-J(<H3[GEO@FFO?S,Z--40I#DY'6%&5XL#`VFJM2K)V1,V-\nM'>96"P@HC\\6XKYC="8Y*=ZP"R+6`,BIU%H0,&4@^[<7I1/T29+\nMDH!HA:202O_A)%%D4%@7$!C/.R\\L<&*QP]UC)[G^+==RX88A.G%*,_$L1A;Q\nMOI4EK=8;H0FRZQDXMXP[\\00G9QH\\/+N>!IG7S%MSOH;]9TSX\\P?44@+3G$FA\nM=NSP#J).G3CV)`G]FBY719I`G/;'K35$J:(3I8P=.49V>`/;SAEFH1WC14B\\\nMD`T#.4AG(<+S=X[#-KF\\7?3BAWU\nMR%/-:P*CR00&IY4/EG)!HY/2:L1,)076U0;)-E(R0P6"0OAK^KSJY_"R^+\\#\nM``BG4,AX0@73#FP*?FG;GB0@`9!`HA5B(;6*!'#>$&`XIZBPUC*8"\\D:H9;7\nMA$;A1!-HC]%(8#0J#'AJND,C=0SGEL)9[R_![+E&CWQL_\nMTP/ON.G]!$&P^6,?_-V-[__C3Q37K1T2!`*S3"&+L1J%(ENL$E(B"`L$F3P$\nM-23-XX*U&%?`N`J%,"8_N)[IR3HGZ[!AW5I^\\NAA]E]P`;5BEF&$#&;I^-$K\nMT0:5SS"2R[%U?0$FIS@VO\\@U&S<1S1Y@[XDICO_*M=ZN5@'@HE];SJCV[,,K3B5(2)^BTURT8GTL&\nMAO6:6H76S!3)V`&>ZZ;4]ER!MPFVVZ8U5'.5X=K[YHK%SU_TG0?YT'O?V@=P\nMQV?O1BF5$^'KC<;B-4K\\D@;Z-#J%5/V=A\\C*_5,5LSP@L/(;E`+QY')9JN42\nM/WSB*=JE=12'UY$--:6,IA#V:R4?TENLTYF;Y>B1(Y0J-4KE`42$,`CH==JD\nMSG^SW6R]PQC=OO-3'^]3R%J+4LI[Y^)\\/H]XP=J4-$E(TAB;)J1IVF]MBEWJ\nM6YOBO5^R54YI3^_WL0GE@1+G;]W&B=DY)IZ>1!<':>JL\nM&KML_.J8G>/'QIDMYMC^^'/\\@K38E2LS(65^/)]BBF7$^RE$NLM;\nMN!4`N7P.K;5+DM2)>+KM!L\\^O9]+=EV$"0(.'SY,+I?#&(-SCE:KQ>#@(#?=\nM=!/-9I-CQXZ1R^706K-_W^-X%7+ASLO(9'*K^A!9B5#"LK@A[G58G)NG49_G\nMS==>RY,'#O"56<=(\\P`;CSS*U1=>3;T>4:]L()O/]W;NW.F;S1;?_OH73LW$\nM"B]L#X*@&@0AK68#HSWKUJ]G:GJ&;=MWL67;A=36K"&7RP%P\\<474RP66:@W\nMV+[S4C:?MXUJM8K6FHFC8V3"D,'!0N[GWQ/&C7QL>6K.]VXLRVW==1G7-6DY*0&-QGAWU<4JYD*8W\nM//;$DU_^;&W/O:6Q)^2Y`X^L4NC;7_\\BP"'@X[???CM[]VJRV>Q<%$6O#HWB\nMF8,'^FL7[XFB:#J)XT\\,#@[>$D71+KSET%/["0.-31/B.!Z+X_BC5^X^;_;J\nMJZ_>ZKW;+<+:E=!V>C'&Z"\\IU[DKBJ*K\\[G2!S']W:[W?NOO_[N.&[>IA0ZE\\_S^+ZG.'1\\\\M@WC/[X\nM:XOQ'Y3''MVI,QNO.G_C\\*U_>WSV_:\\VN!==3D=1Q/CX^.&1D9'?;+5:'SIT\nMZ-!EBXN+4;/9_`_@]FJU*GOV['GT6]_ZUOMF9F8^<.#`@8OJ]7JCU6K=+2*?\nM>>"!!XCZD_=N5#_9Y+K=[KIVNYVTV^UI8XR;\nMFYOCTDLOI=OM4B@4BIU.9Z33Z72:S>9L$`1^86'AI]E\\1KGRRBLQQIA.IS/<\nM;K<+[79[9G1TM/WZZ?TDZ/`7R_H-FUQT[(/[N@??ED5^)_X_O^+_7_D?]SLI\n1ESO!"%``````245.1*Y"8((7\n`\nend\n 6588 execute_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```+?TE$051H@>V9:XQ=UU7'?_L\\[OLU8X\\]'L.78GOL\\3RN[WON/>]S]MY\\\\-3-$+_F03[E+]TOY]R]U_JM\nMO?9>ZYP#G^@3K4ABM2M6_=;HZ.COS0^\nM/CZT:=,F(Y?+$88AK5:+:K7Z,T=''<>Y+TF2?;5:[?.&89Q>D?&Z+K5:C;FY.7J]'HU&@VJU2JU6Q_,\\\nMPC#<&8;AE^;GYW\\OE4H11=&R`9:50@\\]]!"V;1-%T8.;-V]^Y=EGGQT<'Q_'\nM,`P\\SZ/9;%*M5IF9F>'BQ8M,7KC(W.PLKC-/X'OT7)\\@",^:IOFU,`Q?%4(T\nMI93+`EC6"@1!P!MOO,'$Q,2OC8R,##J.PUN'W\\;U/+KS71K-!O5:C6:]1NBV\nM6)=UN?\\NQ6B_@9DHOG/(YS]/ZRV[=NWZMFF:WSQTZ-!+0/*Q`81AR,C(2#:*\nMHJU34U.<.7.:LJY22"4D4F.@&,N:[-V187S3;6P>JE!("U3803N7F*RZ_.BD\nMCVW;QCWWW#-QZ-"A/B%$76O]\\0!XG@>@&HU&TN[,,USR^/TOWL66'0\\C[#R&\nM(;`L&],TT2HA";HD;AV%0$4.$]O*C+WATOV;L0OK,5)%,&PT&I0$%8$,49%'.150L3J\\\nM>5;CA_+'ERY=^@-;MVX0Z_9L,7?OV/E01=A9$`(!"*$1+$1')6@9H",7%7:1?@OI-S'B\nM>8(HKN_8L?W?O_K9.X/N6V=:7W@BPW^=6EHV+7D/5(H%=NW4`YONW/OW]^_9\nMNRTX]3U+1BY&U$,8)EHL`%@IA!`(])74"=M(KXKR&^C80RG)@?O'^V][Y,M_\nM/7?NZ-&''^7)?"7;AN#_%R!GQ?B1[QG-(]U<>7/.[AM"NC6L3`EM&&A#@&$@\nM3`.A%=JOH[I3**>*#GMH&8&2**496#]DY<(+5LXYWK$2@E)ZZ05MZ7N@T^:K\nMO]+G1!_\\\\S>]"S]NI?N&T6%'2Z^!\\ILHOX%RJZCN%'+^/-*MHB('+2.TBM$R\nM1LD(8:5U8>TP>5>\nM$B!#AR281X9=9.@21?&/>H%^W5ZQ]54`0$N$97M:1G^A(O:@U:"*`Q`&:(E*\nM`E3DD@1=M#`)I;CLAE)'[GJV)W%;(0\nM8JVQA3#.A^HQ63^W^Z=_]23KF*'2MQ8=M9@[^:^FWCQ=U[\\\nMW%^>T#K<)E8>OY4`V,`H\\.F<;=_UP)X]=W8N77AP<./(@+GUESGQPS]'34X2\nMRTF4@KZ=SS!TQZYLNU/_(ZM3G=@FQ%'@!'`4N`#$'Q=`!MA;+I<_OV/'CHE=\nMNW8-M=MMLU`J(2P;5VJ*O_B[8`DRI[]'B@@Q_B3V[C\\@E2T1-;K%>[;?_7AG\nM;OKQP0T;Y.SL[&R]7G\\]CN/O`(=88B^QU&9NQ+;MER?+\nM8V-CQK%CQ]B]>S?E3:-X(D4S!&_-3@K&1M8/WHO]Z%AZG)\nM239NW&B,CHZ6<[G<]B`(G@Z"8!@X!LS?JD-+68$MF4SF;Y][[KE]+[SP`DHI\nM+E^^S)DS9PB"@$JEPKSC@EW$%@9WAI#K!P\\>W/?$$T\\P-S>'\nM[_M(*3E]^C1KUZY%QC%NMT>^;Y#1M7ER9AG_TGG\\ZBQQ$%(V#:36]+KS>$Z/\nM@8$!WG[[;1S'(4D2E%*8IHEMV_NB*/HZ\\.M`;[4`/C,\\//S4GCU[F)F9(0@"\nMHB@BBB*JU2K#P\\.XGHNJ7V;-\\#!&NDBW;Y#\\]GLIAPGM\\3NI^C%^SZ$],X73\nMZY%.IU%*!SP#_N!H`%O#,EBU;TK[OT^ETKCKO^SY!$&!9\nM%KV>@^KVF%]3H=#?A^KVJ"0)*$U\\N8H_L(F+ITXP<_Q_,`5(*>GKZZ/1:%PU\nM]*&GL@SP#/!];O*\\?"L`_;9M;R^52M1JM471]SP/K3522CJ=#NE4"J?1P/$"\nMTITV(O!)?)]X;@9W;`?=ZBQ");A!"$"E4KF1W;N!?J"V4H"2E+)\\_OQYI)1H\nMK:\\"N*Y+.IT&KKRIL$P3K].AU^F2Z;002A'Y(,NUCL=E(8H")#5.7JSL_3JE[DT?8DHBBF52HO2YQK*`^6;.7=+*01DE%)T\nM.ATZG>85MV[9Q^^VWHY2D/36)E4I06A,%(<'<++USI[`%9+,Y\nMFLUICAPY0JUVP^!F%FS?4+?2C:X%4O_WHF59&,:5X?W]_=QWWWT4"@5\\/Z`U\nM>1;1:9`DDBB,<"]=P/W@.%(FY'(YMF_?SLC(R!4'#`/+6AS'5"I%-IM-+=A>\nM,<#`M?Z7S69)I:YP34U-QT\\ST-*\nMR?3T-,>/'[\\:B'P^OVCN=#K-P,"`L6#[AKJ5%%I_K8NY7(X@"`B"`*TU[[SS\nM#DHI!@<'"<*0]TS)@RH@"D(:F0RN8:!=EW:[S>'#APF"*RU/*I4BG\\\\S/__S\nM[D$(P88-&YB>GEYO&`9)1[O9Y+WWWENTC]+I-,5B<='<29(P.#A(-IL=Q'%=O`T;.*%\\#`27+9O6A0N<.7,&UUW\\ZB27RWT$\nM((YCTNDTA4)A0`AA<8-B=C.`#+#F6C<*A<+5/?!A)4G"ACV'OC5ERIB<\nMG9UE=G;VFE]B\\OD\\Y7+Y(W/$<4P^GU^SX(.S7(`LUSG*BL4BU_NJHI2B7JOQ\nM6J]+VC!H^3Y*7?OU2:E4^DA!TUH3AB&%0J%_P8=E`Q2Y4@T_HD*A\\)'C;[$T\nM/=^_:3O9U]=W=05,TR27RY'+YK[/P(5P!TRLV\\HD^T?7UOZUP[0I:UH+3`````$E%\n&3D2N0F""\n`\nend\n 6589 export_database_write_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```-]4E$051H@>V969!=Q7G'?]UGN\\OL^R)IM(V0$$)FD4`0\nM@W$%VYC8D-@$.PMV'!PG92>5%U/&54DEL5/V@U-^<.&XC$-<)*9B;%[4.>?_Z_[.\nM]^_^+OQ__!\\+:RW66L]:^P%K[SZ>3>^/';2]DK\nM?P[T6FO.:C;>,0!C#*TL)$\\7K@VZ]T5/?O%HLO<.$)M"73ECB'<,0!M#,VM0\nM4V6T,?@4G)=:SU^_*WSL!ZX(/@0X9P+AGNV#O[5S+].52%P\\T>?W%OR\\*\\A)\nM@8=`8&'QD4((K;5)HB2)CAPOQ9^^Y9OZ8Q^_^K4`:8CC>A@,`)[-<3C:M[FB\nM2M_=7-S^M3Y_^#9K;5T(<5H]I_\\/T#26G2\\Z[OB$U6Z[5:\nMJY%,90-:ZXY,ZYPQ1AIK,=J@C2;+M%)*M72FJX'OS^;SP?3H4->!D='.LB>]\nMSCV-ISY_N+5WLL?KQV"P6+`6"S1UC9PLJ"U=.WZXNK#QSU*3'/)EP%(@2P(\\\nMO/LH0@*606O,M4;%UPN=;L?HH22*'94IM#$+HRT14F)IETAM#"I56&WH+`;D\nM>@U.;T+LU$A$TZ8VLMIFHI%51-[IH,/M>AU`^ZZ)B0'8TG7),YN[MWW!D_Y/\nM`?-ZB%,`#ARK<:Q21DIY@3'FZ[/3O[C\\^+&CKB,E^7P>S_=!2`P"X;BXGH_G\nM^[B>CY"23"GRGDOG0$HI>(E$-!!"H(U&6XVQ&H-%6$"($Z(MBX:V>`;:9I23\nM639W7SQ[Q?"U7^GQ^V\\'FB=#G/(.3)K5,FLF)FA&\nM$?6Y,M)UR>4+Y`M%"HZ'+QT\\/\\!Q'`9[NPCS^]B3/L>@&$,:CX:JHHPZ1:@Y\nM:=3MB=%?/#?45)6CX4OL+^\\:F@Z/?/7:E;^U=:)C_:W6VIE%B%,`YNL18:2<\nML?Y";\\YWF=Q\\/OMWO\\CQ^1)1DI)I0Z%81#HNCN,@I<`:0Y(D#/7U4/)W\\V+U\nM,<8+$QQK'"7*6FB3H6V&Q2(0"[DL$'`B]T,-.*41IS:H"[IZ0@8&!JAMZ^?:K5"O5JA4:\\3QS'6&.(X\nM1BE%RVG242BB5T8\\.GLO?<$@!\\I[J"8E0M4@T3':9@LY*Y!"(H6+(^1B\\8*%\nME,F,0AF%L;K]I84+AG:8CZ[_Q+V;^RZ\\I:7"/06OX_0I!%#,^20JHQ):C+%T\nM%GS&1D<9'QM#:TVJ,I1*42I#:XTQFH$>GP=K=]",6\\R'>YF+9DAU`H#1%IUJ\nMC#$GGB%=B>LY"+E$'1'M6?4(N'KUAZ+K-_SVMU=UKOVRQ\\!TX.;2Q\nMA/%"VN0\\BH%'(?#HS/E`?F%$P7,]II)GV'WH.5*=4D^K[3S6H"*%+P)6]*YA\nMO',5>5G$",V!^3U,U0[C%5\\G00BTRNCQ^[GAW)MF/SCYD;_L#?KO`&(I3O7=\nM,S(R;2V)RC`+GP)#IA1:*72F&.[MY(G*0QROSY*9#`3H1&,BR]95%[&][SVD\nM4Y)7]LQ1:T:L6K&"R\\X=X\\[9O\\5Z)\\^`126:M=V3W'319W:]=\\T'/N_+X'[`\nMGL[,SLJ)%V]AC$5EFB1)2>*80E?&\\Z\\^31BUD$*211ENYG/=^361^]Z\nMCK#5HJN[BT(^3YQJ"AFDL8*@?6=K##HR7++JW>93E_S1?1>/[;BEGE9W^_[2\nM!K8L@*7"]SR:ILQ4>8HLTV21PDU];MAV$V)?#P\\__PQ!/L]@=P\\]71UXKD-W\nM=S>I34@2#4JB$XV3>ERW]3?CF[;??/O:WLDO6>QO;&"W_G2_WY@>]PFGP_(X`T36G%,;W=7=J5X@U'P`*>ZS!;\nM/TXKC-$MR]7GO9^QQB;VSDS3.S!($L=8P&B-RA1%D0,@RS3A;(O-Z\\_CL^_[\nMT]W7;K[NEL`)[F.)Y<(;Q2F8#_[H3K[RAQ^Q+S[^B$E:33IR`<7`PW==I!1M\nM]^?$UA#I"*J-"N%\\Q&CG.%<.?Y"IHU4*75T88S#&8DW;8]-4$2<)]4:(P7#%\nMUJNX<>TGUK;!%5K=\\Y-J/4<@&&5U1Q!J-R11&:[`&\nM8PPJ3:G5:]3#!E>MNA3Q2L#=W[['E*K5BNLZ;YKO9P20Z^KCZ+%7>->[KZ9\\\nM[#"_V+^+P_M>H*>OG]'QE8R,CM#=U47@>;A2D`]\\TE2Q9?U6MG=N8^3(47K*\nM1SDR,LFA8B_U:HURM49IOD2I7*):J2*%):Q6V+5[-\\+WZ>CN/FV9/&L`:RTJ\nM:N`(R?#J#4RLVT#2J%`K':.K5G'PY<,D2;JLT5\\2\nMH!WM96ZF#:F0Y'N'Z!\\9)^])7#0JB8A;+9(HHKNC2*DYP0^G^_@GO\\&.N08?\nMSHW0?\\W'N7)P@DPIE,IH1BU:K0B=98"ENZN3^?D2!PX>6I;P-P%X;6AC2)3"\nM6@?/=1!N'I%W\\-P\\\\^YQU(9#;%CQP^$&.\\G`S*LTFR&-L$$8\nMAA1R/JO&Q\\@%`85\\CDJY`F`0(OT?!7A-6-M^(3--/:GQ,WT7F3I"U&KQX8WG\nM,G]CQ"./KN/P`8GMJ6%L3*H4UEKRN7Q["2X$4IPHT18X$]-YFP`60@K)L\\V?\nM\\4!Z'[)L&1-K(9]CZHBALS'(V/@T7@!)W,YMQW$H%/(GA`OQQAZS;`#/D4@I\nMR;+LM!<)(6@V4Q[V<]Y02/]`2IPL7&`MN<`G\nM%[37-5)*'*==-ATI\\?+YMP^@7JU2J]=9N6*%]EV'4P9)@%&&'[^049*?XMS#\nMH^CR7HZ=C_Q")=?>P.;ME[$R/`PGKN8L^`(P2.[6GP_Z:$0:39&.Y!R\nM%.-,,EZLLWHD(HK;*];%8S%=<F6$,2)S0:#4JE,HUZ0T91%"Q/_A(`EU_S\nM&_S^%_^:^^^ZPWGFYS]E=-4:UJZ?9&AP@.YBGD-'(NZ8R9%IRV6U*AM76;9L\nMWT10<-&I1,HB2=)>O!F38;3&&HW.-*U6BVJURGRYS,S,#+5J!5[6[YM\nM,V`=CQ>>W\\6Z\\[>Q8O5:I@_MY?X\nM3$ST8(W!FAS6:.(X(6PVJ3<:U,,FY4J%4JE$M5*AV0S12N&Z#L/#PX2-D$JU\nMBI3+ZW(N684<-)F&7/<`6W=H[#V/`0KCN&Q9(+`IK-)H\\_\\>3"OMHL)65Y`"PT\nM/(RU))DF<'V>F.GGF97KZ)ZN<:EN,+["2T>Q0"&7(Y<+"/Q@H3.$\nM08CDS70L"T`*>'4FY1^F`\\I6LN'0+.>,)VRY9(#NGAQ1U';9)$E(XH0DCMM'\nM$I,L`$DAR`4!ON?@NBY"MF6+USKQ\\O*')38T[52P""EHA1G?WP>'@@[ZGG^5\nM;9TQFR[J9GRBA]>G;%L4"+D@;O$!4BYLA!8;6G+!R.0O>T+6+CN53ID!WW/H\nM'0B8G6IR_^Z,_RH,D7OQ.#O<)INVY-APWA#V+`9,RI.$.VWAQAJ.O3K#GGW[\nM<5V7?"ZW3/E+`#SWGR]STT;%=YX=T3_I&$9.U;@LJ7/NI&3SMI&V`'TV,RZP\nM6%*E:$418:/MP'/S\\^T&5E>7"IMA(I9I!*<`?.U?+;?]*#H_?G_O!6YDN;Q1\nMYUVK#)>\\9YS>GGR[TIC%J?_EWM@L'BE\nM4FG.S]?^KERN[/)\\[ZT#?.9/;N5;CUPG?N^Z?_R#9[UC:],]&>,R>65TLN_E\nMGL'B!L]Q^O.^XTA\\LKR'2@.4*J!4BLX6^J191I*F**5.\\H64.(K;RX=R.9HO\nME:?+Y?*CM7KM[E;8?"A?R,>/__2^MPY@D7SNO7_1V:>.;?TU.<^QCNBEG0],\nM?^&CG_OL_-B\nMDL0RBJ(3I31.XB2.6F$<1,K5_^[XSCA]_[^&V_K`_\\WPN6=_`7_+.._`;1\\W/;1=!W6`````$E%\n&3D2N0F""\n`\nend\n 6590 group_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```-7TE$051H@>V7>8Q=U7W'/^?N;YTWNV?&.WAL`@P&CV.;\nMS28V`0/!A*`D8)(T`:5-E*9IJS2*4-14*C1*VH16+`UJ0IN$+"IEST:_;UO7???7F=\nM!_.:U[SF-:]YS6M>\\_I_*_&'7JQ8L8)RN6RO6[=NR<*%"U.7+4":-?,'CDA>DPC#Z,,!Y^`\\8,0)\\<+ZM4\nM*K%QXT9&1T>;5ZU:M6G)DB4;B\\7BRFJUVG;LV#'KX,&#)W;OWGW[T-#0CSH[\nM.QD?'W_C`&O6K.&!!Q[@(Q^YX6/+EB[YA*$C!@\\GNFWG;9JUXX=.VAI:6%F9D;T]_=W+%JTZ.SV]O8^UW67U6JUXL3$A!P=\nM'=T]-S?W/T$=GC\\W%IRZE*`H,'PB9\nM_>:)/J.E;=WBA5V[SCWW7&JU6F;3IDT?7KUZ]4?[^OI6EDHES_=]AH:&V+-G\nM+^/C$Q^,HGC#U-3D#=ELSM^W;Y_8OGW[7RQ;MGQKM5IAY\\[#'#LZR-CQ08SZ\nM,!1\\]FR]2IC[,`3_3=<\nMM?:\\_O/?2=?"4R@4BX@T(J.F$+47P^>'@KOO?^2)_1_^T+6$47SCIDT7?>62\nM2R[MZ>[NL2I5G\\'!H^S;NX<7#N_#GQUA9JZR)(QE.55J7VMKJS!,ZZ^JXX>6\nM+K%>H"AF6=F>L.6<3JY8W\\U%ISE4ID?$L7K'\\F7+3MG=U]?W[)-//OG&*G!J\nM3Q-1?/SL+WSRXJL6M#DDY5&L7"M"U='U251]FO-6Y=P++KGX^C08>_2HU0K)I-5EQ-VDL8^LG$"&95TLY/<7\\^%/FV?O][LZEN3W\nM'SCHZ;E#?.JZ]70N[,6Q!1G'P!$QRA\\EGMK/Y6>/\\^V]RBH4FPJ/??.S'9_:\nMMGCFX@VKT$HAHRJ&:2$,"T,8:*WH;!)N/JY)I_>.[U\nM(_2])V?Y[ET?#69^O?,'AI,FR/"=.@F$K$T0S9T@J8Z.A]7)ZQ;?^/1]8L&Y\nM//382&*JB?Z/O6MY_Y;+KJ%IP4IRI4YL-PM:HY,Z*JJR.#?#WJ.3_J.[9__Q\nMVO-;SKOPG*6?R]G2-.TH>&4Q>HL*YK>@4&4?--&X;W[RR<<_HB+<.*,(6%86#8XN6UQ(W6*;,3-1K9HC$Y6)]9DUQRKJR%J8\nM=9.)RRY:?\\9V'4XC_7$,(1`&&(:!"J=)_6%T.$VJ(M:=_G\nMH['W!4GU6IWX=PD5N*F31R4!TI]"!C/(N+[+GQ[Z0'O/Z6/?^??S=,^?O$X3\nM?_9RZ%NW@HGAL26;/[CUSWN6]U\\Y.G#?PKV[G_&L\\1G1[$S1C&BNM5I?:6Y?\nMZK=VMP[<<]."KW6K\\OWI61O7&Z9]NIP]O,!0-432BC9,TMI8XS1EA$[3R'&]\nM$WIZ]S?4GH-'9EMZI>W$#Q)6WQMK?;DP'=*XA@S+)''=CZ+H=D^,#C_]^!$N\nMO>TUO3?2\\M+DJ@MM)D8FNU;V;_UZ[]G;KG=LT5H^OL,N=`AA->7)M>0\nMBS*&99N>96<7R2BX9+1:&6G+.']M*_\\(LGZ9(+5%FJ`B'QE,(_U)$G\\<&NWU]_\\-E&>V0P?256L4`R+""K$TA(S^02?A577YQ\nMJ-<=('J63.G,]ZRR#+:V\nMI?\\1IX45I8NVGK?UB]M7;[]).?+]XTP>(V-''Y#^\\3/2^@D,7<7+\nM>F1R67*%//FF`EXVBQ`"I21)(E%)0JIB(TGT3Z_^PH\\/?_G!A>;;.[^_Q#4K\nMYQB62VBV,'1DW>]Y;O9'HX^(VH5+2E:8H?2-R<`)V^?(\\4PL"R+4S+Q+(L0N7@AQZ[7U@N!J:N^.3Z3?Y'\nM!YX/%^U_7K4VVS.,#\\^@U#Z:(]7L3ZS[-[M[?+QMS]^T^ME"Z[.,4EMPB$HZ\nM0ZF]0+`DPV\\\nMNOK>'2,\\,U3DJ;%3:?_%$99G$CI=DTG5*AX6&YID:[YI07,W8_LDS_U\\%'M#\nM@K71I)AQ*65R%#P/U[9I^)'X=LB<64-J22T&/&V0:7,@Y8!N-!JLGX%EH4Z`UD*00*L+9-FJ#\nM;8A5$PC`,DTRMDTB)8YI8ILF3N1@86);-B7/S<_&Y29-VO#\\$L"7_@N`%*@U\nMN(Z='`#5DP/@\\T!BN6[:_*M?35)JET19ARG#0-DF9&W(.U#RH,D#SVH`U&*P\nM3-#ZI'D)08+V76K36<(D(8AC*O4ZB91$4I(HA0;L:H94:P2P(-.92>JJ.4XC\nM0L+?`KQQI8"1BR+5M'?O-&8N@8X;MXP24@238=5)"PG)*Y$B]3,DNUHR;:\\50`)Z&:P,I""4F1$A=0H\nM4DM22!3$*42-B%")P!00JT:4@+Q1IZH")!;%)ALO:?5GRO41I;1^"0"MB97$\nM2!T*7A-A(LEY1=S4,^?",KEB#FX";GYK`"T@/9`@8W)&%26@%B102\\"/P#,;\nM)Y^D#8!(@1]#J"B9"4%<0\\HBIJ/IG#U[]R]_VGG]BLM'PC1-L3\nMC)LC5C'5H$ZE^AO":A@4&'5)US*'@Y'"C!6.\nMK;$,W0Q67HAD5O_O-^?7U)L`$`@!6C,HA/R&UG$*BDPFC^L84#T9'5,TFCE1\nM)P%._A;$"A$KVK(N1@*VE'BV(4Z\\6)X3*/E6S#=V9::Q=5W7'?VOO?W[OW?F"JH`DT(:HR-.7/$+YB:KSW>4B$]7[XR&]#KP>#(6^:W\\"-\nMG3FCNR(80G-J'N>S4X"=-YP_';@]K0&QIY?)[)D:2#;1@*$)8E%2#`>8\\`>F\nM?`>1'MA/1N#H<;C_0?SE+^:ZLH2%#1`RB)7C);]P*UM>?`.F%3!91DX34PP%\nM2_5\\(EA"53%53"?S=/([8W7Q81Z]^]^P,BX@;`!Z9U[_,Q`8%L+TK$POG;!+\nM8JQ7(7C0<:2_?(CF]`*FZ30"Z13(4R0F<].$69I<%4VQGJNBFM"4T*1,;=Q.\nMHS-3I6KYPYT-_N!@-3T?_O4)&((XRBK)1WH#YIH]B[,9-P&WK#SY$.5@!9\\W\nMB=4(P4BI!!01,(V4XR%9(Z,J1GCO)]HQ8E4B&*9*K$I2C`BU&?57G@*+3XIP\nM]V`MS2.L?>H6TN_>_A,0^-BW%&`(?![@$^\\0J-@OPLW#U2>GAFN+9)V-C/HG\nM`"-D'N\\=Y7B`#YYBU$=3#AA./%4Y9CSLXYR08H7W@10KLBRG*H:,>LMTC^Y%\nMQ&9\\X'U$Z9CQI\\#*F?S`K<_MN3K!["%$=L6B1^_X8V19H-EJTVRU:+7;..\\0\nM`4T5(H8/CKP1,(M`(LL#(?,X!\\6X3U7TZ*\\\\R6#E(*/N,5JS6YC=^I(%<>Z#\nMXGBS"`O/B6(_.0$(#5EVCMO,TKB_].C$22-ET2=6(ZIQ'Q\\$[R'+/5@DED,L\nMC?`N8K&'EBL03T!U%"V.H.4)L#&-IB<$1]Z:(F0Y(FQ`V"K/@W!=$WKV>._G\nMX!_>">+XB@B_VE]^_,VQ'`"&I)0(IQ2T2V/Q^NL];`IWX'G!-$>(?S_&+WZ%X6\nM]WP=U9*0>;(@:+F,%4]1]A[#I24"79P,P$8TFR!4.$F(*+$J@%2+382$]H3F_&B3'N':6WM)]Q]Q#%<`6S"DT5*564\nM18&FJHY,Q9@4*XQ$2A58I(Y.)T-O`C%"WJH3HO"BT!3^\\=;U<9VU"?D`8"`L\nM(H)IA5G%<.4`H^YA(.(\\^"`XT7KN!55!O:O](@54%4U*NY--$MK))&?U_QN$\nMO(F(@'#>N*?>!]9-"&=-X-;;X#/O!N"8",FT\\MVCNYG9?`EYYA$GB#.<4T0,\nM<8II9-`?X#WDN6<\\+HE5I"PJ6JT&J4JH&J9&52FI4LS`A;S^/[6-WDLNPFB]\nM4'K6!("3)G1"A!*T%<==L(01DU*,LSAK`J.?6@-P:F?9%:$0H97B"+-$BB4Q%I@EQ-59\nM.029F!&$$"B*B*E2E16Q2F198#2LT*1D(3`<%,1**8M$[@UQ'I%J2D0:]=M?\nM(`U@#!!*!#2.,8WXX'`^(,X1`B`![PV1>G,7@A""!QRI(9@:JE9'KE2;3[N=\nM80JQH51%B7,>I-Z^GVF$N&3\nM"-$T@D4$Q0ULV(9S]?[G9.PW\nME&(T1C76&BI+1)2JC)1E12Q+RG'%<&24E3`>1V)5$:N*87>5\\>K!%8WE7YK*\nMQS5:<GYM@)O-PL@8)@A,S5><#7-AXR(\\NE]A%GQ`I2\nM](ST(JK.99SHS;#65ZHTQEN?*8[0#@\\0LJ6&J=R08O5Y1+IGPG-.&OCL^\\"4\nM+.1RI?,46;/SQO;LULP%(03!ASKJE$6!640U,1Z-$91B5#`NL;A:C!5H^N<;Z)6)S!%R7-W*IE!(`1%&C,4K5_GKEUM[MV_\nMCXM>O)T;KKV,W"?*\\1J#[@F6CRZS>*AB97@%%\\H:V_7.6Z;GT^V&[%\\/T3D1\nMT+H:D8O(R\\3)6ZOQ6CGN'4'"-H;]/JUV0)RA%A%)Y`V'`_@0(Q&[E!+)+^5I?)EW+G[/G[E\nMK:_GLO/GZ?5/L+9ZA-7E@S2EH.4CGDBKE;CJ8MAS8(I#RZ^*_6Y9^9`##[\\`\nM!.K1QL@P:^?MC>WF]););E,HRP)Q1@A&"%"5"E38W,7L/;#&U.9-7'[!%OK]\nM%5(UIM<]1L,5-"AH4"*QP)O2:`OGS^<<3!=/W?-4?[-S?N\\+0F!2SYHQ:!C@\nMLC9Y9R-(?3)KM0*@B%/RADR>\\3"[C<.[5]AZ_GG$6)%2!"J\\E#B)-'VDH06.\nM$:(ESN4L=`KZ<6LGSUL[FJW.=]?#=.X:,-8P^A@=D8"FA+C$8#`BQ8J\\X?#!\nM2-$A3HDQDE5"45;D0%&6Q%AA*9%[3Q4C6`560AQAY8BL,T^[V6"#FY$LST.[\nMW5H7SCGZ@*'*;N?EFX:\\75PX51MJMS)$/"$#Y^L]D(C0R!Q1NW0:FSFVM,R@\nM*#"MZT)9ED'N".)PZ@CF,0NTIL[#,4]NC6(X'#XU'(Y?&`).P652F=D]X-\\N\nM$E!-B"FCT0A06BU/THB(4A05(HDFN[APRV4\\],.]'#QV,9LZ#JTJ^L.(1"%S\nM`N9)FM%JSQ-F+J;H>PXO'CUTX,#!/;,ST^MC.EOPG_HM*"IDY8@Y,V;`@W@T\nMU96W5C/0Z62$`*VFI]7RS,WES,TU:.E^+MAP@FV=-O?<]P`KHS%KPR&KPR'C\nMY!C%P"AEI&R>]L8K>?QH9'%9V;]GYW\\]LNO.@X/!^LGXK#/Q6ZX!H)4WY6;G\nMV.&<>U7>FA8?LDG&+8@QDE*B*B.J2E4E8DQH+-#1$6:W7,?CCQ[GP+%C],H1\nMJA'O!!%'EK5QV0('%BN>.`*+^[ZG6\\??^-@KK]JT\\\\O??'!=7&=M0E;W!F9P\nM?$!5]FE*>P>KAZ_P^87XX&CD'N?K4Y@:.*DKUE"7X\\-X/UOE"[SZRC?RHT?Z\nM'-YWA.FYC.&4IYTY7(+1<$2OIQP^]!B7N^\\=NGKCXL[QF;+8.1&HD]A6,:XT\nMX\\:L/9^R9A--"><`-SF@4^_]1V4$4T*`E.JS+Z/[V>0.<^V6ZU@VH[1T:O/G[7/?=7'_WA/KE*L%WK5!?/-8Q>;,8L)A*R\nM3LB:4\\084:UJ&VJ)$$`U@2A9)J@F\nM8DI@AO?@77U\\/-E?$I04E5@9F@PO4)61A?Q2O;9QK7MBYTYV;[ADSQWW/?BV\nM+7,S.V_[_@]9?!;.=9WXQDNAU>`-*?%W6S9S8XS=N%W[KKWOZ]8F!L^V!\\^/X$/OZ-6^_04M[2:O#8+T._!TF$A)2%K\nM3I$UV]25`N-D`792>L1[CXC@O,-,<%(?Z)T(PJ38E4X6LFK1I*\\O+&A?/\\YQ[8_>T;6WEZ-#Y=Y_JQ/C`S`V6%;-[$12_:"BNK\nML'2LSO9U8R\\#`EFC1=[JD+?:Y*T.6?-I"8T.66.*T)A"1(A%74ZOBAYQW*4:\nM]2A'7'%KWSO.U]Q\nMS9X/W_.CVZ[RPFX]`X$-<_":Z^'^O51/'H8CQZ`)S$PJ-./^"\nM>0T>YQW.^UIK+5@[_\nMT8X3CW6ZEUWTH7=?G$[#)QS,:W>GI7G&J":RHVGX12>_YK/'E2X65R$NO;MF_-J9G\nMK_Q&?@&[GSCZ\\;\\_=/SW;_"D=?/`U>\\$(`+[GK%\\_VNC?M_7U^"/MX6'[EJ-\nM?S$[V[YMQW2V,LCB'8`Z>9Y._?^7\\=>7SC`PE]TTXUZW/8T/_N'.X9Z;&]C[\nAPA13@````!)14Y$KD)@@MTT\n`\nend\n 6592 industry_add_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```.Q$E$051H@>V9>9`<5WW'/Z^[9[I[9G9F3^U*UF7)M@[;\nMDK",9,`R"190X<:IHB`NCL(A0)(J4I2!).8P<8P3RJD*(2G`JAP02!544BY<\nM`9N82BCC&&QL#/B0)5GG[L[>,SO3T]/'N_+'[-J65P)A!?_E[]1O>OIX7;]/\nM_W[OO5^_@9?TDE[22WI)YR'Q0ANFNT$('&/88BPG@*3\\Z+FU/3`&P!A0$$*,\nM*VWYT.P+\\\\-Y8)#8CX%.5%PO``2Q8\nMF5'<^]M4KO_C4/0/WB24_7AJ"9[<]LLAK)*$Y0J[W_8.QC9?O-]8OIP8-ED/\nM/GZ.$.<'X"YMLQ0;M_%W[J7ZN^\\/1:W_)JOM38DA?'3+62`$6*U1G8@P#+GB\nMM6]@U8:-S_0)Z\\"?G`.$]_P#-]W^CV2Y+`S5JN\\H^84-)X\\=,8_]XE%G\\M2)\nM^\\)RY?Y'?O0_*P'R%.((F^<$VW?1_^9W^3/?_K>/V<662(6X]<&+1;+WB%T)\nM8#0Z[H`VA(4"5UQU-7F:[Q^?JA_(C?A#5W#HPV7+E^*S`ZR(@$%@$`4#'[1P\nMJX7;1H:';NT?'+CVHLV;5C@!8&6*[;9[%K<)+[Z4H==?Y[NU_ANML7^>&,(?\nM7K0R$E;W`%0NRZ_*=K!H:>8VQ'.AJMH#@AO#L`"LB\\,H??YTLS1@<\nM&:)2J[)F>H&)KF6X-<<%0V6^>2;\\/,-V>Q$PN41WVA1+)6I;+_.SGS[T,9OE\nMA:X1M]R[B?BUQY;8!:`U*NZ`TJANEVRA@=MLLJU_@&X[VC>59@=RPP<<`\\*9C_PUM0(Z@BADD.U&F-8B\nMJGX".3^+3G-\\K1E8N\\[/3XU_E"QW,RMN_LY&XGK*4@H93+>#27/BD\\?IUNNH\nM3.(JS;9"@5RJ?5-2'\\@M'W"%./2.@N5;\\E<`X`AP+#@N=LEDU$;%,>GT].G7\nMBB5'9`;-6?3)(Y#EN-M?SF)IB'BQB3[R!%5E"_G$Q$>R+$=9<;,KB#7+G;A#\nM6I\\`;1A\\TW5$Q8!H?`+QDQ^S749TQ7[^:D+SOF_&TM`ZO7\nM%+QB\\2/&VL]671LBL-9H\\OE9'"%(WOI.;I]8X-,//,)=83^_V'L-4:G,Y84"\nM0XZSS\\"!5+/%",'ON,^Z<'8``4((A!"D,S.D\\_.T#QT\\`P"]_.]&F+$-W-4P\nM//'T,3I11*W6CR[7N-\\=8,XK,;H$D5D^YPBJ5BFK&O.P:P_?GVTQ,3F)48:^\nM:C_)R!B_&%F-`^PL>(P(L<_`@<2P!2NX=LD%#^!;FP06JBZ\\[JXF8<6AN&6Q\nMN\\J=FB&+),6DR05A9^?&XN+U4SN%4Q2@+#@&!&RV,D=82U0HR,&`M\nMY7*%U2.C?CXS?96P!L<8U-P,B]K'&MBT>1.^']!HS%.,VGC68H$*\\#(A<+#K\nMCF#]$)$^$X%E!RP(:Y?WED\\\\LSW3L>>0.)069UBO+.,.K+Y@#0B':M%C333#\nM^E+QF2;5`S19<:[E[&>"*D@4#PB_B!B5(Y=)<-`H8#5AMQ:?J#:W%EL6@>F/;VL#A^G[)7&U`EO1J'2E`*^BT(%[L07CN,QUH\nM6=9:2JY@;;F(E@:E-$9;'E,)GTHF6+5G']]X_V?8NF$K"]$"<]$WXN6-?HN;H2P*'G5-R")(;C3Z*L\nMP6B#M09K+2;K8I.((._BNH)GIV+`6O`*T#^*EAJE-%)JC#(<7YSCYL8DV_=?\nMQ^<_=!O"$1R=/DJ410A7L+&VD:23T.PTJ8Y6&3]ZDEC'=&R7OOX*5V[?S4]\\\nMP;\\ZDUS_B+6[F["P`D`L`T30C:A+P7<*&U&.(4XRNDE*-Y/42A=R@W>85>G\\\nMZ9W86LS`,/>.[F4ATR1)2C=)B;HQWY\\^RLCNJ[GM#_Z23&7,17-T99>.[%`4\nM1:;KTSS^Z./<=]]]O/?C[T:2(46&%"D=TZ)M%JGVESB^T>-?BK+TPW'"K$B+\nM1\\X$T.U`TB'*).U2">&XG)PYR@X\nMX\\UQ%CLMNDF&"&%BC=@R7K-O$4/<0?\\*``7=")((QUJR-"-.$B;KTQAMJ)0K\nME$NEI5)RI00":PR+BRU.G:HSTYBCGI_@@Z^[@;&A,>J-.K&*B55,:A)2G>`:\nM@<6BE48IA74,\\WF=PZV#-+,FIJ`(RP6$"XXK$()";M7OF[J]DP'F3@?0L@>0\nM=A#6)>K$C->G484\nM[;1-K&,2TR6W*;E)\\:U';P;JE2XMN<#)]!#6SZEZ)7*IR%*)Y[DXCEC.UAU2\nMJ5>(HKAK90HE'6C.XGC]M/*8),TH52J$0=@#"$)$?I8("$$N%7,+3?P@I)4V\nMV+3A0GS?IQ$WD$ARFZ-16&$0KL7Q``V>Z^%Y'KB&_EH%:\\IH;67^;?M7(4BEIPZC!B[0[R7.'[(4&X9$%(&(8(>4;_$0*DTE@<\nM@K)/W.APV=!%1&F$'_A<.GHI6FL0EN5/P?.8.%S'8AD8[.>RZFXN6;4-:VUO\nMY+,6JV&RCK\nMZ^/5KWXU!Q\\^C.=ZSSYMH\\F2C'4[5U,M5UCH-"CF'EE!#196N_[I$)Z+\nMYSK"]<1S1B&7WAS@.N`(^AS+ODVC",?M/77'06J#4`K/FEZ^B*57,F'!<1!8\nM=JP=8?7P(,5BD?\\]5J79:=)*6C@MAYU[=O)G&_\\4X?0>F+(YA4*!R<>F^:][\nM[F5RD$`]EN,MU6"NZW1TT\\KG=>(8IVMTVL^DL3S4.(@H&Y:1T;(..:+!I=!-OV?U>@D+(/?=\\CZ'+BQQ:=2]I\nMEA.U$]I+MG"R1:PZN*Z+YW@(1XS+>W7ZW'?B!O!%K*VBE:4UCT@CW""$9?.#\nMG@4E\\$/P?1`NU@B,!6-!:XNQ@H+C&29/7#*=S%QW:.*0JP)%1T0D1&1.A!-H\nMRGU%5M6&T26-,;UR)5<9S4Z3+)?$:4H[2VBG"8GL8JPE]$K$Y!9M'UG_^>%>\nM"HE'`)@'!5V%0?`7-(118:9%2D><]RS))EBD`\\ER2\nM)"E*:MKM+JU6#R+J),C4L&-P+T)[U!M31W5LOGS!;PWJN3O:9U@7^O]4!.SA\nM*9[FL^1\\"4E-9IJL*"D4/!Q7T(F[](_4N/*J*Q@:'<2ZEL7%+MIHN)MP[XGO1TF4WK+CT^L>>^B&X\\!I!?UO0#-`$6CP%&5:.+S2N@0XRTLV\nMD,@N1SH'.9C_C'KY&`].W\\]\\-(]0'CN']O+.+3?S)]VOI%4`+EPMY%V5N<2K.QDHMI%(N$08%"H%+X!+L5?3J?,%]W^X2:^N+B,[=^<0``]@`/\nM(7@C+Z/"C6[%?4.M5JV-#8RP>F"4D>HP@Y4A!DN#6&LYM7B")Z8>:\\\\L3M^C\nM8W-[?+]^V-_NV/E_CDZ[[8L'L*PW`2D!_;R<$F_P`O?E0>"O#?QB4"QX(&RF\nMC)Q06CV,Y+O$SD-.B63^;SMGO-V+#["L'<`L@MV4"!ER`Q&XKL"Q3HH4C?3'\nA,A:KA+4//G\\!ZG3]'R,#]?7;5S!:`````$E%3D2N0F""\n`\nend\n 6593 industry_back_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```.V4E$051H@>V9>[!=57G`?VN_SM[GG'ON.[GWYD%,"`D)\nM>1@J@4!D-*&=JA2Q4UM`JJ-5:VV'CHI.I474B<*4/JQVJHVO%FVG3CN,S*@X\nM,#JEEJ((Q!0(22#AON\\Y]W5>^[T>_>/:Z]UYOOM[_O6\nM^O;>\\*J\\*J_*J_*JO`P1+W5BO?S=#FK?M5QQ,;$/`7Y5<*P`(,F#S%\nMV_T&RC?\\<2!Z^FX1TGPT,?A/7OCS(8S,"4IE+G[KVQG:L'&_-GPQUJPW#GST\nM'"%>'H"]U*8))FQ2V+&;RF^_.Q#=/;<896Z)-<%CF\\X"(<`HA6RW"(*`75>]\nMB17GK3N=$\\:"/ST'".>%';?<^172+'?[NRMO+Q;<\\T9/'-?_>_@Q:W+LV0>"\nM4OE'C_S/#Y<#9`F$+4R6X6_92<_5UQ6JW_Z7FTV](1(A#OQXHXAW'S?+`;1"\nMA6U0FL!UV77I%61)MG]\\>NI@IL4?V8*C'R@9_B$\\.\\`R#V@$&N%J>+^!`P8^\nM.SC0?Z"GKW??^1O6+S,"P.0))FIV-&P2;-Q*_V^\\K6!W]WS$://Q6!/\\U_G+\nM/6%4!T"&+62K26#;[-RV@Q7]@V_4AH.18A,(WA.<'6"9!_8\\]`W2)*5OL)]R\nM=X61F7DF(L-`8Y95_27^[<7PLQ03=3R@LQS5;N(5BW1OOJB0/OJ3FTV:N9$6\nMG[YO/>%5)Y;8!:`4,FR#5,@H(IU?P%Y7J)F:^]TDA[,-.^U$$=_WS?\\\nMSL?^X^[G!I\\10B9JH1MUY-2S\nMY',U5))14(K>U6L*V=CXAT@S.S7BMN^L(YQ*6`HAC8[:Z"0C'#U)-#6%3'-L\nMJ;C0=.09MA;7D>]V$]87T0=?X**-&XV,7%3FF9((VZS!:'B5!*W2:8F\nM0&GZWO(V6IY/:WP"\\?!#;)%S9#K=.YVK@ZGFO9801Z^U#7>KY4%P=A&0S$R3\nMSM9H''GB^=?L4P,BS,P8(DMI[=K/[1.*=WWS>QPX-,Z_=VW@\\>[5]`Z/N([G\nMW:2-^63%-@$"8[0BFZMA"4%\\S>]QY\\0\\MS[X"/<$/1S>_7I:Q1+;7)=^R]JK\nMX6"BV*2%X#?MYTPX.X``(01""))JE61NCN;1(R\\"0"?^HQ9ZZ#SN6=`\\\\?0)\nMVJT6W=T]J%(W/[)[F76*K%R"2`V?L005(Z61"W.P\\Q+NKS68F)Q$2TU7I8=X\nM<(C#@\\-8P`[785"(O1H.QII-&,&^)1,<@&^M%QBHV/#K]RP2E"V\\3?5HA3U=\nM)6WE>/$BJX+VCG5>_8;I'<+R!$@#E@8!&TR>(8RAY98X-EEEZT7;N'@*_\nM0)YEM(Q@*I&!7>:@QO?6$!+D"8I0/9F,>2/3Q][!BK5Z_&*7>Q,#^/';J>G\nM=)5*K!E8R6BSS@DRGCKV8\\8&ALF`(`]`@JQ763M7I6)9H#0&Z`(N%K#!@&T,\nMWSL%L*MH0(,H>-A^$=NQL2P+VSZE-K9M8YTZ=NRE/@NA#71UHXS!1[,_&2>.\nM!5,/?)]`P-IPEIU%3:_KHI7"`JHFYUXOY@=].6$?5`:[*'79N);@T.Q/F6\\N\nMT*Y6V3@<4FBXG-\\0"`0&<('!,^Z;`["Q0&?MWWTQO/E&D#GD:4=EUCE72ZIE\nMYSR+0::8-$&D&V/8]1BG*7A8N'EIH=2F)P?U`N<_\nMMP\\HP"]"_W#'\\"2"I`UIW*EU<@%*0KL!8;T#X=BG$^B4&&,HVH+5)0^5:Z14\nM2*G)C>&K28U[NAS>=_UMW'#5==BV3:U1H]:JT4I:M+,V41:A',6JD1&NZMG'\nMTVO.X[^//,A8SR3O."P86>R8NAS`HF-4V(`XA)-/(HU&*XTQ&F,,.HTP<0L_\nMB[!MP7-;,6`,."[TK$3E"BD5>:Z0N2+/QT_#6R^88]QW:/&[*S#PC(`<0J@\nM!5&+J5SP'7<=TM*$<4H4)T1I3G?Q-;S'.<:*9.[Y26P,NG>`^U;N9CY5Q''2\nMF1.G/-MXAH<"BSO_Y$XNV?(Z3E9/TDI;IXV.942L(A*3D)J8E)B,F%PD1*9%\nM1(O>_@K'-Q3XFI<4+YC$3SP://)B`%$;XC:M-*=9+"(LF]'J**/CDZ19SIH5\nM`ZBS/(`K`W.IQ.[N9[$]R3/C,TS/SW"H^2`WO?.#[-EV&2>K)VEG;4+9,3Y5\nM,;&**`4EM@]LY\\'1!Y`J(1,1T]$8HPNCS#;G:4,KQ*;QGK--=9*_I%@\nM&8"$J`5Q"\\L8TB0EC&,FIV;02E,NE2D5BTNEY'(1"(S6U.L-QL8FJ3>:U/))\nMUJ]?R[577LO8W!B-N$&X%":IBDEU3%^ICRV5BRBY)6P/FNUYCC6.4`NK)&1X\nM@:`H"@A+(`1NBGR?'C/?9ICJ\\P%4W@%(V@ACTVJ'C$_-(*6F6"I3\\`/\\H(@X\nM"P!"D$O%V,PD"XL-G(++7&N&]UQZ(])(YEOSA"HDUA&I3LA,PDC/"!N#S>BF\nMH5T,:>@Y3D1/DMHMRET^!=\\A37,+1+01!U'R$@EPJ#1:EE2GK=I$.L38BJU#6RG,%YE:F*94*K&X6&=PN(^KAZ\\GEB$@,-J@M$8K\nM0UNUN>OP5YB0TV290GIJ\\_2!!?\\%(22A-@[S5<1:&];&JUG9LX):HX;G.62^/>"?[P3/]T":P,PX\nM:(5E6?A^F0)0+I?Q_0#'*^#[SEES0`!>P:=4[J+2W4,0EU!U13-N(AU)V[18\nMV[660C/@RW=]%==S$4(0QS'-9I-JM4JCT2#+,I12:*T10N"Y'E>\\Z3*\\HH/C\nM.KBNQ'%MX12<,U8AF\\X>8%M@";HLP][U*Q&6W;GKED6N-$)*'*,[\\2*6'LF$\nM`I#A@3[*Q3)&C/-X+68Q7,04#*$(.3QQ"+'"<.6^*SGPR0-,3$Z<\nMOB&[=NUBU\\Y=&&.62L=.O^>XK%PYA`@%CF-A60++6&TUH_,7)'$&M@]^B=Z)\nM(UR;-="%`.,7.VTAP'@%O*$1\\-:!7T38+I9EXP@;V_&YHKN`MERP70K9,-_X\nM:4:U7B/H]HE$B+0S?CAY'UO7;.73?_4I;K_U#HX>.XKK>MS\\\\0^Q8H]'*)MH\nM:4C3G"3)R5/),\\YC+,[-8ELVKNUBD4S$]V31F<_$"\\#G,::"DH;&'")I8?L!\nMG-*"WU&_"(4`"@40-D8+M`%M0"F#-J)37B_,%I)VXW=_=N)GJWI7]!#:;1*K\nM36J%')[_"6]8MX]/_O6MW/F)O^%GAP^C77?>90>T`B$<`F`/]V6[0"I0T\nM.'AT>=U,YW-5DYL?)E/YF=78_Z_(.4/[<@6*AG'-;QG7%(UCL%P+UW5P'1O/\nM\\^5U<\\)I-/!H^0#VJDZ:2.,Z(XXPH2LE3S;KR)FKU>:KSM6_5\nM#X5?LX6E?V4``/0#,TS1RP`.>W`!!QS7PG%L;+NS[#;T(E/J!*5*D2,+AVDE\nM(6F2DR098922IX8=?9>A,L%CHX^=C!OIA\\MK_:GJWS5^=1X`8`;8B2'C<3RV\nMX;`!QX`EL&T+R[(ZBQF"MFSRQ,(APC0BRR1)DA-&";XILW_--;C:Y]XCWVTM\nM+C0^=M7M6[[_^!>G2)[,?L4`T"D7U](FX6%L+L)BG;%,9]\\1G=)`&X-6AEPJ\nMLCPG37-L[7'QBLNY;O,?4&W,\\J^/W-6LS=5NC9_-OW+R_CD]]T\\MX&5\\Y/NE\nMI!MX/9#P&LK<+LKB6K]2<"N5,N5B0#'P*/H^13]@H#S`AOZ-;%OQ6HI.%_7G>H\nM=P6#W0/T%GNH!-U(+9EJ3')B[OC<8KO^79V8OVW?*P_YNRRS>-?SW[6_L@``\nM5P`_`JYFB#*OQ^=*MV!O\\GRWQW5MA"`WRDP8HQ\\14MQO&N*P<$56__*+?R1X\nMY0'.E(N!)H(+*%JK1,'Q+$2,SI_1H?]:)X^^F<,O^'[\\?Y'4R4PV9:9!<5W7'?_>M_5YW3\\^^:4:2-=I&DB4A\nM@>5-++8`@TUA[(I9#(1`B"&A0HH`J6"2D,60%%1224@%HDH^0)8R10K'E"%>\nM,#8X>),E6=8VDBQI-)I][]?]]GMO/LR,;5F6,5;B3_Y7G7[KO75^[YQSWWVW\nMX76]KM?UNE[714B\\VH;Q=A`"0RG6*V5M=W<"T`G80HBA7&H^-?'J\nM_#!>7;,%.19:(WY'(SX;2>S9K:^TI0!$OT+\\0RQUGQ+PS997Y\\-%`5!"`T6E\nM^8K0?"'6PIW8_,J#JF&7TGP[DJS*#/BKQE_=A8L#&`8,`W/+%2[-;5_6F?Y\\\nM7>.>V?3+(52F*7=VZY:U_=+B`")`2>P=U^#]^N<\\T=1\\\nMN\\CUYR.->V+#RT,H"85*$V_\\T,?I7+]QEUR(1!\\"_JCT6@$8@`:=)3@[WD;I\nMUL]XHK'Y=I'K+\\::PN'^EX?0>897++']QEOH[%NS2VF^%2E6:0N^^`HA+@[`\nM7-PF,;I>Q=VR@X:;/^Z)2N/M6NK;(X6W;]T%(`1H*WM[Z9]Q\\7@R>/JF0/[C.$SIW_F%4N///7H\nM3\\\\'2&.H!^@TI;!A*XWO^:`[_E___@4]-R]B(>YX?(V(=AS7YP,HB:S70"H\\\nMVV;;Y5>3QNFNH=&1W:D2OVT*!CY=U/QC_<(`YT5`(5`(6\\%M&N[0\\+6VUI8[\nM&IN;KEW=M^H\\)P!T%J/#ZH+5JWAK-M+RSIM:WTER*%]_/5YT="RP6`\nMO!Z0!U4\\TV3KI5MH;VF[1FEVAY)U(/B$=V&`\\R)PY6/_2A(G-+>U4*HTT#TV\nMS=E0TSH_R;*6(G>^%'Z:H,.%"*@T0]:J.+Y/9?TF-]G[Q!=TDMJA$G]^_RKJ\nM;S^YR"X`*1B23,]@SL[2W]A$6`UVCL;)[E3Q20,Q\\-&"YCOQ*P"X\nMX>2#4`6R-G)G-6UQ1/_*;8QDBN4[K^(/_O,'S]_\\@A3288":GR,?.4TV-8&,\nM4UPI:>KI==,S0Y\\C2)QX;._=>L>A(EL#L\nM!'+P."0IYH8W,>>W4)^;11X_1$.N[?3LV<\\F24JNQ5=,05VR5,0UXI&S(!7-\nM-]Q$X!0(ALXBGGR,#?D4J4IVCF9R=Z+XI"'$P/M,S0_D^4EP80F(QT9))B>8\nM/W+HW&OFT@TA>NP,(DT(MNWB+\\]*/O9O/^:._4-\\O]S'P4H/35W=MN4XGU5:\nM_VF#J3T$6BM).C6!(031>S_`-\\Y.\\\\>_>(J[O48.['@S@5_D4MNFQ3!V*M@=\nM2]8I(7B7^;P+%P80((1`"$$\\/DX\\-45UX,A+`+"0_V&`ZES!W3.*0R=.4@L"\nM*I5&9+'"(V83DY9/QR)$HOFJ(6C0>:[SF2G8>AD/3,QS=G@8E2O*#8U$;9T<\nM:.O"`+;8%FU"[%2P.U*L0PNN773!`OC>*H&&!A/>960X@8K1<`],)/)X*_%8+N'*&/3P7"G0EP!%0,\nMG!*I69F9[&C&H4A0*M*19+=+5U\nMN.GXV.5:2G26D8Z/,",+:`VK5JW"LFUF9Z:P@WDLK=%`"7B#$!CHWN-HUT/$\nMST5@R0$-0NNEHZ4+SVU?ZMP+2`S\\N7&6YYHA`[J6=8,P:'`LNH-QEOL.&@%H\nM2EZ!91U=3#M%6+\\5?^5ZKFQ;1IQF='9V4:W.XQQ):0OKE`2@-!I!&=@NH$^#\nMJ34_7@+8YFM0(%P'L^!C6B:&86":2V9BFB;&TKYE+IXS$$I#N8+4F@**7?$0\nM4208^=F]>`*6UR?9ZBN:;!N5YR`,U)K-^)==B[6JG]PKH^.$SCA&YA*E-2UM\nM11H;FLD[>A"//HQZ[!&8F44#-M#V@N=F`:QQ61C[=VR'ZS\\">099LF!YNG`L\nM%TWE"\\=I!'F"3F)$DD*^,+;U%`QN;/HH.,E/D\nMN23/S?SSG=OXYI-O03C0U2K\\V3:(`AJ5"[9SJFI@('3PQP_M(>I_WF<+9LW4'[O\nM+;@(O+U/(!T7TN0%`&()((`P8"03W&.O)#<4]2@AC&+")*/B7\\(GK&.TQU/G\nM%K'6J*96[N_8P70BB:*8,(J)XH0MV[;3M7H=#S[P$/?L/47+&]_.;==M8WUG\nMF;DH9SR3S,X'"-L!TZ!@&ZQI+]/>T,>Q]E9.[7V_F;\nM>QS+GN?OOO:"%]D20%B#J$:09%1MG\\BK,%B-V'/R+/M.G>79R3GDBT>@I2S4\nM,)7D&)5F9J7FX)D1)F))9=D*#APXR+U[!BAOVANM=P=.`XD6$NSQN;/O/HP&'K`Q_]U(LC\nMD$,80!1@:$T2)]2CB.&1,914E(HEBKZ_.)4\\7P*!5HJYN7G.G!DF".J\\Y2UO\nM(T\\S'GSD"<*N#=RZ;L&C4/`0Z04B(`1IEC,Y/8OK\nM%NCN7H9AF`PN)OK;OU-W*X^)NHIKF/B.C:&\nMR@E.'F3VZ-/T7_%6.OJW(I7`6K&2X,A>TC1%*77EPS^]SS]_%`KFX1+%<(IT;9WC/P_A%GTNONXE22SMYGI.D.5:E\nM@5)K.[(ZB51JA>.ZK>=&0.8P,033XXCE)K;CXAL6GN=3\\!8CX'D07&BU06":\nM%I[O4_1]"H4"]3`DS"3%HL_DJ0%FA*)C53^FZW'Y];_&P,%]//3][Y#<=Q?M\nM7=UDN>0-U[R#_BO>BNNZ**T)@Y")XP=H6+Z&E$1IV`6H%"DZ>P1WI?.HUP/7?`7MJZ'=ER3863(>"DFLR%LR1^)?0V-I-+96D<4ZJP7M_1]J:ZKXPU,C'!E?\nM3<5W\\%P+S[$I>1:&(3`-@8E&KMR,\\_2/<)(`O]2*8QMDN4(#0AA4IT>Q94:J\nM%6$8/O/HP_?,60#B*0"F0'UM8<$SND"1OG)]^<^^CJ[KIO9RLJ&KJ^/*@>%#\nM)-598J<-RY38T2S":4,(9^'3%1#E)E1+-];P`&9'!UE8`\\NA8!G(3#(].$BC\nM7^#(X.DTC,+[KKW^5GUQ2XLOHR.'#[*V_]+9>KW^'[Y?5+U-1=2I9T`I5'T.\nM`X4V;;1>F`>F<4045$F7K2<]OI^T7J=:CY@='<41@LF1,>3,%)8I&!H>V1.&\nM]8=JP=P+IY/_QP`'GV;]QLV$87C*M*S+2J72ROGA03(%Q:[E>)4F+-/$,@66\nM`>.'GH(\\I;R\\#T[L0Q@FK2O74O8\\SHY-,[C_&;H;2_SBL2?K@X-#MUA50G\nMQ[&5HGGSE337)B&3G#@SSNG]!UG5T<3!0T?4X2,#NX/JW%VS,Y,C'5EJ85A4.#;P+/6A(;HJ'D_LV2L??.B1[\\[/S]U>\\+S:_L?O!R[B3[Y?\nM1>__R&]QYW?_B=M^]TOO,BW[ZUJIC4F2(H6!4VG!;VFE6*E0V9>91<59W'/_>M]:JJNZIZ23KI#MD@(20D\nM,=&$`7L001&0X\\DH\nM4=##%A,P,<1LG?2^5G=MK^JM]\\X?UW5_"V\nMWM;;>EMOZTU(O-&&WFH0`DU*%DO%4:"6>N[UM=WJ-8<>7(&[-#\nM>V/-ZK(,E$+\\DT)<4XLQ)U:^WI8"$$LDXMM>K!9*`7E=A\nM]RQ[;0@9*AK:9JOF14O.E(I-7LP"=/BW/Q/BS0'4`!ECKGT?SJ>NMK"OO0*7\\:0L:0R.1XY\\WDI6?%]4@L1,"7TV\\5@`8H4*&/M?:]I-=?\nM[8ALTXTB4C=XBL0+2_XTA(I"G%2:U>==1-O"D\\Z2BKMKD@7*@!M>)\\2;`]`G\nM:]]#N27L%6MI_,@ECLAD;U2QNK$F<9Y;/`V$`!7'1)4RCN.PZOT?9,;<>2_V\nM":7!M:\\#PCCVPHVW?1\\_",WF3.-%2=N5_NW.IWYU\nM/$#@@5M&!0&)4U:2_=`_V,,/W;=1%8K"$^*69TX2M;4'U?$`,B9V*Q!+'--D\nMU6GO)O""LWH'!S8'4GQ&%^R_*J6XRYT>X+@(2`0284KX1P6W*/B/UI;F6[)-\nMN3-/7+C@.",`5.BAJJ5Z<4LX)RVE^>P+;#V3O5Y)]:6:Q/G-B<='0L5U@,@M\nM$Y5+.+K.RE-7,*.Y]7U2L;D:LQ@$ESK3`QP7@=.?_B]\\SZ>IM9ETII'90WGZ\nMJHJ6XBCMS2GN?S7\\P$=5ZQ&004A<*6$EDV1.7F;[NY[=J/S`K$KQ[[]8@/O^\nMKDEV`<0QD5N!*":J5O'SX^@3$RS)YJB6RIV#GK\\YD%RN(?9?G%#C66S%O%0"@YH?,,OO#C!U]Z^&4II*IE9+%`-'"4<&R$V`NP\nMXYAH#@P0^2%Z%+/$-`G"\nMJ',PC#<'BLMU(?9?9"JVAJ\\!@"9`4Z#IJ,D2EDM$KHLW-/3*9\\6D(:$/$R/$\nMW0?!#]!/>1>%9#-N88+XX%X:(V4&?7W7^'Y`I,17=($;,]6)*W@#?1!+FM9=\nM0-E*4.[M0^QXFE.B,0+I=PZ&\\69?$.#^*,C%/?M\nM?>4]?>J!*FJH!Q'XE%>=Q=?Z8C;\\]\\^YY?E>'FA8R!\\R'>1FS38-R[I&*O6O\nMC;IR$"@E8X*Q$30AJ'WX[[FM+\\_-3^[D82?+[K5_33F9XE33I%G3.B5L]F(6\nM2R$X1W_)A.D!!`@A$$+@#0_CC8U1VK_O50"HYW^UC&R;R\\/CDKV'NJB4RV0R\nM6>)4AM_J.4:-)#,G(7S%5S5!HXHB%8V/P8<1-D.PGLQ\nM`E,&*!!*39U-W7BQ?K5K+R/12!:&.2%2]&HPJWTV"(U&RV!V>9@3DM:+31I2\nM*=I;9]"7+S!8]NA_\\BG,;!N!5%B6B31,K-$1YN:'2>L:1!(%-`"K!2Q4H"O%\nMSZ<`5B452!"VA9Y(HALZFJ:AZU-%1]=UM*EC0Y^\\IB&D@H8,L5(DD)SE]5*K\nM"0:>V(8CX`1WE)5)2P@\\@JH]M'0F-]=F0T4H>%<>D&S1,+&0D\\6/%SNXQ=N=]VD_OY(*/\nM?I2YRY=CV#:^ZU(KE7`G)ICH[:5_[UX./_,,NP\\=I"V.:->U%[-7'0L`0`PD\nMDM`\\JVZX5P6O`GZMOM8)!<015(K@%NH0AOYB!YJ24HJD+NA(6<2A)(IBXEA2\nM#6-^N6^`T<997'CG32P_^VR"6HW2\\##%P4'\\Y<4FO6<'3'#D;'\\[0@E`G(XP#$%$`9JF4&0L&C\nMYCPB3>+6?*HUCZH?DDG.YU+C`#.\\L5=V8J60N19^,7,M>3^F5O/J;6H^P8'?\nM8:;;N.+..TDT-+!]TR9D$%`Z?)@Y2YK>+V]6+[/S#ES&-VQ\nM`Z>UA=FY'".%`L4X-A+U$7P:@&H%:A7*?D@IF41H.MW#W73W]N,'(7-FM!!/\nMLP&/%8SY$7JFF8E*/X?ZABAV=3'CA=U<\\SER^G_?33\\?;L86#;\nM-EKFST?(&.&Z!'T]F`I:K[H*9]8L,M^^D_V;OPN>3T8J:K!P'-:D8=M4XKP,\nM(()J/0*:4OB>3SZ?IW]@"!E+TJDTJ61RGGX*$T6D\\G\\U>O9ML==S!CT2*>&1[FWBU;$(L6L>`#'Z#\\^^>1^3&"GB.80M)RZ64<\nMJE38LG4KW@?/Y<0/K\\-6DI2F:!!D,G#%84A<=QQ`'-8!:A6$DI0K+MV]`T21\nM))E*DTRE23A)Q#0`"$$8Q?3T]I.?*.'(F(9*F>7G_"WNQ`0)QZ$T-(1CVVR]\nM_WY^^,,?XB]>S+P+/TIUWVY,(?>01=N[:A5XI$?0=)6E!P@!'\nMAP:-SH6PI/U54ZA6@8D1-"-+,7"I>3[)=!HGX6`G'!()!Q%,$P$A",*(T7S=\nM6*N0ISF7)=,VB\\K8&`M6K^;P8X\\Q3PBNNO)*;K_C#J(XYO+++F/1QB]2T@T.\nM5*K\\]"<_H7]PD"]>\\BGBNV_'?WX'C@5Z7%\\L$].:@C4-@N=>BL#4*%0N0L\\!\nM1.`1!!&V[9!,IG!2*9*I%([C3)=!"`%A%*/02*4;,*LNF99FXC"D5B@052K,\nM7[*$^/GG65HJ\\L_77LM##SW$EBU;>$$8[!H:X6F^\nM-@ATW/L[+SW7S^LU?SS6]_\nM!UW7:6UMI5`LL4A0+!*6\nM2L2E$M)U2=LFQH%]G-G92<><.=QSSSV,CX]S[>>OX^1&AW3/?E(6."_SO%7W\nM/*8&EHZ^3"!>BH!.?0[0-=`$#9JB<\\%,A*;7O:YIA+%$1!&&DG5WB,DMF5"@\nM:0@4RSM:F=721#*5XH][6BD>V$^U4$"O5C&K5337Q>_K)I5MI.6*JSD\\EN>4\nM)4OH.GR8!Q_\\*99MT_JQC]%VTS>HW+H1?WR\\[GD%L59?$!@:1#'%SWT">4PG\nM#D!/0")%KF\\?YP=%I.V@$LEZ;3LHR\\9JFPW6/$@D$;J)IND80DDSG^-0M<9O'G^<@<%![MUT%WL/\nM'&3SC^Y!QC'KUZ^G_5^^0?G6C\nMM:LQ:QC8$Q.T=70P\\[/7TE6M\\>OMV]FW?S]?^-1ZVA_8Q-Q%R^#3&[AK\\_<(\nMHX@-&S8P^X9O$'SM!L1H'DT3&,E&*)1K(?%SO?)-_#_P6CI7$\\20S"H><(0X\nM)R#V;]W)\nMNG7KN.[SUY+^WJV,_.`N@DP30:*1T2/=._L"=8ZN,:J_MBEO3&4%*Q&A#])0\nMZMP$&);O8PE!XXH5//'LLUSSL0O)W?\\#2K_:AF&"I2+XPPZ6K5A.]K2_872B\nMP!E)#>^^381!@'G**BH]/;)NJIO&?U*OS;OD0X-H9S\nMYCKT[P4&?OZS(V.U\\!.S3)Z\\N0#;X[]@\nM!`#*U#?C[X2Q-P)0^")P.],**%OAZ3H@S<[:E)QV+\nMA*61,#5LV\\1.)DBVS:1AV0H:WK&&.)8,;;U7C3WS]-.E2-[PD09^>UL1-E9>\nM>O=;`@!P-O`N8!Q:6N'362$V9!Q[44,N8Z1GM)!LRI'(9;#2:62M2JV[*W:/\nM'#Y2K7CWE36^.U^C_Q$?OG[,!]ZW#&!*%P)_!/$AF-T$?YT4G&'KG&@:(F5J\nMH*%J2([$BJ=J&K_>+>AI4<@OUU[]?6\\YP,MU,>"!:(9$B\\`T-"A!-""I&:"V\n;'/OMZ57T?YC*+/`N5^DI`````$E%3D2N0F""\n`\nend\n 6596 industry_next_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```.PTE$051H@>V9>]!=577`?_L\\[CGGWOO=^SV3+R$ODT`>\nM!!)"(20QVD)H:T4KMH,"HM9'U59'JV+'4BW50=N.[=3:AS8M8]'6QX".=!BJ\nM,MHQHB`JR#LD$/*]W]^]W[WG??9>_>-^"8&/:(3*7ZR9=<]S[5F_O?;:>^US\nMX45Y45Z4%^5%>1ZBGJMA>\nMFQ_6FP_/"X`J`E2,\nM<+T2KDU$>5/GGGY0!?8;X7.Q9GUNP5]W__(N/#^`4<"RL+?O]N@=^'/)Y8.A\nMX`UM^\\40)A>Z!E=*WUE;+C'"YQ+->FSXV"\\)\\?P`8L!HW%T7$[SI_8'JZ;U.\nM%?+!6/".;/WY$$:#7^_AUZYZ"X.;S]ZO.Y'8@(*/5%\\H``L0D#REM.LWJ%[]\nM[D!U]UZG"OE0(O@/;_GY$%+D!)4JY[_F"@8WG+G?")^-#>O%@0^=)L3S`[`7\nMCVF"A`MXVW=1^[VW!*K>?9UHN2XV!/=N.@6$`M&:HMTB"`)V7OH[+%N[[D1.\nMB`7O.PT(YYDWKOO4OY-FN=M7KUU1]MRUQYXX;!ZX_UYK=.C)[P65ZO=_\\L/O\nM+@7($@A;2);A;]U!]ZNN]":_\\5_72J.I$J5NN/M,%>\\Z+$L!C$:';="&P'79\nM>=%+R9)L__#XV(',J#^R%8?>51'^)3PUP)((&!0&Y1IXA\\`-`I\\39]O_5:SZYW?U",_%EL"`YN7!H)T1V`(FQ1\nMM!8(;)L=YVQG6=_`Q48X$&DV@>*MP:D!ED1@SUU?)$U2>@?ZJ-9KK)R89202\nM^IO3G-%7X2O/AI^E2-2)@,ER='N!4KE,??,V+_WICZZ5-',CHS[^[?6$ESZQ\nMR*X`K2G"-A2:(HI(9^>PY^?9TMU#M-#:-YZD!S+#VRW4H3?ZPDW):0!<]L1W\nM8`'(!RA*&QE(8K:LV\\E8;EBS;R]_>LO7GWKYI"$D40O3;%",/4D^,X5.,CRM\nMZ5FUVLN&AM]/FMFIJ.MO6T?Z0":\\W5;JT!6N\\-7\\%P!@*;`$+!M9U+RU0!&&)!,33W]7+3J2IS`_A3YV\nM&-(,>^L%-,I]A(UY].&'J!7B9B,C[TW3C$+4];8BU!Q/XC;)V`AH0^]EKZ55\nM\\FD-CZ#NN8NMQ0R92?>-Y_I`:GB[I=2ARVWAZWKI(#BU*$@FQDFGIV@^\\M#3\nMG]G'7XB0B2%4EM+:N9^_&M&\\^3]OYX;[AKFY:P,/UE?1LV*EZY1*[S4B?UFS\nM)4`A8C39S!264L2_^WH^-3++1W_P$VX-NKE_U\\MHE2N\nMC:[4^;[=P[139ODB1"I\\PE+4I"BDF)N!'1=RQU23D=%13&'HJG43#PQR_\\`*\nM+&"[ZS"@U#X#!V+#)D1QR:(+#L!7URL$:C;\\YJWS!%6+TJ9&M,P>GR1MY93B\nM>S-FTF\\#WR+*,E\nMBK&D8&V]B^7+!YWA\\8EWV3J[2/+\\\\P"7(&2Q9.B.8M5='/DL<=8M6H53K6+N=E9[+A-11D0H5*ILF)@N9=-\nM3ER$&"QCT-.3-+6/"'15*GB>S]S<-&YK`4<$`:K`>4IA(:L/(UZ`2DY$X+@#\nM`DKD^-7Q!R>.SW;O)!*+G;E_U_GPRFN@R"%/.UIDG6N]J*;H7&LY-*>2SBR\nM9BUW/OP#1NJCO.$!Q$14@H(;7>&A>>GGV\\MW,9MJXCCI\nMV,0I1XLCW!4H_O8]G^+"K1=P=.(HK;1%6'2DDI"8D(R87,7D*B&2\nM%B$M>GIK'-[@<6,IJ:P?)TA+-+GGV0"B-L1M6FG.0KF,LFR.31[CV/`H:9:S\nM>ED_^A0;<"TPDQ;8]3[FVZ,\\/CS!V.P$]RW]&[VG+.;HY-':6?M3H_K\nMCN.)2=`JY[PU.WE\\[C"'IA\\F)60\\'N+8[#%F%F9IQ1'&TXREY'9*:A&Q1Q1+Z2GWT]?23F#9?>^1+3+0G2%6.\nM&R@JEH=E*92%DU*\\31Z7KS'(Q-,!=-X!2-HHL6FU0X;')B@*0[E2Q?,#_*",\nM.@4`2I$7FJ&)4>;FFSB>PTQKG+=>]$8**9AMSQ+J3L^G$I-+2B$9.2G*@BB)\nMB\\E;EDZA.(VS$]A.=TT\nMLY`X22E7JP1^T`'P`U1VB@@H19873,_.X_ME(MHH3]BT=C-3S2D6L@5"'9*2\nM4)!2D%%8&5KE.+;"2$&:"59A<;'_:OK/'N#6HU^FV5[`LJS%5!.T-JX4V;Z!\nMJ^JW+)V%6DT8>@RUZERRK,#S`OQ@4?V`(`A0^;/ZCU*0%QK!HE*MT`AGJ58J\nM.*Y#(VH0F8B-*S92PJ60`D$C2D!I+-N"T.+HDT?I[>TE2S->XF_CFK/>PW\nMEV:S21`$:*T)YKJX>O,[N=GZ/(\\71\\ES!R]UR+VB3V]P_:='($U@8AB,QK(L\nM?+^*!U2K57P_P"EY^+YSRAQ00,GSJ52[J-6[*<=E=$.S$"^0.SE2$EKM%@IUPN8]LV[5:;-USS!G:M>1E#P]S\\?,=<.NNX4HK9N1D.\nM'CQ(412("%U=-?[D`^\\C7#7)#\\;OP'4=;#OOU&=BM?2XR9^1Q!G8/O@5>D8>\nMX?*LB?$"Q"]WCEZ`E#Q*@RNAM`[\\,LIVL2P;1]G8CL]+ZQ[&\nME,G&%$'-)\\D3[F_>QP57[B3,%S!VCN>[>+Y#K5IE>;2>JU[U)L8GQNGO'^"Z\nMO_@PRR_VN6/F%C(WPE(*R[)P;0=+J9'X:UET\\IYX#O@,(C5T(31G4$D+VP_@\nMN'I^1_TR>`%X'B@;,0HC8`2T%HRH3GD]-UU*VPNO^]GC/UO5L[R;T&YSS]@/\nM254;2CG5FD>]7J9>#UCN]O/;UIM1RF+UJM5<_\\F/XNUJ/G*5[)W[QX>[?L^#R9WDQ6:.,Z(HI0LU:RK;F:J,&`[5@X)VV:U.)DT-_5SX_"[_!H>"]Y;DCBC#!*R3-A\nM1^]N=`;W#MUW)&ZD'ZBN"<8G_K[QJXL``)/`^0@Y#^"P%9NSL`5LL&T+R[).\nME%7::`[-/\\!4,M%Q/LD(XP1?JNQ?_6H?_+]4G(>L`)(64V-CZNJ>KU7\\[SN\nM6I5J)2#P2Y0#GXH?T%?M9V/?66Q;MH.*W<6W#_\\/WSGTK:?F$`CLLK@)0*W?P^%=[I5_WS^KM[O,&>90S4^^FI=%,/ZA2F8*PY\nM*D_,')F<;\\U_P\\3R#U-_UWJX^W5E&E^)GM;D"PL`L`5X&+B,/KK8K0)>YGKV\nMEE+)[>XDMLH%,V*TN<;9C^YMV9>W!?=V[*ZUD/2W++_F%7\\@V\nM%`/!,`[&3(J)33+VA)(^"(&0I!TR"8:I33J4CI/2H9UFVKI0EZ$P@0X9`I3B\nM>K`[B8U-ZQ:#0;8!2\\*R+.MI2?M^W+WWGE__6,D&9(%CM^4?OC._O<^S^_W<\nMW^_L.6<7OM`7^D)?Z`M=@M3%-BQ>`4IA:,T"+9P$"M'#%]9V1R,`C4!0*=7C\nM^<*]0Q?GP[BX9F6%`HB@OB^H^PH^P<2R"VVI`+50H_ZNZ,L!O:R[.PR4!\nM$$.`J!8>5L+FHJCPT.47GE2!-5IXHN#3XAKP:-5O;N'2`'H!P\\!LO2;,E+J'\nMQ)7[*/BV8\\,AO"'%I``5`^P17?AGK]W]H\nMJ>HI6Y4G]Q>$<.>B3X?0/D3BU5SY.]^B\\;+%:_QR)N:@X,>Q_R\\``Q`0UR&T\nM"Y6-,85&S;1.&?>&BT\\7M"T2``>N$"(\nM2P,PQ[9.$NI/+KW[)4O&JK^+*UH+$.+Y@$0H'X/EXV@V59K+CIMZF?\nM.>MLGQ`#?G`!$(%/GMCZV),X)3=8$Z_<9(>#,[M/=.@C;8>-WE,G7[>BL0-O\nM_>>O)P*4BI#+(*42D47+J+KU]O#@OSRW69(I551JVW_-4X65'3(10/OXN2SX\nM&BL89,75UU$JEM;T]/?M*&GU/5-Q_+M1X>]SDP-,R(!&H5%!#=\\1V";PT[K:\nMFFU54ZIOG#NG98()`'&+2#Y=CEP::]YB:F[^6MB,5]TO6K84--;^N1,S(7X9\nMP,ME\\#)I+--DV=)6ZFOJOJR%'7F?!:"XRYH<8$(&KCWX0!MPZO-!\nMPB^6"/L^U$Y+J;G\nMLS`8I.1ZJ_I=?T=)N-M4ZOBFH/`+]S,`,!08`H:)C(6;2>/E22"?R.8U1Z$BR=/GV?XY3P1#UL*G(^XYTX2['O\nM-/B:*>N^1B84(=-S&O7F019YPY2TLZK?]7'87V][IX86*.1R--U,]M2D8\nM"(7NTR)_6FF*A4)$^Y2&AS"4HK#^&SQV>H0_^8^W>,6JHFWE]63L*$N#06H,\nM8Y6&'46?!5HIOF*>LS`Y@`*E%$HIBH.#%(>'21]__SP`E.L_GT$WSN254)][H,"R[BG\\?2G&ZMQ?M:2HJ\nMJRC4-=)6-Q4#:`T&J%-JE88=!+ZP;$%9WM[30W-Q.(53`Z,H)9R!)5&D2(\nM1F-,K6L(EP8'KA;1B-:4S@R2\\,.(%F:WM!`,A4@D1@AFT@1$$!&B6E@F@D*F\nM=RH5MJ!X-@/C!@24R/C1^(6SV_.=^PB)@9T<9(8G]!@P=5H3*(/*4("FS"`S\nM[-#9)K%HE&FU]9Q)I/P(E,V%/-@(EA&)CF>)B8IHDQOA\\P\nMQ\\X9:"WX%7'\\B(WO^G1G7?XUJ>@G@J5@1NX,RTR7VF``[?MXGL9S?7Q/4W`<\nME%9XGL]Q0KP3G8)G18GD<]1V=;)T6C-S-FYB='$SO48.$\\5LLW9PWJ)K?Y#6\nMX1<"VO$"`//"E+_[5UX!M_PN>"ZX3CF\\4OG8'POME8]+!?`^V\nMYHC!'54N9[(CB.\\3JS`($L+W](2DA?6+]H_917_O&UQ\\^-`SX0L:%F:MEX,0_%\nM+#B%\\ES'5>![D$U!+EF&")AG.]"X1`3;5#1'0_BNQO-\\/,^?6'+GJ<8*0V$9\nM4+7R&M1]=_%HQ_/,C#=SUS5W,I(;85_[/O:U[^-(=UOES"DS']KT[4UMYP`,\nMRJ9R*2CDH.L]/-%H7R.B$1&TDT<*&2*E/*:I.#<4`R(0"$)5`[Y;-NVZ/IY;\nMWI))H;+IB11C;54P2*1A&F9E%;'OW<-?GGR%I8V+F%8UC5U'=['G_3T,I8:H\nMCE;SS>N^Z37'F]_)Y#/)HV5]56)B8"Y+-0\nMR))Q7-*VC3),N@>[Z>[IQ2FY3*^OQ9]D`>X+##L>9KR&1+:7SIY^$HD4P8C%\nM%7'_4W\\"\\05BC4VT^1_2UM?&].KI/'WP:7I&>@!8<_E-_'C!G:@=N]M?V[UE\nMN]78D/CZX;?X!(`'^0P4,A@B.$6'7*%`;]\\`VM?$HC&BMCTVE9PHA4*T)IE,\nM<>I4+\\EDFDC$PHI58)KI\\W6#LPH%0\\Q9.HLGWOPI$A!V=>QB,#^($3;8)[&CL8(1RPBEHV:\nM!`"E<#V?4P.]C"126':4B&5A1:.8>O)5B8BFHF4N^].'Z$QWD"OE&/5'"=@!\nM-BR^C2WUW^#D_0\\Q?.P8RE#*T.<>Q;FYT'@)%;(P.H3A%$AETO["9Y_`.4:4YH:WQLSW,ADX)3[:A2D5+)(QRVL.TH\nMUI@9R[(FJR"4`M?S$0SL:*P<=@S;CI8!SO?T?4WE94LX/,WE2+(-/^2C+,7R\nM6I8_.5\nM#]+S;H*AT23-P>"D_>?CXX!3A($>T#Z&81")Q`@#L5BY=`*A,)%(8-(^H(!0\nM.$(T5D%E106V;1,.1YC:V$#S[#CQV8TX'W:0.O)V>>06P6J8QF!K$X?[GB(<\nM"V,H@^\\LOI>JT2;>&VRCHC*.&0A.8O^C`";E,<`TP%!4&,*JE@:489:?NF'@\nM^AKE>01$E^M%C2W)E(!AH!`N;ZYC:NT4K(A%*!JC?M8LLO8(!]*GR#1;7+EF\nM(_-?;V7P^7]"W!R5*Z[B0.4@F8$TAFUP0_T-?-5>0_NQ#EJB(3SM0ZF(_YD`\nMBO*\\QXQ`)$KUZ?>YK91"ARTD8I>W80L)A0DU-D%H%D1LE!G$,$P"RL0,1+@N\nM'D8;07PC@#3/X.7,(4H9EWDU,1CI0C8D/8@G`8E(EHA1;0`KXO:%%(("3FS&_/+/C.^K>'WXJ]F7B3\nMWF(O5;$JAM4(,Z[<6*CL&_CUR2:YXY\\[^MS0\\G]>+K7/U$KS\nM+YME^9[E\\FC'7Y1RN?R^O^[Y67[!H06R]MA:.9P\\_%ZB)]'2W]=_P9]S:3\\M\nM?HIFSYO-2'*D]/)?O?P/MTZ[]9YM5V\\[N;1A*2JL2!DI]J1W!T_2=?U1_XAE\nM1DUNJ;M%6FAYLJJYZL0'QS_XO[+UFVOOO^U%1$@.)E?OZ]MW?-W!=3)W_UQ9\nM\\O82N;WK=KFFZQI9U[M.WLV\\>V2X=L]OW;OW#T.L7KOR-X3\nMMW3=(LMZELG:T;5R,'^P*WDR.;^OM^_SMOGIVO^K_8@(Z>'T;3N3.\\^L[E\\M\nMF].;92@SM'W+JBW&:Z^]]GE;_&P=V'N`!V]\\4*62J?N>33_KO)I]-9L>2J_)\nMY_(7]7X7_3?KI:C]_78D)W;M@MKMAF&T]'?TW^HJ-]7:VOIYV+DX#?0.T-79\nCU=+=U7T#P".//')1[_,_R&BQ_!/ME<$`````245.1*Y"8()Y\n`\nend\n 6599 inventory_categories_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```*V82XQEUU6&O[W/X]ZZ5=5=_8K=CCO&I+N5\nMQ"9"&,0`)D%(O(8)$X9,,LL,B)@P9,Z,S)@@F,``B2C`A*$'*(IL$B-C8EMN\nM=[>[JJOK5IW'WGL]&)Q3#[<+)?2``M%;.JI5J\\Z^M?[U_VNMO2\\\\7\\_7\\_5_\nM>H5GV>3_`L`6O__5CJ9P+@`/PJSG=$J(M\\\nM.D@W,#_?=_:G.\\&=WIW?`]Y\\EEB>"8`*`$M5;O[U/X3ZX&A!VP1P6+00@A&)\nMM(T!1@P5;3W9(=2TM1"#\\\\*-+;;:=6_F;7@F+3PC`!$(`5+&U]T&O_&-/V6Q\nMO,2]M_Z26Z_]%JG?9_>]?^*%G_UEQOX)3S[^`==NOLK8KUGOW6/GRB9E>,!J\nMEG8)\nM/F+#8[P,F-]$9OE="``1B,&0X0'!.E1'2G^?W.^BI6/]T?U0*Z>A]#A]\\G]Q_PE'^F#1F-+R,S>\\7#S2`\nM>T`O%`#'##B:=G%9(OF0)S_^&P[W/\\#\\);R:@A.FIP@4"PASE_(:43"](``J\nM$#!DW`,3).V3]1ZFAGA`90[:`^(@9;9#P$X8"!<$((#H)*'2WV/8?X>2%(WA\nM1"HEA"EH`F7>)TP,.!,#*E,S^!\\%H'H&"$ZW^Q;CX7V*WIJ"/\\YZF.SCH$]L\nM!R-@5IW4P+.N9V8`YH%FPKB^CX@A.F5?RAQHF&43P_1[86+%3QFX4`"BX.Z(\nM^)3U8P`RR>:$@3@%?=;V$#Y5Q!<&`.GVXL!L-J\\Q-;V\nM%<0JEO$%-NL-FLN*U)]G%:^QD0UK7F(9/L^EXEC[$AOA-E6SI%E>IA2_.`;,\nM86>5B1S0A$AM!UB*U!Z):8_BD4@DE`=D#T`DC!\\Q>,")['UP2,EZ?$%ZIG4R\nM__S;OPW0$,*W"+Q&B#9UZW.W61_7KQ[$_5]S)[H[[IP\\YD[OX_??UG__"V,1\nMFU?^^/=#>_-U-S`SS!Q5FVYJ1`F7?N5[WO[,?=42)K^AJO-[>OQ4[OZFBOYY\nMK*+_X1_ZY_]W>_^1^W"UP[73U[_\\,,?3B"-^>P0<*<._='OP-NG\nM?@^8.X&`,_W/MMG"G%61\\IW:ZY/,QL\\F-_#>XR/>89OJ%[Y&?_4+E!?O$+[T\nM2QRMKE.NW2*^\\A6.VDODRY\\CO'"+P[@D;^[`UB5\\LB//EGW^#-[[Y1^Q_]Z_86"Q8OO8&C__Q;]G8VF3C\nMU;OLO?G/;"Y;EE>OLO?.O[*YL6`9%,V%=+!&4Z$9E9(ST0U1XZM?_3+?^/HO\nM\\O??W65G9X.?>WV3&'>Y>G7)W;M;F#YB9V?%R[[$/?&U5E/'@`7:?4M2!:\nM$,F("J44BBB-5S\\!0#P%X&G`@\\&33[#N`/;OP0>'^$&/;6]CZ8@T%$)HT#YA\nMC2+%D"3D49%<"*ZH&6:1<0011]49!DC9.5@[\\3[T@['<<(;!R+F04H5J10B"\nMR"0=-86?AH%*,JSWIJSG#O;>Q^^_CV]O0TD4,7)2&#)#$D(L:)=@I6A19!1R\nM$K((T63N.I$Q30#&!/?OP^'::!I'!'3.\\C!D4DJD5)%SI*D+*M/?Q)3ZS/'U\nMLP!\\EI!F.'R,CST=,RC60R2F14DO)IW;.@1AU8B<73`6KZ\\\\"<)];LSON3L@#O/XQES3B6\nM.>@IZW5=L#XQID@;"K'+C%;1A(+WB9B52B<&T@A2"EA!U#CJG+V],LDC-Z@E\nM4DKDU.*>R"F1TY)<(BEE4EOH.V=K,Z`BY%QP'#M/0CE-7S4$!\\E*D<+`@F$T\nMJKI@?68:3-=I^1B[6\nM$FCK63;>L`B3G%(5211*GUAD!4X9*"4351&=NE;?9W+*TU356>LY,P[57`^%\nMK@_DE$F+0M\\KN3`#$!2;9M'3`,H,P-W1/'6/P9PQ!]I&J/K$J#6+6@A=(E6!\nM%&224U.QH*%TF5*,P,1`DZ:A%;0@HJ2D='TBY43*QU*:P/1]G)DI]+U32F:1\nM"GT/)5>H*CD+9H*?5\\0Y%68"D"*4L3`4892:15,(76;$638%[S-C6[,,!>DR\nM::,E4QC[1"Y&#$8>A68`R0*SA%)6^FZ224Z9OJLFV/W*8`\\?UME,P-C80!&/PYZ9(R0&D&[D=$:$C6Y&QG#DM$+PZB(\nM.!+F+B202YD9,-(H$P.S[KNN(HV)-&:Z(Y_KH-!U2HR9IBGTO2&BV`D`Q>Q<\nM!LX`*(IZI!"PV*"QP<(";Y98L\\2:%2PW\\>4&OMPF;EVB6:VPG37ME2O(WL.I\nM!F":Q#(-(C5#2B&@@&)6J"JGJIP0C+8)U`W4M;-81%:KBNWMBDN76KK.R'F:\nM)TUS'@.I3//`H"%P]<;GJ.N&ET)%53?8Z@X;L::J&NS:%7;JEEA5^"NW>+%I\nMJ>L&_])=JM6*AV__@%*4/+=G+YD86]K6@%TVMQK,![:V1[:V5S1UX>9-(<1M\nMZLK9WH*ZODI=1ZY?#[3M$8\\>'2(BJ#IG+UJG19R%$(*9^8^"^67M/]8L-@V@\nM^9F&D4W'`M79[[-_ND%)452M=O-W"U"*."+_YL:+GSSLU&R-VK1_NIW-GVWS\nM9YE^RF=FB!AF5KO[N^[N$XBG`*@H(82DQK=-K58U3)X*_M@^SW\\6K#EF7@3<\nMS<3$_L3,ZJ<#.PG_8#Y08\\;.#[/EZOOZ_K_\\$6F)X%ST5*7@`````\n(245.1*Y"8((#\n`\nend\n 6600 inventory_write_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```-E4E$051H@>V9:VPYN[R+DDB1NLNZ6!=+\nM5F*YK@+;B5/+3M`T:)TV;>JZ@('6<%$@18`6_I&B11($<'ZD"!JX1I`&A1O$\nM:>"FB8VFO@:-U<9W2U:L^\\VD1$HDM=S[SKE\\_3&S)"5;LDJK`0+T`(.9(6?.\nM?.]YW_<[WSD+O^)-_;(^]*FO/4F]'G=M7KGH-QJQ[3DX-O7,CG7+3SSRQ--4\nM'W]HP?W^4@"L_O/O_QHO?#90D:=?_Y/\nM-R^X[_`:QGG9E@U#-GS^@>ZF\\7>^?'SJ&R?CPMX5RY8]=ELANT%$SC__`?H.\nMKEF4[]FVD/_C+W/V['1^H*_PR9HN_G;GX/*E']DZM&F@P+87WS@RO??@U,%X\nMXB>5ZQ]ZF?&??.-=/70">V_;P,J6R7UVI*=P9X[I#>:IL@0\\@H2_^<3^,]6..-?)VF6]'#@]\nMPY&)EB\\4B_N["[FOKC[STW^]Z]#GC!G1&)-\\(PQ@SQW>?_?/-@VMW7+=5Y:=\nM>7.C/G?RVX/[Y.\\?'4'N?V>!$OKRO0I!0BW\\?L=PUYY\\H3,;*(<2@\\*@,2AI\nM\\8]NM[IM]>#66S:N6-6PBB89CHTW.#*ER&1S#"XNZGQ6;RMDPT=R`]QWXFQG\nM=42J*A,I1$`=0^+.A?SU)$&)1,29(H4>K(4L@'Y\nMK*;0/C)!9Z'_]CN:E=_%37Z+7*0049Q>W,-+BS["J]/;>?;P"^RV9R=6N]*C\nM.P8"_[E#$RP80!B`@T+_TK7Y7$>!T2-O,[#C`:)<%UH)2@G_>2S'=+R!1ER@\nM4,RQMI"A*Q?0E0O(9S294)&)%)E(DXLTN6P!;OD\\S>/7T]%5Y*P_Q+%5;[(V\nM=X">XU.,GAJ1Q\\[_0;SNQEOO[W_]%T?7=5,Z]-(#'P!`@&CEL*T9PDR>Q9OO\nM8>W($)&&V`G/RQC#4TT6%R-Z\\P$]'8KN''1F(1<)J.306J$UA&&,='?1O^73\nM]"WMY'M'O\\!D:X;R9(O=W1]F_:[JV7=.]KVXK&('ITLS>!\\NG(%`)R`T#H4E\nMT,EU,0.1!N_A_NU%ZJT<(AX1!Z2BQ@*"$@%`(Y\\RV^^TS,]-EU#&1F&!KNX>3HZTR?NK'NIJ>_Q,I%\nM!U[Y]X>!O1\\`@+X,@&10.31YB(>?>9CUO>L9R@RC:AII__,*39SBJ\\_5>9G;\nMV'FAB_*!%YBXL<10L)P_V?S$F1VWGCPX'0?L^)&;BV4A`((V`SC`)!)2FCX??OMW#5X%V__XFV.CA]]_TZ]YY]_5N%;F8T,E)LLET&*PUF&\nM^V!(CK)AX"1EKXDR%P_$@CW09D#/,B"LZEK%6_(Z*_M7"?E183G9BF%W?8;!1;!A9Q\\[W-Q:)VH\nMISO;S;U+[\\6)(R!`:TVQ6,0Y=X6^%,=.5?GKUPUG\\\\+M4R76=<6LNV4-JE)`\nMS0A!%KP%KAF```A`S?.``A#0:+1*3!'',6-C8UAK+WK?>P^`4E"K.KYY:(#C\nM/4O8?&*"S;DZ'__8"H*1`0Z_+.@(@B@9,/R[8_F`#*0`+E-1Y7(Y5JU:-1MP\nM$K2BN[N;3";"&<^7GACE/Z(>/>L)`HT7$@"AH".5`'!<&PEI#:)!I0QH)8C,!1G;F"?W/\\F^L7U\\9N=G\nMV+!TP[OZ>/7`!1YZHTIIVK+Y]"0[-P=\\ZK]>V[2\\).U@B:^-#J);BMMMC9LW1NS:5:1<\nMOH`(..]QHNCJ'<"XQ`,JG`-P52:65P#H!78#D?A$W]XG:8Y5TZ5:\nM)HHO$SW@OB/42#Y%=_A_/CXVQFFD]^?#F;-FY@:+`;[WTB&2]8Z\\GD\\K2L\nMGV-`@P[`!Z"O!D`Z:2JM")Y]"?WFH2R]W3FL,60S(6$HB+<$.B03.10>D8!<\nMQJ.4PSE-+JO1M,AF.QA>$B+6\nM8SVQ];,>0"<@E.+JTFB[;!$%I1G8M?L>/G3;_9QX[3$BF69@W=U,CKY&;?PU\nMEJS["*UZB?%C>UDZL@9!,W[Z('T]>8068J8)(X\\`VZ[?PKK-BUF[9B5A&.+E\nMDL!=&X`DUUY2NXV55;VM352PBMDA?%58CKH]BXC)(&IGX&V[R`LPVJY_92F3R$:=:I\nM31S!Q%7B1B]Q&&";)3+%#KP$-!HU]N_;CPVG4LW+W)%ZI7W?U;>8H97K$P_X\nM64^FLK@TVBM(R++&.P%@*G<2Y`T/3W+\\)EE^"<2T;7"S8-VCK2LR>;[TP\\X`679K[9Q/`>&*[(\nM`)(`,(UQK*FAW'DN''^<\\MG#J'`9'H>7-&B;O&OFG4.G\\3[`&C`M@_-Q`J`=\nMN&=VY-N@)+1D;'K?9L&3U!57Y8&4`4WRL+@:ICZ.,U5\\[13.C^*=1FF%@R0X\nMI[!6I8$KK$L`.:]Q$F",ISI3QH8EG'>X-%COP4E;/LE$)CI#AQ-:L:'9:.)M\nM,H%)&\\C[9B%[B81V3(+QCF-]QHAH']@\nM$)\\=QCI/$&7Q:$QJ8)O*Z$+-4'%";6*:F0M-6K7*'`!WE3-Q6T*J+2%3H3*^\nMEV9EG+!K$;A$'FB%U0ICTE&?%[Q+P3BO\\#ZDV32,GSR!"9J@%*LW;"-?[)[-\nM]TDV`A^76=P=<&;&,M.L4YLIXVVRG/3_&P#S4U6K.D;=-S`VPEH%:7`$*IE!\nM+:EDU#P/*$S*@/.:(,BR:=M-J,(JC'584;2,NRA]6B?4:S6L[F/?J?.<')U@\nMTZ*EB%6S(+!7(Z'4`^TUKFE6,!%8FYD%8"RH0&%5"L"K>5*ZV`->`IH&3I4$\nMVVJ;TV-\\8E+K(3:66JW&Z3,E1DL3E$HE;MRQDQ7F$,X(8A1B%R`AD82Z67FD\nM.X/6@@H5EGD`YLFH+2'O-2(!C6;,L:-OT8PNX+U+;"%-.3\nM$PB:;5NVL:GW'.'X.,ZD$C(@OAV]7![`13L@,A>,24=7M0$XA944@"2Z=_,8\nML+,2"@G-%!]J_`6!#Y.UK0:T(`@^\\/C(X[H==IE!!Q%A$*+/"&(:=/4I7`S>\nMJGE9Z`H`9AE(G_.2I$KKD@FJ#4#/!\\#%^F_[(9&01NL\\UUW_FQ3ZAM%1`:4\\\nMXJN(KR1G5P5?Q;LJ8BLX6\\&;*MY8;"N+BV.\\IX87>]6EA"*M_V6>A*R:E9!V\nM(LXA\nMSN&=0RRQ>+ZI=5#WEVR275%",B_/&Y,`$)-HW_?N'R*OHEU^9_MR\\X`2@9YB2*:C"Z5#ACL#E*I#H9]"\nM=X#H*HI^BJ(195"JFV)/#[U$!#I$.E>CB9D>.X!SR0IS(:&_7WM/"2E%683_\nM4KY5;)9'I;T6OFAM?,DZN?W_BYZ="WS">QJ7&O#_!$"Z`W)8A$^+H-HU>3O@\nMV?OY?V^7NI=:V8:XP=Y7G'?^\\[EW/=L_?UKB]X;?`%`[:Q\nM`Z9)0`E5U0(I1(T$ZB4E1>)#*Z2T0NF'IFJD1FT_)'Q(52E*JUXB@E"(:$15\nM4-50("%`($""#<'WRWK7WK77NV?WW.;,>WGZ8>09^Q8?ZJ![TV8>>I-E,*]>.#_UF*[5]^Z?./;UKTQ7'OO7]'U!_\nM[,LKON]'`K#QB]_FZ#>^I?_NB;__ZJK>XA].SC73_>?LT8.MGM\\K1^KL7']:-^C:YC_R_C0C]]*G/@T-7,S\nMTZ=/[]BY._GNH]_A^6>>O*Q[?\\@`UU&\\[XLTYQ>+5V\\<^>SZ*]8_M&'MZN-[\nM^NI39N'<;\\]/'4_FY^;%&NM!ZB*RM]5J/3H[>_8_2J5R[5^^^;4/#^!+MP,!\nMI%6T%G0^!X42%(J0+T!O$;8+L^XS,XM)8;PHG#ZPE[W'\nMSM#.]1`6R_A6[6S[].%J0?E5?>5R3BF^G]1F_N*?]_S;Q%-36HF(#P/M[_H;\nM]\\$`_.V]"D%"+?Q^H52YK5CJR07*H<2@,&@,6MJ\\YFY69S9^:?O'KQ[?T!.'\nM]-L%?O##DT^'K;G&T$*]1Y=4=>^G!AX[\nM6@KKRGM5%?@V\\!S`G5_U2[&$*P'0@$U97UFU^J\\W7_^9*Y+Z-$GM%&(:B&V`\nMJS'5'N-HY6Z&>D9X^DB+WU@7L'_O:YS-C_+YVV]!:2PK`@@#<%`:'+VJF"^4\nMF#ST-L.[_H0H7T$K02GA^2-YYM*M--LE-@W&]+2/\\8MSAOO^X&;*A8A:V]$P\nMGBC6#!1CRH68L'(+\\=P(5V^(,3\\]RM3D3C;9_51R3;Q7O8**@!;(!P`0(%HY\nM;'N!,"XRQB1EWE@\\1S7M9[C4Q/HL[(LUOR*`0&<0&H?"\nM$NCLN!Q#I,%[N/_Z,LUV'A%/L[[(&]4Z(YNOQ#M'@">OA8'($X>>2@@EY<@%\nM,-1;H5(.&1X9HF]@A'2VAS@4M%=X`741P8HS(`%HY5&2`2P?6BMTM,B)V3?9\nMOG8'!55"O,.+X%%$84@0:L9R,7$4TE^,ZAW`>A(\\\\#L`;[^]-?9TK^%-?$Z,#GZRP6.GYQB?ML&(@U*@W$.\nMK02?1"2Y@%JH*17R]);+B&DCIDXYGB>,%,J!R"5B60E`T,T`#C"9A)3FY[,_\nMYV>U5YA*IKCU^ENY?>QVWO[%VXAJL7GC.EY[^J>\\>?Q*KAKMQWM+K=5"B:,6\nM:PJA(E0P-C2`]S`[Y9KB*CE16^BX!H-]YZC(`=`:AE4?)M`5RF7'#HBV\\)LOWRLV,1TC(M8M,XFIS?7R[VC]^+$$1"@\nMM:94+I-WCH'!0?*%$K7__B$O/?,,HUNN8=7(('&DB"4@9H3!P\\Q.W4*\nMRF-LV[8#U?X>.@8LX'F'"58L(0)0RSR@``0T&JVRQ*9IRM34%-9:`)J-)C?L\nMW,K`\\5,<>^L5FL=ZF"X5*<8AVAH:U7EJ"_.(3#1T]0K2Y@ZI9"(<]UNZYA\nM8*"79W_T$]R1UVG.',)="4$,RH)\\8`!*@1:4\\H!!O8N3%AN+'#UV%/'GW1<$\nM`3MW[F3S5>.TDH0T-8@77+?D^R=VLL]'[N'K:-;+WF?8J%`L5"XX)P"1GH+\nM+/S7PUR;S')X?@\\G#_^(\\:WSJ(L7G!4#*)9,K,2@LY.(%'M__\nM.`_<^`#K*NM(DN2R[QT$(?F-6SFZ?@<]/WN!L:#`B6`78?R"7/MK"0NS'P1`\nMQP,*#V)1"@3%H>IAOCOS,#JG^>9\\W$/EK;/K7U9''/\nM@]]XYOD__W0^;C^;I"L'Z,0/XA%O@1"7F8(M^?-Z-\\9R;JZ*M0ZMWA_">8\\3\nM1:5_&&,\\=C2D=0=4GEC@BI-OJ/JZW?=_8??VM[[VZAO_^/%`\\Y*7=P+(JP#T\nM`S<#D71>HKS/RICW@/)^]@P;YJJ-.(HYHEPCM2%G\nM6N-8'R_-]*6&]V"=T#8>ZP0O0N\\G(&TJ\\D].<%6YOS`]W/=7GZL4#NTHC%Z\nM-WT'HP3O&1K0-^=,#OA2=\\ZA/2,K]DP\nM5/G\\0\\?.//^)$/L.@,ZBJ;0B^)]7T&\\_T1(IEC>-,=S$Z^3F/Z=59MNH5VL\\KTD1<977N(X<`D3=S*`5EFYS!?[*?9M),KW$[HVN?(84;X/'<3$N3Z<-2BE$%O#\nMFCK>-K#M!BZ=(XB*.!_AK"%)VH1A`N*I-UM8EP5JG5\\Z-DY0.D)'>:P37$?/\nMW:)QS9_:*?5G-(=WG8_W/0$4(*Y&VIS$IHLH:6&:I[#)/,ZVJ)]YD=KL`4S2\nMI#%S")/625O]I&&`3:K$Y0)>`EJM!OOV[<.&Y_#>X[RZ?ZN#(RP>GQ+\nMY@%_41-S.0U-5T*^"V`;V,8,+JT3J#9I_23)P@'2UAD6)UZCW4[Q;FU6`AU8\nMJW!.82T$3N-<@*`9'!S"Y5;AG,MFUPNV$[1U=/:>7+$G\\X#/S'U!`;D$PWMF\nM`,D`3&L::QHH=Y;YHX^Q>/H@*ER#Q^&E$[3-_MY6^G'[`=C*@R2X6U\\`TIW&FCF^

<4UJI.X`KK,B#G-4X"C/'4%Q:Q817G':X3K/?@I"N?;"$3'5-P0CLU)*T$\nM;T%<)Q.7`^#L11)R#=J+1VA5#Y(/L]+FK$*T(I(,V-IE>\\L2C',:[S5"P.#P\nM&#ZW%NL\\093#HS$=`]N.C.8;AIH3&C-S+,PGM!NU\\P"=[?TST`%070F9&K7I\nM%TEJTX25(7"9/-`*JQ7&=&9]6?"N`^.\\PON0)#%,'S^&"1)0BHU;=U`L]R[5\nM^ZP:@4\\7&>D-.+5@64B:-!86\\99L^[\\`+&\\:VO4IFKZ%L1'6*N@$1Z"R%=32\nMD8Q:Y@&%Z63`>4T0Y-BV8P^JM`%C'584;>,N*)_6"J@FUW\nMS>DQ/C.I]9`:2Z/18.)4E;QW6>T7\\"(8ZVG4ZRS,GV-N=@9!\nML^.Z'6SK/T,X/8TS'0D9$-^-_CT^[G8ST+VN&XSIS*[J`CB%E0Z`9+IWRS)@\nMER04$IISW-!ZD,"'T&E'T8(@^,#C(X_K==@U!AU$A$&(/B6(:5$94+@4O%7+\nMJM![`"QEH'.=EZQ46IE@;7HJ(12'O%U\nMQ->RO:N#K^-=';$UG*WA31UO++:=PZ4IWM/`BWW?IGXY0+<76%YA6`;0-;%3\nMYV?=N@S6F*Z$0MI)LUT]_M2;9KZ8Z##(OF(HB])=9W:T*181AWB+.(65I>.;;\\[H4O$^^:`0"E\nM`L)@F"8O(H(2X/D_!@^#GCTAWC6A2YJ;>PKFLPUQ)Z.\\W+BDAI5@4X27E\nMV^5D<5*ZO?`%O?%%?7+W[Q=<>S[P&>]I76S`#P6@\\P7DH`B_(X+JOI-W`U[Z\nJO?Q\\]U7WHN.EO2!`\\BZ]_/^/7^GQOPN5OBO*VNH*`````$E%3D2N0F""\n`\nend\n 6602 lamp_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```)G$E$051H@=V9:XQ=517'?VN?<^Z=QYUVIM.9:4N'M-0"\nM0I`4&D1Y1!2U)!@$!0E1H])(B,8/)"08_:`FQL08_6",Q1B#8/BB)J*!0)00\nM&@*T(91''[0\\6Q[M/#IS[]P[]Y['WGOYX9P[,T4T)^C\\5#)RQ/EA]9F!ZAL$8U%LTK>);\nMDZK)S(RZ9(^(W(L)'@1MK/G2O@^>P.2N<00%9`QO[Y12Y1O1QBN&REL_3S1Z\nM$=*S!O!@FV@VCT]J^-8D;NX5[/3SN.KA6+/&@R+F!U[]?B.&H2_N_6`(3.P:\nMQZ``6U#_RV#HG!U]%W]'2IL^BX2]BP]ZB]IY-&N@MH%F\\\\6U@:\\?(SN^&]A#X-LACJ#)T_9/O/X&I7>.`;L#[WT8;+KVF_XH?$ZXY%W)2^5?Z!)]4T606\nMM0WP*>HS\\%E^58^F5;+CC^-J1PZC?`WA:5%8_;G'.\\(3=@Y>>O'VA^'HA==4\nMKOP)P=#9IP)OGL"W)E`[#SA0+Q6U6PC#[00=B:(#`@#>?=)4UF\\K;=X!/LL+\nM-:UAJX=RK8N"^-QI@P<1"L"FJ\nM4G-RK9I@V026G2]55F.B"X.AK:`67()/:_AX"E`419`BZK(`+O?B/H`*HGE:\nMBO]`59'R$!+U;,+&FT"FEXNK@QKPPQ*41TWO&M2U4!?C6Y.YE'"@GE,SH(5,\nM9(GN#1((!&;)_9RD!"$2A!5,L+&3.EC^DZH53-2/"="L!>IRZ:@K"KP=C[9V\nM6(B^&%G\\C$%\\D2\\MNJP!M`5")"849<$U4+00!20N@#4P)C0`4*PG@%,C0]@;HY$.,0,]=!4#O)@)Q4GTUI\nM:WI]G@$+FH&7O&UJ@+<--#D&6H/0(*42IM0+#(`90H)^D!#Q&:H)ZNIH,H7/\nM9MM!FA>1M]^'#"BX;!9C#KC&VQ\\)[?FHE@";I]T;L%5<8S_01$H]2-`#&J!J\nM$=\\$9U%3`P1LBF8)FL6H3U@L?'D3X?7E!W697H_L9.OV!]D_?Y=F23#A[`/4_18*D?]L]RP8/';X/`!"5:JB_R\\V]>:;T\nM'MHNI1[4)HB4(;!@#8AA00=:2&IA,`)44760U\\9QO+]33'!0;=HQG([?R*;O\nM.Q3^TX'2X?M`8<-?.8`:D^']W>K^7Z+_X.U6;\nMW:U9>E*M/2WP<#HUT#9UJ/I]HOJP"E\\M;B*JJ&JN?>>*<2*?/A?J0@QXOP_\\\nM(XBPZO('/G@"+HTQ8=FJVC]A]2:@)^=0@/<.3``NR&>@=@%+@(3]:%9_`.1D\nM!X/G>]II20A@=.<;[5:YERQ[^139I.F[VF:\\'S<.^^;,8[%V<9=-D_?8O%I(N!H)!]%6]86AF_;73J?OO]M.OXA/M9=`&SA74>_!!*@S\nMB,D+6(V`*N'8.*C@6]4#,_=O0^3TNT_;ND7@.%`%*JCFTO*"BEWR>AD0K#X;\nMWYS,?&ON#4R)D5M?6?'"*ZL!H)B?J\\#LDL^+;=3F0UMIP^64-GX"C6LM;=6G\nMZ(+^H2L9$(`Z<$Q,>`$FRN\\9@Y@RIK*.:.,5])Y["[Y^%#?UW*2B[T@G0_]_\nML!43$+',)JN2GB"]Q_O2E96^\\D#0,XCI&\\'TC1)4-B!AB>9SO^+MEYZD/O/.\nM/=N_6STV?7>E&_B[\\Q/3SMMN)[8R>M9:\\]B'1YKG#>H)RKZ&J"7-'!,UQUMS\nM98Y4A[+]QYI?,*)_V_O4[FXLW9TBGDG[R6RF[V0C*FZ8^>H$U>D3..=P:JBL\nM&F3\\G#,YH][@N:,/+QZ]=,&Z0D!$B[-:)0Q@5:67LADA=9YF,V5H<)`-8R,<\nM36)4\\T.Y;EE70J%>4>_ST\\_V^WPQNGGO:;9:>.^[L=2_V(HS<,?W?P90&AX>\nMVGEB$!&"\nM("`,`XPQ1%%$7U].((HB1D9'>P<'RERVXY85@P=8_D'\\O[%F[+CZNIN2YY]]\nM]MF1D=$=@ZOZUXA/\\Q,+P*LP,#"`B)!8@N&1==OZ5@W/G[5I\\[ZSS[^(YY]Y\nM8D7KKUA"QU[9Q\\L'7V3MV/KI(`@28PR9]Z1IBG7Y&:B(X+URZ-`A/SC;'#]Q\nM@HF)B4/U1N/FP37K#DZ>.,Q#?_[=BM?N2D,;&]_"YBWGDB3QF;V]_3]:O7KP\nMAKZ^_@&O2AS'U.?FLOI<=4^:QM\\K1?V[DZS.2\\\\]W8VENT.@;1^_ZGH:C7KO\nME@]MO71L_;K+*I6!456?S,[,///66V\\]NF7+UND]>Y_BV2=6]A;V?V7_!*^9\n2MUB`]2>Z`````$E%3D2N0F""\n`\nend\n 6603 money_bag_write_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```.($E$051H@>V9>92>57W'/W=YGN?=9T\\FF2R3R48R0$(V\nM4I9`1`H&@XCB`E21:IH>+*)"%7HJ%3U:1#G'RK%6K59!:ZM44((2-`H$$B`D\nM@4#V9)),DEDRD]G>[5GNO?TC@>/2:#)$_:-^S[GG_>-9[O?S_G[WWN?^+OQ9\nM?];_;XG3]:*??K;`91__`3_[PG7*"SRIE+)]@YVFD&_BDK\\[#GTK=&J12;4$Z)8)4@)\\*\\(/`>9XWH#R]36OU)/`+:^Q+\nM45@]HI2VTY:O_],!W/\\1,(9L.J4^4=/4>K.244JIA%0Z32J=XE4(+_#Q/$V4\nM@,"5I7![DBA^.@JCG\\51]%202?>6AT>8>]TKH_(A1_/05V^"H1(^\\+%\\TZP/\nM-[:>GY)*H91$:X72&NU[>(%/D`KH'70\\\\D0_#_^R+_/RGO)9!KE2*O$=A+CY\nM:%>W%&+TB:!/Y>8[W@KE$M[1HIB3#=P-?K;IO6/:+O1,M0=G0J3G(:1$*HE2\nM"JTUQ0KLZ@R9-+&&,?7^2"[E=GG:;C(N>4I*\\;/F*:UVN*_O#PMPPT70VXM,\nMO,+\\<6V%E80]RQUQDTU"AKI?0HD(G`-`"($0`HZW:F19>'9#<7QS_ON^=O<[\nM$[UH;#2H58T5,QX:M?&3!KA^*3RY#G'9I=F5DV8N_J?&AH:F_OWKL.4#1-5A\nM^@\\\\2R:?)TAII+`(#-9";`3*0%.-+N<+\\N-^-O75I%R)O9D/OF[3IP2`@_;9\nM2&-LW]#1[F^81C$+_>-R.'@(,6Z<=X)0&,<"G?@R`8R.5[]TF\nM]WST_G?M.7/BX:T-TY8_TME5;DS%SS'9'F1,SR$RY.CVK^J,*ZT=B1'L.NWV\nM3\\-*'`0K",-L,/N,^.ZT>>KFR8W;Q+BZB+$U4)>%=%J6\\QGQ0\\]7]WJ>WF02\nMXZZZ*SP=WH'3`'#3,I"2?*DB/U_(NA4M#8Y<5F*5`BD8D[)HK9!*'51:_8M2\nMZNO.N0%P++MC^$\\+<.>[P`G2SG)7/AO<4IN)=:`=+U2R/!Y*M(`538ZI>8M4\nM"B%5(I5Z7"IYITA[S]MJPAL_W/.Z`-1H'[SWKP4I7WB^Y+:Q8\\?>-F[<>-^%\nM_00:A)2LBR2[O0HF2B.%QT"B2=`RT&IZRE=_J84:]'Q_ZXU7%,PW5@V-&F!4\nM$;CG1BC%B+QF14U#\\^>GM%^2Z^]X@LK(00Z:%,]6?9Y/'-VY$IZ6!%(CE2`O\nM%!.MSWE>BBM:@E+6E_=))3_K'$.+;AS=$#_E;Z'/W0!*0$;RYFQ-TUTS%KP]\nM)S'T#_?R:#''?2.*]9%EBJ>8G>1)LI:TT4R.4\\2>8T--DMQ44L`4B"$=%**'T@I;W;.=9_Y\nMCLVG!'"*$1"$"6.U[_]SVYQE,\\=./H?RP#[Z!PZRTTAB+!>F?,YO,.12@KGU\nMDL4FQW!-S`8BIM?ZO&=&EHLGI5&^QO-]/-\\3VM/72*WN\\0*_;L?#B_XP`)^Z\nM#L+(>5)P:\\O4,1#/NU9I=8?V/'_/JO-.&N"D5N([WWW\\*Q-W\nM9:%APHJ9"ZX62BHJQ4%*_;OQE>.*^@AO),W/;DJIW[AB@F=TXLL#/>\nM!]]W)Y5"@MNO<;.$%.^==,:%!*D\\4;F/)"I3'CJ$`(04O[*1D4@I"7R![TL\\\nM7]%4T$P[D+`M(VBN\\?C0U";Z0L?3_14VUPO^)X[)]U0Y=U*>.#%88][Q\\"\\N\nM6CWKO-3-;:Q^\\[:MK:S;<`&/9,J'MY2'_<'TE8OW*WSV(;WTKY-(2\nM:WEG.E?7.JYU'B8),4E($HT0E?LYEKZO`LC70%[=E3DA2/F*=M\\CL)I#6417OQ:*^/+A][Y5A]Z7>FD$.`HQWA9M0V\nMM2*$P,2O1J"(-3'J-];"_45!.A"TUAV#$0B<@_$YCYJC$<46C[U],7'LV-I3\nM9%5OB?RBL>A7!BAD?,)8\\KTMC;Q/2PCHJ4K^K3\\FU#%7\nM5W(L;-(TYAW:0AX@M>+%>Y=V,WW6,"&LA34U:\\N_K9K(^\nM7LZ976NI'MA@7Y@4/K_GT"7;7+7AH%B&Q^Y_;5^?R>``)RC\\3@(\nM21(>:W&(LQ8GY/%JA`/GZ*Y`GS#LJRNSFPHSNK-,ZTM3ZWL(I>B4#N5!94Z:\nM'15)MNK(;>QG>4L="R9G>6)K(Y_NNY*BJ>?\\\\GRZ.LP3O?6S=K1*?>!#+US^\nMV"UM>Z'C]E_S>$*`FY8=(W!0L!9*0T=(HBHF#DF2*@Z'E#XN*>.XWA\nM[S,!SY4"-NN8WG1,CV])>3YI[9$-?`IQ@AF$>0<$ETRJ8=;L/#4YS:[.@'_8\nM]69Z=!-OZ.WG[)H#7/6V%W_^Q=WSOU0WW.G;1[N@X[>+Q"<$$!+N>?`L;GG+\nMECH%]':^PN3I"\\%%F#C$68<.\\L3Q`,XYG'-(9VG+6*;7>%SM4@P8Q8B3X!0I\nM-+M[#6OR(2H2G%-?PSGCTUAAZ.^7?&KS&W@^=29S#_8S(^GBC.9'N&3!(=ZX\nMZ*[AJ6]Z@J=7_]\\^3S@+.0DL0UI].:G3\\Z]T0V3QP!:P'(6D>S)HPK2R^)0V./&K;588['68(S%)`:3))@DP<-0\nMGP9K8HHC@VSNJ.5SP^]FJ))F_I$!ZDH;:$P]BN^%:.$P<3P_B9,/EDO%8.,#\nMLT\\^`MI-;WFF;4E-=L-A\nM%JJ!J,%\\MV-2X?DM2=D]5TW,Y*B2F1($06SGW'C8FG+7O]IH_=W:A'V9\nM&N+]'8B#^T=T3_^(F=C49S_XC?TGLOGZZD+WO1^21)#+.\\_7^+Y&:*U16L52\nMBLB!N^J3U>-WGP_O_QJ\\N&DIR^<]("MV_.)]W;3$W:O6_/S)]V5SA2,'.N\\Y\nM90^G[93R]TG/>X`@++>5EBWZGFK(+URPIYL94>_6#>LWO*NN?LR69]9]"SCU\nM`\\!3+NZ.1E>^_:^P_?NOOT#'[AYRT=NO1S8\nM-*IW_U$`OZ%IQFM>1CE(=^I\nMJAI&C(R4ZHHC(ZU)'*[6\\LC;=NS^TM??N*S71-'K.V8:=6WT5'2DMXL#'3OK\nMXBCN$E+?GQU$DQZ.LN@````!)14Y$\n$KD)@@E+?\n`\nend\n 6604 notepad_zoom_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```+H4E$051H@=69:8Q=UUW`?^?!V[GMB.8^S$\nM%"=-TK2)"!"$FIB`:''5@@1\\X`N;J@JJ2*B!1*)&0J0;17PH$:6`*"TI"+<)\nMP@EI4H?8\\=B9)I/8$X^7\\>A0_WOIGQ]L8KJ$X92?O_G.8/B+I&7(H+RBLM9SYZDV_YN8#//04G_^=G^/8R>FM]XX,\nM_:XR9OC8Y.P+WQN=_%(AX]?&]N^[J=?==(!M?_`<8Z=F,\\_LN_^Y[JR_\\\\1T\nMY4@I\\#XRV?(_6UU8^.O[FJ]R^`CQ<\\+[6F4JD4@S",PC`JGY\\Z=V[G\nMKMVM;W[C.5YZ\\;O_/P`[/O-W.%(,/7K7QH-G%\\+G7BFE]S^X?>A[?5VIT>KY\nM\\[]YGSNQRO6\\7ZU6ZWM+I?+(0J6:CI0R8*O6F*/-9O,;I=+,=W*Y?/5OOOQG\nM_X<`CSQ-[\\AM5.9J/<.#Q5\\97C_\\U(;A#3/;-Q1^V)N5C[T^-ODC2E-?>GBU\nMV#+[_X\nM_!6O=6Z&[/E?^PJA0!8S_D,/;%OSEY_XT.V_%2F5-Y+^P:*W\\^14)35Q9F'-\nM@T/R%UX[='C36S.-Z>UW[9P>V;JYTMO?5S*N-]&$L85F<[11K45IWWO$<[TM\nM4U-GOY_)Y!KOOGWTBG=WM,#3GQ(`>6'MXY[G;O-3ONLZ`D<89#)=J=&X]IOF\nMMWOZ1Q[]V,-WKAU45O+FF2JCYP.4F\\7WTSPQK#ES^"`3]/#$S]X?BN9,LU(Z\nMV3IW]JU*JUZJ^"*,/*&5P,CI&6_;7*78/3,S^[EO_?U?_>E/WOLP__/JBY>5\nMT>T$(`488_<6^]=^;?V6!WRC&D2-:718Q48UC*IAHRJ'HWO(K;V?M8/]'!BO\nM,=401#*-W]5-UG>YO5M0:+[#?Y0B?GW?`^0SOE^EQZ\\VWBCFQ/E5JWI"TB+$\nM$Q$"&,H''#]5)(R*^W[J@9__VVR^.'DE&3L"N*Y$*SVR8>N#?K[8S\\G1[Y+N\nMWXI,#2`Q>,)0"ER.U/;BI=?STCF!]+K(=OETIURROB3M2[;TA)QZXS1#PQL9\nM*&:8;X8(/TLS-TQ6E4EG+6D9X=LZ3NT=KED^#E6?O37Z2OIQ='@",%+TU44*_/T=6586W>IR_GT9MUZ,DX%#,.\nM.5^2:\\WR_'R-@=LWHXW!D0($%`NI:^_%X1#JW(6Y_B3Y+V`@8*A'!92\nMF71J=;ZK>&4E=P)PI`%KP88(H7$_[;!S(XR?_<[X5\\YB\nMP3J.$UAKKA<@7H752,SBY^5CQ^H\\6_M]K+58+-8"R_=`::Y*;U>&B9D90KT5\nMSW%P)+A=7632/MH8E!%H"WA9TMT?P)3[49K:;'GNI)25ZP<0`%8AK,)Q+DU;\nMKNOBNAV/03H>6S:M9_2_CO#>U)V,K.X%!$9*-()6I`DB0:`,/7UW$'H#S+5R\nMO'=B8FS\\W7?'AFY;=>6S.UWL.FT(';M0(KWM*.ZE(Y=-LWW;"%L&1KA^!M)K&#T1<>)D"3G[GS^\\[Y>>G6W4KVR!C@".\nM)-&Z0J`7@^]:AQ""S1O7\\=`#>^A7\\[Q\\X`!OO7N*N7J+:BNBVE(TFP&EJ6E>\nM>;/"X;$Z?OD[_/*.5Z+',I]@_/BA*YY]E3&@XCCHB-MYI%,^>W;O`.#@RZ\\Q\nM\\>H+S'1U4R@62'LN0;U&8[Y,?6&.>W4`:$!?-HBO\nM9>2R&3Y\\[VZ&UPUQ]/C;G#CQ/G/S"T0UA>NDZ.[-LRE]@/[N>R@ULASYP?<'\nMG_K:VZ#IN&US&\\?BVMH$481F`M)^8$\nMA\\?'6#?Q!1[.#-+C/,KK7__1$X_O&1S[_&M'GOEP-J4/-H)+9>QTF2,$CA0(\nM%)(;1=":-L8"C*80OX_[KL]P9S:3NVK;Y]S]SS^['\nMO_W%_8Q<1GL=19(R[H>P.H:X=2^@6$M/]=RQ:=U3\nMO_'8"Q%N%8W"SD?D92V2ATW]EQ\nM^X&@M.7N'7<\\<^CXVZL^.31P]0".B$TMDD(F17S)K7B5MMC8A21(%U*]%OL0\nM!Q#$`$)"\nMSP[>.-$43T;U2G7#Z:-B^]I5O_'IW3_QJ1>;`?Q]Y3]QU.A>-:;/F4VSYW(;!KH?O(7"YF/[AHH\\$&YD@6(\nM+=`N9`*PUMYT`F,MD;9)$"<62``._X4PQYKL/Q>:Y\\/)=[#U\\IJ-_85/?OG\\\nM@NNO!"!$/.,LI&'1A6[.L!8B;0F516F#,78)P(GG;7M@5<:;'6W)SYW/]A[:\nMF=7_M%Y7]]N/#2LI5BAD0H+4Q#&06,#<)`.TM:ZT11M+I%D,8N&`-&"(]Z/D\nMF4L[QWJFIA[/-]3\\_5GJXML3P$H`+%D`JP'0]L;$MX`VL>"1MBAE$@`3GRT2\nM[1L0-DXD3X^7`>Q7X,S%YZT($*M=`0H$W(C\\QEJ4`:7,HO9CWX]78\\"Z20LC\nMDP2R0O7O#"!B+6`5UD9`K+WK8;A`ZSK6N-*6R-C%9[I]L"2V1#L&KQ<@I@"C\nM0Z1I`8F?7@.!!70B>"R\\60(QADB3N)!=C*]V^K:"%6MF9P`12V!4`TNT6.ZO\nM=AAK49HE;2<`L?!+S[2)/VN3O$=?0Z'O#)#D?*,"K-L6ZNH.;FM574;S2P!)\nM#)BE&#"&V`S)/3?L0G;9Q@)FA1BPEF7"&2+5%K8=N/'SY5#:D,1`$L@V2186\nM.GRCLC)`VUO:Q3V/BH%P>K$N"Q[E>&7/A<[,,P(#1L=#M>4,6,,N$\nM;VOECG$Q978\nMV,3?U86I</C9$O%-F^]7:<\nM>8E1+$+<4"MQJ?8%U4!RX.TF)%:(K12G/VV33)*LVMBE?9(B(Z5IU&LLS)68\nMKU29*4_0/S#(GKMWL3XUB2P+3)2XCV;%'\\&N#L"`D2##$KFS7Z=E,LFWSW%-\nM,+37>-_.7NT@$A9DVYQ!B*W7<&LUO/DY-N<+;.K=3/_-YW#3>=Q4GD1GD2Z\nM$NDZB44DTI'QRXDP($V\\"AU;@CC1VR0[6&.P.IY&6V$-$QC^8:7&;L6^[U_^\nMR,$8ZSL.:=>QN-+B.?%O!ZX$+_D*7CI+[[++WVE%\\DPX<8LLEO7Z%]R^F.D$\nHU@K0!#(E@FC>LO73*S1$/\\[C?P'5WY."ZM%]GP````!)14Y$KD)@@MR^\n`\nend\n 6605 order_add_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```0Y$E$051H@=6:>ZQG577'/WN?U^]YW_-B9F#$\\%*!`D*1\nM%K%6;,4&J\\8^-6IIHFW3I&E]1FNU5A-:K8U-&H--J);:VE";4E"*%$@NW.^UW>XYT'Y\\%[3RE['.`=Z^?>OX`,>%<^(R(,\nMAWT&_56&_1ZCP6IOV.\\?;,UNRN^[\\5TOJD_X)=2ZG/.>^Q9Y[\\V^"2W[RW.3%3]._YZ],#\nM0&O`$R6!:NR:28@"$`?B/FX07^U\nMUCI\\=/%7DT;[%ZTU7U]>7+AQ\\UL^/K]TSU=AO'R*`)3"`[50\nMZSPBY;$P@A6/N%+Q$W)UGV/]7!S5-8^X&"L-LGR"AUW&CM;VR7J]\\?N'XN3\\\nME>-'?V?[FW[OT/QM?PZDIP*@-+W6"JW@H0>?Y/#A51P:*R&HF*M^]@R:$Q%=\nMXTFMQTBY6W$8\\13B,=9CY<18(1O."Z%GA$NWUMBZZ0J:K?:U3Q[<]Y>][LK[\nM+WCWGW7VWO)'IP&`*MWC[O_>SOC>O2L<&P=\\\\VNSG#N3<-0*G=.$K8@H4"21)A%`.;S7\nM9:#[4@9PWH'7>*IQ#R6'1:236_CJ`\\\\R80>M>Y\nMZ^5:(-`E#6JE4$JQT(VX];Y%.O4$+IY`G3=#V(J)M*(6:FJQ1Z$!!TI7;]D@\nMJS6Y.JIRW#=;C'3,IKKET@MF^=^GEEE:Z)X=9=E.H+.FS\\MR(0"E2D;J33;H\nM[)B"LZ=AQP25,0AG%F'39$N\nM@]26NZD"V=@JF-=EA[%^0Y`["O$T0TT<:J(PH-5JXUP#3@W`6A`KE((W7U#C\nMC6*K62OPOD!23\\][0A0-[Q$!ZUQ%IR7WBR[S@\\4C"B3P2%@RT5K>$.=1.B`,\nM0@*M"+0F"/1)^KST3*P`2@IUXGAB99&BUL0*U>PY"B/T.UVB]G1%DS#J][`$\nMN+"V/OMY?Q43)%BBTCI6L*-5\\FB"PD)N'1>T+6^^:!=!Y;+/W5YZ$"N%5Z4%\nMP$,0$K4G0$"L1UF'SRTF2E&U%L9"+IXTR+&$N+!![ATYGI0QA@:%BLEQ&"\\8\nM.R;5#0KQC*UCIQT1:D6@5?6;IPA`:_">]1C0Z9BPLTP^&##9;.,`:X58ADSZ\nM&EZ#TS"H901!0*VA,;9TD0X&H@R"*LE985PWU"<,UBF,==2=)PP40:#6">34\nM`%1Y0*FR`FV$$1.-.FXT9%.[@5(*:X7$I&R::0&@4'2U)8I"FJTVXAS.PY+.\nM2>H-PB@IL["UK"0%$],3B%.(\\PQZKO1_50%X#HA3*B5`X;W'>T_7.I:&!NL@\nM+RS=3D$BZ7JI,%P=854`D:.PCD(@7>UC0X-5<7G-"&;0IX@#"BFS\\R53!;^R\nM0Q/H$\\1QZ@!4R>9*@3A'411@+:$8M`.ET0Z(PI-UNX[U'*\\72\\9!VJT52JV&=QQC+XE+$S.QFQ(.(\nM9VEYF4!368#3Z$+55.1YSF`P8+$_9"5(HS1#G*:PPI0WG\nMAWH]!DY?$"M5N5!"J]W&#<>LQ`V,*#)KZ+^*&_0"C0EQ:QL4@S5AX\nM^B#SBT^PTITG3?N(=&7!MI`FT/ETNI$\\$L5(88QD.\nMQT1YP8SD@,*$0C<6IANV:E*@KSTZ`*?'_/O]MW/K/;E9\nMAQ9'YPE=@?8X*^S9]C&.3K\\7<9X#^Q[AEF]^C'-V[.#O_OCKG'_6^:P,5C@^\nM.(YQAD(*,I\\Q,`-2/V9FTRQ7MZ[AC#-V_G]S+.UY_(Z_#0>)32A(%"J57P/<)`H;5#`8$.TR-**PX=.\\0@'Z`"Q:[)7:3#E.ZP\nMR\\26"0X?>H:1C!CZ,>WI-I=?>#F[#_R0?[KO#\\+SME[3BFM->"VPNP(@MDPV\nM6L-H#/N>KG'M6VX@KD]Q=-^=;#WKU01QF\\6G'F)Z9I:H,47GV$&2P-*8F&'8\nM7\\$5*:UVA,T[U%O3V/P`NR8;!%MKW/2UO^+LV2D^_\\'/D]N/C[P'0XY1.49E#%V/OENE/=OFJ?DG&@M['_\\@71YF\nM*_UU"]@-`$2@W8PY]Y)WDK2W(]T][#K_&L+F3NQHGDU;SJ(^>RZ()90.K;F=\nMX`W%T%"/RT8E"&/L&`YU,[[UT,T\\XS1'-4"AKO?*_QJSW,3/KUE`2@#>\nME[)6GB)=0BFPMJ!(EQ&O$9-ATN/(8I>T>X"(`7:PF]$P1X5;&15'$*>I3>Q$\nMG.9XO\\MM]]W%.][P=K;.;66AL\\#(CAC9$9E+R20E<`J/1ZQ@K<5KQW*QP('>\nM7KIY%Q=9ZLT(%8`.%$H1%=C?=@O^7YGF^`M:0"N'Y"L8!4X*)%_%28[->PP7\nM]R'Y/.D@0#>GP0VP5H-2:%2YWNE"O`M8?/81BO$2K[_D&HYVC]+/^HQD1.K&\nM%#ZCDMRV[D+65O>75B`@HS]I?%(8<.;"`QS,],\\5K)B[C\nMW,T7K#=*SGN\\P/SP6;[PP.>P=@EC!,G=>9VOC>*37,AKL%(N--FL0S$Z@LFZ\nM.)V72HO"6H78\\AEK%8&4L@K*@"J7T2.R`OH%G!''],8]YI(Y%IY<8/[P?/6A\nMPY??&I3"BJ7=;G/--=>P=_DK-Y%E&0_%>!DCVTMEJQFW%1!C06P)P%K05F$]B%VD/W-!=?<3$?W_6Q;GY_GHIS]$\nM;7/9U3EQ6'$H`L)9A=U3$`8!0:`)`CV4KC:E&=.^_\\#V8OC-F_^;MD><&@G]*O]I5G>HSLD"`("'6(TNJP^:YD)0"I\nMZ+.B43Q84WT]V3#CUBJLG!P#OAH+1&%E[6->B'>:GWK%J_CAWB7V']F/K5F&\nM:D#*@%P/T#6AV8[9/#F'-`3G'-Y["IO3'7;)"\\,HR^CG*?TL)35CG/?4PP8C\nM"H_X_SGSS^=.9.+RN]::"U6@UMWFQ*Q+Y4ZF`K/F0E26<5[A"3'6<]6%/\\,W\nMGKR;.QZ^`SVEH>EIM&,F)NM,A@V=PE;*HW?<*V:V>?)&P)ZXY@()0#C.'O[.;SMZK&/+<`%(4A33.L$?K],;U>"6(P3#&9XZ*9GP8;LM!9."0C\nM_Y7M;YB1XS?U2P!RTJR6`(P%8S;XOZGB@=$29M1#3+"_N_'P[]PU=>>+VZ=/>M\nML_?LO^T=+O;3>60)@@*EX9:+2)IT*.[SM&9]RG%M2Y>/.5O'G7\nM]3QV[%&^]9._[\\TEYWWCAJL_.<0'Z&#!+S#$:*".AI!Z0CG+$<>^P[6F#]4BB_=\\&.@\nM1\\`K^'6:?%:W]*[69)U6LT&]%A'5`FI)3".I,=?:Q+ESY_/:,ZYD4WTKW]EW\nM.]]^_+;#_=[@4_YH=`M-L?-?7CFY(Q-9![#B/0>U[\\BXV\\&M]<8;^^.J[%Z3\nMGWN^=K\\'[3U=`!X$KD"X@W_@K3SNE/O02&77A2J>G$JFV5;;PJ:).69:L\\PT\nM9O#BN6//'3QV=$]_\nM1%X[7Y>K58BJ4ABN_]+#)5NB^!$K_):(7-XQW>OZP_[ESQX_LJ.6Q+4X"D'Y\nMW#ISQ(K=C>';C/3#ND$Z>&C$X"&>M[WD_U8Y;=M%P!**RVA09S:HJ5H0*+37\nE&49ULA^8D=JLO'_(O^AK_@\\/0I2A$8X6F0````!)14Y$KD)@@C:H\n`\nend\n 6606 order_clock_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```1*TE$051H@=6:::P=9WG'?^\\[V]G//7?S=J_MV+$=)XXA\nMH10(M*R!A%")$E':)K2BM**HHJI`E4I5555;*M%6I8(O5=-6*O`%":D1%0V)\nMLI"DD,T8QXX3.W9LQ[%]?9=SSKUGF3DS[]8/,W,\nM,0P&/?J]90:]%8;]Y95!KW>Z-C&5/OG53_Y"??PW@UC`)X407['.60>`PP%N\nM]0[G"IEB]75DMRX+*8FB,JJD4)DB2X;#X]^X\nM-@"D!!Q!Y(G*SO&(P`-CP3B'M0[CP%HVR`[C',86WG%@"LO;*YX+R"9"DKA"\nM;[E4>VUN_E-1I7Z'UNJ;2_.7OCI]YY(^R]JYL137',:&:%-AE#9XUHZ8J6UKELN5+[P2\nM1C>T%^<^O^U#?_3*Q>_]/9!<#8#<]5(*I(!GGCK#:Z\\M8Y%HXX,(N>T]6ZDV\nM`KK*D6B',OE7&XLRCLPXE'9HL[Z6F0WGF6%%&6[=7&+SU"]3K=5O/W/ZQ#^M\nM=-N?V7_OWW9>^O:7K@$`D8?'HP^?9&*RSJOG1CSR1)O+L<=W_G."O>,1<]K0\nM&5E2[1AEEI&VC)1CI"RILB3*D:KU:Z-5.5/8GN#VLF(J='!@#[5Z_:Z%^Z"Z7`:RSX"2.8MU!SF$!27,3]_WX/`W=9^^F">K2]_PM6WX[+->^O=G9\nMSD-OU@.>S&E0"H$0@DO=@.\\^.4^G',%;&HA]X_BUD$`*2KZD%#H$$K`@9/&6\nM#;)8E8NCR-==M<90ADR5-;?NG^#(V246+G5W!:/1+-!9U>=-A1"`$#DCK30K\nM=&;&8%<+9AJPJXE?7?6`H&1SY1PR+PYL`%%X0K#JE6*]X%?K0LJU"J4HH#'6\nMHCP0D\nMI#K_JB*1E2Z2>4VV*.TV)+DE,XZJ+PE]2>![U&IUK*W`U0%836*!$/#A_24^\nM8'1AM0SG,DSB6'$.'T'%.8P!;6U!ISGW&YG7!XW#"#">P_@Y$ZW6#6,=0GKX\nMGH\\G!9Z4>)Z\\0I\\W7HD%0$ZAUEA.M>?)2E6TH;">)5.&7J=+4&\\5-`G#W@H:\nM#^N7UJR?]I917H0FR+VC#7JX3!HTR#2DVK*_KOGPP9UX1-)[$0.)%[\nM`!QX/D&]`0:,=@AM<:E&!0FB5$-I2(TC\\5(T/M:OD#I+BB,A1E$A$R$I%N4,\nM2L94`I`3G6,L!F<3XG272?I]FM8X%M#:$9D#3\nME7`2K(1^:83G>90J$J7S$.F@(!B!5Q0Y;8C+BG)#H:U`:4O9.GQ/X'EBC4"N\nM#D!1!X3(.]"*']"HE+'#`5/U"D((M#9$*F%JO`:`0-"5FB#PJ=;J&&NQ#A9D\nM2E2NX`=17H6UIAUE-%H-C!48Z^BOV#S^10'@9T!<52L!`N<AWG'%((%A9]ZK4:4:F$M@ZE-/,+`>,3TQ@'\nMQC@6EI;P)(4'N(8A5)@B35/Z_3[SO0%M+\\(Z4,K0;2]S-O,+/H?^RC)('R^*\nM,<9B'/2[;634!R]"&TNF#?%R!UE5*`.9MFPO*SZR96O.0J^3Q5?5C0H@#$-J\nMU2JR-"0.RF@#J5'T1$CJ`C(+J1$,=(!V'L[Y9"JOLLG0PZ82)00C)?-:T!.D\nMB2#3D&0"?QK":QI"&UB((@?2+*/J-+.!1482$TDZF9(Q&*T6B%)U1\nM!H#2AN4XQ0Q&^1`/K`Q3G-"$RBMH5-#K)I0R#S_0^7AI#)U.PH5LF(>BMK0\\\nMQ0V^7,N!:Y?$0A0A%%&KU[&#F'9801G!2&NZ9LA"&JXU<8.>AQ(^-O'(M$0;\nMD'%()3%$,D%:@]::4:QI=P?,CWSF$LG[-EL^%.1]T#4*(;F>Q$*@E&8PB`G2\nMC'&3`@+E&[JAH571Q9`"/>E`6**R9;D_9!!GU*H>0L7AAMB*(.S7(3(ZN`P%<1I2@D\\"/$*$:E?8X>.9Z_1(\nME`$$GG`T2@%;IEILG]W&R+9X],EG&=5VX'F5GS-H[@%7S!J"3^/X4_*.EK6O\nMI1@'821QNY?N;FDQAIH'+TE9T19I+)U3L@#ML-IP;,N?,=?Z790QJ'[*C%BA\nM&G@<.7*41W]TB%<&$C$Y2VO[/FJU"EHI#'!Y..#5Q8L\\?^80NZ8;[-M[/:7:\nM$J)U/:*Q-;?F1@#6Y)86@E:FV/$__PN#85$\\I(?G620.(22^)Q!B&=P*OB>0\nMTB(`3_I(H1$"6F-5FJ4A%=>G)3693HDJ/J44'GSP$1XZ?!H]>Y"/?/16/G!@\nMEO[\\:_1Z*R@GZ?<'-*][&V>7^IP\\=Y%3QP^Q]/1/>,N!?523N#0Z?_2ZF3T'\nMG_[4I_^`[WSKOAR`T7FQD1*&,9PX5^+V.S]+6!YC[L0/V+SC)KRPSOS99VB-\nM3Q!4QNA&GN?]^9''_NOPS.S.DVL>T!L`&`/U:LC>6^XFJF_#=(^Q\\X;W\nMXE=GT<.+3&W:07EB+QB-;SK4)F?!*;*!HASF@XKGA^@83K43TM-SE-,^1X^^\nMP(.'3E)_R_OY[/MO9*KJ*G#8S]ZCGC+\nMC=SS*P8[39\\\\S-KT%XZ`ZL8G2^#3M..-R;T2R-``A,,-E;+_#W+E7F+Q^\nM/PO=!187%FDT&W?OW+WW/X(@?.YU/2"%Q:1ME`!K,DRZC#4I.EUA,'\\"DUXD\nMZ7O(:@ML'ZTE"(%$Y`7)^F@CV!))%E7"4R=>YI4^''CG`;:/5]#6(8*8;J=#\nMM36.M8Y+_1$75Q(0$`0>GA3T%_N\\].0/\\.LMMK]]&G'P;70./4ZE4ID2POOH\nM]AV[-P!P(&TN2^'0HS8XC=&*TU=D;\nM&*OX))G&"`$UZF)EFBMM!%H+\nMC,Z?T5K@F5P67LX(^39Z@#:2)!/$64RL#-5JA<6S)^D(RZ9=^_&B,N^\\ZY.<\nM?.&G_/"[WR1]Z'ZFMVQ%:<,M'_@P^]_U/J(HPCI'W(]9.'64QO8]U,?'48,V\nMSKIZJ52MRU4`NE#$&/`$9,,+]"\\]@4ICC%E7VAB!UJ"T*`#ELC9R[7GG_-RK\nMVI(I50Q`DG@XH'WQ'$DZRC>RC&5\\]\\W\\ZF>^2#)*>?J!^[GU0W?PCH]\\C%:S\nM2JWL4R\\'C#7KA)[#TR/*I8@@\\#'&"*V-N)*%1"Z#8;ATC"Q>0IEMN;*%Q74!\nM1&DP6N"*6O\nM(!_[%GMOVDLY]`@]\\&1>V7776%=7K2:O-E3FPMK8!F'4^1D.C7B<(?*9:3":B4`DI10*U2Q@P'!$;A\nMG"6.XV-//?[]Y;4<,!MR8`V46E5R73E3A),JP*Q=7Y,%CIR%FHT&C5J539NF\nM*??G2'M=1CK?P-(K"PBC$,4&F0!$O86=V(I_\\22>[Z'B(5A#R9?X`MJOOLI8\nMI42[W$W!P@-K82(V>&B#?(72ZVO&L`8@"D-V[9RA7J\\S\nMVZIBSQX#:['#9206YP5K'6\\V2DCZ/;)M-Y"=.D(V'-(;)G3GY@B%8/'294QG\nM"=\\3O';QTJ$X'OYPT%_F"@^8#2%DBI!21F#TZUEZ0]@4N;%ZGR-`F[PJ[[M^\nM)ULV3S$[NXWF\\#+9V1?PRG6\\L4UY@AJ+TIKS1P^Q=/XL:7,S<69(3AYALC7!\nMYNE-7)I;9.[X2\\Q.M3AZ[,5AM]/]>JLUN=1?Z>8`S!56S0$H#4IMB']5A(T6\nM16BMKRE5`"N.%"PTWU-<'$AF]AR@/M9B]XX92G,G&)X^ADDS(E\\2^1["&'02\nMTUN<)["6\\8.W,3Y8!&4X?7Z>8->F%L=?.LG)4V?^O=->N+_;6>3%YW^\\\nMWHT6\\T#.*#)`>"$2\\&P5Z1MD:`AHX(4A7M0C,`V"\\CA"](GP"6N3E*(5A`SP\nMHSK&2)8NG7S,&[AGP^:TF-@\\4VTO+'Q\\9O/4MO;\\:9:3%<3>FPEF9Q@;K[/C\nMA@-4/,=X*41MV<?%[M[SG@_\\LA$B_\\5>?\nM!XI]KD?_L1AR!']A+7^CQ#B5:@OG/#0E_&*0UT3X7H"S%N,"I!>!LUA\\A%=&\nM8A`RP%K-A>,/H)7ZHA!\\[7'UQSSW[,/\\ZGL_?J?G!__@K+TI33.,D(3-"2H3\nMDU2;S7SDE`*I,R*KJ0>2+$UX[M!/AR\\.T=!T3=SO8U=EXXWQK][O0#I'%^";]WV=C]U]+]NV[7W@U*DC\nM9SS/_Q*(3PCLA%U9(DM6$(L1)@H)PQ#?D_32C*.7Y]6Y\\Z\\=;K<[7QO%@_O]\nM,$PW*K_F@0?_+E=""*K64OTYI=ZD#`R`^'/_NOZ#'__4[Y&FH[!2J=\\"XM><\nM<^]RCNU"4+/.8;16:9HMQG%\\-(Z3!],T>:0UL6GQ\\J5SG#[^S,\\-]6_XWRK7\nMZG/@;>]FT.^*V9GKJT%8F@JB4DUK31+':C#HM?N];B>,2N;DT:=^X7O^#^3F\n21IIHX^#)`````$E%3D2N0F""\n`\nend\n 6607 order_help_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```1.DE$051H@=6::[`E577'?WOWZ[SO>^[+>4J??[>ZN34REMW_YW;^U/_[S02S@W4*(+UKGK`/`X0"W?(=S\nMA4W1^BRV6[&%E$11&552J$R1)7%<+I=N>6K?X]_RSOC`;=7&>-:]]1^/#P`I\nM`4<0>:*R:3PB\\,!8,,YAK<,XL)95ML,XA[&%=QR88N3M4<\\%9!,AR:!"=ZE4\nMVW]H_KU1I?X6K=5W%N?GOKSFK9\\]N'#K-V&P>(P`A,`!)5_P\\DT51BH^QCJT\nM=1B3'S-ET,9A;-[Q%;NXSW+DW%B*:PYC0[2I,$P;[+1#-M36CY3+E4_L":,M\nMS<.'/K;^S1_?<_!'EP/)L0#(72^E0`K8<=?C[-^_A$6BC0\\BY-6O74>U$=!6\nMCD0[E,EW;2S*.#+C4-JAS4I;9E:=9X:.,IRYML3:J5=0K=7/?7SW(U_MM)N7\nM;/W@W[8>_NZ?'0<`(J?'+W[^*!.3=?;M'7+S;4V>&GA\\_^H)-H]''-*&UM"2\nM:L7J"NO0]?V;FHK!<^^Y:9ULW\nM/5\\/>#(/@U((A!#,M0.NNWV>5CF"TQN(%X[CUT("*2CYDE+H$$C`@I#%6U;9\nM8MDNCB)O=]4:L0R9*FO.W#K!O4\\LLC#7/BD8#F>!UG)_GA>%`(3((U)GI$)K\nMPRB<-`8;&G#2"'YUV0."DLT[YY!YUQ#E&\nM%Z.6X5R&21P=Y_`15)S#&-#6%N$TC_U&YOE!XS`"C.>B05`'D*ML>QJSI.5JFA#,7J63!FZK39!?:P(DQ!W.V@\\\nMK%\\Z,OII=PGE16B"W#O:H.,ETJ!!IB'5EJUUS7FG;<(K*/OT[;F+6`B"W%DE[/4:J=2R@M2$T?49<\nM"2?!2NB5AGB>1ZDB43JG2`L%P1"\\(LEIPZ"L*#<4V@J4MI2MP_<$GB>.!)!C\nM`U#D`2'R"K3B!S0J96S<9ZI>00B!UH9()4R-UP`0"-I2$P0^U5H=8RW6P8),\nMB!N*82@D0..=PSM'6EH6^0EM(\nM,TV[E1&9Y$BIT%^*T<*#P))I2V8@6>JB?84687Y-&52O2Q9Z9";/SF>,9KQG\nM@\\23*X'CV`&(/)H+`<9:LBP#K?&-0EK`&B*GJ:#0`HP$/)-'>=^@A4-[$(<6\nM%UBL+$)KX$B4PY5ST*ERC$3@>P*_J+V.'8`4N0:*B!`&`=5JE>G:@.G)$804\nM&&-8##1KUTX`((2DU?8)?)]ZO8YS#BD$"X=]ZK4:4:F$M@ZE-/,+`>,3:S`.\nMC'$L+"[B20H/CWFNWV:7H1UH)2AW5SBB99/8PZ82)01#)?-TI"*]O&#/*QJ8VBWAQS2`XQU9,HR\nMZBFV^/*(!HZ?B(4H*!11J]>Q_0'-L((R@J'6M$W,0AH>*>+Z70\\E?&SBH8U'\nMJAVM0XJ%Y@&:K1Z#.$$;B[09_N0&PI$)\\$/.6^]XLY_70<>)0G)%Q$*@E*;?\nM'Q"D&>,F!03*-[1#PUA%%Y,4Z$J'D(Y2!7[SZ'[^]?J[>."1`X3",35:I5(*\nM\\:RE/T@Y<,^]Q%:R<<,DM0O.0(@M!-YOH9"[F^4:O`&,.+MJ7:=6`?#B,#-4_8:-/P6DT%>7AAMB*(6(^41C*P"@D"7<`Y^>MM]7'7M\nM+9RP;H(O?.Q\\7KIU$Z4H($Y2NOTA[4[,P?DV#^XZR([[]G#Y-W["8C/A]%>^\nM,J]$G3L*@`!P_U/,-00?Q_%I',:N!F#SYPK;:4;'M!@=]R4D28K6%FORR8@M\nMEE*L-AR:^7,.C5V,MH;%0_/\\X'LWT#[U)V8'-MFC/GE)\\^>6O&`-7GG\nMA&`L4YSPXSN@'Q?)0WIXGD7B$$+B>P(AEL!U\\#V!E!8!>-)'"HT0,#9:9:04\nM4W$]QJ6FF\\1<_U^WHP895W_YHYRP?I*G%CLH;2F5(C94JGG$R2P+K80]![JT\nM6S&Q@NGIC;Q,CK#S_GU<=]WMXJRSMOC6/HU"1N?)1DJ(!_#(WA+GOO52PO(H\nMAQ[Y"6M/>!%>6&?^B1V,C4\\05$9I/;6;R--4&N/TNTULEE"K!^BT1;DVADX?\nMXX21,J>=.,F55^_D\\-[]?.NR/V3MU"B'%I98/SU&.HQYYN;F4$H1A@&S\nMLYLX[>P3V?EHAQ_O.$`K,\\24&5^SCD=V+=8?>OC6=YB#O_XE)W]2L_O*'(!>\nM!<`8J%=#-I]Q(5%]/:9]/YNVO`&_.HN.#S(U?0+EB\\B]/[^7JZZ]A;_^XW>Q?GJ,?0<7J54K+"X=<8I[)MKTNVG2#\\B"`UGG746G_K4IU@S-86Q\nMANW;MW/%%5_CFFO^C7*IQ!_]Q>5OBAAPF]43L0'W7-1V[CM,\\-\nMY;('EO<<@,6D352R@#49)EU"Q?O1:8?^_)VT]UQ#TMF%T2DZ[:&U1AF!UJ*@\nMHX^QDF`0<_"QO;SMC2^EU8E9Z@[HQII.7S.[\\43>]_Z+>/Q@D^T/SO-PO\\:E\nMG_@TOW?AA0#LV+&3DNDRL\\;#'ROG^V@)?R3"JU=>)Z=.VBK'UJVBD`-IF(Y[/HX*WAH]U,@-K)N\nMS1@+S2[]Q!`//5IQPEQG'[^ZYS'2:!UA8X:]2SYG#AP;-\\X"4*E6<8`2*?YX\nM'1*-"21X`F`**J\\0I?H]1RBD;;%<6%#(I$VP*48/Z7+Z`%:P?QBER@*Z,5#^HEED`;$RB/!D4B!\nMEK!EXR@O.VF<]<&0KW_E2]Q^QQU<_*$/<=$EE_*%NQY%34_BBQ+&+^H("U99\nMG*E.-?_NX^(9%#(F]U(6'R!I/8!*`TRTTFEC!%J#T@)E!*ZPI2_11[[6^&@#\nM6CNTI^GT$N)4,L@DL3$,I6#@"<;J$1>>-L&-__$]/G/U=ZA4*GSSJJLX]56O\nMXN\\ABED4ELG.4EA'4X9?!2'W3H^2]XJ3@Z"HG#_98!%EUN>=\nM+49\\6>Q*@]$Y`*U!:H%V8)S`XF.-H%XMLZLSI-,;,E`!@\\QGX#3#0)+XDL!8\nM>KT>7__Z/[%K]VYNO/%&6M.S?/(W3[!_10(R,/$ZO.\nMI3__B#TZ#RP#L)HT;F),/KK&Y,E.&=!F!80VX"T#,`*]7#>Y`&,%&]=-LOW`\nM@&8GQE`CSC2Q$/0S.*0M-4#Z:SG[[#>R9F!0@.F")]%(L.!5L77DU4CKK5`FZ,UX(HVSPBT\nM6?Z8YZ,4O.24C=@=CGL?WD]8GJ*GZK2M1UL(!F6?C>6`OBSQV<]?AK4&[:#_\nM^!Q!O817#[&I1J8&Z4N$)Q">H!;Y=#PQ!'./:3ZY(N+EHBVG4`'J"&U61MT4\nM=%(%F&4*47C&.H'#1RG'YA-G>/$I$3?>>C^RW,6%,\\A^B@A=YS(Z4F"Q[\nMJ'2`-89RN<3I,VNYQSA<9G#*XJPM"DE'(_"HA8:FT0^Y++[;F81G)C)=>.`(\nM340AR*?9JP2]NLT8,_J>BQ?TD_>M\nM>,"Y8IVGH)`I.*Z,P*SVP-,Z+8O[,`)?BUP#!(56'+]SSIF\\_9S3N>YG>\\`J\nMG#98;1':8I1FY!\\Q1HYH#4!J46L5_5=!&"[0Z6AM*%<"*(_@8`_-=\nMQ7SBRS%?]G;&3GG?>ST9[CI\\1:ZDY(U\nM!Z3-`>NUXY)U#6RLV+LP&&X9K5QQ]AM>/S^X\\PM';OV_5O7W1TKPP]_>>TJ`":O:1#YS&QZJDZE.H9S\nM'@U\\?#F![Y]??O>\nM;U]QZ?5OAZES(5GZ#E'IU_\\JK;?G3IU^A^^T^?-J%9`=!TCMW2M>IPWT@<%'KUKUB[._#PN[!%O>LD[61UXO:^77^)7P9*\\25F7)!U\\F\nMQF.OP]PE]>!6]MVWE_JDC?_]LSS;]IS_K7)MH\nAUSF<('#Z[G_^/U_QOQ0U-?Z(8@E_`````$E%3D2N0F""\n`\nend\n 6608 order_next_48 begin 644 internal\nMB5!.1PT*&@H````-24A$4@```#`````P"`8```!7`OF'````"7!(67,```L3\nM```+$P$`FIP8```0Z$E$051H@=69>ZQE=77'/[_?;^^SS_O5BK-I6&6E]I4V.K1MM:;-54FX94FZBQ`BF2%%M%BH".\nM@`C*2V%@!N8]=^Z=>\\ZYY[7/WOOWZA][W\\<(L9&9I.E)?MEKO\\Y9W_7XKK5^\nM!_Z??\\2O^L+GO[>`@%.=]UN\\QSL/SH/WGESV.,`[5LZ]?PX9\\"Y_QUK+<-AG\nMT%]BV.\\Q&BSUAOW^GOKT;+KSNK?]4GV"YX-8P-N$$'_CO'<>`(\\'_/(3WA]_\\>0`D!+P\nMA)$2U2U3$:$"Z\\!ZCW,>Z\\$YUL@>ZSW6%=[Q8`O+N^/>"\\FF2XSC*OVE.66*JUJ@'4>XSS6\nMYL=,6XSU6)UC\nM]E`(IX/[[GN'@P24<$F,#$"5V7'@*M69(5WO&\nMQJ-MOHQU:.O)K$<;C[&K]S*[YCRS]+3EW`UE-LR>1ZW>N.29/;L^U^NVW[7]\nMZK_N//'U#Y\\$`"(/CSOO>)+IF0;[]R5\\[P=MCL:*F[XZS;:IB#ECZ22.U'B2\nMS)$81Z(]B7:DVC'6GE2O7DN6Y4SC^H)+*IK9DH>S7T2]T7CCPOS1J\\OEZ`N;\nM/_9?W/[)-SY?`&(%@``\\5>;F`[YS7\\SCPQ*3+YXDJ(>$2A"%DL@"PN&]S!/=\nMYS*`\\PZ\\Q%/<]Y!S6,BXM9XOW7N`IAFP;?TT#1FH8./&*TN5^M->Y_?EZ\nM0,F><\\G4H$+VLB7CQ%4"\\12D$YD)1+'H$$'`A9?,L:62S+\nMQ5'D]WVMSDB6F*T8SMT^S<-[%UDXTMT:)LEFH+.LS_,*(0`AI1R%-"KV!\\)$%2]QUHPSA5TFG._E7E],'BL`*L\\-LB9:+EN6.<14A&H`"4%\nM2DJ4DL?I\\ZM78@&04ZBSCMWM>;)R#6,IK.?(M*7?Z1(V)@N:A%&_AT'A@O**\nM]=/^$EI%&,+<.\\9B1DND89/,0&HY!X`#RH@\nM;#3!@C4>81P^->APC"C7T092ZQFK%$.`"ZJDWI'B&1.CJ9*)$BD.[2W:Q(QE\nME0<_E\\2\\*`+\\`XH1:"1!X[_'>TS6.A:'&.$@S0[>3\nM$=GQ2JLP7!IAA(+0D1E'9F&\\U,<$&B-*^35MT8,^64F1V;PZGS.1\\;N;)$JN\nM$L>)`Q`YFPL!UCFR+`-C"*Q&.L!9(F^HHC$"K`24S5D^L!CA,0I&)8ET`\\(@H-%HX+U'"L'"L8!&O4Y4+F.<1VO#_$+(U/0ZK`=K/0N+\nMBRA)X0%.8@@5IDC3E,%@P'Q_2%M%.`]:6[KM)?9F0<'G,.@M@0Q048RU#NMA\nMT&TCHP&H"&,=F;'$2QUD3:,M9,9Q6D7SAHVGY"ST'%E\\0MVH`$JE$O5:#5D>\nM$8<5C(74:OJB1.I#,@>I%0Q-B/$*[P,RG5?9\\4CA4HD6@D3+O!;T!>E8D!D8\nM9X)@'91.:@BM82&*'$BSC)HW;`X=,I+82-+)%#,SI7Q6!I;*(4H%U.KEO`M%\nMT&V/:30:E*(HK]3&T6EKIJ8GL3X?A))AOZC"XB0GX1ICZ78SYDR2DX.V3"C-F8%<\nMR8&3E\\1"%"$446\\T<,.8=JF*MH+$&+IVQ$):6FGBAGV%%@%NK-!&H1UT%Q(6\nM^P=8[!YA,.Q@C`6M41,O(FIL@6":2S?!Z\\*\\#SI)(217DU@(M#8,AS%AFC%E\nM4T"@`TNW9)FLFF)(@;[T".FIU"1[C^SEAKMNXM['[D:X$3/-)HUJ#85GG(V9\nMW]^CKP53S:W8ZEMP;BMA\\$M"R/^4Y1Z\\";2\\6[.O4QR]S8_AH;I]9-WW)KPX\nM!9*(T,]344V:08>9,&\\OK+%$48=6I865-4`0FC)*21[?O>&S1&'$AW_G\nM][G@[`MHU)HD.J$_[K,4+W&DP-$Y-&3$P%$L;C%&,4J&40^(10A(H@1!+X'L$2B"E0P!*!DAA$`(F)VJTRB.J?L"D-&0V\nMY=OWW\\BNW7?RQ0]]@1TOW<%<9X[.J,,H&Q'KF)$>$9L1L8T9V9B1&3'R(UK3\nM+;WWL_DU#1A=8+.T3U$RE!M3C'LMW'9F'HCQ*0=*O5)3/H4\nMIS6>>Q]^A>!NF`D_-DCU]#C`3;36P%@U@"P%AJU$MO.N9RH<2JV\nM^QA;SKR(H+89,SK,[/K3J4QO`VL(;(?ZS&;PFFRHJ93R044%)4P,>[H)^W_Z\nM&'_WE4]SQ>NO9,=+=[!W?B_#;)A;W.:*)R[!"LTYIYW+TYW=/'GL<5)&S(T/\nML+^]G\\5^F\\$XQI^'O9#/_S-*R!VP.P/M9#1,$<$&1MDAK).4FYNQ5F"\\Y/8';R-4DLM?>SD'\nMCAV@E_1RR]L1J4O(BN6E9[HTS?3D#(D;)14:,**H"8CI!0(29!B\nM_M`_[6]A`T>?TP-2.&S:1@MP-L.F2SB;8M(>P_E=V/0PXX%"UB;!#3!&@A!(\nM1+[?Z0*,%:P+-,\\\\\\7U>=]YO8KRA/6PSLKGE4S]&^Q3C,S0I0D*FW+#XXS&N;Q1\\Q:TR>E3B67:#7!.R5K6^NA)!QQ79A$4(V;8-+L29A<.1.3-+!V6F<5UB7*VV,0%HP>BT`@?,!\nMWDGV''H&(01A&+(4+Q&[F!=N?"$E0HPW>"Q>>!`6J22,)'OW[65J:HHLS3BC\nM?#;OV/9>;M[W-8YVY_-=[&+3P*1NV^%/MLO'A9"78&R^T622#MGH$#KIXF2:\nM*VT%Q@BLR=\\Q1J!L+@N5)U2^C1YBC&"ANTB@%&,]1CN-#2PJ5GSU^J^191EA\nM&*ZL4JF$QS,U-46OUZ-2J6"MI=)I<-69UW"S_`I/F[UH'1"E`3HRT_8%8?E9\nM(60M*`'9Z!#CSL_0:8B-5I6V5F`,:"/05N`+6082L_)O35`\\YS`.^N,^.M#X\nMDFK[-APP9:K1;5:A6E%,/!D*O?<37GG_8:\nM#G0.$(8!0:!0H91!18GC64CD,EA&BX^1Q8MH>VJN;&%Q4P#1!JS)`1@#T@B,\nM!^L%C@!CH5%IDNDVW5$75W)XYZENJ++C@AUTNEV6=V;R]ES0[BRR<^=.C#%X\nM[VDTFGSPPQ]@M&F>>^?N(`P#E-(H)5%>#NRST#(`9TA';:S-K6MM7NRT\nM!6-701@+:AF`%9CEOLF'&`.GS&S"N'GFE^:I-"LD.N'1WL.\\\\HIS&>D^3FFB\nMC'/\\+ZB\\OBSH%$\\&%W\\>[+&XL8(C#T^!WQQ3UF!LC.BU:K2:E58'\\YPJ?P#A)!LWK293WSZ8T3G\nM#[EG<"LFR/+FTGDJJDJ,P3O_X);/S+H5#RPW;7D(%:!6PF;5ZK8()UV`60XA\nM"L\\X+_`$:`/K)M=ST,QPG'62\\Y\nMBW>][QW$+]G/CY-[T%ZC,XO6EH"01C3!G%X\\ZK2_.YW3^5[W2DB87&G\\FFN%\nM99\\EKTGHM?>L!4^`-2"%XHI+KF"V-8O+',XXK/$8X]#:HK4A30U)JHE'";,S\nMZ_GH=7_.X3,>YH'!W<1I1AQGC,<91CO.:)Y)G"0DX^0_!T^,']=MNPK`VM6%\nM+ZQO<^JT:SWPBTH7SYDUSWE"C!5H8SEO^Z_S[DO?C3`"-!AMR3)#EAF21),D\nMFG&S&WBH>Q_#8*_#G(`]CBKY@"T`:W7Q+\\NPL8(C#X^-[0N@!5'"+`6%@:&9]J>-U_T)UQX\nMUF60@4L=::I7E(_CE-$H9:D_X*;'O\\(CQW[*8)#2ZXWH]H8$NL*EFR]G,EC'\nM0P6,Z!O'D#*4.$*B$!Y6K(P")+EI`FJE1"17U"\nMVR2L3"'$@(B`4GV&I@?NQ"F?E%1>_GX?VW7/!,.F]\nM2H=6C(,LGZ^+Z4D;0Y(&*"614E`+Z[QBPX5G2^\\?'5B>S.?\\A[&@1_Z1R?TF**:FT2[Q6&,D$QR!LB`A7BG^X"-0,IFFGQ*U,7O1QMGK7DY--?COW;=QYY.W[^[U!G^5[G8W!]/"\nMSE_?.WXFMG8%0-M[]DC?L7&WDX^2;G4N?H[Q\\EGGR\\][D-[3!>"A8EW&07I<\nMZX6_*R&Y9LEQ3D`8392FF`IFF(PF:`4M%KM+?&/?O_EG%O?,=P?=_W!C_X6%\nMSPT>GWA[E?;U\\7%#O0#X[M_F2@A!S3EJSU+J>^?+SBQP'X/_O\\!K`$\nI-(G$))$(!2+%N:X?H['^_O_]*_X'!HIY!5TY']L`````245.1*Y"8(+\\\n`\nend\n \. -- -- Data for Name: pkgmetasql; Type: TABLE DATA; Schema: xtdesktop; Owner: admin -- COPY pkgmetasql (metasql_id, metasql_group, metasql_name, metasql_notes, metasql_query, metasql_lastuser, metasql_lastupdate, metasql_grade) FROM stdin; 228 desktop glforwardupdate Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: glforwardupdate\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT MIN(forwardUpdateAccount(accnt_id)) AS result \nFROM accnt \nWHERE (accnt_id IN ())\n \N \N 0 207 desktop bankBal Forward update balances if applicable Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: bankBal\n-- Notes: \n-- Forward update balances if applicable\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT forwardUpdateAccount(bankaccnt_accnt_id) AS result \nFROM bankaccnt \nWHERE (NOT fetchmetricbool('ManualForwardUpdate'));\n\n-- Return results\nSELECT bankaccnt_id, bankaccnt_name, trialbal_ending * -1 AS balance,\n 'curr' AS balance_xtnumericrole\nFROM bankaccnt\n JOIN accnt ON (bankaccnt_accnt_id=accnt_id)\n JOIN trialbal ON (accnt_id=trialbal_accnt_id)\n JOIN (SELECT period_id\n FROM period\n JOIN yearperiod ON (period_yearperiod_id=yearperiod_id)\n JOIN trialbal ON (trialbal_period_id=period_id)\n WHERE (period_start <= current_date)\n ORDER BY yearperiod_end desc, period_number desc\n LIMIT 1) data\n ON (trialbal_period_id=period_id)\nORDER BY bankaccnt_name;\n \N \N 0 468 desktop cmmntPrefSrc Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group:desktop\r\n-- Name:cmmntPrefSrc\r\n-- Notes: \r\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\r\n-- See www.xtuple.com/CPAL for the full text of the software license.\r\n\r\nSELECT A.id AS id, A.cmntsource_name AS cmntsource_name, A.cmntsource_fullname AS cmntsource_fullname\r\nFROM (SELECT 1 AS id, '' AS cmntsource_name, 'All Sources' AS cmntsource_fullname\r\n UNION\r\n SELECT 2, 'ADDR', 'Address'\r\n \r\n UNION\r\n SELECT 3, 'BBH', 'BBOMHead'\r\n UNION\r\n SELECT 4, 'BBI', 'BBOMItem'\r\n \r\n UNION\r\n SELECT 5, 'BMH', 'BOMHead'\r\n UNION\r\n SELECT 6, 'BMI', 'BOMItem'\r\n \r\n UNION\r\n SELECT 7, 'BOH', 'BOOHead'\r\n UNION\r\n SELECT 8, 'BOI', 'BOOItem'\r\n UNION\r\n SELECT 9, 'CRMA', 'CRMAccount'\r\n \r\n UNION\r\n SELECT 10, 'T', 'Contact'\r\n UNION\r\n SELECT 11, 'C', 'Customer'\r\n UNION\r\n SELECT 12, 'EMP', 'Employee'\r\n UNION\r\n SELECT 13, 'INCDT', 'Incident'\r\n UNION\r\n SELECT 14, 'I', 'Item'\r\n UNION\r\n SELECT 15, 'IS', 'ItemSite'\r\n UNION\r\n SELECT 16, 'IR', 'ItemSource'\r\n UNION\r\n SELECT 17, 'L', 'Location'\r\n \r\n UNION\r\n SELECT 18, 'LS', 'LotSerial'\r\n \r\n UNION\r\n SELECT 19, 'OPP', 'Opportunity'\r\n UNION\r\n SELECT 20, 'J', 'Project'\r\n UNION\r\n SELECT 21, 'P', 'PurchaseOrder'\r\n UNION\r\n SELECT 22, 'PI', 'PurchaseOrderItem'\r\n \r\n UNION\r\n SELECT 23, 'RA', 'ReturnAuth'\r\n \r\n UNION\r\n SELECT 24, 'RI', 'ReturnAuthItem'\r\n UNION\r\n SELECT 25, 'Q', 'Quote'\r\n UNION\r\n SELECT 26, 'QI', 'QuoteItem'\r\n UNION\r\n SELECT 27, 'S', 'SalesOrder'\r\n UNION\r\n SELECT 28, 'SI', 'SalesOrderItem'\r\n UNION\r\n SELECT 29, 'TA', 'Task'\r\n UNION\r\n SELECT 30, 'TD', 'TodoItem'\r\n \r\n UNION\r\n SELECT 31, 'TO', 'TransferOrder'\r\n UNION\r\n SELECT 32, 'TI', 'TransferOrderItem'\r\n \r\n UNION\r\n SELECT 33, 'V', 'Vendor'\r\n UNION\r\n SELECT 34, 'WH', 'Warehouse'\r\n UNION\r\n SELECT 35, 'W', 'WorkOrder') AS A\r\nWHERE ((true)\r\n\r\n AND (A.id IN ())\r\n\r\n )\r\nORDER BY A.id;\r\n \N \N 0 469 desktop cmmntPrefType Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group:desktop\r\n-- Name:cmmntPrefType\r\n-- Notes: \r\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\r\n-- See www.xtuple.com/CPAL for the full text of the software license.\r\n\r\nSELECT 0 AS id, 'All Types' AS commenttype_name\r\nUNION\r\nSELECT cmnttype_id AS id, cmnttype_name AS commenttype_name\r\nFROM cmnttype \r\nORDER BY commenttype_name;\r\n\r\n\r\n \N \N 0 470 desktop cmmntPrefUser Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group:desktop\r\n-- Name:cmmntPrefUser\r\n-- Notes: \r\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\r\n-- See www.xtuple.com/CPAL for the full text of the software license.\r\n\r\nSELECT usr_id, usr_username\r\nFROM usr \r\nWHERE (usr_username=current_user)\r\nUNION\r\nSELECT usr_id, usr_username AS usr_username\r\nFROM usr\r\nWHERE ((usr_active = true)\r\n AND(usr_username <> current_user))\r\nORDER BY usr_username; \r\n\r\n\r\n\r\n \N \N 0 471 desktop commentConsole Comment Console Query - update for OPP in 3.8 Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\r\n-- Name: commentConsole\r\n-- Notes: Comment Console Query - update for OPP in 3.8\r\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\r\n-- See www.xtuple.com/CPAL for the full text of the software license.\r\n\r\nSELECT \r\n comment_source_id,\r\n comment_date,\r\n cmnttype_name,\r\n firstLine(comment_text) AS comment_text,\r\n comment_text AS comment_text_qttooltiprole,\r\n comment_user,\r\n CASE WHEN comment_source = 'OPP' THEN 'OPP-Opportunity'\r\n WHEN comment_source = 'T' THEN 'T-Contact'\r\n ELSE comment_source END AS comment_source,\r\n CASE WHEN cmnttype_name = 'Email Received' THEN 6.5\r\n WHEN cmnttype_name = 'Email Sent' THEN 3.5\r\n WHEN cmnttype_name = 'Internal Information' THEN 1\r\n WHEN cmnttype_name = 'Left Message' THEN 1\r\n WHEN cmnttype_name = 'Meeting' THEN 25\r\n WHEN cmnttype_name = 'Outside Meeting' THEN 35\r\n WHEN cmnttype_name = 'Phone Call' THEN 7\r\n WHEN cmnttype_name = 'Sample Confirmation' THEN 1\r\n WHEN cmnttype_name = 'Sample Request' THEN 10\r\n WHEN cmnttype_name = 'Sent Postcard' THEN 1\r\n WHEN cmnttype_name = 'Trade Show' THEN 15\r\n ELSE 0 END AS points,\r\n 'qty' AS points_xttotalrole,\r\n CASE\r\n-- Address\r\n WHEN comment_source = 'ADDR' THEN\r\n (SELECT addr_line1 || addr_line2 || addr_line3\r\n FROM addr\r\n WHERE ((addr_id = comment_source_id)\r\n AND (comment_source = 'ADDR')))\r\n\r\n-- BBOMHead\r\n \r\n WHEN (comment_source = 'BBH')THEN\r\n (SELECT item_descrip1 || ' - ' || item_number\r\n FROM xtmfg.bbomitem, item\r\n WHERE ((comment_source_id = bbomitem_id)\r\n AND (item_id = bbomitem_parent_item_id)\r\n AND (comment_source = 'BBH')))\r\n \r\n\r\n-- BBOMItem\r\n \r\n WHEN (comment_source = 'BBI') THEN\r\n (\r\n (SELECT 'Parent - ' || item.item_descrip1 || ' - ' || item.item_number\r\n FROM xtmfg.bbomitem, item\r\n WHERE ((comment_source_id = bbomitem_id)\r\n AND (item_id = bbomitem_parent_item_id)\r\n AND (comment_source = 'BBI')))\r\n || ' - ' ||\r\n (SELECT 'BBOM Item - ' || item.item_descrip1 || ' - ' || item.item_number\r\n FROM xtmfg.bbomitem, item\r\n WHERE ((comment_source_id = bbomitem_id)\r\n AND (item_id = bbomitem_item_id)\r\n AND (comment_source = 'BBI')))\r\n )\r\n \r\n\r\n-- BOMHead\r\n WHEN comment_source = 'BMH' THEN\r\n (SELECT item_descrip1 || ' - ' || item_number\r\n FROM bomhead, item\r\n WHERE ((comment_source_id = bomhead_item_id)\r\n AND (bomhead_item_id = item_id)\r\n AND (comment_source = 'BMH')))\r\n\r\n-- BOM Item \r\n WHEN comment_source = 'BMI' THEN\r\n (\r\n (SELECT 'Parent - ' || item.item_descrip1 || ' - ' || item.item_number FROM \r\n public.bomitem, \r\n public.item\r\n WHERE bomitem.bomitem_parent_item_id = item.item_id AND \r\n bomitem_id = comment_source_id\r\n AND comment_source = 'BMI') \r\n || ' - ' ||\r\n (SELECT 'BOM Item - ' || item.item_descrip1 || ' - ' || item.item_number FROM \r\n public.bomitem, \r\n public.item\r\n WHERE bomitem.bomitem_item_id = item.item_id AND \r\n bomitem_id = comment_source_id\r\n AND comment_source = 'BMI')\r\n )\r\n\r\n-- BOOHead\r\n \r\n WHEN (comment_source = 'BOH') THEN\r\n (SELECT item_descrip1 || ' - ' || item_number\r\n FROM xtmfg.boohead, item\r\n WHERE ((comment_source_id = boohead_item_id)\r\n AND (item_id = boohead_item_id)\r\n AND (comment_source = 'BOH')))\r\n \r\n\r\n-- BOOItem\r\n \r\n WHEN (comment_source = 'BOI') THEN\r\n (SELECT 'Item - ' || item.item_descrip1 || ' - ' ||item.item_number\r\n || ' - ' ||\r\n 'Operation - ' || booitem_descrip1\r\n FROM xtmfg.booitem, item\r\n WHERE ((xtmfg.booitem.booitem_item_id = item_id)\r\n AND (booitem_id = comment_source_id)\r\n AND (comment_source = 'BOI')))\r\n \r\n\r\n-- T Contact\r\n WHEN comment_source = 'T' THEN\r\n (SELECT cntct_first_name || ' ' || cntct_last_name FROM cntct \r\n WHERE cntct_id = comment_source_id \r\n AND comment_source = 'T'\r\n )\r\n-- Opportunity\r\n-- Put this back in after 3.8.0\r\n/*\r\n\tWHEN comment_source = 'OPP' THEN\r\n (\r\n SELECT ophead_name || ' Account: ' || crmacct_number || ' - ' || crmacct_name || ' Priority: ' || incdtpriority_name || ' - ' || ' Assigned To: ' || ophead_username\r\n FROM ophead\r\n LEFT OUTER JOIN crmacct ON (ophead_crmacct_id = crmacct_id)\r\n LEFT OUTER JOIN incdtpriority ON (ophead_priority_id = incdtpriority_id)\r\n WHERE \r\n comment_source = 'OPP'\r\n AND comment_source_id = ophead_id\r\n\t )\r\n*/\r\n-- Customer\r\n WHEN comment_source = 'C' THEN\r\n (SELECT cust_number || ' - ' || cust_name FROM custinfo WHERE (cust_id = comment_source_id) AND (comment_source = 'C'))\r\n\r\n-- Credit Memo - Return Auth\r\n \r\n WHEN comment_source = 'CRMA' THEN\r\n (SELECT 'Credit Memo: ' || cmhead_number || ' Return Auth: ' || rahead_number || ' Customer ' || cust_number || ' - ' || cust_name\r\n FROM rahead, cmhead, custinfo\r\n WHERE\r\n ((cmhead_rahead_id = rahead_id)\r\n AND (cmhead_cust_id = cust_id)\r\n AND (cmhead_id = comment_source_id)\r\n AND (comment_source = 'CRMA')))\r\n \r\n\r\n-- Employee\r\n WHEN comment_source = 'EMP' THEN\r\n (SELECT emp_code || '-' || emp_name\r\n FROM emp \r\n WHERE((comment_source_id = emp_id)\r\n AND (comment_source = 'EMP')))\r\n\r\n-- Incident\r\n WHEN comment_source = 'INCDT' THEN\r\n (\r\n SELECT incdt_number || ' - ' ||\r\n crmacct_number || ' - ' || \r\n crmacct_name || ' - ' || \r\n incdt_summary\r\n FROM incdt, crmacct \r\n WHERE \r\n incdt_id = comment_source_id\r\n AND crmacct_id = incdt_crmacct_id\r\n AND (comment_source = 'INCDT')\r\n )\r\n\r\n-- Item\r\n WHEN comment_source = 'I' THEN\r\n (SELECT item_number || ' - ' || item_descrip1 \r\n FROM item WHERE item_id = comment_source_id\r\n AND (comment_source = 'I'))\r\n\r\n-- Item Site\r\n WHEN comment_source = 'IS' THEN\r\n (\r\n SELECT item_number || ' - ' || item_descrip1 \r\n FROM item, itemsite\r\n WHERE itemsite_item_id = item_id\r\n AND itemsite_id = comment_source_id\r\n AND (comment_source = 'IS')\r\n )\r\n\r\n-- ItemSource\r\n WHEN comment_source = 'IR' THEN\r\n (\r\n SELECT item_number || ' - ' || item_descrip1 \r\n FROM item, itemsrc\r\n WHERE itemsrc_item_id = item_id\r\n AND itemsrc_id = comment_source_id\r\n AND (comment_source = 'IR')\r\n )\r\n\r\n-- Location\r\n WHEN comment_source = 'L' THEN\r\n (SELECT location_name || ' - ' || location_descrip \r\n FROM location \r\n WHERE location_id = comment_source_id\r\n AND (comment_source = 'L'))\r\n\r\n-- LotSerial\r\n \r\n WHEN comment_source = 'LS' THEN\r\n (SELECT ls_number || '-' || item_number || '-' || item_descrip1 || item_descrip2\r\n FROM ls, item \r\n WHERE(ls_id = comment_source_id)\r\n AND(ls_item_id = item_id)\r\n AND (comment_source = 'LS'))\r\n \r\n-- Project \r\n WHEN comment_source = 'J' THEN\r\n (\r\n SELECT 'Project#: ' || prj_number || ' - Descrip: ' || prj_descrip || \r\n ' - Status: ' || prj_status || ' - Owner: ' || prj_owner_username || '- Due: ' || prj_due_date\r\n FROM prj\r\n WHERE\r\n prj_id = comment_source_id\r\n AND (comment_source = 'J')\r\n )\r\n-- PO Head\r\n WHEN comment_source = 'P' THEN\r\n (\r\n SELECT pohead_number || ' - ' || vend_number || ' - ' || vend_name\r\n FROM pohead, vendinfo\r\n WHERE pohead_vend_id = vend_id\r\n AND comment_source_id = pohead_id\r\n AND (comment_source = 'P')\r\n )\r\n-- PO Item\r\n WHEN comment_source = 'PI' THEN\r\n (\r\n SELECT pohead_number || ' - ' || vend_number || ' - ' || vend_name || ' - ' ||\r\n (\r\n SELECT item_number || ' - ' || item_descrip1\r\n FROM poitem, itemsite, item\r\n WHERE poitem_itemsite_id = itemsite_id\r\n AND itemsite_item_id = item_id\r\n AND comment_source_id = poitem_id\r\n AND comment_source = 'PI'\r\n )\r\n || ' - ' || poitem_vend_item_number \r\n || ' - ' || poitem_vend_item_descrip \r\n FROM pohead, vendinfo, poitem\r\n WHERE pohead_vend_id = vend_id\r\n AND poitem_pohead_id = pohead_id\r\n AND comment_source_id = poitem_id\r\n AND comment_source = 'PI'\r\n )\r\n-- Quote Head\r\n WHEN comment_source = 'Q' THEN\r\n (\r\n SELECT 'Quote#: ' || quhead_number || ' - Customer: ' || cust_number || ' - ' || cust_name\r\n FROM quhead, custinfo\r\n WHERE quhead_cust_id = cust_id \r\n AND quhead_id = comment_source_id\r\n AND comment_source = 'Q'\r\n )\r\n-- Quote Item\r\n WHEN comment_source = 'QI' THEN\r\n (\r\n SELECT 'Quote#: ' || quhead_number || ' Customer ' || cust_number || ' - ' || \r\n cust_name || ' Line #: ' || quitem_linenumber || ' - ' || ' Item#: ' || item_number || ' - ' || item_descrip1 || ' - Order Qty: ' || formatQty(quitem_qtyord)\r\n FROM quhead, quitem, item, itemsite, custinfo\r\n \r\n WHERE\r\n quitem_quhead_id = quhead_id\r\n AND quhead_cust_id = cust_id\r\n AND quitem_itemsite_id = itemsite_id\r\n AND itemsite_item_id = item_id\r\n AND quitem_id = comment_source_id\r\n AND comment_source = 'QI'\r\n )\r\n-- Return Auth Head\r\n \r\n WHEN comment_source = 'RA' THEN\r\n (\r\n SELECT rahead_number || ' - ' || cust_number || ' - ' || cust_name\r\n FROM rahead, custinfo\r\n WHERE rahead_cust_id = cust_id \r\n AND rahead_id = comment_source_id\r\n AND comment_source = 'RA'\r\n )\r\n \r\n-- SO Head\r\n WHEN comment_source = 'S' THEN\r\n (\r\n SELECT cohead_number || ' - ' || cust_number || ' - ' || cust_name\r\n FROM cohead, custinfo\r\n WHERE cohead_cust_id = cust_id \r\n AND cohead_id = comment_source_id\r\n AND comment_source = 'S'\r\n )\r\n-- SO Item \r\n WHEN comment_source = 'SI' THEN\r\n (\r\n SELECT 'Sales Order: ' || cohead_number || ' Customer ' || cust_number || ' - ' || \r\n cust_name || ' Line #: ' || coitem_linenumber || ' - ' || ' Item#: ' || item_number || ' - ' || item_descrip1 || ' - Order Qty: ' || formatQty(coitem_qtyord)\r\n FROM cohead, coitem, item, itemsite, custinfo\r\n \r\n WHERE\r\n coitem_cohead_id = cohead_id\r\n AND cohead_cust_id = cust_id\r\n AND coitem_itemsite_id = itemsite_id\r\n AND itemsite_item_id = item_id\r\n AND coitem_id = comment_source_id\r\n AND comment_source = 'SI'\r\n )\r\n\r\n-- Task\r\n WHEN comment_source = 'TA' THEN\r\n (\r\n SELECT prj_number || '-' || prjtask_number || '-' || prjtask_name || '-' || prjtask_descrip\r\n FROM prjtask, prj\r\n WHERE((prjtask_prj_id = prj_id)\r\n AND(prjtask_id = comment_source_id)\r\n AND(comment_source = 'TA'))\r\n )\r\n\r\n--TodoItem\r\n WHEN comment_source = 'TD' THEN\r\n (\r\n SELECT todoitem_name || '-' || todoitem_description\r\n FROM todoitem\r\n WHERE((todoitem_id = comment_source_id)\r\n AND(comment_source = 'TD'))\r\n )\r\n\r\n--Transfer Order Header\r\n \r\n WHEN comment_source = 'TO' THEN\r\n (\r\n SELECT 'Transfer#: ' || tohead_number || ' - Status: ' || tohead_status || ' - Source / Dest: ' || \r\n (SELECT warehous_code FROM whsinfo WHERE warehous_id = tohead_src_warehous_id) || ' / ' ||\r\n (SELECT warehous_code FROM whsinfo WHERE warehous_id = tohead_dest_warehous_id) \r\n FROM tohead\r\n WHERE tohead_id = comment_source_id\r\n AND comment_source = 'TO'\r\n )\r\n \r\n--Transfer Order item\r\n \r\n WHEN comment_source = 'TI' THEN\r\n (\r\n SELECT 'Transfer#: ' || tohead_number || ' - Status: ' || tohead_status || ' - Source / Dest: ' || \r\n (SELECT warehous_code FROM whsinfo WHERE warehous_id = tohead_src_warehous_id) || ' / ' ||\r\n (SELECT warehous_code FROM whsinfo WHERE warehous_id = tohead_dest_warehous_id) ||\r\n ' - Item: ' || item_number || ' - ' || item_descrip1 || ' - Qty: ' || formatQty(toitem_qty_ordered)\r\n FROM tohead, toitem, item\r\n WHERE \r\n toitem_item_id = item_id \r\n AND toitem_tohead_id = tohead_id\r\n AND toitem_id = comment_source_id\r\n AND comment_source = 'TI'\r\n )\r\n \r\n-- Vendor\r\n WHEN comment_source = 'V' THEN\r\n (\r\n SELECT 'Vendor Name: ' || vend_name || ' - Vendor Number: ' || vend_number\r\n FROM vendinfo\r\n WHERE vend_id = comment_source_id\r\n AND comment_source = 'V'\r\n )\r\n\r\n-- Warehouse \r\n WHEN comment_source = 'WH' THEN \r\n (SELECT warehous_code || ' - ' || warehous_descrip \r\n FROM whsinfo WHERE warehous_id = comment_source_id\r\n AND comment_source = 'WH')\r\n\r\n-- Work Order\r\n WHEN comment_source = 'W' THEN\r\n (\r\n SELECT \r\n 'WO#: ' || wo_number || ' - ' || \r\n wo_subnumber || ' - ' || \r\n 'Status: ' || wo_status || ' - ' || \r\n 'Ordered: ' || formatQty(wo_qtyord) || ' - ' || \r\n 'Received: ' || formatQty(wo_qtyrcv) || ' - ' || \r\n 'Item: ' || item_number || ' - ' || \r\n item_descrip1\r\n FROM wo, itemsite, item\r\n WHERE wo_itemsite_id = itemsite_id\r\n AND itemsite_item_id = item_id\r\n AND wo_id = comment_source_id\r\n AND comment_source = 'W'\r\n )\r\n-- Unknown\r\n ELSE 'Unknown Comment Type'\r\n END AS info\r\nFROM\r\n comment, cmnttype\r\nWHERE\r\n comment_cmnttype_id = cmnttype_id\r\n \r\n AND cmnttype_id IN ()\r\n \r\n --Example: these are the names given to the various comment types like 'General' or "ChangeLog' or those defined by the user.\r\n --This query will give you a list of them: \r\n --SELECT DISTINCT cmnttype_name, cmnttype_name FROM cmnttype ORDER BY cmnttype_name;\r\n-- AND comment_text LIKE '%'\r\n --Example: 'Created%' for all comments that start with the work 'Created'\r\n --Example: '%question% for all comments that contain the word 'question' anywhere in the comment\r\n\r\n \r\n AND comment_user IN (SELECT usr_username FROM usr WHERE usr_id IN ())\r\n -- \r\n \r\n \r\n \r\n AND comment_user = current_user\r\n -- \r\n \r\n \r\n --This list will show you users who have at least one comment\r\n --SELECT DISTINCT comment_user FROM comment ORDER BY comment_user;\r\n \r\n AND comment_source IN (\r\n \r\n \r\n \r\n \r\n ,\r\n \r\n \r\n )\r\n \r\n --This query will show all comment sources for which there is a comment\r\n --SELECT DISTINCT comment_source FROM comment ORDER BY comment_source;\r\n --Example: Incidents = 'INCDT'\r\n AND CAST(comment_date AS DATE) BETWEEN AND \r\nORDER BY \r\n comment_date, comment_user, comment_source; \N \N 0 208 desktop contacts Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: contacts\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT \n cntct_id AS id, crmacct_number, crmacct_name,\n cntct.*, addr.*\nFROM cntct \n LEFT OUTER JOIN crmacct ON (crmacct_cntct_id_1=cntct_id) \n LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) \nWHERE (cntct_owner_username=getEffectiveXtUser())\nORDER BY cntct_name;\n \N \N 0 216 desktop payables Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: payables\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT formatMoney(sum(apaging_cur_val)) AS cur_val,\n formatMoney(sum(apaging_thirty_val)) AS thirty_val,\n formatMoney(sum(apaging_sixty_val)) AS sixty_val,\n formatMoney(sum(apaging_ninety_val)) AS ninety_val,\n formatMoney(sum(apaging_plus_val)) AS plus_val,\n formatMoney(sum(apaging_total_val)) AS total_val \nFROM apaging(current_date, false);\n \N \N 0 214 desktop mfgHist Summarized Manufacture History for Desktop Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: mfgHist\n-- Notes: Summarized Manufacture History for Desktop\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT , , ,\n sum(invhist_value_after-invhist_value_before) as amount, sum(invhist_qoh_after-invhist_qoh_before) AS qty,\n 'curr' AS amount_xtnumericrole,\n 'qty' AS qty_xtnumericrole,\n 0 AS amount_xttotalrole,\n 0 AS qty_xttotalrole\nFROM invhist\n JOIN itemsite ON (itemsite_id=invhist_itemsite_id)\n JOIN plancode ON (plancode_id=itemsite_plancode_id)\n JOIN item ON (item_id=itemsite_item_id)\n JOIN classcode ON (classcode_id=item_classcode_id)\nWHERE ((invhist_transtype = 'RM')\n AND (invhist_ordtype = 'WO')\n AND ((invhist_transdate > DATE - 1 AND\n invhist_transdate < DATE + 1) )\n)\nGROUP BY , , \nORDER BY \n;\n \N \N 0 209 desktop crmaccounts Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: crmaccounts\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT \n crmacct_id AS id, crmacct_number, crmacct_name,\n cntct.*, addr.*\nFROM crmacct \n LEFT OUTER JOIN cntct ON (crmacct_cntct_id_1=cntct_id) \n LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) \nWHERE (crmacct_owner_username=getEffectiveXtUser())\nORDER BY crmacct_number;\n \N \N 0 210 desktop getDates Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: getDates\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT date_trunc(, current_date) AS startDate,\n date_trunc(, current_date) + + '-1 day' AS endDate\n \N \N 0 211 desktop glaccountBal tweak Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: glaccountBal\n-- Notes: tweak\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT accnt_id, formatGlAccount(accnt_id) AS accnt_id_qtdisplayrole, \n accnt_descrip, accnt_type,\n CASE WHEN(accnt_type='A') THEN \n WHEN(accnt_type='E') THEN \n WHEN(accnt_type='L') THEN \n WHEN(accnt_type='Q') THEN \n WHEN(accnt_type='R') THEN \n ELSE accnt_type\n END AS accnt_type_qtdisplayrole,\n CASE WHEN(accnt_type IN ('A','E')) THEN trialbal_ending * -1 \n ELSE trialbal_ending\n END AS balance,\n period_id,\n 'curr' AS balance_xtnumericrole\nFROM accnt \nJOIN trialbal ON (accnt_id=trialbal_accnt_id)\nJOIN (SELECT period_id\n FROM period\n JOIN yearperiod ON (period_yearperiod_id=yearperiod_id)\n WHERE (period_end >= current_date)\n ORDER BY yearperiod_end desc, period_number asc\n LIMIT 1) data\n ON (trialbal_period_id=period_id)\nWHERE (accnt_id IN ())\nORDER BY accnt_company, accnt_profit, accnt_number, accnt_sub\n \N \N 0 212 desktop glaccounts Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: glaccounts\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT accnt_id, formatGlAccount(accnt_id) AS accnt_id_qtdisplayrole, \n accnt_descrip, accnt_type,\n CASE WHEN(accnt_type='A') THEN \n WHEN(accnt_type='E') THEN \n WHEN(accnt_type='L') THEN \n WHEN(accnt_type='Q') THEN \n WHEN(accnt_type='R') THEN \n ELSE accnt_type\nEND AS accnt_type_qtdisplayrole \nFROM accnt;\t\n \N \N 0 472 desktop messageHistory Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\r\n-- Name: messageHistory\r\n-- Notes:\r\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\r\n-- See www.xtuple.com/CPAL for the full text of the software license.\r\n\r\nSELECT \r\n msg_id, \r\n msg_posted AS sent,\r\n CASE WHEN (msg_username = geteffectivextuser()) THEN 'me'\r\n ELSE msg_username END AS from,\r\n msg_text AS message,\r\n CASE WHEN msguser_username = geteffectivextuser() THEN 'me'\r\n ELSE msguser_username END AS to\r\nFROM msg a\r\nLEFT OUTER JOIN msguser ab ON a.msg_id = ab.msguser_msg_id\r\nWHERE (a.msg_username = geteffectivextuser())\r\n\r\nUNION\r\n\r\nSELECT \r\n msg_id, \r\n msg_posted AS sent,\r\n CASE WHEN (msg_username = geteffectivextuser()) THEN 'me'\r\n ELSE msg_username END AS from,\r\n msg_text AS message,\r\n CASE WHEN msguser_username = geteffectivextuser() THEN 'me'\r\n ELSE msguser_username END AS to\r\nFROM msg c\r\nLEFT OUTER JOIN msguser cd ON c.msg_id = cd.msguser_msg_id\r\nWHERE (cd.msguser_username = geteffectivextuser())\r\n\r\nORDER BY msg_id DESC\r\nLIMIT \N \N 0 213 desktop mfgAct Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: mfgAct\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n \nSELECT 'L' AS activity, AS activity_qtdisplayrole, 0 AS seq,\n COUNT(planord_id) AS count, COALESCE(sum(stdcost(item_id) * planord_qty),0) AS amount, \n sum(planord_qty) AS qty,\n 'curr' AS amount_xtnumericrole, 'qty' AS qty_xtnumericrole\nFROM planord\n JOIN itemsite ON (planord_itemsite_id = itemsite_id)\n JOIN item ON (itemsite_item_id = item_id)\nWHERE (planord_type = 'W')\nHAVING (COUNT(planord_id) > 0)\nUNION\n\nSELECT 'O' AS activity, AS activity_qtdisplayrole, 4 AS seq, \n COUNT(wo_id) AS count, \n SUM(round((wo_qtyord - wo_qtyrcv) * stdcost(itemsite_item_id),2)) AS amount, \n SUM(wo_qtyord - wo_qtyrcv) AS qty,\n 'curr' AS amount_xtnumericrole, 'qty' AS qty_xtnumericrole\nFROM wo\n JOIN itemsite ON (wo_itemsite_id=itemsite_id)\nWHERE (wo_status = 'O')\nHAVING (COUNT(wo_id) > 0)\nUNION ALL\nSELECT 'E' AS activity, AS activity_qtdisplayrole, 4 AS seq, \n COUNT(wo_id) AS count, \n SUM(round((wo_qtyord - wo_qtyrcv) * stdcost(itemsite_item_id),2)) AS amount, \n SUM(wo_qtyord - wo_qtyrcv) AS qty,\n 'curr' AS amount_xtnumericrole, 'qty' AS qty_xtnumericrole\nFROM wo\n JOIN itemsite ON (wo_itemsite_id=itemsite_id)\nWHERE (wo_status = 'E')\nHAVING (COUNT(wo_id) > 0)\nUNION ALL\nSELECT 'R' AS activity, AS activity_qtdisplayrole, 4 AS seq, \n COUNT(wo_id) AS count, \n SUM(round((wo_qtyord - wo_qtyrcv) * stdcost(itemsite_item_id),2)) AS amount, \n SUM(wo_qtyord - wo_qtyrcv) AS qty,\n 'curr' AS amount_xtnumericrole, 'qty' AS qty_xtnumericrole\nFROM wo\n JOIN itemsite ON (wo_itemsite_id=itemsite_id)\nWHERE (wo_status = 'R')\nHAVING (COUNT(wo_id) > 0)\nUNION ALL\nSELECT 'I' AS activity, AS activity_qtdisplayrole, 4 AS seq, \n COUNT(wo_id) AS count, \n SUM(round((wo_qtyord - wo_qtyrcv) * stdcost(itemsite_item_id),2)) AS amount, \n SUM(wo_qtyord - wo_qtyrcv) AS qty,\n 'curr' AS amount_xtnumericrole, 'qty' AS qty_xtnumericrole\nFROM wo\n JOIN itemsite ON (wo_itemsite_id=itemsite_id)\nWHERE (wo_status = 'I')\nHAVING (COUNT(wo_id) > 0)\nORDER BY seq;\n \N \N 0 215 desktop mfgOpen Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: mfgOpen\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT wo_id,\n CASE WHEN (wo_ordid IS NULL) THEN -1\n ELSE wo_ordid\n END AS orderid, wo_status,\n CASE WHEN (wo_status = 'E') THEN \n WHEN (wo_status = 'I') THEN \n WHEN (wo_status = 'R') THEN \n WHEN (wo_status = 'O') THEN \n END AS wo_status_qtdisplayrole, \n warehous_code, uom_name,\n item_number, (item_descrip1 || ' ' || item_descrip2) AS itemdescrip,\n wo_qtyord, wo_qtyrcv, wo_startdate, wo_duedate,\n wo_number::TEXT || '-' || wo_subnumber::TEXT AS wonumber,\n wo_postedvalue, wo_wipvalue,\n 'qty' AS wo_qtyord_xtnumericrole,\n 'qty' AS wo_qtyrcv_xtnumericrole,\n 'curr' AS wo_postedvalue_xtnumericrole,\n 'curr' AS wo_wipvalue_xtnumericrole,\n CASE WHEN ((wo_startdate<=CURRENT_DATE) AND (wo_status IN ('O','E','S','R'))) THEN 'error'\n END AS wo_startdate_qtforegroundrole,\n CASE WHEN (wo_duedate<=CURRENT_DATE) THEN 'error'\n END AS wo_duedate_qtforegroundrole,\n CASE WHEN (wo_duedate<=CURRENT_DATE) THEN 'Overdue'\n ELSE 'On Time'\n END AS condition,\n CASE WHEN (wo_duedate<=CURRENT_DATE) THEN 'error' END AS condition_qtforegroundrole\nFROM wo\n JOIN itemsite ON (wo_itemsite_id=itemsite_id)\n JOIN whsinfo ON (itemsite_warehous_id=warehous_id)\n JOIN item ON (itemsite_item_id=item_id)\n JOIN uom ON (item_inv_uom_id=uom_id)\nWHERE (wo_status != 'C')\nORDER BY wo_number, wo_subnumber;\n \N \N 0 217 desktop pkgItems Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: pkgItems\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\nSELECT *,\n CASE WHEN pkgitem_type='P' THEN \n WHEN pkgitem_type='C' THEN \n WHEN pkgitem_type='D' THEN \n WHEN pkgitem_type='F' THEN \n WHEN pkgitem_type='G' THEN \n WHEN pkgitem_type='I' THEN \n WHEN pkgitem_type='M' THEN \n WHEN pkgitem_type='P' THEN \n WHEN pkgitem_type='R' THEN \n WHEN pkgitem_type='S' THEN \n WHEN pkgitem_type='T' THEN \n WHEN pkgitem_type='U' THEN \n WHEN pkgitem_type='V' THEN \n WHEN pkgitem_type='L' THEN \n WHEN pkgitem_type='B' THEN \n WHEN pkgitem_type='C' THEN \n ELSE pkgitem_type END AS pkgitem_type_qtdisplayrole\nFROM (\n------ PACKAGE ------\nSELECT pkghead_id AS pkgitem_id, 0 AS seq,\n 0 AS xtindentrole,\n pkghead_name AS pkgname,\n 'P'::text AS pkgitem_type,\n pkghead_name AS pkgitem_name,\n pkghead_descrip AS pkgitem_descrip\n FROM pkghead\nUNION\n\n------ CLIENT ------\nSELECT pkghead_id AS pkgitem_id, 1 AS seq,\n 1 AS xtindentrole,\n pkghead_name AS pkgname,\n 'L'::text AS pkgitem_type,\n AS pkgitem_name,\n '' AS pkgitem_descrip\n FROM pkghead\nUNION\n------ COMMANDS ------\nSELECT pkghead_id AS pkgitem_id, 2 AS seq,\n 2 AS xtindentrole,\n pkghead_name AS pkgname,\n 'L'::text AS pkgitem_type,\n AS pkgitem_name,\n '' AS pkgitem_descrip\n FROM pkghead\nUNION \nSELECT cmd_id AS pkgitem_id, 3 AS seq,\n 3 AS xtindentrole,\n nspname AS pkgname,\n 'D' AS pkgitem_type,\n cmd_name AS pkgitem_name,\n cmd_descrip AS pkgitem_descrip \n FROM cmd\n JOIN pg_class ON (cmd.tableoid=pg_class.oid)\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\nUNION\n------ IMAGES ------\nSELECT pkghead_id AS pkgitem_id, 4 AS seq,\n 2 AS xtindentrole,\n pkghead_name AS pkgname,\n 'L'::text AS pkgitem_type,\n AS pkgitem_name,\n '' AS pkgitem_descrip\n FROM pkghead\nUNION \nSELECT image_id AS pkgitem_id, 5 AS seq,\n 3 AS xtindentrole,\n nspname AS pkgname,\n 'I'::text AS pkgitem_type,\n image_name AS pkgitem_name,\n image_descrip AS pkgitem_descrip \n FROM image\n JOIN pg_class ON (image.tableoid=pg_class.oid)\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\nUNION \n------ METASQL ------\nSELECT pkghead_id AS pkgitem_id, 6 AS seq,\n 2 AS xtindentrole,\n pkghead_name AS pkgname,\n 'L'::text AS pkgitem_type,\n AS pkgitem_name,\n '' AS pkgitem_descrip\n FROM pkghead\nUNION\nSELECT metasql_id AS pkgitem_id, 7 AS seq,\n 3 AS xtindentrole,\n nspname AS pkgname,\n 'M' AS pkgitem_type,\n metasql_group || '-' || metasql_name AS pkgitem_name,\n metasql_notes AS pkgitem_descrip \n FROM metasql\n JOIN pg_class ON (metasql.tableoid=pg_class.oid)\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\nUNION\n------ PRIVILEGES ------\nSELECT pkghead_id AS pkgitem_id, 8 AS seq,\n 2 AS xtindentrole,\n pkghead_name AS pkgname,\n 'L'::text AS pkgitem_type,\n AS pkgitem_name,\n '' AS pkgitem_descrip\n FROM pkghead\nUNION\nSELECT priv_id AS pkgitem_id, 9 AS seq,\n 3 AS xtindentrole,\n nspname AS pkgname,\n 'P' AS pkgitem_type,\n priv_module || '.' || priv_name AS pkgitem_name,\n priv_descrip AS pkgitem_descrip \n FROM priv\n JOIN pg_class ON (priv.tableoid=pg_class.oid)\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\nUNION \n------ REPORTS ------\nSELECT pkghead_id AS pkgitem_id, 10 AS seq,\n 2 AS xtindentrole,\n pkghead_name AS pkgname,\n 'L'::text AS pkgitem_type,\n AS pkgitem_name,\n '' AS pkgitem_descrip\n FROM pkghead\nUNION\nSELECT report_id AS pkgitem_id, 11 AS seq,\n 3 AS xtindentrole,\n nspname AS pkgname,\n 'R' AS pkgitem_type,\n report_name AS pkgitem_name,\n report_descrip AS pkgitem_descrip \n FROM report\n JOIN pg_class ON (report.tableoid=pg_class.oid)\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid) \nUNION\n------ SCRIPTS ------\nSELECT pkghead_id AS pkgitem_id, 12 AS seq,\n 2 AS xtindentrole,\n pkghead_name AS pkgname,\n 'L'::text AS pkgitem_type,\n AS pkgitem_name,\n '' AS pkgitem_descrip\n FROM pkghead\nUNION\nSELECT script_id AS pkgitem_id, 13 AS seq,\n 3 AS xtindentrole,\n nspname AS pkgname,\n 'C'::text AS pkgitem_type,\n script_name AS pkgitem_name,\n script_notes AS pkgitem_descrip\n FROM script\n JOIN pg_class ON (script.tableoid=pg_class.oid)\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\nUNION\n------ SCREENS ------\nSELECT pkghead_id AS pkgitem_id, 14 AS seq,\n 2 AS xtindentrole,\n pkghead_name AS pkgname,\n 'L'::text AS pkgitem_type,\n AS pkgitem_name,\n '' AS pkgitem_descrip\n FROM pkghead\nUNION\nSELECT uiform_id AS pkgitem_id, 15 AS seq,\n 3 AS xtindentrole,\n nspname AS pkgname,\n 'U'::text AS pkgitem_type,\n uiform_name AS pkgitem_name,\n uiform_notes AS pkgitem_descrip\n FROM uiform\n JOIN pg_class ON (uiform.tableoid=pg_class.oid)\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\nUNION\n------ DATABASE ------\nSELECT pkghead_id AS pkgitem_id, 20 AS seq, \n 1 AS xtindentrole,\n pkghead_name AS pkgname,\n 'B'::text AS pkgitem_type,\n AS pkgitem_name,\n '' AS pkgitem_descrip\n FROM pkghead\nUNION\n------ FUNCTIONS ------\nSELECT pkghead_id AS pkgitem_id, 21 AS seq,\n 2 AS xtindentrole,\n pkghead_name AS pkgname,\n 'L'::text AS pkgitem_type,\n AS pkgitem_name,\n '' AS pkgitem_descrip\n FROM pkghead\nUNION\nSELECT pg_proc.oid AS pkgitem_id, 22 AS seq,\n 3 AS xtindentrole,\n nspname AS pkgname,\n 'F' AS pkgitem_type,\n proname || '(' || oidvectortypes(proargtypes)\n || ')' AS pkgitem_name,\n pg_catalog.obj_description(pg_proc.oid, 'pg_proc') AS pkgitem_descrip \n FROM pg_proc\n JOIN pg_namespace ON (pronamespace=pg_namespace.oid)\nUNION\n------ SCHEMA ------\nSELECT pkghead_id AS pkgitem_id, 27 AS seq,\n 2 AS xtindentrole,\n pkghead_name AS pkgname,\n 'L'::text AS pkgitem_type,\n AS pkgitem_name,\n '' AS pkgitem_descrip\n FROM pkghead\nUNION\nSELECT n.oid AS pkgitem_id, 28 AS seq,\n 3 AS xtindentrole,\n nspname AS pkgname,\n 'S' AS pkgitem_type,\n nspname AS pkgitem_name,\n pg_catalog.obj_description(n.oid, 'pg_namespace') AS pkgitem_descrip \n FROM pg_namespace n\nUNION\n------ TABLES ------\nSELECT pkghead_id AS pkgitem_id, 29 AS seq,\n 2 AS xtindentrole,\n pkghead_name AS pkgname,\n 'L'::text AS pkgitem_type,\n AS pkgitem_name,\n '' AS pkgitem_descrip\n FROM pkghead\nUNION\nSELECT c.oid AS pkgitem_id, 30 AS seq,\n 3 AS xtindentrole,\n nspname AS pkgname,\n 'T' AS pkgitem_type,\n relname AS pkgitem_name,\n pg_catalog.obj_description(c.oid, 'pg_class') AS pkgitem_descrip \n FROM pg_class c\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\n WHERE ((relkind='r')\n AND (relname !~ '^pkg(cmd(arg)?|image|metasql|priv|report|script|uiform)$'))\nUNION\n------ TRIGGERS ------\nSELECT pkghead_id AS pkgitem_id, 31 AS seq,\n 2 AS xtindentrole,\n pkghead_name AS pkgname,\n 'L'::text AS pkgitem_type,\n AS pkgitem_name,\n '' AS pkgitem_descrip\n FROM pkghead\nUNION\nSELECT 0 AS pkgitem_id, 32 AS seq,\n 3 AS xtindentrole,\n trigger_schema AS pkgname,\n 'G' AS pkgitem_type,\n trigger_name AS pkgitem_name,\n event_object_table AS pkgitem_descrip \n FROM information_schema.triggers\n WHERE (trigger_name !~ '^pkg(cmd(arg)?|image|metasql|priv|report|script|uiform)')\nUNION\n------ VIEWS ------\nSELECT pkghead_id AS pkgitem_id, 33 AS seq,\n 2 AS xtindentrole,\n pkghead_name AS pkgname,\n 'L'::text AS pkgitem_type,\n AS pkgitem_name,\n '' AS pkgitem_descrip\n FROM pkghead\nUNION\nSELECT c.oid AS pkgitem_id, 34 AS seq,\n 3 AS xtindentrole,\n nspname AS pkgname,\n 'V' AS pkgitem_type,\n relname AS pkgitem_name,\n pg_catalog.obj_description(c.oid, 'pg_class') AS pkgitem_descrip \n FROM pg_class c\n JOIN pg_namespace ON (relnamespace=pg_namespace.oid)\n WHERE ((relkind='v'))\n) AS pkgitem \nWHERE (pkgname NOT IN ('api','public','pg_catalog'))\nORDER BY pkgname, seq, pkgitem_type_qtdisplayrole, pkgitem_name;\n \N \N 0 218 desktop purchAct Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: purchAct\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n \nSELECT 'L' AS activity, AS activity_qtdisplayrole, 0 AS seq,\n COUNT(planord_id) AS count, COALESCE(sum(stdcost(item_id) * planord_qty),0) AS amount, \n 'curr' AS amount_xtnumericrole\nFROM planord\n JOIN itemsite ON (planord_itemsite_id = itemsite_id)\n JOIN item ON (itemsite_item_id = item_id)\nWHERE (planord_type = 'P')\nHAVING (COUNT(planord_id) > 0)\nUNION\n\nSELECT 'Q' AS activity, AS activity_qtdisplayrole, 2 AS seq,\n COUNT(pr_id) AS count, COALESCE(sum(stdcost(item_id) * pr_qtyreq),0) AS amount, \n 'curr' AS amount_xtnumericrole\nFROM pr\n JOIN itemsite ON (pr_itemsite_id = itemsite_id)\n JOIN item ON (itemsite_item_id = item_id)\nHAVING (COUNT(pr_id) > 0)\nUNION\nSELECT 'U' AS activity, AS activity_qtdisplayrole, 3 AS seq, \n COUNT(pohead_id) AS count, COALESCE(sum(amount),0) AS amount, 'curr' AS amount_xtnumericrole\nFROM\n (SELECT pohead_id,\n SUM(round((noNeg(poitem_qty_ordered - poitem_qty_received + poitem_qty_returned)) * \n currToBase(pohead_curr_id, poitem_unitprice, pohead_orderdate), 2) ) AS amount\n FROM poitem\n JOIN pohead ON (poitem_pohead_id=pohead_id)\n WHERE (pohead_status = 'U')\n GROUP BY pohead_id) data\nHAVING (COUNT(pohead_id) > 0)\nUNION\nSELECT 'O' AS activity, AS activity_qtdisplayrole, 4 AS seq, \n COUNT(pohead_id) AS count, COALESCE(sum(amount),0) AS amount, 'curr' AS amount_xtnumericrole\nFROM\n (SELECT pohead_id,\n SUM(round((noNeg(poitem_qty_ordered - poitem_qty_received + poitem_qty_returned)) * \n currToBase(pohead_curr_id, poitem_unitprice, pohead_orderdate), 2) ) AS amount\n FROM poitem\n JOIN pohead ON (poitem_pohead_id=pohead_id)\n WHERE (pohead_status = 'O')\n GROUP BY pohead_id) data\nHAVING (COUNT(pohead_id) > 0)\nUNION\nSELECT 'A' AS activity, AS activity_qtdisplayrole, 5 AS seq, \n COUNT(recv_id) AS count, COALESCE(sum(recv_value),0) AS amount, 'curr' AS amount_xtnumericrole\nFROM recv\nWHERE (NOT recv_posted)\nHAVING (COUNT(recv_id) > 0)\nUNION\nSELECT 'V' AS activity, AS activity_qtdisplayrole, 6 AS seq, \n COUNT(recv_id) AS count, COALESCE(sum(recv_value),0) AS amount, 'curr' AS amount_xtnumericrole\nFROM recv\nWHERE ((recv_posted)\n AND (NOT recv_invoiced)\n AND (recv_vohead_id IS NULL)\n AND (recv_order_type = 'PO'))\nHAVING (COUNT(recv_id) > 0)\nUNION\nSELECT 'I' AS activity, AS activity_qtdisplayrole, 7 AS seq, \n COUNT(vohead_id) AS count, COALESCE(sum(amount),0) AS amount, 'curr' AS amount_xtnumericrole\nFROM\n (SELECT vohead_id,\n SUM(round(currToBase(vohead_curr_id, vodist_amount, vohead_docdate), 2) ) AS amount\n FROM vohead\n JOIN vodist ON (vodist_vohead_id=vohead_id)\n WHERE ((vohead_pohead_id != -1)\n AND (NOT vohead_posted))\n GROUP BY vohead_id) data\nHAVING (COUNT(vohead_id) > 0)\nORDER BY seq;\n \N \N 0 219 desktop purchHist Summarized Purchase History for Desktop Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: purchHist\n-- Notes: Summarized Purchase History for Desktop\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n--------- VARIANCES -----------\n \nSELECT , , ,\n sum(qty) AS qty, sum(amount) AS amount,\n 'curr' AS amount_xtnumericrole,\n 'qty' AS qty_xtnumericrole,\n 0 AS amount_xttotalrole,\n 0 AS qty_xttotalrole\nFROM (\nSELECT vend_id, vend_number, vend_name,\n pohead_agent_username, usr_propername,\n COALESCE(item_id,-2) AS item_id,\n COALESCE(item_number,) AS item_number,\n item_descrip1,\n recv_qty AS qty, \n currToBase(vohead_curr_id, sum(vodist_amount) / sum(vodist_qty), vohead_distdate) * recv_qty - recv_value AS amount\nFROM recv\n JOIN vendinfo ON (recv_vend_id=vend_id)\n LEFT OUTER JOIN itemsite ON (recv_itemsite_id=itemsite_id)\n LEFT OUTER JOIN item ON (itemsite_item_id=item_id)\n JOIN vodist ON ((vodist_poitem_id=recv_orderitem_id) \n AND (vodist_vohead_id=recv_vohead_id))\n JOIN vohead ON ((vodist_vohead_id=vohead_id) \n AND (vohead_posted))\n JOIN poitem ON (recv_orderitem_id=poitem_id)\n JOIN pohead ON (poitem_pohead_id=pohead_id)\n LEFT OUTER JOIN usr ON (pohead_agent_username=usr_username)\nWHERE (vohead_distdate BETWEEN AND \n AND (recv_order_type='PO'))\nGROUP BY recv_qty, recv_value, vohead_curr_id, vohead_distdate,\n vend_id, vend_number, vend_name,\n pohead_agent_username, usr_propername,\n item_id, item_number, item_descrip1\n) data\nWHERE (amount > 0)\nGROUP BY , , \n\n--------- RECEIPTS -------\n \nSELECT , , ,\n sum(amount) as amount, sum(qty) AS qty,\n 'curr' AS amount_xtnumericrole,\n 'qty' AS qty_xtnumericrole,\n 0 AS amount_xttotalrole,\n 0 AS qty_xttotalrole\nFROM (\n SELECT vend_id, vend_number, vend_name,\n pohead_agent_username, usr_propername,\n COALESCE(item_id,-2) AS item_id, COALESCE(item_number,) AS item_number,\n item_descrip1,\n coalesce(recv_value,0) AS amount,\n recv_qty AS qty\n FROM recv\n JOIN vendinfo ON (vend_id=recv_vend_id)\n LEFT OUTER JOIN itemsite ON (recv_itemsite_id=itemsite_id)\n LEFT OUTER JOIN item ON (itemsite_item_id=item_id)\n JOIN poitem ON (recv_orderitem_id=poitem_id)\n JOIN pohead ON (poitem_pohead_id=pohead_id)\n LEFT OUTER JOIN usr ON (pohead_agent_username=usr_username)\n WHERE ((recv_date::date BETWEEN AND )\n AND (recv_posted)\n AND (recv_order_type = 'PO'))\n UNION ALL\n SELECT vend_id, vend_number, vend_name,\n pohead_agent_username, usr_propername,\n COALESCE(item_id,-1) AS item_id, COALESCE(item_number,) AS item_number,\n item_descrip1,\n coalesce(poreject_value,0) * -1 AS amount,\n poreject_qty * -1 AS qty\n FROM poreject\n JOIN vendinfo ON (vend_id=poreject_vend_id)\n JOIN itemsite ON (itemsite_id=poreject_itemsite_id)\n JOIN item ON (item_id=itemsite_item_id)\n JOIN poitem ON (poreject_poitem_id=poitem_id)\n JOIN pohead ON (poitem_pohead_id=pohead_id)\n LEFT OUTER JOIN usr ON (pohead_agent_username=usr_username)\n WHERE ((poreject_date::date BETWEEN AND )\n AND (poreject_posted))\n) data\nGROUP BY , , \nORDER BY \n;\n\n \N \N 0 220 desktop purchOpen Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: purchOpen\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT pohead_id, pohead_number, vend_number, vend_name, pohead_shipvia, \n formatCntctName(pohead_vend_cntct_honorific, \n pohead_vend_cntct_first_name, \n pohead_vend_cntct_middle, \n pohead_vend_cntct_last_name, \n pohead_vend_cntct_suffix) AS vend_cntct, \n pohead_vend_cntct_phone,\n formatCntctName(pohead_shipto_cntct_honorific, \n pohead_shipto_cntct_first_name, \n pohead_shipto_cntct_middle, \n pohead_shipto_cntct_last_name, \n pohead_shipto_cntct_suffix) AS shipto_cntct, \n pohead_shipto_cntct_phone,\n min(poitem_duedate) AS duedate, pohead_status AS status,\n CASE WHEN (pohead_status = 'O') THEN \n ELSE END AS status_qtdisplayrole,\n SUM(round(noNeg(poitem_qty_ordered - poitem_qty_received + poitem_qty_returned) * \n currToBase(pohead_curr_id, poitem_unitprice, pohead_orderdate), 2) ) AS amount,\n CASE WHEN (min(poitem_duedate) <= current_date) THEN 'error' \n ELSE 'emphasis' END AS duedate_qtforegroundrole,\n 'curr' AS amount_xtnumericrole\nFROM pohead \n JOIN vendinfo ON (pohead_vend_id=vend_id) \n JOIN poitem ON (poitem_pohead_id=pohead_id) \nWHERE (poitem_status IN ('U','O'))\nGROUP BY pohead_id, pohead_number, pohead_status, vend_number, vend_name, pohead_shipvia, pohead_vend_cntct_id, \n pohead_shipto_cntct_id, pohead_vend_cntct_phone, pohead_shipto_cntct_phone, pohead_vend_cntct_honorific, \n pohead_vend_cntct_first_name, pohead_vend_cntct_middle, pohead_vend_cntct_last_name, pohead_vend_cntct_suffix,\n pohead_shipto_cntct_honorific, pohead_shipto_cntct_first_name, pohead_shipto_cntct_middle, pohead_shipto_cntct_last_name, \n pohead_shipto_cntct_suffix\nORDER BY pohead_number;\t\n \N \N 0 221 desktop receivables Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: receivables\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT formatMoney(sum(araging_cur_val)) AS cur_val,\n formatMoney(sum(araging_thirty_val)) AS thirty_val,\n formatMoney(sum(araging_sixty_val)) AS sixty_val,\n formatMoney(sum(araging_ninety_val)) AS ninety_val,\n formatMoney(sum(araging_plus_val)) AS plus_val,\n formatMoney(sum(araging_total_val)) AS total_val \nFROM araging(current_date, false);\n \N \N 0 222 desktop salesAct Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: salesAct\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT 'Q' AS activity, AS activity_qtdisplayrole, 0 AS seq,\n COUNT(quhead_id) AS count, COALESCE(sum(amount),0) AS amount, 'curr' AS amount_xtnumericrole \nFROM \n (SELECT quhead_id,\n SUM(round((noNeg(quitem_qtyord) * quitem_qty_invuomratio) * \n (currToBase(quhead_curr_id, quitem_price, quhead_quotedate) / quitem_price_invuomratio), 2) ) AS amount\n FROM quitem\n JOIN quhead ON (quitem_quhead_id=quhead_id)\n WHERE ( COALESCE(quhead_expire,current_date + 1) > current_date )\n GROUP BY quhead_id) data\nHAVING (COUNT(quhead_id) > 0)\nUNION \nSELECT 'O' AS activity, AS activity_qtdisplayrole, 1 AS seq, \n COUNT(cohead_id) AS count, COALESCE(sum(amount),0) AS amount, 'curr' AS amount_xtnumericrole\nFROM\n (SELECT cohead_id,\n SUM(round((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) * \n (currToBase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio), 2) ) AS amount\n FROM coitem\n JOIN cohead ON (coitem_cohead_id=cohead_id)\n WHERE ( coitem_status = 'O' )\n GROUP BY cohead_id) data\nHAVING (COUNT(cohead_id) > 0)\nUNION\nSELECT 'P' AS activity, AS activity_qtdisplayrole, 2 AS seq, \n COUNT(cohead_id) AS count, COALESCE(sum(amount),0) AS amount, 'curr' AS amount_xtnumericrole\nFROM\n (SELECT cohead_id,\n SUM(round((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) * \n (currToBase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio), 2) ) AS amount\n FROM coitem\n JOIN cohead ON (coitem_cohead_id=cohead_id)\n JOIN pack ON ((pack_head_type='SO')\n AND (pack_head_id=cohead_id))\n WHERE ( (coitem_status = 'O')\n AND (NOT pack_printed) )\n GROUP BY cohead_id) data\nHAVING (COUNT(cohead_id) > 0)\nUNION\nSELECT 'S' AS activity, AS activity_qtdisplayrole, 3 AS seq, \n COUNT(cohead_id) AS count, COALESCE(sum(amount),0) AS amount, 'curr' AS amount_xtnumericrole\nFROM\n (SELECT cohead_id,\n SUM(round((shipitem_qty * coitem_qty_invuomratio) * \n (currToBase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio), 2) ) AS amount\n FROM coitem\n JOIN cohead ON (coitem_cohead_id=cohead_id)\n JOIN shipitem ON (shipitem_orderitem_id=coitem_id)\n JOIN shiphead ON ((shiphead_order_type='SO')\n AND (shipitem_shiphead_id=shiphead_id))\n WHERE ( (coitem_status = 'O')\n AND (NOT shiphead_shipped) )\n GROUP BY cohead_id) data\nHAVING (COUNT(cohead_id) > 0)\nUNION\nSELECT 'B' AS activity, AS activity_qtdisplayrole, 4 AS seq, \n COUNT(cohead_id) AS count, COALESCE(sum(amount),0) AS amount, 'curr' AS amount_xtnumericrole\nFROM\n (SELECT cohead_id,\n CASE WHEN ( \n -- For kits only when entire kit has shipped\n item_type != 'K' OR NOT coitem_id IN (\n SELECT sub.coitem_id\n FROM coitem sub\n WHERE((sub.coitem_cohead_id=coitem_cohead_id)\n AND (sub.coitem_linenumber=coitem_linenumber)\n AND (sub.coitem_subnumber > 0)\n AND ((sub.coitem_qtyord - sub.coitem_qtyshipped + sub.coitem_qtyreturned) > 0))\n )) THEN\n -- Total shipped not invoiced minus any already selected for billing not invoiced\n SUM(round(((shipitem_qty -\n COALESCE((SELECT sum(cobill_qty) \n FROM cobill \n WHERE ((cobill_coitem_id=coitem_id \n AND (cobill_invcitem_id IS NULL)\n ))),0) \n * coitem_qty_invuomratio) * \n (currToBase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio)),2))\n ELSE 0\n END AS amount\n FROM coitem\n JOIN itemsite ON (coitem_itemsite_id=itemsite_id)\n JOIN item ON (itemsite_item_id=item_id)\n JOIN cohead ON (coitem_cohead_id=cohead_id)\n JOIN custinfo ON (cust_id=cohead_cust_id)\n JOIN shipitem ON (shipitem_orderitem_id=coitem_id)\n JOIN shiphead ON ((shiphead_order_type='SO')\n AND (shiphead_id=shipitem_shiphead_id))\n WHERE ( (coitem_cohead_id=cohead_id)\n AND (coitem_status = 'O')\n AND (shiphead_shipped)\n AND (NOT shipitem_invoiced)\n AND (shipitem_qty > COALESCE((SELECT sum(cobill_qty)\n FROM cobill\n WHERE cobill_coitem_id=coitem_id AND cobill_invcitem_id IS NULL), 0)) )\n GROUP BY cohead_id, coitem_id, coitem_qtyord, coitem_qtyshipped, coitem_qtyreturned, \n cust_partialship, item_type) data\nHAVING (COUNT(cohead_id) > 0)\nUNION\nSELECT 'I' AS activity, AS activity_qtdisplayrole, 5 AS seq, \n COUNT(cohead_id) AS count, COALESCE(sum(amount),0) AS amount, 'curr' AS amount_xtnumericrole\nFROM\n (SELECT cohead_id,\n SUM(round((cobill_qty * coitem_qty_invuomratio) * \n (currToBase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio), 2) ) AS amount\n FROM coitem\n JOIN cohead ON (coitem_cohead_id=cohead_id)\n JOIN cobill ON (cobill_coitem_id=coitem_id)\n WHERE ( (coitem_status = 'O')\n AND (cobill_invcitem_id IS NULL) )\n GROUP BY cohead_id) data\nHAVING (COUNT(cohead_id) > 0)\nUNION\nSELECT 'T' AS activity, AS activity_qtdisplayrole, 5 AS seq, \n COUNT(invchead_id) AS count, COALESCE(sum(amount),0) AS amount, 'curr' AS amount_xtnumericrole\nFROM\n (SELECT invchead_id,\n SUM(round((invcitem_billed * invcitem_qty_invuomratio) * (invcitem_price / COALESCE(invcitem_price_invuomratio,1)),2)\n ) AS amount\n FROM invcitem\n JOIN invchead ON (invcitem_invchead_id=invchead_id)\n WHERE ( NOT invchead_posted )\n GROUP BY invchead_id) data\nHAVING (COUNT(invchead_id) > 0)\nORDER BY seq;\n \N \N 0 223 desktop salesHist Summarized Sales History for Desktop Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: salesHist\n-- Notes: Summarized Sales History for Desktop\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n--------- BOOKINGS -----------\n\nSELECT , , ,\n sum(round((coitem_qtyord * coitem_qty_invuomratio) *\n (currtobase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio), 2)) AS amount,\n sum(coitem_qtyord) AS qty,\n 'curr' AS amount_xtnumericrole,\n 'qty' AS qty_xtnumericrole,\n 0 AS amount_xttotalrole,\n 0 AS qty_xttotalrole\nFROM coitem\n JOIN cohead ON (coitem_cohead_id=cohead_id)\n JOIN custinfo ON (cust_id=cohead_cust_id)\n JOIN salesrep ON (salesrep_id=cohead_salesrep_id)\n JOIN itemsite ON (itemsite_id=coitem_itemsite_id)\n JOIN item ON (item_id=itemsite_item_id)\n JOIN prodcat ON (item_prodcat_id=prodcat_id)\nWHERE (cohead_orderdate BETWEEN AND )\nAND (coitem_status != 'X')\nGROUP BY , , \nORDER BY ;\n\n--------- SALES HISTORY -------\n \nSELECT , , ,\n sum(round((cohist_qtyshipped * currtobase(cohist_curr_id, cohist_unitprice, cohist_invcdate)), 2)) AS amount,\n sum(cohist_qtyshipped) AS qty,\n 'curr' AS amount_xtnumericrole,\n 'qty' AS qty_xtnumericrole,\n 0 AS amount_xttotalrole,\n 0 AS qty_xttotalrole\nFROM cohist \n JOIN custinfo ON (cust_id=cohist_cust_id)\n JOIN salesrep ON (salesrep_id=cohist_salesrep_id)\n JOIN itemsite ON (itemsite_id=cohist_itemsite_id)\n JOIN item ON (item_id=itemsite_item_id)\n JOIN prodcat ON (item_prodcat_id=prodcat_id)\nWHERE (cohist_invcdate BETWEEN AND )\nGROUP BY , , \nORDER BY ;\n\n \N \N 0 224 desktop salesOpen Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: salesOpen\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT cohead_id, cohead_number, cust_number, cohead_shipvia, \n cohead_billtoname, \n formatCntctName(cohead_billto_cntct_honorific, \n cohead_billto_cntct_first_name, \n cohead_billto_cntct_middle, \n cohead_billto_cntct_last_name, \n cohead_billto_cntct_suffix) AS billto_cntct, \n cohead_billto_cntct_phone,\n cohead_shiptoname, \n formatCntctName(cohead_shipto_cntct_honorific, \n cohead_shipto_cntct_first_name, \n cohead_shipto_cntct_middle, \n cohead_shipto_cntct_last_name, \n cohead_shipto_cntct_suffix) AS shipto_cntct, \n cohead_shipto_cntct_phone,\n min(coitem_scheddate) AS scheddate, \n sum(round((noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * coitem_qty_invuomratio) * \n (currToBase(cohead_curr_id, coitem_price, cohead_orderdate) / coitem_price_invuomratio), 2) ) AS amount,\n CASE WHEN (min(coitem_scheddate) <= current_date) THEN 'error' \n ELSE 'emphasis' END AS scheddate_qtforegroundrole,\n 'curr' AS amount_xtnumericrole\nFROM cohead \n JOIN custinfo ON (cohead_cust_id=cust_id) \n JOIN coitem ON (coitem_cohead_id=cohead_id) \n JOIN itemsite ON (coitem_itemsite_id=itemsite_id) \n JOIN whsinfo ON (itemsite_warehous_id=warehous_id) \nWHERE (coitem_status='O')\nGROUP BY cohead_shipvia, cohead_billtoname, cohead_billto_cntct_id, cohead_billto_cntct_phone, \n cohead_shiptoname, cohead_shipto_cntct_id, cohead_shipto_cntct_phone, cohead_id, cohead_number, \n cust_number, cohead_billtoname, cohead_shiptoname, \n cohead_billto_cntct_honorific, cohead_billto_cntct_first_name, \n cohead_billto_cntct_middle, cohead_billto_cntct_last_name, cohead_billto_cntct_suffix,\n cohead_shipto_cntct_honorific, cohead_shipto_cntct_first_name, cohead_shipto_cntct_middle, \n cohead_shipto_cntct_last_name, cohead_shipto_cntct_suffix\nORDER BY cohead_number;\n \N \N 0 473 desktop sendMessageToUser User Message query. Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\r\n-- Name: sendMessageToUser\r\n-- Notes: User Message query.\r\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\r\n-- See www.xtuple.com/CPAL for the full text of the software license.\r\n\r\nSELECT \r\npostmessage(\r\n( SELECT usr_username FROM usr WHERE usr_id = ),\r\n \r\n ); \N \N 0 225 desktop todoDelete Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: todoDelete\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nDELETE FROM todoitem WHERE (todoitem_id=);\n \N \N 0 226 desktop todoList Select the list of activities that need attention including to-do items, incidents, tasks, and projects. Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: todoList\n-- Notes: Select the list of activities that need attention\n-- including to-do items, incidents, tasks, and projects.\n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\n------ TO DO ITEMS-------\n SELECT todoitem_id AS id, 1 AS altId, todoitem_owner_username AS owner, \n AS type, incdtpriority_order AS seq,\n incdtpriority_name AS priority, \n todoitem_name AS name, \n firstLine(todoitem_description) AS descrip, \n todoitem_status AS status, todoitem_start_date as start, \n todoitem_due_date AS due, \n todoitem_username AS usr, CAST(incdt_number AS text) AS number,\n crmacct_number, crmacct_name, \n cust_number AS cust,\n CASE WHEN (todoitem_status != 'C'AND \n todoitem_due_date < CURRENT_DATE) THEN 'expired'\n WHEN (todoitem_status != 'C'AND \n todoitem_due_date > CURRENT_DATE) THEN 'future'\n END AS due_qtforegroundrole \n FROM todoitem LEFT OUTER JOIN incdt ON (incdt_id=todoitem_incdt_id) \n LEFT OUTER JOIN crmacct ON (crmacct_id=todoitem_crmacct_id) \n LEFT OUTER JOIN custinfo ON (cust_id=crmacct_cust_id) \n LEFT OUTER JOIN incdtpriority ON (incdtpriority_id=todoitem_priority_id) \n WHERE ((todoitem_active)\n AND (todoitem_status != 'C')\n AND ((todoitem_owner_username=) \n OR (todoitem_username=))) \n UNION \n------ INCIDENTS ------\n SELECT incdt_id AS id, 2 AS altId, incdt_owner_username AS owner, \n AS type, incdtpriority_order AS seq,\n incdtpriority_name AS priority, \n incdt_summary AS name, \n firstLine(incdt_descrip) AS descrip, \n incdt_status AS status, CAST(incdt_timestamp AS date) AS start, \n null AS due, \n incdt_assigned_username AS usr, CAST(incdt_number AS text) AS number,\n crmacct_number, crmacct_name,\n cust_number AS cust, \n NULL AS due_qtforegroundrole \n FROM incdt LEFT OUTER JOIN crmacct ON (crmacct_id=incdt_crmacct_id) \n LEFT OUTER JOIN custinfo ON (cust_id=crmacct_cust_id) \n LEFT OUTER JOIN incdtpriority ON (incdtpriority_id=incdt_incdtpriority_id) \n WHERE ((incdt_status != 'L')\n AND ((incdt_owner_username=) \t \n OR (incdt_assigned_username=)))\n------ TASKS ------\n UNION \n SELECT prjtask_id AS id, 3 AS altId, prjtask_owner_username AS owner, \n AS type, NULL AS seq, NULL AS priority, \n prjtask_number || '-' || prjtask_name AS name, \n firstLine(prjtask_descrip) AS descrip, \n prjtask_status AS status, prjtask_start_date AS start, \n prjtask_due_date AS due, \n prjtask_username AS usr, prj_number,\n '' AS crmacct_number, '' AS crmacct_name, '' AS cust, \n CASE WHEN (prjtask_status != 'C'AND \n prjtask_due_date < CURRENT_DATE) THEN 'expired'\n WHEN (prjtask_status != 'C'AND \n prjtask_due_date > CURRENT_DATE) THEN 'future'\n END AS due_qtforegroundrole \n FROM prj, prjtask \n WHERE((prj_id=prjtask_prj_id) \n AND (prjtask_status != 'C')\n AND ((prjtask_owner_username=) \n OR (prjtask_username=))) \n------ PROJECTS ------\n UNION \n SELECT prj_id AS id, 4 AS altId, prj_owner_username AS owner, \n AS type, NULL AS seq, NULL AS priority, \n prj_number || '-' || prj_name AS name, \n firstLine(prj_descrip) AS descrip, \n prj_status AS status, prj_start_date AS start, \n prj_due_date AS due, \n prj_username AS usr, NULL AS number,\n '' AS crmacct_number, '' AS crmacct_name,'' AS cust, \n CASE WHEN (prj_status != 'C'AND \n prj_due_date < CURRENT_DATE) THEN 'expired'\n WHEN (prj_status != 'C'AND \n prj_due_date > CURRENT_DATE) THEN 'future'\n END AS due_qtforegroundrole \n FROM prj \n WHERE ((prj_status != 'C')\n AND ((prj_owner_username=) \n OR (prj_username=)))\nORDER BY due, seq, usr; \n \N \N 0 227 desktop userOnline Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. See www.xtuple.com/CPAL for the full text of the software license. -- Group: desktop\n-- Name: userOnline\n-- Notes: \n-- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n-- See www.xtuple.com/CPAL for the full text of the software license.\n\nSELECT usr_id, usr_username, usr_propername, usr_email,\n min(backend_start) AS client_start, max(query_start) AS query_start,\n sum(CASE WHEN(database IS NULL) THEN 0 ELSE 1 END) AS cnt_internal,\n sum(CASE WHEN(database IS NULL) THEN 1 ELSE 0 END) AS cnt_external,\n client_addr, '0' AS cnt_internal_xttotalrole, '0' AS cnt_external_xttotalrole\n FROM pg_stat_activity\n JOIN usr ON (usr_id=usesysid)\n LEFT OUTER JOIN pg_locks ON (database=datid AND classid=datid AND objid=procpid AND objsubid=2)\n WHERE(datname=current_database())\n GROUP BY usr_id, usr_username, usr_propername, usr_email,\n client_addr, cnt_internal_xttotalrole, cnt_external_xttotalrole;\n \N \N 0 \. -- -- Data for Name: pkgpriv; Type: TABLE DATA; Schema: xtdesktop; Owner: admin -- COPY pkgpriv (priv_id, priv_module, priv_name, priv_descrip, priv_seq) FROM stdin; 635 Desktop AccessAdditionalUser Controls access to additional Users \N 575 Desktop ViewBankAccountsDock Allows the user to view the Bank Accounts dock widget on the Desktop \N 576 Desktop ViewExtensionsDock Allows the user to view the Extensions dock widget on the Desktop \N 577 Desktop ViewGLAccountsDock Allows the user to view Monitored General Ledger Accounts dock widget on the Desktop \N 578 Desktop ViewManufactureActivitiesDock Allows the user to view the Manufacture Activities dock widget on the Desktop \N 579 Desktop ViewManufactureHistoryDock Allows the user to view the Manufacture History dock widget on the Desktop \N 580 Desktop ViewMyAccountsDock Allows the user to view the My (CRM) Accounts dock widget on the Desktop \N 581 Desktop ViewMyContactsDock Allows the user to view the My Contact dock widget on the Desktop \N 582 Desktop ViewTodoDock Allows the user to view the To Do dock widget on the Desktop \N 583 Desktop ViewPayablesDock Allows the user to view the Payables dock widget on the Desktop \N 584 Desktop ViewPurchaseActivitiesDock Allows the user to view the Purchase Activities dock widget on the Desktop \N 585 Desktop ViewPurchaseHistoryDock Allows the user to view the Purchase History dock widget on the Desktop \N 586 Desktop ViewPurchaseOrdersDock Allows the user to view the open purchase orders dock widget on the Desktop \N 587 Desktop ViewReceivablesDock Allows the user to view the Purchase History dock widget on the Desktop \N 588 Desktop ViewSalesActivitiesDock Allows the user to view the Sales Activities dock widget on the Desktop \N 589 Desktop ViewSalesHistoryDock Allows the user to view the Sales History dock widget on the Desktop \N 590 Desktop ViewSalesOrdersDock Allows the user to view the Sales Orders dock widget on the Desktop \N 591 Desktop ViewWorkOrdersDock Allows the user to view the Work Orders dock widget on the Desktop \N 592 Desktop ViewUsersOnlineDock Allows the user to view the Users Online doc \N 593 Desktop ViewCRMDesktop Allows the user to view the CRM Desktop page \N 594 Desktop ViewSalesDesktop Allows the user to view the Sales Desktop page \N 595 Desktop ViewPurchaseDesktop Allows the user to view the Purchase Desktop page \N 596 Desktop ViewManufactureDesktop Allows the user to view the Manufacture Desktop page \N 597 Desktop ViewAccountingDesktop Allows the user to view the Accounting Desktop page \N 598 Desktop ViewMaintenanceDesktop Allows the user to view the Maintenance Desktop page \N 636 Desktop viewSocialDesktop Allows the user to view the Social Desktop page \N 637 Desktop viewMsgHistoryDock Allows the user to view the Message History dock widget on the Desktop \N 638 Desktop viewSendMsgDock Allows the user to view the Sed Message dock widget on the Desktop \N \. -- -- Data for Name: pkgreport; Type: TABLE DATA; Schema: xtdesktop; Owner: admin -- COPY pkgreport (report_id, report_name, report_sys, report_source, report_descrip, report_grade, report_loaddate) FROM stdin; \. -- -- Data for Name: pkgscript; Type: TABLE DATA; Schema: xtdesktop; Owner: admin -- COPY pkgscript (script_id, script_name, script_order, script_enabled, script_source, script_notes) FROM stdin; 81 dockPurchOpen 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _dockPurchOpen;\nvar _purchOpen;\nvar _purchOpenIsDirty = true;\n\n/*!\n Initializes Open Purchase Order dock widget and places it in the main window.\n*/\nfunction initDockPurchOpen()\n{\n _dockPurchOpen = mainwindow.findChild("_dockPurchOpen");\n _purchOpen = mainwindow.findChild("_purchOpen");\n\n // Set columns on list\n _purchOpen.addColumn(qsTr("Order#"), XTreeWidget.orderColumn, Qt.AlignLeft, true, "pohead_number");\n _purchOpen.addColumn(qsTr("Vendor#"), XTreeWidget.orderColumn, Qt.AlignLeft, true, "vend_number");\n _purchOpen.addColumn(qsTr("Name"), -1, Qt.AlignLeft, true, "vend_name");\n _purchOpen.addColumn(qsTr("Contact"), -1, Qt.AlignLeft, true, "vend_cntct");\n _purchOpen.addColumn(qsTr("Phone"), -1, Qt.AlignLeft, true, "pohead_vend_cntct_phone"); \n _purchOpen.addColumn(qsTr("Status"), -1, Qt.AlignLeft, true, "status");\n _purchOpen.addColumn(qsTr("Ship Contact"), -1, Qt.AlignLeft, false, "shipto_cntct");\n _purchOpen.addColumn(qsTr("Ship Phone"), -1, Qt.AlignLeft, false, "pohead_shipto_cntct_phone"); \n _purchOpen.addColumn(qsTr("Ship Via"), -1, Qt.AlignLeft, true, "pohead_shipvia"); \n _purchOpen.addColumn(qsTr("Due Date"), XTreeWidget.dateColumn, Qt.AlignLeft, true, "duedate");\n _purchOpen.addColumn(qsTr("Amount"), XTreeWidget.moneyColumn, Qt.AlignRight, true, "amount");\n\n // Connect Signals and Slots\n _dtTimer.timeout.connect(refreshPurchOpen);\n mainwindow.purchaseOrderReceiptsUpdated.connect(refreshPurchOpen);\n mainwindow.purchaseOrdersUpdated.connect(refreshPurchOpen);\n\n _purchOpen.itemSelected.connect(openWindowPurchOpen);\n _purchOpen["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuPurchOpen);\n\n _dockPurchOpen.visibilityChanged.connect(fillListPurchOpen);\n\n // Handle privilge control\n var act = _dockPurchOpen.toggleViewAction();\n\n // Don't show if no privs\n if (!privileges.check("ViewPurchaseOrdersDock"))\n {\n _dockPurchOpen.hide();\n act.enabled = false;\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("ViewPurchaseOrdersDock");\n _menuDesktop.appendAction(act);\n\n fillListPurchOpen();\n}\n\n/*!\n Fills the list with open purchase data.\n*/\nfunction fillListPurchOpen()\n{\n _dockPurchOpen = mainwindow.findChild("_dockPurchOpen");\n _purchOpen = mainwindow.findChild("_purchOpen");\n\n if (!_dockPurchOpen.visible || !_purchOpenIsDirty)\n return;\n\n var params = new Object;\n params.open = qsTr("Open");\n params.unreleased = qsTr("Unreleased");\n\n _purchOpen.populate(toolbox.executeDbQuery("desktop","purchOpen",params));\n _purchOpenIsDirty = false;\n}\n\n/*! \n Opens the window associated with the selected item.\n*/\nfunction openWindowPurchOpen()\n{ \n // Make sure we can open the window for this activity\n if (!privilegeCheckPurchOpen)\n return;\n\n params = new Object;\n params.pohead_id = _purchOpen.id();\n if (privileges.check("MaintainPurchaseOrders"))\n params.mode = "edit";\n else\n params.mode = "view";\n\n // Open the window and perform any handling required\n var po = toolbox.openWindow("purchaseOrder");\n po.set(params);\n}\n\n/*!\n Adds actions to @a pMenu, typically from a right click on a Purchase Order item.\n*/\nfunction populateMenuPurchOpen(pMenu, pItem)\n{\n var menuItem;\n var enable = privilegeCheckPurchOpen();\n\n menuItem = pMenu.addAction(_open);\n menuItem.enabled = enable;\n menuItem.triggered.connect(openWindowPurchOpen);\n}\n\n/*!\n Returns whether user has privileges to view detail on the selected Purchase Order.\n*/\nfunction privilegeCheckPurchOpen()\n{\n return privileges.check("ViewPurchaseOrders") || \n privileges.check("MaintainPurchaseOrders");\n\n return false;\n}\n\n/*!\n Refreshes data if the window is visible, or the next time it becomes visible\n*/\nfunction refreshPurchOpen()\n{\n _purchOpenIsDirty = true;\n fillListPurchOpen();\n}\n 82 dockReceivables 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _dockReceivables;\nvar _receivables;\nvar _receivablesIsDirty = true;\n\n/*!\n Initializes Bank Balance dock widget and places it in the main window.\n*/\nfunction initDockReceivables()\n{\n _dockReceivables = mainwindow.findChild("_dockReceivables");\n _ar = mainwindow.findChild("_ar");\n _ar.rootIsDecorated = false;\n\n // Set columns on list\n _ar.addColumn(qsTr("Status"), -1, Qt.AlignLeft, true);\n _ar.addColumn(qsTr("Balance"), -1, Qt.AlignRight, true);\n\n // Connect Signals and Slots\n _dtTimer.timeout.connect(refreshReceivables);\n mainwindow.checksUpdated.connect(refreshReceivables);\n mainwindow.paymentsUpdated.connect(refreshReceivables);\n mainwindow.vouchersUpdated.connect(refreshReceivables);\n\n _ar.itemSelected.connect(openWindowReceivables);\n _ar["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuReceivables);\n\n _dockReceivables.visibilityChanged.connect(fillListReceivables);\n\n // Handle privilge control\n var act = _dockReceivables.toggleViewAction();\n\n // Don't show if no privs\n if (!privileges.check("ViewReceivablesDock"))\n {\n _dockReceivables.hide();\n act.enabled = false;\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("ViewReceivablesDock");\n _menuDesktop.appendAction(act);\n\n fillListReceivables();\n}\n\n/*!\n Fills the list with bank account data.\n*/\nfunction fillListReceivables()\n{\n _dockReceivables = mainwindow.findChild("_dockReceivables");\n _ar = mainwindow.findChild("_ar");\n\n if (!_dockReceivables.visible || !_receivablesIsDirty)\n return;\n\n var q = toolbox.executeDbQuery("desktop","receivables");\n q.first();\n \n _ar.clear();\n var item1 = new XTreeWidgetItem(_ar, 0, qsTr("0+ Days"), q.value("cur_val"));\n var item2 = new XTreeWidgetItem(_ar, 1, qsTr("0-30 Days"), q.value("thirty_val"));\n var item3 = new XTreeWidgetItem(_ar, 2, qsTr("31-60 Days"), q.value("sixty_val"));\n var item4 = new XTreeWidgetItem(_ar, 3, qsTr("61-90 Days"), q.value("ninety_val"));\n var item5 = new XTreeWidgetItem(_ar, 4, qsTr("90+ days"), q.value("plus_val"));\n var item6 = new XTreeWidgetItem(_ar, 5, qsTr("Total Open"), q.value("total_val"));\n\n _receivablesIsDirty = false;\n}\n\n/*! \n Opens the window associated with the selected item.\n*/\nfunction openWindowReceivables()\n{\n // Make sure we can open the window\n if (!privilegeCheckReceivables())\n return;\n\n var params = new Object;\n params.run = true;\n params.byDueDate = true;\n\n var asOfDate = mainwindow.dbDate();\n var startDate = new Date();\n var endDate = new Date();\n\n // Open the window and perform any handling required\n toolbox.openWindow("dspAROpenItems");\n\n if (_ar.id() == 0)\n {\n startDate.setDate(asOfDate.getDate());\n toolbox.lastWindow().findChild("_dates").setStartDate(startDate);\n }\n else if (_ar.id() == 1)\n {\n startDate.setDate(asOfDate.getDate() -30);\n endDate.setDate(asOfDate.getDate() -1);\n toolbox.lastWindow().findChild("_dates").setStartDate(startDate);\n toolbox.lastWindow().findChild("_dates").setEndDate(endDate);\n }\n else if (_ar.id() == 2)\n {\n startDate.setDate(asOfDate.getDate() -60);\n endDate.setDate(asOfDate.getDate() -31);\n toolbox.lastWindow().findChild("_dates").setStartDate(startDate);\n toolbox.lastWindow().findChild("_dates").setEndDate(endDate);\n }\n else if (_ar.id() == 3)\n {\n startDate.setDate(asOfDate.getDate() -90);\n endDate.setDate(asOfDate.getDate() -61);\n toolbox.lastWindow().findChild("_dates").setStartDate(startDate);\n toolbox.lastWindow().findChild("_dates").setEndDate(endDate);\n }\n else if (_ar.id() == 4)\n {\n endDate.setDate(asOfDate.getDate() -91);\n toolbox.lastWindow().findChild("_dates").setEndDate(endDate);\n }\n\n toolbox.lastWindow().set(params);\n}\n\n/*!\n Adds actions to @a pMenu, typically from a right click on a bank account item.\n*/\nfunction populateMenuReceivables(pMenu, pItem)\n{\n var menuItem;\n var enable = privilegeCheckReceivables();\n\n menuItem = pMenu.addAction(_open);\n menuItem.enabled = enable;\n menuItem.triggered.connect(openWindowReceivables);\n}\n\n/*!\n Returns whether user has privileges to view detail.\n*/\nfunction privilegeCheckReceivables(act)\n{\n return privileges.check("ViewAROpenItems");\n}\n\n/*!\n Refreshes data if the window is visible, or the next time it becomes visible\n*/\nfunction refreshReceivables()\n{\n _receivablesIsDirty = true;\n fillListReceivables();\n}\n 83 dockSalesActive 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _dockSalesAct;\nvar _salesAct;\nvar _salesActIsDirty = true;\n\n/*!\n Initializes Sales Activity dock widget and places it in the main window.\n*/\nfunction initDockSalesAct()\n{\n _dockSalesAct = mainwindow.findChild("_dockSalesAct");\n _salesAct = mainwindow.findChild("_salesAct");\n\n // Set columns on list\n _salesAct.addColumn(qsTr("Type"), -1, Qt.AlignLeft, true, "activity");\n _salesAct.addColumn(qsTr("#"), 40, Qt.AlignRight, true, "count");\n _salesAct.addColumn(qsTr("Amount"), -1, Qt.AlignRight, true, "amount");\n\n // Connect Signals and Slots\n _dtTimer.timeout.connect(refreshSalesAct);\n mainwindow.billingSelectionUpdated.connect(refreshSalesAct);\n mainwindow.invoicesUpdated.connect(refreshSalesAct);\n mainwindow.quotesUpdated.connect(refreshSalesAct)\n mainwindow.salesOrdersUpdated.connect(refreshSalesAct);\n\n _salesAct.itemSelected.connect(openWindowSalesAct);\n _salesAct["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuSalesAct);\n\n _dockSalesAct.visibilityChanged.connect(fillListSalesAct);\n\n // Handle privilge control\n var act = _dockSalesAct.toggleViewAction();\n\n // Don't show if no privs\n if (!privileges.check("ViewSalesActivitiesDock"))\n {\n _dockSalesAct.hide();\n act.enabled = false;\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("ViewSalesActivitiesDock");\n _menuDesktop.appendAction(act);\n fillListSalesAct();\n}\n\n/*!\n Fills the list with active sales data.\n*/\nfunction fillListSalesAct()\n{\n _dockSalesAct = mainwindow.findChild("_dockSalesAct");\n _salesAct = mainwindow.findChild("_salesAct");\n\n if (!_dockSalesAct.visible || !_salesActIsDirty)\n return;\n\n var params = new Object;\n params.quotes = qsTr("Quotes");\n params.open = qsTr("Orders");\n params.print = qsTr("To Print");\n params.pick = qsTr("Pick");\n params.ship = qsTr("At Shipping");\n params.bill = qsTr("Shipped");\n params.invoice = qsTr("To Bill");\n params.post = qsTr("Invoiced");\n\n _salesAct.populate(toolbox.executeDbQuery("desktop","salesAct", params));\n _salesActIsDirty = false;\n}\n\n/*! \n Opens the window associated with the selected item.\n*/\nfunction openWindowSalesAct()\n{\n var ui;\n var run = false;\n var act = _salesAct.currentItem().rawValue("activity");\n \n // Make sure we can open the window for this activity\n if (!privilegeCheckSalesAct(act))\n return;\n\n // Determine which window to open\n if (act == "Q")\n {\n ui = "quotes";\n run = true;\n }\n else if (act == "O")\n {\n ui = "openSalesOrders";\n run = true;\n }\n else if (act == "P")\n ui = "packingListBatch";\n else if (act == "S")\n {\n ui = "maintainShipping";\n run = true;\n }\n else if (act == "B")\n ui = "uninvoicedShipments";\n else if (act == "I")\n ui = "dspBillingSelections";\n else if (act == "T")\n ui = "unpostedInvoices";\n\n // Open the window and perform any handling required\n toolbox.openWindow(ui);\n if (run)\n toolbox.lastWindow().sFillList();\n}\n\n/*!\n Adds actions to @a pMenu, typically from a right click on a Sales Activity item.\n*/\nfunction populateMenuSalesAct(pMenu, pItem)\n{\n var menuItem;\n var act = pItem.rawValue("activity");\n var enable = privilegeCheckSalesAct(act);\n\n menuItem = pMenu.addAction(_open);\n menuItem.enabled = enable;\n menuItem.triggered.connect(openWindowSalesAct);\n}\n\n/*!\n Returns whether user has privileges to view detail on the selected Sales Activity.\n*/\nfunction privilegeCheckSalesAct(act)\n{\n if (act == "Q") // Quote\n return privileges.check("ViewQuotes") || \n privileges.check("MaintainQuotes")\n else if (act == "O") // Open Sales Orders\n return privileges.check("ViewSalesOrders") || \n privileges.check("MaintainSalesOrders");\n else if (act == "P") // Packlist Batch\n return privileges.check("ViewPackingListBatch") || \n privileges.check("MaintainPackingListBatch");\n else if (act == "S") // Shipping\n return privileges.check("ViewShipping");\n else if (act == "B" || \n act == "I" || \n act == "T") // Billing, Invoicing\n return privileges.check("SelectBilling");\n\n return false;\n}\n\n/*!\n Refreshes data if the window is visible, or the next time it becomes visible\n*/\nfunction refreshSalesAct()\n{\n _salesActIsDirty = true;\n fillListSalesAct();\n}\n 84 dockSalesHistory 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _b1SalesHist;\nvar _b2SalesHist;\nvar _dockSalesHist;\nvar _groupBySalesHist;\nvar _timeFrameSalesHist;\nvar _typeSalesHist;\nvar _labelSalesHist;\nvar _salesHist;\nvar _salesHistIsDirty = true;\n\n/*!\n Initializes Sales History dock widget and places it in the main window.\n*/\nfunction initDockSalesHist()\n{\n // Set up objects\n _dockSalesHist = mainwindow.findChild("_dockSalesHist");\n _salesHist = mainwindow.findChild("_salesHist");\n\n _b1SalesHist = _dockSalesHist.findChild("_button1");\n _b2SalesHist = _dockSalesHist.findChild("_button2");\n _labelSalesHist = _dockSalesHist.findChild("_label");\n\n // Set icons\n var iReload = new QIcon;\n iReload.addDbImage("reload_16");\n _b1SalesHist.icon = iReload;\n _b1SalesHist.text = "";\n _b1SalesHist.toolTip = qsTr("Reload");\n\n var iGear = new QIcon();\n iGear.addDbImage("gear_16");\n _b2SalesHist.icon = iGear;\n _b2SalesHist.text = "";\n _b2SalesHist.toolTip = qsTr("Preferences...");\n\n // Load local preferences\n loadPreferencesSalesHist();\n\n // Set columns on list\n setColumnsSalesHist();\n\n // Populate the data\n fillListSalesHist();\n\n // Connect Signals and Slots\n _b1SalesHist.clicked.connect(refreshSalesHist);\n _b2SalesHist.clicked.connect(preferencesSalesHist);\n\n _dtTimer.timeout.connect(refreshSalesHist);\n mainwindow.salesOrdersUpdated.connect(refreshSalesHist);\n\n _salesHist.itemSelected.connect(openWindowSalesHist);\n _salesHist["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuSalesHist);\n\n _dockSalesHist.visibilityChanged.connect(fillListSalesHist);\n\n // Handle privilge control\n var act = _dockSalesHist.toggleViewAction();\n\n // Don't show if no privs\n if (!privileges.check("ViewSalesHistoryDock"))\n {\n _dockSalesHist.hide();\n act.enabled = false;\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("ViewSalesHistoryDock");\n _menuDesktop.appendAction(act);\n\n fillListSalesHist();\n}\n\n/*!\n Fills the list with sales history data based on parameters determined by\n sales history preferences.\n\n @sa preferencesSalesHist()\n*/\nfunction fillListSalesHist()\n{\n _dockSalesHist = mainwindow.findChild("_dockSalesHist");\n _salesHist = mainwindow.findChild("_salesHist");\n\n if (!_dockSalesHist.visible || !_salesHistIsDirty)\n return;\n\n var timeFrame;\n var type;\n var params = getDatesSalesHist();\n\n if (_typeSalesHist == "bookings")\n params.bookings = true;\n else\n params.sales = true;\n \n if (_groupBySalesHist == "cust")\n {\n params.group_id = "cust_id";\n params.group_number = "cust_number";\n params.group_name = "cust_name";\n }\n else if (_groupBySalesHist == "prodcat")\n {\n params.group_id = "prodcat_id";\n params.group_number = "prodcat_code";\n params.group_name = "prodcat_descrip";\n }\n else if (_groupBySalesHist == "salesrep")\n {\n params.group_id = "salesrep_id";\n params.group_number = "salesrep_number";\n params.group_name = "salesrep_name";\n }\n\n _salesHist.populate(toolbox.executeDbQuery("desktop","salesHist", params));\n\n if ("bookings" in params)\n type = qsTr("Bookings");\n else\n type = qsTr("Sales");\n\n if (_timeFrameSalesHist == "day")\n timeFrame = qsTr("Today");\n else if (_timeFrameSalesHist == "week")\n timeFrame = qsTr("this Week");\n else if (_timeFrameSalesHist == "month")\n timeFrame = qsTr("this Month");\n else if (_timeFrameSalesHist == "year")\n timeFrame = qsTr("this Year");\n\n _labelSalesHist.text = type + " " + timeFrame;\n\n _salesHistIsDirty = false;\n}\n\n/*!\n Returns an object with a list containing @a startDate and @a endDate\n that is used for fetching data and opening windows using the date range\n stored in local preferences.\n \n @sa preferencesSalesHist()\n @sa openWindowSalesHist()\n @sa fillListSalesHist()\n*/\nfunction getDatesSalesHist()\n{\n var params = new Object;\n\n params.timeFrame = _timeFrameSalesHist;\n params.interval = "1 " + _timeFrameSalesHist;\n\n var q = toolbox.executeDbQuery("desktop", "getDates", params);\n\n if (q.first())\n {\n params.startDate = q.value("startDate");\n params.endDate = q.value("endDate");\n }\n\n return params;\n}\n\n/*! \n Loads local Sales History preferences into memory.\n\n @sa preferencesSalesHist()\n*/\nfunction loadPreferencesSalesHist()\n{\n // Load preferences\n _groupBySalesHist = preferences.value("desktop/salesHist/groupBy");\n _timeFrameSalesHist = preferences.value("desktop/salesHist/timeFrame");\n _typeSalesHist = preferences.value("desktop/salesHist/type")\n \n // Set to defaults if no values\n _groupBySalesHist = (_groupBySalesHist.length ? _groupBySalesHist : "cust");\n _timeFrameSalesHist = (_timeFrameSalesHist.length ? _timeFrameSalesHist : "year");\n _typeSalesHist = (_typeSalesHist.length ? _typeSalesHist : "bookings");\n}\n\n/*! \n Opens the window associated with the selected item.\n*/\nfunction openWindowSalesHist()\n{\n var ui;\n var params = getDatesSalesHist();\n params.run = true;\n\n // TO DO: Work it out so totals launch a window too\n if (_salesHist.id() == -1)\n return;\n \n // Make sure we can open the window\n if (!privilegeCheckSalesHist())\n return;\n\n // Determine which window to open\n if (_typeSalesHist == "bookings")\n ui = "dspBookings";\n else\n ui = "dspSalesHistory";\n if (_groupBySalesHist == "cust")\n params.cust_id = _salesHist.id();\n else if (_groupBySalesHist == "prodcat")\n params.prodcat_id = _salesHist.id();\n else if (_groupBySalesHist == "salesrep")\n params.salesrep_id = _salesHist.id();\n\n // Open the window and perform any special handling required\n toolbox.openWindow(ui);\n toolbox.lastWindow().set(params);\n}\n\n/*!\n Adds actions to @a pMenu, typically from a right click on sales history.\n*/\nfunction populateMenuSalesHist(pMenu)\n{\n var menuItem;\n var enable = privilegeCheckSalesHist();\n\n menuItem = pMenu.addAction(_open);\n menuItem.enabled = enable;\n menuItem.triggered.connect(openWindowSalesHist);\n}\n\n/*!\n Returns whether user has privileges to view Sales History detail.\n*/\nfunction privilegeCheckSalesHist()\n{\n return privileges.check("ViewSalesHistory");\n}\n\n/*! \n Set up columns depending on local preferences.\n\n @sa preferencesSalesHist()\n*/\nfunction setColumnsSalesHist()\n{\n _salesHist.columnCount = 0;\n\n if (_groupBySalesHist == "cust")\n {\n _salesHist.addColumn(qsTr("Customer"), -1, Qt.AlignLeft, true, "cust_number");\n _salesHist.addColumn(qsTr("Name"), -1, Qt.AlignLeft, false, "cust_name");\n }\n else if (_groupBySalesHist == "prodcat")\n {\n _salesHist.addColumn(qsTr("Product Category"), -1, Qt.AlignLeft, true, "prodcat_code");\n _salesHist.addColumn(qsTr("Description"), -1, Qt.AlignLeft, false, "prodcat_descrip");\n }\n else if (_groupBySalesHist == "salesrep")\n {\n _salesHist.addColumn(qsTr("Sales Rep."), -1, Qt.AlignLeft, true, "salesrep_number");\n _salesHist.addColumn(qsTr("Name"), -1, Qt.AlignLeft, false, "salesrep_name");\n }\n\n _salesHist.addColumn(qsTr("Amount"), -1, Qt.AlignRight, true, "amount");\n _salesHist.addColumn(qsTr("Qty."), -1, Qt.AlignRight, false, "qty");\n}\n\n/*! \n Launches the preferences window where the user can set sales data output preferences.\n*/\nfunction preferencesSalesHist()\n{\n params = new Object;\n params.path = "desktop/salesHist";\n params.groupBy = _groupBySalesHist;\n params.timeFrame = _timeFrameSalesHist;\n params.type = _typeSalesHist;\n\n var newdlg = toolbox.openWindow("preferencesHistory", mainwindow,\n Qt.ApplicationModal, Qt.Dialog);\n toolbox.lastWindow().set(params);\n if (newdlg.exec())\n {\n loadPreferencesSalesHist();\n setColumnsSalesHist();\n refreshSalesHist();\n }\n}\n\n/*!\n Refreshes data if the window is visible, or the next time it becomes visible\n*/\nfunction refreshSalesHist()\n{\n _salesHistIsDirty = true;\n fillListSalesHist();\n}\n 128 dockSendMessage 0 t var _dockSendMessage;\nvar _usr;\nvar _message;\nvar _send;\nvar _sendMessageIsDirty = true;\nvar _periodId = -1;\nvar _b1CommentConsole;\nvar _b2CommentConsole;\nvar _commentConsole;\nvar _commentConsoleIsDirty = true;\nvar _periodId = -1;\n\nfunction initDockSendMessage()\n{\n // Set up objects\n _dockSendMessage = mainwindow.findChild("_dockSendMessage");\n _usr = mainwindow.findChild("_usr");\n _message = mainwindow.findChild("_message");\n _send = mainwindow.findChild("_send");\n\n _commentConsole = mainwindow.findChild("_commentConsole");\n\n _b1CommentConsole = mainwindow.findChild("_button1");\n _b2CommentConsole = mainwindow.findChild("_button2");\n\n // Set icons\n var iReload = new QIcon;\n iReload.addDbImage("reload_16");\n _b1CommentConsole.icon = iReload;\n _b1CommentConsole.text = "";\n _b1CommentConsole.toolTip = qsTr("Reload");\n\n var iGear = new QIcon();\n iGear.addDbImage("gear_16");\n _b2CommentConsole.icon = iGear;\n _b2CommentConsole.text = "";\n _b2CommentConsole.toolTip = qsTr("Preferences...");\n\n // Set columns on list\n _commentConsole.addColumn("Date", 75, 1, true, "comment_date");\n _commentConsole.addColumn("Comment Type", 115, 1, true, "cmnttype_name");\n _commentConsole.addColumn("Text", 90, 1, true, "comment_text");\n _commentConsole.addColumn("Source", 115, 1, true, "comment_source")\n _commentConsole.addColumn("User", 65, 1, true, "comment_user")\n _commentConsole.addColumn("Detail", -1, 1, true, "info");\n _commentConsole.addColumn("Points", 40, 3, true, "points");\n\n mainwindow.itemsitesUpdated.connect(refreshCommentConsole);\n mainwindow.warehousesUpdated.connect(refreshCommentConsole);\n mainwindow.customersUpdated.connect(refreshCommentConsole)\n mainwindow.employeeUpdated.connect(refreshCommentConsole);\n mainwindow.vendorsUpdated.connect(refreshCommentConsole);\n mainwindow.returnAuthorizationsUpdated.connect(refreshCommentConsole);\n mainwindow.salesOrdersUpdated.connect(refreshCommentConsole)\n mainwindow.quotesUpdated.connect(refreshCommentConsole);\n mainwindow.workOrdersUpdated.connect(refreshCommentConsole);\n mainwindow.purchaseOrdersUpdated.connect(refreshCommentConsole);\n mainwindow.bomsUpdated.connect(refreshCommentConsole)\n mainwindow.bbomsUpdated.connect(refreshCommentConsole);\n mainwindow.boosUpdated.connect(refreshCommentConsole);\n mainwindow.projectsUpdated.connect(refreshCommentConsole);\n mainwindow.crmAccountsUpdated.connect(refreshCommentConsole)\n mainwindow.transferOrdersUpdated.connect(refreshCommentConsole);\n\n // Connect Signals and Slots\n _b1CommentConsole.clicked.connect(refreshCommentConsole);\n _b2CommentConsole.clicked.connect(preferencesCommentConsole);\n\n _commentConsole["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuCommentConsole);\n\n mainwindow["tick()"].connect(refreshCommentConsole);\n\n // Don't show if no privs\n var act = _dockSendMessage.toggleViewAction();\n if (!privileges.check("viewSendMsgDock"))\n { \n _dockSendMessage.hide();\n act.enabled = false;\n }\n else\n {\n _dockSendMessage.show();\n act.enabled = true;\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("viewSendMsgDock");\n _menuDesktop.appendAction(act);\n\n _usr["newId(int)"].connect(sHandleButtons);\n _send.clicked.connect(send);\n\n fillListCommentConsole();\n}\n\nfunction getParams()\n{\n var params = new Object;\n\n params.message = _message.plainText;\n if (_usr.id() > 0)\n params.usr_id = _usr.id();\n\n return params;\n}\n\nfunction sHandleButtons()\n{\n var qry = "SELECT usr_id FROM usr WHERE usr_username = current_user;";\n var data = toolbox.executeQuery(qry, -1);\n if (data.first())\n var currenttUsr_id = data.value("usr_id");\n\n if (currenttUsr_id == _usr.id())\n {\n if (QMessageBox.information(mainwindow, qsTr("Send Message?"),\n qsTr("You are trying to Send Message to Yourself."\n +"\\nAre you sure that you really want to Continue?."),\n QMessageBox.Yes | QMessageBox.Default, QMessageBox.No | QMessageBox.Escape) == QMessageBox.No)\n {\n _usr.clear();\n return;\n }\n else\n _send.enabled = (_usr.id() >= 0);\n }\n else\n _send.enabled = (_usr.id() >= 0);\n}\n\nfunction send()\n{\n var params = getParams();\n var qry = toolbox.executeDbQuery("desktop", "sendMessageToUser", params);\n QMessageBox.information(mainwindow,'Sent','Message Sent');\n clear();\n}\n\nfunction set(input)\n{\n if ("user" in input)\n _usr.setUsername(input.user);\n else\n QMessageBox.warning(mywindow, "Message", "Could not set username");\n}\n\nfunction clear()\n{\n _usr.clear();\n _message.clear();\n}\n\nfunction fillListCommentConsole()\n{\n _commentConsole = mainwindow.findChild("_commentConsole");\n\n var cmmntTypeList = preferences.value("MonitoredCommentTypes");\n var cmmntSrcList = preferences.value("MonitoredCommentSrcs");\n var cmmntUsrList = preferences.value("MonitoredCommentUsrs");\n\n var params = new Object;\n\n //Checking whether xtmfg package exists in the database or not\n var checkxtmfg = "SELECT pkghead_id "\n + "FROM pkghead "\n + "WHERE (pkghead_name = 'xtmfg');";\n var datacheckxtmfg = toolbox.executeQuery(checkxtmfg, params);\n if (datacheckxtmfg.first())\n params.xtmfg_exist = datacheckxtmfg.value("pkghead_id");\n else if (datacheckxtmfg.lastError().type != QSqlError.NoError)\n {\n QMessageBox.critical(mainwindow, qsTr("Database Error"),\n datacheckxtmfg.lastError().text);\n return;\n }\n\n var getDate = "SELECT CURRENT_DATE + CAST( AS INTEGER) AS datevalue;";\n\n params.offSet = ((preferences.value("MonitoredCommentStrtDate") != '')?preferences.value("MonitoredCommentStrtDate"):-1);\n var data = toolbox.executeQuery(getDate, params);\n if (data.first())\n params.startDate = data.value("datevalue");\n else if (data.lastError().type != QSqlError.NoError)\n {\n QMessageBox.critical(mainwindow, qsTr("Database Error"),\n data.lastError().text);\n return;\n }\n\n params.offSet = ((preferences.value("MonitoredCommentEndDate") != '')?preferences.value("MonitoredCommentEndDate"):0);\n var data = toolbox.executeQuery(getDate, params);\n if (data.first())\n params.endDate = data.value("datevalue");\n else if (data.lastError().type != QSqlError.NoError)\n {\n QMessageBox.critical(mainwindow, qsTr("Database Error"),\n data.lastError().text);\n return;\n }\n\n _commentConsole.clear();\n \n if (cmmntTypeList.length)\n params.commenttype_id = cmmntTypeList;\n\n if (cmmntSrcList.length)\n {\n params.sourceidlist = cmmntSrcList;\n var sourceList = new Array();\n var data = toolbox.executeDbQuery("desktop","cmmntPrefSrc", params);\n var i = 0;\n while (data.next())\n sourceList.push(data.value("cmntsource_name"));\n params.source = sourceList;\n }\n\n if(cmmntUsrList.length)\n params.usr_id = cmmntUsrList;\n\n _commentConsole.populate(toolbox.executeDbQuery("desktop","commentConsole", params));\n _commentConsoleIsDirty = false;\n}\n\nfunction populateMenuCommentConsole(pMenu, pItem, pCol)\n{\n try\n {\n _commentConsole = mainwindow.findChild("_commentConsole");\n\n if(pMenu == null)\n pMenu = _commentConsole.findChild("_menu");\n if(pMenu != null)\n {\n var tmpact;\n if(pItem.text(3) == "ADDR")//Address\n {\n tmpact = pMenu.addAction(qsTr("Edit Address..."));\n tmpact.enabled = privileges.check("MaintainAddresses");\n tmpact.triggered.connect(editaddr);\n\n tmpact = pMenu.addAction(qsTr("View Address..."));\n tmpact.enabled = privileges.check("MaintainAddresses") ||\n privileges.check("ViewAddresses");\n tmpact.triggered.connect(viewaddr);\n }\n else if(pItem.text(3) == "BBH")//BBomhead\n {\n tmpact = pMenu.addAction(qsTr("Edit Breeder Bill of Material..."));\n tmpact.enabled = (privileges.check("MaintainBBOMs"));\n tmpact.triggered.connect(editbbh);\n\n tmpact = pMenu.addAction(qsTr("View Breeder Bill of Material..."));\n tmpact.enabled = (privileges.check("MaintainBBOMs") ||\n privileges.check("ViewBBOMs"));\n tmpact.triggered.connect(viewbbh);\n }\n else if(pItem.text(3) == "BBI")//BBOMItem\n {\n tmpact = pMenu.addAction(qsTr("Edit Breeder Bill of Material Item..."));\n tmpact.enabled = (privileges.check("MaintainBBOMs"));\n tmpact.triggered.connect(editbbi);\n\n tmpact = pMenu.addAction(qsTr("View Breeder Bill of Material Item..."));\n tmpact.enabled = (privileges.check("MaintainBBOMs") ||\n privileges.check("ViewBBOMs"));\n tmpact.triggered.connect(viewbbi);\n }\n else if(pItem.text(3) == "BMH")//BOMHead\n {\n tmpact = pMenu.addAction(qsTr("Edit Bill of Material..."));\n tmpact.enabled = (privileges.check("MaintainBOMs"));\n tmpact.triggered.connect(editbmh);\n\n tmpact = pMenu.addAction(qsTr("View Bill of Material..."));\n tmpact.enabled = (privileges.check("MaintainBOMs") ||\n privileges.check("ViewBOMs"));\n tmpact.triggered.connect(viewbmh);\n }\n else if(pItem.text(3) == "BMI")//BOM Item\n {\n tmpact = pMenu.addAction(qsTr("Edit BOM Item..."));\n tmpact.enabled = (privileges.check("MaintainBOMs"));\n tmpact.triggered.connect(editbomitem);\n\n tmpact = pMenu.addAction(qsTr("View BOM Item..."));\n tmpact.enabled = (privileges.check("MaintainBOMs") ||\n privileges.check("ViewBOMs"));\n tmpact.triggered.connect(viewbomitem);\n }\n else if(pItem.text(3) == "BOH")//BOO Head\n {\n tmpact = pMenu.addAction(qsTr("Edit BOO Head..."));\n tmpact.enabled = (privileges.check("MaintainBOOs"));\n tmpact.triggered.connect(editboh);\n\n tmpact = pMenu.addAction(qsTr("View BOO Head..."));\n tmpact.enabled = (privileges.check("MaintainBOOs") ||\n privileges.check("ViewBOOs"));\n tmpact.triggered.connect(viewboh);\n }\n else if(pItem.text(3) == "BOI")//BOO Item\n {\n tmpact = pMenu.addAction(qsTr("Edit BOO Item..."));\n tmpact.enabled = (privileges.check("MaintainBOOs"));\n tmpact.triggered.connect(editboi);\n\n tmpact = pMenu.addAction(qsTr("View BOO Item..."));\n tmpact.enabled = (privileges.check("MaintainBOOs") ||\n privileges.check("ViewBOOs"));\n tmpact.triggered.connect(viewboi);\n }\n else if(pItem.text(3) == "CRMA")//CRMAccount\n {\n tmpact = pMenu.addAction(qsTr("Edit CRM Account..."));\n tmpact.enabled = (privileges.check("MaintainPersonalCRMAccounts") ||\n privileges.check("MaintainAllCRMAccounts"));\n tmpact.triggered.connect(editcrma);\n\n tmpact = pMenu.addAction(qsTr("View CRM Account..."));\n tmpact.enabled = (privileges.check("MaintainPersonalCRMAccounts") ||\n privileges.check("ViewPersonalCRMAccounts")||\n privileges.check("MaintainPersonalCRMAccounts") ||\n privileges.check("ViewAllCRMAccounts"));\n tmpact.triggered.connect(viewcrma);\n }\n else if(pItem.text(3) == "T-Contact")//Contact\n {\n tmpact = pMenu.addAction(qsTr("Edit Contact..."));\n tmpact.enabled = (privileges.check("MaintainPersonalContacts") ||\n privileges.check("MaintainAllContacts"));\n tmpact.triggered.connect(editcntct);\n\n tmpact = pMenu.addAction(qsTr("View Contact..."));\n tmpact.enabled = (privileges.check("MaintainPersonalContacts") ||\n privileges.check("ViewPersonalContacts")||\n privileges.check("MaintainAllContacts") ||\n privileges.check("ViewAllContacts"));\n tmpact.triggered.connect(viewcntct);\n }\n else if(pItem.text(3) == "C")//Customer\n {\n tmpact = pMenu.addAction(qsTr("Edit Customer..."));\n tmpact.enabled = (privileges.check("MaintainCustomerMasters"));\n tmpact.triggered.connect(editcustomer);\n\n tmpact = pMenu.addAction(qsTr("View Customer..."));\n tmpact.enabled = (privileges.check("MaintainCustomerMasters") ||\n privileges.check("ViewCustomerMasters"));\n tmpact.triggered.connect(viewcustomer);\n }\n else if(pItem.text(3) == "EMP")//Employee\n {\n tmpact = pMenu.addAction(qsTr("Edit Employee..."));\n tmpact.enabled = (privileges.check("MaintainEmployees"));\n tmpact.triggered.connect(editemp);\n\n tmpact = pMenu.addAction(qsTr("View Employee..."));\n tmpact.enabled = (privileges.check("MaintainEmployees") ||\n privileges.check("ViewEmployees"));\n tmpact.triggered.connect(viewemp);\n }\n else if(pItem.text(3) == "INCDT")//Incident\n {\n tmpact = pMenu.addAction(qsTr("Edit Incident..."));\n tmpact.enabled = (privileges.check("MaintainPersonalIncidents") ||\n privileges.check("MaintainAllIncidents"));\n tmpact.triggered.connect(editincdt);\n\n tmpact = pMenu.addAction(qsTr("View Incident..."));\n tmpact.enabled = (privileges.check("MaintainPersonalIncidents") ||\n privileges.check("ViewPersonalIncidents")||\n privileges.check("MaintainAllIncidents") ||\n privileges.check("ViewAllIncidents"));\n tmpact.triggered.connect(viewincdt);\n }\n else if(pItem.text(3) == "I")//Item\n {\n tmpact = pMenu.addAction(qsTr("Edit Item..."));\n tmpact.enabled = (privileges.check("MaintainItemMasters"));\n tmpact.triggered.connect(edititem);\n\n tmpact = pMenu.addAction(qsTr("View Item..."));\n tmpact.enabled = (privileges.check("MaintainItemMasters") ||\n privileges.check("ViewItemMasters"));\n tmpact.triggered.connect(viewitem);\n }\n else if(pItem.text(3) == "IS")//ItemSite\n {\n tmpact = pMenu.addAction(qsTr("Edit ItemSite..."));\n tmpact.enabled = (privileges.check("MaintainItemSites"));\n tmpact.triggered.connect(edititemsite);\n\n tmpact = pMenu.addAction(qsTr("View ItemSite..."));\n tmpact.enabled = (privileges.check("MaintainItemSites") ||\n privileges.check("ViewItemSites"));\n tmpact.triggered.connect(viewitemsite);\n }\n else if(pItem.text(3) == "IR")//ItemSource\n {\n tmpact = pMenu.addAction(qsTr("Edit ItemSource..."));\n tmpact.enabled = (privileges.check("MaintainItemSources"));\n tmpact.triggered.connect(edititemsource);\n\n tmpact = pMenu.addAction(qsTr("View ItemSource..."));\n tmpact.enabled = (privileges.check("MaintainItemSources") ||\n privileges.check("ViewItemSources"));\n tmpact.triggered.connect(viewitemsource);\n }\n else if(pItem.text(3) == "L")//Location\n {\n tmpact = pMenu.addAction(qsTr("Edit Location..."));\n tmpact.enabled = (privileges.check("MaintainLocations"));\n tmpact.triggered.connect(editlocation);\n\n tmpact = pMenu.addAction(qsTr("View Location..."));\n tmpact.enabled = (privileges.check("MaintainLocations") ||\n privileges.check("ViewLocations"));\n tmpact.triggered.connect(viewlocation);\n }\n else if(pItem.text(3) == "LS")//LotSerial\n {\n tmpact = pMenu.addAction(qsTr("Edit LotSerial..."));\n tmpact.triggered.connect(editlotserial);\n\n tmpact = pMenu.addAction(qsTr("View LotSerial..."));\n tmpact.triggered.connect(viewlotserial);\n }\n else if(pItem.text(3) == "OPP-Opportunity")//Opportunity\n {\n tmpact = pMenu.addAction(qsTr("Edit Opportunity..."));\n tmpact.enabled = (privileges.check("MaintainPersonalOpportunities") ||\n privileges.check("MaintainAllOpportunities"));\n tmpact.triggered.connect(editopp);\n\n tmpact = pMenu.addAction(qsTr("View Opportunity..."));\n tmpact.enabled = (privileges.check("MaintainPersonalOpportunities") ||\n privileges.check("ViewPersonalOpportunities")||\n privileges.check("MaintainAllOpportunities") ||\n privileges.check("ViewAllOpportunities"));\n tmpact.triggered.connect(viewopp);\n }\n else if(pItem.text(3) == "J")//Project\n {\n tmpact = pMenu.addAction(qsTr("Edit Project..."));\n tmpact.enabled = (privileges.check("MaintainPersonalProjects") ||\n privileges.check("MaintainAllProjects"));\n tmpact.triggered.connect(editprj);\n\n tmpact = pMenu.addAction(qsTr("View Project..."));\n tmpact.enabled = (privileges.check("MaintainPersonalProjects") ||\n privileges.check("ViewPersonalProjects")||\n privileges.check("MaintainAllProjects") ||\n privileges.check("ViewAllProjects"));\n tmpact.triggered.connect(viewprj);\n }\n else if(pItem.text(3) == "P")//Purchase Order\n {\n tmpact = pMenu.addAction(qsTr("Edit Purchase Order..."));\n tmpact.enabled = (privileges.check("MaintainPurchaseOrders"));\n tmpact.triggered.connect(editpo);\n\n tmpact = pMenu.addAction(qsTr("View Purchase Order..."));\n tmpact.enabled = (privileges.check("MaintainPurchaseOrders") ||\n privileges.check("ViewPurchaseOrders"));\n tmpact.triggered.connect(viewpo);\n }\n else if(pItem.text(3) == "PI")//Purchase Order Item\n {\n tmpact = pMenu.addAction(qsTr("Edit Purchase Order Item..."));\n tmpact.enabled = (privileges.check("MaintainPurchaseOrders"));\n tmpact.triggered.connect(editpoitem);\n\n tmpact = pMenu.addAction(qsTr("View Purchase Order Item..."));\n tmpact.enabled = (privileges.check("MaintainPurchaseOrders") ||\n privileges.check("ViewPurchaseOrders"));\n tmpact.triggered.connect(viewpoitem);\n }\n else if(pItem.text(3) == "RA")//Return Authorisation\n {\n tmpact = pMenu.addAction(qsTr("Edit Return Authorisation..."));\n tmpact.enabled = (privileges.check("MaintainReturns"));\n tmpact.triggered.connect(editreturnauth);\n\n tmpact = pMenu.addAction(qsTr("View Return Authorisation..."));\n tmpact.enabled = (privileges.check("MaintainReturns") ||\n privileges.check("ViewReturns"));\n tmpact.triggered.connect(viewreturnauth);\n }\n else if(pItem.text(3) == "RI")//Return Authorisation Item\n {\n tmpact = pMenu.addAction(qsTr("Edit Return Authorisation Item..."));\n tmpact.enabled = (privileges.check("MaintainReturns"));\n tmpact.triggered.connect(editreturnauthitem);\n\n tmpact = pMenu.addAction(qsTr("View Return Authorisation Item..."));\n tmpact.enabled = (privileges.check("MaintainReturns") ||\n privileges.check("ViewReturns"));\n tmpact.triggered.connect(viewreturnauthitem);\n }\n else if(pItem.text(3) == "Q")//Quote\n {\n tmpact = pMenu.addAction(qsTr("Edit Quote..."));\n tmpact.enabled = (privileges.check("MaintainQuotes"));\n tmpact.triggered.connect(editquote);\n\n tmpact = pMenu.addAction(qsTr("View Quote..."));\n tmpact.enabled = (privileges.check("MaintainQuotes") ||\n privileges.check("ViewQuotes"));\n tmpact.triggered.connect(viewquote);\n }\n else if(pItem.text(3) == "QI")//Quote Item\n {\n tmpact = pMenu.addAction(qsTr("Edit Quote Item..."));\n tmpact.enabled = (privileges.check("MaintainQuotes"));\n tmpact.triggered.connect(editquoteitem);\n\n tmpact = pMenu.addAction(qsTr("View Quote Item..."));\n tmpact.enabled = (privileges.check("MaintainQuotes") ||\n privileges.check("ViewQuotes"));\n tmpact.triggered.connect(viewquoteitem);\n }\n else if(pItem.text(3) == "S")//Sales Order\n {\n tmpact = pMenu.addAction(qsTr("Edit Sales Order..."));\n tmpact.enabled = (privileges.check("MaintainSalesOrders"));\n tmpact.triggered.connect(editso);\n\n tmpact = pMenu.addAction(qsTr("View Sales Order..."));\n tmpact.enabled = (privileges.check("MaintainSalesOrders") ||\n privileges.check("ViewSalesOrders"));\n tmpact.triggered.connect(viewso);\n }\n else if(pItem.text(3) == "SI")//Sales Order Item\n {\n tmpact = pMenu.addAction(qsTr("Edit Sales Order Item..."));\n tmpact.enabled = (privileges.check("MaintainSalesOrders"));\n tmpact.triggered.connect(editsoitem);\n\n tmpact = pMenu.addAction(qsTr("View Sales Order Item..."));\n tmpact.enabled = (privileges.check("MaintainSalesOrders") ||\n privileges.check("ViewSalesOrders"));\n tmpact.triggered.connect(viewsoitem);\n }\n else if(pItem.text(3) == "TA")//Task\n {\n tmpact = pMenu.addAction(qsTr("Edit Task..."));\n tmpact.enabled = (privileges.check("MaintainPersonalProjects") ||\n privileges.check("MaintainAllProjects"));\n tmpact.triggered.connect(edittask);\n\n tmpact = pMenu.addAction(qsTr("View Task..."));\n tmpact.enabled = (privileges.check("MaintainPersonalProjects") ||\n privileges.check("ViewPersonalProjects")||\n privileges.check("MaintainAllProjects") ||\n privileges.check("ViewAllProjects"));\n tmpact.triggered.connect(viewtask);\n }\n else if(pItem.text(3) == "TD")//TodoItem\n {\n tmpact = pMenu.addAction(qsTr("Edit TodoItem..."));\n tmpact.enabled = (privileges.check("MaintainPersonalToDoItems") ||\n privileges.check("MaintainAllToDoItems"));\n tmpact.triggered.connect(edittodoitem);\n\n tmpact = pMenu.addAction(qsTr("View TodoItem..."));\n tmpact.enabled = (privileges.check("MaintainPersonalToDoItems") ||\n privileges.check("ViewPersonalToDoItems")||\n privileges.check("MaintainAllToDoItems") ||\n privileges.check("ViewAllToDoItems"));\n tmpact.triggered.connect(viewtodoitem);\n }\n else if(pItem.text(3) == "TO")//Transfer Order\n {\n tmpact = pMenu.addAction(qsTr("Edit Transfer Order..."));\n tmpact.enabled = (privileges.check("MaintainTransferOrders"));\n tmpact.triggered.connect(editto);\n\n tmpact = pMenu.addAction(qsTr("View Transfer Order..."));\n tmpact.enabled = (privileges.check("MaintainTransferOrders") ||\n privileges.check("ViewTransferOrders"));\n tmpact.triggered.connect(viewto);\n }\n else if(pItem.text(3) == "TI")//Transfer Order Item\n {\n tmpact = pMenu.addAction(qsTr("Edit Transfer Order Item..."));\n tmpact.enabled = (privileges.check("MaintainTransferOrders"));\n tmpact.triggered.connect(edittoitem);\n\n tmpact = pMenu.addAction(qsTr("View Transfer Order Item..."));\n tmpact.enabled = (privileges.check("MaintainTransferOrders") ||\n privileges.check("ViewTransferOrders"));\n tmpact.triggered.connect(viewtoitem);\n }\n else if(pItem.text(3) == "V")//Vendor\n {\n tmpact = pMenu.addAction(qsTr("Edit Vendor..."));\n tmpact.enabled = (privileges.check("MaintainVendors"));\n tmpact.triggered.connect(editvend);\n\n tmpact = pMenu.addAction(qsTr("View Vendor..."));\n tmpact.enabled = (privileges.check("MaintainVendors") ||\n privileges.check("ViewVendors"));\n tmpact.triggered.connect(viewvend);\n }\n else if(pItem.text(3) == "WH")//WareHouse\n {\n tmpact = pMenu.addAction(qsTr("Edit WareHouse..."));\n tmpact.enabled = (privileges.check("MaintainWarehouses"));\n tmpact.triggered.connect(editwh);\n\n tmpact = pMenu.addAction(qsTr("View WareHouse..."));\n tmpact.enabled = (privileges.check("MaintainWarehouses") ||\n privileges.check("ViewWarehouses"));\n tmpact.triggered.connect(viewwh);\n }\n else if(pItem.text(3) == "W")//Work Order\n {\n tmpact = pMenu.addAction(qsTr("Edit Work Order..."));\n tmpact.enabled = (privileges.check("MaintainWorkOrders"));\n tmpact.triggered.connect(editwo);\n\n tmpact = pMenu.addAction(qsTr("View Work Order..."));\n tmpact.enabled = (privileges.check("MaintainWorkOrders"));\n tmpact.triggered.connect(viewwo);\n }\n }\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "populateMenuCommentConsole exception: " + e);\n }\n}\n\nfunction preferencesCommentConsole()\n{\n try\n {\n \tparams = new Object;\n var newdlg = toolbox.openWindow("preferencesComment", mainwindow,\n Qt.ApplicationModal, Qt.Dialog);\n toolbox.lastWindow().set(params);\n if (newdlg.exec())\n refreshCommentConsole();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "preferencesCommentConsole exception: " + e);\n }\n}\n\n/*!\n Refreshes data if the window is visible, or the next time it becomes visible\n*/\nfunction refreshCommentConsole()\n{\n try\n {\n \t_commentConsoleIsDirty = true;\n fillListCommentConsole();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "refreshCommentConsole exception: " + e);\n }\n}\n\nfunction editaddr()\n{\n try\n {\n var params = new Object();\n params.addr_id = _commentConsole.id();\n\n params.mode = "edit";\n var newdlg = toolbox.openWindow("address", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editaddr exception: " + e);\n }\n}\n\nfunction viewaddr()\n{\n try\n {\n var params = new Object();\n params.addr_id = _commentConsole.id();\n\n params.mode = "view";\n var newdlg = toolbox.openWindow("address", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewaddr exception: " + e);\n }\n}\n\nfunction editbbh()\n{\n try\n {\n var params = new Object();\n params.item_id = _commentConsole.id();\n\n params.mode = "edit";\n var newdlg = toolbox.openWindow("bbom", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editbbh exception: " + e);\n }\n}\n\nfunction viewbbh()\n{\n try\n {\n var params = new Object();\n params.item_id = _commentConsole.id();\n\n params.mode = "view";\n var newdlg = toolbox.openWindow("bbom", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewbbh exception: " + e);\n }\n}\n\nfunction editbbi()\n{\n try\n {\n var params = new Object();\n params.bbomitem_id = _commentConsole.id();\n\n params.mode = "edit";\n var newdlg = toolbox.openWindow("bbomItem", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editbbi exception: " + e);\n }\n}\n\nfunction viewbbi()\n{\n try\n {\n var params = new Object();\n params.bbomitem_id = _commentConsole.id();\n\n params.mode = "view";\n var newdlg = toolbox.openWindow("bbomItem", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewbbi exception: " + e);\n }\n}\n\nfunction editbmh()\n{\n try\n {\n var params = new Object();\n params.item_id = _commentConsole.id();\n\n params.mode = "edit";\n var newdlg = toolbox.openWindow("bom", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editbmh exception: " + e);\n }\n}\n\nfunction viewbmh()\n{\n try\n {\n var params = new Object();\n params.item_id = _commentConsole.id();\n\n params.mode = "view";\n var newdlg = toolbox.openWindow("bom", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewbmh exception: " + e);\n }\n}\n\nfunction editbomitem()\n{\n try\n {\n params = new Object;\n params.bomitem_id = _commentConsole.id();\n params.mode = "edit";\n\n var newdlg = toolbox.openWindow("bomItem", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editbomitem exception: " + e);\n }\n}\n\nfunction viewbomitem()\n{\n try\n {\n params = new Object;\n params.bomitem_id = _commentConsole.id();\n params.mode = "view";\n\n var newdlg = toolbox.openWindow("bomItem", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewbomitem exception: " + e);\n }\n}\n\nfunction editboh()\n{\n try\n {\n params = new Object;\n params.item_id = _commentConsole.id();\n params.mode = "edit";\n\n var newdlg = toolbox.openWindow("boo", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editboh exception: " + e);\n }\n}\n\nfunction viewboh()\n{\n try\n {\n params = new Object;\n params.item_id = _commentConsole.id();\n params.mode = "view";\n\n var newdlg = toolbox.openWindow("boo", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewboh exception: " + e);\n }\n}\n\nfunction editboi()\n{\n try\n {\n params = new Object;\n params.booitem_id = _commentConsole.id();\n params.mode = "edit";\n\n var newdlg = toolbox.openWindow("booItem", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editboi exception: " + e);\n }\n}\n\nfunction viewboi()\n{\n try\n {\n params = new Object;\n params.booitem_id = _commentConsole.id();\n params.mode = "view";\n\n var newdlg = toolbox.openWindow("booItem", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewboi exception: " + e);\n }\n}\n\nfunction editcntct()\n{\n try\n {\n var params = new Object();\n params.cntct_id = _commentConsole.id();\n\n params.mode = "edit";\n var newdlg = toolbox.openWindow("contact", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editcntct exception: " + e);\n }\n}\n\nfunction viewcntct()\n{\n try\n {\n var params = new Object();\n params.cntct_id = _commentConsole.id();\n\n params.mode = "view";\n var newdlg = toolbox.openWindow("contact", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewcntct exception: " + e);\n }\n}\n\nfunction editcrma()\n{\n try\n {\n var params = new Object();\n params.crmacct_id = _commentConsole.id();\n\n params.mode = "edit";\n var newdlg = toolbox.openWindow("crmaccount", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editcrma exception: " + e);\n }\n}\n\nfunction viewcrma()\n{\n try\n {\n var params = new Object();\n params.crmacct_id = _commentConsole.id();\n\n params.mode = "view";\n var newdlg = toolbox.openWindow("crmaccount", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewcrma exception: " + e);\n }\n}\n\nfunction editcustomer()\n{\n try\n {\n var params = new Object();\n params.cust_id = _commentConsole.id();\n\n params.mode = "edit";\n var newdlg = toolbox.openWindow("customer", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editcustomer exception: " + e);\n }\n}\n\nfunction viewcustomer()\n{\n try\n {\n var params = new Object();\n params.cust_id = _commentConsole.id();\n\n params.mode = "view";\n var newdlg = toolbox.openWindow("customer", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewcustomer exception: " + e);\n }\n}\n\nfunction editemp()\n{\n try\n {\n var params = new Object();\n params.emp_id = _commentConsole.id();\n\n params.mode = "edit";\n var newdlg = toolbox.openWindow("employee", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editemp exception: " + e);\n }\n}\n\nfunction viewemp()\n{\n try\n {\n var params = new Object();\n params.emp_id = _commentConsole.id();\n\n params.mode = "view";\n var newdlg = toolbox.openWindow("employee", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewemp exception: " + e);\n }\n}\n\nfunction editincdt()\n{\n try\n {\n params = new Object;\n params.incdt_id = _commentConsole.id();\n params.mode = "edit";\n\n var newdlg = toolbox.openWindow("incident", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editincdt exception: " + e);\n }\n}\n\nfunction viewincdt()\n{\n try\n {\n var params = new Object();\n params.incdt_id = _commentConsole.id();\n\n params.mode = "view";\n var newdlg = toolbox.openWindow("incident", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewincdt exception: " + e);\n }\n}\n\nfunction edititem()\n{\n try\n {\n var params = new Object();\n params.item_id = _commentConsole.id();\n\n params.mode = "edit";\n var newdlg = toolbox.openWindow("item", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "edititem exception: " + e);\n }\n}\n\nfunction viewitem()\n{\n try\n {\n var params = new Object();\n params.item_id = _commentConsole.id();\n\n params.mode = "view";\n var newdlg = toolbox.openWindow("item", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewitem exception: " + e);\n }\n}\n\nfunction edititemsite()\n{\n try\n {\n params = new Object;\n params.itemsite_id = _commentConsole.id();\n params.mode = "edit";\n\n var newdlg = toolbox.openWindow("itemSite", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "edititemsite exception: " + e);\n }\n}\n\nfunction viewitemsite()\n{\n try\n {\n params = new Object;\n params.itemsite_id = _commentConsole.id();\n params.mode = "view";\n\n var newdlg = toolbox.openWindow("itemSite", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewitemsite exception: " + e);\n }\n}\n\nfunction edititemsource()\n{\n try\n {\n params = new Object;\n params.itemsrc_id = _commentConsole.id();\n params.mode = "edit";\n\n var newdlg = toolbox.openWindow("itemSource", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "edititemsource exception: " + e);\n }\n}\n\nfunction viewitemsource()\n{\n try\n {\n params = new Object;\n params.itemsrc_id = _commentConsole.id();\n params.mode = "view";\n\n var newdlg = toolbox.openWindow("itemSource", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewitemsource exception: " + e);\n }\n}\n\nfunction editlocation()\n{\n try\n {\n var params = new Object();\n params.location_id = _commentConsole.id();\n\n params.mode = "edit";\n var newdlg = toolbox.openWindow("location", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editlocation exception: " + e);\n }\n}\n\nfunction viewlocation()\n{\n try\n {\n var params = new Object();\n params.location_id = _commentConsole.id();\n\n params.mode = "view";\n var newdlg = toolbox.openWindow("location", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewlocation exception: " + e);\n }\n}\n\nfunction editlotserial()\n{\n try\n {\n var params = new Object();\n params.ls_id = _commentConsole.id();\n\n params.mode = "edit";\n var newdlg = toolbox.openWindow("lotSerial", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editlotserial exception: " + e);\n }\n}\n\nfunction viewlotserial()\n{\n try\n {\n var params = new Object();\n params.ls_id = _commentConsole.id();\n\n params.mode = "view";\n var newdlg = toolbox.openWindow("lotSerial", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewlotserial exception: " + e);\n }\n}\n\nfunction editopp()\n{\n try\n {\n var params = new Object();\n params.ophead_id = _commentConsole.id();\n\n params.mode = "edit";\n var newdlg = toolbox.openWindow("opportunity", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editopp exception: " + e);\n }\n}\n\nfunction viewopp()\n{\n try\n {\n var params = new Object();\n params.ophead_id = _commentConsole.id();\n\n params.mode = "view";\n var newdlg = toolbox.openWindow("opportunity", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewopp exception: " + e);\n }\n}\n\nfunction editprj()\n{\n try\n {\n var params = new Object();\n params.prj_id = _commentConsole.id();\n\n params.mode = "edit";\n var newdlg = toolbox.openWindow("project", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editprj exception: " + e);\n }\n}\n\nfunction viewprj()\n{\n try\n {\n var params = new Object();\n params.prj_id = _commentConsole.id();\n\n params.mode = "view";\n var newdlg = toolbox.openWindow("project", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewprj exception: " + e);\n }\n}\n\nfunction editpo()\n{\n try\n {\n var params = new Object();\n params.pohead_id = _commentConsole.id();\n\n params.mode = "edit";\n var newdlg = toolbox.openWindow("purchaseOrder", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editpo exception: " + e);\n }\n}\n\nfunction viewpo()\n{\n try\n {\n var params = new Object();\n params.pohead_id = _commentConsole.id();\n\n params.mode = "view";\n var newdlg = toolbox.openWindow("purchaseOrder", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewpo exception: " + e);\n }\n}\n\nfunction editpoitem()\n{\n try\n {\n params = new Object;\n params.poitem_id = _commentConsole.id();\n params.mode = "edit";\n\n var newdlg = toolbox.openWindow("purchaseOrderItem", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editpoitem exception: " + e);\n }\n}\n\nfunction viewpoitem()\n{\n try\n {\n params = new Object;\n params.poitem_id = _commentConsole.id();\n params.mode = "view";\n\n var newdlg = toolbox.openWindow("purchaseOrderItem", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewpoitem exception: " + e);\n }\n}\n\nfunction editquote()\n{\n try\n {\n var params = new Object();\n params.quhead_id = _commentConsole.id();\n\n params.mode = "editQuote";\n var newdlg = toolbox.openWindow("salesOrder", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editquote exception: " + e);\n }\n}\n\nfunction viewquote()\n{\n try\n {\n var params = new Object();\n params.quhead_id = _commentConsole.id();\n\n params.mode = "viewQuote";\n var newdlg = toolbox.openWindow("salesOrder", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewquote exception: " + e);\n }\n}\n\nfunction editquoteitem()\n{\n try\n {\n params = new Object;\n params.soitem_id = _commentConsole.id();\n params.mode = "editQuote";\n var newdlg = toolbox.openWindow("salesOrderItem", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editquoteitem exception: " + e);\n }\n}\n\nfunction viewquoteitem()\n{\n try\n {\n params = new Object;\n params.soitem_id = _commentConsole.id();\n params.mode = "viewQuote";\n\n var newdlg = toolbox.openWindow("salesOrderItem", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewquoteitem exception: " + e);\n }\n}\n\nfunction editreturnauth()\n{\n try\n {\n var params = new Object();\n params.rahead_id = _commentConsole.id();\n\n params.mode = "edit";\n var newdlg = toolbox.openWindow("returnAuthorization", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editreturnauth exception: " + e);\n }\n}\n\nfunction viewreturnauth()\n{\n try\n {\n var params = new Object();\n params.rahead_id = _commentConsole.id();\n params.mode = "view";\n\n var newdlg = toolbox.openWindow("returnAuthorization", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewreturnauth exception: " + e);\n }\n}\n\nfunction editreturnauthitem()\n{\n try\n {\n var params = new Object();\n params.raitem_id = _commentConsole.id();\n params.mode = "edit";\n\n var newdlg = toolbox.openWindow("returnAuthorizationItem", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editreturnauthitem exception: " + e);\n }\n}\n\nfunction viewreturnauthitem()\n{\n try\n {\n var params = new Object();\n params.raitem_id = _commentConsole.id();\n params.mode = "view";\n\n var newdlg = toolbox.openWindow("returnAuthorizationItem", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewreturnauthitem exception: " + e);\n }\n}\n\nfunction editso()\n{\n try\n {\n var params = new Object();\n params.sohead_id = _commentConsole.id();\n params.mode = "edit";\n\n var newdlg = toolbox.openWindow("salesOrder", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editso exception: " + e);\n }\n}\n\nfunction viewso()\n{\n try\n {\n var params = new Object();\n params.sohead_id = _commentConsole.id();\n params.mode = "view";\n\n var newdlg = toolbox.openWindow("salesOrder", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewso exception: " + e);\n }\n}\n\nfunction editsoitem()\n{\n try\n {\n params = new Object;\n params.soitem_id = _commentConsole.id();\n params.mode = "edit";\n\n var newdlg = toolbox.openWindow("salesOrderItem", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editsoitem exception: " + e);\n }\n}\n\nfunction viewsoitem()\n{\n try\n {\n params = new Object;\n params.soitem_id = _commentConsole.id();\n params.mode = "view";\n\n var newdlg = toolbox.openWindow("salesOrderItem", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewsoitem exception: " + e);\n }\n}\n\nfunction edittask()\n{\n try\n {\n params = new Object;\n params.prjtask_id = _commentConsole.id();\n params.mode = "edit";\n\n var newdlg = toolbox.openWindow("task", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "edittask exception: " + e);\n }\n}\n\nfunction viewtask()\n{\n try\n {\n params = new Object;\n params.prjtask_id = _commentConsole.id();\n params.mode = "view";\n\n var newdlg = toolbox.openWindow("task", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewtask exception: " + e);\n }\n}\n\nfunction edittodoitem()\n{\n try\n {\n params = new Object;\n params.todoitem_id = _commentConsole.id();\n params.mode = "edit";\n\n var newdlg = toolbox.openWindow("todoItem", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "edittodoitem exception: " + e);\n }\n}\n\nfunction viewtodoitem()\n{\n try\n {\n params = new Object;\n params.todoitem_id = _commentConsole.id();\n params.mode = "view";\n\n var newdlg = toolbox.openWindow("todoItem", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewtodoitem exception: " + e);\n }\n}\n\nfunction editto()\n{\n try\n {\n var params = new Object();\n params.tohead_id = _commentConsole.id();\n params.mode = "edit";\n\n var newdlg = toolbox.openWindow("transferOrder", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editto exception: " + e);\n }\n}\n\nfunction viewto()\n{\n try\n {\n var params = new Object();\n params.tohead_id = _commentConsole.id();\n params.mode = "view";\n\n var newdlg = toolbox.openWindow("transferOrder", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewto exception: " + e);\n }\n}\n\nfunction edittoitem()\n{\n try\n {\n params = new Object;\n params.toitem_id = _commentConsole.id();\n params.mode = "edit";\n\n var newdlg = toolbox.openWindow("transferOrderItem", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "edittoitem exception: " + e);\n }\n}\n\nfunction viewtoitem()\n{\n try\n {\n params = new Object;\n params.toitem_id = _commentConsole.id();\n params.mode = "view";\n\n var newdlg = toolbox.openWindow("transferOrderItem", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewtoitem exception: " + e);\n }\n}\n\nfunction editvend()\n{\n try\n {\n var params = new Object();\n params.vend_id = _commentConsole.id();\n params.mode = "edit";\n\n var newdlg = toolbox.openWindow("vendor", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editvend exception: " + e);\n }\n}\n\nfunction viewvend()\n{\n try\n {\n var params = new Object();\n params.vend_id = _commentConsole.id();\n params.mode = "view";\n\n var newdlg = toolbox.openWindow("vendor", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewvend exception: " + e);\n }\n}\n\nfunction editwh()\n{\n try\n {\n params = new Object;\n params.warehous_id = _commentConsole.id();\n params.mode = "edit";\n\n var newdlg = toolbox.openWindow("warehouse", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editwh exception: " + e);\n }\n}\n\nfunction viewwh()\n{\n try\n {\n params = new Object;\n params.warehous_id = _commentConsole.id();\n params.mode = "view";\n\n var newdlg = toolbox.openWindow("warehouse", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n var execval = newdlg.exec();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewwh exception: " + e);\n }\n}\n\nfunction editwo()\n{\n try\n {\n var params = new Object();\n params.wo_id = _commentConsole.id();\n params.mode = "edit";\n\n var newdlg = toolbox.openWindow("workOrder", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "editwo exception: " + e);\n }\n}\n\nfunction viewwo()\n{\n try\n {\n var params = new Object();\n params.wo_id = _commentConsole.id();\n params.mode = "view";\n\n var newdlg = toolbox.openWindow("workOrder", mainwindow, 0, 1);\n var tmp = toolbox.lastWindow().set(params);\n newdlg.exec;\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockSendMessage",\n "viewwo exception: " + e);\n }\n}\n 88 initMenu 1 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\n// Import code from related scripts\ninclude("dockBankBal");\ninclude("dockExtensions");\ninclude("dockGLAccounts");\ninclude("dockMessageHistory");\ninclude("dockMfgActive");\ninclude("dockMfgHist");\ninclude("dockMfgOpen");\ninclude("dockMyAccounts");\ninclude("dockMyContacts");\ninclude("dockMyTodo");\ninclude("dockPayables");\ninclude("dockPurchActive");\ninclude("dockPurchHist");\ninclude("dockPurchOpen");\ninclude("dockReceivables");\ninclude("dockSalesActive");\ninclude("dockSalesHistory");\ninclude("dockSalesOpen");\ninclude("dockSendMessage");\ninclude("dockUserOnline");\n\nvar _desktopStack;\nvar _open = qsTr("Open...");\nvar _dtTimer;\nvar _leftAreaDocks = new Array();\nvar _bottomAreaDocks = new Array();\nvar _windows = new Array();\nvar _hasSavedState = settingsValue("hasSavedState").length > 0;\nvar _vToolBar;\nvar _vToolBarActions = new Array();\n\nvar _menuDesktop = new QMenu(qsTr("Desktop"),mainwindow);\nvar _menuToolBar = new QMenu(mainwindow);\nvar _menuWindow = mainwindow.findChild("menu.window");\n\n// Create Menu items for setup windows\nvar _menuSetup = new QMenu(qsTr("Setup"),mainwindow);\n\n// Add desktop to main window\naddAction("sys.currencies","currencies","CreateNewCurrency","CreateNewCurrency");\naddAction("sys.exchangeRates","currencyConversions","MaintainCurrencyRates","ViewCurrencyRates");\n\n// Set up refresh timer\n_dtTimer = new QTimer(mainwindow);\n_dtTimer.setInterval(metrics.value("desktop/timer"));\n_dtTimer.start();\n\n// Set the desktop\n_desktopStack = toolbox.createWidget("QStackedWidget", mainwindow, "_desktopStack");\nvar _desktopParent;\n\n// if this handleNewWindow overload exists then GUIClient is a QMdiArea\nif (mainwindow.showTopLevel())\n _desktopParent = mainwindow;\n// disable desktop when inside workspace mode\n//else if ("handleNewWindow(QWidget*,Qt::WindowModality,bool)" in mainwindow)\n// _desktopParent = toolbox.openWindow("desktop", mainwindow);\n\nif (_desktopParent)\n{\n_desktopParent.setCentralWidget(_desktopStack);\n_vToolBar = new QToolBar(_desktopParent);\n_desktopParent.addToolBar(Qt.LeftToolBarArea, _vToolBar);\n\n// Intialize the left toolbar\n_vToolBar.objectName = "_vToolBar";\n_vToolBar.windowTitle = "Desktop Toolbar";\n_vToolBar.floatable = false;\n_vToolBar.movable = false;\n_vToolBar.visible = true;\n_vToolBar.toolButtonStyle = Qt.ToolButtonTextUnderIcon;\n\n// Initialize Desktop\n// Set up browser for home Page\nvar _welcome = new QWebView(mainwindow);\nvar url = new QUrl(metrics.value("desktop/welcome"));\n_welcome.objectName = "_welcome";\n_welcome["loadFinished(bool)"].connect(loadLocalHtml);\n_welcome["linkClicked(const QUrl &)"].connect(openUrl);\n_welcome.load(url);\n_welcome.page().linkDelegationPolicy = QWebPage.DelegateAllLinks;\n_desktopStack.addWidget(_welcome);\naddToolBarAction(qsTr("Welcome"), "home_32");\n_vToolBarActions[0].checked = true;\n\n// Initialize additional desktop UIs and Dock Widgets\n// (Init functions come from the code pulled in by the include statements)\naddDesktop("desktopCRM", "clients_32", "ViewCRMDesktop");\ninitDockTodo();\ninitDockAccounts();\ninitDockMyCntcts();\n\naddDesktop("desktopSales", "reward_32", "ViewSalesDesktop");\ninitDockSalesAct();\ninitDockSalesHist();\ninitDockSalesOpen();\naddDesktop("desktopAccounting", "accounting_32", "ViewAccountingDesktop");\ninitDockPayables();\ninitDockReceivables();\ninitDockBankBal();\ninitDockGLAccounts();\n\naddDesktop("desktopPurchase", "order_32", "ViewPurchaseDesktop");\ninitDockPurchAct();\ninitDockPurchHist();\ninitDockPurchOpen();\n\naddDesktop("desktopManufacture", "industry_32", "ViewManufactureDesktop");\ninitDockMfgAct();\ninitDockMfgHist();\ninitDockMfgOpen();\n\naddDesktop("desktopSocial", "social", "viewSocialDesktop");\ninitDockUserOnline();\ninitDockMessageHistory();\ninitDockSendMessage();\n\nvar maintWin = addDesktop("desktopMaintenance", "gear_32", "ViewMaintenanceDesktop");\ninitDockExtensions();\n//initDockUserOnline();\n\n// Hack to fix icon size problem until next core release\nvar maintToolbar = maintWin.findChild("_toolbar");\n_vToolBar.iconSize = maintToolbar.iconSize;\nmaintWin.removeToolBar(maintToolbar);\n\n// Handle window actions\n_menuWindow.aboutToShow.connect(prepareWindowMenu);\n\n// Change behavior of item site button if commercial edition\nif (metrics.boolean("MultiWhs"))\n{\n var button = mainwindow.findChild("_sites");\n button.label = qsTr("Sites");\n button.actionName = "im.warehouses";\n}\n}\nelse\n{\n if (!preferences.boolean("NoDesktopNotice"))\n toolbox.openWindow("desktopNotice",mainwindow, Qt.WindowModal, Qt.Dialog);\n}\n\n/*!\n Adds screen with name of @a uiName to the desktop stack so long as the user has\n been granted the privilege @a privName. The @a windowTitle of the UI object is \n added to the Desktop Dock so that when it is clicked, the associated window is \n selected on the Desktop.\n*/\nfunction addDesktop(uiName, imageName, privilege)\n{\n // Get the UI and add to desktop stack\n var desktop = toolbox.loadUi(uiName);\n _desktopStack.addWidget(desktop);\n _windows[_windows.length] = desktop;\n addToolBarAction(desktop.windowTitle, imageName, privilege);\n desktop.restoreState();\n\n return desktop;\n}\n\n/*!\n Add a button with @a label and @a imageName to the left desktop toolbar\n*/\nfunction addToolBarAction(label, imageName, privilege)\n{\n // Get the icon\n var icn = new QIcon();\n icn.addDbImage(imageName);\n\n // Create the action (add to menu not seen to ensure priv rescans work)\n var act = _menuToolBar.addAction(icn, label);\n act.checkable = true;\n if (privilege)\n {\n act.setEnabled(privileges.check(privilege));\n act.setData(privilege);\n }\n\n // Add to toolbar\n _vToolBar.addAction(act);\n _vToolBarActions[_vToolBarActions.length] = act;\n _vToolBar["actionTriggered(QAction*)"].connect(toolbarActionTriggered);\n}\n\n/*!\n Loads a local HTML page from the database if the xTuple weclome page\n fails to load.\n*/\nfunction loadLocalHtml(ok)\n{\n if (!ok)\n {\n // Page didn't load, so load internal HTML saying we aren't connected\n var q = toolbox.executeQuery("SELECT xtdesktop.fetchWelcomeHtml() AS html");\n q.first();\n _welcome.setHtml(q.value("html"));\n }\n // We don't want to deal with loading any more web pages. Let OS do it\n _welcome.page().linkDelegationPolicy = QWebPage.DelegateAllLinks;;\n}\n\n\n/*!\n Launches links clicked on home page into new local browser window\n*/\nfunction openUrl(url)\n{\n toolbox.openUrl(new QUrl(url).toString());\n}\n\n/*!\n Adds desktop to the window menu\n*/\nfunction prepareWindowMenu()\n{\n // TO DO: Make this more modular\n var idx = _desktopStack.currentIndex;\n _dockMycontacts.toggleViewAction().visible = (idx == 1);\n _dockMyaccounts.toggleViewAction().visible = (idx == 1);\n _dockMytodo.toggleViewAction().visible = (idx == 1);\n _dockSalesAct.toggleViewAction().visible = (idx == 2);\n _dockSalesHist.toggleViewAction().visible = (idx == 2);\n _dockSalesOpen.toggleViewAction().visible = (idx == 2);\n _dockBankBal.toggleViewAction().visible = (idx == 3);\n _dockPayables.toggleViewAction().visible = (idx == 3);\n _dockReceivables.toggleViewAction().visible = (idx == 3);\n _dockGLAccounts.toggleViewAction().visible = (idx == 3);\n _dockPurchAct.toggleViewAction().visible = (idx == 4);\n _dockPurchHist.toggleViewAction().visible = (idx == 4);\n _dockPurchOpen.toggleViewAction().visible = (idx == 4);\n _dockMfgAct.toggleViewAction().visible = (idx == 5);\n _dockMfgHist.toggleViewAction().visible = (idx == 5);\n _dockMfgOpen.toggleViewAction().visible = (idx == 5);\n _dockSendMessage.toggleViewAction().visible = (idx == 6);\n _dockMessageHistory.toggleViewAction().visible = (idx == 6);\n _dockUserOnline.toggleViewAction().visible = (idx == 6);\n _dockExtensions.toggleViewAction().visible = (idx == 7);\n// _dockUserOnline.toggleViewAction().visible = (idx == 7);\n _menuWindow.addSeparator();\n _menuWindow.addMenu(_menuDesktop);\n}\n\nfunction toolbarActionTriggered(action)\n{\n // Move to the desktop page specified\n for (i in _vToolBarActions)\n {\n if (_vToolBarActions[i] == action)\n _desktopStack.currentIndex = i\n else\n _vToolBarActions[i].checked = false;\n }\n}\n\nfunction addAction(actionName, slotName, editPriv, viewPriv)\n{\n var tempaction;\n tmpaction = new QAction(mainwindow);\n tmpaction.enabled = privileges.value(editPriv) || privileges.value(viewPriv);\n tmpaction.setData(editPriv + " " + viewPriv);\n tmpaction.objectName = actionName;\n tmpaction.triggered.connect(this, slotName);\n _menuSetup.appendAction(tmpaction);\n}\n\nfunction openSetup(uiName)\n{\n var params = new Object;\n params.uiName = uiName;\n var wnd = toolbox.openWindow("setup", mainwindow);\n toolbox.lastWindow().set(params);\n wnd.exec();\n}\n\nfunction currencies()\n{\n openSetup("currencies");\n}\n\nfunction currencyConversions()\n{\n openSetup("currencyConversions");\n}\n\n\n 130 preferencesNumber 0 t try\r\n{\r\n var _limit = mywindow.findChild("_limit");\r\n var _path;\r\n\r\n mydialog.accepted.connect(mysave);\r\n}\r\ncatch (e)\r\n{\r\n QMessageBox.critical(mainwindow, "preferencesNumber",\r\n "preferencesNumber.js exception: " + e);\r\n}\r\n\r\nfunction set(params)\r\n{\r\n if ("path" in params)\r\n _path = params.path;\r\n\r\n if ("limit" in params)\r\n _limit.value = params.limit;\r\n else\r\n _limit.value = 10;\r\n}\r\n\r\nfunction mysave()\r\n{\r\n try\r\n {\r\n preferences.set(_path + "/limit", _limit.value);\r\n }\r\n catch (e)\r\n {\r\n QMessageBox.critical(mainwindow, "preferencesNumber",\r\n "mysave exception: " + e);\r\n }\r\n} 67 contact 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\ninclude("dockMyContacts");\n\n// Connect this window so that the My Contacts dock list gets updated\nvar _contactList = mainwindow.findChild("_contactList");\n\n// Connect this window so that the My Contacts dock list gets updated\n//new method for buttonbox, added for 3.8\n var _buttonBox = mywindow.findChild("_buttonBox");\n toolbox.coreDisconnect(_buttonBox, "accepted()", mywindow, "sSave()");\n _buttonBox.accepted.connect(save);\n\n//method prior to 3.8 core release\n//var _save = mywindow.findChild("_save");\n//toolbox.coreDisconnect(_save, "clicked()", mydialog, "sSave()");\n//_save.clicked.connect(save);\n\nfunction save()\n{\n mydialog.sSave();\n fillListMyCntcts();\n}\n\n 68 desktopNotice 0 t /*\n * This file is part of the xtdesktop package for xTuple ERP: PostBooks edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nmydialog.accepted.connect(save)\n\nfunction save()\n{\n preferences.set("NoDesktopNotice",!mydialog.findChild("_remind").checked)\n}\n 69 dockBankBal 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _dockBankBal;\nvar _bankBal;\nvar _bankBalIsDirty = true;\n\n/*!\n Initializes Bank Balance dock widget and places it in the main window.\n*/\nfunction initDockBankBal()\n{\n _dockBankBal = mainwindow.findChild("_dockBankBal");\n _bankBal = mainwindow.findChild("_bankBal");\n\n // Set columns on list\n _bankBal.addColumn(qsTr("Name"), -1, Qt.AlignLeft, true, "bankaccnt_name");\n _bankBal.addColumn(qsTr("Balance"), -1, Qt.AlignRight, true, "balance");\n\n // Connect Signals and Slots\n _dtTimer.timeout.connect(refreshBankBal);\n mainwindow.bankAccountsUpdated.connect(refreshBankBal);\n mainwindow.bankAdjustmentsUpdated.connect(refreshBankBal);\n mainwindow.cashReceiptsUpdated.connect(refreshBankBal);\n mainwindow.checksUpdated.connect(refreshBankBal);\n mainwindow.glSeriesUpdated.connect(refreshBankBal);\n\n _bankBal.itemSelected.connect(openWindowBankBal);\n _bankBal["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuBankBal);\n\n _dockBankBal.visibilityChanged.connect(fillListBankBal);\n\n // Handle privilge control\n var act = _dockBankBal.toggleViewAction();\n\n // Don't show if no privs\n if (!privileges.check("ViewBankAccountsDock"))\n {\n _dockBankBal.hide();\n act.enabled = false;\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("ViewBankAccountsDock");\n _menuDesktop.appendAction(act);\n\n fillListBankBal();\n}\n\n/*!\n Fills the list with bank account data.\n*/\nfunction fillListBankBal()\n{\n _dockBankBal = mainwindow.findChild("_dockBankBal");\n _bankBal = mainwindow.findChild("_bankBal");\n\n if (_dockBankBal.visible && _bankBalIsDirty)\n {\n _bankBal.populate(toolbox.executeDbQuery("desktop","bankBal"));\n _bankBalIsDirty = false;\n }\n}\n\n/*! \n Opens the window associated with the selected item.\n*/\nfunction openWindowBankBal()\n{\n // Make sure we can open the window\n if (!privilegeCheckBankBal())\n return;\n\n // Open the window and perform any handling required\n toolbox.openWindow("reconcileBankaccount");\n var w = toolbox.lastWindow().findChild("_bankaccnt").setId(_bankBal.id());\n}\n\n/*!\n Adds actions to @a pMenu, typically from a right click on a bank account item.\n*/\nfunction populateMenuBankBal(pMenu, pItem)\n{\n var menuItem;\n var enable = privilegeCheckBankBal();\n\n menuItem = pMenu.addAction(qsTr("Reconcile..."));\n menuItem.enabled = enable;\n menuItem.triggered.connect(openWindowBankBal);\n}\n\n/*!\n Returns whether user has privileges to view detail.\n*/\nfunction privilegeCheckBankBal(act)\n{\n return privileges.check("MaintainBankRec");\n}\n\n/*!\n Refreshes data if the window is visible, or the next time it becomes visible\n*/\nfunction refreshBankBal()\n{\n _bankBalIsDirty = true;\n fillListBankBal();\n}\n 70 dockExtensions 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _dockExtensions;\nvar _extensions;\nvar _extensionsIsDirty = true;\n\n/*!\n Initializes Extensions dock widget and places it in the main window.\n*/\nfunction initDockExtensions()\n{\n _dockExtensions = mainwindow.findChild("_dockExtensions");\n _extensions = mainwindow.findChild("_extensions");\n\n // Set columns on list\n _extensions.addColumn(qsTr("Name"), -1, Qt.AlignLeft, true, "pkgitem_name");\n _extensions.addColumn(qsTr("Description"), -1, Qt.AlignLeft, false, "pkgitem_descrip");\n _extensions.addColumn(qsTr("Type"), -1, Qt.AlignLeft, false, "pkgitem_type");\n\n // Connect Signals and Slots\n _dtTimer.timeout.connect(refreshExtensions);\n\n _extensions.itemSelected.connect(openWindowExtensions);\n _extensions["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuExtensions);\n\n _dockExtensions.visibilityChanged.connect(fillListExtensions);\n\n // Handle privilge control\n var act = _dockExtensions.toggleViewAction();\n\n // Don't show if no privs\n if (!privileges.check("ViewExtensionsDock"))\n {\n _dockExtensions.hide();\n act.enabled = false;\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("ViewExtensionsDock");\n _menuDesktop.appendAction(act);\n\n fillListExtensions();\n}\n\n/*!\n Fills the list with active sales data.\n*/\nfunction fillListExtensions()\n{\n _dockExtensions = mainwindow.findChild("_dockExtensions");\n _extensions = mainwindow.findChild("_extensions");\n\n if (_dockExtensions.visible && _extensionsIsDirty)\n {\n var params = new Object;\n params.script = qsTr("Scripts");\n params.cmd = qsTr("Custom Commands");\n params.procedure = qsTr("Stored Procedures");\n params.trigger = qsTr("Triggers");\n params.image = qsTr("Images");\n params.metasql = qsTr("MetaSQL");\n params.priv = qsTr("Privileges");\n params.report = qsTr("Reports");\n params.schema = qsTr("Schema");\n params.table = qsTr("Tables");\n params.uiform = qsTr("Screens");\n params.view = qsTr("Views");\n params.folder = qsTr("Folder");\n params.client = qsTr("Client");\n params.database = qsTr("Database");\n\n _extensions.populate(toolbox.executeDbQuery("desktop","pkgItems", params))\n \n _extensionsIsDirty = false;\n }\n}\n\n/*! \n Opens the window associated with the selected item.\n*/\nfunction openWindowExtensions()\n{\n var ui;\n var run = false;\n var type = _extensions.currentItem().rawValue("pkgitem_type");\n var params = new Object;\n params.mode = "view";\n \n // Make sure we can open the window for this activity\n if (!privilegeCheckExtensions(type))\n return;\n\n // Determine which window to open\n if (type == "P")\n {\n ui = "package";\n params.pkghead_id = _extensions.id();\n }\n else if (type == "C")\n {\n ui = "scriptEditor";\n params.script_id = _extensions.id();\n }\n else if (type == "D")\n {\n ui = "customCommand";\n params.cmd_id = _extensions.id();\n }\n else if (type == "I")\n {\n ui = "image";\n params.image_id = _extensions.id();\n }\n else if (type == "M")\n ui = "metasqls";\n else if (type == "R")\n ui = "reports";\n else if (type == "U")\n {\n ui = "uiform";\n params.uiform_id = _extensions.id();\n }\n\n // Open the window and perform any handling required\n win = toolbox.openWindow(ui);\n if (type == "M")\n {\n win.hide();\n win.findChild("_list").setId(_extensions.id());\n win.sEdit();\n win.close();\n }\n else if (type == "R")\n {\n win.hide();\n win.findChild("_report").setId(_extensions.id());\n win.sEdit();\n win.close();\n }\n else if (type == "U")\n {\n win.hide();\n toolbox.lastWindow().set(params);\n win.sEdit();\n }\n else\n {\n toolbox.lastWindow().set(params);\n if (toolbox.lastWindow().exec())\n fillListExtensions();\n }\n}\n\n/*!\n Adds actions to @a pMenu, typically from a right click on an Extension item.\n*/\nfunction populateMenuExtensions(pMenu, pItem)\n{\n var menuItem;\n var type = pItem.rawValue("pkgitem_type");\n var enable = privilegeCheckExtensions(type);\n\n // If not a type we have an editor for get out\n if ((type != "P") &&\n (type != "C") &&\n (type != "D") &&\n (type != "I") &&\n (type != "M") &&\n (type != "R") &&\n (type != "U"))\n return;\n\n menuItem = pMenu.addAction(_open);\n menuItem.enabled = enable;\n menuItem.triggered.connect(openWindowExtensions);\n}\n\n/*!\n Returns whether user has privileges to view detail on the selected extension type.\n*/\nfunction privilegeCheckExtensions(type)\n{\n if (type == "P")\n return privileges.check("ViewPackages+#superuser")\n else if (type == "C")\n return privileges.check("MaintainScripts");\n else if (type == "D") \n return privileges.check("MaintainCustomCommands");\n else if (type == "I") \n return privileges.check("MaintainImages");\n else if (type == "M")\n return privileges.check("MaintainMetaSQL") ||\n privileges.check("ViewMetaSQL");\n else if (type == "R") \n return privileges.check("MaintainReports");\n else if (type == "U")\n return privileges.check("MaintainScreens");\n\n return false;\n}\n\n/*!\n Refreshes data if the window is visible, or the next time it becomes visible\n*/\nfunction refreshExtensions()\n{\n _extensionsIsDirty = true;\n fillListExtensions();\n}\n 71 dockGLAccounts 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _b1GLAccounts;\nvar _b2GLAccounts;\nvar _dockGLAccounts;\nvar _glAccounts;\nvar _glAccountsIsDirty = true;\nvar _periodId = -1;\n\n/*!\n Initializes Monitored Accounts dock widget and places it in the main window.\n*/\nfunction initDockGLAccounts()\n{\n // Set up objects\n _dockGLAccounts = mainwindow.findChild("_dockGLAccounts");\n _glAccounts = mainwindow.findChild("_glAccounts");\n\n _b1GLAccounts = _dockGLAccounts.findChild("_button1");\n _b2GLAccounts = _dockGLAccounts.findChild("_button2");\n _labelGLAccounts = _dockGLAccounts.findChild("_label");\n\n // Set icons\n var iReload = new QIcon;\n iReload.addDbImage("reload_16");\n _b1GLAccounts.icon = iReload;\n _b1GLAccounts.text = "";\n _b1GLAccounts.toolTip = qsTr("Reload");\n\n var iGear = new QIcon();\n iGear.addDbImage("gear_16");\n _b2GLAccounts.icon = iGear;\n _b2GLAccounts.text = "";\n _b2GLAccounts.toolTip = qsTr("Preferences...");\n\n // Set columns on list\n _glAccounts.addColumn(qsTr("Number"), -1, Qt.AlignLeft, true, "accnt_id");\n _glAccounts.addColumn(qsTr("Description"), -1, Qt.AlignLeft, true, "accnt_descrip");\n _glAccounts.addColumn(qsTr("Type"), -1, Qt.AlignLeft, true, "accnt_type");\n _glAccounts.addColumn(qsTr("Balance"), -1, Qt.AlignRight, true, "balance");\n\n // Connect Signals and Slots\n _b1GLAccounts.clicked.connect(refreshGLAccounts);\n _b2GLAccounts.clicked.connect(preferencesGLAccounts);\n\n _dtTimer.timeout.connect(refreshGLAccounts);\n mainwindow.bankAdjustmentsUpdated.connect(refreshGLAccounts);\n mainwindow.checksUpdated.connect(refreshGLAccounts);\n mainwindow.creditMemosUpdated.connect(refreshGLAccounts);\n mainwindow.cashReceiptsUpdated.connect(refreshGLAccounts);\n mainwindow.glSeriesUpdated.connect(refreshGLAccounts);\n mainwindow.invoicesUpdated.connect(refreshGLAccounts);\n mainwindow.paymentsUpdated.connect(refreshGLAccounts);\n mainwindow.standardPeriodsUpdated.connect(refreshGLAccounts);\n mainwindow.vouchersUpdated.connect(refreshGLAccounts);\n mainwindow.workOrderMaterialsUpdated.connect(refreshGLAccounts);\n mainwindow.workOrderOperationsUpdated.connect(refreshGLAccounts);\n mainwindow.workOrdersUpdated.connect(refreshGLAccounts);\n\n _glAccounts.itemSelected.connect(openWindowGLAccounts);\n _glAccounts["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuGLAccounts);\n\n _dockGLAccounts.visibilityChanged.connect(fillListGLAccounts);\n\n // Handle privilge control\n var act = _dockGLAccounts.toggleViewAction();\n\n // Don't show if no privs\n if (!privileges.check("ViewGLAccountsDock"))\n {\n _dockGLAccounts.hide();\n act.enabled = false;\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("ViewGLAccountsDock");\n _menuDesktop.appendAction(act);\n fillListGLAccounts();\n}\n\n/*!\n Fills the list with sales history data based on parameters determined by\n sales history preferences.\n\n @sa preferencesGLAccounts()\n*/\nfunction fillListGLAccounts()\n{\n _dockGLAccounts = mainwindow.findChild("_dockGLAccounts");\n _glAccounts = mainwindow.findChild("_glAccounts");\n\n if (!_dockGLAccounts.visible || !_glAccountsIsDirty)\n return;\n\n _glAccounts.clear();\n var accntIdList = preferences.value("MonitoredAccounts");\n if(!accntIdList.length)\n return;\n\n var params = new Object;\n params.asset = qsTr("Asset");\n params.liability = qsTr("Liability");\n params.revenue = qsTr("Revenue");\n params.expense = qsTr("Expense");\n params.equity = qsTr("Equity");\n params.accnt_id_list = accntIdList;\n\n // Forward update if applicable\n if (!metrics.boolean("ManualForwardUpdate"))\n toolbox.executeDbQuery("desktop","glforwardupdate", params);\n\n var qry = toolbox.executeDbQuery("desktop","glaccountBal", params);\n if (qry.first())\n {\n _periodId = qry.value("period_id");\n _glAccounts.populate(qry);\n }\n\n _glAccountsIsDirty = false;\n}\n\n/*! \n Opens the window associated with the selected item.\n*/\nfunction openWindowGLAccounts()\n{\n var ui;\n var params = new Object;\n params.period_id = _periodId;\n params.accnt_id = _glAccounts.id();\n params.run = true;\n\n // Make sure we can open the window\n if (!privilegeCheckGLAccounts())\n return;\n\n // Open the window and perform any special handling required\n toolbox.openWindow("dspGLTransactions");\n toolbox.lastWindow().set(params);\n}\n\n/*!\n Adds actions to @a pMenu, typically from a right click on sales history.\n*/\nfunction populateMenuGLAccounts(pMenu)\n{\n var menuItem;\n var enable = privilegeCheckGLAccounts();\n\n menuItem = pMenu.addAction(_open);\n menuItem.enabled = enable;\n menuItem.triggered.connect(openWindowGLAccounts);\n}\n\n/*!\n Returns whether user has privileges to view Sales History detail.\n*/\nfunction privilegeCheckGLAccounts()\n{\n var returnval = privileges.check("ViewGLTransactions");\n print("privilegeCheckGLAccounts returning " + returnval);\n return returnval;\n}\n\n/*! \n Launches the preferences window where the user can set sales data output preferences.\n*/\nfunction preferencesGLAccounts()\n{\n params = new Object;\n\n var newdlg = toolbox.openWindow("preferencesSelections", mainwindow,\n Qt.ApplicationModal, Qt.Dialog);\n toolbox.lastWindow().set(params);\n if (newdlg.exec())\n refreshGLAccounts();\n}\n\n/*!\n Refreshes data if the window is visible, or the next time it becomes visible\n*/\nfunction refreshGLAccounts()\n{\n _glAccountsIsDirty = true;\n fillListGLAccounts();\n}\n 127 dockMessageHistory 0 t var _b1MessageHistory;\nvar _b2MessageHistory;\nvar _dockMessageHistory;\nvar _messageHistory;\nvar _limitmessageHistory;\nvar _messageHistoryIsDirty = true;\nvar _periodId = -1;\n\nfunction initDockMessageHistory()\n{ \n // Set up objects\n _dockMessageHistory = mainwindow.findChild("_dockMessageHistory");\n _messageHistory = mainwindow.findChild("_messageHistory");\n\n _b1MessageHistory = _dockMessageHistory.findChild("_button3");\n _b2MessageHistory = _dockMessageHistory.findChild("_button4");\n\n // Set icons\n var iReload = new QIcon;\n iReload.addDbImage("reload_16");\n _b1MessageHistory.icon = iReload;\n _b1MessageHistory.text = "";\n _b1MessageHistory.toolTip = qsTr("Reload");\n\n var iGear = new QIcon();\n iGear.addDbImage("gear_16");\n _b2MessageHistory.icon = iGear;\n _b2MessageHistory.text = "";\n _b2MessageHistory.toolTip = qsTr("Preferences...");\n\n // Set columns on list\n _messageHistory.addColumn("Date", 75, 1, true, "sent");\n _messageHistory.addColumn("From", 75, 1, true, "from");\n _messageHistory.addColumn("To", 75, 1, true, "to")\n _messageHistory.addColumn("Message", -1, 1, true, "message");\n\n // Connect Signals and Slots\n _b1MessageHistory.clicked.connect(refreshMessageHistory);\n _b2MessageHistory.clicked.connect(preferencesMessageHistory);\n\n _messageHistory["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuMessageHistory);\n _messageHistory["itemDoubleClicked(QTreeWidgetItem*, int)"].connect(myOpen);\n\n mainwindow["tick()"].connect(refreshMessageHistory);\n mainwindow.setUpListener("messagePosted");\n mainwindow["messageNotify()"].connect(refreshMessageHistory);\n\n // Don't show if no privs\n var act = _dockMessageHistory.toggleViewAction();\n if (!privileges.check("viewMsgHistoryDock"))\n { \n _dockMessageHistory.hide();\n act.enabled = false;\n }\n else\n {\n _dockMessageHistory.show();\n act.enabled = true;\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("viewMsgHistoryDock");\n _menuDesktop.appendAction(act);\n\n fillListMessageHistory();\n}\n\nfunction fillListMessageHistory()\n{\n _dockMessageHistory = mainwindow.findChild("_dockMessageHistory");\n _messageHistory = mainwindow.findChild("_messageHistory");\n\n _messageHistory.clear();\n\n var params = new Object;\n params.limit = _limitmessageHistory;\n\n _messageHistory.populate(toolbox.executeDbQuery("desktop","messageHistory", params));\n _messageHistoryIsDirty = false;\n}\n\nfunction populateMenuMessageHistory(pMenu)\n{\n try\n {\n var menuItem = pMenu.addAction(qsTr("Open..."));\n menuItem.triggered.connect(myOpen);\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockMessageHistory",\n "populateMenuMessageHistory exception: " + e);\n }\n}\n\nfunction preferencesMessageHistory()\n{\n try\n {\n params = new Object;\n params.path = "desktop/messageHistory";\n params.limit = _limitmessageHistory;\n var newdlg = toolbox.openWindow("preferencesNumber", mainwindow,\n Qt.ApplicationModal, Qt.Dialog);\n toolbox.lastWindow().set(params);\n if (newdlg.exec())\n {\n loadPreferencesMessageHistory();\n refreshMessageHistory();\n }\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockMessageHistory",\n "preferencesMessageHistory exception: " + e);\n }\n}\n\nfunction loadPreferencesMessageHistory()\n{\n // Load preferences\n _limitmessageHistory = preferences.value("desktop/messageHistory/limit");\n}\n\n/*!\n Refreshes data if the window is visible, or the next time it becomes visible\n*/\nfunction refreshMessageHistory()\n{\n try\n {\n mainwindow.sSystemMessageAdded();\n messageHistoryIsDirty = true;\n fillListMessageHistory();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockMessageHistory",\n "refreshMessageHistory exception: " + e);\n }\n}\n\nfunction myOpen()\n{\n try\n {\n var params = new Object;\n params.msg_id = _messageHistory.id();\n var q = "SELECT msguser_id "\n + "FROM msguser "\n + "WHERE (msguser_msg_id = );";\n var data = toolbox.executeQuery(q, params);\n if (data.first())\n params.msguser_id = data.value("msguser_id");\n else if (data.lastError().type != QSqlError.NoError)\n {\n QMessageBox.critical(mainwindow, qsTr("Database Error"),\n data.lastError().text);\n return;\n }\n\n params.mode = "acknowledge";\n var newwnd = toolbox.openWindow("systemMessage", mainwindow, Qt.ApplicationModal, Qt.Dialog);\n toolbox.lastWindow().set(params);\n newwnd.exec();\n refreshMessageHistory();\n }\n catch (e)\n {\n QMessageBox.critical(mainwindow, "dockMessageHistory",\n "myOpen exception: " + e);\n }\n}\n 72 dockMfgActive 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _dockMfgAct;\nvar _MfgAct;\nvar _mfgActIsDirty = true;\n\n/*!\n Initializes Mfg. Activity dock widget and places it in the main window.\n*/\nfunction initDockMfgAct()\n{\n _dockMfgAct = mainwindow.findChild("_dockMfgAct");\n _mfgAct = mainwindow.findChild("_mfgAct");\n\n // Set columns on list\n _mfgAct.addColumn(qsTr("Type"), -1, Qt.AlignLeft, true, "activity");\n _mfgAct.addColumn(qsTr("#"), 40, Qt.AlignRight, true, "count");\n _mfgAct.addColumn(qsTr("Amount"), -1, Qt.AlignRight, true, "amount");\n _mfgAct.addColumn(qsTr("Qty"), -1, Qt.AlignRight, false, "qty");\n\n // Connect Signals and Slots\n _dtTimer.timeout.connect(refreshMfgAct);\n mainwindow.workOrdersUpdated.connect(refreshMfgAct);\n mainwindow.workOrderMaterialsUpdated.connect(refreshMfgAct);\n mainwindow.workOrderOperationsUpdated.connect(refreshMfgAct);\n\n _mfgAct.itemSelected.connect(openWindowMfgAct);\n _mfgAct["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuMfgAct);\n\n _dockMfgAct.visibilityChanged.connect(fillListMfgAct);\n\n // Handle privilge control\n var act = _dockMfgAct.toggleViewAction();\n\n // Don't show if no privs\n if (!privileges.check("ViewManufactureActivitiesDock"))\n {\n _dockMfgAct.hide();\n act.enabled = false;\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("ViewManufactureActivitiesDock");\n _menuDesktop.appendAction(act);\n\n fillListMfgAct();\n}\n\n/*!\n Fills the list with active Purch data.\n*/\nfunction fillListMfgAct()\n{\n _dockMfgAct = mainwindow.findChild("_dockMfgAct");\n _mfgAct = mainwindow.findChild("_mfgAct");\n\n if (_dockMfgAct.visible && _mfgActIsDirty)\n {\n var params = new Object;\n if (metrics.value("Application") != "PostBooks")\n params.planned = qsTr("Planned");\n params.open = qsTr("Open");\n params.exploded = qsTr("Exploded");\n params.released = qsTr("Released");\n params.inprocess = qsTr("In Process");\n\n _mfgAct.populate(toolbox.executeDbQuery("desktop","mfgAct", params));\n }\n}\n\n/*! \n Opens the window associated with the selected item.\n*/\nfunction openWindowMfgAct()\n{\n var ui;\n var run = false;\n var act = _mfgAct.currentItem().rawValue("activity");\n \n // Make sure we can open the window for this activity\n if (!privilegeCheckMfgAct(act))\n return;\n\n // Determine which window to open\n if (act == "L")\n ui = "dspPlannedOrders";\n else\n ui = "dspWoSchedule";\n\n // Open the window and perform any handling required\n var win = toolbox.openWindow(ui);\n if (act == "L")\n {\n// win.findChild("_purchase").forgetful = true;\n// win.findChild("_manufacture").forgetful = true;\n// win.findChild("_transfer").forgetful = true;\n// win.findChild("_purchase").checked = false;\n// win.findChild("_manufacture").checked = true;\n// win.findChild("_transfer").checked = false;\n// if (act == 'O')\n// win.findChild("_open").checked = true;\n// else if (act == 'E')\n// win.findChild("_exploded").checked = true;\n// else if (act == 'R')\n// win.findChild("_released").checked = true;\n// else if (act == 'I')\n// win.findChild("_inprocess").checked = true;\n// win.findChild("_warehouse").setAll();\n var params = new Object();\n params.type = "W";\n toolbox.lastWindow().set(params);\n }\n else\n {\n var params = new Object();\n params.status = act;\n toolbox.lastWindow().set(params);\n }\n\n\n win.sFillList();\n}\n\n/*!\n Adds actions to @a pMenu, typically from a right click on a Purch Activity item.\n*/\nfunction populateMenuMfgAct(pMenu, pItem)\n{\n var menuItem;\n var act = pItem.rawValue("activity");\n var enable = privilegeCheckMfgAct(act);\n\n menuItem = pMenu.addAction(_open);\n menuItem.enabled = enable;\n menuItem.triggered.connect(openWindowMfgAct);\n}\n\n/*!\n Returns whether user has privileges to view detail on the selected Manufacture Activity.\n*/\nfunction privilegeCheckMfgAct(act)\n{\n if (act == "L") // Planned Orders\n return privileges.check("ViewPlannedOrders");\n else // Work Orders\n return (privileges.check("ViewWorkOrders") || \n privileges.check("EditWorkOrders"));\n}\n\n/*!\n Refreshes data if the window is visible, or the next time it becomes visible\n*/\nfunction refreshMfgAct()\n{\n _mfgActIsDirty = true;\n fillListMfgAct();\n}\n 73 dockMfgHist 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _b1MfgHist;\nvar _b2MfgHist;\nvar _dockMfgHist;\nvar _groupByMfgHist;\nvar _timeFrameMfgHist;\nvar _typeMfgHist;\nvar _labelMfgHist;\nvar _mfgHist;\nvar _mfgHistIsDirty = true;\n\n/*!\n Initializes Sales History dock widget and places it in the main window.\n*/\nfunction initDockMfgHist()\n{\n // Set up objects\n _dockMfgHist = mainwindow.findChild("_dockMfgHist");\n _mfgHist = mainwindow.findChild("_mfgHist");\n\n _b1MfgHist = _dockMfgHist.findChild("_button1");\n _b2MfgHist = _dockMfgHist.findChild("_button2");\n _labelMfgHist = _dockMfgHist.findChild("_label");\n\n // Set icons\n var iReload = new QIcon;\n iReload.addDbImage("reload_16");\n _b1MfgHist.icon = iReload;\n _b1MfgHist.text = "";\n _b1MfgHist.toolTip = qsTr("Reload");\n\n var iGear = new QIcon();\n iGear.addDbImage("gear_16");\n _b2MfgHist.icon = iGear;\n _b2MfgHist.text = "";\n _b2MfgHist.toolTip = qsTr("Preferences...");\n\n // Load local preferences\n loadPreferencesMfgHist();\n\n // Set columns on list\n setColumnsMfgHist();\n\n // Connect Signals and Slots\n _b1MfgHist.clicked.connect(refreshMfgHist);\n _b2MfgHist.clicked.connect(preferencesMfgHist);\n\n _dtTimer.timeout.connect(refreshMfgHist);\n mainwindow.purchaseOrderReceiptsUpdated.connect(refreshMfgHist);\n mainwindow.vouchersUpdated.connect(refreshMfgHist);\n\n _mfgHist.itemSelected.connect(openWindowMfgHist);\n _mfgHist["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuMfgHist);\n\n _dockMfgHist.visibilityChanged.connect(fillListMfgHist);\n\n // Handle privilge control\n var act = _dockMfgHist.toggleViewAction();\n\n // Don't show if no privs\n if (!privileges.check("ViewManufactureHistoryDock"))\n {\n _dockMfgHist.hide();\n act.enabled = false;\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("ViewManufactureHistoryDock");\n _menuDesktop.appendAction(act);\n\n fillListMfgHist();\n}\n\n/*!\n Fills the list with sales history data based on parameters determined by\n sales history preferences.\n\n @sa preferencesMfgHist()\n*/\nfunction fillListMfgHist()\n{\n _dockMfgHist = mainwindow.findChild("_dockMfgHist");\n _mfgHist = mainwindow.findChild("_mfgHist");\n\n if (!_dockMfgHist.visible || !_mfgHistIsDirty) \n return;\n\n var timeFrame;\n var type;\n var params = getDatesMfgHist();\n \n if (_groupByMfgHist == "classcode")\n {\n params.group_id = "classcode_id";\n params.group_number = "classcode_code";\n params.group_name = "classcode_descrip";\n }\n else if (_groupByMfgHist == "item")\n {\n params.group_id = "item_id";\n params.group_number = "item_number";\n params.group_name = "item_descrip1";\n }\n else if (_groupByMfgHist == "plancode")\n {\n params.group_id = "plancode_id";\n params.group_number = "plancode_code";\n params.group_name = "plancode_name";\n }\n\n _mfgHist.populate(toolbox.executeDbQuery("desktop","mfgHist", params));\n\n type = qsTr("Receipts");\n\n if (_timeFrameMfgHist == "day")\n timeFrame = qsTr("Today");\n else if (_timeFrameMfgHist == "week")\n timeFrame = qsTr("this Week");\n else if (_timeFrameMfgHist == "month")\n timeFrame = qsTr("this Month");\n else if (_timeFrameMfgHist == "year")\n timeFrame = qsTr("this Year");\n\n _labelMfgHist.text = type + " " + timeFrame;\n\n _mfgHistIsDirty = false;\n}\n\n/*!\n Returns an object with a list containing @a startDate and @a endDate\n that is used for fetching data and opening windows using the date range\n stored in local preferences.\n \n @sa preferencesMfgHist()\n @sa openWindowMfgHist()\n @sa fillListMfgHist()\n*/\nfunction getDatesMfgHist()\n{\n var params = new Object;\n\n params.timeFrame = _timeFrameMfgHist;\n params.interval = "1 " + _timeFrameMfgHist;\n\n var q = toolbox.executeDbQuery("desktop", "getDates", params);\n\n if (q.first())\n {\n params.startDate = q.value("startDate");\n params.endDate = q.value("endDate");\n }\n\n return params;\n}\n\n/*! \n Loads local Sales History preferences into memory.\n\n @sa preferencesMfgHist()\n*/\nfunction loadPreferencesMfgHist()\n{\n // Load preferences\n _groupByMfgHist = preferences.value("desktop/mfgHist/groupBy");\n _timeFrameMfgHist = preferences.value("desktop/mfgHist/timeFrame");\n _typeMfgHist = preferences.value("desktop/mfgHist/type")\n \n // Set to defaults if no values\n _groupByMfgHist = (_groupByMfgHist.length ? _groupByMfgHist : "plancode");\n _timeFrameMfgHist = (_timeFrameMfgHist.length ? _timeFrameMfgHist : "year");\n _typeMfgHist = (_typeMfgHist.length ? _typeMfgHist : "receipts");\n}\n\n/*! \n Opens the window associated with the selected item.\n*/\nfunction openWindowMfgHist()\n{\n var ui;\n var params = getDatesMfgHist();\n params.run = true;\n\n // TO DO: Work it out so totals launch a window too\n if (_mfgHist.id() == -1)\n return;\n \n // Make sure we can open the window\n if (!privilegeCheckMfgHist())\n return;\n\n // Determine which window to open\n if (_groupByMfgHist == "classcode")\n {\n ui = "dspInventoryHistory";\n params.classcode_id = _mfgHist.id();\n }\n else if (_groupByMfgHist == "item")\n {\n ui = "dspInventoryHistory";\n params.item_id = _mfgHist.id();\n }\n else if (_groupByMfgHist == "plancode")\n {\n ui = "dspInventoryHistory";\n params.plancode_id = _mfgHist.id();\n }\n params.transtype = "R";\n params.ordertype = "WO";\n params.run = true;\n\n // Open the window and perform any special handling required\n toolbox.openWindow(ui);\n toolbox.lastWindow().set(params);\n}\n\n/*!\n Adds actions to @a pMenu, typically from a right click on sales history.\n*/\nfunction populateMenuMfgHist(pMenu)\n{\n var menuItem;\n var enable = privilegeCheckMfgHist();\n\n menuItem = pMenu.addAction(_open);\n menuItem.enabled = enable;\n menuItem.triggered.connect(openWindowMfgHist);\n}\n\n/*!\n Returns whether user has privileges to view Sales History detail.\n*/\nfunction privilegeCheckMfgHist()\n{\n return privileges.check("ViewInventoryHistory");\n}\n\n/*! \n Set up columns depending on local preferences.\n\n @sa preferencesMfgHist()\n*/\nfunction setColumnsMfgHist()\n{\n _mfgHist.columnCount = 0;\n\n if (_groupByMfgHist == "classcode")\n {\n _mfgHist.addColumn(qsTr("Class Code"), -1, Qt.AlignLeft, true, "classcode_code");\n _mfgHist.addColumn(qsTr("Description"), -1, Qt.AlignLeft, false, "classcode_descrip");\n }\n else if (_groupByMfgHist == "item")\n {\n _mfgHist.addColumn(qsTr("Item Number"), -1, Qt.AlignLeft, true, "item_number");\n _mfgHist.addColumn(qsTr("Description"), -1, Qt.AlignLeft, false, "item_descrip1");\n }\n else if (_groupByMfgHist == "plancode")\n {\n _mfgHist.addColumn(qsTr("Planner Code"), -1, Qt.AlignLeft, true, "plancode_code");\n _mfgHist.addColumn(qsTr("Description"), -1, Qt.AlignLeft, false, "plancode_descrip");\n }\n\n _mfgHist.addColumn(qsTr("Amount"), -1, Qt.AlignRight, true, "amount");\n _mfgHist.addColumn(qsTr("Qty."), -1, Qt.AlignRight, false, "qty");\n}\n\n/*! \n Launches the preferences window where the user can set sales data output preferences.\n*/\nfunction preferencesMfgHist()\n{\n params = new Object;\n params.path = "desktop/mfgHist";\n params.groupBy = _groupByMfgHist;\n params.timeFrame = _timeFrameMfgHist;\n params.type = _typeMfgHist;\n\n var newdlg = toolbox.openWindow("preferencesHistory", mainwindow,\n Qt.ApplicationModal, Qt.Dialog);\n toolbox.lastWindow().set(params);\n if (newdlg.exec())\n {\n loadPreferencesMfgHist();\n setColumnsMfgHist();\n refreshMfgHist();\n }\n}\n\n/*!\n Refreshes data if the window is visible, or the next time it becomes visible\n*/\nfunction refreshMfgHist()\n{\n _mfgHistIsDirty = true;\n fillListMfgHist();\n}\n 74 dockMfgOpen 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _dockMfgOpen;\nvar _mfgOpen;\nvar _mfgOpenIsDirty = true;\n\n/*!\n Initializes Work Order dock widget and places it in the main window.\n*/\nfunction initDockMfgOpen()\n{\n _dockMfgOpen = mainwindow.findChild("_dockMfgOpen");\n _mfgOpen = mainwindow.findChild("_mfgOpen");\n\n // Set columns on list\n _mfgOpen.addColumn(qsTr("Order#"), XTreeWidget.orderColumn, Qt.AlignLeft, true, "wonumber");\n _mfgOpen.addColumn(qsTr("Item#"), XTreeWidget.itemColumn, Qt.AlignLeft, true, "item_number");\n _mfgOpen.addColumn(qsTr("Description"), -1, Qt.AlignLeft, true, "itemdescrip");\n if (metrics.boolean("MultiWhs"))\n _mfgOpen.addColumn(qsTr("Whs."), XTreeWidget.whsColumn, Qt.AlignLeft, true, "warehous_code");\n _mfgOpen.addColumn(qsTr("Status"), XTreeWidget.moneyColumn, Qt.AlignLeft, true, "wo_status");\n _mfgOpen.addColumn(qsTr("Ordered"), XTreeWidget.qtyColumn, Qt.AlignRight, true, "wo_qtyord"); \n _mfgOpen.addColumn(qsTr("Received"), XTreeWidget.qtyColumn, Qt.AlignRight, true, "wo_qtyrcv"); \n _mfgOpen.addColumn(qsTr("UOM"), XTreeWidget.uomColumn, Qt.AlignLeft, true, "uom_name"); \n _mfgOpen.addColumn(qsTr("Start Date"), XTreeWidget.dateColumn, Qt.AlignLeft, false, "wo_startdate"); \n _mfgOpen.addColumn(qsTr("Due Date"), XTreeWidget.dateColumn, Qt.AlignLeft, true, "wo_duedate"); \n _mfgOpen.addColumn(qsTr("Condition"), XTreeWidget.statusColumn, Qt.AlignLeft, false, "condition"); \n if (privileges.check("ViewCosts"))\n {\n _mfgOpen.addColumn(qsTr("Posted Value"), XTreeWidget.moneyColumn, Qt.AlignRight, false, "wo_postedvalue");\n _mfgOpen.addColumn(qsTr("WIP Value"), XTreeWidget.moneyColumn, Qt.AlignRight, true, "wo_wipvalue");\n }\n\n // Connect Signals and Slots\n _dtTimer.timeout.connect(refreshMfgOpen);\n mainwindow.workOrdersUpdated.connect(refreshMfgOpen);\n mainwindow.workOrderMaterialsUpdated.connect(refreshMfgOpen);\n mainwindow.workOrderOperationsUpdated.connect(refreshMfgOpen);\n\n _mfgOpen.itemSelected.connect(openWindowMfgOpen);\n _mfgOpen["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuMfgOpen);\n\n _dockMfgOpen.visibilityChanged.connect(fillListMfgOpen);\n\n // Handle privilge control\n var act = _dockMfgOpen.toggleViewAction();\n\n // Don't show if no privs\n if (!privileges.check("ViewWorkOrdersDock"))\n {\n _dockMfgOpen.hide();\n act.enabled = false;\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("ViewWorkOrdersDock");\n _menuDesktop.appendAction(act);\n\n fillListMfgOpen();\n}\n\n/*!\n Fills the list with open sales data.\n*/\nfunction fillListMfgOpen()\n{\n _dockMfgOpen = mainwindow.findChild("_dockMfgOpen");\n _mfgOpen = mainwindow.findChild("_mfgOpen");\n\n if (!_dockMfgOpen.visible || !_mfgOpenIsDirty)\n return;\n\n params = new Object;\n params.open = qsTr("Open");\n params.exploded = qsTr("Exploded");\n params.released = qsTr("Released");\n params.inprocess = qsTr("In Process");\n\n _mfgOpen.populate(toolbox.executeDbQuery("desktop","mfgOpen",params), true);\n\n _mfgOpenIsDirty = false;\n}\n\n/*! \n Opens the window associated with the selected item.\n*/\nfunction openWindowMfgOpen()\n{ \n // Make sure we can open the window for this activity\n if (!privilegeCheckMfgOpen)\n return;\n\n params = new Object;\n params.wo_id = _mfgOpen.id();\n if (privileges.check("MaintainWorkOrders"))\n params.mode = "edit";\n else\n params.mode = "view";\n\n // Open the window and perform any handling required\n var wo = toolbox.openWindow("workOrder");\n wo.set(params);\n\n}\n\n/*!\n Adds actions to @a pMenu, typically from a right click on a Sales Order item.\n*/\nfunction populateMenuMfgOpen(pMenu, pItem)\n{\n var menuItem;\n var enable = privilegeCheckMfgOpen();\n\n menuItem = pMenu.addAction(_open);\n menuItem.enabled = enable;\n menuItem.triggered.connect(openWindowMfgOpen);\n}\n\n/*!\n Returns whether user has privileges to view detail on the selected Sales Order.\n*/\nfunction privilegeCheckMfgOpen()\n{\n return privileges.check("ViewWorkOrders") || \n privileges.check("MaintainWorkOrders");\n\n return false;\n}\n\n/*!\n Refreshes data if the window is visible, or the next time it becomes visible\n*/\nfunction refreshMfgOpen()\n{\n _mfgOpenIsDirty = true;\n fillListMfgOpen();\n}\n 75 dockMyAccounts 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _dockMyaccounts;\nvar _accountList;\nvar _accountListIsDirty = true;\n\n/*!\n Initializes the My Accounts dock widget and places it in the main window.\n*/\nfunction initDockAccounts()\n{\n _dockMyaccounts = mainwindow.findChild("_dockMyaccounts");\n _accountList = mainwindow.findChild("_accountList");\n\n // Set columns on list\n _accountList.addColumn(qsTr("Number"), XTreeWidget.itemColumn, Qt.AlignLeft, false, "crmacct_number");\n _accountList.addColumn(qsTr("Name"), -1, Qt.AlignLeft, true, "crmacct_name");\n _accountList.addColumn(qsTr("Contact"), -1, Qt.AlignLeft , false, "cntct_name" );\n _accountList.addColumn(qsTr("Phone"), -1, Qt.AlignLeft, false, "cntct_phone" );\n _accountList.addColumn(qsTr("Email"), -1, Qt.AlignLeft, false, "cntct_email" );\n _accountList.addColumn(qsTr("Address"), -1, Qt.AlignLeft , false, "addr_line1" );\n _accountList.addColumn(qsTr("City"), XTreeWidget.docTypeColumn, Qt.AlignLeft , false, "addr_city" );\n _accountList.addColumn(qsTr("State"), XTreeWidget.orderColumn, Qt.AlignLeft , false, "addr_state" );\n _accountList.addColumn(qsTr("Country"), XTreeWidget.orderColumn, Qt.AlignLeft , false, "addr_country" );\n _accountList.addColumn(qsTr("Postal Code"), XTreeWidget.docTypeColumn, Qt.AlignLeft , false, "addr_postalcode" );\n\n // Connect signals and slots\n mainwindow.crmAccountsUpdated.connect(refreshMyAccts);\n mainwindow.customersUpdated.connect(refreshMyAccts);\n mainwindow.vendorsUpdated.connect(refreshMyAccts);\n\n _accountList.itemSelected.connect(openWindowMyAccts);\n _accountList["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuMyAccts);\n\n _dockMyaccounts.visibilityChanged.connect(fillListMyAccts);\n\n // Handle privilge control\n var act = _dockMyaccounts.toggleViewAction();\n\n // Don't show if no privs\n if (!privileges.check("ViewMyAccountsDock"))\n {\n _dockMyaccounts.hide();\n act.enabled = false;\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("ViewMyAccountsDock");\n _menuDesktop.appendAction(act);\n\n fillListMyAccts();\n}\n\n/*!\n Fills the My Accounts list with CRM Accounts owned by the current user.\n*/\nfunction fillListMyAccts()\n{\n _dockMyaccounts = mainwindow.findChild("_dockMyaccounts");\n _accountList = mainwindow.findChild("_accountList");\n\n if (!_dockMyaccounts.visible || !_accountListIsDirty)\n return;\n\n params = new Object;\n params.owner_username = mainwindow.username();\n _accountList.populate(toolbox.executeDbQuery("desktop", "crmaccounts", params));\n\n _accountListIsDirty = false;\n}\n\n/*! \n Opens the window associated with the selected item.\n*/\nfunction openWindowMyAccts()\n{\n // Make sure we can open the window\n if (!privilegeCheckMyAccts())\n return;\n\n // Determine which contact to open\n params = new Object;\n params.crmacct_id = _accountList.id();\n if (privileges.check("MaintainAllCRMAccounts") || privileges.check("MaintainPersonalCRMAccounts"))\n params.mode = "edit"\n else\n params.mode = "view"\n\n // Open the window and perform any special handling required\n var win = toolbox.openWindow("crmaccount");\n win.set(params);\n}\n\n/*!\n Adds actions to \\a pMenu, typically from a right click on My Contacts.\n*/\nfunction populateMenuMyAccts(pMenu)\n{\n var menuItem;\n\n menuItem = pMenu.addAction(_open);\n menuItem.enabled = privilegeCheckMyAccts();\n menuItem.triggered.connect(openWindowMyAccts);\n}\n\n/*!\n Returns whether user has privileges to view My Contact detail.\n*/\nfunction privilegeCheckMyAccts()\n{\n return privileges.check("MaintainAllCRMAccounts") || privileges.check("MaintainPersonalAccounts") ||\n privileges.check("ViewAllCRMAccounts") || privileges.check("ViewPersonalCRMAccounts");\n}\n\n/*!\n Refreshes data if the window is visible, or the next time it becomes visible\n*/\nfunction refreshMyAccts()\n{\n _accountListIsDirty = true;\n fillListMyAccts();\n}\n 76 dockMyContacts 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _dockMycontacts;\nvar _contactList;\n\n/*!\n Initializes the My Contacts dock widget and places it in the main window.\n*/\nfunction initDockMyCntcts()\n{\n _dockMycontacts = mainwindow.findChild("_dockMycontacts");\n _contactList = mainwindow.findChild("_contactList");\n\n // Set columns on list\n _contactList.addColumn(qsTr("Name"), -1, Qt.AlignLeft , true, "cntct_name" );\n _contactList.addColumn(qsTr("Account#"), XTreeWidget.itemColumn, Qt.AlignLeft, false, "crmacct_number");\n _contactList.addColumn(qsTr("Account Name"), -1, Qt.AlignLeft, false, "crmacct_name");\n _contactList.addColumn(qsTr("Phone"), -1, Qt.AlignLeft, true, "cntct_phone" );\n _contactList.addColumn(qsTr("Email"), -1, Qt.AlignLeft, false, "cntct_email" );\n _contactList.addColumn(qsTr("Address"), -1, Qt.AlignLeft , false, "addr_line1" );\n _contactList.addColumn(qsTr("City"), XTreeWidget.docTypeColumn, Qt.AlignLeft , false, "addr_city" );\n _contactList.addColumn(qsTr("State"), XTreeWidget.orderColumn, Qt.AlignLeft , false, "addr_state" );\n _contactList.addColumn(qsTr("Country"), XTreeWidget.orderColumn, Qt.AlignLeft , false, "addr_country" );\n _contactList.addColumn(qsTr("Postal Code"), XTreeWidget.docTypeColumn, Qt.AlignLeft , false, "addr_postalcode" );\n\n _dtTimer.timeout.connect(fillListMyCntcts);\n\n _contactList.itemSelected.connect(openWindowMyCntcts);\n _contactList["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuMyCntcts);\n\n _dockMycontacts.visibilityChanged.connect(fillListMyCntcts);\n\n // Handle privilge control\n var act = _dockMycontacts.toggleViewAction();\n\n // Don't show if no privs\n if (!privileges.check("ViewMyContactsDock"))\n {\n _dockMycontacts.hide();\n act.enabled = false;\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("ViewMyContactsDock");\n _menuDesktop.appendAction(act);\n\n fillListMyCntcts();\n}\n\n/*!\n Fills the My Contacts list with Contacts owned by the current user.\n*/\nfunction fillListMyCntcts()\n{\n _dockMycontacts = mainwindow.findChild("_dockMycontacts");\n _contactList = mainwindow.findChild("_contactList");\n\n if (!_dockMycontacts.visible)\n return;\n\n _contactList = mainwindow.findChild("_contactList");\n _contactList.populate(toolbox.executeDbQuery("desktop", "contacts"));\n}\n\n/*! \n Opens the window associated with the selected item.\n*/\nfunction openWindowMyCntcts()\n{\n // Make sure we can open the window\n if (!privilegeCheckMyCntcts())\n return;\n\n // Determine which contact to open\n params = new Object;\n if (privileges.check("MaintainAllContacts") || privileges.check("MaintainPersonalContacts"))\n params.mode = "edit";\n else\n params.mode = "view";\n params.cntct_id = _contactList.id();\n\n // Open the window and perform any special handling required\n var newdlg = toolbox.openWindow("contact");\n newdlg.set(params);\n newdlg.exec();\n}\n\n/*!\n Adds actions to \\a pMenu, typically from a right click on My Contacts.\n*/\nfunction populateMenuMyCntcts(pMenu)\n{\n var menuItem;\n\n menuItem = pMenu.addAction(_open);\n menuItem.enabled = privilegeCheckMyCntcts();\n menuItem.triggered.connect(openWindowMyCntcts);\n}\n\n/*!\n Returns whether user has privileges to view My Contact detail.\n*/\nfunction privilegeCheckMyCntcts()\n{\n return privileges.check("MaintainAllContacts") || privileges.check("MaintainPersonalContacts") ||\n privileges.check("ViewAllContacts") || privileges.check("ViewPersonalContacts");\n}\n 77 dockMyTodo 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _dockMytodo;\nvar _todoList;\n\n/*!\n Initializes To Do dock widget and places it in the main window.\n*/\nfunction initDockTodo()\n{\n _dockMytodo = mainwindow.findChild("_dockMytodo");\n _todoList = mainwindow.findChild("_todoList");\n\n if (_todoList)\n {\n // Set columns on list\n _todoList.addColumn(qsTr("Type"), XTreeWidget.userColumn, Qt.AlignCenter, true, "type");\n _todoList.addColumn(qsTr("Priority"), XTreeWidget.userColumn, Qt.AlignLeft, false, "priority");\n _todoList.addColumn(qsTr("Assigned To"), XTreeWidget.userColumn, Qt.AlignLeft, false, "usr");\n _todoList.addColumn(qsTr("Name"), -1, Qt.AlignLeft, true, "name");\n _todoList.addColumn(qsTr("Description"), -1, Qt.AlignLeft, true, "descrip");\n _todoList.addColumn(qsTr("Status"), XTreeWidget.statusColumn, Qt.AlignLeft, false, "status");\n _todoList.addColumn(qsTr("Start Date"), XTreeWidget.dateColumn, Qt.AlignLeft, true, "start");\n _todoList.addColumn(qsTr("Due Date"), XTreeWidget.dateColumn, Qt.AlignLeft, true, "due");\n _todoList.addColumn(qsTr("Parent#"), XTreeWidget.orderColumn, Qt.AlignLeft, false, "number");\n _todoList.addColumn(qsTr("Customer#"), XTreeWidget.orderColumn, Qt.AlignLeft, false, "cust");\n _todoList.addColumn(qsTr("Account#"), XTreeWidget.orderColumn, Qt.AlignLeft, true, "crmacct_number");\n _todoList.addColumn(qsTr("Account Name"), 100, Qt.AlignLeft, false, "crmacct_name");\n _todoList.addColumn(qsTr("Owner"), XTreeWidget.userColumn, Qt.AlignLeft, false,"owner");\n\n _todoList.itemSelected.connect(openWindowToDo);\n _todoList["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuToDo);\n }\n\n\n // Connect signals and slots\n _dtTimer.timeout.connect(fillListSalesAct);\n\n if (_dockMytodo)\n {\n _dockMytodo.visibilityChanged.connect(fillListToDo);\n\n // Handle privilge control\n var act = _dockMytodo.toggleViewAction();\n\n // Don't show if no privs\n if (!privileges.check("ViewTodoDock"))\n {\n _dockMytodo.hide();\n act.enabled = false;\n }\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("ViewTodoDock");\n _menuDesktop.appendAction(act);\n\n fillListToDo();\n}\n\n/*!\n Deletes the selected To Do item.\n*/\nfunction deleteToDo()\n{\n var answer = QMessageBox.question(mainwindow,\n qsTr("Delete To Do?"),\n qsTr("This will permenantly delete the To Do item. Are you sure?"),\n QMessageBox.Yes | QMessageBox.No,\n QMessageBox.Yes);\n if(answer == QMessageBox.No)\n return;\n\n params = new Object;\n params.todoitem_id = _todoList.id();\n\n toolbox.executeDbQuery("desktop","todoDelete", params);\n fillListToDo();\n}\n\n/*!\n Fills the To Do list with CRM activities owned by or assigned to the current user.\n*/\nfunction fillListToDo()\n{\n _dockMytodo = mainwindow.findChild("_dockMytodo");\n _todoList = mainwindow.findChild("_todoList");\n\n if (!_dockMytodo || !_dockMytodo.visible || !_todoList)\n return;\n\n params = new Object;\n params.todo = qsTr("To-do");\n params.incident = qsTr("Incident");\n params.task = qsTr("Task");\n params.project = qsTr("Project");\n params.todoList = true;\n params.incidents = true;\n params.projects = true;\n params.assigned_username = mainwindow.username();\n params.owner_username = mainwindow.username();\n _todoList = mainwindow.findChild("_todoList");\n _todoList.populate(toolbox.executeDbQuery("desktop", "todoList", params), true);\n}\n\n/*! \n Opens the window associated with the selected item.\n*/\nfunction openWindowToDo()\n{\n params = new Object;\n actId = _todoList.altId();\n act = toDoAct(actId);\n\n // Make sure we can open the window\n if (!privilegeCheckToDo(act))\n return;\n\n // Determine which window to open\n if (act == "D") // To Do\n {\n ui = "todoItem";\n if (privileges.check("MaintainAllToDoItems") || privileges.check("MaintainPersonalToDoItems"))\n params.mode = "edit";\n else\n params.mode = "view";\n params.todoitem_id = _todoList.id();\n }\n else if (act == "I")\n {\n ui = "incident";\n if (privileges.check("MaintainAllIncidents") || privileges.check("MaintainPersonalIncidents"))\n params.mode = "edit";\n else\n params.mode = "view";\n params.incdt_id = _todoList.id();\n }\n else if (act == "T")\n {\n ui = "task";\n if (privileges.check("MaintainAllProjects") || privileges.check("MaintainPersonalProjects"))\n params.mode = "edit";\n else\n params.mode = "view"\n params.prjtask_id = _todoList.id();\n }\n else if (act == "P")\n {\n ui = "project";\n if (privileges.check("MaintainAllProjects") || privileges.check("MaintainPersonalProjects"))\n params.mode = "edit";\n else\n params.mode = "view";\n params.prj_id = _todoList.id();\n }\n\n // Open the window and perform any special handling required\n var newdlg = toolbox.openWindow(ui);\n newdlg.set(params);\n newdlg.exec()\n}\n\nfunction toDoAct(actId)\n{\n if (actId == 1)\n return "D";\n else if (actId == 2)\n return "I";\n else if (actId == 3)\n return "T";\n else if (actId == 4)\n return "P"\n\n return "";\n}\n\n/*!\n Adds actions to \\a pMenu, typically from a right click on My Contacts.\n*/\nfunction populateMenuToDo(pMenu)\n{\n var act = toDoAct(_todoList.altId());\n var menuItem;\n\n menuItem = pMenu.addAction(_open);\n menuItem.enabled = privilegeCheckToDo(act);\n \n menuItem.triggered.connect(openWindowToDo);\n\n if (act == "D")\n {\n menuItem = pMenu.addAction(qsTr("Delete"));\n menuItem.enabled = privileges.check("MaintainAllToDoItems") || \n privileges.check("MaintainPersonalToDoItems");\n menuItem.triggered.connect(deleteToDo);\n }\n}\n\n/*!\n Returns whether user has privileges to view My Contact detail.\n*/\nfunction privilegeCheckToDo(act)\n{\n if (act == "D") // To Do list\n return privileges.check("MaintainAllToDoItems") || privileges.check("MaintainPersonalToDoItems") ||\n privileges.check("ViewAllToDoItems") || privileges.check("ViewPersonalToDoItems");\n else if (act == "I") // Incidents\n return privileges.check("MaintainAllIncidents") || privileges.check("MaintainPersonalIncidents") ||\n privileges.check("ViewAllIncidents") || privileges.check("ViewPersonalIncidents");\n else if (act == "P" || act == "T") // Projects and Tasks\n return privileges.check("MaintainAllProjects") || privileges.check("MaintainPersonalProjects") ||\n privileges.check("ViewAllProjects") || privileges.check("ViewPersonalProjects");\n\n return false;\n}\n\n 78 dockPayables 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _dockPayables;\nvar _payables;\nvar _payablesIsDirty = true;\n\n/*!\n Initializes Bank Balance dock widget and places it in the main window.\n*/\nfunction initDockPayables()\n{\n _dockPayables = mainwindow.findChild("_dockPayables");\n _ap = mainwindow.findChild("_ap");\n _ap.rootIsDecorated = false;\n\n // Set columns on list\n _ap.addColumn(qsTr("Status"), -1, Qt.AlignLeft, true);\n _ap.addColumn(qsTr("Balance"), -1, Qt.AlignRight, true);\n\n // Connect Signals and Slots\n _dtTimer.timeout.connect(refreshPayables);\n mainwindow.checksUpdated.connect(refreshPayables);\n mainwindow.paymentsUpdated.connect(refreshPayables);\n mainwindow.vouchersUpdated.connect(refreshPayables);\n\n _ap.itemSelected.connect(openWindowPayables);\n _ap["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuPayables);\n\n _dockPayables.visibilityChanged.connect(fillListPayables);\n\n // Handle privilge control\n var act = _dockPayables.toggleViewAction();\n\n // Don't show if no privs\n if (!privileges.check("ViewPayablesDock"))\n {\n _dockPayables.hide();\n act.enabled = false;\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("ViewPayablesDock");\n _menuDesktop.appendAction(act);\n\n fillListPayables();\n}\n\n/*!\n Fills the list with bank account data.\n*/\nfunction fillListPayables()\n{\n _dockPayables = mainwindow.findChild("_dockPayables");\n _ap = mainwindow.findChild("_ap");\n\n if (!_dockPayables.visible || !_payablesIsDirty)\n return;\n\n var q = toolbox.executeDbQuery("desktop","payables");\n q.first();\n \n _ap.clear();\n var item1 = new XTreeWidgetItem(_ap, 0, qsTr("0+ Days"), q.value("cur_val"));\n var item2 = new XTreeWidgetItem(_ap, 1, qsTr("0-30 Days"), q.value("thirty_val"));\n var item3 = new XTreeWidgetItem(_ap, 2, qsTr("31-60 Days"), q.value("sixty_val"));\n var item4 = new XTreeWidgetItem(_ap, 3, qsTr("61-90 Days"), q.value("ninety_val"));\n var item5 = new XTreeWidgetItem(_ap, 4, qsTr("90+ days"), q.value("plus_val"));\n var item6 = new XTreeWidgetItem(_ap, 5, qsTr("Total Open"), q.value("total_val"));\n\n _payablesIsDirty = false;\n}\n\n/*! \n Opens the window associated with the selected item.\n*/\nfunction openWindowPayables()\n{\n // Make sure we can open the window\n if (!privilegeCheckPayables())\n return;\n\n var params = new Object;\n params.run = true;\n\n var asOfDate = mainwindow.dbDate();\n var startDate = new Date();\n var endDate = new Date();\n\n // Open the window and perform any handling required\n toolbox.openWindow("dspAPOpenItemsByVendor");\n\n if (_ap.id() == 0)\n {\n startDate.setDate(asOfDate.getDate());\n toolbox.lastWindow().findChild("_dates").setStartDate(startDate);\n }\n else if (_ap.id() == 1)\n {\n startDate.setDate(asOfDate.getDate() -30);\n endDate.setDate(asOfDate.getDate() -1);\n toolbox.lastWindow().findChild("_dates").setStartDate(startDate);\n toolbox.lastWindow().findChild("_dates").setEndDate(endDate);\n }\n else if (_ap.id() == 2)\n {\n startDate.setDate(asOfDate.getDate() -60);\n endDate.setDate(asOfDate.getDate() -31);\n toolbox.lastWindow().findChild("_dates").setStartDate(startDate);\n toolbox.lastWindow().findChild("_dates").setEndDate(endDate);\n }\n else if (_ap.id() == 3)\n {\n startDate.setDate(asOfDate.getDate() -90);\n endDate.setDate(asOfDate.getDate() -61);\n toolbox.lastWindow().findChild("_dates").setStartDate(startDate);\n toolbox.lastWindow().findChild("_dates").setEndDate(endDate);\n }\n else if (_ap.id() == 4)\n {\n endDate.setDate(asOfDate.getDate() -91);\n toolbox.lastWindow().findChild("_dates").setEndDate(endDate);\n }\n\n toolbox.lastWindow().set(params);\n}\n\n/*!\n Adds actions to @a pMenu, typically from a right click on a bank account item.\n*/\nfunction populateMenuPayables(pMenu, pItem)\n{\n var menuItem;\n var enable = privilegeCheckPayables();\n\n menuItem = pMenu.addAction(_open);\n menuItem.enabled = enable;\n menuItem.triggered.connect(openWindowPayables);\n}\n\n/*!\n Returns whether user has privileges to view detail.\n*/\nfunction privilegeCheckPayables(act)\n{\n return privileges.check("ViewAPOpenItems");\n}\n\n/*!\n Refreshes data if the window is visible, or the next time it becomes visible\n*/\nfunction refreshPayables()\n{\n _payablesIsDirty = true;\n fillListPayables();\n}\n 79 dockPurchActive 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _dockPurchAct;\nvar _purchAct;\nvar _purchActIsDirty = true;\n\n/*!\n Initializes Purch Activity dock widget and places it in the main window.\n*/\nfunction initDockPurchAct()\n{\n _dockPurchAct = mainwindow.findChild("_dockPurchAct");\n _purchAct = mainwindow.findChild("_purchAct");\n\n // Set columns on list\n _purchAct.addColumn(qsTr("Type"), -1, Qt.AlignLeft, true, "activity");\n _purchAct.addColumn(qsTr("#"), 40, Qt.AlignRight, true, "count");\n _purchAct.addColumn(qsTr("Amount"), -1, Qt.AlignRight, true, "amount");\n\n // Connect Signals and Slots\n _dtTimer.timeout.connect(refreshPurchAct);\n mainwindow.purchaseOrdersUpdated.connect(refreshPurchAct);\n mainwindow.purchaseOrderReceiptsUpdated.connect(refreshPurchAct);\n mainwindow.purchaseRequestsUpdated.connect(refreshPurchAct);\n mainwindow.vouchersUpdated.connect(refreshPurchAct);\n\n _purchAct.itemSelected.connect(openWindowPurchAct);\n _purchAct["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuPurchAct);\n\n _dockPurchAct.visibilityChanged.connect(fillListPurchAct);\n\n // Handle privilge control\n var act = _dockPurchAct.toggleViewAction();\n\n // Don't show if no privs\n if (!privileges.check("ViewPurchaseActivitiesDock"))\n {\n _dockPurchAct.hide();\n act.enabled = false;\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("ViewPurchaseActivitiesDock");\n _menuDesktop.appendAction(act);\n\n fillListPurchAct();\n}\n\n/*!\n Fills the list with active Purch data.\n*/\nfunction fillListPurchAct()\n{\n _dockPurchAct = mainwindow.findChild("_dockPurchAct");\n _purchAct = mainwindow.findChild("_purchAct");\n\n if (!_dockPurchAct.visible || !_purchActIsDirty)\n return;\n\n var params = new Object;\n if (metrics.value("Application") != "PostBooks")\n {\n params.planned = qsTr("Planned");\n params.firmed = qsTr("Firmed");\n }\n params.request = qsTr("Requests");\n params.unreleased = qsTr("Unreleased");\n params.open = qsTr("Open");\n params.receiving = qsTr("At Receiving");\n params.received = qsTr("Received");\n params.vouchered = qsTr("Vouchered");\n\n _purchAct.populate(toolbox.executeDbQuery("desktop","purchAct", params));\n\n _purchActIsDirty = false;\n}\n\n/*! \n Opens the window associated with the selected item.\n*/\nfunction openWindowPurchAct()\n{\n var ui;\n var run = false;\n var act = _purchAct.currentItem().rawValue("activity");\n \n // Make sure we can open the window for this activity\n if (!privilegeCheckPurchAct(act))\n return;\n\n // Determine which window to open\n if (act == "L")\n ui = "dspPlannedOrders";\n else if (act == "Q")\n ui = "dspPurchaseReqsByPlannerCode";\n else if (act == "U" || act == "O")\n ui = "unpostedPurchaseOrders";\n else if (act == "A")\n ui = "unpostedPoReceipts";\n else if (act == "V")\n ui = "dspUninvoicedReceivings";\n else if (act == "I")\n ui = "openVouchers";\n\n // Open the window and perform any handling required\n toolbox.openWindow(ui);\n if (act == "L")\n {\n// toolbox.lastWindow().findChild("_purchase").forgetful = true;\n// toolbox.lastWindow().findChild("_manufacture").forgetful = true;\n// toolbox.lastWindow().findChild("_transfer").forgetful = true;\n// toolbox.lastWindow().findChild("_purchase").checked = true;\n// toolbox.lastWindow().findChild("_manufacture").checked = false;\n// toolbox.lastWindow().findChild("_transfer").checked = false;\n var params = new Object();\n params.type = "P";\n toolbox.lastWindow().set(params);\n toolbox.lastWindow().sFillList();\n }\n if (act == "U" || act == "O") // Set options for open P/O list\n {\n var showUnreleased = toolbox.lastWindow().findChild("_showUnreleased");\n var showOpen = toolbox.lastWindow().findChild("_showOpen");\n showUnreleased.forgetful = true;\n showOpen.forgetful = true;\n if (act == "U")\n {\n showUnreleased.checked = true;\n showOpen.checked = false;\n }\n else\n {\n showUnreleased.checked = false;\n showOpen.checked = true;\n }\n toolbox.lastWindow().sFillList();\n }\n else if (act == "Q" || act == "V") \n {\n toolbox.lastWindow().findChild("_warehouse").setAll();\n toolbox.lastWindow().sFillList();\n }\n}\n\n/*!\n Adds actions to @a pMenu, typically from a right click on a Purch Activity item.\n*/\nfunction populateMenuPurchAct(pMenu, pItem)\n{\n var menuItem;\n var act = pItem.rawValue("activity");\n var enable = privilegeCheckPurchAct(act);\n\n menuItem = pMenu.addAction(_open);\n menuItem.enabled = enable;\n menuItem.triggered.connect(openWindowPurchAct);\n}\n\n/*!\n Returns whether user has privileges to view detail on the selected Purch Activity.\n*/\nfunction privilegeCheckPurchAct(act)\n{\n if (act == "L") // Planned Orders\n return privileges.check("ViewPlannedOrders");\n else if (act == "Q") // Purchase Requests\n return privileges.check("ViewPurchaseRequests");\n else if (act == "U" || act == "O") // Purchase Orders\n return privileges.check("ViewPurchaseOrders") || \n privileges.check("MaintainPurchaseOrders");\n else if (act == "A") // At Receiving\n return privileges.check("EnterReceipts");\n else if (act == "V") // Unvouchered Receipts\n return privileges.check("ViewUninvoicedReceipts") || \n privileges.check("MaintainUninvoicedReceipts");\n else if (act == "I") // Unposted Vouchers\n return privileges.check("ViewVouchers") || \n privileges.check("MaintainVouchers");\n\n return false;\n}\n\n/*!\n Refreshes data if the window is visible, or the next time it becomes visible\n*/\nfunction refreshPurchAct()\n{\n _purchActIsDirty = true;\n fillListPurchAct();\n}\n 80 dockPurchHist 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _b1PurchHist;\nvar _b2PurchHist;\nvar _dockPurchHist;\nvar _groupByPurchHist;\nvar _timeFramePurchHist;\nvar _typePurchHist;\nvar _labelPurchHist;\nvar _purchHist;\nvar _purchHistIsDirty = true;\n\n/*!\n Initializes Sales History dock widget and places it in the main window.\n*/\nfunction initDockPurchHist()\n{\n // Set up objects\n _dockPurchHist = mainwindow.findChild("_dockPurchHist");\n _purchHist = mainwindow.findChild("_purchHist");\n\n _b1PurchHist = _dockPurchHist.findChild("_button1");\n _b2PurchHist = _dockPurchHist.findChild("_button2");\n _labelPurchHist = _dockPurchHist.findChild("_label");\n\n // Set icons\n var iReload = new QIcon;\n iReload.addDbImage("reload_16");\n _b1PurchHist.icon = iReload;\n _b1PurchHist.text = "";\n _b1PurchHist.toolTip = qsTr("Reload");\n\n var iGear = new QIcon();\n iGear.addDbImage("gear_16");\n _b2PurchHist.icon = iGear;\n _b2PurchHist.text = "";\n _b2PurchHist.toolTip = qsTr("Preferences...");\n\n // Load local preferences\n loadPreferencesPurchHist();\n\n // Set columns on list\n setColumnsPurchHist();\n\n // Connect Signals and Slots\n _b1PurchHist.clicked.connect(refreshPurchHist);\n _b2PurchHist.clicked.connect(preferencesPurchHist);\n\n _dtTimer.timeout.connect(refreshPurchHist);\n mainwindow.purchaseOrderReceiptsUpdated.connect(refreshPurchHist);\n mainwindow.vouchersUpdated.connect(refreshPurchHist);\n\n _purchHist.itemSelected.connect(openWindowPurchHist);\n _purchHist["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuPurchHist);\n\n _dockPurchHist.visibilityChanged.connect(fillListPurchHist);\n\n // Handle privilge control\n var act = _dockPurchHist.toggleViewAction();\n\n // Don't show if no privs\n if (!privileges.check("ViewPurchaseHistoryDock"))\n {\n _dockPurchHist.hide();\n act.enabled = false;\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("ViewPurchaseHistoryDock");\n _menuDesktop.appendAction(act);\n\n fillListPurchHist();\n}\n\n/*!\n Fills the list with sales history data based on parameters determined by\n sales history preferences.\n\n @sa preferencesPurchHist()\n*/\nfunction fillListPurchHist()\n{\n _dockPurchHist = mainwindow.findChild("_dockPurchHist");\n _purchHist = mainwindow.findChild("_purchHist");\n\n if (!_dockPurchHist.visible || !_purchHistIsDirty) \n return;\n\n var timeFrame;\n var type;\n var params = getDatesPurchHist();\n params.nonInv = qsTr("Non-Inventory");\n\n if (_typePurchHist == "variances")\n params.variances = true;\n else\n params.receipts = true;\n \n if (_groupByPurchHist == "vend")\n {\n params.group_id = "vend_id";\n params.group_number = "vend_number";\n params.group_name = "vend_name";\n }\n else if (_groupByPurchHist == "item")\n {\n params.group_id = "item_id";\n params.group_number = "item_number";\n params.group_name = "item_descrip1";\n }\n else if (_groupByPurchHist == "agent")\n {\n params.group_id = "1";\n params.group_number = "pohead_agent_username";\n params.group_name = "usr_propername";\n }\n\n _purchHist.populate(toolbox.executeDbQuery("desktop","purchHist", params));\n\n if ("variances" in params)\n type = qsTr("Variances");\n else\n type = qsTr("Receipts");\n\n if (_timeFramePurchHist == "day")\n timeFrame = qsTr("Today");\n else if (_timeFramePurchHist == "week")\n timeFrame = qsTr("this Week");\n else if (_timeFramePurchHist == "month")\n timeFrame = qsTr("this Month");\n else if (_timeFramePurchHist == "year")\n timeFrame = qsTr("this Year");\n\n _labelPurchHist.text = type + " " + timeFrame;\n\n _purchHistIsDirty = false;\n}\n\n/*!\n Returns an object with a list containing @a startDate and @a endDate\n that is used for fetching data and opening windows using the date range\n stored in local preferences.\n \n @sa preferencesPurchHist()\n @sa openWindowPurchHist()\n @sa fillListPurchHist()\n*/\nfunction getDatesPurchHist()\n{\n var params = new Object;\n\n params.timeFrame = _timeFramePurchHist;\n params.interval = "1 " + _timeFramePurchHist;\n\n var q = toolbox.executeDbQuery("desktop", "getDates", params);\n\n if (q.first())\n {\n params.startDate = q.value("startDate");\n params.endDate = q.value("endDate");\n }\n\n return params;\n}\n\n/*! \n Loads local Sales History preferences into memory.\n\n @sa preferencesPurchHist()\n*/\nfunction loadPreferencesPurchHist()\n{\n // Load preferences\n _groupByPurchHist = preferences.value("desktop/purchHist/groupBy");\n _timeFramePurchHist = preferences.value("desktop/purchHist/timeFrame");\n _typePurchHist = preferences.value("desktop/purchHist/type")\n \n // Set to defaults if no values\n _groupByPurchHist = (_groupByPurchHist.length ? _groupByPurchHist : "vend");\n _timeFramePurchHist = (_timeFramePurchHist.length ? _timeFramePurchHist : "year");\n _typePurchHist = (_typePurchHist.length ? _typePurchHist : "receipts");\n}\n\n/*! \n Opens the window associated with the selected item.\n*/\nfunction openWindowPurchHist()\n{\n var ui;\n var params = getDatesPurchHist();\n params.run = true;\n\n // TO DO: Work it out so totals launch a window too\n if (_purchHist.id() == -1)\n return;\n \n // Make sure we can open the window\n if (!privilegeCheckPurchHist())\n return;\n\n // Determine which window to open\n if (_groupByPurchHist == "vend")\n {\n if (_typePurchHist == "variances")\n ui = "dspPoPriceVariancesByVendor";\n else\n ui = "dspPoItemReceivingsByVendor";\n params.cust_id = _purchHist.id();\n }\n else if (_groupByPurchHist == "item")\n {\n if (_purchHist.id() == -2)\n {\n QMessageBox.warning(mainwindow, qsTr("Unsupported Action"),\n qsTr("Drill down on Non-Inventory Items is not yet supported"));\n return;\n }\n if (_typePurchHist == "variances")\n ui = "dspPoPriceVariancesByItem";\n else\n ui = "dspPoItemReceivingsByItem";\n params.prodcat_id = _purchHist.id();\n }\n else if (_groupByPurchHist == "agent")\n {\n if (_typePurchHist == "variances")\n ui = "dspPoPriceVariancesByVendor";\n else\n ui = "dspPoItemReceivingsByDate";\n params.salesrep_id = _purchHist.id();\n }\n\n // Open the window and perform any special handling required\n toolbox.openWindow(ui);\n var warehouse = toolbox.lastWindow().findChild("_warehouse");\n warehouse.setAll();\n if (_typePurchHist == "receipts")\n {\n toolbox.lastWindow().findChild("_showUnvouchered").forgetful = true;\n toolbox.lastWindow().findChild("_showUnvouchered").checked = true; \n }\n if (_groupByPurchHist == "vend")\n {\n if (_typePurchHist == "variances")\n toolbox.lastWindow().findChild("_vendorGroup").setVendId(_purchHist.id());\n else\n toolbox.lastWindow().findChild("_vendor").setId(_purchHist.id());\n }\n else if (_groupByPurchHist == "item")\n toolbox.lastWindow().findChild("_item").setId(_purchHist.id()); \n else if (_groupByPurchHist == "agent")\n {\n toolbox.lastWindow().findChild("_selectedPurchasingAgent").checked = true;\n toolbox.lastWindow().findChild("_agent").code = \n _purchHist.currentItem().rawValue("pohead_agent_username")\n }\n\n var dates = toolbox.lastWindow().findChild("_dates");\n dates.setStartDate(params.startDate);\n dates.setEndDate(params.endDate);\n toolbox.lastWindow().sFillList();\n}\n\n/*!\n Adds actions to @a pMenu, typically from a right click on sales history.\n*/\nfunction populateMenuPurchHist(pMenu)\n{\n var menuItem;\n var enable = privilegeCheckPurchHist();\n\n menuItem = pMenu.addAction(_open);\n menuItem.enabled = enable;\n menuItem.triggered.connect(openWindowPurchHist);\n}\n\n/*!\n Returns whether user has privileges to view Sales History detail.\n*/\nfunction privilegeCheckPurchHist()\n{\n if (_typePurchHist == "variances")\n return privileges.check("ViewVendorPerformance");\n else if (_typePurchHist == "receipts")\n return privileges.check("ViewReceiptsReturns");\n \n return false;\n}\n\n/*! \n Set up columns depending on local preferences.\n\n @sa preferencesPurchHist()\n*/\nfunction setColumnsPurchHist()\n{\n _purchHist.columnCount = 0;\n\n if (_groupByPurchHist == "vend")\n {\n _purchHist.addColumn(qsTr("Vendor"), -1, Qt.AlignLeft, true, "vend_number");\n _purchHist.addColumn(qsTr("Name"), -1, Qt.AlignLeft, false, "vend_name");\n }\n else if (_groupByPurchHist == "item")\n {\n _purchHist.addColumn(qsTr("Item Number"), -1, Qt.AlignLeft, true, "item_number");\n _purchHist.addColumn(qsTr("Description"), -1, Qt.AlignLeft, false, "item_descrip1");\n }\n else if (_groupByPurchHist == "agent")\n {\n _purchHist.addColumn(qsTr("Purch. Agent"), -1, Qt.AlignLeft, true, "pohead_agent_username");\n _purchHist.addColumn(qsTr("Name"), -1, Qt.AlignLeft, false, "usr_propername");\n }\n\n _purchHist.addColumn(qsTr("Amount"), -1, Qt.AlignRight, true, "amount");\n _purchHist.addColumn(qsTr("Qty."), -1, Qt.AlignRight, false, "qty");\n}\n\n/*! \n Launches the preferences window where the user can set sales data output preferences.\n*/\nfunction preferencesPurchHist()\n{\n params = new Object;\n params.path = "desktop/purchHist";\n params.groupBy = _groupByPurchHist;\n params.timeFrame = _timeFramePurchHist;\n params.type = _typePurchHist;\n\n var newdlg = toolbox.openWindow("preferencesHistory", mainwindow,\n Qt.ApplicationModal, Qt.Dialog);\n toolbox.lastWindow().set(params);\n if (newdlg.exec())\n {\n loadPreferencesPurchHist();\n setColumnsPurchHist();\n refreshPurchHist();\n }\n}\n\n/*!\n Refreshes data if the window is visible, or the next time it becomes visible\n*/\nfunction refreshPurchHist()\n{\n _purchHistIsDirty = true;\n fillListPurchHist();\n}\n 85 dockSalesOpen 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _dockSalesOpen;\nvar _salesOpen;\nvar _salesOpenIsDirty = true;\n\n/*!\n Initializes Open Sales Order dock widget and places it in the main window.\n*/\nfunction initDockSalesOpen()\n{\n _dockSalesOpen = mainwindow.findChild("_dockSalesOpen");\n _salesOpen = mainwindow.findChild("_salesOpen");\n\n // Set columns on list\n _salesOpen.addColumn(qsTr("Order#"), XTreeWidget.orderColumn, Qt.AlignLeft, true, "cohead_number");\n _salesOpen.addColumn(qsTr("Customer#"), XTreeWidget.orderColumn, Qt.AlignLeft, true, "cust_number");\n _salesOpen.addColumn(qsTr("Bill To"), -1, Qt.AlignLeft, true, "cohead_billtoname");\n _salesOpen.addColumn(qsTr("Bill Contact"), -1, Qt.AlignLeft, false, "billto_cntct");\n _salesOpen.addColumn(qsTr("Bill Phone"), -1, Qt.AlignLeft, false, "cohead_billto_cntct_phone"); \n _salesOpen.addColumn(qsTr("Ship To"), -1, Qt.AlignLeft, true, "cohead_shiptoname");\n _salesOpen.addColumn(qsTr("Ship Contact"), -1, Qt.AlignLeft, false, "shipto_cntct");\n _salesOpen.addColumn(qsTr("Ship Phone"), -1, Qt.AlignLeft, false, "cohead_shipto_cntct_phone");\n _salesOpen.addColumn(qsTr("Ship Via"), -1, Qt.AlignLeft, true, "cohead_shipvia"); \n _salesOpen.addColumn(qsTr("Sched. Date"), XTreeWidget.dateColumn, Qt.AlignLeft, true, "scheddate");\n _salesOpen.addColumn(qsTr("Amount"), XTreeWidget.moneyColumn, Qt.AlignRight, true, "amount");\n\n // Connect Signals and Slots\n _dtTimer.timeout.connect(refreshSalesOpen);\n mainwindow.invoicesUpdated.connect(refreshSalesOpen);\n mainwindow.salesOrdersUpdated.connect(refreshSalesOpen);\n\n _salesOpen.itemSelected.connect(openWindowSalesOpen);\n _salesOpen["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuSalesOpen);\n\n _dockSalesOpen.visibilityChanged.connect(fillListSalesOpen);\n\n // Handle privilge control\n var act = _dockSalesOpen.toggleViewAction();\n\n // Don't show if no privs\n if (!privileges.check("ViewSalesOrdersDock"))\n {\n _dockSalesOpen.hide();\n act.enabled = false;\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("ViewSalesOrdersDock");\n _menuDesktop.appendAction(act);\n\n fillListSalesOpen();\n}\n\n/*!\n Fills the list with open sales data.\n*/\nfunction fillListSalesOpen()\n{\n _dockSalesOpen = mainwindow.findChild("_dockSalesOpen");\n _salesOpen = mainwindow.findChild("_salesOpen");\n\n if (!_dockSalesOpen.visible || !_salesOpenIsDirty)\n return;\n\n _salesOpen.populate(toolbox.executeDbQuery("desktop","salesOpen"));\n\n _salesOpenIsDirty = false;\n}\n\n/*! \n Opens the window associated with the selected item.\n*/\nfunction openWindowSalesOpen()\n{ \n // Make sure we can open the window for this activity\n if (!privilegeCheckSalesOpen)\n return;\n\n params = new Object;\n params.sohead_id = _salesOpen.id();\n if (privileges.check("MaintainSalesOrders"))\n params.mode = "edit";\n else\n params.mode = "view";\n\n // Open the window and perform any handling required\n var so = toolbox.openWindow("salesOrder");\n so.set(params);\n\n}\n\n/*!\n Adds actions to @a pMenu, typically from a right click on a Sales Order item.\n*/\nfunction populateMenuSalesOpen(pMenu, pItem)\n{\n var menuItem;\n var enable = privilegeCheckSalesOpen();\n\n menuItem = pMenu.addAction(_open);\n menuItem.enabled = enable;\n menuItem.triggered.connect(openWindowSalesOpen);\n}\n\n/*!\n Returns whether user has privileges to view detail on the selected Sales Order.\n*/\nfunction privilegeCheckSalesOpen()\n{\n return privileges.check("ViewSalesOrders") || \n privileges.check("MaintainSalesOrders");\n\n return false;\n}\n\n/*!\n Refreshes data if the window is visible, or the next time it becomes visible\n*/\nfunction refreshSalesOpen()\n{\n _salesOpenIsDirty = true;\n fillListSalesOpen();\n}\n 86 dockUserOnline 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _dockUserOnline;\nvar _userOnline;\nvar _userOnlineIsDirty = true;\n\n/*!\n Initializes Open Sales Order dock widget and places it in the main window.\n*/\nfunction initDockUserOnline()\n{\n _dockUserOnline = mainwindow.findChild("_dockUserOnline");\n _userOnline = mainwindow.findChild("_userOnline");\n\n // Set columns on list\n _userOnline.addColumn(qsTr("Username"), -1, Qt.AlignLeft, true, "usr_username");\n _userOnline.addColumn(qsTr("Proper Name"), -1, Qt.AlignLeft, true, "usr_propername");\n _userOnline.addColumn(qsTr("Email"), -1, Qt.AlignLeft, true, "usr_email");\n _userOnline.addColumn(qsTr("# Internal"), -1, Qt.AlignLeft, true, "cnt_internal");\n _userOnline.addColumn(qsTr("# External"), -1, Qt.AlignLeft, true, "cnt_external");\n _userOnline.addColumn(qsTr("Client Start"), XTreeWidget.timeDateColumn, Qt.AlignLeft, true, "client_start"); \n _userOnline.addColumn(qsTr("Query Start"), XTreeWidget.timeDateColumn, Qt.AlignLeft, true, "query_start");\n _userOnline.addColumn(qsTr("Client Address"), -1, Qt.AlignLeft, true, "client_addr");\n\n // Connect Signals and Slots\n _dtTimer.timeout.connect(refreshUserOnline);\n\n _userOnline.itemSelected.connect(openWindowUserOnline);\n _userOnline["populateMenu(QMenu*,XTreeWidgetItem*,int)"]\n .connect(populateMenuUserOnline);\n\n _dockUserOnline.visibilityChanged.connect(refreshUserOnline);\n\n // Handle privilge control\n var act = _dockUserOnline.toggleViewAction();\n\n // Don't show if no privs\n if (!privileges.check("ViewUsersOnlineDock"))\n {\n _dockUserOnline.hide();\n act.enabled = false;\n }\n\n // Allow rescan to let them show if privs granted\n act.setData("ViewUsersOnlineDock");\n _menuDesktop.appendAction(act);\n\n fillListUserOnline();\n}\n\n/*!\n Fills the list with open sales data.\n*/\nfunction fillListUserOnline()\n{\n _dockUserOnline = mainwindow.findChild("_dockUserOnline");\n _userOnline = mainwindow.findChild("_userOnline");\n\n if (!_dockUserOnline.visible || !_userOnlineIsDirty)\n return;\n\n _userOnline.populate(toolbox.executeDbQuery("desktop","userOnline"));\n _userOnlineIsDirty = false;\n}\n\n/*! \n Opens the window associated with the selected item.\n*/\nfunction openWindowUserOnline()\n{ \n // Make sure we can open the window for this activity\n if (!privilegeCheckUserOnline() ||\n !_userOnline.currentItem().rawValue("usr_username").length)\n return;\n\n params = new Object;\n params.username = _userOnline.currentItem().rawValue("usr_username");\n if (privilegeCheckUserOnline())\n params.mode="edit";\n\n // Open the window and perform any handling required\n var user = toolbox.openWindow("user");\n user.set(params);\n if (user.exec())\n refreshUserOnline();\n}\n\n/*!\n Adds actions to @a pMenu, typically from a right click on a user record.\n*/\nfunction populateMenuUserOnline(pMenu, pItem)\n{\n if (!_userOnline.currentItem().rawValue("usr_username").length)\n return;\n\n var menuItem;\n var enable = privilegeCheckUserOnline();\n\n menuItem = pMenu.addAction(_open);\n menuItem.enabled = enable;\n menuItem.triggered.connect(openWindowUserOnline);\n}\n\n/*!\n Returns whether user has privileges to view detail on the selected User.\n*/\nfunction privilegeCheckUserOnline()\n{\n return privileges.check("MaintainUsers");\n\n return false;\n}\n\n/*!\n Refreshes data if the window is visible, or the next time it becomes visible\n*/\nfunction refreshUserOnline()\n{\n _userOnlineIsDirty = true;\n fillListUserOnline();\n}\n 87 incident 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\ninclude("dockMyTodo");\n\n// Connect this window so that the To Do dock list gets updated\nmydialog.finished.connect(fillListToDo);\n 129 preferencesComment 0 t try\r\n{\r\n var _usr = mywindow.findChild("_usr");\r\n var _type = mywindow.findChild("_type");\r\n var _source = mywindow.findChild("_source");\r\n var _dates = mywindow.findChild("_dates");\r\n var startdate;\r\n var enddate;\r\n\r\n if (!privileges.check("AccessAdditionalUser"))\r\n _usr.hide();\r\n else if(privileges.check("AccessAdditionalUser"))\r\n _usr.show();\r\n\r\n _type.addColumn("Comment Type", -1, 1, true, "commenttype_name");\r\n _source.addColumn("Comment Source", -1, 1, false, "cmntsource_name");\r\n _source.addColumn("Comment Source", -1, 1, true, "cmntsource_fullname");\r\n _usr.addColumn("User Name", -1, 1, true, "usr_username");\r\n\r\n populate();\r\n mydialog.accepted.connect(save);\r\n}\r\ncatch (e)\r\n{\r\n QMessageBox.critical(mywindow, "preferencesComment",\r\n "preferencesComment.js exception: " + e);\r\n}\r\n\r\nfunction set(params)\r\n{\r\n var prefusr = preferences.value("MonitoredCommentUsrs");\r\n var preftyp = preferences.value("MonitoredCommentTypes");\r\n var prefsrc = preferences.value("MonitoredCommentSrcs");\r\n\r\n var getDate = "SELECT CURRENT_DATE + CAST( AS INTEGER) AS datevalue;";\r\n\r\n params.offSet = ((preferences.value("MonitoredCommentStrtDate") != '')?preferences.value("MonitoredCommentStrtDate"):-1);\r\n var data = toolbox.executeQuery(getDate, params);\r\n if (data.first())\r\n _dates.setStartDate(data.value("datevalue"));\r\n else if (data.lastError().type != QSqlError.NoError)\r\n {\r\n QMessageBox.critical(mainwindow, qsTr("Database Error"),\r\n data.lastError().text);\r\n return;\r\n }\r\n\r\n params.offSet = ((preferences.value("MonitoredCommentEndDate") != '')?preferences.value("MonitoredCommentEndDate"):0);\r\n var data = toolbox.executeQuery(getDate, params);\r\n if (data.first())\r\n _dates.setEndDate(data.value("datevalue"));\r\n else if (data.lastError().type != QSqlError.NoError)\r\n {\r\n QMessageBox.critical(mainwindow, qsTr("Database Error"),\r\n data.lastError().text);\r\n return;\r\n }\r\n\r\n if (prefusr == '')\r\n {\r\n var qry = "SELECT usr_id FROM usr WHERE (usr_username = current_user);";\r\n var data = toolbox.executeQuery(qry, -1);\r\n if (data.first())\r\n _usr.setId(data.value("usr_id"));\r\n else if (data.lastError().type != QSqlError.NoError)\r\n {\r\n QMessageBox.critical(mainwindow, qsTr("Database Error"),\r\n data.lastError().text);\r\n return;\r\n }\r\n }\r\n else\r\n {\r\n var usrList = new Array();\r\n usrList = prefusr.split(",");\r\n for (var i in usrList)\r\n _usr.setId(usrList[i], false);\r\n }\r\n\r\n var typList = new Array();\r\n if (preftyp == '')\r\n _type.setId(0);\r\n else\r\n {\r\n typList = preftyp.split(",");\r\n for (var j in typList)\r\n _type.setId(typList[j], false);\r\n }\r\n\r\n var srcList = new Array();\r\n if (prefsrc == '')\r\n _source.setId(1);\r\n else\r\n {\r\n srcList = prefsrc.split(",");\r\n for (var k in srcList)\r\n _source.setId(srcList[k], false);\r\n }\r\n}\r\n\r\nfunction populate()\r\n{\r\n try\r\n {\r\n _type.clear();\r\n _type.populate(toolbox.executeDbQuery("desktop","cmmntPrefType"));\r\n _source.clear();\r\n _source.populate(toolbox.executeDbQuery("desktop","cmmntPrefSrc"));\r\n if (privileges.check("AccessAdditionalUser"))\r\n {\r\n _usr.clear();\r\n _usr.populate(toolbox.executeDbQuery("desktop","cmmntPrefUser"));\r\n }\r\n }\r\n catch (e)\r\n {\r\n QMessageBox.critical(mywindow, "preferencesComment",\r\n "populateType exception: " + e);\r\n }\r\n}\r\n\r\nfunction save()\r\n{\r\n var typList = new Array();\r\n var selectedTyp = _type.selectedItems();\r\n for (var i = 0; i < selectedTyp.length; i++)\r\n {\r\n if (selectedTyp[i].id() != 0)\r\n typList[i] = selectedTyp[i].id();\r\n }\r\n preferences.set("MonitoredCommentTypes", typList.join(","));\r\n\r\n var srcList = new Array();\r\n var selectedSrc = _source.selectedItems();\r\n for (var i = 0; i < selectedSrc.length; i++)\r\n {\r\n if (selectedSrc[i].id() != 1)\r\n srcList[i] = selectedSrc[i].id();\r\n }\r\n preferences.set("MonitoredCommentSrcs", srcList.join(","));\r\n\r\n if (privileges.check("AccessAdditionalUser"))\r\n {\r\n var usrList = new Array();\r\n var selectedUsr = _usr.selectedItems();\r\n for (var i = 0; i < selectedUsr.length; i++)\r\n usrList[i] = selectedUsr[i].id();\r\n preferences.set("MonitoredCommentUsrs", usrList.join(","));\r\n }\r\n\r\n var params = new Object();\r\n params.startdate1 = _dates.startDate;\r\n var qryStdate = "SELECT (::DATE - (current_date)) AS difference1;";\r\n var data1 = toolbox.executeQuery(qryStdate,params);\r\n if (data1.first())\r\n var strtDateoffSet = data1.value("difference1");\r\n else if (data1.lastError().type != QSqlError.NoError)\r\n {\r\n QMessageBox.critical(mywindow, qsTr("Database Error"),\r\n data1.lastError().text);\r\n mywindow.reject();\r\n }\r\n\r\n params.enddate1 = _dates.endDate;\r\n var qryEnddate = "SELECT (::DATE - (current_date)) AS difference2;";\r\n var data2 = toolbox.executeQuery(qryEnddate,params);\r\n if (data2.first())\r\n var endDateoffSet = data2.value("difference2");\r\n else if (data2.lastError().type != QSqlError.NoError)\r\n {\r\n QMessageBox.critical(mywindow, qsTr("Database Error"),\r\n data2.lastError().text);\r\n mywindow.reject();\r\n }\r\n\r\n preferences.set("MonitoredCommentStrtDate", strtDateoffSet);\r\n preferences.set("MonitoredCommentEndDate", endDateoffSet);\r\n}\r\n 89 preferencesHistory 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\nvar _groupBy = mywindow.findChild("_groupBy");\nvar _timeFrame = mywindow.findChild("_timeFrame");\nvar _type = mywindow.findChild("_type");\n\nvar _path;\n\n// Populate timeFrame combo\n_timeFrame.append(0, qsTr("Today"), "day");\n_timeFrame.append(1, qsTr("This Week"), "week");\n_timeFrame.append(2, qsTr("This Month"), "month");\n_timeFrame.append(3, qsTr("This Year"), "year");\n\nmydialog.accepted.connect(save);\n\n/*!\n Parameters @a params are passed to set up selection criteria for the window\n*/\nfunction set(params)\n{\n if ("path" in params)\n {\n _path = params.path;\n if (_path == "desktop/salesHist")\n {\n _type.append(0, qsTr("Bookings"), "bookings");\n _type.append(1, qsTr("Sales"), "sales");\n\n _groupBy.append(0, qsTr("Customer"), "cust");\n _groupBy.append(1, qsTr("Product Category"), "prodcat");\n _groupBy.append(2, qsTr("Sales Rep"), "salesrep");\n\n mywindow.windowTitle = qsTr("Sales History Preferences");\n }\n else if (_path == "desktop/purchHist")\n {\n _type.append(0, qsTr("Receipts"), "receipts");\n _type.append(1, qsTr("Variances"), "variances");\n\n _groupBy.append(0, qsTr("Vendor"), "vend");\n _groupBy.append(1, qsTr("Item"), "item");\n _groupBy.append(2, qsTr("Purchase Agent"), "agent");\n\n mywindow.windowTitle = qsTr("Purchase History Preferences");\n }\n else if (_path == "desktop/mfgHist")\n {\n _type.append(0, qsTr("Receipts"), "receipts");\n _type.enabled = false;\n\n _groupBy.append(0, qsTr("Class Code"), "classcode");\n _groupBy.append(1, qsTr("Item"), "item");\n _groupBy.append(2, qsTr("Planner Code"), "plancode");\n\n mywindow.windowTitle = qsTr("Manufacture History Preferences");\n }\n }\n\n if ("type" in params)\n _type.code = params.type;\n\n if ("groupBy" in params)\n _groupBy.code = params.groupBy;\n\n if ("timeFrame" in params)\n _timeFrame.code = params.timeFrame;\n\n}\n\n/*!\n Saves selection preferences to the local machine.\n*/\nfunction save()\n{\n // Save preferences to local machine\n preferences.set(_path + "/type", _type.code);\n preferences.set(_path + "/groupBy", _groupBy.code);\n preferences.set(_path + "/timeFrame", _timeFrame.code);\n}\n\n 90 preferencesSelections 0 t /*\n * This file is part of the xtdesktop package for xTuple ERP: PostBooks edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\nvar _gl = mywindow.findChild("_gl");\n\n// Set columns on list\n_gl.addColumn(qsTr("Account#"), -1, Qt.AlignLeft, true, "accnt_id");\n_gl.addColumn(qsTr("Description"), -1, Qt.AlignLeft, true, "accnt_descrip");\n_gl.addColumn(qsTr("Type"), -1, Qt.AlignLeft, true, "accnt_type" );\n\nparams = new Object;\nparams.asset = qsTr("Asset");\nparams.liability = qsTr("Liability");\nparams.revenue = qsTr("Revenue");\nparams.expense = qsTr("Expense");\nparams.equity = qsTr("Equity");\n\n_gl.populate(toolbox.executeDbQuery("desktop", "glaccounts", params));\n\nfunction set(params)\n{\n // Select accounts previously selected\n var pref = preferences.value("MonitoredAccounts");\n var accntList = new Array();\n accntList = pref.split(",");\n for (i in accntList) \n {\n _gl.setId(accntList[i], false);\n }\n}\n\nfunction save()\n{\n var accntList = new Array();\n var selected = _gl.selectedItems();\n for (var i = 0; i < selected.length; i++)\n accntList[i] = selected[i].id();\n\n preferences.set("MonitoredAccounts", accntList.join(","));\n}\n\n// Connect save on Ok\nmydialog.accepted.connect(save);\n 91 project 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\ninclude("dockMyTodo");\n\n// Connect this window so that the To Do dock list gets updated\nmydialog.finished.connect(fillListToDo);\n 131 sendMessageToUser 0 t //debugger;\n\nvar _usr = mywindow.findChild("_usr");\nvar _message = mywindow.findChild("_message");\nvar _send = mywindow.findChild("_send");\n\nfunction getParams() \n{\n var params = new Object;\n\n params.message = _message.plainText;\n if (_usr.id() > 0)\n params.usr_id = _usr.id();\n\n return params;\n}\n\nfunction sHandleButtons()\n{\n var qry = "SELECT usr_id FROM usr WHERE usr_username = current_user;";\n var data = toolbox.executeQuery(qry, -1);\n if (data.first())\n var currenttUsr_id = data.value("usr_id");\n\n if (currenttUsr_id == _usr.id())\n {\n if (QMessageBox.information(mainwindow, qsTr("Send Message?"),\n qsTr("You are trying to Send Reply Message to Yourself."\n +"\\nAre you sure that you really want to Continue?."),\n QMessageBox.Yes | QMessageBox.Default, QMessageBox.No | QMessageBox.Escape) == QMessageBox.No)\n {\n _usr.clear();\n return;\n }\n else\n _send.enabled = (_usr.id() >= 0);\n }\n else\n _send.enabled = (_usr.id() >= 0);\n}\n\nfunction send()\n{\n var params = getParams(); \n var qry = toolbox.executeDbQuery("desktop", "sendMessageToUser", params);\n QMessageBox.information(mywindow,'Sent','Message Sent');\n mywindow.close();\n}\n\nfunction set(input)\n{\n if ("user" in input)\n _usr.setUsername(input.user);\n else\n QMessageBox.warning(mywindow, "Message", "Could not set username");\n}\n\n_usr["newId(int)"].connect(sHandleButtons);\n_send.clicked.connect(send);\nmywindow.findChild("_close").clicked.connect(mywindow, "close");\n 132 systemMessage 0 t //debugger;\n\nvar _save = mywindow.findChild("_save");\nvar layout = toolbox.widgetGetLayout(_save);\nvar _user = mywindow.findChild("_user");\n\nvar _reply = toolbox.createWidget("QPushButton", mywindow, "_reply");\n_reply.text = qsTr("Reply");\nlayout.insertWidget(0, _reply);\n\n_reply.clicked.connect(sendReply);\n\nfunction sendReply() \n{\n var params = new Object;\n params.user = _user.text;\n\n var newwnd = toolbox.openWindow("sendMessageToUser", mywindow, Qt.ApplicationModal, Qt.Dialog);\n toolbox.lastWindow().set(params);\n newwnd.exec();\n mydialog.accept();\n} 92 task 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\ninclude("dockMyTodo");\n\n// Connect this window so that the To Do dock list gets updated\nmydialog.finished.connect(fillListToDo);\n 93 todoItem 0 t /*\n * This file is part of the xTuple ERP: PostBooks Edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\n\ninclude("dockMyTodo");\n\n// Connect this window so that the To Do dock list gets updated\nmydialog.finished.connect(fillListToDo);\n 94 userPreferences 0 t /*\n * This file is part of the xtdesktop package for xTuple ERP: PostBooks edition, a free and\n * open source Enterprise Resource Planning software suite,\n * Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\n * It is licensed to you under the Common Public Attribution License\n * version 1.0, the full text of which (including xTuple-specific Exhibits)\n * is available at www.xtuple.com/CPAL. By using this software, you agree\n * to be bound by its terms.\n */\nvar _interfaceWorkspace = mywindow.findChild("_interfaceWorkspace");\n\n_interfaceWorkspace.toggled.connect(desktopNotice);\n\nfunction desktopNotice()\n{\n if (_interfaceWorkspace.checked &&\n !preferences.boolean("NoDesktopNotice"))\n toolbox.openWindow("desktopNotice", mywindow, Qt.WindowModal, Qt.Dialog);\n}\n \. -- -- Data for Name: pkguiform; Type: TABLE DATA; Schema: xtdesktop; Owner: admin -- COPY pkguiform (uiform_id, uiform_name, uiform_order, uiform_enabled, uiform_source, uiform_notes) FROM stdin; 35 desktopAccounting 0 t \n\n This file is part of the xtdesktop package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL. By using this software, you agree\nto be bound by its terms.\n desktopAccounting\n \n \n \n 0\n 0\n 876\n 554\n \n \n \n Accounting\n \n \n true\n \n \n QMainWindow::AllowNestedDocks|QMainWindow::AllowTabbedDocks|QMainWindow::AnimatedDocks\n \n \n \n \n \n \n \n 14\n 75\n true\n \n \n \n Accounting\n \n \n \n \n \n \n Payables\n \n \n \n 6\n \n \n 0\n \n \n \n \n taxes_clock_48\n \n \n Aging\n \n \n ap.dspAPAging\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n check_write_48\n \n \n Workbench\n \n \n ap.workbench\n \n \n dspBillingSelections\n \n \n \n \n \n \n \n \n \n customers_zoom_48\n \n \n Vendor\n \n \n po.vendorWorkBench\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Receivables\n \n \n \n 6\n \n \n 0\n \n \n \n \n collection_account_clock_48\n \n \n Aging\n \n \n ar.dspARAging\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n collection_account_write_48\n \n \n Workbench\n \n \n ar.arWorkBench\n \n \n dspBillingSelections\n \n \n \n \n \n \n \n \n \n customers_zoom_48\n \n \n Customer\n \n \n so.customerWorkbench\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n General Ledger\n \n \n \n 6\n \n \n 0\n \n \n \n \n company_write_48\n \n \n Chart of Accounts\n \n \n gl.accountNumbers\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n reward_write_48\n \n \n Budget\n \n \n gl.maintainBudgets\n \n \n \n \n \n \n \n \n \n accounting_write_48\n \n \n Standard Journal\n \n \n gl.listStandardJournals\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n accounting_ok_48\n \n \n Journal Series\n \n \n gl.unpostedEntries\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Bank Accounts\n \n \n \n 6\n \n \n 0\n \n \n \n \n bank_write_48\n \n \n Adjustment\n \n \n gl.adjustmentEditList\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n bank_ok_48\n \n \n Reconcile\n \n \n gl.reconcileBankaccnt\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Reporting\n \n \n \n 6\n \n \n 0\n \n \n \n \n spreadsheet_48\n \n \n Financial Statements\n \n \n gl.viewFinancialReport\n \n \n \n \n \n \n \n \n \n \n \n \n balance_zoom_48\n \n \n Trial Balance\n \n \n gl.dspTrialBalances\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n accounting_zoom_48\n \n \n Transactions\n \n \n gl.dspGLTransactions\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Bank Accounts\n \n \n 1\n \n \n \n \n 0\n \n \n \n \n false\n \n \n \n \n \n \n \n \n Payables\n \n \n 1\n \n \n \n \n 0\n \n \n \n \n false\n \n \n \n \n \n \n \n \n Receivables\n \n \n 1\n \n \n \n \n 0\n \n \n \n \n false\n \n \n \n \n \n \n \n \n Monitored Accounts\n \n \n 8\n \n \n \n \n 0\n \n \n 0\n \n \n 0\n \n \n 3\n \n \n 3\n \n \n \n \n false\n \n \n \n \n \n \n \n 16\n 16\n \n \n \n b\n \n \n true\n \n \n \n \n \n \n \n 16\n 16\n \n \n \n b\n \n \n true\n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 40\n 20\n \n \n \n \n \n \n \n \n \n \n MenuButton\n QWidget\n

menubutton.h
\n \n \n XTreeWidget\n QTreeWidget\n
xtreewidget.h
\n
\n \n \n \n
\n 36 desktopCRM 0 t \n\n This file is part of the xtdesktop package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL. By using this software, you agree\nto be bound by its terms.\n desktopCRM\n \n \n \n 0\n 0\n 893\n 554\n \n \n \n CRM\n \n \n true\n \n \n true\n \n \n \n \n \n \n \n 14\n 75\n true\n \n \n \n Corporate Relationship Management\n \n \n \n \n \n \n Personal\n \n \n \n 6\n \n \n 0\n \n \n \n \n lamp_48\n \n \n Event Manager\n \n \n sys.eventManager\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n calendar_month_zoom_48\n \n \n To Do Calendar\n \n \n crm.todoListCalendar\n \n \n \n \n \n \n \n \n \n \n \n \n notepad_zoom_48\n \n \n To Do List\n \n \n crm.todoList\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Corporate\n \n \n \n 6\n \n \n 0\n \n \n \n \n clients_48\n \n \n Accounts\n \n \n crm.crmaccounts\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n execute_48\n \n \n Contacts\n \n \n crm.contacts\n \n \n \n \n \n \n \n \n \n \n \n \n book_48\n \n \n Address Book\n \n \n crm.addresses\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Pre-Sales\n \n \n \n 6\n \n \n 0\n \n \n \n \n customers_help_48\n \n \n Prospects\n \n \n so.prospects\n \n \n \n \n \n \n \n \n \n \n \n \n order_help_48\n \n \n Quotes\n \n \n so.listQuotes\n \n \n \n \n \n \n \n \n \n order_search_48\n \n \n Quotes by Item\n \n \n so.dspQuoteOrderLookupByItem\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n money_bag_write_48\n \n \n Opportunities\n \n \n crm.listOpportunity\n \n \n dspBillingSelections\n \n \n \n \n \n \n \n \n \n \n \n \n Project\n \n \n \n 6\n \n \n 0\n \n \n \n \n spreadsheet_48\n \n \n Projects\n \n \n pm.projects\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n time_sheet_write_48\n \n \n Time & Expense\n \n \n pm.teSheets\n \n \n \n \n \n \n \n \n \n \n \n \n spreadsheet_zoom_48\n \n \n Project Orders\n \n \n pm.dspOrderActivityByProject\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Account Management\n \n \n \n 6\n \n \n 0\n \n \n \n \n customers_48\n \n \n Customer Workbench\n \n \n so.customerWorkbench\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n chat_48\n \n \n Incidents\n \n \n crm.incidentList\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n To Do\n \n \n 8\n \n \n \n \n 0\n \n \n \n \n false\n \n \n \n \n \n \n \n \n My Contacts\n \n \n 1\n \n \n \n \n 0\n \n \n \n \n false\n \n \n \n \n \n \n \n \n My Accounts\n \n \n 1\n \n \n \n \n 0\n \n \n \n \n false\n \n \n \n \n \n \n \n \n \n MenuButton\n QWidget\n
menubutton.h
\n
\n \n XTreeWidget\n QTreeWidget\n
xtreewidget.h
\n
\n
\n \n \n
\n 37 desktopMaintenance 0 t \n\n This file is part of the xtdesktop package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL. By using this software, you agree\nto be bound by its terms.\n desktopMaintenance\n \n \n \n 0\n 0\n 905\n 563\n \n \n \n Maintenance\n \n \n true\n \n \n QMainWindow::AllowNestedDocks|QMainWindow::AllowTabbedDocks|QMainWindow::AnimatedDocks\n \n \n \n \n \n \n \n 14\n 75\n true\n \n \n \n Maintenance\n \n \n \n \n \n \n Products\n \n \n \n 6\n \n \n 0\n \n \n \n \n inventory_categories_48\n \n \n Items\n \n \n pd.listItems\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n inventory_write_48\n \n \n Bill of Materials\n \n \n pd.listBOMs\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 0\n 20\n \n \n \n \n \n \n \n ImgDownArrow\n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 0\n 20\n \n \n \n \n \n \n \n \n \n \n \n \n Inventory\n \n \n \n 6\n \n \n 0\n \n \n \n \n store_house_48\n \n \n Site\n \n \n im.warehouse\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n cabinet_48\n \n \n Locations\n \n \n im.warehousesLocations\n \n \n dspBillingSelections\n \n \n \n \n \n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 0\n 20\n \n \n \n \n \n \n \n ImgDownArrow\n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 0\n 20\n \n \n \n \n \n \n \n \n \n \n \n \n Pricing\n \n \n \n 6\n \n \n 0\n \n \n \n \n reward_clock_48\n \n \n Schedules\n \n \n so.pricingSchedules\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n customers_write_48\n \n \n Assignments\n \n \n so.pricingScheduleAssignments\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 0\n 20\n \n \n \n \n \n \n \n ImgDownArrow\n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 0\n 20\n \n \n \n \n \n \n \n \n \n \n \n \n Security\n \n \n \n 6\n \n \n 0\n \n \n \n \n user_48\n \n \n Users\n \n \n sys.maintainUsers\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n group_48\n \n \n Roles\n \n \n sys.maintainGroups\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 0\n 20\n \n \n \n \n \n \n \n ImgDownArrow\n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 0\n 20\n \n \n \n \n \n \n \n \n \n \n \n \n Currency\n \n \n \n 6\n \n \n 0\n \n \n \n \n coin_48\n \n \n Currencies\n \n \n sys.currencies\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n coin_clock_48\n \n \n Exchange Rates\n \n \n sys.exchangeRates\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 0\n 20\n \n \n \n \n \n \n \n ImgDownArrow\n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 0\n 20\n \n \n \n \n \n \n \n \n \n \n \n \n Design\n \n \n \n 6\n \n \n 0\n \n \n \n \n calculation_write_48\n \n \n Commands\n \n \n sys.customCommands\n \n \n \n \n \n \n \n \n \n \n \n \n script_write_48\n \n \n Scripts\n \n \n sys.scripts\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n window_write_48\n \n \n Screens\n \n \n sys.uiforms\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n spreadsheet_write_48\n \n \n Reports\n \n \n sys.reports\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n export_database_write_48\n \n \n MetaSQL\n \n \n sys.metasqls\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Extensions\n \n \n 1\n \n \n \n \n 0\n \n \n \n \n false\n \n \n \n \n \n \n \n \n toolBar\n \n \n \n 32\n 32\n \n \n \n TopToolBarArea\n \n \n false\n \n \n \n \n \n MenuButton\n QWidget\n
menubutton.h
\n
\n \n XLabel\n QLabel\n
xlabel.h
\n
\n \n XTreeWidget\n QTreeWidget\n
xtreewidget.h
\n
\n
\n \n \n
\n 38 desktopManufacture 0 t \n\n This file is part of the xtdesktop package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL. By using this software, you agree\nto be bound by its terms.\n desktopManufacture\n \n \n \n 0\n 0\n 882\n 554\n \n \n \n Manufacture\n \n \n true\n \n \n true\n \n \n \n \n \n \n \n 14\n 75\n true\n \n \n \n Manufacture\n \n \n \n \n \n \n Plan\n \n \n \n 6\n \n \n 0\n \n \n \n \n inventory_zoom_48\n \n \n Inventory Availability\n \n \n im.dspInventoryAvailability\n \n \n \n \n \n \n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n industry_add_48\n \n \n Create Work Order\n \n \n wo.newWorkOrder\n \n \n \n \n \n \n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n availability_write_48\n \n \n Material Requirements\n \n \n wo.maintainWoMaterialRequirements\n \n \n \n \n \n \n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n industry_next_48\n \n \n Release\n \n \n wo.releaseWorkOrdersByPlannerCode\n \n \n \n \n \n \n \n \n \n \n \n \n printer_48\n \n \n Print\n \n \n wo.printTraveler\n \n \n \n \n \n \n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n \n \n \n Process\n \n \n \n 6\n \n \n 0\n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n barcode_ok_48\n \n \n Issue Material\n \n \n wo.issueWoMaterialItem\n \n \n \n \n \n \n \n \n \n industry_close_48\n \n \n Close Work Order\n \n \n wo.closeWorkOrder\n \n \n \n \n \n \n \n \n \n \n \n \n barcode_back_48\n \n \n Return Material\n \n \n wo.returnWoMaterialItem\n \n \n \n \n \n \n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n coin_stack_zoom_48\n \n \n Costing\n \n \n wo.dspJobCosting\n \n \n \n \n \n \n \n \n \n \n \n \n history_zoom_48\n \n \n History\n \n \n wo.dspWoHistoryByClassCode\n \n \n \n \n \n \n \n \n \n \n \n \n industry_ok_48\n \n \n Post Production\n \n \n wo.postProduction\n \n \n \n \n \n \n \n \n \n \n \n \n trash_ok_48\n \n \n Post Scrap\n \n \n wo.scrapWoMaterialFromWo\n \n \n \n \n \n \n \n \n \n \n \n \n industry_clock_48\n \n \n Order Schedule\n \n \n wo.dspWoSchedule\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n availability_zoom_48\n \n \n Material Availability\n \n \n wo.dspInventoryAvailabilityByWorkOrder\n \n \n \n \n \n \n \n \n \n \n \n \n industry_back_48\n \n \n Correct Production\n \n \n wo.correctProductionPosting\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Qt::AllDockWidgetAreas\n \n \n Manufacture Activities\n \n \n 1\n \n \n \n \n 0\n \n \n \n \n false\n \n \n \n \n \n \n \n \n Manufacture History\n \n \n 1\n \n \n \n \n 0\n \n \n 0\n \n \n 0\n \n \n 3\n \n \n 3\n \n \n \n \n false\n \n \n \n \n \n \n \n 0\n 0\n \n \n \n label\n \n \n Qt::AlignCenter\n \n \n \n \n \n \n \n 16\n 16\n \n \n \n b\n \n \n true\n \n \n \n \n \n \n \n 16\n 16\n \n \n \n b\n \n \n true\n \n \n \n \n \n \n \n \n Qt::AllDockWidgetAreas\n \n \n Work Orders\n \n \n 8\n \n \n \n \n 0\n \n \n \n \n false\n \n \n \n \n \n \n \n \n \n MenuButton\n QWidget\n
menubutton.h
\n
\n \n XLabel\n QLabel\n
xlabel.h
\n
\n \n XTreeWidget\n QTreeWidget\n
xtreewidget.h
\n
\n
\n \n \n
\n 40 desktopPurchase 0 t \n\n This file is part of the xtdesktop package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL. By using this software, you agree\nto be bound by its terms.\n desktopPurchase\n \n \n \n 0\n 0\n 886\n 554\n \n \n \n Purchase\n \n \n true\n \n \n true\n \n \n \n \n \n \n \n 14\n 75\n true\n \n \n \n Purchase\n \n \n \n \n \n \n Order\n \n \n \n 6\n \n \n 0\n \n \n \n \n order_help_48\n \n \n Purchase Requests\n \n \n po.dspPurchaseRequestsByPlannerCode\n \n \n \n \n \n \n \n \n \n \n \n \n order_add_48\n \n \n Create Purchase Order\n \n \n po.newPurchaseOrder\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n printer_48\n \n \n Print\n \n \n po.printPurchaseOrder\n \n \n \n \n \n \n \n \n \n \n \n \n inventory_zoom_48\n \n \n Inventory Availability\n \n \n im.dspInventoryAvailability\n \n \n \n \n \n \n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n order_next_48\n \n \n Release\n \n \n po.listUnpostedPurchaseOrders\n \n \n \n \n \n \n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n \n \n \n Receive\n \n \n \n 6\n \n \n 0\n \n \n \n \n barcode_ok_48\n \n \n Enter Receipts\n \n \n sr.enterReceipt\n \n \n \n \n \n \n \n \n \n \n \n \n inventory_48\n \n \n Unposted Receipts\n \n \n sr.postReceipts\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Payment\n \n \n \n 6\n \n \n 0\n \n \n \n \n taxes_ok_48\n \n \n Vouchers\n \n \n po.listUnpostedVouchers\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n stamp_48\n \n \n Select for Payment\n \n \n ap.selectPayments\n \n \n \n \n \n \n \n \n \n \n \n \n stamp_zoom_48\n \n \n Selected Payments\n \n \n ap.listSelectPayments\n \n \n \n \n \n \n \n \n \n \n \n \n check_zoom_48\n \n \n Check Register\n \n \n ap.dspCheckRegister\n \n \n \n \n \n \n \n \n \n \n \n \n check_ok_48\n \n \n Check Run\n \n \n ap.viewCheckRun\n \n \n \n \n \n \n \n \n \n \n \n \n taxes_clock_48\n \n \n Aging\n \n \n ap.dspAPAging\n \n \n dspTimePhasedOpenAPItems\n \n \n ViewAPOpenItems\n \n \n \n \n \n \n inventory_zoom_48\n \n \n Uninvoiced Receipts\n \n \n ap.uninvoicedReceipts\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n taxes_zoom_48\n \n \n Open Items\n \n \n ap.dspOpenAPItemsByVendor\n \n \n \n \n \n \n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n \n \n \n \n Qt::AllDockWidgetAreas\n \n \n Purchase Activities\n \n \n 1\n \n \n \n \n 0\n \n \n \n \n false\n \n \n \n \n \n \n \n \n Purchase History\n \n \n 1\n \n \n \n \n 0\n \n \n 0\n \n \n 0\n \n \n 3\n \n \n 3\n \n \n \n \n false\n \n \n \n \n \n \n \n 0\n 0\n \n \n \n label\n \n \n Qt::AlignCenter\n \n \n \n \n \n \n \n 16\n 16\n \n \n \n b\n \n \n true\n \n \n \n \n \n \n \n 16\n 16\n \n \n \n b\n \n \n true\n \n \n \n \n \n \n \n \n Qt::AllDockWidgetAreas\n \n \n Purchase Orders\n \n \n 8\n \n \n \n \n 0\n \n \n \n \n false\n \n \n \n \n \n \n \n \n \n MenuButton\n QWidget\n
menubutton.h
\n
\n \n XLabel\n QLabel\n
xlabel.h
\n
\n \n XTreeWidget\n QTreeWidget\n
xtreewidget.h
\n
\n
\n \n \n
\n 41 desktopSales 0 t \n\n This file is part of the xtdesktop package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL. By using this software, you agree\nto be bound by its terms.\n desktopSales\n \n \n \n 0\n 0\n 873\n 554\n \n \n \n Sales\n \n \n true\n \n \n QMainWindow::AllowNestedDocks|QMainWindow::AllowTabbedDocks|QMainWindow::AnimatedDocks\n \n \n \n \n \n \n \n 14\n 75\n true\n \n \n \n Sales\n \n \n \n \n \n \n Order\n \n \n \n 6\n \n \n 0\n \n \n \n \n customers_write_48\n \n \n Prospects\n \n \n so.prospects\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n customers_add_48\n \n \n New Customer\n \n \n so.enterNewCustomer\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n order_write_48\n \n \n Quotes\n \n \n so.listQuotes\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n order_add_48\n \n \n New Sales Order\n \n \n so.newSalesOrder\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Ship\n \n \n \n 6\n \n \n 0\n \n \n \n \n printer_48\n \n \n Print Packing Lists\n \n \n sr.packingListBatch\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n barcode_ok_48\n \n \n Issue To Shipping\n \n \n sr.issueToShipping\n \n \n \n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n dispatch_order_ok_48\n \n \n Ship\n \n \n sr.shipOrder\n \n \n \n \n \n \n \n \n \n \n \n \n dispatch_order_zoom_48\n \n \n Maintain Shipping\n \n \n sr.maintainShippingContents\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n order_zoom_48\n \n \n Inventory Availability\n \n \n so.dspInventoryAvailabilityByCustomerType\n \n \n \n \n \n \n \n \n \n \n \n \n order_clock_48\n \n \n Backlog\n \n \n so.dspSummarizedBacklogByWarehouse\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Bill\n \n \n \n 6\n \n \n 0\n \n \n \n \n stamp_48\n \n \n Select for Billing\n \n \n so.uninvoicedShipments\n \n \n \n \n \n \n \n \n \n \n \n \n taxes_add_48\n \n \n Create Invoices\n \n \n so.dspBillingSelections\n \n \n dspBillingSelections\n \n \n \n \n \n \n \n \n \n taxes_ok_48\n \n \n Post Invoices\n \n \n so.listUnpostedInvoices\n \n \n \n \n \n \n \n \n \n \n \n \n taxes_clock_48\n \n \n Aging\n \n \n ar.dspARAging\n \n \n \n \n \n \n \n \n \n \n \n \n payment_ok_48\n \n \n Cash Receipts\n \n \n ar.cashReceiptEditList\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n \n 0\n 0\n \n \n \n ImgRightArrow\n \n \n \n \n \n \n \n \n \n \n Sales Activities\n \n \n 1\n \n \n \n \n 0\n \n \n \n \n false\n \n \n \n \n \n \n \n \n Sales History\n \n \n 1\n \n \n \n \n 0\n \n \n 0\n \n \n 0\n \n \n 3\n \n \n 3\n \n \n \n \n false\n \n \n \n \n \n \n \n 0\n 0\n \n \n \n label\n \n \n Qt::AlignCenter\n \n \n \n \n \n \n \n 16\n 16\n \n \n \n b\n \n \n true\n \n \n \n \n \n \n \n 16\n 16\n \n \n \n b\n \n \n true\n \n \n \n \n \n \n \n \n Sales Orders\n \n \n 8\n \n \n \n \n 0\n \n \n \n \n false\n \n \n \n \n \n \n \n \n \n MenuButton\n QWidget\n
menubutton.h
\n
\n \n XLabel\n QLabel\n
xlabel.h
\n
\n \n XTreeWidget\n QTreeWidget\n
xtreewidget.h
\n
\n
\n \n \n
\n 64 desktop 0 t \n\n This file is part of the xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL. By using this software, you agree\nto be bound by its terms.\n desktop\n \n \n \n 0\n 0\n 24\n 24\n \n \n \n Desktop\n \n \n \n \n \n\n container ui for the desktop webview 39 desktopNotice 0 t \n\n This file is part of the xtdesktop package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL. By using this software, you agree\nto be bound by its terms.\n desktopNotice\n \n \n \n 0\n 0\n 211\n 109\n \n \n \n Notice\n \n \n \n \n \n \n 0\n 0\n \n \n \n Note: The xTuple Desktop is only available when user preferences are set to show windows as free-floating.\n \n \n true\n \n \n \n \n \n \n Remind me about this again.\n \n \n true\n \n \n \n \n \n \n Qt::Horizontal\n \n \n QDialogButtonBox::Ok\n \n \n true\n \n \n \n \n \n \n \n \n _buttonBox\n accepted()\n desktopNotice\n accept()\n \n \n 248\n 254\n \n \n 157\n 274\n \n \n \n \n _buttonBox\n rejected()\n desktopNotice\n reject()\n \n \n 316\n 260\n \n \n 286\n 274\n \n \n \n \n\n 60 desktopSocial 0 t \r\n\r\n desktopSocial\r\n \r\n \r\n \r\n 0\r\n 0\r\n 996\r\n 666\r\n \r\n \r\n \r\n Social\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 15\r\n 75\r\n true\r\n \r\n \r\n \r\n Social\r\n \r\n \r\n \r\n \r\n \r\n \r\n Qt::Horizontal\r\n \r\n \r\n \r\n 40\r\n 20\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Comment Console\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Qt::Horizontal\r\n \r\n \r\n \r\n 40\r\n 20\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 16\r\n 16\r\n \r\n \r\n \r\n b\r\n \r\n \r\n true\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 16\r\n 16\r\n \r\n \r\n \r\n b\r\n \r\n \r\n true\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Qt::BottomDockWidgetArea|Qt::RightDockWidgetArea|Qt::TopDockWidgetArea\r\n \r\n \r\n Send Message\r\n \r\n \r\n 1\r\n \r\n \r\n \r\n \r\n \r\n \r\n User:\r\n \r\n \r\n \r\n \r\n \r\n \r\n false\r\n \r\n \r\n Send\r\n \r\n \r\n \r\n \r\n \r\n \r\n false\r\n \r\n \r\n \r\n \r\n \r\n \r\n Qt::Horizontal\r\n \r\n \r\n \r\n 54\r\n 20\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Message:\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Qt::BottomDockWidgetArea|Qt::RightDockWidgetArea|Qt::TopDockWidgetArea\r\n \r\n \r\n Message History\r\n \r\n \r\n 1\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Qt::Horizontal\r\n \r\n \r\n \r\n 282\r\n 20\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 16\r\n 16\r\n \r\n \r\n \r\n b\r\n \r\n \r\n true\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 16\r\n 16\r\n \r\n \r\n \r\n b\r\n \r\n \r\n true\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Qt::BottomDockWidgetArea|Qt::RightDockWidgetArea|Qt::TopDockWidgetArea\r\n \r\n \r\n Users Online\r\n \r\n \r\n 1\r\n \r\n \r\n \r\n \r\n \r\n \r\n false\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n UsernameCluster\r\n QWidget\r\n
usernamecluster.h
\r\n
\r\n \r\n XTreeWidget\r\n QTreeWidget\r\n
xtreewidget.h
\r\n 1\r\n
\r\n
\r\n \r\n \r\n
\r\n 61 preferencesComment 0 t \r\n\r\n preferencesComment\r\n \r\n \r\n \r\n 0\r\n 0\r\n 626\r\n 342\r\n \r\n \r\n \r\n Comment Preference\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Qt::Horizontal\r\n \r\n \r\n \r\n 40\r\n 20\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n QAbstractItemView::ExtendedSelection\r\n \r\n \r\n \r\n \r\n \r\n \r\n QAbstractItemView::ExtendedSelection\r\n \r\n \r\n \r\n \r\n \r\n \r\n QAbstractItemView::ExtendedSelection\r\n \r\n \r\n \r\n \r\n \r\n \r\n Qt::Horizontal\r\n \r\n \r\n \r\n 40\r\n 20\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Qt::Horizontal\r\n \r\n \r\n \r\n 40\r\n 20\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Qt::Horizontal\r\n \r\n \r\n QDialogButtonBox::Cancel|QDialogButtonBox::Ok\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n DateCluster\r\n QWidget\r\n
datecluster.h
\r\n
\r\n \r\n XTreeWidget\r\n QTreeWidget\r\n
xtreewidget.h
\r\n 1\r\n
\r\n
\r\n \r\n \r\n \r\n _buttonBox\r\n accepted()\r\n preferencesComment\r\n accept()\r\n \r\n \r\n 248\r\n 254\r\n \r\n \r\n 157\r\n 274\r\n \r\n \r\n \r\n \r\n _buttonBox\r\n rejected()\r\n preferencesComment\r\n reject()\r\n \r\n \r\n 316\r\n 260\r\n \r\n \r\n 286\r\n 274\r\n \r\n \r\n \r\n \r\n
\r\n 42 preferencesHistory 0 t \n\n This file is part of the xtdesktop package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL. By using this software, you agree\nto be bound by its terms.\n preferencesHistory\n \n \n \n 0\n 0\n 350\n 104\n \n \n \n \n 350\n 0\n \n \n \n History Settings\n \n \n \n \n \n Type:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n Qt::Vertical\n \n \n QDialogButtonBox::Cancel|QDialogButtonBox::Ok\n \n \n \n \n \n \n Group By:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n Time Frame:\n \n \n Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter\n \n \n \n \n \n \n \n 0\n 0\n \n \n \n \n \n \n \n \n XComboBox\n QComboBox\n
xcombobox.h
\n
\n
\n \n \n \n buttonBox\n accepted()\n preferencesHistory\n accept()\n \n \n 248\n 254\n \n \n 157\n 274\n \n \n \n \n buttonBox\n rejected()\n preferencesHistory\n reject()\n \n \n 316\n 260\n \n \n 286\n 274\n \n \n \n \n
\n 62 preferencesNumber 0 t \r\n\r\n preferencesNumber\r\n \r\n \r\n \r\n 0\r\n 0\r\n 257\r\n 72\r\n \r\n \r\n \r\n Number Preferences\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Messages to display:\r\n \r\n \r\n \r\n \r\n \r\n \r\n 10\r\n \r\n \r\n \r\n \r\n \r\n \r\n Qt::Horizontal\r\n \r\n \r\n \r\n 40\r\n 20\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Qt::Vertical\r\n \r\n \r\n QDialogButtonBox::Cancel|QDialogButtonBox::Ok\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n buttonBox\r\n accepted()\r\n preferencesNumber\r\n accept()\r\n \r\n \r\n 209\r\n 35\r\n \r\n \r\n 128\r\n 35\r\n \r\n \r\n \r\n \r\n buttonBox\r\n rejected()\r\n preferencesNumber\r\n reject()\r\n \r\n \r\n 209\r\n 35\r\n \r\n \r\n 128\r\n 35\r\n \r\n \r\n \r\n \r\n\r\n 43 preferencesSelections 0 t \n\n This file is part of the xtdesktop package for xTuple ERP: PostBooks Edition, a free and\nopen source Enterprise Resource Planning software suite,\nCopyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple.\nIt is licensed to you under the Common Public Attribution License\nversion 1.0, the full text of which (including xTuple-specific Exhibits)\nis available at www.xtuple.com/CPAL. By using this software, you agree\nto be bound by its terms.\n preferencesSelections\n \n \n \n 0\n 0\n 280\n 259\n \n \n \n Selection Preferences\n \n \n \n \n \n QAbstractItemView::ExtendedSelection\n \n \n \n \n \n \n Qt::Horizontal\n \n \n QDialogButtonBox::Cancel|QDialogButtonBox::Ok\n \n \n \n \n \n \n Select Accounts to monitor:\n \n \n \n \n \n \n \n XTreeWidget\n QTreeWidget\n
xtreewidget.h
\n
\n
\n \n \n \n _buttonBox\n accepted()\n preferencesSelections\n accept()\n \n \n 248\n 254\n \n \n 157\n 274\n \n \n \n \n _buttonBox\n rejected()\n preferencesSelections\n reject()\n \n \n 316\n 260\n \n \n 286\n 274\n \n \n \n \n
\n 63 sendMessageToUser 0 t \n\n sendMessageToUser\n \n \n \n 0\n 0\n 406\n 300\n \n \n \n Send Message to User\n \n \n \n \n \n User:\n \n \n \n \n \n \n Qt::Horizontal\n \n \n \n 158\n 56\n \n \n \n \n \n \n \n \n \n Close\n \n \n \n \n \n \n false\n \n \n Send\n \n \n \n \n \n \n Qt::Vertical\n \n \n \n 38\n 25\n \n \n \n \n \n \n \n \n \n false\n \n \n \n \n \n \n Message:\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n UsernameCluster\n QWidget\n
usernamecluster.h
\n
\n
\n \n \n
\n \. SET search_path = fixcountry, pg_catalog; -- -- Name: pkgcmd_pkey; Type: CONSTRAINT; Schema: fixcountry; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgcmd ADD CONSTRAINT pkgcmd_pkey PRIMARY KEY (cmd_id); -- -- Name: pkgcmdarg_pkey; Type: CONSTRAINT; Schema: fixcountry; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgcmdarg ADD CONSTRAINT pkgcmdarg_pkey PRIMARY KEY (cmdarg_id); -- -- Name: pkgimage_pkey; Type: CONSTRAINT; Schema: fixcountry; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgimage ADD CONSTRAINT pkgimage_pkey PRIMARY KEY (image_id); -- -- Name: pkgmetasql_pkey; Type: CONSTRAINT; Schema: fixcountry; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgmetasql ADD CONSTRAINT pkgmetasql_pkey PRIMARY KEY (metasql_id); -- -- Name: pkgpriv_pkey; Type: CONSTRAINT; Schema: fixcountry; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgpriv ADD CONSTRAINT pkgpriv_pkey PRIMARY KEY (priv_id); -- -- Name: pkgreport_pkey; Type: CONSTRAINT; Schema: fixcountry; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgreport ADD CONSTRAINT pkgreport_pkey PRIMARY KEY (report_id); -- -- Name: pkgscript_pkey; Type: CONSTRAINT; Schema: fixcountry; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgscript ADD CONSTRAINT pkgscript_pkey PRIMARY KEY (script_id); -- -- Name: pkguiform_pkey; Type: CONSTRAINT; Schema: fixcountry; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkguiform ADD CONSTRAINT pkguiform_pkey PRIMARY KEY (uiform_id); SET search_path = public, pg_catalog; -- -- Name: acalitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY acalitem ADD CONSTRAINT acalitem_pkey PRIMARY KEY (acalitem_id); -- -- Name: accnt_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY accnt ADD CONSTRAINT accnt_pkey PRIMARY KEY (accnt_id); -- -- Name: addr_addr_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY addr ADD CONSTRAINT addr_addr_number_key UNIQUE (addr_number); -- -- Name: addr_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY addr ADD CONSTRAINT addr_pkey PRIMARY KEY (addr_id); -- -- Name: alarm_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY alarm ADD CONSTRAINT alarm_pkey PRIMARY KEY (alarm_id); -- -- Name: apaccnt_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY apaccnt ADD CONSTRAINT apaccnt_pkey PRIMARY KEY (apaccnt_id); -- -- Name: apapply_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY apapply ADD CONSTRAINT apapply_pkey PRIMARY KEY (apapply_id); -- -- Name: apcreditapply_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY apcreditapply ADD CONSTRAINT apcreditapply_pkey PRIMARY KEY (apcreditapply_id); -- -- Name: apopen_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY apopen ADD CONSTRAINT apopen_pkey PRIMARY KEY (apopen_id); -- -- Name: apopentax_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY apopentax ADD CONSTRAINT apopentax_pkey PRIMARY KEY (taxhist_id); -- -- Name: apselect_apselect_apopen_id_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY apselect ADD CONSTRAINT apselect_apselect_apopen_id_key UNIQUE (apselect_apopen_id); -- -- Name: apselect_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY apselect ADD CONSTRAINT apselect_pkey PRIMARY KEY (apselect_id); -- -- Name: araccnt_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY araccnt ADD CONSTRAINT araccnt_pkey PRIMARY KEY (araccnt_id); -- -- Name: arapply_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY arapply ADD CONSTRAINT arapply_pkey PRIMARY KEY (arapply_id); -- -- Name: arcreditapply_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY arcreditapply ADD CONSTRAINT arcreditapply_pkey PRIMARY KEY (arcreditapply_id); -- -- Name: aropen_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY aropen ADD CONSTRAINT aropen_pkey PRIMARY KEY (aropen_id); -- -- Name: aropenalloc_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY aropenalloc ADD CONSTRAINT aropenalloc_pkey PRIMARY KEY (aropenalloc_aropen_id, aropenalloc_doctype, aropenalloc_doc_id); -- -- Name: aropentax_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY aropentax ADD CONSTRAINT aropentax_pkey PRIMARY KEY (taxhist_id); -- -- Name: asohist_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY asohist ADD CONSTRAINT asohist_pkey PRIMARY KEY (asohist_id); -- -- Name: asohisttax_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY asohisttax ADD CONSTRAINT asohisttax_pkey PRIMARY KEY (taxhist_id); -- -- Name: atlasmap_atlasmap_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY atlasmap ADD CONSTRAINT atlasmap_atlasmap_name_key UNIQUE (atlasmap_name); -- -- Name: atlasmap_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY atlasmap ADD CONSTRAINT atlasmap_pkey PRIMARY KEY (atlasmap_id); -- -- Name: bankaccnt_bankaccnt_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY bankaccnt ADD CONSTRAINT bankaccnt_bankaccnt_name_key UNIQUE (bankaccnt_name); -- -- Name: bankaccnt_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY bankaccnt ADD CONSTRAINT bankaccnt_pkey PRIMARY KEY (bankaccnt_id); -- -- Name: bankadj_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY bankadj ADD CONSTRAINT bankadj_pkey PRIMARY KEY (bankadj_id); -- -- Name: bankadjtype_bankadjtype_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY bankadjtype ADD CONSTRAINT bankadjtype_bankadjtype_name_key UNIQUE (bankadjtype_name); -- -- Name: bankadjtype_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY bankadjtype ADD CONSTRAINT bankadjtype_pkey PRIMARY KEY (bankadjtype_id); -- -- Name: bankrec_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY bankrec ADD CONSTRAINT bankrec_pkey PRIMARY KEY (bankrec_id); -- -- Name: bankrecitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY bankrecitem ADD CONSTRAINT bankrecitem_pkey PRIMARY KEY (bankrecitem_id); -- -- Name: bomhead_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY bomhead ADD CONSTRAINT bomhead_pkey PRIMARY KEY (bomhead_id); -- -- Name: bomitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY bomitem ADD CONSTRAINT bomitem_pkey PRIMARY KEY (bomitem_id); -- -- Name: bomitemcost_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY bomitemcost ADD CONSTRAINT bomitemcost_pkey PRIMARY KEY (bomitemcost_id); -- -- Name: bomitemsub_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY bomitemsub ADD CONSTRAINT bomitemsub_pkey PRIMARY KEY (bomitemsub_id); -- -- Name: bomwork_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY bomwork ADD CONSTRAINT bomwork_pkey PRIMARY KEY (bomwork_id); -- -- Name: budghead_budghead_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY budghead ADD CONSTRAINT budghead_budghead_name_key UNIQUE (budghead_name); -- -- Name: budghead_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY budghead ADD CONSTRAINT budghead_pkey PRIMARY KEY (budghead_id); -- -- Name: budgitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY budgitem ADD CONSTRAINT budgitem_pkey PRIMARY KEY (budgitem_id); -- -- Name: calhead_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY calhead ADD CONSTRAINT calhead_pkey PRIMARY KEY (calhead_id); -- -- Name: cashrcpt_cashrcpt_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cashrcpt ADD CONSTRAINT cashrcpt_cashrcpt_number_key UNIQUE (cashrcpt_number); -- -- Name: cashrcpt_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cashrcpt ADD CONSTRAINT cashrcpt_pkey PRIMARY KEY (cashrcpt_id); -- -- Name: cashrcptitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cashrcptitem ADD CONSTRAINT cashrcptitem_pkey PRIMARY KEY (cashrcptitem_id); -- -- Name: cashrcptmisc_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cashrcptmisc ADD CONSTRAINT cashrcptmisc_pkey PRIMARY KEY (cashrcptmisc_id); -- -- Name: ccard_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY ccard ADD CONSTRAINT ccard_pkey PRIMARY KEY (ccard_id); -- -- Name: ccardaud_ccard_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY ccardaud ADD CONSTRAINT ccardaud_ccard_pkey PRIMARY KEY (ccardaud_id); -- -- Name: ccbank_ccbank_ccard_type_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY ccbank ADD CONSTRAINT ccbank_ccbank_ccard_type_key UNIQUE (ccbank_ccard_type); -- -- Name: ccbank_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY ccbank ADD CONSTRAINT ccbank_pkey PRIMARY KEY (ccbank_id); -- -- Name: ccpay_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY ccpay ADD CONSTRAINT ccpay_pkey PRIMARY KEY (ccpay_id); -- -- Name: char_char_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY "char" ADD CONSTRAINT char_char_name_key UNIQUE (char_name); -- -- Name: char_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY "char" ADD CONSTRAINT char_pkey PRIMARY KEY (char_id); -- -- Name: charass_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY charass ADD CONSTRAINT charass_pkey PRIMARY KEY (charass_id); -- -- Name: charopt_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY charopt ADD CONSTRAINT charopt_pkey PRIMARY KEY (charopt_id); -- -- Name: checkhead_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY checkhead ADD CONSTRAINT checkhead_pkey PRIMARY KEY (checkhead_id); -- -- Name: checkitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY checkitem ADD CONSTRAINT checkitem_pkey PRIMARY KEY (checkitem_id); -- -- Name: classcode_classcode_code_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY classcode ADD CONSTRAINT classcode_classcode_code_key UNIQUE (classcode_code); -- -- Name: classcode_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY classcode ADD CONSTRAINT classcode_pkey PRIMARY KEY (classcode_id); -- -- Name: cmd_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cmd ADD CONSTRAINT cmd_pkey PRIMARY KEY (cmd_id); -- -- Name: cmdarg_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cmdarg ADD CONSTRAINT cmdarg_pkey PRIMARY KEY (cmdarg_id); -- -- Name: cmhead_cmhead_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_cmhead_number_key UNIQUE (cmhead_number); -- -- Name: cmhead_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_pkey PRIMARY KEY (cmhead_id); -- -- Name: cmheadtax_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cmheadtax ADD CONSTRAINT cmheadtax_pkey PRIMARY KEY (taxhist_id); -- -- Name: cmitem_cmhead_id_linenumber_unique; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cmitem ADD CONSTRAINT cmitem_cmhead_id_linenumber_unique UNIQUE (cmitem_cmhead_id, cmitem_linenumber); -- -- Name: cmitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cmitem ADD CONSTRAINT cmitem_pkey PRIMARY KEY (cmitem_id); -- -- Name: cmitemtax_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cmitemtax ADD CONSTRAINT cmitemtax_pkey PRIMARY KEY (taxhist_id); -- -- Name: cmnttype_cmnttype_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cmnttype ADD CONSTRAINT cmnttype_cmnttype_name_key UNIQUE (cmnttype_name); -- -- Name: cmnttype_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cmnttype ADD CONSTRAINT cmnttype_pkey PRIMARY KEY (cmnttype_id); -- -- Name: cmnttypesource_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cmnttypesource ADD CONSTRAINT cmnttypesource_pkey PRIMARY KEY (cmnttypesource_id); -- -- Name: cntct_cntct_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cntct ADD CONSTRAINT cntct_cntct_number_key UNIQUE (cntct_number); -- -- Name: cntct_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cntct ADD CONSTRAINT cntct_pkey PRIMARY KEY (cntct_id); -- -- Name: cntctaddr_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cntctaddr ADD CONSTRAINT cntctaddr_pkey PRIMARY KEY (cntctaddr_id); -- -- Name: cntctdata_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cntctdata ADD CONSTRAINT cntctdata_pkey PRIMARY KEY (cntctdata_id); -- -- Name: cntcteml_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cntcteml ADD CONSTRAINT cntcteml_pkey PRIMARY KEY (cntcteml_id); -- -- Name: cntctmrgd_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cntctmrgd ADD CONSTRAINT cntctmrgd_pkey PRIMARY KEY (cntctmrgd_cntct_id); -- -- Name: cntctsel_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cntctsel ADD CONSTRAINT cntctsel_pkey PRIMARY KEY (cntctsel_cntct_id); -- -- Name: cntslip_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cntslip ADD CONSTRAINT cntslip_pkey PRIMARY KEY (cntslip_id); -- -- Name: cobill_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cobill ADD CONSTRAINT cobill_pkey PRIMARY KEY (cobill_id); -- -- Name: cobilltax_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cobilltax ADD CONSTRAINT cobilltax_pkey PRIMARY KEY (taxhist_id); -- -- Name: cobmisc_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cobmisc ADD CONSTRAINT cobmisc_pkey PRIMARY KEY (cobmisc_id); -- -- Name: cobmisctax_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cobmisctax ADD CONSTRAINT cobmisctax_pkey PRIMARY KEY (taxhist_id); -- -- Name: cohead_cohead_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_number_key UNIQUE (cohead_number); -- -- Name: cohead_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cohead ADD CONSTRAINT cohead_pkey PRIMARY KEY (cohead_id); -- -- Name: cohist_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cohist ADD CONSTRAINT cohist_pkey PRIMARY KEY (cohist_id); -- -- Name: cohisttax_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY cohisttax ADD CONSTRAINT cohisttax_pkey PRIMARY KEY (taxhist_id); -- -- Name: coitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY coitem ADD CONSTRAINT coitem_pkey PRIMARY KEY (coitem_id); -- -- Name: comment_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY comment ADD CONSTRAINT comment_pkey PRIMARY KEY (comment_id); -- -- Name: company_company_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY company ADD CONSTRAINT company_company_number_key UNIQUE (company_number); -- -- Name: company_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY company ADD CONSTRAINT company_pkey PRIMARY KEY (company_id); -- -- Name: contrct_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY contrct ADD CONSTRAINT contrct_pkey PRIMARY KEY (contrct_id); -- -- Name: costcat_costcat_code_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY costcat ADD CONSTRAINT costcat_costcat_code_key UNIQUE (costcat_code); -- -- Name: costcat_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY costcat ADD CONSTRAINT costcat_pkey PRIMARY KEY (costcat_id); -- -- Name: costelem_costelem_type_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY costelem ADD CONSTRAINT costelem_costelem_type_key UNIQUE (costelem_type); -- -- Name: costelem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY costelem ADD CONSTRAINT costelem_pkey PRIMARY KEY (costelem_id); -- -- Name: costhist_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY costhist ADD CONSTRAINT costhist_pkey PRIMARY KEY (costhist_id); -- -- Name: costupdate_costupdate_item_id_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY costupdate ADD CONSTRAINT costupdate_costupdate_item_id_key UNIQUE (costupdate_item_id); -- -- Name: country_country_abbr_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY country ADD CONSTRAINT country_country_abbr_key UNIQUE (country_abbr); -- -- Name: country_country_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY country ADD CONSTRAINT country_country_name_key UNIQUE (country_name); -- -- Name: country_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY country ADD CONSTRAINT country_pkey PRIMARY KEY (country_id); -- -- Name: crmacct_crmacct_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_number_key UNIQUE (crmacct_number); -- -- Name: crmacct_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_pkey PRIMARY KEY (crmacct_id); -- -- Name: crmacctsel_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY crmacctsel ADD CONSTRAINT crmacctsel_pkey PRIMARY KEY (crmacctsel_src_crmacct_id); -- -- Name: curr_rate_curr_id_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY curr_rate ADD CONSTRAINT curr_rate_curr_id_key UNIQUE (curr_id, curr_effective); -- -- Name: curr_rate_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY curr_rate ADD CONSTRAINT curr_rate_pkey PRIMARY KEY (curr_rate_id); -- -- Name: curr_symbol_curr_abbr_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY curr_symbol ADD CONSTRAINT curr_symbol_curr_abbr_key UNIQUE (curr_abbr); -- -- Name: curr_symbol_curr_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY curr_symbol ADD CONSTRAINT curr_symbol_curr_name_key UNIQUE (curr_name); -- -- Name: curr_symbol_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY curr_symbol ADD CONSTRAINT curr_symbol_pkey PRIMARY KEY (curr_id); -- -- Name: cust_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY custinfo ADD CONSTRAINT cust_pkey PRIMARY KEY (cust_id); -- -- Name: custform_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY custform ADD CONSTRAINT custform_pkey PRIMARY KEY (custform_id); -- -- Name: custgrp_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY custgrp ADD CONSTRAINT custgrp_pkey PRIMARY KEY (custgrp_id); -- -- Name: custgrpitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY custgrpitem ADD CONSTRAINT custgrpitem_pkey PRIMARY KEY (custgrpitem_id); -- -- Name: custinfo_cust_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY custinfo ADD CONSTRAINT custinfo_cust_number_key UNIQUE (cust_number); -- -- Name: custtype_custtype_code_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY custtype ADD CONSTRAINT custtype_custtype_code_key UNIQUE (custtype_code); -- -- Name: custtype_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY custtype ADD CONSTRAINT custtype_pkey PRIMARY KEY (custtype_id); -- -- Name: dept_dept_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY dept ADD CONSTRAINT dept_dept_number_key UNIQUE (dept_number); -- -- Name: dept_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY dept ADD CONSTRAINT dept_pkey PRIMARY KEY (dept_id); -- -- Name: destination_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY destination ADD CONSTRAINT destination_pkey PRIMARY KEY (destination_id); -- -- Name: docass_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY docass ADD CONSTRAINT docass_pkey PRIMARY KEY (docass_id); -- -- Name: emp_emp_code_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY emp ADD CONSTRAINT emp_emp_code_key UNIQUE (emp_code); -- -- Name: emp_emp_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY emp ADD CONSTRAINT emp_emp_number_key UNIQUE (emp_number); -- -- Name: emp_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY emp ADD CONSTRAINT emp_pkey PRIMARY KEY (emp_id); -- -- Name: empgrp_empgrp_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY empgrp ADD CONSTRAINT empgrp_empgrp_name_key UNIQUE (empgrp_name); -- -- Name: empgrp_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY empgrp ADD CONSTRAINT empgrp_pkey PRIMARY KEY (empgrp_id); -- -- Name: empgrpitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY empgrpitem ADD CONSTRAINT empgrpitem_pkey PRIMARY KEY (empgrpitem_id); -- -- Name: evntlog_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY evntlog ADD CONSTRAINT evntlog_pkey PRIMARY KEY (evntlog_id); -- -- Name: evntnot_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY evntnot ADD CONSTRAINT evntnot_pkey PRIMARY KEY (evntnot_id); -- -- Name: evnttype_evnttype_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY evnttype ADD CONSTRAINT evnttype_evnttype_name_key UNIQUE (evnttype_name); -- -- Name: evnttype_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY evnttype ADD CONSTRAINT evnttype_pkey PRIMARY KEY (evnttype_id); -- -- Name: expcat_expcat_code_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY expcat ADD CONSTRAINT expcat_expcat_code_key UNIQUE (expcat_code); -- -- Name: expcat_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY expcat ADD CONSTRAINT expcat_pkey PRIMARY KEY (expcat_id); -- -- Name: file_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY file ADD CONSTRAINT file_pkey PRIMARY KEY (file_id); -- -- Name: filter_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY filter ADD CONSTRAINT filter_pkey PRIMARY KEY (filter_id); -- -- Name: fkey_flcol_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY flcol ADD CONSTRAINT fkey_flcol_key PRIMARY KEY (flcol_id); -- -- Name: flgrp_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY flgrp ADD CONSTRAINT flgrp_pkey PRIMARY KEY (flgrp_id); -- -- Name: flhead_flhead_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY flhead ADD CONSTRAINT flhead_flhead_name_key UNIQUE (flhead_name); -- -- Name: flhead_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY flhead ADD CONSTRAINT flhead_pkey PRIMARY KEY (flhead_id); -- -- Name: flitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY flitem ADD CONSTRAINT flitem_pkey PRIMARY KEY (flitem_id); -- -- Name: flnotes_flnotes_flhead_id_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY flnotes ADD CONSTRAINT flnotes_flnotes_flhead_id_key UNIQUE (flnotes_flhead_id, flnotes_period_id); -- -- Name: flrpt_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY flrpt ADD CONSTRAINT flrpt_pkey PRIMARY KEY (flrpt_id); -- -- Name: flspec_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY flspec ADD CONSTRAINT flspec_pkey PRIMARY KEY (flspec_id); -- -- Name: form_form_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY form ADD CONSTRAINT form_form_name_key UNIQUE (form_name); -- -- Name: form_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY form ADD CONSTRAINT form_pkey PRIMARY KEY (form_id); -- -- Name: freightclass_freightclass_code_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY freightclass ADD CONSTRAINT freightclass_freightclass_code_key UNIQUE (freightclass_code); -- -- Name: freightclass_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY freightclass ADD CONSTRAINT freightclass_pkey PRIMARY KEY (freightclass_id); -- -- Name: glseries_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY glseries ADD CONSTRAINT glseries_pkey PRIMARY KEY (glseries_id); -- -- Name: gltrans_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY gltrans ADD CONSTRAINT gltrans_pkey PRIMARY KEY (gltrans_id); -- -- Name: grp_grp_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY grp ADD CONSTRAINT grp_grp_name_key UNIQUE (grp_name); -- -- Name: grp_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY grp ADD CONSTRAINT grp_pkey PRIMARY KEY (grp_id); -- -- Name: grppriv_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY grppriv ADD CONSTRAINT grppriv_pkey PRIMARY KEY (grppriv_id); -- -- Name: hnfc_hnfc_code_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY hnfc ADD CONSTRAINT hnfc_hnfc_code_key UNIQUE (hnfc_code); -- -- Name: hnfc_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY hnfc ADD CONSTRAINT hnfc_pkey PRIMARY KEY (hnfc_id); -- -- Name: image_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY image ADD CONSTRAINT image_pkey PRIMARY KEY (image_id); -- -- Name: imageass_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY imageass ADD CONSTRAINT imageass_pkey PRIMARY KEY (imageass_id); -- -- Name: incdt_incdt_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_number_key UNIQUE (incdt_number); -- -- Name: incdt_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY incdt ADD CONSTRAINT incdt_pkey PRIMARY KEY (incdt_id); -- -- Name: incdtcat_incdtcat_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY incdtcat ADD CONSTRAINT incdtcat_incdtcat_name_key UNIQUE (incdtcat_name); -- -- Name: incdtcat_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY incdtcat ADD CONSTRAINT incdtcat_pkey PRIMARY KEY (incdtcat_id); -- -- Name: incdthist_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY incdthist ADD CONSTRAINT incdthist_pkey PRIMARY KEY (incdthist_id); -- -- Name: incdtpriority_incdtpriority_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY incdtpriority ADD CONSTRAINT incdtpriority_incdtpriority_name_key UNIQUE (incdtpriority_name); -- -- Name: incdtpriority_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY incdtpriority ADD CONSTRAINT incdtpriority_pkey PRIMARY KEY (incdtpriority_id); -- -- Name: incdtresolution_incdtresolution_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY incdtresolution ADD CONSTRAINT incdtresolution_incdtresolution_name_key UNIQUE (incdtresolution_name); -- -- Name: incdtresolution_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY incdtresolution ADD CONSTRAINT incdtresolution_pkey PRIMARY KEY (incdtresolution_id); -- -- Name: incdtseverity_incdtseverity_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY incdtseverity ADD CONSTRAINT incdtseverity_incdtseverity_name_key UNIQUE (incdtseverity_name); -- -- Name: incdtseverity_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY incdtseverity ADD CONSTRAINT incdtseverity_pkey PRIMARY KEY (incdtseverity_id); -- -- Name: invbal_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY invbal ADD CONSTRAINT invbal_pkey PRIMARY KEY (invbal_id); -- -- Name: invchead_invcnumber_unique; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY invchead ADD CONSTRAINT invchead_invcnumber_unique UNIQUE (invchead_invcnumber); -- -- Name: invchead_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY invchead ADD CONSTRAINT invchead_pkey PRIMARY KEY (invchead_id); -- -- Name: invcheadtax_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY invcheadtax ADD CONSTRAINT invcheadtax_pkey PRIMARY KEY (taxhist_id); -- -- Name: invcitem_invchead_id_linenumber_unique; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY invcitem ADD CONSTRAINT invcitem_invchead_id_linenumber_unique UNIQUE (invcitem_invchead_id, invcitem_linenumber); -- -- Name: invcitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY invcitem ADD CONSTRAINT invcitem_pkey PRIMARY KEY (invcitem_id); -- -- Name: invcitemtax_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY invcitemtax ADD CONSTRAINT invcitemtax_pkey PRIMARY KEY (taxhist_id); -- -- Name: invcnt_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY invcnt ADD CONSTRAINT invcnt_pkey PRIMARY KEY (invcnt_id); -- -- Name: invdetail_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY invdetail ADD CONSTRAINT invdetail_pkey PRIMARY KEY (invdetail_id); -- -- Name: invhist_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY invhist ADD CONSTRAINT invhist_pkey PRIMARY KEY (invhist_id); -- -- Name: invhistexpcat_invhist_id_expcat_id; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY invhistexpcat ADD CONSTRAINT invhistexpcat_invhist_id_expcat_id UNIQUE (invhistexpcat_invhist_id, invhistexpcat_expcat_id); -- -- Name: invhistexpcat_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY invhistexpcat ADD CONSTRAINT invhistexpcat_pkey PRIMARY KEY (invhistexpcat_id); -- -- Name: ipsass_ipsass_ipshead_id_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY ipsass ADD CONSTRAINT ipsass_ipsass_ipshead_id_key UNIQUE (ipsass_ipshead_id, ipsass_cust_id, ipsass_custtype_id, ipsass_custtype_pattern, ipsass_shipto_id, ipsass_shipto_pattern); -- -- Name: ipsass_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY ipsass ADD CONSTRAINT ipsass_pkey PRIMARY KEY (ipsass_id); -- -- Name: ipsfreight_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY ipsfreight ADD CONSTRAINT ipsfreight_pkey PRIMARY KEY (ipsfreight_id); -- -- Name: ipshead_ipshead_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY ipshead ADD CONSTRAINT ipshead_ipshead_name_key UNIQUE (ipshead_name); -- -- Name: ipshead_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY ipshead ADD CONSTRAINT ipshead_pkey PRIMARY KEY (ipshead_id); -- -- Name: ipsitem_ipsitem_ipshead_id_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY ipsiteminfo ADD CONSTRAINT ipsitem_ipsitem_ipshead_id_key UNIQUE (ipsitem_ipshead_id, ipsitem_item_id, ipsitem_prodcat_id, ipsitem_qtybreak, ipsitem_qty_uom_id, ipsitem_price_uom_id); -- -- Name: ipsitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY ipsiteminfo ADD CONSTRAINT ipsitem_pkey PRIMARY KEY (ipsitem_id); -- -- Name: ipsitemchar_ipsitemchar_ipsitem_id_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY ipsitemchar ADD CONSTRAINT ipsitemchar_ipsitemchar_ipsitem_id_key UNIQUE (ipsitemchar_ipsitem_id, ipsitemchar_char_id, ipsitemchar_value); -- -- Name: ipsitemchar_ipsitemchar_ipsitem_id_key1; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY ipsitemchar ADD CONSTRAINT ipsitemchar_ipsitemchar_ipsitem_id_key1 UNIQUE (ipsitemchar_ipsitem_id, ipsitemchar_char_id, ipsitemchar_value); -- -- Name: ipsitemchar_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY ipsitemchar ADD CONSTRAINT ipsitemchar_pkey PRIMARY KEY (ipsitemchar_id); -- -- Name: ipsprodcat_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY ipsprodcat_bak ADD CONSTRAINT ipsprodcat_pkey PRIMARY KEY (ipsprodcat_id); -- -- Name: item_item_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY item ADD CONSTRAINT item_item_number_key UNIQUE (item_number); -- -- Name: item_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY item ADD CONSTRAINT item_pkey PRIMARY KEY (item_id); -- -- Name: itemalias_itemalias_item_id_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemalias ADD CONSTRAINT itemalias_itemalias_item_id_key UNIQUE (itemalias_item_id, itemalias_number); -- -- Name: itemalias_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemalias ADD CONSTRAINT itemalias_pkey PRIMARY KEY (itemalias_id); -- -- Name: itemcost_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemcost ADD CONSTRAINT itemcost_pkey PRIMARY KEY (itemcost_id); -- -- Name: itemgrp_itemgrp_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemgrp ADD CONSTRAINT itemgrp_itemgrp_name_key UNIQUE (itemgrp_name); -- -- Name: itemgrp_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemgrp ADD CONSTRAINT itemgrp_pkey PRIMARY KEY (itemgrp_id); -- -- Name: itemgrpitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemgrpitem ADD CONSTRAINT itemgrpitem_pkey PRIMARY KEY (itemgrpitem_id); -- -- Name: itemloc_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemloc ADD CONSTRAINT itemloc_pkey PRIMARY KEY (itemloc_id); -- -- Name: itemlocdist_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemlocdist ADD CONSTRAINT itemlocdist_pkey PRIMARY KEY (itemlocdist_id); -- -- Name: itemlocpost_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemlocpost ADD CONSTRAINT itemlocpost_pkey PRIMARY KEY (itemlocpost_id); -- -- Name: itemsite_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemsite ADD CONSTRAINT itemsite_pkey PRIMARY KEY (itemsite_id); -- -- Name: itemsrc_itemsrc_vend_id_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemsrc ADD CONSTRAINT itemsrc_itemsrc_vend_id_key UNIQUE (itemsrc_vend_id, itemsrc_item_id, itemsrc_effective, itemsrc_expires, itemsrc_vend_item_number, itemsrc_manuf_name, itemsrc_manuf_item_number); -- -- Name: itemsrc_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemsrc ADD CONSTRAINT itemsrc_pkey PRIMARY KEY (itemsrc_id); -- -- Name: itemsrcp_itemsrcp_itemsrc_id_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemsrcp ADD CONSTRAINT itemsrcp_itemsrcp_itemsrc_id_key UNIQUE (itemsrcp_itemsrc_id, itemsrcp_warehous_id, itemsrcp_dropship, itemsrcp_qtybreak); -- -- Name: itemsrcp_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemsrcp ADD CONSTRAINT itemsrcp_pkey PRIMARY KEY (itemsrcp_id); -- -- Name: itemsub_itemsub_parent_item_id_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemsub ADD CONSTRAINT itemsub_itemsub_parent_item_id_key UNIQUE (itemsub_parent_item_id, itemsub_sub_item_id); -- -- Name: itemsub_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemsub ADD CONSTRAINT itemsub_pkey PRIMARY KEY (itemsub_id); -- -- Name: itemtax_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemtax ADD CONSTRAINT itemtax_pkey PRIMARY KEY (itemtax_id); -- -- Name: itemtrans_itemtrans_source_item_id_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemtrans ADD CONSTRAINT itemtrans_itemtrans_source_item_id_key UNIQUE (itemtrans_source_item_id, itemtrans_target_item_id); -- -- Name: itemtrans_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemtrans ADD CONSTRAINT itemtrans_pkey PRIMARY KEY (itemtrans_id); -- -- Name: itemuom_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemuom ADD CONSTRAINT itemuom_pkey PRIMARY KEY (itemuom_id); -- -- Name: itemuomconv_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY itemuomconv ADD CONSTRAINT itemuomconv_pkey PRIMARY KEY (itemuomconv_id); -- -- Name: jrnluse_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY jrnluse ADD CONSTRAINT jrnluse_pkey PRIMARY KEY (jrnluse_id); -- -- Name: labeldef_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY labeldef ADD CONSTRAINT labeldef_pkey PRIMARY KEY (labeldef_id); -- -- Name: labelform_labelform_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY labelform ADD CONSTRAINT labelform_labelform_name_key UNIQUE (labelform_name); -- -- Name: labelform_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY labelform ADD CONSTRAINT labelform_pkey PRIMARY KEY (labelform_id); -- -- Name: lang_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY lang ADD CONSTRAINT lang_pkey PRIMARY KEY (lang_id); -- -- Name: locale_locale_code_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY locale ADD CONSTRAINT locale_locale_code_key UNIQUE (locale_code); -- -- Name: locale_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY locale ADD CONSTRAINT locale_pkey PRIMARY KEY (locale_id); -- -- Name: location_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY location ADD CONSTRAINT location_pkey PRIMARY KEY (location_id); -- -- Name: locitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY locitem ADD CONSTRAINT locitem_pkey PRIMARY KEY (locitem_id); -- -- Name: metasql_metasql_group_name_grade_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY metasql ADD CONSTRAINT metasql_metasql_group_name_grade_key UNIQUE (metasql_group, metasql_name, metasql_grade); -- -- Name: metasql_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY metasql ADD CONSTRAINT metasql_pkey PRIMARY KEY (metasql_id); -- -- Name: metric_metric_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY metric ADD CONSTRAINT metric_metric_name_key UNIQUE (metric_name); -- -- Name: metric_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY metric ADD CONSTRAINT metric_pkey PRIMARY KEY (metric_id); -- -- Name: metricenc_metricenc_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY metricenc ADD CONSTRAINT metricenc_metricenc_name_key UNIQUE (metricenc_name); -- -- Name: metricenc_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY metricenc ADD CONSTRAINT metricenc_pkey PRIMARY KEY (metricenc_id); -- -- Name: mrghist_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY mrghist ADD CONSTRAINT mrghist_pkey PRIMARY KEY (mrghist_cntct_id, mrghist_table, mrghist_pkey_col, mrghist_pkey_id, mrghist_cntct_col); -- -- Name: mrgundo_mrgundo_schema_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY mrgundo ADD CONSTRAINT mrgundo_mrgundo_schema_key UNIQUE (mrgundo_schema, mrgundo_table, mrgundo_pkey_col, mrgundo_pkey_id, mrgundo_col); -- -- Name: msg_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY msg ADD CONSTRAINT msg_pkey PRIMARY KEY (msg_id); -- -- Name: msguser_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY msguser ADD CONSTRAINT msguser_pkey PRIMARY KEY (msguser_id); -- -- Name: obsolete_tax_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY obsolete_tax ADD CONSTRAINT obsolete_tax_pkey PRIMARY KEY (tax_id); -- -- Name: ophead_ophead_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY ophead ADD CONSTRAINT ophead_ophead_number_key UNIQUE (ophead_number); -- -- Name: ophead_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY ophead ADD CONSTRAINT ophead_pkey PRIMARY KEY (ophead_id); -- -- Name: opsource_opsource_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY opsource ADD CONSTRAINT opsource_opsource_name_key UNIQUE (opsource_name); -- -- Name: opsource_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY opsource ADD CONSTRAINT opsource_pkey PRIMARY KEY (opsource_id); -- -- Name: opstage_opstage_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY opstage ADD CONSTRAINT opstage_opstage_name_key UNIQUE (opstage_name); -- -- Name: opstage_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY opstage ADD CONSTRAINT opstage_pkey PRIMARY KEY (opstage_id); -- -- Name: optype_optype_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY optype ADD CONSTRAINT optype_optype_name_key UNIQUE (optype_name); -- -- Name: optype_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY optype ADD CONSTRAINT optype_pkey PRIMARY KEY (optype_id); -- -- Name: orderseq_orderseq_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY orderseq ADD CONSTRAINT orderseq_orderseq_name_key UNIQUE (orderseq_name); -- -- Name: orderseq_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY orderseq ADD CONSTRAINT orderseq_pkey PRIMARY KEY (orderseq_id); -- -- Name: pack_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY pack ADD CONSTRAINT pack_pkey PRIMARY KEY (pack_id); -- -- Name: payaropen_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY payaropen ADD CONSTRAINT payaropen_pkey PRIMARY KEY (payaropen_ccpay_id, payaropen_aropen_id); -- -- Name: period_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY period ADD CONSTRAINT period_pkey PRIMARY KEY (period_id); -- -- Name: pkgdep_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgdep ADD CONSTRAINT pkgdep_pkey PRIMARY KEY (pkgdep_id); -- -- Name: pkghead_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkghead ADD CONSTRAINT pkghead_pkey PRIMARY KEY (pkghead_id); -- -- Name: pkgitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgitem ADD CONSTRAINT pkgitem_pkey PRIMARY KEY (pkgitem_id); -- -- Name: pkgitem_pkgitem_pkghead_id_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgitem ADD CONSTRAINT pkgitem_pkgitem_pkghead_id_key UNIQUE (pkgitem_pkghead_id, pkgitem_type, pkgitem_name); -- -- Name: pkgitem_pkgitem_pkghead_id_key1; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgitem ADD CONSTRAINT pkgitem_pkgitem_pkghead_id_key1 UNIQUE (pkgitem_pkghead_id, pkgitem_type, pkgitem_item_id); -- -- Name: plancode_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY plancode ADD CONSTRAINT plancode_pkey PRIMARY KEY (plancode_id); -- -- Name: plancode_plancode_code_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY plancode ADD CONSTRAINT plancode_plancode_code_key UNIQUE (plancode_code); -- -- Name: pohead_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pkey PRIMARY KEY (pohead_id); -- -- Name: pohead_pohead_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_number_key UNIQUE (pohead_number); -- -- Name: poitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY poitem ADD CONSTRAINT poitem_pkey PRIMARY KEY (poitem_id); -- -- Name: poitem_poitem_pohead_id_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY poitem ADD CONSTRAINT poitem_poitem_pohead_id_key UNIQUE (poitem_pohead_id, poitem_linenumber); -- -- Name: poreject_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY poreject ADD CONSTRAINT poreject_pkey PRIMARY KEY (poreject_id); -- -- Name: potype_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY potype ADD CONSTRAINT potype_pkey PRIMARY KEY (potype_id); -- -- Name: pr_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY pr ADD CONSTRAINT pr_pkey PRIMARY KEY (pr_id); -- -- Name: prftcntr_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY prftcntr ADD CONSTRAINT prftcntr_pkey PRIMARY KEY (prftcntr_id); -- -- Name: prftcntr_prftcntr_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY prftcntr ADD CONSTRAINT prftcntr_prftcntr_number_key UNIQUE (prftcntr_number); -- -- Name: priv_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY priv ADD CONSTRAINT priv_pkey PRIMARY KEY (priv_id); -- -- Name: prj_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY prj ADD CONSTRAINT prj_pkey PRIMARY KEY (prj_id); -- -- Name: prj_prj_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY prj ADD CONSTRAINT prj_prj_number_key UNIQUE (prj_number); -- -- Name: prjtask_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY prjtask ADD CONSTRAINT prjtask_pkey PRIMARY KEY (prjtask_id); -- -- Name: prjtask_prjtask_prj_id_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY prjtask ADD CONSTRAINT prjtask_prjtask_prj_id_key UNIQUE (prjtask_prj_id, prjtask_number); -- -- Name: prjtaskuser_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY prjtaskuser ADD CONSTRAINT prjtaskuser_pkey PRIMARY KEY (prjtaskuser_id); -- -- Name: prodcat_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY prodcat ADD CONSTRAINT prodcat_pkey PRIMARY KEY (prodcat_id); -- -- Name: prodcat_prodcat_code_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY prodcat ADD CONSTRAINT prodcat_prodcat_code_key UNIQUE (prodcat_code); -- -- Name: prospect_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY prospect ADD CONSTRAINT prospect_pkey PRIMARY KEY (prospect_id); -- -- Name: prospect_prospect_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY prospect ADD CONSTRAINT prospect_prospect_number_key UNIQUE (prospect_number); -- -- Name: qryhead_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY qryhead ADD CONSTRAINT qryhead_pkey PRIMARY KEY (qryhead_id); -- -- Name: qryhead_qryhead_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY qryhead ADD CONSTRAINT qryhead_qryhead_name_key UNIQUE (qryhead_name); -- -- Name: qryitem_qryitem_qryhead_id_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY qryitem ADD CONSTRAINT qryitem_qryitem_qryhead_id_key UNIQUE (qryitem_qryhead_id, qryitem_name); -- -- Name: qryitem_qryitem_qryhead_id_key1; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY qryitem ADD CONSTRAINT qryitem_qryitem_qryhead_id_key1 UNIQUE (qryitem_qryhead_id, qryitem_order); -- -- Name: quhead_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY quhead ADD CONSTRAINT quhead_pkey PRIMARY KEY (quhead_id); -- -- Name: quhead_quhead_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_number_key UNIQUE (quhead_number); -- -- Name: quitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY quitem ADD CONSTRAINT quitem_pkey PRIMARY KEY (quitem_id); -- -- Name: rcalitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY rcalitem ADD CONSTRAINT rcalitem_pkey PRIMARY KEY (rcalitem_id); -- -- Name: recur_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY recur ADD CONSTRAINT recur_pkey PRIMARY KEY (recur_id); -- -- Name: recur_recur_parent_id_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY recur ADD CONSTRAINT recur_recur_parent_id_key UNIQUE (recur_parent_id, recur_parent_type); -- -- Name: recurtype_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY recurtype ADD CONSTRAINT recurtype_pkey PRIMARY KEY (recurtype_id); -- -- Name: recurtype_recurtype_type_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY recurtype ADD CONSTRAINT recurtype_recurtype_type_key UNIQUE (recurtype_type); -- -- Name: recv_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY recv ADD CONSTRAINT recv_pkey PRIMARY KEY (recv_id); -- -- Name: report_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY report ADD CONSTRAINT report_pkey PRIMARY KEY (report_id); -- -- Name: rjctcode_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY rjctcode ADD CONSTRAINT rjctcode_pkey PRIMARY KEY (rjctcode_id); -- -- Name: rjctcode_rjctcode_code_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY rjctcode ADD CONSTRAINT rjctcode_rjctcode_code_key UNIQUE (rjctcode_code); -- -- Name: rsncode_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY rsncode ADD CONSTRAINT rsncode_pkey PRIMARY KEY (rsncode_id); -- -- Name: rsncode_rsncode_code_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY rsncode ADD CONSTRAINT rsncode_rsncode_code_key UNIQUE (rsncode_code); -- -- Name: sale_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY sale ADD CONSTRAINT sale_pkey PRIMARY KEY (sale_id); -- -- Name: sale_sale_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY sale ADD CONSTRAINT sale_sale_name_key UNIQUE (sale_name); -- -- Name: salesaccnt_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY salesaccnt ADD CONSTRAINT salesaccnt_pkey PRIMARY KEY (salesaccnt_id); -- -- Name: salescat_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY salescat ADD CONSTRAINT salescat_pkey PRIMARY KEY (salescat_id); -- -- Name: salescat_salescat_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY salescat ADD CONSTRAINT salescat_salescat_name_key UNIQUE (salescat_name); -- -- Name: salesrep_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY salesrep ADD CONSTRAINT salesrep_pkey PRIMARY KEY (salesrep_id); -- -- Name: salesrep_salesrep_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY salesrep ADD CONSTRAINT salesrep_salesrep_number_key UNIQUE (salesrep_number); -- -- Name: saletype_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY saletype ADD CONSTRAINT saletype_pkey PRIMARY KEY (saletype_id); -- -- Name: schemaord_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY schemaord ADD CONSTRAINT schemaord_pkey PRIMARY KEY (schemaord_id); -- -- Name: schemaord_schemaord_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY schemaord ADD CONSTRAINT schemaord_schemaord_name_key UNIQUE (schemaord_name); -- -- Name: schemaord_schemaord_order_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY schemaord ADD CONSTRAINT schemaord_schemaord_order_key UNIQUE (schemaord_order); -- -- Name: script_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY script ADD CONSTRAINT script_pkey PRIMARY KEY (script_id); -- -- Name: shift_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY shift ADD CONSTRAINT shift_pkey PRIMARY KEY (shift_id); -- -- Name: shipchrg_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY shipchrg ADD CONSTRAINT shipchrg_pkey PRIMARY KEY (shipchrg_id); -- -- Name: shipdata_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY shipdata ADD CONSTRAINT shipdata_pkey PRIMARY KEY (shipdata_cohead_number, shipdata_cosmisc_tracknum, shipdata_cosmisc_packnum_tracknum, shipdata_void_ind); -- -- Name: shipdatasum_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY shipdatasum ADD CONSTRAINT shipdatasum_pkey PRIMARY KEY (shipdatasum_cohead_number, shipdatasum_cosmisc_tracknum, shipdatasum_cosmisc_packnum_tracknum); -- -- Name: shipform_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY shipform ADD CONSTRAINT shipform_pkey PRIMARY KEY (shipform_id); -- -- Name: shipform_shipform_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY shipform ADD CONSTRAINT shipform_shipform_name_key UNIQUE (shipform_name); -- -- Name: shiphead_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY shiphead ADD CONSTRAINT shiphead_pkey PRIMARY KEY (shiphead_id); -- -- Name: shiphead_shiphead_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY shiphead ADD CONSTRAINT shiphead_shiphead_number_key UNIQUE (shiphead_number); -- -- Name: shipitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY shipitem ADD CONSTRAINT shipitem_pkey PRIMARY KEY (shipitem_id); -- -- Name: shipto_num_cust_unique; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shipto_num_cust_unique UNIQUE (shipto_cust_id, shipto_num); -- -- Name: shipto_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shipto_pkey PRIMARY KEY (shipto_id); -- -- Name: shipvia_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY shipvia ADD CONSTRAINT shipvia_pkey PRIMARY KEY (shipvia_id); -- -- Name: shipvia_shipvia_code_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY shipvia ADD CONSTRAINT shipvia_shipvia_code_key UNIQUE (shipvia_code); -- -- Name: shipzone_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY shipzone ADD CONSTRAINT shipzone_pkey PRIMARY KEY (shipzone_id); -- -- Name: shipzone_shipzone_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY shipzone ADD CONSTRAINT shipzone_shipzone_name_key UNIQUE (shipzone_name); -- -- Name: sitetype_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY sitetype ADD CONSTRAINT sitetype_pkey PRIMARY KEY (sitetype_id); -- -- Name: sitetype_sitetype_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY sitetype ADD CONSTRAINT sitetype_sitetype_name_key UNIQUE (sitetype_name); -- -- Name: sltrans_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY sltrans ADD CONSTRAINT sltrans_pkey PRIMARY KEY (sltrans_id); -- -- Name: source_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY source ADD CONSTRAINT source_pkey PRIMARY KEY (source_id); -- -- Name: source_source_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY source ADD CONSTRAINT source_source_name_key UNIQUE (source_name); -- -- Name: state_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY state ADD CONSTRAINT state_pkey PRIMARY KEY (state_id); -- -- Name: state_state_country_id_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY state ADD CONSTRAINT state_state_country_id_key UNIQUE (state_country_id, state_name); -- -- Name: status_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY status ADD CONSTRAINT status_pkey PRIMARY KEY (status_id); -- -- Name: status_status_type_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY status ADD CONSTRAINT status_status_type_key UNIQUE (status_type, status_code); -- -- Name: stdjrnl_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY stdjrnl ADD CONSTRAINT stdjrnl_pkey PRIMARY KEY (stdjrnl_id); -- -- Name: stdjrnl_stdjrnl_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY stdjrnl ADD CONSTRAINT stdjrnl_stdjrnl_name_key UNIQUE (stdjrnl_name); -- -- Name: stdjrnlgrp_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY stdjrnlgrp ADD CONSTRAINT stdjrnlgrp_pkey PRIMARY KEY (stdjrnlgrp_id); -- -- Name: stdjrnlgrp_stdjrnlgrp_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY stdjrnlgrp ADD CONSTRAINT stdjrnlgrp_stdjrnlgrp_name_key UNIQUE (stdjrnlgrp_name); -- -- Name: stdjrnlgrpitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY stdjrnlgrpitem ADD CONSTRAINT stdjrnlgrpitem_pkey PRIMARY KEY (stdjrnlgrpitem_id); -- -- Name: stdjrnlitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY stdjrnlitem ADD CONSTRAINT stdjrnlitem_pkey PRIMARY KEY (stdjrnlitem_id); -- -- Name: subaccnt_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY subaccnt ADD CONSTRAINT subaccnt_pkey PRIMARY KEY (subaccnt_id); -- -- Name: subaccnt_subaccnt_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY subaccnt ADD CONSTRAINT subaccnt_subaccnt_number_key UNIQUE (subaccnt_number); -- -- Name: subaccnttype_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY subaccnttype ADD CONSTRAINT subaccnttype_pkey PRIMARY KEY (subaccnttype_id); -- -- Name: tax_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY tax ADD CONSTRAINT tax_pkey PRIMARY KEY (tax_id); -- -- Name: taxass_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY taxass ADD CONSTRAINT taxass_pkey PRIMARY KEY (taxass_id); -- -- Name: taxass_taxass_taxzone_id_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY taxass ADD CONSTRAINT taxass_taxass_taxzone_id_key UNIQUE (taxass_taxzone_id, taxass_taxtype_id, taxass_tax_id); -- -- Name: taxauth_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY taxauth ADD CONSTRAINT taxauth_pkey PRIMARY KEY (taxauth_id); -- -- Name: taxauth_taxauth_code_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY taxauth ADD CONSTRAINT taxauth_taxauth_code_key UNIQUE (taxauth_code); -- -- Name: taxclass_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY taxclass ADD CONSTRAINT taxclass_pkey PRIMARY KEY (taxclass_id); -- -- Name: taxclass_taxclass_code_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY taxclass ADD CONSTRAINT taxclass_taxclass_code_key UNIQUE (taxclass_code); -- -- Name: taxhist_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY taxhist ADD CONSTRAINT taxhist_pkey PRIMARY KEY (taxhist_id); -- -- Name: taxrate_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY taxrate ADD CONSTRAINT taxrate_pkey PRIMARY KEY (taxrate_id); -- -- Name: taxreg_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY taxreg ADD CONSTRAINT taxreg_pkey PRIMARY KEY (taxreg_id); -- -- Name: taxtype_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY taxtype ADD CONSTRAINT taxtype_pkey PRIMARY KEY (taxtype_id); -- -- Name: taxtype_taxtype_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY taxtype ADD CONSTRAINT taxtype_taxtype_name_key UNIQUE (taxtype_name); -- -- Name: taxzone_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY taxzone ADD CONSTRAINT taxzone_pkey PRIMARY KEY (taxzone_id); -- -- Name: taxzone_taxzone_code_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY taxzone ADD CONSTRAINT taxzone_taxzone_code_key UNIQUE (taxzone_code); -- -- Name: terms_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY terms ADD CONSTRAINT terms_pkey PRIMARY KEY (terms_id); -- -- Name: terms_terms_code_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY terms ADD CONSTRAINT terms_terms_code_key UNIQUE (terms_code); -- -- Name: todoitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY todoitem ADD CONSTRAINT todoitem_pkey PRIMARY KEY (todoitem_id); -- -- Name: trialbal_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY trialbal ADD CONSTRAINT trialbal_pkey PRIMARY KEY (trialbal_id); -- -- Name: uiform_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY uiform ADD CONSTRAINT uiform_pkey PRIMARY KEY (uiform_id); -- -- Name: uom_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY uom ADD CONSTRAINT uom_pkey PRIMARY KEY (uom_id); -- -- Name: uom_uom_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY uom ADD CONSTRAINT uom_uom_name_key UNIQUE (uom_name); -- -- Name: uomconv_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY uomconv ADD CONSTRAINT uomconv_pkey PRIMARY KEY (uomconv_id); -- -- Name: uomtype_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY uomtype ADD CONSTRAINT uomtype_pkey PRIMARY KEY (uomtype_id); -- -- Name: uomtype_uomtype_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY uomtype ADD CONSTRAINT uomtype_uomtype_name_key UNIQUE (uomtype_name); -- -- Name: urlinfo_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY urlinfo ADD CONSTRAINT urlinfo_pkey PRIMARY KEY (url_id); -- -- Name: usr_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY usr_bak ADD CONSTRAINT usr_pkey PRIMARY KEY (usr_id); -- -- Name: usr_usr_username_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY usr_bak ADD CONSTRAINT usr_usr_username_key UNIQUE (usr_username); -- -- Name: usrgrp_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY usrgrp ADD CONSTRAINT usrgrp_pkey PRIMARY KEY (usrgrp_id); -- -- Name: usrpref_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY usrpref ADD CONSTRAINT usrpref_pkey PRIMARY KEY (usrpref_id); -- -- Name: usrpriv_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY usrpriv ADD CONSTRAINT usrpriv_pkey PRIMARY KEY (usrpriv_id); -- -- Name: vend_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY vendinfo ADD CONSTRAINT vend_pkey PRIMARY KEY (vend_id); -- -- Name: vendaddr_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY vendaddrinfo ADD CONSTRAINT vendaddr_pkey PRIMARY KEY (vendaddr_id); -- -- Name: vendinfo_vend_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY vendinfo ADD CONSTRAINT vendinfo_vend_number_key UNIQUE (vend_number); -- -- Name: vendtype_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY vendtype ADD CONSTRAINT vendtype_pkey PRIMARY KEY (vendtype_id); -- -- Name: vendtype_vendtype_code_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY vendtype ADD CONSTRAINT vendtype_vendtype_code_key UNIQUE (vendtype_code); -- -- Name: vodist_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY vodist ADD CONSTRAINT vodist_pkey PRIMARY KEY (vodist_id); -- -- Name: vohead_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY vohead ADD CONSTRAINT vohead_pkey PRIMARY KEY (vohead_id); -- -- Name: vohead_vohead_number_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY vohead ADD CONSTRAINT vohead_vohead_number_key UNIQUE (vohead_number); -- -- Name: voheadtax_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY voheadtax ADD CONSTRAINT voheadtax_pkey PRIMARY KEY (taxhist_id); -- -- Name: voitem_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY voitem ADD CONSTRAINT voitem_pkey PRIMARY KEY (voitem_id); -- -- Name: voitemtax_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY voitemtax ADD CONSTRAINT voitemtax_pkey PRIMARY KEY (taxhist_id); -- -- Name: warehous_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY whsinfo ADD CONSTRAINT warehous_pkey PRIMARY KEY (warehous_id); -- -- Name: whsezone_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY whsezone ADD CONSTRAINT whsezone_pkey PRIMARY KEY (whsezone_id); -- -- Name: whsinfo_warehous_code_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY whsinfo ADD CONSTRAINT whsinfo_warehous_code_key UNIQUE (warehous_code); -- -- Name: wo_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY wo ADD CONSTRAINT wo_pkey PRIMARY KEY (wo_id); -- -- Name: womatl_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY womatl ADD CONSTRAINT womatl_pkey PRIMARY KEY (womatl_id); -- -- Name: womatlpost_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY womatlpost ADD CONSTRAINT womatlpost_pkey PRIMARY KEY (womatlpost_id); -- -- Name: womatlvar_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY womatlvar ADD CONSTRAINT womatlvar_pkey PRIMARY KEY (womatlvar_id); -- -- Name: xsltmap_name_key; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY xsltmap ADD CONSTRAINT xsltmap_name_key UNIQUE (xsltmap_name); -- -- Name: xsltmap_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY xsltmap ADD CONSTRAINT xsltmap_pkey PRIMARY KEY (xsltmap_id); -- -- Name: yearperiod_pkey; Type: CONSTRAINT; Schema: public; Owner: admin; Tablespace: -- ALTER TABLE ONLY yearperiod ADD CONSTRAINT yearperiod_pkey PRIMARY KEY (yearperiod_id); SET search_path = te, pg_catalog; -- -- Name: pkgcmd_pkey; Type: CONSTRAINT; Schema: te; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgcmd ADD CONSTRAINT pkgcmd_pkey PRIMARY KEY (cmd_id); -- -- Name: pkgcmdarg_pkey; Type: CONSTRAINT; Schema: te; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgcmdarg ADD CONSTRAINT pkgcmdarg_pkey PRIMARY KEY (cmdarg_id); -- -- Name: pkgimage_pkey; Type: CONSTRAINT; Schema: te; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgimage ADD CONSTRAINT pkgimage_pkey PRIMARY KEY (image_id); -- -- Name: pkgmetasql_pkey; Type: CONSTRAINT; Schema: te; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgmetasql ADD CONSTRAINT pkgmetasql_pkey PRIMARY KEY (metasql_id); -- -- Name: pkgpriv_pkey; Type: CONSTRAINT; Schema: te; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgpriv ADD CONSTRAINT pkgpriv_pkey PRIMARY KEY (priv_id); -- -- Name: pkgreport_pkey; Type: CONSTRAINT; Schema: te; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgreport ADD CONSTRAINT pkgreport_pkey PRIMARY KEY (report_id); -- -- Name: pkgscript_pkey; Type: CONSTRAINT; Schema: te; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgscript ADD CONSTRAINT pkgscript_pkey PRIMARY KEY (script_id); -- -- Name: pkguiform_pkey; Type: CONSTRAINT; Schema: te; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkguiform ADD CONSTRAINT pkguiform_pkey PRIMARY KEY (uiform_id); -- -- Name: tecustrate_pkey; Type: CONSTRAINT; Schema: te; Owner: admin; Tablespace: -- ALTER TABLE ONLY tecustrate ADD CONSTRAINT tecustrate_pkey PRIMARY KEY (tecustrate_cust_id); -- -- Name: teexp_pkey; Type: CONSTRAINT; Schema: te; Owner: admin; Tablespace: -- ALTER TABLE ONLY teexp ADD CONSTRAINT teexp_pkey PRIMARY KEY (teexp_id); -- -- Name: tehead_pkey; Type: CONSTRAINT; Schema: te; Owner: admin; Tablespace: -- ALTER TABLE ONLY tehead ADD CONSTRAINT tehead_pkey PRIMARY KEY (tehead_id); -- -- Name: teitem_pkey; Type: CONSTRAINT; Schema: te; Owner: admin; Tablespace: -- ALTER TABLE ONLY teitem ADD CONSTRAINT teitem_pkey PRIMARY KEY (teitem_id); -- -- Name: teprj_pkey; Type: CONSTRAINT; Schema: te; Owner: admin; Tablespace: -- ALTER TABLE ONLY teprj ADD CONSTRAINT teprj_pkey PRIMARY KEY (teprj_id); -- -- Name: teprjtask_pkey; Type: CONSTRAINT; Schema: te; Owner: admin; Tablespace: -- ALTER TABLE ONLY teprjtask ADD CONSTRAINT teprjtask_pkey PRIMARY KEY (teprjtask_id); -- -- Name: teprjtask_teprjtask_prjtask_id_key; Type: CONSTRAINT; Schema: te; Owner: admin; Tablespace: -- ALTER TABLE ONLY teprjtask ADD CONSTRAINT teprjtask_teprjtask_prjtask_id_key UNIQUE (teprjtask_prjtask_id); SET search_path = xtdesktop, pg_catalog; -- -- Name: pkgcmd_pkey; Type: CONSTRAINT; Schema: xtdesktop; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgcmd ADD CONSTRAINT pkgcmd_pkey PRIMARY KEY (cmd_id); -- -- Name: pkgcmdarg_pkey; Type: CONSTRAINT; Schema: xtdesktop; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgcmdarg ADD CONSTRAINT pkgcmdarg_pkey PRIMARY KEY (cmdarg_id); -- -- Name: pkgimage_pkey; Type: CONSTRAINT; Schema: xtdesktop; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgimage ADD CONSTRAINT pkgimage_pkey PRIMARY KEY (image_id); -- -- Name: pkgmetasql_pkey; Type: CONSTRAINT; Schema: xtdesktop; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgmetasql ADD CONSTRAINT pkgmetasql_pkey PRIMARY KEY (metasql_id); -- -- Name: pkgpriv_pkey; Type: CONSTRAINT; Schema: xtdesktop; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgpriv ADD CONSTRAINT pkgpriv_pkey PRIMARY KEY (priv_id); -- -- Name: pkgreport_pkey; Type: CONSTRAINT; Schema: xtdesktop; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgreport ADD CONSTRAINT pkgreport_pkey PRIMARY KEY (report_id); -- -- Name: pkgscript_pkey; Type: CONSTRAINT; Schema: xtdesktop; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkgscript ADD CONSTRAINT pkgscript_pkey PRIMARY KEY (script_id); -- -- Name: pkguiform_pkey; Type: CONSTRAINT; Schema: xtdesktop; Owner: admin; Tablespace: -- ALTER TABLE ONLY pkguiform ADD CONSTRAINT pkguiform_pkey PRIMARY KEY (uiform_id); SET search_path = public, pg_catalog; -- -- Name: accnt_unique_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE UNIQUE INDEX accnt_unique_idx ON accnt USING btree (accnt_number, accnt_profit, accnt_sub, accnt_company); -- -- Name: apopen_apopen_open_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX apopen_apopen_open_idx ON apopen USING btree (apopen_open); -- -- Name: apopen_apopen_vend_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX apopen_apopen_vend_id_idx ON apopen USING btree (apopen_vend_id); -- -- Name: apselect_apselect_apopen_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX apselect_apselect_apopen_id_idx ON apselect USING btree (apselect_apopen_id); -- -- Name: arapply_arapply_target_docnumber_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX arapply_arapply_target_docnumber_idx ON arapply USING btree (arapply_target_docnumber); -- -- Name: aropen_aropen_cust_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX aropen_aropen_cust_id_idx ON aropen USING btree (aropen_cust_id); -- -- Name: aropen_aropen_docnumber_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX aropen_aropen_docnumber_idx ON aropen USING btree (aropen_docnumber); -- -- Name: aropen_aropen_doctype_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX aropen_aropen_doctype_idx ON aropen USING btree (aropen_doctype); -- -- Name: aropen_aropen_open_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX aropen_aropen_open_idx ON aropen USING btree (aropen_open); -- -- Name: aropen_posted_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX aropen_posted_idx ON aropen USING btree (aropen_posted); -- -- Name: aropenalloc_aropen_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX aropenalloc_aropen_id_idx ON aropenalloc USING btree (aropenalloc_aropen_id); -- -- Name: aropenalloc_doc_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX aropenalloc_doc_id_idx ON aropenalloc USING btree (aropenalloc_doc_id); -- -- Name: bomitem_bomitem_item_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX bomitem_bomitem_item_id_idx ON bomitem USING btree (bomitem_item_id); -- -- Name: bomitem_effective_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX bomitem_effective_key ON bomitem USING btree (bomitem_effective); -- -- Name: bomitem_expires_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX bomitem_expires_key ON bomitem USING btree (bomitem_expires); -- -- Name: bomitem_parent_item_id; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX bomitem_parent_item_id ON bomitem USING btree (bomitem_parent_item_id); -- -- Name: bomitemcost_bomitem_id_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX bomitemcost_bomitem_id_key ON bomitemcost USING btree (bomitemcost_bomitem_id); -- -- Name: bomitemcost_master_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE UNIQUE INDEX bomitemcost_master_idx ON bomitemcost USING btree (bomitemcost_bomitem_id, bomitemcost_costelem_id, bomitemcost_lowlevel); -- -- Name: ccard_cust_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX ccard_cust_id_idx ON ccard USING btree (ccard_cust_id); -- -- Name: ccardaud_ccard_cust_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX ccardaud_ccard_cust_id_idx ON ccardaud USING btree (ccardaud_ccard_cust_id_new); -- -- Name: ccardaud_ccard_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX ccardaud_ccard_id_idx ON ccardaud USING btree (ccardaud_ccard_id); -- -- Name: ccpay_ccard_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX ccpay_ccard_id_idx ON ccpay USING btree (ccpay_ccard_id); -- -- Name: ccpay_cust_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX ccpay_cust_id_idx ON ccpay USING btree (ccpay_cust_id); -- -- Name: ccpay_order_number_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX ccpay_order_number_idx ON ccpay USING btree (ccpay_order_number); -- -- Name: charass_target_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX charass_target_idx ON charass USING btree (charass_target_type, charass_target_id); -- -- Name: checkhead_posted_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX checkhead_posted_idx ON checkhead USING btree (checkhead_posted); -- -- Name: checkhead_replaced_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX checkhead_replaced_idx ON checkhead USING btree (checkhead_replaced); -- -- Name: checkitem_apopenitem_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX checkitem_apopenitem_id_idx ON checkitem USING btree (checkitem_apopen_id); -- -- Name: cmhead_invcnumber_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX cmhead_invcnumber_idx ON cmhead USING btree (cmhead_invcnumber); -- -- Name: cntct_email_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX cntct_email_idx ON cntct USING btree (cntct_email); -- -- Name: cntct_name_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX cntct_name_idx ON cntct USING btree (cntct_name); -- -- Name: cobill_cobmisc_id; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX cobill_cobmisc_id ON cobill USING btree (cobill_cobmisc_id); -- -- Name: cobill_coitem_id; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX cobill_coitem_id ON cobill USING btree (cobill_coitem_id); -- -- Name: cobmisc_cohead_id; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX cobmisc_cohead_id ON cobmisc USING btree (cobmisc_cohead_id); -- -- Name: cobmisc_posted; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX cobmisc_posted ON cobmisc USING btree (cobmisc_posted); -- -- Name: cohead_cohead_status_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX cohead_cohead_status_idx ON cohead USING btree (cohead_status); -- -- Name: cohead_cust_id_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX cohead_cust_id_key ON cohead USING btree (cohead_cust_id); -- -- Name: cohead_custponumber_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX cohead_custponumber_idx ON cohead USING btree (cohead_custponumber); -- -- Name: cohead_number_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE UNIQUE INDEX cohead_number_idx ON cohead USING btree (cohead_number); -- -- Name: cohead_shipto_id; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX cohead_shipto_id ON cohead USING btree (cohead_shipto_id); -- -- Name: cohist_cust_id; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX cohist_cust_id ON cohist USING btree (cohist_cust_id); -- -- Name: cohist_invcnumber; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX cohist_invcnumber ON cohist USING btree (cohist_invcnumber); -- -- Name: cohist_itemsite_id; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX cohist_itemsite_id ON cohist USING btree (cohist_itemsite_id); -- -- Name: cohist_shipdate; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX cohist_shipdate ON cohist USING btree (cohist_shipdate); -- -- Name: cohist_shipto_id; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX cohist_shipto_id ON cohist USING btree (cohist_shipto_id); -- -- Name: coitem_cohead_id_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX coitem_cohead_id_key ON coitem USING btree (coitem_cohead_id); -- -- Name: coitem_coitem_cohead_id_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE UNIQUE INDEX coitem_coitem_cohead_id_key ON coitem USING btree (coitem_cohead_id, coitem_linenumber, coitem_subnumber); -- -- Name: coitem_itemsite_id; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX coitem_itemsite_id ON coitem USING btree (coitem_itemsite_id); -- -- Name: coitem_linenumber_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX coitem_linenumber_key ON coitem USING btree (coitem_linenumber); -- -- Name: coitem_status_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX coitem_status_key ON coitem USING btree (coitem_status); -- -- Name: comment_comment_source_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX comment_comment_source_idx ON comment USING btree (comment_source, comment_source_id); -- -- Name: contrct_master_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE UNIQUE INDEX contrct_master_idx ON contrct USING btree (contrct_number, contrct_vend_id); -- -- Name: cust_number_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE UNIQUE INDEX cust_number_idx ON custinfo USING btree (cust_number); -- -- Name: evntlog_dispatched_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX evntlog_dispatched_idx ON evntlog USING btree (evntlog_dispatched); -- -- Name: evntlog_evntlog_username_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX evntlog_evntlog_username_idx ON evntlog USING btree (evntlog_username); -- -- Name: evntnot_evnttype_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX evntnot_evnttype_id_idx ON evntnot USING btree (evntnot_evnttype_id); -- -- Name: evntnot_warehous_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX evntnot_warehous_id_idx ON evntnot USING btree (evntnot_warehous_id); -- -- Name: filter_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX filter_idx ON filter USING btree (filter_screen, filter_username, filter_name); -- -- Name: gltrans_gltrans_accnt_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX gltrans_gltrans_accnt_id_idx ON gltrans USING btree (gltrans_accnt_id); -- -- Name: gltrans_gltrans_date_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX gltrans_gltrans_date_idx ON gltrans USING btree (gltrans_date); -- -- Name: gltrans_gltrans_journalnumber_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX gltrans_gltrans_journalnumber_idx ON gltrans USING btree (gltrans_journalnumber); -- -- Name: gltrans_sequence_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX gltrans_sequence_idx ON gltrans USING btree (gltrans_sequence); -- -- Name: invchead_invchead_ordernumber_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX invchead_invchead_ordernumber_idx ON invchead USING btree (invchead_ordernumber); -- -- Name: invcitem_invcitem_invchead_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX invcitem_invcitem_invchead_id_idx ON invcitem USING btree (invcitem_invchead_id); -- -- Name: invcitem_invcitem_itemsite_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX invcitem_invcitem_itemsite_id_idx ON invcitem USING btree (invcitem_item_id, invcitem_warehous_id); -- -- Name: invcitemtax_taxhist_parent_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX invcitemtax_taxhist_parent_id_idx ON invcitemtax USING btree (taxhist_parent_id); -- -- Name: invdetail_invdetail_invcitem_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX invdetail_invdetail_invcitem_id_idx ON invdetail USING btree (invdetail_invcitem_id); -- -- Name: invdetail_invdetail_invhist_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX invdetail_invdetail_invhist_id_idx ON invdetail USING btree (invdetail_invhist_id); -- -- Name: invhist_hasdetail; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX invhist_hasdetail ON invhist USING btree (invhist_hasdetail); -- -- Name: invhist_invhist_ordnumber_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX invhist_invhist_ordnumber_idx ON invhist USING btree (invhist_ordnumber); -- -- Name: invhist_itemsite_id; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX invhist_itemsite_id ON invhist USING btree (invhist_itemsite_id); -- -- Name: invhist_series; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX invhist_series ON invhist USING btree (invhist_series); -- -- Name: invhist_transdate; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX invhist_transdate ON invhist USING btree (invhist_transdate); -- -- Name: invhist_transtype; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX invhist_transtype ON invhist USING btree (invhist_transtype); -- -- Name: ipsitem_ipshead_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX ipsitem_ipshead_id_idx ON ipsiteminfo USING btree (ipsitem_ipshead_id); -- -- Name: item_classcode_id; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX item_classcode_id ON item USING btree (item_classcode_id); -- -- Name: item_number_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE UNIQUE INDEX item_number_idx ON item USING btree (item_number); -- -- Name: item_prodcat_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX item_prodcat_id_idx ON item USING btree (item_prodcat_id); -- -- Name: item_upccode_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX item_upccode_idx ON item USING btree (item_upccode); -- -- Name: itemcost_item_id_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX itemcost_item_id_key ON itemcost USING btree (itemcost_item_id); -- -- Name: itemcost_master_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE UNIQUE INDEX itemcost_master_idx ON itemcost USING btree (itemcost_item_id, itemcost_costelem_id, itemcost_lowlevel); -- -- Name: itemgrpitem_itemgrp_item_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE UNIQUE INDEX itemgrpitem_itemgrp_item_id_idx ON itemgrpitem USING btree (itemgrpitem_itemgrp_id, itemgrpitem_item_id); -- -- Name: itemloc_itemsite_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX itemloc_itemsite_idx ON itemloc USING btree (itemloc_itemsite_id); -- -- Name: itemloc_location_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX itemloc_location_idx ON itemloc USING btree (itemloc_location_id); -- -- Name: itemsite_active_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX itemsite_active_key ON itemsite USING btree (itemsite_active); -- -- Name: itemsite_item_id_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX itemsite_item_id_key ON itemsite USING btree (itemsite_item_id); -- -- Name: itemsite_item_warehous_id_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE UNIQUE INDEX itemsite_item_warehous_id_key ON itemsite USING btree (itemsite_item_id, itemsite_warehous_id); -- -- Name: itemsite_plancode_id_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX itemsite_plancode_id_key ON itemsite USING btree (itemsite_plancode_id); -- -- Name: itemsite_warehous_id_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX itemsite_warehous_id_key ON itemsite USING btree (itemsite_warehous_id); -- -- Name: itemsrc_vend_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX itemsrc_vend_id_idx ON itemsrc USING btree (itemsrc_vend_id); -- -- Name: itemsrcp_itemsrc_id_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX itemsrcp_itemsrc_id_key ON itemsrcp USING btree (itemsrcp_itemsrc_id); -- -- Name: itemsub_parent_item_id_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX itemsub_parent_item_id_key ON itemsub USING btree (itemsub_parent_item_id); -- -- Name: itemsub_sub_item_id_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX itemsub_sub_item_id_key ON itemsub USING btree (itemsub_sub_item_id); -- -- Name: location_warehous_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX location_warehous_idx ON location USING btree (location_warehous_id); -- -- Name: payaropen_aropen_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX payaropen_aropen_id_idx ON payaropen USING btree (payaropen_aropen_id); -- -- Name: payaropen_ccpay_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX payaropen_ccpay_id_idx ON payaropen USING btree (payaropen_ccpay_id); -- -- Name: payco_ccpay_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX payco_ccpay_id_idx ON payco USING btree (payco_ccpay_id); -- -- Name: payco_cohead_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX payco_cohead_id_idx ON payco USING btree (payco_cohead_id); -- -- Name: pohead_pohead_status_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX pohead_pohead_status_idx ON pohead USING btree (pohead_status); -- -- Name: poitem_itemsite_id_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX poitem_itemsite_id_key ON poitem USING btree (poitem_itemsite_id); -- -- Name: poitem_itemsite_status_duedate_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX poitem_itemsite_status_duedate_key ON poitem USING btree (poitem_itemsite_id, poitem_status, poitem_duedate); -- -- Name: poitem_pohead_id_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX poitem_pohead_id_key ON poitem USING btree (poitem_pohead_id); -- -- Name: poitem_status_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX poitem_status_key ON poitem USING btree (poitem_status); -- -- Name: priv_name_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE UNIQUE INDEX priv_name_idx ON priv USING btree (priv_name); -- -- Name: quitem_quhead_id_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX quitem_quhead_id_key ON quitem USING btree (quitem_quhead_id); -- -- Name: recv_ordertypeid_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX recv_ordertypeid_idx ON recv USING btree (recv_order_type, recv_orderitem_id); -- -- Name: report_name_grade_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE UNIQUE INDEX report_name_grade_idx ON report USING btree (report_name, report_grade); -- -- Name: salesaccnt_prodcat_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX salesaccnt_prodcat_id_idx ON salesaccnt USING btree (salesaccnt_prodcat_id); -- -- Name: salesaccnt_warehous_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX salesaccnt_warehous_id_idx ON salesaccnt USING btree (salesaccnt_warehous_id); -- -- Name: shipdata_cohead_number_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX shipdata_cohead_number_idx ON shipdata USING btree (shipdata_cohead_number); -- -- Name: shipdatasum_cohead_number_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX shipdatasum_cohead_number_idx ON shipdatasum USING btree (shipdatasum_cohead_number); -- -- Name: shipdatasum_cosmisc_tracknum_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX shipdatasum_cosmisc_tracknum_idx ON shipdatasum USING btree (shipdatasum_cosmisc_tracknum); -- -- Name: shiphead_order_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX shiphead_order_id_idx ON shiphead USING btree (shiphead_order_id); -- -- Name: shiphead_shipped_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX shiphead_shipped_idx ON shiphead USING btree (shiphead_shipped); -- -- Name: shipitem_invcitem_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX shipitem_invcitem_id_idx ON shipitem USING btree (shipitem_invcitem_id); -- -- Name: shipitem_orderitem_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX shipitem_orderitem_id_idx ON shipitem USING btree (shipitem_orderitem_id); -- -- Name: shipitem_shiphead_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX shipitem_shiphead_id_idx ON shipitem USING btree (shipitem_shiphead_id); -- -- Name: sltrans_sequence_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX sltrans_sequence_idx ON sltrans USING btree (sltrans_sequence); -- -- Name: sltrans_sltrans_accnt_id_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX sltrans_sltrans_accnt_id_idx ON sltrans USING btree (sltrans_accnt_id); -- -- Name: sltrans_sltrans_date_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX sltrans_sltrans_date_idx ON sltrans USING btree (sltrans_date); -- -- Name: sltrans_sltrans_journalnumber_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX sltrans_sltrans_journalnumber_idx ON sltrans USING btree (sltrans_journalnumber); -- -- Name: subaccnttype_code_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE UNIQUE INDEX subaccnttype_code_idx ON subaccnttype USING btree (subaccnttype_code); -- -- Name: todoitem_todoitem_username_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX todoitem_todoitem_username_idx ON todoitem USING btree (todoitem_username); -- -- Name: trialbal_accnt_period_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE UNIQUE INDEX trialbal_accnt_period_idx ON trialbal USING btree (trialbal_accnt_id, trialbal_period_id); -- -- Name: usrpref_userpref_name_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX usrpref_userpref_name_idx ON usrpref USING btree (usrpref_name); -- -- Name: vend_number_idx; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE UNIQUE INDEX vend_number_idx ON vendinfo USING btree (vend_number); -- -- Name: warehous_code_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX warehous_code_key ON whsinfo USING btree (warehous_code bpchar_ops); -- -- Name: wo_duedate; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX wo_duedate ON wo USING btree (wo_duedate); -- -- Name: wo_itemsite_id; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX wo_itemsite_id ON wo USING btree (wo_itemsite_id); -- -- Name: wo_ordtype; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX wo_ordtype ON wo USING btree (wo_ordtype); -- -- Name: wo_startdate; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX wo_startdate ON wo USING btree (wo_startdate); -- -- Name: wo_status; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX wo_status ON wo USING btree (wo_status); -- -- Name: womatl_itemsite_id_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX womatl_itemsite_id_key ON womatl USING btree (womatl_itemsite_id); -- -- Name: womatl_wo_id_key; Type: INDEX; Schema: public; Owner: admin; Tablespace: -- CREATE INDEX womatl_wo_id_key ON womatl USING btree (womatl_wo_id); SET search_path = te, pg_catalog; -- -- Name: teitem_teitem_tehead_id_idx; Type: INDEX; Schema: te; Owner: admin; Tablespace: -- CREATE INDEX teitem_teitem_tehead_id_idx ON teitem USING btree (teitem_tehead_id); SET search_path = api, pg_catalog; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO salesline DO INSTEAD DELETE FROM public.coitem WHERE (((coitem.coitem_cohead_id = public.getcoheadid((old.order_number)::text)) AND (((coitem.coitem_linenumber)::character varying)::text = (old.line_number)::text)) AND (coitem.coitem_subnumber = 0)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO apmemo DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO armemo DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO physinvcount DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO account DO INSTEAD DELETE FROM public.crmacct WHERE (crmacct.crmacct_number = (old.account_number)::text); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO accountchar DO INSTEAD DELETE FROM public.charass WHERE (((charass.charass_target_type = 'CRMACCT'::text) AND (charass.charass_target_id = public.getcrmacctid((old.account_number)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'CRMACCT'::text))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO accountcomment DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO accountfile DO INSTEAD DELETE FROM public.url WHERE ((((url.url_source_id = public.getcrmacctid(old.account_number)) AND (url.url_source = 'CRMA'::text)) AND (url.url_title = old.title)) AND (url.url_url = old.url)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO accountimage DO INSTEAD DELETE FROM public.imageass WHERE (((imageass.imageass_source_id = public.getcrmacctid(old.account_number)) AND (imageass.imageass_source = 'CRMA'::text)) AND (imageass.imageass_image_id = public.getimageid(old.image_name))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO address DO INSTEAD SELECT public.deleteaddress(public.getaddrid((old.address_number)::text)) AS deleteaddress; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO addresschar DO INSTEAD DELETE FROM public.charass WHERE (((charass.charass_target_type = 'ADDR'::text) AND (charass.charass_target_id = public.getaddrid((old.address_number)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'ADDR'::text))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO addresscomment DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO bom DO INSTEAD SELECT public.deletebom(public.getitemid((old.item_number)::text)) AS deletebom; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO bomitem DO INSTEAD DELETE FROM public.bomitem WHERE ((bomitem.bomitem_id = old.id) AND public.fetchmetricbool('AllowBOMItemDelete'::text)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO bomitemcomment DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO bomitemsubstitute DO INSTEAD DELETE FROM public.bomitemsub WHERE ((bomitemsub.bomitemsub_bomitem_id = old.bomitem_id) AND (bomitemsub.bomitemsub_item_id = public.getitemid((old.substitute_item_number)::text))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO budget DO INSTEAD DELETE FROM public.budghead WHERE (budghead.budghead_name = old.name); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO budgetentry DO INSTEAD DELETE FROM public.budgitem WHERE (((budgitem.budgitem_budghead_id = public.getbudgheadid(old.name)) AND (budgitem.budgitem_period_id = public.getperiodid(old.period_start))) AND (budgitem.budgitem_accnt_id = public.getglaccntid(old.account))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO cashreceipt DO INSTEAD SELECT public.deletecashrcpt(cashrcpt.cashrcpt_id) AS deletecashrcpt FROM public.cashrcpt WHERE (cashrcpt.cashrcpt_id = public.getcashrcptid((old.customer_number)::text, CASE WHEN ((old.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((old.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((old.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((old.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((old.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((old.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((old.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((old.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((old.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, (old.check_document_number)::text)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO cashreceiptapply DO INSTEAD DELETE FROM public.cashrcptitem WHERE ((cashrcptitem.cashrcptitem_cashrcpt_id = public.getcashrcptid((old.customer_number)::text, CASE WHEN ((old.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((old.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((old.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((old.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((old.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((old.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((old.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((old.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((old.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, (old.check_document_number)::text)) AND (cashrcptitem.cashrcptitem_aropen_id = public.getaropenid((old.customer_number)::text, (old.doc_type)::bpchar, (old.doc_number)::text))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO cashreceiptapplymisc DO INSTEAD DELETE FROM public.cashrcptmisc WHERE ((cashrcptmisc.cashrcptmisc_cashrcpt_id = public.getcashrcptid((old.customer_number)::text, CASE WHEN ((old.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((old.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((old.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((old.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((old.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((old.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((old.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((old.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((old.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, (old.check_document_number)::text)) AND (cashrcptmisc.cashrcptmisc_accnt_id = public.getglaccntid((old.account)::text))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO contact DO INSTEAD DELETE FROM public.cntct WHERE (cntct.cntct_number = (old.contact_number)::text); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO contactchar DO INSTEAD DELETE FROM public.charass WHERE (((charass.charass_target_type = 'CNTCT'::text) AND (charass.charass_target_id = public.getcntctid(old.contact_number))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'CNTCT'::text))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO contactcomment DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO creditmemo DO INSTEAD SELECT public.deletecreditmemo(cmhead.cmhead_id) AS deletecreditmemo FROM public.cmhead WHERE ((cmhead.cmhead_number = old.memo_number) AND (cmhead.cmhead_posted = false)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO creditmemoline DO INSTEAD DELETE FROM public.cmitem WHERE ((cmitem.cmitem_cmhead_id = public.getcmheadid(old.memo_number, false)) AND (cmitem.cmitem_linenumber = old.line_number)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO custchar DO INSTEAD DELETE FROM public.charass WHERE (((charass.charass_target_type = 'C'::text) AND (charass.charass_target_id = public.getcustid((old.customer_number)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'C'::text))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO custcomment DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO custcreditcard DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO customer DO INSTEAD DELETE FROM public.custinfo WHERE (custinfo.cust_number = (old.customer_number)::text); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO customertype DO INSTEAD DELETE FROM public.custtype WHERE (custtype.custtype_code = (old.code)::text); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO customertypechar DO INSTEAD DELETE FROM public.charass WHERE (((charass.charass_target_type = 'CT'::text) AND (charass.charass_target_id = public.getcusttypeid((old.customer_type)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'CT'::text))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO custshipto DO INSTEAD SELECT public.deleteshipto(public.getshiptoid((old.customer_number)::text, (old.shipto_number)::text)) AS deleteshipto; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO custtax DO INSTEAD DELETE FROM public.taxreg WHERE (((taxreg.taxreg_rel_type = 'C'::bpchar) AND (taxreg.taxreg_rel_id = public.getcustid((old.customer_number)::text))) AND (taxreg.taxreg_taxauth_id = public.gettaxauthid((old.tax_authority)::text))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO employee DO INSTEAD DELETE FROM public.emp WHERE (emp.emp_code = (old.code)::text); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO employeechar DO INSTEAD DELETE FROM public.charass WHERE (((charass.charass_target_type = 'EMP'::text) AND (charass.charass_target_id = public.getempid((old.employee_code)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'EMP'::text))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO employeecomment DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO extshipmaint DO INSTEAD DELETE FROM public.shipdata WHERE ((((shipdata.shipdata_cohead_number = (old.so_number)::text) AND (shipdata.shipdata_shiphead_number = (old.shipment_number)::text)) AND (shipdata.shipdata_shipper = (old.shipper)::text)) AND (shipdata.shipdata_cosmisc_packnum_tracknum = (old.package_tracking_number)::text)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO freightpricingscheduleitem DO INSTEAD DELETE FROM public.ipsfreight WHERE (((((((((ipsfreight.ipsfreight_ipshead_id = public.getipsheadid((old.pricing_schedule)::text)) AND (ipsfreight.ipsfreight_qtybreak = old.qty_break)) AND (ipsfreight.ipsfreight_price = old.price)) AND ((ipsfreight.ipsfreight_type)::text = CASE WHEN (old.price_type = 'Flat Rate'::text) THEN 'F'::text WHEN (old.price_type = 'Price Per UOM'::text) THEN 'P'::text ELSE NULL::text END)) AND ((ipsfreight.ipsfreight_warehous_id IS NULL) AND (old.from_site = 'Any'::text))) OR ((ipsfreight.ipsfreight_warehous_id = CASE WHEN (old.from_site = 'Any'::text) THEN 0 ELSE public.getwarehousid(old.from_site, 'All'::text) END) AND ((ipsfreight.ipsfreight_shipzone_id IS NULL) AND (old.to_shipzone = 'Any'::text)))) OR ((ipsfreight.ipsfreight_shipzone_id = CASE WHEN (old.to_shipzone = 'Any'::text) THEN 0 ELSE public.getshipzoneid(old.to_shipzone) END) AND ((ipsfreight.ipsfreight_freightclass_id IS NULL) AND (old.freight_class = 'Any'::text)))) OR ((ipsfreight.ipsfreight_freightclass_id = CASE WHEN (old.freight_class = 'Any'::text) THEN 0 ELSE public.getfreightclassid(old.freight_class) END) AND ((ipsfreight.ipsfreight_shipvia IS NULL) AND (old.ship_via = 'Any'::text)))) OR (ipsfreight.ipsfreight_shipvia = old.ship_via)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO incident DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO incidentchar DO INSTEAD DELETE FROM public.charass WHERE (((charass.charass_target_type = 'INCDT'::text) AND (charass.charass_target_id = public.getincidentid(old.incident_number))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'INCDT'::text))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO incidentcomment DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO incidentfile DO INSTEAD DELETE FROM public.url WHERE ((((url.url_source_id = public.getincidentid(old.incident_number)) AND (url.url_source = 'INCDT'::text)) AND (url.url_title = old.title)) AND (url.url_url = old.url)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO incidentimage DO INSTEAD DELETE FROM public.imageass WHERE (((imageass.imageass_source_id = public.getincidentid(old.incident_number)) AND (imageass.imageass_source = 'INCDT'::text)) AND (imageass.imageass_image_id = public.getimageid(old.image_name))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO invoice DO INSTEAD SELECT public.deleteinvoice(invchead.invchead_id) AS deleteinvoice FROM public.invchead WHERE ((invchead.invchead_invcnumber = old.invoice_number) AND (invchead.invchead_posted = false)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO invoiceline DO INSTEAD DELETE FROM public.invcitem WHERE (invcitem.invcitem_invchead_id = (SELECT invchead.invchead_id FROM public.invchead WHERE ((invchead.invchead_invcnumber = old.invoice_number) AND (invchead.invchead_posted = false)))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO item DO INSTEAD SELECT public.deleteitem(public.getitemid((old.item_number)::text)) AS deleteitem; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO itemalias DO INSTEAD DELETE FROM public.itemalias WHERE ((itemalias.itemalias_item_id = public.getitemid((old.item_number)::text)) AND (itemalias.itemalias_number = old.alias_number)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO itemchar DO INSTEAD DELETE FROM public.charass WHERE (((charass.charass_target_type = 'I'::text) AND (charass.charass_target_id = public.getitemid((old.item_number)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'I'::text))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO itemcomment DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO itemcost DO INSTEAD SELECT public.deleteitemcost(public.getitemid((old.item_number)::text), public.getcostelemid((old.costing_element)::text)) AS deleteitemcost; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO itemfile DO INSTEAD DELETE FROM public.url WHERE ((((url.url_source_id = public.getitemid((old.item_number)::text)) AND (url.url_source = 'I'::text)) AND (url.url_title = old.title)) AND (url.url_url = old.url)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO itemimage DO INSTEAD DELETE FROM public.imageass WHERE (((imageass.imageass_source_id = public.getitemid((old.item_number)::text)) AND (imageass.imageass_source = 'I'::text)) AND (imageass.imageass_image_id = public.getimageid(old.image_name))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO itemsite DO INSTEAD SELECT public.deleteitemsite(public.getitemsiteid((old.site)::text, (old.item_number)::text)) AS deleteitemsite; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO itemsitecomment DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO itemsource DO INSTEAD DELETE FROM public.itemsrc WHERE (((((itemsrc.itemsrc_item_id = public.getitemid((old.item_number)::text)) AND (itemsrc.itemsrc_vend_id = public.getvendid((old.vendor)::text))) AND (itemsrc.itemsrc_vend_item_number = old.vendor_item_number)) AND (itemsrc.itemsrc_manuf_name = old.manufacturer_name)) AND (itemsrc.itemsrc_manuf_item_number = old.manufacturer_item_number)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO itemsourceprice DO INSTEAD DELETE FROM public.itemsrcp WHERE ((itemsrcp.itemsrcp_itemsrc_id = public.getitemsrcid((old.item_number)::text, (old.vendor)::text)) AND (itemsrcp.itemsrcp_qtybreak = old.qty_break)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO itemsubstitute DO INSTEAD DELETE FROM public.itemsub WHERE ((itemsub.itemsub_parent_item_id = public.getitemid((old.root_item_number)::text)) AND (itemsub.itemsub_sub_item_id = public.getitemid((old.substitute_item_number)::text))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO itemtaxtype DO INSTEAD DELETE FROM public.itemtax WHERE (((itemtax.itemtax_item_id = public.getitemid((old.item_number)::text)) AND CASE WHEN ((old.tax_zone)::text = 'Any'::text) THEN (itemtax.itemtax_taxzone_id IS NULL) ELSE (itemtax.itemtax_taxzone_id = public.gettaxzoneid((old.tax_zone)::text)) END) AND (itemtax.itemtax_taxtype_id = public.gettaxtypeid(old.tax_type))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO itemuomconversion DO INSTEAD SELECT public.deleteitemuomconv(itemuomconv.itemuomconv_id) AS deleteitemuomconv FROM public.itemuomconv WHERE ((itemuomconv.itemuomconv_item_id = public.getitemid((old.item_number)::text)) AND (((itemuomconv.itemuomconv_from_uom_id = public.getuomid((old.uom)::text)) AND (itemuomconv.itemuomconv_to_uom_id = public.getuomid(old.per_uom))) OR ((itemuomconv.itemuomconv_from_uom_id = public.getuomid(old.per_uom)) AND (itemuomconv.itemuomconv_to_uom_id = public.getuomid((old.uom)::text))))); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO journalentry DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO location DO INSTEAD DELETE FROM public.location WHERE ((location.location_warehous_id = public.getwarehousid((old.site)::text, 'ACTIVE'::text)) AND (location.location_name = (old.location)::text)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO misccounttag DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO pricingschedule DO INSTEAD DELETE FROM public.ipshead WHERE ((old.name)::text = ipshead.ipshead_name); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO pricingscheduleassign DO INSTEAD DELETE FROM public.ipsass WHERE ((((((ipsass.ipsass_ipshead_id = public.getipsheadid((old.pricing_schedule)::text)) AND (ipsass.ipsass_cust_id = CASE WHEN ((old.customer_number)::text = 'Any'::text) THEN (-1) ELSE public.getcustid((old.customer_number)::text) END)) AND (ipsass.ipsass_custtype_id = CASE WHEN ((old.customer_type)::text = 'N/A'::text) THEN (-1) ELSE public.getcusttypeid((old.customer_type)::text) END)) AND (ipsass.ipsass_custtype_pattern = (old.customer_type_pattern)::text)) AND (ipsass.ipsass_shipto_id = CASE WHEN ((old.customer_shipto)::text = 'Any'::text) THEN (-1) ELSE public.getshiptoid((old.customer_number)::text, (old.customer_shipto)::text) END)) AND (ipsass.ipsass_shipto_pattern = (old.customer_shipto_pattern)::text)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO pricingscheduleitem DO INSTEAD SELECT CASE WHEN ((old.type)::text = 'Item'::text) THEN public.deleteipsitem(public.getipsitemid((old.pricing_schedule)::text, (old.item_number)::text, old.qty_break, (old.qty_uom)::text, (old.price_uom)::text)) WHEN ((old.type)::text = 'Product Category'::text) THEN public.deleteipsprodcat(public.getipsprodcatid((old.pricing_schedule)::text, (old.product_category)::text, old.qty_break)) ELSE NULL::integer END AS result; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO pricingscheduleitemchar DO INSTEAD DELETE FROM public.ipsitemchar WHERE (((ipsitemchar.ipsitemchar_ipsitem_id = public.getipsitemid((old.pricing_schedule)::text, (old.item_number)::text, old.qty_break, (old.qty_uom)::text, (old.price_uom)::text)) AND (ipsitemchar.ipsitemchar_char_id = public.getcharid((old.characteristic)::text, 'I'::text))) AND (ipsitemchar.ipsitemchar_value = (old.value)::text)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO project DO INSTEAD SELECT public.deleteproject(public.getprjid(old.number)) AS deleteproject; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO projectcomment DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO prospect DO INSTEAD DELETE FROM public.prospect WHERE (prospect.prospect_number = (old.prospect_number)::text); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO purchaseline DO INSTEAD DELETE FROM public.poitem WHERE (poitem.poitem_id = public.getpoitemid((old.order_number)::text, old.line_number)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO purchaselinechar DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO purchaselinecomment DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO purchaseorder DO INSTEAD SELECT public.deletepo(pohead.pohead_id) AS deletepo FROM public.pohead WHERE (pohead.pohead_number = (old.order_number)::text); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO purchaseordercomment DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO quote DO INSTEAD SELECT public.deletequote(quhead.quhead_id, (old.quote_number)::text) AS deletequote FROM public.quhead WHERE (quhead.quhead_number = (old.quote_number)::text); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO quotecomment DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO quoteline DO INSTEAD DELETE FROM public.quitem WHERE ((quitem.quitem_quhead_id = public.getquoteid(old.quote_number)) AND (quitem.quitem_linenumber = old.line_number)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO quotelinechar DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO quotelinecomment DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO saleshistory DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO saleslinechar DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO saleslinecomment DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO salesorder DO INSTEAD SELECT public.deleteso(cohead.cohead_id, (old.order_number)::text) AS deleteso FROM public.cohead WHERE (cohead.cohead_number = (old.order_number)::text); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO salesordercomment DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO salesrep DO INSTEAD DELETE FROM public.salesrep WHERE (salesrep.salesrep_number = (old.number)::text); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO site DO NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO sitezone DO INSTEAD DELETE FROM public.whsezone WHERE ((whsezone.whsezone_warehous_id = public.getwarehousid((old.site)::text, 'ACTIVE'::text)) AND (whsezone.whsezone_name = (old.name)::text)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO task DO INSTEAD DELETE FROM public.prjtask WHERE ((prjtask.prjtask_prj_id = public.getprjid(old.project_number)) AND (prjtask.prjtask_number = old.number)); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO taskcomment DO INSTEAD NOTHING; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO todo DO INSTEAD SELECT public.deletetodoitem(old.task_number) AS deletetodoitem; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO vendor DO INSTEAD DELETE FROM public.vendinfo WHERE (vendinfo.vend_number = (old.vendor_number)::text); -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO vendoraddress DO INSTEAD SELECT public.deletevendoraddress(public.getvendaddrid((old.vendor_number)::text, (old.vendor_address_number)::text)) AS deletevendoraddress; -- -- Name: _DELETE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO vendortype DO INSTEAD SELECT public.deletevendortype(public.getvendtypeid((old.code)::text)) AS deletevendortype; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO salesline DO INSTEAD SELECT public.insertsalesline(new.*) AS insertsalesline; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO apmemo DO INSTEAD SELECT public.insertapmemo(new.*) AS insertapmemo; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO armemo DO INSTEAD SELECT public.insertarmemo(new.*) AS insertarmemo; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO physinvcount DO INSTEAD SELECT insertphysinvcount(new.*) AS insertphysinvcount; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO account DO INSTEAD INSERT INTO public.crmacct (crmacct_number, crmacct_parent_id, crmacct_name, crmacct_active, crmacct_type, crmacct_cntct_id_1, crmacct_cntct_id_2, crmacct_notes) VALUES (COALESCE(new.account_number, ((public.fetchcrmaccountnumber())::text)::character varying), public.getcrmacctid(new.parent_account), new.account_name, COALESCE(new.active, true), CASE WHEN (new.type = 'Individual'::text) THEN 'I'::text ELSE 'O'::text END, public.savecntct(public.getcntctid(new.primary_contact_number), new.primary_contact_number, public.saveaddr(public.getaddrid(new.primary_contact_address_number), new.primary_contact_address_number, new.primary_contact_address1, new.primary_contact_address2, new.primary_contact_address3, new.primary_contact_city, new.primary_contact_state, new.primary_contact_postalcode, new.primary_contact_country, new.primary_contact_address_change), new.primary_contact_honorific, new.primary_contact_first, new.primary_contact_middle, new.primary_contact_last, new.primary_contact_suffix, new.primary_contact_voice, NULL::text, new.primary_contact_fax, new.primary_contact_email, NULL::text, new.primary_contact_job_title, new.primary_contact_change), public.savecntct(public.getcntctid(new.secondary_contact_number), new.secondary_contact_number, public.saveaddr(public.getaddrid(new.secondary_contact_address_number), new.secondary_contact_address_number, new.secondary_contact_address1, new.secondary_contact_address2, new.secondary_contact_address3, new.secondary_contact_city, new.secondary_contact_state, new.secondary_contact_postalcode, new.secondary_contact_country, new.secondary_contact_address_change), new.secondary_contact_honorific, new.secondary_contact_first, new.secondary_contact_middle, new.secondary_contact_last, new.secondary_contact_suffix, new.secondary_contact_voice, NULL::text, new.secondary_contact_fax, new.secondary_contact_email, NULL::text, new.secondary_contact_job_title, new.secondary_contact_change), new.notes); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO accountchar DO INSTEAD INSERT INTO public.charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default) VALUES ('CRMACCT'::text, public.getcrmacctid((new.account_number)::text), public.getcharid((new.characteristic)::text, 'CRMACCT'::text), new.value, false); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO accountcomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'CRMA'::text, public.getcrmacctid((new.account_number)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO accountfile DO INSTEAD INSERT INTO public.url (url_source_id, url_source, url_title, url_url) VALUES (public.getcrmacctid(new.account_number), 'CRMA'::text, new.title, new.url); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO accountimage DO INSTEAD SELECT public.saveimageass('CRMA'::text, public.getcrmacctid(new.account_number), 'M'::bpchar, public.getimageid(new.image_name)) AS saveimageass; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO address DO INSTEAD SELECT public.saveaddr(NULL::integer, (new.address_number)::text, new.address1, new.address2, new.address3, new.city, new.state, new.postal_code, new.country, COALESCE(new.active, true), new.notes, NULL::text) AS saveaddr; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO addresschar DO INSTEAD INSERT INTO public.charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default) VALUES ('ADDR'::text, public.getaddrid((new.address_number)::text), public.getcharid((new.characteristic)::text, 'ADDR'::text), new.value, false); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO addresscomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'ADDR'::text, public.getaddrid((new.address_number)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO bom DO INSTEAD SELECT public.savebomhead(public.getitemid((new.item_number)::text), (new.revision)::text, new.revision_date, new.document_number, COALESCE(new.batch_size, (0)::numeric), new.total_qty_per) AS savebomhead; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO bomitem DO INSTEAD SELECT public.createbomitem(COALESCE(new.id, (nextval('public.bomitem_bomitem_id_seq'::regclass))::integer), public.getitemid((new.bom_item_number)::text), public.getitemid(new.item_number), COALESCE(new.sequence_number, (SELECT (max(bomitem.bomitem_seqnumber) + 10) FROM public.bomitem(public.getitemid((new.bom_item_number)::text), COALESCE(public.getrevid('BOM'::text, (new.bom_item_number)::text, (new.bom_revision)::text))) bomitem(bomitem_id, bomitem_parent_item_id, bomitem_seqnumber, bomitem_item_id, bomitem_qtyper, bomitem_scrap, bomitem_status, bomitem_effective, bomitem_expires, bomitem_createwo, bomitem_issuemethod, bomitem_schedatwooper, bomitem_ecn, bomitem_moddate, bomitem_subtype, bomitem_uom_id, bomitem_rev_id, bomitem_booitem_seq_id, bomitem_char_id, bomitem_value, bomitem_notes, bomitem_ref, bomitem_qtyfxd, bomitem_issuewo)), 10), (CASE WHEN (new.issue_method = 'Mixed'::text) THEN 'M'::text WHEN (new.issue_method = 'Push'::text) THEN 'S'::text WHEN (new.issue_method = 'Pull'::text) THEN 'L'::text ELSE public.fetchmetrictext('DefaultWomatlIssueMethod'::text) END)::bpchar, COALESCE(public.getuomid(new.issue_uom), (SELECT item.item_inv_uom_id FROM public.item WHERE (item.item_id = public.getitemid(new.item_number)))), new.qty_per, new.scrap, CASE WHEN (new.effective = 'Always'::text) THEN public.startoftime() ELSE COALESCE((new.effective)::date, public.startoftime()) END, CASE WHEN (new.expires = 'Never'::text) THEN public.endoftime() ELSE COALESCE((new.expires)::date, public.endoftime()) END, COALESCE(new.create_child_wo, false), COALESCE(public.getbooitemseqid((new.bom_item_number)::text, new.used_at), (-1)), COALESCE(new.schedule_at_wo_operation, false), new.ecn_number, (CASE WHEN (new.substitutions = 'No'::text) THEN 'N'::text WHEN (new.substitutions = 'BOM-Defined'::text) THEN 'B'::text ELSE 'I'::text END)::bpchar, COALESCE(public.getrevid('BOM'::text, (new.bom_item_number)::text, (new.bom_revision)::text)), public.getcharid(new.characteristic, 'I'::text), new.value, new.notes, new.reference) AS createbomitem; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO bomitemcomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'BMI'::text, new.bomitem_id, COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO bomitemsubstitute DO INSTEAD INSERT INTO public.bomitemsub (bomitemsub_bomitem_id, bomitemsub_item_id, bomitemsub_uomratio, bomitemsub_rank) VALUES (new.bomitem_id, public.getitemid((new.substitute_item_number)::text), COALESCE(new.sub_parent_uom_ratio, (1)::numeric), COALESCE(new.ranking, 1)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO budget DO INSTEAD INSERT INTO public.budghead (budghead_name, budghead_descrip) VALUES (new.name, new.description); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO budgetentry DO INSTEAD INSERT INTO public.budgitem (budgitem_budghead_id, budgitem_period_id, budgitem_accnt_id, budgitem_amount) VALUES (public.getbudgheadid(new.name), public.getperiodid(new.period_start), public.getglaccntid(new.account), new.amount); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO cashreceipt DO INSTEAD INSERT INTO public.cashrcpt (cashrcpt_cust_id, cashrcpt_amount, cashrcpt_fundstype, cashrcpt_docnumber, cashrcpt_bankaccnt_id, cashrcpt_notes, cashrcpt_distdate, cashrcpt_salescat_id, cashrcpt_curr_id, cashrcpt_usecustdeposit) VALUES (public.getcustid((new.customer_number)::text), COALESCE(new.amount_received, (0)::numeric), CASE WHEN ((new.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((new.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((new.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((new.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((new.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((new.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((new.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((new.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((new.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, COALESCE(new.check_document_number, ''::character varying), public.getbankaccntid(new.post_to), COALESCE(new.notes, ''::text), CASE WHEN (new.distribution_date > ''::text) THEN ((new.distribution_date)::date)::timestamp with time zone ELSE now() END, COALESCE(public.getsalescatid(new.sales_category), (-1)), public.getcurrid((new.currency)::text), CASE WHEN (new.apply_balance_as = 'Customer Deposit'::text) THEN true ELSE false END); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO cashreceiptapply DO INSTEAD INSERT INTO public.cashrcptitem (cashrcptitem_cashrcpt_id, cashrcptitem_aropen_id, cashrcptitem_amount, cashrcptitem_discount) VALUES (public.getcashrcptid((new.customer_number)::text, CASE WHEN ((new.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((new.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((new.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((new.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((new.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((new.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((new.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((new.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((new.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, (new.check_document_number)::text), public.getaropenid((new.customer_number)::text, (new.doc_type)::bpchar, (new.doc_number)::text), COALESCE(new.amount_to_apply, (0)::numeric), COALESCE(new.cashrcptitem_discount, (0)::numeric)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO cashreceiptapplymisc DO INSTEAD INSERT INTO public.cashrcptmisc (cashrcptmisc_cashrcpt_id, cashrcptmisc_accnt_id, cashrcptmisc_amount, cashrcptmisc_notes) VALUES (public.getcashrcptid((new.customer_number)::text, CASE WHEN ((new.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((new.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((new.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((new.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((new.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((new.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((new.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((new.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((new.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, (new.check_document_number)::text), public.getglaccntid((new.account)::text), COALESCE(new.amount_to_distribute, (0)::numeric), COALESCE(new.notes, ''::text)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO contact DO INSTEAD SELECT public.savecntct(NULL::integer, (new.contact_number)::text, public.getcrmacctid(new.crm_account), public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postal_code, new.country, new.address_change), new.honorific, new.first, new.middle, new.last, new.suffix, new.initials, COALESCE(new.active, true), new.voice, new.alternate, new.fax, new.email, new.web, new.notes, new.job_title, new.contact_change) AS savecntct; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO contactchar DO INSTEAD INSERT INTO public.charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default) VALUES ('CNTCT'::text, public.getcntctid(new.contact_number), public.getcharid((new.characteristic)::text, 'CNTCT'::text), new.value, false); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO contactcomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'T'::text, public.getcntctid(new.contact_number), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO creditmemo DO INSTEAD SELECT public.insertcreditmemo(new.*) AS insertcreditmemo; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO creditmemoline DO INSTEAD SELECT public.insertcreditmemoline(new.*) AS insertcreditmemoline; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO custchar DO INSTEAD INSERT INTO public.charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default) VALUES ('C'::text, public.getcustid((new.customer_number)::text), public.getcharid((new.characteristic)::text, 'C'::text), new.value, false); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO custcomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'C'::text, public.getcustid((new.customer_number)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO custcreditcard DO INSTEAD SELECT public.insertccard((new.customer_number)::text, new.active, new.credit_card_type, new.credit_card_number, new.name, new.street_address1, new.street_address2, new.city, new.state, new.postal_code, new.country, new.expiration_month, new.expiration_year, new.key) AS insertccard; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO customer DO INSTEAD INSERT INTO public.custinfo (cust_active, cust_custtype_id, cust_salesrep_id, cust_commprcnt, cust_name, cust_creditlmt, cust_creditrating, cust_backorder, cust_partialship, cust_terms_id, cust_discntprcnt, cust_balmethod, cust_ffshipto, cust_shipform_id, cust_shipvia, cust_blanketpos, cust_shipchrg_id, cust_creditstatus, cust_comments, cust_ffbillto, cust_usespos, cust_number, cust_autoupdatestatus, cust_autoholdorders, cust_preferred_warehous_id, cust_curr_id, cust_creditlmt_curr_id, cust_cntct_id, cust_corrcntct_id, cust_taxzone_id, cust_gracedays) VALUES (COALESCE(new.active, true), COALESCE((public.getcusttypeid(new.customer_type))::numeric, public.fetchmetricvalue('DefaultCustType'::text)), COALESCE((public.getsalesrepid(new.sales_rep))::numeric, public.fetchmetricvalue('DefaultSalesRep'::text)), COALESCE((new.commission * 0.01), (SELECT salesrep.salesrep_commission FROM public.salesrep WHERE (salesrep.salesrep_id = public.getsalesrepid(new.sales_rep)))), COALESCE(new.customer_name, ''::text), COALESCE((new.credit_limit)::numeric, public.fetchmetricvalue('SOCreditLimit'::text)), COALESCE(new.credit_rating, public.fetchmetrictext('SOCreditRate'::text)), COALESCE(new.accepts_backorders, public.fetchmetricbool('DefaultBackOrders'::text), false), COALESCE(new.accepts_partial_shipments, public.fetchmetricbool('DefaultPartialShipments'::text), false), COALESCE((public.gettermsid(new.default_terms))::numeric, public.fetchmetricvalue('DefaultTerms'::text)), COALESCE(new.default_discount, (0)::numeric), CASE WHEN (new.balance_method = 'Balance Forward'::text) THEN 'B'::text WHEN (new.balance_method = 'Open Items'::text) THEN 'O'::text ELSE COALESCE(public.fetchmetrictext('DefaultBalanceMethod'::text), 'B'::text) END, COALESCE(new.allow_free_form_shipto, public.fetchmetricbool('DefaultFreeFormShiptos'::text), false), COALESCE((public.getshipformid(new.ship_form))::numeric, public.fetchmetricvalue('DefaultShipFormId'::text)), COALESCE(new.ship_via, public.fetchdefaultshipvia()), COALESCE(new.uses_blanket_pos, false), COALESCE(public.getshipchrgid(new.shipping_charges), (-1)), CASE WHEN (new.credit_status = 'On Credit Warning'::text) THEN 'W'::text WHEN (new.credit_status = 'On Credit Hold'::text) THEN 'H'::text ELSE 'G'::text END, COALESCE(new.notes, ''::text), COALESCE(new.allow_free_form_billto, false), COALESCE(new.uses_purchase_orders, false), COALESCE(upper((new.customer_number)::text), (public.fetchcrmaccountnumber())::text), COALESCE(new.credit_status_exceed_warn, false), COALESCE(new.credit_status_exceed_hold, false), COALESCE(public.getwarehousid(new.preferred_selling_site, 'ACTIVE'::text), (-1)), COALESCE(public.getcurrid((new.default_currency)::text), public.basecurrid()), COALESCE(public.getcurrid((new.credit_limit_currency)::text), public.basecurrid()), public.savecntct(public.getcntctid(new.billing_contact_number, false), new.billing_contact_number, public.saveaddr(public.getaddrid(new.billing_contact_address_number), new.billing_contact_address_number, new.billing_contact_address1, new.billing_contact_address2, new.billing_contact_address3, new.billing_contact_city, new.billing_contact_state, new.billing_contact_postalcode, new.billing_contact_country, new.billing_contact_address_change), new.billing_contact_honorific, new.billing_contact_first, new.billing_contact_middle, new.billing_contact_last, new.billing_contact_suffix, new.billing_contact_voice, new.billing_contact_alternate, new.billing_contact_fax, new.billing_contact_email, new.billing_contact_web, new.billing_contact_job_title, new.billing_contact_change), public.savecntct(public.getcntctid(new.correspond_contact_number, false), new.correspond_contact_number, public.saveaddr(public.getaddrid(new.correspond_contact_address_number), new.correspond_contact_address_number, new.correspond_contact_address1, new.correspond_contact_address2, new.correspond_contact_address3, new.correspond_contact_city, new.correspond_contact_state, new.correspond_contact_postalcode, new.correspond_contact_country, new.correspond_contact_address_change), new.correspond_contact_honorific, new.correspond_contact_first, new.correspond_contact_middle, new.correspond_contact_last, new.correspond_contact_suffix, new.correspond_contact_voice, new.correspond_contact_alternate, new.correspond_contact_fax, new.correspond_contact_email, new.correspond_contact_web, new.correspond_contact_job_title, new.correspond_contact_change), public.gettaxzoneid(new.default_tax_zone), CASE WHEN (COALESCE(new.alternate_grace_days, 0) > 0) THEN new.alternate_grace_days ELSE NULL::integer END); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO customertaxreg DO INSTEAD INSERT INTO public.taxreg (taxreg_rel_id, taxreg_rel_type, taxreg_taxauth_id, taxreg_taxzone_id, taxreg_number, taxreg_effective, taxreg_expires, taxreg_notes) VALUES (public.getcustid((new.customer_number)::text), 'C'::bpchar, public.gettaxauthid((new.tax_authority)::text), (SELECT custinfo.cust_taxzone_id FROM public.custinfo WHERE (custinfo.cust_id = public.getcustid((new.customer_number)::text))), COALESCE(new.registration_number, ''::text), CASE WHEN (new.start_date = 'Always'::text) THEN public.startoftime() ELSE COALESCE((new.start_date)::date, public.startoftime()) END, CASE WHEN (new.end_date = 'Never'::text) THEN public.endoftime() ELSE COALESCE((new.end_date)::date, public.endoftime()) END, new.notes); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO customertype DO INSTEAD INSERT INTO public.custtype (custtype_code, custtype_descrip, custtype_char) VALUES (new.code, COALESCE(new.description, ''::text), COALESCE(new.enable_characteristics_profile, false)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO customertypechar DO INSTEAD INSERT INTO public.charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default) VALUES ('CT'::text, public.getcusttypeid((new.customer_type)::text), public.getcharid((new.characteristic)::text, 'CT'::text), new.value, COALESCE(new.is_default, false)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO custshipto DO INSTEAD INSERT INTO public.shiptoinfo (shipto_cust_id, shipto_name, shipto_salesrep_id, shipto_comments, shipto_shipcomments, shipto_shipzone_id, shipto_shipvia, shipto_commission, shipto_shipform_id, shipto_shipchrg_id, shipto_active, shipto_default, shipto_num, shipto_ediprofile_id, shipto_cntct_id, shipto_addr_id, shipto_taxzone_id) VALUES (public.getcustid((new.customer_number)::text), COALESCE(new.name, ''::text), COALESCE(public.getsalesrepid(new.sales_rep), (SELECT custinfo.cust_salesrep_id FROM public.custinfo WHERE (custinfo.cust_id = public.getcustid((new.customer_number)::text)))), COALESCE(new.general_notes, ''::text), COALESCE(new.shipping_notes, ''::text), public.getshipzoneid(new.zone), COALESCE(new.ship_via, (SELECT custinfo.cust_shipvia FROM public.custinfo WHERE (custinfo.cust_id = public.getcustid((new.customer_number)::text)))), COALESCE((new.commission / 100.0), (0)::numeric), COALESCE(public.getshipformid(new.ship_form), (SELECT custinfo.cust_shipform_id FROM public.custinfo WHERE (custinfo.cust_id = public.getcustid((new.customer_number)::text)))), COALESCE(public.getshipchrgid(new.shipping_charges), (SELECT custinfo.cust_shipchrg_id FROM public.custinfo WHERE (custinfo.cust_id = public.getcustid((new.customer_number)::text)))), COALESCE(new.active, true), COALESCE(new.default_flag, false), COALESCE(new.shipto_number, (((SELECT (COALESCE(max((shiptoinfo.shipto_num)::integer), 0) + 1) FROM public.shiptoinfo WHERE ((shiptoinfo.shipto_cust_id = public.getcustid((new.customer_number)::text)) AND (shiptoinfo.shipto_num ~ '^[0-9]*$'::text))))::text)::character varying), CASE WHEN (new.edi_profile = 'No EDI'::text) THEN (-1) WHEN (new.edi_profile = 'Use Customer Master'::text) THEN (-2) ELSE public.getediprofileid(new.edi_profile) END, public.savecntct(public.getcntctid(new.contact_number), new.contact_number, NULL::integer, new.honorific, new.first, new.middle, new.last, new.suffix, new.phone, NULL::text, new.fax, new.email, NULL::text, new.job_title, new.contact_change), public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postal_code, new.country, new.address_change), COALESCE(public.gettaxzoneid(new.tax_zone), (SELECT custinfo.cust_taxzone_id FROM public.custinfo WHERE (custinfo.cust_id = public.getcustid((new.customer_number)::text))))); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO custtax DO INSTEAD INSERT INTO public.taxreg (taxreg_rel_type, taxreg_rel_id, taxreg_taxauth_id, taxreg_number) VALUES ('C'::bpchar, public.getcustid((new.customer_number)::text), public.gettaxauthid((new.tax_authority)::text), new.registration_number); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO employee DO INSTEAD INSERT INTO public.emp (emp_code, emp_number, emp_active, emp_cntct_id, emp_warehous_id, emp_mgr_emp_id, emp_wage_type, emp_wage, emp_wage_curr_id, emp_wage_period, emp_dept_id, emp_shift_id, emp_image_id, emp_extrate, emp_extrate_period, emp_startdate, emp_notes) VALUES (new.code, new.number, COALESCE(new.active, true), public.savecntct(public.getcntctid(new.contact_number), new.contact_number, public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postalcode, new.country, new.address_change), new.honorific, new.first, new.middle, new.last, new.suffix, new.voice, new.alternate, new.fax, new.email, new.web, new.job_title, new.contact_change), public.getwarehousid(new.site, 'ALL'::text), (SELECT emp.emp_id FROM public.emp WHERE (emp.emp_code = new.manager_code)), CASE WHEN (new.wage_type = 'Hourly'::text) THEN 'H'::text WHEN (new.wage_type = 'Salaried'::text) THEN 'S'::text ELSE NULL::text END, new.wage, COALESCE(public.getcurrid((new.wage_currency)::text), public.basecurrid()), CASE WHEN (new.wage_period = 'Hour'::text) THEN 'H'::text WHEN (new.wage_period = 'Day'::text) THEN 'D'::text WHEN (new.wage_period = 'Week'::text) THEN 'W'::text WHEN (new.wage_period = 'Biweek'::text) THEN 'BW'::text WHEN (new.wage_period = 'Month'::text) THEN 'M'::text WHEN (new.wage_period = 'Year'::text) THEN 'Y'::text ELSE NULL::text END, public.getdeptid(new.department), public.getshiftid(new.shift), public.getimageid(new.image), new.rate, CASE WHEN (new.billing_period = 'Hour'::text) THEN 'H'::text WHEN (new.billing_period = 'Day'::text) THEN 'D'::text WHEN (new.billing_period = 'Week'::text) THEN 'W'::text WHEN (new.billing_period = 'Biweek'::text) THEN 'BW'::text WHEN (new.billing_period = 'Month'::text) THEN 'M'::text WHEN (new.billing_period = 'Year'::text) THEN 'Y'::text ELSE NULL::text END, new.start_date, COALESCE(new.notes, ''::text)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO employeechar DO INSTEAD INSERT INTO public.charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default) VALUES ('EMP'::text, public.getempid((new.employee_code)::text), public.getcharid((new.characteristic)::text, 'EMP'::text), new.value, false); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO employeecomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'EMP'::text, public.getempid((new.code)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid((new.type)::text), new.text); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO extshipmaint DO INSTEAD INSERT INTO public.shipdata (shipdata_cohead_number, shipdata_shiphead_number, shipdata_void_ind, shipdata_shipper, shipdata_billing_option, shipdata_weight, shipdata_base_freight, shipdata_base_freight_curr_id, shipdata_total_freight, shipdata_total_freight_curr_id, shipdata_package_type, shipdata_cosmisc_tracknum, shipdata_cosmisc_packnum_tracknum, shipdata_lastupdated) VALUES (new.so_number, new.shipment_number, new.void, new.shipper, new.billing_option, new.weight, new.base_freight, public.getcurrid((new.base_freight_currency)::text), new.total_freight, public.getcurrid((new.total_freight_currency)::text), new.package_type, new.tracking_number, new.package_tracking_number, new.last_updated); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO freightpricingscheduleitem DO INSTEAD INSERT INTO public.ipsfreight (ipsfreight_ipshead_id, ipsfreight_qtybreak, ipsfreight_price, ipsfreight_type, ipsfreight_warehous_id, ipsfreight_shipzone_id, ipsfreight_freightclass_id, ipsfreight_shipvia) VALUES (public.getipsheadid((new.pricing_schedule)::text), new.qty_break, new.price, CASE WHEN (new.price_type = 'Flat Rate'::text) THEN 'F'::text ELSE 'P'::text END, CASE WHEN (new.from_site = 'Any'::text) THEN NULL::integer ELSE public.getwarehousid(new.from_site, 'All'::text) END, CASE WHEN (new.to_shipzone = 'Any'::text) THEN NULL::integer ELSE public.getshipzoneid(new.to_shipzone) END, CASE WHEN (new.freight_class = 'Any'::text) THEN NULL::integer ELSE public.getfreightclassid(new.freight_class) END, CASE WHEN (new.ship_via = 'Any'::text) THEN NULL::text ELSE new.ship_via END); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO glaccount DO INSTEAD INSERT INTO public.accnt (accnt_number, accnt_descrip, accnt_comments, accnt_profit, accnt_sub, accnt_type, accnt_extref, accnt_company, accnt_forwardupdate, accnt_subaccnttype_code) VALUES (COALESCE(new.account_number, ''::character varying), COALESCE(new.description, ''::text), COALESCE(new.notes, ''::text), new.profit_center, new.sub_account, CASE WHEN (new.type = 'Asset'::text) THEN 'A'::text WHEN (new.type = 'Liability'::text) THEN 'L'::text WHEN (new.type = 'Expense'::text) THEN 'E'::text WHEN (new.type = 'Revenue'::text) THEN 'R'::text WHEN (new.type = 'Equity'::text) THEN 'Q'::text ELSE NULL::text END, COALESCE(new.ext_reference, ''::text), new.company, COALESCE(new.forward_update_trial_balances, false), COALESCE(new.sub_type, ''::text)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO incident DO INSTEAD INSERT INTO public.incdt (incdt_number, incdt_crmacct_id, incdt_cntct_id, incdt_summary, incdt_descrip, incdt_item_id, incdt_status, incdt_assigned_username, incdt_incdtcat_id, incdt_incdtseverity_id, incdt_incdtpriority_id, incdt_incdtresolution_id, incdt_lotserial, incdt_ls_id) VALUES (new.incident_number, public.getcrmacctid(new.crm_account), public.savecntct(public.getcntctid(new.contact_number), new.contact_number, NULL::integer, new.honorific, new.first, new.middle, new.last, new.suffix, new.phone, NULL::text, new.fax, new.email, NULL::text, new.job_title, new.contact_change), COALESCE(new.description, ''::text), COALESCE(new.notes, ''::text), public.getitemid(new.item_number), CASE WHEN (new.status = 'New'::text) THEN 'N'::text WHEN (new.status = 'Feedback'::text) THEN 'F'::text WHEN (new.status = 'Confirmed'::text) THEN 'C'::text WHEN (new.status = 'Assigned'::text) THEN 'A'::text WHEN (new.status = 'Resolved'::text) THEN 'R'::text WHEN (new.status = 'Closed'::text) THEN 'L'::text ELSE ''::text END, COALESCE(new.assigned_to, ''::text), public.getincdtcatid(new.category), public.getincdtseverityid(new.severity), public.getincdtpriorityid(new.priority), public.getincdtresolutionid(new.resolution), COALESCE(new.lot_serial_number, ''::text), public.getlotserialid(new.item_number, new.lot_serial_number)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO incidentchar DO INSTEAD INSERT INTO public.charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default) VALUES ('INCDT'::text, public.getincidentid(new.incident_number), public.getcharid((new.characteristic)::text, 'INCDT'::text), new.value, false); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO incidentcomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text, comment_public) VALUES (COALESCE(new.date, now()), 'INCDT'::text, public.getincidentid(new.incident_number), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text, COALESCE(new.public, true)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO incidentfile DO INSTEAD INSERT INTO public.url (url_source_id, url_source, url_title, url_url) VALUES (public.getincidentid(new.incident_number), 'INCDT'::text, new.title, new.url); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO incidentimage DO INSTEAD SELECT public.saveimageass('INCDT'::text, public.getincidentid(new.incident_number), 'M'::bpchar, public.getimageid(new.image_name)) AS saveimageass; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO invoice DO INSTEAD SELECT public.insertinvoice(new.*) AS insertinvoice; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO invoiceline DO INSTEAD SELECT public.insertinvoicelineitem(new.*) AS insertinvoicelineitem; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO item DO INSTEAD INSERT INTO public.item (item_number, item_active, item_descrip1, item_descrip2, item_type, item_maxcost, item_classcode_id, item_inv_uom_id, item_picklist, item_fractional, item_config, item_sold, item_prodcat_id, item_exclusive, item_listprice, item_listcost, item_price_uom_id, item_upccode, item_prodweight, item_packweight, item_comments, item_extdescrip) VALUES (upper((new.item_number)::text), COALESCE(new.active, true), COALESCE(new.description1, ''::text), COALESCE(new.description2, ''::text), CASE WHEN (new.item_type = 'Purchased'::text) THEN 'P'::text WHEN (new.item_type = 'Manufactured'::text) THEN 'M'::text WHEN (new.item_type = 'Job'::text) THEN 'J'::text WHEN (new.item_type = 'Kit'::text) THEN 'K'::text WHEN (new.item_type = 'Phantom'::text) THEN 'F'::text WHEN (new.item_type = 'Reference'::text) THEN 'R'::text WHEN (new.item_type = 'Costing'::text) THEN 'S'::text WHEN (new.item_type = 'Tooling'::text) THEN 'T'::text WHEN (new.item_type = 'Outside Process'::text) THEN 'O'::text WHEN (new.item_type = 'Planning'::text) THEN 'L'::text WHEN (new.item_type = 'Breeder'::text) THEN 'B'::text WHEN (new.item_type = 'Co-Product'::text) THEN 'C'::text WHEN (new.item_type = 'By-Product'::text) THEN 'Y'::text ELSE NULL::text END, COALESCE(new.maximum_desired_cost, (0)::numeric), public.getclasscodeid(new.class_code), public.getuomid(new.inventory_uom), COALESCE(new.pick_list_item, true), COALESCE(new.fractional, false), COALESCE(new.configured, false), COALESCE(new.item_is_sold, true), COALESCE(public.getprodcatid(new.product_category), (-1)), COALESCE(new.exclusive, false), COALESCE(new.list_price, (0)::numeric), COALESCE(new.list_cost, (0)::numeric), COALESCE(public.getuomid(new.list_price_uom), public.getuomid(new.inventory_uom)), new.upc_code, COALESCE(new.product_weight, (0)::numeric), COALESCE(new.packaging_weight, (0)::numeric), new.notes, new.ext_description); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO itemalias DO INSTEAD INSERT INTO public.itemalias (itemalias_item_id, itemalias_number, itemalias_usedescrip, itemalias_descrip1, itemalias_descrip2, itemalias_comments) VALUES (public.getitemid((new.item_number)::text), new.alias_number, COALESCE(new.use_description, false), COALESCE(new.description1, ''::text), COALESCE(new.description2, ''::text), new.comments); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO itemchar DO INSTEAD INSERT INTO public.charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default) VALUES ('I'::text, public.getitemid((new.item_number)::text), public.getcharid((new.characteristic)::text, 'I'::text), new.value, COALESCE(new.is_default, false)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO itemcomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'IS'::text, public.getitemid((new.item_number)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO itemcost DO INSTEAD SELECT public.insertitemcost(public.getitemid((new.item_number)::text), public.getcostelemid((new.costing_element)::text), public.getcurrid((new.currency)::text), new.actual_cost, new.post_to_standard) AS insertitemcost; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO itemfile DO INSTEAD INSERT INTO public.url (url_source_id, url_source, url_title, url_url) VALUES (public.getitemid((new.item_number)::text), 'I'::text, new.title, new.url); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO itemimage DO INSTEAD SELECT public.saveimageass('I'::text, public.getitemid((new.item_number)::text), (CASE WHEN (new.purpose = 'Product Description'::text) THEN 'P'::text WHEN (new.purpose = 'Inventory Description'::text) THEN 'I'::text WHEN (new.purpose = 'Engineering Reference'::text) THEN 'E'::text WHEN (new.purpose = 'Miscellaneous'::text) THEN 'M'::text ELSE 'X'::text END)::bpchar, public.getimageid(new.image_name)) AS saveimageass; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO itemsite DO INSTEAD INSERT INTO public.itemsite (itemsite_item_id, itemsite_warehous_id, itemsite_active, itemsite_dropship, itemsite_posupply, itemsite_createpr, itemsite_wosupply, itemsite_createwo, itemsite_createsopr, itemsite_createsopo, itemsite_sold, itemsite_soldranking, itemsite_costmethod, itemsite_controlmethod, itemsite_perishable, itemsite_plancode_id, itemsite_costcat_id, itemsite_loccntrl, itemsite_location_id, itemsite_location, itemsite_location_comments, itemsite_disallowblankwip, itemsite_stocked, itemsite_abcclass, itemsite_autoabcclass, itemsite_cyclecountfreq, itemsite_eventfence, itemsite_useparams, itemsite_reorderlevel, itemsite_ordertoqty, itemsite_minordqty, itemsite_maxordqty, itemsite_multordqty, itemsite_useparamsmanual, itemsite_ordergroup, itemsite_ordergroup_first, itemsite_mps_timefence, itemsite_leadtime, itemsite_safetystock, itemsite_supply_itemsite_id, itemsite_notes, itemsite_qtyonhand, itemsite_warrpurc, itemsite_autoreg, itemsite_freeze, itemsite_value, itemsite_planning_type) VALUES (public.getitemid((new.item_number)::text), public.getwarehousid((new.site)::text, 'ACTIVE'::text), COALESCE(new.active, true), COALESCE(new.dropship, false), COALESCE(new.po_supplied_at_site, false), COALESCE(new.create_prs, false), COALESCE(new.wo_supplied_at_site, false), COALESCE(new.create_wos, false), COALESCE(new.create_soprs, false), COALESCE(new.create_sopos, false), COALESCE(new.sold_from_site, true), COALESCE(new.ranking, 1), CASE WHEN (new.cost_method = 'None'::text) THEN 'N'::text WHEN (new.cost_method = 'Average'::text) THEN 'A'::text WHEN (new.cost_method = 'Standard'::text) THEN 'S'::text WHEN (new.cost_method = 'Job'::text) THEN 'J'::text ELSE NULL::text END, CASE WHEN (new.control_method = 'None'::text) THEN 'N'::text WHEN (new.control_method = 'Regular'::text) THEN 'R'::text WHEN (new.control_method = 'Serial #'::text) THEN 'S'::text WHEN (new.control_method = 'Lot #'::text) THEN 'L'::text ELSE NULL::text END, COALESCE(new.perishable, false), public.getplancodeid(new.planner_code), public.getcostcatid(new.cost_category), COALESCE(new.multiple_location_control, false), COALESCE(public.getlocationid((new.site)::text, new.location), (-1)), COALESCE(new.user_defined_location, ''::text), COALESCE(new.location_comment, ''::text), COALESCE(new.disallow_blank_wip_locations, false), COALESCE(new.stocked, false), COALESCE(new.abc_class, 'A'::bpchar), COALESCE(new.allow_automatic_updates, false), COALESCE(new.cycl_cnt_freq, 0), COALESCE((new.event_fence)::numeric, public.fetchmetricvalue('DefaultEventFence'::text)), COALESCE(new.enforce_order_parameters, false), COALESCE(new.reorder_level, (0)::numeric), COALESCE(new.order_up_to, (0)::numeric), COALESCE(new.minimum_order, (0)::numeric), COALESCE(new.maximum_order, (0)::numeric), COALESCE(new.order_multiple, (0)::numeric), COALESCE(new.enforce_on_manual_orders, false), COALESCE(new.group_mps_mrp_orders, 0), COALESCE(new.first_group, false), COALESCE(new.mps_time_fence, 0), COALESCE(new.lead_time, 0), COALESCE(new.safety_stock, (0)::numeric), CASE WHEN (new.supplied_from_site = 'None'::text) THEN NULL::integer WHEN (new.supplied_from_site = ''::text) THEN NULL::integer ELSE public.getitemsiteid(new.supplied_from_site, (new.item_number)::text) END, COALESCE(new.notes, ''::text), 0, COALESCE(new.require_warranty, false), COALESCE(new.auto_register, false), false, 0, CASE WHEN (new.planning_system = 'None'::text) THEN 'N'::text WHEN (new.planning_system = 'MPS'::text) THEN 'S'::text ELSE 'M'::text END); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO itemsitecomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'IS'::text, public.getitemsiteid((new.site)::text, (new.item_number)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO itemsource DO INSTEAD INSERT INTO public.itemsrc (itemsrc_item_id, itemsrc_vend_id, itemsrc_vend_item_number, itemsrc_vend_item_descrip, itemsrc_comments, itemsrc_vend_uom, itemsrc_invvendoruomratio, itemsrc_minordqty, itemsrc_multordqty, itemsrc_leadtime, itemsrc_ranking, itemsrc_active, itemsrc_default, itemsrc_manuf_name, itemsrc_manuf_item_number, itemsrc_manuf_item_descrip, itemsrc_upccode, itemsrc_contrct_id, itemsrc_effective, itemsrc_expires) VALUES (public.getitemid((new.item_number)::text), public.getvendid((new.vendor)::text), new.vendor_item_number, COALESCE(new.vendor_description, ''::text), COALESCE(new.notes, ''::text), new.vendor_uom, new.inventory_vendor_uom_ratio, new.minimum_order, new.order_multiple, new.lead_time, new.vendor_ranking, COALESCE(new.active, true), COALESCE(new.itemsrc_default, true), COALESCE(new.manufacturer_name, ''::text), COALESCE(new.manufacturer_item_number, ''::text), new.manufacturer_description, new.bar_code, public.getcontrctid(new.contract_number), COALESCE(public.getcontrcteffective(new.contract_number), new.effective_date), COALESCE(public.getcontrctexpires(new.contract_number), new.expires_date)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO itemsourceprice DO INSTEAD INSERT INTO public.itemsrcp (itemsrcp_itemsrc_id, itemsrcp_qtybreak, itemsrcp_price, itemsrcp_curr_id, itemsrcp_updated, itemsrcp_dropship, itemsrcp_warehous_id, itemsrcp_type, itemsrcp_discntprcnt, itemsrcp_fixedamtdiscount) VALUES (public.getitemsrcid((new.item_number)::text, (new.vendor)::text), new.qty_break, new.price_per_unit, public.getcurrid((new.currency)::text), now(), COALESCE(new.dropship_only, false), CASE WHEN (new.pricing_site = 'All'::text) THEN (-1) ELSE COALESCE(public.getwarehousid(new.pricing_site, 'ALL'::text), (-1)) END, CASE WHEN (new.pricing_type = 'Discount'::text) THEN 'D'::text ELSE 'N'::text END, (COALESCE(new.discount_percent, 0.0) / 100.0), new.discount_fixed_amount); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO itemsubstitute DO INSTEAD INSERT INTO public.itemsub (itemsub_parent_item_id, itemsub_sub_item_id, itemsub_uomratio, itemsub_rank) VALUES (public.getitemid((new.root_item_number)::text), public.getitemid((new.substitute_item_number)::text), COALESCE(new.sub_parent_uom_ratio, (1)::numeric), COALESCE(new.ranking, 1)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO itemtaxtype DO INSTEAD INSERT INTO public.itemtax (itemtax_item_id, itemtax_taxzone_id, itemtax_taxtype_id) VALUES (public.getitemid((new.item_number)::text), CASE WHEN ((new.tax_zone)::text = 'Any'::text) THEN NULL::integer ELSE public.gettaxzoneid((new.tax_zone)::text) END, public.gettaxtypeid(new.tax_type)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO itemuomconversion DO INSTEAD SELECT public.saveitemuomconv(public.getitemid((new.item_number)::text), COALESCE(public.getuomid((new.uom)::text), (SELECT item.item_inv_uom_id FROM public.item WHERE (item.item_id = public.getitemid((new.item_number)::text)))), COALESCE(new.uom_value, (1)::numeric), COALESCE(public.getuomid(new.per_uom), (SELECT item.item_inv_uom_id FROM public.item WHERE (item.item_id = public.getitemid((new.item_number)::text)))), COALESCE(new.per_uom_value, (1)::numeric), COALESCE(new.fractional, false), public.getuomtypeid(new.selected_types)) AS saveitemuomconv; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO journalentry DO INSTEAD SELECT public.insertgltransaction('G/L'::text, 'JE'::text, new.doc_number, new.notes, public.getglaccntid(new.credit), public.getglaccntid(new.debit), (-1), public.currtobase(public.getcurrid((new.currency)::text), new.amount, new.dist_date), new.dist_date) AS insertgltransaction; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO location DO INSTEAD INSERT INTO public.location (location_warehous_id, location_name, location_descrip, location_restrict, location_netable, location_whsezone_id, location_aisle, location_rack, location_bin) VALUES (public.getwarehousid((new.site)::text, 'ACTIVE'::text), COALESCE(new.location, ''::character varying), COALESCE(new.description, ''::text), COALESCE(new.restricted, false), COALESCE(new.netable, true), public.getwhsezoneid((new.site)::text, new.zone), COALESCE(new.aisle, ''::character varying), COALESCE(new.rack, ''::character varying), COALESCE(new.bin, ''::character varying)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO misccounttag DO INSTEAD SELECT public.postmisccount(public.getitemsiteid(COALESCE(new.site, (SELECT whsinfo.warehous_code FROM public.usrpref, public.whsinfo WHERE (((usrpref.usrpref_username = public.geteffectivextuser()) AND (usrpref.usrpref_name = 'PreferredWarehouse'::text)) AND (whsinfo.warehous_id = (usrpref.usrpref_value)::integer)))), new.item_number), new.quantity, new.comment) AS postmisccount; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO pricingschedule DO INSTEAD INSERT INTO public.ipshead (ipshead_id, ipshead_name, ipshead_descrip, ipshead_effective, ipshead_expires, ipshead_curr_id, ipshead_updated) VALUES (nextval('public.ipshead_ipshead_id_seq'::regclass), new.name, new.description, CASE WHEN (new.effective = 'Always'::text) THEN '1970-01-01'::date ELSE (COALESCE(new.effective, '1970-01-01'::text))::date END, CASE WHEN (new.expires = 'Never'::text) THEN '2100-01-01'::date ELSE (COALESCE(new.expires, '2100-01-01'::text))::date END, COALESCE(public.getcurrid((new.currency)::text), public.basecurrid()), now()); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO pricingscheduleassign DO INSTEAD INSERT INTO public.ipsass (ipsass_ipshead_id, ipsass_cust_id, ipsass_custtype_id, ipsass_custtype_pattern, ipsass_shipto_id, ipsass_shipto_pattern) VALUES (public.getipsheadid((new.pricing_schedule)::text), CASE WHEN ((new.customer_number)::text = 'Any'::text) THEN (-1) ELSE public.getcustid((new.customer_number)::text) END, CASE WHEN ((new.customer_type)::text = 'N/A'::text) THEN (-1) ELSE public.getcusttypeid((new.customer_type)::text) END, new.customer_type_pattern, CASE WHEN (((new.customer_number)::text = 'Any'::text) OR ((new.customer_shipto)::text = 'Any'::text)) THEN (-1) ELSE public.getshiptoid((new.customer_number)::text, (new.customer_shipto)::text) END, new.customer_shipto_pattern); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO pricingscheduleitem DO INSTEAD SELECT CASE WHEN ((new.type)::text = 'Item'::text) THEN public.saveipsitem(NULL::integer, public.getipsheadid((new.pricing_schedule)::text), public.getitemid((new.item_number)::text), COALESCE(new.qty_break, (0)::numeric), COALESCE(new.price, (0)::numeric), public.getuomid((new.qty_uom)::text), public.getuomid((new.price_uom)::text), new.percent, new.fixedamt, CASE new.pricing_type WHEN 'Nominal'::text THEN 'N'::text WHEN 'Discount'::text THEN 'D'::text WHEN 'Markup'::text THEN 'M'::text ELSE '?'::text END) WHEN ((new.type)::text = 'Product Category'::text) THEN public.saveipsprodcat(NULL::integer, public.getipsheadid((new.pricing_schedule)::text), public.getprodcatid((new.product_category)::text), new.qty_break, new.percent, new.fixedamt, CASE new.pricing_type WHEN 'Nominal'::text THEN 'N'::text WHEN 'Discount'::text THEN 'D'::text WHEN 'Markup'::text THEN 'M'::text ELSE '?'::text END) ELSE NULL::integer END AS "case"; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO pricingscheduleitemchar DO INSTEAD INSERT INTO public.ipsitemchar (ipsitemchar_ipsitem_id, ipsitemchar_char_id, ipsitemchar_value, ipsitemchar_price) VALUES (public.getipsitemid((new.pricing_schedule)::text, (new.item_number)::text, new.qty_break, (new.qty_uom)::text, (new.price_uom)::text), public.getcharid((new.characteristic)::text, 'I'::text), new.value, COALESCE(new.price, (0)::numeric)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO project DO INSTEAD INSERT INTO public.prj (prj_number, prj_name, prj_descrip, prj_owner_username, prj_username, prj_so, prj_wo, prj_po, prj_status, prj_due_date, prj_assigned_date, prj_start_date, prj_completed_date) VALUES (new.number, COALESCE(new.name, ''::text), COALESCE(new.description, ''::text), COALESCE(new.owner, public.geteffectivextuser()), COALESCE(new.assigned_to, public.geteffectivextuser()), COALESCE(new.sales_orders, true), COALESCE(new.work_orders, true), COALESCE(new.purchase_orders, true), CASE WHEN (new.status = 'In-Process'::text) THEN 'O'::text WHEN (new.status = 'Completed'::text) THEN 'C'::text ELSE 'P'::text END, new.due, new.assigned, new.started, new.completed); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO projectcomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'J'::text, public.getprjid((new.project_number)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO prospect DO INSTEAD INSERT INTO public.prospect (prospect_number, prospect_name, prospect_active, prospect_cntct_id, prospect_taxzone_id, prospect_salesrep_id, prospect_warehous_id, prospect_comments) VALUES (upper((new.prospect_number)::text), COALESCE(new.prospect_name, ''::text), COALESCE(new.active, true), public.savecntct(public.getcntctid(new.contact_number), new.contact_number, public.saveaddr(public.getaddrid(new.contact_address_number), new.contact_address_number, new.contact_address1, new.contact_address2, new.contact_address3, new.contact_city, new.contact_state, new.contact_postalcode, new.contact_country, new.contact_address_change), new.contact_honorific, new.contact_first, new.contact_middle, new.contact_last, new.contact_suffix, new.contact_voice, new.contact_alternate, new.contact_fax, new.contact_email, new.contact_web, new.contact_job_title, new.contact_change), public.gettaxzoneid(new.default_tax_zone), public.getsalesrepid(new.sales_rep), public.getwarehousid(new.site_code, 'ACTIVE'::text), COALESCE(new.notes, ''::text)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO purchaseline DO INSTEAD INSERT INTO public.poitem (poitem_pohead_id, poitem_linenumber, poitem_duedate, poitem_itemsite_id, poitem_vend_item_descrip, poitem_qty_ordered, poitem_unitprice, poitem_vend_item_number, poitem_manuf_name, poitem_manuf_item_number, poitem_manuf_item_descrip, poitem_comments, poitem_expcat_id, poitem_freight, poitem_prj_id, poitem_bom_rev_id, poitem_boo_rev_id) VALUES (public.getpoheadid((new.order_number)::text), new.line_number, new.due_date, public.getitemsiteid(COALESCE(new.site, (SELECT whsinfo.warehous_code FROM (public.pohead JOIN public.whsinfo ON ((whsinfo.warehous_id = pohead.pohead_warehous_id))) WHERE (pohead.pohead_id = public.getpoheadid((new.order_number)::text))), (SELECT whsinfo.warehous_code FROM public.whsinfo WHERE (whsinfo.warehous_id = public.fetchprefwarehousid()))), new.item_number), new.vendor_description, new.qty_ordered, new.unit_price, new.vend_item_number, new.manufacturer_name, new.manufacturer_item_number, new.manufacturer_description, new.notes, public.getexpcatid(new.expense_category), new.freight, public.getprjid(new.project_number), public.getrevid('BOM'::text, new.item_number, new.bill_of_materials_revision), public.getrevid('BOO'::text, new.item_number, new.bill_of_operations_revision)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO purchaselinechar DO INSTEAD SELECT DISTINCT public.updatecharassignment('PI'::text, poitem.poitem_id, charass.charass_char_id, new.value) AS updatecharassignment FROM public.pohead, public.poitem, public.itemsite, public.item, public.charass, public."char" WHERE (((((((((pohead.pohead_number = (new.order_number)::text) AND (pohead.pohead_id = poitem.poitem_pohead_id)) AND (poitem.poitem_linenumber = new.line_number)) AND (poitem.poitem_itemsite_id = itemsite.itemsite_id)) AND (item.item_id = itemsite.itemsite_item_id)) AND (charass.charass_target_type = 'I'::text)) AND (charass.charass_target_id = item.item_id)) AND ("char".char_id = charass.charass_char_id)) AND ("char".char_name = new.characteristic)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO purchaselinecomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) SELECT COALESCE(new.date, (('now'::text)::date)::timestamp with time zone) AS "coalesce", 'PI', poitem.poitem_id, COALESCE(new.username, public.geteffectivextuser()) AS "coalesce", public.getcmnttypeid(new.type) AS getcmnttypeid, new.text FROM public.poitem, public.pohead WHERE (((pohead.pohead_number = (new.order_number)::text) AND (poitem.poitem_pohead_id = pohead.pohead_id)) AND (poitem.poitem_linenumber = new.line_number)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO purchaseorder DO INSTEAD INSERT INTO public.pohead (pohead_number, pohead_orderdate, pohead_status, pohead_terms_id, pohead_taxzone_id, pohead_warehous_id, pohead_agent_username, pohead_vend_id, pohead_vendaddr_id, pohead_fob, pohead_shipvia, pohead_curr_id, pohead_freight, pohead_comments, pohead_dropship, pohead_vend_cntct_id, pohead_vend_cntct_honorific, pohead_vend_cntct_first_name, pohead_vend_cntct_middle, pohead_vend_cntct_last_name, pohead_vend_cntct_suffix, pohead_vend_cntct_phone, pohead_vend_cntct_title, pohead_vend_cntct_fax, pohead_vend_cntct_email, pohead_vendaddress1, pohead_vendaddress2, pohead_vendaddress3, pohead_vendcity, pohead_vendstate, pohead_vendzipcode, pohead_vendcountry, pohead_shipto_cntct_id, pohead_shipto_cntct_honorific, pohead_shipto_cntct_first_name, pohead_shipto_cntct_middle, pohead_shipto_cntct_last_name, pohead_shipto_cntct_suffix, pohead_shipto_cntct_phone, pohead_shipto_cntct_title, pohead_shipto_cntct_fax, pohead_shipto_cntct_email, pohead_shiptoaddress_id, pohead_shiptoaddress1, pohead_shiptoaddress2, pohead_shiptoaddress3, pohead_shiptocity, pohead_shiptostate, pohead_shiptozipcode, pohead_shiptocountry, pohead_cohead_id) SELECT new.order_number, COALESCE(new.order_date, ('now'::text)::date) AS "coalesce", 'U', COALESCE(public.gettermsid(new.terms), vendinfo.vend_terms_id) AS "coalesce", COALESCE(public.gettaxzoneid(new.tax_zone), vendinfo.vend_taxzone_id) AS "coalesce", COALESCE(public.getwarehousid(new.receiving_site, 'ALL'::text), public.fetchprefwarehousid()) AS "coalesce", COALESCE(new.purchasing_agent, public.geteffectivextuser()) AS "coalesce", public.getvendid(new.vendor_number) AS getvendid, CASE WHEN (new.alt_address = 'MAIN'::text) THEN NULL::integer ELSE public.getvendaddrid(new.vendor_number, new.alt_address) END AS getvendaddrid, COALESCE(new.fob, CASE WHEN (vendinfo.vend_fobsource = 'W'::bpchar) THEN (SELECT whsinfo.warehous_fob FROM public.whsinfo WHERE (whsinfo.warehous_id = COALESCE(public.getwarehousid(new.receiving_site, 'ALL'::text), public.fetchprefwarehousid()))) ELSE vendinfo.vend_fob END) AS "coalesce", COALESCE(new.ship_via, vendinfo.vend_shipvia) AS "coalesce", COALESCE(public.getcurrid((new.currency)::text), vendinfo.vend_curr_id) AS "coalesce", COALESCE(new.freight, (0)::numeric) AS "coalesce", new.notes, COALESCE(new.dropship, false) AS "coalesce", public.getcntctid(new.vend_contact_number) AS getcntctid, COALESCE(new.vend_cntct_honorific, ''::text) AS "coalesce", COALESCE(new.vend_cntct_first_name, ''::text) AS "coalesce", COALESCE(new.vend_cntct_middle, ''::text) AS "coalesce", COALESCE(new.vend_cntct_last_name, ''::text) AS "coalesce", COALESCE(new.vend_cntct_suffix, ''::text) AS "coalesce", COALESCE(new.vend_cntct_phone, ''::text) AS "coalesce", COALESCE(new.vend_cntct_title, ''::text) AS "coalesce", COALESCE(new.vend_cntct_fax, ''::text) AS "coalesce", COALESCE(new.vend_cntct_email, ''::text) AS "coalesce", COALESCE(new.vendaddress1, ''::text) AS "coalesce", COALESCE(new.vendaddress2, ''::text) AS "coalesce", COALESCE(new.vendaddress3, ''::text) AS "coalesce", COALESCE(new.vendcity, ''::text) AS "coalesce", COALESCE(new.vendstate, ''::text) AS "coalesce", COALESCE(new.vendzipcode, ''::text) AS "coalesce", COALESCE(new.vendcountry, ''::text) AS "coalesce", public.getcntctid(new.shipto_contact_number) AS getcntctid, COALESCE(new.shipto_cntct_honorific, ''::text) AS "coalesce", COALESCE(new.shipto_cntct_first_name, ''::text) AS "coalesce", COALESCE(new.shipto_cntct_middle, ''::text) AS "coalesce", COALESCE(new.shipto_cntct_last_name, ''::text) AS "coalesce", COALESCE(new.shipto_cntct_suffix, ''::text) AS "coalesce", COALESCE(new.shipto_cntct_phone, ''::text) AS "coalesce", COALESCE(new.shipto_cntct_title, ''::text) AS "coalesce", COALESCE(new.shipto_cntct_fax, ''::text) AS "coalesce", COALESCE(new.shipto_cntct_email, ''::text) AS "coalesce", public.getaddrid(new.shiptoaddress_number) AS getaddrid, COALESCE(new.shiptoaddress1, ''::text) AS "coalesce", COALESCE(new.shiptoaddress2, ''::text) AS "coalesce", COALESCE(new.shiptoaddress3, ''::text) AS "coalesce", COALESCE(new.shiptocity, ''::text) AS "coalesce", COALESCE(new.shiptostate, ''::text) AS "coalesce", COALESCE(new.shiptozipcode, ''::text) AS "coalesce", COALESCE(new.shiptocountry, ''::text) AS "coalesce", public.getcoheadid(new.sales_order_number) AS getcoheadid FROM public.vendinfo WHERE (vendinfo.vend_id = public.getvendid(new.vendor_number)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO purchaseordercomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, (('now'::text)::date)::timestamp with time zone), 'P'::text, public.getpoheadid((new.order_number)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO quote DO INSTEAD INSERT INTO public.quhead (quhead_number, quhead_cust_id, quhead_custponumber, quhead_quotedate, quhead_warehous_id, quhead_shipto_id, quhead_shiptoname, quhead_shiptoaddress1, quhead_shiptoaddress2, quhead_shiptoaddress3, quhead_salesrep_id, quhead_terms_id, quhead_fob, quhead_shipvia, quhead_shiptocity, quhead_shiptostate, quhead_shiptozipcode, quhead_freight, quhead_misc, quhead_ordercomments, quhead_shipcomments, quhead_shiptophone, quhead_billtoname, quhead_billtoaddress1, quhead_billtoaddress2, quhead_billtoaddress3, quhead_billtocity, quhead_billtostate, quhead_billtozip, quhead_misc_accnt_id, quhead_misc_descrip, quhead_commission, quhead_packdate, quhead_prj_id, quhead_billtocountry, quhead_shiptocountry, quhead_curr_id, quhead_taxzone_id, quhead_taxtype_id, quhead_imported, quhead_expire, quhead_status, quhead_saletype_id, quhead_shipzone_id) VALUES (new.quote_number, public.getcustid(new.customer_number, true), new.cust_po_number, new.quote_date, public.getwarehousid(new.site, 'SHIPPING'::text), public.getshiptoid(new.customer_number, new.shipto_number), new.shipto_name, new.shipto_address1, new.shipto_address2, new.shipto_address3, public.getsalesrepid(new.sales_rep), public.gettermsid(new.terms), new.fob, new.ship_via, new.shipto_city, new.shipto_state, new.shipto_postal_code, new.freight, new.misc_charge, new.order_notes, new.shipping_notes, new.shipto_phone, new.billto_name, new.billto_address1, new.billto_address2, new.billto_address3, new.billto_city, new.billto_state, new.billto_postal_code, public.getglaccntid(new.misc_account_number), new.misc_charge_description, new.commission, new.pack_date, public.getprjid(new.project_number), new.billto_country, new.shipto_country, public.getcurrid((new.currency)::text), public.gettaxzoneid(new.tax_zone), public.gettaxtypeid(new.tax_type), true, new.expire_date, CASE WHEN (new.status = 'Converted'::text) THEN 'C'::text ELSE 'O'::text END, public.getsaletypeid(new.sale_type), public.getshipzoneid(new.shipto_shipzone)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO quotecomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, (('now'::text)::date)::timestamp with time zone), 'Q'::text, public.getquoteid(new.quote_number), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO quoteline DO INSTEAD INSERT INTO public.quitem (quitem_quhead_id, quitem_linenumber, quitem_itemsite_id, quitem_scheddate, quitem_qtyord, quitem_unitcost, quitem_price, quitem_custprice, quitem_memo, quitem_imported, quitem_custpn, quitem_createorder, quitem_order_warehous_id, quitem_item_id, quitem_prcost, quitem_taxtype_id, quitem_qty_uom_id, quitem_qty_invuomratio, quitem_price_uom_id, quitem_price_invuomratio) SELECT public.getquoteid(new.quote_number) AS getquoteid, COALESCE(new.line_number, (SELECT (COALESCE(max(quitem.quitem_linenumber), 0) + 1) FROM public.quitem WHERE (quitem.quitem_quhead_id = public.getquoteid(new.quote_number)))) AS "coalesce", itemsite.itemsite_id, COALESCE(new.scheduled_date, (SELECT min(quitem.quitem_scheddate) AS min FROM public.quitem WHERE (quitem.quitem_quhead_id = public.getquoteid(new.quote_number)))) AS "coalesce", new.qty_ordered, public.stdcost(item.item_id) AS stdcost, COALESCE(new.net_unit_price, public.itemprice(public.getitemid(new.item_number), quhead.quhead_cust_id, quhead.quhead_shipto_id, new.qty_ordered, quhead.quhead_curr_id, quhead.quhead_quotedate)) AS "coalesce", public.itemprice(public.getitemid(new.item_number), quhead.quhead_cust_id, quhead.quhead_shipto_id, new.qty_ordered, quhead.quhead_curr_id, quhead.quhead_quotedate) AS itemprice, COALESCE(new.notes, ''::text) AS "coalesce", true AS bool, new.customer_pn, COALESCE(new.create_order, false) AS "coalesce", COALESCE(public.getwarehousid(new.supplying_site, 'SHIPPING'::text), itemsite.itemsite_warehous_id) AS "coalesce", public.getitemid(new.item_number) AS getitemid, COALESCE(new.overwrite_po_price, (0)::numeric) AS "coalesce", COALESCE(public.gettaxtypeid(new.tax_type), public.getitemtaxtype(itemsite.itemsite_item_id, quhead.quhead_taxzone_id)) AS "coalesce", COALESCE(public.getuomid(new.qty_uom), item.item_inv_uom_id) AS "coalesce", public.itemuomtouomratio(item.item_id, COALESCE(public.getuomid(new.qty_uom), item.item_inv_uom_id), item.item_inv_uom_id) AS itemuomtouomratio, COALESCE(public.getuomid(new.price_uom), item.item_price_uom_id) AS "coalesce", public.itemuomtouomratio(item.item_id, COALESCE(public.getuomid(new.price_uom), item.item_price_uom_id), item.item_price_uom_id) AS itemuomtouomratio FROM public.quhead, public.itemsite, public.item, public.whsinfo WHERE ((quhead.quhead_number = new.quote_number) AND (((((((itemsite.itemsite_warehous_id = whsinfo.warehous_id) AND (itemsite.itemsite_item_id = item.item_id)) AND itemsite.itemsite_active) AND (item.item_number = new.item_number)) AND whsinfo.warehous_active) AND whsinfo.warehous_shipping) AND (whsinfo.warehous_code = COALESCE(new.sold_from_site, (SELECT whsinfo.warehous_code FROM public.usrpref, public.whsinfo WHERE (((usrpref.usrpref_username = public.geteffectivextuser()) AND (usrpref.usrpref_name = 'PreferredWarehouse'::text)) AND (whsinfo.warehous_id = (usrpref.usrpref_value)::integer))))))); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO quotelinechar DO INSTEAD SELECT DISTINCT public.updatecharassignment('QI'::text, quitem.quitem_id, charass.charass_char_id, new.value) AS updatecharassignment FROM public.quhead, public.quitem, public.itemsite, public.item, public.charass, public."char" WHERE (((((((((quhead.quhead_number = new.quote_number) AND (quhead.quhead_id = quitem.quitem_quhead_id)) AND (quitem.quitem_linenumber = new.line_number)) AND (quitem.quitem_itemsite_id = itemsite.itemsite_id)) AND (item.item_id = itemsite.itemsite_item_id)) AND (charass.charass_target_type = 'I'::text)) AND (charass.charass_target_id = item.item_id)) AND ("char".char_id = charass.charass_char_id)) AND ("char".char_name = new.characteristic)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO quotelinecomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, (('now'::text)::date)::timestamp with time zone), 'QI'::text, public.getquotelineitemid(new.quote_number, new.line_number), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO salescredit DO INSTEAD INSERT INTO public.aropenalloc (aropenalloc_aropen_id, aropenalloc_doctype, aropenalloc_doc_id, aropenalloc_amount, aropenalloc_curr_id) VALUES (public.getaropenid(new.customer_number, 'C'::bpchar, new.cm_number), 'S'::bpchar, public.getcoheadid(new.so_number), new.amount, public.getcurrid((new.currency)::text)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO saleshistory DO INSTEAD INSERT INTO public.cohist (cohist_cust_id, cohist_itemsite_id, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_orderdate, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_shipto_id, cohist_salesrep_id, cohist_duedate, cohist_imported, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_commission, cohist_commissionpaid, cohist_unitcost, cohist_misc_type, cohist_misc_descrip, cohist_misc_id, cohist_doctype, cohist_promisedate, cohist_ponumber, cohist_curr_id, cohist_sequence, cohist_taxzone_id, cohist_taxtype_id) VALUES (public.getcustid(new.customer_number), public.getitemsiteid(new.site_code, new.item_number), new.ship_date, new.ship_via, new.order_number, new.order_date, new.invoice_number, new.invoice_date, new.quantity_shipped, COALESCE(new.unit_price, (0)::numeric), public.getshiptoid(new.customer_number, new.shipto_number), public.getsalesrepid(new.sales_rep), new.due_date, true, new.billto_name, new.billto_address1, new.billto_address2, new.billto_address3, new.billto_city, new.billto_state, new.billto_zip, new.shipto_name, new.shipto_address1, new.shipto_address2, new.shipto_address3, new.shipto_city, new.shipto_state, new.shipto_zip, COALESCE(new.commission, (0)::numeric), COALESCE(new.commission_paid, false), COALESCE(new.unit_cost, (0)::numeric), CASE WHEN (new.misc_type = 'Misc. Charge'::text) THEN 'M'::text WHEN (new.misc_type = 'Freight'::text) THEN 'F'::text ELSE NULL::text END, new.misc_description, CASE WHEN (new.misc_type = 'Misc. Charge'::text) THEN public.getglaccntid(new.misc_info) ELSE NULL::integer END, CASE WHEN (new.document_type = 'Invoice'::text) THEN 'I'::text WHEN (new.document_type = 'Credit Memo'::text) THEN 'C'::text ELSE NULL::text END, new.promise_date, new.purchase_order_number, COALESCE(public.getcurrid((new.currency)::text), public.basecurrid()), new.gl_sequence, public.gettaxzoneid(new.tax_zone), public.gettaxtypeid(new.tax_type)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO saleslinechar DO INSTEAD SELECT DISTINCT public.updatecharassignment('SI'::text, coitem.coitem_id, charass.charass_char_id, new.value, public.itemcharprice(item.item_id, "char".char_id, new.value, cohead.cohead_cust_id, cohead.cohead_shipto_id, coitem.coitem_qtyord, cohead.cohead_curr_id, cohead.cohead_orderdate)) AS updatecharassignment FROM public.cohead, public.coitem, public.itemsite, public.item, public.charass, public."char" WHERE (((((((((cohead.cohead_number = (new.order_number)::text) AND (cohead.cohead_id = coitem.coitem_cohead_id)) AND (coitem.coitem_id = public.getcoitemid((new.order_number)::text, new.line_number))) AND (coitem.coitem_itemsite_id = itemsite.itemsite_id)) AND (item.item_id = itemsite.itemsite_item_id)) AND (charass.charass_target_type = 'I'::text)) AND (charass.charass_target_id = item.item_id)) AND ("char".char_id = charass.charass_char_id)) AND ("char".char_name = new.characteristic)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO saleslinecomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, (('now'::text)::date)::timestamp with time zone), 'SI'::text, public.getcoitemid((new.order_number)::text, new.line_number), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO salesorder DO INSTEAD INSERT INTO public.cohead (cohead_number, cohead_cust_id, cohead_custponumber, cohead_orderdate, cohead_warehous_id, cohead_shipto_id, cohead_shiptoname, cohead_shiptoaddress1, cohead_shiptoaddress2, cohead_shiptoaddress3, cohead_salesrep_id, cohead_terms_id, cohead_fob, cohead_shipvia, cohead_shiptocity, cohead_shiptostate, cohead_shiptozipcode, cohead_freight, cohead_calcfreight, cohead_misc, cohead_imported, cohead_ordercomments, cohead_shipcomments, cohead_shiptophone, cohead_shipchrg_id, cohead_shipform_id, cohead_billtoname, cohead_billtoaddress1, cohead_billtoaddress2, cohead_billtoaddress3, cohead_billtocity, cohead_billtostate, cohead_billtozipcode, cohead_misc_accnt_id, cohead_misc_descrip, cohead_commission, cohead_holdtype, cohead_packdate, cohead_prj_id, cohead_shipcomplete, cohead_billtocountry, cohead_shiptocountry, cohead_curr_id, cohead_taxzone_id, cohead_shipto_cntct_id, cohead_shipto_cntct_honorific, cohead_shipto_cntct_first_name, cohead_shipto_cntct_middle, cohead_shipto_cntct_last_name, cohead_shipto_cntct_suffix, cohead_shipto_cntct_phone, cohead_shipto_cntct_title, cohead_shipto_cntct_fax, cohead_shipto_cntct_email, cohead_billto_cntct_id, cohead_billto_cntct_honorific, cohead_billto_cntct_first_name, cohead_billto_cntct_middle, cohead_billto_cntct_last_name, cohead_billto_cntct_suffix, cohead_billto_cntct_phone, cohead_billto_cntct_title, cohead_billto_cntct_fax, cohead_billto_cntct_email, cohead_saletype_id, cohead_shipzone_id) SELECT new.order_number, public.getcustid(new.customer_number) AS getcustid, new.cust_po_number, new.order_date, public.getwarehousid(new.site, 'SHIPPING'::text) AS getwarehousid, public.getshiptoid(new.customer_number, new.shipto_number) AS getshiptoid, new.shipto_name, new.shipto_address1, new.shipto_address2, new.shipto_address3, public.getsalesrepid(new.sales_rep) AS getsalesrepid, public.gettermsid(new.terms) AS gettermsid, new.fob, new.ship_via, new.shipto_city, new.shipto_state, new.shipto_postal_code, CASE WHEN COALESCE(new.calculate_freight, public.fetchmetricbool('CalculateFreight'::text)) THEN (0)::numeric ELSE new.freight END AS freight, COALESCE(new.calculate_freight, public.fetchmetricbool('CalculateFreight'::text)) AS "coalesce", new.misc_charge, true AS bool, new.order_notes, new.shipping_notes, new.shipto_phone, public.getshipchrgid(new.shipping_chgs) AS getshipchrgid, public.getshipformid(new.shipping_form) AS getshipformid, new.billto_name, new.billto_address1, new.billto_address2, new.billto_address3, new.billto_city, new.billto_state, new.billto_postal_code, public.getglaccntid(new.misc_account_number) AS getglaccntid, new.misc_charge_description, new.commission, CASE WHEN (new.hold_type = 'Credit'::text) THEN 'C'::text WHEN (new.hold_type = 'Shipping'::text) THEN 'S'::text WHEN (new.hold_type = 'Packing'::text) THEN 'P'::text ELSE 'N'::text END AS "case", new.pack_date, public.getprjid(new.project_number) AS getprjid, new.ship_complete, new.billto_country, new.shipto_country, public.getcurrid((new.currency)::text) AS getcurrid, CASE WHEN (new.tax_zone = 'None'::text) THEN (-1) ELSE public.gettaxzoneid(new.tax_zone) END AS gettaxzoneid, public.getcntctid(new.shipto_contact_number) AS getcntctid, new.shipto_contact_honorific, new.shipto_contact_first, new.shipto_contact_middle, new.shipto_contact_last, new.shipto_contact_suffix, new.shipto_contact_phone, new.shipto_contact_title, new.shipto_contact_fax, new.shipto_contact_email, public.getcntctid(new.billto_contact_number) AS getcntctid, new.billto_contact_name, new.billto_contact_first, new.billto_contact_middle, new.billto_contact_last, new.billto_contact_suffix, new.billto_contact_phone, new.billto_contact_title, new.billto_contct_fax, new.billto_contact_email, public.getsaletypeid(new.sale_type) AS getsaletypeid, public.getshipzoneid(new.shipto_shipzone) AS getshipzoneid FROM public.custinfo WHERE (custinfo.cust_number = new.customer_number); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO salesordercomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, (('now'::text)::date)::timestamp with time zone), 'S'::text, public.getsalesorderid((new.order_number)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO salesrep DO INSTEAD INSERT INTO public.salesrep (salesrep_active, salesrep_number, salesrep_name, salesrep_commission, salesrep_method, salesrep_emp_id) VALUES (COALESCE(new.active, true), COALESCE(new.number, ''::character varying), COALESCE(new.name, ''::text), COALESCE((new.commission_percent * 0.01), (0)::numeric), ''::bpchar, public.getempid(new.employee)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO site DO INSTEAD INSERT INTO public.whsinfo (warehous_code, warehous_descrip, warehous_fob, warehous_active, warehous_counttag_prefix, warehous_counttag_number, warehous_bol_prefix, warehous_bol_number, warehous_shipping, warehous_useslips, warehous_usezones, warehous_aislesize, warehous_aislealpha, warehous_racksize, warehous_rackalpha, warehous_binsize, warehous_binalpha, warehous_locationsize, warehous_locationalpha, warehous_enforcearbl, warehous_default_accnt_id, warehous_shipping_commission, warehous_cntct_id, warehous_addr_id, warehous_taxzone_id, warehous_transit, warehous_shipform_id, warehous_shipvia_id, warehous_shipcomments, warehous_costcat_id, warehous_sitetype_id, warehous_sequence) VALUES (COALESCE(new.code, ''::character varying), COALESCE(new.description, ''::text), CASE WHEN new.inventory_type THEN COALESCE(new.default_fob, ''::text) ELSE ''::text END, COALESCE(new.active, true), CASE WHEN new.inventory_type THEN COALESCE(new.next_count_tag_prefix, ''::text) ELSE ''::text END, CASE WHEN new.inventory_type THEN COALESCE(new.next_count_tag_number, 0) ELSE 0 END, CASE WHEN new.inventory_type THEN COALESCE(new.next_bill_of_lading_prefix, ''::text) ELSE ''::text END, CASE WHEN new.inventory_type THEN COALESCE(new.next_bill_of_lading_number, 0) ELSE 0 END, CASE WHEN new.inventory_type THEN COALESCE(new.shipping_site, false) ELSE false END, CASE WHEN new.inventory_type THEN COALESCE(new.force_the_use_of_count_slips, false) ELSE false END, CASE WHEN new.inventory_type THEN COALESCE(new.force_the_use_of_zones, false) ELSE false END, CASE WHEN new.inventory_type THEN COALESCE(new.aisle_size, 0) ELSE 0 END, CASE WHEN new.inventory_type THEN COALESCE(new.aisle_allow_alpha_characters, false) ELSE false END, CASE WHEN new.inventory_type THEN COALESCE(new.rack_size, 0) ELSE 0 END, CASE WHEN new.inventory_type THEN COALESCE(new.rack_allow_alpha_characters, false) ELSE false END, CASE WHEN new.inventory_type THEN COALESCE(new.bin_size, 0) ELSE 0 END, CASE WHEN new.inventory_type THEN COALESCE(new.bin_allow_alpha_characters, false) ELSE false END, CASE WHEN new.inventory_type THEN COALESCE(new.location_size, 0) ELSE 0 END, CASE WHEN new.inventory_type THEN COALESCE(new.location_allow_alpha_characters, false) ELSE false END, CASE WHEN new.inventory_type THEN COALESCE(new.enforce_arbl_naming_convention, false) ELSE false END, COALESCE(public.getglaccntid(new.post_unassigned_transactions_to), (-1)), CASE WHEN new.inventory_type THEN COALESCE((new.shipping_commission * 0.01), (0)::numeric) ELSE (0)::numeric END, public.savecntct(public.getcntctid(new.contact_number), new.contact_number, NULL::integer, new.honorific, new.first, new.middle, new.last, new.suffix, new.phone, NULL::text, new.fax, new.email, NULL::text, new.job_title, new.contact_change), public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postal_code, new.country, new.address_change), CASE WHEN new.inventory_type THEN COALESCE(public.gettaxzoneid(new.tax_zone), (-1)) ELSE NULL::integer END, CASE WHEN new.inventory_type THEN false WHEN new.transit_type THEN true ELSE false END, CASE WHEN new.transit_type THEN COALESCE((public.getshipformid(new.default_shipping_form))::numeric, public.fetchmetricvalue('DefaultShipFormId'::text)) ELSE NULL::numeric END, CASE WHEN new.transit_type THEN COALESCE((public.getshipviaid(new.default_ship_via))::numeric, public.fetchmetricvalue('DefaultShipViaId'::text)) ELSE NULL::numeric END, CASE WHEN new.transit_type THEN COALESCE(new.shipping_comments, ''::text) ELSE ''::text END, CASE WHEN new.transit_type THEN COALESCE(public.getcostcatid(new.default_cost_category), (-1)) ELSE NULL::integer END, COALESCE(public.getsitetypeid(new.type), (-1)), COALESCE(new.scheduling_sequence, 0)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO sitezone DO INSTEAD INSERT INTO public.whsezone (whsezone_warehous_id, whsezone_name, whsezone_descrip) VALUES (public.getwarehousid((new.site)::text, 'ACTIVE'::text), COALESCE(new.name, ''::character varying), COALESCE(new.description, ''::text)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO task DO INSTEAD INSERT INTO public.prjtask (prjtask_prj_id, prjtask_number, prjtask_name, prjtask_descrip, prjtask_owner_username, prjtask_username, prjtask_hours_budget, prjtask_hours_actual, prjtask_exp_budget, prjtask_exp_actual, prjtask_status, prjtask_due_date, prjtask_assigned_date, prjtask_start_date, prjtask_completed_date) VALUES (public.getprjid(new.project_number), new.number, COALESCE(new.name, ''::text), COALESCE(new.description, ''::text), COALESCE(new.owner, public.geteffectivextuser()), COALESCE(new.assigned_to, public.geteffectivextuser()), COALESCE(new.hours_budgeted, (0)::numeric), COALESCE(new.hours_actual, (0)::numeric), COALESCE(new.expenses_budgeted, (0)::numeric), COALESCE(new.expenses_actual, (0)::numeric), CASE WHEN (new.status = 'In-Process'::text) THEN 'O'::text WHEN (new.status = 'Completed'::text) THEN 'C'::text ELSE 'P'::text END, new.due, new.assigned, new.started, new.completed); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO taskcomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'TA'::text, public.getprjtaskid((new.project_number)::text, (new.task_number)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO todo DO INSTEAD SELECT public.createtodoitem(NULL::integer, new.assigned_to, COALESCE(new.task_name, ''::text), COALESCE(new.description, ''::text), public.getincidentid(new.incident), COALESCE(public.getincdtcrmacctid(new.incident), public.getcrmacctid(new.account)), public.getopheadid(new.opportunity), CASE WHEN (new.date_started > ''::text) THEN (new.date_started)::date ELSE NULL::date END, CASE WHEN (new.date_due > ''::text) THEN (new.date_due)::date ELSE NULL::date END, (CASE WHEN (new.status = 'Pending Input'::text) THEN 'P'::text WHEN (new.status = 'Deferred'::text) THEN 'D'::text ELSE 'N'::text END)::bpchar, CASE WHEN (new.date_assigned > ''::text) THEN (new.date_assigned)::date ELSE NULL::date END, CASE WHEN (new.date_completed > ''::text) THEN (new.date_completed)::date ELSE NULL::date END, public.getincdtpriorityid(new.priority), COALESCE(new.notes, ''::text), new.owner) AS createtodoitem; -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO vendor DO INSTEAD INSERT INTO public.vendinfo (vend_name, vend_lastpurchdate, vend_active, vend_po, vend_comments, vend_pocomments, vend_number, vend_1099, vend_exported, vend_fobsource, vend_fob, vend_terms_id, vend_shipvia, vend_vendtype_id, vend_qualified, vend_ediemail, vend_ediemailbody, vend_edisubject, vend_edifilename, vend_accntnum, vend_emailpodelivery, vend_restrictpurch, vend_edicc, vend_curr_id, vend_cntct1_id, vend_cntct2_id, vend_addr_id, vend_match, vend_taxzone_id, vend_ach_routingnumber, vend_ach_accntnumber, vend_accnt_id, vend_expcat_id, vend_tax_id) VALUES (COALESCE(new.vendor_name, ''::text), NULL::date, COALESCE(new.active, true), COALESCE(new.sells_purchase_order_items, false), COALESCE(new.notes, ''::text), COALESCE(new.po_comments, ''::text), COALESCE(new.vendor_number, ''::character varying), COALESCE(new.receives_1099, false), false, CASE WHEN (new.default_fob = 'Receiving Site'::text) THEN 'W'::text ELSE 'V'::text END, CASE WHEN (new.default_fob = 'Receiving Site'::text) THEN ''::text ELSE new.default_fob END, COALESCE((public.gettermsid(new.default_terms))::numeric, public.fetchmetricvalue('DefaultTerms'::text)), COALESCE(new.ship_via, public.fetchdefaultshipvia()), public.getvendtypeid(new.vendor_type), COALESCE(new.qualified, false), COALESCE(new.po_edi_email, ''::text), COALESCE(new.po_edi_emailbody, ''::text), COALESCE(new.po_edi_subject, ''::text), COALESCE(new.po_edi_filename, ''::text), COALESCE(new.account_number, ''::text), COALESCE(new.allow_email_po_delivery, false), COALESCE(new.may_only_sell_item_source, false), COALESCE(new.po_edi_cc, ''::text), COALESCE(public.getcurrid((new.default_currency)::text), public.basecurrid()), public.savecntct(public.getcntctid(new.contact1_number), new.contact1_number, NULL::integer, new.contact1_honorific, new.contact1_first, new.contact1_middle, new.contact1_last, new.contact1_suffix, new.contact1_voice, new.contact1_alternate, new.contact1_fax, new.contact1_email, new.contact1_web, new.contact1_job_title, new.contact1_change), public.savecntct(public.getcntctid(new.contact2_number), new.contact2_number, NULL::integer, new.contact2_honorific, new.contact2_first, new.contact2_middle, new.contact2_last, new.contact2_suffix, new.contact2_voice, new.contact2_alternate, new.contact2_fax, new.contact2_email, new.contact2_web, new.contact2_job_title, new.contact2_change), public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postalcode, new.country, new.address_change), COALESCE(new.matching_vo_po_amounts, false), public.gettaxzoneid(new.default_tax_zone), ''::bytea, ''::bytea, COALESCE(public.getglaccntid(new.default_dist_gl_account), (-1)), COALESCE(public.getexpcatid(new.default_dist_expense_category), (-1)), COALESCE(public.gettaxid(new.default_dist_tax_code), (-1))); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO vendoraddress DO INSTEAD INSERT INTO public.vendaddrinfo (vendaddr_vend_id, vendaddr_code, vendaddr_name, vendaddr_comments, vendaddr_cntct_id, vendaddr_addr_id) VALUES (public.getvendid((new.vendor_number)::text), COALESCE(new.vendor_address_number, ''::character varying), COALESCE(new.vendor_address_name, ''::text), COALESCE(new.notes, ''::text), public.savecntct(public.getcntctid(new.contact_number), new.contact_number, public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postalcode, new.country, new.address_change), new.contact_honorific, new.contact_first, new.contact_middle, new.contact_last, new.contact_suffix, new.contact_voice, new.contact_alternate, new.contact_fax, new.contact_email, new.contact_web, new.contact_job_title, new.contact_change), public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postalcode, new.country, new.address_change)); -- -- Name: _INSERT; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO vendortype DO INSTEAD INSERT INTO public.vendtype (vendtype_code, vendtype_descrip) VALUES (new.code, COALESCE(new.description, ''::text)); -- -- Name: _INSERT_CHAR; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_INSERT_CHAR" AS ON INSERT TO purchaseline DO INSTEAD INSERT INTO public.charass (charass_target_type, charass_target_id, charass_char_id, charass_value) SELECT 'PI', poitem.poitem_id, "char".char_id, charass.charass_value FROM public.pohead, public.poitem, public.charass, public."char", public.itemsite, public.item WHERE (((((((((pohead.pohead_number = (new.order_number)::text) AND (poitem.poitem_pohead_id = pohead.pohead_id)) AND (poitem.poitem_linenumber = new.line_number)) AND (itemsite.itemsite_id = poitem.poitem_itemsite_id)) AND (itemsite.itemsite_item_id = item.item_id)) AND (charass.charass_target_type = 'I'::text)) AND (charass.charass_target_id = item.item_id)) AND charass.charass_default) AND ("char".char_id = charass.charass_char_id)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO salesline DO INSTEAD UPDATE public.coitem SET coitem_status = new.status, coitem_scheddate = new.scheduled_date, coitem_promdate = new.promise_date, coitem_qtyord = new.qty_ordered, coitem_qty_uom_id = public.getuomid(new.qty_uom), coitem_qty_invuomratio = public.itemuomtouomratio(item.item_id, public.getuomid(new.qty_uom), item.item_inv_uom_id), coitem_price = new.net_unit_price, coitem_price_uom_id = public.getuomid(new.price_uom), coitem_price_invuomratio = public.itemuomtouomratio(item.item_id, public.getuomid(new.price_uom), item.item_price_uom_id), coitem_memo = new.notes, coitem_order_type = CASE WHEN (((NOT old.create_order) AND new.create_order) AND (item.item_type = 'M'::bpchar)) THEN 'W'::text WHEN ((((NOT old.create_order) AND new.create_order) AND (item.item_type = 'P'::bpchar)) AND itemsite.itemsite_createsopo) THEN 'P'::text WHEN (((NOT old.create_order) AND new.create_order) AND (item.item_type = 'P'::bpchar)) THEN 'R'::text ELSE NULL::text END, coitem_substitute_item_id = public.getitemid(new.substitute_for), coitem_prcost = new.overwrite_po_price, coitem_taxtype_id = CASE WHEN (new.tax_type = 'None'::text) THEN NULL::integer ELSE public.gettaxtypeid(new.tax_type) END, coitem_warranty = new.warranty, coitem_cos_accnt_id = public.getglaccntid(new.alternate_cos_account), coitem_rev_accnt_id = public.getglaccntid(new.alternate_rev_account) FROM (public.item JOIN public.itemsite ON ((item.item_id = itemsite.itemsite_item_id))) WHERE ((((item.item_number = old.item_number) AND (coitem.coitem_cohead_id = public.getcoheadid((old.order_number)::text))) AND (coitem.coitem_id = public.getcoitemid((old.order_number)::text, (old.line_number)::text))) AND (coitem.coitem_subnumber = 0)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO apmemo DO INSTEAD UPDATE public.apopen SET apopen_duedate = new.due_date, apopen_terms_id = public.gettermsid(new.terms), apopen_amount = new.amount, apopen_notes = new.notes WHERE ((apopen.apopen_docnumber = old.document_number) AND ((apopen.apopen_doctype)::text = CASE WHEN (old.document_type = 'Credit Memo'::text) THEN 'C'::text WHEN (old.document_type = 'Debit Memo'::text) THEN 'D'::text ELSE ''::text END)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO armemo DO INSTEAD UPDATE public.aropen SET aropen_duedate = new.due_date, aropen_terms_id = public.gettermsid(new.terms), aropen_salesrep_id = public.getsalesrepid(new.sales_rep), aropen_amount = new.amount, aropen_commission_due = new.commission_due, aropen_notes = new.notes, aropen_rsncode_id = public.getrsnid(new.reason_code) WHERE ((aropen.aropen_docnumber = old.document_number) AND ((aropen.aropen_doctype)::text = CASE WHEN (old.document_type = 'Credit Memo'::text) THEN 'C'::text WHEN (old.document_type = 'Debit Memo'::text) THEN 'D'::text ELSE ''::text END)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO physinvcount DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO account DO INSTEAD UPDATE public.crmacct SET crmacct_number = new.account_number, crmacct_parent_id = public.getcrmacctid(new.parent_account), crmacct_name = new.account_name, crmacct_active = new.active, crmacct_type = CASE WHEN (new.type = 'Individual'::text) THEN 'I'::text ELSE 'O'::text END, crmacct_cntct_id_1 = public.savecntct(public.getcntctid(new.primary_contact_number), new.primary_contact_number, public.saveaddr(public.getaddrid(new.primary_contact_address_number), new.primary_contact_address_number, new.primary_contact_address1, new.primary_contact_address2, new.primary_contact_address3, new.primary_contact_city, new.primary_contact_state, new.primary_contact_postalcode, new.primary_contact_country, new.primary_contact_address_change), new.primary_contact_honorific, new.primary_contact_first, new.primary_contact_middle, new.primary_contact_last, new.primary_contact_suffix, new.primary_contact_voice, NULL::text, new.primary_contact_fax, new.primary_contact_email, NULL::text, new.primary_contact_job_title, new.primary_contact_change), crmacct_cntct_id_2 = public.savecntct(public.getcntctid(new.secondary_contact_number), new.secondary_contact_number, public.saveaddr(public.getaddrid(new.secondary_contact_address_number), new.secondary_contact_address_number, new.secondary_contact_address1, new.secondary_contact_address2, new.secondary_contact_address3, new.secondary_contact_city, new.secondary_contact_state, new.secondary_contact_postalcode, new.secondary_contact_country, new.secondary_contact_address_change), new.secondary_contact_honorific, new.secondary_contact_first, new.secondary_contact_middle, new.secondary_contact_last, new.secondary_contact_suffix, new.secondary_contact_voice, NULL::text, new.secondary_contact_fax, new.secondary_contact_email, NULL::text, new.secondary_contact_job_title, new.secondary_contact_change), crmacct_notes = new.notes WHERE (crmacct.crmacct_number = (old.account_number)::text); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO accountchar DO INSTEAD UPDATE public.charass SET charass_value = new.value WHERE (((charass.charass_target_type = 'CRMACCT'::text) AND (charass.charass_target_id = public.getcrmacctid((old.account_number)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'CRMACCT'::text))); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO accountcomment DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO accountfile DO INSTEAD UPDATE public.url SET url_title = new.title, url_url = new.url WHERE ((((url.url_source_id = public.getcrmacctid(old.account_number)) AND (url.url_source = 'CRMA'::text)) AND (url.url_title = old.title)) AND (url.url_url = old.url)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO accountimage DO INSTEAD UPDATE public.imageass SET imageass_image_id = public.getimageid(new.image_name) WHERE (((imageass.imageass_source_id = public.getcrmacctid(old.account_number)) AND (imageass.imageass_source = 'CRMA'::text)) AND (imageass.imageass_image_id = public.getimageid(old.image_name))); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO address DO INSTEAD SELECT public.saveaddr(public.getaddrid((new.address_number)::text), (new.address_number)::text, new.address1, new.address2, new.address3, new.city, new.state, new.postal_code, new.country, new.active, new.notes, new.change) AS saveaddr; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO addresschar DO INSTEAD UPDATE public.charass SET charass_value = new.value WHERE (((charass.charass_target_type = 'ADDR'::text) AND (charass.charass_target_id = public.getaddrid((old.address_number)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'ADDR'::text))); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO addresscomment DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO bom DO INSTEAD SELECT public.savebomhead(public.getitemid((new.item_number)::text), (new.revision)::text, new.revision_date, new.document_number, COALESCE(new.batch_size, (0)::numeric), new.total_qty_per) AS savebomhead; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO bomitem DO INSTEAD UPDATE public.bomitem SET bomitem_issuemethod = CASE WHEN (new.issue_method = 'Mixed'::text) THEN 'M'::text WHEN (new.issue_method = 'Push'::text) THEN 'S'::text WHEN (new.issue_method = 'Pull'::text) THEN 'L'::text ELSE NULL::text END, bomitem_uom_id = public.getuomid(new.issue_uom), bomitem_qtyper = new.qty_per, bomitem_scrap = new.scrap, bomitem_effective = CASE WHEN (new.effective = 'Always'::text) THEN public.startoftime() ELSE (new.effective)::date END, bomitem_expires = CASE WHEN (new.expires = 'Never'::text) THEN public.endoftime() ELSE (new.expires)::date END, bomitem_createwo = new.create_child_wo, bomitem_booitem_seq_id = COALESCE(public.getbooitemseqid((new.bom_item_number)::text, new.used_at), (-1)), bomitem_schedatwooper = new.schedule_at_wo_operation, bomitem_ecn = new.ecn_number, bomitem_subtype = CASE WHEN (new.substitutions = 'No'::text) THEN 'N'::text WHEN (new.substitutions = 'Item-Defined'::text) THEN 'I'::text WHEN (new.substitutions = 'BOM-Defined'::text) THEN 'B'::text ELSE NULL::text END, bomitem_rev_id = public.getrevid('BOM'::text, (new.bom_item_number)::text, (new.bom_revision)::text), bomitem_char_id = public.getcharid(new.characteristic, 'I'::text), bomitem_value = new.value, bomitem_notes = new.notes, bomitem_ref = new.reference WHERE (bomitem.bomitem_id = old.id); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO bomitemcomment DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO bomitemsubstitute DO INSTEAD UPDATE public.bomitemsub SET bomitemsub_uomratio = new.sub_parent_uom_ratio, bomitemsub_rank = new.ranking WHERE ((bomitemsub.bomitemsub_bomitem_id = old.bomitem_id) AND (bomitemsub.bomitemsub_item_id = public.getitemid((old.substitute_item_number)::text))); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO budget DO INSTEAD UPDATE public.budghead SET budghead_name = new.name, budghead_descrip = new.description WHERE (budghead.budghead_name = old.name); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO budgetentry DO INSTEAD UPDATE public.budgitem SET budgitem_amount = new.amount WHERE (((budgitem.budgitem_budghead_id = public.getbudgheadid(old.name)) AND (budgitem.budgitem_period_id = public.getperiodid(old.period_start))) AND (budgitem.budgitem_accnt_id = public.getglaccntid(old.account))); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO cashreceipt DO INSTEAD UPDATE public.cashrcpt SET cashrcpt_amount = new.amount_received, cashrcpt_fundstype = CASE WHEN ((new.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((new.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((new.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((new.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((new.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((new.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((new.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((new.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((new.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, cashrcpt_docnumber = new.check_document_number, cashrcpt_bankaccnt_id = public.getbankaccntid(new.post_to), cashrcpt_notes = new.notes, cashrcpt_distdate = CASE WHEN (new.distribution_date > ''::text) THEN (new.distribution_date)::date ELSE NULL::date END, cashrcpt_salescat_id = public.getsalescatid(new.sales_category), cashrcpt_curr_id = public.getcurrid((new.currency)::text), cashrcpt_usecustdeposit = CASE WHEN (new.apply_balance_as = 'Customer Deposit'::text) THEN true ELSE false END WHERE (cashrcpt.cashrcpt_id = public.getcashrcptid((old.customer_number)::text, CASE WHEN ((old.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((old.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((old.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((old.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((old.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((old.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((old.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((old.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((old.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, (old.check_document_number)::text)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO cashreceiptapply DO INSTEAD UPDATE public.cashrcptitem SET cashrcptitem_amount = new.amount_to_apply, cashrcptitem_discount = new.cashrcptitem_discount WHERE ((cashrcptitem.cashrcptitem_cashrcpt_id = public.getcashrcptid((old.customer_number)::text, CASE WHEN ((old.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((old.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((old.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((old.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((old.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((old.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((old.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((old.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((old.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, (old.check_document_number)::text)) AND (cashrcptitem.cashrcptitem_aropen_id = public.getaropenid((old.customer_number)::text, (old.doc_type)::bpchar, (old.doc_number)::text))); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO cashreceiptapplymisc DO INSTEAD UPDATE public.cashrcptmisc SET cashrcptmisc_accnt_id = public.getglaccntid((new.account)::text), cashrcptmisc_amount = new.amount_to_distribute, cashrcptmisc_notes = new.notes WHERE ((cashrcptmisc.cashrcptmisc_cashrcpt_id = public.getcashrcptid((old.customer_number)::text, CASE WHEN ((old.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((old.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((old.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((old.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((old.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((old.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((old.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((old.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((old.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, (old.check_document_number)::text)) AND (cashrcptmisc.cashrcptmisc_accnt_id = public.getglaccntid((old.account)::text))); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO contact DO INSTEAD SELECT public.savecntct(public.getcntctid((new.contact_number)::text), (new.contact_number)::text, public.getcrmacctid(new.crm_account), public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postal_code, new.country, new.address_change), new.honorific, new.first, new.middle, new.last, new.suffix, new.initials, new.active, new.voice, new.alternate, new.fax, new.email, new.web, new.notes, new.job_title, new.contact_change) AS savecntct; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO contactchar DO INSTEAD UPDATE public.charass SET charass_value = new.value WHERE (((charass.charass_target_type = 'CNTCT'::text) AND (charass.charass_target_id = public.getcntctid(old.contact_number))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'CNTCT'::text))); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO contactcomment DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO creditmemo DO INSTEAD UPDATE public.cmhead SET cmhead_custponumber = new.customer_po_number, cmhead_docdate = new.memo_date, cmhead_shipto_id = COALESCE(public.getshiptoid(new.customer_number, new.shipto_number), (-1)), cmhead_shipto_name = new.shipto_name, cmhead_shipto_address1 = new.shipto_address1, cmhead_shipto_address2 = new.shipto_address2, cmhead_shipto_address3 = new.shipto_address3, cmhead_shipto_city = new.shipto_city, cmhead_shipto_state = new.shipto_state, cmhead_shipto_zipcode = new.shipto_postal_code, cmhead_shipto_country = new.shipto_country, cmhead_salesrep_id = public.getsalesrepid(new.sales_rep), cmhead_freight = COALESCE(new.freight, (0)::numeric), cmhead_misc = COALESCE(new.misc_charge_amount, (0)::numeric), cmhead_comments = new.notes, cmhead_billtoname = new.billto_name, cmhead_billtoaddress1 = new.billto_address1, cmhead_billtoaddress2 = new.billto_address2, cmhead_billtoaddress3 = new.billto_address3, cmhead_billtocity = new.billto_city, cmhead_billtostate = new.billto_state, cmhead_billtozip = new.billto_postal_code, cmhead_billtocountry = new.billto_country, cmhead_hold = COALESCE(new.on_hold, false), cmhead_commission = COALESCE(new.commission, (0)::numeric), cmhead_misc_accnt_id = COALESCE(public.getglaccntid(new.misc_charge_credit_account), (-1)), cmhead_misc_descrip = new.misc_charge_description, cmhead_rsncode_id = (SELECT rsncode.rsncode_id FROM public.rsncode WHERE (rsncode.rsncode_code = new.reason_code)), cmhead_curr_id = COALESCE(public.getcurrid((new.currency)::text), (-1)), cmhead_taxzone_id = public.gettaxzoneid(NULLIF(new.tax_zone, 'None'::text)) WHERE ((cmhead.cmhead_number = old.memo_number) AND (cmhead.cmhead_posted = false)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO creditmemoline DO INSTEAD SELECT public.updatecreditmemoline(new.*, old.*) AS updatecreditmemoline; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO custchar DO INSTEAD UPDATE public.charass SET charass_value = new.value WHERE (((charass.charass_target_type = 'C'::text) AND (charass.charass_target_id = public.getcustid((old.customer_number)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'C'::text))); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO custcomment DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO custcreditcard DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO customer DO INSTEAD UPDATE public.custinfo SET cust_active = new.active, cust_custtype_id = public.getcusttypeid(new.customer_type), cust_salesrep_id = public.getsalesrepid(new.sales_rep), cust_commprcnt = (new.commission * 0.01), cust_name = new.customer_name, cust_creditlmt = new.credit_limit, cust_creditrating = new.credit_rating, cust_backorder = new.accepts_backorders, cust_partialship = new.accepts_partial_shipments, cust_terms_id = public.gettermsid(new.default_terms), cust_discntprcnt = new.default_discount, cust_balmethod = CASE WHEN (new.balance_method = 'Balance Forward'::text) THEN 'B'::text WHEN (new.balance_method = 'Open Items'::text) THEN 'O'::text ELSE NULL::text END, cust_ffshipto = new.allow_free_form_shipto, cust_shipform_id = public.getshipformid(new.ship_form), cust_shipvia = new.ship_via, cust_blanketpos = new.uses_blanket_pos, cust_shipchrg_id = COALESCE(public.getshipchrgid(new.shipping_charges), (-1)), cust_creditstatus = CASE WHEN (new.credit_status = 'On Credit Warning'::text) THEN 'W'::text WHEN (new.credit_status = 'On Credit Hold'::text) THEN 'H'::text ELSE 'G'::text END, cust_comments = new.notes, cust_ffbillto = new.allow_free_form_billto, cust_usespos = new.uses_purchase_orders, cust_number = new.customer_number, cust_autoupdatestatus = new.credit_status_exceed_warn, cust_autoholdorders = new.credit_status_exceed_hold, cust_preferred_warehous_id = COALESCE(public.getwarehousid(new.preferred_selling_site, 'ACTIVE'::text), (-1)), cust_curr_id = public.getcurrid((new.default_currency)::text), cust_creditlmt_curr_id = public.getcurrid((new.credit_limit_currency)::text), cust_cntct_id = public.savecntct(public.getcntctid(new.billing_contact_number, false), new.billing_contact_number, public.saveaddr(public.getaddrid(new.billing_contact_address_number), new.billing_contact_address_number, new.billing_contact_address1, new.billing_contact_address2, new.billing_contact_address3, new.billing_contact_city, new.billing_contact_state, new.billing_contact_postalcode, new.billing_contact_country, new.billing_contact_address_change), new.billing_contact_honorific, new.billing_contact_first, new.billing_contact_middle, new.billing_contact_last, new.billing_contact_suffix, new.billing_contact_voice, new.billing_contact_alternate, new.billing_contact_fax, new.billing_contact_email, new.billing_contact_web, new.billing_contact_job_title, new.billing_contact_change), cust_corrcntct_id = public.savecntct(public.getcntctid(new.correspond_contact_number, false), new.correspond_contact_number, public.saveaddr(public.getaddrid(new.correspond_contact_address_number), new.correspond_contact_address_number, new.correspond_contact_address1, new.correspond_contact_address2, new.correspond_contact_address3, new.correspond_contact_city, new.correspond_contact_state, new.correspond_contact_postalcode, new.correspond_contact_country, new.correspond_contact_address_change), new.correspond_contact_honorific, new.correspond_contact_first, new.correspond_contact_middle, new.correspond_contact_last, new.correspond_contact_suffix, new.correspond_contact_voice, new.correspond_contact_alternate, new.correspond_contact_fax, new.correspond_contact_email, new.correspond_contact_web, new.correspond_contact_job_title, new.correspond_contact_change), cust_taxzone_id = public.gettaxzoneid(new.default_tax_zone), cust_gracedays = CASE WHEN (COALESCE(new.alternate_grace_days, 0) > 0) THEN new.alternate_grace_days ELSE NULL::integer END WHERE (custinfo.cust_id = public.getcustid((old.customer_number)::text)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO customertype DO INSTEAD UPDATE public.custtype SET custtype_code = new.code, custtype_descrip = new.description, custtype_char = new.enable_characteristics_profile WHERE (custtype.custtype_code = (old.code)::text); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO customertypechar DO INSTEAD UPDATE public.charass SET charass_value = new.value, charass_default = new.is_default WHERE (((charass.charass_target_type = 'CT'::text) AND (charass.charass_target_id = public.getcusttypeid((old.customer_type)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'CT'::text))); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO custshipto DO INSTEAD UPDATE public.shiptoinfo SET shipto_cust_id = public.getcustid((new.customer_number)::text), shipto_name = new.name, shipto_salesrep_id = public.getsalesrepid(new.sales_rep), shipto_comments = new.general_notes, shipto_shipcomments = new.shipping_notes, shipto_shipzone_id = public.getshipzoneid(new.zone), shipto_shipvia = new.ship_via, shipto_commission = (new.commission / (100)::numeric), shipto_shipform_id = public.getshipformid(new.ship_form), shipto_shipchrg_id = public.getshipchrgid(new.shipping_charges), shipto_active = new.active, shipto_default = new.default_flag, shipto_num = old.shipto_number, shipto_ediprofile_id = CASE WHEN (new.edi_profile = 'No EDI'::text) THEN (-1) WHEN (new.edi_profile = 'Use Customer Master'::text) THEN (-2) ELSE public.getediprofileid(new.edi_profile) END, shipto_cntct_id = public.savecntct(public.getcntctid(new.contact_number), new.contact_number, NULL::integer, new.honorific, new.first, new.middle, new.last, new.suffix, new.phone, NULL::text, new.fax, new.email, NULL::text, new.job_title, new.contact_change), shipto_addr_id = public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postal_code, new.country, new.address_change), shipto_taxzone_id = public.gettaxzoneid(new.tax_zone) WHERE (shiptoinfo.shipto_id = public.getshiptoid((old.customer_number)::text, (old.shipto_number)::text)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO custtax DO INSTEAD UPDATE public.taxreg SET taxreg_number = new.registration_number WHERE (((taxreg.taxreg_rel_type = 'C'::bpchar) AND (taxreg.taxreg_rel_id = public.getcustid((old.customer_number)::text))) AND (taxreg.taxreg_taxauth_id = public.gettaxauthid((old.tax_authority)::text))); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO employee DO INSTEAD UPDATE public.emp SET emp_code = new.code, emp_number = new.number, emp_active = new.active, emp_startdate = new.start_date, emp_cntct_id = public.savecntct(public.getcntctid(new.contact_number), new.contact_number, public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postalcode, new.country, new.address_change), new.honorific, new.first, new.middle, new.last, new.suffix, new.voice, new.alternate, new.fax, new.email, new.web, new.job_title, new.contact_change), emp_warehous_id = public.getwarehousid(new.site, 'ALL'::text), emp_mgr_emp_id = (SELECT emp.emp_id FROM public.emp WHERE (emp.emp_code = new.manager_code)), emp_wage_type = CASE WHEN (new.wage_type = 'Hourly'::text) THEN 'H'::text WHEN (new.wage_type = 'Salaried'::text) THEN 'S'::text ELSE NULL::text END, emp_wage = new.wage, emp_wage_curr_id = COALESCE(public.getcurrid((new.wage_currency)::text), public.basecurrid()), emp_wage_period = CASE WHEN (new.wage_period = 'Hour'::text) THEN 'H'::text WHEN (new.wage_period = 'Day'::text) THEN 'D'::text WHEN (new.wage_period = 'Week'::text) THEN 'W'::text WHEN (new.wage_period = 'Biweek'::text) THEN 'BW'::text WHEN (new.wage_period = 'Month'::text) THEN 'M'::text WHEN (new.wage_period = 'Year'::text) THEN 'Y'::text ELSE NULL::text END, emp_dept_id = public.getdeptid(new.department), emp_shift_id = public.getshiftid(new.shift), emp_image_id = public.getimageid(new.image), emp_extrate = new.rate, emp_extrate_period = CASE WHEN (new.billing_period = 'Hour'::text) THEN 'H'::text WHEN (new.billing_period = 'Day'::text) THEN 'D'::text WHEN (new.billing_period = 'Week'::text) THEN 'W'::text WHEN (new.billing_period = 'Biweek'::text) THEN 'BW'::text WHEN (new.billing_period = 'Month'::text) THEN 'M'::text WHEN (new.billing_period = 'Year'::text) THEN 'Y'::text ELSE NULL::text END, emp_notes = COALESCE(new.notes, ''::text) WHERE (emp.emp_code = (old.code)::text); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO employeechar DO INSTEAD UPDATE public.charass SET charass_value = new.value WHERE (((charass.charass_target_type = 'EMP'::text) AND (charass.charass_target_id = public.getempid((old.employee_code)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'EMP'::text))); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO employeecomment DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO extshipmaint DO INSTEAD UPDATE public.shipdata SET shipdata_cohead_number = new.so_number, shipdata_shiphead_number = new.shipment_number, shipdata_void_ind = new.void, shipdata_shipper = new.shipper, shipdata_billing_option = new.billing_option, shipdata_weight = new.weight, shipdata_base_freight = new.base_freight, shipdata_base_freight_curr_id = public.getcurrid((new.base_freight_currency)::text), shipdata_total_freight = new.total_freight, shipdata_total_freight_curr_id = public.getcurrid((new.total_freight_currency)::text), shipdata_package_type = new.package_type, shipdata_cosmisc_tracknum = new.tracking_number, shipdata_cosmisc_packnum_tracknum = new.package_tracking_number, shipdata_lastupdated = new.last_updated WHERE ((((shipdata.shipdata_cohead_number = (old.so_number)::text) AND (shipdata.shipdata_shiphead_number = (old.shipment_number)::text)) AND (shipdata.shipdata_shipper = (old.shipper)::text)) AND (shipdata.shipdata_cosmisc_packnum_tracknum = (old.package_tracking_number)::text)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO freightpricingscheduleitem DO INSTEAD UPDATE public.ipsfreight SET ipsfreight_ipshead_id = public.getipsheadid((old.pricing_schedule)::text), ipsfreight_qtybreak = new.qty_break, ipsfreight_price = new.price, ipsfreight_type = CASE WHEN (new.price_type = 'Flat Rate'::text) THEN 'F'::text WHEN (new.price_type = 'Price Per UOM'::text) THEN 'P'::text ELSE NULL::text END, ipsfreight_warehous_id = CASE WHEN (new.from_site = 'Any'::text) THEN NULL::integer ELSE public.getwarehousid(new.from_site, 'All'::text) END, ipsfreight_shipzone_id = CASE WHEN (new.to_shipzone = 'Any'::text) THEN NULL::integer ELSE public.getshipzoneid(new.to_shipzone) END, ipsfreight_freightclass_id = CASE WHEN (new.freight_class = 'Any'::text) THEN NULL::integer ELSE public.getfreightclassid(new.freight_class) END, ipsfreight_shipvia = CASE WHEN (new.ship_via = 'Any'::text) THEN NULL::text ELSE new.ship_via END WHERE (((((((((ipsfreight.ipsfreight_ipshead_id = public.getipsheadid((old.pricing_schedule)::text)) AND (ipsfreight.ipsfreight_qtybreak = old.qty_break)) AND (ipsfreight.ipsfreight_price = old.price)) AND ((ipsfreight.ipsfreight_type)::text = CASE WHEN (old.price_type = 'Flat Rate'::text) THEN 'F'::text WHEN (old.price_type = 'Price Per UOM'::text) THEN 'P'::text ELSE NULL::text END)) AND ((ipsfreight.ipsfreight_warehous_id IS NULL) AND (old.from_site = 'Any'::text))) OR ((ipsfreight.ipsfreight_warehous_id = CASE WHEN (old.from_site = 'Any'::text) THEN 0 ELSE public.getwarehousid(old.from_site, 'All'::text) END) AND ((ipsfreight.ipsfreight_shipzone_id IS NULL) AND (old.to_shipzone = 'Any'::text)))) OR ((ipsfreight.ipsfreight_shipzone_id = CASE WHEN (old.to_shipzone = 'Any'::text) THEN 0 ELSE public.getshipzoneid(old.to_shipzone) END) AND ((ipsfreight.ipsfreight_freightclass_id IS NULL) AND (old.freight_class = 'Any'::text)))) OR ((ipsfreight.ipsfreight_freightclass_id = CASE WHEN (old.freight_class = 'Any'::text) THEN 0 ELSE public.getfreightclassid(old.freight_class) END) AND ((ipsfreight.ipsfreight_shipvia IS NULL) AND (old.ship_via = 'Any'::text)))) OR (ipsfreight.ipsfreight_shipvia = old.ship_via)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO glaccount DO INSTEAD UPDATE public.accnt SET accnt_number = new.account_number, accnt_descrip = new.description, accnt_comments = new.notes, accnt_profit = new.profit_center, accnt_sub = new.sub_account, accnt_type = CASE WHEN (new.type = 'Asset'::text) THEN 'A'::text WHEN (new.type = 'Liability'::text) THEN 'L'::text WHEN (new.type = 'Expense'::text) THEN 'E'::text WHEN (new.type = 'Revenue'::text) THEN 'R'::text WHEN (new.type = 'Equity'::text) THEN 'Q'::text ELSE NULL::text END, accnt_extref = new.ext_reference, accnt_company = new.company, accnt_forwardupdate = new.forward_update_trial_balances, accnt_subaccnttype_code = new.sub_type WHERE (accnt.accnt_id = public.getglaccntid((old.company)::text, (old.profit_center)::text, (old.account_number)::text, (old.sub_account)::text)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO incident DO INSTEAD UPDATE public.incdt SET incdt_crmacct_id = public.getcrmacctid(new.crm_account), incdt_cntct_id = public.savecntct(public.getcntctid(new.contact_number), new.contact_number, NULL::integer, new.honorific, new.first, new.middle, new.last, new.suffix, new.phone, NULL::text, new.fax, new.email, NULL::text, new.job_title, new.contact_change), incdt_descrip = new.notes, incdt_summary = new.description, incdt_item_id = public.getitemid(new.item_number), incdt_status = CASE WHEN (new.status = 'New'::text) THEN 'N'::text WHEN (new.status = 'Feedback'::text) THEN 'F'::text WHEN (new.status = 'Confirmed'::text) THEN 'C'::text WHEN (new.status = 'Assigned'::text) THEN 'A'::text WHEN (new.status = 'Resolved'::text) THEN 'R'::text WHEN (new.status = 'Closed'::text) THEN 'L'::text ELSE NULL::text END, incdt_assigned_username = new.assigned_to, incdt_incdtcat_id = public.getincdtcatid(new.category), incdt_incdtseverity_id = public.getincdtseverityid(new.severity), incdt_incdtpriority_id = public.getincdtpriorityid(new.priority), incdt_incdtresolution_id = public.getincdtresolutionid(new.resolution), incdt_lotserial = new.lot_serial_number, incdt_ls_id = public.getlotserialid(new.item_number, new.lot_serial_number) WHERE (incdt.incdt_id = public.getincidentid(old.incident_number)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO incidentchar DO INSTEAD UPDATE public.charass SET charass_value = new.value WHERE (((charass.charass_target_type = 'INCDT'::text) AND (charass.charass_target_id = public.getincidentid(old.incident_number))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'INCDT'::text))); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO incidentcomment DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO incidentfile DO INSTEAD UPDATE public.url SET url_title = new.title, url_url = new.url WHERE ((((url.url_source_id = public.getincidentid(old.incident_number)) AND (url.url_source = 'INCDT'::text)) AND (url.url_title = old.title)) AND (url.url_url = old.url)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO incidentimage DO INSTEAD UPDATE public.imageass SET imageass_image_id = public.getimageid(new.image_name) WHERE (((imageass.imageass_source_id = public.getincidentid(old.incident_number)) AND (imageass.imageass_source = 'INCDT'::text)) AND (imageass.imageass_image_id = public.getimageid(old.image_name))); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO invoice DO INSTEAD UPDATE public.invchead SET invchead_invcnumber = old.invoice_number, invchead_ordernumber = new.order_number, invchead_invcdate = new.invoice_date, invchead_shipdate = new.ship_date, invchead_orderdate = new.order_date, invchead_salesrep_id = public.getsalesrepid(new.sales_rep), invchead_commission = new.commission, invchead_taxzone_id = public.gettaxzoneid(NULLIF(new.tax_zone, 'None'::text)), invchead_terms_id = public.gettermsid(new.terms), invchead_cust_id = (SELECT public.getcustid(new.customer_number) AS getcustid), invchead_billto_name = new.billto_name, invchead_billto_address1 = new.billto_address1, invchead_billto_address2 = new.billto_address2, invchead_billto_address3 = new.billto_address3, invchead_billto_city = new.billto_city, invchead_billto_state = new.billto_state, invchead_billto_zipcode = new.billto_postal_code, invchead_billto_country = new.billto_country, invchead_billto_phone = new.billto_phone, invchead_shipto_id = COALESCE(public.getshiptoid(new.customer_number, new.shipto_number), (-1)), invchead_shipto_name = new.shipto_name, invchead_shipto_address1 = new.shipto_address1, invchead_shipto_address2 = new.shipto_address2, invchead_shipto_address3 = new.shipto_address3, invchead_shipto_city = new.shipto_city, invchead_shipto_state = new.shipto_state, invchead_shipto_zipcode = new.shipto_postal_code, invchead_shipto_country = new.shipto_country, invchead_shipto_phone = new.shipto_phone, invchead_ponumber = new.po_number, invchead_shipvia = new.ship_via, invchead_prj_id = COALESCE(public.getprjid(new.project_number), (-1)), invchead_fob = new.fob, invchead_misc_descrip = new.misc_charge_description, invchead_misc_amount = new.misc_charge, invchead_misc_accnt_id = COALESCE(public.getglaccntid(new.misc_charge_account_number), (-1)), invchead_freight = new.freight, invchead_curr_id = COALESCE(public.getcurrid((new.currency)::text), (-1)), invchead_payment = new.payment, invchead_notes = new.notes, invchead_saletype_id = public.getsaletypeid(new.sale_type), invchead_shipzone_id = public.getshipzoneid(new.shipto_shipzone) WHERE ((invchead.invchead_invcnumber = old.invoice_number) AND (invchead.invchead_posted = false)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO invoiceline DO INSTEAD SELECT public.updateinvoicelineitem(new.*, old.*) AS updateinvoicelineitem; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO item DO INSTEAD UPDATE public.item SET item_active = new.active, item_descrip1 = new.description1, item_descrip2 = new.description2, item_type = CASE WHEN (new.item_type = 'Purchased'::text) THEN 'P'::text WHEN (new.item_type = 'Manufactured'::text) THEN 'M'::text WHEN (new.item_type = 'Job'::text) THEN 'J'::text WHEN (new.item_type = 'Kit'::text) THEN 'K'::text WHEN (new.item_type = 'Phantom'::text) THEN 'F'::text WHEN (new.item_type = 'Reference'::text) THEN 'R'::text WHEN (new.item_type = 'Costing'::text) THEN 'S'::text WHEN (new.item_type = 'Tooling'::text) THEN 'T'::text WHEN (new.item_type = 'Outside Process'::text) THEN 'O'::text WHEN (new.item_type = 'Planning'::text) THEN 'L'::text WHEN (new.item_type = 'Breeder'::text) THEN 'B'::text WHEN (new.item_type = 'Co-Product'::text) THEN 'C'::text WHEN (new.item_type = 'By-Product'::text) THEN 'Y'::text ELSE NULL::text END, item_maxcost = new.maximum_desired_cost, item_classcode_id = public.getclasscodeid(new.class_code), item_inv_uom_id = public.getuomid(new.inventory_uom), item_picklist = new.pick_list_item, item_fractional = new.fractional, item_config = new.configured, item_sold = new.item_is_sold, item_prodcat_id = COALESCE(public.getprodcatid(new.product_category), (-1)), item_exclusive = new.exclusive, item_listprice = new.list_price, item_listcost = new.list_cost, item_price_uom_id = public.getuomid(new.list_price_uom), item_upccode = new.upc_code, item_prodweight = new.product_weight, item_packweight = new.packaging_weight, item_comments = new.notes, item_extdescrip = new.ext_description WHERE (item.item_id = public.getitemid((old.item_number)::text)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO itemalias DO INSTEAD UPDATE public.itemalias SET itemalias_number = new.alias_number, itemalias_usedescrip = new.use_description, itemalias_descrip1 = new.description1, itemalias_descrip2 = new.description2, itemalias_comments = new.comments WHERE ((itemalias.itemalias_item_id = public.getitemid((old.item_number)::text)) AND (itemalias.itemalias_number = old.alias_number)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO itemchar DO INSTEAD UPDATE public.charass SET charass_value = new.value, charass_default = new.is_default WHERE (((charass.charass_target_type = 'I'::text) AND (charass.charass_target_id = public.getitemid((old.item_number)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'I'::text))); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO itemcomment DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO itemcost DO INSTEAD SELECT public.updateitemcost(public.getitemid((new.item_number)::text), public.getcostelemid((new.costing_element)::text), public.getcurrid((new.currency)::text), new.actual_cost, new.post_to_standard) AS updateitemcost; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO itemfile DO INSTEAD UPDATE public.url SET url_title = new.title, url_url = new.url WHERE ((((url.url_source_id = public.getitemid((old.item_number)::text)) AND (url.url_source = 'I'::text)) AND (url.url_title = old.title)) AND (url.url_url = old.url)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO itemimage DO INSTEAD SELECT public.saveimageass('I'::text, public.getitemid((new.item_number)::text), (CASE WHEN (new.purpose = 'Product Description'::text) THEN 'P'::text WHEN (new.purpose = 'Inventory Description'::text) THEN 'I'::text WHEN (new.purpose = 'Engineering Reference'::text) THEN 'E'::text WHEN (new.purpose = 'Miscellaneous'::text) THEN 'M'::text ELSE 'X'::text END)::bpchar, public.getimageid(new.image_name)) AS saveimageass; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO itemsite DO INSTEAD UPDATE public.itemsite SET itemsite_active = new.active, itemsite_dropship = new.dropship, itemsite_posupply = new.po_supplied_at_site, itemsite_createpr = new.create_prs, itemsite_wosupply = new.wo_supplied_at_site, itemsite_createwo = new.create_wos, itemsite_createsopr = new.create_soprs, itemsite_createsopo = new.create_sopos, itemsite_sold = new.sold_from_site, itemsite_soldranking = new.ranking, itemsite_costmethod = CASE WHEN (new.cost_method = 'None'::text) THEN 'N'::text WHEN (new.cost_method = 'Average'::text) THEN 'A'::text WHEN (new.cost_method = 'Standard'::text) THEN 'S'::text WHEN (new.cost_method = 'Job'::text) THEN 'J'::text ELSE NULL::text END, itemsite_controlmethod = CASE WHEN (new.control_method = 'None'::text) THEN 'N'::text WHEN (new.control_method = 'Regular'::text) THEN 'R'::text WHEN (new.control_method = 'Serial #'::text) THEN 'S'::text WHEN (new.control_method = 'Lot #'::text) THEN 'L'::text ELSE NULL::text END, itemsite_perishable = new.perishable, itemsite_plancode_id = public.getplancodeid(new.planner_code), itemsite_costcat_id = public.getcostcatid(new.cost_category), itemsite_loccntrl = new.multiple_location_control, itemsite_location_id = CASE WHEN (new.location = 'N/A'::text) THEN (-1) ELSE public.getlocationid((new.site)::text, new.location) END, itemsite_location = new.user_defined_location, itemsite_location_comments = new.user_defined_location, itemsite_disallowblankwip = new.disallow_blank_wip_locations, itemsite_stocked = new.stocked, itemsite_abcclass = new.abc_class, itemsite_autoabcclass = new.allow_automatic_updates, itemsite_cyclecountfreq = new.cycl_cnt_freq, itemsite_eventfence = new.event_fence, itemsite_useparams = new.enforce_order_parameters, itemsite_reorderlevel = new.reorder_level, itemsite_ordertoqty = new.order_up_to, itemsite_minordqty = new.minimum_order, itemsite_maxordqty = new.maximum_order, itemsite_multordqty = new.order_multiple, itemsite_useparamsmanual = new.enforce_on_manual_orders, itemsite_ordergroup = new.group_mps_mrp_orders, itemsite_ordergroup_first = new.first_group, itemsite_mps_timefence = new.mps_time_fence, itemsite_leadtime = new.lead_time, itemsite_safetystock = new.safety_stock, itemsite_supply_itemsite_id = CASE WHEN (new.supplied_from_site = 'None'::text) THEN NULL::integer WHEN (new.supplied_from_site = ''::text) THEN NULL::integer ELSE public.getitemsiteid(new.supplied_from_site, (new.item_number)::text) END, itemsite_notes = new.notes, itemsite_warrpurc = new.require_warranty, itemsite_autoreg = new.auto_register, itemsite_planning_type = CASE WHEN (new.planning_system = 'None'::text) THEN 'N'::text WHEN (new.planning_system = 'MPS'::text) THEN 'S'::text ELSE 'M'::text END WHERE (itemsite.itemsite_id = public.getitemsiteid((old.site)::text, (old.item_number)::text)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO itemsitecomment DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO itemsource DO INSTEAD UPDATE public.itemsrc SET itemsrc_vend_item_number = new.vendor_item_number, itemsrc_vend_item_descrip = new.vendor_description, itemsrc_comments = new.notes, itemsrc_vend_uom = new.vendor_uom, itemsrc_invvendoruomratio = new.inventory_vendor_uom_ratio, itemsrc_minordqty = new.minimum_order, itemsrc_multordqty = new.order_multiple, itemsrc_leadtime = new.lead_time, itemsrc_ranking = new.vendor_ranking, itemsrc_active = new.active, itemsrc_default = new.itemsrc_default, itemsrc_manuf_name = new.manufacturer_name, itemsrc_manuf_item_number = new.manufacturer_item_number, itemsrc_manuf_item_descrip = new.manufacturer_description, itemsrc_upccode = new.bar_code, itemsrc_contrct_id = public.getcontrctid(new.contract_number), itemsrc_effective = COALESCE(public.getcontrcteffective(new.contract_number), new.effective_date), itemsrc_expires = COALESCE(public.getcontrctexpires(new.contract_number), new.expires_date) WHERE (((((itemsrc.itemsrc_item_id = public.getitemid((old.item_number)::text)) AND (itemsrc.itemsrc_vend_id = public.getvendid((old.vendor)::text))) AND (itemsrc.itemsrc_vend_item_number = old.vendor_item_number)) AND (itemsrc.itemsrc_manuf_name = old.manufacturer_name)) AND (itemsrc.itemsrc_manuf_item_number = old.manufacturer_item_number)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO itemsourceprice DO INSTEAD UPDATE public.itemsrcp SET itemsrcp_qtybreak = new.qty_break, itemsrcp_price = new.price_per_unit, itemsrcp_updated = now(), itemsrcp_curr_id = public.getcurrid((new.currency)::text), itemsrcp_dropship = COALESCE(new.dropship_only, false), itemsrcp_warehous_id = CASE WHEN (new.pricing_site = 'All'::text) THEN (-1) ELSE COALESCE(public.getwarehousid(new.pricing_site, 'ALL'::text), (-1)) END, itemsrcp_type = CASE WHEN (new.pricing_type = 'Discount'::text) THEN 'D'::text ELSE 'N'::text END, itemsrcp_discntprcnt = (COALESCE(new.discount_percent, 0.0) / 100.0), itemsrcp_fixedamtdiscount = new.discount_fixed_amount WHERE ((itemsrcp.itemsrcp_itemsrc_id = public.getitemsrcid((old.item_number)::text, (new.vendor)::text)) AND (itemsrcp.itemsrcp_qtybreak = old.qty_break)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO itemsubstitute DO INSTEAD UPDATE public.itemsub SET itemsub_uomratio = new.sub_parent_uom_ratio, itemsub_rank = new.ranking WHERE ((itemsub.itemsub_parent_item_id = public.getitemid((old.root_item_number)::text)) AND (itemsub.itemsub_sub_item_id = public.getitemid((old.substitute_item_number)::text))); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO itemtaxtype DO INSTEAD UPDATE public.itemtax SET itemtax_taxzone_id = CASE WHEN ((new.tax_zone)::text = 'Any'::text) THEN NULL::integer ELSE public.gettaxzoneid((new.tax_zone)::text) END, itemtax_taxtype_id = public.gettaxtypeid(new.tax_type) WHERE (((itemtax.itemtax_item_id = public.getitemid((old.item_number)::text)) AND CASE WHEN ((old.tax_zone)::text = 'Any'::text) THEN (itemtax.itemtax_taxzone_id IS NULL) ELSE (itemtax.itemtax_taxzone_id = public.gettaxzoneid((old.tax_zone)::text)) END) AND (itemtax.itemtax_taxtype_id = public.gettaxtypeid(old.tax_type))); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO itemuomconversion DO INSTEAD SELECT public.saveitemuomconv(public.getitemid((new.item_number)::text), COALESCE(public.getuomid((new.uom)::text), (SELECT item.item_inv_uom_id FROM public.item WHERE (item.item_id = public.getitemid((new.item_number)::text)))), COALESCE(new.uom_value, (1)::numeric), COALESCE(public.getuomid(new.per_uom), (SELECT item.item_inv_uom_id FROM public.item WHERE (item.item_id = public.getitemid((new.item_number)::text)))), COALESCE(new.per_uom_value, (1)::numeric), COALESCE(new.fractional, false), public.getuomtypeid(new.selected_types)) AS saveitemuomconv; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO journalentry DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO location DO INSTEAD UPDATE public.location SET location_name = new.location, location_descrip = new.description, location_restrict = new.restricted, location_netable = new.netable, location_whsezone_id = public.getwhsezoneid((new.site)::text, new.zone), location_aisle = new.aisle, location_rack = new.rack, location_bin = new.bin WHERE ((location.location_warehous_id = public.getwarehousid((old.site)::text, 'ACTIVE'::text)) AND (location.location_name = (old.location)::text)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO misccounttag DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO pricingschedule DO INSTEAD UPDATE public.ipshead SET ipshead_descrip = new.description, ipshead_effective = CASE WHEN (new.effective = 'Always'::text) THEN '1970-01-01'::date ELSE (new.effective)::date END, ipshead_expires = CASE WHEN (new.expires = 'Never'::text) THEN '2100-01-01'::date ELSE (new.expires)::date END, ipshead_updated = now(), ipshead_curr_id = CASE WHEN (SELECT (count(ipsiteminfo.ipsitem_id) = 0) FROM public.ipsiteminfo WHERE (ipsiteminfo.ipsitem_ipshead_id = public.getipsheadid((old.name)::text))) THEN COALESCE(public.getcurrid((new.currency)::text), public.basecurrid()) ELSE public.getcurrid((old.currency)::text) END WHERE (ipshead.ipshead_name = (old.name)::text); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO pricingscheduleassign DO INSTEAD UPDATE public.ipsass SET ipsass_ipshead_id = public.getipsheadid((new.pricing_schedule)::text), ipsass_cust_id = CASE WHEN ((new.customer_number)::text = 'Any'::text) THEN (-1) ELSE public.getcustid((new.customer_number)::text) END, ipsass_custtype_id = CASE WHEN ((new.customer_type)::text = 'N/A'::text) THEN (-1) ELSE public.getcusttypeid((new.customer_type)::text) END, ipsass_custtype_pattern = new.customer_type_pattern, ipsass_shipto_id = CASE WHEN (((new.customer_number)::text = 'Any'::text) OR ((new.customer_shipto)::text = 'Any'::text)) THEN (-1) ELSE public.getshiptoid((new.customer_number)::text, (new.customer_shipto)::text) END, ipsass_shipto_pattern = new.customer_shipto_pattern WHERE ((((((ipsass.ipsass_ipshead_id = public.getipsheadid((old.pricing_schedule)::text)) AND (ipsass.ipsass_cust_id = CASE WHEN ((old.customer_number)::text = 'Any'::text) THEN (-1) ELSE public.getcustid((old.customer_number)::text) END)) AND (ipsass.ipsass_custtype_id = CASE WHEN ((old.customer_type)::text = 'N/A'::text) THEN (-1) ELSE public.getcusttypeid((old.customer_type)::text) END)) AND (ipsass.ipsass_custtype_pattern = (old.customer_type_pattern)::text)) AND (ipsass.ipsass_shipto_id = CASE WHEN ((old.customer_shipto)::text = 'Any'::text) THEN (-1) ELSE public.getshiptoid((old.customer_number)::text, (old.customer_shipto)::text) END)) AND (ipsass.ipsass_shipto_pattern = (old.customer_shipto_pattern)::text)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO pricingscheduleitem DO INSTEAD SELECT CASE WHEN ((old.type)::text = 'Item'::text) THEN public.saveipsitem(public.getipsitemid((old.pricing_schedule)::text, (old.item_number)::text, old.qty_break, (old.qty_uom)::text, (old.price_uom)::text), public.getipsheadid((new.pricing_schedule)::text), public.getitemid((new.item_number)::text), new.qty_break, new.price, public.getuomid((new.qty_uom)::text), public.getuomid((new.price_uom)::text), new.percent, new.fixedamt, CASE new.pricing_type WHEN 'Nominal'::text THEN 'N'::text WHEN 'Discount'::text THEN 'D'::text WHEN 'Markup'::text THEN 'M'::text ELSE '?'::text END) WHEN ((old.type)::text = 'Product Category'::text) THEN public.saveipsprodcat(public.getipsprodcatid((old.pricing_schedule)::text, (old.product_category)::text, old.qty_break), public.getipsheadid((new.pricing_schedule)::text), public.getprodcatid((new.product_category)::text), new.qty_break, new.percent, new.fixedamt, CASE new.pricing_type WHEN 'Nominal'::text THEN 'N'::text WHEN 'Discount'::text THEN 'D'::text WHEN 'Markup'::text THEN 'M'::text ELSE '?'::text END) ELSE NULL::integer END AS result; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO pricingscheduleitemchar DO INSTEAD UPDATE public.ipsitemchar SET ipsitemchar_price = new.price WHERE (((ipsitemchar.ipsitemchar_ipsitem_id = public.getipsitemid((old.pricing_schedule)::text, (old.item_number)::text, old.qty_break, (old.qty_uom)::text, (old.price_uom)::text)) AND (ipsitemchar.ipsitemchar_char_id = public.getcharid((old.characteristic)::text, 'I'::text))) AND (ipsitemchar.ipsitemchar_value = (old.value)::text)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO project DO INSTEAD UPDATE public.prj SET prj_name = new.name, prj_descrip = new.description, prj_owner_username = new.owner, prj_username = new.assigned_to, prj_so = new.sales_orders, prj_wo = new.work_orders, prj_po = new.purchase_orders, prj_status = CASE WHEN (new.status = 'In-Process'::text) THEN 'O'::text WHEN (new.status = 'Completed'::text) THEN 'C'::text ELSE 'P'::text END, prj_due_date = new.due, prj_assigned_date = new.assigned, prj_start_date = new.started, prj_completed_date = new.completed WHERE (prj.prj_number = old.number); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO projectcomment DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO prospect DO INSTEAD UPDATE public.prospect SET prospect_number = upper((new.prospect_number)::text), prospect_name = new.prospect_name, prospect_active = new.active, prospect_cntct_id = public.savecntct(public.getcntctid(new.contact_number), new.contact_number, public.saveaddr(public.getaddrid(new.contact_address_number), new.contact_address_number, new.contact_address1, new.contact_address2, new.contact_address3, new.contact_city, new.contact_state, new.contact_postalcode, new.contact_country, new.contact_address_change), new.contact_honorific, new.contact_first, new.contact_middle, new.contact_last, new.contact_suffix, new.contact_voice, new.contact_alternate, new.contact_fax, new.contact_email, new.contact_web, new.contact_job_title, new.contact_change), prospect_taxzone_id = public.gettaxzoneid(new.default_tax_zone), prospect_salesrep_id = public.getsalesrepid(new.sales_rep), prospect_warehous_id = public.getwarehousid(new.site_code, 'ACTIVE'::text), prospect_comments = new.notes WHERE (prospect.prospect_id = public.getprospectid((old.prospect_number)::text)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO purchaseline DO INSTEAD UPDATE public.poitem SET poitem_duedate = new.due_date, poitem_qty_ordered = new.qty_ordered, poitem_unitprice = new.unit_price, poitem_vend_item_number = new.vend_item_number, poitem_vend_item_descrip = new.vendor_description, poitem_manuf_name = new.manufacturer_name, poitem_manuf_item_number = new.manufacturer_item_number, poitem_manuf_item_descrip = new.manufacturer_description, poitem_comments = new.notes, poitem_freight = new.freight, poitem_prj_id = public.getprjid(new.project_number), poitem_bom_rev_id = public.getrevid('BOM'::text, old.item_number, new.bill_of_materials_revision), poitem_boo_rev_id = public.getrevid('BOO'::text, old.item_number, new.bill_of_operations_revision) WHERE (poitem.poitem_id = public.getpoitemid((old.order_number)::text, old.line_number)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO purchaselinechar DO INSTEAD SELECT DISTINCT public.updatecharassignment('PI'::text, poitem.poitem_id, charass.charass_char_id, new.value) AS updatecharassignment FROM public.pohead, public.poitem, public.itemsite, public.item, public.charass, public."char" WHERE (((((((((pohead.pohead_number = (old.order_number)::text) AND (pohead.pohead_id = poitem.poitem_pohead_id)) AND (poitem.poitem_linenumber = old.line_number)) AND (poitem.poitem_itemsite_id = itemsite.itemsite_id)) AND (item.item_id = itemsite.itemsite_item_id)) AND (charass.charass_target_type = 'I'::text)) AND (charass.charass_target_id = item.item_id)) AND ("char".char_id = charass.charass_char_id)) AND ("char".char_name = old.characteristic)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO purchaselinecomment DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO purchaseorder DO INSTEAD UPDATE public.pohead SET pohead_terms_id = public.gettermsid(new.terms), pohead_taxzone_id = public.gettaxzoneid(new.tax_zone), pohead_warehous_id = public.getwarehousid(new.receiving_site, 'ALL'::text), pohead_agent_username = new.purchasing_agent, pohead_vendaddr_id = CASE WHEN (new.alt_address = 'MAIN'::text) THEN NULL::integer ELSE public.getvendaddrid(old.vendor_number, new.alt_address) END, pohead_fob = new.fob, pohead_shipvia = new.ship_via, pohead_curr_id = public.getcurrid((new.currency)::text), pohead_freight = new.freight, pohead_comments = new.notes, pohead_dropship = new.dropship, pohead_vend_cntct_id = public.getcntctid(new.vend_contact_number), pohead_vend_cntct_honorific = new.vend_cntct_honorific, pohead_vend_cntct_first_name = new.vend_cntct_first_name, pohead_vend_cntct_middle = new.vend_cntct_middle, pohead_vend_cntct_last_name = new.vend_cntct_last_name, pohead_vend_cntct_suffix = new.vend_cntct_suffix, pohead_vend_cntct_phone = new.vend_cntct_phone, pohead_vend_cntct_title = new.vend_cntct_title, pohead_vend_cntct_fax = new.vend_cntct_fax, pohead_vend_cntct_email = new.vend_cntct_email, pohead_vendaddress1 = new.vendaddress1, pohead_vendaddress2 = new.vendaddress2, pohead_vendaddress3 = new.vendaddress3, pohead_vendcity = new.vendcity, pohead_vendstate = new.vendstate, pohead_vendzipcode = new.vendzipcode, pohead_vendcountry = new.vendcountry, pohead_shipto_cntct_id = public.getcntctid(new.shipto_contact_number), pohead_shipto_cntct_honorific = new.shipto_cntct_honorific, pohead_shipto_cntct_first_name = new.shipto_cntct_first_name, pohead_shipto_cntct_middle = new.shipto_cntct_middle, pohead_shipto_cntct_last_name = new.shipto_cntct_last_name, pohead_shipto_cntct_suffix = new.shipto_cntct_suffix, pohead_shipto_cntct_phone = new.shipto_cntct_phone, pohead_shipto_cntct_title = new.shipto_cntct_title, pohead_shipto_cntct_fax = new.shipto_cntct_fax, pohead_shipto_cntct_email = new.shipto_cntct_email, pohead_shiptoaddress_id = public.getaddrid(new.shiptoaddress_number), pohead_shiptoaddress1 = new.shiptoaddress1, pohead_shiptoaddress2 = new.shiptoaddress2, pohead_shiptoaddress3 = new.shiptoaddress3, pohead_shiptocity = new.shiptocity, pohead_shiptostate = new.shiptostate, pohead_shiptozipcode = new.shiptozipcode, pohead_shiptocountry = new.shiptocountry, pohead_cohead_id = public.getcoheadid(new.sales_order_number) WHERE (pohead.pohead_number = (old.order_number)::text); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO purchaseordercomment DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO quote DO INSTEAD UPDATE public.quhead SET quhead_number = old.quote_number, quhead_cust_id = public.getcustid(new.customer_number, true), quhead_custponumber = new.cust_po_number, quhead_quotedate = new.quote_date, quhead_warehous_id = public.getwarehousid(new.site, 'SHIPPING'::text), quhead_shipto_id = public.getshiptoid(new.customer_number, new.shipto_number), quhead_shiptoname = new.shipto_name, quhead_shiptoaddress1 = new.shipto_address1, quhead_shiptoaddress2 = new.shipto_address2, quhead_shiptoaddress3 = new.shipto_address3, quhead_salesrep_id = public.getsalesrepid(new.sales_rep), quhead_terms_id = public.gettermsid(new.terms), quhead_fob = new.fob, quhead_shipvia = new.ship_via, quhead_shiptocity = new.shipto_city, quhead_shiptostate = new.shipto_state, quhead_shiptozipcode = new.shipto_postal_code, quhead_freight = new.freight, quhead_misc = new.misc_charge, quhead_ordercomments = new.order_notes, quhead_shipcomments = new.shipping_notes, quhead_shiptophone = new.shipto_phone, quhead_billtoname = new.billto_name, quhead_billtoaddress1 = new.billto_address1, quhead_billtoaddress2 = new.billto_address2, quhead_billtoaddress3 = new.billto_address3, quhead_billtocity = new.billto_city, quhead_billtostate = new.billto_state, quhead_billtozip = new.billto_postal_code, quhead_misc_accnt_id = public.getglaccntid(new.misc_account_number), quhead_misc_descrip = new.misc_charge_description, quhead_commission = new.commission, quhead_packdate = new.pack_date, quhead_prj_id = public.getprjid(new.project_number), quhead_billtocountry = new.billto_country, quhead_shiptocountry = new.shipto_country, quhead_curr_id = public.getcurrid((new.currency)::text), quhead_taxzone_id = public.gettaxzoneid(new.tax_zone), quhead_taxtype_id = public.gettaxtypeid(new.tax_type), quhead_expire = new.expire_date, quhead_saletype_id = public.getsaletypeid(new.sale_type), quhead_shipzone_id = public.getshipzoneid(new.shipto_shipzone) WHERE (quhead.quhead_number = (old.quote_number)::text); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO quotecomment DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO quoteline DO INSTEAD UPDATE public.quitem SET quitem_scheddate = new.scheduled_date, quitem_qtyord = new.qty_ordered, quitem_qty_uom_id = public.getuomid(new.qty_uom), quitem_qty_invuomratio = public.itemuomtouomratio(item.item_id, COALESCE(public.getuomid(new.qty_uom), item.item_inv_uom_id), item.item_inv_uom_id), quitem_price = new.net_unit_price, quitem_price_uom_id = public.getuomid(new.price_uom), quitem_price_invuomratio = public.itemuomtouomratio(item.item_id, COALESCE(public.getuomid(new.price_uom), item.item_inv_uom_id), item.item_inv_uom_id), quitem_memo = new.notes, quitem_createorder = new.create_order, quitem_order_warehous_id = public.getwarehousid(new.supplying_site, 'SHIPPING'::text), quitem_prcost = new.overwrite_po_price, quitem_taxtype_id = public.gettaxtypeid(new.tax_type) FROM public.item WHERE ((quitem.quitem_quhead_id = public.getquoteid(old.quote_number)) AND (quitem.quitem_linenumber = old.line_number)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO quotelinechar DO INSTEAD SELECT DISTINCT public.updatecharassignment('QI'::text, quitem.quitem_id, charass.charass_char_id, new.value) AS updatecharassignment FROM public.quhead, public.quitem, public.itemsite, public.item, public.charass, public."char" WHERE (((((((((quhead.quhead_number = old.quote_number) AND (quhead.quhead_id = quitem.quitem_quhead_id)) AND (quitem.quitem_linenumber = old.line_number)) AND (quitem.quitem_itemsite_id = itemsite.itemsite_id)) AND (item.item_id = itemsite.itemsite_item_id)) AND (charass.charass_target_type = 'I'::text)) AND (charass.charass_target_id = item.item_id)) AND ("char".char_id = charass.charass_char_id)) AND ("char".char_name = old.characteristic)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO quotelinecomment DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO saleshistory DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO saleslinechar DO INSTEAD SELECT DISTINCT public.updatecharassignment('SI'::text, coitem.coitem_id, charass.charass_char_id, new.value, public.itemcharprice(item.item_id, "char".char_id, new.value, cohead.cohead_cust_id, cohead.cohead_shipto_id, coitem.coitem_qtyord, cohead.cohead_curr_id, cohead.cohead_orderdate)) AS updatecharassignment FROM public.cohead, public.coitem, public.itemsite, public.item, public.charass, public."char" WHERE (((((((((cohead.cohead_number = (old.order_number)::text) AND (cohead.cohead_id = coitem.coitem_cohead_id)) AND (coitem.coitem_id = public.getcoitemid((old.order_number)::text, old.line_number))) AND (coitem.coitem_itemsite_id = itemsite.itemsite_id)) AND (item.item_id = itemsite.itemsite_item_id)) AND (charass.charass_target_type = 'I'::text)) AND (charass.charass_target_id = item.item_id)) AND ("char".char_id = charass.charass_char_id)) AND ("char".char_name = old.characteristic)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO saleslinecomment DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO salesorder DO INSTEAD UPDATE public.cohead SET cohead_number = old.order_number, cohead_cust_id = public.getcustid(new.customer_number), cohead_custponumber = new.cust_po_number, cohead_orderdate = new.order_date, cohead_warehous_id = public.getwarehousid(new.site, 'SHIPPING'::text), cohead_shipto_id = public.getshiptoid(new.customer_number, new.shipto_number), cohead_shiptoname = new.shipto_name, cohead_shiptoaddress1 = new.shipto_address1, cohead_shiptoaddress2 = new.shipto_address2, cohead_shiptoaddress3 = new.shipto_address3, cohead_salesrep_id = public.getsalesrepid(new.sales_rep), cohead_terms_id = public.gettermsid(new.terms), cohead_fob = new.fob, cohead_shipvia = new.ship_via, cohead_shiptocity = new.shipto_city, cohead_shiptostate = new.shipto_state, cohead_shiptozipcode = new.shipto_postal_code, cohead_freight = CASE WHEN new.calculate_freight THEN COALESCE((SELECT sum(freightdetail.freightdata_total) AS sum FROM public.freightdetail('SO'::text, public.getcoheadid((old.order_number)::text), public.getcustid(new.customer_number), public.getshiptoid(new.customer_number, new.shipto_number), new.order_date, new.ship_via, public.getcurrid((new.currency)::text)) freightdetail(freightdata_schedule, freightdata_from, freightdata_to, freightdata_shipvia, freightdata_freightclass, freightdata_weight, freightdata_uom, freightdata_price, freightdata_type, freightdata_total, freightdata_currency)), (0)::numeric) ELSE new.freight END, cohead_calcfreight = new.calculate_freight, cohead_misc = new.misc_charge, cohead_ordercomments = new.order_notes, cohead_shipcomments = new.shipping_notes, cohead_shiptophone = new.shipto_phone, cohead_shipchrg_id = public.getshipchrgid(new.shipping_chgs), cohead_shipform_id = public.getshipformid(new.shipping_form), cohead_billtoname = new.billto_name, cohead_billtoaddress1 = new.billto_address1, cohead_billtoaddress2 = new.billto_address2, cohead_billtoaddress3 = new.billto_address3, cohead_billtocity = new.billto_city, cohead_billtostate = new.billto_state, cohead_billtozipcode = new.billto_postal_code, cohead_misc_accnt_id = public.getglaccntid(new.misc_account_number), cohead_misc_descrip = new.misc_charge_description, cohead_commission = new.commission, cohead_holdtype = CASE WHEN (new.hold_type = 'Credit'::text) THEN 'C'::text WHEN (new.hold_type = 'Shipping'::text) THEN 'S'::text WHEN (new.hold_type = 'Packing'::text) THEN 'P'::text ELSE 'N'::text END, cohead_packdate = new.pack_date, cohead_prj_id = public.getprjid(new.project_number), cohead_shipcomplete = new.ship_complete, cohead_billtocountry = new.billto_country, cohead_shiptocountry = new.shipto_country, cohead_curr_id = public.getcurrid((new.currency)::text), cohead_taxzone_id = public.gettaxzoneid(new.tax_zone), cohead_lastupdated = ('now'::text)::timestamp(6) with time zone, cohead_shipto_cntct_id = public.getcntctid(new.shipto_contact_number), cohead_shipto_cntct_honorific = new.shipto_contact_honorific, cohead_shipto_cntct_first_name = new.shipto_contact_first, cohead_shipto_cntct_middle = new.shipto_contact_middle, cohead_shipto_cntct_last_name = new.shipto_contact_last, cohead_shipto_cntct_suffix = new.shipto_contact_suffix, cohead_shipto_cntct_phone = new.shipto_contact_phone, cohead_shipto_cntct_title = new.shipto_contact_title, cohead_shipto_cntct_fax = new.shipto_contact_fax, cohead_shipto_cntct_email = new.shipto_contact_email, cohead_billto_cntct_id = public.getcntctid(new.billto_contact_number), cohead_billto_cntct_honorific = new.billto_contact_name, cohead_billto_cntct_first_name = new.billto_contact_first, cohead_billto_cntct_middle = new.billto_contact_middle, cohead_billto_cntct_last_name = new.billto_contact_last, cohead_billto_cntct_suffix = new.billto_contact_suffix, cohead_billto_cntct_phone = new.billto_contact_phone, cohead_billto_cntct_title = new.billto_contact_title, cohead_billto_cntct_fax = new.billto_contct_fax, cohead_billto_cntct_email = new.billto_contact_email, cohead_saletype_id = public.getsaletypeid(new.sale_type), cohead_shipzone_id = public.getshipzoneid(new.shipto_shipzone) WHERE (cohead.cohead_number = (old.order_number)::text); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO salesordercomment DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO salesrep DO INSTEAD UPDATE public.salesrep SET salesrep_active = new.active, salesrep_number = new.number, salesrep_name = new.name, salesrep_commission = (new.commission_percent * 0.01), salesrep_emp_id = public.getempid(new.employee) WHERE (salesrep.salesrep_number = (old.number)::text); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO site DO INSTEAD UPDATE public.whsinfo SET warehous_descrip = new.description, warehous_fob = CASE WHEN new.inventory_type THEN new.default_fob ELSE NULL::text END, warehous_active = new.active, warehous_counttag_prefix = CASE WHEN new.inventory_type THEN new.next_count_tag_prefix ELSE NULL::text END, warehous_counttag_number = CASE WHEN new.inventory_type THEN new.next_count_tag_number ELSE NULL::integer END, warehous_bol_prefix = CASE WHEN new.inventory_type THEN new.next_bill_of_lading_prefix ELSE NULL::text END, warehous_bol_number = CASE WHEN new.inventory_type THEN new.next_bill_of_lading_number ELSE NULL::integer END, warehous_shipping = CASE WHEN new.inventory_type THEN new.shipping_site ELSE NULL::boolean END, warehous_useslips = CASE WHEN new.inventory_type THEN new.force_the_use_of_count_slips ELSE NULL::boolean END, warehous_usezones = CASE WHEN new.inventory_type THEN new.force_the_use_of_zones ELSE NULL::boolean END, warehous_aislesize = CASE WHEN new.inventory_type THEN new.aisle_size ELSE NULL::integer END, warehous_aislealpha = CASE WHEN new.inventory_type THEN new.aisle_allow_alpha_characters ELSE NULL::boolean END, warehous_racksize = CASE WHEN new.inventory_type THEN new.rack_size ELSE NULL::integer END, warehous_rackalpha = CASE WHEN new.inventory_type THEN new.rack_allow_alpha_characters ELSE NULL::boolean END, warehous_binsize = CASE WHEN new.inventory_type THEN new.bin_size ELSE NULL::integer END, warehous_binalpha = CASE WHEN new.inventory_type THEN new.bin_allow_alpha_characters ELSE NULL::boolean END, warehous_locationsize = CASE WHEN new.inventory_type THEN new.location_size ELSE NULL::integer END, warehous_locationalpha = CASE WHEN new.inventory_type THEN new.location_allow_alpha_characters ELSE NULL::boolean END, warehous_enforcearbl = CASE WHEN new.inventory_type THEN new.enforce_arbl_naming_convention ELSE NULL::boolean END, warehous_default_accnt_id = public.getglaccntid(new.post_unassigned_transactions_to), warehous_shipping_commission = CASE WHEN new.inventory_type THEN (new.shipping_commission * 0.01) ELSE NULL::numeric END, warehous_cntct_id = public.savecntct(public.getcntctid(new.contact_number), new.contact_number, NULL::integer, new.honorific, new.first, new.middle, new.last, new.suffix, new.phone, NULL::text, new.fax, new.email, NULL::text, new.job_title, new.contact_change), warehous_addr_id = public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postal_code, new.country, new.address_change), warehous_taxzone_id = CASE WHEN new.inventory_type THEN public.gettaxzoneid(new.tax_zone) ELSE NULL::integer END, warehous_transit = CASE WHEN new.inventory_type THEN false WHEN new.transit_type THEN true ELSE NULL::boolean END, warehous_shipform_id = CASE WHEN new.transit_type THEN public.getshipformid(new.default_shipping_form) ELSE NULL::integer END, warehous_shipvia_id = CASE WHEN new.transit_type THEN public.getshipviaid(new.default_ship_via) ELSE NULL::integer END, warehous_shipcomments = CASE WHEN new.transit_type THEN new.shipping_comments ELSE NULL::text END, warehous_costcat_id = CASE WHEN new.transit_type THEN public.getcostcatid(new.default_cost_category) ELSE NULL::integer END, warehous_sitetype_id = public.getsitetypeid(new.type), warehous_sequence = new.scheduling_sequence WHERE (whsinfo.warehous_id = public.getwarehousid((old.code)::text, 'ALL'::text)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO sitezone DO INSTEAD UPDATE public.whsezone SET whsezone_descrip = new.description WHERE ((whsezone.whsezone_warehous_id = public.getwarehousid((old.site)::text, 'ACTIVE'::text)) AND (whsezone.whsezone_name = (old.name)::text)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO task DO INSTEAD UPDATE public.prjtask SET prjtask_name = new.name, prjtask_descrip = new.description, prjtask_owner_username = new.owner, prjtask_username = new.assigned_to, prjtask_hours_budget = new.hours_budgeted, prjtask_hours_actual = new.hours_actual, prjtask_exp_budget = new.expenses_budgeted, prjtask_exp_actual = new.expenses_actual, prjtask_status = CASE WHEN (new.status = 'In-Process'::text) THEN 'O'::text WHEN (new.status = 'Completed'::text) THEN 'C'::text ELSE 'P'::text END, prjtask_due_date = new.due, prjtask_assigned_date = new.assigned, prjtask_start_date = new.started, prjtask_completed_date = new.completed WHERE ((prjtask.prjtask_prj_id = public.getprjid(old.project_number)) AND (prjtask.prjtask_number = old.number)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO taskcomment DO INSTEAD NOTHING; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO todo DO INSTEAD SELECT public.updatetodoitem(old.task_number, old.assigned_to, new.task_name, new.description, public.getincidentid(new.incident), COALESCE(public.getincdtcrmacctid(new.incident), public.getcrmacctid(new.account)), public.getopheadid(new.opportunity), CASE WHEN (new.date_started > ''::text) THEN (new.date_started)::date ELSE NULL::date END, CASE WHEN (new.date_due > ''::text) THEN (new.date_due)::date ELSE NULL::date END, (CASE WHEN (new.status = 'Pending Input'::text) THEN 'P'::text WHEN (new.status = 'Deferred'::text) THEN 'D'::text WHEN (new.status = 'Neither'::text) THEN 'N'::text ELSE NULL::text END)::bpchar, CASE WHEN (new.date_assigned > ''::text) THEN (new.date_assigned)::date ELSE NULL::date END, CASE WHEN (new.date_completed > ''::text) THEN (new.date_completed)::date ELSE NULL::date END, public.getincdtpriorityid(new.priority), new.notes, new.active, new.owner) AS updatetodoitem; -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO vendor DO INSTEAD UPDATE public.vendinfo SET vend_name = new.vendor_name, vend_active = new.active, vend_po = new.sells_purchase_order_items, vend_comments = new.notes, vend_pocomments = new.po_comments, vend_1099 = new.receives_1099, vend_fobsource = CASE WHEN (new.default_fob IS NULL) THEN NULL::text WHEN (new.default_fob = 'Receiving Site'::text) THEN 'W'::text ELSE 'V'::text END, vend_fob = CASE WHEN (new.default_fob IS NULL) THEN NULL::text WHEN (new.default_fob = 'Receiving Site'::text) THEN ''::text ELSE new.default_fob END, vend_terms_id = public.gettermsid(new.default_terms), vend_shipvia = new.ship_via, vend_vendtype_id = public.getvendtypeid(new.vendor_type), vend_qualified = new.qualified, vend_ediemail = new.po_edi_email, vend_ediemailbody = new.po_edi_emailbody, vend_edisubject = new.po_edi_subject, vend_edifilename = new.po_edi_filename, vend_accntnum = new.account_number, vend_emailpodelivery = new.allow_email_po_delivery, vend_restrictpurch = new.may_only_sell_item_source, vend_edicc = new.po_edi_cc, vend_curr_id = public.getcurrid((new.default_currency)::text), vend_cntct1_id = public.savecntct(public.getcntctid(new.contact1_number), new.contact1_number, NULL::integer, new.contact1_honorific, new.contact1_first, new.contact1_middle, new.contact1_last, new.contact1_suffix, new.contact1_voice, new.contact1_alternate, new.contact1_fax, new.contact1_email, new.contact1_web, new.contact1_job_title, new.contact1_change), vend_cntct2_id = public.savecntct(public.getcntctid(new.contact2_number), new.contact2_number, NULL::integer, new.contact2_honorific, new.contact2_first, new.contact2_middle, new.contact2_last, new.contact2_suffix, new.contact2_voice, new.contact2_alternate, new.contact2_fax, new.contact2_email, new.contact2_web, new.contact2_job_title, new.contact2_change), vend_addr_id = public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postalcode, new.country, new.address_change), vend_match = new.matching_vo_po_amounts, vend_taxzone_id = public.gettaxzoneid(new.default_tax_zone), vend_accnt_id = COALESCE(public.getglaccntid(new.default_dist_gl_account), (-1)), vend_expcat_id = COALESCE(public.getexpcatid(new.default_dist_expense_category), (-1)), vend_tax_id = COALESCE(public.gettaxid(new.default_dist_tax_code), (-1)) WHERE (vendinfo.vend_id = public.getvendid((old.vendor_number)::text)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO vendoraddress DO INSTEAD UPDATE public.vendaddrinfo SET vendaddr_vend_id = public.getvendid((new.vendor_number)::text), vendaddr_code = new.vendor_address_number, vendaddr_name = new.vendor_address_name, vendaddr_comments = new.notes, vendaddr_cntct_id = public.savecntct(public.getcntctid(new.contact_number), new.contact_number, public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postalcode, new.country, new.address_change), new.contact_honorific, new.contact_first, new.contact_middle, new.contact_last, new.contact_suffix, new.contact_voice, new.contact_alternate, new.contact_fax, new.contact_email, new.contact_web, new.contact_job_title, new.contact_change), vendaddr_addr_id = public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postalcode, new.country, new.address_change) WHERE (vendaddrinfo.vendaddr_id = public.getvendaddrid((old.vendor_number)::text, (old.vendor_address_number)::text)); -- -- Name: _UPDATE; Type: RULE; Schema: api; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO vendortype DO INSTEAD UPDATE public.vendtype SET vendtype_code = new.code, vendtype_descrip = new.description WHERE (vendtype.vendtype_code = (old.code)::text); SET search_path = public, pg_catalog; -- -- Name: _DELETE; Type: RULE; Schema: public; Owner: admin -- CREATE RULE "_DELETE" AS ON DELETE TO url DO INSTEAD NOTHING; -- -- Name: _DELETE_FILE; Type: RULE; Schema: public; Owner: admin -- CREATE RULE "_DELETE_FILE" AS ON DELETE TO url WHERE (old.url_stream IS NOT NULL) DO INSTEAD SELECT deletefile(old.url_id) AS deletefile; -- -- Name: _DELETE_URL; Type: RULE; Schema: public; Owner: admin -- CREATE RULE "_DELETE_URL" AS ON DELETE TO url WHERE (old.url_stream IS NULL) DO INSTEAD SELECT deleteurl(old.url_id) AS deleteurl; -- -- Name: _INSERT; Type: RULE; Schema: public; Owner: admin -- CREATE RULE "_INSERT" AS ON INSERT TO url DO INSTEAD NOTHING; -- -- Name: _INSERT_FILE; Type: RULE; Schema: public; Owner: admin -- CREATE RULE "_INSERT_FILE" AS ON INSERT TO url WHERE (new.url_stream IS NOT NULL) DO INSTEAD INSERT INTO docass (docass_id, docass_source_id, docass_source_type, docass_target_id, docass_target_type, docass_purpose) VALUES (COALESCE((new.url_id)::bigint, nextval('docass_docass_id_seq'::regclass)), new.url_source_id, new.url_source, createfile(new.url_title, new.url_url, new.url_stream), 'FILE'::text, 'S'::bpchar); -- -- Name: _INSERT_URL; Type: RULE; Schema: public; Owner: admin -- CREATE RULE "_INSERT_URL" AS ON INSERT TO url WHERE (new.url_stream IS NULL) DO INSTEAD INSERT INTO docass (docass_id, docass_source_id, docass_source_type, docass_target_id, docass_target_type, docass_purpose) VALUES (COALESCE((new.url_id)::bigint, nextval('docass_docass_id_seq'::regclass)), new.url_source_id, new.url_source, createurl(new.url_title, new.url_url), 'URL'::text, 'S'::bpchar); -- -- Name: _UPDATE; Type: RULE; Schema: public; Owner: admin -- CREATE RULE "_UPDATE" AS ON UPDATE TO url DO INSTEAD NOTHING; -- -- Name: _UPDATE_FILE; Type: RULE; Schema: public; Owner: admin -- CREATE RULE "_UPDATE_FILE" AS ON UPDATE TO url WHERE (new.url_stream IS NOT NULL) DO INSTEAD UPDATE file SET file_title = new.url_title, file_stream = new.url_stream FROM docass WHERE (((docass.docass_id = old.url_id) AND (docass.docass_target_id = file.file_id)) AND (docass.docass_target_type = 'FILE'::text)); -- -- Name: _UPDATE_URL; Type: RULE; Schema: public; Owner: admin -- CREATE RULE "_UPDATE_URL" AS ON UPDATE TO url WHERE (new.url_stream IS NULL) DO INSTEAD UPDATE urlinfo SET url_title = new.url_title, url_url = new.url_url FROM docass WHERE (((docass.docass_id = old.url_id) AND (docass.docass_target_id = urlinfo.url_id)) AND (docass.docass_target_type = 'URL'::text)); SET search_path = fixcountry, pg_catalog; -- -- Name: pkgcmdaftertrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgcmdaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgcmd FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdaftertrigger(); -- -- Name: pkgcmdaltertrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgcmdaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmd FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdaltertrigger(); -- -- Name: pkgcmdargaftertrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgcmdargaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgcmdarg FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdargaftertrigger(); -- -- Name: pkgcmdargaltertrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgcmdargaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmdarg FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdargaltertrigger(); -- -- Name: pkgcmdargbeforetrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgcmdargbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmdarg FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdargbeforetrigger(); -- -- Name: pkgcmdbeforetrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgcmdbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmd FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdbeforetrigger(); -- -- Name: pkgimageaftertrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgimageaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgimage FOR EACH ROW EXECUTE PROCEDURE public._pkgimageaftertrigger(); -- -- Name: pkgimagealtertrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgimagealtertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgimage FOR EACH ROW EXECUTE PROCEDURE public._pkgimagealtertrigger(); -- -- Name: pkgimagebeforetrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgimagebeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgimage FOR EACH ROW EXECUTE PROCEDURE public._pkgimagebeforetrigger(); -- -- Name: pkgmetasqlaftertrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgmetasqlaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgmetasql FOR EACH ROW EXECUTE PROCEDURE public._pkgmetasqlaftertrigger(); -- -- Name: pkgmetasqlaltertrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgmetasqlaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgmetasql FOR EACH ROW EXECUTE PROCEDURE public._pkgmetasqlaltertrigger(); -- -- Name: pkgmetasqlbeforetrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgmetasqlbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgmetasql FOR EACH ROW EXECUTE PROCEDURE public._pkgmetasqlbeforetrigger(); -- -- Name: pkgprivaftertrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgprivaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgpriv FOR EACH ROW EXECUTE PROCEDURE public._pkgprivaftertrigger(); -- -- Name: pkgprivaltertrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgprivaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgpriv FOR EACH ROW EXECUTE PROCEDURE public._pkgprivaltertrigger(); -- -- Name: pkgprivbeforetrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgprivbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgpriv FOR EACH ROW EXECUTE PROCEDURE public._pkgprivbeforetrigger(); -- -- Name: pkgreportaftertrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgreportaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgreport FOR EACH ROW EXECUTE PROCEDURE public._pkgreportaftertrigger(); -- -- Name: pkgreportaltertrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgreportaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgreport FOR EACH ROW EXECUTE PROCEDURE public._pkgreportaltertrigger(); -- -- Name: pkgreportbeforetrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgreportbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgreport FOR EACH ROW EXECUTE PROCEDURE public._pkgreportbeforetrigger(); -- -- Name: pkgscriptaftertrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgscriptaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgscript FOR EACH ROW EXECUTE PROCEDURE public._pkgscriptaftertrigger(); -- -- Name: pkgscriptaltertrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgscriptaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgscript FOR EACH ROW EXECUTE PROCEDURE public._pkgscriptaltertrigger(); -- -- Name: pkgscriptbeforetrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkgscriptbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgscript FOR EACH ROW EXECUTE PROCEDURE public._pkgscriptbeforetrigger(); -- -- Name: pkguiformaftertrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkguiformaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkguiform FOR EACH ROW EXECUTE PROCEDURE public._pkguiformaftertrigger(); -- -- Name: pkguiformaltertrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkguiformaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkguiform FOR EACH ROW EXECUTE PROCEDURE public._pkguiformaltertrigger(); -- -- Name: pkguiformbeforetrigger; Type: TRIGGER; Schema: fixcountry; Owner: admin -- CREATE TRIGGER pkguiformbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkguiform FOR EACH ROW EXECUTE PROCEDURE public._pkguiformbeforetrigger(); SET search_path = public, pg_catalog; -- -- Name: accntdeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER accntdeletetrigger BEFORE DELETE ON accnt FOR EACH ROW EXECUTE PROCEDURE _accntdeletetrigger(); -- -- Name: accnttrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER accnttrigger BEFORE INSERT OR UPDATE ON accnt FOR EACH ROW EXECUTE PROCEDURE _accnttrigger(); -- -- Name: accntuniquetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER accntuniquetrigger BEFORE INSERT ON accnt FOR EACH ROW EXECUTE PROCEDURE _accntuniquetrigger(); -- -- Name: addrtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER addrtrigger BEFORE INSERT OR DELETE OR UPDATE ON addr FOR EACH ROW EXECUTE PROCEDURE _addrtrigger(); -- -- Name: alarmbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER alarmbeforetrigger BEFORE INSERT ON alarm FOR EACH ROW EXECUTE PROCEDURE _alarmbeforetrigger(); -- -- Name: apapplytrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER apapplytrigger BEFORE INSERT OR UPDATE ON apapply FOR EACH ROW EXECUTE PROCEDURE _apapplytrigger(); -- -- Name: apopentrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER apopentrigger BEFORE INSERT OR UPDATE ON apopen FOR EACH ROW EXECUTE PROCEDURE _apopentrigger(); -- -- Name: arapplytrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER arapplytrigger BEFORE INSERT OR UPDATE ON arapply FOR EACH ROW EXECUTE PROCEDURE _arapplytrigger(); -- -- Name: aropenaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER aropenaftertrigger AFTER INSERT OR UPDATE ON aropen FOR EACH ROW EXECUTE PROCEDURE _aropenaftertrigger(); -- -- Name: aropentrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER aropentrigger BEFORE INSERT OR UPDATE ON aropen FOR EACH ROW EXECUTE PROCEDURE _aropentrigger(); -- -- Name: bomheadtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER bomheadtrigger AFTER INSERT OR DELETE OR UPDATE ON bomhead FOR EACH ROW EXECUTE PROCEDURE _bomheadtrigger(); -- -- Name: bomitemaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER bomitemaftertrigger AFTER INSERT OR UPDATE ON bomitem FOR EACH ROW EXECUTE PROCEDURE _bomitemaftertrigger(); -- -- Name: bomitembeforedeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER bomitembeforedeletetrigger BEFORE DELETE ON bomitem FOR EACH ROW EXECUTE PROCEDURE _bomitembeforedeletetrigger(); -- -- Name: bomitembeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER bomitembeforetrigger BEFORE INSERT OR UPDATE ON bomitem FOR EACH ROW EXECUTE PROCEDURE _bomitembeforetrigger(); -- -- Name: bomitemsubtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER bomitemsubtrigger BEFORE INSERT OR DELETE OR UPDATE ON bomitemsub FOR EACH ROW EXECUTE PROCEDURE _bomitemsubtrigger(); -- -- Name: cashrcptitemaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER cashrcptitemaftertrigger AFTER INSERT OR UPDATE ON cashrcptitem FOR EACH ROW EXECUTE PROCEDURE _cashrcptitemaftertrigger(); -- -- Name: cashrcptitemtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER cashrcptitemtrigger BEFORE INSERT OR UPDATE ON cashrcptitem FOR EACH ROW EXECUTE PROCEDURE _cashrcptitemtrigger(); -- -- Name: cashrcptmisctrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER cashrcptmisctrigger BEFORE INSERT OR UPDATE ON cashrcptmisc FOR EACH ROW EXECUTE PROCEDURE _cashrcptmisctrigger(); -- -- Name: cashrcpttrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER cashrcpttrigger BEFORE INSERT OR UPDATE ON cashrcpt FOR EACH ROW EXECUTE PROCEDURE _cashrcpttrigger(); -- -- Name: ccardtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER ccardtrigger BEFORE INSERT OR UPDATE ON ccard FOR EACH ROW EXECUTE PROCEDURE _ccardtrigger(); -- -- Name: charasshistorytrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER charasshistorytrigger BEFORE INSERT OR DELETE OR UPDATE ON charass FOR EACH ROW EXECUTE PROCEDURE _charasshistorytrigger(); -- -- Name: charasstrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER charasstrigger AFTER INSERT OR UPDATE ON charass FOR EACH ROW EXECUTE PROCEDURE _charasstrigger(); -- -- Name: charbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER charbeforetrigger BEFORE INSERT OR UPDATE ON "char" FOR EACH ROW EXECUTE PROCEDURE _charbeforetrigger(); -- -- Name: charopttrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER charopttrigger AFTER DELETE OR UPDATE ON charopt FOR EACH ROW EXECUTE PROCEDURE _charopttrigger(); -- -- Name: checkheadbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER checkheadbeforetrigger BEFORE INSERT OR UPDATE ON checkhead FOR EACH ROW EXECUTE PROCEDURE _checkheadbeforetrigger(); -- -- Name: cmheadbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER cmheadbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON cmhead FOR EACH ROW EXECUTE PROCEDURE _cmheadbeforetrigger(); -- -- Name: cmheadtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER cmheadtrigger AFTER INSERT OR DELETE OR UPDATE ON cmhead FOR EACH ROW EXECUTE PROCEDURE _cmheadtrigger(); -- -- Name: cmitembeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER cmitembeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON cmitem FOR EACH ROW EXECUTE PROCEDURE _cmitembeforetrigger(); -- -- Name: cmitemtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER cmitemtrigger AFTER INSERT OR DELETE OR UPDATE ON cmitem FOR EACH ROW EXECUTE PROCEDURE _cmitemtrigger(); -- -- Name: cntcttrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER cntcttrigger BEFORE INSERT OR UPDATE ON cntct FOR EACH ROW EXECUTE PROCEDURE _cntcttrigger(); -- -- Name: cntcttriggerafter; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER cntcttriggerafter AFTER INSERT OR DELETE OR UPDATE ON cntct FOR EACH ROW EXECUTE PROCEDURE _cntcttriggerafter(); -- -- Name: cntcttriggerbeforedelete; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER cntcttriggerbeforedelete BEFORE DELETE ON cntct FOR EACH ROW EXECUTE PROCEDURE _cntcttriggerbeforedelete(); -- -- Name: cntsliptrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER cntsliptrigger BEFORE INSERT OR DELETE OR UPDATE ON cntslip FOR EACH ROW EXECUTE PROCEDURE _cntsliptrigger(); -- -- Name: cobillbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER cobillbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON cobill FOR EACH ROW EXECUTE PROCEDURE _cobillbeforetrigger(); -- -- Name: cobilltrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER cobilltrigger AFTER INSERT OR DELETE OR UPDATE ON cobill FOR EACH ROW EXECUTE PROCEDURE _cobilltrigger(); -- -- Name: cobmiscbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER cobmiscbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON cobmisc FOR EACH ROW EXECUTE PROCEDURE _cobmiscbeforetrigger(); -- -- Name: cobmisctrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER cobmisctrigger AFTER INSERT OR DELETE OR UPDATE ON cobmisc FOR EACH ROW EXECUTE PROCEDURE _cobmisctrigger(); -- -- Name: commenttrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER commenttrigger AFTER INSERT OR UPDATE ON comment FOR EACH ROW EXECUTE PROCEDURE _commenttrigger(); -- -- Name: companytrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER companytrigger BEFORE UPDATE ON company FOR EACH ROW EXECUTE PROCEDURE _companytrigger(); -- -- Name: contrctaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER contrctaftertrigger AFTER UPDATE ON contrct FOR EACH ROW EXECUTE PROCEDURE _contrctaftertrigger(); -- -- Name: crmacctaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER crmacctaftertrigger AFTER INSERT OR DELETE OR UPDATE ON crmacct FOR EACH ROW EXECUTE PROCEDURE _crmacctaftertrigger(); -- -- Name: crmacctbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER crmacctbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON crmacct FOR EACH ROW EXECUTE PROCEDURE _crmacctbeforetrigger(); -- -- Name: currexchangecheckoverlap; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER currexchangecheckoverlap BEFORE INSERT OR UPDATE ON curr_rate FOR EACH ROW EXECUTE PROCEDURE currexchangecheckoverlap(); -- -- Name: curronebase; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER curronebase AFTER INSERT OR UPDATE ON curr_symbol FOR EACH ROW EXECUTE PROCEDURE curronebase(); -- -- Name: custaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER custaftertrigger AFTER INSERT OR UPDATE ON custinfo FOR EACH ROW EXECUTE PROCEDURE _custaftertrigger(); -- -- Name: custinfoafterdeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER custinfoafterdeletetrigger AFTER DELETE ON custinfo FOR EACH ROW EXECUTE PROCEDURE _custinfoafterdeletetrigger(); -- -- Name: custinfobeforedeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER custinfobeforedeletetrigger BEFORE DELETE ON custinfo FOR EACH ROW EXECUTE PROCEDURE _custinfobeforedeletetrigger(); -- -- Name: custtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER custtrigger BEFORE INSERT OR UPDATE ON custinfo FOR EACH ROW EXECUTE PROCEDURE _custtrigger(); -- -- Name: custtypeafterdeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER custtypeafterdeletetrigger AFTER DELETE ON custtype FOR EACH ROW EXECUTE PROCEDURE _custtypeafterdeletetrigger(); -- -- Name: custtypetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER custtypetrigger BEFORE INSERT OR UPDATE ON custtype FOR EACH ROW EXECUTE PROCEDURE _custtypetrigger(); -- -- Name: docasstrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER docasstrigger AFTER INSERT OR UPDATE ON docass FOR EACH ROW EXECUTE PROCEDURE _docasstrigger(); -- -- Name: empafterdeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER empafterdeletetrigger AFTER DELETE ON emp FOR EACH ROW EXECUTE PROCEDURE _empafterdeletetrigger(); -- -- Name: empaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER empaftertrigger AFTER INSERT OR UPDATE ON emp FOR EACH ROW EXECUTE PROCEDURE _empaftertrigger(); -- -- Name: empbeforedeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER empbeforedeletetrigger BEFORE DELETE ON emp FOR EACH ROW EXECUTE PROCEDURE _empbeforedeletetrigger(); -- -- Name: empbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER empbeforetrigger BEFORE INSERT OR UPDATE ON emp FOR EACH ROW EXECUTE PROCEDURE _empbeforetrigger(); -- -- Name: gltransaltertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER gltransaltertrigger BEFORE DELETE OR UPDATE ON gltrans FOR EACH ROW EXECUTE PROCEDURE _gltransaltertrigger(); -- -- Name: gltransinserttrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER gltransinserttrigger BEFORE INSERT ON gltrans FOR EACH ROW EXECUTE PROCEDURE _gltransinserttrigger(); -- -- Name: grpprivtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER grpprivtrigger BEFORE INSERT OR UPDATE ON grppriv FOR EACH ROW EXECUTE PROCEDURE _grpprivtrigger(); -- -- Name: imageasstrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER imageasstrigger AFTER INSERT OR UPDATE ON imageass FOR EACH ROW EXECUTE PROCEDURE _imageasstrigger(); -- -- Name: incdtbeforedeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER incdtbeforedeletetrigger BEFORE DELETE ON incdt FOR EACH ROW EXECUTE PROCEDURE _incdtbeforedeletetrigger(); -- -- Name: incdtbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER incdtbeforetrigger BEFORE INSERT OR UPDATE ON incdt FOR EACH ROW EXECUTE PROCEDURE _incdtbeforetrigger(); -- -- Name: incdttrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER incdttrigger AFTER INSERT OR DELETE OR UPDATE ON incdt FOR EACH ROW EXECUTE PROCEDURE _incdttrigger(); -- -- Name: invcheadaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER invcheadaftertrigger AFTER UPDATE ON invchead FOR EACH ROW EXECUTE PROCEDURE _invcheadaftertrigger(); -- -- Name: invcheadbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER invcheadbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON invchead FOR EACH ROW EXECUTE PROCEDURE _invcheadbeforetrigger(); -- -- Name: invcheadtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER invcheadtrigger AFTER INSERT OR DELETE OR UPDATE ON invchead FOR EACH ROW EXECUTE PROCEDURE _invcheadtrigger(); -- -- Name: invcitembeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER invcitembeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON invcitem FOR EACH ROW EXECUTE PROCEDURE _invcitembeforetrigger(); -- -- Name: invcitemtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER invcitemtrigger AFTER INSERT OR DELETE OR UPDATE ON invcitem FOR EACH ROW EXECUTE PROCEDURE _invcitemtrigger(); -- -- Name: invhisttrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER invhisttrigger BEFORE INSERT OR UPDATE ON invhist FOR EACH ROW EXECUTE PROCEDURE invhisttrig(); -- -- Name: ipsassbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER ipsassbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON ipsass FOR EACH ROW EXECUTE PROCEDURE _ipsassbeforetrigger(); -- -- Name: ipsheadbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER ipsheadbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON ipshead FOR EACH ROW EXECUTE PROCEDURE _ipsheadbeforetrigger(); -- -- Name: ipsitemcharbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER ipsitemcharbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON ipsitemchar FOR EACH ROW EXECUTE PROCEDURE _ipsitemcharbeforetrigger(); -- -- Name: ipsiteminfobeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER ipsiteminfobeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON ipsiteminfo FOR EACH ROW EXECUTE PROCEDURE _ipsiteminfobeforetrigger(); -- -- Name: itemaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER itemaftertrigger AFTER INSERT OR DELETE OR UPDATE ON item FOR EACH ROW EXECUTE PROCEDURE _itemaftertrigger(); -- -- Name: itemcostaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER itemcostaftertrigger AFTER INSERT OR UPDATE ON itemcost FOR EACH ROW EXECUTE PROCEDURE _itemcostaftertrigger(); -- -- Name: itemcosttrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER itemcosttrigger BEFORE INSERT OR DELETE OR UPDATE ON itemcost FOR EACH ROW EXECUTE PROCEDURE _itemcosttrigger(); -- -- Name: itemsiteaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER itemsiteaftertrigger AFTER INSERT OR UPDATE ON itemsite FOR EACH ROW EXECUTE PROCEDURE _itemsiteaftertrigger(); -- -- Name: itemsitetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER itemsitetrigger BEFORE INSERT OR UPDATE ON itemsite FOR EACH ROW EXECUTE PROCEDURE _itemsitetrigger(); -- -- Name: itemsrcaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER itemsrcaftertrigger AFTER INSERT OR UPDATE ON itemsrc FOR EACH ROW EXECUTE PROCEDURE _itemsrcaftertrigger(); -- -- Name: itemsrcptrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER itemsrcptrigger BEFORE INSERT OR UPDATE ON itemsrcp FOR EACH ROW EXECUTE PROCEDURE _itemsrcptrigger(); -- -- Name: itemsrctrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER itemsrctrigger BEFORE INSERT OR UPDATE ON itemsrc FOR EACH ROW EXECUTE PROCEDURE _itemsrctrigger(); -- -- Name: itemsubtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER itemsubtrigger AFTER INSERT OR UPDATE ON itemsub FOR EACH ROW EXECUTE PROCEDURE _itemsubtrigger(); -- -- Name: itemtaxtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER itemtaxtrigger AFTER INSERT OR UPDATE ON itemtax FOR EACH ROW EXECUTE PROCEDURE _itemtaxtrigger(); -- -- Name: itemtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER itemtrigger BEFORE INSERT OR UPDATE ON item FOR EACH ROW EXECUTE PROCEDURE _itemtrigger(); -- -- Name: itemuomconvtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER itemuomconvtrigger AFTER INSERT OR UPDATE ON itemuomconv FOR EACH ROW EXECUTE PROCEDURE _itemuomconvtrigger(); -- -- Name: locationaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER locationaftertrigger AFTER INSERT OR UPDATE ON location FOR EACH ROW EXECUTE PROCEDURE _locationaftertrigger(); -- -- Name: locationtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER locationtrigger BEFORE INSERT OR UPDATE ON location FOR EACH ROW EXECUTE PROCEDURE _locationtrigger(); -- -- Name: metasqlaltertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER metasqlaltertrigger BEFORE INSERT OR UPDATE ON metasql FOR EACH ROW EXECUTE PROCEDURE _metasqlaltertrigger(); -- -- Name: metasqltrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER metasqltrigger BEFORE INSERT OR UPDATE ON metasql FOR EACH ROW EXECUTE PROCEDURE _metasqltrigger(); -- -- Name: opheadaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER opheadaftertrigger AFTER INSERT OR DELETE OR UPDATE ON ophead FOR EACH ROW EXECUTE PROCEDURE _opheadaftertrigger(); -- -- Name: opheadbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER opheadbeforetrigger BEFORE INSERT OR UPDATE ON ophead FOR EACH ROW EXECUTE PROCEDURE _opheadbeforetrigger(); -- -- Name: packbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER packbeforetrigger BEFORE INSERT OR UPDATE ON pack FOR EACH ROW EXECUTE PROCEDURE _packbeforetrigger(); -- -- Name: periodaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER periodaftertrigger AFTER INSERT OR DELETE OR UPDATE ON period FOR EACH STATEMENT EXECUTE PROCEDURE _periodaftertrigger(); -- -- Name: pkgheadbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER pkgheadbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkghead FOR EACH ROW EXECUTE PROCEDURE _pkgheadbeforetrigger(); -- -- Name: pkgitembeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER pkgitembeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgitem FOR EACH ROW EXECUTE PROCEDURE _pkgitembeforetrigger(); -- -- Name: poheadtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER poheadtrigger BEFORE INSERT OR DELETE OR UPDATE ON pohead FOR EACH ROW EXECUTE PROCEDURE _poheadtrigger(); -- -- Name: poheadtriggerafter; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER poheadtriggerafter AFTER UPDATE ON pohead FOR EACH ROW EXECUTE PROCEDURE _poheadtriggerafter(); -- -- Name: poitemtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER poitemtrigger BEFORE INSERT OR DELETE OR UPDATE ON poitem FOR EACH ROW EXECUTE PROCEDURE _poitemtrigger(); -- -- Name: prjaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER prjaftertrigger AFTER INSERT OR UPDATE ON prj FOR EACH ROW EXECUTE PROCEDURE _prjaftertrigger(); -- -- Name: prjbeforedeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER prjbeforedeletetrigger BEFORE DELETE ON prj FOR EACH ROW EXECUTE PROCEDURE _prjbeforedeletetrigger(); -- -- Name: prjtaskaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER prjtaskaftertrigger AFTER INSERT OR UPDATE ON prjtask FOR EACH ROW EXECUTE PROCEDURE _prjtaskaftertrigger(); -- -- Name: prjtasktrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER prjtasktrigger BEFORE INSERT OR UPDATE ON prjtask FOR EACH ROW EXECUTE PROCEDURE _prjtasktrigger(); -- -- Name: prospectafterdeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER prospectafterdeletetrigger AFTER DELETE ON prospect FOR EACH ROW EXECUTE PROCEDURE _prospectafterdeletetrigger(); -- -- Name: prospectaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER prospectaftertrigger AFTER INSERT OR UPDATE ON prospect FOR EACH ROW EXECUTE PROCEDURE _prospectaftertrigger(); -- -- Name: prospectbeforedeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER prospectbeforedeletetrigger BEFORE DELETE ON prospect FOR EACH ROW EXECUTE PROCEDURE _prospectbeforedeletetrigger(); -- -- Name: prospecttrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER prospecttrigger BEFORE INSERT OR UPDATE ON prospect FOR EACH ROW EXECUTE PROCEDURE _prospecttrigger(); -- -- Name: prtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER prtrigger AFTER INSERT ON pr FOR EACH ROW EXECUTE PROCEDURE _prtrigger(); -- -- Name: quheadtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER quheadtrigger BEFORE INSERT OR DELETE OR UPDATE ON quhead FOR EACH ROW EXECUTE PROCEDURE _quheadtrigger(); -- -- Name: quitemaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER quitemaftertrigger AFTER INSERT OR UPDATE ON quitem FOR EACH ROW EXECUTE PROCEDURE _quitemaftertrigger(); -- -- Name: quitembeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER quitembeforetrigger BEFORE INSERT OR UPDATE ON quitem FOR EACH ROW EXECUTE PROCEDURE _quitembeforetrigger(); -- -- Name: quitemtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER quitemtrigger BEFORE INSERT OR DELETE OR UPDATE ON quitem FOR EACH ROW EXECUTE PROCEDURE _quitemtrigger(); -- -- Name: recuraftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER recuraftertrigger AFTER DELETE ON recur FOR EACH ROW EXECUTE PROCEDURE _recuraftertrigger(); -- -- Name: reporttrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER reporttrigger BEFORE INSERT OR UPDATE ON report FOR EACH ROW EXECUTE PROCEDURE _reporttrigger(); -- -- Name: salesrepafterdeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER salesrepafterdeletetrigger AFTER DELETE ON salesrep FOR EACH ROW EXECUTE PROCEDURE _salesrepafterdeletetrigger(); -- -- Name: salesrepaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER salesrepaftertrigger AFTER INSERT OR UPDATE ON salesrep FOR EACH ROW EXECUTE PROCEDURE _salesrepaftertrigger(); -- -- Name: salesrepbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER salesrepbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON salesrep FOR EACH ROW EXECUTE PROCEDURE _salesrepbeforetrigger(); -- -- Name: saletypebeforedeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER saletypebeforedeletetrigger BEFORE DELETE ON saletype FOR EACH ROW EXECUTE PROCEDURE _saletypebeforedeletetrigger(); -- -- Name: shipdatasumtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER shipdatasumtrigger BEFORE INSERT OR UPDATE ON shipdatasum FOR EACH ROW EXECUTE PROCEDURE _shipdatasumtrigger(); -- -- Name: shipdatatrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER shipdatatrigger BEFORE INSERT OR UPDATE ON shipdata FOR EACH ROW EXECUTE PROCEDURE _shipdatatrigger(); -- -- Name: shipformafterdeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER shipformafterdeletetrigger AFTER DELETE ON shipform FOR EACH ROW EXECUTE PROCEDURE _shipformafterdeletetrigger(); -- -- Name: shipheadbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER shipheadbeforetrigger BEFORE INSERT OR UPDATE ON shiphead FOR EACH ROW EXECUTE PROCEDURE _shipheadbeforetrigger(); -- -- Name: shiptoinfoaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER shiptoinfoaftertrigger AFTER INSERT OR UPDATE ON shiptoinfo FOR EACH ROW EXECUTE PROCEDURE _shiptoinfoaftertrigger(); -- -- Name: shipviaafterdeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER shipviaafterdeletetrigger AFTER DELETE ON shipvia FOR EACH ROW EXECUTE PROCEDURE _shipviaafterdeletetrigger(); -- -- Name: sltransaltertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER sltransaltertrigger BEFORE DELETE OR UPDATE ON sltrans FOR EACH ROW EXECUTE PROCEDURE _sltransaltertrigger(); -- -- Name: sltransinserttrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER sltransinserttrigger BEFORE INSERT ON sltrans FOR EACH ROW EXECUTE PROCEDURE _sltransinserttrigger(); -- -- Name: soheadtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER soheadtrigger BEFORE INSERT OR DELETE OR UPDATE ON cohead FOR EACH ROW EXECUTE PROCEDURE _soheadtrigger(); -- -- Name: soheadtriggerafter; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER soheadtriggerafter AFTER UPDATE ON cohead FOR EACH ROW EXECUTE PROCEDURE _soheadtriggerafter(); -- -- Name: soitemafterdeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER soitemafterdeletetrigger AFTER DELETE ON coitem FOR EACH ROW EXECUTE PROCEDURE _soitemafterdeletetrigger(); -- -- Name: soitemaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER soitemaftertrigger AFTER INSERT OR UPDATE ON coitem FOR EACH ROW EXECUTE PROCEDURE _soitemaftertrigger(); -- -- Name: soitembeforedeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER soitembeforedeletetrigger BEFORE DELETE ON coitem FOR EACH ROW EXECUTE PROCEDURE _soitembeforedeletetrigger(); -- -- Name: soitembeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER soitembeforetrigger BEFORE INSERT OR UPDATE ON coitem FOR EACH ROW EXECUTE PROCEDURE _soitembeforetrigger(); -- -- Name: soitemtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER soitemtrigger BEFORE INSERT OR UPDATE ON coitem FOR EACH ROW EXECUTE PROCEDURE _soitemtrigger(); -- -- Name: taxauthafterdeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER taxauthafterdeletetrigger AFTER DELETE ON taxauth FOR EACH ROW EXECUTE PROCEDURE _taxauthafterdeletetrigger(); -- -- Name: taxauthaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER taxauthaftertrigger AFTER INSERT OR UPDATE ON taxauth FOR EACH ROW EXECUTE PROCEDURE _taxauthaftertrigger(); -- -- Name: taxauthbeforedeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER taxauthbeforedeletetrigger BEFORE DELETE ON taxauth FOR EACH ROW EXECUTE PROCEDURE _taxauthbeforedeletetrigger(); -- -- Name: taxauthbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER taxauthbeforetrigger BEFORE INSERT OR UPDATE ON taxauth FOR EACH ROW EXECUTE PROCEDURE _taxauthbeforetrigger(); -- -- Name: termsafterdeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER termsafterdeletetrigger AFTER DELETE ON terms FOR EACH ROW EXECUTE PROCEDURE _termsafterdeletetrigger(); -- -- Name: todoitemtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER todoitemtrigger BEFORE DELETE ON todoitem FOR EACH ROW EXECUTE PROCEDURE _todoitemtrigger(); -- -- Name: uomconvupdate; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER uomconvupdate BEFORE UPDATE ON uomconv FOR EACH ROW EXECUTE PROCEDURE _uomconvupdate(); -- -- Name: usrprefaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER usrprefaftertrigger AFTER INSERT OR DELETE OR UPDATE ON usrpref FOR EACH ROW EXECUTE PROCEDURE _usrprefaftertrigger(); -- -- Name: usrprefbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER usrprefbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON usrpref FOR EACH ROW EXECUTE PROCEDURE _usrprefbeforetrigger(); -- -- Name: usrprivtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER usrprivtrigger BEFORE INSERT OR UPDATE ON usrpriv FOR EACH ROW EXECUTE PROCEDURE _usrprivtrigger(); -- -- Name: vendaddrtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER vendaddrtrigger BEFORE INSERT OR DELETE OR UPDATE ON vendaddrinfo FOR EACH ROW EXECUTE PROCEDURE _vendaddrtrigger(); -- -- Name: vendaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER vendaftertrigger AFTER INSERT OR UPDATE ON vendinfo FOR EACH ROW EXECUTE PROCEDURE _vendaftertrigger(); -- -- Name: vendinfoafterdeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER vendinfoafterdeletetrigger AFTER DELETE ON vendinfo FOR EACH ROW EXECUTE PROCEDURE _vendinfoafterdeletetrigger(); -- -- Name: vendinfobeforedeletetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER vendinfobeforedeletetrigger BEFORE DELETE ON vendinfo FOR EACH ROW EXECUTE PROCEDURE _vendinfobeforedeletetrigger(); -- -- Name: vendtrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER vendtrigger BEFORE INSERT OR UPDATE ON vendinfo FOR EACH ROW EXECUTE PROCEDURE _vendtrigger(); -- -- Name: vodistaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER vodistaftertrigger AFTER INSERT OR DELETE OR UPDATE ON vodist FOR EACH ROW EXECUTE PROCEDURE _vodistaftertrigger(); -- -- Name: vodistbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER vodistbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON vodist FOR EACH ROW EXECUTE PROCEDURE _vodistbeforetrigger(); -- -- Name: voheadaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER voheadaftertrigger AFTER INSERT OR DELETE OR UPDATE ON vohead FOR EACH ROW EXECUTE PROCEDURE _voheadaftertrigger(); -- -- Name: voheadbeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER voheadbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON vohead FOR EACH ROW EXECUTE PROCEDURE _voheadbeforetrigger(); -- -- Name: voitemaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER voitemaftertrigger AFTER INSERT OR DELETE OR UPDATE ON voitem FOR EACH ROW EXECUTE PROCEDURE _voitemaftertrigger(); -- -- Name: voitembeforetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER voitembeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON voitem FOR EACH ROW EXECUTE PROCEDURE _voitembeforetrigger(); -- -- Name: warehoustrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER warehoustrigger BEFORE INSERT OR UPDATE ON whsinfo FOR EACH ROW EXECUTE PROCEDURE _warehoustrigger(); -- -- Name: whsezonetrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER whsezonetrigger BEFORE INSERT OR UPDATE ON whsezone FOR EACH ROW EXECUTE PROCEDURE _whsezonetrigger(); -- -- Name: womatlaftertrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER womatlaftertrigger AFTER INSERT OR DELETE OR UPDATE ON womatl FOR EACH ROW EXECUTE PROCEDURE _womatlaftertrigger(); -- -- Name: wotrigger; Type: TRIGGER; Schema: public; Owner: admin -- CREATE TRIGGER wotrigger BEFORE INSERT OR DELETE OR UPDATE ON wo FOR EACH ROW EXECUTE PROCEDURE _wotrigger(); SET search_path = te, pg_catalog; -- -- Name: pkgcmdaftertrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgcmdaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgcmd FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdaftertrigger(); -- -- Name: pkgcmdaltertrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgcmdaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmd FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdaltertrigger(); -- -- Name: pkgcmdargaftertrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgcmdargaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgcmdarg FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdargaftertrigger(); -- -- Name: pkgcmdargaltertrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgcmdargaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmdarg FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdargaltertrigger(); -- -- Name: pkgcmdargbeforetrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgcmdargbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmdarg FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdargbeforetrigger(); -- -- Name: pkgcmdbeforetrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgcmdbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmd FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdbeforetrigger(); -- -- Name: pkgimageaftertrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgimageaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgimage FOR EACH ROW EXECUTE PROCEDURE public._pkgimageaftertrigger(); -- -- Name: pkgimagealtertrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgimagealtertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgimage FOR EACH ROW EXECUTE PROCEDURE public._pkgimagealtertrigger(); -- -- Name: pkgimagebeforetrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgimagebeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgimage FOR EACH ROW EXECUTE PROCEDURE public._pkgimagebeforetrigger(); -- -- Name: pkgmetasqlaftertrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgmetasqlaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgmetasql FOR EACH ROW EXECUTE PROCEDURE public._pkgmetasqlaftertrigger(); -- -- Name: pkgmetasqlaltertrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgmetasqlaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgmetasql FOR EACH ROW EXECUTE PROCEDURE public._pkgmetasqlaltertrigger(); -- -- Name: pkgmetasqlbeforetrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgmetasqlbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgmetasql FOR EACH ROW EXECUTE PROCEDURE public._pkgmetasqlbeforetrigger(); -- -- Name: pkgprivaftertrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgprivaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgpriv FOR EACH ROW EXECUTE PROCEDURE public._pkgprivaftertrigger(); -- -- Name: pkgprivaltertrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgprivaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgpriv FOR EACH ROW EXECUTE PROCEDURE public._pkgprivaltertrigger(); -- -- Name: pkgprivbeforetrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgprivbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgpriv FOR EACH ROW EXECUTE PROCEDURE public._pkgprivbeforetrigger(); -- -- Name: pkgreportaftertrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgreportaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgreport FOR EACH ROW EXECUTE PROCEDURE public._pkgreportaftertrigger(); -- -- Name: pkgreportaltertrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgreportaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgreport FOR EACH ROW EXECUTE PROCEDURE public._pkgreportaltertrigger(); -- -- Name: pkgreportbeforetrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgreportbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgreport FOR EACH ROW EXECUTE PROCEDURE public._pkgreportbeforetrigger(); -- -- Name: pkgscriptaftertrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgscriptaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgscript FOR EACH ROW EXECUTE PROCEDURE public._pkgscriptaftertrigger(); -- -- Name: pkgscriptaltertrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgscriptaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgscript FOR EACH ROW EXECUTE PROCEDURE public._pkgscriptaltertrigger(); -- -- Name: pkgscriptbeforetrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkgscriptbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgscript FOR EACH ROW EXECUTE PROCEDURE public._pkgscriptbeforetrigger(); -- -- Name: pkguiformaftertrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkguiformaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkguiform FOR EACH ROW EXECUTE PROCEDURE public._pkguiformaftertrigger(); -- -- Name: pkguiformaltertrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkguiformaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkguiform FOR EACH ROW EXECUTE PROCEDURE public._pkguiformaltertrigger(); -- -- Name: pkguiformbeforetrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER pkguiformbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkguiform FOR EACH ROW EXECUTE PROCEDURE public._pkguiformbeforetrigger(); -- -- Name: teheadtrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER teheadtrigger AFTER INSERT OR UPDATE ON tehead FOR EACH ROW EXECUTE PROCEDURE triggertehead(); -- -- Name: teitemtrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER teitemtrigger AFTER INSERT OR DELETE OR UPDATE ON teitem FOR EACH ROW EXECUTE PROCEDURE triggerteitem(); -- -- Name: teprjtrigger; Type: TRIGGER; Schema: te; Owner: admin -- CREATE TRIGGER teprjtrigger AFTER INSERT OR UPDATE ON teprj FOR EACH ROW EXECUTE PROCEDURE triggerteprj(); SET search_path = xtdesktop, pg_catalog; -- -- Name: pkgcmdaftertrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgcmdaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgcmd FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdaftertrigger(); -- -- Name: pkgcmdaltertrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgcmdaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmd FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdaltertrigger(); -- -- Name: pkgcmdargaftertrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgcmdargaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgcmdarg FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdargaftertrigger(); -- -- Name: pkgcmdargaltertrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgcmdargaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmdarg FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdargaltertrigger(); -- -- Name: pkgcmdargbeforetrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgcmdargbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmdarg FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdargbeforetrigger(); -- -- Name: pkgcmdbeforetrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgcmdbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmd FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdbeforetrigger(); -- -- Name: pkgimageaftertrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgimageaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgimage FOR EACH ROW EXECUTE PROCEDURE public._pkgimageaftertrigger(); -- -- Name: pkgimagealtertrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgimagealtertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgimage FOR EACH ROW EXECUTE PROCEDURE public._pkgimagealtertrigger(); -- -- Name: pkgimagebeforetrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgimagebeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgimage FOR EACH ROW EXECUTE PROCEDURE public._pkgimagebeforetrigger(); -- -- Name: pkgmetasqlaftertrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgmetasqlaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgmetasql FOR EACH ROW EXECUTE PROCEDURE public._pkgmetasqlaftertrigger(); -- -- Name: pkgmetasqlaltertrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgmetasqlaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgmetasql FOR EACH ROW EXECUTE PROCEDURE public._pkgmetasqlaltertrigger(); -- -- Name: pkgmetasqlbeforetrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgmetasqlbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgmetasql FOR EACH ROW EXECUTE PROCEDURE public._pkgmetasqlbeforetrigger(); -- -- Name: pkgprivaftertrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgprivaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgpriv FOR EACH ROW EXECUTE PROCEDURE public._pkgprivaftertrigger(); -- -- Name: pkgprivaltertrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgprivaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgpriv FOR EACH ROW EXECUTE PROCEDURE public._pkgprivaltertrigger(); -- -- Name: pkgprivbeforetrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgprivbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgpriv FOR EACH ROW EXECUTE PROCEDURE public._pkgprivbeforetrigger(); -- -- Name: pkgreportaftertrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgreportaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgreport FOR EACH ROW EXECUTE PROCEDURE public._pkgreportaftertrigger(); -- -- Name: pkgreportaltertrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgreportaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgreport FOR EACH ROW EXECUTE PROCEDURE public._pkgreportaltertrigger(); -- -- Name: pkgreportbeforetrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgreportbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgreport FOR EACH ROW EXECUTE PROCEDURE public._pkgreportbeforetrigger(); -- -- Name: pkgscriptaftertrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgscriptaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgscript FOR EACH ROW EXECUTE PROCEDURE public._pkgscriptaftertrigger(); -- -- Name: pkgscriptaltertrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgscriptaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgscript FOR EACH ROW EXECUTE PROCEDURE public._pkgscriptaltertrigger(); -- -- Name: pkgscriptbeforetrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkgscriptbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgscript FOR EACH ROW EXECUTE PROCEDURE public._pkgscriptbeforetrigger(); -- -- Name: pkguiformaftertrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkguiformaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkguiform FOR EACH ROW EXECUTE PROCEDURE public._pkguiformaftertrigger(); -- -- Name: pkguiformaltertrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkguiformaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkguiform FOR EACH ROW EXECUTE PROCEDURE public._pkguiformaltertrigger(); -- -- Name: pkguiformbeforetrigger; Type: TRIGGER; Schema: xtdesktop; Owner: admin -- CREATE TRIGGER pkguiformbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkguiform FOR EACH ROW EXECUTE PROCEDURE public._pkguiformbeforetrigger(); SET search_path = fixcountry, pg_catalog; -- -- Name: pkgcmdarg_cmdarg_cmd_id_fkey; Type: FK CONSTRAINT; Schema: fixcountry; Owner: admin -- ALTER TABLE ONLY pkgcmdarg ADD CONSTRAINT pkgcmdarg_cmdarg_cmd_id_fkey FOREIGN KEY (cmdarg_cmd_id) REFERENCES pkgcmd(cmd_id); SET search_path = public, pg_catalog; -- -- Name: accnt_accnt_company_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY accnt ADD CONSTRAINT accnt_accnt_company_fkey FOREIGN KEY (accnt_company) REFERENCES company(company_number) ON UPDATE CASCADE; -- -- Name: accnt_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY accnt ADD CONSTRAINT accnt_to_curr_symbol FOREIGN KEY (accnt_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: apapply_apapply_checkhead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY apapply ADD CONSTRAINT apapply_apapply_checkhead_id_fkey FOREIGN KEY (apapply_checkhead_id) REFERENCES checkhead(checkhead_id); -- -- Name: apapply_apapply_vend_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY apapply ADD CONSTRAINT apapply_apapply_vend_id_fkey FOREIGN KEY (apapply_vend_id) REFERENCES vendinfo(vend_id); -- -- Name: apapply_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY apapply ADD CONSTRAINT apapply_to_curr_symbol FOREIGN KEY (apapply_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: apcreditapply_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY apcreditapply ADD CONSTRAINT apcreditapply_curr_symbol FOREIGN KEY (apcreditapply_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: apopen_apopen_vend_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY apopen ADD CONSTRAINT apopen_apopen_vend_id_fkey FOREIGN KEY (apopen_vend_id) REFERENCES vendinfo(vend_id); -- -- Name: apopen_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY apopen ADD CONSTRAINT apopen_to_curr_symbol FOREIGN KEY (apopen_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: apopentax_taxhist_basis_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY apopentax ADD CONSTRAINT apopentax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); -- -- Name: apopentax_taxhist_parent_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY apopentax ADD CONSTRAINT apopentax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES apopen(apopen_id) ON DELETE CASCADE; -- -- Name: apopentax_taxhist_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY apopentax ADD CONSTRAINT apopentax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); -- -- Name: apopentax_taxhist_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY apopentax ADD CONSTRAINT apopentax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: apselect_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY apselect ADD CONSTRAINT apselect_to_curr_symbol FOREIGN KEY (apselect_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: arapply_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY arapply ADD CONSTRAINT arapply_to_curr_symbol FOREIGN KEY (arapply_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: arcreditapply_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY arcreditapply ADD CONSTRAINT arcreditapply_curr_symbol FOREIGN KEY (arcreditapply_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: aropen_aropen_cust_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY aropen ADD CONSTRAINT aropen_aropen_cust_id_fkey FOREIGN KEY (aropen_cust_id) REFERENCES custinfo(cust_id); -- -- Name: aropen_aropen_salesrep_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY aropen ADD CONSTRAINT aropen_aropen_salesrep_id_fkey FOREIGN KEY (aropen_salesrep_id) REFERENCES salesrep(salesrep_id); -- -- Name: aropen_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY aropen ADD CONSTRAINT aropen_to_curr_symbol FOREIGN KEY (aropen_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: aropentax_taxhist_basis_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY aropentax ADD CONSTRAINT aropentax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); -- -- Name: aropentax_taxhist_parent_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY aropentax ADD CONSTRAINT aropentax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES aropen(aropen_id) ON DELETE CASCADE; -- -- Name: aropentax_taxhist_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY aropentax ADD CONSTRAINT aropentax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); -- -- Name: aropentax_taxhist_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY aropentax ADD CONSTRAINT aropentax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: asohist_asohist_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY asohist ADD CONSTRAINT asohist_asohist_taxtype_id_fkey FOREIGN KEY (asohist_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: asohist_asohist_taxzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY asohist ADD CONSTRAINT asohist_asohist_taxzone_id_fkey FOREIGN KEY (asohist_taxzone_id) REFERENCES taxzone(taxzone_id); -- -- Name: asohist_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY asohist ADD CONSTRAINT asohist_to_curr_symbol FOREIGN KEY (asohist_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: asohisttax_taxhist_basis_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY asohisttax ADD CONSTRAINT asohisttax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); -- -- Name: asohisttax_taxhist_parent_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY asohisttax ADD CONSTRAINT asohisttax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES asohist(asohist_id) ON DELETE CASCADE; -- -- Name: asohisttax_taxhist_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY asohisttax ADD CONSTRAINT asohisttax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); -- -- Name: asohisttax_taxhist_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY asohisttax ADD CONSTRAINT asohisttax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: bankaccnt_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY bankaccnt ADD CONSTRAINT bankaccnt_to_curr_symbol FOREIGN KEY (bankaccnt_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: bankadj_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY bankadj ADD CONSTRAINT bankadj_to_curr_symbol FOREIGN KEY (bankadj_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: bomhead_bomhead_item_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY bomhead ADD CONSTRAINT bomhead_bomhead_item_id_fkey FOREIGN KEY (bomhead_item_id) REFERENCES item(item_id) ON UPDATE RESTRICT ON DELETE CASCADE; -- -- Name: bomitem_bomitem_char_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY bomitem ADD CONSTRAINT bomitem_bomitem_char_id_fkey FOREIGN KEY (bomitem_char_id) REFERENCES "char"(char_id); -- -- Name: bomitem_bomitem_item_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY bomitem ADD CONSTRAINT bomitem_bomitem_item_id_fkey FOREIGN KEY (bomitem_item_id) REFERENCES item(item_id); -- -- Name: bomitem_bomitem_parent_item_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY bomitem ADD CONSTRAINT bomitem_bomitem_parent_item_id_fkey FOREIGN KEY (bomitem_parent_item_id) REFERENCES item(item_id) ON UPDATE RESTRICT ON DELETE CASCADE; -- -- Name: bomitem_bomitem_uom_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY bomitem ADD CONSTRAINT bomitem_bomitem_uom_id_fkey FOREIGN KEY (bomitem_uom_id) REFERENCES uom(uom_id); -- -- Name: bomitemcost_bomitemcost_bomitem_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY bomitemcost ADD CONSTRAINT bomitemcost_bomitemcost_bomitem_id_fkey FOREIGN KEY (bomitemcost_bomitem_id) REFERENCES bomitem(bomitem_id); -- -- Name: bomitemcost_bomitemcost_costelem_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY bomitemcost ADD CONSTRAINT bomitemcost_bomitemcost_costelem_id_fkey FOREIGN KEY (bomitemcost_costelem_id) REFERENCES costelem(costelem_id); -- -- Name: bomitemcost_bomitemcost_curr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY bomitemcost ADD CONSTRAINT bomitemcost_bomitemcost_curr_id_fkey FOREIGN KEY (bomitemcost_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: bomitemsub_bomitemsub_bomitem_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY bomitemsub ADD CONSTRAINT bomitemsub_bomitemsub_bomitem_id_fkey FOREIGN KEY (bomitemsub_bomitem_id) REFERENCES bomitem(bomitem_id) ON UPDATE RESTRICT ON DELETE CASCADE; -- -- Name: bomitemsub_bomitemsub_item_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY bomitemsub ADD CONSTRAINT bomitemsub_bomitemsub_item_id_fkey FOREIGN KEY (bomitemsub_item_id) REFERENCES item(item_id) ON UPDATE RESTRICT ON DELETE CASCADE; -- -- Name: bomwork_bomwork_char_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY bomwork ADD CONSTRAINT bomwork_bomwork_char_id_fkey FOREIGN KEY (bomwork_char_id) REFERENCES "char"(char_id); -- -- Name: budgitem_budgitem_budghead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY budgitem ADD CONSTRAINT budgitem_budgitem_budghead_id_fkey FOREIGN KEY (budgitem_budghead_id) REFERENCES budghead(budghead_id); -- -- Name: budgitem_budgitem_period_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY budgitem ADD CONSTRAINT budgitem_budgitem_period_id_fkey FOREIGN KEY (budgitem_period_id) REFERENCES period(period_id); -- -- Name: cashrcpt_bankaccnt_bankaccnt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cashrcpt ADD CONSTRAINT cashrcpt_bankaccnt_bankaccnt_id_fkey FOREIGN KEY (cashrcpt_bankaccnt_id) REFERENCES bankaccnt(bankaccnt_id); -- -- Name: cashrcpt_cust_cust_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cashrcpt ADD CONSTRAINT cashrcpt_cust_cust_id_fkey FOREIGN KEY (cashrcpt_cust_id) REFERENCES custinfo(cust_id); -- -- Name: cashrcpt_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cashrcpt ADD CONSTRAINT cashrcpt_to_curr_symbol FOREIGN KEY (cashrcpt_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: cashrcptitem_aropen_aropen_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cashrcptitem ADD CONSTRAINT cashrcptitem_aropen_aropen_id_fkey FOREIGN KEY (cashrcptitem_aropen_id) REFERENCES aropen(aropen_id); -- -- Name: cashrcptitem_cashrcpt_cashrcpt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cashrcptitem ADD CONSTRAINT cashrcptitem_cashrcpt_cashrcpt_id_fkey FOREIGN KEY (cashrcptitem_cashrcpt_id) REFERENCES cashrcpt(cashrcpt_id); -- -- Name: cashrcptmisc_accnt_accnt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cashrcptmisc ADD CONSTRAINT cashrcptmisc_accnt_accnt_id_fkey FOREIGN KEY (cashrcptmisc_accnt_id) REFERENCES accnt(accnt_id); -- -- Name: cashrcptmisc_cashrcpt_cashrcpt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cashrcptmisc ADD CONSTRAINT cashrcptmisc_cashrcpt_cashrcpt_id_fkey FOREIGN KEY (cashrcptmisc_cashrcpt_id) REFERENCES cashrcpt(cashrcpt_id); -- -- Name: ccard_ccard_cust_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ccard ADD CONSTRAINT ccard_ccard_cust_id_fkey FOREIGN KEY (ccard_cust_id) REFERENCES custinfo(cust_id); -- -- Name: ccbank_ccbank_bankaccnt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ccbank ADD CONSTRAINT ccbank_ccbank_bankaccnt_id_fkey FOREIGN KEY (ccbank_bankaccnt_id) REFERENCES bankaccnt(bankaccnt_id); -- -- Name: charopt_charopt_char_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY charopt ADD CONSTRAINT charopt_charopt_char_id_fkey FOREIGN KEY (charopt_char_id) REFERENCES "char"(char_id) ON DELETE CASCADE; -- -- Name: checkhead_checkhead_bankaccnt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY checkhead ADD CONSTRAINT checkhead_checkhead_bankaccnt_id_fkey FOREIGN KEY (checkhead_bankaccnt_id) REFERENCES bankaccnt(bankaccnt_id); -- -- Name: checkhead_checkhead_curr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY checkhead ADD CONSTRAINT checkhead_checkhead_curr_id_fkey FOREIGN KEY (checkhead_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: checkhead_checkhead_expcat_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY checkhead ADD CONSTRAINT checkhead_checkhead_expcat_id_fkey FOREIGN KEY (checkhead_expcat_id) REFERENCES expcat(expcat_id); -- -- Name: checkitem_checkitem_apopen_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY checkitem ADD CONSTRAINT checkitem_checkitem_apopen_id_fkey FOREIGN KEY (checkitem_apopen_id) REFERENCES apopen(apopen_id); -- -- Name: checkitem_checkitem_aropen_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY checkitem ADD CONSTRAINT checkitem_checkitem_aropen_id_fkey FOREIGN KEY (checkitem_aropen_id) REFERENCES aropen(aropen_id); -- -- Name: checkitem_checkitem_checkhead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY checkitem ADD CONSTRAINT checkitem_checkitem_checkhead_id_fkey FOREIGN KEY (checkitem_checkhead_id) REFERENCES checkhead(checkhead_id); -- -- Name: checkitem_checkitem_curr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY checkitem ADD CONSTRAINT checkitem_checkitem_curr_id_fkey FOREIGN KEY (checkitem_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: cmdarg_cmdarg_cmd_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmdarg ADD CONSTRAINT cmdarg_cmdarg_cmd_id_fkey FOREIGN KEY (cmdarg_cmd_id) REFERENCES cmd(cmd_id) ON DELETE CASCADE; -- -- Name: cmhead_cmhead_cust_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_cmhead_cust_id_fkey FOREIGN KEY (cmhead_cust_id) REFERENCES custinfo(cust_id); -- -- Name: cmhead_cmhead_freighttaxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_cmhead_freighttaxtype_id_fkey FOREIGN KEY (cmhead_freighttaxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: cmhead_cmhead_prj_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_cmhead_prj_id_fkey FOREIGN KEY (cmhead_prj_id) REFERENCES prj(prj_id); -- -- Name: cmhead_cmhead_salesrep_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_cmhead_salesrep_id_fkey FOREIGN KEY (cmhead_salesrep_id) REFERENCES salesrep(salesrep_id); -- -- Name: cmhead_cmhead_saletype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_cmhead_saletype_id_fkey FOREIGN KEY (cmhead_saletype_id) REFERENCES saletype(saletype_id); -- -- Name: cmhead_cmhead_shipzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_cmhead_shipzone_id_fkey FOREIGN KEY (cmhead_shipzone_id) REFERENCES shipzone(shipzone_id); -- -- Name: cmhead_cmhead_taxzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_cmhead_taxzone_id_fkey FOREIGN KEY (cmhead_taxzone_id) REFERENCES taxzone(taxzone_id); -- -- Name: cmhead_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_to_curr_symbol FOREIGN KEY (cmhead_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: cmheadtax_taxhist_basis_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmheadtax ADD CONSTRAINT cmheadtax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); -- -- Name: cmheadtax_taxhist_parent_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmheadtax ADD CONSTRAINT cmheadtax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES cmhead(cmhead_id) ON DELETE CASCADE; -- -- Name: cmheadtax_taxhist_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmheadtax ADD CONSTRAINT cmheadtax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); -- -- Name: cmheadtax_taxhist_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmheadtax ADD CONSTRAINT cmheadtax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: cmitem_cmhead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmitem ADD CONSTRAINT cmitem_cmhead_id_fkey FOREIGN KEY (cmitem_cmhead_id) REFERENCES cmhead(cmhead_id) ON UPDATE CASCADE ON DELETE CASCADE; -- -- Name: cmitem_cmitem_price_uom_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmitem ADD CONSTRAINT cmitem_cmitem_price_uom_id_fkey FOREIGN KEY (cmitem_price_uom_id) REFERENCES uom(uom_id); -- -- Name: cmitem_cmitem_qty_uom_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmitem ADD CONSTRAINT cmitem_cmitem_qty_uom_id_fkey FOREIGN KEY (cmitem_qty_uom_id) REFERENCES uom(uom_id); -- -- Name: cmitem_cmitem_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmitem ADD CONSTRAINT cmitem_cmitem_taxtype_id_fkey FOREIGN KEY (cmitem_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: cmitemtax_taxhist_basis_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmitemtax ADD CONSTRAINT cmitemtax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); -- -- Name: cmitemtax_taxhist_parent_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmitemtax ADD CONSTRAINT cmitemtax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES cmitem(cmitem_id) ON DELETE CASCADE; -- -- Name: cmitemtax_taxhist_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmitemtax ADD CONSTRAINT cmitemtax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); -- -- Name: cmitemtax_taxhist_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cmitemtax ADD CONSTRAINT cmitemtax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: cntct_cntct_addr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cntct ADD CONSTRAINT cntct_cntct_addr_id_fkey FOREIGN KEY (cntct_addr_id) REFERENCES addr(addr_id); -- -- Name: cntct_cntct_crmacct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cntct ADD CONSTRAINT cntct_cntct_crmacct_id_fkey FOREIGN KEY (cntct_crmacct_id) REFERENCES crmacct(crmacct_id); -- -- Name: cntctaddr_cntctaddr_addr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cntctaddr ADD CONSTRAINT cntctaddr_cntctaddr_addr_id_fkey FOREIGN KEY (cntctaddr_addr_id) REFERENCES addr(addr_id); -- -- Name: cntctaddr_cntctaddr_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cntctaddr ADD CONSTRAINT cntctaddr_cntctaddr_cntct_id_fkey FOREIGN KEY (cntctaddr_cntct_id) REFERENCES cntct(cntct_id) ON DELETE CASCADE; -- -- Name: cntctdata_cntctdata_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cntctdata ADD CONSTRAINT cntctdata_cntctdata_cntct_id_fkey FOREIGN KEY (cntctdata_cntct_id) REFERENCES cntct(cntct_id) ON DELETE CASCADE; -- -- Name: cntcteml_cntcteml_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cntcteml ADD CONSTRAINT cntcteml_cntcteml_cntct_id_fkey FOREIGN KEY (cntcteml_cntct_id) REFERENCES cntct(cntct_id) ON DELETE CASCADE; -- -- Name: cntctmrgd_cntctmrgd_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cntctmrgd ADD CONSTRAINT cntctmrgd_cntctmrgd_cntct_id_fkey FOREIGN KEY (cntctmrgd_cntct_id) REFERENCES cntct(cntct_id) ON DELETE CASCADE; -- -- Name: cntctsel_cntctsel_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cntctsel ADD CONSTRAINT cntctsel_cntctsel_cntct_id_fkey FOREIGN KEY (cntctsel_cntct_id) REFERENCES cntct(cntct_id) ON DELETE CASCADE; -- -- Name: cobill_cobill_invcitem_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cobill ADD CONSTRAINT cobill_cobill_invcitem_id_fkey FOREIGN KEY (cobill_invcitem_id) REFERENCES invcitem(invcitem_id); -- -- Name: cobill_cobill_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cobill ADD CONSTRAINT cobill_cobill_taxtype_id_fkey FOREIGN KEY (cobill_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: cobilltax_taxhist_basis_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cobilltax ADD CONSTRAINT cobilltax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); -- -- Name: cobilltax_taxhist_parent_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cobilltax ADD CONSTRAINT cobilltax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES cobill(cobill_id) ON DELETE CASCADE; -- -- Name: cobilltax_taxhist_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cobilltax ADD CONSTRAINT cobilltax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); -- -- Name: cobilltax_taxhist_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cobilltax ADD CONSTRAINT cobilltax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: cobmisc_cobmisc_invchead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cobmisc ADD CONSTRAINT cobmisc_cobmisc_invchead_id_fkey FOREIGN KEY (cobmisc_invchead_id) REFERENCES invchead(invchead_id); -- -- Name: cobmisc_cobmisc_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cobmisc ADD CONSTRAINT cobmisc_cobmisc_taxtype_id_fkey FOREIGN KEY (cobmisc_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: cobmisc_cobmisc_taxzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cobmisc ADD CONSTRAINT cobmisc_cobmisc_taxzone_id_fkey FOREIGN KEY (cobmisc_taxzone_id) REFERENCES taxzone(taxzone_id); -- -- Name: cobmisc_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cobmisc ADD CONSTRAINT cobmisc_to_curr_symbol FOREIGN KEY (cobmisc_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: cobmisctax_taxhist_basis_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cobmisctax ADD CONSTRAINT cobmisctax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); -- -- Name: cobmisctax_taxhist_parent_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cobmisctax ADD CONSTRAINT cobmisctax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES cobmisc(cobmisc_id) ON DELETE CASCADE; -- -- Name: cobmisctax_taxhist_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cobmisctax ADD CONSTRAINT cobmisctax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); -- -- Name: cobmisctax_taxhist_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cobmisctax ADD CONSTRAINT cobmisctax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: cohead_cohead_billto_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_billto_cntct_id_fkey FOREIGN KEY (cohead_billto_cntct_id) REFERENCES cntct(cntct_id); -- -- Name: cohead_cohead_cust_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_cust_id_fkey FOREIGN KEY (cohead_cust_id) REFERENCES custinfo(cust_id); -- -- Name: cohead_cohead_misc_accnt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_misc_accnt_id_fkey FOREIGN KEY (cohead_misc_accnt_id) REFERENCES accnt(accnt_id); -- -- Name: cohead_cohead_ophead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_ophead_id_fkey FOREIGN KEY (cohead_ophead_id) REFERENCES ophead(ophead_id); -- -- Name: cohead_cohead_prj_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_prj_id_fkey FOREIGN KEY (cohead_prj_id) REFERENCES prj(prj_id); -- -- Name: cohead_cohead_salesrep_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_salesrep_id_fkey FOREIGN KEY (cohead_salesrep_id) REFERENCES salesrep(salesrep_id); -- -- Name: cohead_cohead_saletype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_saletype_id_fkey FOREIGN KEY (cohead_saletype_id) REFERENCES saletype(saletype_id); -- -- Name: cohead_cohead_shipform_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_shipform_id_fkey FOREIGN KEY (cohead_shipform_id) REFERENCES shipform(shipform_id); -- -- Name: cohead_cohead_shipto_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_shipto_cntct_id_fkey FOREIGN KEY (cohead_shipto_cntct_id) REFERENCES cntct(cntct_id); -- -- Name: cohead_cohead_shipto_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_shipto_id_fkey FOREIGN KEY (cohead_shipto_id) REFERENCES shiptoinfo(shipto_id); -- -- Name: cohead_cohead_shipzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_shipzone_id_fkey FOREIGN KEY (cohead_shipzone_id) REFERENCES shipzone(shipzone_id); -- -- Name: cohead_cohead_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_taxtype_id_fkey FOREIGN KEY (cohead_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: cohead_cohead_taxzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_taxzone_id_fkey FOREIGN KEY (cohead_taxzone_id) REFERENCES taxzone(taxzone_id); -- -- Name: cohead_cohead_terms_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_terms_id_fkey FOREIGN KEY (cohead_terms_id) REFERENCES terms(terms_id); -- -- Name: cohead_cohead_warehous_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_warehous_id_fkey FOREIGN KEY (cohead_warehous_id) REFERENCES whsinfo(warehous_id); -- -- Name: cohead_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohead ADD CONSTRAINT cohead_to_curr_symbol FOREIGN KEY (cohead_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: cohist_cohist_cohead_ccpay_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohist ADD CONSTRAINT cohist_cohist_cohead_ccpay_id_fkey FOREIGN KEY (cohist_cohead_ccpay_id) REFERENCES ccpay(ccpay_id); -- -- Name: cohist_cohist_cust_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohist ADD CONSTRAINT cohist_cohist_cust_id_fkey FOREIGN KEY (cohist_cust_id) REFERENCES custinfo(cust_id); -- -- Name: cohist_cohist_salesrep_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohist ADD CONSTRAINT cohist_cohist_salesrep_id_fkey FOREIGN KEY (cohist_salesrep_id) REFERENCES salesrep(salesrep_id); -- -- Name: cohist_cohist_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohist ADD CONSTRAINT cohist_cohist_taxtype_id_fkey FOREIGN KEY (cohist_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: cohist_cohist_taxzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohist ADD CONSTRAINT cohist_cohist_taxzone_id_fkey FOREIGN KEY (cohist_taxzone_id) REFERENCES taxzone(taxzone_id); -- -- Name: cohist_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohist ADD CONSTRAINT cohist_to_curr_symbol FOREIGN KEY (cohist_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: cohisttax_taxhist_basis_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohisttax ADD CONSTRAINT cohisttax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); -- -- Name: cohisttax_taxhist_parent_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohisttax ADD CONSTRAINT cohisttax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES cohist(cohist_id) ON DELETE CASCADE; -- -- Name: cohisttax_taxhist_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohisttax ADD CONSTRAINT cohisttax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); -- -- Name: cohisttax_taxhist_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY cohisttax ADD CONSTRAINT cohisttax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: coitem_coitem_cohead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY coitem ADD CONSTRAINT coitem_coitem_cohead_id_fkey FOREIGN KEY (coitem_cohead_id) REFERENCES cohead(cohead_id) ON DELETE CASCADE; -- -- Name: coitem_coitem_cos_accnt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY coitem ADD CONSTRAINT coitem_coitem_cos_accnt_id_fkey FOREIGN KEY (coitem_cos_accnt_id) REFERENCES accnt(accnt_id); -- -- Name: coitem_coitem_itemsite_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY coitem ADD CONSTRAINT coitem_coitem_itemsite_id_fkey FOREIGN KEY (coitem_itemsite_id) REFERENCES itemsite(itemsite_id); -- -- Name: coitem_coitem_price_uom_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY coitem ADD CONSTRAINT coitem_coitem_price_uom_id_fkey FOREIGN KEY (coitem_price_uom_id) REFERENCES uom(uom_id); -- -- Name: coitem_coitem_qty_uom_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY coitem ADD CONSTRAINT coitem_coitem_qty_uom_id_fkey FOREIGN KEY (coitem_qty_uom_id) REFERENCES uom(uom_id); -- -- Name: coitem_coitem_rev_accnt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY coitem ADD CONSTRAINT coitem_coitem_rev_accnt_id_fkey FOREIGN KEY (coitem_rev_accnt_id) REFERENCES accnt(accnt_id); -- -- Name: coitem_coitem_substitute_item_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY coitem ADD CONSTRAINT coitem_coitem_substitute_item_id_fkey FOREIGN KEY (coitem_substitute_item_id) REFERENCES item(item_id); -- -- Name: coitem_coitem_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY coitem ADD CONSTRAINT coitem_coitem_taxtype_id_fkey FOREIGN KEY (coitem_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: comment_comment_cmnttype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY comment ADD CONSTRAINT comment_comment_cmnttype_id_fkey FOREIGN KEY (comment_cmnttype_id) REFERENCES cmnttype(cmnttype_id); -- -- Name: company_company_curr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY company ADD CONSTRAINT company_company_curr_id_fkey FOREIGN KEY (company_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: company_company_dscrp_accnt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY company ADD CONSTRAINT company_company_dscrp_accnt_id_fkey FOREIGN KEY (company_dscrp_accnt_id) REFERENCES accnt(accnt_id); -- -- Name: company_company_gainloss_accnt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY company ADD CONSTRAINT company_company_gainloss_accnt_id_fkey FOREIGN KEY (company_gainloss_accnt_id) REFERENCES accnt(accnt_id); -- -- Name: company_company_unrlzgainloss_accnt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY company ADD CONSTRAINT company_company_unrlzgainloss_accnt_id_fkey FOREIGN KEY (company_unrlzgainloss_accnt_id) REFERENCES accnt(accnt_id); -- -- Name: company_company_yearend_accnt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY company ADD CONSTRAINT company_company_yearend_accnt_id_fkey FOREIGN KEY (company_yearend_accnt_id) REFERENCES accnt(accnt_id); -- -- Name: contrct_contrct_vend_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY contrct ADD CONSTRAINT contrct_contrct_vend_id_fkey FOREIGN KEY (contrct_vend_id) REFERENCES vendinfo(vend_id); -- -- Name: costhist_new_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY costhist ADD CONSTRAINT costhist_new_to_curr_symbol FOREIGN KEY (costhist_newcurr_id) REFERENCES curr_symbol(curr_id); -- -- Name: costhist_old_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY costhist ADD CONSTRAINT costhist_old_to_curr_symbol FOREIGN KEY (costhist_oldcurr_id) REFERENCES curr_symbol(curr_id); -- -- Name: crmacct_crmacct_cntct_id_1_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_cntct_id_1_fkey FOREIGN KEY (crmacct_cntct_id_1) REFERENCES cntct(cntct_id); -- -- Name: crmacct_crmacct_cntct_id_2_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_cntct_id_2_fkey FOREIGN KEY (crmacct_cntct_id_2) REFERENCES cntct(cntct_id); -- -- Name: crmacct_crmacct_cust_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_cust_id_fkey FOREIGN KEY (crmacct_cust_id) REFERENCES custinfo(cust_id); -- -- Name: crmacct_crmacct_emp_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_emp_id_fkey FOREIGN KEY (crmacct_emp_id) REFERENCES emp(emp_id); -- -- Name: crmacct_crmacct_parent_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_parent_id_fkey FOREIGN KEY (crmacct_parent_id) REFERENCES crmacct(crmacct_id); -- -- Name: crmacct_crmacct_prospect_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_prospect_id_fkey FOREIGN KEY (crmacct_prospect_id) REFERENCES prospect(prospect_id); -- -- Name: crmacct_crmacct_salesrep_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_salesrep_id_fkey FOREIGN KEY (crmacct_salesrep_id) REFERENCES salesrep(salesrep_id); -- -- Name: crmacct_crmacct_taxauth_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_taxauth_id_fkey FOREIGN KEY (crmacct_taxauth_id) REFERENCES taxauth(taxauth_id); -- -- Name: crmacct_crmacct_vend_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_vend_id_fkey FOREIGN KEY (crmacct_vend_id) REFERENCES vendinfo(vend_id); -- -- Name: crmacctsel_crmacctsel_dest_crmacct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY crmacctsel ADD CONSTRAINT crmacctsel_crmacctsel_dest_crmacct_id_fkey FOREIGN KEY (crmacctsel_dest_crmacct_id) REFERENCES crmacct(crmacct_id) ON DELETE CASCADE; -- -- Name: crmacctsel_crmacctsel_src_crmacct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY crmacctsel ADD CONSTRAINT crmacctsel_crmacctsel_src_crmacct_id_fkey FOREIGN KEY (crmacctsel_src_crmacct_id) REFERENCES crmacct(crmacct_id) ON DELETE CASCADE; -- -- Name: curr_rate_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY curr_rate ADD CONSTRAINT curr_rate_to_curr_symbol FOREIGN KEY (curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: cust_creditlmt_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY custinfo ADD CONSTRAINT cust_creditlmt_to_curr_symbol FOREIGN KEY (cust_creditlmt_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: cust_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY custinfo ADD CONSTRAINT cust_to_curr_symbol FOREIGN KEY (cust_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: custinfo_cust_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY custinfo ADD CONSTRAINT custinfo_cust_cntct_id_fkey FOREIGN KEY (cust_cntct_id) REFERENCES cntct(cntct_id); -- -- Name: custinfo_cust_corrcntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY custinfo ADD CONSTRAINT custinfo_cust_corrcntct_id_fkey FOREIGN KEY (cust_corrcntct_id) REFERENCES cntct(cntct_id); -- -- Name: custinfo_cust_custtype_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY custinfo ADD CONSTRAINT custinfo_cust_custtype_fkey FOREIGN KEY (cust_custtype_id) REFERENCES custtype(custtype_id) ON UPDATE RESTRICT ON DELETE RESTRICT; -- -- Name: custinfo_cust_salesrep_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY custinfo ADD CONSTRAINT custinfo_cust_salesrep_fkey FOREIGN KEY (cust_salesrep_id) REFERENCES salesrep(salesrep_id) ON UPDATE RESTRICT ON DELETE RESTRICT; -- -- Name: custinfo_cust_shipform_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY custinfo ADD CONSTRAINT custinfo_cust_shipform_fkey FOREIGN KEY (cust_shipform_id) REFERENCES shipform(shipform_id) ON UPDATE RESTRICT ON DELETE RESTRICT; -- -- Name: custinfo_cust_taxzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY custinfo ADD CONSTRAINT custinfo_cust_taxzone_id_fkey FOREIGN KEY (cust_taxzone_id) REFERENCES taxzone(taxzone_id); -- -- Name: custinfo_cust_terms_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY custinfo ADD CONSTRAINT custinfo_cust_terms_fkey FOREIGN KEY (cust_terms_id) REFERENCES terms(terms_id) ON UPDATE RESTRICT ON DELETE RESTRICT; -- -- Name: emp_emp_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY emp ADD CONSTRAINT emp_emp_cntct_id_fkey FOREIGN KEY (emp_cntct_id) REFERENCES cntct(cntct_id); -- -- Name: emp_emp_dept_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY emp ADD CONSTRAINT emp_emp_dept_id_fkey FOREIGN KEY (emp_dept_id) REFERENCES dept(dept_id); -- -- Name: emp_emp_image_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY emp ADD CONSTRAINT emp_emp_image_id_fkey FOREIGN KEY (emp_image_id) REFERENCES image(image_id); -- -- Name: emp_emp_mgr_emp_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY emp ADD CONSTRAINT emp_emp_mgr_emp_id_fkey FOREIGN KEY (emp_mgr_emp_id) REFERENCES emp(emp_id); -- -- Name: emp_emp_shift_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY emp ADD CONSTRAINT emp_emp_shift_id_fkey FOREIGN KEY (emp_shift_id) REFERENCES shift(shift_id); -- -- Name: emp_emp_wage_curr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY emp ADD CONSTRAINT emp_emp_wage_curr_id_fkey FOREIGN KEY (emp_wage_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: emp_emp_warehous_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY emp ADD CONSTRAINT emp_emp_warehous_id_fkey FOREIGN KEY (emp_warehous_id) REFERENCES whsinfo(warehous_id); -- -- Name: empgrpitem_empgrpitem_emp_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY empgrpitem ADD CONSTRAINT empgrpitem_empgrpitem_emp_id_fkey FOREIGN KEY (empgrpitem_emp_id) REFERENCES emp(emp_id); -- -- Name: empgrpitem_empgrpitem_empgrp_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY empgrpitem ADD CONSTRAINT empgrpitem_empgrpitem_empgrp_id_fkey FOREIGN KEY (empgrpitem_empgrp_id) REFERENCES empgrp(empgrp_id); -- -- Name: flnotes_flnotes_flhead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY flnotes ADD CONSTRAINT flnotes_flnotes_flhead_id_fkey FOREIGN KEY (flnotes_flhead_id) REFERENCES flhead(flhead_id) ON DELETE CASCADE; -- -- Name: flnotes_flnotes_period_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY flnotes ADD CONSTRAINT flnotes_flnotes_period_id_fkey FOREIGN KEY (flnotes_period_id) REFERENCES period(period_id) ON DELETE CASCADE; -- -- Name: grppriv_grppriv_grp_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY grppriv ADD CONSTRAINT grppriv_grppriv_grp_id_fkey FOREIGN KEY (grppriv_grp_id) REFERENCES grp(grp_id); -- -- Name: incdt_incdt_aropen_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_aropen_id_fkey FOREIGN KEY (incdt_aropen_id) REFERENCES aropen(aropen_id); -- -- Name: incdt_incdt_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_cntct_id_fkey FOREIGN KEY (incdt_cntct_id) REFERENCES cntct(cntct_id); -- -- Name: incdt_incdt_crmacct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_crmacct_id_fkey FOREIGN KEY (incdt_crmacct_id) REFERENCES crmacct(crmacct_id); -- -- Name: incdt_incdt_incdtcat_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_incdtcat_id_fkey FOREIGN KEY (incdt_incdtcat_id) REFERENCES incdtcat(incdtcat_id); -- -- Name: incdt_incdt_incdtpriority_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_incdtpriority_id_fkey FOREIGN KEY (incdt_incdtpriority_id) REFERENCES incdtpriority(incdtpriority_id); -- -- Name: incdt_incdt_incdtresolution_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_incdtresolution_id_fkey FOREIGN KEY (incdt_incdtresolution_id) REFERENCES incdtresolution(incdtresolution_id); -- -- Name: incdt_incdt_incdtseverity_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_incdtseverity_id_fkey FOREIGN KEY (incdt_incdtseverity_id) REFERENCES incdtseverity(incdtseverity_id); -- -- Name: incdt_incdt_item_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_item_id_fkey FOREIGN KEY (incdt_item_id) REFERENCES item(item_id); -- -- Name: incdt_incdt_prj_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_prj_id_fkey FOREIGN KEY (incdt_prj_id) REFERENCES prj(prj_id); -- -- Name: incdt_incdt_recurring_incdt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_recurring_incdt_id_fkey FOREIGN KEY (incdt_recurring_incdt_id) REFERENCES incdt(incdt_id); -- -- Name: incdthist_incdthist_incdt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY incdthist ADD CONSTRAINT incdthist_incdthist_incdt_id_fkey FOREIGN KEY (incdthist_incdt_id) REFERENCES incdt(incdt_id); -- -- Name: invbal_invbal_itemsite_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invbal ADD CONSTRAINT invbal_invbal_itemsite_id_fkey FOREIGN KEY (invbal_itemsite_id) REFERENCES itemsite(itemsite_id) ON DELETE CASCADE; -- -- Name: invbal_invbal_period_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invbal ADD CONSTRAINT invbal_invbal_period_id_fkey FOREIGN KEY (invbal_period_id) REFERENCES period(period_id) ON DELETE CASCADE; -- -- Name: invchead_invchead_saletype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invchead ADD CONSTRAINT invchead_invchead_saletype_id_fkey FOREIGN KEY (invchead_saletype_id) REFERENCES saletype(saletype_id); -- -- Name: invchead_invchead_shipzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invchead ADD CONSTRAINT invchead_invchead_shipzone_id_fkey FOREIGN KEY (invchead_shipzone_id) REFERENCES shipzone(shipzone_id); -- -- Name: invchead_invchead_taxzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invchead ADD CONSTRAINT invchead_invchead_taxzone_id_fkey FOREIGN KEY (invchead_taxzone_id) REFERENCES taxzone(taxzone_id); -- -- Name: invchead_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invchead ADD CONSTRAINT invchead_to_curr_symbol FOREIGN KEY (invchead_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: invcheadtax_taxhist_basis_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invcheadtax ADD CONSTRAINT invcheadtax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); -- -- Name: invcheadtax_taxhist_parent_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invcheadtax ADD CONSTRAINT invcheadtax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES invchead(invchead_id) ON DELETE CASCADE; -- -- Name: invcheadtax_taxhist_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invcheadtax ADD CONSTRAINT invcheadtax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); -- -- Name: invcheadtax_taxhist_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invcheadtax ADD CONSTRAINT invcheadtax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: invcitem_invchead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invcitem ADD CONSTRAINT invcitem_invchead_id_fkey FOREIGN KEY (invcitem_invchead_id) REFERENCES invchead(invchead_id) ON UPDATE CASCADE ON DELETE CASCADE; -- -- Name: invcitem_invcitem_price_uom_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invcitem ADD CONSTRAINT invcitem_invcitem_price_uom_id_fkey FOREIGN KEY (invcitem_price_uom_id) REFERENCES uom(uom_id); -- -- Name: invcitem_invcitem_qty_uom_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invcitem ADD CONSTRAINT invcitem_invcitem_qty_uom_id_fkey FOREIGN KEY (invcitem_qty_uom_id) REFERENCES uom(uom_id); -- -- Name: invcitem_invcitem_rev_accnt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invcitem ADD CONSTRAINT invcitem_invcitem_rev_accnt_id_fkey FOREIGN KEY (invcitem_rev_accnt_id) REFERENCES accnt(accnt_id); -- -- Name: invcitem_invcitem_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invcitem ADD CONSTRAINT invcitem_invcitem_taxtype_id_fkey FOREIGN KEY (invcitem_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: invcitemtax_taxhist_basis_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invcitemtax ADD CONSTRAINT invcitemtax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); -- -- Name: invcitemtax_taxhist_parent_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invcitemtax ADD CONSTRAINT invcitemtax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES invcitem(invcitem_id) ON DELETE CASCADE; -- -- Name: invcitemtax_taxhist_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invcitemtax ADD CONSTRAINT invcitemtax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); -- -- Name: invcitemtax_taxhist_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invcitemtax ADD CONSTRAINT invcitemtax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: invhistexpcat_invhistexpcat_expcat_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invhistexpcat ADD CONSTRAINT invhistexpcat_invhistexpcat_expcat_id_fkey FOREIGN KEY (invhistexpcat_expcat_id) REFERENCES expcat(expcat_id) ON UPDATE CASCADE ON DELETE CASCADE; -- -- Name: invhistexpcat_invhistexpcat_invhist_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY invhistexpcat ADD CONSTRAINT invhistexpcat_invhistexpcat_invhist_id_fkey FOREIGN KEY (invhistexpcat_invhist_id) REFERENCES invhist(invhist_id) ON UPDATE CASCADE ON DELETE CASCADE; -- -- Name: ipsass_ipsass_ipshead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ipsass ADD CONSTRAINT ipsass_ipsass_ipshead_id_fkey FOREIGN KEY (ipsass_ipshead_id) REFERENCES ipshead(ipshead_id); -- -- Name: ipsfreight_ipsfreight_freightclass_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ipsfreight ADD CONSTRAINT ipsfreight_ipsfreight_freightclass_id_fkey FOREIGN KEY (ipsfreight_freightclass_id) REFERENCES freightclass(freightclass_id); -- -- Name: ipsfreight_ipsfreight_ipshead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ipsfreight ADD CONSTRAINT ipsfreight_ipsfreight_ipshead_id_fkey FOREIGN KEY (ipsfreight_ipshead_id) REFERENCES ipshead(ipshead_id); -- -- Name: ipsfreight_ipsfreight_shipzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ipsfreight ADD CONSTRAINT ipsfreight_ipsfreight_shipzone_id_fkey FOREIGN KEY (ipsfreight_shipzone_id) REFERENCES shipzone(shipzone_id); -- -- Name: ipsfreight_ipsfreight_warehous_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ipsfreight ADD CONSTRAINT ipsfreight_ipsfreight_warehous_id_fkey FOREIGN KEY (ipsfreight_warehous_id) REFERENCES whsinfo(warehous_id); -- -- Name: ipshead_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ipshead ADD CONSTRAINT ipshead_to_curr_symbol FOREIGN KEY (ipshead_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: ipsitem_ipshead_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ipsiteminfo ADD CONSTRAINT ipsitem_ipshead_id_fk FOREIGN KEY (ipsitem_ipshead_id) REFERENCES ipshead(ipshead_id) ON DELETE CASCADE; -- -- Name: ipsitem_ipsitem_price_uom_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ipsiteminfo ADD CONSTRAINT ipsitem_ipsitem_price_uom_id_fkey FOREIGN KEY (ipsitem_price_uom_id) REFERENCES uom(uom_id); -- -- Name: ipsitem_ipsitem_qty_uom_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ipsiteminfo ADD CONSTRAINT ipsitem_ipsitem_qty_uom_id_fkey FOREIGN KEY (ipsitem_qty_uom_id) REFERENCES uom(uom_id); -- -- Name: ipsitem_ipsitem_warehous_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ipsiteminfo ADD CONSTRAINT ipsitem_ipsitem_warehous_id_fkey FOREIGN KEY (ipsitem_warehous_id) REFERENCES whsinfo(warehous_id); -- -- Name: ipsitem_item_id_fk; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ipsiteminfo ADD CONSTRAINT ipsitem_item_id_fk FOREIGN KEY (ipsitem_item_id) REFERENCES item(item_id); -- -- Name: ipsitemchar_ipsitemchar_char_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ipsitemchar ADD CONSTRAINT ipsitemchar_ipsitemchar_char_id_fkey FOREIGN KEY (ipsitemchar_char_id) REFERENCES "char"(char_id); -- -- Name: ipsitemchar_ipsitemchar_ipsitem_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ipsitemchar ADD CONSTRAINT ipsitemchar_ipsitemchar_ipsitem_id_fkey FOREIGN KEY (ipsitemchar_ipsitem_id) REFERENCES ipsiteminfo(ipsitem_id) ON DELETE CASCADE; -- -- Name: item_item_classcode_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY item ADD CONSTRAINT item_item_classcode_id_fkey FOREIGN KEY (item_classcode_id) REFERENCES classcode(classcode_id); -- -- Name: item_item_freightclass_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY item ADD CONSTRAINT item_item_freightclass_id_fkey FOREIGN KEY (item_freightclass_id) REFERENCES freightclass(freightclass_id); -- -- Name: item_item_inv_uom_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY item ADD CONSTRAINT item_item_inv_uom_id_fkey FOREIGN KEY (item_inv_uom_id) REFERENCES uom(uom_id); -- -- Name: item_item_price_uom_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY item ADD CONSTRAINT item_item_price_uom_id_fkey FOREIGN KEY (item_price_uom_id) REFERENCES uom(uom_id); -- -- Name: itemalias_itemalias_item_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemalias ADD CONSTRAINT itemalias_itemalias_item_id_fkey FOREIGN KEY (itemalias_item_id) REFERENCES item(item_id); -- -- Name: itemcost_itemcost_costelem_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemcost ADD CONSTRAINT itemcost_itemcost_costelem_id_fkey FOREIGN KEY (itemcost_costelem_id) REFERENCES costelem(costelem_id); -- -- Name: itemcost_itemcost_curr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemcost ADD CONSTRAINT itemcost_itemcost_curr_id_fkey FOREIGN KEY (itemcost_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: itemcost_itemcost_item_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemcost ADD CONSTRAINT itemcost_itemcost_item_id_fkey FOREIGN KEY (itemcost_item_id) REFERENCES item(item_id); -- -- Name: itemcost_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemcost ADD CONSTRAINT itemcost_to_curr_symbol FOREIGN KEY (itemcost_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: itemsite_itemsite_costcat_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemsite ADD CONSTRAINT itemsite_itemsite_costcat_id_fkey FOREIGN KEY (itemsite_costcat_id) REFERENCES costcat(costcat_id); -- -- Name: itemsite_itemsite_item_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemsite ADD CONSTRAINT itemsite_itemsite_item_id_fkey FOREIGN KEY (itemsite_item_id) REFERENCES item(item_id); -- -- Name: itemsite_itemsite_plancode_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemsite ADD CONSTRAINT itemsite_itemsite_plancode_id_fkey FOREIGN KEY (itemsite_plancode_id) REFERENCES plancode(plancode_id); -- -- Name: itemsite_itemsite_warehous_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemsite ADD CONSTRAINT itemsite_itemsite_warehous_id_fkey FOREIGN KEY (itemsite_warehous_id) REFERENCES whsinfo(warehous_id); -- -- Name: itemsrc_itemsrc_contrct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemsrc ADD CONSTRAINT itemsrc_itemsrc_contrct_id_fkey FOREIGN KEY (itemsrc_contrct_id) REFERENCES contrct(contrct_id); -- -- Name: itemsrc_itemsrc_item_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemsrc ADD CONSTRAINT itemsrc_itemsrc_item_id_fkey FOREIGN KEY (itemsrc_item_id) REFERENCES item(item_id) ON DELETE CASCADE; -- -- Name: itemsrc_itemsrc_vend_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemsrc ADD CONSTRAINT itemsrc_itemsrc_vend_id_fkey FOREIGN KEY (itemsrc_vend_id) REFERENCES vendinfo(vend_id) ON DELETE CASCADE; -- -- Name: itemsrcp_itemsrcp_itemsrc_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemsrcp ADD CONSTRAINT itemsrcp_itemsrcp_itemsrc_id_fkey FOREIGN KEY (itemsrcp_itemsrc_id) REFERENCES itemsrc(itemsrc_id) ON DELETE CASCADE; -- -- Name: itemsrcp_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemsrcp ADD CONSTRAINT itemsrcp_to_curr_symbol FOREIGN KEY (itemsrcp_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: itemsub_itemsub_parent_item_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemsub ADD CONSTRAINT itemsub_itemsub_parent_item_id_fkey FOREIGN KEY (itemsub_parent_item_id) REFERENCES item(item_id); -- -- Name: itemsub_itemsub_sub_item_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemsub ADD CONSTRAINT itemsub_itemsub_sub_item_id_fkey FOREIGN KEY (itemsub_sub_item_id) REFERENCES item(item_id); -- -- Name: itemtax_itemtax_item_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemtax ADD CONSTRAINT itemtax_itemtax_item_id_fkey FOREIGN KEY (itemtax_item_id) REFERENCES item(item_id); -- -- Name: itemtax_itemtax_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemtax ADD CONSTRAINT itemtax_itemtax_taxtype_id_fkey FOREIGN KEY (itemtax_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: itemtax_itemtax_taxzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemtax ADD CONSTRAINT itemtax_itemtax_taxzone_id_fkey FOREIGN KEY (itemtax_taxzone_id) REFERENCES taxzone(taxzone_id); -- -- Name: itemtrans_itemtrans_source_item_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemtrans ADD CONSTRAINT itemtrans_itemtrans_source_item_id_fkey FOREIGN KEY (itemtrans_source_item_id) REFERENCES item(item_id); -- -- Name: itemtrans_itemtrans_target_item_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemtrans ADD CONSTRAINT itemtrans_itemtrans_target_item_id_fkey FOREIGN KEY (itemtrans_target_item_id) REFERENCES item(item_id); -- -- Name: itemuom_itemuom_itemuomconv_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemuom ADD CONSTRAINT itemuom_itemuom_itemuomconv_id_fkey FOREIGN KEY (itemuom_itemuomconv_id) REFERENCES itemuomconv(itemuomconv_id); -- -- Name: itemuom_itemuom_uomtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemuom ADD CONSTRAINT itemuom_itemuom_uomtype_id_fkey FOREIGN KEY (itemuom_uomtype_id) REFERENCES uomtype(uomtype_id); -- -- Name: itemuomconv_itemuomconv_from_uom_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemuomconv ADD CONSTRAINT itemuomconv_itemuomconv_from_uom_id_fkey FOREIGN KEY (itemuomconv_from_uom_id) REFERENCES uom(uom_id); -- -- Name: itemuomconv_itemuomconv_item_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemuomconv ADD CONSTRAINT itemuomconv_itemuomconv_item_id_fkey FOREIGN KEY (itemuomconv_item_id) REFERENCES item(item_id); -- -- Name: itemuomconv_itemuomconv_to_uom_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY itemuomconv ADD CONSTRAINT itemuomconv_itemuomconv_to_uom_id_fkey FOREIGN KEY (itemuomconv_to_uom_id) REFERENCES uom(uom_id); -- -- Name: mrghist_mrghist_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY mrghist ADD CONSTRAINT mrghist_mrghist_cntct_id_fkey FOREIGN KEY (mrghist_cntct_id) REFERENCES cntct(cntct_id) ON DELETE CASCADE; -- -- Name: ophead_ophead_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ophead ADD CONSTRAINT ophead_ophead_cntct_id_fkey FOREIGN KEY (ophead_cntct_id) REFERENCES cntct(cntct_id); -- -- Name: ophead_ophead_crmacct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ophead ADD CONSTRAINT ophead_ophead_crmacct_id_fkey FOREIGN KEY (ophead_crmacct_id) REFERENCES crmacct(crmacct_id); -- -- Name: ophead_ophead_opsource_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ophead ADD CONSTRAINT ophead_ophead_opsource_id_fkey FOREIGN KEY (ophead_opsource_id) REFERENCES opsource(opsource_id); -- -- Name: ophead_ophead_opstage_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ophead ADD CONSTRAINT ophead_ophead_opstage_id_fkey FOREIGN KEY (ophead_opstage_id) REFERENCES opstage(opstage_id); -- -- Name: ophead_ophead_optype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ophead ADD CONSTRAINT ophead_ophead_optype_id_fkey FOREIGN KEY (ophead_optype_id) REFERENCES optype(optype_id); -- -- Name: ophead_ophead_priority_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY ophead ADD CONSTRAINT ophead_ophead_priority_id_fkey FOREIGN KEY (ophead_priority_id) REFERENCES incdtpriority(incdtpriority_id); -- -- Name: pack_pack_shiphead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY pack ADD CONSTRAINT pack_pack_shiphead_id_fkey FOREIGN KEY (pack_shiphead_id) REFERENCES shiphead(shiphead_id); -- -- Name: payco_payco_ccpay_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY payco ADD CONSTRAINT payco_payco_ccpay_id_fkey FOREIGN KEY (payco_ccpay_id) REFERENCES ccpay(ccpay_id); -- -- Name: payco_payco_cohead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY payco ADD CONSTRAINT payco_payco_cohead_id_fkey FOREIGN KEY (payco_cohead_id) REFERENCES cohead(cohead_id); -- -- Name: pkgdep_pkgdep_parent_pkghead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY pkgdep ADD CONSTRAINT pkgdep_pkgdep_parent_pkghead_id_fkey FOREIGN KEY (pkgdep_parent_pkghead_id) REFERENCES pkghead(pkghead_id); -- -- Name: pkgdep_pkgdep_pkghead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY pkgdep ADD CONSTRAINT pkgdep_pkgdep_pkghead_id_fkey FOREIGN KEY (pkgdep_pkghead_id) REFERENCES pkghead(pkghead_id); -- -- Name: pkgitem_pkgitem_pkghead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY pkgitem ADD CONSTRAINT pkgitem_pkgitem_pkghead_id_fkey FOREIGN KEY (pkgitem_pkghead_id) REFERENCES pkghead(pkghead_id) ON DELETE CASCADE; -- -- Name: pohead_pohead_cohead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_cohead_id_fkey FOREIGN KEY (pohead_cohead_id) REFERENCES cohead(cohead_id) ON DELETE SET NULL; -- -- Name: pohead_pohead_shipto_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_shipto_cntct_id_fkey FOREIGN KEY (pohead_shipto_cntct_id) REFERENCES cntct(cntct_id); -- -- Name: pohead_pohead_shiptoddress_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_shiptoddress_id_fkey FOREIGN KEY (pohead_shiptoaddress_id) REFERENCES addr(addr_id); -- -- Name: pohead_pohead_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_taxtype_id_fkey FOREIGN KEY (pohead_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: pohead_pohead_taxzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_taxzone_id_fkey FOREIGN KEY (pohead_taxzone_id) REFERENCES taxzone(taxzone_id); -- -- Name: pohead_pohead_terms_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_terms_id_fkey FOREIGN KEY (pohead_terms_id) REFERENCES terms(terms_id); -- -- Name: pohead_pohead_vend_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_vend_cntct_id_fkey FOREIGN KEY (pohead_vend_cntct_id) REFERENCES cntct(cntct_id); -- -- Name: pohead_pohead_vend_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_vend_id_fkey FOREIGN KEY (pohead_vend_id) REFERENCES vendinfo(vend_id); -- -- Name: pohead_pohead_vendaddr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_vendaddr_id_fkey FOREIGN KEY (pohead_vendaddr_id) REFERENCES vendaddrinfo(vendaddr_id); -- -- Name: pohead_pohead_warehous_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_warehous_id_fkey FOREIGN KEY (pohead_warehous_id) REFERENCES whsinfo(warehous_id); -- -- Name: pohead_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY pohead ADD CONSTRAINT pohead_to_curr_symbol FOREIGN KEY (pohead_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: poitem_poitem_expcat_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY poitem ADD CONSTRAINT poitem_poitem_expcat_id_fkey FOREIGN KEY (poitem_expcat_id) REFERENCES expcat(expcat_id); -- -- Name: poitem_poitem_itemsite_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY poitem ADD CONSTRAINT poitem_poitem_itemsite_id_fkey FOREIGN KEY (poitem_itemsite_id) REFERENCES itemsite(itemsite_id); -- -- Name: poitem_poitem_itemsrc_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY poitem ADD CONSTRAINT poitem_poitem_itemsrc_id_fkey FOREIGN KEY (poitem_itemsrc_id) REFERENCES itemsrc(itemsrc_id); -- -- Name: poitem_poitem_prj_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY poitem ADD CONSTRAINT poitem_poitem_prj_id_fkey FOREIGN KEY (poitem_prj_id) REFERENCES prj(prj_id); -- -- Name: poitem_poitem_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY poitem ADD CONSTRAINT poitem_poitem_taxtype_id_fkey FOREIGN KEY (poitem_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: poreject_poreject_recv_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY poreject ADD CONSTRAINT poreject_poreject_recv_id_fkey FOREIGN KEY (poreject_recv_id) REFERENCES recv(recv_id); -- -- Name: poreject_poreject_vend_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY poreject ADD CONSTRAINT poreject_poreject_vend_id_fkey FOREIGN KEY (poreject_vend_id) REFERENCES vendinfo(vend_id); -- -- Name: prj_prj_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY prj ADD CONSTRAINT prj_prj_cntct_id_fkey FOREIGN KEY (prj_cntct_id) REFERENCES cntct(cntct_id); -- -- Name: prj_prj_crmacct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY prj ADD CONSTRAINT prj_prj_crmacct_id_fkey FOREIGN KEY (prj_crmacct_id) REFERENCES crmacct(crmacct_id); -- -- Name: prj_prj_recurring_prj_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY prj ADD CONSTRAINT prj_prj_recurring_prj_id_fkey FOREIGN KEY (prj_recurring_prj_id) REFERENCES prj(prj_id); -- -- Name: prjtask_prjtask_prj_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY prjtask ADD CONSTRAINT prjtask_prjtask_prj_id_fkey FOREIGN KEY (prjtask_prj_id) REFERENCES prj(prj_id); -- -- Name: prospect_prospect_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY prospect ADD CONSTRAINT prospect_prospect_cntct_id_fkey FOREIGN KEY (prospect_cntct_id) REFERENCES cntct(cntct_id); -- -- Name: prospect_prospect_salesrep_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY prospect ADD CONSTRAINT prospect_prospect_salesrep_id_fkey FOREIGN KEY (prospect_salesrep_id) REFERENCES salesrep(salesrep_id); -- -- Name: prospect_prospect_taxzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY prospect ADD CONSTRAINT prospect_prospect_taxzone_id_fkey FOREIGN KEY (prospect_taxzone_id) REFERENCES taxzone(taxzone_id); -- -- Name: prospect_prospect_warehous_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY prospect ADD CONSTRAINT prospect_prospect_warehous_id_fkey FOREIGN KEY (prospect_warehous_id) REFERENCES whsinfo(warehous_id); -- -- Name: qryitem_qryitem_qryhead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY qryitem ADD CONSTRAINT qryitem_qryitem_qryhead_id_fkey FOREIGN KEY (qryitem_qryhead_id) REFERENCES qryhead(qryhead_id); -- -- Name: quhead_quhead_billto_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_billto_cntct_id_fkey FOREIGN KEY (quhead_billto_cntct_id) REFERENCES cntct(cntct_id); -- -- Name: quhead_quhead_misc_accnt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_misc_accnt_id_fkey FOREIGN KEY (quhead_misc_accnt_id) REFERENCES accnt(accnt_id); -- -- Name: quhead_quhead_ophead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_ophead_id_fkey FOREIGN KEY (quhead_ophead_id) REFERENCES ophead(ophead_id); -- -- Name: quhead_quhead_prj_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_prj_id_fkey FOREIGN KEY (quhead_prj_id) REFERENCES prj(prj_id); -- -- Name: quhead_quhead_salesrep_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_salesrep_id_fkey FOREIGN KEY (quhead_salesrep_id) REFERENCES salesrep(salesrep_id); -- -- Name: quhead_quhead_saletype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_saletype_id_fkey FOREIGN KEY (quhead_saletype_id) REFERENCES saletype(saletype_id); -- -- Name: quhead_quhead_shipto_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_shipto_cntct_id_fkey FOREIGN KEY (quhead_shipto_cntct_id) REFERENCES cntct(cntct_id); -- -- Name: quhead_quhead_shipto_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_shipto_id_fkey FOREIGN KEY (quhead_shipto_id) REFERENCES shiptoinfo(shipto_id); -- -- Name: quhead_quhead_shipzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_shipzone_id_fkey FOREIGN KEY (quhead_shipzone_id) REFERENCES shipzone(shipzone_id); -- -- Name: quhead_quhead_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_taxtype_id_fkey FOREIGN KEY (quhead_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: quhead_quhead_taxzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_taxzone_id_fkey FOREIGN KEY (quhead_taxzone_id) REFERENCES taxzone(taxzone_id); -- -- Name: quhead_quhead_terms_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_terms_id_fkey FOREIGN KEY (quhead_terms_id) REFERENCES terms(terms_id); -- -- Name: quhead_quhead_warehous_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_warehous_id_fkey FOREIGN KEY (quhead_warehous_id) REFERENCES whsinfo(warehous_id); -- -- Name: quhead_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY quhead ADD CONSTRAINT quhead_to_curr_symbol FOREIGN KEY (quhead_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: quitem_quitem_itemsrc_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY quitem ADD CONSTRAINT quitem_quitem_itemsrc_id_fkey FOREIGN KEY (quitem_itemsrc_id) REFERENCES itemsrc(itemsrc_id); -- -- Name: quitem_quitem_price_uom_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY quitem ADD CONSTRAINT quitem_quitem_price_uom_id_fkey FOREIGN KEY (quitem_price_uom_id) REFERENCES uom(uom_id); -- -- Name: quitem_quitem_qty_uom_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY quitem ADD CONSTRAINT quitem_quitem_qty_uom_id_fkey FOREIGN KEY (quitem_qty_uom_id) REFERENCES uom(uom_id); -- -- Name: quitem_quitem_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY quitem ADD CONSTRAINT quitem_quitem_taxtype_id_fkey FOREIGN KEY (quitem_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: recv_recv_freight_curr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY recv ADD CONSTRAINT recv_recv_freight_curr_id_fkey FOREIGN KEY (recv_freight_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: recv_recv_itemsite_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY recv ADD CONSTRAINT recv_recv_itemsite_id_fkey FOREIGN KEY (recv_itemsite_id) REFERENCES itemsite(itemsite_id); -- -- Name: recv_recv_purchcost_curr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY recv ADD CONSTRAINT recv_recv_purchcost_curr_id_fkey FOREIGN KEY (recv_purchcost_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: recv_recv_recvcost_curr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY recv ADD CONSTRAINT recv_recv_recvcost_curr_id_fkey FOREIGN KEY (recv_recvcost_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: recv_recv_splitfrom_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY recv ADD CONSTRAINT recv_recv_splitfrom_id_fkey FOREIGN KEY (recv_splitfrom_id) REFERENCES recv(recv_id); -- -- Name: recv_recv_vend_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY recv ADD CONSTRAINT recv_recv_vend_id_fkey FOREIGN KEY (recv_vend_id) REFERENCES vendinfo(vend_id); -- -- Name: recv_recv_vohead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY recv ADD CONSTRAINT recv_recv_vohead_id_fkey FOREIGN KEY (recv_vohead_id) REFERENCES vohead(vohead_id); -- -- Name: recv_recv_voitem_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY recv ADD CONSTRAINT recv_recv_voitem_id_fkey FOREIGN KEY (recv_voitem_id) REFERENCES voitem(voitem_id); -- -- Name: salesrep_salesrep_emp_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY salesrep ADD CONSTRAINT salesrep_salesrep_emp_id_fkey FOREIGN KEY (salesrep_emp_id) REFERENCES emp(emp_id); -- -- Name: shipdata_shipdata_base_freight_curr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shipdata ADD CONSTRAINT shipdata_shipdata_base_freight_curr_id_fkey FOREIGN KEY (shipdata_base_freight_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: shipdata_shipdata_shiphead_number_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shipdata ADD CONSTRAINT shipdata_shipdata_shiphead_number_fkey FOREIGN KEY (shipdata_shiphead_number) REFERENCES shiphead(shiphead_number); -- -- Name: shipdata_shipdata_total_freight_curr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shipdata ADD CONSTRAINT shipdata_shipdata_total_freight_curr_id_fkey FOREIGN KEY (shipdata_total_freight_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: shipdatasum_shipdatasum_base_freight_curr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shipdatasum ADD CONSTRAINT shipdatasum_shipdatasum_base_freight_curr_id_fkey FOREIGN KEY (shipdatasum_base_freight_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: shipdatasum_shipdatasum_shiphead_number_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shipdatasum ADD CONSTRAINT shipdatasum_shipdatasum_shiphead_number_fkey FOREIGN KEY (shipdatasum_shiphead_number) REFERENCES shiphead(shiphead_number); -- -- Name: shipdatasum_shipdatasum_total_freight_curr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shipdatasum ADD CONSTRAINT shipdatasum_shipdatasum_total_freight_curr_id_fkey FOREIGN KEY (shipdatasum_total_freight_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: shiphead_shiphead_freight_curr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shiphead ADD CONSTRAINT shiphead_shiphead_freight_curr_id_fkey FOREIGN KEY (shiphead_freight_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: shiphead_shiphead_shipchrg_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shiphead ADD CONSTRAINT shiphead_shiphead_shipchrg_id_fkey FOREIGN KEY (shiphead_shipchrg_id) REFERENCES shipchrg(shipchrg_id); -- -- Name: shiphead_shiphead_shipform_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shiphead ADD CONSTRAINT shiphead_shiphead_shipform_id_fkey FOREIGN KEY (shiphead_shipform_id) REFERENCES shipform(shipform_id); -- -- Name: shipitem_shipitem_invcitem_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shipitem ADD CONSTRAINT shipitem_shipitem_invcitem_id_fkey FOREIGN KEY (shipitem_invcitem_id) REFERENCES invcitem(invcitem_id); -- -- Name: shipitem_shipitem_invhist_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shipitem ADD CONSTRAINT shipitem_shipitem_invhist_id_fkey FOREIGN KEY (shipitem_invhist_id) REFERENCES invhist(invhist_id); -- -- Name: shipitem_shipitem_shiphead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shipitem ADD CONSTRAINT shipitem_shipitem_shiphead_id_fkey FOREIGN KEY (shipitem_shiphead_id) REFERENCES shiphead(shiphead_id); -- -- Name: shiptoinfo_shipto_addr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shiptoinfo_shipto_addr_id_fkey FOREIGN KEY (shipto_addr_id) REFERENCES addr(addr_id); -- -- Name: shiptoinfo_shipto_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shiptoinfo_shipto_cntct_id_fkey FOREIGN KEY (shipto_cntct_id) REFERENCES cntct(cntct_id); -- -- Name: shiptoinfo_shipto_cust_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shiptoinfo_shipto_cust_id_fkey FOREIGN KEY (shipto_cust_id) REFERENCES custinfo(cust_id); -- -- Name: shiptoinfo_shipto_salesrep_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shiptoinfo_shipto_salesrep_fkey FOREIGN KEY (shipto_salesrep_id) REFERENCES salesrep(salesrep_id) ON UPDATE RESTRICT ON DELETE RESTRICT; -- -- Name: shiptoinfo_shipto_salesrep_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shiptoinfo_shipto_salesrep_id_fkey FOREIGN KEY (shipto_salesrep_id) REFERENCES salesrep(salesrep_id); -- -- Name: shiptoinfo_shipto_shipform_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shiptoinfo_shipto_shipform_fkey FOREIGN KEY (shipto_shipform_id) REFERENCES shipform(shipform_id) ON UPDATE RESTRICT ON DELETE RESTRICT; -- -- Name: shiptoinfo_shipto_shipform_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shiptoinfo_shipto_shipform_id_fkey FOREIGN KEY (shipto_shipform_id) REFERENCES shipform(shipform_id); -- -- Name: shiptoinfo_shipto_shipzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shiptoinfo_shipto_shipzone_id_fkey FOREIGN KEY (shipto_shipzone_id) REFERENCES shipzone(shipzone_id); -- -- Name: shiptoinfo_shipto_taxzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shiptoinfo_shipto_taxzone_id_fkey FOREIGN KEY (shipto_taxzone_id) REFERENCES taxzone(taxzone_id); -- -- Name: state_state_country_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY state ADD CONSTRAINT state_state_country_id_fkey FOREIGN KEY (state_country_id) REFERENCES country(country_id); -- -- Name: tax_tax_basis_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY tax ADD CONSTRAINT tax_tax_basis_tax_id_fkey FOREIGN KEY (tax_basis_tax_id) REFERENCES tax(tax_id) ON DELETE CASCADE; -- -- Name: tax_tax_sales_accnt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY tax ADD CONSTRAINT tax_tax_sales_accnt_id_fkey FOREIGN KEY (tax_sales_accnt_id) REFERENCES accnt(accnt_id); -- -- Name: tax_tax_taxauth_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY tax ADD CONSTRAINT tax_tax_taxauth_id_fkey FOREIGN KEY (tax_taxauth_id) REFERENCES taxauth(taxauth_id); -- -- Name: tax_tax_taxclass_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY tax ADD CONSTRAINT tax_tax_taxclass_id_fkey FOREIGN KEY (tax_taxclass_id) REFERENCES taxclass(taxclass_id); -- -- Name: taxass_taxass_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY taxass ADD CONSTRAINT taxass_taxass_tax_id_fkey FOREIGN KEY (taxass_tax_id) REFERENCES tax(tax_id); -- -- Name: taxass_taxass_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY taxass ADD CONSTRAINT taxass_taxass_taxtype_id_fkey FOREIGN KEY (taxass_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: taxass_taxass_taxzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY taxass ADD CONSTRAINT taxass_taxass_taxzone_id_fkey FOREIGN KEY (taxass_taxzone_id) REFERENCES taxzone(taxzone_id); -- -- Name: taxauth_taxauth_accnt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY taxauth ADD CONSTRAINT taxauth_taxauth_accnt_id_fkey FOREIGN KEY (taxauth_accnt_id) REFERENCES accnt(accnt_id); -- -- Name: taxauth_taxauth_addr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY taxauth ADD CONSTRAINT taxauth_taxauth_addr_id_fkey FOREIGN KEY (taxauth_addr_id) REFERENCES addr(addr_id); -- -- Name: taxauth_taxauth_curr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY taxauth ADD CONSTRAINT taxauth_taxauth_curr_id_fkey FOREIGN KEY (taxauth_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: taxhist_taxhist_curr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY taxhist ADD CONSTRAINT taxhist_taxhist_curr_id_fkey FOREIGN KEY (taxhist_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: taxhist_taxhist_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY taxhist ADD CONSTRAINT taxhist_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); -- -- Name: taxhist_taxhist_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY taxhist ADD CONSTRAINT taxhist_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: taxrate_taxrate_curr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY taxrate ADD CONSTRAINT taxrate_taxrate_curr_id_fkey FOREIGN KEY (taxrate_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: taxrate_taxrate_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY taxrate ADD CONSTRAINT taxrate_taxrate_tax_id_fkey FOREIGN KEY (taxrate_tax_id) REFERENCES tax(tax_id); -- -- Name: taxreg_taxreg_taxauth_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY taxreg ADD CONSTRAINT taxreg_taxreg_taxauth_id_fkey FOREIGN KEY (taxreg_taxauth_id) REFERENCES taxauth(taxauth_id); -- -- Name: taxreg_taxreg_taxzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY taxreg ADD CONSTRAINT taxreg_taxreg_taxzone_id_fkey FOREIGN KEY (taxreg_taxzone_id) REFERENCES taxzone(taxzone_id); -- -- Name: todoitem_todoitem_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY todoitem ADD CONSTRAINT todoitem_todoitem_cntct_id_fkey FOREIGN KEY (todoitem_cntct_id) REFERENCES cntct(cntct_id); -- -- Name: todoitem_todoitem_crmacct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY todoitem ADD CONSTRAINT todoitem_todoitem_crmacct_id_fkey FOREIGN KEY (todoitem_crmacct_id) REFERENCES crmacct(crmacct_id); -- -- Name: todoitem_todoitem_incdt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY todoitem ADD CONSTRAINT todoitem_todoitem_incdt_id_fkey FOREIGN KEY (todoitem_incdt_id) REFERENCES incdt(incdt_id); -- -- Name: todoitem_todoitem_ophead_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY todoitem ADD CONSTRAINT todoitem_todoitem_ophead_id_fkey FOREIGN KEY (todoitem_ophead_id) REFERENCES ophead(ophead_id) ON UPDATE RESTRICT ON DELETE RESTRICT; -- -- Name: todoitem_todoitem_recurring_todoitem_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY todoitem ADD CONSTRAINT todoitem_todoitem_recurring_todoitem_id_fkey FOREIGN KEY (todoitem_recurring_todoitem_id) REFERENCES todoitem(todoitem_id); -- -- Name: trgthist_trgthist_src_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY trgthist ADD CONSTRAINT trgthist_trgthist_src_cntct_id_fkey FOREIGN KEY (trgthist_src_cntct_id) REFERENCES cntctmrgd(cntctmrgd_cntct_id) ON DELETE CASCADE; -- -- Name: trgthist_trgthist_trgt_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY trgthist ADD CONSTRAINT trgthist_trgthist_trgt_cntct_id_fkey FOREIGN KEY (trgthist_trgt_cntct_id) REFERENCES cntct(cntct_id) ON DELETE CASCADE; -- -- Name: uomconv_uomconv_from_uom_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY uomconv ADD CONSTRAINT uomconv_uomconv_from_uom_id_fkey FOREIGN KEY (uomconv_from_uom_id) REFERENCES uom(uom_id); -- -- Name: uomconv_uomconv_to_uom_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY uomconv ADD CONSTRAINT uomconv_uomconv_to_uom_id_fkey FOREIGN KEY (uomconv_to_uom_id) REFERENCES uom(uom_id); -- -- Name: usrgrp_usrgrp_grp_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY usrgrp ADD CONSTRAINT usrgrp_usrgrp_grp_id_fkey FOREIGN KEY (usrgrp_grp_id) REFERENCES grp(grp_id); -- -- Name: vend_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY vendinfo ADD CONSTRAINT vend_to_curr_symbol FOREIGN KEY (vend_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: vend_vend_cntct1_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY vendinfo ADD CONSTRAINT vend_vend_cntct1_id_fkey FOREIGN KEY (vend_cntct1_id) REFERENCES cntct(cntct_id); -- -- Name: vend_vend_cntct2_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY vendinfo ADD CONSTRAINT vend_vend_cntct2_id_fkey FOREIGN KEY (vend_cntct2_id) REFERENCES cntct(cntct_id); -- -- Name: vendaddrinfo_vendaddr_addr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY vendaddrinfo ADD CONSTRAINT vendaddrinfo_vendaddr_addr_id_fkey FOREIGN KEY (vendaddr_addr_id) REFERENCES addr(addr_id); -- -- Name: vendaddrinfo_vendaddr_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY vendaddrinfo ADD CONSTRAINT vendaddrinfo_vendaddr_cntct_id_fkey FOREIGN KEY (vendaddr_cntct_id) REFERENCES cntct(cntct_id); -- -- Name: vendaddrinfo_vendaddr_taxzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY vendaddrinfo ADD CONSTRAINT vendaddrinfo_vendaddr_taxzone_id_fkey FOREIGN KEY (vendaddr_taxzone_id) REFERENCES taxzone(taxzone_id); -- -- Name: vendinfo_vend_addr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY vendinfo ADD CONSTRAINT vendinfo_vend_addr_id_fkey FOREIGN KEY (vend_addr_id) REFERENCES addr(addr_id); -- -- Name: vendinfo_vend_taxzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY vendinfo ADD CONSTRAINT vendinfo_vend_taxzone_id_fkey FOREIGN KEY (vend_taxzone_id) REFERENCES taxzone(taxzone_id); -- -- Name: vendinfo_vend_vendtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY vendinfo ADD CONSTRAINT vendinfo_vend_vendtype_id_fkey FOREIGN KEY (vend_vendtype_id) REFERENCES vendtype(vendtype_id); -- -- Name: vohead_to_curr_symbol; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY vohead ADD CONSTRAINT vohead_to_curr_symbol FOREIGN KEY (vohead_curr_id) REFERENCES curr_symbol(curr_id); -- -- Name: vohead_vohead_adjtaxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY vohead ADD CONSTRAINT vohead_vohead_adjtaxtype_id_fkey FOREIGN KEY (vohead_adjtaxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: vohead_vohead_freighttaxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY vohead ADD CONSTRAINT vohead_vohead_freighttaxtype_id_fkey FOREIGN KEY (vohead_freighttaxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: vohead_vohead_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY vohead ADD CONSTRAINT vohead_vohead_taxtype_id_fkey FOREIGN KEY (vohead_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: vohead_vohead_taxzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY vohead ADD CONSTRAINT vohead_vohead_taxzone_id_fkey FOREIGN KEY (vohead_taxzone_id) REFERENCES taxzone(taxzone_id); -- -- Name: vohead_vohead_vend_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY vohead ADD CONSTRAINT vohead_vohead_vend_id_fkey FOREIGN KEY (vohead_vend_id) REFERENCES vendinfo(vend_id); -- -- Name: voheadtax_taxhist_basis_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY voheadtax ADD CONSTRAINT voheadtax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); -- -- Name: voheadtax_taxhist_parent_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY voheadtax ADD CONSTRAINT voheadtax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES vohead(vohead_id) ON DELETE CASCADE; -- -- Name: voheadtax_taxhist_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY voheadtax ADD CONSTRAINT voheadtax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); -- -- Name: voheadtax_taxhist_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY voheadtax ADD CONSTRAINT voheadtax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: voitem_voitem_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY voitem ADD CONSTRAINT voitem_voitem_taxtype_id_fkey FOREIGN KEY (voitem_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: voitemtax_taxhist_basis_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY voitemtax ADD CONSTRAINT voitemtax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); -- -- Name: voitemtax_taxhist_parent_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY voitemtax ADD CONSTRAINT voitemtax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES voitem(voitem_id) ON DELETE CASCADE; -- -- Name: voitemtax_taxhist_tax_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY voitemtax ADD CONSTRAINT voitemtax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); -- -- Name: voitemtax_taxhist_taxtype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY voitemtax ADD CONSTRAINT voitemtax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); -- -- Name: whsinfo_warehous_accnt_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY whsinfo ADD CONSTRAINT whsinfo_warehous_accnt_id_fkey FOREIGN KEY (warehous_default_accnt_id) REFERENCES accnt(accnt_id); -- -- Name: whsinfo_warehous_addr_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY whsinfo ADD CONSTRAINT whsinfo_warehous_addr_id_fkey FOREIGN KEY (warehous_addr_id) REFERENCES addr(addr_id); -- -- Name: whsinfo_warehous_cntct_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY whsinfo ADD CONSTRAINT whsinfo_warehous_cntct_id_fkey FOREIGN KEY (warehous_cntct_id) REFERENCES cntct(cntct_id); -- -- Name: whsinfo_warehous_costcat_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY whsinfo ADD CONSTRAINT whsinfo_warehous_costcat_id_fkey FOREIGN KEY (warehous_costcat_id) REFERENCES costcat(costcat_id); -- -- Name: whsinfo_warehous_shipform_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY whsinfo ADD CONSTRAINT whsinfo_warehous_shipform_id_fkey FOREIGN KEY (warehous_shipform_id) REFERENCES shipform(shipform_id); -- -- Name: whsinfo_warehous_shipvia_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY whsinfo ADD CONSTRAINT whsinfo_warehous_shipvia_id_fkey FOREIGN KEY (warehous_shipvia_id) REFERENCES shipvia(shipvia_id); -- -- Name: whsinfo_warehous_sitetype_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY whsinfo ADD CONSTRAINT whsinfo_warehous_sitetype_id_fkey FOREIGN KEY (warehous_sitetype_id) REFERENCES sitetype(sitetype_id); -- -- Name: whsinfo_warehous_taxzone_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY whsinfo ADD CONSTRAINT whsinfo_warehous_taxzone_id_fkey FOREIGN KEY (warehous_taxzone_id) REFERENCES taxzone(taxzone_id); -- -- Name: wo_wo_womatl_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY wo ADD CONSTRAINT wo_wo_womatl_id_fkey FOREIGN KEY (wo_womatl_id) REFERENCES womatl(womatl_id) ON DELETE SET NULL; -- -- Name: womatl_womatl_uom_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY womatl ADD CONSTRAINT womatl_womatl_uom_id_fkey FOREIGN KEY (womatl_uom_id) REFERENCES uom(uom_id); -- -- Name: womatlpost_womatlpost_invhist_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY womatlpost ADD CONSTRAINT womatlpost_womatlpost_invhist_id_fkey FOREIGN KEY (womatlpost_invhist_id) REFERENCES invhist(invhist_id); -- -- Name: womatlpost_womatlpost_womatl_id_fkey; Type: FK CONSTRAINT; Schema: public; Owner: admin -- ALTER TABLE ONLY womatlpost ADD CONSTRAINT womatlpost_womatlpost_womatl_id_fkey FOREIGN KEY (womatlpost_womatl_id) REFERENCES womatl(womatl_id) ON DELETE CASCADE; SET search_path = te, pg_catalog; -- -- Name: pkgcmdarg_cmdarg_cmd_id_fkey; Type: FK CONSTRAINT; Schema: te; Owner: admin -- ALTER TABLE ONLY pkgcmdarg ADD CONSTRAINT pkgcmdarg_cmdarg_cmd_id_fkey FOREIGN KEY (cmdarg_cmd_id) REFERENCES pkgcmd(cmd_id); -- -- Name: tecustrate_tecustrate_curr_id_fkey; Type: FK CONSTRAINT; Schema: te; Owner: admin -- ALTER TABLE ONLY tecustrate ADD CONSTRAINT tecustrate_tecustrate_curr_id_fkey FOREIGN KEY (tecustrate_curr_id) REFERENCES public.curr_symbol(curr_id) ON DELETE SET DEFAULT; -- -- Name: tecustrate_tecustrate_cust_id_fkey; Type: FK CONSTRAINT; Schema: te; Owner: admin -- ALTER TABLE ONLY tecustrate ADD CONSTRAINT tecustrate_tecustrate_cust_id_fkey FOREIGN KEY (tecustrate_cust_id) REFERENCES public.custinfo(cust_id) ON DELETE CASCADE; -- -- Name: teemp_teemp_emp_id_fkey; Type: FK CONSTRAINT; Schema: te; Owner: admin -- ALTER TABLE ONLY teemp ADD CONSTRAINT teemp_teemp_emp_id_fkey FOREIGN KEY (teemp_emp_id) REFERENCES public.emp(emp_id) ON DELETE CASCADE; -- -- Name: teitem_teitem_curr_id_fkey; Type: FK CONSTRAINT; Schema: te; Owner: admin -- ALTER TABLE ONLY teitem ADD CONSTRAINT teitem_teitem_curr_id_fkey FOREIGN KEY (teitem_curr_id) REFERENCES public.curr_symbol(curr_id) ON DELETE SET DEFAULT; -- -- Name: teitem_teitem_invcitem_id_fkey; Type: FK CONSTRAINT; Schema: te; Owner: admin -- ALTER TABLE ONLY teitem ADD CONSTRAINT teitem_teitem_invcitem_id_fkey FOREIGN KEY (teitem_invcitem_id) REFERENCES public.invcitem(invcitem_id) ON DELETE SET NULL; -- -- Name: teitem_teitem_tehead_id_fkey; Type: FK CONSTRAINT; Schema: te; Owner: admin -- ALTER TABLE ONLY teitem ADD CONSTRAINT teitem_teitem_tehead_id_fkey FOREIGN KEY (teitem_tehead_id) REFERENCES tehead(tehead_id) ON DELETE CASCADE; -- -- Name: teitem_teitem_vodist_id_fkey; Type: FK CONSTRAINT; Schema: te; Owner: admin -- ALTER TABLE ONLY teitem ADD CONSTRAINT teitem_teitem_vodist_id_fkey FOREIGN KEY (teitem_vodist_id) REFERENCES public.vodist(vodist_id) ON DELETE SET NULL; -- -- Name: teprj_teprj_curr_id_fkey; Type: FK CONSTRAINT; Schema: te; Owner: admin -- ALTER TABLE ONLY teprj ADD CONSTRAINT teprj_teprj_curr_id_fkey FOREIGN KEY (teprj_curr_id) REFERENCES public.curr_symbol(curr_id) ON DELETE SET NULL; -- -- Name: teprj_teprj_cust_id_fkey; Type: FK CONSTRAINT; Schema: te; Owner: admin -- ALTER TABLE ONLY teprj ADD CONSTRAINT teprj_teprj_cust_id_fkey FOREIGN KEY (teprj_cust_id) REFERENCES public.custinfo(cust_id) ON DELETE SET NULL; -- -- Name: teprjtask_teprjtask_curr_id_fkey; Type: FK CONSTRAINT; Schema: te; Owner: admin -- ALTER TABLE ONLY teprjtask ADD CONSTRAINT teprjtask_teprjtask_curr_id_fkey FOREIGN KEY (teprjtask_curr_id) REFERENCES public.curr_symbol(curr_id) ON DELETE SET DEFAULT; -- -- Name: teprjtask_teprjtask_item_id_fkey; Type: FK CONSTRAINT; Schema: te; Owner: admin -- ALTER TABLE ONLY teprjtask ADD CONSTRAINT teprjtask_teprjtask_item_id_fkey FOREIGN KEY (teprjtask_item_id) REFERENCES public.item(item_id) ON DELETE SET NULL; -- -- Name: teprjtask_teprjtask_prjtask_id_fkey; Type: FK CONSTRAINT; Schema: te; Owner: admin -- ALTER TABLE ONLY teprjtask ADD CONSTRAINT teprjtask_teprjtask_prjtask_id_fkey FOREIGN KEY (teprjtask_prjtask_id) REFERENCES public.prjtask(prjtask_id) ON DELETE CASCADE; SET search_path = xtdesktop, pg_catalog; -- -- Name: pkgcmdarg_cmdarg_cmd_id_fkey; Type: FK CONSTRAINT; Schema: xtdesktop; Owner: admin -- ALTER TABLE ONLY pkgcmdarg ADD CONSTRAINT pkgcmdarg_cmdarg_cmd_id_fkey FOREIGN KEY (cmdarg_cmd_id) REFERENCES pkgcmd(cmd_id); -- -- Name: api; Type: ACL; Schema: -; Owner: admin -- REVOKE ALL ON SCHEMA api FROM PUBLIC; REVOKE ALL ON SCHEMA api FROM admin; GRANT ALL ON SCHEMA api TO admin; GRANT ALL ON SCHEMA api TO xtrole; -- -- Name: fixcountry; Type: ACL; Schema: -; Owner: admin -- REVOKE ALL ON SCHEMA fixcountry FROM PUBLIC; REVOKE ALL ON SCHEMA fixcountry FROM admin; GRANT ALL ON SCHEMA fixcountry TO admin; GRANT ALL ON SCHEMA fixcountry TO xtrole; -- -- Name: public; Type: ACL; Schema: -; Owner: postgres -- REVOKE ALL ON SCHEMA public FROM PUBLIC; REVOKE ALL ON SCHEMA public FROM postgres; GRANT ALL ON SCHEMA public TO postgres; GRANT ALL ON SCHEMA public TO PUBLIC; -- -- Name: te; Type: ACL; Schema: -; Owner: admin -- REVOKE ALL ON SCHEMA te FROM PUBLIC; REVOKE ALL ON SCHEMA te FROM admin; GRANT ALL ON SCHEMA te TO admin; GRANT ALL ON SCHEMA te TO xtrole; -- -- Name: xtdesktop; Type: ACL; Schema: -; Owner: admin -- REVOKE ALL ON SCHEMA xtdesktop FROM PUBLIC; REVOKE ALL ON SCHEMA xtdesktop FROM admin; GRANT ALL ON SCHEMA xtdesktop TO admin; GRANT ALL ON SCHEMA xtdesktop TO xtrole; SET search_path = public, pg_catalog; -- -- Name: cntslip; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cntslip FROM PUBLIC; REVOKE ALL ON TABLE cntslip FROM admin; GRANT ALL ON TABLE cntslip TO admin; GRANT ALL ON TABLE cntslip TO xtrole; -- -- Name: invcnt; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE invcnt FROM PUBLIC; REVOKE ALL ON TABLE invcnt FROM admin; GRANT ALL ON TABLE invcnt TO admin; GRANT ALL ON TABLE invcnt TO xtrole; -- -- Name: item; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE item FROM PUBLIC; REVOKE ALL ON TABLE item FROM admin; GRANT ALL ON TABLE item TO admin; GRANT ALL ON TABLE item TO xtrole; -- -- Name: itemsite; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE itemsite FROM PUBLIC; REVOKE ALL ON TABLE itemsite FROM admin; GRANT ALL ON TABLE itemsite TO admin; GRANT ALL ON TABLE itemsite TO xtrole; -- -- Name: whsinfo; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE whsinfo FROM PUBLIC; REVOKE ALL ON TABLE whsinfo FROM admin; GRANT ALL ON TABLE whsinfo TO admin; GRANT ALL ON TABLE whsinfo TO xtrole; SET search_path = api, pg_catalog; -- -- Name: physinvcount; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE physinvcount FROM PUBLIC; REVOKE ALL ON TABLE physinvcount FROM admin; GRANT ALL ON TABLE physinvcount TO admin; GRANT ALL ON TABLE physinvcount TO xtrole; SET search_path = public, pg_catalog; -- -- Name: cohead; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cohead FROM PUBLIC; REVOKE ALL ON TABLE cohead FROM admin; GRANT ALL ON TABLE cohead TO admin; GRANT ALL ON TABLE cohead TO xtrole; -- -- Name: coitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE coitem FROM PUBLIC; REVOKE ALL ON TABLE coitem FROM admin; GRANT ALL ON TABLE coitem TO admin; GRANT ALL ON TABLE coitem TO xtrole; -- -- Name: pohead; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE pohead FROM PUBLIC; REVOKE ALL ON TABLE pohead FROM admin; GRANT ALL ON TABLE pohead TO admin; GRANT ALL ON TABLE pohead TO xtrole; -- -- Name: poitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE poitem FROM PUBLIC; REVOKE ALL ON TABLE poitem FROM admin; GRANT ALL ON TABLE poitem TO admin; GRANT ALL ON TABLE poitem TO xtrole; -- -- Name: taxtype; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE taxtype FROM PUBLIC; REVOKE ALL ON TABLE taxtype FROM admin; GRANT ALL ON TABLE taxtype TO admin; GRANT ALL ON TABLE taxtype TO xtrole; -- -- Name: uom; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE uom FROM PUBLIC; REVOKE ALL ON TABLE uom FROM admin; GRANT ALL ON TABLE uom TO admin; GRANT ALL ON TABLE uom TO xtrole; SET search_path = api, pg_catalog; -- -- Name: salesline; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE salesline FROM PUBLIC; REVOKE ALL ON TABLE salesline FROM admin; GRANT ALL ON TABLE salesline TO admin; GRANT ALL ON TABLE salesline TO xtrole; SET search_path = public, pg_catalog; -- -- Name: invbal; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE invbal FROM PUBLIC; REVOKE ALL ON TABLE invbal FROM admin; GRANT ALL ON TABLE invbal TO admin; GRANT ALL ON TABLE invbal TO xtrole; -- -- Name: bomitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE bomitem FROM PUBLIC; REVOKE ALL ON TABLE bomitem FROM admin; GRANT ALL ON TABLE bomitem TO admin; GRANT ALL ON TABLE bomitem TO xtrole; -- -- Name: cntct; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cntct FROM PUBLIC; REVOKE ALL ON TABLE cntct FROM admin; GRANT ALL ON TABLE cntct TO admin; GRANT ALL ON TABLE cntct TO xtrole; -- -- Name: crmacct; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE crmacct FROM PUBLIC; REVOKE ALL ON TABLE crmacct FROM admin; GRANT ALL ON TABLE crmacct TO admin; GRANT ALL ON TABLE crmacct TO xtrole; -- -- Name: incdt; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE incdt FROM PUBLIC; REVOKE ALL ON TABLE incdt FROM admin; GRANT ALL ON TABLE incdt TO admin; GRANT ALL ON TABLE incdt TO xtrole; -- -- Name: apopen; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE apopen FROM PUBLIC; REVOKE ALL ON TABLE apopen FROM admin; GRANT ALL ON TABLE apopen TO admin; GRANT ALL ON TABLE apopen TO xtrole; -- -- Name: curr_symbol; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE curr_symbol FROM PUBLIC; REVOKE ALL ON TABLE curr_symbol FROM admin; GRANT ALL ON TABLE curr_symbol TO admin; GRANT ALL ON TABLE curr_symbol TO xtrole; -- -- Name: terms; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE terms FROM PUBLIC; REVOKE ALL ON TABLE terms FROM admin; GRANT ALL ON TABLE terms TO admin; GRANT ALL ON TABLE terms TO xtrole; -- -- Name: vendinfo; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE vendinfo FROM PUBLIC; REVOKE ALL ON TABLE vendinfo FROM admin; GRANT ALL ON TABLE vendinfo TO admin; GRANT ALL ON TABLE vendinfo TO xtrole; SET search_path = api, pg_catalog; -- -- Name: apmemo; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE apmemo FROM PUBLIC; REVOKE ALL ON TABLE apmemo FROM admin; GRANT ALL ON TABLE apmemo TO admin; GRANT ALL ON TABLE apmemo TO xtrole; SET search_path = public, pg_catalog; -- -- Name: aropen; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE aropen FROM PUBLIC; REVOKE ALL ON TABLE aropen FROM admin; GRANT ALL ON TABLE aropen TO admin; GRANT ALL ON TABLE aropen TO xtrole; -- -- Name: custinfo; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE custinfo FROM PUBLIC; REVOKE ALL ON TABLE custinfo FROM admin; GRANT ALL ON TABLE custinfo TO admin; GRANT ALL ON TABLE custinfo TO xtrole; -- -- Name: rsncode; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE rsncode FROM PUBLIC; REVOKE ALL ON TABLE rsncode FROM admin; GRANT ALL ON TABLE rsncode TO admin; GRANT ALL ON TABLE rsncode TO xtrole; -- -- Name: salescat; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE salescat FROM PUBLIC; REVOKE ALL ON TABLE salescat FROM admin; GRANT ALL ON TABLE salescat TO admin; GRANT ALL ON TABLE salescat TO xtrole; -- -- Name: salesrep; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE salesrep FROM PUBLIC; REVOKE ALL ON TABLE salesrep FROM admin; GRANT ALL ON TABLE salesrep TO admin; GRANT ALL ON TABLE salesrep TO xtrole; SET search_path = api, pg_catalog; -- -- Name: armemo; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE armemo FROM PUBLIC; REVOKE ALL ON TABLE armemo FROM admin; GRANT ALL ON TABLE armemo TO admin; GRANT ALL ON TABLE armemo TO xtrole; SET search_path = public, pg_catalog; -- -- Name: cmhead; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cmhead FROM PUBLIC; REVOKE ALL ON TABLE cmhead FROM admin; GRANT ALL ON TABLE cmhead TO admin; GRANT ALL ON TABLE cmhead TO xtrole; -- -- Name: shiptoinfo; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE shiptoinfo FROM PUBLIC; REVOKE ALL ON TABLE shiptoinfo FROM admin; GRANT ALL ON TABLE shiptoinfo TO admin; GRANT ALL ON TABLE shiptoinfo TO xtrole; -- -- Name: taxzone; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE taxzone FROM PUBLIC; REVOKE ALL ON TABLE taxzone FROM admin; GRANT ALL ON TABLE taxzone TO admin; GRANT ALL ON TABLE taxzone TO xtrole; SET search_path = api, pg_catalog; -- -- Name: creditmemo; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE creditmemo FROM PUBLIC; REVOKE ALL ON TABLE creditmemo FROM admin; GRANT ALL ON TABLE creditmemo TO admin; GRANT ALL ON TABLE creditmemo TO xtrole; SET search_path = public, pg_catalog; -- -- Name: cmitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cmitem FROM PUBLIC; REVOKE ALL ON TABLE cmitem FROM admin; GRANT ALL ON TABLE cmitem TO admin; GRANT ALL ON TABLE cmitem TO xtrole; SET search_path = api, pg_catalog; -- -- Name: creditmemoline; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE creditmemoline FROM PUBLIC; REVOKE ALL ON TABLE creditmemoline FROM admin; GRANT ALL ON TABLE creditmemoline TO admin; GRANT ALL ON TABLE creditmemoline TO xtrole; SET search_path = public, pg_catalog; -- -- Name: invchead; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE invchead FROM PUBLIC; REVOKE ALL ON TABLE invchead FROM admin; GRANT ALL ON TABLE invchead TO admin; GRANT ALL ON TABLE invchead TO xtrole; -- -- Name: prj; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE prj FROM PUBLIC; REVOKE ALL ON TABLE prj FROM admin; GRANT ALL ON TABLE prj TO admin; GRANT ALL ON TABLE prj TO xtrole; -- -- Name: saletype; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE saletype FROM PUBLIC; REVOKE ALL ON TABLE saletype FROM admin; GRANT ALL ON TABLE saletype TO admin; GRANT ALL ON TABLE saletype TO xtrole; -- -- Name: shipzone; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE shipzone FROM PUBLIC; REVOKE ALL ON TABLE shipzone FROM admin; GRANT ALL ON TABLE shipzone TO admin; GRANT ALL ON TABLE shipzone TO xtrole; SET search_path = api, pg_catalog; -- -- Name: invoice; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE invoice FROM PUBLIC; REVOKE ALL ON TABLE invoice FROM admin; GRANT ALL ON TABLE invoice TO admin; GRANT ALL ON TABLE invoice TO xtrole; SET search_path = public, pg_catalog; -- -- Name: invcitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE invcitem FROM PUBLIC; REVOKE ALL ON TABLE invcitem FROM admin; GRANT ALL ON TABLE invcitem TO admin; GRANT ALL ON TABLE invcitem TO xtrole; SET search_path = api, pg_catalog; -- -- Name: invoiceline; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE invoiceline FROM PUBLIC; REVOKE ALL ON TABLE invoiceline FROM admin; GRANT ALL ON TABLE invoiceline TO admin; GRANT ALL ON TABLE invoiceline TO xtrole; SET search_path = public, pg_catalog; -- -- Name: ophead; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE ophead FROM PUBLIC; REVOKE ALL ON TABLE ophead FROM admin; GRANT ALL ON TABLE ophead TO admin; GRANT ALL ON TABLE ophead TO xtrole; -- -- Name: prjtask; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE prjtask FROM PUBLIC; REVOKE ALL ON TABLE prjtask FROM admin; GRANT ALL ON TABLE prjtask TO admin; GRANT ALL ON TABLE prjtask TO xtrole; -- -- Name: todoitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE todoitem FROM PUBLIC; REVOKE ALL ON TABLE todoitem FROM admin; GRANT ALL ON TABLE todoitem TO admin; GRANT ALL ON TABLE todoitem TO xtrole; -- -- Name: addr; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE addr FROM PUBLIC; REVOKE ALL ON TABLE addr FROM admin; GRANT ALL ON TABLE addr TO admin; GRANT ALL ON TABLE addr TO xtrole; SET search_path = api, pg_catalog; -- -- Name: account; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE account FROM PUBLIC; REVOKE ALL ON TABLE account FROM admin; GRANT ALL ON TABLE account TO admin; GRANT ALL ON TABLE account TO xtrole; SET search_path = public, pg_catalog; -- -- Name: char; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE "char" FROM PUBLIC; REVOKE ALL ON TABLE "char" FROM admin; GRANT ALL ON TABLE "char" TO admin; GRANT ALL ON TABLE "char" TO xtrole; -- -- Name: charass; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE charass FROM PUBLIC; REVOKE ALL ON TABLE charass FROM admin; GRANT ALL ON TABLE charass TO admin; GRANT ALL ON TABLE charass TO xtrole; SET search_path = api, pg_catalog; -- -- Name: accountchar; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE accountchar FROM PUBLIC; REVOKE ALL ON TABLE accountchar FROM admin; GRANT ALL ON TABLE accountchar TO admin; GRANT ALL ON TABLE accountchar TO xtrole; SET search_path = public, pg_catalog; -- -- Name: cmnttype; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cmnttype FROM PUBLIC; REVOKE ALL ON TABLE cmnttype FROM admin; GRANT ALL ON TABLE cmnttype TO admin; GRANT ALL ON TABLE cmnttype TO xtrole; -- -- Name: comment; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE comment FROM PUBLIC; REVOKE ALL ON TABLE comment FROM admin; GRANT ALL ON TABLE comment TO admin; GRANT ALL ON TABLE comment TO xtrole; SET search_path = api, pg_catalog; -- -- Name: accountcomment; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE accountcomment FROM PUBLIC; REVOKE ALL ON TABLE accountcomment FROM admin; GRANT ALL ON TABLE accountcomment TO admin; GRANT ALL ON TABLE accountcomment TO xtrole; SET search_path = public, pg_catalog; -- -- Name: docass; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE docass FROM PUBLIC; REVOKE ALL ON TABLE docass FROM admin; GRANT ALL ON TABLE docass TO admin; GRANT ALL ON TABLE docass TO xtrole; -- -- Name: file; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE file FROM PUBLIC; REVOKE ALL ON TABLE file FROM admin; GRANT ALL ON TABLE file TO admin; GRANT ALL ON TABLE file TO xtrole; -- -- Name: urlinfo; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE urlinfo FROM PUBLIC; REVOKE ALL ON TABLE urlinfo FROM admin; GRANT ALL ON TABLE urlinfo TO admin; GRANT ALL ON TABLE urlinfo TO xtrole; -- -- Name: url; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE url FROM PUBLIC; REVOKE ALL ON TABLE url FROM admin; GRANT ALL ON TABLE url TO admin; GRANT ALL ON TABLE url TO xtrole; SET search_path = api, pg_catalog; -- -- Name: accountfile; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE accountfile FROM PUBLIC; REVOKE ALL ON TABLE accountfile FROM admin; GRANT ALL ON TABLE accountfile TO admin; GRANT ALL ON TABLE accountfile TO xtrole; SET search_path = public, pg_catalog; -- -- Name: docass_docass_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE docass_docass_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE docass_docass_id_seq FROM admin; GRANT ALL ON SEQUENCE docass_docass_id_seq TO admin; GRANT ALL ON SEQUENCE docass_docass_id_seq TO xtrole; -- -- Name: image; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE image FROM PUBLIC; REVOKE ALL ON TABLE image FROM admin; GRANT ALL ON TABLE image TO admin; GRANT ALL ON TABLE image TO xtrole; -- -- Name: imageass; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE imageass FROM PUBLIC; REVOKE ALL ON TABLE imageass FROM admin; GRANT ALL ON TABLE imageass TO admin; GRANT ALL ON TABLE imageass TO xtrole; SET search_path = api, pg_catalog; -- -- Name: accountimage; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE accountimage FROM PUBLIC; REVOKE ALL ON TABLE accountimage FROM admin; GRANT ALL ON TABLE accountimage TO admin; GRANT ALL ON TABLE accountimage TO xtrole; -- -- Name: address; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE address FROM PUBLIC; REVOKE ALL ON TABLE address FROM admin; GRANT ALL ON TABLE address TO admin; GRANT ALL ON TABLE address TO xtrole; -- -- Name: addresschar; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE addresschar FROM PUBLIC; REVOKE ALL ON TABLE addresschar FROM admin; GRANT ALL ON TABLE addresschar TO admin; GRANT ALL ON TABLE addresschar TO xtrole; -- -- Name: addresscomment; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE addresscomment FROM PUBLIC; REVOKE ALL ON TABLE addresscomment FROM admin; GRANT ALL ON TABLE addresscomment TO admin; GRANT ALL ON TABLE addresscomment TO xtrole; SET search_path = public, pg_catalog; -- -- Name: bomhead; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE bomhead FROM PUBLIC; REVOKE ALL ON TABLE bomhead FROM admin; GRANT ALL ON TABLE bomhead TO admin; GRANT ALL ON TABLE bomhead TO xtrole; SET search_path = api, pg_catalog; -- -- Name: bom; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE bom FROM PUBLIC; REVOKE ALL ON TABLE bom FROM admin; GRANT ALL ON TABLE bom TO admin; GRANT ALL ON TABLE bom TO xtrole; -- -- Name: bomitem; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE bomitem FROM PUBLIC; REVOKE ALL ON TABLE bomitem FROM admin; GRANT ALL ON TABLE bomitem TO admin; GRANT ALL ON TABLE bomitem TO xtrole; -- -- Name: bomitemcomment; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE bomitemcomment FROM PUBLIC; REVOKE ALL ON TABLE bomitemcomment FROM admin; GRANT ALL ON TABLE bomitemcomment TO admin; GRANT ALL ON TABLE bomitemcomment TO xtrole; SET search_path = public, pg_catalog; -- -- Name: bomitemsub; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE bomitemsub FROM PUBLIC; REVOKE ALL ON TABLE bomitemsub FROM admin; GRANT ALL ON TABLE bomitemsub TO admin; GRANT ALL ON TABLE bomitemsub TO xtrole; SET search_path = api, pg_catalog; -- -- Name: bomitemsubstitute; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE bomitemsubstitute FROM PUBLIC; REVOKE ALL ON TABLE bomitemsubstitute FROM admin; GRANT ALL ON TABLE bomitemsubstitute TO admin; GRANT ALL ON TABLE bomitemsubstitute TO xtrole; SET search_path = public, pg_catalog; -- -- Name: budghead; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE budghead FROM PUBLIC; REVOKE ALL ON TABLE budghead FROM admin; GRANT ALL ON TABLE budghead TO admin; GRANT ALL ON TABLE budghead TO xtrole; SET search_path = api, pg_catalog; -- -- Name: budget; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE budget FROM PUBLIC; REVOKE ALL ON TABLE budget FROM admin; GRANT ALL ON TABLE budget TO admin; GRANT ALL ON TABLE budget TO xtrole; SET search_path = public, pg_catalog; -- -- Name: accnt; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE accnt FROM PUBLIC; REVOKE ALL ON TABLE accnt FROM admin; GRANT ALL ON TABLE accnt TO admin; GRANT ALL ON TABLE accnt TO xtrole; -- -- Name: budgitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE budgitem FROM PUBLIC; REVOKE ALL ON TABLE budgitem FROM admin; GRANT ALL ON TABLE budgitem TO admin; GRANT ALL ON TABLE budgitem TO xtrole; -- -- Name: period; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE period FROM PUBLIC; REVOKE ALL ON TABLE period FROM admin; GRANT ALL ON TABLE period TO admin; GRANT ALL ON TABLE period TO xtrole; SET search_path = api, pg_catalog; -- -- Name: budgetentry; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE budgetentry FROM PUBLIC; REVOKE ALL ON TABLE budgetentry FROM admin; GRANT ALL ON TABLE budgetentry TO admin; GRANT ALL ON TABLE budgetentry TO xtrole; SET search_path = public, pg_catalog; -- -- Name: bankaccnt; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE bankaccnt FROM PUBLIC; REVOKE ALL ON TABLE bankaccnt FROM admin; GRANT ALL ON TABLE bankaccnt TO admin; GRANT ALL ON TABLE bankaccnt TO xtrole; -- -- Name: cashrcpt; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cashrcpt FROM PUBLIC; REVOKE ALL ON TABLE cashrcpt FROM admin; GRANT ALL ON TABLE cashrcpt TO admin; GRANT ALL ON TABLE cashrcpt TO xtrole; SET search_path = api, pg_catalog; -- -- Name: cashreceipt; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE cashreceipt FROM PUBLIC; REVOKE ALL ON TABLE cashreceipt FROM admin; GRANT ALL ON TABLE cashreceipt TO admin; GRANT ALL ON TABLE cashreceipt TO xtrole; SET search_path = public, pg_catalog; -- -- Name: cashrcptitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cashrcptitem FROM PUBLIC; REVOKE ALL ON TABLE cashrcptitem FROM admin; GRANT ALL ON TABLE cashrcptitem TO admin; GRANT ALL ON TABLE cashrcptitem TO xtrole; SET search_path = api, pg_catalog; -- -- Name: cashreceiptapply; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE cashreceiptapply FROM PUBLIC; REVOKE ALL ON TABLE cashreceiptapply FROM admin; GRANT ALL ON TABLE cashreceiptapply TO admin; GRANT ALL ON TABLE cashreceiptapply TO xtrole; SET search_path = public, pg_catalog; -- -- Name: cashrcptmisc; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cashrcptmisc FROM PUBLIC; REVOKE ALL ON TABLE cashrcptmisc FROM admin; GRANT ALL ON TABLE cashrcptmisc TO admin; GRANT ALL ON TABLE cashrcptmisc TO xtrole; SET search_path = api, pg_catalog; -- -- Name: cashreceiptapplymisc; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE cashreceiptapplymisc FROM PUBLIC; REVOKE ALL ON TABLE cashreceiptapplymisc FROM admin; GRANT ALL ON TABLE cashreceiptapplymisc TO admin; GRANT ALL ON TABLE cashreceiptapplymisc TO xtrole; -- -- Name: contact; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE contact FROM PUBLIC; REVOKE ALL ON TABLE contact FROM admin; GRANT ALL ON TABLE contact TO admin; GRANT ALL ON TABLE contact TO xtrole; -- -- Name: contactchar; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE contactchar FROM PUBLIC; REVOKE ALL ON TABLE contactchar FROM admin; GRANT ALL ON TABLE contactchar TO admin; GRANT ALL ON TABLE contactchar TO xtrole; -- -- Name: contactcomment; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE contactcomment FROM PUBLIC; REVOKE ALL ON TABLE contactcomment FROM admin; GRANT ALL ON TABLE contactcomment TO admin; GRANT ALL ON TABLE contactcomment TO xtrole; -- -- Name: custchar; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE custchar FROM PUBLIC; REVOKE ALL ON TABLE custchar FROM admin; GRANT ALL ON TABLE custchar TO admin; GRANT ALL ON TABLE custchar TO xtrole; -- -- Name: custcomment; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE custcomment FROM PUBLIC; REVOKE ALL ON TABLE custcomment FROM admin; GRANT ALL ON TABLE custcomment TO admin; GRANT ALL ON TABLE custcomment TO xtrole; SET search_path = public, pg_catalog; -- -- Name: ccard; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE ccard FROM PUBLIC; REVOKE ALL ON TABLE ccard FROM admin; GRANT ALL ON TABLE ccard TO admin; GRANT ALL ON TABLE ccard TO xtrole; SET search_path = api, pg_catalog; -- -- Name: custcreditcard; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE custcreditcard FROM PUBLIC; REVOKE ALL ON TABLE custcreditcard FROM admin; GRANT ALL ON TABLE custcreditcard TO admin; GRANT ALL ON TABLE custcreditcard TO xtrole; SET search_path = public, pg_catalog; -- -- Name: custtype; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE custtype FROM PUBLIC; REVOKE ALL ON TABLE custtype FROM admin; GRANT ALL ON TABLE custtype TO admin; GRANT ALL ON TABLE custtype TO xtrole; -- -- Name: shipchrg; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE shipchrg FROM PUBLIC; REVOKE ALL ON TABLE shipchrg FROM admin; GRANT ALL ON TABLE shipchrg TO admin; GRANT ALL ON TABLE shipchrg TO xtrole; -- -- Name: shipform; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE shipform FROM PUBLIC; REVOKE ALL ON TABLE shipform FROM admin; GRANT ALL ON TABLE shipform TO admin; GRANT ALL ON TABLE shipform TO xtrole; SET search_path = api, pg_catalog; -- -- Name: customer; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE customer FROM PUBLIC; REVOKE ALL ON TABLE customer FROM admin; GRANT ALL ON TABLE customer TO admin; GRANT ALL ON TABLE customer TO xtrole; SET search_path = public, pg_catalog; -- -- Name: taxauth; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE taxauth FROM PUBLIC; REVOKE ALL ON TABLE taxauth FROM admin; GRANT ALL ON TABLE taxauth TO admin; GRANT ALL ON TABLE taxauth TO xtrole; -- -- Name: taxreg; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE taxreg FROM PUBLIC; REVOKE ALL ON TABLE taxreg FROM admin; GRANT ALL ON TABLE taxreg TO admin; GRANT ALL ON TABLE taxreg TO xtrole; SET search_path = api, pg_catalog; -- -- Name: customertaxreg; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE customertaxreg FROM PUBLIC; REVOKE ALL ON TABLE customertaxreg FROM admin; GRANT ALL ON TABLE customertaxreg TO admin; GRANT ALL ON TABLE customertaxreg TO xtrole; -- -- Name: customertype; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE customertype FROM PUBLIC; REVOKE ALL ON TABLE customertype FROM admin; GRANT ALL ON TABLE customertype TO admin; GRANT ALL ON TABLE customertype TO xtrole; -- -- Name: customertypechar; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE customertypechar FROM PUBLIC; REVOKE ALL ON TABLE customertypechar FROM admin; GRANT ALL ON TABLE customertypechar TO admin; GRANT ALL ON TABLE customertypechar TO xtrole; -- -- Name: custshipto; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE custshipto FROM PUBLIC; REVOKE ALL ON TABLE custshipto FROM admin; GRANT ALL ON TABLE custshipto TO admin; GRANT ALL ON TABLE custshipto TO xtrole; -- -- Name: custtax; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE custtax FROM PUBLIC; REVOKE ALL ON TABLE custtax FROM admin; GRANT ALL ON TABLE custtax TO admin; GRANT ALL ON TABLE custtax TO xtrole; SET search_path = public, pg_catalog; -- -- Name: dept; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE dept FROM PUBLIC; REVOKE ALL ON TABLE dept FROM admin; GRANT ALL ON TABLE dept TO admin; GRANT ALL ON TABLE dept TO xtrole; -- -- Name: emp; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE emp FROM PUBLIC; REVOKE ALL ON TABLE emp FROM admin; GRANT ALL ON TABLE emp TO admin; GRANT ALL ON TABLE emp TO xtrole; -- -- Name: shift; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE shift FROM PUBLIC; REVOKE ALL ON TABLE shift FROM admin; GRANT ALL ON TABLE shift TO admin; GRANT ALL ON TABLE shift TO xtrole; SET search_path = api, pg_catalog; -- -- Name: employee; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE employee FROM PUBLIC; REVOKE ALL ON TABLE employee FROM admin; GRANT ALL ON TABLE employee TO admin; GRANT ALL ON TABLE employee TO xtrole; -- -- Name: employeechar; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE employeechar FROM PUBLIC; REVOKE ALL ON TABLE employeechar FROM admin; GRANT ALL ON TABLE employeechar TO admin; GRANT ALL ON TABLE employeechar TO xtrole; -- -- Name: employeecomment; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE employeecomment FROM PUBLIC; REVOKE ALL ON TABLE employeecomment FROM admin; GRANT ALL ON TABLE employeecomment TO admin; GRANT ALL ON TABLE employeecomment TO xtrole; SET search_path = public, pg_catalog; -- -- Name: shipdata; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE shipdata FROM PUBLIC; REVOKE ALL ON TABLE shipdata FROM admin; GRANT ALL ON TABLE shipdata TO admin; GRANT ALL ON TABLE shipdata TO xtrole; SET search_path = api, pg_catalog; -- -- Name: extshipmaint; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE extshipmaint FROM PUBLIC; REVOKE ALL ON TABLE extshipmaint FROM admin; GRANT ALL ON TABLE extshipmaint TO admin; GRANT ALL ON TABLE extshipmaint TO xtrole; SET search_path = public, pg_catalog; -- -- Name: freightclass; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE freightclass FROM PUBLIC; REVOKE ALL ON TABLE freightclass FROM admin; GRANT ALL ON TABLE freightclass TO admin; GRANT ALL ON TABLE freightclass TO xtrole; -- -- Name: ipsfreight; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE ipsfreight FROM PUBLIC; REVOKE ALL ON TABLE ipsfreight FROM admin; GRANT ALL ON TABLE ipsfreight TO admin; GRANT ALL ON TABLE ipsfreight TO xtrole; -- -- Name: ipshead; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE ipshead FROM PUBLIC; REVOKE ALL ON TABLE ipshead FROM admin; GRANT ALL ON TABLE ipshead TO admin; GRANT ALL ON TABLE ipshead TO xtrole; SET search_path = api, pg_catalog; -- -- Name: freightpricingscheduleitem; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE freightpricingscheduleitem FROM PUBLIC; REVOKE ALL ON TABLE freightpricingscheduleitem FROM admin; GRANT ALL ON TABLE freightpricingscheduleitem TO admin; GRANT ALL ON TABLE freightpricingscheduleitem TO xtrole; -- -- Name: glaccount; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE glaccount FROM PUBLIC; REVOKE ALL ON TABLE glaccount FROM admin; GRANT ALL ON TABLE glaccount TO admin; GRANT ALL ON TABLE glaccount TO xtrole; SET search_path = public, pg_catalog; -- -- Name: incdtcat; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE incdtcat FROM PUBLIC; REVOKE ALL ON TABLE incdtcat FROM admin; GRANT ALL ON TABLE incdtcat TO admin; GRANT ALL ON TABLE incdtcat TO xtrole; -- -- Name: incdtpriority; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE incdtpriority FROM PUBLIC; REVOKE ALL ON TABLE incdtpriority FROM admin; GRANT ALL ON TABLE incdtpriority TO admin; GRANT ALL ON TABLE incdtpriority TO xtrole; -- -- Name: incdtresolution; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE incdtresolution FROM PUBLIC; REVOKE ALL ON TABLE incdtresolution FROM admin; GRANT ALL ON TABLE incdtresolution TO admin; GRANT ALL ON TABLE incdtresolution TO xtrole; -- -- Name: incdtseverity; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE incdtseverity FROM PUBLIC; REVOKE ALL ON TABLE incdtseverity FROM admin; GRANT ALL ON TABLE incdtseverity TO admin; GRANT ALL ON TABLE incdtseverity TO xtrole; SET search_path = api, pg_catalog; -- -- Name: incident; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE incident FROM PUBLIC; REVOKE ALL ON TABLE incident FROM admin; GRANT ALL ON TABLE incident TO admin; GRANT ALL ON TABLE incident TO xtrole; -- -- Name: incidentchar; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE incidentchar FROM PUBLIC; REVOKE ALL ON TABLE incidentchar FROM admin; GRANT ALL ON TABLE incidentchar TO admin; GRANT ALL ON TABLE incidentchar TO xtrole; -- -- Name: incidentcomment; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE incidentcomment FROM PUBLIC; REVOKE ALL ON TABLE incidentcomment FROM admin; GRANT ALL ON TABLE incidentcomment TO admin; GRANT ALL ON TABLE incidentcomment TO xtrole; -- -- Name: incidentfile; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE incidentfile FROM PUBLIC; REVOKE ALL ON TABLE incidentfile FROM admin; GRANT ALL ON TABLE incidentfile TO admin; GRANT ALL ON TABLE incidentfile TO xtrole; -- -- Name: incidentimage; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE incidentimage FROM PUBLIC; REVOKE ALL ON TABLE incidentimage FROM admin; GRANT ALL ON TABLE incidentimage TO admin; GRANT ALL ON TABLE incidentimage TO xtrole; SET search_path = public, pg_catalog; -- -- Name: classcode; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE classcode FROM PUBLIC; REVOKE ALL ON TABLE classcode FROM admin; GRANT ALL ON TABLE classcode TO admin; GRANT ALL ON TABLE classcode TO xtrole; -- -- Name: prodcat; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE prodcat FROM PUBLIC; REVOKE ALL ON TABLE prodcat FROM admin; GRANT ALL ON TABLE prodcat TO admin; GRANT ALL ON TABLE prodcat TO xtrole; SET search_path = api, pg_catalog; -- -- Name: item; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE item FROM PUBLIC; REVOKE ALL ON TABLE item FROM admin; GRANT ALL ON TABLE item TO admin; GRANT ALL ON TABLE item TO xtrole; SET search_path = public, pg_catalog; -- -- Name: itemalias; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE itemalias FROM PUBLIC; REVOKE ALL ON TABLE itemalias FROM admin; GRANT ALL ON TABLE itemalias TO admin; GRANT ALL ON TABLE itemalias TO xtrole; SET search_path = api, pg_catalog; -- -- Name: itemalias; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE itemalias FROM PUBLIC; REVOKE ALL ON TABLE itemalias FROM admin; GRANT ALL ON TABLE itemalias TO admin; GRANT ALL ON TABLE itemalias TO xtrole; -- -- Name: itemchar; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE itemchar FROM PUBLIC; REVOKE ALL ON TABLE itemchar FROM admin; GRANT ALL ON TABLE itemchar TO admin; GRANT ALL ON TABLE itemchar TO xtrole; -- -- Name: itemcomment; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE itemcomment FROM PUBLIC; REVOKE ALL ON TABLE itemcomment FROM admin; GRANT ALL ON TABLE itemcomment TO admin; GRANT ALL ON TABLE itemcomment TO xtrole; SET search_path = public, pg_catalog; -- -- Name: costelem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE costelem FROM PUBLIC; REVOKE ALL ON TABLE costelem FROM admin; GRANT ALL ON TABLE costelem TO admin; GRANT ALL ON TABLE costelem TO xtrole; -- -- Name: itemcost; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE itemcost FROM PUBLIC; REVOKE ALL ON TABLE itemcost FROM admin; GRANT ALL ON TABLE itemcost TO admin; GRANT ALL ON TABLE itemcost TO xtrole; SET search_path = api, pg_catalog; -- -- Name: itemcost; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE itemcost FROM PUBLIC; REVOKE ALL ON TABLE itemcost FROM admin; GRANT ALL ON TABLE itemcost TO admin; GRANT ALL ON TABLE itemcost TO xtrole; -- -- Name: itemfile; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE itemfile FROM PUBLIC; REVOKE ALL ON TABLE itemfile FROM admin; GRANT ALL ON TABLE itemfile TO admin; GRANT ALL ON TABLE itemfile TO xtrole; -- -- Name: itemimage; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE itemimage FROM PUBLIC; REVOKE ALL ON TABLE itemimage FROM admin; GRANT ALL ON TABLE itemimage TO admin; GRANT ALL ON TABLE itemimage TO xtrole; SET search_path = public, pg_catalog; -- -- Name: costcat; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE costcat FROM PUBLIC; REVOKE ALL ON TABLE costcat FROM admin; GRANT ALL ON TABLE costcat TO admin; GRANT ALL ON TABLE costcat TO xtrole; -- -- Name: location; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE location FROM PUBLIC; REVOKE ALL ON TABLE location FROM admin; GRANT ALL ON TABLE location TO admin; GRANT ALL ON TABLE location TO xtrole; -- -- Name: plancode; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE plancode FROM PUBLIC; REVOKE ALL ON TABLE plancode FROM admin; GRANT ALL ON TABLE plancode TO admin; GRANT ALL ON TABLE plancode TO xtrole; SET search_path = api, pg_catalog; -- -- Name: itemsite; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE itemsite FROM PUBLIC; REVOKE ALL ON TABLE itemsite FROM admin; GRANT ALL ON TABLE itemsite TO admin; GRANT ALL ON TABLE itemsite TO xtrole; -- -- Name: itemsitecomment; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE itemsitecomment FROM PUBLIC; REVOKE ALL ON TABLE itemsitecomment FROM admin; GRANT ALL ON TABLE itemsitecomment TO admin; GRANT ALL ON TABLE itemsitecomment TO xtrole; SET search_path = public, pg_catalog; -- -- Name: contrct; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE contrct FROM PUBLIC; REVOKE ALL ON TABLE contrct FROM admin; GRANT ALL ON TABLE contrct TO admin; GRANT ALL ON TABLE contrct TO xtrole; -- -- Name: itemsrc; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE itemsrc FROM PUBLIC; REVOKE ALL ON TABLE itemsrc FROM admin; GRANT ALL ON TABLE itemsrc TO admin; GRANT ALL ON TABLE itemsrc TO xtrole; SET search_path = api, pg_catalog; -- -- Name: itemsource; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE itemsource FROM PUBLIC; REVOKE ALL ON TABLE itemsource FROM admin; GRANT ALL ON TABLE itemsource TO admin; GRANT ALL ON TABLE itemsource TO xtrole; SET search_path = public, pg_catalog; -- -- Name: itemsrcp; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE itemsrcp FROM PUBLIC; REVOKE ALL ON TABLE itemsrcp FROM admin; GRANT ALL ON TABLE itemsrcp TO admin; GRANT ALL ON TABLE itemsrcp TO xtrole; SET search_path = api, pg_catalog; -- -- Name: itemsourceprice; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE itemsourceprice FROM PUBLIC; REVOKE ALL ON TABLE itemsourceprice FROM admin; GRANT ALL ON TABLE itemsourceprice TO admin; GRANT ALL ON TABLE itemsourceprice TO xtrole; SET search_path = public, pg_catalog; -- -- Name: itemsub; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE itemsub FROM PUBLIC; REVOKE ALL ON TABLE itemsub FROM admin; GRANT ALL ON TABLE itemsub TO admin; GRANT ALL ON TABLE itemsub TO xtrole; SET search_path = api, pg_catalog; -- -- Name: itemsubstitute; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE itemsubstitute FROM PUBLIC; REVOKE ALL ON TABLE itemsubstitute FROM admin; GRANT ALL ON TABLE itemsubstitute TO admin; GRANT ALL ON TABLE itemsubstitute TO xtrole; SET search_path = public, pg_catalog; -- -- Name: itemtax; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE itemtax FROM PUBLIC; REVOKE ALL ON TABLE itemtax FROM admin; GRANT ALL ON TABLE itemtax TO admin; GRANT ALL ON TABLE itemtax TO xtrole; SET search_path = api, pg_catalog; -- -- Name: itemtaxtype; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE itemtaxtype FROM PUBLIC; REVOKE ALL ON TABLE itemtaxtype FROM admin; GRANT ALL ON TABLE itemtaxtype TO admin; GRANT ALL ON TABLE itemtaxtype TO xtrole; SET search_path = public, pg_catalog; -- -- Name: itemuomconv; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE itemuomconv FROM PUBLIC; REVOKE ALL ON TABLE itemuomconv FROM admin; GRANT ALL ON TABLE itemuomconv TO admin; GRANT ALL ON TABLE itemuomconv TO xtrole; SET search_path = api, pg_catalog; -- -- Name: itemuomconversion; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE itemuomconversion FROM PUBLIC; REVOKE ALL ON TABLE itemuomconversion FROM admin; GRANT ALL ON TABLE itemuomconversion TO admin; GRANT ALL ON TABLE itemuomconversion TO xtrole; SET search_path = public, pg_catalog; -- -- Name: gltrans; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE gltrans FROM PUBLIC; REVOKE ALL ON TABLE gltrans FROM admin; GRANT ALL ON TABLE gltrans TO admin; GRANT ALL ON TABLE gltrans TO xtrole; SET search_path = api, pg_catalog; -- -- Name: journalentry; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE journalentry FROM PUBLIC; REVOKE ALL ON TABLE journalentry FROM admin; GRANT ALL ON TABLE journalentry TO admin; GRANT ALL ON TABLE journalentry TO xtrole; SET search_path = public, pg_catalog; -- -- Name: whsezone; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE whsezone FROM PUBLIC; REVOKE ALL ON TABLE whsezone FROM admin; GRANT ALL ON TABLE whsezone TO admin; GRANT ALL ON TABLE whsezone TO xtrole; SET search_path = api, pg_catalog; -- -- Name: location; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE location FROM PUBLIC; REVOKE ALL ON TABLE location FROM admin; GRANT ALL ON TABLE location TO admin; GRANT ALL ON TABLE location TO xtrole; -- -- Name: misccounttag; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE misccounttag FROM PUBLIC; REVOKE ALL ON TABLE misccounttag FROM admin; GRANT ALL ON TABLE misccounttag TO admin; GRANT ALL ON TABLE misccounttag TO xtrole; -- -- Name: pricingschedule; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE pricingschedule FROM PUBLIC; REVOKE ALL ON TABLE pricingschedule FROM admin; GRANT ALL ON TABLE pricingschedule TO admin; GRANT ALL ON TABLE pricingschedule TO xtrole; SET search_path = public, pg_catalog; -- -- Name: ipsass; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE ipsass FROM PUBLIC; REVOKE ALL ON TABLE ipsass FROM admin; GRANT ALL ON TABLE ipsass TO admin; GRANT ALL ON TABLE ipsass TO xtrole; SET search_path = api, pg_catalog; -- -- Name: pricingscheduleassign; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE pricingscheduleassign FROM PUBLIC; REVOKE ALL ON TABLE pricingscheduleassign FROM admin; GRANT ALL ON TABLE pricingscheduleassign TO admin; GRANT ALL ON TABLE pricingscheduleassign TO xtrole; SET search_path = public, pg_catalog; -- -- Name: ipsiteminfo; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE ipsiteminfo FROM PUBLIC; REVOKE ALL ON TABLE ipsiteminfo FROM admin; GRANT ALL ON TABLE ipsiteminfo TO admin; GRANT ALL ON TABLE ipsiteminfo TO xtrole; SET search_path = api, pg_catalog; -- -- Name: pricingscheduleitem; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE pricingscheduleitem FROM PUBLIC; REVOKE ALL ON TABLE pricingscheduleitem FROM admin; GRANT ALL ON TABLE pricingscheduleitem TO admin; GRANT ALL ON TABLE pricingscheduleitem TO xtrole; SET search_path = public, pg_catalog; -- -- Name: ipsitemchar; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE ipsitemchar FROM PUBLIC; REVOKE ALL ON TABLE ipsitemchar FROM admin; GRANT ALL ON TABLE ipsitemchar TO admin; GRANT ALL ON TABLE ipsitemchar TO xtrole; SET search_path = api, pg_catalog; -- -- Name: pricingscheduleitemchar; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE pricingscheduleitemchar FROM PUBLIC; REVOKE ALL ON TABLE pricingscheduleitemchar FROM admin; GRANT ALL ON TABLE pricingscheduleitemchar TO admin; GRANT ALL ON TABLE pricingscheduleitemchar TO xtrole; -- -- Name: project; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE project FROM PUBLIC; REVOKE ALL ON TABLE project FROM admin; GRANT ALL ON TABLE project TO admin; GRANT ALL ON TABLE project TO xtrole; -- -- Name: projectcomment; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE projectcomment FROM PUBLIC; REVOKE ALL ON TABLE projectcomment FROM admin; GRANT ALL ON TABLE projectcomment TO admin; GRANT ALL ON TABLE projectcomment TO xtrole; SET search_path = public, pg_catalog; -- -- Name: cust_cust_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cust_cust_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cust_cust_id_seq FROM admin; GRANT ALL ON SEQUENCE cust_cust_id_seq TO admin; GRANT ALL ON SEQUENCE cust_cust_id_seq TO xtrole; -- -- Name: prospect; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE prospect FROM PUBLIC; REVOKE ALL ON TABLE prospect FROM admin; GRANT ALL ON TABLE prospect TO admin; GRANT ALL ON TABLE prospect TO xtrole; SET search_path = api, pg_catalog; -- -- Name: prospect; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE prospect FROM PUBLIC; REVOKE ALL ON TABLE prospect FROM admin; GRANT ALL ON TABLE prospect TO admin; GRANT ALL ON TABLE prospect TO xtrole; SET search_path = public, pg_catalog; -- -- Name: expcat; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE expcat FROM PUBLIC; REVOKE ALL ON TABLE expcat FROM admin; GRANT ALL ON TABLE expcat TO admin; GRANT ALL ON TABLE expcat TO xtrole; -- -- Name: womatl; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE womatl FROM PUBLIC; REVOKE ALL ON TABLE womatl FROM admin; GRANT ALL ON TABLE womatl TO admin; GRANT ALL ON TABLE womatl TO xtrole; SET search_path = api, pg_catalog; -- -- Name: purchaseline; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE purchaseline FROM PUBLIC; REVOKE ALL ON TABLE purchaseline FROM admin; GRANT ALL ON TABLE purchaseline TO admin; GRANT ALL ON TABLE purchaseline TO xtrole; -- -- Name: purchaselinechar; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE purchaselinechar FROM PUBLIC; REVOKE ALL ON TABLE purchaselinechar FROM admin; GRANT ALL ON TABLE purchaselinechar TO admin; GRANT ALL ON TABLE purchaselinechar TO xtrole; -- -- Name: purchaselinecomment; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE purchaselinecomment FROM PUBLIC; REVOKE ALL ON TABLE purchaselinecomment FROM admin; GRANT ALL ON TABLE purchaselinecomment TO admin; GRANT ALL ON TABLE purchaselinecomment TO xtrole; SET search_path = public, pg_catalog; -- -- Name: tax; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE tax FROM PUBLIC; REVOKE ALL ON TABLE tax FROM admin; GRANT ALL ON TABLE tax TO admin; GRANT ALL ON TABLE tax TO xtrole; -- -- Name: vendaddrinfo; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE vendaddrinfo FROM PUBLIC; REVOKE ALL ON TABLE vendaddrinfo FROM admin; GRANT ALL ON TABLE vendaddrinfo TO admin; GRANT ALL ON TABLE vendaddrinfo TO xtrole; SET search_path = api, pg_catalog; -- -- Name: purchaseorder; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE purchaseorder FROM PUBLIC; REVOKE ALL ON TABLE purchaseorder FROM admin; GRANT ALL ON TABLE purchaseorder TO admin; GRANT ALL ON TABLE purchaseorder TO xtrole; -- -- Name: purchaseordercomment; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE purchaseordercomment FROM PUBLIC; REVOKE ALL ON TABLE purchaseordercomment FROM admin; GRANT ALL ON TABLE purchaseordercomment TO admin; GRANT ALL ON TABLE purchaseordercomment TO xtrole; SET search_path = public, pg_catalog; -- -- Name: quhead; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE quhead FROM PUBLIC; REVOKE ALL ON TABLE quhead FROM admin; GRANT ALL ON TABLE quhead TO admin; GRANT ALL ON TABLE quhead TO xtrole; SET search_path = api, pg_catalog; -- -- Name: quote; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE quote FROM PUBLIC; REVOKE ALL ON TABLE quote FROM admin; GRANT ALL ON TABLE quote TO admin; GRANT ALL ON TABLE quote TO xtrole; -- -- Name: quotecomment; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE quotecomment FROM PUBLIC; REVOKE ALL ON TABLE quotecomment FROM admin; GRANT ALL ON TABLE quotecomment TO admin; GRANT ALL ON TABLE quotecomment TO xtrole; SET search_path = public, pg_catalog; -- -- Name: quitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE quitem FROM PUBLIC; REVOKE ALL ON TABLE quitem FROM admin; GRANT ALL ON TABLE quitem TO admin; GRANT ALL ON TABLE quitem TO xtrole; SET search_path = api, pg_catalog; -- -- Name: quoteline; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE quoteline FROM PUBLIC; REVOKE ALL ON TABLE quoteline FROM admin; GRANT ALL ON TABLE quoteline TO admin; GRANT ALL ON TABLE quoteline TO xtrole; -- -- Name: quotelinechar; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE quotelinechar FROM PUBLIC; REVOKE ALL ON TABLE quotelinechar FROM admin; GRANT ALL ON TABLE quotelinechar TO admin; GRANT ALL ON TABLE quotelinechar TO xtrole; -- -- Name: quotelinecomment; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE quotelinecomment FROM PUBLIC; REVOKE ALL ON TABLE quotelinecomment FROM admin; GRANT ALL ON TABLE quotelinecomment TO admin; GRANT ALL ON TABLE quotelinecomment TO xtrole; SET search_path = public, pg_catalog; -- -- Name: aropenalloc; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE aropenalloc FROM PUBLIC; REVOKE ALL ON TABLE aropenalloc FROM admin; GRANT ALL ON TABLE aropenalloc TO admin; GRANT ALL ON TABLE aropenalloc TO xtrole; SET search_path = api, pg_catalog; -- -- Name: salescredit; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE salescredit FROM PUBLIC; REVOKE ALL ON TABLE salescredit FROM admin; GRANT ALL ON TABLE salescredit TO admin; GRANT ALL ON TABLE salescredit TO xtrole; SET search_path = public, pg_catalog; -- -- Name: cohist; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cohist FROM PUBLIC; REVOKE ALL ON TABLE cohist FROM admin; GRANT ALL ON TABLE cohist TO admin; GRANT ALL ON TABLE cohist TO xtrole; -- -- Name: taxhist; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE taxhist FROM PUBLIC; REVOKE ALL ON TABLE taxhist FROM admin; GRANT ALL ON TABLE taxhist TO admin; GRANT ALL ON TABLE taxhist TO xtrole; -- -- Name: taxhist_taxhist_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE taxhist_taxhist_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE taxhist_taxhist_id_seq FROM admin; GRANT ALL ON SEQUENCE taxhist_taxhist_id_seq TO admin; GRANT ALL ON SEQUENCE taxhist_taxhist_id_seq TO xtrole; -- -- Name: cohisttax; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cohisttax FROM PUBLIC; REVOKE ALL ON TABLE cohisttax FROM admin; GRANT ALL ON TABLE cohisttax TO admin; GRANT ALL ON TABLE cohisttax TO xtrole; SET search_path = api, pg_catalog; -- -- Name: saleshistory; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE saleshistory FROM PUBLIC; REVOKE ALL ON TABLE saleshistory FROM admin; GRANT ALL ON TABLE saleshistory TO admin; GRANT ALL ON TABLE saleshistory TO xtrole; -- -- Name: saleslinechar; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE saleslinechar FROM PUBLIC; REVOKE ALL ON TABLE saleslinechar FROM admin; GRANT ALL ON TABLE saleslinechar TO admin; GRANT ALL ON TABLE saleslinechar TO xtrole; -- -- Name: saleslinecomment; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE saleslinecomment FROM PUBLIC; REVOKE ALL ON TABLE saleslinecomment FROM admin; GRANT ALL ON TABLE saleslinecomment TO admin; GRANT ALL ON TABLE saleslinecomment TO xtrole; -- -- Name: salesorder; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE salesorder FROM PUBLIC; REVOKE ALL ON TABLE salesorder FROM admin; GRANT ALL ON TABLE salesorder TO admin; GRANT ALL ON TABLE salesorder TO xtrole; -- -- Name: salesordercomment; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE salesordercomment FROM PUBLIC; REVOKE ALL ON TABLE salesordercomment FROM admin; GRANT ALL ON TABLE salesordercomment TO admin; GRANT ALL ON TABLE salesordercomment TO xtrole; -- -- Name: salesrep; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE salesrep FROM PUBLIC; REVOKE ALL ON TABLE salesrep FROM admin; GRANT ALL ON TABLE salesrep TO admin; GRANT ALL ON TABLE salesrep TO xtrole; SET search_path = public, pg_catalog; -- -- Name: shipvia; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE shipvia FROM PUBLIC; REVOKE ALL ON TABLE shipvia FROM admin; GRANT ALL ON TABLE shipvia TO admin; GRANT ALL ON TABLE shipvia TO xtrole; -- -- Name: sitetype; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE sitetype FROM PUBLIC; REVOKE ALL ON TABLE sitetype FROM admin; GRANT ALL ON TABLE sitetype TO admin; GRANT ALL ON TABLE sitetype TO xtrole; SET search_path = api, pg_catalog; -- -- Name: site; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE site FROM PUBLIC; REVOKE ALL ON TABLE site FROM admin; GRANT ALL ON TABLE site TO admin; GRANT ALL ON TABLE site TO xtrole; -- -- Name: sitezone; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE sitezone FROM PUBLIC; REVOKE ALL ON TABLE sitezone FROM admin; GRANT ALL ON TABLE sitezone TO admin; GRANT ALL ON TABLE sitezone TO xtrole; -- -- Name: task; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE task FROM PUBLIC; REVOKE ALL ON TABLE task FROM admin; GRANT ALL ON TABLE task TO admin; GRANT ALL ON TABLE task TO xtrole; -- -- Name: taskcomment; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE taskcomment FROM PUBLIC; REVOKE ALL ON TABLE taskcomment FROM admin; GRANT ALL ON TABLE taskcomment TO admin; GRANT ALL ON TABLE taskcomment TO xtrole; -- -- Name: todo; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE todo FROM PUBLIC; REVOKE ALL ON TABLE todo FROM admin; GRANT ALL ON TABLE todo TO admin; GRANT ALL ON TABLE todo TO xtrole; SET search_path = public, pg_catalog; -- -- Name: vendtype; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE vendtype FROM PUBLIC; REVOKE ALL ON TABLE vendtype FROM admin; GRANT ALL ON TABLE vendtype TO admin; GRANT ALL ON TABLE vendtype TO xtrole; SET search_path = api, pg_catalog; -- -- Name: vendor; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE vendor FROM PUBLIC; REVOKE ALL ON TABLE vendor FROM admin; GRANT ALL ON TABLE vendor TO admin; GRANT ALL ON TABLE vendor TO xtrole; -- -- Name: vendoraddress; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE vendoraddress FROM PUBLIC; REVOKE ALL ON TABLE vendoraddress FROM admin; GRANT ALL ON TABLE vendoraddress TO admin; GRANT ALL ON TABLE vendoraddress TO xtrole; -- -- Name: vendortype; Type: ACL; Schema: api; Owner: admin -- REVOKE ALL ON TABLE vendortype FROM PUBLIC; REVOKE ALL ON TABLE vendortype FROM admin; GRANT ALL ON TABLE vendortype TO admin; GRANT ALL ON TABLE vendortype TO xtrole; SET search_path = public, pg_catalog; -- -- Name: cmd; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cmd FROM PUBLIC; REVOKE ALL ON TABLE cmd FROM admin; GRANT ALL ON TABLE cmd TO admin; GRANT ALL ON TABLE cmd TO xtrole; -- -- Name: cmd_cmd_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cmd_cmd_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cmd_cmd_id_seq FROM admin; GRANT ALL ON SEQUENCE cmd_cmd_id_seq TO admin; GRANT ALL ON SEQUENCE cmd_cmd_id_seq TO xtrole; SET search_path = fixcountry, pg_catalog; -- -- Name: pkgcmd; Type: ACL; Schema: fixcountry; Owner: admin -- REVOKE ALL ON TABLE pkgcmd FROM PUBLIC; REVOKE ALL ON TABLE pkgcmd FROM admin; GRANT ALL ON TABLE pkgcmd TO admin; GRANT ALL ON TABLE pkgcmd TO xtrole; SET search_path = public, pg_catalog; -- -- Name: cmdarg; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cmdarg FROM PUBLIC; REVOKE ALL ON TABLE cmdarg FROM admin; GRANT ALL ON TABLE cmdarg TO admin; GRANT ALL ON TABLE cmdarg TO xtrole; -- -- Name: cmdarg_cmdarg_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cmdarg_cmdarg_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cmdarg_cmdarg_id_seq FROM admin; GRANT ALL ON SEQUENCE cmdarg_cmdarg_id_seq TO admin; GRANT ALL ON SEQUENCE cmdarg_cmdarg_id_seq TO xtrole; SET search_path = fixcountry, pg_catalog; -- -- Name: pkgcmdarg; Type: ACL; Schema: fixcountry; Owner: admin -- REVOKE ALL ON TABLE pkgcmdarg FROM PUBLIC; REVOKE ALL ON TABLE pkgcmdarg FROM admin; GRANT ALL ON TABLE pkgcmdarg TO admin; GRANT ALL ON TABLE pkgcmdarg TO xtrole; SET search_path = public, pg_catalog; -- -- Name: image_image_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE image_image_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE image_image_id_seq FROM admin; GRANT ALL ON SEQUENCE image_image_id_seq TO admin; GRANT ALL ON SEQUENCE image_image_id_seq TO xtrole; SET search_path = fixcountry, pg_catalog; -- -- Name: pkgimage; Type: ACL; Schema: fixcountry; Owner: admin -- REVOKE ALL ON TABLE pkgimage FROM PUBLIC; REVOKE ALL ON TABLE pkgimage FROM admin; GRANT ALL ON TABLE pkgimage TO admin; GRANT ALL ON TABLE pkgimage TO xtrole; SET search_path = public, pg_catalog; -- -- Name: metasql; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE metasql FROM PUBLIC; REVOKE ALL ON TABLE metasql FROM admin; GRANT ALL ON TABLE metasql TO admin; GRANT ALL ON TABLE metasql TO xtrole; -- -- Name: metasql_metasql_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE metasql_metasql_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE metasql_metasql_id_seq FROM admin; GRANT ALL ON SEQUENCE metasql_metasql_id_seq TO admin; GRANT ALL ON SEQUENCE metasql_metasql_id_seq TO xtrole; SET search_path = fixcountry, pg_catalog; -- -- Name: pkgmetasql; Type: ACL; Schema: fixcountry; Owner: admin -- REVOKE ALL ON TABLE pkgmetasql FROM PUBLIC; REVOKE ALL ON TABLE pkgmetasql FROM admin; GRANT ALL ON TABLE pkgmetasql TO admin; GRANT ALL ON TABLE pkgmetasql TO xtrole; SET search_path = public, pg_catalog; -- -- Name: priv; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE priv FROM PUBLIC; REVOKE ALL ON TABLE priv FROM admin; GRANT ALL ON TABLE priv TO admin; GRANT ALL ON TABLE priv TO xtrole; -- -- Name: priv_priv_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE priv_priv_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE priv_priv_id_seq FROM admin; GRANT ALL ON SEQUENCE priv_priv_id_seq TO admin; GRANT ALL ON SEQUENCE priv_priv_id_seq TO xtrole; SET search_path = fixcountry, pg_catalog; -- -- Name: pkgpriv; Type: ACL; Schema: fixcountry; Owner: admin -- REVOKE ALL ON TABLE pkgpriv FROM PUBLIC; REVOKE ALL ON TABLE pkgpriv FROM admin; GRANT ALL ON TABLE pkgpriv TO admin; GRANT ALL ON TABLE pkgpriv TO xtrole; SET search_path = public, pg_catalog; -- -- Name: report; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE report FROM PUBLIC; REVOKE ALL ON TABLE report FROM admin; GRANT ALL ON TABLE report TO admin; GRANT ALL ON TABLE report TO xtrole; -- -- Name: report_report_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE report_report_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE report_report_id_seq FROM admin; GRANT ALL ON SEQUENCE report_report_id_seq TO admin; GRANT ALL ON SEQUENCE report_report_id_seq TO xtrole; SET search_path = fixcountry, pg_catalog; -- -- Name: pkgreport; Type: ACL; Schema: fixcountry; Owner: admin -- REVOKE ALL ON TABLE pkgreport FROM PUBLIC; REVOKE ALL ON TABLE pkgreport FROM admin; GRANT ALL ON TABLE pkgreport TO admin; GRANT ALL ON TABLE pkgreport TO xtrole; SET search_path = public, pg_catalog; -- -- Name: script; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE script FROM PUBLIC; REVOKE ALL ON TABLE script FROM admin; GRANT ALL ON TABLE script TO admin; GRANT ALL ON TABLE script TO xtrole; -- -- Name: script_script_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE script_script_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE script_script_id_seq FROM admin; GRANT ALL ON SEQUENCE script_script_id_seq TO admin; GRANT ALL ON SEQUENCE script_script_id_seq TO xtrole; SET search_path = fixcountry, pg_catalog; -- -- Name: pkgscript; Type: ACL; Schema: fixcountry; Owner: admin -- REVOKE ALL ON TABLE pkgscript FROM PUBLIC; REVOKE ALL ON TABLE pkgscript FROM admin; GRANT ALL ON TABLE pkgscript TO admin; GRANT ALL ON TABLE pkgscript TO xtrole; SET search_path = public, pg_catalog; -- -- Name: uiform; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE uiform FROM PUBLIC; REVOKE ALL ON TABLE uiform FROM admin; GRANT ALL ON TABLE uiform TO admin; GRANT ALL ON TABLE uiform TO xtrole; -- -- Name: uiform_uiform_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE uiform_uiform_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE uiform_uiform_id_seq FROM admin; GRANT ALL ON SEQUENCE uiform_uiform_id_seq TO admin; GRANT ALL ON SEQUENCE uiform_uiform_id_seq TO xtrole; SET search_path = fixcountry, pg_catalog; -- -- Name: pkguiform; Type: ACL; Schema: fixcountry; Owner: admin -- REVOKE ALL ON TABLE pkguiform FROM PUBLIC; REVOKE ALL ON TABLE pkguiform FROM admin; GRANT ALL ON TABLE pkguiform TO admin; GRANT ALL ON TABLE pkguiform TO xtrole; SET search_path = public, pg_catalog; -- -- Name: acalitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE acalitem FROM PUBLIC; REVOKE ALL ON TABLE acalitem FROM admin; GRANT ALL ON TABLE acalitem TO admin; GRANT ALL ON TABLE acalitem TO xtrole; -- -- Name: accnt_accnt_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE accnt_accnt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE accnt_accnt_id_seq FROM admin; GRANT ALL ON SEQUENCE accnt_accnt_id_seq TO admin; GRANT ALL ON SEQUENCE accnt_accnt_id_seq TO xtrole; -- -- Name: addr_addr_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE addr_addr_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE addr_addr_id_seq FROM admin; GRANT ALL ON SEQUENCE addr_addr_id_seq TO admin; GRANT ALL ON SEQUENCE addr_addr_id_seq TO xtrole; -- -- Name: address; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE address FROM PUBLIC; REVOKE ALL ON TABLE address FROM admin; GRANT ALL ON TABLE address TO admin; GRANT ALL ON TABLE address TO xtrole; -- -- Name: alarm; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE alarm FROM PUBLIC; REVOKE ALL ON TABLE alarm FROM admin; GRANT ALL ON TABLE alarm TO admin; GRANT ALL ON TABLE alarm TO xtrole; -- -- Name: alarm_alarm_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE alarm_alarm_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE alarm_alarm_id_seq FROM admin; GRANT ALL ON SEQUENCE alarm_alarm_id_seq TO admin; GRANT ALL ON SEQUENCE alarm_alarm_id_seq TO xtrole; -- -- Name: apaccnt; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE apaccnt FROM PUBLIC; REVOKE ALL ON TABLE apaccnt FROM admin; GRANT ALL ON TABLE apaccnt TO admin; GRANT ALL ON TABLE apaccnt TO xtrole; -- -- Name: apaccnt_apaccnt_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE apaccnt_apaccnt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE apaccnt_apaccnt_id_seq FROM admin; GRANT ALL ON SEQUENCE apaccnt_apaccnt_id_seq TO admin; GRANT ALL ON SEQUENCE apaccnt_apaccnt_id_seq TO xtrole; -- -- Name: apapply; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE apapply FROM PUBLIC; REVOKE ALL ON TABLE apapply FROM admin; GRANT ALL ON TABLE apapply TO admin; GRANT ALL ON TABLE apapply TO xtrole; -- -- Name: apapply_apapply_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE apapply_apapply_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE apapply_apapply_id_seq FROM admin; GRANT ALL ON SEQUENCE apapply_apapply_id_seq TO admin; GRANT ALL ON SEQUENCE apapply_apapply_id_seq TO xtrole; -- -- Name: checkhead; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE checkhead FROM PUBLIC; REVOKE ALL ON TABLE checkhead FROM admin; GRANT ALL ON TABLE checkhead TO admin; GRANT ALL ON TABLE checkhead TO xtrole; -- -- Name: apchk; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE apchk FROM PUBLIC; REVOKE ALL ON TABLE apchk FROM admin; GRANT ALL ON TABLE apchk TO admin; GRANT ALL ON TABLE apchk TO xtrole; -- -- Name: checkitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE checkitem FROM PUBLIC; REVOKE ALL ON TABLE checkitem FROM admin; GRANT ALL ON TABLE checkitem TO admin; GRANT ALL ON TABLE checkitem TO xtrole; -- -- Name: apchkitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE apchkitem FROM PUBLIC; REVOKE ALL ON TABLE apchkitem FROM admin; GRANT ALL ON TABLE apchkitem TO admin; GRANT ALL ON TABLE apchkitem TO xtrole; -- -- Name: apcreditapply; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE apcreditapply FROM PUBLIC; REVOKE ALL ON TABLE apcreditapply FROM admin; GRANT ALL ON TABLE apcreditapply TO admin; GRANT ALL ON TABLE apcreditapply TO xtrole; -- -- Name: apcreditapply_apcreditapply_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE apcreditapply_apcreditapply_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE apcreditapply_apcreditapply_id_seq FROM admin; GRANT ALL ON SEQUENCE apcreditapply_apcreditapply_id_seq TO admin; GRANT ALL ON SEQUENCE apcreditapply_apcreditapply_id_seq TO xtrole; -- -- Name: apmemo; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE apmemo FROM PUBLIC; REVOKE ALL ON TABLE apmemo FROM admin; GRANT ALL ON TABLE apmemo TO admin; GRANT ALL ON TABLE apmemo TO xtrole; -- -- Name: apopen_apopen_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE apopen_apopen_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE apopen_apopen_id_seq FROM admin; GRANT ALL ON SEQUENCE apopen_apopen_id_seq TO admin; GRANT ALL ON SEQUENCE apopen_apopen_id_seq TO xtrole; -- -- Name: apopentax; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE apopentax FROM PUBLIC; REVOKE ALL ON TABLE apopentax FROM admin; GRANT ALL ON TABLE apopentax TO admin; GRANT ALL ON TABLE apopentax TO xtrole; -- -- Name: apselect; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE apselect FROM PUBLIC; REVOKE ALL ON TABLE apselect FROM admin; GRANT ALL ON TABLE apselect TO admin; GRANT ALL ON TABLE apselect TO xtrole; -- -- Name: apselect_apselect_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE apselect_apselect_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE apselect_apselect_id_seq FROM admin; GRANT ALL ON SEQUENCE apselect_apselect_id_seq TO admin; GRANT ALL ON SEQUENCE apselect_apselect_id_seq TO xtrole; -- -- Name: araccnt; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE araccnt FROM PUBLIC; REVOKE ALL ON TABLE araccnt FROM admin; GRANT ALL ON TABLE araccnt TO admin; GRANT ALL ON TABLE araccnt TO xtrole; -- -- Name: araccnt_araccnt_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE araccnt_araccnt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE araccnt_araccnt_id_seq FROM admin; GRANT ALL ON SEQUENCE araccnt_araccnt_id_seq TO admin; GRANT ALL ON SEQUENCE araccnt_araccnt_id_seq TO xtrole; -- -- Name: arapply; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE arapply FROM PUBLIC; REVOKE ALL ON TABLE arapply FROM admin; GRANT ALL ON TABLE arapply TO admin; GRANT ALL ON TABLE arapply TO xtrole; -- -- Name: arapply_arapply_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE arapply_arapply_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE arapply_arapply_id_seq FROM admin; GRANT ALL ON SEQUENCE arapply_arapply_id_seq TO admin; GRANT ALL ON SEQUENCE arapply_arapply_id_seq TO xtrole; -- -- Name: cashrcptitem_cashrcptitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cashrcptitem_cashrcptitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cashrcptitem_cashrcptitem_id_seq FROM admin; GRANT ALL ON SEQUENCE cashrcptitem_cashrcptitem_id_seq TO admin; GRANT ALL ON SEQUENCE cashrcptitem_cashrcptitem_id_seq TO xtrole; -- -- Name: arcreditapply; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE arcreditapply FROM PUBLIC; REVOKE ALL ON TABLE arcreditapply FROM admin; GRANT ALL ON TABLE arcreditapply TO admin; GRANT ALL ON TABLE arcreditapply TO xtrole; -- -- Name: arcreditapply_arcreditapply_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE arcreditapply_arcreditapply_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE arcreditapply_arcreditapply_id_seq FROM admin; GRANT ALL ON SEQUENCE arcreditapply_arcreditapply_id_seq TO admin; GRANT ALL ON SEQUENCE arcreditapply_arcreditapply_id_seq TO xtrole; -- -- Name: armemo; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE armemo FROM PUBLIC; REVOKE ALL ON TABLE armemo FROM admin; GRANT ALL ON TABLE armemo TO admin; GRANT ALL ON TABLE armemo TO xtrole; -- -- Name: aropen_aropen_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE aropen_aropen_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE aropen_aropen_id_seq FROM admin; GRANT ALL ON SEQUENCE aropen_aropen_id_seq TO admin; GRANT ALL ON SEQUENCE aropen_aropen_id_seq TO xtrole; -- -- Name: aropentax; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE aropentax FROM PUBLIC; REVOKE ALL ON TABLE aropentax FROM admin; GRANT ALL ON TABLE aropentax TO admin; GRANT ALL ON TABLE aropentax TO xtrole; -- -- Name: asohist; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE asohist FROM PUBLIC; REVOKE ALL ON TABLE asohist FROM admin; GRANT ALL ON TABLE asohist TO admin; GRANT ALL ON TABLE asohist TO xtrole; -- -- Name: asohist_asohist_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE asohist_asohist_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE asohist_asohist_id_seq FROM admin; GRANT ALL ON SEQUENCE asohist_asohist_id_seq TO admin; GRANT ALL ON SEQUENCE asohist_asohist_id_seq TO xtrole; -- -- Name: asohisttax; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE asohisttax FROM PUBLIC; REVOKE ALL ON TABLE asohisttax FROM admin; GRANT ALL ON TABLE asohisttax TO admin; GRANT ALL ON TABLE asohisttax TO xtrole; -- -- Name: atlasmap; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE atlasmap FROM PUBLIC; REVOKE ALL ON TABLE atlasmap FROM admin; GRANT ALL ON TABLE atlasmap TO admin; GRANT ALL ON TABLE atlasmap TO xtrole; -- -- Name: atlasmap_atlasmap_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE atlasmap_atlasmap_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE atlasmap_atlasmap_id_seq FROM admin; GRANT ALL ON SEQUENCE atlasmap_atlasmap_id_seq TO admin; GRANT ALL ON SEQUENCE atlasmap_atlasmap_id_seq TO xtrole; -- -- Name: backup_usr; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE backup_usr FROM PUBLIC; REVOKE ALL ON TABLE backup_usr FROM admin; GRANT ALL ON TABLE backup_usr TO admin; GRANT ALL ON TABLE backup_usr TO xtrole; -- -- Name: bankaccnt_bankaccnt_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE bankaccnt_bankaccnt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bankaccnt_bankaccnt_id_seq FROM admin; GRANT ALL ON SEQUENCE bankaccnt_bankaccnt_id_seq TO admin; GRANT ALL ON SEQUENCE bankaccnt_bankaccnt_id_seq TO xtrole; -- -- Name: bankadj; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE bankadj FROM PUBLIC; REVOKE ALL ON TABLE bankadj FROM admin; GRANT ALL ON TABLE bankadj TO admin; GRANT ALL ON TABLE bankadj TO xtrole; -- -- Name: bankadj_bankadj_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE bankadj_bankadj_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bankadj_bankadj_id_seq FROM admin; GRANT ALL ON SEQUENCE bankadj_bankadj_id_seq TO admin; GRANT ALL ON SEQUENCE bankadj_bankadj_id_seq TO xtrole; -- -- Name: bankadjtype; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE bankadjtype FROM PUBLIC; REVOKE ALL ON TABLE bankadjtype FROM admin; GRANT ALL ON TABLE bankadjtype TO admin; GRANT ALL ON TABLE bankadjtype TO xtrole; -- -- Name: bankadjtype_bankadjtype_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE bankadjtype_bankadjtype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bankadjtype_bankadjtype_id_seq FROM admin; GRANT ALL ON SEQUENCE bankadjtype_bankadjtype_id_seq TO admin; GRANT ALL ON SEQUENCE bankadjtype_bankadjtype_id_seq TO xtrole; -- -- Name: bankrec; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE bankrec FROM PUBLIC; REVOKE ALL ON TABLE bankrec FROM admin; GRANT ALL ON TABLE bankrec TO admin; GRANT ALL ON TABLE bankrec TO xtrole; -- -- Name: bankrec_bankrec_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE bankrec_bankrec_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bankrec_bankrec_id_seq FROM admin; GRANT ALL ON SEQUENCE bankrec_bankrec_id_seq TO admin; GRANT ALL ON SEQUENCE bankrec_bankrec_id_seq TO xtrole; -- -- Name: bankrecitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE bankrecitem FROM PUBLIC; REVOKE ALL ON TABLE bankrecitem FROM admin; GRANT ALL ON TABLE bankrecitem TO admin; GRANT ALL ON TABLE bankrecitem TO xtrole; -- -- Name: bankrecitem_bankrecitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE bankrecitem_bankrecitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bankrecitem_bankrecitem_id_seq FROM admin; GRANT ALL ON SEQUENCE bankrecitem_bankrecitem_id_seq TO admin; GRANT ALL ON SEQUENCE bankrecitem_bankrecitem_id_seq TO xtrole; -- -- Name: bomhead_bomhead_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE bomhead_bomhead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bomhead_bomhead_id_seq FROM admin; GRANT ALL ON SEQUENCE bomhead_bomhead_id_seq TO admin; GRANT ALL ON SEQUENCE bomhead_bomhead_id_seq TO xtrole; -- -- Name: bomitem_bomitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE bomitem_bomitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bomitem_bomitem_id_seq FROM admin; GRANT ALL ON SEQUENCE bomitem_bomitem_id_seq TO admin; GRANT ALL ON SEQUENCE bomitem_bomitem_id_seq TO xtrole; -- -- Name: bomitemcost; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE bomitemcost FROM PUBLIC; REVOKE ALL ON TABLE bomitemcost FROM admin; GRANT ALL ON TABLE bomitemcost TO admin; GRANT ALL ON TABLE bomitemcost TO xtrole; -- -- Name: bomitemcost_bomitemcost_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE bomitemcost_bomitemcost_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bomitemcost_bomitemcost_id_seq FROM admin; GRANT ALL ON SEQUENCE bomitemcost_bomitemcost_id_seq TO admin; GRANT ALL ON SEQUENCE bomitemcost_bomitemcost_id_seq TO xtrole; -- -- Name: bomitemsub_bomitemsub_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE bomitemsub_bomitemsub_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bomitemsub_bomitemsub_id_seq FROM admin; GRANT ALL ON SEQUENCE bomitemsub_bomitemsub_id_seq TO admin; GRANT ALL ON SEQUENCE bomitemsub_bomitemsub_id_seq TO xtrole; -- -- Name: bomwork; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE bomwork FROM PUBLIC; REVOKE ALL ON TABLE bomwork FROM admin; GRANT ALL ON TABLE bomwork TO admin; GRANT ALL ON TABLE bomwork TO xtrole; -- -- Name: bomwork_bomwork_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE bomwork_bomwork_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bomwork_bomwork_id_seq FROM admin; GRANT ALL ON SEQUENCE bomwork_bomwork_id_seq TO admin; GRANT ALL ON SEQUENCE bomwork_bomwork_id_seq TO xtrole; -- -- Name: budget; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE budget FROM PUBLIC; REVOKE ALL ON TABLE budget FROM admin; GRANT ALL ON TABLE budget TO admin; GRANT ALL ON TABLE budget TO xtrole; -- -- Name: budghead_budghead_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE budghead_budghead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE budghead_budghead_id_seq FROM admin; GRANT ALL ON SEQUENCE budghead_budghead_id_seq TO admin; GRANT ALL ON SEQUENCE budghead_budghead_id_seq TO xtrole; -- -- Name: budgitem_budgitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE budgitem_budgitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE budgitem_budgitem_id_seq FROM admin; GRANT ALL ON SEQUENCE budgitem_budgitem_id_seq TO admin; GRANT ALL ON SEQUENCE budgitem_budgitem_id_seq TO xtrole; -- -- Name: calhead; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE calhead FROM PUBLIC; REVOKE ALL ON TABLE calhead FROM admin; GRANT ALL ON TABLE calhead TO admin; GRANT ALL ON TABLE calhead TO xtrole; -- -- Name: calhead_calhead_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE calhead_calhead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE calhead_calhead_id_seq FROM admin; GRANT ALL ON SEQUENCE calhead_calhead_id_seq TO admin; GRANT ALL ON SEQUENCE calhead_calhead_id_seq TO xtrole; -- -- Name: carrier_carrier_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE carrier_carrier_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE carrier_carrier_id_seq FROM admin; GRANT ALL ON SEQUENCE carrier_carrier_id_seq TO admin; GRANT ALL ON SEQUENCE carrier_carrier_id_seq TO xtrole; -- -- Name: cashrcpt_cashrcpt_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cashrcpt_cashrcpt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cashrcpt_cashrcpt_id_seq FROM admin; GRANT ALL ON SEQUENCE cashrcpt_cashrcpt_id_seq TO admin; GRANT ALL ON SEQUENCE cashrcpt_cashrcpt_id_seq TO xtrole; -- -- Name: cashrcptmisc_cashrcptmisc_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cashrcptmisc_cashrcptmisc_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cashrcptmisc_cashrcptmisc_id_seq FROM admin; GRANT ALL ON SEQUENCE cashrcptmisc_cashrcptmisc_id_seq TO admin; GRANT ALL ON SEQUENCE cashrcptmisc_cashrcptmisc_id_seq TO xtrole; -- -- Name: ccard_ccard_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE ccard_ccard_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ccard_ccard_id_seq FROM admin; GRANT ALL ON SEQUENCE ccard_ccard_id_seq TO admin; GRANT ALL ON SEQUENCE ccard_ccard_id_seq TO xtrole; -- -- Name: ccardaud; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE ccardaud FROM PUBLIC; REVOKE ALL ON TABLE ccardaud FROM admin; GRANT ALL ON TABLE ccardaud TO admin; GRANT ALL ON TABLE ccardaud TO xtrole; -- -- Name: ccardaud_ccardaud_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE ccardaud_ccardaud_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ccardaud_ccardaud_id_seq FROM admin; GRANT ALL ON SEQUENCE ccardaud_ccardaud_id_seq TO admin; GRANT ALL ON SEQUENCE ccardaud_ccardaud_id_seq TO xtrole; -- -- Name: ccbank; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE ccbank FROM PUBLIC; REVOKE ALL ON TABLE ccbank FROM admin; GRANT ALL ON TABLE ccbank TO admin; GRANT ALL ON TABLE ccbank TO xtrole; -- -- Name: ccbank_ccbank_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE ccbank_ccbank_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ccbank_ccbank_id_seq FROM admin; GRANT ALL ON SEQUENCE ccbank_ccbank_id_seq TO admin; GRANT ALL ON SEQUENCE ccbank_ccbank_id_seq TO xtrole; -- -- Name: ccpay; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE ccpay FROM PUBLIC; REVOKE ALL ON TABLE ccpay FROM admin; GRANT ALL ON TABLE ccpay TO admin; GRANT ALL ON TABLE ccpay TO xtrole; -- -- Name: ccpay_ccpay_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE ccpay_ccpay_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ccpay_ccpay_id_seq FROM admin; GRANT ALL ON SEQUENCE ccpay_ccpay_id_seq TO admin; GRANT ALL ON SEQUENCE ccpay_ccpay_id_seq TO xtrole; -- -- Name: char_char_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE char_char_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE char_char_id_seq FROM admin; GRANT ALL ON SEQUENCE char_char_id_seq TO admin; GRANT ALL ON SEQUENCE char_char_id_seq TO xtrole; -- -- Name: charass_charass_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE charass_charass_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE charass_charass_id_seq FROM admin; GRANT ALL ON SEQUENCE charass_charass_id_seq TO admin; GRANT ALL ON SEQUENCE charass_charass_id_seq TO xtrole; -- -- Name: charopt; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE charopt FROM PUBLIC; REVOKE ALL ON TABLE charopt FROM admin; GRANT ALL ON TABLE charopt TO admin; GRANT ALL ON TABLE charopt TO xtrole; -- -- Name: charopt_charopt_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE charopt_charopt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE charopt_charopt_id_seq FROM admin; GRANT ALL ON SEQUENCE charopt_charopt_id_seq TO admin; GRANT ALL ON SEQUENCE charopt_charopt_id_seq TO xtrole; -- -- Name: checkhead_checkhead_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE checkhead_checkhead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE checkhead_checkhead_id_seq FROM admin; GRANT ALL ON SEQUENCE checkhead_checkhead_id_seq TO admin; GRANT ALL ON SEQUENCE checkhead_checkhead_id_seq TO xtrole; -- -- Name: checkitem_checkitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE checkitem_checkitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE checkitem_checkitem_id_seq FROM admin; GRANT ALL ON SEQUENCE checkitem_checkitem_id_seq TO admin; GRANT ALL ON SEQUENCE checkitem_checkitem_id_seq TO xtrole; -- -- Name: checkrecip; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE checkrecip FROM PUBLIC; REVOKE ALL ON TABLE checkrecip FROM admin; GRANT ALL ON TABLE checkrecip TO admin; GRANT ALL ON TABLE checkrecip TO xtrole; -- -- Name: classcode_classcode_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE classcode_classcode_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE classcode_classcode_id_seq FROM admin; GRANT ALL ON SEQUENCE classcode_classcode_id_seq TO admin; GRANT ALL ON SEQUENCE classcode_classcode_id_seq TO xtrole; -- -- Name: cmhead_cmhead_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cmhead_cmhead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cmhead_cmhead_id_seq FROM admin; GRANT ALL ON SEQUENCE cmhead_cmhead_id_seq TO admin; GRANT ALL ON SEQUENCE cmhead_cmhead_id_seq TO xtrole; -- -- Name: cmheadtax; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cmheadtax FROM PUBLIC; REVOKE ALL ON TABLE cmheadtax FROM admin; GRANT ALL ON TABLE cmheadtax TO admin; GRANT ALL ON TABLE cmheadtax TO xtrole; -- -- Name: cmitem_cmitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cmitem_cmitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cmitem_cmitem_id_seq FROM admin; GRANT ALL ON SEQUENCE cmitem_cmitem_id_seq TO admin; GRANT ALL ON SEQUENCE cmitem_cmitem_id_seq TO xtrole; -- -- Name: cmitemtax; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cmitemtax FROM PUBLIC; REVOKE ALL ON TABLE cmitemtax FROM admin; GRANT ALL ON TABLE cmitemtax TO admin; GRANT ALL ON TABLE cmitemtax TO xtrole; -- -- Name: cmnttype_cmnttype_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cmnttype_cmnttype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cmnttype_cmnttype_id_seq FROM admin; GRANT ALL ON SEQUENCE cmnttype_cmnttype_id_seq TO admin; GRANT ALL ON SEQUENCE cmnttype_cmnttype_id_seq TO xtrole; -- -- Name: cmnttypesource; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cmnttypesource FROM PUBLIC; REVOKE ALL ON TABLE cmnttypesource FROM admin; GRANT ALL ON TABLE cmnttypesource TO admin; GRANT ALL ON TABLE cmnttypesource TO xtrole; -- -- Name: cmnttypesource_cmnttypesource_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cmnttypesource_cmnttypesource_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cmnttypesource_cmnttypesource_id_seq FROM admin; GRANT ALL ON SEQUENCE cmnttypesource_cmnttypesource_id_seq TO admin; GRANT ALL ON SEQUENCE cmnttypesource_cmnttypesource_id_seq TO xtrole; -- -- Name: cntct_cntct_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cntct_cntct_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cntct_cntct_id_seq FROM admin; GRANT ALL ON SEQUENCE cntct_cntct_id_seq TO admin; GRANT ALL ON SEQUENCE cntct_cntct_id_seq TO xtrole; -- -- Name: cntctaddr; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cntctaddr FROM PUBLIC; REVOKE ALL ON TABLE cntctaddr FROM admin; GRANT ALL ON TABLE cntctaddr TO admin; GRANT ALL ON TABLE cntctaddr TO xtrole; -- -- Name: cntctaddr_cntctaddr_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cntctaddr_cntctaddr_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cntctaddr_cntctaddr_id_seq FROM admin; GRANT ALL ON SEQUENCE cntctaddr_cntctaddr_id_seq TO admin; GRANT ALL ON SEQUENCE cntctaddr_cntctaddr_id_seq TO xtrole; -- -- Name: cntctdata; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cntctdata FROM PUBLIC; REVOKE ALL ON TABLE cntctdata FROM admin; GRANT ALL ON TABLE cntctdata TO admin; GRANT ALL ON TABLE cntctdata TO xtrole; -- -- Name: cntctdata_cntctdata_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cntctdata_cntctdata_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cntctdata_cntctdata_id_seq FROM admin; GRANT ALL ON SEQUENCE cntctdata_cntctdata_id_seq TO admin; GRANT ALL ON SEQUENCE cntctdata_cntctdata_id_seq TO xtrole; -- -- Name: cntcteml; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cntcteml FROM PUBLIC; REVOKE ALL ON TABLE cntcteml FROM admin; GRANT ALL ON TABLE cntcteml TO admin; GRANT ALL ON TABLE cntcteml TO xtrole; -- -- Name: cntcteml_cntcteml_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cntcteml_cntcteml_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cntcteml_cntcteml_id_seq FROM admin; GRANT ALL ON SEQUENCE cntcteml_cntcteml_id_seq TO admin; GRANT ALL ON SEQUENCE cntcteml_cntcteml_id_seq TO xtrole; -- -- Name: cntctmrgd; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cntctmrgd FROM PUBLIC; REVOKE ALL ON TABLE cntctmrgd FROM admin; GRANT ALL ON TABLE cntctmrgd TO admin; GRANT ALL ON TABLE cntctmrgd TO xtrole; -- -- Name: cntctsel; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cntctsel FROM PUBLIC; REVOKE ALL ON TABLE cntctsel FROM admin; GRANT ALL ON TABLE cntctsel TO admin; GRANT ALL ON TABLE cntctsel TO xtrole; -- -- Name: cntslip_cntslip_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cntslip_cntslip_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cntslip_cntslip_id_seq FROM admin; GRANT ALL ON SEQUENCE cntslip_cntslip_id_seq TO admin; GRANT ALL ON SEQUENCE cntslip_cntslip_id_seq TO xtrole; -- -- Name: cobill; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cobill FROM PUBLIC; REVOKE ALL ON TABLE cobill FROM admin; GRANT ALL ON TABLE cobill TO admin; GRANT ALL ON TABLE cobill TO xtrole; -- -- Name: cobill_cobill_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cobill_cobill_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cobill_cobill_id_seq FROM admin; GRANT ALL ON SEQUENCE cobill_cobill_id_seq TO admin; GRANT ALL ON SEQUENCE cobill_cobill_id_seq TO xtrole; -- -- Name: cobilltax; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cobilltax FROM PUBLIC; REVOKE ALL ON TABLE cobilltax FROM admin; GRANT ALL ON TABLE cobilltax TO admin; GRANT ALL ON TABLE cobilltax TO xtrole; -- -- Name: cobmisc; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cobmisc FROM PUBLIC; REVOKE ALL ON TABLE cobmisc FROM admin; GRANT ALL ON TABLE cobmisc TO admin; GRANT ALL ON TABLE cobmisc TO xtrole; -- -- Name: cobmisc_cobmisc_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cobmisc_cobmisc_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cobmisc_cobmisc_id_seq FROM admin; GRANT ALL ON SEQUENCE cobmisc_cobmisc_id_seq TO admin; GRANT ALL ON SEQUENCE cobmisc_cobmisc_id_seq TO xtrole; -- -- Name: cobmisctax; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cobmisctax FROM PUBLIC; REVOKE ALL ON TABLE cobmisctax FROM admin; GRANT ALL ON TABLE cobmisctax TO admin; GRANT ALL ON TABLE cobmisctax TO xtrole; -- -- Name: cohead_cohead_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cohead_cohead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cohead_cohead_id_seq FROM admin; GRANT ALL ON SEQUENCE cohead_cohead_id_seq TO admin; GRANT ALL ON SEQUENCE cohead_cohead_id_seq TO xtrole; -- -- Name: cohist_cohist_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cohist_cohist_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cohist_cohist_id_seq FROM admin; GRANT ALL ON SEQUENCE cohist_cohist_id_seq TO admin; GRANT ALL ON SEQUENCE cohist_cohist_id_seq TO xtrole; -- -- Name: coitem_coitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE coitem_coitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE coitem_coitem_id_seq FROM admin; GRANT ALL ON SEQUENCE coitem_coitem_id_seq TO admin; GRANT ALL ON SEQUENCE coitem_coitem_id_seq TO xtrole; -- -- Name: comment_comment_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE comment_comment_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE comment_comment_id_seq FROM admin; GRANT ALL ON SEQUENCE comment_comment_id_seq TO admin; GRANT ALL ON SEQUENCE comment_comment_id_seq TO xtrole; -- -- Name: company; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE company FROM PUBLIC; REVOKE ALL ON TABLE company FROM admin; GRANT ALL ON TABLE company TO admin; GRANT ALL ON TABLE company TO xtrole; -- -- Name: company_company_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE company_company_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE company_company_id_seq FROM admin; GRANT ALL ON SEQUENCE company_company_id_seq TO admin; GRANT ALL ON SEQUENCE company_company_id_seq TO xtrole; -- -- Name: contrct_contrct_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE contrct_contrct_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE contrct_contrct_id_seq FROM admin; GRANT ALL ON SEQUENCE contrct_contrct_id_seq TO admin; GRANT ALL ON SEQUENCE contrct_contrct_id_seq TO xtrole; -- -- Name: shiphead; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE shiphead FROM PUBLIC; REVOKE ALL ON TABLE shiphead FROM admin; GRANT ALL ON TABLE shiphead TO admin; GRANT ALL ON TABLE shiphead TO xtrole; -- -- Name: shipitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE shipitem FROM PUBLIC; REVOKE ALL ON TABLE shipitem FROM admin; GRANT ALL ON TABLE shipitem TO admin; GRANT ALL ON TABLE shipitem TO xtrole; -- -- Name: coship; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE coship FROM PUBLIC; REVOKE ALL ON TABLE coship FROM admin; GRANT ALL ON TABLE coship TO admin; GRANT ALL ON TABLE coship TO xtrole; -- -- Name: coship_coship_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE coship_coship_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE coship_coship_id_seq FROM admin; GRANT ALL ON SEQUENCE coship_coship_id_seq TO admin; GRANT ALL ON SEQUENCE coship_coship_id_seq TO xtrole; -- -- Name: cosmisc; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cosmisc FROM PUBLIC; REVOKE ALL ON TABLE cosmisc FROM admin; GRANT ALL ON TABLE cosmisc TO admin; GRANT ALL ON TABLE cosmisc TO xtrole; -- -- Name: cosmisc_cosmisc_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cosmisc_cosmisc_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cosmisc_cosmisc_id_seq FROM admin; GRANT ALL ON SEQUENCE cosmisc_cosmisc_id_seq TO admin; GRANT ALL ON SEQUENCE cosmisc_cosmisc_id_seq TO xtrole; -- -- Name: cosrc_cosrc_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cosrc_cosrc_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cosrc_cosrc_id_seq FROM admin; GRANT ALL ON SEQUENCE cosrc_cosrc_id_seq TO admin; GRANT ALL ON SEQUENCE cosrc_cosrc_id_seq TO xtrole; -- -- Name: costcat_costcat_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE costcat_costcat_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE costcat_costcat_id_seq FROM admin; GRANT ALL ON SEQUENCE costcat_costcat_id_seq TO admin; GRANT ALL ON SEQUENCE costcat_costcat_id_seq TO xtrole; -- -- Name: costelem_costelem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE costelem_costelem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE costelem_costelem_id_seq FROM admin; GRANT ALL ON SEQUENCE costelem_costelem_id_seq TO admin; GRANT ALL ON SEQUENCE costelem_costelem_id_seq TO xtrole; -- -- Name: costhist; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE costhist FROM PUBLIC; REVOKE ALL ON TABLE costhist FROM admin; GRANT ALL ON TABLE costhist TO admin; GRANT ALL ON TABLE costhist TO xtrole; -- -- Name: costhist_costhist_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE costhist_costhist_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE costhist_costhist_id_seq FROM admin; GRANT ALL ON SEQUENCE costhist_costhist_id_seq TO admin; GRANT ALL ON SEQUENCE costhist_costhist_id_seq TO xtrole; -- -- Name: costupdate; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE costupdate FROM PUBLIC; REVOKE ALL ON TABLE costupdate FROM admin; GRANT ALL ON TABLE costupdate TO admin; GRANT ALL ON TABLE costupdate TO xtrole; -- -- Name: country; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE country FROM PUBLIC; REVOKE ALL ON TABLE country FROM admin; GRANT ALL ON TABLE country TO admin; GRANT ALL ON TABLE country TO xtrole; -- -- Name: country_country_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE country_country_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE country_country_id_seq FROM admin; GRANT ALL ON SEQUENCE country_country_id_seq TO admin; GRANT ALL ON SEQUENCE country_country_id_seq TO xtrole; -- -- Name: salesaccnt; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE salesaccnt FROM PUBLIC; REVOKE ALL ON TABLE salesaccnt FROM admin; GRANT ALL ON TABLE salesaccnt TO admin; GRANT ALL ON TABLE salesaccnt TO xtrole; -- -- Name: creditmemoeditlist; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE creditmemoeditlist FROM PUBLIC; REVOKE ALL ON TABLE creditmemoeditlist FROM admin; GRANT ALL ON TABLE creditmemoeditlist TO admin; GRANT ALL ON TABLE creditmemoeditlist TO xtrole; -- -- Name: creditmemoitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE creditmemoitem FROM PUBLIC; REVOKE ALL ON TABLE creditmemoitem FROM admin; GRANT ALL ON TABLE creditmemoitem TO admin; GRANT ALL ON TABLE creditmemoitem TO xtrole; -- -- Name: crmacct_crmacct_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE crmacct_crmacct_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE crmacct_crmacct_id_seq FROM admin; GRANT ALL ON SEQUENCE crmacct_crmacct_id_seq TO admin; GRANT ALL ON SEQUENCE crmacct_crmacct_id_seq TO xtrole; -- -- Name: crmacctsel; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE crmacctsel FROM PUBLIC; REVOKE ALL ON TABLE crmacctsel FROM admin; GRANT ALL ON TABLE crmacctsel TO admin; GRANT ALL ON TABLE crmacctsel TO xtrole; -- -- Name: curr_rate; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE curr_rate FROM PUBLIC; REVOKE ALL ON TABLE curr_rate FROM admin; GRANT ALL ON TABLE curr_rate TO admin; GRANT ALL ON TABLE curr_rate TO xtrole; -- -- Name: curr_rate_curr_rate_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE curr_rate_curr_rate_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE curr_rate_curr_rate_id_seq FROM admin; GRANT ALL ON SEQUENCE curr_rate_curr_rate_id_seq TO admin; GRANT ALL ON SEQUENCE curr_rate_curr_rate_id_seq TO xtrole; -- -- Name: curr_symbol_curr_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE curr_symbol_curr_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE curr_symbol_curr_id_seq FROM admin; GRANT ALL ON SEQUENCE curr_symbol_curr_id_seq TO admin; GRANT ALL ON SEQUENCE curr_symbol_curr_id_seq TO xtrole; -- -- Name: cust; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE cust FROM PUBLIC; REVOKE ALL ON TABLE cust FROM admin; GRANT ALL ON TABLE cust TO admin; GRANT ALL ON TABLE cust TO xtrole; -- -- Name: cust_serial_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE cust_serial_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cust_serial_seq FROM admin; GRANT ALL ON SEQUENCE cust_serial_seq TO admin; GRANT ALL ON SEQUENCE cust_serial_seq TO xtrole; -- -- Name: custform; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE custform FROM PUBLIC; REVOKE ALL ON TABLE custform FROM admin; GRANT ALL ON TABLE custform TO admin; GRANT ALL ON TABLE custform TO xtrole; -- -- Name: custform_custform_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE custform_custform_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE custform_custform_id_seq FROM admin; GRANT ALL ON SEQUENCE custform_custform_id_seq TO admin; GRANT ALL ON SEQUENCE custform_custform_id_seq TO xtrole; -- -- Name: custgrp; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE custgrp FROM PUBLIC; REVOKE ALL ON TABLE custgrp FROM admin; GRANT ALL ON TABLE custgrp TO admin; GRANT ALL ON TABLE custgrp TO xtrole; -- -- Name: custgrp_custgrp_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE custgrp_custgrp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE custgrp_custgrp_id_seq FROM admin; GRANT ALL ON SEQUENCE custgrp_custgrp_id_seq TO admin; GRANT ALL ON SEQUENCE custgrp_custgrp_id_seq TO xtrole; -- -- Name: custgrpitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE custgrpitem FROM PUBLIC; REVOKE ALL ON TABLE custgrpitem FROM admin; GRANT ALL ON TABLE custgrpitem TO admin; GRANT ALL ON TABLE custgrpitem TO xtrole; -- -- Name: custgrpitem_custgrpitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE custgrpitem_custgrpitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE custgrpitem_custgrpitem_id_seq FROM admin; GRANT ALL ON SEQUENCE custgrpitem_custgrpitem_id_seq TO admin; GRANT ALL ON SEQUENCE custgrpitem_custgrpitem_id_seq TO xtrole; -- -- Name: custtype_custtype_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE custtype_custtype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE custtype_custtype_id_seq FROM admin; GRANT ALL ON SEQUENCE custtype_custtype_id_seq TO admin; GRANT ALL ON SEQUENCE custtype_custtype_id_seq TO xtrole; -- -- Name: dept_dept_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE dept_dept_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE dept_dept_id_seq FROM admin; GRANT ALL ON SEQUENCE dept_dept_id_seq TO admin; GRANT ALL ON SEQUENCE dept_dept_id_seq TO xtrole; -- -- Name: destination; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE destination FROM PUBLIC; REVOKE ALL ON TABLE destination FROM admin; GRANT ALL ON TABLE destination TO admin; GRANT ALL ON TABLE destination TO xtrole; -- -- Name: destination_destination_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE destination_destination_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE destination_destination_id_seq FROM admin; GRANT ALL ON SEQUENCE destination_destination_id_seq TO admin; GRANT ALL ON SEQUENCE destination_destination_id_seq TO xtrole; -- -- Name: wo; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE wo FROM PUBLIC; REVOKE ALL ON TABLE wo FROM admin; GRANT ALL ON TABLE wo TO admin; GRANT ALL ON TABLE wo TO xtrole; -- -- Name: docinfo; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE docinfo FROM PUBLIC; REVOKE ALL ON TABLE docinfo FROM admin; GRANT ALL ON TABLE docinfo TO admin; GRANT ALL ON TABLE docinfo TO xtrole; -- -- Name: emp_emp_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE emp_emp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE emp_emp_id_seq FROM admin; GRANT ALL ON SEQUENCE emp_emp_id_seq TO admin; GRANT ALL ON SEQUENCE emp_emp_id_seq TO xtrole; -- -- Name: empgrp; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE empgrp FROM PUBLIC; REVOKE ALL ON TABLE empgrp FROM admin; GRANT ALL ON TABLE empgrp TO admin; GRANT ALL ON TABLE empgrp TO xtrole; -- -- Name: empgrp_empgrp_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE empgrp_empgrp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE empgrp_empgrp_id_seq FROM admin; GRANT ALL ON SEQUENCE empgrp_empgrp_id_seq TO admin; GRANT ALL ON SEQUENCE empgrp_empgrp_id_seq TO xtrole; -- -- Name: empgrpitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE empgrpitem FROM PUBLIC; REVOKE ALL ON TABLE empgrpitem FROM admin; GRANT ALL ON TABLE empgrpitem TO admin; GRANT ALL ON TABLE empgrpitem TO xtrole; -- -- Name: empgrpitem_empgrpitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE empgrpitem_empgrpitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE empgrpitem_empgrpitem_id_seq FROM admin; GRANT ALL ON SEQUENCE empgrpitem_empgrpitem_id_seq TO admin; GRANT ALL ON SEQUENCE empgrpitem_empgrpitem_id_seq TO xtrole; -- -- Name: evntlog; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE evntlog FROM PUBLIC; REVOKE ALL ON TABLE evntlog FROM admin; GRANT ALL ON TABLE evntlog TO admin; GRANT ALL ON TABLE evntlog TO xtrole; -- -- Name: evntlog_evntlog_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE evntlog_evntlog_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE evntlog_evntlog_id_seq FROM admin; GRANT ALL ON SEQUENCE evntlog_evntlog_id_seq TO admin; GRANT ALL ON SEQUENCE evntlog_evntlog_id_seq TO xtrole; -- -- Name: evntnot; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE evntnot FROM PUBLIC; REVOKE ALL ON TABLE evntnot FROM admin; GRANT ALL ON TABLE evntnot TO admin; GRANT ALL ON TABLE evntnot TO xtrole; -- -- Name: evntnot_evntnot_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE evntnot_evntnot_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE evntnot_evntnot_id_seq FROM admin; GRANT ALL ON SEQUENCE evntnot_evntnot_id_seq TO admin; GRANT ALL ON SEQUENCE evntnot_evntnot_id_seq TO xtrole; -- -- Name: evnttype; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE evnttype FROM PUBLIC; REVOKE ALL ON TABLE evnttype FROM admin; GRANT ALL ON TABLE evnttype TO admin; GRANT ALL ON TABLE evnttype TO xtrole; -- -- Name: evnttype_evnttype_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE evnttype_evnttype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE evnttype_evnttype_id_seq FROM admin; GRANT ALL ON SEQUENCE evnttype_evnttype_id_seq TO admin; GRANT ALL ON SEQUENCE evnttype_evnttype_id_seq TO xtrole; -- -- Name: expcat_expcat_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE expcat_expcat_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE expcat_expcat_id_seq FROM admin; GRANT ALL ON SEQUENCE expcat_expcat_id_seq TO admin; GRANT ALL ON SEQUENCE expcat_expcat_id_seq TO xtrole; -- -- Name: file_file_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE file_file_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE file_file_id_seq FROM admin; GRANT ALL ON SEQUENCE file_file_id_seq TO admin; GRANT ALL ON SEQUENCE file_file_id_seq TO xtrole; -- -- Name: filter; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE filter FROM PUBLIC; REVOKE ALL ON TABLE filter FROM admin; GRANT ALL ON TABLE filter TO admin; GRANT ALL ON TABLE filter TO xtrole; -- -- Name: filter_filter_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE filter_filter_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE filter_filter_id_seq FROM admin; GRANT ALL ON SEQUENCE filter_filter_id_seq TO admin; GRANT ALL ON SEQUENCE filter_filter_id_seq TO xtrole; -- -- Name: flhead; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE flhead FROM PUBLIC; REVOKE ALL ON TABLE flhead FROM admin; GRANT ALL ON TABLE flhead TO admin; GRANT ALL ON TABLE flhead TO xtrole; -- -- Name: flitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE flitem FROM PUBLIC; REVOKE ALL ON TABLE flitem FROM admin; GRANT ALL ON TABLE flitem TO admin; GRANT ALL ON TABLE flitem TO xtrole; -- -- Name: flaccnt; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE flaccnt FROM PUBLIC; REVOKE ALL ON TABLE flaccnt FROM admin; GRANT ALL ON TABLE flaccnt TO admin; GRANT ALL ON TABLE flaccnt TO xtrole; -- -- Name: flcol; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE flcol FROM PUBLIC; REVOKE ALL ON TABLE flcol FROM admin; GRANT ALL ON TABLE flcol TO admin; GRANT ALL ON TABLE flcol TO xtrole; -- -- Name: flcol_flcol_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE flcol_flcol_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE flcol_flcol_id_seq FROM admin; GRANT ALL ON SEQUENCE flcol_flcol_id_seq TO admin; GRANT ALL ON SEQUENCE flcol_flcol_id_seq TO xtrole; -- -- Name: flgrp; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE flgrp FROM PUBLIC; REVOKE ALL ON TABLE flgrp FROM admin; GRANT ALL ON TABLE flgrp TO admin; GRANT ALL ON TABLE flgrp TO xtrole; -- -- Name: flgrp_flgrp_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE flgrp_flgrp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE flgrp_flgrp_id_seq FROM admin; GRANT ALL ON SEQUENCE flgrp_flgrp_id_seq TO admin; GRANT ALL ON SEQUENCE flgrp_flgrp_id_seq TO xtrole; -- -- Name: flhead_flhead_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE flhead_flhead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE flhead_flhead_id_seq FROM admin; GRANT ALL ON SEQUENCE flhead_flhead_id_seq TO admin; GRANT ALL ON SEQUENCE flhead_flhead_id_seq TO xtrole; -- -- Name: flitem_flitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE flitem_flitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE flitem_flitem_id_seq FROM admin; GRANT ALL ON SEQUENCE flitem_flitem_id_seq TO admin; GRANT ALL ON SEQUENCE flitem_flitem_id_seq TO xtrole; -- -- Name: flnotes; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE flnotes FROM PUBLIC; REVOKE ALL ON TABLE flnotes FROM admin; GRANT ALL ON TABLE flnotes TO admin; GRANT ALL ON TABLE flnotes TO xtrole; -- -- Name: flnotes_flnotes_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE flnotes_flnotes_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE flnotes_flnotes_id_seq FROM admin; GRANT ALL ON SEQUENCE flnotes_flnotes_id_seq TO admin; GRANT ALL ON SEQUENCE flnotes_flnotes_id_seq TO xtrole; -- -- Name: flrpt; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE flrpt FROM PUBLIC; REVOKE ALL ON TABLE flrpt FROM admin; GRANT ALL ON TABLE flrpt TO admin; GRANT ALL ON TABLE flrpt TO xtrole; -- -- Name: flrpt_flrpt_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE flrpt_flrpt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE flrpt_flrpt_id_seq FROM admin; GRANT ALL ON SEQUENCE flrpt_flrpt_id_seq TO admin; GRANT ALL ON SEQUENCE flrpt_flrpt_id_seq TO xtrole; -- -- Name: flspec; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE flspec FROM PUBLIC; REVOKE ALL ON TABLE flspec FROM admin; GRANT ALL ON TABLE flspec TO admin; GRANT ALL ON TABLE flspec TO xtrole; -- -- Name: flspec_flspec_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE flspec_flspec_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE flspec_flspec_id_seq FROM admin; GRANT ALL ON SEQUENCE flspec_flspec_id_seq TO admin; GRANT ALL ON SEQUENCE flspec_flspec_id_seq TO xtrole; -- -- Name: form; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE form FROM PUBLIC; REVOKE ALL ON TABLE form FROM admin; GRANT ALL ON TABLE form TO admin; GRANT ALL ON TABLE form TO xtrole; -- -- Name: form_form_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE form_form_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE form_form_id_seq FROM admin; GRANT ALL ON SEQUENCE form_form_id_seq TO admin; GRANT ALL ON SEQUENCE form_form_id_seq TO xtrole; -- -- Name: freightclass_freightclass_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE freightclass_freightclass_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE freightclass_freightclass_id_seq FROM admin; GRANT ALL ON SEQUENCE freightclass_freightclass_id_seq TO admin; GRANT ALL ON SEQUENCE freightclass_freightclass_id_seq TO xtrole; -- -- Name: glseries; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE glseries FROM PUBLIC; REVOKE ALL ON TABLE glseries FROM admin; GRANT ALL ON TABLE glseries TO admin; GRANT ALL ON TABLE glseries TO xtrole; -- -- Name: glseries_glseries_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE glseries_glseries_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE glseries_glseries_id_seq FROM admin; GRANT ALL ON SEQUENCE glseries_glseries_id_seq TO admin; GRANT ALL ON SEQUENCE glseries_glseries_id_seq TO xtrole; -- -- Name: gltrans_gltrans_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE gltrans_gltrans_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE gltrans_gltrans_id_seq FROM admin; GRANT ALL ON SEQUENCE gltrans_gltrans_id_seq TO admin; GRANT ALL ON SEQUENCE gltrans_gltrans_id_seq TO xtrole; -- -- Name: gltrans_sequence_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE gltrans_sequence_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE gltrans_sequence_seq FROM admin; GRANT ALL ON SEQUENCE gltrans_sequence_seq TO admin; GRANT ALL ON SEQUENCE gltrans_sequence_seq TO xtrole; -- -- Name: grp; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE grp FROM PUBLIC; REVOKE ALL ON TABLE grp FROM admin; GRANT ALL ON TABLE grp TO admin; GRANT ALL ON TABLE grp TO xtrole; -- -- Name: grp_grp_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE grp_grp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE grp_grp_id_seq FROM admin; GRANT ALL ON SEQUENCE grp_grp_id_seq TO admin; GRANT ALL ON SEQUENCE grp_grp_id_seq TO xtrole; -- -- Name: grppriv; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE grppriv FROM PUBLIC; REVOKE ALL ON TABLE grppriv FROM admin; GRANT ALL ON TABLE grppriv TO admin; GRANT ALL ON TABLE grppriv TO xtrole; -- -- Name: grppriv_grppriv_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE grppriv_grppriv_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE grppriv_grppriv_id_seq FROM admin; GRANT ALL ON SEQUENCE grppriv_grppriv_id_seq TO admin; GRANT ALL ON SEQUENCE grppriv_grppriv_id_seq TO xtrole; -- -- Name: hnfc; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE hnfc FROM PUBLIC; REVOKE ALL ON TABLE hnfc FROM admin; GRANT ALL ON TABLE hnfc TO admin; GRANT ALL ON TABLE hnfc TO xtrole; -- -- Name: hnfc_hnfc_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE hnfc_hnfc_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE hnfc_hnfc_id_seq FROM admin; GRANT ALL ON SEQUENCE hnfc_hnfc_id_seq TO admin; GRANT ALL ON SEQUENCE hnfc_hnfc_id_seq TO xtrole; -- -- Name: incdt_incdt_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE incdt_incdt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE incdt_incdt_id_seq FROM admin; GRANT ALL ON SEQUENCE incdt_incdt_id_seq TO admin; GRANT ALL ON SEQUENCE incdt_incdt_id_seq TO xtrole; -- -- Name: incdtcat_incdtcat_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE incdtcat_incdtcat_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE incdtcat_incdtcat_id_seq FROM admin; GRANT ALL ON SEQUENCE incdtcat_incdtcat_id_seq TO admin; GRANT ALL ON SEQUENCE incdtcat_incdtcat_id_seq TO xtrole; -- -- Name: incdthist; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE incdthist FROM PUBLIC; REVOKE ALL ON TABLE incdthist FROM admin; GRANT ALL ON TABLE incdthist TO admin; GRANT ALL ON TABLE incdthist TO xtrole; -- -- Name: incdthist_incdthist_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE incdthist_incdthist_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE incdthist_incdthist_id_seq FROM admin; GRANT ALL ON SEQUENCE incdthist_incdthist_id_seq TO admin; GRANT ALL ON SEQUENCE incdthist_incdthist_id_seq TO xtrole; -- -- Name: incdtpriority_incdtpriority_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE incdtpriority_incdtpriority_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE incdtpriority_incdtpriority_id_seq FROM admin; GRANT ALL ON SEQUENCE incdtpriority_incdtpriority_id_seq TO admin; GRANT ALL ON SEQUENCE incdtpriority_incdtpriority_id_seq TO xtrole; -- -- Name: incdtresolution_incdtresolution_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE incdtresolution_incdtresolution_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE incdtresolution_incdtresolution_id_seq FROM admin; GRANT ALL ON SEQUENCE incdtresolution_incdtresolution_id_seq TO admin; GRANT ALL ON SEQUENCE incdtresolution_incdtresolution_id_seq TO xtrole; -- -- Name: incdtseverity_incdtseverity_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE incdtseverity_incdtseverity_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE incdtseverity_incdtseverity_id_seq FROM admin; GRANT ALL ON SEQUENCE incdtseverity_incdtseverity_id_seq TO admin; GRANT ALL ON SEQUENCE incdtseverity_incdtseverity_id_seq TO xtrole; -- -- Name: invbal_invbal_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE invbal_invbal_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE invbal_invbal_id_seq FROM admin; GRANT ALL ON SEQUENCE invbal_invbal_id_seq TO admin; GRANT ALL ON SEQUENCE invbal_invbal_id_seq TO xtrole; -- -- Name: invc_invc_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE invc_invc_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE invc_invc_id_seq FROM admin; GRANT ALL ON SEQUENCE invc_invc_id_seq TO admin; GRANT ALL ON SEQUENCE invc_invc_id_seq TO xtrole; -- -- Name: invchead_invchead_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE invchead_invchead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE invchead_invchead_id_seq FROM admin; GRANT ALL ON SEQUENCE invchead_invchead_id_seq TO admin; GRANT ALL ON SEQUENCE invchead_invchead_id_seq TO xtrole; -- -- Name: invcheadtax; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE invcheadtax FROM PUBLIC; REVOKE ALL ON TABLE invcheadtax FROM admin; GRANT ALL ON TABLE invcheadtax TO admin; GRANT ALL ON TABLE invcheadtax TO xtrole; -- -- Name: invcitem_invcitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE invcitem_invcitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE invcitem_invcitem_id_seq FROM admin; GRANT ALL ON SEQUENCE invcitem_invcitem_id_seq TO admin; GRANT ALL ON SEQUENCE invcitem_invcitem_id_seq TO xtrole; -- -- Name: invcitemtax; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE invcitemtax FROM PUBLIC; REVOKE ALL ON TABLE invcitemtax FROM admin; GRANT ALL ON TABLE invcitemtax TO admin; GRANT ALL ON TABLE invcitemtax TO xtrole; -- -- Name: invcnt_invcnt_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE invcnt_invcnt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE invcnt_invcnt_id_seq FROM admin; GRANT ALL ON SEQUENCE invcnt_invcnt_id_seq TO admin; GRANT ALL ON SEQUENCE invcnt_invcnt_id_seq TO xtrole; -- -- Name: invdetail; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE invdetail FROM PUBLIC; REVOKE ALL ON TABLE invdetail FROM admin; GRANT ALL ON TABLE invdetail TO admin; GRANT ALL ON TABLE invdetail TO xtrole; -- -- Name: invdetail_invdetail_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE invdetail_invdetail_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE invdetail_invdetail_id_seq FROM admin; GRANT ALL ON SEQUENCE invdetail_invdetail_id_seq TO admin; GRANT ALL ON SEQUENCE invdetail_invdetail_id_seq TO xtrole; -- -- Name: invhist; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE invhist FROM PUBLIC; REVOKE ALL ON TABLE invhist FROM admin; GRANT ALL ON TABLE invhist TO admin; GRANT ALL ON TABLE invhist TO xtrole; -- -- Name: invhist_invhist_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE invhist_invhist_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE invhist_invhist_id_seq FROM admin; GRANT ALL ON SEQUENCE invhist_invhist_id_seq TO admin; GRANT ALL ON SEQUENCE invhist_invhist_id_seq TO xtrole; -- -- Name: invhistexpcat; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE invhistexpcat FROM PUBLIC; REVOKE ALL ON TABLE invhistexpcat FROM admin; GRANT ALL ON TABLE invhistexpcat TO admin; GRANT ALL ON TABLE invhistexpcat TO xtrole; -- -- Name: invhistexpcat_invhistexpcat_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE invhistexpcat_invhistexpcat_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE invhistexpcat_invhistexpcat_id_seq FROM admin; GRANT ALL ON SEQUENCE invhistexpcat_invhistexpcat_id_seq TO admin; GRANT ALL ON SEQUENCE invhistexpcat_invhistexpcat_id_seq TO xtrole; -- -- Name: invoiceitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE invoiceitem FROM PUBLIC; REVOKE ALL ON TABLE invoiceitem FROM admin; GRANT ALL ON TABLE invoiceitem TO admin; GRANT ALL ON TABLE invoiceitem TO xtrole; -- -- Name: ipsass_ipsass_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE ipsass_ipsass_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ipsass_ipsass_id_seq FROM admin; GRANT ALL ON SEQUENCE ipsass_ipsass_id_seq TO admin; GRANT ALL ON SEQUENCE ipsass_ipsass_id_seq TO xtrole; -- -- Name: ipsctyp_ipsctyp_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE ipsctyp_ipsctyp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ipsctyp_ipsctyp_id_seq FROM admin; GRANT ALL ON SEQUENCE ipsctyp_ipsctyp_id_seq TO admin; GRANT ALL ON SEQUENCE ipsctyp_ipsctyp_id_seq TO xtrole; -- -- Name: ipscust_ipscust_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE ipscust_ipscust_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ipscust_ipscust_id_seq FROM admin; GRANT ALL ON SEQUENCE ipscust_ipscust_id_seq TO admin; GRANT ALL ON SEQUENCE ipscust_ipscust_id_seq TO xtrole; -- -- Name: ipsfreight_ipsfreight_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE ipsfreight_ipsfreight_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ipsfreight_ipsfreight_id_seq FROM admin; GRANT ALL ON SEQUENCE ipsfreight_ipsfreight_id_seq TO admin; GRANT ALL ON SEQUENCE ipsfreight_ipsfreight_id_seq TO xtrole; -- -- Name: ipshead_ipshead_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE ipshead_ipshead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ipshead_ipshead_id_seq FROM admin; GRANT ALL ON SEQUENCE ipshead_ipshead_id_seq TO admin; GRANT ALL ON SEQUENCE ipshead_ipshead_id_seq TO xtrole; -- -- Name: ipsitem_ipsitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE ipsitem_ipsitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ipsitem_ipsitem_id_seq FROM admin; GRANT ALL ON SEQUENCE ipsitem_ipsitem_id_seq TO admin; GRANT ALL ON SEQUENCE ipsitem_ipsitem_id_seq TO xtrole; -- -- Name: ipsitemchar_ipsitemchar_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE ipsitemchar_ipsitemchar_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ipsitemchar_ipsitemchar_id_seq FROM admin; GRANT ALL ON SEQUENCE ipsitemchar_ipsitemchar_id_seq TO admin; GRANT ALL ON SEQUENCE ipsitemchar_ipsitemchar_id_seq TO xtrole; -- -- Name: ipsprice; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE ipsprice FROM PUBLIC; REVOKE ALL ON TABLE ipsprice FROM admin; GRANT ALL ON TABLE ipsprice TO admin; GRANT ALL ON TABLE ipsprice TO xtrole; -- -- Name: ipsprodcat_bak; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE ipsprodcat_bak FROM PUBLIC; REVOKE ALL ON TABLE ipsprodcat_bak FROM admin; GRANT ALL ON TABLE ipsprodcat_bak TO admin; GRANT ALL ON TABLE ipsprodcat_bak TO xtrole; -- -- Name: ipsprodcat_ipsprodcat_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE ipsprodcat_ipsprodcat_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ipsprodcat_ipsprodcat_id_seq FROM admin; GRANT ALL ON SEQUENCE ipsprodcat_ipsprodcat_id_seq TO admin; GRANT ALL ON SEQUENCE ipsprodcat_ipsprodcat_id_seq TO xtrole; -- -- Name: item_item_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE item_item_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE item_item_id_seq FROM admin; GRANT ALL ON SEQUENCE item_item_id_seq TO admin; GRANT ALL ON SEQUENCE item_item_id_seq TO xtrole; -- -- Name: itemalias_itemalias_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itemalias_itemalias_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemalias_itemalias_id_seq FROM admin; GRANT ALL ON SEQUENCE itemalias_itemalias_id_seq TO admin; GRANT ALL ON SEQUENCE itemalias_itemalias_id_seq TO xtrole; -- -- Name: itematr_itematr_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itematr_itematr_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itematr_itematr_id_seq FROM admin; GRANT ALL ON SEQUENCE itematr_itematr_id_seq TO admin; GRANT ALL ON SEQUENCE itematr_itematr_id_seq TO xtrole; -- -- Name: itemcost_itemcost_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itemcost_itemcost_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemcost_itemcost_id_seq FROM admin; GRANT ALL ON SEQUENCE itemcost_itemcost_id_seq TO admin; GRANT ALL ON SEQUENCE itemcost_itemcost_id_seq TO xtrole; -- -- Name: itemfrez_itemfrez_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itemfrez_itemfrez_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemfrez_itemfrez_seq FROM admin; GRANT ALL ON SEQUENCE itemfrez_itemfrez_seq TO admin; GRANT ALL ON SEQUENCE itemfrez_itemfrez_seq TO xtrole; -- -- Name: itemgrp; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE itemgrp FROM PUBLIC; REVOKE ALL ON TABLE itemgrp FROM admin; GRANT ALL ON TABLE itemgrp TO admin; GRANT ALL ON TABLE itemgrp TO xtrole; -- -- Name: itemgrp_itemgrp_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itemgrp_itemgrp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemgrp_itemgrp_id_seq FROM admin; GRANT ALL ON SEQUENCE itemgrp_itemgrp_id_seq TO admin; GRANT ALL ON SEQUENCE itemgrp_itemgrp_id_seq TO xtrole; -- -- Name: itemgrpitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE itemgrpitem FROM PUBLIC; REVOKE ALL ON TABLE itemgrpitem FROM admin; GRANT ALL ON TABLE itemgrpitem TO admin; GRANT ALL ON TABLE itemgrpitem TO xtrole; -- -- Name: itemgrpitem_itemgrpitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itemgrpitem_itemgrpitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemgrpitem_itemgrpitem_id_seq FROM admin; GRANT ALL ON SEQUENCE itemgrpitem_itemgrpitem_id_seq TO admin; GRANT ALL ON SEQUENCE itemgrpitem_itemgrpitem_id_seq TO xtrole; -- -- Name: itemimage; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE itemimage FROM PUBLIC; REVOKE ALL ON TABLE itemimage FROM admin; GRANT ALL ON TABLE itemimage TO admin; GRANT ALL ON TABLE itemimage TO xtrole; -- -- Name: itemimage_itemimage_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itemimage_itemimage_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemimage_itemimage_id_seq FROM admin; GRANT ALL ON SEQUENCE itemimage_itemimage_id_seq TO admin; GRANT ALL ON SEQUENCE itemimage_itemimage_id_seq TO xtrole; -- -- Name: itemloc; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE itemloc FROM PUBLIC; REVOKE ALL ON TABLE itemloc FROM admin; GRANT ALL ON TABLE itemloc TO admin; GRANT ALL ON TABLE itemloc TO xtrole; -- -- Name: itemloc_itemloc_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itemloc_itemloc_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemloc_itemloc_id_seq FROM admin; GRANT ALL ON SEQUENCE itemloc_itemloc_id_seq TO admin; GRANT ALL ON SEQUENCE itemloc_itemloc_id_seq TO xtrole; -- -- Name: itemloc_series_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itemloc_series_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemloc_series_seq FROM admin; GRANT ALL ON SEQUENCE itemloc_series_seq TO admin; GRANT ALL ON SEQUENCE itemloc_series_seq TO xtrole; -- -- Name: itemlocdist; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE itemlocdist FROM PUBLIC; REVOKE ALL ON TABLE itemlocdist FROM admin; GRANT ALL ON TABLE itemlocdist TO admin; GRANT ALL ON TABLE itemlocdist TO xtrole; -- -- Name: itemlocdist_itemlocdist_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itemlocdist_itemlocdist_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemlocdist_itemlocdist_id_seq FROM admin; GRANT ALL ON SEQUENCE itemlocdist_itemlocdist_id_seq TO admin; GRANT ALL ON SEQUENCE itemlocdist_itemlocdist_id_seq TO xtrole; -- -- Name: itemlocpost; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE itemlocpost FROM PUBLIC; REVOKE ALL ON TABLE itemlocpost FROM admin; GRANT ALL ON TABLE itemlocpost TO admin; GRANT ALL ON TABLE itemlocpost TO xtrole; -- -- Name: itemlocpost_itemlocpost_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itemlocpost_itemlocpost_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemlocpost_itemlocpost_id_seq FROM admin; GRANT ALL ON SEQUENCE itemlocpost_itemlocpost_id_seq TO admin; GRANT ALL ON SEQUENCE itemlocpost_itemlocpost_id_seq TO xtrole; -- -- Name: itemopn_itemopn_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itemopn_itemopn_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemopn_itemopn_id_seq FROM admin; GRANT ALL ON SEQUENCE itemopn_itemopn_id_seq TO admin; GRANT ALL ON SEQUENCE itemopn_itemopn_id_seq TO xtrole; -- -- Name: itemsite_itemsite_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itemsite_itemsite_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemsite_itemsite_id_seq FROM admin; GRANT ALL ON SEQUENCE itemsite_itemsite_id_seq TO admin; GRANT ALL ON SEQUENCE itemsite_itemsite_id_seq TO xtrole; -- -- Name: itemsrc_itemsrc_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itemsrc_itemsrc_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemsrc_itemsrc_id_seq FROM admin; GRANT ALL ON SEQUENCE itemsrc_itemsrc_id_seq TO admin; GRANT ALL ON SEQUENCE itemsrc_itemsrc_id_seq TO xtrole; -- -- Name: itemsrcp_itemsrcp_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itemsrcp_itemsrcp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemsrcp_itemsrcp_id_seq FROM admin; GRANT ALL ON SEQUENCE itemsrcp_itemsrcp_id_seq TO admin; GRANT ALL ON SEQUENCE itemsrcp_itemsrcp_id_seq TO xtrole; -- -- Name: itemsub_itemsub_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itemsub_itemsub_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemsub_itemsub_id_seq FROM admin; GRANT ALL ON SEQUENCE itemsub_itemsub_id_seq TO admin; GRANT ALL ON SEQUENCE itemsub_itemsub_id_seq TO xtrole; -- -- Name: itemtax_itemtax_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itemtax_itemtax_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemtax_itemtax_id_seq FROM admin; GRANT ALL ON SEQUENCE itemtax_itemtax_id_seq TO admin; GRANT ALL ON SEQUENCE itemtax_itemtax_id_seq TO xtrole; -- -- Name: itemtrans; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE itemtrans FROM PUBLIC; REVOKE ALL ON TABLE itemtrans FROM admin; GRANT ALL ON TABLE itemtrans TO admin; GRANT ALL ON TABLE itemtrans TO xtrole; -- -- Name: itemtrans_itemtrans_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itemtrans_itemtrans_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemtrans_itemtrans_id_seq FROM admin; GRANT ALL ON SEQUENCE itemtrans_itemtrans_id_seq TO admin; GRANT ALL ON SEQUENCE itemtrans_itemtrans_id_seq TO xtrole; -- -- Name: itemuom; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE itemuom FROM PUBLIC; REVOKE ALL ON TABLE itemuom FROM admin; GRANT ALL ON TABLE itemuom TO admin; GRANT ALL ON TABLE itemuom TO xtrole; -- -- Name: itemuom_itemuom_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itemuom_itemuom_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemuom_itemuom_id_seq FROM admin; GRANT ALL ON SEQUENCE itemuom_itemuom_id_seq TO admin; GRANT ALL ON SEQUENCE itemuom_itemuom_id_seq TO xtrole; -- -- Name: itemuomconv_itemuomconv_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE itemuomconv_itemuomconv_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemuomconv_itemuomconv_id_seq FROM admin; GRANT ALL ON SEQUENCE itemuomconv_itemuomconv_id_seq TO admin; GRANT ALL ON SEQUENCE itemuomconv_itemuomconv_id_seq TO xtrole; -- -- Name: journal_number_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE journal_number_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE journal_number_seq FROM admin; GRANT ALL ON SEQUENCE journal_number_seq TO admin; GRANT ALL ON SEQUENCE journal_number_seq TO xtrole; -- -- Name: jrnluse; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE jrnluse FROM PUBLIC; REVOKE ALL ON TABLE jrnluse FROM admin; GRANT ALL ON TABLE jrnluse TO admin; GRANT ALL ON TABLE jrnluse TO xtrole; -- -- Name: jrnluse_jrnluse_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE jrnluse_jrnluse_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE jrnluse_jrnluse_id_seq FROM admin; GRANT ALL ON SEQUENCE jrnluse_jrnluse_id_seq TO admin; GRANT ALL ON SEQUENCE jrnluse_jrnluse_id_seq TO xtrole; -- -- Name: labeldef; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE labeldef FROM PUBLIC; REVOKE ALL ON TABLE labeldef FROM admin; GRANT ALL ON TABLE labeldef TO admin; GRANT ALL ON TABLE labeldef TO xtrole; -- -- Name: labeldef_labeldef_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE labeldef_labeldef_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE labeldef_labeldef_id_seq FROM admin; GRANT ALL ON SEQUENCE labeldef_labeldef_id_seq TO admin; GRANT ALL ON SEQUENCE labeldef_labeldef_id_seq TO xtrole; -- -- Name: labelform; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE labelform FROM PUBLIC; REVOKE ALL ON TABLE labelform FROM admin; GRANT ALL ON TABLE labelform TO admin; GRANT ALL ON TABLE labelform TO xtrole; -- -- Name: labelform_labelform_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE labelform_labelform_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE labelform_labelform_id_seq FROM admin; GRANT ALL ON SEQUENCE labelform_labelform_id_seq TO admin; GRANT ALL ON SEQUENCE labelform_labelform_id_seq TO xtrole; -- -- Name: lang; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE lang FROM PUBLIC; REVOKE ALL ON TABLE lang FROM admin; GRANT ALL ON TABLE lang TO admin; GRANT ALL ON TABLE lang TO xtrole; -- -- Name: lang_lang_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE lang_lang_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE lang_lang_id_seq FROM admin; GRANT ALL ON SEQUENCE lang_lang_id_seq TO admin; GRANT ALL ON SEQUENCE lang_lang_id_seq TO xtrole; -- -- Name: locale; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE locale FROM PUBLIC; REVOKE ALL ON TABLE locale FROM admin; GRANT ALL ON TABLE locale TO admin; GRANT ALL ON TABLE locale TO xtrole; -- -- Name: locale_locale_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE locale_locale_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE locale_locale_id_seq FROM admin; GRANT ALL ON SEQUENCE locale_locale_id_seq TO admin; GRANT ALL ON SEQUENCE locale_locale_id_seq TO xtrole; -- -- Name: location_location_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE location_location_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE location_location_id_seq FROM admin; GRANT ALL ON SEQUENCE location_location_id_seq TO admin; GRANT ALL ON SEQUENCE location_location_id_seq TO xtrole; -- -- Name: locitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE locitem FROM PUBLIC; REVOKE ALL ON TABLE locitem FROM admin; GRANT ALL ON TABLE locitem TO admin; GRANT ALL ON TABLE locitem TO xtrole; -- -- Name: locitem_locitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE locitem_locitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE locitem_locitem_id_seq FROM admin; GRANT ALL ON SEQUENCE locitem_locitem_id_seq TO admin; GRANT ALL ON SEQUENCE locitem_locitem_id_seq TO xtrole; -- -- Name: log_log_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE log_log_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE log_log_id_seq FROM admin; GRANT ALL ON SEQUENCE log_log_id_seq TO admin; GRANT ALL ON SEQUENCE log_log_id_seq TO xtrole; -- -- Name: metric; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE metric FROM PUBLIC; REVOKE ALL ON TABLE metric FROM admin; GRANT ALL ON TABLE metric TO admin; GRANT ALL ON TABLE metric TO xtrole; -- -- Name: metric_metric_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE metric_metric_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE metric_metric_id_seq FROM admin; GRANT ALL ON SEQUENCE metric_metric_id_seq TO admin; GRANT ALL ON SEQUENCE metric_metric_id_seq TO xtrole; -- -- Name: metricenc; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE metricenc FROM PUBLIC; REVOKE ALL ON TABLE metricenc FROM admin; GRANT ALL ON TABLE metricenc TO admin; GRANT ALL ON TABLE metricenc TO xtrole; -- -- Name: metricenc_metricenc_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE metricenc_metricenc_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE metricenc_metricenc_id_seq FROM admin; GRANT ALL ON SEQUENCE metricenc_metricenc_id_seq TO admin; GRANT ALL ON SEQUENCE metricenc_metricenc_id_seq TO xtrole; -- -- Name: misc_index_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE misc_index_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE misc_index_seq FROM admin; GRANT ALL ON SEQUENCE misc_index_seq TO admin; GRANT ALL ON SEQUENCE misc_index_seq TO xtrole; -- -- Name: mrghist; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE mrghist FROM PUBLIC; REVOKE ALL ON TABLE mrghist FROM admin; GRANT ALL ON TABLE mrghist TO admin; GRANT ALL ON TABLE mrghist TO xtrole; -- -- Name: mrgundo; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE mrgundo FROM PUBLIC; REVOKE ALL ON TABLE mrgundo FROM admin; GRANT ALL ON TABLE mrgundo TO admin; GRANT ALL ON TABLE mrgundo TO xtrole; -- -- Name: msg; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE msg FROM PUBLIC; REVOKE ALL ON TABLE msg FROM admin; GRANT ALL ON TABLE msg TO admin; GRANT ALL ON TABLE msg TO xtrole; -- -- Name: msg_msg_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE msg_msg_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE msg_msg_id_seq FROM admin; GRANT ALL ON SEQUENCE msg_msg_id_seq TO admin; GRANT ALL ON SEQUENCE msg_msg_id_seq TO xtrole; -- -- Name: msguser; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE msguser FROM PUBLIC; REVOKE ALL ON TABLE msguser FROM admin; GRANT ALL ON TABLE msguser TO admin; GRANT ALL ON TABLE msguser TO xtrole; -- -- Name: msguser_msguser_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE msguser_msguser_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE msguser_msguser_id_seq FROM admin; GRANT ALL ON SEQUENCE msguser_msguser_id_seq TO admin; GRANT ALL ON SEQUENCE msguser_msguser_id_seq TO xtrole; -- -- Name: nvend_nvend_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE nvend_nvend_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE nvend_nvend_id_seq FROM admin; GRANT ALL ON SEQUENCE nvend_nvend_id_seq TO admin; GRANT ALL ON SEQUENCE nvend_nvend_id_seq TO xtrole; -- -- Name: obsolete_tax; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE obsolete_tax FROM PUBLIC; REVOKE ALL ON TABLE obsolete_tax FROM admin; GRANT ALL ON TABLE obsolete_tax TO admin; GRANT ALL ON TABLE obsolete_tax TO xtrole; -- -- Name: ophead_ophead_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE ophead_ophead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ophead_ophead_id_seq FROM admin; GRANT ALL ON SEQUENCE ophead_ophead_id_seq TO admin; GRANT ALL ON SEQUENCE ophead_ophead_id_seq TO xtrole; -- -- Name: opsource; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE opsource FROM PUBLIC; REVOKE ALL ON TABLE opsource FROM admin; GRANT ALL ON TABLE opsource TO admin; GRANT ALL ON TABLE opsource TO xtrole; -- -- Name: opsource_opsource_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE opsource_opsource_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE opsource_opsource_id_seq FROM admin; GRANT ALL ON SEQUENCE opsource_opsource_id_seq TO admin; GRANT ALL ON SEQUENCE opsource_opsource_id_seq TO xtrole; -- -- Name: opstage; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE opstage FROM PUBLIC; REVOKE ALL ON TABLE opstage FROM admin; GRANT ALL ON TABLE opstage TO admin; GRANT ALL ON TABLE opstage TO xtrole; -- -- Name: opstage_opstage_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE opstage_opstage_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE opstage_opstage_id_seq FROM admin; GRANT ALL ON SEQUENCE opstage_opstage_id_seq TO admin; GRANT ALL ON SEQUENCE opstage_opstage_id_seq TO xtrole; -- -- Name: optype; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE optype FROM PUBLIC; REVOKE ALL ON TABLE optype FROM admin; GRANT ALL ON TABLE optype TO admin; GRANT ALL ON TABLE optype TO xtrole; -- -- Name: optype_optype_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE optype_optype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE optype_optype_id_seq FROM admin; GRANT ALL ON SEQUENCE optype_optype_id_seq TO admin; GRANT ALL ON SEQUENCE optype_optype_id_seq TO xtrole; -- -- Name: orderhead; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE orderhead FROM PUBLIC; REVOKE ALL ON TABLE orderhead FROM admin; GRANT ALL ON TABLE orderhead TO admin; GRANT ALL ON TABLE orderhead TO xtrole; -- -- Name: orderitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE orderitem FROM PUBLIC; REVOKE ALL ON TABLE orderitem FROM admin; GRANT ALL ON TABLE orderitem TO admin; GRANT ALL ON TABLE orderitem TO xtrole; -- -- Name: orderseq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE orderseq FROM PUBLIC; REVOKE ALL ON TABLE orderseq FROM admin; GRANT ALL ON TABLE orderseq TO admin; GRANT ALL ON TABLE orderseq TO xtrole; -- -- Name: orderseq_orderseq_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE orderseq_orderseq_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE orderseq_orderseq_id_seq FROM admin; GRANT ALL ON SEQUENCE orderseq_orderseq_id_seq TO admin; GRANT ALL ON SEQUENCE orderseq_orderseq_id_seq TO xtrole; -- -- Name: pack; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE pack FROM PUBLIC; REVOKE ALL ON TABLE pack FROM admin; GRANT ALL ON TABLE pack TO admin; GRANT ALL ON TABLE pack TO xtrole; -- -- Name: pack_pack_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE pack_pack_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE pack_pack_id_seq FROM admin; GRANT ALL ON SEQUENCE pack_pack_id_seq TO admin; GRANT ALL ON SEQUENCE pack_pack_id_seq TO xtrole; -- -- Name: payaropen; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE payaropen FROM PUBLIC; REVOKE ALL ON TABLE payaropen FROM admin; GRANT ALL ON TABLE payaropen TO admin; GRANT ALL ON TABLE payaropen TO xtrole; -- -- Name: payco; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE payco FROM PUBLIC; REVOKE ALL ON TABLE payco FROM admin; GRANT ALL ON TABLE payco TO admin; GRANT ALL ON TABLE payco TO xtrole; -- -- Name: period_period_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE period_period_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE period_period_id_seq FROM admin; GRANT ALL ON SEQUENCE period_period_id_seq TO admin; GRANT ALL ON SEQUENCE period_period_id_seq TO xtrole; -- -- Name: pkgdep; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE pkgdep FROM PUBLIC; REVOKE ALL ON TABLE pkgdep FROM admin; GRANT ALL ON TABLE pkgdep TO admin; GRANT ALL ON TABLE pkgdep TO xtrole; -- -- Name: pkgdep_pkgdep_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE pkgdep_pkgdep_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE pkgdep_pkgdep_id_seq FROM admin; GRANT ALL ON SEQUENCE pkgdep_pkgdep_id_seq TO admin; GRANT ALL ON SEQUENCE pkgdep_pkgdep_id_seq TO xtrole; -- -- Name: pkghead; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE pkghead FROM PUBLIC; REVOKE ALL ON TABLE pkghead FROM admin; GRANT ALL ON TABLE pkghead TO admin; GRANT ALL ON TABLE pkghead TO xtrole; -- -- Name: pkghead_pkghead_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE pkghead_pkghead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE pkghead_pkghead_id_seq FROM admin; GRANT ALL ON SEQUENCE pkghead_pkghead_id_seq TO admin; GRANT ALL ON SEQUENCE pkghead_pkghead_id_seq TO xtrole; -- -- Name: pkgitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE pkgitem FROM PUBLIC; REVOKE ALL ON TABLE pkgitem FROM admin; GRANT ALL ON TABLE pkgitem TO admin; GRANT ALL ON TABLE pkgitem TO xtrole; -- -- Name: pkgitem_pkgitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE pkgitem_pkgitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE pkgitem_pkgitem_id_seq FROM admin; GRANT ALL ON SEQUENCE pkgitem_pkgitem_id_seq TO admin; GRANT ALL ON SEQUENCE pkgitem_pkgitem_id_seq TO xtrole; -- -- Name: plancode_plancode_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE plancode_plancode_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE plancode_plancode_id_seq FROM admin; GRANT ALL ON SEQUENCE plancode_plancode_id_seq TO admin; GRANT ALL ON SEQUENCE plancode_plancode_id_seq TO xtrole; -- -- Name: planord_planord_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE planord_planord_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE planord_planord_id_seq FROM admin; GRANT ALL ON SEQUENCE planord_planord_id_seq TO admin; GRANT ALL ON SEQUENCE planord_planord_id_seq TO xtrole; -- -- Name: pohead_pohead_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE pohead_pohead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE pohead_pohead_id_seq FROM admin; GRANT ALL ON SEQUENCE pohead_pohead_id_seq TO admin; GRANT ALL ON SEQUENCE pohead_pohead_id_seq TO xtrole; -- -- Name: poitem_poitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE poitem_poitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE poitem_poitem_id_seq FROM admin; GRANT ALL ON SEQUENCE poitem_poitem_id_seq TO admin; GRANT ALL ON SEQUENCE poitem_poitem_id_seq TO xtrole; -- -- Name: recv; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE recv FROM PUBLIC; REVOKE ALL ON TABLE recv FROM admin; GRANT ALL ON TABLE recv TO admin; GRANT ALL ON TABLE recv TO xtrole; -- -- Name: porecv; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE porecv FROM PUBLIC; REVOKE ALL ON TABLE porecv FROM admin; GRANT ALL ON TABLE porecv TO admin; GRANT ALL ON TABLE porecv TO xtrole; -- -- Name: porecv_porecv_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE porecv_porecv_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE porecv_porecv_id_seq FROM admin; GRANT ALL ON SEQUENCE porecv_porecv_id_seq TO admin; GRANT ALL ON SEQUENCE porecv_porecv_id_seq TO xtrole; -- -- Name: poreject; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE poreject FROM PUBLIC; REVOKE ALL ON TABLE poreject FROM admin; GRANT ALL ON TABLE poreject TO admin; GRANT ALL ON TABLE poreject TO xtrole; -- -- Name: poreject_poreject_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE poreject_poreject_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE poreject_poreject_id_seq FROM admin; GRANT ALL ON SEQUENCE poreject_poreject_id_seq TO admin; GRANT ALL ON SEQUENCE poreject_poreject_id_seq TO xtrole; -- -- Name: potype; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE potype FROM PUBLIC; REVOKE ALL ON TABLE potype FROM admin; GRANT ALL ON TABLE potype TO admin; GRANT ALL ON TABLE potype TO xtrole; -- -- Name: potype_potype_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE potype_potype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE potype_potype_id_seq FROM admin; GRANT ALL ON SEQUENCE potype_potype_id_seq TO admin; GRANT ALL ON SEQUENCE potype_potype_id_seq TO xtrole; -- -- Name: pr; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE pr FROM PUBLIC; REVOKE ALL ON TABLE pr FROM admin; GRANT ALL ON TABLE pr TO admin; GRANT ALL ON TABLE pr TO xtrole; -- -- Name: pr_pr_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE pr_pr_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE pr_pr_id_seq FROM admin; GRANT ALL ON SEQUENCE pr_pr_id_seq TO admin; GRANT ALL ON SEQUENCE pr_pr_id_seq TO xtrole; -- -- Name: prftcntr; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE prftcntr FROM PUBLIC; REVOKE ALL ON TABLE prftcntr FROM admin; GRANT ALL ON TABLE prftcntr TO admin; GRANT ALL ON TABLE prftcntr TO xtrole; -- -- Name: prftcntr_prftcntr_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE prftcntr_prftcntr_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE prftcntr_prftcntr_id_seq FROM admin; GRANT ALL ON SEQUENCE prftcntr_prftcntr_id_seq TO admin; GRANT ALL ON SEQUENCE prftcntr_prftcntr_id_seq TO xtrole; -- -- Name: usrgrp; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE usrgrp FROM PUBLIC; REVOKE ALL ON TABLE usrgrp FROM admin; GRANT ALL ON TABLE usrgrp TO admin; GRANT ALL ON TABLE usrgrp TO xtrole; -- -- Name: usrpriv; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE usrpriv FROM PUBLIC; REVOKE ALL ON TABLE usrpriv FROM admin; GRANT ALL ON TABLE usrpriv TO admin; GRANT ALL ON TABLE usrpriv TO xtrole; -- -- Name: privgranted; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE privgranted FROM PUBLIC; REVOKE ALL ON TABLE privgranted FROM admin; GRANT ALL ON TABLE privgranted TO admin; GRANT ALL ON TABLE privgranted TO xtrole; -- -- Name: prj_prj_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE prj_prj_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE prj_prj_id_seq FROM admin; GRANT ALL ON SEQUENCE prj_prj_id_seq TO admin; GRANT ALL ON SEQUENCE prj_prj_id_seq TO xtrole; -- -- Name: prjtask_prjtask_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE prjtask_prjtask_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE prjtask_prjtask_id_seq FROM admin; GRANT ALL ON SEQUENCE prjtask_prjtask_id_seq TO admin; GRANT ALL ON SEQUENCE prjtask_prjtask_id_seq TO xtrole; -- -- Name: prjtaskuser; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE prjtaskuser FROM PUBLIC; REVOKE ALL ON TABLE prjtaskuser FROM admin; GRANT ALL ON TABLE prjtaskuser TO admin; GRANT ALL ON TABLE prjtaskuser TO xtrole; -- -- Name: prjtaskuser_prjtaskuser_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE prjtaskuser_prjtaskuser_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE prjtaskuser_prjtaskuser_id_seq FROM admin; GRANT ALL ON SEQUENCE prjtaskuser_prjtaskuser_id_seq TO admin; GRANT ALL ON SEQUENCE prjtaskuser_prjtaskuser_id_seq TO xtrole; -- -- Name: prodcat_prodcat_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE prodcat_prodcat_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE prodcat_prodcat_id_seq FROM admin; GRANT ALL ON SEQUENCE prodcat_prodcat_id_seq TO admin; GRANT ALL ON SEQUENCE prodcat_prodcat_id_seq TO xtrole; -- -- Name: qryhead; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE qryhead FROM PUBLIC; REVOKE ALL ON TABLE qryhead FROM admin; GRANT ALL ON TABLE qryhead TO admin; GRANT ALL ON TABLE qryhead TO xtrole; -- -- Name: qryhead_qryhead_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE qryhead_qryhead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE qryhead_qryhead_id_seq FROM admin; GRANT ALL ON SEQUENCE qryhead_qryhead_id_seq TO admin; GRANT ALL ON SEQUENCE qryhead_qryhead_id_seq TO xtrole; -- -- Name: qryitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE qryitem FROM PUBLIC; REVOKE ALL ON TABLE qryitem FROM admin; GRANT ALL ON TABLE qryitem TO admin; GRANT ALL ON TABLE qryitem TO xtrole; -- -- Name: qryitem_qryitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE qryitem_qryitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE qryitem_qryitem_id_seq FROM admin; GRANT ALL ON SEQUENCE qryitem_qryitem_id_seq TO admin; GRANT ALL ON SEQUENCE qryitem_qryitem_id_seq TO xtrole; -- -- Name: quhead_quhead_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE quhead_quhead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE quhead_quhead_id_seq FROM admin; GRANT ALL ON SEQUENCE quhead_quhead_id_seq TO admin; GRANT ALL ON SEQUENCE quhead_quhead_id_seq TO xtrole; -- -- Name: quitem_quitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE quitem_quitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE quitem_quitem_id_seq FROM admin; GRANT ALL ON SEQUENCE quitem_quitem_id_seq TO admin; GRANT ALL ON SEQUENCE quitem_quitem_id_seq TO xtrole; -- -- Name: rcalitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE rcalitem FROM PUBLIC; REVOKE ALL ON TABLE rcalitem FROM admin; GRANT ALL ON TABLE rcalitem TO admin; GRANT ALL ON TABLE rcalitem TO xtrole; -- -- Name: recur; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE recur FROM PUBLIC; REVOKE ALL ON TABLE recur FROM admin; GRANT ALL ON TABLE recur TO admin; GRANT ALL ON TABLE recur TO xtrole; -- -- Name: recur_recur_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE recur_recur_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE recur_recur_id_seq FROM admin; GRANT ALL ON SEQUENCE recur_recur_id_seq TO admin; GRANT ALL ON SEQUENCE recur_recur_id_seq TO xtrole; -- -- Name: recurtype; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE recurtype FROM PUBLIC; REVOKE ALL ON TABLE recurtype FROM admin; GRANT ALL ON TABLE recurtype TO admin; GRANT ALL ON TABLE recurtype TO xtrole; -- -- Name: recurtype_recurtype_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE recurtype_recurtype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE recurtype_recurtype_id_seq FROM admin; GRANT ALL ON SEQUENCE recurtype_recurtype_id_seq TO admin; GRANT ALL ON SEQUENCE recurtype_recurtype_id_seq TO xtrole; -- -- Name: recv_recv_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE recv_recv_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE recv_recv_id_seq FROM admin; GRANT ALL ON SEQUENCE recv_recv_id_seq TO admin; GRANT ALL ON SEQUENCE recv_recv_id_seq TO xtrole; -- -- Name: remitto; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE remitto FROM PUBLIC; REVOKE ALL ON TABLE remitto FROM admin; GRANT ALL ON TABLE remitto TO admin; GRANT ALL ON TABLE remitto TO xtrole; -- -- Name: rjctcode; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE rjctcode FROM PUBLIC; REVOKE ALL ON TABLE rjctcode FROM admin; GRANT ALL ON TABLE rjctcode TO admin; GRANT ALL ON TABLE rjctcode TO xtrole; -- -- Name: rjctcode_rjctcode_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE rjctcode_rjctcode_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE rjctcode_rjctcode_id_seq FROM admin; GRANT ALL ON SEQUENCE rjctcode_rjctcode_id_seq TO admin; GRANT ALL ON SEQUENCE rjctcode_rjctcode_id_seq TO xtrole; -- -- Name: rsncode_rsncode_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE rsncode_rsncode_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE rsncode_rsncode_id_seq FROM admin; GRANT ALL ON SEQUENCE rsncode_rsncode_id_seq TO admin; GRANT ALL ON SEQUENCE rsncode_rsncode_id_seq TO xtrole; -- -- Name: sale; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE sale FROM PUBLIC; REVOKE ALL ON TABLE sale FROM admin; GRANT ALL ON TABLE sale TO admin; GRANT ALL ON TABLE sale TO xtrole; -- -- Name: sale_sale_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE sale_sale_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE sale_sale_id_seq FROM admin; GRANT ALL ON SEQUENCE sale_sale_id_seq TO admin; GRANT ALL ON SEQUENCE sale_sale_id_seq TO xtrole; -- -- Name: salesaccnt_salesaccnt_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE salesaccnt_salesaccnt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE salesaccnt_salesaccnt_id_seq FROM admin; GRANT ALL ON SEQUENCE salesaccnt_salesaccnt_id_seq TO admin; GRANT ALL ON SEQUENCE salesaccnt_salesaccnt_id_seq TO xtrole; -- -- Name: salescat_salescat_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE salescat_salescat_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE salescat_salescat_id_seq FROM admin; GRANT ALL ON SEQUENCE salescat_salescat_id_seq TO admin; GRANT ALL ON SEQUENCE salescat_salescat_id_seq TO xtrole; -- -- Name: saleshistory; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE saleshistory FROM PUBLIC; REVOKE ALL ON TABLE saleshistory FROM admin; GRANT ALL ON TABLE saleshistory TO admin; GRANT ALL ON TABLE saleshistory TO xtrole; -- -- Name: saleshistorymisc; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE saleshistorymisc FROM PUBLIC; REVOKE ALL ON TABLE saleshistorymisc FROM admin; GRANT ALL ON TABLE saleshistorymisc TO admin; GRANT ALL ON TABLE saleshistorymisc TO xtrole; -- -- Name: salesrep_salesrep_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE salesrep_salesrep_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE salesrep_salesrep_id_seq FROM admin; GRANT ALL ON SEQUENCE salesrep_salesrep_id_seq TO admin; GRANT ALL ON SEQUENCE salesrep_salesrep_id_seq TO xtrole; -- -- Name: saletype_saletype_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE saletype_saletype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE saletype_saletype_id_seq FROM admin; GRANT ALL ON SEQUENCE saletype_saletype_id_seq TO admin; GRANT ALL ON SEQUENCE saletype_saletype_id_seq TO xtrole; -- -- Name: schemaord; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE schemaord FROM PUBLIC; REVOKE ALL ON TABLE schemaord FROM admin; GRANT ALL ON TABLE schemaord TO admin; GRANT ALL ON TABLE schemaord TO xtrole; -- -- Name: schemaord_schemaord_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE schemaord_schemaord_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE schemaord_schemaord_id_seq FROM admin; GRANT ALL ON SEQUENCE schemaord_schemaord_id_seq TO admin; GRANT ALL ON SEQUENCE schemaord_schemaord_id_seq TO xtrole; -- -- Name: sequence; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE sequence FROM PUBLIC; REVOKE ALL ON TABLE sequence FROM admin; GRANT ALL ON TABLE sequence TO admin; GRANT ALL ON TABLE sequence TO xtrole; -- -- Name: shift_shift_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE shift_shift_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE shift_shift_id_seq FROM admin; GRANT ALL ON SEQUENCE shift_shift_id_seq TO admin; GRANT ALL ON SEQUENCE shift_shift_id_seq TO xtrole; -- -- Name: shipchrg_shipchrg_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE shipchrg_shipchrg_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE shipchrg_shipchrg_id_seq FROM admin; GRANT ALL ON SEQUENCE shipchrg_shipchrg_id_seq TO admin; GRANT ALL ON SEQUENCE shipchrg_shipchrg_id_seq TO xtrole; -- -- Name: shipdatasum; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE shipdatasum FROM PUBLIC; REVOKE ALL ON TABLE shipdatasum FROM admin; GRANT ALL ON TABLE shipdatasum TO admin; GRANT ALL ON TABLE shipdatasum TO xtrole; -- -- Name: shipform_shipform_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE shipform_shipform_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE shipform_shipform_id_seq FROM admin; GRANT ALL ON SEQUENCE shipform_shipform_id_seq TO admin; GRANT ALL ON SEQUENCE shipform_shipform_id_seq TO xtrole; -- -- Name: shiphead_shiphead_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE shiphead_shiphead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE shiphead_shiphead_id_seq FROM admin; GRANT ALL ON SEQUENCE shiphead_shiphead_id_seq TO admin; GRANT ALL ON SEQUENCE shiphead_shiphead_id_seq TO xtrole; -- -- Name: shipitem_shipitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE shipitem_shipitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE shipitem_shipitem_id_seq FROM admin; GRANT ALL ON SEQUENCE shipitem_shipitem_id_seq TO admin; GRANT ALL ON SEQUENCE shipitem_shipitem_id_seq TO xtrole; -- -- Name: shipment_number_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE shipment_number_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE shipment_number_seq FROM admin; GRANT ALL ON SEQUENCE shipment_number_seq TO admin; GRANT ALL ON SEQUENCE shipment_number_seq TO xtrole; -- -- Name: shipto; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE shipto FROM PUBLIC; REVOKE ALL ON TABLE shipto FROM admin; GRANT ALL ON TABLE shipto TO admin; GRANT ALL ON TABLE shipto TO xtrole; -- -- Name: shipto_shipto_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE shipto_shipto_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE shipto_shipto_id_seq FROM admin; GRANT ALL ON SEQUENCE shipto_shipto_id_seq TO admin; GRANT ALL ON SEQUENCE shipto_shipto_id_seq TO xtrole; -- -- Name: shipvia_shipvia_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE shipvia_shipvia_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE shipvia_shipvia_id_seq FROM admin; GRANT ALL ON SEQUENCE shipvia_shipvia_id_seq TO admin; GRANT ALL ON SEQUENCE shipvia_shipvia_id_seq TO xtrole; -- -- Name: shipzone_shipzone_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE shipzone_shipzone_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE shipzone_shipzone_id_seq FROM admin; GRANT ALL ON SEQUENCE shipzone_shipzone_id_seq TO admin; GRANT ALL ON SEQUENCE shipzone_shipzone_id_seq TO xtrole; -- -- Name: sitetype_sitetype_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE sitetype_sitetype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE sitetype_sitetype_id_seq FROM admin; GRANT ALL ON SEQUENCE sitetype_sitetype_id_seq TO admin; GRANT ALL ON SEQUENCE sitetype_sitetype_id_seq TO xtrole; -- -- Name: sltrans; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE sltrans FROM PUBLIC; REVOKE ALL ON TABLE sltrans FROM admin; GRANT ALL ON TABLE sltrans TO admin; GRANT ALL ON TABLE sltrans TO xtrole; -- -- Name: sopack; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE sopack FROM PUBLIC; REVOKE ALL ON TABLE sopack FROM admin; GRANT ALL ON TABLE sopack TO admin; GRANT ALL ON TABLE sopack TO xtrole; -- -- Name: sopack_sopack_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE sopack_sopack_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE sopack_sopack_id_seq FROM admin; GRANT ALL ON SEQUENCE sopack_sopack_id_seq TO admin; GRANT ALL ON SEQUENCE sopack_sopack_id_seq TO xtrole; -- -- Name: source; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE source FROM PUBLIC; REVOKE ALL ON TABLE source FROM admin; GRANT ALL ON TABLE source TO admin; GRANT ALL ON TABLE source TO xtrole; -- -- Name: source_source_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE source_source_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE source_source_id_seq FROM admin; GRANT ALL ON SEQUENCE source_source_id_seq TO admin; GRANT ALL ON SEQUENCE source_source_id_seq TO xtrole; -- -- Name: state; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE state FROM PUBLIC; REVOKE ALL ON TABLE state FROM admin; GRANT ALL ON TABLE state TO admin; GRANT ALL ON TABLE state TO xtrole; -- -- Name: state_state_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE state_state_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE state_state_id_seq FROM admin; GRANT ALL ON SEQUENCE state_state_id_seq TO admin; GRANT ALL ON SEQUENCE state_state_id_seq TO xtrole; -- -- Name: status; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE status FROM PUBLIC; REVOKE ALL ON TABLE status FROM admin; GRANT ALL ON TABLE status TO admin; GRANT ALL ON TABLE status TO xtrole; -- -- Name: status_status_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE status_status_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE status_status_id_seq FROM admin; GRANT ALL ON SEQUENCE status_status_id_seq TO admin; GRANT ALL ON SEQUENCE status_status_id_seq TO xtrole; -- -- Name: stdjrnl; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE stdjrnl FROM PUBLIC; REVOKE ALL ON TABLE stdjrnl FROM admin; GRANT ALL ON TABLE stdjrnl TO admin; GRANT ALL ON TABLE stdjrnl TO xtrole; -- -- Name: stdjrnl_stdjrnl_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE stdjrnl_stdjrnl_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE stdjrnl_stdjrnl_id_seq FROM admin; GRANT ALL ON SEQUENCE stdjrnl_stdjrnl_id_seq TO admin; GRANT ALL ON SEQUENCE stdjrnl_stdjrnl_id_seq TO xtrole; -- -- Name: stdjrnlgrp; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE stdjrnlgrp FROM PUBLIC; REVOKE ALL ON TABLE stdjrnlgrp FROM admin; GRANT ALL ON TABLE stdjrnlgrp TO admin; GRANT ALL ON TABLE stdjrnlgrp TO xtrole; -- -- Name: stdjrnlgrp_stdjrnlgrp_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE stdjrnlgrp_stdjrnlgrp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE stdjrnlgrp_stdjrnlgrp_id_seq FROM admin; GRANT ALL ON SEQUENCE stdjrnlgrp_stdjrnlgrp_id_seq TO admin; GRANT ALL ON SEQUENCE stdjrnlgrp_stdjrnlgrp_id_seq TO xtrole; -- -- Name: stdjrnlgrpitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE stdjrnlgrpitem FROM PUBLIC; REVOKE ALL ON TABLE stdjrnlgrpitem FROM admin; GRANT ALL ON TABLE stdjrnlgrpitem TO admin; GRANT ALL ON TABLE stdjrnlgrpitem TO xtrole; -- -- Name: stdjrnlgrpitem_stdjrnlgrpitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE stdjrnlgrpitem_stdjrnlgrpitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE stdjrnlgrpitem_stdjrnlgrpitem_id_seq FROM admin; GRANT ALL ON SEQUENCE stdjrnlgrpitem_stdjrnlgrpitem_id_seq TO admin; GRANT ALL ON SEQUENCE stdjrnlgrpitem_stdjrnlgrpitem_id_seq TO xtrole; -- -- Name: stdjrnlitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE stdjrnlitem FROM PUBLIC; REVOKE ALL ON TABLE stdjrnlitem FROM admin; GRANT ALL ON TABLE stdjrnlitem TO admin; GRANT ALL ON TABLE stdjrnlitem TO xtrole; -- -- Name: stdjrnlitem_stdjrnlitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE stdjrnlitem_stdjrnlitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE stdjrnlitem_stdjrnlitem_id_seq FROM admin; GRANT ALL ON SEQUENCE stdjrnlitem_stdjrnlitem_id_seq TO admin; GRANT ALL ON SEQUENCE stdjrnlitem_stdjrnlitem_id_seq TO xtrole; -- -- Name: subaccnt; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE subaccnt FROM PUBLIC; REVOKE ALL ON TABLE subaccnt FROM admin; GRANT ALL ON TABLE subaccnt TO admin; GRANT ALL ON TABLE subaccnt TO xtrole; -- -- Name: subaccnt_subaccnt_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE subaccnt_subaccnt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE subaccnt_subaccnt_id_seq FROM admin; GRANT ALL ON SEQUENCE subaccnt_subaccnt_id_seq TO admin; GRANT ALL ON SEQUENCE subaccnt_subaccnt_id_seq TO xtrole; -- -- Name: subaccnttype; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE subaccnttype FROM PUBLIC; REVOKE ALL ON TABLE subaccnttype FROM admin; GRANT ALL ON TABLE subaccnttype TO admin; GRANT ALL ON TABLE subaccnttype TO xtrole; -- -- Name: subaccnttype_subaccnttype_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE subaccnttype_subaccnttype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE subaccnttype_subaccnttype_id_seq FROM admin; GRANT ALL ON SEQUENCE subaccnttype_subaccnttype_id_seq TO admin; GRANT ALL ON SEQUENCE subaccnttype_subaccnttype_id_seq TO xtrole; -- -- Name: tax_tax_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE tax_tax_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE tax_tax_id_seq FROM admin; GRANT ALL ON SEQUENCE tax_tax_id_seq TO admin; GRANT ALL ON SEQUENCE tax_tax_id_seq TO xtrole; -- -- Name: taxass; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE taxass FROM PUBLIC; REVOKE ALL ON TABLE taxass FROM admin; GRANT ALL ON TABLE taxass TO admin; GRANT ALL ON TABLE taxass TO xtrole; -- -- Name: taxass_taxass_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE taxass_taxass_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE taxass_taxass_id_seq FROM admin; GRANT ALL ON SEQUENCE taxass_taxass_id_seq TO admin; GRANT ALL ON SEQUENCE taxass_taxass_id_seq TO xtrole; -- -- Name: taxauth_taxauth_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE taxauth_taxauth_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE taxauth_taxauth_id_seq FROM admin; GRANT ALL ON SEQUENCE taxauth_taxauth_id_seq TO admin; GRANT ALL ON SEQUENCE taxauth_taxauth_id_seq TO xtrole; -- -- Name: taxclass; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE taxclass FROM PUBLIC; REVOKE ALL ON TABLE taxclass FROM admin; GRANT ALL ON TABLE taxclass TO admin; GRANT ALL ON TABLE taxclass TO xtrole; -- -- Name: taxclass_taxclass_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE taxclass_taxclass_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE taxclass_taxclass_id_seq FROM admin; GRANT ALL ON SEQUENCE taxclass_taxclass_id_seq TO admin; GRANT ALL ON SEQUENCE taxclass_taxclass_id_seq TO xtrole; -- -- Name: taxrate; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE taxrate FROM PUBLIC; REVOKE ALL ON TABLE taxrate FROM admin; GRANT ALL ON TABLE taxrate TO admin; GRANT ALL ON TABLE taxrate TO xtrole; -- -- Name: taxrate_taxrate_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE taxrate_taxrate_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE taxrate_taxrate_id_seq FROM admin; GRANT ALL ON SEQUENCE taxrate_taxrate_id_seq TO admin; GRANT ALL ON SEQUENCE taxrate_taxrate_id_seq TO xtrole; -- -- Name: taxreg_taxreg_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE taxreg_taxreg_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE taxreg_taxreg_id_seq FROM admin; GRANT ALL ON SEQUENCE taxreg_taxreg_id_seq TO admin; GRANT ALL ON SEQUENCE taxreg_taxreg_id_seq TO xtrole; -- -- Name: taxtype_taxtype_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE taxtype_taxtype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE taxtype_taxtype_id_seq FROM admin; GRANT ALL ON SEQUENCE taxtype_taxtype_id_seq TO admin; GRANT ALL ON SEQUENCE taxtype_taxtype_id_seq TO xtrole; -- -- Name: taxzone_taxzone_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE taxzone_taxzone_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE taxzone_taxzone_id_seq FROM admin; GRANT ALL ON SEQUENCE taxzone_taxzone_id_seq TO admin; GRANT ALL ON SEQUENCE taxzone_taxzone_id_seq TO xtrole; -- -- Name: terms_terms_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE terms_terms_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE terms_terms_id_seq FROM admin; GRANT ALL ON SEQUENCE terms_terms_id_seq TO admin; GRANT ALL ON SEQUENCE terms_terms_id_seq TO xtrole; -- -- Name: todoitem_todoitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE todoitem_todoitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE todoitem_todoitem_id_seq FROM admin; GRANT ALL ON SEQUENCE todoitem_todoitem_id_seq TO admin; GRANT ALL ON SEQUENCE todoitem_todoitem_id_seq TO xtrole; -- -- Name: trgthist; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE trgthist FROM PUBLIC; REVOKE ALL ON TABLE trgthist FROM admin; GRANT ALL ON TABLE trgthist TO admin; GRANT ALL ON TABLE trgthist TO xtrole; -- -- Name: trialbal; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE trialbal FROM PUBLIC; REVOKE ALL ON TABLE trialbal FROM admin; GRANT ALL ON TABLE trialbal TO admin; GRANT ALL ON TABLE trialbal TO xtrole; -- -- Name: trialbal_trialbal_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE trialbal_trialbal_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE trialbal_trialbal_id_seq FROM admin; GRANT ALL ON SEQUENCE trialbal_trialbal_id_seq TO admin; GRANT ALL ON SEQUENCE trialbal_trialbal_id_seq TO xtrole; -- -- Name: uom_uom_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE uom_uom_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE uom_uom_id_seq FROM admin; GRANT ALL ON SEQUENCE uom_uom_id_seq TO admin; GRANT ALL ON SEQUENCE uom_uom_id_seq TO xtrole; -- -- Name: uomconv; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE uomconv FROM PUBLIC; REVOKE ALL ON TABLE uomconv FROM admin; GRANT ALL ON TABLE uomconv TO admin; GRANT ALL ON TABLE uomconv TO xtrole; -- -- Name: uomconv_uomconv_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE uomconv_uomconv_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE uomconv_uomconv_id_seq FROM admin; GRANT ALL ON SEQUENCE uomconv_uomconv_id_seq TO admin; GRANT ALL ON SEQUENCE uomconv_uomconv_id_seq TO xtrole; -- -- Name: uomtype; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE uomtype FROM PUBLIC; REVOKE ALL ON TABLE uomtype FROM admin; GRANT ALL ON TABLE uomtype TO admin; GRANT ALL ON TABLE uomtype TO xtrole; -- -- Name: uomtype_uomtype_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE uomtype_uomtype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE uomtype_uomtype_id_seq FROM admin; GRANT ALL ON SEQUENCE uomtype_uomtype_id_seq TO admin; GRANT ALL ON SEQUENCE uomtype_uomtype_id_seq TO xtrole; -- -- Name: urlinfo_url_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE urlinfo_url_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE urlinfo_url_id_seq FROM admin; GRANT ALL ON SEQUENCE urlinfo_url_id_seq TO admin; GRANT ALL ON SEQUENCE urlinfo_url_id_seq TO xtrole; -- -- Name: usrpref; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE usrpref FROM PUBLIC; REVOKE ALL ON TABLE usrpref FROM admin; GRANT ALL ON TABLE usrpref TO admin; GRANT ALL ON TABLE usrpref TO xtrole; -- -- Name: usr; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE usr FROM PUBLIC; REVOKE ALL ON TABLE usr FROM admin; GRANT ALL ON TABLE usr TO admin; GRANT ALL ON TABLE usr TO xtrole; -- -- Name: usr_bak; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE usr_bak FROM PUBLIC; REVOKE ALL ON TABLE usr_bak FROM admin; GRANT ALL ON TABLE usr_bak TO admin; GRANT ALL ON TABLE usr_bak TO xtrole; -- -- Name: usr_usr_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE usr_usr_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE usr_usr_id_seq FROM admin; GRANT ALL ON SEQUENCE usr_usr_id_seq TO admin; GRANT ALL ON SEQUENCE usr_usr_id_seq TO xtrole; -- -- Name: usrgrp_usrgrp_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE usrgrp_usrgrp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE usrgrp_usrgrp_id_seq FROM admin; GRANT ALL ON SEQUENCE usrgrp_usrgrp_id_seq TO admin; GRANT ALL ON SEQUENCE usrgrp_usrgrp_id_seq TO xtrole; -- -- Name: usrpref_usrpref_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE usrpref_usrpref_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE usrpref_usrpref_id_seq FROM admin; GRANT ALL ON SEQUENCE usrpref_usrpref_id_seq TO admin; GRANT ALL ON SEQUENCE usrpref_usrpref_id_seq TO xtrole; -- -- Name: usrpriv_usrpriv_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE usrpriv_usrpriv_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE usrpriv_usrpriv_id_seq FROM admin; GRANT ALL ON SEQUENCE usrpriv_usrpriv_id_seq TO admin; GRANT ALL ON SEQUENCE usrpriv_usrpriv_id_seq TO xtrole; -- -- Name: vend; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE vend FROM PUBLIC; REVOKE ALL ON TABLE vend FROM admin; GRANT ALL ON TABLE vend TO admin; GRANT SELECT,INSERT,REFERENCES,DELETE,TRIGGER,UPDATE ON TABLE vend TO xtrole; -- -- Name: vend_vend_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE vend_vend_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE vend_vend_id_seq FROM admin; GRANT ALL ON SEQUENCE vend_vend_id_seq TO admin; GRANT ALL ON SEQUENCE vend_vend_id_seq TO xtrole; -- -- Name: vendaddr; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE vendaddr FROM PUBLIC; REVOKE ALL ON TABLE vendaddr FROM admin; GRANT ALL ON TABLE vendaddr TO admin; GRANT ALL ON TABLE vendaddr TO xtrole; -- -- Name: vendaddr_vendaddr_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE vendaddr_vendaddr_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE vendaddr_vendaddr_id_seq FROM admin; GRANT ALL ON SEQUENCE vendaddr_vendaddr_id_seq TO admin; GRANT ALL ON SEQUENCE vendaddr_vendaddr_id_seq TO xtrole; -- -- Name: vendtype_vendtype_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE vendtype_vendtype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE vendtype_vendtype_id_seq FROM admin; GRANT ALL ON SEQUENCE vendtype_vendtype_id_seq TO admin; GRANT ALL ON SEQUENCE vendtype_vendtype_id_seq TO xtrole; -- -- Name: vodist; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE vodist FROM PUBLIC; REVOKE ALL ON TABLE vodist FROM admin; GRANT ALL ON TABLE vodist TO admin; GRANT ALL ON TABLE vodist TO xtrole; -- -- Name: vodist_vodist_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE vodist_vodist_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE vodist_vodist_id_seq FROM admin; GRANT ALL ON SEQUENCE vodist_vodist_id_seq TO admin; GRANT ALL ON SEQUENCE vodist_vodist_id_seq TO xtrole; -- -- Name: vohead; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE vohead FROM PUBLIC; REVOKE ALL ON TABLE vohead FROM admin; GRANT ALL ON TABLE vohead TO admin; GRANT ALL ON TABLE vohead TO xtrole; -- -- Name: vohead_vohead_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE vohead_vohead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE vohead_vohead_id_seq FROM admin; GRANT ALL ON SEQUENCE vohead_vohead_id_seq TO admin; GRANT ALL ON SEQUENCE vohead_vohead_id_seq TO xtrole; -- -- Name: voheadtax; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE voheadtax FROM PUBLIC; REVOKE ALL ON TABLE voheadtax FROM admin; GRANT ALL ON TABLE voheadtax TO admin; GRANT ALL ON TABLE voheadtax TO xtrole; -- -- Name: voitem; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE voitem FROM PUBLIC; REVOKE ALL ON TABLE voitem FROM admin; GRANT ALL ON TABLE voitem TO admin; GRANT ALL ON TABLE voitem TO xtrole; -- -- Name: voitem_voitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE voitem_voitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE voitem_voitem_id_seq FROM admin; GRANT ALL ON SEQUENCE voitem_voitem_id_seq TO admin; GRANT ALL ON SEQUENCE voitem_voitem_id_seq TO xtrole; -- -- Name: voitemtax; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE voitemtax FROM PUBLIC; REVOKE ALL ON TABLE voitemtax FROM admin; GRANT ALL ON TABLE voitemtax TO admin; GRANT ALL ON TABLE voitemtax TO xtrole; -- -- Name: warehous; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE warehous FROM PUBLIC; REVOKE ALL ON TABLE warehous FROM admin; GRANT ALL ON TABLE warehous TO admin; GRANT ALL ON TABLE warehous TO xtrole; -- -- Name: warehous_warehous_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE warehous_warehous_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE warehous_warehous_id_seq FROM admin; GRANT ALL ON SEQUENCE warehous_warehous_id_seq TO admin; GRANT ALL ON SEQUENCE warehous_warehous_id_seq TO xtrole; -- -- Name: whsezone_whsezone_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE whsezone_whsezone_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE whsezone_whsezone_id_seq FROM admin; GRANT ALL ON SEQUENCE whsezone_whsezone_id_seq TO admin; GRANT ALL ON SEQUENCE whsezone_whsezone_id_seq TO xtrole; -- -- Name: wo_wo_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE wo_wo_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE wo_wo_id_seq FROM admin; GRANT ALL ON SEQUENCE wo_wo_id_seq TO admin; GRANT ALL ON SEQUENCE wo_wo_id_seq TO xtrole; -- -- Name: womatl_womatl_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE womatl_womatl_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE womatl_womatl_id_seq FROM admin; GRANT ALL ON SEQUENCE womatl_womatl_id_seq TO admin; GRANT ALL ON SEQUENCE womatl_womatl_id_seq TO xtrole; -- -- Name: womatlpost; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE womatlpost FROM PUBLIC; REVOKE ALL ON TABLE womatlpost FROM admin; GRANT ALL ON TABLE womatlpost TO admin; GRANT ALL ON TABLE womatlpost TO xtrole; -- -- Name: womatlpost_womatlpost_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE womatlpost_womatlpost_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE womatlpost_womatlpost_id_seq FROM admin; GRANT ALL ON SEQUENCE womatlpost_womatlpost_id_seq TO admin; GRANT ALL ON SEQUENCE womatlpost_womatlpost_id_seq TO xtrole; -- -- Name: womatlvar; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE womatlvar FROM PUBLIC; REVOKE ALL ON TABLE womatlvar FROM admin; GRANT ALL ON TABLE womatlvar TO admin; GRANT ALL ON TABLE womatlvar TO xtrole; -- -- Name: womatlvar_womatlvar_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE womatlvar_womatlvar_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE womatlvar_womatlvar_id_seq FROM admin; GRANT ALL ON SEQUENCE womatlvar_womatlvar_id_seq TO admin; GRANT ALL ON SEQUENCE womatlvar_womatlvar_id_seq TO xtrole; -- -- Name: xcalitem_xcalitem_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE xcalitem_xcalitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE xcalitem_xcalitem_id_seq FROM admin; GRANT ALL ON SEQUENCE xcalitem_xcalitem_id_seq TO admin; GRANT ALL ON SEQUENCE xcalitem_xcalitem_id_seq TO xtrole; -- -- Name: xsltmap; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE xsltmap FROM PUBLIC; REVOKE ALL ON TABLE xsltmap FROM admin; GRANT ALL ON TABLE xsltmap TO admin; GRANT ALL ON TABLE xsltmap TO xtrole; -- -- Name: xsltmap_xsltmap_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE xsltmap_xsltmap_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE xsltmap_xsltmap_id_seq FROM admin; GRANT ALL ON SEQUENCE xsltmap_xsltmap_id_seq TO admin; GRANT ALL ON SEQUENCE xsltmap_xsltmap_id_seq TO xtrole; -- -- Name: yearperiod; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON TABLE yearperiod FROM PUBLIC; REVOKE ALL ON TABLE yearperiod FROM admin; GRANT ALL ON TABLE yearperiod TO admin; GRANT ALL ON TABLE yearperiod TO xtrole; -- -- Name: yearperiod_yearperiod_id_seq; Type: ACL; Schema: public; Owner: admin -- REVOKE ALL ON SEQUENCE yearperiod_yearperiod_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE yearperiod_yearperiod_id_seq FROM admin; GRANT ALL ON SEQUENCE yearperiod_yearperiod_id_seq TO admin; GRANT ALL ON SEQUENCE yearperiod_yearperiod_id_seq TO xtrole; SET search_path = te, pg_catalog; -- -- Name: pkgcmd; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON TABLE pkgcmd FROM PUBLIC; REVOKE ALL ON TABLE pkgcmd FROM admin; GRANT ALL ON TABLE pkgcmd TO admin; GRANT ALL ON TABLE pkgcmd TO xtrole; -- -- Name: pkgcmdarg; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON TABLE pkgcmdarg FROM PUBLIC; REVOKE ALL ON TABLE pkgcmdarg FROM admin; GRANT ALL ON TABLE pkgcmdarg TO admin; GRANT ALL ON TABLE pkgcmdarg TO xtrole; -- -- Name: pkgimage; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON TABLE pkgimage FROM PUBLIC; REVOKE ALL ON TABLE pkgimage FROM admin; GRANT ALL ON TABLE pkgimage TO admin; GRANT ALL ON TABLE pkgimage TO xtrole; -- -- Name: pkgmetasql; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON TABLE pkgmetasql FROM PUBLIC; REVOKE ALL ON TABLE pkgmetasql FROM admin; GRANT ALL ON TABLE pkgmetasql TO admin; GRANT ALL ON TABLE pkgmetasql TO xtrole; -- -- Name: pkgpriv; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON TABLE pkgpriv FROM PUBLIC; REVOKE ALL ON TABLE pkgpriv FROM admin; GRANT ALL ON TABLE pkgpriv TO admin; GRANT ALL ON TABLE pkgpriv TO xtrole; -- -- Name: pkgreport; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON TABLE pkgreport FROM PUBLIC; REVOKE ALL ON TABLE pkgreport FROM admin; GRANT ALL ON TABLE pkgreport TO admin; GRANT ALL ON TABLE pkgreport TO xtrole; -- -- Name: pkgscript; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON TABLE pkgscript FROM PUBLIC; REVOKE ALL ON TABLE pkgscript FROM admin; GRANT ALL ON TABLE pkgscript TO admin; GRANT ALL ON TABLE pkgscript TO xtrole; -- -- Name: pkguiform; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON TABLE pkguiform FROM PUBLIC; REVOKE ALL ON TABLE pkguiform FROM admin; GRANT ALL ON TABLE pkguiform TO admin; GRANT ALL ON TABLE pkguiform TO xtrole; -- -- Name: tecustrate; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON TABLE tecustrate FROM PUBLIC; REVOKE ALL ON TABLE tecustrate FROM admin; GRANT ALL ON TABLE tecustrate TO admin; GRANT ALL ON TABLE tecustrate TO xtrole; -- -- Name: teemp; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON TABLE teemp FROM PUBLIC; REVOKE ALL ON TABLE teemp FROM admin; GRANT ALL ON TABLE teemp TO admin; GRANT ALL ON TABLE teemp TO xtrole; -- -- Name: teemp_teemp_id_seq; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON SEQUENCE teemp_teemp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE teemp_teemp_id_seq FROM admin; GRANT ALL ON SEQUENCE teemp_teemp_id_seq TO admin; GRANT ALL ON SEQUENCE teemp_teemp_id_seq TO xtrole; -- -- Name: teexp; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON TABLE teexp FROM PUBLIC; REVOKE ALL ON TABLE teexp FROM admin; GRANT ALL ON TABLE teexp TO admin; GRANT ALL ON TABLE teexp TO xtrole; -- -- Name: timesheet_seq; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON SEQUENCE timesheet_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE timesheet_seq FROM admin; GRANT ALL ON SEQUENCE timesheet_seq TO admin; GRANT ALL ON SEQUENCE timesheet_seq TO xtrole; -- -- Name: tehead; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON TABLE tehead FROM PUBLIC; REVOKE ALL ON TABLE tehead FROM admin; GRANT ALL ON TABLE tehead TO admin; GRANT ALL ON TABLE tehead TO xtrole; -- -- Name: tehead_tehead_id_seq; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON SEQUENCE tehead_tehead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE tehead_tehead_id_seq FROM admin; GRANT ALL ON SEQUENCE tehead_tehead_id_seq TO admin; GRANT ALL ON SEQUENCE tehead_tehead_id_seq TO xtrole; -- -- Name: teitem; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON TABLE teitem FROM PUBLIC; REVOKE ALL ON TABLE teitem FROM admin; GRANT ALL ON TABLE teitem TO admin; GRANT ALL ON TABLE teitem TO xtrole; -- -- Name: teitem_teitem_id_seq; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON SEQUENCE teitem_teitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE teitem_teitem_id_seq FROM admin; GRANT ALL ON SEQUENCE teitem_teitem_id_seq TO admin; GRANT ALL ON SEQUENCE teitem_teitem_id_seq TO xtrole; -- -- Name: teprj; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON TABLE teprj FROM PUBLIC; REVOKE ALL ON TABLE teprj FROM admin; GRANT ALL ON TABLE teprj TO admin; GRANT ALL ON TABLE teprj TO xtrole; -- -- Name: teprj_teprj_id_seq; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON SEQUENCE teprj_teprj_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE teprj_teprj_id_seq FROM admin; GRANT ALL ON SEQUENCE teprj_teprj_id_seq TO admin; GRANT ALL ON SEQUENCE teprj_teprj_id_seq TO xtrole; -- -- Name: teprjtask; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON TABLE teprjtask FROM PUBLIC; REVOKE ALL ON TABLE teprjtask FROM admin; GRANT ALL ON TABLE teprjtask TO admin; GRANT ALL ON TABLE teprjtask TO xtrole; -- -- Name: teprjtask_teprjtask_id_seq; Type: ACL; Schema: te; Owner: admin -- REVOKE ALL ON SEQUENCE teprjtask_teprjtask_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE teprjtask_teprjtask_id_seq FROM admin; GRANT ALL ON SEQUENCE teprjtask_teprjtask_id_seq TO admin; GRANT ALL ON SEQUENCE teprjtask_teprjtask_id_seq TO xtrole; SET search_path = xtdesktop, pg_catalog; -- -- Name: pkgcmd; Type: ACL; Schema: xtdesktop; Owner: admin -- REVOKE ALL ON TABLE pkgcmd FROM PUBLIC; REVOKE ALL ON TABLE pkgcmd FROM admin; GRANT ALL ON TABLE pkgcmd TO admin; GRANT ALL ON TABLE pkgcmd TO xtrole; -- -- Name: pkgcmdarg; Type: ACL; Schema: xtdesktop; Owner: admin -- REVOKE ALL ON TABLE pkgcmdarg FROM PUBLIC; REVOKE ALL ON TABLE pkgcmdarg FROM admin; GRANT ALL ON TABLE pkgcmdarg TO admin; GRANT ALL ON TABLE pkgcmdarg TO xtrole; -- -- Name: pkgimage; Type: ACL; Schema: xtdesktop; Owner: admin -- REVOKE ALL ON TABLE pkgimage FROM PUBLIC; REVOKE ALL ON TABLE pkgimage FROM admin; GRANT ALL ON TABLE pkgimage TO admin; GRANT ALL ON TABLE pkgimage TO xtrole; -- -- Name: pkgmetasql; Type: ACL; Schema: xtdesktop; Owner: admin -- REVOKE ALL ON TABLE pkgmetasql FROM PUBLIC; REVOKE ALL ON TABLE pkgmetasql FROM admin; GRANT ALL ON TABLE pkgmetasql TO admin; GRANT ALL ON TABLE pkgmetasql TO xtrole; -- -- Name: pkgpriv; Type: ACL; Schema: xtdesktop; Owner: admin -- REVOKE ALL ON TABLE pkgpriv FROM PUBLIC; REVOKE ALL ON TABLE pkgpriv FROM admin; GRANT ALL ON TABLE pkgpriv TO admin; GRANT ALL ON TABLE pkgpriv TO xtrole; -- -- Name: pkgreport; Type: ACL; Schema: xtdesktop; Owner: admin -- REVOKE ALL ON TABLE pkgreport FROM PUBLIC; REVOKE ALL ON TABLE pkgreport FROM admin; GRANT ALL ON TABLE pkgreport TO admin; GRANT ALL ON TABLE pkgreport TO xtrole; -- -- Name: pkgscript; Type: ACL; Schema: xtdesktop; Owner: admin -- REVOKE ALL ON TABLE pkgscript FROM PUBLIC; REVOKE ALL ON TABLE pkgscript FROM admin; GRANT ALL ON TABLE pkgscript TO admin; GRANT ALL ON TABLE pkgscript TO xtrole; -- -- Name: pkguiform; Type: ACL; Schema: xtdesktop; Owner: admin -- REVOKE ALL ON TABLE pkguiform FROM PUBLIC; REVOKE ALL ON TABLE pkguiform FROM admin; GRANT ALL ON TABLE pkguiform TO admin; GRANT ALL ON TABLE pkguiform TO xtrole; -- -- PostgreSQL database dump complete -- postbooks-schema-quickstart-4.1.0/postbooks_quickstart-4.1.0.backup0000644000175000017500002473755512223754370024622 0ustar danieldanielPGDMP / qpostbooks_quickstart41x8.4.88.4.9c!00ENCODINGENCODINGSET client_encoding = 'UTF8'; falsed!00 STDSTRINGS STDSTRINGS)SET standard_conforming_strings = 'off'; falsee!12622018502postbooks_quickstart41xDATABASECREATE DATABASE postbooks_quickstart41x WITH TEMPLATE = template0 ENCODING = 'UTF8' LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8'; 'DROP DATABASE postbooks_quickstart41x; adminfalse26151690988apiSCHEMACREATE SCHEMA api; DROP SCHEMA api; adminfalsef!00apiACLREVOKE ALL ON SCHEMA api FROM PUBLIC; REVOKE ALL ON SCHEMA api FROM admin; GRANT ALL ON SCHEMA api TO admin; GRANT ALL ON SCHEMA api TO xtrole; adminfalse626151690989 fixcountrySCHEMACREATE SCHEMA fixcountry; DROP SCHEMA fixcountry; adminfalseg!00SCHEMA fixcountryCOMMENTICOMMENT ON SCHEMA fixcountry IS 'Schema to hold contents of fixcountry'; adminfalse7h!00 fixcountryACLREVOKE ALL ON SCHEMA fixcountry FROM PUBLIC; REVOKE ALL ON SCHEMA fixcountry FROM admin; GRANT ALL ON SCHEMA fixcountry TO admin; GRANT ALL ON SCHEMA fixcountry TO xtrole; adminfalse726152200publicSCHEMACREATE SCHEMA public; DROP SCHEMA public; postgresfalsei!00 SCHEMA publicCOMMENT6COMMENT ON SCHEMA public IS 'standard public schema'; postgresfalse8j!00publicACLREVOKE ALL ON SCHEMA public FROM PUBLIC; REVOKE ALL ON SCHEMA public FROM postgres; GRANT ALL ON SCHEMA public TO postgres; GRANT ALL ON SCHEMA public TO PUBLIC; postgresfalse8 26151690990teSCHEMACREATE SCHEMA te; DROP SCHEMA te; adminfalsek!00 SCHEMA teCOMMENTCOMMENT ON SCHEMA te IS 'This file is part of the xTuple ERP: PostBooks Edition, a free and open source Enterprise Resource Planning software suite, Copyright (c) 1999-2010 by OpenMFG LLC, d/b/a xTuple. It is licensed to you under the Common Public Attribution License version 1.0, the full text of which (including xTuple-specific Exhibits) is available at www.xtuple.com/CPAL. By using this software, you agree to be bound by its terms.'; adminfalse9l!00teACLREVOKE ALL ON SCHEMA te FROM PUBLIC; REVOKE ALL ON SCHEMA te FROM admin; GRANT ALL ON SCHEMA te TO admin; GRANT ALL ON SCHEMA te TO xtrole; adminfalse9 26151690991 xtdesktopSCHEMACREATE SCHEMA xtdesktop; DROP SCHEMA xtdesktop; adminfalsem!00SCHEMA xtdesktopCOMMENTGCOMMENT ON SCHEMA xtdesktop IS 'Schema to hold contents of xtdesktop'; adminfalse10n!00 xtdesktopACLREVOKE ALL ON SCHEMA xtdesktop FROM PUBLIC; REVOKE ALL ON SCHEMA xtdesktop FROM admin; GRANT ALL ON SCHEMA xtdesktop TO admin; GRANT ALL ON SCHEMA xtdesktop TO xtrole; adminfalse1026121690995plpgsqlPROCEDURAL LANGUAGE$CREATE PROCEDURAL LANGUAGE plpgsql; "DROP PROCEDURAL LANGUAGE plpgsql; adminfalse 12472008292achlineTYPExCREATE TYPE achline AS ( achline_checkhead_id integer, achline_batch text, achline_type text, achline_value text ); DROP TYPE public.achline; publicadminfalse8727 12472008295apagingTYPECREATE TYPE apaging AS ( apaging_docdate text, apaging_duedate date, apaging_ponumber text, apaging_reference text, apaging_invcnumber text, apaging_docnumber text, apaging_doctype text, apaging_vend_id integer, apaging_vend_number text, apaging_vend_name text, apaging_vend_vendtype_id integer, apaging_vendtype_code text, apaging_terms_descrip text, apaging_apopen_amount numeric, apaging_cur_val numeric, apaging_thirty_val numeric, apaging_sixty_val numeric, apaging_ninety_val numeric, apaging_plus_val numeric, apaging_total_val numeric, apaging_discdate date, apaging_disc_val numeric, apaging_discdays numeric, apaging_discprcnt numeric ); DROP TYPE public.apaging; publicadminfalse8728 12472008298aragingTYPECREATE TYPE araging AS ( araging_docdate date, araging_duedate date, araging_ponumber text, araging_docnumber text, araging_doctype text, araging_cust_id integer, araging_cust_number text, araging_cust_name text, araging_cust_custtype_id integer, araging_custtype_code text, araging_terms_descrip text, araging_aropen_amount numeric, araging_cur_val numeric, araging_thirty_val numeric, araging_sixty_val numeric, araging_ninety_val numeric, araging_plus_val numeric, araging_total_val numeric ); DROP TYPE public.araging; publicadminfalse8729 12472008301bomdataTYPEhCREATE TYPE bomdata AS ( bomdata_bomwork_id integer, bomdata_bomwork_parent_id integer, bomdata_bomwork_level integer, bomdata_bomwork_seqnumber integer, bomdata_bomitem_id integer, bomdata_item_id integer, bomdata_item_number text, bomdata_uom_name text, bomdata_item_descrip1 text, bomdata_item_descrip2 text, bomdata_itemdescription text, bomdata_batchsize numeric, bomdata_qtyfxd numeric, bomdata_qtyper numeric, bomdata_qtyreq numeric, bomdata_scrap numeric, bomdata_createchild boolean, bomdata_issuemethod text, bomdata_effective date, bomdata_expires date, bomdata_expired boolean, bomdata_future boolean, bomdata_actunitcost numeric, bomdata_stdunitcost numeric, bomdata_actextendedcost numeric, bomdata_stdextendedcost numeric, bomdata_ecn text, bomdata_char_id integer, bomdata_value text, bomdata_notes text, bomdata_ref text ); DROP TYPE public.bomdata; publicadminfalse8730 12471691010 checkdataTYPECREATE TYPE checkdata AS ( checkdata_page integer, checkdata_checknumber text, checkdata_checkwords text, checkdata_checkdate text, checkdata_checkamount text, checkdata_checkcurrsymbol text, checkdata_checkcurrabbr text, checkdata_checkcurrname text, checkdata_checkpayto text, checkdata_checkaddress text, checkdata_checkmemo text, checkdata_docnumber text, checkdata_docreference text, checkdata_docdate text, checkdata_docamount text, checkdata_docdiscount text, checkdata_docnetamount text ); DROP TYPE public.checkdata; publicadminfalse8144 12472008304cntctdupTYPECREATE TYPE cntctdup AS ( cntct_id integer, cntct_crmacct_id integer, cntct_addr_id integer, cntct_first_name text, cntct_last_name text, cntct_honorific text, cntct_initials text, cntct_active boolean, cntct_phone text, cntct_phone2 text, cntct_fax text, cntct_email text, cntct_webaddr text, cntct_notes text, cntct_title text, cntct_number text, cntct_middle text, cntct_suffix text, cntct_owner_username text, cntct_name text, crmacct_number text, crmacct_name text, addr_id integer, addr_active boolean, addr_line1 text, addr_line2 text, addr_line3 text, addr_city text, addr_state text, addr_postalcode text, addr_country text, addr_notes text, addr_number text, cntctdup_level integer ); DROP TYPE public.cntctdup; publicadminfalse8731 12472008307 flcoldataTYPEdCREATE TYPE flcoldata AS ( flcoldata_column integer, flcoldata_start date, flcoldata_end date ); DROP TYPE public.flcoldata; publicadminfalse8732# 12471691019 flstmtheadTYPECREATE TYPE flstmthead AS ( flstmthead_flhead_id integer, flstmthead_flcol_id integer, flstmthead_period_id integer, flstmthead_username text, flstmthead_typedescrip1 text, flstmthead_typedescrip2 text, flstmthead_flhead_name text, flstmthead_flcol_name text, flstmthead_month text, flstmthead_qtr text, flstmthead_year text, flstmthead_prmonth text, flstmthead_prqtr text, flstmthead_pryear text ); DROP TYPE public.flstmthead; publicadminfalse8145 12472008310 flstmtitemTYPECREATE TYPE flstmtitem AS ( flstmtitem_flhead_id integer, flstmtitem_period_id integer, flstmtitem_username text, flstmtitem_order integer, flstmtitem_level integer, flstmtitem_subgrp integer, flstmtitem_type text, flstmtitem_type_id integer, flstmtitem_parent_id integer, flstmtitem_accnt_id integer, flstmtitem_name text, flstmtitem_month numeric, flstmtitem_monthdb numeric, flstmtitem_monthcr numeric, flstmtitem_monthprcnt numeric, flstmtitem_monthbudget numeric, flstmtitem_monthbudgetprcnt numeric, flstmtitem_monthbudgetdiff numeric, flstmtitem_monthbudgetdiffprcnt numeric, flstmtitem_qtr numeric, flstmtitem_qtrdb numeric, flstmtitem_qtrcr numeric, flstmtitem_qtrprcnt numeric, flstmtitem_qtrbudget numeric, flstmtitem_qtrbudgetprcnt numeric, flstmtitem_qtrbudgetdiff numeric, flstmtitem_qtrbudgetdiffprcnt numeric, flstmtitem_year numeric, flstmtitem_yeardb numeric, flstmtitem_yearcr numeric, flstmtitem_yearprcnt numeric, flstmtitem_yearbudget numeric, flstmtitem_yearbudgetprcnt numeric, flstmtitem_yearbudgetdiff numeric, flstmtitem_yearbudgetdiffprcnt numeric, flstmtitem_prmonth numeric, flstmtitem_prmonthprcnt numeric, flstmtitem_prmonthdiff numeric, flstmtitem_prmonthdiffprcnt numeric, flstmtitem_prqtr numeric, flstmtitem_prqtrprcnt numeric, flstmtitem_prqtrdiff numeric, flstmtitem_prqtrdiffprcnt numeric, flstmtitem_pryear numeric, flstmtitem_pryearprcnt numeric, flstmtitem_pryeardiff numeric, flstmtitem_pryeardiffprcnt numeric ); DROP TYPE public.flstmtitem; publicadminfalse8733) 12471691025 fltrendheadTYPECREATE TYPE fltrendhead AS ( fltrendhead_flhead_id integer, fltrendhead_username text, fltrendhead_typedescrip text, fltrendhead_flhead_name text, fltrendhead_fld1 text, fltrendhead_fld2 text, fltrendhead_fld3 text, fltrendhead_fld4 text, fltrendhead_fld5 text, fltrendhead_fld6 text, fltrendhead_fld7 text, fltrendhead_fld8 text, fltrendhead_fld9 text, fltrendhead_fld10 text, fltrendhead_fld11 text, fltrendhead_fld12 text, fltrendhead_grndttl text ); DROP TYPE public.fltrendhead; publicadminfalse8146+ 12471691028 fltrenditemTYPE{CREATE TYPE fltrenditem AS ( fltrenditem_flhead_id integer, fltrenditem_username text, fltrenditem_order integer, fltrenditem_level integer, fltrenditem_subgrp integer, fltrenditem_type text, fltrenditem_type_id integer, fltrenditem_parent_id integer, fltrenditem_accnt_id integer, fltrenditem_name text, fltrenditem_fld1 text, fltrenditem_fld2 text, fltrenditem_fld3 text, fltrenditem_fld4 text, fltrenditem_fld5 text, fltrenditem_fld6 text, fltrenditem_fld7 text, fltrenditem_fld8 text, fltrenditem_fld9 text, fltrenditem_fld10 text, fltrenditem_fld11 text, fltrenditem_fld12 text, fltrenditem_grndttl text ); DROP TYPE public.fltrenditem; publicadminfalse8147 12472008313 freightdataTYPEDCREATE TYPE freightdata AS ( freightdata_schedule text, freightdata_from text, freightdata_to text, freightdata_shipvia text, freightdata_freightclass text, freightdata_weight numeric, freightdata_uom text, freightdata_price numeric, freightdata_type text, freightdata_total numeric, freightdata_currency text ); DROP TYPE public.freightdata; publicadminfalse8734 12472008285 itempriceTYPEUCREATE TYPE itemprice AS ( itemprice_price numeric, itemprice_type character(1) ); DROP TYPE public.itemprice; publicadminfalse8726- 12471691034 orderitemtypeTYPE6CREATE TYPE orderitemtype AS ( orderitem_id integer, orderitem_orderhead_type text, orderitem_orderhead_id integer, orderitem_linenumber integer, orderitem_status text, orderitem_itemsite_id integer, orderitem_scheddate date, orderitem_qty_ordered numeric, orderitem_qty_shipped numeric, orderitem_qty_received numeric, orderitem_qty_uom_id integer, orderitem_qty_invuomratio numeric, orderitem_unitcost numeric, orderitem_unitcost_curr_id integer, orderitem_freight numeric, orderitem_freight_received numeric, orderitem_freight_curr_id integer ); DROP TYPE public.orderitemtype; publicadminfalse8148 12472008316ordheadTYPEfCREATE TYPE ordhead AS ( orderhead_id integer, orderhead_type text, orderhead_number text, orderhead_status text, orderhead_orderdate date, orderhead_linecount integer, orderhead_from_id integer, orderhead_from text, orderhead_to_id integer, orderhead_to text, orderhead_curr_id integer, orderhead_agent_username text, orderhead_shipvia text ); DROP TYPE public.ordhead; publicadminfalse8735 12472008319orditemTYPE0CREATE TYPE orditem AS ( orderitem_id integer, orderitem_orderhead_type text, orderitem_orderhead_id integer, orderitem_linenumber integer, orderitem_status text, orderitem_itemsite_id integer, orderitem_scheddate date, orderitem_qty_ordered numeric, orderitem_qty_shipped numeric, orderitem_qty_received numeric, orderitem_qty_uom_id integer, orderitem_qty_invuomratio numeric, orderitem_unitcost numeric, orderitem_unitcost_curr_id integer, orderitem_freight numeric, orderitem_freight_received numeric, orderitem_freight_curr_id integer ); DROP TYPE public.orditem; publicadminfalse8736! 12472008322reordlvlTYPEaCREATE TYPE reordlvl AS ( reordlvl_itemsite_id integer, reordlvl_item_id integer, reordlvl_warehous_code text, reordlvl_item_number text, reordlvl_item_descrip text, reordlvl_leadtime integer, reordlvl_daysofstock integer, reordlvl_curr_level numeric, reordlvl_total_days numeric, reordlvl_total_usage numeric, reordlvl_calc_level integer ); DROP TYPE public.reordlvl; publicadminfalse8737/ 12471691046seqissTYPEYCREATE TYPE seqiss AS ( seqiss_number integer, seqiss_time timestamp with time zone ); DROP TYPE public.seqiss; publicadminfalse8149% 12472008326subtaxTYPECREATE TYPE subtax AS ( subtax_taxcode_id integer, subtax_taxcode_code text, subtax_taxcode_descrip text, subtax_taxcode_level integer ); DROP TYPE public.subtax; publicadminfalse8738' 12472008329 taxassignTYPECREATE TYPE taxassign AS ( taxassign_taxzone_id integer, taxassign_taxtype_id integer, taxassign_level integer, taxassign_zone_code text, taxassign_type_descrip text, taxassign_taxclass_code text, taxassign_taxclass_sequence integer ); DROP TYPE public.taxassign; publicadminfalse87393 12472008332 taxdetailTYPECREATE TYPE taxdetail AS ( taxdetail_tax_id integer, taxdetail_tax_code text, taxdetail_tax_descrip text, taxdetail_tax_basis_tax_id integer, taxdetail_taxrate_percent numeric(10,6), taxdetail_taxrate_amount numeric(16,2), taxdetail_level integer, taxdetail_taxclass_id integer, taxdetail_taxclass_code text, taxdetail_taxclass_sequence integer, taxdetail_tax numeric(16,6), taxdetail_curr_id integer, taxdetail_curr_abbr text ); DROP TYPE public.taxdetail; publicadminfalse87405 12472008335wodataTYPELCREATE TYPE wodata AS ( wodata_id integer, wodata_id_type integer, wodata_number integer, wodata_subnumber integer, wodata_itemnumber text, wodata_descrip text, wodata_status character(1), wodata_startdate date, wodata_duedate date, wodata_adhoc boolean, wodata_itemsite_id integer, wodata_qoh numeric, wodata_short numeric, wodata_qtyper numeric, wodata_qtyiss numeric, wodata_qtyrcv numeric, wodata_qtyordreq numeric, wodata_qtyuom text, wodata_scrap numeric, wodata_setup numeric, wodata_run numeric, wodata_notes text, wodata_ref text, wodata_level integer ); DROP TYPE public.wodata; publicadminfalse87417 12472008338woinvavTYPECREATE TYPE woinvav AS ( woinvav_itemsite_id integer, woinvav_womatl_id integer, woinvav_type character(1), woinvav_item_wo_number text, woinvav_descrip text, woinvav_uomname text, woinvav_qoh numeric, woinvav_balance numeric, woinvav_allocated numeric, woinvav_ordered numeric, woinvav_woavail numeric, woinvav_totalavail numeric, woinvav_reorderlevel numeric, woinvav_level integer ); DROP TYPE public.woinvav; publicadminfalse874212551760945<getcustnumberfrominfo(text, text, text, text, text, boolean)FUNCTIONCREATE FUNCTION getcustnumberfrominfo(text, text, text, text, text, boolean) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _email TEXT := COALESCE(UPPER($1), ''); _company TEXT := COALESCE(UPPER($2), ''); _first TEXT := COALESCE(UPPER($3), ''); _last TEXT := COALESCE(UPPER($4), ''); _fullname TEXT := COALESCE(UPPER($5), TRIM(_first || ' ' || _last)); _generate BOOLEAN := COALESCE($6, FALSE); _counter INTEGER; _custcount INTEGER := 0; _custnumber TEXT; _candidate TEXT := ''; _loopmax INTEGER := 0; _minlength INTEGER := 5; _maxlength INTEGER := 8; _numformat TEXT := ''; _testme TEXT; BEGIN IF (_email != '') THEN SELECT count(*), cust_number INTO _custcount, _custnumber FROM custinfo LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) WHERE (UPPER(cntct_email)=_email) GROUP BY cust_number; IF (NOT FOUND) THEN _custcount := 0; ELSIF(_custcount = 1) THEN RETURN _custnumber; END IF; END IF; IF (_company != '') THEN SELECT count(*), cust_number INTO _custcount, _custnumber FROM custinfo WHERE (UPPER(cust_name)=_company) GROUP BY cust_number; IF (NOT FOUND) THEN _custcount := 0; ELSIF(_custcount = 1) THEN RETURN _custnumber; END IF; END IF; IF (_fullname = '' AND (_first != '' OR _last != '')) THEN _fullname := TRIM(_first || ' ' || _last); END IF; IF (_custcount <= 0 AND _fullname != '') THEN SELECT count(*), cust_number INTO _custcount, _custnumber FROM custinfo WHERE (UPPER(cust_name)=_fullname) GROUP BY cust_number; IF (NOT FOUND) THEN _custcount := 0; ELSIF(_custcount = 1) THEN RETURN _custnumber; END IF; END IF; IF (_custcount > 1) THEN RAISE EXCEPTION 'Found % possible Customers for % and % and %', _custcount, _email, _company, _fullname; END IF; IF (_custcount <= 0 AND _generate) THEN IF (_maxlength < _minlength) THEN RAISE EXCEPTION 'Fix getCustNumberFromInfo: max length < min length'; END IF; IF (_company != '') THEN _candidate := _company; ELSIF (_email != '') THEN _candidate := SUBSTRING(_email FOR POSITION('@' IN _email) - 1); ELSIF (_last != '') THEN _candidate := _last; IF (_first != '') THEN _candidate := _candidate || _first; END IF; ELSIF (_fullname != '' AND (POSITION(' ' IN _fullname) > 0)) THEN _candidate := SUBSTRING(_fullname FROM POSITION(' ' IN _fullname) + 1) || SUBSTRING(_fullname FOR POSITION(' ' IN _fullname) - 1); END IF; WHILE (POSITION(' ' IN _candidate) > 0) LOOP _candidate := SUBSTRING(_candidate FOR POSITION(' ' IN _candidate) - 1) || SUBSTRING(_candidate FROM POSITION(' ' IN _candidate) + 1); END LOOP; FOR _counter IN _minlength.._maxlength LOOP _testme := SUBSTRING(_candidate FOR _counter); IF (NOT EXISTS(SELECT cust_number FROM custinfo WHERE (cust_number=_testme))) THEN _custnumber := _testme; EXIT; END IF; END LOOP; IF (_custnumber IS NULL OR _custnumber = '') THEN IF (LENGTH(_candidate) < _minlength) THEN _minlength := LENGTH(_candidate); END IF; FOR _counter IN _minlength.._maxlength LOOP _loopmax := _loopmax * 10 + 9; _numformat := _numformat || '0'; END LOOP; FOR _counter IN 1.._loopmax LOOP _testme := SUBSTRING(_candidate FOR _minlength) || TRIM(TO_CHAR(_counter, _numformat)); IF (NOT EXISTS(SELECT cust_number FROM custinfo WHERE (cust_number=_testme))) THEN _custnumber := _testme; EXIT; END IF; END LOOP; END IF; IF (_custnumber IS NULL OR _custnumber = '') THEN RAISE EXCEPTION 'Could not generate a new Customer Number'; END IF; END IF; IF (_custnumber IS NULL OR _custnumber = '') THEN RAISE EXCEPTION 'Could not find Customer Number for % and % and %', _email, _company, _fullname; END IF; RETURN _custnumber; END; $_$; PDROP FUNCTION api.getcustnumberfrominfo(text, text, text, text, text, boolean); apiadminfalse39926912551691804formatlocationname(integer)FUNCTIONCREATE FUNCTION formatlocationname(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLocationid ALIAS FOR $1; _name TEXT; _r RECORD; BEGIN SELECT location_aisle, location_rack, location_bin, location_name INTO _r FROM location WHERE (location_id=pLocationid); IF (FOUND) THEN IF (_r.location_aisle IS NOT NULL) THEN _name := _r.location_aisle; ELSE _name := ''; END IF; IF (_r.location_rack IS NOT NULL) THEN _name := (_name || _r.location_rack); END IF; IF (_r.location_bin IS NOT NULL) THEN _name := (_name || _r.location_bin); END IF; IF (_r.location_name IS NOT NULL) THEN _name := (_name || _r.location_name); END IF; RETURN _name; ELSE RETURN 'N/A'; END IF; END; $_$; 2DROP FUNCTION public.formatlocationname(integer); publicadminfalse83992q12591694387cntslipTABLECREATE TABLE cntslip ( cntslip_id integer DEFAULT nextval(('"cntslip_cntslip_id_seq"'::text)::regclass) NOT NULL, cntslip_cnttag_id integer, cntslip_entered timestamp with time zone, cntslip_posted boolean, cntslip_number text, cntslip_qty numeric(18,6), cntslip_comments text, cntslip_location_id integer, cntslip_lotserial text, cntslip_lotserial_expiration date, cntslip_lotserial_warrpurc date, cntslip_username text ); DROP TABLE public.cntslip; publicadminfalse62858o!00 TABLE cntslipCOMMENT6COMMENT ON TABLE cntslip IS 'Count Slip information'; publicadminfalse369p!00cntslipACLREVOKE ALL ON TABLE cntslip FROM PUBLIC; REVOKE ALL ON TABLE cntslip FROM admin; GRANT ALL ON TABLE cntslip TO admin; GRANT ALL ON TABLE cntslip TO xtrole; publicadminfalse36912591694846invcntTABLECREATE TABLE invcnt ( invcnt_id integer DEFAULT nextval(('invcnt_invcnt_id_seq'::text)::regclass) NOT NULL, invcnt_itemsite_id integer, invcnt_tagdate timestamp with time zone, invcnt_cntdate timestamp with time zone, invcnt_qoh_before numeric(18,6), invcnt_qoh_after numeric(18,6), invcnt_matcost numeric(16,6), invcnt_posted boolean, invcnt_postdate timestamp with time zone, invcnt_comments text, invcnt_priority boolean, invcnt_tagnumber text, invcnt_invhist_id integer, invcnt_location_id integer, invcnt_cnt_username text, invcnt_post_username text, invcnt_tag_username text ); DROP TABLE public.invcnt; publicadminfalse64278q!00 TABLE invcntCOMMENT4COMMENT ON TABLE invcnt IS 'Count Tag information'; publicadminfalse466r!00invcntACLREVOKE ALL ON TABLE invcnt FROM PUBLIC; REVOKE ALL ON TABLE invcnt FROM admin; GRANT ALL ON TABLE invcnt TO admin; GRANT ALL ON TABLE invcnt TO xtrole; publicadminfalse46612591692148itemTABLECREATE TABLE item ( item_id integer DEFAULT nextval(('item_item_id_seq'::text)::regclass) NOT NULL, item_number text NOT NULL, item_descrip1 text NOT NULL, item_descrip2 text NOT NULL, item_classcode_id integer NOT NULL, item_picklist boolean DEFAULT true NOT NULL, item_comments text, item_sold boolean NOT NULL, item_fractional boolean NOT NULL, item_active boolean NOT NULL, item_type character(1) DEFAULT 'R'::bpchar NOT NULL, item_prodweight numeric(16,2) DEFAULT 0 NOT NULL, item_packweight numeric(16,2) DEFAULT 0 NOT NULL, item_prodcat_id integer NOT NULL, item_exclusive boolean DEFAULT false NOT NULL, item_listprice numeric(16,4) NOT NULL, item_config boolean DEFAULT false, item_extdescrip text, item_upccode text, item_maxcost numeric(16,6) DEFAULT 0 NOT NULL, item_inv_uom_id integer NOT NULL, item_price_uom_id integer NOT NULL, item_warrdays integer DEFAULT 0, item_freightclass_id integer, item_tax_recoverable boolean DEFAULT false NOT NULL, item_listcost numeric(16,6) DEFAULT 0.0 NOT NULL, CONSTRAINT item_item_number_check CHECK ((item_number <> ''::text)), CONSTRAINT item_item_type_check CHECK (((((((((((((item_type = 'P'::bpchar) OR (item_type = 'M'::bpchar)) OR (item_type = 'F'::bpchar)) OR (item_type = 'O'::bpchar)) OR (item_type = 'R'::bpchar)) OR (item_type = 'S'::bpchar)) OR (item_type = 'T'::bpchar)) OR (item_type = 'B'::bpchar)) OR (item_type = 'L'::bpchar)) OR (item_type = 'Y'::bpchar)) OR (item_type = 'C'::bpchar)) OR (item_type = 'K'::bpchar))), CONSTRAINT item_sold_check CHECK ((NOT (item_sold AND (item_prodcat_id = (-1))))) ); DROP TABLE public.item; publicadminfalse583558365837583858395840584158425843584458455846584758488s!00 TABLE itemCOMMENT-COMMENT ON TABLE item IS 'Item information'; publicadminfalse168t!00COLUMN item.item_maxcostCOMMENTjCOMMENT ON COLUMN item.item_maxcost IS 'Maximum cost for item. Used to constrain purchase order price.'; publicadminfalse168u!00COLUMN item.item_listcostCOMMENTZCOMMENT ON COLUMN item.item_listcost IS 'List cost for item. Basis for markup pricing.'; publicadminfalse168v!00itemACLREVOKE ALL ON TABLE item FROM PUBLIC; REVOKE ALL ON TABLE item FROM admin; GRANT ALL ON TABLE item TO admin; GRANT ALL ON TABLE item TO xtrole; publicadminfalse16812591692166itemsiteTABLE CREATE TABLE itemsite ( itemsite_id integer DEFAULT nextval(('itemsite_itemsite_id_seq'::text)::regclass) NOT NULL, itemsite_item_id integer NOT NULL, itemsite_warehous_id integer, itemsite_qtyonhand numeric(18,6) NOT NULL, itemsite_reorderlevel numeric(18,6) NOT NULL, itemsite_ordertoqty numeric(18,6) NOT NULL, itemsite_cyclecountfreq integer NOT NULL, itemsite_datelastcount date, itemsite_datelastused date, itemsite_loccntrl boolean NOT NULL, itemsite_safetystock numeric(18,6) NOT NULL, itemsite_minordqty numeric(18,6) NOT NULL, itemsite_multordqty numeric(18,6) NOT NULL, itemsite_leadtime integer NOT NULL, itemsite_abcclass character(1), itemsite_issuemethod character(1), itemsite_controlmethod character(1), itemsite_active boolean NOT NULL, itemsite_plancode_id integer NOT NULL, itemsite_costcat_id integer NOT NULL, itemsite_eventfence integer NOT NULL, itemsite_sold boolean NOT NULL, itemsite_stocked boolean NOT NULL, itemsite_freeze boolean DEFAULT false NOT NULL, itemsite_location_id integer NOT NULL, itemsite_useparams boolean NOT NULL, itemsite_useparamsmanual boolean NOT NULL, itemsite_soldranking integer DEFAULT 1, itemsite_createpr boolean, itemsite_location text, itemsite_location_comments text, itemsite_notes text, itemsite_perishable boolean NOT NULL, itemsite_nnqoh numeric(18,6) DEFAULT 0 NOT NULL, itemsite_autoabcclass boolean NOT NULL, itemsite_ordergroup integer DEFAULT 1 NOT NULL, itemsite_disallowblankwip boolean DEFAULT false NOT NULL, itemsite_maxordqty numeric(18,6) DEFAULT 0.0 NOT NULL, itemsite_mps_timefence integer DEFAULT 0 NOT NULL, itemsite_createwo boolean DEFAULT false NOT NULL, itemsite_warrpurc boolean DEFAULT false NOT NULL, itemsite_autoreg boolean DEFAULT false, itemsite_costmethod character(1) NOT NULL, itemsite_value numeric(12,2) NOT NULL, itemsite_ordergroup_first boolean DEFAULT false NOT NULL, itemsite_supply_itemsite_id integer, itemsite_planning_type character(1) DEFAULT 'M'::bpchar NOT NULL, itemsite_wosupply boolean DEFAULT false NOT NULL, itemsite_posupply boolean DEFAULT false NOT NULL, itemsite_lsseq_id integer, itemsite_cosdefault character(1), itemsite_createsopr boolean DEFAULT false, itemsite_createsopo boolean DEFAULT false, itemsite_dropship boolean DEFAULT false, itemsite_recvlocation_id integer DEFAULT (-1) NOT NULL, itemsite_issuelocation_id integer DEFAULT (-1) NOT NULL, itemsite_location_dist boolean DEFAULT false NOT NULL, itemsite_recvlocation_dist boolean DEFAULT false NOT NULL, itemsite_issuelocation_dist boolean DEFAULT false NOT NULL, CONSTRAINT itemsite_itemsite_abcclass_check CHECK (((((itemsite_abcclass = 'A'::bpchar) OR (itemsite_abcclass = 'B'::bpchar)) OR (itemsite_abcclass = 'C'::bpchar)) OR (itemsite_abcclass = 'T'::bpchar))), CONSTRAINT itemsite_itemsite_controlmethod_check CHECK (((((itemsite_controlmethod = 'N'::bpchar) OR (itemsite_controlmethod = 'R'::bpchar)) OR (itemsite_controlmethod = 'S'::bpchar)) OR (itemsite_controlmethod = 'L'::bpchar))), CONSTRAINT itemsite_itemsite_costmethod_check CHECK (((((itemsite_costmethod = 'N'::bpchar) OR (itemsite_costmethod = 'A'::bpchar)) OR (itemsite_costmethod = 'S'::bpchar)) OR (itemsite_costmethod = 'J'::bpchar))), CONSTRAINT itemsite_itemsite_ordergroup_check CHECK ((itemsite_ordergroup > 0)) ); DROP TABLE public.itemsite; publicadminfalse5849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458758w!00TABLE itemsiteCOMMENT6COMMENT ON TABLE itemsite IS 'Item Site information'; publicadminfalse169x!00!COLUMN itemsite.itemsite_lsseq_idCOMMENTlCOMMENT ON COLUMN itemsite.itemsite_lsseq_id IS 'Foreign key reference for automatic lot/serial numbering'; publicadminfalse169y!00#COLUMN itemsite.itemsite_createsoprCOMMENT_COMMENT ON COLUMN itemsite.itemsite_createsopr IS 'Used to flag Sales items that create P/Rs'; publicadminfalse169z!00#COLUMN itemsite.itemsite_createsopoCOMMENT_COMMENT ON COLUMN itemsite.itemsite_createsopo IS 'Used to flag Sales items that create P/Os'; publicadminfalse169{!00!COLUMN itemsite.itemsite_dropshipCOMMENTYCOMMENT ON COLUMN itemsite.itemsite_dropship IS 'Used to flag Sales items to drop ship'; publicadminfalse169|!00itemsiteACLREVOKE ALL ON TABLE itemsite FROM PUBLIC; REVOKE ALL ON TABLE itemsite FROM admin; GRANT ALL ON TABLE itemsite TO admin; GRANT ALL ON TABLE itemsite TO xtrole; publicadminfalse16912591692213whsinfoTABLECREATE TABLE whsinfo ( warehous_id integer DEFAULT nextval(('warehous_warehous_id_seq'::text)::regclass) NOT NULL, warehous_code text NOT NULL, warehous_descrip text, warehous_fob text, warehous_active boolean, warehous_counttag_prefix text, warehous_counttag_number integer, warehous_bol_prefix text, warehous_bol_number integer, warehous_shipping boolean, warehous_useslips boolean, warehous_usezones boolean, warehous_aislesize integer, warehous_aislealpha boolean, warehous_racksize integer, warehous_rackalpha boolean, warehous_binsize integer, warehous_binalpha boolean, warehous_locationsize integer, warehous_locationalpha boolean, warehous_enforcearbl boolean, warehous_default_accnt_id integer, warehous_shipping_commission numeric(8,4) DEFAULT 0.00, warehous_cntct_id integer, warehous_addr_id integer, warehous_transit boolean DEFAULT false NOT NULL, warehous_shipform_id integer, warehous_shipvia_id integer, warehous_shipcomments text, warehous_costcat_id integer, warehous_sitetype_id integer, warehous_taxzone_id integer, warehous_sequence integer DEFAULT 0 NOT NULL, CONSTRAINT whsinfo_check CHECK (((warehous_transit AND (warehous_costcat_id IS NOT NULL)) OR (NOT warehous_transit))), CONSTRAINT whsinfo_warehous_code_check CHECK ((warehous_code <> ''::text)) ); DROP TABLE public.whsinfo; publicadminfalse5882588358845885588658878}!00 TABLE whsinfoCOMMENT5COMMENT ON TABLE whsinfo IS 'Warehouse information'; publicadminfalse172~!00whsinfoACLREVOKE ALL ON TABLE whsinfo FROM PUBLIC; REVOKE ALL ON TABLE whsinfo FROM admin; GRANT ALL ON TABLE whsinfo TO admin; GRANT ALL ON TABLE whsinfo TO xtrole; publicadminfalse17212591848161 physinvcountVIEWvCREATE VIEW physinvcount AS SELECT whsinfo.warehous_code AS site, item.item_number, invcnt.invcnt_tagnumber AS tag_number, cntslip.cntslip_qty AS quantity, public.formatlocationname(cntslip.cntslip_location_id) AS location, cntslip.cntslip_lotserial AS lotserial, cntslip.cntslip_comments AS comment FROM ((((public.invcnt JOIN public.itemsite ON ((itemsite.itemsite_id = invcnt.invcnt_itemsite_id))) JOIN public.whsinfo ON ((whsinfo.warehous_id = itemsite.itemsite_warehous_id))) JOIN public.item ON ((item.item_id = itemsite.itemsite_item_id))) LEFT JOIN public.cntslip ON ((cntslip.cntslip_cnttag_id = invcnt.invcnt_id))); DROP VIEW api.physinvcount; apiadminfalse51606!00VIEW physinvcountCOMMENTICOMMENT ON VIEW physinvcount IS 'Physical Inventory Count Tag and Slip'; apiadminfalse725!00 physinvcountACLREVOKE ALL ON TABLE physinvcount FROM PUBLIC; REVOKE ALL ON TABLE physinvcount FROM admin; GRANT ALL ON TABLE physinvcount TO admin; GRANT ALL ON TABLE physinvcount TO xtrole; apiadminfalse72512551848166 insertphysinvcount(physinvcount)FUNCTIONCREATE FUNCTION insertphysinvcount(physinvcount) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNEW ALIAS FOR $1; _itemid INTEGER; _type TEXT; _siteid INTEGER; _itemsiteid INTEGER; _controlmethod TEXT; _loccntrl BOOLEAN; _locationid INTEGER; _lsid INTEGER; _invcntid INTEGER; _cntslipid INTEGER; _result INTEGER; BEGIN -- Check Item SELECT item_id, item_type INTO _itemid, _type FROM item WHERE (item_number=UPPER(pNEW.item_number)); IF (NOT FOUND OR _type IN ('F', 'R', 'L','J')) THEN SELECT item_id, item_type INTO _itemid, _type FROM item WHERE (item_upccode=pNEW.item_number); IF (NOT FOUND OR _type IN ('F', 'R', 'L','J')) THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because Item % not found or invalid type', pNEW.item_number; END IF; END IF; -- Check Site SELECT warehous_id INTO _siteid FROM whsinfo WHERE (warehous_code=COALESCE(pNEW.site, (SELECT warehous_code FROM usrpref,whsinfo WHERE (usrpref_username=getEffectiveXtUser()) AND (usrpref_name='PreferredWarehouse') AND (warehous_id=CAST(usrpref_value AS INTEGER))))); IF (NOT FOUND) THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because Site % not found', pNEW.site; END IF; -- Check Itemsite SELECT itemsite_id, itemsite_controlmethod, itemsite_loccntrl INTO _itemsiteid, _controlmethod, _loccntrl FROM itemsite WHERE (itemsite_item_id=_itemid) AND (itemsite_warehous_id=_siteid); IF (NOT FOUND) THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because Itemsite %, % not found', pNEW.site, pNEW.item_number; END IF; IF (_controlmethod = 'N') THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because Itemsite %, % not inventory control method', pNEW.site, pNEW.item_number; END IF; IF (_controlmethod IN ('L', 'S') AND COALESCE(pNEW.lotserial, '') = '') THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because Itemsite %, % lot/serial controlled and lotserial not provided', pNEW.site, pNEW.item_number; END IF; IF (_controlmethod = 'S') THEN -- Check for unique serial id SELECT ls_id INTO _lsid FROM ls WHERE (ls_number=pNEW.lotserial); IF (FOUND) THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because Serial %, %, % not unique', pNEW.site, pNEW.item_number, pNEW.lotserial; END IF; END IF; IF (_loccntrl) THEN IF (pNEW.location IS NULL) THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because Itemsite %, % multi location and location not provided', pNEW.site, pNEW.item_number; ELSE -- Check Location SELECT location_id INTO _locationid FROM location WHERE (location_id=getLocationId(pNEW.site, pNEW.location)); IF (NOT FOUND) THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because Location %, % not found', pNEW.site, pNEW.location; END IF; END IF; END IF; -- Create Count Tag SELECT CreateCountTag(_itemsiteid, pNEW.comment, FALSE, FALSE) INTO _invcntid; IF (_invcntid <= 0) THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because CreateCountTag failed for Itemsite %, %', pNEW.site, pNEW.item_number; END IF; -- Create Count Slip INSERT INTO cntslip ( cntslip_cnttag_id, cntslip_username, cntslip_entered, cntslip_posted, cntslip_number, cntslip_qty, cntslip_location_id, cntslip_lotserial, cntslip_lotserial_expiration, cntslip_lotserial_warrpurc, cntslip_comments ) VALUES ( _invcntid, getEffectiveXtUser(), CURRENT_TIMESTAMP, FALSE, 'N/A', pNEW.quantity, COALESCE(_locationid, -1), pNEW.lotserial, NULL, NULL, pNEW.comment ) RETURNING cntslip_id INTO _cntslipid; -- Post Count Slip SELECT postCountSlip(_cntslipid) INTO _result; IF (_result < 0) THEN RAISE EXCEPTION 'Function insertPhysInvCount failed because postCountSlip failed for Itemsite %, %, %', pNEW.site, pNEW.item_number, _result; END IF; RETURN TRUE; END; $_$; 4DROP FUNCTION api.insertphysinvcount(physinvcount); apiadminfalse63992376112551691296 basecurrid()FUNCTIONCREATE FUNCTION basecurrid() RETURNS integer LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE returnVal INTEGER; BEGIN SELECT curr_id INTO returnVal FROM curr_symbol WHERE curr_base = TRUE; IF NOT FOUND THEN RAISE EXCEPTION 'No base currency found'; END IF; RETURN returnVal; END; $$; #DROP FUNCTION public.basecurrid(); publicadminfalse8399212551691793formatglaccount(integer)FUNCTIONCREATE FUNCTION formatglaccount(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAccntid ALIAS FOR $1; _accnt RECORD; BEGIN SELECT COALESCE(accnt_company, '') AS accnt_company, COALESCE(accnt_profit, '') AS accnt_profit, accnt_number, COALESCE(accnt_sub, '') AS accnt_sub INTO _accnt FROM accnt WHERE (accnt_id=pAccntid); IF (NOT FOUND) THEN RETURN 'Error'; END IF; RETURN formatGlAccount(_accnt.accnt_company, _accnt.accnt_profit, _accnt.accnt_number, _accnt.accnt_sub); END; $_$; /DROP FUNCTION public.formatglaccount(integer); publicadminfalse8399212551691823formatsolinenumber(integer)FUNCTIONNCREATE FUNCTION formatsolinenumber(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoitemid ALIAS FOR $1; _r RECORD; BEGIN SELECT coitem_linenumber, coitem_subnumber INTO _r FROM coitem WHERE(coitem_id=pSoitemid); IF(NOT FOUND) THEN RETURN NULL; END IF; IF(COALESCE(_r.coitem_subnumber, 0) > 0) THEN RETURN _r.coitem_linenumber || '.' || _r.coitem_subnumber; END IF; RETURN _r.coitem_linenumber; END; $_$; 2DROP FUNCTION public.formatsolinenumber(integer); publicadminfalse3992812551691875geteffectivextuser()FUNCTIONCREATE FUNCTION geteffectivextuser() RETURNS text LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN /* The default return value of this function is simply the user currently connected. Overload this function from another schema to implement specific user handling from an external application that uses connection pooling. Use setEffectiveXtUser(text) to create a temporary table that inserts user data that can in turn be used as a lookup reference for an over loaded version of this function like so: SELECT effective_value FROM effective_user WHERE effective_key = 'username' */ RETURN CURRENT_USER; END; $$; +DROP FUNCTION public.geteffectivextuser(); publicadminfalse8399212551691904 getitemtaxtype(integer, integer)FUNCTIONCREATE FUNCTION getitemtaxtype(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pTaxzoneid ALIAS FOR $2; _taxtypeid INTEGER; BEGIN SELECT itemtax_taxtype_id INTO _taxtypeid FROM itemtax WHERE ((itemtax_item_id=pItemid) AND (itemtax_taxzone_id=pTaxzoneid)); IF (NOT FOUND) THEN SELECT itemtax_taxtype_id INTO _taxtypeid FROM itemtax WHERE ((itemtax_item_id=pItemid) AND (itemtax_taxzone_id IS NULL)); IF (NOT FOUND) THEN RETURN NULL; END IF; END IF; RETURN _taxtypeid; END; $_$; 7DROP FUNCTION public.getitemtaxtype(integer, integer); publicadminfalse8399212591692281coheadTABLE CREATE TABLE cohead ( cohead_id integer DEFAULT nextval(('cohead_cohead_id_seq'::text)::regclass) NOT NULL, cohead_number text NOT NULL, cohead_cust_id integer NOT NULL, cohead_custponumber text, cohead_type character(1), cohead_orderdate date, cohead_warehous_id integer, cohead_shipto_id integer, cohead_shiptoname text, cohead_shiptoaddress1 text, cohead_shiptoaddress2 text, cohead_shiptoaddress3 text, cohead_shiptoaddress4 text, cohead_shiptoaddress5 text, cohead_salesrep_id integer NOT NULL, cohead_terms_id integer NOT NULL, cohead_fob text, cohead_shipvia text, cohead_shiptocity text, cohead_shiptostate text, cohead_shiptozipcode text, cohead_freight numeric(16,4) NOT NULL, cohead_misc numeric(16,4) DEFAULT 0 NOT NULL, cohead_imported boolean DEFAULT false, cohead_ordercomments text, cohead_shipcomments text, cohead_shiptophone text, cohead_shipchrg_id integer, cohead_shipform_id integer, cohead_billtoname text, cohead_billtoaddress1 text, cohead_billtoaddress2 text, cohead_billtoaddress3 text, cohead_billtocity text, cohead_billtostate text, cohead_billtozipcode text, cohead_misc_accnt_id integer, cohead_misc_descrip text, cohead_commission numeric(16,4), cohead_miscdate date, cohead_holdtype character(1), cohead_packdate date, cohead_prj_id integer, cohead_wasquote boolean DEFAULT false NOT NULL, cohead_lastupdated timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, cohead_shipcomplete boolean DEFAULT false NOT NULL, cohead_created timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone, cohead_creator text DEFAULT geteffectivextuser(), cohead_quote_number text, cohead_billtocountry text, cohead_shiptocountry text, cohead_curr_id integer DEFAULT basecurrid(), cohead_calcfreight boolean DEFAULT false NOT NULL, cohead_shipto_cntct_id integer, cohead_shipto_cntct_honorific text, cohead_shipto_cntct_first_name text, cohead_shipto_cntct_middle text, cohead_shipto_cntct_last_name text, cohead_shipto_cntct_suffix text, cohead_shipto_cntct_phone text, cohead_shipto_cntct_title text, cohead_shipto_cntct_fax text, cohead_shipto_cntct_email text, cohead_billto_cntct_id integer, cohead_billto_cntct_honorific text, cohead_billto_cntct_first_name text, cohead_billto_cntct_middle text, cohead_billto_cntct_last_name text, cohead_billto_cntct_suffix text, cohead_billto_cntct_phone text, cohead_billto_cntct_title text, cohead_billto_cntct_fax text, cohead_billto_cntct_email text, cohead_taxzone_id integer, cohead_taxtype_id integer, cohead_ophead_id integer, cohead_status character(1) DEFAULT 'O'::bpchar NOT NULL, cohead_saletype_id integer, cohead_shipzone_id integer, CONSTRAINT cohead_check CHECK (((cohead_misc = (0)::numeric) OR ((cohead_misc <> (0)::numeric) AND (cohead_misc_accnt_id IS NOT NULL)))), CONSTRAINT cohead_cohead_number_check CHECK ((cohead_number <> ''::text)) ); DROP TABLE public.cohead; publicadminfalse58995900590159025903590459055906590759085909591059118!00 TABLE coheadCOMMENT=COMMENT ON TABLE cohead IS 'Sales Order header information'; publicadminfalse176!00 COLUMN cohead.cohead_saletype_idCOMMENTXCOMMENT ON COLUMN cohead.cohead_saletype_id IS 'Associated sale type for sales order.'; publicadminfalse176!00 COLUMN cohead.cohead_shipzone_idCOMMENT\COMMENT ON COLUMN cohead.cohead_shipzone_id IS 'Associated shipping zone for sales order.'; publicadminfalse176!00coheadACLREVOKE ALL ON TABLE cohead FROM PUBLIC; REVOKE ALL ON TABLE cohead FROM admin; GRANT ALL ON TABLE cohead TO admin; GRANT ALL ON TABLE cohead TO xtrole; publicadminfalse17612591692299coitemTABLECREATE TABLE coitem ( coitem_id integer DEFAULT nextval(('coitem_coitem_id_seq'::text)::regclass) NOT NULL, coitem_cohead_id integer, coitem_linenumber integer NOT NULL, coitem_itemsite_id integer, coitem_status character(1), coitem_scheddate date, coitem_promdate date, coitem_qtyord numeric(18,6) NOT NULL, coitem_unitcost numeric(16,6) NOT NULL, coitem_price numeric(16,4) NOT NULL, coitem_custprice numeric(16,4) NOT NULL, coitem_qtyshipped numeric(18,6) NOT NULL, coitem_order_id integer, coitem_memo text, coitem_imported boolean DEFAULT false, coitem_qtyreturned numeric(18,6), coitem_closedate timestamp with time zone, coitem_custpn text, coitem_order_type character(1), coitem_close_username text, coitem_lastupdated timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, coitem_substitute_item_id integer, coitem_created timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone, coitem_creator text DEFAULT geteffectivextuser(), coitem_prcost numeric(16,6), coitem_qty_uom_id integer NOT NULL, coitem_qty_invuomratio numeric(20,10) NOT NULL, coitem_price_uom_id integer NOT NULL, coitem_price_invuomratio numeric(20,10) NOT NULL, coitem_warranty boolean DEFAULT false NOT NULL, coitem_cos_accnt_id integer, coitem_qtyreserved numeric(18,6) DEFAULT 0.0 NOT NULL, coitem_subnumber integer DEFAULT 0 NOT NULL, coitem_firm boolean DEFAULT false NOT NULL, coitem_taxtype_id integer, coitem_rev_accnt_id integer, coitem_pricemode character(1) DEFAULT 'D'::bpchar NOT NULL, CONSTRAINT coitem_coitem_status_check CHECK ((((coitem_status = 'O'::bpchar) OR (coitem_status = 'C'::bpchar)) OR (coitem_status = 'X'::bpchar))), CONSTRAINT valid_coitem_pricemode CHECK ((coitem_pricemode = ANY (ARRAY['D'::bpchar, 'M'::bpchar]))) ); DROP TABLE public.coitem; publicadminfalse5912591359145915591659175918591959205921592259238!00 TABLE coitemCOMMENT@COMMENT ON TABLE coitem IS 'Sales Order Line Item information'; publicadminfalse177!00COLUMN coitem.coitem_pricemodeCOMMENT~COMMENT ON COLUMN coitem.coitem_pricemode IS 'Pricing mode for sales order item. Valid values are D-discount, and M-markup'; publicadminfalse177!00coitemACLREVOKE ALL ON TABLE coitem FROM PUBLIC; REVOKE ALL ON TABLE coitem FROM admin; GRANT ALL ON TABLE coitem TO admin; GRANT ALL ON TABLE coitem TO xtrole; publicadminfalse17712591692315poheadTABLECREATE TABLE pohead ( pohead_id integer DEFAULT nextval(('pohead_pohead_id_seq'::text)::regclass) NOT NULL, pohead_status character(1), pohead_number text NOT NULL, pohead_orderdate date, pohead_vend_id integer, pohead_fob text, pohead_shipvia text, pohead_comments text, pohead_freight numeric(16,2) DEFAULT 0, pohead_printed boolean DEFAULT false, pohead_terms_id integer, pohead_warehous_id integer, pohead_vendaddr_id integer, pohead_agent_username text, pohead_curr_id integer DEFAULT basecurrid(), pohead_saved boolean DEFAULT true NOT NULL, pohead_taxzone_id integer, pohead_taxtype_id integer, pohead_dropship boolean DEFAULT false, pohead_vend_cntct_id integer, pohead_vend_cntct_honorific text, pohead_vend_cntct_first_name text, pohead_vend_cntct_middle text, pohead_vend_cntct_last_name text, pohead_vend_cntct_suffix text, pohead_vend_cntct_phone text, pohead_vend_cntct_title text, pohead_vend_cntct_fax text, pohead_vend_cntct_email text, pohead_vendaddress1 text, pohead_vendaddress2 text, pohead_vendaddress3 text, pohead_vendcity text, pohead_vendstate text, pohead_vendzipcode text, pohead_vendcountry text, pohead_shipto_cntct_id integer, pohead_shipto_cntct_honorific text, pohead_shipto_cntct_first_name text, pohead_shipto_cntct_middle text, pohead_shipto_cntct_last_name text, pohead_shipto_cntct_suffix text, pohead_shipto_cntct_phone text, pohead_shipto_cntct_title text, pohead_shipto_cntct_fax text, pohead_shipto_cntct_email text, pohead_shiptoaddress_id integer, pohead_shiptoaddress1 text, pohead_shiptoaddress2 text, pohead_shiptoaddress3 text, pohead_shiptocity text, pohead_shiptostate text, pohead_shiptozipcode text, pohead_shiptocountry text, pohead_cohead_id integer, pohead_released date, CONSTRAINT pohead_pohead_number_check CHECK ((pohead_number <> ''::text)), CONSTRAINT pohead_pohead_status_check CHECK ((((pohead_status = 'U'::bpchar) OR (pohead_status = 'O'::bpchar)) OR (pohead_status = 'C'::bpchar))) ); DROP TABLE public.pohead; publicadminfalse592459255926592759285929593059318!00 TABLE poheadCOMMENT@COMMENT ON TABLE pohead IS 'Purchase Order header information'; publicadminfalse178!00poheadACLREVOKE ALL ON TABLE pohead FROM PUBLIC; REVOKE ALL ON TABLE pohead FROM admin; GRANT ALL ON TABLE pohead TO admin; GRANT ALL ON TABLE pohead TO xtrole; publicadminfalse17812591692328poitemTABLECREATE TABLE poitem ( poitem_id integer DEFAULT nextval(('poitem_poitem_id_seq'::text)::regclass) NOT NULL, poitem_status character(1), poitem_pohead_id integer, poitem_linenumber integer, poitem_duedate date, poitem_itemsite_id integer, poitem_vend_item_descrip text, poitem_vend_uom text, poitem_invvenduomratio numeric(20,10), poitem_qty_ordered numeric(18,6) NOT NULL, poitem_qty_received numeric(18,6) DEFAULT 0.0 NOT NULL, poitem_qty_returned numeric(18,6) DEFAULT 0.0 NOT NULL, poitem_qty_vouchered numeric(18,6) DEFAULT 0.0 NOT NULL, poitem_unitprice numeric(16,6), poitem_vend_item_number text, poitem_comments text, poitem_qty_toreceive numeric(18,6), poitem_expcat_id integer, poitem_itemsrc_id integer, poitem_freight numeric(16,4) DEFAULT 0.0 NOT NULL, poitem_freight_received numeric(16,4) DEFAULT 0.0 NOT NULL, poitem_freight_vouchered numeric(16,4) DEFAULT 0.0 NOT NULL, poitem_prj_id integer, poitem_stdcost numeric(16,6), poitem_bom_rev_id integer, poitem_boo_rev_id integer, poitem_manuf_name text, poitem_manuf_item_number text, poitem_manuf_item_descrip text, poitem_taxtype_id integer, poitem_tax_recoverable boolean DEFAULT true NOT NULL, poitem_rlsd_duedate date, poitem_order_id integer, poitem_order_type character(1), CONSTRAINT poitem_poitem_status_check CHECK ((((poitem_status = 'U'::bpchar) OR (poitem_status = 'O'::bpchar)) OR (poitem_status = 'C'::bpchar))) ); DROP TABLE public.poitem; publicadminfalse5932593359345935593659375938593959408!00 TABLE poitemCOMMENTCCOMMENT ON TABLE poitem IS 'Purchase Order Line Item information'; publicadminfalse179!00poitemACLREVOKE ALL ON TABLE poitem FROM PUBLIC; REVOKE ALL ON TABLE poitem FROM admin; GRANT ALL ON TABLE poitem TO admin; GRANT ALL ON TABLE poitem TO xtrole; publicadminfalse17912591692199taxtypeTABLECREATE TABLE taxtype ( taxtype_id integer NOT NULL, taxtype_name text NOT NULL, taxtype_descrip text, taxtype_sys boolean DEFAULT false NOT NULL, CONSTRAINT taxtype_taxtype_name_check CHECK ((taxtype_name <> ''::text)) ); DROP TABLE public.taxtype; publicadminfalse587758788!00 TABLE taxtypeCOMMENT5COMMENT ON TABLE taxtype IS 'The list of Tax Types'; publicadminfalse170!00taxtypeACLREVOKE ALL ON TABLE taxtype FROM PUBLIC; REVOKE ALL ON TABLE taxtype FROM admin; GRANT ALL ON TABLE taxtype TO admin; GRANT ALL ON TABLE taxtype TO xtrole; publicadminfalse17012591692206uomTABLECREATE TABLE uom ( uom_id integer NOT NULL, uom_name text NOT NULL, uom_descrip text, uom_item_weight boolean DEFAULT false NOT NULL, CONSTRAINT uom_uom_name_check CHECK ((uom_name <> ''::text)) ); DROP TABLE public.uom; publicadminfalse588058818!00 TABLE uomCOMMENT7COMMENT ON TABLE uom IS 'Unit of Measure information'; publicadminfalse171!00uomACLREVOKE ALL ON TABLE uom FROM PUBLIC; REVOKE ALL ON TABLE uom FROM admin; GRANT ALL ON TABLE uom TO admin; GRANT ALL ON TABLE uom TO xtrole; publicadminfalse17112591692343 saleslineVIEWg CREATE VIEW salesline AS SELECT (cohead.cohead_number)::character varying AS order_number, (public.formatsolinenumber(coitem.coitem_id))::character varying AS line_number, l.item_number, coitem.coitem_custpn AS customer_pn, s.item_number AS substitute_for, whsinfo.warehous_code AS sold_from_site, coitem.coitem_status AS status, coitem.coitem_qtyord AS qty_ordered, q.uom_name AS qty_uom, coitem.coitem_price AS net_unit_price, p.uom_name AS price_uom, coitem.coitem_scheddate AS scheduled_date, coitem.coitem_promdate AS promise_date, coitem.coitem_warranty AS warranty, COALESCE((SELECT taxtype.taxtype_name FROM public.taxtype WHERE (taxtype.taxtype_id = public.getitemtaxtype(l.item_id, cohead.cohead_taxzone_id))), 'None'::text) AS tax_type, CASE WHEN (coitem.coitem_price = (0)::numeric) THEN '100'::text WHEN (coitem.coitem_custprice = (0)::numeric) THEN 'N/A'::text ELSE (round((((1)::numeric - (coitem.coitem_price / coitem.coitem_custprice)) * (100)::numeric), 4))::text END AS discount_pct_from_list, CASE WHEN (coitem.coitem_order_id = (-1)) THEN false ELSE true END AS create_order, CASE WHEN (coitem.coitem_order_id = (-1)) THEN ''::text ELSE ((pohead.pohead_number || '-'::text) || poitem.poitem_linenumber) END AS create_po, coitem.coitem_prcost AS overwrite_po_price, coitem.coitem_memo AS notes, CASE WHEN (coitem.coitem_cos_accnt_id IS NOT NULL) THEN public.formatglaccount(coitem.coitem_cos_accnt_id) ELSE NULL::text END AS alternate_cos_account, CASE WHEN (coitem.coitem_rev_accnt_id IS NOT NULL) THEN public.formatglaccount(coitem.coitem_rev_accnt_id) ELSE NULL::text END AS alternate_rev_account FROM public.cohead, (((public.coitem LEFT JOIN public.itemsite isb ON ((coitem.coitem_substitute_item_id = isb.itemsite_id))) LEFT JOIN public.item s ON ((isb.itemsite_item_id = s.item_id))) LEFT JOIN (public.poitem JOIN public.pohead ON ((poitem.poitem_pohead_id = pohead.pohead_id))) ON ((poitem.poitem_id = coitem.coitem_order_id))), public.itemsite il, public.item l, public.whsinfo, public.uom q, public.uom p WHERE ((((((cohead.cohead_id = coitem.coitem_cohead_id) AND (coitem.coitem_itemsite_id = il.itemsite_id)) AND (il.itemsite_item_id = l.item_id)) AND (il.itemsite_warehous_id = whsinfo.warehous_id)) AND (coitem.coitem_qty_uom_id = q.uom_id)) AND (coitem.coitem_price_uom_id = p.uom_id)) ORDER BY cohead.cohead_number, coitem.coitem_linenumber, coitem.coitem_subnumber; DROP VIEW api.salesline; apiadminfalse51356!00VIEW saleslineCOMMENT6COMMENT ON VIEW salesline IS 'Sales Order Line Item'; apiadminfalse180!00 saleslineACLREVOKE ALL ON TABLE salesline FROM PUBLIC; REVOKE ALL ON TABLE salesline FROM admin; GRANT ALL ON TABLE salesline TO admin; GRANT ALL ON TABLE salesline TO xtrole; apiadminfalse180k12551746698insertsalesline(salesline)FUNCTIONCREATE FUNCTION insertsalesline(salesline) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNEW ALIAS FOR $1; _r RECORD; BEGIN IF (NOT EXISTS (SELECT cohead_id FROM cohead WHERE cohead_number=pNEW.order_number)) THEN RAISE EXCEPTION 'Function insertSalesLine failed because Sales Order % not found', pNEW.order_number; END IF; IF (NOT EXISTS (SELECT item_id FROM item WHERE item_number=pNEW.item_number)) THEN RAISE EXCEPTION 'Function insertSalesLine failed because Item Number % not found', pNEW.item_number; END IF; SELECT * INTO _r FROM cohead, itemsite, item, whsinfo WHERE ((cohead_number=pNEW.order_number) AND (itemsite_warehous_id=warehous_id AND (itemsite_item_id=item_id) AND (itemsite_active) AND (item_number=pNEW.item_number) AND (warehous_active) AND (warehous_id=COALESCE(getWarehousId(pNEW.sold_from_site,'ALL'),cohead_warehous_id,fetchprefwarehousid())))); IF (NOT FOUND) THEN RAISE EXCEPTION 'Function insertSalesLine failed with unknown failure to retrieve Sales Order'; END IF; INSERT INTO coitem ( coitem_cohead_id, coitem_linenumber, coitem_itemsite_id, coitem_status, coitem_scheddate, coitem_promdate, coitem_qtyord, coitem_qty_uom_id, coitem_qty_invuomratio, coitem_qtyshipped, coitem_unitcost, coitem_price, coitem_price_uom_id, coitem_price_invuomratio, coitem_custprice, coitem_order_id, coitem_memo, coitem_imported, coitem_qtyreturned, coitem_custpn, coitem_order_type, coitem_substitute_item_id, coitem_prcost, coitem_taxtype_id, coitem_warranty, coitem_cos_accnt_id, coitem_rev_accnt_id) VALUES ( _r.cohead_id, pNEW.line_number::INTEGER, _r.itemsite_id, pNEW.status, pNEW.scheduled_date, pNEW.promise_date, pNEW.qty_ordered, COALESCE(getUomId(pNEW.qty_uom),_r.item_inv_uom_id), itemuomtouomratio(_r.item_id,COALESCE(getUomId(pNEW.qty_uom),_r.item_inv_uom_id),_r.item_inv_uom_id), 0, stdCost(_r.item_id), COALESCE(pNEW.net_unit_price,itemPrice(_r.item_id,_r.cohead_cust_id, _r.cohead_shipto_id,pNEW.qty_ordered,_r.cohead_curr_id,_r.cohead_orderdate)), COALESCE(getUomId(pNEW.price_uom),_r.item_price_uom_id), itemuomtouomratio(_r.item_id,COALESCE(getUomId(pNEW.price_uom),_r.item_price_uom_id),_r.item_price_uom_id), itemPrice(_r.item_id, _r.cohead_cust_id, _r.cohead_shipto_id, pNEW.qty_ordered, _r.item_inv_uom_id, _r.item_price_uom_id, _r.cohead_curr_id,_r.cohead_orderdate, CASE WHEN (fetchMetricText('soPriceEffective') = 'ScheduleDate') THEN pNEW.scheduled_date WHEN (fetchMetricText('soPriceEffective') = 'OrderDate') THEN _r.cohead_orderdate ELSE CURRENT_DATE END, NULL) -1, pNEW.notes, true, 0, pNEW.customer_pn, CASE WHEN ((pNEW.create_order AND (_r.item_type = 'M')) OR ((pNEW.create_order IS NULL) AND _r.itemsite_createwo)) THEN 'W' WHEN ((pNEW.create_order AND (_r.item_type = 'P')) OR ((pNEW.create_order IS NULL) AND _r.itemsite_createsopr)) THEN 'R' WHEN ((pNEW.create_order AND (_r.item_type = 'P') AND (_r.itemsite_createsopo)) OR ((pNEW.create_order IS NULL) AND _r.itemsite_createsopo)) THEN 'P' END, getitemid(pNEW.substitute_for), pNEW.overwrite_po_price, COALESCE(getTaxTypeId(pNEW.tax_type), getItemTaxType(_r.itemsite_item_id, _r.cohead_taxzone_id)), pNEW.warranty, getGlAccntId(pNEW.alternate_cos_account), getGlAccntId(pNEW.alternate_rev_account) ); RETURN TRUE; END; $_$; .DROP FUNCTION api.insertsalesline(salesline); apiadminfalse639922736+12551691062_accntdeletetrigger()FUNCTION CREATE FUNCTION _accntdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _accntnum TEXT := formatGLAccount(OLD.accnt_id); _check INTEGER; BEGIN -- This trigger is to protect against accounts that are in use -- Check to see if the passed accnt is used in a Cost Category SELECT costcat_id INTO _check FROM costcat WHERE ( (costcat_asset_accnt_id=OLD.accnt_id) OR (costcat_liability_accnt_id=OLD.accnt_id) OR (costcat_adjustment_accnt_id=OLD.accnt_id) OR (costcat_purchprice_accnt_id=OLD.accnt_id) OR (costcat_laboroverhead_accnt_id=OLD.accnt_id) OR (costcat_scrap_accnt_id=OLD.accnt_id) OR (costcat_invcost_accnt_id=OLD.accnt_id) OR (costcat_wip_accnt_id=OLD.accnt_id) OR (costcat_shipasset_accnt_id=OLD.accnt_id) OR (costcat_mfgscrap_accnt_id=OLD.accnt_id) OR (costcat_transform_accnt_id=OLD.accnt_id) OR (costcat_freight_accnt_id=OLD.accnt_id) ) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in Cost Category'; END IF; -- Check to see if the passed accnt is used in a Sales Account Assignment SELECT salesaccnt_id INTO _check FROM salesaccnt WHERE ( (salesaccnt_sales_accnt_id=OLD.accnt_id) OR (salesaccnt_credit_accnt_id=OLD.accnt_id) OR (salesaccnt_cos_accnt_id=OLD.accnt_id) ) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in Sales Account Assignment'; END IF; -- Check to see if the passed accnt is used in a A/R Account Assignment SELECT araccnt_id INTO _check FROM araccnt WHERE ( (araccnt_freight_accnt_id=OLD.accnt_id) OR (araccnt_ar_accnt_id=OLD.accnt_id) OR (araccnt_prepaid_accnt_id=OLD.accnt_id) ) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in A/R Account Assignment'; END IF; -- Check to see if the passed accnt is used in a Warehouse SELECT warehous_id INTO _check FROM whsinfo WHERE (warehous_default_accnt_id=OLD.accnt_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in Site'; END IF; -- Check to see if the passed accnt is used in a Bank Account SELECT bankaccnt_id INTO _check FROM bankaccnt WHERE (bankaccnt_accnt_id=OLD.accnt_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in Bank Account'; END IF; -- Check to see if the passed accnt is used in an Expense Category SELECT expcat_id INTO _check FROM expcat WHERE ( (expcat_exp_accnt_id=OLD.accnt_id) OR (expcat_liability_accnt_id=OLD.accnt_id) OR (expcat_purchprice_accnt_id=OLD.accnt_id) OR (expcat_freight_accnt_id=OLD.accnt_id) ) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in Expense Category'; END IF; -- Check to see if the passed accnt is used in a Tax Code SELECT tax_id INTO _check FROM tax WHERE (tax_sales_accnt_id=OLD.accnt_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in Tax Code'; END IF; -- Check to see if the passed accnt is used in a Standard Journal Item SELECT stdjrnlitem_id INTO _check FROM stdjrnlitem WHERE (stdjrnlitem_accnt_id=OLD.accnt_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in Standard Journal Item'; END IF; -- Check to see if the passed accnt is used in a A/P Account Assignment SELECT apaccnt_ap_accnt_id INTO _check FROM apaccnt WHERE ( (apaccnt_ap_accnt_id=OLD.accnt_id) OR (apaccnt_prepaid_accnt_id=OLD.accnt_id) OR (apaccnt_discount_accnt_id=OLD.accnt_id) ) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in A/P Account Assignment'; END IF; -- Check to see if the passed accnt is used in an A/R Open Item record SELECT aropen_accnt_id INTO _check FROM aropen WHERE (aropen_accnt_id=OLD.accnt_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in A/R Open Item'; END IF; -- Check to see if the passed accnt has been used in the G/L SELECT gltrans_accnt_id INTO _check FROM gltrans WHERE (gltrans_accnt_id=OLD.accnt_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in G/L Transaction'; END IF; SELECT sltrans_accnt_id INTO _check FROM sltrans WHERE (sltrans_accnt_id=OLD.accnt_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in G/L Journal Transaction'; END IF; SELECT glseries_accnt_id INTO _check FROM glseries WHERE (glseries_accnt_id=OLD.accnt_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in G/L Series'; END IF; SELECT trialbal_accnt_id INTO _check FROM trialbal WHERE (trialbal_accnt_id=OLD.accnt_id) AND (trialbal_beginning != 0 OR trialbal_ending != 0) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in Trial Balance'; END IF; SELECT cashrcptmisc_accnt_id INTO _check FROM cashrcptmisc WHERE (cashrcptmisc_accnt_id=OLD.accnt_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Can not delete, used in Cash Receipt Misc. Application'; END IF; -- TODO: everything above here should be replaced by fkeys IF (OLD.accnt_id = fetchMetricValue('DefaultAPAccount')) THEN RAISE EXCEPTION 'Cannot delete the default A/P Account [xtuple: accnt, -1, %]', _accntnum; ELSIF (OLD.accnt_id = fetchMetricValue('DefaultARAccount')) THEN RAISE EXCEPTION 'Cannot delete the default A/R Account [xtuple: accnt, -2, %]', _accntnum; END IF; RETURN OLD; END; $$; ,DROP FUNCTION public._accntdeletetrigger(); publicadminfalse83992*12551691063_accnttrigger()FUNCTION6CREATE FUNCTION _accnttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ffSub BOOLEAN; ffProfit BOOLEAN; result INTEGER; BEGIN SELECT (metric_value='t') INTO ffSub FROM metric WHERE(metric_name='GLFFSubaccounts') LIMIT 1; ffSub := COALESCE(ffSub, false); SELECT (metric_value='t') INTO ffProfit FROM metric WHERE(metric_name='GLFFProfitCenters') LIMIT 1; ffProfit := COALESCE(ffSub, false); IF (NEW.accnt_sub IS NOT NULL AND ffSub = false) THEN SELECT subaccnt_id INTO result FROM subaccnt WHERE(subaccnt_number=NEW.accnt_sub) LIMIT 1; IF (NOT FOUND) THEN RAISE EXCEPTION 'You must supply a valid Sub Account Number.'; END IF; END IF; IF (NEW.accnt_profit IS NOT NULL AND ffProfit = false) THEN SELECT prftcntr_id INTO result FROM prftcntr WHERE(prftcntr_number=NEW.accnt_profit) LIMIT 1; IF (NOT FOUND) THEN RAISE EXCEPTION 'You must supply a valid Profit Center Number.'; END IF; END IF; IF (TG_OP = 'UPDATE') THEN IF ((NEW.accnt_type != OLD.accnt_type) AND (SELECT (count(*) > 0) FROM gltrans WHERE (gltrans_accnt_id=NEW.accnt_id))) THEN RAISE EXCEPTION 'You may not change the account type of an account that has transaction history'; END IF; END IF; NEW.accnt_name := formatGlAccount(NEW.accnt_company, NEW.accnt_profit, NEW.accnt_number, NEW.accnt_sub); RETURN NEW; END; $$; &DROP FUNCTION public._accnttrigger(); publicadminfalse8399212551691064_accntuniquetrigger()FUNCTIONCREATE FUNCTION _accntuniquetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN -- This trigger is to protect against id collision on inherited tables since there is no way -- to enforce that with regular constraints. It should be applied to accnt and any table that -- inherits accnt. IF (SELECT (count(accnt_id) > 0) FROM accnt WHERE (accnt_id = NEW.accnt_id)) THEN RAISE EXCEPTION 'Can not create record on account with duplicate key %.', NEW.accnt_id; END IF; RETURN NEW; END; $$; ,DROP FUNCTION public._accntuniquetrigger(); publicadminfalse39928.12551691065_addrtrigger()FUNCTIONCREATE FUNCTION _addrtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _uses INTEGER := 0; BEGIN IF (TG_OP = 'INSERT') THEN --- clear the number from the issue cache PERFORM clearNumberIssue('AddressNumber', NEW.addr_number); ELSE SELECT count(*) INTO _uses FROM cntct WHERE ((cntct_addr_id=OLD.addr_id) AND cntct_active); END IF; IF (TG_OP = 'UPDATE') THEN IF (OLD.addr_active AND NOT NEW.addr_active AND _uses > 0) THEN RAISE EXCEPTION 'Cannot inactivate Address with Active Contacts (%)', _uses; END IF; ELSIF (TG_OP = 'DELETE') THEN IF (_uses > 0) THEN RAISE EXCEPTION 'Cannot Delete Address with Active Contacts (%)', _uses; END IF; UPDATE cntct SET cntct_addr_id = NULL WHERE ((cntct_addr_id=OLD.addr_id) AND (NOT cntct_active)); RETURN OLD; END IF; RETURN NEW; END; $$; %DROP FUNCTION public._addrtrigger(); publicadminfalse8399212551691066_alarmbeforetrigger()FUNCTION7CREATE FUNCTION _alarmbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN PERFORM clearNumberIssue('AlarmNumber', NEW.alarm_number); RETURN NEW; END; $$; ,DROP FUNCTION public._alarmbeforetrigger(); publicadminfalse83992/12551691067_apapplytrigger()FUNCTIONCREATE FUNCTION _apapplytrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _tpaid NUMERIC; BEGIN -- get the exchange rate for the doc date IF (TG_OP = 'INSERT') THEN SELECT currtocurr(NEW.apapply_curr_id,apopen_curr_id,NEW.apapply_amount,NEW.apapply_postdate) INTO _tpaid FROM apopen WHERE ( apopen_id=NEW.apapply_target_apopen_id ); IF (FOUND) THEN NEW.apapply_target_paid := _tpaid; ELSE RAISE EXCEPTION 'Error calculating paid amount on application'; END IF; END IF; RETURN NEW; END; $$; (DROP FUNCTION public._apapplytrigger(); publicadminfalse83992012551691068_apopentrigger()FUNCTIONCREATE FUNCTION _apopentrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _currrate NUMERIC; BEGIN -- get the base exchange rate for the doc date IF (TG_OP = 'INSERT' AND NEW.apopen_curr_rate IS NULL) THEN SELECT curr_rate INTO _currrate FROM curr_rate WHERE ( (NEW.apopen_curr_id=curr_id) AND ( NEW.apopen_docdate BETWEEN curr_effective AND curr_expires) ); IF (FOUND) THEN NEW.apopen_curr_rate := _currrate; ELSE RAISE EXCEPTION 'Currency exchange rate not found'; END IF; END IF; NEW.apopen_open := NEW.apopen_amount > NEW.apopen_paid; IF (TG_OP = 'INSERT') THEN IF (NEW.apopen_open=FALSE) THEN NEW.apopen_status='C'; ELSE NEW.apopen_status='O'; END IF; --- clear the number from the issue cache PERFORM clearNumberIssue('APMemoNumber', NEW.apopen_docnumber); END IF; IF (TG_OP = 'UPDATE') THEN IF ((OLD.apopen_open=TRUE) AND (NEW.apopen_open=FALSE)) THEN NEW.apopen_status='C'; IF (NEW.apopen_closedate IS NULL) THEN NEW.apopen_closedate=CURRENT_DATE; END IF; END IF; IF ((OLD.apopen_open=FALSE) AND (NEW.apopen_open=TRUE)) THEN NEW.apopen_status='O'; NEW.apopen_closedate=NULL; END IF; END IF; RETURN NEW; END; $$; 'DROP FUNCTION public._apopentrigger(); publicadminfalse83992112551691069_arapplytrigger()FUNCTIONCREATE FUNCTION _arapplytrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _tpaid NUMERIC; BEGIN -- get the exchange rate for the doc date IF (TG_OP = 'INSERT') THEN IF (NEW.arapply_target_doctype != 'K') THEN SELECT round(currtocurr(NEW.arapply_curr_id,aropen_curr_id,NEW.arapply_applied,NEW.arapply_postdate),2) INTO NEW.arapply_target_paid FROM aropen WHERE ( aropen_id=NEW.arapply_target_aropen_id ); ELSE SELECT round(currtocurr(NEW.arapply_curr_id,aropen_curr_id,NEW.arapply_applied,NEW.arapply_postdate),2) INTO NEW.arapply_target_paid FROM aropen WHERE ( aropen_id=NEW.arapply_source_aropen_id ); END IF; IF NOT FOUND THEN NEW.arapply_target_paid := NEW.arapply_applied; END IF; END IF; RETURN NEW; END; $$; (DROP FUNCTION public._arapplytrigger(); publicadminfalse83992212551691070_aropenaftertrigger()FUNCTIONCREATE FUNCTION _aropenaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _openAmount NUMERIC; _lateCount INTEGER := 0; _graceDays INTEGER; _checkLate BOOLEAN := false; _checkLimit BOOLEAN := false; _id INTEGER; BEGIN IF (TG_OP = 'INSERT') THEN _id := NEW.aropen_id; ELSE _id := OLD.aropen_id; END IF; -- If metric is set then auto close any associated incidents when AR is closed IF (fetchMetricBool('AutoCloseARIncident')) THEN IF (NEW.aropen_open = FALSE) THEN UPDATE incdt SET incdt_status='L' WHERE (incdt_aropen_id=_id); END IF; END IF; RETURN NEW; END; $$; ,DROP FUNCTION public._aropenaftertrigger(); publicadminfalse83992~12551691071_aropentrigger()FUNCTIONuCREATE FUNCTION _aropentrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _openAmount NUMERIC; _p RECORD; _lateCount INTEGER := 0; _graceDays INTEGER; _checkLate BOOLEAN := false; _checkLimit BOOLEAN := false; _id INTEGER; _currRate NUMERIC; BEGIN -- Checks -- Start with privileges IF ( (NOT checkPrivilege('MaintainARMemos')) AND (NOT checkPrivilege('PostMiscInvoices')) AND (NOT checkPrivilege('PostARDocuments')) ) THEN RAISE EXCEPTION 'You do not have privileges to maintain A/R Memos.'; END IF; IF ( (NEW.aropen_docnumber IS NULL) OR (LENGTH(NEW.aropen_docnumber) = 0) ) THEN RAISE EXCEPTION 'You must enter a valid Document # for this A/R Memo.'; END IF; IF ( (NEW.aropen_amount IS NOT NULL) AND (NEW.aropen_amount < 0) ) THEN RAISE EXCEPTION 'You must enter a positive Amount for this A/R Memo.'; END IF; IF (TG_OP IN ('INSERT', 'UPDATE') AND NEW.aropen_cust_id < 0) THEN RAISE NOTICE 'Fixing deprecated use of negative aropen_cust_id'; NEW.aropen_cust_id := NULL; END IF; IF (TG_OP IN ('INSERT', 'UPDATE') AND NEW.aropen_salesrep_id < 0) THEN RAISE NOTICE 'Fixing deprecated use of negative aropen_salesrep_id'; NEW.aropen_salesrep_id := NULL; END IF; IF (TG_OP = 'INSERT') THEN SELECT aropen_id INTO _id FROM aropen WHERE ( (aropen_doctype=NEW.aropen_doctype) AND (aropen_docnumber=NEW.aropen_docnumber) ) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'This Document Type/Number already exists. You may not enter a duplicate A/R Memo.'; END IF; --- clear the number from the issue cache if applicable PERFORM clearNumberIssue('ARMemoNumber', NEW.aropen_docnumber); END IF; -- Determine the number of late invoices IF ( SELECT (metric_value='t') FROM metric WHERE(metric_name='AutoCreditWarnLateCustomers')) THEN _checkLate := true; SELECT COALESCE(metric_value::integer, _graceDays) INTO _graceDays FROM metric WHERE(metric_name='DefaultAutoCreditWarnGraceDays'); IF (NOT FOUND) THEN _graceDays := 30; END IF; SELECT COALESCE(cust_gracedays, _graceDays) INTO _graceDays FROM custinfo WHERE(cust_id=NEW.aropen_cust_id); IF (NOT FOUND) THEN _graceDays := 30; END IF; SELECT count(aropen_id) INTO _lateCount FROM aropen WHERE((NEW.aropen_cust_id = aropen_cust_id) AND (aropen_open) AND (aropen_amount > aropen_paid) AND (aropen_doctype IN ('I', 'D')) AND (aropen_duedate < (CURRENT_DATE - _graceDays))); -- Adjust _lateCount if late invoice being paid IF ( (NEW.aropen_paid = NEW.aropen_amount) AND (NEW.aropen_doctype IN ('I', 'D')) AND (NEW.aropen_duedate < (CURRENT_DATE - _graceDays))) THEN _lateCount := _lateCount - 1; END IF; END IF; -- get the base exchange rate for the doc date IF (TG_OP = 'INSERT' AND NEW.aropen_curr_rate IS NULL) THEN SELECT curr_rate INTO _currrate FROM curr_rate WHERE ( (NEW.aropen_curr_id=curr_id) AND ( NEW.aropen_docdate BETWEEN curr_effective AND curr_expires) ); IF (FOUND) THEN NEW.aropen_curr_rate := _currrate; ELSE RAISE EXCEPTION 'Currency exchange rate not found'; END IF; END IF; -- Close this aropen if it is paid IF (NEW.aropen_paid = NEW.aropen_amount) THEN NEW.aropen_open=FALSE; -- Remove any aropenalloc regards that reference this aropen item DELETE FROM aropenalloc WHERE (aropenalloc_aropen_id=NEW.aropen_id); END IF; IF (TG_OP = 'INSERT') THEN IF (NEW.aropen_open=FALSE) AND (NEW.aropen_closedate IS NULL) THEN NEW.aropen_closedate=current_date; END IF; END IF; IF (TG_OP = 'UPDATE') THEN IF ((OLD.aropen_open=TRUE) AND (NEW.aropen_open=FALSE) AND (NEW.aropen_closedate IS NULL)) THEN NEW.aropen_closedate=current_date; END IF; END IF; -- Only check if the customer in question has a non-zero Credit Limit SELECT cust_id, cust_creditlmt, cust_creditstatus, cust_autoupdatestatus, cust_autoholdorders INTO _p FROM custinfo WHERE (cust_id=NEW.aropen_cust_id); IF (_p.cust_creditlmt > 0) THEN _checkLimit := true; SELECT COALESCE(SUM( CASE WHEN (aropen_doctype IN ('I', 'D')) THEN (aropen_amount - aropen_paid) ELSE ((aropen_amount - aropen_paid) * -1) END ), 0.0) INTO _openAmount FROM aropen AS current WHERE ( (current.aropen_cust_id=NEW.aropen_cust_id) AND (current.aropen_open) AND (current.aropen_id <> NEW.aropen_id) ); -- Add in the value of the current aropen item IF (NEW.aropen_doctype IN ('I', 'D')) THEN _openAmount := (_openAmount + (NEW.aropen_amount - NEW.aropen_paid)); ELSE _openAmount := (_openAmount - (NEW.aropen_amount - NEW.aropen_paid)); END IF; ELSE _openAmount := 0; END IF; IF (_checkLimit OR _checkLate) THEN -- Handle a Customer that is going under its credit limit IF ((_p.cust_creditlmt >= _openAmount) AND (_lateCount <= 0)) THEN -- Handle the Customer Status IF ( (_p.cust_autoupdatestatus) AND (_p.cust_creditstatus='W') ) THEN UPDATE custinfo SET cust_creditstatus='G' WHERE (cust_id=NEW.aropen_cust_id); END IF; -- Handle the open Sales Orders IF (_p.cust_autoholdorders) THEN UPDATE cohead SET cohead_holdtype='N' FROM coitem WHERE ( (coitem_cohead_id=cohead_id) AND (cohead_holdtype='C') AND (coitem_status='O') AND (cohead_cust_id=_p.cust_id) ); END IF; -- Handle a Customer that is going over its credit limit ELSIF ((_p.cust_creditlmt < _openAmount) OR (_lateCount > 0)) THEN -- Handle the Customer Status IF ( (_p.cust_autoupdatestatus) AND (_p.cust_creditstatus = 'G') ) THEN UPDATE custinfo SET cust_creditstatus='W' WHERE (cust_id=NEW.aropen_cust_id); END IF; -- Handle the open Sales Orders IF (_p.cust_autoholdorders) THEN UPDATE cohead SET cohead_holdtype='C' FROM coitem WHERE ( (coitem_cohead_id=cohead_id) AND (cohead_holdtype='N') AND (coitem_status='O') AND (cohead_cust_id=_p.cust_id) ); END IF; END IF; END IF; RETURN NEW; END; $$; 'DROP FUNCTION public._aropentrigger(); publicadminfalse8399212551691073_bomheadtrigger()FUNCTIONCREATE FUNCTION _bomheadtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _revid INTEGER; _check TEXT; BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainBOMs')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Bills of Material.'; END IF; RETURN NEW; END; $$; (DROP FUNCTION public._bomheadtrigger(); publicadminfalse83992412551691074_bomitemaftertrigger()FUNCTIONrCREATE FUNCTION _bomitemaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN IF ( SELECT fetchMetricBool('ItemChangeLog') ) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment('ChangeLog', 'BMI', NEW.bomitem_id, ('Created BOM Item Sequence ' || NEW.bomitem_seqnumber::TEXT)); ELSIF (TG_OP = 'UPDATE') THEN IF (NEW.bomitem_effective <> OLD.bomitem_effective) THEN PERFORM postComment( 'ChangeLog', 'BMI', NEW.bomitem_id, ( 'Effective Date Changed from ' || formatDate(OLD.bomitem_effective, 'Always') || ' to ' || formatDate(NEW.bomitem_effective, 'Always' ) ) ); END IF; IF (NEW.bomitem_expires <> OLD.bomitem_expires) THEN PERFORM postComment( 'ChangeLog', 'BMI', NEW.bomitem_id, ( 'Expiration Date Changed from ' || formatDate(OLD.bomitem_expires, 'Never') || ' to ' || formatDate(NEW.bomitem_expires, 'Never' ) ) ); END IF; IF (NEW.bomitem_qtyfxd <> OLD.bomitem_qtyfxd) THEN PERFORM postComment( 'ChangeLog', 'BMI', NEW.bomitem_id, ( 'Fixed Qty. Changed from ' || formatQtyPer(OLD.bomitem_qtyfxd) || ' to ' || formatQtyPer(NEW.bomitem_qtyfxd ) ) ); END IF; IF (NEW.bomitem_qtyper <> OLD.bomitem_qtyper) THEN PERFORM postComment( 'ChangeLog', 'BMI', NEW.bomitem_id, ( 'Qty. Per Changed from ' || formatQtyPer(OLD.bomitem_qtyper) || ' to ' || formatQtyPer(NEW.bomitem_qtyper ) ) ); END IF; IF (NEW.bomitem_scrap <> OLD.bomitem_scrap) THEN PERFORM postComment( 'ChangeLog', 'BMI', NEW.bomitem_id, ( 'Scrap % Changed from ' || formatPrcnt(OLD.bomitem_scrap) || ' to ' || formatPrcnt(NEW.bomitem_scrap ) ) ); END IF; IF (NEW.bomitem_issuemethod <> OLD.bomitem_issuemethod) THEN PERFORM postComment( 'ChangeLog', 'BMI', NEW.bomitem_id, ( 'Issue Method Changed from ' || (CASE WHEN(OLD.bomitem_issuemethod='S') THEN 'Push' WHEN(OLD.bomitem_issuemethod='L') THEN 'Pull' WHEN(OLD.bomitem_issuemethod='M') THEN 'Mixed' ELSE OLD.bomitem_issuemethod END) || ' to ' || (CASE WHEN(NEW.bomitem_issuemethod='S') THEN 'Push' WHEN(NEW.bomitem_issuemethod='L') THEN 'Pull' WHEN(NEW.bomitem_issuemethod='M') THEN 'Mixed' ELSE NEW.bomitem_issuemethod END) ) ); END IF; IF (NEW.bomitem_ecn <> OLD.bomitem_ecn) THEN PERFORM postComment( 'ChangeLog', 'BMI', NEW.bomitem_id, ( 'ECN Changed from ' || OLD.bomitem_ecn || ' to ' || NEW.bomitem_ecn ) ); END IF; IF (OLD.bomitem_createwo <> NEW.bomitem_createwo) THEN IF (NEW.bomitem_createwo) THEN PERFORM postComment('ChangeLog', 'BMI', NEW.bomitem_id, 'Create Child W/O activated'); ELSE PERFORM postComment('ChangeLog', 'BMI', NEW.bomitem_id, 'Create Child W/O deactivated'); END IF; END IF; IF (OLD.bomitem_issuewo <> NEW.bomitem_issuewo) THEN IF (NEW.bomitem_issuewo) THEN PERFORM postComment('ChangeLog', 'BMI', NEW.bomitem_id, 'Issue Child W/O activated'); ELSE PERFORM postComment('ChangeLog', 'BMI', NEW.bomitem_id, 'Issue Child W/O deactivated'); END IF; END IF; END IF; END IF; IF (TG_OP = 'DELETE') THEN DELETE FROM comment WHERE ( (comment_source='BMI') AND (comment_source_id=OLD.bomitem_id) ); RETURN OLD; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._bomitemaftertrigger(); publicadminfalse83992512551691075_bomitembeforedeletetrigger()FUNCTIONmCREATE FUNCTION _bomitembeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN DELETE FROM comment WHERE ( (comment_source='BMI') AND (comment_source_id=OLD.bomitem_id) ); RETURN OLD; END; $$; 4DROP FUNCTION public._bomitembeforedeletetrigger(); publicadminfalse83992g12551691076_bomitembeforetrigger()FUNCTIONCREATE FUNCTION _bomitembeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _bomworksetid INTEGER; _bomworkid INTEGER; _seqNumber INTEGER; _parentItem RECORD; BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainBOMs')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Bills of Material.'; END IF; -- Cache Parent Item SELECT * INTO _parentItem FROM item WHERE (item_id=NEW.bomitem_parent_item_id); IF (TG_OP = 'INSERT') THEN -- Make sure that the parent and component are not the same IF (NEW.bomitem_parent_item_id = NEW.bomitem_item_id) THEN RAISE EXCEPTION 'BOM Item Parent and Component Item cannot be the same. [xtuple: createBOMItem, -1]'; END IF; -- Make sure that the parent is not used in the component at some level IF ( SELECT (item_type IN ('M', 'F')) FROM item WHERE (item_id=NEW.bomitem_item_id) ) THEN SELECT indentedWhereUsed(NEW.bomitem_parent_item_id) INTO _bomworksetid; SELECT bomwork_id INTO _bomworkid FROM bomwork WHERE ((bomwork_set_id=_bomworksetid) AND (bomwork_item_id=NEW.bomitem_item_id)) LIMIT 1; IF (FOUND) THEN PERFORM deleteBOMWorkset(_bomworksetid); RAISE EXCEPTION 'BOM Item Parent is used by Component, BOM is recursive. [xtuple: createBOMItem, -2]'; END IF; END IF; PERFORM deleteBOMWorkset(_bomworksetid); -- Set defaults NEW.bomitem_rev_id := COALESCE(NEW.bomitem_rev_id, -1); NEW.bomitem_booitem_seq_id := COALESCE(NEW.bomitem_booitem_seq_id, -1); NEW.bomitem_schedatwooper := COALESCE(NEW.bomitem_schedatwooper, FALSE); IF (NEW.bomitem_seqnumber IS NULL) THEN -- Grab the next Sequence Number, if any SELECT MAX(bomitem_seqnumber) INTO _seqNumber FROM bomitem(NEW.bomitem_parent_item_id,NEW.bomitem_rev_id); IF (_seqNumber IS NOT NULL) THEN NEW.bomitem_seqnumber := (_seqNumber + 10); ELSE NEW.bomitem_seqnumber := 10; END IF; END IF; END IF; -- end Insert specific IF (TG_OP = 'UPDATE') THEN -- Disallow changes that would compromise revision control integrity IF (NEW.bomitem_parent_item_id != OLD.bomitem_parent_item_id) THEN RAISE EXCEPTION 'Parent Item ID may not be changed.'; END IF; IF (NEW.bomitem_item_id != OLD.bomitem_item_id) THEN RAISE EXCEPTION 'Item ID may not be changed.'; END IF; IF ((fetchMetricBool('RevControl')) AND (OLD.bomitem_rev_id > -1)) THEN IF (SELECT (rev_status = 'I') FROM rev WHERE (rev_id=OLD.bomitem_rev_id)) THEN RAISE EXCEPTION 'Bill of material is Inactive and may not be modified'; END IF; END IF; END IF; -- end Update specific -- Check for valid UOM IF (SELECT (count(*) != 1) FROM (SELECT uom_id FROM item JOIN uom ON (item_inv_uom_id=uom_id) WHERE(item_id=NEW.bomitem_item_id) UNION SELECT uom_id FROM item JOIN itemuomconv ON (itemuomconv_item_id=item_id) JOIN uom ON (itemuomconv_to_uom_id=uom_id), itemuom, uomtype WHERE((itemuomconv_from_uom_id=item_inv_uom_id) AND (item_id=NEW.bomitem_item_id) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (uomtype_id=itemuom_uomtype_id) AND (uomtype_name='MaterialIssue')) UNION SELECT uom_id FROM item JOIN itemuomconv ON (itemuomconv_item_id=item_id) JOIN uom ON (itemuomconv_from_uom_id=uom_id), itemuom, uomtype WHERE((itemuomconv_to_uom_id=item_inv_uom_id) AND (item_id=NEW.bomitem_item_id) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (uomtype_id=itemuom_uomtype_id) AND (uomtype_name='MaterialIssue'))) AS data WHERE (uom_id=NEW.bomitem_uom_id)) THEN RAISE EXCEPTION 'Unit of Measure Invalid for Material Issue.'; END IF; -- Disallow configuration parameters if parent is not a job item IF (NEW.bomitem_char_id IS NOT NULL) THEN IF (NOT _parentItem.item_config) THEN RAISE EXCEPTION 'Configuration characteristics may only be defined for Configured Items'; END IF; END IF; -- Kit items must be sold and not kits themselves IF (_parentItem.item_type = 'K') THEN IF (SELECT (COUNT(item_id) = 0) FROM item WHERE ((item_id=NEW.bomitem_item_id) AND (item_sold) AND (item_type != 'K'))) THEN RAISE EXCEPTION 'Bill of Material Items for kits must be sold and not kits themselves'; END IF; END IF; -- Over ride logic to disallow invalid data IF (NEW.bomitem_createwo) THEN IF (SELECT (item_type != 'M') FROM item WHERE (item_id=NEW.bomitem_item_id)) THEN NEW.bomitem_createwo := FALSE; END IF; IF (NEW.bomitem_booitem_seq_id = -1) THEN NEW.bomitem_schedatwooper := FALSE; END IF; END IF; NEW.bomitem_moddate := COALESCE(NEW.bomitem_moddate, CURRENT_DATE); RETURN NEW; END; $$; .DROP FUNCTION public._bomitembeforetrigger(); publicadminfalse39928@12551691078_bomitemsubtrigger()FUNCTIONCREATE FUNCTION _bomitemsubtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainBOMs')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Bills of Material.'; END IF; IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END; $$; +DROP FUNCTION public._bomitemsubtrigger(); publicadminfalse83992p12551691079_cashrcptitemaftertrigger()FUNCTIONCREATE FUNCTION _cashrcptitemaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _total NUMERIC; BEGIN -- Checks -- Total Over Application Warning SELECT (cashrcpt_amount - SUM(COALESCE(cashrcptitem_amount, 0))) INTO _total FROM cashrcptitem JOIN cashrcpt ON (cashrcpt_id=cashrcptitem_cashrcpt_id) WHERE (cashrcptitem_cashrcpt_id=NEW.cashrcptitem_cashrcpt_id) GROUP BY cashrcpt_amount; IF (_total < 0.0) THEN RAISE WARNING 'Warning -- the Cash Receipt has been over applied.'; END IF; RETURN NEW; END; $$; 2DROP FUNCTION public._cashrcptitemaftertrigger(); publicadminfalse83992712551691080_cashrcptitemtrigger()FUNCTIONCREATE FUNCTION _cashrcptitemtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _openAmount NUMERIC; BEGIN -- Checks -- Start with Privileges IF (TG_OP = 'INSERT') THEN SELECT checkPrivilege('MaintainCashReceipts') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to add a new Cash Receipt Application.'; END IF; ELSE SELECT checkPrivilege('MaintainCashReceipts') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to alter a Cash Receipt Application.'; END IF; END IF; -- Over Application SELECT round(currToCurr(aropen_curr_id, cashrcpt_curr_id, aropen_amount - aropen_paid, cashrcpt_distdate) - COALESCE((SELECT SUM(cashrcptitem_amount) FROM cashrcptitem, cashrcpt WHERE ((cashrcpt_id=cashrcptitem_cashrcpt_id) AND (NOT cashrcpt_void) AND (NOT cashrcpt_posted) AND (cashrcpt_id != NEW.cashrcptitem_cashrcpt_id) AND (cashrcptitem_aropen_id=NEW.cashrcptitem_aropen_id))), 0),2) INTO _openAmount FROM aropen, cashrcpt WHERE ( (aropen_id=NEW.cashrcptitem_aropen_id) AND (cashrcpt_id=NEW.cashrcptitem_cashrcpt_id) ); IF (NEW.cashrcptitem_amount > _openAmount) THEN RAISE EXCEPTION 'You may not apply more than the balance of this item.'; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._cashrcptitemtrigger(); publicadminfalse83992812551691081_cashrcptmisctrigger()FUNCTIONCREATE FUNCTION _cashrcptmisctrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; BEGIN -- Checks -- Start with Privileges IF (TG_OP = 'INSERT') THEN SELECT checkPrivilege('MaintainCashReceipts') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to add a new Cash Receipt Misc. Application.'; END IF; ELSE SELECT checkPrivilege('MaintainCashReceipts') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to alter a Cash Receipt Misc. Application.'; END IF; END IF; -- Account is required IF (NEW.cashrcptmisc_accnt_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid GL Account.'; END IF; -- Amount is required IF (COALESCE(NEW.cashrcptmisc_amount, 0) = 0) THEN RAISE EXCEPTION 'You must supply a valid Amount.'; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._cashrcptmisctrigger(); publicadminfalse83992612551691082_cashrcpttrigger()FUNCTION CREATE FUNCTION _cashrcpttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _checkId INTEGER; _currId INTEGER; _bankCurrId INTEGER; _evntType TEXT; _whsId INTEGER; _custNumber TEXT; _currrate NUMERIC; BEGIN -- Checks -- Start with privileges IF (TG_OP = 'INSERT') THEN SELECT checkPrivilege('MaintainCashReceipts') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to add new Cash Receipts.'; END IF; ELSE SELECT checkPrivilege('MaintainCashReceipts') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to alter a Cash Receipt.'; END IF; END IF; -- Currency must be same as Bank Currency IF (TG_OP = 'INSERT') THEN _currId = COALESCE(NEW.cashrcpt_curr_id, basecurrid()); --- clear the number from the issue cache PERFORM clearNumberIssue('CashRcptNumber', NEW.cashrcpt_number); ELSE _currId = NEW.cashrcpt_curr_id; END IF; -- get the base exchange rate for the dist date IF (NEW.cashrcpt_curr_rate IS NULL) THEN SELECT curr_rate INTO _currrate FROM curr_rate WHERE ( (NEW.cashrcpt_curr_id=curr_id) AND ( NEW.cashrcpt_distdate BETWEEN curr_effective AND curr_expires) ); IF (FOUND) THEN NEW.cashrcpt_curr_rate := _currrate; ELSE RAISE EXCEPTION 'Currency exchange rate not found'; END IF; END IF; -- Create CashReceiptPosted Event IF (TG_OP = 'UPDATE') THEN IF (OLD.cashrcpt_posted=FALSE AND NEW.cashrcpt_posted=TRUE) THEN _evntType = 'CashReceiptPosted'; -- Find the warehouse for which to create evntlog entries SELECT usrpref_value INTO _whsId FROM usrpref WHERE usrpref_username = getEffectiveXtUser() AND usrpref_name = 'PreferredWarehouse'; -- Find the Customer Number SELECT cust_number INTO _custNumber FROM custinfo WHERE (cust_id=NEW.cashrcpt_cust_id); INSERT INTO evntlog (evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ord_id, evntlog_warehous_id, evntlog_number) SELECT DISTINCT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, NEW.cashrcpt_id, _whsId, (_custNumber || '-' || NEW.cashrcpt_docnumber || ' ' || currConcat(NEW.cashrcpt_curr_id) || formatMoney(NEW.cashrcpt_amount)) FROM evntnot, evnttype WHERE ((evntnot_evnttype_id=evnttype_id) AND (evnttype_name=_evntType)); END IF; END IF; RETURN NEW; END; $$; )DROP FUNCTION public._cashrcpttrigger(); publicadminfalse39928912551691083_ccardtrigger()FUNCTION(CREATE FUNCTION _ccardtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN New.ccard_lastupdated := current_timestamp; New.ccard_last_updated_by_username := getEffectiveXtUser(); IF (TG_OP = 'UPDATE') THEN INSERT INTO ccardaud VALUES (nextval('ccardaud_ccardaud_id_seq'), NEW.ccard_id, OLD.ccard_seq, NEW.ccard_seq, OLD.ccard_cust_id, NEW.ccard_cust_id, OLD.ccard_active, NEW.ccard_active, OLD.ccard_name, NEW.ccard_name, OLD.ccard_address1, NEW.ccard_address1, OLD.ccard_address2, NEW.ccard_address2, OLD.ccard_city, NEW.ccard_city, OLD.ccard_state, NEW.ccard_state, OLD.ccard_zip, NEW.ccard_zip, OLD.ccard_country, NEW.ccard_country, OLD.ccard_number, NEW.ccard_number, OLD.ccard_debit, NEW.ccard_debit, OLD.ccard_month_expired, NEW.ccard_month_expired, OLD.ccard_year_expired, NEW.ccard_year_expired, OLD.ccard_type, NEW.ccard_type); ELSE -- We are inserting a record, therefore no old values INSERT INTO ccardaud VALUES (nextval('ccardaud_ccardaud_id_seq'), NEW.ccard_id, NULL, NEW.ccard_seq, NULL, NEW.ccard_cust_id, NULL, NEW.ccard_active, NULL, NEW.ccard_name, NULL, NEW.ccard_address1, NULL, NEW.ccard_address2, NULL, NEW.ccard_city, NULL, NEW.ccard_state, NULL, NEW.ccard_zip, NULL, NEW.ccard_country, NULL, NEW.ccard_number, NULL, NEW.ccard_debit, NULL, NEW.ccard_month_expired, NULL, NEW.ccard_year_expired, NULL, NEW.ccard_type); END IF; RETURN NEW; END; $$; &DROP FUNCTION public._ccardtrigger(); publicadminfalse83992;12551691084_charasshistorytrigger()FUNCTIONcCREATE FUNCTION _charasshistorytrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF(TG_OP = 'DELETE') THEN IF (OLD.charass_target_type = 'INCDT') THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_descrip) VALUES(OLD.charass_target_id, ('Characteristic ' || COALESCE((SELECT char_name FROM char WHERE (char_id=OLD.charass_char_id)), '') || ' Deleted: "' || COALESCE(OLD.charass_value,'') || '"') ); END IF; RETURN OLD; ELSIF (NEW.charass_target_type = 'INCDT') THEN IF (TG_OP = 'INSERT') THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_descrip) VALUES(NEW.charass_target_id, ('Characteristic ' || COALESCE((SELECT char_name FROM char WHERE (char_id=NEW.charass_char_id)), '') || ' Added: "' || COALESCE(NEW.charass_value,'') || '"') ); ELSIF (TG_OP = 'UPDATE') THEN IF (COALESCE(NEW.charass_value,'') <> COALESCE(OLD.charass_value,'')) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_descrip) VALUES(NEW.charass_target_id, ('Characteristic ' || COALESCE((SELECT char_name FROM char WHERE (char_id=NEW.charass_char_id)), '') || ' Changed: "' || COALESCE(OLD.charass_value,'') || '" -> "' || COALESCE(NEW.charass_value,'') || '"') ); END IF; END IF; END IF; RETURN NEW; END; $$; /DROP FUNCTION public._charasshistorytrigger(); publicadminfalse83992:12551691085_charasstrigger()FUNCTIONCREATE FUNCTION _charasstrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Privilege Checks IF (NEW.charass_target_type = 'I' AND NOT checkPrivilege('MaintainItemMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Items.'; END IF; IF (NEW.charass_target_type = 'C' AND NOT checkPrivilege('MaintainCustomerMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Customers.'; END IF; -- Data check IF (NEW.charass_char_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Characteristic ID.'; END IF; -- Default Logic IF (NEW.charass_default) THEN UPDATE charass SET charass_default = false WHERE ((charass_target_id=NEW.charass_target_id) AND (charass_target_type=NEW.charass_target_type) AND (charass_char_id=NEW.charass_char_id) AND (charass_id <> NEW.charass_ID)); END IF; -- Incident update IF (NEW.charass_target_type = 'INCDT') THEN UPDATE incdt SET incdt_updated = now() WHERE incdt_id = NEW.charass_target_id; END IF; RETURN NEW; END; $$; (DROP FUNCTION public._charasstrigger(); publicadminfalse39928F12551691086_charbeforetrigger()FUNCTIONCREATE FUNCTION _charbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NOT checkPrivilege('MaintainCharacteristics')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Characteristics.'; END IF; RETURN NEW; END; $$; +DROP FUNCTION public._charbeforetrigger(); publicadminfalse83992<12551691087_charopttrigger()FUNCTIONCREATE FUNCTION _charopttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NOT checkPrivilege('MaintainCharacteristics')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Characteristic options.'; END IF; IF (TG_OP = 'UPDATE') THEN UPDATE charass SET charass_value = NEW.charopt_value WHERE ((charass_char_id=NEW.charopt_char_id) AND (charass_value=OLD.charopt_value)); END IF; IF (TG_OP = 'DELETE') THEN IF (SELECT (count(charass_id) > 0) FROM charass WHERE ((charass_char_id=OLD.charopt_char_id) AND (charass_value=OLD.charopt_value))) THEN RAISE EXCEPTION 'This characteristic option value is in use and can not be deleted.'; END IF; END IF; RETURN NEW; END; $$; (DROP FUNCTION public._charopttrigger(); publicadminfalse83992=12551691088_checkheadbeforetrigger()FUNCTIONCREATE FUNCTION _checkheadbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _amount NUMERIC; _currrate NUMERIC; BEGIN -- get the base exchange rate for the check date IF (TG_OP = 'INSERT' AND NEW.checkhead_curr_rate IS NULL) THEN SELECT curr_rate INTO _currrate FROM curr_rate WHERE ( (NEW.checkhead_curr_id=curr_id) AND ( NEW.checkhead_checkdate BETWEEN curr_effective AND curr_expires) ); IF (FOUND) THEN NEW.checkhead_curr_rate := _currrate; ELSE RAISE EXCEPTION 'Currency exchange rate not found'; END IF; END IF; IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN IF (NOT EXISTS (SELECT checkrecip_id FROM checkrecip WHERE ((checkrecip_type=NEW.checkhead_recip_type) AND (checkrecip_id=NEW.checkhead_recip_id)) )) THEN RAISE EXCEPTION 'Cannot verify recipient for check % (type % id %)', NEW.checkhead_number, NEW.checkhead_recip_type, NEW.checkhead_recip_id; END IF; IF (NEW.checkhead_journalnumber IS NOT NULL AND NOT EXISTS (SELECT jrnluse_number FROM jrnluse WHERE (jrnluse_number=NEW.checkhead_journalnumber)) ) THEN RAISE EXCEPTION 'Journal Number % does not exist and cannot be used for check %.', NEW.checkhead_journalnumber, NEW.checkhead_number; END IF; END IF; RETURN NEW; END; $$; 0DROP FUNCTION public._checkheadbeforetrigger(); publicadminfalse83992A12551691089_cmheadbeforetrigger()FUNCTIONCREATE FUNCTION _cmheadbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _id INTEGER; BEGIN -- Checks -- Start with privileges SELECT checkPrivilege('MaintainCreditMemos') INTO _check; IF ( (TG_OP = 'INSERT') OR (TG_OP = 'DELETE') ) THEN IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to maintain Credit Memos.'; END IF; END IF; IF (TG_OP = 'UPDATE') THEN IF ((OLD.cmhead_printed = NEW.cmhead_printed) AND NOT (_check) ) THEN RAISE EXCEPTION 'You do not have privileges to maintain Credit Memos.'; END IF; END IF; IF (TG_OP = 'DELETE') THEN DELETE FROM cmheadtax WHERE (taxhist_parent_id=OLD.cmhead_id); RETURN OLD; END IF; IF ( (NEW.cmhead_number IS NULL) OR (LENGTH(NEW.cmhead_number) = 0) ) THEN RAISE EXCEPTION 'You must enter a valid Memo # for this Credit Memo.'; END IF; IF (TG_OP = 'INSERT') THEN SELECT cmhead_id INTO _id FROM cmhead WHERE (cmhead_number=NEW.cmhead_number); IF (FOUND) THEN RAISE EXCEPTION 'The Memo # is already in use.'; END IF; IF (fetchMetricText('CMNumberGeneration') IN ('A','O')) THEN --- clear the number from the issue cache PERFORM clearNumberIssue('CmNumber', NEW.cmhead_number); ELSIF (fetchMetricText('CMNumberGeneration') = 'S') THEN --- clear the number from the issue cache PERFORM clearNumberIssue('SoNumber', NEW.cmhead_number); END IF; END IF; IF (NEW.cmhead_cust_id IS NOT NULL) THEN SELECT cust_id INTO _id FROM custinfo WHERE (cust_id=NEW.cmhead_cust_id); IF (NOT FOUND) THEN RAISE EXCEPTION 'You must enter a valid Customer # for this Credit Memo.'; END IF; END IF; IF ( (NEW.cmhead_misc > 0) AND (NEW.cmhead_misc_accnt_id = -1) ) THEN RAISE EXCEPTION 'You may not enter a Misc. Charge without indicating the G/L Sales Account.'; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._cmheadbeforetrigger(); publicadminfalse83992B12551691090_cmheadtrigger()FUNCTION CREATE FUNCTION _cmheadtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN -- If this was created by a return, then reset the return IF (OLD.cmhead_rahead_id IS NOT NULL) THEN UPDATE rahead SET rahead_headcredited=false WHERE (rahead_id=OLD.cmhead_rahead_id); DELETE FROM rahist WHERE ((rahist_rahead_id=OLD.cmhead_rahead_id) AND (rahist_source='CM') AND (rahist_source_id=OLD.cmhead_id)); END IF; RETURN OLD; END IF; -- Insert new row IF (TG_OP = 'INSERT') THEN -- Calculate Freight Tax IF (NEW.cmhead_freight <> 0) THEN PERFORM calculateTaxHist( 'cmheadtax', NEW.cmhead_id, NEW.cmhead_taxzone_id, getFreightTaxtypeId(), NEW.cmhead_docdate, NEW.cmhead_curr_id, NEW.cmhead_freight * -1 ); END IF; END IF; -- Update row IF (TG_OP = 'UPDATE') THEN IF ( (NEW.cmhead_freight <> OLD.cmhead_freight) OR (COALESCE(NEW.cmhead_taxzone_id,-1) <> COALESCE(OLD.cmhead_taxzone_id,-1)) OR (NEW.cmhead_docdate <> OLD.cmhead_docdate) OR (NEW.cmhead_curr_id <> OLD.cmhead_curr_id) ) THEN -- Calculate cmhead Tax PERFORM calculateTaxHist( 'cmheadtax', NEW.cmhead_id, NEW.cmhead_taxzone_id, getFreightTaxtypeId(), NEW.cmhead_docdate, NEW.cmhead_curr_id, NEW.cmhead_freight * -1 ); END IF; IF ( (COALESCE(NEW.cmhead_taxzone_id,-1) <> COALESCE(OLD.cmhead_taxzone_id,-1)) OR (NEW.cmhead_docdate <> OLD.cmhead_docdate) OR (NEW.cmhead_curr_id <> OLD.cmhead_curr_id) ) THEN -- Calculate cmitem Tax IF (COALESCE(NEW.cmhead_taxzone_id,-1) <> COALESCE(OLD.cmhead_taxzone_id,-1)) THEN -- Cmitem trigger will calculate tax UPDATE cmitem SET cmitem_taxtype_id=getItemTaxType(itemsite_item_id,NEW.cmhead_taxzone_id) FROM itemsite WHERE ((itemsite_id=cmitem_itemsite_id) AND (cmitem_cmhead_id=NEW.cmhead_id)); ELSE PERFORM calculateTaxHist( 'cmitemtax', cmitem_id, NEW.cmhead_taxzone_id, cmitem_taxtype_id, NEW.cmhead_docdate, NEW.cmhead_curr_id, (cmitem_qtycredit * cmitem_qty_invuomratio) * (cmitem_unitprice / cmitem_price_invuomratio) * -1) FROM cmitem WHERE (cmitem_cmhead_id = NEW.cmhead_id); END IF; END IF; END IF; RETURN NEW; END; $$; 'DROP FUNCTION public._cmheadtrigger(); publicadminfalse83992C12551691091_cmitembeforetrigger()FUNCTION)CREATE FUNCTION _cmitembeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _id INTEGER; BEGIN -- Checks -- Start with privileges SELECT checkPrivilege('MaintainCreditMemos') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to maintain Credit Memos.'; END IF; IF (TG_OP = 'DELETE') THEN DELETE FROM cmitemtax WHERE (taxhist_parent_id=OLD.cmitem_id); RETURN OLD; END IF; IF (TG_OP = 'INSERT') THEN IF ( (NEW.cmitem_qtycredit IS NULL) OR (NEW.cmitem_qtycredit = 0) ) THEN RAISE EXCEPTION 'Quantity to Credit must be greater than zero.'; END IF; SELECT cmitem_id INTO _id FROM cmitem WHERE ( (cmitem_cmhead_id=NEW.cmitem_cmhead_id) AND (cmitem_linenumber=NEW.cmitem_linenumber) ); IF (FOUND) THEN RAISE EXCEPTION 'The Memo Line Number is already in use.'; END IF; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._cmitembeforetrigger(); publicadminfalse83992D12551691092_cmitemtrigger()FUNCTION CREATE FUNCTION _cmitemtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _ext NUMERIC; _r RECORD; BEGIN IF (TG_OP = 'DELETE') THEN -- If this was created by a return, reset return values IF (OLD.cmitem_raitem_id) IS NOT NULL THEN _ext := ROUND((OLD.cmitem_qtycredit * OLD.cmitem_qty_invuomratio) * (OLD.cmitem_unitprice / OLD.cmitem_price_invuomratio),2); UPDATE raitem SET raitem_status = 'O', raitem_qtycredited = raitem_qtycredited-OLD.cmitem_qtycredit, raitem_amtcredited = raitem_amtcredited-_ext WHERE (raitem_id=OLD.cmitem_raitem_id); END IF; RETURN OLD; END IF; -- Cache Credit Memo Head SELECT * INTO _r FROM cmhead WHERE (cmhead_id=NEW.cmitem_cmhead_id); IF (NOT FOUND) THEN RAISE EXCEPTION 'Credit Memo head not found'; END IF; -- Insert new row IF (TG_OP = 'INSERT') THEN -- Calculate Tax PERFORM calculateTaxHist( 'cmitemtax', NEW.cmitem_id, COALESCE(_r.cmhead_taxzone_id, -1), NEW.cmitem_taxtype_id, COALESCE(_r.cmhead_docdate, CURRENT_DATE), COALESCE(_r.cmhead_curr_id, -1), (NEW.cmitem_qtycredit * NEW.cmitem_qty_invuomratio) * (NEW.cmitem_unitprice / NEW.cmitem_price_invuomratio) * -1); END IF; -- Update row IF (TG_OP = 'UPDATE') THEN -- Calculate Tax IF ( (NEW.cmitem_qtycredit <> OLD.cmitem_qtycredit) OR (NEW.cmitem_qty_invuomratio <> OLD.cmitem_qty_invuomratio) OR (NEW.cmitem_unitprice <> OLD.cmitem_unitprice) OR (NEW.cmitem_price_invuomratio <> OLD.cmitem_price_invuomratio) OR (COALESCE(NEW.cmitem_taxtype_id, -1) <> COALESCE(OLD.cmitem_taxtype_id, -1)) ) THEN PERFORM calculateTaxHist( 'cmitemtax', NEW.cmitem_id, COALESCE(_r.cmhead_taxzone_id, -1), NEW.cmitem_taxtype_id, COALESCE(_r.cmhead_docdate, CURRENT_DATE), COALESCE(_r.cmhead_curr_id, -1), (NEW.cmitem_qtycredit * NEW.cmitem_qty_invuomratio) * (NEW.cmitem_unitprice / NEW.cmitem_price_invuomratio) * -1); END IF; END IF; RETURN NEW; END; $$; 'DROP FUNCTION public._cmitemtrigger(); publicadminfalse83992G12551691093_cntcttrigger()FUNCTION.CREATE FUNCTION _cntcttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN NEW.cntct_name := formatCntctName(NULL, NEW.cntct_first_name, NEW.cntct_middle, NEW.cntct_last_name, NEW.cntct_suffix); NEW.cntct_email := lower(NEW.cntct_email); IF (TG_OP = 'INSERT') THEN --- clear the number from the issue cache PERFORM clearNumberIssue('ContactNumber', NEW.cntct_number); END IF; RETURN NEW; END; $$; &DROP FUNCTION public._cntcttrigger(); publicadminfalse83992I12551691094_cntcttriggerafter()FUNCTIONtCREATE FUNCTION _cntcttriggerafter() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cntctemlid INTEGER; _rows INTEGER; BEGIN IF (TG_OP = 'INSERT') THEN IF(length(coalesce(NEW.cntct_email,'')) > 0) THEN INSERT INTO cntcteml ( cntcteml_cntct_id, cntcteml_primary, cntcteml_email ) VALUES ( NEW.cntct_id, true, NEW.cntct_email ); END IF; PERFORM postComment('ChangeLog', 'T', NEW.cntct_id, ('Created by ' || getEffectiveXtUser())); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.cntct_email != NEW.cntct_email) THEN SELECT cntcteml_id INTO _cntctemlid FROM cntcteml WHERE ((cntcteml_cntct_id=NEW.cntct_id) AND (cntcteml_email=NEW.cntct_email)); GET DIAGNOSTICS _rows = ROW_COUNT; IF (_rows = 0) THEN UPDATE cntcteml SET cntcteml_primary=false WHERE ((cntcteml_cntct_id=NEW.cntct_id) AND (cntcteml_primary=true)); INSERT INTO cntcteml ( cntcteml_cntct_id, cntcteml_primary, cntcteml_email ) VALUES ( NEW.cntct_id, true, NEW.cntct_email ); ELSE UPDATE cntcteml SET cntcteml_primary=false WHERE ((cntcteml_cntct_id=NEW.cntct_id) AND (cntcteml_primary=true)); UPDATE cntcteml SET cntcteml_primary=true WHERE (cntcteml_id=_cntctemlid); END IF; END IF; ELSIF (TG_OP = 'DELETE') THEN DELETE FROM comment WHERE (comment_source_id=OLD.cntct_id AND comment_source = 'T'); DELETE FROM docass WHERE (docass_source_id=OLD.cntct_id AND docass_source_type = 'T') OR (docass_target_id=OLD.cntct_id AND docass_target_type = 'T'); RETURN OLD; END IF; RETURN NEW; END; $$; +DROP FUNCTION public._cntcttriggerafter(); publicadminfalse83992H12551691095_cntcttriggerbeforedelete()FUNCTION$CREATE FUNCTION _cntcttriggerbeforedelete() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN DELETE FROM cntctaddr WHERE cntctaddr_cntct_id=OLD.cntct_id; DELETE FROM cntctdata WHERE cntctdata_cntct_id=OLD.cntct_id; DELETE FROM cntcteml WHERE cntcteml_cntct_id=OLD.cntct_id; DELETE FROM docass WHERE docass_source_id = OLD.cntct_id AND docass_source_type = 'T'; DELETE FROM docass WHERE docass_target_id = OLD.cntct_id AND docass_target_type = 'T'; -- these have denormalized cntct info so it should be ok to update them UPDATE cohead SET cohead_billto_cntct_id=NULL WHERE cohead_billto_cntct_id=OLD.cntct_id; UPDATE cohead SET cohead_shipto_cntct_id=NULL WHERE cohead_shipto_cntct_id=OLD.cntct_id; UPDATE pohead SET pohead_vend_cntct_id=NULL WHERE pohead_vend_cntct_id=OLD.cntct_id; UPDATE pohead SET pohead_shipto_cntct_id=NULL WHERE pohead_shipto_cntct_id=OLD.cntct_id; UPDATE quhead SET quhead_billto_cntct_id=NULL WHERE quhead_billto_cntct_id=OLD.cntct_id; UPDATE quhead SET quhead_shipto_cntct_id=NULL WHERE quhead_shipto_cntct_id=OLD.cntct_id; IF (fetchMetricBool('MultiWhs')) THEN UPDATE tohead SET tohead_destcntct_id=NULL WHERE tohead_destcntct_id=OLD.cntct_id; UPDATE tohead SET tohead_srccntct_id=NULL WHERE tohead_srccntct_id=OLD.cntct_id; END IF; END IF; RETURN OLD; END; $$; 2DROP FUNCTION public._cntcttriggerbeforedelete(); publicadminfalse83992J12551691096_cntsliptrigger()FUNCTIONuCREATE FUNCTION _cntsliptrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _p RECORD; _comments TEXT; _temp TEXT; BEGIN IF (TG_OP = 'DELETE') THEN SELECT itemsite_loccntrl, itemsite_controlmethod, cntslip_posted, cntslip_lotserial, cntslip_comments, cntslip_number, cntslip_qty INTO _p FROM cntslip, invcnt, itemsite WHERE ( (cntslip_cnttag_id=invcnt_id) AND (invcnt_itemsite_id=itemsite_id) AND (cntslip_id=OLD.cntslip_id) ); IF(_p.cntslip_posted) THEN SELECT ( ' Count Slip #' || _p.cntslip_number || ' deleted ' || formatQty(_p.cntslip_qty) ) INTO _comments; -- Add the Location name if the itemsite is MLC IF (_p.itemsite_loccntrl) THEN SELECT ( ', Location:' || location_name ) INTO _temp FROM location, cntslip WHERE ( (cntslip_location_id=location_id) AND (cntslip_id=OLD.cntslip_id) ); _comments := (_comments || _temp); END IF; -- Add the Lot/Serial if the itemsite is Lot or Serial controlled IF (_p.itemsite_controlmethod = 'L') THEN _comments := (_comments || ( ', Lot #:' || _p.cntslip_lotserial)); ELSIF (_p.itemsite_controlmethod = 'S') THEN _comments := (_comments || ( ', Serial #:' || _p.cntslip_lotserial)); END IF; _comments := (_comments || ' ' || _p.cntslip_comments); UPDATE invcnt SET invcnt_qoh_after = ( COALESCE(invcnt_qoh_after, 0) - cntslip_qty), invcnt_comments = (invcnt_comments || _comments) FROM cntslip WHERE ( (cntslip_cnttag_id=invcnt_id) AND (NOT invcnt_posted) AND (cntslip_id=OLD.cntslip_id) ); END IF; RETURN OLD; END IF; RETURN NEW; END; $$; (DROP FUNCTION public._cntsliptrigger(); publicadminfalse8399212551691097_cobillbeforetrigger()FUNCTION|CREATE FUNCTION _cobillbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN IF (TG_OP = 'DELETE') THEN DELETE FROM cobilltax WHERE (taxhist_parent_id=OLD.cobill_id); RETURN OLD; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._cobillbeforetrigger(); publicadminfalse8399212551691098_cobilltrigger()FUNCTIONCREATE FUNCTION _cobilltrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; -- Cache Billing Head SELECT * INTO _r FROM cobmisc WHERE (cobmisc_id=NEW.cobill_cobmisc_id); IF (NOT FOUND) THEN RAISE EXCEPTION 'Billing head not found'; END IF; -- Insert new row IF (TG_OP = 'INSERT') THEN -- Calculate Tax PERFORM calculateTaxHist( 'cobilltax', NEW.cobill_id, COALESCE(_r.cobmisc_taxzone_id, -1), NEW.cobill_taxtype_id, COALESCE(_r.cobmisc_shipdate, CURRENT_DATE), COALESCE(_r.cobmisc_curr_id, -1), (NEW.cobill_qty * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio) ) FROM coitem WHERE (coitem_id=NEW.cobill_coitem_id); END IF; -- Update row IF (TG_OP = 'UPDATE') THEN -- Calculate Tax IF ( (NEW.cobill_qty <> OLD.cobill_qty) OR (NEW.cobill_taxtype_id <> OLD.cobill_taxtype_id) ) THEN PERFORM calculateTaxHist( 'cobilltax', NEW.cobill_id, COALESCE(_r.cobmisc_taxzone_id, -1), NEW.cobill_taxtype_id, COALESCE(_r.cobmisc_shipdate, CURRENT_DATE), COALESCE(_r.cobmisc_curr_id, -1), (NEW.cobill_qty * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio) ) FROM coitem WHERE (coitem_id=NEW.cobill_coitem_id); END IF; END IF; RETURN NEW; END; $$; 'DROP FUNCTION public._cobilltrigger(); publicadminfalse83992L12551691099_cobmiscbeforetrigger()FUNCTIONCREATE FUNCTION _cobmiscbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN IF (TG_OP = 'DELETE') THEN DELETE FROM cobmisctax WHERE (taxhist_parent_id=OLD.cobmisc_id); RETURN OLD; END IF; RETURN NEW; END; $$; .DROP FUNCTION public._cobmiscbeforetrigger(); publicadminfalse83992M12551691100_cobmisctrigger()FUNCTION CREATE FUNCTION _cobmisctrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN -- Something can go here RETURN OLD; END IF; -- Insert new row IF (TG_OP = 'INSERT') THEN -- Calculate Freight Tax IF (NEW.cobmisc_freight <> 0) THEN PERFORM calculateTaxHist( 'cobmisctax', NEW.cobmisc_id, NEW.cobmisc_taxzone_id, getFreightTaxtypeId(), NEW.cobmisc_invcdate, NEW.cobmisc_curr_id, NEW.cobmisc_freight ); END IF; END IF; -- Update row IF (TG_OP = 'UPDATE') THEN -- Calculate Tax IF (COALESCE(NEW.cobmisc_taxzone_id,-1) <> COALESCE(OLD.cobmisc_taxzone_id,-1)) THEN UPDATE cobill SET cobill_taxtype_id=getItemTaxType(itemsite_item_id,NEW.cobmisc_taxzone_id) FROM coitem JOIN itemsite ON (coitem_itemsite_id=itemsite_id) WHERE ((coitem_id=cobill_coitem_id) AND (cobill_cobmisc_id=NEW.cobmisc_id)); END IF; IF ( (NEW.cobmisc_freight <> OLD.cobmisc_freight) OR (COALESCE(NEW.cobmisc_taxzone_id,-1) <> COALESCE(OLD.cobmisc_taxzone_id,-1)) OR (NEW.cobmisc_invcdate <> OLD.cobmisc_invcdate) OR (NEW.cobmisc_curr_id <> OLD.cobmisc_curr_id) ) THEN PERFORM calculateTaxHist( 'cobmisctax', NEW.cobmisc_id, NEW.cobmisc_taxzone_id, getFreightTaxtypeId(), NEW.cobmisc_invcdate, NEW.cobmisc_curr_id, NEW.cobmisc_freight ); PERFORM calculateTaxHist( 'cobilltax', cobill_id, NEW.cobmisc_taxzone_id, cobill_taxtype_id, NEW.cobmisc_invcdate, NEW.cobmisc_curr_id, (cobill_qty * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio) ) FROM cobill JOIN coitem ON (coitem_id = cobill_coitem_id) WHERE (cobill_cobmisc_id = NEW.cobmisc_id); END IF; END IF; RETURN NEW; END; $$; (DROP FUNCTION public._cobmisctrigger(); publicadminfalse83992P12551691101_commenttrigger()FUNCTIONCREATE FUNCTION _commenttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NEW.comment_cmnttype_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Comment Type ID.'; ELSIF (NEW.comment_source = 'INCDT') THEN UPDATE incdt SET incdt_updated = now() WHERE incdt_id = NEW.comment_source_id; END IF; RETURN NEW; END; $$; (DROP FUNCTION public._commenttrigger(); publicadminfalse83992Q12551691102_companytrigger()FUNCTIONCREATE FUNCTION _companytrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _used BOOLEAN := false; BEGIN IF (NEW.company_external AND NOT OLD.company_external) THEN IF EXISTS(SELECT accnt_id FROM accnt, company, ( SELECT DISTINCT apaccnt_ap_accnt_id AS test_accnt_id FROM apaccnt UNION SELECT DISTINCT apaccnt_discount_accnt_id FROM apaccnt UNION SELECT DISTINCT apaccnt_prepaid_accnt_id FROM apaccnt UNION SELECT DISTINCT apopen_accnt_id FROM apopen UNION SELECT DISTINCT araccnt_ar_accnt_id FROM araccnt UNION SELECT DISTINCT araccnt_deferred_accnt_id FROM araccnt UNION SELECT DISTINCT araccnt_freight_accnt_id FROM araccnt UNION SELECT DISTINCT araccnt_prepaid_accnt_id FROM araccnt UNION SELECT DISTINCT aropen_accnt_id FROM aropen UNION SELECT DISTINCT bankaccnt_accnt_id FROM bankaccnt UNION SELECT DISTINCT bankaccnt_rec_accnt_id FROM bankaccnt UNION SELECT DISTINCT budgitem_accnt_id FROM budgitem UNION SELECT DISTINCT cashrcptmisc_accnt_id FROM cashrcptmisc UNION SELECT DISTINCT cmhead_misc_accnt_id FROM cmhead UNION SELECT DISTINCT cobmisc_misc_accnt_id FROM cobmisc UNION SELECT DISTINCT cohead_misc_accnt_id FROM cohead UNION SELECT DISTINCT coitem_cos_accnt_id FROM coitem UNION SELECT DISTINCT costcat_adjustment_accnt_id FROM costcat UNION SELECT DISTINCT costcat_asset_accnt_id FROM costcat UNION SELECT DISTINCT costcat_freight_accnt_id FROM costcat UNION SELECT DISTINCT costcat_invcost_accnt_id FROM costcat UNION SELECT DISTINCT costcat_laboroverhead_accnt_id FROM costcat UNION SELECT DISTINCT costcat_liability_accnt_id FROM costcat UNION SELECT DISTINCT costcat_matusage_accnt_id FROM costcat UNION SELECT DISTINCT costcat_mfgscrap_accnt_id FROM costcat UNION SELECT DISTINCT costcat_purchprice_accnt_id FROM costcat UNION SELECT DISTINCT costcat_scrap_accnt_id FROM costcat UNION SELECT DISTINCT costcat_shipasset_accnt_id FROM costcat UNION SELECT DISTINCT costcat_toliability_accnt_id FROM costcat UNION SELECT DISTINCT costcat_transform_accnt_id FROM costcat UNION SELECT DISTINCT costcat_wip_accnt_id FROM costcat UNION SELECT DISTINCT costelem_exp_accnt_id FROM costelem UNION SELECT DISTINCT expcat_exp_accnt_id FROM expcat UNION SELECT DISTINCT expcat_freight_accnt_id FROM expcat UNION SELECT DISTINCT expcat_liability_accnt_id FROM expcat UNION SELECT DISTINCT expcat_purchprice_accnt_id FROM expcat UNION SELECT DISTINCT glseries_accnt_id FROM glseries UNION SELECT DISTINCT gltrans_accnt_id FROM gltrans UNION SELECT DISTINCT invchead_misc_accnt_id FROM invchead UNION SELECT DISTINCT quhead_misc_accnt_id FROM quhead UNION SELECT DISTINCT salesaccnt_cor_accnt_id FROM salesaccnt UNION SELECT DISTINCT salesaccnt_cos_accnt_id FROM salesaccnt UNION SELECT DISTINCT salesaccnt_cow_accnt_id FROM salesaccnt UNION SELECT DISTINCT salesaccnt_credit_accnt_id FROM salesaccnt UNION SELECT DISTINCT salesaccnt_returns_accnt_id FROM salesaccnt UNION SELECT DISTINCT salesaccnt_sales_accnt_id FROM salesaccnt UNION SELECT DISTINCT salescat_ar_accnt_id FROM salescat UNION SELECT DISTINCT salescat_prepaid_accnt_id FROM salescat UNION SELECT DISTINCT salescat_sales_accnt_id FROM salescat UNION SELECT DISTINCT stdjrnlitem_accnt_id FROM stdjrnlitem UNION SELECT DISTINCT tax_sales_accnt_id FROM tax UNION SELECT DISTINCT taxauth_accnt_id FROM taxauth UNION SELECT DISTINCT vodist_accnt_id FROM vodist UNION SELECT DISTINCT warehous_default_accnt_id FROM whsinfo ) AS dummy WHERE ((accnt_id=test_accnt_id) AND (accnt_company=company_number) AND (accnt_company=NEW.company_number)) ) THEN RAISE EXCEPTION 'Cannot make Company % External because it is used in the local database.', NEW.company_number; ELSIF (fetchMetricBool('EnableReturnAuth')) THEN IF EXISTS(SELECT accnt_id FROM accnt, company, ( SELECT DISTINCT rahead_misc_accnt_id AS test_accnt_id FROM rahead UNION SELECT DISTINCT raitem_cos_accnt_id FROM raitem ) AS dummy WHERE ((accnt_id=test_accnt_id) AND (accnt_company=company_number) AND (accnt_company=NEW.company_number)) ) THEN RAISE EXCEPTION 'Cannot make Company % External because it is used in the local database.', NEW.company_number; END IF; END IF; END IF; RETURN NEW; END; $$; (DROP FUNCTION public._companytrigger(); publicadminfalse83992R12551761113_contrctaftertrigger()FUNCTIONCREATE FUNCTION _contrctaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN -- synchronize contract effectivity with item source effectivity IF (NEW.contrct_effective <> OLD.contrct_effective) THEN UPDATE itemsrc SET itemsrc_effective=NEW.contrct_effective WHERE itemsrc_contrct_id=NEW.contrct_id; END IF; IF (NEW.contrct_expires <> OLD.contrct_expires) THEN UPDATE itemsrc SET itemsrc_expires=NEW.contrct_expires WHERE itemsrc_contrct_id=NEW.contrct_id; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._contrctaftertrigger(); publicadminfalse8399212551691103_crmacctaftertrigger()FUNCTIONQCREATE FUNCTION _crmacctaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _gotpriv BOOLEAN; BEGIN /* update _number and _name separately to propagate just what changed. the priv manipulation allows targeted updates of crmaccount-maintained data (note: grantPriv() == false if the user already had the priv, true if this call granted the priv). */ IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN IF (NEW.crmacct_cust_id IS NOT NULL) THEN _gotpriv := grantPriv(getEffectiveXtUser(), 'MaintainCustomerMasters'); UPDATE custinfo SET cust_number = NEW.crmacct_number WHERE ((cust_id=NEW.crmacct_cust_id) AND (cust_number!=NEW.crmacct_number)); UPDATE custinfo SET cust_name = NEW.crmacct_name WHERE ((cust_id=NEW.crmacct_cust_id) AND (cust_name!=NEW.crmacct_name)); IF (_gotpriv) THEN PERFORM revokePriv(getEffectiveXtUser(), 'MaintainCustomerMasters'); END IF; END IF; IF (NEW.crmacct_emp_id IS NOT NULL) THEN _gotpriv := grantPriv(getEffectiveXtUser(), 'MaintainEmployees'); UPDATE emp SET emp_code = NEW.crmacct_number WHERE ((emp_id=NEW.crmacct_emp_id) AND (emp_code!=NEW.crmacct_number)); UPDATE emp SET emp_name = NEW.crmacct_name WHERE ((emp_id=NEW.crmacct_emp_id) AND (emp_name!=NEW.crmacct_name)); IF (_gotpriv) THEN PERFORM revokePriv(getEffectiveXtUser(), 'MaintainEmployees'); END IF; END IF; IF (NEW.crmacct_prospect_id IS NOT NULL) THEN _gotpriv := grantPriv(getEffectiveXtUser(), 'MaintainProspectMasters'); UPDATE prospect SET prospect_number = NEW.crmacct_number WHERE ((prospect_id=NEW.crmacct_prospect_id) AND (prospect_number!=NEW.crmacct_number)); UPDATE prospect SET prospect_name = NEW.crmacct_name WHERE ((prospect_id=NEW.crmacct_prospect_id) AND (prospect_name!=NEW.crmacct_name)); IF (_gotpriv) THEN PERFORM revokePriv(getEffectiveXtUser(), 'MaintainProspectMasters'); END IF; END IF; IF (NEW.crmacct_salesrep_id IS NOT NULL) THEN _gotpriv := grantPriv(getEffectiveXtUser(), 'MaintainSalesReps'); UPDATE salesrep SET salesrep_number = NEW.crmacct_number WHERE ((salesrep_id=NEW.crmacct_salesrep_id) AND (salesrep_number!=NEW.crmacct_number)); UPDATE salesrep SET salesrep_name = NEW.crmacct_name WHERE ((salesrep_id=NEW.crmacct_salesrep_id) AND (salesrep_name!=NEW.crmacct_name)); IF (_gotpriv) THEN PERFORM revokePriv(getEffectiveXtUser(), 'MaintainSalesReps'); END IF; END IF; IF (NEW.crmacct_taxauth_id IS NOT NULL) THEN _gotpriv := grantPriv(getEffectiveXtUser(), 'MaintainTaxAuthorities'); UPDATE taxauth SET taxauth_code = NEW.crmacct_number WHERE ((taxauth_id=NEW.crmacct_taxauth_id) AND (taxauth_code!=NEW.crmacct_number)); UPDATE taxauth SET taxauth_name = NEW.crmacct_name WHERE ((taxauth_id=NEW.crmacct_taxauth_id) AND (taxauth_name!=NEW.crmacct_name)); IF (_gotpriv) THEN PERFORM revokePriv(getEffectiveXtUser(), 'MaintainTaxAuthorities'); END IF; END IF; IF (NEW.crmacct_vend_id IS NOT NULL) THEN _gotpriv := grantPriv(getEffectiveXtUser(), 'MaintainVendors'); UPDATE vendinfo SET vend_number = NEW.crmacct_number WHERE ((vend_id=NEW.crmacct_vend_id) AND (vend_number!=NEW.crmacct_number)); UPDATE vendinfo SET vend_name = NEW.crmacct_name WHERE ((vend_id=NEW.crmacct_vend_id) AND (vend_name!=NEW.crmacct_name)); IF (_gotpriv) THEN PERFORM revokePriv(getEffectiveXtUser(), 'MaintainVendors'); END IF; END IF; -- Link Primary and Secondary Contacts to this Account if they are not already IF (NEW.crmacct_cntct_id_1 IS NOT NULL) THEN _gotpriv := grantPriv(getEffectiveXtUser(), 'MaintainAllContacts'); UPDATE cntct SET cntct_crmacct_id = NEW.crmacct_id WHERE cntct_id=NEW.crmacct_cntct_id_1; IF (_gotpriv) THEN PERFORM revokePriv(getEffectiveXtUser(), 'MaintainAllContacts'); END IF; END IF; IF (NEW.crmacct_cntct_id_2 IS NOT NULL) THEN _gotpriv := grantPriv(getEffectiveXtUser(), 'MaintainAllContacts'); UPDATE cntct SET cntct_crmacct_id = NEW.crmacct_id WHERE cntct_id=NEW.crmacct_cntct_id_2; IF (_gotpriv) THEN PERFORM revokePriv(getEffectiveXtUser(), 'MaintainAllContacts'); END IF; END IF; -- cannot have fkey references to system catalogs so enforce them here IF (NEW.crmacct_usr_username IS NOT NULL) THEN IF (NOT EXISTS(SELECT usr_username FROM usr WHERE usr_username=NEW.crmacct_usr_username)) THEN RAISE EXCEPTION 'User % does not exist so this CRM Account Number is invalid.', NEW.crmacct_usr_username; END IF; IF (TG_OP = 'UPDATE') THEN -- reminder: this evaluates to false if either is NULL IF (NEW.crmacct_usr_username != OLD.crmacct_usr_username) THEN RAISE EXCEPTION 'Cannot change the user name for %', OLD.crmacct_usr_username; END IF; END IF; UPDATE usrpref SET usrpref_value = NEW.crmacct_name WHERE ((usrpref_username=NEW.crmacct_usr_username) AND (usrpref_name='propername') AND (usrpref_value!=NEW.crmacct_name)); END IF; ELSIF (TG_OP = 'DELETE') THEN IF (OLD.crmacct_cust_id IS NOT NULL) THEN RAISE EXCEPTION 'Cannot delete CRM Account because it is a Customer [xtuple: deleteCrmAccount, -1]'; END IF; IF (OLD.crmacct_emp_id IS NOT NULL) THEN RAISE EXCEPTION 'Cannot delete CRM Account because it is an Employee [xtuple: deleteCrmAccount, -7]'; END IF; IF (OLD.crmacct_prospect_id IS NOT NULL) THEN RAISE EXCEPTION 'Cannot delete CRM Account because it is a Prospect [xtuple: deleteCrmAccount, -3]'; END IF; DELETE FROM salesrep WHERE salesrep_id = OLD.crmacct_salesrep_id; IF (OLD.crmacct_salesrep_id IS NOT NULL) THEN RAISE EXCEPTION 'Cannot delete CRM Account because it is a Sales Rep [xtuple: deleteCrmAccount, -6]'; END IF; IF (OLD.crmacct_taxauth_id IS NOT NULL) THEN RAISE EXCEPTION 'Cannot delete CRM Account because it is a Tax Authority [xtuple: deleteCrmAccount, -5]'; END IF; IF (EXISTS(SELECT usename FROM pg_user WHERE usename=OLD.crmacct_usr_username)) THEN RAISE EXCEPTION 'Cannot delete CRM Account because it is a User [xtuple: deleteCrmAccount, -8]'; END IF; IF (OLD.crmacct_vend_id IS NOT NULL) THEN RAISE EXCEPTION 'Cannot delete CRM Account because it is a Vendor [xtuple: deleteCrmAccount, -2]'; END IF; DELETE FROM imageass WHERE (imageass_source_id=OLD.crmacct_id) AND (imageass_source='CRMA'); DELETE FROM url WHERE (url_source_id=OLD.crmacct_id) AND (url_source='CRMA'); END IF; SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (_cmnttypeid IS NOT NULL) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'CRMA', NEW.crmacct_id, ('Created by ' || getEffectiveXtUser())); ELSIF (TG_OP = 'DELETE') THEN PERFORM postComment(_cmnttypeid, 'CRMA', OLD.crmacct_id, 'Deleted "' || OLD.crmacct_number || '"'); END IF; END IF; IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._crmacctaftertrigger(); publicadminfalse83992S12551691105_crmacctbeforetrigger()FUNCTIONCREATE FUNCTION _crmacctbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _count INTEGER; BEGIN -- disallow reusing crmacct_numbers IF (TG_OP IN ('INSERT', 'UPDATE')) THEN IF (TG_OP = 'INSERT' AND fetchMetricText('CRMAccountNumberGeneration') IN ('A','O')) THEN PERFORM clearNumberIssue('CRMAccountNumber', NEW.crmacct_number); END IF; NEW.crmacct_usr_username := LOWER(TRIM(NEW.crmacct_usr_username)); IF (NEW.crmacct_usr_username = '') THEN NEW.crmacct_usr_username = NULL; END IF; NEW.crmacct_owner_username := LOWER(TRIM(NEW.crmacct_owner_username)); IF (COALESCE(NEW.crmacct_owner_username, '') = '') THEN NEW.crmacct_owner_username = getEffectiveXtUser(); END IF; IF (NEW.crmacct_competitor_id < 0) THEN NEW.crmacct_competitor_id := NULL; END IF; IF (NEW.crmacct_partner_id < 0) THEN NEW.crmacct_partner_id := NULL; END IF; NEW.crmacct_number = UPPER(NEW.crmacct_number); IF (TG_OP = 'UPDATE') THEN -- TODO: why not ALTER USER OLD.crmacct_number RENAME TO LOWER(NEW.crmacct_number)? IF (NEW.crmacct_number != UPPER(OLD.crmacct_number) AND NEW.crmacct_usr_username IS NOT NULL AND UPPER(NEW.crmacct_usr_username) != NEW.crmacct_number) THEN RAISE EXCEPTION 'The CRM Account % is associated with a system User so the number cannot be changed.', NEW.crmacct_number; END IF; END IF; ELSIF (TG_OP = 'DELETE') THEN UPDATE cntct SET cntct_crmacct_id = NULL WHERE cntct_crmacct_id = OLD.crmacct_id; DELETE FROM docass WHERE docass_source_id = OLD.crmacct_id AND docass_source_type = 'CRMA'; DELETE FROM docass WHERE docass_target_id = OLD.crmacct_id AND docass_target_type = 'CRMA'; GET DIAGNOSTICS _count = ROW_COUNT; RAISE DEBUG 'updated % contacts', _count; RETURN OLD; END IF; RETURN NEW; END; $$; .DROP FUNCTION public._crmacctbeforetrigger(); publicadminfalse3992812551691106_custaftertrigger()FUNCTIONCREATE FUNCTION _custaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _whsId INTEGER := -1; BEGIN IF (TG_OP = 'INSERT') THEN -- http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-UPSERT-EXAMPLE LOOP UPDATE crmacct SET crmacct_cust_id=NEW.cust_id, crmacct_name=NEW.cust_name, crmacct_prospect_id=NULL WHERE crmacct_number=NEW.cust_number; IF (FOUND) THEN DELETE FROM prospect WHERE prospect_id=NEW.cust_id; EXIT; END IF; BEGIN INSERT INTO crmacct(crmacct_number, crmacct_name, crmacct_active, crmacct_type, crmacct_cust_id, crmacct_cntct_id_1, crmacct_cntct_id_2 ) VALUES (NEW.cust_number, NEW.cust_name, NEW.cust_active, 'O', NEW.cust_id, NEW.cust_cntct_id, NEW.cust_corrcntct_id); EXIT; EXCEPTION WHEN unique_violation THEN -- do nothing, and loop to try the UPDATE again END; END LOOP; PERFORM updateCharAssignment('C', NEW.cust_id, char_id, charass_value) FROM custtype JOIN charass ON (custtype_id=charass_target_id AND charass_target_type='CT') JOIN char ON (charass_char_id=char_id) WHERE ((custtype_id=NEW.cust_custtype_id) AND (custtype_char) AND (charass_default)); ELSIF (TG_OP = 'UPDATE') THEN UPDATE crmacct SET crmacct_number = NEW.cust_number WHERE ((crmacct_cust_id=NEW.cust_id) AND (crmacct_number!=NEW.cust_number)); UPDATE crmacct SET crmacct_name = NEW.cust_name WHERE ((crmacct_cust_id=NEW.cust_id) AND (crmacct_name!=NEW.cust_name)); END IF; IF (TG_OP = 'INSERT') THEN -- find the warehouse for which to create evntlog entries SELECT usrpref_value INTO _whsId FROM usrpref WHERE usrpref_username = getEffectiveXtUser() AND usrpref_name = 'PreferredWarehouse'; INSERT INTO evntlog (evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number) SELECT DISTINCT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'C', NEW.cust_id, _whsId, NEW.cust_number FROM evntnot, evnttype WHERE ((evntnot_evnttype_id=evnttype_id) AND (evnttype_name='NewCustomer')); END IF; IF (fetchMetricBool('CustomerChangeLog')) THEN SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (_cmnttypeid IS NOT NULL) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'C', NEW.cust_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.cust_number <> NEW.cust_number) THEN PERFORM postComment( _cmnttypeid, 'C', NEW.cust_id, ('Number changed from "' || OLD.cust_number || '" to "' || NEW.cust_number || '"') ); END IF; IF (OLD.cust_name <> NEW.cust_name) THEN PERFORM postComment( _cmnttypeid, 'C', NEW.cust_id, ('Name changed from "' || OLD.cust_name || '" to "' || NEW.cust_name || '"') ); END IF; IF (OLD.cust_active <> NEW.cust_active) THEN PERFORM postComment(_cmnttypeid, 'C', NEW.cust_id, CASE WHEN NEW.cust_active THEN 'Activated' ELSE 'Deactivated' END); END IF; IF (OLD.cust_discntprcnt <> NEW.cust_discntprcnt) THEN PERFORM postComment(_cmnttypeid, 'C', NEW.cust_id, ('Discount changed from "' || formatprcnt(OLD.cust_discntprcnt) || '%" to "' || formatprcnt(NEW.cust_discntprcnt) || '%"') ); END IF; IF (OLD.cust_creditlmt <> NEW.cust_creditlmt) THEN PERFORM postComment(_cmnttypeid, 'C', NEW.cust_id, ('Credit Limit changed from ' || formatMoney(OLD.cust_creditlmt) || ' to ' || formatMoney(NEW.cust_creditlmt))); END IF; IF (OLD.cust_creditstatus <> NEW.cust_creditstatus) THEN PERFORM postComment(_cmnttypeid, 'C', NEW.cust_id, ('Credit Status Changed from "' || CASE OLD.cust_creditstatus WHEN 'G' THEN 'In Good Standing' WHEN 'W' THEN 'Credit Warning' WHEN 'H' THEN 'Credit Hold' ELSE 'Unknown/Error' END || '" to "' || CASE NEW.cust_creditstatus WHEN 'G' THEN 'In Good Standing' WHEN 'W' THEN 'Credit Warning' WHEN 'H' THEN 'Credit Hold' ELSE 'Unknown/Error' END || '"') ); END IF; IF (OLD.cust_custtype_id <> NEW.cust_custtype_id) THEN PERFORM postComment(_cmnttypeid, 'C', NEW.cust_id, ('Customer type changed from "' || (SELECT custtype_code FROM custtype WHERE custtype_id = OLD.cust_custtype_id) || '" to "' || (SELECT custtype_code FROM custtype WHERE custtype_id = NEW.cust_custtype_id) || '"') ); END IF; IF (COALESCE(OLD.cust_gracedays,-1) <> COALESCE(NEW.cust_gracedays,-1)) THEN PERFORM postComment(_cmnttypeid, 'C', NEW.cust_id, ('Grace Days changed from "' || COALESCE(TEXT(OLD.cust_gracedays), 'Default') || '" to "' || COALESCE(TEXT(NEW.cust_gracedays), 'Default') || '"')); END IF; IF (OLD.cust_terms_id <> NEW.cust_terms_id) THEN PERFORM postComment(_cmnttypeid, 'C', NEW.cust_id, ('Terms changed from "' || (SELECT terms_code FROM terms WHERE terms_id = OLD.cust_terms_id) || '" to "' || (SELECT terms_code FROM terms WHERE terms_id = NEW.cust_terms_id) || '"')); END IF; END IF; END IF; END IF; RETURN NEW; END; $$; *DROP FUNCTION public._custaftertrigger(); publicadminfalse83992X12551691108_custinfoafterdeletetrigger()FUNCTIONGCREATE FUNCTION _custinfoafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- handle transitory state when converting customer to prospect IF EXISTS(SELECT quhead_id FROM quhead WHERE (quhead_cust_id=OLD.cust_id) AND NOT EXISTS(SELECT prospect_id FROM prospect WHERE prospect_id=OLD.cust_id)) THEN RAISE EXCEPTION '[xtuple: deleteCustomer, -8]'; END IF; IF EXISTS(SELECT invchead_id FROM invchead WHERE (invchead_cust_id=OLD.cust_id)) THEN RAISE EXCEPTION '[xtuple: deleteCustomer, -7]'; END IF; -- end TODO IF EXISTS(SELECT checkhead_recip_id FROM checkhead WHERE ((checkhead_recip_id=OLD.cust_id) AND (checkhead_recip_type='C'))) THEN RAISE EXCEPTION '[xtuple: deleteCustomer, -6]'; END IF; DELETE FROM taxreg WHERE ((taxreg_rel_type='C') AND (taxreg_rel_id=OLD.cust_id)); DELETE FROM ipsass WHERE (ipsass_cust_id=OLD.cust_id); DELETE FROM docass WHERE docass_source_id = OLD.cust_id AND docass_source_type = 'C'; DELETE FROM docass WHERE docass_target_id = OLD.cust_id AND docass_target_type = 'C'; IF (fetchMetricBool('CustomerChangeLog')) THEN PERFORM postComment(cmnttype_id, 'C', OLD.cust_id, ('Deleted "' || OLD.cust_number || '"')) FROM cmnttype WHERE (cmnttype_name='ChangeLog'); END IF; RETURN OLD; END; $$; 4DROP FUNCTION public._custinfoafterdeletetrigger(); publicadminfalse83992W12551691109_custinfobeforedeletetrigger()FUNCTIONCREATE FUNCTION _custinfobeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF NOT (checkPrivilege('MaintainCustomerMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Customers.'; END IF; UPDATE crmacct SET crmacct_cust_id = NULL WHERE crmacct_cust_id = OLD.cust_id; RETURN OLD; END; $$; 5DROP FUNCTION public._custinfobeforedeletetrigger(); publicadminfalse39928V12551691110_custtrigger()FUNCTIONCREATE FUNCTION _custtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF NOT (checkPrivilege('MaintainCustomerMasters') OR checkPrivilege('PostMiscInvoices')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Customers.'; END IF; IF (NEW.cust_number IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Customer Number.'; END IF; IF (LENGTH(COALESCE(NEW.cust_name,''))=0) THEN RAISE EXCEPTION 'You must supply a valid Customer Name.'; END IF; IF (NEW.cust_custtype_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Customer Type ID.'; END IF; IF (NEW.cust_salesrep_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Sales Rep ID.'; END IF; IF (NEW.cust_terms_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Terms Code ID.'; END IF; IF (TG_OP = 'INSERT' AND fetchMetricText('CRMAccountNumberGeneration') IN ('A','O')) THEN PERFORM clearNumberIssue('CRMAccountNumber', NEW.cust_number); END IF; NEW.cust_number := UPPER(NEW.cust_number); RETURN NEW; END; $$; %DROP FUNCTION public._custtrigger(); publicadminfalse8399212551746894_custtypeafterdeletetrigger()FUNCTIONCREATE FUNCTION _custtypeafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (SELECT fetchMetricValue('DefaultCustType') = OLD.custtype_id) THEN RAISE EXCEPTION 'Cannot delete the default Customer Type [xtuple: custtype, -1, %]', OLD.custtype_code; END IF; RETURN OLD; END; $$; 4DROP FUNCTION public._custtypeafterdeletetrigger(); publicadminfalse83992h12551691111_custtypetrigger()FUNCTIONCREATE FUNCTION _custtypetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _code TEXT; BEGIN -- Checks IF (TG_OP IN ('INSERT','UPDATE')) THEN IF (LENGTH(COALESCE(NEW.custtype_code, ''))=0) THEN RAISE EXCEPTION 'You must supply a valid Customer Type Code.'; END IF; SELECT custtype_code INTO _code FROM custtype WHERE ( (UPPER(custtype_code)=UPPER(NEW.custtype_code)) AND (custtype_id<>NEW.custtype_id) ); IF (FOUND) THEN RAISE EXCEPTION 'The Customer Type Code entered cannot be used as it is in use.'; END IF; END IF; RETURN NEW; END; $$; )DROP FUNCTION public._custtypetrigger(); publicadminfalse8399212551691112_docasstrigger()FUNCTIONwCREATE FUNCTION _docasstrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NEW.docass_source_type = 'INCDT') THEN UPDATE incdt SET incdt_updated = now() WHERE incdt_id = NEW.docass_source_id; END IF; RETURN NEW; END; $$; 'DROP FUNCTION public._docasstrigger(); publicadminfalse83992b12551691113_empafterdeletetrigger()FUNCTIONCREATE FUNCTION _empafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (fetchMetricBool('EmployeeChangeLog')) THEN PERFORM postComment(cmnttype_id, 'EMP', OLD.emp_id, ('Deleted "' || OLD.emp_code || '"')) FROM cmnttype WHERE (cmnttype_name='ChangeLog'); END IF; RETURN OLD; END; $$; /DROP FUNCTION public._empafterdeletetrigger(); publicadminfalse83992`12551691114_empaftertrigger()FUNCTIONCREATE FUNCTION _empaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _newcrmacctname TEXT; BEGIN IF (TG_OP = 'INSERT') THEN -- http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-UPSERT-EXAMPLE LOOP UPDATE crmacct SET crmacct_emp_id=NEW.emp_id, crmacct_name=NEW.emp_name WHERE crmacct_number=NEW.emp_code; IF (FOUND) THEN EXIT; END IF; BEGIN INSERT INTO crmacct(crmacct_number, crmacct_name, crmacct_active, crmacct_type, crmacct_emp_id, crmacct_cntct_id_1 ) VALUES (NEW.emp_code, NEW.emp_name, NEW.emp_active, 'I', NEW.emp_id, NEW.emp_cntct_id); EXIT; EXCEPTION WHEN unique_violation THEN -- do nothing, and loop to try the UPDATE again END; END LOOP; /* TODO: default characteristic assignments based on empgrp? */ ELSIF (TG_OP = 'UPDATE') THEN UPDATE crmacct SET crmacct_number = NEW.emp_code WHERE ((crmacct_emp_id=NEW.emp_id) AND (crmacct_number!=NEW.emp_code)); UPDATE crmacct SET crmacct_name = NEW.emp_name WHERE ((crmacct_emp_id=NEW.emp_id) AND (crmacct_name!=NEW.emp_name)); END IF; IF (fetchMetricBool('EmployeeChangeLog')) THEN SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (_cmnttypeid IS NOT NULL) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'EMP', NEW.emp_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.emp_number <> NEW.emp_number) THEN PERFORM postComment(_cmnttypeid, 'EMP', NEW.emp_id, ('Number Changed from "' || OLD.emp_number || '" to "' || NEW.emp_number || '"')); END IF; IF (OLD.emp_code <> NEW.emp_code) THEN PERFORM postComment(_cmnttypeid, 'EMP', NEW.emp_id, ('Code Changed from "' || OLD.emp_code || '" to "' || NEW.emp_code || '"')); END IF; IF (OLD.emp_active <> NEW.emp_active) THEN PERFORM postComment(_cmnttypeid, 'EMP', NEW.emp_id, CASE WHEN NEW.emp_active THEN 'Activated' ELSE 'Deactivated' END); END IF; IF (COALESCE(OLD.emp_dept_id, -1) <> COALESCE(NEW.emp_dept_id, -1)) THEN PERFORM postComment(_cmnttypeid, 'EMP', NEW.emp_id, ('Department Changed from "' || COALESCE((SELECT dept_number FROM dept WHERE dept_id=OLD.emp_dept_id), '') || '" to "' || COALESCE((SELECT dept_number FROM dept WHERE dept_id=NEW.emp_dept_id), '') || '"')); END IF; IF (COALESCE(OLD.emp_shift_id, -1) <> COALESCE(NEW.emp_shift_id, -1)) THEN PERFORM postComment(_cmnttypeid, 'EMP', NEW.emp_id, ('Shift Changed from "' || COALESCE((SELECT shift_number FROM shift WHERE shift_id=OLD.emp_shift_id), '') || '" to "' || COALESCE((SELECT shift_number FROM shift WHERE shift_id=NEW.emp_shift_id), '') || '"')); END IF; END IF; END IF; END IF; RETURN NEW; END; $$; )DROP FUNCTION public._empaftertrigger(); publicadminfalse83992a12551691115_empbeforedeletetrigger()FUNCTIONCREATE FUNCTION _empbeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF NOT (checkPrivilege('MaintainEmployees')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Employees.'; END IF; UPDATE crmacct SET crmacct_emp_id = NULL WHERE crmacct_emp_id = OLD.emp_id; UPDATE salesrep SET salesrep_emp_id = NULL WHERE salesrep_emp_id = OLD.emp_id; DELETE FROM docass WHERE docass_source_id = OLD.emp_id AND docass_source_type = 'EMP'; DELETE FROM docass WHERE docass_target_id = OLD.emp_id AND docass_target_type = 'EMP'; RETURN OLD; END; $$; 0DROP FUNCTION public._empbeforedeletetrigger(); publicadminfalse83992_12551691116_empbeforetrigger()FUNCTIONCREATE FUNCTION _empbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF NOT (checkPrivilege('MaintainEmployees')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Employees.'; END IF; IF (NEW.emp_code IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Employee Code.'; END IF; IF (NEW.emp_number IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Employee Number.'; END IF; IF (NEW.emp_id = NEW.emp_mgr_emp_id) THEN RAISE EXCEPTION 'An Employee may not be his or her own Manager.'; END IF; -- ERROR: cannot use column references in default expression IF (NEW.emp_name IS NULL) THEN NEW.emp_name = COALESCE(formatCntctName(NEW.emp_cntct_id), NEW.emp_number); END IF; IF (TG_OP = 'INSERT' AND fetchMetricText('CRMAccountNumberGeneration') IN ('A','O')) THEN PERFORM clearNumberIssue('CRMAccountNumber', NEW.emp_number); END IF; NEW.emp_code := UPPER(NEW.emp_code); -- deprecated column emp_username IF (TG_OP = 'UPDATE' AND LOWER(NEW.emp_username) != LOWER(NEW.emp_code) AND EXISTS(SELECT 1 FROM crmacct WHERE crmacct_emp_id = NEW.emp_id AND crmacct_usr_username IS NOT NULL)) THEN NEW.emp_username = LOWER(NEW.emp_code); END IF; RETURN NEW; END; $$; *DROP FUNCTION public._empbeforetrigger(); publicadminfalse83992d12551691117_gltransaltertrigger()FUNCTION CREATE FUNCTION _gltransaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _externalCompany BOOLEAN := false; _updated BOOLEAN := false; BEGIN IF(TG_OP='DELETE') THEN RAISE EXCEPTION 'You may not delete G/L Transactions once they have been created.'; ELSIF (TG_OP = 'UPDATE') THEN SELECT company_external INTO _externalCompany FROM company JOIN accnt ON (company_number=accnt_company) WHERE (accnt_id=NEW.gltrans_accnt_id); IF (_externalCompany) THEN RAISE EXCEPTION 'Transactions are not allowed for G/L Accounts with External Company segments.'; END IF; IF(OLD.gltrans_id != NEW.gltrans_id) THEN _updated := true; ELSIF(OLD.gltrans_date != NEW.gltrans_date) THEN _updated := true; ELSIF(OLD.gltrans_accnt_id != NEW.gltrans_accnt_id) THEN _updated := true; ELSIF(OLD.gltrans_amount != NEW.gltrans_amount) THEN _updated := true; ELSIF(OLD.gltrans_username != NEW.gltrans_username) THEN _updated := true; ELSIF( (OLD.gltrans_sequence IS NULL AND NEW.gltrans_sequence IS NOT NULL) OR (OLD.gltrans_sequence IS NOT NULL AND NEW.gltrans_sequence IS NULL) OR (COALESCE(OLD.gltrans_sequence,0) != COALESCE(NEW.gltrans_sequence,0)) ) THEN _updated := true; ELSIF( (OLD.gltrans_created IS NULL AND NEW.gltrans_created IS NOT NULL) OR (OLD.gltrans_created IS NOT NULL AND NEW.gltrans_created IS NULL) OR (COALESCE(OLD.gltrans_created,now()) != COALESCE(NEW.gltrans_created,now())) ) THEN _updated := true; ELSIF( (OLD.gltrans_source IS NULL AND NEW.gltrans_source IS NOT NULL) OR (OLD.gltrans_source IS NOT NULL AND NEW.gltrans_source IS NULL) OR (COALESCE(OLD.gltrans_source,'') != COALESCE(NEW.gltrans_source,'')) ) THEN _updated := true; ELSIF( (OLD.gltrans_docnumber IS NULL AND NEW.gltrans_docnumber IS NOT NULL) OR (OLD.gltrans_docnumber IS NOT NULL AND NEW.gltrans_docnumber IS NULL) OR (COALESCE(OLD.gltrans_docnumber,'') != COALESCE(NEW.gltrans_docnumber,'')) ) THEN _updated := true; ELSIF( (OLD.gltrans_doctype IS NULL AND NEW.gltrans_doctype IS NOT NULL) OR (OLD.gltrans_doctype IS NOT NULL AND NEW.gltrans_doctype IS NULL) OR (COALESCE(OLD.gltrans_doctype,'') != COALESCE(NEW.gltrans_doctype,'')) ) THEN _updated := true; END IF; IF(_updated) THEN RAISE EXCEPTION 'You may not alter some G/L Transaction fields once they have been created.'; END IF; ELSE RAISE EXCEPTION 'trigger for gltrans table called in unexpected state.'; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._gltransaltertrigger(); publicadminfalse83992c12551691118_gltransinserttrigger()FUNCTIONCREATE FUNCTION _gltransinserttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _reqNotes BOOLEAN; _externalCompany BOOLEAN := false; BEGIN -- Checks -- Start with privileges IF ((NEW.gltrans_doctype='JE') AND (NOT checkPrivilege('PostJournalEntries'))) THEN RAISE EXCEPTION 'You do not have privileges to create a Journal Entry.'; END IF; SELECT company_external INTO _externalCompany FROM company JOIN accnt ON (company_number=accnt_company) WHERE (accnt_id=NEW.gltrans_accnt_id); IF (_externalCompany) THEN RAISE EXCEPTION 'Transactions are not allowed for G/L Accounts with External Company segments.'; END IF; -- RAISE NOTICE '_gltransInsertTrigger(): company_external = %', _externalCompany; SELECT metric_value='t' INTO _reqNotes FROM metric WHERE(metric_name='MandatoryGLEntryNotes'); IF (_reqNotes IS NULL) THEN _reqNotes := false; END IF; IF ((NEW.gltrans_doctype='JE') AND _reqNotes AND (TRIM(BOTH FROM COALESCE(NEW.gltrans_notes,''))='')) THEN RAISE EXCEPTION 'Notes are required for Journal Entries.'; END IF; RETURN NEW; END; $$; .DROP FUNCTION public._gltransinserttrigger(); publicadminfalse83992e12551691119_grpprivtrigger()FUNCTION?CREATE FUNCTION _grpprivtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _returnVal INTEGER; BEGIN -- This looks like a candidate for a foreign key but isn't. -- fkeys don't work if the foreign key value resides in a child of the -- table and not the table itself. IF ((TG_OP = 'UPDATE' OR TG_OP = 'INSERT') AND (NOT EXISTS(SELECT priv_id FROM priv WHERE (priv_id=NEW.grppriv_priv_id)))) THEN RAISE EXCEPTION 'Privilege id % does not exist or is part of a disabled package.', NEW.grppriv_priv_id; RETURN OLD; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; (DROP FUNCTION public._grpprivtrigger(); publicadminfalse8399212551691120_imageasstrigger()FUNCTIONxCREATE FUNCTION _imageasstrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NEW.imageass_source = 'INCDT') THEN UPDATE incdt SET incdt_updated = now() WHERE incdt_id = NEW.imageass_source_id; END IF; RETURN NEW; END; $$; )DROP FUNCTION public._imageasstrigger(); publicadminfalse83992i12551691121_incdtbeforedeletetrigger()FUNCTIONCREATE FUNCTION _incdtbeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _recurid INTEGER; _newparentid INTEGER; BEGIN IF (TG_OP = 'DELETE') THEN SELECT recur_id INTO _recurid FROM recur WHERE ((recur_parent_id=OLD.incdt_id) AND (recur_parent_type='INCDT')); IF (_recurid IS NOT NULL) THEN SELECT MIN(incdt_id) INTO _newparentid FROM incdt WHERE ((incdt_recurring_incdt_id=OLD.inctd_id) AND (incdt_id!=OLD.incdt_id)); -- client is responsible for warning about deleting a recurring incdt IF (_newparentid IS NULL) THEN DELETE FROM recur WHERE recur_id=_recurid; ELSE UPDATE recur SET recur_parent_id=_newparentid WHERE recur_id=_recurid; END IF; END IF; RETURN OLD; END IF; RETURN NEW; END; $$; 2DROP FUNCTION public._incdtbeforedeletetrigger(); publicadminfalse83992f12551691122_incdtbeforetrigger()FUNCTIONCREATE FUNCTION _incdtbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _rec RECORD; _check BOOLEAN; _crmacct INTEGER; BEGIN IF(TG_OP = 'DELETE') THEN _rec := OLD; ELSE _rec := NEW; END IF; -- Set the incident number if blank IF (TG_OP = 'INSERT') THEN IF (NEW.incdt_number IS NULL) THEN SELECT fetchIncidentNumber() INTO NEW.incdt_number; END IF; --- clear the number from the issue cache PERFORM clearNumberIssue('IncidentNumber', NEW.incdt_number); END IF; -- Description is required IF (LENGTH(COALESCE(NEW.incdt_summary,''))=0) THEN RAISE EXCEPTION 'You must supply a valid Incident Description.'; END IF; -- CRM Account is required IF (NEW.incdt_crmacct_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid CRM Account.'; END IF; -- Contact is required IF (NEW.incdt_cntct_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Contact.'; END IF; NEW.incdt_updated := now(); RETURN NEW; END; $$; ,DROP FUNCTION public._incdtbeforetrigger(); publicadminfalse83992q12551691123_incdttrigger()FUNCTIONCREATE FUNCTION _incdttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; _counter INTEGER := 0; _whsId INTEGER := -1; _evntType TEXT; _cmnttypeid INTEGER := -1; _cmntid INTEGER := -1; BEGIN SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='Notes to Comment'); IF NOT FOUND OR _cmnttypeid IS NULL THEN _cmnttypeid := -1; END IF; IF (TG_OP = 'DELETE') THEN -- This should never happen RETURN OLD; ELSIF (TG_OP = 'INSERT') THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_change, incdthist_target_id, incdthist_descrip) VALUES(NEW.incdt_id, 'N', NULL, 'Incident Added'); _evntType = 'NewIncident'; IF (_cmnttypeid <> -1 AND COALESCE(NEW.incdt_descrip, '') <> '') THEN PERFORM postComment(_cmnttypeid, 'INCDT', NEW.incdt_id, NEW.incdt_descrip); END IF; ELSIF (TG_OP = 'UPDATE') THEN _evntType = 'UpdatedIncident'; IF (COALESCE(NEW.incdt_cntct_id,-1) <> COALESCE(OLD.incdt_cntct_id,-1)) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_change, incdthist_target_id, incdthist_descrip) VALUES(NEW.incdt_id, 'C', NEW.incdt_cntct_id, ('Contact Changed: "' || COALESCE((SELECT cntct_first_name || ' ' || cntct_last_name FROM cntct WHERE (cntct_id=OLD.incdt_cntct_id)), '') || '" -> "' || COALESCE((SELECT cntct_first_name || ' ' || cntct_last_name FROM cntct WHERE (cntct_id=NEW.incdt_cntct_id)), '') || '"') ); END IF; IF (COALESCE(NEW.incdt_summary,'') <> COALESCE(OLD.incdt_summary,'')) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_descrip) VALUES(NEW.incdt_id, ('Summary Updated: "' || COALESCE(OLD.incdt_summary, '') || '" -> "' || COALESCE(NEW.incdt_summary, '') || '"') ); END IF; IF (COALESCE(NEW.incdt_descrip,'') <> COALESCE(OLD.incdt_descrip,'')) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_descrip) VALUES(NEW.incdt_id, ('Description Updated: "' || substr(COALESCE(OLD.incdt_descrip, ''), 1, 20) || '..." -> "' || substr(COALESCE(NEW.incdt_descrip, ''), 1, 20) || '..."') ); IF (_cmnttypeid <> -1) THEN -- find an existing comment SELECT comment_id INTO _cmntid FROM comment WHERE comment_source = 'INCDT' AND comment_source_id = NEW.incdt_id AND comment_cmnttype_id = _cmnttypeid; IF FOUND THEN UPDATE comment SET comment_text = NEW.incdt_descrip WHERE comment_id = _cmntid; ELSE PERFORM postComment(_cmnttypeid, 'INCDT', NEW.incdt_id, NEW.incdt_descrip); END IF; END IF; END IF; IF (NEW.incdt_status <> OLD.incdt_status) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_change, incdthist_target_id, incdthist_descrip) VALUES(NEW.incdt_id, 'S', NULL, ('Status Changed: ' || CASE WHEN(OLD.incdt_status='N') THEN 'New' WHEN(OLD.incdt_status='F') THEN 'Feedback' WHEN(OLD.incdt_status='C') THEN 'Confirmed' WHEN(OLD.incdt_status='A') THEN 'Assigned' WHEN(OLD.incdt_status='R') THEN 'Resolved' WHEN(OLD.incdt_status='L') THEN 'Closed' ELSE OLD.incdt_status END || ' -> ' || CASE WHEN(NEW.incdt_status='N') THEN 'New' WHEN(NEW.incdt_status='F') THEN 'Feedback' WHEN(NEW.incdt_status='C') THEN 'Confirmed' WHEN(NEW.incdt_status='A') THEN 'Assigned' WHEN(NEW.incdt_status='R') THEN 'Resolved' WHEN(NEW.incdt_status='L') THEN 'Closed' ELSE NEW.incdt_status END ) ); IF (NEW.incdt_status = 'L') THEN _evntType = 'ClosedIncident'; ELSIF (OLD.incdt_status = 'L') THEN _evntType = 'ReopenedIncident'; END IF; END IF; IF (COALESCE(NEW.incdt_assigned_username,'') <> COALESCE(OLD.incdt_assigned_username,'')) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_change, incdthist_target_id, incdthist_descrip) VALUES(NEW.incdt_id, 'A', NULL, ('Assigned to: "' || COALESCE(OLD.incdt_assigned_username, '') || '" -> "' || COALESCE(NEW.incdt_assigned_username, '') || '"') ); END IF; IF (COALESCE(NEW.incdt_incdtcat_id,-1) <> COALESCE(OLD.incdt_incdtcat_id,-1)) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_change, incdthist_target_id, incdthist_descrip) VALUES(NEW.incdt_id, 'T', NEW.incdt_incdtcat_id, ('Category Changed: ' || COALESCE((SELECT incdtcat_name FROM incdtcat WHERE (incdtcat_id=OLD.incdt_incdtcat_id)), '') || ' -> ' || COALESCE((SELECT incdtcat_name FROM incdtcat WHERE (incdtcat_id=NEW.incdt_incdtcat_id)), '') || '') ); END IF; IF (COALESCE(NEW.incdt_incdtseverity_id,-1) <> COALESCE(OLD.incdt_incdtseverity_id,-1)) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_change, incdthist_target_id, incdthist_descrip) VALUES(NEW.incdt_id, 'V', NEW.incdt_incdtseverity_id, ('Severity Changed: ' || COALESCE((SELECT incdtseverity_name FROM incdtseverity WHERE (incdtseverity_id=OLD.incdt_incdtseverity_id)), '') || ' -> ' || COALESCE((SELECT incdtseverity_name FROM incdtseverity WHERE (incdtseverity_id=NEW.incdt_incdtseverity_id)), '') || '') ); END IF; IF (COALESCE(NEW.incdt_incdtpriority_id,-1) <> COALESCE(OLD.incdt_incdtpriority_id,-1)) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_change, incdthist_target_id, incdthist_descrip) VALUES(NEW.incdt_id, 'P', NEW.incdt_incdtpriority_id, ('Priority Changed: ' || COALESCE((SELECT incdtpriority_name FROM incdtpriority WHERE (incdtpriority_id=OLD.incdt_incdtpriority_id)), '') || ' -> ' || COALESCE((SELECT incdtpriority_name FROM incdtpriority WHERE (incdtpriority_id=NEW.incdt_incdtpriority_id)), '') || '') ); END IF; IF (COALESCE(NEW.incdt_incdtresolution_id,-1) <> COALESCE(OLD.incdt_incdtresolution_id,-1)) THEN INSERT INTO incdthist (incdthist_incdt_id, incdthist_change, incdthist_target_id, incdthist_descrip) VALUES(NEW.incdt_id, 'E', NEW.incdt_incdtresolution_id, ('Resolution Changed: ' || COALESCE((SELECT incdtresolution_name FROM incdtresolution WHERE (incdtresolution_id=OLD.incdt_incdtresolution_id)), '') || ' -> ' || COALESCE((SELECT incdtresolution_name FROM incdtresolution WHERE (incdtresolution_id=NEW.incdt_incdtresolution_id)), '') || '') ); END IF; END IF; -- find the warehouse for which to create evntlog entries SELECT usrpref_value INTO _whsId FROM usrpref WHERE usrpref_username = getEffectiveXtUser() AND usrpref_name = 'PreferredWarehouse'; INSERT INTO evntlog (evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number) SELECT DISTINCT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'IC', NEW.incdt_id, _whsId, NEW.incdt_number FROM evntnot, evnttype WHERE ((evntnot_evnttype_id=evnttype_id) AND (evnttype_name=_evntType)); RETURN NEW; END; $$; &DROP FUNCTION public._incdttrigger(); publicadminfalse83992l12551691125_invcheadaftertrigger()FUNCTIONCREATE FUNCTION _invcheadaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _cohead_id INTEGER; BEGIN -- Create a comment entry when on a Sales Order when an Invoice is Posted for that order -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF (TG_OP = 'UPDATE') THEN IF ((OLD.invchead_posted != NEW.invchead_posted) AND NEW.invchead_posted) THEN SELECT cohead_id INTO _cohead_id FROM cohead WHERE (cohead_number = OLD.invchead_ordernumber); IF (FOUND) THEN PERFORM postComment( _cmnttypeid, 'S', _cohead_id, ('Invoice, ' || NEW.invchead_invcnumber || ', posted for this order') ); END IF; END IF; END IF; END IF; RETURN NEW; END; $$; .DROP FUNCTION public._invcheadaftertrigger(); publicadminfalse83992j12551691126_invcheadbeforetrigger()FUNCTIONCREATE FUNCTION _invcheadbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _recurid INTEGER; _newparentid INTEGER; BEGIN IF (TG_OP = 'UPDATE') THEN IF (OLD.invchead_posted AND ((OLD.invchead_invcnumber != NEW.invchead_invcnumber) OR (OLD.invchead_invcdate != NEW.invchead_invcdate) OR (OLD.invchead_terms_id != NEW.invchead_terms_id) OR (OLD.invchead_salesrep_id != NEW.invchead_salesrep_id) OR (OLD.invchead_commission != NEW.invchead_commission) OR (OLD.invchead_taxzone_id != NEW.invchead_taxzone_id) OR (OLD.invchead_shipchrg_id != NEW.invchead_shipchrg_id) OR (OLD.invchead_prj_id != NEW.invchead_prj_id) OR (OLD.invchead_misc_accnt_id != NEW.invchead_misc_accnt_id) OR (OLD.invchead_misc_amount != NEW.invchead_misc_amount) OR (OLD.invchead_freight != NEW.invchead_freight))) THEN RAISE EXCEPTION 'Edit not allow on Posted Invoice.'; END IF; END IF; IF (TG_OP = 'DELETE') THEN DELETE FROM invcheadtax WHERE (taxhist_parent_id=OLD.invchead_id); SELECT recur_id INTO _recurid FROM recur WHERE ((recur_parent_id=OLD.invchead_id) AND (recur_parent_type='I')); IF (_recurid IS NOT NULL) THEN SELECT invchead_id INTO _newparentid FROM invchead WHERE ((invchead_recurring_invchead_id=OLD.invchead_id) AND (invchead_id!=OLD.invchead_id)) ORDER BY invchead_invcdate LIMIT 1; IF (_newparentid IS NULL) THEN DELETE FROM recur WHERE recur_id=_recurid; ELSE UPDATE recur SET recur_parent_id=_newparentid WHERE recur_id=_recurid; UPDATE invchead SET invchead_recurring_invchead_id=_newparentid WHERE invchead_recurring_invchead_id=OLD.invchead_id AND invchead_id!=OLD.invchead_id; END IF; END IF; RETURN OLD; END IF; RETURN NEW; END; $$; /DROP FUNCTION public._invcheadbeforetrigger(); publicadminfalse83992k12551691127_invcheadtrigger()FUNCTION CREATE FUNCTION _invcheadtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN -- Something can go here RETURN OLD; END IF; -- Insert new row IF (TG_OP = 'INSERT') THEN -- Calculate Freight Tax IF (NEW.invchead_freight <> 0) THEN PERFORM calculateTaxHist( 'invcheadtax', NEW.invchead_id, NEW.invchead_taxzone_id, getFreightTaxtypeId(), NEW.invchead_invcdate, NEW.invchead_curr_id, NEW.invchead_freight ); END IF; --- clear the number from the issue cache PERFORM clearNumberIssue('InvcNumber', NEW.invchead_invcnumber); END IF; -- Update row IF (TG_OP = 'UPDATE') THEN IF ( (NEW.invchead_freight <> OLD.invchead_freight) OR (COALESCE(NEW.invchead_taxzone_id,-1) <> COALESCE(OLD.invchead_taxzone_id,-1)) OR (NEW.invchead_invcdate <> OLD.invchead_invcdate) OR (NEW.invchead_curr_id <> OLD.invchead_curr_id) ) THEN -- Calculate invchead Tax PERFORM calculateTaxHist( 'invcheadtax', NEW.invchead_id, NEW.invchead_taxzone_id, getFreightTaxtypeId(), NEW.invchead_invcdate, NEW.invchead_curr_id, NEW.invchead_freight ); END IF; IF ( (COALESCE(NEW.invchead_taxzone_id,-1) <> COALESCE(OLD.invchead_taxzone_id,-1)) OR (NEW.invchead_invcdate <> OLD.invchead_invcdate) OR (NEW.invchead_curr_id <> OLD.invchead_curr_id) ) THEN -- Calculate invcitem Tax IF (COALESCE(NEW.invchead_taxzone_id,-1) <> COALESCE(OLD.invchead_taxzone_id,-1)) THEN UPDATE invcitem SET invcitem_taxtype_id=getItemTaxType(invcitem_item_id,NEW.invchead_taxzone_id) WHERE (invcitem_invchead_id=NEW.invchead_id); PERFORM calculateTaxHist( 'invcitemtax', invcitem_id, NEW.invchead_taxzone_id, invcitem_taxtype_id, NEW.invchead_invcdate, NEW.invchead_curr_id, (invcitem_billed * invcitem_qty_invuomratio) * (invcitem_price / invcitem_price_invuomratio) ) FROM invcitem WHERE (invcitem_invchead_id = NEW.invchead_id); END IF; END IF; END IF; RETURN NEW; END; $$; )DROP FUNCTION public._invcheadtrigger(); publicadminfalse8399212551691128_invcitembeforetrigger()FUNCTIONCREATE FUNCTION _invcitembeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _itemfractional BOOLEAN; BEGIN IF (TG_OP = 'DELETE') THEN DELETE FROM invcitemtax WHERE (taxhist_parent_id=OLD.invcitem_id); RETURN OLD; END IF; IF (TG_OP IN ('UPDATE','DELETE')) THEN IF (SELECT COUNT(invchead_id) > 0 FROM invchead WHERE ((invchead_id=OLD.invcitem_invchead_id) AND (invchead_posted))) THEN RAISE EXCEPTION 'Edit not allowed on Posted Invoices.'; END IF; END IF; -- If regular Item then enforce item_fractional IF (COALESCE(NEW.invcitem_item_id, -1) <> -1) THEN SELECT itemuomfractionalbyuom(NEW.invcitem_item_id, NEW.invcitem_qty_uom_id) INTO _itemfractional; IF (NOT _itemfractional) THEN IF (TRUNC(NEW.invcitem_ordered) <> NEW.invcitem_ordered) THEN RAISE EXCEPTION 'Item does not support fractional quantities'; END IF; IF (TRUNC(NEW.invcitem_billed) <> NEW.invcitem_billed) THEN RAISE EXCEPTION 'Item does not support fractional quantities'; END IF; END IF; END IF; RETURN NEW; END; $$; /DROP FUNCTION public._invcitembeforetrigger(); publicadminfalse8399212551691129_invcitemtrigger()FUNCTIONDCREATE FUNCTION _invcitemtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; -- Cache Invoice Head SELECT * INTO _r FROM invchead WHERE (invchead_id=NEW.invcitem_invchead_id); IF (NOT FOUND) THEN RAISE EXCEPTION 'Invoice head not found'; END IF; -- Insert new row IF (TG_OP = 'INSERT') THEN -- Calculate Tax PERFORM calculateTaxHist( 'invcitemtax', NEW.invcitem_id, COALESCE(_r.invchead_taxzone_id, -1), NEW.invcitem_taxtype_id, COALESCE(_r.invchead_invcdate, CURRENT_DATE), COALESCE(_r.invchead_curr_id, -1), (NEW.invcitem_billed * NEW.invcitem_qty_invuomratio) * (NEW.invcitem_price / NEW.invcitem_price_invuomratio) ); END IF; -- Update row IF (TG_OP = 'UPDATE') THEN -- Calculate Tax IF ( (NEW.invcitem_billed <> OLD.invcitem_billed) OR (NEW.invcitem_qty_invuomratio <> OLD.invcitem_qty_invuomratio) OR (NEW.invcitem_price <> OLD.invcitem_price) OR (NEW.invcitem_price_invuomratio <> OLD.invcitem_price_invuomratio) OR (COALESCE(NEW.invcitem_taxtype_id, -1) <> COALESCE(OLD.invcitem_taxtype_id, -1)) ) THEN PERFORM calculateTaxHist( 'invcitemtax', NEW.invcitem_id, COALESCE(_r.invchead_taxzone_id, -1), NEW.invcitem_taxtype_id, COALESCE(_r.invchead_invcdate, CURRENT_DATE), COALESCE(_r.invchead_curr_id, -1), (NEW.invcitem_billed * NEW.invcitem_qty_invuomratio) * (NEW.invcitem_price / NEW.invcitem_price_invuomratio) ); END IF; END IF; RETURN NEW; END; $$; )DROP FUNCTION public._invcitemtrigger(); publicadminfalse8399212551691130_ipsassbeforetrigger()FUNCTION<CREATE FUNCTION _ipsassbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Checks IF NOT (checkPrivilege('MaintainPricingSchedules')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Price Schedules.'; END IF; -- Business logic, disallow invalid combinations IF (TG_OP IN ('INSERT','UPDATE')) THEN IF (LENGTH(COALESCE(NEW.ipsass_custtype_pattern,'')) != 0) THEN new.ipsass_cust_id = -1; new.ipsass_custtype_id = -1; new.ipsass_shipto_id = -1; new.ipsass_shipto_pattern = ''; ELSIF (COALESCE(NEW.ipsass_custtype_id,-1) > -1) THEN new.ipsass_cust_id = -1; new.ipsass_shipto_id = -1; new.ipsass_shipto_pattern = ''; new.ipsass_custtype_pattern = ''; ELSIF (LENGTH(COALESCE(NEW.ipsass_shipto_pattern,'')) != 0) THEN new.ipsass_custtype_id = -1; new.ipsass_shipto_id = -1; new.ipsass_custtype_pattern = ''; ELSE new.ipsass_shipto_id = COALESCE(NEW.ipsass_shipto_id,-1); new.ipsass_custtype_id = -1; new.ipsass_shipto_pattern = ''; new.ipsass_custtype_pattern = ''; END IF; RETURN NEW; ELSE RETURN OLD; END IF; END; $$; -DROP FUNCTION public._ipsassbeforetrigger(); publicadminfalse8399212551691131_ipsheadbeforetrigger()FUNCTIONCREATE FUNCTION _ipsheadbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Checks IF NOT (checkPrivilege('MaintainPricingSchedules')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Price Schedules.'; END IF; IF (TG_OP IN ('INSERT','UPDATE')) THEN RETURN NEW; ELSE RETURN OLD; END IF; END; $$; .DROP FUNCTION public._ipsheadbeforetrigger(); publicadminfalse8399212551691132_ipsitemcharbeforetrigger()FUNCTIONCREATE FUNCTION _ipsitemcharbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Checks IF NOT (checkPrivilege('MaintainPricingSchedules')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Price Schedules.'; END IF; IF (TG_OP IN ('INSERT','UPDATE')) THEN IF (SELECT (COUNT(item_id)=0) FROM ipsiteminfo JOIN item ON (item_id=ipsitem_item_id) WHERE ((ipsitem_id=NEW.ipsitemchar_ipsitem_id) AND (item_config))) THEN RAISE EXCEPTION 'Characteristic prices may only be set on configured items.'; ELSIF (SELECT (COUNT(item_id)=0) FROM ipsiteminfo JOIN item ON (item_id=ipsitem_item_id) JOIN charass ON (charass_target_id=item_id AND charass_target_type='I') WHERE ((ipsitem_id=NEW.ipsitemchar_ipsitem_id) AND (charass_char_id=NEW.ipsitemchar_char_id) AND (charass_value=NEW.ipsitemchar_value))) THEN RAISE EXCEPTION 'No characteristic with matching value exists for this item.'; END IF; RETURN NEW; ELSE RETURN OLD; END IF; END; $$; 2DROP FUNCTION public._ipsitemcharbeforetrigger(); publicadminfalse8399212551691133_ipsiteminfobeforetrigger()FUNCTIONiCREATE FUNCTION _ipsiteminfobeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN -- Checks IF NOT (checkPrivilege('MaintainPricingSchedules')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Price Schedules.'; END IF; IF (TG_OP IN ('INSERT','UPDATE')) THEN RETURN NEW; ELSE RETURN OLD; END IF; END; $$; 2DROP FUNCTION public._ipsiteminfobeforetrigger(); publicadminfalse8399212551691134_itemaftertrigger()FUNCTION*CREATE FUNCTION _itemaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainItemMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Items.'; END IF; -- Integrity checks IF (TG_OP = 'UPDATE') THEN IF ((OLD.item_type <> NEW.item_type) AND (NEW.item_type = 'L')) THEN IF (SELECT COUNT(*) != 0 FROM bomitem WHERE (bomitem_item_id = OLD.item_id)) THEN RAISE EXCEPTION 'This item is part of one or more Bills of Materials and cannot be a Planning Item.'; END IF; END IF; IF ((OLD.item_type <> NEW.item_type) AND (NEW.item_type IN ('R','S','T'))) THEN IF (SELECT COUNT(*) != 0 FROM itemsite WHERE ((itemsite_item_id=OLD.item_id) AND (itemsite_qtyonhand + qtyallocated(itemsite_id,startoftime(),endoftime()) + qtyordered(itemsite_id,startoftime(),endoftime()) > 0 ))) THEN RAISE EXCEPTION 'Item type not allowed when there are itemsites with quantities with on hand quantities or pending inventory activity for this item.'; END IF; END IF; -- If type changed remove costs and deactivate item sites IF (NEW.item_type <> OLD.item_type) THEN PERFORM updateCost(itemcost_id, 0) FROM itemcost WHERE (itemcost_item_id=OLD.item_id); UPDATE itemsite SET itemsite_active=false WHERE (itemsite_item_id=OLD.item_id); IF (NEW.item_type = 'R') THEN UPDATE itemsite SET itemsite_controlmethod='N' WHERE (itemsite_item_id=OLD.item_id); END IF; END IF; END IF; IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='ItemChangeLog') ) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'I', NEW.item_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.item_active <> NEW.item_active) THEN IF (NEW.item_active) THEN PERFORM postComment(_cmnttypeid, 'I', NEW.item_id, 'Activated'); ELSE PERFORM postComment(_cmnttypeid, 'I', NEW.item_id, 'Deactivated'); END IF; END IF; IF (OLD.item_descrip1 <> NEW.item_descrip1) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Description 1 Changed from "' || OLD.item_descrip1 || '" to "' || NEW.item_descrip1 || '"' ) ); END IF; IF (OLD.item_descrip2 <> NEW.item_descrip2) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Description 2 Changed from "' || OLD.item_descrip2 || '" to "' || NEW.item_descrip2 || '"' ) ); END IF; IF (OLD.item_inv_uom_id <> NEW.item_inv_uom_id) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Inventory UOM Changed from "' || (SELECT uom_name FROM uom WHERE uom_id=OLD.item_inv_uom_id) || '" (' || CAST(OLD.item_inv_uom_id AS TEXT) || ') to "' || (SELECT uom_name FROM uom WHERE uom_id=NEW.item_inv_uom_id) || '" (' || CAST(NEW.item_inv_uom_id AS TEXT) || ')' ) ); END IF; IF (OLD.item_sold <> NEW.item_sold) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, CASE WHEN (NEW.item_sold) THEN 'Sold Changed from FALSE to TRUE' ELSE 'Sold Changed from TRUE to FALSE' END ); END IF; IF (OLD.item_picklist <> NEW.item_picklist) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, CASE WHEN (NEW.item_picklist) THEN 'Pick List Changed from FALSE to TRUE' ELSE 'Pick List Changed from TRUE to FALSE' END ); END IF; IF (OLD.item_fractional <> NEW.item_fractional) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, CASE WHEN (NEW.item_fractional) THEN 'Fractional Changed from FALSE to TRUE' ELSE 'Fractional Changed from TRUE to FALSE' END ); END IF; IF (OLD.item_exclusive <> NEW.item_exclusive) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, CASE WHEN (NEW.item_exclusive) THEN 'Exclusive Changed from FALSE to TRUE' ELSE 'Exclusive Changed from TRUE to FALSE' END ); END IF; IF (OLD.item_config <> NEW.item_config) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, CASE WHEN (NEW.item_config) THEN 'Configured Changed from FALSE to TRUE' ELSE 'Configured Changed from TRUE to FALSE' END ); END IF; IF (OLD.item_listprice <> NEW.item_listprice) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'List Price Changed from "' || formatSalesPrice(OLD.item_listprice) || '" to "' || formatSalesPrice(NEW.item_listprice) || '"' ) ); END IF; -- Add New stuff IF (OLD.item_type <> NEW.item_type) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Type Changed from "' || OLD.item_type || '" to "' || NEW.item_type || '"' ) ); END IF; IF (OLD.item_price_uom_id <> NEW.item_price_uom_id) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Price UOM Changed from "' || (SELECT uom_name FROM uom WHERE uom_id=OLD.item_price_uom_id) || '" (' || CAST(OLD.item_price_uom_id AS TEXT) || ') to "' || (SELECT uom_name FROM uom WHERE uom_id=NEW.item_price_uom_id) || '" (' || CAST(NEW.item_price_uom_id AS TEXT) || ')' ) ); END IF; IF (OLD.item_classcode_id <> NEW.item_classcode_id) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Class Code Changed from "' || (SELECT classcode_code || '-' || classcode_descrip FROM classcode WHERE classcode_id=OLD.item_classcode_id) || '" (' || CAST(OLD.item_classcode_id AS TEXT) || ') to "' || (SELECT classcode_code || '-' || classcode_descrip FROM classcode WHERE classcode_id=NEW.item_classcode_id) || '" (' || CAST(NEW.item_classcode_id AS TEXT) || ')' ) ); END IF; IF (OLD.item_freightclass_id <> NEW.item_freightclass_id) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Freight Class Changed from "' || (SELECT freightclass_code || '-' || freightclass_descrip FROM freightclass WHERE freightclass_id=OLD.item_freightclass_id) || '" (' || CAST(OLD.item_freightclass_id AS TEXT) || ') to "' || (SELECT freightclass_code || '-' || freightclass_descrip FROM freightclass WHERE freightclass_id=NEW.item_freightclass_id) || '" (' || CAST(NEW.item_freightclass_id AS TEXT) || ')' ) ); END IF; IF (OLD.item_prodcat_id <> NEW.item_prodcat_id) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Product Category Changed from "' || (SELECT prodcat_code || '-' || prodcat_descrip FROM prodcat WHERE prodcat_id=OLD.item_prodcat_id) || '" (' || CAST(OLD.item_prodcat_id AS TEXT) || ') to "' || (SELECT prodcat_code || '-' || prodcat_descrip FROM prodcat WHERE prodcat_id=NEW.item_prodcat_id) || '" (' || CAST(NEW.item_prodcat_id AS TEXT) || ')' ) ); END IF; IF (OLD.item_upccode <> NEW.item_upccode) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'UPC Code Changed from "' || OLD.item_upccode || '" to "' || NEW.item_upccode || '"' ) ); END IF; IF (OLD.item_prodweight <> NEW.item_prodweight) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Product Weight Changed from "' || formatWeight(OLD.item_prodweight) || '" to "' || formatWeight(NEW.item_prodweight) || '"' ) ); END IF; IF (OLD.item_packweight <> NEW.item_packweight) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Packaging Weight Changed from "' || formatWeight(OLD.item_packweight) || '" to "' || formatWeight(NEW.item_packweight) || '"' ) ); END IF; IF (OLD.item_maxcost <> NEW.item_maxcost) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'Maximum Desired Cost Changed from "' || formatCost(OLD.item_maxcost) || '" to "' || formatCost(NEW.item_maxcost) || '"' ) ); END IF; IF (OLD.item_listcost <> NEW.item_listcost) THEN PERFORM postComment( _cmnttypeid, 'I', NEW.item_id, ( 'List Cost Changed from "' || formatCost(OLD.item_listcost) || '" to "' || formatCost(NEW.item_listcost) || '"' ) ); END IF; -- End changes END IF; END IF; END IF; IF (TG_OP = 'DELETE') THEN DELETE FROM imageass WHERE ((imageass_source_id=OLD.item_id) AND (imageass_source='I')); DELETE FROM url WHERE ((url_source_id=OLD.item_id) AND (url_source='I')); DELETE FROM docass WHERE docass_source_id = OLD.item_id AND docass_source_type = 'I'; DELETE FROM docass WHERE docass_target_id = OLD.item_id AND docass_target_type = 'I'; RETURN OLD; END IF; RETURN NEW; END; $$; *DROP FUNCTION public._itemaftertrigger(); publicadminfalse8399212551691136_itemaliastrigger()FUNCTIONCREATE FUNCTION _itemaliastrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainItemMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Item Aliases.'; END IF; RETURN NEW; END; $$; *DROP FUNCTION public._itemaliastrigger(); publicadminfalse3992812551691137_itemcostaftertrigger()FUNCTIONRCREATE FUNCTION _itemcostaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _itemNumber TEXT; _maxCost NUMERIC; _oldStdCost NUMERIC; _oldActCost NUMERIC; _actualCost NUMERIC; _standardCost NUMERIC; BEGIN -- Create Event if Standard or Actual Cost is greater than Max Cost IF NOT EXISTS(SELECT 1 FROM evntnot JOIN evnttype ON (evnttype_id = evntnot_evnttype_id) JOIN usrpref ON (evntnot_username = usrpref_username) WHERE evnttype_name = 'CostExceedsMaxDesired' AND usrpref_name = 'active' AND usrpref_value = 't') THEN RETURN NEW; END IF; SELECT item_number, item_maxcost, actcost(item_id), stdcost(item_id) INTO _itemNumber, _maxCost, _actualCost, _standardCost FROM item WHERE (item_id=NEW.itemcost_item_id); IF (_maxCost > 0.0) THEN -- IF (_standardCost > _maxCost) IF NOT EXISTS(SELECT 1 --COUNT(evntlog_id) FROM evntlog, evnttype WHERE evntlog_evnttype_id = evnttype_id AND evntlog_number LIKE (_itemNumber || ' -Standard- New:' || '%') AND (evntlog_dispatched IS NULL) AND CAST(evntlog_evnttime AS DATE) = current_date ) AND (_standardCost > _maxCost) THEN IF (TG_OP = 'INSERT') THEN _oldStdCost := 0; _oldActCost := 0; ELSE _oldStdCost := OLD.itemcost_stdcost; _oldActCost := OLD.itemcost_stdcost; END IF; INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number, evntlog_newvalue, evntlog_oldvalue ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, '', NEW.itemcost_item_id, itemsite_warehous_id, (_itemNumber || ' -Standard- ' || 'New: ' || formatCost(_standardCost) || ' Max: '|| formatCost(_MaxCost)), NEW.itemcost_stdcost, _oldStdCost FROM evntnot, evnttype, itemsite, usrpref WHERE ( (evntnot_evnttype_id=evnttype_id) AND (itemsite_item_id=NEW.itemcost_item_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (evnttype_name='CostExceedsMaxDesired') AND (itemsite_active) AND (usrpref_username = evntnot_username) AND (usrpref_name = 'active') AND (usrpref_value = 't')); -- LIMIT 1; END IF; IF NOT EXISTS( SELECT 1 FROM evntlog, evnttype WHERE evntlog_evnttype_id = evnttype_id AND evntlog_number LIKE (_itemNumber || ' -Actual- New:' || '%') AND (evntlog_dispatched IS NULL) AND CAST(evntlog_evnttime AS DATE) = current_date ) AND (_actualCost > _maxCost) THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number, evntlog_newvalue, evntlog_oldvalue ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, '', NEW.itemcost_item_id, itemsite_warehous_id, (_itemNumber || ' -Actual- ' || 'New: ' || formatCost(_actualCost) || ' Max: '|| formatCost(_MaxCost)), NEW.itemcost_actcost, _oldActCost FROM evntnot, evnttype, itemsite, usrpref WHERE ( (evntnot_evnttype_id=evnttype_id) AND (itemsite_item_id=NEW.itemcost_item_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (evnttype_name='CostExceedsMaxDesired') AND (itemsite_active) AND (usrpref_username = evntnot_username) AND (usrpref_name = 'active') AND (usrpref_value = 't') ); --LIMIT 1; END IF; END IF; RETURN NEW; END; $$; .DROP FUNCTION public._itemcostaftertrigger(); publicadminfalse8399212551691138_itemcosttrigger()FUNCTIONg CREATE FUNCTION _itemcosttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN --Privilege Checks IF ( (TG_OP = 'INSERT') AND (NOT checkPrivilege('CreateCosts')) AND (NOT checkPrivilege('PostVouchers')) ) THEN RAISE EXCEPTION 'You do not have privileges to enter Item Costs.'; END IF; IF ( (TG_OP = 'UPDATE') AND (NOT checkPrivilege('EnterActualCosts')) AND (NOT checkPrivilege('PostVouchers')) AND (NOT checkPrivilege('UpdateActualCosts')) AND (NOT checkPrivilege('PostActualCosts')) AND (NOT checkPrivilege('PostStandardCosts')) ) THEN RAISE EXCEPTION 'You do not have privileges to update Item Costs.'; END IF; IF ( (TG_OP = 'DELETE') AND (NOT checkPrivilege('DeleteCosts')) ) THEN RAISE EXCEPTION 'You do not have privileges to delete Item Costs.'; END IF; IF (TG_OP = 'UPDATE') THEN IF (NEW.itemcost_actcost <> OLD.itemcost_actcost OR NEW.itemcost_curr_id <> OLD.itemcost_curr_id) THEN INSERT INTO costhist ( costhist_item_id, costhist_costelem_id, costhist_type, costhist_lowlevel, costhist_username, costhist_date, costhist_oldcost, costhist_newcost, costhist_oldcurr_id, costhist_newcurr_id ) VALUES ( NEW.itemcost_item_id, NEW.itemcost_costelem_id, 'A', NEW.itemcost_lowlevel, getEffectiveXtUser(), CURRENT_TIMESTAMP, OLD.itemcost_actcost, NEW.itemcost_actcost, OLD.itemcost_curr_id, NEW.itemcost_curr_id ); END IF; IF (NEW.itemcost_stdcost <> OLD.itemcost_stdcost) THEN INSERT INTO costhist ( costhist_item_id, costhist_costelem_id, costhist_type, costhist_lowlevel, costhist_username, costhist_date, costhist_oldcost, costhist_newcost, costhist_oldcurr_id, costhist_newcurr_id ) VALUES ( NEW.itemcost_item_id, NEW.itemcost_costelem_id, 'S', NEW.itemcost_lowlevel, getEffectiveXtUser(), CURRENT_TIMESTAMP, OLD.itemcost_stdcost, NEW.itemcost_stdcost, baseCurrId(), baseCurrId() ); END IF; RETURN NEW; ELSIF (TG_OP = 'INSERT') THEN INSERT INTO costhist ( costhist_item_id, costhist_costelem_id, costhist_type, costhist_lowlevel, costhist_username, costhist_date, costhist_oldcost, costhist_newcost, costhist_oldcurr_id, costhist_newcurr_id ) VALUES ( NEW.itemcost_item_id, NEW.itemcost_costelem_id, 'N', NEW.itemcost_lowlevel, getEffectiveXtUser(), CURRENT_TIMESTAMP, 0, NEW.itemcost_actcost, baseCurrId(), NEW.itemcost_curr_id ); RETURN NEW; ELSIF (TG_OP = 'DELETE') THEN INSERT INTO costhist ( costhist_item_id, costhist_costelem_id, costhist_type, costhist_lowlevel, costhist_username, costhist_date, costhist_oldcost, costhist_newcost, costhist_oldcurr_id, costhist_newcurr_id ) VALUES ( OLD.itemcost_item_id, OLD.itemcost_costelem_id, 'D', OLD.itemcost_lowlevel, getEffectiveXtUser(), CURRENT_TIMESTAMP, OLD.itemcost_stdcost, 0, OLD.itemcost_curr_id, baseCurrId() ); RETURN OLD; END IF; END; $$; )DROP FUNCTION public._itemcosttrigger(); publicadminfalse3992812551691139_itemsiteaftertrigger()FUNCTION3CREATE FUNCTION _itemsiteaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _state INTEGER; _wasLocationControl BOOLEAN; _isLocationControl BOOLEAN; _wasLotSerial BOOLEAN; _isLotSerial BOOLEAN; _wasPerishable BOOLEAN; _isPerishable BOOLEAN; _qty NUMERIC; _maint BOOLEAN; _cost NUMERIC; _variance NUMERIC; _application TEXT; BEGIN -- Cache Application SELECT fetchMetricText('Application') INTO _application; -- Check if we are doing maintenance IF (TG_OP = 'INSERT') THEN _maint := TRUE; ELSIF (TG_OP = 'UPDATE') THEN IF ((OLD.itemsite_item_id != NEW.itemsite_item_id) OR (OLD.itemsite_warehous_id != NEW.itemsite_warehous_id) OR (OLD.itemsite_reorderlevel != NEW.itemsite_reorderlevel) OR (OLD.itemsite_ordertoqty != NEW.itemsite_ordertoqty) OR (OLD.itemsite_cyclecountfreq != NEW.itemsite_cyclecountfreq) OR (OLD.itemsite_planning_type != NEW.itemsite_planning_type) OR (OLD.itemsite_posupply != NEW.itemsite_posupply) OR (OLD.itemsite_wosupply != NEW.itemsite_wosupply) OR (OLD.itemsite_loccntrl != NEW.itemsite_loccntrl) OR (OLD.itemsite_safetystock != NEW.itemsite_safetystock) OR (OLD.itemsite_minordqty != NEW.itemsite_minordqty) OR (OLD.itemsite_multordqty != NEW.itemsite_multordqty) OR (OLD.itemsite_leadtime != NEW.itemsite_leadtime) OR (OLD.itemsite_abcclass != NEW.itemsite_abcclass) OR (OLD.itemsite_controlmethod != NEW.itemsite_controlmethod) OR (OLD.itemsite_active != NEW.itemsite_active) OR (OLD.itemsite_plancode_id != NEW.itemsite_plancode_id) OR (OLD.itemsite_costcat_id != NEW.itemsite_costcat_id) OR (OLD.itemsite_eventfence != NEW.itemsite_eventfence) OR (OLD.itemsite_sold != NEW.itemsite_sold) OR (OLD.itemsite_stocked != NEW.itemsite_stocked) OR (OLD.itemsite_location_id != NEW.itemsite_location_id) OR (OLD.itemsite_useparams != NEW.itemsite_useparams) OR (OLD.itemsite_useparamsmanual != NEW.itemsite_useparamsmanual) OR (OLD.itemsite_soldranking != NEW.itemsite_soldranking) OR (OLD.itemsite_createpr != NEW.itemsite_createpr) OR (OLD.itemsite_location != NEW.itemsite_location) OR (OLD.itemsite_location_comments != NEW.itemsite_location_comments) OR (OLD.itemsite_notes != NEW.itemsite_notes) OR (OLD.itemsite_perishable != NEW.itemsite_perishable) OR (OLD.itemsite_autoabcclass != NEW.itemsite_autoabcclass) OR (OLD.itemsite_ordergroup != NEW.itemsite_ordergroup) OR (OLD.itemsite_disallowblankwip != NEW.itemsite_disallowblankwip) OR (OLD.itemsite_maxordqty != NEW.itemsite_maxordqty) OR (OLD.itemsite_mps_timefence != NEW.itemsite_mps_timefence) OR (OLD.itemsite_createwo != NEW.itemsite_createwo) OR (OLD.itemsite_warrpurc != NEW.itemsite_warrpurc) OR (OLD.itemsite_costmethod != NEW.itemsite_costmethod) OR (OLD.itemsite_autoreg != NEW.itemsite_autoreg) OR (OLD.itemsite_lsseq_id != NEW.itemsite_lsseq_id) ) THEN IF (OLD.itemsite_item_id != NEW.itemsite_item_id) THEN RAISE EXCEPTION 'The item number on an itemsite may not be changed.'; ELSIF (OLD.itemsite_warehous_id != NEW.itemsite_warehous_id) THEN RAISE EXCEPTION 'The warehouse code on an itemsite may not be changed.'; END IF; _maint := TRUE; END IF; ELSE _maint := FALSE; END IF; IF (_maint) THEN -- Begin Maintenance -- Privilege Checks IF ( NOT checkPrivilege('MaintainItemSites') ) THEN RAISE EXCEPTION 'You do not have privileges to maintain Item Sites.'; END IF; -- Override values to avoid invalid data combinations IF (NOT NEW.itemsite_posupply) THEN UPDATE itemsite SET itemsite_createpr = FALSE WHERE (itemsite_id=NEW.itemsite_id); END IF; IF (NOT NEW.itemsite_wosupply) THEN UPDATE itemsite SET itemsite_createwo = FALSE WHERE (itemsite_id=NEW.itemsite_id); END IF; IF (NEW.itemsite_controlmethod NOT IN ('S','L')) THEN UPDATE itemsite SET itemsite_perishable = FALSE, itemsite_warrpurc = FALSE, itemsite_autoreg = FALSE, itemsite_lsseq_id = NULL WHERE (itemsite_id=NEW.itemsite_id); END IF; IF (NOT NEW.itemsite_loccntrl) THEN UPDATE itemsite SET itemsite_disallowblankwip = FALSE WHERE (itemsite_id=NEW.itemsite_id); END IF; IF (NOT NEW.itemsite_useparams) THEN UPDATE itemsite SET itemsite_reorderlevel = 0, itemsite_ordertoqty = 0, itemsite_minordqty = 0, itemsite_maxordqty = 0, itemsite_multordqty = 0, itemsite_useparamsmanual = FALSE WHERE (itemsite_id = NEW.itemsite_id); END IF; -- Integrity check IF (TG_OP = 'INSERT') THEN -- Handle MLC logic IF ( (NEW.itemsite_loccntrl) AND (NEW.itemsite_warehous_id IS NOT NULL) ) THEN IF (SELECT count(*)=0 FROM location WHERE ((location_warehous_id=NEW.itemsite_warehous_id) AND ( (NOT location_restrict) OR ( (location_restrict) AND (location_id IN ( SELECT locitem_location_id FROM locitem WHERE (locitem_item_id=NEW.itemsite_item_id) ) ) ) ))) THEN RAISE EXCEPTION 'You must first create at least one valid Location for this Item Site before it may be multiply located.'; END IF; END IF; --This could be made a table constraint later, but do not want to create a big problem --for users with problematic legacy data over a relatively trivial problem for now, --so we will just check moving forword. IF (NEW.itemsite_stocked AND NEW.itemsite_reorderlevel<=0) THEN RAISE EXCEPTION 'Stocked items must have postive reorder level specified.'; END IF; END IF; IF (TG_OP = 'UPDATE') THEN --This could be made a table constraint later, but do not want to create a big problem --for users with problematic legacy data over a relatively trivial problem for now, --so we will just check moving forword. IF ((NEW.itemsite_stocked) AND (NEW.itemsite_stocked != OLD.itemsite_stocked) --Avoid checking unless explicitly changed AND (NEW.itemsite_reorderlevel<=0)) THEN RAISE EXCEPTION 'Stocked items must have postive reorder level specified.'; END IF; END IF; IF (TG_OP = 'UPDATE') THEN -- Integrity check IF (NOT OLD.itemsite_loccntrl AND NEW.itemsite_loccntrl) THEN IF (SELECT count(*)=0 FROM location WHERE ((location_warehous_id=NEW.itemsite_warehous_id) AND ( (NOT location_restrict) OR ( (location_restrict) AND (location_id IN ( SELECT locitem_location_id FROM locitem WHERE (locitem_item_id=NEW.itemsite_item_id) ) ) ) ))) THEN RAISE EXCEPTION 'You must first create at least one valid Location for this Item Site before it may be multiply located.'; END IF; END IF; -- Update detail records based on control method changes _wasLocationControl := OLD.itemsite_loccntrl; _isLocationControl := NEW.itemsite_loccntrl; _wasLotSerial := OLD.itemsite_controlmethod IN ('S','L'); _isLotSerial := NEW.itemsite_controlmethod IN ('S','L'); _wasPerishable := OLD.itemsite_perishable; _isPerishable := NEW.itemsite_perishable; _state := 0; IF ( (_wasLocationControl) AND (_isLocationControl) ) THEN _state := 10; ELSIF ( (NOT _wasLocationControl) AND (NOT _isLocationControl) ) THEN _state := 20; ELSIF ( (NOT _wasLocationControl) AND (_isLocationControl) ) THEN _state := 30; ELSIF ( (_wasLocationControl) AND (NOT _isLocationControl) ) THEN _state := 40; END IF; IF ( (_wasLotSerial) AND (_isLotSerial) ) THEN _state := _state + 1; ELSIF ( (NOT _wasLotSerial) AND (NOT _isLotSerial) ) THEN _state := _state + 2; ELSIF ( (NOT _wasLotSerial) AND (_isLotSerial) ) THEN _state := _state + 3; ELSIF ( (_wasLotSerial) AND (NOT _isLotSerial) ) THEN _state := _state + 4; END IF; IF ( (_application = 'Standard') AND (_state IN (41, 43, 14, 34, 24, 42, 44)) ) THEN -- Check for Reservations IF (SELECT COUNT(*) > 0 FROM itemloc JOIN itemlocrsrv ON (itemlocrsrv_itemloc_id=itemloc_id) WHERE (itemloc_itemsite_id=OLD.itemsite_id)) THEN RAISE EXCEPTION 'Sales Order Reservations by Location exist for this Item Site'; END IF; END IF; IF (_state IN (41, 43)) THEN PERFORM consolidateLotSerial(OLD.itemsite_id); ELSIF (_state IN (14, 34)) THEN PERFORM consolidateLocations(OLD.itemsite_id); ELSIF (_state IN (24, 42, 44)) THEN RAISE NOTICE 'Deleting item site detail records,'; SELECT SUM(itemloc_qty) INTO _qty FROM itemloc, location WHERE ((itemloc_location_id=location_id) AND (NOT location_netable) AND (itemloc_itemsite_id=OLD.itemsite_id)); IF (_qty != 0) THEN UPDATE itemsite SET itemsite_qtyonhand = itemsite_qtyonhand + _qty, itemsite_nnqoh = itemsite_nnqoh - _qty WHERE (itemsite_id=OLD.itemsite_id); END IF; DELETE FROM itemloc WHERE (itemloc_itemsite_id=OLD.itemsite_id); END IF; IF (NEW.itemsite_qtyonhand != 0) THEN -- Handle detail creation -- Create itemloc records if they do not exist IF (_state IN (23, 32, 33)) THEN INSERT INTO itemloc ( itemloc_itemsite_id, itemloc_location_id, itemloc_expiration, itemloc_qty ) VALUES ( NEW.itemsite_id, -1, endOfTime(), NEW.itemsite_qtyonhand ); END IF; -- Handle Location distribution IF (_state IN (31, 32, 33, 34)) THEN IF (SELECT (COUNT(*)=1) FROM location WHERE ((location_id=NEW.itemsite_location_id) AND (location_warehous_id=NEW.itemsite_warehous_id) AND ( (NOT location_restrict) OR ( (location_restrict) AND (location_id IN ( SELECT locitem_location_id FROM locitem WHERE (locitem_item_id=NEW.itemsite_item_id) ) ) ) ))) THEN PERFORM initialDistribution(NEW.itemsite_id, NEW.itemsite_location_id); ELSE RAISE EXCEPTION 'A valid default location must be selected to distribute existing inventory to.'; END IF; END IF; -- Handle Lot/Serial distribution IF ( (_state = 13) OR (_state = 23) OR (_state = 33) OR (_state = 43) ) THEN RAISE NOTICE 'You should now use the Reassign Lot/Serial # window to assign Lot/Serial #s.'; END IF; END IF; IF (OLD.itemsite_costmethod='A' AND NEW.itemsite_costmethod='S') THEN -- TODO: Average costing cost method change SELECT stdcost(NEW.itemsite_item_id) * NEW.itemsite_qtyonhand INTO _cost; _variance := _cost - NEW.itemsite_value; NEW.itemsite_value := _cost; IF(_variance <> 0.0) THEN PERFORM insertGLTransaction( 'P/D', '', '', 'Itemsite converted from Average to Standard cost.', costcat_invcost_accnt_id, costcat_asset_accnt_id, NEW.itemsite_id, _variance, CURRENT_DATE ) FROM costcat WHERE(costcat_id=NEW.itemsite_costcat_id); UPDATE itemsite SET itemsite_value = _cost WHERE (itemsite_id = NEW.itemsite_id); END IF; END IF; END IF; -- Handle Perishable IF ( (_application = 'Standard') AND (_wasPerishable) AND (NOT _isPerishable) ) THEN UPDATE itemloc SET itemloc_expiration = endOfTime() WHERE (itemloc_itemsite_id = OLD.itemsite_id); PERFORM consolidateLotSerial(OLD.itemsite_id); END IF; -- If Planning Type changed to None then delete all Planned Orders IF ( (_application = 'Standard') AND (TG_OP = 'UPDATE') ) THEN IF (NEW.itemsite_planning_type = 'N' AND OLD.itemsite_planning_type <> 'N') THEN PERFORM deletePlannedOrder(planord_id, TRUE) FROM planord WHERE (planord_itemsite_id=NEW.itemsite_id); END IF; END IF; END IF; -- End Maintenance RETURN NEW; END; $$; .DROP FUNCTION public._itemsiteaftertrigger(); publicadminfalse8399212551691141_itemsitetrigger()FUNCTIONQCREATE FUNCTION _itemsitetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _r RECORD; BEGIN -- Cache some information SELECT item_type INTO _r FROM item WHERE (item_id=NEW.itemsite_item_id); -- Override values to avoid invalid data combinations IF (_r.item_type IN ('J','R','S')) THEN NEW.itemsite_planning_type := 'N'; END IF; IF (_r.item_type = 'L') THEN NEW.itemsite_planning_type := 'S'; END IF; IF (TG_OP = 'UPDATE') THEN IF ( (NEW.itemsite_qtyonhand <> OLD.itemsite_qtyonhand) ) THEN IF (OLD.itemsite_freeze) THEN NEW.itemsite_qtyonhand := OLD.itemsite_qtyonhand; ELSE NEW.itemsite_datelastused := CURRENT_DATE; END IF; IF ( (NEW.itemsite_qtyonhand < 0) AND (OLD.itemsite_qtyonhand >= 0) AND (NEW.itemsite_eventfence > 0) ) THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'I', NEW.itemsite_id, warehous_id, (item_number || '/' || warehous_code) FROM evntnot, evnttype, item, whsinfo WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=NEW.itemsite_warehous_id) AND (NEW.itemsite_item_id=item_id) AND (NEW.itemsite_warehous_id=warehous_id) AND (evnttype_name='QOHBelowZero') ); END IF; END IF; IF ( (NEW.itemsite_value <> OLD.itemsite_value) AND (OLD.itemsite_freeze) ) THEN NEW.itemsite_value := OLD.itemsite_value; END IF; END IF; IF (NEW.itemsite_qtyonhand < 0 AND NEW.itemsite_costmethod = 'A') THEN RAISE EXCEPTION 'Itemsite (%) is set to use average costing and is not allowed to have a negative quantity on hand.', NEW.itemsite_id; ELSIF (NEW.itemsite_value < 0 AND NEW.itemsite_costmethod = 'A') THEN RAISE EXCEPTION 'This transaction results in a negative itemsite value. Itemsite (%) is set to use average costing and is not allowed to have a negative value.', NEW.itemsite_id; END IF; -- Handle the ChangeLog IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='ItemSiteChangeLog') ) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'IS', NEW.itemsite_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.itemsite_plancode_id <> NEW.itemsite_plancode_id) THEN PERFORM postComment( _cmnttypeid, 'IS', NEW.itemsite_id, ( 'Planner Code Changed from "' || oldplancode.plancode_code || '" to "' || newplancode.plancode_code || '"' ) ) FROM plancode AS oldplancode, plancode AS newplancode WHERE ( (oldplancode.plancode_id=OLD.itemsite_plancode_id) AND (newplancode.plancode_id=NEW.itemsite_plancode_id) ); END IF; IF (NEW.itemsite_reorderlevel <> OLD.itemsite_reorderlevel) THEN PERFORM postComment( _cmnttypeid, 'IS', NEW.itemsite_id, ( 'Reorder Level Changed from ' || formatQty(OLD.itemsite_reorderlevel) || ' to ' || formatQty(NEW.itemsite_reorderlevel ) ) ); END IF; IF (NEW.itemsite_ordertoqty <> OLD.itemsite_ordertoqty) THEN PERFORM postComment( _cmnttypeid, 'IS', NEW.itemsite_id, ( 'Order Up To Changed from ' || formatQty(OLD.itemsite_ordertoqty) || ' to ' || formatQty(NEW.itemsite_ordertoqty ) ) ); END IF; IF (NEW.itemsite_leadtime <> OLD.itemsite_leadtime) THEN PERFORM postComment( _cmnttypeid, 'IS', NEW.itemsite_id, ( 'Itemsite Leadtime Changed from ' || formatQty(OLD.itemsite_leadtime) || ' to ' || formatQty(NEW.itemsite_leadtime ) ) ); END IF; IF (NEW.itemsite_abcclass <> OLD.itemsite_abcclass) THEN PERFORM postComment( _cmnttypeid, 'IS', NEW.itemsite_id, ( 'Itemsite ABC Class Changed from ' || COALESCE(OLD.itemsite_abcclass, 'None') || ' to ' || COALESCE(NEW.itemsite_abcclass,'None') ) ); END IF; IF (NEW.itemsite_controlmethod <> OLD.itemsite_controlmethod) THEN PERFORM postComment( _cmnttypeid, 'IS', NEW.itemsite_id, ( 'Itemsite Control Method Changed from ' || COALESCE(OLD.itemsite_controlmethod,'None') || ' to ' || COALESCE(NEW.itemsite_controlmethod,'None') ) ); END IF; IF (OLD.itemsite_sold <> NEW.itemsite_sold) THEN PERFORM postComment( _cmnttypeid, 'IS', NEW.itemsite_id, CASE WHEN (NEW.itemsite_sold) THEN 'Sold Changed from FALSE to TRUE' ELSE 'Sold Changed from TRUE to FALSE' END ); END IF; IF (OLD.itemsite_active <> NEW.itemsite_active) THEN IF (NEW.itemsite_active) THEN PERFORM postComment(_cmnttypeid, 'IS', NEW.itemsite_id, 'Activated'); ELSE PERFORM postComment(_cmnttypeid, 'IS', NEW.itemsite_id, 'Deactivated'); END IF; END IF; END IF; END IF; END IF; RETURN NEW; END; $$; )DROP FUNCTION public._itemsitetrigger(); publicadminfalse8399212551691142_itemsrcaftertrigger()FUNCTIONCREATE FUNCTION _itemsrcaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainItemSources')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Item Sources.'; END IF; -- Set default to false for other item sources of this item IF (COALESCE(NEW.itemsrc_default, FALSE) = TRUE) THEN UPDATE itemsrc SET itemsrc_default = FALSE WHERE ( (itemsrc_item_id = NEW.itemsrc_item_id) AND (itemsrc_id <> NEW.itemsrc_id) ); END IF; RETURN NEW; END; $$; -DROP FUNCTION public._itemsrcaftertrigger(); publicadminfalse8399212551691143_itemsrcptrigger()FUNCTIONCREATE FUNCTION _itemsrcptrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainItemSources')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Item Sources.'; END IF; -- Set defaults NEW.itemsrcp_curr_id := COALESCE(NEW.itemsrcp_curr_id,basecurrid()); RETURN NEW; END; $$; )DROP FUNCTION public._itemsrcptrigger(); publicadminfalse8399212551691144_itemsrctrigger()FUNCTION1CREATE FUNCTION _itemsrctrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainItemSources')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Item Sources.'; END IF; -- Set defaults NEW.itemsrc_invvendoruomratio := COALESCE(NEW.itemsrc_invvendoruomratio,1); NEW.itemsrc_minordqty := COALESCE(NEW.itemsrc_minordqty,0); NEW.itemsrc_multordqty := COALESCE(NEW.itemsrc_multordqty,0); NEW.itemsrc_active := COALESCE(NEW.itemsrc_active,true); NEW.itemsrc_leadtime := COALESCE(NEW.itemsrc_leadtime,0); NEW.itemsrc_ranking := COALESCE(NEW.itemsrc_ranking,1); RETURN NEW; END; $$; (DROP FUNCTION public._itemsrctrigger(); publicadminfalse39928m12551691145_itemsubtrigger()FUNCTIONCREATE FUNCTION _itemsubtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainItemMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Item Substitutes.'; END IF; RETURN NEW; END; $$; (DROP FUNCTION public._itemsubtrigger(); publicadminfalse83992n12551691146_itemtaxtrigger()FUNCTIONCREATE FUNCTION _itemtaxtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainItemMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Items.'; END IF; RETURN NEW; END; $$; (DROP FUNCTION public._itemtaxtrigger(); publicadminfalse8399212551691147_itemtrigger()FUNCTIONCREATE FUNCTION _itemtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Override values to avoid invalid data combinations IF (NEW.item_type IN ('R','S','O','L','B')) THEN NEW.item_picklist := FALSE; END IF; IF (NEW.item_type IN ('F','S','O','L','B')) THEN NEW.item_picklist := FALSE; NEW.item_sold := FALSE; NEW.item_prodcat_id := -1; NEW.item_exclusive := false; NEW.item_listprice := 0; NEW.item_upccode := ''; NEW.item_prodweight := 0; NEW.item_packweight := 0; END IF; IF (NEW.item_type NOT IN ('M','R')) THEN NEW.item_config := false; END IF; RETURN NEW; END; $$; %DROP FUNCTION public._itemtrigger(); publicadminfalse83992o12551691148_itemuomconvtrigger()FUNCTIONCREATE FUNCTION _itemuomconvtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Privilege Checks IF (NOT checkPrivilege('MaintainItemMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Items.'; END IF; RETURN NEW; END; $$; ,DROP FUNCTION public._itemuomconvtrigger(); publicadminfalse83992s12551691149_locationaftertrigger()FUNCTIONgCREATE FUNCTION _locationaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _itemloc RECORD; BEGIN -- Maintain itemsite_qtyonhand and itemsite_nnqoh when location_netable changes IF (TG_OP = 'UPDATE') THEN IF (OLD.location_netable <> NEW.location_netable) THEN FOR _itemloc IN SELECT * FROM itemloc WHERE (itemloc_location_id=NEW.location_id) LOOP IF (NEW.location_netable) THEN UPDATE itemsite SET itemsite_qtyonhand = itemsite_qtyonhand + _itemloc.itemloc_qty, itemsite_nnqoh = itemsite_nnqoh - _itemloc.itemloc_qty WHERE (itemsite_id=_itemloc.itemloc_itemsite_id); ELSE UPDATE itemsite SET itemsite_qtyonhand = itemsite_qtyonhand - _itemloc.itemloc_qty, itemsite_nnqoh = itemsite_nnqoh + _itemloc.itemloc_qty WHERE (itemsite_id=_itemloc.itemloc_itemsite_id); END IF; END LOOP; END IF; END IF; RETURN NEW; END; $$; .DROP FUNCTION public._locationaftertrigger(); publicadminfalse83992r12551691150_locationtrigger()FUNCTIONCREATE FUNCTION _locationtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _checkId INTEGER; BEGIN -- Checks -- Start with privileges IF (TG_OP = 'INSERT') THEN SELECT checkPrivilege('MaintainLocations') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to add new Locations.'; END IF; ELSE SELECT checkPrivilege('MaintainLocations') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to alter a Location.'; END IF; END IF; -- Code is required IF ( (LENGTH(COALESCE(NEW.location_name,''))=0) AND (LENGTH(COALESCE(NEW.location_aisle,''))=0) AND (LENGTH(COALESCE(NEW.location_rack,''))=0) AND (LENGTH(COALESCE(NEW.location_bin,''))=0) ) THEN RAISE EXCEPTION 'You must supply a valid Location Identifier.'; END IF; -- Site is required IF (NEW.location_warehous_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Site.'; END IF; -- Location Identifier must be unique SELECT location_id INTO _checkId FROM location WHERE ( (UPPER(location_name)=UPPER(NEW.location_name)) AND (UPPER(location_aisle)=UPPER(NEW.location_aisle)) AND (UPPER(location_rack)=UPPER(NEW.location_rack)) AND (UPPER(location_bin)=UPPER(NEW.location_bin)) AND (location_warehous_id=NEW.location_warehous_id) AND (location_id<>NEW.location_id) ); IF (FOUND) THEN RAISE EXCEPTION 'You must supply a unique Location Identifier for this Site.'; END IF; RETURN NEW; END; $$; )DROP FUNCTION public._locationtrigger(); publicadminfalse8399212551691151_metasqlaltertrigger()FUNCTIONCREATE FUNCTION _metasqlaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NOT (isDBA() OR checkPrivilege('MaintainMetaSQL'))) THEN RAISE EXCEPTION '% does not have privileges to maintain MetaSQL statements in %.%', getEffectiveXtUser(), TG_TABLE_SCHEMA, TG_TABLE_NAME; END IF; IF ((TG_OP = 'UPDATE' OR TG_OP = 'DELETE') AND NEW.metasql_grade <= 0 AND NOT isDBA()) THEN RAISE EXCEPTION 'You may not alter grade 0 metasql queries except using the xTuple Updater utility'; END IF; IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._metasqlaltertrigger(); publicadminfalse3992812551691152_metasqltrigger()FUNCTIONNCREATE FUNCTION _metasqltrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN NEW.metasql_lastuser := getEffectiveXtUser(); NEW.metasql_lastupdate := current_date; RETURN NEW; END; $$; (DROP FUNCTION public._metasqltrigger(); publicadminfalse83992t12551691153_opheadaftertrigger()FUNCTIONCREATE FUNCTION _opheadaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN IF (TG_OP = 'DELETE') THEN DELETE FROM docass WHERE docass_source_id = OLD.ophead_id AND docass_source_type = 'OPP'; DELETE FROM docass WHERE docass_target_id = OLD.ophead_id AND docass_target_type = 'OPP'; END IF; -- Comments IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='OpportunityChangeLog') ) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'OPP', NEW.ophead_id, 'Created'); --- clear the number from the issue cache PERFORM clearNumberIssue('OpportunityNumber', NEW.ophead_number); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.ophead_active <> NEW.ophead_active) THEN IF (NEW.ophead_active) THEN PERFORM postComment(_cmnttypeid, 'OPP', NEW.ophead_id, 'Activated'); ELSE PERFORM postComment(_cmnttypeid, 'OPP', NEW.ophead_id, 'Deactivated'); END IF; END IF; IF (OLD.ophead_name <> NEW.ophead_name) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Name Changed from "' || OLD.ophead_name || '" to "' || NEW.ophead_name || '"' ) ); END IF; IF (OLD.ophead_owner_username <> NEW.ophead_owner_username) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Owner Name Changed from "' || OLD.ophead_owner_username || '" to "' || NEW.ophead_owner_username || '"' ) ); END IF; IF (OLD.ophead_probability_prcnt <> NEW.ophead_probability_prcnt) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Probability % Changed from "' || OLD.ophead_probability_prcnt || '" to "' || NEW.ophead_probability_prcnt || '"' ) ); END IF; IF (OLD.ophead_amount <> NEW.ophead_amount) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Amount Changed from "' || OLD.ophead_amount || '" to "' || NEW.ophead_amount || '"' ) ); END IF; IF (OLD.ophead_target_date <> NEW.ophead_target_date) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Target Date Changed from "' || OLD.ophead_target_date || '" to "' || NEW.ophead_target_date || '"' ) ); END IF; IF (OLD.ophead_actual_date <> NEW.ophead_actual_date) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Actual Date Changed from "' || OLD.ophead_actual_date || '" to "' || NEW.ophead_actual_date || '"' ) ); END IF; IF (OLD.ophead_crmacct_id <> NEW.ophead_crmacct_id) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'CRM Account Changed from "' || (SELECT crmacct_name FROM crmacct WHERE crmacct_id=OLD.ophead_crmacct_id) || '" (' || OLD.ophead_crmacct_id || ') to "' || (SELECT crmacct_name FROM crmacct WHERE crmacct_id=NEW.ophead_crmacct_id) || '" (' || NEW.ophead_crmacct_id || ')' ) ); END IF; IF (OLD.ophead_curr_id <> NEW.ophead_curr_id) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Currency Changed from "' || (SELECT curr_name FROM curr_symbol WHERE curr_id=OLD.ophead_curr_id) || '" (' || OLD.ophead_curr_id || ') to "' || (SELECT curr_name FROM curr_symbol WHERE curr_id=NEW.ophead_curr_id) || '" (' || NEW.ophead_curr_id || ')' ) ); END IF; IF (OLD.ophead_opstage_id <> NEW.ophead_opstage_id) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Stage Changed from "' || (SELECT opstage_name FROM opstage WHERE opstage_id=OLD.ophead_opstage_id) || '" (' || OLD.ophead_opstage_id || ') to "' || (SELECT opstage_name FROM opstage WHERE opstage_id=NEW.ophead_opstage_id) || '" (' || NEW.ophead_opstage_id || ')' ) ); END IF; IF (OLD.ophead_opsource_id <> NEW.ophead_opsource_id) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Source Changed from "' || (SELECT opsource_name FROM opsource WHERE opsource_id=OLD.ophead_opsource_id) || '" (' || OLD.ophead_opsource_id || ') to "' || (SELECT opsource_name FROM opsource WHERE opsource_id=NEW.ophead_opsource_id) || '" (' || NEW.ophead_opsource_id || ')' ) ); END IF; IF (OLD.ophead_optype_id <> NEW.ophead_optype_id) THEN PERFORM postComment( _cmnttypeid, 'OPP', NEW.ophead_id, ( 'Type Changed from "' || (SELECT optype_name FROM optype WHERE optype_id=OLD.ophead_optype_id) || '" (' || OLD.ophead_optype_id || ') to "' || (SELECT optype_name FROM optype WHERE optype_id=NEW.ophead_optype_id) || '" (' || NEW.ophead_optype_id || ')' ) ); END IF; END IF; END IF; END IF; RETURN NEW; END; $$; ,DROP FUNCTION public._opheadaftertrigger(); publicadminfalse8399212551691154_opheadbeforetrigger()FUNCTIONCREATE FUNCTION _opheadbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _rec record; _check boolean; _test text; BEGIN IF(TG_OP = 'DELETE') THEN _rec := OLD; ELSE _rec := NEW; END IF; -- Auto inactivate IF (TG_OP = 'UPDATE') THEN IF ( (NEW.ophead_opstage_id != OLD.ophead_opstage_id) AND (SELECT opstage_opinactive FROM opstage WHERE opstage_id=NEW.ophead_opstage_id) ) THEN NEW.ophead_active := FALSE; END IF; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._opheadbeforetrigger(); publicadminfalse3992812551691155_packbeforetrigger()FUNCTIONCREATE FUNCTION _packbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF ((TG_OP = 'INSERT') AND (NEW.pack_head_id) IS NOT NULL)THEN PERFORM postComment(_cmnttypeid, 'S', NEW.pack_head_id, 'Added to Packing List Batch'); END IF; END IF; IF ((TG_OP = 'INSERT') OR (TG_OP = 'UPDATE')) THEN IF (NEW.pack_shiphead_id IS NOT NULL AND NEW.pack_shiphead_id NOT IN (SELECT shiphead_id FROM shiphead WHERE (shiphead_order_id=NEW.pack_head_id) AND (shiphead_order_type=NEW.pack_head_type))) THEN RAISE EXCEPTION 'Shipment does not exist for % id %', NEW.pack_head_type, NEW.pack_head_id; RETURN OLD; END IF; IF (NEW.pack_head_type = 'SO' AND NEW.pack_head_id IN (SELECT cohead_id FROM cohead)) THEN RETURN NEW; ELSEIF (NEW.pack_head_type = 'TO') THEN IF (NOT fetchMetricBool('MultiWhs')) THEN RAISE EXCEPTION 'Transfer Orders are not supported by this version of the application'; ELSEIF (NEW.pack_head_id IN (SELECT tohead_id FROM tohead)) THEN RETURN NEW; END IF; END IF; RAISE EXCEPTION '% with id % does not exist', NEW.pack_head_type, NEW.pack_head_id; RETURN OLD; END IF; RETURN NEW; END; $$; +DROP FUNCTION public._packbeforetrigger(); publicadminfalse8399212551691156_periodaftertrigger()FUNCTIONoCREATE FUNCTION _periodaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _idoffirst INTEGER; _test INTEGER; BEGIN -- This trigger can easily cause an infinite loop -- because of this we have to be very careful to not -- do an update on the period table if no updates -- are absolutely needed so we don't just keep -- trigger ourselves again and again -- Figure out which period is the first one SELECT period_id INTO _idoffirst FROM period ORDER BY period_start LIMIT 1; -- If we didn't find anything there is nothing to do IF( NOT FOUND ) THEN RETURN NEW; END IF; -- do a select to see if there is at least one record that needs to be -- updated. If we do not find any then we can just leave without -- causing a retrigger of ourselves SELECT period_id INTO _test FROM period WHERE((COALESCE(period_initial, true) AND (NOT period_id=_idoffirst)) OR ((NOT COALESCE(period_initial, false)) AND (period_id=_idoffirst))) LIMIT 1; -- Nothing to update - get out of here IF( NOT FOUND ) THEN RETURN NEW; END IF; -- Update all the period records that already have the initial flag -- set and the one that we know should be the first. -- We don't have to be as careful here since we have already ruled -- out if don't need to update already. UPDATE period SET period_initial = (_idoffirst=period_id) WHERE((COALESCE(period_initial, true)) OR (period_id=_idoffirst)); RETURN NEW; END; $$; ,DROP FUNCTION public._periodaftertrigger(); publicadminfalse8399212551691157_pkgcmdaftertrigger()FUNCTION*CREATE FUNCTION _pkgcmdaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; ,DROP FUNCTION public._pkgcmdaftertrigger(); publicadminfalse83992v12551691158_pkgcmdaltertrigger()FUNCTION:CREATE FUNCTION _pkgcmdaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END IF; IF (TG_OP = 'INSERT') THEN RAISE EXCEPTION 'You may not create custom commands in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'UPDATE') THEN RAISE EXCEPTION 'You may not alter custom commands in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'DELETE') THEN RAISE EXCEPTION 'You may not delete custom commands from packages. Try deleting or disabling the package.'; END IF; RETURN NEW; END; $$; ,DROP FUNCTION public._pkgcmdaltertrigger(); publicadminfalse8399212551691159_pkgcmdargaftertrigger()FUNCTION,CREATE FUNCTION _pkgcmdargaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; /DROP FUNCTION public._pkgcmdargaftertrigger(); publicadminfalse83992x12551691160_pkgcmdargaltertrigger()FUNCTIONCCREATE FUNCTION _pkgcmdargaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END IF; IF (TG_OP = 'INSERT') THEN RAISE EXCEPTION 'You may not create command arguments in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'UPDATE') THEN RAISE EXCEPTION 'You may not alter command arguments in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'DELETE') THEN RAISE EXCEPTION 'You may not delete command arguments from packages. Try deleting or disabling the package.'; END IF; RETURN NEW; END; $$; /DROP FUNCTION public._pkgcmdargaltertrigger(); publicadminfalse39928w12551691161_pkgcmdargbeforetrigger()FUNCTIONCREATE FUNCTION _pkgcmdargbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmdargid INTEGER; _debug BOOL := false; BEGIN IF (TG_OP = 'UPDATE') THEN RETURN NEW; ELSIF (TG_OP = 'INSERT') THEN RETURN NEW; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; 0DROP FUNCTION public._pkgcmdargbeforetrigger(); publicadminfalse8399212551691162_pkgcmdbeforetrigger()FUNCTIONCREATE FUNCTION _pkgcmdbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmdid INTEGER; _debug BOOL := false; BEGIN IF (TG_OP = 'UPDATE') THEN IF (_debug) THEN RAISE NOTICE 'OLD.cmd_name %, NEW.cmd_name %', OLD.cmd_name, NEW.cmd_name; END IF; IF (NEW.cmd_name != OLD.cmd_name) THEN SELECT cmd_id INTO _cmdid FROM cmd WHERE cmd_name=NEW.cmd_name; IF (FOUND) THEN RAISE EXCEPTION 'Cannot change command name % because another command with that name already exists.', NEW.cmd_name; END IF; END IF; ELSIF (TG_OP = 'INSERT') THEN IF (_debug) THEN RAISE NOTICE 'inserting NEW.cmd_name %', NEW.cmd_name; END IF; SELECT cmd_id INTO _cmdid FROM cmd WHERE cmd_name=NEW.cmd_name; IF (FOUND) THEN RAISE EXCEPTION 'Cannot create new command % because another command with that name already exists.', NEW.cmd_name; END IF; ELSIF (TG_OP = 'DELETE') THEN DELETE FROM cmdarg WHERE cmdarg_cmd_id=OLD.cmd_id; RETURN OLD; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._pkgcmdbeforetrigger(); publicadminfalse83992u12551691163_pkgheadbeforetrigger()FUNCTIONCREATE FUNCTION _pkgheadbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; BEGIN IF (TG_OP = 'UPDATE') THEN NEW.pkghead_created := OLD.pkghead_created; NEW.pkghead_updated := CURRENT_TIMESTAMP; IF (NEW.pkghead_indev AND NOT userCanCreateUsers(getEffectiveXtUser())) THEN NEW.pkghead_indev = FALSE; END IF; ELSIF (TG_OP = 'INSERT') THEN NEW.pkghead_created := CURRENT_TIMESTAMP; NEW.pkghead_updated := NEW.pkghead_created; IF (NEW.pkghead_indev AND NOT userCanCreateUsers(getEffectiveXtUser())) THEN NEW.pkghead_indev = FALSE; END IF; ELSIF (TG_OP = 'DELETE') THEN DELETE FROM pkgdep WHERE pkgdep_pkghead_id=OLD.pkghead_id; EXECUTE 'DROP SCHEMA ' || OLD.pkghead_name || ' CASCADE'; RETURN OLD; END IF; RETURN NEW; END; $$; .DROP FUNCTION public._pkgheadbeforetrigger(); publicadminfalse8399212551691164_pkgimageaftertrigger()FUNCTION,CREATE FUNCTION _pkgimageaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; .DROP FUNCTION public._pkgimageaftertrigger(); publicadminfalse83992y12551691165_pkgimagealtertrigger()FUNCTION CREATE FUNCTION _pkgimagealtertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END IF; IF (TG_OP = 'INSERT') THEN RAISE EXCEPTION 'You may not create images in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'UPDATE') THEN RAISE EXCEPTION 'You may not alter images in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'DELETE') THEN RAISE EXCEPTION 'You may not delete images from packages. Try deleting or disabling the package.'; END IF; RETURN NEW; END; $$; .DROP FUNCTION public._pkgimagealtertrigger(); publicadminfalse8399212551691166_pkgimagebeforetrigger()FUNCTIONCREATE FUNCTION _pkgimagebeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _imageid INTEGER; _debug BOOL := false; BEGIN IF (TG_OP = 'UPDATE') THEN IF (_debug) THEN RAISE NOTICE 'OLD.image_name %, NEW.image_name %', OLD.image_name, NEW.image_name; END IF; IF (NEW.image_name != OLD.image_name) THEN SELECT image_id INTO _imageid FROM image WHERE image_name=NEW.image_name; IF (FOUND) THEN RAISE EXCEPTION 'Cannot change image named % because another image with that name already exists.', NEW.image_name; END IF; END IF; ELSIF (TG_OP = 'INSERT') THEN IF (_debug) THEN RAISE NOTICE 'inserting NEW.image_name %', NEW.image_name; END IF; SELECT image_id INTO _imageid FROM image WHERE image_name=NEW.image_name; IF (FOUND) THEN RAISE EXCEPTION 'Cannot create new image % because another image with that name already exists.', NEW.image_name; END IF; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; /DROP FUNCTION public._pkgimagebeforetrigger(); publicadminfalse8399212551691167_pkgitembeforetrigger()FUNCTION$CREATE FUNCTION _pkgitembeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _functionargs TEXT; _group TEXT; _object TEXT; _schema TEXT; _debug BOOL := false; BEGIN IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN _object = NEW.pkgitem_name; SELECT LOWER(pkghead_name) INTO _schema FROM pkghead WHERE (pkghead_id=NEW.pkgitem_pkghead_id); IF (NOT FOUND) THEN _schema := 'public'; END IF; IF (NEW.pkgitem_type = 'F') THEN _object := SPLIT_PART(_object, '(', 1); ELSIF (NEW.pkgitem_type = 'M') THEN _group := SPLIT_PART(_object, '-', 1); _object := SPLIT_PART(_object, '-', 2); END IF; IF _debug THEN RAISE NOTICE '_schema % and _object %', _schema, _object; END IF; IF (NEW.pkgitem_type = 'C') THEN IF (NOT EXISTS(SELECT script_id FROM script WHERE ((script_id=NEW.pkgitem_item_id) AND (script_name=NEW.pkgitem_name)))) THEN RAISE EXCEPTION 'Cannot create Script % as a Package Item without a corresponding script record.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'D') THEN IF (NOT EXISTS(SELECT cmd_id FROM cmd WHERE ((cmd_id=NEW.pkgitem_item_id) AND (cmd_name=NEW.pkgitem_name)))) THEN RAISE EXCEPTION 'Cannot create Custom Command % as a Package Item without a corresponding cmd record.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'F') THEN IF (NOT EXISTS(SELECT pg_proc.oid FROM pg_proc, pg_namespace WHERE ((pg_proc.oid=NEW.pkgitem_item_id) AND (proname = (_object)) AND (pronamespace=pg_namespace.oid) AND (nspname=_schema)) )) THEN RAISE EXCEPTION 'Cannot create Function % (oid %) as a Package Item without a corresponding function in the database.', NEW.pkgitem_name, NEW.pkgitem_item_id; END IF; ELSIF (NEW.pkgitem_type = 'G') THEN IF (NOT EXISTS(SELECT pg_class.oid FROM pg_trigger, pg_class, pg_namespace WHERE ((tgname=_object) AND (tgrelid=pg_class.oid) AND (relnamespace=pg_namespace.oid) AND (nspname=_schema)))) THEN RAISE EXCEPTION 'Cannot create Trigger % as a Package Item without a corresponding trigger in the database.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'I') THEN IF (NOT EXISTS(SELECT image_id FROM image WHERE ((image_id=NEW.pkgitem_item_id) AND (image_name=NEW.pkgitem_name)))) THEN RAISE EXCEPTION 'Cannot create Image % as a Package Item without a corresponding image record.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'M') THEN IF (NOT EXISTS(SELECT metasql_id FROM metasql WHERE ((metasql_id=NEW.pkgitem_item_id) AND (metasql_group=_group) AND (metasql_name=_object)))) THEN RAISE EXCEPTION 'Cannot create MetaSQL statement % as a Package Item without a corresponding metasql record.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'P') THEN IF (NOT EXISTS(SELECT priv_id FROM priv WHERE ((priv_id=NEW.pkgitem_item_id) AND (priv_name=NEW.pkgitem_name)))) THEN RAISE EXCEPTION 'Cannot create Privilege % as a Package Item without a corresponding priv record.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'R') THEN IF (NOT EXISTS(SELECT report_id FROM report WHERE ((report_id=NEW.pkgitem_item_id) AND (report_name=NEW.pkgitem_name)))) THEN RAISE EXCEPTION 'Cannot create Report % as a Package Item without a corresponding report record.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'S') THEN IF (NOT EXISTS(SELECT oid FROM pg_namespace WHERE (LOWER(nspname)=LOWER(NEW.pkgitem_name)))) THEN RAISE EXCEPTION 'Cannot create Schema % as a Package Item without a corresponding schema in the database.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'T') THEN IF (NOT EXISTS(SELECT pg_class.oid FROM pg_class, pg_namespace WHERE ((relname=_object) AND (relnamespace=pg_namespace.oid) AND (relkind='r') AND (nspname=_schema)))) THEN RAISE EXCEPTION 'Cannot create Table % as a Package Item without a corresponding table in the database.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'U') THEN IF (NOT EXISTS(SELECT uiform_id FROM uiform WHERE ((uiform_id=NEW.pkgitem_item_id) AND (uiform_name=NEW.pkgitem_name)))) THEN RAISE EXCEPTION 'Cannot create User Interface Form % as a Package Item without a corresponding uiform record.', NEW.pkgitem_name; END IF; ELSIF (NEW.pkgitem_type = 'V') THEN IF (NOT EXISTS(SELECT pg_class.oid FROM pg_class, pg_namespace WHERE ((relname=_object) AND (relnamespace=pg_namespace.oid) AND (relkind='v') AND (nspname=_schema)))) THEN RAISE EXCEPTION 'Cannot create View % as a Package Item without a corresponding view in the database.', NEW.pkgitem_name; END IF; ELSE RAISE EXCEPTION '"%" is not a valid type of package item.', NEW.pkgitem_type; END IF; ELSIF (TG_OP = 'DELETE') THEN IF _debug THEN RAISE NOTICE 'Deleting % % %', OLD.pkgitem_item_id, OLD.pkgitem_name, OLD.pkgitem_type; END IF; _object = OLD.pkgitem_name; SELECT pkghead_name INTO _schema FROM pkghead WHERE (pkghead_id=OLD.pkgitem_pkghead_id); IF (NOT FOUND) THEN _schema := 'public'; END IF; IF (OLD.pkgitem_type = 'F') THEN _object := SPLIT_PART(_object, '(', 1); ELSIF (OLD.pkgitem_type = 'M') THEN _group := SPLIT_PART(_object, '-', 1); _object := SPLIT_PART(_object, '-', 2); END IF; IF _debug THEN RAISE NOTICE '_schema % and _object %', _schema, _object; END IF; IF (OLD.pkgitem_type = 'C') THEN DELETE FROM script WHERE ((script_id=OLD.pkgitem_item_id) AND (script_name=OLD.pkgitem_name)); ELSIF (OLD.pkgitem_type = 'D') THEN DELETE FROM cmd WHERE ((cmd_id=OLD.pkgitem_item_id) AND (cmd_name=OLD.pkgitem_name)); ELSIF (OLD.pkgitem_type = 'F') THEN -- SELECT dropIfExists('FUNCTION', CAST (oid::regprocedure AS TEXT), _schema) PERFORM dropIfExists('FUNCTION', proname || '(' || oidvectortypes(proargtypes) || ')', _schema) FROM pg_proc WHERE (oid=OLD.pkgitem_item_id); ELSIF (OLD.pkgitem_type = 'G') THEN PERFORM dropIfExists('TRIGGER', _object, _schema); ELSIF (OLD.pkgitem_type = 'I') THEN DELETE FROM image WHERE ((image_id=OLD.pkgitem_item_id) AND (image_name=OLD.pkgitem_name)); ELSIF (OLD.pkgitem_type = 'M') THEN DELETE FROM metasql WHERE ((metasql_id=OLD.pkgitem_item_id) AND (metasql_group=_group) AND (metasql_name=_object)); ELSIF (OLD.pkgitem_type = 'P') THEN DELETE FROM priv WHERE ((priv_id=OLD.pkgitem_item_id) AND (priv_name=OLD.pkgitem_name)); ELSIF (OLD.pkgitem_type = 'R') THEN DELETE FROM report WHERE ((report_id=OLD.pkgitem_item_id) AND (report_name=OLD.pkgitem_name)); ELSIF (OLD.pkgitem_type = 'S') THEN PERFORM dropIfExists('SCHEMA', OLD.pkgitem_name, OLD.pkgitem_name); ELSIF (OLD.pkgitem_type = 'T') THEN PERFORM dropIfExists('TABLE', _object, _schema, true); ELSIF (OLD.pkgitem_type = 'U') THEN DELETE FROM uiform WHERE ((uiform_id=OLD.pkgitem_item_id) AND (uiform_name=OLD.pkgitem_name)); ELSIF (OLD.pkgitem_type = 'V') THEN PERFORM dropIfExists('VIEW', _object, _schema, true); ELSE RAISE EXCEPTION '"%" is not a valid type of package item.', OLD.pkgitem_type; END IF; RETURN OLD; END IF; RETURN NEW; END; $$; .DROP FUNCTION public._pkgitembeforetrigger(); publicadminfalse8399212551691169_pkgmetasqlaftertrigger()FUNCTION.CREATE FUNCTION _pkgmetasqlaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; 0DROP FUNCTION public._pkgmetasqlaftertrigger(); publicadminfalse83992{12551691170_pkgmetasqlaltertrigger()FUNCTION CREATE FUNCTION _pkgmetasqlaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _isdba BOOLEAN := false; BEGIN SELECT rolsuper INTO _isdba FROM pg_roles WHERE (rolname=getEffectiveXtUser()); IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END IF; -- cannot combine IF's because plpgsql does not always evaluate left-to-right IF (TG_OP = 'INSERT') THEN IF (NEW.metasql_grade <= 0 AND NOT _isdba) THEN RAISE EXCEPTION 'You may not create grade 0 MetaSQL statements in packages except using the xTuple Updater utility'; END IF; ELSIF (TG_OP = 'UPDATE') THEN IF (NEW.metasql_grade <= 0 AND NOT _isdba) THEN RAISE EXCEPTION 'You may not alter grade 0 MetaSQL statements in packages except using the xTuple Updater utility'; END IF; ELSIF (TG_OP = 'DELETE') THEN IF (OLD.metasql_grade <= 0 AND NOT _isdba) THEN RAISE EXCEPTION 'You may not delete grade 0 MetaSQL statements from packages. Try deleting or disabling the package.'; ELSE RETURN OLD; END IF; END IF; RETURN NEW; END; $$; 0DROP FUNCTION public._pkgmetasqlaltertrigger(); publicadminfalse83992z12551691171_pkgmetasqlbeforetrigger()FUNCTIONCREATE FUNCTION _pkgmetasqlbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _metasqlid INTEGER; _isdba BOOLEAN := false; BEGIN SELECT rolsuper INTO _isdba FROM pg_roles WHERE (rolname=getEffectiveXtUser()); IF (NOT (_isdba OR checkPrivilege('MaintainMetaSQL'))) THEN RAISE EXCEPTION '% does not have privileges to maintain MetaSQL statements in %.% (DBA=%)', getEffectiveXtUser(), TG_TABLE_SCHEMA, TG_TABLE_NAME, _isdba; END IF; IF (TG_OP = 'UPDATE') THEN RAISE DEBUG 'update OLD %-%-%, NEW %-%-%', OLD.metasql_group, OLD.metasql_name, OLD.metasql_grade, NEW.metasql_group, NEW.metasql_name, NEW.metasql_grade; IF (NEW.metasql_name != OLD.metasql_name OR NEW.metasql_group != OLD.metasql_group OR NEW.metasql_grade != OLD.metasql_grade) THEN SELECT metasql_id INTO _metasqlid FROM metasql WHERE metasql_name=NEW.metasql_name AND metasql_group=NEW.metasql_group AND metasql_grade=NEW.metasql_grade; IF (FOUND) THEN RAISE EXCEPTION 'Cannot change the MetaSQL statement named %-%-% because another MetaSQL statement with that group, name and grade already exists.', NEW.metasql_group, NEW.metasql_name, NEW.metasql_grade; END IF; END IF; ELSIF (TG_OP = 'INSERT') THEN RAISE DEBUG 'insert NEW %-% %', NEW.metasql_group, NEW.metasql_name, NEW.metasql_grade; SELECT metasql_id INTO _metasqlid FROM metasql WHERE metasql_name=NEW.metasql_name AND metasql_group=NEW.metasql_group AND metasql_grade=NEW.metasql_grade; IF (FOUND) THEN RAISE EXCEPTION 'The new MetaSQL statement %-% % conflicts with an existing statement.', NEW.metasql_group, NEW.metasql_name, NEW.metasql_grade; END IF; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; 1DROP FUNCTION public._pkgmetasqlbeforetrigger(); publicadminfalse3992812551691172_pkgprivaftertrigger()FUNCTION+CREATE FUNCTION _pkgprivaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._pkgprivaftertrigger(); publicadminfalse83992}12551691173_pkgprivaltertrigger()FUNCTION,CREATE FUNCTION _pkgprivaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END IF; IF (TG_OP = 'INSERT') THEN RAISE EXCEPTION 'You may not create privileges in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'UPDATE') THEN RAISE EXCEPTION 'You may not alter privileges in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'DELETE') THEN RAISE EXCEPTION 'You may not delete privileges from packages. Try deleting or disabling the package.'; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._pkgprivaltertrigger(); publicadminfalse39928|12551691174_pkgprivbeforetrigger()FUNCTIONrCREATE FUNCTION _pkgprivbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _privid INTEGER; _debug BOOL := false; BEGIN IF (TG_OP = 'UPDATE') THEN IF (_debug) THEN RAISE NOTICE 'OLD.priv_name %, NEW.priv_name %', OLD.priv_name, NEW.priv_name; END IF; IF (NEW.priv_name != OLD.priv_name) THEN SELECT priv_id INTO _privid FROM priv WHERE priv_name=NEW.priv_name; IF (FOUND) THEN RAISE EXCEPTION 'Cannot change privilege name % because another privilege with that name already exists.', NEW.priv_name; END IF; END IF; ELSIF (TG_OP = 'INSERT') THEN IF (_debug) THEN RAISE NOTICE 'inserting NEW.priv_name %', NEW.priv_name; END IF; SELECT priv_id INTO _privid FROM priv WHERE priv_name=NEW.priv_name; IF (FOUND) THEN RAISE EXCEPTION 'Cannot create new privilege % because another privilege with that name already exists.', NEW.priv_name; END IF; ELSIF (TG_OP = 'DELETE') THEN IF (_debug) THEN RAISE NOTICE 'deleting pkgpriv_id %', OLD.priv_id; END IF; DELETE FROM usrpriv WHERE usrpriv_priv_id=OLD.priv_id; DELETE FROM grppriv WHERE grppriv_priv_id=OLD.priv_id; RETURN OLD; END IF; RETURN NEW; END; $$; .DROP FUNCTION public._pkgprivbeforetrigger(); publicadminfalse8399212551691175_pkgreportaftertrigger()FUNCTION-CREATE FUNCTION _pkgreportaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; /DROP FUNCTION public._pkgreportaftertrigger(); publicadminfalse8399212551691176_pkgreportaltertrigger()FUNCTIONECREATE FUNCTION _pkgreportaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END IF; IF (TG_OP = 'INSERT') THEN RAISE EXCEPTION 'You may not create report definitions in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'UPDATE') THEN RAISE EXCEPTION 'You may not alter report definitions in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'DELETE') THEN RAISE EXCEPTION 'You may not delete report definitions from packages. Try deleting or disabling the package.'; END IF; RETURN NEW; END; $$; /DROP FUNCTION public._pkgreportaltertrigger(); publicadminfalse8399212551691177_pkgreportbeforetrigger()FUNCTIONCREATE FUNCTION _pkgreportbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _reportid INTEGER; _debug BOOL := false; BEGIN IF (TG_OP = 'UPDATE') THEN IF (_debug) THEN RAISE NOTICE 'update OLD % %, NEW % %', OLD.report_name, OLD.report_grade, NEW.report_name, NEW.report_grade; END IF; IF (NEW.report_name != OLD.report_name) THEN SELECT report_id INTO _reportid FROM report WHERE ((report_name=NEW.report_name) AND (report_grade=NEW.report_grade)); IF (FOUND) THEN RAISE EXCEPTION 'Cannot change report % % because another report with that name and grade already exists.', NEW.report_name, NEW.report_grade; END IF; END IF; ELSIF (TG_OP = 'INSERT') THEN IF (_debug) THEN RAISE NOTICE 'insert NEW % %', NEW.report_name, NEW.report_grade; END IF; SELECT report_id INTO _reportid FROM report WHERE ((report_name=NEW.report_name) AND (report_grade=NEW.report_grade)); IF (FOUND) THEN RAISE EXCEPTION 'Cannot create new report % % because another report with that name and grade already exists.', NEW.report_name, NEW.report_grade; END IF; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; 0DROP FUNCTION public._pkgreportbeforetrigger(); publicadminfalse8399212551691178_pkgscriptaftertrigger()FUNCTION-CREATE FUNCTION _pkgscriptaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; /DROP FUNCTION public._pkgscriptaftertrigger(); publicadminfalse8399212551691179_pkgscriptaltertrigger()FUNCTION$CREATE FUNCTION _pkgscriptaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END IF; IF (TG_OP = 'INSERT') THEN RAISE EXCEPTION 'You may not create scripts in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'UPDATE') THEN RAISE EXCEPTION 'You may not alter scripts in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'DELETE') THEN RAISE EXCEPTION 'You may not delete scripts from packages. Try deleting or disabling the package.'; END IF; RETURN NEW; END; $$; /DROP FUNCTION public._pkgscriptaltertrigger(); publicadminfalse8399212551691180_pkgscriptbeforetrigger()FUNCTIONCREATE FUNCTION _pkgscriptbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _scriptid INTEGER; _debug BOOL := false; BEGIN IF (TG_OP = 'UPDATE') THEN RETURN NEW; ELSIF (TG_OP = 'INSERT') THEN RETURN NEW; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; 0DROP FUNCTION public._pkgscriptbeforetrigger(); publicadminfalse8399212551691181_pkguiformaftertrigger()FUNCTION-CREATE FUNCTION _pkguiformaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; /DROP FUNCTION public._pkguiformaftertrigger(); publicadminfalse8399212551691182_pkguiformaltertrigger()FUNCTIONCREATE FUNCTION _pkguiformaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (pkgMayBeModified(TG_TABLE_SCHEMA)) THEN IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END IF; IF (TG_OP = 'INSERT') THEN RAISE EXCEPTION 'You may not create forms in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'UPDATE') THEN RAISE EXCEPTION 'You may not alter forms in packages except using the xTuple Updater utility'; ELSIF (TG_OP = 'DELETE') THEN RAISE EXCEPTION 'You may not delete forms from packages. Try deleting or disabling the package.'; END IF; RETURN NEW; END; $$; /DROP FUNCTION public._pkguiformaltertrigger(); publicadminfalse8399212551691183_pkguiformbeforetrigger()FUNCTIONCREATE FUNCTION _pkguiformbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _uiformid INTEGER; _debug BOOL := false; BEGIN IF (TG_OP = 'UPDATE') THEN RETURN NEW; ELSIF (TG_OP = 'INSERT') THEN RETURN NEW; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; 0DROP FUNCTION public._pkguiformbeforetrigger(); publicadminfalse3992812551691184_poheadtrigger()FUNCTION CREATE FUNCTION _poheadtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _check BOOLEAN; _maint BOOLEAN := TRUE; BEGIN -- Check if we are doing maintenance IF (TG_OP = 'UPDATE') THEN IF ( (OLD.pohead_status != NEW.pohead_status) OR (OLD.pohead_printed != NEW.pohead_printed) ) THEN _maint := FALSE; END IF; END IF; -- Check IF ( (NOT _maint) AND (NOT checkPrivilege('MaintainPurchaseOrders')) AND (NOT checkPrivilege('PostPurchaseOrders')) AND (NOT checkPrivilege('PrintPurchaseOrders')) AND (NOT checkPrivilege('PostVouchers')) ) THEN RAISE EXCEPTION 'You do not have privileges to alter a Purchase Order.'; END IF; IF ( _maint AND (NOT checkPrivilege('MaintainPurchaseOrders')) ) THEN RAISE EXCEPTION 'You do not have privileges to alter a Purchase Order.'; END IF; IF (TG_OP = 'INSERT') THEN --- clear the number from the issue cache PERFORM clearNumberIssue('PoNumber', NEW.pohead_number); END IF; IF ( (TG_OP = 'INSERT') OR (TG_op = 'UPDATE') ) THEN IF (NOT ISNUMERIC(NEW.pohead_number) AND NEW.pohead_saved) THEN RAISE EXCEPTION 'Purchase Order Number must be numeric.'; END IF; END IF; IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='POChangeLog') ) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'P', NEW.pohead_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.pohead_terms_id <> NEW.pohead_terms_id) THEN PERFORM postComment( _cmnttypeid, 'P', NEW.pohead_id, ('Terms Changed from "' || oldterms.terms_code || '" to "' || newterms.terms_code || '"') ) FROM terms AS oldterms, terms AS newterms WHERE ( (oldterms.terms_id=OLD.pohead_terms_id) AND (newterms.terms_id=NEW.pohead_terms_id) ); END IF; ELSIF (TG_OP = 'DELETE') THEN DELETE FROM docass WHERE docass_source_id = OLD.pohead_id AND docass_source_type = 'P'; DELETE FROM docass WHERE docass_target_id = OLD.pohead_id AND docass_target_type = 'P'; DELETE FROM comment WHERE ( (comment_source='P') AND (comment_source_id=OLD.pohead_id) ); END IF; END IF; END IF; IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END; $$; 'DROP FUNCTION public._poheadtrigger(); publicadminfalse8399212551691185_poheadtriggerafter()FUNCTION<CREATE FUNCTION _poheadtriggerafter() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (COALESCE(NEW.pohead_taxzone_id,-1) <> COALESCE(OLD.pohead_taxzone_id,-1)) THEN UPDATE poitem SET poitem_taxtype_id=getItemTaxType(itemsite_item_id,NEW.pohead_taxzone_id) FROM itemsite WHERE ((itemsite_id=poitem_itemsite_id) AND (poitem_pohead_id=NEW.pohead_id)); END IF; -- Do not update closed poitems IF (TG_OP = 'UPDATE') THEN IF (OLD.pohead_status != NEW.pohead_status) THEN UPDATE poitem SET poitem_status=NEW.pohead_status WHERE ( (poitem_pohead_id=NEW.pohead_id) AND (poitem_status <> 'C') ); END IF; END IF; RETURN NEW; END; $$; ,DROP FUNCTION public._poheadtriggerafter(); publicadminfalse8399212551691186_poitemtrigger()FUNCTIONj2CREATE FUNCTION _poitemtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _status CHAR(1); _check BOOLEAN; _cnt INTEGER; _s RECORD; BEGIN -- Check IF ( (TG_OP = 'UPDATE') AND (NOT checkPrivilege('MaintainPurchaseOrders')) AND (NOT checkPrivilege('ChangePurchaseOrderQty')) AND (NOT checkPrivilege('EnterReceipts')) AND (NOT checkPrivilege('PostVouchers')) ) THEN RAISE EXCEPTION 'You do not have privileges to alter a Purchase Order.'; END IF; IF ( ( (TG_OP = 'INSERT') OR (TG_OP = 'DELETE') ) AND (NOT checkPrivilege('MaintainPurchaseOrders')) ) THEN RAISE EXCEPTION 'You do not have privileges to alter a Purchase Order.'; END IF; IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN SELECT pohead_status INTO _status FROM pohead WHERE (pohead_id=NEW.poitem_pohead_id); IF (NEW.poitem_itemsite_id=-1) THEN NEW.poitem_itemsite_id := NULL; END IF; IF (NEW.poitem_expcat_id=-1) THEN NEW.poitem_expcat_id := NULL; END IF; IF (NEW.poitem_itemsite_id IS NOT NULL AND NEW.poitem_expcat_id IS NOT NULL) THEN RAISE EXCEPTION 'A purchase order line may not include both an inventory and non-inventory item'; ELSIF (NEW.poitem_itemsite_id IS NULL AND NEW.poitem_expcat_id IS NULL) THEN RAISE EXCEPTION 'A purchase order line must specify either an inventory item or a non-inventory expense category'; ELSIF (NEW.poitem_qty_ordered IS NULL) THEN RAISE EXCEPTION 'A purchase order line must specify a quantity'; ELSIF (COALESCE(NEW.poitem_itemsite_id,-1) != -1) THEN SELECT (COUNT(item_id)=1) INTO _check FROM itemsite, item WHERE ((itemsite_id=NEW.poitem_itemsite_id) AND (itemsite_item_id=item_id) AND (item_type IN ('P','O','M','T'))); IF NOT (_check) THEN RAISE EXCEPTION 'The item is not a purchasable item type'; END IF; END IF; END IF; IF (TG_OP = 'INSERT') THEN IF (_status='C') THEN RAISE EXCEPTION 'New lines may not be inserted into a closed purchase order'; END IF; --Fetch and apply default item source data if applicable IF ((NEW.poitem_itemsrc_id IS NULL) AND (NEW.poitem_itemsite_id IS NOT NULL)) THEN IF (NEW.poitem_itemsrc_id IS NULL) THEN SELECT COUNT(itemsrc_id) INTO _cnt FROM pohead,itemsrc,itemsite WHERE ((pohead_id=NEW.poitem_pohead_id) AND (pohead_vend_id=itemsrc_vend_id) AND (itemsite_id=NEW.poitem_itemsite_id) AND (itemsite_item_id=itemsrc_item_id)); IF (_cnt = 1) THEN -- We found the one and only item source, so populate data for it SELECT itemsrc.* INTO _s FROM pohead,itemsrc,itemsite WHERE ((pohead_id=NEW.poitem_pohead_id) AND (pohead_vend_id=itemsrc_vend_id) AND (itemsite_id=NEW.poitem_itemsite_id) AND (itemsite_item_id=itemsrc_item_id)); IF (FOUND) THEN NEW.poitem_itemsrc_id := _s.itemsrc_id; NEW.poitem_vend_uom := _s.itemsrc_vend_uom; NEW.poitem_invvenduomratio := _s.itemsrc_invvendoruomratio; NEW.poitem_duedate := COALESCE(NEW.poitem_duedate, CURRENT_DATE + _s.itemsrc_leadtime); NEW.poitem_vend_item_number := COALESCE(NEW.poitem_vend_item_number,_s.itemsrc_vend_item_number); NEW.poitem_vend_item_descrip := COALESCE(NEW.poitem_vend_item_descrip,_s.itemsrc_vend_item_descrip); NEW.poitem_manuf_name := COALESCE(NEW.poitem_manuf_name,_s.itemsrc_manuf_name); NEW.poitem_manuf_item_number := COALESCE(NEW.poitem_manuf_item_number, _s.itemsrc_manuf_item_number); NEW.poitem_manuf_item_descrip := COALESCE(NEW.poitem_manuf_item_descrip, _s.itemsrc_manuf_item_descrip); END IF; ELSIF (_cnt > 1) THEN -- There are multiple sources, see if there is an exact match with provided vendor info. SELECT itemsrc.* INTO _s FROM pohead,itemsrc,itemsite WHERE ((pohead_id=NEW.poitem_pohead_id) AND (pohead_vend_id=itemsrc_vend_id) AND (itemsite_id=NEW.poitem_itemsite_id) AND (itemsite_item_id=itemsrc_item_id) AND (NEW.poitem_vend_item_number=itemsrc_vend_item_number) AND (COALESCE(NEW.poitem_manuf_name,'')=COALESCE(itemsrc_manuf_name,'')) AND (COALESCE(NEW.poitem_manuf_item_number,'')=COALESCE(itemsrc_manuf_item_number,''))); IF (FOUND) THEN NEW.poitem_itemsrc_id := _s.itemsrc_id; NEW.poitem_vend_uom := _s.itemsrc_vend_uom; NEW.poitem_invvenduomratio := _s.itemsrc_invvendoruomratio; NEW.poitem_duedate := COALESCE(NEW.poitem_duedate, CURRENT_DATE + _s.itemsrc_leadtime); NEW.poitem_vend_item_descrip := COALESCE(NEW.poitem_vend_item_descrip,_s.itemsrc_vend_item_descrip); NEW.poitem_manuf_item_descrip := COALESCE(NEW.poitem_manuf_item_descrip, _s.itemsrc_manuf_item_descrip); END IF; END IF; END IF; END IF; IF (NEW.poitem_duedate IS NULL) THEN RAISE EXCEPTION 'A due date is required'; END IF; --Set defaults NEW.poitem_linenumber := COALESCE(NEW.poitem_linenumber,( SELECT COALESCE(MAX(poitem_linenumber),0) + 1 FROM poitem WHERE (poitem_pohead_id=NEW.poitem_pohead_id))); NEW.poitem_status := _status; NEW.poitem_invvenduomratio := COALESCE(NEW.poitem_invvenduomratio,1); IF (NEW.poitem_invvenduomratio = 0.0) THEN NEW.poitem_invvenduomratio = 1.0; END IF; NEW.poitem_vend_item_number := COALESCE(NEW.poitem_vend_item_number,''); NEW.poitem_vend_item_descrip := COALESCE(NEW.poitem_vend_item_descrip,''); NEW.poitem_unitprice := COALESCE(NEW.poitem_unitprice,( SELECT itemsrcPrice(NEW.poitem_itemsrc_id, COALESCE(itemsite_warehous_id, -1), pohead_dropship, NEW.poitem_qty_ordered, pohead_curr_id, CURRENT_DATE) FROM itemsite, pohead WHERE ( (itemsite_id=NEW.poitem_itemsite_id) AND (pohead_id=NEW.poitem_pohead_id) )), 0.0); NEW.poitem_stdcost := COALESCE(NEW.poitem_stdcost,( SELECT stdcost(itemsite_item_id) FROM itemsite WHERE (itemsite_id=NEW.poitem_itemsite_id))); NEW.poitem_bom_rev_id := COALESCE(NEW.poitem_bom_rev_id,( SELECT getActiveRevId('BOM',itemsite_item_id) FROM itemsite WHERE (itemsite_id=NEW.poitem_itemsite_id))); NEW.poitem_boo_rev_id := COALESCE(NEW.poitem_boo_rev_id,( SELECT getActiveRevId('BOO',itemsite_item_id) FROM itemsite WHERE (itemsite_id=NEW.poitem_itemsite_id))); NEW.poitem_comments := COALESCE(NEW.poitem_comments,''); NEW.poitem_freight := COALESCE(NEW.poitem_freight,0); NEW.poitem_qty_received := 0; NEW.poitem_qty_returned := 0; NEW.poitem_qty_vouchered := 0; -- Insert Event Start INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'P', NEW.poitem_id, itemsite_warehous_id, (pohead_number || '-' || NEW.poitem_linenumber || ': ' || item_number) FROM evntnot, evnttype, itemsite, item, pohead WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (itemsite_id=NEW.poitem_itemsite_id) AND (itemsite_item_id=item_id) AND (NEW.poitem_pohead_id=pohead_id) AND (NEW.poitem_duedate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name='POitemCreate') ); -- Insert Event End END IF; IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='POChangeLog') ) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'P', NEW.poitem_pohead_id, ('Created Line #' || NEW.poitem_linenumber::TEXT)); PERFORM postComment(_cmnttypeid, 'PI', NEW.poitem_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (NEW.poitem_qty_ordered <> OLD.poitem_qty_ordered) THEN PERFORM postComment( _cmnttypeid, 'PI', NEW.poitem_id, ( 'Qty. Ordered Changed from ' || formatQty(OLD.poitem_qty_ordered) || ' to ' || formatQty(NEW.poitem_qty_ordered ) ) ); END IF; IF (NEW.poitem_unitprice <> OLD.poitem_unitprice) THEN PERFORM postComment( _cmnttypeid, 'PI', NEW.poitem_id, ( 'Unit Price Changed from ' || formatPurchPrice(OLD.poitem_unitprice) || ' to ' || formatPurchPrice(NEW.poitem_unitprice ) ) ); END IF; IF (NEW.poitem_duedate <> OLD.poitem_duedate) THEN PERFORM postComment( _cmnttypeid, 'PI', NEW.poitem_id, ( 'Due Date Changed from ' || formatDate(OLD.poitem_duedate) || ' to ' || formatDate(NEW.poitem_duedate ) ) ); END IF; IF (COALESCE(OLD.poitem_taxtype_id, -1) <> COALESCE(NEW.poitem_taxtype_id, -1)) THEN PERFORM postComment( _cmnttypeid, 'PI', NEW.poitem_id, ( 'Tax Type Changed from "' || COALESCE((SELECT taxtype_name FROM taxtype WHERE taxtype_id=OLD.poitem_taxtype_id), 'None') || '" (' || COALESCE(OLD.poitem_taxtype_id, 0) || ') to "' || COALESCE((SELECT taxtype_name FROM taxtype WHERE taxtype_id=NEW.poitem_taxtype_id), 'None') || '" (' || COALESCE(NEW.poitem_taxtype_id, 0) || ')' ) ); END IF; IF (NEW.poitem_status <> OLD.poitem_status) THEN IF (NEW.poitem_status = 'C') THEN PERFORM postComment(_cmnttypeid, 'PI', NEW.poitem_id, 'Closed'); ELSIF (NEW.poitem_status = 'O') THEN PERFORM postComment(_cmnttypeid, 'PI', NEW.poitem_id, 'Opened'); END IF; END IF; ELSIF (TG_OP = 'DELETE') THEN PERFORM postComment(_cmnttypeid, 'P', OLD.poitem_pohead_id, ('Deleted Line #' || OLD.poitem_linenumber::TEXT)); END IF; END IF; END IF; IF (TG_OP = 'DELETE') THEN IF (EXISTS(SELECT recv_id FROM recv WHERE ((recv_order_type='PO') AND (recv_orderitem_id=OLD.poitem_id) AND (recv_qty>0)))) THEN RAISE EXCEPTION 'Cannot delete an P/O Item which has been received'; END IF; DELETE FROM comment WHERE ( (comment_source='PI') AND (comment_source_id=OLD.poitem_id) ); DELETE FROM charass WHERE ((charass_target_type='PI') AND (charass_target_id=OLD.poitem_id)); IF (OLD.poitem_status = 'O') THEN IF ( (SELECT (count(*) < 1) FROM poitem WHERE ((poitem_pohead_id=OLD.poitem_pohead_id) AND (poitem_id != OLD.poitem_id) AND (poitem_status <> 'C')) ) ) THEN UPDATE pohead SET pohead_status = 'C' WHERE ((pohead_id=OLD.poitem_pohead_id) AND (pohead_status='O')); END IF; END IF; RETURN OLD; ELSE IF (TG_OP = 'UPDATE') THEN IF (NEW.poitem_itemsite_id != OLD.poitem_itemsite_id) THEN RAISE EXCEPTION 'You may not change the item site for a line item.'; ELSIF (NEW.poitem_expcat_id != OLD.poitem_expcat_id) THEN RAISE EXCEPTION 'You may not change the expense category for a line item.'; END IF; IF (OLD.poitem_status <> NEW.poitem_status) THEN IF ( (SELECT (count(*) < 1) FROM poitem WHERE ((poitem_pohead_id=NEW.poitem_pohead_id) AND (poitem_id != NEW.poitem_id) AND (poitem_status<>'C')) ) AND (NEW.poitem_status='C') ) THEN UPDATE pohead SET pohead_status = 'C' WHERE ((pohead_id=NEW.poitem_pohead_id) AND (pohead_status='O')); ELSE UPDATE pohead SET pohead_status = 'O' WHERE ((pohead_id=NEW.poitem_pohead_id) AND (pohead_status='C')); END IF; END IF; END IF; RETURN NEW; END IF; END; $$; 'DROP FUNCTION public._poitemtrigger(); publicadminfalse8399212551691188_prjaftertrigger()FUNCTIONCREATE FUNCTION _prjaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (NOT FOUND) THEN RAISE EXCEPTION 'Comment type ChangeLog not found'; END IF; IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'J', NEW.prj_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.prj_start_date <> NEW.prj_start_date) THEN PERFORM postComment( _cmnttypeid, 'J', NEW.prj_id, ('Start Date Changed from ' || formatDate(OLD.prj_start_date) || ' to ' || formatDate(NEW.prj_start_date)) ); END IF; IF (OLD.prj_due_date <> NEW.prj_due_date) THEN PERFORM postComment( _cmnttypeid, 'J', NEW.prj_id, ('Due Date Changed from ' || formatDate(OLD.prj_due_date) || ' to ' || formatDate(NEW.prj_due_date)) ); END IF; IF (OLD.prj_assigned_date <> NEW.prj_assigned_date) THEN PERFORM postComment( _cmnttypeid, 'J', NEW.prj_id, ('Assigned Date Changed from ' || formatDate(OLD.prj_assigned_date) || ' to ' || formatDate(NEW.prj_assigned_date)) ); END IF; IF (OLD.prj_completed_date <> NEW.prj_completed_date) THEN PERFORM postComment( _cmnttypeid, 'J', NEW.prj_id, ('Completed Date Changed from ' || formatDate(OLD.prj_completed_date) || ' to ' || formatDate(NEW.prj_completed_date)) ); END IF; END IF; RETURN NEW; END; $$; )DROP FUNCTION public._prjaftertrigger(); publicadminfalse8399212551691189_prjbeforedeletetrigger()FUNCTIONwCREATE FUNCTION _prjbeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _recurid INTEGER; _newparentid INTEGER; BEGIN IF (TG_OP = 'DELETE') THEN DELETE FROM docass WHERE docass_source_id = OLD.prj_id AND docass_source_type = 'J'; DELETE FROM docass WHERE docass_target_id = OLD.prj_id AND docass_target_type = 'J'; SELECT recur_id INTO _recurid FROM recur WHERE ((recur_parent_id=OLD.prj_id) AND (recur_parent_type='J')); IF (_recurid IS NOT NULL) THEN SELECT MIN(prj_id) INTO _newparentid FROM prj WHERE ((prj_recurring_prj_id=OLD.prj_id) AND (prj_id!=OLD.prj_id)); -- client is responsible for warning about deleting a recurring prj IF (_newparentid IS NULL) THEN DELETE FROM recur WHERE recur_id=_recurid; ELSE UPDATE recur SET recur_parent_id=_newparentid WHERE recur_id=_recurid; END IF; END IF; RETURN OLD; END IF; RETURN NEW; END; $$; 0DROP FUNCTION public._prjbeforedeletetrigger(); publicadminfalse8399212551691190_prjtaskaftertrigger()FUNCTIONCREATE FUNCTION _prjtaskaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (NOT FOUND) THEN RAISE EXCEPTION 'Comment type ChangeLog not found'; END IF; IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'TA', NEW.prjtask_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.prjtask_start_date <> NEW.prjtask_start_date) THEN PERFORM postComment( _cmnttypeid, 'TA', NEW.prjtask_id, ('Start Date Changed from ' || formatDate(OLD.prjtask_start_date) || ' to ' || formatDate(NEW.prjtask_start_date)) ); END IF; IF (OLD.prjtask_due_date <> NEW.prjtask_due_date) THEN PERFORM postComment( _cmnttypeid, 'TA', NEW.prjtask_id, ('Due Date Changed from ' || formatDate(OLD.prjtask_due_date) || ' to ' || formatDate(NEW.prjtask_due_date)) ); END IF; IF (OLD.prjtask_assigned_date <> NEW.prjtask_assigned_date) THEN PERFORM postComment( _cmnttypeid, 'TA', NEW.prjtask_id, ('Assigned Date Changed from ' || formatDate(OLD.prjtask_assigned_date) || ' to ' || formatDate(NEW.prjtask_assigned_date)) ); END IF; IF (OLD.prjtask_completed_date <> NEW.prjtask_completed_date) THEN PERFORM postComment( _cmnttypeid, 'TA', NEW.prjtask_id, ('Completed Date Changed from ' || formatDate(OLD.prjtask_completed_date) || ' to ' || formatDate(NEW.prjtask_completed_date)) ); END IF; IF (OLD.prjtask_hours_actual != NEW.prjtask_hours_actual) THEN PERFORM postComment(_cmnttypeid, 'TA', NEW.prjtask_id, 'Actual Hours changed from ' || formatQty(OLD.prjtask_hours_actual) || ' to ' || formatQty(NEW.prjtask_hours_actual)); END IF; IF (OLD.prjtask_exp_actual != NEW.prjtask_exp_actual) THEN PERFORM postComment(_cmnttypeid, 'TA', NEW.prjtask_id, 'Actual Expense changed from ' || formatQty(OLD.prjtask_exp_actual) || ' to ' || formatQty(NEW.prjtask_exp_actual)); END IF; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._prjtaskaftertrigger(); publicadminfalse8399212551691191_prjtasktrigger()FUNCTIONdCREATE FUNCTION _prjtasktrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Checks IF (NEW.prjtask_owner_username=getEffectiveXtUser()) THEN IF (NOT checkPrivilege('MaintainAllProjects') AND NOT checkPrivilege('MaintainPersonalProjects')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Projects.'; END IF; ELSIF (NOT checkPrivilege('MaintainAllProjects')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Projects.'; ELSIF (LENGTH(COALESCE(NEW.prjtask_number,'')) = 0) THEN RAISE EXCEPTION 'You must ender a valid number.'; ELSIF (LENGTH(COALESCE(NEW.prjtask_name,'')) = 0) THEN RAISE EXCEPTION 'You must ender a valid name.'; END IF; RETURN NEW; END; $$; (DROP FUNCTION public._prjtasktrigger(); publicadminfalse3992812551691192_prospectafterdeletetrigger()FUNCTIONCREATE FUNCTION _prospectafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF EXISTS(SELECT 1 FROM quhead WHERE quhead_cust_id = OLD.prospect_id) AND NOT EXISTS (SELECT 1 FROM custinfo WHERE cust_id = OLD.prospect_id) THEN RAISE EXCEPTION '[xtuple: deleteProspect, -1]'; END IF; IF (fetchMetricBool('ProspectChangeLog')) THEN PERFORM postComment(cmnttype_id, 'PSPCT', OLD.prospect_id, 'Deleted "' || OLD.prospect_number || '"') FROM cmnttype WHERE (cmnttype_name='ChangeLog'); END IF; RETURN OLD; END; $$; 4DROP FUNCTION public._prospectafterdeletetrigger(); publicadminfalse8399212551691193_prospectaftertrigger()FUNCTIONCREATE FUNCTION _prospectaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _custid INTEGER; _prospectid INTEGER; BEGIN IF (TG_OP = 'INSERT') THEN SELECT crmacct_cust_id, crmacct_prospect_id INTO _custid, _prospectid FROM crmacct WHERE crmacct_number=NEW.prospect_number; IF (_custid > 0 AND _custid != _prospectid) THEN RAISE EXCEPTION '[xtuple: createProspect, -2]'; END IF; IF (_prospectid > 0) THEN RAISE EXCEPTION '[xtuple: createProspect, -3]'; END IF; -- http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-UPSERT-EXAMPLE LOOP UPDATE crmacct SET crmacct_prospect_id=NEW.prospect_id, crmacct_cust_id=NULL, crmacct_name=NEW.prospect_name WHERE crmacct_number=NEW.prospect_number; IF (FOUND) THEN EXIT; END IF; BEGIN INSERT INTO crmacct(crmacct_number, crmacct_name, crmacct_active, crmacct_type, crmacct_prospect_id, crmacct_cntct_id_1 ) VALUES (NEW.prospect_number, NEW.prospect_name, NEW.prospect_active, 'O', NEW.prospect_id, NEW.prospect_cntct_id); EXIT; EXCEPTION WHEN unique_violation THEN -- do nothing, and loop to try the UPDATE again END; END LOOP; /* TODO: default characteristic assignments based on what? */ ELSIF (TG_OP = 'UPDATE') THEN UPDATE crmacct SET crmacct_number = NEW.prospect_number WHERE ((crmacct_prospect_id=NEW.prospect_id) AND (crmacct_number!=NEW.prospect_number)); UPDATE crmacct SET crmacct_name = NEW.prospect_name WHERE ((crmacct_prospect_id=NEW.prospect_id) AND (crmacct_name!=NEW.prospect_name)); END IF; IF (fetchMetricBool('ProspectChangeLog')) THEN SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (_cmnttypeid IS NOT NULL) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'PSPCT', NEW.prospect_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.prospect_active <> NEW.prospect_active) THEN PERFORM postComment(_cmnttypeid, 'PSPCT', NEW.prospect_id, CASE WHEN NEW.prospect_active THEN 'Activated' ELSE 'Deactivated' END); END IF; IF (OLD.prospect_number <> NEW.prospect_number) THEN PERFORM postComment(_cmnttypeid, 'PSPCT', NEW.prospect_id, 'Number changed from "' || OLD.prospect_number || '" to "' || NEW.prospect_number || '"'); END IF; IF (OLD.prospect_name <> NEW.prospect_name) THEN PERFORM postComment(_cmnttypeid, 'PSPCT', NEW.prospect_id, 'Name changed from "' || OLD.prospect_name || '" to "' || NEW.prospect_name || '"'); END IF; IF (OLD.prospect_cntct_id <> NEW.prospect_cntct_id) THEN PERFORM postComment(_cmnttypeid, 'PSPCT', NEW.prospect_id, 'Contact changed from "' || formatCntctName(OLD.prospect_cntct_id) || '" to "' || formatCntctName(NEW.prospect_cntct_id) || '"'); END IF; IF (OLD.prospect_taxauth_id <> NEW.prospect_taxauth_id) THEN PERFORM postComment(_cmnttypeid, 'PSPCT', NEW.prospect_id, 'Tax Authority changed from "' || (SELECT taxauth_code FROM taxauth WHERE taxauth_id=OLD.prospect_taxauth_id) || '" to "' || (SELECT taxauth_code FROM taxauth WHERE taxauth_id=NEW.prospect_taxauth_id) || '"'); END IF; IF (OLD.prospect_salesrep_id <> NEW.prospect_salesrep_id) THEN PERFORM postComment(_cmnttypeid, 'PSPCT', NEW.prospect_id, 'Sales Rep changed from "' || (SELECT salesrep_number FROM salesrep WHERE salesrep_id=OLD.prospect_salesrep_id) || '" to "' || (SELECT salesrep_number FROM salesrep WHERE salesrep_id=NEW.prospect_salesrep_id) || '"'); END IF; IF (OLD.prospect_warehous_id <> NEW.prospect_warehous_id) THEN PERFORM postComment(_cmnttypeid, 'PSPCT', NEW.prospect_id, 'Warehouse changed from "' || (SELECT warehous_code FROM whsinfo WHERE warehous_id=OLD.prospect_warehous_id) || '" to "' || (SELECT warehous_code FROM whsinfo WHERE warehous_id=NEW.prospect_warehous_id) || '"'); END IF; IF (OLD.prospect_taxzone_id <> NEW.prospect_taxzone_id) THEN PERFORM postComment(_cmnttypeid, 'PSPCT', NEW.prospect_id, 'Tax Zone changed from "' || (SELECT taxzone_code FROM taxzone WHERE taxzone_id=OLD.prospect_taxzone_id) || '" to "' || (SELECT taxzone_code FROM taxzone WHERE taxzone_id=NEW.prospect_taxzone_id) || '"'); END IF; END IF; END IF; END IF; RETURN NEW; END; $$; .DROP FUNCTION public._prospectaftertrigger(); publicadminfalse3992812551691194_prospectbeforedeletetrigger()FUNCTIONCREATE FUNCTION _prospectbeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NOT checkPrivilege('MaintainProspectMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Prospects.'; END IF; UPDATE crmacct SET crmacct_prospect_id = NULL WHERE crmacct_prospect_id = OLD.prospect_id; RETURN OLD; END; $$; 5DROP FUNCTION public._prospectbeforedeletetrigger(); publicadminfalse3992812551691195_prospecttrigger()FUNCTION%CREATE FUNCTION _prospecttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NOT checkPrivilege('MaintainProspectMasters')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Prospects.'; END IF; IF (NEW.prospect_number IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Prospect Number.'; END IF; NEW.prospect_number := UPPER(NEW.prospect_number); RETURN NEW; END; $$; )DROP FUNCTION public._prospecttrigger(); publicadminfalse8399212551691196 _prtrigger()FUNCTIONMCREATE FUNCTION _prtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/EULA for the full text of the software license. BEGIN --- clear the number from the issue cache PERFORM clearNumberIssue('PrNumber', NEW.pr_number); RETURN NEW; END; $$; #DROP FUNCTION public._prtrigger(); publicadminfalse8399212551691197_quheadtrigger()FUNCTIONI5CREATE FUNCTION _quheadtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _oldHoldType TEXT; _newHoldType TEXT; _p RECORD; _a RECORD; _w RECORD; _shiptoId INTEGER; _addrId INTEGER; _prjId INTEGER; _check BOOLEAN; _numGen CHAR(1); BEGIN -- Checks SELECT checkPrivilege('MaintainQuotes') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to maintain Quotes.'; END IF; -- If this is imported, check the quote number IF (TG_OP = 'INSERT') THEN IF (NEW.quhead_imported) THEN SELECT fetchMetricText('QUNumberGeneration') INTO _numGen; IF ((NEW.quhead_number IS NULL) AND (_numGen='M')) THEN RAISE EXCEPTION 'You must supply a Quote Number.'; ELSE IF ((NEW.quhead_number IS NOT NULL) AND (_numGen='A')) THEN RAISE EXCEPTION 'You may not supply a new Quote Number xTuple will generate the number.'; ELSE IF ((NEW.quhead_number IS NULL) AND (_numGen='O')) THEN SELECT fetchqunumber() INTO NEW.quhead_number; ELSE IF (NEW.quhead_number IS NULL) THEN SELECT fetchsonumber() INTO NEW.quhead_number; END IF; END IF; END IF; END IF; END IF; IF (fetchMetricText('QUNumberGeneration') IN ('A','O')) THEN --- clear the number from the issue cache PERFORM clearNumberIssue('QuNumber', NEW.quhead_number); ELSIF (fetchMetricText('QUNumberGeneration') = 'S') THEN --- clear the number from the issue cache PERFORM clearNumberIssue('SoNumber', NEW.quhead_number); END IF; ELSE IF (TG_OP = 'UPDATE') THEN IF (NEW.quhead_number <> OLD.quhead_number) THEN RAISE EXCEPTION 'The order number may not be changed.'; END IF; END IF; END IF; IF (TG_OP IN ('INSERT','UPDATE')) THEN -- Get Customer data IF (NEW.quhead_shipto_id IS NULL) THEN SELECT * INTO _p FROM ( SELECT cust_number,cust_usespos,cust_blanketpos,cust_ffbillto, cust_ffshipto,cust_name,cust_salesrep_id,cust_terms_id,cust_shipvia, cust_commprcnt,cust_curr_id,cust_taxzone_id, addr_line1,addr_line2,addr_line3,addr_city,addr_state,addr_postalcode,addr_country, shipto_id,shipto_addr_id,shipto_name,shipto_salesrep_id,shipto_shipvia, shipto_shipchrg_id,shipto_shipform_id,shipto_commission,shipto_taxzone_id FROM custinfo LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) LEFT OUTER JOIN shiptoinfo ON ((cust_id=shipto_cust_id) AND shipto_default) WHERE (cust_id=NEW.quhead_cust_id) UNION SELECT prospect_number,false,false,true, true,prospect_name,prospect_salesrep_id,null,null, null,null,prospect_taxzone_id, addr_line1,addr_line2,addr_line3,addr_city,addr_state,addr_postalcode,addr_country, null,null,null,null,null, null,null,null,null FROM prospect LEFT OUTER JOIN cntct ON (prospect_cntct_id=cntct_id) LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) WHERE (prospect_id=NEW.quhead_cust_id)) AS data; ELSE SELECT cust_creditstatus,cust_number,cust_usespos,cust_blanketpos,cust_ffbillto, cust_ffshipto,cust_name,cust_salesrep_id,cust_terms_id,cust_shipvia, cust_shipchrg_id,cust_shipform_id,cust_commprcnt,cust_curr_id,cust_taxzone_id, addr_line1,addr_line2,addr_line3,addr_city,addr_state,addr_postalcode,addr_country, shipto_id,shipto_addr_id,shipto_name,shipto_salesrep_id,shipto_shipvia, shipto_shipchrg_id,shipto_shipform_id,shipto_commission,shipto_taxzone_id INTO _p FROM shiptoinfo,custinfo LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) WHERE ((cust_id=NEW.quhead_cust_id) AND (shipto_id=shipto_id)); END IF; -- If there is customer data, then we can get to work IF (FOUND) THEN -- Only check PO number for imports because UI checks when whole quote is saved IF (TG_OP = 'INSERT') THEN -- Set to defaults if values not provided NEW.quhead_shipto_id := COALESCE(NEW.quhead_shipto_id,_p.shipto_id); NEW.quhead_salesrep_id := COALESCE(NEW.quhead_salesrep_id,_p.shipto_salesrep_id,_p.cust_salesrep_id); NEW.quhead_terms_id := COALESCE(NEW.quhead_terms_id,_p.cust_terms_id); NEW.quhead_shipvia := COALESCE(NEW.quhead_shipvia,_p.shipto_shipvia,_p.cust_shipvia); NEW.quhead_commission := COALESCE(NEW.quhead_commission,_p.shipto_commission,_p.cust_commprcnt); NEW.quhead_quotedate := COALESCE(NEW.quhead_quotedate,current_date); NEW.quhead_packdate := COALESCE(NEW.quhead_packdate,NEW.quhead_quotedate); NEW.quhead_curr_id := COALESCE(NEW.quhead_curr_id,_p.cust_curr_id,basecurrid()); NEW.quhead_taxzone_id := COALESCE(NEW.quhead_taxzone_id,_p.shipto_taxzone_id,_p.cust_taxzone_id); NEW.quhead_freight := COALESCE(NEW.quhead_freight,0); NEW.quhead_custponumber := COALESCE(NEW.quhead_custponumber,''); NEW.quhead_ordercomments := COALESCE(NEW.quhead_ordercomments,''); NEW.quhead_shipcomments := COALESCE(NEW.quhead_shipcomments,''); NEW.quhead_shiptophone := COALESCE(NEW.quhead_shiptophone,''); NEW.quhead_misc := COALESCE(NEW.quhead_misc,0); NEW.quhead_misc_descrip := COALESCE(NEW.quhead_misc_descrip,''); IF ((NEW.quhead_warehous_id IS NULL) OR (NEW.quhead_fob IS NULL)) THEN IF (NEW.quhead_warehous_id IS NULL) THEN SELECT warehous_id,warehous_fob INTO _w FROM usrpref, whsinfo WHERE ((warehous_id=CAST(usrpref_value AS INTEGER)) AND (warehous_shipping) AND (warehous_active) AND (usrpref_username=getEffectiveXtUser()) AND (usrpref_name='PreferredWarehouse')); ELSE SELECT warehous_id,warehous_fob INTO _w FROM whsinfo WHERE (warehous_id=NEW.quhead_warehous_id); END IF; IF (FOUND) THEN NEW.quhead_warehous_id := COALESCE(NEW.quhead_warehous_id,_w.warehous_id); NEW.quhead_fob := COALESCE(NEW.quhead_fob,_w.warehous_fob); END IF; END IF; END IF; --Auto create project if applicable IF ((TG_OP = 'INSERT') AND (NEW.quhead_prj_id=-1)) THEN SELECT fetchMetricBool('AutoCreateProjectsForOrders') INTO _check; IF (_check) THEN SELECT NEXTVAL('prj_prj_id_seq') INTO _prjId; NEW.quhead_prj_id := _prjId; INSERT INTO prj (prj_id, prj_number, prj_name, prj_descrip, prj_so, prj_wo, prj_po) VALUES(_prjId, NEW.quhead_number, NEW.quhead_number, 'Auto Generated Project from Quote.', TRUE, TRUE, TRUE); END IF; END IF; -- Deal with Billing Address IF (TG_OP = 'INSERT') THEN IF (_p.cust_ffbillto) THEN -- If they didn't supply data, we'll put in the bill to address NEW.quhead_billtoname=COALESCE(NEW.quhead_billtoname,_p.cust_name,''); NEW.quhead_billtoaddress1=COALESCE(NEW.quhead_billtoaddress1,_p.addr_line1,''); NEW.quhead_billtoaddress2=COALESCE(NEW.quhead_billtoaddress2,_p.addr_line2,''); NEW.quhead_billtoaddress3=COALESCE(NEW.quhead_billtoaddress3,_p.addr_line3,''); NEW.quhead_billtocity=COALESCE(NEW.quhead_billtocity,_p.addr_city,''); NEW.quhead_billtostate=COALESCE(NEW.quhead_billtostate,_p.addr_state,''); NEW.quhead_billtozip=COALESCE(NEW.quhead_billtozip,_p.addr_postalcode,''); NEW.quhead_billtocountry=COALESCE(NEW.quhead_billtocountry,_p.addr_country,''); ELSE -- Free form not allowed, we're going to put in the address regardless NEW.quhead_billtoname=COALESCE(_p.cust_name,''); NEW.quhead_billtoaddress1=COALESCE(_p.addr_line1,''); NEW.quhead_billtoaddress2=COALESCE(_p.addr_line2,''); NEW.quhead_billtoaddress3=COALESCE(_p.addr_line3,''); NEW.quhead_billtocity=COALESCE(_p.addr_city,''); NEW.quhead_billtostate=COALESCE(_p.addr_state,''); NEW.quhead_billtozip=COALESCE(_p.addr_postalcode,''); NEW.quhead_billtocountry=COALESCE(_p.addr_country,''); END IF; END IF; -- Now let's look at Shipto Address -- If there's nothing in the address fields and there is a shipto id -- or there is a default address available, let's put in some shipto address data IF ((TG_OP = 'INSERT') AND NOT ((NEW.quhead_shipto_id IS NULL) AND NOT _p.cust_ffshipto) AND (NEW.quhead_shiptoname IS NULL) AND (NEW.quhead_shiptoaddress1 IS NULL) AND (NEW.quhead_shiptoaddress2 IS NULL) AND (NEW.quhead_shiptoaddress3 IS NULL) AND (NEW.quhead_shiptocity IS NULL) AND (NEW.quhead_shiptostate IS NULL) AND (NEW.quhead_shiptocountry IS NULL)) THEN IF ((NEW.quhead_shipto_id IS NULL) AND (_p.shipto_id IS NOT NULL)) THEN _shiptoId := _p.shipto_addr_id; ELSE _shiptoId := NEW.quhead_shipto_id; END IF; SELECT * INTO _a FROM shiptoinfo, addr WHERE ((shipto_id=_shiptoId) AND (addr_id=shipto_addr_id)); NEW.quhead_shiptoname := COALESCE(_p.shipto_name,''); NEW.quhead_shiptoaddress1 := COALESCE(_a.addr_line1,''); NEW.quhead_shiptoaddress2 := COALESCE(_a.addr_line2,''); NEW.quhead_shiptoaddress3 := COALESCE(_a.addr_line3,''); NEW.quhead_shiptocity := COALESCE(_a.addr_city,''); NEW.quhead_shiptostate := COALESCE(_a.addr_state,''); NEW.quhead_shiptozipcode := COALESCE(_a.addr_postalcode,''); NEW.quhead_shiptocountry := COALESCE(_a.addr_country,''); ELSE IF (_p.cust_ffshipto) THEN -- Use Address Save function to see if the new address entered matches -- data for the shipto number. If not that will insert new address for CRM SELECT SaveAddr( NULL, NULL, NEW.quhead_shiptoaddress1, NEW.quhead_shiptoaddress2, NEW.quhead_shiptoaddress3, NEW.quhead_shiptocity, NEW.quhead_shiptostate, NEW.quhead_shiptozipcode, NEW.quhead_shiptocountry, 'CHANGEONE') INTO _addrId; SELECT shipto_addr_id INTO _shiptoid FROM shiptoinfo WHERE (shipto_id=NEW.quhead_shipto_id); -- If the address passed doesn't match shipto address, then it's something else IF (_shiptoid <> _addrId) THEN NEW.quhead_shipto_id := NULL; END IF; ELSE SELECT quhead_shipto_id INTO _shiptoid FROM quhead WHERE (quhead_id=NEW.quhead_id); -- Get the shipto address IF (COALESCE(NEW.quhead_shipto_id,-1) <> COALESCE(_shiptoid,-1)) THEN SELECT * INTO _a FROM shiptoinfo LEFT OUTER JOIN cntct ON (shipto_cntct_id=cntct_id) LEFT OUTER JOIN addr ON (shipto_addr_id=addr_id) WHERE (shipto_id=NEW.quhead_shipto_id); IF (FOUND) THEN -- Free form not allowed so we're going to make sure address matches Shipto data NEW.quhead_shiptoname := COALESCE(_a.shipto_name,''); NEW.quhead_shiptophone := COALESCE(_a.cntct_phone,''); NEW.quhead_shiptoaddress1 := COALESCE(_a.addr_line1,''); NEW.quhead_shiptoaddress2 := COALESCE(_a.addr_line2,''); NEW.quhead_shiptoaddress3 := COALESCE(_a.addr_line3,''); NEW.quhead_shiptocity := COALESCE(_a.addr_city,''); NEW.quhead_shiptostate := COALESCE(_a.addr_state,''); NEW.quhead_shiptozipcode := COALESCE(_a.addr_postalcode,''); NEW.quhead_shiptocountry := COALESCE(_a.addr_country,''); ELSE -- If no shipto data and free form not allowed, this won't work RAISE EXCEPTION 'Free form Shipto is not allowed on this Customer. You must supply a valid Shipto ID.'; END IF; END IF; END IF; END IF; END IF; END IF; IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='SalesOrderChangeLog') ) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'Q', NEW.quhead_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.quhead_terms_id <> NEW.quhead_terms_id) THEN PERFORM postComment( _cmnttypeid, 'Q', NEW.quhead_id, ('Terms Changed from "' || oldterms.terms_code || '" to "' || newterms.terms_code || '"') ) FROM terms AS oldterms, terms AS newterms WHERE ( (oldterms.terms_id=OLD.quhead_terms_id) AND (newterms.terms_id=NEW.quhead_terms_id) ); END IF; ELSIF (TG_OP = 'DELETE') THEN DELETE FROM comment WHERE ( (comment_source='Q') AND (comment_source_id=OLD.quhead_id) ); END IF; END IF; END IF; IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE RETURN NEW; END IF; END; $$; 'DROP FUNCTION public._quheadtrigger(); publicadminfalse8399212551691199_quitemaftertrigger()FUNCTIONCREATE FUNCTION _quitemaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check NUMERIC; BEGIN --If auto calculate freight, recalculate quhead_freight IF (SELECT quhead_calcfreight FROM quhead WHERE (quhead_id=NEW.quitem_quhead_id)) THEN UPDATE quhead SET quhead_freight = (SELECT SUM(freightdata_total) FROM freightDetail('QU', quhead_id, quhead_cust_id, quhead_shipto_id, quhead_quotedate, quhead_shipvia, quhead_curr_id)) WHERE quhead_id=NEW.quitem_quhead_id; END IF; RETURN NEW; END; $$; ,DROP FUNCTION public._quitemaftertrigger(); publicadminfalse8399212551691200_quitembeforetrigger()FUNCTIONCREATE FUNCTION _quitembeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check NUMERIC; _itemNumber TEXT; BEGIN -- Check IF (NEW.quitem_scheddate IS NULL) THEN RAISE EXCEPTION 'A schedule date is required.'; END IF; -- If this is imported, go ahead and insert default characteristics IF ((TG_OP = 'INSERT') AND NEW.quitem_imported) THEN PERFORM updateCharAssignment('SI', NEW.quitem_id, char_id, charass_value) FROM ( SELECT DISTINCT char_id, char_name, charass_value FROM charass, char, itemsite, item WHERE ((itemsite_id=NEW.quitem_itemsite_id) AND (itemsite_item_id=item_id) AND (charass_target_type='I') AND (charass_target_id=item_id) AND (charass_default) AND (char_id=charass_char_id)) ORDER BY char_name) AS data; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._quitembeforetrigger(); publicadminfalse3992812551691201_quitemtrigger()FUNCTION*CREATE FUNCTION _quitemtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _check BOOLEAN; BEGIN -- Checks SELECT checkPrivilege('MaintainQuotes') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to maintain Quotes.'; END IF; IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='SalesOrderChangeLog') ) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); ELSE _cmnttypeid := -1; END IF; IF (TG_OP = 'INSERT') THEN IF (_cmnttypeid <> -1) THEN PERFORM postComment(_cmnttypeid, 'QI', NEW.quitem_id, 'Created'); END IF; RETURN NEW; ELSE IF (TG_OP = 'DELETE') THEN DELETE FROM comment WHERE ( (comment_source='QI') AND (comment_source_id=OLD.quitem_id) ); DELETE FROM charass WHERE ((charass_target_type='QI') AND (charass_target_id=OLD.quitem_id)); RETURN OLD; ELSE IF (TG_OP = 'UPDATE') THEN IF (NEW.quitem_qtyord <> OLD.quitem_qtyord) THEN IF (_cmnttypeid <> -1) THEN PERFORM postComment( _cmnttypeid, 'QI', NEW.quitem_id, ( 'Changed Qty. Ordered from ' || formatQty(OLD.quitem_qtyord) || ' to ' || formatQty(NEW.quitem_qtyord) ) ); END IF; END IF; IF (NEW.quitem_scheddate <> OLD.quitem_scheddate) THEN IF (_cmnttypeid <> -1) THEN PERFORM postComment( _cmnttypeid, 'QI', NEW.quitem_id, ( 'Changed Sched. Date from ' || formatDate(OLD.quitem_scheddate) || ' to ' || formatDate(NEW.quitem_scheddate)) ); END IF; END IF; END IF; END IF; END IF; -- NEW.quitem_lastupdated = CURRENT_TIMESTAMP; RETURN NEW; END; $$; 'DROP FUNCTION public._quitemtrigger(); publicadminfalse8399212551691202_recuraftertrigger()FUNCTIONCREATE FUNCTION _recuraftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _parentid INTEGER; _parenttype TEXT; BEGIN IF (TG_OP = 'DELETE') THEN IF (UPPER(OLD.recur_parent_type) = 'TODO') THEN UPDATE todoitem SET todoitem_recurring_todoitem_id=NULL WHERE (todoitem_recurring_todoitem_id=OLD.recur_parent_id); END IF; RETURN OLD; END IF; RETURN NEW; END; $$; +DROP FUNCTION public._recuraftertrigger(); publicadminfalse8399212551691203_reporttrigger()FUNCTIONCREATE FUNCTION _reporttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN NEW.report_loaddate = CURRENT_TIMESTAMP; RETURN NEW; END; $$; 'DROP FUNCTION public._reporttrigger(); publicadminfalse8399212551746965_salesrepafterdeletetrigger()FUNCTIONCREATE FUNCTION _salesrepafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN IF (SELECT fetchMetricValue('DefaultSalesRep') = OLD.salesrep_id) THEN RAISE EXCEPTION 'Cannot delete the default Sales Rep [xtuple: salesrep, -1, %]', OLD.salesrep_number; END IF; PERFORM postComment('ChangeLog', 'SR', OLD.salesrep_id, 'Deleted "' || OLD.salesrep_number || '"'); RETURN OLD; END; $$; 4DROP FUNCTION public._salesrepafterdeletetrigger(); publicadminfalse8399212551691204_salesrepaftertrigger()FUNCTIONg CREATE FUNCTION _salesrepaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN IF (TG_OP = 'INSERT') THEN -- http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-UPSERT-EXAMPLE LOOP UPDATE crmacct SET crmacct_salesrep_id=NEW.salesrep_id, crmacct_name=NEW.salesrep_name WHERE crmacct_number=NEW.salesrep_number; IF (FOUND) THEN EXIT; END IF; BEGIN INSERT INTO crmacct(crmacct_number, crmacct_name, crmacct_active, crmacct_type, crmacct_salesrep_id ) VALUES (NEW.salesrep_number, NEW.salesrep_name, NEW.salesrep_active, 'I', NEW.salesrep_id); EXIT; EXCEPTION WHEN unique_violation THEN -- do nothing, and loop to try the UPDATE again END; END LOOP; -- TODO: default characteristic assignments? ELSIF (TG_OP = 'UPDATE') THEN UPDATE crmacct SET crmacct_number = NEW.salesrep_number WHERE ((crmacct_salesrep_id=NEW.salesrep_id) AND (crmacct_number!=NEW.salesrep_number)); UPDATE crmacct SET crmacct_name = NEW.salesrep_name WHERE ((crmacct_salesrep_id=NEW.salesrep_id) AND (crmacct_name!=NEW.salesrep_name)); END IF; IF (fetchMetricBool('SalesRepChangeLog')) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment('ChangeLog', 'SR', NEW.salesrep_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.salesrep_active <> NEW.salesrep_active) THEN PERFORM postComment('ChangeLog', 'SR', NEW.salesrep_id, CASE WHEN NEW.salesrep_active THEN 'Activated' ELSE 'Deactivated' END); END IF; IF (OLD.salesrep_number <> NEW.salesrep_number) THEN PERFORM postComment('ChangeLog', 'SR', NEW.salesrep_id, 'Number changed from "' || OLD.salesrep_number || '" to "' || NEW.salesrep_number || '"'); END IF; IF (OLD.salesrep_name <> NEW.salesrep_name) THEN PERFORM postComment('ChangeLog', 'SR', NEW.salesrep_id, 'Name changed from "' || OLD.salesrep_name || '" to "' || NEW.salesrep_name || '"'); END IF; IF (OLD.salesrep_commission <> NEW.salesrep_commission) THEN PERFORM postComment('ChangeLog', 'SR', NEW.salesrep_id, 'Commission changed from "' || OLD.salesrep_commission || '" to "' || NEW.salesrep_commission || '"'); END IF; IF (OLD.salesrep_method <> NEW.salesrep_method) THEN PERFORM postComment('ChangeLog', 'SR', NEW.salesrep_id, 'Method changed from "' || OLD.salesrep_method || '" to "' || NEW.salesrep_method || '"'); END IF; END IF; END IF; RETURN NEW; END; $$; .DROP FUNCTION public._salesrepaftertrigger(); publicadminfalse8399212551691205_salesrepbeforetrigger()FUNCTIONCREATE FUNCTION _salesrepbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF NOT (checkPrivilege('MaintainSalesReps')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Sales Reps.'; END IF; IF (TG_OP IN ('INSERT', 'UPDATE')) THEN IF (NEW.salesrep_number IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Sales Rep Number.'; END IF; IF (NEW.salesrep_commission IS NULL) THEN RAISE EXCEPTION 'You must supply a Commission Rate for this Sales Rep.'; END IF; IF (TG_OP = 'INSERT' AND fetchMetricText('CRMAccountNumberGeneration') IN ('A','O') AND isNumeric(NEW.salesrep_number)) THEN --- clear the number from the issue cache PERFORM clearNumberIssue('CRMAccountNumber', NEW.salesrep_number); END IF; NEW.salesrep_number = UPPER(NEW.salesrep_number); -- deprecated column salesrep_emp_id -- TODO: will this prevent breaking the crmacct-emp relationship? IF (TG_OP = 'UPDATE') THEN SELECT crmacct_emp_id INTO NEW.salesrep_emp_id FROM crmacct WHERE crmacct_salesrep_id = NEW.salesrep_id; END IF; ELSIF (TG_OP = 'DELETE') THEN UPDATE crmacct SET crmacct_salesrep_id = NULL WHERE crmacct_salesrep_id = OLD.salesrep_id; RETURN OLD; END IF; RETURN NEW; END; $$; /DROP FUNCTION public._salesrepbeforetrigger(); publicadminfalse3992812551761197_saletypebeforedeletetrigger()FUNCTIONCREATE FUNCTION _saletypebeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check TEXT; BEGIN -- Check to see if any sales orders are assigned to the passed saletype SELECT cohead_number INTO _check FROM cohead WHERE (cohead_saletype_id=OLD.saletype_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Assigned to Sales Order % and possibly more. [xtuple: deletesaletype, -1]', _check; END IF; -- Check to see if any quotes are assigned to the passed saletype SELECT quhead_number INTO _check FROM quhead WHERE (quhead_saletype_id=OLD.saletype_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Assigned to Quote % and possibly more. [xtuple: deletesaletype, -2]', _check; END IF; -- Check to see if any invoice are assigned to the passed saletype SELECT invchead_invcnumber INTO _check FROM invchead WHERE (invchead_saletype_id=OLD.saletype_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Assigned to Invoice % and possibly more. [xtuple: deletesaletype, -3]', _check; END IF; -- Check to see if any credit memos are assigned to the passed saletype SELECT cmhead_number INTO _check FROM cmhead WHERE (cmhead_saletype_id=OLD.saletype_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Assigned to Credit Memo % and possibly more. [xtuple: deletesaletype, -4]', _check; END IF; -- Check to see if any return ruthorizations are assigned to the passed saletype IF (fetchMetricBool('EnableReturnAuth')) THEN SELECT rahead_number INTO _check FROM rahead WHERE (rahead_saletype_id=OLD.saletype_id) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Assigned to Return Authorization % and possibly more returns. [xtuple: deleteSaleType, -5]', _check; END IF; END IF; RETURN OLD; END; $$; 5DROP FUNCTION public._saletypebeforedeletetrigger(); publicadminfalse8399212551691206_shipdatasumtrigger()FUNCTIONiCREATE FUNCTION _shipdatasumtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (LENGTH(TRIM(NEW.shipdatasum_shiphead_number)) = 0) THEN NEW.shipdatasum_shiphead_number = NULL; END IF; RETURN NEW; END; $$; ,DROP FUNCTION public._shipdatasumtrigger(); publicadminfalse8399212551691207_shipdatatrigger()FUNCTIONCREATE FUNCTION _shipdatatrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _newShipdata_cohead_number INTEGER; _shipdatasum_shipper TEXT; _rows INTEGER; _cohead_id INTEGER; _shiphead_number TEXT; _headcount INTEGER; BEGIN -- This is where the shipper is identified and may need to be changed NEW.shipdata_cohead_number := TRIM(NEW.shipdata_cohead_number); IF (substring(NEW.shipdata_cosmisc_tracknum from 1 for 2) = '1Z') THEN _shipdatasum_shipper := 'UPS'; ELSE _shipdatasum_shipper := 'UNKNOWN'; END IF; IF (LENGTH(TRIM(NEW.shipdata_shiphead_number)) = 0) THEN NEW.shipdata_shiphead_number := NULL; END IF; IF (NEW.shipdata_cosmisc_tracknum = NEW.shipdata_cosmisc_packnum_tracknum) THEN IF (NEW.shipdata_void_ind = 'Y') THEN -- Delete the current shipdatasum DELETE FROM shipdatasum WHERE ((shipdatasum_cohead_number = NEW.shipdata_cohead_number) AND (shipdatasum_cosmisc_tracknum = NEW.shipdata_cosmisc_tracknum)); ELSIF (TG_OP = 'INSERT') THEN -- RAISE NOTICE 'Getting cohead_id (%)', NEW.shipdata_cohead_number; IF (NEW.shipdata_shiphead_number IS NULL) THEN SELECT cohead_id INTO _cohead_id FROM cohead WHERE cohead_number = NEW.shipdata_cohead_number; IF (FOUND) THEN -- RAISE NOTICE 'Getting shiphead number (%)', _cohead_id; SELECT count(shiphead_order_id), MAX(shiphead_number) INTO _headcount, _shiphead_number FROM shiphead WHERE ((shiphead_tracknum IS NULL OR shiphead_tracknum = '') AND ( shiphead_order_type = 'SO' and shiphead_order_id = _cohead_id) ); IF (_headcount = 1) THEN -- RAISE NOTICE 'Updating Shiphead Number (%)', _shiphead_number; NEW.shipdata_shiphead_number = _shiphead_number; ELSIF (_headcount > 1) THEN -- Trap for potential workflow problem. Can only infer shiphead from sales order number -- if shipping one at a time RAISE EXCEPTION 'Multiple shipments exist for this order. Please provide a specific a shipment number.'; END IF; END IF; END IF; INSERT INTO shipdatasum (shipdatasum_cohead_number, shipdatasum_cosmisc_tracknum, shipdatasum_cosmisc_packnum_tracknum, shipdatasum_weight, shipdatasum_base_freight, shipdatasum_total_freight, shipdatasum_base_freight_curr_id, shipdatasum_total_freight_curr_id, shipdatasum_shipper, shipdatasum_billing_option, shipdatasum_package_type, shipdatasum_shiphead_number) VALUES (NEW.shipdata_cohead_number, NEW.shipdata_cosmisc_tracknum, NEW.shipdata_cosmisc_packnum_tracknum, NEW.shipdata_weight, NEW.shipdata_base_freight, NEW.shipdata_total_freight, NEW.shipdata_base_freight_curr_id, NEW.shipdata_total_freight_curr_id, _shipdatasum_shipper, NEW.shipdata_billing_option, NEW.shipdata_package_type, NEW.shipdata_shiphead_number); ELSIF (TG_OP = 'UPDATE') THEN UPDATE shipdatasum SET shipdatasum_cohead_number=NEW.shipdata_cohead_number, shipdatasum_cosmisc_tracknum=NEW.shipdata_cosmisc_tracknum, shipdatasum_cosmisc_packnum_tracknum=NEW.shipdata_cosmisc_packnum_tracknum, shipdatasum_weight=NEW.shipdata_weight, shipdatasum_base_freight=NEW.shipdata_base_freight, shipdatasum_total_freight=NEW.shipdata_total_freight, shipdatasum_base_freight_curr_id=NEW.shipdata_base_freight_curr_id, shipdatasum_total_freight_curr_id=NEW.shipdata_total_freight_curr_id, shipdatasum_shipper=_shipdatasum_shipper, shipdatasum_billing_option=NEW.shipdata_billing_option, shipdatasum_package_type=NEW.shipdata_package_type, shipdatasum_shiphead_number=NEW.shipdata_shiphead_number WHERE ((TRIM(shipdatasum_cohead_number)=TRIM(OLD.shipdata_cohead_number)) AND (TRIM(shipdatasum_cosmisc_tracknum)=TRIM(OLD.shipdata_cosmisc_tracknum)) AND (TRIM(shipdatasum_cosmisc_packnum_tracknum)=TRIM(OLD.shipdata_cosmisc_packnum_tracknum))); GET DIAGNOSTICS _rows = ROW_COUNT; IF (_rows <= 0) THEN INSERT INTO shipdatasum (shipdatasum_cohead_number, shipdatasum_cosmisc_tracknum, shipdatasum_cosmisc_packnum_tracknum, shipdatasum_weight, shipdatasum_base_freight, shipdatasum_total_freight, shipdatasum_base_freight_curr_id, shipdatasum_total_freight_curr_id, shipdatasum_shipper, shipdatasum_billing_option, shipdatasum_package_type, shipdatasum_shiphead_number) VALUES (NEW.shipdata_cohead_number, NEW.shipdata_cosmisc_tracknum, NEW.shipdata_cosmisc_packnum_tracknum, NEW.shipdata_weight, NEW.shipdata_base_freight, NEW.shipdata_total_freight, NEW.shipdata_base_freight_curr_id, NEW.shipdata_total_freight_curr_id, _shipdatasum_shipper, NEW.shipdata_billing_option, NEW.shipdata_package_type, NEW.shipdata_shiphead_number); END IF; END IF; END IF; RETURN NEW; END; $$; )DROP FUNCTION public._shipdatatrigger(); publicadminfalse8399212551746969_shipformafterdeletetrigger()FUNCTIONCREATE FUNCTION _shipformafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (fetchMetricValue('DefaultShipFormId') = OLD.shipform_id) THEN RAISE EXCEPTION 'Cannot delete the default Shipping Form [xtuple: shipform, -1, %, %]', OLD.shipform_name, OLD.shipform_report_name; END IF; RETURN OLD; END; $$; 4DROP FUNCTION public._shipformafterdeletetrigger(); publicadminfalse8399212551691208_shipheadbeforetrigger()FUNCTIONCREATE FUNCTION _shipheadbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF ((TG_OP = 'INSERT') OR (TG_OP = 'UPDATE')) THEN IF (NEW.shiphead_order_type = 'SO' AND NEW.shiphead_order_id IN (SELECT cohead_id FROM cohead)) THEN RETURN NEW; ELSEIF (NEW.shiphead_order_type = 'TO' AND NEW.shiphead_order_id IN (SELECT tohead_id FROM tohead)) THEN RETURN NEW; END IF; RAISE EXCEPTION '% with id % does not exist', NEW.shiphead_order_type, NEW.shiphead_order_id; RETURN OLD; END IF; RETURN NEW; END; $$; /DROP FUNCTION public._shipheadbeforetrigger(); publicadminfalse8399212551691209_shiptoinfoaftertrigger()FUNCTIONwCREATE FUNCTION _shiptoinfoaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN IF (NEW.shipto_default) THEN UPDATE shiptoinfo SET shipto_default = false WHERE ((shipto_cust_id=NEW.shipto_cust_id) AND (shipto_id <> NEW.shipto_id)); END IF; IF (SELECT fetchMetricBool('CustomerChangeLog')) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'C', NEW.shipto_cust_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.shipto_name <> NEW.shipto_name) THEN PERFORM postComment( _cmnttypeid, 'C', NEW.shipto_cust_id, ( NEW.shipto_name || ': Ship To Name Changed from "' || COALESCE(OLD.shipto_name, '') || '" to "' || COALESCE(NEW.shipto_name, '') || '"' ) ); END IF; IF (OLD.shipto_shipvia <> NEW.shipto_shipvia) THEN PERFORM postComment( _cmnttypeid, 'C', NEW.shipto_cust_id, ( NEW.shipto_name || ': Ship To ShipVia Changed from "' || COALESCE(OLD.shipto_shipvia, '') || '" to "' || COALESCE(NEW.shipto_shipvia, '') || '"' ) ); END IF; IF (COALESCE(OLD.shipto_taxzone_id, -1) <> COALESCE(NEW.shipto_taxzone_id, -1)) THEN PERFORM postComment( _cmnttypeid, 'C', NEW.shipto_cust_id, ( NEW.shipto_name || ': Ship To Tax Zone Changed from "' || COALESCE((SELECT taxzone_code FROM taxzone WHERE taxzone_id=OLD.shipto_taxzone_id), 'None') || '" to "' || COALESCE((SELECT taxzone_code FROM taxzone WHERE taxzone_id=NEW.shipto_taxzone_id), 'None') || '"' ) ); END IF; IF (OLD.shipto_shipzone_id <> NEW.shipto_shipzone_id) THEN PERFORM postComment( _cmnttypeid, 'C', NEW.shipto_cust_id, ( NEW.shipto_name || ': Ship To Shipping Zone Changed from "' || (SELECT shipzone_name FROM shipzone WHERE shipzone_id=OLD.shipto_shipzone_id) || '" to "' || (SELECT shipzone_name FROM shipzone WHERE shipzone_id=NEW.shipto_shipzone_id) || '"' ) ); END IF; IF (OLD.shipto_salesrep_id <> NEW.shipto_salesrep_id) THEN PERFORM postComment( _cmnttypeid, 'C', NEW.shipto_cust_id, ( NEW.shipto_name || ': Ship To Sales Rep Changed from "' || (SELECT salesrep_name FROM salesrep WHERE salesrep_id=OLD.shipto_salesrep_id) || '" to "' || (SELECT salesrep_name FROM salesrep WHERE salesrep_id=NEW.shipto_salesrep_id) || '"' ) ); END IF; IF (OLD.shipto_active <> NEW.shipto_active) THEN IF (NEW.shipto_active) THEN PERFORM postComment(_cmnttypeid, 'C', NEW.shipto_cust_id, (NEW.shipto_name || ': Ship To Activated')); ELSE PERFORM postComment(_cmnttypeid, 'C', NEW.shipto_cust_id, (NEW.shipto_name || ': Ship To Deactivated')); END IF; END IF; END IF; END IF; END IF; RETURN NEW; END; $$; 0DROP FUNCTION public._shiptoinfoaftertrigger(); publicadminfalse8399212551746973_shipviaafterdeletetrigger()FUNCTIONCREATE FUNCTION _shipviaafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (SELECT fetchMetricValue('DefaultShipViaId') = OLD.shipvia_id) THEN RAISE EXCEPTION 'Cannot delete the default Ship-Via [xtuple: shipvia, -1, %]', OLD.shipvia_code; END IF; RETURN OLD; END; $$; 3DROP FUNCTION public._shipviaafterdeletetrigger(); publicadminfalse8399212551691210_sltransaltertrigger()FUNCTION CREATE FUNCTION _sltransaltertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _externalCompany BOOLEAN := false; _updated BOOLEAN := false; BEGIN IF(TG_OP='DELETE') THEN RAISE EXCEPTION 'You may not delete Journal Transactions once they have been created.'; ELSIF (TG_OP = 'UPDATE') THEN IF(OLD.sltrans_id != NEW.sltrans_id) THEN _updated := true; ELSIF(OLD.sltrans_date != NEW.sltrans_date) THEN _updated := true; ELSIF(OLD.sltrans_accnt_id != NEW.sltrans_accnt_id) THEN _updated := true; ELSIF(OLD.sltrans_amount != NEW.sltrans_amount) THEN _updated := true; ELSIF(OLD.sltrans_username != NEW.sltrans_username) THEN _updated := true; ELSIF( (OLD.sltrans_sequence IS NULL AND NEW.sltrans_sequence IS NOT NULL) OR (OLD.sltrans_sequence IS NOT NULL AND NEW.sltrans_sequence IS NULL) OR (COALESCE(OLD.sltrans_sequence,0) != COALESCE(NEW.sltrans_sequence,0)) ) THEN _updated := true; ELSIF( (OLD.sltrans_created IS NULL AND NEW.sltrans_created IS NOT NULL) OR (OLD.sltrans_created IS NOT NULL AND NEW.sltrans_created IS NULL) OR (COALESCE(OLD.sltrans_created,now()) != COALESCE(NEW.sltrans_created,now())) ) THEN _updated := true; ELSIF( (OLD.sltrans_source IS NULL AND NEW.sltrans_source IS NOT NULL) OR (OLD.sltrans_source IS NOT NULL AND NEW.sltrans_source IS NULL) OR (COALESCE(OLD.sltrans_source,'') != COALESCE(NEW.sltrans_source,'')) ) THEN _updated := true; ELSIF( (OLD.sltrans_docnumber IS NULL AND NEW.sltrans_docnumber IS NOT NULL) OR (OLD.sltrans_docnumber IS NOT NULL AND NEW.sltrans_docnumber IS NULL) OR (COALESCE(OLD.sltrans_docnumber,'') != COALESCE(NEW.sltrans_docnumber,'')) ) THEN _updated := true; ELSIF( (OLD.sltrans_doctype IS NULL AND NEW.sltrans_doctype IS NOT NULL) OR (OLD.sltrans_doctype IS NOT NULL AND NEW.sltrans_doctype IS NULL) OR (COALESCE(OLD.sltrans_doctype,'') != COALESCE(NEW.sltrans_doctype,'')) ) THEN _updated := true; END IF; IF(_updated) THEN RAISE EXCEPTION 'You may not alter some Journal Transaction fields once they have been created.'; END IF; ELSE RAISE EXCEPTION 'trigger for sltrans table called in unexpected state.'; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._sltransaltertrigger(); publicadminfalse8399212551691211_sltransinserttrigger()FUNCTIONkCREATE FUNCTION _sltransinserttrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _reqNotes BOOLEAN; _externalCompany BOOLEAN := false; BEGIN -- Checks SELECT company_external INTO _externalCompany FROM company JOIN accnt ON (company_number=accnt_company) WHERE (accnt_id=NEW.sltrans_accnt_id); IF (_externalCompany) THEN RAISE EXCEPTION 'Transactions are not allowed for G/L Accounts with External Company segments.'; END IF; RETURN NEW; END; $$; .DROP FUNCTION public._sltransinserttrigger(); publicadminfalse8399212551691212_soheadtrigger()FUNCTION_CREATE FUNCTION _soheadtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _p RECORD; _a RECORD; _w RECORD; _shiptoId INTEGER; _addrId INTEGER; _prjId INTEGER; _check BOOLEAN; _numGen CHAR(1); BEGIN -- Checks -- Start with privileges IF (TG_OP = 'INSERT') THEN IF ( (NOT checkPrivilege('MaintainSalesOrders')) AND (NOT checkPrivilege('EnterReceipts')) ) THEN RAISE EXCEPTION 'You do not have privileges to create a Sales Order.'; END IF; ELSIF (TG_OP = 'UPDATE') THEN IF ( (NOT checkPrivilege('MaintainSalesOrders')) AND (NOT checkPrivilege('IssueStockToShipping')) AND (NEW.cohead_holdtype = OLD.cohead_holdtype) ) THEN RAISE EXCEPTION 'You do not have privileges to alter a Sales Order.'; END IF; ELSE IF ( (NOT checkPrivilege('MaintainSalesOrders')) AND (NOT checkPrivilege('IssueStockToShipping')) ) THEN RAISE EXCEPTION 'You do not have privileges to alter a Sales Order.'; END IF; END IF; -- If this is imported, check the order number IF (TG_OP = 'INSERT') THEN IF (NEW.cohead_imported) THEN SELECT fetchMetricText('CONumberGeneration') INTO _numGen; IF ((NEW.cohead_number IS NULL) AND (_numGen='M')) THEN RAISE EXCEPTION 'You must supply an Order Number.'; ELSE IF (NEW.cohead_number IS NULL) THEN SELECT fetchsonumber() INTO NEW.cohead_number; END IF; END IF; END IF; IF (fetchMetricText('CONumberGeneration') IN ('A','O')) THEN --- clear the number from the issue cache PERFORM clearNumberIssue('SoNumber', NEW.cohead_number); END IF; ELSE IF (TG_OP = 'UPDATE') THEN IF (NEW.cohead_number <> OLD.cohead_number) THEN RAISE EXCEPTION 'The order number may not be changed.'; END IF; END IF; END IF; IF (TG_OP IN ('INSERT','UPDATE')) THEN -- Get Customer data IF (NEW.cohead_shipto_id IS NULL) THEN SELECT cust_creditstatus,cust_number,cust_usespos,cust_blanketpos,cust_ffbillto, cust_ffshipto,cust_name,cust_salesrep_id,cust_terms_id,cust_shipvia, cust_shipchrg_id,cust_shipform_id,cust_commprcnt,cust_curr_id,cust_taxzone_id, cntct.*,addr.*, shipto_id,shipto_addr_id,shipto_name,shipto_salesrep_id,shipto_shipvia, shipto_shipchrg_id,shipto_shipform_id,shipto_commission,shipto_taxzone_id INTO _p FROM custinfo LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) LEFT OUTER JOIN shiptoinfo ON ((cust_id=shipto_cust_id) AND shipto_default) WHERE (cust_id=NEW.cohead_cust_id); ELSE SELECT cust_creditstatus,cust_number,cust_usespos,cust_blanketpos,cust_ffbillto, cust_ffshipto,cust_name,cust_salesrep_id,cust_terms_id,cust_shipvia, cust_shipchrg_id,cust_shipform_id,cust_commprcnt,cust_curr_id,cust_taxzone_id, cntct.*,addr.*, shipto_id,shipto_addr_id,shipto_name,shipto_salesrep_id,shipto_shipvia, shipto_shipchrg_id,shipto_shipform_id,shipto_commission,shipto_taxzone_id INTO _p FROM shiptoinfo,custinfo LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) WHERE ((cust_id=NEW.cohead_cust_id) AND (shipto_id=NEW.cohead_shipto_id)); END IF; -- If there is customer data, then we can get to work IF (FOUND) THEN -- Check Credit IF (TG_OP = 'INSERT') THEN IF (_p.cust_creditstatus = 'H') THEN SELECT checkPrivilege('CreateSOForHoldCustomer') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'Customer % has been placed on a Credit Hold and you do not have privilege to create Sales Orders for Customers on Credit Hold. The selected Customer must be taken off of Credit Hold before you may create a new Sales Order for the Customer.',_p.cust_number; ELSE NEW.cohead_holdtype='C'; END IF; END IF; IF (_p.cust_creditstatus = 'W') THEN SELECT checkPrivilege('CreateSOForWarnCustomer') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'Customer % has been placed on a Credit Warning and you do not have privilege to create Sales Orders for Customers on Credit Warning. The selected Customer must be taken off of Credit Warning before you may create a new Sales Order for the Customer.',_p.cust_number; ELSE NEW.cohead_holdtype='C'; END IF; END IF; -- Set to defaults if values not provided NEW.cohead_shipto_id := COALESCE(NEW.cohead_shipto_id,_p.shipto_id); NEW.cohead_terms_id := COALESCE(NEW.cohead_terms_id,_p.cust_terms_id); NEW.cohead_orderdate := COALESCE(NEW.cohead_orderdate,current_date); NEW.cohead_packdate := COALESCE(NEW.cohead_packdate,NEW.cohead_orderdate); NEW.cohead_curr_id := COALESCE(NEW.cohead_curr_id,_p.cust_curr_id,basecurrid()); NEW.cohead_freight := COALESCE(NEW.cohead_freight,0); NEW.cohead_custponumber := COALESCE(NEW.cohead_custponumber,''); NEW.cohead_ordercomments := COALESCE(NEW.cohead_ordercomments,''); NEW.cohead_shipcomments := COALESCE(NEW.cohead_shipcomments,''); NEW.cohead_shiptophone := COALESCE(NEW.cohead_shiptophone,''); NEW.cohead_misc := COALESCE(NEW.cohead_misc,0); NEW.cohead_misc_descrip := COALESCE(NEW.cohead_misc_descrip,''); NEW.cohead_shipcomplete := COALESCE(NEW.cohead_shipcomplete,false); IF (_p.shipto_id IS NOT NULL) THEN -- Pull in over ride values NEW.cohead_salesrep_id := COALESCE(NEW.cohead_salesrep_id,_p.shipto_salesrep_id); NEW.cohead_shipvia := COALESCE(NEW.cohead_shipvia,_p.shipto_shipvia); NEW.cohead_shipchrg_id := COALESCE(NEW.cohead_shipchrg_id,_p.shipto_shipchrg_id); NEW.cohead_shipform_id := COALESCE(NEW.cohead_shipform_id,_p.shipto_shipform_id); NEW.cohead_commission := COALESCE(NEW.cohead_commission,_p.shipto_commission); IF (NEW.cohead_taxzone_id=-1) THEN NEW.cohead_taxzone_id := NULL; ELSE NEW.cohead_taxzone_id := COALESCE(NEW.cohead_taxzone_id,_p.shipto_taxzone_id); END IF; ELSE NEW.cohead_salesrep_id := COALESCE(NEW.cohead_salesrep_id,_p.cust_salesrep_id); NEW.cohead_shipvia := COALESCE(NEW.cohead_shipvia,_p.cust_shipvia); NEW.cohead_shipchrg_id := COALESCE(NEW.cohead_shipchrg_id,_p.cust_shipchrg_id); NEW.cohead_shipform_id := COALESCE(NEW.cohead_shipform_id,_p.cust_shipform_id); NEW.cohead_commission := COALESCE(NEW.cohead_commission,_p.cust_commprcnt); IF (NEW.cohead_taxzone_id=-1) THEN NEW.cohead_taxzone_id := NULL; ELSE NEW.cohead_taxzone_id := COALESCE(NEW.cohead_taxzone_id,_p.cust_taxzone_id); END IF; END IF; IF ((NEW.cohead_warehous_id IS NULL) OR (NEW.cohead_fob IS NULL)) THEN IF (NEW.cohead_warehous_id IS NULL) THEN SELECT warehous_id,warehous_fob INTO _w FROM usrpref, whsinfo WHERE ((warehous_id=CAST(usrpref_value AS INTEGER)) AND (warehous_shipping) AND (warehous_active) AND (usrpref_username=getEffectiveXtUser()) AND (usrpref_name='PreferredWarehouse')); ELSE SELECT warehous_id,warehous_fob INTO _w FROM whsinfo WHERE (warehous_id=NEW.cohead_warehous_id); END IF; IF (FOUND) THEN NEW.cohead_warehous_id := COALESCE(NEW.cohead_warehous_id,_w.warehous_id); NEW.cohead_fob := COALESCE(NEW.cohead_fob,_w.warehous_fob); END IF; END IF; END IF; -- Only Check P/O logic for imports, because UI checks when entire order is saved IF (NEW.cohead_imported) THEN -- Check for required Purchase Order IF (_p.cust_usespos AND ((NEW.cohead_custponumber IS NULL) OR (TRIM(BOTH FROM NEW.cohead_custponumber)=''))) THEN RAISE EXCEPTION 'You must enter a Customer P/O for this Sales Order.'; END IF; -- Check for duplicate Purchase Orders if not allowed IF (_p.cust_usespos AND NOT (_p.cust_blanketpos)) THEN SELECT cohead_id INTO _a FROM cohead WHERE ((cohead_cust_id=NEW.cohead_cust_id) AND (cohead_id<>NEW.cohead_id) AND (UPPER(cohead_custponumber) = UPPER(NEW.cohead_custponumber)) ) UNION SELECT quhead_id FROM quhead WHERE ((quhead_cust_id=NEW.cohead_cust_id) AND (quhead_id<>NEW.cohead_id) AND (UPPER(quhead_custponumber) = UPPER(NEW.cohead_custponumber)) ); IF (FOUND) THEN RAISE EXCEPTION 'This Customer does not use Blanket P/O Numbers and the P/O Number you entered has already been used for another Sales Order. Please verify the P/O Number and either enter a new P/O Number or add to the existing Sales Order.'; END IF; END IF; END IF; --Auto create project if applicable IF ((TG_OP = 'INSERT') AND (NEW.cohead_prj_id IS NULL)) THEN SELECT fetchMetricBool('AutoCreateProjectsForOrders') INTO _check; IF (_check) THEN SELECT NEXTVAL('prj_prj_id_seq') INTO _prjId; NEW.cohead_prj_id := _prjId; INSERT INTO prj (prj_id, prj_number, prj_name, prj_descrip, prj_status, prj_so, prj_wo, prj_po) VALUES(_prjId, NEW.cohead_number, NEW.cohead_number, 'Auto Generated Project from Sales Order.', 'O', TRUE, TRUE, TRUE); END IF; END IF; IF (TG_OP = 'UPDATE') THEN SELECT true INTO _check FROM coitem WHERE ( (coitem_status='C') AND (coitem_cohead_id=NEW.cohead_id) ) LIMIT 1; IF (NOT FOUND) THEN --Update project references on supply UPDATE pr SET pr_prj_id=NEW.cohead_prj_id FROM coitem WHERE ((coitem_cohead_id=NEW.cohead_id) AND (coitem_order_type='R') AND (coitem_order_id=pr_id)); PERFORM changeWoProject(coitem_order_id, NEW.cohead_prj_id, TRUE) FROM coitem WHERE ((coitem_cohead_id=NEW.cohead_id) AND (coitem_order_type='W')); ELSE IF NEW.cohead_prj_id <> COALESCE(OLD.cohead_prj_id,-1) THEN RAISE EXCEPTION 'You can not change the project ID on orders with closed lines.'; END IF; END IF; END IF; -- Deal with Billing Address IF (TG_OP = 'INSERT') THEN IF (_p.cust_ffbillto) THEN -- If they didn't supply data, we'll put in the bill to contact and address NEW.cohead_billto_cntct_id=COALESCE(NEW.cohead_billto_cntct_id,_p.cntct_id); NEW.cohead_billto_cntct_honorific=COALESCE(NEW.cohead_billto_cntct_honorific,_p.cntct_honorific,''); NEW.cohead_billto_cntct_first_name=COALESCE(NEW.cohead_billto_cntct_first_name,_p.cntct_first_name,''); NEW.cohead_billto_cntct_middle=COALESCE(NEW.cohead_billto_cntct_middle,_p.cntct_middle,''); NEW.cohead_billto_cntct_last_name=COALESCE(NEW.cohead_billto_cntct_last_name,_p.cntct_last_name,''); NEW.cohead_billto_cntct_phone=COALESCE(NEW.cohead_billto_cntct_phone,_p.cntct_phone,''); NEW.cohead_billto_cntct_title=COALESCE(NEW.cohead_billto_cntct_title,_p.cntct_title,''); NEW.cohead_billto_cntct_fax=COALESCE(NEW.cohead_billto_cntct_fax,_p.cntct_fax,''); NEW.cohead_billto_cntct_email=COALESCE(NEW.cohead_billto_cntct_email,_p.cntct_email,''); NEW.cohead_billtoname=COALESCE(NEW.cohead_billtoname,_p.cust_name,''); NEW.cohead_billtoaddress1=COALESCE(NEW.cohead_billtoaddress1,_p.addr_line1,''); NEW.cohead_billtoaddress2=COALESCE(NEW.cohead_billtoaddress2,_p.addr_line2,''); NEW.cohead_billtoaddress3=COALESCE(NEW.cohead_billtoaddress3,_p.addr_line3,''); NEW.cohead_billtocity=COALESCE(NEW.cohead_billtocity,_p.addr_city,''); NEW.cohead_billtostate=COALESCE(NEW.cohead_billtostate,_p.addr_state,''); NEW.cohead_billtozipcode=COALESCE(NEW.cohead_billtozipcode,_p.addr_postalcode,''); NEW.cohead_billtocountry=COALESCE(NEW.cohead_billtocountry,_p.addr_country,''); ELSE -- Free form not allowed, we're going to put in the address regardless NEW.cohead_billto_cntct_id=_p.cntct_id; NEW.cohead_billto_cntct_honorific=COALESCE(_p.cntct_honorific,''); NEW.cohead_billto_cntct_first_name=COALESCE(_p.cntct_first_name,''); NEW.cohead_billto_cntct_middle=COALESCE(_p.cntct_middle,''); NEW.cohead_billto_cntct_last_name=COALESCE(_p.cntct_last_name,''); NEW.cohead_billto_cntct_phone=COALESCE(_p.cntct_phone,''); NEW.cohead_billto_cntct_title=COALESCE(_p.cntct_title,''); NEW.cohead_billto_cntct_fax=COALESCE(_p.cntct_fax,''); NEW.cohead_billto_cntct_email=COALESCE(_p.cntct_email,''); NEW.cohead_billtoname=COALESCE(_p.cust_name,''); NEW.cohead_billtoaddress1=COALESCE(_p.addr_line1,''); NEW.cohead_billtoaddress2=COALESCE(_p.addr_line2,''); NEW.cohead_billtoaddress3=COALESCE(_p.addr_line3,''); NEW.cohead_billtocity=COALESCE(_p.addr_city,''); NEW.cohead_billtostate=COALESCE(_p.addr_state,''); NEW.cohead_billtozipcode=COALESCE(_p.addr_postalcode,''); NEW.cohead_billtocountry=COALESCE(_p.addr_country,''); END IF; END IF; -- Now let's look at Shipto Address -- If there's nothing in the address fields and there is a shipto id -- or there is a default address available, let's put in some shipto address data IF ((TG_OP = 'INSERT') AND NOT ((NEW.cohead_shipto_id IS NULL) AND NOT _p.cust_ffshipto) AND (NEW.cohead_shipto_cntct_id IS NULL) AND (NEW.cohead_shipto_cntct_honorific IS NULL) AND (NEW.cohead_shipto_cntct_first_name IS NULL) AND (NEW.cohead_shipto_cntct_middle IS NULL) AND (NEW.cohead_shipto_cntct_last_name IS NULL) AND (NEW.cohead_shipto_cntct_suffix IS NULL) AND (NEW.cohead_shipto_cntct_phone IS NULL) AND (NEW.cohead_shipto_cntct_title IS NULL) AND (NEW.cohead_shipto_cntct_fax IS NULL) AND (NEW.cohead_shipto_cntct_email IS NULL) AND (NEW.cohead_shiptoname IS NULL) AND (NEW.cohead_shiptoaddress1 IS NULL) AND (NEW.cohead_shiptoaddress2 IS NULL) AND (NEW.cohead_shiptoaddress3 IS NULL) AND (NEW.cohead_shiptocity IS NULL) AND (NEW.cohead_shiptostate IS NULL) AND (NEW.cohead_shiptocountry IS NULL)) THEN IF ((NEW.cohead_shipto_id IS NULL) AND (_p.shipto_id IS NOT NULL)) THEN _shiptoId := _p.shipto_addr_id; ELSE _shiptoId := NEW.cohead_shipto_id; END IF; SELECT * INTO _a FROM shiptoinfo LEFT OUTER JOIN addr ON (addr_id=shipto_addr_id) LEFT OUTER JOIN cntct ON (cntct_id=shipto_cntct_id) WHERE (shipto_id=_shiptoId); NEW.cohead_shipto_cntct_id := _a.cntct_id; NEW.cohead_shipto_cntct_honorific := COALESCE(_a.cntct_honorific,''); NEW.cohead_shipto_cntct_first_name := COALESCE(_a.cntct_first_name,''); NEW.cohead_shipto_cntct_middle := COALESCE(_a.cntct_middle,''); NEW.cohead_shipto_cntct_last_name := COALESCE(_a.cntct_last_name,''); NEW.cohead_shipto_cntct_suffix := COALESCE(_a.cntct_suffix,''); NEW.cohead_shipto_cntct_phone := COALESCE(_a.cntct_phone,''); NEW.cohead_shipto_cntct_title := COALESCE(_a.cntct_title,''); NEW.cohead_shipto_cntct_fax := COALESCE(_a.cntct_fax,''); NEW.cohead_shipto_cntct_email := COALESCE(_a.cntct_email,''); NEW.cohead_shiptoname := COALESCE(_p.shipto_name,''); NEW.cohead_shiptoaddress1 := COALESCE(_a.addr_line1,''); NEW.cohead_shiptoaddress2 := COALESCE(_a.addr_line2,''); NEW.cohead_shiptoaddress3 := COALESCE(_a.addr_line3,''); NEW.cohead_shiptocity := COALESCE(_a.addr_city,''); NEW.cohead_shiptostate := COALESCE(_a.addr_state,''); NEW.cohead_shiptozipcode := COALESCE(_a.addr_postalcode,''); NEW.cohead_shiptocountry := COALESCE(_a.addr_country,''); ELSE IF (_p.cust_ffshipto) THEN -- Use Address Save function to see if the new address entered matches -- data for the shipto number. If not that will insert new address for CRM SELECT SaveAddr( NULL, NULL, NEW.cohead_shiptoaddress1, NEW.cohead_shiptoaddress2, NEW.cohead_shiptoaddress3, NEW.cohead_shiptocity, NEW.cohead_shiptostate, NEW.cohead_shiptozipcode, NEW.cohead_shiptocountry, 'CHANGEONE') INTO _addrId; SELECT shipto_addr_id INTO _shiptoid FROM shiptoinfo WHERE (shipto_id=NEW.cohead_shipto_id); -- If the address passed doesn't match shipto address, then it's something else IF (_shiptoid <> _addrId) THEN NEW.cohead_shipto_id := NULL; END IF; ELSE SELECT cohead_shipto_id INTO _shiptoid FROM cohead WHERE (cohead_id=NEW.cohead_id); -- Get the shipto address IF (COALESCE(NEW.cohead_shipto_id,-1) <> COALESCE(_shiptoid,-1)) THEN SELECT * INTO _a FROM shiptoinfo LEFT OUTER JOIN cntct ON (shipto_cntct_id=cntct_id) LEFT OUTER JOIN addr ON (shipto_addr_id=addr_id) WHERE (shipto_id=NEW.cohead_shipto_id); IF (FOUND) THEN -- Free form not allowed so we're going to make sure address matches Shipto data NEW.cohead_shipto_cntct_id=_a.cntct_id; NEW.cohead_shipto_cntct_honorific=COALESCE(_a.cntct_honorific,''); NEW.cohead_shipto_cntct_first_name=COALESCE(_a.cntct_first_name,''); NEW.cohead_shipto_cntct_middle=COALESCE(_a.cntct_middle,''); NEW.cohead_shipto_cntct_last_name=COALESCE(_a.cntct_last_name,''); NEW.cohead_shipto_cntct_phone=COALESCE(_a.cntct_phone,''); NEW.cohead_shipto_cntct_title=COALESCE(_a.cntct_title,''); NEW.cohead_shipto_cntct_fax=COALESCE(_a.cntct_fax,''); NEW.cohead_shipto_cntct_email=COALESCE(_a.cntct_email,''); NEW.cohead_shiptoname := COALESCE(_a.shipto_name,''); NEW.cohead_shiptophone := COALESCE(_a.cntct_phone,''); NEW.cohead_shiptoaddress1 := COALESCE(_a.addr_line1,''); NEW.cohead_shiptoaddress2 := COALESCE(_a.addr_line2,''); NEW.cohead_shiptoaddress3 := COALESCE(_a.addr_line3,''); NEW.cohead_shiptocity := COALESCE(_a.addr_city,''); NEW.cohead_shiptostate := COALESCE(_a.addr_state,''); NEW.cohead_shiptozipcode := COALESCE(_a.addr_postalcode,''); NEW.cohead_shiptocountry := COALESCE(_a.addr_country,''); ELSE -- If no shipto data and free form not allowed, this won't work RAISE EXCEPTION 'Free form Shipto is not allowed on this Customer. You must supply a valid Shipto ID.'; END IF; END IF; END IF; END IF; END IF; END IF; IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='SalesOrderChangeLog') ) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment('ChangeLog', 'S', NEW.cohead_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.cohead_terms_id <> NEW.cohead_terms_id) THEN PERFORM postComment( 'ChangeLog', 'S', NEW.cohead_id, ('Terms Changed from "' || oldterms.terms_code || '" to "' || newterms.terms_code || '"') ) FROM terms AS oldterms, terms AS newterms WHERE ( (oldterms.terms_id=OLD.cohead_terms_id) AND (newterms.terms_id=NEW.cohead_terms_id) ); END IF; IF (OLD.cohead_shipvia <> NEW.cohead_shipvia) THEN PERFORM postComment ('ChangeLog', 'S', New.cohead_id, ('Shipvia Changed from "' || OLD.cohead_shipvia || '" to "' || NEW.cohead_shipvia || '"')); END IF; IF (OLD.cohead_holdtype <> NEW.cohead_holdtype) THEN PERFORM postComment( 'ChangeLog', 'S', NEW.cohead_id, ( 'Hold Type Changed from ' || (CASE OLD.cohead_holdtype WHEN('N') THEN 'No Hold' WHEN('C') THEN 'Credit Hold' WHEN('P') THEN 'Packing Hold' WHEN('S') THEN 'Shipping Hold' ELSE 'Unknown/Error' END) || ' to ' || (CASE NEW.cohead_holdtype WHEN('N') THEN 'No Hold' WHEN('C') THEN 'Credit Hold' WHEN('P') THEN 'Packing Hold' WHEN('S') THEN 'Shipping Hold' ELSE 'Unknown/Error' END) ) ); END IF; ELSIF (TG_OP = 'DELETE') THEN DELETE FROM docass WHERE docass_source_id = OLD.cohead_id AND docass_source_type = 'S'; DELETE FROM docass WHERE docass_target_id = OLD.cohead_id AND docass_target_type = 'S'; DELETE FROM comment WHERE ( (comment_source='S') AND (comment_source_id=OLD.cohead_id) ); END IF; END IF; IF (TG_OP = 'UPDATE') THEN IF ( (NOT (OLD.cohead_holdtype = 'N')) AND (NEW.cohead_holdtype='N') ) THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'S', NEW.cohead_id, NEW.cohead_warehous_id, NEW.cohead_number::TEXT FROM evntnot, evnttype WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=NEW.cohead_warehous_id) AND (evnttype_name='SoReleased') ); END IF; IF (OLD.cohead_ordercomments <> NEW.cohead_ordercomments) THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'S', NEW.cohead_id, NEW.cohead_warehous_id, NEW.cohead_number::TEXT FROM evntnot, evnttype WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=NEW.cohead_warehous_id) AND (evnttype_name='SoNotesChanged') ); END IF; IF ((OLD.cohead_shipchrg_id != NEW.cohead_shipchrg_id) OR (OLD.cohead_freight != NEW.cohead_freight) OR (OLD.cohead_shipvia != NEW.cohead_shipvia)) THEN UPDATE shiphead SET shiphead_shipchrg_id=NEW.cohead_shipchrg_id, shiphead_freight=NEW.cohead_freight, shiphead_shipvia=NEW.cohead_shipvia WHERE ((shiphead_order_type='SO') AND (shiphead_order_id=NEW.cohead_id) AND (NOT shiphead_shipped)); END IF; END IF; IF (TG_OP = 'DELETE') THEN RETURN OLD; ELSE NEW.cohead_lastupdated = CURRENT_TIMESTAMP; RETURN NEW; END IF; END; $$; 'DROP FUNCTION public._soheadtrigger(); publicadminfalse83992N12551691214_soheadtriggerafter()FUNCTIONCREATE FUNCTION _soheadtriggerafter() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (COALESCE(NEW.cohead_taxzone_id,-1) <> COALESCE(OLD.cohead_taxzone_id,-1)) THEN UPDATE coitem SET coitem_taxtype_id=getItemTaxType(itemsite_item_id,NEW.cohead_taxzone_id) FROM itemsite WHERE ((itemsite_id=coitem_itemsite_id) AND (coitem_cohead_id=NEW.cohead_id)); END IF; -- update comments on any associated drop ship POs IF (COALESCE(NEW.cohead_shipcomments, TEXT('')) <> COALESCE(OLD.cohead_shipcomments, TEXT(''))) THEN UPDATE pohead SET pohead_comments=NEW.cohead_shipcomments FROM poitem JOIN coitem ON (coitem_cohead_id=NEW.cohead_id AND coitem_order_type='P' AND coitem_order_id=poitem_id) WHERE (pohead_id=poitem_pohead_id); END IF; RETURN NEW; END; $$; ,DROP FUNCTION public._soheadtriggerafter(); publicadminfalse83992^12551746879_soitemafterdeletetrigger()FUNCTIONCREATE FUNCTION _soitemafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN IF (OLD.coitem_status = 'O') THEN IF ( (SELECT (count(*) < 1) FROM coitem WHERE ((coitem_cohead_id=OLD.coitem_cohead_id) AND (coitem_id != OLD.coitem_id) AND (coitem_status = 'O')) ) ) THEN UPDATE cohead SET cohead_status = 'C' WHERE ((cohead_id=OLD.coitem_cohead_id) AND (cohead_status='O')); END IF; END IF; RETURN OLD; END; $$; 2DROP FUNCTION public._soitemafterdeletetrigger(); publicadminfalse8399212551691215_soitemaftertrigger()FUNCTION~&CREATE FUNCTION _soitemaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check NUMERIC; _r RECORD; _kit BOOLEAN; _fractional BOOLEAN; _rec RECORD; _kstat TEXT; _pstat TEXT; _result INTEGER; _coitemid INTEGER; _itemsrcid INTEGER; _orderid INTEGER; BEGIN _rec := NEW; --Cache some information SELECT * INTO _r FROM cohead WHERE (cohead_id=_rec.coitem_cohead_id); --Determine if this is a kit for later processing SELECT COALESCE(item_type,'')='K', item_fractional INTO _kit, _fractional FROM itemsite, item WHERE((itemsite_item_id=item_id) AND (itemsite_id=_rec.coitem_itemsite_id)); _kit := COALESCE(_kit, false); _fractional := COALESCE(_fractional, false); IF (_kit) THEN -- Kit Processing IF (TG_OP = 'INSERT') THEN -- Create Sub Lines for Kit Components PERFORM explodeKit(NEW.coitem_cohead_id, NEW.coitem_linenumber, 0, NEW.coitem_itemsite_id, NEW.coitem_qtyord, NEW.coitem_scheddate, NEW.coitem_promdate, NEW.coitem_memo); IF (fetchMetricBool('KitComponentInheritCOS')) THEN -- Update kit line item COS UPDATE coitem SET coitem_cos_accnt_id = CASE WHEN (COALESCE(NEW.coitem_cos_accnt_id, -1) != -1) THEN NEW.coitem_cos_accnt_id WHEN (NEW.coitem_warranty) THEN resolveCOWAccount(NEW.coitem_itemsite_id, _r.cohead_cust_id, _r.cohead_saletype_id, _r.cohead_shipzone_id) ELSE resolveCOSAccount(NEW.coitem_itemsite_id, _r.cohead_cust_id, _r.cohead_saletype_id, _r.cohead_shipzone_id) END WHERE((coitem_cohead_id=NEW.coitem_cohead_id) AND (coitem_linenumber = NEW.coitem_linenumber) AND (coitem_subnumber > 0)); END IF; END IF; IF (TG_OP = 'UPDATE') THEN IF (NEW.coitem_qtyord <> OLD.coitem_qtyord) THEN -- Recreate Sub Lines for Kit Components FOR _coitemid IN SELECT coitem_id FROM coitem WHERE ( (coitem_cohead_id=OLD.coitem_cohead_id) AND (coitem_linenumber=OLD.coitem_linenumber) AND (coitem_subnumber > 0) ) LOOP SELECT deleteSoItem(_coitemid) INTO _result; IF (_result < 0) THEN RAISE EXCEPTION 'Error deleting kit components: deleteSoItem(integer) Error:%', _result; END IF; END LOOP; PERFORM explodeKit(NEW.coitem_cohead_id, NEW.coitem_linenumber, 0, NEW.coitem_itemsite_id, NEW.coitem_qtyord, NEW.coitem_scheddate, NEW.coitem_promdate); END IF; IF ( (NEW.coitem_qtyord <> OLD.coitem_qtyord) OR (NEW.coitem_cos_accnt_id <> OLD.coitem_cos_accnt_id) ) THEN IF (fetchMetricBool('KitComponentInheritCOS')) THEN -- Update kit line item COS UPDATE coitem SET coitem_cos_accnt_id = CASE WHEN (COALESCE(NEW.coitem_cos_accnt_id, -1) != -1) THEN NEW.coitem_cos_accnt_id WHEN (NEW.coitem_warranty) THEN resolveCOWAccount(NEW.coitem_itemsite_id, _r.cohead_cust_id, _r.cohead_saletype_id, _r.cohead_shipzone_id) ELSE resolveCOSAccount(NEW.coitem_itemsite_id, _r.cohead_cust_id, _r.cohead_saletype_id, _r.cohead_shipzone_id) END WHERE((coitem_cohead_id=NEW.coitem_cohead_id) AND (coitem_linenumber = NEW.coitem_linenumber) AND (coitem_subnumber > 0)); END IF; END IF; IF (NEW.coitem_scheddate <> OLD.coitem_scheddate) THEN -- Update kit line item Schedule Date UPDATE coitem SET coitem_scheddate = NEW.coitem_scheddate WHERE((coitem_cohead_id=NEW.coitem_cohead_id) AND (coitem_linenumber = NEW.coitem_linenumber) AND (coitem_subnumber > 0)); END IF; END IF; END IF; IF (TG_OP = 'INSERT') THEN -- Create Purchase Request if flagged to do so IF ((NEW.coitem_order_type='R') AND (NEW.coitem_order_id=-1)) THEN SELECT createpr(CAST(cohead_number AS INTEGER), 'S', NEW.coitem_id) INTO _orderid FROM cohead WHERE (cohead_id=NEW.coitem_cohead_id); IF (_orderid > 0) THEN UPDATE coitem SET coitem_order_id=_orderid WHERE (coitem_id=NEW.coitem_id); END IF; END IF; -- Create Purchase Order if flagged to do so IF ((NEW.coitem_order_type='P') AND (NEW.coitem_order_id=-1)) THEN SELECT itemsrc_id INTO _itemsrcid FROM itemsite JOIN itemsrc ON (itemsrc_item_id=itemsite_item_id AND itemsrc_default) WHERE (itemsite_id=NEW.coitem_itemsite_id); IF (FOUND) THEN SELECT createPurchaseToSale(NEW.coitem_id, _itemsrcid, itemsite_dropship, CASE WHEN (NEW.coitem_prcost=0.0) THEN NULL ELSE NEW.coitem_prcost END) INTO _orderid FROM itemsite WHERE (itemsite_id=NEW.coitem_itemsite_id); IF (_orderid > 0) THEN UPDATE coitem SET coitem_order_id=_orderid WHERE (coitem_id=NEW.coitem_id); END IF; END IF; END IF; END IF; IF (TG_OP = 'UPDATE') THEN IF (NEW.coitem_order_type = 'P') THEN --If soitem is cancelled IF ((NEW.coitem_status = 'X') AND (OLD.coitem_status <> 'X')) THEN --Generate the PoItemSoCancelled event INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'P', poitem_id, itemsite_warehous_id, (pohead_number || '-' || poitem_linenumber || ': ' || item_number) FROM evntnot JOIN evnttype ON (evntnot_evnttype_id=evnttype_id) JOIN itemsite ON (evntnot_warehous_id=itemsite_warehous_id) JOIN item ON (itemsite_item_id=item_id) JOIN poitem ON (poitem_itemsite_id=itemsite_id) JOIN pohead ON( poitem_pohead_id=pohead_id) WHERE( (poitem_id=OLD.coitem_order_id) AND (poitem_duedate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name='PoItemSoCancelled') ); END IF; END IF; END IF; IF (_rec.coitem_subnumber > 0) THEN SELECT coitem_status INTO _kstat FROM coitem WHERE((coitem_cohead_id=_rec.coitem_cohead_id) AND (coitem_linenumber=_rec.coitem_linenumber) AND (coitem_subnumber = 0)); IF ((SELECT count(*) FROM coitem WHERE((coitem_cohead_id=_rec.coitem_cohead_id) AND (coitem_linenumber=_rec.coitem_linenumber) AND (coitem_subnumber <> _rec.coitem_subnumber) AND (coitem_subnumber > 0) AND (coitem_status = 'O'))) > 0) THEN _pstat := 'O'; ELSE _pstat := _rec.coitem_status; END IF; END IF; IF(TG_OP = 'INSERT') THEN IF (_rec.coitem_subnumber > 0 AND _rec.coitem_status = 'O') THEN _pstat := 'O'; END IF; ELSIF (TG_OP = 'UPDATE') THEN IF (_rec.coitem_subnumber > 0 AND _rec.coitem_status = 'O') THEN _pstat := 'O'; END IF; IF ((NEW.coitem_status = 'C') AND (OLD.coitem_status <> 'C')) THEN IF(_kit) THEN UPDATE coitem SET coitem_status='C' WHERE((coitem_cohead_id=OLD.coitem_cohead_id) AND (coitem_linenumber=OLD.coitem_linenumber) AND (coitem_status='O') AND (coitem_subnumber > 0)); END IF; END IF; IF ((NEW.coitem_status = 'X') AND (OLD.coitem_status <> 'X')) THEN IF(_kit) THEN UPDATE coitem SET coitem_status='X' WHERE((coitem_cohead_id=OLD.coitem_cohead_id) AND (coitem_linenumber=OLD.coitem_linenumber) AND (coitem_status='O') AND (coitem_subnumber > 0)); END IF; END IF; IF(NEW.coitem_status = 'O' AND OLD.coitem_status <> 'O') THEN IF(_kit) THEN UPDATE coitem SET coitem_status='O' WHERE((coitem_cohead_id=OLD.coitem_cohead_id) AND (coitem_linenumber=OLD.coitem_linenumber) AND ((coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) > 0) AND (coitem_subnumber > 0)); END IF; END IF; END IF; IF ((_kstat IS NOT NULL) AND (_pstat IS NOT NULL) AND (_rec.coitem_subnumber > 0) AND (_kstat <> _pstat)) THEN UPDATE coitem SET coitem_status = _pstat WHERE((coitem_cohead_id=_rec.coitem_cohead_id) AND (coitem_linenumber=_rec.coitem_linenumber) AND (coitem_subnumber = 0)); END IF; --If auto calculate freight, recalculate cohead_freight IF (SELECT cohead_calcfreight FROM cohead WHERE (cohead_id=NEW.coitem_cohead_id)) THEN UPDATE cohead SET cohead_freight = COALESCE( (SELECT SUM(freightdata_total) FROM freightDetail('SO', cohead_id, cohead_cust_id, cohead_shipto_id, cohead_orderdate, cohead_shipvia, cohead_curr_id)), 0) WHERE cohead_id=NEW.coitem_cohead_id; END IF; RETURN NEW; END; $$; ,DROP FUNCTION public._soitemaftertrigger(); publicadminfalse83992O12551746877_soitembeforedeletetrigger()FUNCTION9 CREATE FUNCTION _soitembeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; _kit BOOLEAN := FALSE; _shipped BOOLEAN := FALSE; _coitemid INTEGER := 0; _result INTEGER := 0; BEGIN -- Check Priv IF NOT (checkPrivilege('MaintainSalesOrders')) THEN RAISE EXCEPTION 'You do not have privileges to alter a Sales Order.'; END IF; -- Cache some information SELECT * INTO _r FROM cohead, itemsite, item WHERE ( (cohead_id=OLD.coitem_cohead_id) AND (itemsite_id=OLD.coitem_itemsite_id) AND (item_id=itemsite_item_id) ); _kit := (COALESCE(_r.item_type,'')='K'); -- Check for shipped kit components IF(_kit AND OLD.coitem_status <> 'C' AND OLD.coitem_status <> 'X') THEN IF (EXISTS (SELECT coitem_id FROM coitem JOIN shipitem ON (shipitem_orderitem_id=coitem_id) JOIN shiphead ON (shiphead_id=shipitem_shiphead_id AND shiphead_order_type='SO') WHERE ((coitem_cohead_id=OLD.coitem_cohead_id) AND (coitem_linenumber=OLD.coitem_linenumber) AND (coitem_subnumber > 0)) GROUP BY coitem_id HAVING (SUM(shipitem_qty) > 0) LIMIT 1) ) THEN _shipped := TRUE; END IF; END IF; IF(_kit AND _shipped) THEN RAISE EXCEPTION 'You can not delete this Sales Order Line as it has several sub components that have already been shipped.'; END IF; DELETE FROM comment WHERE ( (comment_source='SI') AND (comment_source_id=OLD.coitem_id) ); DELETE FROM charass WHERE ((charass_target_type='SI') AND (charass_target_id=OLD.coitem_id)); -- Delete Sub Lines for Kit Components IF (OLD.coitem_subnumber = 0) THEN FOR _coitemid IN SELECT coitem_id FROM coitem WHERE ( (coitem_cohead_id=OLD.coitem_cohead_id) AND (coitem_linenumber=OLD.coitem_linenumber) AND (coitem_subnumber > 0) ) LOOP SELECT deleteSoItem(_coitemid) INTO _result; IF (_result < 0) THEN IF NOT (_r.itemsite_createsopo AND (_result = -10 OR _result = -20)) THEN RAISE EXCEPTION 'Error deleting kit components: deleteSoItem(integer) Error:%', _result; END IF; END IF; END LOOP; END IF; INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'S', OLD.coitem_id, _r.itemsite_warehous_id, (_r.cohead_number || '-' || OLD.coitem_linenumber) FROM evntnot, evnttype WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=_r.itemsite_warehous_id) AND (OLD.coitem_scheddate <= (CURRENT_DATE + _r.itemsite_eventfence)) AND (evnttype_name='SoitemCancelled') ); RETURN OLD; END; $$; 3DROP FUNCTION public._soitembeforedeletetrigger(); publicadminfalse8399212551691217_soitembeforetrigger()FUNCTIONCREATE FUNCTION _soitembeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check NUMERIC; _itemNumber TEXT; _r RECORD; _kit BOOLEAN; BEGIN --Determine if this is a kit for later processing SELECT COALESCE(item_type,'')='K' INTO _kit FROM itemsite, item WHERE((itemsite_item_id=item_id) AND (itemsite_id=NEW.coitem_itemsite_id)); _kit := COALESCE(_kit, false); IF (TG_OP = 'INSERT') THEN -- If this is imported, go ahead and insert default characteristics IF (NEW.coitem_imported) THEN INSERT INTO charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_price) SELECT 'SI', NEW.coitem_id, char_id, charass_value, itemcharprice(item_id,char_id,charass_value,cohead_cust_id,cohead_shipto_id,NEW.coitem_qtyord,cohead_curr_id,cohead_orderdate) FROM ( SELECT DISTINCT char_id, char_name, charass_value, item_id, cohead_cust_id, cohead_shipto_id, cohead_curr_id, cohead_orderdate FROM cohead, charass, char, itemsite, item WHERE((itemsite_id=NEW.coitem_itemsite_id) AND (itemsite_item_id=item_id) AND (charass_target_type='I') AND (charass_target_id=item_id) AND (charass_default) AND (char_id=charass_char_id) AND (cohead_id=NEW.coitem_cohead_id)) ORDER BY char_name) AS data; END IF; END IF; -- Create work order and process if flagged to do so IF ((NEW.coitem_order_type='W') AND (NEW.coitem_order_id=-1)) THEN SELECT createwo(CAST(cohead_number AS INTEGER), NEW.coitem_itemsite_id, 1, -- priority validateOrderQty(NEW.coitem_itemsite_id, NEW.coitem_qtyord, TRUE), itemsite_leadtime, NEW.coitem_scheddate, NEW.coitem_memo, 'S', NEW.coitem_id, cohead_prj_id) INTO NEW.coitem_order_id FROM cohead, itemsite WHERE ((cohead_id=NEW.coitem_cohead_id) AND (itemsite_id=NEW.coitem_itemsite_id)); INSERT INTO charass (charass_target_type, charass_target_id, charass_char_id, charass_value) SELECT 'W', NEW.coitem_order_id, charass_char_id, charass_value FROM charass WHERE ((charass_target_type='SI') AND (charass_target_id=NEW.coitem_id)); END IF; IF (TG_OP = 'UPDATE') THEN -- Update P/R date if applicable IF (NEW.coitem_scheddate <> OLD.coitem_scheddate AND NEW.coitem_order_type='R' AND NEW.coitem_order_id > 1) THEN UPDATE pr SET pr_duedate = NEW.coitem_scheddate WHERE (pr_order_id=NEW.coitem_id AND pr_order_type='S'); END IF; -- If closing or cancelling and there is a job item work order, then close job and distribute remaining costs IF ((NEW.coitem_status = 'C' AND OLD.coitem_status <> 'C') OR (NEW.coitem_status = 'X' AND OLD.coitem_status <> 'X')) AND (OLD.coitem_order_id > -1) THEN SELECT wo_id, wo_wipvalue INTO _r FROM wo,itemsite,item WHERE ((wo_ordtype='S') AND (wo_ordid=OLD.coitem_id) AND (itemsite_id=wo_itemsite_id) AND (item_id=itemsite_item_id) AND (itemsite_costmethod = 'J')); IF (FOUND) THEN IF (_r.wo_wipvalue > 0) THEN -- Distribute to G/L, debit Cost of Sales, credit WIP PERFORM MIN(insertGLTransaction( 'W/O', 'WO', formatWoNumber(NEW.coitem_order_id), 'Job Closed Incomplete', costcat_wip_accnt_id, CASE WHEN (COALESCE(NEW.coitem_cos_accnt_id, -1) != -1) THEN NEW.coitem_cos_accnt_id WHEN (NEW.coitem_warranty=TRUE) THEN resolveCOWAccount(itemsite_id, cohead_cust_id, cohead_saletype_id, cohead_shipzone_id) ELSE resolveCOSAccount(itemsite_id, cohead_cust_id, cohead_saletype_id, cohead_shipzone_id) END, -1, _r.wo_wipvalue, current_date )) FROM itemsite, costcat, cohead WHERE ((itemsite_id=NEW.coitem_itemsite_id) AND (itemsite_costcat_id=costcat_id) AND (cohead_id=NEW.coitem_cohead_id)); END IF; UPDATE wo SET wo_status = 'C', wo_wipvalue = 0 WHERE (wo_id = _r.wo_id); END IF; END IF; -- Likewise, reopen the job if line reopened IF ((NEW.coitem_status != 'C' AND OLD.coitem_status = 'C') OR (NEW.coitem_status != 'X' AND OLD.coitem_status = 'X')) AND (OLD.coitem_order_id > -1) THEN UPDATE wo SET wo_status = 'I' FROM itemsite, item WHERE ((wo_ordtype = 'S') AND (wo_ordid=NEW.coitem_id) AND (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (itemsite_costmethod='J')); END IF; -- Handle links to Return Authorization IF (fetchMetricBool('EnableReturnAuth')) THEN SELECT * INTO _r FROM raitem,rahead WHERE ((raitem_new_coitem_id=NEW.coitem_id) AND (rahead_id=raitem_rahead_id)); IF (FOUND) THEN IF ((_r.raitem_qtyauthorized <> NEW.coitem_qtyord OR _r.raitem_qty_uom_id <> NEW.coitem_qty_uom_id OR _r.raitem_qty_invuomratio <> NEW.coitem_qty_invuomratio OR _r.raitem_price_uom_id <> NEW.coitem_price_uom_id OR _r.raitem_price_invuomratio <> NEW.coitem_price_invuomratio) AND NOT (NEW.coitem_status = 'X' AND _r.raitem_qtyauthorized = 0)) THEN RAISE EXCEPTION 'Quantities for line item % may only be changed on the Return Authorization that created it.',NEW.coitem_linenumber; END IF; IF (OLD.coitem_warranty <> NEW.coitem_warranty) THEN UPDATE raitem SET raitem_warranty = NEW.coitem_warranty WHERE((raitem_new_coitem_id=NEW.coitem_id) AND (raitem_warranty != NEW.coitem_warranty)); END IF; IF (OLD.coitem_cos_accnt_id <> NEW.coitem_cos_accnt_id) THEN UPDATE raitem SET raitem_cos_accnt_id = NEW.coitem_cos_accnt_id WHERE((raitem_new_coitem_id=NEW.coitem_id) AND (COALESCE(raitem_cos_accnt_id,-1) != COALESCE(NEW.coitem_cos_accnt_id,-1))); END IF; IF (OLD.coitem_taxtype_id <> NEW.coitem_taxtype_id) THEN UPDATE raitem SET raitem_taxtype_id = NEW.coitem_taxtype_id WHERE((raitem_new_coitem_id=NEW.coitem_id) AND (COALESCE(raitem_taxtype_id,-1) != COALESCE(NEW.coitem_taxtype_id,-1))); END IF; IF (OLD.coitem_scheddate <> NEW.coitem_scheddate) THEN UPDATE raitem SET raitem_scheddate = NEW.coitem_scheddate WHERE((raitem_new_coitem_id=NEW.coitem_id) AND (raitem_scheddate != NEW.coitem_scheddate)); END IF; IF (OLD.coitem_memo <> NEW.coitem_memo) THEN UPDATE raitem SET raitem_notes = NEW.coitem_memo WHERE((raitem_new_coitem_id=NEW.coitem_id) AND (raitem_notes != NEW.coitem_memo)); END IF; IF ((OLD.coitem_qtyshipped <> NEW.coitem_qtyshipped) AND (NEW.coitem_qtyshipped >= _r.raitem_qtyauthorized) AND ((_r.raitem_disposition = 'S') OR (_r.raitem_status = 'O') AND (_r.raitem_disposition IN ('P','V')) AND (_r.raitem_qtyreceived >= _r.raitem_qtyauthorized))) THEN UPDATE raitem SET raitem_status = 'C' WHERE (raitem_new_coitem_id=NEW.coitem_id); END IF; END IF; END IF; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._soitembeforetrigger(); publicadminfalse3992812551691219_soitemtrigger()FUNCTION%CREATE FUNCTION _soitemtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _changelog BOOLEAN := FALSE; _check BOOLEAN; _kit BOOLEAN; _shipped BOOLEAN; _atShipping NUMERIC; _tmp INTEGER; _rec RECORD; BEGIN -- Check SELECT checkPrivilege('MaintainSalesOrders') OR checkPrivilege('ShipOrders') OR checkPrivilege('IssueStockToShipping') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to alter a Sales Order.'; END IF; IF ( SELECT fetchMetricBool('SalesOrderChangeLog') ) THEN _changelog := TRUE; END IF; IF (TG_OP IN ('INSERT','UPDATE')) THEN IF (NEW.coitem_scheddate IS NULL) THEN IF (fetchmetricbool('AllowASAPShipSchedules')) THEN NEW.coitem_scheddate := current_date; ELSE RAISE EXCEPTION 'A schedule date is required.'; END IF; END IF; END IF; _rec := NEW; SELECT COALESCE(item_type,'')='K' INTO _kit FROM itemsite, item WHERE((itemsite_item_id=item_id) AND (itemsite_id=_rec.coitem_itemsite_id)); _kit := COALESCE(_kit, false); _shipped := false; IF(_kit AND _rec.coitem_status <> 'C' AND _rec.coitem_status <> 'X') THEN SELECT coitem_id INTO _tmp FROM coitem JOIN shipitem ON (shipitem_orderitem_id=coitem_id) JOIN shiphead ON (shiphead_id=shipitem_shiphead_id AND shiphead_order_type='SO') WHERE((coitem_cohead_id=_rec.coitem_cohead_id) AND (coitem_linenumber=_rec.coitem_linenumber) AND (coitem_subnumber > 0)) GROUP BY coitem_id HAVING (SUM(shipitem_qty) > 0) LIMIT 1; IF (FOUND) THEN _shipped := true; END IF; END IF; IF (TG_OP ='UPDATE') THEN IF ((OLD.coitem_status <> 'C') AND (NEW.coitem_status = 'C')) THEN SELECT qtyAtShipping(NEW.coitem_id) INTO _atShipping; IF (_atShipping > 0) THEN RAISE EXCEPTION 'Line % cannot be Closed at this time as there is inventory at shipping.',NEW.coitem_linenumber; END IF; END IF; END IF; IF (TG_OP = 'INSERT') THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'S', NEW.coitem_id, itemsite_warehous_id, (cohead_number || '-' || NEW.coitem_linenumber) FROM evntnot, evnttype, itemsite, item, cohead WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (itemsite_id=NEW.coitem_itemsite_id) AND (itemsite_item_id=item_id) AND (NEW.coitem_cohead_id=cohead_id) AND (NEW.coitem_scheddate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name='SoitemCreated') ); IF (_changelog) THEN PERFORM postComment('ChangeLog', 'SI', NEW.coitem_id, 'Created'); END IF; --Set defaults if no values passed NEW.coitem_linenumber := COALESCE(NEW.coitem_linenumber, (SELECT (COALESCE(MAX(coitem_linenumber), 0) + 1) FROM coitem WHERE (coitem_cohead_id=NEW.coitem_cohead_id))); NEW.coitem_status := COALESCE(NEW.coitem_status,'O'); NEW.coitem_scheddate := COALESCE(NEW.coitem_scheddate, (SELECT MIN(coitem_scheddate) FROM coitem WHERE (coitem_cohead_id=NEW.coitem_cohead_id))); NEW.coitem_memo := COALESCE(NEW.coitem_memo,''); NEW.coitem_prcost := COALESCE(NEW.coitem_prcost,0); NEW.coitem_warranty := COALESCE(NEW.coitem_warranty,false); IF (NEW.coitem_status='O') THEN UPDATE cohead SET cohead_status = 'O' WHERE ((cohead_id=NEW.coitem_cohead_id) AND (cohead_status='C')); END IF; RETURN NEW; ELSIF (TG_OP = 'UPDATE') THEN IF (NEW.coitem_qtyord <> OLD.coitem_qtyord) THEN IF(_kit) THEN IF(_shipped) THEN RAISE EXCEPTION 'You can not change the qty ordered for a Kit item when one or more of its components have shipped inventory.'; END IF; END IF; INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number, evntlog_oldvalue, evntlog_newvalue ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'S', NEW.coitem_id, itemsite_warehous_id, (cohead_number || '-' || NEW.coitem_linenumber), OLD.coitem_qtyord, NEW.coitem_qtyord FROM evntnot, evnttype, itemsite, item, cohead WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (itemsite_id=NEW.coitem_itemsite_id) AND (itemsite_item_id=item_id) AND (NEW.coitem_cohead_id=cohead_id) AND ( (NEW.coitem_scheddate <= (CURRENT_DATE + itemsite_eventfence)) OR (OLD.coitem_scheddate <= (CURRENT_DATE + itemsite_eventfence)) ) AND (evnttype_name='SoitemQtyChanged') ); IF (_changelog) THEN PERFORM postComment( 'ChangeLog', 'SI', NEW.coitem_id, ( 'Changed Qty. Ordered from ' || formatQty(OLD.coitem_qtyord) || ' to ' || formatQty(NEW.coitem_qtyord) ) ); END IF; END IF; IF (NEW.coitem_scheddate <> OLD.coitem_scheddate) THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number, evntlog_olddate, evntlog_newdate ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'S', NEW.coitem_id, itemsite_warehous_id, (cohead_number || '-' || NEW.coitem_linenumber), OLD.coitem_scheddate, NEW.coitem_scheddate FROM evntnot, evnttype, itemsite, item, cohead WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (itemsite_id=NEW.coitem_itemsite_id) AND (itemsite_item_id=item_id) AND (NEW.coitem_cohead_id=cohead_id) AND ( (NEW.coitem_scheddate <= (CURRENT_DATE + itemsite_eventfence)) OR (OLD.coitem_scheddate <= (CURRENT_DATE + itemsite_eventfence)) ) AND (evnttype_name='SoitemSchedDateChanged') ); IF (_changelog) THEN PERFORM postComment( 'ChangeLog', 'SI', NEW.coitem_id, ( 'Changed Sched. Date from ' || formatDate(OLD.coitem_scheddate) || ' to ' || formatDate(NEW.coitem_scheddate)) ); END IF; END IF; IF ((NEW.coitem_status = 'C') AND (OLD.coitem_status <> 'C')) THEN NEW.coitem_closedate = CURRENT_TIMESTAMP; NEW.coitem_close_username = getEffectiveXtUser(); NEW.coitem_qtyreserved := 0; IF (_changelog) THEN PERFORM postComment('ChangeLog', 'SI', NEW.coitem_id, 'Closed'); END IF; END IF; IF ((NEW.coitem_status <> 'C') AND (OLD.coitem_status = 'C')) THEN NEW.coitem_closedate = NULL; NEW.coitem_close_username = NULL; IF (_changelog) THEN PERFORM postComment('ChangeLog', 'SI', NEW.coitem_id, 'Reopened'); END IF; END IF; IF ((NEW.coitem_status = 'X') AND (OLD.coitem_status <> 'X')) THEN IF ((OLD.coitem_order_type = 'W') AND (SELECT wo_status IN ('O', 'E', 'R') FROM wo WHERE (wo_id=OLD.coitem_order_id))) THEN -- Close any associated W/O PERFORM closeWo(OLD.coitem_order_id, FALSE, CURRENT_DATE); ELSIF (OLD.coitem_order_type = 'R') THEN -- Delete any associated P/R PERFORM deletePr(OLD.coitem_order_id); END IF; NEW.coitem_qtyreserved := 0; IF (_changelog) THEN PERFORM postComment('ChangeLog', 'SI', NEW.coitem_id, 'Canceled'); PERFORM postComment('ChangeLog', 'S', NEW.coitem_cohead_id, 'Line # '|| NEW.coitem_linenumber ||' Canceled'); END IF; INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'S', OLD.coitem_id, itemsite_warehous_id, (cohead_number || '-' || OLD.coitem_linenumber) FROM evntnot, evnttype, itemsite, item, cohead WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (itemsite_id=OLD.coitem_itemsite_id) AND (itemsite_item_id=item_id) AND (OLD.coitem_cohead_id=cohead_id) AND (OLD.coitem_scheddate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name='SoitemCancelled') ); END IF; IF ((NEW.coitem_qtyreserved <> OLD.coitem_qtyreserved) AND (_changelog)) THEN PERFORM postComment('ChangeLog', 'SI', NEW.coitem_id, 'Changed Qty Reserved to '|| NEW.coitem_qtyreserved); END IF; END IF; NEW.coitem_lastupdated = CURRENT_TIMESTAMP; -- Handle status for header IF (TG_OP = 'UPDATE') THEN IF (OLD.coitem_status <> NEW.coitem_status) THEN IF ( (SELECT (count(*) < 1) FROM coitem WHERE ((coitem_cohead_id=NEW.coitem_cohead_id) AND (coitem_id != NEW.coitem_id) AND (coitem_status='O')) ) AND (NEW.coitem_status<>'O') ) THEN UPDATE cohead SET cohead_status = 'C' WHERE ((cohead_id=NEW.coitem_cohead_id) AND (cohead_status='O')); ELSE UPDATE cohead SET cohead_status = 'O' WHERE ((cohead_id=NEW.coitem_cohead_id) AND (cohead_status='C')); END IF; END IF; END IF; RETURN NEW; END; $$; 'DROP FUNCTION public._soitemtrigger(); publicadminfalse8399212551691221_taxauthafterdeletetrigger()FUNCTION6CREATE FUNCTION _taxauthafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (EXISTS(SELECT 1 FROM checkhead WHERE checkhead_recip_id = OLD.taxauth_id AND checkhead_recip_type='T')) THEN RAISE EXCEPTION 'Cannot delete the tax authority % because checks have been written to it [xtuple: deleteTaxAuthority, -7, %]', OLD.taxauth_number, OLD.taxauth_number; END IF; IF (fetchMetricValue('DefaultTaxAuthority') = OLD.taxauth_id) THEN RAISE EXCEPTION 'Cannot delete the default Tax Authority [xtuple: deleteTaxAuthority, -8, %]', OLD.taxauth_code; END IF; IF (fetchMetricBool('TaxAuthChangeLog')) THEN PERFORM postComment(cmnttype_id, 'TAXAUTH', OLD.taxauth_id, 'Deleted "' || OLD.taxauth_number || '"') FROM cmnttype WHERE (cmnttype_name='ChangeLog'); END IF; RETURN OLD; END; $$; 3DROP FUNCTION public._taxauthafterdeletetrigger(); publicadminfalse8399212551691222_taxauthaftertrigger()FUNCTIONCREATE FUNCTION _taxauthaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN IF (TG_OP = 'INSERT') THEN -- http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-UPSERT-EXAMPLE LOOP UPDATE crmacct SET crmacct_taxauth_id=NEW.taxauth_id, crmacct_name=NEW.taxauth_name WHERE crmacct_number=NEW.taxauth_code; IF (FOUND) THEN EXIT; END IF; BEGIN INSERT INTO crmacct(crmacct_number, crmacct_name, crmacct_active, crmacct_type, crmacct_taxauth_id ) VALUES (NEW.taxauth_code, NEW.taxauth_name, TRUE, 'O', NEW.taxauth_id); EXIT; EXCEPTION WHEN unique_violation THEN -- do nothing, and loop to try the UPDATE again END; END LOOP; /* TODO: default characteristic assignments based on what? */ ELSIF (TG_OP = 'UPDATE') THEN UPDATE crmacct SET crmacct_number = NEW.taxauth_code WHERE ((crmacct_taxauth_id=NEW.taxauth_id) AND (crmacct_number!=NEW.taxauth_code)); UPDATE crmacct SET crmacct_name = NEW.taxauth_name WHERE ((crmacct_taxauth_id=NEW.taxauth_id) AND (crmacct_name!=NEW.taxauth_name)); END IF; IF (fetchMetricBool('TaxAuthChangeLog')) THEN SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (_cmnttypeid IS NOT NULL) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'TAXAUTH', NEW.taxauth_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.taxauth_code <> NEW.taxauth_code) THEN PERFORM postComment(_cmnttypeid, 'TAXAUTH', NEW.taxauth_id, 'Code changed from "' || OLD.taxauth_code || '" to "' || NEW.taxauth_code || '"'); END IF; IF (OLD.taxauth_name <> NEW.taxauth_name) THEN PERFORM postComment(_cmnttypeid, 'TAXAUTH', NEW.taxauth_id, 'Name changed from "' || OLD.taxauth_name || '" to "' || NEW.taxauth_name || '"'); END IF; IF (OLD.taxauth_extref <> NEW.taxauth_extref) THEN PERFORM postComment(_cmnttypeid, 'TAXAUTH', NEW.taxauth_id, 'External Ref. changed from "' || OLD.taxauth_extref || '" to "' || NEW.taxauth_extref || '"'); END IF; IF (OLD.taxauth_addr_id <> NEW.taxauth_addr_id) THEN PERFORM postComment(_cmnttypeid, 'TAXAUTH', NEW.taxauth_id, 'Address changed from ' || formatAddr(OLD.taxauth_addr_id) || ' to ' || formatAddr(NEW.taxauth_addr_id)); END IF; IF (OLD.taxauth_curr_id <> NEW.taxauth_curr_id) THEN PERFORM postComment(_cmnttypeid, 'TAXAUTH', NEW.taxauth_id, 'Currency changed from "' || currConcat(OLD.taxauth_curr_id) || '" to "' || currConcat(NEW.taxauth_curr_id) || '"'); END IF; IF (OLD.taxauth_county <> NEW.taxauth_county) THEN PERFORM postComment(_cmnttypeid, 'TAXAUTH', NEW.taxauth_id, 'County changed from "' || OLD.taxauth_county || '" to "' || NEW.taxauth_county || '"'); END IF; IF (OLD.taxauth_accnt_id <> NEW.taxauth_accnt_id) THEN PERFORM postComment(_cmnttypeid, 'TAXAUTH', NEW.taxauth_id, 'Account changed from "' || formatGLAccount(OLD.taxauth_accnt_id) || '" to "' || formatGLAccount(NEW.taxauth_accnt_id) || '"'); END IF; END IF; END IF; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._taxauthaftertrigger(); publicadminfalse8399212551691223_taxauthbeforedeletetrigger()FUNCTIONCREATE FUNCTION _taxauthbeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NOT checkPrivilege('MaintainTaxAuthorities')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Tax Authorities.'; END IF; UPDATE crmacct SET crmacct_taxauth_id = NULL WHERE crmacct_taxauth_id = OLD.taxauth_id; RETURN OLD; END; $$; 4DROP FUNCTION public._taxauthbeforedeletetrigger(); publicadminfalse8399212551691224_taxauthbeforetrigger()FUNCTIONCREATE FUNCTION _taxauthbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (NOT checkPrivilege('MaintainTaxAuthorities')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Tax Authorities.'; END IF; IF (NEW.taxauth_code IS NULL) THEN RAISE EXCEPTION 'You must supply a Tax Authority Code.'; END IF; IF (TG_OP = 'INSERT' AND fetchMetricText('CRMAccountNumberGeneration') IN ('A','O')) THEN PERFORM clearNumberIssue('CRMAccountNumber', NEW.taxauth_code); END IF; NEW.taxauth_code := UPPER(NEW.taxauth_code); RETURN NEW; END; $$; .DROP FUNCTION public._taxauthbeforetrigger(); publicadminfalse3992812551746981_termsafterdeletetrigger()FUNCTIONCREATE FUNCTION _termsafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (fetchMetricValue('DefaultTerms') = OLD.terms_id) THEN RAISE EXCEPTION 'Cannot delete the default Terms [xtuple: terms, -1, %]', OLD.terms_code; END IF; RETURN OLD; END; $$; 1DROP FUNCTION public._termsafterdeletetrigger(); publicadminfalse8399212551691225_todoitemtrigger()FUNCTIONCREATE FUNCTION _todoitemtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _recurid INTEGER; _newparentid INTEGER; BEGIN IF (TG_OP = 'DELETE') THEN SELECT recur_id INTO _recurid FROM recur WHERE ((recur_parent_id=OLD.todoitem_id) AND (recur_parent_type='TODO')); IF (_recurid IS NOT NULL) THEN RAISE DEBUG 'recur_id for deleted todoitem = %', _recurid; SELECT todoitem_id INTO _newparentid FROM todoitem WHERE ((todoitem_recurring_todoitem_id=OLD.todoitem_id) AND (todoitem_id!=OLD.todoitem_id)) ORDER BY todoitem_due_date LIMIT 1; RAISE DEBUG '_newparentid for deleted todoitem = %', COALESCE(_newparentid, NULL); -- client is responsible for warning about deleting a recurring todoitem IF (_newparentid IS NULL) THEN DELETE FROM recur WHERE recur_id=_recurid; ELSE UPDATE recur SET recur_parent_id=_newparentid WHERE recur_id=_recurid; UPDATE todoitem SET todoitem_recurring_todoitem_id=_newparentid WHERE todoitem_recurring_todoitem_id=OLD.todoitem_id AND todoitem_id != OLD.todoitem_id; RAISE DEBUG 'reparented recurrence'; END IF; END IF; DELETE FROM alarm WHERE ((alarm_source='TODO') AND (alarm_source_id=OLD.todoitem_id)); DELETE FROM docass WHERE docass_source_id = OLD.todoitem_id AND docass_source_type = 'TODO'; DELETE FROM docass WHERE docass_target_id = OLD.todoitem_id AND docass_target_type = 'TODO'; RETURN OLD; END IF; RETURN NEW; END; $$; )DROP FUNCTION public._todoitemtrigger(); publicadminfalse8399212551691226_uomconvupdate()FUNCTIONCREATE FUNCTION _uomconvupdate() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN UPDATE itemuomconv SET itemuomconv_to_value = NEW.uomconv_to_value, itemuomconv_from_value = NEW.uomconv_from_value, itemuomconv_fractional = NEW.uomconv_fractional WHERE((itemuomconv_from_uom_id = NEW.uomconv_from_uom_id) AND (itemuomconv_to_uom_id = NEW.uomconv_to_uom_id)); RETURN NEW; END; $$; 'DROP FUNCTION public._uomconvupdate(); publicadminfalse8399212551691227_usrprefaftertrigger()FUNCTIONCREATE FUNCTION _usrprefaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'INSERT' OR TG_OP = 'UPDATE') THEN -- http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-UPSERT-EXAMPLE IF (NEW.usrpref_name='active') THEN LOOP UPDATE crmacct SET crmacct_usr_username=NEW.usrpref_username WHERE crmacct_number=UPPER(NEW.usrpref_username); IF (FOUND) THEN EXIT; END IF; BEGIN INSERT INTO crmacct(crmacct_number, crmacct_active, crmacct_type, crmacct_usr_username ) VALUES (NEW.usrpref_username, NEW.usrpref_value::BOOL, 'I', NEW.usrpref_username); EXIT; EXCEPTION WHEN unique_violation THEN -- do nothing, and loop to try the UPDATE again END; END LOOP; ELSIF (NEW.usrpref_name='propername') THEN LOOP UPDATE crmacct SET crmacct_name=NEW.usrpref_value WHERE crmacct_number=UPPER(NEW.usrpref_username); IF (FOUND) THEN EXIT; END IF; BEGIN INSERT INTO crmacct(crmacct_number, crmacct_active, crmacct_name, crmacct_type, crmacct_usr_username ) VALUES (UPPER(NEW.usrpref_username), TRUE, NEW.usrpref_value, 'I', NEW.usrpref_username); EXIT; EXCEPTION WHEN unique_violation THEN -- do nothing, and loop to try the UPDATE again END; END LOOP; END IF; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._usrprefaftertrigger(); publicadminfalse8399212551691228_usrprefbeforetrigger()FUNCTIONCREATE FUNCTION _usrprefbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF NOT (checkPrivilege('MaintainUsers') OR checkPrivilege('MaintainPreferencesOthers') OR (checkPrivilege('MaintainPreferencesSelf'))) THEN -- 2 IFs because plpgsql doesn't always evaluate boolean exprs left-to-right IF (TG_OP = 'DELETE') THEN IF NOT (OLD.usrpref_name LIKE '%/checked' OR OLD.usrpref_name LIKE '%/columnsShown') THEN RAISE EXCEPTION 'You do not have privileges to change this User Preference.'; END IF; ELSIF (NEW.usrpref_username = getEffectiveXtUser()) THEN IF NOT (NEW.usrpref_name LIKE '%/checked' OR NEW.usrpref_name LIKE '%/columnsShown') THEN RAISE EXCEPTION 'You do not have privileges to change this User Preference.'; END IF; END IF; END IF; IF (TG_OP IN ('INSERT', 'UPDATE')) THEN IF (NEW.usrpref_name = 'locale') THEN IF NOT EXISTS(SELECT locale_id FROM locale WHERE locale_id = NEW.usrpref_value::INTEGER) THEN RAISE EXCEPTION 'You must supply a valid Locale.'; END IF; ELSIF (NEW.usrpref_name IN ('agent', 'active')) THEN IF (NEW.usrpref_value NOT IN ('t', 'f')) THEN RAISE EXCEPTION '% must be either "t" or "f"', NEW.usrpref_name; END IF; END IF; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; .DROP FUNCTION public._usrprefbeforetrigger(); publicadminfalse8399212551691229_usrprivtrigger()FUNCTION?CREATE FUNCTION _usrprivtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _returnVal INTEGER; BEGIN -- This looks like a candidate for a foreign key but isn't. -- fkeys don't work if the foreign key value resides in a child of the -- table and not the table itself. IF ((TG_OP = 'UPDATE' OR TG_OP = 'INSERT') AND (NOT EXISTS(SELECT priv_id FROM priv WHERE (priv_id=NEW.usrpriv_priv_id)))) THEN RAISE EXCEPTION 'Privilege id % does not exist or is part of a disabled package.', NEW.usrpriv_priv_id; RETURN OLD; ELSIF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; (DROP FUNCTION public._usrprivtrigger(); publicadminfalse8399212551691230_vendaddrtrigger()FUNCTIONCREATE FUNCTION _vendaddrtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _vendname TEXT; BEGIN -- Checks SELECT checkPrivilege('MaintainVendors') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to maintain Vendors.'; END IF; IF (TG_OP IN ('INSERT','UPDATE')) THEN IF (LENGTH(COALESCE(NEW.vendaddr_code, ''))=0) THEN RAISE EXCEPTION 'You must supply a valid Vendor Address Number.'; END IF; IF (LENGTH(COALESCE(NEW.vendaddr_name, ''))=0) THEN RAISE EXCEPTION 'You must supply a valid Vendor Address Name.'; END IF; IF (NEW.vendaddr_vend_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Vendor ID.'; END IF; SELECT vendaddr_code INTO _vendname FROM vendaddrinfo WHERE ( (vendaddr_vend_id=NEW.vendaddr_vend_id) AND (UPPER(vendaddr_code)=UPPER(NEW.vendaddr_code)) AND (vendaddr_id<>NEW.vendaddr_id) ); IF (FOUND) THEN RAISE EXCEPTION 'The Vendor Address Number entered cannot be used as it is in use.'; END IF; END IF; IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; RETURN NEW; END; $$; )DROP FUNCTION public._vendaddrtrigger(); publicadminfalse8399212551691231_vendaftertrigger()FUNCTION CREATE FUNCTION _vendaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN IF (TG_OP = 'INSERT') THEN -- http://www.postgresql.org/docs/current/static/plpgsql-control-structures.html#PLPGSQL-UPSERT-EXAMPLE LOOP UPDATE crmacct SET crmacct_vend_id=NEW.vend_id, crmacct_name=NEW.vend_name WHERE crmacct_number=NEW.vend_number; IF (FOUND) THEN EXIT; END IF; BEGIN INSERT INTO crmacct(crmacct_number, crmacct_name, crmacct_active, crmacct_type, crmacct_vend_id, crmacct_cntct_id_1, crmacct_cntct_id_2 ) VALUES (NEW.vend_number, NEW.vend_name, NEW.vend_active, 'O', NEW.vend_id, NEW.vend_cntct1_id, NEW.vend_cntct2_id); EXIT; EXCEPTION WHEN unique_violation THEN -- do nothing, and loop to try the UPDATE again END; END LOOP; /* TODO: default characteristic assignments based on vendgrp? */ ELSIF (TG_OP = 'UPDATE') THEN UPDATE crmacct SET crmacct_number = NEW.vend_number WHERE ((crmacct_vend_id=NEW.vend_id) AND (crmacct_number!=NEW.vend_number)); UPDATE crmacct SET crmacct_name = NEW.vend_name WHERE ((crmacct_vend_id=NEW.vend_id) AND (crmacct_name!=NEW.vend_name)); END IF; IF (fetchMetricBool('VendorChangeLog')) THEN SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (_cmnttypeid IS NOT NULL) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'V', NEW.vend_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.vend_number <> NEW.vend_number) THEN PERFORM postComment(_cmnttypeid, 'V', NEW.vend_id, ('Number Changed from "' || OLD.vend_number || '" to "' || NEW.vend_number || '"') ); END IF; IF (OLD.vend_name <> NEW.vend_name) THEN PERFORM postComment( _cmnttypeid, 'V', NEW.vend_id, ('Name Changed from "' || OLD.vend_name || '" to "' || NEW.vend_name || '"') ); END IF; IF (OLD.vend_active <> NEW.vend_active) THEN PERFORM postComment(_cmnttypeid, 'V', NEW.vend_id, CASE WHEN NEW.vend_active THEN 'Activated' ELSE 'Deactivated' END); END IF; END IF; END IF; END IF; RETURN NEW; END; $$; *DROP FUNCTION public._vendaftertrigger(); publicadminfalse8399212551691232_vendinfoafterdeletetrigger()FUNCTIONCREATE FUNCTION _vendinfoafterdeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF EXISTS(SELECT 1 FROM checkhead WHERE ((checkhead_recip_id=OLD.vend_id) AND (checkhead_recip_type='V'))) THEN RAISE EXCEPTION '[xtuple: deleteVendor, -7]'; END IF; DELETE FROM taxreg WHERE ((taxreg_rel_type='V') AND (taxreg_rel_id=OLD.vend_id)); IF (fetchMetricBool('VendorChangeLog')) THEN PERFORM postComment(cmnttype_id, 'V', OLD.vend_id, ('Deleted "' || OLD.vend_number || '"')) FROM cmnttype WHERE (cmnttype_name='ChangeLog'); END IF; RETURN OLD; END; $$; 4DROP FUNCTION public._vendinfoafterdeletetrigger(); publicadminfalse8399212551691233_vendinfobeforedeletetrigger()FUNCTIONCREATE FUNCTION _vendinfobeforedeletetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF NOT (checkPrivilege('MaintainVendors')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Vendors.'; END IF; DELETE FROM itemsrcp WHERE itemsrcp_itemsrc_id IN (SELECT itemsrc_id FROM itemsrc WHERE itemsrc_vend_id=OLD.vend_id); DELETE FROM itemsrc WHERE (itemsrc_vend_id=OLD.vend_id); DELETE FROM vendaddrinfo WHERE (vendaddr_vend_id=OLD.vend_id); DELETE FROM docass WHERE docass_source_id = OLD.vend_id AND docass_source_type = 'V'; DELETE FROM docass WHERE docass_target_id = OLD.vend_id AND docass_target_type = 'V'; UPDATE crmacct SET crmacct_vend_id = NULL WHERE crmacct_vend_id = OLD.vend_id; RETURN OLD; END; $$; 5DROP FUNCTION public._vendinfobeforedeletetrigger(); publicadminfalse3992812551691234_vendtrigger()FUNCTIONCREATE FUNCTION _vendtrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF NOT (checkPrivilege('MaintainVendors')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Vendors.'; END IF; IF (LENGTH(COALESCE(NEW.vend_number, ''))=0) THEN RAISE EXCEPTION 'You must supply a valid Vendor Number.'; END IF; IF (LENGTH(COALESCE(NEW.vend_name, ''))=0) THEN RAISE EXCEPTION 'You must supply a valid Vendor Name.'; END IF; IF (NEW.vend_vendtype_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Vendor Type ID.'; END IF; IF (NEW.vend_terms_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Terms Code ID.'; END IF; IF (TG_OP = 'INSERT' AND fetchMetricText('CRMAccountNumberGeneration') IN ('A','O')) THEN PERFORM clearNumberIssue('CRMAccountNumber', NEW.vend_number); END IF; NEW.vend_number := UPPER(NEW.vend_number); RETURN NEW; END; $$; %DROP FUNCTION public._vendtrigger(); publicadminfalse3992812551691235_vodistaftertrigger()FUNCTIONCREATE FUNCTION _vodistaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; BEGIN IF ( (TG_OP = 'UPDATE') OR (TG_OP = 'DELETE') ) THEN IF (OLD.vodist_tax_id <> -1) THEN -- Delete any existing voheadtax adjustment records DELETE FROM voheadtax WHERE ( (taxhist_parent_id=OLD.vodist_vohead_id) AND (taxhist_tax_id=OLD.vodist_tax_id) AND (taxhist_taxtype_id=getAdjustmentTaxTypeId()) ); END IF; END IF; IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; -- Cache Voucher Head SELECT * INTO _r FROM vohead WHERE (vohead_id=NEW.vodist_vohead_id); IF (NOT FOUND) THEN RAISE EXCEPTION 'Voucher head not found'; END IF; IF (NEW.vodist_tax_id <> -1) THEN -- Insert adjustment voheadtax INSERT INTO voheadtax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate ) VALUES ( NEW.vodist_vohead_id, getAdjustmentTaxTypeId(), NEW.vodist_tax_id, 0, NULL, 1, 0, 0, (NEW.vodist_amount * -1), _r.vohead_docdate ); END IF; RETURN NEW; END; $$; ,DROP FUNCTION public._vodistaftertrigger(); publicadminfalse8399212551691236_vodistbeforetrigger()FUNCTIONbCREATE FUNCTION _vodistbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN IF (TG_OP = 'DELETE') THEN IF (OLD.vodist_tax_id <> -1) THEN -- Delete any existing voheadtax adjustment records DELETE FROM voheadtax WHERE ( (taxhist_parent_id=OLD.vodist_vohead_id) AND (taxhist_tax_id=OLD.vodist_tax_id) AND (taxhist_taxtype_id=getAdjustmentTaxTypeId()) ); END IF; RETURN OLD; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._vodistbeforetrigger(); publicadminfalse8399212551691237_voheadaftertrigger()FUNCTIONCREATE FUNCTION _voheadaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (TG_OP = 'DELETE') THEN PERFORM releaseVoNumber(CAST(OLD.vohead_number AS INTEGER)); RETURN OLD; END IF; IF (TG_OP = 'INSERT') THEN PERFORM clearNumberIssue('VcNumber', NEW.vohead_number); RETURN NEW; END IF; IF (TG_OP = 'UPDATE') THEN IF ( (COALESCE(NEW.vohead_taxzone_id,-1) <> COALESCE(OLD.vohead_taxzone_id,-1)) OR (NEW.vohead_docdate <> OLD.vohead_docdate) OR (NEW.vohead_curr_id <> OLD.vohead_curr_id) ) THEN PERFORM calculateTaxHist( 'voitemtax', voitem_id, NEW.vohead_taxzone_id, voitem_taxtype_id, NEW.vohead_docdate, NEW.vohead_curr_id, (vodist_amount * -1) ) FROM voitem JOIN vodist ON ( (vodist_vohead_id=voitem_vohead_id) AND (vodist_poitem_id=voitem_poitem_id) ) WHERE (voitem_vohead_id = NEW.vohead_id); END IF; -- Touch any Misc Tax Distributions so voheadtax is recalculated IF (NEW.vohead_docdate <> OLD.vohead_docdate) THEN UPDATE vodist SET vodist_vohead_id=NEW.vohead_id WHERE ( (vodist_vohead_id=OLD.vohead_id) AND (vodist_tax_id <> -1) ); END IF; END IF; RETURN NEW; END; $$; ,DROP FUNCTION public._voheadaftertrigger(); publicadminfalse8399212551691238_voheadbeforetrigger()FUNCTIONCREATE FUNCTION _voheadbeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _recurid INTEGER; _newparentid INTEGER; BEGIN IF (TG_OP = 'DELETE') THEN IF (OLD.vohead_posted) THEN -- Cannot delete a posted voucher RAISE EXCEPTION 'Cannot delete a posted voucher'; END IF; /* TODO: is setting recv_invoiced and poreject_invoiced to FALSE correct? this behavior is inherited from the now-defunct deleteVoucher. */ UPDATE recv SET recv_vohead_id = NULL, recv_voitem_id = NULL, recv_invoiced = FALSE WHERE recv_vohead_id = OLD.vohead_id; UPDATE poreject SET poreject_vohead_id = NULL, poreject_voitem_id = NULL, poreject_invoiced = FALSE WHERE poreject_vohead_id = OLD.vohead_id; DELETE FROM vodist WHERE vodist_vohead_id = OLD.vohead_id; DELETE FROM voheadtax WHERE taxhist_parent_id = OLD.vohead_id; DELETE FROM voitem WHERE voitem_vohead_id = OLD.vohead_id; SELECT recur_id INTO _recurid FROM recur WHERE ((recur_parent_id=OLD.vohead_id) AND (recur_parent_type='V')); IF (_recurid IS NOT NULL) THEN SELECT vohead_id INTO _newparentid FROM vohead WHERE ((vohead_recurring_vohead_id=OLD.vohead_id) AND (vohead_id!=OLD.vohead_id)) ORDER BY vohead_docdate LIMIT 1; IF (_newparentid IS NULL) THEN DELETE FROM recur WHERE recur_id=_recurid; ELSE UPDATE recur SET recur_parent_id=_newparentid WHERE recur_id=_recurid; UPDATE vohead SET vohead_recurring_vohead_id=_newparentid WHERE vohead_recurring_vohead_id=OLD.vohead_id AND vohead_id!=OLD.vohead_id; END IF; END IF; RETURN OLD; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._voheadbeforetrigger(); publicadminfalse8399212551691239_voitemaftertrigger()FUNCTIONCREATE FUNCTION _voitemaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD; END IF; -- Cache Voucher Head SELECT * INTO _r FROM vohead WHERE (vohead_id=NEW.voitem_vohead_id); IF (NOT FOUND) THEN RAISE EXCEPTION 'Voucher head not found'; END IF; -- Calculate Tax PERFORM calculateTaxHist( 'voitemtax', NEW.voitem_id, COALESCE(_r.vohead_taxzone_id, -1), NEW.voitem_taxtype_id, COALESCE(_r.vohead_docdate, CURRENT_DATE), COALESCE(_r.vohead_curr_id, -1), COALESCE(SUM(vodist_amount * -1), 0) ) FROM vodist WHERE ( (vodist_vohead_id=_r.vohead_id) AND (vodist_poitem_id=NEW.voitem_poitem_id) ); RETURN NEW; END; $$; ,DROP FUNCTION public._voitemaftertrigger(); publicadminfalse8399212551691240_voitembeforetrigger()FUNCTION|CREATE FUNCTION _voitembeforetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN IF (TG_OP = 'DELETE') THEN DELETE FROM voitemtax WHERE (taxhist_parent_id=OLD.voitem_id); RETURN OLD; END IF; RETURN NEW; END; $$; -DROP FUNCTION public._voitembeforetrigger(); publicadminfalse8399212551691241_warehoustrigger()FUNCTION< CREATE FUNCTION _warehoustrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; _check BOOLEAN; _checkId INTEGER; BEGIN -- Checks -- Start with privileges IF (TG_OP = 'INSERT') THEN SELECT checkPrivilege('MaintainWarehouses') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to add new Sites.'; END IF; ELSE SELECT checkPrivilege('MaintainWarehouses') OR checkPrivilege('IssueCountTags') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to alter a Site.'; END IF; END IF; -- Code is required IF (LENGTH(COALESCE(NEW.warehous_code,''))=0) THEN RAISE EXCEPTION 'You must supply a valid Site Code.'; END IF; -- Sitetype is required IF (NEW.warehous_sitetype_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Site Type.'; END IF; -- Cost Category is required for Transit types IF ((NEW.warehous_transit) AND (NEW.warehous_costcat_id IS NULL)) THEN RAISE EXCEPTION 'You must supply a valid Cost Category for Transit Sites.'; END IF; -- Code must be unique SELECT warehous_id INTO _checkId FROM whsinfo WHERE ( (UPPER(warehous_code)=UPPER(NEW.warehous_code)) AND (warehous_id<>NEW.warehous_id) ); IF (FOUND) THEN RAISE EXCEPTION 'You must supply a unique Site Code.'; END IF; -- Count Tag Prefix must be unique IF (TG_OP = 'INSERT') THEN SELECT warehous_id INTO _checkId FROM whsinfo WHERE (warehous_counttag_prefix=NEW.warehous_counttag_prefix); ELSE SELECT warehous_id INTO _checkId FROM whsinfo WHERE ( (warehous_counttag_prefix=NEW.warehous_counttag_prefix) AND (warehous_id<>NEW.warehous_id) ); END IF; IF (FOUND) THEN RAISE EXCEPTION 'You must supply a unique Count Tag Prefix.'; END IF; -- Check Complete -- Change Log IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='WarehouseChangeLog') ) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); IF (FOUND) THEN IF (TG_OP = 'INSERT') THEN PERFORM postComment(_cmnttypeid, 'WH', NEW.warehous_id, 'Created'); ELSIF (TG_OP = 'UPDATE') THEN IF (OLD.warehous_code <> NEW.warehous_code) THEN PERFORM postComment( _cmnttypeid, 'WH', NEW.warehous_id, ('Code Changed from "' || OLD.warehous_code || '" to "' || NEW.warehous_code || '"') ); END IF; IF (OLD.warehous_descrip <> NEW.warehous_descrip) THEN PERFORM postComment( _cmnttypeid, 'WH', NEW.warehous_id, ( 'Description Changed from "' || OLD.warehous_descrip || '" to "' || NEW.warehous_descrip || '"' ) ); END IF; IF (OLD.warehous_active <> NEW.warehous_active) THEN IF (NEW.warehous_active) THEN PERFORM postComment(_cmnttypeid, 'WH', NEW.warehous_id, 'Activated'); ELSE PERFORM postComment(_cmnttypeid, 'WH', NEW.warehous_id, 'Deactivated'); END IF; END IF; END IF; END IF; END IF; RETURN NEW; END; $$; )DROP FUNCTION public._warehoustrigger(); publicadminfalse3992812551691242_whsezonetrigger()FUNCTIONCREATE FUNCTION _whsezonetrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _check BOOLEAN; _checkId INTEGER; BEGIN -- Checks -- Start with privileges IF (TG_OP = 'INSERT') THEN SELECT checkPrivilege('MaintainWarehouses') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to add new Site Zones.'; END IF; ELSE SELECT checkPrivilege('MaintainWarehouses') INTO _check; IF NOT (_check) THEN RAISE EXCEPTION 'You do not have privileges to alter a Site Zone.'; END IF; END IF; -- Name is required IF (LENGTH(COALESCE(NEW.whsezone_name,''))=0) THEN RAISE EXCEPTION 'You must supply a valid Site Zone Name.'; END IF; -- Site is required IF (NEW.whsezone_warehous_id IS NULL) THEN RAISE EXCEPTION 'You must supply a valid Site.'; END IF; RETURN NEW; END; $$; )DROP FUNCTION public._whsezonetrigger(); publicadminfalse8399212551691243_womatlaftertrigger()FUNCTIONCREATE FUNCTION _womatlaftertrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN IF (TG_OP = 'INSERT') THEN -- Create any required P/R's PERFORM createPr('W', NEW.womatl_id) FROM itemsite WHERE ((itemsite_id=NEW.womatl_itemsite_id) AND (itemsite_createpr)); END IF; RETURN NEW; END; $$; ,DROP FUNCTION public._womatlaftertrigger(); publicadminfalse3992812551691244 _wotrigger()FUNCTIONCREATE FUNCTION _wotrigger() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN IF ( SELECT (metric_value='t') FROM metric WHERE (metric_name='WorkOrderChangeLog') ) THEN -- Cache the cmnttype_id for ChangeLog SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name='ChangeLog'); ELSE _cmnttypeid := -1; END IF; IF (TG_OP = 'INSERT') THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'W', NEW.wo_id, itemsite_warehous_id, (NEW.wo_number || '-' || NEW.wo_subnumber) FROM evntnot, evnttype, itemsite, item WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (itemsite_id=NEW.wo_itemsite_id) AND (itemsite_item_id=item_id) AND (NEW.wo_duedate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name='WoCreated') ); IF (_cmnttypeid <> -1) THEN PERFORM postComment(_cmnttypeid, 'W', NEW.wo_id, 'Created'); END IF; IF (fetchMetricText('WONumberGeneration') IN ('A','O')) THEN --- clear the number from the issue cache PERFORM clearNumberIssue('WoNumber', NEW.wo_number); END IF; RETURN NEW; ELSE IF (TG_OP = 'DELETE') THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'W', OLD.wo_id, itemsite_warehous_id, (OLD.wo_number || '-' || OLD.wo_subnumber) FROM evntnot, evnttype, itemsite, item WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (itemsite_id=OLD.wo_itemsite_id) AND (itemsite_item_id=item_id) AND (OLD.wo_duedate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name='WoCancelled') ); DELETE FROM docass WHERE docass_source_id = OLD.wo_id AND docass_source_type = 'W'; DELETE FROM docass WHERE docass_target_id = OLD.wo_id AND docass_target_type = 'W'; DELETE FROM comment WHERE ( (comment_source='W') AND (comment_source_id=OLD.wo_id) ); DELETE FROM charass WHERE ((charass_target_type='W') AND (charass_target_id=OLD.wo_id)); RETURN OLD; ELSE IF (TG_OP = 'UPDATE') THEN IF (NEW.wo_qtyord <> OLD.wo_qtyord) THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number, evntlog_oldvalue, evntlog_newvalue ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'W', NEW.wo_id, itemsite_warehous_id, (NEW.wo_number || '-' || NEW.wo_subnumber), OLD.wo_qtyord, NEW.wo_qtyord FROM evntnot, evnttype, itemsite, item WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (itemsite_id=NEW.wo_itemsite_id) AND (itemsite_item_id=item_id) AND ( (NEW.wo_duedate <= (CURRENT_DATE + itemsite_eventfence)) OR (OLD.wo_duedate <= (CURRENT_DATE + itemsite_eventfence)) ) AND (evnttype_name='WoQtyChanged') ); IF (_cmnttypeid <> -1) THEN PERFORM postComment( _cmnttypeid, 'W', NEW.wo_id, ( 'Qty. Ordered Changed from ' || formatQty(OLD.wo_qtyord) || ' to ' || formatQty(NEW.wo_qtyord ) ) ); END IF; END IF; IF (NEW.wo_duedate <> OLD.wo_duedate) THEN INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number, evntlog_olddate, evntlog_newdate ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'W', NEW.wo_id, itemsite_warehous_id, (NEW.wo_number || '-' || NEW.wo_subnumber), OLD.wo_duedate, NEW.wo_duedate FROM evntnot, evnttype, itemsite, item WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (itemsite_id=NEW.wo_itemsite_id) AND (itemsite_item_id=item_id) AND ( (NEW.wo_duedate <= (CURRENT_DATE + itemsite_eventfence)) OR (OLD.wo_duedate <= (CURRENT_DATE + itemsite_eventfence)) ) AND (evnttype_name='WoDueDateChanged') ); IF (_cmnttypeid <> -1) THEN PERFORM postComment( _cmnttypeid, 'W', NEW.wo_id, ( 'Due Date Changed from ' || formatDate(OLD.wo_duedate) || ' to ' || formatDate(NEW.wo_duedate ) ) ); END IF; END IF; IF (NEW.wo_status <> OLD.wo_status) THEN IF (_cmnttypeid <> -1) THEN PERFORM postComment( _cmnttypeid, 'W', NEW.wo_id, ('Status Changed from ' || OLD.wo_status || ' to ' || NEW.wo_status) ); END IF; END IF; END IF; END IF; END IF; RETURN NEW; END; $$; #DROP FUNCTION public._wotrigger(); publicadminfalse8399212551691245acknowledgemessage(integer)FUNCTIONCREATE FUNCTION acknowledgemessage(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pMsgid ALIAS FOR $1; BEGIN UPDATE msguser SET msguser_viewed=CURRENT_TIMESTAMP WHERE ( (msguser_msg_id=pMsgid) AND (msguser_username=getEffectiveXtUser()) ); RETURN TRUE; END; $_$; 2DROP FUNCTION public.acknowledgemessage(integer); publicadminfalse3992812551691246actcost(integer)FUNCTION CREATE FUNCTION actcost(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN actCost($1, NULL, baseCurrId()); END; $_$; 'DROP FUNCTION public.actcost(integer); publicadminfalse8399212551691247actcost(integer, integer)FUNCTIONCREATE FUNCTION actcost(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN actCost($1, $2, baseCurrId()); END; $_$; 0DROP FUNCTION public.actcost(integer, integer); publicadminfalse83992}12551691248"actcost(integer, integer, integer)FUNCTIONCREATE FUNCTION actcost(integer, integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pBomitemid ALIAS FOR $2; pCurrid ALIAS FOR $3; _cost NUMERIC; BEGIN -- Return actual cost in the given currency at the current conversion rate SELECT SUM(CASE WHEN (bomitemcost_id IS NOT NULL) THEN ROUND(currToCurr(bomitemcost_curr_id, pCurrid, bomitemcost_actcost, CURRENT_DATE), 6) ELSE ROUND(currToCurr(itemcost_curr_id, pCurrid, itemcost_actcost, CURRENT_DATE), 6) END) INTO _cost FROM itemcost LEFT OUTER JOIN bomitemcost ON (bomitemcost_bomitem_id=pBomitemid AND bomitemcost_costelem_id=itemcost_costelem_id) WHERE (itemcost_item_id=pItemid); IF (_cost IS NULL) THEN RETURN 0; ELSE RETURN _cost; END IF; END; $_$; 9DROP FUNCTION public.actcost(integer, integer, integer); publicadminfalse8399212551691249addrusecount(integer)FUNCTIONCREATE FUNCTION addrusecount(integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAddrId ALIAS FOR $1; _fk RECORD; _r RECORD; _seq INTEGER; _col TEXT; _qry TEXT; _count INTEGER = 0; BEGIN -- Determine where this address is used by analyzing foreign key linkages -- TO DO: Can this be rationalized with cntctused(int)? FOR _fk IN SELECT pg_namespace.nspname AS schemaname, con.relname AS tablename, conkey AS seq, conrelid AS class_id FROM pg_constraint, pg_class f, pg_class con, pg_namespace WHERE confrelid=f.oid AND conrelid=con.oid AND f.relname = 'addr' AND con.relnamespace=pg_namespace.oid AND con.relname NOT IN ('pohead') -- exception(s) where address key doesn't actually drive document information LOOP -- Validate IF (ARRAY_UPPER(_fk.seq,1) > 1) THEN RAISE EXCEPTION 'Checks to tables where the address is one of multiple foreign key columns is not supported. Error on Table: %', pg_namespace.nspname || '.' || con.relname; END IF; _seq := _fk.seq[1]; -- Get the specific column name SELECT attname INTO _col FROM pg_attribute, pg_class WHERE ((attrelid=pg_class.oid) AND (pg_class.oid=_fk.class_id) AND (attnum=_seq)); -- See if there are dependencies _qry := 'SELECT * FROM ' || _fk.schemaname || '.' || _fk.tablename || ' WHERE ('|| _col || '=' || pAddrId || ');'; FOR _r IN EXECUTE _qry LOOP _count := _count + 1; END LOOP; END LOOP; RETURN _count; END; $_$; ,DROP FUNCTION public.addrusecount(integer); publicadminfalse8399212551691250Uaddtaxtoglseries(integer, text, text, text, integer, date, date, text, integer, text)FUNCTIONCREATE FUNCTION addtaxtoglseries(integer, text, text, text, integer, date, date, text, integer, text) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pSource ALIAS FOR $2; pDocType ALIAS FOR $3; pDocNumber ALIAS FOR $4; pCurrId ALIAS FOR $5; pExchDate ALIAS FOR $6; pDistDate ALIAS FOR $7; pTableName ALIAS FOR $8; pParentId ALIAS FOR $9; pNotes ALIAS FOR $10; _count INTEGER := 0; _baseTax NUMERIC := 0; _returnVal NUMERIC := 0; _t RECORD; _test INTEGER := 0; BEGIN -- This is just a fancy select statement on taxhist. -- Because all tax records tables inherit from taxhist, -- we can use the same select statement for all. -- https://www.postgresql.org/docs/8.1/static/ddl-inherit.html -- pTableName in the where clause narrows down the selection -- to the correct sub table. FOR _t IN SELECT * FROM taxhist JOIN tax ON (tax_id = taxhist_tax_id) JOIN pg_class ON (pg_class.oid = taxhist.tableoid) WHERE ( (taxhist_parent_id = pParentId) AND (relname = pTableName) ) LOOP _count := _count + 1; _baseTax := currToBase(pCurrId, _t.taxhist_tax, pExchDate); _returnVal := _returnVal + _baseTax; PERFORM insertIntoGLSeries( pSequence, pSource, pDocType, pDocNumber, _t.tax_sales_accnt_id, _baseTax, pDistDate, pNotes ); UPDATE taxhist SET taxhist_docdate=pExchDate, taxhist_distdate=pDistDate, taxhist_curr_id=pCurrId, taxhist_curr_rate=curr_rate FROM curr_rate WHERE ((taxhist_id=_t.taxhist_id) AND (pCurrId=curr_id) AND ( pExchDate BETWEEN curr_effective AND curr_expires) ); END LOOP; RETURN _returnVal; END; $_$; lDROP FUNCTION public.addtaxtoglseries(integer, text, text, text, integer, date, date, text, integer, text); publicadminfalse8399212551691251addtopackinglistbatch(integer)FUNCTIONCREATE FUNCTION addtopackinglistbatch(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; returnVal INTEGER; BEGIN -- MIN because error codes are negative SELECT MIN(addToPackingListBatch('SO', pSoheadid, shiphead_id)) INTO returnVal FROM shiphead WHERE ((shiphead_order_id=pSoheadid) AND (NOT shiphead_shipped) AND (shiphead_order_type='SO')); IF (NOT FOUND OR returnVal IS NULL) THEN returnVal := addToPackingListBatch('SO', pSoheadid, NULL); END IF; RETURN returnVal; END; $_$; 5DROP FUNCTION public.addtopackinglistbatch(integer); publicadminfalse8399212551691252'addtopackinglistbatch(integer, integer)FUNCTION&CREATE FUNCTION addtopackinglistbatch(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN addToPackingListBatch('SO', $1, $2); END; $_$; >DROP FUNCTION public.addtopackinglistbatch(integer, integer); publicadminfalse83992l12551691253$addtopackinglistbatch(text, integer)FUNCTIONCREATE FUNCTION addtopackinglistbatch(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pheadtype ALIAS FOR $1; pheadid ALIAS FOR $2; returnVal INTEGER; BEGIN -- MIN because error codes are negative SELECT MIN(addToPackingListBatch(pheadtype, pheadid, shiphead_id)) INTO returnVal FROM shiphead WHERE ((shiphead_order_id=pheadid) AND (NOT shiphead_shipped) AND (shiphead_order_type=pheadtype)); IF (NOT FOUND OR returnVal IS NULL) THEN returnVal := addToPackingListBatch(pheadtype, pheadid, NULL); END IF; RETURN returnVal; END; $_$; ;DROP FUNCTION public.addtopackinglistbatch(text, integer); publicadminfalse83992v12551691254-addtopackinglistbatch(text, integer, integer)FUNCTIONCREATE FUNCTION addtopackinglistbatch(text, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pheadtype ALIAS FOR $1; pheadid ALIAS FOR $2; pshipheadid ALIAS FOR $3; _check INTEGER; BEGIN SELECT pack_id INTO _check FROM pack WHERE ((pack_head_id=pheadid) AND ((pack_shiphead_id=pshipheadid) OR (pshipheadid IS NULL AND pack_shiphead_id IS NULL)) AND (pack_head_type=pheadtype) ); IF (NOT FOUND) THEN INSERT INTO pack ( pack_head_type, pack_head_id, pack_shiphead_id, pack_printed ) VALUES ( pheadtype, pheadid, pshipheadid, FALSE ); -- Auto Firm Sales Orders conditionally based on metric IF ( (pheadtype = 'SO') AND (fetchMetricBool('FirmSalesOrderPackingList')) ) THEN UPDATE coitem SET coitem_firm=TRUE WHERE (coitem_cohead_id=pheadid); END IF; END IF; RETURN pheadid; END; $_$; DDROP FUNCTION public.addtopackinglistbatch(text, integer, integer); publicadminfalse83992n12551691255)adjustinvvalue(integer, numeric, integer)FUNCTION\CREATE FUNCTION adjustinvvalue(integer, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pNewValue ALIAS FOR $2; pAccountid ALIAS FOR $3; _delta NUMERIC; _glreturn INTEGER; _invhistid INTEGER; _itemlocSeries INTEGER; BEGIN SELECT pNewValue - itemsite_value INTO _delta FROM itemsite WHERE (itemsite_id=pItemsiteid) FOR UPDATE; IF (NOT FOUND) THEN RETURN -1; END IF; SELECT insertGLTransaction('I/M', '', 'Post Value', 'Inventory Value Adjustment for ' || item_number, COALESCE (pAccountid, costcat_adjustment_accnt_id), costcat_asset_accnt_id, -1, _delta, CURRENT_DATE) INTO _glreturn FROM itemsite JOIN costcat ON (itemsite_costcat_id=costcat_id) JOIN item ON (itemsite_item_id=item_id) WHERE (itemsite_id=pItemsiteid); -- Create the AD transaction INSERT INTO invhist ( invhist_itemsite_id, invhist_transdate, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_docnumber, invhist_comments, invhist_invuom, invhist_unitcost, invhist_hasdetail, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_series ) SELECT itemsite_id, CURRENT_TIMESTAMP, 'AD', 0.0, itemsite_qtyonhand, itemsite_qtyonhand, '', 'Inventory Value Adjustment', uom_name, _delta, FALSE, itemsite_costmethod, itemsite_value, pNewValue, 0 FROM itemsite, item, uom WHERE ( (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_id=pItemsiteid) ); UPDATE itemsite SET itemsite_value=pNewValue WHERE (itemsite_id=pItemsiteid); RETURN 0; END; $_$; @DROP FUNCTION public.adjustinvvalue(integer, numeric, integer); publicadminfalse3992812551691256adjustments(text)FUNCTIONbCREATE FUNCTION adjustments(text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTransType ALIAS FOR $1; BEGIN IF (pTransType IN ('CC', 'AD')) THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END; $_$; (DROP FUNCTION public.adjustments(text); publicadminfalse83992~12551691257allocatedforso(integer, date)FUNCTIONnCREATE FUNCTION allocatedforso(integer, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pDate ALIAS FOR $2; BEGIN RETURN allocatedForSo(pItemsiteid, startOfTime(), pDate); END; $_$; 4DROP FUNCTION public.allocatedforso(integer, date); publicadminfalse8399212551691258 allocatedforso(integer, integer)FUNCTIONCREATE FUNCTION allocatedforso(integer, integer) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pDate ALIAS FOR $2; BEGIN RETURN allocatedForSo(pItemsiteid, startOfTime(), (CURRENT_DATE + pDate)); END; $_$; 7DROP FUNCTION public.allocatedforso(integer, integer); publicadminfalse83992|12551691259#allocatedforso(integer, date, date)FUNCTION CREATE FUNCTION allocatedforso(integer, date, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _qty NUMERIC; BEGIN SELECT COALESCE(SUM(noNeg(itemuomtouom(itemsite_item_id, coitem_qty_uom_id, NULL, coitem_qtyord - (coitem_qtyshipped + qtyAtShipping(coitem_id)) + coitem_qtyreturned))), 0.0) INTO _qty FROM coitem, itemsite, item WHERE ( (coitem_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (coitem_status='O') AND (coitem_itemsite_id=pItemsiteid) AND (coitem_scheddate BETWEEN pStartDate AND pEndDate) ); RETURN _qty; END; $_$; :DROP FUNCTION public.allocatedforso(integer, date, date); publicadminfalse39928o12551691260allocatedforwo(integer, date)FUNCTIONnCREATE FUNCTION allocatedforwo(integer, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pDate ALIAS FOR $2; BEGIN RETURN allocatedForWo(pItemsiteid, startOfTime(), pDate); END; $_$; 4DROP FUNCTION public.allocatedforwo(integer, date); publicadminfalse39928y12551691261 allocatedforwo(integer, integer)FUNCTIONCREATE FUNCTION allocatedforwo(integer, integer) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pLookAheadDays ALIAS FOR $2; BEGIN RETURN allocatedForWo(pItemsiteid, startOfTime(), (CURRENT_DATE + pLookaheadDays)); END; $_$; 7DROP FUNCTION public.allocatedforwo(integer, integer); publicadminfalse83992p12551691262#allocatedforwo(integer, date, date)FUNCTION,CREATE FUNCTION allocatedforwo(integer, date, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _itemtype TEXT; _qty NUMERIC; BEGIN SELECT item_type INTO _itemtype FROM itemsite JOIN item ON (item_id=itemsite_item_id) WHERE (itemsite_id=pItemsiteid); IF (_itemtype != 'T') THEN SELECT COALESCE(SUM(noNeg(itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyreq - womatl_qtyiss))), 0.0) INTO _qty FROM womatl JOIN wo ON (wo_id=womatl_wo_id AND wo_status IN ('E','I','R')) JOIN itemsite ON (itemsite_id=womatl_itemsite_id) WHERE (womatl_itemsite_id=pItemsiteid) AND (womatl_duedate BETWEEN pStartDate AND pEndDate); ELSE SELECT COALESCE(SUM(noNeg(itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyreq))), 0.0) - ( SELECT COALESCE(SUM(invhist_invqty),0) FROM itemsite, item, wo, womatl LEFT OUTER JOIN womatlpost ON (womatl_id=womatlpost_womatl_id) LEFT OUTER JOIN invhist ON ((womatlpost_invhist_id=invhist_id) AND (invhist_invqty > 0)) WHERE ( (womatl_itemsite_id=pItemsiteid) AND (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (womatl_duedate BETWEEN pStartDate AND pEndDate) AND (wo_id=womatl_wo_id) AND (wo_status IN ('E','I','R')) ) ) INTO _qty FROM womatl JOIN wo ON (wo_id=womatl_wo_id AND wo_status IN ('E','I','R')) JOIN itemsite ON (itemsite_id=womatl_itemsite_id) WHERE (womatl_itemsite_id=pItemsiteid) AND (womatl_duedate BETWEEN pStartDate AND pEndDate); END IF; RETURN COALESCE(_qty,0); END; $_$; :DROP FUNCTION public.allocatedforwo(integer, date, date); publicadminfalse83992s12551691263alterencrypt(text, text)FUNCTIONCREATE FUNCTION alterencrypt(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOldKey ALIAS FOR $1; pNewKey ALIAS FOR $2; _cc RECORD; _ccaud RECORD; _metricenc RECORD; num_updated INTEGER; BEGIN num_updated := 0; -- Update ccard FOR _cc IN SELECT ccard_id, decrypt(setbytea(ccard_name), setbytea(pOldKey), 'bf') AS ccard_name, decrypt(setbytea(ccard_address1), setbytea(pOldKey), 'bf') AS ccard_address1, decrypt(setbytea(ccard_address2), setbytea(pOldKey), 'bf') AS ccard_address2, decrypt(setbytea(ccard_city), setbytea(pOldKey), 'bf') AS ccard_city, decrypt(setbytea(ccard_state), setbytea(pOldKey), 'bf') AS ccard_state, decrypt(setbytea(ccard_zip), setbytea(pOldKey), 'bf') AS ccard_zip, decrypt(setbytea(ccard_country), setbytea(pOldKey), 'bf') AS ccard_country, decrypt(setbytea(ccard_number), setbytea(pOldKey), 'bf') AS ccard_number, decrypt(setbytea(ccard_month_expired), setbytea(pOldKey), 'bf') AS ccard_month_expired, decrypt(setbytea(ccard_year_expired), setbytea(pOldKey), 'bf') AS ccard_year_expired FROM ccard LOOP UPDATE ccard set ccard_name = encrypt(setbytea(_cc.ccard_name), setbytea(pNewKey), 'bf'), ccard_address1 = encrypt(setbytea(_cc.ccard_address1), setbytea(pNewKey), 'bf'), ccard_address2 = encrypt(setbytea(_cc.ccard_address2), setbytea(pNewKey), 'bf'), ccard_city = encrypt(setbytea(_cc.ccard_city), setbytea(pNewKey), 'bf'), ccard_state = encrypt(setbytea(_cc.ccard_state), setbytea(pNewKey), 'bf'), ccard_zip = encrypt(setbytea(_cc.ccard_zip), setbytea(pNewKey), 'bf'), ccard_country = encrypt(setbytea(_cc.ccard_country), setbytea(pNewKey), 'bf'), ccard_number = encrypt(setbytea(_cc.ccard_number), setbytea(pNewKey), 'bf'), ccard_month_expired = encrypt(setbytea(_cc.ccard_month_expired), setbytea(pNewKey), 'bf'), ccard_year_expired = encrypt(setbytea(_cc.ccard_year_expired), setbytea(pNewKey), 'bf') WHERE ccard_id = _cc.ccard_id; num_updated := num_updated + 1; END LOOP; -- Update ccardaud FOR _ccaud IN SELECT ccardaud_id, decrypt(setbytea(ccardaud_ccard_name_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_name_old, decrypt(setbytea(ccardaud_ccard_name_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_name_new, decrypt(setbytea(ccardaud_ccard_address1_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_address1_old, decrypt(setbytea(ccardaud_ccard_address1_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_address1_new, decrypt(setbytea(ccardaud_ccard_address2_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_address2_old, decrypt(setbytea(ccardaud_ccard_address2_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_address2_new, decrypt(setbytea(ccardaud_ccard_city_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_city_old, decrypt(setbytea(ccardaud_ccard_city_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_city_new, decrypt(setbytea(ccardaud_ccard_state_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_state_old, decrypt(setbytea(ccardaud_ccard_state_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_state_new, decrypt(setbytea(ccardaud_ccard_zip_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_zip_old, decrypt(setbytea(ccardaud_ccard_zip_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_zip_new, decrypt(setbytea(ccardaud_ccard_country_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_country_old, decrypt(setbytea(ccardaud_ccard_country_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_country_new, decrypt(setbytea(ccardaud_ccard_number_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_number_old, decrypt(setbytea(ccardaud_ccard_number_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_number_new, decrypt(setbytea(ccardaud_ccard_month_expired_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_month_expired_old, decrypt(setbytea(ccardaud_ccard_month_expired_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_month_expired_new, decrypt(setbytea(ccardaud_ccard_year_expired_old), setbytea(pOldKey), 'bf') AS ccardaud_ccard_year_expired_old, decrypt(setbytea(ccardaud_ccard_year_expired_new), setbytea(pOldKey), 'bf') AS ccardaud_ccard_year_expired_new FROM ccardaud LOOP UPDATE ccardaud set ccardaud_ccard_name_old = encrypt(setbytea(_ccaud.ccardaud_ccard_name_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_name_new = encrypt(setbytea(_ccaud.ccardaud_ccard_name_new), setbytea(pNewKey), 'bf'), ccardaud_ccard_address1_old = encrypt(setbytea(_ccaud.ccardaud_ccard_address1_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_address1_new = encrypt(setbytea(_ccaud.ccardaud_ccard_address1_new), setbytea(pNewKey), 'bf'), ccardaud_ccard_address2_old = encrypt(setbytea(_ccaud.ccardaud_ccard_address2_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_address2_new = encrypt(setbytea(_ccaud.ccardaud_ccard_address2_new), setbytea(pNewKey), 'bf'), ccardaud_ccard_city_old = encrypt(setbytea(_ccaud.ccardaud_ccard_city_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_city_new = encrypt(setbytea(_ccaud.ccardaud_ccard_city_new), setbytea(pNewKey), 'bf'), ccardaud_ccard_state_old = encrypt(setbytea(_ccaud.ccardaud_ccard_state_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_state_new = encrypt(setbytea(_ccaud.ccardaud_ccard_state_new), setbytea(pNewKey), 'bf'), ccardaud_ccard_zip_old = encrypt(setbytea(_ccaud.ccardaud_ccard_zip_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_zip_new = encrypt(setbytea(_ccaud.ccardaud_ccard_zip_new), setbytea(pNewKey), 'bf'), ccardaud_ccard_country_old = encrypt(setbytea(_ccaud.ccardaud_ccard_country_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_country_new = encrypt(setbytea(_ccaud.ccardaud_ccard_country_new), setbytea(pNewKey), 'bf'), ccardaud_ccard_number_old = encrypt(setbytea(_ccaud.ccardaud_ccard_number_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_number_new = encrypt(setbytea(_ccaud.ccardaud_ccard_number_new), setbytea(pNewKey), 'bf'), ccardaud_ccard_month_expired_old = encrypt(setbytea(_ccaud.ccardaud_ccard_month_expired_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_month_expired_new = encrypt(setbytea(_ccaud.ccardaud_ccard_month_expired_new), setbytea(pNewKey), 'bf'), ccardaud_ccard_year_expired_old = encrypt(setbytea(_ccaud.ccardaud_ccard_year_expired_old), setbytea(pNewKey), 'bf'), ccardaud_ccard_year_expired_new = encrypt(setbytea(_ccaud.ccardaud_ccard_year_expired_new), setbytea(pNewKey), 'bf') WHERE ccardaud_id = _ccaud.ccardaud_id; num_updated := num_updated + 1; END LOOP; -- Update metricenc FOR _metricenc IN SELECT metricenc_id, decrypt(setbytea(metricenc_value), setbytea(pOldKey), 'bf') AS metricenc_value FROM metricenc LOOP UPDATE metricenc set metricenc_value = encrypt(setbytea(_metricenc.metricenc_value), setbytea(pNewKey), 'bf') WHERE metricenc_id = _metricenc.metricenc_id; num_updated := num_updated + 1; END LOOP; RETURN num_updated; END; $_$; /DROP FUNCTION public.alterencrypt(text, text); publicadminfalse83992t12552008339apaging(date, boolean)FUNCTIONrCREATE FUNCTION apaging(date, boolean) RETURNS SETOF apaging LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAsOfDate ALIAS FOR $1; pUseDocDate ALIAS FOR $2; _row apaging%ROWTYPE; _x RECORD; _returnVal INTEGER; _asOfDate DATE; BEGIN _asOfDate := COALESCE(pAsOfDate,current_date); FOR _x IN SELECT --report uses currency rate snapshot to convert all amounts to base based on apopen_docdate to ensure the same exchange rate --today and greater base: CASE WHEN((apopen_duedate >= DATE(_asOfDate))) THEN (((apopen_amount-apopen_paid+COALESCE(SUM(apapply_target_paid),0)))/apopen_curr_rate * CASE WHEN (apopen_doctype IN ('D', 'V')) THEN 1 ELSE -1 END) ELSE 0 END AS cur_val, --0 to 30 base CASE WHEN((apopen_duedate >= DATE(_asOfDate)-30) AND (apopen_duedate < DATE(_asOfDate))) THEN (((apopen_amount-apopen_paid+COALESCE(SUM(apapply_target_paid),0)))/apopen_curr_rate * CASE WHEN (apopen_doctype IN ('D', 'V')) THEN 1 ELSE -1 END) ELSE 0 END AS thirty_val, --30-60 base CASE WHEN((apopen_duedate >= DATE(_asOfDate)-60) AND (apopen_duedate < DATE(_asOfDate) - 30 )) THEN (((apopen_amount-apopen_paid+COALESCE(SUM(apapply_target_paid),0)))/apopen_curr_rate * CASE WHEN (apopen_doctype IN ('D', 'V')) THEN 1 ELSE -1 END) ELSE 0 END AS sixty_val, --60-90 base CASE WHEN((apopen_duedate >= DATE(_asOfDate)-90) AND (apopen_duedate < DATE(_asOfDate) - 60)) THEN (((apopen_amount-apopen_paid+COALESCE(SUM(apapply_target_paid),0)))/apopen_curr_rate * CASE WHEN (apopen_doctype IN ('D', 'V')) THEN 1 ELSE -1 END) ELSE 0 END AS ninety_val, --greater than 90 base: CASE WHEN((apopen_duedate > DATE(_asOfDate)-10000) AND (apopen_duedate < DATE(_asOfDate) - 90)) THEN (((apopen_amount-apopen_paid + COALESCE(SUM(apapply_target_paid),0)))/apopen_curr_rate * CASE WHEN (apopen_doctype IN ('D', 'V')) THEN 1 ELSE -1 END) ELSE 0 END AS plus_val, --total amount base: CASE WHEN((apopen_duedate > DATE(_asOfDate)-10000)) THEN (((apopen_amount-apopen_paid+COALESCE(SUM(apapply_target_paid),0)))/apopen_curr_rate * CASE WHEN (apopen_doctype IN ('D', 'V')) THEN 1 ELSE -1 END) ELSE 0 END AS total_val, --AP Open Amount base CASE WHEN apopen_doctype IN ('C', 'R') THEN (apopen_amount * -1) / apopen_curr_rate ELSE apopen_amount / apopen_curr_rate END AS apopen_amount, apopen_docdate, apopen_duedate, apopen_ponumber, apopen_invcnumber, apopen_docnumber, apopen_doctype, vend_id, vend_name, vend_number, vend_vendtype_id, vendtype_code, terms_descrip, determineDiscountDate(terms_id, apopen_docdate) AS discdate, noNeg(apopen_discountable_amount * CASE WHEN (CURRENT_DATE <= determineDiscountDate(terms_id, apopen_docdate)) THEN terms_discprcnt ELSE 0.0 END) AS disc_val, terms_discdays AS discdays, (terms_discprcnt * 100.0) AS discprcnt FROM vendinfo, vendtype, apopen LEFT OUTER JOIN terms ON (apopen_terms_id=terms_id) LEFT OUTER JOIN apapply ON (((apopen_id=apapply_target_apopen_id) OR (apopen_id=apapply_source_apopen_id)) AND (apapply_postdate >_asOfDate)) WHERE ( (apopen_vend_id = vend_id) AND (vend_vendtype_id=vendtype_id) AND (CASE WHEN (pUseDocDate) THEN apopen_docdate ELSE apopen_distdate END <= _asOfDate) AND (COALESCE(apopen_closedate,_asOfDate+1)>_asOfDate) ) GROUP BY apopen_id,apopen_docdate,apopen_duedate,apopen_ponumber, apopen_invcnumber, apopen_docnumber,apopen_doctype,apopen_paid, apopen_curr_id,apopen_amount,vend_id,vend_name,vend_number,vend_vendtype_id,vendtype_code,terms_descrip, apopen_curr_rate, terms_id, terms_discdays, terms_discprcnt, apopen_discountable_amount ORDER BY vend_number, apopen_duedate LOOP _row.apaging_docdate := _x.apopen_docdate; _row.apaging_duedate := _x.apopen_duedate; _row.apaging_ponumber := _x.apopen_ponumber; _row.apaging_invcnumber := _x.apopen_invcnumber; _row.apaging_docnumber := _x.apopen_docnumber; _row.apaging_doctype := _x.apopen_doctype; _row.apaging_vend_id := _x.vend_id; _row.apaging_vend_number := _x.vend_number; _row.apaging_vend_name := _x.vend_name; _row.apaging_vend_vendtype_id := _x.vend_vendtype_id; _row.apaging_vendtype_code := _x.vendtype_code; _row.apaging_terms_descrip := _x.terms_descrip; _row.apaging_apopen_amount := _x.apopen_amount; _row.apaging_cur_val := _x.cur_val; _row.apaging_thirty_val := _x.thirty_val; _row.apaging_sixty_val := _x.sixty_val; _row.apaging_ninety_val := _x.ninety_val; _row.apaging_plus_val := _x.plus_val; _row.apaging_total_val := _x.total_val; _row.apaging_discdate := _x.discdate; _row.apaging_disc_val := _x.disc_val; _row.apaging_discdays := _x.discdays; _row.apaging_discprcnt := _x.discprcnt; RETURN NEXT _row; END LOOP; RETURN; END; $_$; -DROP FUNCTION public.apaging(date, boolean); publicadminfalse83992257312551691265apapplied(integer, date)FUNCTION}CREATE FUNCTION apapplied(integer, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenid ALIAS FOR $1; pDate ALIAS FOR $2; _amount NUMERIC; BEGIN -- Return amount applied to an apopen in base currency as of apapply_postdate SELECT SUM(currtobase(apapply_curr_id,apapply_amount,apapply_postdate)) INTO _amount FROM apapply WHERE (((apapply_target_apopen_id = pApopenid) OR (apapply_source_apopen_id = pApopenid)) AND (((apapply_journalnumber=0) AND (apapply_postdate <= pDate)) OR EXISTS(SELECT * FROM gltrans WHERE ((gltrans_journalnumber=apapply_journalnumber) AND (gltrans_date <= pDate))))); IF (_amount IS NULL) THEN RETURN 0; ELSE RETURN _amount; END IF; END; $_$; /DROP FUNCTION public.apapplied(integer, date); publicadminfalse8399212551691266apcheckpending(integer)FUNCTIONcCREATE FUNCTION apcheckpending(integer) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenid ALIAS FOR $1; _qty NUMERIC := 0.0; BEGIN SELECT SUM(checkitem_amount + checkitem_discount) INTO _qty FROM checkitem JOIN checkhead ON (checkitem_checkhead_id=checkhead_id) WHERE ((checkitem_apopen_id=pApopenid) AND (NOT checkhead_deleted) AND (NOT checkhead_replaced) AND (NOT checkhead_posted)); RETURN COALESCE(_qty, 0.0); END; $_$; .DROP FUNCTION public.apcheckpending(integer); publicadminfalse8399212551691267+apcurrgain(integer, integer, numeric, date)FUNCTIONCREATE FUNCTION apcurrgain(integer, integer, numeric, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenId ALIAS FOR $1; pCurrId ALIAS FOR $2; pValue ALIAS FOR $3; pDate ALIAS FOR $4; _start DATE; _end DATE; _gain NUMERIC; _r RECORD; BEGIN IF (pApopenId IS NULL OR pValue = 0) THEN RETURN 0; END IF; SELECT apopen_docdate, apopen_curr_rate INTO _r FROM apopen WHERE (apopen_id=pApopenId); IF (_r.apopen_docdate > pDate) THEN _gain := (currToBase(pCurrId, pValue, pDate) - (pValue / _r.apopen_curr_rate)) * -1; ELSE _gain := (pValue / _r.apopen_curr_rate) - currToBase(pCurrId, pValue, pDate); END IF; IF (_gain IS NULL) THEN RAISE EXCEPTION 'Error processing currency gain/loss.'; END IF; RETURN _gain; END; $_$; BDROP FUNCTION public.apcurrgain(integer, integer, numeric, date); publicadminfalse8399212551691268#applyapcreditmemotobalance(integer)FUNCTIONCREATE FUNCTION applyapcreditmemotobalance(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenid ALIAS FOR $1; _amount NUMERIC; _curr_id INTEGER; _curr_rate NUMERIC; _docdate DATE; _applyAmount NUMERIC; _r RECORD; _p RECORD; BEGIN -- Find the balance to apply SELECT (apopen_amount - apopen_paid - COALESCE(prepared,0.0) - COALESCE(selected,0.0) - COALESCE(SUM(currToCurr(apcreditapply_curr_id, apopen_curr_id, apcreditapply_amount, apopen_docdate)), 0)), apopen_curr_id, apopen_curr_rate, apopen_docdate INTO _amount, _curr_id, _curr_rate, _docdate FROM apopen LEFT OUTER JOIN apcreditapply ON (apcreditapply_source_apopen_id=apopen_id) LEFT OUTER JOIN (SELECT apopen_id AS selected_apopen_id, SUM(currToCurr(apselect_curr_id, apopen_curr_id, apselect_amount + apselect_discount, apselect_date)) AS selected FROM apselect JOIN apopen ON (apselect_apopen_id=apopen_id) GROUP BY apopen_id) AS sub1 ON (apopen_id=selected_apopen_id) LEFT OUTER JOIN (SELECT apopen_id AS prepared_apopen_id, SUM(checkitem_amount + checkitem_discount) AS prepared FROM checkhead JOIN checkitem ON (checkitem_checkhead_id=checkhead_id) JOIN apopen ON (checkitem_apopen_id=apopen_id) WHERE ((NOT checkhead_posted) AND (NOT checkhead_void)) GROUP BY apopen_id) AS sub2 ON (prepared_apopen_id=apopen_id) WHERE (apopen_id=pApopenid) GROUP BY apopen_amount, apopen_paid, apopen_curr_id, apopen_curr_rate, apopen_docdate, prepared, selected; IF (_amount < 0) THEN RETURN -1; END IF; -- Loop through the apopen items in order of due date FOR _r IN SELECT target.apopen_id AS apopenid, currToCurr(target.apopen_curr_id,source.apopen_curr_id, target.apopen_amount - target.apopen_paid - COALESCE(prepared,0.0) - COALESCE(selected,0.0) - COALESCE(applied,0.0), current_date) AS balance FROM apopen AS source, apopen AS target LEFT OUTER JOIN (SELECT apcreditapply_target_apopen_id AS applied_apopen_id, SUM(currToCurr(apcreditapply_curr_id, apopen_curr_id, apcreditapply_amount, apopen_docdate)) AS applied FROM apcreditapply JOIN apopen ON (apopen_id=apcreditapply_source_apopen_id) GROUP BY apcreditapply_target_apopen_id) AS sub3 ON (target.apopen_id=applied_apopen_id) LEFT OUTER JOIN (SELECT apopen_id AS selected_apopen_id, SUM(currToCurr(apselect_curr_id, apopen_curr_id, apselect_amount + apselect_discount, apselect_date)) AS selected FROM apselect JOIN apopen ON (apselect_apopen_id=apopen_id) GROUP BY apopen_id) AS sub1 ON (target.apopen_id=selected_apopen_id) LEFT OUTER JOIN (SELECT apopen_id AS prepared_apopen_id, SUM(checkitem_amount + checkitem_discount) AS prepared FROM checkhead JOIN checkitem ON (checkitem_checkhead_id=checkhead_id) JOIN apopen ON (checkitem_apopen_id=apopen_id) WHERE ((NOT checkhead_posted) AND (NOT checkhead_void)) GROUP BY apopen_id) AS sub2 ON (prepared_apopen_id=target.apopen_id) WHERE ( (source.apopen_vend_id=target.apopen_vend_id) AND (target.apopen_doctype IN ('V', 'D')) AND (target.apopen_open) AND (source.apopen_id=pApopenid) ) ORDER BY target.apopen_duedate, (target.apopen_amount - target.apopen_paid) LOOP -- Determine the amount to apply IF (_r.balance <= 0.0) THEN CONTINUE; ELSEIF (_r.balance > _amount) THEN _applyAmount := _amount; ELSE _applyAmount := _r.balance; END IF; -- Does an apcreditapply record already exist? SELECT apcreditapply_id, apcreditapply_amount * _curr_rate / currRate(apcreditapply_curr_id,_docdate) AS apcreditapply_amount INTO _p FROM apcreditapply WHERE ( (apcreditapply_target_apopen_id=_r.apopenid) AND (apcreditapply_source_apopen_id=pApopenid) ); IF (FOUND) THEN -- The following is depreciated, just skip the record -- Recalculate the amount to apply -- IF ((_r.balance - _p.apcreditapply_amount) > _amount) THEN -- _applyAmount := _amount; -- ELSE -- _applyAmount := (_r.balance - _p.apcreditapply_amount); -- END IF; -- Update the apcreditapply with the new amount to apply -- UPDATE apcreditapply -- SET apcreditapply_amount = (apcreditapply_amount + -- _applyAmount * currRate(apcreditapply_curr_id,_docdate) / _curr_rate) -- WHERE (apcreditapply_id=_p.apcreditapply_id); CONTINUE; ELSE -- Create a new apcreditapply record INSERT INTO apcreditapply ( apcreditapply_source_apopen_id, apcreditapply_target_apopen_id, apcreditapply_amount, apcreditapply_curr_id ) VALUES ( pApopenid, _r.apopenid, _applyAmount, _curr_id ); END IF; _amount := (_amount - _applyAmount); IF (_amount = 0) THEN EXIT; END IF; END LOOP; RETURN 1; END; $_$; :DROP FUNCTION public.applyapcreditmemotobalance(integer); publicadminfalse8399212551691269applyapcredits(integer)FUNCTIONCREATE FUNCTION applyapcredits(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendId ALIAS FOR $1; _result INTEGER; _apopenid INTEGER; _r RECORD; BEGIN -- Fetch credit memo(s) for the vendor FOR _r IN SELECT apopen_id, apopen_duedate FROM apopen JOIN vendinfo ON (apopen_vend_id = vend_id) WHERE ((apopen_doctype = 'C') AND (apopen_status = 'O') AND (vend_id = pVendId)) ORDER BY apopen_duedate LOOP -- Apply credit memo(s) according to due date SELECT applyapcreditmemotobalance(_r.apopen_id) INTO _result; -- Post the credit memo if applied IF (_result = 1) THEN SELECT postapcreditmemoapplication(_r.apopen_id) INTO _apopenid; IF (_apopenid < 0) THEN RETURN -1; END IF; ELSE RETURN -1; END IF; END LOOP; RETURN 1; END; $_$; .DROP FUNCTION public.applyapcredits(integer); publicadminfalse8399212551691270#applyarcreditmemotobalance(integer)FUNCTIONOCREATE FUNCTION applyarcreditmemotobalance(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAropenid ALIAS FOR $1; BEGIN RETURN applyARCreditMemoToBalance(pAropenid, NULL); END; $_$; :DROP FUNCTION public.applyarcreditmemotobalance(integer); publicadminfalse8399212551691271,applyarcreditmemotobalance(integer, integer)FUNCTIONCREATE FUNCTION applyarcreditmemotobalance(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSourceAropenid ALIAS FOR $1; pTargetAropenid ALIAS FOR $2; _amount NUMERIC; _amountcurrid INTEGER; _applyAmount NUMERIC; _applycurrid INTEGER; _curr_rate NUMERIC; _r RECORD; _p RECORD; BEGIN -- Find the balance to apply SELECT (aropen_amount - COALESCE(SUM(currToCurr(arcreditapply_curr_id, aropen_curr_id, arcreditapply_amount, aropen_docdate)), 0) - aropen_paid - COALESCE(prepared,0.0) - COALESCE(cashapplied,0.0)), aropen_curr_id, aropen_curr_rate INTO _amount, _amountcurrid, _curr_rate FROM aropen LEFT OUTER JOIN arcreditapply ON (arcreditapply_source_aropen_id=aropen_id) LEFT OUTER JOIN (SELECT aropen_id AS prepared_aropen_id, SUM(checkitem_amount + checkitem_discount) AS prepared FROM checkhead JOIN checkitem ON (checkitem_checkhead_id=checkhead_id) JOIN aropen ON (checkitem_aropen_id=aropen_id) WHERE ((NOT checkhead_posted) AND (NOT checkhead_void)) GROUP BY aropen_id) AS sub1 ON (prepared_aropen_id=aropen_id) LEFT OUTER JOIN (SELECT aropen_id AS cash_aropen_id, SUM(cashrcptitem_amount + cashrcptitem_discount) * -1.0 AS cashapplied FROM cashrcpt JOIN cashrcptitem ON (cashrcptitem_cashrcpt_id=cashrcpt_id) JOIN aropen ON (cashrcptitem_aropen_id=aropen_id) WHERE (NOT cashrcpt_posted) AND (NOT cashrcpt_void) GROUP BY aropen_id ) AS sub2 ON (cash_aropen_id=aropen_id) WHERE (aropen_id=pSourceAropenid) GROUP BY aropen_amount, aropen_paid, aropen_curr_id, aropen_curr_rate, prepared, cashapplied; IF (_amount < 0) THEN RETURN -1; END IF; -- Loop through the aropen items in order of due date FOR _r IN SELECT target.aropen_id AS aropenid, currToCurr(target.aropen_curr_id,source.aropen_curr_id, (target.aropen_amount - target.aropen_paid - calcpendingarapplications(target.aropen_id)), current_date) AS balance, target.aropen_curr_id AS curr_id, target.aropen_docdate AS docdate FROM aropen AS target, aropen AS source WHERE ( (source.aropen_cust_id=target.aropen_cust_id) AND (target.aropen_doctype IN ('D', 'I')) AND (target.aropen_open) AND (source.aropen_id=pSourceAropenid) AND ((pTargetAropenid IS NULL) OR (target.aropen_id=pTargetAropenid)) ) ORDER BY target.aropen_duedate, target.aropen_docnumber LOOP -- Determine the amount to apply IF (_r.balance > _amount) THEN _applyAmount := _amount; ELSE _applyAmount := _r.balance; END IF; _applycurrid := _amountcurrid; -- Does an arcreditapply record already exist? SELECT arcreditapply_id, arcreditapply_amount, arcreditapply_amount * _curr_rate / currRate(arcreditapply_curr_id,_r.docdate) AS arcreditapply_amount_applycurr INTO _p FROM arcreditapply WHERE ( (arcreditapply_target_aropen_id=_r.aropenid) AND (arcreditapply_source_aropen_id=pSourceAropenid) ); IF (FOUND) THEN -- Offset the amount to apply by the amount already applied _applyAmount := (_applyAmount - _p.arcreditapply_amount_applycurr); IF (_applyAmount < 0) THEN _applyAmount := 0; END IF; -- Update the arcreditapply with the new amount to apply UPDATE arcreditapply SET arcreditapply_amount = (arcreditapply_amount + _applyAmount * currRate(arcreditapply_curr_id,_r.docdate) / _curr_rate) WHERE (arcreditapply_id=_p.arcreditapply_id); ELSE -- Create a new arcreditapply record INSERT INTO arcreditapply ( arcreditapply_source_aropen_id, arcreditapply_target_aropen_id, arcreditapply_amount, arcreditapply_curr_id ) VALUES ( pSourceAropenid, _r.aropenid, _applyAmount, _applycurrid ); END IF; _amount := _amount - currToCurr(_applycurrid, _amountcurrid, _applyAmount, _r.docdate); IF (_amount = 0) THEN EXIT; END IF; END LOOP; RETURN 1; END; $_$; CDROP FUNCTION public.applyarcreditmemotobalance(integer, integer); publicadminfalse8399212551691272?applycashreceiptlinebalance(integer, integer, numeric, integer)FUNCTIONCREATE FUNCTION applycashreceiptlinebalance(integer, integer, numeric, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCashrcptId ALIAS FOR $1; pAropenid ALIAS FOR $2; pAmount ALIAS FOR $3; pCurrId ALIAS FOR $4; _balance NUMERIC; _amount NUMERIC; _applyAmount NUMERIC := 0; _discount NUMERIC := 0; _discprct NUMERIC; _docDate DATE; _r RECORD; _doctype CHAR(1); BEGIN -- All calculations performed in currency of Cash Receipt -- Clear previously applied DELETE FROM cashrcptitem WHERE ((cashrcptitem_cashrcpt_id=pCashrcptId) AND (cashrcptitem_aropen_id=pAropenId)); -- Find the balance to apply SELECT (pAmount - (COALESCE(SUM(cashrcptitem_amount), 0) ) ), COALESCE(cashrcpt_docdate, current_date) INTO _amount, _docDate FROM cashrcpt LEFT OUTER JOIN cashrcptitem ON (cashrcptitem_cashrcpt_id = cashrcpt_id) WHERE (cashrcpt_id=pCashrcptid) GROUP BY cashrcpt_curr_id, cashrcpt_distdate, cashrcpt_docdate; SELECT (_amount - COALESCE(SUM(cashrcptmisc_amount), 0)) INTO _amount FROM cashrcptmisc WHERE (cashrcptmisc_cashrcpt_id=pCashrcptid); SELECT aropen_doctype INTO _doctype FROM aropen WHERE (aropen_id=pAropenId); RAISE DEBUG 'Amount (%) DocType (%)', _amount, _doctype; IF (_amount <= 0 AND _doctype IN ('I','D')) THEN RETURN 0; END IF; -- Determine Line balance SELECT currToCurr(aropen_curr_id, cashrcpt_curr_id, aropen_amount - aropen_paid, cashrcpt_distdate) - COALESCE((SELECT (SUM(cashrcptitem_amount) + SUM(cashrcptitem_discount)) FROM cashrcptitem, cashrcpt WHERE ((cashrcpt_id=cashrcptitem_cashrcpt_id) AND (NOT cashrcpt_void) AND (NOT cashrcpt_posted) AND (cashrcpt_id != pCashrcptId) AND (cashrcptitem_aropen_id=pAropenId))), 0) INTO _balance FROM aropen, cashrcpt WHERE ((aropen_id=pAropenId) AND (cashrcpt_id=pCashrcptId)); RAISE DEBUG 'Balance (%)', _balance; -- If Invoice or Debit Memo, determine Max Discount as per Terms IF (_doctype IN ('I','D')) THEN SELECT round(noNeg(_balance * CASE WHEN (_docDate <= determineDiscountDate(terms_id, aropen_docdate)) THEN COALESCE(terms_discprcnt, 0.0) ELSE 0.00 END - applied),2), CASE WHEN (_docDate <= determineDiscountDate(terms_id, aropen_docdate)) THEN COALESCE(terms_discprcnt, 0.0) ELSE 0.00 END INTO _discount, _discprct FROM aropen LEFT OUTER JOIN terms ON (terms_id=aropen_terms_id), (SELECT COALESCE(SUM(arapply_applied), 0.00) AS applied FROM arapply, aropen WHERE ((arapply_target_aropen_id=pAropenId) AND (arapply_source_aropen_id=pAropenId) AND (aropen_discount) ) ) AS data WHERE (aropen_id=pAropenId); -- Determine the amount to apply IF (_balance <= _amount + _discount) THEN _applyAmount := _balance - _discount; ELSE _discount := round((_amount / (1 - _discprct)) - _amount, 2); _applyAmount := _amount; END IF; ELSIF (_doctype IN ('C', 'R')) THEN -- Handle Credits, discounts don't apply here _applyAmount := _balance * -1; ELSE _applyAmount := _amount; END IF; IF (_applyAmount != 0) THEN -- Create a new cashrcptitem INSERT INTO cashrcptitem ( cashrcptitem_aropen_id, cashrcptitem_cashrcpt_id, cashrcptitem_amount,cashrcptitem_discount ) VALUES ( pAropenid, pCashrcptid, round(_applyAmount, 2), round(_discount, 2) ); END IF; RETURN abs(_applyAmount); END; $_$; VDROP FUNCTION public.applycashreceiptlinebalance(integer, integer, numeric, integer); publicadminfalse8399212551691273+applycashreceipttobalance(integer, numeric)FUNCTIONCREATE FUNCTION applycashreceipttobalance(integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCashrcptid ALIAS FOR $1; pAmount ALIAS FOR $2; BEGIN RETURN applyCashReceiptToBalance(pCashrcptid, pAmount, baseCurrId() ); END; $_$; BDROP FUNCTION public.applycashreceipttobalance(integer, numeric); publicadminfalse83992125516912744applycashreceipttobalance(integer, numeric, integer)FUNCTIONCREATE FUNCTION applycashreceipttobalance(integer, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCashrcptid ALIAS FOR $1; pAmount ALIAS FOR $2; pCurrId ALIAS FOR $3; BEGIN RETURN applyCashReceiptToBalance(pCashrcptid, pAmount, pCurrId, false); END; $_$; KDROP FUNCTION public.applycashreceipttobalance(integer, numeric, integer); publicadminfalse8399212551691275=applycashreceipttobalance(integer, numeric, integer, boolean)FUNCTIONCREATE FUNCTION applycashreceipttobalance(integer, numeric, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCashrcptid ALIAS FOR $1; pAmount ALIAS FOR $2; pCurrId ALIAS FOR $3; pInclCredits ALIAS FOR $4; _amount NUMERIC; _applied NUMERIC := 0; _applyAmount NUMERIC; _discount NUMERIC; _discprct NUMERIC; _docDate DATE; _r RECORD; _toApply NUMERIC; BEGIN -- Apply open credits first if applicable IF (pInclCredits) THEN -- First find total debits unaccounted for by this receipt so we can apply as much credit -- as possible to clear, but no more SELECT coalesce(noNeg(sum(currToCurr(aropen_curr_id, cashrcpt_curr_id, aropen_amount - aropen_paid, cashrcpt_distdate) - COALESCE((SELECT (SUM(cashrcptitem_amount) + SUM(cashrcptitem_discount)) FROM cashrcptitem, cashrcpt WHERE ((cashrcpt_id=cashrcptitem_cashrcpt_id) AND (NOT cashrcpt_void) AND (NOT cashrcpt_posted) AND (cashrcpt_id != pCashrcptid) AND (cashrcptitem_aropen_id=aropen_id))), 0)) - pAmount),0) INTO _toApply FROM cashrcpt JOIN custinfo ON (cashrcpt_cust_id=cust_id) JOIN aropen ON (cust_id=aropen_cust_id) WHERE ((cashrcpt_id=pCashrcptid) AND (aropen_open) AND (aropen_doctype IN ('I','D'))); -- Loop through and apply credits until we account for all remaining debits we can FOR _r IN SELECT aropen_id FROM cashrcpt JOIN custinfo ON (cashrcpt_cust_id=cust_id) JOIN aropen ON (cust_id=aropen_cust_id) WHERE ((cashrcpt_id=pCashrcptid) AND (aropen_open) AND (aropen_doctype IN ('C','R'))) ORDER BY aropen_duedate, aropen_docnumber LOOP EXIT WHEN _toApply <= 0; _toApply := _toApply - applyCashReceiptLineBalance(pCashrcptid, _r.aropen_id, _toApply, pCurrId); END LOOP; END IF; -- Find the balance to apply SELECT (currToCurr(pCurrId, cashrcpt_curr_id, pAmount, cashrcpt_distdate) - (COALESCE(SUM(cashrcptitem_amount), 0) ) ), COALESCE(cashrcpt_docdate, current_date) INTO _amount, _docDate FROM cashrcpt LEFT OUTER JOIN cashrcptitem ON (cashrcptitem_cashrcpt_id = cashrcpt_id) WHERE (cashrcpt_id=pCashrcptid) GROUP BY cashrcpt_curr_id, cashrcpt_distdate, cashrcpt_docdate; SELECT (_amount - COALESCE(SUM(cashrcptmisc_amount), 0)) INTO _amount FROM cashrcptmisc WHERE (cashrcptmisc_cashrcpt_id=pCashrcptid); IF (_amount = 0) THEN RETURN 1; END IF; -- Loop through the aropen item in order of due date, searching only for -- aropen items that are open, for the current customer and have an outstanding balance FOR _r IN SELECT aropen_id, currToCurr(aropen_curr_id, cashrcpt_curr_id, aropen_amount - aropen_paid, cashrcpt_distdate) - COALESCE((SELECT SUM(cashrcptitem_amount) + SUM(cashrcptitem_discount) FROM cashrcptitem, cashrcpt WHERE ((cashrcpt_id=cashrcptitem_cashrcpt_id) AND (NOT cashrcpt_void) AND (NOT cashrcpt_posted) AND (cashrcpt_id != pCashrcptId) AND (cashrcptitem_aropen_id=aropen_id))), 0) AS balance, s.cashrcptitem_id AS cashrcptitem_id FROM cashrcpt, aropen LEFT OUTER JOIN cashrcptitem s ON (s.cashrcptitem_aropen_id=aropen_id AND s.cashrcptitem_cashrcpt_id=pCashrcptId) LEFT OUTER JOIN terms ON (aropen_terms_id=terms_id), (SELECT COALESCE(SUM(arapply_applied), 0.00) AS applied FROM arapply, aropen WHERE ((arapply_target_aropen_id=aropen_id) AND (arapply_source_aropen_id=aropen_id) AND (aropen_discount) ) ) AS data WHERE ( (aropen_cust_id=cashrcpt_cust_id) AND (aropen_doctype IN ('I', 'D')) AND (aropen_open) AND (cashrcpt_id=pCashrcptid) ) ORDER BY aropen_duedate, aropen_amount, balance LOOP -- Determine Max Discount as per Terms SELECT round(noNeg(_r.balance * CASE WHEN (_docDate <= determineDiscountDate(terms_id, aropen_docdate)) THEN terms_discprcnt ELSE 0.00 END - applied),2), CASE WHEN (_docDate <= determineDiscountDate(terms_id, aropen_docdate)) THEN terms_discprcnt ELSE 0.00 END INTO _discount, _discprct FROM aropen LEFT OUTER JOIN terms ON (terms_id=aropen_terms_id), (SELECT COALESCE(SUM(arapply_applied), 0.00) AS applied FROM arapply, aropen WHERE ((arapply_target_aropen_id=_r.aropen_id) AND (arapply_source_aropen_id=_r.aropen_id) AND (aropen_discount) ) ) AS data WHERE (aropen_id=_r.aropen_id); -- Determine the amount to apply IF (_r.balance <= _amount + _discount) THEN _applyAmount := _r.balance - _discount; ELSE _discount := round((_amount / (1 - _discprct)) - _amount, 2); _applyAmount := _amount; END IF; IF (_applyAmount > 0) THEN -- Does an cashrcptitem already exist? IF (_r.cashrcptitem_id IS NOT NULL) THEN -- Update the cashrcptitem with the new amount to apply UPDATE cashrcptitem SET cashrcptitem_amount = round(cashrcptitem_amount + _applyAmount, 2), cashrcptitem_discount = round(_discount, 2) WHERE (cashrcptitem_id=_r.cashrcptitem_id); ELSE -- Create a new cashrcptitem INSERT INTO cashrcptitem ( cashrcptitem_aropen_id, cashrcptitem_cashrcpt_id, cashrcptitem_amount, cashrcptitem_discount ) VALUES ( _r.aropen_id, pCashrcptid, round(_applyAmount, 2), round(_discount, 2) ); END IF; _amount := (_amount - _applyAmount); IF (round(_amount, 2) = 0) THEN EXIT; END IF; END IF; END LOOP; RETURN 1; END; $_$; TDROP FUNCTION public.applycashreceipttobalance(integer, numeric, integer, boolean); publicadminfalse8399212552008341araging(date, boolean)FUNCTIONCREATE FUNCTION araging(date, boolean) RETURNS SETOF araging LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAsOfDate ALIAS FOR $1; pUseDocDate ALIAS FOR $2; _row araging%ROWTYPE; BEGIN FOR _row IN SELECT * FROM araging(pAsOfDate, pUseDocDate, true) LOOP RETURN NEXT _row; END LOOP; RETURN; END; $_$; -DROP FUNCTION public.araging(date, boolean); publicadminfalse82575399212552008342araging(date, boolean, boolean)FUNCTION5CREATE FUNCTION araging(date, boolean, boolean) RETURNS SETOF araging LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAsOfDate ALIAS FOR $1; pUseDocDate ALIAS FOR $2; pConvBaseCurr ALIAS FOR $3; _row araging%ROWTYPE; _x RECORD; _returnVal INTEGER; _asOfDate DATE; BEGIN _asOfDate := COALESCE(pAsOfDate,current_date); FOR _x IN SELECT aropen_docdate, aropen_duedate, aropen_ponumber, aropen_docnumber, aropen_doctype, cust_id, cust_name, cust_number, cust_custtype_id, custtype_code, terms_descrip, --if pConvBaseCurr is true then use currtobase to convert all amounts to base based on aropen_docdate to ensure the same exchange rate --otherwise use currtocurr to convert all amounts to customer's currency based on aropen_docdate to ensure the same exchange rate --today and greater: CASE WHEN((aropen_duedate >= DATE(_asOfDate))) THEN balance ELSE 0.0 END AS cur_val, --0 to 30 CASE WHEN((aropen_duedate >= DATE(_asOfDate)-30) AND (aropen_duedate < DATE(_asOfDate))) THEN balance ELSE 0.0 END AS thirty_val, --30-60 CASE WHEN((aropen_duedate >= DATE(_asOfDate)-60) AND (aropen_duedate < DATE(_asOfDate) - 30 )) THEN balance ELSE 0.0 END AS sixty_val, --60-90 CASE WHEN((aropen_duedate >= DATE(_asOfDate)-90) AND (aropen_duedate < DATE(_asOfDate) - 60)) THEN balance ELSE 0.0 END AS ninety_val, --greater than 90: CASE WHEN((aropen_duedate > DATE(_asOfDate)-10000) AND (aropen_duedate < DATE(_asOfDate) - 90)) THEN balance ELSE 0.0 END AS plus_val, --total amount: CASE WHEN((aropen_duedate > DATE(_asOfDate)-10000)) THEN balance ELSE 0.0 END AS total_val, --AR Open Amount base aropen_amount FROM ( SELECT (((aropen_amount - aropen_paid + COALESCE(SUM(arapply_target_paid),0))) / CASE WHEN (pConvBaseCurr) THEN aropen_curr_rate ELSE currRate(aropen_curr_id, cust_curr_id, aropen_docdate) END * CASE WHEN (aropen_doctype IN ('C', 'R')) THEN -1.0 ELSE 1.0 END) AS balance, ((aropen_amount) / CASE WHEN (pConvBaseCurr) THEN aropen_curr_rate ELSE currRate(aropen_curr_id, cust_curr_id, aropen_docdate) END * CASE WHEN (aropen_doctype IN ('C', 'R')) THEN -1.0 ELSE 1.0 END) AS aropen_amount, aropen_docdate, aropen_duedate, aropen_ponumber, aropen_docnumber, aropen_doctype, cust_id, cust_name, cust_number, cust_custtype_id, custtype_code, COALESCE(arterms.terms_descrip, custterms.terms_descrip, '') AS terms_descrip FROM aropen JOIN custinfo ON (cust_id=aropen_cust_id) JOIN custtype ON (custtype_id=cust_custtype_id) LEFT OUTER JOIN terms arterms ON (arterms.terms_id=aropen_terms_id) LEFT OUTER JOIN terms custterms ON (custterms.terms_id=cust_terms_id) LEFT OUTER JOIN arapply ON (((aropen_id=arapply_target_aropen_id) OR (aropen_id=arapply_source_aropen_id)) AND (arapply_distdate>_asOfDate)) WHERE ( (CASE WHEN (pUseDocDate) THEN aropen_docdate ELSE aropen_distdate END <= _asOfDate) AND (COALESCE(aropen_closedate,_asOfDate+1)>_asOfDate) ) GROUP BY aropen_id,aropen_docdate,aropen_duedate,aropen_ponumber,aropen_docnumber,aropen_doctype,aropen_paid, aropen_curr_id,aropen_amount,cust_id,cust_name,cust_number,cust_custtype_id,custtype_code, arterms.terms_descrip,custterms.terms_descrip, aropen_curr_rate, aropen_curr_id, cust_curr_id ORDER BY cust_number, aropen_duedate ) AS data LOOP _row.araging_docdate := _x.aropen_docdate; _row.araging_duedate := _x.aropen_duedate; _row.araging_ponumber := _x.aropen_ponumber; _row.araging_docnumber := _x.aropen_docnumber; _row.araging_doctype := _x.aropen_doctype; _row.araging_cust_id := _x.cust_id; _row.araging_cust_number := _x.cust_number; _row.araging_cust_name := _x.cust_name; _row.araging_cust_custtype_id := _x.cust_custtype_id; _row.araging_custtype_code := _x.custtype_code; _row.araging_terms_descrip := _x.terms_descrip; _row.araging_aropen_amount := _x.aropen_amount; _row.araging_cur_val := _x.cur_val; _row.araging_thirty_val := _x.thirty_val; _row.araging_sixty_val := _x.sixty_val; _row.araging_ninety_val := _x.ninety_val; _row.araging_plus_val := _x.plus_val; _row.araging_total_val := _x.total_val; RETURN NEXT _row; END LOOP; RETURN; END; $_$; 6DROP FUNCTION public.araging(date, boolean, boolean); publicadminfalse83992257512551691279arapplied(integer, date)FUNCTIONzCREATE FUNCTION arapplied(integer, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAropenid ALIAS FOR $1; pDate ALIAS FOR $2; _amount NUMERIC; BEGIN -- Return amount applied to an aropen in base currency item as of the parameter date SELECT SUM(currtobase(arapply_curr_id,arapply_applied,pDate)) INTO _amount FROM arapply WHERE (((arapply_target_aropen_id = pAropenid) OR (arapply_source_aropen_id = pAropenid)) AND (((arapply_journalnumber=0) AND (arapply_postdate <= pDate)) OR EXISTS(SELECT * FROM gltrans WHERE ((gltrans_journalnumber=arapply_journalnumber) AND (gltrans_date <= pDate))))); IF (_amount IS NULL) THEN RETURN 0; ELSE RETURN _amount; END IF; END; $_$; /DROP FUNCTION public.arapplied(integer, date); publicadminfalse8399212551691280archivesaleshistory(integer)FUNCTIONCREATE FUNCTION archivesaleshistory(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSohistid ALIAS FOR $1; BEGIN INSERT INTO asohist ( asohist_id, asohist_cust_id, asohist_itemsite_id, asohist_shipdate, asohist_invcdate, asohist_duedate, asohist_promisedate, asohist_ordernumber, asohist_invcnumber, asohist_qtyshipped, asohist_unitprice, asohist_unitcost, asohist_billtoname, asohist_billtoaddress1, asohist_billtoaddress2, asohist_billtoaddress3, asohist_billtocity, asohist_billtostate, asohist_billtozip, asohist_shiptoname, asohist_shiptoaddress1, asohist_shiptoaddress2, asohist_shiptoaddress3, asohist_shiptocity, asohist_shiptostate, asohist_shiptozip, asohist_shipto_id, asohist_shipvia, asohist_salesrep_id, asohist_misc_type, asohist_misc_descrip, asohist_misc_id, asohist_commission, asohist_commissionpaid, asohist_doctype, asohist_orderdate, asohist_imported, asohist_ponumber, asohist_curr_id, asohist_taxtype_id, asohist_taxzone_id ) SELECT cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipdate, cohist_invcdate, cohist_duedate, cohist_promisedate, cohist_ordernumber, cohist_invcnumber, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_shipto_id, cohist_shipvia, cohist_salesrep_id, cohist_misc_type, cohist_misc_descrip, cohist_misc_id, cohist_commission, cohist_commissionpaid, cohist_doctype, cohist_orderdate, cohist_imported, cohist_ponumber, cohist_curr_id, cohist_taxtype_id, cohist_taxzone_id FROM cohist WHERE (cohist_id=pSohistid); INSERT INTO asohisttax ( taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM cohisttax WHERE (taxhist_parent_id=pSohistid); DELETE FROM cohisttax WHERE (taxhist_parent_id=pSohistid); DELETE FROM cohist WHERE (cohist_id=pSohistid); RETURN pSohistid; END; $_$; 3DROP FUNCTION public.archivesaleshistory(integer); publicadminfalse8399212551691281+arcurrgain(integer, integer, numeric, date)FUNCTIONCREATE FUNCTION arcurrgain(integer, integer, numeric, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAropenId ALIAS FOR $1; pCurrId ALIAS FOR $2; pValue ALIAS FOR $3; pDate ALIAS FOR $4; _start DATE; _end DATE; _gain NUMERIC; _r RECORD; BEGIN IF (pAropenId IS NULL OR pValue = 0) THEN RETURN 0; END IF; SELECT aropen_docdate, aropen_curr_id, aropen_curr_rate INTO _r FROM aropen WHERE (aropen_id=pAropenId); IF (_r.aropen_docdate > pDate) THEN _gain := (currToBase(pCurrId, pValue, pDate) - currToCurr(pCurrId,_r.aropen_curr_id, pValue, pDate) / _r.aropen_curr_rate) * -1; ELSE _gain := currToCurr(pCurrId,_r.aropen_curr_id, pValue, pDate) / _r.aropen_curr_rate - currToBase(pCurrId, pValue, pDate); END IF; IF (_gain IS NULL) THEN RAISE EXCEPTION 'Error processing currency gain/loss.'; END IF; RETURN _gain; END; $_$; BDROP FUNCTION public.arcurrgain(integer, integer, numeric, date); publicadminfalse8399212551691282 armor(bytea)FUNCTIONqCREATE FUNCTION armor(bytea) RETURNS text LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_armor'; #DROP FUNCTION public.armor(bytea); publicadminfalse812591691283invbalTABLECREATE TABLE invbal ( invbal_id integer NOT NULL, invbal_period_id integer, invbal_itemsite_id integer, invbal_qoh_beginning numeric(18,6) NOT NULL, invbal_qoh_ending numeric(18,6) NOT NULL, invbal_qty_in numeric(18,6) NOT NULL, invbal_qty_out numeric(18,6) NOT NULL, invbal_value_beginning numeric(12,2) NOT NULL, invbal_value_ending numeric(12,2) NOT NULL, invbal_value_in numeric(12,2) NOT NULL, invbal_value_out numeric(12,2) NOT NULL, invbal_nn_beginning numeric(18,6) NOT NULL, invbal_nn_ending numeric(18,6) NOT NULL, invbal_nn_in numeric(18,6) NOT NULL, invbal_nn_out numeric(18,6) NOT NULL, invbal_nnval_beginning numeric(12,2) NOT NULL, invbal_nnval_ending numeric(12,2) NOT NULL, invbal_nnval_in numeric(12,2) NOT NULL, invbal_nnval_out numeric(12,2) NOT NULL, invbal_dirty boolean DEFAULT true NOT NULL ); DROP TABLE public.invbal; publicadminfalse57518!00invbalACLREVOKE ALL ON TABLE invbal FROM PUBLIC; REVOKE ALL ON TABLE invbal FROM admin; GRANT ALL ON TABLE invbal TO admin; GRANT ALL ON TABLE invbal TO xtrole; publicadminfalse15012551691287asofinvbal(integer, date)FUNCTIONWCREATE FUNCTION asofinvbal(integer, date) RETURNS SETOF invbal LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteId ALIAS FOR $1; pAsofDate ALIAS FOR $2; _result invbal%ROWTYPE; _i RECORD; _h RECORD; _r RECORD; _prevCostmethod TEXT := 'A'; _prevDate TIMESTAMP WITH TIME ZONE; _runningQty NUMERIC := 0; _runningNn NUMERIC := 0; _runningValue NUMERIC := 0; _runningNnval NUMERIC := 0; BEGIN /* This is a base function to gather data. Because it is STABLE it should only need to be calculated once, even though it is likely to be called several times by other functions in parent query to present the various data. */ -- First make sure inventory balance is forward updated PERFORM forwardUpdateItemsite(pItemsiteId); -- Next find the previous period balace to use as a starting point SELECT invbal.*, period_start, itemsite_costmethod INTO _i FROM invbal JOIN itemsite ON (invbal_itemsite_id=itemsite_id) JOIN period ON (invbal_period_id=period_id) WHERE ((invbal_itemsite_id=pItemsiteId) AND (pAsofDate >= period_start)) ORDER BY period_start DESC LIMIT 1; _runningQty := _i.invbal_qoh_beginning; _runningNn := _i.invbal_nn_beginning; _runningValue := _i.invbal_value_beginning; _runningNnval := _i.invbal_nnval_beginning; _prevDate := _i.period_start; _prevCostmethod := _i.itemsite_costmethod; FOR _r IN SELECT invhist_id, invhist_created, invhist_invqty, invhist_transtype, invhist_unitcost, invhist_costmethod, itemsite_item_id, invhistSense(invhist_id) AS sense FROM invhist JOIN itemsite ON (itemsite_id=invhist_itemsite_id) WHERE ((invhist_itemsite_id=pItemsiteId) AND (invhist_transdate::date BETWEEN _i.period_start AND pAsofdate)) ORDER BY invhist_created, invhist_id LOOP -- Update balances changed by any standard cost update between transactions IF (_prevCostmethod = 'S' AND _runningQty != 0) THEN FOR _h IN SELECT costhist_oldcost, costhist_newcost FROM costhist JOIN item ON (costhist_item_id=item_id) JOIN itemsite ON (itemsite_item_id=item_id) WHERE ((itemsite_id=pItemsiteId) AND (costhist_date BETWEEN _prevDate AND _r.invhist_created) AND (costhist_type IN ('S','D'))) LOOP _runningValue := _runningValue + round((_h.costhist_newcost-_h.costhist_oldcost) * _runningQty,2); _runningNnval := _runningNnval + round((_h.costhist_newcost-_h.costhist_oldcost) * _runningNn,2); END LOOP; END IF; _prevDate := _r.invhist_created; _prevCostmethod := _r.invhist_costmethod; _runningQty := _runningQty + _r.invhist_invqty * _r.sense; _runningValue := _runningValue + round( _r.invhist_invqty * _r.sense * _r.invhist_unitcost,2); IF (_r.invhist_transtype = 'NN') THEN _runningNn := _runningNn + _r.invhist_invqty * -1; _runningNnval := _runningNnval + round( _r.invhist_invqty * -1 * _r.invhist_unitcost,2); END IF; END LOOP; _prevDate := COALESCE(_prevDate, _i.period_start); _prevCostmethod := COALESCE(_r.invhist_costmethod, _i.itemsite_costmethod); IF (_prevCostmethod = 'S' AND _runningQty != 0) THEN FOR _h IN SELECT costhist_oldcost, costhist_newcost FROM costhist JOIN item ON (costhist_item_id=item_id) JOIN itemsite ON (itemsite_item_id=item_id) WHERE ((itemsite_id=pItemsiteId) AND (costhist_date BETWEEN _prevDate AND CAST(pAsofDate + 1 AS TIMESTAMP WITH TIME ZONE)) AND (costhist_type IN ('S','D'))) LOOP _runningValue := _runningValue + round((_h.costhist_newcost-_h.costhist_oldcost) * _runningQty,2); _runningNnval := _runningNnval + round((_h.costhist_newcost-_h.costhist_oldcost) * _runningNn,2); END LOOP; END IF; _result := _i; _result.invbal_qoh_ending := _runningQty; _result.invbal_value_ending := _runningValue; _result.invbal_nn_ending := _runningNn; _result.invbal_nnval_ending := _runningNnval; RETURN NEXT _result; RETURN; END; $_$; 0DROP FUNCTION public.asofinvbal(integer, date); publicadminfalse83992261912551691288asofinvnn(integer, date)FUNCTIONCREATE FUNCTION asofinvnn(integer, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteId ALIAS FOR $1; pAsofDate ALIAS FOR $2; _result NUMERIC; BEGIN SELECT invbal_nn_ending INTO _result FROM asofinvbal(pItemsiteId, pAsofDate); RETURN COALESCE(_result, 0); END; $_$; /DROP FUNCTION public.asofinvnn(integer, date); publicadminfalse8399212551691289asofinvqty(integer, date)FUNCTIONCREATE FUNCTION asofinvqty(integer, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteId ALIAS FOR $1; pAsofDate ALIAS FOR $2; _result NUMERIC; BEGIN SELECT invbal_qoh_ending INTO _result FROM asofinvbal(pItemsiteId, pAsofDate); RETURN COALESCE(_result, 0); END; $_$; 0DROP FUNCTION public.asofinvqty(integer, date); publicadminfalse8399212551691290attachcontact(integer, integer)FUNCTIONCREATE FUNCTION attachcontact(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pcntctId ALIAS FOR $1; pcrmacctId ALIAS FOR $2; BEGIN UPDATE cntct SET cntct_crmacct_id = pcrmacctId WHERE cntct_id = pcntctId; RETURN 0; END; $_$; 6DROP FUNCTION public.attachcontact(integer, integer); publicadminfalse8399212551691291*attachquotetoopportunity(integer, integer)FUNCTIONCREATE FUNCTION attachquotetoopportunity(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; pOpheadid ALIAS FOR $2; BEGIN -- Check Quote IF (NOT EXISTS(SELECT quhead_id FROM quhead WHERE (quhead_id=pQuheadid))) THEN RETURN -1; END IF; -- Check Opportunity IF (NOT EXISTS(SELECT ophead_id FROM ophead WHERE (ophead_id=pOpheadid))) THEN RETURN -2; END IF; -- Cannot attach if already attached IF (EXISTS(SELECT quhead_id FROM quhead WHERE ((quhead_id=pQuheadid) AND (quhead_ophead_id IS NOT NULL)))) THEN RETURN -3; END IF; UPDATE quhead SET quhead_ophead_id=pOpheadid WHERE (quhead_id=pQuheadid); RETURN 0; END; $_$; ADROP FUNCTION public.attachquotetoopportunity(integer, integer); publicadminfalse8399212551691292/attachsalesordertoopportunity(integer, integer)FUNCTIONCREATE FUNCTION attachsalesordertoopportunity(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; pOpheadid ALIAS FOR $2; BEGIN -- Check Sales Order IF (NOT EXISTS(SELECT cohead_id FROM cohead WHERE (cohead_id=pSoheadid))) THEN RETURN -1; END IF; -- Check Opportunity IF (NOT EXISTS(SELECT ophead_id FROM ophead WHERE (ophead_id=pOpheadid))) THEN RETURN -2; END IF; -- Cannot attach if already attached IF (EXISTS(SELECT cohead_id FROM cohead WHERE ((cohead_id=pSoheadid) AND (cohead_ophead_id IS NOT NULL)))) THEN RETURN -3; END IF; UPDATE cohead SET cohead_ophead_id=pOpheadid WHERE (cohead_id=pSoheadid); RETURN 0; END; $_$; FDROP FUNCTION public.attachsalesordertoopportunity(integer, integer); publicadminfalse8399212551691293&averagesalesprice(integer, date, date)FUNCTIONCREATE FUNCTION averagesalesprice(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _p RECORD; BEGIN -- Returns value in base currency -- ToDo: is cohist_shipdate the right DATE to use? SELECT SUM(cohist_qtyshipped * currToBase(cohist_curr_id, cohist_unitprice, cohist_shipdate)) AS totalsales, SUM(cohist_qtyshipped) AS totalship INTO _p FROM cohist WHERE ( (cohist_itemsite_id=pItemsiteid) AND (cohist_invcdate BETWEEN pStartDate AND pEndDate) ); IF ( (_p.totalship IS NULL) OR (_p.totalship = 0) ) THEN RETURN 0; ELSE RETURN (_p.totalsales / _p.totalship); END IF; END; $_$; =DROP FUNCTION public.averagesalesprice(integer, date, date); publicadminfalse3992812551691294avgcost(integer)FUNCTIONCREATE FUNCTION avgcost(pitemsiteid integer) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _value NUMERIC; _qoh NUMERIC; _qohnn NUMERIC; BEGIN SELECT itemsite_value, itemsite_qtyonhand, itemsite_nnqoh INTO _value, _qoh, _qohnn FROM itemsite WHERE(itemsite_id=pItemsiteid); IF (_qoh = 0.0 AND _qohnn = 0.0) THEN RETURN 0.0; END IF; RETURN _value / (_qoh + _qohnn); END; $$; 3DROP FUNCTION public.avgcost(pitemsiteid integer); publicadminfalse8399212551691295balanceitemsite(integer)FUNCTIONxCREATE FUNCTION balanceitemsite(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; _itemlocseries INTEGER; _balanced NUMERIC; _qoh NUMERIC; _nnQoh NUMERIC; BEGIN -- Make sure that that passed Itemsite is MLC or Lot/Serial controlled IF ( ( SELECT (NOT ( (itemsite_loccntrl) OR (itemsite_controlmethod IN ('L', 'S')) )) FROM itemsite WHERE (itemsite_id=pItemsiteid) ) ) THEN RETURN 0; END IF; IF ( ( SELECT itemsite_freeze FROM itemsite WHERE(itemsite_id=pItemsiteid) ) ) THEN RETURN -1; END IF; -- Calculate the Netable portion SELECT COALESCE(SUM(itemloc_qty), 0) INTO _balanced FROM itemloc LEFT OUTER JOIN location ON (itemloc_location_id=location_id) WHERE ( ( (location_id IS NULL) OR (location_netable) ) AND (itemloc_itemsite_id=pItemsiteid) ); -- Post an AD Transaction for the Netable portion SELECT invAdjustment( itemsite_id, (_balanced - itemsite_qtyonhand), 'Balance', 'Inventory Balance' ) INTO _itemlocseries FROM itemsite WHERE (itemsite_id=pItemsiteid); -- Post the invtrans records associated with the itemlocdist records PERFORM postInvhist(itemlocdist_invhist_id) FROM itemlocdist WHERE(itemlocdist_series=_itemlocseries); -- Kill the resultant distribution records DELETE FROM itemlocdist WHERE (itemlocdist_series=_itemlocseries); -- Calculate and write the Non-Netable portion directly SELECT COALESCE(SUM(itemloc_qty), 0) INTO _nnQoh FROM itemloc, location WHERE ( (itemloc_location_id=location_id) AND (NOT location_netable) AND (itemloc_itemsite_id=pItemsiteid) ); UPDATE itemsite SET itemsite_nnqoh = _nnQoh WHERE (itemsite_id=pItemsiteid); RETURN 1; END; $_$; /DROP FUNCTION public.balanceitemsite(integer); publicadminfalse8399212551691297bomcontains(integer, integer)FUNCTIONgCREATE FUNCTION bomcontains(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pparentitemid ALIAS FOR $1; pchilditemid ALIAS FOR $2; _bomworksetid INTEGER; _result BOOLEAN; BEGIN _bomworksetid := indentedWhereUsed(pchilditemid); _result := EXISTS(SELECT bomwork_id FROM bomwork WHERE ((bomwork_set_id=_bomworksetid) AND (bomwork_item_id=pparentitemid) )); PERFORM deleteBOMWorkset(_bomworksetid); RETURN _result; END; $_$; 4DROP FUNCTION public.bomcontains(integer, integer); publicadminfalse8399212551691298bomhistsequence(integer)FUNCTIONCREATE FUNCTION bomhistsequence(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pHistid ALIAS FOR $1; _wid INTEGER; _seqnum TEXT; _bomhist RECORD; BEGIN _wid := pHistid; SELECT bomhist_parent_id AS parent, to_char(bomhist_seqnumber, '00009') AS seq INTO _bomhist FROM bomhist WHERE bomhist_seq_id=_wid; IF (FOUND) THEN _seqnum := _bomhist.seq; _wid := _bomhist.parent; WHILE (_wid != -1) LOOP SELECT bomhist_parent_id AS parent, to_char(bomhist_seqnumber, '00009') AS seq INTO _bomhist FROM bomhist WHERE bomhist_seq_id=_wid; IF (FOUND) THEN _seqnum := _bomhist.seq || '-' || _seqnum; _wid := _bomhist.parent; ELSE _wid := -1; END IF; END LOOP; ELSE _seqnum := ''::TEXT; END IF; RETURN _seqnum; END; $_$; /DROP FUNCTION public.bomhistsequence(integer); publicadminfalse8399212591691299bomitemTABLECREATE TABLE bomitem ( bomitem_id integer DEFAULT nextval(('bomitem_bomitem_id_seq'::text)::regclass) NOT NULL, bomitem_parent_item_id integer NOT NULL, bomitem_seqnumber integer, bomitem_item_id integer NOT NULL, bomitem_qtyper numeric(20,8) NOT NULL, bomitem_scrap numeric(8,4) NOT NULL, bomitem_status character(1), bomitem_effective date NOT NULL, bomitem_expires date NOT NULL, bomitem_createwo boolean NOT NULL, bomitem_issuemethod character(1) NOT NULL, bomitem_schedatwooper boolean NOT NULL, bomitem_ecn text, bomitem_moddate date, bomitem_subtype character(1) NOT NULL, bomitem_uom_id integer NOT NULL, bomitem_rev_id integer DEFAULT (-1), bomitem_booitem_seq_id integer DEFAULT (-1), bomitem_char_id integer, bomitem_value text, bomitem_notes text, bomitem_ref text, bomitem_qtyfxd numeric(20,8) DEFAULT 0 NOT NULL, bomitem_issuewo boolean DEFAULT false NOT NULL, CONSTRAINT bomitem_bomitem_issuemethod_check CHECK ((((bomitem_issuemethod = 'M'::bpchar) OR (bomitem_issuemethod = 'S'::bpchar)) OR (bomitem_issuemethod = 'L'::bpchar))), CONSTRAINT bomitem_bomitem_subtype_check CHECK ((((bomitem_subtype = 'N'::bpchar) OR (bomitem_subtype = 'I'::bpchar)) OR (bomitem_subtype = 'B'::bpchar))) ); DROP TABLE public.bomitem; publicadminfalse57525753575457555756575757588!00 TABLE bomitemCOMMENTSCOMMENT ON TABLE bomitem IS 'Bill of Materials (BOM) component Items information'; publicadminfalse151!00COLUMN bomitem.bomitem_qtyfxdCOMMENTKCOMMENT ON COLUMN bomitem.bomitem_qtyfxd IS 'The fixed quantity required'; publicadminfalse151!00bomitemACLREVOKE ALL ON TABLE bomitem FROM PUBLIC; REVOKE ALL ON TABLE bomitem FROM admin; GRANT ALL ON TABLE bomitem TO admin; GRANT ALL ON TABLE bomitem TO xtrole; publicadminfalse15112551691312bomitem(integer)FUNCTIONCCREATE FUNCTION bomitem(integer) RETURNS SETOF bomitem LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT * FROM bomitem WHERE ((bomitem_parent_item_id=$1) AND (bomitem_rev_id=getActiveRevId('BOM',$1))); $_$; 'DROP FUNCTION public.bomitem(integer); publicadminfalse8262112551691313bomitem(integer, integer)FUNCTION6CREATE FUNCTION bomitem(integer, integer) RETURNS SETOF bomitem LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT * FROM bomitem WHERE ((bomitem_parent_item_id=$1) AND (bomitem_rev_id=$2)); $_$; 0DROP FUNCTION public.bomitem(integer, integer); publicadminfalse8262112551691314bomlevelbyitem(integer)FUNCTIONCREATE FUNCTION bomlevelbyitem(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; _cnt INTEGER; _result INTEGER; _bomitem RECORD; BEGIN _cnt := 0; BEGIN FOR _bomitem IN SELECT bomitem_parent_item_id FROM bomitem WHERE ((bomitem_item_id=pItemid) AND (bomitem_rev_id=getActiveRevId('BOM',bomitem_parent_item_id)) AND (CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires - 1))) LOOP SELECT bomLevelByItem(_bomitem.bomitem_parent_item_id) + 1 INTO _result; IF (_result > _cnt) THEN _cnt := _result; END IF; END LOOP; EXCEPTION WHEN statement_too_complex THEN RAISE EXCEPTION 'potential recursive BOM found for item_id %', pItemid; END; return _cnt; END; $_$; .DROP FUNCTION public.bomlevelbyitem(integer); publicadminfalse8399212551691315 bomlevelbyitem(integer, integer)FUNCTIONCREATE FUNCTION bomlevelbyitem(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pBomrevid ALIAS FOR $2; _cnt INTEGER; _result INTEGER; _bomitem RECORD; BEGIN _cnt := 0; BEGIN FOR _bomitem IN SELECT bomitem_parent_item_id FROM bomitem WHERE ((bomitem_item_id=pItemid) AND (bomitem_rev_id=pBomrevid) AND (CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires - 1))) LOOP SELECT bomLevelByItem(_bomitem.bomitem_parent_item_id, pBomrevid) + 1 INTO _result; IF (_result > _cnt) THEN _cnt := _result; END IF; END LOOP; EXCEPTION WHEN statement_too_complex THEN RAISE EXCEPTION 'potential recursive BOM found for item_id %', pItemid; END; return _cnt; END; $_$; 7DROP FUNCTION public.bomlevelbyitem(integer, integer); publicadminfalse8399212551691316bomworkeffective(integer, date)FUNCTION*CREATE FUNCTION bomworkeffective(integer, date) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE workid ALIAS FOR $1; effdate ALIAS FOR $2; _wid INTEGER; _bomwork RECORD; BEGIN _wid := workid; WHILE (_wid != -1) LOOP SELECT bomwork_parent_id AS parent, bomwork_effective AS effective INTO _bomwork FROM bomwork WHERE bomwork_id=_wid; IF (FOUND) THEN _wid := _bomwork.parent; IF (_bomwork.effective > effdate) THEN RETURN FALSE; END IF; ELSE _wid := -1; END IF; END LOOP; RETURN TRUE; END; $_$; 6DROP FUNCTION public.bomworkeffective(integer, date); publicadminfalse8399212551691317bomworkexpired(integer, date)FUNCTION#CREATE FUNCTION bomworkexpired(integer, date) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE workid ALIAS FOR $1; expdate ALIAS FOR $2; _wid INTEGER; _bomwork RECORD; BEGIN _wid := workid; WHILE (_wid != -1) LOOP SELECT bomwork_parent_id AS parent, bomwork_expires AS expires INTO _bomwork FROM bomwork WHERE bomwork_id=_wid; IF (FOUND) THEN _wid := _bomwork.parent; IF (_bomwork.expires <= expdate) THEN RETURN TRUE; END IF; ELSE _wid := -1; END IF; END LOOP; RETURN FALSE; END; $_$; 4DROP FUNCTION public.bomworkexpired(integer, date); publicadminfalse8399212551691318bomworkitemsequence(integer)FUNCTIONCREATE FUNCTION bomworkitemsequence(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWorkid ALIAS FOR $1; _wid INTEGER; _seqnum TEXT; _bomwork RECORD; BEGIN _wid := pWorkid; SELECT bomwork_parent_id AS parent, item_number AS seq INTO _bomwork FROM bomwork, item WHERE ((bomwork_id=_wid) AND (bomwork_item_id=item_id)); IF (FOUND) THEN _seqnum := _bomwork.seq; _wid := _bomwork.parent; WHILE (_wid != -1) LOOP SELECT bomwork_parent_id AS parent, item_number AS seq INTO _bomwork FROM bomwork, item WHERE ((bomwork_id=_wid) AND (bomwork_item_id=item_id)); IF (FOUND) THEN _seqnum := _bomwork.seq || '-' || _seqnum; _wid := _bomwork.parent; ELSE _wid := -1; END IF; END LOOP; ELSE _seqnum := ''::TEXT; END IF; RETURN _seqnum; END; $_$; 3DROP FUNCTION public.bomworkitemsequence(integer); publicadminfalse8399212551691319bomworksequence(integer)FUNCTIONCREATE FUNCTION bomworksequence(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWorkid ALIAS FOR $1; _wid INTEGER; _seqnum TEXT; _bomwork RECORD; BEGIN _wid := pWorkid; SELECT bomwork_parent_id AS parent, to_char(bomwork_seqnumber, '00009') AS seq INTO _bomwork FROM bomwork WHERE bomwork_id=_wid; IF (FOUND) THEN _seqnum := _bomwork.seq; _wid := _bomwork.parent; WHILE (_wid != -1) LOOP SELECT bomwork_parent_id AS parent, to_char(bomwork_seqnumber, '00009') AS seq INTO _bomwork FROM bomwork WHERE bomwork_id=_wid; IF (FOUND) THEN _seqnum := _bomwork.seq || '-' || _seqnum; _wid := _bomwork.parent; ELSE _wid := -1; END IF; END LOOP; ELSE _seqnum := ''::TEXT; END IF; RETURN _seqnum; END; $_$; /DROP FUNCTION public.bomworksequence(integer); publicadminfalse8399212551691320buildinvbal(integer)FUNCTION CREATE FUNCTION buildinvbal(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteId ALIAS FOR $1; _r RECORD; _prevCostmethod TEXT := 'A'; _prevDate TIMESTAMP WITH TIME ZONE; _runningQty NUMERIC := 0; _runningNn NUMERIC := 0; BEGIN -- Validate IF (SELECT (count(invhist_id) > 0) FROM invhist WHERE ((invhist_itemsite_id=pItemsiteId) AND (NOT invhist_posted))) THEN SELECT item_number, warehous_code INTO _r FROM itemsite JOIN item ON (item_id=itemsite_item_id) JOIN whsinfo ON (itemsite_warehous_id=warehous_id) WHERE (itemsite_id=pItemsiteId); RAISE EXCEPTION 'Unposted inventory transactions exist for % at % [xtuple: buildInvBal, -1, %, %]', _r.item_number, _r.warehous_code, _r.item_number, _r.warehous_code; END IF; -- Remove any old records DELETE FROM invbal WHERE invbal_itemsite_id=pItemsiteId; FOR _r IN SELECT invhist.*, itemsite_item_id, invhistSense(invhist_id) AS sense, item_number, warehous_code FROM invhist JOIN itemsite ON (itemsite_id=invhist_itemsite_id) JOIN item ON (itemsite_item_id=item_id) JOIN whsinfo ON (itemsite_warehous_id=warehous_id) WHERE (invhist_itemsite_id=pItemsiteId) ORDER BY invhist_created, invhist_id LOOP RAISE NOTICE 'Calculating balances for Item % at Site % against transaction %, transtype %, sense %, qty %, %', _r.item_number, _r.warehous_code, _r.invhist_id, _r.invhist_transtype, _r.sense, _r.invhist_invqty, _r.invhist_comments; -- Update balances changed by any standard cost update between transactions IF (_prevCostmethod = 'S' AND _runningQty != 0) THEN PERFORM postValueintoInvBalance(pItemsiteid, costhist_date::date, _runningQty, _runningNn, costhist_oldcost, costhist_newcost ) FROM costhist WHERE ((costhist_item_id=_r.itemsite_item_id) AND (costhist_date BETWEEN _prevDate AND _r.invhist_created) AND (costhist_type IN ('S','D'))); END IF; -- Post transaction into inventory balance table PERFORM postIntoInvBalance(_r.invhist_id); _prevDate := _r.invhist_created; _prevCostmethod := _r.invhist_costmethod; _runningQty := _runningQty + _r.invhist_invqty * _r.sense; IF (_r.invhist_transtype = 'NN') THEN _runningNn := _runningNn + _r.invhist_invqty * -1; END IF; END LOOP; -- Update balances changed by any standard cost since last transaction IF (_prevCostmethod = 'S' AND _runningQty != 0) THEN PERFORM postValueintoInvBalance(pItemsiteid, costhist_date::date, _runningQty, _runningNn, costhist_oldcost, costhist_newcost ) FROM costhist WHERE ((costhist_item_id=_r.itemsite_item_id) AND (costhist_date > _prevDate) AND (costhist_type IN ('S','D'))); END IF; -- Forward update changes through all the balances PERFORM forwardupdateitemsite(pItemsiteId); RETURN 1; END; $_$; +DROP FUNCTION public.buildinvbal(integer); publicadminfalse8399212551691321buildsearchpath()FUNCTIONCREATE FUNCTION buildsearchpath() RETURNS text LANGUAGE plpgsql AS $_$ DECLARE _path TEXT := ''; _schema TEXT; _seq INTEGER; BEGIN -- get the schemas as ordered by the administrator SELECT concatagg(quote_ident(schemaord_name) || ',') INTO _path FROM (SELECT schemaord_name FROM schemaord LEFT OUTER JOIN pkghead ON (schemaord_name=pkghead_name) WHERE (pkghead_id IS NULL OR (pkghead_id IS NOT NULL AND packageisenabled(pkghead_id))) ORDER BY schemaord_order ) AS xtspq; -- add others that we think/know we need -- TODO: is there a reason not to include public, api, or packages? FOR _schema, _seq IN SELECT pkghead_name AS schema, 0 AS seq FROM pkghead WHERE packageisenabled(pkghead_id) UNION ALL SELECT 'public', 1 UNION ALL SELECT 'api', 2 ORDER BY seq, schema LOOP IF (_path !~* (E'(^|\\W)' || _schema || E'(\\W|$)')) THEN _path := _path || ',' || quote_ident(_schema); END IF; END LOOP; -- remove extraneous spaces and commas _path = BTRIM(REGEXP_REPLACE(_path, '( ?, ?)+', ',', 'g'), ', '); RAISE DEBUG 'buildSearchPath() returning %', _path; RETURN _path; END; $_$; (DROP FUNCTION public.buildsearchpath(); publicadminfalse83992!00FUNCTION buildsearchpath()COMMENT:COMMENT ON FUNCTION buildsearchpath() IS 'buildSearchPath() examines the schemaord and pkghead tables to build a search path string. It ensures that public, api, and all enabled packages are included even if they are not listed in the schemaord table. It returns the constructed search_path but does not set it.'; publicadminfalse102212551691322+calccashbudget(integer, integer, character)FUNCTION CREATE FUNCTION calccashbudget(integer, integer, character) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAccntId ALIAS FOR $1; pPeriodId ALIAS FOR $2; pInterval ALIAS FOR $3; _accntType CHAR; _currentBudget NUMERIC; _priorBudget NUMERIC; _result NUMERIC; BEGIN SELECT accnt_type INTO _accntType FROM accnt WHERE (accnt_id=pAccntId); SELECT COALESCE(SUM(budget_amount),0) INTO _currentBudget FROM budget WHERE ((budget_accnt_id=pAccntId) AND (budget_period_id=pPeriodId)); IF (pInterval='M') THEN SELECT (COALESCE(SUM(budget_amount),0)) INTO _priorBudget FROM budget, (SELECT COALESCE(pp.period_id,-1) AS prior_period_id FROM period cp, period pp WHERE ((cp.period_id=pPeriodId) AND (cp.period_start > pp.period_start)) ORDER BY pp.period_start DESC LIMIT 1) AS data WHERE ((budget_accnt_id=pAccntId) AND (budget_period_id=prior_period_id)); ELSE IF (pInterval='Q') THEN SELECT (COALESCE(SUM(budget_amount),0)) INTO _priorBudget FROM budget, (SELECT COALESCE(pp.period_id,-1) AS prior_period_id FROM period cp, period pp WHERE ((cp.period_id=pPeriodId) AND (cp.period_start > pp.period_start) AND (pp.period_quarter= CASE WHEN cp.period_quarter > 1 THEN cp.period_quarter - 1 ELSE 4 END) AND (pp.period_start >= cp.period_start - interval '1 year')) ORDER BY pp.period_start DESC LIMIT 1) AS data WHERE ((budget_accnt_id=pAccntId) AND (budget_period_id=prior_period_id)); ELSE SELECT (COALESCE(SUM(budget_amount),0)) INTO _priorBudget FROM budget, (SELECT pp.period_id AS prior_period_id FROM period cp, period pp, yearperiod cy, yearperiod py WHERE ((cp.period_id=pPeriodId) AND (cp.period_yearperiod_id=cy.yearperiod_id) AND (pp.period_yearperiod_id=py.yearperiod_id) AND (cy.yearperiod_start > py.yearperiod_start)) ORDER BY pp.period_start DESC LIMIT 1) AS data WHERE ((budget_accnt_id=pAccntId) AND (budget_period_id=prior_period_id)); END IF; END IF; IF _accntType='A' THEN _result := ((_priorBudget-_currentBudget) * -1 ); ELSE IF (_accntType IN ('L','Q')) THEN _result := ((_priorBudget-_currentBudget) *-1); ELSE RETURN -1; END IF; END IF; RETURN _result; END; $_$; BDROP FUNCTION public.calccashbudget(integer, integer, character); publicadminfalse8399212551691323calccmheadamt(integer)FUNCTIONCREATE FUNCTION calccmheadamt(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmheadid ALIAS FOR $1; _amount NUMERIC := 0; BEGIN SELECT SUM(COALESCE(extprice, 0)) INTO _amount FROM cmhead JOIN creditmemoitem ON (cmhead_id=cmitem_cmhead_id) WHERE (cmhead_id=pCmheadid); RETURN _amount; END; $_$; -DROP FUNCTION public.calccmheadamt(integer); publicadminfalse8399212551691324calccmheadtax(integer)FUNCTIONCREATE FUNCTION calccmheadtax(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmheadid ALIAS FOR $1; _headamount NUMERIC := 0; _itemamount NUMERIC := 0; _amount NUMERIC := 0; BEGIN SELECT COALESCE(SUM(taxhist_tax), 0) INTO _headamount FROM cmhead JOIN cmheadtax ON (taxhist_parent_id=cmhead_id) WHERE (cmhead_id=pCmheadid); SELECT SUM(COALESCE(tax, 0)) INTO _itemamount FROM cmhead JOIN creditmemoitem ON (cmhead_id=cmitem_cmhead_id) WHERE (cmhead_id=pCmheadid); _amount := _headamount + _itemamount; RETURN (_amount * -1.0); END; $_$; -DROP FUNCTION public.calccmheadtax(integer); publicadminfalse8399212551691325calccobillamt(integer)FUNCTION'CREATE FUNCTION calccobillamt(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCobillid ALIAS FOR $1; _amount NUMERIC := 0; BEGIN SELECT COALESCE(round((cobill_qty * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio), 2), 0) INTO _amount FROM cobill JOIN coitem ON (coitem_id=cobill_coitem_id) WHERE (cobill_id=pCobillid); RETURN _amount; END; $_$; -DROP FUNCTION public.calccobillamt(integer); publicadminfalse8399212551691326calccobilltax(integer)FUNCTIONCREATE FUNCTION calccobilltax(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCobillid ALIAS FOR $1; _amount NUMERIC := 0; BEGIN SELECT COALESCE(calculateTax(cobmisc_taxzone_id, cobill_taxtype_id, cobmisc_shipdate, cobmisc_curr_id, calcCobillAmt(cobill_id)), 0) INTO _amount FROM cobill JOIN coitem ON (coitem_id=cobill_coitem_id) JOIN cobmisc ON (cobmisc_id=cobill_cobmisc_id) WHERE (cobill_id=pCobillid); RETURN _amount; END; $_$; -DROP FUNCTION public.calccobilltax(integer); publicadminfalse8399212551691327calccobmiscamt(integer)FUNCTIONCREATE FUNCTION calccobmiscamt(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCobmiscid ALIAS FOR $1; _amount NUMERIC := 0; BEGIN SELECT SUM(COALESCE(calcCobillAmt(cobill_id), 0)) INTO _amount FROM cobmisc JOIN cobill ON (cobmisc_id=cobill_cobmisc_id) WHERE (cobmisc_id=pCobmiscid); RETURN _amount; END; $_$; .DROP FUNCTION public.calccobmiscamt(integer); publicadminfalse8399212551691328calccobmisctax(integer)FUNCTION`CREATE FUNCTION calccobmisctax(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCobmiscid ALIAS FOR $1; _amount NUMERIC := 0; BEGIN SELECT SUM( COALESCE(calculateTax(cobmisc_taxzone_id, cobill_taxtype_id, cobmisc_shipdate, cobmisc_curr_id, COALESCE(round((cobill_qty * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio), 2), 0)) , 0) ) INTO _amount FROM cobmisc JOIN cobill ON (cobmisc_id=cobill_cobmisc_id) JOIN coitem ON (coitem_id=cobill_coitem_id) WHERE (cobmisc_id=pCobmiscid); RETURN _amount; END; $_$; .DROP FUNCTION public.calccobmisctax(integer); publicadminfalse8399212551691329"calcpendingarapplications(integer)FUNCTIONCREATE FUNCTION calcpendingarapplications(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE paropenid ALIAS FOR $1; _arcreditsum NUMERIC; _aropencurrid INTEGER; _cashrcptsum NUMERIC; _sense INTEGER; BEGIN SELECT aropen_curr_id, (CASE WHEN aropen_doctype IN ('I','D') THEN 1 ELSE -1 END) INTO _aropencurrid, _sense FROM aropen WHERE (aropen_id=paropenid); SELECT SUM(currToCurr(cashrcpt_curr_id, _aropencurrid, cashrcptitem_amount + cashrcptitem_discount, coalesce(cashrcpt_applydate, cashrcpt_distdate))) * _sense INTO _cashrcptsum FROM cashrcptitem, cashrcpt WHERE ((cashrcptitem_cashrcpt_id=cashrcpt_id) AND (NOT cashrcpt_posted) AND (NOT cashrcpt_void) AND (cashrcptitem_aropen_id=paropenid) ); SELECT SUM(currToCurr(arcreditapply_curr_id, _aropencurrid, arcreditapply_amount, CURRENT_DATE)) INTO _arcreditsum FROM arcreditapply WHERE ((arcreditapply_target_aropen_id=paropenid) ); RETURN round(COALESCE(_cashrcptsum, 0) + COALESCE(_arcreditsum, 0),2); END; $_$; 9DROP FUNCTION public.calcpendingarapplications(integer); publicadminfalse8399212551691330calcquoteamt(integer)FUNCTIONCREATE FUNCTION calcquoteamt(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; _subtotal NUMERIC := 0; _tax NUMERIC := 0; _freight NUMERIC := 0; _misc NUMERIC := 0; _amount NUMERIC := 0; BEGIN SELECT COALESCE(SUM(ROUND((quitem_qtyord * quitem_qty_invuomratio) * (quitem_price / quitem_price_invuomratio), 2)), 0) INTO _subtotal FROM quitem WHERE (quitem_quhead_id=pQuheadid); SELECT COALESCE(SUM(tax), 0) INTO _tax FROM ( SELECT ROUND(SUM(taxdetail_tax), 2) AS tax FROM tax JOIN calculateTaxDetailSummary('Q', pQuheadid, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id ) AS data; SELECT COALESCE(quhead_freight, 0), COALESCE(quhead_misc, 0) INTO _freight, _misc FROM quhead WHERE (quhead_id=pQuheadid); _amount := _subtotal + _tax + _freight + _misc; RETURN _amount; END; $_$; ,DROP FUNCTION public.calcquoteamt(integer); publicadminfalse8399212551691331calcsalesorderamt(integer)FUNCTION!CREATE FUNCTION calcsalesorderamt(pcoheadid integer) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN calcSalesOrderAmt(pCoheadid, 'T'); END; $$; ;DROP FUNCTION public.calcsalesorderamt(pcoheadid integer); publicadminfalse8399212551991961 calcsalesorderamt(integer, text)FUNCTION3CREATE FUNCTION calcsalesorderamt(pcoheadid integer, ptype text) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _subtotal NUMERIC := 0; _tax NUMERIC := 0; _freight NUMERIC := 0; _misc NUMERIC := 0; _credit NUMERIC := 0; _amount NUMERIC := 0; BEGIN -- pType: S = line item subtotal -- T = total -- B = balance due -- C = allocated credits -- X = tax SELECT COALESCE(SUM(ROUND((coitem_qtyord * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio), 2)), 0) INTO _subtotal FROM coitem WHERE (coitem_cohead_id=pCoheadid) AND (coitem_status != 'X'); SELECT COALESCE(SUM(tax), 0) INTO _tax FROM ( SELECT ROUND(SUM(taxdetail_tax), 2) AS tax FROM tax JOIN calculateTaxDetailSummary('S', pCoheadid, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id ) AS data; SELECT COALESCE(cohead_freight, 0), COALESCE(cohead_misc, 0), COALESCE(SUM(currToCurr(aropenalloc_curr_id, cohead_curr_id, aropenalloc_amount, CURRENT_DATE)),0) INTO _freight, _misc, _credit FROM cohead LEFT OUTER JOIN aropenalloc ON (aropenalloc_doctype='S' AND aropenalloc_doc_id=cohead_id) WHERE (cohead_id=pCoheadid) GROUP BY cohead_freight, cohead_misc, cohead_curr_id; _amount := CASE pType WHEN 'S' THEN (_subtotal) WHEN 'T' THEN (_subtotal + _tax + _freight + _misc) WHEN 'B' THEN (_subtotal + _tax + _freight + _misc - _credit) WHEN 'C' THEN (_credit) WHEN 'X' THEN (_tax) ELSE 0.0 END; RETURN _amount; END; $$; GDROP FUNCTION public.calcsalesorderamt(pcoheadid integer, ptype text); publicadminfalse8399212551691332calcshipfreight(integer)FUNCTION17CREATE FUNCTION calcshipfreight(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipheadId ALIAS FOR $1; _result NUMERIC := 0; _order RECORD; _shipment RECORD; _weights RECORD; _price RECORD; _sales RECORD; _freightid INTEGER; _totalprice NUMERIC; _includepkgweight BOOLEAN := FALSE; _freight RECORD; _debug BOOLEAN := false; BEGIN --Get shipment SELECT shiphead_order_id, shiphead_order_type, shiphead_freight INTO _shipment FROM shiphead WHERE (shiphead_id=pShipheadId); IF (NOT FOUND) THEN RAISE EXCEPTION 'Shipment not found'; END IF; IF (_shipment.shiphead_order_type = 'SO') THEN --Sales Orders --Get the order header information SELECT cust_id AS cust_id, custtype_id, custtype_code, shipto_id, shipto_num, cohead_orderdate AS orderdate, cohead_shipvia AS shipvia, shipto_shipzone_id AS shipzone_id, cohead_curr_id AS curr_id, currConcat(cohead_curr_id) AS currAbbr, cohead_calcfreight, cohead_freight INTO _order FROM cohead JOIN custinfo ON (cust_id=cohead_cust_id) JOIN custtype ON (custtype_id=cust_custtype_id) LEFT OUTER JOIN shiptoinfo ON (shipto_id=cohead_shipto_id) WHERE (cohead_id=_shipment.shiphead_order_id); IF (NOT FOUND) THEN RAISE EXCEPTION 'Order not found'; END IF; IF (_debug) THEN RAISE NOTICE 'cust_id = %', _order.cust_id; RAISE NOTICE 'custtype_id = %', _order.custtype_id; RAISE NOTICE 'shipto_id = %', _order.shipto_id; RAISE NOTICE 'shipto_num = %', _order.shipto_num; RAISE NOTICE 'orderdate = %', _order.orderdate; RAISE NOTICE 'shipvia = %', _order.shipvia; RAISE NOTICE 'shipzone_id = %', _order.shipzone_id; RAISE NOTICE 'curr_id = %', _order.curr_id; RAISE NOTICE 'currAbbr = %', _order.currAbbr; RAISE NOTICE 'calcfreight = %', _order.cohead_calcfreight; RAISE NOTICE 'freight = %', _order.cohead_freight; END IF; IF (NOT _order.cohead_calcfreight) THEN SELECT noNeg( _order.cohead_freight - COALESCE((SELECT SUM(shiphead_freight) FROM shiphead WHERE (shiphead_order_id = _shipment.shiphead_order_id) AND (shiphead_shipped='true')), 0) ) INTO _result; RETURN _result; END IF; SELECT fetchMetricBool('IncludePackageWeight') INTO _includepkgweight; --Calculate Sales Order freight --Get a list of aggregated weights from sites and --freight classes used on order lines FOR _weights IN SELECT CASE WHEN (_includePkgWeight) THEN SUM(shipitem_qty * (item_prodweight + item_packweight)) ELSE SUM(shipitem_qty * item_prodweight) END AS weight, itemsite_warehous_id, item_freightclass_id FROM shiphead JOIN shipitem ON (shipitem_shiphead_id=shiphead_id) JOIN coitem ON (shipitem_orderitem_id=coitem_id) JOIN itemsite ON (itemsite_id=coitem_itemsite_id) JOIN item ON (item_id=itemsite_item_id) WHERE ( (shiphead_id=pShipheadId) AND (item_freightclass_id IS NOT NULL) ) GROUP BY itemsite_warehous_id, item_freightclass_id LOOP IF (_debug) THEN RAISE NOTICE '_weights.weight - %', _weights.weight; RAISE NOTICE '_weights.itemsite_warehous_id = %', _weights.itemsite_warehous_id; RAISE NOTICE '_weights.item_freightclass_id = %', _weights.item_freightclass_id; END IF; -- First get a sales price if any so we when we find other prices -- we can determine if we want that price or this price. -- Check for a Sale Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, _order.curr_id, ipsfreight_price, _order.orderdate) ELSE currToCurr(ipshead_curr_id, _order.curr_id, (_weights.weight * ipsfreight_price), _order.orderdate) END AS price INTO _sales FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN sale ON (sale_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= _weights.weight) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=_weights.itemsite_warehous_id)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=_weights.item_freightclass_id)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=_order.shipzone_id)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=_order.shipvia)) AND (CURRENT_DATE BETWEEN sale_startdate AND sale_enddate) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_sales.price IS NOT NULL) THEN RAISE NOTICE 'Sales Price found, %', _sales.price; END IF; END IF; -- Check for a Customer Shipto Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, _order.curr_id, ipsfreight_price, _order.orderdate) ELSE currToCurr(ipshead_curr_id, _order.curr_id, (_weights.weight * ipsfreight_price), _order.orderdate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= _weights.weight) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=_weights.itemsite_warehous_id)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=_weights.item_freightclass_id)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=_order.shipzone_id)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=_order.shipvia)) AND (CURRENT_DATE BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsass_cust_id=_order.cust_id) AND (ipsass_shipto_id != -1) AND (ipsass_shipto_id=_order.shipto_id) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Shipto Price found, %', _price.price; END IF; END IF; IF (_price.price IS NULL) THEN -- Check for a Customer Shipto Pattern Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, _order.curr_id, ipsfreight_price, _order.orderdate) ELSE currToCurr(ipshead_curr_id, _order.curr_id, (_weights.weight * ipsfreight_price), _order.orderdate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= _weights.weight) AND (CURRENT_DATE BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsass_cust_id=_order.cust_id) AND (COALESCE(LENGTH(ipsass_shipto_pattern), 0) > 0) AND (_order.shipto_num ~ ipsass_shipto_pattern) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=_weights.itemsite_warehous_id)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=_weights.item_freightclass_id)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=_order.shipzone_id)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=_order.shipvia)) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Shipto Pattern Price found, %', _price.price; END IF; END IF; END IF; IF (_price.price IS NULL) THEN -- Check for a Customer Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, _order.curr_id, ipsfreight_price, _order.orderdate) ELSE currToCurr(ipshead_curr_id, _order.curr_id, (_weights.weight * ipsfreight_price), _order.orderdate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= _weights.weight) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=_weights.itemsite_warehous_id)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=_weights.item_freightclass_id)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=_order.shipzone_id)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=_order.shipvia)) AND (CURRENT_DATE BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsass_cust_id=_order.cust_id) AND (COALESCE(LENGTH(ipsass_shipto_pattern), 0) = 0) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Price found, %', _price.price; END IF; END IF; END IF; IF (_price.price IS NULL) THEN -- Check for a Customer Type Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, _order.curr_id, ipsfreight_price, _order.orderdate) ELSE currToCurr(ipshead_curr_id, _order.curr_id, (_weights.weight * ipsfreight_price), _order.orderdate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= _weights.weight) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=_weights.itemsite_warehous_id)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=_weights.item_freightclass_id)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=_order.shipzone_id)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=_order.shipvia)) AND (CURRENT_DATE BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsass_custtype_id=_order.custtype_id) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Type Price found, %', _price.price; END IF; END IF; END IF; IF (_price.price IS NULL) THEN -- Check for a Customer Type Pattern Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, _order.curr_id, ipsfreight_price, _order.orderdate) ELSE currToCurr(ipshead_curr_id, _order.curr_id, (_weights.weight * ipsfreight_price), _order.orderdate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= _weights.weight) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=_weights.itemsite_warehous_id)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=_weights.item_freightclass_id)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=_order.shipzone_id)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=_order.shipvia)) AND (CURRENT_DATE BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (COALESCE(LENGTH(ipsass_custtype_pattern), 0) > 0) AND (_order.custtype_code ~ ipsass_custtype_pattern) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Type Pattern Price found, %', _price.price; END IF; END IF; END IF; -- Select the lowest price IF ( (_price.price IS NOT NULL) AND ((_sales.price IS NULL) OR (_price.price < _sales.price)) ) THEN _freightid := _price.ipsfreight_id; _totalprice := _price.price; ELSE IF ( (_sales.price IS NOT NULL) AND ((_price.price IS NULL) OR (_sales.price <= _price.price)) ) THEN _freightid := _sales.ipsfreight_id; _totalprice := _sales.price; END IF; END IF; -- Total IF (_freightid IS NOT NULL) THEN _result := _result + _totalprice; END IF; END LOOP; RETURN ROUND(_result,2); END IF; IF (_shipment.shiphead_order_type = 'TO') THEN --Transfer Orders SELECT noNeg( (SELECT SUM(toitem_freight) + tohead_freight FROM tohead, toitem WHERE (toitem_tohead_id=tohead_id) AND (tohead_id = _shipment.shiphead_order_id) GROUP BY tohead_freight) - COALESCE((SELECT SUM(shiphead_freight) FROM shiphead WHERE (shiphead_order_id = _shipment.shiphead_order_id) AND (shiphead_shipped='true')), 0) ) INTO _result; RETURN _result; END IF; RETURN _result; END; $_$; /DROP FUNCTION public.calcshipfreight(integer); publicadminfalse8399212551691334calctotalslipqty(integer)FUNCTIONCREATE FUNCTION calctotalslipqty(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTagid ALIAS FOR $1; _qty NUMERIC := 0; BEGIN SELECT SUM(COALESCE(cntslip_qty, 0.0)) INTO _qty FROM cntslip WHERE (cntslip_cnttag_id=pTagid); RETURN _qty; END; $_$; 0DROP FUNCTION public.calctotalslipqty(integer); publicadminfalse8399212552008344calculatefreightdetail(integer, integer, text, integer, integer, text, date, text, integer, character varying, integer, integer, numeric)FUNCTION+CREATE FUNCTION calculatefreightdetail(integer, integer, text, integer, integer, text, date, text, integer, character varying, integer, integer, numeric) RETURNS SETOF freightdata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustId ALIAS FOR $1; pCustTypeId ALIAS FOR $2; pCustTypeCode ALIAS FOR $3; pShiptoId ALIAS FOR $4; pShipZoneId ALIAS FOR $5; pShiptoNum ALIAS FOR $6; pOrderDate ALIAS FOR $7; pShipVia ALIAS FOR $8; pCurrId ALIAS FOR $9; pCurrAbbr ALIAS FOR $10; pItemSiteWhsId ALIAS FOR $11; pItemFreightclassId ALIAS FOR $12; pWeight ALIAS FOR $13; _row freightData%ROWTYPE; _price RECORD; _sales RECORD; _freightid INTEGER; _totalprice NUMERIC; _asof DATE; _debug BOOLEAN := FALSE; BEGIN --Get pricing effectivity metric IF (SELECT fetchMetricText('soPriceEffective') = 'OrderDate') THEN _asof := pOrderDate; ELSE _asof := CURRENT_DATE; END IF; _freightid := NULL; _totalprice := 0.0; IF (_debug) THEN RAISE NOTICE 'pWeight - %', pWeight; RAISE NOTICE 'pItemSiteWhsId = %', pItemSiteWhsId; RAISE NOTICE 'pItemFreightclassId = %', pItemFreightclassId; END IF; -- First get a sales price if any so when we find other prices -- we can determine if we want that price or this sales price. -- Check for a Sale Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, pCurrId, ipsfreight_price, pOrderDate) ELSE currToCurr(ipshead_curr_id, pCurrId, (pWeight * ipsfreight_price), pOrderDate) END AS price INTO _sales FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN sale ON (sale_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= pWeight) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=pItemSiteWhsId)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=pItemFreightclassId)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=pShipZoneId)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=pShipVia)) AND (_asof BETWEEN sale_startdate AND sale_enddate) AND (pCustId IS NOT NULL) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_sales.price IS NOT NULL) THEN RAISE NOTICE 'Sales Price found, %', _sales.price; END IF; END IF; -- Check for a Customer Shipto Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, pCurrId, ipsfreight_price, pOrderDate) ELSE currToCurr(ipshead_curr_id, pCurrId, (pWeight * ipsfreight_price), pOrderDate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= pWeight) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=pItemSiteWhsId)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=pItemFreightclassId)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=pShipZoneId)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=pShipVia)) AND (_asof BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsass_shipto_id != -1) AND (ipsass_shipto_id=pShiptoId) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Shipto Price found, %', _price.price; END IF; END IF; IF (_price.price IS NULL) THEN -- Check for a Customer Shipto Pattern Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, pCurrId, ipsfreight_price, pOrderDate) ELSE currToCurr(ipshead_curr_id, pCurrId, (pWeight * ipsfreight_price), pOrderDate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= pWeight) AND (_asof BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsass_cust_id=pCustId) AND (COALESCE(LENGTH(ipsass_shipto_pattern), 0) > 0) AND (pShiptoNum ~ ipsass_shipto_pattern) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=pItemSiteWhsId)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=pItemFreightclassId)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=pShipZoneId)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=pShipVia)) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Shipto Pattern Price found, %', _price.price; END IF; END IF; END IF; IF (_price.price IS NULL) THEN -- Check for a Customer Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, pCurrId, ipsfreight_price, pOrderDate) ELSE currToCurr(ipshead_curr_id, pCurrId, (pWeight * ipsfreight_price), pOrderDate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= pWeight) AND((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=pItemSiteWhsId)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=pItemFreightclassId)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=pShipZoneId)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=pShipVia)) AND (_asof BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsass_cust_id=pCustId) AND (COALESCE(LENGTH(ipsass_shipto_pattern), 0) = 0) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Price found, %', _price.price; END IF; END IF; END IF; IF (_price.price IS NULL) THEN -- Check for a Customer Type Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, pCurrId, ipsfreight_price, pOrderDate) ELSE currToCurr(ipshead_curr_id, pCurrId, (pWeight * ipsfreight_price), pOrderDate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= pWeight) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=pItemSiteWhsId)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=pItemFreightclassId)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=pShipZoneId)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=pShipVia)) AND (_asof BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsass_custtype_id=pCustTypeId) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Type Price found, %', _price.price; END IF; END IF; END IF; IF (_price.price IS NULL) THEN -- Check for a Customer Type Pattern Price SELECT ipsfreight_id, CASE WHEN (ipsfreight_type='F') THEN currToCurr(ipshead_curr_id, pCurrId, ipsfreight_price, pOrderDate) ELSE currToCurr(ipshead_curr_id, pCurrId, (pWeight * ipsfreight_price), pOrderDate) END AS price INTO _price FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE ( (ipsfreight_qtybreak <= pWeight) AND ((ipsfreight_warehous_id IS NULL) OR (ipsfreight_warehous_id=pItemSiteWhsId)) AND ((ipsfreight_freightclass_id IS NULL) OR (ipsfreight_freightclass_id=pItemFreightclassId)) AND ((ipsfreight_shipzone_id IS NULL) OR (ipsfreight_shipzone_id=pShipZoneId)) AND ((ipsfreight_shipvia IS NULL) OR (ipsfreight_shipvia=pShipVia)) AND (_asof BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (COALESCE(LENGTH(ipsass_custtype_pattern), 0) > 0) AND (pCustTypeCode ~ ipsass_custtype_pattern) ) ORDER BY ipsfreight_qtybreak DESC, price ASC LIMIT 1; IF (_debug) THEN IF (_price.price IS NOT NULL) THEN RAISE NOTICE 'Customer Type Pattern Price found, %', _price.price; END IF; END IF; END IF; -- Select the lowest price IF ( (_price.price IS NOT NULL) AND ((_sales.price IS NULL) OR (_price.price < _sales.price)) ) THEN _freightid := _price.ipsfreight_id; _totalprice := _price.price; ELSE IF ( (_sales.price IS NOT NULL) AND ((_price.price IS NULL) OR (_sales.price <= _price.price)) ) THEN _freightid := _sales.ipsfreight_id; _totalprice := _sales.price; END IF; END IF; IF (_debug) THEN RAISE NOTICE '_freightid = %', _freightid; RAISE NOTICE '_totalprice = %', _totalprice; END IF; -- Get information for the selected ipsfreight -- and return IF (_freightid IS NULL) THEN _row.freightdata_schedule := 'N/A'; _row.freightdata_from := ''; _row.freightdata_to := ''; _row.freightdata_shipvia := ''; _row.freightdata_freightclass := ''; _row.freightdata_weight := 0; _row.freightdata_uom := ''; _row.freightdata_price := 0; _row.freightdata_type := ''; _row.freightdata_total := 0; _row.freightdata_currency := ''; RETURN NEXT _row; ELSE SELECT ipshead_name AS freightdata_schedule, COALESCE(warehous_code, 'Any') AS freightdata_from, COALESCE(shipzone_name, 'Any') AS freightdata_to, COALESCE(ipsfreight_shipvia, 'Any') AS freightdata_shipvia, COALESCE(freightclass_code, 'Any') AS freightdata_freightclass, pWeight AS freightdata_weight, uom_name AS freightdata_uom, currToCurr(ipshead_curr_id, pCurrId, ipsfreight_price, pOrderDate) AS freightdata_price, CASE WHEN (ipsfreight_type='F') THEN 'Flat Rate' ELSE 'Per UOM' END AS freightdata_type, _totalprice AS freightdata_total, pCurrAbbr AS freightdata_currency INTO _row FROM ipsfreight JOIN ipshead ON (ipshead_id=ipsfreight_ipshead_id) LEFT OUTER JOIN uom ON (uom_item_weight) LEFT OUTER JOIN whsinfo ON (warehous_id=ipsfreight_warehous_id) LEFT OUTER JOIN shipzone ON (shipzone_id=ipsfreight_shipzone_id) LEFT OUTER JOIN freightclass ON (freightclass_id=ipsfreight_freightclass_id) WHERE (ipsfreight_id=_freightid); RETURN NEXT _row; END IF; RETURN; END; $_$; DROP FUNCTION public.calculatefreightdetail(integer, integer, text, integer, integer, text, date, text, integer, character varying, integer, integer, numeric); publicadminfalse839922587125520083469calculatesubtax(integer, date, integer, numeric, integer)FUNCTION6 CREATE FUNCTION calculatesubtax(integer, date, integer, numeric, integer) RETURNS SETOF taxdetail LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxCodeId ALIAS FOR $1; pDate ALIAS FOR $2; pCurrId ALIAS FOR $3; pAmount ALIAS FOR $4; pLevel ALIAS FOR $5; _row taxdetail%ROWTYPE; _rownumber INTEGER := 1; _calc_tax Numeric :=0; _x RECORD; _y RECORD; BEGIN FOR _x IN SELECT tax_id, tax_code, tax_descrip, tax_basis_tax_id, taxrate_id, taxrate_percent, taxrate_curr_id, taxrate_amount, taxclass_id, taxclass_code, COALESCE(taxclass_sequence,0) AS taxclass_sequence, curr_id, curr_abbr FROM tax, taxrate, taxclass, curr_symbol WHERE ((tax_id = taxrate_tax_id) AND (tax_taxclass_id = taxclass_id) AND (taxrate_curr_id = curr_id) AND (tax_basis_tax_id = pTaxCodeId) AND (pDate BETWEEN taxrate_effective AND taxrate_expires) AND (taxrate_curr_id = pCurrId)) LOOP SELECT ROUND((_x.taxrate_percent * pAmount + currToCurr(_x.curr_id, pCurrId, _x.taxrate_amount, pDate)), 6) INTO _calc_tax; _row.taxdetail_tax_id = _x.tax_id; _row.taxdetail_tax_code = _x.tax_code; _row.taxdetail_tax_descrip = _x.tax_descrip; _row.taxdetail_tax_basis_tax_id = _x.tax_basis_tax_id ; _row.taxdetail_taxrate_percent = _x.taxrate_percent; _row.taxdetail_taxrate_amount = _x.taxrate_amount; _row.taxdetail_level = pLevel + 1; _row.taxdetail_taxclass_id = _x.taxclass_id ; _row.taxdetail_taxclass_code = _x.taxclass_code; _row.taxdetail_taxclass_sequence = _x.taxclass_sequence; _row.taxdetail_tax = _calc_tax; _row.taxdetail_curr_id = _x.curr_id; _row.taxdetail_curr_abbr = _x.curr_abbr; RETURN NEXT _row; _rownumber := _rownumber + 1; FOR _y IN SELECT * FROM calculateSubTax( _x.tax_id, pDate, pCurrId, _calc_tax, pLevel + 1) LOOP _row.taxdetail_tax_id = _y.taxdetail_tax_id; _row.taxdetail_tax_code = _y.taxdetail_tax_code; _row.taxdetail_tax_descrip = _y.taxdetail_tax_descrip; _row.taxdetail_tax_basis_tax_id = _y.taxdetail_tax_basis_tax_id ; _row.taxdetail_taxrate_percent = _y.taxdetail_taxrate_percent; _row.taxdetail_taxrate_amount = _y.taxdetail_taxrate_amount; _row.taxdetail_level = _y.taxdetail_level + 1; _row.taxdetail_taxclass_id = _y.taxdetail_taxclass_id ; _row.taxdetail_taxclass_code = _y.taxdetail_taxclass_code; _row.taxdetail_taxclass_sequence = _y.taxdetail_taxclass_sequence; _row.taxdetail_tax = _y.taxdetail_tax; _row.taxdetail_curr_id = _y.taxdetail_curr_id; _row.taxdetail_curr_abbr = _y.taxdetail_curr_abbr; RETURN NEXT _row; _rownumber := _rownumber + 1; END LOOP; END LOOP; END; $_$; PDROP FUNCTION public.calculatesubtax(integer, date, integer, numeric, integer); publicadminfalse839922611125516913386calculatetax(integer, integer, date, integer, numeric)FUNCTION]CREATE FUNCTION calculatetax(integer, integer, date, integer, numeric) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxZoneId ALIAS FOR $1; pTaxTypeId ALIAS FOR $2; pDate ALIAS FOR $3; pCurrId ALIAS FOR $4; pAmount ALIAS FOR $5; _tottax numeric := 0; -- total tax BEGIN SELECT COALESCE(ROUND(SUM(taxdetail_tax),6),0) INTO _tottax FROM calculateTaxDetail(pTaxZoneId, pTaxTypeId, pDate, pCurrId, pAmount); RETURN _tottax; END; $_$; MDROP FUNCTION public.calculatetax(integer, integer, date, integer, numeric); publicadminfalse8399212552008347<calculatetaxdetail(integer, integer, date, integer, numeric)FUNCTIONCREATE FUNCTION calculatetaxdetail(integer, integer, date, integer, numeric) RETURNS SETOF taxdetail LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxZoneId ALIAS FOR $1; pTaxTypeId ALIAS FOR $2; pDate ALIAS FOR $3; pCurrId ALIAS FOR $4; pAmount ALIAS FOR $5; _row taxdetail%ROWTYPE; _x RECORD; _y RECORD; _z RECORD; _currcum numeric := 0; -- Current cumulative tax _currseq numeric := 0; -- Current group sequence _prevcum numeric := 0; -- Previous cumulative tax _tax numeric := 0; -- Calculated tax amount _taxbasis numeric := 0; -- Used for calculating sub taxes BEGIN IF ((COALESCE(pTaxTypeId,-1) = -1) OR (COALESCE(pTaxZoneId,-1) = -1)) THEN RETURN; END IF; SELECT DISTINCT COALESCE(taxass_taxzone_id, -1) AS taxzone_id, COALESCE(taxass_taxtype_id, -1) AS taxtype_id, taxass_tax_id, CASE WHEN ((taxass_taxzone_id IS NOT NULL) AND (taxass_taxtype_id IS NOT NULL)) THEN 0 WHEN ((taxass_taxzone_id IS NOT NULL) AND (taxass_taxtype_id IS NULL)) THEN 1 WHEN ((taxass_taxzone_id IS NULL) AND (taxass_taxtype_id IS NOT NULL)) THEN 2 ELSE 3 END AS sequence INTO _x FROM taxass WHERE ((COALESCE(taxass_taxzone_id, pTaxZoneId, -1) = COALESCE(pTaxZoneId,-1)) AND (COALESCE(taxass_taxtype_id, pTaxTypeId, -1) = COALESCE(pTaxTypeId,-1))) ORDER BY sequence LIMIT 1; --Now loop through each tax detail record and return calculated result FOR _y IN SELECT --the data required by taxdetail type. Coalesce group sequence to 0 if no class. tax_id ,tax_code ,tax_descrip ,tax_basis_tax_id ,taxrate_percent ,taxrate_amount ,0 as taxdetail_level ,taxclass_id ,taxclass_code ,COALESCE(taxclass_sequence, 0) AS taxclass_sequence ,0 as taxdetail_tax ,curr_id ,curr_abbr FROM taxass, taxclass RIGHT OUTER JOIN tax LEFT OUTER JOIN taxrate ON (taxrate_tax_id=tax_id) ON (tax_taxclass_id=taxclass_id), curr_symbol WHERE taxass_tax_id=tax_id AND taxrate_curr_id=curr_id AND COALESCE(taxass_taxzone_id, -1) = _x.taxzone_id AND COALESCE(taxass_taxtype_id, -1) = _x.taxtype_id AND pDate BETWEEN COALESCE(taxrate_effective, startoftime()) AND COALESCE(taxrate_expires, endoftime()) ORDER BY COALESCE(taxclass_sequence, 0) LOOP -- If sequence has changed, cache the previous cumulative tax IF (_currseq != _x.sequence) THEN _prevcum := _currcum; END IF; -- Calculate the tax amount. Convert currency for flat rate amounts SELECT ROUND((_y.taxrate_percent * (pAmount + _prevcum) + currToCurr(_y.curr_id, pCurrId, _y.taxrate_amount, pDate)), 6) INTO _tax FROM tax JOIN taxrate ON (tax_id = taxrate_tax_id) WHERE (tax_id=_x.taxass_tax_id) AND (pDate BETWEEN COALESCE(taxrate_effective, startoftime()) AND COALESCE(taxrate_expires, endoftime())); --Map fields to _row _row.taxdetail_tax_id := _y.tax_id; _row.taxdetail_tax_code := _y.tax_code; _row.taxdetail_tax_descrip := _y.tax_descrip; _row.taxdetail_tax_basis_tax_id := _y.tax_basis_tax_id; _row.taxdetail_taxrate_percent := _y.taxrate_percent; _row.taxdetail_taxrate_amount := _y.taxrate_amount; _row.taxdetail_level := _y.taxdetail_level; _row.taxdetail_taxclass_id := _y.taxclass_id; _row.taxdetail_taxclass_code := _y.taxclass_code; _row.taxdetail_taxclass_sequence := _y.taxclass_sequence; _row.taxdetail_tax := _tax; _row.taxdetail_curr_id := _y.curr_id; _row.taxdetail_curr_abbr := _y.curr_abbr; RETURN NEXT _row; -- Increment cumulative balance and sequence number IF(_y.taxclass_sequence <> 0) THEN _currcum := _currcum + _tax; END IF; _currseq := _y.taxclass_sequence; -- Loop to Calculate sub taxes FOR _z IN SELECT * FROM calculateSubTax(_y.tax_id,pDate, pCurrId, _tax, 0) LOOP --Mapping of data _row.taxdetail_tax_id := _z.taxdetail_tax_id; _row.taxdetail_tax_code := _z.taxdetail_tax_code; _row.taxdetail_tax_descrip := _z.taxdetail_tax_descrip; _row.taxdetail_tax_basis_tax_id := _z.taxdetail_tax_basis_tax_id; _row.taxdetail_taxrate_percent := _z.taxdetail_taxrate_percent; _row.taxdetail_taxrate_amount := _z.taxdetail_taxrate_amount; _row.taxdetail_level := _z.taxdetail_level; _row.taxdetail_taxclass_id := _z.taxdetail_taxclass_id; _row.taxdetail_taxclass_code := _z.taxdetail_taxclass_code; _row.taxdetail_taxclass_sequence := _z.taxdetail_taxclass_sequence; _row.taxdetail_tax := _z.taxdetail_tax; _row.taxdetail_curr_id := _z.taxdetail_curr_id; _row.taxdetail_curr_abbr := _z.taxdetail_curr_abbr; RETURN NEXT _row; --Add to cumulative counter (_curcum) _currcum := _currcum + _z.taxdetail_tax ; END LOOP; END LOOP; END; $_$; SDROP FUNCTION public.calculatetaxdetail(integer, integer, date, integer, numeric); publicadminfalse83992261112552008348%calculatetaxdetailline(text, integer)FUNCTION^CREATE FUNCTION calculatetaxdetailline(text, integer) RETURNS SETOF taxdetail LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOrderType ALIAS FOR $1; pOrderId ALIAS FOR $2; _row taxdetail%ROWTYPE; _qry text; _totaltax numeric; _y RECORD; _table text; BEGIN _totaltax=0.0; IF pOrderType = 'II' THEN _table := 'invcitemtax'; ELSIF pOrderType = 'BI' THEN _table := 'cobilltax'; ELSIF pOrderType = 'CI' THEN _table := 'cmitemtax'; ELSIF pOrderType = 'VI' THEN _table := 'voitemtax'; ELSIF pOrderType = 'TI' THEN _table := 'toitemtax'; ELSIF pOrderType = 'AR' THEN _table := 'aropentax'; ELSIF pOrderType = 'AP' THEN _table := 'apopentax'; END IF; _qry := 'SELECT taxhist_tax_id as tax_id, tax_code, tax_descrip, taxhist_tax, COALESCE(taxhist_sequence,0) AS taxhist_sequence FROM taxhist JOIN tax ON (taxhist_tax_id=tax_id) JOIN pg_class ON (pg_class.oid=taxhist.tableoid) WHERE ( (taxhist_parent_id = ' || pOrderId || ') AND (relname=''' || _table || ''') );'; FOR _y IN EXECUTE _qry LOOP _row.taxdetail_tax_id=_y.tax_id; _row.taxdetail_tax_code = _y.tax_code; _row.taxdetail_tax_descrip = _y.tax_descrip; _row.taxdetail_tax = _y.taxhist_tax; _row.taxdetail_level= 0 ; _row.taxdetail_taxclass_sequence= _y.taxhist_sequence; _totaltax = _totaltax + _y.taxhist_tax; RETURN NEXT _row; END LOOP; END; $_$; <DROP FUNCTION public.calculatetaxdetailline(text, integer); publicadminfalse83992261112552008349.calculatetaxdetailsummary(text, integer, text)FUNCTION"CREATE FUNCTION calculatetaxdetailsummary(text, integer, text) RETURNS SETOF taxdetail LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOrderType ALIAS FOR $1; pOrderId ALIAS FOR $2; pDisplayType ALIAS FOR $3; _row taxdetail%ROWTYPE; _qry text := ''; _qry1 text; _totaltax numeric; _x RECORD; _y RECORD; _table text; BEGIN _totaltax=0.0; IF pOrderType IN ('S','Q','RA','PO') THEN IF pOrderType = 'S' THEN _qry := 'SELECT ' || 'COALESCE(cohead_taxzone_id, -1) AS taxzone_id, cohead_orderdate AS order_date, cohead_curr_id AS curr_id, COALESCE(coitem_taxtype_id, -1) AS taxtype_id, ROUND((coitem_qtyord * coitem_qty_invuomratio) * (coitem_price / coitem_price_invuomratio),2) AS amount FROM cohead, coitem WHERE ( (coitem_cohead_id = ' || pOrderId || ') AND (' || 'cohead_id = coitem_cohead_id) AND ( coitem_status != ''X'') )'; ELSEIF pOrderType = 'Q' THEN _qry := 'SELECT ' || 'COALESCE(quhead_taxzone_id, -1) AS taxzone_id, quhead_quotedate AS order_date, quhead_curr_id AS curr_id, COALESCE(quitem_taxtype_id, -1) AS taxtype_id, ROUND((quitem_qtyord * quitem_qty_invuomratio) * (quitem_price / quitem_price_invuomratio),2) AS amount FROM quhead, quitem WHERE ( (quitem_quhead_id = ' || pOrderId || ') AND (quhead_id = quitem_quhead_id) )'; ELSEIF pOrderType = 'RA' THEN _qry := 'SELECT ' || 'COALESCE(rahead_taxzone_id, -1) AS taxzone_id, rahead_authdate AS order_date, rahead_curr_id AS curr_id, COALESCE(raitem_taxtype_id, -1) AS taxtype_id, ROUND((raitem_qtyauthorized * raitem_qty_invuomratio) * (raitem_unitprice / raitem_price_invuomratio),2) AS amount FROM rahead, raitem WHERE ( (raitem_rahead_id = ' || pOrderId || ') AND (rahead_id = raitem_rahead_id) )'; ELSEIF pOrderType = 'PO' THEN _qry := 'SELECT ' || 'COALESCE(pohead_taxzone_id, -1) AS taxzone_id, pohead_orderdate AS order_date, pohead_curr_id AS curr_id, COALESCE(poitem_taxtype_id, -1) AS taxtype_id, ROUND(poitem_qty_ordered * poitem_unitprice, 2) AS amount FROM pohead, poitem WHERE ( (poitem_pohead_id = ' || pOrderId || ') AND (pohead_id = poitem_pohead_id) )'; END IF; FOR _x IN EXECUTE _qry LOOP _qry1 := 'SELECT * from calculatetaxdetail(' || _x.taxzone_id || ',' || _x.taxtype_id || ',''' || _x.order_date || ''',' || _x.curr_id || ',' || _x.amount || ')'; FOR _y IN EXECUTE _qry1 LOOP _row.taxdetail_tax_id=_y.taxdetail_tax_id; _row.taxdetail_tax_code = _y.taxdetail_tax_code; _row.taxdetail_tax_descrip = _y.taxdetail_tax_descrip; _row.taxdetail_tax = _y.taxdetail_tax; _row.taxdetail_level=_y.taxdetail_level; _row.taxdetail_taxclass_sequence= _y.taxdetail_taxclass_sequence; _totaltax = _totaltax + _y.taxdetail_tax; RETURN NEXT _row; END LOOP; END LOOP; IF pDisplayType = 'T' AND pOrderType <> 'PO' THEN IF pOrderType = 'S' THEN _qry := 'SELECT COALESCE(cohead_taxzone_id, -1) AS taxzone_id, cohead_orderdate AS order_date, cohead_curr_id AS curr_id, cohead_freight AS freight FROM cohead WHERE cohead_id = ' || pOrderId ; ELSEIF pOrderType = 'Q' THEN _qry := 'SELECT COALESCE(quhead_taxzone_id, -1) AS taxzone_id, quhead_quotedate AS order_date, quhead_curr_id AS curr_id, COALESCE(quhead_freight,0) AS freight FROM quhead WHERE quhead_id = ' || pOrderId; ELSEIF pOrderType = 'RA' THEN _qry := 'SELECT COALESCE(rahead_taxzone_id, -1) AS taxzone_id, COALESCE(rahead_authdate,CURRENT_DATE) AS order_date, rahead_curr_id AS curr_id, COALESCE(rahead_freight,0) AS freight FROM rahead WHERE rahead_id = ' || pOrderId; END IF; FOR _x IN EXECUTE _qry LOOP _qry1 := 'SELECT * from calculatetaxdetail(' || _x.taxzone_id || ', getfreighttaxtypeid(),''' || _x.order_date || ''',' || _x.curr_id || ',' || _x.freight || ')'; FOR _y IN EXECUTE _qry1 LOOP _row.taxdetail_tax_id=_y.taxdetail_tax_id; _row.taxdetail_tax_code = _y.taxdetail_tax_code; _row.taxdetail_tax_descrip = _y.taxdetail_tax_descrip; _row.taxdetail_tax = _y.taxdetail_tax; _row.taxdetail_level=_y.taxdetail_level; _row.taxdetail_taxclass_sequence= _y.taxdetail_taxclass_sequence; _totaltax = _totaltax + _y.taxdetail_tax; RETURN NEXT _row; END LOOP; END LOOP; END IF; ELSEIF pOrderType IN ('I','B','CM', 'VO','TO') THEN IF (pOrderType='I') THEN _table := 'invcheadtax'; ELSIF (pOrderType='B') THEN _table := 'cobmisctax'; ELSIF (pOrderType='CM') THEN _table := 'cmheadtax'; ELSIF (pOrderType='VO') THEN _table := 'voheadtax'; ELSIF (pOrderType='TO') THEN _table := 'tohead'; END IF; IF pOrderType = 'I' AND (pDisplayType IN ('L','T')) THEN _qry := 'SELECT taxhist_tax_id as tax_id, tax_code, tax_descrip, taxhist_tax, taxhist_sequence FROM invchead, invcitemtax LEFT OUTER JOIN tax ON (taxhist_tax_id=tax_id) LEFT OUTER JOIN invcitem ON (invcitem_id=taxhist_parent_id) WHERE invcitem_invchead_id = ' || pOrderId || ' AND invchead_id = invcitem_invchead_id '; ELSIF pOrderType = 'B' AND (pDisplayType IN ('L','T')) THEN _qry := 'SELECT taxhist_tax_id as tax_id, tax_code, tax_descrip, taxhist_tax, taxhist_sequence FROM cobmisc, cobilltax LEFT OUTER JOIN tax ON (taxhist_tax_id=tax_id) LEFT OUTER JOIN cobill ON (cobill_id=taxhist_parent_id) WHERE cobill_cobmisc_id = ' || pOrderId || ' AND cobmisc_id = cobill_cobmisc_id '; ELSIF pOrderType = 'CM' AND (pDisplayType IN ('L','T')) THEN _qry := 'SELECT taxhist_tax_id as tax_id, tax_code, tax_descrip, taxhist_tax, taxhist_sequence FROM cmhead, cmitemtax LEFT OUTER JOIN tax ON (taxhist_tax_id=tax_id) LEFT OUTER JOIN cmitem ON (cmitem_id=taxhist_parent_id) WHERE cmitem_cmhead_id = ' || pOrderId || ' AND cmhead_id = cmitem_cmhead_id '; ELSIF pOrderType = 'VO' AND (pDisplayType IN ('L','T')) THEN _qry := 'SELECT taxhist_tax_id as tax_id, tax_code, tax_descrip, taxhist_tax, taxhist_sequence FROM vohead, voitemtax LEFT OUTER JOIN tax ON (taxhist_tax_id=tax_id) LEFT OUTER JOIN voitem ON (voitem_id=taxhist_parent_id) WHERE voitem_vohead_id = ' || pOrderId || ' AND vohead_id = voitem_vohead_id '; ELSIF pOrderType = 'TO' AND (pDisplayType IN ('L','T')) THEN _qry := 'SELECT taxhist_tax_id as tax_id, tax_code, tax_descrip, taxhist_tax, taxhist_sequence FROM tohead, toitemtax LEFT OUTER JOIN tax ON (taxhist_tax_id=tax_id) LEFT OUTER JOIN toitem ON (toitem_id=taxhist_parent_id) WHERE toitem_tohead_id = ' || pOrderId || ' AND tohead_id = toitem_tohead_id '; END IF; IF pDisplayType IN ('F','T') AND pOrderType <> 'VO' THEN IF (length(_qry) > 0) THEN _qry := _qry || ' UNION ALL '; END IF; _qry := _qry || 'SELECT taxhist_tax_id as tax_id, tax_code, tax_descrip, taxhist_tax, taxhist_sequence FROM taxhist JOIN tax ON (taxhist_tax_id=tax_id) JOIN pg_class ON (pg_class.oid=taxhist.tableoid) WHERE ( (taxhist_parent_id = ' || pOrderId || ') AND (taxhist_taxtype_id=getfreighttaxtypeid()) AND (relname=''' || _table || ''') )'; END IF; IF pDisplayType IN ('A','T') THEN IF (length(_qry) > 0) THEN _qry := _qry || ' UNION ALL '; END IF; _qry := _qry || 'SELECT taxhist_tax_id as tax_id, tax_code, tax_descrip, taxhist_tax, taxhist_sequence FROM taxhist JOIN tax ON (taxhist_tax_id=tax_id) JOIN pg_class ON (pg_class.oid=taxhist.tableoid) WHERE ( (taxhist_parent_id = ' || pOrderId || ') AND (taxhist_taxtype_id=getadjustmenttaxtypeid()) AND (relname=''' || _table || ''') )'; END IF; FOR _y IN EXECUTE _qry LOOP _row.taxdetail_tax_id=_y.tax_id; _row.taxdetail_tax_code = _y.tax_code; _row.taxdetail_tax_descrip = _y.tax_descrip; _row.taxdetail_tax = _y.taxhist_tax; _row.taxdetail_level= 0 ; _row.taxdetail_taxclass_sequence= COALESCE(_y.taxhist_sequence,0); _totaltax = _totaltax + _y.taxhist_tax; RETURN NEXT _row; END LOOP; END IF; END; $_$; EDROP FUNCTION public.calculatetaxdetailsummary(text, integer, text); publicadminfalse83992261112551691343Icalculatetaxhist(text, integer, integer, integer, date, integer, numeric)FUNCTIONCREATE FUNCTION calculatetaxhist(text, integer, integer, integer, date, integer, numeric) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTableName ALIAS FOR $1; pParentId ALIAS FOR $2; pTaxZoneId ALIAS FOR $3; pTaxTypeId ALIAS FOR $4; pDate ALIAS FOR $5; pCurrId ALIAS FOR $6; pAmount ALIAS FOR $7; _qry TEXT; BEGIN IF (pTableName IS NULL) THEN RAISE EXCEPTION 'A table name is required to calculate tax history'; ELSEIF (pParentId IS NULL) THEN RAISE EXCEPTION 'A parent ID is required to calculate tax history'; ELSEIF (pDate IS NULL) THEN RAISE EXCEPTION 'A date is required to calculate tax history'; ELSEIF (pAmount IS NULL) THEN RAISE EXCEPTION 'An amount is required to calculate tax history'; END IF; -- Build a query that deletes any previous tax history for this document record _qry := 'DELETE FROM ' || pTableName || ' WHERE taxhist_parent_id = ' || pParentId || ' AND taxhist_taxtype_id <> getadjustmenttaxtypeid();'; EXECUTE _qry; -- Next, build and execute query that inserts new rows. _qry := 'INSERT INTO ' || pTableName || ' ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate) SELECT ' || pParentId || ','; IF (pTaxTypeId IS NULL) THEN _qry := _qry || 'NULL'; ELSE _qry := _qry || pTaxTypeId; END If; _qry := _qry || ', taxdetail_tax_id,' || pAmount || ', taxdetail_tax_basis_tax_id, taxdetail_taxclass_sequence, taxdetail_taxrate_percent, taxdetail_taxrate_amount, taxdetail_tax, ''' || pDate || ''' FROM calculatetaxdetail(' || COALESCE(pTaxZoneId,-1) || ',' || COALESCE(pTaxTypeId,-1) ||',''' || pDate || ''',' || pCurrId || ',' || pAmount || ');'; EXECUTE _qry; RETURN true; END; $_$; `DROP FUNCTION public.calculatetaxhist(text, integer, integer, integer, date, integer, numeric); publicadminfalse3992812551691344calcvoucheramt(integer)FUNCTIONCREATE FUNCTION calcvoucheramt(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVoucherid ALIAS FOR $1; _amount NUMERIC := 0; BEGIN SELECT SUM(COALESCE(vodist_amount, 0)) INTO _amount FROM vodist WHERE (vodist_vohead_id=pVoucherid); RETURN _amount; END; $_$; .DROP FUNCTION public.calcvoucheramt(integer); publicadminfalse8399212551691345calcvoucherfreight(integer)FUNCTIONCREATE FUNCTION calcvoucherfreight(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVoucherid ALIAS FOR $1; _amount NUMERIC := 0; BEGIN SELECT SUM(COALESCE(voitem_freight, 0)) INTO _amount FROM voitem WHERE (voitem_vohead_id=pVoucherid); RETURN _amount; END; $_$; 2DROP FUNCTION public.calcvoucherfreight(integer); publicadminfalse8399212551691346calcvouchertax(integer)FUNCTIONtCREATE FUNCTION calcvouchertax(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVoucherid ALIAS FOR $1; _amount NUMERIC := 0; BEGIN SELECT COALESCE(calculateTax(vohead_taxzone_id, vohead_taxtype_id, vohead_docdate, vohead_curr_id, calcVoucherAmt(vohead_id)), 0) INTO _amount FROM vohead WHERE (vohead_id=pVoucherid); RETURN _amount; END; $_$; .DROP FUNCTION public.calcvouchertax(integer); publicadminfalse8399212551691347%calcwooperstartstub(integer, integer)FUNCTION"CREATE FUNCTION calcwooperstartstub(integer, integer) RETURNS date LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoId ALIAS FOR $1; pBooitemSeqId ALIAS FOR $2; _result DATE; BEGIN IF ( SELECT ((metric_value='t') AND packageIsEnabled('xtmfg')) FROM metric WHERE(metric_name='Routings') ) THEN RETURN xtmfg.calcWooperStart(pWoId, pBooitemSeqId); END IF; RETURN null; END; $_$; <DROP FUNCTION public.calcwooperstartstub(integer, integer); publicadminfalse8399212551691348cancelbillingselection(integer)FUNCTIONCREATE FUNCTION cancelbillingselection(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCobmiscid ALIAS FOR $1; BEGIN IF ( ( SELECT cobmisc_posted FROM cobmisc WHERE (cobmisc_id=pCobmiscid) ) ) THEN RETURN -1; END IF; DELETE FROM cobill WHERE (cobill_cobmisc_id=pCobmiscid); DELETE FROM cobmisc WHERE (cobmisc_id=pCobmiscid); RETURN 1; END; $_$; 6DROP FUNCTION public.cancelbillingselection(integer); publicadminfalse83992125516913490changeaccountingperioddates(integer, date, date)FUNCTIONCREATE FUNCTION changeaccountingperioddates(integer, date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _check INTEGER; _r RECORD; BEGIN -- Check to make sure that the passed period is not closed IF ( ( SELECT period_closed FROM period WHERE (period_id=pPeriodid) ) ) THEN RETURN -1; END IF; -- Check to make sure that the passed start date does not fall -- into another period SELECT period_id INTO _check FROM period WHERE ( (pStartDate BETWEEN period_start AND period_end) AND (period_id <> pPeriodid) ) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; -- Check to make sure that the passed end date does not fall -- into another period SELECT period_id INTO _check FROM period WHERE ( (pEndDate BETWEEN period_start AND period_end) AND (period_id <> pPeriodid) ) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; -- Check to make sure that the new passed start and end dates do not -- orphan a posted G/L Transaction SELECT gltrans_id INTO _check FROM gltrans, period WHERE ( (gltrans_date BETWEEN period_start AND period_end) AND (gltrans_posted) AND (NOT (gltrans_date BETWEEN pStartDate AND pEndDate)) AND (period_id=pPeriodid) ) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; -- Alter the start and end dates of the pass period UPDATE period SET period_start=pStartDate, period_end=pEndDate WHERE (period_id=pPeriodid); -- Post any unposted G/L Transactions into the period FOR _r IN SELECT DISTINCT gltrans_sequence FROM gltrans WHERE ( (NOT gltrans_posted) AND (gltrans_date BETWEEN pStartDate AND pEndDate) ) LOOP PERFORM postIntoTrialBalance(_r.gltrans_sequence); END LOOP; -- All done RETURN 1; END; $_$; GDROP FUNCTION public.changeaccountingperioddates(integer, date, date); publicadminfalse83992#125516913504changeaccountingyearperioddates(integer, date, date)FUNCTION0CREATE FUNCTION changeaccountingyearperioddates(integer, date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _check INTEGER; _checkBool BOOLEAN; _r RECORD; BEGIN -- Check to make sure that the passed yearperiod is not closed IF ( ( SELECT yearperiod_closed FROM yearperiod WHERE (yearperiod_id=pPeriodid) ) ) THEN RETURN -1; END IF; -- Check to make sure that the passed start date does not fall -- into another yearperiod SELECT yearperiod_id INTO _check FROM yearperiod WHERE ( (pStartDate BETWEEN yearperiod_start AND yearperiod_end) AND (yearperiod_id <> pPeriodid) ) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; -- Check to make sure that the passed end date does not fall -- into another yearperiod SELECT yearperiod_id INTO _check FROM yearperiod WHERE ( (pEndDate BETWEEN yearperiod_start AND yearperiod_end) AND (yearperiod_id <> pPeriodid) ) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; -- Check to make sure that the passed yearperiod is not closed IF ( ( SELECT (count(period_id) > 0) FROM period WHERE ((period_yearperiod_id=pPeriodid) AND (period_start < pStartDate OR period_end > pEndDate)) ) ) THEN RETURN -4; END IF; -- Make sure that the passed start is prior to the end date SELECT (pStartDate > pEndDate) INTO _checkBool; IF (_checkBool) THEN RETURN -5; END IF; -- Alter the start and end dates of the pass period UPDATE yearperiod SET yearperiod_start=pStartDate, yearperiod_end=pEndDate WHERE (yearperiod_id=pPeriodid); -- All done RETURN 1; END; $_$; KDROP FUNCTION public.changeaccountingyearperioddates(integer, date, date); publicadminfalse83992$12551691351Achangefkeypointers(text, text, integer, integer, text[], boolean)FUNCTIONECREATE FUNCTION changefkeypointers(text, text, integer, integer, text[], boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSchema ALIAS FOR $1; pTable ALIAS FOR $2; pSourceId ALIAS FOR $3; pTargetId ALIAS FOR $4; pIgnore ALIAS FOR $5; _purge BOOLEAN := COALESCE($6, FALSE); _counter INTEGER := 0; _count1 INTEGER := 0; _fk RECORD; _pk TEXT[]; BEGIN -- for all foreign keys that point to pSchema.pTable FOR _fk IN EXECUTE 'SELECT fkeyns.nspname AS schemaname, fkeytab.relname AS tablename, conkey, attname, typname FROM pg_constraint JOIN pg_class basetab ON (confrelid=basetab.oid) JOIN pg_namespace basens ON (basetab.relnamespace=basens.oid) JOIN pg_class fkeytab ON (conrelid=fkeytab.oid) JOIN pg_namespace fkeyns ON (fkeytab.relnamespace=fkeyns.oid) JOIN pg_attribute ON (attrelid=conrelid AND attnum=conkey[1]) JOIN pg_type ON (atttypid=pg_type.oid) WHERE basetab.relname = ' || quote_literal(pTable) || ' AND basens.nspname = ' || quote_literal(pSchema) || ' AND fkeytab.relname NOT IN (''' || ARRAY_TO_STRING(pIgnore, ''', ''') || ''')' LOOP IF (ARRAY_UPPER(_fk.conkey, 1) > 1) THEN RAISE EXCEPTION 'Cannot change the foreign key in %.% that refers to %.% because the foreign key constraint has multiple columns. [xtuple: changefkeypointers, -1, %.%, %.%]', _fk.schemaname, _fk.tablename, pSchema, pTable, _fk.schemaname, _fk.tablename, pSchema, pTable; END IF; -- optionally make a backup copy of the data IF (NOT _purge) THEN -- determine the primary key column of the fkey table _pk := primaryKeyFields(_fk.schemaname, _fk.tablename); IF (ARRAY_UPPER(_pk, 1) > 1) THEN RAISE EXCEPTION 'Cannot change foreign key references in %.% because it has a composite primary key. Try setting the purge option. [xtuple: changefkeypointers, -4, %.%]', _fk.schemaname, _fk.tablename, _fk.schemaname, _fk.tablename; END IF; -- make the backup copy EXECUTE 'INSERT INTO mrgundo ( mrgundo_schema, mrgundo_table, mrgundo_pkey_col, mrgundo_pkey_id, mrgundo_col, mrgundo_value, mrgundo_type, mrgundo_base_schema, mrgundo_base_table, mrgundo_base_id ) SELECT ' || quote_literal(_fk.schemaname) || ', ' || quote_literal(_fk.tablename) || ', ' || quote_literal(_pk[1]) || ', ' || _pk[1] || ', ' || quote_literal(_fk.attname) || ', ' || _fk.attname || ', ' || quote_literal(_fk.typname) || ', ' || quote_literal(pSchema) || ', ' || quote_literal(pTable) || ', ' || pTargetId || ' FROM ' || _fk.schemaname || '.' || _fk.tablename || ' WHERE ('|| _fk.attname || '=' || pSourceId || ');'; END IF; -- actually change the foreign keys to point to the desired base table record EXECUTE 'UPDATE ' || _fk.schemaname || '.' || _fk.tablename || ' SET ' || _fk.attname || '=' || pTargetId || ' WHERE (' || _fk.attname || '=' || pSourceId || ');'; GET DIAGNOSTICS _count1 = ROW_COUNT; _counter := _counter + _count1; END LOOP; RETURN _counter; END; $_$; XDROP FUNCTION public.changefkeypointers(text, text, integer, integer, text[], boolean); publicadminfalse39928!00JFUNCTION changefkeypointers(text, text, integer, integer, text[], boolean)COMMENTCOMMENT ON FUNCTION changefkeypointers(text, text, integer, integer, text[], boolean) IS 'Change the data in all tables with foreign key relationships so they point to the pSchema.pTable record with primary key pTargetId instead of the record with primary key pSourceId. Ignore any tables listed in pIgnore. If the final arg is TRUE, make a backup copy of the original data in the mrgundo table.'; publicadminfalse1060 12551691352"changepoitemduedate(integer, date)FUNCTION:CREATE FUNCTION changepoitemduedate(ppoitemid integer, pdate date) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN changePoitemDueDate(pPoitemid, pDate, false); END; $$; IDROP FUNCTION public.changepoitemduedate(ppoitemid integer, pdate date); publicadminfalse3992812551991970+changepoitemduedate(integer, date, boolean)FUNCTIONCREATE FUNCTION changepoitemduedate(ppoitemid integer, pdate date, pbyso boolean) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF ( ( SELECT (poitem_status IN ('C')) FROM poitem WHERE (poitem_id=pPoitemid) ) ) THEN RETURN -1; END IF; UPDATE poitem SET poitem_duedate=pDate WHERE (poitem_id=pPoitemid); IF (pBySO) THEN --Generate the PoItemUpdatedBySo event INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'P', poitem_id, itemsite_warehous_id, (pohead_number || '-'|| poitem_linenumber || ': ' || item_number) FROM evntnot JOIN evnttype ON (evntnot_evnttype_id=evnttype_id) JOIN itemsite ON (evntnot_warehous_id=itemsite_warehous_id) JOIN item ON (itemsite_item_id=item_id) JOIN poitem ON (poitem_itemsite_id=itemsite_id) JOIN pohead ON (poitem_pohead_id=pohead_id) WHERE( (poitem_id=pPoitemid) AND (poitem_duedate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name='PoItemUpdatedBySo') ); END IF; RETURN pPoitemid; END; $$; XDROP FUNCTION public.changepoitemduedate(ppoitemid integer, pdate date, pbyso boolean); publicadminfalse3992812551691353!changepoitemqty(integer, numeric)FUNCTION3CREATE FUNCTION changepoitemqty(ppoitemid integer, pqty numeric) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN changePoitemQty(pPoitemid, pQty, false); END; $$; GDROP FUNCTION public.changepoitemqty(ppoitemid integer, pqty numeric); publicadminfalse8399212551991971*changepoitemqty(integer, numeric, boolean)FUNCTIONCREATE FUNCTION changepoitemqty(ppoitemid integer, pqty numeric, pbyso boolean) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN IF ( ( SELECT (poitem_status IN ('C')) FROM poitem WHERE (poitem_id=pPoitemid) ) ) THEN RETURN -1; END IF; UPDATE poitem SET poitem_qty_ordered=pQty WHERE (poitem_id=pPoitemid); IF (pBySO) THEN --Generate the PoItemUpdatedBySo event INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'P', poitem_id, itemsite_warehous_id, (pohead_number || '-'|| poitem_linenumber || ': ' || item_number) FROM evntnot JOIN evnttype ON (evntnot_evnttype_id=evnttype_id) JOIN itemsite ON (evntnot_warehous_id=itemsite_warehous_id) JOIN item ON (itemsite_item_id=item_id) JOIN poitem ON (poitem_itemsite_id=itemsite_id) JOIN pohead ON (poitem_pohead_id=pohead_id) WHERE( (poitem_id=pPoitemid) AND (poitem_duedate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name='PoItemUpdatedBySo') ); END IF; RETURN pPoitemid; END; $$; VDROP FUNCTION public.changepoitemqty(ppoitemid integer, pqty numeric, pbyso boolean); publicadminfalse39928%12551691354changeprdate(integer, date)FUNCTIONpCREATE FUNCTION changeprdate(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrid ALIAS FOR $1; pDueDate ALIAS FOR $2; BEGIN UPDATE pr SET pr_duedate=pDueDate WHERE (pr_id=pPrid); RETURN 0; END; $_$; 2DROP FUNCTION public.changeprdate(integer, date); publicadminfalse83992'12551691355changeprqty(integer, numeric)FUNCTIONlCREATE FUNCTION changeprqty(integer, numeric) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrid ALIAS FOR $1; pQty ALIAS FOR $2; BEGIN UPDATE pr SET pr_qtyreq=pQty WHERE (pr_id=pPrid); RETURN TRUE; END; $_$; 4DROP FUNCTION public.changeprqty(integer, numeric); publicadminfalse39928 12551691356changeprqty(integer, date)FUNCTIONCREATE FUNCTION changeprqty(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pPrid ALIAS FOR $1; pDueDate ALIAS FOR $2; BEGIN UPDATE pr SET pr_duedate=pDueDate WHERE (pr_id=pPrid); RETURN 0; END; $_$; 1DROP FUNCTION public.changeprqty(integer, date); publicadminfalse39928(12551691357]changepseudofkeypointers(text, text, text, integer, text, text, integer, text, text, boolean)FUNCTIONC CREATE FUNCTION changepseudofkeypointers(text, text, text, integer, text, text, integer, text, text, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSchema ALIAS FOR $1; pTable ALIAS FOR $2; pFkeyCol ALIAS FOR $3; pSourceId ALIAS FOR $4; pBaseSchema ALIAS FOR $5; pBaseTable ALIAS FOR $6; pTargetId ALIAS FOR $7; pTypeCol ALIAS FOR $8; pType ALIAS FOR $9; _purge BOOLEAN := COALESCE($10, FALSE); _counter INTEGER := 0; _coltype TEXT; _pk TEXT[]; BEGIN IF (NOT _purge) THEN EXECUTE 'SELECT typname FROM pg_type JOIN pg_attribute ON (pg_type.oid=atttypid) JOIN pg_class ON (attrelid=pg_class.oid) JOIN pg_namespace ON (relnamespace=pg_namespace.oid) WHERE (relname=' || quote_literal(pTable) || ') AND (nspname=' || quote_literal(pSchema) || ') AND (attname=' || quote_literal(pFkeyCol) || ')' INTO _coltype; _pk := primaryKeyFields(pSchema, pTable); IF (ARRAY_UPPER(_pk, 1) > 1) THEN RAISE EXCEPTION 'Cannot change pseudo-foreign key references in %.% because it has a composite primary key. Try setting the purge option. [xtuple: changepseudofkeypointers, -1, %.%', pSchema, pTable, pSchema, pTable; END IF; EXECUTE 'INSERT INTO mrgundo ( mrgundo_schema, mrgundo_table, mrgundo_pkey_col, mrgundo_pkey_id, mrgundo_col, mrgundo_value, mrgundo_type, mrgundo_base_schema, mrgundo_base_table, mrgundo_base_id ) SELECT ' || quote_literal(pSchema) || ', ' || quote_literal(pTable) || ', ' || quote_literal(_pk[1]) || ', ' || quote_ident(_pk[1]) || ', ' || quote_literal(pFkeyCol) || ', ' || quote_ident(pFkeyCol) || ', ' || quote_literal(_coltype) || ', ' || quote_literal(pBaseSchema) || ', ' || quote_literal(pBaseTable) || ', ' || pTargetId || ' FROM ' || quote_ident(pSchema) || '.' || quote_ident(pTable) || ' WHERE (('|| quote_ident(pFkeyCol) || '=' || pSourceId || ') AND ('|| quote_ident(pTypeCol) || '=' || quote_literal(pType) || '));'; END IF; -- actually change the foreign keys to point to the desired base table record EXECUTE 'UPDATE ' || quote_ident(pSchema) || '.' || quote_ident(pTable) || ' SET ' || quote_ident(pFkeyCol) || '=' || pTargetId || ' WHERE ((' || quote_ident(pFkeyCol) || '=' || pSourceId || ') AND (' || quote_ident(pTypeCol) || '=' || quote_literal(pType) || '));'; GET DIAGNOSTICS _counter = ROW_COUNT; RETURN _counter; END; $_$; tDROP FUNCTION public.changepseudofkeypointers(text, text, text, integer, text, text, integer, text, text, boolean); publicadminfalse83992!00fFUNCTION changepseudofkeypointers(text, text, text, integer, text, text, integer, text, text, boolean)COMMENTCOMMENT ON FUNCTION changepseudofkeypointers(text, text, text, integer, text, text, integer, text, text, boolean) IS 'Change the data in pSchema.pTable with a pseudo-foreign key relationship to another (unnamed) table. Make pSchema.pTable point to the record with primary key pTargetId instead of the record with primary key pSourceId. pSchema.pTable cannot have a true foreign key relationship because it holds data that can point to any of several tables. The pType value in the pTypeCol column describes which table the data refer to (e.g. "T" may indicate that the current record refers to a "cntct"). If the final arg is TRUE, make a backup copy of the data in the mrgundo table.'; publicadminfalse1064)12551691358+changewodates(integer, date, date, boolean)FUNCTIONC CREATE FUNCTION changewodates(integer, date, date, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pStartDate ALIAS FOR $2; pDueDate ALIAS FOR $3; changeChildren ALIAS FOR $4; _p RECORD; returnCode INTEGER; _vtemp NUMERIC; BEGIN SELECT wo_status, wo_startdate, itemsite_warehous_id INTO _p FROM wo Inner Join itemsite on wo_itemsite_id=itemsite_id WHERE (wo_id=pWoid); IF (_p.wo_status = 'C') THEN returnCode := 0; ELSIF (_p.wo_status IN ('R','I')) THEN INSERT INTO evntlog (evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number, evntlog_olddate, evntlog_newdate) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'W', wo_id, itemsite_warehous_id, formatWoNumber(wo_id), wo_duedate, pDueDate FROM evntnot, evnttype, itemsite, item, wo WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (evnttype_name='RWoDueDateRequestChange') AND (wo_id=pWoid) ); returnCode := 0; END IF; -- Reschedule operations if routings enabled IF (fetchMetricBool('Routings')) THEN -- Reschedule wooper IF (fetchMetricBool('UseSiteCalendar')) THEN UPDATE xtmfg.wooper SET wooper_scheduled = calculatenextworkingdate(itemsite_warehous_id,DATE(pStartDate), CAST(calculateworkdays(itemsite_warehous_id, DATE(wo_startdate), DATE(wooper_scheduled)) as INTEGER)) FROM wo JOIN itemsite ON (wo_itemsite_id=itemsite_id) WHERE ( (wooper_wo_id=wo_id) AND (wo_id=pWoid) ); ELSE UPDATE xtmfg.wooper SET wooper_scheduled = (wooper_scheduled::DATE + (pStartDate - wo_startdate)) FROM wo WHERE ( (wooper_wo_id=wo_id) AND (wo_id=pWoid) ); END IF; -- Reschedule any womatl that is linked to wooper items -- and is set to be scheduled with the wooper in question UPDATE womatl SET womatl_duedate=wooper_scheduled FROM xtmfg.wooper WHERE ( (womatl_schedatwooper) AND (womatl_wooper_id=wooper_id) AND (womatl_wo_id=pWoid) ); END IF; -- Reschedule any womatl that is not linked to wooper items UPDATE womatl SET womatl_duedate=pStartDate WHERE ( (NOT womatl_schedatwooper) AND (womatl_wo_id=pWoid) ); -- Reschedule the W/O UPDATE wo SET wo_startdate=pStartDate, wo_duedate=pDueDate WHERE (wo_id=pWoid); -- Do the same for the children IF (changeChildren) THEN SELECT MAX(changeWoDates(wo_id, (pStartDate - itemsite_leadtime), pStartDate, TRUE)) INTO returnCode FROM wo, itemsite WHERE ( (wo_itemsite_id=itemsite_id) AND (wo_ordtype='W') AND (wo_ordid=pWoid) ); END IF; IF (returnCode IS NULL) THEN returnCode := 0; END IF; RETURN returnCode; END; $_$; BDROP FUNCTION public.changewodates(integer, date, date, boolean); publicadminfalse83992+12551691359*changewoproject(integer, integer, boolean)FUNCTIONCREATE FUNCTION changewoproject(integer, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pPrjid ALIAS FOR $2; changeChildren ALIAS FOR $3; woStatus CHAR(1); _result INTEGER; BEGIN SELECT wo_status INTO woStatus FROM wo WHERE (wo_id=pWoid); UPDATE wo SET wo_prj_id=pPrjid WHERE (wo_id=pWoid); IF (woStatus = 'E' AND changeChildren) THEN _result := ( SELECT MIN(changeWoProject(wo_id, pPrjid, TRUE)) FROM womatl, wo WHERE ((womatl_itemsite_id=wo_itemsite_id) AND (wo_ordtype='W') AND (womatl_wo_id=pWoid) AND (wo_ordid=pWoid)) ); UPDATE pr SET pr_prj_id=pPrjid FROM womatl WHERE ((womatl_wo_id=pWoid) AND (pr_order_type='W') AND (pr_order_id=womatl_id)); ELSE _result = 1; END IF; RETURN _result; END; $_$; ADROP FUNCTION public.changewoproject(integer, integer, boolean); publicadminfalse83992,12551691360&changewoqty(integer, numeric, boolean)FUNCTION CREATE FUNCTION changewoqty(integer, numeric, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pQty ALIAS FOR $2; changeChildren ALIAS FOR $3; _r RECORD; _result INTEGER := 1; BEGIN SELECT wo_qtyord, wo_status, item_fractional INTO _r FROM wo JOIN itemsite ON (itemsite_id=wo_itemsite_id) JOIN item ON (item_id=itemsite_item_id) WHERE (wo_id=pWoid); IF (_r.wo_qtyord = pQty) THEN RETURN 0; END IF; IF (NOT _r.wo_status IN ('O','E','R','I')) THEN RETURN 1; END IF; IF (_r.wo_status IN ('R','I')) THEN INSERT INTO evntlog (evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number, evntlog_oldvalue, evntlog_newvalue) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'W', wo_id, itemsite_warehous_id, formatWoNumber(wo_id), wo_qtyord, pQty FROM evntnot, evnttype, itemsite, item, wo WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (evnttype_name='RWoQtyRequestChange') AND (wo_id=pWoid) ); _result = 0; END IF; UPDATE wo SET wo_qtyord=roundQty(_r.item_fractional, pQty) WHERE (wo_id=pWoid); UPDATE womatl SET womatl_qtyreq=(womatl_qtyfxd + wo_qtyord * womatl_qtyper) * (1 + womatl_scrap) FROM wo, itemsite WHERE ((womatl_wo_id=wo_id) AND (womatl_itemsite_id=itemsite_id) AND (wo_id=pWoid)); IF (fetchMetricBool('Routings')) THEN UPDATE xtmfg.wooper SET wooper_rntime = CASE WHEN ((booitem_rnqtyper = 0) OR (booitem_invproduomratio = 0)) THEN 0 WHEN (NOT booitem_rnrpt) THEN 0 ELSE ( ( booitem_rntime / booitem_rnqtyper / booitem_invproduomratio ) * wo_qtyord ) END FROM xtmfg.booitem, wo WHERE ((wooper_wo_id=wo_id) AND (wooper_booitem_id=booitem_id) AND (wo_id=pWoid)); END IF; IF (changeChildren) THEN _result := ( SELECT MIN(changeWoQty(wo_id, womatl_qtyreq, TRUE)) FROM womatl, wo WHERE ((womatl_itemsite_id=wo_itemsite_id) AND (wo_ordtype='W') AND (womatl_wo_id=pWoid) AND (wo_ordid=pWoid)) ); END IF; RETURN _result; END; $_$; =DROP FUNCTION public.changewoqty(integer, numeric, boolean); publicadminfalse39928-125516913612characteristicstostring(text, integer, text, text)FUNCTION]CREATE FUNCTION characteristicstostring(text, integer, text, text) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTargetType ALIAS FOR $1; pTargetId ALIAS FOR $2; pValKeySep ALIAS FOR $3; pPairSep ALIAS FOR $4; _string TEXT := ''; _extra BOOLEAN := false; _r RECORD; BEGIN FOR _r IN SELECT char_name, charass_value FROM charass, char WHERE ((charass_char_id=char_id) AND (charass_target_type=pTargetType) AND (charass_target_id=pTargetId)) LOOP IF(_extra) THEN _string := _string || pPairSep; END IF; _extra := true; _string := _string || _r.char_name || pValKeySep || _r.charass_value; END LOOP; RETURN _string; END; $_$; IDROP FUNCTION public.characteristicstostring(text, integer, text, text); publicadminfalse8399212551691362!checkcreditmemositeprivs(integer)FUNCTIONCREATE FUNCTION checkcreditmemositeprivs(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmheadid ALIAS FOR $1; _check BOOLEAN; _result INTEGER; BEGIN IF (NOT fetchMetricBool('MultiWhs')) THEN RETURN true; END IF; IF (NOT fetchUsrPrefBool('selectedSites')) THEN RETURN true; END IF; SELECT COALESCE(COUNT(*), 0) INTO _result FROM ( SELECT cmitem_id FROM cmitem JOIN itemsite ON (itemsite_id=cmitem_itemsite_id) WHERE ( (cmitem_cmhead_id=pCmheadid) AND (itemsite_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) ) AS data; IF (_result > 0) THEN RETURN false; END IF; RETURN true; END; $_$; 8DROP FUNCTION public.checkcreditmemositeprivs(integer); publicadminfalse3992812551691363&checkdetailformatted(integer, integer)FUNCTION|"CREATE FUNCTION checkdetailformatted(integer, integer) RETURNS SETOF checkdata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCheckheadid ALIAS FOR $1; pMaxLines ALIAS FOR $2; _row checkdata%ROWTYPE; _checkhead RECORD; _checkdetail RECORD; _rowcount INTEGER := 0; _page INTEGER := 1; _docnumber TEXT := ''; _docreference TEXT := ''; _docdate TEXT := ''; _docamount TEXT := ''; _docdiscount TEXT := ''; _docnetamount TEXT := ''; BEGIN -- Check header information SELECT checkhead_number AS checknumber, INITCAP(spellAmount(checkhead_amount, curr_id)) AS checkwords, formatDate(checkhead_checkdate) AS checkdate, formatMoney(checkhead_amount) AS checkamount, curr_symbol AS checkcurrsymbol, curr_abbr AS checkcurrabbr, curr_name AS checkcurrname, CASE WHEN checkhead_recip_type = 'C' THEN (SELECT cust_name FROM custinfo WHERE cust_id=checkhead_recip_id) WHEN checkhead_recip_type = 'T' THEN (SELECT taxauth_name FROM taxauth WHERE taxauth_id=checkhead_recip_id) WHEN checkhead_recip_type = 'V' THEN COALESCE((SELECT vendaddr_name FROM vendaddrinfo WHERE((UPPER(vendaddr_code)='REMIT') AND (vendaddr_vend_id=checkhead_recip_id))), (SELECT vend_name FROM vendinfo WHERE(vend_id=checkhead_recip_id))) END AS checkpayto, formatAddr(CASE WHEN checkhead_recip_type = 'C' THEN (SELECT cntct_addr_id FROM cntct, custinfo WHERE((cust_cntct_id=cntct_id) AND (cust_id=checkhead_recip_id))) WHEN checkhead_recip_type = 'T' THEN (SELECT taxauth_addr_id FROM taxauth WHERE(taxauth_id=checkhead_recip_id)) WHEN checkhead_recip_type = 'V' THEN COALESCE((SELECT vendaddr_addr_id FROM vendaddrinfo WHERE((UPPER(vendaddr_code)='REMIT') AND (vendaddr_vend_id=checkhead_recip_id))), (SELECT vend_addr_id FROM vendinfo WHERE(vend_id=checkhead_recip_id))) END) AS checkaddress, checkhead_for AS checkmemo INTO _checkhead FROM checkhead, curr_symbol WHERE((checkhead_curr_id = curr_id) AND (checkhead_id=pCheckheadid) ); IF (NOT FOUND) THEN RETURN; END IF; _row.checkdata_page := _page; _row.checkdata_checknumber := _checkhead.checknumber; _row.checkdata_checkwords := _checkhead.checkwords; _row.checkdata_checkdate := _checkhead.checkdate; _row.checkdata_checkamount := _checkhead.checkamount; _row.checkdata_checkcurrsymbol := _checkhead.checkcurrsymbol; _row.checkdata_checkcurrabbr := _checkhead.checkcurrabbr; _row.checkdata_checkcurrname := _checkhead.checkcurrname; _row.checkdata_checkpayto := _checkhead.checkpayto; _row.checkdata_checkaddress := _checkhead.checkaddress; _row.checkdata_checkmemo := _checkhead.checkmemo; -- Check item details FOR _checkdetail IN SELECT --VOUCHER------------- 1 AS ord, 1 AS sequence_value, checkitem_invcnumber, checkitem_ponumber, formatMoney(checkitem_amount) AS docnetamount, 'Invoice#: ' || vohead_invcnumber AS docnumber, formatDate(vohead_docdate) AS docdate, vohead_reference AS docreference, 'Voucher: ' || checkitem_vouchernumber AS vouchernumber, formatMoney(apopen_amount) AS docamount, formatMoney(checkitem_discount) AS docdiscount FROM checkitem, vohead, apopen WHERE ((checkitem_checkhead_id=pCheckheadid) AND (checkitem_vouchernumber = vohead_number) AND (apopen_docnumber = checkitem_vouchernumber) AND (apopen_doctype = 'V')) UNION SELECT --DEBIT MEMO ------------------------- 2 AS ord, 1 AS sequence_value, checkitem_invcnumber, checkitem_ponumber, formatMoney(checkitem_amount) AS f_amount, 'Debit Memo PO#: ' || checkitem_ponumber AS doc_number, '' AS f_docdate, 'Debit Memo: ' || checkitem_vouchernumber AS doc_reference, checkitem_vouchernumber AS vouchernumber, formatMoney(apopen_amount) AS amount, formatMoney(checkitem_discount) AS disc_cred FROM checkitem, apopen WHERE ((checkitem_checkhead_id=pCheckheadid) AND (checkitem_vouchernumber = apopen_docnumber) AND (apopen_doctype = 'D')) UNION SELECT --CREDITs-------------------------- 3 AS ord, 1 AS sequence_value, checkitem_invcnumber, checkitem_ponumber, formatMoney(checkitem_amount) AS f_amount, 'Invoice#: ' || vohead_invcnumber AS doc_number, formatDate(vohead_docdate) AS f_docdate, 'Credit Applied: ' || apapply_source_doctype || ' ' || apapply_source_docnumber AS doc_reference, 'Voucher ' || checkitem_vouchernumber AS vouchernumber, '' AS amount, formatMoney((apapply_amount)) AS disc_cred FROM checkitem, vohead, apapply WHERE ((checkitem_checkhead_id=pCheckheadid) AND (checkitem_vouchernumber = vohead_number) AND (apapply_target_docnumber = checkitem_vouchernumber )) UNION SELECT --NON-VENDOR----------------------- 4 AS ord, 1 AS sequence_value, checkitem_invcnumber, checkitem_ponumber, formatMoney(checkitem_amount) AS f_amount, checkitem_invcnumber AS doc_number, formatDate(checkitem_docdate) AS f_docdate, '' AS doc_reference, '' AS vouchernumber, '' AS amount, '' AS disc_cred FROM checkhead LEFT OUTER JOIN checkitem ON (checkitem_checkhead_id=checkhead_id) WHERE ((checkhead_id=pCheckheadid) AND (checkhead_recip_type != 'V')) LOOP IF (_rowcount = pMaxLines) THEN _row.checkdata_docnumber := _docnumber; _row.checkdata_docreference := _docreference; _row.checkdata_docdate := _docdate; _row.checkdata_docamount := _docamount; _row.checkdata_docdiscount := _docdiscount; _row.checkdata_docnetamount := _docnetamount; RETURN NEXT _row; -- update/reset some variables _rowcount = 0; _page := _page + 1; _docnumber := ''; _docreference := ''; _docdate := ''; _docamount := ''; _docdiscount := ''; _docnetamount := ''; _row.checkdata_page := _page; _row.checkdata_checknumber := _checkhead.checknumber; _row.checkdata_checkwords := 'VOID VOID PAGE '||_page||' OF CHECK #'||_checkhead.checknumber||' VOID VOID'; _row.checkdata_checkdate := 'VOID VOID VOID'; _row.checkdata_checkamount := 'VOID VOID VOID'; --_row.checkdata_checkcurrsymbol := _checkhead.checkcurrsymbol; --_row.checkdata_checkcurrabbr := _checkhead.checkcurrabbr; --_row.checkdata_checkcurrname := _checkhead.checkcurrname; _row.checkdata_checkpayto := 'VOID VOID VOID'; --_row.checkdata_checkaddress := _checkhead.checkaddress; _row.checkdata_checkmemo := 'VOID VOID PAGE '||_page||' OF CHECK #'||_checkhead.checknumber||' VOID VOID'; END IF; _rowcount := _rowcount + 1; _docnumber := _docnumber || _checkdetail.docnumber || E'\n'; _docreference := _docreference || _checkdetail.docreference || E'\n'; _docdate := _docdate || _checkdetail.docdate || E'\n'; _docamount := _docamount || _checkdetail.docamount || E'\n'; _docdiscount := _docdiscount || _checkdetail.docdiscount || E'\n'; _docnetamount := _docnetamount || _checkdetail.docnetamount || E'\n'; END LOOP; _row.checkdata_docnumber := _docnumber; _row.checkdata_docreference := _docreference; _row.checkdata_docdate := _docdate; _row.checkdata_docamount := _docamount; _row.checkdata_docdiscount := _docdiscount; _row.checkdata_docnetamount := _docnetamount; RETURN NEXT _row; RETURN; END; $_$; =DROP FUNCTION public.checkdetailformatted(integer, integer); publicadminfalse839922585/12551691365checkinvoicesiteprivs(integer)FUNCTIONCREATE FUNCTION checkinvoicesiteprivs(integer) RETURNS boolean LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcheadid ALIAS FOR $1; _check BOOLEAN; _result INTEGER; BEGIN IF (NOT fetchMetricBool('MultiWhs')) THEN RETURN true; END IF; IF (NOT fetchUsrPrefBool('selectedSites')) THEN RETURN true; END IF; SELECT COALESCE(COUNT(*), 0) INTO _result FROM ( SELECT invcitem_id FROM invcitem WHERE ( (invcitem_invchead_id=pInvcheadid) AND (invcitem_warehous_id <> -1) AND (invcitem_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) ) AS data; IF (_result > 0) THEN RETURN false; END IF; RETURN true; END; $_$; 5DROP FUNCTION public.checkinvoicesiteprivs(integer); publicadminfalse8399212551691366checkpositeprivs(integer)FUNCTIONWCREATE FUNCTION checkpositeprivs(integer) RETURNS boolean LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPoheadid ALIAS FOR $1; _check BOOLEAN; _result INTEGER; BEGIN IF (NOT fetchMetricBool('MultiWhs')) THEN RETURN true; END IF; IF (NOT fetchUsrPrefBool('selectedSites')) THEN RETURN true; END IF; SELECT COALESCE(COUNT(*), 0) INTO _result FROM ( SELECT poitem_id FROM poitem, itemsite WHERE ( (poitem_pohead_id=pPoheadid) AND (poitem_itemsite_id=itemsite_id) AND (itemsite_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) UNION SELECT pohead_warehous_id FROM pohead WHERE ( (pohead_id=pPoheadid) AND (pohead_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) ) AS data; IF (_result > 0) THEN RETURN false; END IF; RETURN true; END; $_$; 0DROP FUNCTION public.checkpositeprivs(integer); publicadminfalse83992012551691367checkprivilege(text)FUNCTIONCREATE FUNCTION checkprivilege(text) RETURNS boolean LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrivilege ALIAS FOR $1; _result TEXT; BEGIN SELECT priv_id INTO _result FROM priv, grppriv, usrgrp WHERE((usrgrp_grp_id=grppriv_grp_id) AND (grppriv_priv_id=priv_id) AND (priv_name=pPrivilege) AND (usrgrp_username=getEffectiveXtUser())); IF (FOUND) THEN RETURN true; END IF; SELECT priv_id INTO _result FROM priv, usrpriv WHERE ((priv_id=usrpriv_priv_id) AND (priv_name=pPrivilege) AND (usrpriv_username=getEffectiveXtUser())); IF (FOUND) THEN RETURN true; ELSE RETURN false; END IF; END; $_$; +DROP FUNCTION public.checkprivilege(text); publicadminfalse83992112551691368checkquotesiteprivs(integer)FUNCTIONHCREATE FUNCTION checkquotesiteprivs(integer) RETURNS boolean LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; BEGIN RETURN checkQuoteSitePrivs(pQuheadid, NULL); END; $_$; 3DROP FUNCTION public.checkquotesiteprivs(integer); publicadminfalse83992212551691369%checkquotesiteprivs(integer, integer)FUNCTIONCREATE FUNCTION checkquotesiteprivs(integer, integer) RETURNS boolean LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; pWarehousid ALIAS FOR $2; _result INTEGER := 0; BEGIN -- RAISE NOTICE 'checkQuoteSitePrivs, pQuheadid = %', pQuheadid; -- RAISE NOTICE 'checkQuoteSitePrivs, pWarehousid = %', pWarehousid; IF (NOT fetchMetricBool('MultiWhs')) THEN RETURN true; END IF; IF ( (NOT fetchUsrPrefBool('selectedSites')) AND (pWarehousid IS NULL) ) THEN RETURN true; END IF; IF (pWarehousid IS NULL) THEN SELECT COALESCE(COUNT(*), 0) INTO _result FROM quitem JOIN itemsite ON (itemsite_id=quitem_itemsite_id) JOIN site() ON (warehous_id=itemsite_warehous_id) WHERE (quitem_quhead_id=pQuheadid); ELSE SELECT COALESCE(COUNT(*), 0) INTO _result FROM quitem JOIN itemsite ON (itemsite_id=quitem_itemsite_id) JOIN site() ON (warehous_id=itemsite_warehous_id) WHERE ( (quitem_quhead_id=pQuheadid) AND (itemsite_warehous_id=pWarehousid) ); END IF; IF (_result > 0) THEN RETURN true; END IF; RETURN false; END; $_$; <DROP FUNCTION public.checkquotesiteprivs(integer, integer); publicadminfalse83992712551691370checkrasiteprivs(integer)FUNCTIONCREATE FUNCTION checkrasiteprivs(integer) RETURNS boolean LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pRaheadid ALIAS FOR $1; _check BOOLEAN; _result INTEGER; BEGIN IF (NOT fetchMetricBool('MultiWhs')) THEN RETURN true; END IF; IF (NOT fetchUsrPrefBool('selectedSites')) THEN RETURN true; END IF; SELECT COALESCE(COUNT(*), 0) INTO _result FROM ( SELECT raitem_id FROM raitem, itemsite WHERE ( (raitem_rahead_id=pRaheadid) AND (raitem_itemsite_id=itemsite_id) AND (itemsite_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) UNION SELECT raitem_id FROM raitem, itemsite WHERE ( (raitem_rahead_id=pRaheadid) AND (raitem_coitem_itemsite_id=itemsite_id) AND (itemsite_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) ) AS data; IF (_result > 0) THEN RETURN false; END IF; RETURN true; END; $_$; 0DROP FUNCTION public.checkrasiteprivs(integer); publicadminfalse83992:12551691371checkshipmentsiteprivs(integer)FUNCTION$CREATE FUNCTION checkshipmentsiteprivs(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipheadid ALIAS FOR $1; _check BOOLEAN; _result INTEGER; BEGIN IF (NOT fetchMetricBool('MultiWhs')) THEN RETURN true; END IF; IF (NOT fetchUsrPrefBool('selectedSites')) THEN RETURN true; END IF; SELECT COALESCE(COUNT(*), 0) INTO _result FROM ( SELECT coitem_id FROM shipitem, coitem, itemsite WHERE ( (shipitem_shiphead_id=pShipheadid) AND (coitem_id=shipitem_orderitem_id) AND (coitem_itemsite_id=itemsite_id) AND (itemsite_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) UNION SELECT cohead_warehous_id FROM shipitem, coitem, cohead WHERE ( (shipitem_shiphead_id=pShipheadid) AND (coitem_id=shipitem_orderitem_id) AND (cohead_id=coitem_cohead_id) AND (cohead_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) ) AS data; IF (_result > 0) THEN RETURN false; END IF; RETURN true; END; $_$; 6DROP FUNCTION public.checkshipmentsiteprivs(integer); publicadminfalse83992?12551691372checksositeprivs(integer)FUNCTIONWCREATE FUNCTION checksositeprivs(integer) RETURNS boolean LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; _check BOOLEAN; _result INTEGER; BEGIN IF (NOT fetchMetricBool('MultiWhs')) THEN RETURN true; END IF; IF (NOT fetchUsrPrefBool('selectedSites')) THEN RETURN true; END IF; SELECT COALESCE(COUNT(*), 0) INTO _result FROM ( SELECT coitem_id FROM coitem, itemsite WHERE ( (coitem_cohead_id=pSoheadid) AND (coitem_itemsite_id=itemsite_id) AND (itemsite_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) UNION SELECT cohead_warehous_id FROM cohead WHERE ( (cohead_id=pSoheadid) AND (cohead_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) ) AS data; IF (_result > 0) THEN RETURN false; END IF; RETURN true; END; $_$; 0DROP FUNCTION public.checksositeprivs(integer); publicadminfalse83992A12551691373checkvouchersiteprivs(integer)FUNCTIONCREATE FUNCTION checkvouchersiteprivs(integer) RETURNS boolean LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVoheadid ALIAS FOR $1; _check BOOLEAN; _result INTEGER; BEGIN IF (NOT fetchMetricBool('MultiWhs')) THEN RETURN true; END IF; IF (NOT fetchUsrPrefBool('selectedSites')) THEN RETURN true; END IF; SELECT COALESCE(COUNT(*), 0) INTO _result FROM ( SELECT voitem_id FROM voitem, poitem, itemsite WHERE ( (voitem_vohead_id=pVoheadid) AND (poitem_id=voitem_poitem_id) AND (poitem_itemsite_id=itemsite_id) AND (itemsite_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) UNION SELECT pohead_warehous_id FROM vohead, pohead WHERE ( (vohead_id=pVoheadid) AND (pohead_id=vohead_pohead_id) AND (pohead_warehous_id NOT IN (SELECT usrsite_warehous_id FROM usrsite WHERE (usrsite_username=getEffectiveXtUser()))) ) ) AS data; IF (_result > 0) THEN RETURN false; END IF; RETURN true; END; $_$; 5DROP FUNCTION public.checkvouchersiteprivs(integer); publicadminfalse83992B12551691374clearnumberissue(text, integer)FUNCTIONqCREATE FUNCTION clearnumberissue(psequence text, pnumber integer) RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE __seqiss seqiss[]; __newiss seqiss[] := ARRAY[]::seqiss[]; _i INTEGER; _result BOOLEAN := FALSE; _interval TEXT := fetchMetricText('NumberIssueResetIntervalDays') || ' day'; _number INTEGER; BEGIN -- get the sequence to update SELECT orderseq_seqiss INTO __seqiss FROM orderseq WHERE (orderseq_name=psequence); IF (NOT FOUND) THEN RAISE EXCEPTION 'Invalid orderseq_name %', psequence; END IF; IF(ARRAY_LENGTH(COALESCE(__seqiss,__newiss),1) IS NULL) THEN RETURN FALSE; END IF; -- build a new array sans the number we are releasing FOR _i IN 1..ARRAY_LENGTH(__seqiss,1) LOOP IF((__seqiss[_i]).seqiss_number = pnumber) THEN _result = TRUE; -- don't bother re-adding stale numbers ELSIF (now() - _interval::INTERVAL > (__seqiss[_i]).seqiss_time) THEN IF (_number IS NULL) THEN _number := (__seqiss[_i]).seqiss_number; ELSE _number := LEAST((__seqiss[_i]).seqiss_number, _number); END IF; ELSE __newiss := __newiss || __seqiss[_i]; END IF; END LOOP; -- update the order sequence with the result UPDATE orderseq SET orderseq_seqiss = __newiss WHERE (orderseq_name=psequence); -- reset to any cleared stale number IF(_number IS NOT NULL) THEN UPDATE orderseq SET orderseq_number = _number WHERE (orderseq_name=psequence); END IF; RETURN _result; END; $$; HDROP FUNCTION public.clearnumberissue(psequence text, pnumber integer); publicadminfalse83992C12551691375clearnumberissue(text, text)FUNCTIONCREATE FUNCTION clearnumberissue(psequence text, pnumber text) RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _castpnumber INTEGER; BEGIN -- for now, order numbers in the database are text but usually -- string representations of integers. allow for the occasional non-integer. BEGIN _castpnumber := CAST(pnumber AS INTEGER); EXCEPTION WHEN cannot_coerce OR invalid_text_representation THEN RAISE DEBUG 'clearNumberIssue(%, %) received an unexpected pnumber', psequence, pnumber; RETURN FALSE; END; RETURN clearNumberIssue(psequence, _castpnumber); END; $$; EDROP FUNCTION public.clearnumberissue(psequence text, pnumber text); publicadminfalse83992E12551691376clearpayment(integer)FUNCTIONTCREATE FUNCTION clearpayment(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApselectid ALIAS FOR $1; BEGIN DELETE FROM apselect WHERE (apselect_id=pApselectid); RETURN 1; END; $_$; ,DROP FUNCTION public.clearpayment(integer); publicadminfalse83992F12551691377closeaccountingperiod(integer)FUNCTION?CREATE FUNCTION closeaccountingperiod(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; _r RECORD; _nextPeriodid INTEGER; _trialbalid INTEGER; _ending NUMERIC; _currYear INTEGER; _nextYear INTEGER; BEGIN -- Bypass error checking is this the the initial period IF ( NOT ( SELECT period_initial FROM period WHERE (period_id=pPeriodid) ) ) THEN -- Check to make use that the period is not already closed IF ( ( SELECT period_closed FROM period WHERE (period_id=pPeriodid) ) ) THEN RETURN -1; END IF; -- Make sure that the day before this period belongs to another period SELECT prev.period_id AS periodid, prev.period_closed AS closed INTO _r FROM period AS prev, period AS curr WHERE ( (prev.period_end = (curr.period_start - 1)) AND (curr.period_id=pPeriodid) ); IF (NOT FOUND) THEN RETURN -2; END IF; -- Make sure that the previous period is closed IF (NOT _r.closed) THEN RETURN -3; END IF; END IF; -- Make sure that there the next period is defined SELECT next.period_id INTO _nextPeriodid FROM period AS next, period AS curr WHERE ( (next.period_start = (curr.period_end + 1)) AND (curr.period_id=pPeriodid) ); IF (NOT FOUND) THEN RETURN -4; END IF; -- Make sure that the user is not trying to prematurely close the Period IF ( ( SELECT (period_end >= CURRENT_DATE) FROM period WHERE (period_id=pPeriodid) ) ) THEN RETURN -5; END IF; SELECT yearperiod_id INTO _currYear FROM yearperiod, period WHERE ((period_end BETWEEN yearperiod_start and yearperiod_end) AND (period_id=pPeriodid)); IF (NOT FOUND) THEN _currYear := -1; END IF; SELECT yearperiod_id INTO _nextYear FROM yearperiod, period WHERE ((period_end BETWEEN yearperiod_start and yearperiod_end) AND (period_id=_nextPeriodid)); IF (NOT FOUND) THEN RETURN -6; END IF; -- Walk through the entire COA, calculating the ending balance and pushing -- it to the beginning balance for the next period FOR _r IN SELECT accnt_id, accnt_type IN ('E', 'R') AS revexp, trialbal_id, trialbal_beginning, trialbal_credits, trialbal_debits FROM accnt LEFT OUTER JOIN trialbal ON ( (trialbal_accnt_id=accnt_id) AND (trialbal_period_id=pPeriodid) ) ORDER BY accnt_id LOOP IF (_r.trialbal_id IS NULL) THEN _ending = 0; INSERT INTO trialbal ( trialbal_period_id, trialbal_accnt_id, trialbal_beginning, trialbal_ending, trialbal_dirty, trialbal_credits, trialbal_debits ) VALUES ( pPeriodid, _r.accnt_id, 0, 0, FALSE, 0, 0 ); ELSE _ending = (_r.trialbal_beginning - _r.trialbal_debits + _r.trialbal_credits); UPDATE trialbal SET trialbal_ending=_ending, trialbal_dirty = FALSE WHERE (trialbal_id=_r.trialbal_id); PERFORM forwardUpdateTrialBalance(_r.trialbal_id); END IF; IF (_r.revexp AND _currYear != _nextYear) THEN _ending := 0; END IF; -- Find the trialbal record for the next period SELECT trialbal_id INTO _trialbalid FROM trialbal WHERE ( (trialbal_period_id=_nextPeriodid) AND (trialbal_accnt_id=_r.accnt_id) ); IF (FOUND) THEN UPDATE trialbal SET trialbal_beginning = (_ending + trialbal_yearend), trialbal_ending = (_ending + trialbal_yearend - trialbal_debits + trialbal_credits) WHERE (trialbal_id=_trialbalid); ELSE INSERT INTO trialbal ( trialbal_period_id, trialbal_accnt_id, trialbal_beginning, trialbal_ending, trialbal_dirty, trialbal_credits, trialbal_debits ) VALUES(_nextPeriodid, _r.accnt_id, _ending, _ending, TRUE, 0, 0 ); END IF; END LOOP; -- Set the period_closed flag UPDATE period SET period_closed=TRUE WHERE (period_id=pPeriodid); RETURN pPeriodid; END; $_$; 5DROP FUNCTION public.closeaccountingperiod(integer); publicadminfalse39928T12551691378"closeaccountingyearperiod(integer)FUNCTIONCREATE FUNCTION closeaccountingyearperiod(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pYearPeriodid ALIAS FOR $1; _result INTEGER; BEGIN -- Check to make sure that the yearperiod is not already closed IF ( ( SELECT yearperiod_closed FROM yearperiod WHERE (yearperiod_id=pYearPeriodid) ) ) THEN RETURN -1; END IF; IF ( ( SELECT (count(period_id) > 0) FROM period WHERE ((period_yearperiod_id=pYearPeriodid) AND (NOT period_closed)) ) ) THEN RETURN -10; END IF; IF ( ( SELECT (count(yearperiod_id) > 0) FROM yearperiod WHERE ((yearperiod_end< ( SELECT yearperiod_end FROM yearperiod WHERE (yearperiod_id=pYearPeriodId)) ) AND (NOT yearperiod_closed)) ) ) THEN RETURN -11; END IF; -- Should we check for a previous yearperiod existing already ? -- If so then we should return -2 if one does not. -- If we did the previous yearperiod we should check to make sure that -- it is also closed. Returning -3 if it is not. -- Make sure that the user is not trying to prematurely close the YearPeriod IF ( ( SELECT (yearperiod_end >= CURRENT_DATE) FROM yearperiod WHERE (yearperiod_id=pYearPeriodid) ) ) THEN RETURN -5; END IF; -- Update the year end Retained Earnings SELECT updateRetainedEarnings(pYearPeriodid) INTO _result; IF (_result < 0) THEN RETURN _result; END IF; UPDATE yearperiod SET yearperiod_closed = TRUE WHERE yearperiod_id = pYearPeriodid; RETURN 0; END; $_$; 9DROP FUNCTION public.closeaccountingyearperiod(integer); publicadminfalse8399212551691379closepo(integer)FUNCTIONCREATE FUNCTION closepo(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPoheadid ALIAS FOR $1; BEGIN UPDATE poitem SET poitem_status='C' WHERE (poitem_pohead_id=pPoheadid); -- _poitemTrigger will close pohead when the last poitem is closed -- UPDATE pohead -- SET pohead_status='C' -- WHERE (pohead_id=pPoheadid); RETURN 1; END; $_$; 'DROP FUNCTION public.closepo(integer); publicadminfalse3992812551691380closewo(integer, boolean)FUNCTIONrCREATE FUNCTION closewo(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pPostMaterialVariances ALIAS FOR $2; BEGIN RETURN closeWo(pWoid, pPostMaterialVariances, CURRENT_DATE); END; $_$; 0DROP FUNCTION public.closewo(integer, boolean); publicadminfalse83992\12551691381closewo(integer, boolean, date)FUNCTIONCREATE FUNCTION closewo(integer, boolean, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pPostMaterialVariances ALIAS FOR $2; pTransDate ALIAS FOR $3; _woNumber TEXT; _check CHAR; _itemlocSeries INTEGER := 0; BEGIN --If this is item type Job then we cannot close here SELECT itemsite_costmethod INTO _check FROM wo,itemsite WHERE ((wo_id=pWoid) AND (wo_itemsite_id=itemsite_id) AND (itemsite_costmethod = 'J')); IF (FOUND) THEN RAISE EXCEPTION 'Work orders for Job items are closed when all quantities are shipped'; END IF; SELECT formatWoNumber(pWoid) INTO _woNumber; -- If there are any tools issued on this job then we cannot close here IF ( SELECT (count(*) > 0) FROM womatl JOIN itemsite ON (womatl_itemsite_id=itemsite_id) JOIN item ON ((itemsite_item_id=item_id) AND (item_type='T')) WHERE ((womatl_wo_id=pWoid) AND (womatl_qtyiss > 0)) ) THEN RAISE EXCEPTION 'All Tools must be returned before the W/O can be closed'; END IF; -- Distribute any remaining wo_wipvalue to G/L - debit Inventory Cost, credit WIP PERFORM insertGLTransaction( 'W/O', 'WO', _woNumber, ('Manufacturing Inventory Cost Variance for ' || item_number), getPrjAccntId(wo_prj_id, costcat_wip_accnt_id), getPrjAccntId(wo_prj_id, costcat_invcost_accnt_id), -1, COALESCE(wo_wipvalue, 0), pTransDate ) FROM wo, itemsite, item, costcat WHERE ( (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (itemsite_costcat_id=costcat_id) AND (wo_id=pWoid) ); -- Distribute any remaining wo_brdvalue to G/L - debit Inventory Cost, credit WIP PERFORM insertGLTransaction( 'W/O', 'WO', _woNumber, ('Breeder Inventory Cost Variance for ' || item_number), getPrjAccntId(wo_prj_id, costcat_wip_accnt_id), CASE WHEN(itemsite_costmethod='A') THEN costcat_asset_accnt_id ELSE getPrjAccntId(wo_prj_id, costcat_invcost_accnt_id) END, -1, COALESCE(wo_brdvalue, 0), pTransDate ) FROM wo, itemsite, item, costcat WHERE ( (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (itemsite_costcat_id=costcat_id) AND (wo_id=pWoid) ); -- Don't bother with posting variances if the qtyrcv is 0 as -- they are meaningless. IF ( ( SELECT wo_qtyrcv FROM wo WHERE (wo_id=pWoid) ) > 0 ) THEN IF (pPostMaterialVariances) THEN -- Post womatl variances INSERT INTO womatlvar ( womatlvar_number, womatlvar_subnumber, womatlvar_posted, womatlvar_parent_itemsite_id, womatlvar_component_itemsite_id, womatlvar_qtyord, womatlvar_qtyrcv, womatlvar_qtyiss, womatlvar_qtyfxd, womatlvar_qtyper, womatlvar_scrap, womatlvar_wipscrap, womatlvar_bomitem_id, womatlvar_notes, womatlvar_ref ) SELECT wo_number, wo_subnumber, pTransDate, wo_itemsite_id, womatl_itemsite_id, wo_qtyord, wo_qtyrcv, itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyiss), itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyfxd), itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyper), womatl_scrap, itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtywipscrap), womatl_bomitem_id, womatl_notes, womatl_ref FROM wo, womatl, itemsite, item WHERE ((womatl_wo_id=wo_id) AND (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_type <> 'T') AND (wo_id=pWoid)); END IF; END IF; -- Delete any P/R's created for this W/O PERFORM deletePr('W', womatl_id) FROM womatl WHERE (womatl_wo_id=pWoid); UPDATE wo SET wo_wipvalue = 0, wo_brdvalue=0, wo_status='C' WHERE (wo_id=pWoid); RETURN 1; END; $_$; 6DROP FUNCTION public.closewo(integer, boolean, date); publicadminfalse8399212591691382cntctTABLECREATE TABLE cntct ( cntct_id integer NOT NULL, cntct_crmacct_id integer, cntct_addr_id integer, cntct_first_name text, cntct_last_name text, cntct_honorific text, cntct_initials text, cntct_active boolean DEFAULT true, cntct_phone text, cntct_phone2 text, cntct_fax text, cntct_email text, cntct_webaddr text, cntct_notes text, cntct_title text, cntct_number text NOT NULL, cntct_middle text, cntct_suffix text, cntct_owner_username text, cntct_name text ); DROP TABLE public.cntct; publicadminfalse57608!00 TABLE cntctCOMMENTSCOMMENT ON TABLE cntct IS 'Contact - information on how to reach a living person'; publicadminfalse152!00cntctACLREVOKE ALL ON TABLE cntct FROM PUBLIC; REVOKE ALL ON TABLE cntct FROM admin; GRANT ALL ON TABLE cntct TO admin; GRANT ALL ON TABLE cntct TO xtrole; publicadminfalse152`12551691389cntct()FUNCTIONCREATE FUNCTION cntct() RETURNS SETOF cntct LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row cntct%ROWTYPE; _priv TEXT; _grant BOOLEAN; BEGIN -- This query will give us the most permissive privilege the user has been granted SELECT privilege, granted INTO _priv, _grant FROM privgranted WHERE privilege IN ('MaintainAllContacts','ViewAllContacts','MaintainPersonalContacts','ViewPersonalContacts') ORDER BY granted DESC, sequence LIMIT 1; -- If have an 'All' privilege return all results IF (_priv ~ 'All' AND _grant) THEN FOR _row IN SELECT * FROM cntct LOOP RETURN NEXT _row; END LOOP; -- Otherwise if have any other grant, must be personal privilege. ELSIF (_grant) THEN FOR _row IN SELECT * FROM cntct WHERE cntct_owner_username = getEffectiveXtUser() LOOP RETURN NEXT _row; END LOOP; END IF; RETURN; END; $$; DROP FUNCTION public.cntct(); publicadminfalse839922624!00FUNCTION cntct()COMMENTqCOMMENT ON FUNCTION cntct() IS 'A table function that returns Contact results according to privilege settings.'; publicadminfalse112012552008352cntctdups(text, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean)FUNCTION#CREATE FUNCTION cntctdups(text, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) RETURNS SETOF cntctdup LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSearchText ALIAS FOR $1; pSearchContactName ALIAS FOR $2; pSearchPhone ALIAS FOR $3; pSearchEmail ALIAS FOR $4; pSearchNumber ALIAS FOR $5; pSearchName ALIAS FOR $6; pShowInactive ALIAS FOR $7; pIgnoreBlanks ALIAS FOR $8; pIndentedDups ALIAS FOR $9; pCheckHnfc ALIAS FOR $10; pCheckFirst ALIAS FOR $11; pCheckMiddle ALIAS FOR $12; pCheckLast ALIAS FOR $13; pCheckSuffix ALIAS FOR $14; pCheckPhone ALIAS FOR $15; pCheckEmail ALIAS FOR $16; _cntct cntctdup%ROWTYPE; _cntctdup cntctdup%ROWTYPE; _rec RECORD; _operator TEXT := ''; _clause TEXT; _qry TEXT := ''; _return BOOLEAN := true; _text TEXT; _first BOOLEAN := true; BEGIN -- Validate IF (pIndentedDups AND NOT pCheckHnfc AND NOT pCheckFirst AND NOT pCheckMiddle AND NOT pCheckLast AND NOT pCheckSuffix AND NOT pCheckEmail AND NOT pCheckPhone) THEN RETURN; END IF; _text = quote_literal(pSearchText); IF (pIndentedDups) THEN _qry := 'SELECT -1 AS cntct_id, -1 AS cntct_crmacct_id, -1 AS cntct_addr_id,'; IF (NOT pCheckFirst) THEN _qry := _qry || ''''' AS '; END IF; _qry := _qry || ' cntct_first_name,'; IF (NOT pCheckLast) THEN _qry := _qry || ''''' AS '; END IF; _qry := _qry || ' cntct_last_name,'; IF (NOT pCheckHnfc) THEN _qry := _qry || ''''' AS '; END IF; _qry := _qry || ' cntct_honorific,'; _qry := _qry || ' '''' AS cntct_initials,'; _qry := _qry || ' NULL AS cntct_active,'; IF (NOT pCheckPhone) THEN _qry := _qry || ''''' AS '; END IF; _qry := _qry || ' cntct_phone,'; IF (NOT pCheckPhone) THEN _qry := _qry || ''''' AS '; END IF; _qry := _qry || ' cntct_phone2,'; _qry := _qry || ' '''' AS cntct_fax,'; IF (NOT pCheckEmail) THEN _qry := _qry || ''''' AS '; END IF; _qry := _qry || ' cntct_email,'; _qry := _qry || ' '''' AS cntct_webaddr,'; _qry := _qry || ' '''' AS cntct_notes,'; _qry := _qry || ' '''' AS cntct_title,'; _qry := _qry || ' '''' AS cntct_number,'; IF (NOT pCheckMiddle) THEN _qry := _qry || ''''' AS '; END IF; _qry := _qry || ' cntct_middle,'; IF (NOT pCheckSuffix) THEN _qry := _qry || ''''' AS '; END IF; _qry := _qry || ' cntct_suffix,'; _qry := _qry || ' '''' AS cntct_owner_username,'; _qry := _qry || ' '''' AS cntct_name,'; _qry := _qry || ' '''' AS crmacct_number, '; _qry := _qry || ' '''' AS crmacct_name, '; _qry := _qry || ' NULL AS addr_id, NULL AS addr_active, '''' AS addr_line1, '''' AS addr_line2, '''' AS addr_line3, '''' AS addr_city, '''' AS addr_state, '''' AS addr_postalcode, '''' AS addr_country, '''' AS addr_notes, '''' AS addr_number, cntctdup_level FROM ('; END IF; _clause := 'SELECT cntct_id, cntct_crmacct_id, cntct_addr_id, UPPER(cntct_first_name) AS cntct_first_name, UPPER(cntct_last_name) AS cntct_last_name, UPPER(cntct_honorific) AS cntct_honorific, cntct_initials, cntct_active, cntct_phone, cntct_phone2, cntct_fax, UPPER(cntct_email) AS cntct_email, cntct_webaddr, cntct_notes, cntct_title, cntct_number, UPPER(cntct_middle) AS cntct_middle, UPPER(cntct_suffix) AS cntct_suffix, cntct_owner_username, cntct_name, crmacct_number, crmacct_name, addr.*, 0 AS cntctdup_level FROM cntct() LEFT OUTER JOIN crmacct ON (cntct_crmacct_id=crmacct_id) LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) WHERE '; IF (NOT pIndentedDups) THEN WHILE position('UPPER' in _clause) > 0 LOOP _clause := regexp_replace(_clause, 'UPPER', ''); END LOOP; END IF; _qry := _qry || _clause; IF (NOT pShowInactive) THEN _qry := _qry || ' cntct_active AND '; END IF; IF (pIgnoreBlanks) THEN _qry := _qry || ' (COALESCE(LENGTH(cntct_first_name || cntct_last_name),0) > 0) AND '; END IF; _qry := _qry || '(false '; IF (pSearchNumber) THEN _qry := _qry || ' OR (crmacct_number ~* ' || quote_literal(pSearchText) || ') '; END IF; IF (pSearchName) THEN _qry := _qry || ' OR (crmacct_name ~* ' || quote_literal(pSearchText) || ') '; END IF; IF (pSearchContactName) THEN _qry := _qry || ' OR (cntct_first_name || '' '' || cntct_last_name ~* ' || quote_literal(pSearchText) || ') '; END IF; IF (pSearchPhone) THEN _qry := _qry || ' OR (cntct_phone || '' '' || cntct_phone2 || '' '' || cntct_fax ~* ' || quote_literal(pSearchText) || ') '; END IF; IF (pSearchEmail) THEN _qry := _qry || ' OR (cntct_email ~* ' || quote_literal(pSearchText) || ') '; END IF; _qry := _qry || ' ) '; IF (pIndentedDups) THEN _qry := _qry || ') data'; _clause := ' GROUP BY cntctdup_level'; IF (pCheckHnfc) THEN _clause := _clause || ',cntct_honorific'; END IF; IF (pCheckFirst) THEN _clause := _clause || ',cntct_first_name'; END IF; IF (pCheckMiddle) THEN _clause := _clause || ',cntct_middle'; END IF; IF (pCheckLast) THEN _clause := _clause || ',cntct_last_name'; END IF; IF (pCheckSuffix) THEN _clause := _clause || ',cntct_suffix'; END IF; IF (pCheckEmail) THEN _clause := _clause || ',cntct_email'; END IF; IF (pCheckPhone) THEN _clause := _clause || ',cntct_phone'; _clause := _clause || ',cntct_phone2'; END IF; _qry := _qry || _clause; _clause := ' HAVING('; IF (pCheckHnfc) THEN _clause := _clause || 'OR COUNT(cntct_honorific) > 1 '; END IF; IF (pCheckFirst) THEN _clause := _clause || 'OR COUNT(cntct_first_name) > 1 '; END IF; IF (pCheckMiddle) THEN _clause := _clause || 'OR COUNT(cntct_middle) > 1 '; END IF; IF (pCheckLast) THEN _clause := _clause || 'OR COUNT(cntct_last_name) > 1 '; END IF; IF (pCheckSuffix) THEN _clause := _clause || 'OR COUNT(cntct_suffix) > 1 '; END IF; IF (pCheckEmail) THEN _clause := _clause || 'OR COUNT(cntct_email) > 1 '; END IF; IF (pCheckPhone) THEN _clause := _clause || 'OR (COUNT(cntct_phone) > 1 AND LENGTH(cntct_phone) > 0) '; _clause := _clause || 'OR (COUNT(cntct_phone2) > 1 AND LENGTH(cntct_phone2) > 0) '; END IF; _clause := _clause || ') '; _clause := overlay(_clause placing '' from 9 for 2); IF (pCheckHnfc) THEN _clause := _clause || 'AND LENGTH(cntct_honorific) > 0 '; END IF; IF (pCheckFirst) THEN _clause := _clause || 'AND LENGTH(cntct_first_name) > 0 '; END IF; IF (pCheckMiddle) THEN _clause := _clause || 'AND LENGTH(cntct_middle) > 0 '; END IF; IF (pCheckLast) THEN _clause := _clause || 'AND LENGTH(cntct_last_name) > 0 '; END IF; IF (pCheckSuffix) THEN _clause := _clause || 'AND LENGTH(cntct_suffix) > 0 '; END IF; IF (pCheckEmail) THEN _clause := _clause || 'AND LENGTH(cntct_email) > 0 '; END IF; _qry := _qry || _clause; END IF; _qry := _qry || ' ORDER BY cntct_last_name, cntct_first_name;'; -- raise exception '%',_qry; FOR _cntct IN EXECUTE _qry LOOP RETURN NEXT _cntct; -- If duplicates, get duplicates IF (pIndentedDups) THEN _qry := 'SELECT cntct.*, crmacct_number, crmacct_name, addr.*, 1 AS cntctdup_level FROM cntct() LEFT OUTER JOIN crmacct ON (cntct_crmacct_id=crmacct_id) LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) WHERE (true) '; IF (pCheckHnfc) THEN _qry := _qry || ' AND (UPPER(cntct_honorific)=' || quote_literal(_cntct.cntct_honorific) || ')'; END IF; IF (pCheckFirst) THEN _qry := _qry || ' AND (UPPER(cntct_first_name)=' || quote_literal(_cntct.cntct_first_name) || ')'; END IF; IF (pCheckMiddle) THEN _qry := _qry || ' AND (UPPER(cntct_middle)=' || quote_literal(_cntct.cntct_middle) || ')'; END IF; IF (pCheckLast) THEN _qry := _qry || ' AND (UPPER(cntct_last_name)=' || quote_literal(_cntct.cntct_last_name) || ')'; END IF; IF (pCheckSuffix) THEN _qry := _qry || ' AND (UPPER(cntct_suffix)=' || quote_literal(_cntct.cntct_suffix) || ')'; END IF; IF (pCheckPhone) THEN _qry := _qry || ' AND (cntct_phone=' || quote_literal(_cntct.cntct_phone) || ')'; END IF; IF (pCheckEmail) THEN _qry := _qry || ' AND (UPPER(cntct_email)=' || quote_literal(_cntct.cntct_email) || ')'; END IF; -- raise exception '%',_qry; FOR _cntctdup IN EXECUTE _qry LOOP RETURN NEXT _cntctdup; END LOOP; END IF; END LOOP; RETURN; END; $_$; DROP FUNCTION public.cntctdups(text, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean); publicadminfalse83992257912551691392%cntctmerge(integer, integer, boolean)FUNCTION"2CREATE FUNCTION cntctmerge(integer, integer, boolean) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSourceCntctId ALIAS FOR $1; pTargetCntctId ALIAS FOR $2; pPurge ALIAS FOR $3; _fk RECORD; _pk RECORD; _sel RECORD; _seq INTEGER; _col TEXT; _pkcol TEXT; _qry TEXT; _multi BOOLEAN; BEGIN -- Validate IF (pSourceCntctId IS NULL) THEN RAISE EXCEPTION 'Source contact id can not be null'; ELSIF (pTargetCntctId IS NULL) THEN RAISE EXCEPTION 'Target contact id can not be null'; ELSIF (pPurge IS NULL) THEN RAISE EXCEPTION 'Purge flag can not be null'; END IF; -- Determine where this contact is used by analyzing foreign key linkages and update each FOR _fk IN SELECT pg_namespace.nspname AS schemaname, con.relname AS tablename, conkey AS seq, conrelid AS class_id FROM pg_constraint, pg_class f, pg_class con, pg_namespace WHERE confrelid=f.oid AND conrelid=con.oid AND f.relname = 'cntct' AND con.relnamespace=pg_namespace.oid AND con.relname NOT IN ('cntctsel', 'cntctmrgd', 'mrghist','trgthist') LOOP -- Validate IF (ARRAY_UPPER(_fk.seq,1) > 1) THEN RAISE EXCEPTION 'Updates to tables where the contact is one of multiple foreign key columns is not supported. Error on Table: %', pg_namespace.nspname || '.' || con.relname; END IF; _seq := _fk.seq[1]; -- Get the specific column name SELECT attname INTO _col FROM pg_attribute, pg_class WHERE ((attrelid=pg_class.oid) AND (pg_class.oid=_fk.class_id) AND (attnum=_seq)); IF (NOT pPurge) THEN -- Cache what we're going to do so we can restore if need be. -- Start by determining the primary key column for this table. _multi := false; _qry := 'SELECT pg_attribute.attname AS key FROM pg_attribute, pg_class WHERE pg_class.relnamespace = ( SELECT oid FROM pg_namespace WHERE pg_namespace.nspname = ''' || _fk.schemaname || ''') AND pg_class.oid IN ( SELECT indexrelid FROM pg_index WHERE indisprimary = true AND indrelid IN ( SELECT oid FROM pg_class WHERE lower(relname) = ''' || _fk.tablename || ''')) AND pg_attribute.attrelid = pg_class.oid AND pg_attribute.attisdropped = false ORDER BY pg_attribute.attnum;'; FOR _pk IN EXECUTE _qry LOOP IF (_multi) THEN RAISE EXCEPTION 'Reference tables with composite primary keys not supported. Try the merge and purge option.'; END IF; _pkcol := _pk.key; _multi := true; END LOOP; -- Gather and store the history _qry := 'INSERT INTO mrghist SELECT ' || pSourceCntctId || ', ''' || _fk.schemaname || '.' || _fk.tablename || ''', ''' || _pkcol || ''', ' || _pkcol || ', ''' || _col || ''' FROM ' || _fk.schemaname || '.' || _fk.tablename || ' WHERE (' || _col || '=' || pSourceCntctId || ');'; -- raise exception '%',_qry; EXECUTE _qry; END IF; -- Merge references _qry := 'UPDATE ' || _fk.schemaname || '.' || _fk.tablename || ' SET ' || _col || '=' || pTargetCntctId || ' WHERE (' || _col || '=' || pSourceCntctId || ');'; EXECUTE _qry; END LOOP; -- Merge cases with no foreign key IF (NOT pPurge) THEN INSERT INTO mrghist SELECT pSourceCntctId, 'comment', 'comment_id', comment_id, 'comment_source_id' FROM comment WHERE ((comment_source_id= pSourceCntctId) AND (comment_source='T')); INSERT INTO mrghist SELECT pSourceCntctId, 'docass', 'docass_id', docass_id, 'docass_source_id' FROM docass WHERE ((docass_source_id= pSourceCntctId) AND (docass_source_type='T')); INSERT INTO mrghist SELECT pSourceCntctId, 'docass', 'docass_id', docass_id, 'docass_target_id' FROM docass WHERE ((docass_target_id= pSourceCntctId) AND (docass_target_type='T')); INSERT INTO mrghist SELECT pSourceCntctId, 'vendinfo', 'vend_id', vend_id, 'vend_cntct1_id' FROM vendinfo WHERE (vend_cntct1_id=pSourceCntctId); INSERT INTO mrghist SELECT pSourceCntctId, 'vendinfo', 'vend_id', vend_id, 'vend_cntct2_id' FROM vendinfo WHERE (vend_cntct2_id=pSourceCntctId); IF (fetchMetricBool('EnableBatchManager') AND packageIsEnabled('xtbatch')) THEN INSERT INTO mrghist SELECT pSourceCntctId, 'xtbatch.emlassc', 'emlassc_id', emlassc_id, 'emlassc_assc_id' FROM xtbatch.emlassc WHERE ((emlassc_assc_id= pSourceCntctId) AND (emlassc_type='T')); END IF; END IF; UPDATE comment SET comment_source_id = pTargetCntctId WHERE ((comment_source = 'T') AND (comment_source_id = pSourceCntctId)); UPDATE docass SET docass_source_id = pTargetCntctId WHERE ((docass_source_type = 'T') AND (docass_source_id = pSourceCntctId)); UPDATE docass SET docass_target_id = pTargetCntctId WHERE ((docass_target_type = 'T') AND (docass_target_id = pSourceCntctId)); UPDATE vendinfo SET vend_cntct1_id = pTargetCntctId WHERE (vend_cntct1_id = pSourceCntctId); UPDATE vendinfo SET vend_cntct2_id = pTargetCntctId WHERE (vend_cntct2_id = pSourceCntctId); IF (fetchMetricBool('EnableBatchManager') AND packageIsEnabled('xtbatch')) THEN UPDATE xtbatch.emlassc SET emlassc_assc_id = pTargetCntctId WHERE ((emlassc_type = 'T') AND (emlassc_assc_id = pSourceCntctId)); END IF; IF (NOT pPurge) THEN -- Record that this has been merged if not already IF (SELECT (COUNT(cntctmrgd_cntct_id) = 0) FROM cntctmrgd WHERE (cntctmrgd_cntct_id=pSourceCntctId)) THEN INSERT INTO cntctmrgd VALUES (pSourceCntctId,false); END IF; END IF; -- Merge field detail to target SELECT * INTO _sel FROM cntctsel JOIN cntct ON (cntctsel_cntct_id=cntct_id) WHERE (cntctsel_cntct_id=pSourceCntctId); IF (FOUND) THEN IF (_sel.cntctsel_mrg_crmacct_id) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_crmacct_id', cntct_crmacct_id::text || '::integer' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_crmacct_id=_sel.cntct_crmacct_id WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_addr_id) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_addr_id', cntct_addr_id::text || '::integer' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_addr_id=_sel.cntct_addr_id WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_first_name) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_first_name', '''' || cntct_first_name || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_first_name=_sel.cntct_first_name WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_last_name) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_last_name', '''' || cntct_last_name || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_last_name=_sel.cntct_last_name WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_honorific) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_honorific', '''' || cntct_honorific || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_honorific=_sel.cntct_honorific WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_initials) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_initials', '''' || cntct_initials || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_initials=_sel.cntct_initials WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_phone) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_phone', '''' || cntct_phone || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_phone=_sel.cntct_phone WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_phone2) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_phone2', '''' || cntct_phone2 || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_phone2=_sel.cntct_phone2 WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_fax) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_fax', '''' || cntct_fax || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_fax=_sel.cntct_fax WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_email) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_email', '''' || cntct_email || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_email=_sel.cntct_email WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_webaddr) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_webaddr', '''' || cntct_webaddr || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_webaddr=_sel.cntct_webaddr WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_notes) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_notes', '''' || cntct_notes || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_notes=cntct_notes || ' ' || _sel.cntct_notes WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_title) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_title', '''' || cntct_title || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_title=_sel.cntct_title WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_middle) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_middle', '''' || cntct_middle || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_middle=_sel.cntct_middle WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_suffix) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_suffix', '''' || cntct_suffix || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_suffix=_sel.cntct_suffix WHERE (cntct_id=pTargetCntctId); END IF; IF (_sel.cntctsel_mrg_owner_username) THEN IF (NOT pPurge) THEN INSERT INTO trgthist SELECT pSourceCntctId,pTargetCntctId,'cntct_owner_username', '''' || cntct_owner_username || '''' FROM cntct WHERE (cntct_id=pTargetCntctId); END IF; UPDATE cntct SET cntct_owner_username=_sel.cntct_owner_username WHERE (cntct_id=pTargetCntctId); END IF; ELSE RAISE EXCEPTION 'Source Contact not Found'; END IF; -- Disposition source contact IF (pPurge) THEN DELETE FROM cntct WHERE cntct_id = pSourceCntctId; END IF; -- Deactivate contact UPDATE cntct SET cntct_active = false WHERE (cntct_id=pSourceCntctId); -- Clean up DELETE FROM cntctsel WHERE (cntctsel_cntct_id=pSourceCntctId); RETURN true; END; $_$; <DROP FUNCTION public.cntctmerge(integer, integer, boolean); publicadminfalse39928a12551691394cntctrestore(integer)FUNCTIONCREATE FUNCTION cntctrestore(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCntctId ALIAS FOR $1; _r RECORD; _qry TEXT; BEGIN -- Validate SELECT * INTO _r FROM cntctmrgd WHERE (cntctmrgd_cntct_id=pCntctId); IF (NOT FOUND) THEN RETURN false; END IF; -- Gather the list of affected records FOR _r IN SELECT * FROM mrghist WHERE (mrghist_cntct_id=pCntctId) LOOP -- Restore the old references _qry := 'UPDATE ' || _r.mrghist_table || ' SET ' || _r.mrghist_cntct_col || '=' || pCntctId || ' WHERE (' || _r.mrghist_pkey_col || '=' || _r.mrghist_pkey_id || ');'; EXECUTE _qry; END LOOP; -- Gather the list of affected fields FOR _r IN SELECT * FROM trgthist WHERE (trgthist_src_cntct_id=pCntctId) LOOP -- Restore the old values _qry := 'UPDATE cntct SET ' || _r.trgthist_col || '=' || _r.trgthist_value || ' WHERE (cntct_id=' || _r.trgthist_trgt_cntct_id || ');'; EXECUTE _qry; END LOOP; -- Clean up UPDATE cntct SET cntct_active=true WHERE (cntct_id=pCntctId); DELETE FROM mrghist WHERE (mrghist_cntct_id=pCntctId); DELETE FROM trgthist WHERE (trgthist_src_cntct_id=pCntctId); DELETE FROM cntctmrgd WHERE (cntctmrgd_cntct_id=pCntctId); RETURN true; END; $_$; ,DROP FUNCTION public.cntctrestore(integer); publicadminfalse8399212551691395cntctselect(integer, boolean)FUNCTIONCREATE FUNCTION cntctselect(integer, boolean) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCntctId ALIAS FOR $1; pTarget ALIAS FOR $2; BEGIN -- If target, delete any other targets IF (pTarget) THEN DELETE FROM cntctsel WHERE cntctsel_target; END IF; -- Delete any previous selection of this contact DELETE FROM cntctsel WHERE cntctsel_cntct_id=pCntctId; -- Add this contact in appropriate selection state INSERT INTO cntctsel VALUES (pCntctId,pTarget); RETURN true; END; $_$; 4DROP FUNCTION public.cntctselect(integer, boolean); publicadminfalse83992b12551691396 cntctselectcol(integer, integer)FUNCTION CREATE FUNCTION cntctselectcol(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCntctId ALIAS FOR $1; pColNumber ALIAS FOR $2; BEGIN IF (pColNumber = 2 OR pColNumber = 3) THEN UPDATE cntctsel SET cntctsel_mrg_crmacct_id=false WHERE (cntctsel_mrg_crmacct_id AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_crmacct_id=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 4) THEN UPDATE cntctsel SET cntctsel_mrg_honorific=false WHERE (cntctsel_mrg_honorific AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_honorific=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 5) THEN UPDATE cntctsel SET cntctsel_mrg_first_name=false WHERE (cntctsel_mrg_first_name AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_first_name=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 6) THEN UPDATE cntctsel SET cntctsel_mrg_middle=false WHERE (cntctsel_mrg_middle AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_middle=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 7) THEN UPDATE cntctsel SET cntctsel_mrg_last_name=false WHERE (cntctsel_mrg_last_name AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_last_name=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 8) THEN UPDATE cntctsel SET cntctsel_mrg_suffix=false WHERE (cntctsel_mrg_suffix AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_suffix=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 9) THEN UPDATE cntctsel SET cntctsel_mrg_initials=false WHERE (cntctsel_mrg_initials AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_initials=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 10) THEN UPDATE cntctsel SET cntctsel_mrg_phone=false WHERE (cntctsel_mrg_phone AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_phone=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 11) THEN UPDATE cntctsel SET cntctsel_mrg_phone2=false WHERE (cntctsel_mrg_phone2 AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_phone2=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 12) THEN UPDATE cntctsel SET cntctsel_mrg_fax=false WHERE (cntctsel_mrg_fax AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_fax=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 13) THEN UPDATE cntctsel SET cntctsel_mrg_email=false WHERE (cntctsel_mrg_email AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_email=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 14) THEN UPDATE cntctsel SET cntctsel_mrg_webaddr=false WHERE (cntctsel_mrg_webaddr AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_webaddr=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 15) THEN UPDATE cntctsel SET cntctsel_mrg_title=false WHERE (cntctsel_mrg_title AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_title=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 16) THEN UPDATE cntctsel SET cntctsel_mrg_owner_username=false WHERE (cntctsel_mrg_owner_username AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_owner_username=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber = 17) THEN UPDATE cntctsel SET cntctsel_mrg_notes=false WHERE (cntctsel_mrg_notes AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_notes=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; ELSIF (pColNumber >= 18) THEN UPDATE cntctsel SET cntctsel_mrg_addr_id=false WHERE (cntctsel_mrg_addr_id AND cntctsel_cntct_id != pCntctId); UPDATE cntctsel SET cntctsel_mrg_addr_id=true WHERE (cntctsel_cntct_id = pCntctId); RETURN true; END IF; RETURN false; END; $_$; 7DROP FUNCTION public.cntctselectcol(integer, integer); publicadminfalse83992g12551691397cntctused(integer)FUNCTION CREATE FUNCTION cntctused(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCntctId ALIAS FOR $1; _fk RECORD; _r RECORD; _seq INTEGER; _col TEXT; _qry TEXT; BEGIN -- Determine where this contact is used by analyzing foreign key linkages -- but ignore child tables and those with impermanent relationships FOR _fk IN SELECT pg_namespace.nspname AS schemaname, con.relname AS tablename, conkey AS seq, conrelid AS class_id FROM pg_constraint, pg_class f, pg_class con, pg_namespace WHERE confrelid=f.oid AND conrelid=con.oid AND f.relname = 'cntct' AND con.relnamespace=pg_namespace.oid AND con.relname NOT IN ('cntctaddr', 'cntctdata', 'cntcteml', 'cohead', 'pohead', 'quhead', 'tohead', 'cntctsel', 'cntctmrgd', 'mrghist', 'trgthist') LOOP -- Validate IF (ARRAY_UPPER(_fk.seq,1) > 1) THEN RAISE EXCEPTION 'Cannot check dependencies when the contact is one of multiple foreign key columns (%.%) [xtuple: fkeycheck, -1, %, %]', _fk.nspname, _fk.relname, _fk.nspname, _fk.relname; END IF; _seq := _fk.seq[1]; -- Get the specific column name SELECT attname INTO _col FROM pg_attribute, pg_class WHERE ((attrelid=pg_class.oid) AND (pg_class.oid=_fk.class_id) AND (attnum=_seq)); -- See if there are dependencies _qry := 'SELECT * FROM ' || _fk.schemaname || '.' || _fk.tablename || ' WHERE ('|| _col || '=' || pCntctId || ');'; FOR _r IN EXECUTE _qry LOOP RETURN true; END LOOP; END LOOP; RETURN false; END; $_$; )DROP FUNCTION public.cntctused(integer); publicadminfalse39928n12551691398coheadstatecolor(integer)FUNCTIONCREATE FUNCTION coheadstatecolor(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCoheadId ALIAS FOR $1; _shipheadid INTEGER; _result TEXT := ''; BEGIN IF (pCoheadid IS NULL) THEN RAISE EXCEPTION 'Customer Id is required.'; END IF; SELECT shiphead_id INTO _shipheadid FROM cohead JOIN shiphead ON ((shiphead_order_id=cohead_id) AND (shiphead_order_type='SO')) JOIN shipitem ON (shiphead_id=shipitem_shiphead_id) WHERE ((cohead_id=pCoheadId) AND (NOT shipitem_invoiced)) ORDER BY shiphead_id DESC LIMIT 1; IF (FOUND) THEN SELECT CASE WHEN ((shiphead_shipped) AND (COALESCE(shiphead_order_id,0) > 0) AND (SUM(noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned)) <= 0)) THEN 'altemphasis' WHEN ((COALESCE(cobmisc_cohead_id,0) > 0) AND (SUM(noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned)) > 0)) THEN 'error' WHEN (NOT shiphead_shipped) THEN 'emphasis' END INTO _result FROM cohead JOIN coitem ON (cohead_id=coitem_cohead_id) JOIN shiphead ON ((shiphead_order_id=cohead_id) AND (shiphead_order_type='SO')) JOIN shipitem ON (shiphead_id=shipitem_shiphead_id) LEFT OUTER JOIN (SELECT DISTINCT cobmisc_cohead_id FROM cobmisc) AS cobmisc ON (cobmisc_cohead_id=cohead_id) WHERE (shiphead_id=_shipheadid) GROUP BY shiphead_id,shiphead_shipped,shiphead_order_id,cobmisc_cohead_id ORDER BY shiphead_id DESC; ELSE _result := ''; END IF; RETURN _result; END; $_$; 0DROP FUNCTION public.coheadstatecolor(integer); publicadminfalse8399212551691399concataggsfunc(text, text)FUNCTIONJCREATE FUNCTION concataggsfunc(text, text) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE prevstate ALIAS FOR $1; newval ALIAS FOR $2; BEGIN RETURN prevstate || newval; END; $_$; 1DROP FUNCTION public.concataggsfunc(text, text); publicadminfalse3992812551691400consolidatelocations(integer)FUNCTIONCREATE FUNCTION consolidatelocations(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; _r RECORD; BEGIN UPDATE itemloc SET itemloc_consolflag = TRUE WHERE (itemloc_itemsite_id=pItemsiteid); FOR _r IN SELECT itemloc_location_id, SUM(itemloc_qty) AS qty FROM itemloc WHERE (itemloc_itemsite_id=pItemsiteid) GROUP BY itemloc_location_id LOOP INSERT INTO itemloc ( itemloc_itemsite_id, itemloc_location_id, itemloc_expiration, itemloc_qty, itemloc_consolflag ) VALUES ( pItemsiteid, _r.itemloc_location_id, endOfTime(), _r.qty, FALSE ); END LOOP; DELETE FROM itemloc WHERE ( (itemloc_itemsite_id=pItemsiteid) AND (itemloc_consolflag) ); RETURN 1; END; $_$; 4DROP FUNCTION public.consolidatelocations(integer); publicadminfalse83992 12551691401"convertcustomertoprospect(integer)FUNCTIONCREATE FUNCTION convertcustomertoprospect(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustId ALIAS FOR $1; _c RECORD; BEGIN SELECT * INTO _c FROM custinfo WHERE (cust_id=pCustId); INSERT INTO prospect ( prospect_id, prospect_active, prospect_number, prospect_name, prospect_cntct_id, prospect_taxzone_id, prospect_salesrep_id, prospect_warehous_id, prospect_comments ) VALUES ( _c.cust_id, _c.cust_active, _c.cust_number, _c.cust_name, _c.cust_cntct_id, _c.cust_taxzone_id, CASE WHEN(_c.cust_salesrep_id > 0) THEN _c.cust_salesrep_id ELSE NULL END, CASE WHEN(_c.cust_preferred_warehous_id > 0) THEN _c.cust_preferred_warehous_id ELSE NULL END, _c.cust_comments); DELETE FROM custinfo WHERE (cust_id=pCustId); RETURN pCustId; END; $_$; 9DROP FUNCTION public.convertcustomertoprospect(integer); publicadminfalse83992!12551691402"convertprospecttocustomer(integer)FUNCTION"CREATE FUNCTION convertprospecttocustomer(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN convertProspectToCustomer($1, FALSE); END; $_$; 9DROP FUNCTION public.convertprospecttocustomer(integer); publicadminfalse83992o12551691403+convertprospecttocustomer(integer, boolean)FUNCTION CREATE FUNCTION convertprospecttocustomer(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pProspectId ALIAS FOR $1; pdoquotes ALIAS FOR $2; _p RECORD; _q RECORD; BEGIN SELECT * INTO _p FROM prospect WHERE (prospect_id=pProspectId); IF (EXISTS(SELECT cust_id FROM custinfo WHERE cust_id=pProspectId)) THEN RAISE EXCEPTION '[xtuple: convertProspectToCustomer, -10]'; END IF; INSERT INTO custinfo ( cust_id, cust_active, cust_number, cust_name, cust_cntct_id, cust_taxzone_id, cust_comments, cust_creditstatus, cust_salesrep_id, cust_preferred_warehous_id, cust_terms_id, cust_custtype_id, cust_shipform_id, cust_shipvia, cust_balmethod, cust_ffshipto, cust_backorder, cust_partialship, cust_creditlmt, cust_creditrating, cust_commprcnt, cust_discntprcnt, cust_blanketpos, cust_shipchrg_id, cust_ffbillto, cust_usespos, cust_emaildelivery, cust_autoupdatestatus,cust_autoholdorders, cust_soemaildelivery) SELECT _p.prospect_id, _p.prospect_active, _p.prospect_number, _p.prospect_name, _p.prospect_cntct_id, _p.prospect_taxzone_id, _p.prospect_comments, 'G', COALESCE(_p.prospect_salesrep_id, salesrep_id), COALESCE(_p.prospect_warehous_id, -1), FetchMetricValue('DefaultTerms'), FetchMetricValue('DefaultCustType'), FetchMetricValue('DefaultShipFormId'), COALESCE(FetchMetricValue('DefaultShipViaId'),-1), FetchMetricText('DefaultBalanceMethod'), FetchMetricBool('DefaultFreeFormShiptos'), FetchMetricBool('DefaultBackOrders'), FetchMetricBool('DefaultPartialShipments'), FetchMetricValue('SOCreditLimit'), FetchMetricText('SOCreditRate'), salesrep_commission, 0, false, -1,false,false,false,false, false, false FROM salesrep WHERE (salesrep_id=FetchMetricValue('DefaultSalesRep')); DELETE FROM prospect WHERE (prospect_id=pprospectId); IF (pdoquotes) THEN BEGIN FOR _q IN SELECT quhead_number, convertQuote(quhead_id) AS err FROM quhead WHERE ((COALESCE(quhead_expire, endOfTime()) >= CURRENT_DATE) AND (quhead_cust_id=pProspectId)) LOOP IF (_q.err < 0) THEN RAISE NOTICE 'Quote % for % didn''t convert to a Sales Order [xtuple: convertQuote, %]', _q.quhead_number, _p.prospect_number, _q.err; END IF; END LOOP; EXCEPTION WHEN OTHERS THEN RAISE NOTICE 'Ignored errors convering quotes: % %', SQLSTATE, SQLERRM; END; END IF; RETURN pProspectId; END; $_$; BDROP FUNCTION public.convertprospecttocustomer(integer, boolean); publicadminfalse39928"12551691404convertquote(integer)FUNCTION.CREATE FUNCTION convertquote(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; _soheadid INTEGER; _soitemid INTEGER; _orderid INTEGER; _ordertype CHARACTER(1); _creditstatus TEXT; _usespos BOOLEAN := false; _blanketpos BOOLEAN := true; _showConvertedQuote BOOLEAN := false; _prospectid INTEGER; _r RECORD; _soNum TEXT; BEGIN -- Check to make sure the quote has not expired IF (SELECT COALESCE(quhead_expire, endOfTime()) < CURRENT_DATE FROM quhead WHERE(quhead_id=pQuheadid)) THEN RETURN -6; END IF; -- Check to make sure that all of the quote items have a valid itemsite SELECT quitem_id INTO _r FROM quitem LEFT OUTER JOIN itemsite ON (quitem_itemsite_id=itemsite_id) WHERE ((itemsite_id IS NULL) AND (quitem_quhead_id=pQuheadid)); IF (FOUND) THEN INSERT INTO evntlog (evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'Q', quhead_id, quhead_warehous_id, quhead_number FROM evntnot, evnttype, quhead WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=quhead_warehous_id) AND (evnttype_name='CannotConvertQuote') AND (quhead_id=pQuheadid) ); RETURN -1; END IF; SELECT cust_creditstatus, cust_usespos, cust_blanketpos INTO _creditstatus, _usespos, _blanketpos FROM quhead, custinfo WHERE ((quhead_cust_id=cust_id) AND (quhead_id=pQuheadid)); IF (NOT FOUND) THEN SELECT prospect_id INTO _prospectid FROM quhead, prospect WHERE ((quhead_cust_id=prospect_id) AND (quhead_id=pQuheadid)); IF (NOT FOUND) THEN RETURN -2; ELSE RETURN -3; END IF; ELSIF (_creditstatus = 'H' AND NOT checkPrivilege('CreateSOForHoldCustomer')) THEN RETURN -4; ELSIF (_creditstatus = 'W' AND NOT checkPrivilege('CreateSOForWarnCustomer')) THEN RETURN -5; END IF; IF ( (_usespos) AND (NOT _blanketpos) ) THEN PERFORM cohead_id FROM quhead JOIN cohead ON ( (cohead_cust_id=quhead_cust_id) AND (UPPER(cohead_custponumber)=UPPER(quhead_custponumber)) ) WHERE (quhead_id=pQuheadid); IF (FOUND) THEN RAISE EXCEPTION 'Duplicate Customer PO'; END IF; END IF; PERFORM quhead_number, cohead_id FROM quhead, cohead WHERE quhead_id = pQuheadid AND cohead_number = quhead_number; IF (FOUND) THEN SELECT fetchSoNumber() INTO _soNum; ELSE SELECT quhead_number INTO _soNum FROM quhead WHERE quhead_id = pQuheadid; END IF; SELECT NEXTVAL('cohead_cohead_id_seq') INTO _soheadid; INSERT INTO cohead ( cohead_id, cohead_number, cohead_cust_id, cohead_orderdate, cohead_packdate, cohead_custponumber, cohead_warehous_id, cohead_billtoname, cohead_billtoaddress1, cohead_billtoaddress2, cohead_billtoaddress3, cohead_billtocity, cohead_billtostate, cohead_billtozipcode, cohead_billtocountry, cohead_shipto_id, cohead_shiptoname, cohead_shiptoaddress1, cohead_shiptoaddress2, cohead_shiptoaddress3, cohead_shiptocity, cohead_shiptostate, cohead_shiptozipcode, cohead_shiptocountry, cohead_salesrep_id, cohead_commission, cohead_terms_id, cohead_shipchrg_id, cohead_shipform_id, cohead_fob, cohead_shipvia, cohead_ordercomments, cohead_shipcomments, cohead_freight, cohead_misc, cohead_misc_accnt_id, cohead_misc_descrip, cohead_holdtype, cohead_wasquote, cohead_quote_number, cohead_prj_id, cohead_curr_id, cohead_taxzone_id, cohead_taxtype_id, cohead_shipto_cntct_id, cohead_shipto_cntct_honorific, cohead_shipto_cntct_first_name, cohead_shipto_cntct_middle, cohead_shipto_cntct_last_name, cohead_shipto_cntct_suffix, cohead_shipto_cntct_phone, cohead_shipto_cntct_title, cohead_shipto_cntct_fax, cohead_shipto_cntct_email, cohead_billto_cntct_id, cohead_billto_cntct_honorific, cohead_billto_cntct_first_name, cohead_billto_cntct_middle, cohead_billto_cntct_last_name, cohead_billto_cntct_suffix, cohead_billto_cntct_phone, cohead_billto_cntct_title, cohead_billto_cntct_fax, cohead_billto_cntct_email, cohead_ophead_id, cohead_calcfreight, cohead_saletype_id, cohead_shipzone_id ) SELECT _soheadid, _soNum, quhead_cust_id, CURRENT_DATE, quhead_packdate, quhead_custponumber, quhead_warehous_id, quhead_billtoname, quhead_billtoaddress1, quhead_billtoaddress2, quhead_billtoaddress3, quhead_billtocity, quhead_billtostate, quhead_billtozip, quhead_billtocountry, quhead_shipto_id, quhead_shiptoname, quhead_shiptoaddress1, quhead_shiptoaddress2, quhead_shiptoaddress3, quhead_shiptocity, quhead_shiptostate, quhead_shiptozipcode, quhead_shiptocountry, quhead_salesrep_id, quhead_commission, quhead_terms_id, cust_shipchrg_id, cust_shipform_id, quhead_fob, quhead_shipvia, quhead_ordercomments, quhead_shipcomments, quhead_freight, quhead_misc, quhead_misc_accnt_id, quhead_misc_descrip, 'N', TRUE, quhead_number, quhead_prj_id, quhead_curr_id, quhead_taxzone_id, quhead_taxtype_id, quhead_shipto_cntct_id, quhead_shipto_cntct_honorific, quhead_shipto_cntct_first_name, quhead_shipto_cntct_middle, quhead_shipto_cntct_last_name, quhead_shipto_cntct_suffix, quhead_shipto_cntct_phone, quhead_shipto_cntct_title, quhead_shipto_cntct_fax, quhead_shipto_cntct_email, quhead_billto_cntct_id, quhead_billto_cntct_honorific, quhead_billto_cntct_first_name, quhead_billto_cntct_middle, quhead_billto_cntct_last_name, quhead_billto_cntct_suffix, quhead_billto_cntct_phone, quhead_billto_cntct_title, quhead_billto_cntct_fax, quhead_billto_cntct_email, quhead_ophead_id, quhead_calcfreight, quhead_saletype_id, quhead_shipzone_id FROM quhead JOIN custinfo ON (cust_id=quhead_cust_id) WHERE (quhead_id=pQuheadid); UPDATE url SET url_source_id = _soheadid, url_source = 'S' WHERE ((url_source='Q') AND (url_source_id = pQuheadid)); UPDATE imageass SET imageass_source_id = _soheadid, imageass_source = 'S' WHERE ((imageass_source='Q') AND (imageass_source_id = pQuheadid)); UPDATE docass SET docass_source_id = _soheadid, docass_source_type = 'S' WHERE ((docass_source_type='Q') AND (docass_source_id = pQuheadid)); -- Copy Comments INSERT INTO comment ( comment_cmnttype_id, comment_source, comment_source_id, comment_date, comment_user, comment_text, comment_public ) SELECT comment_cmnttype_id, 'S', _soheadid, comment_date, comment_user, ('Quote-' || comment_text), comment_public FROM comment WHERE ( (comment_source='Q') AND (comment_source_id=pQuheadid) ); FOR _r IN SELECT quitem.*, quhead_number, quhead_prj_id, itemsite_item_id, itemsite_leadtime, itemsite_createsopo, itemsite_createsopr, item_type, COALESCE(quitem_itemsrc_id, itemsrc_id, -1) AS itemsrcid FROM quhead JOIN quitem ON (quitem_quhead_id=quhead_id) JOIN itemsite ON (itemsite_id=quitem_itemsite_id) JOIN item ON (item_id=itemsite_item_id) LEFT OUTER JOIN itemsrc ON ( (itemsrc_item_id=item_id) AND (itemsrc_default) ) WHERE (quhead_id=pQuheadid) ORDER BY quitem_linenumber LOOP SELECT NEXTVAL('coitem_coitem_id_seq') INTO _soitemid; INSERT INTO coitem ( coitem_id, coitem_cohead_id, coitem_linenumber, coitem_itemsite_id, coitem_status, coitem_scheddate, coitem_promdate, coitem_price, coitem_custprice, coitem_qtyord, coitem_qtyshipped, coitem_qtyreturned, coitem_qty_uom_id, coitem_qty_invuomratio, coitem_price_uom_id, coitem_price_invuomratio, coitem_unitcost, coitem_prcost, coitem_custpn, coitem_memo, coitem_taxtype_id, coitem_order_id ) VALUES ( _soitemid, _soheadid, _r.quitem_linenumber, _r.quitem_itemsite_id, 'O', _r.quitem_scheddate, _r.quitem_promdate, _r.quitem_price, _r.quitem_custprice, _r.quitem_qtyord, 0, 0, _r.quitem_qty_uom_id, _r.quitem_qty_invuomratio, _r.quitem_price_uom_id, _r.quitem_price_invuomratio, stdcost(_r.itemsite_item_id), _r.quitem_prcost, _r.quitem_custpn, _r.quitem_memo, _r.quitem_taxtype_id, -1 ); IF (fetchMetricBool('enablextcommissionission')) THEN PERFORM xtcommission.getSalesReps(quhead_cust_id, quhead_shipto_id, _r.itemsite_item_id, _r.quitem_price, _soitemid, 'SalesItem') FROM quhead WHERE (quhead_id=pQuheadid); END IF; INSERT INTO charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default, charass_price) SELECT 'SI', _soitemid, charass_char_id, charass_value, charass_default, charass_price FROM charass WHERE ((charass_target_type='QI') AND (charass_target_id=_r.quitem_id)); -- Copy Comments INSERT INTO comment ( comment_cmnttype_id, comment_source, comment_source_id, comment_date, comment_user, comment_text ) SELECT comment_cmnttype_id, 'SI', _soitemid, comment_date, comment_user, ('Quote-' || comment_text) FROM comment WHERE ( (comment_source='QI') AND (comment_source_id=_r.quitem_id) ); _orderid := -1; _ordertype := ''; IF (_r.quitem_createorder) THEN IF (_r.item_type IN ('M')) THEN SELECT createWo( CAST(_r.quhead_number AS INTEGER), supply.itemsite_id, 1, (_r.quitem_qtyord * _r.quitem_qty_invuomratio), _r.itemsite_leadtime, _r.quitem_scheddate, _r.quitem_memo, 'S', _soitemid, _r.quhead_prj_id ) INTO _orderId FROM itemsite sold, itemsite supply WHERE ((sold.itemsite_item_id=supply.itemsite_item_id) AND (supply.itemsite_warehous_id=_r.quitem_order_warehous_id) AND (sold.itemsite_id=_r.quitem_itemsite_id) ); _orderType := 'W'; INSERT INTO charass (charass_target_type, charass_target_id, charass_char_id, charass_value) SELECT 'W', _orderId, charass_char_id, charass_value FROM charass WHERE ((charass_target_type='QI') AND (charass_target_id=_r.quitem_id)); ELSIF ( (_r.item_type IN ('P', 'O')) AND (_r.itemsite_createsopr) ) THEN SELECT createPr( CAST(_r.quhead_number AS INTEGER), _r.quitem_itemsite_id, (_r.quitem_qtyord * _r.quitem_qty_invuomratio), _r.quitem_scheddate, '', 'S', _soitemid ) INTO _orderId; _orderType := 'R'; UPDATE pr SET pr_prj_id=_r.quhead_prj_id WHERE pr_id=_orderId; ELSIF ( (_r.item_type IN ('P', 'O')) AND (_r.itemsite_createsopo) ) THEN IF (_r.quitem_prcost=0) THEN SELECT createPurchaseToSale(_soitemid, _r.itemsrcid, _r.quitem_dropship) INTO _orderId; ELSE SELECT createPurchaseToSale(_soitemid, _r.itemsrcid, _r.quitem_dropship, _r.quitem_prcost) INTO _orderId; END IF; _orderType := 'P'; END IF; UPDATE coitem SET coitem_order_type=_ordertype, coitem_order_id=_orderid WHERE (coitem_id=_soitemid); END IF; END LOOP; SELECT metric_value INTO _showConvertedQuote FROM metric WHERE metric_name = 'ShowQuotesAfterSO'; IF (_showConvertedQuote) THEN UPDATE quhead SET quhead_status= 'C' WHERE (quhead_id = pQuheadid); ELSE PERFORM deleteQuote(pQuheadid); END IF; RETURN _soheadid; END; $_$; ,DROP FUNCTION public.convertquote(integer); publicadminfalse83992p12551691406convertquotetoinvoice(integer)FUNCTION3CREATE FUNCTION convertquotetoinvoice(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; _iheadid INTEGER; _iitemid INTEGER; _orderid INTEGER; _ordertype CHARACTER(1); _creditstatus TEXT; _usespos BOOLEAN := false; _blanketpos BOOLEAN := true; _showConvertedQuote BOOLEAN := false; _prospectid INTEGER; _r RECORD; _inNum TEXT; BEGIN -- Check to make sure the quote has not expired IF (SELECT COALESCE(quhead_expire, endOfTime()) < CURRENT_DATE FROM quhead WHERE(quhead_id=pQuheadid)) THEN RETURN -6; END IF; -- Check to make sure that all of the quote items have a valid itemsite SELECT quitem_id INTO _r FROM quitem LEFT OUTER JOIN itemsite ON (quitem_itemsite_id=itemsite_id) WHERE ((itemsite_id IS NULL) AND (quitem_quhead_id=pQuheadid)); IF (FOUND) THEN INSERT INTO evntlog (evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'Q', quhead_id, quhead_warehous_id, quhead_number FROM evntnot, evnttype, quhead WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=quhead_warehous_id) AND (evnttype_name='CannotConvertQuote') AND (quhead_id=pQuheadid) ); RETURN -1; END IF; -- Get Credit Stat, Uses POs and Blanket POs SELECT cust_creditstatus, cust_usespos, cust_blanketpos INTO _creditstatus, _usespos, _blanketpos FROM quhead, custinfo WHERE ((quhead_cust_id=cust_id) AND (quhead_id=pQuheadid)); -- Check to see if customer or prospect IF (NOT FOUND) THEN SELECT prospect_id INTO _prospectid FROM quhead, prospect WHERE ((quhead_cust_id=prospect_id) AND (quhead_id=pQuheadid)); IF (NOT FOUND) THEN RETURN -2; ELSE RETURN -3; END IF; ELSIF (_creditstatus = 'H' AND NOT hasPriv('CreateSOForHoldCustomer')) THEN RETURN -4; ELSIF (_creditstatus = 'W' AND NOT hasPriv('CreateSOForWarnCustomer')) THEN RETURN -5; END IF; -- PO/blanket PO checks IF ( (_usespos) AND (NOT _blanketpos) ) THEN PERFORM invchead_id FROM quhead JOIN invchead ON ( (invchead_cust_id=quhead_cust_id) AND (UPPER(invchead_custponumber)=UPPER(quhead_custponumber)) ) WHERE (quhead_id=pQuheadid); IF (FOUND) THEN RAISE EXCEPTION 'Duplicate Customer PO'; END IF; END IF; --Check to see if an invoice exists with the quote number PERFORM quhead_number, invchead_id FROM quhead, invchead WHERE quhead_id = pQuheadid AND invchead_invcnumber = quhead_number; -- If it does then get a new Invoice number otherwise use the quote number as the invoice number IF (FOUND) THEN SELECT fetchinvcnumber() INTO _inNum; ELSE SELECT quhead_number INTO _inNum FROM quhead WHERE quhead_id = pQuheadid; END IF; --Insert quote info into invoice tables SELECT NEXTVAL('invchead_invchead_id_seq') INTO _iheadid; INSERT INTO invchead ( invchead_ordernumber, invchead_shipdate, invchead_recurring, invchead_id, invchead_invcnumber, invchead_cust_id, invchead_orderdate, invchead_ponumber, invchead_billto_name, invchead_billto_address1, invchead_billto_address2, invchead_billto_address3, invchead_billto_city, invchead_billto_state, invchead_billto_zipcode, invchead_billto_country, invchead_shipto_id, invchead_shipto_name, invchead_shipto_address1, invchead_shipto_address2, invchead_shipto_address3, invchead_shipto_city, invchead_shipto_state, invchead_shipto_zipcode, invchead_shipto_country, invchead_salesrep_id, invchead_commission, invchead_terms_id, invchead_shipchrg_id, invchead_fob, invchead_shipvia, invchead_notes, invchead_freight, invchead_misc_amount, invchead_misc_accnt_id, invchead_misc_descrip, invchead_prj_id, invchead_curr_id, invchead_taxzone_id, invchead_posted, invchead_printed, invchead_invcdate, invchead_saletype_id, invchead_shipzone_id --invchead_taxtype_id, --invchead_shipto_cntct_id, invchead_shipto_cntct_honorific, invchead_shipto_cntct_first_name, --invchead_shipto_cntct_middle, invchead_shipto_cntct_last_name, invchead_shipto_cntct_suffix, --invchead_shipto_cntct_phone, invchead_shipto_cntct_title, invchead_shipto_cntct_fax, --invchead_shipto_cntct_email, --invchead_billto_cntct_id, invchead_billto_cntct_honorific, --invchead_billto_cntct_first_name, invchead_billto_cntct_middle, invchead_billto_cntct_last_name, --invchead_billto_cntct_suffix, invchead_billto_cntct_phone, invchead_billto_cntct_title, --invchead_billto_cntct_fax, invchead_billto_cntct_email, --invchead_ophead_id, --invchead_calcfreight ) SELECT quhead_number, quhead_packdate, 'f', _iheadid, _inNum, quhead_cust_id, CURRENT_DATE, quhead_custponumber, quhead_billtoname, quhead_billtoaddress1, quhead_billtoaddress2, quhead_billtoaddress3, quhead_billtocity, quhead_billtostate, quhead_billtozip, quhead_billtocountry, quhead_shipto_id, quhead_shiptoname, quhead_shiptoaddress1, quhead_shiptoaddress2, quhead_shiptoaddress3, quhead_shiptocity, quhead_shiptostate, quhead_shiptozipcode, quhead_shiptocountry, quhead_salesrep_id, quhead_commission, quhead_terms_id, cust_shipchrg_id, quhead_fob, quhead_shipvia, quhead_ordercomments, quhead_freight, quhead_misc, quhead_misc_accnt_id, quhead_misc_descrip, quhead_prj_id, quhead_curr_id, quhead_taxzone_id, 'f','f',current_date, quhead_saletype_id, quhead_shipzone_id --quhead_shipto_cntct_id, quhead_shipto_cntct_honorific, --quhead_shipto_cntct_first_name, quhead_shipto_cntct_middle, quhead_shipto_cntct_last_name, --quhead_shipto_cntct_suffix, quhead_shipto_cntct_phone, quhead_shipto_cntct_title, --quhead_shipto_cntct_fax, quhead_shipto_cntct_email, quhead_billto_cntct_id, --quhead_billto_cntct_honorific, quhead_billto_cntct_first_name, quhead_billto_cntct_middle, --quhead_billto_cntct_last_name, quhead_billto_cntct_suffix, quhead_billto_cntct_phone, --quhead_billto_cntct_title, quhead_billto_cntct_fax, quhead_billto_cntct_email, quhead_ophead_id, --quhead_calcfreight FROM quhead JOIN custinfo ON (cust_id=quhead_cust_id) WHERE (quhead_id=pQuheadid); -- Attachments on Invoice not supported but leaving this in for future use: /* UPDATE url SET url_source_id = _iheadid, url_source = 'I' WHERE ((url_source='Q') AND (url_source_id = pQuheadid)); UPDATE imageass SET imageass_source_id = _iheadid, imageass_source = 'I' WHERE ((imageass_source='Q') AND (imageass_source_id = pQuheadid)); UPDATE docass SET docass_source_id = _iheadid, docass_source_type = 'I' WHERE ((docass_source_type='Q') AND (docass_source_id = pQuheadid)); */ -- Comments not supported on Invoice but leaving this in for future use: /* INSERT INTO comment ( comment_cmnttype_id, comment_source, comment_source_id, comment_date, comment_user, comment_text, comment_public ) SELECT comment_cmnttype_id, 'I', _iheadid, comment_date, comment_user, ('Quote-' || comment_text), comment_public FROM comment WHERE ( (comment_source='Q') AND (comment_source_id=pQuheadid) ); */ FOR _r IN SELECT quitem.*, quhead_number, quhead_prj_id, itemsite_item_id, itemsite_leadtime, itemsite_createsopo, itemsite_createsopr, item_type, COALESCE(quitem_itemsrc_id, itemsrc_id, -1) AS itemsrcid FROM quhead JOIN quitem ON (quitem_quhead_id=quhead_id) JOIN itemsite ON (itemsite_id=quitem_itemsite_id) JOIN item ON (item_id=itemsite_item_id) LEFT OUTER JOIN itemsrc ON ( (itemsrc_item_id=item_id) AND (itemsrc_default) ) WHERE (quhead_id=pQuheadid) LOOP SELECT NEXTVAL('invcitem_invcitem_id_seq') INTO _iitemid; INSERT INTO invcitem ( invcitem_id, invcitem_invchead_id, invcitem_linenumber, invcitem_item_id, invcitem_warehous_id, --invcitem_status, --invcitem_scheddate, invcitem_promdate, invcitem_price, invcitem_custprice, invcitem_ordered, invcitem_billed, invcitem_qty_uom_id, invcitem_qty_invuomratio, invcitem_price_uom_id, invcitem_price_invuomratio, invcitem_custpn, invcitem_notes, invcitem_taxtype_id ) VALUES ( _iitemid, _iheadid, _r.quitem_linenumber, (SELECT itemsite_item_id FROM itemsite WHERE itemsite_id = _r.quitem_itemsite_id), (SELECT itemsite_warehous_id FROM itemsite WHERE itemsite_id = _r.quitem_itemsite_id), --'O', --_r.quitem_scheddate, _r.quitem_promdate, _r.quitem_price, _r.quitem_custprice, _r.quitem_qtyord, _r.quitem_qtyord, _r.quitem_qty_uom_id, _r.quitem_qty_invuomratio, _r.quitem_price_uom_id, _r.quitem_price_invuomratio, _r.quitem_custpn, _r.quitem_memo, _r.quitem_taxtype_id ); IF (fetchMetricBool('enablextcommissionission')) THEN PERFORM xtcommission.getSalesReps(quhead_cust_id, quhead_shipto_id, _r.itemsite_item_id, _r.quitem_price, _iitemid, 'InvoiceItem') FROM quhead WHERE (quhead_id=pQuheadid); END IF; -- Chracteristics not supported on Invoice but leaving in for future use: /* INSERT INTO charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default, charass_price) SELECT 'SI', _iitemid, charass_char_id, charass_value, charass_default, charass_price FROM charass WHERE ((charass_target_type='QI') AND (charass_target_id=_r.quitem_id)); */ -- Comments not supported but leaving in for future use /* INSERT INTO comment ( comment_cmnttype_id, comment_source, comment_source_id, comment_date, comment_user, comment_text ) SELECT comment_cmnttype_id, 'SI', _iitemid, comment_date, comment_user, ('Quote-' || comment_text) FROM comment WHERE ( (comment_source='QI') AND (comment_source_id=_r.quitem_id) ); */ _orderid := -1; _ordertype := ''; IF (_r.quitem_createorder) THEN IF (_r.item_type IN ('M')) THEN SELECT createWo( CAST(_r.quhead_number AS INTEGER), supply.itemsite_id, 1, (_r.quitem_qtyord * _r.quitem_qty_invuomratio), _r.itemsite_leadtime, _r.quitem_scheddate, _r.quitem_memo, 'Q', _iitemid, _r.quhead_prj_id ) INTO _orderId FROM itemsite sold, itemsite supply WHERE ((sold.itemsite_item_id=supply.itemsite_item_id) AND (supply.itemsite_warehous_id=_r.quitem_order_warehous_id) AND (sold.itemsite_id=_r.quitem_itemsite_id) ); _orderType := 'W'; INSERT INTO charass (charass_target_type, charass_target_id, charass_char_id, charass_value) SELECT 'W', _orderId, charass_char_id, charass_value FROM charass WHERE ((charass_target_type='QI') AND (charass_target_id=_r.quitem_id)); ELSIF ( (_r.item_type IN ('P', 'O')) AND (_r.itemsite_createsopr) ) THEN SELECT createPr( CAST(_r.quhead_number AS INTEGER), _r.quitem_itemsite_id, (_r.quitem_qtyord * _r.quitem_qty_invuomratio), _r.quitem_scheddate, '', 'S', _iitemid ) INTO _orderId; _orderType := 'R'; UPDATE pr SET pr_prj_id=_r.quhead_prj_id WHERE pr_id=_orderId; ELSIF ( (_r.item_type IN ('P', 'O')) AND (_r.itemsite_createsopo) ) THEN IF (_r.quitem_prcost=0) THEN -- For now quote to invoice/dropship will not be supported but with the creation of a createPurchaseToQuote() version of createPurchaseToSale() -- it can be -- SELECT createPurchaseToSale(_iitemid, _r.itemsrcid, _r.quitem_dropship) INTO _orderId; RAISE EXCEPTION 'Quote contains one or more dropship items that may not be converted from a Quote to an Invoice'; ELSE -- For now quote to invoice/dropship will not be supported but with the creation of a createPurchaseToQuote() version of createPurchaseToSale() -- it can be -- SELECT createPurchaseToSale(_iitemid, _r.itemsrcid, _r.quitem_dropship, _r.quitem_prcost) INTO _orderId; RAISE EXCEPTION 'Quote contains one or more dropship items that may not be converted from a Quote to an Invoice'; END IF; _orderType := 'P'; END IF; -- UPDATE invcitem SET invcitem_order_type=_ordertype, invcitem_order_id=_orderid -- WHERE (invcitem_id=_iitemid); END IF; END LOOP; SELECT metric_value INTO _showConvertedQuote FROM metric WHERE metric_name = 'ShowQuotesAfterSO'; IF (_showConvertedQuote) THEN UPDATE quhead SET quhead_status= 'C' WHERE (quhead_id = pQuheadid); ELSE PERFORM deleteQuote(pQuheadid); END IF; RETURN _iheadid; END; $_$; 5DROP FUNCTION public.convertquotetoinvoice(integer); publicadminfalse3992812551691408copybom(integer, integer)FUNCTIONfCREATE FUNCTION copybom(psitemid integer, ptitemid integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _result INTEGER; BEGIN SELECT copyBOM (pSItemid, PTItemid, FALSE) into _result; RETURN _result; END; $$; BDROP FUNCTION public.copybom(psitemid integer, ptitemid integer); publicadminfalse83992r12551691409"copybom(integer, integer, boolean)FUNCTIONCREATE FUNCTION copybom(psitemid integer, ptitemid integer, pcopyusedat boolean) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _bh RECORD; _bi RECORD; _bomheadid INTEGER; _bomitemid INTEGER; _bomworksetid INTEGER; _temp INTEGER; _schedatwooper BOOLEAN; _booitemseqid INTEGER; BEGIN -- Cache source bomhead SELECT * INTO _bh FROM bomhead WHERE ((bomhead_item_id=pSItemid) AND (bomhead_rev_id=getActiveRevID('BOM', pSItemid))); IF (NOT FOUND) THEN RETURN -1; END IF; -- Make sure that source bomitems exist SELECT bomitem_id INTO _bomitemid FROM bomitem WHERE ((bomitem_parent_item_id=_bh.bomhead_item_id) AND (bomitem_rev_id=_bh.bomhead_rev_id)) LIMIT 1; IF (NOT FOUND) THEN RETURN -2; END IF; -- Make sure that target bomitems do not exist SELECT bomitem_id INTO _bomitemid FROM bomitem WHERE ((bomitem_parent_item_id=pTItemid) AND (bomitem_rev_id= -1)) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; -- Make sure that the parent is not used in the component at some level IF ( SELECT (item_type IN ('M', 'F')) FROM item WHERE (item_id=pSItemid) ) THEN SELECT indentedWhereUsed(pTItemid) INTO _bomworksetid; SELECT bomwork_id INTO _temp FROM bomwork WHERE ( (bomwork_set_id=_bomworksetid) AND (bomwork_item_id=pSItemid) ) LIMIT 1; IF (FOUND) THEN PERFORM deleteBOMWorkset(_bomworksetid); RETURN -4; END IF; PERFORM deleteBOMWorkset(_bomworksetid); END IF; -- Check for existing target bomhead SELECT bomhead_id INTO _bomheadid FROM bomhead WHERE ((bomhead_item_id=pTItemid) AND (bomhead_rev_id= -1)); IF (NOT FOUND) THEN INSERT INTO bomhead ( bomhead_item_id, bomhead_serial, bomhead_docnum, bomhead_batchsize, bomhead_requiredqtyper ) VALUES ( pTItemid, _bh.bomhead_serial, _bh.bomhead_docnum, _bh.bomhead_batchsize, _bh.bomhead_requiredqtyper ); END IF; FOR _bi IN SELECT bomitem.* FROM bomitem(pSItemid) WHERE (bomitem_expires>CURRENT_DATE) LOOP SELECT NEXTVAL('bomitem_bomitem_id_seq') INTO _bomitemid; IF (pCopyUsedAt) THEN _schedatwooper := _bi.bomitem_schedatwooper; _booitemseqid := _bi.bomitem_booitem_seq_id; ELSE _schedatwooper := FALSE; _booitemseqid := -1; END IF; INSERT INTO bomitem ( bomitem_id, bomitem_parent_item_id, bomitem_seqnumber, bomitem_item_id, bomitem_uom_id, bomitem_qtyfxd, bomitem_qtyper, bomitem_scrap, bomitem_schedatwooper, bomitem_booitem_seq_id, bomitem_effective, bomitem_expires, bomitem_ecn, bomitem_createwo, bomitem_issuemethod, bomitem_moddate, bomitem_subtype, bomitem_notes, bomitem_ref ) VALUES ( _bomitemid, pTItemid, _bi.bomitem_seqnumber, _bi.bomitem_item_id, _bi.bomitem_uom_id, _bi.bomitem_qtyfxd, _bi.bomitem_qtyper, _bi.bomitem_scrap, _schedatwooper, _booitemseqid, CURRENT_DATE, _bi.bomitem_expires, _bi.bomitem_ecn, _bi.bomitem_createwo, _bi.bomitem_issuemethod, CURRENT_DATE, _bi.bomitem_subtype, _bi.bomitem_notes, _bi.bomitem_ref ); INSERT INTO bomitemsub ( bomitemsub_bomitem_id, bomitemsub_item_id, bomitemsub_uomratio, bomitemsub_rank ) SELECT _bomitemid, bomitemsub_item_id, bomitemsub_uomratio, bomitemsub_rank FROM bomitemsub WHERE (bomitemsub_bomitem_id=_bi.bomitem_id); END LOOP; RETURN pTItemid; END; $$; WDROP FUNCTION public.copybom(psitemid integer, ptitemid integer, pcopyusedat boolean); publicadminfalse83992s12551691410(copybudget(integer, text, text, integer)FUNCTIONyCREATE FUNCTION copybudget(integer, text, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBudgheadid ALIAS FOR $1; pName ALIAS FOR $2; pDescrip ALIAS FOR $3; pInterval ALIAS FOR $4; _budgheadid INTEGER; _periodid INTEGER; _result INTEGER; BEGIN SELECT 1 INTO _result FROM budgitem WHERE ((budgitem_budghead_id=pBudgheadid) AND (nextPeriodByInterval(budgitem_period_id, pInterval)=-1)) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; SELECT nextval('budghead_budghead_id_seq') INTO _budgheadid; INSERT INTO budghead (budghead_id, budghead_name, budghead_descrip) VALUES(_budgheadid, pName, pDescrip); INSERT INTO budgitem (budgitem_budghead_id, budgitem_period_id, budgitem_accnt_id, budgitem_amount) SELECT _budgheadid, nextPeriodByInterval(budgitem_period_id, pInterval), budgitem_accnt_id, budgitem_amount FROM budgitem WHERE (budgitem_budghead_id=pBudgheadid); RETURN _budgheadid; END; $_$; ?DROP FUNCTION public.copybudget(integer, text, text, integer); publicadminfalse8399212551691411copycmd(integer, text, text)FUNCTIONCREATE FUNCTION copycmd(integer, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmdId ALIAS FOR $1; pModule ALIAS FOR $2; pTitle ALIAS FOR $3; _cmdId INTEGER; BEGIN SELECT nextval('cmd_cmd_id_seq') INTO _cmdId; INSERT INTO cmd SELECT _cmdId, pModule, pTitle, cmd_descrip, cmd_privname, cmd_executable FROM cmd WHERE (cmd_id=pCmdId); INSERT INTO cmdarg (cmdarg_cmd_id, cmdarg_order, cmdarg_arg) SELECT _cmdId, cmdarg_order, cmdarg_arg FROM cmdarg WHERE (cmdarg_cmd_id=pCmdId); RETURN 1; END; $_$; 3DROP FUNCTION public.copycmd(integer, text, text); publicadminfalse83992t12551746719'copycontract(integer, text, date, date)FUNCTION CREATE FUNCTION copycontract(pcontrctid integer, pnumber text, peffective date, pexpires date) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _contrctid INTEGER; _itemsrcid INTEGER; _r RECORD; BEGIN INSERT INTO contrct ( contrct_number, contrct_vend_id, contrct_descrip, contrct_effective, contrct_expires, contrct_note ) SELECT pNumber, contrct_vend_id, contrct_descrip, pEffective, pExpires, contrct_note FROM contrct WHERE (contrct_id=pContrctid) RETURNING contrct_id INTO _contrctid; FOR _r IN SELECT * FROM itemsrc WHERE (itemsrc_contrct_id=pContrctid) LOOP INSERT INTO itemsrc ( itemsrc_item_id, itemsrc_vend_id, itemsrc_vend_item_number, itemsrc_vend_item_descrip, itemsrc_comments, itemsrc_vend_uom, itemsrc_invvendoruomratio, itemsrc_minordqty, itemsrc_multordqty, itemsrc_leadtime, itemsrc_ranking, itemsrc_active, itemsrc_manuf_name, itemsrc_manuf_item_number, itemsrc_manuf_item_descrip, itemsrc_default, itemsrc_upccode, itemsrc_effective, itemsrc_expires, itemsrc_contrct_id ) VALUES ( _r.itemsrc_item_id, _r.itemsrc_vend_id, _r.itemsrc_vend_item_number, _r.itemsrc_vend_item_descrip, _r.itemsrc_comments, _r.itemsrc_vend_uom, _r.itemsrc_invvendoruomratio, _r.itemsrc_minordqty, _r.itemsrc_multordqty, _r.itemsrc_leadtime, _r.itemsrc_ranking, _r.itemsrc_active, _r.itemsrc_manuf_name, _r.itemsrc_manuf_item_number, _r.itemsrc_manuf_item_descrip, _r.itemsrc_default, _r.itemsrc_upccode, pEffective, pExpires, _contrctid ) RETURNING itemsrc_id INTO _itemsrcid; INSERT INTO itemsrcp ( itemsrcp_itemsrc_id, itemsrcp_qtybreak, itemsrcp_price, itemsrcp_updated, itemsrcp_curr_id, itemsrcp_dropship, itemsrcp_warehous_id, itemsrcp_type, itemsrcp_discntprcnt, itemsrcp_fixedamtdiscount ) SELECT _itemsrcid, itemsrcp_qtybreak, itemsrcp_price, CURRENT_DATE, itemsrcp_curr_id, itemsrcp_dropship, itemsrcp_warehous_id, itemsrcp_type, itemsrcp_discntprcnt, itemsrcp_fixedamtdiscount FROM itemsrcp WHERE (itemsrcp_itemsrc_id=_r.itemsrc_id); END LOOP; RETURN _contrctid; END; $$; eDROP FUNCTION public.copycontract(pcontrctid integer, pnumber text, peffective date, pexpires date); publicadminfalse83992x12551691412-copyfinancialgroup(integer, integer, integer)FUNCTIONCREATE FUNCTION copyfinancialgroup(integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSourceGroup ALIAS FOR $1; pFlheadid ALIAS FOR $2; pParentFlgrpid ALIAS FOR $3; _flgrpid INTEGER; BEGIN SELECT nextval('flgrp_flgrp_id_seq') INTO _flgrpid; -- Copy the group item INSERT INTO flgrp (flgrp_id, flgrp_flhead_id, flgrp_flgrp_id, flgrp_order, flgrp_name, flgrp_descrip, flgrp_subtotal, flgrp_summarize, flgrp_subtract, flgrp_showstart, flgrp_showend, flgrp_showdelta, flgrp_showbudget, flgrp_showdiff, flgrp_showcustom, flgrp_showstartprcnt, flgrp_showendprcnt, flgrp_showdeltaprcnt, flgrp_showbudgetprcnt, flgrp_showdiffprcnt, flgrp_showcustomprcnt, flgrp_usealtsubtotal, flgrp_altsubtotal,flgrp_prcnt_flgrp_id) SELECT _flgrpid, pFlheadid, pParentFlgrpid, flgrp_order, flgrp_name, flgrp_descrip, flgrp_subtotal, flgrp_summarize, flgrp_subtract, flgrp_showstart, flgrp_showend, flgrp_showdelta, flgrp_showbudget, flgrp_showdiff, flgrp_showcustom, flgrp_showstartprcnt, flgrp_showendprcnt, flgrp_showdeltaprcnt, flgrp_showbudgetprcnt, flgrp_showdiffprcnt, flgrp_showcustomprcnt, flgrp_usealtsubtotal, flgrp_altsubtotal,flgrp_prcnt_flgrp_id FROM flgrp WHERE (flgrp_id=pSourceGroup); -- Store temporary cross ref info EXECUTE ' INSERT INTO tmp_flgrpxref' || getEffectiveXtUser() || ' (flgrpxref_oldid,flgrpxref_newid) VALUES (' || pSourceGroup || ',' || _flgrpid || ');'; -- Copy any children flitems INSERT INTO flitem (flitem_flhead_id, flitem_flgrp_id, flitem_order, flitem_accnt_id, flitem_showstart, flitem_showend, flitem_showdelta, flitem_showbudget, flitem_showdiff, flitem_showcustom, flitem_subtract, flitem_showstartprcnt, flitem_showendprcnt, flitem_showdeltaprcnt, flitem_showbudgetprcnt, flitem_showdiffprcnt, flitem_showcustomprcnt, flitem_custom_source, flitem_company, flitem_profit, flitem_number, flitem_sub, flitem_type, flitem_subaccnttype_code, flitem_prcnt_flgrp_id) SELECT pFlheadid, _flgrpid, flitem_order, flitem_accnt_id, flitem_showstart, flitem_showend, flitem_showdelta, flitem_showbudget, flitem_showdiff, flitem_showcustom, flitem_subtract, flitem_showstartprcnt, flitem_showendprcnt, flitem_showdeltaprcnt, flitem_showbudgetprcnt, flitem_showdiffprcnt, flitem_showcustomprcnt, flitem_custom_source, flitem_company, flitem_profit, flitem_number, flitem_sub, flitem_type, flitem_subaccnttype_code, flitem_prcnt_flgrp_id FROM flitem WHERE (flitem_flgrp_id=pSourceGroup); -- Copy any children flspecs INSERT INTO flspec (flspec_flhead_id, flspec_flgrp_id, flspec_order, flspec_name, flspec_type, flspec_showstart, flspec_showend, flspec_showdelta, flspec_showbudget, flspec_showdiff, flspec_showcustom, flspec_subtract, flspec_showstartprcnt, flspec_showendprcnt, flspec_showdeltaprcnt, flspec_showbudgetprcnt, flspec_showdiffprcnt, flspec_showcustomprcnt, flspec_custom_source, flspec_prcnt_flgrp_id) SELECT pFlheadid, _flgrpid, flspec_order, flspec_name, flspec_type, flspec_showstart, flspec_showend, flspec_showdelta, flspec_showbudget, flspec_showdiff, flspec_showcustom, flspec_subtract, flspec_showstartprcnt, flspec_showendprcnt, flspec_showdeltaprcnt, flspec_showbudgetprcnt, flspec_showdiffprcnt, flspec_showcustomprcnt, flspec_custom_source, flspec_prcnt_flgrp_id FROM flspec WHERE (flspec_flgrp_id=pSourceGroup); -- Copy the groups PERFORM copyFinancialGroup(flgrp_id, pFlheadid, _flgrpid) FROM flgrp WHERE (flgrp_flgrp_id=pSourceGroup); RETURN _flgrpid; END; $_$; DDROP FUNCTION public.copyfinancialgroup(integer, integer, integer); publicadminfalse3992812551691413"copyfinanciallayout(integer, text)FUNCTIONCREATE FUNCTION copyfinanciallayout(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSourceFlheadid ALIAS FOR $1; pDestName ALIAS FOR $2; _flheadid INTEGER; _tblName TEXT; BEGIN -- Check for the flhead to be copy that it exists PERFORM flhead_id FROM flhead WHERE (flhead_id=pSourceFlheadid); IF (NOT FOUND) THEN RETURN -1; END IF; -- Check that the name is valid IF (pDestName IS NULL OR pDestName = '') THEN RETURN -2; END IF; -- Check for the name to copy to does not exist PERFORM flhead_id FROM flhead WHERE (flhead_name=pDestName); IF (FOUND) THEN RETURN -3; END IF; -- Copy the flhead record SELECT nextval('flhead_flhead_id_seq') INTO _flheadid; INSERT INTO flhead (flhead_id, flhead_name, flhead_descrip, flhead_showtotal, flhead_showstart, flhead_showend, flhead_showdelta, flhead_showbudget, flhead_showdiff, flhead_showcustom, flhead_custom_label, flhead_usealttotal, flhead_alttotal, flhead_usealtbegin, flhead_altbegin, flhead_usealtend, flhead_altend, flhead_usealtdebits, flhead_altdebits, flhead_usealtcredits, flhead_altcredits, flhead_usealtbudget, flhead_altbudget, flhead_usealtdiff, flhead_altdiff, flhead_type, flhead_active, flhead_sys ) SELECT _flheadid, pDestName, flhead_descrip, flhead_showtotal, flhead_showstart, flhead_showend, flhead_showdelta, flhead_showbudget, flhead_showdiff, flhead_showcustom, flhead_custom_label, flhead_usealttotal, flhead_alttotal, flhead_usealtbegin, flhead_altbegin, flhead_usealtend, flhead_altend, flhead_usealtdebits, flhead_altdebits, flhead_usealtcredits, flhead_altcredits, flhead_usealtbudget, flhead_altbudget, flhead_usealtdiff, flhead_altdiff, flhead_type, flhead_active, false FROM flhead WHERE (flhead_id=pSourceFlheadid); -- Create temporary table so old and new group ids can be stored SELECT relname FROM pg_class INTO _tblName WHERE relname = 'tmp_flgrpxref'; IF (_tblName IS NULL) THEN EXECUTE 'CREATE TEMPORARY TABLE tmp_flgrpxref' || getEffectiveXtUser() || ' ( flgrpxref_oldid int4, flgrpxref_newid int4 ) ON COMMIT DROP;'; END IF; -- Copy the top level groups PERFORM copyFinancialGroup(flgrp_id, _flheadid, -1) FROM flgrp WHERE ((flgrp_flhead_id=pSourceFlheadid) AND (flgrp_flgrp_id=-1)); -- Update Group Percent settings EXECUTE 'UPDATE flgrp SET flgrp_prcnt_flgrp_id=flgrpxref_newid FROM tmp_flgrpxref' || getEffectiveXtUser() || ' WHERE ((flgrp_flhead_id=' || _flheadid || ') AND (flgrp_prcnt_flgrp_id=flgrpxref_oldid));'; EXECUTE 'UPDATE flitem SET flitem_prcnt_flgrp_id=flgrpxref_newid FROM tmp_flgrpxref' || getEffectiveXtUser() || ' WHERE ((flitem_flhead_id=' || _flheadid || ') AND (flitem_prcnt_flgrp_id=flgrpxref_oldid));'; EXECUTE 'UPDATE flspec SET flspec_prcnt_flgrp_id=flgrpxref_newid FROM tmp_flgrpxref' || getEffectiveXtUser() || ' WHERE ((flspec_flhead_id=' || _flheadid || ') AND (flspec_prcnt_flgrp_id=flgrpxref_oldid));'; -- Copy Column Layounts INSERT INTO flcol (flcol_flhead_id, flcol_name, flcol_descrip, flcol_report_id, flcol_month, flcol_quarter, flcol_year, flcol_showdb, flcol_prcnt, flcol_priortype, flcol_priormonth, flcol_priorquarter, flcol_prioryear, flcol_priorprcnt, flcol_priordiff, flcol_priordiffprcnt, flcol_budget, flcol_budgetprcnt, flcol_budgetdiff, flcol_budgetdiffprcnt ) SELECT _flheadid,flcol_name,flcol_descrip, flcol_report_id,flcol_month,flcol_quarter, flcol_year,flcol_showdb,flcol_prcnt, flcol_priortype,flcol_priormonth,flcol_priorquarter, flcol_prioryear,flcol_priorprcnt,flcol_priordiff, flcol_priordiffprcnt,flcol_budget,flcol_budgetprcnt, flcol_budgetdiff,flcol_budgetdiffprcnt FROM flcol WHERE (flcol_flhead_id=pSourceFlheadid); RETURN _flheadid; END; $_$; 9DROP FUNCTION public.copyfinanciallayout(integer, text); publicadminfalse8399212551691414copyglseries(integer)FUNCTIONCREATE FUNCTION copyglseries(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; _sequence INTEGER := fetchGLSequence(); _journal INTEGER; BEGIN SELECT gltrans_journalnumber INTO _journal FROM gltrans WHERE ( gltrans_sequence=pSequence ) LIMIT 1; IF (FOUND) THEN INSERT INTO glseries ( glseries_sequence, glseries_source, glseries_doctype, glseries_docnumber, glseries_notes, glseries_accnt_id, glseries_amount, glseries_distdate ) SELECT _sequence, gltrans_source, gltrans_doctype, gltrans_docnumber, gltrans_notes, gltrans_accnt_id, gltrans_amount, gltrans_date FROM gltrans WHERE ( gltrans_sequence=pSequence ); ELSE RAISE EXCEPTION 'g/l transaction sequence not found'; END IF; RETURN _sequence; END; $_$; ,DROP FUNCTION public.copyglseries(integer); publicadminfalse8399212551691415,copyincdt(integer, timestamp with time zone)FUNCTION^ CREATE FUNCTION copyincdt(integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pparentid ALIAS FOR $1; ptimestamp TIMESTAMP WITH TIME ZONE := COALESCE($2, CURRENT_TIMESTAMP); _alarmid INTEGER; _incdtid INTEGER; _todoitemid INTEGER; BEGIN INSERT INTO incdt(incdt_number, incdt_crmacct_id, incdt_cntct_id, incdt_summary, incdt_descrip, incdt_item_id, incdt_timestamp, incdt_incdtcat_id, incdt_incdtseverity_id,incdt_incdtpriority_id, incdt_owner_username, incdt_recurring_incdt_id ) SELECT fetchIncidentNumber(), incdt_crmacct_id, incdt_cntct_id, incdt_summary, incdt_descrip, incdt_item_id, ptimestamp, incdt_incdtcat_id, incdt_incdtseverity_id,incdt_incdtpriority_id, incdt_owner_username, incdt_recurring_incdt_id FROM incdt WHERE (incdt_id=pparentid) RETURNING incdt_id INTO _incdtid; IF (_incdtid IS NULL) THEN RETURN -10; END IF; SELECT MIN(copyTodoitem(todoitem_id, CAST(ptimestamp AS DATE), _incdtid)) INTO _todoitemid FROM todoitem WHERE (todoitem_incdt_id=pparentid); IF (_todoitemid < 0) THEN RETURN _todoitemid; END IF; SELECT saveAlarm(NULL, NULL, CAST(ptimestamp AS DATE), CAST(alarm_time - DATE_TRUNC('day',alarm_time) AS TIME), alarm_time_offset, alarm_time_qualifier, alarm_event_recipient IS NOT NULL, alarm_event_recipient, alarm_email_recipient IS NOT NULL, alarm_email_recipient, alarm_sysmsg_recipient IS NOT NULL, alarm_sysmsg_recipient, 'INCDT', _incdtid, 'CHANGEONE') INTO _alarmid FROM alarm WHERE ((alarm_source='INCDT') AND (alarm_source_id=pparentid)); IF (_alarmid < 0) THEN RETURN _alarmid; END IF; INSERT INTO docass (docass_source_id, docass_source_type, docass_target_id, docass_target_type, docass_purpose ) SELECT _incdtid, 'INCDT', docass_target_id, docass_target_type, docass_purpose FROM docass WHERE ((docass_source_id=pparentid) AND (docass_source_type='INCDT')); RETURN _incdtid; END; $_$; CDROP FUNCTION public.copyincdt(integer, timestamp with time zone); publicadminfalse3992812551691416copyinvoice(integer, date)FUNCTIONCREATE FUNCTION copyinvoice(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcheadid ALIAS FOR $1; _invcheadid INTEGER; _invcnumber TEXT; _invcdate DATE := COALESCE($2, CURRENT_DATE); _i RECORD; _l RECORD; _invcitemid INTEGER; BEGIN SELECT * INTO _i FROM invchead WHERE(invchead_id=pInvcheadid); IF(NOT FOUND) THEN RETURN -1; END IF; _invcnumber := fetchInvcNumber(); _invcheadid := nextval('invchead_invchead_id_seq'); INSERT INTO invchead (invchead_id, invchead_cust_id, invchead_shipto_id, invchead_ordernumber, invchead_orderdate, invchead_posted, invchead_printed, invchead_invcnumber, invchead_invcdate, invchead_shipdate, invchead_ponumber, invchead_shipvia, invchead_fob, invchead_billto_name, invchead_billto_address1, invchead_billto_address2, invchead_billto_address3, invchead_billto_city, invchead_billto_state, invchead_billto_zipcode, invchead_billto_phone, invchead_shipto_name, invchead_shipto_address1, invchead_shipto_address2, invchead_shipto_address3, invchead_shipto_city, invchead_shipto_state, invchead_shipto_zipcode, invchead_shipto_phone, invchead_salesrep_id, invchead_commission, invchead_terms_id, invchead_freight, invchead_misc_amount, invchead_misc_descrip, invchead_misc_accnt_id, invchead_payment, invchead_paymentref, invchead_notes, invchead_billto_country, invchead_shipto_country, invchead_prj_id, invchead_curr_id, invchead_taxzone_id, invchead_recurring_invchead_id, invchead_saletype_id, invchead_shipzone_id) VALUES(_invcheadid, _i.invchead_cust_id, _i.invchead_shipto_id, _i.invchead_ordernumber, _i.invchead_orderdate, false, false, _invcnumber, _invcdate, _i.invchead_shipdate, _i.invchead_ponumber, _i.invchead_shipvia, _i.invchead_fob, _i.invchead_billto_name, _i.invchead_billto_address1, _i.invchead_billto_address2, _i.invchead_billto_address3, _i.invchead_billto_city, _i.invchead_billto_state, _i.invchead_billto_zipcode, _i.invchead_billto_phone, _i.invchead_shipto_name, _i.invchead_shipto_address1, _i.invchead_shipto_address2, _i.invchead_shipto_address3, _i.invchead_shipto_city, _i.invchead_shipto_state, _i.invchead_shipto_zipcode, _i.invchead_shipto_phone, _i.invchead_salesrep_id, _i.invchead_commission, _i.invchead_terms_id, _i.invchead_freight, _i.invchead_misc_amount, _i.invchead_misc_descrip, _i.invchead_misc_accnt_id, _i.invchead_payment, _i.invchead_paymentref, _i.invchead_notes, _i.invchead_billto_country, _i.invchead_shipto_country, _i.invchead_prj_id, _i.invchead_curr_id, _i.invchead_taxzone_id, _i.invchead_recurring_invchead_id, _i.invchead_saletype_id, _i.invchead_shipzone_id); FOR _l IN SELECT * FROM invcitem WHERE (invcitem_invchead_id=pInvcheadid) LOOP SELECT NEXTVAL('invcitem_invcitem_id_seq') INTO _invcitemid; INSERT INTO invcitem (invcitem_id, invcitem_invchead_id, invcitem_linenumber, invcitem_item_id, invcitem_warehous_id, invcitem_custpn, invcitem_number, invcitem_descrip, invcitem_ordered, invcitem_billed, invcitem_custprice, invcitem_price, invcitem_notes, invcitem_salescat_id, invcitem_taxtype_id, invcitem_qty_uom_id, invcitem_qty_invuomratio, invcitem_price_uom_id, invcitem_price_invuomratio, invcitem_coitem_id) VALUES (_invcitemid, _invcheadid, _l.invcitem_linenumber, _l.invcitem_item_id, _l.invcitem_warehous_id, _l.invcitem_custpn, _l.invcitem_number, _l.invcitem_descrip, _l.invcitem_ordered, _l.invcitem_billed, _l.invcitem_custprice, _l.invcitem_price, _l.invcitem_notes, _l.invcitem_salescat_id, _l.invcitem_taxtype_id, _l.invcitem_qty_uom_id, _l.invcitem_qty_invuomratio, _l.invcitem_price_uom_id, _l.invcitem_price_invuomratio, _l.invcitem_coitem_id); END LOOP; RETURN _invcheadid; END; $_$; 1DROP FUNCTION public.copyinvoice(integer, date); publicadminfalse8399212551691417copyitem(integer, text)FUNCTIONH CREATE FUNCTION copyitem(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSItemid ALIAS FOR $1; pTItemNumber ALIAS FOR $2; _itemid INTEGER; _r RECORD; _id INTEGER; BEGIN SELECT NEXTVAL('item_item_id_seq') INTO _itemid; INSERT INTO item ( item_id, item_number, item_descrip1, item_descrip2, item_classcode_id, item_type, item_active, item_picklist, item_sold, item_fractional, item_maxcost, item_prodweight, item_packweight, item_prodcat_id,item_exclusive, item_listprice, item_listcost, item_config, item_comments, item_extdescrip, item_upccode, item_inv_uom_id, item_price_uom_id ) SELECT _itemid, pTItemNumber, item_descrip1, item_descrip2, item_classcode_id, item_type, item_active, item_picklist, item_sold, item_fractional, item_maxcost, item_prodweight, item_packweight, item_prodcat_id, item_exclusive, item_listprice, item_listcost, item_config, item_comments, item_extdescrip, item_upccode, item_inv_uom_id, item_price_uom_id FROM item WHERE (item_id=pSItemid); INSERT INTO imageass (imageass_source_id, imageass_source, imageass_image_id, imageass_purpose) SELECT _itemid, 'I', imageass_image_id, imageass_purpose FROM imageass WHERE ((imageass_source_id=pSItemid) AND (imageass_source='I')); INSERT INTO url (url_source_id, url_source, url_title, url_url) SELECT _itemid, 'I', url_title, url_url FROM url WHERE ((url_source_id=pSItemid) AND (url_source='I')); INSERT INTO itemtax (itemtax_item_id, itemtax_taxzone_id, itemtax_taxtype_id) SELECT _itemid, itemtax_taxzone_id, itemtax_taxtype_id FROM itemtax WHERE(itemtax_item_id=pSItemid); INSERT INTO charass ( charass_target_type, charass_target_id, charass_char_id, charass_value ) SELECT 'I', _itemid, charass_char_id, charass_value FROM charass WHERE ( (charass_target_type='I') AND (charass_target_id=pSItemid) ); FOR _r IN SELECT itemuomconv_id, itemuomconv_from_uom_id, itemuomconv_from_value, itemuomconv_to_uom_id, itemuomconv_to_value, itemuomconv_fractional FROM itemuomconv WHERE(itemuomconv_item_id=pSItemid) LOOP SELECT nextval('itemuomconv_itemuomconv_id_seq') INTO _id; INSERT INTO itemuomconv (itemuomconv_id, itemuomconv_item_id, itemuomconv_from_uom_id, itemuomconv_from_value, itemuomconv_to_uom_id, itemuomconv_to_value, itemuomconv_fractional) VALUES(_id, _itemid, _r.itemuomconv_from_uom_id, _r.itemuomconv_from_value, _r.itemuomconv_to_uom_id, _r.itemuomconv_to_value, _r.itemuomconv_fractional); INSERT INTO itemuom (itemuom_itemuomconv_id, itemuom_uomtype_id) SELECT _id, itemuom_uomtype_id FROM itemuom WHERE(itemuom_itemuomconv_id=_r.itemuomconv_id); END LOOP; RETURN _itemid; END; $_$; .DROP FUNCTION public.copyitem(integer, text); publicadminfalse39928125516914182copyitem(integer, text, boolean, boolean, boolean)FUNCTIONCREATE FUNCTION copyitem(integer, text, boolean, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSItemid ALIAS FOR $1; pTItemNumber ALIAS FOR $2; pCopyBOM ALIAS FOR $3; pCopyBOO ALIAS FOR $4; -- deprecated - xtmfg-specific pCopyCosts ALIAS FOR $5; BEGIN RAISE NOTICE 'copyItem(INTEGER, TEXT, BOOLEAN, BOOLEAN, BOOLEAN) has been deprecated. Use copyItem(INTEGER, TEXT) or copyItem(INTEGER, TEXT, BOOLEAN, BOOLEAN) or a package-specific version instead.'; RETURN copyItem(pSItemid, pTItemNumber, pCopyBOM, pCopyCosts); END; $_$; IDROP FUNCTION public.copyitem(integer, text, boolean, boolean, boolean); publicadminfalse3992812551691419;copyitem(integer, text, boolean, boolean, boolean, boolean)FUNCTION=CREATE FUNCTION copyitem(integer, text, boolean, boolean, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSItemid ALIAS FOR $1; pTItemNumber ALIAS FOR $2; pCopyBOM ALIAS FOR $3; pCopyBOO ALIAS FOR $4; -- deprecated - xtmfg-specific pCopyCosts ALIAS FOR $5; pCopyUsedAt ALIAS FOR $6; -- deprecated - xtmfg-specific BEGIN RETURN copyItem(pSItemid, pTItemNumber, pCopyBOM, pCopyCosts); END; $_$; RDROP FUNCTION public.copyitem(integer, text, boolean, boolean, boolean, boolean); publicadminfalse8399212551691420)copyitem(integer, text, boolean, boolean)FUNCTIONCREATE FUNCTION copyitem(integer, text, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSItemid ALIAS FOR $1; pTItemNumber ALIAS FOR $2; pCopyBOM ALIAS FOR $3; pCopyCosts ALIAS FOR $4; _itemid INTEGER; BEGIN _itemid := copyItem(pSItemid, pTItemNumber); IF (pCopyBOM) THEN PERFORM copyBOM(pSItemid, _itemid, FALSE); END IF; IF (pCopyCosts) THEN INSERT INTO itemcost ( itemcost_item_id, itemcost_costelem_id, itemcost_lowlevel, itemcost_stdcost, itemcost_posted, itemcost_actcost, itemcost_curr_id, itemcost_updated ) SELECT _itemid, itemcost_costelem_id, itemcost_lowlevel, itemcost_stdcost, CURRENT_DATE, itemcost_actcost, itemcost_curr_id, CURRENT_DATE FROM itemcost WHERE (itemcost_item_id=pSItemid); END IF; RETURN _itemid; END; $_$; @DROP FUNCTION public.copyitem(integer, text, boolean, boolean); publicadminfalse3992812551691421copyitemsite(integer, integer)FUNCTIONCREATE FUNCTION copyitemsite(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pitemsiteid ALIAS FOR $1; pdestwhsid ALIAS FOR $2; _destwhs whsinfo%ROWTYPE; _new itemsite%ROWTYPE; BEGIN -- make a copy of the old itemsite SELECT * INTO _new FROM itemsite WHERE (itemsite_id=pitemsiteid); IF (NOT FOUND) THEN RETURN -1; END IF; -- if there is no dest warehouse then perhaps the user is manually copying it IF (pdestwhsid IS NOT NULL) THEN SELECT * INTO _destwhs FROM whsinfo WHERE (warehous_id=pdestwhsid); IF (NOT FOUND) THEN RETURN -2; END IF; END IF; IF (NOT checkPrivilege('MaintainItemSites')) THEN RETURN -3; END IF; SELECT itemsite_id INTO _new.itemsite_id FROM itemsite WHERE ((itemsite_item_id=_new.itemsite_item_id) AND (itemsite_warehous_id=pdestwhsid OR (itemsite_warehous_id IS NULL AND pdestwhsid IS NULL))); IF (FOUND) THEN RETURN _new.itemsite_id; END IF; -- now override the things we know have to change _new.itemsite_id := NEXTVAL('itemsite_itemsite_id_seq'); _new.itemsite_warehous_id := pdestwhsid; _new.itemsite_qtyonhand := 0; _new.itemsite_value := 0; _new.itemsite_datelastcount := NULL; _new.itemsite_datelastused := NULL; _new.itemsite_nnqoh := 0; _new.itemsite_location_id := -1; IF (_destwhs.warehous_transit) THEN _new.itemsite_reorderlevel := 0; _new.itemsite_ordertoqty := 0; _new.itemsite_soldranking := NULL; _new.itemsite_posupply := FALSE; _new.itemsite_wosupply := FALSE; _new.itemsite_loccntrl := FALSE; _new.itemsite_safetystock := 0; _new.itemsite_minordqty := 0; _new.itemsite_multordqty := 0; _new.itemsite_leadtime := 0; _new.itemsite_controlmethod := 'R'; IF(_new.itemsite_costmethod='N') THEN _new.itemsite_costmethod := 'S'; END IF; _new.itemsite_active := TRUE; -- ? _new.itemsite_plancode_id := -1; -- ? _new.itemsite_costcat_id := -1; _new.itemsite_eventfence := 1; _new.itemsite_sold := FALSE; _new.itemsite_stocked := FALSE; _new.itemsite_location_id := -1; _new.itemsite_useparams := FALSE; _new.itemsite_useparamsmanual := FALSE; _new.itemsite_createpr := FALSE; _new.itemsite_location := NULL; _new.itemsite_location_comments := NULL; _new.itemsite_notes := 'Transit Warehouse'; _new.itemsite_nnqoh := 0; _new.itemsite_createwo := FALSE; _new.itemsite_costcat_id := _destwhs.warehous_costcat_id; END IF; INSERT INTO itemsite ( itemsite_id, itemsite_item_id, itemsite_warehous_id, itemsite_qtyonhand, itemsite_costmethod, itemsite_value, itemsite_reorderlevel, itemsite_ordertoqty, itemsite_cyclecountfreq, itemsite_datelastcount, itemsite_datelastused, itemsite_posupply, itemsite_wosupply, itemsite_loccntrl, itemsite_safetystock, itemsite_minordqty, itemsite_multordqty, itemsite_leadtime, itemsite_abcclass, itemsite_issuemethod, itemsite_controlmethod, itemsite_active, itemsite_plancode_id, itemsite_costcat_id, itemsite_eventfence, itemsite_sold, itemsite_stocked, itemsite_freeze, itemsite_location_id, itemsite_useparams, itemsite_useparamsmanual, itemsite_soldranking, itemsite_createpr, itemsite_location, itemsite_location_comments, itemsite_notes, itemsite_perishable, itemsite_nnqoh, itemsite_autoabcclass, itemsite_ordergroup, itemsite_disallowblankwip, itemsite_maxordqty, itemsite_mps_timefence, itemsite_createwo, itemsite_warrpurc, itemsite_autoreg, itemsite_planning_type, itemsite_supply_itemsite_id ) VALUES ( _new.itemsite_id, _new.itemsite_item_id, _new.itemsite_warehous_id, _new.itemsite_qtyonhand, _new.itemsite_costmethod, _new.itemsite_value, _new.itemsite_reorderlevel, _new.itemsite_ordertoqty, _new.itemsite_cyclecountfreq, _new.itemsite_datelastcount, _new.itemsite_datelastused, _new.itemsite_posupply, _new.itemsite_wosupply, _new.itemsite_loccntrl, _new.itemsite_safetystock, _new.itemsite_minordqty, _new.itemsite_multordqty, _new.itemsite_leadtime, _new.itemsite_abcclass, _new.itemsite_issuemethod, _new.itemsite_controlmethod, _new.itemsite_active, _new.itemsite_plancode_id, _new.itemsite_costcat_id, _new.itemsite_eventfence, _new.itemsite_sold, _new.itemsite_stocked, _new.itemsite_freeze, _new.itemsite_location_id, _new.itemsite_useparams, _new.itemsite_useparamsmanual, _new.itemsite_soldranking, _new.itemsite_createpr, _new.itemsite_location, _new.itemsite_location_comments, _new.itemsite_notes, _new.itemsite_perishable, _new.itemsite_nnqoh, _new.itemsite_autoabcclass, _new.itemsite_ordergroup, _new.itemsite_disallowblankwip, _new.itemsite_maxordqty, _new.itemsite_mps_timefence, _new.itemsite_createwo, _new.itemsite_warrpurc, _new.itemsite_autoreg, _new.itemsite_planning_type, _new.itemsite_supply_itemsite_id ); RETURN _new.itemsite_id; END; $_$; 5DROP FUNCTION public.copyitemsite(integer, integer); publicadminfalse3992812551691422copylocale(integer)FUNCTION CREATE FUNCTION copylocale(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLocaleid ALIAS FOR $1; _localecode TEXT; _localeid INTEGER; BEGIN SELECT locale_code INTO _localecode FROM locale WHERE (locale_id=pLocaleid); IF (NOT FOUND) THEN RAISE EXCEPTION 'Attempt to copy a non-existent locale-id.'; END IF; IF (EXISTS(SELECT locale_id FROM locale WHERE (locale_code = (_localecode || '-COPY')))) THEN RAISE EXCEPTION 'Attempt to copy a Locale Code that already exists.'; END IF; SELECT NEXTVAL('locale_locale_id_seq') INTO _localeid; INSERT INTO locale (locale_id, locale_code, locale_descrip, locale_lang_file, locale_dateformat, locale_currformat, locale_qtyformat, locale_comments, locale_qtyperformat, locale_salespriceformat, locale_extpriceformat, locale_timeformat, locale_timestampformat, local_costformat, locale_costformat, locale_purchpriceformat, locale_uomratioformat, locale_intervalformat, locale_lang_id, locale_country_id, locale_error_color, locale_warning_color, locale_emphasis_color, locale_altemphasis_color, locale_expired_color, locale_future_color, locale_curr_scale, locale_salesprice_scale, locale_purchprice_scale, locale_extprice_scale, locale_cost_scale, locale_qty_scale, locale_qtyper_scale, locale_uomratio_scale) SELECT _localeid, locale_code || '-COPY', '', locale_lang_file, locale_dateformat, locale_currformat, locale_qtyformat, locale_comments, locale_qtyperformat, locale_salespriceformat, locale_extpriceformat, locale_timeformat, locale_timestampformat, local_costformat, locale_costformat, locale_purchpriceformat, locale_uomratioformat, locale_intervalformat, locale_lang_id, locale_country_id, locale_error_color, locale_warning_color, locale_emphasis_color, locale_altemphasis_color, locale_expired_color, locale_future_color, locale_curr_scale, locale_salesprice_scale, locale_purchprice_scale, locale_extprice_scale, locale_cost_scale, locale_qty_scale, locale_qtyper_scale, locale_uomratio_scale FROM locale WHERE(locale_id=pLocaleid); RETURN _localeid; END; $_$; *DROP FUNCTION public.copylocale(integer); publicadminfalse83992*12551691423'copypo(integer, integer, date, boolean)FUNCTION(#CREATE FUNCTION copypo(integer, integer, date, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSrcid ALIAS FOR $1; pVendid ALIAS FOR $2; pOrderdate ALIAS FOR $3; pRecheckVendinfo ALIAS FOR $4; _tgtid INTEGER; _orderdate DATE; _head RECORD; _itemsrc RECORD; _lineitem RECORD; _qty NUMERIC; _unitprice NUMERIC; _uomratio NUMERIC; _vend_restrictpurch BOOLEAN; BEGIN SELECT * INTO _head FROM pohead WHERE pohead_id = pSrcid; IF (NOT FOUND) THEN RETURN -1; END IF; IF (_head.pohead_vend_id != pVendid) THEN RETURN -2; -- not supported now but should be in the future END IF; -- when enabled, set pRecheckVendinfo if vendors don't match IF (pOrderdate IS NULL) THEN _orderdate := CURRENT_DATE; ELSE _orderdate := pOrderdate; END IF; INSERT INTO pohead (pohead_status, pohead_number, pohead_orderdate, pohead_vend_id, pohead_fob, pohead_shipvia, pohead_freight, pohead_printed, pohead_terms_id, pohead_warehous_id, pohead_vendaddr_id, pohead_agent_username, pohead_curr_id, pohead_saved, pohead_taxtype_id, pohead_taxzone_id, pohead_dropship, pohead_vend_cntct_id, pohead_vend_cntct_honorific, pohead_vend_cntct_first_name, pohead_vend_cntct_middle, pohead_vend_cntct_last_name, pohead_vend_cntct_suffix, pohead_vend_cntct_phone, pohead_vend_cntct_title, pohead_vend_cntct_fax, pohead_vend_cntct_email, pohead_vendaddress1, pohead_vendaddress2, pohead_vendaddress3, pohead_vendcity, pohead_vendstate, pohead_vendzipcode, pohead_vendcountry, pohead_shipto_cntct_id, pohead_shipto_cntct_honorific, pohead_shipto_cntct_first_name, pohead_shipto_cntct_middle, pohead_shipto_cntct_last_name, pohead_shipto_cntct_suffix, pohead_shipto_cntct_phone, pohead_shipto_cntct_title, pohead_shipto_cntct_fax, pohead_shipto_cntct_email, pohead_shiptoaddress_id, pohead_shiptoaddress1, pohead_shiptoaddress2, pohead_shiptoaddress3, pohead_shiptocity, pohead_shiptostate, pohead_shiptozipcode, pohead_shiptocountry ) VALUES ( 'U', fetchPoNumber(), _orderdate, _head.pohead_vend_id, _head.pohead_fob, _head.pohead_shipvia, _head.pohead_freight, false, _head.pohead_terms_id, _head.pohead_warehous_id, _head.pohead_vendaddr_id, _head.pohead_agent_username, _head.pohead_curr_id, true, _head.pohead_taxtype_id, _head.pohead_taxzone_id, false, _head.pohead_vend_cntct_id, _head.pohead_vend_cntct_honorific, _head.pohead_vend_cntct_first_name, _head.pohead_vend_cntct_middle, _head.pohead_vend_cntct_last_name, _head.pohead_vend_cntct_suffix, _head.pohead_vend_cntct_phone, _head.pohead_vend_cntct_title, _head.pohead_vend_cntct_fax, _head.pohead_vend_cntct_email, _head.pohead_vendaddress1, _head.pohead_vendaddress2, _head.pohead_vendaddress3, _head.pohead_vendcity, _head.pohead_vendstate, _head.pohead_vendzipcode, _head.pohead_vendcountry, _head.pohead_shipto_cntct_id, _head.pohead_shipto_cntct_honorific, _head.pohead_shipto_cntct_first_name, _head.pohead_shipto_cntct_middle, _head.pohead_shipto_cntct_last_name, _head.pohead_shipto_cntct_suffix, _head.pohead_shipto_cntct_phone, _head.pohead_shipto_cntct_title, _head.pohead_shipto_cntct_fax, _head.pohead_shipto_cntct_email, _head.pohead_shiptoaddress_id, _head.pohead_shiptoaddress1, _head.pohead_shiptoaddress2, _head.pohead_shiptoaddress3, _head.pohead_shiptocity, _head.pohead_shiptostate, _head.pohead_shiptozipcode, _head.pohead_shiptocountry); _tgtid := CURRVAL('pohead_pohead_id_seq'); IF (pRecheckVendinfo) THEN SELECT vend_restrictpurch INTO _vend_restrictpurch FROM vendinfo WHERE (vend_id = pVendid); FOR _lineitem IN SELECT * FROM poitem WHERE (poitem_pohead_id = pSrcid) LOOP SELECT * INTO _itemsrc FROM itemsrc, itemsite WHERE (itemsrc_active AND (itemsrc_id = _lineitem.poitem_itemsrc_id) AND (itemsite_id = _lineitem.poitem_itemsite_id)); IF (NOT FOUND AND _vend_restrictpurch) THEN RETURN -3; END IF; -- handle changes to the uom ratio and consequent qty changes _uomratio := COALESCE(_itemsrc.itemsrc_invvendoruomratio, _lineitem.poitem_invvenduomratio); IF (_itemsrc.itemsrc_invvendoruomratio IS NULL OR _itemsrc.itemsrc_invvendoruomratio != _lineitem.poitem_invvenduomratio) THEN _qty := _lineitem.poitem_qty_ordered; ELSE _qty := _lineitem.poitem_qty_ordered * _lineitem.poitem_invvenduomratio / _itemsrc.itemsrc_invvendoruomratio; IF (_itemsrc.itemsrc_minordqty IS NOT NULL) THEN IF (_qty < _itemsrc.itemsrc_minordqty) THEN _qty := _itemsrc.itemsrc_minordqty; ELSIF (_itemsrc.itemsrc_multordqty > 0 AND _qty % _itemsrc.itemsrc_multordqty > 0) THEN _qty = _qty % _itemsrc.itemsrc_multordqty + _itemsrc.itemsrc_multordqty; END IF; END IF; END IF; IF (_itemsrc.itemsrc_id IS NULL) THEN _unitprice = _lineitem.poitem_unitprice; ELSE SELECT itemsrcPrice(_itemsrc.itemsrc_id, _head.pohead_warehous_id, _head.pohead_dropship, _lineitem.poitem_qty_ordered, _head.pohead_curr_id, CURRENT_DATE) INTO _unitprice; IF (_unitprice IS NULL) THEN RETURN -4; END IF; END IF; INSERT INTO poitem (poitem_status, poitem_pohead_id, poitem_linenumber, poitem_duedate, poitem_itemsite_id, poitem_vend_item_descrip, poitem_vend_uom, poitem_invvenduomratio, poitem_qty_ordered, poitem_unitprice, poitem_vend_item_number, poitem_comments, poitem_expcat_id, poitem_itemsrc_id, poitem_freight, poitem_stdcost, poitem_manuf_name, poitem_manuf_item_number, poitem_manuf_item_descrip, poitem_taxtype_id ) VALUES ( 'U', _tgtid, _lineitem.poitem_linenumber, _orderdate + COALESCE(_itemsrc.itemsrc_leadtime, 0), _lineitem.poitem_itemsite_id, COALESCE(_itemsrc.itemsrc_vend_item_descrip, _lineitem.poitem_vend_item_descrip), COALESCE(_itemsrc.itemsrc_vend_uom, _lineitem.poitem_vend_uom), COALESCE(_itemsrc.itemsrc_invvendoruomratio, _lineitem.poitem_invvenduomratio), _qty, _unitprice, COALESCE(_itemsrc.itemsrc_vend_item_number, _lineitem.poitem_vend_item_number), _lineitem.poitem_comments, _lineitem.poitem_expcat_id, COALESCE(_itemsrc.itemsrc_id, -1), _lineitem.poitem_freight, stdcost(_itemsrc.itemsite_item_id), COALESCE(_itemsrc.itemsrc_manuf_name, _lineitem.poitem_manuf_name), COALESCE(_itemsrc.itemsrc_manuf_item_number, _lineitem.poitem_manuf_item_number), COALESCE(_itemsrc.itemsrc_manuf_item_descrip, _lineitem.poitem_manuf_item_descrip), _lineitem.poitem_taxtype_id); END LOOP; ELSE INSERT INTO poitem (poitem_status, poitem_pohead_id, poitem_linenumber, poitem_duedate, poitem_itemsite_id, poitem_vend_item_descrip, poitem_vend_uom, poitem_invvenduomratio, poitem_qty_ordered, poitem_unitprice, poitem_vend_item_number, poitem_comments, poitem_expcat_id, poitem_itemsrc_id, poitem_freight, poitem_stdcost, poitem_manuf_name, poitem_manuf_item_number, poitem_manuf_item_descrip, poitem_taxtype_id ) SELECT 'U', _tgtid, poitem_linenumber, _orderdate + COALESCE(itemsrc_leadtime, 0), poitem_itemsite_id, poitem_vend_item_descrip, poitem_vend_uom, poitem_invvenduomratio, poitem_qty_ordered, poitem_unitprice, poitem_vend_item_number, poitem_comments, poitem_expcat_id, poitem_itemsrc_id, poitem_freight, stdcost(itemsite_item_id), poitem_manuf_name, poitem_manuf_item_number, poitem_manuf_item_descrip, poitem_taxtype_id FROM poitem LEFT OUTER JOIN itemsrc ON (itemsrc_id=poitem_itemsrc_id) LEFT OUTER JOIN itemsite ON (itemsite_id=poitem_itemsite_id) WHERE (poitem_pohead_id = pSrcid); END IF; -- Todo: recalculate tax? RETURN _tgtid; END; $_$; >DROP FUNCTION public.copypo(integer, integer, date, boolean); publicadminfalse3992812551691425copypricingschedule(integer)FUNCTION CREATE FUNCTION copypricingschedule(pipsheadid integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _ipsheadid INTEGER; _ipsitemid INTEGER; _ipsfreightid INTEGER; _x RECORD; BEGIN _ipsheadid := nextval('ipshead_ipshead_id_seq'); INSERT INTO ipshead ( ipshead_id, ipshead_name, ipshead_descrip, ipshead_effective, ipshead_expires, ipshead_curr_id, ipshead_updated ) SELECT _ipsheadid, orig.ipshead_name || (SELECT CAST((COUNT(cnt.ipshead_id)+1) AS text) FROM ipshead cnt WHERE (SUBSTRING(cnt.ipshead_name FROM 0 FOR char_length(orig.ipshead_name)+1) = orig.ipshead_name)), orig.ipshead_descrip, orig.ipshead_effective, orig.ipshead_expires, orig.ipshead_curr_id, CURRENT_DATE FROM ipshead orig WHERE (orig.ipshead_id=pIpsheadId); FOR _x IN SELECT ipsitem_id FROM ipsiteminfo WHERE (ipsitem_ipshead_id=pIpsheadid) LOOP INSERT INTO ipsiteminfo (ipsitem_ipshead_id, ipsitem_item_id, ipsitem_prodcat_id, ipsitem_qtybreak, ipsitem_price, ipsitem_qty_uom_id, ipsitem_price_uom_id, ipsitem_discntprcnt, ipsitem_fixedamtdiscount, ipsitem_type, ipsitem_warehous_id) SELECT _ipsheadid, ipsitem_item_id, ipsitem_prodcat_id, ipsitem_qtybreak, ipsitem_price, ipsitem_qty_uom_id, ipsitem_price_uom_id, ipsitem_discntprcnt, ipsitem_fixedamtdiscount, ipsitem_type, ipsitem_warehous_id FROM ipsiteminfo WHERE (ipsitem_id=_x.ipsitem_id) RETURNING ipsitem_id INTO _ipsitemid; INSERT INTO ipsitemchar ( ipsitemchar_ipsitem_id, ipsitemchar_char_id, ipsitemchar_value, ipsitemchar_price) SELECT _ipsitemid, ipsitemchar_char_id, ipsitemchar_value, ipsitemchar_price FROM ipsitemchar WHERE (ipsitemchar_ipsitem_id=_x.ipsitem_id); END LOOP; FOR _x IN SELECT ipsfreight_id FROM ipsfreight WHERE (ipsfreight_ipshead_id=pIpsheadid) LOOP _ipsfreightid := nextval('ipsfreight_ipsfreight_id_seq'); INSERT INTO ipsfreight (ipsfreight_id, ipsfreight_ipshead_id, ipsfreight_qtybreak, ipsfreight_price, ipsfreight_type, ipsfreight_warehous_id, ipsfreight_shipzone_id,ipsfreight_freightclass_id, ipsfreight_shipvia) SELECT _ipsfreightid, _ipsheadid, ipsfreight_qtybreak, ipsfreight_price,ipsfreight_type, ipsfreight_warehous_id,ipsfreight_shipzone_id, ipsfreight_freightclass_id,ipsfreight_shipvia FROM ipsfreight WHERE (ipsfreight_id=_x.ipsfreight_id); END LOOP; RETURN _ipsheadid; END; $$; >DROP FUNCTION public.copypricingschedule(pipsheadid integer); publicadminfalse8399212551691426copyprj(integer, date)FUNCTIONV CREATE FUNCTION copyprj(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pparentid ALIAS FOR $1; _counter INTEGER; _duedate DATE := COALESCE($2, CURRENT_DATE); _alarmid INTEGER; _i INTEGER; _newnumber TEXT; _p RECORD; _prjid INTEGER; _testnumber TEXT; BEGIN RAISE DEBUG 'copyPrj(%, %) entered', pparentid, _duedate; SELECT * INTO _p FROM prj WHERE (prj_id=pparentid); -- new number = old number up to but not including -, followed by _duedate -- e.g. REPAIR-FRIDGE becomes REPAIR-2010-05-15 -- but REPAIR_FRIDGE becomes REPAIR_FRIDGE-2010-05-15 IF (_p.prj_recurring_prj_id IS NULL) THEN _newnumber := _p.prj_number; ELSE _newnumber := SUBSTRING(_p.prj_number FROM '[^-]*'); IF (_newnumber IS NULL) THEN _newnumber := _p.prj_number; END IF; END IF; _newnumber := _newnumber || '-' || to_char(_duedate, 'YYYY-MM-DD'); RAISE DEBUG 'copyPrj checking if _newnumber % exists', _newnumber; SELECT MAX(prj_number) INTO _testnumber FROM prj WHERE (prj_number ~ ('^' || _newnumber)); IF (_testnumber = _newnumber) THEN _newnumber := _newnumber || '-001'; ELSIF (_testnumber IS NOT NULL) THEN _counter := CAST(SUBSTRING(_testnumber FROM '...$') AS INTEGER); _counter := _counter + 1; _newnumber := REGEXP_REPLACE(_testnumber, '...$', to_char(_counter, 'FM009')); END IF; RAISE DEBUG 'copyPrj _newnumber is now %', _newnumber; INSERT INTO prj( prj_number, prj_name, prj_descrip, prj_status, prj_so, prj_wo, prj_po, prj_owner_username, prj_due_date, prj_username, prj_recurring_prj_id ) SELECT _newnumber, _p.prj_name, _p.prj_descrip, 'P', _p.prj_so, _p.prj_wo, _p.prj_po, _p.prj_owner_username, _duedate, _p.prj_username, _p. prj_recurring_prj_id FROM prj WHERE (prj_id=pparentid) RETURNING prj_id INTO _prjid; IF (_prjid IS NULL) THEN RETURN -1; END IF; SELECT saveAlarm(NULL, NULL, _duedate, CAST(alarm_time - DATE_TRUNC('day',alarm_time) AS TIME), alarm_time_offset, alarm_time_qualifier, alarm_event_recipient IS NOT NULL, alarm_event_recipient, alarm_email_recipient IS NOT NULL, alarm_email_recipient, alarm_sysmsg_recipient IS NOT NULL, alarm_sysmsg_recipient, 'J', _prjid, 'CHANGEONE') INTO _alarmid FROM alarm WHERE ((alarm_source='J') AND (alarm_source_id=pparentid)); IF (_alarmid < 0) THEN RETURN _alarmid; END IF; RETURN _prjid; END; $_$; -DROP FUNCTION public.copyprj(integer, date); publicadminfalse8399212551691427#copyproject(integer, text, integer)FUNCTION CREATE FUNCTION copyproject(integer, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrjId ALIAS FOR $1; pPrjNumber ALIAS FOR $2; pDueDateOffset ALIAS FOR $3; _prjid INTEGER; BEGIN IF (COALESCE(pPrjNumber, '') = '') THEN RETURN -1; END IF; IF (EXISTS(SELECT prj_id FROM prj WHERE UPPER(prj_number)=UPPER(pPrjNumber))) THEN RETURN -2; END IF; IF (NOT EXISTS(SELECT prj_id FROM prj WHERE prj_id=pPrjId)) THEN RETURN -3; END IF; SELECT NEXTVAL('prj_prj_id_seq') INTO _prjid; INSERT INTO prj ( prj_id, prj_number, prj_name, prj_descrip, prj_status, prj_so, prj_wo, prj_po, prj_owner_username, prj_start_date, prj_due_date, prj_assigned_date, prj_completed_date, prj_username, prj_recurring_prj_id, prj_crmacct_id, prj_cntct_id ) SELECT _prjid, UPPER(pPrjNumber), prj_name, prj_descrip, 'P', prj_so, prj_wo, prj_po, prj_owner_username, NULL, (prj_due_date + COALESCE(pDueDateOffset, 0)), CASE WHEN (prj_username IS NULL) THEN NULL ELSE CURRENT_DATE END, NULL, prj_username, prj_recurring_prj_id, prj_crmacct_id, prj_cntct_id FROM prj WHERE (prj_id=pPrjId); INSERT INTO prjtask ( prjtask_number, prjtask_name, prjtask_descrip, prjtask_prj_id, prjtask_anyuser, prjtask_status, prjtask_hours_budget, prjtask_hours_actual, prjtask_exp_budget, prjtask_exp_actual, prjtask_owner_username, prjtask_start_date, prjtask_due_date, prjtask_assigned_date, prjtask_completed_date, prjtask_username ) SELECT prjtask_number, prjtask_name, prjtask_descrip, _prjid, prjtask_anyuser, 'P', prjtask_hours_budget, 0.0, prjtask_exp_budget, 0.0, prjtask_owner_username, NULL, (prjtask_due_date + COALESCE(pDueDateOffset, 0)), CASE WHEN (prjtask_username IS NULL) THEN NULL ELSE CURRENT_DATE END, NULL, prjtask_username FROM prjtask WHERE (prjtask_prj_id=pPrjId); INSERT INTO docass ( docass_source_id, docass_source_type, docass_target_id, docass_target_type, docass_purpose ) SELECT _prjid, docass_source_type, docass_target_id, docass_target_type, docass_purpose FROM docass WHERE ((docass_source_id=pPrjId) AND (docass_source_type='J')); RETURN _prjid; END; $_$; :DROP FUNCTION public.copyproject(integer, text, integer); publicadminfalse8399212551691428copyquote(integer, date)FUNCTIONCREATE FUNCTION copyquote(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; pSchedDate ALIAS FOR $2; _quheadid INTEGER; _qunumber TEXT; BEGIN SELECT NEXTVAL('quhead_quhead_id_seq') INTO _quheadid; IF (fetchMetricText('QUNumberGeneration') = 'S') THEN SELECT fetchSoNumber() INTO _qunumber; ELSE SELECT fetchQuNumber() INTO _qunumber; END IF; INSERT INTO quhead ( quhead_id, quhead_number, quhead_cust_id, quhead_prj_id, quhead_quotedate, quhead_packdate, quhead_fob, quhead_warehous_id, quhead_terms_id, quhead_salesrep_id, quhead_custponumber, quhead_shipvia, quhead_shipto_id, quhead_shiptoname, quhead_shiptoaddress1, quhead_shiptoaddress2, quhead_shiptoaddress3, quhead_shiptocity, quhead_shiptostate, quhead_shiptozipcode, quhead_shiptophone, quhead_shiptocountry, quhead_billtoname, quhead_billtoaddress1, quhead_billtoaddress2, quhead_billtoaddress3, quhead_billtocity, quhead_billtostate, quhead_billtozip, quhead_misc_accnt_id, quhead_misc_descrip, quhead_misc, quhead_freight, quhead_commission, quhead_ordercomments, quhead_shipcomments, quhead_imported, quhead_curr_id, quhead_taxzone_id, quhead_taxtype_id, quhead_ophead_id, quhead_status, quhead_shipto_cntct_id, quhead_shipto_cntct_honorific, quhead_shipto_cntct_first_name, quhead_shipto_cntct_middle, quhead_shipto_cntct_last_name, quhead_shipto_cntct_suffix, quhead_shipto_cntct_phone, quhead_shipto_cntct_title, quhead_shipto_cntct_fax, quhead_shipto_cntct_email, quhead_billto_cntct_id, quhead_billto_cntct_honorific, quhead_billto_cntct_first_name, quhead_billto_cntct_middle, quhead_billto_cntct_last_name, quhead_billto_cntct_suffix, quhead_billto_cntct_phone, quhead_billto_cntct_title, quhead_billto_cntct_fax, quhead_billto_cntct_email ) SELECT _quheadid, _qunumber, quhead_cust_id, quhead_prj_id, CURRENT_DATE, COALESCE(pSchedDate, quhead_packdate), quhead_fob, quhead_warehous_id, quhead_terms_id, quhead_salesrep_id, quhead_custponumber, quhead_shipvia, quhead_shipto_id, quhead_shiptoname, quhead_shiptoaddress1, quhead_shiptoaddress2, quhead_shiptoaddress3, quhead_shiptocity, quhead_shiptostate, quhead_shiptozipcode, quhead_shiptophone, quhead_shiptocountry, quhead_billtoname, quhead_billtoaddress1, quhead_billtoaddress2, quhead_billtoaddress3, quhead_billtocity, quhead_billtostate, quhead_billtozip, quhead_misc_accnt_id, quhead_misc_descrip, quhead_misc, quhead_freight, quhead_commission, quhead_ordercomments, quhead_shipcomments, FALSE, quhead_curr_id, quhead_taxzone_id, quhead_taxtype_id, quhead_ophead_id, 'O', quhead_shipto_cntct_id, quhead_shipto_cntct_honorific, quhead_shipto_cntct_first_name, quhead_shipto_cntct_middle, quhead_shipto_cntct_last_name, quhead_shipto_cntct_suffix, quhead_shipto_cntct_phone, quhead_shipto_cntct_title, quhead_shipto_cntct_fax, quhead_shipto_cntct_email, quhead_billto_cntct_id, quhead_billto_cntct_honorific, quhead_billto_cntct_first_name, quhead_billto_cntct_middle, quhead_billto_cntct_last_name, quhead_billto_cntct_suffix, quhead_billto_cntct_phone, quhead_billto_cntct_title, quhead_billto_cntct_fax, quhead_billto_cntct_email FROM quhead WHERE (quhead_id=pQuheadid); INSERT INTO quitem ( quitem_quhead_id, quitem_linenumber, quitem_itemsite_id, quitem_scheddate, quitem_promdate, quitem_qtyord, quitem_price, quitem_custprice, quitem_unitcost, quitem_qty_uom_id, quitem_price_uom_id, quitem_qty_invuomratio, quitem_price_invuomratio, quitem_memo, quitem_custpn, quitem_imported, quitem_taxtype_id, quitem_createorder, quitem_order_warehous_id, quitem_item_id, quitem_prcost, quitem_dropship, quitem_itemsrc_id, quitem_pricemode ) SELECT _quheadid, quitem_linenumber, quitem_itemsite_id, COALESCE(pSchedDate, quitem_scheddate), quitem_promdate, quitem_qtyord, quitem_price, quitem_custprice, stdCost(itemsite_item_id), quitem_qty_uom_id, quitem_price_uom_id, quitem_qty_invuomratio, quitem_price_invuomratio, quitem_memo, quitem_custpn, FALSE, quitem_taxtype_id, quitem_createorder, quitem_order_warehous_id, quitem_item_id, quitem_prcost, quitem_dropship, quitem_itemsrc_id, quitem_pricemode FROM quitem, itemsite WHERE ( (quitem_itemsite_id=itemsite_id) AND (quitem_quhead_id=pQuheadid)); INSERT INTO charass (charass_target_type, charass_target_id, charass_char_id, charass_value) SELECT charass_target_type, b.quitem_id, charass_char_id, charass_value FROM quitem a, charass, quitem b WHERE ((charass_target_type='SI') AND (charass_target_id=a.quitem_id) AND (a.quitem_quhead_id=pQuheadid) AND (b.quitem_quhead_id=_quheadid) AND (a.quitem_linenumber=b.quitem_linenumber) ); RETURN _quheadid; END; $_$; /DROP FUNCTION public.copyquote(integer, date); publicadminfalse8399212551691429copyso(integer, date)FUNCTIONCREATE FUNCTION copyso(psoheadid integer, pscheddate date) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _soheadid INTEGER; _soitemid INTEGER; _soitem RECORD; BEGIN SELECT NEXTVAL('cohead_cohead_id_seq') INTO _soheadid; INSERT INTO cohead ( cohead_id, cohead_number, cohead_cust_id, cohead_custponumber, cohead_type, cohead_orderdate, cohead_warehous_id, cohead_shipto_id, cohead_shiptoname, cohead_shiptoaddress1, cohead_shiptoaddress2, cohead_shiptoaddress3, cohead_shiptoaddress4, cohead_shiptoaddress5, cohead_salesrep_id, cohead_terms_id, cohead_fob, cohead_shipvia, cohead_shiptocity, cohead_shiptostate, cohead_shiptozipcode, cohead_freight, cohead_misc, cohead_imported, cohead_ordercomments, cohead_shipcomments, cohead_shiptophone, cohead_shipchrg_id, cohead_shipform_id, cohead_billtoname, cohead_billtoaddress1, cohead_billtoaddress2, cohead_billtoaddress3, cohead_billtocity, cohead_billtostate, cohead_billtozipcode, cohead_misc_accnt_id, cohead_misc_descrip, cohead_commission, cohead_miscdate, cohead_holdtype, cohead_packdate, cohead_prj_id, cohead_wasquote, cohead_lastupdated, cohead_shipcomplete, cohead_created, cohead_creator, cohead_quote_number, cohead_billtocountry, cohead_shiptocountry, cohead_curr_id, cohead_calcfreight, cohead_shipto_cntct_id, cohead_shipto_cntct_honorific, cohead_shipto_cntct_first_name, cohead_shipto_cntct_middle, cohead_shipto_cntct_last_name, cohead_shipto_cntct_suffix, cohead_shipto_cntct_phone, cohead_shipto_cntct_title, cohead_shipto_cntct_fax, cohead_shipto_cntct_email, cohead_billto_cntct_id, cohead_billto_cntct_honorific, cohead_billto_cntct_first_name, cohead_billto_cntct_middle, cohead_billto_cntct_last_name, cohead_billto_cntct_suffix, cohead_billto_cntct_phone, cohead_billto_cntct_title, cohead_billto_cntct_fax, cohead_billto_cntct_email, cohead_taxzone_id, cohead_taxtype_id, cohead_ophead_id, cohead_status, cohead_saletype_id, cohead_shipzone_id ) SELECT _soheadid, fetchSoNumber(), cohead_cust_id, cohead_custponumber, cohead_type, CURRENT_DATE, cohead_warehous_id, cohead_shipto_id, cohead_shiptoname, cohead_shiptoaddress1, cohead_shiptoaddress2, cohead_shiptoaddress3, cohead_shiptoaddress4, cohead_shiptoaddress5, cohead_salesrep_id, cohead_terms_id, cohead_fob, cohead_shipvia, cohead_shiptocity, cohead_shiptostate, cohead_shiptozipcode, cohead_freight, cohead_misc, FALSE, cohead_ordercomments, cohead_shipcomments, cohead_shiptophone, cohead_shipchrg_id, cohead_shipform_id, cohead_billtoname, cohead_billtoaddress1, cohead_billtoaddress2, cohead_billtoaddress3, cohead_billtocity, cohead_billtostate, cohead_billtozipcode, cohead_misc_accnt_id, cohead_misc_descrip, cohead_commission, cohead_miscdate, cohead_holdtype, COALESCE(pSchedDate, cohead_packdate), cohead_prj_id, FALSE, cohead_lastupdated, cohead_shipcomplete, NULL, getEffectiveXtUser(), NULL, cohead_billtocountry, cohead_shiptocountry, cohead_curr_id, cohead_calcfreight, cohead_shipto_cntct_id, cohead_shipto_cntct_honorific, cohead_shipto_cntct_first_name, cohead_shipto_cntct_middle, cohead_shipto_cntct_last_name, cohead_shipto_cntct_suffix, cohead_shipto_cntct_phone, cohead_shipto_cntct_title, cohead_shipto_cntct_fax, cohead_shipto_cntct_email, cohead_billto_cntct_id, cohead_billto_cntct_honorific, cohead_billto_cntct_first_name, cohead_billto_cntct_middle, cohead_billto_cntct_last_name, cohead_billto_cntct_suffix, cohead_billto_cntct_phone, cohead_billto_cntct_title, cohead_billto_cntct_fax, cohead_billto_cntct_email, cohead_taxzone_id, cohead_taxtype_id, cohead_ophead_id, cohead_status, cohead_saletype_id, cohead_shipzone_id FROM cohead WHERE (cohead_id=pSoheadid); FOR _soitem IN SELECT * FROM coitem JOIN itemsite ON (itemsite_id=coitem_itemsite_id) WHERE ( (coitem_cohead_id=pSoheadid) AND (coitem_status <> 'X') AND (coitem_subnumber = 0) ) LOOP SELECT NEXTVAL('coitem_coitem_id_seq') INTO _soitemid; -- insert characteristics first so they can be copied to associated supply order INSERT INTO charass (charass_target_type, charass_target_id, charass_char_id, charass_value) SELECT charass_target_type, _soitemid, charass_char_id, charass_value FROM charass WHERE ((charass_target_type='SI') AND (charass_target_id=_soitem.coitem_id)); INSERT INTO coitem ( coitem_id, coitem_cohead_id, coitem_linenumber, coitem_itemsite_id, coitem_status, coitem_scheddate, coitem_promdate, coitem_qtyord, coitem_unitcost, coitem_price, coitem_custprice, coitem_qtyshipped, coitem_order_id, coitem_memo, coitem_imported, coitem_qtyreturned, coitem_closedate, coitem_custpn, coitem_order_type, coitem_close_username, -- coitem_lastupdated, coitem_substitute_item_id, coitem_created, coitem_creator, coitem_prcost, coitem_qty_uom_id, coitem_qty_invuomratio, coitem_price_uom_id, coitem_price_invuomratio, coitem_warranty, coitem_cos_accnt_id, coitem_qtyreserved, coitem_subnumber, coitem_firm, coitem_taxtype_id ) VALUES ( _soitemid, _soheadid, _soitem.coitem_linenumber, _soitem.coitem_itemsite_id, 'O', COALESCE(pSchedDate, _soitem.coitem_scheddate), _soitem.coitem_promdate, _soitem.coitem_qtyord, stdCost(_soitem.itemsite_item_id), _soitem.coitem_price, _soitem.coitem_custprice, 0.0, -1, _soitem.coitem_memo, FALSE, 0.0, NULL, _soitem.coitem_custpn, _soitem.coitem_order_type, NULL, -- NULL, _soitem.coitem_substitute_item_id, NULL, getEffectiveXtUser(), _soitem.coitem_prcost, _soitem.coitem_qty_uom_id, _soitem.coitem_qty_invuomratio, _soitem.coitem_price_uom_id, _soitem.coitem_price_invuomratio, _soitem.coitem_warranty, _soitem.coitem_cos_accnt_id, 0.0, _soitem.coitem_subnumber, _soitem.coitem_firm, _soitem.coitem_taxtype_id ); END LOOP; RETURN _soheadid; END; $$; ADROP FUNCTION public.copyso(psoheadid integer, pscheddate date); publicadminfalse8399212551691430$copytodoitem(integer, date, integer)FUNCTIONCREATE FUNCTION copytodoitem(integer, date, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pparentid ALIAS FOR $1; _duedate DATE := COALESCE($2, CURRENT_DATE); pincdtid ALIAS FOR $3; _alarmid INTEGER; _todoitemid INTEGER; BEGIN INSERT INTO todoitem( todoitem_name, todoitem_description, todoitem_incdt_id, todoitem_creator_username, todoitem_status, todoitem_active, todoitem_due_date, todoitem_assigned_date, todoitem_seq, todoitem_notes, todoitem_crmacct_id, todoitem_ophead_id, todoitem_owner_username,todoitem_priority_id, todoitem_username, todoitem_recurring_todoitem_id ) SELECT todoitem_name, todoitem_description, CASE WHEN pincdtid IS NULL THEN todoitem_incdt_id ELSE pincdtid END, getEffectiveXtUser(), 'N', TRUE, _duedate, CASE WHEN (todoitem_username IS NOT NULL) THEN CURRENT_DATE ELSE NULL END, todoitem_seq, todoitem_notes, todoitem_crmacct_id, todoitem_ophead_id, todoitem_owner_username,todoitem_priority_id, todoitem_username, todoitem_recurring_todoitem_id FROM todoitem WHERE (todoitem_id=pparentid) RETURNING todoitem_id INTO _todoitemid; IF (_todoitemid IS NULL) THEN RETURN -10; END IF; SELECT saveAlarm(NULL, NULL, _duedate, CAST(alarm_time - DATE_TRUNC('day',alarm_time) AS TIME), alarm_time_offset, alarm_time_qualifier, alarm_event, alarm_event_recipient, alarm_email, alarm_email_recipient, alarm_sysmsg, alarm_sysmsg_recipient, 'TODO', _todoitemid, 'CHANGEONE') INTO _alarmid FROM alarm WHERE ((alarm_source='TODO') AND (alarm_source_id=pparentid)); IF (_alarmid < 0) THEN RETURN _alarmid; END IF; RETURN _todoitemid; END; $_$; ;DROP FUNCTION public.copytodoitem(integer, date, integer); publicadminfalse3992812551691431copyvoucher(integer, date)FUNCTION3 CREATE FUNCTION copyvoucher(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVoheadid ALIAS FOR $1; _voheadid INTEGER; _vonumber TEXT; _vodate DATE := COALESCE($2, CURRENT_DATE); _i RECORD; _l RECORD; _vodistid INTEGER; BEGIN SELECT * INTO _i FROM vohead WHERE(vohead_id=pVoheadid); IF(NOT FOUND) THEN RETURN -1; END IF; _vonumber := fetchVoNumber(); _voheadid := nextval('vohead_vohead_id_seq'); INSERT INTO vohead (vohead_id, vohead_number, vohead_pohead_id, vohead_posted, vohead_duedate, vohead_invcnumber, vohead_amount, vohead_docdate, vohead_1099, vohead_distdate, vohead_reference, vohead_terms_id, vohead_vend_id, vohead_curr_id, vohead_adjtaxtype_id, vohead_freighttaxtype_id, vohead_gldistdate, vohead_misc, vohead_taxzone_id, vohead_taxtype_id, vohead_notes, vohead_recurring_vohead_id ) VALUES(_voheadid, _vonumber, _i.vohead_pohead_id, false, determineDueDate(_i.vohead_terms_id, _vodate), _i.vohead_invcnumber, _i.vohead_amount, _vodate, _i.vohead_1099, _vodate, _i.vohead_reference, _i.vohead_terms_id, _i.vohead_vend_id, _i.vohead_curr_id, _i.vohead_adjtaxtype_id, _i.vohead_freighttaxtype_id, _vodate, _i.vohead_misc, _i.vohead_taxzone_id, _i.vohead_taxtype_id, _i.vohead_notes, _i.vohead_recurring_vohead_id); FOR _l IN SELECT * FROM vodist WHERE (vodist_vohead_id=pVoheadid) LOOP SELECT NEXTVAL('vodist_vodist_id_seq') INTO _vodistid; INSERT INTO vodist (vodist_id, vodist_poitem_id, vodist_vohead_id, vodist_costelem_id, vodist_accnt_id, vodist_amount, vodist_qty, vodist_expcat_id, vodist_tax_id, vodist_discountable, vodist_notes) VALUES (_vodistid, _l.vodist_poitem_id, _voheadid, _l.vodist_costelem_id, _l.vodist_accnt_id, _l.vodist_amount, _l.vodist_qty, _l.vodist_expcat_id, _l.vodist_tax_id, _l.vodist_discountable, _l.vodist_notes); END LOOP; RETURN _voheadid; END; $_$; 1DROP FUNCTION public.copyvoucher(integer, date); publicadminfalse39928125516914324correctporeceipt(integer, numeric, numeric, integer)FUNCTIONCREATE FUNCTION correctporeceipt(integer, numeric, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPorecvid ALIAS FOR $1; pQty ALIAS FOR $2; pFreight ALIAS FOR $3; pItemlocSeries ALIAS FOR $4; BEGIN RETURN correctReceipt('PO', $1, $2, $3, $4, NULL, NULL); END; $_$; KDROP FUNCTION public.correctporeceipt(integer, numeric, numeric, integer); publicadminfalse8399212551691433Ccorrectporeceipt(integer, numeric, numeric, integer, integer, date)FUNCTIONKCREATE FUNCTION correctporeceipt(integer, numeric, numeric, integer, integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN correctReceipt('PO', $1, $2, $3, $4, $5, $6); END; $_$; ZDROP FUNCTION public.correctporeceipt(integer, numeric, numeric, integer, integer, date); publicadminfalse83992125516914345correctproduction(integer, numeric, boolean, boolean)FUNCTIONCREATE FUNCTION correctproduction(integer, numeric, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'correctProduction(INTEGER, NUMERIC, BOOLEAN, BOOLEAN) has been deprecated. Use corrrectProduction(INTEGER, NUMERIC, BOOLEAN, INTEGER) or a package-specific version instead.'; RETURN correctProduction($1, $2, $3, 0, now()); END; $_$; LDROP FUNCTION public.correctproduction(integer, numeric, boolean, boolean); publicadminfalse3992812551691435>correctproduction(integer, numeric, boolean, boolean, integer)FUNCTION CREATE FUNCTION correctproduction(integer, numeric, boolean, boolean, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'correctProduction(INTEGER, NUMERIC, BOOLEAN, BOOLEAN, INTEGER) has been deprecated. Use corrrectProduction(INTEGER, NUMERIC, BOOLEAN, INTEGER) or a package-specific version instead.'; RETURN correctProduction($1, $2, $3, $5, now()); END; $_$; UDROP FUNCTION public.correctproduction(integer, numeric, boolean, boolean, integer); publicadminfalse8399212551691436Ocorrectproduction(integer, numeric, boolean, integer, timestamp with time zone)FUNCTIONCREATE FUNCTION correctproduction(integer, numeric, boolean, integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pQty ALIAS FOR $2; pBackflush ALIAS FOR $3; pItemlocSeries ALIAS FOR $4; pGlDistTS ALIAS FOR $5; BEGIN RETURN correctProduction($1, $2, $3, $4, $5, NULL); END; $_$; fDROP FUNCTION public.correctproduction(integer, numeric, boolean, integer, timestamp with time zone); publicadminfalse83992.12551691437Xcorrectproduction(integer, numeric, boolean, integer, timestamp with time zone, integer)FUNCTIONCREATE FUNCTION correctproduction(integer, numeric, boolean, integer, timestamp with time zone, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pQty ALIAS FOR $2; pBackflush ALIAS FOR $3; pItemlocSeries ALIAS FOR $4; pGlDistTS ALIAS FOR $5; pInvhistId ALIAS FOR $6; _invhistid INTEGER; _itemlocSeries INTEGER; _r RECORD; _parentWIPAccntid INTEGER; _parentQty NUMERIC; _qty NUMERIC; _wipPost NUMERIC; _sense TEXT; _status TEXT; _type TEXT; _qtyfxd NUMERIC := 0; BEGIN -- Qty is positive for Assembly W/O -- Qty is negative for Disassembly W/O IF (pQty = 0) THEN RETURN pItemlocseries; ELSIF (pQty > 0) THEN _sense := 'from'; ELSE _sense := 'to'; END IF; SELECT item_type, roundQty(item_fractional, pQty), wo_status INTO _type, _parentQty, _status FROM wo JOIN itemsite ON (itemsite_id=wo_itemsite_id) JOIN item ON (item_id=itemsite_item_id) WHERE (wo_id=pWoid); IF (_status != 'I') THEN RETURN -1; END IF; IF (_type = 'J') THEN RETURN -2; END IF; IF (pItemlocSeries = 0) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; ELSE _itemlocSeries := pItemlocSeries; END IF; -- Calculate the WIP to correct SELECT CASE WHEN (wo_cosmethod = 'D') THEN wo_postedvalue ELSE round(((wo_postedvalue - wo_wipvalue) / wo_qtyrcv * _parentQty), 2) END INTO _wipPost FROM wo WHERE (wo_id=pWoid); -- Post the inventory transaction SELECT postInvTrans( itemsite_id, 'RM', (_parentQty * -1.0), 'W/O', 'WO', formatwonumber(pWoid), '', ('Correct Receive Inventory ' || item_number || ' ' || _sense || ' Manufacturing'), costcat_asset_accnt_id, getPrjAccntId(wo_prj_id, costcat_wip_accnt_id), _itemlocSeries, pGlDistTS, (_wipPost * -1.0), -- only used when cost is average pInvhistId) INTO _invhistid FROM wo JOIN itemsite ON (itemsite_id=wo_itemsite_id) JOIN item ON (item_id=itemsite_item_id) JOIN costcat ON (costcat_id=itemsite_costcat_id) WHERE (wo_id=pWoid); -- Decrease this W/O's qty. received and increase its WIP value UPDATE wo SET wo_qtyrcv = (wo_qtyrcv - _parentQty), wo_wipvalue = (wo_wipvalue + (CASE WHEN(itemsite_costmethod IN ('A','J')) THEN _wipPost WHEN(itemsite_costmethod='S') THEN stdcost(itemsite_item_id) * _parentQty ELSE 0.0 END)) FROM itemsite WHERE ( (wo_itemsite_id=itemsite_id) AND (wo_id=pWoid) ); IF (pBackflush) THEN FOR _r IN SELECT item_id, item_fractional, itemsite_id, itemsite_warehous_id, itemsite_controlmethod, itemsite_loccntrl, itemsite_costmethod, wo_qtyrcv, wo_prj_id, womatl_id, womatl_qtyfxd, womatl_qtyper, womatl_scrap, womatl_issuemethod, womatl_uom_id FROM wo JOIN womatl ON (womatl_wo_id=wo_id AND womatl_issuemethod='L') JOIN itemsite ON (itemsite_id=womatl_itemsite_id) JOIN item ON (item_id=itemsite_item_id) WHERE (wo_id=pWoid) LOOP -- Cache the qty to be issued -- If going back to beginning, unissue fixed qty as well IF (_r.wo_qtyrcv - _parentQty > 0) THEN _qtyfxd := 0; ELSE _qtyfxd := _r.womatl_qtyfxd; END IF; _qty = roundQty(_r.item_fractional, (_qtyfxd + _parentQty * _r.womatl_qtyper) * (1 + _r.womatl_scrap)); IF (_qty > 0) THEN SELECT returnWoMaterial(_r.womatl_id, _qty, _itemlocSeries, pGlDistTS) INTO _itemlocSeries; END IF; END LOOP; -- BEGIN ROB Decrease this W/O's WIP value for custom costing UPDATE wo SET wo_wipvalue = (wo_wipvalue - (itemcost_stdcost * _parentQty)) FROM costelem, itemcost, costcat, itemsite, item WHERE ((wo_id=pWoid) AND (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (costelem_id = itemcost_costelem_id) AND (itemcost_item_id = itemsite_item_id) AND (itemsite_costcat_id = costcat_id) AND (costelem_exp_accnt_id) IS NOT NULL AND (costelem_sys = false)); -- ROB Distribute to G/L - create Cost Variance, debit WIP PERFORM insertGLTransaction( 'W/O', 'WO', formatwonumber(pWoid), ('Correct Post Other Cost ' || item_number || ' ' || _sense || ' Manufacturing'), getPrjAccntId(wo_prj_id, costelem_exp_accnt_id), getPrjAccntId(wo_prj_id, costcat_wip_accnt_id), _invhistid, ((itemcost_stdcost * _parentQty)* -1), CURRENT_DATE ) FROM wo, costelem, itemcost, costcat, itemsite, item WHERE ((wo_id=pWoid) AND (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (costelem_id = itemcost_costelem_id) AND (itemcost_item_id = itemsite_item_id) AND (itemsite_costcat_id = costcat_id) AND (costelem_exp_accnt_id) IS NOT NULL AND (costelem_sys = false)); --End ROB END IF; RETURN _itemlocSeries; END; $_$; oDROP FUNCTION public.correctproduction(integer, numeric, boolean, integer, timestamp with time zone, integer); publicadminfalse8399212551691439Acorrectreceipt(integer, numeric, numeric, integer, integer, date)FUNCTIONCREATE FUNCTION correctreceipt(integer, numeric, numeric, integer, integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ BEGIN RETURN correctReceipt($1, $2, $3, $4, $5, $6, NULL); END; $_$; XDROP FUNCTION public.correctreceipt(integer, numeric, numeric, integer, integer, date); publicadminfalse8399212551691440Jcorrectreceipt(integer, numeric, numeric, integer, integer, date, numeric)FUNCTION)CREATE FUNCTION correctreceipt(integer, numeric, numeric, integer, integer, date, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE precvid ALIAS FOR $1; pQty ALIAS FOR $2; pFreight ALIAS FOR $3; _itemlocSeries INTEGER := COALESCE($4, 0); _currid INTEGER := $5; pEffective ALIAS FOR $6; pRecvCost ALIAS FOR $7; _freight NUMERIC; _qty NUMERIC; _invhistid INTEGER; _o RECORD; _r RECORD; _recvcost NUMERIC; _tmp INTEGER; _pricevar NUMERIC := 0.00; _journalNumber INTEGER := fetchJournalNumber('GL-MISC'); BEGIN SELECT recv_qty, recv_date::DATE AS recv_date, recv_freight_curr_id, recv_orderitem_id, round(currToCurr(recv_freight_curr_id, COALESCE(_currid, recv_freight_curr_id), recv_freight, recv_date::DATE),2) AS recv_freight, recv_posted, recv_order_type, COALESCE(itemsite_id, -1) AS itemsiteid, itemsite_item_id, itemsite_costmethod, itemsite_controlmethod, (recv_splitfrom_id IS NOT NULL OR (SELECT (count(*) > 0) FROM recv WHERE (recv_splitfrom_id=recv_id))) AS split INTO _r FROM recv LEFT OUTER JOIN itemsite ON (recv_itemsite_id=itemsite_id) WHERE (recv_id=precvid); IF (NOT FOUND) THEN RETURN _itemlocSeries; END IF; IF (NOT _r.recv_order_type IN ('PO', 'RA', 'TO')) THEN RETURN -11; END IF; IF (_r.split) THEN RETURN -12; END IF; SELECT currToBase(orderitem_unitcost_curr_id, orderitem_unitcost, _r.recv_date::DATE) AS unitprice_base, orderhead_number, orderitem_linenumber, orderhead_curr_id AS freight_curr_id, orderitem_orderhead_type, orderitem_qty_invuomratio INTO _o FROM orderhead, orderitem WHERE ((orderhead_id=orderitem_orderhead_id) AND (orderhead_type=orderitem_orderhead_type) AND (orderitem_id=_r.recv_orderitem_id) AND (orderitem_orderhead_type=_r.recv_order_type)); IF (NOT FOUND) THEN RETURN _itemlocSeries; END IF; -- Default to _o.orderitem_unitcost if recv_purchcost is not supplied -- Note: this should never happen, a value is always supplied if (pRecvCost IS NULL) THEN _recvcost := _o.orderitem_unitcost; ELSE -- Note: if the receipt has already been posted, pRecvCost will always -- equal the original recv_purchcost (cannot be modified in GUI) _recvcost := pRecvCost; END IF; IF (_r.recv_posted) THEN _qty := (pQty - _r.recv_qty); IF (_qty <> 0) THEN IF (_r.itemsiteid = -1) THEN PERFORM insertGLTransaction( _journalNumber,'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Non-Inventory from ' || _r.recv_order_type, expcat_liability_accnt_id, getPrjAccntId(poitem_prj_id, expcat_exp_accnt_id), -1, ROUND(_o.unitprice_base * _qty, 2), pEffective ) FROM poitem, expcat WHERE ((poitem_expcat_id=expcat_id) AND (poitem_id=_r.recv_orderitem_id) AND (_o.orderitem_orderhead_type='PO')); UPDATE recv SET recv_qty=pQty, recv_value=(recv_value + ROUND(_o.unitprice_base * _qty, 2)), recv_date = pEffective WHERE (recv_id=precvid); ELSEIF (_r.itemsite_controlmethod = 'N') THEN PERFORM insertGLTransaction( _journalNumber,'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Non-Controlled Inventory from ' || _r.recv_order_type, costcat_liability_accnt_id, getPrjAccntId(poitem_prj_id, costcat_exp_accnt_id), -1, ROUND(_o.unitprice_base * _qty, 2), pEffective ) FROM poitem, itemsite, costcat WHERE ((poitem_itemsite_id=itemsite_id) AND (itemsite_costcat_id=costcat_id) AND (poitem_id=_r.recv_orderitem_id) AND (_o.orderitem_orderhead_type='PO')); UPDATE recv SET recv_qty=pQty, recv_value=(recv_value + ROUND(_o.unitprice_base * _qty, 2)), recv_date = pEffective WHERE (recv_id=precvid); ELSE IF (_itemlocSeries = 0 OR _itemlocSeries IS NULL) THEN _itemlocSeries := NEXTVAL('itemloc_series_seq'); END IF; SELECT postInvTrans( itemsite_id, 'RP', (_qty * _o.orderitem_qty_invuomratio), 'S/R', _r.recv_order_type, _o.orderhead_number::TEXT || '-' || _o.orderitem_linenumber::TEXT, '', 'Receive Inventory from ' || _r.recv_order_type, costcat_asset_accnt_id, costcat_liability_accnt_id, _itemlocSeries, pEffective, ROUND(_recvcost * _qty, 2) -- alway passing since it is ignored if not average costed item ) INTO _tmp FROM itemsite, costcat WHERE ((itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsiteid) ); IF(_r.itemsite_costmethod='A') THEN UPDATE recv SET recv_qty=pQty, recv_value=(recv_value + _recvcost * _qty * _o.orderitem_qty_invuomratio), recv_date = pEffective WHERE(recv_id=precvid); ELSE UPDATE recv SET recv_qty=pQty, recv_value=(recv_value + stdcost(_r.itemsite_item_id) * _qty * _o.orderitem_qty_invuomratio), recv_date = pEffective WHERE(recv_id=precvid); END IF; END IF; IF (_r.recv_order_type = 'PO') THEN UPDATE poitem SET poitem_qty_received=(poitem_qty_received + _qty) WHERE (poitem_id=_r.recv_orderitem_id); ELSIF (_r.recv_order_type = 'RA' AND fetchMetricBool('EnableReturnAuth')) THEN UPDATE raitem SET raitem_qtyreceived=(raitem_qtyreceived + _qty) WHERE (raitem_id=_r.recv_orderitem_id); ELSIF (_r.recv_order_type = 'TO' AND fetchMetricBool('MultiWhs')) THEN UPDATE toitem SET toitem_qty_received=(toitem_qty_received + _qty) WHERE (toitem_id=_r.recv_orderitem_id); END IF; END IF; IF (fetchMetricBool('RecordPPVonReceipt')) THEN -- If the 'Purchase Price Variance on Receipt' option is true _invhistid := _tmp; -- Find the difference in the purchase price value expected from the P/O and the value of the transaction SELECT (((currToBase(pohead_curr_id, COALESCE(recv_purchcost, poitem_unitprice), recv_date::DATE)) * _qty) - (invhist_value_after - invhist_value_before)) INTO _pricevar FROM invhist, recv, pohead, poitem WHERE ((recv_orderitem_id=poitem_id) AND (poitem_pohead_id=pohead_id) AND (recv_id=precvid) AND (invhist_id = _invhistid)); -- If difference exists then IF (_pricevar <> 0.00) THEN -- Record an additional GL Transaction for the purchase price variance SELECT insertGLTransaction( _journalNumber, 'S/R', _r.recv_order_type, _o.orderhead_number, 'Purchase price variance adjusted for P/O ' || _o.orderhead_number || ' for item ' || _o.orderitem_linenumber::TEXT, costcat_liability_accnt_id, getPrjAccntId(poitem_prj_id, costcat_purchprice_accnt_id), -1, _pricevar, pEffective, false ) INTO _tmp FROM itemsite, costcat, poitem, recv WHERE ((itemsite_costcat_id=costcat_id) AND (recv_id=precvid) AND (recv_orderitem_id=poitem_id) AND (itemsite_id=recv_itemsite_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Could not insert G/L transaction: no cost category found for itemsite_id %', _r.itemsite_id; ELSIF (_tmp < 0 AND _tmp != -3) THEN -- error but not 0-value transaction RETURN _tmp; ELSE -- Posting to trial balance is deferred to prevent locking INSERT INTO itemlocpost ( itemlocpost_glseq, itemlocpost_itemlocseries) VALUES ( _tmp, _itemlocSeries ); END IF; END IF; END IF; _freight := (pFreight - _r.recv_freight); IF (_freight <> 0) THEN IF (_r.itemsiteid = -1) THEN PERFORM insertGLTransaction( _journalNumber,'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Non-Inventory Freight from ' || _r.recv_order_type, expcat_liability_accnt_id, getPrjAccntId(poitem_prj_id, expcat_freight_accnt_id), -1, ROUND(currToBase(_currid, _freight, pEffective), 2), pEffective ) FROM poitem, expcat WHERE ((poitem_expcat_id=expcat_id) AND (poitem_id=_r.recv_orderitem_id) AND (_r.recv_order_type='PO')); ELSE PERFORM insertGLTransaction(_journalNumber,'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Non-Inventory Freight from ' || _r.recv_order_type, costcat_liability_accnt_id, costcat_freight_accnt_id, -1, round(currToBase(_currid, _freight, pEffective), 2), pEffective ) FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsiteid) ); END IF; IF (_r.recv_order_type = 'PO') THEN UPDATE poitem SET poitem_freight_received=(poitem_freight_received + currToCurr(_currid, _o.freight_curr_id, _freight, pEffective)) WHERE (poitem_id=_r.recv_orderitem_id); -- raitem does not track freight ELSEIF (_r.recv_order_type = 'TO' AND fetchMetricBool('MultiWhs')) THEN UPDATE toitem SET toitem_freight_received=(toitem_freight_received + currToCurr(_currid, _o.freight_curr_id, _freight, pEffective)) WHERE (toitem_id=_r.recv_orderitem_id); END IF; UPDATE recv SET recv_freight=currToCurr(_currid, recv_freight_curr_id, pFreight, pEffective), recv_date = pEffective WHERE (recv_id=precvid); END IF; ELSE -- Receipt not posted yet UPDATE recv SET recv_qty=pQty, recv_freight=pFreight, recv_purchcost=_recvcost WHERE recv_id=precvid; END IF; RETURN _itemlocSeries; END; $_$; aDROP FUNCTION public.correctreceipt(integer, numeric, numeric, integer, integer, date, numeric); publicadminfalse8399212551691442$cosbycustomervalue(integer, integer)FUNCTION3CREATE FUNCTION cosbycustomervalue(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; pPeriodid ALIAS FOR $2; _value NUMERIC; _startDate DATE; _endDate DATE; BEGIN _startDate := findPeriodStart(pPeriodid); _endDate := findPeriodEnd(pPeriodid); -- Returns value in base currency -- ToDo: is cohist_shipdate the right DATE to use? SELECT SUM(cohist_qtyshipped * currToBase(cohist_curr_id, cohist_unitcost, cohist_shipdate)) INTO _value FROM cohist WHERE ( (cohist_cust_id=pCustid) AND (cohist_invcdate BETWEEN _startDate AND _endDate) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; ;DROP FUNCTION public.cosbycustomervalue(integer, integer); publicadminfalse39928125516914434costsbycustomerbyitemsite(integer, integer, integer)FUNCTIONCREATE FUNCTION costsbycustomerbyitemsite(integer, integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pPeriodid ALIAS FOR $3; _value NUMERIC; _startDate DATE; _endDate DATE; BEGIN _startDate := findPeriodStart(pPeriodid); _endDate := findPeriodEnd(pPeriodid); -- Returns value in base currency -- ToDo: is cohist_shipdate the right DATE to use? SELECT SUM(cohist_qtyshipped * currToBase(cohist_curr_id, cohist_unitcost, cohist_shipdate)) INTO _value FROM cohist WHERE ( (cohist_itemsite_id<>pItemsiteid) AND (cohist_cust_id=pCustid) AND (cohist_invcdate BETWEEN _startDate AND _endDate) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; KDROP FUNCTION public.costsbycustomerbyitemsite(integer, integer, integer); publicadminfalse8399212551691444&costsbycustomervalue(integer, integer)FUNCTIONUCREATE FUNCTION costsbycustomervalue(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; pPeriodid ALIAS FOR $2; _value NUMERIC; _startDate DATE; _endDate DATE; BEGIN _startDate := findPeriodStart(pPeriodid); _endDate := findPeriodEnd(pPeriodid); -- Returns value in base currency -- ToDo: is cohist_shipdate the right DATE to use? SELECT SUM(cohist_qtyshipped * currToBase(cohist_curr_id, cohist_unitcost, cohist_shipdate)) INTO _value FROM cohist WHERE ( (cohist_itemsite_id<>-1) AND (cohist_cust_id=pCustid) AND (cohist_invcdate BETWEEN _startDate AND _endDate) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; =DROP FUNCTION public.costsbycustomervalue(integer, integer); publicadminfalse8399212551691445/costsbycustomervalue(integer, integer, integer)FUNCTIONCREATE FUNCTION costsbycustomervalue(integer, integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; pPeriodid ALIAS FOR $2; pProdcatid ALIAS FOR $3; _value NUMERIC; _startDate DATE; _endDate DATE; BEGIN _startDate := findPeriodStart(pPeriodid); _endDate := findPeriodEnd(pPeriodid); -- Returns value in base currency -- ToDo: is cohist_shipdate the right DATE to use? SELECT SUM(cohist_qtyshipped * currToBase(cohist_curr_id, cohist_unitcost, cohist_shipdate)) INTO _value FROM cohist, itemsite, item WHERE ( (cohist_cust_id=pCustid) AND (cohist_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_prodcat_id=pProdcatid) AND (cohist_invcdate BETWEEN _startDate AND _endDate) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; FDROP FUNCTION public.costsbycustomervalue(integer, integer, integer); publicadminfalse8399212551691446,costsbycustomervalue(integer, integer, text)FUNCTIONCREATE FUNCTION costsbycustomervalue(integer, integer, text) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; pPeriodid ALIAS FOR $2; pProdcat ALIAS FOR $3; _value NUMERIC; _startDate DATE; _endDate DATE; BEGIN _startDate := findPeriodStart(pPeriodid); _endDate := findPeriodEnd(pPeriodid); -- Returns value in base currency -- ToDo: is cohist_shipdate the right date to use? SELECT SUM(cohist_qtyshipped * currToBase(cohist_curr_id, cohist_unitcost, cohist_shipdate)) INTO _value FROM cohist, itemsite, item, prodcat WHERE ( (cohist_cust_id=pCustid) AND (cohist_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_prodcat_id=prodcat_id) AND (prodcat_code ~ pProdcat) AND (cohist_invcdate BETWEEN _startDate AND _endDate) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; CDROP FUNCTION public.costsbycustomervalue(integer, integer, text); publicadminfalse8399212551691447"createaccountingperiod(date, date)FUNCTIONuCREATE FUNCTION createaccountingperiod(date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStartDate ALIAS FOR $1; pEndDate ALIAS FOR $2; BEGIN RETURN createAccountingPeriod(pStartDate, pEndDate, NULL, NULL); END; $_$; 9DROP FUNCTION public.createaccountingperiod(date, date); publicadminfalse83992125516914484createaccountingperiod(date, date, integer, integer)FUNCTIONm CREATE FUNCTION createaccountingperiod(date, date, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStartDate ALIAS FOR $1; pEndDate ALIAS FOR $2; pYearPeriodId ALIAS FOR $3; pQuarter ALIAS FOR $4; _periodid INTEGER; _check INTEGER; _r RECORD; _initial BOOLEAN; _number INTEGER; BEGIN -- Make that the passed start date doesn't fall into any existing period SELECT period_id INTO _check FROM period WHERE (pStartDate BETWEEN period_start AND period_end); IF (FOUND) THEN RETURN -1; END IF; -- Make that the passed end date doesn't fall into any existing period SELECT period_id INTO _check FROM period WHERE (pEndDate BETWEEN period_start AND period_end); IF (FOUND) THEN RETURN -2; END IF; -- Make that the passed start and end dates don't enclose an existing period SELECT period_id INTO _check FROM period WHERE ( (period_start >= pStartDate) AND (period_end <= pEndDate) ); IF (FOUND) THEN RETURN -3; END IF; -- Make sure period is inside fiscal year SELECT yearperiod_id INTO _check FROM yearperiod WHERE ((yearperiod_id=pYearPeriodId) AND (pStartDate>=yearperiod_start) AND (pEndDate<=yearperiod_end)); IF NOT (FOUND) THEN RETURN -4; END IF; -- Determine if this is the initial accounting period SELECT CASE WHEN(count(*) > 0) THEN FALSE ELSE TRUE END INTO _initial FROM period; -- Determine the next number SELECT COALESCE(MAX(period_number),0) + 1 INTO _number FROM period WHERE (period_yearperiod_id=pYearPeriodId); -- Create the new accounting period SELECT NEXTVAL('period_period_id_seq') INTO _periodid; INSERT INTO period ( period_id, period_start, period_end, period_closed, period_freeze, period_initial, period_number, period_yearperiod_id, period_quarter ) VALUES ( _periodid, pStartDate, pEndDate, FALSE, FALSE, _initial, _number, pYearPeriodId, pQuarter ); -- Post any unposted G/L Transactions into the new period FOR _r IN SELECT DISTINCT gltrans_sequence FROM gltrans WHERE ( (NOT gltrans_posted) AND (gltrans_date BETWEEN pStartDate AND pEndDate) ) LOOP PERFORM postIntoTrialBalance(_r.gltrans_sequence); END LOOP; RETURN _periodid; END; $_$; KDROP FUNCTION public.createaccountingperiod(date, date, integer, integer); publicadminfalse8399212551691449&createaccountingyearperiod(date, date)FUNCTIONCREATE FUNCTION createaccountingyearperiod(date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStartDate ALIAS FOR $1; pEndDate ALIAS FOR $2; _yearperiodid INTEGER; _check INTEGER; _checkBool BOOLEAN; _r RECORD; _initial BOOLEAN; BEGIN -- Make that the passed start date doesn't fall into any existing yearperiod SELECT yearperiod_id INTO _check FROM yearperiod WHERE (pStartDate BETWEEN yearperiod_start AND yearperiod_end); IF (FOUND) THEN RETURN -1; END IF; -- Make that the passed end date doesn't fall into any existing yearperiod SELECT yearperiod_id INTO _check FROM yearperiod WHERE (pEndDate BETWEEN yearperiod_start AND yearperiod_end); IF (FOUND) THEN RETURN -2; END IF; -- Make that the passed start and end dates don't enclose an existing yearperiod SELECT yearperiod_id INTO _check FROM yearperiod WHERE ( (yearperiod_start >= pStartDate) AND (yearperiod_end <= pEndDate) ); IF (FOUND) THEN RETURN -3; END IF; -- Make sure that the passed start is prior to the end date SELECT (pStartDate > pEndDate) INTO _checkBool; IF (_checkBool) THEN RETURN -5; END IF; -- Determine if this is the initial accounting yearperiod SELECT CASE WHEN(count(*) > 0) THEN FALSE ELSE TRUE END INTO _initial FROM yearperiod; -- Create the new accounting yearperiod SELECT NEXTVAL('yearperiod_yearperiod_id_seq') INTO _yearperiodid; INSERT INTO yearperiod ( yearperiod_id, yearperiod_start, yearperiod_end, yearperiod_closed ) VALUES ( _yearperiodid, pStartDate, pEndDate, FALSE ); RETURN _yearperiodid; END; $_$; =DROP FUNCTION public.createaccountingyearperiod(date, date); publicadminfalse83992312551691450createapchecks(integer, date)FUNCTION[CREATE FUNCTION createapchecks(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'createAPChecks() is deprecated - use createChecks() instead'; RETURN createChecks($1, $2); END; $_$; 4DROP FUNCTION public.createapchecks(integer, date); publicadminfalse8399212551691451<createapcreditmemo(integer, text, text, date, numeric, text)FUNCTIONCREATE FUNCTION createapcreditmemo(integer, text, text, date, numeric, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pDocNumber ALIAS FOR $2; pPoNumber ALIAS FOR $3; pDocDate ALIAS FOR $4; pAmount ALIAS FOR $5; pNotes ALIAS FOR $6; _result INTEGER; BEGIN SELECT createAPCreditMemo( pVendid, fetchJournalNumber('AP-MISC'), pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, -1, pDocDate, -1, baseCurrId() ) INTO _result; RETURN _result; END; $_$; SDROP FUNCTION public.createapcreditmemo(integer, text, text, date, numeric, text); publicadminfalse8399212551691452Ecreateapcreditmemo(integer, integer, text, text, date, numeric, text)FUNCTION\CREATE FUNCTION createapcreditmemo(integer, integer, text, text, date, numeric, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pDocNumber ALIAS FOR $3; pPoNumber ALIAS FOR $4; pDocDate ALIAS FOR $5; pAmount ALIAS FOR $6; pNotes ALIAS FOR $7; BEGIN RETURN createAPCreditMemo(pVendid, pJournalNumber, pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, -1, pDocDate, -1, baseCurrId() ); END; $_$; \DROP FUNCTION public.createapcreditmemo(integer, integer, text, text, date, numeric, text); publicadminfalse8399212551691453Ecreateapcreditmemo(integer, text, text, date, numeric, text, integer)FUNCTIONCREATE FUNCTION createapcreditmemo(integer, text, text, date, numeric, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pDocNumber ALIAS FOR $2; pPoNumber ALIAS FOR $3; pDocDate ALIAS FOR $4; pAmount ALIAS FOR $5; pNotes ALIAS FOR $6; pAccntid ALIAS FOR $7; _result INTEGER; BEGIN SELECT createAPCreditMemo( pVendid, fetchJournalNumber('AP-MISC'), pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDocDate, -1, baseCurrId() ) INTO _result; RETURN _result; END; $_$; \DROP FUNCTION public.createapcreditmemo(integer, text, text, date, numeric, text, integer); publicadminfalse3992812551691454Ncreateapcreditmemo(integer, integer, text, text, date, numeric, text, integer)FUNCTIONCREATE FUNCTION createapcreditmemo(integer, integer, text, text, date, numeric, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pDocNumber ALIAS FOR $3; pPoNumber ALIAS FOR $4; pDocDate ALIAS FOR $5; pAmount ALIAS FOR $6; pNotes ALIAS FOR $7; pAccntid ALIAS FOR $8; BEGIN RETURN createAPCreditMemo( pVendid, pJournalNumber, pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDocDate, -1, baseCurrId() ); END; $_$; eDROP FUNCTION public.createapcreditmemo(integer, integer, text, text, date, numeric, text, integer); publicadminfalse8399212551691455Tcreateapcreditmemo(integer, text, text, date, numeric, text, integer, date, integer)FUNCTIONCREATE FUNCTION createapcreditmemo(integer, text, text, date, numeric, text, integer, date, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pDocNumber ALIAS FOR $2; pPoNumber ALIAS FOR $3; pDocDate ALIAS FOR $4; pAmount ALIAS FOR $5; pNotes ALIAS FOR $6; pAccntid ALIAS FOR $7; pDueDate ALIAS FOR $8; pTermsid ALIAS FOR $9; _result INTEGER; BEGIN SELECT createAPCreditMemo( pVendid, fetchJournalNumber('AP-MISC'), pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDueDate, pTermsid, baseCurrId() ) INTO _result; RETURN _result; END; $_$; kDROP FUNCTION public.createapcreditmemo(integer, text, text, date, numeric, text, integer, date, integer); publicadminfalse8399212551691456]createapcreditmemo(integer, integer, text, text, date, numeric, text, integer, date, integer)FUNCTIONCREATE FUNCTION createapcreditmemo(integer, integer, text, text, date, numeric, text, integer, date, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pDocNumber ALIAS FOR $3; pPoNumber ALIAS FOR $4; pDocDate ALIAS FOR $5; pAmount ALIAS FOR $6; pNotes ALIAS FOR $7; pAccntid ALIAS FOR $8; pDueDate ALIAS FOR $9; pTermsid ALIAS FOR $10; BEGIN RETURN createAPCreditMemo( pVendid, pJournalNumber, pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDueDate, pTermsid, baseCurrId() ); END; $_$; tDROP FUNCTION public.createapcreditmemo(integer, integer, text, text, date, numeric, text, integer, date, integer); publicadminfalse3992812551691457fcreateapcreditmemo(integer, integer, text, text, date, numeric, text, integer, date, integer, integer)FUNCTIONCREATE FUNCTION createapcreditmemo(integer, integer, text, text, date, numeric, text, integer, date, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pDocNumber ALIAS FOR $3; pPoNumber ALIAS FOR $4; pDocDate ALIAS FOR $5; pAmount ALIAS FOR $6; pNotes ALIAS FOR $7; pAccntid ALIAS FOR $8; pDueDate ALIAS FOR $9; pTermsid ALIAS FOR $10; pCurrId ALIAS FOR $11; BEGIN RETURN createAPCreditMemo( NULL, pVendid, pJournalNumber, pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDueDate, pTermsid, pCurrId ); END; $_$; }DROP FUNCTION public.createapcreditmemo(integer, integer, text, text, date, numeric, text, integer, date, integer, integer); publicadminfalse8399212551691458ocreateapcreditmemo(integer, integer, integer, text, text, date, numeric, text, integer, date, integer, integer)FUNCTION CREATE FUNCTION createapcreditmemo(integer, integer, integer, text, text, date, numeric, text, integer, date, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pId ALIAS FOR $1; pVendid ALIAS FOR $2; pJournalNumber ALIAS FOR $3; pDocNumber ALIAS FOR $4; pPoNumber ALIAS FOR $5; pDocDate ALIAS FOR $6; pAmount ALIAS FOR $7; pNotes ALIAS FOR $8; pAccntid ALIAS FOR $9; pDueDate ALIAS FOR $10; pTermsid ALIAS FOR $11; pCurrId ALIAS FOR $12; _vendName TEXT; _apAccntid INTEGER; _prepaidAccntid INTEGER; _accntid INTEGER; _glSequence INTEGER; _journalNumber INTEGER; _apopenid INTEGER; _baseAmount NUMERIC; _taxBaseValue NUMERIC; _test INTEGER; BEGIN _apopenid := pId; SELECT findAPAccount(pVendid) INTO _apAccntid; SELECT findAPPrepaidAccount(pVendid) INTO _prepaidAccntid; SELECT vend_name INTO _vendName FROM vendinfo WHERE (vend_id=pVendid); _accntid := pAccntid; PERFORM accnt_id FROM accnt WHERE (accnt_id=_accntid); IF (FOUND) THEN _prepaidAccntid := _accntid; ELSE _accntid := -1; END IF; IF(pJournalNumber IS NULL) THEN SELECT fetchJournalNumber('AP-MISC') INTO _journalNumber; ELSE _journalNumber := pJournalNumber; END IF; SELECT fetchGLSequence() INTO _glSequence; IF (_apopenid IS NOT NULL) THEN UPDATE apopen SET apopen_username=getEffectiveXtUser(), apopen_journalnumber=_journalNumber, apopen_vend_id=pVendid, apopen_docnumber=pDocNumber, apopen_doctype='C', apopen_ponumber=pPoNumber, apopen_docdate=pDocDate, apopen_duedate=pDueDate, apopen_distdate=pDocDate, apopen_terms_id=pTermsid, apopen_amount=pAmount, apopen_paid=0, apopen_open=(pAmount <> 0), apopen_notes=pNotes, apopen_accnt_id=_accntid, apopen_curr_id=pCurrId, apopen_closedate=CASE WHEN (pAmount = 0) THEN pDocdate END WHERE apopen_id = _apopenid; ELSE SELECT NEXTVAL('apopen_apopen_id_seq') INTO _apopenid; INSERT INTO apopen ( apopen_id, apopen_username, apopen_journalnumber, apopen_vend_id, apopen_docnumber, apopen_doctype, apopen_ponumber, apopen_docdate, apopen_duedate, apopen_distdate, apopen_terms_id, apopen_amount, apopen_paid, apopen_open, apopen_notes, apopen_accnt_id, apopen_curr_id, apopen_closedate ) VALUES ( _apopenid, getEffectiveXtUser(), _journalNumber, pVendid, pDocNumber, 'C', pPoNumber, pDocDate, pDueDate, pDocDate, pTermsid, pAmount, 0, (pAmount <> 0), pNotes, _accntid, pCurrId, CASE WHEN (pAmount = 0) THEN pDocDate END ); END IF; _baseAmount := round(currToBase(pCurrId, pAmount, pDocDate), 2); -- Debit the A/P account for the full amount SELECT insertIntoGLSeries ( _glSequence, 'A/P', 'CM', pDocNumber, _apAccntid, (_baseAmount * -1), pDocDate, (_vendName || ' ' || pNotes) ) INTO _test; -- Credit the Tax account for the tax amount _taxBaseValue := addTaxToGLSeries(_glSequence, 'A/P', 'CM', pDocNumber, pCurrId, pDocDate, pDocDate, 'apopentax', _apopenid, _vendName); UPDATE apopentax SET taxhist_journalnumber = _journalNumber WHERE taxhist_parent_id=_apopenid; -- Credit the Prepaid account for the basis amount SELECT insertIntoGLSeries ( _glSequence, 'A/P', 'CM', pDocNumber, _prepaidAccntid, (_baseAmount - _taxBaseValue), pDocDate, (_vendName || ' ' || pNotes) ) INTO _test; -- Commit the GLSeries; SELECT postGLSeries(_glSequence, _journalNumber) INTO _test; IF (_test < 0) THEN DELETE FROM apopen WHERE (apopen_id=_apopenid); PERFORM deleteGLSeries(_glSequence); RAISE EXCEPTION 'postGLSeries commit failed with %', _test; END IF; RETURN pJournalNumber; END; $_$; DROP FUNCTION public.createapcreditmemo(integer, integer, integer, text, text, date, numeric, text, integer, date, integer, integer); publicadminfalse8399212551691459Acreateapcreditmemoapplication(integer, integer, numeric, integer)FUNCTIONCREATE FUNCTION createapcreditmemoapplication(psourceapopenid integer, ptargetapopenid integer, pamount numeric, pcurrid integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _apCreditApplyId INTEGER; BEGIN IF (pAmount > (SELECT currToCurr(apopen_curr_id, pCurrId, ROUND(apopen_amount - apopen_paid, 2), apopen_docdate) FROM apopen WHERE (apopen_id=pTargetApopenId))) THEN RETURN -1; END IF; IF (pAmount > (SELECT ROUND((apopen_amount - apopen_paid) - COALESCE(SUM(currToCurr(apcreditapply_curr_id, apopen_curr_id, apcreditapply_amount, apopen_docdate)), 0), 2) FROM apopen LEFT OUTER JOIN apcreditapply ON ((apcreditapply_source_apopen_id=apopen_id) AND (apcreditapply_target_apopen_id<>pTargetApopenId)) WHERE (apopen_id=pSourceApopenId) GROUP BY apopen_amount, apopen_paid)) THEN RETURN -2; END IF; SELECT apcreditapply_id INTO _apCreditApplyId FROM apcreditapply WHERE ((apcreditapply_source_apopen_id=pSourceApopenId) AND (apcreditapply_target_apopen_id=pTargetApopenId)); IF (FOUND) THEN UPDATE apcreditapply SET apcreditapply_amount=pAmount, apcreditapply_curr_id=pCurrId WHERE (apcreditapply_id=_apCreditApplyId); ELSE INSERT INTO apcreditapply ( apcreditapply_source_apopen_id, apcreditapply_target_apopen_id, apcreditapply_amount, apcreditapply_curr_id ) VALUES ( pSourceApopenId, pTargetApopenId, pAmount, pCurrId) RETURNING apcreditapply_id INTO _apCreditApplyId; END IF; RETURN _apCreditApplyId; END; $$; DROP FUNCTION public.createapcreditmemoapplication(psourceapopenid integer, ptargetapopenid integer, pamount numeric, pcurrid integer); publicadminfalse83992612551691460;createapdebitmemo(integer, text, text, date, numeric, text)FUNCTIONCREATE FUNCTION createapdebitmemo(integer, text, text, date, numeric, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pDocNumber ALIAS FOR $2; pPoNumber ALIAS FOR $3; pDocDate ALIAS FOR $4; pAmount ALIAS FOR $5; pNotes ALIAS FOR $6; _result INTEGER; BEGIN SELECT createAPDebitMemo( pVendid, fetchJournalNumber('AP-MISC'), pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, -1, pDocDate, -1, baseCurrId() ) INTO _result; RETURN _result; END; $_$; RDROP FUNCTION public.createapdebitmemo(integer, text, text, date, numeric, text); publicadminfalse3992812551691461Dcreateapdebitmemo(integer, integer, text, text, date, numeric, text)FUNCTION\CREATE FUNCTION createapdebitmemo(integer, integer, text, text, date, numeric, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pDocNumber ALIAS FOR $3; pPoNumber ALIAS FOR $4; pDocDate ALIAS FOR $5; pAmount ALIAS FOR $6; pNotes ALIAS FOR $7; BEGIN RETURN createAPDebitMemo(pVendid, pJournalNumber, pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, -1, pDocDate, -1, baseCurrId() ); END; $_$; [DROP FUNCTION public.createapdebitmemo(integer, integer, text, text, date, numeric, text); publicadminfalse8399212551691462Dcreateapdebitmemo(integer, text, text, date, numeric, text, integer)FUNCTIONCREATE FUNCTION createapdebitmemo(integer, text, text, date, numeric, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pDocNumber ALIAS FOR $2; pPoNumber ALIAS FOR $3; pDocDate ALIAS FOR $4; pAmount ALIAS FOR $5; pNotes ALIAS FOR $6; pAccntid ALIAS FOR $7; _result INTEGER; BEGIN SELECT createAPDebitMemo( pVendid, fetchJournalNumber('AP-MISC'), pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDocDate, -1, baseCurrId() ) INTO _result; RETURN _result; END; $_$; [DROP FUNCTION public.createapdebitmemo(integer, text, text, date, numeric, text, integer); publicadminfalse8399212551691463Mcreateapdebitmemo(integer, integer, text, text, date, numeric, text, integer)FUNCTIONCREATE FUNCTION createapdebitmemo(integer, integer, text, text, date, numeric, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pDocNumber ALIAS FOR $3; pPoNumber ALIAS FOR $4; pDocDate ALIAS FOR $5; pAmount ALIAS FOR $6; pNotes ALIAS FOR $7; pAccntid ALIAS FOR $8; BEGIN RETURN createAPDebitMemo( pVendid, pJournalNumber, pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDocDate, -1, baseCurrId() ); END; $_$; dDROP FUNCTION public.createapdebitmemo(integer, integer, text, text, date, numeric, text, integer); publicadminfalse8399212551691464Screateapdebitmemo(integer, text, text, date, numeric, text, integer, date, integer)FUNCTIONCREATE FUNCTION createapdebitmemo(integer, text, text, date, numeric, text, integer, date, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pDocNumber ALIAS FOR $2; pPoNumber ALIAS FOR $3; pDocDate ALIAS FOR $4; pAmount ALIAS FOR $5; pNotes ALIAS FOR $6; pAccntid ALIAS FOR $7; pDueDate ALIAS FOR $8; pTermsid ALIAS FOR $9; _result INTEGER; BEGIN SELECT createAPDebitMemo( pVendid, fetchJournalNumber('AP-MISC'), pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDueDate, pTermsid, baseCurrId() ) INTO _result; RETURN _result; END; $_$; jDROP FUNCTION public.createapdebitmemo(integer, text, text, date, numeric, text, integer, date, integer); publicadminfalse3992812551691465\createapdebitmemo(integer, integer, text, text, date, numeric, text, integer, date, integer)FUNCTIONCREATE FUNCTION createapdebitmemo(integer, integer, text, text, date, numeric, text, integer, date, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pDocNumber ALIAS FOR $3; pPoNumber ALIAS FOR $4; pDocDate ALIAS FOR $5; pAmount ALIAS FOR $6; pNotes ALIAS FOR $7; pAccntid ALIAS FOR $8; pDueDate ALIAS FOR $9; pTermsid ALIAS FOR $10; BEGIN RETURN createAPDebitMemo(pVendid, pJournalNumber, pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDueDate, pTermsid, baseCurrId() ); END; $_$; sDROP FUNCTION public.createapdebitmemo(integer, integer, text, text, date, numeric, text, integer, date, integer); publicadminfalse8399212551691466ecreateapdebitmemo(integer, integer, text, text, date, numeric, text, integer, date, integer, integer)FUNCTIONCREATE FUNCTION createapdebitmemo(integer, integer, text, text, date, numeric, text, integer, date, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pDocNumber ALIAS FOR $3; pPoNumber ALIAS FOR $4; pDocDate ALIAS FOR $5; pAmount ALIAS FOR $6; pNotes ALIAS FOR $7; pAccntid ALIAS FOR $8; pDueDate ALIAS FOR $9; pTermsid ALIAS FOR $10; pCurrId ALIAS FOR $11; BEGIN RETURN createAPDebitMemo(NULL, pVendid, pJournalNumber, pDocNumber, pPoNumber, pDocDate, pAmount, pNotes, pAccntid, pDueDate, pTermsid, pCurrId ); END; $_$; |DROP FUNCTION public.createapdebitmemo(integer, integer, text, text, date, numeric, text, integer, date, integer, integer); publicadminfalse8399212551691467ncreateapdebitmemo(integer, integer, integer, text, text, date, numeric, text, integer, date, integer, integer)FUNCTIONWCREATE FUNCTION createapdebitmemo(integer, integer, integer, text, text, date, numeric, text, integer, date, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pId ALIAS FOR $1; pVendid ALIAS FOR $2; pJournalNumber ALIAS FOR $3; pDocNumber ALIAS FOR $4; pPoNumber ALIAS FOR $5; pDocDate ALIAS FOR $6; pAmount ALIAS FOR $7; pNotes ALIAS FOR $8; pAccntid ALIAS FOR $9; pDueDate ALIAS FOR $10; pTermsid ALIAS FOR $11; pCurrId ALIAS FOR $12; _vendName TEXT; _apAccntid INTEGER; _prepaidAccntid INTEGER; _accntid INTEGER; _glSequence INTEGER; _journalNumber INTEGER; _apopenid INTEGER; _baseAmount NUMERIC; _taxBaseValue NUMERIC; _test INTEGER; BEGIN _apopenid := pId; SELECT findAPAccount(pVendid) INTO _apAccntid; SELECT findAPPrepaidAccount(pVendid) INTO _prepaidAccntid; SELECT vend_name INTO _vendName FROM vendinfo WHERE (vend_id=pVendid); _accntid := pAccntid; PERFORM accnt_id FROM accnt WHERE (accnt_id=_accntid); IF (FOUND) THEN _prepaidAccntid := _accntid; ELSE _accntid := -1; END IF; IF(pJournalNumber IS NULL) THEN SELECT fetchJournalNumber('AP-MISC') INTO _journalNumber; ELSE _journalNumber := pJournalNumber; END IF; SELECT fetchGLSequence() INTO _glSequence; IF (_apopenid IS NOT NULL) THEN UPDATE apopen SET apopen_username=getEffectiveXtUser(), apopen_journalnumber=_journalNumber, apopen_vend_id=pVendid, apopen_docnumber=pDocNumber, apopen_doctype='D', apopen_ponumber=pPoNumber, apopen_docdate=pDocDate, apopen_duedate=pDueDate, apopen_distdate=pDocDate, apopen_terms_id=pTermsid, apopen_amount=pAmount, apopen_paid=0, apopen_open=(pAmount <> 0), apopen_notes=pNotes, apopen_accnt_id=_accntid, apopen_curr_id=pCurrId, apopen_closedate=CASE WHEN (pAmount = 0) THEN pDocdate END WHERE apopen_id = _apopenid; ELSE SELECT NEXTVAL('apopen_apopen_id_seq') INTO _apopenid; INSERT INTO apopen ( apopen_id, apopen_username, apopen_journalnumber, apopen_vend_id, apopen_docnumber, apopen_doctype, apopen_ponumber, apopen_docdate, apopen_duedate, apopen_distdate, apopen_terms_id, apopen_amount, apopen_paid, apopen_discountable_amount, apopen_open, apopen_notes, apopen_accnt_id, apopen_curr_id, apopen_closedate ) VALUES ( _apopenid, getEffectiveXtUser(), _journalNumber, pVendid, pDocNumber, 'D', pPoNumber, pDocDate, pDueDate, pDocDate, pTermsid, pAmount, 0, 0, (pAmount <> 0), pNotes, _accntid, pCurrId, CASE WHEN (pAmount = 0) THEN pDocDate END ); END IF; _baseAmount := round(currToBase(pCurrId, pAmount, pDocDate), 2); -- Credit the A/P account for the full amount SELECT insertIntoGLSeries ( _glSequence, 'A/P', 'DM', pDocNumber, _apAccntid, _baseAmount, pDocDate, (_vendName || ' ' || pNotes) ) INTO _test; -- Debit the Tax account for the tax amount _taxBaseValue := addTaxToGLSeries(_glSequence, 'A/P', 'DM', pDocNumber, pCurrId, pDocDate, pDocDate, 'apopentax', _apopenid, _vendName); UPDATE apopentax SET taxhist_journalnumber = _journalNumber WHERE taxhist_parent_id=_apopenid; -- Debit the Prepaid account for the basis amount -- Note, the taxBaseValue is negative so it is added SELECT insertIntoGLSeries ( _glSequence, 'A/P', 'DM', pDocNumber, _prepaidAccntid, (_baseAmount + _taxBaseValue) * -1, pDocDate, (_vendName || ' ' || pNotes) ) INTO _test; -- Commit the GLSeries; SELECT postGLSeries(_glSequence, _journalNumber) INTO _test; IF (_test < 0) THEN DELETE FROM apopen WHERE (apopen_id=_apopenid); PERFORM deleteGLSeries(_glSequence); RAISE EXCEPTION 'postGLSeries commit failed with %', _test; END IF; RETURN _apopenid; END; $_$; DROP FUNCTION public.createapdebitmemo(integer, integer, integer, text, text, date, numeric, text, integer, date, integer, integer); publicadminfalse83992812551691468"createapdiscount(integer, numeric)FUNCTIONCREATE FUNCTION createapdiscount(integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenid ALIAS FOR $1; pAmount ALIAS FOR $2; _result INTEGER; BEGIN SELECT createAPDiscount(pApopenid, fetchJournalNumber('AP-MISC'), pAmount) INTO _result; RETURN _result; END; $_$; 9DROP FUNCTION public.createapdiscount(integer, numeric); publicadminfalse8399212551691469+createapdiscount(integer, integer, numeric)FUNCTION CREATE FUNCTION createapdiscount(integer, integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pAmount ALIAS FOR $3; _ap RECORD; _sequence INTEGER; _apopenid INTEGER; _apcreditapplyid INTEGER; _result INTEGER; _crAccnt INTEGER; _dbAccnt INTEGER; _reference TEXT; _discountDateAmt NUMERIC; BEGIN SELECT NEXTVAL('apopen_apopen_id_seq') INTO _apopenid; SELECT * INTO _ap FROM apopen WHERE (apopen_id = pApopenid); IF (NOT FOUND) THEN RETURN -1; END IF; _crAccnt := findAPDiscountAccount(_ap.apopen_vend_id); _dbAccnt := findAPAccount(_ap.apopen_vend_id); _reference := ('Discount for ' || _ap.apopen_doctype || ' ' || _ap.apopen_docnumber); SELECT fetchGLSequence() INTO _sequence; _discountDateAmt = round(pAmount / _ap.apopen_curr_rate, 2); PERFORM insertIntoGLSeries( _sequence, 'A/P', 'DS', _ap.apopen_docnumber, _dbAccnt, _discountDateAmt * -1, CURRENT_DATE, _reference); PERFORM insertIntoGLSeries( _sequence, 'A/P', 'DS', _ap.apopen_docnumber, _crAccnt, _discountDateAmt, CURRENT_DATE, _reference); PERFORM postGLSeries(_sequence, pJournalNumber); INSERT INTO apopen ( apopen_id, apopen_username, apopen_journalnumber, apopen_vend_id, apopen_docnumber, apopen_doctype, apopen_ponumber, apopen_docdate, apopen_duedate, apopen_distdate, apopen_terms_id, apopen_curr_id, apopen_amount, apopen_paid, apopen_open, apopen_notes, apopen_discount, apopen_curr_rate ) SELECT _apopenid, getEffectiveXtUser(), pJournalNumber, apopen_vend_id, apopen_docnumber, 'C', apopen_ponumber, CURRENT_DATE, CURRENT_DATE, CURRENT_DATE, -1, apopen_curr_id, pAmount, 0, TRUE, _reference, TRUE, apopen_curr_rate FROM apopen WHERE (apopen_id=pApopenid); SELECT apcreditapply_id INTO _apcreditapplyid FROM apcreditapply WHERE ( (apcreditapply_source_apopen_id=_apopenid) AND (apcreditapply_target_apopen_id=pApopenid) ); IF (FOUND) THEN UPDATE apcreditapply SET apcreditapply_amount=pAmount WHERE (apcreditapply_id=_apcreditapplyid); ELSE SELECT nextval('apcreditapply_apcreditapply_id_seq') INTO _apcreditapplyid; INSERT INTO apcreditapply ( apcreditapply_id, apcreditapply_source_apopen_id, apcreditapply_target_apopen_id, apcreditapply_amount, apcreditapply_curr_id ) VALUES ( _apcreditapplyid, _apopenid, pApopenid, pAmount, _ap.apopen_curr_id ); END IF; SELECT postAPCreditMemoApplication(_apopenid) INTO _result; IF (_result < 0) THEN RETURN _result; END IF; RETURN pJournalNumber; END; $_$; BDROP FUNCTION public.createapdiscount(integer, integer, numeric); publicadminfalse8399212551691470Ocreatearcashdeposit(integer, text, text, date, numeric, text, integer, integer)FUNCTIONCREATE FUNCTION createarcashdeposit(integer, text, text, date, numeric, text, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; pDocNumber ALIAS FOR $2; pOrderNumber ALIAS FOR $3; pDocDate ALIAS FOR $4; pAmount ALIAS FOR $5; pNotes ALIAS FOR $6; pJournalNumber ALIAS FOR $7; pCurrId ALIAS FOR $8; _prepaidaccntid INTEGER; _deferredaccntid INTEGER; _glSequence INTEGER; _aropenid INTEGER; BEGIN IF (pAmount <= 0) THEN RETURN 0; END IF; _prepaidaccntid := findPrepaidAccount(pCustid); IF (_prepaidaccntid = -1) THEN RAISE EXCEPTION 'There was an error creating the Customer Deposit GL Transactions. No Prepaid Account is assigned.'; END IF; _deferredaccntid := findDeferredAccount(pCustid); IF (_deferredaccntid = -1) THEN RAISE EXCEPTION 'There was an error creating the Customer Deposit GL Transactions. No Deferred Account is assigned.'; END IF; SELECT NEXTVAL('aropen_aropen_id_seq') INTO _aropenid; SELECT insertGLTransaction( pJournalNumber, 'A/R', 'CD', pDocNumber, pNotes, _deferredaccntid, _prepaidaccntid, _aropenid, round(currToBase(pCurrId, pAmount, pDocDate), 2), pDocDate) INTO _glSequence; INSERT INTO aropen ( aropen_id, aropen_username, aropen_journalnumber, aropen_cust_id, aropen_docnumber, aropen_doctype, aropen_ordernumber, aropen_docdate, aropen_duedate, aropen_distdate, aropen_terms_id, aropen_salesrep_id, aropen_amount, aropen_paid, aropen_commission_due, aropen_commission_paid, aropen_applyto, aropen_ponumber, aropen_cobmisc_id, aropen_open, aropen_notes, aropen_rsncode_id, aropen_salescat_id, aropen_accnt_id, aropen_curr_id ) VALUES ( _aropenid, getEffectiveXtUser(), pJournalNumber, pCustid, pDocNumber, 'R', pOrderNumber, pDocDate, pDocDate, pDocDate, -1, NULL, round(pAmount, 2), 0, 0.0, FALSE, '', '', -1, TRUE, pNotes, -1, -1, -1, pCurrId ); RETURN _aropenid; END; $_$; fDROP FUNCTION public.createarcashdeposit(integer, text, text, date, numeric, text, integer, integer); publicadminfalse8399212551691471createarcreditmemo(integer, integer, text, text, date, numeric, text, integer, integer, integer, date, integer, integer, numeric, integer, integer, integer, integer)FUNCTIONCREATE FUNCTION createarcreditmemo(pid integer, pcustid integer, pdocnumber text, pordernumber text, pdocdate date, pamount numeric, pnotes text, prsncodeid integer, psalescatid integer, paccntid integer, pduedate date, ptermsid integer, psalesrepid integer, pcommissiondue numeric DEFAULT 0, pjournalnumber integer DEFAULT NULL::integer, pcurrid integer DEFAULT basecurrid(), paraccntid integer DEFAULT NULL::integer, pcoccpayid integer DEFAULT NULL::integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _accntid INTEGER; _arAccntid INTEGER; _aropenid INTEGER; _cohistid INTEGER; _custName TEXT; _duedate DATE := COALESCE(pDueDate, pDocDate); _glSequence INTEGER; _journalNumber INTEGER; _prepaidAccntid INTEGER; _salescatid INTEGER; _taxBaseValue NUMERIC; _test INTEGER; _tmp INTEGER; BEGIN _aropenid := pId; IF (pAmount <= 0) THEN RETURN 0; END IF; _arAccntid := COALESCE(pARAccntid, findARAccount(pCustid)); _prepaidAccntid := findPrepaidAccount(pCustid); _accntid := pAccntid; _salescatid := pSalescatid; SELECT cust_name INTO _custName FROM custinfo WHERE (cust_id=pCustid); IF EXISTS(SELECT 1 FROM accnt WHERE (accnt_id=_accntid)) THEN _prepaidAccntid := _accntid; ELSE _accntid := -1; END IF; SELECT accnt_id INTO _tmp FROM salescat, accnt WHERE ((salescat_prepaid_accnt_id=accnt_id) AND (salescat_id=_salescatid)); IF (FOUND) THEN _accntid := -1; _prepaidAccntid := _tmp; ELSE _salescatid = -1; END IF; IF(pJournalNumber IS NULL) THEN SELECT fetchJournalNumber('AR-MISC') INTO _journalNumber; ELSE _journalNumber := pJournalNumber; END IF; _glSequence := fetchGLSequence(); -- CreatelUpdate aropen for full amount IF (_aropenid IS NOT NULL) THEN UPDATE aropen SET aropen_username=getEffectiveXtUser(), aropen_journalnumber=_journalNumber, aropen_cust_id=pCustid, aropen_docnumber=pDocNumber, aropen_doctype='C', aropen_ordernumber=pOrderNumber,aropen_docdate=pDocDate, aropen_duedate=_duedate, aropen_distdate=pDocDate, aropen_terms_id=pTermsid, aropen_salesrep_id=pSalesrepid, aropen_amount=round(pAmount, 2), aropen_paid=0, aropen_commission_due=pCommissiondue, aropen_commission_paid=FALSE, aropen_applyto='', aropen_ponumber='', aropen_cobmisc_id=-1, aropen_open=TRUE, aropen_notes=pNotes, aropen_rsncode_id=pRsncodeid, aropen_salescat_id=_salescatid, aropen_accnt_id=_accntid, aropen_curr_id=pCurrId WHERE aropen_id = pId; ELSE SELECT NEXTVAL('aropen_aropen_id_seq') INTO _aropenid; INSERT INTO aropen ( aropen_id, aropen_username, aropen_journalnumber, aropen_cust_id, aropen_docnumber, aropen_doctype, aropen_ordernumber, aropen_docdate, aropen_duedate, aropen_distdate, aropen_terms_id, aropen_salesrep_id, aropen_amount, aropen_paid, aropen_commission_due, aropen_commission_paid, aropen_applyto, aropen_ponumber, aropen_cobmisc_id, aropen_open, aropen_notes, aropen_rsncode_id, aropen_salescat_id, aropen_accnt_id, aropen_curr_id ) VALUES ( _aropenid, getEffectiveXtUser(), _journalNumber, pCustid, pDocNumber, 'C', pOrderNumber, pDocDate, _duedate, pDocDate, pTermsid, pSalesrepid, round(pAmount, 2), 0, pCommissiondue, FALSE, '', '', -1, TRUE, pNotes, pRsncodeid, _salescatid, _accntid, pCurrId ); END IF; -- Credit the A/R account for the full amount SELECT insertIntoGLSeries ( _glSequence, 'A/R', 'CM', pDocNumber, _arAccntid, round(currToBase(pCurrId, pAmount, pDocDate), 2), pDocDate, (_custName || ' ' || pNotes)) INTO _test; -- Debit the Tax account for the tax amount _taxBaseValue := addTaxToGLSeries(_glSequence, 'A/R', 'CM', pDocNumber, pCurrId, pDocDate, pDocDate, 'aropentax', _aropenid, (_custName || ' ' || pNotes)); UPDATE aropentax SET taxhist_journalnumber = _journalNumber WHERE taxhist_parent_id=_aropenid; -- Debit the Prepaid account for the basis amount -- Note, _taxBaseValue is negative so it is added to pAmount SELECT insertIntoGLSeries ( _glSequence, 'A/R', 'CM', pDocNumber, _prepaidAccntid, round(currToBase(pCurrId, pAmount * -1, pDocDate) + _taxBaseValue * -1, 2), pDocDate, (_custName || ' ' || pNotes)) INTO _test; -- Commit the GLSeries; SELECT postGLSeries(_glSequence, _journalNumber) INTO _test; IF (_test < 0) THEN DELETE FROM aropen WHERE (aropen_id=_aropenid); PERFORM deleteGLSeries(_glSequence); RAISE EXCEPTION 'postGLSeries commit failed with %', _test; END IF; -- Record Sales History INSERT INTO cohist ( cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_misc_type, cohist_misc_descrip, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_curr_id, cohist_sequence, cohist_cohead_ccpay_id) VALUES (CASE WHEN pCustid < 0 THEN NULL ELSE pCustid END, -1, -1, 'M', 'A/R Misc Credit Memo', pDocDate, '', pOrderNumber, '', pDocDate, 'C', pDocNumber, pDocDate, 1, (pAmount - _taxBaseValue) * -1, 0, CASE WHEN pSalesrepid < 0 THEN NULL ELSE pSalesrepid END, (pCommissiondue * -1.0), FALSE, pCurrId, _glSequence, pCoCcpayId) RETURNING cohist_id INTO _cohistid; INSERT INTO cohisttax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT _cohistid, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM aropentax WHERE (taxhist_parent_id=_aropenid); RETURN _aropenid; END; $$; rDROP FUNCTION public.createarcreditmemo(pid integer, pcustid integer, pdocnumber text, pordernumber text, pdocdate date, pamount numeric, pnotes text, prsncodeid integer, psalescatid integer, paccntid integer, pduedate date, ptermsid integer, psalesrepid integer, pcommissiondue numeric, pjournalnumber integer, pcurrid integer, paraccntid integer, pcoccpayid integer); publicadminfalse83992;12551691473createardebitmemo(integer, integer, integer, text, text, date, numeric, text, integer, integer, integer, date, integer, integer, numeric, integer)FUNCTIONGCREATE FUNCTION createardebitmemo(integer, integer, integer, text, text, date, numeric, text, integer, integer, integer, date, integer, integer, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pId ALIAS FOR $1; pCustid ALIAS FOR $2; pJournalNumber ALIAS FOR $3; pDocNumber ALIAS FOR $4; pOrderNumber ALIAS FOR $5; pDocDate ALIAS FOR $6; pAmount ALIAS FOR $7; pNotes ALIAS FOR $8; pRsncodeid ALIAS FOR $9; pSalescatid ALIAS FOR $10; pAccntid ALIAS FOR $11; pDueDate ALIAS FOR $12; pTermsid ALIAS FOR $13; pSalesrepid ALIAS FOR $14; pCommissiondue ALIAS FOR $15; pCurrId ALIAS FOR $16; _custName TEXT; _journalNumber INTEGER; _arAccntid INTEGER; _prepaidAccntid INTEGER; _salescatid INTEGER; _accntid INTEGER; _glSequence INTEGER; _aropenid INTEGER; _cohistid INTEGER; _tmp INTEGER; _test INTEGER; _taxBaseValue NUMERIC; BEGIN _aropenid=pId; IF (pAmount <= 0) THEN RETURN 0; END IF; SELECT findARAccount(pCustid) INTO _arAccntid; SELECT findPrepaidAccount(pCustid) INTO _prepaidAccntid; _accntid := pAccntid; _salescatid := pSalescatid; SELECT cust_name INTO _custName FROM custinfo WHERE (cust_id=pCustid); PERFORM accnt_id FROM accnt WHERE (accnt_id=_accntid); IF (FOUND) THEN _prepaidAccntid := _accntid; ELSE _accntid := -1; END IF; SELECT accnt_id INTO _tmp FROM salescat, accnt WHERE ((salescat_prepaid_accnt_id=accnt_id) AND (salescat_id=_salescatid)); IF (FOUND) THEN _accntid := -1; _prepaidAccntid := _tmp; ELSE _salescatid = -1; END IF; IF (pJournalNumber IS NULL) THEN _journalNumber := fetchJournalNumber('AR-MISC'); ELSE _journalNumber := pJournalNumber; END IF; SELECT fetchGLSequence() INTO _glSequence; -- CreatelUpdate aropen for full amount IF (_aropenid IS NOT NULL) THEN UPDATE aropen SET aropen_username=getEffectiveXtUser(), aropen_journalnumber=_journalNumber, aropen_cust_id=pCustid, aropen_docnumber=pDocNumber, aropen_doctype='D', aropen_ordernumber=pOrderNumber,aropen_docdate=pDocDate, aropen_duedate=pDueDate, aropen_distdate=pDocDate, aropen_terms_id=pTermsid, aropen_salesrep_id=pSalesrepid, aropen_amount=round(pAmount, 2), aropen_paid=0, aropen_commission_due=pCommissiondue, aropen_commission_paid=FALSE, aropen_applyto='', aropen_ponumber='', aropen_cobmisc_id=-1, aropen_open=TRUE, aropen_notes=pNotes, aropen_rsncode_id=pRsncodeid, aropen_salescat_id=_salescatid, aropen_accnt_id=_accntid, aropen_curr_id=pCurrId WHERE aropen_id = pId; ELSE SELECT NEXTVAL('aropen_aropen_id_seq') INTO _aropenid; INSERT INTO aropen ( aropen_id, aropen_username, aropen_journalnumber, aropen_cust_id, aropen_docnumber, aropen_doctype, aropen_ordernumber, aropen_docdate, aropen_duedate, aropen_distdate, aropen_terms_id, aropen_salesrep_id, aropen_amount, aropen_paid, aropen_commission_due, aropen_commission_paid, aropen_applyto, aropen_ponumber, aropen_cobmisc_id, aropen_open, aropen_notes, aropen_rsncode_id, aropen_salescat_id, aropen_accnt_id, aropen_curr_id ) VALUES ( _aropenid, getEffectiveXtUser(), _journalNumber, pCustid, pDocNumber, 'D', pOrderNumber, pDocDate, pDueDate, pDocDate, pTermsid, pSalesrepid, round(pAmount, 2), 0, pCommissiondue, FALSE, '', '', -1, TRUE, pNotes, pRsncodeid, _salescatid, _accntid, pCurrId ); END IF; -- Debit the A/R account for the full amount SELECT insertIntoGLSeries ( _glSequence, 'A/R', 'DM', pDocNumber, _arAccntid, round(currToBase(pCurrId, pAmount, pDocDate) * -1, 2), pDocDate, (_custName || ' ' || pNotes)) INTO _test; -- Credit the Tax account for the tax amount _taxBaseValue := addTaxToGLSeries(_glSequence, 'A/R', 'DM', pDocNumber, pCurrId, pDocDate, pDocDate, 'aropentax', _aropenid, (_custName || ' ' || pNotes)); UPDATE aropentax SET taxhist_journalnumber = _journalNumber WHERE taxhist_parent_id=_aropenid; -- Credit the Prepaid account for the basis amount SELECT insertIntoGLSeries ( _glSequence, 'A/R', 'DM', pDocNumber, _prepaidAccntid, round(currToBase(pCurrId, (pAmount), pDocDate), 2) - _taxBaseValue, pDocDate, (_custName || ' ' || pNotes)) INTO _test; -- Commit the GLSeries; SELECT postGLSeries(_glSequence, _journalNumber) INTO _test; IF (_test < 0) THEN DELETE FROM aropen WHERE (aropen_id=_aropenid); PERFORM deleteGLSeries(_glSequence); RAISE EXCEPTION 'postGLSeries commit failed with %', _test; END IF; -- Record Sales History SELECT nextval('cohist_cohist_id_seq') INTO _cohistid; INSERT INTO cohist ( cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_misc_type, cohist_misc_descrip, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_curr_id, cohist_sequence ) VALUES ( _cohistid, pCustid, -1, -1, 'M', 'A/R Misc Debit Memo', pDocDate, '', '', '', pDocDate, 'D', pDocNumber, pDocDate, 1, (pAmount - _taxBaseValue), 0, pSalesrepid, pCommissiondue, FALSE, pCurrId, _glSequence ); INSERT INTO cohisttax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT _cohistid, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM aropentax WHERE (taxhist_parent_id=_aropenid); RETURN _aropenid; END; $_$; DROP FUNCTION public.createardebitmemo(integer, integer, integer, text, text, date, numeric, text, integer, integer, integer, date, integer, integer, numeric, integer); publicadminfalse8399212551691475createbillingheader(integer)FUNCTIONCREATE FUNCTION createbillingheader(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; _cobmiscid INTEGER; _cohead cohead%ROWTYPE; _miscApplied NUMERIC := 0.0; _freight NUMERIC; _freighttypeid INTEGER; _invcDate DATE; _schedDate DATE; _shipDate DATE; _shipVia TEXT; _tax NUMERIC; BEGIN -- Fetch cohead SELECT * INTO _cohead FROM cohead WHERE (cohead_id=pSoheadid); -- Check for an existing cobmisc SELECT cobmisc_id INTO _cobmiscid FROM cobmisc WHERE ( (NOT cobmisc_posted) AND (cobmisc_cohead_id=pSoheadid) ); IF (FOUND) THEN -- Find a Shipping-Entered freight charge SELECT SUM(currToCurr(shiphead_freight_curr_id, _cohead.cohead_curr_id, shiphead_freight, CURRENT_DATE)) INTO _freight FROM ( SELECT shiphead_id, shiphead_freight_curr_id, shiphead_freight FROM shiphead JOIN shipitem ON (shipitem_shiphead_id=shiphead_id AND NOT shipitem_invoiced) WHERE ((shiphead_order_type='SO') AND (shiphead_order_id=pSoheadid)) GROUP BY shiphead_id, shiphead_freight_curr_id, shiphead_freight) AS data; IF (_freight IS NOT NULL) THEN UPDATE cobmisc SET cobmisc_freight = _freight WHERE (cobmisc_id=_cobmiscid); END IF; RETURN _cobmiscid; END IF; -- Find misc charges that have already been applied for the S/O SELECT COALESCE(SUM(cobmisc_misc), 0.0) INTO _miscApplied FROM cobmisc WHERE (cobmisc_cohead_id=pSoheadid); SELECT NEXTVAL('cobmisc_cobmisc_id_seq') INTO _cobmiscid; -- Check for a valid shipdate SELECT MIN(shiphead_shipdate) INTO _shipDate FROM shiphead, shipitem WHERE ( (shipitem_shiphead_id=shiphead_id) AND (NOT shipitem_invoiced) AND (shiphead_shipped) AND (shiphead_order_type='SO') AND (shiphead_order_id=pSoheadid) ); -- Schema shouldn't allow, but we'll try for now IF (_shipDate IS NULL) THEN SELECT MAX(shipitem_shipdate) INTO _shipDate FROM shipitem, shiphead WHERE ( (shipitem_shiphead_id=shiphead_id) AND (shiphead_order_type='SO') AND (shiphead_order_id=pSoheadid) ); -- How about a transaction date IF (_shipDate IS NULL) THEN SELECT COALESCE(MAX(shipitem_transdate), CURRENT_DATE) INTO _shipDate FROM shipitem, shiphead WHERE ((shipitem_shiphead_id=shiphead_id) AND (shiphead_order_type='SO') AND (shiphead_order_id=pSoheadid) ); END IF; END IF; -- Get the earliest schedule date for this order. SELECT MIN(coitem_scheddate) INTO _schedDate FROM coitem WHERE ((coitem_status <> 'X') AND (coitem_cohead_id=pSoheadid)); IF (_schedDate IS NULL) THEN _schedDate := _shipDate; END IF; -- Find a Shipping-Entered freight charge SELECT SUM(currToCurr(shiphead_freight_curr_id, _cohead.cohead_curr_id, shiphead_freight, CURRENT_DATE)), shiphead_shipvia INTO _freight, _shipVia FROM ( SELECT shiphead_id, shiphead_freight_curr_id, shiphead_freight, shiphead_shipvia FROM shiphead JOIN shipitem ON (shipitem_shiphead_id=shiphead_id AND NOT shipitem_invoiced) WHERE ((shiphead_order_type='SO') AND (shiphead_order_id=pSoheadid)) GROUP BY shiphead_id, shiphead_freight_curr_id, shiphead_freight, shiphead_shipvia) AS data GROUP BY shiphead_shipvia; -- Nope, use the cohead freight charge IF (_freight IS NULL) THEN _freight := _cohead.cohead_freight; END IF; -- Finally, look for a Shipping-Entered Ship Via SELECT shiphead_shipvia INTO _shipVia FROM shiphead, shipitem WHERE ( (shipitem_shiphead_id=shiphead_id) AND (NOT shipitem_invoiced) AND (shiphead_order_type='SO') AND (shiphead_order_id=pSoheadid) ) LIMIT 1; IF (NOT FOUND) THEN _shipVia := _cohead.cohead_shipvia; END IF; --Determine any tax SELECT getFreightTaxTypeId() INTO _freighttypeid; SELECT SUM(COALESCE(taxdetail_tax, 0.00)) INTO _tax FROM calculatetaxdetail(_cohead.cohead_taxzone_id, _freighttypeid, _cohead.cohead_orderdate,_cohead.cohead_curr_id, _freight); -- Determine if we are using the _shipDate or _schedDate or current_date for the _invcDate IF( fetchMetricText('InvoiceDateSource')='scheddate') THEN _invcDate := _schedDate; ELSIF( fetchMetricText('InvoiceDateSource')='shipdate') THEN _invcDate := _shipDate; ELSE _invcDate := current_date; END IF; INSERT INTO cobmisc ( cobmisc_id, cobmisc_cohead_id, cobmisc_shipvia, cobmisc_freight, cobmisc_misc, cobmisc_payment ,cobmisc_notes,cobmisc_shipdate ,cobmisc_invcdate,cobmisc_posted ,cobmisc_misc_accnt_id ,cobmisc_misc_descrip,cobmisc_closeorder,cobmisc_curr_id ,cobmisc_taxtype_id,cobmisc_taxzone_id ) SELECT _cobmiscid,_cohead.cohead_id,_shipVia,_freight, CASE WHEN (_cohead.cohead_misc - _miscApplied = 0.0) THEN 0.0 ELSE (_cohead.cohead_misc - _miscApplied) END,0, _cohead.cohead_ordercomments,_shipDate,_invcDate,FALSE,_cohead.cohead_misc_accnt_id, _cohead.cohead_misc_descrip,NOT(cust_backorder),_cohead.cohead_curr_id, _cohead.cohead_taxtype_id,_cohead.cohead_taxzone_id FROM custinfo WHERE (cust_id=_cohead.cohead_cust_id); RETURN _cobmiscid; END; $_$; 3DROP FUNCTION public.createbillingheader(integer); publicadminfalse83992<12551691477createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text)FUNCTIONCREATE FUNCTION createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pBomitemid ALIAS FOR $1; pParentItemid ALIAS FOR $2; pComponentItemid ALIAS FOR $3; pSeqNumber ALIAS FOR $4; pIssueMethod ALIAS FOR $5; pUomId ALIAS FOR $6; pQtyPer ALIAS FOR $7; pScrap ALIAS FOR $8; pEffective ALIAS FOR $9; pExpires ALIAS FOR $10; pCreateWo ALIAS FOR $11; pBOOItemseqid ALIAS FOR $12; pSchedAtWooper ALIAS FOR $13; pECN ALIAS FOR $14; pSubType ALIAS FOR $15; pRevisionid ALIAS FOR $16; pCharId ALIAS FOR $17; pCharVal ALIAS FOR $18; _bomworksetid INTEGER; _temp INTEGER; _bomitemid INTEGER; BEGIN SELECT createBOMItem( pBomitemid, pParentItemid, pComponentItemid, pSeqNumber, pIssueMethod, pUomId, pQtyPer, pScrap, pEffective, pExpires, pCreateWo, pBOOItemseqid, pSchedAtWooper, pECN, pSubType, pRevisionid, pCharId, pCharVal, NULL, NULL ) INTO _bomitemid; RETURN _bomitemid; END; $_$; DROP FUNCTION public.createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text); publicadminfalse83992=12551691478createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text)FUNCTION2 CREATE FUNCTION createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pBomitemid ALIAS FOR $1; pParentItemid ALIAS FOR $2; pComponentItemid ALIAS FOR $3; pSeqNumber ALIAS FOR $4; pIssueMethod ALIAS FOR $5; pUomId ALIAS FOR $6; pQtyPer ALIAS FOR $7; pScrap ALIAS FOR $8; pEffective ALIAS FOR $9; pExpires ALIAS FOR $10; pCreateWo ALIAS FOR $11; pBOOItemseqid ALIAS FOR $12; pSchedAtWooper ALIAS FOR $13; pECN ALIAS FOR $14; pSubType ALIAS FOR $15; pRevisionid ALIAS FOR $16; pCharId ALIAS FOR $17; pCharVal ALIAS FOR $18; pNotes ALIAS FOR $19; pRef ALIAS FOR $20; _bomworksetid INTEGER; _temp INTEGER; BEGIN -- Make sure that the parent and component are not the same IF (pParentItemid = pComponentItemid) THEN RETURN -1; END IF; -- Make sure that the parent is not used in the component at some level IF ( SELECT (item_type IN ('M', 'F')) FROM item WHERE (item_id=pComponentItemid) ) THEN SELECT indentedWhereUsed(pParentItemid) INTO _bomworksetid; SELECT bomwork_id INTO _temp FROM bomwork WHERE ( (bomwork_set_id=_bomworksetid) AND (bomwork_item_id=pComponentItemid) ) LIMIT 1; IF (FOUND) THEN PERFORM deleteBOMWorkset(_bomworksetid); RETURN -2; END IF; END IF; PERFORM deleteBOMWorkset(_bomworksetid); -- Create the BOM Item INSERT INTO bomitem ( bomitem_id, bomitem_parent_item_id, bomitem_item_id, bomitem_seqnumber, bomitem_issuemethod, bomitem_uom_id, bomitem_qtyper, bomitem_scrap, bomitem_effective, bomitem_expires, bomitem_createwo, bomitem_booitem_seq_id, bomitem_schedatwooper, bomitem_ecn, bomitem_subtype, bomitem_moddate, bomitem_rev_id, bomitem_char_id, bomitem_value, bomitem_notes, bomitem_ref ) VALUES ( pBomitemid, pParentItemid, pComponentItemid, pSeqNumber, pIssueMethod, pUomId, pQtyPer, pScrap, pEffective, pExpires, pCreateWo, pBOOItemseqid, COALESCE(pSchedAtWooper, FALSE), pECN, pSubType, CURRENT_DATE, pRevisionid, pCharId,pCharVal,pNotes, pRef ); RETURN pBomitemid; END; $_$; DROP FUNCTION public.createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text); publicadminfalse39928>12551691479createbomitem(integer, integer, integer, character, integer, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text)FUNCTIONCREATE FUNCTION createbomitem(integer, integer, integer, character, integer, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pBomitemid ALIAS FOR $1; pParentItemid ALIAS FOR $2; pComponentItemid ALIAS FOR $3; pIssueMethod ALIAS FOR $4; pUomId ALIAS FOR $5; pQtyPer ALIAS FOR $6; pScrap ALIAS FOR $7; pEffective ALIAS FOR $8; pExpires ALIAS FOR $9; pCreateWo ALIAS FOR $10; pBOOItemseqid ALIAS FOR $11; pSchedAtWooper ALIAS FOR $12; pECN ALIAS FOR $13; pSubType ALIAS FOR $14; pRevisionid ALIAS FOR $15; pCharId ALIAS FOR $16; pCharVal ALIAS FOR $17; pNotes ALIAS FOR $18; pRef ALIAS FOR $19; _seqNumber INTEGER; _bomitemid INTEGER; BEGIN -- Grab the next Sequence Number, if any SELECT MAX(bomitem_seqnumber) INTO _seqNumber FROM bomitem(pParentItemid,pRevisionid); IF (_seqNumber IS NOT NULL) THEN _seqNumber := (_seqNumber + 10); ELSE _seqNumber := 10; END IF; SELECT createBOMItem( pBomitemid, pParentItemid, pComponentItemid, _seqNumber, pIssueMethod, pUomId, pQtyPer, pScrap, pEffective, pExpires, pCreateWo, pBOOItemseqid, pSchedAtWooper, pECN, pSubType, pRevisionid, pCharId, pCharVal, pNotes, pRef ) INTO _bomitemid; RETURN _bomitemid; END; $_$; DROP FUNCTION public.createbomitem(integer, integer, integer, character, integer, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text); publicadminfalse8399212551691480createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text)FUNCTION CREATE FUNCTION createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBomitemid ALIAS FOR $1; pParentItemid ALIAS FOR $2; pComponentItemid ALIAS FOR $3; pSeqNumber ALIAS FOR $4; pIssueMethod ALIAS FOR $5; pUomId ALIAS FOR $6; pQtyFxd ALIAS FOR $7; pQtyPer ALIAS FOR $8; pScrap ALIAS FOR $9; pEffective ALIAS FOR $10; pExpires ALIAS FOR $11; pCreateWo ALIAS FOR $12; pBOOItemseqid ALIAS FOR $13; pSchedAtWooper ALIAS FOR $14; pECN ALIAS FOR $15; pSubType ALIAS FOR $16; pRevisionid ALIAS FOR $17; pCharId ALIAS FOR $18; pCharVal ALIAS FOR $19; pNotes ALIAS FOR $20; pRef ALIAS FOR $21; _bomworksetid INTEGER; _temp INTEGER; BEGIN -- Make sure that the parent and component are not the same IF (pParentItemid = pComponentItemid) THEN RETURN -1; END IF; -- Make sure that the parent is not used in the component at some level IF ( SELECT (item_type IN ('M', 'F')) FROM item WHERE (item_id=pComponentItemid) ) THEN SELECT indentedWhereUsed(pParentItemid) INTO _bomworksetid; SELECT bomwork_id INTO _temp FROM bomwork WHERE ( (bomwork_set_id=_bomworksetid) AND (bomwork_item_id=pComponentItemid) ) LIMIT 1; IF (FOUND) THEN PERFORM deleteBOMWorkset(_bomworksetid); RETURN -2; END IF; END IF; PERFORM deleteBOMWorkset(_bomworksetid); -- Create the BOM Item INSERT INTO bomitem ( bomitem_id, bomitem_parent_item_id, bomitem_item_id, bomitem_seqnumber, bomitem_issuemethod, bomitem_uom_id, bomitem_qtyfxd, bomitem_qtyper, bomitem_scrap, bomitem_effective, bomitem_expires, bomitem_createwo, bomitem_booitem_seq_id, bomitem_schedatwooper, bomitem_ecn, bomitem_subtype, bomitem_moddate, bomitem_rev_id, bomitem_char_id, bomitem_value, bomitem_notes, bomitem_ref ) VALUES ( pBomitemid, pParentItemid, pComponentItemid, pSeqNumber, pIssueMethod, pUomId, pQtyFxd, pQtyPer, pScrap, pEffective, pExpires, pCreateWo, pBOOItemseqid, COALESCE(pSchedAtWooper, FALSE), pECN, pSubType, CURRENT_DATE, pRevisionid, pCharId,pCharVal,pNotes, pRef ); RETURN pBomitemid; END; $_$; DROP FUNCTION public.createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text); publicadminfalse3992812551691481createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text)FUNCTIONSCREATE FUNCTION createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBomitemid ALIAS FOR $1; pParentItemid ALIAS FOR $2; pComponentItemid ALIAS FOR $3; pSeqNumber ALIAS FOR $4; pIssueMethod ALIAS FOR $5; pUomId ALIAS FOR $6; pQtyFxd ALIAS FOR $7; pQtyPer ALIAS FOR $8; pScrap ALIAS FOR $9; pEffective ALIAS FOR $10; pExpires ALIAS FOR $11; pCreateWo ALIAS FOR $12; pBOOItemseqid ALIAS FOR $13; pSchedAtWooper ALIAS FOR $14; pECN ALIAS FOR $15; pSubType ALIAS FOR $16; pRevisionid ALIAS FOR $17; pCharId ALIAS FOR $18; pCharVal ALIAS FOR $19; _bomworksetid INTEGER; _temp INTEGER; _bomitemid INTEGER; BEGIN SELECT createBOMItem( pBomitemid, pParentItemid, pComponentItemid, pSeqNumber, pIssueMethod, pUomId, pQtyFxd, pQtyPer, pScrap, pEffective, pExpires, pCreateWo, pBOOItemseqid, pSchedAtWooper, pECN, pSubType, pRevisionid, pCharId, pCharVal, NULL, NULL ) INTO _bomitemid; RETURN _bomitemid; END; $_$; DROP FUNCTION public.createbomitem(integer, integer, integer, integer, character, integer, numeric, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text); publicadminfalse8399212551691482createbomitem(integer, integer, integer, character, integer, numeric, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text)FUNCTIONHCREATE FUNCTION createbomitem(integer, integer, integer, character, integer, numeric, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBomitemid ALIAS FOR $1; pParentItemid ALIAS FOR $2; pComponentItemid ALIAS FOR $3; pIssueMethod ALIAS FOR $4; pUomId ALIAS FOR $5; pQtyFxd ALIAS FOR $6; pQtyPer ALIAS FOR $7; pScrap ALIAS FOR $8; pEffective ALIAS FOR $9; pExpires ALIAS FOR $10; pCreateWo ALIAS FOR $11; pBOOItemseqid ALIAS FOR $12; pSchedAtWooper ALIAS FOR $13; pECN ALIAS FOR $14; pSubType ALIAS FOR $15; pRevisionid ALIAS FOR $16; pCharId ALIAS FOR $17; pCharVal ALIAS FOR $18; pNotes ALIAS FOR $19; pRef ALIAS FOR $20; _seqNumber INTEGER; _bomitemid INTEGER; BEGIN -- Grab the next Sequence Number, if any SELECT MAX(bomitem_seqnumber) INTO _seqNumber FROM bomitem(pParentItemid,pRevisionid); IF (_seqNumber IS NOT NULL) THEN _seqNumber := (_seqNumber + 10); ELSE _seqNumber := 10; END IF; SELECT createBOMItem( pBomitemid, pParentItemid, pComponentItemid, _seqNumber, pIssueMethod, pUomId, pQtyFxd, pQtyPer, pScrap, pEffective, pExpires, pCreateWo, pBOOItemseqid, pSchedAtWooper, pECN, pSubType, pRevisionid, pCharId, pCharVal, pNotes, pRef ) INTO _bomitemid; RETURN _bomitemid; END; $_$; DROP FUNCTION public.createbomitem(integer, integer, integer, character, integer, numeric, numeric, numeric, date, date, boolean, integer, boolean, text, character, integer, integer, text, text, text); publicadminfalse8399212551691483bcreatecheck(integer, text, integer, date, numeric, integer, integer, integer, text, text, boolean)FUNCTION#CREATE FUNCTION createcheck(integer, text, integer, date, numeric, integer, integer, integer, text, text, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankaccntid ALIAS FOR $1; pRecipType ALIAS FOR $2; pRecipId ALIAS FOR $3; pCheckDate ALIAS FOR $4; pAmount ALIAS FOR $5; pCurrid ALIAS FOR $6; pExpcatid ALIAS FOR $7; _journalNumber INTEGER := $8; pFor ALIAS FOR $9; pNotes ALIAS FOR $10; pMisc ALIAS FOR $11; _checkid INTEGER; BEGIN SELECT createCheck(pBankaccntid,pRecipType,pRecipId,pCheckDate,pAmount,pCurrid,pExpcatid,_journalNumber,pFor,pNotes,pMisc,NULL) INTO _checkid; RETURN _checkid; END; $_$; yDROP FUNCTION public.createcheck(integer, text, integer, date, numeric, integer, integer, integer, text, text, boolean); publicadminfalse8399212551691484kcreatecheck(integer, text, integer, date, numeric, integer, integer, integer, text, text, boolean, integer)FUNCTIONCREATE FUNCTION createcheck(integer, text, integer, date, numeric, integer, integer, integer, text, text, boolean, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankaccntid ALIAS FOR $1; pRecipType ALIAS FOR $2; pRecipId ALIAS FOR $3; pCheckDate ALIAS FOR $4; pAmount ALIAS FOR $5; pCurrid ALIAS FOR $6; pExpcatid ALIAS FOR $7; _journalNumber INTEGER := $8; pFor ALIAS FOR $9; pNotes ALIAS FOR $10; pMisc ALIAS FOR $11; pAropenid ALIAS FOR $12; _checkid INTEGER; _check_curr_rate NUMERIC; _bankaccnt_currid INTEGER; BEGIN SELECT bankaccnt_curr_id,currRate(bankaccnt_curr_id,pCheckDate) INTO _bankaccnt_currid, _check_curr_rate FROM bankaccnt WHERE bankaccnt_id = pBankaccntid; IF (NOT FOUND) THEN RETURN -1; END IF; IF (pRecipType NOT IN ('C', 'T', 'V')) THEN RETURN -2; END IF; IF (pCheckDate IS NULL) THEN RETURN -3; END IF; IF (pAmount <= 0) THEN RETURN -4; END IF; IF (pCurrid IS NULL OR NOT EXISTS(SELECT * FROM curr_symbol WHERE (curr_id=pCurrid))) THEN RETURN -5; END IF; IF (pExpcatid IS NOT NULL AND NOT EXISTS(SELECT * FROM expcat WHERE (expcat_id=pExpcatid))) THEN RETURN -6; END IF; -- Do not assign Journal Number until check is posted -- if (_journalNumber IS NULL) THEN -- _journalNumber := fetchJournalNumber('AP-CK'); -- END IF; _checkid := NEXTVAL('checkhead_checkhead_id_seq'); INSERT INTO checkhead ( checkhead_id, checkhead_recip_type, checkhead_recip_id, checkhead_bankaccnt_id, checkhead_number, checkhead_amount, checkhead_checkdate, checkhead_misc, checkhead_expcat_id, checkhead_journalnumber, checkhead_for, checkhead_notes, checkhead_curr_id ) VALUES ( _checkid, pRecipType, pRecipId, pBankaccntid, -1, --fetchNextCheckNumber(pBankaccntid), currToCurr(pCurrid, _bankaccnt_currid, pAmount, pCheckDate), pCheckDate, COALESCE(pMisc, FALSE), pExpcatid, _journalNumber, pFor, pNotes, _bankaccnt_currid ); IF (pAropenid IS NOT NULL AND fetchmetricbool('EnableReturnAuth')) THEN INSERT INTO checkitem (checkitem_checkhead_id,checkitem_amount,checkitem_discount,checkitem_ponumber, checkitem_aropen_id,checkitem_docdate,checkitem_curr_id,checkitem_cmnumber, checkitem_ranumber, checkitem_curr_rate) SELECT _checkid, currToCurr(checkhead_curr_id, aropen_curr_id, pAmount, checkhead_checkdate), 0,cmhead_custponumber,pAropenid,aropen_docdate,aropen_curr_id,cmhead_number,rahead_number, 1 / (_check_curr_rate / aropen_curr_rate) FROM checkhead, aropen LEFT OUTER JOIN cmhead ON (aropen_docnumber=cmhead_number) LEFT OUTER JOIN rahead ON (cmhead_rahead_id=rahead_id) WHERE ((aropen_id=pAropenid) AND (checkhead_id=_checkid)); ELSIF (pAropenid IS NOT NULL) THEN INSERT INTO checkitem (checkitem_checkhead_id,checkitem_amount,checkitem_discount,checkitem_ponumber, checkitem_aropen_id,checkitem_docdate,checkitem_curr_id,checkitem_cmnumber, checkitem_ranumber, checkitem_curr_rate) SELECT _checkid,currToCurr(checkhead_curr_id, aropen_curr_id, pAmount, checkhead_checkdate), 0,cmhead_custponumber,pAropenid,aropen_docdate,aropen_curr_id,cmhead_number,NULL, 1 / (_check_curr_rate / aropen_curr_rate) FROM checkhead, aropen LEFT OUTER JOIN cmhead ON (aropen_docnumber=cmhead_number) WHERE ((aropen_id=pAropenid) AND (checkhead_id=_checkid)); END IF; RETURN _checkid; END; $_$; DROP FUNCTION public.createcheck(integer, text, integer, date, numeric, integer, integer, integer, text, text, boolean, integer); publicadminfalse8399212551691485createchecks(integer, date)FUNCTION CREATE FUNCTION createchecks(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankaccntid ALIAS FOR $1; pCheckDate ALIAS FOR $2; _v RECORD; _r RECORD; _c RECORD; _checkid INTEGER; _counter INTEGER := 0; _check_curr_id INTEGER; _check_curr_rate NUMERIC; BEGIN SELECT bankaccnt_curr_id, currRate(bankaccnt_curr_id, pCheckDate) INTO _check_curr_id, _check_curr_rate FROM bankaccnt WHERE ( bankaccnt_id = pBankaccntid ); FOR _v IN SELECT DISTINCT vend_id, vend_number, vend_name FROM apselect JOIN apopen ON (apselect_apopen_id=apopen_id) JOIN vendinfo ON (apopen_vend_id=vend_id) WHERE ((apselect_bankaccnt_id=pBankaccntid) AND (apselect_date <= pCheckDate)) LOOP -- if we owe this vendor anything (we might not) then create a check IF ((SELECT SUM(apselect_amount * _check_curr_rate / apopen_curr_rate) FROM apselect, apopen WHERE ((apselect_apopen_id=apopen_id) AND (apopen_vend_id=_v.vend_id) AND (apselect_bankaccnt_id=pBankaccntid)) ) > 0) THEN -- 0.01 is a temporary amount; we''ll update the check amount later _checkid := createCheck(pBankaccntid, 'V', _v.vend_id, pCheckDate, 0.01, _check_curr_id, NULL, NULL, '', '', FALSE); FOR _r IN SELECT apopen_id, apselect_id, apopen_docnumber, apopen_invcnumber, apopen_ponumber, apopen_docdate, apselect_curr_id, apselect_amount, apselect_discount FROM apselect, apopen WHERE ( (apselect_apopen_id=apopen_id) AND (apopen_vend_id=_v.vend_id) AND (apselect_bankaccnt_id=pBankaccntid) ) LOOP INSERT INTO checkitem ( checkitem_checkhead_id, checkitem_apopen_id, checkitem_vouchernumber, checkitem_invcnumber, checkitem_ponumber, checkitem_amount, checkitem_discount, checkitem_docdate, checkitem_curr_id, checkitem_curr_rate ) VALUES ( _checkid, _r.apopen_id, _r.apopen_docnumber, _r.apopen_invcnumber, _r.apopen_ponumber, _r.apselect_amount, _r.apselect_discount, _r.apopen_docdate, _r.apselect_curr_id, 1 / (_check_curr_rate / currRate(_r.apselect_curr_id, pCheckdate)) ); DELETE FROM apselect WHERE (apselect_id=_r.apselect_id); END LOOP; -- one check can pay for purchases on multiple dates in multiple currencies UPDATE checkhead SET checkhead_amount = (SELECT SUM(checkitem_amount / checkitem_curr_rate) FROM checkitem WHERE (checkitem_checkhead_id=checkhead_id)) WHERE (checkhead_id=_checkid); _counter := (_counter + 1); END IF; END LOOP; RETURN _counter; END; $_$; 2DROP FUNCTION public.createchecks(integer, date); publicadminfalse83992G12551691486/createcounttag(integer, text, boolean, boolean)FUNCTIONCREATE FUNCTION createcounttag(integer, text, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pComments ALIAS FOR $2; pPriority ALIAS FOR $3; pFreeze ALIAS FOR $4; BEGIN RETURN createCountTag(pItemsiteid, pComments, pPriority, pFreeze, NULL); END; $_$; FDROP FUNCTION public.createcounttag(integer, text, boolean, boolean); publicadminfalse83992125516914878createcounttag(integer, text, boolean, boolean, integer)FUNCTIONCREATE FUNCTION createcounttag(integer, text, boolean, boolean, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pComments ALIAS FOR $2; pPriority ALIAS FOR $3; pFreeze ALIAS FOR $4; pLocationid ALIAS FOR $5; _invcntid INTEGER; _whs RECORD; _type CHARACTER; _controlmethod CHARACTER; BEGIN SELECT item_type, itemsite_controlmethod INTO _type, _controlmethod FROM itemsite, item WHERE ((itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid)); IF (NOT FOUND OR _type IN ('F', 'R', 'L','J') OR _controlmethod = 'N') THEN RETURN 0; -- We simply do not do these item types. END IF; -- Test for existing tags IF (pLocationid IS NULL) THEN SELECT invcnt_id INTO _invcntid FROM invcnt WHERE ((NOT invcnt_posted) AND (invcnt_location_id IS NULL) AND (invcnt_itemsite_id=pItemsiteid)); ELSE SELECT invcnt_id INTO _invcntid FROM invcnt WHERE ((NOT invcnt_posted) AND (invcnt_itemsite_id=pItemsiteid) AND (invcnt_location_id=pLocationid)); END IF; IF (NOT FOUND) THEN SELECT NEXTVAL('invcnt_invcnt_id_seq') INTO _invcntid; SELECT whsinfo.* INTO _whs FROM whsinfo, itemsite WHERE ((warehous_id=itemsite_warehous_id) AND (itemsite_id=pItemsiteid)); INSERT INTO invcnt ( invcnt_id, invcnt_itemsite_id, invcnt_tagdate, invcnt_tagnumber, invcnt_tag_username, invcnt_posted, invcnt_priority, invcnt_comments, invcnt_location_id ) VALUES ( _invcntid, pItemsiteid, CURRENT_TIMESTAMP, (_whs.warehous_counttag_prefix || _whs.warehous_counttag_number::TEXT), getEffectiveXtUser(), FALSE, pPriority, pComments, pLocationid ); UPDATE whsinfo SET warehous_counttag_number=(warehous_counttag_number + 1) WHERE (warehous_id=_whs.warehous_id); IF (pFreeze) THEN UPDATE itemsite SET itemsite_freeze=TRUE WHERE (itemsite_id=pItemsiteid); END IF; END IF; RETURN _invcntid; END; $_$; ODROP FUNCTION public.createcounttag(integer, text, boolean, boolean, integer); publicadminfalse83992D12551691488createcustomer(integer)FUNCTIONCREATE FUNCTION createcustomer(integer) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pcrmacctId ALIAS FOR $1; _custId INTEGER := 0; BEGIN IF (pcrmacctId < 0 OR pcrmacctId IS NULL) THEN RETURN -1; END IF; SELECT crmacct_cust_id INTO _custId FROM crmacct WHERE crmacct_id = pcrmacctId; IF (_custId IS NOT NULL AND _custId <= 0) THEN RETURN -2; END IF; INSERT INTO _customer (active, customer_number, customer_name) SELECT crmacct_active, crmacct_number, crmacct_name FROM crmacct WHERE crmacct_id = pcrmacctId; _custId := CURRVAL('cust_cust_id_seq'); UPDATE crmacct SET crmacct_prospect_id = NULL, crmacct_cust_id = _custId WHERE crmacct_id = pcrmacctId; RETURN _custId; END; $_$; .DROP FUNCTION public.createcustomer(integer); publicadminfalse8399212551691489Fcreatecyclecountsbywarehouse(integer, integer, text, boolean, boolean)FUNCTIONCREATE FUNCTION createcyclecountsbywarehouse(integer, integer, text, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pMaxNumber ALIAS FOR $2; pComments ALIAS FOR $3; pPriority ALIAS FOR $4; pFreeze ALIAS FOR $5; BEGIN RETURN createCycleCountsByWarehouse(pWarehousid, pMaxNumber, pComments, pPriority, pFreeze, NULL, FALSE); END; $_$; ]DROP FUNCTION public.createcyclecountsbywarehouse(integer, integer, text, boolean, boolean); publicadminfalse3992812551691490Ocreatecyclecountsbywarehouse(integer, integer, integer, text, boolean, boolean)FUNCTIONMCREATE FUNCTION createcyclecountsbywarehouse(integer, integer, integer, text, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pClasscodeid ALIAS FOR $2; pMaxNumber ALIAS FOR $3; pComments ALIAS FOR $4; pPriority ALIAS FOR $5; pFreeze ALIAS FOR $6; BEGIN RETURN createCycleCountsByWarehouseByClassCode(pWarehousid, pClasscodeid, pMaxNumber, pComments, pPriority, pFreeze, NULL, FALSE); END; $_$; fDROP FUNCTION public.createcyclecountsbywarehouse(integer, integer, integer, text, boolean, boolean); publicadminfalse8399212551691491Lcreatecyclecountsbywarehouse(integer, text, integer, text, boolean, boolean)FUNCTIONTCREATE FUNCTION createcyclecountsbywarehouse(integer, text, integer, text, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pClasscodePattern ALIAS FOR $2; pMaxNumber ALIAS FOR $3; pComments ALIAS FOR $4; pPriority ALIAS FOR $5; pFreeze ALIAS FOR $6; BEGIN RETURN createCycleCountsByWarehouseByClassCode(pWarehousid, pClasscodePattern, pMaxNumber, pComments, pPriority, pFreeze, NULL, FALSE); END; $_$; cDROP FUNCTION public.createcyclecountsbywarehouse(integer, text, integer, text, boolean, boolean); publicadminfalse8399212551691492Xcreatecyclecountsbywarehouse(integer, integer, text, boolean, boolean, integer, boolean)FUNCTION2 CREATE FUNCTION createcyclecountsbywarehouse(integer, integer, text, boolean, boolean, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pMaxNumber ALIAS FOR $2; pComments ALIAS FOR $3; pPriority ALIAS FOR $4; pFreeze ALIAS FOR $5; pLocationid ALIAS FOR $6; pIgnoreZeroBalance ALIAS FOR $7; _itemsites RECORD; _returnVal INTEGER; BEGIN IF (pLocationid IS NULL) THEN FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, itemsite_qtyonhand FROM itemsite, item WHERE ( (itemsite_active) AND (itemsite_item_id=item_id) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND (itemsite_id NOT IN ( SELECT invcnt_itemsite_id FROM invcnt, itemsite WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_warehous_id=pWarehousid) AND (invcnt_location_id IS NULL) AND (NOT invcnt_posted) ) ) ) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND ((pLocationid IS NULL) OR (validLocation(pLocationid, itemsite_id))) AND (itemsite_warehous_id=pWarehousid) ) ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass, item_number LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; ELSE FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, SUM(itemloc_qty) FROM itemsite, itemloc WHERE ( (itemsite_active) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND (pLocationid = itemloc_location_id) AND (itemloc_itemsite_id = itemsite_id) AND (itemsite_warehous_id=pWarehousid) ) GROUP BY itemsite_id, itemsite_warehous_id, itemsite_datelastcount, itemsite_cyclecountfreq, itemsite_abcclass ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; END IF; RETURN 0; END; $_$; oDROP FUNCTION public.createcyclecountsbywarehouse(integer, integer, text, boolean, boolean, integer, boolean); publicadminfalse8399212551691493lcreatecyclecountsbywarehousebyclasscode(integer, integer, integer, text, boolean, boolean, integer, boolean)FUNCTION CREATE FUNCTION createcyclecountsbywarehousebyclasscode(integer, integer, integer, text, boolean, boolean, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pClasscodeid ALIAS FOR $2; pMaxNumber ALIAS FOR $3; pComments ALIAS FOR $4; pPriority ALIAS FOR $5; pFreeze ALIAS FOR $6; pLocationid ALIAS FOR $7; pIgnoreZeroBalance ALIAS FOR $8; _itemsites RECORD; _returnVal INTEGER; BEGIN IF (pLocationid IS NULL) THEN FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, itemsite_qtyonhand FROM itemsite, item WHERE ( (itemsite_active) AND (itemsite_item_id=item_id) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND (itemsite_id NOT IN ( SELECT invcnt_itemsite_id FROM invcnt, itemsite WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_warehous_id=pWarehousid) AND (invcnt_location_id IS NULL) AND (NOT invcnt_posted) ) ) ) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND ((pLocationid IS NULL) OR (validLocation(pLocationid, itemsite_id))) AND (itemsite_warehous_id=pWarehousid) AND (item_classcode_id=pClasscodeid) ) ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass, item_number LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; ELSE FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, SUM(itemloc_qty) FROM itemsite, item, itemloc WHERE ( (itemsite_active) AND (itemsite_item_id=item_id) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND (pLocationid = itemloc_location_id) AND (itemloc_itemsite_id = itemsite_id) AND (itemsite_warehous_id=pWarehousid) AND (item_classcode_id=pClasscodeid) ) GROUP BY itemsite_id, itemsite_warehous_id, itemsite_datelastcount, itemsite_cyclecountfreq, itemsite_abcclass ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; END IF; RETURN 0; END; $_$; DROP FUNCTION public.createcyclecountsbywarehousebyclasscode(integer, integer, integer, text, boolean, boolean, integer, boolean); publicadminfalse3992812551691494icreatecyclecountsbywarehousebyclasscode(integer, text, integer, text, boolean, boolean, integer, boolean)FUNCTION CREATE FUNCTION createcyclecountsbywarehousebyclasscode(integer, text, integer, text, boolean, boolean, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pClasscodePattern ALIAS FOR $2; pMaxNumber ALIAS FOR $3; pComments ALIAS FOR $4; pPriority ALIAS FOR $5; pFreeze ALIAS FOR $6; pLocationid ALIAS FOR $7; pIgnoreZeroBalance ALIAS FOR $8; _itemsites RECORD; _returnVal INTEGER; BEGIN IF (pLocationid IS NULL) THEN FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, itemsite_qtyonhand FROM itemsite, item, classcode WHERE ( (itemsite_active) AND (itemsite_item_id=item_id) AND (item_classcode_id=classcode_id) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND (itemsite_id NOT IN ( SELECT invcnt_itemsite_id FROM invcnt, itemsite WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_warehous_id=pWarehousid) AND (invcnt_location_id IS NULL) AND (NOT invcnt_posted) ) ) ) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND ((pLocationid IS NULL) OR (validLocation(pLocationid, itemsite_id))) AND (itemsite_warehous_id=pWarehousid) AND (classcode_code ~ pClasscodePattern) ) ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass, item_number LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; ELSE FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, SUM(itemloc_qty) FROM itemsite, item, classcode, itemloc WHERE ( (itemsite_active) AND (itemsite_item_id=item_id) AND (item_classcode_id=classcode_id) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND (pLocationid = itemloc_location_id) AND (itemloc_itemsite_id = itemsite_id) AND (itemsite_warehous_id=pWarehousid) AND (classcode_code ~ pClasscodePattern) ) GROUP BY itemsite_id, itemsite_warehous_id, itemsite_datelastcount, itemsite_cyclecountfreq, itemsite_abcclass ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; END IF; RETURN 0; END; $_$; DROP FUNCTION public.createcyclecountsbywarehousebyclasscode(integer, text, integer, text, boolean, boolean, integer, boolean); publicadminfalse8399212551691495kcreatecyclecountsbywarehousebyplannercode(integer, text, integer, text, boolean, boolean, integer, boolean)FUNCTIONo CREATE FUNCTION createcyclecountsbywarehousebyplannercode(integer, text, integer, text, boolean, boolean, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pPlancodePattern ALIAS FOR $2; pMaxNumber ALIAS FOR $3; pComments ALIAS FOR $4; pPriority ALIAS FOR $5; pFreeze ALIAS FOR $6; pLocationid ALIAS FOR $7; pIgnoreZeroBalance ALIAS FOR $8; _itemsites RECORD; _returnVal INTEGER; BEGIN IF (pLocationid IS NULL) THEN FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, itemsite_qtyonhand FROM itemsite, item, plancode WHERE ( (itemsite_active) AND (itemsite_item_id=item_id) AND (itemsite_plancode_id=plancode_id) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND (itemsite_id NOT IN ( SELECT invcnt_itemsite_id FROM invcnt, itemsite WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_warehous_id=pWarehousid) AND (invcnt_location_id IS NULL) AND (NOT invcnt_posted) ) ) ) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND ((pLocationid IS NULL) OR (validLocation(pLocationid, itemsite_id))) AND (itemsite_warehous_id=pWarehousid) AND (plancode_code ~ pPlancodePattern) ) ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass, item_number LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; ELSE FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, SUM(itemloc_qty) FROM itemsite, plancode, itemloc WHERE ( (itemsite_active) AND (itemsite_plancode_id=plancode_id) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND (pLocationid = itemloc_location_id) AND (itemloc_itemsite_id = itemsite_id) AND (itemsite_warehous_id=pWarehousid) AND (plancode_code ~ pPlancodePattern) ) GROUP BY itemsite_id, itemsite_warehous_id, itemsite_datelastcount, itemsite_cyclecountfreq, itemsite_abcclass ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; END IF; RETURN 0; END; $_$; DROP FUNCTION public.createcyclecountsbywarehousebyplannercode(integer, text, integer, text, boolean, boolean, integer, boolean); publicadminfalse3992812551691496ncreatecyclecountsbywarehousebyplannercode(integer, integer, integer, text, boolean, boolean, integer, boolean)FUNCTION CREATE FUNCTION createcyclecountsbywarehousebyplannercode(integer, integer, integer, text, boolean, boolean, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pPlancodeid ALIAS FOR $2; pMaxNumber ALIAS FOR $3; pComments ALIAS FOR $4; pPriority ALIAS FOR $5; pFreeze ALIAS FOR $6; pLocationid ALIAS FOR $7; pIgnoreZeroBalance ALIAS FOR $8; _itemsites RECORD; _returnVal INTEGER; BEGIN IF (pLocationid IS NULL) THEN FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, itemsite_qtyonhand FROM itemsite, item WHERE ( (itemsite_active) AND (itemsite_item_id=item_id) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND (itemsite_id NOT IN ( SELECT invcnt_itemsite_id FROM invcnt, itemsite WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_warehous_id=pWarehousid) AND (invcnt_location_id IS NULL) AND (NOT invcnt_posted) ) ) ) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND ((pLocationid IS NULL) OR (validLocation(pLocationid, itemsite_id))) AND (itemsite_warehous_id=pWarehousid) AND (itemsite_plancode_id=pPlancodeid) ) ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass, item_number LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; ELSE FOR _itemsites IN SELECT itemsite_id, itemsite_warehous_id, SUM(itemloc_qty) FROM itemsite, itemloc WHERE ( (itemsite_active) AND (itemsite_cyclecountfreq > 0) AND ((COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq) < CURRENT_DATE) AND ((NOT pIgnoreZeroBalance) OR (itemsite_qtyonhand <> 0)) AND (itemloc_itemsite_id = itemsite_id) AND (itemsite_warehous_id=pWarehousid) AND (pLocationid = itemloc_location_id) AND (itemsite_plancode_id=pPlancodeid) ) GROUP BY itemsite_id, itemsite_warehous_id, itemsite_datelastcount, itemsite_cyclecountfreq, itemsite_abcclass ORDER BY (COALESCE(itemsite_datelastcount, startOfTime()) + itemsite_cyclecountfreq), itemsite_abcclass LIMIT pMaxNumber LOOP _returnVal := createCountTag(_itemsites.itemsite_id, pComments, pPriority, pFreeze, pLocationid); IF (_returnVal < 0) THEN RETURN _returnVal; END IF; END LOOP; END IF; RETURN 0; END; $_$; DROP FUNCTION public.createcyclecountsbywarehousebyplannercode(integer, integer, integer, text, boolean, boolean, integer, boolean); publicadminfalse83992L12551691497createfile(text, text, bytea)FUNCTIONvCREATE FUNCTION createfile(text, text, bytea) RETURNS integer LANGUAGE plpgsql AS $_$ declare pTitle ALIAS FOR $1; pDescription ALIAS FOR $2; pStream ALIAS FOR $3; _id integer; begin _id := nextval('file_file_id_seq'); insert into file (file_id, file_title, file_descrip, file_stream) values (_id, pTitle, pDescription, pStream); return _id; end; $_$; 4DROP FUNCTION public.createfile(text, text, bytea); publicadminfalse3992812551691498createinvoice(integer)FUNCTION)CREATE FUNCTION createinvoice(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCobmiscid ALIAS FOR $1; _invcheadid INTEGER; _invcitemid INTEGER; _qtyToInvoice NUMERIC; _r RECORD; _s RECORD; _lastlinenumber INTEGER := 1; BEGIN IF ( ( SELECT cobmisc_posted FROM cobmisc WHERE (cobmisc_id=pCobmiscid) ) ) THEN RETURN -1; END IF; SELECT NEXTVAL('invchead_invchead_id_seq') INTO _invcheadid; -- Give this selection a number if it has not been assigned one UPDATE cobmisc SET cobmisc_invcnumber=fetchInvcNumber() WHERE ( (cobmisc_invcnumber IS NULL) AND (cobmisc_id=pCobmiscid) ); -- Create the Invoice header INSERT INTO invchead ( invchead_id,invchead_cust_id,invchead_shipto_id,invchead_ordernumber,invchead_orderdate, invchead_posted,invchead_printed,invchead_invcnumber,invchead_invcdate,invchead_shipdate, invchead_ponumber,invchead_shipvia,invchead_fob,invchead_billto_name,invchead_billto_address1, invchead_billto_address2,invchead_billto_address3,invchead_billto_city,invchead_billto_state,invchead_billto_zipcode, invchead_billto_phone,invchead_billto_country,invchead_shipto_name,invchead_shipto_address1,invchead_shipto_address2, invchead_shipto_address3,invchead_shipto_city,invchead_shipto_state,invchead_shipto_zipcode,invchead_shipto_phone, invchead_shipto_country,invchead_salesrep_id,invchead_commission,invchead_terms_id,invchead_freight, invchead_misc_amount,invchead_misc_descrip,invchead_misc_accnt_id,invchead_payment, invchead_paymentref,invchead_notes,invchead_prj_id,invchead_curr_id, invchead_taxzone_id, invchead_shipchrg_id, invchead_saletype_id, invchead_shipzone_id ) SELECT _invcheadid,cohead_cust_id,cohead_shipto_id,cohead_number,cohead_orderdate, FALSE,FALSE,cobmisc_invcnumber,cobmisc_invcdate,cobmisc_shipdate, cohead_custponumber,cobmisc_shipvia,cohead_fob,cohead_billtoname,cohead_billtoaddress1, cohead_billtoaddress2,cohead_billtoaddress3,cohead_billtocity,cohead_billtostate,cohead_billtozipcode, cntct_phone AS cust_phone,cohead_billtocountry,cohead_shiptoname,cohead_shiptoaddress1,cohead_shiptoaddress2, cohead_shiptoaddress3,cohead_shiptocity,cohead_shiptostate,cohead_shiptozipcode,cohead_shipto_cntct_phone, cohead_shiptocountry,cohead_salesrep_id,COALESCE(cohead_commission,0),cohead_terms_id,cobmisc_freight, COALESCE(cobmisc_misc, 0.00),cobmisc_misc_descrip,cobmisc_misc_accnt_id,cobmisc_payment, cobmisc_paymentref,cobmisc_notes,cohead_prj_id,cobmisc_curr_id, cobmisc_taxzone_id, cohead_shipchrg_id, cohead_saletype_id, cohead_shipzone_id FROM cobmisc, cohead, custinfo LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) WHERE ( (cobmisc_cohead_id=cohead_id) AND (cohead_cust_id=cust_id) AND (cobmisc_id=pCobmiscid) ); INSERT INTO invcheadtax(taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate) SELECT _invcheadid,taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate FROM cobmisctax WHERE taxhist_parent_id = pCobmiscid AND taxhist_taxtype_id = getadjustmenttaxtypeid(); -- Create the Invoice items FOR _r IN SELECT coitem_id, coitem_linenumber, coitem_subnumber, coitem_custpn, coitem_qtyord, cobill_qty, coitem_qty_uom_id, coitem_qty_invuomratio, coitem_custprice, coitem_price, coitem_price_uom_id, coitem_price_invuomratio, coitem_memo, coitem_rev_accnt_id, itemsite_item_id, itemsite_warehous_id, cobill_taxtype_id, formatSoItemNumber(coitem_id) AS ordnumber FROM coitem, cobill, itemsite WHERE ( (cobill_coitem_id=coitem_id) AND (coitem_itemsite_id=itemsite_id) AND (cobill_cobmisc_id=pCobmiscid) ) ORDER BY coitem_linenumber, coitem_subnumber LOOP SELECT NEXTVAL('invcitem_invcitem_id_seq') INTO _invcitemid; INSERT INTO invcitem ( invcitem_id, invcitem_invchead_id, invcitem_linenumber, invcitem_item_id, invcitem_warehous_id, invcitem_custpn, invcitem_number, invcitem_descrip, invcitem_ordered, invcitem_billed, invcitem_qty_uom_id, invcitem_qty_invuomratio, invcitem_custprice, invcitem_price, invcitem_price_uom_id, invcitem_price_invuomratio, invcitem_notes, invcitem_taxtype_id, invcitem_coitem_id, invcitem_rev_accnt_id ) VALUES ( _invcitemid, _invcheadid, _lastlinenumber, _r.itemsite_item_id, _r.itemsite_warehous_id, _r.coitem_custpn, '', '', _r.coitem_qtyord, _r.cobill_qty, _r.coitem_qty_uom_id, _r.coitem_qty_invuomratio, _r.coitem_custprice, _r.coitem_price, _r.coitem_price_uom_id, _r.coitem_price_invuomratio, _r.coitem_memo, _r.cobill_taxtype_id, _r.coitem_id, _r.coitem_rev_accnt_id ); -- Find and mark any Lot/Serial invdetail records associated with this bill UPDATE invdetail SET invdetail_invcitem_id = _invcitemid WHERE (invdetail_id IN (SELECT invdetail_id FROM invhist JOIN invdetail ON (invdetail_invhist_id=invhist_id) WHERE ( (invhist_ordnumber = _r.ordnumber) AND (invhist_ordtype = 'SO') AND (invhist_transtype = 'SH') AND (invdetail_invcitem_id IS NULL) ) )); -- Mark any shipped, uninvoiced shipitems for the current coitem as invoiced _qtyToInvoice := _r.cobill_qty; FOR _s IN SELECT shipitem.*, shipitem_qty = _r.cobill_qty AS matched FROM shipitem, shiphead WHERE ((shipitem_shiphead_id=shiphead_id) AND (shipitem_orderitem_id=_r.coitem_id) AND (shiphead_shipped) AND (shiphead_order_type='SO') AND (NOT shipitem_invoiced)) ORDER BY matched DESC, shipitem_qty DESC FOR UPDATE LOOP IF (_qtyToInvoice >= _s.shipitem_qty) THEN UPDATE shipitem SET shipitem_invoiced=TRUE, shipitem_invcitem_id=_invcitemid WHERE (shipitem_id=_s.shipitem_id); _qtyToInvoice := _qtyToInvoice - _s.shipitem_qty; END IF; IF (_qtyToInvoice <= 0) THEN EXIT; END IF; END LOOP; UPDATE cobill SET cobill_invcnum=cobmisc_invcnumber, cobill_invcitem_id=invcitem_id FROM invcitem, coitem, cobmisc WHERE ((invcitem_linenumber=_lastlinenumber) AND (coitem_id=cobill_coitem_id) AND (cobmisc_id=cobill_cobmisc_id) AND (cobill_cobmisc_id=pCobmiscid) AND (invcitem_invchead_id=_invcheadid)); _lastlinenumber := _lastlinenumber + 1; END LOOP; -- Close all requested coitem's IF ( ( SELECT cobmisc_closeorder FROM cobmisc WHERE (cobmisc_id=pCobmiscid) ) ) THEN UPDATE coitem SET coitem_status='C' FROM cobmisc WHERE ( (coitem_status NOT IN ('C', 'X')) AND (coitem_cohead_id=cobmisc_cohead_id) AND (cobmisc_id=pCobmiscid) ); ELSE UPDATE coitem SET coitem_status='C' FROM cobill WHERE ( (cobill_coitem_id=coitem_id) AND (coitem_status <> 'X') AND (cobill_toclose) AND (cobill_cobmisc_id=pCobmiscid) ); END IF; -- Mark the cobmisc as posted UPDATE cobmisc SET cobmisc_posted=TRUE, cobmisc_invchead_id=_invcheadid WHERE (cobmisc_id=pCobmiscid); -- All done RETURN _invcheadid; END; $_$; -DROP FUNCTION public.createinvoice(integer); publicadminfalse8399212551691500"createinvoiceconsolidated(integer)FUNCTION3CREATE FUNCTION createinvoiceconsolidated(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; _invcheadid INTEGER; _invcitemid INTEGER; _qtyToInvoice NUMERIC; _r RECORD; _s RECORD; _c RECORD; _i RECORD; _count INTEGER; _invcnumber INTEGER; _lastlinenumber INTEGER; BEGIN _count := 0; FOR _c IN SELECT min(cobmisc_id) AS cobmisc_id, count(*) AS cnt, -- there are the key values for consolidation cohead_billtoname, cohead_billtoaddress1, cohead_billtoaddress2, cohead_billtoaddress3, cohead_billtocity, cohead_billtostate, cohead_billtozipcode, cntct_phone AS cust_phone, cohead_billtocountry, cohead_salesrep_id, cohead_commission, cohead_terms_id, cobmisc_misc_accnt_id, cohead_prj_id, cobmisc_curr_id, cobmisc_taxzone_id, cohead_shipchrg_id, cohead_saletype_id, cohead_shipzone_id, -- the following are consolidated values to use in creating the header MIN(cohead_number) AS cohead_number, MIN(cohead_orderdate) AS cohead_orderdate, MIN(cobmisc_invcdate) AS cobmisc_invcdate, MIN(cobmisc_shipdate) AS cobmisc_shipdate, SUM(cobmisc_freight) AS cobmisc_freight, SUM(cobmisc_misc) AS cobmisc_misc, SUM(cobmisc_payment) AS cobmisc_payment FROM cobmisc JOIN cohead ON (cobmisc_cohead_id=cohead_id) JOIN custinfo ON (cohead_cust_id=cust_id) LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) WHERE(NOT cobmisc_posted AND (cohead_cust_id=pCustid) ) GROUP BY cohead_billtoname, cohead_billtoaddress1, cohead_billtoaddress2, cohead_billtoaddress3, cohead_billtocity, cohead_billtostate, cohead_billtozipcode, cust_phone, cohead_billtocountry, cohead_salesrep_id, cohead_commission, cohead_terms_id, cobmisc_misc_accnt_id, cohead_prj_id, cobmisc_curr_id, cobmisc_taxzone_id, cohead_shipchrg_id, cohead_saletype_id, cohead_shipzone_id LOOP IF(_c.cnt = 1) THEN PERFORM createInvoice(_c.cobmisc_id); _count := (_count + 1); ELSE SELECT NEXTVAL('invchead_invchead_id_seq'), fetchInvcNumber() INTO _invcheadid, _invcnumber; -- Create the Invoice header INSERT INTO invchead ( invchead_id, invchead_cust_id, invchead_shipto_id, invchead_ordernumber, invchead_orderdate, invchead_posted, invchead_printed, invchead_invcnumber, invchead_invcdate, invchead_shipdate, invchead_ponumber, invchead_shipvia, invchead_fob, invchead_billto_name, invchead_billto_address1, invchead_billto_address2, invchead_billto_address3, invchead_billto_city, invchead_billto_state, invchead_billto_zipcode, invchead_billto_phone, invchead_billto_country, invchead_shipto_name, invchead_shipto_address1, invchead_shipto_address2, invchead_shipto_address3, invchead_shipto_city, invchead_shipto_state, invchead_shipto_zipcode, invchead_shipto_phone, invchead_shipto_country, invchead_salesrep_id, invchead_commission, invchead_terms_id, invchead_freight, invchead_misc_amount, invchead_misc_descrip, invchead_misc_accnt_id, invchead_payment, invchead_paymentref, invchead_notes, invchead_prj_id, invchead_curr_id, invchead_taxzone_id, invchead_shipchrg_id, invchead_saletype_id, invchead_shipzone_id ) VALUES(_invcheadid, pCustid, -1, NULL, _c.cohead_orderdate, FALSE, FALSE, _invcnumber, _c.cobmisc_invcdate, _c.cobmisc_shipdate, 'MULTIPLE', '', '', _c.cohead_billtoname, _c.cohead_billtoaddress1, _c.cohead_billtoaddress2, _c.cohead_billtoaddress3, _c.cohead_billtocity, _c.cohead_billtostate, _c.cohead_billtozipcode, _c.cust_phone, _c.cohead_billtocountry, '', '', '', '', '', '', '', '', '', _c.cohead_salesrep_id, COALESCE(_c.cohead_commission, 0), _c.cohead_terms_id, _c.cobmisc_freight, _c.cobmisc_misc, CASE WHEN(_c.cobmisc_misc <> 0) THEN 'Multiple' ELSE '' END, _c.cobmisc_misc_accnt_id, _c.cobmisc_payment, '', 'Multiple Sales Order # Invoice', _c.cohead_prj_id, _c.cobmisc_curr_id, _c.cobmisc_taxzone_id, _c.cohead_shipchrg_id, _c.cohead_saletype_id, _c.cohead_shipzone_id ); _lastlinenumber := 1; FOR _i IN SELECT cobmisc_id FROM cobmisc JOIN cohead ON (cobmisc_cohead_id=cohead_id) JOIN custinfo ON (cohead_cust_id=cust_id) LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) WHERE(NOT cobmisc_posted AND (cohead_cust_id=pCustid) AND (COALESCE(cohead_billtoname,'') = COALESCE(_c.cohead_billtoname,'')) AND (COALESCE(cohead_billtoaddress1,'') = COALESCE(_c.cohead_billtoaddress1,'')) AND (COALESCE(cohead_billtoaddress2,'') = COALESCE(_c.cohead_billtoaddress2,'')) AND (COALESCE(cohead_billtoaddress3,'') = COALESCE(_c.cohead_billtoaddress3,'')) AND (COALESCE(cohead_billtocity,'') = COALESCE(_c.cohead_billtocity,'')) AND (COALESCE(cohead_billtostate,'') = COALESCE(_c.cohead_billtostate,'')) AND (COALESCE(cohead_billtozipcode,'') = COALESCE(_c.cohead_billtozipcode,'')) AND (COALESCE(cntct_phone,'') = COALESCE(_c.cust_phone,'')) AND (COALESCE(cohead_billtocountry,'') = COALESCE(_c.cohead_billtocountry,'')) AND (COALESCE(cohead_salesrep_id, 0) = COALESCE(_c.cohead_salesrep_id, 0)) AND (COALESCE(cohead_commission, 0) = COALESCE(_c.cohead_commission, 0)) AND (COALESCE(cohead_terms_id, 0) = COALESCE(_c.cohead_terms_id, 0)) AND (COALESCE(cobmisc_misc_accnt_id, 0) = COALESCE(_c.cobmisc_misc_accnt_id, 0)) AND (COALESCE(cohead_prj_id, 0) = COALESCE(_c.cohead_prj_id, 0)) AND (COALESCE(cobmisc_curr_id, 0) = COALESCE(_c.cobmisc_curr_id, 0)) AND (COALESCE(cobmisc_taxzone_id, 0) = COALESCE(_c.cobmisc_taxzone_id, 0)) AND (COALESCE(cohead_saletype_id, 0) = COALESCE(_c.cohead_saletype_id, 0)) AND (COALESCE(cohead_shipzone_id, 0) = COALESCE(_c.cohead_shipzone_id, 0)) ) LOOP -- Create the Invoice Head tax INSERT INTO invcheadtax(taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate) SELECT _invcheadid,taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate FROM cobmisctax WHERE taxhist_parent_id = _i.cobmisc_id AND taxhist_taxtype_id = getadjustmenttaxtypeid(); -- Give this selection a number if it has not been assigned one UPDATE cobmisc SET cobmisc_invcnumber=_invcnumber WHERE(cobmisc_id=_i.cobmisc_id); -- Create the Invoice items FOR _r IN SELECT coitem_id, coitem_linenumber, coitem_subnumber, coitem_custpn, coitem_qtyord, cobill_qty, coitem_qty_uom_id, coitem_qty_invuomratio, coitem_custprice, coitem_price, coitem_price_uom_id, coitem_price_invuomratio, coitem_memo, itemsite_item_id, itemsite_warehous_id, cobill_taxtype_id FROM cohead, coitem, cobill, itemsite WHERE((cobill_coitem_id=coitem_id) AND (cohead_id=coitem_cohead_id) AND (coitem_itemsite_id=itemsite_id) AND (cobill_cobmisc_id=_i.cobmisc_id) ) ORDER BY cohead_number, coitem_linenumber, coitem_subnumber LOOP SELECT NEXTVAL('invcitem_invcitem_id_seq') INTO _invcitemid; INSERT INTO invcitem ( invcitem_id, invcitem_invchead_id, invcitem_linenumber, invcitem_item_id, invcitem_warehous_id, invcitem_custpn, invcitem_number, invcitem_descrip, invcitem_ordered, invcitem_billed, invcitem_qty_uom_id, invcitem_qty_invuomratio, invcitem_custprice, invcitem_price, invcitem_price_uom_id, invcitem_price_invuomratio, invcitem_notes, invcitem_taxtype_id, invcitem_coitem_id ) VALUES ( _invcitemid, _invcheadid, _lastlinenumber, _r.itemsite_item_id, _r.itemsite_warehous_id, _r.coitem_custpn, '', '', _r.coitem_qtyord, _r.cobill_qty, _r.coitem_qty_uom_id, _r.coitem_qty_invuomratio, _r.coitem_custprice, _r.coitem_price, _r.coitem_price_uom_id, _r.coitem_price_invuomratio, _r.coitem_memo, _r.cobill_taxtype_id, _r.coitem_id ); -- Find and mark any Lot/Serial invdetail records associated with this bill UPDATE invdetail SET invdetail_invcitem_id = _invcitemid WHERE (invdetail_id IN (SELECT invdetail_id FROM coitem, cohead, invhist, invdetail WHERE ((coitem_cohead_id=cohead_id) AND (invdetail_invhist_id=invhist_id) AND (invhist_ordnumber = text(cohead_number||'-'||formatSoLineNumber(coitem_id))) AND (invdetail_invcitem_id IS NULL) AND (coitem_id=_r.coitem_id)) ) ); -- Mark any shipped, uninvoiced shipitems for the current coitem as invoiced _qtyToInvoice := _r.cobill_qty; FOR _s IN SELECT shipitem.*, shipitem_qty = _r.cobill_qty AS matched FROM shipitem, shiphead WHERE ((shipitem_shiphead_id=shiphead_id) AND (shipitem_orderitem_id=_r.coitem_id) AND (shiphead_shipped) AND (shiphead_order_type='SO') AND (NOT shipitem_invoiced)) ORDER BY matched DESC, shipitem_qty DESC FOR UPDATE LOOP IF (_qtyToInvoice >= _s.shipitem_qty) THEN UPDATE shipitem SET shipitem_invoiced=TRUE, shipitem_invcitem_id=_invcitemid WHERE (shipitem_id=_s.shipitem_id); _qtyToInvoice := _qtyToInvoice - _s.shipitem_qty; END IF; IF (_qtyToInvoice <= 0) THEN EXIT; END IF; END LOOP; UPDATE cobill SET cobill_invcnum=cobmisc_invcnumber, cobill_invcitem_id=invcitem_id FROM invcitem, coitem, cobmisc WHERE ((invcitem_linenumber=_lastlinenumber ) AND (coitem_id=cobill_coitem_id) AND (cobmisc_id=cobill_cobmisc_id) AND (cobill_cobmisc_id=_i.cobmisc_id) AND (invcitem_invchead_id=_invcheadid)); _lastlinenumber := _lastlinenumber + 1; END LOOP; -- Close all requested coitem's IF ( ( SELECT cobmisc_closeorder FROM cobmisc WHERE (cobmisc_id=_i.cobmisc_id) ) ) THEN UPDATE coitem SET coitem_status='C' FROM cobmisc WHERE ( (coitem_status NOT IN ('C', 'X')) AND (coitem_cohead_id=cobmisc_cohead_id) AND (cobmisc_id=_i.cobmisc_id) ); ELSE UPDATE coitem SET coitem_status='C' FROM cobill WHERE ( (cobill_coitem_id=coitem_id) AND (coitem_status <> 'X') AND (cobill_toclose) AND (cobill_cobmisc_id=_i.cobmisc_id) ); END IF; -- Mark the cobmisc as posted UPDATE cobmisc SET cobmisc_posted=TRUE, cobmisc_invchead_id=_invcheadid WHERE (cobmisc_id=_i.cobmisc_id); -- All done _count := (_count + 1); END LOOP; END IF; END LOOP; RETURN _count; END; $_$; 9DROP FUNCTION public.createinvoiceconsolidated(integer); publicadminfalse3992812551691502createinvoices()FUNCTION CREATE FUNCTION createinvoices() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _counter INTEGER; _cobmisc RECORD; BEGIN _counter := 0; FOR _cobmisc IN SELECT cobmisc_id FROM cobmisc WHERE (NOT cobmisc_posted) LOOP PERFORM createinvoice(_cobmisc.cobmisc_id); _counter := (_counter + 1); END LOOP; RETURN _counter; END; $$; 'DROP FUNCTION public.createinvoices(); publicadminfalse8399212551691503createinvoices(integer)FUNCTION CREATE FUNCTION createinvoices(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN createinvoices($1, false); END; $_$; .DROP FUNCTION public.createinvoices(integer); publicadminfalse3992812551691504 createinvoices(integer, boolean)FUNCTION&CREATE FUNCTION createinvoices(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustTypeId ALIAS FOR $1; pConsolidate ALIAS FOR $2; _counter INTEGER; _tcounter INTEGER; _cobmisc RECORD; BEGIN _counter := 0; IF (pConsolidate) THEN FOR _cobmisc IN SELECT DISTINCT cust_id FROM cobmisc, cohead, custinfo WHERE((NOT cobmisc_posted) AND (cohead_id=cobmisc_cohead_id) AND (cust_id=cohead_cust_id) AND (cust_custtype_id=pCustTypeId)) LOOP SELECT createinvoiceConsolidated(_cobmisc.cust_id) INTO _tcounter; _counter := (_counter + _tcounter); END LOOP; ELSE FOR _cobmisc IN SELECT cobmisc_id FROM cobmisc, cohead, custinfo WHERE((NOT cobmisc_posted) AND (cohead_id=cobmisc_cohead_id) AND (cust_id=cohead_cust_id) AND (cust_custtype_id=pCustTypeId)) LOOP PERFORM createinvoice(_cobmisc.cobmisc_id); _counter := (_counter + 1); END LOOP; END IF; RETURN _counter; END; $_$; 7DROP FUNCTION public.createinvoices(integer, boolean); publicadminfalse8399212551691505Gcreatemiscapcheck(integer, integer, date, numeric, integer, text, text)FUNCTIONCREATE FUNCTION createmiscapcheck(integer, integer, date, numeric, integer, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'createMiscAPCheck() is deprecated - use createCheck() instead'; RETURN createCheck($1, 'V', $2, $3, $4, baseCurrId(), $5, NULL, $6, $7, FALSE); END; $_$; ^DROP FUNCTION public.createmiscapcheck(integer, integer, date, numeric, integer, text, text); publicadminfalse8399212551691506Pcreatemiscapcheck(integer, integer, date, numeric, integer, integer, text, text)FUNCTIONCREATE FUNCTION createmiscapcheck(integer, integer, date, numeric, integer, integer, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'createMiscAPCheck() is deprecated - use createCheck() instead'; RETURN createCheck($1, 'V', $2, $3, pAmount, $5, $6, NULL, $7, $8, FALSE); END; $_$; gDROP FUNCTION public.createmiscapcheck(integer, integer, date, numeric, integer, integer, text, text); publicadminfalse8399212551691507createpkgschema(text, text)FUNCTION CREATE FUNCTION createpkgschema(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pname ALIAS FOR $1; pcomment ALIAS FOR $2; _createtable TEXT; _debug BOOL := true; _namespaceoid INTEGER := -1; _tabs TEXT[] := ARRAY['cmd', 'cmdarg', 'image', 'metasql', 'priv', 'report', 'script', 'uiform'] ; _pkgtab TEXT; BEGIN IF (LENGTH(COALESCE(pname, '')) <= 0) THEN RAISE EXCEPTION 'Cannot create a schema for this package without a name.'; END IF; SELECT oid INTO _namespaceoid FROM pg_namespace WHERE (LOWER(nspname)=LOWER(pname)); IF (NOT FOUND) THEN EXECUTE 'CREATE SCHEMA ' || LOWER(pname); EXECUTE 'GRANT ALL ON SCHEMA ' || LOWER(pname) || ' TO GROUP xtrole;'; SELECT oid INTO _namespaceoid FROM pg_namespace WHERE (LOWER(nspname)=LOWER(pname)); END IF; FOR i IN ARRAY_LOWER(_tabs,1)..ARRAY_UPPER(_tabs,1) LOOP _pkgtab := pname || '.pkg' || _tabs[i]; IF NOT EXISTS(SELECT oid FROM pg_class WHERE ((relname=_pkgtab) AND (relnamespace=_namespaceoid))) THEN _createtable := 'CREATE TABLE ' || _pkgtab || ' () INHERITS (' || _tabs[i] || ');'; IF (_debug) THEN RAISE NOTICE '%', _createtable; END IF; EXECUTE _createtable; EXECUTE 'ALTER TABLE ' || _pkgtab || ' ALTER ' || _tabs[i] || '_id SET NOT NULL,' || ' ADD PRIMARY KEY (' || _tabs[i] || '_id),' || ' ALTER ' || _tabs[i] || '_id SET DEFAULT NEXTVAL(''' || _tabs[i] || '_' || _tabs[i] || '_id_seq'');'; EXECUTE 'REVOKE ALL ON ' || _pkgtab || ' FROM PUBLIC;'; EXECUTE 'GRANT ALL ON ' || _pkgtab || ' TO GROUP xtrole;'; IF (_tabs[i] = 'cmdarg') THEN EXECUTE 'ALTER TABLE ' || _pkgtab || ' ADD FOREIGN KEY (cmdarg_cmd_id) REFERENCES ' || pname || '.pkgcmd(cmd_id);'; END IF; EXECUTE 'SELECT dropIfExists(''TRIGGER'', ''pkg' || _tabs[i] || 'beforetrigger'', ''' || pname || ''');' ; EXECUTE 'CREATE TRIGGER pkg' || _tabs[i] || 'beforetrigger ' || 'BEFORE INSERT OR UPDATE OR DELETE ON ' || _pkgtab || ' FOR EACH ROW EXECUTE PROCEDURE _pkg' || _tabs[i] || 'beforetrigger();'; EXECUTE 'SELECT dropIfExists(''TRIGGER'', ''pkg' || _tabs[i] || 'altertrigger'', ''' || pname || ''');' ; EXECUTE 'CREATE TRIGGER pkg' || _tabs[i] || 'altertrigger ' || 'BEFORE INSERT OR UPDATE OR DELETE ON ' || _pkgtab || ' FOR EACH ROW EXECUTE PROCEDURE _pkg' || _tabs[i] || 'altertrigger();'; EXECUTE 'SELECT dropIfExists(''TRIGGER'', ''pkg' || _tabs[i] || 'aftertrigger'', ''' || pname || ''');' ; EXECUTE 'CREATE TRIGGER pkg' || _tabs[i] || 'aftertrigger ' || 'AFTER INSERT OR UPDATE OR DELETE ON ' || _pkgtab || ' FOR EACH ROW EXECUTE PROCEDURE _pkg' || _tabs[i] || 'aftertrigger();'; END IF; END LOOP; EXECUTE 'COMMENT ON SCHEMA ' || quote_ident(pname) || ' IS ' || quote_literal(pcomment) || ';'; RETURN _namespaceoid; END; $_$; 2DROP FUNCTION public.createpkgschema(text, text); publicadminfalse8399212551691508/createpr(integer, integer, numeric, date, text)FUNCTIONCREATE FUNCTION createpr(integer, integer, numeric, date, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOrderNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pQty ALIAS FOR $3; pDueDate ALIAS FOR $4; pNotes ALIAS FOR $5; _prid INTEGER; BEGIN SELECT NEXTVAL('pr_pr_id_seq') INTO _prid; INSERT INTO pr ( pr_id, pr_number, pr_subnumber, pr_status, pr_order_type, pr_order_id, pr_itemsite_id, pr_qtyreq, pr_duedate, pr_releasenote ) VALUES ( _prid, pOrderNumber, nextPrSubnumber(pOrderNumber), 'O', 'M', -1, pItemsiteid, pQty, pDuedate, pNotes); RETURN _prid; END; $_$; FDROP FUNCTION public.createpr(integer, integer, numeric, date, text); publicadminfalse3992812551691509%createpr(integer, character, integer)FUNCTION@CREATE FUNCTION createpr(integer, character, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOrderNumber ALIAS FOR $1; pParentType ALIAS FOR $2; pParentId ALIAS FOR $3; _parent RECORD; _prid INTEGER; _orderNumber INTEGER; BEGIN IF (pOrderNumber = -1) THEN SELECT fetchPrNumber() INTO _orderNumber; ELSE _orderNumber := pOrderNumber; END IF; IF (pParentType = 'W') THEN SELECT womatl_itemsite_id AS itemsiteid, itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyreq) AS qty, womatl_duedate AS duedate, wo_prj_id AS prjid, womatl_notes AS notes INTO _parent FROM wo, womatl, itemsite WHERE ((womatl_wo_id=wo_id) AND (womatl_itemsite_id=itemsite_id) AND (womatl_id=pParentId)); ELSIF (pParentType = 'S') THEN SELECT coitem_itemsite_id AS itemsiteid, (coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) AS qty, coitem_scheddate AS duedate, cohead_prj_id AS prjid, coitem_memo AS notes INTO _parent FROM coitem, cohead WHERE ((cohead_id=coitem_cohead_id) AND (coitem_id=pParentId)); ELSIF (pParentType = 'F') THEN SELECT planord_itemsite_id AS itemsiteid, planord_qty AS qty, planord_duedate AS duedate, NULL::INTEGER AS prjid, planord_comments AS notes INTO _parent FROM planord WHERE (planord_id=pParentId); ELSE RETURN -2; END IF; IF (NOT FOUND) THEN RETURN -1; END IF; SELECT NEXTVAL('pr_pr_id_seq') INTO _prid; INSERT INTO pr ( pr_id, pr_number, pr_subnumber, pr_status, pr_order_type, pr_order_id, pr_prj_id, pr_itemsite_id, pr_qtyreq, pr_duedate, pr_releasenote ) VALUES ( _prid, _orderNumber, nextPrSubnumber(_orderNumber), 'O', pParentType, pParentId, _parent.prjid, _parent.itemsiteid, validateOrderQty(_parent.itemsiteid, _parent.qty, TRUE), _parent.duedate, _parent.notes ); RETURN _prid; END; $_$; <DROP FUNCTION public.createpr(integer, character, integer); publicadminfalse8399212551691510createpr(character, integer)FUNCTIONCREATE FUNCTION createpr(character, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pParentType ALIAS FOR $1; pParentId ALIAS FOR $2; _orderNumber INTEGER; _prid INTEGER; BEGIN IF (pParentType = 'W') THEN SELECT wo_number INTO _orderNumber FROM wo, womatl WHERE ((womatl_wo_id=wo_id) AND (womatl_id=pParentId)); ELSIF (pParentType = 'S') THEN SELECT CAST(cohead_number AS INTEGER) INTO _orderNumber FROM cohead, coitem WHERE ((coitem_cohead_id=cohead_id) AND (coitem_id=pParentId)); ELSIF (pParentType = 'F') THEN SELECT fetchPrNumber() INTO _orderNumber; ELSE RETURN -2; END IF; IF (NOT FOUND) THEN RETURN -1; END IF; SELECT createPr(_orderNumber, pParentType, pParentId) INTO _prid; RETURN _prid; END; $_$; 3DROP FUNCTION public.createpr(character, integer); publicadminfalse8399212551691511Ccreatepr(integer, integer, numeric, date, text, character, integer)FUNCTIONGCREATE FUNCTION createpr(integer, integer, numeric, date, text, character, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOrderNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pQty ALIAS FOR $3; pDueDate ALIAS FOR $4; pNotes ALIAS FOR $5; pOrderType ALIAS FOR $6; pOrderId ALIAS FOR $7; _prid INTEGER; BEGIN SELECT NEXTVAL('pr_pr_id_seq') INTO _prid; INSERT INTO pr ( pr_id, pr_number, pr_subnumber, pr_status, pr_order_type, pr_order_id, pr_itemsite_id, pr_qtyreq, pr_duedate, pr_releasenote ) VALUES ( _prid, pOrderNumber, nextPrSubnumber(pOrderNumber), 'O', pOrderType, pOrderId, pItemsiteid, pQty, pDuedate, pNotes ); RETURN _prid; END; $_$; ZDROP FUNCTION public.createpr(integer, integer, numeric, date, text, character, integer); publicadminfalse8399212551691512+createpr(integer, character, integer, text)FUNCTIONCREATE FUNCTION createpr(integer, character, integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOrderNumber ALIAS FOR $1; pParentType ALIAS FOR $2; pParentId ALIAS FOR $3; pParentNotes ALIAS FOR $4; _parent RECORD; _prid INTEGER; _orderNumber INTEGER; BEGIN IF (pOrderNumber = -1) THEN SELECT fetchPrNumber() INTO _orderNumber; ELSE _orderNumber := pOrderNumber; END IF; IF (pParentType = 'W') THEN SELECT womatl_itemsite_id AS itemsiteid, itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyreq) AS qty, womatl_duedate AS duedate, wo_prj_id AS prjid INTO _parent FROM wo, womatl, itemsite WHERE ((womatl_wo_id=wo_id) AND (womatl_itemsite_id=itemsite_id) AND (womatl_id=pParentId)); ELSIF (pParentType = 'S') THEN SELECT coitem_itemsite_id AS itemsiteid, (coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) AS qty, coitem_scheddate AS duedate, cohead_prj_id AS prjid INTO _parent FROM coitem, cohead WHERE ((cohead_id=coitem_cohead_id) AND (coitem_id=pParentId)); ELSIF (pParentType = 'F') THEN SELECT planord_itemsite_id AS itemsiteid, planord_qty AS qty, planord_duedate AS duedate, NULL::INTEGER AS prjid INTO _parent FROM planord WHERE (planord_id=pParentId); ELSE RETURN -2; END IF; IF (NOT FOUND) THEN RETURN -1; END IF; SELECT NEXTVAL('pr_pr_id_seq') INTO _prid; INSERT INTO pr ( pr_id, pr_number, pr_subnumber, pr_status, pr_order_type, pr_order_id, pr_prj_id, pr_itemsite_id, pr_qtyreq, pr_duedate, pr_releasenote ) VALUES ( _prid, _orderNumber, nextPrSubnumber(_orderNumber), 'O', pParentType, pParentId, _parent.prjid, _parent.itemsiteid, validateOrderQty(_parent.itemsiteid, _parent.qty, TRUE), _parent.duedate, pParentNotes ); RETURN _prid; END; $_$; BDROP FUNCTION public.createpr(integer, character, integer, text); publicadminfalse83992H12551691513createpriv(text, text, text)FUNCTIONCREATE FUNCTION createpriv(text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pModule ALIAS FOR $1; pName ALIAS FOR $2; pDesc ALIAS FOR $3; _id INTEGER; BEGIN SELECT priv_id INTO _id FROM priv WHERE(priv_name=pName); IF (FOUND) THEN UPDATE priv SET priv_module=pModule, priv_descrip=pDesc WHERE(priv_id=_id); ELSE SELECT nextval('priv_priv_id_seq') INTO _id; INSERT INTO priv (priv_id, priv_module, priv_name, priv_descrip) VALUES(_id, pModule, pName, pDesc); END IF; RETURN _id; END; $_$; 3DROP FUNCTION public.createpriv(text, text, text); publicadminfalse3992812551691514/createpurchasetosale(integer, integer, boolean)FUNCTIONCREATE FUNCTION createpurchasetosale(integer, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCoitemId ALIAS FOR $1; pItemSourceId ALIAS FOR $2; pDropShip ALIAS FOR $3; BEGIN RETURN createPurchaseToSale(pCoitemId, pItemSourceId, pDropShip, NULL, NULL, NULL); END; $_$; FDROP FUNCTION public.createpurchasetosale(integer, integer, boolean); publicadminfalse83992125516915158createpurchasetosale(integer, integer, boolean, numeric)FUNCTIONCREATE FUNCTION createpurchasetosale(integer, integer, boolean, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCoitemId ALIAS FOR $1; pItemSourceId ALIAS FOR $2; pDropShip ALIAS FOR $3; pPrice ALIAS FOR $4; BEGIN RETURN createPurchaseToSale(pCoitemId, pItemSourceId, pDropShip, NULL, NULL, pPrice); END; $_$; ODROP FUNCTION public.createpurchasetosale(integer, integer, boolean, numeric); publicadminfalse3992812551833132Gcreatepurchasetosale(integer, integer, boolean, numeric, date, numeric)FUNCTIONQ5CREATE FUNCTION createpurchasetosale(integer, integer, boolean, numeric, date, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCoitemId ALIAS FOR $1; pItemSourceId ALIAS FOR $2; pDropShip ALIAS FOR $3; pQty ALIAS FOR $4; pDueDate ALIAS FOR $5; pPrice ALIAS FOR $6; _s RECORD; _w RECORD; _i RECORD; _shipto RECORD; _poheadid INTEGER := -1; _poitemid INTEGER := -1; _taxtypeid INTEGER := -1; _polinenumber INTEGER; _ponumber NUMERIC; _price NUMERIC; _temp INTEGER; BEGIN -- Check for existing poitem for this coitem SELECT poitem_id INTO _poitemid FROM poitem WHERE (poitem_order_id=pCoitemId) AND (poitem_order_type='S'); IF (FOUND) THEN RETURN _poitemid; END IF; SELECT *, COALESCE(roundQty(item_fractional, (coitem_qtyord * coitem_qty_invuomratio)), 0.0) AS orderqty INTO _s FROM cohead JOIN coitem ON (cohead_id = coitem_cohead_id) LEFT OUTER JOIN shiptoinfo ON (cohead_shipto_id = shipto_id) LEFT OUTER JOIN itemsite ON (coitem_itemsite_id = itemsite_id) LEFT OUTER JOIN item ON (item_id = itemsite_item_id) WHERE (coitem_id = pCoitemId); IF (NOT FOUND) THEN RETURN -1; END IF; SELECT * INTO _w FROM whsinfo JOIN addr ON (warehous_addr_id = addr_id) JOIN cntct ON (warehous_cntct_id = cntct_id) JOIN itemsite ON (warehous_id = itemsite_warehous_id) WHERE (itemsite_id = _s.itemsite_id); SELECT * INTO _i FROM itemsrc JOIN vendinfo ON (itemsrc_vend_id = vend_id) LEFT OUTER JOIN cntct ON (vend_cntct1_id = cntct_id) LEFT OUTER JOIN addr ON (vend_addr_id = addr_id) WHERE (itemsrc_id = pItemSourceId); IF (NOT FOUND) THEN RETURN -2; END IF; SELECT * INTO _shipto FROM shiptoinfo JOIN cntct ON (shipto_cntct_id = cntct_id) JOIN addr ON (shipto_addr_id = addr_id) RIGHT OUTER JOIN cohead ON (cohead_cust_id = shipto_cust_id) WHERE (cohead_id = _s.cohead_id) LIMIT 1; IF (pDropShip) THEN SELECT COALESCE(pohead_id, -1) INTO _temp FROM pohead WHERE ( (pohead_status = 'U') AND (pohead_vend_id = _i.itemsrc_vend_id) AND (pohead_shiptoaddress_id = _s.shipto_addr_id) ); ELSE SELECT COALESCE(pohead_id, -1) INTO _temp FROM pohead WHERE ( (pohead_status = 'U') AND (pohead_vend_id = _i.itemsrc_vend_id) AND (pohead_shiptoaddress_id = _w.addr_id) ); END IF; IF (FOUND) THEN _poheadid := _temp; UPDATE pohead SET pohead_dropship = pDropShip WHERE (pohead_id = _poheadid); ELSE SELECT NEXTVAL('pohead_pohead_id_seq') INTO _poheadid; SELECT fetchPoNumber() INTO _ponumber; IF (pDropShip) THEN INSERT INTO pohead ( pohead_id, pohead_number, pohead_status, pohead_dropship, pohead_agent_username, pohead_vend_id, pohead_taxzone_id, pohead_orderdate, pohead_curr_id, pohead_cohead_id, pohead_warehous_id, pohead_shipvia, pohead_terms_id, pohead_shipto_cntct_id, pohead_shipto_cntct_honorific, pohead_shipto_cntct_first_name, pohead_shipto_cntct_middle, pohead_shipto_cntct_last_name, pohead_shipto_cntct_suffix, pohead_shipto_cntct_phone, pohead_shipto_cntct_title, pohead_shipto_cntct_fax, pohead_shipto_cntct_email, pohead_shiptoaddress_id, pohead_shiptoaddress1, pohead_shiptoaddress2, pohead_shiptoaddress3, pohead_shiptocity, pohead_shiptostate, pohead_shiptozipcode, pohead_shiptocountry, pohead_vend_cntct_id, pohead_vend_cntct_honorific, pohead_vend_cntct_first_name, pohead_vend_cntct_middle, pohead_vend_cntct_last_name, pohead_vend_cntct_suffix, pohead_vend_cntct_phone, pohead_vend_cntct_title, pohead_vend_cntct_fax, pohead_vend_cntct_email, pohead_vendaddress1, pohead_vendaddress2, pohead_vendaddress3, pohead_vendcity, pohead_vendstate, pohead_vendzipcode, pohead_vendcountry, pohead_comments ) VALUES ( _poheadid, _ponumber, 'U', pDropShip, getEffectiveXtUser(), _i.itemsrc_vend_id, _i.vend_taxzone_id, CURRENT_DATE, COALESCE(_i.vend_curr_id, basecurrid()), _s.cohead_id, COALESCE(_s.cohead_warehous_id, -1), COALESCE(_i.vend_shipvia, TEXT('')), COALESCE(_i.vend_terms_id, -1), COALESCE(_s.cohead_shipto_cntct_id, _shipto.shipto_cntct_id), COALESCE(_s.cohead_shipto_cntct_honorific, _shipto.cntct_honorific), COALESCE(_s.cohead_shipto_cntct_first_name, _shipto.cntct_first_name), COALESCE(_s.cohead_shipto_cntct_middle, _shipto.cntct_middle), COALESCE(_s.cohead_shipto_cntct_last_name, _shipto.cntct_last_name), COALESCE(_s.cohead_shipto_cntct_suffix, _shipto.cntct_suffix), COALESCE(_s.cohead_shipto_cntct_phone, _shipto.cntct_phone), COALESCE(_s.cohead_shipto_cntct_title, _shipto.cntct_title), COALESCE(_s.cohead_shipto_cntct_fax, _shipto.cntct_fax), COALESCE(_s.cohead_shipto_cntct_email, _shipto.cntct_email), COALESCE(_s.shipto_addr_id, _shipto.addr_id), COALESCE(_s.cohead_shiptoaddress1, _shipto.addr_line1), COALESCE(_s.cohead_shiptoaddress2, _shipto.addr_line2), COALESCE(_s.cohead_shiptoaddress3, _shipto.addr_line3), COALESCE(_s.cohead_shiptocity, _shipto.addr_city), COALESCE(_s.cohead_shiptostate, _shipto.addr_state), COALESCE(_s.cohead_shiptozipcode, _shipto.addr_postalcode), COALESCE(_s.cohead_shiptocountry, _shipto.addr_country), _i.cntct_id, COALESCE(_i.cntct_honorific, TEXT('')), COALESCE(_i.cntct_first_name, TEXT('')), COALESCE(_i.cntct_middle, TEXT('')), COALESCE(_i.cntct_last_name, TEXT('')), COALESCE(_i.cntct_suffix, TEXT('')), COALESCE(_i.cntct_phone, TEXT('')), COALESCE(_i.cntct_title, TEXT('')), COALESCE(_i.cntct_fax, TEXT('')), COALESCE(_i.cntct_email, TEXT('')), COALESCE(_i.addr_line1, TEXT('')), COALESCE(_i.addr_line2, TEXT('')), COALESCE(_i.addr_line3, TEXT('')), COALESCE(_i.addr_city, TEXT('')), COALESCE(_i.addr_state, TEXT('')), COALESCE(_i.addr_postalcode, TEXT('')), COALESCE(_i.addr_country, TEXT('')), COALESCE(_s.cohead_shipcomments, TEXT('')) ); ELSE INSERT INTO pohead ( pohead_id, pohead_number, pohead_status, pohead_dropship, pohead_agent_username, pohead_vend_id, pohead_taxzone_id, pohead_orderdate, pohead_curr_id, pohead_cohead_id, pohead_warehous_id, pohead_shipvia, pohead_terms_id, pohead_shipto_cntct_id, pohead_shipto_cntct_honorific, pohead_shipto_cntct_first_name, pohead_shipto_cntct_middle, pohead_shipto_cntct_last_name, pohead_shipto_cntct_suffix, pohead_shipto_cntct_phone, pohead_shipto_cntct_title, pohead_shipto_cntct_fax, pohead_shipto_cntct_email, pohead_shiptoaddress_id, pohead_shiptoaddress1, pohead_shiptoaddress2, pohead_shiptoaddress3, pohead_shiptocity, pohead_shiptostate, pohead_shiptozipcode, pohead_shiptocountry, pohead_vend_cntct_id, pohead_vend_cntct_honorific, pohead_vend_cntct_first_name, pohead_vend_cntct_middle, pohead_vend_cntct_last_name, pohead_vend_cntct_suffix, pohead_vend_cntct_phone, pohead_vend_cntct_title, pohead_vend_cntct_fax, pohead_vend_cntct_email, pohead_vendaddress1, pohead_vendaddress2, pohead_vendaddress3, pohead_vendcity, pohead_vendstate, pohead_vendzipcode, pohead_vendcountry ) VALUES ( _poheadid, _ponumber, 'U', pDropShip, getEffectiveXtUser(), _i.itemsrc_vend_id, _i.vend_taxzone_id, CURRENT_DATE, COALESCE(_i.vend_curr_id, basecurrid()), _s.cohead_id, COALESCE(_s.cohead_warehous_id, -1), COALESCE(_i.vend_shipvia, TEXT('')), COALESCE(_i.vend_terms_id, -1), _w.cntct_id, _w.cntct_honorific, _w.cntct_first_name, _w.cntct_middle, _w.cntct_last_name, _w.cntct_suffix, _w.cntct_phone, _w.cntct_title, _w.cntct_fax, _w.cntct_email, _w.addr_id, _w.addr_line1, _w.addr_line2, _w.addr_line3, _w.addr_city, _w.addr_state, _w.addr_postalcode, _w.addr_country, _i.cntct_id, COALESCE(_i.cntct_honorific, TEXT('')), COALESCE(_i.cntct_first_name, TEXT('')), COALESCE(_i.cntct_middle, TEXT('')), COALESCE(_i.cntct_last_name, TEXT('')), COALESCE(_i.cntct_suffix, TEXT('')), COALESCE(_i.cntct_phone, TEXT('')), COALESCE(_i.cntct_title, TEXT('')), COALESCE(_i.cntct_fax, TEXT('')), COALESCE(_i.cntct_email, TEXT('')), COALESCE(_i.addr_line1, TEXT('')), COALESCE(_i.addr_line2, TEXT('')), COALESCE(_i.addr_line3, TEXT('')), COALESCE(_i.addr_city, TEXT('')), COALESCE(_i.addr_state, TEXT('')), COALESCE(_i.addr_postalcode, TEXT('')), COALESCE(_i.addr_country, TEXT('')) ); END IF; END IF; SELECT NEXTVAL('poitem_poitem_id_seq') INTO _poitemid; SELECT (COALESCE(MAX(poitem_linenumber), 0) + 1) INTO _polinenumber FROM poitem WHERE (poitem_pohead_id = _poheadid); SELECT COALESCE(itemtax_taxtype_id, -1) INTO _taxtypeid FROM itemtax WHERE (itemtax_item_id = _i.itemsrc_item_id); IF (pPrice IS NULL) THEN SELECT itemsrcPrice(pItemSourceId, COALESCE(_s.cohead_warehous_id, -1), pDropShip, COALESCE(pQty, _s.orderqty), COALESCE(_i.vend_curr_id, baseCurrId()), CURRENT_DATE) INTO _price; ELSE _price := pPrice; END IF; raise notice '_price=%', _price; IF (pDropShip) THEN INSERT INTO poitem ( poitem_id, poitem_status, poitem_pohead_id, poitem_linenumber, poitem_duedate, poitem_itemsite_id, poitem_vend_item_descrip, poitem_vend_uom, poitem_invvenduomratio, poitem_qty_ordered, poitem_unitprice, poitem_vend_item_number, poitem_itemsrc_id, poitem_order_id, poitem_order_type, poitem_prj_id, poitem_stdcost, poitem_manuf_name, poitem_manuf_item_number, poitem_manuf_item_descrip, poitem_taxtype_id, poitem_comments ) VALUES ( _poitemid, 'U', _poheadid, _polinenumber, COALESCE(pDueDate, _s.coitem_scheddate), _s.coitem_itemsite_id, COALESCE(_i.itemsrc_vend_item_descrip, TEXT('')), COALESCE(_i.itemsrc_vend_uom, TEXT('')), COALESCE(_i.itemsrc_invvendoruomratio, 1.00), (COALESCE(pQty, _s.orderqty) / COALESCE(_i.itemsrc_invvendoruomratio, 1.00)), _price, COALESCE(_i.itemsrc_vend_item_number, TEXT('')), pItemSourceId, pCoitemId, 'S', _s.cohead_prj_id, stdcost(_i.itemsrc_item_id), COALESCE(_i.itemsrc_manuf_name, TEXT('')), COALESCE(_i.itemsrc_manuf_item_number, TEXT('')), COALESCE(_i.itemsrc_manuf_item_descrip, TEXT('')), _taxtypeid, COALESCE(_s.coitem_memo, TEXT(''))); ELSE INSERT INTO poitem ( poitem_id, poitem_status, poitem_pohead_id, poitem_linenumber, poitem_duedate, poitem_itemsite_id, poitem_vend_item_descrip, poitem_vend_uom, poitem_invvenduomratio, poitem_qty_ordered, poitem_unitprice, poitem_vend_item_number, poitem_itemsrc_id, poitem_order_id, poitem_order_type, poitem_prj_id, poitem_stdcost, poitem_manuf_name, poitem_manuf_item_number, poitem_manuf_item_descrip, poitem_taxtype_id ) VALUES ( _poitemid, 'U', _poheadid, _polinenumber, COALESCE(pDueDate, _s.coitem_scheddate), _s.coitem_itemsite_id, COALESCE(_i.itemsrc_vend_item_descrip, TEXT('')), COALESCE(_i.itemsrc_vend_uom, TEXT('')), COALESCE(_i.itemsrc_invvendoruomratio, 1.00), (COALESCE(pQty, _s.orderqty) / COALESCE(_i.itemsrc_invvendoruomratio, 1.00)), _price, COALESCE(_i.itemsrc_vend_item_number, TEXT('')), pItemSourceId, pCoitemId, 'S', _s.cohead_prj_id, stdcost(_i.itemsrc_item_id), COALESCE(_i.itemsrc_manuf_name, TEXT('')), COALESCE(_i.itemsrc_manuf_item_number, TEXT('')), COALESCE(_i.itemsrc_manuf_item_descrip, TEXT('')), _taxtypeid ); END IF; -- Copy characteristics from the coitem to the poitem INSERT INTO charass ( charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default, charass_price ) SELECT 'PI', _poitemid, charass_char_id, charass_value, charass_default, charass_price FROM charass WHERE ( (charass_target_type='SI') AND (charass_target_id=pCoitemId) ); UPDATE coitem SET coitem_order_type = 'P', coitem_order_id = _poitemid WHERE ( coitem_id = pCoitemId ); -- Generate the PoItemCreatedBySo event notice INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id , 'P', poitem_id, itemsite_warehous_id, (pohead_number || '-' || poitem_linenumber || ': ' || item_number) FROM evntnot JOIN evnttype ON (evntnot_evnttype_id=evnttype_id) JOIN itemsite ON (evntnot_warehous_id=itemsite_warehous_id) JOIN item ON (itemsite_item_id=item_id) JOIN poitem ON (poitem_itemsite_id=itemsite_id) JOIN pohead ON (poitem_pohead_id=pohead_id) WHERE ( (poitem_id=_poitemid) AND (poitem_duedate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name='PoItemCreatedBySo') ); RETURN _poitemid; END; $_$; ^DROP FUNCTION public.createpurchasetosale(integer, integer, boolean, numeric, date, numeric); publicadminfalse8399212551691517createrecurringinvoices()FUNCTIONCREATE FUNCTION createrecurringinvoices() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'createRecurringInvoices() has been deprecated; use createRecurringItems(NULL, ''I'') instead.'; RETURN createRecurringItems(NULL, 'I'); END; $$; 0DROP FUNCTION public.createrecurringinvoices(); publicadminfalse8399212551691518#createrecurringitems(integer, text)FUNCTIONtCREATE FUNCTION createrecurringitems(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pParentid ALIAS FOR $1; -- if NULL then all items with the given pType pType TEXT := UPPER($2); -- if NULL then all types -- if both are null then all items of all types _copystmt TEXT; _count INTEGER := 0; _countstmt TEXT; _existcnt INTEGER; _id INTEGER; _interval TEXT; _last TIMESTAMP WITH TIME ZONE; _loopcount INTEGER := 1; _maxstmt TEXT; _maxdate TIMESTAMP WITH TIME ZONE := endOfTime(); _result INTEGER := 0; _next TIMESTAMP WITH TIME ZONE; _r RECORD; _rt RECORD; _tmp INTEGER; BEGIN RAISE DEBUG 'createRecurringItems(%, %) entered', pParentid, pType; FOR _r IN SELECT * FROM recur WHERE ((COALESCE(recur_end, endOfTime()) >= CURRENT_TIMESTAMP) AND (pParentid IS NULL OR recur_parent_id=pParentid) AND (pType IS NULL OR UPPER(recur_parent_type)=UPPER(pType))) LOOP RAISE DEBUG 'createRecurringItems looking at recur %, %', _r.recur_id, _r.recur_parent_type; _r.recur_max := COALESCE(_r.recur_max, CAST(fetchMetricValue('RecurringInvoiceBuffer') AS INTEGER), 1); _interval := CASE _r.recur_period WHEN 'Y' THEN ' year' WHEN 'M' THEN ' month' WHEN 'W' THEN ' week' WHEN 'D' THEN ' day' WHEN 'H' THEN ' hour' WHEN 'm' THEN ' minute' ELSE NULL END; IF (_interval IS NULL OR COALESCE(_r.recur_freq, 0) <= 0) THEN RAISE EXCEPTION 'Unknown recurrence frequency % % ON % %', _r.recur_freq, _r.recur_period, _r.recur_parent_type, _r.recur_parent_id; END IF; SELECT * INTO _rt FROM recurtype WHERE (UPPER(recurtype_type)=UPPER(pType)); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count <= 0) THEN RETURN -10; END IF; -- if the recurrence type has a max lookahead window, use it IF (_r.recur_parent_type = 'I') THEN _maxdate := CURRENT_TIMESTAMP + CAST(fetchMetricText('RecurringInvoiceBuffer') || ' days' AS INTERVAL); END IF; IF (_r.recur_parent_type = 'V') THEN _maxdate := CURRENT_TIMESTAMP + CAST(fetchMetricText('RecurringVoucherBuffer') || ' days' AS INTERVAL); END IF; IF (_maxdate > _r.recur_end) THEN -- if recur_end is null, _maxdate is ok _maxdate = _r.recur_end; END IF; -- build statements dynamically from the recurtype table because packages -- might also require recurring items. this way the algorithm is fixed -- and the details are data-driven _countstmt := 'SELECT COUNT(*) FROM [fulltable]' || ' WHERE (($1=[table]_recurring_[table]_id)' || ' AND NOT([done]) ' || ' AND ([limit]));'; _countstmt := REPLACE(_countstmt, '[fulltable]', _rt.recurtype_table); _countstmt := REPLACE(_countstmt, '[table]', REGEXP_REPLACE(_rt.recurtype_table, E'.*\\.', '')); _countstmt := REPLACE(_countstmt, '[done]', _rt.recurtype_donecheck); _countstmt := REPLACE(_countstmt, '[limit]', COALESCE(_rt.recurtype_limit, 'TRUE')); _maxstmt := 'SELECT MAX([schedcol]) FROM [fulltable]' || ' WHERE (($1=[table]_recurring_[table]_id)' || ' AND ([limit]));'; _maxstmt := REPLACE(_maxstmt, '[schedcol]', _rt.recurtype_schedcol); _maxstmt := REPLACE(_maxstmt, '[fulltable]',_rt.recurtype_table); _maxstmt := REPLACE(_maxstmt, '[table]', REGEXP_REPLACE(_rt.recurtype_table, E'.*\\.', '')); _maxstmt := REPLACE(_maxstmt, '[limit]', COALESCE(_rt.recurtype_limit, 'TRUE')); _copystmt := 'SELECT [copy]($1, [datetime] [more]);'; _copystmt := REPLACE(_copystmt, '[copy]', _rt.recurtype_copyfunc); _copystmt := REPLACE(_copystmt, '[datetime]', CASE WHEN UPPER(_rt.recurtype_copyargs[2])='DATE' THEN 'CAST(''$2'' AS DATE)' ELSE '''$2''' END); -- 8.4+: -- _copystmt := REPLACE(_copystmt, '[more]', -- REPEAT(', NULL', -- array_length(_rt.recurtype_copyargs) - 2)); _tmp := CAST(REPLACE(REGEXP_REPLACE(array_dims(_rt.recurtype_copyargs), '.*:', ''), ']', '') AS INTEGER); _copystmt := REPLACE(_copystmt, '[more]', REPEAT(', NULL', _tmp - 2)); EXECUTE REPLACE(_countstmt, '$1', _r.recur_parent_id::TEXT) INTO _existcnt; EXECUTE REPLACE(_maxstmt, '$1', _r.recur_parent_id::TEXT) INTO _last; RAISE DEBUG E'% got %, % got %', _countstmt, _existcnt, _maxstmt, _last; _next := _last; _loopcount := 1; WHILE (_existcnt < _r.recur_max AND _next < _maxdate) LOOP _next := _last + CAST(_r.recur_freq * _loopcount || _interval AS INTERVAL); RAISE DEBUG 'createrecurringitems looping, existcnt = %, max = %, is % between % and %?', _existcnt, _r.recur_max, _next, _r.recur_start, _r.recur_end; IF (_next BETWEEN _r.recur_start AND _maxdate) THEN RAISE DEBUG 'createrecurringitems executing % with % and %', _copystmt, _r.recur_parent_id, _next; -- 8.4+: EXECUTE _copystmt INTO _id USING _r.recur_parent_id, _next; EXECUTE REPLACE(REPLACE(_copystmt, '$1', _r.recur_parent_id::TEXT), '$2', _next::TEXT) INTO _id; RAISE DEBUG 'Copying for % returned %', _next, _id; _result := _result + 1; _existcnt := _existcnt + 1; END IF; _loopcount := _loopcount + 1; END LOOP; END LOOP; RETURN _result; END; $_$; :DROP FUNCTION public.createrecurringitems(integer, text); publicadminfalse8399212551691520|createtodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, text)FUNCTIONCREATE FUNCTION createtodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN createTodoItem($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, NULL); END; $_$; DROP FUNCTION public.createtodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, text); publicadminfalse8399212551691521createtodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, text, integer)FUNCTIONd CREATE FUNCTION createtodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ptodoid ALIAS FOR $1; pusername ALIAS FOR $2; pname ALIAS FOR $3; pdesc ALIAS FOR $4; pincdtid ALIAS FOR $5; pcrmacctid ALIAS FOR $6; pOpheadid ALIAS FOR $7; pstarted ALIAS FOR $8; pdue ALIAS FOR $9; pstatus ALIAS FOR $10; passigned ALIAS FOR $11; pcompleted ALIAS FOR $12; ppriority ALIAS FOR $13; pnotes ALIAS FOR $14; powner ALIAS FOR $15; pcntctid ALIAS FOR $16; _todoid INTEGER; _priority INTEGER := ppriority; _status CHARACTER(1) := pstatus; _incdtid INTEGER := pincdtid; _crmacctid INTEGER := pcrmacctid; _opheadid INTEGER := pOpheadid; _assigned DATE := passigned; _result INTEGER; BEGIN IF (pusername IS NULL OR pusername = '') THEN RETURN -1; END IF; IF (pname IS NULL OR pname = '') THEN RETURN -2; END IF; IF (pdue IS NULL) THEN RETURN -3; END IF; IF (pcompleted IS NOT NULL) THEN _status := 'C'; ELSIF (pstatus IS NULL AND pstarted IS NOT NULL) THEN _status := 'I'; ELSIF (pstatus IS NULL) THEN _status := 'N'; END IF; IF (_incdtid <= 0) THEN _incdtid := NULL; END IF; IF (_crmacctid <= 0) THEN _crmacctid := NULL; END IF; IF (_opheadid <= 0) THEN _opheadid := NULL; END IF; IF (_priority <= 0) THEN _priority := NULL; END IF; IF (_assigned IS NULL) THEN _assigned := CURRENT_DATE; END IF; IF (ptodoid IS NULL) THEN SELECT NEXTVAL('todoitem_todoitem_id_seq') INTO _todoid; ELSE _todoid := ptodoid; END IF; INSERT INTO todoitem ( todoitem_id, todoitem_username, todoitem_name, todoitem_description, todoitem_incdt_id, todoitem_creator_username, todoitem_status, todoitem_active, todoitem_start_date, todoitem_due_date, todoitem_assigned_date, todoitem_completed_date, todoitem_priority_id, todoitem_notes, todoitem_crmacct_id, todoitem_ophead_id, todoitem_owner_username, todoitem_cntct_id ) VALUES ( _todoid, pusername, pname, pdesc, _incdtid, getEffectiveXtUser(), _status, TRUE, pstarted, pdue, _assigned, pcompleted, _priority, pnotes, _crmacctid, _opheadid, powner, pcntctid ); RETURN _todoid; END; $_$; DROP FUNCTION public.createtodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, text, integer); publicadminfalse83992Q12551691522createurl(text, text)FUNCTION.CREATE FUNCTION createurl(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ declare pTitle ALIAS FOR $1; pUrl ALIAS FOR $2; _id integer; begin _id := nextval('urlinfo_url_id_seq'); insert into urlinfo (url_id, url_title, url_url) values (_id, pTitle, pUrl); return _id; end; $_$; ,DROP FUNCTION public.createurl(text, text); publicadminfalse8399212552008368createuser(text, boolean)FUNCTIONCREATE FUNCTION createuser(pusername text, pcreateusers boolean) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (pCreateUsers) THEN EXECUTE 'CREATE USER "' || pUsername || '" CREATEROLE IN GROUP xtrole;'; ELSE EXECUTE 'CREATE USER "' || pUsername || '" NOCREATEROLE IN GROUP xtrole;'; END IF; RETURN 1; END; $$; GDROP FUNCTION public.createuser(pusername text, pcreateusers boolean); publicadminfalse8399212551691524Lcreatewo(integer, integer, numeric, integer, date, text, character, integer)FUNCTIONCREATE FUNCTION createwo(integer, integer, numeric, integer, date, text, character, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pQtyOrdered ALIAS FOR $3; pLeadTime ALIAS FOR $4; pDueDate ALIAS FOR $5; pProductionNotes ALIAS FOR $6; pParentType ALIAS FOR $7; pParentId ALIAS FOR $8; BEGIN RETURN createWo( pWoNumber, pItemsiteid, 1, pQtyOrdered, (pDueDate - pLeadTime), pDueDate, pProductionNotes, pParentType, pParentId, -1 ); END; $_$; cDROP FUNCTION public.createwo(integer, integer, numeric, integer, date, text, character, integer); publicadminfalse39928125516915258createwo(integer, integer, numeric, integer, date, text)FUNCTION`CREATE FUNCTION createwo(integer, integer, numeric, integer, date, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pQtyOrdered ALIAS FOR $3; pLeadTime ALIAS FOR $4; pDueDate ALIAS FOR $5; pProductionNotes ALIAS FOR $6; BEGIN RETURN createWo( pWoNumber, pItemsiteid, 1, pQtyOrdered, (pDueDate - pLeadTime), pDueDate, pProductionNotes, NULL, NULL, -1 ); END; $_$; ODROP FUNCTION public.createwo(integer, integer, numeric, integer, date, text); publicadminfalse83992R125516915265createwo(integer, integer, numeric, date, date, text)FUNCTION=CREATE FUNCTION createwo(integer, integer, numeric, date, date, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pQtyOrdered ALIAS FOR $3; pStartDate ALIAS FOR $4; pDueDate ALIAS FOR $5; pProductionNotes ALIAS FOR $6; BEGIN RETURN createWo( pWoNumber, pItemsiteid, 1, pQtyOrdered, pStartDate, pDueDate, pProductionNotes, NULL, NULL, -1); END; $_$; LDROP FUNCTION public.createwo(integer, integer, numeric, date, date, text); publicadminfalse39928 12551691527Ucreatewo(integer, integer, integer, numeric, integer, date, text, character, integer)FUNCTIONCREATE FUNCTION createwo(integer, integer, integer, numeric, integer, date, text, character, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pPriority ALIAS FOR $3; pQtyOrdered ALIAS FOR $4; pLeadTime ALIAS FOR $5; pDueDate ALIAS FOR $6; pProductionNotes ALIAS FOR $7; pParentType ALIAS FOR $8; pParentId ALIAS FOR $9; BEGIN RETURN createWo(pWoNumber, pItemsiteid, pPriority, pQtyOrdered, (pDueDate - pLeadTime), pDueDate, pProductionNotes, pParentType, pParentId, -1); END; $_$; lDROP FUNCTION public.createwo(integer, integer, integer, numeric, integer, date, text, character, integer); publicadminfalse3992812551691528^createwo(integer, integer, integer, numeric, integer, date, text, character, integer, integer)FUNCTION CREATE FUNCTION createwo(integer, integer, integer, numeric, integer, date, text, character, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pPriority ALIAS FOR $3; pQtyOrdered ALIAS FOR $4; pLeadTime ALIAS FOR $5; pDueDate ALIAS FOR $6; pProductionNotes ALIAS FOR $7; pParentType ALIAS FOR $8; pParentId ALIAS FOR $9; pProjectId ALIAS FOR $10; BEGIN RETURN createWo(pWoNumber, pItemsiteid, pPriority, pQtyOrdered, (pDueDate - pLeadTime), pDueDate, pProductionNotes, pParentType, pParentId, pProjectId); END; $_$; uDROP FUNCTION public.createwo(integer, integer, integer, numeric, integer, date, text, character, integer, integer); publicadminfalse3992812551691529[createwo(integer, integer, integer, numeric, date, date, text, character, integer, integer)FUNCTIONfCREATE FUNCTION createwo(integer, integer, integer, numeric, date, date, text, character, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pPriority ALIAS FOR $3; pQtyOrdered ALIAS FOR $4; pStartDate ALIAS FOR $5; pDueDate ALIAS FOR $6; pProductionNotes ALIAS FOR $7; pParentType ALIAS FOR $8; pParentId ALIAS FOR $9; pProjectId ALIAS FOR $10; _woid INTEGER; _result INTEGER; _parentType char(1); _bomrevid INTEGER; _boorevid INTEGER; BEGIN SELECT getActiveRevId('BOM',itemsite_item_id) INTO _bomrevid FROM itemsite WHERE (itemsite_id=pItemsiteid); SELECT getActiveRevId('BOO',itemsite_item_id) INTO _boorevid FROM itemsite WHERE (itemsite_id=pItemsiteid); RETURN createWo(pWoNumber, pItemsiteid, pPriority, pQtyOrdered, pStartDate, pDueDate, pProductionNotes, pParentType, pParentId, pProjectId, _bomrevid, _boorevid, NULL); END; $_$; rDROP FUNCTION public.createwo(integer, integer, integer, numeric, date, date, text, character, integer, integer); publicadminfalse83992U12551691530pcreatewo(integer, integer, integer, numeric, integer, date, text, character, integer, integer, integer, integer)FUNCTIONmCREATE FUNCTION createwo(integer, integer, integer, numeric, integer, date, text, character, integer, integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pPriority ALIAS FOR $3; pQtyOrdered ALIAS FOR $4; pLeadTime ALIAS FOR $5; pDueDate ALIAS FOR $6; pProductionNotes ALIAS FOR $7; pParentType ALIAS FOR $8; pParentId ALIAS FOR $9; pProjectId ALIAS FOR $10; pBomRevId ALIAS FOR $11; pBooRevId ALIAS FOR $12; BEGIN RETURN createWo(pWoNumber, pItemsiteid, pPriority, pQtyOrdered, (pDueDate - pLeadTime), pDueDate, pProductionNotes, pParentType, pParentId, pProjectId, pBomRevId, pBooRevId, NULL); END; $_$; DROP FUNCTION public.createwo(integer, integer, integer, numeric, integer, date, text, character, integer, integer, integer, integer); publicadminfalse8399212551691531mcreatewo(integer, integer, integer, numeric, date, date, text, character, integer, integer, integer, integer)FUNCTION^CREATE FUNCTION createwo(integer, integer, integer, numeric, date, date, text, character, integer, integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pPriority ALIAS FOR $3; pQtyOrdered ALIAS FOR $4; pStartDate ALIAS FOR $5; pDueDate ALIAS FOR $6; pProductionNotes ALIAS FOR $7; pParentType ALIAS FOR $8; pParentId ALIAS FOR $9; pProjectId ALIAS FOR $10; pBomRevId ALIAS FOR $11; pBooRevId ALIAS FOR $12; BEGIN RETURN createWo(pWoNumber, pItemsiteid, pPriority, pQtyOrdered, pStartDate, pDueDate, pProductionNotes, pParentType, pParentId, pProjectId, pBomRevId, pBooRevId, NULL); END; $_$; DROP FUNCTION public.createwo(integer, integer, integer, numeric, date, date, text, character, integer, integer, integer, integer); publicadminfalse3992812551691532screatewo(integer, integer, integer, numeric, date, date, text, character, integer, integer, integer, integer, text)FUNCTION CREATE FUNCTION createwo(integer, integer, integer, numeric, date, date, text, character, integer, integer, integer, integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pPriority ALIAS FOR $3; pQtyOrdered ALIAS FOR $4; pStartDate ALIAS FOR $5; pDueDate ALIAS FOR $6; pProductionNotes ALIAS FOR $7; pParentType ALIAS FOR $8; pParentId ALIAS FOR $9; pProjectId ALIAS FOR $10; pBomRevId ALIAS FOR $11; pBooRevId ALIAS FOR $12; pCosMethod ALIAS FOR $13; _startDate DATE; _woid INTEGER; _result INTEGER; _parentType char(1); _parentId INTEGER; _cosmethod char(1); _itemsite RECORD; BEGIN _parentType := COALESCE(pParentType, ' '); _parentId := COALESCE(pParentId, -1); SELECT * INTO _itemsite FROM itemsite WHERE itemsite_id = pItemsiteid; -- Check to make sure the itemsite specified is supplied at itemsite IF (NOT _itemsite.itemsite_wosupply) THEN RETURN -1; END IF; -- Check to make sure if this is a job item that it is tied to a sales order -- Or if it is just an avarage costed item IF (pCosMethod IN ('D', 'P')) THEN _cosmethod := pCosMethod; ELSE IF (_itemsite.itemsite_costmethod = 'J') THEN IF (_parentType = ' ' OR _parentId = -1) THEN RAISE EXCEPTION 'Work Orders for Item Sites that are Job cost must have a parent order.'; ELSE SELECT COALESCE(itemsite_cosdefault,fetchmetrictext('JobItemCosDefault'),'D') INTO _cosmethod FROM itemsite WHERE itemsite_id=pItemsiteid; END IF; ELSIF (_itemsite.itemsite_costmethod = 'A') THEN _cosmethod := COALESCE(_itemsite.itemsite_cosdefault,fetchmetrictext('JobItemCosDefault'),'D'); END IF; END IF; -- Check to see if the site calendar metric is set, and if so adjust the start date if necessary IF (fetchmetricbool('UseSiteCalendar')) THEN _startDate := calculatenextworkingdate(_itemsite.itemsite_warehous_id, pStartDate, 0); IF (_startDate != pStartDate) THEN _startDate := calculatenextworkingdate(_itemsite.itemsite_warehous_id, pDueDate, -_itemsite.itemsite_leadtime); END IF; ELSE _startDate := pStartDate; END IF; -- Grab the next wo_id SELECT NEXTVAL('wo_wo_id_seq') INTO _woid; -- Create the W/O INSERT INTO wo ( wo_id, wo_number, wo_subnumber, wo_itemsite_id, wo_priority, wo_ordtype, wo_ordid, wo_status, wo_startdate, wo_duedate, wo_qtyord, wo_qtyrcv, wo_prodnotes, wo_prj_id, wo_bom_rev_id, wo_boo_rev_id, wo_cosmethod ) SELECT _woid, pWoNumber, nextWoSubnumber(pWoNumber), itemsite_id, pPriority, _parentType, pParentId, 'O', _startDate, pDueDate, roundQty(item_fractional, pQtyOrdered), 0, pProductionNotes, pProjectId, pBomRevid, pBooRevid, _cosmethod FROM itemsite, item WHERE ((itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid)); -- Explode the newly created W/O according to metrics IF ( ( SELECT (metric_value='t') FROM metric WHERE (metric_name='AutoExplodeWO') ) ) THEN SELECT explodeWo( _woid, ( SELECT (metric_value = 'M') FROM metric WHERE (metric_name='WOExplosionLevel') ) ) INTO _result; ELSE _result := _woid; END IF; RETURN _result; END; $_$; DROP FUNCTION public.createwo(integer, integer, integer, numeric, date, date, text, character, integer, integer, integer, integer, text); publicadminfalse83992X12551691533?createwomaterial(integer, integer, character, numeric, numeric)FUNCTIONCREATE FUNCTION createwomaterial(integer, integer, character, numeric, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pWoid ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pIssueMethod ALIAS FOR $3; pQtyPer ALIAS FOR $4; pScrap ALIAS FOR $5; _result INTEGER; BEGIN SELECT createWoMaterial(pWoid, pItemsiteid, pIssueMethod, item_inv_uom_id, pQtyPer, pScrap) INTO _result FROM itemsite JOIN item ON (itemsite_item_id=item_id) WHERE(itemsite_id=pItemsiteid); RETURN _result; END; $_$; VDROP FUNCTION public.createwomaterial(integer, integer, character, numeric, numeric); publicadminfalse83992Y12551691534Hcreatewomaterial(integer, integer, character, integer, numeric, numeric)FUNCTIONCREATE FUNCTION createwomaterial(integer, integer, character, integer, numeric, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pWoid ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pIssueMethod ALIAS FOR $3; pUomId ALIAS FOR $4; pQtyPer ALIAS FOR $5; pScrap ALIAS FOR $6; _womatlid INTEGER; BEGIN SELECT createWoMaterial(pWoid,pItemsiteid,pIssueMethod,pUomId,pQtyPer,pScrap,-1, NULL, NULL) INTO _womatlid; RETURN _womatlid; END; $_$; _DROP FUNCTION public.createwomaterial(integer, integer, character, integer, numeric, numeric); publicadminfalse83992Z12551691535Qcreatewomaterial(integer, integer, character, integer, numeric, numeric, integer)FUNCTIONCREATE FUNCTION createwomaterial(integer, integer, character, integer, numeric, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pWoid ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pIssueMethod ALIAS FOR $3; pUomId ALIAS FOR $4; pQtyPer ALIAS FOR $5; pScrap ALIAS FOR $6; pBomitemId ALIAS FOR $7; _womatlid INTEGER; BEGIN _womatlid := (SELECT NEXTVAL('womatl_womatl_id_seq')); INSERT INTO womatl ( womatl_id, womatl_wo_id, womatl_itemsite_id, womatl_issuemethod, womatl_uom_id, womatl_qtyper, womatl_scrap, womatl_qtyreq, womatl_qtyiss, womatl_qtywipscrap, womatl_wooper_id, womatl_bomitem_id, womatl_duedate ) SELECT _womatlid, wo_id, pItemsiteid, pIssueMethod, pUomId, pQtyPer, pScrap, roundQty(item_fractional, (wo_qtyord * (pQtyPer * (1 + pScrap)))), 0, 0, -1, pBomitemId, wo_startdate FROM wo, itemsite, item WHERE ( (itemsite_item_id=item_id) AND (wo_id=pWoid) AND (itemsite_id=pItemsiteid) ); UPDATE wo SET wo_adhoc=TRUE WHERE (wo_id=pWoid); UPDATE wo SET wo_status='E' WHERE ( (wo_status='O') AND (wo_id=pWoid) ); RETURN _womatlid; END; $_$; hDROP FUNCTION public.createwomaterial(integer, integer, character, integer, numeric, numeric, integer); publicadminfalse39928[12551691536]createwomaterial(integer, integer, character, integer, numeric, numeric, integer, text, text)FUNCTION CREATE FUNCTION createwomaterial(integer, integer, character, integer, numeric, numeric, integer, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pWoid ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pIssueMethod ALIAS FOR $3; pUomId ALIAS FOR $4; pQtyPer ALIAS FOR $5; pScrap ALIAS FOR $6; pBomitemId ALIAS FOR $7; pNotes ALIAS FOR $8; pRef ALIAS FOR $9; _womatlid INTEGER; _p RECORD; BEGIN _womatlid := (SELECT NEXTVAL('womatl_womatl_id_seq')); INSERT INTO womatl ( womatl_id, womatl_wo_id, womatl_itemsite_id, womatl_issuemethod, womatl_uom_id, womatl_qtyper, womatl_scrap, womatl_qtyreq, womatl_qtyiss, womatl_qtywipscrap, womatl_wooper_id, womatl_bomitem_id, womatl_duedate, womatl_notes, womatl_ref ) SELECT _womatlid, wo_id, pItemsiteid, pIssueMethod, pUomId, pQtyPer, pScrap, roundQty(item_fractional, (wo_qtyord * (pQtyPer * (1 + pScrap)))), 0, 0, -1, pBomitemId, wo_startdate, pNotes, pRef FROM wo, itemsite, item WHERE ( (itemsite_item_id=item_id) AND (wo_id=pWoid) AND (itemsite_id=pItemsiteid) ); -- Handle all of the Phantom material requirements WHILE ( ( SELECT COUNT(*) FROM womatl, itemsite, item WHERE ( (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (womatl_wo_id=pWoid) AND (item_type='F') ) ) > 0 ) LOOP FOR _p IN SELECT wo_qtyord, wo_startdate, womatl_id, womatl_wooper_id FROM wo, womatl, itemsite, item WHERE ( (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_type='F') AND (womatl_wo_id=wo_id) AND (wo_id=pWoid) ) LOOP INSERT INTO womatl ( womatl_wo_id, womatl_itemsite_id, womatl_wooper_id, womatl_schedatwooper, womatl_duedate, womatl_uom_id, womatl_qtyper, womatl_scrap, womatl_qtyreq, womatl_qtyiss, womatl_qtywipscrap, womatl_lastissue, womatl_lastreturn, womatl_cost, womatl_picklist, womatl_createwo, womatl_issuemethod, womatl_notes, womatl_ref ) SELECT pWoid, cs.itemsite_id, _p.womatl_wooper_id, womatl_schedatwooper, womatl_duedate, bomitem_uom_id, (bomitem_qtyper * womatl_qtyper), bomitem_scrap, roundQty(itemuomfractionalbyuom(bomitem_item_id, bomitem_uom_id), (_p.wo_qtyord * bomitem_qtyper * womatl_qtyper * (1 + bomitem_scrap))), 0, 0, startOfTime(), startOfTime(), 0, ci.item_picklist, ( (ci.item_type='M') AND (bomitem_createwo) ), bomitem_issuemethod, bomitem_notes, bomitem_ref FROM wo, womatl, bomitem, itemsite AS cs, itemsite AS ps, item AS ci, item AS pi WHERE ( (womatl_itemsite_id=ps.itemsite_id) AND (womatl_wo_id=wo_id) AND (bomitem_parent_item_id=pi.item_id) AND (bomitem_item_id=ci.item_id) AND (ps.itemsite_warehous_id=cs.itemsite_warehous_id) AND (cs.itemsite_item_id=ci.item_id) AND (ps.itemsite_item_id=pi.item_id) AND (woEffectiveDate(_p.wo_startdate) BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (womatl_id=_p.womatl_id)); DELETE FROM womatl WHERE (womatl_id=_p.womatl_id); END LOOP; END LOOP; UPDATE wo SET wo_adhoc=TRUE WHERE (wo_id=pWoid); UPDATE wo SET wo_status='E' WHERE ( (wo_status='O') AND (wo_id=pWoid) ); RETURN _womatlid; END; $_$; tDROP FUNCTION public.createwomaterial(integer, integer, character, integer, numeric, numeric, integer, text, text); publicadminfalse83992!12551691537Hcreatewomaterial(integer, integer, character, numeric, numeric, numeric)FUNCTIONCREATE FUNCTION createwomaterial(integer, integer, character, numeric, numeric, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pIssueMethod ALIAS FOR $3; pQtyFxd ALIAS FOR $4; pQtyPer ALIAS FOR $5; pScrap ALIAS FOR $6; _result INTEGER; BEGIN SELECT createWoMaterial(pWoid, pItemsiteid, pIssueMethod, item_inv_uom_id, pQtyFxd, pQtyPer, pScrap) INTO _result FROM itemsite JOIN item ON (itemsite_item_id=item_id) WHERE(itemsite_id=pItemsiteid); RETURN _result; END; $_$; _DROP FUNCTION public.createwomaterial(integer, integer, character, numeric, numeric, numeric); publicadminfalse83992W12551691538Qcreatewomaterial(integer, integer, character, integer, numeric, numeric, numeric)FUNCTIONzCREATE FUNCTION createwomaterial(integer, integer, character, integer, numeric, numeric, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pIssueMethod ALIAS FOR $3; pUomId ALIAS FOR $4; pQtyFxd ALIAS FOR $5; pQtyPer ALIAS FOR $6; pScrap ALIAS FOR $7; _womatlid INTEGER; BEGIN SELECT createWoMaterial(pWoid,pItemsiteid,pIssueMethod,pUomId,pQtyFxd,pQtyPer,pScrap,-1, NULL, NULL) INTO _womatlid; RETURN _womatlid; END; $_$; hDROP FUNCTION public.createwomaterial(integer, integer, character, integer, numeric, numeric, numeric); publicadminfalse83992(12551691539fcreatewomaterial(integer, integer, character, integer, numeric, numeric, numeric, integer, text, text)FUNCTIONCREATE FUNCTION createwomaterial(integer, integer, character, integer, numeric, numeric, numeric, integer, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pItemsiteid ALIAS FOR $2; pIssueMethod ALIAS FOR $3; pUomId ALIAS FOR $4; pQtyFxd ALIAS FOR $5; pQtyPer ALIAS FOR $6; pScrap ALIAS FOR $7; pBomitemId ALIAS FOR $8; pNotes ALIAS FOR $9; pRef ALIAS FOR $10; _womatlid INTEGER; BEGIN SELECT createWoMaterial(pWoid,pItemsiteid,pIssueMethod,pUomId,pQtyFxd,pQtyPer,pScrap,pBomitemId,pNotes,pRef,NULL,NULL) INTO _womatlid; RETURN _womatlid; END; $_$; }DROP FUNCTION public.createwomaterial(integer, integer, character, integer, numeric, numeric, numeric, integer, text, text); publicadminfalse8399212551834009xcreatewomaterial(integer, integer, character, integer, numeric, numeric, numeric, integer, text, text, integer, boolean)FUNCTIONCREATE FUNCTION createwomaterial(pwoid integer, pitemsiteid integer, pissuemethod character, puomid integer, pqtyfxd numeric, pqtyper numeric, pscrap numeric, pbomitemid integer, pnotes text, pref text, pwooperid integer, ppicklist boolean) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _womatlid INTEGER; _p RECORD; BEGIN _womatlid := (SELECT NEXTVAL('womatl_womatl_id_seq')); INSERT INTO womatl ( womatl_id, womatl_wo_id, womatl_itemsite_id, womatl_issuemethod, womatl_uom_id, womatl_qtyfxd, womatl_qtyper, womatl_scrap, womatl_qtyreq, womatl_qtyiss, womatl_qtywipscrap, womatl_wooper_id, womatl_bomitem_id, womatl_duedate, womatl_notes, womatl_ref, womatl_picklist ) SELECT _womatlid, wo_id, pItemsiteid, pIssueMethod, pUomId, pQtyFxd, pQtyPer, pScrap, roundQty(item_fractional, (pQtyFxd + wo_qtyord * pQtyPer) * (1 + pScrap) ), 0, 0, COALESCE(pWooperId, -1), pBomitemId, wo_startdate, pNotes, pRef, COALESCE(pPickList, item_picklist) FROM wo, itemsite JOIN item ON (item_id=itemsite_item_id) WHERE ( (wo_id=pWoid) AND (itemsite_id=pItemsiteid) ); -- Handle all of the Phantom material requirements WHILE ( ( SELECT COUNT(*) FROM womatl, itemsite, item WHERE ( (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (womatl_wo_id=pWoid) AND (item_type='F') ) ) > 0 ) LOOP FOR _p IN SELECT wo_qtyord, wo_startdate, womatl_id, womatl_wooper_id FROM wo, womatl, itemsite, item WHERE ( (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_type='F') AND (womatl_wo_id=wo_id) AND (wo_id=pWoid) ) LOOP INSERT INTO womatl ( womatl_wo_id, womatl_itemsite_id, womatl_wooper_id, womatl_schedatwooper, womatl_duedate, womatl_uom_id, womatl_qtyfxd, womatl_qtyper, womatl_scrap, womatl_qtyreq, womatl_qtyiss, womatl_qtywipscrap, womatl_lastissue, womatl_lastreturn, womatl_cost, womatl_picklist, womatl_createwo, womatl_issuemethod, womatl_notes, womatl_ref ) SELECT pWoid, cs.itemsite_id, _p.womatl_wooper_id, womatl_schedatwooper, womatl_duedate, bomitem_uom_id, bomitem_qtyfxd, (bomitem_qtyper * womatl_qtyper), bomitem_scrap, roundQty(itemuomfractionalbyuom(bomitem_item_id, bomitem_uom_id), ((bomitem_qtyfxd + _p.wo_qtyord * bomitem_qtyper) * womatl_qtyper * (1 + bomitem_scrap))), 0, 0, startOfTime(), startOfTime(), 0, ci.item_picklist, ( (ci.item_type='M') AND (bomitem_createwo) ), bomitem_issuemethod, bomitem_notes, bomitem_ref FROM wo, womatl, bomitem, itemsite AS cs, itemsite AS ps, item AS ci, item AS pi WHERE ( (womatl_itemsite_id=ps.itemsite_id) AND (womatl_wo_id=wo_id) AND (bomitem_parent_item_id=pi.item_id) AND (bomitem_item_id=ci.item_id) AND (ps.itemsite_warehous_id=cs.itemsite_warehous_id) AND (cs.itemsite_item_id=ci.item_id) AND (ps.itemsite_item_id=pi.item_id) AND (woEffectiveDate(_p.wo_startdate) BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (womatl_id=_p.womatl_id)); DELETE FROM womatl WHERE (womatl_id=_p.womatl_id); END LOOP; END LOOP; UPDATE wo SET wo_adhoc=TRUE WHERE (wo_id=pWoid); UPDATE wo SET wo_status='E' WHERE ( (wo_status='O') AND (wo_id=pWoid) ); RETURN _womatlid; END; $$; DROP FUNCTION public.createwomaterial(pwoid integer, pitemsiteid integer, pissuemethod character, puomid integer, pqtyfxd numeric, pqtyper numeric, pscrap numeric, pbomitemid integer, pnotes text, pref text, pwooperid integer, ppicklist boolean); publicadminfalse39928*12551691540creditmemototal(integer)FUNCTION!CREATE FUNCTION creditmemototal(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCreditmemoId ALIAS FOR $1; _result NUMERIC; BEGIN -- TO DO: Add in line item taxes SELECT COALESCE(cmhead_freight,0.0) + COALESCE(cmhead_misc,0.0) + ( SELECT COALESCE(ROUND(SUM((cmitem_qtycredit * cmitem_qty_invuomratio) * cmitem_unitprice / cmitem_price_invuomratio), 2), 0.0) FROM cmitem WHERE (cmitem_cmhead_id=cmhead_id) ) + (SELECT COALESCE(SUM(tax) * -1, 0) AS tax FROM ( SELECT ROUND(SUM(taxdetail_tax),2) AS tax FROM tax JOIN calculateTaxDetailSummary('CM', cmhead_id, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id) AS data) INTO _result FROM cmhead WHERE (cmhead_id=pCreditmemoId); IF (NOT FOUND) THEN return 0; ELSE RETURN _result; END IF; END; $_$; /DROP FUNCTION public.creditmemototal(integer); publicadminfalse8399212591691541crmacctTABLECREATE TABLE crmacct ( crmacct_id integer NOT NULL, crmacct_number text NOT NULL, crmacct_name text, crmacct_active boolean DEFAULT true, crmacct_type character(1), crmacct_cust_id integer, crmacct_competitor_id integer, crmacct_partner_id integer, crmacct_prospect_id integer, crmacct_vend_id integer, crmacct_cntct_id_1 integer, crmacct_cntct_id_2 integer, crmacct_parent_id integer, crmacct_notes text, crmacct_taxauth_id integer, crmacct_owner_username text, crmacct_emp_id integer, crmacct_salesrep_id integer, crmacct_usr_username text, CONSTRAINT crmacct_crmacct_number_check CHECK ((crmacct_number <> ''::text)), CONSTRAINT crmacct_crmacct_type_check CHECK ((crmacct_type = ANY (ARRAY['I'::bpchar, 'O'::bpchar]))), CONSTRAINT crmacct_crmacct_usr_username_check CHECK ((btrim(crmacct_usr_username) <> ''::text)), CONSTRAINT crmacct_owner_username_check CHECK ((btrim(crmacct_owner_username) <> ''::text)) ); DROP TABLE public.crmacct; publicadminfalse576257635764576557668!00 TABLE crmacctCOMMENTCOMMENT ON TABLE crmacct IS 'CRM Accounts are umbrella records that tie together people and organizations with whom we have business relationships.'; publicadminfalse153!00COLUMN crmacct.crmacct_idCOMMENTLCOMMENT ON COLUMN crmacct.crmacct_id IS 'Internal ID of this CRM Account.'; publicadminfalse153!00COLUMN crmacct.crmacct_numberCOMMENTkCOMMENT ON COLUMN crmacct.crmacct_number IS 'Abbreviated human-readable identifier for this CRM Account.'; publicadminfalse153!00COLUMN crmacct.crmacct_nameCOMMENTLCOMMENT ON COLUMN crmacct.crmacct_name IS 'Long name of this CRM Account.'; publicadminfalse153!00COLUMN crmacct.crmacct_activeCOMMENT_COMMENT ON COLUMN crmacct.crmacct_active IS 'This CRM Account is available for new activity.'; publicadminfalse153!00COLUMN crmacct.crmacct_typeCOMMENTCOMMENT ON COLUMN crmacct.crmacct_type IS 'This indicates whether the CRM Account represents an organization or an individual person.'; publicadminfalse153!00COLUMN crmacct.crmacct_cust_idCOMMENTeCOMMENT ON COLUMN crmacct.crmacct_cust_id IS 'If this is not null, this CRM Account is a Customer.'; publicadminfalse153!00$COLUMN crmacct.crmacct_competitor_idCOMMENTCOMMENT ON COLUMN crmacct.crmacct_competitor_id IS 'For now, > 0 indicates this CRM Account is a competitor. Eventually this may become a foreign key to a table of competitors.'; publicadminfalse153!00!COLUMN crmacct.crmacct_partner_idCOMMENTCOMMENT ON COLUMN crmacct.crmacct_partner_id IS 'For now, > 0 indicates this CRM Account is a partner. Eventually this may become a foreign key to a table of partners.'; publicadminfalse153!00"COLUMN crmacct.crmacct_prospect_idCOMMENTiCOMMENT ON COLUMN crmacct.crmacct_prospect_id IS 'If this is not null, this CRM Account is a Prospect.'; publicadminfalse153!00COLUMN crmacct.crmacct_vend_idCOMMENTcCOMMENT ON COLUMN crmacct.crmacct_vend_id IS 'If this is not null, this CRM Account is a Vendor.'; publicadminfalse153!00!COLUMN crmacct.crmacct_cntct_id_1COMMENT\COMMENT ON COLUMN crmacct.crmacct_cntct_id_1 IS 'The primary contact for the CRM Account.'; publicadminfalse153!00!COLUMN crmacct.crmacct_cntct_id_2COMMENT^COMMENT ON COLUMN crmacct.crmacct_cntct_id_2 IS 'The secondary contact for the CRM Account.'; publicadminfalse153!00 COLUMN crmacct.crmacct_parent_idCOMMENTCOMMENT ON COLUMN crmacct.crmacct_parent_id IS 'The internal ID of an (optional) parent CRM Account. For example, if the current CRM Account is a subsidiary of another company, the crmacct_parent_id points to the CRM Account representing that parent company.'; publicadminfalse153!00COLUMN crmacct.crmacct_notesCOMMENT`COMMENT ON COLUMN crmacct.crmacct_notes IS 'Free-form comments pertaining to the CRM Account.'; publicadminfalse153!00!COLUMN crmacct.crmacct_taxauth_idCOMMENTmCOMMENT ON COLUMN crmacct.crmacct_taxauth_id IS 'If this is not null, this CRM Account is a Tax Authority.'; publicadminfalse153!00%COLUMN crmacct.crmacct_owner_usernameCOMMENTnCOMMENT ON COLUMN crmacct.crmacct_owner_username IS 'The application User responsible for this CRM Account.'; publicadminfalse153!00COLUMN crmacct.crmacct_emp_idCOMMENTeCOMMENT ON COLUMN crmacct.crmacct_emp_id IS 'If this is not null, this CRM Account is an Employee.'; publicadminfalse153!00"COLUMN crmacct.crmacct_salesrep_idCOMMENTjCOMMENT ON COLUMN crmacct.crmacct_salesrep_id IS 'If this is not null, this CRM Account is a Sales Rep.'; publicadminfalse153!00#COLUMN crmacct.crmacct_usr_usernameCOMMENTsCOMMENT ON COLUMN crmacct.crmacct_usr_username IS 'If this is not null, this CRM Account is an application User.'; publicadminfalse153!00crmacctACLREVOKE ALL ON TABLE crmacct FROM PUBLIC; REVOKE ALL ON TABLE crmacct FROM admin; GRANT ALL ON TABLE crmacct TO admin; GRANT ALL ON TABLE crmacct TO xtrole; publicadminfalse153/12551691551 crmacct()FUNCTIONCREATE FUNCTION crmacct() RETURNS SETOF crmacct LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row crmacct%ROWTYPE; _priv TEXT; _grant BOOLEAN; BEGIN -- This query will give us the most permissive privilege the user has been granted SELECT privilege, granted INTO _priv, _grant FROM privgranted WHERE privilege IN ('MaintainAllCRMAccounts','ViewAllCRMAccounts','MaintainPersonalCRMAccounts','ViewPersonalCRMAccounts') ORDER BY granted DESC, sequence LIMIT 1; -- If have an 'All' privilege return all results IF (_priv ~ 'All' AND _grant) THEN FOR _row IN SELECT * FROM crmacct LOOP RETURN NEXT _row; END LOOP; -- Otherwise if have any other grant, must be personal privilege. ELSIF (_grant) THEN FOR _row IN SELECT * FROM crmacct WHERE crmacct_owner_username = getEffectiveXtUser() LOOP RETURN NEXT _row; END LOOP; END IF; RETURN; END; $$; DROP FUNCTION public.crmacct(); publicadminfalse399282627!00FUNCTION crmacct()COMMENTwCOMMENT ON FUNCTION crmacct() IS 'A table function that returns CRM Account results according to privilege settings.'; publicadminfalse1327]12551691552crypt(text, text)FUNCTIONvCREATE FUNCTION crypt(text, text) RETURNS text LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_crypt'; (DROP FUNCTION public.crypt(text, text); publicadminfalse8^12551691553currconcat(integer)FUNCTIONCREATE FUNCTION currconcat(integer) RETURNS character varying LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE id ALIAS FOR $1; returnVal VARCHAR(15) := ''; BEGIN SELECT currConcat(curr_abbr, curr_symbol) INTO returnVal FROM curr_symbol WHERE curr_id = id; RETURN returnVal; END; $_$; *DROP FUNCTION public.currconcat(integer); publicadminfalse83992125516915540currconcat(character varying, character varying)FUNCTIONCREATE FUNCTION currconcat(character varying, character varying) RETURNS character varying LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE curr_abbr ALIAS FOR $1; curr_symbol ALIAS FOR $2; returnVal VARCHAR(15) := ''; BEGIN IF length(trim(curr_abbr)) > 0 AND length(trim(curr_symbol)) > 0 THEN returnVal := trim(curr_abbr) || ' - ' || trim(curr_symbol); ELSIF length(trim(curr_abbr)) > 0 THEN returnVal := curr_abbr; ELSIF length(trim(curr_symbol)) > 0 THEN returnVal := curr_symbol; END IF; RETURN returnVal; END; $_$; GDROP FUNCTION public.currconcat(character varying, character varying); publicadminfalse8399212551691555currentapmemonumber()FUNCTIONCREATE FUNCTION currentapmemonumber() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _number INTEGER; BEGIN SELECT orderseq_number INTO _number FROM orderseq WHERE (orderseq_name='APMemoNumber'); IF (NOT FOUND) THEN _number := 0; END IF; RETURN _number; END; $$; ,DROP FUNCTION public.currentapmemonumber(); publicadminfalse8399212551691556currentarmemonumber()FUNCTIONCREATE FUNCTION currentarmemonumber() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _number INTEGER; BEGIN SELECT orderseq_number INTO _number FROM orderseq WHERE (orderseq_name='ARMemoNumber'); IF (NOT FOUND) THEN _number := 0; END IF; RETURN _number; END; $$; ,DROP FUNCTION public.currentarmemonumber(); publicadminfalse3992812551691557currentcashrcptnumber()FUNCTIONCREATE FUNCTION currentcashrcptnumber() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _number INTEGER; BEGIN SELECT orderseq_number INTO _number FROM orderseq WHERE (orderseq_name='CashRcptNumber'); IF (NOT FOUND) THEN _number := 0; END IF; RETURN _number; END; $$; .DROP FUNCTION public.currentcashrcptnumber(); publicadminfalse83992N12551691558currentnumber(text)FUNCTIONCREATE FUNCTION currentnumber(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pName ALIAS FOR $1; _number INTEGER; BEGIN SELECT orderseq_number INTO _number FROM orderseq WHERE (orderseq_name=pName); IF (NOT FOUND) THEN _number := 0; END IF; RETURN _number; END; $_$; *DROP FUNCTION public.currentnumber(text); publicadminfalse83992T12551691559currexchangecheckoverlap()FUNCTIONCREATE FUNCTION currexchangecheckoverlap() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE numberOfOverlaps INTEGER NOT NULL := 0; curr_string VARCHAR(16); new_id INTEGER; BEGIN new_id := NEW.curr_id; -- ensure that effective date <= expiration date IF NEW.curr_effective > NEW.curr_expires THEN RAISE EXCEPTION 'Effective date % must be earlier than expiration date %', NEW.curr_effective, NEW.curr_expires; END IF; -- ensure new exchange rate does not overlap in time with any others SELECT count(*) INTO numberOfOverlaps FROM curr_rate WHERE curr_id = NEW.curr_id AND curr_rate_id != NEW.curr_rate_id AND ( (curr_effective BETWEEN NEW.curr_effective AND NEW.curr_expires OR curr_expires BETWEEN NEW.curr_effective AND NEW.curr_expires) OR (curr_effective <= NEW.curr_effective AND curr_expires >= NEW.curr_expires) ); IF numberOfOverlaps > 0 THEN SELECT currConcat(curr_symbol, curr_abbr) INTO curr_string FROM curr_symbol WHERE curr_id = new_id; RAISE EXCEPTION 'The date range % to % overlaps with another date range.', NEW.curr_effective, NEW.curr_expires; END IF; RETURN NEW; END; $$; 1DROP FUNCTION public.currexchangecheckoverlap(); publicadminfalse83992012551691560&currgain(integer, numeric, date, date)FUNCTIONqCREATE FUNCTION currgain(integer, numeric, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pId ALIAS FOR $1; pValue ALIAS FOR $2; pStart ALIAS FOR $3; pEnd ALIAS FOR $4; _start DATE; _end DATE; _gain NUMERIC; _multiplier INTEGER := 1; BEGIN IF (pEnd = pStart OR pValue = 0) THEN RETURN 0; END IF; IF (pStart > pEnd) THEN _start := pEnd; _end := pStart; _multiplier := -1; ELSE _start := pStart; _end := pEnd; END IF; _gain := currToBase(pId, pValue, _start) - currToBase(pId, pValue, _end); IF (_gain IS NULL) THEN RAISE EXCEPTION 'Missing exchange rate for curr_id % on % or %', pId, _start, _end; END IF; RETURN _gain * _multiplier; END; $_$; =DROP FUNCTION public.currgain(integer, numeric, date, date); publicadminfalse83992U12551691561 curronebase()FUNCTION#CREATE FUNCTION curronebase() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE baseCount INTEGER := 0; BEGIN IF NEW.curr_base = TRUE THEN SELECT count(*) INTO baseCount FROM curr_symbol WHERE curr_base = TRUE AND curr_id != NEW.curr_id; IF baseCount > 0 THEN RAISE EXCEPTION 'Cannot make % - % the base currency because one is already defined.', NEW.curr_symbol, NEW.curr_abbr; ELSE SELECT count(*) INTO baseCount FROM curr_rate WHERE curr_id = NEW.curr_id; IF baseCount = 0 THEN -- put a row in the curr_rate table to avoid special-case -- code for converting base currency to base currency INSERT INTO curr_rate (curr_id, curr_rate, curr_effective, curr_expires) VALUES (NEW.curr_id, 1, startOfTime(), endOfTime()); END IF; END IF; END IF; RETURN NEW; END; $$; $DROP FUNCTION public.curronebase(); publicadminfalse83992112551691562currrate(integer, date)FUNCTIONCREATE FUNCTION currrate(integer, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN currRate($1, NULL, $2); END; $_$; .DROP FUNCTION public.currrate(integer, date); publicadminfalse83992212551760976 currrate(integer, integer, date)FUNCTION~CREATE FUNCTION currrate(pfromcurr integer, ptocurr integer, pdate date) RETURNS numeric LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _fromRate NUMERIC := 1.0; _toRate NUMERIC := 1.0; _returnVal NUMERIC := 1.0; BEGIN IF pFromCurr = pToCurr THEN RETURN _returnVal; END IF; IF (pFromCurr IS NOT NULL) THEN SELECT curr_rate INTO _fromRate FROM curr_rate WHERE ( (curr_id=pFromCurr) AND (pDate BETWEEN curr_effective AND curr_expires) ); IF ( NOT FOUND) THEN RAISE EXCEPTION 'Currency exchange rate for currency % not found on %', pFromCurr, formatDate(pDate); END IF; END IF; IF (pToCurr IS NOT NULL) THEN SELECT curr_rate INTO _toRate FROM curr_rate WHERE ( (curr_id=pToCurr) AND (pDate BETWEEN curr_effective AND curr_expires) ); IF ( NOT FOUND) THEN RAISE EXCEPTION 'Currency exchange rate for currency % not found on %', pToCurr, formatDate(pDate); END IF; END IF; _returnVal := _fromRate / _toRate; RETURN _returnVal; END; $$; ODROP FUNCTION public.currrate(pfromcurr integer, ptocurr integer, pdate date); publicadminfalse83992712551691563"currtobase(integer, numeric, date)FUNCTIONDCREATE FUNCTION currtobase(integer, numeric, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pId ALIAS FOR $1; pValue ALIAS FOR $2; _date DATE; _output NUMERIC; BEGIN _date := $3; IF _date IS NULL THEN _date := 'now'; END IF; IF pValue = 0 OR pValue IS NULL THEN _output := 0; ELSIF (baseCurrId() = pId) THEN _output := pValue; ELSE SELECT pValue / curr_rate INTO _output FROM curr_rate WHERE curr_id = pId AND _date BETWEEN curr_effective AND curr_expires; IF (_output IS NULL OR NOT FOUND) THEN RAISE EXCEPTION 'No exchange rate for % on %', pId, _date; END IF; END IF; RETURN _output; END; $_$; 9DROP FUNCTION public.currtobase(integer, numeric, date); publicadminfalse83992812551691564+currtocurr(integer, integer, numeric, date)FUNCTION_CREATE FUNCTION currtocurr(integer, integer, numeric, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFromCurr ALIAS FOR $1; pToCurr ALIAS FOR $2; pValue ALIAS FOR $3; pEffective ALIAS FOR $4; _convertedValue NUMERIC; _fromRate NUMERIC; _toRate NUMERIC; BEGIN IF pFromCurr = pToCurr THEN RETURN pValue; END IF; IF pValue = 0 OR pValue IS NULL THEN RETURN 0; END IF; SELECT curr_rate INTO _fromRate FROM curr_rate WHERE curr_id = pFromCurr AND pEffective BETWEEN curr_effective AND curr_expires; IF (NOT FOUND) THEN RAISE EXCEPTION 'No exchange rate for % on %', pFromCurr, pEffective; END IF; SELECT curr_rate INTO _toRate FROM curr_rate WHERE curr_id = pToCurr AND pEffective BETWEEN curr_effective AND curr_expires; IF (NOT FOUND) THEN RAISE EXCEPTION 'No exchange rate for % on %', pToCurr, pEffective; END IF; _convertedValue := pValue * _toRate / _fromRate; RETURN _convertedValue; END; $_$; BDROP FUNCTION public.currtocurr(integer, integer, numeric, date); publicadminfalse39928<12551691565#currtolocal(integer, numeric, date)FUNCTIONCREATE FUNCTION currtolocal(integer, numeric, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pId ALIAS FOR $1; pValue ALIAS FOR $2; _date DATE; _output NUMERIC; BEGIN _date := $3; IF _date IS NULL THEN _date := 'now'; END IF; IF pValue = 0 OR pValue IS NULL THEN _output := 0; ELSIF (baseCurrId() = pId) THEN _output := pValue; ELSE SELECT pValue * curr_rate INTO _output FROM curr_rate WHERE curr_id = pId AND _date BETWEEN curr_effective AND curr_expires; IF (_output IS NULL OR NOT FOUND) THEN RAISE EXCEPTION 'No exchange rate for % on %', pId, _date; END IF; END IF; RETURN _output; END; $_$; :DROP FUNCTION public.currtolocal(integer, numeric, date); publicadminfalse39928?12551691566 custitem(integer, integer, date)FUNCTION8CREATE FUNCTION custitem(cust_id integer, shipto_id integer DEFAULT (-1), asof date DEFAULT ('now'::text)::date) RETURNS SETOF integer LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. -- Non Exclusive SELECT item_id FROM item WHERE (NOT item_exclusive) AND (item_sold) UNION -- Exclusive, Shipto match SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_item_id=item_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE (item_exclusive) AND (item_sold) AND ($2 != -1) AND (ipsass_shipto_id=$2) AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) UNION SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_prodcat_id=item_prodcat_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE (item_exclusive) AND (item_sold) AND ($2 != -1) AND (ipsass_shipto_id=$2) AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) UNION -- Exclusive, Shipto pattern match SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_item_id=item_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) JOIN shiptoinfo ON (shipto_num ~ ipsass_shipto_pattern) WHERE (item_exclusive) AND (item_sold) AND (COALESCE(length(ipsass_shipto_pattern), 0) > 0) AND (ipsass_cust_id=$1) AND ($2 != -1) AND (shipto_id=$2) AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) UNION SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_prodcat_id=item_prodcat_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) JOIN shiptoinfo ON (shipto_num ~ ipsass_shipto_pattern) WHERE (item_exclusive) AND (item_sold) AND (COALESCE(length(ipsass_shipto_pattern), 0) > 0) AND (ipsass_cust_id=$1) AND ($2 != -1) AND (shipto_id=$2) AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) UNION -- Exclusive, Customer match SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_item_id=item_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE (item_exclusive) AND (item_sold) AND (ipsass_cust_id=$1) AND (ipsass_shipto_id=-1) AND (ipsass_shipto_pattern='') AND (ipsass_custtype_id=-1) AND (ipsass_custtype_pattern='') AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) UNION SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_prodcat_id=item_prodcat_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) WHERE (item_exclusive) AND (item_sold) AND (ipsass_cust_id=$1) AND (ipsass_shipto_id=-1) AND (ipsass_shipto_pattern='') AND (ipsass_custtype_id=-1) AND (ipsass_custtype_pattern='') AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) UNION -- Exclusive, Customer Type match SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_item_id=item_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) JOIN custinfo ON (ipsass_custtype_id=cust_custtype_id) WHERE (item_exclusive) AND (item_sold) AND (cust_id=$1) AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) UNION SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_prodcat_id=item_prodcat_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) JOIN custinfo ON (ipsass_custtype_id=cust_custtype_id) WHERE (item_exclusive) AND (item_sold) AND (cust_id=$1) AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) UNION -- Exclusive, Customer Type pattern match SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_item_id=item_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) JOIN custtype ON (custtype_code ~ ipsass_custtype_pattern) JOIN custinfo ON (cust_custtype_id=custtype_id) WHERE (item_exclusive) AND (item_sold) AND (COALESCE(length(ipsass_custtype_pattern), 0) > 0) AND (cust_id=$1) AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) UNION SELECT item_id FROM item JOIN ipsiteminfo ON (ipsitem_prodcat_id=item_prodcat_id) JOIN ipshead ON (ipshead_id=ipsitem_ipshead_id) JOIN ipsass ON (ipsass_ipshead_id=ipshead_id) JOIN custtype ON (custtype_code ~ ipsass_custtype_pattern) JOIN custinfo ON (cust_custtype_id=custtype_id) WHERE (item_exclusive) AND (item_sold) AND (COALESCE(length(ipsass_custtype_pattern), 0) > 0) AND (cust_id=$1) AND ($3 BETWEEN ipshead_effective AND (ipshead_expires - 1)) $_$; NDROP FUNCTION public.custitem(cust_id integer, shipto_id integer, asof date); publicadminfalse812551691567%customercanpurchase(integer, integer)FUNCTIONcCREATE FUNCTION customercanpurchase(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pitemid ALIAS FOR $1; pCustid ALIAS FOR $2; BEGIN RETURN customerCanPurchase(pitemid, pCustid, -1); END; $_$; <DROP FUNCTION public.customercanpurchase(integer, integer); publicadminfalse39928@12551691568.customercanpurchase(integer, integer, integer)FUNCTIONCREATE FUNCTION customercanpurchase(integer, integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pitemid ALIAS FOR $1; pCustid ALIAS FOR $2; pShiptoid AlIAS FOR $3; _id INTEGER; _item RECORD; BEGIN RETURN customerCanPurchase(pitemid, pCustid, pShiptoid, CURRENT_DATE); END; $_$; EDROP FUNCTION public.customercanpurchase(integer, integer, integer); publicadminfalse83992h125516915694customercanpurchase(integer, integer, integer, date)FUNCTIONCREATE FUNCTION customercanpurchase(integer, integer, integer, date) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pitemid ALIAS FOR $1; pCustid ALIAS FOR $2; pShiptoid AlIAS FOR $3; pAsOf ALIAS FOR $4; _id INTEGER; _item RECORD; BEGIN SELECT item_sold, item_exclusive INTO _item FROM item WHERE(item_id=pItemid); -- Make sure that this is at least a sold Item IF (NOT _item.item_sold) THEN RETURN FALSE; END IF; -- Everyone can purchase a non-exclusive item IF (NOT _item.item_exclusive) THEN RETURN TRUE; END IF; IF(pShiptoid != -1) THEN -- Check for a shipto Assigned Price SELECT ipsitem_id INTO _id FROM ipsiteminfo, ipshead, ipsass WHERE((ipsitem_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsitem_item_id=pItemid) AND (ipsass_shipto_id != -1) AND (ipsass_shipto_id=pShiptoid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; SELECT ipsitem_id INTO _id FROM ipsiteminfo, item, ipshead, ipsass WHERE((ipsitem_ipshead_id=ipshead_id) AND (ipsitem_prodcat_id = item_prodcat_id) AND (ipsass_ipshead_id=ipshead_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (item_id=pItemid) AND (ipsass_shipto_id != -1) AND (ipsass_shipto_id=pShiptoid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; -- Check for a Shipto Pattern Assigned Price SELECT ipsitem_id INTO _id FROM ipsiteminfo, ipshead, ipsass, shiptoinfo WHERE((ipsitem_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (COALESCE(length(ipsass_shipto_pattern), 0) > 0) AND (shipto_num ~ ipsass_shipto_pattern) AND (ipsass_cust_id=pCustid) AND (ipsitem_item_id=pItemid) AND (shipto_id=pShiptoid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; SELECT ipsitem_id INTO _id FROM ipsiteminfo, item, ipshead, ipsass, shiptoinfo WHERE((ipsitem_ipshead_id=ipshead_id) AND (ipsitem_prodcat_id = item_prodcat_id) AND (ipsass_ipshead_id=ipshead_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (COALESCE(length(ipsass_shipto_pattern), 0) > 0) AND (shipto_num ~ ipsass_shipto_pattern) AND (ipsass_cust_id=pCustid) AND (item_id=pItemid) AND (shipto_id=pShiptoid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; END IF; -- Check for a Customer Assigned Price SELECT ipsitem_id INTO _id FROM ipsiteminfo, ipshead, ipsass WHERE((ipsitem_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsitem_item_id=pItemid) AND (COALESCE(length(ipsass_shipto_pattern), 0) = 0) AND (ipsass_cust_id=pCustid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; SELECT ipsitem_id INTO _id FROM ipsiteminfo, item, ipshead, ipsass WHERE((ipsitem_ipshead_id=ipshead_id) AND (ipsitem_prodcat_id = item_prodcat_id) AND (ipsass_ipshead_id=ipshead_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (item_id=pItemid) AND (COALESCE(length(ipsass_shipto_pattern), 0) = 0) AND (ipsass_cust_id=pCustid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; -- Check for a Customer Type Assigned Price SELECT ipsitem_id INTO _id FROM ipsiteminfo, ipshead, ipsass, custinfo WHERE( (ipsitem_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (ipsass_custtype_id != -1) AND (cust_custtype_id = ipsass_custtype_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsitem_item_id=pItemid) AND (cust_id=pCustid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; SELECT ipsitem_id INTO _id FROM ipsiteminfo, item, ipshead, ipsass, custinfo WHERE( (ipsitem_ipshead_id=ipshead_id) AND (ipsitem_prodcat_id = item_prodcat_id) AND (ipsass_ipshead_id=ipshead_id) AND (ipsass_custtype_id != -1) AND (cust_custtype_id = ipsass_custtype_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (item_id=pItemid) AND (cust_id=pCustid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; -- Check for a Customer Type Pattern Assigned Price SELECT ipsitem_id INTO _id FROM ipsiteminfo, ipshead, ipsass, custtype, custinfo WHERE((ipsitem_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (coalesce(length(ipsass_custtype_pattern), 0) > 0) AND (custtype_code ~ ipsass_custtype_pattern) AND (cust_custtype_id=custtype_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsitem_item_id=pItemid) AND (cust_id=pCustid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; SELECT ipsitem_id INTO _id FROM ipsiteminfo, item, ipshead, ipsass, custtype, custinfo WHERE((ipsitem_ipshead_id=ipshead_id) AND (ipsitem_prodcat_id = item_prodcat_id) AND (ipsass_ipshead_id=ipshead_id) AND (coalesce(length(ipsass_custtype_pattern), 0) > 0) AND (custtype_code ~ ipsass_custtype_pattern) AND (cust_custtype_id=custtype_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (item_id=pItemid) AND (cust_id=pCustid)) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; -- That's it, Sales don't count - yet RETURN FALSE; END; $_$; KDROP FUNCTION public.customercanpurchase(integer, integer, integer, date); publicadminfalse83992d12551691570 dearmor(text)FUNCTIONuCREATE FUNCTION dearmor(text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_dearmor'; $DROP FUNCTION public.dearmor(text); publicadminfalse8e12551691571decrypt(bytea, bytea, text)FUNCTIONCREATE FUNCTION decrypt(bytea, bytea, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_decrypt'; 2DROP FUNCTION public.decrypt(bytea, bytea, text); publicadminfalse8f12551691572%decrypt_iv(bytea, bytea, bytea, text)FUNCTIONCREATE FUNCTION decrypt_iv(bytea, bytea, bytea, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_decrypt_iv'; <DROP FUNCTION public.decrypt_iv(bytea, bytea, bytea, text); publicadminfalse8A12551691573defaultlocationname(integer)FUNCTIONKCREATE FUNCTION defaultlocationname(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; _p RECORD; BEGIN SELECT itemsite_location_id, itemsite_location INTO _p FROM itemsite WHERE (itemsite_id=pItemsiteid); IF (NOT FOUND) THEN RETURN 'Error'; ELSIF (_p.itemsite_location_id = -1) THEN RETURN _p.itemsite_location; ELSE RETURN formatLocationName(_p.itemsite_location_id); END IF; END; $_$; 3DROP FUNCTION public.defaultlocationname(integer); publicadminfalse83992D12551691574deleteaccount(integer)FUNCTIONQCREATE FUNCTION deleteaccount(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAccntid ALIAS FOR $1; _check INTEGER; BEGIN -- Check to see if the passed accnt is used in a Cost Category SELECT costcat_id INTO _check FROM costcat WHERE ( (costcat_asset_accnt_id=pAccntid) OR (costcat_liability_accnt_id=pAccntid) OR (costcat_adjustment_accnt_id=pAccntid) OR (costcat_purchprice_accnt_id=pAccntid) OR (costcat_laboroverhead_accnt_id=pAccntid) OR (costcat_scrap_accnt_id=pAccntid) OR (costcat_invcost_accnt_id=pAccntid) OR (costcat_wip_accnt_id=pAccntid) OR (costcat_shipasset_accnt_id=pAccntid) OR (costcat_mfgscrap_accnt_id=pAccntid) OR (costcat_transform_accnt_id=pAccntid) OR (costcat_freight_accnt_id=pAccntid) ) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Check to see if the passed accnt is used in a Sales Account Assignment SELECT salesaccnt_id INTO _check FROM salesaccnt WHERE ( (salesaccnt_sales_accnt_id=pAccntid) OR (salesaccnt_credit_accnt_id=pAccntid) OR (salesaccnt_cos_accnt_id=pAccntid) ) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; -- Check to see if the passed accnt is used in a A/R Account Assignment SELECT araccnt_id INTO _check FROM araccnt WHERE ( (araccnt_freight_accnt_id=pAccntid) OR (araccnt_ar_accnt_id=pAccntid) OR (araccnt_prepaid_accnt_id=pAccntid) ) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; -- Check to see if the passed accnt is used in a Warehouse IF EXISTS (SELECT 1 FROM whsinfo WHERE (warehous_default_accnt_id=pAccntid)) THEN RETURN -4; END IF; -- Check to see if the passed accnt is used in a Bank Account SELECT bankaccnt_id INTO _check FROM bankaccnt WHERE (bankaccnt_accnt_id=pAccntid) LIMIT 1; IF (FOUND) THEN RETURN -5; END IF; -- Check to see if the passed accnt is used in an Expense Category SELECT expcat_id INTO _check FROM expcat WHERE ( (expcat_exp_accnt_id=pAccntid) OR (expcat_liability_accnt_id=pAccntid) OR (expcat_purchprice_accnt_id=pAccntid) OR (expcat_freight_accnt_id=pAccntid) ) LIMIT 1; IF (FOUND) THEN RETURN -6; END IF; -- Check to see if the passed accnt is used in a Tax Code SELECT tax_id INTO _check FROM tax WHERE (tax_sales_accnt_id=pAccntid) LIMIT 1; IF (FOUND) THEN RETURN -7; END IF; -- Check to see if the passed accnt is used in a Standard Journal Item SELECT stdjrnlitem_id INTO _check FROM stdjrnlitem WHERE (stdjrnlitem_accnt_id=pAccntid) LIMIT 1; IF (FOUND) THEN RETURN -8; END IF; -- Check to see if the passed accnt is used in a A/P Account Assignment SELECT apaccnt_ap_accnt_id INTO _check FROM apaccnt WHERE ( (apaccnt_ap_accnt_id=pAccntid) OR (apaccnt_prepaid_accnt_id=pAccntid) OR (apaccnt_discount_accnt_id=pAccntid) ) LIMIT 1; IF (FOUND) THEN RETURN -9; END IF; -- Check to see if the passed accnt is used in an A/R Open Item record SELECT aropen_accnt_id INTO _check FROM aropen WHERE (aropen_accnt_id=pAccntid) LIMIT 1; IF (FOUND) THEN RETURN -11; END IF; -- Check to see if the passed accnt has been used in the G/L SELECT gltrans_accnt_id INTO _check FROM gltrans WHERE (gltrans_accnt_id=pAccntid) LIMIT 1; IF (FOUND) THEN RETURN -99; END IF; SELECT glseries_accnt_id INTO _check FROM glseries WHERE (glseries_accnt_id=pAccntid) LIMIT 1; IF (FOUND) THEN RETURN -99; END IF; SELECT trialbal_accnt_id INTO _check FROM trialbal WHERE (trialbal_accnt_id=pAccntid) AND (trialbal_beginning != 0 OR trialbal_ending != 0) LIMIT 1; IF (FOUND) THEN RETURN -99; END IF; SELECT cashrcptmisc_accnt_id INTO _check FROM cashrcptmisc WHERE (cashrcptmisc_accnt_id=pAccntid) LIMIT 1; IF (FOUND) THEN RETURN -99; END IF; -- Delete any non-critical use DELETE FROM flitem WHERE (flitem_accnt_id=pAccntid); -- only possible because of trialbal error-check above DELETE FROM trialbal WHERE (trialbal_accnt_id=pAccntid) AND (trialbal_beginning=0) AND (trialbal_ending=0); -- Delete the Account DELETE FROM accnt WHERE (accnt_id=pAccntid); RETURN 0; END; $_$; -DROP FUNCTION public.deleteaccount(integer); publicadminfalse83992E12551691575deleteaccountingperiod(integer)FUNCTION5CREATE FUNCTION deleteaccountingperiod(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; _check RECORD; BEGIN -- Check to make sure that the passed period is not closed IF ( ( SELECT period_closed FROM period WHERE (period_id=pPeriodid) ) ) THEN RETURN -1; END IF; -- Check to make sure that there are not any posted G/L Transactions -- in the period. SELECT gltrans_id INTO _check FROM gltrans, period WHERE ( (gltrans_date BETWEEN period_start AND period_end) AND (gltrans_posted) AND (period_id=pPeriodid) ) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; SELECT b.period_id INTO _check FROM period AS a, period AS b WHERE((a.period_id=pPeriodid) AND (a.period_end < b.period_start)) LIMIT 1; IF (FOUND) THEN RETURN -5; END IF; -- Delete the period DELETE FROM period WHERE (period_id=pPeriodid); RETURN 1; END; $_$; 6DROP FUNCTION public.deleteaccountingperiod(integer); publicadminfalse83992F12551691576#deleteaccountingyearperiod(integer)FUNCTIONCREATE FUNCTION deleteaccountingyearperiod(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; _check RECORD; BEGIN -- Check to make sure that the passed yearperiod is not closed IF ( ( SELECT yearperiod_closed FROM yearperiod WHERE (yearperiod_id=pPeriodid) ) ) THEN RETURN -1; END IF; -- this yearperiod is in use by existing periods IF (EXISTS(SELECT period_id FROM period WHERE (period_yearperiod_id=pPeriodid))) THEN RETURN -2; END IF; -- Delete the yearperiod DELETE FROM yearperiod WHERE (yearperiod_id=pPeriodid); RETURN 1; END; $_$; :DROP FUNCTION public.deleteaccountingyearperiod(integer); publicadminfalse83992G12551691577deleteaddress(integer)FUNCTIONCREATE FUNCTION deleteaddress(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE paddrId ALIAS FOR $1; _count INTEGER := 0; BEGIN SELECT count(*) INTO _count FROM cntct WHERE (cntct_active AND (cntct_addr_id = paddrId)); IF (_count > 0) THEN RETURN -1; END IF; SELECT count(*) INTO _count FROM vendinfo WHERE (vend_active AND (vend_addr_id = paddrId)); IF (_count > 0) THEN RETURN -2; END IF; SELECT count(*) INTO _count FROM shiptoinfo WHERE (shipto_active AND (shipto_addr_id = paddrId)); IF (_count > 0) THEN RETURN -3; END IF; SELECT count(*) INTO _count FROM vendaddrinfo WHERE (vendaddr_addr_id = paddrId); IF (_count > 0) THEN RETURN -4; END IF; SELECT count(*) INTO _count FROM whsinfo WHERE (warehous_active AND (warehous_addr_id = paddrId)); IF (_count > 0) THEN RETURN -5; END IF; UPDATE cntct SET cntct_addr_id = NULL WHERE (cntct_addr_id = paddrId); UPDATE vendinfo SET vend_addr_id = NULL WHERE (vend_addr_id = paddrId); UPDATE shiptoinfo SET shipto_addr_id = NULL WHERE (shipto_addr_id =paddrId); UPDATE vendaddrinfo SET vendaddr_addr_id = NULL WHERE (vendaddr_addr_id = paddrId); UPDATE whsinfo SET warehous_addr_id = NULL WHERE (warehous_addr_id=paddrId); DELETE FROM addr WHERE addr_id = paddrId; RETURN 0; END; $_$; -DROP FUNCTION public.deleteaddress(integer); publicadminfalse83992l12551691578deleteapcheck(integer)FUNCTIONMCREATE FUNCTION deleteapcheck(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'deleteAPCheck() is deprecated - use deleteCheck() instead'; RETURN deleteCheck($1); END; $_$; -DROP FUNCTION public.deleteapcheck(integer); publicadminfalse83992H12551691579!deletebankadjustmenttype(integer)FUNCTIONCREATE FUNCTION deletebankadjustmenttype(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankadjtypeid ALIAS FOR $1; _check INTEGER; BEGIN -- Check to see if the the adjustment type is being used in any adjustments SELECT bankadj_bankadjtype_id INTO _check FROM bankadj WHERE (bankadj_bankadjtype_id=pBankadjtypeid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Delete the Account DELETE FROM bankadjtype WHERE (bankadjtype_id=pbankadjtypeid); RETURN 0; END; $_$; 8DROP FUNCTION public.deletebankadjustmenttype(integer); publicadminfalse83992I12551691580!deletebankreconciliation(integer)FUNCTIONCREATE FUNCTION deletebankreconciliation(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pbankrecid ALIAS FOR $1; BEGIN DELETE FROM bankrecitem WHERE bankrecitem_bankrec_id=pbankrecid; DELETE FROM bankrec WHERE bankrec_id=pbankrecid; RETURN 0; END; $_$; 8DROP FUNCTION public.deletebankreconciliation(integer); publicadminfalse39928J12551691581deletebom(integer)FUNCTIONCREATE FUNCTION deletebom(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; _result INTEGER; BEGIN IF (fetchmetricbool('RevControl')) THEN SELECT rev_id INTO _result FROM rev WHERE ((rev_target_id=pItemid) AND (rev_target_type = 'BOM')) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Bill of Materials has revision control records and may not be deleted.'; END IF; END IF; DELETE FROM bomhead WHERE (bomhead_item_id=pItemid); DELETE FROM bomitem WHERE (bomitem_parent_item_id=pItemid); RETURN 0; END; $_$; )DROP FUNCTION public.deletebom(integer); publicadminfalse8399212551691582deletebomworkset(integer)FUNCTIONCREATE FUNCTION deletebomworkset(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWorksetid ALIAS FOR $1; BEGIN -- All done with the bomwork set indicated by pWorksetid, delete all of it DELETE FROM bomwork WHERE (bomwork_set_id=pWorksetid); RETURN 1; END; $_$; 0DROP FUNCTION public.deletebomworkset(integer); publicadminfalse83992K12551691583deletebudget(integer)FUNCTIONCREATE FUNCTION deletebudget(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBudgheadid ALIAS FOR $1; BEGIN DELETE FROM budgitem WHERE (budgitem_budghead_id=pBudgheadid); DELETE FROM budghead WHERE (budghead_id=pBudgheadid); RETURN pBudgheadid; END; $_$; ,DROP FUNCTION public.deletebudget(integer); publicadminfalse83992L12551691584deletebudgetitems(integer)FUNCTIONhCREATE FUNCTION deletebudgetitems(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBudgheadid ALIAS FOR $1; BEGIN DELETE FROM budgitem WHERE (budgitem_budghead_id=pBudgheadid); RETURN pBudgheadid; END; $_$; 1DROP FUNCTION public.deletebudgetitems(integer); publicadminfalse83992M12551691585deletecashrcpt(integer)FUNCTIONiCREATE FUNCTION deletecashrcpt(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pcashrcptid ALIAS FOR $1; _ccreceipt BOOLEAN; BEGIN IF EXISTS(SELECT cashrcpt_id FROM cashrcpt JOIN ccpay ON (cashrcpt_cust_id=ccpay_cust_id) AND ((CASE WHEN TRIM(COALESCE(cashrcpt_docnumber, ''))='' THEN TEXT(cashrcpt_id) ELSE cashrcpt_docnumber END)=ccpay_order_number) WHERE ((cashrcpt_fundstype IN ('A', 'D', 'M', 'V')) AND (ccpay_status NOT IN ('D', 'X')) AND (ccpay_id NOT IN (SELECT payco_ccpay_id FROM payco)) AND (cashrcpt_id=pcashrcptid))) THEN RETURN -1; END IF; IF EXISTS(SELECT cashrcpt_id FROM cashrcpt WHERE ( (cashrcpt_id=pcashrcptid) AND (cashrcpt_posted) )) THEN RETURN -2; END IF; -- If there are applications for this Cash Receipt then -- it has been posted and reversed. Void instead of delete. IF EXISTS(SELECT cashrcpt_id FROM cashrcpt JOIN cashrcptitem ON (cashrcptitem_cashrcpt_id=cashrcpt_id) JOIN arapply ON ((arapply_reftype='CRA') AND (arapply_ref_id=cashrcptitem_id)) WHERE (cashrcpt_id=pcashrcptid)) OR EXISTS(SELECT cashrcpt_id FROM cashrcpt JOIN cashrcptmisc ON (cashrcptmisc_cashrcpt_id=cashrcpt_id) JOIN arapply ON ((arapply_reftype='CRD') AND (arapply_ref_id=cashrcptmisc_id)) WHERE (cashrcpt_id=pcashrcptid)) THEN UPDATE cashrcpt SET cashrcpt_void = TRUE WHERE (cashrcpt_id=pcashrcptid); RETURN 1; END IF; DELETE FROM cashrcptitem WHERE (cashrcptitem_cashrcpt_id=pcashrcptid); DELETE FROM cashrcptmisc WHERE (cashrcptmisc_cashrcpt_id=pcashrcptid); DELETE FROM cashrcpt WHERE (cashrcpt_id=pcashrcptid); RETURN 1; END; $_$; .DROP FUNCTION public.deletecashrcpt(integer); publicadminfalse39928d12551691586deletecharacteristic(integer)FUNCTIONCREATE FUNCTION deletecharacteristic(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCharid ALIAS FOR $1; _check INTEGER; _r RECORD; BEGIN -- Cache the specifics of the characteristic SELECT * INTO _r FROM char WHERE (char_id=pCharid); IF (NOT(FOUND)) THEN RETURN 0; END IF; -- If the passed characteristic is used SELECT * INTO _r FROM charass WHERE (charass_char_id=pCharid) LIMIT 1; IF (FOUND) THEN IF (_r.charass_target_type = 'I') THEN RETURN -1; ELSIF (_r.charass_target_type = 'C') THEN RETURN -2; ELSIF (_r.charass_target_type = 'ADDR') THEN RETURN -3; ELSIF (_r.charass_target_type = 'CNTCT') THEN RETURN -4; ELSIF (_r.charass_target_type = 'CRMACCT') THEN RETURN -5; ELSIF (_r.charass_target_type = 'INCDT ') THEN RETURN -6; ELSIF (_r.charass_target_type = 'EMP') THEN RETURN -7; ELSE RETURN -99; END IF; END IF; -- Delete the passed characterisitic DELETE FROM char WHERE (char_id=pCharid); RETURN pCharid; END; $_$; 4DROP FUNCTION public.deletecharacteristic(integer); publicadminfalse83992e12551691587deletecheck(integer)FUNCTIONxCREATE FUNCTION deletecheck(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCheckid ALIAS FOR $1; BEGIN IF (SELECT (NOT checkhead_void) OR checkhead_posted OR checkhead_replaced OR checkhead_deleted OR (checkhead_ach_batch IS NOT NULL AND checkhead_printed) FROM checkhead WHERE (checkhead_id=pCheckid) ) THEN RETURN -1; END IF; UPDATE checkhead SET checkhead_deleted=TRUE WHERE (checkhead_id=pCheckid); RETURN 1; END; $_$; +DROP FUNCTION public.deletecheck(integer); publicadminfalse83992f12551691588deleteclasscode(integer)FUNCTIONdCREATE FUNCTION deleteclasscode(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pClasscodeid ALIAS FOR $1; _check INTEGER; BEGIN -- Check to see if any items are assigned to the passed classcode SELECT item_id INTO _check FROM item WHERE (item_classcode_id=pClasscodeid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Delete the passed classcode DELETE FROM classcode WHERE (classcode_id=pClasscodeid); RETURN pClasscodeid; END; $_$; /DROP FUNCTION public.deleteclasscode(integer); publicadminfalse8399212551691589deletecompany(integer)FUNCTION%CREATE FUNCTION deletecompany(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pcompanyid ALIAS FOR $1; BEGIN IF (EXISTS(SELECT accnt_id FROM accnt, company WHERE ((accnt_company=company_number) AND (company_id=pcompanyid)) )) THEN RETURN -1; END IF; DELETE FROM company WHERE (company_id=pcompanyid); RETURN pcompanyid; END; $_$; -DROP FUNCTION public.deletecompany(integer); publicadminfalse83992g12551691590deletecreditmemo(integer)FUNCTIONCREATE FUNCTION deletecreditmemo(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmheadid ALIAS FOR $1; BEGIN DELETE FROM cmitem WHERE (cmitem_cmhead_id=pCmheadid); DELETE FROM cmhead WHERE (cmhead_id=pCmheadid); RETURN TRUE; END; $_$; 0DROP FUNCTION public.deletecreditmemo(integer); publicadminfalse39928i12551691591deletecustomer(integer)FUNCTIONPCREATE FUNCTION deletecustomer(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; BEGIN PERFORM shipto_id FROM shiptoinfo WHERE (shipto_cust_id=pCustid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; PERFORM cohead_id FROM cohead WHERE (cohead_cust_id=pCustid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; PERFORM cmhead_id FROM cmhead WHERE (cmhead_cust_id=pCustid) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; PERFORM cohist_id FROM cohist WHERE (cohist_cust_id=pCustid) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; PERFORM aropen_id FROM aropen WHERE (aropen_cust_id=pCustid) LIMIT 1; IF (FOUND) THEN RETURN -5; END IF; PERFORM checkhead_recip_id FROM checkhead WHERE ((checkhead_recip_id=pCustid) AND (checkhead_recip_type='C')) LIMIT 1; IF (FOUND) THEN RETURN -6; END IF; PERFORM invchead_id FROM invchead WHERE(invchead_cust_id=pCustid) LIMIT 1; IF (FOUND) THEN RETURN -7; END IF; PERFORM quhead_id FROM quhead WHERE(quhead_cust_id=pCustid) LIMIT 1; IF (FOUND) THEN RETURN -8; END IF; DELETE FROM taxreg WHERE ((taxreg_rel_type='C') AND (taxreg_rel_id=pCustid)); DELETE FROM ipsass WHERE (ipsass_cust_id=pCustid); DELETE FROM custinfo WHERE (cust_id=pCustid); UPDATE crmacct SET crmacct_cust_id = NULL WHERE (crmacct_cust_id=pCustid); RETURN 0; END; $_$; .DROP FUNCTION public.deletecustomer(integer); publicadminfalse83992j12551691592deletecustomertype(integer)FUNCTIONCREATE FUNCTION deletecustomertype(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCusttypeid ALIAS FOR $1; BEGIN IF EXISTS(SELECT 1 FROM custinfo WHERE (cust_custtype_id=pCusttypeid)) THEN RETURN -1; END IF; DELETE FROM ipsass WHERE (ipsass_custtype_id=pCusttypeid); DELETE FROM salesaccnt WHERE (salesaccnt_custtype_id=pCusttypeid); DELETE FROM araccnt WHERE (araccnt_custtype_id=pCusttypeid); DELETE FROM custform WHERE (custform_custtype_id=pCusttypeid); DELETE FROM custtype WHERE (custtype_id=pCusttypeid); RETURN pCusttypeid; END; $_$; 2DROP FUNCTION public.deletecustomertype(integer); publicadminfalse83992k12551691593deleteempgrp(integer)FUNCTIONCREATE FUNCTION deleteempgrp(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pempgrpid ALIAS FOR $1; BEGIN -- Check to see if any employees are assigned to the passed empgrp PERFORM empgrpitem_emp_id FROM empgrpitem WHERE (empgrpitem_empgrp_id=pempgrpid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; DELETE FROM empgrp WHERE (empgrp_id=pempgrpid); RETURN 0; END; $_$; ,DROP FUNCTION public.deleteempgrp(integer); publicadminfalse83992l12551691594deleteexpiredips()FUNCTIONCREATE FUNCTION deleteexpiredips() RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; BEGIN FOR _r IN SELECT ipshead_id FROM ipshead WHERE (ipshead_expires <= current_date) LOOP DELETE FROM ipsass WHERE (ipsass_ipshead_id=_r.ipshead_id); DELETE FROM ipsiteminfo WHERE (ipsitem_ipshead_id=_r.ipshead_id); DELETE FROM ipsfreight WHERE (ipsfreight_ipshead_id=_r.ipshead_id); DELETE FROM ipshead WHERE (ipshead_id=_r.ipshead_id); END LOOP; RETURN TRUE; END; $$; )DROP FUNCTION public.deleteexpiredips(); publicadminfalse39928m12551691595deletefile(integer)FUNCTIONCREATE FUNCTION deletefile(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ declare pId ALIAS FOR $1; begin delete from file where ( file_id in ( select file_id from file join docass on (docass_target_id=file_id) and (docass_target_type='FILE') where ( docass_id = pId ) ) ); delete from docass where docass_id = pId; return true; end; $_$; *DROP FUNCTION public.deletefile(integer); publicadminfalse83992o12551691596deleteflgrp(integer)FUNCTION_CREATE FUNCTION deleteflgrp(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlgrpid ALIAS FOR $1; _r RECORD; BEGIN FOR _r IN SELECT flgrp_id FROM flgrp WHERE (flgrp_flgrp_id=pFlgrpid) LOOP PERFORM deleteFlgrp(_r.flgrp_id); END LOOP; DELETE FROM flitem WHERE (flitem_flgrp_id=pFlgrpid); DELETE FROM flspec WHERE (flspec_flgrp_id=pFlgrpid); DELETE FROM flgrp WHERE (flgrp_id=pFlgrpid); RETURN 1; END; $_$; +DROP FUNCTION public.deleteflgrp(integer); publicadminfalse39928q12551691597deleteform(integer)FUNCTIONCREATE FUNCTION deleteform(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFormid ALIAS FOR $1; _key TEXT; _check INTEGER; BEGIN -- Cache the key of the passed form SELECT form_key INTO _key FROM form WHERE (form_id=pFormid); IF (NOT(FOUND)) THEN RETURN 0; END IF; -- Handle checks based on the type of the form IF (_key='Chck') THEN SELECT bankaccnt_id INTO _check FROM bankaccnt WHERE (bankaccnt_check_form_id=pFormid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; END IF; -- Delete the form DELETE FROM form WHERE (form_id=pFormid); RETURN pFormid; END; $_$; *DROP FUNCTION public.deleteform(integer); publicadminfalse83992r12551691598deletefreightclass(integer)FUNCTIONCREATE FUNCTION deletefreightclass(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFreightClassid ALIAS FOR $1; _check INTEGER; BEGIN -- Check to see if any items are assigned to the passed freightclass SELECT item_id INTO _check FROM item WHERE (item_freightclass_id=pFreightClassid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Delete the passed freightclass DELETE FROM freightclass WHERE (freightclass_id=pFreightClassid); RETURN pFreightClassid; END; $_$; 2DROP FUNCTION public.deletefreightclass(integer); publicadminfalse83992u12551691599deleteglseries(integer)FUNCTIONCREATE FUNCTION deleteglseries(integer) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pSequence ALIAS FOR $1; BEGIN DELETE FROM glseries WHERE (glseries_sequence=pSequence); RETURN pSequence; END; $_$; .DROP FUNCTION public.deleteglseries(integer); publicadminfalse83992z12551691600deleteglseries(integer, text)FUNCTIONCREATE FUNCTION deleteglseries(integer, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pNotes ALIAS FOR $2; _trialbalid INTEGER; _count INTEGER; _r RECORD; BEGIN -- March through all of the G/L Transactions for the passed sequence FOR _r IN SELECT gltrans_id, gltrans_date, gltrans_accnt_id, gltrans_amount, gltrans_posted, gltrans_rec, accnt_forwardupdate, period_id, period_closed, period_freeze FROM accnt, gltrans LEFT OUTER JOIN period ON (gltrans_date BETWEEN period_start AND period_end) WHERE ( (gltrans_accnt_id=accnt_id) AND (NOT gltrans_deleted) AND (gltrans_sequence=pSequence) ) LOOP -- If we can post into a Trial Balance, do so IF ( (NOT _r.period_closed) AND ( (NOT _r.period_freeze) OR (checkPrivilege('PostFrozenPeriod')) ) AND ( NOT _r.gltrans_rec) AND ( _r.gltrans_posted ) ) THEN -- Try to find an existing trialbal SELECT trialbal_id INTO _trialbalid FROM trialbal WHERE ( (trialbal_period_id=_r.period_id) AND (trialbal_accnt_id=_r.gltrans_accnt_id) ); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count > 0) THEN -- We found a trialbal, update it with the G/L Transaction -- Note - two stage update to avoid any funny value caching logic IF (_r.gltrans_amount > 0) THEN UPDATE trialbal SET trialbal_credits = (trialbal_credits - _r.gltrans_amount) WHERE (trialbal_id=_trialbalid); ELSE UPDATE trialbal SET trialbal_debits = (trialbal_debits - (_r.gltrans_amount * -1)) WHERE (trialbal_id=_trialbalid); END IF; UPDATE trialbal SET trialbal_ending = (trialbal_beginning - trialbal_debits + trialbal_credits), trialbal_dirty=TRUE WHERE (trialbal_id=_trialbalid); ELSE RAISE EXCEPTION 'Can not delete G/L Series. Trial balance record not found.'; END IF; -- Forward update if we should IF (_r.accnt_forwardupdate AND fetchmetricbool('ManualForwardUpdate')) THEN PERFORM forwardUpdateTrialBalance(_trialbalid); END IF; -- Delete any bank reconciliation records if this was marked cleared but non reconciled DELETE FROM bankrecitem WHERE ((bankrecitem_source='GL') AND (bankrecitem_source_id=_r.gltrans_id)); -- Unflag any journals as posted as a result of this series UPDATE sltrans SET sltrans_posted=false, sltrans_gltrans_journalnumber=null FROM gltrans WHERE ((gltrans_sequence=pSequence) AND (sltrans_gltrans_journalnumber=gltrans_journalnumber)); -- Mark the G/L Transaction as deleted UPDATE gltrans SET gltrans_posted=false, gltrans_deleted=true, gltrans_notes=gltrans_notes || E'\n' || pNotes WHERE (gltrans_id=_r.gltrans_id); ELSIF (_r.period_freeze) THEN RAISE EXCEPTION 'Can not delete a G/L Transaction in a frozen period'; ELSIF (_r.period_closed) THEN RAISE EXCEPTION 'Can not delete a G/L Transaction on account % in a closed period', formatGlAccount(_r.gltrans_accnt_id); ELSIF (_r.gltrans_rec) THEN RAISE EXCEPTION 'Can not delete a G/L Transaction that has been reconciled'; ELSIF (NOT _r.gltrans_posted) THEN RAISE EXCEPTION 'Can not delete a G/L Transaction that has not been posted to Trial Balance'; END IF; END LOOP; RETURN true; END; $_$; 4DROP FUNCTION public.deleteglseries(integer, text); publicadminfalse83992{12551691601deleteincident(integer)FUNCTION5CREATE FUNCTION deleteincident(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pincdtid ALIAS FOR $1; _count INTEGER := 0; _incdtnbr INTEGER := 0; BEGIN SELECT COUNT(*) INTO _count FROM todoitem WHERE (todoitem_incdt_id=pincdtid); IF (_count > 0) THEN RETURN -1; END IF; DELETE FROM comment WHERE((comment_source='INCDT') AND (comment_source_id=pincdtid)); DELETE FROM incdthist WHERE (incdthist_incdt_id=pincdtid); DELETE FROM imageass WHERE ((imageass_source='INCDT') AND (imageass_source_id=pincdtid)); DELETE FROM url WHERE ((url_source='INCDT') AND (url_source_id=pincdtid)); SELECT incdt_number INTO _incdtnbr FROM incdt WHERE (incdt_id=pincdtid); DELETE FROM incdt WHERE (incdt_id=pincdtid); -- Incident #11538 needs to be fully resolved before release can be implemented -- PERFORM releaseIncidentNumber(_incdtnbr); RETURN 0; END; $_$; .DROP FUNCTION public.deleteincident(integer); publicadminfalse39928~12551691602deleteinvoice(integer)FUNCTIONCREATE FUNCTION deleteinvoice(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcheadid ALIAS FOR $1; BEGIN UPDATE shipitem SET shipitem_invoiced=FALSE, shipitem_invcitem_id=NULL FROM invcitem WHERE ((shipitem_invoiced) AND (shipitem_invcitem_id=invcitem_id) AND (invcitem_invchead_id=pInvcheadid)); UPDATE coitem SET coitem_status = 'O' WHERE ((coitem_status = 'C') AND (coitem_id IN (SELECT cobill_coitem_id FROM cobill, invcitem WHERE ((cobill_invcitem_id=invcitem_id) AND (invcitem_invchead_id=pInvcheadid))))); UPDATE cobill SET cobill_invcnum=NULL, cobill_invcitem_id=NULL FROM invcitem WHERE ((cobill_invcitem_id=invcitem_id) AND (invcitem_invchead_id=pInvcheadid)); UPDATE invdetail SET invdetail_invcitem_id=NULL FROM invcitem WHERE ((invdetail_invcitem_id=invcitem_id) AND (invcitem_invchead_id=pInvcheadid)); UPDATE cobmisc SET cobmisc_invcnumber=NULL, cobmisc_invchead_id=NULL, cobmisc_posted=FALSE WHERE (cobmisc_invchead_id=pInvcheadid); DELETE FROM aropenalloc WHERE (aropenalloc_doctype='I') AND (aropenalloc_doc_id=pInvcheadid); DELETE FROM invcitem WHERE (invcitem_invchead_id=pInvcheadid); DELETE FROM invchead WHERE (invchead_id=pInvcheadid); RETURN pInvcheadid; END; $_$; -DROP FUNCTION public.deleteinvoice(integer); publicadminfalse8399212551691603deleteipsitem(integer)FUNCTION>CREATE FUNCTION deleteipsitem(pipsitemid integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN DELETE FROM ipsiteminfo WHERE ipsitem_id=pIpsItemId; RETURN 1; END; $$; 8DROP FUNCTION public.deleteipsitem(pipsitemid integer); publicadminfalse8399212551691604deleteipsprodcat(integer)FUNCTIONCCREATE FUNCTION deleteipsprodcat(pipsitemid integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN DELETE FROM ipsiteminfo WHERE ipsitem_id=pIpsItemId; RETURN 1; END; $$; ;DROP FUNCTION public.deleteipsprodcat(pipsitemid integer); publicadminfalse8399212551691605deleteitem(integer)FUNCTIONCREATE FUNCTION deleteitem(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; _result INTEGER; BEGIN SELECT bomitem_id INTO _result FROM bomitem WHERE (bomitem_item_id=pItemid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; SELECT itemsite_id INTO _result FROM itemsite WHERE (itemsite_item_id=pItemid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; SELECT itemsub_id INTO _result FROM itemsub WHERE (itemsub_sub_item_id=pItemid) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; IF (fetchmetricbool('RevControl')) THEN SELECT rev_id INTO _result FROM rev WHERE ((rev_target_id=pItemid) AND (rev_target_type = 'BOM')) LIMIT 1; IF (FOUND) THEN RETURN -6; END IF; END IF; DELETE FROM bomhead WHERE (bomhead_item_id=pItemid); DELETE FROM bomitem WHERE (bomitem_item_id=pItemid); DELETE FROM itemcost WHERE (itemcost_item_id=pItemid); DELETE FROM costhist WHERE (costhist_item_id=pItemid); DELETE FROM itemsub WHERE (itemsub_parent_item_id=pItemid); DELETE FROM itemsub WHERE (itemsub_sub_item_id=pItemid); DELETE FROM itemsrcp WHERE (itemsrcp_itemsrc_id IN (SELECT itemsrc_id FROM itemsrc WHERE (itemsrc_item_id=pItemid))); DELETE FROM itemsrc WHERE (itemsrc_item_id=pItemid); DELETE FROM itemalias WHERE (itemalias_item_id=pItemid); DELETE FROM itemgrpitem WHERE (itemgrpitem_item_id=pItemid); DELETE FROM ipsiteminfo WHERE (ipsitem_item_id=pItemid); DELETE FROM imageass WHERE ( (imageass_source='I') AND (imageass_source_id=pItemid) ); DELETE FROM locitem WHERE (locitem_item_id=pItemid); DELETE FROM itemtax WHERE(itemtax_item_id=pItemid); DELETE FROM itemsite WHERE (itemsite_item_id=pItemid); DELETE FROM itemuom WHERE(itemuom_itemuomconv_id IN (SELECT itemuomconv_id FROM itemuomconv WHERE(itemuomconv_item_id=pItemid))); DELETE FROM itemuomconv WHERE(itemuomconv_item_id=pItemid); DELETE FROM item WHERE (item_id=pItemid); RETURN 0; END; $_$; *DROP FUNCTION public.deleteitem(integer); publicadminfalse3992812551691606 deleteitemcost(integer, integer)FUNCTIONCREATE FUNCTION deleteitemcost(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemId ALIAS FOR $1; pCostElemId ALIAS FOR $2; _itemcost_id INTEGER; _postcost_return BOOLEAN; _std_cost NUMERIC; BEGIN SELECT itemcost_id INTO _itemcost_id FROM itemcost WHERE ( (itemcost_item_id = pItemId) AND (itemcost_costelem_id = pCostElemId) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'itemcost % not found for. ', pItemId || ' & ' || pCostElemId; END IF; SELECT itemcost_stdcost INTO _std_cost FROM itemcost WHERE (itemcost_id = _itemcost_id); IF (_std_cost > 0) THEN --Actual Cost is updated to zero to ensure inventory is valued correctly PERFORM updateCost(_itemcost_id, 0); END IF; DELETE FROM itemcost WHERE (itemcost_id=_itemcost_id); RETURN _itemcost_id; END; $_$; 7DROP FUNCTION public.deleteitemcost(integer, integer); publicadminfalse8399212551691607deleteitemsite(integer)FUNCTIONCREATE FUNCTION deleteitemsite(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; _result INTEGER; _lotserial BOOLEAN; _bbom BOOLEAN; _mfg BOOLEAN; _standard BOOLEAN; BEGIN IF ( ( SELECT ( (itemsite_qtyonhand <> 0) OR (itemsite_nnqoh <> 0) ) FROM itemsite WHERE (itemsite_id=pItemsiteid) ) ) THEN RETURN -9; END IF; SELECT metric_value='t' INTO _bbom FROM metric WHERE (metric_name='BBOM'); SELECT metric_value='t' INTO _lotserial FROM metric WHERE (metric_name='LotSerialControl'); SELECT metric_value NOT IN ('PostBooks', 'Standard') INTO _mfg FROM metric WHERE (metric_name='Application'); SELECT metric_value='Standard' INTO _standard FROM metric WHERE (metric_name='Application'); SELECT invhist_id INTO _result FROM invhist WHERE (invhist_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; IF (_lotserial) THEN SELECT lsdetail_id INTO _result FROM lsdetail WHERE (lsdetail_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; END IF; SELECT wo_id INTO _result FROM wo WHERE (wo_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; SELECT womatl_id INTO _result FROM womatl WHERE (womatl_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; SELECT womatlvar_id INTO _result FROM womatlvar WHERE ( (womatlvar_parent_itemsite_id=pItemsiteid) OR (womatlvar_component_itemsite_id=pItemsiteid) ) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; IF (_bbom) THEN SELECT brdvar_id INTO _result FROM xtmfg.brdvar WHERE ( (brdvar_itemsite_id=pItemsiteid) OR (brdvar_parent_itemsite_id=pItemsiteid) ) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; END IF; SELECT coitem_id INTO _result FROM coitem WHERE (coitem_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; SELECT cohist_id INTO _result FROM cohist WHERE (cohist_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; SELECT quitem_id INTO _result FROM quitem WHERE (quitem_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; SELECT cmitem_id INTO _result FROM cmitem WHERE (cmitem_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; SELECT poitem_id INTO _result FROM poitem WHERE (poitem_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; SELECT recv_id INTO _result FROM recv WHERE (recv_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; SELECT poreject_id INTO _result FROM poreject WHERE (poreject_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; SELECT pr_id INTO _result FROM pr WHERE (pr_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; IF (_mfg OR _standard) THEN SELECT planord_id INTO _result FROM planord WHERE (planord_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -5; END IF; END IF; IF (_mfg) THEN SELECT pschitem_id INTO _result FROM xtmfg.pschitem WHERE (pschitem_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -6; END IF; SELECT woopervar_id INTO _result FROM xtmfg.woopervar WHERE (woopervar_parent_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; END IF; IF (_mfg OR _standard) THEN SELECT itemsite_id INTO _result FROM itemsite WHERE (itemsite_supply_itemsite_id=pItemsiteid) LIMIT 1; IF (FOUND) THEN RETURN -7; END IF; END IF; DELETE FROM invcnt WHERE (invcnt_itemsite_id=pItemsiteid); DELETE FROM itemloc WHERE (itemloc_itemsite_id=pItemsiteid); DELETE FROM itemlocdist WHERE (itemlocdist_itemsite_id=pItemsiteid); IF (_bbom) THEN DELETE FROM xtmfg.brddist WHERE (brddist_itemsite_id=pItemsiteid); END IF; DELETE FROM itemsite WHERE (itemsite_id=pItemsiteid); RETURN 0; END; $_$; .DROP FUNCTION public.deleteitemsite(integer); publicadminfalse39928u12551691608deleteitemuom(integer)FUNCTIONKCREATE FUNCTION deleteitemuom(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemuomid ALIAS FOR $1; BEGIN DELETE FROM itemuom WHERE itemuom_id=pItemuomid; RETURN 0; END; $_$; -DROP FUNCTION public.deleteitemuom(integer); publicadminfalse8399212551691609deleteitemuomconv(integer)FUNCTIONCREATE FUNCTION deleteitemuomconv(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemuomconvid ALIAS FOR $1; _fromuomid INTEGER; _invuomid INTEGER; _itemid INTEGER; _touomid INTEGER; BEGIN SELECT itemuomconv_item_id, item_inv_uom_id, itemuomconv_from_uom_id, itemuomconv_to_uom_id INTO _itemid, _invuomid, _fromuomid, _touomid FROM itemuomconv JOIN item ON (itemuomconv_item_id=item_id) WHERE (itemuomconv_id=pItemuomconvid); IF EXISTS(SELECT * FROM uomusedforitem(_itemid) WHERE ((uom_id IN (_fromuomid, _touomid)) AND (uom_id != _invuomid)) ) THEN RETURN -1; END IF; DELETE FROM itemuom WHERE itemuom_itemuomconv_id=pItemuomconvid; DELETE FROM itemuomconv WHERE itemuomconv_id=pItemuomconvid; RETURN 0; END; $_$; 1DROP FUNCTION public.deleteitemuomconv(integer); publicadminfalse8399212551691610deletelocation(integer)FUNCTIONCREATE FUNCTION deletelocation(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLocationid ALIAS FOR $1; _check INTEGER; BEGIN -- Check to see if any itemsite used the passed location as their default SELECT itemsite_id INTO _check FROM itemsite WHERE (itemsite_location_id=pLocationid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Check to see if any inventory is currently stored at the passed location SELECT itemloc_id INTO _check FROM itemloc WHERE (itemloc_location_id=pLocationid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; -- Check to see if any undistributed inventory transactions are currently posted at the passed location SELECT itemlocdist_id INTO _check FROM itemlocdist WHERE ( (itemlocdist_source_type='L') AND (itemlocdist_source_id=pLocationid) ) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; -- Check to see if the passed location has any Inventory Detail posted against it SELECT invdetail_id INTO _check FROM invdetail WHERE (invdetail_location_id=pLocationid) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; -- Delete any associated locitem records DELETE FROM locitem WHERE (locitem_location_id=pLocationid); -- Delete the location record DELETE FROM location WHERE (location_id=pLocationid); RETURN pLocationid; END; $_$; .DROP FUNCTION public.deletelocation(integer); publicadminfalse83992y12551691611deletemetasql(integer)FUNCTION=CREATE FUNCTION deletemetasql(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pid ALIAS FOR $1; BEGIN DELETE FROM metasql WHERE metasql_id = pid; RETURN 0; END; $_$; -DROP FUNCTION public.deletemetasql(integer); publicadminfalse8399212551691612Jdeleteopenrecurringitems(integer, text, timestamp with time zone, boolean)FUNCTIONCREATE FUNCTION deleteopenrecurringitems(integer, text, timestamp with time zone, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pParentid ALIAS FOR $1; pType TEXT := UPPER($2); pDatetime TIMESTAMP WITH TIME ZONE := COALESCE($3, startOfTime()); pInclParent BOOLEAN := COALESCE($4, FALSE); _count INTEGER := 0; _delchildstmt TEXT; _delparentstmt TEXT; _rt RECORD; _tmp INTEGER; BEGIN RAISE DEBUG 'deleteOpenRecurringItems(%, %, %)', pParentid, pType, pDatetime; IF (pParentid IS NULL) THEN RETURN -11; END IF; SELECT * INTO _rt FROM recurtype WHERE (UPPER(recurtype_type)=pType); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count <= 0) THEN RETURN -10; END IF; -- 2 deletes avoid reparenting problems if the parent gets deleted first IF (_rt.recurtype_delfunc IS NULL) THEN _delchildstmt := 'DELETE FROM [fulltable] ' || ' WHERE (NOT ([done])' || ' AND ([schedcol]>''$2'')' || ' AND ([table]_recurring_[table]_id=$1)' || ' AND ([table]_id!=$1));'; _delparentstmt := 'DELETE FROM [fulltable] USING recur' || ' WHERE (NOT ([done])' || ' AND ([schedcol]>''$2'')' || ' AND ([table]_recurring_[table]_id=$1)' || ' AND ([table]_id=$1));'; ELSE _delchildstmt := 'SELECT [delfunc]([table]_id)' || ' FROM [fulltable] ' || ' WHERE (NOT ([done])' || ' AND ([schedcol]>''$2'')' || ' AND ([table]_recurring_[table]_id=$1)' || ' AND ([table]_id!=$1));'; _delparentstmt := 'SELECT [delfunc]([table]_id)' || ' FROM [fulltable] ' || ' WHERE (NOT ([done])' || ' AND ([schedcol]>''$2'')' || ' AND ([table]_recurring_[table]_id=$1)' || ' AND ([table]_id!=$1));'; _delchildstmt := REPLACE(_delchildstmt, '[delfunc]', _rt.recurtype_delfunc); _delparentstmt := REPLACE(_delparentstmt, '[delfunc]', _rt.recurtype_delfunc); END IF; RAISE DEBUG '_delchildstmt has been set to %', _delchildstmt; _delchildstmt := REPLACE(_delchildstmt, '[fulltable]', _rt.recurtype_table); _delchildstmt := REPLACE(_delchildstmt, '[table]', REGEXP_REPLACE(_rt.recurtype_table, E'.*\\.', '')); _delchildstmt := REPLACE(_delchildstmt, '[done]', _rt.recurtype_donecheck); _delchildstmt := REPLACE(_delchildstmt, '[schedcol]', _rt.recurtype_schedcol); _delparentstmt := REPLACE(_delparentstmt, '[fulltable]', _rt.recurtype_table); _delparentstmt := REPLACE(_delparentstmt, '[table]', REGEXP_REPLACE(_rt.recurtype_table, E'.*\\.', '')); _delparentstmt := REPLACE(_delparentstmt, '[done]', _rt.recurtype_donecheck); _delparentstmt := REPLACE(_delparentstmt, '[schedcol]', _rt.recurtype_schedcol); RAISE DEBUG 'substitutions changed _delchildstmt to %', _delchildstmt; IF (_rt.recurtype_delfunc IS NULL) THEN -- 8.4+: EXECUTE _delchildstmt USING pDatetime, pType; RAISE DEBUG '% with % and %', _delchildstmt, pType, pDatetime; EXECUTE REPLACE(REPLACE(_delchildstmt, '$1', pParentid::TEXT), '$2', pDatetime::TEXT); GET DIAGNOSTICS _count = ROW_COUNT; IF (pInclParent) THEN -- 8.4+: EXECUTE _delparentstmt USING pDatetime, pType; RAISE DEBUG '% with % and %', _delparentstmt, pType, pDatetime; EXECUTE REPLACE(REPLACE(_delparentstmt, '$1', pParentid::TEXT), '$2', pDatetime::TEXT); GET DIAGNOSTICS _tmp = ROW_COUNT; _count := _count + _tmp; END IF; ELSE -- 8.4+: FOR _tmp IN EXECUTE _delchildstmt USING pDatetime, pType LOOP FOR _tmp IN EXECUTE REPLACE(REPLACE(_delchildstmt, '$1', pParentid::TEXT), '$2', pDatetime::TEXT) LOOP IF _tmp < 0 THEN RETURN _tmp; END IF; _count := _count + 1; END LOOP; IF (pInclParent) THEN -- 8.4+: EXECUTE _delparentstmt INTO _tmp USING pDatetime, pType; EXECUTE REPLACE(REPLACE(_delparentstmt, '$1', pParentid::TEXT), '$2', pDatetime::TEXT) INTO _tmp; IF (_tmp < 0) THEN RETURN _tmp; END IF; _count := _count + 1; END IF; END IF; RAISE DEBUG 'deleteOpenrecurringItems() returning %', _count; RETURN _count; END; $_$; aDROP FUNCTION public.deleteopenrecurringitems(integer, text, timestamp with time zone, boolean); publicadminfalse8399212551691613deleteopportunity(integer)FUNCTIONCREATE FUNCTION deleteopportunity(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOpheadid ALIAS FOR $1; _test INTEGER; BEGIN SELECT todoitem_id INTO _test FROM todoitem WHERE(todoitem_ophead_id=pOpheadid) LIMIT 1; IF(FOUND) THEN RETURN -1; END IF; SELECT quhead_id INTO _test FROM quhead WHERE(quhead_ophead_id=pOpheadid) LIMIT 1; IF(FOUND) THEN RETURN -2; END IF; SELECT cohead_id INTO _test FROM cohead WHERE(cohead_ophead_id=pOpheadid) LIMIT 1; IF(FOUND) THEN RETURN -3; END IF; DELETE FROM charass WHERE((charass_target_type='OPP') AND (charass_target_id=pOpheadid)); DELETE FROM comment WHERE((comment_source='OPP') AND (comment_source_id=pOpheadid)); DELETE FROM ophead WHERE(ophead_id=pOpheadid); return 0; END; $_$; 1DROP FUNCTION public.deleteopportunity(integer); publicadminfalse3992812551691614deletepackage(integer)FUNCTIONCREATE FUNCTION deletepackage(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ppkgheadid ALIAS FOR $1; _i INTEGER := 0; _pkgname TEXT; _r RECORD; _tabs TEXT[] := ARRAY['cmd', 'cmdarg', 'image', 'metasql', 'priv', 'report', 'script', 'uiform']; _debug BOOL := false; BEGIN IF (EXISTS(SELECT * FROM pkgdep WHERE (pkgdep_parent_pkghead_id=ppkgheadid))) THEN RETURN -1; END IF; SELECT pkghead_name INTO _pkgname FROM pkghead WHERE (pkghead_id=ppkgheadid); IF (NOT FOUND) THEN RETURN -2; END IF; IF (LOWER(_pkgname) = 'public' OR LOWER(_pkgname) = 'api') THEN RETURN -3; END IF; FOR _i IN ARRAY_LOWER(_tabs,1)..ARRAY_UPPER(_tabs,1) LOOP EXECUTE 'ALTER TABLE ' || _pkgname || '.pkg' || _tabs[_i] || ' DISABLE TRIGGER pkg' || _tabs[_i] || 'altertrigger;'; END LOOP; DELETE FROM pkghead WHERE pkghead_id=ppkgheadid; RETURN ppkgheadid; END; $_$; -DROP FUNCTION public.deletepackage(integer); publicadminfalse8399212551691615deletepo(integer)FUNCTION9CREATE FUNCTION deletepo(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPoheadid ALIAS FOR $1; _poitemid INTEGER; BEGIN IF ( ( SELECT pohead_status FROM pohead WHERE (pohead_id=pPoheadid) ) = 'U' ) THEN -- Unlink from any Sales Orders UPDATE coitem SET coitem_order_type=NULL, coitem_order_id=NULL FROM poitem WHERE ( (coitem_order_type='P') AND (coitem_order_id=poitem_id) AND (poitem_pohead_id=pPoheadid) ); DELETE FROM poitem WHERE (poitem_pohead_id=pPoheadid); DELETE FROM pohead WHERE (pohead_id=pPoheadid); RETURN TRUE; ELSE RETURN FALSE; END IF; END; $_$; (DROP FUNCTION public.deletepo(integer); publicadminfalse8399212551691616deletepoitem(integer)FUNCTIONCREATE FUNCTION deletepoitem(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPoitemid ALIAS FOR $1; _poheadid INTEGER := -1; _status CHARACTER; BEGIN SELECT poitem_pohead_id, poitem_status INTO _poheadid, _status FROM poitem WHERE (poitem_id=pPoitemid); IF NOT(FOUND) THEN RETURN 0; END IF; IF ( _status = 'U' ) THEN DELETE FROM poitem WHERE (poitem_id=pPoitemid); ELSE IF ( _status = 'O' ) THEN PERFORM recv_id FROM recv WHERE ( (recv_order_type='PO') AND (recv_orderitem_id=pPoitemid) ); IF (FOUND) THEN RETURN -10; ELSE RETURN -20; END IF; ELSE RETURN -10; END IF; END IF; PERFORM poitem_id FROM poitem WHERE poitem_pohead_id = _poheadid; IF NOT(FOUND) THEN DELETE FROM pohead WHERE (pohead_id = _poheadid); END IF; RETURN 0; END; $_$; ,DROP FUNCTION public.deletepoitem(integer); publicadminfalse8399212551691617deletepr(character, integer)FUNCTIONCREATE FUNCTION deletepr(character, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pParentType ALIAS FOR $1; pParentId ALIAS FOR $2; BEGIN DELETE FROM pr WHERE ((pr_status='O') AND (pr_order_type=pParentType) AND (pr_order_id=pParentId)); RETURN TRUE; END; $_$; 3DROP FUNCTION public.deletepr(character, integer); publicadminfalse8399212551691618deletepr(integer)FUNCTIONVCREATE FUNCTION deletepr(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrid ALIAS FOR $1; BEGIN DELETE FROM pr WHERE ( (pr_status='O') AND (pr_id=pPrid) ); RETURN TRUE; END; $_$; (DROP FUNCTION public.deletepr(integer); publicadminfalse3992812551691619deleteproductcategory(integer)FUNCTIONCREATE FUNCTION deleteproductcategory(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pProdcatid ALIAS FOR $1; _check INTEGER; BEGIN -- Check to see if any items are assigned to the passed classcode SELECT item_id INTO _check FROM item WHERE (item_prodcat_id=pProdcatid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Delete any assocated records DELETE FROM salesaccnt WHERE (salesaccnt_prodcat_id=pProdcatid); -- Delete the passed prodcat DELETE FROM prodcat WHERE (prodcat_id=pProdcatid); RETURN pProdcatid; END; $_$; 5DROP FUNCTION public.deleteproductcategory(integer); publicadminfalse3992812551691620deleteprofitcenter(integer)FUNCTIONCREATE FUNCTION deleteprofitcenter(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pid ALIAS FOR $1; BEGIN IF (EXISTS(SELECT accnt_id FROM accnt, prftcntr WHERE ((accnt_company=prftcntr_number) AND (prftcntr_id=pid)) )) THEN RETURN -1; END IF; DELETE FROM prftcntr WHERE (prftcntr_id=pid); RETURN pid; END; $_$; 2DROP FUNCTION public.deleteprofitcenter(integer); publicadminfalse8399212551691621deleteproject(integer)FUNCTIONCREATE FUNCTION deleteproject(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrjid ALIAS FOR $1; _result INTEGER; BEGIN SELECT quhead_id INTO _result FROM quhead WHERE (quhead_prj_id=pPrjid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; SELECT cohead_id INTO _result FROM cohead WHERE (cohead_prj_id=pPrjid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; SELECT wo_id INTO _result FROM wo WHERE (wo_prj_id=pPrjid) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; SELECT pr_id INTO _result FROM pr WHERE (pr_prj_id=pPrjid) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; SELECT poitem_id INTO _result FROM poitem WHERE (poitem_prj_id=pPrjid) LIMIT 1; IF (FOUND) THEN RETURN -5; END IF; SELECT invchead_id INTO _result FROM invchead WHERE (invchead_prj_id=pPrjid) LIMIT 1; IF (FOUND) THEN RETURN -6; END IF; DELETE FROM comment WHERE ((comment_source='J') AND (comment_source_id=pPrjid)); DELETE FROM comment WHERE ((comment_source='TA') AND (comment_source_id IN ( SELECT prjtask_id FROM prjtask WHERE (prjtask_prj_id=pPrjId)))); DELETE FROM prjtask WHERE (prjtask_prj_id=pPrjid); UPDATE prj SET prj_recurring_prj_id=null WHERE(prj_recurring_prj_id=pPrjid); DELETE FROM prj WHERE (prj_id=pPrjid); RETURN pPrjid; END; $_$; -DROP FUNCTION public.deleteproject(integer); publicadminfalse39928|12551691622deleteprojecttask(integer)FUNCTIONCREATE FUNCTION deleteprojecttask(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrjtaskid ALIAS FOR $1; _row RECORD; _result INTEGER; BEGIN SELECT * INTO _row FROM prjtask WHERE (prjtask_id=pPrjtaskid) LIMIT 1; IF (NOT FOUND) THEN RETURN -1; END IF; IF (COALESCE(_row.prjtask_hours_actual, 0.0) > 0.0) THEN RETURN -2; END IF; IF (COALESCE(_row.prjtask_exp_actual, 0.0) > 0.0) THEN RETURN -3; END IF; DELETE FROM comment WHERE ((comment_source='TA') AND (comment_source_id=pPrjtaskid)); DELETE FROM prjtask WHERE (prjtask_id=pPrjtaskid); RETURN 0; END; $_$; 1DROP FUNCTION public.deleteprojecttask(integer); publicadminfalse3992812551691623deleteqryhead(integer)FUNCTIONCREATE FUNCTION deleteqryhead(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pqryheadid ALIAS FOR $1; BEGIN DELETE FROM qryitem WHERE (qryitem_qryhead_id=pqryheadid); DELETE FROM qryhead WHERE (qryhead_id=pqryheadid); RETURN pqryheadid; END; $_$; -DROP FUNCTION public.deleteqryhead(integer); publicadminfalse8399212551691624deletequote(integer, text)FUNCTIONCREATE FUNCTION deletequote(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; pQuoteNumber ALIAS FOR $2; _quNumberScheme TEXT; _quoteNumber TEXT; _quitemid INTEGER; _result INTEGER; BEGIN SELECT fetchMetricText('QUNumberGeneration') INTO _quNumberScheme; IF (pQuoteNumber IS NULL) THEN SELECT quhead_number INTO _quoteNumber FROM quhead WHERE (quhead_id=pQuheadid); ELSE _quoteNumber := pQuoteNumber; END IF; DELETE FROM quitem WHERE (quitem_quhead_id=pQuheadid); DELETE FROM quhead WHERE (quhead_id=pQuheadid); IF (_quoteNumber IS NOT NULL) THEN IF (_quNumberScheme IN ('A', 'O')) THEN -- do not release quote # if quote converted to sales order IF (NOT EXISTS (SELECT cohead_id FROM cohead WHERE (cohead_number=_quoteNumber))) THEN _result = releaseQuNumber(_quoteNumber); END IF; ELSEIF (_quNumberScheme = 'S') THEN _result = releaseSoNumber(_quoteNumber); END IF; END IF; -- Don't care about result of release number RETURN 0; END; $_$; 1DROP FUNCTION public.deletequote(integer, text); publicadminfalse3992812552008369deletequote(integer)FUNCTION4CREATE FUNCTION deletequote(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; BEGIN RETURN deleteQuote(pQuheadid, NULL::TEXT); END; $_$; +DROP FUNCTION public.deletequote(integer); publicadminfalse8399212552008370deletequote(integer, integer)FUNCTIONbCREATE FUNCTION deletequote(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuheadid ALIAS FOR $1; pQuoteNumber ALIAS FOR $2; BEGIN RETURN deleteQuote(pQuheadid, pQuoteNumber::TEXT); END; $_$; 4DROP FUNCTION public.deletequote(integer, integer); publicadminfalse8399212551691627!deleterecvfororder(text, integer)FUNCTION7CREATE FUNCTION deleterecvfororder(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; porderid ALIAS FOR $2; BEGIN DELETE FROM recv USING orderitem WHERE ((recv_orderitem_id=orderitem_id) AND (recv_order_type=orderitem_orderhead_type) AND (NOT recv_posted) AND (orderitem_orderhead_id=porderid) AND (orderitem_orderhead_type=pordertype)); RETURN 0; END; $_$; 8DROP FUNCTION public.deleterecvfororder(text, integer); publicadminfalse8399212551691628deletesalescategory(integer)FUNCTIONCREATE FUNCTION deletesalescategory(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSalescatid ALIAS FOR $1; BEGIN PERFORM invcitem_salescat_id FROM invchead, invcitem WHERE ( (invcitem_invchead_id=invchead_id) AND (NOT invchead_posted) AND (invcitem_salescat_id=pSalescatid) ); IF (FOUND) THEN RETURN -1; END IF; PERFORM invcitem_salescat_id FROM invchead, invcitem WHERE ( (invcitem_invchead_id=invchead_id) AND (invchead_posted) AND (invcitem_salescat_id=pSalescatid) ); IF (FOUND) THEN RETURN -2; END IF; PERFORM aropen_salescat_id FROM aropen WHERE (aropen_salescat_id=pSalescatid); IF (FOUND) THEN RETURN -3; END IF; DELETE FROM salescat WHERE (salescat_id=pSalescatid); RETURN 0; END; $_$; 3DROP FUNCTION public.deletesalescategory(integer); publicadminfalse8399212551691629deleteshippingcharge(integer)FUNCTIONCREATE FUNCTION deleteshippingcharge(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipchrgid ALIAS FOR $1; BEGIN IF EXISTS(SELECT 1 FROM custinfo WHERE (cust_shipchrg_id=pShipchrgid)) THEN RETURN -1; END IF; DELETE FROM shipchrg WHERE (shipchrg_id=pShipchrgid); RETURN pShipchrgid; END; $_$; 4DROP FUNCTION public.deleteshippingcharge(integer); publicadminfalse8399212551691630!deleteshippingchargetype(integer)FUNCTIONCREATE FUNCTION deleteshippingchargetype(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipchrgid ALIAS FOR $1; _check INTEGER; BEGIN -- Check to see if the passed shipchrg is used as a default for any customers SELECT cust_id INTO _check FROM custinfo WHERE (cust_shipchrg_id=pShipchrgid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Check to see if the passed shipchrg is used as a default for any shiptos SELECT shipto_id INTO _check FROM shiptoinfo WHERE (shipto_shipchrg_id=pShipchrgid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; -- Check to see if the passed shipchrg is used on any sales orders SELECT cohead_id INTO _check FROM cohead WHERE (cohead_shipchrg_id=pShipchrgid) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; -- Check to see if the passed shipchrg is used on any shippers SELECT shiphead_id INTO _check FROM shiphead WHERE (shiphead_shipchrg_id=pShipchrgid) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; -- Check to see if the passed shipchrg is used on any invoices SELECT invchead_id INTO _check FROM invchead WHERE (invchead_shipchrg_id=pShipchrgid) LIMIT 1; IF (FOUND) THEN RETURN -5; END IF; -- Delete the passed shipchrg DELETE FROM shipchrg WHERE (shipchrg_id=pShipchrgid); RETURN pShipchrgid; END; $_$; 8DROP FUNCTION public.deleteshippingchargetype(integer); publicadminfalse8399212551691631deleteshipto(integer)FUNCTIONCREATE FUNCTION deleteshipto(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShiptoid ALIAS FOR $1; BEGIN PERFORM asohist_id FROM asohist WHERE (asohist_shipto_id=pShiptoid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; PERFORM cohead_id FROM cohead WHERE (cohead_shipto_id=pShiptoid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; PERFORM cmhead_id FROM cmhead WHERE (cmhead_shipto_id=pShiptoid) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; PERFORM cohist_id FROM cohist WHERE (cohist_shipto_id=pShiptoid) LIMIT 1; IF (FOUND) THEN RETURN -4; END IF; PERFORM quhead_id FROM quhead WHERE (quhead_shipto_id=pShiptoid) LIMIT 1; IF (FOUND) THEN RETURN -5; END IF; PERFORM invchead_id FROM invchead WHERE (invchead_shipto_id=pShiptoid) LIMIT 1; IF (FOUND) THEN RETURN -6; END IF; DELETE FROM ipsass WHERE (ipsass_shipto_id=pShiptoid); DELETE FROM shiptoinfo WHERE (shipto_id=pShiptoid); RETURN 0; END; $_$; ,DROP FUNCTION public.deleteshipto(integer); publicadminfalse8399212551691632deleteso(integer)FUNCTION+CREATE FUNCTION deleteso(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; BEGIN RETURN deleteSo(pSoheadid, NULL); END; $_$; (DROP FUNCTION public.deleteso(integer); publicadminfalse8399212551691633deleteso(integer, text)FUNCTIONCREATE FUNCTION deleteso(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; pSonumber ALIAS FOR $2; _r RECORD; _coitemid INTEGER; _result INTEGER; _poStatus INTEGER := 0; BEGIN -- Get cohead SELECT * INTO _r FROM cohead WHERE (cohead_id=pSoheadid); IF (NOT FOUND) THEN RETURN 0; END IF; -- Cannot delete if credit card payments IF (EXISTS(SELECT ccpay_id FROM ccpay, payco WHERE ((ccpay_status IN ('C')) AND (ccpay_id=payco_ccpay_id) AND (payco_cohead_id=pSoheadid)))) THEN RETURN -1; END IF; -- Cannot delete if credit card history IF (EXISTS(SELECT ccpay_id FROM ccpay, payco WHERE ((ccpay_status != 'C') AND (ccpay_id=payco_ccpay_id) AND (payco_cohead_id=pSoheadid)))) THEN RETURN -2; END IF; -- Delete Sales Order Items FOR _coitemid IN SELECT coitem_id FROM coitem WHERE ( (coitem_cohead_id=pSoheadid) AND (coitem_subnumber=0) ) LOOP SELECT deleteSoItem(_coitemid) INTO _result; IF (_result < 0) THEN IF (_result = -20) THEN _poStatus := _poStatus - 1; ELSE RETURN _result; END IF; END IF; END LOOP; DELETE FROM pack WHERE (pack_head_id=pSoheadid and pack_head_type = 'SO'); DELETE FROM cohead WHERE (cohead_id=pSoheadid); IF (fetchMetricBool('AutoCreateProjectsForOrders')) THEN PERFORM deleteProject(_r.cohead_prj_id); END IF; DELETE FROM aropenalloc WHERE ((aropenalloc_doctype='S') AND (aropenalloc_doc_id=pSoheadid)); IF (COALESCE(pSonumber,'') != '') THEN _result = releaseSoNumber(pSonumber); ELSEIF (_r.cohead_number IS NOT NULL) THEN _result = releaseSoNumber(_r.cohead_number); END IF; IF (_poStatus < 0) THEN RETURN -20; ELSE RETURN 0; END IF; END; $_$; .DROP FUNCTION public.deleteso(integer, text); publicadminfalse3992812551691634deletesoitem(integer)FUNCTION CREATE FUNCTION deletesoitem(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoitemid ALIAS FOR $1; _r RECORD; _s RECORD; _result INTEGER; _deletePO INTEGER := 0; _recvId INTEGER := -1; _poStatus TEXT; _jobItem BOOLEAN; BEGIN -- Get coitem SELECT * INTO _r FROM coitem WHERE (coitem_id=pSoitemid); IF (NOT FOUND) THEN RETURN -999; END IF; -- Cannot delete if shipped IF (_r.coitem_qtyshipped > 0) THEN RETURN -101; END IF; -- Cannot delete if issued to shipping SELECT shipitem_id INTO _result FROM shipitem JOIN shiphead ON (shiphead_id=shipitem_shiphead_id AND shiphead_order_type='SO') WHERE (shipitem_orderitem_id=pSoitemid) LIMIT 1; IF (FOUND) THEN RETURN -102; END IF; -- Cannot delete if returned IF (fetchMetricBool('MultiWhs')) THEN SELECT raitem_id INTO _result FROM raitem WHERE ( (raitem_orig_coitem_id=pSoitemid) OR (raitem_new_coitem_id=pSoitemid) ) LIMIT 1; IF (FOUND) THEN RETURN -103; END IF; END IF; -- Cannot delete if any inventory history SELECT invhist_id INTO _result FROM invhist WHERE ( (invhist_ordnumber=formatSoNumber(pSoitemid)) AND (invhist_ordtype='SO') ) LIMIT 1; IF (FOUND) THEN RETURN -105; END IF; -- If Kit, check deletion of component items IF (_r.coitem_subnumber = 0) THEN FOR _s IN SELECT * FROM coitem WHERE ((coitem_cohead_id = _r.coitem_cohead_id) AND (coitem_linenumber = _r.coitem_linenumber) AND (coitem_subnumber > 0)) LOOP IF ((COALESCE(_s.coitem_order_id, -1) > 0) AND (_s.coitem_order_type = 'P')) THEN SELECT poitem_status, COALESCE(recv_id, -1) INTO _poStatus, _recvId FROM poitem LEFT OUTER JOIN recv ON ((recv_orderitem_id=poitem_id) AND (recv_order_type='PO')) WHERE (poitem_id = _s.coitem_order_id); IF ((_recvId > 0) OR (_poStatus = 'C')) THEN RETURN -10; ELSIF ((_recvId = -1) AND (_poStatus = 'O')) THEN _deletePO := _deletePO - 1; END IF; END IF; END LOOP; END IF; SELECT (itemsite_costmethod='J') INTO _jobItem FROM coitem JOIN itemsite ON (itemsite_id=coitem_itemsite_id) WHERE (coitem_id=pSoitemid); IF (_jobItem AND _r.coitem_order_type='W') THEN -- Delete associated Job Work Order SELECT deleteWo(_r.coitem_order_id, TRUE, TRUE) INTO _result; IF (_result < 0) THEN RETURN -104; END IF; ELSIF (_r.coitem_order_type='W') THEN -- Delete associated Job Work Order SELECT deleteWo(_r.coitem_order_id, TRUE) INTO _result; IF (_result < 0) THEN -- Cannot delete so break association PERFORM changeWoProject(_r.coitem_order_id, -1, TRUE); END IF; ELSIF (_r.coitem_order_type='R') THEN -- Delete associated Purchase Request PERFORM deletePr(_r.coitem_order_id); ELSIF (_r.coitem_order_type='P') THEN -- Delete associated Purchase Order Item SELECT deletepoitem(_r.coitem_order_id) INTO _result; IF ((_result < 0) AND (_result <> -20)) THEN RETURN _result; ELSIF (_result = -20) THEN _deletePO := _deletePO - 1; END IF; END IF; -- Delete the coitem DELETE FROM coitem WHERE (coitem_id=pSoitemid); IF (_deletePO < 0) THEN RETURN -20; ELSE RETURN 0; END IF; END; $_$; ,DROP FUNCTION public.deletesoitem(integer); publicadminfalse8399212551691635deletestandardjournal(integer)FUNCTIONCREATE FUNCTION deletestandardjournal(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStdjrnlid ALIAS FOR $1; BEGIN DELETE FROM stdjrnlitem WHERE (stdjrnlitem_stdjrnl_id=pStdjrnlid); DELETE FROM stdjrnlgrpitem WHERE (stdjrnlgrpitem_stdjrnl_id=pStdjrnlid); DELETE FROM stdjrnl WHERE (stdjrnl_id=pStdjrnlid); RETURN 1; END; $_$; 5DROP FUNCTION public.deletestandardjournal(integer); publicadminfalse8399212551691636#deletestandardjournalgroup(integer)FUNCTIONCREATE FUNCTION deletestandardjournalgroup(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStdjrnlgrpid ALIAS FOR $1; BEGIN DELETE FROM stdjrnlgrpitem WHERE (stdjrnlgrpitem_stdjrnlgrp_id=pStdjrnlgrpid); DELETE FROM stdjrnlgrp WHERE (stdjrnlgrp_id=pStdjrnlgrpid); RETURN 1; END; $_$; :DROP FUNCTION public.deletestandardjournalgroup(integer); publicadminfalse8399212551691637deletesubaccount(integer)FUNCTIONCREATE FUNCTION deletesubaccount(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pid ALIAS FOR $1; BEGIN IF (EXISTS(SELECT accnt_id FROM accnt, subaccnt WHERE ((accnt_company=subaccnt_number) AND (subaccnt_id=pid)) )) THEN RETURN -1; END IF; DELETE FROM subaccnt WHERE (subaccnt_id=pid); RETURN pid; END; $_$; 0DROP FUNCTION public.deletesubaccount(integer); publicadminfalse8399212551691638deletesubaccounttype(integer)FUNCTIONCREATE FUNCTION deletesubaccounttype(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSubAccntTypeid ALIAS FOR $1; _check INTEGER; BEGIN -- Check to see if the passed subaccnttype is used in any accounts SELECT accnt_id INTO _check FROM accnt, subaccnttype WHERE ( (accnt_subaccnttype_code=subaccnttype_code) AND (subaccnttype_id=pSubAccntTypeid) ) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Delete the Sub Account Type DELETE FROM subaccnttype WHERE (subaccnttype_id=pSubAccntTypeid); RETURN 0; END; $_$; 4DROP FUNCTION public.deletesubaccounttype(integer); publicadminfalse8399212551691639deletetax(integer)FUNCTIONCREATE FUNCTION deletetax(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ptaxid ALIAS FOR $1; BEGIN -- these checks allow nice error reporting instead of throwing an SQL error IF EXISTS(SELECT taxass_id FROM taxass WHERE (taxass_tax_id=ptaxid)) THEN RETURN -10; END IF; IF EXISTS(SELECT taxhist_id FROM taxhist WHERE (taxhist_tax_id=ptaxid)) THEN RETURN -20; END IF; DELETE FROM taxrate WHERE (taxrate_tax_id = ptaxid); DELETE FROM tax WHERE (tax_id = ptaxid); RETURN ptaxid; END; $_$; )DROP FUNCTION public.deletetax(integer); publicadminfalse8399212551691640deletetaxclass(integer)FUNCTIONSCREATE FUNCTION deletetaxclass(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxclassid ALIAS FOR $1; _result INTEGER; BEGIN -- Check to find if the tax class is used in any tax code SELECT tax_id INTO _result FROM tax WHERE (tax_taxclass_id = pTaxclassid); IF (FOUND) THEN RETURN -1; END IF; -- Delete the tax class if the above condition doesn't match DELETE FROM taxclass WHERE taxclass_id = pTaxclassid ; RETURN pTaxclassid; END; $_$; .DROP FUNCTION public.deletetaxclass(integer); publicadminfalse8399212551691641deletetaxtype(integer)FUNCTION$CREATE FUNCTION deletetaxtype(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxtypeid ALIAS FOR $1; _result INTEGER; BEGIN SELECT taxtype_id INTO _result FROM taxtype WHERE ((taxtype_sys) AND (taxtype_id=pTaxtypeid)); IF (FOUND) THEN RETURN -1; END IF; SELECT taxass_id INTO _result FROM taxass WHERE (taxass_taxtype_id=pTaxtypeid); IF (FOUND) THEN RETURN -2; END IF; SELECT taxhist_id INTO _result FROM taxhist WHERE (taxhist_taxtype_id=pTaxtypeid); IF (FOUND) THEN RETURN -3; END IF; DELETE FROM taxtype WHERE (taxtype_id=pTaxtypeid); RETURN pTaxtypeid; END; $_$; -DROP FUNCTION public.deletetaxtype(integer); publicadminfalse8399212551691642deletetaxzone(integer)FUNCTIONCREATE FUNCTION deletetaxzone(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxzoneid ALIAS FOR $1; _result INTEGER; BEGIN -- Check to find if the tax zone is used in any tax assignment SELECT taxass_id INTO _result FROM taxass WHERE (taxass_taxzone_id=pTaxzoneid); IF (FOUND) THEN RETURN -1; END IF; -- Check to find if the tax zone has been referenced in any tax registration SELECT taxreg_id INTO _result FROM taxreg WHERE (taxreg_taxzone_id=pTaxzoneid); IF (FOUND) THEN RETURN -2; END IF; -- Delete the tax zone if none of the above conditions match DELETE FROM taxzone WHERE taxzone_id = pTaxzoneid ; RETURN pTaxzoneid; END; $_$; -DROP FUNCTION public.deletetaxzone(integer); publicadminfalse8399212551691643deletetodoitem(integer)FUNCTIONCREATE FUNCTION deletetodoitem(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ptodoItemId ALIAS FOR $1; BEGIN DELETE FROM alarm WHERE ( (alarm_source='TODO') AND (alarm_source_id=ptodoItemId) ); DELETE FROM todoitem WHERE todoitem_id = ptodoItemId; RETURN 0; END; $_$; .DROP FUNCTION public.deletetodoitem(integer); publicadminfalse8399212551691644deleteunusedclasscodes()FUNCTION[CREATE FUNCTION deleteunusedclasscodes() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN DELETE FROM classcode WHERE (classcode_id NOT IN (SELECT DISTINCT item_classcode_id FROM item)); RETURN 0; END; $$; /DROP FUNCTION public.deleteunusedclasscodes(); publicadminfalse8399212551691645deleteunusedfreightclasses()FUNCTIONuCREATE FUNCTION deleteunusedfreightclasses() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN DELETE FROM freightclass WHERE (freightclass_id NOT IN (SELECT DISTINCT COALESCE(item_freightclass_id, 0) FROM item)); RETURN 0; END; $$; 3DROP FUNCTION public.deleteunusedfreightclasses(); publicadminfalse8399212551691646deleteunusedproductcategories()FUNCTIONCREATE FUNCTION deleteunusedproductcategories() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Delete any associated records DELETE FROM salesaccnt WHERE ( (salesaccnt_prodcat_id <> -1) AND (salesaccnt_prodcat_id NOT IN (SELECT DISTINCT item_prodcat_id FROM item)) ); DELETE FROM prodcat WHERE (prodcat_id NOT IN (SELECT DISTINCT item_prodcat_id FROM item)); RETURN 0; END; $$; 6DROP FUNCTION public.deleteunusedproductcategories(); publicadminfalse8399212551691647deleteuom(integer)FUNCTIONCREATE FUNCTION deleteuom(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUomid ALIAS FOR $1; BEGIN DELETE FROM uomconv WHERE uomconv_from_uom_id=pUomid; DELETE FROM uomconv WHERE uomconv_to_uom_id=pUomid; DELETE FROM uom WHERE uom_id=pUomid; RETURN 0; END; $_$; )DROP FUNCTION public.deleteuom(integer); publicadminfalse8399212551691648deleteuomconv(integer)FUNCTIONKCREATE FUNCTION deleteuomconv(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUomconvid ALIAS FOR $1; BEGIN DELETE FROM uomconv WHERE uomconv_id=pUomconvid; RETURN 0; END; $_$; -DROP FUNCTION public.deleteuomconv(integer); publicadminfalse8399212551691649deleteurl(integer)FUNCTIONCREATE FUNCTION deleteurl(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ declare pId ALIAS FOR $1; begin delete from urlinfo where ( url_id in ( select url_id from urlinfo join docass on (docass_target_id=url_id) and (docass_target_type='URL') where ( docass_id = pId ) ) ); delete from docass where docass_id = pId; return true; end; $_$; )DROP FUNCTION public.deleteurl(integer); publicadminfalse83992412551691650deleteuserpreference(text)FUNCTIONCREATE FUNCTION deleteuserpreference(text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrefname ALIAS FOR $1; _return BOOLEAN; BEGIN SELECT deleteUserPreference(getEffectiveXtUser(), pPrefname) INTO _return; RETURN _return; END; $_$; 1DROP FUNCTION public.deleteuserpreference(text); publicadminfalse8399212551691651 deleteuserpreference(text, text)FUNCTIONCREATE FUNCTION deleteuserpreference(text, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pPrefname ALIAS FOR $2; BEGIN DELETE FROM usrpref WHERE ( (usrpref_username=pUsername) AND (usrpref_name=pPrefname) ); RETURN TRUE; END; $_$; 7DROP FUNCTION public.deleteuserpreference(text, text); publicadminfalse8399212551691652deletevendoraddress(integer)FUNCTIONaCREATE FUNCTION deletevendoraddress(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendaddrid ALIAS FOR $1; _test INTEGER; BEGIN -- Check to see if the passed vendor address is used in pohead SELECT pohead_id INTO _test FROM pohead WHERE (pohead_vendaddr_id=pVendaddrid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Delete the passed vendor address DELETE FROM vendaddrinfo WHERE (vendaddr_id=pVendaddrid); RETURN 0; END; $_$; 3DROP FUNCTION public.deletevendoraddress(integer); publicadminfalse8399212551691653deletevendortype(integer)FUNCTIONTCREATE FUNCTION deletevendortype(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendtypeid ALIAS FOR $1; _test INTEGER; BEGIN -- Check to see if the passed vendor type is used in vendinfo SELECT vend_id INTO _test FROM vendinfo WHERE (vend_vendtype_id=pVendtypeid) LIMIT 1; IF (FOUND) THEN RETURN -1; END IF; -- Delete the passed vendor type DELETE FROM vendtype WHERE (vendtype_id=pVendtypeid); RETURN 0; END; $_$; 0DROP FUNCTION public.deletevendortype(integer); publicadminfalse8399212551691654deletewo(integer, boolean)FUNCTIONZCREATE FUNCTION deletewo(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; deleteChildren ALIAS FOR $2; BEGIN RETURN deleteWo(pWoid, deleteChildren, FALSE); END; $_$; 1DROP FUNCTION public.deletewo(integer, boolean); publicadminfalse8399212551691655#deletewo(integer, boolean, boolean)FUNCTION CREATE FUNCTION deletewo(integer, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; deleteChildren ALIAS FOR $2; deleteForce ALIAS FOR $3; woStatus CHAR(1); itemType CHAR(1); ordtype CHAR(1); ordid INTEGER; returnCode INTEGER; _wotcCnt INTEGER; _routings BOOLEAN; BEGIN SELECT wo_status, wo_ordtype, wo_ordid, item_type INTO woStatus, ordtype, ordid, itemType FROM wo JOIN itemsite ON (itemsite_id=wo_itemsite_id) JOIN item ON (item_id=itemsite_item_id) WHERE (wo_id=pWoid); IF (NOT woStatus IN ('O', 'E', 'C')) THEN RETURN -3; END IF; IF (NOT deleteForce) THEN IF (itemType = 'J') THEN RETURN -2; END IF; END IF; SELECT fetchMetricBool('Routings') INTO _routings; IF _routings THEN SELECT count(*) INTO _wotcCnt FROM xtmfg.wotc WHERE (wotc_wo_id=pWoid); IF (_wotcCnt > 0) THEN RETURN -1; END IF; END IF; IF (woStatus = 'R') THEN INSERT INTO evntlog (evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'W', wo_id, itemsite_warehous_id, formatWoNumber(wo_id) FROM evntnot, evnttype, itemsite, item, wo WHERE ( (evntnot_evnttype_id=evnttype_id) AND (evntnot_warehous_id=itemsite_warehous_id) AND (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (evnttype_name='RWoRequestCancel') AND (wo_id=pWoid) ); RETURN 0; ELSE IF (woStatus = 'E') THEN returnCode := (SELECT implodeWo(pWoid, FALSE)); END IF; END IF; IF (woStatus IN ('O', 'E', 'C')) THEN DELETE FROM womatl WHERE (womatl_wo_id=pWoid); IF _routings THEN DELETE FROM xtmfg.wooper WHERE (wooper_wo_id=pWoid); END IF; IF (ordtype = 'S') THEN UPDATE coitem SET coitem_order_type=NULL, coitem_order_id=NULL WHERE coitem_id=ordid; END IF; DELETE FROM wo WHERE (wo_id=pWoid); END IF; IF (deleteChildren) THEN returnCode := (SELECT MAX(deleteWo(wo_id, TRUE)) FROM wo WHERE ((wo_ordtype='W') AND (wo_ordid=pWoid))); END IF; RETURN 0; END; $_$; :DROP FUNCTION public.deletewo(integer, boolean, boolean); publicadminfalse8399212551691656deletewomaterial(integer)FUNCTION CREATE FUNCTION deletewomaterial(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; BEGIN UPDATE wo SET wo_adhoc=TRUE FROM womatl WHERE ((womatl_wo_id=wo_id) AND (womatl_id=pWomatlid)); -- Delete any created P/R for this Womatl PERFORM deletePr('W', pWomatlid); DELETE FROM womatl WHERE (womatl_id=pWomatlid); RETURN 0; END; $_$; 0DROP FUNCTION public.deletewomaterial(integer); publicadminfalse8399212551691657,detachccpayfromso(integer, integer, integer)FUNCTIONCREATE FUNCTION detachccpayfromso(integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pcoheadid ALIAS FOR $1; pwarehousid ALIAS FOR $2; pcustid ALIAS FOR $3; BEGIN RAISE NOTICE 'detachCCPayFromSO(INTEGER, INTEGER, INTEGER): deprecated'; RETURN 0; END; $_$; CDROP FUNCTION public.detachccpayfromso(integer, integer, integer); publicadminfalse8399212551691658detachcontact(integer, integer)FUNCTIONCREATE FUNCTION detachcontact(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pcntctId ALIAS FOR $1; pcrmacctId ALIAS FOR $2; BEGIN UPDATE cntct SET cntct_crmacct_id = NULL WHERE cntct_id = pcntctId AND cntct_crmacct_id = pcrmacctId; UPDATE crmacct SET crmacct_cntct_id_1 = NULL WHERE crmacct_id = pcrmacctId AND crmacct_cntct_id_1 = pcntctId; UPDATE crmacct SET crmacct_cntct_id_2 = NULL WHERE crmacct_id = pcrmacctId AND crmacct_cntct_id_2 = pcntctId; RETURN 0; END; $_$; 6DROP FUNCTION public.detachcontact(integer, integer); publicadminfalse8399212551691659 detag(text)FUNCTIONpCREATE FUNCTION detag(text) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSource ALIAS FOR $1; _result TEXT := ''; BEGIN SELECT regexp_replace(pSource, E'<[^>]*>', '', 'g') INTO _result; RETURN _result; END; $_$; "DROP FUNCTION public.detag(text); publicadminfalse8399212551691660detailednnqoh(integer, boolean)FUNCTION"CREATE FUNCTION detailednnqoh(integer, boolean) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pABS ALIAS FOR $2; _qoh NUMERIC; BEGIN IF (pABS) THEN SELECT SUM(noNeg(itemloc_qty)) INTO _qoh FROM itemloc, location WHERE ( (itemloc_location_id=location_id) AND (NOT location_netable) AND (itemloc_itemsite_id=pItemsiteid) ); ELSE SELECT SUM(itemloc_qty) INTO _qoh FROM itemloc, location WHERE ( (itemloc_location_id=location_id) AND (NOT location_netable) AND (itemloc_itemsite_id=pItemsiteid) ); END IF; IF (_qoh IS NULL) THEN _qoh := 0; END IF; RETURN _qoh; END; $_$; 6DROP FUNCTION public.detailednnqoh(integer, boolean); publicadminfalse8399212551691661detailedqoh(integer, boolean)FUNCTIONdCREATE FUNCTION detailedqoh(integer, boolean) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pABS ALIAS FOR $2; _qoh NUMERIC; BEGIN IF (pABS) THEN SELECT SUM(noNeg(itemloc_qty)) INTO _qoh FROM itemloc LEFT OUTER JOIN location ON (itemloc_location_id=location_id) WHERE ( ( (location_id IS NULL) OR (location_netable) ) AND (itemloc_itemsite_id=pItemsiteid) ); ELSE SELECT SUM(itemloc_qty) INTO _qoh FROM itemloc LEFT OUTER JOIN location ON (itemloc_location_id=location_id) WHERE ( ( (location_id IS NULL) OR (location_netable) ) AND (itemloc_itemsite_id=pItemsiteid) ); END IF; IF (_qoh IS NULL) THEN _qoh := 0; END IF; RETURN _qoh; END; $_$; 4DROP FUNCTION public.detailedqoh(integer, boolean); publicadminfalse3992812551691662$determinediscountdate(integer, date)FUNCTIONCREATE FUNCTION determinediscountdate(integer, date) RETURNS date LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTermsid ALIAS FOR $1; pSourceDate ALIAS FOR $2; _discDate DATE; _p RECORD; BEGIN SELECT terms_type, terms_discdays, terms_cutoffday INTO _p FROM terms WHERE (terms_id=pTermsid); IF (NOT FOUND) THEN _discDate := pSourceDate; -- Handle type D terms ELSIF (_p.terms_type = 'D') THEN _discDate := (pSourceDate + _p.terms_discdays); -- Handle type P terms ELSIF (_p.terms_type = 'P') THEN IF (date_part('day', pSourceDate) <= _p.terms_cutoffday) THEN _discDate := (DATE(date_trunc('month', pSourceDate)) + (_p.terms_discdays - 1)); ELSE _discDate := (DATE(date_trunc('month', pSourceDate)) + (_p.terms_discdays - 1) + INTERVAL '1 month'); END IF; -- Handle unknown terms ELSE _discDate := pSourceDate; END IF; RETURN _discDate; END; $_$; ;DROP FUNCTION public.determinediscountdate(integer, date); publicadminfalse8399212551691663determineduedate(integer, date)FUNCTIONCREATE FUNCTION determineduedate(integer, date) RETURNS date LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTermsid ALIAS FOR $1; pSourceDate ALIAS FOR $2; _dueDate DATE; _p RECORD; BEGIN SELECT terms_type, terms_duedays, terms_cutoffday INTO _p FROM terms WHERE (terms_id=pTermsid); IF (NOT FOUND) THEN _dueDate := pSourceDate; -- Handle type D terms ELSIF (_p.terms_type = 'D') THEN _dueDate := (pSourceDate + _p.terms_duedays); -- Handle type P terms ELSIF (_p.terms_type = 'P') THEN IF (date_part('day', pSourceDate) <= _p.terms_cutoffday) THEN _dueDate := (DATE(date_trunc('month', pSourceDate)) + (_p.terms_duedays - 1)); ELSE _dueDate := (DATE(date_trunc('month', pSourceDate)) + (_p.terms_duedays - 1) + INTERVAL '1 month'); END IF; -- Handle unknown terms ELSE _dueDate := pSourceDate; END IF; RETURN _dueDate; END; $_$; 6DROP FUNCTION public.determineduedate(integer, date); publicadminfalse8399212551691664digest(text, text)FUNCTIONyCREATE FUNCTION digest(text, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_digest'; )DROP FUNCTION public.digest(text, text); publicadminfalse812551691665digest(bytea, text)FUNCTIONzCREATE FUNCTION digest(bytea, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_digest'; *DROP FUNCTION public.digest(bytea, text); publicadminfalse812551691666disablepackage(text)FUNCTIONCREATE FUNCTION disablepackage(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ppkgname ALIAS FOR $1; _i INTEGER := 0; _tabs TEXT[] := ARRAY['cmd', 'cmdarg', 'image', 'metasql', 'priv', 'report', 'script', 'uiform']; BEGIN IF (version() < 'PostgreSQL 8.2') THEN RETURN -1; END IF; FOR _i IN ARRAY_LOWER(_tabs,1)..ARRAY_UPPER(_tabs,1) LOOP EXECUTE 'ALTER TABLE ' || ppkgname || '.pkg' || _tabs[_i] || ' NO INHERIT public.' || _tabs[_i] || ';'; END LOOP; RETURN 0; END; $_$; +DROP FUNCTION public.disablepackage(text); publicadminfalse8399212551691667disablepackage(integer)FUNCTIONCREATE FUNCTION disablepackage(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ppkgheadid ALIAS FOR $1; _pkgname TEXT; BEGIN SELECT pkghead_name INTO _pkgname FROM pkghead WHERE (pkghead_id=ppkgheadid); IF (NOT FOUND) THEN RETURN -2; END IF; RETURN disablePackage(_pkgname); END; $_$; .DROP FUNCTION public.disablepackage(integer); publicadminfalse8399212551691668 distributeitemlocseries(integer)FUNCTION CREATE FUNCTION distributeitemlocseries(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemlocSeries ALIAS FOR $1; _distCounter INTEGER; _itemlocdist RECORD; _itemlocid INTEGER; _invhistid INTEGER; _check BOOLEAN; _debug BOOLEAN := true; BEGIN IF (_debug) THEN RAISE NOTICE 'distributeItemlocSeries, series=%', pItemlocSeries; END IF; _distCounter := 0; -- March through all of the itemlocdists for pItemlocSeries FOR _itemlocdist IN SELECT itemlocdist_id AS itemlocdistid, itemlocdist_source_type AS type, itemlocdist_source_id AS sourceid, itemlocdist_qty AS qty, itemlocdist_itemsite_id AS itemsiteid, itemsite_freeze, itemlocdist_invhist_id AS invhistid, itemlocdist_ls_id AS lotserialid, itemlocdist_expiration AS expiration, itemlocdist_flush, itemlocdist_warranty AS warranty, itemlocdist_series AS series FROM itemlocdist, itemsite WHERE ( (itemlocdist_itemsite_id=itemsite_id) AND (itemlocdist_series=pItemlocSeries) ) ORDER BY itemlocdist_flush DESC LOOP _distCounter := _distCounter + 1; IF (_debug) THEN RAISE NOTICE 'itemlocdist loop %', _distCounter; RAISE NOTICE 'itemlocdistid=%', _itemlocdist.itemlocdistid; RAISE NOTICE 'type=%', _itemlocdist.type; RAISE NOTICE 'sourceid=%', _itemlocdist.sourceid; RAISE NOTICE 'qty=%', _itemlocdist.qty; RAISE NOTICE 'itemsiteid=%', _itemlocdist.itemsiteid; RAISE NOTICE 'freeze=%', _itemlocdist.itemsite_freeze; RAISE NOTICE 'invhistid=%', _itemlocdist.invhistid; RAISE NOTICE 'lotserialid=%', _itemlocdist.lotserialid; RAISE NOTICE 'expiration=%', _itemlocdist.expiration; RAISE NOTICE 'flush=%', _itemlocdist.itemlocdist_flush; RAISE NOTICE 'warranty=%', _itemlocdist.warranty; END IF; -- Commit invhist to itemsite IF (NOT _itemlocdist.itemsite_freeze) THEN PERFORM postInvHist(_itemlocdist.invhistid); END IF; -- Mark the invhist tuple for the itemlocdist in question as having detail UPDATE invhist SET invhist_hasdetail=TRUE WHERE ( (NOT invhist_hasdetail) AND (invhist_id=_itemlocdist.invhistid) ); -- If this itemlocdist is a flush, write a invdetail tuple that records the empty IF (_itemlocdist.itemlocdist_flush) THEN INSERT INTO invdetail ( invdetail_invhist_id, invdetail_location_id, invdetail_ls_id, invdetail_qty, invdetail_qty_before, invdetail_qty_after, invdetail_expiration, invdetail_warrpurc ) SELECT _itemlocdist.invhistid, itemloc_location_id, itemloc_ls_id, (itemloc_qty * -1), itemloc_qty, 0, itemloc_expiration, _itemlocdist.warranty FROM itemloc WHERE ( (itemloc_qty <> 0) AND (itemloc_id=_itemlocdist.sourceid) ); -- Delete the flushed itemloc if its parent itemsite is not frozen IF (NOT _itemlocdist.itemsite_freeze) THEN DELETE FROM itemloc WHERE (itemloc_id=_itemlocdist.sourceid); END IF; ELSE -- If this is a location type distribution, check to see if the target itemloc -- already exists IF (_itemlocdist.type = 'L') THEN SELECT itemloc_id INTO _itemlocid FROM itemloc WHERE ( (itemloc_itemsite_id=_itemlocdist.itemsiteid) AND (itemloc_location_id=_itemlocdist.sourceid) AND (COALESCE(itemloc_ls_id,-1)=COALESCE(_itemlocdist.lotserialid,-1)) AND (COALESCE(itemloc_expiration,endOfTime())=COALESCE(_itemlocdist.expiration,endOfTime())) AND (COALESCE(itemloc_warrpurc,endoftime())=COALESCE(_itemlocdist.warranty,endoftime())) ); -- Nope, create it IF (NOT FOUND) THEN SELECT NEXTVAL('itemloc_itemloc_id_seq') INTO _itemlocid; INSERT INTO itemloc ( itemloc_id, itemloc_itemsite_id, itemloc_location_id, itemloc_qty, itemloc_ls_id, itemloc_expiration, itemloc_warrpurc ) VALUES ( _itemlocid, _itemlocdist.itemsiteid, _itemlocdist.sourceid, 0, _itemlocdist.lotserialid, _itemlocdist.expiration, _itemlocdist.warranty ); END IF; ELSE _itemlocid = _itemlocdist.sourceid; IF (_itemlocid IS NOT NULL AND (SELECT count(itemloc_id) = 0 FROM itemloc WHERE itemloc_id=_itemlocid)) THEN RAISE EXCEPTION 'No record to distribute against. Someone else may have already distributed this record.'; END IF; END IF; -- Record the invdetail INSERT INTO invdetail (invdetail_invhist_id, invdetail_location_id, invdetail_ls_id, invdetail_qty, invdetail_qty_before, invdetail_qty_after, invdetail_expiration, invdetail_warrpurc) SELECT _itemlocdist.invhistid, itemloc_location_id, _itemlocdist.lotserialid, _itemlocdist.qty, itemloc_qty, (itemloc_qty + _itemlocdist.qty), itemloc_expiration,_itemlocdist.warranty FROM itemloc WHERE (itemloc_id=_itemlocid); -- Update the itemloc_qty if its parent itemsite is not frozen IF (NOT _itemlocdist.itemsite_freeze) THEN UPDATE itemloc SET itemloc_qty = (itemloc_qty + _itemlocdist.qty) WHERE (itemloc_id=_itemlocid); END IF; -- Adjust QOH if this itemlocdist is to/from a non-netable location IF ( SELECT (NOT location_netable) FROM itemloc, location WHERE ( (itemloc_location_id=location_id) AND (itemloc_id=_itemlocid) ) ) THEN -- Record the netable->non-netable (or visaveras) invhist SELECT NEXTVAL('invhist_invhist_id_seq') INTO _invhistid; INSERT INTO invhist ( invhist_id, invhist_itemsite_id, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_docnumber, invhist_comments, invhist_invuom, invhist_unitcost, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_series ) SELECT _invhistid, itemsite_id, 'NN', (_itemlocdist.qty * -1), itemsite_qtyonhand, (itemsite_qtyonhand - _itemlocdist.qty), invhist_docnumber, invhist_comments, uom_name, stdCost(item_id), itemsite_costmethod, itemsite_value, (itemsite_value + (_itemlocdist.qty * -1 * CASE WHEN(itemsite_costmethod='A') THEN avgcost(itemsite_id) ELSE stdCost(itemsite_item_id) END)), _itemlocdist.series FROM item, itemsite, invhist, uom WHERE ((itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (itemsite_id=_itemlocdist.itemsiteid) AND (invhist_id=_itemlocdist.invhistid)); -- Adjust the parent itemsite IF (NOT _itemlocdist.itemsite_freeze) THEN UPDATE itemsite SET itemsite_qtyonhand = (itemsite_qtyonhand - _itemlocdist.qty), itemsite_nnqoh = (itemsite_nnqoh + _itemlocdist.qty) FROM itemloc WHERE ((itemloc_itemsite_id=itemsite_id) AND (itemloc_id=_itemlocid)); END IF; END IF; END IF; -- If, after the distribution, the target itemloc_qty = 0, delete the itemloc -- if its parent itemsite is not frozen IF (NOT _itemlocdist.itemsite_freeze) THEN DELETE FROM itemloc WHERE ( (itemloc_qty=0) AND (itemloc_id=_itemlocid) ); END IF; END LOOP; DELETE FROM itemlocdist WHERE (itemlocdist_series=pItemlocSeries); RETURN _distCounter; END; $_$; 7DROP FUNCTION public.distributeitemlocseries(integer); publicadminfalse8399212551691670distributetodefault(integer)FUNCTIONJCREATE FUNCTION distributetodefault(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemlocdistid ALIAS FOR $1; BEGIN RETURN distributeToDefault(pItemlocdistid, 'O'); END; $_$; 3DROP FUNCTION public.distributetodefault(integer); publicadminfalse8399212551691671"distributetodefault(integer, text)FUNCTIONR CREATE FUNCTION distributetodefault(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemlocdistid ALIAS FOR $1; pTranstype ALIAS FOR $2; _locationid INTEGER; _itemlocdistid INTEGER; _qty NUMERIC; BEGIN -- Make sure that the itemsite in question has a default location SELECT CASE WHEN (pTranstype='R') THEN itemsite_recvlocation_id WHEN (pTranstype='I') THEN itemsite_issuelocation_id ELSE itemsite_location_id END INTO _locationid FROM itemlocdist, itemsite WHERE ( (itemlocdist_itemsite_id=itemsite_id) AND (itemlocdist_id=pItemlocdistid) ); IF ( (NOT FOUND) OR (_locationid = -1) ) THEN RETURN -1; END IF; -- Determine the remaining qty required to distribute SELECT (p.itemlocdist_qty - COALESCE(SUM(c.itemlocdist_qty), 0)) INTO _qty FROM itemlocdist AS p LEFT OUTER JOIN itemlocdist AS c ON (c.itemlocdist_itemlocdist_id=p.itemlocdist_id) WHERE (p.itemlocdist_id=pItemlocdistid) GROUP BY p.itemlocdist_qty; IF (_qty = 0) THEN RETURN -2; END IF; -- Check to see if an itemlocdist with the correct location/lotserial/expiration already exists SELECT target.itemlocdist_id INTO _itemlocdistid FROM itemlocdist AS source, itemlocdist AS target, itemloc, itemsite WHERE ( (target.itemlocdist_source_type='L') AND (target.itemlocdist_source_id=_locationid) AND (target.itemlocdist_itemsite_id=source.itemlocdist_itemsite_id) AND (COALESCE(target.itemlocdist_ls_id)=COALESCE(source.itemlocdist_ls_id)) AND (target.itemlocdist_expiration=source.itemlocdist_expiration) AND (target.itemlocdist_itemlocdist_id=source.itemlocdist_itemlocdist_id) AND (target.itemlocdist_itemsite_id=itemsite_id) AND (source.itemlocdist_id=pItemlocdistid) ); IF (FOUND) THEN UPDATE itemlocdist SET itemlocdist_qty = (itemlocdist_qty + _qty) WHERE (itemlocdist_id=_itemlocdistid); RETURN _itemlocdistid; END IF; -- Create a new itemlocdist SELECT NEXTVAL('itemlocdist_itemlocdist_id_seq') INTO _itemlocdistid; INSERT INTO itemlocdist ( itemlocdist_id, itemlocdist_itemlocdist_id, itemlocdist_source_type, itemlocdist_ls_id, itemlocdist_expiration, itemlocdist_source_id, itemlocdist_itemsite_id, itemlocdist_qty ) SELECT _itemlocdistid, pItemlocdistid, 'L', itemlocdist_ls_id, itemlocdist_expiration, _locationid, itemlocdist_itemsite_id, _qty FROM itemlocdist WHERE (itemlocdist_id=pItemlocdistid); RETURN _itemlocdistid; END; $_$; 9DROP FUNCTION public.distributetodefault(integer, text); publicadminfalse8399212551691672#distributetodefaultitemloc(integer)FUNCTIONXCREATE FUNCTION distributetodefaultitemloc(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemlocdistid ALIAS FOR $1; BEGIN RETURN distributeToDefaultItemLoc(pItemlocdistid, 'O'); END; $_$; :DROP FUNCTION public.distributetodefaultitemloc(integer); publicadminfalse8399212551691673)distributetodefaultitemloc(integer, text)FUNCTION CREATE FUNCTION distributetodefaultitemloc(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemlocdistid ALIAS FOR $1; pTranstype ALIAS FOR $2; _itemlocid INTEGER; _itemlocdistid INTEGER; _qty NUMERIC; BEGIN -- Make sure that the itemsite in question has a default location SELECT itemloc_id INTO _itemlocid FROM itemlocdist, itemsite, itemloc WHERE ((itemlocdist_itemsite_id=itemsite_id) AND ( (itemsite_location_id=itemloc_location_id AND pTranstype='O') OR (itemsite_recvlocation_id=itemloc_location_id AND pTranstype='R') OR (itemsite_issuelocation_id=itemloc_location_id AND pTranstype='I') ) AND (itemloc_itemsite_id=itemsite_id) AND (itemlocdist_id=pItemlocdistid)); IF ( (NOT FOUND) OR (_itemlocid = -1) ) THEN RETURN -1; END IF; -- Determine the remaining qty required to distribute SELECT (p.itemlocdist_qty - COALESCE(SUM(c.itemlocdist_qty), 0)) INTO _qty FROM itemlocdist AS p LEFT OUTER JOIN itemlocdist AS c ON (c.itemlocdist_itemlocdist_id=p.itemlocdist_id) WHERE (p.itemlocdist_id=pItemlocdistid) GROUP BY p.itemlocdist_qty; IF (_qty = 0) THEN RETURN -2; END IF; -- Check to see if an itemlocdist with the correct location/lotserial/expiration already exists SELECT target.itemlocdist_id INTO _itemlocdistid FROM itemlocdist AS source, itemlocdist AS target WHERE ( (target.itemlocdist_source_type='I') AND (target.itemlocdist_source_id=_itemlocid) AND (COALESCE(target.itemlocdist_ls_id,-1)=COALESCE(source.itemlocdist_ls_id,-1)) AND (target.itemlocdist_expiration=source.itemlocdist_expiration) AND (target.itemlocdist_itemlocdist_id=source.itemlocdist_id) AND (source.itemlocdist_id=pItemlocdistid) ); IF (FOUND) THEN UPDATE itemlocdist SET itemlocdist_qty = (itemlocdist_qty + _qty) WHERE (itemlocdist_id=_itemlocdistid); RETURN _itemlocdistid; END IF; -- Create a new itemlocdist SELECT NEXTVAL('itemlocdist_itemlocdist_id_seq') INTO _itemlocdistid; INSERT INTO itemlocdist ( itemlocdist_id, itemlocdist_itemlocdist_id, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_qty, itemlocdist_expiration ) VALUES ( _itemlocdistid, pItemlocdistid, 'I', _itemlocid, _qty, endOfTime() ); RETURN _itemlocdistid; END; $_$; @DROP FUNCTION public.distributetodefaultitemloc(integer, text); publicadminfalse8399212551691674distributetolocations(integer)FUNCTION$CREATE FUNCTION distributetolocations(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemlocdistid ALIAS FOR $1; _distCounter INTEGER; _itemlocdist RECORD; _itemlocid INTEGER; _runningQty NUMERIC; _tmp RECORD; BEGIN _distCounter := 0; _runningQty := 0; -- A scenario can occur where two people try to post distributions -- to the same itemsite against two or more lot/serial/mlc locations -- leading to a deadlock. This line tries to prevent that by locking -- ahead of time all the itemsites that the transaction will need -- before any of the other tables are locked individually. SELECT itemsite_id INTO _tmp FROM itemsite WHERE(itemsite_id in (SELECT DISTINCT itemlocdist_itemsite_id FROM itemlocdist WHERE(itemlocdist_id=pItemlocdistid))) FOR UPDATE; -- March through all of the itemlocdist owned by the passed parent itemlocdist FOR _itemlocdist IN SELECT c.itemlocdist_id AS itemlocdistid, c.itemlocdist_source_type AS type, c.itemlocdist_source_id AS sourceid, c.itemlocdist_qty AS qty, p.itemlocdist_itemsite_id AS itemsiteid, itemsite_freeze, p.itemlocdist_invhist_id AS invhistid, p.itemlocdist_ls_id AS lotserialid, p.itemlocdist_expiration AS expiration, p.itemlocdist_warranty AS warranty, p.itemlocdist_order_type AS ordertype, p.itemlocdist_order_id AS orderid, p.itemlocdist_series AS series FROM itemlocdist AS c, itemlocdist AS p, itemsite WHERE ( (c.itemlocdist_itemlocdist_id=p.itemlocdist_id) AND (p.itemlocdist_source_type='O') AND (p.itemlocdist_itemsite_id=itemsite_id) AND (p.itemlocdist_id=pItemlocdistid) ) LOOP _distCounter := _distCounter + 1; -- If the target for this itemlocdist is a location, check to see if the -- required itemloc already exists IF (_itemlocdist.type = 'L') THEN SELECT itemloc_id INTO _itemlocid FROM itemloc WHERE ( (itemloc_itemsite_id=_itemlocdist.itemsiteid) AND (itemloc_location_id=_itemlocdist.sourceid) AND (COALESCE(itemloc_ls_id, -1)=COALESCE(_itemlocdist.lotserialid, -1)) AND (COALESCE(itemloc_expiration,endOfTime())=COALESCE(_itemlocdist.expiration,endOfTime())) AND (COALESCE(itemloc_warrpurc,endoftime())=COALESCE(_itemlocdist.warranty,endoftime())) ); -- Nope, make it IF (NOT FOUND) THEN SELECT NEXTVAL('itemloc_itemloc_id_seq') INTO _itemlocid; INSERT INTO itemloc ( itemloc_id, itemloc_itemsite_id, itemloc_location_id, itemloc_qty, itemloc_ls_id, itemloc_expiration, itemloc_warrpurc ) VALUES ( _itemlocid, _itemlocdist.itemsiteid, _itemlocdist.sourceid, 0, _itemlocdist.lotserialid, _itemlocdist.expiration, _itemlocdist.warranty ); END IF; ELSE -- Yep, cache it _itemlocid = _itemlocdist.sourceid; IF (_itemlocid IS NOT NULL AND (SELECT count(itemloc_id) = 0 FROM itemloc WHERE itemloc_id=_itemlocid)) THEN RAISE EXCEPTION 'No record to distribute against. Someone else may have already distributed this record.'; END IF; END IF; -- Record the invdetail for this itemlocdist INSERT INTO invdetail ( invdetail_invhist_id, invdetail_location_id, invdetail_ls_id, invdetail_qty, invdetail_qty_before, invdetail_qty_after, invdetail_expiration, invdetail_warrpurc ) SELECT _itemlocdist.invhistid, itemloc_location_id, itemloc_ls_id, _itemlocdist.qty, itemloc_qty, (itemloc_qty + _itemlocdist.qty), itemloc_expiration,_itemlocdist.warranty FROM itemloc WHERE (itemloc_id=_itemlocid); -- Update the parent invhist to indicate that it has invdetail records UPDATE invhist SET invhist_hasdetail=TRUE WHERE ((invhist_hasdetail=FALSE) AND (invhist_id=_itemlocdist.invhistid)); -- Update the itemloc_qty if its parent itemsite is not frozen IF (NOT _itemlocdist.itemsite_freeze) THEN UPDATE itemloc SET itemloc_qty = (itemloc_qty + _itemlocdist.qty) WHERE (itemloc_id=_itemlocid); PERFORM postInvHist(_itemlocdist.invhistid); -- Handle reservation data IF ( (SELECT fetchMetricBool('EnableSOReservationsByLocation')) AND (_itemlocdist.qty < 0) ) THEN -- If a shipment on a sales order, record reservation change before updating -- so it can be reversed later if necessary IF (_itemlocdist.ordertype = 'SO') THEN INSERT INTO shipitemlocrsrv SELECT nextval('shipitemlocrsrv_shipitemlocrsrv_id_seq'), shipitem_id, itemloc_itemsite_id, itemloc_location_id, itemloc_ls_id, itemloc_expiration, itemloc_warrpurc, least(_itemlocdist.qty, itemlocrsrv_qty) FROM shipitem, itemloc JOIN itemlocrsrv ON (itemloc_id=itemlocrsrv_itemloc_id) WHERE ( (shipitem_invhist_id=_itemlocdist.invhistid) AND (itemloc_id=_itemlocid) AND (itemlocrsrv_source=_itemlocdist.ordertype) AND (itemlocrsrv_source_id=_itemlocdist.orderid) ); END IF; -- Update the itemloc reservation UPDATE itemlocrsrv SET itemlocrsrv_qty = (itemlocrsrv_qty + _itemlocdist.qty) WHERE ( (itemlocrsrv_itemloc_id=_itemlocid) AND (itemlocrsrv_source=_itemlocdist.ordertype) AND (itemlocrsrv_source_id=_itemlocdist.orderid) ); -- Delete reservation if fully distributed DELETE FROM itemlocrsrv WHERE ( (itemlocrsrv_itemloc_id=_itemlocid) AND (itemlocrsrv_source=_itemlocdist.ordertype) AND (itemlocrsrv_source_id=_itemlocdist.orderid) AND (itemlocrsrv_qty=0) ); END IF; END IF; -- Adjust QOH if this itemlocdist is to/from a non-netable location IF ( SELECT (NOT location_netable) FROM itemloc, location WHERE ((itemloc_location_id=location_id) AND (itemloc_id=_itemlocid)) ) THEN -- Record the invhist record for the netable->non-netable (or visaversa) INSERT INTO invhist ( invhist_itemsite_id, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_docnumber, invhist_comments, invhist_invuom, invhist_unitcost, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_series ) SELECT itemsite_id, 'NN', (_itemlocdist.qty * -1), itemsite_qtyonhand, (itemsite_qtyonhand - _itemlocdist.qty), invhist_docnumber, invhist_comments, uom_name, stdCost(item_id), itemsite_costmethod, itemsite_value, (itemsite_value + (_itemlocdist.qty * -1 * CASE WHEN(itemsite_costmethod='A') THEN avgcost(itemsite_id) ELSE stdCost(itemsite_item_id) END)), _itemlocdist.series FROM item, itemsite, invhist, uom WHERE ( (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (itemsite_id=_itemlocdist.itemsiteid) AND (invhist_id=_itemlocdist.invhistid) ); -- Update the itemsite_qoh IF (NOT _itemlocdist.itemsite_freeze) THEN UPDATE itemsite SET itemsite_qtyonhand = (itemsite_qtyonhand - _itemlocdist.qty), itemsite_nnqoh = (itemsite_nnqoh + _itemlocdist.qty) FROM itemloc WHERE ((itemloc_itemsite_id=itemsite_id) AND (itemloc_id=_itemlocid)); END IF; END IF; -- Cache the running qty. _runningQty := _runningQty + _itemlocdist.qty; -- Dene with the child itemlocdist, so delete it DELETE FROM itemlocdist WHERE (itemlocdist_id=_itemlocdist.itemlocdistid); -- If the target itemloc is now at qty=0, delete it if its parent -- itemsite is not frozen IF (NOT _itemlocdist.itemsite_freeze) THEN DELETE FROM itemloc WHERE ( (itemloc_qty=0) AND (itemloc_id=_itemlocid) ); END IF; END LOOP; -- If the running qty for the detailed distributions is the same as the -- total qty to distribute indicated by the parent itemlocdist, then the -- parent itemlocdist has been fully distributed and should be deleted. IF ( ( SELECT itemlocdist_qty FROM itemlocdist WHERE (itemlocdist_id=pItemlocdistid) ) = _runningQty) THEN DELETE FROM itemlocdist WHERE (itemlocdist_id=pItemlocdistid); ELSE -- There is still some more qty to distribute in the parent itemlocdist. -- Update the qty to distribute with the qty that has been distributed. UPDATE itemlocdist SET itemlocdist_qty = (itemlocdist_qty - _runningQty) WHERE (itemlocdist_id=pItemlocdistid); END IF; RETURN _distCounter; END; $_$; 5DROP FUNCTION public.distributetolocations(integer); publicadminfalse83992125516916760distributevoucherline(integer, integer, integer)FUNCTIONCREATE FUNCTION distributevoucherline(integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVoucherId ALIAS FOR $1; pPoitemId ALIAS FOR $2; pCurrId ALIAS FOR $3; _count INTEGER; _costelemId INTEGER; _close BOOLEAN; _r RECORD; _qtyOrdered NUMERIC; _voitemId INTEGER; _taxtypeid INTEGER; BEGIN -- Make sure the P/O and Voucher are same currency SELECT COALESCE(COUNT(*),0) INTO _count FROM poitem JOIN pohead ON (pohead_id=poitem_pohead_id) WHERE ((poitem_id=pPoitemid) AND (pohead_curr_id=pCurrId)); IF (_count = 0) THEN RETURN -3; END IF; -- Validate and get cost element SELECT COALESCE(COUNT(*),0) INTO _count FROM itemcost, item, itemsite, poitem WHERE ((itemcost_item_id=item_id) AND (item_id=itemsite_item_id) AND (itemsite_id=poitem_itemsite_id) AND (poitem_id=pPoitemId)); IF (_count > 1) THEN RETURN -5; ELSEIF (_count = 1) THEN SELECT itemcost_costelem_id INTO _costelemId FROM itemcost, item, itemsite, poitem WHERE ((itemcost_item_id=item_id) AND (item_id=itemsite_item_id) AND (itemsite_id=poitem_itemsite_id) AND (poitem_id=pPoitemId)); ELSE SELECT costelem_id INTO _costelemId FROM costelem WHERE (costelem_type='Material'); END IF; -- Clear previous distributions UPDATE recv SET recv_vohead_id=NULL, recv_voitem_id=NULL WHERE ((recv_vohead_id=pVoucherId) AND (recv_orderitem_id=pPoitemId) AND (recv_order_type='PO')); UPDATE poreject SET poreject_vohead_id=NULL, poreject_voitem_id=NULL WHERE ((poreject_vohead_id=pVoucherId) AND (poreject_poitem_id=pPoitemId)); DELETE FROM vodist WHERE ((vodist_poitem_id=pPoitemId) AND (vodist_vohead_id=pVoucherId)); DELETE FROM voitem WHERE ((voitem_poitem_id=pPoitemId) AND (voitem_vohead_id=pVoucherId)); -- Determine Line balances SELECT COALESCE(SUM(qty_received),0) AS qty_received, COALESCE(SUM(qty_rejected),0) AS qty_rejected, COALESCE(SUM(qty_vouchered),0) AS qty_vouchered, round(COALESCE(SUM(balance),0),2) AS balance, round(COALESCE(SUM(freight),0),2) AS freight INTO _r FROM ( SELECT recv_qty AS qty_received, 0 AS qty_rejected, 0 AS qty_vouchered, (recv_qty * COALESCE(recv_purchcost, poitem_unitprice)) AS balance, recv_freight AS freight FROM poitem JOIN recv ON ((recv_orderitem_id=poitem_id) AND (recv_order_type='PO')) WHERE ( (recv_vohead_id IS NULL) AND (NOT recv_invoiced) AND (recv_posted) AND (poitem_id=pPoitemId) ) UNION ALL SELECT 0 AS qty_received, (poreject_qty) AS qty_rejected, 0 AS qty_vouchered, (poreject_qty * -1 * COALESCE(recv_purchcost, poitem_unitprice)) AS balance, 0 AS freight FROM poitem JOIN poreject ON (poreject_poitem_id=poitem_id) LEFT OUTER JOIN recv ON (recv_id=poreject_recv_id) WHERE ( (poreject_posted) AND (poreject_vohead_id IS NULL) AND (NOT poreject_invoiced) AND (poitem_id=pPoitemId) ) UNION ALL SELECT 0 AS qty_received, 0 AS qty_rejected, voitem_qty AS qty_vouchered, 0 AS balance, 0 AS freight FROM voitem, poitem WHERE ( (voitem_poitem_id=pPoitemId) AND (poitem_id=voitem_poitem_id) ) ) AS data; SELECT poitem_qty_ordered INTO _qtyOrdered FROM poitem WHERE (poitem_id=pPoitemId); IF _r.balance < 0 THEN RETURN -4; ELSEIF ( ((_r.qty_received <> 0) OR (_r.qty_received <> 0)) AND (_r.qty_received - _r.qty_rejected = 0) ) THEN RETURN -2; ELSEIF ((_r.qty_received - _r.qty_rejected) = 0) THEN RETURN 0; END IF; -- Determine whether to close P/O item IF (_r.qty_received -_r.qty_rejected + _r.qty_vouchered) >= _qtyOrdered THEN _close:=True; ELSE _close:=False; END IF; -- Create distribution INSERT INTO vodist (vodist_poitem_id,vodist_vohead_id,vodist_costelem_id,vodist_amount,vodist_qty,vodist_expcat_id) VALUES (pPoitemId,pVoucherId,_costelemId,_r.balance,(_r.qty_received -_r.qty_rejected),-1); -- Create voucher item SELECT poitem_taxtype_id INTO _taxtypeid FROM poitem WHERE (poitem_id=pPoitemId); SELECT NEXTVAL('voitem_voitem_id_seq') INTO _voitemId; INSERT INTO voitem (voitem_id,voitem_vohead_id,voitem_poitem_id,voitem_close,voitem_qty,voitem_freight, voitem_taxtype_id) VALUES (_voitemId,pVoucherId,pPoitemId,_close,(_r.qty_received -_r.qty_rejected),_r.freight, _taxtypeid); -- Tag receipt records UPDATE recv SET recv_vohead_id=pVoucherId, recv_voitem_id=_voitemId WHERE ((recv_orderitem_id=pPoitemId) AND (recv_order_type='PO') AND (recv_vohead_id IS NULL)); UPDATE poreject SET poreject_vohead_id=pVoucherId,poreject_voitem_id=_voitemId WHERE ((poreject_poitem_id=pPoitemId) AND (NOT poreject_invoiced) AND (poreject_vohead_id IS NULL)); RETURN 1; END; $_$; GDROP FUNCTION public.distributevoucherline(integer, integer, integer); publicadminfalse8399212551691677ndopostcosts(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean)FUNCTIONcCREATE FUNCTION dopostcosts(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pMaterial ALIAS FOR $1; plowerMaterial ALIAS FOR $2; pdirectLabor ALIAS FOR $3; plowerDirectLabor ALIAS FOR $4; poverhead ALIAS FOR $5; plowerOverhead ALIAS FOR $6; pmachOverhead ALIAS FOR $7; plowerMachOverhead ALIAS FOR $8; pUser ALIAS FOR $9; plowerUser ALIAS FOR $10; prollUp ALIAS FOR $11; _item RECORD; _result INTEGER := 0; BEGIN PERFORM resetLowLevelCode(-1); FOR _item IN SELECT costUpdate_item_id FROM costUpdate ORDER BY costUpdate_lowlevel_code DESC LOOP PERFORM doPostCosts(_item.costUpdate_item_id, FALSE, pMaterial, plowerMaterial, pdirectLabor, plowerDirectLabor, poverhead, plowerOverhead, pmachOverhead, plowerMachOverhead, puser, plowerUser, prollUp); END LOOP; RETURN _result; END; $_$; DROP FUNCTION public.dopostcosts(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean); publicadminfalse8399212551691678dopostcosts(integer, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean)FUNCTIONT CREATE FUNCTION dopostcosts(integer, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemId ALIAS FOR $1; pResetLowLevel ALIAS FOR $2; pMaterial ALIAS FOR $3; plowerMaterial ALIAS FOR $4; pdirectLabor ALIAS FOR $5; plowerDirectLabor ALIAS FOR $6; poverhead ALIAS FOR $7; plowerOverhead ALIAS FOR $8; pmachOverhead ALIAS FOR $9; plowerMachOverhead ALIAS FOR $10; pUser ALIAS FOR $11; plowerUser ALIAS FOR $12; prollUp ALIAS FOR $13; _itemcost RECORD; _result INTEGER; BEGIN IF (pResetLowLevel) THEN PERFORM resetLowLevelCode(pItemId); END IF; FOR _itemcost IN SELECT itemcost_id, costelem_sys, costelem_type, itemcost_lowlevel, costUpdate_lowlevel_code, costUpdate_item_type FROM itemcost, costelem, costUpdate WHERE itemcost_item_id = pItemId AND costUpdate_item_id = itemcost_item_id AND itemcost_costelem_id = costelem_id LOOP IF (NOT _itemcost.costelem_sys) THEN IF ( (pUser) AND ( NOT _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; IF ( (plowerUser) AND ( _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; END IF; IF (_itemcost.costelem_type = 'Material') THEN IF ( (pMaterial) AND ( NOT _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; IF ( (plowerMaterial) AND ( _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; END IF; IF (_itemcost.costelem_type = 'Direct Labor') THEN IF ( (pdirectLabor) AND ( NOT _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; IF ( (plowerDirectLabor) AND ( _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; END IF; IF (_itemcost.costelem_type = 'Overhead') THEN IF ( (poverhead) AND ( NOT _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; IF ( (plowerOverhead) AND ( _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; END IF; IF (_itemcost.costelem_type = 'Machine Overhead') THEN IF ( (pmachOverhead) AND ( NOT _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; IF ( (plowerMachOverhead) AND ( _itemcost.itemcost_lowlevel) ) THEN PERFORM postCost(_itemcost.itemcost_id); _result := _result + 1; END IF; END IF; END LOOP; IF (prollUp) THEN PERFORM rollUpStandardCost(pItemId); _result := _result + 1; END IF; RETURN _result; END; $_$; DROP FUNCTION public.dopostcosts(integer, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean); publicadminfalse8399212551691679^doupdatecosts(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean)FUNCTIONCREATE FUNCTION doupdatecosts(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE plowerMaterial ALIAS FOR $1; pdirectLabor ALIAS FOR $2; plowerDirectLabor ALIAS FOR $3; poverhead ALIAS FOR $4; plowerOverhead ALIAS FOR $5; pmachOverhead ALIAS FOR $6; plowerMachOverhead ALIAS FOR $7; plowerUser ALIAS FOR $8; prollUp ALIAS FOR $9; BEGIN RETURN doUpdateCosts(plowerMaterial, pdirectLabor, plowerDirectLabor, poverhead, plowerOverhead, pmachOverhead, plowerMachOverhead, plowerUser, prollUp, TRUE); END; $_$; uDROP FUNCTION public.doupdatecosts(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean); publicadminfalse8399212551691680pdoupdatecosts(integer, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean)FUNCTIONXCREATE FUNCTION doupdatecosts(integer, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemId ALIAS FOR $1; pResetLowLevel ALIAS FOR $2; plowerMaterial ALIAS FOR $3; pdirectLabor ALIAS FOR $4; plowerDirectLabor ALIAS FOR $5; poverhead ALIAS FOR $6; plowerOverhead ALIAS FOR $7; pmachOverhead ALIAS FOR $8; plowerMachOverhead ALIAS FOR $9; plowerUser ALIAS FOR $10; prollUp ALIAS FOR $11; BEGIN RETURN doUpdateCosts(pItemId, pResetLowLevel, plowerMaterial, pdirectLabor, plowerDirectLabor, poverhead, plowerOverhead, pmachOverhead, plowerMachOverhead, plowerUser, prollUp, TRUE); END; $_$; DROP FUNCTION public.doupdatecosts(integer, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean); publicadminfalse8399212551691681gdoupdatecosts(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean)FUNCTION3CREATE FUNCTION doupdatecosts(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE plowerMaterial ALIAS FOR $1; pdirectLabor ALIAS FOR $2; plowerDirectLabor ALIAS FOR $3; poverhead ALIAS FOR $4; plowerOverhead ALIAS FOR $5; pmachOverhead ALIAS FOR $6; plowerMachOverhead ALIAS FOR $7; plowerUser ALIAS FOR $8; prollUp ALIAS FOR $9; pActual ALIAS FOR $10; _item RECORD; _bom RECORD; _result INTEGER := 0; BEGIN PERFORM resetLowLevelCode(-1); FOR _item IN SELECT costUpdate_item_id FROM costUpdate ORDER BY costUpdate_lowlevel_code DESC LOOP PERFORM doUpdateCosts(_item.costUpdate_item_id, false, plowerMaterial, pdirectLabor, plowerDirectLabor, poverhead, plowerOverhead, pmachOverhead, plowerMachOverhead, plowerUser, prollUp, pActual); END LOOP; RETURN _result; END; $_$; ~DROP FUNCTION public.doupdatecosts(boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean); publicadminfalse8399212551691682ydoupdatecosts(integer, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean)FUNCTION CREATE FUNCTION doupdatecosts(integer, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemId ALIAS FOR $1; pResetLowLevel ALIAS FOR $2; plowerMaterial ALIAS FOR $3; pdirectLabor ALIAS FOR $4; plowerDirectLabor ALIAS FOR $5; poverhead ALIAS FOR $6; plowerOverhead ALIAS FOR $7; pmachOverhead ALIAS FOR $8; plowerMachOverhead ALIAS FOR $9; plowerUser ALIAS FOR $10; prollUp ALIAS FOR $11; pUpdateActual ALIAS FOR $12; _item RECORD; _bom RECORD; _result INTEGER := 0; _resultFromReset INTEGER; _counterNum INTEGER; _feedBackNum INTEGER; BEGIN IF (pResetLowLevel) THEN PERFORM resetLowLevelCode(pItemId); END IF; SELECT costUpdate_item_id AS item_id, costUpdate_item_type AS item_type INTO _item FROM costUpdate WHERE costUpdate_item_id = pItemId; IF ((plowerMaterial) AND ((_item.item_type <> 'P') AND (_item.item_type <> 'O'))) THEN PERFORM updateSorACost(_item.item_id, 'Material', TRUE, lowerCost(_item.item_id, 'Material', pUpdateActual), pUpdateActual); END IF; IF (pdirectLabor) THEN PERFORM updateSorACost(_item.item_id, 'Direct Labor', FALSE, xtmfg.directLaborCost(_item.item_id), pUpdateActual); END IF; IF (plowerDirectLabor) THEN PERFORM updateSorACost(_item.item_id, 'Direct Labor', TRUE, lowerCost(_item.item_id, 'Direct Labor', pUpdateActual), pUpdateActual); END IF; IF (poverhead) THEN PERFORM updateSorACost(_item.item_id, 'Overhead', FALSE, xtmfg.overheadCost(_item.item_id), pUpdateActual); END IF; IF (plowerOverhead) THEN PERFORM updateSorACost(_item.item_id, 'Overhead', TRUE, lowerCost(_item.item_id, 'Overhead', pUpdateActual), pUpdateActual); END IF; IF (pmachOverhead) THEN PERFORM updateSorACost(_item.item_id, 'Machine Overhead', FALSE, xtmfg.machineOverheadCost(_item.item_id), pUpdateActual); END IF; IF (plowerMachOverhead) THEN PERFORM updateSorACost(_item.item_id, 'Machine Overhead', TRUE, lowerCost(_item.item_id, 'Machine Overhead', pUpdateActual), pUpdateActual); END IF; IF (plowerUser) THEN PERFORM updateLowerUserCosts(_item.item_id, pUpdateActual); END IF; IF (prollUp) THEN PERFORM rollUpSorACost(_item.item_id, pUpdateActual); END IF; RETURN _result; END; $_$; DROP FUNCTION public.doupdatecosts(integer, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean, boolean); publicadminfalse8399212551691683dropifexists(text, text)FUNCTIONCREATE FUNCTION dropifexists(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN dropIfExists($1, $2, 'public'); END; $_$; /DROP FUNCTION public.dropifexists(text, text); publicadminfalse83992%12551691684dropifexists(text, text, text)FUNCTIONCREATE FUNCTION dropifexists(text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN dropIfExists($1, $2, $3, false); END; $_$; 5DROP FUNCTION public.dropifexists(text, text, text); publicadminfalse8399212551691685'dropifexists(text, text, text, boolean)FUNCTIONCREATE FUNCTION dropifexists(text, text, text, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pType ALIAS FOR $1; pObject ALIAS FOR $2; pSchema ALIAS FOR $3; pCascade ALIAS FOR $4; _table TEXT; _query TEXT; BEGIN IF (UPPER(pType) = 'INDEX') THEN _query = 'DROP INDEX ' || quote_ident(LOWER(pSchema)) || '.' || quote_ident(LOWER(pObject)); BEGIN EXECUTE _query; EXCEPTION WHEN undefined_object OR invalid_schema_name THEN RETURN 0; WHEN OTHERS THEN RAISE EXCEPTION '% %', SQLSTATE, SQLERRM; END; ELSEIF (UPPER(pType) = 'TABLE') THEN _query = 'DROP TABLE ' || quote_ident(LOWER(pSchema)) || '.' || quote_ident(LOWER(pObject)); IF (pCascade) THEN _query = _query || ' CASCADE'; END IF; BEGIN EXECUTE _query; EXCEPTION WHEN undefined_table OR invalid_schema_name THEN RETURN 0; WHEN OTHERS THEN RAISE EXCEPTION '% %', SQLSTATE, SQLERRM; END; ELSIF (UPPER(pType) = 'VIEW') THEN _query = 'DROP VIEW ' || quote_ident(LOWER(pSchema)) || '.' || quote_ident(LOWER(pObject)); IF (pCascade) THEN _query = _query || ' CASCADE'; END IF; BEGIN EXECUTE _query; EXCEPTION WHEN undefined_table OR invalid_schema_name THEN RETURN 0; WHEN OTHERS THEN RAISE EXCEPTION '% %', SQLSTATE, SQLERRM; END; ELSIF (UPPER(pType) = 'TRIGGER') THEN SELECT relname INTO _table FROM pg_trigger, pg_class WHERE ((tgrelid=pg_class.oid) AND (UPPER(tgname)=UPPER(pObject))); IF (NOT FOUND) THEN _table := '[no table]'; END IF; _query = 'DROP TRIGGER ' || quote_ident(LOWER(pObject)) || ' ON ' || quote_ident(LOWER(pSchema)) || '.' || quote_ident(LOWER(_table)); BEGIN EXECUTE _query; EXCEPTION WHEN undefined_object THEN RETURN 0; WHEN undefined_table OR invalid_schema_name THEN RETURN 0; WHEN OTHERS THEN RAISE EXCEPTION '% %', SQLSTATE, SQLERRM; END; ELSIF (UPPER(pType) = 'FUNCTION') THEN _query = 'DROP FUNCTION ' || (LOWER(pSchema)) || '.' || (LOWER(pObject)); BEGIN EXECUTE _query; EXCEPTION WHEN undefined_object OR undefined_function OR invalid_schema_name THEN RETURN 0; WHEN OTHERS THEN RAISE EXCEPTION '% %', SQLSTATE, SQLERRM; END; ELSIF (UPPER(pType) = 'CONSTRAINT') THEN IF( (SELECT count(*) FROM pg_constraint, pg_class, pg_namespace WHERE((conrelid=pg_class.oid) AND (connamespace=pg_namespace.oid) AND (conname=pObject) AND (nspname=pSchema)) ) > 1 ) THEN RAISE EXCEPTION 'dropIfExists called on constraint name that matches more than 1 constraint.'; END IF; SELECT relname INTO _table FROM pg_constraint, pg_class, pg_namespace WHERE ((conrelid=pg_class.oid) AND (connamespace=pg_namespace.oid) AND (conname=pObject) AND (nspname=pSchema)); IF (NOT FOUND) THEN RETURN 0; END IF; _query = 'ALTER TABLE ' || quote_ident(LOWER(pSchema)) || '.' || quote_ident(LOWER(_table)) || ' DROP CONSTRAINT ' || quote_ident(LOWER(pObject)); BEGIN EXECUTE _query; EXCEPTION WHEN undefined_table OR invalid_schema_name THEN RETURN 0; WHEN OTHERS THEN RAISE EXCEPTION '% %', SQLSTATE, SQLERRM; END; ELSIF (UPPER(pType) = 'SCHEMA') THEN _query = 'DROP SCHEMA ' || quote_ident(LOWER(pObject)); BEGIN EXECUTE _query; EXCEPTION WHEN invalid_schema_name THEN RETURN 0; WHEN OTHERS THEN RAISE EXCEPTION '% %', SQLSTATE, SQLERRM; END; ELSIF (UPPER(pType) = 'TYPE') THEN _query = 'DROP TYPE ' || quote_ident(LOWER(pSchema)) || '.' || quote_ident(LOWER(pObject)); IF (pCascade) THEN _query = _query || ' CASCADE'; END IF; BEGIN EXECUTE _query; EXCEPTION WHEN undefined_object OR invalid_schema_name THEN RETURN 0; WHEN OTHERS THEN RAISE EXCEPTION '% %', SQLSTATE, SQLERRM; END; ELSE RAISE EXCEPTION 'dropIfExists(%, %): unknown pType %', pType, pObject, pType; END IF; RETURN 1; END; $_$; >DROP FUNCTION public.dropifexists(text, text, text, boolean); publicadminfalse8399212551691686$dropifexists(text, text, text, text)FUNCTIONCREATE FUNCTION dropifexists(text, text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pType ALIAS FOR $1; pObject ALIAS FOR $2; pSchema ALIAS FOR $3; pRelation ALIAS FOR $4; _table TEXT; _query TEXT; BEGIN IF (UPPER(pType) = 'CONSTRAINT') THEN SELECT relname INTO _table FROM pg_constraint, pg_class, pg_namespace WHERE ((conrelid=pg_class.oid) AND (connamespace=pg_namespace.oid) AND (conname=pObject) AND (relname=pRelation) AND (nspname=pSchema)); IF (NOT FOUND) THEN RETURN 0; END IF; _query = 'ALTER TABLE ' || quote_ident(LOWER(pSchema)) || '.' || quote_ident(LOWER(pRelation)) || ' DROP CONSTRAINT ' || quote_ident(LOWER(pObject)); BEGIN EXECUTE _query; EXCEPTION WHEN undefined_table OR invalid_schema_name THEN RETURN 0; WHEN OTHERS THEN RAISE EXCEPTION '% %', SQLSTATE, SQLERRM; END; ELSE RAISE EXCEPTION 'dropIfExists(%, %, %, %): pType % is not supported when relation is specified', pType, pObject, pSchema, pRelation, pType; END IF; RETURN 1; END; $_$; ;DROP FUNCTION public.dropifexists(text, text, text, text); publicadminfalse8399212551691687dropstdopntable()FUNCTIONCREATE FUNCTION dropstdopntable() RETURNS boolean LANGUAGE plpgsql AS $$ BEGIN IF((SELECT metric_value != 'Manufacturing' FROM metric WHERE metric_name = 'Application')) THEN PERFORM dropIfExists('TABLE', 'stdopn'); RETURN true; END IF; RETURN false; END; $$; (DROP FUNCTION public.dropstdopntable(); publicadminfalse8399212551691688editccnumber(text, text)FUNCTION CREATE FUNCTION editccnumber(text, text) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCcardnum ALIAS FOR $1; pCcardtype ALIAS FOR $2; card_length INTEGER; card_valid boolean := false; starting_digits TEXT; _sum INTEGER := 0; _digit INTEGER := 0; _timesTwo BOOLEAN := false; BEGIN -- Check the card type IF (pCcardtype NOT IN ('M', 'V', 'A', 'D')) THEN -- Unknown Card Type RETURN -1; END IF; card_length := length(pCcardnum); -- Process Master Card Checking length -- Process Master Card Starting digits IF (pCcardtype = 'M') THEN IF (card_length != 16) THEN -- Bad Card Length Card Type RETURN -2; END IF; starting_digits := substr(pCcardnum, 1, 2); IF (starting_digits < '51' OR starting_digits > '55') THEN -- Bad Starting digits RETURN -6; END IF; END IF; -- Process Visa Card Checking length -- Process Visa Card Starting digits IF (pCcardtype = 'V') THEN IF (card_length != 13 AND card_length != 16) THEN -- Bad Card Length Card Type RETURN -3; END IF; starting_digits := substr(pCcardnum, 1, 1); IF (starting_digits != '4') THEN -- Bad Starting digits RETURN -7; END IF; END IF; -- Process American Express Card Checking length -- Process American Express Card Starting digits IF (pCcardtype = 'A') THEN IF (card_length != 15) THEN -- Bad Card Length Card Type RETURN -4; END IF; starting_digits := substr(pCcardnum, 1, 2); IF (starting_digits != '34' AND starting_digits != '37') THEN -- Bad Starting digits RETURN -8; END IF; END IF; -- Process Discover Card Checking length -- Process Discover Card Starting digits IF (pCcardtype = 'D') THEN IF (card_length != 16) THEN -- Bad Card Length Card Type RETURN -5; END IF; starting_digits := substr(pCcardnum, 1, 4); IF (starting_digits != '6011') THEN -- Bad Starting digits RETURN -9; END IF; END IF; -- Now comes the fun part of doing the "check" for the check sum -- perform a luhn checksum FOR i IN REVERSE card_length .. 1 LOOP _digit := int4(substr(pCcardnum, i, 1)); IF (_timesTwo) THEN _digit := _digit * 2; IF (_digit > 9) THEN _digit := _digit - 9; END IF; END IF; _sum := _sum + _digit; _timesTwo := NOT _timesTwo; END LOOP; IF (mod(_sum, 10) != 0) THEN RETURN -10; END IF; RETURN 0; -- No Error END; $_$; /DROP FUNCTION public.editccnumber(text, text); publicadminfalse83992 12551691689enablepackage(text)FUNCTIONCREATE FUNCTION enablepackage(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ppkgname ALIAS FOR $1; _i INTEGER := 0; _tabs TEXT[] := ARRAY['cmd', 'cmdarg', 'image', 'metasql', 'priv', 'report', 'script', 'uiform']; BEGIN IF (version() < 'PostgreSQL 8.2') THEN RETURN -1; END IF; FOR _i IN ARRAY_LOWER(_tabs,1)..ARRAY_UPPER(_tabs,1) LOOP EXECUTE 'ALTER TABLE ' || ppkgname || '.pkg' || _tabs[_i] || ' INHERIT public.' || _tabs[_i] || ';'; END LOOP; RETURN 0; END; $_$; *DROP FUNCTION public.enablepackage(text); publicadminfalse83992B12551691690enablepackage(integer)FUNCTIONCREATE FUNCTION enablepackage(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ppkgheadid ALIAS FOR $1; _pkgname TEXT; BEGIN SELECT pkghead_name INTO _pkgname FROM pkghead WHERE (pkghead_id=ppkgheadid); IF (NOT FOUND) THEN RETURN -2; END IF; RETURN enablePackage(_pkgname); END; $_$; -DROP FUNCTION public.enablepackage(integer); publicadminfalse8399212551691691encrypt(bytea, bytea, text)FUNCTIONCREATE FUNCTION encrypt(bytea, bytea, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_encrypt'; 2DROP FUNCTION public.encrypt(bytea, bytea, text); publicadminfalse812551691692%encrypt_iv(bytea, bytea, bytea, text)FUNCTIONCREATE FUNCTION encrypt_iv(bytea, bytea, bytea, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_encrypt_iv'; <DROP FUNCTION public.encrypt_iv(bytea, bytea, bytea, text); publicadminfalse812551691693 endoftime()FUNCTIONCREATE FUNCTION endoftime() RETURNS date LANGUAGE sql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT DATE('2100-01-01') as result; $$; "DROP FUNCTION public.endoftime(); publicadminfalse812551691694"entercount(integer, numeric, text)FUNCTIONDCREATE FUNCTION entercount(integer, numeric, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcntid ALIAS FOR $1; pQty ALIAS FOR $2; pComments ALIAS FOR $3; BEGIN UPDATE invcnt SET invcnt_qoh_after = pQty, invcnt_comments = CASE WHEN ( (LENGTH(invcnt_comments) = 0) AND (LENGTH(pComments) > 0) ) THEN pComments WHEN (LENGTH(pComments) > 0) THEN (invcnt_comments || E'\n' || pComments) ELSE invcnt_comments END, invcnt_cntdate = CURRENT_TIMESTAMP, invcnt_cnt_username = getEffectiveXtUser() WHERE (invcnt_id=pInvcntid); RETURN 0; END; $_$; 9DROP FUNCTION public.entercount(integer, numeric, text); publicadminfalse8399212551691695 enterporeceipt(integer, numeric)FUNCTION+CREATE FUNCTION enterporeceipt(integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN enterReceipt('PO', $1, $2, 0.0, '', NULL, NULL); END; $_$; 7DROP FUNCTION public.enterporeceipt(integer, numeric); publicadminfalse8399212551691696&enterporeceipt(integer, numeric, text)FUNCTION3CREATE FUNCTION enterporeceipt(integer, numeric, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN enterPoReceipt('PO', $1, $2, 0.0, $3, NULL, NULL); END; $_$; =DROP FUNCTION public.enterporeceipt(integer, numeric, text); publicadminfalse8399212551691697/enterporeceipt(integer, numeric, numeric, text)FUNCTION;CREATE FUNCTION enterporeceipt(integer, numeric, numeric, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN enterPoReceipt('PO', $1, $2, $3, $4, NULL, NULL); END; $_$; FDROP FUNCTION public.enterporeceipt(integer, numeric, numeric, text); publicadminfalse8399212551691698>enterporeceipt(integer, numeric, numeric, text, integer, date)FUNCTIONDCREATE FUNCTION enterporeceipt(integer, numeric, numeric, text, integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN enterReceipt('PO', $1, $2, $3, $4, $5, $6); END; $_$; UDROP FUNCTION public.enterporeceipt(integer, numeric, numeric, text, integer, date); publicadminfalse8399212551691699(enterporeturn(integer, numeric, integer)FUNCTION#CREATE FUNCTION enterporeturn(integer, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN enterPoReturn($1, $2, $3, NULL); END; $_$; ?DROP FUNCTION public.enterporeturn(integer, numeric, integer); publicadminfalse83992125516917001enterporeturn(integer, numeric, integer, integer)FUNCTIONCREATE FUNCTION enterporeturn(integer, numeric, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPoitemid ALIAS FOR $1; pQty ALIAS FOR $2; pRjctcodeid ALIAS FOR $3; pRecvid ALIAS FOR $4; _porejectid INTEGER; BEGIN SELECT NEXTVAL('poreject_poreject_id_seq') INTO _porejectid; INSERT INTO poreject ( poreject_id, poreject_date, poreject_ponumber, poreject_poitem_id, poreject_trans_username, poreject_agent_username, poreject_itemsite_id, poreject_vend_id, poreject_vend_item_number, poreject_vend_item_descrip, poreject_vend_uom, poreject_qty, poreject_rjctcode_id, poreject_posted, poreject_invoiced, poreject_recv_id ) SELECT _porejectid, CURRENT_TIMESTAMP, pohead_number, poitem_id, getEffectiveXtUser(), pohead_agent_username, poitem_itemsite_id, pohead_vend_id, poitem_vend_item_number, poitem_vend_item_descrip, poitem_vend_uom, pQty, pRjctcodeid, FALSE, FALSE, pRecvid FROM poitem JOIN pohead ON (pohead_id=poitem_pohead_id) WHERE (poitem_id=pPoitemid); RETURN _porejectid; END; $_$; HDROP FUNCTION public.enterporeturn(integer, numeric, integer, integer); publicadminfalse8399212551691701Benterreceipt(text, integer, numeric, numeric, text, integer, date)FUNCTIONLCREATE FUNCTION enterreceipt(text, integer, numeric, numeric, text, integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN enterReceipt($1, $2, $3, $4, $5, $6, $7, NULL); END; $_$; YDROP FUNCTION public.enterreceipt(text, integer, numeric, numeric, text, integer, date); publicadminfalse8399212551691702Kenterreceipt(text, integer, numeric, numeric, text, integer, date, numeric)FUNCTIONCREATE FUNCTION enterreceipt(text, integer, numeric, numeric, text, integer, date, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; porderitemid ALIAS FOR $2; pQty ALIAS FOR $3; pFreight ALIAS FOR $4; pNotes ALIAS FOR $5; pcurrid ALIAS FOR $6; -- NULL is handled by SELECT ... INTO _o precvdate ALIAS FOR $7; -- NULL is handled by INSERT INTO recv pRecvCost ALIAS FOR $8; _timestamp TIMESTAMP; _o RECORD; _recvid INTEGER; _warehouseid INTEGER; _recvcost NUMERIC; BEGIN IF(precvdate IS NULL OR precvdate = CURRENT_DATE) THEN _timestamp := CURRENT_TIMESTAMP; ELSE _timestamp := precvdate; END IF; SELECT NEXTVAL('recv_recv_id_seq') INTO _recvid; DELETE FROM recv WHERE ((NOT recv_posted) AND (recv_order_type=pordertype) AND (recv_orderitem_id=porderitemid) ); IF (pQty > 0) THEN IF (pordertype='PO') THEN SELECT pohead_number AS orderhead_number, poitem_id AS orderitem_id, pohead_agent_username AS orderhead_agent_username, CASE WHEN (poitem_itemsite_id = -1) THEN NULL ELSE poitem_itemsite_id END AS itemsite_id, vend_id, COALESCE(poitem_vend_item_number, '') AS vend_item_number, COALESCE(poitem_vend_item_descrip, '') AS vend_item_descrip, COALESCE(poitem_vend_uom, '') AS vend_uom, poitem_duedate AS duedate, poitem_unitprice AS orderitem_unitcost, pohead_curr_id AS orderitem_unitcost_curr_id, pohead_curr_id AS freight_curr_id, poitem_rlsd_duedate AS rlsd_duedate INTO _o FROM pohead JOIN poitem ON (pohead_id=poitem_pohead_id) JOIN vendinfo ON (pohead_vend_id=vend_id) WHERE (poitem_id=porderitemid); ELSIF (pordertype='RA') THEN SELECT rahead_number AS orderhead_number, raitem_id AS orderitem_id, ''::text AS orderhead_agent_username, raitem_itemsite_id AS itemsite_id, NULL::integer AS vend_id, ''::text AS vend_item_number, ''::text AS vend_item_descrip, ''::text AS vend_uom, raitem_scheddate AS duedate, raitem_unitprice AS orderitem_unitcost, rahead_curr_id AS orderitem_unitcost_curr_id, rahead_curr_id AS freight_curr_id, raitem_scheddate AS rlsd_duedate INTO _o FROM rahead JOIN raitem ON (rahead_id=raitem_rahead_id) WHERE (raitem_id=porderitemid); ELSIF (pordertype='TO') THEN SELECT tohead_number AS orderhead_number, toitem_id AS orderitem_id, tohead_agent_username AS orderhead_agent_username, itemsite_id, NULL::integer AS vend_id, ''::text AS vend_item_number, ''::text AS vend_item_descrip, ''::text AS vend_uom, toitem_duedate AS duedate, toitem_stdcost AS orderitem_unitcost, baseCurrId() AS orderitem_unitcost_curr_id, toitem_freight_curr_id AS freight_curr_id, toitem_duedate AS rlsd_duedate INTO _o FROM itemsite, tohead JOIN toitem ON (tohead_id=toitem_tohead_id) WHERE ((toitem_id=porderitemid) AND (tohead_dest_warehous_id=itemsite_warehous_id) AND (toitem_item_id=itemsite_item_id)); END IF; --Make sure user has site privileges IF ((FOUND) AND (_o.itemsite_id IS NOT NULL)) THEN SELECT warehous_id INTO _warehouseid FROM itemsite,site() WHERE ((itemsite_id=_o.itemsite_id) AND (warehous_id=itemsite_warehous_id)); IF (NOT FOUND) THEN RETURN 0; END IF; END IF; --Make sure we aren't trying to receive a Kit IF ((FOUND) AND (_o.itemsite_id IS NOT NULL)) THEN IF (SELECT (item_type='K') FROM itemsite, item WHERE ((itemsite_id=_o.itemsite_id) AND (item_id=itemsite_item_id))) THEN RETURN 0; END IF; END IF; IF (NOT FOUND) THEN RETURN -1; END IF; -- default to orderitem_unitcost if recv_purchcost is not specified IF(pRecvCost IS NULL) THEN _recvcost := _o.orderitem_unitcost; ELSE _recvcost := pRecvCost; END IF; INSERT INTO recv ( recv_id, recv_date, recv_order_number, recv_order_type, recv_orderitem_id, recv_trans_usr_name, recv_agent_username, recv_itemsite_id, recv_vend_id, recv_vend_item_number, recv_vend_item_descrip, recv_vend_uom, recv_qty, recv_duedate, recv_purchcost, recv_purchcost_curr_id, recv_notes, recv_freight, recv_freight_curr_id, recv_rlsd_duedate ) VALUES ( _recvid, _timestamp, _o.orderhead_number, pordertype, _o.orderitem_id::INTEGER, getEffectiveXtUser(), _o.orderhead_agent_username, _o.itemsite_id::INTEGER, _o.vend_id::INTEGER, _o.vend_item_number, _o.vend_item_descrip, _o.vend_uom, pQty, _o.duedate, _recvcost, _o.orderitem_unitcost_curr_id::INTEGER, pNotes, pFreight, _o.freight_curr_id::INTEGER, _o.rlsd_duedate); END IF; RETURN _recvid; END; $_$; bDROP FUNCTION public.enterreceipt(text, integer, numeric, numeric, text, integer, date, numeric); publicadminfalse8399212551691703 expirecreditcard(integer, bytea)FUNCTIONiCREATE FUNCTION expirecreditcard(integer, bytea) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCust ALIAS FOR $1; pKey ALIAS FOR $2; num_updated INTEGER; cc_year INTEGER; cc_month INTEGER; cc_year_t TEXT; cc_month_t TEXT; _dr RECORD; _cc RECORD; bf TEXT; BEGIN num_updated := 0; bf := 'bf'; select cast(date_part('year', CURRENT_DATE) AS INTEGER) AS check_year, cast(date_part('month', CURRENT_DATE) AS INTEGER) AS check_month INTO _dr; FOR _cc IN SELECT ccard_id, decrypt(setbytea(ccard_month_expired), setbytea(pKey), 'bf') AS ccard_month_expired, decrypt(setbytea(ccard_year_expired), setbytea(pKey), 'bf') AS ccard_year_expired FROM ccard WHERE ( (ccard_cust_id=pCust) AND (ccard_active) ) LOOP SELECT formatbytea(_cc.ccard_month_expired) INTO cc_month_t; SELECT formatbytea(_cc.ccard_year_expired) INTO cc_year_t; SELECT cast(cc_month_t AS INTEGER) INTO cc_month; SELECT cast(cc_year_t AS INTEGER) INTO cc_year; IF (cc_year < _dr.check_year) THEN -- We have an expired card UPDATE ccard set ccard_active = FALSE where ccard_id = _cc.ccard_id; num_updated := num_updated + 1; ELSIF (cc_year = _dr.check_year AND cc_month < _dr.check_month) THEN -- We have an expired card UPDATE ccard set ccard_active = FALSE where ccard_id = _cc.ccard_id; num_updated := num_updated + 1; END IF; END LOOP; RETURN num_updated; END; $_$; 7DROP FUNCTION public.expirecreditcard(integer, bytea); publicadminfalse8399212551691704%explodebom(integer, integer, integer)FUNCTIONCREATE FUNCTION explodebom(integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pParentid ALIAS FOR $2; pLevel ALIAS FOR $3; _revid INTEGER; BEGIN SELECT getActiveRevId('BOM',pItemid) INTO _revid; RETURN explodeBOM(pItemid, _revid, pParentid, pLevel); END; $_$; <DROP FUNCTION public.explodebom(integer, integer, integer); publicadminfalse8399212551691705.explodebom(integer, integer, integer, integer)FUNCTION CREATE FUNCTION explodebom(integer, integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pRevisionid ALIAS FOR $2; pParentid ALIAS FOR $3; pLevel ALIAS FOR $4; _bomworkid INTEGER; _level INTEGER; _p RECORD; _r RECORD; _temp TEXT; BEGIN _level := (pLevel + 1); -- Cache some parameters about the parent SELECT bomwork_item_id, bomwork_set_id, bomwork_qtyreq, bomwork_seqnumber, bomwork_effective, bomwork_expires INTO _p FROM bomwork WHERE (bomwork_id=pParentid); -- Step through all of the components of the parent component FOR _r IN SELECT bomitem.*, item_id, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyfxd) AS qtyfxd, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper) AS qtyper, CASE WHEN (_p.bomwork_effective > bomitem_effective) THEN _p.bomwork_effective ELSE bomitem_effective END AS effective, CASE WHEN (_p.bomwork_expires < bomitem_expires) THEN _p.bomwork_expires ELSE bomitem_expires END AS expires, stdcost(item_id, bomitem_id) AS standardcost, actcost(item_id, bomitem_id) AS actualcost FROM bomitem(pItemid, pRevisionid), item WHERE ( (bomitem_item_id=item_id) AND (bomitem_expires > _p.bomwork_effective) ) LOOP -- Insert the current component and some bomitem parameters into the bomwork set SELECT NEXTVAL('bomwork_bomwork_id_seq') INTO _bomworkid; INSERT INTO bomwork ( bomwork_id, bomwork_set_id, bomwork_parent_id, bomwork_level, bomwork_parent_seqnumber, bomwork_seqnumber, bomwork_item_id, bomwork_createwo, bomwork_qtyreq, bomwork_qtyfxd, bomwork_qtyper, bomwork_scrap, bomwork_issuemethod, bomwork_effective, bomwork_expires, bomwork_stdunitcost, bomwork_actunitcost, bomwork_notes, bomwork_ref, bomwork_bomitem_id, bomwork_ecn ) VALUES ( _bomworkid, _p.bomwork_set_id, pParentid, _level, _p.bomwork_seqnumber, _r.bomitem_seqnumber, _r.item_id, _r.bomitem_createwo, (_p.bomwork_qtyreq * _r.qtyper + _r.qtyfxd), _r.qtyfxd, _r.qtyper, _r.bomitem_scrap, _r.bomitem_issuemethod, _r.effective, _r.expires, _r.standardcost, _r.actualcost, _r.bomitem_notes, _r.bomitem_ref, _r.bomitem_id, _r.bomitem_ecn ); -- Recursively repeat for this component's components PERFORM explodeBOM(_r.item_id, _bomworkid, _level); END LOOP; RETURN 1; END; $_$; EDROP FUNCTION public.explodebom(integer, integer, integer, integer); publicadminfalse83992125516917067explodekit(integer, integer, integer, integer, numeric)FUNCTIONCREATE FUNCTION explodekit(integer, integer, integer, integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; pLinenumber ALIAS FOR $2; pSubnumber ALIAS FOR $3; pItemsiteid ALIAS FOR $4; pQty ALIAS FOR $5; BEGIN RETURN explodeKit(pSoheadid, pLinenumber, pSubnumber, pItemsiteid, pQty, CURRENT_DATE, NULL); END; $_$; NDROP FUNCTION public.explodekit(integer, integer, integer, integer, numeric); publicadminfalse8399212551691707Cexplodekit(integer, integer, integer, integer, numeric, date, date)FUNCTION7CREATE FUNCTION explodekit(integer, integer, integer, integer, numeric, date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; pLinenumber ALIAS FOR $2; pSubnumber ALIAS FOR $3; pItemsiteid ALIAS FOR $4; pQty ALIAS FOR $5; pScheddate ALIAS FOR $6; pPromdate ALIAS FOR $7; BEGIN RETURN explodeKit(pSoheadid, pLinenumber, pSubnumber, pItemsiteid, pQty, CURRENT_DATE, NULL, ''); END; $_$; ZDROP FUNCTION public.explodekit(integer, integer, integer, integer, numeric, date, date); publicadminfalse8399212551691708Iexplodekit(integer, integer, integer, integer, numeric, date, date, text)FUNCTIONCREATE FUNCTION explodekit(integer, integer, integer, integer, numeric, date, date, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; pLinenumber ALIAS FOR $2; pSubnumber ALIAS FOR $3; pItemsiteid ALIAS FOR $4; pQty ALIAS FOR $5; pScheddate ALIAS FOR $6; pPromdate ALIAS FOR $7; pMemo ALIAS FOR $8; _subnumber INTEGER := COALESCE(pSubnumber,0); _revid INTEGER; _itemid INTEGER; _warehousid INTEGER; _item RECORD; _type TEXT; _coitemid INTEGER; _count INTEGER; _orderid INTEGER := 0; _itemsrcid INTEGER; BEGIN SELECT getActiveRevId('BOM',itemsite_item_id), itemsite_warehous_id, itemsite_item_id INTO _revid, _warehousid, _itemid FROM itemsite WHERE(itemsite_id=pItemsiteid); IF(NOT FOUND) THEN RAISE EXCEPTION 'No Item Site for the specified line was found.'; END IF; FOR _item IN SELECT bomitem_id, itemsite_id, itemsite_warehous_id, COALESCE((itemsite_active AND item_active), false) AS active, COALESCE((itemsite_sold AND item_sold), false) AS sold, item_id, item_type, item_price_uom_id, itemsite_createsopr,itemsite_createwo,itemsite_createsopo, itemsite_dropship, bomitem_uom_id, itemuomtouomratio(item_id, bomitem_uom_id, item_inv_uom_id) AS invuomratio, roundQty(itemuomfractionalbyuom(bomitem_item_id, bomitem_uom_id),(bomitem_qtyfxd + bomitem_qtyper * pQty) * (1 + bomitem_scrap)) AS qty FROM bomitem JOIN item ON (item_id=bomitem_item_id) LEFT OUTER JOIN itemsite ON ((itemsite_item_id=item_id) AND (itemsite_warehous_id=_warehousid)) WHERE((bomitem_parent_item_id=_itemid) AND (bomitem_rev_id=_revid) AND (CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires - 1))) ORDER BY bomitem_seqnumber LOOP IF (NOT _item.active) THEN RAISE EXCEPTION 'One or more of the components for the kit is inactive for the selected item site.'; ELSIF (NOT _item.sold) THEN RAISE EXCEPTION 'One or more of the components for the kit is not sold for the selected item site.'; ELSIF (_item.item_type='F') THEN SELECT explodeKit(pSoheadid, pLinenumber, _subnumber, _item.itemsite_id, _item.qty) INTO _subnumber; ELSE IF (_item.itemsite_createsopr) THEN _type := 'R'; ELSIF (_item.itemsite_createsopo) THEN _type := 'P'; ELSIF (_item.itemsite_createwo) THEN _type := 'W'; ELSE _type := NULL; END IF; _subnumber := _subnumber + 1; _coitemid = nextval('coitem_coitem_id_seq'); raise notice 'coitem id: %',_coitemid; INSERT INTO coitem (coitem_id, coitem_cohead_id, coitem_linenumber, coitem_subnumber, coitem_itemsite_id, coitem_status, coitem_scheddate, coitem_promdate, coitem_qtyord, coitem_qty_uom_id, coitem_qty_invuomratio, coitem_qtyshipped, coitem_qtyreturned, coitem_unitcost, coitem_custprice, coitem_price, coitem_price_uom_id, coitem_price_invuomratio, coitem_order_type, coitem_order_id, coitem_custpn, coitem_memo, coitem_prcost) VALUES (_coitemid, pSoheadid, pLinenumber, _subnumber, _item.itemsite_id, 'O', pScheddate, pPromdate, _item.qty, _item.bomitem_uom_id, _item.invuomratio, 0, 0, stdCost(_item.item_id), 0, 0, _item.item_price_uom_id, 1, _type, -1, '', pMemo, 0); IF (_item.itemsite_createsopr) THEN SELECT createPR(cohead_number::INTEGER, 'S', _coitemid) INTO _orderid FROM cohead WHERE (cohead_id=pSoheadid); IF (_orderid > 0) THEN UPDATE coitem SET coitem_order_id=_orderid WHERE (coitem_id=_coitemid); ELSE RAISE EXCEPTION 'Could not explode kit. CreatePR failed, result=%', _orderid; END IF; END IF; IF (_item.itemsite_createsopo) THEN SELECT itemsrc_id INTO _itemsrcid FROM itemsrc WHERE ((itemsrc_item_id=_item.item_id) AND (itemsrc_default)); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count > 0) THEN PERFORM createPurchaseToSale(_coitemid, _itemsrcid, _item.itemsite_dropship); ELSE RAISE WARNING 'One or more Kit items are flagged as purchase-to-order for this site, but no default item source is defined.'; END IF; END IF; END IF; END LOOP; RETURN _subnumber; END; $_$; `DROP FUNCTION public.explodekit(integer, integer, integer, integer, numeric, date, date, text); publicadminfalse83992 12551691710.explodephantomorder(integer, integer, numeric)FUNCTIONcCREATE FUNCTION explodephantomorder(integer, integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPlanordid ALIAS FOR $1; pPhantomid ALIAS FOR $2; pQty ALIAS FOR $3; _b RECORD; BEGIN FOR _b IN SELECT planord_number, c.itemsite_id AS componentsiteid, calculatenextworkingdate(c.itemsite_warehous_id, planord_startdate, (c.itemsite_leadtime * -1)) AS startdate, planord_startdate AS duedate, bomitem_createwo, c.itemsite_planning_type AS planningtype, (itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, (bomitem_qtyfxd + pQty * bomitem_qtyper) * (1 + bomitem_scrap))) AS qtyreq, item_type FROM bomitem, planord, itemsite AS p, itemsite AS c, item WHERE ((bomitem_parent_item_id=p.itemsite_item_id) AND (bomitem_rev_id=getActiveRevId('BOM',bomitem_parent_item_id)) AND (bomitem_item_id=c.itemsite_item_id) AND (p.itemsite_warehous_id=c.itemsite_warehous_id) AND (c.itemsite_item_id=item_id) AND (woEffectiveDate(planord_startdate) BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (p.itemsite_id=pPhantomid) AND (planord_id=pPlanordid)) LOOP IF (_b.item_type = 'F') THEN PERFORM explodePhantomOrder(pPlanordid, _b.componentsiteid, _b.qtyreq); ELSE -- Create the Planned Requirement INSERT INTO planreq ( planreq_source, planreq_source_id, planreq_itemsite_id, planreq_qty ) VALUES ( 'P', pPlanordid, _b.componentsiteid, _b.qtyreq ); IF (_b.bomitem_createwo AND _b.planningtype != 'N') THEN PERFORM createPlannedOrder( pPlanordid, _b.planord_number, _b.componentsiteid, _b.qtyreq, _b.startdate, _b.duedate, FALSE, FALSE, NULL, NULL); END IF; END IF; END LOOP; RETURN pPlanordid; END; $_$; EDROP FUNCTION public.explodephantomorder(integer, integer, numeric); publicadminfalse83992!12551691711explodewo(integer, boolean)FUNCTION01CREATE FUNCTION explodewo(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pExplodeChildren ALIAS FOR $2; resultCode INTEGER; newWo RECORD; _newwoid INTEGER; _p RECORD; _r RECORD; _bbom BOOLEAN; BEGIN -- Find out if Breeder BOMs are enabled SELECT metric_value='t' INTO _bbom FROM metric WHERE (metric_name='BBOM'); -- Make sure that this W/O is Open SELECT wo_id INTO resultCode FROM wo WHERE ((wo_status='O') AND (wo_id=pWoid)); IF (NOT FOUND) THEN RETURN -4; END IF; -- Make sure that all Component Item Sites exist and are valid -- Item Sites must be active and not Job Costed SELECT bomitem_id INTO resultCode FROM wo, bomitem, itemsite WHERE ( (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=bomitem_parent_item_id) AND (woEffectiveDate(wo_startdate) BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (wo_id=pWoid) AND (bomitem_rev_id=wo_bom_rev_id) AND (bomitem_item_id NOT IN ( SELECT component.itemsite_item_id FROM itemsite AS component, itemsite AS parent WHERE ( (wo_itemsite_id=parent.itemsite_id) AND (parent.itemsite_item_id=bomitem_parent_item_id) AND (bomitem_item_id=component.itemsite_item_id) AND (woEffectiveDate(wo_startdate) BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (component.itemsite_active) AND (component.itemsite_warehous_id=parent.itemsite_warehous_id) ) ) ) ) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; -- If the Parent Item is a Breeder, make sure that all the -- Co-Product/By-Product Item Sites exist IF (_bbom) THEN IF ( ( SELECT (item_type='B') FROM wo, itemsite, item WHERE ( (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (wo_id=pWoid) ) ) ) THEN SELECT bbomitem_id INTO resultCode FROM wo, xtmfg.bbomitem, itemsite WHERE ( (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=bbomitem_parent_item_id) AND (woEffectiveDate(wo_startdate) BETWEEN bbomitem_effective AND (bbomitem_expires - 1)) AND (wo_id=pWoid) AND (bbomitem_item_id NOT IN ( SELECT component.itemsite_item_id FROM itemsite AS component, itemsite AS parent WHERE ( (wo_itemsite_id=parent.itemsite_id) AND (parent.itemsite_item_id=bbomitem_parent_item_id) AND (bbomitem_item_id=component.itemsite_item_id) AND (woEffectiveDate(wo_startdate) BETWEEN bbomitem_effective AND (bbomitem_expires - 1)) AND (component.itemsite_active) AND (component.itemsite_warehous_id=parent.itemsite_warehous_id) ) ) ) ) LIMIT 1; IF (FOUND) THEN RETURN -3; END IF; END IF; END IF; -- Create the W/O Material Requirements INSERT INTO womatl ( womatl_wo_id, womatl_bomitem_id, womatl_wooper_id, womatl_schedatwooper, womatl_itemsite_id, womatl_duedate, womatl_uom_id, womatl_qtyfxd, womatl_qtyper, womatl_scrap, womatl_qtyreq, womatl_qtyiss, womatl_qtywipscrap, womatl_lastissue, womatl_lastreturn, womatl_cost, womatl_picklist, womatl_createwo, womatl_issuewo, womatl_issuemethod, womatl_notes, womatl_ref ) SELECT wo_id, bomitem_id, bomitem_booitem_seq_id, bomitem_schedatwooper, cs.itemsite_id, CASE WHEN bomitem_schedatwooper THEN COALESCE(calcWooperStartStub(wo_id,bomitem_booitem_seq_id), wo_startdate) ELSE wo_startdate END, bomitem_uom_id, bomitem_qtyfxd, bomitem_qtyper, bomitem_scrap, roundQty(itemuomfractionalbyuom(bomitem_item_id, bomitem_uom_id), (bomitem_qtyfxd + bomitem_qtyper * wo_qtyord) * (1 + bomitem_scrap)), 0, 0, startOfTime(), startOfTime(), 0, item_picklist, ( (item_type='M') AND (bomitem_createwo) ), CASE WHEN ( (item_type='M') AND (bomitem_issuewo) ) THEN TRUE WHEN (cs.itemsite_costmethod='J') THEN TRUE ELSE FALSE END, bomitem_issuemethod, bomitem_notes, bomitem_ref FROM bomitem, wo, itemsite AS ps, itemsite AS cs, item WHERE ( (wo_itemsite_id=ps.itemsite_id) AND (bomitem_parent_item_id=ps.itemsite_item_id) AND (bomitem_item_id=cs.itemsite_item_id) AND (bomitem_rev_id=wo_bom_rev_id) AND (ps.itemsite_warehous_id=cs.itemsite_warehous_id) AND (cs.itemsite_item_id=item_id) AND (woEffectiveDate(wo_startdate) BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (wo_id=pWoid) AND ((bomitem_char_id IS NULL) OR EXISTS ( SELECT charass_id FROM coitem,charass WHERE ((charass_target_type='SI') AND (charass_target_id=coitem_id) AND (charass_char_id=bomitem_char_id) AND (charass_value=bomitem_value) AND (wo_ordtype='S') AND (coitem_id=wo_ordid)))) ); -- Update any created P/R's the have the project id as the parent WO. UPDATE pr SET pr_prj_id=wo_prj_id FROM womatl, wo WHERE ((wo_id=pWoid) AND (womatl_wo_id=wo_id) AND (pr_order_type='W') AND (pr_order_id=womatl_id)); -- If the parent Item is a Breeder, create the brddist -- records for the Co-Products and By-Products IF (_bbom) THEN INSERT INTO xtmfg.brddist ( brddist_wo_id, brddist_wo_qty, brddist_itemsite_id, brddist_stdqtyper, brddist_qty, brddist_posted ) SELECT wo_id, 0, cs.itemsite_id, bbomitem_qtyper, 0, FALSE FROM wo, xtmfg.bbomitem, itemsite AS ps, itemsite AS cs, item WHERE ( (bbomitem_parent_item_id=ps.itemsite_item_id) AND (wo_itemsite_id=ps.itemsite_id) AND (ps.itemsite_item_id=item_id) AND (item_type='B') AND (bbomitem_item_id=cs.itemsite_item_id) AND (cs.itemsite_warehous_id=ps.itemsite_warehous_id) AND (wo_id=pWoid) ); END IF; -- Insert the W/O Operations if routings enabled IF ( ( SELECT (metric_value='t') FROM metric WHERE (metric_name='Routings') ) ) THEN INSERT INTO xtmfg.wooper ( wooper_wo_id, wooper_booitem_id, wooper_seqnumber, wooper_wrkcnt_id, wooper_stdopn_id, wooper_descrip1, wooper_descrip2, wooper_toolref, wooper_sutime, wooper_sucosttype, wooper_surpt, wooper_rntime, wooper_rncosttype, wooper_rnrpt, wooper_rnqtyper, wooper_produom, wooper_invproduomratio, wooper_issuecomp, wooper_rcvinv, wooper_suconsumed, wooper_sucomplete, wooper_rnconsumed, wooper_rncomplete, wooper_qtyrcv, wooper_instruc, wooper_scheduled, wooper_wip_location_id ) SELECT wo_id, booitem_id, booitem_seqnumber, booitem_wrkcnt_id, booitem_stdopn_id, booitem_descrip1, booitem_descrip2, booitem_toolref, CASE WHEN (booitem_surpt) THEN booitem_sutime ELSE 0 END, booitem_sucosttype, booitem_surpt, CASE WHEN ((booitem_rnqtyper = 0) OR (booitem_invproduomratio = 0)) THEN 0 WHEN (NOT booitem_rnrpt) THEN 0 ELSE ( ( booitem_rntime / booitem_rnqtyper / booitem_invproduomratio ) * wo_qtyord ) END, booitem_rncosttype, booitem_rnrpt, CASE WHEN (booitem_rnqtyper = 0) THEN 0 WHEN (NOT booitem_rnrpt) THEN 0 ELSE (booitem_rntime / booitem_rnqtyper) END, booitem_produom, booitem_invproduomratio, booitem_issuecomp, booitem_rcvinv, 0::NUMERIC, FALSE, 0::NUMERIC, FALSE, 0::NUMERIC, booitem_instruc, calculatenextworkingdate(itemsite_warehous_id,wo_startdate,booitem_execday-1), booitem_wip_location_id FROM xtmfg.booitem, wo, itemsite WHERE ((wo_itemsite_id=itemsite_id) AND (itemsite_item_id=booitem_item_id) AND (booitem_rev_id=wo_boo_rev_id) AND (woEffectiveDate(wo_startdate) BETWEEN booitem_effective AND (booitem_expires - 1)) AND (wo_id=pWoid)); -- Update womatls item to link to wooper items when the respective -- bomitem record indicates a booitem issue link. UPDATE womatl SET womatl_wooper_id=wooper_id FROM wo,xtmfg.wooper,xtmfg.booitem WHERE ((womatl_wooper_id=booitem_seq_id) AND (wooper_booitem_id=booitem_id) AND (womatl_wo_id=wo_id) AND (wooper_wo_id=wo_id) AND (wo_boo_rev_id=booitem_rev_id) AND (wo_id=pWoid)); END IF; -- Handle all of the Phantom material requirements WHILE ( ( SELECT COUNT(*) FROM womatl, itemsite, item WHERE ( (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (womatl_wo_id=pWoid) AND (item_type='F') ) ) > 0 ) LOOP FOR _p IN SELECT wo_qtyord, wo_startdate, womatl_id, womatl_wooper_id FROM wo, womatl, itemsite, item WHERE ( (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_type='F') AND (womatl_wo_id=wo_id) AND (wo_id=pWoid) ) LOOP INSERT INTO womatl ( womatl_wo_id, womatl_itemsite_id, womatl_wooper_id, womatl_schedatwooper, womatl_duedate, womatl_uom_id, womatl_qtyfxd, womatl_qtyper, womatl_scrap, womatl_qtyreq, womatl_qtyiss, womatl_qtywipscrap, womatl_lastissue, womatl_lastreturn, womatl_cost, womatl_picklist, womatl_createwo, womatl_issuewo, womatl_issuemethod, womatl_notes, womatl_ref ) SELECT pWoid, cs.itemsite_id, _p.womatl_wooper_id, womatl_schedatwooper, womatl_duedate, bomitem_uom_id, bomitem_qtyfxd, (bomitem_qtyper * womatl_qtyper), bomitem_scrap, roundQty(itemuomfractionalbyuom(bomitem_item_id, bomitem_uom_id), (bomitem_qtyfxd + _p.wo_qtyord * bomitem_qtyper * womatl_qtyper) * (1 + bomitem_scrap)), 0, 0, startOfTime(), startOfTime(), 0, ci.item_picklist, ( (ci.item_type='M') AND (bomitem_createwo) ), ( (ci.item_type='M') AND (bomitem_issuewo) ), bomitem_issuemethod, bomitem_notes, bomitem_ref FROM womatl JOIN wo ON (wo_id=womatl_wo_id) JOIN itemsite ps ON (ps.itemsite_id=womatl_itemsite_id) JOIN item pi ON (pi.item_id=ps.itemsite_item_id) JOIN bomitem ON ( (bomitem_parent_item_id=pi.item_id) AND (woEffectiveDate(_p.wo_startdate) BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (bomitem_rev_id=getActiveRevId('BOM', pi.item_id)) ) JOIN item ci ON (ci.item_id=bomitem.bomitem_item_id) JOIN itemsite cs ON ( (cs.itemsite_item_id=ci.item_id) AND (cs.itemsite_warehous_id=ps.itemsite_warehous_id) ) WHERE (womatl_id=_p.womatl_id); DELETE FROM womatl WHERE (womatl_id=_p.womatl_id); END LOOP; END LOOP; -- Create W/Os for manufactured component items FOR newWo IN SELECT wo_number, nextWoSubnumber(wo_number) AS nextSubnumber, itemsite_id, itemsite_leadtime, womatl_duedate, womatl_wo_id, womatl_qtyreq, womatl_uom_id, wo_prj_id, item_id, item_inv_uom_id, womatl_id FROM womatl, wo, itemsite, item WHERE ( (womatl_wo_id=wo_id) AND (womatl_itemsite_id=itemsite_id) AND (womatl_createwo) AND (itemsite_wosupply) AND (itemsite_item_id=item_id) AND (wo_id=pWoid) ) ORDER BY womatl_id LOOP SELECT createWo( newWo.wo_number, newWo.itemsite_id, 1, itemuomtouom(newWo.item_id,newWo.womatl_uom_id,newWo.item_inv_uom_id,newWo.womatl_qtyreq), newWo.itemsite_leadtime, newWo.womatl_duedate, '', 'W', newWo.womatl_wo_id, newWo.wo_prj_id ) INTO _newwoid; UPDATE wo SET wo_womatl_id = newWo.womatl_id WHERE wo_id=_newwoid; END LOOP; UPDATE wo SET wo_status='E', wo_adhoc=FALSE WHERE (wo_id=pWoid); IF (pExplodeChildren) THEN SELECT MAX(explodeWo(wo_id, TRUE)) INTO resultCode FROM wo WHERE ( (wo_ordtype='W') AND (wo_ordid=pWoid) ); END IF; RETURN pWoid; END; $_$; 2DROP FUNCTION public.explodewo(integer, boolean); publicadminfalse83992"12551691713explodewoeffective()FUNCTIONhCREATE FUNCTION explodewoeffective() RETURNS text LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _value TEXT; BEGIN SELECT metric_value INTO _value FROM metric WHERE (metric_name='ExplodeWOEffective'); RETURN _value; END; $$; +DROP FUNCTION public.explodewoeffective(); publicadminfalse83992&12551691714fetchapmemonumber()FUNCTIONCREATE FUNCTION fetchapmemonumber() RETURNS integer LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('APMemoNumber')::INTEGER; $$; *DROP FUNCTION public.fetchapmemonumber(); publicadminfalse8'12551691715fetcharmemonumber()FUNCTIONCREATE FUNCTION fetcharmemonumber() RETURNS text LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('ARMemoNumber'); $$; *DROP FUNCTION public.fetcharmemonumber(); publicadminfalse8(12551691716fetchcashrcptnumber()FUNCTIONCREATE FUNCTION fetchcashrcptnumber() RETURNS text LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('CashRcptNumber'); $$; ,DROP FUNCTION public.fetchcashrcptnumber(); publicadminfalse8)12551691717fetchcmnumber()FUNCTIONCREATE FUNCTION fetchcmnumber() RETURNS text LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('CmNumber'); $$; &DROP FUNCTION public.fetchcmnumber(); publicadminfalse8*12551691718fetchcrmaccountnumber()FUNCTIONCREATE FUNCTION fetchcrmaccountnumber() RETURNS integer LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('CRMAccountNumber')::INTEGER; $$; .DROP FUNCTION public.fetchcrmaccountnumber(); publicadminfalse8+12551691719fetchdefaultfob(integer)FUNCTION%CREATE FUNCTION fetchdefaultfob(pwarehousid integer) RETURNS text LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT warehous_fob FROM whsinfo WHERE (warehous_id=$1); $_$; ;DROP FUNCTION public.fetchdefaultfob(pwarehousid integer); publicadminfalse8,12551691720fetchdefaultshipvia()FUNCTIONCREATE FUNCTION fetchdefaultshipvia() RETURNS text LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal TEXT; BEGIN SELECT shipvia_code INTO _returnVal FROM shipvia WHERE shipvia_id= (SELECT CAST(metric_value AS integer) FROM metric WHERE metric_name = 'DefaultShipViaId'); RETURN _returnVal; END; $$; ,DROP FUNCTION public.fetchdefaultshipvia(); publicadminfalse83992-12551691721fetchglsequence()FUNCTIONQCREATE FUNCTION fetchglsequence() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _sequence INTEGER; BEGIN SELECT NEXTVAL('gltrans_sequence_seq') INTO _sequence; RETURN _sequence; END; $$; (DROP FUNCTION public.fetchglsequence(); publicadminfalse8399212551691722fetchincidentnumber()FUNCTION CREATE FUNCTION fetchincidentnumber() RETURNS integer LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('IncidentNumber')::integer; $$; ,DROP FUNCTION public.fetchincidentnumber(); publicadminfalse812551691723fetchinvcnumber()FUNCTIONCREATE FUNCTION fetchinvcnumber() RETURNS integer LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('InvcNumber')::integer; $$; (DROP FUNCTION public.fetchinvcnumber(); publicadminfalse812551691724fetchitemuomconvtypes(integer)FUNCTION~CREATE FUNCTION fetchitemuomconvtypes(integer) RETURNS text[] LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemUomConvId ALIAS FOR $1; _p RECORD; _result text[]; _cnt INTEGER; BEGIN _cnt := 0; FOR _p IN SELECT uomtype_name FROM itemuomconv, itemuom, uomtype WHERE ((itemuomconv_id=pItemUomConvId) AND (itemuomconv_id=itemuom_itemuomconv_id) AND (itemuom_uomtype_id=uomtype_id)) LOOP _result[_cnt] := _p.uomtype_name; _cnt := _cnt + 1; END LOOP; RETURN _result; END; $_$; 5DROP FUNCTION public.fetchitemuomconvtypes(integer); publicadminfalse8399212551691725fetchjournalnumber(text)FUNCTIONCREATE FUNCTION fetchjournalnumber(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUse ALIAS FOR $1; _number INTEGER; BEGIN SELECT nextval('journal_number_seq') INTO _number; INSERT INTO jrnluse (jrnluse_date, jrnluse_number, jrnluse_use) VALUES (CURRENT_TIMESTAMP, _number, pUse); RETURN _number; END; $_$; /DROP FUNCTION public.fetchjournalnumber(text); publicadminfalse8399212551691726fetchmetricbool(text)FUNCTIONCREATE FUNCTION fetchmetricbool(text) RETURNS boolean LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _pMetricName ALIAS FOR $1; _returnVal BOOLEAN; BEGIN SELECT CASE WHEN MIN(metric_value) = 't' THEN true ELSE false END INTO _returnVal FROM metric WHERE metric_name = _pMetricName; RETURN _returnVal; END; $_$; ,DROP FUNCTION public.fetchmetricbool(text); publicadminfalse8399212551691727fetchmetrictext(text)FUNCTIONCREATE FUNCTION fetchmetrictext(text) RETURNS text LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _pMetricName ALIAS FOR $1; _returnVal TEXT; BEGIN SELECT metric_value::TEXT INTO _returnVal FROM metric WHERE metric_name = _pMetricName; RETURN _returnVal; END; $_$; ,DROP FUNCTION public.fetchmetrictext(text); publicadminfalse83992u12551691728fetchmetricvalue(text)FUNCTIONCREATE FUNCTION fetchmetricvalue(text) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _pMetricName ALIAS FOR $1; _returnVal INTEGER; BEGIN SELECT CASE WHEN (isNumeric(metric_value)) THEN metric_value::INTEGER ELSE NULL END INTO _returnVal FROM metric WHERE metric_name = _pMetricName; RETURN _returnVal; END; $_$; -DROP FUNCTION public.fetchmetricvalue(text); publicadminfalse83992v12551691729fetchnextchecknumber(integer)FUNCTION#CREATE FUNCTION fetchnextchecknumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankaccntid ALIAS FOR $1; _nextChkNumber INTEGER; BEGIN SELECT bankaccnt_nextchknum INTO _nextChkNumber FROM bankaccnt WHERE (bankaccnt_id=pBankaccntid); UPDATE bankaccnt SET bankaccnt_nextchknum = (bankaccnt_nextchknum + 1) WHERE (bankaccnt_id=pBankaccntid); RETURN _nextChkNumber; END; $_$; 4DROP FUNCTION public.fetchnextchecknumber(integer); publicadminfalse8399212551691730fetchnextnumber(text)FUNCTIONCREATE FUNCTION fetchnextnumber(text) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE psequence ALIAS FOR $1; _number TEXT; _numcol TEXT; _select TEXT; _table TEXT; _test TEXT; _nextnum INTEGER; _seqiss seqiss; __seqiss seqiss[]; _not_issued BOOLEAN; BEGIN SELECT CAST(orderseq_number AS text), orderseq_number, orderseq_table, orderseq_numcol, COALESCE(orderseq_seqiss, ARRAY[]::seqiss[]) INTO _number, _nextnum, _table, _numcol, __seqiss FROM orderseq WHERE (orderseq_name=psequence) FOR UPDATE; IF (NOT FOUND) THEN RAISE EXCEPTION 'Invalid orderseq_name %', psequence; END IF; LOOP _seqiss := (_nextnum, now()); SELECT count(*) = 0 INTO _not_issued FROM (SELECT UNNEST(__seqiss) AS issued) data WHERE (issued).seqiss_number = _nextnum; _nextnum := _nextnum + 1; -- Test if the number has been issued, but not committed IF (_not_issued) THEN -- Test if the number has been committed _select := 'SELECT ' || quote_ident(_numcol) || ' FROM ' || quote_ident(_table) || ' WHERE (' || quote_ident(_numcol) || '=' || quote_literal(_number) || ');'; EXECUTE _select INTO _test; IF (_test IS NULL OR NOT FOUND) THEN EXIT; END IF; END IF; -- Number in use, try again _number = _nextnum::text; END LOOP; UPDATE orderseq SET orderseq_number = _nextnum, orderseq_seqiss = orderseq_seqiss || _seqiss WHERE (orderseq_name=psequence); RETURN _number; END; $_$; ,DROP FUNCTION public.fetchnextnumber(text); publicadminfalse8399212551691731fetchponumber()FUNCTIONCREATE FUNCTION fetchponumber() RETURNS text LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('PoNumber'); $$; &DROP FUNCTION public.fetchponumber(); publicadminfalse812551691732fetchprefwarehousid()FUNCTIONCREATE FUNCTION fetchprefwarehousid() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _result INTEGER; BEGIN SELECT CAST(usrpref_value AS INTEGER) INTO _result FROM usrpref WHERE ((usrpref_username=getEffectiveXtUser()) AND (usrpref_name='PreferredWarehouse')); RETURN _result; END; $$; ,DROP FUNCTION public.fetchprefwarehousid(); publicadminfalse8399212551691733fetchprnumber()FUNCTIONCREATE FUNCTION fetchprnumber() RETURNS integer LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('PrNumber')::INTEGER; $$; &DROP FUNCTION public.fetchprnumber(); publicadminfalse812551691734fetchqunumber()FUNCTIONCREATE FUNCTION fetchqunumber() RETURNS text LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('QuNumber'); $$; &DROP FUNCTION public.fetchqunumber(); publicadminfalse812551691735fetchshipmentnumber()FUNCTIONCREATE FUNCTION fetchshipmentnumber() RETURNS text LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _number TEXT; _test INTEGER; BEGIN LOOP SELECT CAST(nextval('shipment_number_seq') AS TEXT) INTO _number; SELECT shiphead_id INTO _test FROM shiphead WHERE (shiphead_number=_number); IF (NOT FOUND) THEN EXIT; END IF; END LOOP; RETURN _number; END; $$; ,DROP FUNCTION public.fetchshipmentnumber(); publicadminfalse8399212551691736fetchsonumber()FUNCTIONCREATE FUNCTION fetchsonumber() RETURNS text LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('SoNumber'); $$; &DROP FUNCTION public.fetchsonumber(); publicadminfalse812551691737fetchtonumber()FUNCTIONCREATE FUNCTION fetchtonumber() RETURNS text LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('ToNumber'); $$; &DROP FUNCTION public.fetchtonumber(); publicadminfalse8|12551691738fetchusrprefbool(text)FUNCTION CREATE FUNCTION fetchusrprefbool(text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _pPrefName ALIAS FOR $1; _returnVal BOOLEAN; BEGIN SELECT CASE WHEN MIN(usrpref_value) = 't' THEN true ELSE false END INTO _returnVal FROM usrpref WHERE ( (usrpref_username=getEffectiveXtUser()) AND (usrpref_name=_pPrefName) ); RETURN _returnVal; END; $_$; -DROP FUNCTION public.fetchusrprefbool(text); publicadminfalse8399212551691739fetchvonumber()FUNCTIONCREATE FUNCTION fetchvonumber() RETURNS integer LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('VcNumber')::INTEGER; $$; &DROP FUNCTION public.fetchvonumber(); publicadminfalse812551691740fetchwonumber()FUNCTIONCREATE FUNCTION fetchwonumber() RETURNS integer LANGUAGE sql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT fetchNextNumber('WoNumber')::INTEGER; $$; &DROP FUNCTION public.fetchwonumber(); publicadminfalse812551691741*financialreport(integer, integer, integer)FUNCTIONCREATE FUNCTION financialreport(integer, integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlheadid ALIAS FOR $1; pPeriodid ALIAS FOR $2; pPrjid ALIAS FOR $3; _result bool; BEGIN SELECT financialreport(pFlheadid,pPeriodid,'M', pPrjid) INTO _result; RETURN _result; END; $_$; ADROP FUNCTION public.financialreport(integer, integer, integer); publicadminfalse83992125516917425financialreport(integer, integer, character, integer)FUNCTION'CREATE FUNCTION financialreport(integer, integer, character, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlheadid ALIAS FOR $1; pPeriodid ALIAS FOR $2; pInterval ALIAS FOR $3; pPrjid ALIAS FOR $4; _r RECORD; _t RECORD; _s RECORD; BEGIN -- Validate Interval IF pInterval <> 'M' AND pInterval <> 'Q' AND pInterval <> 'Y' THEN RAISE EXCEPTION 'Invalid Interval --> %', pInterval; END IF; -- Get rid of any old reporting done by this user for the specified criteria DELETE FROM flrpt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodId) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser())); -- Find out if we need to show a Grand Total and which if any of the values -- we want to show in that grand total. SELECT flhead_showtotal, CASE WHEN(flhead_showstart) THEN 0.00 ELSE NULL END AS beginning, CASE WHEN(flhead_showend) THEN 0.00 ELSE NULL END AS ending, CASE WHEN(flhead_showdelta) THEN 0.00 ELSE NULL END AS debits, CASE WHEN(flhead_showdelta) THEN 0.00 ELSE NULL END AS credits, CASE WHEN(flhead_showbudget) THEN 0.00 ELSE NULL END AS budget, CASE WHEN(flhead_showdiff) THEN 0.00 ELSE NULL END AS diff, CASE WHEN(flhead_showcustom) THEN 0.00 ELSE NULL END AS custom, CASE WHEN(flhead_usealttotal) THEN flhead_alttotal ELSE NULL END AS altname INTO _r FROM flhead WHERE (flhead_id=pFlheadid); IF (NOT FOUND) THEN return FALSE; END IF; -- If showing a Grand Total then create a record as a Group which acts -- as a parent to the whole report. This allows the code to update as -- it would for normal group total values. IF (_r.flhead_showtotal) THEN INSERT INTO flrpt (flrpt_flhead_id, flrpt_period_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_beginning, flrpt_ending, flrpt_debits, flrpt_credits, flrpt_budget, flrpt_diff, flrpt_custom, flrpt_altname, flrpt_interval ) VALUES (pFlheadid, pPeriodid, getEffectiveXtUser(), 0, -1, 'G', -1, _r.beginning, _r.ending, _r.debits, _r.credits, _r.budget, _r.diff, _r.custom, _r.altname, pInterval ); END IF; PERFORM insertFlGroup(pFlheadid, pPeriodid, -1, 0, FALSE, pInterval, pPrjid); -- go through the list of records that need percentages calculated and perform -- those calculations. FOR _t IN SELECT flrpt_order, CASE WHEN(flgrp_prcnt_flgrp_id = -1) THEN flgrp_flgrp_id ELSE flgrp_prcnt_flgrp_id END AS flgrp_id FROM flrpt, flgrp WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type='G') AND (flrpt_type_id=flgrp_id)) UNION SELECT flrpt_order, CASE WHEN(flitem_prcnt_flgrp_id = -1) THEN flitem_flgrp_id ELSE flitem_prcnt_flgrp_id END AS flgrp_id FROM flrpt, flitem WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type='I') AND (flrpt_type_id=flitem_id)) UNION SELECT flrpt_order, CASE WHEN(flspec_prcnt_flgrp_id = -1) THEN flspec_flgrp_id ELSE flspec_prcnt_flgrp_id END AS flgrp_id FROM flrpt, flspec WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type='S') AND (flrpt_type_id=flspec_id)) LOOP IF( (_t.flgrp_id=-1) OR (NOT (SELECT flgrp_summarize FROM flgrp WHERE flgrp_id=_t.flgrp_id)) ) THEN SELECT COALESCE(SUM(flrpt_beginning),0) AS beginningTotal, COALESCE(SUM(flrpt_ending),0) AS endingTotal, COALESCE(SUM(flrpt_debits),0) AS debitsTotal, COALESCE(SUM(flrpt_credits),0) AS creditsTotal, COALESCE(SUM(flrpt_budget),0) AS budgetTotal, COALESCE(SUM(flrpt_diff), 0) AS diffTotal, COALESCE(SUM(flrpt_custom), 0) AS customTotal INTO _s FROM flrpt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type != 'T') AND (flrpt_parent_id=_t.flgrp_id)); ELSE SELECT COALESCE(SUM(flrpt_beginning),0) AS beginningTotal, COALESCE(SUM(flrpt_ending),0) AS endingTotal, COALESCE(SUM(flrpt_debits),0) AS debitsTotal, COALESCE(SUM(flrpt_credits),0) AS creditsTotal, COALESCE(SUM(flrpt_budget),0) AS budgetTotal, COALESCE(SUM(flrpt_diff), 0) AS diffTotal, COALESCE(SUM(flrpt_custom), 0) AS customTotal INTO _s FROM flrpt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type = 'G') AND (flrpt_type_id=_t.flgrp_id)); END IF; UPDATE flrpt SET flrpt_beginningprcnt = flrpt_beginningprcnt + flrpt_beginning / CASE WHEN (_s.beginningTotal=0) THEN 1 ELSE _s.beginningTotal END, flrpt_endingprcnt = flrpt_endingprcnt + flrpt_ending / CASE WHEN (_s.endingTotal=0) THEN 1 ELSE _s.endingTotal END, flrpt_debitsprcnt = flrpt_debitsprcnt + flrpt_debits / CASE WHEN (_s.debitsTotal=0) THEN 1 ELSE _s.debitsTotal END, flrpt_creditsprcnt = flrpt_creditsprcnt + flrpt_credits / CASE WHEN (_s.creditsTotal=0) THEN 1 ELSE _s.creditsTotal END, flrpt_budgetprcnt = flrpt_budgetprcnt + flrpt_budget / CASE WHEN (_s.budgetTotal=0) THEN 1 ELSE _s.budgetTotal END, flrpt_diffprcnt = flrpt_diffprcnt + flrpt_diff / CASE WHEN (_s.diffTotal=0) THEN 1 ELSE _s.diffTotal END, flrpt_customprcnt = flrpt_customprcnt + flrpt_custom / CASE WHEN (_s.customTotal=0) THEN 1 ELSE _s.customTotal END WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_order=_t.flrpt_order)); END LOOP; -- Update any subtotal records to reflect the percentage values of the parents -- since those are calculated after the subtotal records were created. FOR _t IN SELECT a.flrpt_order AS flrpt_order, b.flrpt_beginningprcnt AS flrpt_beginningprcnt, b.flrpt_endingprcnt AS flrpt_endingprcnt, b.flrpt_debitsprcnt AS flrpt_debitsprcnt, b.flrpt_creditsprcnt AS flrpt_creditsprcnt, b.flrpt_budgetprcnt AS flrpt_budgetprcnt, b.flrpt_diffprcnt AS flrpt_diffprcnt, b.flrpt_customprcnt AS flrpt_customprcnt FROM flrpt AS a, flrpt AS b WHERE ((a.flrpt_flhead_id=pFlheadid) AND (a.flrpt_period_id=pPeriodid) AND (a.flrpt_interval=pInterval) AND (a.flrpt_username=getEffectiveXtUser()) AND (a.flrpt_type='T') AND (b.flrpt_flhead_id=a.flrpt_flhead_id) AND (b.flrpt_period_id=a.flrpt_period_id) AND (b.flrpt_interval=pInterval) AND (b.flrpt_username=a.flrpt_username) AND (b.flrpt_type='G') AND (b.flrpt_type_id=a.flrpt_parent_id)) LOOP UPDATE flrpt SET flrpt_beginningprcnt=flrpt_beginningprcnt + _t.flrpt_beginningprcnt, flrpt_endingprcnt=flrpt_endingprcnt + _t.flrpt_endingprcnt, flrpt_debitsprcnt=flrpt_debitsprcnt + _t.flrpt_debitsprcnt, flrpt_creditsprcnt=flrpt_creditsprcnt + _t.flrpt_creditsprcnt, flrpt_budgetprcnt=flrpt_budgetprcnt + _t.flrpt_budgetprcnt, flrpt_diffprcnt=flrpt_diffprcnt + _t.flrpt_diffprcnt, flrpt_customprcnt=flrpt_customprcnt + _t.flrpt_customprcnt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_order=_t.flrpt_order)); END LOOP; -- If showing a Grand total then move the record we created early to the -- end of the report and marked as a Total record. IF (_r.flhead_showtotal) THEN UPDATE flrpt SET flrpt_order = COALESCE((SELECT MAX(flrpt_order) FROM flrpt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser())) ), 0) + 1, flrpt_level = 0, flrpt_type = 'T' WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_order=0) AND (flrpt_level = -1) AND (flrpt_type = 'G') AND (flrpt_type_id=-1)); END IF; return TRUE; END; $_$; LDROP FUNCTION public.financialreport(integer, integer, character, integer); publicadminfalse8399212551691746@financialreport(integer, integer[], character, boolean, integer)FUNCTION!CREATE FUNCTION financialreport(integer, integer[], character, boolean, integer) RETURNS SETOF fltrenditem LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlheadId ALIAS FOR $1; pPeriodIds ALIAS FOR $2; pInterval ALIAS FOR $3; pShowNumbers ALIAS FOR $4; pPrjid ALIAS FOR $5; _row fltrenditem%ROWTYPE; _type CHAR; _p RECORD; _count INTEGER; _n NUMERIC; _fld NUMERIC[]; _grndttl NUMERIC; _i INTEGER; _first BOOLEAN; _prevlevel INTEGER; _subgrp INTEGER; BEGIN _first := true; _subgrp := 0; IF ARRAY_UPPER(pPeriodIds,1) <= 12 THEN _count := ARRAY_UPPER(pPeriodIds,1); ELSE _count := 12; END IF; --Get Type SELECT flhead_type FROM flhead INTO _type WHERE flhead_id=pFlheadId; --Build Financial Data FOR _i IN 1.._count LOOP PERFORM financialreport(pFlheadId,pPeriodIds[_i],pInterval,pPrjid); END LOOP; --Get Row Data FOR _p IN SELECT flrpt_flhead_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_parent_id, flrpt_accnt_id, formatindent(flgrp.flgrp_name,flrpt.flrpt_level) AS flrpt_name, CASE WHEN (flgrp_summarize AND (_type IN ('I','C'))) THEN (COALESCE(flrpt_diff,0)) WHEN (flgrp_summarize AND (_type = 'B')) THEN (COALESCE(flrpt_ending,0)) ELSE NULL END AS f_fld1, flgrp_summarize AS display FROM flrpt,flgrp WHERE ((flrpt_flhead_id=pFlheadId) AND (flgrp_id=flrpt_type_id) AND (flrpt_type='G') AND (flrpt_period_id=pPeriodIds[1]) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser())) UNION SELECT flrpt_flhead_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_parent_id, flrpt_accnt_id, formatindent(accnt_descrip,flrpt.flrpt_level) AS flrpt_name, CASE WHEN (_type IN ('I','C')) THEN (COALESCE(flrpt_diff,0)) WHEN (_type = 'B') THEN (COALESCE(flrpt_ending,0)) ELSE NULL END AS f_fld1, true AS display FROM flrpt,flitem,accnt WHERE ((flrpt_flhead_id=pFlheadId) AND (flrpt_accnt_id=accnt_id) AND (flitem_id=flrpt_type_id) AND (flrpt_type='I') AND (flrpt_period_id=pPeriodIds[1]) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser())) UNION SELECT flrpt_flhead_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_parent_id, flrpt_accnt_id, CASE WHEN (flrpt.flrpt_type='T' AND flrpt.flrpt_level=0) THEN COALESCE(flrpt.flrpt_altname, 'Total') WHEN (flrpt.flrpt_type='T') THEN formatindent(COALESCE(flrpt.flrpt_altname, 'Subtotal') ,flrpt.flrpt_level) ELSE formatindent(('Type ' || flrpt.flrpt_type || ' ' || text(flrpt.flrpt_type_id)), flrpt.flrpt_level) END AS flstmtitem_name, CASE WHEN (_type IN ('I','C')) THEN (COALESCE(flrpt_diff,0)) WHEN (_type = 'B') THEN (COALESCE(flrpt_ending,0)) ELSE NULL END AS f_fld1, true AS display FROM flrpt WHERE ((flrpt_flhead_id=pFlheadId) AND (flrpt_type NOT IN ('I','S','G')) AND (flrpt_period_id=pPeriodIds[1]) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser())) ORDER BY flrpt_order LOOP IF _type IN ('I','C') THEN _grndttl := _p.f_fld1; END IF; --Loop through and calculate period column values IF (_p.display) THEN FOR _i IN 2.._count LOOP SELECT CASE WHEN (_type IN ('I','C')) THEN COALESCE(flrpt_diff,0) WHEN (_type = 'B') THEN COALESCE(flrpt_ending,0) ELSE NULL END INTO _n FROM flrpt WHERE ((flrpt_flhead_id=pFlheadId) AND (flrpt_period_id=pPeriodIds[_i]) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_order=_p.flrpt_order)); _fld[_i-1] := _n; IF _type IN ('I','C') THEN _grndttl := _grndttl+_n; END IF; END LOOP; END IF; --Send it all back to the caller IF _prevlevel > _p.flrpt_level THEN _subgrp := _subgrp+1; END IF; _prevlevel:=_p.flrpt_level; _row.fltrenditem_subgrp := _subgrp; IF NOT _first THEN RETURN NEXT _row; END IF; _first := FALSE; _row.fltrenditem_flhead_id := _p.flrpt_flhead_id; _row.fltrenditem_username := _p.flrpt_username; _row.fltrenditem_order := _p.flrpt_order; _row.fltrenditem_level := _p.flrpt_level; _row.fltrenditem_type := _p.flrpt_type; _row.fltrenditem_type_id := _p.flrpt_type_id; _row.fltrenditem_parent_id := _p.flrpt_parent_id; _row.fltrenditem_accnt_id := _p.flrpt_accnt_id; _row.fltrenditem_name := _p.flrpt_name; IF (_p.display) THEN _row.fltrenditem_fld1 := (_p.f_fld1); _row.fltrenditem_fld2 := (_fld[1]); _row.fltrenditem_fld3 := (_fld[2]); _row.fltrenditem_fld4 := (_fld[3]); _row.fltrenditem_fld5 := (_fld[4]); _row.fltrenditem_fld6 := (_fld[5]); _row.fltrenditem_fld7 := (_fld[6]); _row.fltrenditem_fld8 := (_fld[7]); _row.fltrenditem_fld9 := (_fld[8]); _row.fltrenditem_fld10 := (_fld[9]); _row.fltrenditem_fld11 := (_fld[10]); _row.fltrenditem_fld12 := (_fld[11]); _row.fltrenditem_grndttl := (_grndttl); ELSE _row.fltrenditem_fld1 := NULL; _row.fltrenditem_fld2 := NULL; _row.fltrenditem_fld3 := NULL; _row.fltrenditem_fld4 := NULL; _row.fltrenditem_fld5 := NULL; _row.fltrenditem_fld6 := NULL; _row.fltrenditem_fld7 := NULL; _row.fltrenditem_fld8 := NULL; _row.fltrenditem_fld9 := NULL; _row.fltrenditem_fld10 := NULL; _row.fltrenditem_fld11 := NULL; _row.fltrenditem_fld12 := NULL; _row.fltrenditem_grndttl := NULL; END IF; END LOOP; _row.fltrenditem_subgrp := _subgrp + 1; RETURN NEXT _row; END; $_$; WDROP FUNCTION public.financialreport(integer, integer[], character, boolean, integer); publicadminfalse83992260312552008376<financialreport(integer, integer, boolean, boolean, integer)FUNCTIONCREATE FUNCTION financialreport(integer, integer, boolean, boolean, integer) RETURNS SETOF flstmtitem LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlcolid ALIAS FOR $1; pPeriodid ALIAS FOR $2; pShowNumbers ALIAS FOR $3; pIndentName ALIAS FOR $4; pPrjid ALIAS FOR $5; _row flstmtitem%ROWTYPE; _p RECORD; _x RECORD; _priorMoPeriodId INTEGER; _priorQtPeriodId INTEGER; _priorYrPeriodId INTEGER; _first BOOLEAN; _prevlevel INTEGER; _subgrp INTEGER; _qtrInterval TEXT; _yrInterval TEXT; BEGIN _priorMoPeriodId := -1; _priorQtPeriodId := -1; _priorYrPeriodId := -1; _first := TRUE; _prevlevel :=0; _subgrp := 0; --Get Layout Data SELECT flhead_id,flhead_type, flcol_month,flcol_quarter,flcol_year,flcol_priortype, flcol_priormonth,flcol_priorquarter,flcol_prioryear, flcol_priordiff,flcol_priordiffprcnt,flcol_priorprcnt, flcol_budget,flcol_budgetdiff,flcol_budgetdiffprcnt, flcol_budgetprcnt INTO _p FROM flhead,flcol WHERE ((flcol_id=pFlcolid) AND (flhead_id=flcol_flhead_id)); IF (_p.flhead_type='B') THEN _qtrInterval := 'M'; _yrInterval := 'M'; ELSE _qtrInterval := 'Q'; _yrInterval := 'Y'; END IF; --Delete old data from all periods DELETE FROM flrpt WHERE ((flrpt_username=getEffectiveXtUser()) AND (flrpt_flhead_id=_p.flhead_id)); --Populate report data... --...for Month IF (_p.flcol_month) THEN PERFORM financialreport(_p.flhead_id,pPeriodid,'M',pPrjid); IF ((_p.flcol_priortype = 'P') AND (_p.flcol_priormonth)) THEN SELECT COALESCE(pp.period_id,-1) INTO _priorMoPeriodId FROM period cp, period pp WHERE ((cp.period_id=pPeriodId) AND (cp.period_start > pp.period_start)) ORDER BY pp.period_start DESC LIMIT 1; IF (_priorMoPeriodId IS NOT NULL) THEN PERFORM financialreport(_p.flhead_id,_priorMoPeriodId,'M',pPrjid); END IF; ELSE IF ((_p.flcol_priortype='Y')AND (_p.flcol_priormonth)) THEN SELECT COALESCE(pp.period_id,-1) INTO _priorMoPeriodId FROM period cp, period pp WHERE ((cp.period_id=pPeriodId) AND (cp.period_id != pp.period_id) AND (cp.period_start > pp.period_start) AND (cp.period_number = pp.period_number)) ORDER BY pp.period_start DESC LIMIT 1; IF (_priorMoPeriodId IS NOT NULL) THEN PERFORM financialreport(_p.flhead_id,_priorMoPeriodId,'M',pPrjid); END IF; END IF; END IF; END IF; --...for Quarter IF (_p.flcol_quarter) THEN PERFORM financialreport(_p.flhead_id,pPeriodid,'Q',pPrjid); END IF; IF ((_p.flcol_priortype='P') AND (_p.flcol_priorquarter)) THEN SELECT COALESCE(pp.period_id,-1) INTO _priorQtPeriodId FROM period cp, period pp WHERE ((cp.period_id=pPeriodId) AND (cp.period_start > pp.period_start) AND (pp.period_quarter= CASE WHEN cp.period_quarter > 1 THEN cp.period_quarter - 1 ELSE 4 END) AND (pp.period_start >= cp.period_start - interval '1 year')) ORDER BY pp.period_start DESC LIMIT 1; IF (_priorQtPeriodId IS NOT NULL) THEN PERFORM financialreport(_p.flhead_id,_priorQtPeriodId,'Q',pPrjid); END IF; ELSE IF ((_p.flcol_priortype='Y')AND (_p.flcol_priorquarter)) THEN SELECT pp.period_id INTO _priorQtPeriodId FROM period cp, period pp, yearperiod cy, yearperiod py WHERE ((cp.period_id=pPeriodId) AND (cp.period_yearperiod_id=cy.yearperiod_id) AND (pp.period_yearperiod_id=py.yearperiod_id) AND (cp.period_quarter=pp.period_quarter) AND (cy.yearperiod_start > py.yearperiod_start)) ORDER BY py.yearperiod_start DESC, pp.period_start DESC LIMIT 1; IF (_priorQtPeriodId IS NOT NULL) THEN PERFORM financialreport(_p.flhead_id,_priorQtPeriodId,'Q',pPrjid); END IF; END IF; END IF; --...for Year IF (_p.flcol_year) THEN PERFORM financialreport(_p.flhead_id,pPeriodid,'Y',pPrjid); END IF; IF (_p.flcol_prioryear='D') THEN SELECT COALESCE(pp.period_id,-1) INTO _priorYrPeriodId FROM period cp, period pp WHERE ((cp.period_id = pPeriodId) AND (cp.period_number = pp.period_number) AND (cp.period_start > pp.period_start)) ORDER BY pp.period_start DESC LIMIT 1; IF (_priorYrPeriodId IS NOT NULL) THEN PERFORM financialreport(_p.flhead_id,_priorYrPeriodId,'Y',pPrjid); END IF; ELSE IF (_p.flcol_prioryear='F') THEN SELECT pp.period_id INTO _priorYrPeriodId FROM period cp, period pp, yearperiod cy, yearperiod py WHERE ((cp.period_id=pPeriodId) AND (cp.period_yearperiod_id=cy.yearperiod_id) AND (pp.period_yearperiod_id=py.yearperiod_id) AND (cy.yearperiod_start > py.yearperiod_start)) ORDER BY pp.period_start DESC LIMIT 1; IF (_priorYrPeriodId IS NOT NULL) THEN PERFORM financialreport(_p.flhead_id,_priorYrPeriodId,'Y',pPrjid); END IF; END IF; END IF; --Return the data FOR _x IN SELECT flrpt.flrpt_flhead_id AS flstmtitem_flhead_id, flrpt.flrpt_period_id AS flstmtitem_period_id, flrpt.flrpt_username AS flstmtitem_username, flrpt.flrpt_order AS flstmtitem_order, flrpt.flrpt_level AS flstmtitem_level, flrpt.flrpt_type AS flstmtitem_type, flrpt.flrpt_type_id AS flstmtitem_type_id, flrpt.flrpt_parent_id AS flstmtitem_parent_id, NULL AS flstmtitem_accnt_id, CASE WHEN (pIndentName) THEN formatindent(flgrp.flgrp_name,flrpt.flrpt_level) ELSE flgrp.flgrp_name END AS flstmtitem_name, CASE WHEN (flgrp_summarize AND (flhead_type IN ('I','C'))) THEN (COALESCE(flrptmo.flrpt_diff,0)) WHEN (flgrp_summarize AND (flhead_type = 'B')) THEN (COALESCE(flrptmo.flrpt_ending,0)) ELSE NULL END AS flstmtitem_month, CASE WHEN (flgrp_summarize) THEN (COALESCE(flrptmo.flrpt_debits,0)) ELSE NULL END AS flstmtitem_monthdb, CASE WHEN (flgrp_summarize) THEN (COALESCE(flrptmo.flrpt_credits,0)) ELSE NULL END AS flstmtitem_monthcr, CASE WHEN (flgrp_summarize AND flgrp_showdiffprcnt) THEN (COALESCE(flrptmo.flrpt_diffprcnt,0)) WHEN (flgrp_summarize AND flgrp_showendprcnt) THEN (COALESCE(flrptmo.flrpt_endingprcnt,0)) ELSE NULL END AS flstmtitem_monthprcnt, CASE WHEN (flgrp_summarize) THEN (flrptmo.flrpt_budget) ELSE NULL END AS flstmtitem_monthbudget, CASE WHEN (flgrp_summarize) THEN (flrptmo.flrpt_budgetprcnt) ELSE NULL END AS flstmtitem_monthbudgetprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE((flrptmo.flrpt_diff-flrptmo.flrpt_budget),0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE((flrptmo.flrpt_ending-flrptmo.flrpt_budget),0)) ELSE NULL END AS flstmtitem_monthbudgetdiff, CASE WHEN (flgrp_summarize AND (flhead_type IN ('I','C')) AND (flrptmo.flrpt_budget > 0)) THEN (COALESCE(((flrptmo.flrpt_diff-flrptmo.flrpt_budget)/flrptmo.flrpt_budget),0)) WHEN (flgrp_summarize AND (flhead_type='B') AND (flrptmo.flrpt_budget > 0)) THEN (COALESCE(((flrptmo.flrpt_ending-flrptmo.flrpt_budget)/flrptmo.flrpt_budget),0)) WHEN (flgrp_summarize AND (flrptmo.flrpt_budget = 0)) THEN NULL ELSE NULL END AS flstmtitem_monthbudgetdiffprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE(flrptqt.flrpt_diff,0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE(flrptqt.flrpt_ending,0)) ELSE NULL END AS flstmtitem_qtr, CASE WHEN (flgrp_summarize) THEN (COALESCE(flrptqt.flrpt_debits,0)) ELSE NULL END AS flstmtitem_qtrdb, CASE WHEN (flgrp_summarize) THEN (COALESCE(flrptqt.flrpt_credits,0)) ELSE NULL END AS flstmtitem_qtrcr, CASE WHEN (flgrp_summarize AND flgrp_showdiffprcnt) THEN (flrptqt.flrpt_diffprcnt) WHEN (flgrp_summarize AND flgrp_showendprcnt) THEN (flrptqt.flrpt_endingprcnt) ELSE NULL END AS flstmtitem_qtrprcnt, CASE WHEN (flgrp_summarize) THEN (COALESCE(flrptqt.flrpt_budget,0)) ELSE NULL END AS flstmtitem_qtrbudget, CASE WHEN (flgrp_summarize) THEN (flrptqt.flrpt_budgetprcnt) ELSE NULL END AS flstmtitem_qtrbudgetprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE((flrptqt.flrpt_diff-flrptqt.flrpt_budget),0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE((flrptqt.flrpt_ending-flrptqt.flrpt_budget),0)) ELSE NULL END AS flstmtitem_qtrbudgetdiff, CASE WHEN (flgrp_summarize AND (flhead_type IN ('I','C')) AND (flrptqt.flrpt_budget > 0)) THEN (COALESCE(((flrptqt.flrpt_diff-flrptqt.flrpt_budget)/flrptqt.flrpt_budget),0)) WHEN (flgrp_summarize AND (flhead_type='B') AND (flrptqt.flrpt_budget > 0)) THEN (COALESCE(((flrptqt.flrpt_ending-flrptqt.flrpt_budget)/flrptqt.flrpt_budget),0)) ELSE NULL END AS flstmtitem_qtrbudgetdiffprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE(flrptyr.flrpt_diff,0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE(flrptyr.flrpt_ending,0)) ELSE NULL END AS flstmtitem_year, CASE WHEN (flgrp_summarize) THEN (COALESCE(flrptyr.flrpt_debits,0)) ELSE NULL END AS flstmtitem_yeardb, CASE WHEN (flgrp_summarize) THEN (COALESCE(flrptyr.flrpt_credits,0)) ELSE NULL END AS flstmtitem_yearcr, CASE WHEN (flgrp_summarize AND flgrp_showdiffprcnt) THEN (COALESCE(flrptyr.flrpt_diffprcnt,0)) WHEN (flgrp_summarize AND flgrp_showendprcnt) THEN (COALESCE(flrptyr.flrpt_endingprcnt,0)) ELSE NULL END AS flstmtitem_yearprcnt, CASE WHEN (flgrp_summarize) THEN (flrptyr.flrpt_budget) ELSE NULL END AS flstmtitem_yearbudget, CASE WHEN (flgrp_summarize) THEN (flrptyr.flrpt_budgetprcnt) ELSE NULL END AS flstmtitem_yearbudgetprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE((flrptyr.flrpt_diff-flrptyr.flrpt_budget),0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE((flrptyr.flrpt_ending-flrptyr.flrpt_budget),0)) ELSE NULL END AS flstmtitem_yearbudgetdiff, CASE WHEN (flgrp_summarize AND (flhead_type IN ('I','C')) AND (flrptyr.flrpt_budget > 0)) THEN (COALESCE(((flrptyr.flrpt_diff-flrptyr.flrpt_budget)/flrptyr.flrpt_budget),0)) WHEN (flgrp_summarize AND (flhead_type = 'B') AND (flrptyr.flrpt_budget > 0)) THEN (COALESCE(((flrptyr.flrpt_ending-flrptyr.flrpt_budget)/flrptyr.flrpt_budget),0)) WHEN (flgrp_summarize AND (flrptyr.flrpt_budget = 0)) THEN NULL ELSE NULL END AS flstmtitem_yearbudgetdiffprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE(flrptprmo.flrpt_diff,0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE(flrptprmo.flrpt_ending,0)) ELSE NULL END AS flstmtitem_prmonth, CASE WHEN (flgrp_summarize AND flgrp_showdiffprcnt) THEN (flrptprmo.flrpt_diffprcnt) WHEN (flgrp_summarize AND flgrp_showendprcnt) THEN (flrptprmo.flrpt_endingprcnt) ELSE NULL END AS flstmtitem_prmonthprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE(flrptmo.flrpt_diff-flrptprmo.flrpt_diff,0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE(flrptmo.flrpt_ending-flrptprmo.flrpt_ending,0)) ELSE NULL END AS flstmtitem_prmonthdiff, CASE WHEN (flgrp_summarize AND (flhead_type IN ('I','C')) AND (flrptprmo.flrpt_diff > 0)) THEN (COALESCE((flrptmo.flrpt_diff-flrptprmo.flrpt_diff)/flrptprmo.flrpt_diff,0)) WHEN (flgrp_summarize AND (flhead_type = 'B') AND (flrptprmo.flrpt_ending > 0)) THEN (COALESCE((flrptmo.flrpt_ending-flrptprmo.flrpt_ending)/flrptprmo.flrpt_ending,0)) WHEN (flgrp_summarize AND (flrptprmo.flrpt_ending = 0)) THEN NULL ELSE NULL END AS flstmtitem_prmonthdiffprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE(flrptprqt.flrpt_diff,0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE(flrptprqt.flrpt_ending,0)) ELSE NULL END AS flstmtitem_prqtr, CASE WHEN (flgrp_summarize AND flgrp_showdiffprcnt) THEN (flrptprqt.flrpt_diffprcnt) WHEN (flgrp_summarize AND flgrp_showendprcnt) THEN (flrptprqt.flrpt_endingprcnt) ELSE NULL END AS flstmtitem_prqtrprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE(flrptqt.flrpt_diff-flrptprqt.flrpt_diff,0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE(flrptqt.flrpt_ending-flrptprqt.flrpt_ending,0)) ELSE NULL END AS flstmtitem_prqtrdiff, CASE WHEN (flgrp_summarize AND (flhead_type IN ('I','C')) AND (flrptprqt.flrpt_diff > 0)) THEN (COALESCE((flrptqt.flrpt_diff-flrptprqt.flrpt_diff)/flrptprqt.flrpt_diff,0)) WHEN (flgrp_summarize AND (flhead_type = 'B') AND (flrptprqt.flrpt_ending > 0)) THEN (COALESCE((flrptqt.flrpt_ending-flrptprqt.flrpt_ending)/flrptprqt.flrpt_ending,0)) WHEN (flgrp_summarize AND (flrptprqt.flrpt_ending = 0)) THEN NULL ELSE NULL END AS flstmtitem_prqtrdiffprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE(flrptpryr.flrpt_diff,0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE(flrptpryr.flrpt_ending,0)) ELSE NULL END AS flstmtitem_pryear, CASE WHEN (flgrp_summarize AND flgrp_showdiffprcnt) THEN (flrptpryr.flrpt_diffprcnt) WHEN (flgrp_summarize AND flgrp_showendprcnt) THEN (flrptpryr.flrpt_endingprcnt) ELSE NULL END AS flstmtitem_pryearprcnt, CASE WHEN (flgrp_summarize AND flhead_type IN ('I','C')) THEN (COALESCE(flrptyr.flrpt_diff-flrptpryr.flrpt_diff,0)) WHEN (flgrp_summarize AND flhead_type = 'B') THEN (COALESCE(flrptyr.flrpt_ending-flrptpryr.flrpt_ending,0)) ELSE NULL END AS flstmtitem_pryeardiff, CASE WHEN (flgrp_summarize AND (flhead_type IN ('I','C')) AND (flrptpryr.flrpt_diff > 0)) THEN (COALESCE((flrptyr.flrpt_diff-flrptpryr.flrpt_diff)/flrptpryr.flrpt_diff,0)) WHEN (flgrp_summarize AND (flhead_type = 'B' ) AND (flrptpryr.flrpt_ending > 0)) THEN (COALESCE((flrptyr.flrpt_ending-flrptpryr.flrpt_ending)/flrptpryr.flrpt_ending,0)) WHEN (flgrp_summarize AND (flrptpryr.flrpt_ending = 0)) THEN NULL ELSE NULL END AS flstmtitem_pryeardiffprcnt FROM flgrp,flhead, (SELECT DISTINCT flrpt_flhead_id, flrpt_period_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_parent_id FROM flrpt WHERE ((flrpt_type='G') AND (flrpt_flhead_id=_p.flhead_id) AND (flrpt_period_id=pPeriodId) AND (flrpt_username=getEffectiveXtUser()))) AS flrpt LEFT OUTER JOIN flrpt flrptmo ON ((flrptmo.flrpt_type=flrpt.flrpt_type) AND (flrptmo.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptmo.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptmo.flrpt_period_id=flrpt.flrpt_period_id) AND (flrptmo.flrpt_interval='M') AND (flrptmo.flrpt_username=flrpt.flrpt_username) AND (flrptmo.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptqt ON ((flrptqt.flrpt_type=flrpt.flrpt_type) AND (flrptqt.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptqt.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptqt.flrpt_period_id=flrpt.flrpt_period_id) AND (flrptqt.flrpt_interval=_qtrInterval) AND (flrptqt.flrpt_username=flrpt.flrpt_username) AND (flrptqt.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptyr ON ((flrptyr.flrpt_type=flrpt.flrpt_type) AND (flrptyr.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptyr.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptyr.flrpt_period_id=flrpt.flrpt_period_id) AND (flrptyr.flrpt_interval=_yrInterval) AND (flrptyr.flrpt_username=flrpt.flrpt_username) AND (flrptyr.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptprmo ON ((flrptprmo.flrpt_type=flrpt.flrpt_type) AND (flrptprmo.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptprmo.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptprmo.flrpt_period_id=_priorMoPeriodId) AND (flrptprmo.flrpt_interval='M') AND (flrptprmo.flrpt_username=flrpt.flrpt_username) AND (flrptprmo.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptprqt ON ((flrptprqt.flrpt_type=flrpt.flrpt_type) AND (flrptprqt.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptprqt.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptprqt.flrpt_period_id=_priorQtPeriodId) AND (flrptprqt.flrpt_interval='Q') AND (flrptprqt.flrpt_username=flrpt.flrpt_username) AND (flrptprqt.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptpryr ON ((flrptpryr.flrpt_type=flrpt.flrpt_type) AND (flrptpryr.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptpryr.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptpryr.flrpt_period_id=_priorYrPeriodId) AND (flrptpryr.flrpt_interval='Y') AND (flrptpryr.flrpt_username=flrpt.flrpt_username) AND (flrptpryr.flrpt_order=flrpt.flrpt_order)) WHERE ((flgrp_id = flrpt.flrpt_type_id) AND (flhead_id = flgrp_flhead_id)) UNION SELECT flrpt.flrpt_flhead_id AS flstmtitem_flhead_id, flrpt.flrpt_period_id AS flstmtitem_period_id, flrpt.flrpt_username AS flstmtitem_username, flrpt.flrpt_order AS flstmtitem_order, flrpt.flrpt_level AS flstmtitem_level, flrpt.flrpt_type AS flstmtitem_type, flrpt.flrpt_type_id AS flstmtitem_type_id, flrpt.flrpt_parent_id AS flstmtitem_parent_id, flrpt.flrpt_accnt_id AS flstmtitem_accnt_id, CASE WHEN (pIndentName) THEN formatindent(flrpt.flrpt_name,flrpt.flrpt_level) ELSE flrpt.flrpt_name END AS flstmtitem_name, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptmo.flrpt_diff,0)) ELSE (COALESCE(flrptmo.flrpt_ending,0)) END AS flstmtitem_month, (COALESCE(flrptmo.flrpt_debits,0)) AS flstmtitem_monthdb, (COALESCE(flrptmo.flrpt_credits,0)) AS flstmtitem_monthcr, CASE WHEN (flitem_showdiffprcnt) THEN (flrptmo.flrpt_diffprcnt) WHEN (flitem_showendprcnt) THEN (flrptmo.flrpt_endingprcnt) ELSE NULL END AS flstmtitem_monthprcnt, (COALESCE(flrptmo.flrpt_budget,0)) AS flstmtitem_monthbudget, (flrptmo.flrpt_budgetprcnt) AS flstmtitem_monthbudgetprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE((flrptmo.flrpt_diff-flrptmo.flrpt_budget),0)) ELSE (COALESCE((flrptmo.flrpt_ending-flrptmo.flrpt_budget),0)) END AS flstmtitem_monthbudgetdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptmo.flrpt_budget > 0)) THEN (COALESCE(((flrptmo.flrpt_diff-flrptmo.flrpt_budget)/flrptmo.flrpt_budget),0)) WHEN ((flhead_type='B') AND (flrptmo.flrpt_budget > 0)) THEN (COALESCE(((flrptmo.flrpt_ending-flrptmo.flrpt_budget)/flrptmo.flrpt_budget),0)) ELSE NULL END AS flstmtitem_monthbudgetdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptqt.flrpt_diff,0)) ELSE (COALESCE(flrptqt.flrpt_ending,0)) END AS flstmtitem_qtr, (COALESCE(flrptqt.flrpt_debits,0)) AS flstmtitem_qtrdb, (COALESCE(flrptqt.flrpt_credits,0)) AS flstmtitem_qtrcr, CASE WHEN (flitem_showdiffprcnt) THEN (COALESCE(flrptqt.flrpt_diffprcnt,0)) WHEN (flitem_showendprcnt) THEN (COALESCE(flrptqt.flrpt_endingprcnt,0)) ELSE NULL END AS flstmtitem_qtrprcnt, (COALESCE(flrptqt.flrpt_budget,0)) AS flstmtitem_qtrbudget, (flrptqt.flrpt_budgetprcnt) AS flstmtitem_qtrbudgetprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE((flrptqt.flrpt_diff-flrptqt.flrpt_budget),0)) ELSE (COALESCE((flrptqt.flrpt_ending-flrptqt.flrpt_budget),0)) END AS flstmtitem_qtrbudgetdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptqt.flrpt_budget > 0)) THEN (COALESCE(((flrptqt.flrpt_diff-flrptqt.flrpt_budget)/flrptqt.flrpt_budget),0)) WHEN ((flhead_type='B') AND (flrptqt.flrpt_budget > 0)) THEN (COALESCE(((flrptqt.flrpt_ending-flrptqt.flrpt_budget)/flrptqt.flrpt_budget),0)) ELSE NULL END AS flstmtitem_qtrbudgetdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptyr.flrpt_diff,0)) ELSE (COALESCE(flrptyr.flrpt_ending,0)) END AS flstmtitem_year, (COALESCE(flrptyr.flrpt_debits,0)) AS flstmtitem_yeardb, (COALESCE(flrptyr.flrpt_credits,0)) AS flstmtitem_yearcr, CASE WHEN (flitem_showdiffprcnt) THEN (flrptyr.flrpt_diffprcnt) WHEN (flitem_showendprcnt) THEN (flrptyr.flrpt_endingprcnt) ELSE NULL END AS flstmtitem_yearprcnt, (COALESCE(flrptyr.flrpt_budget,0)) AS flstmtitem_yearbudget, (flrptyr.flrpt_budgetprcnt) AS flstmtitem_yearbudgetprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE((flrptyr.flrpt_diff-flrptyr.flrpt_budget),0)) ELSE (COALESCE((flrptyr.flrpt_ending-flrptyr.flrpt_budget),0)) END AS flstmtitem_yearbudgetdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptyr.flrpt_budget > 0)) THEN (COALESCE(((flrptyr.flrpt_diff-flrptyr.flrpt_budget)/flrptyr.flrpt_budget),0)) WHEN ((flhead_type = 'B') AND (flrptyr.flrpt_budget > 0)) THEN (COALESCE(((flrptyr.flrpt_ending-flrptyr.flrpt_budget)/flrptyr.flrpt_budget),0)) ELSE NULL END AS flstmtitem_yearbudgetdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptprmo.flrpt_diff,0)) ELSE (COALESCE(flrptprmo.flrpt_ending,0)) END AS flstmtitem_prmonth, CASE WHEN (flitem_showdiffprcnt) THEN (flrptprmo.flrpt_diffprcnt) WHEN (flitem_showendprcnt) THEN (flrptprmo.flrpt_endingprcnt) ELSE NULL END AS flstmtitem_prmonthprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptmo.flrpt_diff-flrptprmo.flrpt_diff,0)) ELSE (COALESCE(flrptmo.flrpt_ending-flrptprmo.flrpt_ending,0)) END AS flstmtitem_prmonthdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptprmo.flrpt_diff > 0)) THEN (COALESCE((flrptmo.flrpt_diff-flrptprmo.flrpt_diff)/flrptprmo.flrpt_diff,0)) WHEN ((flhead_type = 'B') AND (flrptprmo.flrpt_ending > 0)) THEN (COALESCE((flrptmo.flrpt_ending-flrptprmo.flrpt_ending)/flrptprmo.flrpt_ending,0)) ELSE NULL END AS flstmtitem_prmonthdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptprqt.flrpt_diff,0)) ELSE (COALESCE(flrptprqt.flrpt_ending,0)) END AS flstmtitem_prqtr, CASE WHEN (flitem_showdiffprcnt) THEN (flrptprqt.flrpt_diffprcnt) WHEN (flitem_showendprcnt) THEN (flrptprqt.flrpt_endingprcnt) ELSE NULL END AS flstmtitem_prqtrprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptqt.flrpt_diff-flrptprqt.flrpt_diff,0)) ELSE (COALESCE(flrptqt.flrpt_ending-flrptprqt.flrpt_ending,0)) END AS flstmtitem_prqtrdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptprqt.flrpt_diff > 0)) THEN (COALESCE((flrptqt.flrpt_diff-flrptprqt.flrpt_diff)/flrptprqt.flrpt_diff,0)) WHEN ((flhead_type = 'B') AND (flrptprqt.flrpt_ending > 0)) THEN (COALESCE((flrptqt.flrpt_ending-flrptprqt.flrpt_ending)/flrptprqt.flrpt_ending,0)) ELSE NULL END AS flstmtitem_prqtrdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptpryr.flrpt_diff,0)) ELSE (COALESCE(flrptpryr.flrpt_ending,0)) END AS flstmtitem_pryear, CASE WHEN (flitem_showdiffprcnt) THEN (flrptpryr.flrpt_diffprcnt) WHEN (flitem_showendprcnt) THEN (flrptpryr.flrpt_endingprcnt) ELSE NULL END AS flstmtitem_pryearprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE((flrptyr.flrpt_diff-flrptpryr.flrpt_diff),0)) ELSE (COALESCE((flrptyr.flrpt_ending-flrptpryr.flrpt_ending),0)) END AS flstmtitem_pryeardiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptpryr.flrpt_diff > 0)) THEN (COALESCE((flrptyr.flrpt_diff-flrptpryr.flrpt_diff)/flrptpryr.flrpt_diff,0)) WHEN ((flhead_type = 'B' ) AND (flrptpryr.flrpt_ending > 0)) THEN (COALESCE((flrptyr.flrpt_ending-flrptpryr.flrpt_ending)/flrptpryr.flrpt_ending,0)) ELSE NULL END AS flstmtitem_pryeardiffprcnt FROM flitem,flhead, (SELECT DISTINCT flrpt_flhead_id, flrpt_period_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_parent_id, accnt_id AS flrpt_accnt_id, CASE WHEN (pShowNumbers) THEN (formatGLAccount(accnt_id) || '-' || accnt_descrip) ELSE accnt_descrip END AS flrpt_name FROM flrpt,accnt WHERE ((flrpt_type='I') AND (flrpt_flhead_id=_p.flhead_id) AND (flrpt_period_id=pPeriodid) AND (flrpt_username=getEffectiveXtUser()) AND (accnt_id=flrpt_accnt_id))) AS flrpt LEFT OUTER JOIN flrpt flrptmo ON ((flrptmo.flrpt_type=flrpt.flrpt_type) AND (flrptmo.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptmo.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptmo.flrpt_period_id=flrpt.flrpt_period_id) AND (flrptmo.flrpt_interval='M') AND (flrptmo.flrpt_username=flrpt.flrpt_username) AND (flrptmo.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptqt ON ((flrptqt.flrpt_type=flrpt.flrpt_type) AND (flrptqt.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptqt.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptqt.flrpt_period_id=flrpt.flrpt_period_id) AND (flrptqt.flrpt_interval=_qtrInterval) AND (flrptqt.flrpt_username=flrpt.flrpt_username) AND (flrptqt.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptyr ON ((flrptyr.flrpt_type=flrpt.flrpt_type) AND (flrptyr.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptyr.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptyr.flrpt_period_id=flrpt.flrpt_period_id) AND (flrptyr.flrpt_interval=_yrInterval) AND (flrptyr.flrpt_username=flrpt.flrpt_username) AND (flrptyr.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptprmo ON ((flrptprmo.flrpt_type=flrpt.flrpt_type) AND (flrptprmo.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptprmo.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptprmo.flrpt_period_id=_priorMoPeriodId) AND (flrptprmo.flrpt_interval='M') AND (flrptprmo.flrpt_username=flrpt.flrpt_username) AND (flrptprmo.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptprqt ON ((flrptprqt.flrpt_type=flrpt.flrpt_type) AND (flrptprqt.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptprqt.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptprqt.flrpt_period_id=_priorQtPeriodId) AND (flrptprqt.flrpt_interval='Q') AND (flrptprqt.flrpt_username=flrpt.flrpt_username) AND (flrptprqt.flrpt_order=flrpt.flrpt_order)) LEFT OUTER JOIN flrpt flrptpryr ON ((flrptpryr.flrpt_type=flrpt.flrpt_type) AND (flrptpryr.flrpt_type_id=flrpt.flrpt_type_id) AND (flrptpryr.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptpryr.flrpt_period_id=_priorYrPeriodId) AND (flrptpryr.flrpt_interval='Y') AND (flrptpryr.flrpt_username=flrpt.flrpt_username) AND (flrptpryr.flrpt_order=flrpt.flrpt_order) ) WHERE ((flitem_id = flrpt.flrpt_type_id) AND (flhead_id = flitem_flhead_id)) UNION SELECT flrpt.flrpt_flhead_id AS flstmtitem_flhead_id, flrpt.flrpt_period_id AS flstmtitem_period_id, flrpt.flrpt_username AS flstmtitem_username, flrpt.flrpt_order AS flstmtitem_order, flrpt.flrpt_level AS flstmtitem_level, flrpt.flrpt_type AS flstmtitem_type, flrpt.flrpt_type_id AS flstmtitem_type_id, flrpt.flrpt_parent_id AS flstmtitem_parent_id, NULL AS flstmtitem_accnt_id, CASE WHEN(flrpt.flrpt_type='T' AND flrpt.flrpt_level=0) THEN COALESCE(flrpt.flrpt_altname, 'Total') WHEN(flrpt.flrpt_type='T') THEN formatindent(COALESCE(flrpt.flrpt_altname, 'Subtotal') , (CASE WHEN pIndentName THEN flrpt.flrpt_level ELSE 0 END)) ELSE formatindent(('Type ' || flrpt.flrpt_type || ' ' || text(flrpt.flrpt_type_id)), (CASE WHEN pIndentName THEN flrpt.flrpt_level ELSE 0 END)) END AS flstmtitem_name, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptmo.flrpt_diff,0)) ELSE (COALESCE(flrptmo.flrpt_ending,0)) END AS flstmtitem_month, (COALESCE(flrptmo.flrpt_debits,0)) AS flstmtitem_monthdb, (COALESCE(flrptmo.flrpt_credits,0)) AS flstmtitem_monthcr, CASE WHEN (flhead_type IN ('I','C')) THEN (flrptmo.flrpt_diffprcnt) ELSE (flrptmo.flrpt_endingprcnt) END AS flstmtitem_monthprcnt, (COALESCE(flrptmo.flrpt_budget,0)) AS flstmtitem_monthbudget, (flrptmo.flrpt_budgetprcnt) AS flstmtitem_monthbudgetprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE((flrptmo.flrpt_diff-flrptmo.flrpt_budget),0)) ELSE (COALESCE((flrptmo.flrpt_ending-flrptmo.flrpt_budget),0)) END AS flstmtitem_monthbudgetdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptmo.flrpt_budget > 0)) THEN (COALESCE(((flrptmo.flrpt_diff-flrptmo.flrpt_budget)/flrptmo.flrpt_budget),0)) WHEN ((flhead_type='B') AND (flrptmo.flrpt_budget > 0)) THEN (COALESCE(((flrptmo.flrpt_ending-flrptmo.flrpt_budget)/flrptmo.flrpt_budget),0)) ELSE NULL END AS flstmtitem_monthbudgetdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptqt.flrpt_diff,0)) ELSE (COALESCE(flrptqt.flrpt_ending,0)) END AS flstmtitem_qtr, (COALESCE(flrptqt.flrpt_debits,0)) AS flstmtitem_qtrdb, (COALESCE(flrptqt.flrpt_credits,0)) AS flstmtitem_qtrcr, CASE WHEN (flhead_type IN ('I','C')) THEN (flrptqt.flrpt_diffprcnt) ELSE (flrptqt.flrpt_endingprcnt) END AS flstmtitem_qtrprcnt, (COALESCE(flrptqt.flrpt_budget,0)) AS flstmtitem_qtrbudget, (flrptqt.flrpt_budgetprcnt) AS flstmtitem_qtrbudgetprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE((flrptqt.flrpt_diff-flrptqt.flrpt_budget),0)) ELSE (COALESCE((flrptqt.flrpt_ending-flrptqt.flrpt_budget),0)) END AS flstmtitem_qtrbudgetdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptqt.flrpt_budget > 0)) THEN (COALESCE(((flrptqt.flrpt_diff-flrptqt.flrpt_budget)/flrptqt.flrpt_budget),0)) WHEN ((flhead_type='B') AND (flrptqt.flrpt_budget > 0)) THEN (COALESCE(((flrptqt.flrpt_ending-flrptqt.flrpt_budget)/flrptqt.flrpt_budget),0)) ELSE NULL END AS flstmtitem_qtrbudgetdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptyr.flrpt_diff,0)) ELSE (COALESCE(flrptyr.flrpt_ending,0)) END AS flstmtitem_year, (COALESCE(flrptyr.flrpt_debits,0)) AS flstmtitem_yeardb, (COALESCE(flrptyr.flrpt_credits,0)) AS flstmtitem_yearcr, CASE WHEN (flhead_type IN ('I','C')) THEN (flrptyr.flrpt_diffprcnt) ELSE (flrptyr.flrpt_endingprcnt) END AS flstmtitem_yearprcnt, (COALESCE(flrptyr.flrpt_budget,0)) AS flstmtitem_yearbudget, (flrptyr.flrpt_budgetprcnt) AS flstmtitem_yearbudgetprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE((flrptyr.flrpt_diff-flrptyr.flrpt_budget),0)) ELSE (COALESCE((flrptyr.flrpt_ending-flrptyr.flrpt_budget),0)) END AS flstmtitem_yearbudgetdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptyr.flrpt_budget > 0)) THEN (COALESCE(((flrptyr.flrpt_diff-flrptyr.flrpt_budget)/flrptyr.flrpt_budget),0)) WHEN ((flhead_type = 'B') AND (flrptyr.flrpt_budget > 0)) THEN (COALESCE(((flrptyr.flrpt_ending-flrptyr.flrpt_budget)/flrptyr.flrpt_budget),0)) ELSE NULL END AS flstmtitem_yearbudgetdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptprmo.flrpt_diff,0)) ELSE (COALESCE(flrptprmo.flrpt_ending,0)) END AS flstmtitem_prmonth, CASE WHEN (flhead_type IN ('I','C')) THEN (flrptprmo.flrpt_diffprcnt) ELSE (flrptprmo.flrpt_endingprcnt) END AS flstmtitem_prmonthprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptmo.flrpt_diff-flrptprmo.flrpt_diff,0)) ELSE (COALESCE(flrptmo.flrpt_ending-flrptprmo.flrpt_ending,0)) END AS flstmtitem_prmonthdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptprmo.flrpt_diff > 0)) THEN (COALESCE((flrptmo.flrpt_diff-flrptprmo.flrpt_diff)/flrptprmo.flrpt_diff,0)) WHEN ((flhead_type = 'B') AND (flrptprmo.flrpt_ending > 0)) THEN (COALESCE((flrptmo.flrpt_ending-flrptprmo.flrpt_ending)/flrptprmo.flrpt_ending,0)) ELSE NULL END AS flstmtitem_prmonthdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptprqt.flrpt_diff,0)) ELSE (COALESCE(flrptprqt.flrpt_ending,0)) END AS flstmtitem_prqtr, CASE WHEN (flhead_type IN ('I','C')) THEN (flrptprqt.flrpt_diffprcnt) ELSE (flrptprqt.flrpt_endingprcnt) END AS flstmtitem_prqtrprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptqt.flrpt_diff-flrptprqt.flrpt_diff,0)) ELSE (COALESCE(flrptqt.flrpt_ending-flrptprqt.flrpt_ending,0)) END AS flstmtitem_prqtrdiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptprqt.flrpt_diff > 0)) THEN (COALESCE((flrptqt.flrpt_diff-flrptprqt.flrpt_diff)/flrptprqt.flrpt_diff,0)) WHEN ((flhead_type = 'B') AND (flrptprqt.flrpt_ending > 0)) THEN (COALESCE((flrptqt.flrpt_ending-flrptprqt.flrpt_ending)/flrptprqt.flrpt_ending,0)) ELSE NULL END AS flstmtitem_prqtrdiffprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptpryr.flrpt_diff,0)) ELSE (COALESCE(flrptpryr.flrpt_ending,0)) END AS flstmtitem_pryear, CASE WHEN (flhead_type IN ('I','C')) THEN (flrptpryr.flrpt_diffprcnt) ELSE (flrptpryr.flrpt_endingprcnt) END AS flstmtitem_pryearprcnt, CASE WHEN (flhead_type IN ('I','C')) THEN (COALESCE(flrptyr.flrpt_diff-flrptpryr.flrpt_diff,0)) ELSE (COALESCE(flrptyr.flrpt_ending-flrptpryr.flrpt_ending,0)) END AS flstmtitem_pryeardiff, CASE WHEN ((flhead_type IN ('I','C')) AND (flrptpryr.flrpt_diff > 0)) THEN (COALESCE((flrptyr.flrpt_diff-flrptpryr.flrpt_diff)/flrptpryr.flrpt_diff,0)) WHEN ((flhead_type = 'B' ) AND (flrptpryr.flrpt_ending > 0)) THEN (COALESCE((flrptyr.flrpt_ending-flrptpryr.flrpt_ending)/flrptpryr.flrpt_ending,0)) ELSE NULL END AS flstmtitem_pryeardiffprcnt FROM flhead CROSS JOIN (SELECT DISTINCT flrpt_flhead_id, flrpt_period_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_parent_id, flrpt_altname FROM flrpt WHERE ((NOT (flrpt_type IN ('G','I','S'))) AND (flrpt_flhead_id=_p.flhead_id) AND (flrpt_period_id=pPeriodId) AND (flrpt_username=getEffectiveXtUser()))) AS flrpt LEFT OUTER JOIN flrpt flrptmo ON ((flrptmo.flrpt_type=flrpt.flrpt_type) AND (flrptmo.flrpt_order=flrpt.flrpt_order) AND (flrptmo.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptmo.flrpt_period_id=flrpt.flrpt_period_id) AND (flrptmo.flrpt_interval='M') AND (flrptmo.flrpt_username=flrpt.flrpt_username)) LEFT OUTER JOIN flrpt flrptqt ON ((flrptqt.flrpt_type=flrpt.flrpt_type) AND (flrptqt.flrpt_order=flrpt.flrpt_order) AND (flrptqt.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptqt.flrpt_period_id=flrpt.flrpt_period_id) AND (flrptqt.flrpt_interval=_qtrInterval) AND (flrptqt.flrpt_username=flrpt.flrpt_username)) LEFT OUTER JOIN flrpt flrptyr ON ((flrptyr.flrpt_type=flrpt.flrpt_type) AND (flrptyr.flrpt_order=flrpt.flrpt_order) AND (flrptyr.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptyr.flrpt_period_id=flrpt.flrpt_period_id) AND (flrptyr.flrpt_interval=_yrInterval) AND (flrptyr.flrpt_username=flrpt.flrpt_username)) LEFT OUTER JOIN flrpt flrptprmo ON ((flrptprmo.flrpt_type=flrpt.flrpt_type) AND (flrptprmo.flrpt_order=flrpt.flrpt_order) AND (flrptprmo.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptprmo.flrpt_period_id=_priorMoPeriodId) AND (flrptprmo.flrpt_interval='M') AND (flrptprmo.flrpt_username=flrpt.flrpt_username)) LEFT OUTER JOIN flrpt flrptprqt ON ((flrptprqt.flrpt_type=flrpt.flrpt_type) AND (flrptprqt.flrpt_order=flrpt.flrpt_order) AND (flrptprqt.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptprqt.flrpt_period_id=_priorQtPeriodId) AND (flrptprqt.flrpt_interval='Q') AND (flrptprqt.flrpt_username=flrpt.flrpt_username)) LEFT OUTER JOIN flrpt flrptpryr ON ((flrptpryr.flrpt_type=flrpt.flrpt_type) AND (flrptpryr.flrpt_order=flrpt.flrpt_order) AND (flrptpryr.flrpt_flhead_id=flrpt.flrpt_flhead_id) AND (flrptpryr.flrpt_period_id=_priorYrPeriodId) AND (flrptpryr.flrpt_interval='Y') AND (flrptpryr.flrpt_username=flrpt.flrpt_username)) WHERE (flhead_id=flrpt.flrpt_flhead_id) ORDER BY flstmtitem_order LOOP IF _prevlevel > _x.flstmtitem_level THEN _subgrp := _subgrp+1; END IF; _prevlevel:=_x.flstmtitem_level; _row.flstmtitem_subgrp := _subgrp; IF NOT _first THEN RETURN NEXT _row; END IF; _first := FALSE; _row.flstmtitem_flhead_id := _x.flstmtitem_flhead_id; _row.flstmtitem_period_id := _x.flstmtitem_period_id; _row.flstmtitem_username := _x.flstmtitem_username; _row.flstmtitem_order := _x.flstmtitem_order; _row.flstmtitem_level := _x.flstmtitem_level; _row.flstmtitem_type := _x.flstmtitem_type; _row.flstmtitem_type_id := _x.flstmtitem_type_id; _row.flstmtitem_parent_id := _x.flstmtitem_parent_id; _row.flstmtitem_accnt_id := _x.flstmtitem_accnt_id; _row.flstmtitem_name := _x.flstmtitem_name; _row.flstmtitem_month := _x.flstmtitem_month; _row.flstmtitem_monthdb := _x.flstmtitem_monthdb; _row.flstmtitem_monthcr := _x.flstmtitem_monthcr; _row.flstmtitem_monthprcnt := _x.flstmtitem_monthprcnt; _row.flstmtitem_monthbudget := _x.flstmtitem_monthbudget; _row.flstmtitem_monthbudgetprcnt := _x.flstmtitem_monthbudgetprcnt; _row.flstmtitem_monthbudgetdiff := _x.flstmtitem_monthbudgetdiff; _row.flstmtitem_monthbudgetdiffprcnt := _x.flstmtitem_monthbudgetdiffprcnt; _row.flstmtitem_qtr := _x.flstmtitem_qtr; _row.flstmtitem_qtrdb := _x.flstmtitem_qtrdb; _row.flstmtitem_qtrcr := _x.flstmtitem_qtrcr; _row.flstmtitem_qtrprcnt := _x.flstmtitem_qtrprcnt; _row.flstmtitem_qtrbudget := _x.flstmtitem_qtrbudget; _row.flstmtitem_qtrbudgetprcnt := _x.flstmtitem_qtrbudgetprcnt; _row.flstmtitem_qtrbudgetdiff := _x.flstmtitem_qtrbudgetdiff; _row.flstmtitem_qtrbudgetdiffprcnt := _x.flstmtitem_qtrbudgetdiffprcnt; _row.flstmtitem_year := _x.flstmtitem_year; _row.flstmtitem_yeardb := _x.flstmtitem_yeardb; _row.flstmtitem_yearcr := _x.flstmtitem_yearcr; _row.flstmtitem_yearprcnt := _x.flstmtitem_yearprcnt; _row.flstmtitem_yearbudget := _x.flstmtitem_yearbudget; _row.flstmtitem_yearbudgetprcnt := _x.flstmtitem_yearbudgetprcnt; _row.flstmtitem_yearbudgetdiff := _x.flstmtitem_yearbudgetdiff; _row.flstmtitem_yearbudgetdiffprcnt := _x.flstmtitem_yearbudgetdiffprcnt; _row.flstmtitem_prmonth := _x.flstmtitem_prmonth; _row.flstmtitem_prmonthprcnt := _x.flstmtitem_prmonthprcnt; _row.flstmtitem_prmonthdiff := _x.flstmtitem_prmonthdiff; _row.flstmtitem_prmonthdiffprcnt := _x.flstmtitem_prmonthdiffprcnt; _row.flstmtitem_prqtr := _x.flstmtitem_prqtr; _row.flstmtitem_prqtrprcnt := _x.flstmtitem_prqtrprcnt; _row.flstmtitem_prqtrdiff := _x.flstmtitem_prqtrdiff; _row.flstmtitem_prqtrdiffprcnt := _x.flstmtitem_prqtrdiffprcnt; _row.flstmtitem_pryear := _x.flstmtitem_pryear; _row.flstmtitem_pryearprcnt := _x.flstmtitem_pryearprcnt; _row.flstmtitem_pryeardiff := _x.flstmtitem_pryeardiff; _row.flstmtitem_pryeardiffprcnt := _x.flstmtitem_pryeardiffprcnt; END LOOP; _row.flstmtitem_subgrp := _subgrp + 1; RETURN NEXT _row; END; $_$; SDROP FUNCTION public.financialreport(integer, integer, boolean, boolean, integer); publicadminfalse82583399212551691748findapaccount(integer)FUNCTION\CREATE FUNCTION findapaccount(integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; _accntid INTEGER; BEGIN IF (NOT fetchMetricBool('InterfaceAPToGL')) THEN RETURN 0; END IF; SELECT apaccnt_ap_accnt_id INTO _accntid FROM apaccnt JOIN vendinfo ON (apaccnt_vendtype_id=vend_vendtype_id) WHERE (vend_id=pVendid); IF (FOUND) THEN RETURN _accntid; END IF; SELECT apaccnt_ap_accnt_id INTO _accntid FROM apaccnt JOIN vendtype ON (vendtype_code ~ apaccnt_vendtype) JOIN vendinfo ON (vend_vendtype_id=vendtype_id) WHERE ((apaccnt_vendtype_id=-1) AND (vend_id=pVendid)); IF (FOUND) THEN RETURN _accntid; END IF; RETURN -1; END; $_$; -DROP FUNCTION public.findapaccount(integer); publicadminfalse83992 12551691749findapdiscountaccount(integer)FUNCTIONiCREATE FUNCTION findapdiscountaccount(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; _accntid INTEGER; BEGIN IF (NOT fetchMetricBool('InterfaceAPToGL')) THEN RETURN 0; END IF; SELECT apaccnt_discount_accnt_id INTO _accntid FROM apaccnt JOIN vendinfo ON (apaccnt_vendtype_id=vend_vendtype_id) WHERE (vend_id=pVendid); IF (FOUND) THEN RETURN _accntid; END IF; SELECT apaccnt_discount_accnt_id INTO _accntid FROM apaccnt JOIN vendtype ON (vendtype_code ~ apaccnt_vendtype) JOIN vendinfo ON (vend_vendtype_id=vendtype_id) WHERE ((apaccnt_vendtype_id=-1) AND (vend_id=pVendid)); IF (FOUND) THEN RETURN _accntid; END IF; RETURN -1; END; $_$; 5DROP FUNCTION public.findapdiscountaccount(integer); publicadminfalse8399212551691750findapprepaidaccount(integer)FUNCTIONCREATE FUNCTION findapprepaidaccount(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; _accntid INTEGER; BEGIN IF (NOT fetchMetricBool('InterfaceAPToGL')) THEN RETURN 0; END IF; -- Check for a Vendor Type specific Account SELECT apaccnt_prepaid_accnt_id INTO _accntid FROM apaccnt JOIN vendinfo ON (apaccnt_vendtype_id=vend_vendtype_id) WHERE (vend_id=pVendid); IF (FOUND) THEN RETURN _accntid; END IF; -- Check for a Vendor Type pattern SELECT apaccnt_prepaid_accnt_id INTO _accntid FROM apaccnt JOIN vendtype ON (vendtype_code ~ apaccnt_vendtype) JOIN vendinfo ON (vend_vendtype_id=vendtype_id) WHERE ((apaccnt_vendtype_id=-1) AND (vend_id=pVendid)); IF (FOUND) THEN RETURN _accntid; END IF; RETURN -1; END; $_$; 4DROP FUNCTION public.findapprepaidaccount(integer); publicadminfalse8399212551691751findaraccount(integer)FUNCTIONCREATE FUNCTION findaraccount(integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; _accntid INTEGER; BEGIN IF (NOT fetchMetricBool('InterfaceARToGL')) THEN RETURN 0; END IF; -- Check for a Customer Type specific Account SELECT araccnt_ar_accnt_id INTO _accntid FROM araccnt, custinfo WHERE ( (araccnt_custtype_id=cust_custtype_id) AND (cust_id=pCustid) ); IF (FOUND) THEN RETURN _accntid; END IF; -- Check for a Customer Type pattern SELECT araccnt_ar_accnt_id INTO _accntid FROM araccnt, custinfo, custtype WHERE ( (custtype_code ~ araccnt_custtype) AND (araccnt_custtype_id=-1) AND (cust_custtype_id=custtype_id) AND (cust_id=pCustid) ); IF (FOUND) THEN RETURN _accntid; END IF; RETURN -1; END; $_$; -DROP FUNCTION public.findaraccount(integer); publicadminfalse8399212551691752findardiscountaccount(integer)FUNCTIONCREATE FUNCTION findardiscountaccount(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; _accntid INTEGER; BEGIN IF (NOT fetchMetricBool('InterfaceARToGL')) THEN RETURN 0; END IF; -- Check for a Customer Type specific Account SELECT araccnt_discount_accnt_id INTO _accntid FROM araccnt, custinfo WHERE ( (araccnt_custtype_id=cust_custtype_id) AND (cust_id=pCustid) ); IF (FOUND) THEN RETURN _accntid; END IF; -- Check for a Customer Type pattern SELECT araccnt_discount_accnt_id INTO _accntid FROM araccnt, custinfo, custtype WHERE ( (custtype_code ~ araccnt_custtype) AND (cust_custtype_id=custtype_id) AND (araccnt_custtype_id=-1) AND (cust_id=pCustid) ); IF (FOUND) THEN RETURN _accntid; END IF; RETURN -1; END; $_$; 5DROP FUNCTION public.findardiscountaccount(integer); publicadminfalse8399212551691753findcalendarorigin(integer)FUNCTIONKCREATE FUNCTION findcalendarorigin(integer) RETURNS date LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCalheadid ALIAS FOR $1; _originType CHAR(1); _origin DATE; BEGIN SELECT calhead_origin INTO _originType FROM calhead WHERE (calhead_id=pCalheadid); IF (NOT FOUND) THEN _origin := NULL; ELSIF (_originType = 'D') THEN _origin := CURRENT_DATE; ELSIF (_originType = 'E') THEN _origin := (CURRENT_DATE + 1); ELSIF (_originType = 'W') THEN _origin := (CURRENT_DATE - EXTRACT(DOW FROM CURRENT_DATE)::INTEGER); ELSIF (_originType = 'X') THEN _origin := ((CURRENT_DATE - EXTRACT(DOW FROM CURRENT_DATE)::INTEGER) + INTERVAL '1 week'); ELSIF (_originType = 'M') THEN _origin := date_trunc('month', CURRENT_DATE); ELSIF (_originType = 'N') THEN _origin := (date_trunc('month', CURRENT_DATE) + INTERVAL '1 month'); ELSIF (_originType = 'L') THEN _origin := (date_trunc('year', CURRENT_DATE) - INTERVAL '1 year'); ELSIF (_originType = 'Y') THEN _origin := date_trunc('year', CURRENT_DATE); ELSIF (_originType = 'Z') THEN _origin := (date_trunc('year', CURRENT_DATE) + INTERVAL '1 year'); ELSE _origin := NULL; END IF; RETURN _origin; END; $_$; 2DROP FUNCTION public.findcalendarorigin(integer); publicadminfalse8399212551691754$findcustomerform(integer, character)FUNCTIONUCREATE FUNCTION findcustomerform(integer, character) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; pFormtype ALIAS FOR $2; _f RECORD; _found BOOLEAN; BEGIN -- Check for a Customer Type specific Form SELECT custform.* INTO _f FROM custform JOIN custinfo ON (custform_custtype_id=cust_custtype_id) WHERE (cust_id=pCustid); IF (FOUND) THEN _found := TRUE; ELSE -- Check for a Customer Type pattern SELECT custform.* INTO _f FROM custform JOIN custtype ON (custtype_code ~ custform_custtype) JOIN custinfo ON (cust_custtype_id=custtype_id) WHERE ((custform_custtype_id=-1) AND (cust_id=pCustid)); IF (FOUND) THEN _found := TRUE; ELSE _found := FALSE; END IF; END IF; IF (_found) THEN IF ( (pFormType = 'I') AND (_f.custform_invoice_report_name IS NOT NULL) ) THEN RETURN _f.custform_invoice_report_name; ELSIF ( (pFormType = 'C') AND (_f.custform_creditmemo_report_name IS NOT NULL) ) THEN RETURN _f.custform_creditmemo_report_name; ELSIF ( (pFormType = 'S') AND (_f.custform_statement_report_name IS NOT NULL) ) THEN RETURN _f.custform_statement_report_name; ELSIF ( (pFormType = 'Q') AND (_f.custform_quote_report_name IS NOT NULL) ) THEN RETURN _f.custform_quote_report_name; ELSIF ( (pFormType = 'P') AND (_f.custform_packinglist_report_name IS NOT NULL) ) THEN RETURN _f.custform_packinglist_report_name; ELSIF ( (pFormType = 'L') AND (_f.custform_sopicklist_report_name IS NOT NULL) ) THEN RETURN _f.custform_sopicklist_report_name; END IF; END IF; IF (pFormType = 'I') THEN RETURN 'Invoice'; ELSIF (pFormType = 'C') THEN RETURN 'CreditMemo'; ELSIF (pFormType = 'S') THEN RETURN 'Statement'; ELSIF (pFormType = 'Q') THEN RETURN 'Quote'; ELSIF (pFormType = 'P') THEN RETURN 'PackingList-Shipment'; ELSIF (pFormType = 'L') THEN RETURN 'PackingList'; END IF; END; $_$; ;DROP FUNCTION public.findcustomerform(integer, character); publicadminfalse8399212551691755finddeferredaccount(integer)FUNCTIONCREATE FUNCTION finddeferredaccount(integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; _accntid INTEGER; BEGIN IF (NOT fetchMetricBool('InterfaceARToGL')) THEN RETURN 0; END IF; -- Check for a Customer Type specific Account SELECT araccnt_deferred_accnt_id INTO _accntid FROM araccnt JOIN custinfo ON (araccnt_custtype_id=cust_custtype_id) WHERE (cust_id=pCustid); IF (FOUND) THEN RETURN _accntid; END IF; -- Check for a Customer Type pattern SELECT araccnt_deferred_accnt_id INTO _accntid FROM araccnt JOIN custtype ON (custtype_code ~ araccnt_custtype) JOIN custinfo ON (cust_custtype_id=custtype_id) WHERE ((araccnt_custtype_id=-1) AND (cust_id=pCustid)); IF (FOUND) THEN RETURN _accntid; END IF; RETURN -1; END; $_$; 3DROP FUNCTION public.finddeferredaccount(integer); publicadminfalse8399212551691756findfreightaccount(integer)FUNCTIONWCREATE FUNCTION findfreightaccount(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; _accntid INTEGER; BEGIN IF (NOT fetchMetricBool('InterfaceARToGL')) THEN RETURN 0; END IF; -- Check for a Customer Type specific Account SELECT araccnt_freight_accnt_id INTO _accntid FROM araccnt, custinfo WHERE ( (araccnt_custtype_id=cust_custtype_id) AND (cust_id=pCustid) ); IF (FOUND) THEN RETURN _accntid; END IF; -- Check for a Customer Type pattern SELECT araccnt_freight_accnt_id INTO _accntid FROM araccnt, custinfo, custtype WHERE ( (custtype_code ~ araccnt_custtype) AND (cust_custtype_id=custtype_id) AND (araccnt_custtype_id=-1) AND (cust_id=pCustid) ); IF (FOUND) THEN RETURN _accntid; END IF; -- Find the default SELECT metric_value::INTEGER INTO _accntid FROM metric WHERE (metric_name='FreightAccount'); IF (FOUND) THEN RETURN _accntid; END IF; RETURN -1; END; $_$; 2DROP FUNCTION public.findfreightaccount(integer); publicadminfalse8399212551691757findperiodend(integer)FUNCTIONM CREATE FUNCTION findperiodend(integer) RETURNS date LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCalitemid ALIAS FOR $1; _calType CHAR(1); _calItem RECORD; _start DATE; _loop INTEGER; BEGIN SELECT calhead_type INTO _calType FROM calhead, acalitem WHERE ((acalitem_calhead_id=calhead_id) AND (acalitem_id=pCalitemid)); IF (NOT FOUND) THEN SELECT calhead_type INTO _calType FROM calhead, rcalitem WHERE ((rcalitem_calhead_id=calhead_id) AND (rcalitem_id=pCalitemid)); IF (NOT FOUND) THEN RETURN NULL; END IF; END IF; IF (_calType = 'A') THEN RETURN ( SELECT (findPeriodStart(acalitem_id) + acalitem_periodlength - 1) FROM acalitem WHERE (acalitem_id=pCalitemid) ); ELSIF (_calType = 'R') THEN -- Grab the relative calitem's particulars SELECT rcalitem_periodtype, rcalitem_periodcount INTO _calitem FROM rcalitem WHERE (rcalitem_id=pCalitemid); IF (NOT FOUND) THEN RETURN NULL; END If; -- Grab the origin of the calitem SELECT findPeriodStart(pCalitemid) INTO _start; IF (_start IS NULL) THEN -- If days... ELSIF (_calitem.rcalitem_periodtype = 'D') THEN _start := (_start + _calitem.rcalitem_periodcount - 1); -- If weeks... (gotta be a better way) ELSIF (_calitem.rcalitem_periodtype = 'W') THEN _loop := _calitem.rcalitem_periodcount; WHILE (_loop > 0) LOOP _start := (_start + INTERVAL '1 week'); _loop := (_loop - 1); END LOOP; _start := (_start - 1); -- If months... (gotta be a better way) ELSIF (_calitem.rcalitem_periodtype = 'M') THEN _loop := _calitem.rcalitem_periodcount; WHILE (_loop > 0) LOOP _start := (_start + INTERVAL '1 month'); _loop := (_loop - 1); END LOOP; _start := (_start - 1); -- If years... (gotta be a better way) ELSIF (_calitem.rcalitem_periodtype = 'Y') THEN _loop := _calitem.rcalitem_periodcount; WHILE (_loop > 0) LOOP _start := (_start + INTERVAL '1 year'); _loop := (_loop - 1); END LOOP; _start := (_start - 1); ELSE _start := NULL; END IF; ELSE _start := NULL; END IF; RETURN _start; END; $_$; -DROP FUNCTION public.findperiodend(integer); publicadminfalse83992&12551691758findperiodstart(integer)FUNCTION CREATE FUNCTION findperiodstart(integer) RETURNS date LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCalitemid ALIAS FOR $1; _calType CHAR(1); _calItem RECORD; _start DATE; _loop INTEGER; BEGIN SELECT calhead_type INTO _calType FROM calhead, acalitem WHERE ((acalitem_calhead_id=calhead_id) AND (acalitem_id=pCalitemid)); IF (NOT FOUND) THEN SELECT calhead_type INTO _calType FROM calhead, rcalitem WHERE ((rcalitem_calhead_id=calhead_id) AND (rcalitem_id=pCalitemid)); IF (NOT FOUND) THEN RETURN NULL; END IF; END IF; IF (_calType = 'A') THEN RETURN ( SELECT acalitem_periodstart FROM acalitem WHERE (acalitem_id=pCalitemid) ); ELSIF (_calType = 'R') THEN -- Grab the relative calitem's particulars SELECT rcalitem_offsettype, rcalitem_offsetcount INTO _calitem FROM rcalitem WHERE (rcalitem_id=pCalitemid); IF (NOT FOUND) THEN RETURN NULL; END If; -- Grab the origin of the calitem's parend calhead SELECT findCalendarOrigin(calhead_id) INTO _start FROM calhead, rcalitem WHERE ((rcalitem_calhead_id=calhead_id) AND (rcalitem_id=pCalitemid)); -- If days... IF (_calitem.rcalitem_offsettype = 'D') THEN _start := (_start + _calitem.rcalitem_offsetcount); -- If weeks... ELSIF (_calitem.rcalitem_offsettype = 'W') THEN _start := (_start + (_calitem.rcalitem_offsetcount * 7)); -- If months... (gotta be a better way) ELSIF (_calitem.rcalitem_offsettype = 'M') THEN _loop := _calitem.rcalitem_offsetcount; IF (_loop > 0) THEN WHILE (_loop > 0) LOOP _start := (_start + INTERVAL '1 month'); _loop := _loop - 1; END LOOP; ELSE WHILE (_loop < 0) LOOP _start := (_start - INTERVAL '1 month'); _loop := _loop + 1; END LOOP; END IF; -- If years... (gotta be a better way) ELSIF (_calitem.rcalitem_offsettype = 'Y') THEN _loop := _calitem.rcalitem_offsetcount; IF (_loop > 0) THEN WHILE (_loop > 0) LOOP _start := (_start + INTERVAL '1 year'); _loop := _loop - 1; END LOOP; ELSE WHILE (_loop < 0) LOOP _start := (_start - INTERVAL '1 year'); _loop := _loop + 1; END LOOP; END IF; ELSE _start := NULL; END IF; ELSE _start := NULL; END IF; RETURN _start; END; $_$; /DROP FUNCTION public.findperiodstart(integer); publicadminfalse83992I12551691759findprepaidaccount(integer)FUNCTIONCREATE FUNCTION findprepaidaccount(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; _accntid INTEGER; BEGIN IF (NOT fetchMetricBool('InterfaceARToGL')) THEN RETURN 0; END IF; -- Check for a Customer Type specific Account SELECT araccnt_prepaid_accnt_id INTO _accntid FROM araccnt JOIN custinfo ON (araccnt_custtype_id=cust_custtype_id) WHERE (cust_id=pCustid); IF (FOUND) THEN RETURN _accntid; END IF; -- Check for a Customer Type pattern SELECT araccnt_prepaid_accnt_id INTO _accntid FROM araccnt JOIN custtype ON (custtype_code ~ araccnt_custtype) JOIN custinfo ON (cust_custtype_id=custtype_id) WHERE ((araccnt_custtype_id=-1) AND (cust_id=pCustid) ); IF (FOUND) THEN RETURN _accntid; END IF; RETURN -1; END; $_$; 2DROP FUNCTION public.findprepaidaccount(integer); publicadminfalse83992J12551691760 findsalesaccnt(integer, integer)FUNCTION$CREATE FUNCTION findsalesaccnt(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN findSalesAccnt($1, 'IS', $2, NULL, NULL); END; $_$; 7DROP FUNCTION public.findsalesaccnt(integer, integer); publicadminfalse83992M12551691761&findsalesaccnt(integer, text, integer)FUNCTION(CREATE FUNCTION findsalesaccnt(integer, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN findSalesAccnt($1, $2, $3, NULL, NULL); END; $_$; =DROP FUNCTION public.findsalesaccnt(integer, text, integer); publicadminfalse83992O125517467428findsalesaccnt(integer, text, integer, integer, integer)FUNCTION CREATE FUNCTION findsalesaccnt(pid integer, pidtype text, pcustid integer, psaletypeid integer, pshipzoneid integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _s RECORD; BEGIN IF (pidType = 'I') THEN -- Check for a custtype specific rule SELECT salesaccnt_id, CASE WHEN (salesaccnt_warehous_id<>-1) THEN 1 ELSE 0 END + CASE WHEN (salesaccnt_custtype_id<>-1) THEN 2 ELSE 0 END + CASE WHEN (salesaccnt_prodcat_id<>-1) THEN 3 ELSE 0 END + CASE WHEN (salesaccnt_shipzone_id<>-1) THEN 4 ELSE 0 END + CASE WHEN (salesaccnt_saletype_id<>-1) THEN 5 ELSE 0 END AS orderby INTO _s FROM salesaccnt, item, prodcat, custinfo, custtype WHERE ( (salesaccnt_warehous_id=-1) AND (item_prodcat_id=prodcat_id) AND (cust_custtype_id=custtype_id) AND ( (salesaccnt_prodcat='.*') OR ( (salesaccnt_prodcat_id=-1) AND (salesaccnt_prodcat<>'') AND (prodcat_code ~ salesaccnt_prodcat) ) OR ( (salesaccnt_prodcat_id=prodcat_id) ) ) AND ( (salesaccnt_custtype='.*') OR ( (salesaccnt_custtype_id=-1) AND (salesaccnt_custtype<>'') AND (custtype_code ~ salesaccnt_custtype) ) OR ( (salesaccnt_custtype_id=custtype_id) ) ) AND ( (salesaccnt_shipzone_id=-1) OR (salesaccnt_shipzone_id=pShipzoneid) ) AND ( (salesaccnt_saletype_id=-1) OR (salesaccnt_saletype_id=pSaletypeid) ) AND (item_id=pid) AND (cust_id=pCustid) ) ORDER BY orderby DESC, salesaccnt_custtype DESC, salesaccnt_prodcat DESC, salesaccnt_saletype_id DESC, salesaccnt_shipzone_id DESC LIMIT 1; ELSIF (pidType = 'IS') THEN -- Check for a custtype specific rule SELECT salesaccnt_id, CASE WHEN (salesaccnt_warehous_id<>-1) THEN 1 ELSE 0 END + CASE WHEN (salesaccnt_custtype_id<>-1) THEN 2 ELSE 0 END + CASE WHEN (salesaccnt_prodcat_id<>-1) THEN 3 ELSE 0 END + CASE WHEN (salesaccnt_shipzone_id<>-1) THEN 4 ELSE 0 END + CASE WHEN (salesaccnt_saletype_id<>-1) THEN 5 ELSE 0 END AS orderby INTO _s FROM salesaccnt, itemsite, item, prodcat, custinfo, custtype WHERE ( ( (salesaccnt_warehous_id=-1) OR (salesaccnt_warehous_id=itemsite_warehous_id) ) AND (itemsite_item_id=item_id) AND (item_prodcat_id=prodcat_id) AND (cust_custtype_id=custtype_id) AND ( (salesaccnt_prodcat='.*') OR ( (salesaccnt_prodcat_id=-1) AND (salesaccnt_prodcat<>'') AND (prodcat_code ~ salesaccnt_prodcat) ) OR ( (salesaccnt_prodcat_id=prodcat_id) ) ) AND ( (salesaccnt_custtype='.*') OR ( (salesaccnt_custtype_id=-1) AND (salesaccnt_custtype<>'') AND (custtype_code ~ salesaccnt_custtype) ) OR ( (salesaccnt_custtype_id=custtype_id) ) ) AND ( (salesaccnt_shipzone_id=-1) OR (salesaccnt_shipzone_id=pShipzoneid) ) AND ( (salesaccnt_saletype_id=-1) OR (salesaccnt_saletype_id=pSaletypeid) ) AND (itemsite_id=pid) AND (cust_id=pCustid) ) ORDER BY orderby DESC, salesaccnt_custtype DESC, salesaccnt_prodcat DESC, salesaccnt_warehous_id DESC, salesaccnt_saletype_id DESC, salesaccnt_shipzone_id DESC LIMIT 1; ELSE RETURN -2; -- invalid pidType END IF; IF (FOUND) THEN RETURN _s.salesaccnt_id; END IF; RETURN -1; END; $$; {DROP FUNCTION public.findsalesaccnt(pid integer, pidtype text, pcustid integer, psaletypeid integer, pshipzoneid integer); publicadminfalse83992m12551691762)findspecialfinancial(text, text, integer)FUNCTIONCREATE FUNCTION findspecialfinancial(text, text, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUnit ALIAS FOR $1; pType ALIAS FOR $2; pPeriodid ALIAS FOR $3; _value NUMERIC; BEGIN _value := 0.00; IF ('OpenAR' = pType) THEN IF ( pUnit IN ('D','E') ) THEN SELECT SUM( CASE WHEN (aropen_doctype IN ('C', 'R')) THEN ((aropen_amount - aropen_paid) * -1) ELSE (aropen_amount - aropen_paid) END ) INTO _value FROM aropen, period WHERE ((aropen_open) AND (aropen_duedate BETWEEN period_start AND period_end) AND (period_id=pPeriodid)); IF ('E' = pUnit) THEN _value := 0.00 - _value; END IF; END IF; END IF; IF ('OpenAP' = pType) THEN IF ( pUnit IN ('C','E') ) THEN SELECT SUM( CASE WHEN (apopen_doctype='C') THEN ((apopen_amount - apopen_paid) * -1) ELSE (apopen_amount - apopen_paid) END ) INTO _value FROM apopen, period WHERE ((apopen_open) AND (apopen_duedate BETWEEN period_start AND period_end) AND (period_id=pPeriodid)); END IF; END IF; RETURN _value; END; $_$; @DROP FUNCTION public.findspecialfinancial(text, text, integer); publicadminfalse8399212551691763!first_agg(anyelement, anyelement)FUNCTIONCREATE FUNCTION first_agg(anyelement, anyelement) RETURNS anyelement LANGUAGE sql STABLE AS $_$ SELECT CASE WHEN $1 IS NULL THEN $2 ELSE $1 END; $_$; 8DROP FUNCTION public.first_agg(anyelement, anyelement); publicadminfalse812551691764firstline(text)FUNCTIONCREATE FUNCTION firstline(text) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSource ALIAS FOR $1; _result TEXT := ''; BEGIN SELECT regexp_replace(pSource, E'^(\r?\n)*([^\r\n]*)\r?\n.*', E'\\2') INTO _result; RETURN _result; END; $_$; &DROP FUNCTION public.firstline(text); publicadminfalse8399212551691765fixacl()FUNCTIONCREATE FUNCTION fixacl() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; _count INTEGER := 0; _oldgrp BOOLEAN := false; _objtype TEXT; _table TEXT; _schema TEXT; BEGIN IF EXISTS(SELECT 1 FROM pg_group WHERE groname = 'openmfg') THEN _oldgrp := true; END IF; FOR _r IN SELECT relname, nspname, relkind, CASE relkind WHEN 'r' THEN 1 WHEN 'v' THEN 2 WHEN 'S' THEN 3 ELSE 4 END AS seq FROM pg_catalog.pg_class c, pg_namespace n WHERE ((n.oid=c.relnamespace) AND (nspname in ('public', 'api') OR nspname in (SELECT pkghead_name FROM pkghead)) AND (relkind in ('S', 'r', 'v'))) ORDER BY seq LOOP _schema := quote_ident(_r.nspname); _table := quote_ident(_r.relname); RAISE DEBUG '%.%', _schema, _table; IF (_oldgrp) THEN EXECUTE 'REVOKE ALL ON ' || _schema || '.' || _table || ' FROM openmfg;'; END IF; EXECUTE 'REVOKE ALL ON ' || _schema || '.' || _table || ' FROM PUBLIC;'; EXECUTE 'GRANT ALL ON ' || _schema || '.' || _table || ' TO GROUP xtrole;'; _count := _count + 1; _objtype := CASE _r.relkind WHEN 'S' THEN 'SEQUENCE' WHEN 'r' THEN 'TABLE' WHEN 'v' THEN 'VIEW' ELSE NULL END; IF (_objtype IS NOT NULL) THEN BEGIN EXECUTE 'ALTER ' || _objtype || ' ' || _schema || '.' || _table || ' OWNER TO admin;'; EXCEPTION WHEN OTHERS THEN RAISE WARNING 'Could not change ownership of %.% to admin', _schema, _table; END; END IF; END LOOP; RETURN _count; END; $$; DROP FUNCTION public.fixacl(); publicadminfalse83992P12552008380'formatabachecks(integer, integer, text)FUNCTIONT1CREATE FUNCTION formatabachecks(integer, integer, text) RETURNS SETOF achline LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pbankaccntid ALIAS FOR $1; -- all unprinted checks for this bankaccnt pcheckheadid ALIAS FOR $2; -- but if 2nd arg not null then just 1 check penckey ALIAS FOR $3; _bank RECORD; _batchcount INTEGER := 0; _batchdate DATE; _check RECORD; _vendnumber TEXT; _vendname TEXT; _filenum TEXT; _prevsec TEXT; _row achline%ROWTYPE; _totalcr NUMERIC := 0; _totaldb NUMERIC := 0; _detailcount INTEGER := 0; -- count of type 1 entries _vendbsb TEXT; BEGIN -- General notes: -- Numeric values are formatted using RPAD(TO_CHAR(#, '0..0SG', #)). -- TO_CHAR(#, ...) (at least in the default server locale) puts a space at -- the beginning of the string for numbers >= 0 and '-' for numbers < 0. -- 'SG' pushes the sign char to the end, then RPAD cuts it off. -- This whole thing is for Australian bank transactions only, and generates entries for an ABA file. -- Currently restricted to checks to Vendor; there's no support for checks to -- customers or tax authorities, or for debits or corrections. -- This function has been adapted from the US-centric ACH formatACHChecks function. IF (NOT fetchMetricBool('ACHEnabled')) THEN RAISE EXCEPTION 'Cannot format the ABA file because the system is not configured for ABA file generation.'; END IF; IF (LENGTH(COALESCE(penckey, '')) <= 0) THEN RAISE EXCEPTION 'Cannot format the ABA file because there is no encryption key.'; END IF; SELECT * INTO _bank FROM bankaccnt WHERE (bankaccnt_id=pbankaccntid); IF (NOT FOUND) THEN RAISE EXCEPTION 'Could not find the bank information to create the ABA file.'; ELSIF (NOT _bank.bankaccnt_ach_enabled) THEN RAISE EXCEPTION 'Cannot format the ABA file because the Bank Account % is not configured for ABA transactions.', _bank.bankaccnt_name; ELSIF (LENGTH(COALESCE(_bank.bankaccnt_routing, '')) <= 0) THEN RAISE EXCEPTION 'Cannot format the ABA file because the Bank Account % has no BSB number.', _bank.bankaccnt_name; END IF; -- Check the BSB number is in the right format and then re-format for output. -- Valid format is \d{3}-\d{3}|\d{6}000 IF (_bank.bankaccnt_routing ~ E'^(\\d{3})(?:-(?=\\d{3}$)|(?=\\d{3}0{3}$))(\\d{3})(0{3})?$') THEN _bank.bankaccnt_routing := regexp_replace( _bank.bankaccnt_routing, E'^(\\d{3})(?:-(?=\\d{3}$)|(?=\\d{3}0{3}$))(\\d{3})(0{3})?$', E'\\1-\\2' ); ELSE RAISE EXCEPTION 'Cannot format the ABA file because the Bank Account % has an invalid BSB number.', _bank.bankaccnt_name; END IF; _filenum := LPAD(fetchNextNumber('ACHBatch'), 8, '0'); IF (COALESCE(_bank.bankaccnt_ach_lastdate,startOfTime()) < CURRENT_DATE OR _bank.bankaccnt_ach_lastfileid IS NULL) THEN _bank.bankaccnt_ach_lastfileid = '0'; ELSIF (_bank.bankaccnt_ach_lastfileid = '9') THEN _bank.bankaccnt_ach_lastfileid = 'A'; ELSIF (_bank.bankaccnt_ach_lastfileid = 'Z') THEN RAISE EXCEPTION 'Cannot write % check % to an ABA file because too many files have been written for this bank already today.', _bank.bankaccnt_name, _check.checkhead_number; ELSE _bank.bankaccnt_ach_lastfileid = CHR(ASCII(_bank.bankaccnt_ach_lastfileid) + 1); END IF; _row.achline_checkhead_id := NULL; _row.achline_batch := _filenum; _row.achline_type := 'HEADER'; _row.achline_value := RPAD( RPAD('0',18) -- Record Type 0 blank filled with 17 spaces || '01' -- Reel sequence number || RPAD(_bank.bankaccnt_bankname,3) -- Approved financial instition abbreviation. || RPAD('',7) -- blank filled || RPAD(fetchMetricText('ACHCompanyName'), 26) -- Name of user supplying ABA file || LPAD(fetchMetricText('ACHCompanyId'),6) -- User identification number APCA issued || RPAD('PAYMENT',12) -- description of entries on file -- currently only use payment description || TO_CHAR(CURRENT_DATE, 'DDMMYY'), -- date to be processed 120 -- blank filled to 120 characters ); RETURN NEXT _row; FOR _check IN SELECT * FROM checkhead JOIN vendinfo ON (checkhead_recip_type='V' AND checkhead_recip_id=vend_id AND vend_ach_enabled) JOIN curr_symbol ON (checkhead_curr_id=curr_id) LEFT OUTER JOIN crmacct ON (crmacct_vend_id=vend_id) WHERE ((checkhead_bankaccnt_id=pbankaccntid) AND (checkhead_amount > 0) AND (checkhead_id=pcheckheadid OR pcheckheadid IS NULL) AND NOT checkhead_posted AND NOT checkhead_replaced AND NOT checkhead_deleted AND NOT checkhead_void AND NOT checkhead_printed AND (LENGTH(COALESCE(checkhead_ach_batch,'')) <= 0) AND (curr_abbr='AUD')) ORDER BY checkhead_checkdate, vend_name LOOP IF (COALESCE(_check.checkhead_number, -1) <= 0 AND _bank.bankaccnt_ach_genchecknum) THEN _check.checkhead_number := fetchNextCheckNumber(_check.checkhead_bankaccnt_id); END IF; -- Although a crmacct record is not required for used in this function -- this code is retained for consistancy with the original formatachchecks function. IF (_check.crmacct_id IS NULL) THEN RAISE NOTICE 'Vendor % does not have a corresponding crmacct record.', _check.checkhead_recip_id; ELSIF (_check.crmacct_type IS NULL) THEN RAISE NOTICE 'crmacct for vendor % does not have a valid crmacct_type.', _check.checkhead_recip_id; END IF; _vendnumber := CASE WHEN _check.vend_ach_use_vendinfo THEN _check.vend_number ELSE _check.vend_ach_indiv_number END; _vendname := CASE WHEN _check.vend_ach_use_vendinfo THEN _check.vend_name ELSE _check.vend_ach_indiv_name END; IF (COALESCE(_check.vend_ach_routingnumber, '') = '') THEN RAISE EXCEPTION 'Cannot write % check % to an ABA file because the BSB number for % has not been supplied.', _bank.bankaccnt_name, _check.checkhead_number, _vendnumber; ELSIF (COALESCE(_check.vend_ach_accntnumber, '') = '') THEN RAISE EXCEPTION 'Cannot write % check % to an ABA file because the account number for % has not been supplied.', _bank.bankaccnt_name, _check.checkhead_number, _vendnumber; END IF; _check.vend_ach_routingnumber := decrypt(setbytea(_check.vend_ach_routingnumber), setbytea(penckey), 'bf'); _check.vend_ach_accntnumber := decrypt(setbytea(_check.vend_ach_accntnumber), setbytea(penckey), 'bf'); -- Check the BSB number is in the right format and then re-format for output. -- Valid format is \d{3}-\d{3}|\d{6}000 IF (formatbytea(_check.vend_ach_routingnumber) ~ E'^(\\d{3})(?:-(?=\\d{3}$)|(?=\\d{3}0{3}$))(\\d{3})(0{3})?$') THEN _vendbsb := regexp_replace( formatbytea(_check.vend_ach_routingnumber), E'^(\\d{3})(?:-(?=\\d{3}$)|(?=\\d{3}0{3}$))(\\d{3})(0{3})?$', E'\\1-\\2' ); ELSE RAISE EXCEPTION 'Cannot write % check % to an ABA file because the BSB number for % is not valid.', _bank.bankaccnt_name, _check.checkhead_number, _vendnumber; END IF; _row.achline_checkhead_id := _check.checkhead_id; _row.achline_batch := _filenum; _row.achline_type := 'DETAIL'; _totaldb := _totaldb + _check.checkhead_amount; -- Total debits for balancing entry _detailcount := _detailcount + 1; -- Detail record counter (type 1) _totalcr := _totalcr + _check.checkhead_amount; -- Total credits from payments _row.achline_value := RPAD('1' -- record type 1 || _vendbsb -- vendor BSB # || LPAD(formatbytea(_check.vend_ach_accntnumber), 9) -- vendor account no. ||' ' -- withholding tax indicator ||'50' -- transaction code, this should be calculated. || LPAD(to_char(_check.checkhead_amount,'FM99999999V99'),10,'0') -- amount || RPAD(_vendname, 32) -- vendor name || RPAD('Deposit',8) || RPAD('#' , 2) || LPAD (_filenum,8,' ') -- Lodgement Reference || _bank.bankaccnt_routing -- BSB # || RPAD(_bank.bankaccnt_accntnumber, 9) -- company account number || RPAD(fetchMetricText('ACHCompanyName'), 16) -- company account name || LPAD('', 8, '0'), -- Witholding Tax Amount 120 -- line width ); RETURN NEXT _row; UPDATE checkhead SET checkhead_ach_batch=_filenum, checkhead_number=_check.checkhead_number WHERE (checkhead_id=_check.checkhead_id); END LOOP; IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot write an ABA file for % because there are no checks pending in AUD for EFT-enabled Vendors.', _bank.bankaccnt_name; END IF; -- Place a final balancing detail record. -- Check that the balancing record actually balances. IF (_totalcr != _totaldb) THEN RAISE EXCEPTION 'Cannot write an ABA file for % because the total credits: % does not equal the total debits: %, file will not balance.', _bank.bankaccnt_name, _totalcr, _totaldb; END IF; _detailcount := _detailcount + 1; _row.achline_checkhead_id := NULL; _row.achline_batch := _filenum; _row.achline_type := 'BALANCING'; -- keep in sync with the other batchcontrol record format above -- THE FOLLOWING IS THE DEBIT BALANCING RECORD _row.achline_value := RPAD('1' -- record type 1 || _bank.bankaccnt_routing -- Austalian BSB # || LPAD(_bank.bankaccnt_accntnumber, 9) -- company account no. || ' ' -- withholding tax indicator || '13' -- transaction code || to_char(_totaldb,'FM09999999V99') -- the balancing amount || RPAD(fetchMetricText('ACHCompanyName'), 32) -- company name || RPAD('DIRECT DEPOSIT',18) || _bank.bankaccnt_routing -- Austalian BSB # || RPAD(_bank.bankaccnt_accntnumber, 9) -- company account number || RPAD(fetchMetricText('ACHCompanyName'), 16) -- company account name || LPAD('', 8, '0'), -- Witholding Tax Amount 120 -- line width ); RETURN NEXT _row; RAISE DEBUG 'formatABAChecks building TRAILER with _totaldb %, _totalcr %, _detailcount %', _totaldb, _totalcr, _detailcount; -- file control record _row.achline_checkhead_id := NULL; _row.achline_batch := _filenum; _row.achline_type := 'TRAILER'; _row.achline_value := RPAD('7' -- record type 7 || RPAD('999-999', 7) -- BSB format filler || RPAD('' , 12) -- blank || LPAD(to_char((_totaldb - _totalcr),'FM09999999V99'),10,'0') -- net total amount || LPAD(to_char(_totalcr, 'FM09999999V99'),10,'0') -- total credit amount || LPAD(to_char(_totaldb, 'FM09999999V99'),10,'0') -- total debit amount || RPAD('', 24) -- blank || RPAD(to_char(_detailcount, 'FM000000'), 6,'0'), -- count of type 1 records 120 -- blank fill ); RETURN NEXT _row; UPDATE bankaccnt SET bankaccnt_ach_lastdate=CURRENT_DATE, bankaccnt_ach_lastfileid=_bank.bankaccnt_ach_lastfileid WHERE (bankaccnt_id=_bank.bankaccnt_id); RETURN; END; $_$; >DROP FUNCTION public.formatabachecks(integer, integer, text); publicadminfalse839922571S12552008382'formatachchecks(integer, integer, text)FUNCTION~CCREATE FUNCTION formatachchecks(integer, integer, text) RETURNS SETOF achline LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pbankaccntid ALIAS FOR $1; -- all unprinted checks for this bankaccnt pcheckheadid ALIAS FOR $2; -- but if 2nd arg not null then just 1 check penckey ALIAS FOR $3; _bank RECORD; _batchcount INTEGER := 0; _batchcr NUMERIC := 0; _batchdate DATE; _batchdb NUMERIC := 0; _batchhash INTEGER := 0; _check RECORD; _ccdnumber TEXT; _ccdname TEXT; _entrycount INTEGER := 0; _filenum TEXT; _prevsec TEXT; _row achline%ROWTYPE; _rowcount INTEGER := 0; _sec TEXT; _serviceclass TEXT := '200'; -- 220 = credits, 225 = debits, 200 = mixed _totalcr NUMERIC := 0; _totaldb NUMERIC := 0; _totalentrycnt INTEGER := 0; _totalhash INTEGER := 0; _transactionprefix TEXT; BEGIN -- General notes: -- Numeric values are formatted using RPAD(TO_CHAR(#, '0..0SG', #)). -- TO_CHAR(#, ...) (at least in the default server locale) puts a space at -- the beginning of the string for numbers >= 0 and '-' for numbers < 0. -- 'SG' pushes the sign char to the end, then RPAD cuts it off. -- This whole thing is US-centric, as that's where the NACHA is. -- Currently restricted to checks to Vendor; there's no support for checks to -- customers or tax authorities, or for debits or corrections. IF (NOT fetchMetricBool('ACHEnabled')) THEN RAISE EXCEPTION 'Cannot format the ACH file because the system is not configured for ACH file generation.'; END IF; IF (LENGTH(COALESCE(penckey, '')) <= 0) THEN RAISE EXCEPTION 'Cannot format the ACH file because there is no encryption key.'; END IF; SELECT * INTO _bank FROM bankaccnt WHERE (bankaccnt_id=pbankaccntid); IF (NOT FOUND) THEN RAISE EXCEPTION 'Could not find the bank information to create the ACH file.'; ELSIF (NOT _bank.bankaccnt_ach_enabled) THEN RAISE EXCEPTION 'Cannot format the ACH file because the Bank Account % is not configured for ACH transactions.', _bank.bankaccnt_name; ELSIF (LENGTH(COALESCE(_bank.bankaccnt_routing, '')) <= 0) THEN RAISE EXCEPTION 'Cannot format the ACH file because the Bank Account % has no routing number.', _bank.bankaccnt_name; END IF; _filenum := LPAD(fetchNextNumber('ACHBatch'), 8, '0'); IF (COALESCE(_bank.bankaccnt_ach_lastdate,startOfTime()) < CURRENT_DATE OR _bank.bankaccnt_ach_lastfileid IS NULL) THEN _bank.bankaccnt_ach_lastfileid = '0'; ELSIF (_bank.bankaccnt_ach_lastfileid = '9') THEN _bank.bankaccnt_ach_lastfileid = 'A'; ELSIF (_bank.bankaccnt_ach_lastfileid = 'Z') THEN RAISE EXCEPTION 'Cannot write % check % to an ACH file because too many files have been written for this bank already today.', _bank.bankaccnt_name, _check.checkhead_number; ELSE _bank.bankaccnt_ach_lastfileid = CHR(ASCII(_bank.bankaccnt_ach_lastfileid) + 1); END IF; _rowcount := _rowcount + 1; _row.achline_checkhead_id := NULL; _row.achline_batch := _filenum; _row.achline_type := 'FILEHEADER'; _row.achline_value := RPAD('1' || '01' || RPAD(CASE WHEN _bank.bankaccnt_ach_desttype = 'B' THEN ' ' || _bank.bankaccnt_routing WHEN _bank.bankaccnt_ach_desttype = 'F' THEN ' ' || _bank.bankaccnt_ach_fed_dest ELSE _bank.bankaccnt_ach_dest END, 10) || RPAD(CASE WHEN _bank.bankaccnt_ach_origintype = 'B' THEN ' ' || _bank.bankaccnt_routing WHEN _bank.bankaccnt_ach_origintype = 'I' THEN formatAchCompanyId() ELSE _bank.bankaccnt_ach_origin END, 10) || TO_CHAR(CURRENT_DATE, 'YYMMDD') || TO_CHAR(CURRENT_TIMESTAMP, 'HH24MM') || UPPER(_bank.bankaccnt_ach_lastfileid) || '094' || '10' || '1' || RPAD(CASE WHEN _bank.bankaccnt_ach_desttype = 'B' THEN _bank.bankaccnt_bankname WHEN _bank.bankaccnt_ach_desttype = 'F' THEN 'Federal Reserve' ELSE _bank.bankaccnt_ach_destname END, 23) || RPAD(CASE WHEN _bank.bankaccnt_ach_origintype = 'B' THEN ' ' || _bank.bankaccnt_bankname WHEN _bank.bankaccnt_ach_origintype = 'I' THEN fetchMetricText('ACHCompanyName') ELSE _bank.bankaccnt_ach_originname END, 23) || RPAD(_filenum, 8), 94); RETURN NEXT _row; FOR _check IN SELECT * FROM checkhead JOIN vendinfo ON (checkhead_recip_type='V' AND checkhead_recip_id=vend_id AND vend_ach_enabled) JOIN curr_symbol ON (checkhead_curr_id=curr_id) LEFT OUTER JOIN crmacct ON (crmacct_vend_id=vend_id) WHERE ((checkhead_bankaccnt_id=pbankaccntid) AND (checkhead_amount > 0) AND (checkhead_id=pcheckheadid OR pcheckheadid IS NULL) AND NOT checkhead_posted AND NOT checkhead_replaced AND NOT checkhead_deleted AND NOT checkhead_void AND NOT checkhead_printed AND (LENGTH(COALESCE(checkhead_ach_batch,'')) <= 0) AND (curr_abbr='USD')) ORDER BY checkhead_checkdate, vend_name LOOP IF (COALESCE(_check.checkhead_number, -1) <= 0 AND _bank.bankaccnt_ach_genchecknum) THEN _check.checkhead_number := fetchNextCheckNumber(_check.checkhead_bankaccnt_id); END IF; _prevsec := _sec; IF (_check.crmacct_type = 'I') THEN _sec := 'PPD'; ELSE _sec := 'CCD'; IF (_check.crmacct_id IS NULL) THEN RAISE NOTICE 'Vendor % does not have a corresponding crmacct record.', _check.checkhead_recip_id; ELSIF (_check.crmacct_type IS NULL) THEN RAISE NOTICE 'crmacct for vendor % does not have a valid crmacct_type.', _check.checkhead_recip_id; END IF; END IF; _ccdnumber := CASE WHEN _check.vend_ach_use_vendinfo THEN _check.vend_number ELSE _check.vend_ach_indiv_number END; _ccdname := CASE WHEN _check.vend_ach_use_vendinfo THEN _check.vend_name ELSE _check.vend_ach_indiv_name END; IF (COALESCE(_check.vend_ach_routingnumber, '') = '') THEN RAISE EXCEPTION 'Cannot write % check % to an ACH file because the routing number for % has not been supplied.', _bank.bankaccnt_name, _check.checkhead_number, _ccdnumber; ELSIF (COALESCE(_check.vend_ach_accntnumber, '') = '') THEN RAISE EXCEPTION 'Cannot write % check % to an ACH file because the account number for % has not been supplied.', _bank.bankaccnt_name, _check.checkhead_number, _ccdnumber; END IF; _check.vend_ach_routingnumber := decrypt(setbytea(_check.vend_ach_routingnumber), setbytea(penckey), 'bf'); _check.vend_ach_accntnumber := decrypt(setbytea(_check.vend_ach_accntnumber), setbytea(penckey), 'bf'); _transactionprefix := CASE WHEN (_check.vend_ach_accnttype = 'K') THEN '2' WHEN (_check.vend_ach_accnttype = 'C') THEN '3' END; -- create separate batches for each check date and for PPD vs CCD IF (COALESCE(_batchdate, startOfTime()) != _check.checkhead_checkdate OR (_prevsec != _sec)) THEN IF (_batchcount > 0) THEN _rowcount := _rowcount + 1; _row.achline_checkhead_id := NULL; _row.achline_batch := _filenum; _row.achline_type := 'BATCHCONTROL'; -- keep in sync with the other batchcontrol record format below _row.achline_value := RPAD('8' || _serviceclass || RPAD(TO_CHAR(_entrycount, '000000SG'), 6) || RPAD(TO_CHAR(_batchhash % 10000000000, '0000000000SG'), 10) || RPAD(TO_CHAR(_batchdb, '0000000000V99SG'), 12) || RPAD(TO_CHAR(_batchcr, '0000000000V99SG'), 12) || RPAD(formatAchCompanyId(), 10) || RPAD(' ', 19) || RPAD(' ', 6) || RPAD(_bank.bankaccnt_routing, 8) || RPAD(TO_CHAR(_batchcount, '0000000SG'), 7), 94); RETURN NEXT _row; END IF; _batchhash := 0; _batchcr := 0; _batchdb := 0; _batchdate := _check.checkhead_checkdate; _entrycount := 0; _rowcount := _rowcount + 1; _batchcount := _batchcount + 1; _row.achline_checkhead_id := NULL; _row.achline_batch := _filenum; _row.achline_type := 'BATCHHEADER'; -- effective entry date = 1 or 2 banking days after the banking day -- of processing (the following accounts for weekends but not holidays) _row.achline_value := RPAD('5' || _serviceclass || RPAD(fetchMetricText('ACHCompanyName'), 16) || RPAD('', 20) -- TODO: find a use || RPAD(formatAchCompanyId(), 10) || _sec || RPAD('xTuple ERP', 10) || TO_CHAR(_check.checkhead_checkdate, 'YYMMDD') || TO_CHAR(CURRENT_DATE + COALESCE(_bank.bankaccnt_ach_leadtime,1) + CASE WHEN EXTRACT(DOW FROM CURRENT_DATE) = 5 THEN 2 WHEN EXTRACT(DOW FROM CURRENT_DATE) = 6 THEN 1 ELSE 0 END, 'YYMMDD') || RPAD('', 3) || '1' || RPAD(_bank.bankaccnt_routing, 8) || RPAD(TO_CHAR(_batchcount, '0000000SG'), 7), 94); RETURN NEXT _row; END IF; _row.achline_checkhead_id := _check.checkhead_id; _row.achline_batch := _filenum; _row.achline_type := _sec; IF (_sec = 'CCD' OR _sec = 'PPD') THEN _rowcount := _rowcount + 1; _entrycount := _entrycount + 1; _totalentrycnt := _totalentrycnt + 1; _batchhash := _batchhash + CAST(SUBSTRING(_bank.bankaccnt_routing FOR 8) AS INTEGER); _totalhash := _totalhash + CAST(SUBSTRING(_bank.bankaccnt_routing FOR 8) AS INTEGER); _batchdb := _batchdb + _check.checkhead_amount; _totaldb := _totaldb + _check.checkhead_amount; _row.achline_value := RPAD('6' || _transactionprefix || '7' -- debit || RPAD(_bank.bankaccnt_routing, 9) -- 2 fields || RPAD(_bank.bankaccnt_accntnumber, 17) || RPAD(TO_CHAR(_check.checkhead_amount, '00000000V99SG'), 10) || RPAD(fetchMetricText('ACHCompanyId'), 15) || RPAD(fetchMetricText('ACHCompanyName'), 22) || RPAD(TO_CHAR(_check.checkhead_id % 100, '00SG'), 2) -- last 2 digits of checkhead_id || '0' || RPAD(_bank.bankaccnt_routing, 9) -- split field || RPAD(TO_CHAR(_entrycount, '000000SG'), 15-9), 94); RETURN NEXT _row; _rowcount := _rowcount + 1; _entrycount := _entrycount + 1; _totalentrycnt := _totalentrycnt + 1; _batchhash := _batchhash + CAST(SUBSTRING(formatbytea(_check.vend_ach_routingnumber) FOR 8) AS INTEGER); _totalhash := _totalhash + CAST(SUBSTRING(formatbytea(_check.vend_ach_routingnumber) FOR 8) AS INTEGER); _totalcr := _totalcr + _check.checkhead_amount; _batchcr := _batchcr + _check.checkhead_amount; _row.achline_value := RPAD('6' || _transactionprefix || '2' -- credit || RPAD(formatbytea(_check.vend_ach_routingnumber), 9) -- 2 fields || RPAD(formatbytea(_check.vend_ach_accntnumber), 17) || RPAD(TO_CHAR(_check.checkhead_amount, '00000000V99SG'), 10) || RPAD(_ccdnumber, 15) || RPAD(_ccdname, 22) || RPAD(TO_CHAR(_check.checkhead_id % 100, '00SG'), 2) -- last 2 digits of checkhead_id || '0' || RPAD(_bank.bankaccnt_routing, 9) -- split field || RPAD(TO_CHAR(_entrycount, '000000SG'), 15-9), 94); RETURN NEXT _row; ELSE RAISE EXCEPTION 'Cannot write % check % to an ACH file because % is not a supported SEC code.', _bank.bankaccnt_name, _check.checkhead_number, _sec; END IF; UPDATE checkhead SET checkhead_ach_batch=_filenum, checkhead_number=_check.checkhead_number WHERE (checkhead_id=_check.checkhead_id); END LOOP; IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot write an ACH file for % because there are no checks pending in USD for ACH-enabled Vendors.', _bank.bankaccnt_name; END IF; -- place a final batch control record IF (_batchcount > 0) THEN _rowcount := _rowcount + 1; _row.achline_checkhead_id := NULL; _row.achline_batch := _filenum; _row.achline_type := 'BATCHCONTROL'; -- keep in sync with the other batchcontrol record format above _row.achline_value := RPAD('8' || _serviceclass || RPAD(TO_CHAR(_entrycount, '000000SG'), 6) || RPAD(TO_CHAR(_batchhash % 10000000000, '0000000000SG'), 10) || RPAD(TO_CHAR(_batchdb, '0000000000V99SG'), 12) || RPAD(TO_CHAR(_batchcr, '0000000000V99SG'), 12) || RPAD(formatAchCompanyId(), 10) || RPAD(' ', 19) || RPAD(' ', 6) || RPAD(_bank.bankaccnt_routing, 8) || RPAD(TO_CHAR(_batchcount, '0000000SG'), 7), 94); RETURN NEXT _row; END IF; -- and end with a file control record _rowcount := _rowcount + 1; _row.achline_checkhead_id := NULL; _row.achline_batch := _filenum; _row.achline_type := 'FILECONTROL'; _row.achline_value := RPAD('9' || RPAD(TO_CHAR(_batchcount, '000000SG'), 6) || RPAD(TO_CHAR(_rowcount, '000000SG'), 6) || RPAD(TO_CHAR(_totalentrycnt, '00000000SG'), 8) || RPAD(TO_CHAR(_totalhash % 10000000000, '0000000000SG'), 10) || RPAD(TO_CHAR(_totaldb, '0000000000V99SG'), 12) || RPAD(TO_CHAR(_totalcr, '0000000000V99SG'), 12) || RPAD('', 39), 94); RETURN NEXT _row; -- file must be a multiple of 10 lines long _row.achline_checkhead_id := NULL; _row.achline_batch := _filenum; _row.achline_type := 'BLOCKFILL'; WHILE (_rowcount % 10 > 0) LOOP _rowcount := _rowcount + 1; _row.achline_value := RPAD('99999999999999999999' || '99999999999999999999' || '99999999999999999999' || '99999999999999999999' || '99999999999999999999', 94); RETURN NEXT _row; END LOOP; UPDATE bankaccnt SET bankaccnt_ach_lastdate=CURRENT_DATE, bankaccnt_ach_lastfileid=_bank.bankaccnt_ach_lastfileid WHERE (bankaccnt_id=_bank.bankaccnt_id); RETURN; END; $_$; >DROP FUNCTION public.formatachchecks(integer, integer, text); publicadminfalse83992257112551691770formatachcompanyid()FUNCTIONCREATE FUNCTION formatachcompanyid() RETURNS text LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN CASE WHEN fetchMetricText('ACHCompanyIdType') = 'D' THEN '3' WHEN fetchMetricText('ACHCompanyIdType') = 'E' THEN '1' WHEN fetchMetricText('ACHCompanyIdType') = 'O' THEN '9' END || CASE WHEN fetchMetricText('ACHCompanyIdType') = 'D' OR fetchMetricText('ACHCompanyIdType') = 'E' THEN REPLACE(fetchMetricText('ACHCompanyId'), '-', '') ELSE fetchMetricText('ACHCompanyId') END; END; $$; +DROP FUNCTION public.formatachcompanyid(); publicadminfalse8399212551691771+formataddr(text, text, text, text, integer)FUNCTIONCREATE FUNCTION formataddr(text, text, text, text, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE f_addr1 ALIAS FOR $1; f_addr2 ALIAS FOR $2; f_addr3 ALIAS FOR $3; csz ALIAS FOR $4; line ALIAS FOR $5; BEGIN RETURN formatAddr(f_addr1, f_addr2, f_addr3, csz, '', line); END; $_$; BDROP FUNCTION public.formataddr(text, text, text, text, integer); publicadminfalse83992125516917721formataddr(text, text, text, text, text, integer)FUNCTION CREATE FUNCTION formataddr(text, text, text, text, text, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE f_addr1 ALIAS FOR $1; f_addr2 ALIAS FOR $2; f_addr3 ALIAS FOR $3; csz ALIAS FOR $4; country ALIAS FOR $5; line ALIAS FOR $6; i int:=0; BEGIN IF (LENGTH(TRIM(both from f_addr1)) > 0) THEN i:=i+1; END IF; IF (i=line) THEN RETURN f_addr1; END IF; IF (LENGTH(TRIM(both from f_addr2)) > 0) THEN i:=i+1; END IF; IF (i=line) THEN RETURN f_addr2; END IF; IF (LENGTH(TRIM(both from f_addr3)) > 0) THEN i:=i+1; END IF; IF (i=line) THEN RETURN f_addr3; END IF; IF (LENGTH(TRIM(both from csz)) > 0) THEN i:=i+1; END IF; IF (i=line) THEN RETURN csz; END IF; IF (LENGTH(TRIM(both from country)) > 0) THEN i:=i+1; END IF; IF (i=line) THEN RETURN country; END IF; RETURN ' '; END; $_$; HDROP FUNCTION public.formataddr(text, text, text, text, text, integer); publicadminfalse8399212551691773(formataddr(text, text, text, text, text)FUNCTIONCREATE FUNCTION formataddr(text, text, text, text, text) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE f_addr1 ALIAS FOR $1; f_addr2 ALIAS FOR $2; f_addr3 ALIAS FOR $3; csz ALIAS FOR $4; country ALIAS FOR $5; addr TEXT:=''; BEGIN IF (LENGTH(TRIM(both from f_addr1)) > 0) THEN addr:=f_addr1; END IF; IF (LENGTH(TRIM(both from f_addr2)) > 0) THEN IF (LENGTH(TRIM(both from addr)) > 0) THEN addr:=addr || E'\n'; END IF; addr:=addr || f_addr2; END IF; IF (LENGTH(TRIM(both from f_addr3)) > 0) THEN IF (LENGTH(TRIM(both from addr)) > 0) THEN addr:=addr || E'\n'; END IF; addr:=addr || f_addr3; END IF; IF (LENGTH(TRIM(both from csz)) > 0) THEN IF (LENGTH(TRIM(both from addr)) > 0) THEN addr:=addr || E'\n'; END IF; addr:=addr || csz; END IF; IF (LENGTH(TRIM(both from country)) > 0) THEN IF (LENGTH(TRIM(both from addr)) > 0) THEN addr:=addr || E'\n'; END IF; addr:=addr || country; END IF; RETURN addr; END; $_$; ?DROP FUNCTION public.formataddr(text, text, text, text, text); publicadminfalse8399212551691774formataddr(integer)FUNCTION"CREATE FUNCTION formataddr(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAddrId ALIAS FOR $1; _return TEXT; BEGIN -- US conventions SELECT formatAddr(addr_line1, addr_line2, addr_line3, addr_city || ', ' || addr_state || ' ' || addr_postalcode, addr_country) INTO _return FROM addr WHERE (addr_id=pAddrId); RETURN _return; END; $_$; *DROP FUNCTION public.formataddr(integer); publicadminfalse8399212551691775formatboolyn(boolean)FUNCTIONOCREATE FUNCTION formatboolyn(boolean) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBool ALIAS FOR $1; BEGIN IF (pBool) THEN RETURN 'Yes'; ELSE RETURN 'No'; END IF; END; $_$; ,DROP FUNCTION public.formatboolyn(boolean); publicadminfalse8399212551691776formatbooseq(integer, integer)FUNCTIONCREATE FUNCTION formatbooseq(integer, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pBooitemSeqId ALIAS FOR $2; _result TEXT; BEGIN IF (fetchMetricBool('Routings')) THEN SELECT booitem_seqnumber::text INTO _result FROM xtmfg.booitem(pItemid) WHERE (booitem_seq_id=pBooitemSeqId); RETURN _result; ELSE RETURN NULL; END IF; END; $_$; 5DROP FUNCTION public.formatbooseq(integer, integer); publicadminfalse8399212551691777formatbytea(bytea)FUNCTIONICREATE FUNCTION formatbytea(bytea) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pField ALIAS FOR $1; output_field TEXT; BEGIN output_field := pField; RETURN output_field; END; $_$; )DROP FUNCTION public.formatbytea(bytea); publicadminfalse83992_12551691778formatccdashes(text, text)FUNCTION!CREATE FUNCTION formatccdashes(text, text) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCCard ALIAS FOR $1; pCCardType ALIAS FOR $2; _returnCard text; card_length integer; BEGIN IF (pCCardType = 'A') THEN _returnCard := pCCard; RETURN _returnCard; END IF; card_length := length(pCcard); if (card_length = 16) THEN _returnCard := substr(pCCard, 1, 4) || '-' || substr(pCCard, 5, 4) || '-' || substr(pCCard, 9, 4) || '-' || substr(pCCard, 13, 4); ELSE _returnCard := substr(pCCard, 1, 4) || '-' || substr(pCCard, 5, 4) || '-' || substr(pCCard, 9, 4) || '-' || substr(pCCard, 13, 1); END IF; RETURN _returnCard; END; $_$; 1DROP FUNCTION public.formatccdashes(text, text); publicadminfalse8399212551691779formatccnumber(text)FUNCTIONCREATE FUNCTION formatccnumber(text) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCcardnum ALIAS FOR $1; card_length INTEGER; output_cardnum TEXT; BEGIN card_length := length(pCcardnum); IF (card_length = 13) THEN output_cardnum := '*********' || substr(pCcardnum, 10, 4); END IF; IF (card_length = 14) THEN output_cardnum := '**********' || substr(pCcardnum, 11, 4); END IF; IF (card_length = 15) THEN output_cardnum := '***********' || substr(pCcardnum, 12, 4); END IF; IF (card_length = 16) THEN output_cardnum := '************' || substr(pCcardnum, 13, 4); END IF; RETURN output_cardnum; END; $_$; +DROP FUNCTION public.formatccnumber(text); publicadminfalse83992c12551691780formatccnumber(bytea)FUNCTIONCREATE FUNCTION formatccnumber(bytea) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCcardnum ALIAS FOR $1; card_length INTEGER; output_cardnum TEXT; BEGIN card_length := length(pCcardnum); IF (card_length = 13) THEN output_cardnum := '*********' || substr(pCcardnum, 10, 4); END IF; IF (card_length = 14) THEN output_cardnum := '**********' || substr(pCcardnum, 11, 4); END IF; IF (card_length = 15) THEN output_cardnum := '***********' || substr(pCcardnum, 12, 4); END IF; IF (card_length = 16) THEN output_cardnum := '************' || substr(pCcardnum, 13, 4); END IF; RETURN output_cardnum; END; $_$; ,DROP FUNCTION public.formatccnumber(bytea); publicadminfalse8399212551691781formatcntctname(integer)FUNCTIONCREATE FUNCTION formatcntctname(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCntctId ALIAS FOR $1; _r RECORD; _rows NUMERIC; BEGIN SELECT cntct_honorific, cntct_first_name, cntct_middle, cntct_last_name, cntct_suffix INTO _r FROM cntct WHERE (cntct_id=pCntctId); GET DIAGNOSTICS _rows = ROW_COUNT; IF (_rows = 0) THEN RETURN ''; END IF; RETURN formatCntctName(_r.cntct_honorific, _r.cntct_first_name, _r.cntct_middle, _r.cntct_last_name, _r.cntct_suffix); END; $_$; /DROP FUNCTION public.formatcntctname(integer); publicadminfalse8399212551691782-formatcntctname(text, text, text, text, text)FUNCTIONACREATE FUNCTION formatcntctname(text, text, text, text, text) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pHonorific ALIAS FOR $1; pFirstName ALIAS FOR $2; pMiddle ALIAS FOR $3; pLastName ALIAS FOR $4; pSuffix ALIAS FOR $5; _name TEXT := ''; BEGIN IF (LENGTH(TRIM(both from COALESCE(pHonorific,''))) > 0) THEN IF (POSITION('.' IN COALESCE(pHonorific, '')) > 0) THEN _name:= pHonorific; ELSE _name:= pHonorific || '.'; END IF; END IF; IF (LENGTH(TRIM(both from COALESCE(pFirstName,''))) > 0) THEN IF (LENGTH(TRIM(both from _name)) > 0) THEN _name:=_name || ' '; END IF; _name:=_name || pFirstName; END IF; IF (LENGTH(TRIM(both from COALESCE(pMiddle,''))) > 0) THEN IF (LENGTH(TRIM(both from _name)) > 0) THEN _name:=_name || ' '; END IF; IF (POSITION('.' IN COALESCE(pHonorific, '')) > 0) THEN _name:=_name || pMiddle; ELSE _name:=_name || pMiddle || '.'; END IF; END IF; IF (LENGTH(TRIM(both from COALESCE(pLastName,''))) > 0) THEN IF (LENGTH(TRIM(both from _name)) > 0) THEN _name:=_name || ' '; END IF; _name:=_name || pLastName; END IF; IF (LENGTH(TRIM(both from COALESCE(pSuffix,''))) > 0) THEN IF (LENGTH(TRIM(both from _name)) > 0) THEN _name:=_name || ' '; END IF; _name:=_name || pSuffix; END IF; RETURN _name; END; $_$; DDROP FUNCTION public.formatcntctname(text, text, text, text, text); publicadminfalse8399212551691783formatcost(numeric)FUNCTIONCREATE FUNCTION formatcost(numeric) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN formatNumeric($1, 'cost'); END;$_$; *DROP FUNCTION public.formatcost(numeric); publicadminfalse83992W12551691784formatcounttagbarcode(integer)FUNCTIONCREATE FUNCTION formatcounttagbarcode(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCnttagid ALIAS FOR $1; _barcode TEXT; BEGIN SELECT ( E'\138CTXX' || LTRIM(TO_CHAR(LENGTH(invcnt_tagnumber), '00')) || invcnt_tagnumber ) INTO _barcode FROM invcnt WHERE (invcnt_id=pCnttagid); RETURN _barcode; END; $_$; 5DROP FUNCTION public.formatcounttagbarcode(integer); publicadminfalse83992i12551691785formatcreditmemonumber(integer)FUNCTIONCREATE FUNCTION formatcreditmemonumber(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmheadid ALIAS FOR $1; BEGIN RETURN ( SELECT COALESCE(cmhead_number::TEXT, '') FROM cmhead WHERE (cmhead_id=pCmheadid) ); END; $_$; 6DROP FUNCTION public.formatcreditmemonumber(integer); publicadminfalse83992 12551691786formatdate(date)FUNCTIONCREATE FUNCTION formatdate(date) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT TO_CHAR($1, COALESCE((SELECT locale_dateformat FROM locale, usr WHERE ((usr_locale_id=locale_id) AND (usr_username=getEffectiveXtUser())) ), 'yyyy-mm-dd') ) AS result $_$; 'DROP FUNCTION public.formatdate(date); publicadminfalse812551691787formatdate(date, text)FUNCTIONCREATE FUNCTION formatdate(date, text) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pDate ALIAS FOR $1; pString ALIAS FOR $2; BEGIN IF ( (pDate = startOfTime()) OR (pDate = endOfTime()) OR (pDate IS NULL) ) THEN RETURN pString; ELSE RETURN formatDate(pDate); END IF; END; $_$; -DROP FUNCTION public.formatdate(date, text); publicadminfalse83992 12551691788$formatdate(timestamp with time zone)FUNCTIONCREATE FUNCTION formatdate(timestamp with time zone) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT TO_CHAR($1, COALESCE((SELECT locale_dateformat FROM locale, usr WHERE ((usr_locale_id=locale_id) AND (usr_username=getEffectiveXtUser())) ), 'yyyy-mm-dd' )) AS result $_$; ;DROP FUNCTION public.formatdate(timestamp with time zone); publicadminfalse812551691789(formatdatetime(timestamp with time zone)FUNCTION"CREATE FUNCTION formatdatetime(timestamp with time zone) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT TO_CHAR($1, COALESCE((SELECT locale_timestampformat FROM locale, usr WHERE ((usr_locale_id=locale_id) AND (usr_username=getEffectiveXtUser())) ), 'yyyy-mm-dd HH24:MI:SS')) AS result $_$; ?DROP FUNCTION public.formatdatetime(timestamp with time zone); publicadminfalse812551691790+formatdatetime(timestamp without time zone)FUNCTION%CREATE FUNCTION formatdatetime(timestamp without time zone) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT TO_CHAR($1, COALESCE((SELECT locale_timestampformat FROM locale, usr WHERE ((usr_locale_id=locale_id) AND (usr_username=getEffectiveXtUser())) ), 'yyyy-mm-dd HH24:MI:SS')) AS result $_$; BDROP FUNCTION public.formatdatetime(timestamp without time zone); publicadminfalse812551691791formatextprice(numeric)FUNCTIONCREATE FUNCTION formatextprice(numeric) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN formatNumeric($1, 'extprice'); END;$_$; .DROP FUNCTION public.formatextprice(numeric); publicadminfalse8399212551691792formatflitemdescrip(integer)FUNCTION CREATE FUNCTION formatflitemdescrip(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlitemId ALIAS FOR $1; _x RECORD; _descrip TEXT; BEGIN SELECT flitem_accnt_id, flitem_company, flitem_profit, flitem_number, flitem_sub, flitem_type, flitem_subaccnttype_code, accnt_id, accnt_descrip INTO _x FROM flitem LEFT OUTER JOIN accnt ON flitem_accnt_id=accnt_id WHERE flitem_id=pFlitemId; IF _x.flitem_accnt_id > -1 THEN SELECT (formatGLAccount(_x.accnt_id) || '-' || _x.accnt_descrip) INTO _descrip; ELSE _descrip:=''; IF _x.flitem_type = 'A' THEN _descrip:='Type=' || 'Asset'; ELSE IF _x.flitem_type='L' THEN _descrip:='Type=' || 'Liability'; ELSE IF _x.flitem_type='R' THEN _descrip:='Type=' || 'Revenue'; ELSE IF _x.flitem_type='E' THEN _descrip:='Type=' || 'Expense'; ELSE IF _x.flitem_type='Q' THEN _descrip:='Type=' || 'Equity'; END IF; END IF; END IF; END IF; END IF; IF _x.flitem_subaccnttype_code <> 'All' THEN IF (LENGTH(TRIM(both from _descrip)) > 0) THEN _descrip:=_descrip || ', '; END IF; _descrip:=_descrip || 'Sub Accnt Type=' || _x.flitem_subaccnttype_code; END IF; IF _x.flitem_company <> 'All' THEN IF (LENGTH(TRIM(both from _descrip)) > 0) THEN _descrip:=_descrip || ', '; END IF; _descrip:=_descrip || 'Company=' || _x.flitem_company; END IF; IF _x.flitem_profit <> 'All' THEN IF (LENGTH(TRIM(both from _descrip)) > 0) THEN _descrip:=_descrip || ', '; END IF; _descrip:=_descrip || 'Profit=' || _x.flitem_profit; END IF; IF _x.flitem_number <> 'All' THEN IF (LENGTH(TRIM(both from _descrip)) > 0) THEN _descrip:=_descrip || ', '; END IF; _descrip:=_descrip || 'Number=' || _x.flitem_number; END IF; IF _x.flitem_sub <> 'All' THEN IF (LENGTH(TRIM(both from _descrip)) > 0) THEN _descrip:=_descrip || ', '; END IF; _descrip:=_descrip || 'Sub Accnt=' || _x.flitem_sub; END IF; END IF; RETURN _descrip; END; $_$; 3DROP FUNCTION public.formatflitemdescrip(integer); publicadminfalse83992`12551691794'formatglaccount(text, text, text, text)FUNCTIONCREATE FUNCTION formatglaccount(text, text, text, text) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCompany ALIAS FOR $1; pProfit ALIAS FOR $2; pNumber ALIAS FOR $3; pSub ALIAS FOR $4; _number TEXT := ''; BEGIN IF ( ( SELECT metric_value::INTEGER FROM metric WHERE (metric_name='GLCompanySize') ) > 0 ) THEN _number := pCompany || '-'; END IF; IF ( ( SELECT metric_value::INTEGER FROM metric WHERE (metric_name='GLProfitSize') ) > 0 ) THEN _number := _number || pProfit || '-'; END IF; _number := _number || pNumber; IF ( ( SELECT metric_value::INTEGER FROM metric WHERE (metric_name='GLSubaccountSize') ) > 0 ) THEN _number := _number || '-' || pSub; END IF; RETURN _number; END; $_$; >DROP FUNCTION public.formatglaccount(text, text, text, text); publicadminfalse8399212551691795formatglaccountlong(integer)FUNCTIONCREATE FUNCTION formatglaccountlong(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAccntid ALIAS FOR $1; _result TEXT; BEGIN SELECT (formatGLAccount(accnt_id) || '-' || accnt_descrip) INTO _result FROM accnt WHERE (accnt_id=pAccntid); RETURN _result; END; $_$; 3DROP FUNCTION public.formatglaccountlong(integer); publicadminfalse8399212551691796formatindent(text, integer)FUNCTIONCREATE FUNCTION formatindent(text, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pText ALIAS FOR $1; pIndent ALIAS FOR $2; _i INTEGER; _result TEXT; BEGIN _result := ''; _i := 0; WHILE _i < pIndent LOOP _result := _result || ' '; _i := _i + 1; END LOOP; _result := _result || pText; RETURN _result; END; $_$; 2DROP FUNCTION public.formatindent(text, integer); publicadminfalse8399212551691797formatinterval(numeric)FUNCTION<CREATE FUNCTION formatinterval(numeric) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT TO_CHAR(('@ ' || trunc($1) || ' min ' || ($1 - trunc($1)) * 60 || ' sec')::INTERVAL, ( SELECT locale_intervalformat FROM locale, usr WHERE ((usr_locale_id=locale_id) AND (usr_username=getEffectiveXtUser())) ) ) AS result $_$; .DROP FUNCTION public.formatinterval(numeric); publicadminfalse8"12551691798formatinterval(interval)FUNCTIONCREATE FUNCTION formatinterval(interval) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT TO_CHAR($1, ( SELECT locale_intervalformat FROM locale, usr WHERE ((usr_locale_id=locale_id) AND (usr_username=getEffectiveXtUser())) ) ) AS result $_$; /DROP FUNCTION public.formatinterval(interval); publicadminfalse812551691799formatinvcnumber(integer)FUNCTIONCREATE FUNCTION formatinvcnumber(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCobmiscid ALIAS FOR $1; BEGIN RETURN ( SELECT COALESCE(cobmisc_invcnumber::TEXT, '') FROM cobmisc WHERE (cobmisc_id=pCobmiscid) ); END; $_$; 0DROP FUNCTION public.formatinvcnumber(integer); publicadminfalse83992#12551691800formatitemsitebarcode(integer)FUNCTION|CREATE FUNCTION formatitemsitebarcode(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; _barcode TEXT; BEGIN SELECT ( E'\138ISXX' || LTRIM(TO_CHAR(LENGTH(item_number), '00')) || LENGTH(warehous_code)::TEXT || item_number || warehous_code ) INTO _barcode FROM itemsite, item, whsinfo WHERE ( (itemsite_item_id=item_id) AND (itemsite_warehous_id=warehous_id) AND (itemsite_id=pItemsiteid) ); RETURN _barcode; END; $_$; 5DROP FUNCTION public.formatitemsitebarcode(integer); publicadminfalse83992&12551691801formatlocationbarcode(integer)FUNCTION^CREATE FUNCTION formatlocationbarcode(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLocationid ALIAS FOR $1; _barcode TEXT; BEGIN SELECT ( E'\138LOXX' || LENGTH(warehous_code)::TEXT || LTRIM(TO_CHAR(LENGTH(location_name::TEXT), '00')) || warehous_code || location_name ) INTO _barcode FROM location, whsinfo WHERE ( (location_warehous_id=warehous_id) AND (location_id=pLocationid) ); RETURN _barcode; END; $_$; 5DROP FUNCTION public.formatlocationbarcode(integer); publicadminfalse83992)12551691802&formatlocationcontentsbarcode(integer)FUNCTION`CREATE FUNCTION formatlocationcontentsbarcode(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLocationid ALIAS FOR $1; _barcode TEXT; BEGIN SELECT ( E'\138LOCN' || LENGTH(warehous_code)::TEXT || LTRIM(TO_CHAR(LENGTH(location_name), '00')) || warehous_code || location_name ) INTO _barcode FROM location, whsinfo WHERE ( (location_warehous_id=warehous_id) AND (location_id=pLocationid) ); RETURN _barcode; END; $_$; =DROP FUNCTION public.formatlocationcontentsbarcode(integer); publicadminfalse83992+12551691803#formatlocationissuebarcode(integer)FUNCTION]CREATE FUNCTION formatlocationissuebarcode(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLocationid ALIAS FOR $1; _barcode TEXT; BEGIN SELECT ( E'\138LOIS' || LENGTH(warehous_code)::TEXT || LTRIM(TO_CHAR(LENGTH(location_name), '00')) || warehous_code || location_name ) INTO _barcode FROM location, whsinfo WHERE ( (location_warehous_id=warehous_id) AND (location_id=pLocationid) ); RETURN _barcode; END; $_$; :DROP FUNCTION public.formatlocationissuebarcode(integer); publicadminfalse83992=12551691805formatlotserialnumber(integer)FUNCTION CREATE FUNCTION formatlotserialnumber(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLotSerialId ALIAS FOR $1; _lotserial TEXT; BEGIN --See if lot serial control turned on (Postbooks will not ever have this) IF (fetchmetricbool('LotSerialControl')) THEN SELECT ls_number INTO _lotserial FROM ls WHERE (ls_id=pLotSerialId); END IF; RETURN COALESCE(_lotserial,''); END; $_$; 5DROP FUNCTION public.formatlotserialnumber(integer); publicadminfalse8399212551691806formatmoney(numeric)FUNCTIONCREATE FUNCTION formatmoney(numeric) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN formatNumeric($1, 'curr'); END;$_$; +DROP FUNCTION public.formatmoney(numeric); publicadminfalse8399212551691807formatnumeric(numeric, text)FUNCTION} CREATE FUNCTION formatnumeric(numeric, text) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _value NUMERIC := $1; _type TEXT := LOWER(COALESCE($2, 'curr')); _abs NUMERIC; _magnitudecnt NUMERIC(1000); _wholefmt TEXT := '0'; _scale INTEGER; _neg TEXT; _decimal TEXT; _group TEXT; _string TEXT; _debug BOOL := false; _r RECORD; BEGIN -- If the value passed in is NULL then we want to pass back an empty string IF(_value IS NULL) THEN RETURN ''; END IF; SELECT * INTO _r FROM locale WHERE (locale_id=getUsrLocaleId()); _decimal := COALESCE(SUBSTRING(_r.locale_qtyformat FROM 1 FOR 1), '.'); _neg := COALESCE(SUBSTRING(_r.locale_qtyformat FROM 2 FOR 1), '-'); _group := COALESCE(SUBSTRING(_r.locale_qtyformat FROM 3 FOR 1), ','); _scale := CASE WHEN _type = 'cost' THEN _r.locale_cost_scale WHEN _type = 'extprice' THEN _r.locale_extprice_scale WHEN _type = 'percent' THEN _r.locale_percent_scale WHEN _type = 'purchprice' THEN _r.locale_purchprice_scale WHEN _type = 'qty' THEN _r.locale_qty_scale WHEN _type = 'qtyper' THEN _r.locale_qtyper_scale WHEN _type = 'salesprice' THEN _r.locale_salesprice_scale WHEN _type = 'uomratio' THEN _r.locale_uomratio_scale WHEN _type = 'weight' THEN _r.locale_weight_scale WHEN SUBSTRING(_type FOR 4) = 'curr' THEN _r.locale_curr_scale ELSE 2 END; _value := round(_value, _scale); _abs := ABS(_value); _magnitudecnt := TRUNC(_abs / 10); IF (_debug) THEN RAISE NOTICE '_value % _abs % _scale % _neg % _decimal % _group % ', _value, _abs, _scale, _decimal, _group, _scale; END IF; IF (_value < 0) THEN _string := _neg; ELSE _string := ''; END IF; WHILE (_magnitudecnt >= 1) LOOP _magnitudecnt := TRUNC(_magnitudecnt / 10); IF (LENGTH(_wholefmt) % 3 = 0) THEN _wholefmt := '"' || _group || '"' || _wholefmt; END IF; _wholefmt := '9' || _wholefmt; END LOOP; IF (_scale > 0) THEN _abs := (_abs * (10 ^ _scale)); _abs := TRUNC(_abs); _wholefmt := _wholefmt || '"' || _decimal || '"' || REPEAT('0', _scale); END IF; _wholefmt := 'FM' || _wholefmt; _string := _string || to_char(_abs, _wholefmt); RETURN _string; END;$_$; 3DROP FUNCTION public.formatnumeric(numeric, text); publicadminfalse8399212551691808$formatperiodname(integer, character)FUNCTION`CREATE FUNCTION formatperiodname(integer, character) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodId ALIAS FOR $1; pInterval ALIAS FOR $2; _result TEXT; BEGIN --...for Month IF (pInterval='M') THEN SELECT (CASE WHEN period_name='' THEN formatdate(period_start) || '-' || formatdate(period_end) ELSE period_name END) INTO _result FROM period WHERE (period_id=pPeriodId); RETURN _result; --...for Quarter ELSE IF (pInterval='Q') THEN SELECT ('Q' || period_quarter || '-' || EXTRACT(year from yearperiod_end)) INTO _result FROM period, yearperiod WHERE ((period_id=pPeriodId) AND (period_yearperiod_id=yearperiod_id)); RETURN _result; --...for Year ELSE SELECT EXTRACT(year FROM yearperiod_end) INTO _result FROM period,yearperiod WHERE ((period_id=pPeriodId) AND (period_yearperiod_id=yearperiod_id)); RETURN _result; END IF; END IF; RETURN 'Err'; END; $_$; ;DROP FUNCTION public.formatperiodname(integer, character); publicadminfalse8399212551691809formatplonumber(integer)FUNCTIONCREATE FUNCTION formatplonumber(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPlanordid ALIAS FOR $1; _result TEXT; BEGIN SELECT (TEXT(planord_number) || '-' || TEXT(planord_subnumber)) INTO _result FROM planord WHERE (planord_id=pPlanordid); RETURN _result; END; $_$; /DROP FUNCTION public.formatplonumber(integer); publicadminfalse8399212551691810formatprcnt(numeric)FUNCTIONCREATE FUNCTION formatprcnt(numeric) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT formatNumeric($1 * 100, 'percent') AS result $_$; +DROP FUNCTION public.formatprcnt(numeric); publicadminfalse812551691811formatprice(numeric)FUNCTIONCREATE FUNCTION formatprice(numeric) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT formatNumeric($1, 'salesprice') AS result; $_$; +DROP FUNCTION public.formatprice(numeric); publicadminfalse812551691812formatpurchprice(numeric)FUNCTIONCREATE FUNCTION formatpurchprice(numeric) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN formatNumeric($1, 'purchprice'); END;$_$; 0DROP FUNCTION public.formatpurchprice(numeric); publicadminfalse83992j12551691813formatqty(numeric)FUNCTION CREATE FUNCTION formatqty(numeric) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN formatNumeric($1, 'qty'); END;$_$; )DROP FUNCTION public.formatqty(numeric); publicadminfalse83992k12551691814formatqtyper(numeric)FUNCTIONCREATE FUNCTION formatqtyper(numeric) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN formatNumeric($1, 'qtyper'); END;$_$; ,DROP FUNCTION public.formatqtyper(numeric); publicadminfalse8399212551691815formatratio(numeric)FUNCTIONCREATE FUNCTION formatratio(numeric) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT formatNumeric($1, 'uomratio'); $_$; +DROP FUNCTION public.formatratio(numeric); publicadminfalse812551691816formatrevnumber(text, integer)FUNCTIONMCREATE FUNCTION formatrevnumber(text, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pRevType ALIAS FOR $1; pRevId ALIAS FOR $2; _revision TEXT; BEGIN --See if revision control turned on (Postbooks will not ever have this) IF (fetchmetricbool('RevControl')) THEN SELECT rev_number INTO _revision FROM rev WHERE ((rev_target_type=pRevType) AND (rev_id=pRevId)); END IF; RETURN COALESCE(_revision,''); END; $_$; 5DROP FUNCTION public.formatrevnumber(text, integer); publicadminfalse8399212551691817formatsalesprice(numeric)FUNCTIONCREATE FUNCTION formatsalesprice(numeric) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN formatNumeric($1, 'salesprice'); END;$_$; 0DROP FUNCTION public.formatsalesprice(numeric); publicadminfalse8399212551691818formatscrap(numeric)FUNCTIONCREATE FUNCTION formatscrap(numeric) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT formatNumeric(($1 * 100), 'percent') AS result $_$; +DROP FUNCTION public.formatscrap(numeric); publicadminfalse812551691819formatshipmentnumber(integer)FUNCTIONCREATE FUNCTION formatshipmentnumber(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pshipheadid ALIAS FOR $1; BEGIN RETURN ( SELECT COALESCE(shiphead_number::TEXT, '') FROM shiphead WHERE (shiphead_id=pshipheadid) ); END; $_$; 4DROP FUNCTION public.formatshipmentnumber(integer); publicadminfalse39928q12551691820formatsobarcode(integer)FUNCTIONCREATE FUNCTION formatsobarcode(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; _barcode TEXT; BEGIN SELECT ( E'\138SOXX' || LENGTH(TEXT(cohead_number)) || TEXT(cohead_number) ) INTO _barcode FROM cohead WHERE (cohead_id=pSoheadid); RETURN _barcode; END; $_$; /DROP FUNCTION public.formatsobarcode(integer); publicadminfalse39928v12551691821formatsoitembarcode(integer)FUNCTIONWCREATE FUNCTION formatsoitembarcode(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoitemid ALIAS FOR $1; _barcode TEXT; BEGIN SELECT ( E'\138SOLI' || LENGTH(TEXT(cohead_number)) || LENGTH(formatsolinenumber(coitem_id)) || TEXT(cohead_number) || formatsolinenumber(coitem_id) ) INTO _barcode FROM cohead, coitem WHERE ( (coitem_cohead_id=cohead_id) AND (coitem_id=pSoitemid) ); RETURN _barcode; END; $_$; 3DROP FUNCTION public.formatsoitembarcode(integer); publicadminfalse83992w12551691822formatsoitemnumber(integer)FUNCTIONCREATE FUNCTION formatsoitemnumber(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE targetSoitemid ALIAS FOR $1; BEGIN RETURN ( SELECT (cohead_number::TEXT || '-' || formatsolinenumber(coitem_id)) FROM cohead, coitem WHERE ((coitem_cohead_id=cohead_id) AND (coitem_id=targetSoitemid)) ); END; $_$; 2DROP FUNCTION public.formatsoitemnumber(integer); publicadminfalse83992n12551691824formatsonumber(integer)FUNCTIONCREATE FUNCTION formatsonumber(integer) RETURNS text LANGUAGE sql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT COALESCE((SELECT (text(cohead_number) || '-' || formatSoLineNumber(coitem_id)) FROM coitem JOIN cohead ON (coitem_cohead_id=cohead_id) WHERE (coitem_id=($1))),'DELETED'); $_$; .DROP FUNCTION public.formatsonumber(integer); publicadminfalse8z12551691825$formattime(timestamp with time zone)FUNCTIONCREATE FUNCTION formattime(timestamp with time zone) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT TO_CHAR($1, ( SELECT locale_timeformat FROM locale, usr WHERE ((usr_locale_id=locale_id) AND (usr_username=getEffectiveXtUser())) ) ) AS result $_$; ;DROP FUNCTION public.formattime(timestamp with time zone); publicadminfalse8}12551691826formattime(numeric)FUNCTIONCREATE FUNCTION formattime(numeric) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT LTRIM(TO_CHAR(COALESCE($1, 0), '999999990.0')); $_$; *DROP FUNCTION public.formattime(numeric); publicadminfalse8~12551691827formatuomratio(numeric)FUNCTIONCREATE FUNCTION formatuomratio(numeric) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN formatNumeric($1, 'uomratio'); END;$_$; .DROP FUNCTION public.formatuomratio(numeric); publicadminfalse8399212551691828formatuserbarcode(integer)FUNCTIONCREATE FUNCTION formatuserbarcode(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUserid ALIAS FOR $1; _barcode TEXT; BEGIN SELECT formatUserBarcode(usr_username) INTO _barcode FROM usr WHERE(usr_id=pUserid); RETURN _barcode; END; $_$; 1DROP FUNCTION public.formatuserbarcode(integer); publicadminfalse8399212551691829formatuserbarcode(text)FUNCTIONCREATE FUNCTION formatuserbarcode(text) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; _barcode TEXT; BEGIN _barcode := ( E'\138USER' || LENGTH(pUsername)::TEXT || pUsername ); RETURN _barcode; END; $_$; .DROP FUNCTION public.formatuserbarcode(text); publicadminfalse8399212551691830formatweight(numeric)FUNCTION CREATE FUNCTION formatweight(numeric) RETURNS text LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT formatNumeric($1, 'weight') AS result $_$; ,DROP FUNCTION public.formatweight(numeric); publicadminfalse812551691831formatwobarcode(integer)FUNCTIONCREATE FUNCTION formatwobarcode(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; _barcode TEXT; BEGIN SELECT ( E'\138WOXX' || LENGTH(wo_number::TEXT) || LENGTH(wo_subnumber::TEXT) || wo_number::TEXT || wo_subnumber::TEXT ) INTO _barcode FROM wo WHERE (wo_id=pWoid); RETURN _barcode; END; $_$; /DROP FUNCTION public.formatwobarcode(integer); publicadminfalse8399212551691832formatwonumber(integer)FUNCTIONCREATE FUNCTION formatwonumber(integer) RETURNS text LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; BEGIN RETURN ( SELECT (wo_number::TEXT || '-' || wo_subnumber::TEXT) FROM wo WHERE (wo_id=pWoid) ); END; $_$; .DROP FUNCTION public.formatwonumber(integer); publicadminfalse3992812551691833formatwooperseq(integer)FUNCTIONCREATE FUNCTION formatwooperseq(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWooperId ALIAS FOR $1; _result TEXT; BEGIN IF pWooperId = -1 THEN RETURN ''; ELSE SELECT wooper_seqnumber INTO _result FROM xtmfg.wooper WHERE (wooper_id=pWooperId); END IF; RETURN _result; END; $_$; /DROP FUNCTION public.formatwooperseq(integer); publicadminfalse3992812551691834forwardupdateaccount(integer)FUNCTIONCREATE FUNCTION forwardupdateaccount(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAccntid ALIAS FOR $1; _r RECORD; _trialbalid INTEGER; BEGIN SELECT trialbal_id, trialbal_dirty, CASE WHEN (trialbal_dirty) THEN 0 ELSE 1 END AS dirty_seq INTO _r FROM trialbal, period WHERE ((trialbal_period_id=period_id) AND (trialbal_accnt_id=pAccntid)) ORDER BY dirty_seq, period_start LIMIT 1; IF (FOUND) THEN IF (_r.trialbal_dirty) THEN RETURN forwardUpdateTrialBalance(_r.trialbal_id); ELSE RETURN _r.trialbal_id; END IF; ELSE _trialbalid := nextval('trialbal_trialbal_id_seq'); INSERT INTO trialbal ( trialbal_id, trialbal_period_id, trialbal_accnt_id, trialbal_beginning, trialbal_ending, trialbal_debits, trialbal_credits, trialbal_dirty ) SELECT _trialbalid, period_id, pAccntid, 0, 0, 0, 0, FALSE FROM period ORDER BY period_start LIMIT 1; RETURN forwardUpdateTrialBalance(_trialbalid); END IF; RETURN -1; END; $_$; 4DROP FUNCTION public.forwardupdateaccount(integer); publicadminfalse3992812551691835 forwardupdateinvbalance(integer)FUNCTION CREATE FUNCTION forwardupdateinvbalance(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvbalid ALIAS FOR $1; _p RECORD; _r RECORD; _qohEnding NUMERIC; _valueEnding NUMERIC; _nnEnding NUMERIC; _nnvalEnding NUMERIC; BEGIN SELECT invbal_itemsite_id, invbal_qoh_ending, invbal_value_ending, invbal_nn_ending, invbal_nnval_ending, period_end INTO _p FROM invbal JOIN period ON (invbal_period_id=period_id) JOIN itemsite ON (invbal_itemsite_id=itemsite_id) WHERE (invbal_id=pInvbalid); _qohEnding = _p.invbal_qoh_ending; _valueEnding = _p.invbal_value_ending; _nnEnding = _p.invbal_nn_ending; _nnvalEnding = _p.invbal_nnval_ending; -- Find all of the subsequent periods and their inventory balance, if they exist FOR _r IN SELECT period_id, period_end, invbal_id, invbal_qty_in, invbal_qty_out, invbal_value_in, invbal_value_out, invbal_nn_in, invbal_nn_out, invbal_nnval_in, invbal_nnval_out FROM period LEFT OUTER JOIN invbal ON ( (invbal_period_id=period_id) AND (invbal_itemsite_id=_p.invbal_itemsite_id) ) WHERE (period_start > _p.period_end) ORDER BY period_start LOOP IF (_r.invbal_id IS NULL) THEN INSERT INTO invbal ( invbal_period_id, invbal_itemsite_id, invbal_qoh_beginning, invbal_qoh_ending, invbal_qty_in, invbal_qty_out, invbal_value_beginning, invbal_value_ending, invbal_value_in, invbal_value_out, invbal_nn_beginning, invbal_nn_ending, invbal_nn_in, invbal_nn_out, invbal_nnval_beginning, invbal_nnval_ending, invbal_nnval_in, invbal_nnval_out, invbal_dirty ) VALUES ( _r.period_id, _p.invbal_itemsite_id, _qohEnding, _qohEnding, 0, 0, _valueEnding, _valueEnding, 0, 0, _nnEnding, _nnEnding, 0, 0, _nnvalEnding, _nnvalEnding, 0, 0, FALSE ); ELSE UPDATE invbal SET invbal_qoh_beginning = (_qohEnding), invbal_qoh_ending = (_qohEnding + _r.invbal_qty_in - _r.invbal_qty_out), invbal_value_beginning = (_valueEnding), invbal_value_ending = (_valueEnding + _r.invbal_value_in - _r.invbal_value_out), invbal_nn_beginning = (_nnEnding), invbal_nn_ending = (_nnEnding + _r.invbal_nn_in - _r.invbal_nn_out), invbal_nnval_beginning = (_nnvalEnding), invbal_nnval_ending = (_nnvalEnding + _r.invbal_nnval_in - _r.invbal_nnval_out), invbal_dirty = FALSE WHERE (invbal_id=_r.invbal_id); _qohEnding = (_qohEnding + _r.invbal_qty_in - _r.invbal_qty_out); _valueEnding = (_valueEnding + _r.invbal_value_in - _r.invbal_value_out); _nnEnding = (_nnEnding + _r.invbal_nn_in - _r.invbal_nn_out); _nnvalEnding = (_nnvalEnding + _r.invbal_nnval_in - _r.invbal_nnval_out); END IF; END LOOP; UPDATE invbal SET invbal_dirty = false WHERE (invbal_id=pInvbalid); RETURN pInvbalid; END; $_$; 7DROP FUNCTION public.forwardupdateinvbalance(integer); publicadminfalse3992812551691836forwardupdateitemsite(integer)FUNCTIONPCREATE FUNCTION forwardupdateitemsite(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteId ALIAS FOR $1; _r RECORD; _invbalid INTEGER; BEGIN SELECT invbal_id INTO _r FROM invbal JOIN period ON (invbal_period_id=period_id) WHERE (invbal_itemsite_id=pItemsiteid) ORDER BY period_start LIMIT 1; IF (FOUND) THEN RETURN forwardUpdateInvbalance(_r.invbal_id); ELSE _invbalid := nextval('invbal_invbal_id_seq'); INSERT INTO invbal ( invbal_id, invbal_period_id, invbal_itemsite_id, invbal_qoh_beginning, invbal_qoh_ending, invbal_qty_in, invbal_qty_out, invbal_value_beginning, invbal_value_ending, invbal_value_in, invbal_value_out, invbal_nn_beginning, invbal_nn_ending, invbal_nn_in, invbal_nn_out, invbal_nnval_beginning, invbal_nnval_ending, invbal_nnval_in, invbal_nnval_out, invbal_dirty ) SELECT _invbalid, period_id, pItemsiteid, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, false FROM period ORDER BY period_start LIMIT 1; RETURN forwardUpdateInvbalance(_invbalid); END IF; RETURN -1; END; $_$; 5DROP FUNCTION public.forwardupdateitemsite(integer); publicadminfalse83992t12551691837"forwardupdatetrialbalance(integer)FUNCTION# CREATE FUNCTION forwardupdatetrialbalance(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTrialbalid ALIAS FOR $1; _p RECORD; _r RECORD; _ending NUMERIC; _prevYear INTEGER; _currYear INTEGER; _prevYearClosed BOOLEAN; _currYearClosed BOOLEAN; _result INTEGER; BEGIN SELECT trialbal_accnt_id, trialbal_ending, yearperiod_id, yearperiod_closed, period_end, accnt_type IN ('E', 'R') AS revexp INTO _p FROM trialbal, period, yearperiod, accnt WHERE ( (trialbal_period_id=period_id) AND (yearperiod_id=period_yearperiod_id) AND (trialbal_accnt_id=accnt_id) AND (trialbal_id=pTrialbalid) ); _ending = _p.trialbal_ending; SELECT yearperiod_id, yearperiod_closed INTO _prevYear, _prevYearClosed FROM yearperiod WHERE (_p.period_end BETWEEN yearperiod_start AND yearperiod_end); IF (NOT FOUND) THEN _prevYear := -1; _prevYearClosed := false; END IF; -- Find all of the subsequent periods and their trialbal, if they exist FOR _r IN SELECT period_id, period_end, trialbal_id, trialbal_debits, trialbal_credits, trialbal_yearend FROM period LEFT OUTER JOIN trialbal ON ( (trialbal_period_id=period_id) AND (trialbal_accnt_id=_p.trialbal_accnt_id) ) WHERE (period_start > _p.period_end) ORDER BY period_start LOOP SELECT yearperiod_id, yearperiod_closed INTO _currYear, _currYearClosed FROM yearperiod WHERE (_r.period_end BETWEEN yearperiod_start AND yearperiod_end); IF (NOT FOUND) THEN _currYear := -1; _currYearClosed := false; END IF; IF (_p.revexp AND _currYear != _prevYear) THEN _ending := 0; IF (_prevYearClosed) THEN SELECT updateRetainedEarnings(_prevYear) INTO _result; IF (_result < 0) THEN RETURN _result; END IF; END IF; END IF; _prevYear := _currYear; _prevYearClosed := _currYearClosed; IF (_r.trialbal_id IS NULL) THEN -- SELECT SUM(gltrans_amount) INTO _glAmount -- FROM gltrans -- WHERE ( (gltrans_date BETWEEN _r.period_start and _r.period_end ) -- AND (gltrans_accnt_id=_p.trialbal_accnt_id) -- AND (gltrans_posted) ); -- and change 2nd and 3rd VALUES line of INSERT to read -- _ending, _ending + _glAmount, -- noneg(0 - _glAmount), noneg(_glAmount), FALSE ); INSERT INTO trialbal ( trialbal_period_id, trialbal_accnt_id, trialbal_beginning, trialbal_ending, trialbal_debits, trialbal_credits, trialbal_dirty ) VALUES ( _r.period_id, _p.trialbal_accnt_id, _ending, _ending, 0, 0, FALSE ); ELSE UPDATE trialbal SET trialbal_beginning = (_ending + trialbal_yearend), trialbal_ending = (_ending + trialbal_yearend - _r.trialbal_debits + _r.trialbal_credits), trialbal_dirty = FALSE WHERE (trialbal_id=_r.trialbal_id); _ending = (_ending + _r.trialbal_yearend - _r.trialbal_debits + _r.trialbal_credits); END IF; END LOOP; UPDATE trialbal SET trialbal_dirty = FALSE WHERE (trialbal_id=pTrialbalid); RETURN pTrialbalid; END; $_$; 9DROP FUNCTION public.forwardupdatetrialbalance(integer); publicadminfalse3992812551691838freezeaccountingperiod(integer)FUNCTIONHCREATE FUNCTION freezeaccountingperiod(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; BEGIN -- Check to make use that the period is not already frozen IF ( ( SELECT period_freeze FROM period WHERE (period_id=pPeriodid) ) ) THEN RETURN -2; END IF; -- Set the period_freeze flag UPDATE period SET period_freeze=TRUE WHERE (period_id=pPeriodid); RETURN pPeriodid; END; $_$; 6DROP FUNCTION public.freezeaccountingperiod(integer); publicadminfalse3992812552008384Cfreightdetail(text, integer, integer, integer, date, text, integer)FUNCTION$CREATE FUNCTION freightdetail(text, integer, integer, integer, date, text, integer) RETURNS SETOF freightdata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOrderType ALIAS FOR $1; pOrderId ALIAS FOR $2; pCustId ALIAS FOR $3; pShiptoId ALIAS FOR $4; pOrderDate ALIAS FOR $5; pShipVia ALIAS FOR $6; pCurrId ALIAS FOR $7; _row freightData%ROWTYPE; _order RECORD; _weights RECORD; _includepkgweight BOOLEAN := FALSE; _qry TEXT; _debug BOOLEAN := FALSE; BEGIN IF (_debug) THEN RAISE NOTICE 'pOrderType = %', pOrderType; RAISE NOTICE 'pOrderId = %', pOrderId; RAISE NOTICE 'pCustId = %', pCustId; RAISE NOTICE 'pShiptoId = %', pShiptoId; RAISE NOTICE 'pOrderDate = %', pOrderDate; RAISE NOTICE 'pShipVia = %', pShipVia; RAISE NOTICE 'pCurrId = %', pCurrId; END IF; SELECT fetchMetricBool('IncludePackageWeight') INTO _includepkgweight; --Get the order header information need to match --against price schedules IF (pOrderType = 'SO') THEN SELECT cust_id AS cust_id, custtype_id, custtype_code, COALESCE(shipto_id, -1) AS shipto_id, COALESCE(shipto_num, '') AS shipto_num, COALESCE(pOrderDate, cohead_orderdate) AS orderdate, COALESCE(pShipVia, cohead_shipvia) AS shipvia, shipto_shipzone_id AS shipzone_id, COALESCE(pCurrId, cohead_curr_id) AS curr_id, currConcat(COALESCE(pCurrId, cohead_curr_id)) AS currAbbr INTO _order FROM cohead JOIN custinfo ON (cust_id=COALESCE(pCustId, cohead_cust_id)) JOIN custtype ON (custtype_id=cust_custtype_id) LEFT OUTER JOIN shiptoinfo ON (shipto_id=COALESCE(pShiptoId, cohead_shipto_id)) WHERE (cohead_id=pOrderId); ELSIF (pOrderType = 'QU') THEN SELECT quhead_cust_id AS cust_id, custtype_id, custtype_code, COALESCE(shipto_id, -1) AS shipto_id, COALESCE(shipto_num, '') AS shipto_num, quhead_quotedate AS orderdate, quhead_shipvia AS shipvia, shipto_shipzone_id AS shipzone_id, quhead_curr_id AS curr_id, currConcat(quhead_curr_id) AS currAbbr INTO _order FROM quhead JOIN custinfo ON (cust_id=quhead_cust_id) JOIN custtype ON (custtype_id=cust_custtype_id) LEFT OUTER JOIN shiptoinfo ON (shipto_id=quhead_shipto_id) WHERE (quhead_id=pOrderId); ELSIF (pOrderType = 'RA') THEN SELECT cust_id AS cust_id, custtype_id, custtype_code, COALESCE(shipto_id, -1) AS shipto_id, COALESCE(shipto_num, '') AS shipto_num, COALESCE(pOrderDate, rahead_authdate) AS orderdate, ''::text AS shipvia, shipto_shipzone_id AS shipzone_id, COALESCE(pCurrId, rahead_curr_id) AS curr_id, currConcat(COALESCE(pCurrId, rahead_curr_id)) AS currAbbr INTO _order FROM rahead JOIN custinfo ON (cust_id=COALESCE(pCustId, rahead_cust_id)) JOIN custtype ON (custtype_id=cust_custtype_id) LEFT OUTER JOIN shiptoinfo ON (shipto_id=COALESCE(pShiptoId, rahead_shipto_id)) WHERE (rahead_id=pOrderId); ELSE RAISE EXCEPTION 'Invalid order type.'; END IF; IF (_debug) THEN RAISE NOTICE 'cust_id = %', _order.cust_id; RAISE NOTICE 'custtype_id = %', _order.custtype_id; RAISE NOTICE 'shipto_id = %', _order.shipto_id; RAISE NOTICE 'shipto_num = %', _order.shipto_num; RAISE NOTICE 'orderdate = %', _order.orderdate; RAISE NOTICE 'shipvia = %', _order.shipvia; RAISE NOTICE 'shipzone_id = %', _order.shipzone_id; RAISE NOTICE 'curr_id = %', _order.curr_id; RAISE NOTICE 'currAbbr = %', _order.currAbbr; END IF; --Get a list of aggregated weights from sites and --freight classes used on order lines IF (_includePkgWeight) THEN _qry := 'SELECT SUM(orderitem_qty_ordered * orderitem_qty_invuomratio * (item_prodweight + item_packweight)) AS weight, '; ELSE _qry := 'SELECT SUM(orderitem_qty_ordered * orderitem_qty_invuomratio * item_prodweight) AS weight, '; END IF; _qry := _qry || 'itemsite_warehous_id, COALESCE(item_freightclass_id, -1) AS item_freightclass_id FROM orderitem JOIN itemsite ON (itemsite_id=orderitem_itemsite_id) JOIN item ON (item_id=itemsite_item_id) '; IF (pOrderType = 'RA') THEN _qry := _qry || 'JOIN raitem ON ((orderitem_id=raitem_id) AND (raitem_disposition IN (''C'',''R'',''P''))) '; END IF; _qry := _qry || ' WHERE ( (orderitem_orderhead_type=' || quote_literal(pOrderType) || ') AND (orderitem_orderhead_id=' || quote_literal(pOrderId) || ') AND (orderitem_status <> ''X'') ) GROUP BY itemsite_warehous_id, item_freightclass_id;'; FOR _weights IN EXECUTE _qry LOOP _row := calculateFreightDetail( _order.cust_id, --pCustId _order.custtype_id, --pCustTypeId _order.custtype_code, --pCustTypeCode _order.shipto_id, --pShiptoId _order.shipzone_id, --pShipZoneId _order.shipto_num, --pShiptoNum _order.orderdate, --pOrderDate _order.shipvia, --pShipVia _order.curr_id, --pCurrId _order.currAbbr, --pCurrAbbr _weights.itemsite_warehous_id, --pItemSiteWhsId _weights.item_freightclass_id, --pItemFreightclassId _weights.weight --pWeight ); RETURN NEXT _row; END LOOP; RETURN; END; $_$; ZDROP FUNCTION public.freightdetail(text, integer, integer, integer, date, text, integer); publicadminfalse83992258712552008385Jfreightdetailquote(integer, text, integer, text, date, text, text, text[])FUNCTION'CREATE FUNCTION freightdetailquote(integer, text, integer, text, date, text, text, text[]) RETURNS SETOF freightdata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustId ALIAS FOR $1; pCustNumber ALIAS FOR $2; pShiptoId ALIAS FOR $3; pShiptoNum ALIAS FOR $4; pOrderDate ALIAS FOR $5; pShipVia ALIAS FOR $6; pItemArrayType ALIAS FOR $7; pItemQty ALIAS FOR $8; -- Array item_id format = ARRAY[['300','3'],['310','50']] -- Array item_number format = ARRAY[['YTRUCK1','3'],['RTRUCK1','50']] -- Array itemsite_id format = ARRAY[['293','3'],['302','50']] _cust RECORD; _shipto RECORD; _curr RECORD; _includepkgweight BOOLEAN := FALSE; _order_date DATE; _ship_via TEXT; _item_num RECORD; _item_id RECORD; _weights RECORD; _row freightData%ROWTYPE; _debug BOOLEAN := FALSE; BEGIN -- Parameters are setup to allow this function to be called multiple ways. -- Check parameters and lookup what is NULL. -- Check pCustId and pCustNumber. IF (pCustId IS NULL AND (pCustNumber IS NULL OR pCustNumber = '')) THEN RAISE EXCEPTION 'You must specify a Customer ID or Number to get a freight quote.'; ELSIF (pCustId IS NULL AND pCustNumber IS NOT NULL) THEN -- Get customer info using pCustNumber. SELECT cust_id, cust_number, custtype_id, custtype_code, cust_curr_id, cust_shipvia INTO _cust FROM custinfo LEFT JOIN custtype ON cust_custtype_id = custtype_id WHERE 1=1 AND cust_number = pCustNumber; ELSE -- Get customer info using pCustId. SELECT cust_id, cust_number, custtype_id, custtype_code, cust_curr_id, cust_shipvia INTO _cust FROM custinfo LEFT JOIN custtype ON cust_custtype_id = custtype_id WHERE 1=1 AND cust_id = pCustId; END IF; IF(NOT FOUND) THEN RAISE EXCEPTION 'Invalid Customer specified when trying to get a freight quote.'; END IF; -- Check pShiptoId and pShiptoNum. IF (pShiptoId IS NULL AND (pShiptoNum IS NULL OR pShiptoNum = '')) THEN -- Get Customer's default shipto. SELECT shipto_id, shipto_name, shipto_shipzone_id, shipto_shipvia, shipto_num INTO _shipto FROM shiptoinfo WHERE 1=1 AND shipto_cust_id = _cust.cust_id AND shipto_default; ELSIF (pShiptoId IS NULL AND pShiptoNum IS NOT NULL) THEN -- Get shipto info using pShiptoNum. SELECT shipto_id, shipto_name, shipto_shipzone_id, shipto_shipvia, shipto_num INTO _shipto FROM shiptoinfo WHERE 1=1 AND shipto_cust_id = _cust.cust_id AND shipto_num = pShiptoNum; ELSE -- Get shipto info using pShiptoId. SELECT shipto_id, shipto_name, shipto_shipzone_id, shipto_shipvia, shipto_num INTO _shipto FROM shiptoinfo WHERE 1=1 AND shipto_cust_id = _cust.cust_id AND shipto_id = pShiptoId; END IF; IF(NOT FOUND) THEN RAISE EXCEPTION 'Invalid Ship-to specified when trying to get a freight quote.'; END IF; -- Get curr info. SELECT curr_id, curr_abbr INTO _curr FROM curr_symbol WHERE 1=1 AND curr_id = _cust.cust_curr_id; IF(NOT FOUND) THEN RAISE EXCEPTION 'Could not find currency when trying to get a freight quote.'; END IF; -- Check pOrderDate. IF (pOrderDate IS NULL) THEN _order_date := CURRENT_DATE; ELSE _order_date := pOrderDate; END IF; -- Check pShipVia. IF (pShipVia IS NULL OR pShipVia = '') THEN IF (_shipto.shipto_shipvia IS NULL OR _shipto.shipto_shipvia = '') THEN _ship_via := _cust.cust_shipvia; ELSE _ship_via := _shipto.shipto_shipvia; END IF; ELSE _ship_via := pShipVia; END IF; -- Determine if package weight should be included in freight calculation. SELECT fetchMetricBool('IncludePackageWeight') INTO _includepkgweight; -- Check pItemQty. IF (pItemQty IS NULL OR array_upper(pItemQty,1) IS NULL) THEN -- Item Array is NULL. RAISE EXCEPTION 'You must specify an Item ID, Item Number or Itemsite ID to get a freight quote.'; ELSIF (pItemArrayType = 'item_number' AND (array_upper(pItemQty,1) > 0)) THEN -- Using item_number. FOR _weights IN -- Get a list of aggregated weights from sites and freight classes for items. SELECT CASE WHEN _includepkgweight THEN SUM(qty * (item_prodweight + item_packweight)) ELSE SUM(qty * (item_prodweight)) END AS weight, itemsite_warehous_id, COALESCE(item_freightclass_id, -1) AS item_freightclass_id FROM -- Create item_number -> qty record from array. (SELECT unnest((SELECT pItemQty[1:array_upper(pItemQty,1)][1])) AS item_number, unnest((SELECT pItemQty[1:array_upper(pItemQty,1)][2:array_ndims(pItemQty)]))::numeric AS qty ) AS itemnum_qty JOIN item USING (item_number) JOIN itemsite ON item_id=itemsite_item_id WHERE 1=1 AND itemsite_warehous_id = fetchprefwarehousid() GROUP BY itemsite_warehous_id, item_freightclass_id LOOP -- Calculate the freight detail for these item weights. _row := calculateFreightDetail( _cust.cust_id, --pCustId _cust.custtype_id, --pCustTypeId _cust.custtype_code, --pCustTypeCode _shipto.shipto_id, --pShiptoId _shipto.shipto_shipzone_id, --pShipZoneId _shipto.shipto_num, --pShiptoNum _order_date, --pOrderDate _ship_via, --pShipVia _curr.curr_id, --pCurrId _curr.curr_abbr, --pCurrAbbr _weights.itemsite_warehous_id, --pItemSiteWhsId _weights.item_freightclass_id, --pItemFreightclassId _weights.weight --pWeight ); RETURN NEXT _row; END LOOP; ELSIF (pItemArrayType = 'item_id' AND (array_upper(pItemQty,1) > 0)) THEN -- Using item_id. FOR _weights IN -- Get a list of aggregated weights from sites and freight classes for items. SELECT CASE WHEN _includepkgweight THEN SUM(qty * (item_prodweight + item_packweight)) ELSE SUM(qty * (item_prodweight)) END AS weight, itemsite_warehous_id, COALESCE(item_freightclass_id, -1) AS item_freightclass_id FROM -- Create item_id -> qty record from array. (SELECT unnest((SELECT pItemQty[1:array_upper(pItemQty,1)][1]))::integer AS item_id, unnest((SELECT pItemQty[1:array_upper(pItemQty,1)][2:array_ndims(pItemQty)]))::numeric AS qty ) AS itemid_qty JOIN item USING (item_id) JOIN itemsite ON item_id=itemsite_item_id WHERE 1=1 AND itemsite_warehous_id = fetchprefwarehousid() GROUP BY itemsite_warehous_id, item_freightclass_id LOOP -- Calculate the freight detail for these item weights. _row := calculateFreightDetail( _cust.cust_id, --pCustId _cust.custtype_id, --pCustTypeId _cust.custtype_code, --pCustTypeCode _shipto.shipto_id, --pShiptoId _shipto.shipto_shipzone_id, --pShipZoneId _shipto.shipto_num, --pShiptoNum _order_date, --pOrderDate _ship_via, --pShipVia _curr.curr_id, --pCurrId _curr.curr_abbr, --pCurrAbbr _weights.itemsite_warehous_id, --pItemSiteWhsId _weights.item_freightclass_id, --pItemFreightclassId _weights.weight --pWeight ); RETURN NEXT _row; END LOOP; ELSIF (pItemArrayType = 'itemsite_id' AND (array_upper(pItemQty,1) > 0)) THEN -- Using itemsite_id. FOR _weights IN -- Get a list of aggregated weights from sites and freight classes for items. SELECT CASE WHEN _includepkgweight THEN SUM(qty * (item_prodweight + item_packweight)) ELSE SUM(qty * (item_prodweight)) END AS weight, itemsite_warehous_id, COALESCE(item_freightclass_id, -1) AS item_freightclass_id FROM -- Create itemsite_id -> qty record from array. (SELECT unnest((SELECT pItemQty[1:array_upper(pItemQty,1)][1]))::integer AS itemsite_id, unnest((SELECT pItemQty[1:array_upper(pItemQty,1)][2:array_ndims(pItemQty)]))::numeric AS qty ) AS itemsiteid_qty JOIN itemsite USING (itemsite_id) JOIN item ON item_id=itemsite_item_id WHERE 1=1 GROUP BY itemsite_warehous_id, item_freightclass_id LOOP -- Calculate the freight detail for these item weights. _row := calculateFreightDetail( _cust.cust_id, --pCustId _cust.custtype_id, --pCustTypeId _cust.custtype_code, --pCustTypeCode _shipto.shipto_id, --pShiptoId _shipto.shipto_shipzone_id, --pShipZoneId _shipto.shipto_num, --pShiptoNum _order_date, --pOrderDate _ship_via, --pShipVia _curr.curr_id, --pCurrId _curr.curr_abbr, --pCurrAbbr _weights.itemsite_warehous_id, --pItemSiteWhsId _weights.item_freightclass_id, --pItemFreightclassId _weights.weight --pWeight ); RETURN NEXT _row; END LOOP; ELSE -- The item array provided is invalid. RAISE EXCEPTION 'The Item/Itemsite array provided when trying to get a freight quote is invalid.'; END IF; IF(NOT FOUND) THEN RAISE EXCEPTION 'Error trying to aggregated weights when getting a freight quote.'; END IF; -- Print debug. IF (_debug) THEN RAISE NOTICE 'pCustId = %', _cust.cust_id; RAISE NOTICE 'pCustTypeId = %', _cust.custtype_id; RAISE NOTICE 'pCustTypeCode = %', _cust.custtype_code; RAISE NOTICE 'pShiptoId = %', _shipto.shipto_id; RAISE NOTICE 'pShipZoneId = %', _shipto.shipto_shipzone_id; RAISE NOTICE 'pShiptoNum = %', _shipto.shipto_num; RAISE NOTICE 'pOrderDate = %', _order_date; RAISE NOTICE 'pShipVia = %', _ship_via; RAISE NOTICE 'pCurrId = %', _curr.curr_id; RAISE NOTICE 'pCurrAbbr = %', _curr.curr_abbr; END IF; RETURN; END; $_$; aDROP FUNCTION public.freightdetailquote(integer, text, integer, text, date, text, text, text[]); publicadminfalse82587399212551691842&freightforrecv(text, integer, boolean)FUNCTIONCREATE FUNCTION freightforrecv(text, integer, boolean) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; porderitemid ALIAS FOR $2; pposted ALIAS FOR $3; _freight NUMERIC; BEGIN IF (pordertype = 'TO' AND NOT fetchMetricBool('MultiWhs')) THEN RETURN 0; ELSIF (pordertype = 'RA' AND NOT fetchMetricBool('EnableReturnAuth')) THEN RETURN 0; END IF; SELECT SUM(COALESCE(recv_freight, 0)) INTO _freight FROM recv WHERE ((recv_orderitem_id=porderitemid) AND (recv_posted = pposted) AND (recv_order_type=pordertype)); RETURN COALESCE(_freight, 0.0); END; $_$; =DROP FUNCTION public.freightforrecv(text, integer, boolean); publicadminfalse3992812551691843gen_salt(text)FUNCTIONlCREATE FUNCTION gen_salt(text) RETURNS text LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pg_gen_salt'; %DROP FUNCTION public.gen_salt(text); publicadminfalse812551691844gen_salt(text, integer)FUNCTION|CREATE FUNCTION gen_salt(text, integer) RETURNS text LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pg_gen_salt_rounds'; .DROP FUNCTION public.gen_salt(text, integer); publicadminfalse8u12551691845getactiverevid(text, integer)FUNCTIONCREATE FUNCTION getactiverevid(text, integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTargetType ALIAS FOR $1; pTargetid ALIAS FOR $2; _revid INTEGER; BEGIN --See if revcontrol turned on IF (fetchmetricbool('RevControl')) THEN IF (pTargetType='BOM') THEN SELECT rev_id INTO _revid FROM rev WHERE ((rev_target_type='BOM') AND (rev_target_id=pTargetid) AND (rev_status='A')); IF (NOT FOUND) THEN _revid:=-1; END IF; ELSE IF (pTargetType='BOO') THEN SELECT rev_id INTO _revid FROM rev WHERE ((rev_target_type='BOO') AND (rev_target_id=pTargetid) AND (rev_status='A')); IF (NOT FOUND) THEN _revid:=-1; END IF; ELSE RAISE EXCEPTION 'Invalid Revision Type'; END IF; END IF; ELSE _revid:=-1; END IF; RETURN _revid; END; $_$; 4DROP FUNCTION public.getactiverevid(text, integer); publicadminfalse3992812551691846getaddrid(text)FUNCTION;CREATE FUNCTION getaddrid(paddressnumber text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pAddressNumber IS NULL OR pAddressNumber = '') THEN RETURN NULL; END IF; SELECT addr_id INTO _returnVal FROM addr WHERE (addr_number=pAddressNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Address Number % not found.', pAddressNumber; END IF; RETURN _returnVal; END; $$; 5DROP FUNCTION public.getaddrid(paddressnumber text); publicadminfalse8399212551691847getadjustmenttaxtypeid()FUNCTIONCREATE FUNCTION getadjustmenttaxtypeid() RETURNS integer LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _taxtypeid INTEGER; BEGIN SELECT taxtype_id INTO _taxtypeid FROM taxtype WHERE (taxtype_name='Adjustment'); RETURN _taxtypeid; END; $$; /DROP FUNCTION public.getadjustmenttaxtypeid(); publicadminfalse3992812551691848"getaropenid(text, character, text)FUNCTIONCREATE FUNCTION getaropenid(text, character, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustNumber ALIAS FOR $1; pDocType ALIAS FOR $2; pDocNumber ALIAS FOR $3; _returnVal INTEGER; BEGIN IF ((pCustNumber IS NULL) OR (pDocType IS NULL) OR (pDocNumber IS NULL)) THEN RETURN NULL; END IF; SELECT aropen_id INTO _returnVal FROM aropen WHERE ((aropen_cust_id=getCustId(pCustNumber,true)) AND (UPPER(aropen_doctype)=UPPER(pDocType)) AND (UPPER(aropen_docnumber)=UPPER(pDocNumber))); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'AR Open Item % not found.', pDocNumber; END IF; RETURN _returnVal; END; $_$; 9DROP FUNCTION public.getaropenid(text, character, text); publicadminfalse3992812551691849getbankaccntid(text)FUNCTIONJCREATE FUNCTION getbankaccntid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankAccntName ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pBankAccntName IS NULL) THEN RETURN NULL; END IF; SELECT bankaccnt_id INTO _returnVal FROM bankaccnt WHERE (UPPER(bankaccnt_name)=UPPER(pBankAccntName)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Bank Account % not found.', pBankAccntName; END IF; RETURN _returnVal; END; $_$; +DROP FUNCTION public.getbankaccntid(text); publicadminfalse39928 12551691850getbomitemid(text, text, text)FUNCTION<CREATE FUNCTION getbomitemid(text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemNumber ALIAS FOR $1; pRevision ALIAS FOR $2; pSeqNumber ALIAS FOR $3; _returnVal INTEGER; BEGIN IF ((pItemNumber IS NULL) OR (pSeqNumber IS NULL) OR (pItemNumber = '') OR (pSeqNumber = '') ) THEN RETURN NULL; END IF; SELECT bomitem_id INTO _returnVal FROM bomitem(getItemId(pItemNumber),COALESCE(getRevId('BOM',pItemNumber,pRevision))) WHERE (bomitem_seqnumber=pSeqNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Sequence % on Bill of Material % Revision % not found.', pSeqNumber, pItemNumber, pRevision; END IF; RETURN _returnVal; END; $_$; 5DROP FUNCTION public.getbomitemid(text, text, text); publicadminfalse3992812551691851getbooitemseqid(text, text)FUNCTIONCREATE FUNCTION getbooitemseqid(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemNumber ALIAS FOR $1; pSeqNumber ALIAS FOR $2; _revid INTEGER; _returnVal INTEGER; BEGIN IF ((pItemNumber IS NULL) OR (pSeqNumber IS NULL)) THEN RETURN NULL; END IF; IF (NOT fetchMetricBool('Routings')) THEN RETURN -1; ELSE SELECT booitem_seq_id INTO _returnVal FROM booitem(getItemId(pItemNumber)) WHERE (booitem_seqnumber=CAST(pSeqNumber AS integer)); END IF; IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Boo Sequence % for Item % not found.', pSeqNumber, pItemNumber; END IF; RETURN _returnVal; END; $_$; 2DROP FUNCTION public.getbooitemseqid(text, text); publicadminfalse3992812551691852getbudgheadid(text)FUNCTION#CREATE FUNCTION getbudgheadid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBudghead ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pBudghead IS NULL) THEN RETURN NULL; END IF; SELECT budghead_id INTO _returnVal FROM budghead WHERE (budghead_name=(pBudghead)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Budget % not found.', pBudghead; END IF; RETURN _returnVal; END; $_$; *DROP FUNCTION public.getbudgheadid(text); publicadminfalse3992812551691853getcashrcptid(text, text, text)FUNCTION"CREATE FUNCTION getcashrcptid(text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustNumber ALIAS FOR $1; pFundsType ALIAS FOR $2; pDocNumber ALIAS FOR $3; _returnVal INTEGER; BEGIN IF ((pCustNumber IS NULL) OR (pFundsType IS NULL) OR (pDocNumber IS NULL)) THEN RETURN NULL; END IF; SELECT cashrcpt_id INTO _returnVal FROM cashrcpt WHERE ((cashrcpt_cust_id=getCustId(pCustNumber,true)) AND (UPPER(cashrcpt_fundstype)=UPPER(pFundsType)) AND (UPPER(cashrcpt_docnumber)=UPPER(pDocNumber))); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Cash Receipt % not found.', pDocNumber; END IF; RETURN _returnVal; END; $_$; 6DROP FUNCTION public.getcashrcptid(text, text, text); publicadminfalse39928 12551691854getcharid(text, text)FUNCTIONCREATE FUNCTION getcharid(pchar text, ptype text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (COALESCE(pChar, '') = '') THEN RETURN NULL; END IF; SELECT char_id INTO _returnVal FROM char WHERE ((char_name=pChar) AND ((pType IN ('C','CT') AND char_customers) OR (pType IN ('I','SI','QI','W','PI','TI') AND char_items) OR (pType='CRMACCT' AND char_crmaccounts) OR (pType='ADDR' AND char_addresses) OR (pType='CNTCT' AND char_contacts) OR (pType='LS' AND char_lotserial) OR (pType='EMP' AND char_employees) OR (pType='INCDT' AND char_incidents) )) LIMIT 1; IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Characteristic % not found.', pChar; END IF; RETURN _returnVal; END; $$; 8DROP FUNCTION public.getcharid(pchar text, ptype text); publicadminfalse83992$12551691855getclasscodeid(text)FUNCTION-CREATE FUNCTION getclasscodeid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pClassCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pClassCode IS NULL) THEN RETURN NULL; END IF; SELECT classcode_id INTO _returnVal FROM classcode WHERE (classcode_code=pClassCode); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Class Code % not found.', pClassCode; END IF; RETURN _returnVal; END; $_$; +DROP FUNCTION public.getclasscodeid(text); publicadminfalse8399212551691856getcmheadid(text)FUNCTION;CREATE FUNCTION getcmheadid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCreditMemoNumber ALIAS FOR $1; BEGIN RETURN getCmheadId(pCreditMemoNumber, NULL); END; $_$; (DROP FUNCTION public.getcmheadid(text); publicadminfalse8399212551691857getcmheadid(text, boolean)FUNCTIONCREATE FUNCTION getcmheadid(text, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCreditMemoNumber ALIAS FOR $1; pPosted ALIAS FOR $2; _returnVal INTEGER; BEGIN IF (pCreditMemoNumber IS NULL) THEN RETURN NULL; END IF; SELECT cmhead_id INTO _returnVal FROM cmhead WHERE (UPPER(cmhead_number)=UPPER(pCreditMemoNumber)) AND ((pPosted IS NULL) OR (cmhead_posted=pPosted)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Credit Memo % not found.', pCreditMemoNumber; END IF; RETURN _returnVal; END; $_$; 1DROP FUNCTION public.getcmheadid(text, boolean); publicadminfalse83992'12551691858getcmnttypeid(text)FUNCTION@CREATE FUNCTION getcmnttypeid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmntType ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (COALESCE(TRIM(pCmntType), '') = '') THEN RETURN NULL; END IF; SELECT cmnttype_id INTO _returnVal FROM cmnttype WHERE (cmnttype_name=pCmntType) LIMIT 1; IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Comment Type % not found.', pCmntType; END IF; RETURN _returnVal; END; $_$; *DROP FUNCTION public.getcmnttypeid(text); publicadminfalse8399212551691859getcntctid(text)FUNCTIONcCREATE FUNCTION getcntctid(pcontactnumber text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN SELECT getCntctId(pContactNumber,true) INTO _returnVal; RETURN _returnVal; END; $$; 6DROP FUNCTION public.getcntctid(pcontactnumber text); publicadminfalse83992,12551691860getcntctid(text, boolean)FUNCTIONCREATE FUNCTION getcntctid(pcontactnumber text, pnotfounderr boolean) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (COALESCE(TRIM(pContactNumber), '') = '') THEN RETURN NULL; END IF; SELECT cntct_id INTO _returnVal FROM cntct WHERE (cntct_number=pContactNumber); IF (_returnVal IS NULL AND pNotFoundErr) THEN RAISE EXCEPTION 'Contact Number % not found.', pContactNumber; ELSIF (_returnVal IS NULL) THEN RETURN NULL; END IF; RETURN _returnVal; END; $$; LDROP FUNCTION public.getcntctid(pcontactnumber text, pnotfounderr boolean); publicadminfalse83992@12551691861getcoheadid(text)FUNCTION@CREATE FUNCTION getcoheadid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSalesOrderNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pSalesOrderNumber IS NULL) THEN RETURN NULL; END IF; SELECT cohead_id INTO _returnVal FROM cohead WHERE (cohead_number=pSalesOrderNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Sales Order % not found.', pSalesOrderNumber; END IF; RETURN _returnVal; END; $_$; (DROP FUNCTION public.getcoheadid(text); publicadminfalse83992:12551691862getcoitemid(text, text)FUNCTIONCREATE FUNCTION getcoitemid(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSalesOrderNumber ALIAS FOR $1; pLineNumber ALIAS FOR $2; _linenumber INTEGER; _subnumber INTEGER; _returnVal INTEGER; BEGIN IF (pSalesOrderNumber IS NULL OR pLineNumber IS NULL) THEN RETURN NULL; END IF; --Parse Line Number IF (position('.' in pLineNumber) > 0) THEN _linenumber := CAST(substring(pLineNumber from 1 for position('.' in pLineNumber)-1) AS INTEGER); _subnumber := CAST(substring(pLineNumber from position('.' in pLineNumber)+1 for length(pLineNumber)) AS INTEGER); ELSE _linenumber := CAST(pLineNumber AS INTEGER); _subnumber := 0; END IF; SELECT coitem_id INTO _returnVal FROM cohead, coitem WHERE ((cohead_number=pSalesOrderNumber) AND (coitem_cohead_id=cohead_id) AND (coitem_linenumber=_linenumber) AND (coitem_subnumber=_subnumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Sales Order % not found.', pSalesOrderNumber; END IF; RETURN _returnVal; END; $_$; .DROP FUNCTION public.getcoitemid(text, text); publicadminfalse83992-12551847430getcontrcteffective(text)FUNCTION2CREATE FUNCTION getcontrcteffective(pcontrctnumber text) RETURNS date LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal DATE; BEGIN IF (pContrctNumber IS NULL) THEN RETURN NULL; END IF; SELECT contrct_effective INTO _returnVal FROM contrct WHERE (contrct_number=pContrctNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Contract Number % not found.', pContrctNumber; END IF; RETURN _returnVal; END; $$; ?DROP FUNCTION public.getcontrcteffective(pcontrctnumber text); publicadminfalse83992312551847431getcontrctexpires(text)FUNCTION.CREATE FUNCTION getcontrctexpires(pcontrctnumber text) RETURNS date LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal DATE; BEGIN IF (pContrctNumber IS NULL) THEN RETURN NULL; END IF; SELECT contrct_expires INTO _returnVal FROM contrct WHERE (contrct_number=pContrctNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Contract Number % not found.', pContrctNumber; END IF; RETURN _returnVal; END; $$; =DROP FUNCTION public.getcontrctexpires(pcontrctnumber text); publicadminfalse83992412551847432getcontrctid(text)FUNCTION*CREATE FUNCTION getcontrctid(pcontrctnumber text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pContrctNumber IS NULL) THEN RETURN NULL; END IF; SELECT contrct_id INTO _returnVal FROM contrct WHERE (contrct_number=pContrctNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Contract Number % not found.', pContrctNumber; END IF; RETURN _returnVal; END; $$; 8DROP FUNCTION public.getcontrctid(pcontrctnumber text); publicadminfalse3992812551691863getcostcatid(text)FUNCTION"CREATE FUNCTION getcostcatid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCostCat ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pCostCat IS NULL) THEN RETURN NULL; END IF; SELECT costcat_id INTO _returnVal FROM costcat WHERE (costcat_code=pCostCat); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Cost Category Code % not found.', pCostCat; END IF; RETURN _returnVal; END; $_$; )DROP FUNCTION public.getcostcatid(text); publicadminfalse83992>12551691864getcostelemid(text)FUNCTION4CREATE FUNCTION getcostelemid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCostElemType ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pCostElemType IS NULL) THEN RETURN NULL; END IF; SELECT costelem_id INTO _returnVal FROM costelem WHERE (costelem_type=pCostElemType); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Cost Element % not found.', pCostElemType; END IF; RETURN _returnVal; END; $_$; *DROP FUNCTION public.getcostelemid(text); publicadminfalse83992C12551691865getcrmacctid(text)FUNCTION@CREATE FUNCTION getcrmacctid(pacctnumber text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pAcctNumber IS NULL) THEN RETURN NULL; END IF; SELECT crmacct_id INTO _returnVal FROM crmacct WHERE (UPPER(crmacct_number)=UPPER(pAcctNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'CRM Account Number % not found.', pAcctNumber; END IF; RETURN _returnVal; END; $$; 5DROP FUNCTION public.getcrmacctid(pacctnumber text); publicadminfalse83992N12551691866getcurrid(text)FUNCTION CREATE FUNCTION getcurrid(pcurrname text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pCurrName IS NULL) THEN RETURN NULL; END IF; SELECT curr_id INTO _returnVal FROM curr_symbol WHERE (curr_abbr=pCurrName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Currency % not found.', pCurrName; END IF; RETURN _returnVal; END; $$; 0DROP FUNCTION public.getcurrid(pcurrname text); publicadminfalse83992s12551691867getcustid(text)FUNCTION_CREATE FUNCTION getcustid(pcustnumber text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN SELECT getCustId(pCustNumber,false) INTO _returnVal; RETURN _returnVal; END; $$; 2DROP FUNCTION public.getcustid(pcustnumber text); publicadminfalse83992w12551691868getcustid(text, boolean)FUNCTIONrCREATE FUNCTION getcustid(pcustnumber text, pinclprospects boolean) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pCustNumber IS NULL) THEN RETURN NULL; END IF; SELECT cust_id INTO _returnVal FROM custinfo WHERE (cust_number=UPPER(pCustNumber)); IF (_returnVal IS NULL) THEN IF (pInclProspects) THEN SELECT prospect_id INTO _returnVal FROM prospect WHERE (UPPER(prospect_number)=UPPER(pCustNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Neither Customer nor Prospect Number % found.', pCustNumber; END IF; ELSE RAISE EXCEPTION 'Customer Number % not found.', pCustNumber; END IF; END IF; RETURN _returnVal; END; $$; JDROP FUNCTION public.getcustid(pcustnumber text, pinclprospects boolean); publicadminfalse83992p12551691869:getcustnamefrominfo(text, text, text, text, text, boolean)FUNCTIONC CREATE FUNCTION getcustnamefrominfo(text, text, text, text, text, boolean) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _email TEXT := COALESCE(UPPER($1), ''); _company TEXT := COALESCE(UPPER($2), ''); _first TEXT := COALESCE(UPPER($3), ''); _last TEXT := COALESCE(UPPER($4), ''); _fullname TEXT := COALESCE(UPPER($5), ''); _generate BOOLEAN := COALESCE($6, FALSE); _counter INTEGER; _custcount INTEGER := 0; _custname TEXT; _candidate RECORD; _r RECORD; BEGIN IF (_email != '') THEN SELECT count(*), cust_name INTO _custcount, _custname FROM custinfo LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) WHERE (UPPER(cntct_email)=_email) GROUP BY cust_name; IF (NOT FOUND) THEN _custcount := 0; ELSIF(_custcount = 1) THEN RETURN _custname; END IF; END IF; IF (_company != '') THEN SELECT count(*), cust_name INTO _custcount, _custname FROM custinfo WHERE (UPPER(cust_name)=_company) GROUP BY cust_name; IF (NOT FOUND) THEN _custcount := 0; ELSIF(_custcount = 1) THEN RETURN _custname; END IF; END IF; IF (_fullname = '' AND (_first != '' OR _last != '')) THEN _fullname := TRIM(_first || ' ' || _last); END IF; IF (_custcount <= 0 AND _fullname != '') THEN SELECT count(*), cust_name INTO _custcount, _custname FROM custinfo WHERE (UPPER(cust_name)=_fullname) GROUP BY cust_name; IF (NOT FOUND) THEN _custcount := 0; ELSIF(_custcount = 1) THEN RETURN _custname; END IF; END IF; IF (_custcount > 1) THEN RAISE EXCEPTION 'Found % possible Customers for % and % and %', _custcount, _email, _company, _fullname; END IF; IF (_custcount <= 0 AND _generate) THEN IF (_company != '') THEN RETURN _company; ELSIF (_email != '') THEN RETURN _email; ELSIF (_fullname != '') THEN RETURN _fullname; ELSE RAISE EXCEPTION 'Could not generate a new Customer Name without an email address or the name of a company or person'; END IF; END IF; IF (_custname IS NULL OR _custname = '') THEN RAISE EXCEPTION 'Could not find Customer Name for % and %', _company, _fullname; END IF; RETURN _custname; END; $_$; QDROP FUNCTION public.getcustnamefrominfo(text, text, text, text, text, boolean); publicadminfalse8399212551691870<getcustnumberfrominfo(text, text, text, text, text, boolean)FUNCTIONCREATE FUNCTION getcustnumberfrominfo(text, text, text, text, text, boolean) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _email TEXT := COALESCE(UPPER($1), ''); _company TEXT := COALESCE(UPPER($2), ''); _first TEXT := COALESCE(UPPER($3), ''); _last TEXT := COALESCE(UPPER($4), ''); _fullname TEXT := COALESCE(UPPER($5), TRIM(_first || ' ' || _last)); _generate BOOLEAN := COALESCE($6, FALSE); _counter INTEGER; _custcount INTEGER := 0; _custnumber TEXT; _candidate TEXT := ''; _loopmax INTEGER := 0; _minlength INTEGER := 5; _maxlength INTEGER := 8; _numformat TEXT := ''; _testme TEXT; BEGIN IF (_email != '') THEN SELECT count(*), cust_number INTO _custcount, _custnumber FROM custinfo LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) WHERE (UPPER(cntct_email)=_email) GROUP BY cust_number; IF (NOT FOUND) THEN _custcount := 0; ELSIF(_custcount = 1) THEN RETURN _custnumber; END IF; END IF; IF (_company != '') THEN SELECT count(*), cust_number INTO _custcount, _custnumber FROM custinfo WHERE (UPPER(cust_name)=_company) GROUP BY cust_number; IF (NOT FOUND) THEN _custcount := 0; ELSIF(_custcount = 1) THEN RETURN _custnumber; END IF; END IF; IF (_fullname = '' AND (_first != '' OR _last != '')) THEN _fullname := TRIM(_first || ' ' || _last); END IF; IF (_custcount <= 0 AND _fullname != '') THEN SELECT count(*), cust_number INTO _custcount, _custnumber FROM custinfo WHERE (UPPER(cust_name)=_fullname) GROUP BY cust_number; IF (NOT FOUND) THEN _custcount := 0; ELSIF(_custcount = 1) THEN RETURN _custnumber; END IF; END IF; IF (_custcount > 1) THEN RAISE EXCEPTION 'Found % possible Customers for % and % and %', _custcount, _email, _company, _fullname; END IF; IF (_custcount <= 0 AND _generate) THEN IF (_maxlength < _minlength) THEN RAISE EXCEPTION 'Fix getCustNumberFromInfo: max length < min length'; END IF; IF (_company != '') THEN _candidate := _company; ELSIF (_email != '') THEN _candidate := SUBSTRING(_email FOR POSITION('@' IN _email) - 1); ELSIF (_last != '') THEN _candidate := _last; IF (_first != '') THEN _candidate := _candidate || _first; END IF; ELSIF (_fullname != '' AND (POSITION(' ' IN _fullname) > 0)) THEN _candidate := SUBSTRING(_fullname FROM POSITION(' ' IN _fullname) + 1) || SUBSTRING(_fullname FOR POSITION(' ' IN _fullname) - 1); END IF; WHILE (POSITION(' ' IN _candidate) > 0) LOOP _candidate := SUBSTRING(_candidate FOR POSITION(' ' IN _candidate) - 1) || SUBSTRING(_candidate FROM POSITION(' ' IN _candidate) + 1); END LOOP; FOR _counter IN _minlength.._maxlength LOOP _testme := SUBSTRING(_candidate FOR _counter); IF (NOT EXISTS(SELECT cust_number FROM custinfo WHERE (cust_number=_testme))) THEN _custnumber := _testme; EXIT; END IF; END LOOP; IF (_custnumber IS NULL OR _custnumber = '') THEN IF (LENGTH(_candidate) < _minlength) THEN _minlength := LENGTH(_candidate); END IF; FOR _counter IN _minlength.._maxlength LOOP _loopmax := _loopmax * 10 + 9; _numformat := _numformat || '0'; END LOOP; FOR _counter IN 1.._loopmax LOOP _testme := SUBSTRING(_candidate FOR _minlength) || TRIM(TO_CHAR(_counter, _numformat)); IF (NOT EXISTS(SELECT cust_number FROM custinfo WHERE (cust_number=_testme))) THEN _custnumber := _testme; EXIT; END IF; END LOOP; END IF; IF (_custnumber IS NULL OR _custnumber = '') THEN RAISE EXCEPTION 'Could not generate a new Customer Number'; END IF; END IF; IF (_custnumber IS NULL OR _custnumber = '') THEN RAISE EXCEPTION 'Could not find Customer Number for % and % and %', _email, _company, _fullname; END IF; RETURN _custnumber; END; $_$; SDROP FUNCTION public.getcustnumberfrominfo(text, text, text, text, text, boolean); publicadminfalse39928x12551691871getcusttypeid(text)FUNCTION8CREATE FUNCTION getcusttypeid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustTypeCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pCustTypeCode IS NULL) THEN RETURN NULL; END IF; SELECT custtype_id INTO _returnVal FROM custtype WHERE (custtype_code=pCustTypeCode); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Customer Type % not found.', pCustTypeCode; END IF; RETURN _returnVal; END; $_$; *DROP FUNCTION public.getcusttypeid(text); publicadminfalse83992}12551691872getdeptid(text)FUNCTIONACREATE FUNCTION getdeptid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pDeptNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (COALESCE(TRIM(pDeptNumber), '') = '') THEN RETURN NULL; END IF; SELECT dept_id INTO _returnVal FROM dept WHERE (UPPER(dept_number)=UPPER(pDeptNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Department % not found.', pDeptNumber; END IF; RETURN _returnVal; END; $_$; &DROP FUNCTION public.getdeptid(text); publicadminfalse8399212551691873getediprofileid(text)FUNCTIONCREATE FUNCTION getediprofileid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pEdiProfileName ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pEdiProfileName IS NULL) THEN RETURN NULL; END IF; SELECT pkghead_id INTO _returnVal FROM pkghead WHERE(pkghead_name='xtbatch'); IF(NOT FOUND) THEN RETURN NULL; END IF; SELECT ediprofile_id INTO _returnVal FROM xtbatch.ediprofile WHERE (ediprofile_name=pEdiProfileName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'EDI Profile % not found.', pEdiProfileName; END IF; RETURN _returnVal; END; $_$; ,DROP FUNCTION public.getediprofileid(text); publicadminfalse8399212551691874getediprofilename(integer)FUNCTIONfCREATE FUNCTION getediprofilename(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pEdiProfileId ALIAS FOR $1; _returnVal TEXT; BEGIN IF (pEdiProfileId IS NULL) THEN RETURN NULL; END IF; SELECT pkghead_name INTO _returnVal FROM pkghead WHERE(pkghead_name='xtbatch'); IF(NOT FOUND) THEN RETURN NULL; END IF; SELECT ediprofile_name INTO _returnVal FROM xtbatch.ediprofile WHERE (ediprofile_id=pEdiProfileId); RETURN _returnVal; END; $_$; 1DROP FUNCTION public.getediprofilename(integer); publicadminfalse8399212551691876getempid(text)FUNCTION-CREATE FUNCTION getempid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pEmpCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (COALESCE(TRIM(pEmpCode), '') = '') THEN RETURN NULL; END IF; SELECT emp_id INTO _returnVal FROM emp WHERE (UPPER(emp_code)=UPPER(pEmpCode)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Employee % not found.', pEmpCode; END IF; RETURN _returnVal; END; $_$; %DROP FUNCTION public.getempid(text); publicadminfalse8399212551691877getexpcatid(text)FUNCTIONFCREATE FUNCTION getexpcatid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pExpcatCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (COALESCE(TRIM(pExpcatCode), '') = '') THEN RETURN NULL; END IF; SELECT expcat_id INTO _returnVal FROM expcat WHERE (expcat_code=UPPER(pExpcatCode)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Expense Category % not found.', pExpcatCode; END IF; RETURN _returnVal; END; $_$; (DROP FUNCTION public.getexpcatid(text); publicadminfalse8399212552008387getflcoldata(integer, integer)FUNCTIONCREATE FUNCTION getflcoldata(integer, integer) RETURNS SETOF flcoldata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlcolid ALIAS FOR $1; pPeriodid ALIAS FOR $2; _row flcoldata%ROWTYPE; _r RECORD; _start DATE; _end DATE; _col INTEGER := 1; _mult INTEGER; BEGIN --Get Layout Data SELECT * INTO _r FROM flcol WHERE (flcol_id=pFlcolid); -- Handle Month... IF (_r.flcol_month) THEN SELECT period_start, period_end INTO _start, _end FROM period WHERE (period_id=pPeriodid); IF (_r.flcol_showdb) THEN -- Debits Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; -- Credits Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; END IF; -- Month Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; -- These don't have drill down IF (_r.flcol_prcnt) THEN _col := _col + 1; END IF; IF (_r.flcol_budget) THEN _col := _col + 1; IF (_r.flcol_budgetprcnt) THEN _col := _col + 1; END IF; IF (_r.flcol_budgetdiff) THEN _col := _col + 1; END IF; IF (_r.flcol_budgetdiffprcnt) THEN _col := _col + 1; END IF; END IF; END IF; -- Handle Quarter... IF (_r.flcol_quarter) THEN SELECT min(qtr.period_start), max(qtr.period_end) INTO _start, _end FROM period p JOIN period qtr ON (p.period_quarter=qtr.period_quarter) AND (p.period_yearperiod_id=qtr.period_yearperiod_id) WHERE (p.period_id=pPeriodid); IF (_r.flcol_showdb) THEN -- Debits Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; -- Credits Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; END IF; -- Quarter Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; -- These don't have drill down IF (_r.flcol_prcnt) THEN _col := _col + 1; END IF; IF (_r.flcol_budget) THEN _col := _col + 1; IF (_r.flcol_budgetprcnt) THEN _col := _col + 1; END IF; IF (_r.flcol_budgetdiff) THEN _col := _col + 1; END IF; IF (_r.flcol_budgetdiffprcnt) THEN _col := _col + 1; END IF; END IF; END IF; -- Handle Year... IF (_r.flcol_year) THEN SELECT yearperiod_start, period_end INTO _start, _end FROM period p JOIN yearperiod ON (period_yearperiod_id=yearperiod_id) WHERE (p.period_id=pPeriodid); IF (_r.flcol_showdb) THEN -- Debits Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; -- Credits Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; END IF; -- Year Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; -- These don't have drill down IF (_r.flcol_prcnt) THEN _col := _col + 1; END IF; IF (_r.flcol_budget) THEN _col := _col + 1; IF (_r.flcol_budgetprcnt) THEN _col := _col + 1; END IF; IF (_r.flcol_budgetdiff) THEN _col := _col + 1; END IF; IF (_r.flcol_budgetdiffprcnt) THEN _col := _col + 1; END IF; END IF; END IF; -- Handle Prior Month... IF (_r.flcol_priormonth) THEN SELECT prv.period_start, prv.period_end INTO _start, _end FROM period p JOIN period prv ON (prv.period_start < p.period_start) WHERE (p.period_id=pPeriodid) ORDER BY prv.period_start DESC LIMIT 1; -- Prior Month Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; -- These don't have drill down IF (_r.flcol_priorprcnt) THEN _col := _col + 1; END IF; IF (_r.flcol_priordiff) THEN _col := _col + 1; END IF; IF (_r.flcol_priordiffprcnt) THEN _col := _col + 1; END IF; END IF; -- Handle Prior Quarter... IF (_r.flcol_priorquarter) THEN IF (_r.flcol_priortype = 'P') THEN -- Prior Quarter SELECT min(period_start), max(period_end) INTO _start, _end FROM ( SELECT prv.period_start, prv.period_end, prv.period_quarter, prv.period_yearperiod_id FROM period p JOIN period prv ON (prv.period_start < p.period_start) AND (prv.period_quarter != p.period_quarter) WHERE (p.period_id=pPeriodid)) data GROUP BY period_quarter, period_yearperiod_id ORDER BY min(period_start) DESC LIMIT 1; ELSE -- Prior Year Quarter SELECT min(period_start), max(period_end) INTO _start, _end FROM ( SELECT prv.period_start, prv.period_end, prv.period_quarter, prv.period_yearperiod_id FROM period p JOIN period prv ON (prv.period_start < p.period_start) AND (prv.period_yearperiod_id != p.period_yearperiod_id) AND (prv.period_quarter = p.period_quarter) WHERE (p.period_id=pPeriodid)) data GROUP BY period_quarter, period_yearperiod_id ORDER BY min(period_start) DESC LIMIT 1; END IF; -- Prior Quarter Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; -- These don't have drill down IF (_r.flcol_priorprcnt) THEN _col := _col + 1; END IF; IF (_r.flcol_priordiff) THEN _col := _col + 1; END IF; IF (_r.flcol_priordiffprcnt) THEN _col := _col + 1; END IF; END IF; -- Handle Prior Year... IF (_r.flcol_prioryear IN ('D','F')) THEN IF (_r.flcol_prioryear = 'D') THEN -- Prior Year to Date SELECT yearperiod_start, prv.period_end INTO _start, _end FROM period p JOIN period prv ON (prv.period_number = p.period_number) AND (prv.period_yearperiod_id != p.period_yearperiod_id) AND (prv.period_start < p.period_start) JOIN yearperiod ON (prv.period_yearperiod_id=yearperiod_id) WHERE (p.period_id=pPeriodid) ORDER BY prv.period_start DESC LIMIT 1; ELSE -- Prior Full Year SELECT prv.yearperiod_start, prv.yearperiod_end INTO _start, _end FROM period p JOIN yearperiod cur ON (cur.yearperiod_id=p.period_yearperiod_id) JOIN yearperiod prv ON (prv.yearperiod_start < cur.yearperiod_start) WHERE (p.period_id=pPeriodid) ORDER BY prv.yearperiod_start DESC LIMIT 1; END IF; -- Prior Year Column _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + 1; END IF; RETURN; END; $_$; 5DROP FUNCTION public.getflcoldata(integer, integer); publicadminfalse83992258112552008388+getflcoldata(character, integer[], boolean)FUNCTIONoCREATE FUNCTION getflcoldata(character, integer[], boolean) RETURNS SETOF flcoldata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInterval ALIAS FOR $1; pPeriodids ALIAS FOR $2; pBudgets ALIAS FOR $3; _row flcoldata%ROWTYPE; _r RECORD; _start DATE; _end DATE; _col INTEGER := 1; _count INTEGER; _i INTEGER := 1; _incr INTEGER := 1; BEGIN IF (pBudgets) THEN _col := 2; _incr := 2; END IF; _count := ARRAY_UPPER(pPeriodIds,1); IF (pInterval = 'M') THEN FOR _i IN 1.._count LOOP SELECT period_start, period_end INTO _start, _end FROM period WHERE (period_id=pPeriodids[_i]); _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + _incr; END LOOP; ELSIF (pInterval = 'Q') THEN FOR _i IN 1.._count LOOP SELECT min(qtr.period_start), max(qtr.period_end) INTO _start, _end FROM period cur JOIN period qtr ON (cur.period_yearperiod_id=qtr.period_yearperiod_id) AND (cur.period_quarter=qtr.period_quarter) WHERE (cur.period_id=pPeriodids[_i]); _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + _incr; END LOOP; ELSE FOR _i IN 1.._count LOOP SELECT yearperiod_start, yearperiod_end INTO _start, _end FROM period JOIN yearperiod ON (period_yearperiod_id=yearperiod_id) WHERE (period_id=pPeriodids[_i]); _row.flcoldata_column := _col; _row.flcoldata_start := _start; _row.flcoldata_end := _end; RETURN NEXT _row; _col := _col + _incr; END LOOP; END IF; RETURN; END; $_$; BDROP FUNCTION public.getflcoldata(character, integer[], boolean); publicadminfalse83992258112551691880getflstmthead(integer, integer)FUNCTIONtCREATE FUNCTION getflstmthead(integer, integer) RETURNS SETOF flstmthead LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlcolid ALIAS FOR $1; pPeriodid ALIAS FOR $2; _row flstmthead%ROWTYPE; _p RECORD; _month TEXT; _qtr TEXT; _year TEXT; _prmonth TEXT; _prqtr TEXT; _pryear TEXT; _err TEXT; BEGIN SELECT 'No Data' INTO _err; --Get Layout Data SELECT flcol_priortype, flcol_prioryear INTO _p FROM flcol WHERE (flcol_id=pFlcolid); --get data... --...for current Month SELECT (CASE WHEN period_name='' THEN formatdate(period_start) || '-' || formatdate(period_end) ELSE period_name END) INTO _month FROM period WHERE (period_id=pPeriodId); IF _month IS NULL THEN _month := _err; END IF; --...for Quarter SELECT ('Q' || period_quarter || '-' || EXTRACT(year from yearperiod_end)) INTO _qtr FROM period, yearperiod WHERE ((period_id=pPeriodId) AND (period_yearperiod_id=yearperiod_id)); IF _qtr IS NULL THEN _qtr := _err; END IF; --...for Year SELECT COALESCE((CASE WHEN period_name='' THEN (formatdate(period_start) || '-' || formatdate(period_end) || ' YTD') ELSE (period_name || ' YTD') END),'No Data') INTO _year FROM period WHERE (period_id=pPeriodId); IF _year IS NULL THEN _year := _err; END IF; --...for prior month IF (_p.flcol_priortype = 'P') THEN SELECT (CASE WHEN pp.period_name='' THEN formatdate(pp.period_start) || '-' || formatdate(pp.period_end) ELSE pp.period_name END) INTO _prmonth FROM period cp, period pp WHERE ((cp.period_id=pPeriodId) AND (cp.period_start > pp.period_start)) ORDER BY pp.period_start DESC LIMIT 1; ELSE SELECT (CASE WHEN pp.period_name='' THEN formatdate(pp.period_start) || '-' || formatdate(pp.period_end) ELSE pp.period_name END) INTO _prmonth FROM period cp, period pp WHERE ((cp.period_id=pPeriodId) AND (cp.period_id != pp.period_id) AND (cp.period_start > pp.period_start) AND (cp.period_number = pp.period_number)) ORDER BY pp.period_start DESC LIMIT 1; END IF; IF _prmonth IS NULL THEN _prmonth := _err; END IF; --...for prior quarter IF (_p.flcol_priortype='P') THEN SELECT ('Q' || pp.period_quarter || '-' || EXTRACT(year from yearperiod_end)) INTO _prqtr FROM period cp, period pp, yearperiod WHERE ((cp.period_id=pPeriodId) AND (cp.period_start > pp.period_start) AND (pp.period_quarter= CASE WHEN cp.period_quarter > 1 THEN cp.period_quarter - 1 ELSE 4 END) AND (pp.period_start >= cp.period_start - interval '1 year') AND (pp.period_yearperiod_id=yearperiod_id)) ORDER BY pp.period_start DESC LIMIT 1; ELSE SELECT ('Q' || pp.period_quarter || '-' || EXTRACT(year from pp.period_start)) INTO _prqtr FROM period cp, period pp, yearperiod cy, yearperiod py WHERE ((cp.period_id=pPeriodId) AND (cp.period_yearperiod_id=cy.yearperiod_id) AND (pp.period_yearperiod_id=py.yearperiod_id) AND (cp.period_quarter=pp.period_quarter) AND (cy.yearperiod_start > py.yearperiod_start)) ORDER BY py.yearperiod_start DESC, pp.period_start DESC LIMIT 1; END IF; IF _prqtr IS NULL THEN _prqtr := _err; END IF; --...for prior year IF (_p.flcol_prioryear='F') THEN SELECT (EXTRACT(year from py.yearperiod_end)||'') INTO _pryear FROM period cp, yearperiod cy, yearperiod py WHERE ((cp.period_id=pPeriodId) AND (cp.period_yearperiod_id = cy.yearperiod_id) AND (cy.yearperiod_start > py.yearperiod_start)) ORDER BY py.yearperiod_start DESC LIMIT 1; ELSE SELECT (CASE WHEN pp.period_name='' THEN formatdate(pp.period_start) || '-' || formatdate(pp.period_end) || ' YTD' ELSE pp.period_name || ' YTD' END) INTO _pryear FROM period cp, period pp WHERE ((cp.period_id=pPeriodId) AND (cp.period_number = pp.period_number) AND (cp.period_start > pp.period_start)) ORDER BY pp.period_start DESC LIMIT 1; END IF; IF _pryear IS NULL THEN _pryear := _err; END IF; -- RETURN RESULTS SELECT flhead_id AS flstmthead_flhead_id, flcol_id AS flstmthead_flcol_id, pPeriodid AS flstmthead_period, getEffectiveXtUser() AS flstmthead_username, CASE WHEN flhead_type = 'I' THEN 'Income Statement' WHEN flhead_type = 'B' THEN 'Balance Sheet' WHEN flhead_type = 'C' THEN 'Cash Flow Statement' ELSE 'N/A' END AS flstmthead_flhead_typedescrip1, CASE WHEN flhead_type = 'I' THEN 'Income' WHEN flhead_type = 'B' THEN 'Balance' WHEN flhead_type = 'C' THEN 'Cash' ELSE 'N/A' END AS flstmthead_flhead_typedescrip2, flhead_name AS flstmthead_flhead_name, flcol_name AS flstmthead_flcol_name, _month AS flstmthead_month, _qtr AS flstmthead_qtr, _year AS flstmthead_year, _prmonth AS flstmthead_prmonth, _prqtr AS flstmthead_prqtr, _pryear AS flstmthead_pryear INTO _p FROM flhead,flcol WHERE ((flcol_id=pFlcolid) AND (flhead_id=flcol_flhead_id)); _row.flstmthead_flhead_id := _p.flstmthead_flhead_id; _row.flstmthead_flcol_id := _p.flstmthead_flcol_id; _row.flstmthead_period_id := _p.flstmthead_period; _row.flstmthead_username := _p.flstmthead_username; _row.flstmthead_typedescrip1 := _p.flstmthead_flhead_typedescrip1; _row.flstmthead_typedescrip2 := _p.flstmthead_flhead_typedescrip2; _row.flstmthead_flhead_name := _p.flstmthead_flhead_name; _row.flstmthead_flcol_name := _p.flstmthead_flcol_name; _row.flstmthead_month := _p.flstmthead_month; _row.flstmthead_qtr := _p.flstmthead_qtr; _row.flstmthead_year := _p.flstmthead_year; _row.flstmthead_prmonth := _p.flstmthead_prmonth; _row.flstmthead_prqtr := _p.flstmthead_prqtr; _row.flstmthead_pryear := _p.flstmthead_pryear; RETURN NEXT _row; END; $_$; 6DROP FUNCTION public.getflstmthead(integer, integer); publicadminfalse83992259512551691881-getfltrendhead(integer, integer[], character)FUNCTIONPCREATE FUNCTION getfltrendhead(integer, integer[], character) RETURNS SETOF fltrendhead LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlheadid ALIAS FOR $1; pPeriodids ALIAS FOR $2; pInterval ALIAS FOR $3; _row fltrendhead%ROWTYPE; _p RECORD; _count INTEGER; _i INTEGER; _t TEXT; _fld TEXT[]; _type CHAR; BEGIN -- Validate Interval IF pInterval <> 'M' AND pInterval <> 'Q' AND pInterval <> 'Y' THEN RAISE EXCEPTION 'Invalid Interval --> %', pInterval; END IF; IF ARRAY_UPPER(pPeriodIds,1) <= 12 THEN _count := ARRAY_UPPER(pPeriodIds,1); ELSE _count := 12; END IF; SELECT flhead_type INTO _type FROM flhead WHERE flhead_id = pFlheadId; --get data... --...for Month IF (pInterval = 'M') THEN FOR _i IN 1.._count LOOP SELECT (CASE WHEN period_name='' THEN formatdate(period_start) || '-' || formatdate(period_end) ELSE period_name END) INTO _t FROM period WHERE (period_id=pPeriodIds[_i]); _fld[_i] := _t; END LOOP; --...for Quarter ELSE IF (pInterval = 'Q') THEN FOR _i IN 1.._count LOOP SELECT ('Q' || period_quarter || '-' || EXTRACT(year from yearperiod_end)) INTO _t FROM period, yearperiod WHERE ((period_id=pPeriodIds[_i]) AND (period_yearperiod_id=yearperiod_id)); _fld[_i] := _t; END LOOP; --...for Year ELSE FOR _i IN 1.._count LOOP SELECT (EXTRACT(year from yearperiod_end)||'') INTO _t FROM period, yearperiod WHERE ((period_id=pPeriodIds[_i]) AND (period_yearperiod_id=yearperiod_id)); _fld[_i] := _t; END LOOP; END IF; END IF; -- RETURN RESULTS SELECT flhead_id AS fltrendhead_flhead_id, getEffectiveXtUser() AS fltrendhead_username, CASE WHEN flhead_type = 'I' THEN 'Income Statement' WHEN flhead_type = 'B' THEN 'Balance Sheet' WHEN flhead_type = 'C' THEN 'Cash Flow Statement' ELSE 'Ad Hoc' END AS fltrendhead_flhead_typedescrip, flhead_name AS fltrendhead_flhead_name INTO _p FROM flhead WHERE (flhead_id=pFlheadId); _row.fltrendhead_flhead_id := _p.fltrendhead_flhead_id; _row.fltrendhead_username := _p.fltrendhead_username; _row.fltrendhead_typedescrip := _p.fltrendhead_flhead_typedescrip; _row.fltrendhead_flhead_name := _p.fltrendhead_flhead_name; _row.fltrendhead_fld1 := _fld[1]; _row.fltrendhead_fld2 := _fld[2]; _row.fltrendhead_fld3 := _fld[3]; _row.fltrendhead_fld4 := _fld[4]; _row.fltrendhead_fld5 := _fld[5]; _row.fltrendhead_fld6 := _fld[6]; _row.fltrendhead_fld7 := _fld[7]; _row.fltrendhead_fld8 := _fld[8]; _row.fltrendhead_fld9 := _fld[9]; _row.fltrendhead_fld10 := _fld[10]; _row.fltrendhead_fld11 := _fld[11]; _row.fltrendhead_fld12 := _fld[12]; IF (_type IN ('I','C')) THEN _row.fltrendhead_grndttl := 'Total'; END IF; RETURN NEXT _row; END; $_$; DDROP FUNCTION public.getfltrendhead(integer, integer[], character); publicadminfalse83992260112551691882getfreightclassid(text)FUNCTIONXCREATE FUNCTION getfreightclassid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFreightClassCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pFreightClassCode IS NULL) THEN RETURN NULL; END IF; SELECT freightclass_id INTO _returnVal FROM freightclass WHERE (freightclass_code=pFreightClassCode); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Freight Class % not found.', pFreightClassCode; END IF; RETURN _returnVal; END; $_$; .DROP FUNCTION public.getfreightclassid(text); publicadminfalse8399212551691883getfreighttaxtypeid()FUNCTION~CREATE FUNCTION getfreighttaxtypeid() RETURNS integer LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _taxtypeid INTEGER; BEGIN SELECT taxtype_id INTO _taxtypeid FROM taxtype WHERE (taxtype_name='Freight'); RETURN _taxtypeid; END; $$; ,DROP FUNCTION public.getfreighttaxtypeid(); publicadminfalse8399212551691884getgainlossaccntid(integer)FUNCTION7CREATE FUNCTION getgainlossaccntid(integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAccntId ALIAS FOR $1; _returnVal INTEGER; BEGIN IF ( (pAccntId = 0) OR (pAccntId IS NULL) ) THEN RETURN 0; END IF; IF (fetchMetricValue('GLCompanySize') = 0) THEN _returnVal := fetchMetricValue('CurrencyGainLossAccount')::integer; ELSE SELECT company_gainloss_accnt_id INTO _returnVal FROM company JOIN accnt ON (company_number=accnt_company) WHERE (accnt_id=pAccntId); END IF; IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Currency Gain/Loss Account not found for %', formatGlAccountLong(pAccntId); END IF; RETURN _returnVal; END; $_$; 2DROP FUNCTION public.getgainlossaccntid(integer); publicadminfalse8399212551691885getglaccntid(text)FUNCTION'CREATE FUNCTION getglaccntid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pGlAccnt ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pGlAccnt IS NULL) THEN RETURN NULL; END IF; SELECT accnt_id INTO _returnVal FROM accnt WHERE (formatglaccount(accnt_id)=pGlAccnt); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Account Number % not found.', pGlAccnt; END IF; RETURN _returnVal; END; $_$; )DROP FUNCTION public.getglaccntid(text); publicadminfalse8399212551691886$getglaccntid(text, text, text, text)FUNCTIONCREATE FUNCTION getglaccntid(text, text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCompany ALIAS FOR $1; pProfit ALIAS FOR $2; pGlAccnt ALIAS FOR $3; pSub ALIAS FOR $4; _account TEXT; _returnVal INTEGER; BEGIN IF (pGlAccnt IS NULL) THEN RETURN NULL; END IF; IF (pCompany is not null) THEN _account := pCompany || '-'; END IF; IF (pProfit is not null) THEN _account := _account || pProfit || '-'; END IF; IF (pGlAccnt is not null) THEN if (_account is null) then _account := pGlAccnt; else _account := _account || pGlAccnt; end if; END IF; IF (pSub is not null) THEN _account := _account || '-' || pSub; END IF; SELECT accnt_id INTO _returnVal FROM accnt WHERE (formatglaccount(accnt_id)=_account); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Account Number % not found.', _account; END IF; RETURN _returnVal; END; $_$; ;DROP FUNCTION public.getglaccntid(text, text, text, text); publicadminfalse8399212551691887getimageid(text)FUNCTION!CREATE FUNCTION getimageid(pimagename text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (COALESCE(TRIM(pImageName), '') = '') THEN RETURN NULL; END IF; SELECT image_id INTO _returnVal FROM image WHERE (image_name=pImageName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Image % not found.', pImageName; END IF; RETURN _returnVal; END; $$; 2DROP FUNCTION public.getimageid(pimagename text); publicadminfalse8399212551691888getincdtcatid(text)FUNCTION3CREATE FUNCTION getincdtcatid(pincdtcatname text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pIncdtCatName IS NULL) THEN RETURN NULL; END IF; SELECT incdtcat_id INTO _returnVal FROM incdtcat WHERE (incdtcat_name=pIncdtCatName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Incident Category Name % not found.', pIncdtCatName; END IF; RETURN _returnVal; END; $$; 8DROP FUNCTION public.getincdtcatid(pincdtcatname text); publicadminfalse8399212551691889getincdtcrmacctid(integer)FUNCTION<CREATE FUNCTION getincdtcrmacctid(pincidentnumber integer) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pIncidentNumber IS NULL) THEN RETURN NULL; END IF; SELECT incdt_crmacct_id INTO _returnVal FROM incdt WHERE (incdt_number=pIncidentNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Incident Number % not found.', pIncidentNumber; END IF; RETURN _returnVal; END; $$; ADROP FUNCTION public.getincdtcrmacctid(pincidentnumber integer); publicadminfalse8399212551691890getincdtpriorityid(text)FUNCTION[CREATE FUNCTION getincdtpriorityid(pincdtpriorityname text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pIncdtPriorityName IS NULL) THEN RETURN NULL; END IF; SELECT incdtpriority_id INTO _returnVal FROM incdtpriority WHERE (incdtpriority_name=pIncdtPriorityName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Incident Priority Name % not found.', pIncdtPriorityName; END IF; RETURN _returnVal; END; $$; BDROP FUNCTION public.getincdtpriorityid(pincdtpriorityname text); publicadminfalse8399212551691891getincdtresolutionid(text)FUNCTIONmCREATE FUNCTION getincdtresolutionid(pincdtresolutionname text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pIncdtResolutionName IS NULL) THEN RETURN NULL; END IF; SELECT incdtresolution_id INTO _returnVal FROM incdtresolution WHERE (incdtresolution_name=pIncdtResolutionName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Incident Resolution Name % not found.', pIncdtResolutionName; END IF; RETURN _returnVal; END; $$; FDROP FUNCTION public.getincdtresolutionid(pincdtresolutionname text); publicadminfalse8399212551691892getincdtseverityid(text)FUNCTION[CREATE FUNCTION getincdtseverityid(pincdtseverityname text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pIncdtSeverityName IS NULL) THEN RETURN NULL; END IF; SELECT incdtseverity_id INTO _returnVal FROM incdtseverity WHERE (incdtseverity_name=pIncdtSeverityName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Incident Severity Name % not found.', pIncdtSeverityName; END IF; RETURN _returnVal; END; $$; BDROP FUNCTION public.getincdtseverityid(pincdtseverityname text); publicadminfalse8399212551691893getincidentid(integer)FUNCTION0CREATE FUNCTION getincidentid(pincidentnumber integer) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pIncidentNumber IS NULL) THEN RETURN NULL; END IF; SELECT incdt_id INTO _returnVal FROM incdt WHERE (incdt_number=pIncidentNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Incident Number % not found.', pIncidentNumber; END IF; RETURN _returnVal; END; $$; =DROP FUNCTION public.getincidentid(pincidentnumber integer); publicadminfalse8399212551691894getinvcheadid(text)FUNCTION;CREATE FUNCTION getinvcheadid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pInvcNumber IS NULL) THEN RETURN NULL; END IF; SELECT invchead_id INTO _returnVal FROM invchead WHERE (UPPER(invchead_invcnumber)=UPPER(pInvcNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Invoice % not found.', pInvcNumber; END IF; RETURN _returnVal; END; $_$; *DROP FUNCTION public.getinvcheadid(text); publicadminfalse8399212551691895getinvcitemlotserial(integer)FUNCTIONACREATE FUNCTION getinvcitemlotserial(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcitemid ALIAS FOR $1; _lotserial text; _r RECORD; _first BOOLEAN; _newMethod BOOLEAN; BEGIN --Test to see if Lot/Serial Enabled SELECT metric_value INTO _lotserial FROM metric WHERE ((metric_name='LotSerialControl') AND (metric_value ='t')); IF (FOUND) THEN _lotserial := ''; _first := true; -- Two ways of doing this: old method and new method -- First, find out if new method employed. -- (new method is more accurate, but unfortunately no -- way to migrate or correct old data. Have to keep -- old method in case someone reprints an old invoice.) SELECT (COUNT(*) > 0) INTO _newMethod FROM shipitem WHERE ((shipitem_invcitem_id=pInvcitemid) AND (shipitem_invhist_id IS NOT NULL)); IF (_newMethod) THEN FOR _r IN SELECT DISTINCT ls_number FROM invdetail, invhist, shipitem, ls WHERE ((shipitem_invcitem_id=pInvcitemid) AND (shipitem_invhist_id=invhist_id) AND (invhist_id=invdetail_invhist_id) AND (invdetail_ls_id=ls_id)) LOOP IF (_first = false) THEN _lotserial := _lotserial || ', '; END IF; _lotserial := _lotserial || _r.ls_number; _first := false; END LOOP; RETURN _lotserial; ELSE -- Handle it old way FOR _r IN SELECT DISTINCT ls_number FROM ls, invdetail JOIN invhist ON (invdetail_invhist_id=invhist_id) WHERE ((invhist_transtype='SH') AND (invdetail_invcitem_id=pInvcitemid) AND (invdetail_ls_id=ls_id)) LOOP IF (_first = false) THEN _lotserial := _lotserial || ', '; END IF; _lotserial := _lotserial || _r.ls_number; _first := false; END LOOP; RETURN _lotserial; END IF; ELSE RETURN ''; END IF; END $_$; 4DROP FUNCTION public.getinvcitemlotserial(integer); publicadminfalse8399212551691896getipsheadid(text)FUNCTIONCREATE FUNCTION getipsheadid(pipsname text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pIpsName IS NULL) THEN RETURN NULL; END IF; SELECT ipshead_id INTO _returnVal FROM ipshead WHERE (ipshead_name=pIpsName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Pricing Schedule % not found.', pIpsName; END IF; RETURN _returnVal; END; $$; 2DROP FUNCTION public.getipsheadid(pipsname text); publicadminfalse8399212551691897-getipsitemid(text, text, numeric, text, text)FUNCTIONCREATE FUNCTION getipsitemid(pipsname text, pitemnumber text, pqtybreak numeric, pqtyuom text, ppriceuom text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pIpsName IS NULL AND pItemNumber IS NULL AND pQtyBreak IS NULL AND pQtyUom IS NULL AND pPriceUom IS NULL) THEN RETURN NULL; END IF; SELECT ipsitem_id INTO _returnVal FROM ipsiteminfo WHERE ((ipsitem_ipshead_id=getIpsheadId(pIpsName)) AND (ipsitem_item_id=getItemId(pItemNumber)) AND (ipsitem_qtybreak=pQtyBreak) AND (ipsitem_qty_uom_id=getUomId(pQtyUom)) AND (ipsitem_price_uom_id=getUomId(pPriceUom))); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Pricing Schedule Item for Schedule %, Item %,Qt Break %,Qty UOM %, Price UOM % not found.', pIpsName, pItemNumber, pQtyBreak, pQtyUom, pPriceUom; END IF; RETURN _returnVal; END; $$; uDROP FUNCTION public.getipsitemid(pipsname text, pitemnumber text, pqtybreak numeric, pqtyuom text, ppriceuom text); publicadminfalse83992 12551691898$getipsprodcatid(text, text, numeric)FUNCTION$CREATE FUNCTION getipsprodcatid(pipsname text, pprodcat text, pqtybreak numeric) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pIpsName IS NULL AND pProdCat IS NULL AND pQtyBreak IS NULL) THEN RETURN NULL; END IF; SELECT ipsitem_id INTO _returnVal FROM ipsiteminfo WHERE ((ipsitem_ipshead_id=getIpsheadId(pIpsName)) AND (ipsitem_prodcat_id=getProdcatId(pProdCat)) AND (ipsitem_qtybreak=pQtyBreak)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Pricing Schedule Product Category for Schedule %, Product Category %,Qt Break % not found.', pIpsName, pProdCat, pQtyBreak; END IF; RETURN _returnVal; END; $$; WDROP FUNCTION public.getipsprodcatid(pipsname text, pprodcat text, pqtybreak numeric); publicadminfalse8399212551691899getitemid(text)FUNCTION'CREATE FUNCTION getitemid(text) RETURNS integer LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pItemNumber IS NULL) THEN RETURN NULL; END IF; SELECT item_id INTO _returnVal FROM item WHERE (item_number=UPPER(pItemNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Item % not found.', pItemNumber; END IF; RETURN _returnVal; END; $_$; &DROP FUNCTION public.getitemid(text); publicadminfalse8399212551691900getitemidfromupc(text)FUNCTIONCREATE FUNCTION getitemidfromupc(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemUPC ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pItemUPC IS NULL) THEN RETURN NULL; END IF; SELECT item_id INTO _returnVal FROM item WHERE (item_upccode=UPPER(pItemUPC)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Item % not found.', pItemUPC; END IF; RETURN _returnVal; END; $_$; -DROP FUNCTION public.getitemidfromupc(text); publicadminfalse83992 12551691901getitemsiteid(text, text)FUNCTIONCREATE FUNCTION getitemsiteid(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehouseCode ALIAS FOR $1; pItemNumber ALIAS FOR $2; _returnVal INTEGER; BEGIN SELECT getItemsiteId(pWarehouseCode,pItemNumber,'ALL') INTO _returnVal; RETURN _returnVal; END; $_$; 0DROP FUNCTION public.getitemsiteid(text, text); publicadminfalse83992 12551691902getitemsiteid(text, text, text)FUNCTION-CREATE FUNCTION getitemsiteid(text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehouseCode ALIAS FOR $1; pItemNumber ALIAS FOR $2; pType ALIAS FOR $3; _type TEXT; _p RECORD; BEGIN IF ((pWarehouseCode IS NULL) OR (pItemNumber IS NULL)) THEN RETURN NULL; END IF; IF UPPER(pType) NOT IN ('ALL','ACTIVE','SOLD') THEN RAISE EXCEPTION 'Invalid Type %. Valid Itemsite types are ALL and SOLD', pType; END IF; SELECT * INTO _p FROM itemsite, item WHERE ((itemsite_item_id=item_id) AND (itemsite_warehous_id=getWarehousId(pWarehouseCode,'ALL')) AND (item_number=UPPER(pItemNumber))); IF NOT (FOUND) THEN RAISE EXCEPTION 'Item % not found in Warehouse %', pItemNumber, pWarehouseCode; ELSIF ((UPPER(pType)='ACTIVE') OR (UPPER(pType)='SOLD')) THEN IF NOT (_p.item_active) THEN RAISE EXCEPTION 'Item % is inactive.', pItemNumber; ELSE IF NOT (_p.itemsite_active) THEN RAISE EXCEPTION 'Item % is inactive in Warehouse %', pItemNumber, pWarehouseCode; ELSE IF ((UPPER(pType)='SOLD') AND NOT _p.item_sold) THEN RAISE EXCEPTION 'Item % is not sold', pItemNumber; ELSE IF ((UPPER(pType)='SOLD') AND NOT _p.itemsite_sold) THEN RAISE EXCEPTION 'Item % is not sold from Warehouse %', pItemNumber, pWarehouseCode; END IF; END IF; END IF; END IF; END IF; RETURN _p.itemsite_id; END; $_$; 6DROP FUNCTION public.getitemsiteid(text, text, text); publicadminfalse83992 12551691903getitemsrcid(text, text)FUNCTIONCREATE FUNCTION getitemsrcid(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemNumber ALIAS FOR $1; pVendNumber ALIAS FOR $2; _returnVal INTEGER; BEGIN IF ((pItemNumber IS NULL) OR (pVendNumber IS NULL)) THEN RETURN NULL; END IF; SELECT itemsrc_id INTO _returnVal FROM itemsrc WHERE ((itemsrc_item_id=getItemId(pItemNumber)) AND (itemsrc_vend_id=getVendId(pVendNumber))); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Item Source Item % Vendor % not found.', pItemNumber,pVendNumber; END IF; RETURN _returnVal; END; $_$; /DROP FUNCTION public.getitemsrcid(text, text); publicadminfalse8399212551691905#getlasttrialbalid(integer, integer)FUNCTIONsCREATE FUNCTION getlasttrialbalid(integer, integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAccntId ALIAS FOR $1; pPeriodId ALIAS FOR $2; _p RECORD; _accntType TEXT; _result NUMERIC; BEGIN SELECT period_end,period_yearperiod_id INTO _p FROM period WHERE period_id=pPeriodId; SELECT accnt_type INTO _accntType FROM accnt WHERE accnt_id=pAccntId; IF (_accntType IN ('R','E')) THEN SELECT trialbal_id INTO _result FROM trialbal WHERE ((trialbal_accnt_id=pAccntId) AND (trialbal_period_id=pPeriodId)); ELSE SELECT trialbal_id INTO _result FROM (SELECT trialbal_id FROM trialbal,period WHERE ((trialbal_accnt_id=pAccntId) AND (trialbal_period_id=period_id) AND (period_end <= _p.period_end) AND (period_yearperiod_id=_p.period_yearperiod_id)) ORDER BY period_end DESC) AS data; END IF; RETURN _result; END; $_$; :DROP FUNCTION public.getlasttrialbalid(integer, integer); publicadminfalse8399212551691906getlocationid(text, text)FUNCTIONCREATE FUNCTION getlocationid(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehouse ALIAS FOR $1; pLocation ALIAS FOR $2; _returnVal INTEGER; BEGIN IF (pLocation IS NULL) THEN RETURN NULL; END IF; SELECT location_id INTO _returnVal FROM location WHERE ((location_warehous_id=getWarehousId(pWarehouse,'ACTIVE')) AND (formatLocationname(location_id)=pLocation)) LIMIT 1; IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Location % not found in Warehouse %.', pLocation, pWarehouse; END IF; RETURN _returnVal; END; $_$; 0DROP FUNCTION public.getlocationid(text, text); publicadminfalse8399212551691907getlotserialid(text, text)FUNCTIONCREATE FUNCTION getlotserialid(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemNumber ALIAS FOR $1; pLotSerialNumber ALIAS FOR $2; _returnVal INTEGER; BEGIN IF ((pItemNumber IS NULL) OR (pLotSerialNumber IS NULL) OR (pLotSerialNumber='')) THEN RETURN NULL; END IF; SELECT ls_id INTO _returnVal FROM ls WHERE ((ls_item_id=getItemId(pItemNumber)) AND (UPPER(ls_number)=UPPER(pLotSerialNumber))); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'LotSerial % not found.', pLotSerialNumber; END IF; RETURN _returnVal; END; $_$; 1DROP FUNCTION public.getlotserialid(text, text); publicadminfalse8399212551691908getopheadid(text)FUNCTION>CREATE FUNCTION getopheadid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOpHeadName ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pOpHeadName IS NULL) THEN RETURN NULL; END IF; SELECT ophead_id INTO _returnVal FROM ophead WHERE (UPPER(ophead_name)=UPPER(pOpHeadName)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Opportunity % not found.', pOpHeadName; END IF; RETURN _returnVal; END; $_$; (DROP FUNCTION public.getopheadid(text); publicadminfalse8399212551691909%getpacklistcharname(integer, integer)FUNCTIONCREATE FUNCTION getpacklistcharname(integer, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipheadId ALIAS FOR $1; pOrderItemId ALIAS FOR $2; _charname text; _r RECORD; _first BOOLEAN; BEGIN -- If transfer order, get out SELECT shiphead_order_type INTO _r FROM shiphead WHERE ((shiphead_id=pShipheadId) AND (shiphead_order_type='TO')); IF (FOUND) THEN RETURN ''; END IF; _charname := ''; _first := true; FOR _r IN SELECT char_name FROM char, charass WHERE ((char_id=charass_char_id) AND (charass_target_type='SI') AND (charass_target_id=pOrderItemId)) LOOP IF (_first = false) THEN _charname := _charname || ' '; END IF; _charname := _charname || _r.char_name; _first := false; END LOOP; RETURN _charname; END $_$; <DROP FUNCTION public.getpacklistcharname(integer, integer); publicadminfalse83992#12551691910&getpacklistcharvalue(integer, integer)FUNCTIONCREATE FUNCTION getpacklistcharvalue(integer, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipheadId ALIAS FOR $1; pOrderItemId ALIAS FOR $2; _charval text; _r RECORD; _first BOOLEAN; BEGIN -- If transfer order, get out SELECT shiphead_order_type INTO _r FROM shiphead WHERE ((shiphead_id=pShipheadId) AND (shiphead_order_type='TO')); IF (FOUND) THEN RETURN ''; END IF; _charval := ''; _first := true; FOR _r IN SELECT charass_value FROM char, charass WHERE ((char_id=charass_char_id) AND (charass_target_type='SI') AND (charass_target_id=pOrderItemId)) LOOP IF (_first = false) THEN _charval := _charval || ' '; END IF; _charval := _charval || _r.charass_value; _first := false; END LOOP; RETURN _charval; END $_$; =DROP FUNCTION public.getpacklistcharvalue(integer, integer); publicadminfalse83992$12551691911*getpacklistitemlotserial(integer, integer)FUNCTIONCREATE FUNCTION getpacklistitemlotserial(integer, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipheadId ALIAS FOR $1; pOrderItemId ALIAS FOR $2; _lotserial text; _r RECORD; _first BOOLEAN; BEGIN --Test to see if Lot/Serial Enabled SELECT metric_value INTO _lotserial FROM metric WHERE ((metric_name='LotSerialControl') AND (metric_value ='t')); IF (FOUND) THEN _lotserial := ''; _first := true; FOR _r IN SELECT DISTINCT ls_number FROM invdetail, invhist, shipitem, ls WHERE ((shipitem_shiphead_id=pShipheadId) AND (shipitem_orderitem_id=pOrderItemId) AND (shipitem_invhist_id=invhist_id) AND (invhist_id=invdetail_invhist_id) AND (invdetail_ls_id=ls_id)) LOOP IF (_first = false) THEN _lotserial := _lotserial || ', '; END IF; _lotserial := _lotserial || _r.ls_number; _first := false; END LOOP; RETURN _lotserial; ELSE RETURN ''; END IF; END $_$; ADROP FUNCTION public.getpacklistitemlotserial(integer, integer); publicadminfalse83992.12551691912getperiodid(integer, character)FUNCTIONCREATE FUNCTION getperiodid(integer, character) RETURNS SETOF integer LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodId ALIAS FOR $1; pInterval ALIAS FOR $2; _x RECORD; BEGIN -- Validate Interval IF pInterval <> 'M' AND pInterval <> 'Q' AND pInterval <> 'Y' THEN RAISE EXCEPTION 'Invalid Interval --> %', pInterval; END IF; IF pInterval='M' THEN RETURN NEXT pPeriodId; ELSE IF pInterval='Q' THEN FOR _x IN SELECT qp.period_id AS period_id FROM period cp, period qp WHERE ((cp.period_id=pPeriodId) AND (cp.period_yearperiod_id=qp.period_yearperiod_id) AND (cp.period_quarter=qp.period_quarter) AND (cp.period_start>=qp.period_start)) ORDER BY qp.period_start LOOP RETURN NEXT _x.period_id; END LOOP; ELSE FOR _x IN SELECT yp.period_id AS period_id FROM period cp, period yp WHERE ((cp.period_id=pPeriodId) AND (cp.period_yearperiod_id=yp.period_yearperiod_id) AND (cp.period_start>=yp.period_start)) ORDER BY yp.period_start LOOP RETURN NEXT _x.period_id; END LOOP; END IF; END IF; RETURN; END; $_$; 6DROP FUNCTION public.getperiodid(integer, character); publicadminfalse8399212551691913getperiodid(date)FUNCTION?CREATE FUNCTION getperiodid(date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodDate ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pPeriodDate IS NULL) THEN RETURN NULL; END IF; SELECT period_id INTO _returnVal FROM period WHERE ((pPeriodDate) between period_start AND period_end); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Period for % not found.', pPeriodDate; END IF; RETURN _returnVal; END; $_$; (DROP FUNCTION public.getperiodid(date); publicadminfalse83992/12551691914getpkgheadid(text)FUNCTION+CREATE FUNCTION getpkgheadid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ppkgname ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (ppkgname IS NULL) THEN RETURN NULL; END IF; SELECT pkghead_id INTO _returnVal FROM pkghead WHERE (UPPER(pkghead_name)=UPPER(ppkgname)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Package % not found.', ppkgname; END IF; RETURN _returnVal; END; $_$; )DROP FUNCTION public.getpkgheadid(text); publicadminfalse83992012551691915getplancodeid(text)FUNCTION!CREATE FUNCTION getplancodeid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPlanCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pPlanCode IS NULL) THEN RETURN NULL; END IF; SELECT plancode_id INTO _returnVal FROM plancode WHERE (plancode_code=pPlanCode); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Plan Code % not found.', pPlanCode; END IF; RETURN _returnVal; END; $_$; *DROP FUNCTION public.getplancodeid(text); publicadminfalse83992112551691916getpoheadid(text)FUNCTIONOCREATE FUNCTION getpoheadid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPurchaseOrderNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pPurchaseOrderNumber IS NULL) THEN RETURN NULL; END IF; SELECT pohead_id INTO _returnVal FROM pohead WHERE (pohead_number=pPurchaseOrderNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Purchase Order % not found.', pPurchaseOrderNumber; END IF; RETURN _returnVal; END; $_$; (DROP FUNCTION public.getpoheadid(text); publicadminfalse83992212551691917getpoitemid(text, integer)FUNCTIONCREATE FUNCTION getpoitemid(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPurchaseOrderNumber ALIAS FOR $1; pLineNumber ALIAS FOR $2; _returnVal INTEGER; BEGIN IF (pPurchaseOrderNumber IS NULL OR pLineNumber IS NULL) THEN RETURN NULL; END IF; SELECT poitem_id INTO _returnVal FROM pohead, poitem WHERE ((pohead_number=pPurchaseOrderNumber) AND (poitem_pohead_id=pohead_id) AND (poitem_linenumber=pLineNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Purchase Order % not found.', pSalesOrderNumber; END IF; RETURN _returnVal; END; $_$; 1DROP FUNCTION public.getpoitemid(text, integer); publicadminfalse83992312551691918getprjaccntid(integer, integer)FUNCTIONCREATE FUNCTION getprjaccntid(integer, integer) RETURNS integer LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrjid ALIAS FOR $1; pAccntid ALIAS FOR $2; BEGIN -- Project Accounting is required to fully implement this functionality RETURN pAccntId; END; $_$; 6DROP FUNCTION public.getprjaccntid(integer, integer); publicadminfalse83992412551691919getprjid(text)FUNCTION CREATE FUNCTION getprjid(pprjnumber text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pPrjNumber IS NULL) THEN RETURN NULL; END IF; SELECT prj_id INTO _returnVal FROM prj WHERE (prj_number=pPrjNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Project Number % not found.', pPrjNumber; END IF; RETURN _returnVal; END; $$; 0DROP FUNCTION public.getprjid(pprjnumber text); publicadminfalse83992512551691920getprjtaskid(text, text)FUNCTIONCREATE FUNCTION getprjtaskid(pprjnumber text, ptasknumber text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pPrjNumber IS NULL OR pTaskNumber IS NULL) THEN RETURN NULL; END IF; SELECT prjtask_id INTO _returnVal FROM prjtask JOIN prj ON (prj_id=prjtask_prj_id) WHERE ((prj_number=pPrjNumber) AND (prjtask_number=pTaskNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Project Task Number %-% not found.', pPrjNumber, pTaskNumber; END IF; RETURN _returnVal; END; $$; FDROP FUNCTION public.getprjtaskid(pprjnumber text, ptasknumber text); publicadminfalse83992612551691921getprodcatid(text)FUNCTION#CREATE FUNCTION getprodcatid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pProdCat ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pProdCat IS NULL) THEN RETURN NULL; END IF; SELECT prodcat_id INTO _returnVal FROM prodcat WHERE (prodcat_code=pProdCat); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Product Category % not found.', pProdCat; END IF; RETURN _returnVal; END; $_$; )DROP FUNCTION public.getprodcatid(text); publicadminfalse83992712551691922getprospectid(text)FUNCTIONRCREATE FUNCTION getprospectid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pProspectNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pProspectNumber IS NULL) THEN RETURN NULL; END IF; SELECT prospect_id INTO _returnVal FROM prospect WHERE(UPPER(prospect_number)=UPPER(pProspectNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Prospect Number % found.', pProspectNumber; END IF; RETURN _returnVal; END; $_$; *DROP FUNCTION public.getprospectid(text); publicadminfalse83992812551691923getquoteid(text)FUNCTION,CREATE FUNCTION getquoteid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuoteNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pQuoteNumber IS NULL) THEN RETURN NULL; END IF; SELECT quhead_id INTO _returnVal FROM quhead WHERE (quhead_number=pQuoteNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Quote Number % not found.', pQuoteNumber; END IF; RETURN _returnVal; END; $_$; 'DROP FUNCTION public.getquoteid(text); publicadminfalse83992912551691924!getquotelineitemid(text, integer)FUNCTIONCREATE FUNCTION getquotelineitemid(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuoteNumber ALIAS FOR $1; pLineNumber ALIAS FOR $2; _returnVal INTEGER; BEGIN IF ((pQuoteNumber IS NULL) OR (pLineNumber IS NULL)) THEN RETURN NULL; END IF; SELECT quitem_id INTO _returnVal FROM quhead, quitem WHERE ((quhead_number=pQuoteNumber) AND (quhead_id=quitem_quhead_id) AND (quitem_linenumber=pLineNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Quote Line Item %-%not found.', pQuoteNumber,pLineNumber; END IF; RETURN _returnVal; END; $_$; 8DROP FUNCTION public.getquotelineitemid(text, integer); publicadminfalse83992:12551691925getrevid(text, text, text)FUNCTIONDCREATE FUNCTION getrevid(text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pType ALIAS FOR $1; pItemNumber ALIAS FOR $2; pRevision ALIAS FOR $3; _returnVal INTEGER; BEGIN IF (pItemNumber IS NULL) THEN RETURN NULL; END IF; IF (NOT fetchMetricBool('RevControl')) THEN RETURN -1; ELSIF ( (pRevision IS NULL) OR (LENGTH(pRevision)=0) ) THEN SELECT getActiveRevId(pType, getItemId(pItemNumber)) INTO _returnVal; ELSE IF (pType='BOM') THEN SELECT rev_id INTO _returnVal FROM item, bomhead, rev WHERE ((item_id=bomhead_item_id) AND (bomhead_rev_id=rev_id) AND (UPPER(item_number)=UPPER(pItemNumber)) AND (rev_number=pRevision)); ELSIF (pType='BOO') THEN SELECT rev_id INTO _returnVal FROM item, xtmfg.boohead, rev WHERE ((item_id=boohead_item_id) AND (boohead_rev_id=rev_id) AND (UPPER(item_number)=UPPER(pItemNumber)) AND (rev_number=pRevision)); ELSE RAISE EXCEPTION 'Invalid Revision Type.'; END IF; END IF; IF (_returnVal IS NULL) THEN RAISE EXCEPTION '% revision % for % not found.', pType, pRevision, pItemNumber; END IF; RETURN _returnVal; END; $_$; 1DROP FUNCTION public.getrevid(text, text, text); publicadminfalse83992;12551691926getrsnid(text)FUNCTIONCREATE FUNCTION getrsnid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pRsnCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pRsnCode IS NULL) THEN RETURN NULL; END IF; SELECT rsncode_id INTO _returnVal FROM rsncode WHERE (rsncode_code=pRsnCode); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Reason Code % not found.', pRsnCode; END IF; RETURN _returnVal; END; $_$; %DROP FUNCTION public.getrsnid(text); publicadminfalse83992<12551691927getsalescatid(text)FUNCTION9CREATE FUNCTION getsalescatid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSalesCatName ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pSalesCatName IS NULL) THEN RETURN NULL; END IF; SELECT salescat_id INTO _returnVal FROM salescat WHERE (salescat_name=pSalesCatName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Sales Category % not found.', pSalesCatName; END IF; RETURN _returnVal; END; $_$; *DROP FUNCTION public.getsalescatid(text); publicadminfalse8399212551691928!getsaleslineitemid(text, integer)FUNCTIONCREATE FUNCTION getsaleslineitemid(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN getSalesLineItemId($1, $2, 0); END $_$; 8DROP FUNCTION public.getsaleslineitemid(text, integer); publicadminfalse83992=12551691929getsaleslineitemid(text)FUNCTIONCREATE FUNCTION getsaleslineitemid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSalesOrderItem ALIAS FOR $1; _delpos INTEGER = 0; _order TEXT; _part TEXT; _ln INTEGER; _sn INTEGER; BEGIN IF (pSalesOrderItem IS NULL) THEN RETURN NULL; END IF; _delpos := strpos(pSalesOrderItem, '-'); IF (_delpos > 0) THEN _order := substr(pSalesOrderItem, 1, (_delpos - 1)); _part := substr(pSalesOrderItem, (_delpos + 1)); _delpos := strpos(_part, '.'); IF (_delpos > 0) THEN _ln := CAST(substr(_part, 1, (_delpos - 1)) AS INTEGER); _sn := CAST(substr(_part, (_delpos + 1)) AS INTEGER); ELSE _ln := CAST(_part AS INTEGER); _sn := 0; END IF; RETURN getSalesLineItemId( _order, _ln, _sn ); END IF; RETURN 0; END; $_$; /DROP FUNCTION public.getsaleslineitemid(text); publicadminfalse83992>12551691930*getsaleslineitemid(text, integer, integer)FUNCTION3CREATE FUNCTION getsaleslineitemid(text, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSalesOrderNumber ALIAS FOR $1; pLineNumber ALIAS FOR $2; pSubNumber ALIAS FOR $3; _returnVal INTEGER; BEGIN IF ((pSalesOrderNumber IS NULL) OR (pLineNumber IS NULL)) THEN RETURN NULL; END IF; SELECT coitem_id INTO _returnVal FROM cohead, coitem WHERE ((cohead_number=pSalesOrderNumber) AND (cohead_id=coitem_cohead_id) AND (coitem_linenumber=pLineNumber) AND (coitem_subnumber=pSubNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Sales Line Item %-%not found.', pSalesOrderNumber,pLineNumber; END IF; RETURN _returnVal; END; $_$; ADROP FUNCTION public.getsaleslineitemid(text, integer, integer); publicadminfalse83992?12551691931getsalesorderid(text)FUNCTIONKCREATE FUNCTION getsalesorderid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSalesOrderNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pSalesOrderNumber IS NULL) THEN RETURN NULL; END IF; SELECT cohead_id INTO _returnVal FROM cohead WHERE (cohead_number=pSalesOrderNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Sales Order Number % not found.', pSalesOrderNumber; END IF; RETURN _returnVal; END; $_$; ,DROP FUNCTION public.getsalesorderid(text); publicadminfalse83992@12551691932getsalesrepid(text)FUNCTIONECREATE FUNCTION getsalesrepid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSalesRepNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pSalesRepNumber IS NULL) THEN RETURN NULL; END IF; SELECT salesrep_id INTO _returnVal FROM salesrep WHERE (salesrep_number=pSalesRepNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Sales Rep Number % not found.', pSalesRepNumber; END IF; RETURN _returnVal; END; $_$; *DROP FUNCTION public.getsalesrepid(text); publicadminfalse83992A12551746756getsaletypeid(text)FUNCTIONCREATE FUNCTION getsaletypeid(psaletype text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pSaleType IS NULL) THEN RETURN NULL; END IF; SELECT saletype_id INTO _returnVal FROM saletype WHERE (saletype_code=UPPER(pSaleType)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Sale Type % not found.', pSaleType; END IF; RETURN _returnVal; END; $$; 4DROP FUNCTION public.getsaletypeid(psaletype text); publicadminfalse83992 12551691933getshiftid(text)FUNCTIONFCREATE FUNCTION getshiftid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShiftNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (COALESCE(TRIM(pShiftNumber), '') = '') THEN RETURN NULL; END IF; SELECT shift_id INTO _returnVal FROM shift WHERE (UPPER(shift_number)=UPPER(pShiftNumber)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Shift % not found.', pShiftNumber; END IF; RETURN _returnVal; END; $_$; 'DROP FUNCTION public.getshiftid(text); publicadminfalse83992B12551691934getshipchrgid(text)FUNCTION3CREATE FUNCTION getshipchrgid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipChrgName ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pShipChrgName IS NULL) THEN RETURN NULL; END IF; SELECT shipchrg_id INTO _returnVal FROM shipchrg WHERE (shipchrg_name=pShipChrgName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Ship Charge % not found.', pShipChrgName; END IF; RETURN _returnVal; END; $_$; *DROP FUNCTION public.getshipchrgid(text); publicadminfalse83992C12551691935getshipformid(text)FUNCTION9CREATE FUNCTION getshipformid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipFormName ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pShipFormName IS NULL) THEN RETURN NULL; END IF; SELECT shipform_id INTO _returnVal FROM shipform WHERE (shipform_name=pShipFormName) LIMIT 1; IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Ship Form % not found.', pShipFormName; END IF; RETURN _returnVal; END; $_$; *DROP FUNCTION public.getshipformid(text); publicadminfalse83992D12551691936getshipheadid(text)FUNCTIONUCREATE FUNCTION getshipheadid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipmentNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pShipmentNumber IS NULL OR pShipmentNumber = '') THEN RETURN NULL; END IF; SELECT shiphead_id INTO _returnVal FROM shiphead WHERE (shiphead_number=pShipmentNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Shipment % not found.', pShipmentNumber; END IF; RETURN _returnVal; END; $_$; *DROP FUNCTION public.getshipheadid(text); publicadminfalse83992E12551691937getshiptoid(text, text)FUNCTIONCREATE FUNCTION getshiptoid(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustNumber ALIAS FOR $1; pShiptoNumber ALIAS FOR $2; _returnVal INTEGER; BEGIN IF ((pCustNumber IS NULL) OR (pShiptoNumber IS NULL)) THEN RETURN NULL; END IF; SELECT shipto_id INTO _returnVal FROM shiptoinfo WHERE ((shipto_cust_id=getCustId(pCustNumber,true)) AND (UPPER(shipto_num)=UPPER(pShiptoNumber))); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Shipto % not found.', pShiptoNumber; END IF; RETURN _returnVal; END; $_$; .DROP FUNCTION public.getshiptoid(text, text); publicadminfalse83992F12551691938wgetshiptonumberfrominfo(text, text, text, text, text, text, text, text, text, text, text, text, text, boolean, boolean)FUNCTION9CREATE FUNCTION getshiptonumberfrominfo(text, text, text, text, text, text, text, text, text, text, text, text, text, boolean, boolean) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _custname TEXT := COALESCE(TRIM(UPPER( $1)), ''); _email TEXT := COALESCE(TRIM(UPPER( $2)), ''); _company TEXT := COALESCE(TRIM(UPPER( $3)), ''); _first TEXT := COALESCE(TRIM(UPPER( $4)), ''); _last TEXT := COALESCE(TRIM(UPPER( $5)), ''); _fullname TEXT := COALESCE(TRIM(UPPER( $6)), ''); _addr1 TEXT := COALESCE(TRIM(UPPER( $7)), ''); _addr2 TEXT := COALESCE(TRIM(UPPER( $8)), ''); _addr3 TEXT := COALESCE(TRIM(UPPER( $9)), ''); _city TEXT := COALESCE(TRIM(UPPER($10)), ''); _state TEXT := COALESCE(TRIM(UPPER($11)), ''); _postalcode TEXT := COALESCE(TRIM(UPPER($12)), ''); _country TEXT := COALESCE(TRIM(UPPER($13)), ''); _generate BOOLEAN := COALESCE($14, FALSE); _create BOOLEAN := COALESCE($15, FALSE); _citytrunc TEXT; _counter INTEGER; _custid INTEGER; _custnumber TEXT; _candidate TEXT; _r RECORD; _statetrunc TEXT; BEGIN IF (_custname = '') THEN _custname := getCustNameFromInfo(_email, _company, _first, _last, _fullname, FALSE); END IF; SELECT COUNT(*) INTO _counter FROM custinfo, shiptoinfo, addr WHERE ((UPPER(cust_name)=UPPER(_custname)) AND UPPER(shipto_name)=UPPER(_fullname) AND (cust_id=shipto_cust_id) AND (shipto_addr_id=addr_id)); IF (_counter = 1) THEN SELECT shipto_num INTO _candidate FROM custinfo, shiptoinfo, addr WHERE ((UPPER(cust_name)=UPPER(_custname)) AND UPPER(shipto_name)=UPPER(_fullname) AND (cust_id=shipto_cust_id) AND (shipto_addr_id=addr_id)); RETURN _candidate; ELSE SELECT COUNT(*) INTO _counter FROM custinfo, shiptoinfo, addr WHERE ((UPPER(cust_name)=UPPER(_custname)) AND (cust_id=shipto_cust_id) AND (shipto_addr_id=addr_id)); IF (_counter = 1) THEN SELECT shipto_num INTO _candidate FROM custinfo, shiptoinfo, addr WHERE ((UPPER(cust_name)=UPPER(_custname)) AND (cust_id=shipto_cust_id) AND (shipto_addr_id=addr_id)); RETURN _candidate; ELSIF (_counter > 1) THEN SELECT shipto_num, CASE WHEN (UPPER(addr_country) = _country) THEN 1 ELSE 0 END + CASE WHEN (UPPER(addr_postalcode) = _postalcode) THEN 1 ELSE 0 END + CASE WHEN (UPPER(addr_state) = _state) THEN 1 ELSE 0 END + CASE WHEN (UPPER(addr_city) = _city) THEN 1 ELSE 0 END + CASE WHEN (UPPER(addr_line3) = _addr3) THEN 1 ELSE 0 END + CASE WHEN (UPPER(addr_line2) = _addr2) THEN 1 ELSE 0 END + CASE WHEN (UPPER(addr_line1) = _addr1) THEN 1 ELSE 0 END AS maxquotient INTO _candidate, _counter FROM custinfo, shiptoinfo, addr WHERE ((UPPER(cust_name)=_custname) AND (cust_id=shipto_cust_id) AND (shipto_addr_id=addr_id)) ORDER BY maxquotient desc LIMIT 1; RETURN _candidate; END IF; END IF; IF (_generate) THEN SELECT cust_number, cust_id INTO _custnumber, _custid FROM custinfo WHERE (UPPER(cust_name)=_custname); -- keep the number short _citytrunc := SUBSTRING(_city FOR 5); _statetrunc := SUBSTRING(_state FOR 5); IF (LENGTH(_citytrunc) > 0 AND NOT EXISTS(SELECT UPPER(shipto_num) FROM shiptoinfo WHERE ((shipto_cust_id=_custid) AND (UPPER(shipto_num)=_citytrunc)) )) THEN _candidate := _citytrunc; ELSIF (LENGTH(_last || _citytrunc) > 0 AND NOT EXISTS(SELECT UPPER(shipto_num) FROM shiptoinfo WHERE ((shipto_cust_id=_custid) AND (UPPER(shipto_num)=_last || _citytrunc)) )) THEN _candidate := _last || _citytrunc; ELSIF (LENGTH(_statetrunc) > 0 AND NOT EXISTS(SELECT UPPER(shipto_num) FROM shiptoinfo WHERE ((shipto_cust_id=_custid) AND (UPPER(shipto_num)=_statetrunc)) )) THEN _candidate := _statetrunc; ELSIF (LENGTH(_last || _statetrunc) > 0 AND NOT EXISTS(SELECT UPPER(shipto_num) FROM shiptoinfo WHERE ((shipto_cust_id=_custid) AND (UPPER(shipto_num)=_last || _statetrunc)) )) THEN _candidate := _last || _statetrunc; ELSIF (LENGTH(_citytrunc || _statetrunc) > 0 AND NOT EXISTS(SELECT UPPER(shipto_num) FROM shiptoinfo WHERE ((shipto_cust_id=_custid) AND (UPPER(shipto_num)=_citytrunc || _statetrunc)) )) THEN _candidate := _citytrunc || _statetrunc; ELSE SELECT CAST(COALESCE(MAX(CAST(shipto_num AS INTEGER)), 0) + 1 AS TEXT) INTO _candidate FROM shiptoinfo WHERE ((shipto_cust_id=_custid) AND (shipto_num~'^[0-9]*$')); END IF; IF (_create) THEN INSERT INTO api.custshipto ( customer_number, shipto_number, name, address1, address2, address3, city, state, postal_code, country, address_change, first, last, email, edi_profile ) VALUES ( _custnumber, _candidate, _candidate, _addr1, _addr2, _addr3, _city, _state, _postalcode, _country, 'CHANGEONE', _first, _last, LOWER(_email), 'No EDI' ); END IF; RETURN _candidate; END IF; RETURN ''; END; $_$; DROP FUNCTION public.getshiptonumberfrominfo(text, text, text, text, text, text, text, text, text, text, text, text, text, boolean, boolean); publicadminfalse83992G12551691939getshipviaid(text)FUNCTION,CREATE FUNCTION getshipviaid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipViaCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pShipViaCode IS NULL) THEN RETURN NULL; END IF; SELECT shipvia_id INTO _returnVal FROM shipvia WHERE (shipvia_code=pShipViaCode); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'ShipVia Code % not found.', pShipViaCode; END IF; RETURN _returnVal; END; $_$; )DROP FUNCTION public.getshipviaid(text); publicadminfalse83992H12551691940getshipzoneid(text)FUNCTION%CREATE FUNCTION getshipzoneid(pshipzonename text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN IF (pShipZoneName IS NULL) THEN RETURN NULL; END IF; SELECT shipzone_id INTO _returnVal FROM shipzone WHERE (shipzone_name=pShipZoneName); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Ship Zone % not found.', pShipZoneName; END IF; RETURN _returnVal; END; $$; 8DROP FUNCTION public.getshipzoneid(pshipzonename text); publicadminfalse83992 12551691941getsitetypeid(text)FUNCTION!CREATE FUNCTION getsitetypeid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSiteType ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pSiteType IS NULL) THEN RETURN NULL; END IF; SELECT sitetype_id INTO _returnVal FROM sitetype WHERE (sitetype_name=pSiteType); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Site Type % not found.', pSiteType; END IF; RETURN _returnVal; END; $_$; *DROP FUNCTION public.getsitetypeid(text); publicadminfalse83992I12551691942getsoscheddate(integer)FUNCTIONCREATE FUNCTION getsoscheddate(integer) RETURNS date LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCoheadid ALIAS FOR $1; _minscheddate DATE; BEGIN SELECT MIN(coitem_scheddate) INTO _minscheddate FROM coitem WHERE ( (coitem_cohead_id=pCoheadid) AND (coitem_status NOT IN ('C', 'X')) ); RETURN _minscheddate; END; $_$; .DROP FUNCTION public.getsoscheddate(integer); publicadminfalse83992512551691943getsostatus(integer)FUNCTIONCREATE FUNCTION getsostatus(integer) RETURNS character LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCoheadid ALIAS FOR $1; _result char(1); BEGIN SELECT cohead_status INTO _result FROM cohead WHERE (cohead_id=pCoheadid); RETURN _result; END; $_$; +DROP FUNCTION public.getsostatus(integer); publicadminfalse83992J12552008389getsubtax(integer, integer)FUNCTIONeCREATE FUNCTION getsubtax(integer, integer) RETURNS SETOF subtax LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxCodeId ALIAS FOR $1; pLevel ALIAS FOR $2; _row subtax%ROWTYPE; _x RECORD; _y RECORD; BEGIN FOR _x IN --Select all tax codes whose calculation basis is pTaxCodeId SELECT tax_id, tax_code, tax_descrip FROM tax WHERE tax_basis_tax_id = pTaxCodeId LOOP _row.subtax_taxcode_id := _x.tax_id; _row.subtax_taxcode_code := _x.tax_code; _row.subtax_taxcode_descrip := _x.tax_descrip; _row.subtax_taxcode_level := pLevel + 1; RETURN NEXT _row; FOR _y IN SELECT * from getSubTax(_x.tax_id, pLevel + 1) --This is the recursive part. LOOP _row.subtax_taxcode_id := _y.subtax_taxcode_id; _row.subtax_taxcode_code := _y.subtax_taxcode_code ; _row.subtax_taxcode_descrip := _y.subtax_taxcode_descrip; _row.subtax_taxcode_level := pLevel + 2; RETURN NEXT _row; END LOOP; END LOOP; END; $_$; 2DROP FUNCTION public.getsubtax(integer, integer); publicadminfalse839922597K12551691946gettaxauthid(text)FUNCTION-CREATE FUNCTION gettaxauthid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxAuthCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pTaxAuthCode IS NULL) THEN RETURN NULL; END IF; SELECT taxauth_id INTO _returnVal FROM taxauth WHERE (taxauth_code=pTaxAuthCode); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Tax Authority % not found.', pTaxAuthCode; END IF; RETURN _returnVal; END; $_$; )DROP FUNCTION public.gettaxauthid(text); publicadminfalse83992L12551691947gettaxid(text)FUNCTIONCREATE FUNCTION gettaxid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pTaxCode IS NULL) THEN RETURN NULL; END IF; SELECT tax_id INTO _returnVal FROM tax WHERE (tax_code=pTaxCode); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Tax Code % not found.', pTaxCode; END IF; RETURN _returnVal; END; $_$; %DROP FUNCTION public.gettaxid(text); publicadminfalse83992M12551691948gettaxtypeid(text)FUNCTIONCREATE FUNCTION gettaxtypeid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxType ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pTaxType IS NULL) THEN RETURN NULL; END IF; SELECT taxtype_id INTO _returnVal FROM taxtype WHERE (taxtype_name=pTaxType); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Tax Type % not found.', pTaxType; END IF; RETURN _returnVal; END; $_$; )DROP FUNCTION public.gettaxtypeid(text); publicadminfalse83992N12551691949gettaxzoneid(text)FUNCTIONCREATE FUNCTION gettaxzoneid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxZone ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pTaxZone IS NULL) THEN RETURN NULL; END IF; SELECT taxzone_id INTO _returnVal FROM taxzone WHERE (taxzone_code=pTaxZone); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Tax Zone % not found.', pTaxZone; END IF; RETURN _returnVal; END; $_$; )DROP FUNCTION public.gettaxzoneid(text); publicadminfalse83992O12551691950gettermsid(text)FUNCTIONCREATE FUNCTION gettermsid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTermsCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pTermsCode IS NULL) THEN RETURN NULL; END IF; SELECT terms_id INTO _returnVal FROM terms WHERE (terms_code=pTermsCode); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Terms Code % not found.', pTermsCode; END IF; RETURN _returnVal; END; $_$; 'DROP FUNCTION public.gettermsid(text); publicadminfalse83992P12551691951getunassignedaccntid()FUNCTIONCREATE FUNCTION getunassignedaccntid() RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _test INTEGER; _returnVal INTEGER; BEGIN SELECT fetchMetricValue('UnassignedAccount') INTO _test; IF (_test IS NULL) THEN RAISE EXCEPTION 'Metric not found for UnassignedAccount'; END IF; SELECT accnt_id INTO _returnVal FROM accnt WHERE (accnt_id=_test); IF (NOT FOUND) THEN RAISE EXCEPTION 'Metric UnassignedAccount is an invalid G/L Account'; END IF; RETURN _returnVal; END; $$; -DROP FUNCTION public.getunassignedaccntid(); publicadminfalse83992Q12551691952getuomid(text)FUNCTIONCREATE FUNCTION getuomid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUom ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pUom IS NULL) THEN RETURN NULL; END IF; SELECT uom_id INTO _returnVal FROM uom WHERE (uom_name=pUom); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Unit of Measure % not found.', pUom; END IF; RETURN _returnVal; END; $_$; %DROP FUNCTION public.getuomid(text); publicadminfalse83992R12551691953getuomtypeid(text)FUNCTION2CREATE FUNCTION getuomtypeid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUomType ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pUomType IS NULL) THEN RETURN NULL; END IF; SELECT uomtype_id INTO _returnVal FROM uomtype WHERE (UPPER(uomtype_name)=UPPER(pUomType)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Unit of Measuer Type % not found.', pUomType; END IF; RETURN _returnVal; END; $_$; )DROP FUNCTION public.getuomtypeid(text); publicadminfalse83992S12551691954getuomtypeid(text[])FUNCTIONCREATE FUNCTION getuomtypeid(text[]) RETURNS integer[] LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUomTypes ALIAS FOR $1; _returnVal INTEGER[]; _val INTEGER; _i INTEGER; BEGIN IF (pUomTypes IS NULL) OR (ARRAY_UPPER(pUomTypes,1) = 0) THEN RETURN NULL; END IF; FOR _i IN 1..ARRAY_UPPER(pUomTypes,1) LOOP SELECT uomtype_id INTO _val FROM uomtype WHERE (UPPER(uomtype_name)=UPPER(pUomTypes[_i])); IF (_val IS NULL) THEN RAISE EXCEPTION 'Unit of Measure Type % not found.', pUomTypes[_i]; ELSE _returnVal[_i] := _val; END IF; END LOOP; RETURN _returnVal; END; $_$; +DROP FUNCTION public.getuomtypeid(text[]); publicadminfalse8399212551691955getusrid(text)FUNCTIONCREATE FUNCTION getusrid(pusr text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN SELECT usr_id INTO _returnVal FROM usr WHERE (usr_username=COALESCE(pUsr, getEffectiveXtUser())); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'User % not found.', pUsr; END IF; RETURN _returnVal; END; $$; *DROP FUNCTION public.getusrid(pusr text); publicadminfalse83992T12551847436getusrlocaleid()FUNCTION'CREATE FUNCTION getusrlocaleid() RETURNS integer LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN SELECT CAST(usrpref_value AS INTEGER) FROM usrpref WHERE (usrpref_username=getEffectiveXTUser()) AND (usrpref_name='locale_id') INTO _returnVal; IF (_returnVal IS NULL) THEN SELECT locale_id FROM locale WHERE (LOWER(locale_code) = 'default') LIMIT 1 INTO _returnVal; END IF; IF (_returnVal IS NULL) THEN SELECT locale_id FROM locale ORDER BY locale_id LIMIT 1 INTO _returnVal; END IF; IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'User Locale not found.'; END IF; RETURN _returnVal; END; $$; 'DROP FUNCTION public.getusrlocaleid(); publicadminfalse83992U12551691956getvendaddrid(text, text)FUNCTIONCREATE FUNCTION getvendaddrid(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendNumber ALIAS FOR $1; pVendAddrCode ALIAS FOR $2; _returnVal INTEGER; BEGIN IF ( (pVendNumber IS NULL) OR (pVendAddrCode IS NULL) ) THEN RETURN NULL; END IF; SELECT vendaddr_id INTO _returnVal FROM vendaddrinfo JOIN vendinfo ON (vend_id=vendaddr_vend_id) WHERE ( (vendaddr_code=pVendAddrCode) AND (vend_number=pVendNumber) ); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Vendor Number % Address % not found.', pVendNumber, pVendAddrCode; END IF; RETURN _returnVal; END; $_$; 0DROP FUNCTION public.getvendaddrid(text, text); publicadminfalse83992912551691957getvendid(text)FUNCTION,CREATE FUNCTION getvendid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendNumber ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pVendNumber IS NULL) THEN RETURN NULL; END IF; SELECT vend_id INTO _returnVal FROM vendinfo WHERE (vend_number=pVendNumber); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Vendor Number % not found.', pVendNumber; END IF; RETURN _returnVal; END; $_$; &DROP FUNCTION public.getvendid(text); publicadminfalse83992V12551691958getvendtypeid(text)FUNCTIONDCREATE FUNCTION getvendtypeid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendTypeCode ALIAS FOR $1; _returnVal INTEGER; BEGIN IF (pVendTypeCode IS NULL) THEN RETURN NULL; END IF; SELECT vendtype_id INTO _returnVal FROM vendtype WHERE (UPPER(vendtype_code)=UPPER(pVendTypeCode)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Vendor Type % not found.', pVendTypeCode; END IF; RETURN _returnVal; END; $_$; *DROP FUNCTION public.getvendtypeid(text); publicadminfalse83992X12551691959getwarehousid(text, text)FUNCTIONCREATE FUNCTION getwarehousid(pwarehouscode text, ptype text) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _active BOOL; _shipping BOOL; _returnVal INTEGER; BEGIN IF (pWarehousCode IS NULL) THEN RETURN NULL; END IF; IF (UPPER(pType) NOT IN ('ALL','ACTIVE','SHIPPING')) THEN RAISE EXCEPTION 'Warehouse lookip type % not valid. Valid types are ALL, ACTIVE and SHIPPING', pType; END IF; SELECT warehous_id, warehous_active, warehous_shipping INTO _returnVal, _active, _shipping FROM site() WHERE (warehous_code=UPPER(pWarehousCode)); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Warehouse Code % not found.', pWarehousCode; ELSE IF ((pType='SHIPPING') AND (_shipping=false)) THEN RAISE EXCEPTION 'Warehouse Code % is not a vaild shipping warehouse.', pWarehousCode; ELSE IF ((pType IN ('SHIPPING','ACTIVE')) AND (_active=false)) THEN RAISE EXCEPTION 'Warehouse Code % is inactive.', pWarehousCode; END IF; END IF; END IF; RETURN _returnVal; END; $$; DDROP FUNCTION public.getwarehousid(pwarehouscode text, ptype text); publicadminfalse83992Y12551691960getwhsezoneid(text, text)FUNCTIONCREATE FUNCTION getwhsezoneid(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWhseCode ALIAS FOR $1; pWhseZoneName ALIAS FOR $2; _returnVal INTEGER; BEGIN IF ((pWhseCode IS NULL) OR (pWhseZoneName IS NULL)) THEN RETURN NULL; END IF; SELECT whsezone_id INTO _returnVal FROM whsezone WHERE ( (whsezone_warehous_id=getWarehousId(pWhseCode, 'ACTIVE')) AND (UPPER(whsezone_name)=UPPER(pWhseZoneName)) ); IF (_returnVal IS NULL) THEN RAISE EXCEPTION 'Whsezone % not found.', pWhseZoneName; END IF; RETURN _returnVal; END; $_$; 0DROP FUNCTION public.getwhsezoneid(text, text); publicadminfalse83992Z12551691961+grantallmodulecmnttypesource(integer, text)FUNCTIONCREATE FUNCTION grantallmodulecmnttypesource(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmnttypeid ALIAS FOR $1; pModuleName ALIAS FOR $2; _source RECORD; _sourceCounter INTEGER; BEGIN _sourceCounter := 0; FOR _source IN SELECT source_id FROM source WHERE (source_module=pModuleName) LOOP IF (SELECT grantCmnttypeSource(pCmnttypeid, _source.source_id)) THEN _sourceCounter := _sourceCounter + 1; END IF; END LOOP; RETURN _sourceCounter; END; $_$; BDROP FUNCTION public.grantallmodulecmnttypesource(integer, text); publicadminfalse83992[12551691962grantallmodulepriv(text, text)FUNCTIONmCREATE FUNCTION grantallmodulepriv(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pModuleName ALIAS FOR $2; _priv RECORD; _privCounter INTEGER; BEGIN _privCounter := 0; FOR _priv IN SELECT priv_id FROM priv WHERE (priv_module=pModuleName) LOOP IF (SELECT grantPriv(pUsername, _priv.priv_id)) THEN _privCounter := _privCounter + 1; END IF; END LOOP; RETURN _privCounter; END; $_$; 5DROP FUNCTION public.grantallmodulepriv(text, text); publicadminfalse83992\12551691963&grantallmoduleprivgroup(integer, text)FUNCTIONtCREATE FUNCTION grantallmoduleprivgroup(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pGrpid ALIAS FOR $1; pModuleName ALIAS FOR $2; _priv RECORD; _privCounter INTEGER; BEGIN _privCounter := 0; FOR _priv IN SELECT priv_id FROM priv WHERE (priv_module=pModuleName) LOOP IF (SELECT grantPrivGroup(pGrpid, _priv.priv_id)) THEN _privCounter := _privCounter + 1; END IF; END LOOP; RETURN _privCounter; END; $_$; =DROP FUNCTION public.grantallmoduleprivgroup(integer, text); publicadminfalse83992]12551691964%grantcmnttypesource(integer, integer)FUNCTIONCREATE FUNCTION grantcmnttypesource(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmnttypeid ALIAS FOR $1; pSourceid ALIAS FOR $2; _test INTEGER; BEGIN SELECT cmnttypesource_id INTO _test FROM cmnttypesource WHERE ( (cmnttypesource_cmnttype_id=pCmnttypeid) AND (cmnttypesource_source_id=pSourceid) ); IF (FOUND) THEN RETURN FALSE; END IF; INSERT INTO cmnttypesource ( cmnttypesource_cmnttype_id, cmnttypesource_source_id ) VALUES ( pCmnttypeid, pSourceid ); RETURN TRUE; END; $_$; <DROP FUNCTION public.grantcmnttypesource(integer, integer); publicadminfalse83992^12551691965grantgroup(text, integer)FUNCTIONFCREATE FUNCTION grantgroup(text, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pGrpid ALIAS FOR $2; _test INTEGER; BEGIN SELECT usrgrp_id INTO _test FROM usrgrp WHERE ( (usrgrp_username=pUsername) AND (usrgrp_grp_id=pGrpid) ); IF (FOUND) THEN RETURN FALSE; END IF; INSERT INTO usrgrp ( usrgrp_username, usrgrp_grp_id ) VALUES ( pUsername, pGrpid ); RETURN TRUE; END; $_$; 0DROP FUNCTION public.grantgroup(text, integer); publicadminfalse83992_12551691966grantpriv(text, integer)FUNCTIONmCREATE FUNCTION grantpriv(text, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pPrivid ALIAS FOR $2; _test INTEGER; BEGIN SELECT usrpriv_id INTO _test FROM usrpriv WHERE ( (usrpriv_username=pUsername) AND (usrpriv_priv_id=pPrivid) ); IF (FOUND) THEN RETURN FALSE; END IF; INSERT INTO usrpriv ( usrpriv_username, usrpriv_priv_id ) VALUES ( pUsername, pPrivid ); NOTIFY "usrprivUpdated"; RETURN TRUE; END; $_$; /DROP FUNCTION public.grantpriv(text, integer); publicadminfalse83992a12551691967grantpriv(text, text)FUNCTIONCREATE FUNCTION grantpriv(text, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pPrivname ALIAS FOR $2; _test INTEGER; BEGIN SELECT usrpriv_id INTO _test FROM usrpriv JOIN priv ON (usrpriv_priv_id=priv_id) WHERE ((usrpriv_username=pUsername) AND (priv_name=pPrivname) ); IF (FOUND) THEN RETURN FALSE; END IF; INSERT INTO usrpriv ( usrpriv_username, usrpriv_priv_id ) SELECT pUsername, priv_id FROM priv WHERE (priv_name=pPrivname); NOTIFY "usrprivUpdated"; RETURN TRUE; END; $_$; ,DROP FUNCTION public.grantpriv(text, text); publicadminfalse83992b12551691968 grantprivgroup(integer, integer)FUNCTIONLCREATE FUNCTION grantprivgroup(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pGrpid ALIAS FOR $1; pPrivid ALIAS FOR $2; _test INTEGER; BEGIN SELECT grppriv_id INTO _test FROM grppriv WHERE ( (grppriv_grp_id=pGrpid) AND (grppriv_priv_id=pPrivid) ); IF (FOUND) THEN RETURN FALSE; END IF; INSERT INTO grppriv ( grppriv_grp_id, grppriv_priv_id ) VALUES ( pGrpid, pPrivid ); RETURN TRUE; END; $_$; 7DROP FUNCTION public.grantprivgroup(integer, integer); publicadminfalse83992c12551691969 hasalarms()FUNCTIONCREATE FUNCTION hasalarms() RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _alarm RECORD; _batchId INTEGER; _evntlogordtype TEXT; _evnttypeid INTEGER; _evnttypename TEXT; _fromEmail TEXT; _itemid INTEGER; _longsource TEXT; _msgId INTEGER; _recipient TEXT; _recipientPart INTEGER; _returnVal BOOLEAN := FALSE; _summary TEXT; _whsId INTEGER := -1; BEGIN FOR _alarm IN SELECT * FROM alarm WHERE ((alarm_creator=getEffectiveXtUser()) AND (CURRENT_TIMESTAMP > alarm_trigger)) LOOP _returnVal := TRUE; IF (_alarm.alarm_source = 'TODO') THEN SELECT (todoitem_name || '-' || todoitem_description), 'T', 'TodoAlarm', 'To-Do Item' INTO _summary, _evntlogordtype, _evnttypename, _longsource FROM todoitem WHERE (todoitem_id = _alarm.alarm_source_id); ELSIF (_alarm.alarm_source = 'INCDT') THEN SELECT (incdt_number || '-' || incdt_summary), 'I', 'IncidentAlarm', 'Incident' INTO _summary, _evntlogordtype, _evnttypename, _longsource FROM incdt WHERE (incdt_id = _alarm.alarm_source_id); ELSIF (_alarm.alarm_source = 'J') THEN SELECT (prj_number || ' ' || prj_name || '-' || prjtask_name), 'J', 'TaskAlarm', 'Project Task' INTO _summary, _evntlogordtype, _evnttypename, _longsource FROM prjtask JOIN prj ON (prj_id=prjtask_prj_id) WHERE (prjtask_id = _alarm.alarm_source_id); ELSE CONTINUE; -- there's nothing to do for this iteration of the loop END IF; -- if event alarm IF (_alarm.alarm_event) THEN SELECT evnttype_id INTO _evnttypeid FROM evnttype WHERE (evnttype_name=_evnttypename); _recipientPart := 1; LOOP _recipient := SPLIT_PART(_alarm.alarm_event_recipient, ',', _recipientPart); EXIT WHEN (LENGTH(_recipient) = 0); SELECT usrpref_value INTO _whsId FROM usrpref WHERE ( (usrpref_username = _recipient) AND (usrpref_name = 'PreferredWarehouse') ); INSERT INTO evntlog (evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) VALUES (CURRENT_TIMESTAMP, _recipient, _evnttypeid, _evntlogordtype, _alarm.alarm_source_id, _whsId, _summary); _recipientPart := _recipientPart + 1; END LOOP; END IF; IF (_alarm.alarm_email) THEN SELECT usr_email INTO _fromEmail FROM usr WHERE (usr_username = _alarm.alarm_creator); _recipientPart := 1; LOOP _recipient := SPLIT_PART(_alarm.alarm_email_recipient, ',', _recipientPart); EXIT WHEN (LENGTH(_recipient) <= 0); _batchId := xtbatch.submitEmailToBatch(_fromEmail, _recipient, '', _summary, 'Alarm reminder for ' || _longsource || '.', NULL, CURRENT_TIMESTAMP, FALSE, NULL, NULL); _recipientPart := _recipientPart + 1; END LOOP; END IF; IF (_alarm.alarm_sysmsg) THEN _recipientPart := 1; LOOP _recipient := SPLIT_PART(_alarm.alarm_sysmsg_recipient, ',', _recipientPart); EXIT WHEN (LENGTH(_recipient) <= 0); _msgId := postMessage(_recipient, (_longsource || ' - ' || _summary)); _recipientPart := _recipientPart + 1; END LOOP; END IF; DELETE FROM alarm WHERE alarm_id=_alarm.alarm_id; END LOOP; RETURN _returnVal; END; $$; "DROP FUNCTION public.hasalarms(); publicadminfalse39928d12551691970 hasevents()FUNCTIONsCREATE FUNCTION hasevents() RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN PERFORM evntlog_id FROM evntlog WHERE ( (evntlog_dispatched IS NULL) AND (evntlog_username=getEffectiveXtUser()) ) LIMIT 1; RETURN FOUND; END; $$; "DROP FUNCTION public.hasevents(); publicadminfalse83992e12551691971 hasmessages()FUNCTIONCREATE FUNCTION hasmessages() RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN PERFORM msguser_id FROM msg, msguser WHERE ( (msguser_username=getEffectiveXtUser()) AND (msguser_msg_id=msg_id) AND (CURRENT_TIMESTAMP BETWEEN msg_scheduled AND msg_expires) AND (msguser_viewed IS NULL) ) LIMIT 1; RETURN FOUND; END; $$; $DROP FUNCTION public.hasmessages(); publicadminfalse83992f12551691972 haspriv(text)FUNCTIONCREATE FUNCTION haspriv(text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrivName ALIAS FOR $1; _result INTEGER; _returnVal BOOLEAN; BEGIN RAISE NOTICE 'hasPriv(TEXT) is deprecated. Use checkPrivilege(TEXT) instead.'; SELECT priv_id INTO _result FROM priv, grppriv, usrgrp WHERE((usrgrp_grp_id=grppriv_grp_id) AND (grppriv_priv_id=priv_id) AND (priv_name=pPrivName) AND (usrgrp_username=getEffectiveXtUser())); IF (FOUND) THEN RETURN true; END IF; SELECT COALESCE(usrpriv_id, 0) != 0 INTO _returnVal FROM priv LEFT OUTER JOIN usrpriv ON (priv_id=usrpriv_priv_id AND usrpriv_username = getEffectiveXtUser()) WHERE (priv_name=pPrivName); IF (_returnVal IS NULL) THEN _returnVal := FALSE; END IF; RETURN _returnVal; END; $_$; $DROP FUNCTION public.haspriv(text); publicadminfalse39928g12551691973*hasprivonobject(text, text, integer, text)FUNCTION'CREATE FUNCTION hasprivonobject(pprivtype text, pobjecttype text, pobjectid integer DEFAULT NULL::integer, puser text DEFAULT NULL::text) RETURNS boolean LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _haspriv BOOLEAN := FALSE; _privfound BOOLEAN := FALSE; _pkey TEXT[]; _privdesc RECORD; _qstr TEXT; BEGIN IF UPPER(pPrivType) NOT IN ('CREATE', 'EDIT', 'VIEW', 'DELETE') THEN RAISE EXCEPTION 'Cannot check if user has % on % [xtuple: hasPrivOnObject, -1, %, %]', pPrivType, pObjectType, pPrivType, pObjectType; END IF; /* TODO: create privdesc table? can't do it yet because this is a fix for a minor release NOTE: only include tables that have a single integer column as pkey NOTE: some of these are part of proprietary extensions. how do we make them part of the extension? */ FOR _privdesc IN WITH privdesc AS ( SELECT 'ADDR' AS otype, 'public' AS masterschema, 'addr' AS mastertable, 'MaintainAddressMasters' AS editall, 'ViewAddressMasters' AS viewall, NULL AS ownerfield, NULL AS editmine, NULL AS viewmine UNION ALL SELECT 'BBH', 'xtmfg', 'bbom', 'MaintainBBOMs', 'ViewBBOMs', NULL, NULL, NULL UNION ALL SELECT 'BBI', 'xtmfg', 'bbom', 'MaintainBBOMs', 'ViewBBOMs', NULL, NULL, NULL UNION ALL SELECT 'BMH', 'public', 'bom', 'MaintainBOMs', 'ViewBOMs', NULL, NULL, NULL UNION ALL SELECT 'BMI', 'public', 'bom', 'MaintainBOMs', 'ViewBOMs', NULL, NULL, NULL UNION ALL SELECT 'BOH', 'xtmfg', 'boo', 'MaintainBOOs', 'ViewBOOs', NULL, NULL, NULL UNION ALL SELECT 'BOI', 'xtmfg', 'boo', 'MaintainBOOs', 'ViewBOOs', NULL, NULL, NULL UNION ALL SELECT 'C', 'public', 'custinfo', 'MaintainCustomerMasters', 'ViewCustomerMasters', NULL, NULL, NULL UNION ALL SELECT 'CRMA', 'public', 'crmacct', 'MaintainAllCRMAccounts', 'ViewAllCRMAccounts', 'crmacct_owner_username', 'MaintainPersonalCRMAccounts', 'ViewPersonalCRMAccounts' UNION ALL SELECT 'EMP', 'public', 'emp', 'MaintainEmployees', 'ViewEmployees', NULL, NULL, NULL UNION ALL SELECT 'I', 'public', 'item', 'MaintainItemMasters', 'ViewItemMasters', NULL, NULL, NULL UNION ALL SELECT 'INCDT', 'public', 'incdt', 'MaintainAllIncidents', 'ViewAllIncidents', 'incdt_owner_username', 'MaintainPersonalIncidents', 'ViewPersonalIncidents' UNION ALL SELECT 'IR', 'public', 'itemsrc', 'MaintainItemSources', 'ViewItemSources', NULL, NULL, NULL UNION ALL SELECT 'IS', 'public', 'itemsite', 'MaintainItemSites', 'ViewItemSites', NULL, NULL, NULL UNION ALL SELECT 'J', 'public', 'prj', 'MaintainAllProjects', 'ViewAllProjects', 'prj_owner_username', 'MaintainPersonalProjects', 'ViewPersonalProjects' UNION ALL SELECT 'J', 'public', 'prj', 'MaintainAllProjects', 'ViewAllProjects', 'prj_username', 'MaintainPersonalProjects', 'ViewPersonalProjects' UNION ALL SELECT 'L', 'public', 'location', 'MaintainLocations', 'ViewLocations', NULL, NULL, NULL UNION ALL SELECT 'OPP', 'public', 'ophead', 'MaintainAllOpportunities', 'ViewAllOpportunities', 'ophead_owner_username', 'MaintainPersonalOpportunities', 'ViewPersonalOpportunities' UNION ALL SELECT 'P', 'public', 'pohead', 'MaintainPurchaseOrders', 'ViewPurchaseOrders', NULL, NULL, NULL UNION ALL SELECT 'PI', 'public', 'pohead', 'MaintainPurchaseOrders', 'ViewPurchaseOrders', NULL, NULL, NULL UNION ALL SELECT 'Q', 'public', 'quhead', 'MaintainQuotes', 'ViewQuotes', NULL, NULL, NULL UNION ALL SELECT 'QI', 'public', 'quhead', 'MaintainQuotes', 'ViewQuotes', NULL, NULL, NULL UNION ALL SELECT 'RA', 'public', 'rahead', 'MaintainReturns', 'ViewReturns', NULL, NULL, NULL UNION ALL SELECT 'RI', 'public', 'rahead', 'MaintainReturns', 'ViewReturns', NULL, NULL, NULL UNION ALL SELECT 'S', 'public', 'cohead', 'MaintainSalesOrders', 'ViewSalesOrders', NULL, NULL, NULL UNION ALL SELECT 'SI', 'public', 'cohead', 'MaintainSalesOrders', 'ViewSalesOrders', NULL, NULL, NULL UNION ALL SELECT 'T', 'public', 'cntct', 'MaintainAllContacts', 'ViewAllContacts', 'cntct_owner_username', 'MaintainPersonalContacts', 'ViewPersonalContacts' UNION ALL SELECT 'TE', 'te', 'tehead', 'MaintainTimeExpense', 'ViewTimeExpenseHistory', 'tehead_username', 'MaintainTimeExpenseSelf', NULL UNION ALL SELECT 'TE', 'te', 'tehead', 'MaintainTimeExpenseOthers', 'ViewTimeExpenseHistory', 'tehead_username', 'MaintainTimeExpenseSelf', NULL UNION ALL SELECT 'TI', 'public', 'tohead', 'MaintainTransferOrders', 'ViewTransferOrders', NULL, NULL, NULL UNION ALL SELECT 'TO', 'public', 'tohead', 'MaintainTransferOrders', 'ViewTransferOrders', NULL, NULL, NULL UNION ALL SELECT 'TODO', 'public', 'todoitem', 'MaintainAllToDoItems', 'ViewAllToDoItems', 'todoitem_owner_username', 'MaintainPersonalToDoItems', 'ViewPersonalToDoItems' UNION ALL SELECT 'V', 'public', 'vendinfo', 'MaintainVendors', 'ViewVendors', NULL, NULL, NULL UNION ALL SELECT 'W', 'public', 'wo', 'MaintainWorkOrders', 'ViewWorkOrders', NULL, NULL, NULL UNION ALL SELECT 'WH', 'public', 'whsinfo', 'MaintainWarehouses', 'ViewWarehouses', NULL, NULL, NULL) -- UNION ALL SELECT 'LS', 'public', 'ls', NULL, NULL, NULL, NULL, NULL -- UNION ALL SELECT 'P', 'public', 'pohead', 'MaintainPostedPurchaseOrders', 'ViewPurchaseOrders', NULL, NULL, NULL -- additional criteria? -- UNION ALL SELECT 'PI', 'public', 'pohead', 'MaintainPostedPurchaseOrders', 'ViewPurchaseOrders', NULL, NULL, NULL -- additional criteria? SELECT * FROM privdesc WHERE otype = pObjectType LOOP _privfound := TRUE; RAISE DEBUG '% % % % % % %', _privdesc.otype, _privdesc.masterschema, _privdesc.mastertable, _privdesc.editall, _privdesc.viewall, _privdesc.editmine, _privdesc.viewmine; IF checkPrivilege(CASE UPPER(pPrivType) WHEN 'CREATE' THEN _privdesc.editall WHEN 'EDIT' THEN _privdesc.editall WHEN 'DELETE' THEN _privdesc.editall WHEN 'VIEW' THEN _privdesc.viewall END) THEN _haspriv = TRUE; ELSIF checkPrivilege(CASE UPPER(pPrivType) WHEN 'CREATE' THEN _privdesc.editmine WHEN 'EDIT' THEN _privdesc.editmine WHEN 'DELETE' THEN _privdesc.editmine WHEN 'VIEW' THEN _privdesc.viewmine END) THEN IF pObjectId IS NULL THEN _haspriv = TRUE; ELSE _pkey := primaryKeyFields(_privdesc.masterschema, _privdesc.mastertable); -- SELECT ... FROM schema.table WHERE pkeyfield = pObjectId AND ownerfield = pUser _qstr := 'SELECT EXISTS(SELECT 1 FROM ' || quote_ident(_privdesc.masterschema) || '.' || quote_ident(_privdesc.mastertable) || ' WHERE ' || quote_ident(_pkey[1]) || ' = ' || pObjectId || ' AND ' || quote_ident(_privdesc.ownerfield) || '= ' || quote_literal(COALESCE(pUser, getEffectiveXtUser())) || ');'; RAISE DEBUG '%', _qstr; EXECUTE _qstr INTO _haspriv; END IF; END IF; EXIT WHEN _haspriv; END LOOP; RETURN _haspriv OR NOT _privfound; END; $$; gDROP FUNCTION public.hasprivonobject(pprivtype text, pobjecttype text, pobjectid integer, puser text); publicadminfalse83992!00YFUNCTION hasprivonobject(pprivtype text, pobjecttype text, pobjectid integer, puser text)COMMENToCOMMENT ON FUNCTION hasprivonobject(pprivtype text, pobjecttype text, pobjectid integer, puser text) IS 'Return if a user has permission to view or edit a specific database object. pPrivType is either CREATE, EDIT, DELETE, or VIEW, and controls which privilege is checked. pObjectType is one of the string constants used by the Documents widget, such as ADDR for Addresses. pObjectId is the internal id of the record in the table associated with pObjectType (defaults to NULL). pUser is the username to be checked for those pObjectTypes that restrict access to individual users (NULL == current user and is the default).'; publicadminfalse163912551691975hmac(text, text, text)FUNCTION{CREATE FUNCTION hmac(text, text, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_hmac'; -DROP FUNCTION public.hmac(text, text, text); publicadminfalse812551691976hmac(bytea, bytea, text)FUNCTION}CREATE FUNCTION hmac(bytea, bytea, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pg_hmac'; /DROP FUNCTION public.hmac(bytea, bytea, text); publicadminfalse8h12551691977implodewo(integer, boolean)FUNCTIONbCREATE FUNCTION implodewo(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; implodeChildren ALIAS FOR $2; resultCode INTEGER; _wotcCnt INTEGER; _routings BOOLEAN; BEGIN SELECT metric_value='t' INTO _routings FROM metric WHERE (metric_name='Routings'); IF ((SELECT wo_id FROM wo WHERE ((wo_status='E') AND (wo_id=pWoid))) IS NULL) THEN RETURN 0; END IF; IF (_routings) THEN SELECT count(*) INTO _wotcCnt FROM xtmfg.wotc WHERE (wotc_wo_id=pWoid); IF (_wotcCnt > 0) THEN RETURN -1; END IF; END IF; -- Delete any created P/R's for this W/O PERFORM deletePr('W', womatl_id) FROM womatl WHERE (womatl_wo_id=pWoid); DELETE FROM womatl WHERE (womatl_id IN ( SELECT womatl_id FROM womatl, wo WHERE ((womatl_wo_id=wo_id) AND (wo_status='E') AND (wo_id=pWoid)) )); IF _routings THEN DELETE FROM xtmfg.wooper WHERE (wooper_id IN ( SELECT wooper_id FROM xtmfg.wooper, wo WHERE ((wooper_wo_id=wo_id) AND (wo_status='E') AND (wo_id=pWoid)) )); END IF; UPDATE wo SET wo_status='O' WHERE (wo_id=pWoid); IF (implodeChildren) THEN resultCode := (SELECT MAX(implodeWo(wo_id, TRUE)) FROM wo WHERE ((wo_ordtype='W') AND (wo_ordid=pWoid))); resultCode := (SELECT MAX(deleteWo(wo_id, TRUE)) FROM wo WHERE ((wo_ordtype='W') AND (wo_ordid=pWoid))); END IF; RETURN 0; END; $_$; 2DROP FUNCTION public.implodewo(integer, boolean); publicadminfalse8399212591691978incdtTABLE CREATE TABLE incdt ( incdt_id integer NOT NULL, incdt_number integer NOT NULL, incdt_crmacct_id integer, incdt_cntct_id integer, incdt_summary text, incdt_descrip text, incdt_item_id integer, incdt_timestamp timestamp without time zone DEFAULT now() NOT NULL, incdt_status character(1) DEFAULT 'N'::bpchar NOT NULL, incdt_assigned_username text, incdt_incdtcat_id integer, incdt_incdtseverity_id integer, incdt_incdtpriority_id integer, incdt_incdtresolution_id integer, incdt_lotserial text, incdt_ls_id integer, incdt_aropen_id integer, incdt_owner_username text, incdt_recurring_incdt_id integer, incdt_updated timestamp without time zone DEFAULT now() NOT NULL, incdt_prj_id integer, incdt_public boolean ); DROP TABLE public.incdt; publicadminfalse5767576857698!00 TABLE incdtCOMMENT,COMMENT ON TABLE incdt IS 'Incident table'; publicadminfalse154!00COLUMN incdt.incdt_lotserialCOMMENTLCOMMENT ON COLUMN incdt.incdt_lotserial IS 'incdt_lotserial is deprecated'; publicadminfalse154!00%COLUMN incdt.incdt_recurring_incdt_idCOMMENTCOMMENT ON COLUMN incdt.incdt_recurring_incdt_id IS 'The first incdt record in the series if this is a recurring Incident. If the incdt_recurring_incdt_id is the same as the incdt_id, this record is the first in the series.'; publicadminfalse154!00incdtACLREVOKE ALL ON TABLE incdt FROM PUBLIC; REVOKE ALL ON TABLE incdt FROM admin; GRANT ALL ON TABLE incdt TO admin; GRANT ALL ON TABLE incdt TO xtrole; publicadminfalse154i12551691987incdt()FUNCTION&CREATE FUNCTION incdt() RETURNS SETOF incdt LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row incdt%ROWTYPE; _priv TEXT; _grant BOOLEAN; BEGIN -- This query will give us the most permissive privilege the user has been granted SELECT privilege, granted INTO _priv, _grant FROM privgranted WHERE privilege IN ('MaintainAllIncidents','ViewAllIncidents','MaintainPersonalIncidents','ViewPersonalIncidents') ORDER BY granted DESC, sequence LIMIT 1; -- If have an 'All' privilege return all results IF (_priv ~ 'All' AND _grant) THEN FOR _row IN SELECT * FROM incdt LOOP RETURN NEXT _row; END LOOP; -- Otherwise if have any other grant, must be personal privilege. ELSIF (_grant) THEN FOR _row IN SELECT * FROM incdt WHERE getEffectiveXtUser() IN (incdt_owner_username, incdt_assigned_username) LOOP RETURN NEXT _row; END LOOP; END IF; RETURN; END; $$; DROP FUNCTION public.incdt(); publicadminfalse839922630!00FUNCTION incdt()COMMENTrCOMMENT ON FUNCTION incdt() IS 'A table function that returns Incident results according to privilege settings.'; publicadminfalse164112551691988indentedbom(integer)FUNCTIONvCREATE FUNCTION indentedbom(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; _revid INTEGER; BEGIN SELECT getActiveRevId('BOM',pItemid) INTO _revid; RETURN indentedBOM(pItemid, _revid); END; $_$; +DROP FUNCTION public.indentedbom(integer); publicadminfalse83992j12551691989indentedbom(integer, integer)FUNCTION^ CREATE FUNCTION indentedbom(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pRevisionid ALIAS FOR $2; _bomworkid INTEGER; _indexid INTEGER; _r RECORD; _batchsize NUMERIC; BEGIN -- Get the batch quantity SELECT COALESCE( ( SELECT bomhead_batchsize FROM bomhead WHERE ((bomhead_item_id=pItemId) AND (bomhead_rev_id=pRevisionid)) LIMIT 1),1) INTO _batchsize; -- Check on the temporary workspace -- PERFORM maintainBOMWorkspace(); -- Grab a new index for this bomwork set SELECT NEXTVAL('misc_index_seq') INTO _indexid; -- Step through all of the components of the passed pItemid FOR _r IN SELECT bomitem.*, item_id, itemuomtouom(item_id, item_inv_uom_id, NULL, (bomitem_qtyfxd/_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') AS qtyreq, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyfxd) AS qtyfxd, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper) AS qtyper, stdcost(item_id, bomitem_id) AS standardcost, actcost(item_id, bomitem_id) AS actualcost FROM bomitem(pItemId, pRevisionid), item WHERE ( (bomitem_item_id=item_id) ) LOOP -- Insert the component and bomitem parameters SELECT NEXTVAL('bomwork_bomwork_id_seq') INTO _bomworkid; INSERT INTO bomwork ( bomwork_id, bomwork_set_id, bomwork_parent_id, bomwork_level, bomwork_parent_seqnumber, bomwork_seqnumber, bomwork_item_id, bomwork_createwo, bomwork_qtyreq, bomwork_qtyfxd, bomwork_qtyper, bomwork_scrap, bomwork_issuemethod, bomwork_effective, bomwork_expires, bomwork_stdunitcost, bomwork_actunitcost, bomwork_char_id, bomwork_value, bomwork_notes, bomwork_ref, bomwork_bomitem_id, bomwork_ecn ) VALUES ( _bomworkid, _indexid, -1, 1, 0, _r.bomitem_seqnumber, _r.item_id, _r.bomitem_createwo, _r.qtyreq, _r.qtyfxd, _r.qtyper, _r.bomitem_scrap, _r.bomitem_issuemethod, _r.bomitem_effective, _r.bomitem_expires, _r.standardcost, _r.actualcost, _r.bomitem_char_id, _r.bomitem_value, _r.bomitem_notes, _r.bomitem_ref, _r.bomitem_id, _r.bomitem_ecn ); -- Explode the components of the current component PERFORM explodeBOM(_r.item_id, _bomworkid, 1); END LOOP; -- Return a key to the result RETURN _indexid; END; $_$; 4DROP FUNCTION public.indentedbom(integer, integer); publicadminfalse83992k12552008391/indentedbom(integer, integer, integer, integer)FUNCTION$CREATE FUNCTION indentedbom(integer, integer, integer, integer) RETURNS SETOF bomdata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pRevisionid ALIAS FOR $2; pExpiredDays ALIAS FOR $3; pFutureDays ALIAS FOR $4; _row bomdata%ROWTYPE; _bomworksetid INTEGER; _x RECORD; _check CHAR(1); _inactive BOOLEAN := FALSE; _batchsize NUMERIC; BEGIN IF (pRevisionid != -1) THEN --Is this a deactivated revision? SELECT rev_status INTO _check FROM rev WHERE ((rev_id=pRevisionid) AND (rev_status='I')); IF (FOUND) THEN _inactive := TRUE; END IF; END IF; -- Get the batch quantity SELECT COALESCE( ( SELECT bomhead_batchsize FROM bomhead WHERE ((bomhead_item_id=pItemId) AND (bomhead_rev_id=pRevisionid)) LIMIT 1),1) INTO _batchsize; IF NOT (_inactive) THEN --We can explode this out based on current data SELECT indentedBOM(pItemid, pRevisionid) INTO _bomworksetid; FOR _x IN SELECT bomwork_id, bomwork_parent_id, bomwork_level, bomworkSequence(bomwork_id) AS seq_ord, bomwork_seqnumber, item_id, item_number, uom_name, item_descrip1, item_descrip2, (item_descrip1 || ' ' || item_descrip2) AS itemdescription, bomwork_qtyreq, bomwork_qtyfxd, bomwork_qtyper, bomwork_scrap, bomwork_createwo, CASE WHEN (bomwork_issuemethod='S') THEN 'Push' WHEN (bomwork_issuemethod='L') THEN 'Pull' WHEN (bomwork_issuemethod='M') THEN 'Mixed' ELSE 'Special' END AS issuemethod, bomwork_effective, bomwork_expires, (bomwork_expires <= CURRENT_DATE) AS expired, (bomwork_effective > CURRENT_DATE) AS future, bomwork_actunitcost AS actunitcost, bomwork_stdunitcost AS stdunitcost, CASE WHEN item_type NOT IN ('R','T') THEN itemuomtouom(item_id, item_inv_uom_id, NULL, (bomwork_qtyfxd/_batchsize + bomwork_qtyper) * (1 + bomwork_scrap), 'qtyper') * bomwork_actunitcost ELSE 0.0 END AS actextendedcost, CASE WHEN item_type NOT IN ('R','T') THEN itemuomtouom(item_id, item_inv_uom_id, NULL, (bomwork_qtyfxd/_batchsize + bomwork_qtyper) * (1 + bomwork_scrap), 'qtyper') * bomwork_stdunitcost ELSE 0.0 END AS stdextendedcost, bomwork_char_id, bomwork_value, bomwork_notes, bomwork_ref, bomwork_bomitem_id, bomwork_ecn FROM bomwork, item, uom WHERE ( (bomwork_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (bomwork_set_id=_bomworksetid) ) AND (bomwork_expires > (CURRENT_DATE - pExpiredDays)) AND (bomwork_effective <= (CURRENT_DATE + pFutureDays)) UNION SELECT -1, -1, 1, '0', NULL,-1, costelem_type AS bomdata_item_number, '', '', '', '', NULL, NULL, NULL, NULL, NULL, '', NULL, NULL, false, false, currToBase(itemcost_curr_id, itemcost_actcost, CURRENT_DATE) AS actunitcost, itemcost_stdcost AS stdunitcost, currToBase(itemcost_curr_id, itemcost_actcost, CURRENT_DATE) AS actextendedcost, itemcost_stdcost AS stdextendedcost, NULL, NULL,NULL,NULL, NULL,NULL FROM itemcost, costelem WHERE ( (itemcost_costelem_id=costelem_id) AND (NOT itemcost_lowlevel) AND (itemcost_item_id=pItemid) ) ORDER BY seq_ord LOOP _row.bomdata_bomwork_id := _x.bomwork_id; _row.bomdata_bomwork_parent_id := _x.bomwork_parent_id; _row.bomdata_bomwork_level := _x.bomwork_level; _row.bomdata_bomwork_seqnumber := _x.bomwork_seqnumber; _row.bomdata_bomitem_id := _x.bomwork_bomitem_id; _row.bomdata_item_id := _x.item_id; _row.bomdata_item_number := _x.item_number; _row.bomdata_uom_name := _x.uom_name; _row.bomdata_item_descrip1 := _x.item_descrip1; _row.bomdata_item_descrip2 := _x.item_descrip2; _row.bomdata_itemdescription := _x.itemdescription; _row.bomdata_batchsize := _batchsize; _row.bomdata_qtyreq := _x.bomwork_qtyreq; _row.bomdata_qtyfxd := _x.bomwork_qtyfxd; _row.bomdata_qtyper := _x.bomwork_qtyper; _row.bomdata_scrap := _x.bomwork_scrap; _row.bomdata_createchild := _x.bomwork_createwo; _row.bomdata_issuemethod := _x.issuemethod; _row.bomdata_effective := _x.bomwork_effective; _row.bomdata_expires := _x.bomwork_expires; _row.bomdata_expired := _x.expired; _row.bomdata_future := _x.future; _row.bomdata_actunitcost := _x.actunitcost; _row.bomdata_stdunitcost := _x.stdunitcost; _row.bomdata_actextendedcost := _x.actextendedcost; _row.bomdata_stdextendedcost := _x.stdextendedcost; _row.bomdata_ecn := _x.bomwork_ecn; _row.bomdata_char_id := _x.bomwork_char_id; _row.bomdata_value := _x.bomwork_value; _row.bomdata_notes := _x.bomwork_notes; _row.bomdata_ref := _x.bomwork_ref; RETURN NEXT _row; END LOOP; PERFORM deleteBOMWorkset(_bomworksetid); ELSE -- Use historical snapshot for inactive revisions FOR _x IN SELECT bomhist_id, bomhist_parent_id, bomhist_level, bomhistSequence(bomhist_seq_id) AS seq_ord, bomhist_seqnumber, item_id, item_number, uom_name, item_descrip1, item_descrip2, (item_descrip1 || ' ' || item_descrip2) AS itemdescription, bomhist_qtyreq, bomhist_qtyfxd, bomhist_qtyper, bomhist_scrap, bomhist_createwo, CASE WHEN (bomhist_issuemethod='S') THEN 'Push' WHEN (bomhist_issuemethod='L') THEN 'Pull' WHEN (bomhist_issuemethod='M') THEN 'Mixed' ELSE 'Special' END AS issuemethod, bomhist_effective, bomhist_expires, (bomhist_expires <= CURRENT_DATE) AS expired, (bomhist_effective > CURRENT_DATE) AS future, bomhist_actunitcost AS actunitcost, bomhist_stdunitcost AS stdunitcost, CASE WHEN item_type NOT IN ('R','T') THEN (bomist_qtyfxd/_batchsize + bomhist_qtyper) * (1 + bomhist_scrap) * bomhist_actunitcost ELSE 0 END AS actextendedcost, CASE WHEN item_type NOT IN ('R','T') THEN (bomist_qtyfxd/_batchsize + bomhist_qtyper) * (1 + bomhist_scrap) * bomhist_stdunitcost ELSE 0 END AS stdextendedcost, bomhist_char_id, bomhist_value, bomhist_notes, bomhist_ref FROM bomhist, item, uom WHERE ( (bomhist_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (bomhist_rev_id=pRevisionid) ) AND (bomhist_expires > (CURRENT_DATE - pExpiredDays)) AND (bomhist_effective <= (CURRENT_DATE + pFutureDays)) UNION SELECT -1, -1, 1, '0', NULL,-1, costelem_type AS bomdata_item_number, '', '', '', '', NULL, NULL, NULL, NULL, false, '', NULL, NULL, false, false, bomhist_actunitcost AS actunitcost, bomhist_stdunitcost AS stdunitcost, bomhist_actunitcost AS actextendedcost, bomhist_stdunitcost AS stdextendedcost, NULL,NULL,NULL,NULL FROM bomhist, costelem WHERE ((bomhist_rev_id=pRevisionid) AND (costelem_id=bomhist_item_id)) ORDER BY seq_ord LOOP _row.bomdata_bomwork_id := _x.bomhist_id; _row.bomdata_bomwork_parent_id := _x.bomhist_parent_id; _row.bomdata_bomwork_level := _x.bomhist_level; _row.bomdata_bomwork_seqnumber := _x.bomhist_seqnumber; _row.bomdata_bomitem_id := -1; _row.bomdata_item_id := _x.item_id; _row.bomdata_item_number := _x.item_number; _row.bomdata_uom_name := _x.uom_name; _row.bomdata_item_descrip1 := _x.item_descrip1; _row.bomdata_item_descrip2 := _x.item_descrip2; _row.bomdata_itemdescription := _x.itemdescription; _row.bomdata_batchsize := _batchsize; _row.bomdata_qtyreq := _x.bomhist_qtyreq; _row.bomdata_qtyfxd := _x.bomist_qtyfxd; _row.bomdata_qtyper := _x.bomhist_qtyper; _row.bomdata_scrap := _x.bomhist_scrap; _row.bomdata_createchild := _x.bomhist_createwo; _row.bomdata_issuemethod := _x.issuemethod; _row.bomdata_effective := _x.bomhist_effective; _row.bomdata_expires := _x.bomhist_expires; _row.bomdata_expired := _x.expired; _row.bomdata_future := _x.future; _row.bomdata_actunitcost := _x.actunitcost; _row.bomdata_stdunitcost := _x.stdunitcost; _row.bomdata_actextendedcost := _x.actextendedcost; _row.bomdata_stdextendedcost := _x.stdextendedcost; _row.bomdata_ecn := ''; _row.bomdata_char_id := _x.bomhist_char_id; _row.bomdata_value := _x.bomhist_value; _row.bomdata_notes := _x.bomhist_notes; _row.bomdata_ref := _x.bomhist_ref; RETURN NEXT _row; END LOOP; END IF; RETURN; END; $_$; FDROP FUNCTION public.indentedbom(integer, integer, integer, integer); publicadminfalse399282577l12551691992indentedwhereused(integer)FUNCTIONM CREATE FUNCTION indentedwhereused(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; _indexid INTEGER; _level INTEGER; BEGIN -- Check on the temporary workspace -- PERFORM maintainBOMWorkspace(); _indexid := (SELECT NEXTVAL('misc_index_seq')); _level := 1; INSERT INTO bomwork ( bomwork_set_id, bomwork_parent_id, bomwork_level, bomwork_seqnumber, bomwork_item_id, bomwork_item_type, bomwork_createwo, bomwork_qtyfxd, bomwork_qtyper, bomwork_scrap, bomwork_issuemethod, bomwork_effective, bomwork_expires, bomwork_status, bomwork_stdunitcost, bomwork_actunitcost ) SELECT _indexid, -1, 1, bomitem_seqnumber, item_id, item_type, bomitem_createwo, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyfxd), (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper), bomitem_scrap, bomitem_issuemethod, bomitem_effective, bomitem_expires, 'U', stdcost(item_id), actcost(item_id) FROM bomitem, item WHERE ((bomitem_item_id=pItemid) AND (bomitem_parent_item_id=item_id) AND (CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (bomitem_rev_id=getActiveRevId('BOM',bomitem_parent_item_id))); WHILE ( ( SELECT count(*) FROM bomwork WHERE ((bomwork_item_type IN ('M', 'F')) AND (bomwork_status='U') AND (bomwork_set_id=_indexid)) ) > 0) LOOP _level := _level + 1; INSERT INTO bomwork ( bomwork_set_id, bomwork_parent_id, bomwork_level, bomwork_seqnumber, bomwork_item_id, bomwork_item_type, bomwork_createwo, bomwork_qtyfxd, bomwork_qtyper, bomwork_scrap, bomwork_issuemethod, bomwork_effective, bomwork_expires, bomwork_status, bomwork_stdunitcost, bomwork_actunitcost ) SELECT _indexid, bomwork_id, _level, bomitem_seqnumber, item_id, item_type, bomitem_createwo, (bomwork_qtyper * (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyfxd)), (bomwork_qtyper * (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper)), bomitem_scrap, bomitem_issuemethod, CASE WHEN bomitem_effective < bomwork_effective THEN bomwork_effective ELSE bomitem_effective END, CASE WHEN bomitem_expires > bomwork_expires THEN bomwork_expires ELSE bomitem_expires END, 'N', stdcost(item_id), actcost(item_id) FROM bomwork JOIN bomitem ON ( (bomitem_item_id=bomwork_item_id) AND (CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (bomitem_rev_id=getActiveRevId('BOM',bomitem_parent_item_id)) ) JOIN item ON (item_id=bomitem_parent_item_id) WHERE ((bomwork_status='U') AND (bomwork_item_type IN ('M', 'F'))); UPDATE bomwork SET bomwork_status='C' WHERE ((bomwork_status='U') AND (bomwork_set_id=_indexid)); UPDATE bomwork SET bomwork_status='U' WHERE ((bomwork_status='N') AND (bomwork_set_id=_indexid)); END LOOP; RETURN _indexid; END; $_$; 1DROP FUNCTION public.indentedwhereused(integer); publicadminfalse83992m12552008393.indentedwo(integer, boolean, boolean, boolean)FUNCTIONCREATE FUNCTION indentedwo(integer, boolean, boolean, boolean) RETURNS SETOF wodata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pwoid ALIAS FOR $1; pshowops ALIAS FOR $2; pshowmatl ALIAS FOR $3; pshowindent ALIAS FOR $4; _row wodata%ROWTYPE; _subrow wodata%ROWTYPE; _opx wodata%ROWTYPE; _x RECORD; _level INTEGER; BEGIN --The wodata_id_type column is used to indicate the source of the wodata_id --there are three different tables used wo, womatl and womatlvar --wodata_id_type = 1 = wo_id --wodata_id_type = 2 = womatl_id --wodata_id_type = 3 = wooper_id --initialise values _level := 0; --get top level works orders FOR _x IN SELECT wo_id,wo_number,wo_subnumber,wo_status,wo_startdate, wo_duedate,wo_adhoc,wo_itemsite_id,itemsite_qtyonhand, wo_qtyord,wo_qtyrcv,wo_prodnotes, item_number, item_descrip1, item_descrip2, uom_name FROM wo, itemsite, item, uom WHERE ((wo_id = pwoid) AND (itemsite_id = wo_itemsite_id) AND (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id)) ORDER BY wo_number, wo_subnumber LOOP _row.wodata_id := _x.wo_id; _row.wodata_id_type := 1; _row.wodata_number := _x.wo_number; _row.wodata_subnumber := _x.wo_subnumber; _row.wodata_itemnumber := _x.item_number; _row.wodata_descrip := _x.item_descrip1 || '-' || _x.item_descrip2; _row.wodata_status := _x.wo_status; _row.wodata_startdate := _x.wo_startdate; _row.wodata_duedate := _x.wo_duedate; _row.wodata_adhoc := _x.wo_adhoc; _row.wodata_itemsite_id := _x.wo_itemsite_id; _row.wodata_qoh := _x.itemsite_qtyonhand; _row.wodata_short := noneg(_x.wo_qtyord - _x.wo_qtyrcv); _row.wodata_qtyrcv := _x.wo_qtyrcv; _row.wodata_qtyordreq := _x.wo_qtyord; _row.wodata_qtyuom := _x.uom_name; _row.wodata_scrap := 0; _row.wodata_notes := _x.wo_prodnotes; _row.wodata_level := _level; RETURN NEXT _row; IF (pshowmatl AND NOT pshowops) THEN --expand materials FOR _subrow IN SELECT * FROM indentedwomatl(pwoid, _level) LOOP RETURN NEXT _subrow; END LOOP; END IF; IF ((pshowmatl OR pshowindent) AND NOT pshowops) THEN --expand next level down FOR _subrow IN SELECT * FROM indentedwo(_x.wo_id, NULL, _level + 1, pshowmatl, pshowindent) LOOP RETURN NEXT _subrow; END LOOP; END IF; IF (pshowops) THEN --expand materials not on operations IF (pshowmatl) THEN FOR _subrow IN SELECT * FROM indentedwomatl(pwoid, -1, _level) LOOP RETURN NEXT _subrow; END LOOP; END IF; IF (pshowmatl OR pshowindent) THEN --expand next level down FOR _subrow IN SELECT * FROM indentedwo(_x.wo_id, -1, _level + 1, pshowmatl, pshowindent) LOOP RETURN NEXT _subrow; END LOOP; END IF; --expand opeartions FOR _opx IN SELECT * FROM xtmfg.indentedwoops(pwoid,_level) LOOP RETURN NEXT _opx; IF (pshowmatl) THEN --expand materials on operations FOR _subrow IN SELECT * FROM indentedwomatl(pwoid, _opx.wodata_id, _level + 1) LOOP RETURN NEXT _subrow; END LOOP; END IF; IF (pshowmatl OR pshowindent) THEN --expand next level down FOR _subrow IN SELECT * FROM indentedwo(_x.wo_id, _opx.wodata_id, _level + 2, pshowmatl, pshowindent) LOOP RETURN NEXT _subrow; END LOOP; END IF; END LOOP; END IF; END LOOP; RETURN; END; $_$; EDROP FUNCTION public.indentedwo(integer, boolean, boolean, boolean); publicadminfalse839922613o125520083947indentedwo(integer, integer, integer, boolean, boolean)FUNCTIONCREATE FUNCTION indentedwo(integer, integer, integer, boolean, boolean) RETURNS SETOF wodata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pwoid ALIAS FOR $1; pwooperid ALIAS FOR $2; plevel ALIAS FOR $3; pshowmatl ALIAS FOR $4; pshowindent ALIAS FOR $5; _row wodata%ROWTYPE; _opx wodata%ROWTYPE; _x RECORD; _subx RECORD; _index INTEGER; _level INTEGER; _qry TEXT; BEGIN --The wodata id column is used to indicate the source of the id --there are three different tables used wo, womatl and womatlvar --wodata_id_type = 1 = wo_id --wodata_id_type = 2 = womatl_id --wodata_id_type = 3 = wooper_id _level := (plevel + 1); --find all WO with the ordid of the next level up _qry := 'SELECT wo_id,wo_number,wo_subnumber,wo_status,wo_startdate,wo_duedate, wo_adhoc,wo_itemsite_id,itemsite_qtyonhand,wo_qtyord,wo_qtyrcv, wo_prodnotes, item_number,item_descrip1, item_descrip2, uom_name, womatl_qtyiss, womatl_scrap, womatl_wooper_id FROM itemsite, wo, item, uom, womatl WHERE ((wo_ordid = ' || pwoid || ') AND (wo_ordtype = ''W'') AND (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (wo_womatl_id=womatl_id) AND (wo_itemsite_id = itemsite_id) '; IF (pwooperid IS NOT NULL) THEN _qry := _qry || ' AND (womatl_wooper_id=' || pwooperid || ') '; END IF; _qry := _qry || ') ORDER BY wo_number, wo_subnumber'; /* if (pwooperid IS NOT NULL) THEN raise exception 'stop %',_qry; END IF;*/ FOR _x IN EXECUTE _qry LOOP _row.wodata_id := _x.wo_id; _row.wodata_id_type := 1; _row.wodata_number := _x.wo_number; _row.wodata_subnumber := _x.wo_subnumber; _row.wodata_itemnumber := _x.item_number; _row.wodata_descrip := _x.item_descrip1 || '-' || _x.item_descrip2; _row.wodata_status := _x.wo_status; _row.wodata_startdate := _x.wo_startdate; _row.wodata_duedate := _x.wo_duedate; _row.wodata_adhoc := _x.wo_adhoc; _row.wodata_itemsite_id := _x.wo_itemsite_id; _row.wodata_qoh := _x.itemsite_qtyonhand; _row.wodata_short := noneg(_x.wo_qtyord - _x.wo_qtyrcv); _row.wodata_qtyiss := _x.womatl_qtyiss; _row.wodata_qtyrcv := _x.wo_qtyrcv; _row.wodata_qtyordreq := _x.wo_qtyord; _row.wodata_scrap := _x.womatl_scrap; _row.wodata_notes := _x.wo_prodnotes; _row.wodata_level := plevel; RETURN NEXT _row; --if indentation require expand next level IF (pshowindent AND pwooperid IS NULL) THEN IF (pshowmatl AND pshowindent) THEN --get materials for this level FOR _subx IN SELECT * FROM indentedwomatl(_x.wo_id, plevel) LOOP RETURN NEXT _subx; END LOOP; END IF; IF (pshowindent) THEN --expand lower levels FOR _subx IN SELECT * FROM indentedwo(_x.wo_id, NULL, _level, pshowmatl, pshowindent ) LOOP RETURN NEXT _subx; END LOOP; END IF; ELSIF (pshowindent) THEN --Handle operations --expand materials not on operations IF (pshowmatl) THEN FOR _subx IN SELECT * FROM indentedwomatl(_x.wo_id, -1, plevel) LOOP RETURN NEXT _subx; END LOOP; END IF; --expand next level down not on operations FOR _subx IN SELECT * FROM indentedwo(_x.wo_id, -1, _level, pshowmatl, pshowindent) LOOP RETURN NEXT _subx; END LOOP; --expand operations FOR _opx IN SELECT * FROM xtmfg.indentedwoops(_x.wo_id,plevel) LOOP RETURN NEXT _opx; IF (pshowmatl) THEN --expand materials on operations FOR _subx IN SELECT * FROM indentedwomatl(_x.wo_id, _opx.wodata_id, _level) LOOP RETURN NEXT _subx; -- raise exception 'stop %',_opx.wodata_id; END LOOP; END IF; --expand next level down FOR _subx IN SELECT * FROM indentedwo(_x.wo_id, _opx.wodata_id, _level + 2, pshowmatl, pshowindent) LOOP RETURN NEXT _subx; END LOOP; END LOOP; END IF; END LOOP; RETURN; END; $_$; NDROP FUNCTION public.indentedwo(integer, integer, integer, boolean, boolean); publicadminfalse839922613p12552008395 indentedwomatl(integer, integer)FUNCTIONCREATE FUNCTION indentedwomatl(integer, integer) RETURNS SETOF wodata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pwoid ALIAS FOR $1; plevel ALIAS FOR $2; _subx RECORD; BEGIN FOR _subx IN SELECT * FROM indentedwomatl(pwoid, NULL::integer, plevel) LOOP RETURN NEXT _subx; END LOOP; RETURN; END; $_$; 7DROP FUNCTION public.indentedwomatl(integer, integer); publicadminfalse839922613q12552008396)indentedwomatl(integer, integer, integer)FUNCTIONt CREATE FUNCTION indentedwomatl(integer, integer, integer) RETURNS SETOF wodata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pwoid ALIAS FOR $1; pwooperid ALIAS FOR $2; plevel ALIAS FOR $3; _status TEXT; _subrow wodata%ROWTYPE; _subx RECORD; _level INTEGER; _qry TEXT; BEGIN --The wodata id column is used to indicate the source of the id --there are three different tables used wo, womatl and womatlvar --wodata_id_type = 1 = wo_id --wodata_id_type = 2 = womatl_id --wodata_id_type = 3 = wooper_id _qry := 'SELECT womatl_id, wo_number, wo_subnumber, wo_startdate, womatl_duedate, womatl_itemsite_id, itemsite_qtyonhand, womatl_qtyreq, womatl_qtyiss, womatl_qtyper, womatl_qtyreq, womatl_scrap, womatl_ref, womatl_notes, item_number, item_descrip1, item_descrip2, uom_name FROM womatl, wo, itemsite, item, uom WHERE ((wo_id = womatl_wo_id) AND (wo_id = ' || pwoid || ') AND (womatl_itemsite_id = itemsite_id) AND (itemsite_item_id=item_id) AND (womatl_uom_id=uom_id) '; -- Need to display in case child w/o is deleted -- AND (NOT womatl_createwo OR womatl_createwo IS NULL) '; IF (pwooperid IS NOT NULL) THEN _qry := _qry || 'AND (womatl_wooper_id=' || pwooperid || ')'; END IF; _qry := _qry || ') ORDER BY item_number;'; _level := plevel + 1; SELECT wo_status FROM wo WHERE wo_id = pwoid LIMIT 1 INTO _status; FOR _subx IN EXECUTE _qry LOOP _subrow.wodata_id := _subx.womatl_id; _subrow.wodata_id_type := 2; _subrow.wodata_number := _subx.wo_number; _subrow.wodata_subnumber := _subx.wo_subnumber; _subrow.wodata_itemnumber := _subx.item_number; _subrow.wodata_descrip := _subx.item_descrip1 || '-' || _subx.item_descrip2; _subrow.wodata_status := _status; _subrow.wodata_startdate := _subx.wo_startdate; _subrow.wodata_duedate := _subx.womatl_duedate; _subrow.wodata_itemsite_id := _subx.womatl_itemsite_id; _subrow.wodata_qoh := _subx.itemsite_qtyonhand; IF((_subx.itemsite_qtyonhand > (_subx.womatl_qtyreq - _subx.womatl_qtyiss))) THEN _subrow.wodata_short := 0; ELSE _subrow.wodata_short := (_subx.womatl_qtyreq - _subx.womatl_qtyiss) - _subx.itemsite_qtyonhand; END IF; _subrow.wodata_qtyper := _subx.womatl_qtyper; _subrow.wodata_qtyiss := _subx.womatl_qtyiss; _subrow.wodata_qtyordreq := _subx.womatl_qtyreq; _subrow.wodata_qtyuom := _subx.uom_name; _subrow.wodata_scrap := _subx.womatl_scrap; _subrow.wodata_notes := _subx.womatl_notes; _subrow.wodata_ref := _subx.womatl_ref; _subrow.wodata_level := _level; RETURN NEXT _subrow; END LOOP; RETURN; END; $_$; @DROP FUNCTION public.indentedwomatl(integer, integer, integer); publicadminfalse839922613r12551691997initeffectivextuser()FUNCTIONCREATE FUNCTION initeffectivextuser() RETURNS void LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Effective users use a temporary table to store the user information -- and this function, called by the other functions, makes sure the temp -- tables exist first. PERFORM * FROM pg_catalog.pg_class WHERE relname = 'effective_user' AND relnamespace = pg_catalog.pg_my_temp_schema(); IF NOT FOUND THEN CREATE TEMPORARY TABLE effective_user ( effective_key TEXT, effective_value TEXT ); CREATE UNIQUE INDEX effective_user_pkey ON effective_user (effective_key); END IF; END; $$; ,DROP FUNCTION public.initeffectivextuser(); publicadminfalse83992s12551691998%initialdistribution(integer, integer)FUNCTIONCREATE FUNCTION initialdistribution(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pLocationid ALIAS FOR $2; _itemlocid INTEGER; _invhistid INTEGER; _itemlocSeries INTEGER; _r RECORD; BEGIN -- Make sure the passed itemsite points to a real item IF ( (SELECT (item_type IN ('R', 'F') OR itemsite_costmethod = 'J') FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ) ) ) THEN RETURN 0; END IF; _itemlocSeries := NEXTVAL('itemloc_series_seq'); -- Reassign the location_id for all existing itemlocs if -- the passed itemsite is already lot/serial controlled IF ( ( SELECT (itemsite_controlmethod IN ('L', 'S')) FROM itemsite WHERE (itemsite_id=pItemsiteid) ) ) THEN FOR _r IN SELECT itemloc_id, itemloc_ls_id, itemloc_qty FROM itemloc WHERE (itemloc_itemsite_id=pItemsiteid) LOOP -- Create the RL transaction SELECT NEXTVAL('invhist_invhist_id_seq') INTO _invhistid; INSERT INTO invhist ( invhist_id, invhist_itemsite_id, invhist_series, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_comments, invhist_invuom, invhist_unitcost, invhist_hasdetail, invhist_costmethod, invhist_value_before, invhist_value_after ) SELECT _invhistid, itemsite_id, _itemlocSeries, 'RL', 0, _r.itemloc_qty, _r.itemloc_qty, 'Initial Distribution', uom_name, stdCost(item_id), TRUE, itemsite_costmethod, itemsite_value, itemsite_value FROM item, itemsite, uom WHERE ( (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (itemsite_id=pItemsiteid) ); -- Update the itemloc UPDATE itemloc SET itemloc_location_id=pLocationid WHERE (itemloc_id=_r.itemloc_id); -- Record the detail transaction INSERT INTO invdetail ( invdetail_invhist_id, invdetail_location_id, invdetail_ls_id, invdetail_qty, invdetail_qty_before, invdetail_qty_after ) VALUES ( _invhistid, pLocationid, _r.itemloc_ls_id, _r.itemloc_qty, 0, _r.itemloc_qty ); -- Adjust QOH if this itemlocdist is to/from a non-netable location IF ( SELECT (NOT location_netable) FROM location WHERE (location_id=pLocationid) ) THEN INSERT INTO invhist ( invhist_itemsite_id, invhist_series, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_comments, invhist_invuom, invhist_unitcost, invhist_costmethod, invhist_value_before, invhist_value_after ) SELECT itemsite_id, _itemlocSeries, 'NN', (_r.itemloc_qty * -1), _r.itemloc_qty, 0, 'Initial Distribution', uom_name, stdCost(item_id), itemsite_costmethod, itemsite_value, itemsite_value FROM itemsite, item, uom WHERE ( (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (itemsite_id=pItemsiteid) ); UPDATE itemsite SET itemsite_nnqoh = (itemsite_nnqoh + _r.itemloc_qty), itemsite_qtyonhand = (itemsite_qtyonhand - _r.itemloc_qty) WHERE (itemsite_id=pItemsiteid); END IF; END LOOP; ELSE -- The passed itemsite is not lot/serial controlled -- Make sure that there are not any stagnent itemlocs DELETE FROM itemloc WHERE (itemloc_itemsite_id=pItemsiteid); -- Create the RL transaction SELECT NEXTVAL('invhist_invhist_id_seq') INTO _invhistid; INSERT INTO invhist ( invhist_id, invhist_itemsite_id, invhist_series, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_comments, invhist_invuom, invhist_unitcost, invhist_hasdetail, invhist_costmethod, invhist_value_before, invhist_value_after ) SELECT _invhistid, itemsite_id, _itemlocSeries, 'RL', 0, itemsite_qtyonhand, itemsite_qtyonhand, 'Initial Distribution', uom_name, stdCost(item_id), TRUE, itemsite_costmethod, itemsite_value, itemsite_value FROM item, itemsite, uom WHERE ( (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (itemsite_id=pItemsiteid) ); -- Create the itemloc SELECT NEXTVAL('itemloc_itemloc_id_seq') INTO _itemlocid; INSERT INTO itemloc ( itemloc_id, itemloc_itemsite_id, itemloc_location_id, itemloc_expiration, itemloc_qty ) SELECT _itemlocid, itemsite_id, pLocationid, endOfTime(), itemsite_qtyonhand FROM itemsite WHERE (itemsite_id=pItemsiteid); -- Record the detail transaction INSERT INTO invdetail ( invdetail_invhist_id, invdetail_location_id, invdetail_qty, invdetail_qty_before, invdetail_qty_after ) SELECT _invhistid, pLocationid, itemsite_qtyonhand, 0, itemsite_qtyonhand FROM itemsite WHERE (itemsite_id=pItemsiteid); -- Adjust QOH if this itemlocdist is to/from a non-netable location IF ( SELECT (NOT location_netable) FROM location WHERE (location_id=pLocationid) ) THEN INSERT INTO invhist ( invhist_itemsite_id, invhist_series, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_comments, invhist_invuom, invhist_unitcost, invhist_costmethod, invhist_value_before, invhist_value_after ) SELECT itemsite_id, _itemlocSeries, 'NN', (itemloc_qty * -1), itemloc_qty, 0, 'Initial Distribution', uom_name, stdCost(item_id), itemsite_costmethod, itemsite_value, itemsite_value FROM itemloc, itemsite, item, uom WHERE ( (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (itemloc_itemsite_id=itemsite_id) AND (itemloc_id=_itemlocid) ); UPDATE itemsite SET itemsite_nnqoh = itemsite_qtyonhand, itemsite_qtyonhand = 0 FROM itemloc WHERE ( (itemloc_itemsite_id=itemsite_id) AND (itemloc_id=_itemlocid) ); END IF; END IF; RETURN _itemlocid; END; $_$; <DROP FUNCTION public.initialdistribution(integer, integer); publicadminfalse8399212591691999apopenTABLECREATE TABLE apopen ( apopen_id integer DEFAULT nextval(('"apopen_apopen_id_seq"'::text)::regclass) NOT NULL, apopen_docdate date, apopen_duedate date, apopen_terms_id integer, apopen_vend_id integer, apopen_doctype character(1), apopen_docnumber text, apopen_amount numeric(20,2), apopen_notes text, apopen_posted boolean, apopen_reference text, apopen_invcnumber text, apopen_ponumber text, apopen_journalnumber integer, apopen_paid numeric(20,2) DEFAULT 0, apopen_open boolean, apopen_username text, apopen_discount boolean DEFAULT false NOT NULL, apopen_accnt_id integer DEFAULT (-1), apopen_curr_id integer DEFAULT basecurrid(), apopen_closedate date, apopen_distdate date, apopen_void boolean DEFAULT false NOT NULL, apopen_curr_rate numeric NOT NULL, apopen_discountable_amount numeric(20,2) DEFAULT 0, apopen_status text, CONSTRAINT apopen_apopen_status_check CHECK ((((apopen_status = 'O'::text) OR (apopen_status = 'H'::text)) OR (apopen_status = 'C'::text))), CONSTRAINT apopen_apopen_status_notnull CHECK ((apopen_status IS NOT NULL)) ); DROP TABLE public.apopen; publicadminfalse5771577257735774577557765777577857798!00 TABLE apopenCOMMENTLCOMMENT ON TABLE apopen IS 'Accounts Payable (A/P) open Items information'; publicadminfalse155!00apopenACLREVOKE ALL ON TABLE apopen FROM PUBLIC; REVOKE ALL ON TABLE apopen FROM admin; GRANT ALL ON TABLE apopen TO admin; GRANT ALL ON TABLE apopen TO xtrole; publicadminfalse15512591692014 curr_symbolTABLECREATE TABLE curr_symbol ( curr_id integer NOT NULL, curr_base boolean DEFAULT false NOT NULL, curr_name character varying(50) NOT NULL, curr_symbol character varying(9) NOT NULL, curr_abbr character varying(3) NOT NULL ); DROP TABLE public.curr_symbol; publicadminfalse57818!00TABLE curr_symbolCOMMENTNCOMMENT ON TABLE curr_symbol IS 'Currency Names, Symbols, and Abbreviations'; publicadminfalse156!00 curr_symbolACLREVOKE ALL ON TABLE curr_symbol FROM PUBLIC; REVOKE ALL ON TABLE curr_symbol FROM admin; GRANT ALL ON TABLE curr_symbol TO admin; GRANT ALL ON TABLE curr_symbol TO xtrole; publicadminfalse15612591692018termsTABLECREATE TABLE terms ( terms_id integer DEFAULT nextval(('terms_terms_id_seq'::text)::regclass) NOT NULL, terms_code text NOT NULL, terms_descrip text, terms_type character(1), terms_duedays integer, terms_discdays integer, terms_discprcnt numeric(10,6), terms_cutoffday integer, terms_ap boolean, terms_ar boolean, CONSTRAINT terms_terms_code_check CHECK ((terms_code <> ''::text)) ); DROP TABLE public.terms; publicadminfalse578257838!00 TABLE termsCOMMENT7COMMENT ON TABLE terms IS 'Billing Terms information'; publicadminfalse157!00termsACLREVOKE ALL ON TABLE terms FROM PUBLIC; REVOKE ALL ON TABLE terms FROM admin; GRANT ALL ON TABLE terms TO admin; GRANT ALL ON TABLE terms TO xtrole; publicadminfalse15712591692025vendinfoTABLECREATE TABLE vendinfo ( vend_id integer DEFAULT nextval(('vend_vend_id_seq'::text)::regclass) NOT NULL, vend_name text, vend_lastpurchdate date, vend_active boolean, vend_po boolean, vend_comments text, vend_pocomments text, vend_number text NOT NULL, vend_1099 boolean, vend_exported boolean, vend_fobsource character(1), vend_fob text, vend_terms_id integer, vend_shipvia text, vend_vendtype_id integer, vend_qualified boolean, vend_ediemail text, vend_ediemailbody text, vend_edisubject text, vend_edifilename text, vend_accntnum text, vend_emailpodelivery boolean, vend_restrictpurch boolean, vend_edicc text, vend_curr_id integer DEFAULT basecurrid(), vend_cntct1_id integer, vend_cntct2_id integer, vend_addr_id integer, vend_match boolean DEFAULT false NOT NULL, vend_ach_enabled boolean DEFAULT false NOT NULL, vend_ach_accnttype text, vend_ach_use_vendinfo boolean DEFAULT true NOT NULL, vend_ach_indiv_number text DEFAULT ''::text NOT NULL, vend_ach_indiv_name text DEFAULT ''::text NOT NULL, vend_ediemailhtml boolean DEFAULT false NOT NULL, vend_ach_routingnumber bytea DEFAULT '\\000'::bytea NOT NULL, vend_ach_accntnumber bytea DEFAULT '\\000'::bytea NOT NULL, vend_taxzone_id integer, vend_accnt_id integer, vend_expcat_id integer DEFAULT (-1), vend_tax_id integer DEFAULT (-1), CONSTRAINT vendinfo_vend_ach_accnttype_check CHECK (((vend_ach_accnttype = 'K'::text) OR (vend_ach_accnttype = 'C'::text))), CONSTRAINT vendinfo_vend_number_check CHECK ((vend_number <> ''::text)) ); DROP TABLE public.vendinfo; publicadminfalse578457855786578757885789579057915792579357945795579657978!00TABLE vendinfoCOMMENT3COMMENT ON TABLE vendinfo IS 'Vendor information'; publicadminfalse158!00"COLUMN vendinfo.vend_ach_accnttypeCOMMENTCOMMENT ON COLUMN vendinfo.vend_ach_accnttype IS 'Type of bank account: K = checKing, C = Cash = savings. These values were chosen to be consistent with bankaccnt_type.'; publicadminfalse158!00vendinfoACLREVOKE ALL ON TABLE vendinfo FROM PUBLIC; REVOKE ALL ON TABLE vendinfo FROM admin; GRANT ALL ON TABLE vendinfo TO admin; GRANT ALL ON TABLE vendinfo TO xtrole; publicadminfalse15812591747062apmemoVIEW CREATE VIEW apmemo AS SELECT vendinfo.vend_number AS vendor_number, apopen.apopen_docdate AS document_date, apopen.apopen_duedate AS due_date, CASE WHEN (apopen.apopen_doctype = 'C'::bpchar) THEN 'Credit Memo'::text ELSE 'Debit Memo'::text END AS document_type, apopen.apopen_docnumber AS document_number, apopen.apopen_ponumber AS po_number, apopen.apopen_journalnumber AS journal_number, terms.terms_code AS terms, curr.curr_abbr AS currency, apopen.apopen_amount AS amount, apopen.apopen_paid AS paid, (apopen.apopen_amount - apopen.apopen_paid) AS balance, apopen.apopen_notes AS notes, CASE WHEN (apopen.apopen_accnt_id = (-1)) THEN NULL::text ELSE public.formatglaccount(apopen.apopen_accnt_id) END AS alternate_prepaid_account FROM (((public.apopen LEFT JOIN public.vendinfo ON ((vendinfo.vend_id = apopen.apopen_vend_id))) LEFT JOIN public.curr_symbol curr ON ((curr.curr_id = apopen.apopen_curr_id))) LEFT JOIN public.terms ON ((terms.terms_id = apopen.apopen_terms_id))) WHERE (apopen.apopen_doctype = ANY (ARRAY['C'::bpchar, 'D'::bpchar])); DROP VIEW api.apmemo; apiadminfalse51526!00 VIEW apmemoCOMMENT7COMMENT ON VIEW apmemo IS 'A/P Credit and Debit Memo'; apiadminfalse723!00apmemoACLREVOKE ALL ON TABLE apmemo FROM PUBLIC; REVOKE ALL ON TABLE apmemo FROM admin; GRANT ALL ON TABLE apmemo TO admin; GRANT ALL ON TABLE apmemo TO xtrole; apiadminfalse72312551747067insertapmemo(api.apmemo)FUNCTIONiCREATE FUNCTION insertapmemo(api.apmemo) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNew ALIAS FOR $1; _result INTEGER; BEGIN IF (pNew.document_type = 'Credit Memo') THEN SELECT createAPCreditMemo( getVendId(pNew.vendor_number), pNew.document_number, pNew.po_number, pNew.document_date, pNew.amount, pNew.notes, getGLAccntId(pNew.alternate_prepaid_account), pNew.due_date, getTermsId(pNew.terms) ) INTO _result; IF (_result <= 0) THEN RAISE EXCEPTION 'Function createAPCreditMemo failed with result = %', _result; END IF; ELSE IF (pNew.document_type = 'Debit Memo') THEN SELECT createAPDebitMemo( null, getVendId(pNew.vendor_number), pNew.journal_number, pNew.document_number, pNew.po_number, pNew.document_date, pNew.amount, pNew.notes, getGLAccntId(pNew.alternate_prepaid_account), pNew.due_date, getTermsId(pNew.terms), COALESCE(getCurrId(pNew.currency), baseCurrId()) ) INTO _result; IF (_result <= 0) THEN RAISE EXCEPTION 'Function createAPDebitMemo failed with result = %', _result; END IF; ELSE RAISE EXCEPTION 'Function insertAPMemo failed, invalid Document Type'; END IF; END IF; RETURN TRUE; END; $_$; /DROP FUNCTION public.insertapmemo(api.apmemo); publicadminfalse83992361012591692050aropenTABLELCREATE TABLE aropen ( aropen_id integer DEFAULT nextval(('"aropen_aropen_id_seq"'::text)::regclass) NOT NULL, aropen_docdate date NOT NULL, aropen_duedate date NOT NULL, aropen_terms_id integer, aropen_cust_id integer, aropen_doctype character(1), aropen_docnumber text, aropen_applyto text, aropen_ponumber text, aropen_amount numeric(20,2) NOT NULL, aropen_notes text, aropen_posted boolean DEFAULT false NOT NULL, aropen_salesrep_id integer, aropen_commission_due numeric(20,2), aropen_commission_paid boolean DEFAULT false, aropen_ordernumber text, aropen_cobmisc_id integer DEFAULT (-1), aropen_journalnumber integer, aropen_paid numeric(20,2) DEFAULT 0, aropen_open boolean, aropen_username text, aropen_rsncode_id integer, aropen_salescat_id integer DEFAULT (-1), aropen_accnt_id integer DEFAULT (-1), aropen_curr_id integer DEFAULT basecurrid(), aropen_closedate date, aropen_distdate date, aropen_curr_rate numeric NOT NULL, aropen_discount boolean DEFAULT false NOT NULL ); DROP TABLE public.aropen; publicadminfalse5798579958005801580258035804580558068!00 TABLE aropenCOMMENTOCOMMENT ON TABLE aropen IS 'Accounts Receivable (A/R) open Items information'; publicadminfalse159!00aropenACLREVOKE ALL ON TABLE aropen FROM PUBLIC; REVOKE ALL ON TABLE aropen FROM admin; GRANT ALL ON TABLE aropen TO admin; GRANT ALL ON TABLE aropen TO xtrole; publicadminfalse15912591692065custinfoTABLECREATE TABLE custinfo ( cust_id integer DEFAULT nextval(('cust_cust_id_seq'::text)::regclass) NOT NULL, cust_active boolean NOT NULL, cust_custtype_id integer, cust_salesrep_id integer, cust_commprcnt numeric(10,6), cust_name text, cust_creditlmt integer, cust_creditrating text, cust_financecharge boolean, cust_backorder boolean NOT NULL, cust_partialship boolean NOT NULL, cust_terms_id integer, cust_discntprcnt numeric(10,6) NOT NULL, cust_balmethod character(1) NOT NULL, cust_ffshipto boolean NOT NULL, cust_shipform_id integer, cust_shipvia text, cust_blanketpos boolean NOT NULL, cust_shipchrg_id integer NOT NULL, cust_creditstatus character(1) NOT NULL, cust_comments text, cust_ffbillto boolean NOT NULL, cust_usespos boolean NOT NULL, cust_number text NOT NULL, cust_dateadded date DEFAULT ('now'::text)::date, cust_exported boolean DEFAULT false, cust_emaildelivery boolean DEFAULT false, cust_ediemail text, cust_edisubject text, cust_edifilename text, cust_ediemailbody text, cust_autoupdatestatus boolean NOT NULL, cust_autoholdorders boolean NOT NULL, cust_edicc text, cust_ediprofile_id integer, cust_preferred_warehous_id integer DEFAULT (-1) NOT NULL, cust_curr_id integer DEFAULT basecurrid(), cust_creditlmt_curr_id integer DEFAULT basecurrid(), cust_cntct_id integer, cust_corrcntct_id integer, cust_soemaildelivery boolean DEFAULT false, cust_soediemail text, cust_soedisubject text, cust_soedifilename text, cust_soediemailbody text, cust_soedicc text, cust_soediprofile_id integer, cust_gracedays integer, cust_ediemailhtml boolean DEFAULT false NOT NULL, cust_soediemailhtml boolean DEFAULT false NOT NULL, cust_taxzone_id integer, CONSTRAINT custinfo_balmethod_check CHECK (((cust_balmethod = 'B'::bpchar) OR (cust_balmethod = 'O'::bpchar))), CONSTRAINT custinfo_creditstatus_check CHECK ((((cust_creditstatus = 'G'::bpchar) OR (cust_creditstatus = 'W'::bpchar)) OR (cust_creditstatus = 'H'::bpchar))), CONSTRAINT custinfo_cust_number_check CHECK ((cust_number <> ''::text)) ); DROP TABLE public.custinfo; publicadminfalse58075808580958105811581258135814581558165817581858198!00TABLE custinfoCOMMENT5COMMENT ON TABLE custinfo IS 'Customer information'; publicadminfalse160!00COLUMN custinfo.cust_ediemailCOMMENTNCOMMENT ON COLUMN custinfo.cust_ediemail IS 'Deprecated column - DO NOT USE'; publicadminfalse160!00COLUMN custinfo.cust_edisubjectCOMMENTPCOMMENT ON COLUMN custinfo.cust_edisubject IS 'Deprecated column - DO NOT USE'; publicadminfalse160!00 COLUMN custinfo.cust_edifilenameCOMMENTQCOMMENT ON COLUMN custinfo.cust_edifilename IS 'Deprecated column - DO NOT USE'; publicadminfalse160!00!COLUMN custinfo.cust_ediemailbodyCOMMENTRCOMMENT ON COLUMN custinfo.cust_ediemailbody IS 'Deprecated column - DO NOT USE'; publicadminfalse160!00COLUMN custinfo.cust_ediccCOMMENTKCOMMENT ON COLUMN custinfo.cust_edicc IS 'Deprecated column - DO NOT USE'; publicadminfalse160!00"COLUMN custinfo.cust_ediprofile_idCOMMENTSCOMMENT ON COLUMN custinfo.cust_ediprofile_id IS 'Deprecated column - DO NOT USE'; publicadminfalse160!00COLUMN custinfo.cust_soediemailCOMMENTPCOMMENT ON COLUMN custinfo.cust_soediemail IS 'Deprecated column - DO NOT USE'; publicadminfalse160!00!COLUMN custinfo.cust_soedisubjectCOMMENTRCOMMENT ON COLUMN custinfo.cust_soedisubject IS 'Deprecated column - DO NOT USE'; publicadminfalse160!00"COLUMN custinfo.cust_soedifilenameCOMMENTSCOMMENT ON COLUMN custinfo.cust_soedifilename IS 'Deprecated column - DO NOT USE'; publicadminfalse160!00#COLUMN custinfo.cust_soediemailbodyCOMMENTTCOMMENT ON COLUMN custinfo.cust_soediemailbody IS 'Deprecated column - DO NOT USE'; publicadminfalse160!00COLUMN custinfo.cust_soediccCOMMENTMCOMMENT ON COLUMN custinfo.cust_soedicc IS 'Deprecated column - DO NOT USE'; publicadminfalse160!00$COLUMN custinfo.cust_soediprofile_idCOMMENTUCOMMENT ON COLUMN custinfo.cust_soediprofile_id IS 'Deprecated column - DO NOT USE'; publicadminfalse160!00!COLUMN custinfo.cust_ediemailhtmlCOMMENTRCOMMENT ON COLUMN custinfo.cust_ediemailhtml IS 'Deprecated column - DO NOT USE'; publicadminfalse160!00#COLUMN custinfo.cust_soediemailhtmlCOMMENTTCOMMENT ON COLUMN custinfo.cust_soediemailhtml IS 'Deprecated column - DO NOT USE'; publicadminfalse160!00custinfoACLREVOKE ALL ON TABLE custinfo FROM PUBLIC; REVOKE ALL ON TABLE custinfo FROM admin; GRANT ALL ON TABLE custinfo TO admin; GRANT ALL ON TABLE custinfo TO xtrole; publicadminfalse16012591692083rsncodeTABLECREATE TABLE rsncode ( rsncode_id integer NOT NULL, rsncode_code text NOT NULL, rsncode_descrip text, rsncode_doctype text, CONSTRAINT rsncode_rsncode_code_check CHECK ((rsncode_code <> ''::text)) ); DROP TABLE public.rsncode; publicadminfalse58218!00 TABLE rsncodeCOMMENTICOMMENT ON TABLE rsncode IS 'Debit/Credit Memo Reason Code information'; publicadminfalse161!00rsncodeACLREVOKE ALL ON TABLE rsncode FROM PUBLIC; REVOKE ALL ON TABLE rsncode FROM admin; GRANT ALL ON TABLE rsncode TO admin; GRANT ALL ON TABLE rsncode TO xtrole; publicadminfalse16112591692091salescatTABLETCREATE TABLE salescat ( salescat_id integer NOT NULL, salescat_active boolean, salescat_name text NOT NULL, salescat_descrip text, salescat_sales_accnt_id integer, salescat_prepaid_accnt_id integer, salescat_ar_accnt_id integer, CONSTRAINT salescat_salescat_name_check CHECK ((salescat_name <> ''::text)) ); DROP TABLE public.salescat; publicadminfalse58238!00TABLE salescatCOMMENT;COMMENT ON TABLE salescat IS 'Sales Category information'; publicadminfalse162!00salescatACLREVOKE ALL ON TABLE salescat FROM PUBLIC; REVOKE ALL ON TABLE salescat FROM admin; GRANT ALL ON TABLE salescat TO admin; GRANT ALL ON TABLE salescat TO xtrole; publicadminfalse16212591692097salesrepTABLECREATE TABLE salesrep ( salesrep_id integer DEFAULT nextval(('salesrep_salesrep_id_seq'::text)::regclass) NOT NULL, salesrep_active boolean, salesrep_number text NOT NULL, salesrep_name text, salesrep_commission numeric(8,4), salesrep_method character(1), salesrep_emp_id integer, CONSTRAINT salesrep_salesrep_number_check CHECK ((salesrep_number <> ''::text)) ); DROP TABLE public.salesrep; publicadminfalse582458258!00TABLE salesrepCOMMENTACOMMENT ON TABLE salesrep IS 'Sales Representative information'; publicadminfalse163!00COLUMN salesrep.salesrep_emp_idCOMMENTCOMMENT ON COLUMN salesrep.salesrep_emp_id IS 'DEPRECATED - the relationship between Sales Rep and Employee is now maintained through the crmacct table.'; publicadminfalse163!00salesrepACLREVOKE ALL ON TABLE salesrep FROM PUBLIC; REVOKE ALL ON TABLE salesrep FROM admin; GRANT ALL ON TABLE salesrep TO admin; GRANT ALL ON TABLE salesrep TO xtrole; publicadminfalse16312591747072armemoVIEWCREATE VIEW armemo AS SELECT custinfo.cust_number AS customer_number, aropen.aropen_docdate AS document_date, aropen.aropen_duedate AS due_date, CASE WHEN (aropen.aropen_doctype = 'C'::bpchar) THEN 'Credit Memo'::text ELSE 'Debit Memo'::text END AS document_type, aropen.aropen_docnumber AS document_number, aropen.aropen_applyto AS order_number, aropen.aropen_journalnumber AS journal_number, rsncode.rsncode_code AS reason_code, terms.terms_code AS terms, salesrep.salesrep_number AS sales_rep, curr.curr_abbr AS currency, aropen.aropen_amount AS amount, aropen.aropen_paid AS paid, (aropen.aropen_amount - aropen.aropen_paid) AS balance, aropen.aropen_commission_due AS commission_due, aropen.aropen_commission_paid AS commission_paid, aropen.aropen_notes AS notes, salescat.salescat_name AS alternate_prepaid_sales_category, CASE WHEN (aropen.aropen_accnt_id = (-1)) THEN NULL::text ELSE public.formatglaccount(aropen.aropen_accnt_id) END AS alternate_prepaid_account FROM ((((((public.aropen LEFT JOIN public.custinfo ON ((custinfo.cust_id = aropen.aropen_cust_id))) LEFT JOIN public.curr_symbol curr ON ((curr.curr_id = aropen.aropen_curr_id))) LEFT JOIN public.salesrep ON ((salesrep.salesrep_id = aropen.aropen_salesrep_id))) LEFT JOIN public.terms ON ((terms.terms_id = aropen.aropen_terms_id))) LEFT JOIN public.salescat ON ((salescat.salescat_id = aropen.aropen_salescat_id))) LEFT JOIN public.rsncode ON ((rsncode.rsncode_id = aropen.aropen_rsncode_id))) WHERE (aropen.aropen_doctype = ANY (ARRAY['C'::bpchar, 'D'::bpchar])); DROP VIEW api.armemo; apiadminfalse51566!00 VIEW armemoCOMMENT7COMMENT ON VIEW armemo IS 'A/R Credit and Debit Memo'; apiadminfalse724!00armemoACLREVOKE ALL ON TABLE armemo FROM PUBLIC; REVOKE ALL ON TABLE armemo FROM admin; GRANT ALL ON TABLE armemo TO admin; GRANT ALL ON TABLE armemo TO xtrole; apiadminfalse72412551747077insertarmemo(api.armemo)FUNCTION% CREATE FUNCTION insertarmemo(api.armemo) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNew ALIAS FOR $1; _result INTEGER; BEGIN IF (pNew.document_type = 'Credit Memo') THEN SELECT createARCreditMemo( NULL, getCustId(pNew.customer_number), pNew.document_number, pNew.order_number, pNew.document_date, pNew.amount, pNew.notes, getRsnId(pNew.reason_code), getSalescatId(pNew.alternate_prepaid_sales_category), getGLAccntId(pNew.alternate_prepaid_account), pNew.due_date, getTermsId(pNew.terms), getSalesrepId(pNew.sales_rep), pNew.commission_due, pNew.journal_number, COALESCE(getCurrId(pNew.currency), baseCurrId()) ) INTO _result; IF (_result <= 0) THEN RAISE EXCEPTION 'Function createARCreditMemo failed with result = %', _result; END IF; ELSE IF (pNew.document_type = 'Debit Memo') THEN SELECT createARDebitMemo( null, getCustId(pNew.customer_number), pNew.journal_number, pNew.document_number, pNew.order_number, pNew.document_date, pNew.amount, pNew.notes, getRsnId(pNew.reason_code), getSalescatId(pNew.alternate_prepaid_sales_category), getGLAccntId(pNew.alternate_prepaid_account), pNew.due_date, getTermsId(pNew.terms), getSalesrepId(pNew.sales_rep), pNew.commission_due, COALESCE(getCurrId(pNew.currency), baseCurrId()) ) INTO _result; IF (_result <= 0) THEN RAISE EXCEPTION 'Function createARDebitMemo failed with result = %', _result; END IF; ELSE RAISE EXCEPTION 'Function insertARMemo failed, invalid Document Type'; END IF; END IF; RETURN TRUE; END; $_$; /DROP FUNCTION public.insertarmemo(api.armemo); publicadminfalse839923612{12551692110linsertccard(text, boolean, text, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, text)FUNCTIONCREATE FUNCTION insertccard(text, boolean, text, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustomer ALIAS FOR $1; pActive ALIAS FOR $2; pType ALIAS FOR $3; pNumber ALIAS FOR $4; pName ALIAS FOR $5; pAddr1 ALIAS FOR $6; pAddr2 ALIAS FOR $7; pCity ALIAS FOR $8; pState ALIAS FOR $9; pPostal ALIAS FOR $10; pCountry ALIAS FOR $11; pMonth ALIAS FOR $12; pYear ALIAS FOR $13; pKey ALIAS FOR $14; _type CHAR; _number TEXT; _month INTEGER; _year INTEGER; _result INTEGER; BEGIN --Initialize _number = CAST(encode(pNumber, 'escape') AS text); _month = CAST(encode(pMonth, 'escape') AS integer); _year = CAST(encode(pYear, 'escape') AS integer); -- Check Card holder info IF (pName IS NULL) THEN RAISE EXCEPTION 'The name of the card holder must be entered'; END IF; IF (pAddr1 IS NULL OR pAddr1 = '') THEN RAISE EXCEPTION 'The first address line must be entered'; END IF; IF (pCity IS NULL OR pCity = '') THEN RAISE EXCEPTION 'The city must be entered'; END IF; IF (pState IS NULL OR pState = '') THEN RAISE EXCEPTION 'The state must be entered'; END IF; IF (pPostal IS NULL OR pPostal = '') THEN RAISE EXCEPTION 'The zip code must be entered'; END IF; IF (pCountry IS NULL OR pCountry = '') THEN RAISE EXCEPTION 'The country must be entered'; END IF; IF (pMonth IS NULL OR pMonth = '') THEN RAISE EXCEPTION 'The Expiration Month must be entered'; END IF; IF (_month < 1 OR _month > 12) THEN RAISE EXCEPTION 'Valid Expiration Months are 01 through 12'; END IF; IF (LENGTH(_year::text) <> 4) THEN RAISE EXCEPTION 'Valid Expiration Years are CCYY in format'; END IF; IF (_year < 1970 OR _year > 2100) THEN RAISE EXCEPTION 'Valid Expiration Years are 1970 through 2100'; END IF; -- Check Number Length IF ((NOT _number ~ '[0-9]{13,16}') OR (LENGTH(_number) = 14) OR (LENGTH(_number) > 16)) THEN RAISE EXCEPTION 'The credit card number must be all numeric (no spaces or hyphens) and must be 13, 15 or 16 characters in length'; END IF; -- Convert Type IF (pType = 'Visa') THEN _type = 'V'; ELSE IF (pType = 'Master Card') THEN _type = 'M'; ELSE IF (pType = 'American Express') THEN _type = 'A'; ELSE IF (pType = 'Discover') THEN _type = 'D'; ELSE RAISE EXCEPTION 'You must select Master Card, Visa, American Express or Discover as the credit card type.'; END IF; END IF; END IF; END IF; -- Check Card Specific Data SELECT editccnumber(_number, _type) INTO _result; IF (_result = -1) THEN RAISE EXCEPTION 'You must select Master Card, Visa, American Express or Discover as the credit card type.'; END IF; IF (_result = -2) THEN RAISE EXCEPTION 'The length of a Master Card credit card number has to be 16 digits.'; END IF; IF (_result = -3) THEN RAISE EXCEPTION 'The length of a Visa credit card number has to be either 13 or 16 digits.'; END IF; IF (_result = -4) THEN RAISE EXCEPTION 'The length of an American Express credit card number has to be 15 digits.'; END IF; IF (_result = -5) THEN RAISE EXCEPTION 'The length of a Discover credit card number has to be 16 digits.'; END IF; IF (_result = -6) THEN RAISE EXCEPTION 'The first two digits for a valid Master Card number must be between 51 and 55'; END IF; IF (_result = -7) THEN RAISE EXCEPTION 'The first digit for a valid Visa number must be 4'; END IF; IF (_result = -8) THEN RAISE EXCEPTION 'The first two digits for a valid American Express number must be 34 or 37.'; END IF; IF (_result = -9) THEN RAISE EXCEPTION 'The first four digits for a valid Discover Express number must be 6011.'; END IF; IF ((_result = -10) AND NOT fetchmetricbool('CCTest')) THEN RAISE EXCEPTION 'The credit card number that you have provided is not valid.'; END IF; IF (_result < -10) THEN RAISE EXCEPTION 'Invalid Credit Card Information'; END IF; -- Insert Record INSERT INTO ccard ( ccard_seq, ccard_cust_id, ccard_active, ccard_name, ccard_address1, ccard_address2, ccard_city, ccard_state, ccard_zip, ccard_country, ccard_number, ccard_month_expired, ccard_year_expired, ccard_type) VALUES ((SELECT COALESCE(MAX(ccard_seq), 0) + 10 FROM ccard WHERE (ccard_cust_id =getCustId(pCustomer))), getCustId(pCustomer), COALESCE(pActive), encrypt(setbytea(pName), setbytea(pKey), 'bf'), encrypt(setbytea(pAddr1), setbytea(pKey), 'bf'), encrypt(setbytea(pAddr2), setbytea(pKey), 'bf'), encrypt(setbytea(pCity), setbytea(pKey), 'bf'), encrypt(setbytea(pState), setbytea(pKey), 'bf'), encrypt(setbytea(pPostal), setbytea(pKey), 'bf'), encrypt(setbytea(pCountry), setbytea(pKey), 'bf'), encrypt(setbytea(pNumber), setbytea(pKey), 'bf'), encrypt(setbytea(pMonth), setbytea(pKey), 'bf'), encrypt(setbytea(pYear), setbytea(pKey), 'bf'), _type ); RETURN true; END; $_$; DROP FUNCTION public.insertccard(text, boolean, text, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, text); publicadminfalse83992!00uFUNCTION insertccard(text, boolean, text, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, text)COMMENTCOMMENT ON FUNCTION insertccard(text, boolean, text, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, bytea, text) IS 'This function is generally used to support the _custcreditcard API view'; publicadminfalse114712591692112cmheadTABLECREATE TABLE cmhead ( cmhead_id integer DEFAULT nextval(('cmhead_cmhead_id_seq'::text)::regclass) NOT NULL, cmhead_number text NOT NULL, cmhead_posted boolean, cmhead_invcnumber text, cmhead_custponumber text, cmhead_cust_id integer, cmhead_docdate date, cmhead_shipto_id integer, cmhead_shipto_name text, cmhead_shipto_address1 text, cmhead_shipto_address2 text, cmhead_shipto_address3 text, cmhead_shipto_city text, cmhead_shipto_state text, cmhead_shipto_zipcode text, cmhead_salesrep_id integer, cmhead_freight numeric(16,4), cmhead_misc numeric(16,4), cmhead_comments text, cmhead_printed boolean, cmhead_billtoname text, cmhead_billtoaddress1 text, cmhead_billtoaddress2 text, cmhead_billtoaddress3 text, cmhead_billtocity text, cmhead_billtostate text, cmhead_billtozip text, cmhead_hold boolean, cmhead_commission numeric(8,4), cmhead_misc_accnt_id integer, cmhead_misc_descrip text, cmhead_rsncode_id integer, cmhead_curr_id integer DEFAULT basecurrid(), cmhead_freighttaxtype_id integer, cmhead_gldistdate date, cmhead_billtocountry text, cmhead_shipto_country text, cmhead_rahead_id integer, cmhead_taxzone_id integer, cmhead_prj_id integer, cmhead_void boolean DEFAULT false, cmhead_saletype_id integer, cmhead_shipzone_id integer, CONSTRAINT cmhead_cmhead_number_check CHECK ((cmhead_number <> ''::text)) ); DROP TABLE public.cmhead; publicadminfalse58265827582858298!00 TABLE cmheadCOMMENTACOMMENT ON TABLE cmhead IS 'S/O Credit Memo header information'; publicadminfalse164!00&COLUMN cmhead.cmhead_freighttaxtype_idCOMMENTWCOMMENT ON COLUMN cmhead.cmhead_freighttaxtype_id IS 'Deprecated column - DO NOT USE'; publicadminfalse164!00 COLUMN cmhead.cmhead_saletype_idCOMMENTXCOMMENT ON COLUMN cmhead.cmhead_saletype_id IS 'Associated sale type for credit memo.'; publicadminfalse164!00 COLUMN cmhead.cmhead_shipzone_idCOMMENT\COMMENT ON COLUMN cmhead.cmhead_shipzone_id IS 'Associated shipping zone for credit memo.'; publicadminfalse164!00cmheadACLREVOKE ALL ON TABLE cmhead FROM PUBLIC; REVOKE ALL ON TABLE cmhead FROM admin; GRANT ALL ON TABLE cmhead TO admin; GRANT ALL ON TABLE cmhead TO xtrole; publicadminfalse16412591692121 shiptoinfoTABLECREATE TABLE shiptoinfo ( shipto_id integer DEFAULT nextval(('shipto_shipto_id_seq'::text)::regclass) NOT NULL, shipto_cust_id integer NOT NULL, shipto_name text, shipto_salesrep_id integer, shipto_comments text, shipto_shipcomments text, shipto_shipzone_id integer, shipto_shipvia text, shipto_commission numeric(10,4) NOT NULL, shipto_shipform_id integer, shipto_shipchrg_id integer, shipto_active boolean NOT NULL, shipto_default boolean, shipto_num text, shipto_ediprofile_id integer, shipto_cntct_id integer, shipto_addr_id integer, shipto_taxzone_id integer ); DROP TABLE public.shiptoinfo; publicadminfalse58308!00TABLE shiptoinfoCOMMENT6COMMENT ON TABLE shiptoinfo IS 'Ship-To information'; publicadminfalse165!00&COLUMN shiptoinfo.shipto_ediprofile_idCOMMENTWCOMMENT ON COLUMN shiptoinfo.shipto_ediprofile_id IS 'Deprecated column - DO NOT USE'; publicadminfalse165!00 shiptoinfoACLREVOKE ALL ON TABLE shiptoinfo FROM PUBLIC; REVOKE ALL ON TABLE shiptoinfo FROM admin; GRANT ALL ON TABLE shiptoinfo TO admin; GRANT ALL ON TABLE shiptoinfo TO xtrole; publicadminfalse16512591692128taxzoneTABLECREATE TABLE taxzone ( taxzone_id integer NOT NULL, taxzone_code text NOT NULL, taxzone_descrip text, CONSTRAINT taxzone_taxzone_code_check CHECK ((taxzone_code <> ''::text)) ); DROP TABLE public.taxzone; publicadminfalse58328!00 TABLE taxzoneCOMMENT4COMMENT ON TABLE taxzone IS 'Tax zone information'; publicadminfalse166!00COLUMN taxzone.taxzone_idCOMMENT7COMMENT ON COLUMN taxzone.taxzone_id IS 'Primary key'; publicadminfalse166!00COLUMN taxzone.taxzone_codeCOMMENT2COMMENT ON COLUMN taxzone.taxzone_code IS 'Code'; publicadminfalse166!00COLUMN taxzone.taxzone_descripCOMMENT<COMMENT ON COLUMN taxzone.taxzone_descrip IS 'Description'; publicadminfalse166!00taxzoneACLREVOKE ALL ON TABLE taxzone FROM PUBLIC; REVOKE ALL ON TABLE taxzone FROM admin; GRANT ALL ON TABLE taxzone TO admin; GRANT ALL ON TABLE taxzone TO xtrole; publicadminfalse16612592008781 creditmemoVIEWCREATE VIEW creditmemo AS SELECT cmhead.cmhead_number AS memo_number, CASE WHEN (cmhead.cmhead_invcnumber = '-1'::text) THEN ''::text ELSE cmhead.cmhead_invcnumber END AS apply_to, cmhead.cmhead_docdate AS memo_date, CASE WHEN cmhead.cmhead_posted THEN 'Posted'::text ELSE 'Unposted'::text END AS status, salesrep.salesrep_number AS sales_rep, cmhead.cmhead_commission AS commission, COALESCE(taxzone.taxzone_code, 'None'::text) AS tax_zone, COALESCE(rsncode.rsncode_code, 'None'::text) AS reason_code, cmhead.cmhead_hold AS on_hold, custinfo.cust_number AS customer_number, cmhead.cmhead_billtoname AS billto_name, cmhead.cmhead_billtoaddress1 AS billto_address1, cmhead.cmhead_billtoaddress2 AS billto_address2, cmhead.cmhead_billtoaddress3 AS billto_address3, cmhead.cmhead_billtocity AS billto_city, cmhead.cmhead_billtostate AS billto_state, cmhead.cmhead_billtozip AS billto_postal_code, cmhead.cmhead_billtocountry AS billto_country, shiptoinfo.shipto_num AS shipto_number, cmhead.cmhead_shipto_name AS shipto_name, cmhead.cmhead_shipto_address1 AS shipto_address1, cmhead.cmhead_shipto_address2 AS shipto_address2, cmhead.cmhead_shipto_address3 AS shipto_address3, cmhead.cmhead_shipto_city AS shipto_city, cmhead.cmhead_shipto_state AS shipto_state, cmhead.cmhead_shipto_zipcode AS shipto_postal_code, cmhead.cmhead_shipto_country AS shipto_country, cmhead.cmhead_custponumber AS customer_po_number, cmhead.cmhead_comments AS notes, curr.curr_abbr AS currency, cmhead.cmhead_misc_descrip AS misc_charge_description, cmhead.cmhead_misc AS misc_charge_amount, CASE WHEN (cmhead.cmhead_misc_accnt_id = (-1)) THEN ''::text ELSE public.formatglaccount(cmhead.cmhead_misc_accnt_id) END AS misc_charge_credit_account, cmhead.cmhead_freight AS freight FROM ((((((public.cmhead LEFT JOIN public.custinfo ON ((custinfo.cust_id = cmhead.cmhead_cust_id))) LEFT JOIN public.shiptoinfo ON ((shiptoinfo.shipto_id = cmhead.cmhead_shipto_id))) LEFT JOIN public.curr_symbol curr ON ((curr.curr_id = cmhead.cmhead_curr_id))) LEFT JOIN public.salesrep ON ((salesrep.salesrep_id = cmhead.cmhead_salesrep_id))) LEFT JOIN public.taxzone ON ((taxzone.taxzone_id = cmhead.cmhead_taxzone_id))) LEFT JOIN public.rsncode ON ((rsncode.rsncode_id = cmhead.cmhead_rsncode_id))); DROP VIEW api.creditmemo; apiadminfalse52446!00VIEW creditmemoCOMMENT4COMMENT ON VIEW creditmemo IS 'Credit Memo Header'; apiadminfalse763!00 creditmemoACLREVOKE ALL ON TABLE creditmemo FROM PUBLIC; REVOKE ALL ON TABLE creditmemo FROM admin; GRANT ALL ON TABLE creditmemo TO admin; GRANT ALL ON TABLE creditmemo TO xtrole; apiadminfalse76312552008786 insertcreditmemo(api.creditmemo)FUNCTIONCREATE FUNCTION insertcreditmemo(api.creditmemo) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNew ALIAS FOR $1; BEGIN -- NOTE: (SELECT getCustId(...)) seems redundant, but it actually produces -- a HUGE performance increase because it makes the Postgres query planner -- use an index scan rather than an sequential table scan on cust_id INSERT INTO cmhead ( cmhead_number, cmhead_posted, cmhead_invcnumber, cmhead_custponumber, cmhead_cust_id, cmhead_docdate, cmhead_shipto_id, cmhead_shipto_name, cmhead_shipto_address1, cmhead_shipto_address2, cmhead_shipto_address3, cmhead_shipto_city, cmhead_shipto_state, cmhead_shipto_zipcode, cmhead_shipto_country, cmhead_salesrep_id, cmhead_freight, cmhead_misc, cmhead_comments, cmhead_printed, cmhead_billtoname, cmhead_billtoaddress1, cmhead_billtoaddress2, cmhead_billtoaddress3, cmhead_billtocity, cmhead_billtostate, cmhead_billtozip, cmhead_billtocountry, cmhead_hold, cmhead_commission, cmhead_misc_accnt_id, cmhead_misc_descrip, cmhead_rsncode_id, cmhead_curr_id, cmhead_taxzone_id, cmhead_gldistdate, cmhead_rahead_id ) SELECT (CASE -- use a case here so we don't unnecessarily fetch a new CM number WHEN pNew.memo_number IS NULL THEN fetchCMNumber() ELSE pNew.memo_number END), FALSE, -- posted pNew.apply_to, pNew.customer_po_number, cust_id, COALESCE(pNew.memo_date, CURRENT_DATE), COALESCE(shipto_id,-1), pNew.shipto_name, pNew.shipto_address1, pNew.shipto_address2, pNew.shipto_address3, pNew.shipto_city, pNew.shipto_state, pNew.shipto_postal_code, pNew.shipto_country, COALESCE(getSalesRepId(pNew.sales_rep),shipto_salesrep_id,cust_salesrep_id), COALESCE(pNew.freight, 0), COALESCE(pNew.misc_charge_amount, 0), pNew.notes, FALSE, -- printed COALESCE(pNew.billto_name, invchead_billto_name, cust_name), COALESCE(pNew.billto_address1, invchead_billto_address1, addr_line1), COALESCE(pNew.billto_address2, invchead_billto_address2, addr_line2), COALESCE(pNew.billto_address3, invchead_billto_address3, addr_line3), COALESCE(pNew.billto_city, invchead_billto_city, addr_city), COALESCE(pNew.billto_state, invchead_billto_state, addr_state), COALESCE(pNew.billto_postal_code, invchead_billto_zipcode, addr_postalcode), COALESCE(pNew.billto_country, invchead_billto_country, addr_country), COALESCE(pNew.on_hold, FALSE), COALESCE(pNew.commission, 0), COALESCE(getGlAccntId(pNew.misc_charge_credit_account),-1), pNew.misc_charge_description, (SELECT rsncode_id FROM rsncode WHERE rsncode_code = pNew.reason_code), COALESCE(getCurrId(pNew.currency),cust_curr_id,basecurrid()), CASE WHEN pNew.tax_zone = 'None' THEN NULL ELSE COALESCE(getTaxZoneID(pNew.tax_zone),cust_taxzone_id) END, NULL, NULL FROM custinfo LEFT OUTER JOIN shiptoinfo ON (shipto_id=(SELECT CASE WHEN getShiptoId(pNew.customer_number,pNew.shipto_number) IS NOT NULL THEN getShiptoId(pNew.customer_number,pNew.shipto_number) ELSE (SELECT shipto_id FROM shiptoinfo WHERE shipto_cust_id=cust_id AND shipto_default) END)) LEFT OUTER JOIN invchead ON (invchead_id=getInvcheadId(pNEW.apply_to)) LEFT OUTER JOIN cntct ON (cntct_id=cust_cntct_id) LEFT OUTER JOIN addr ON (addr_id=cntct_addr_id) WHERE cust_id = (CASE WHEN pNew.customer_number IS NOT NULL THEN (SELECT getCustId(pNew.customer_number)) ELSE (SELECT invchead_cust_id FROM invchead WHERE invchead_invcnumber = pNew.apply_to) END); RETURN TRUE; END; $_$; 7DROP FUNCTION public.insertcreditmemo(api.creditmemo); publicadminfalse83992279612591692140cmitemTABLECREATE TABLE cmitem ( cmitem_id integer DEFAULT nextval(('cmitem_cmitem_id_seq'::text)::regclass) NOT NULL, cmitem_cmhead_id integer NOT NULL, cmitem_linenumber integer NOT NULL, cmitem_itemsite_id integer NOT NULL, cmitem_qtycredit numeric(18,6) NOT NULL, cmitem_qtyreturned numeric(18,6) NOT NULL, cmitem_unitprice numeric(16,4) NOT NULL, cmitem_comments text, cmitem_rsncode_id integer, cmitem_taxtype_id integer, cmitem_qty_uom_id integer NOT NULL, cmitem_qty_invuomratio numeric(20,10) NOT NULL, cmitem_price_uom_id integer NOT NULL, cmitem_price_invuomratio numeric(20,10) NOT NULL, cmitem_raitem_id integer, cmitem_updateinv boolean DEFAULT true NOT NULL ); DROP TABLE public.cmitem; publicadminfalse583358348!00 TABLE cmitemCOMMENTDCOMMENT ON TABLE cmitem IS 'S/O Credit Memo Line Item information'; publicadminfalse167!00cmitemACLREVOKE ALL ON TABLE cmitem FROM PUBLIC; REVOKE ALL ON TABLE cmitem FROM admin; GRANT ALL ON TABLE cmitem TO admin; GRANT ALL ON TABLE cmitem TO xtrole; publicadminfalse16712592008791creditmemolineVIEWCREATE VIEW creditmemoline AS SELECT cmhead.cmhead_number AS memo_number, cmitem.cmitem_linenumber AS line_number, item.item_number, whsinfo.warehous_code AS recv_site, rsncode.rsncode_code AS reason_code, cmitem.cmitem_qtyreturned AS qty_returned, cmitem.cmitem_qtycredit AS qty_to_credit, COALESCE(qty_uom.uom_name, 'None'::text) AS qty_uom, cmitem.cmitem_unitprice AS net_unit_price, COALESCE(price_uom.uom_name, 'None'::text) AS price_uom, COALESCE(taxtype.taxtype_name, 'None'::text) AS tax_type, cmitem.cmitem_comments AS notes FROM ((((((((public.cmitem LEFT JOIN public.cmhead ON ((cmitem.cmitem_cmhead_id = cmhead.cmhead_id))) LEFT JOIN public.itemsite ON ((itemsite.itemsite_id = cmitem.cmitem_itemsite_id))) LEFT JOIN public.item ON ((item.item_id = itemsite.itemsite_item_id))) LEFT JOIN public.whsinfo ON ((whsinfo.warehous_id = itemsite.itemsite_warehous_id))) LEFT JOIN public.rsncode ON ((rsncode.rsncode_id = cmitem.cmitem_rsncode_id))) LEFT JOIN public.taxtype ON ((taxtype.taxtype_id = cmitem.cmitem_taxtype_id))) LEFT JOIN public.uom qty_uom ON ((qty_uom.uom_id = cmitem.cmitem_qty_uom_id))) LEFT JOIN public.uom price_uom ON ((price_uom.uom_id = cmitem.cmitem_price_uom_id))); DROP VIEW api.creditmemoline; apiadminfalse52486!00VIEW creditmemolineCOMMENT6COMMENT ON VIEW creditmemoline IS 'Credit Memo Line'; apiadminfalse764!00creditmemolineACLREVOKE ALL ON TABLE creditmemoline FROM PUBLIC; REVOKE ALL ON TABLE creditmemoline FROM admin; GRANT ALL ON TABLE creditmemoline TO admin; GRANT ALL ON TABLE creditmemoline TO xtrole; apiadminfalse76412552008796(insertcreditmemoline(api.creditmemoline)FUNCTIONZ CREATE FUNCTION insertcreditmemoline(api.creditmemoline) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNew ALIAS FOR $1; _check INTEGER; _r RECORD; BEGIN SELECT cmhead_id INTO _check FROM cmhead WHERE (cmhead_id=getCmheadId(pNew.memo_number, FALSE)); IF (NOT FOUND) THEN RAISE EXCEPTION 'Credit Memo # % not found', pNew.memo_number; END IF; INSERT INTO cmitem ( cmitem_cmhead_id, cmitem_linenumber, cmitem_itemsite_id, cmitem_qtycredit, cmitem_qtyreturned, cmitem_unitprice, cmitem_comments, cmitem_rsncode_id, cmitem_taxtype_id, cmitem_qty_uom_id, cmitem_qty_invuomratio, cmitem_price_uom_id, cmitem_price_invuomratio ) SELECT cmhead_id, COALESCE(pNew.line_number, (SELECT (COALESCE(MAX(cmitem_linenumber), 0) + 1) FROM cmitem WHERE (cmitem_cmhead_id=cmhead_id))), COALESCE(itemsite_id, -1), COALESCE(pNew.qty_to_credit, 0), COALESCE(pNew.qty_returned, 0), COALESCE(pNew.net_unit_price, 0), pNew.notes, getRsnId(pNew.reason_code), taxtype_id, COALESCE(getUomId(pNew.qty_uom), item_inv_uom_id), CASE WHEN item_id IS NOT NULL THEN itemuomtouomratio(item_id, COALESCE(getUomId(pNew.qty_uom),item_inv_uom_id),item_inv_uom_id) ELSE 1 END, COALESCE(getUomId(pNew.price_uom),item_price_uom_id), CASE WHEN item_id IS NOT NULL THEN itemuomtouomratio(item_id, COALESCE(getUomId(pNew.price_uom),item_price_uom_id),item_price_uom_id) ELSE 1 END FROM cmhead LEFT OUTER JOIN item ON (item_id=getItemId(pNew.item_number)) LEFT OUTER JOIN itemsite ON (itemsite_item_id=item_id AND itemsite_warehous_id=getWarehousId(pNew.recv_site, 'ALL')) LEFT OUTER JOIN taxtype ON (taxtype_id=CASE WHEN pNew.tax_type IS NULL THEN getItemTaxType(item_id,cmhead_taxzone_id) WHEN pNew.tax_type = 'None' THEN NULL ELSE getTaxTypeId(pNew.tax_type) END) WHERE (cmhead_id=getCmheadId(pNew.memo_number, FALSE)); RETURN TRUE; END; $_$; ?DROP FUNCTION public.insertcreditmemoline(api.creditmemoline); publicadminfalse839922798V12551692230:insertflgroup(integer, integer, integer, integer, boolean)FUNCTIONCREATE FUNCTION insertflgroup(integer, integer, integer, integer, boolean) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlheadid ALIAS FOR $1; pPeriodid ALIAS FOR $2; pFlgrpid ALIAS FOR $3; pLevel ALIAS FOR $4; pSummarize ALIAS FOR $5; BEGIN RETURN insertFlGroup(pFlheadid, pPeriodid, pFlgrpid, pLevel, pSummarize, NULL); END; $_$; QDROP FUNCTION public.insertflgroup(integer, integer, integer, integer, boolean); publicadminfalse8399212551692231Einsertflgroup(integer, integer, integer, integer, boolean, character)FUNCTIONCREATE FUNCTION insertflgroup(integer, integer, integer, integer, boolean, character) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlheadid ALIAS FOR $1; pPeriodid ALIAS FOR $2; pFlgrpid ALIAS FOR $3; pLevel ALIAS FOR $4; pSummarize ALIAS FOR $5; pInterval ALIAS FOR $6; BEGIN RETURN insertFlGroup(pFlheadid, pPeriodid, pFlgrpid, pLevel, pSummarize, pInterval, NULL); END; $_$; \DROP FUNCTION public.insertflgroup(integer, integer, integer, integer, boolean, character); publicadminfalse8399212551692232Ninsertflgroup(integer, integer, integer, integer, boolean, character, integer)FUNCTIONh`CREATE FUNCTION insertflgroup(integer, integer, integer, integer, boolean, character, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlheadid ALIAS FOR $1; pPeriodid ALIAS FOR $2; pFlgrpid ALIAS FOR $3; pLevel ALIAS FOR $4; pSummarize ALIAS FOR $5; pInterval ALIAS FOR $6; pPrjid ALIAS FOR $7; _subtotal BOOLEAN; _r RECORD; _g RECORD; _all BOOLEAN; BEGIN _all = COALESCE(pPrjid,-1) = -1; -- Check to see if this group wants a subtotal _subtotal := FALSE; IF (pFlgrpid != -1) THEN SELECT COALESCE(flgrp_subtotal, FALSE) INTO _subtotal FROM flgrp WHERE ((flgrp_flhead_id=pFlheadid) AND (flgrp_id=pFlgrpid)); END IF; FOR _r IN SELECT 'G' AS type, flgrp_id AS type_id, flgrp_order AS orderby, flgrp_summarize AS summarize, flgrp_subtract AS subtract, CASE WHEN(flgrp_summarize AND (NOT flgrp_showstart)) THEN NULL ELSE 0.00 END AS beginning, CASE WHEN(flgrp_summarize AND (NOT flgrp_showend)) THEN NULL ELSE 0.00 END AS ending, CASE WHEN(flgrp_summarize AND (NOT flgrp_showdelta)) THEN NULL ELSE 0.00 END AS debits, CASE WHEN(flgrp_summarize AND (NOT flgrp_showdelta)) THEN NULL ELSE 0.00 END AS credits, CASE WHEN(flgrp_summarize AND (NOT flgrp_showbudget)) THEN NULL ELSE 0.00 END AS budget, CASE WHEN(flgrp_summarize AND (NOT flgrp_showdiff)) THEN NULL ELSE 0.00 END AS diff, CASE WHEN(flgrp_summarize AND (NOT flgrp_showcustom)) THEN NULL ELSE 0.00 END AS custom, CASE WHEN(flgrp_showstartprcnt) THEN 0.00 ELSE NULL END AS beginningprcnt, CASE WHEN(flgrp_showendprcnt) THEN 0.00 ELSE NULL END AS endingprcnt, CASE WHEN(flgrp_showdeltaprcnt) THEN 0.00 ELSE NULL END AS debitsprcnt, CASE WHEN(flgrp_showdeltaprcnt) THEN 0.00 ELSE NULL END AS creditsprcnt, CASE WHEN(flgrp_showbudgetprcnt) THEN 0.00 ELSE NULL END AS budgetprcnt, CASE WHEN(flgrp_showdiffprcnt) THEN 0.00 ELSE NULL END AS diffprcnt, CASE WHEN(flgrp_showcustomprcnt) THEN 0.00 ELSE NULL END AS customprcnt, -1 AS accnt_id, '' AS accnt_number FROM flgrp WHERE ((flgrp_flgrp_id=pFlgrpid) AND (flgrp_flhead_id=pFlheadid)) UNION ALL SELECT 'I' AS type, flitem_id AS type_id, flitem_order AS orderby, FALSE AS summarize, flitem_subtract AS subtract, CASE WHEN (flitem_showstart AND (first_trialbal_id IS NULL)) THEN 0.00 WHEN (flitem_showstart) THEN normalizeTrialBal(first_trialbal_id, 'B') ELSE NULL END AS beginning, CASE WHEN (flitem_showend AND (last_trialbal_id IS NULL)) THEN 0.00 WHEN (flitem_showend) THEN normalizeTrialBal(last_trialbal_id, 'E') ELSE NULL END AS ending, CASE WHEN (flitem_showdelta) THEN sum_trialbal_debits ELSE NULL END AS debits, CASE WHEN (flitem_showdelta) THEN sum_trialbal_credits ELSE NULL END AS credits, CASE WHEN ((flitem_showbudget) AND (accnt_type IN ('R','E')) AND flhead_type IN ('I','C','A')) THEN COALESCE(sum_budget_amount,0) WHEN ((flitem_showbudget) AND (accnt_type IN ('R','E')) AND flhead_type = 'B' ) THEN (SELECT COALESCE(SUM(b.budget_amount),0) FROM budget b, (SELECT ytd.period_id AS ytd_period_id FROM period cp, period ytd WHERE ((cp.period_id = last_flitem_period_id) AND (ytd.period_start <= cp.period_start) AND (ytd.period_yearperiod_id = cp.period_yearperiod_id))) AS periods WHERE ((b.budget_accnt_id=accnt_id) AND (b.budget_period_id=ytd_period_id))) WHEN ((flitem_showbudget) AND (accnt_type IN ('A','L','Q')) AND flhead_type = 'C') THEN calccashbudget(accnt_id,last_flitem_period_id,pInterval) ELSE COALESCE(last_budget_amount,0) END AS budget, CASE WHEN (flitem_showdiff AND (first_trialbal_id IS NULL)) THEN 0.00 WHEN (flitem_showdiff) THEN COALESCE(normalizeTrialBal(last_trialbal_id, 'E') - normalizeTrialBal(first_trialbal_id, 'B'), 0.00) ELSE NULL END AS diff, CASE WHEN (NOT flitem_showcustom) THEN NULL WHEN (flitem_custom_source='S' AND (first_trialbal_id IS NOT NULL)) THEN normalizeTrialBal(first_trialbal_id, 'B') WHEN (flitem_custom_source='E' AND (first_trialbal_id IS NOT NULL)) THEN normalizeTrialBal(last_trialbal_id, 'E') WHEN (flitem_custom_source='D') THEN sum_trialbal_debits WHEN (flitem_custom_source='C') THEN sum_trialbal_credits WHEN (flitem_custom_source='B') THEN ( CASE WHEN (accnt_type IN ('R','E')) THEN sum_budget_amount ELSE last_budget_amount END) WHEN (flitem_custom_source='F' AND (first_trialbal_id IS NOT NULL)) THEN COALESCE(normalizeTrialBal(last_trialbal_id, 'E') - normalizeTrialBal(first_trialbal_id, 'B'), 0.00) ELSE 0.00 END AS custom, CASE WHEN(flitem_showstartprcnt) THEN 0.00 ELSE NULL END AS beginningprcnt, CASE WHEN(flitem_showendprcnt) THEN 0.00 ELSE NULL END AS endingprcnt, CASE WHEN(flitem_showdeltaprcnt) THEN 0.00 ELSE NULL END AS debitsprcnt, CASE WHEN(flitem_showdeltaprcnt) THEN 0.00 ELSE NULL END AS creditsprcnt, CASE WHEN(flitem_showbudgetprcnt) THEN 0.00 ELSE NULL END AS budgetprcnt, CASE WHEN(flitem_showdiffprcnt) THEN 0.00 ELSE NULL END AS diffprcnt, CASE WHEN(flitem_showcustomprcnt) THEN 0.00 ELSE NULL END AS customprcnt, accnt_id, public.formatglaccount(accnt_id) AS accnt_number FROM (SELECT flhead_type,flitem_id,flitem_order,flitem_subtract,flitem_showstart,flitem_showend, flitem_showdelta,flitem_showbudget,flitem_showdiff,flitem_showcustom, flitem_custom_source,flitem_showstartprcnt,flitem_showendprcnt,flitem_showdeltaprcnt, flitem_showbudgetprcnt,flitem_showdiffprcnt,flitem_showcustomprcnt, accnt_id,accnt_type, FIRST(trialbal_id) AS first_trialbal_id, LAST(trialbal_id) AS last_trialbal_id, SUM(trialbal_debits) AS sum_trialbal_debits, SUM(trialbal_credits) AS sum_trialbal_credits, LAST(flitem_period_id) AS last_flitem_period_id, SUM(budget_amount) AS sum_budget_amount, LAST(budget_amount) AS last_budget_amount FROM (SELECT period_id AS flitem_period_id, period_start,flhead_type,flitem_id,flitem_order,flitem_subtract,flitem_showstart,flitem_showend, flitem_showdelta,flitem_showbudget,flitem_showdiff,flitem_showcustom, flitem_custom_source,flitem_showstartprcnt,flitem_showendprcnt,flitem_showdeltaprcnt, flitem_showbudgetprcnt,flitem_showdiffprcnt,flitem_showcustomprcnt, accnt_id,accnt_type,COALESCE(trialbal_id,getlasttrialbalid(accnt_id,period_id)) as trialbal_id,COALESCE(trialbal_debits,0) as trialbal_debits, COALESCE(trialbal_credits,0) AS trialbal_credits,COALESCE(budget_amount,0) AS budget_amount FROM (SELECT period_id, period_start, flhead_type, flitem_id,flitem_order,flitem_subtract,flitem_showstart,flitem_showend, flitem_showdelta,flitem_showbudget,flitem_showdiff,flitem_showcustom,flitem_custom_source,flitem_showstartprcnt, flitem_showendprcnt,flitem_showdeltaprcnt,flitem_showbudgetprcnt,flitem_showdiffprcnt,flitem_showcustomprcnt, accnt_id, accnt_type FROM period,flaccnt WHERE ((flitem_flhead_id=pFlheadid) AND (flitem_flgrp_id=pFlgrpid) AND (_all OR prj_id=pPrjId) AND (period_id IN (SELECT * FROM getperiodid(pPeriodId,pInterval)))) ORDER BY flitem_id ) AS flitem LEFT OUTER JOIN trialbal ON ((trialbal_accnt_id=accnt_id) AND (trialbal_period_id=period_id)) LEFT OUTER JOIN budget ON ((budget_accnt_id=accnt_id) AND (budget_period_id=period_id)) ORDER BY accnt_id, period_start) AS data GROUP BY flhead_type,flitem_id,flitem_order,flitem_subtract,flitem_showstart,flitem_showend, flitem_showdelta,flitem_showbudget,flitem_showdiff,flitem_showcustom, flitem_custom_source,flitem_showstartprcnt,flitem_showendprcnt,flitem_showdeltaprcnt, flitem_showbudgetprcnt,flitem_showdiffprcnt,flitem_showcustomprcnt,accnt_id,accnt_type) AS agg UNION ALL SELECT 'S' AS type, flspec_id AS type_id, flspec_order AS orderby, FALSE AS summarize, flspec_subtract AS subtract, CASE WHEN (flspec_showstart) THEN findSpecialFinancial('S', flspec_type, pPeriodid) ELSE NULL END AS beginning, CASE WHEN (flspec_showend) THEN findSpecialFinancial('E', flspec_type, pPeriodid) ELSE NULL END AS ending, CASE WHEN (flspec_showdelta) THEN findSpecialFinancial('D', flspec_type, pPeriodid) ELSE NULL END AS debits, CASE WHEN (flspec_showdelta) THEN findSpecialFinancial('C', flspec_type, pPeriodid) ELSE NULL END AS credits, CASE WHEN (flspec_showbudget) THEN findSpecialFinancial('B', flspec_type, pPeriodid) ELSE NULL END AS budget, CASE WHEN (flspec_showdiff) THEN findSpecialFinancial('E', flspec_type, pPeriodid) - findSpecialFinancial('S', flspec_type, pPeriodid) ELSE NULL END AS diff, CASE WHEN (NOT flspec_showcustom) THEN NULL WHEN (flspec_custom_source='F') THEN findSpecialFinancial('E', flspec_type, pPeriodid) - findSpecialFinancial('S', flspec_type, pPeriodid) WHEN (flspec_custom_source IN ('S', 'E', 'D', 'C', 'B')) THEN findSpecialFinancial(flspec_custom_source, flspec_type, pPeriodid) ELSE 0.00 END AS custom, CASE WHEN(flspec_showstartprcnt) THEN 0.00 ELSE NULL END AS beginningprcnt, CASE WHEN(flspec_showendprcnt) THEN 0.00 ELSE NULL END AS endingprcnt, CASE WHEN(flspec_showdeltaprcnt) THEN 0.00 ELSE NULL END AS debitsprcnt, CASE WHEN(flspec_showdeltaprcnt) THEN 0.00 ELSE NULL END AS creditsprcnt, CASE WHEN(flspec_showbudgetprcnt) THEN 0.00 ELSE NULL END AS budgetprcnt, CASE WHEN(flspec_showdiffprcnt) THEN 0.00 ELSE NULL END AS diffprcnt, CASE WHEN(flspec_showcustomprcnt) THEN 0.00 ELSE NULL END AS customprcnt, -1 AS accnt_id, '' AS accnt_number FROM flspec WHERE ((flspec_flgrp_id=pFlgrpid) AND (flspec_flhead_id=pFlheadid)) ORDER BY orderby, accnt_number LOOP IF (_r.type = 'G') THEN -- Create a record for the items sub items to be attached to and be able to update the total INSERT INTO flrpt (flrpt_flhead_id, flrpt_period_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_beginning, flrpt_ending, flrpt_debits, flrpt_credits, flrpt_budget, flrpt_diff, flrpt_custom, flrpt_beginningprcnt, flrpt_endingprcnt, flrpt_debitsprcnt, flrpt_creditsprcnt, flrpt_budgetprcnt, flrpt_diffprcnt, flrpt_customprcnt, flrpt_parent_id, flrpt_interval) VALUES (pFlheadid, pPeriodid, getEffectiveXtUser(), (COALESCE(( SELECT MAX(flrpt_order) FROM flrpt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser())) ), 1) + 1), pLevel, _r.type, _r.type_id, _r.beginning, _r.ending, _r.debits, _r.credits, _r.budget, _r.diff, _r.custom, _r.beginningprcnt, _r.endingprcnt, _r.debitsprcnt, _r.creditsprcnt, _r.budgetprcnt, _r.diffprcnt, _r.customprcnt, pFlgrpid, pInterval); PERFORM insertFlGroup(pFlheadid, pPeriodid, _r.type_id, (pLevel + 1), (pSummarize OR _r.summarize), pInterval, pPrjid); -- Update the parent item SELECT COALESCE(flrpt_beginning, 0.00) AS beginning, COALESCE(flrpt_ending, 0.00) AS ending, COALESCE(flrpt_debits, 0.00) AS debits, COALESCE(flrpt_credits, 0.00) AS credits, COALESCE(flrpt_budget, 0.00) AS budget, COALESCE(flrpt_diff, 0.00) AS diff, COALESCE(flrpt_custom, 0.00) AS custom INTO _g FROM flrpt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type=_r.type) AND (flrpt_type_id=_r.type_id)); IF (_r.subtract) THEN UPDATE flrpt SET flrpt_beginning = flrpt_beginning - _g.beginning, flrpt_ending = flrpt_ending - _g.ending, flrpt_debits = flrpt_debits - _g.debits, flrpt_credits = flrpt_credits - _g.credits, flrpt_budget = flrpt_budget - _g.budget, flrpt_diff = flrpt_diff - _g.diff, flrpt_custom = flrpt_custom - _g.custom WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type='G') AND (flrpt_type_id=pFlgrpid)); ELSE UPDATE flrpt SET flrpt_beginning = flrpt_beginning + _g.beginning, flrpt_ending = flrpt_ending + _g.ending, flrpt_debits = flrpt_debits + _g.debits, flrpt_credits = flrpt_credits + _g.credits, flrpt_budget = flrpt_budget + _g.budget, flrpt_diff = flrpt_diff + _g.diff, flrpt_custom = flrpt_custom + _g.custom WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type='G') AND (flrpt_type_id=pFlgrpid)); END IF; -- If we are summarizing then we need to remove the record we created now that we have updated the total IF (pSummarize) THEN DELETE FROM flrpt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type=_r.type) AND (flrpt_type_id=_r.type_id)); END IF; ELSE IF (_r.type = 'I' OR _r.type = 'S' ) THEN -- If we are not summarizing then create a new entry for this record IF (NOT pSummarize) THEN INSERT INTO flrpt (flrpt_flhead_id, flrpt_period_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_beginning, flrpt_ending, flrpt_debits, flrpt_credits, flrpt_budget, flrpt_diff, flrpt_custom, flrpt_beginningprcnt, flrpt_endingprcnt, flrpt_debitsprcnt, flrpt_creditsprcnt, flrpt_budgetprcnt, flrpt_diffprcnt, flrpt_customprcnt, flrpt_parent_id,flrpt_accnt_id,flrpt_interval) VALUES (pFlheadid, pPeriodid, getEffectiveXtUser(), (COALESCE(( SELECT MAX(flrpt_order) FROM flrpt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser())) ), 1) + 1), pLevel, _r.type, _r.type_id, _r.beginning, _r.ending, _r.debits, _r.credits, _r.budget, _r.diff, _r.custom, _r.beginningprcnt, _r.endingprcnt, _r.debitsprcnt, _r.creditsprcnt, _r.budgetprcnt, _r.diffprcnt, _r.customprcnt, pFlgrpid,_r.accnt_id,pInterval); END IF; -- Update the parent item IF (_r.subtract) THEN UPDATE flrpt SET flrpt_beginning = flrpt_beginning - COALESCE(_r.beginning, 0.00), flrpt_ending = flrpt_ending - COALESCE(_r.ending, 0.00), flrpt_debits = flrpt_debits - COALESCE(_r.debits, 0.00), flrpt_credits = flrpt_credits - COALESCE(_r.credits, 0.00), flrpt_budget = flrpt_budget - COALESCE(_r.budget, 0.00), flrpt_diff = flrpt_diff - COALESCE(_r.diff, 0.00), flrpt_custom = flrpt_custom - COALESCE(_r.custom, 0.00) WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type='G') AND (flrpt_type_id=pFlgrpid)); ELSE UPDATE flrpt SET flrpt_beginning = flrpt_beginning + COALESCE(_r.beginning, 0.00), flrpt_ending = flrpt_ending + COALESCE(_r.ending, 0.00), flrpt_debits = flrpt_debits + COALESCE(_r.debits, 0.00), flrpt_credits = flrpt_credits + COALESCE(_r.credits, 0.00), flrpt_budget = flrpt_budget + COALESCE(_r.budget, 0.00), flrpt_diff = flrpt_diff + COALESCE(_r.diff, 0.00), flrpt_custom = flrpt_custom + COALESCE(_r.custom, 0.00) WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_interval=pInterval) AND (flrpt_period_id=pPeriodid) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type='G') AND (flrpt_type_id=pFlgrpid)); END IF; END IF; END IF; END LOOP; IF (NOT pSummarize) THEN -- If this group wants a summarized line create it here. IF (_subtotal) THEN INSERT INTO flrpt (flrpt_flhead_id, flrpt_period_id, flrpt_username, flrpt_order, flrpt_level, flrpt_type, flrpt_type_id, flrpt_beginning, flrpt_ending, flrpt_debits, flrpt_credits, flrpt_budget, flrpt_diff, flrpt_custom, flrpt_beginningprcnt, flrpt_endingprcnt, flrpt_debitsprcnt, flrpt_creditsprcnt, flrpt_budgetprcnt, flrpt_diffprcnt, flrpt_customprcnt, flrpt_parent_id, flrpt_altname,flrpt_interval ) SELECT pFlheadid, pPeriodid, getEffectiveXtUser(), (COALESCE(( SELECT MAX(flrpt_order) FROM flrpt WHERE ((flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser())) ), 1) + 1), pLevel, 'T', -1, CASE WHEN (flgrp_showstart) THEN flrpt_beginning ELSE NULL END, CASE WHEN (flgrp_showend) THEN flrpt_ending ELSE NULL END, CASE WHEN (flgrp_showdelta) THEN flrpt_debits ELSE NULL END, CASE WHEN (flgrp_showdelta) THEN flrpt_credits ELSE NULL END, CASE WHEN (flgrp_showbudget) THEN flrpt_budget ELSE NULL END, CASE WHEN (flgrp_showdiff) THEN flrpt_diff ELSE NULL END, CASE WHEN (flgrp_showcustom) THEN flrpt_custom ELSE NULL END, CASE WHEN (flgrp_showstartprcnt) THEN flrpt_beginningprcnt ELSE NULL END, CASE WHEN (flgrp_showendprcnt) THEN flrpt_endingprcnt ELSE NULL END, CASE WHEN (flgrp_showdeltaprcnt) THEN flrpt_debitsprcnt ELSE NULL END, CASE WHEN (flgrp_showdeltaprcnt) THEN flrpt_creditsprcnt ELSE NULL END, CASE WHEN (flgrp_showbudgetprcnt) THEN flrpt_budgetprcnt ELSE NULL END, CASE WHEN (flgrp_showdiffprcnt) THEN flrpt_diffprcnt ELSE NULL END, CASE WHEN (flgrp_showcustomprcnt) THEN flrpt_customprcnt ELSE NULL END, pFlgrpid, CASE WHEN (flgrp_usealtsubtotal) THEN flgrp_altsubtotal ELSE NULL END, pInterval FROM flrpt, flgrp WHERE ((flrpt_flhead_id=flgrp_flhead_id) AND (flrpt_type_id=flgrp_id) AND (flrpt_flhead_id=pFlheadid) AND (flrpt_period_id=pPeriodid) AND (flrpt_interval=pInterval) AND (flrpt_username=getEffectiveXtUser()) AND (flrpt_type='G') AND (flrpt_type_id=pFlgrpid)); END IF; END IF; return TRUE; END; $_$; eDROP FUNCTION public.insertflgroup(integer, integer, integer, integer, boolean, character, integer); publicadminfalse83992y12551692234Uinsertgltransaction(text, text, text, text, integer, integer, integer, numeric, date)FUNCTIONCREATE FUNCTION insertgltransaction(text, text, text, text, integer, integer, integer, numeric, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSource ALIAS FOR $1; pDocType ALIAS FOR $2; pDocNumber ALIAS FOR $3; pNotes ALIAS FOR $4; pCreditid ALIAS FOR $5; pDebitid ALIAS FOR $6; pMiscid ALIAS FOR $7; pAmount ALIAS FOR $8; pDistDate ALIAS FOR $9; _return INTEGER; BEGIN SELECT insertGLTransaction( fetchJournalNumber('GL-MISC'), pSource, pDocType, pDocNumber, pNotes, pCreditid, pDebitid, pMiscid, pAmount, pDistDate) INTO _return; RETURN _return; END; $_$; lDROP FUNCTION public.insertgltransaction(text, text, text, text, integer, integer, integer, numeric, date); publicadminfalse83992{12551692235^insertgltransaction(integer, text, text, text, text, integer, integer, integer, numeric, date)FUNCTIONCREATE FUNCTION insertgltransaction(integer, text, text, text, text, integer, integer, integer, numeric, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pJournalNumber ALIAS FOR $1; pSource ALIAS FOR $2; pDocType ALIAS FOR $3; pDocNumber ALIAS FOR $4; pNotes ALIAS FOR $5; pCreditid ALIAS FOR $6; pDebitid ALIAS FOR $7; pMiscid ALIAS FOR $8; pAmount ALIAS FOR $9; pDistDate ALIAS FOR $10; _return INTEGER; BEGIN SELECT insertGLTransaction( pJournalNumber, pSource, pDocType, pDocNumber, pNotes, pCreditid, pDebitid, pMiscid, pAmount, pDistDate, TRUE) INTO _return; RETURN _return; END; $_$; uDROP FUNCTION public.insertgltransaction(integer, text, text, text, text, integer, integer, integer, numeric, date); publicadminfalse83992z12551692236^insertgltransaction(text, text, text, text, integer, integer, integer, numeric, date, boolean)FUNCTIONNCREATE FUNCTION insertgltransaction(text, text, text, text, integer, integer, integer, numeric, date, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSource ALIAS FOR $1; pDocType ALIAS FOR $2; pDocNumber ALIAS FOR $3; pNotes ALIAS FOR $4; pCreditid ALIAS FOR $5; pDebitid ALIAS FOR $6; pMiscid ALIAS FOR $7; pAmount ALIAS FOR $8; pDistDate ALIAS FOR $9; pPostTrialBal ALIAS FOR $10; _return INTEGER; BEGIN SELECT insertGLTransaction( fetchJournalNumber('GL-MISC'), pSource, pDocType, pDocNumber, pNotes, pCreditid, pDebitid, pMiscid, pAmount, pDistDate, pPostTrialBal) INTO _return; RETURN _return; END; $_$; uDROP FUNCTION public.insertgltransaction(text, text, text, text, integer, integer, integer, numeric, date, boolean); publicadminfalse83992|12551692237ginsertgltransaction(integer, text, text, text, text, integer, integer, integer, numeric, date, boolean)FUNCTIONTCREATE FUNCTION insertgltransaction(integer, text, text, text, text, integer, integer, integer, numeric, date, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pJournalNumber ALIAS FOR $1; pSource ALIAS FOR $2; pDocType ALIAS FOR $3; pDocNumber ALIAS FOR $4; pNotes ALIAS FOR $5; pCreditid ALIAS FOR $6; pDebitid ALIAS FOR $7; pMiscid ALIAS FOR $8; pAmount ALIAS FOR $9; pDistDate ALIAS FOR $10; pPostTrialBal ALIAS FOR $11; _return INTEGER; BEGIN SELECT insertGLTransaction( pJournalNumber, pSource, pDocType, pDocNumber, pNotes, pCreditid, pDebitid, pMiscid, pAmount, pDistDate, pPostTrialBal, false) INTO _return; RETURN _return; END; $_$; ~DROP FUNCTION public.insertgltransaction(integer, text, text, text, text, integer, integer, integer, numeric, date, boolean); publicadminfalse8399212551692238pinsertgltransaction(integer, text, text, text, text, integer, integer, integer, numeric, date, boolean, boolean)FUNCTIONCREATE FUNCTION insertgltransaction(integer, text, text, text, text, integer, integer, integer, numeric, date, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pJournalNumber ALIAS FOR $1; pSource ALIAS FOR $2; pDocType ALIAS FOR $3; pDocNumber ALIAS FOR $4; pNotes ALIAS FOR $5; pCreditid ALIAS FOR $6; pDebitid ALIAS FOR $7; pMiscid ALIAS FOR $8; pAmount ALIAS FOR $9; pDistDate ALIAS FOR $10; pPostTrialBal ALIAS FOR $11; pOnlyGL ALIAS FOR $12; _debitid INTEGER; _creditid INTEGER; _sequence INTEGER; _check INTEGER; BEGIN -- Check GL Interface metric IF (fetchMetricBool('InterfaceToGL') = false AND pSource IN ('I/M', 'P/D', 'S/R', 'W/O')) THEN RETURN 0; END IF; IF (fetchMetricBool('InterfaceAPToGL') = false AND pSource = 'A/P') THEN RETURN 0; END IF; IF (fetchMetricBool('InterfaceARToGL') = false AND pSource IN ('A/R', 'S/O', 'S/R')) THEN RETURN 0; END IF; -- Is there anything to post? -- ToDo - 2 should really be the scale of the base currency IF (round(pAmount, 2) = 0) THEN RETURN -3; END IF; /* Make sure we don't create an imbalance across companies. The 'IgnoreCompanyBalance' metric is a back door mechanism to allow legacy users to create transactions accross companies if they have been using the company segment for something else and they MUST continue to be able to do so. It can only be implemented by direct sql update to the metric table and should otherwise be discouraged. */ IF (COALESCE(fetchMetricValue('GLCompanySize'),0) > 0 AND fetchMetricBool('IgnoreCompany') = false) THEN IF (SELECT (COALESCE(d.accnt_company,'') != COALESCE(c.accnt_company,'')) FROM accnt d, accnt c WHERE ((d.accnt_id=pDebitid) AND (c.accnt_id=pCreditid))) THEN RAISE EXCEPTION 'G/L Transaction can not be posted because accounts % and % reference two differnt companies.', formatGlaccount(pDebitid), formatGlaccount(pCreditid); END IF; END IF; -- Validate pDebitid IF (pDebitid IN (SELECT accnt_id FROM accnt)) THEN _debitid := pDebitid; ELSE SELECT getUnassignedAccntId() INTO _debitid; END IF; -- Validate pCreditid IF (pCreditid IN (SELECT accnt_id FROM accnt)) THEN _creditid := pCreditid; ELSE SELECT getUnassignedAccntId() INTO _creditid; END IF; -- refuse to accept postings into closed periods IF (SELECT BOOL_AND(COALESCE(period_closed, FALSE)) FROM accnt LEFT OUTER JOIN period ON (pDistDate BETWEEN period_start AND period_end) WHERE (accnt_id IN (_creditid, _debitid))) THEN RAISE EXCEPTION 'Cannot post to closed period (%).', pDistDate; RETURN -4; -- remove raise exception when all callers check return code END IF; -- refuse to accept postings into frozen periods without proper priv IF (SELECT NOT BOOL_AND(checkPrivilege('PostFrozenPeriod')) AND BOOL_AND(COALESCE(period_freeze, FALSE)) FROM accnt LEFT OUTER JOIN period ON (pDistDate BETWEEN period_start AND period_end) WHERE (accnt_id IN (_creditid, _debitid))) THEN RAISE EXCEPTION 'Cannot post to frozen period (%).', pDistDate; RETURN -4; -- remove raise exception when all callers check return code END IF; -- refuse to accept postings into nonexistent periods IF NOT EXISTS(SELECT period_id FROM period WHERE (pDistDate BETWEEN period_start AND period_end)) THEN RAISE EXCEPTION 'Cannot post to nonexistent period (%).', pDistDate; END IF; -- Grab a sequence for the pair SELECT fetchGLSequence() INTO _sequence; IF (NOT pOnlyGL AND fetchMetricBool('UseJournals')) THEN -- First the credit INSERT INTO sltrans ( sltrans_journalnumber, sltrans_posted, sltrans_created, sltrans_date, sltrans_sequence, sltrans_accnt_id, sltrans_source, sltrans_doctype, sltrans_docnumber, sltrans_notes, sltrans_misc_id, sltrans_amount ) VALUES ( pJournalNumber, FALSE, CURRENT_TIMESTAMP, pDistDate, _sequence, _creditid, pSource, pDocType, pDocNumber, pNotes, pMiscid, pAmount ); -- Now the debit INSERT INTO sltrans ( sltrans_journalnumber, sltrans_posted, sltrans_created, sltrans_date, sltrans_sequence, sltrans_accnt_id, sltrans_source, sltrans_doctype, sltrans_docnumber, sltrans_notes, sltrans_misc_id, sltrans_amount ) VALUES ( pJournalNumber, FALSE, CURRENT_TIMESTAMP, pDistDate, _sequence, _debitid, pSource, pDocType, pDocNumber, pNotes, pMiscid, (pAmount * -1) ); ELSE -- First the credit INSERT INTO gltrans ( gltrans_journalnumber, gltrans_posted, gltrans_exported, gltrans_created, gltrans_date, gltrans_sequence, gltrans_accnt_id, gltrans_source, gltrans_doctype, gltrans_docnumber, gltrans_notes, gltrans_misc_id, gltrans_amount ) VALUES ( pJournalNumber, FALSE, FALSE, CURRENT_TIMESTAMP, pDistDate, _sequence, _creditid, pSource, pDocType, pDocNumber, pNotes, pMiscid, pAmount ); -- Now the debit INSERT INTO gltrans ( gltrans_journalnumber, gltrans_posted, gltrans_exported, gltrans_created, gltrans_date, gltrans_sequence, gltrans_accnt_id, gltrans_source, gltrans_doctype, gltrans_docnumber, gltrans_notes, gltrans_misc_id, gltrans_amount ) VALUES ( pJournalNumber, FALSE, FALSE, CURRENT_TIMESTAMP, pDistDate, _sequence, _debitid, pSource, pDocType, pDocNumber, pNotes, pMiscid, (pAmount * -1) ); IF (pPostTrialBal) THEN PERFORM postIntoTrialBalance(_sequence); END IF; END IF; RETURN _sequence; END; $_$; DROP FUNCTION public.insertgltransaction(integer, text, text, text, text, integer, integer, integer, numeric, date, boolean, boolean); publicadminfalse83992v12551692240?insertintoglseries(integer, text, text, text, integer, numeric)FUNCTIONCREATE FUNCTION insertintoglseries(integer, text, text, text, integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pSource ALIAS FOR $2; pDocType ALIAS FOR $3; pDocNumber ALIAS FOR $4; pAccntid ALIAS FOR $5; pAmount ALIAS FOR $6; _returnValue INTEGER; BEGIN SELECT insertIntoGLSeries( pSequence, pSource, pDocType, pDocNumber, pAccntid, pAmount, CURRENT_DATE, '' ) INTO _returnValue; RETURN _returnValue; END; $_$; VDROP FUNCTION public.insertintoglseries(integer, text, text, text, integer, numeric); publicadminfalse83992w12551692241Einsertintoglseries(integer, text, text, text, integer, numeric, date)FUNCTIONCREATE FUNCTION insertintoglseries(integer, text, text, text, integer, numeric, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pSource ALIAS FOR $2; pDocType ALIAS FOR $3; pDocNumber ALIAS FOR $4; pAccntid ALIAS FOR $5; pAmount ALIAS FOR $6; pDistDate ALIAS FOR $7; _returnValue INTEGER; BEGIN SELECT insertIntoGLSeries( pSequence, pSource, pDocType, pDocNumber, pAccntid, pAmount, pDistDate, '' ) INTO _returnValue; RETURN _returnValue; END; $_$; \DROP FUNCTION public.insertintoglseries(integer, text, text, text, integer, numeric, date); publicadminfalse8399212551692242Kinsertintoglseries(integer, text, text, text, integer, numeric, date, text)FUNCTIONCREATE FUNCTION insertintoglseries(integer, text, text, text, integer, numeric, date, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pSource ALIAS FOR $2; pDocType ALIAS FOR $3; pDocNumber ALIAS FOR $4; pAccntid ALIAS FOR $5; pAmount ALIAS FOR $6; pDistDate ALIAS FOR $7; pNotes ALIAS FOR $8; _returnValue INTEGER; BEGIN SELECT insertIntoGLSeries( pSequence, pSource, pDocType, pDocNumber, pAccntid, pAmount, pDistDate, pNotes, NULL ) INTO _returnValue; RETURN _returnValue; END; $_$; bDROP FUNCTION public.insertintoglseries(integer, text, text, text, integer, numeric, date, text); publicadminfalse83992x12551692243Tinsertintoglseries(integer, text, text, text, integer, numeric, date, text, integer)FUNCTIONF CREATE FUNCTION insertintoglseries(integer, text, text, text, integer, numeric, date, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pSource ALIAS FOR $2; pDocType ALIAS FOR $3; pDocNumber ALIAS FOR $4; pAccntid ALIAS FOR $5; pAmount ALIAS FOR $6; pDistDate ALIAS FOR $7; pNotes ALIAS FOR $8; pMiscid ALIAS FOR $9; _glseriesid INTEGER; BEGIN -- Check GL Interface metric IF (fetchMetricBool('InterfaceToGL') = false AND pSource IN ('I/M', 'P/D', 'S/R', 'W/O')) THEN RETURN 0; END IF; IF (fetchMetricBool('InterfaceAPToGL') = false AND pSource = 'A/P') THEN RETURN 0; END IF; IF (fetchMetricBool('InterfaceARToGL') = false AND pSource IN ('A/R', 'S/O', 'S/R')) THEN RETURN 0; END IF; -- Verify the target accnt IF ( (pAccntid IS NULL) OR (pAccntid = -1) ) THEN RETURN -1; END IF; -- refuse to accept postings into closed periods IF (SELECT BOOL_AND(COALESCE(period_closed, FALSE)) FROM accnt LEFT OUTER JOIN period ON (pDistDate BETWEEN period_start AND period_end) WHERE (accnt_id = pAccntid)) THEN RAISE EXCEPTION 'Cannot post to closed period (%).', pDistDate; RETURN -4; -- remove raise exception when all callers check return code END IF; -- refuse to accept postings into frozen periods without proper priv IF (SELECT NOT BOOL_AND(checkPrivilege('PostFrozenPeriod')) AND BOOL_AND(COALESCE(period_freeze, FALSE)) FROM accnt LEFT OUTER JOIN period ON (pDistDate BETWEEN period_start AND period_end) WHERE (accnt_id = pAccntid)) THEN RAISE EXCEPTION 'Cannot post to frozen period (%).', pDistDate; RETURN -4; -- remove raise exception when all callers check return code END IF; -- refuse to accept postings into nonexistent periods IF NOT EXISTS(SELECT period_id FROM period WHERE (pDistDate BETWEEN period_start AND period_end)) THEN RAISE EXCEPTION 'Cannot post to nonexistent period (%).', pDistDate; END IF; -- Insert into the glseries SELECT NEXTVAL('glseries_glseries_id_seq') INTO _glseriesid; INSERT INTO glseries ( glseries_id, glseries_sequence, glseries_source, glseries_doctype, glseries_docnumber, glseries_accnt_id, glseries_amount, glseries_distdate, glseries_notes, glseries_misc_id ) VALUES ( _glseriesid, pSequence, pSource, pDocType, pDocNumber, pAccntid, pAmount, pDistDate, pNotes, pMiscid ); RETURN _glseriesid; END; $_$; kDROP FUNCTION public.insertintoglseries(integer, text, text, text, integer, numeric, date, text, integer); publicadminfalse8399212591692244invcheadTABLECREATE TABLE invchead ( invchead_id integer NOT NULL, invchead_cust_id integer NOT NULL, invchead_shipto_id integer, invchead_ordernumber text, invchead_orderdate date, invchead_posted boolean NOT NULL, invchead_printed boolean NOT NULL, invchead_invcnumber text NOT NULL, invchead_invcdate date NOT NULL, invchead_shipdate date, invchead_ponumber text, invchead_shipvia text, invchead_fob text, invchead_billto_name text, invchead_billto_address1 text, invchead_billto_address2 text, invchead_billto_address3 text, invchead_billto_city text, invchead_billto_state text, invchead_billto_zipcode text, invchead_billto_phone text, invchead_shipto_name text, invchead_shipto_address1 text, invchead_shipto_address2 text, invchead_shipto_address3 text, invchead_shipto_city text, invchead_shipto_state text, invchead_shipto_zipcode text, invchead_shipto_phone text, invchead_salesrep_id integer, invchead_commission numeric(20,10) NOT NULL, invchead_terms_id integer, invchead_freight numeric(16,2) NOT NULL, invchead_misc_amount numeric(16,2) NOT NULL, invchead_misc_descrip text, invchead_misc_accnt_id integer, invchead_payment numeric(16,2), invchead_paymentref text, invchead_notes text, invchead_billto_country text, invchead_shipto_country text, invchead_prj_id integer, invchead_curr_id integer DEFAULT basecurrid(), invchead_gldistdate date, invchead_recurring boolean DEFAULT false NOT NULL, invchead_recurring_interval integer, invchead_recurring_type text, invchead_recurring_until date, invchead_recurring_invchead_id integer, invchead_shipchrg_id integer, invchead_taxzone_id integer, invchead_void boolean DEFAULT false, invchead_saletype_id integer, invchead_shipzone_id integer, CONSTRAINT invchead_invchead_invcnumber_check CHECK ((invchead_invcnumber <> ''::text)) ); DROP TABLE public.invchead; publicadminfalse58885889589058928!00TABLE invcheadCOMMENT;COMMENT ON TABLE invchead IS 'Invoice header information'; publicadminfalse173!00"COLUMN invchead.invchead_recurringCOMMENT@COMMENT ON COLUMN invchead.invchead_recurring IS 'Deprecated.'; publicadminfalse173!00+COLUMN invchead.invchead_recurring_intervalCOMMENTICOMMENT ON COLUMN invchead.invchead_recurring_interval IS 'Deprecated.'; publicadminfalse173!00'COLUMN invchead.invchead_recurring_typeCOMMENTECOMMENT ON COLUMN invchead.invchead_recurring_type IS 'Deprecated.'; publicadminfalse173!00(COLUMN invchead.invchead_recurring_untilCOMMENTFCOMMENT ON COLUMN invchead.invchead_recurring_until IS 'Deprecated.'; publicadminfalse173!00$COLUMN invchead.invchead_saletype_idCOMMENTXCOMMENT ON COLUMN invchead.invchead_saletype_id IS 'Associated sale type for invoice.'; publicadminfalse173!00$COLUMN invchead.invchead_shipzone_idCOMMENT\COMMENT ON COLUMN invchead.invchead_shipzone_id IS 'Associated shipping zone for invoice.'; publicadminfalse173!00invcheadACLREVOKE ALL ON TABLE invchead FROM PUBLIC; REVOKE ALL ON TABLE invchead FROM admin; GRANT ALL ON TABLE invchead TO admin; GRANT ALL ON TABLE invchead TO xtrole; publicadminfalse17312591692253prjTABLECREATE TABLE prj ( prj_id integer NOT NULL, prj_number text NOT NULL, prj_name text NOT NULL, prj_descrip text, prj_status character(1) NOT NULL, prj_so boolean, prj_wo boolean, prj_po boolean, prj_owner_username text, prj_start_date date, prj_due_date date, prj_assigned_date date, prj_completed_date date, prj_username text, prj_recurring_prj_id integer, prj_crmacct_id integer, prj_cntct_id integer, CONSTRAINT prj_prj_number_check CHECK ((prj_number <> ''::text)), CONSTRAINT prj_prj_status_check CHECK ((prj_status = ANY (ARRAY['P'::bpchar, 'O'::bpchar, 'C'::bpchar]))) ); DROP TABLE public.prj; publicadminfalse589458958!00 TABLE prjCOMMENT/COMMENT ON TABLE prj IS 'Project information'; publicadminfalse174!00COLUMN prj.prj_recurring_prj_idCOMMENTCOMMENT ON COLUMN prj.prj_recurring_prj_id IS 'The first prj record in the series if this is a recurring Project. If the prj_recurring_prj_id is the same as the prj_id, this record is the first in the series.'; publicadminfalse174!00prjACLREVOKE ALL ON TABLE prj FROM PUBLIC; REVOKE ALL ON TABLE prj FROM admin; GRANT ALL ON TABLE prj TO admin; GRANT ALL ON TABLE prj TO xtrole; publicadminfalse17412591746330saletypeTABLECREATE TABLE saletype ( saletype_id integer NOT NULL, saletype_code text NOT NULL, saletype_descr text, saletype_active boolean DEFAULT true NOT NULL ); DROP TABLE public.saletype; publicadminfalse66358!00TABLE saletypeCOMMENT=COMMENT ON TABLE saletype IS 'Type or Origination of Sale.'; publicadminfalse722!00COLUMN saletype.saletype_idCOMMENTPCOMMENT ON COLUMN saletype.saletype_id IS 'Sequence identifier for sale type.'; publicadminfalse722!00COLUMN saletype.saletype_codeCOMMENTVCOMMENT ON COLUMN saletype.saletype_code IS 'User defined identifier for sale type.'; publicadminfalse722"00COLUMN saletype.saletype_descrCOMMENTKCOMMENT ON COLUMN saletype.saletype_descr IS 'Description for sale type.'; publicadminfalse722"00COLUMN saletype.saletype_activeCOMMENTTCOMMENT ON COLUMN saletype.saletype_active IS 'Boolean to deactivate a sale type.'; publicadminfalse722"00saletypeACLREVOKE ALL ON TABLE saletype FROM PUBLIC; REVOKE ALL ON TABLE saletype FROM admin; GRANT ALL ON TABLE saletype TO admin; GRANT ALL ON TABLE saletype TO xtrole; publicadminfalse72212591693271shipzoneTABLECREATE TABLE shipzone ( shipzone_id integer DEFAULT nextval(('shipzone_shipzone_id_seq'::text)::regclass) NOT NULL, shipzone_name text NOT NULL, shipzone_descrip text, CONSTRAINT shipzone_shipzone_name_check CHECK ((shipzone_name <> ''::text)) ); DROP TABLE public.shipzone; publicadminfalse604060418"00TABLE shipzoneCOMMENT:COMMENT ON TABLE shipzone IS 'Shipping Zone information'; publicadminfalse212"00shipzoneACLREVOKE ALL ON TABLE shipzone FROM PUBLIC; REVOKE ALL ON TABLE shipzone FROM admin; GRANT ALL ON TABLE shipzone TO admin; GRANT ALL ON TABLE shipzone TO xtrole; publicadminfalse21212592008959invoiceVIEW CREATE VIEW invoice AS SELECT invchead.invchead_invcnumber AS invoice_number, invchead.invchead_ordernumber AS order_number, invchead.invchead_invcdate AS invoice_date, invchead.invchead_shipdate AS ship_date, invchead.invchead_orderdate AS order_date, saletype.saletype_code AS sale_type, salesrep.salesrep_number AS sales_rep, invchead.invchead_commission AS commission, COALESCE(taxzone.taxzone_code, 'None'::text) AS tax_zone, terms.terms_code AS terms, custinfo.cust_number AS customer_number, invchead.invchead_billto_name AS billto_name, invchead.invchead_billto_address1 AS billto_address1, invchead.invchead_billto_address2 AS billto_address2, invchead.invchead_billto_address3 AS billto_address3, invchead.invchead_billto_city AS billto_city, invchead.invchead_billto_state AS billto_state, invchead.invchead_billto_zipcode AS billto_postal_code, invchead.invchead_billto_country AS billto_country, invchead.invchead_billto_phone AS billto_phone, shiptoinfo.shipto_num AS shipto_number, invchead.invchead_shipto_name AS shipto_name, invchead.invchead_shipto_address1 AS shipto_address1, invchead.invchead_shipto_address2 AS shipto_address2, invchead.invchead_shipto_address3 AS shipto_address3, invchead.invchead_shipto_city AS shipto_city, invchead.invchead_shipto_state AS shipto_state, invchead.invchead_shipto_zipcode AS shipto_postal_code, invchead.invchead_shipto_country AS shipto_country, shipzone.shipzone_name AS shipto_shipzone, invchead.invchead_shipto_phone AS shipto_phone, invchead.invchead_ponumber AS po_number, invchead.invchead_shipvia AS ship_via, prj.prj_number AS project_number, invchead.invchead_fob AS fob, invchead.invchead_misc_descrip AS misc_charge_description, invchead.invchead_misc_amount AS misc_charge, CASE WHEN (invchead.invchead_misc_accnt_id = (-1)) THEN NULL::text ELSE public.formatglaccount(invchead.invchead_misc_accnt_id) END AS misc_charge_account_number, invchead.invchead_freight AS freight, curr.curr_abbr AS currency, invchead.invchead_payment AS payment, invchead.invchead_notes AS notes FROM (((((((((public.invchead LEFT JOIN public.custinfo ON ((custinfo.cust_id = invchead.invchead_cust_id))) LEFT JOIN public.shiptoinfo ON ((shiptoinfo.shipto_id = invchead.invchead_shipto_id))) LEFT JOIN public.prj ON ((prj.prj_id = invchead.invchead_prj_id))) LEFT JOIN public.curr_symbol curr ON ((curr.curr_id = invchead.invchead_curr_id))) LEFT JOIN public.salesrep ON ((salesrep.salesrep_id = invchead.invchead_salesrep_id))) LEFT JOIN public.terms ON ((terms.terms_id = invchead.invchead_terms_id))) LEFT JOIN public.taxzone ON ((taxzone.taxzone_id = invchead.invchead_taxzone_id))) LEFT JOIN public.saletype ON ((invchead.invchead_saletype_id = saletype.saletype_id))) LEFT JOIN public.shipzone ON ((invchead.invchead_shipzone_id = shipzone.shipzone_id))); DROP VIEW api.invoice; apiadminfalse53296"00 VIEW invoiceCOMMENTCOMMENT ON VIEW invoice IS ' This view can be used as an interface to import Invioce Header data directly into the system. Required fields will be checked and default values will be populated'; apiadminfalse785"00invoiceACLREVOKE ALL ON TABLE invoice FROM PUBLIC; REVOKE ALL ON TABLE invoice FROM admin; GRANT ALL ON TABLE invoice TO admin; GRANT ALL ON TABLE invoice TO xtrole; apiadminfalse78512552008964insertinvoice(api.invoice)FUNCTIONCREATE FUNCTION insertinvoice(api.invoice) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNew ALIAS FOR $1; BEGIN -- NOTE: (SELECT getCustId(...)) seems redundant, but it actually produces -- a HUGE performance increase because it makes the Postgres query planner -- use an index scan rather than an sequential table scan on cust_id INSERT INTO invchead ( invchead_invcnumber, invchead_ordernumber, invchead_invcdate, invchead_shipdate, invchead_orderdate, invchead_printed, invchead_posted, invchead_salesrep_id, invchead_commission, invchead_taxzone_id, invchead_terms_id, invchead_cust_id, invchead_billto_name, invchead_billto_address1, invchead_billto_address2, invchead_billto_address3, invchead_billto_city, invchead_billto_state, invchead_billto_zipcode, invchead_billto_country, invchead_billto_phone, invchead_shipto_id, invchead_shipto_name, invchead_shipto_address1, invchead_shipto_address2, invchead_shipto_address3, invchead_shipto_city, invchead_shipto_state, invchead_shipto_zipcode, invchead_shipto_country, invchead_shipto_phone, invchead_ponumber, invchead_shipvia, invchead_prj_id, invchead_fob, invchead_misc_descrip, invchead_misc_amount, invchead_misc_accnt_id, invchead_freight, invchead_curr_id, invchead_payment, invchead_notes, invchead_saletype_id, invchead_shipzone_id ) SELECT (CASE -- use a case here so we don't unnecessarily fetch a new invoice number WHEN pNew.invoice_number IS NULL THEN CAST(fetchInvcNumber() AS TEXT) WHEN pNew.invoice_number = '' THEN CAST(fetchInvcNumber() AS TEXT) ELSE pNew.invoice_number END), pNew.order_number, COALESCE(pNew.invoice_date, CURRENT_DATE), pNew.ship_date, pNew.order_date, FALSE, FALSE, COALESCE(getSalesRepId(pNew.sales_rep),shipto_salesrep_id,cust_salesrep_id), COALESCE(pNew.commission, 0), CASE WHEN pNew.tax_zone = 'None' THEN NULL ELSE COALESCE(getTaxZoneId(pNew.tax_zone),shipto_taxzone_id,cust_taxzone_id) END, COALESCE(getTermsId(pNew.terms),cust_terms_id), (SELECT getCustId(pNew.customer_number)), COALESCE(pNew.billto_name, cohead_billtoname, cust_name), COALESCE(pNew.billto_address1, cohead_billtoaddress1, addr_line1), COALESCE(pNew.billto_address2, cohead_billtoaddress2, addr_line2), COALESCE(pNew.billto_address3, cohead_billtoaddress3, addr_line3), COALESCE(pNew.billto_city, cohead_billtocity, addr_city), COALESCE(pNew.billto_state, cohead_billtostate, addr_state), COALESCE(pNew.billto_postal_code, cohead_billtozipcode, addr_postalcode), COALESCE(pNew.billto_country, cohead_billtocountry, addr_country), COALESCE(pNew.billto_phone, ''), COALESCE(shipto_id,-1), pNew.shipto_name, pNew.shipto_address1, pNew.shipto_address2, pNew.shipto_address3, pNew.shipto_city, pNew.shipto_state, pNew.shipto_postal_code, pNew.shipto_country, pNew.shipto_phone, COALESCE(pNew.po_number, ''), COALESCE(pNew.ship_via,shipto_shipvia,cust_shipvia), COALESCE(getPrjId(pNew.project_number),-1), COALESCE(pNew.fob,fetchDefaultFob(( SELECT CAST(usrpref_value AS INTEGER) FROM usrpref, whsinfo WHERE ((warehous_id=CAST(usrpref_value AS INTEGER)) AND (warehous_shipping) AND (warehous_active) AND (usrpref_username=getEffectiveXtUser()) AND (usrpref_name='PreferredWarehouse') ) ))), pNew.misc_charge_description, COALESCE(pNew.misc_charge, 0), COALESCE(getGlAccntId(pNew.misc_charge_account_number),-1), COALESCE(pNew.freight, 0), COALESCE(getCurrId(pNew.currency),( SELECT cust_curr_id FROM custinfo WHERE (cust_id=(SELECT getCustId(pNew.customer_number))) ),basecurrid()), COALESCE(pNew.payment,0), COALESCE(pNew.notes,''), getSaleTypeId(pNew.sale_type), getShipZoneId(pNew.shipto_shipzone) FROM custinfo LEFT OUTER JOIN shiptoinfo ON (shipto_id=(SELECT CASE WHEN getShiptoId(pNew.customer_number,pNew.shipto_number) IS NOT NULL THEN getShiptoId(pNew.customer_number,pNew.shipto_number) ELSE (SELECT shipto_id FROM shiptoinfo WHERE shipto_cust_id=cust_id AND shipto_default) END)) LEFT OUTER JOIN cohead ON (cohead_number=pNEW.order_number) LEFT OUTER JOIN cntct ON (cntct_id=cust_cntct_id) LEFT OUTER JOIN addr ON (addr_id=cntct_addr_id) WHERE cust_id = (SELECT getCustId(pNew.customer_number)); RETURN TRUE; END; $_$; 1DROP FUNCTION public.insertinvoice(api.invoice); publicadminfalse83992288912591692266invcitemTABLEMCREATE TABLE invcitem ( invcitem_id integer NOT NULL, invcitem_invchead_id integer NOT NULL, invcitem_linenumber integer, invcitem_item_id integer, invcitem_warehous_id integer DEFAULT (-1), invcitem_custpn text, invcitem_number text, invcitem_descrip text, invcitem_ordered numeric(20,6) NOT NULL, invcitem_billed numeric(20,6) NOT NULL, invcitem_custprice numeric(20,4), invcitem_price numeric(20,4) NOT NULL, invcitem_notes text, invcitem_salescat_id integer, invcitem_taxtype_id integer, invcitem_qty_uom_id integer, invcitem_qty_invuomratio numeric(20,10) NOT NULL, invcitem_price_uom_id integer, invcitem_price_invuomratio numeric(20,10) NOT NULL, invcitem_coitem_id integer, invcitem_updateinv boolean DEFAULT false, invcitem_rev_accnt_id integer ); DROP TABLE public.invcitem; publicadminfalse589758988"00TABLE invcitemCOMMENT>COMMENT ON TABLE invcitem IS 'Invoice Line Item information'; publicadminfalse175"00invcitemACLREVOKE ALL ON TABLE invcitem FROM PUBLIC; REVOKE ALL ON TABLE invcitem FROM admin; GRANT ALL ON TABLE invcitem TO admin; GRANT ALL ON TABLE invcitem TO xtrole; publicadminfalse17512592008969 invoicelineVIEWCREATE VIEW invoiceline AS SELECT invchead.invchead_invcnumber AS invoice_number, invcitem.invcitem_linenumber AS line_number, item.item_number, invcitem.invcitem_number AS misc_item_number, whsinfo.warehous_code AS site, invcitem.invcitem_descrip AS misc_item_description, salescat.salescat_name AS sales_category, invcitem.invcitem_custpn AS customer_part_number, invcitem.invcitem_ordered AS qty_ordered, invcitem.invcitem_billed AS qty_billed, invcitem.invcitem_updateinv AS update_inventory, invcitem.invcitem_price AS net_unit_price, COALESCE(taxtype.taxtype_name, 'None'::text) AS tax_type, COALESCE(qty_uom.uom_name, 'None'::text) AS qty_uom, COALESCE(price_uom.uom_name, 'None'::text) AS price_uom, invcitem.invcitem_notes AS notes, CASE WHEN (invcitem.invcitem_rev_accnt_id IS NOT NULL) THEN public.formatglaccount(invcitem.invcitem_rev_accnt_id) ELSE NULL::text END AS alternate_rev_account FROM (((((((public.invcitem LEFT JOIN public.invchead ON ((invcitem.invcitem_invchead_id = invchead.invchead_id))) LEFT JOIN public.item ON ((item.item_id = invcitem.invcitem_item_id))) LEFT JOIN public.whsinfo ON ((invcitem.invcitem_warehous_id = whsinfo.warehous_id))) LEFT JOIN public.salescat ON ((salescat.salescat_id = invcitem.invcitem_salescat_id))) LEFT JOIN public.taxtype ON ((taxtype.taxtype_id = invcitem.invcitem_taxtype_id))) LEFT JOIN public.uom qty_uom ON ((qty_uom.uom_id = invcitem.invcitem_qty_uom_id))) LEFT JOIN public.uom price_uom ON ((price_uom.uom_id = invcitem.invcitem_price_uom_id))); DROP VIEW api.invoiceline; apiadminfalse53336 "00VIEW invoicelineCOMMENTCOMMENT ON VIEW invoiceline IS ' This view can be used as an interface to import Invoice Line Items data directly into the system. Required fields will be checked and default values will be populated'; apiadminfalse786 "00 invoicelineACLREVOKE ALL ON TABLE invoiceline FROM PUBLIC; REVOKE ALL ON TABLE invoiceline FROM admin; GRANT ALL ON TABLE invoiceline TO admin; GRANT ALL ON TABLE invoiceline TO xtrole; apiadminfalse78612552008974&insertinvoicelineitem(api.invoiceline)FUNCTION CREATE FUNCTION insertinvoicelineitem(api.invoiceline) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNew ALIAS FOR $1; _r RECORD; BEGIN INSERT INTO invcitem ( invcitem_invchead_id, invcitem_linenumber, invcitem_item_id, invcitem_warehous_id, invcitem_custpn, invcitem_number, invcitem_descrip, invcitem_ordered, invcitem_billed, invcitem_updateinv, invcitem_custprice, invcitem_price, invcitem_notes, invcitem_salescat_id, invcitem_taxtype_id, invcitem_qty_uom_id, invcitem_qty_invuomratio, invcitem_price_uom_id, invcitem_price_invuomratio, invcitem_rev_accnt_id ) SELECT invchead_id, COALESCE(pNew.line_number,( SELECT (COALESCE(MAX(invcitem_linenumber), 0) + 1) FROM invcitem WHERE (invcitem_invchead_id=invchead_id) )), COALESCE(item_id, -1), COALESCE(getwarehousid(pNew.site,'ALL'),-1), pNew.customer_part_number, (CASE WHEN item_id IS NULL THEN pNew.misc_item_number ELSE NULL END), (CASE WHEN item_id IS NULL THEN pNew.misc_item_description ELSE NULL END), pNew.qty_ordered, COALESCE(pNew.qty_billed, 0), COALESCE(pNew.update_inventory,FALSE), 0, -- invcitem_custprice COALESCE(pNew.net_unit_price,itemPrice(item_id,invchead_cust_id, invchead_shipto_id,pNew.qty_ordered,invchead_curr_id,invchead_orderdate)), COALESCE(pNew.notes,''), CASE WHEN item_id IS NULL THEN (SELECT salescat_id FROM salescat WHERE salescat_name = pNew.sales_category) ELSE NULL END, taxtype_id, CASE WHEN item_id IS NOT NULL THEN COALESCE((SELECT uom_id FROM uom WHERE (uom_name=pNew.qty_uom)), item_price_uom_id) ELSE NULL END, CASE WHEN item_id IS NOT NULL THEN itemuomtouomratio(item_id, COALESCE((SELECT uom_id FROM uom WHERE uom_name=pNew.qty_uom),item_price_uom_id), item_price_uom_id ) ELSE 1 END, CASE WHEN item_id IS NOT NULL THEN COALESCE((SELECT uom_id FROM uom WHERE uom_name=pNew.price_uom),item_price_uom_id) ELSE NULL END, CASE WHEN item_id IS NOT NULL THEN itemuomtouomratio(item_id, COALESCE((SELECT uom_id FROM uom WHERE uom_name=pNew.price_uom),item_price_uom_id), item_price_uom_id ) ELSE 1 END, getGlAccntId(pNew.alternate_rev_account) FROM invchead LEFT OUTER JOIN item ON (item_id=getItemId(pNew.item_number)) LEFT OUTER JOIN taxtype ON (taxtype_id=CASE WHEN pNew.tax_type IS NULL THEN getItemTaxType(item_id,invchead_taxzone_id) WHEN pNew.tax_type = 'None' THEN NULL ELSE (SELECT taxtype_id FROM taxtype WHERE taxtype_name=pNew.tax_type) END) WHERE (invchead_invcnumber=pNew.invoice_number) AND (invchead_posted=FALSE); RETURN TRUE; END; $_$; =DROP FUNCTION public.insertinvoicelineitem(api.invoiceline); publicadminfalse839922891}12551692280;insertitemcost(integer, integer, integer, numeric, boolean)FUNCTION7 CREATE FUNCTION insertitemcost(integer, integer, integer, numeric, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemId ALIAS FOR $1; pCostElemId ALIAS FOR $2; pCurrId ALIAS FOR $3; pCost ALIAS FOR $4; pPostToStandard ALIAS FOR $5; _itemcost_id INTEGER; _update_return INTEGER; _postcost_return BOOLEAN; --This function is used with the api.itemcost View for updating and inserting --into the itemcosts table BEGIN IF (pCost IS NULL OR pCost < 0) THEN RAISE EXCEPTION 'itemcost Actual Cost Invalid ', pCost; END IF; -- Check for uniqueness SELECT itemcost_id INTO _itemcost_id FROM itemcost WHERE ( (itemcost_item_id = pItemId) AND (itemcost_costelem_id = pCostElemId) AND (NOT itemcost_lowlevel) ); IF (FOUND) THEN RAISE EXCEPTION 'itemcost already exists for this Item and Cost Element'; END IF; -- Check for valid combination of item_type and costelem_type IF (SELECT (COUNT(*) > 0) FROM item, costelem WHERE (item_id=pItemId) AND (costelem_id=pCostElemId) AND (item_type IN ('M', 'F', 'B', 'C', 'T')) AND (costelem_type IN ('Material'))) THEN RAISE EXCEPTION 'itemcost of this type is invalid for Manufactured Item'; END IF; IF (SELECT (COUNT(*) > 0) FROM item, costelem WHERE (item_id=pItemId) AND (costelem_id=pCostElemId) AND (item_type IN ('O', 'P')) AND (costelem_type IN ('Direct Labor', 'Overhead', 'Machine Overhead'))) THEN RAISE EXCEPTION 'itemcost of this type is invalid for Purchased Item'; END IF; IF (pCost > 0) THEN SELECT NEXTVAL('itemcost_itemcost_id_seq') INTO _itemcost_id; INSERT INTO itemcost ( itemcost_id, itemcost_item_id, itemcost_costelem_id, itemcost_lowlevel, itemcost_stdcost, itemcost_posted, itemcost_actcost, itemcost_updated, itemcost_curr_id ) VALUES ( _itemcost_id, pItemId, pCostElemId, FALSE, 0, startOfTime(), pCost, CURRENT_DATE, pCurrId ); --Only Post Cost to standard if the parameter is set to true IF (pPostToStandard) THEN IF (NOT checkPrivilege('PostStandardCosts')) THEN RAISE EXCEPTION 'You do not have privileges to poststandard itemcosts. Set api.itemcost post_to_standard to false'; END IF; SELECT postcost(_itemcost_id) INTO _postcost_return; IF (NOT _postcost_return) THEN RETURN -2; END IF; END IF; ELSE RETURN -1; END IF; RETURN _itemcost_id; END; $_$; RDROP FUNCTION public.insertitemcost(integer, integer, integer, numeric, boolean); publicadminfalse8399212551692348insertsalesline(api.salesline)FUNCTION CREATE FUNCTION insertsalesline(api.salesline) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNEW ALIAS FOR $1; _r RECORD; BEGIN IF (NOT EXISTS (SELECT cohead_id FROM cohead WHERE cohead_number=pNEW.order_number)) THEN RAISE EXCEPTION 'Function insertSalesLine failed because Sales Order % not found', pNEW.order_number; END IF; IF (NOT EXISTS (SELECT item_id FROM item WHERE item_number=pNEW.item_number)) THEN RAISE EXCEPTION 'Function insertSalesLine failed because Item Number % not found', pNEW.item_number; END IF; SELECT * INTO _r FROM cohead, itemsite, item, whsinfo WHERE ((cohead_number=pNEW.order_number) AND (itemsite_warehous_id=warehous_id AND (itemsite_item_id=item_id) AND (itemsite_active) AND (item_number=pNEW.item_number) AND (warehous_active) AND (warehous_id=COALESCE(getWarehousId(pNEW.sold_from_site,'ALL'),cohead_warehous_id,fetchprefwarehousid())))); IF (NOT FOUND) THEN RAISE EXCEPTION 'Function insertSalesLine failed with unknown failure to retrieve Sales Order'; END IF; INSERT INTO coitem ( coitem_cohead_id, coitem_linenumber, coitem_itemsite_id, coitem_status, coitem_scheddate, coitem_promdate, coitem_qtyord, coitem_qty_uom_id, coitem_qty_invuomratio, coitem_qtyshipped, coitem_unitcost, coitem_price, coitem_price_uom_id, coitem_price_invuomratio, coitem_custprice, coitem_order_id, coitem_memo, coitem_imported, coitem_qtyreturned, coitem_custpn, coitem_order_type, coitem_substitute_item_id, coitem_prcost, coitem_taxtype_id, coitem_warranty, coitem_cos_accnt_id, coitem_rev_accnt_id) VALUES ( _r.cohead_id, pNEW.line_number::INTEGER, _r.itemsite_id, pNEW.status, pNEW.scheduled_date, pNEW.promise_date, pNEW.qty_ordered, COALESCE(getUomId(pNEW.qty_uom),_r.item_inv_uom_id), itemuomtouomratio(_r.item_id,COALESCE(getUomId(pNEW.qty_uom),_r.item_inv_uom_id),_r.item_inv_uom_id), 0, stdCost(_r.item_id), COALESCE(pNEW.net_unit_price,itemPrice(_r.item_id,_r.cohead_cust_id, _r.cohead_shipto_id,pNEW.qty_ordered,_r.cohead_curr_id,_r.cohead_orderdate)), COALESCE(getUomId(pNEW.price_uom),_r.item_price_uom_id), itemuomtouomratio(_r.item_id,COALESCE(getUomId(pNEW.price_uom),_r.item_price_uom_id),_r.item_price_uom_id), itemPrice(_r.item_id,_r.cohead_cust_id,_r.cohead_shipto_id,pNEW.qty_ordered,_r.cohead_curr_id,_r.cohead_orderdate), -1, pNEW.notes, true, 0, pNEW.customer_pn, CASE WHEN ((pNEW.create_order AND (_r.item_type = 'M')) OR ((pNEW.create_order IS NULL) AND _r.itemsite_createwo)) THEN 'W' WHEN ((pNEW.create_order AND (_r.item_type = 'P')) OR ((pNEW.create_order IS NULL) AND _r.itemsite_createsopr)) THEN 'R' WHEN ((pNEW.create_order AND (_r.item_type = 'P') AND (_r.itemsite_createsopo)) OR ((pNEW.create_order IS NULL) AND _r.itemsite_createsopo)) THEN 'P' END, getitemid(pNEW.substitute_for), pNEW.overwrite_po_price, COALESCE(getTaxTypeId(pNEW.tax_type), getItemTaxType(_r.itemsite_item_id, _r.cohead_taxzone_id)), pNEW.warranty, getGlAccntId(pNEW.alternate_cos_account), getGlAccntId(pNEW.alternate_rev_account) ); RETURN TRUE; END; $_$; 5DROP FUNCTION public.insertsalesline(api.salesline); publicadminfalse827363992~12551692349intervaltominutes(interval)FUNCTIONCREATE FUNCTION intervaltominutes(interval) RETURNS numeric LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT (EXTRACT(DAY FROM $1) * 24 * 60 + EXTRACT(HOUR FROM $1) * 60 + EXTRACT(MINUTE FROM $1) + ROUND((EXTRACT(SECOND FROM $1) / 60)::NUMERIC, 4))::NUMERIC AS result $_$; 2DROP FUNCTION public.intervaltominutes(interval); publicadminfalse812551692350+invadjustment(integer, numeric, text, text)FUNCTION=CREATE FUNCTION invadjustment(integer, numeric, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN invAdjustment($1, $2, $3, $4, CURRENT_TIMESTAMP, NULL); END; $_$; BDROP FUNCTION public.invadjustment(integer, numeric, text, text); publicadminfalse8399212551692351Einvadjustment(integer, numeric, text, text, timestamp with time zone)FUNCTIONHCREATE FUNCTION invadjustment(integer, numeric, text, text, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN invAdjustment($1, $2, $3, $4, $5, NULL); END; $_$; \DROP FUNCTION public.invadjustment(integer, numeric, text, text, timestamp with time zone); publicadminfalse8399212551692352Ninvadjustment(integer, numeric, text, text, timestamp with time zone, numeric)FUNCTIONCREATE FUNCTION invadjustment(integer, numeric, text, text, timestamp with time zone, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pQty ALIAS FOR $2; pDocumentNumber ALIAS FOR $3; pComments ALIAS FOR $4; pGlDistTS ALIAS FOR $5; pCostValue ALIAS FOR $6; _invhistid INTEGER; _itemlocSeries INTEGER; BEGIN -- Make sure the passed itemsite points to a real item IF ( ( SELECT (item_type IN ('R', 'F') OR itemsite_costmethod = 'J') FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ) ) ) THEN RETURN 0; END IF; SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; SELECT postInvTrans( itemsite_id, 'AD', pQty, 'I/M', 'AD', pDocumentNumber, '', ('Miscellaneous Adjustment for item ' || item_number || E'\n' || pComments), costcat_asset_accnt_id, costcat_adjustment_accnt_id, _itemlocSeries, pGlDistTS, pCostValue) INTO _invhistid FROM itemsite, item, costcat WHERE ( (itemsite_item_id=item_id) AND (itemsite_costcat_id=costcat_id) AND (itemsite_id=pItemsiteid) ); RETURN _itemlocSeries; END; $_$; eDROP FUNCTION public.invadjustment(integer, numeric, text, text, timestamp with time zone, numeric); publicadminfalse8399212551692353Tinvexpense(integer, numeric, integer, text, text, timestamp with time zone, integer)FUNCTIONCREATE FUNCTION invexpense(pitemsiteid integer, pqty numeric, pexpcatid integer, pdocumentnumber text, pcomments text, pgldistts timestamp with time zone DEFAULT now(), pprjid integer DEFAULT NULL::integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _invhistid INTEGER; _itemlocSeries INTEGER; BEGIN -- Make sure the passed itemsite points to a real item IF ( ( SELECT (item_type IN ('R', 'F') OR itemsite_costmethod = 'J') FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ) ) ) THEN RETURN 0; END IF; SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; SELECT postInvTrans( itemsite_id, 'EX', pQty, 'I/M', 'EX', pDocumentNumber, '', CASE WHEN (pQty < 0) THEN ('Reverse Material Expense for item ' || item_number || E'\n' || pComments) ELSE ('Material Expense for item ' || item_number || E'\n' || pComments) END, getPrjAccntId(pPrjid, expcat_exp_accnt_id), costcat_asset_accnt_id, _itemlocSeries, pGlDistTS) INTO _invhistid FROM itemsite, item, costcat, expcat WHERE ( (itemsite_item_id=item_id) AND (itemsite_costcat_id=costcat_id) AND (itemsite_id=pItemsiteid) AND (expcat_id=pExpcatid) ); INSERT INTO invhistexpcat (invhistexpcat_invhist_id, invhistexpcat_expcat_id) VALUES (_invhistid, pExpcatid); RETURN _itemlocSeries; END; $$; DROP FUNCTION public.invexpense(pitemsiteid integer, pqty numeric, pexpcatid integer, pdocumentnumber text, pcomments text, pgldistts timestamp with time zone, pprjid integer); publicadminfalse8399212551692354invhistsense(integer)FUNCTIONCREATE FUNCTION invhistsense(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvhistId ALIAS FOR $1; _count INTEGER; _row RECORD; _sense INTEGER; BEGIN SELECT invhist_transtype, invhist_ordnumber, itemsite_warehous_id INTO _row FROM invhist JOIN itemsite ON (itemsite_id=invhist_itemsite_id) WHERE (invhist_id=pInvhistId); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count = 0) THEN RAISE EXCEPTION 'Record not found for invhist_id=%',pInvhistId; END IF; -- increase inventory: AD RM RT RP RR RS RX RB TR -- decrease inventory: IM IB IT SH SI EX RI -- TS and TR are special: shipShipment and recallShipment should not change -- QOH at the Transfer Order src whs (as this was done by issueToShipping) -- but postReceipt should change QOH at the transit whs IF (_row.invhist_transtype='TS') THEN _sense := CASE WHEN (SELECT tohead_trns_warehous_id=_row.itemsite_warehous_id FROM tohead WHERE (tohead_number=_row.invhist_ordnumber)) THEN -1 ELSE 0 END; ELSIF (_row.invhist_transtype='TR') THEN _sense := CASE WHEN (SELECT tohead_src_warehous_id=_row.itemsite_warehous_id FROM tohead WHERE (tohead_number=_row.invhist_ordnumber)) THEN 0 ELSE 1 END; ELSIF (_row.invhist_transtype IN ('IM', 'IB', 'IT', 'SH', 'SI', 'EX', 'RI')) THEN _sense := -1; ELSE _sense := 1; END IF; RETURN _sense; END; $_$; ,DROP FUNCTION public.invhistsense(integer); publicadminfalse8399212551692355 invhisttrig()FUNCTIONCREATE FUNCTION invhisttrig() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN -- Need to allow 'temporary' negative for average costed item that has been frozen. -- Check at itemsite after all of the transactions have been thawed will ensure -- that final Qty On Hand is positive. -- IF (NEW.invhist_qoh_after < 0 AND NEW.invhist_costmethod = 'A') THEN -- RAISE EXCEPTION 'Invhist (%) is recording with average costing and is not allowed to have a negative quantity on hand.', NEW.invhist_id; -- END IF; IF ( ( SELECT itemsite_freeze FROM itemsite WHERE (itemsite_id=NEW.invhist_itemsite_id) ) ) THEN NEW.invhist_posted = FALSE; END IF; -- never change the created timestamp, which defaults to CURRENT_TIMESTAMP IF (TG_OP != 'INSERT') THEN NEW.invhist_created = OLD.invhist_created; ELSE -- Always need a series id for distribution posting IF (NEW.invhist_series IS NULL) THEN RAISE EXCEPTION 'Column invhist_series may not be null.'; END IF; END IF; RETURN NEW; END; $$; $DROP FUNCTION public.invhisttrig(); publicadminfalse8399212551692356invoicetotal(integer)FUNCTION CREATE FUNCTION invoicetotal(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvoiceId ALIAS FOR $1; _linesum NUMERIC; _linetax NUMERIC; _result NUMERIC; _allocated NUMERIC; _posted BOOLEAN; BEGIN SELECT SUM(ROUND(COALESCE((invcitem_billed * invcitem_qty_invuomratio) * (invcitem_price / COALESCE(invcitem_price_invuomratio,1)), 0),2)) INTO _linesum FROM invcitem WHERE (invcitem_invchead_id=pInvoiceId); -- TODO: why sum on the result of select round(sum(), 2)? SELECT SUM(tax) INTO _linetax FROM (SELECT ROUND(SUM(COALESCE(taxdetail_tax, 0)),2) AS tax FROM tax JOIN calculateTaxDetailSummary('I', pInvoiceId, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id) AS data; SELECT noNeg(invchead_freight + invchead_misc_amount + COALESCE(_linetax, 0) + COALESCE(_linesum, 0)), invchead_posted INTO _result, _posted FROM invchead WHERE (invchead_id=pInvoiceId); IF NOT FOUND THEN RETURN 0; END IF; IF (_posted) THEN SELECT COALESCE(SUM(currToCurr(arapply_curr_id, aropen_curr_id, arapply_applied, aropen_docdate)),0) INTO _allocated FROM arapply, aropen, invchead WHERE ( (invchead_posted) AND (invchead_id=pInvoiceId) AND (aropen_docnumber=invchead_invcnumber) AND (aropen_doctype='I') AND (arapply_target_aropen_id=aropen_id) AND (arapply_reftype='S') AND (invchead_posted) ) ; ELSE SELECT COALESCE(SUM(CASE WHEN((aropen_amount - aropen_paid) >= currToCurr(aropenalloc_curr_id, aropen_curr_id, aropenalloc_amount, aropen_docdate)) THEN currToCurr(aropenalloc_curr_id, invchead_curr_id, aropenalloc_amount, aropen_docdate) ELSE currToCurr(aropen_curr_id, invchead_curr_id, aropen_amount - aropen_paid, aropen_docdate) END),0) INTO _allocated FROM invchead LEFT OUTER JOIN cohead ON (cohead_number=invchead_ordernumber) JOIN aropenalloc ON ((aropenalloc_doctype='I' AND aropenalloc_doc_id=invchead_id) OR (aropenalloc_doctype='S' AND aropenalloc_doc_id=cohead_id)) JOIN aropen ON (aropen_id=aropenalloc_aropen_id AND (aropen_amount - aropen_paid) > 0.0) WHERE ( (NOT invchead_posted) AND (invchead_id=pInvoiceId) ); END IF; RETURN _result - COALESCE(_allocated, 0); END; $_$; ,DROP FUNCTION public.invoicetotal(integer); publicadminfalse8399212551692357.invreceipt(integer, numeric, text, text, text)FUNCTIONACREATE FUNCTION invreceipt(integer, numeric, text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN invReceipt($1, $2, $3, $4, $5, CURRENT_TIMESTAMP, NULL); END; $_$; EDROP FUNCTION public.invreceipt(integer, numeric, text, text, text); publicadminfalse8399212551692358Hinvreceipt(integer, numeric, text, text, text, timestamp with time zone)FUNCTIONLCREATE FUNCTION invreceipt(integer, numeric, text, text, text, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN invReceipt($1, $2, $3, $4, $5, $6, NULL); END; $_$; _DROP FUNCTION public.invreceipt(integer, numeric, text, text, text, timestamp with time zone); publicadminfalse8399212551692359Qinvreceipt(integer, numeric, text, text, text, timestamp with time zone, numeric)FUNCTION|CREATE FUNCTION invreceipt(integer, numeric, text, text, text, timestamp with time zone, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pQty ALIAS FOR $2; pOrdernumber ALIAS FOR $3; pDocumentNumber ALIAS FOR $4; pComments ALIAS FOR $5; pGlDistTS ALIAS FOR $6; pCostValue ALIAS FOR $7; _invhistid INTEGER; _itemlocSeries INTEGER; BEGIN -- Make sure the passed itemsite points to a real item IF ( ( SELECT (item_type IN ('R', 'F') OR itemsite_costmethod = 'J') FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ) ) ) THEN RETURN 0; END IF; SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; SELECT postInvTrans( itemsite_id, 'RX', pQty, 'I/M', 'RX', pDocumentNumber, '', ('Miscellaneous Receipt for item ' || item_number || E'\n' || pComments), costcat_asset_accnt_id, costcat_liability_accnt_id, _itemlocSeries, pGlDistTS, pCostValue) INTO _invhistid FROM itemsite, item, costcat WHERE ( (itemsite_item_id=item_id) AND (itemsite_costcat_id=costcat_id) AND (itemsite_id=pItemsiteid) ); RETURN _itemlocSeries; END; $_$; hDROP FUNCTION public.invreceipt(integer, numeric, text, text, text, timestamp with time zone, numeric); publicadminfalse8399212551692360&invscrap(integer, numeric, text, text)FUNCTION-CREATE FUNCTION invscrap(integer, numeric, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN invScrap($1, $2, $3, $4, CURRENT_TIMESTAMP); END; $_$; =DROP FUNCTION public.invscrap(integer, numeric, text, text); publicadminfalse8399212551692361@invscrap(integer, numeric, text, text, timestamp with time zone)FUNCTION>CREATE FUNCTION invscrap(integer, numeric, text, text, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN invScrap($1, $2, $3, $4, $5, NULL); END; $_$; WDROP FUNCTION public.invscrap(integer, numeric, text, text, timestamp with time zone); publicadminfalse8399212551692362Iinvscrap(integer, numeric, text, text, timestamp with time zone, integer)FUNCTIONKCREATE FUNCTION invscrap(integer, numeric, text, text, timestamp with time zone, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN invScrap($1, $2, $3, $4, $5, $6, NULL); END; $_$; `DROP FUNCTION public.invscrap(integer, numeric, text, text, timestamp with time zone, integer); publicadminfalse8399212551692363Rinvscrap(integer, numeric, text, text, timestamp with time zone, integer, integer)FUNCTIONCREATE FUNCTION invscrap(integer, numeric, text, text, timestamp with time zone, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pQty ALIAS FOR $2; pDocumentNumber ALIAS FOR $3; pComments ALIAS FOR $4; pGlDistTS ALIAS FOR $5; pInvHistId ALIAS FOR $6; pPrjid ALIAS FOR $7; _invhistid INTEGER; _itemlocSeries INTEGER; BEGIN -- Make sure the passed itemsite points to a real item IF ( ( SELECT (item_type IN ('R', 'F') OR itemsite_costmethod = 'J') FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ) ) ) THEN RETURN 0; END IF; IF (pInvHistId IS NOT NULL) THEN SELECT invhist_series INTO _itemlocSeries FROM invhist WHERE invhist_id=pInvHistId; ELSE SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; END IF; SELECT postInvTrans( itemsite_id, 'SI', pQty, 'I/M', 'SI', pDocumentNumber, '', CASE WHEN (pQty < 0) THEN ('Reverse Material Scrap for item ' || item_number || E'\n' || pComments) ELSE ('Material Scrap for item ' || item_number || E'\n' || pComments) END, getPrjAccntId(pPrjid, costcat_scrap_accnt_id), costcat_asset_accnt_id, _itemlocSeries, pGlDistTS, NULL, pInvHistId) INTO _invhistid FROM itemsite, item, costcat WHERE ( (itemsite_item_id=item_id) AND (itemsite_costcat_id=costcat_id) AND (itemsite_id=pItemsiteid) ); RETURN _itemlocSeries; END; $_$; iDROP FUNCTION public.invscrap(integer, numeric, text, text, timestamp with time zone, integer, integer); publicadminfalse8399212551746768 isdba(text)FUNCTIONCREATE FUNCTION isdba(text DEFAULT NULL::text) RETURNS boolean LANGUAGE sql AS $_$ SELECT (datdba=pg_roles.oid OR rolsuper) AS issuper FROM pg_database, pg_roles WHERE ((datname=current_database()) AND (rolname=COALESCE($1, getEffectiveXtUser()))); $_$; "DROP FUNCTION public.isdba(text); publicadminfalse812551692364 ismulticurr()FUNCTION#CREATE FUNCTION ismulticurr() RETURNS boolean LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN (SELECT (count(*) > 1) FROM curr_symbol); END; $$; $DROP FUNCTION public.ismulticurr(); publicadminfalse8399212551692365isnumeric(text)FUNCTIONvCREATE FUNCTION isnumeric(text) RETURNS boolean LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pText ALIAS FOR $1; _cursor INTEGER; BEGIN IF ( (LENGTH(pText) = 0) OR (pText IS NULL) ) THEN RETURN FALSE; END IF; FOR _cursor IN 1..LENGTH(pText) LOOP IF (SUBSTRING(pText FROM _cursor FOR 1) NOT IN ( '0', '1', '2', '3', '4', '5' ,'6' ,'7' ,'8' ,'9' )) THEN RETURN FALSE; END IF; END LOOP; RETURN TRUE; END; $_$; &DROP FUNCTION public.isnumeric(text); publicadminfalse8399212551692366"issueallbalancetoshipping(integer)FUNCTION*CREATE FUNCTION issueallbalancetoshipping(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN issueAllBalanceToShipping('SO', $1, 0, NULL); END; $_$; 9DROP FUNCTION public.issueallbalancetoshipping(integer); publicadminfalse8399212551692367Kissueallbalancetoshipping(text, integer, integer, timestamp with time zone)FUNCTION1CREATE FUNCTION issueallbalancetoshipping(text, integer, integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; pheadid ALIAS FOR $2; _itemlocSeries INTEGER := $3; _timestamp TIMESTAMP WITH TIME ZONE := $4; _s RECORD; BEGIN IF (pordertype = 'SO') THEN FOR _s IN SELECT coitem_id, noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned - ( SELECT COALESCE(SUM(shipitem_qty), 0) FROM shipitem, shiphead WHERE ( (shipitem_orderitem_id=coitem_id) AND (shipitem_shiphead_id=shiphead_id) AND (NOT shiphead_shipped) AND (shiphead_order_type=pordertype) ) ) ) AS balance FROM coitem LEFT OUTER JOIN (itemsite JOIN item ON (itemsite_item_id=item_id)) ON (coitem_itemsite_id=itemsite_id) WHERE ( (coitem_status NOT IN ('C','X')) AND (item_type != 'K') AND (coitem_cohead_id=pheadid) ) LOOP IF (_s.balance <> 0) THEN _itemlocSeries := issueToShipping(pordertype, _s.coitem_id, _s.balance, _itemlocSeries, _timestamp); IF (_itemlocSeries < 0) THEN EXIT; END IF; END IF; END LOOP; ELSEIF (pordertype = 'TO') THEN FOR _s IN SELECT toitem_id, noNeg( toitem_qty_ordered - toitem_qty_shipped - ( SELECT COALESCE(SUM(shipitem_qty), 0) FROM shipitem, shiphead WHERE ( (shipitem_orderitem_id=toitem_id) AND (shipitem_shiphead_id=shiphead_id) AND (NOT shiphead_shipped) AND (shiphead_order_type=pordertype) ) ) ) AS balance FROM toitem WHERE ( (toitem_status NOT IN ('C','X')) AND (toitem_tohead_id=pheadid) ) LOOP IF (_s.balance <> 0) THEN _itemlocSeries := issueToShipping(pordertype, _s.toitem_id, _s.balance, _itemlocSeries, _timestamp); IF (_itemlocSeries < 0) THEN EXIT; END IF; END IF; END LOOP; ELSE RETURN -1; END IF; RETURN _itemlocSeries; END; $_$; bDROP FUNCTION public.issueallbalancetoshipping(text, integer, integer, timestamp with time zone); publicadminfalse8399212551692368#issuelinebalancetoshipping(integer)FUNCTION)CREATE FUNCTION issuelinebalancetoshipping(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN issueLineBalanceToShipping('SO', $1, NULL); END; $_$; :DROP FUNCTION public.issuelinebalancetoshipping(integer); publicadminfalse8399212551692369Cissuelinebalancetoshipping(text, integer, timestamp with time zone)FUNCTIONNCREATE FUNCTION issuelinebalancetoshipping(text, integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN issueLineBalanceToShipping($1, $2, $3, 0, NULL); END; $_$; ZDROP FUNCTION public.issuelinebalancetoshipping(text, integer, timestamp with time zone); publicadminfalse8399212551692370Uissuelinebalancetoshipping(text, integer, timestamp with time zone, integer, integer)FUNCTIONACREATE FUNCTION issuelinebalancetoshipping(text, integer, timestamp with time zone, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; pitemid ALIAS FOR $2; ptimestamp ALIAS FOR $3; pitemlocseries ALIAS FOR $4; pinvhistid ALIAS FOR $5; _itemlocSeries INTEGER := 0; _qty NUMERIC; BEGIN _itemlocSeries := COALESCE(pitemlocseries,0); IF (pordertype = 'SO') THEN SELECT noNeg( coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned - ( SELECT COALESCE(SUM(shipitem_qty), 0) FROM shipitem, shiphead WHERE ((shipitem_orderitem_id=coitem_id) AND (shipitem_shiphead_id=shiphead_id) AND (NOT shiphead_shipped) ) ) ) INTO _qty FROM coitem WHERE (coitem_id=pitemid); ELSEIF (pordertype = 'TO') THEN SELECT noNeg( toitem_qty_ordered - toitem_qty_shipped - ( SELECT COALESCE(SUM(shipitem_qty), 0) FROM shipitem, shiphead WHERE ( (shipitem_orderitem_id=toitem_id) AND (shipitem_shiphead_id=shiphead_id) AND (NOT shiphead_shipped) ) ) ) INTO _qty FROM toitem WHERE (toitem_id=pitemid); ELSE RETURN -1; END IF; IF (_qty > 0) THEN _itemlocSeries := issueToShipping(pordertype, pitemid, _qty, _itemlocSeries, ptimestamp, pinvhistid); END IF; RETURN _itemlocSeries; END; $_$; lDROP FUNCTION public.issuelinebalancetoshipping(text, integer, timestamp with time zone, integer, integer); publicadminfalse8399212551692371 issues(text)FUNCTIONcCREATE FUNCTION issues(text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTransType ALIAS FOR $1; BEGIN IF (pTransType IN ('IM', 'IB', 'IT')) THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END; $_$; #DROP FUNCTION public.issues(text); publicadminfalse8399212551692372!issuetoshipping(integer, numeric)FUNCTION0CREATE FUNCTION issuetoshipping(integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN issueToShipping('SO', $1, $2, 0, CURRENT_TIMESTAMP); END; $_$; 8DROP FUNCTION public.issuetoshipping(integer, numeric); publicadminfalse8399212551692373*issuetoshipping(integer, numeric, integer)FUNCTION:CREATE FUNCTION issuetoshipping(integer, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN issueToShipping('SO', $1, $2, $3, CURRENT_TIMESTAMP); END; $_$; ADROP FUNCTION public.issuetoshipping(integer, numeric, integer); publicadminfalse8399212551692374Jissuetoshipping(text, integer, numeric, integer, timestamp with time zone)FUNCTIONOCREATE FUNCTION issuetoshipping(text, integer, numeric, integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN issueToShipping($1, $2, $3, $4, $5, NULL); END; $_$; aDROP FUNCTION public.issuetoshipping(text, integer, numeric, integer, timestamp with time zone); publicadminfalse83992%12551692375Sissuetoshipping(text, integer, numeric, integer, timestamp with time zone, integer)FUNCTION"CREATE FUNCTION issuetoshipping(text, integer, numeric, integer, timestamp with time zone, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; pitemid ALIAS FOR $2; pQty ALIAS FOR $3; _itemlocSeries INTEGER := $4; _timestamp TIMESTAMP WITH TIME ZONE := $5; pinvhistid ALIAS FOR $6; _coholdtype TEXT; _invhistid INTEGER; _shipheadid INTEGER; _shipnumber INTEGER; _cntctid INTEGER; _p RECORD; _m RECORD; _value NUMERIC; _warehouseid INTEGER; _shipitemid INTEGER; _freight NUMERIC; BEGIN IF (_timestamp IS NULL) THEN _timestamp := CURRENT_TIMESTAMP; END IF; IF (_itemlocSeries = 0) THEN _itemlocSeries := NEXTVAL('itemloc_series_seq'); END IF; IF (pordertype = 'SO') THEN -- Check site security SELECT warehous_id INTO _warehouseid FROM coitem,itemsite,site() WHERE ((coitem_id=pitemid) AND (itemsite_id=coitem_itemsite_id) AND (warehous_id=itemsite_warehous_id)); IF (NOT FOUND) THEN RETURN 0; END IF; -- Check for average cost items going negative IF ( SELECT ( (itemsite_costmethod='A') AND ((itemsite_qtyonhand - round(pQty * coitem_qty_invuomratio, 6)) < 0.0) ) FROM coitem JOIN itemsite ON (itemsite_id=coitem_itemsite_id) WHERE (coitem_id=pitemid) ) THEN RETURN -20; END IF; -- Check auto registration IF ( SELECT COALESCE(itemsite_autoreg, FALSE) FROM coitem JOIN itemsite ON (itemsite_id=coitem_itemsite_id) WHERE (coitem_id=pitemid) ) THEN SELECT COALESCE(crmacct_cntct_id_1, -1) INTO _cntctid FROM coitem JOIN cohead ON (cohead_id=coitem_cohead_id) JOIN crmacct ON (crmacct_cust_id=cohead_cust_id) WHERE (coitem_id=pitemid); IF (_cntctid = -1) THEN RETURN -15; END IF; END IF; SELECT shiphead_id INTO _shipheadid FROM shiphead, coitem WHERE ((shiphead_order_id=coitem_cohead_id) AND (NOT shiphead_shipped) AND (coitem_id=pitemid) AND (shiphead_order_type=pordertype)); IF (NOT FOUND) THEN SELECT NEXTVAL('shiphead_shiphead_id_seq') INTO _shipheadid; _shipnumber := fetchShipmentNumber(); IF (_shipnumber < 0) THEN RETURN -10; END IF; SELECT cohead_holdtype INTO _coholdtype FROM cohead, coitem WHERE ((cohead_id=coitem_cohead_id) AND (coitem_id=pitemid)); IF (_coholdtype = 'C') THEN RETURN -12; ELSIF (_coholdtype = 'P') THEN RETURN -13; ELSIF (_coholdtype = 'R') THEN RETURN -14; END IF; INSERT INTO shiphead ( shiphead_id, shiphead_number, shiphead_order_id, shiphead_order_type, shiphead_shipped, shiphead_sfstatus, shiphead_shipvia, shiphead_shipchrg_id, shiphead_freight, shiphead_freight_curr_id, shiphead_shipdate, shiphead_notes, shiphead_shipform_id ) SELECT _shipheadid, _shipnumber, coitem_cohead_id, pordertype, FALSE, 'N', cohead_shipvia, CASE WHEN (cohead_shipchrg_id <= 0) THEN NULL ELSE cohead_shipchrg_id END, cohead_freight, cohead_curr_id, _timestamp::DATE, cohead_shipcomments, CASE WHEN cohead_shipform_id = -1 THEN NULL ELSE cohead_shipform_id END FROM cohead, coitem WHERE ((coitem_cohead_id=cohead_id) AND (coitem_id=pitemid) ); UPDATE pack SET pack_shiphead_id = _shipheadid, pack_printed = FALSE FROM coitem WHERE ((pack_head_id=coitem_cohead_id) AND (pack_shiphead_id IS NULL) AND (pack_head_type='SO') AND (coitem_id=pitemid)); ELSE UPDATE pack SET pack_printed = FALSE FROM coitem WHERE ((pack_head_id=coitem_cohead_id) AND (pack_shiphead_id=_shipheadid) AND (pack_head_type='SO') AND (coitem_id=pitemid)); END IF; -- Handle g/l transaction SELECT postInvTrans( itemsite_id, 'SH', (pQty * coitem_qty_invuomratio), 'S/R', porderType, formatSoNumber(coitem_id), shiphead_number, ('Issue ' || item_number || ' to Shipping for customer ' || cohead_billtoname), getPrjAccntId(cohead_prj_id, costcat_shipasset_accnt_id), costcat_asset_accnt_id, _itemlocSeries, _timestamp, NULL, pinvhistid ) INTO _invhistid FROM coitem, cohead, itemsite, item, costcat, shiphead WHERE ( (coitem_cohead_id=cohead_id) AND (coitem_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (itemsite_costcat_id=costcat_id) AND (coitem_id=pitemid) AND (shiphead_id=_shipheadid) ); SELECT (invhist_unitcost * invhist_invqty) INTO _value FROM invhist WHERE (invhist_id=_invhistid); _shipitemid := nextval('shipitem_shipitem_id_seq'); INSERT INTO shipitem ( shipitem_id, shipitem_shiphead_id, shipitem_orderitem_id, shipitem_qty, shipitem_transdate, shipitem_trans_username, shipitem_invoiced, shipitem_value, shipitem_invhist_id ) VALUES ( _shipitemid, _shipheadid, pitemid, pQty, _timestamp, getEffectiveXtUser(), FALSE, _value, CASE WHEN _invhistid = -1 THEN NULL ELSE _invhistid END ); -- Handle reservation IF (fetchmetricbool('EnableSOReservations')) THEN -- Remember what was reserved so we can re-reserve if this issue is returned INSERT INTO shipitemrsrv (shipitemrsrv_shipitem_id, shipitemrsrv_qty) SELECT _shipitemid, least(pQty,coitem_qtyreserved) FROM coitem WHERE ((coitem_id=pitemid) AND (coitem_qtyreserved > 0)); -- Update sales order UPDATE coitem SET coitem_qtyreserved = noNeg(coitem_qtyreserved - pQty) WHERE(coitem_id=pitemid); END IF; -- Calculate shipment freight SELECT calcShipFreight(_shipheadid) INTO _freight; UPDATE shiphead SET shiphead_freight=_freight WHERE (shiphead_id=_shipheadid); ELSEIF (pordertype = 'TO') THEN -- Check site security IF (fetchMetricBool('MultiWhs')) THEN SELECT warehous_id INTO _warehouseid FROM toitem, tohead, site() WHERE ( (toitem_id=pitemid) AND (tohead_id=toitem_tohead_id) AND (warehous_id=tohead_src_warehous_id) ); IF (NOT FOUND) THEN RETURN 0; END IF; END IF; SELECT postInvTrans( itemsite_id, 'SH', pQty, 'S/R', pordertype, formatToNumber(toitem_id), '', 'Issue to Shipping', costcat_shipasset_accnt_id, costcat_asset_accnt_id, _itemlocSeries, _timestamp) INTO _invhistid FROM tohead, toitem, itemsite, costcat WHERE ((tohead_id=toitem_tohead_id) AND (itemsite_item_id=toitem_item_id) AND (itemsite_warehous_id=tohead_src_warehous_id) AND (itemsite_costcat_id=costcat_id) AND (toitem_id=pitemid) ); SELECT shiphead_id INTO _shipheadid FROM shiphead, toitem WHERE ((shiphead_order_id=toitem_tohead_id) AND (NOT shiphead_shipped) AND (toitem_id=pitemid) AND (shiphead_order_type=pordertype)); IF (NOT FOUND) THEN _shipheadid := NEXTVAL('shiphead_shiphead_id_seq'); _shipnumber := fetchShipmentNumber(); IF (_shipnumber < 0) THEN RETURN -10; END IF; INSERT INTO shiphead ( shiphead_id, shiphead_number, shiphead_order_id, shiphead_order_type, shiphead_shipped, shiphead_sfstatus, shiphead_shipvia, shiphead_shipchrg_id, shiphead_freight, shiphead_freight_curr_id, shiphead_shipdate, shiphead_notes, shiphead_shipform_id ) SELECT _shipheadid, _shipnumber, tohead_id, pordertype, FALSE, 'N', tohead_shipvia, tohead_shipchrg_id, tohead_freight + SUM(toitem_freight), tohead_freight_curr_id, _timestamp::DATE, tohead_shipcomments, tohead_shipform_id FROM tohead, toitem WHERE ((toitem_tohead_id=tohead_id) AND (tohead_id IN (SELECT toitem_tohead_id FROM toitem WHERE (toitem_id=pitemid))) ) GROUP BY tohead_id, tohead_shipvia, tohead_shipchrg_id, tohead_freight, tohead_freight_curr_id, tohead_shipcomments, tohead_shipform_id; END IF; INSERT INTO shipitem ( shipitem_shiphead_id, shipitem_orderitem_id, shipitem_qty, shipitem_transdate, shipitem_trans_username, shipitem_value, shipitem_invhist_id ) SELECT _shipheadid, pitemid, pQty, _timestamp, getEffectiveXtUser(), invhist_invqty * invhist_unitcost, _invhistid FROM toitem, item, invhist WHERE ((toitem_id=pitemid) AND (item_id=toitem_item_id) AND (invhist_id=_invhistid)); ELSE RETURN -11; END IF; RETURN _itemlocSeries; END; $_$; jDROP FUNCTION public.issuetoshipping(text, integer, numeric, integer, timestamp with time zone, integer); publicadminfalse83992K125516923773issuewomaterial(integer, numeric, integer, boolean)FUNCTIONCREATE FUNCTION issuewomaterial(integer, numeric, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; pItemlocSeries ALIAS FOR $3; pMarkPush ALIAS FOR $4; _itemlocSeries INTEGER; BEGIN RETURN issueWoMaterial(pWomatlid, pQty, pItemlocSeries,now()); END; $_$; JDROP FUNCTION public.issuewomaterial(integer, numeric, integer, boolean); publicadminfalse8399212551692378*issuewomaterial(integer, numeric, integer)FUNCTIONCREATE FUNCTION issuewomaterial(integer, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; pItemlocSeries ALIAS FOR $3; _p RECORD; _invhistid INTEGER; _itemlocSeries INTEGER; BEGIN RETURN issueWoMaterial(pWomatlid, pQty, pItemlocSeries, now()); END; $_$; ADROP FUNCTION public.issuewomaterial(integer, numeric, integer); publicadminfalse8399212551692379*issuewomaterial(integer, numeric, boolean)FUNCTIONCREATE FUNCTION issuewomaterial(integer, numeric, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; pMarkPush ALIAS FOR $3; _itemlocSeries INTEGER; BEGIN RETURN issueWoMaterial(pWomatlid, pQty, pMarkPush, now()); END; $_$; ADROP FUNCTION public.issuewomaterial(integer, numeric, boolean); publicadminfalse8399212551692380!issuewomaterial(integer, numeric)FUNCTIONCREATE FUNCTION issuewomaterial(integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; _itemlocSeries INTEGER; BEGIN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; RETURN issueWoMaterial(pWomatlid, pQty, _itemlocSeries); END; $_$; 8DROP FUNCTION public.issuewomaterial(integer, numeric); publicadminfalse8399212551692381Missuewomaterial(integer, numeric, integer, boolean, timestamp with time zone)FUNCTIONCREATE FUNCTION issuewomaterial(integer, numeric, integer, boolean, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; pItemlocSeries ALIAS FOR $3; pMarkPush ALIAS FOR $4; pGlDistTS ALIAS FOR $5; _itemlocSeries INTEGER; BEGIN SELECT issueWoMaterial(pWomatlid, pQty, pItemlocSeries, pGlDistTS) INTO _itemlocSeries; IF (pMarkPush) THEN UPDATE womatl SET womatl_issuemethod='S' WHERE ((womatl_issuemethod='M') AND (womatl_id=pWomatlid)); END IF; RETURN _itemlocSeries; END; $_$; dDROP FUNCTION public.issuewomaterial(integer, numeric, integer, boolean, timestamp with time zone); publicadminfalse8399212551692382Dissuewomaterial(integer, numeric, integer, timestamp with time zone)FUNCTIONECREATE FUNCTION issuewomaterial(integer, numeric, integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN issueWoMaterial($1, $2, $3, $4, NULL); END; $_$; [DROP FUNCTION public.issuewomaterial(integer, numeric, integer, timestamp with time zone); publicadminfalse8399212551692383Dissuewomaterial(integer, numeric, boolean, timestamp with time zone)FUNCTIONCREATE FUNCTION issuewomaterial(integer, numeric, boolean, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; pMarkPush ALIAS FOR $3; pGlDistTS ALIAS FOR $4; _itemlocSeries INTEGER; BEGIN SELECT issueWoMaterial(pWomatlid, pQty, 0, pGlDistTS) INTO _itemlocSeries; IF (_itemlocSeries < 0) THEN RETURN _itemlocSeries; END IF; IF (pMarkPush) THEN UPDATE womatl SET womatl_issuemethod='S' WHERE ((womatl_issuemethod='M') AND (womatl_id=pWomatlid)); END IF; RETURN _itemlocSeries; END; $_$; [DROP FUNCTION public.issuewomaterial(integer, numeric, boolean, timestamp with time zone); publicadminfalse8399212551692384Missuewomaterial(integer, numeric, integer, timestamp with time zone, integer)FUNCTIONs CREATE FUNCTION issuewomaterial(integer, numeric, integer, timestamp with time zone, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; pItemlocSeries ALIAS FOR $3; pGlDistTS ALIAS FOR $4; pInvhistid ALIAS FOR $5; _p RECORD; _invhistid INTEGER; _itemlocSeries INTEGER; BEGIN SELECT item_id, itemsite_id AS c_itemsite_id, wo_itemsite_id AS p_itemsite_id, itemsite_loccntrl, itemsite_controlmethod, womatl_wo_id, womatl_qtyreq, itemsite_item_id, womatl_uom_id, wo_prj_id, roundQty(item_fractional, itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, pQty)) AS qty, formatWoNumber(wo_id) AS woNumber, CASE WHEN(itemsite_costmethod='J' AND item_type='P' AND poitem_id IS NOT NULL) THEN poitem_unitprice WHEN(itemsite_costmethod IN ('A','J')) THEN avgcost(itemsite_id) WHEN(itemsite_costmethod='S') THEN stdcost(itemsite_item_id) ELSE 0.0 END AS cost, womatl_issuemethod AS issueMethod INTO _p FROM womatl JOIN wo ON (wo_id=womatl_wo_id) JOIN itemsite ON (itemsite_id=womatl_itemsite_id) JOIN item ON (item_id=itemsite_item_id) LEFT OUTER JOIN poitem ON (poitem_order_id=womatl_id AND poitem_order_type='W') WHERE (womatl_id=pWomatlid); IF (pQty < 0) THEN RETURN pItemlocSeries; END IF; IF (pItemlocSeries <> 0) THEN _itemlocSeries := pItemlocSeries; ELSE SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; END IF; SELECT postInvTrans( ci.itemsite_id, 'IM', _p.qty, 'W/O', 'WO', _p.woNumber, '', ('Material ' || item_number || ' Issue to Work Order'), getPrjAccntId(_p.wo_prj_id, pc.costcat_wip_accnt_id), cc.costcat_asset_accnt_id, _itemlocSeries, pGlDistTS, NULL, pInvhistid ) INTO _invhistid FROM itemsite AS ci, itemsite AS pi, costcat AS cc, costcat AS pc, item WHERE ( (ci.itemsite_costcat_id=cc.costcat_id) AND (pi.itemsite_costcat_id=pc.costcat_id) AND (ci.itemsite_id=_p.c_itemsite_id) AND (pi.itemsite_id=_p.p_itemsite_id) AND (ci.itemsite_item_id=item_id) ); -- Create linkage to the transaction created IF (_invhistid != -1) THEN INSERT INTO womatlpost (womatlpost_womatl_id,womatlpost_invhist_id) VALUES (pWomatlid,_invhistid); END IF; -- Increase the parent W/O's WIP value by the value of the issued components UPDATE wo SET wo_wipvalue = (wo_wipvalue + (_p.cost * _p.qty)), wo_postedvalue = (wo_postedvalue + (_p.cost * _p.qty)) WHERE (wo_id=_p.womatl_wo_id); UPDATE womatl SET womatl_qtyiss = (womatl_qtyiss + itemuomtouom(_p.itemsite_item_id, NULL, _p.womatl_uom_id, _p.qty)), womatl_lastissue = pGlDistTS::DATE WHERE (womatl_id=pWomatlid); UPDATE wo SET wo_status='I' WHERE ( (wo_status <> 'I') AND (wo_id=_p.womatl_wo_id) ); RETURN _itemlocSeries; END; $_$; dDROP FUNCTION public.issuewomaterial(integer, numeric, integer, timestamp with time zone, integer); publicadminfalse8399212551692385issuewomaterialbatch(integer)FUNCTIONkCREATE FUNCTION issuewomaterialbatch(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; _itemlocSeries INTEGER; _r RECORD; _woNumber TEXT; BEGIN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; FOR _r IN SELECT womatl_id, CASE WHEN (womatl_qtyreq >= 0) THEN roundQty(itemuomfractionalbyuom(item_id, womatl_uom_id), noNeg(womatl_qtyreq - womatl_qtyiss)) ELSE roundQty(itemuomfractionalbyuom(item_id, womatl_uom_id), noNeg(womatl_qtyiss * -1)) END AS qty FROM womatl, itemsite, item WHERE ( (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (womatl_issuemethod IN ('S', 'M')) AND (womatl_wo_id=pWoid) ) LOOP IF (_r.qty > 0) THEN SELECT issueWoMaterial(_r.womatl_id, _r.qty, _itemlocSeries, TRUE) INTO _itemlocSeries; END IF; END LOOP; RETURN _itemlocSeries; END; $_$; 4DROP FUNCTION public.issuewomaterialbatch(integer); publicadminfalse8399212551692386itemaltcapinvrat(integer)FUNCTIONGCREATE FUNCTION itemaltcapinvrat(integer) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; BEGIN RETURN itemUOMRatioByType(pItemid, 'AltCapacity'); END; $_$; 0DROP FUNCTION public.itemaltcapinvrat(integer); publicadminfalse8399212551692387itemaltcapuom(integer)FUNCTION<CREATE FUNCTION itemaltcapuom(integer) RETURNS text LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; BEGIN RETURN itemUOMByType(pItemid, 'AltCapacity'); END; $_$; -DROP FUNCTION public.itemaltcapuom(integer); publicadminfalse83992z12551692388itemcapinvrat(integer)FUNCTIONACREATE FUNCTION itemcapinvrat(integer) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; BEGIN RETURN itemUOMRatioByType(pItemid, 'Capacity'); END; $_$; -DROP FUNCTION public.itemcapinvrat(integer); publicadminfalse8399212551692389itemcapuom(integer)FUNCTION6CREATE FUNCTION itemcapuom(integer) RETURNS text LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; BEGIN RETURN itemUOMByType(pItemid, 'Capacity'); END; $_$; *DROP FUNCTION public.itemcapuom(integer); publicadminfalse8399212551692390Oitemcharprice(integer, integer, text, integer, integer, numeric, integer, date)FUNCTIONcCREATE FUNCTION itemcharprice(integer, integer, text, integer, integer, numeric, integer, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCharid ALIAS FOR $2; pCharValue ALIAS FOR $3; pCustid ALIAS FOR $4; pShiptoid ALIAS FOR $5; pQty ALIAS FOR $6; pCurrid ALIAS FOR $7; pEffective ALIAS FOR $8; BEGIN RETURN itemCharPrice(pItemid, pCharid, pCharValue, pCustid, pShiptoid, pQty, pCurrid, CURRENT_DATE, CURRENT_DATE); END; $_$; fDROP FUNCTION public.itemcharprice(integer, integer, text, integer, integer, numeric, integer, date); publicadminfalse83992125516923917itemcharprice(integer, integer, text, integer, numeric)FUNCTIONCREATE FUNCTION itemcharprice(integer, integer, text, integer, numeric) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCharid ALIAS FOR $2; pCharValue ALIAS FOR $3; pCustid ALIAS FOR $4; pQty ALIAS FOR $5; BEGIN RETURN itemCharPrice(pItemid, pCharid, pCharValue, pCustid, -1, pQty, baseCurrId(), CURRENT_DATE); END; $_$; NDROP FUNCTION public.itemcharprice(integer, integer, text, integer, numeric); publicadminfalse8399212551692392@itemcharprice(integer, integer, text, integer, integer, numeric)FUNCTIONCREATE FUNCTION itemcharprice(integer, integer, text, integer, integer, numeric) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCharid ALIAS FOR $2; pCharValue ALIAS FOR $3; pCustid ALIAS FOR $4; pShiptoid ALIAS FOR $5; pQty ALIAS FOR $6; BEGIN RETURN itemCharPrice(pItemid, pCharid, pCharValue, pCustid, pShiptoid, pQty, baseCurrId(), CURRENT_DATE); END; $_$; WDROP FUNCTION public.itemcharprice(integer, integer, text, integer, integer, numeric); publicadminfalse8399212551692393Iitemcharprice(integer, integer, text, integer, integer, numeric, integer)FUNCTION4CREATE FUNCTION itemcharprice(integer, integer, text, integer, integer, numeric, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCharid ALIAS FOR $2; pCharValue ALIAS FOR $3; pCustid ALIAS FOR $4; pShiptoid ALIAS FOR $5; pQty ALIAS FOR $6; pCurrid ALIAS FOR $7; BEGIN RETURN itemCharPrice(pItemid, pCharid, pCharValue, pCustid, pShiptoid, pQty, pCurrid, CURRENT_DATE); END; $_$; `DROP FUNCTION public.itemcharprice(integer, integer, text, integer, integer, numeric, integer); publicadminfalse8399212551692394Uitemcharprice(integer, integer, text, integer, integer, numeric, integer, date, date)FUNCTIONr"CREATE FUNCTION itemcharprice(integer, integer, text, integer, integer, numeric, integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCharid ALIAS FOR $2; pCharValue ALIAS FOR $3; pCustid ALIAS FOR $4; pShiptoid ALIAS FOR $5; pQty ALIAS FOR $6; pCurrid ALIAS FOR $7; pEffective ALIAS FOR $8; pAsOf ALIAS FOR $9; _price NUMERIC; _sales NUMERIC; _item RECORD; _iteminvpricerat NUMERIC; BEGIN -- If the charass_value passed in is NULL, we can skip this function IF (pCharValue IS NULL) THEN RETURN 0; END IF; -- Return the itemCharPrice in the currency passed in as pCurrid -- Get a value here so we do not have to call the function several times SELECT iteminvpricerat(pItemid) INTO _iteminvpricerat; -- First get a sales price if any so we when we find other prices -- we can determine if we want that price or this price. -- Check for a Sale Price SELECT currToCurr(ipshead_curr_id, pCurrid, ipsprice_price - (ipsprice_price * cust_discntprcnt), pEffective) INTO _sales FROM ( SELECT ipsitem_ipshead_id AS ipsprice_ipshead_id, itemuomtouom(ipsitem_item_id, ipsitem_qty_uom_id, NULL, ipsitem_qtybreak) AS ipsprice_qtybreak, (ipsitemchar_price * itemuomtouomratio(ipsitem_item_id, NULL, ipsitem_price_uom_id)) * _iteminvpricerat AS ipsprice_price FROM ipsiteminfo,ipsitemchar WHERE((ipsitem_item_id=pItemid) AND (ipsitemchar_char_id=pCharid) AND (ipsitemchar_value=pCharValue) AND (ipsitemchar_ipsitem_id=ipsitem_id)) ) AS ipsprice, ipshead, sale, custinfo WHERE ( (ipsprice_ipshead_id=ipshead_id) AND (sale_ipshead_id=ipshead_id) AND (pAsOf BETWEEN sale_startdate AND sale_enddate) AND (ipsprice_qtybreak <= pQty) AND (cust_id=pCustid) ) ORDER BY ipsprice_qtybreak DESC, ipsprice_price ASC LIMIT 1; -- Check for a Customer Shipto Price SELECT currToCurr(ipshead_curr_id, pCurrid, ipsprice_price, pEffective) INTO _price FROM ( SELECT ipsitem_ipshead_id AS ipsprice_ipshead_id, itemuomtouom(ipsitem_item_id, ipsitem_qty_uom_id, NULL, ipsitem_qtybreak) AS ipsprice_qtybreak, (ipsitemchar_price * itemuomtouomratio(ipsitem_item_id, NULL, ipsitem_price_uom_id)) * _iteminvpricerat AS ipsprice_price FROM ipsiteminfo,ipsitemchar WHERE ((ipsitem_item_id=pItemid) AND (ipsitemchar_char_id=pCharid) AND (ipsitemchar_value=pCharValue) AND (ipsitemchar_ipsitem_id=ipsitem_id)) ) AS ipsprice, ipshead, ipsass WHERE ( (ipsprice_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsprice_qtybreak <= pQty) AND (ipsass_shipto_id != -1) AND (ipsass_shipto_id=pShiptoid) ) ORDER BY ipsprice_qtybreak DESC, ipsprice_price ASC LIMIT 1; IF (_price IS NOT NULL) THEN IF ((_sales IS NOT NULL) AND (_sales < _price)) THEN RETURN _sales; END IF; RETURN _price; END IF; -- Check for a Customer Shipto Pattern Price SELECT currToCurr(ipshead_curr_id, pCurrid, ipsprice_price, pEffective) INTO _price FROM ( SELECT ipsitem_ipshead_id AS ipsprice_ipshead_id, itemuomtouom(ipsitem_item_id, ipsitem_qty_uom_id, NULL, ipsitem_qtybreak) AS ipsprice_qtybreak, (ipsitemchar_price * itemuomtouomratio(ipsitem_item_id, NULL, ipsitem_price_uom_id)) * _iteminvpricerat AS ipsprice_price FROM ipsiteminfo,ipsitemchar WHERE ((ipsitem_item_id=pItemid) AND (ipsitemchar_char_id=pCharid) AND (ipsitemchar_value=pCharValue) AND (ipsitemchar_ipsitem_id=ipsitem_id)) ) AS ipsprice, ipshead, ipsass, shiptoinfo WHERE ( (ipsprice_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsprice_qtybreak <= pQty) AND (COALESCE(length(ipsass_shipto_pattern), 0) > 0) AND (shipto_num ~ ipsass_shipto_pattern) AND (ipsass_cust_id=pCustid) AND (shipto_id=pShiptoid) ) ORDER BY ipsprice_qtybreak DESC, ipsprice_price ASC LIMIT 1; IF (_price IS NOT NULL) THEN IF ((_sales IS NOT NULL) AND (_sales < _price)) THEN RETURN _sales; END IF; RETURN _price; END IF; -- Check for a Customer Price SELECT currToCurr(ipshead_curr_id, pCurrid, ipsprice_price, pEffective) INTO _price FROM ( SELECT ipsitem_ipshead_id AS ipsprice_ipshead_id, itemuomtouom(ipsitem_item_id, ipsitem_qty_uom_id, NULL, ipsitem_qtybreak) AS ipsprice_qtybreak, (ipsitemchar_price * itemuomtouomratio(ipsitem_item_id, NULL, ipsitem_price_uom_id)) * _iteminvpricerat AS ipsprice_price FROM ipsiteminfo,ipsitemchar WHERE ((ipsitem_item_id=pItemid) AND (ipsitemchar_char_id=pCharid) AND (ipsitemchar_value=pCharValue) AND (ipsitemchar_ipsitem_id=ipsitem_id)) ) AS ipsprice, ipshead, ipsass WHERE ( (ipsprice_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsprice_qtybreak <= pQty) AND (COALESCE(length(ipsass_shipto_pattern), 0) = 0) AND (ipsass_cust_id=pCustid) ) ORDER BY ipsprice_qtybreak DESC, ipsprice_price ASC LIMIT 1; IF (_price IS NOT NULL) THEN IF ((_sales IS NOT NULL) AND (_sales < _price)) THEN RETURN _sales; END IF; RETURN _price; END IF; -- Check for a Customer Type Price SELECT currToCurr(ipshead_curr_id, pCurrid, ipsprice_price, pEffective) INTO _price FROM ( SELECT ipsitem_ipshead_id AS ipsprice_ipshead_id, itemuomtouom(ipsitem_item_id, ipsitem_qty_uom_id, NULL, ipsitem_qtybreak) AS ipsprice_qtybreak, (ipsitemchar_price * itemuomtouomratio(ipsitem_item_id, NULL, ipsitem_price_uom_id)) * _iteminvpricerat AS ipsprice_price FROM ipsiteminfo,ipsitemchar WHERE((ipsitem_item_id=pItemid) AND (ipsitemchar_char_id=pCharid) AND (ipsitemchar_value=pCharValue) AND (ipsitemchar_ipsitem_id=ipsitem_id)) ) AS ipsprice, ipshead, ipsass, custinfo WHERE ( (ipsprice_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (ipsass_custtype_id=cust_custtype_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsprice_qtybreak <= pQty) AND (cust_id=pCustid) ) ORDER BY ipsprice_qtybreak DESC, ipsprice_price ASC LIMIT 1; IF (_price IS NOT NULL) THEN IF ((_sales IS NOT NULL) AND (_sales < _price)) THEN RETURN _sales; END IF; RETURN _price; END IF; -- Check for a Customer Type Pattern Price SELECT currToCurr(ipshead_curr_id, pCurrid, ipsprice_price, pEffective) INTO _price FROM ( SELECT ipsitem_ipshead_id AS ipsprice_ipshead_id, itemuomtouom(ipsitem_item_id, ipsitem_qty_uom_id, NULL, ipsitem_qtybreak) AS ipsprice_qtybreak, (ipsitemchar_price * itemuomtouomratio(ipsitem_item_id, NULL, ipsitem_price_uom_id)) * _iteminvpricerat AS ipsprice_price FROM ipsiteminfo,ipsitemchar WHERE ((ipsitem_item_id=pItemid) AND (ipsitemchar_char_id=pCharid) AND (ipsitemchar_value=pCharValue) AND (ipsitemchar_ipsitem_id=ipsitem_id)) ) AS ipsprice, ipshead, ipsass, custtype, custinfo WHERE ( (ipsprice_ipshead_id=ipshead_id) AND (ipsass_ipshead_id=ipshead_id) AND (coalesce(length(ipsass_custtype_pattern), 0) > 0) AND (custtype_code ~ ipsass_custtype_pattern) AND (cust_custtype_id=custtype_id) AND (pAsOf BETWEEN ipshead_effective AND (ipshead_expires - 1)) AND (ipsprice_qtybreak <= pQty) AND (cust_id=pCustid) ) ORDER BY ipsprice_qtybreak DESC, ipsprice_price ASC LIMIT 1; IF (_price IS NOT NULL) THEN IF ((_sales IS NOT NULL) AND (_sales < _price)) THEN RETURN _sales; END IF; RETURN _price; END IF; -- If we have not found another price yet and we have a -- sales price we will use that. IF (_sales IS NOT NULL) THEN RETURN _sales; END IF; -- Check for a list price SELECT MIN(currToLocal(pCurrid, charass_price - (charass_price * COALESCE(cust_discntprcnt, 0)), pEffective)) AS price, item_exclusive INTO _item FROM charass,item LEFT OUTER JOIN custinfo ON (cust_id=pCustid) WHERE ((item_id=pItemid) AND (charass_char_id=pCharid) AND (charass_value=pCharValue) AND (charass_target_type='I') AND (charass_target_id=item_id)) GROUP BY item_exclusive; IF (FOUND) THEN IF (NOT _item.item_exclusive) THEN IF (_item.price < 0) THEN RETURN 0; ELSE RETURN _item.price; END IF; ELSE RETURN 0; END IF; ELSE RETURN 0; END IF; END; $_$; lDROP FUNCTION public.itemcharprice(integer, integer, text, integer, integer, numeric, integer, date, date); publicadminfalse8399212551692395itemcharvalue(integer, text)FUNCTION9CREATE FUNCTION itemcharvalue(integer, text) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCharName ALIAS FOR $2; _value TEXT; BEGIN SELECT charass_value INTO _value FROM charass, char WHERE ( (charass_char_id=char_id) AND (charass_target_type='I') AND (charass_target_id=pItemid) AND (char_name=pCharName) ); IF (NOT FOUND) THEN _value = ''; END IF; RETURN _value; END; $_$; 3DROP FUNCTION public.itemcharvalue(integer, text); publicadminfalse8399212551692396itemcost(integer)FUNCTIONCREATE FUNCTION itemcost(integer) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; _cost NUMERIC; BEGIN SELECT CASE WHEN (itemsite_costmethod='A' AND itemsite_qtyonhand != 0.0) THEN (itemsite_value / itemsite_qtyonhand) WHEN (itemsite_costmethod='A' AND itemsite_qtyonhand = 0.0) THEN 0.0 WHEN (itemsite_costmethod='N') THEN 0.0 ELSE stdCost(itemsite_item_id) END INTO _cost FROM itemsite WHERE(itemsite_id=pItemsiteid); RETURN _cost; END; $_$; (DROP FUNCTION public.itemcost(integer); publicadminfalse8399212551692397iteminventoryuominuse(integer)FUNCTION CREATE FUNCTION iteminventoryuominuse(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; _uomid INTEGER; _result INTEGER; BEGIN SELECT item_inv_uom_id INTO _uomid FROM item WHERE(item_id=pItemid); SELECT itemuomconv_id INTO _result FROM itemuomconv WHERE(itemuomconv_item_id=pItemid) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; SELECT itemsite_id INTO _result FROM itemsite WHERE ( (itemsite_item_id=pItemid) AND ((itemsite_qtyonhand <> 0) OR (itemsite_nnqoh <> 0)) ) LIMIT 1; IF (FOUND) THEN RETURN TRUE; END IF; RETURN FALSE; END; $_$; 5DROP FUNCTION public.iteminventoryuominuse(integer); publicadminfalse8399212551692398iteminvpricerat(integer)FUNCTION CREATE FUNCTION iteminvpricerat(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; _fromUomid INTEGER; _toUomid INTEGER; _ratio NUMERIC; BEGIN IF(pItemid IS NULL) THEN RETURN 1.0; END IF; SELECT item_inv_uom_id, item_price_uom_id INTO _fromUomid, _toUomid FROM item WHERE(item_id=pItemid); IF(NOT FOUND) THEN RAISE EXCEPTION 'No item record found for item_id %', pItemid; END IF; IF(_fromUomid = _toUomid) THEN RETURN 1.0; END IF; -- Return the ration as inventory / price SELECT CASE WHEN(itemuomconv_from_uom_id=_fromUomid) THEN itemuomconv_from_value / itemuomconv_to_value ELSE itemuomconv_to_value / itemuomconv_from_value END INTO _ratio FROM itemuomconv WHERE((((itemuomconv_from_uom_id=_fromUomid) AND (itemuomconv_to_uom_id=_toUomid)) OR ((itemuomconv_from_uom_id=_toUomid) AND (itemuomconv_to_uom_id=_fromUomid))) AND (itemuomconv_item_id=pItemid)); IF(NOT FOUND) THEN RAISE EXCEPTION 'No itemuomconv record found for item_id % to item_price_uomid %', pItemid, _toUomid; END IF; RETURN _ratio; END; $_$; /DROP FUNCTION public.iteminvpricerat(integer); publicadminfalse8399212552008401`itemipsprice(integer, integer, integer, numeric, integer, integer, integer, date, date, integer)FUNCTIONL#CREATE FUNCTION itemipsprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pqtyuom integer, ppriceuom integer, pcurrid integer, peffective date, pasof date, psiteid integer) RETURNS SETOF itemprice LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row itemprice%ROWTYPE; _sale RECORD; _ips RECORD; _item RECORD; _cust RECORD; _shipto RECORD; _iteminvpricerat NUMERIC := 1.0; _listprice NUMERIC := 0.0; _qty NUMERIC; _asof DATE; _wholesalepricecosting BOOLEAN := false; _long30markups BOOLEAN := false; _itempricingprecedence BOOLEAN := false; BEGIN _wholesalepricecosting := fetchMetricBool('WholesalePriceCosting'); _long30markups := fetchMetricBool('Long30Markups'); _itempricingprecedence := fetchMetricBool('ItemPricingPrecedence'); -- Return the itemPrice in the currency passed in as pCurrid _qty := itemuomtouom(pItemid, pQtyUOM, NULL, pQty); -- If no as of passed, use current date _asof := COALESCE(pAsOf, CURRENT_DATE); -- Cache Item, Customer and Shipto SELECT item.*, itemCost(itemsite_id) AS invcost INTO _item FROM item LEFT OUTER JOIN itemsite ON (itemsite_item_id=item_id AND itemsite_warehous_id=pSiteid) WHERE (item_id=pItemid); SELECT * INTO _cust FROM custinfo JOIN custtype ON (custtype_id=cust_custtype_id) WHERE (cust_id=pCustid); SELECT * INTO _shipto FROM shiptoinfo WHERE (shipto_id=pShiptoid); -- Get a value here so we do not have to call the function several times SELECT itemuomtouomratio(pItemid, pPriceUOM, _item.item_price_uom_id) AS ratio INTO _iteminvpricerat; -- First get a sales price if any so we when we find other prices -- we can determine if we want that price or this price. -- Check for a Sale Price SELECT INTO _sale currToCurr(ipshead_curr_id, pCurrid, ipsprice_price, pEffective) AS rightprice, ipsitem_type AS righttype FROM ( SELECT ipsitem_ipshead_id AS ipsprice_ipshead_id, ipsitem_type, CASE WHEN (ipsitem_type = 'N') THEN (ipsitem_price * itemuomtouomratio(_item.item_id, pPriceUOM, ipsitem_price_uom_id)) WHEN (ipsitem_type = 'D') THEN noNeg(_item.item_listprice - (_item.item_listprice * ipsitem_discntprcnt) - ipsitem_fixedamtdiscount) * _iteminvpricerat WHEN ((ipsitem_type = 'M') AND (ipsitem_discntprcnt <= 0.5) AND _long30markups AND _wholesalepricecosting) THEN (_item.item_listcost / (1.0 - ipsitem_discntprcnt) + ipsitem_fixedamtdiscount) * _iteminvpricerat WHEN ((ipsitem_type = 'M') AND (ipsitem_discntprcnt <= 0.5) AND _long30markups) THEN (_item.invcost / (1.0 - ipsitem_discntprcnt) + ipsitem_fixedamtdiscount) * _iteminvpricerat WHEN (ipsitem_type = 'M' AND _wholesalepricecosting) THEN (_item.item_listcost + (_item.item_listcost * ipsitem_discntprcnt) + ipsitem_fixedamtdiscount) * _iteminvpricerat WHEN (ipsitem_type = 'M') THEN (_item.invcost + (_item.invcost * ipsitem_discntprcnt) + ipsitem_fixedamtdiscount) * _iteminvpricerat ELSE 0.00 END AS ipsprice_price, CASE WHEN (ipsitem_item_id=_item.item_id) THEN itemuomtouom(ipsitem_item_id, ipsitem_qty_uom_id, NULL, ipsitem_qtybreak) ELSE ipsitem_qtybreak END AS ipsprice_qtybreak, (COALESCE(ipsitem_price_uom_id, -1)=COALESCE(pPriceUOM,-1)) AS uommatched, CASE WHEN (_itempricingprecedence) THEN (COALESCE(ipsitem_item_id, -1)=_item.item_id) ELSE true END AS itemmatched FROM ipsiteminfo WHERE(ipsitem_item_id=_item.item_id) OR (ipsitem_prodcat_id=_item.item_prodcat_id) ) AS ipsprice, ipshead, ipsass, sale WHERE ( (ipsprice_ipshead_id=ipshead_id) AND (sale_ipshead_id=ipsprice_ipshead_id) AND (_asof BETWEEN sale_startdate AND sale_enddate) AND (ipsprice_qtybreak <= _qty) AND (ipsass_ipshead_id=ipshead_id) AND ( (ipsass_shipto_id=_shipto.shipto_id) OR ((COALESCE(LENGTH(ipsass_shipto_pattern), 0) > 0) AND (_shipto.shipto_num ~ ipsass_shipto_pattern)) OR (ipsass_cust_id=_cust.cust_id) OR (ipsass_custtype_id=_cust.cust_custtype_id) OR ((COALESCE(LENGTH(ipsass_custtype_pattern), 0) > 0) AND (_cust.custtype_code ~ ipsass_custtype_pattern)) ) ) ORDER BY itemmatched DESC, uommatched DESC, ipsprice_qtybreak DESC, ipsprice_price ASC LIMIT 1; -- Find the best Price Schedule Price SELECT INTO _ips currToCurr(ipshead_curr_id, pCurrid, protoprice, pEffective) AS rightprice, ipsitem_type AS righttype FROM ( SELECT *, CASE WHEN (COALESCE(ipsass_shipto_id, -1) > 0) THEN 1 WHEN (COALESCE(LENGTH(ipsass_shipto_pattern), 0) > 0) THEN 2 WHEN (COALESCE(ipsass_cust_id, -1) > 0) THEN 3 WHEN (COALESCE(ipsass_custtype_id, -1) > 0) THEN 4 WHEN (COALESCE(LENGTH(ipsass_custtype_pattern), 0) > 0) THEN 5 ELSE 99 END AS assignseq, CASE WHEN (ipsitem_type = 'N') THEN (ipsitem_price * itemuomtouomratio(_item.item_id, pPriceUOM, ipsitem_price_uom_id)) WHEN (ipsitem_type = 'D') THEN noNeg(_item.item_listprice - (_item.item_listprice * ipsitem_discntprcnt) - ipsitem_fixedamtdiscount) * _iteminvpricerat WHEN ((ipsitem_type = 'M') AND (ipsitem_discntprcnt <= 0.5) AND _long30markups AND _wholesalepricecosting) THEN (_item.item_listcost / (1.0 - ipsitem_discntprcnt) + ipsitem_fixedamtdiscount) * _iteminvpricerat WHEN ((ipsitem_type = 'M') AND (ipsitem_discntprcnt <= 0.5) AND _long30markups) THEN (_item.invcost / (1.0 - ipsitem_discntprcnt) + ipsitem_fixedamtdiscount) * _iteminvpricerat WHEN (ipsitem_type = 'M' AND _wholesalepricecosting) THEN (_item.item_listcost + (_item.item_listcost * ipsitem_discntprcnt) + ipsitem_fixedamtdiscount) * _iteminvpricerat WHEN (ipsitem_type = 'M') THEN (_item.invcost + (_item.invcost * ipsitem_discntprcnt) + ipsitem_fixedamtdiscount) * _iteminvpricerat ELSE 0.00 END AS protoprice, CASE WHEN (ipsitem_item_id=_item.item_id) THEN itemuomtouom(ipsitem_item_id, ipsitem_qty_uom_id, NULL, ipsitem_qtybreak) ELSE ipsitem_qtybreak END AS protoqtybreak, (COALESCE(ipsitem_price_uom_id, -1)=COALESCE(pPriceUOM,-1)) AS uommatched, CASE WHEN (_itempricingprecedence) THEN (COALESCE(ipsitem_item_id, -1)=_item.item_id) ELSE true END AS itemmatched FROM ipsass JOIN ipshead ON (ipshead_id=ipsass_ipshead_id) JOIN ipsiteminfo ON (ipsitem_ipshead_id=ipshead_id) WHERE ((ipsitem_item_id=_item.item_id) OR (ipsitem_prodcat_id=_item.item_prodcat_id)) AND (_asof BETWEEN ipshead_effective AND ipshead_expires) AND ((ipsitem_warehous_id=pSiteid) OR (ipsitem_warehous_id IS NULL)) AND ( (ipsass_shipto_id=_shipto.shipto_id) OR ((COALESCE(LENGTH(ipsass_shipto_pattern), 0) > 0) AND (_shipto.shipto_num ~ ipsass_shipto_pattern)) OR (ipsass_cust_id=_cust.cust_id) OR (ipsass_custtype_id=_cust.cust_custtype_id) OR ((COALESCE(LENGTH(ipsass_custtype_pattern), 0) > 0) AND (_cust.custtype_code ~ ipsass_custtype_pattern)) ) ) AS proto WHERE (protoqtybreak <= pQty) ORDER BY assignseq, itemmatched DESC, protoqtybreak DESC, rightprice LIMIT 1; IF (_ips.rightprice IS NOT NULL) THEN IF ((_sale.rightprice IS NOT NULL) AND (_sale.rightprice < _ips.rightprice)) THEN RAISE DEBUG 'itemprice, item=%, cust=%, shipto=%, sale price= %', pItemid, pCustid, pShiptoid, _sale.rightprice; _row.itemprice_price := _sale.rightprice; _row.itemprice_type := _sale.righttype; RETURN NEXT _row; END IF; RAISE DEBUG 'itemprice, item=%, cust=%, shipto=%, schedule price= %', pItemid, pCustid, pShiptoid, _ips.rightprice; _row.itemprice_price := _ips.rightprice; _row.itemprice_type := _ips.righttype; RETURN NEXT _row; END IF; -- If item is exclusive then list list price does not apply IF (_item.item_exclusive) THEN RAISE DEBUG 'itemprice, item=%, cust=%, shipto=%, item exclusive, price=-9999', pItemid, pCustid, pShiptoid; _row.itemprice_price := -9999.0; _row.itemprice_type := ''; RETURN NEXT _row; END IF; -- Check for a list price _listprice := noNeg(currToLocal(pCurrid, _item.item_listprice - (_item.item_listprice * COALESCE(_cust.cust_discntprcnt, 0.0)), pEffective) * itemuomtouomratio(pItemid, pPriceUOM, _item.item_price_uom_id)); RAISE DEBUG 'itemprice, item=%, cust=%, shipto=%, list price= %', pItemid, pCustid, pShiptoid, _listprice; _row.itemprice_price := _listprice; _row.itemprice_type := 'P'; RETURN NEXT _row; RETURN; END; $$; DROP FUNCTION public.itemipsprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pqtyuom integer, ppriceuom integer, pcurrid integer, peffective date, pasof date, psiteid integer); publicadminfalse83992256912551692399&itemlocdistqty(text, integer, integer)FUNCTION CREATE FUNCTION itemlocdistqty(text, integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTypes ALIAS FOR $1; pLocationid ALIAS FOR $2; pParentid ALIAS FOR $3; _qty NUMERIC := 0; _tempQty NUMERIC; BEGIN IF (strpos(pTypes, 'L') > 0) THEN SELECT COALESCE(SUM(itemlocdist_qty), 0) INTO _tempQty FROM itemlocdist WHERE ( (itemlocdist_source_type='L') AND (itemlocdist_source_id=pLocationid) AND (itemlocdist_itemlocdist_id=pParentid) ); _qty := (_qty + _tempQty); END IF; IF (strpos(pTypes, 'I') > 0) THEN SELECT COALESCE(SUM(itemlocdist_qty), 0) INTO _tempQty FROM itemlocdist, itemloc WHERE ( (itemlocdist_source_type='I') AND (itemlocdist_source_id=itemloc_id) AND (itemloc_location_id=pLocationid) AND (itemlocdist_itemlocdist_id=pParentid) ); _qty := (_qty + _tempQty); END IF; RETURN _qty; END; $_$; =DROP FUNCTION public.itemlocdistqty(text, integer, integer); publicadminfalse8399212551692400 itemlocdistqty(integer, integer)FUNCTIONRCREATE FUNCTION itemlocdistqty(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLocationid ALIAS FOR $1; pParentid ALIAS FOR $2; _qty NUMERIC; _tempQty NUMERIC; BEGIN SELECT COALESCE(SUM(itemlocdist_qty), 0) INTO _qty FROM itemlocdist WHERE ( (itemlocdist_source_type='L') AND (itemlocdist_source_id=pLocationid) AND (itemlocdist_itemlocdist_id=pParentid) ); SELECT COALESCE(SUM(itemlocdist_qty), 0) INTO _tempQty FROM itemlocdist, itemloc WHERE ( (itemlocdist_source_type='I') AND (itemlocdist_source_id=itemloc_id) AND (itemloc_location_id=pLocationid) AND (itemlocdist_itemlocdist_id=pParentid) ); _qty := (_qty + _tempQty); RETURN _qty; END; $_$; 7DROP FUNCTION public.itemlocdistqty(integer, integer); publicadminfalse8399212552008403<itemprice(integer, integer, integer, numeric, integer, date)FUNCTIONdCREATE FUNCTION itemprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pcurrid integer, peffective date) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _item RECORD; BEGIN SELECT item_inv_uom_id, item_price_uom_id INTO _item FROM item WHERE(item_id=pItemid); IF (FOUND) THEN RETURN itemPrice(pItemid, pCustid, pShiptoid, pQty, _item.item_inv_uom_id, _item.item_price_uom_id, pCurrid, pEffective); END IF; RETURN -9999; END; $$; DROP FUNCTION public.itemprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pcurrid integer, peffective date); publicadminfalse8399212552008404Nitemprice(integer, integer, integer, numeric, integer, integer, integer, date)FUNCTIONCREATE FUNCTION itemprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pqtyuom integer, ppriceuom integer, pcurrid integer, peffective date) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN RETURN itemPrice(pItemid, pCustid, pShiptoid, pQty, pQtyUOM, pPriceUOM, pCurrid, pEffective, CURRENT_DATE); END; $$; DROP FUNCTION public.itemprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pqtyuom integer, ppriceuom integer, pcurrid integer, peffective date); publicadminfalse8399212552008405Titemprice(integer, integer, integer, numeric, integer, integer, integer, date, date)FUNCTIONCREATE FUNCTION itemprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pqtyuom integer, ppriceuom integer, pcurrid integer, peffective date, pasof date) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN RETURN itemPrice(pItemid, pCustid, pShiptoid, pQty, pQtyUOM, pPriceUOM, pCurrid, pEffective, pAsOf, NULL); END; $$; DROP FUNCTION public.itemprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pqtyuom integer, ppriceuom integer, pcurrid integer, peffective date, pasof date); publicadminfalse8399212552008406]itemprice(integer, integer, integer, numeric, integer, integer, integer, date, date, integer)FUNCTIONPCREATE FUNCTION itemprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pqtyuom integer, ppriceuom integer, pcurrid integer, peffective date, pasof date, psiteid integer) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; BEGIN SELECT * FROM itemIpsPrice(pItemid, pCustid, pShiptoid, pQty, pQtyUOM, pPriceUOM, pCurrid, pEffective, pAsOf, pSiteid) INTO _r; RETURN _r.itemprice_price; END; $$; DROP FUNCTION public.itemprice(pitemid integer, pcustid integer, pshiptoid integer, pqty numeric, pqtyuom integer, ppriceuom integer, pcurrid integer, peffective date, pasof date, psiteid integer); publicadminfalse8399212551692405itemsellinguom(integer)FUNCTION2CREATE FUNCTION itemsellinguom(integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; BEGIN RETURN itemUOMByType(pItemid, 'Selling'); END; $_$; .DROP FUNCTION public.itemsellinguom(integer); publicadminfalse8399212551746774-itemsrcprice(integer, numeric, integer, date)FUNCTIONCREATE FUNCTION itemsrcprice(pitemsrcid integer, pqty numeric, pcurrid integer, peffective date) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _price NUMERIC := 0.0; BEGIN SELECT itemsrcPrice(pItemsrcid, -1, FALSE, pQty, pCurrid, pEffective) INTO _price; RETURN _price; END; $$; gDROP FUNCTION public.itemsrcprice(pitemsrcid integer, pqty numeric, pcurrid integer, peffective date); publicadminfalse8399212551746775?itemsrcprice(integer, integer, boolean, numeric, integer, date)FUNCTIONCREATE FUNCTION itemsrcprice(pitemsrcid integer, psiteid integer, pdropship boolean, pqty numeric, pcurrid integer, peffective date) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _price NUMERIC := 0.0; _r RECORD; _effective DATE; BEGIN -- If no pEffective passed, use current date _effective := COALESCE(pEffective, CURRENT_DATE); -- Cache Itemsrc and Item SELECT * INTO _r FROM itemsrc JOIN item ON (item_id=itemsrc_item_id) WHERE (itemsrc_id=pItemsrcid); IF (NOT FOUND) THEN RAISE EXCEPTION 'itemsrc % not found.', pItemsrcid; END IF; -- Determine price SELECT currToCurr(itemsrcp_curr_id, pCurrid, price, _effective) INTO _price FROM ( SELECT *, CASE itemsrcp_type WHEN ('N') THEN itemsrcp_price WHEN ('D') THEN (_r.item_listcost - (_r.item_listcost * itemsrcp_discntprcnt) - itemsrcp_fixedamtdiscount) ELSE 0.0 END AS price FROM itemsrcp WHERE ( (itemsrcp_itemsrc_id=_r.itemsrc_id) AND ((itemsrcp_warehous_id=pSiteid) OR (itemsrcp_warehous_id=-1)) AND ((itemsrcp_dropship=pDropship) OR (NOT itemsrcp_dropship)) AND (itemsrcp_qtybreak <= pQty) ) ORDER BY itemsrcp_qtybreak DESC LIMIT 1 ) AS data ; RETURN _price; END; $$; DROP FUNCTION public.itemsrcprice(pitemsrcid integer, psiteid integer, pdropship boolean, pqty numeric, pcurrid integer, peffective date); publicadminfalse8399212551692406itemuombytype(integer, text)FUNCTIONCREATE FUNCTION itemuombytype(integer, text) RETURNS text LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pUomtype ALIAS FOR $2; _uom TEXT; BEGIN SELECT uom_name INTO _uom FROM ( SELECT uom_name FROM item JOIN itemuomconv ON (itemuomconv_item_id=item_id) JOIN itemuom ON (itemuom_itemuomconv_id=itemuomconv_id) JOIN uomtype ON (itemuom_uomtype_id=uomtype_id) JOIN uom ON (itemuomconv_to_uom_id=uom_id) WHERE((item_id=pItemid) AND (uomtype_name=pUomtype) AND (item_inv_uom_id != itemuomconv_to_uom_id)) UNION SELECT uom_name FROM item JOIN itemuomconv ON (itemuomconv_item_id=item_id) JOIN itemuom ON (itemuom_itemuomconv_id=itemuomconv_id) JOIN uomtype ON (itemuom_uomtype_id=uomtype_id) JOIN uom ON (itemuomconv_from_uom_id=uom_id) WHERE((item_id=pItemid) AND (uomtype_name=pUomtype) AND (item_inv_uom_id != itemuomconv_from_uom_id))) data LIMIT 1; IF (NOT FOUND) THEN SELECT uom_name INTO _uom FROM item JOIN uom ON (item_inv_uom_id=uom_id) WHERE(item_id=pItemid); END IF; RETURN _uom; END; $_$; 3DROP FUNCTION public.itemuombytype(integer, text); publicadminfalse8399212551692407&itemuomfractionalbytype(integer, text)FUNCTION#CREATE FUNCTION itemuomfractionalbytype(integer, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pUomtype ALIAS FOR $2; _frac BOOLEAN; BEGIN SELECT itemuomconv_fractional INTO _frac FROM item JOIN itemuomconv ON (itemuomconv_item_id=item_id) JOIN itemuom ON (itemuom_itemuomconv_id=itemuomconv_id) JOIN uomtype ON (itemuom_uomtype_id=uomtype_id) WHERE((item_id=pItemid) AND (uomtype_name=pUomtype)) LIMIT 1; IF (NOT FOUND) THEN SELECT item_fractional INTO _frac FROM item JOIN uom ON (item_inv_uom_id=uom_id) WHERE(item_id=pItemid); END IF; RETURN _frac; END; $_$; =DROP FUNCTION public.itemuomfractionalbytype(integer, text); publicadminfalse8399212551692408(itemuomfractionalbyuom(integer, integer)FUNCTION=CREATE FUNCTION itemuomfractionalbyuom(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pUomid ALIAS FOR $2; _frac BOOLEAN; BEGIN SELECT itemuomconv_fractional INTO _frac FROM item JOIN itemuomconv ON (itemuomconv_item_id=item_id) WHERE((item_id=pItemid) AND ((itemuomconv_from_uom_id=item_inv_uom_id AND itemuomconv_to_uom_id=pUomid) OR (itemuomconv_to_uom_id=item_inv_uom_id AND itemuomconv_from_uom_id=pUomid))) LIMIT 1; IF (NOT FOUND) THEN SELECT item_fractional INTO _frac FROM item JOIN uom ON (item_inv_uom_id=uom_id) WHERE(item_id=pItemid); END IF; RETURN _frac; END; $_$; ?DROP FUNCTION public.itemuomfractionalbyuom(integer, integer); publicadminfalse8399212551692409!itemuomratiobytype(integer, text)FUNCTIONCREATE FUNCTION itemuomratiobytype(integer, text) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pUomtype ALIAS FOR $2; _ratio NUMERIC; BEGIN -- Return the ration as alternate / inventory uom SELECT CASE WHEN(itemuomconv_from_uom_id=item_inv_uom_id) THEN itemuomconv_to_value / itemuomconv_from_value ELSE itemuomconv_from_value / itemuomconv_to_value END INTO _ratio FROM item JOIN itemuomconv ON (itemuomconv_item_id=item_id) JOIN itemuom ON (itemuom_itemuomconv_id=itemuomconv_id) JOIN uomtype ON (itemuom_uomtype_id=uomtype_id) WHERE((item_id=pItemid) AND (uomtype_name=pUomtype)) LIMIT 1; IF (NOT FOUND) THEN _ratio := 1.0; END IF; RETURN _ratio; END; $_$; 8DROP FUNCTION public.itemuomratiobytype(integer, text); publicadminfalse83992125516924100itemuomtouom(integer, integer, integer, numeric)FUNCTION6CREATE FUNCTION itemuomtouom(integer, integer, integer, numeric) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN itemuomtouom($1, $2, $3, $4, 'qty'); END; $_$; GDROP FUNCTION public.itemuomtouom(integer, integer, integer, numeric); publicadminfalse83992 125517610156itemuomtouom(integer, integer, integer, numeric, text)FUNCTIONCREATE FUNCTION itemuomtouom(pitemid integer, puomidfrom integer, puomidto integer, pqtyfrom numeric, plocale text) RETURNS numeric LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _uomidFrom INTEGER; _uomidTo INTEGER; _uomidInv INTEGER; _valueFrom NUMERIC := 0.0; _valueTo NUMERIC := 0.0; _value NUMERIC := 0.0; _item RECORD; _conv RECORD; _frac BOOLEAN := FALSE; BEGIN SELECT item_inv_uom_id, item_fractional INTO _item FROM item WHERE(item_id=pItemid); IF(NOT FOUND) THEN RAISE EXCEPTION 'No item record was found for item id %', pItemid; END IF; _uomidFrom := COALESCE(pUomidFrom, _item.item_inv_uom_id); _uomidTo := COALESCE(pUomidTo, _item.item_inv_uom_id); _uomidInv := _item.item_inv_uom_id; -- Should we round the qty here or not? IF(_uomidFrom = _uomidTo) THEN -- Both from/to are the same. If it is the item inv uom -- then use the item fractional value otherwise assume -- it is fractional for now so the user gets the same value back. IF(_uomidFrom = _item.item_inv_uom_id) THEN _frac := _item.item_fractional; ELSE _frac := true; END IF; RETURN roundLocale(_frac, pQtyFrom, pLocale); END IF; -- Try a direct conversion SELECT itemuomconv_from_uom_id, itemuomconv_from_value, itemuomconv_to_uom_id, itemuomconv_to_value, itemuomconv_fractional INTO _conv FROM itemuomconv WHERE(((itemuomconv_from_uom_id=_uomidFrom AND itemuomconv_to_uom_id=_uomidTo) OR (itemuomconv_from_uom_id=_uomidTo AND itemuomconv_to_uom_id=_uomidFrom)) AND (itemuomconv_item_id=pItemid)); IF(FOUND) THEN IF(_conv.itemuomconv_from_uom_id=_uomidFrom) THEN _valueFrom := _conv.itemuomconv_from_value; _valueTo := _conv.itemuomconv_to_value; ELSE _valueFrom := _conv.itemuomconv_to_value; _valueTo := _conv.itemuomconv_from_value; END IF; -- If we are converting to the item inv uom use the item fractional value -- otherwise use the conversion fractional value. if(_uomidTo = _uomidInv) THEN _frac := _item.item_fractional; ELSE _frac := _conv.itemuomconv_fractional; END IF; _value := roundLocale(_frac, ((_valueTo/_valueFrom) * pQtyFrom), pLocale); ELSE -- Try to convert the from uom to the inventory uom SELECT itemuomconv_from_uom_id, itemuomconv_from_value, itemuomconv_to_uom_id, itemuomconv_to_value, itemuomconv_fractional INTO _conv FROM itemuomconv WHERE(((itemuomconv_from_uom_id=_uomidFrom AND itemuomconv_to_uom_id=_uomidInv) OR (itemuomconv_from_uom_id=_uomidInv AND itemuomconv_to_uom_id=_uomidFrom)) AND (itemuomconv_item_id=pItemid)); IF(NOT FOUND) THEN RAISE EXCEPTION 'A conversion for item_id % from uom_id % to inv_uom_id % was not found.', pItemid, _uomidFrom, _uomidInv; END IF; IF(_conv.itemuomconv_from_uom_id=_uomidInv) THEN _valueFrom := _conv.itemuomconv_from_value; _valueTo := _conv.itemuomconv_to_value; ELSE _valueFrom := _conv.itemuomconv_to_value; _valueTo := _conv.itemuomconv_from_value; END IF; _value := (_valueTo / _valueFrom); IF (_conv.itemuomconv_fractional OR _item.item_fractional) THEN _frac := TRUE; END IF; -- Try to convert the to uom to the inventory uom SELECT itemuomconv_from_uom_id, itemuomconv_from_value, itemuomconv_to_uom_id, itemuomconv_to_value, itemuomconv_fractional INTO _conv FROM itemuomconv WHERE(((itemuomconv_from_uom_id=_uomidInv AND itemuomconv_to_uom_id=_uomidTo) OR (itemuomconv_from_uom_id=_uomidTo AND itemuomconv_to_uom_id=_uomidInv)) AND (itemuomconv_item_id=pItemid)); IF(NOT FOUND) THEN RAISE EXCEPTION 'A conversion for item_id % from uom_id % to inv_uom_id % was not found.', pItemid, _uomidTo, _uomidInv; END IF; IF(_conv.itemuomconv_from_uom_id=_uomidInv) THEN _valueFrom := _conv.itemuomconv_from_value; _valueTo := _conv.itemuomconv_to_value; ELSE _valueFrom := _conv.itemuomconv_to_value; _valueTo := _conv.itemuomconv_from_value; END IF; _value := _value * (_valueTo / _valueFrom); IF (_conv.itemuomconv_fractional OR _item.item_fractional) THEN _frac := TRUE; END IF; _value := roundLocale(_frac, (_value * pQtyFrom), pLocale); END IF; RETURN _value; END; $$; zDROP FUNCTION public.itemuomtouom(pitemid integer, puomidfrom integer, puomidto integer, pqtyfrom numeric, plocale text); publicadminfalse8399212551692411,itemuomtouomratio(integer, integer, integer)FUNCTIONa CREATE FUNCTION itemuomtouomratio(pitemid integer, puomidfrom integer, puomidto integer) RETURNS numeric LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _uomidFrom INTEGER; _uomidTo INTEGER; _uomidInv INTEGER; _valueFrom NUMERIC := 0.0; _valueTo NUMERIC := 0.0; _value NUMERIC := 0.0; _item RECORD; _conv RECORD; BEGIN SELECT item_inv_uom_id INTO _item FROM item WHERE(item_id=pItemid); IF(NOT FOUND) THEN RAISE EXCEPTION 'No item record was found for item id %', pItemid; END IF; _uomidFrom := COALESCE(pUomidFrom, _item.item_inv_uom_id); _uomidTo := COALESCE(pUomidTo, _item.item_inv_uom_id); _uomidInv := _item.item_inv_uom_id; IF(_uomidFrom = _uomidTo) THEN RETURN 1.0; END IF; -- Try a direct conversion SELECT itemuomconv_from_uom_id, itemuomconv_from_value, itemuomconv_to_uom_id, itemuomconv_to_value INTO _conv FROM itemuomconv WHERE(((itemuomconv_from_uom_id=_uomidFrom AND itemuomconv_to_uom_id=_uomidTo) OR (itemuomconv_from_uom_id=_uomidTo AND itemuomconv_to_uom_id=_uomidFrom)) AND (itemuomconv_item_id=pItemid)); IF(FOUND) THEN IF(_conv.itemuomconv_from_uom_id=_uomidFrom) THEN _valueFrom := _conv.itemuomconv_from_value; _valueTo := _conv.itemuomconv_to_value; ELSE _valueFrom := _conv.itemuomconv_to_value; _valueTo := _conv.itemuomconv_from_value; END IF; _value := (_valueTo / _valueFrom); ELSE -- Try to convert the from uom to the inventory uom SELECT itemuomconv_from_uom_id, itemuomconv_from_value, itemuomconv_to_uom_id, itemuomconv_to_value INTO _conv FROM itemuomconv WHERE(((itemuomconv_from_uom_id=_uomidFrom AND itemuomconv_to_uom_id=_uomidInv) OR (itemuomconv_from_uom_id=_uomidInv AND itemuomconv_to_uom_id=_uomidFrom)) AND (itemuomconv_item_id=pItemid)); IF(NOT FOUND) THEN RAISE EXCEPTION 'A conversion for item_id % from uom_id % to inv_uom_id % was not found.', pItemid, _uomidFrom, _uomidInv; END IF; IF(_conv.itemuomconv_from_uom_id=_uomidInv) THEN _valueFrom := _conv.itemuomconv_from_value; _valueTo := _conv.itemuomconv_to_value; ELSE _valueFrom := _conv.itemuomconv_to_value; _valueTo := _conv.itemuomconv_from_value; END IF; _value := (_valueTo / _valueFrom); -- Try to convert the to uom to the inventory uom SELECT itemuomconv_from_uom_id, itemuomconv_from_value, itemuomconv_to_uom_id, itemuomconv_to_value INTO _conv FROM itemuomconv WHERE(((itemuomconv_from_uom_id=_uomidInv AND itemuomconv_to_uom_id=_uomidTo) OR (itemuomconv_from_uom_id=_uomidTo AND itemuomconv_to_uom_id=_uomidInv)) AND (itemuomconv_item_id=pItemid)); IF(NOT FOUND) THEN RAISE EXCEPTION 'A conversion for item_id % from uom_id % to inv_uom_id % was not found.', pItemid, _uomidTo, _uomidInv; END IF; IF(_conv.itemuomconv_from_uom_id=_uomidInv) THEN _valueFrom := _conv.itemuomconv_from_value; _valueTo := _conv.itemuomconv_to_value; ELSE _valueFrom := _conv.itemuomconv_to_value; _valueTo := _conv.itemuomconv_from_value; END IF; _value := _value * (_valueTo / _valueFrom); END IF; RETURN _value; END; $$; _DROP FUNCTION public.itemuomtouomratio(pitemid integer, puomidfrom integer, puomidto integer); publicadminfalse8399212551692412 last_agg(anyelement, anyelement)FUNCTIONyCREATE FUNCTION last_agg(anyelement, anyelement) RETURNS anyelement LANGUAGE sql STABLE AS $_$ SELECT $2; $_$; 7DROP FUNCTION public.last_agg(anyelement, anyelement); publicadminfalse812551692413login()FUNCTIONCREATE FUNCTION login() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _p RECORD; BEGIN RETURN login(false); END; $$; DROP FUNCTION public.login(); publicadminfalse8399212551833130login(boolean)FUNCTIONCREATE FUNCTION login(boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _setSearchPath ALIAS FOR $1; _p RECORD; BEGIN PERFORM pg_try_advisory_lock(datid::integer, procpid) FROM pg_stat_activity WHERE(procpid = pg_backend_pid()); -- This is new to version 9.0 and higher and will error on older versions IF (select CAST(split_part(split_part(version(), ' ', 2),'.',1) AS integer) >= 9) THEN SET bytea_output TO escape; END IF; -- this is temporary until either qt fixes the postgres driver or we find & -- fix all of the places in our app that can write strings with backslashes SET standard_conforming_strings TO false; SELECT usr_id, userCanLogin(usr_username) AS usr_active INTO _p FROM usr WHERE (usr_username=getEffectiveXtUser()); IF (NOT FOUND) THEN RETURN -1; ELSIF (NOT _p.usr_active) THEN IF(SELECT metric_value='AdminOnly' FROM metric WHERE metric_name='AllowedUserLogins') THEN RETURN -3; END IF; RETURN -2; END IF; IF (_setSearchPath) THEN IF EXISTS(SELECT 1 FROM pg_proc JOIN pg_namespace ON (pronamespace=pg_namespace.oid) WHERE nspname='public' AND proname='buildsearchpath') THEN EXECUTE 'SET SEARCH_PATH TO ' || public.buildSearchPath(); END IF; END IF; RETURN 1; END; $_$; %DROP FUNCTION public.login(boolean); publicadminfalse8399212551692414logout()FUNCTION\CREATE FUNCTION logout() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN PERFORM pg_advisory_unlock(datid::integer, procpid) FROM pg_stat_activity WHERE(procpid = pg_backend_pid()); RETURN 0; END; $$; DROP FUNCTION public.logout(); publicadminfalse8399212551692415lowercost(integer, text)FUNCTIONTCREATE FUNCTION lowercost(integer, text) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCosttype ALIAS FOR $2; BEGIN RETURN lowerCost(pItemid, pCosttype, TRUE); END; $_$; /DROP FUNCTION public.lowercost(integer, text); publicadminfalse8399212551692416!lowercost(integer, text, boolean)FUNCTION1CREATE FUNCTION lowercost(integer, text, boolean) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCosttype ALIAS FOR $2; pActual ALIAS FOR $3; _type CHAR(1); _actCost NUMERIC; _actCost1 NUMERIC; _actCost2 NUMERIC; _stdCost NUMERIC; _stdCost1 NUMERIC; _stdCost2 NUMERIC; _cost NUMERIC; _cost1 NUMERIC; _cost2 NUMERIC; _batchsize NUMERIC; BEGIN SELECT item_type INTO _type FROM item WHERE (item_id=pItemid); _batchsize := COALESCE( ( SELECT bomhead_batchsize FROM bomhead WHERE ((bomhead_item_id=pItemId) AND (bomhead_rev_id=getActiveRevId('BOM',pItemId))) LIMIT 1), 1); -- find the lowercost in the base currency at the current conversion rate IF (_type IN ('M', 'F', 'B', 'T')) THEN IF (pActual) THEN SELECT SUM( CASE WHEN (bomitemcost_id IS NOT NULL AND bc.costelem_id IS NOT NULL) THEN round(currToBase(bomitemcost_curr_id, bomitemcost_actcost, CURRENT_DATE),6) * itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, (bomitem_qtyfxd/_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') ELSE round(currToBase(itemcost_curr_id, itemcost_actcost, CURRENT_DATE),6) * itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, (bomitem_qtyfxd/_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') END ) INTO _cost FROM bomitem(pItemid) JOIN item ON (item_id=bomitem_item_id AND item_type <> 'T') JOIN itemcost ON (itemcost_item_id=bomitem_item_id) JOIN costelem ic ON (ic.costelem_id=itemcost_costelem_id AND ic.costelem_type=pCosttype) LEFT OUTER JOIN bomitemcost ON (bomitemcost_bomitem_id=bomitem_id) LEFT OUTER JOIN costelem bc ON (bc.costelem_id=bomitemcost_costelem_id AND bc.costelem_type=pCosttype) WHERE ( CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires - 1) ); ELSE SELECT SUM( CASE WHEN (bomitemcost_id IS NOT NULL AND bc.costelem_id IS NOT NULL) THEN bomitemcost_stdcost * itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, (bomitem_qtyfxd/_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') ELSE itemcost_stdcost * itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, (bomitem_qtyfxd/_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') END ) INTO _cost FROM bomitem(pItemid) JOIN item ON (item_id=bomitem_item_id AND item_type <> 'T') JOIN itemcost ON (itemcost_item_id=bomitem_item_id) JOIN costelem ON (costelem_id=itemcost_costelem_id AND costelem_type=pCosttype) LEFT OUTER JOIN bomitemcost ON (bomitemcost_bomitem_id=bomitem_id) LEFT OUTER JOIN costelem bc ON (bc.costelem_id=bomitemcost_costelem_id AND bc.costelem_type=pCosttype) WHERE ( CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires - 1) ); END IF; IF (NOT FOUND) THEN _cost := NULL; END IF; ELSIF (_type IN ('C')) THEN SELECT SUM(CASE WHEN (bbomitem_qtyper = 0) THEN 0 ELSE currToBase(itemcost_curr_id, itemcost_actcost, CURRENT_DATE) / bbomitem_qtyper * bbomitem_costabsorb END), SUM(CASE WHEN (bbomitem_qtyper = 0) THEN 0 ELSE itemcost_stdcost / bbomitem_qtyper * bbomitem_costabsorb END) INTO _actCost1, _stdCost1 FROM itemcost JOIN costelem ON (itemcost_costelem_id=costelem_id) JOIN xtmfg.bbomitem ON (bbomitem_parent_item_id=itemcost_item_id) WHERE ( (bbomitem_item_id=pItemid) AND (CURRENT_DATE BETWEEN bbomitem_effective AND (bbomitem_expires - 1)) AND (costelem_type=pCosttype) ); SELECT SUM(CASE WHEN (t.bbomitem_qtyper = 0) THEN 0 ELSE currToBase(itemcost_curr_id, itemcost_actcost, CURRENT_DATE) * s.bbomitem_qtyper / t.bbomitem_qtyper * t.bbomitem_costabsorb END), SUM(CASE WHEN (t.bbomitem_qtyper = 0) THEN 0 ELSE itemcost_stdcost * s.bbomitem_qtyper / t.bbomitem_qtyper * t.bbomitem_costabsorb END) INTO _actCost2, _stdCost2 FROM costelem JOIN itemcost ON (costelem_id=itemcost_costelem_id) JOIN xtmfg.bbomitem AS s ON (itemcost_item_id=s.bbomitem_item_id) JOIN xtmfg.bbomitem AS t ON (s.bbomitem_parent_item_id=t.bbomitem_parent_item_id) JOIN item ON (s.bbomitem_item_id=item_id) WHERE ( (t.bbomitem_item_id=pItemid) AND ( CURRENT_DATE BETWEEN s.bbomitem_effective AND (s.bbomitem_expires - 1) ) AND ( CURRENT_DATE BETWEEN t.bbomitem_effective AND (t.bbomitem_expires - 1) ) AND (item_type='Y') AND (costelem_type=pCosttype) ); IF (pActual) THEN _cost = _actCost; _cost1 = _actCost1; _cost2 = _actCost2; ELSE _cost = _stdCost; _cost1 = _stdCost1; _cost2 = _stdCost2; -- should this be std or act? END IF; IF (_cost1 IS NULL AND _cost2 IS NULL) THEN _cost = NULL; ELSE _cost = COALESCE(_cost1, 0) + COALESCE(_cost2, 0); END IF; ELSE RETURN NULL; END IF; RETURN round(_cost,6); END; $_$; 8DROP FUNCTION public.lowercost(integer, text, boolean); publicadminfalse83992!12551692417maintainbomworkspace()FUNCTIONCREATE FUNCTION maintainbomworkspace() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _test TEXT; BEGIN SELECT tablename INTO _test FROM pg_tables WHERE (tablename='bomwork'); IF (NOT FOUND) THEN CREATE TEMPORARY TABLE bomwork ( bomwork_id INTEGER, bomwork_set_id INTEGER, bomwork_parent_id INTEGER, bomwork_seqnumber INTEGER, bomwork_parent_seqnumber INTEGER, bomwork_item_id INTEGER, bomwork_item_type CHARACTER(1), bomwork_status CHARACTER(1), bomwork_qtyper NUMERIC(20, 8), bomwork_scrap NUMERIC(20, 10), bomwork_level INTEGER, bomwork_effective DATE, bomwork_expires DATE, bomwork_stdunitcost NUMERIC(16, 4), bomwork_actunitcost NUMERIC(16, 4), bomwork_createwo BOOLEAN, bomwork_issuemethod CHARACTER(1) ); CREATE INDEX bomwork_set_id_idx ON bomwork(bomwork_set_id); END IF; RETURN 1; END; $$; -DROP FUNCTION public.maintainbomworkspace(); publicadminfalse83992"12551692418markapcheckasposted(integer)FUNCTIONfCREATE FUNCTION markapcheckasposted(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'markAPCheckAsPosted() is deprecated - use markCheckAsPosted() instead'; RETURN markCheckAsPosted($1); END; $_$; 3DROP FUNCTION public.markapcheckasposted(integer); publicadminfalse8399212551692419markapcheckasprinted(integer)FUNCTIONaCREATE FUNCTION markapcheckasprinted(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'markAPCheckAsPrinted() is deprecated - use markCheckAsPrinted()'; RETURN markCheckAsPrinted($1); END; $_$; 4DROP FUNCTION public.markapcheckasprinted(integer); publicadminfalse8399212551692420markcheckasposted(integer)FUNCTIONlCREATE FUNCTION markcheckasposted(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCheckid ALIAS FOR $1; BEGIN UPDATE checkhead SET checkhead_posted=TRUE WHERE (checkhead_id=pCheckid); RETURN 1; END; $_$; 1DROP FUNCTION public.markcheckasposted(integer); publicadminfalse8399212551692421markcheckasprinted(integer)FUNCTIONnCREATE FUNCTION markcheckasprinted(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCheckid ALIAS FOR $1; BEGIN UPDATE checkhead SET checkhead_printed=TRUE WHERE (checkhead_id=pCheckid); RETURN 1; END; $_$; 2DROP FUNCTION public.markcheckasprinted(integer); publicadminfalse8399212551692422&massexpirebomitem(integer, date, text)FUNCTION"CREATE FUNCTION massexpirebomitem(integer, date, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pExpireDate ALIAS FOR $2; pECN ALIAS FOR $3; BEGIN UPDATE bomitem SET bomitem_expires=pExpireDate WHERE ( (bomitem_expires >= CURRENT_DATE) AND (bomitem_item_id=pItemid) AND (bomitem_rev_id=getActiveRevId('BOM',bomitem_parent_item_id)) ); RETURN TRUE; END; $_$; =DROP FUNCTION public.massexpirebomitem(integer, date, text); publicadminfalse83992125516924230massreplacebomitem(integer, integer, date, text)FUNCTIONCREATE FUNCTION massreplacebomitem(integer, integer, date, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNewItemid ALIAS FOR $1; pOriginalItemid ALIAS FOR $2; pEffectiveDate ALIAS FOR $3; pECN ALIAS FOR $4; _effectiveDate DATE; _result INTEGER; BEGIN _effectiveDate := COALESCE(pEffectiveDate, CURRENT_DATE); IF (BOMContains(pOriginalItemid, pNewItemid) OR BOMContains(pNewItemid, pOriginalItemid)) THEN RETURN -1; END IF; INSERT INTO bomitem ( bomitem_parent_item_id, bomitem_seqnumber, bomitem_item_id, bomitem_qtyfxd, bomitem_qtyper, bomitem_uom_id, bomitem_scrap, bomitem_effective, bomitem_expires, bomitem_ecn, bomitem_createwo, bomitem_issuemethod, bomitem_subtype, bomitem_booitem_seq_id, bomitem_schedatwooper, bomitem_moddate, bomitem_rev_id, bomitem_char_id, bomitem_value ) SELECT bomitem_parent_item_id, bomitem_seqnumber, pNewItemid, bomitem_qtyfxd, bomitem_qtyper, bomitem_uom_id, bomitem_scrap, _effectiveDate, endOfTime(), pECN, bomitem_createwo, bomitem_issuemethod, 'I', bomitem_booitem_seq_id, bomitem_schedatwooper, CURRENT_DATE, getActiveRevId('BOM',bomitem_parent_item_id), bomitem_char_id, bomitem_value FROM bomitem WHERE ( (_effectiveDate < bomitem_expires) AND (bomitem_item_id=pOriginalItemid) AND (bomitem_rev_id=getActiveRevId('BOM',bomitem_parent_item_id)) ); UPDATE bomitem SET bomitem_expires=_effectiveDate WHERE ( (_effectiveDate < bomitem_expires) AND (bomitem_item_id=pOriginalItemid) AND (bomitem_rev_id=getActiveRevid('BOM',bomitem_parent_item_id)) ); RETURN 1; END; $_$; GDROP FUNCTION public.massreplacebomitem(integer, integer, date, text); publicadminfalse83992512551692424)merge2crmaccts(integer, integer, boolean)FUNCTIONo0CREATE FUNCTION merge2crmaccts(integer, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSourceId ALIAS FOR $1; pTargetId ALIAS FOR $2; _purge BOOLEAN := COALESCE($3, FALSE); _coldesc RECORD; _count INTEGER := 0; _hassubtype BOOLEAN; _mrgcol BOOLEAN; _result INTEGER := 0; _sel RECORD; _colname TEXT; _tmpid INTEGER; BEGIN -- Validate IF (pSourceId = pTargetId) THEN RAISE NOTICE 'Tried to merge a CRM Account with itself: %.', pSourceId; RETURN 0; ELSIF (pSourceId IS NULL) THEN RAISE EXCEPTION 'Merge source id cannot be null [xtuple: merge, -1]'; ELSIF NOT(EXISTS(SELECT 1 FROM crmacct WHERE crmacct_id=pSourceId)) THEN RAISE EXCEPTION 'Merge source % not found [xtuple: merge, -2, %]', pSourceId, pSourceId; ELSIF (pTargetId IS NULL) THEN RAISE EXCEPTION 'Merge target id cannot be null [xtuple: merge, -3]'; ELSIF NOT(EXISTS(SELECT 1 FROM crmacct WHERE crmacct_id=pTargetId)) THEN RAISE EXCEPTION 'Merge target % not found [xtuple: merge, -4, %]', pTargetId, pTargetId; ELSIF NOT(EXISTS(SELECT 1 FROM crmacctsel WHERE (crmacctsel_src_crmacct_id=pSourceId) AND (crmacctsel_dest_crmacct_id=pTargetId))) THEN RAISE EXCEPTION 'Source % and target % have not been selected for merging [xtuple: merge, -5, %, %]', pSourceId, pTargetId, pSourceId, pTargetId; END IF; _result:= changeFkeyPointers('public', 'crmacct', pSourceId, pTargetId, ARRAY[ 'crmacctsel', 'crmacctmrgd' ], _purge) + changePseudoFKeyPointers('public', 'alarm', 'alarm_source_id', pSourceId, 'public', 'crmacct', pTargetId, 'alarm_source', 'CRMA', _purge) + changePseudoFKeyPointers('public', 'charass', 'charass_target_id', pSourceId, 'public', 'crmacct', pTargetId, 'charass_target_type', 'CRMACCT', _purge) + changePseudoFKeyPointers('public', 'comment', 'comment_source_id', pSourceId, 'public', 'crmacct', pTargetId, 'comment_source', 'CRMA', _purge) + changePseudoFKeyPointers('public', 'docass', 'docass_source_id', pSourceId, 'public', 'crmacct', pTargetId, 'docass_source_type', 'CRMA', _purge) + changePseudoFKeyPointers('public', 'docass', 'docass_target_id', pSourceId, 'public', 'crmacct', pTargetId, 'docass_target_type', 'CRMA', _purge) + changePseudoFKeyPointers('public', 'imageass', 'imageass_source_id', pSourceId, 'public', 'crmacct', pTargetId, 'imageass_source', 'CRMA', _purge) ; -- TODO: find a generic way to handle pseudofkeys in packages - see 9401 IF (fetchMetricBool('EnableBatchManager') AND packageIsEnabled('xtbatch')) THEN _result:= _result + changePseudoFKeyPointers('xtbatch', 'emlassc', 'emlassc_assc_id', pSourceId, 'public', 'crmacct', pTargetId, 'emlassc_type', 'CRMA', _purge); END IF; -- back up all of the values in the target record that are about to be changed FOR _coldesc IN SELECT attname, typname FROM pg_attribute JOIN pg_type ON (atttypid=pg_type.oid) JOIN pg_class ON (attrelid=pg_class.oid) JOIN pg_namespace ON (relnamespace=pg_namespace.oid) WHERE (attnum >= 0) AND (relname='crmacct') AND (nspname='public') AND (attname NOT IN ('crmacct_id', 'crmacct_number')) LOOP -- if we're supposed to merge this column at all EXECUTE 'SELECT ' || quote_ident('crmacctsel_mrg_' || _coldesc.attname) || ' FROM crmacctsel WHERE ((crmacctsel_src_crmacct_id=' || pSourceId || ') AND (crmacctsel_dest_crmacct_id=' || pTargetId || '))' INTO _mrgcol; IF (_mrgcol) THEN _colname := REPLACE(_coldesc.attname, 'crmacctsel_mrg_', ''); -- optionally back up the old value from the destination -- we'll back up the old value from the source further down IF (NOT _purge) THEN BEGIN EXECUTE 'INSERT INTO mrgundo ( mrgundo_schema, mrgundo_table, mrgundo_pkey_col, mrgundo_pkey_id, mrgundo_col, mrgundo_value, mrgundo_type, mrgundo_base_schema, mrgundo_base_table, mrgundo_base_id ) SELECT ''public'', ''crmacct'', ''crmacct_id'', crmacct_id, ' || quote_literal(_colname) || ', ' || quote_ident(_colname) || ', ' || quote_literal(_coldesc.typname) || ', ''public'', ''crmacct'', crmacct_id FROM crmacct WHERE (crmacct_id=' || pTargetId || ');' ; EXCEPTION WHEN unique_violation THEN RAISE EXCEPTION 'Could not make a backup copy of % when merging % into % [xtuple: merge, -8, %, %, public, crmacct, %]', _colname, pSourceId, pTargetId, _colname, pSourceId, pTargetId; END; END IF; -- TODO: what do we do about users? /* update the destination crmacct in one of 3 different ways: - crmacct_notes might be concatenated from more than one source record - foreign keys to crm account subtype records (e.g. crmacct_cust_id) must not leave orphaned records and must avoid uniqueness violations - some fields can simply be updated in place */ IF (_colname = 'crmacct_notes') THEN EXECUTE 'UPDATE crmacct dest SET ' || quote_ident(_colname) || '=dest.' || quote_ident(_colname) || E' || E''\\n'' || src.' || _colname || ' FROM crmacct src JOIN crmacctsel ON (src.crmacct_id=crmacctsel_src_crmacct_id) WHERE ((dest.crmacct_id=crmacctsel_dest_crmacct_id) AND (dest.crmacct_id!=crmacctsel_src_crmacct_id));'; ELSIF (_colname IN ('crmacct_cust_id', 'crmacct_prospect_id', 'crmacct_vend_id', 'crmacct_taxauth_id', 'crmacct_emp_id', 'crmacct_salesrep_id')) THEN IF (_colname IN ('crmacct_cust_id', 'crmacct_prospect_id')) THEN EXECUTE 'SELECT src.' || quote_ident(_colname) || ' IS NOT NULL AND (dest.crmacct_prospect_id IS NOT NULL OR dest.crmacct_cust_id IS NOT NULL) FROM crmacct src JOIN crmacctsel ON (src.crmacct_id=crmacctsel_src_crmacct_id) JOIN crmacct dest ON (crmacctsel_dest_crmacct_id=dest.crmacct_id) WHERE ((src.crmacct_id=' || pSourceId || ') AND (dest.crmacct_id=' || pTargetId || '))' INTO _hassubtype; IF (_hassubtype) THEN RAISE EXCEPTION 'Cannot merge two CRM Accounts that both refer to Customers and/or Prospects [xtuple: merge, -6, %, %]', pSourceId, pTargetId; END IF; ELSE EXECUTE 'SELECT src.' || quote_ident(_colname) || ' IS NOT NULL AND dest.'|| quote_ident(_colname) || ' IS NOT NULL FROM crmacct src JOIN crmacctsel ON (src.crmacct_id=crmacctsel_src_crmacct_id) JOIN crmacct dest ON (crmacctsel_dest_crmacct_id=dest.crmacct_id) WHERE ((src.crmacct_id=' || pSourceId || ') AND (dest.crmacct_id=' || pTargetId || '))' INTO _hassubtype; IF (_hassubtype) THEN RAISE EXCEPTION 'Cannot merge CRM Accounts until the % child records have been merged [xtuple: merge, -7, %, %, %]', _colname, _colname, pSourceId, pTargetId; END IF; END IF; /* clearing the source separately from setting the target avoids problems with triggers updating the wrong records */ EXECUTE 'SELECT ' || quote_ident(_colname) || ' FROM crmacct WHERE crmacct_id=' || pSourceId INTO _tmpid; -- now we have the data to back up the source IF (NOT _purge) THEN BEGIN EXECUTE 'INSERT INTO mrgundo ( mrgundo_schema, mrgundo_table, mrgundo_pkey_col, mrgundo_pkey_id, mrgundo_col, mrgundo_value, mrgundo_type, mrgundo_base_schema, mrgundo_base_table, mrgundo_base_id ) SELECT ''public'', ''crmacct'', ''crmacct_id'', crmacct_id, ' || quote_literal(_colname) || ', ' || quote_ident(_colname) || ', ' || quote_literal(_coldesc.typname) || ', ''public'', ''crmacct'', ' || pTargetId || ' FROM crmacct WHERE (crmacct_id=' || pSourceId || ');' ; EXCEPTION WHEN unique_violation THEN RAISE EXCEPTION 'Could not make a backup copy of % when merging % into % [xtuple: merge, -8, %, %, public, crmacct, %]', _colname, pSourceId, pTargetId, _colname, pSourceId, pTargetId; END; END IF; EXECUTE 'UPDATE crmacct SET ' || quote_ident(_colname) || '=NULL WHERE (crmacct_id=' || pSourceId || ');'; EXECUTE 'UPDATE crmacct SET ' || quote_ident(_colname) || '=' || quote_literal(_tmpid) || ' WHERE (crmacct_id=' || pTargetId || ');'; ELSE EXECUTE 'UPDATE crmacct dest SET ' || quote_ident(_colname) || ' =src.' || quote_ident(_colname) || ' FROM crmacct src WHERE ((dest.crmacct_id=' || pTargetId || ') AND (src.crmacct_id=' || pSourceId || '));'; END IF; GET DIAGNOSTICS _count = ROW_COUNT; _result := _result + _count; END IF; END LOOP; IF (_purge) THEN DELETE FROM crmacct WHERE crmacct = pSourceId; ELSE INSERT INTO mrgundo ( mrgundo_schema, mrgundo_table, mrgundo_pkey_col, mrgundo_pkey_id, mrgundo_col, mrgundo_value, mrgundo_type, mrgundo_base_schema, mrgundo_base_table, mrgundo_base_id ) SELECT 'public', 'crmacct', 'crmacct_id', pSourceId, 'crmacct_active', crmacct_active, 'bool', 'public', 'crmacct', pTargetId FROM crmacct WHERE crmacct_active AND (crmacct_id = pSourceId); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count > 0) THEN _result := _result + _count; UPDATE crmacct SET crmacct_active = false WHERE (crmacct_id=pSourceId); END IF; -- make a special record of the source crm account so we can delete it later INSERT INTO mrgundo ( mrgundo_schema, mrgundo_table, mrgundo_pkey_col, mrgundo_pkey_id, mrgundo_col, mrgundo_value, mrgundo_type, mrgundo_base_schema, mrgundo_base_table, mrgundo_base_id ) VALUES ( 'public', 'crmacct', 'crmacct_id', pSourceId, NULL, NULL, NULL, 'public', 'crmacct', pTargetId); END IF; DELETE FROM crmacctsel WHERE (crmacctsel_src_crmacct_id=pSourceId); RETURN _result; END; $_$; @DROP FUNCTION public.merge2crmaccts(integer, integer, boolean); publicadminfalse83992 "002FUNCTION merge2crmaccts(integer, integer, boolean)COMMENTCOMMENT ON FUNCTION merge2crmaccts(integer, integer, boolean) IS 'This function merges two crmacct records as decribed in crmacctsel records. For each field in the crmacctsel record marked TRUE, the data are copied from the crmacct record with crmacct_id=pSourceId to the record with crmacct_id=pTargetId. If the purge argument is TRUE, the source record is deleted. If it is FALSE, then mrgundo records are created so the merge can later be undone.'; publicadminfalse133312551692426mergecrmaccts(integer, boolean)FUNCTIONHCREATE FUNCTION mergecrmaccts(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTargetId ALIAS FOR $1; _purge BOOLEAN := COALESCE($2, FALSE); _retval INTEGER; BEGIN /* if crmacctsel says the target should not keep its original notes, clear them. notes are special because the merge allows concatenating them from multiple sources. this needs to be kept in sync with merge2crmaccts' similar check. */ IF NOT (SELECT crmacctsel_mrg_crmacct_notes FROM crmacctsel WHERE crmacctsel_src_crmacct_id=crmacctsel_dest_crmacct_id AND crmacctsel_dest_crmacct_id=pTargetId) THEN IF (NOT _purge) THEN INSERT INTO mrgundo ( mrgundo_schema, mrgundo_table, mrgundo_pkey_col, mrgundo_pkey_id, mrgundo_col, mrgundo_value, mrgundo_type, mrgundo_base_schema, mrgundo_base_table, mrgundo_base_id) SELECT 'public', 'crmacct', crmacct_id, 'public', 'crmacct', 'crmacct_id', crmacct_id, 'crmacct_notes', crmacct_notes, 'text', 'public', 'crmacct', crmacct_id FROM crmacct WHERE (crmacct_id=pTargetId); END IF; UPDATE crmacct SET crmacct_notes = '' WHERE (crmacct_id=pTargetId); END IF; -- merge the data from the various source records SELECT SUM(merge2crmaccts(crmacctsel_src_crmacct_id, pTargetId, _purge)) INTO _retval FROM crmacctsel WHERE ((crmacctsel_dest_crmacct_id=pTargetId) AND (crmacctsel_dest_crmacct_id!=crmacctsel_src_crmacct_id)); DELETE FROM crmacctsel WHERE crmacctsel_dest_crmacct_id=pTargetId; RETURN COALESCE(_retval, 0); END; $_$; 6DROP FUNCTION public.mergecrmaccts(integer, boolean); publicadminfalse83992 "00(FUNCTION mergecrmaccts(integer, boolean)COMMENTfCOMMENT ON FUNCTION mergecrmaccts(integer, boolean) IS 'This function uses the crmacctsel table to merge multiple crmacct records together. Only the merges into the specified target account are performed. Most of the work is done by repeated calls to the merge2crmaccts function. If the purge argument is FALSE, data are kept to allow reversing the merge.'; publicadminfalse173112551692427movebomitemdown(integer)FUNCTIONCREATE FUNCTION movebomitemdown(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBomitemid ALIAS FOR $1; _nextBomitem RECORD; BEGIN SELECT nextbomitem.bomitem_seqnumber AS next_seqnumber, thisbomitem.bomitem_seqnumber AS this_seqnumber, thisbomitem.bomitem_parent_item_id AS parent_item_id, thisbomitem.bomitem_rev_id AS rev_id INTO _nextBomitem FROM bomitem AS nextbomitem, bomitem AS thisbomitem WHERE ((nextbomitem.bomitem_seqnumber > thisbomitem.bomitem_seqnumber) AND (nextbomitem.bomitem_parent_item_id=thisbomitem.bomitem_parent_item_id) AND (nextbomitem.bomitem_rev_id=thisbomitem.bomitem_rev_id) AND (thisbomitem.bomitem_id=pBomitemid)) ORDER BY next_seqnumber LIMIT 1; IF (FOUND) THEN -- Swap the seqnumber of the current bomitem and the next bomitem -- There is the potential for multiple bomitems with the same seqnumber UPDATE bomitem SET bomitem_seqnumber=0 WHERE (bomitem_seqnumber=_nextBomitem.next_seqnumber) AND (bomitem_parent_item_id=_nextBomitem.parent_item_id) AND (bomitem_rev_id=_nextBomitem.rev_id); UPDATE bomitem SET bomitem_seqnumber=_nextBomitem.next_seqnumber WHERE (bomitem_seqnumber=_nextBomitem.this_seqnumber) AND (bomitem_parent_item_id=_nextBomitem.parent_item_id) AND (bomitem_rev_id=_nextBomitem.rev_id); UPDATE bomitem SET bomitem_seqnumber=_nextBomitem.this_seqnumber WHERE (bomitem_seqnumber=0) AND (bomitem_parent_item_id=_nextBomitem.parent_item_id) AND (bomitem_rev_id=_nextBomitem.rev_id); END IF; RETURN 1; END; $_$; /DROP FUNCTION public.movebomitemdown(integer); publicadminfalse8399212551692428movebomitemup(integer)FUNCTIONCREATE FUNCTION movebomitemup(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBomitemid ALIAS FOR $1; _nextBomitem RECORD; BEGIN SELECT nextbomitem.bomitem_seqnumber AS next_seqnumber, thisbomitem.bomitem_seqnumber AS this_seqnumber, thisbomitem.bomitem_parent_item_id AS parent_item_id, thisbomitem.bomitem_rev_id AS rev_id INTO _nextBomitem FROM bomitem AS nextbomitem, bomitem AS thisbomitem WHERE ((nextbomitem.bomitem_seqnumber < thisbomitem.bomitem_seqnumber) AND (nextbomitem.bomitem_parent_item_id=thisbomitem.bomitem_parent_item_id) AND (nextbomitem.bomitem_rev_id=thisbomitem.bomitem_rev_id) AND (thisbomitem.bomitem_id=pBomitemid)) ORDER BY next_seqnumber DESC LIMIT 1; IF (FOUND) THEN -- Swap the seqnumber of the current bomitem and the next bomitem -- There is the potential for multiple bomitems with the same seqnumber UPDATE bomitem SET bomitem_seqnumber=0 WHERE (bomitem_seqnumber=_nextBomitem.next_seqnumber) AND (bomitem_parent_item_id=_nextBomitem.parent_item_id) AND (bomitem_rev_id=_nextBomitem.rev_id); UPDATE bomitem SET bomitem_seqnumber=_nextBomitem.next_seqnumber WHERE (bomitem_seqnumber=_nextBomitem.this_seqnumber) AND (bomitem_parent_item_id=_nextBomitem.parent_item_id) AND (bomitem_rev_id=_nextBomitem.rev_id); UPDATE bomitem SET bomitem_seqnumber=_nextBomitem.this_seqnumber WHERE (bomitem_seqnumber=0) AND (bomitem_parent_item_id=_nextBomitem.parent_item_id) AND (bomitem_rev_id=_nextBomitem.rev_id); END IF; RETURN 1; END; $_$; -DROP FUNCTION public.movebomitemup(integer); publicadminfalse8399212551692429moveccarddown(integer)FUNCTIONCREATE FUNCTION moveccarddown(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCcardid ALIAS FOR $1; _nextCcard RECORD; BEGIN SELECT nextCcard.ccard_id, nextCcard.ccard_seq AS next_seqnumber, thisCcard.ccard_seq AS this_seqnumber INTO _nextCcard FROM Ccard AS nextCcard, Ccard AS thisCcard WHERE ((nextCcard.ccard_seq > thisCcard.ccard_seq) AND (nextCcard.ccard_cust_id=thisCcard.ccard_cust_id) AND (thisCcard.ccard_id=pCcardid)) ORDER BY next_seqnumber LIMIT 1; IF (FOUND) THEN -- Swap the seqnumber of the current Ccard and the next Ccard UPDATE Ccard SET ccard_seq=_nextCcard.next_seqnumber WHERE (ccard_id=pCcardid); UPDATE Ccard SET ccard_seq=_nextCcard.this_seqnumber WHERE (ccard_id=_nextCcard.ccard_id); END IF; RETURN 1; END; $_$; -DROP FUNCTION public.moveccarddown(integer); publicadminfalse8399212551692430moveccardup(integer)FUNCTIONCREATE FUNCTION moveccardup(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCcardid ALIAS FOR $1; _nextCcard RECORD; BEGIN SELECT nextCcard.ccard_id AS ccard_id, nextCcard.ccard_seq AS next_seqnumber, thisCcard.ccard_seq AS this_seqnumber INTO _nextCcard FROM ccard AS nextCcard, ccard AS thisCcard WHERE ((nextCcard.ccard_seq < thisCcard.ccard_seq) AND (nextCcard.ccard_cust_id=thisCcard.ccard_cust_id) AND (thisCcard.ccard_id=pCcardid)) ORDER BY next_seqnumber DESC LIMIT 1; IF (FOUND) THEN -- Swap the seqnumber of the current Ccard and the next Ccard UPDATE Ccard SET ccard_seq=_nextCcard.next_seqnumber WHERE (ccard_id=pCcardid); UPDATE Ccard SET ccard_seq=_nextCcard.this_seqnumber WHERE (ccard_id=_nextCcard.ccard_id); END IF; RETURN 1; END; $_$; +DROP FUNCTION public.moveccardup(integer); publicadminfalse8399212551692431moveflgroupdown(integer)FUNCTIONCREATE FUNCTION moveflgroupdown(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlgrpid ALIAS FOR $1; _from RECORD; _to RECORD; BEGIN SELECT flgrp_id AS id, flgrp_flhead_id AS flhead_id, flgrp_flgrp_id AS flgrp_id, flgrp_order AS ord INTO _from FROM flgrp WHERE (flgrp_id=pFlgrpid); IF (NOT FOUND) THEN RETURN -1; END IF; SELECT id, type, ord INTO _to FROM (SELECT flitem_id AS id, 'I' AS type, flitem_order AS ord FROM flitem WHERE ((flitem_flgrp_id=_from.flgrp_id) AND (flitem_flhead_id=_from.flhead_id)) UNION SELECT flgrp_id AS id, 'G' AS type, flgrp_order AS ord FROM flgrp WHERE ((flgrp_flgrp_id=_from.flgrp_id) AND (flgrp_flhead_id=_from.flhead_id)) UNION SELECT flspec_id AS id, 'S' AS type, flspec_order AS ord FROM flspec WHERE ((flspec_flgrp_id=_from.flgrp_id) AND (flspec_flhead_id=_from.flhead_id)) ) AS data WHERE (ord > _from.ord) ORDER BY ord LIMIT 1; IF (FOUND) THEN UPDATE flgrp SET flgrp_order=_to.ord WHERE (flgrp_id=_from.id); IF (_to.type='I') THEN UPDATE flitem SET flitem_order=_from.ord WHERE (flitem_id=_to.id); ELSE IF (_to.type='G') THEN UPDATE flgrp SET flgrp_order=_from.ord WHERE (flgrp_id=_to.id); ELSE IF (_to.type='S') THEN UPDATE flspec SET flspec_order=_from.ord WHERE (flspec_id=_to.id); END IF; END IF; END IF; END IF; RETURN 0; END; $_$; /DROP FUNCTION public.moveflgroupdown(integer); publicadminfalse8399212551692432moveflgroupup(integer)FUNCTION CREATE FUNCTION moveflgroupup(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlgrpid ALIAS FOR $1; _from RECORD; _to RECORD; BEGIN SELECT flgrp_id AS id, flgrp_flhead_id AS flhead_id, flgrp_flgrp_id AS flgrp_id, flgrp_order AS ord INTO _from FROM flgrp WHERE (flgrp_id=pFlgrpid); IF (NOT FOUND) THEN RETURN -1; END IF; SELECT id, type, ord INTO _to FROM (SELECT flitem_id AS id, 'I' AS type, flitem_order AS ord FROM flitem WHERE ((flitem_flgrp_id=_from.flgrp_id) AND (flitem_flhead_id=_from.flhead_id)) UNION SELECT flgrp_id AS id, 'G' AS type, flgrp_order AS ord FROM flgrp WHERE ((flgrp_flgrp_id=_from.flgrp_id) AND (flgrp_flhead_id=_from.flhead_id)) UNION SELECT flspec_id AS id, 'S' AS type, flspec_order AS ord FROM flspec WHERE ((flspec_flgrp_id=_from.flgrp_id) AND (flspec_flhead_id=_from.flhead_id)) ) AS data WHERE (ord < _from.ord) ORDER BY ord DESC LIMIT 1; IF (FOUND) THEN UPDATE flgrp SET flgrp_order=_to.ord WHERE (flgrp_id=_from.id); IF (_to.type='I') THEN UPDATE flitem SET flitem_order=_from.ord WHERE (flitem_id=_to.id); ELSE IF (_to.type='G') THEN UPDATE flgrp SET flgrp_order=_from.ord WHERE (flgrp_id=_to.id); ELSE IF (_to.type='S') THEN UPDATE flspec SET flspec_order=_from.ord WHERE (flspec_id=_to.id); END IF; END IF; END IF; END IF; RETURN 0; END; $_$; -DROP FUNCTION public.moveflgroupup(integer); publicadminfalse8399212551692433moveflitemdown(integer)FUNCTIONCREATE FUNCTION moveflitemdown(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlitemid ALIAS FOR $1; _from RECORD; _to RECORD; BEGIN SELECT flitem_id AS id, flitem_flhead_id AS flhead_id, flitem_flgrp_id AS flgrp_id, flitem_order AS ord INTO _from FROM flitem WHERE (flitem_id=pFlitemid); IF (NOT FOUND) THEN RETURN -1; END IF; SELECT id, type, ord INTO _to FROM (SELECT flitem_id AS id, 'I' AS type, flitem_order AS ord FROM flitem WHERE ((flitem_flgrp_id=_from.flgrp_id) AND (flitem_flhead_id=_from.flhead_id)) UNION SELECT flgrp_id AS id, 'G' AS type, flgrp_order AS ord FROM flgrp WHERE ((flgrp_flgrp_id=_from.flgrp_id) AND (flgrp_flhead_id=_from.flhead_id)) UNION SELECT flspec_id AS id, 'S' AS type, flspec_order AS ord FROM flspec WHERE ((flspec_flgrp_id=_from.flgrp_id) AND (flspec_flhead_id=_from.flhead_id)) ) AS data WHERE (ord > _from.ord) ORDER BY ord LIMIT 1; IF (FOUND) THEN UPDATE flitem SET flitem_order=_to.ord WHERE (flitem_id=_from.id); IF (_to.type='I') THEN UPDATE flitem SET flitem_order=_from.ord WHERE (flitem_id=_to.id); ELSE IF (_to.type='G') THEN UPDATE flgrp SET flgrp_order=_from.ord WHERE (flgrp_id=_to.id); ELSE IF (_to.type='S') THEN UPDATE flspec SET flspec_order=_from.ord WHERE (flspec_id=_to.id); END IF; END IF; END IF; END IF; RETURN 0; END; $_$; .DROP FUNCTION public.moveflitemdown(integer); publicadminfalse8399212551692434moveflitemup(integer)FUNCTIONCREATE FUNCTION moveflitemup(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlitemid ALIAS FOR $1; _from RECORD; _to RECORD; BEGIN SELECT flitem_id AS id, flitem_flhead_id AS flhead_id, flitem_flgrp_id AS flgrp_id, flitem_order AS ord INTO _from FROM flitem WHERE (flitem_id=pFlitemid); IF (NOT FOUND) THEN RETURN -1; END IF; SELECT id, type, ord INTO _to FROM (SELECT flitem_id AS id, 'I' AS type, flitem_order AS ord FROM flitem WHERE ((flitem_flgrp_id=_from.flgrp_id) AND (flitem_flhead_id=_from.flhead_id)) UNION SELECT flgrp_id AS id, 'G' AS type, flgrp_order AS ord FROM flgrp WHERE ((flgrp_flgrp_id=_from.flgrp_id) AND (flgrp_flhead_id=_from.flhead_id)) UNION SELECT flspec_id AS id, 'S' AS type, flspec_order AS ord FROM flspec WHERE ((flspec_flgrp_id=_from.flgrp_id) AND (flspec_flhead_id=_from.flhead_id)) ) AS data WHERE (ord < _from.ord) ORDER BY ord DESC LIMIT 1; IF (FOUND) THEN UPDATE flitem SET flitem_order=_to.ord WHERE (flitem_id=_from.id); IF (_to.type='I') THEN UPDATE flitem SET flitem_order=_from.ord WHERE (flitem_id=_to.id); ELSE IF (_to.type='G') THEN UPDATE flgrp SET flgrp_order=_from.ord WHERE (flgrp_id=_to.id); ELSE IF (_to.type='S') THEN UPDATE flspec SET flspec_order=_from.ord WHERE (flspec_id=_to.id); END IF; END IF; END IF; END IF; RETURN 0; END; $_$; ,DROP FUNCTION public.moveflitemup(integer); publicadminfalse8399212551692435moveflspecdown(integer)FUNCTIONCREATE FUNCTION moveflspecdown(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlspecid ALIAS FOR $1; _from RECORD; _to RECORD; BEGIN SELECT flspec_id AS id, flspec_flhead_id AS flhead_id, flspec_flgrp_id AS flgrp_id, flspec_order AS ord INTO _from FROM flspec WHERE (flspec_id=pFlspecid); IF (NOT FOUND) THEN RETURN -1; END IF; SELECT id, type, ord INTO _to FROM (SELECT flitem_id AS id, 'I' AS type, flitem_order AS ord FROM flitem WHERE ((flitem_flgrp_id=_from.flgrp_id) AND (flitem_flhead_id=_from.flhead_id)) UNION SELECT flgrp_id AS id, 'G' AS type, flgrp_order AS ord FROM flgrp WHERE ((flgrp_flgrp_id=_from.flgrp_id) AND (flgrp_flhead_id=_from.flhead_id)) UNION SELECT flspec_id AS id, 'S' AS type, flspec_order AS ord FROM flspec WHERE ((flspec_flgrp_id=_from.flgrp_id) AND (flspec_flhead_id=_from.flhead_id)) ) AS data WHERE (ord > _from.ord) ORDER BY ord LIMIT 1; IF (FOUND) THEN UPDATE flspec SET flspec_order=_to.ord WHERE (flspec_id=_from.id); IF (_to.type='I') THEN UPDATE flitem SET flitem_order=_from.ord WHERE (flitem_id=_to.id); ELSE IF (_to.type='G') THEN UPDATE flgrp SET flgrp_order=_from.ord WHERE (flgrp_id=_to.id); ELSE IF (_to.type='S') THEN UPDATE flspec SET flspec_order=_from.ord WHERE (flspec_id=_to.id); END IF; END IF; END IF; END IF; RETURN 0; END; $_$; .DROP FUNCTION public.moveflspecdown(integer); publicadminfalse8399212551692436moveflspecup(integer)FUNCTIONCREATE FUNCTION moveflspecup(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pFlspecid ALIAS FOR $1; _from RECORD; _to RECORD; BEGIN SELECT flspec_id AS id, flspec_flhead_id AS flhead_id, flspec_flgrp_id AS flgrp_id, flspec_order AS ord INTO _from FROM flspec WHERE (flspec_id=pFlspecid); IF (NOT FOUND) THEN RETURN -1; END IF; SELECT id, type, ord INTO _to FROM (SELECT flitem_id AS id, 'I' AS type, flitem_order AS ord FROM flitem WHERE ((flitem_flgrp_id=_from.flgrp_id) AND (flitem_flhead_id=_from.flhead_id)) UNION SELECT flgrp_id AS id, 'G' AS type, flgrp_order AS ord FROM flgrp WHERE ((flgrp_flgrp_id=_from.flgrp_id) AND (flgrp_flhead_id=_from.flhead_id)) UNION SELECT flspec_id AS id, 'S' AS type, flspec_order AS ord FROM flspec WHERE ((flspec_flgrp_id=_from.flgrp_id) AND (flspec_flhead_id=_from.flhead_id)) ) AS data WHERE (ord < _from.ord) ORDER BY ord DESC LIMIT 1; IF (FOUND) THEN UPDATE flspec SET flspec_order=_to.ord WHERE (flspec_id=_from.id); IF (_to.type='I') THEN UPDATE flitem SET flitem_order=_from.ord WHERE (flitem_id=_to.id); ELSE IF (_to.type='G') THEN UPDATE flgrp SET flgrp_order=_from.ord WHERE (flgrp_id=_to.id); ELSE IF (_to.type='S') THEN UPDATE flspec SET flspec_order=_from.ord WHERE (flspec_id=_to.id); END IF; END IF; END IF; END IF; RETURN 0; END; $_$; ,DROP FUNCTION public.moveflspecup(integer); publicadminfalse8399212551692437%movescript(integer, integer, integer)FUNCTION CREATE FUNCTION movescript(integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pscriptid ALIAS FOR $1; poldpkgid ALIAS FOR $2; pnewpkgid ALIAS FOR $3; _deletestr TEXT; _destination TEXT; _insertstr TEXT; _rows INTEGER; _selectstr TEXT; _source TEXT; _record RECORD; BEGIN IF (poldpkgid = pnewpkgid) THEN RETURN 0; END IF; IF (poldpkgid = -1) THEN _source = 'public.script'; ELSE SELECT pkghead_name || '.pkgscript' INTO _source FROM pkghead WHERE pkghead_id=poldpkgid; IF NOT FOUND THEN RETURN -1; END IF; END IF; IF (pnewpkgid = -1) THEN _destination = 'public.script'; ELSE SELECT pkghead_name || '.pkgscript' INTO _destination FROM pkghead WHERE pkghead_id=pnewpkgid; IF NOT FOUND THEN RETURN -2; END IF; END IF; _selectstr := ' SELECT * FROM ' || _source || ' WHERE script_id = ' || pscriptid; EXECUTE _selectstr INTO _record; _deletestr := 'DELETE FROM ONLY ' || _source || ' WHERE script_id = ' || pscriptid; EXECUTE _deletestr; GET DIAGNOSTICS _rows = ROW_COUNT; RAISE NOTICE '% rows from %', _rows, _deletestr; IF (_rows < 1) THEN RETURN -3; ELSIF (_rows > 1) THEN RAISE EXCEPTION 'Tried to delete % scripts with the id % when there should be exactly 1', _rows, pscriptid; END IF; _insertstr := 'INSERT INTO ' || _destination || ' (script_id, script_name, script_order, script_enabled, ' || ' script_source, script_notes) VALUES (' || _record.script_id || ',' || quote_literal(_record.script_name) || ',' || _record.script_order || ',' || _record.script_enabled || ',' || quote_literal(_record.script_source) || ',' || quote_literal(_record.script_notes ) || ');' ; EXECUTE _insertstr; GET DIAGNOSTICS _rows = ROW_COUNT; RAISE NOTICE '% rows from %', _rows, _insertstr; IF (_rows < 1) THEN RETURN -4; ELSIF (_rows > 1) THEN RAISE EXCEPTION 'Tried to insert % scripts with the id % when there should be exactly 1', _rows, pscriptid; END IF; RETURN pscriptid; END; $_$; <DROP FUNCTION public.movescript(integer, integer, integer); publicadminfalse8399212551692438%moveuiform(integer, integer, integer)FUNCTION CREATE FUNCTION moveuiform(integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE puiformid ALIAS FOR $1; poldpkgid ALIAS FOR $2; pnewpkgid ALIAS FOR $3; _deletestr TEXT; _destination TEXT; _insertstr TEXT; _rows INTEGER; _selectstr TEXT; _source TEXT; _record RECORD; BEGIN IF (poldpkgid = pnewpkgid) THEN RETURN 0; END IF; IF (poldpkgid = -1) THEN _source = 'public.uiform'; ELSE SELECT pkghead_name || '.pkguiform' INTO _source FROM pkghead WHERE pkghead_id=poldpkgid; IF NOT FOUND THEN RETURN -1; END IF; END IF; IF (pnewpkgid = -1) THEN _destination = 'public.uiform'; ELSE SELECT pkghead_name || '.pkguiform' INTO _destination FROM pkghead WHERE pkghead_id=pnewpkgid; IF NOT FOUND THEN RETURN -2; END IF; END IF; _selectstr := ' SELECT * FROM ' || _source || ' WHERE uiform_id = ' || puiformid; EXECUTE _selectstr INTO _record; _deletestr := 'DELETE FROM ONLY ' || _source || ' WHERE uiform_id = ' || puiformid; EXECUTE _deletestr; GET DIAGNOSTICS _rows = ROW_COUNT; RAISE NOTICE '% rows from %', _rows, _deletestr; IF (_rows < 1) THEN RETURN -3; ELSIF (_rows > 1) THEN RAISE EXCEPTION 'Tried to delete % uiforms with the id % when there should be exactly 1', _rows, puiformid; END IF; _insertstr := 'INSERT INTO ' || _destination || ' (uiform_id, uiform_name, uiform_order, uiform_enabled, ' || ' uiform_source, uiform_notes) VALUES (' || _record.uiform_id || ',' || quote_literal(_record.uiform_name) || ',' || _record.uiform_order || ',' || _record.uiform_enabled || ',' || quote_literal(_record.uiform_source) || ',' || quote_literal(_record.uiform_notes ) || ');' ; EXECUTE _insertstr; GET DIAGNOSTICS _rows = ROW_COUNT; RAISE NOTICE '% rows from %', _rows, _insertstr; IF (_rows < 1) THEN RETURN -4; ELSIF (_rows > 1) THEN RAISE EXCEPTION 'Tried to insert % uiforms with the id % when there should be exactly 1', _rows, puiformid; END IF; RETURN puiformid; END; $_$; <DROP FUNCTION public.moveuiform(integer, integer, integer); publicadminfalse83992125516924397moveupdown(integer, text, text, text, text, text, text)FUNCTIONB CREATE FUNCTION moveupdown(pid integer, pschema text, ptable text, pseqcol text, pjoincol text, pextra text, pdir text) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE _keyfield TEXT; _keysize INTEGER; _qry TEXT; _r RECORD; _rowcnt INTEGER; _schema TEXT := COALESCE(pSchema, 'public'); BEGIN RAISE DEBUG 'moveUpDown(%, %, %, %, %, %, %) entered', pId, pSchema, pTable, pSeqCol, pJoinCol, pExtra, pDir; IF (UPPER(pDir) NOT IN ('UP', 'DOWN')) THEN RAISE EXCEPTION 'Cannot change the order of records; unsure what % means for sequencing [xtuple: moveUpDown, -1, %, %.%]', pDir, pDir, _schema, pTable; END IF; SELECT attname, ARRAY_UPPER(conkey, 1) INTO _keyfield, _keysize FROM pg_attribute JOIN pg_constraint ON (attrelid=conrelid AND attnum=conkey[1]) JOIN pg_class ON (conrelid=pg_class.oid) JOIN pg_namespace ON (relnamespace=pg_namespace.oid) WHERE ((contype='p') AND (nspname=_schema) AND (relname=pTable)); RAISE DEBUG 'SELECT attname... returned %, %', _keyfield, _keysize; IF (_keysize > 1) THEN RAISE EXCEPTION 'Cannot change the order of records because %.% has a composite primary key [xtuple: moveUpDown, -2, %.%]', _schema, pTable, _schema, pTable; END IF; /* SELECT next._keyfield AS nextid, next.pSeqCol AS nextseq, this.pSeqCol AS thisseq FROM _schema.pTable AS next, _schema.pTable AS this WHERE (this._keyfield=$1) AND (next.pSeqCol [> or <] this.pSeqCol) [ AND (next.pJoinCol=this.pJoinCol) ] [ AND (pExtra) ] ORDER BY nextseq [ DESC or ASC ] LIMIT 1; */ _qry := 'SELECT next.' || quote_ident(_keyfield) || ' AS nextid, next.' || quote_ident(pSeqCol) || ' AS nextseq, this.' || quote_ident(pSeqCol) || ' AS thisseq FROM ' || _schema || '.' || quote_ident(pTable) || ' AS next, ' || _schema || '.' || quote_ident(pTable) || ' AS this WHERE ((this.' || quote_ident(_keyfield) || '=$1) AND (next.' || quote_ident(pSeqCol) || CASE pDir WHEN 'UP' THEN ' < ' ELSE ' > ' END || 'this.' || quote_ident(pSeqCol) || ')' || CASE WHEN pJoinCol IS NULL THEN '' ELSE ' AND (next.' || quote_ident(pJoinCol) || '=this.' || quote_ident(pJoinCol) || ')' END || ' AND (' || COALESCE(pExtra, 'TRUE') || ')) ORDER BY nextseq ' || CASE pDir WHEN 'UP' THEN 'DESC' ELSE 'ASC' END || ' LIMIT 1;'; RAISE DEBUG 'moveUpDown about to use % when running %', pId, _qry; EXECUTE _qry INTO _r USING pId; GET DIAGNOSTICS _rowcnt = ROW_COUNT; RAISE DEBUG 'next id %, next seq %, this id %, this seq %', _r.nextid, _r.nextseq, pId, _r.thisseq; IF (_rowcnt > 0) THEN _qry := 'UPDATE ' || _schema || '.' || quote_ident(pTable) || ' SET ' || pSeqCol || '=CAST($1 AS INTEGER) WHERE (' || quote_ident(_keyfield) || '=$2);'; EXECUTE _qry USING -1, _r.nextid; EXECUTE _qry USING _r.nextseq, pId; EXECUTE _qry USING _r.thisseq, _r.nextid; RETURN _r.nextid; END IF; RETURN pId; END; $_$; ~DROP FUNCTION public.moveupdown(pid integer, pschema text, ptable text, pseqcol text, pjoincol text, pextra text, pdir text); publicadminfalse83992 "00pFUNCTION moveupdown(pid integer, pschema text, ptable text, pseqcol text, pjoincol text, pextra text, pdir text)COMMENT4COMMENT ON FUNCTION moveupdown(pid integer, pschema text, ptable text, pseqcol text, pjoincol text, pextra text, pdir text) IS 'moveUpDown moves a particular record up or down in an ordered list. pId argument names the record to move. pSchema (uses public if NULL) and pTable name the table holding the list. pSeqCol is the column that holds the sequence number. pJoinCol is the column that distinguishes one list from another in the same table, or NULL if the table holds only one list. pExtra is an extra join clause that may be required, or NULL. pDir is either UP, meaning move the pId record closer to the beginning, or DOWN. Returns the id of the record with which pId was swapped, or pId if the record was already at the end in the specified direction.'; publicadminfalse174612551692440&nextperiodbyinterval(integer, integer)FUNCTIONYCREATE FUNCTION nextperiodbyinterval(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; pInterval ALIAS FOR $2; _periodid INTEGER; BEGIN SELECT b.period_id INTO _periodid FROM period AS a, period AS b WHERE ((a.period_id=pPeriodid) AND (b.period_start >= a.period_start)) ORDER BY b.period_start LIMIT 1 OFFSET pInterval; IF (NOT FOUND) THEN RETURN -1; END IF; RETURN _periodid; END; $_$; =DROP FUNCTION public.nextperiodbyinterval(integer, integer); publicadminfalse8399212551692441nextprsubnumber(integer)FUNCTIONCREATE FUNCTION nextprsubnumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrNumber ALIAS FOR $1; _subNumber INTEGER; BEGIN SELECT MAX(pr_subnumber) INTO _subNumber FROM pr WHERE (pr_number=pPrNumber); IF (_subNumber IS NULL) THEN _subNumber := 0; END IF; RETURN (_subNumber + 1); END; $_$; /DROP FUNCTION public.nextprsubnumber(integer); publicadminfalse8399212551692442nextwosubnumber(integer)FUNCTION&CREATE FUNCTION nextwosubnumber(integer) RETURNS integer LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT COALESCE((MAX(wo_subnumber) + 1), 1) FROM wo WHERE (wo_number=($1)); $_$; /DROP FUNCTION public.nextwosubnumber(integer); publicadminfalse812551692443noneg(numeric)FUNCTIONSCREATE FUNCTION noneg(numeric) RETURNS numeric LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pValue ALIAS FOR $1; BEGIN IF (pValue < 0) THEN RETURN 0; ELSE RETURN pValue; END IF; END; $_$; %DROP FUNCTION public.noneg(numeric); publicadminfalse8399212551692444nopos(numeric)FUNCTIONSCREATE FUNCTION nopos(numeric) RETURNS numeric LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pValue ALIAS FOR $1; BEGIN IF (pValue > 0) THEN RETURN 0; ELSE RETURN pValue; END IF; END; $_$; %DROP FUNCTION public.nopos(numeric); publicadminfalse8399212551692445%normalizetrialbal(integer, character)FUNCTIONCREATE FUNCTION normalizetrialbal(integer, character) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTrialbalid ALIAS FOR $1; pSide ALIAS FOR $2; _value NUMERIC; _r RECORD; BEGIN SELECT accnt_type, trialbal_beginning, trialbal_ending INTO _r FROM trialbal, accnt WHERE ( (trialbal_accnt_id=accnt_id) AND (trialbal_id=pTrialbalid) ); IF (NOT FOUND) THEN RETURN -1; END IF; -- If we are looking for the Ending Balance, cache it IF (pSide = 'E') THEN _value = _r.trialbal_ending; -- We had better been looking for the Beginning Balance! ELSE _value = _r.trialbal_beginning; END IF; -- If the accnt_type is Asset or Expense, swap the sense IF (_r.accnt_type IN ('A', 'E')) THEN _value := (_value * -1); END IF; RETURN _value; END; $_$; <DROP FUNCTION public.normalizetrialbal(integer, character); publicadminfalse8399212551692446numofdatabaseusers()FUNCTIONCREATE FUNCTION numofdatabaseusers() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _count INTEGER; BEGIN SELECT count(*) INTO _count FROM pg_stat_activity, pg_locks WHERE((database=datid) AND (classid=datid) AND (objsubid=2) AND (procpid = pg_backend_pid())); IF (_count IS NULL) THEN _count := 0; END IF; RETURN _count; END; $$; +DROP FUNCTION public.numofdatabaseusers(); publicadminfalse8399212551692447numofserverusers()FUNCTION}CREATE FUNCTION numofserverusers() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _count INTEGER; BEGIN SELECT COUNT(*) INTO _count FROM pg_stat_activity; IF (_count IS NULL) THEN _count := 0; END IF; RETURN _count; END; $$; )DROP FUNCTION public.numofserverusers(); publicadminfalse8399212551692448openaccountingperiod(integer)FUNCTIONCREATE FUNCTION openaccountingperiod(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; _r RECORD; BEGIN -- Check to make use that the period is closed IF ( ( SELECT (NOT period_closed) FROM period WHERE (period_id=pPeriodid) ) ) THEN RETURN -1; END IF; IF ( ( SELECT (count(period_id) > 0) FROM period WHERE ((period_end > ( SELECT period_end FROM period WHERE (period_id=pPeriodId)) ) AND (period_closed)) ) ) THEN RETURN -3; END IF; -- Make sure the year is open IF ( ( SELECT (yearperiod_closed) FROM yearperiod JOIN period ON (period_yearperiod_id=yearperiod_id) WHERE (period_id=pPeriodid) ) ) THEN RETURN -4; END IF; -- Reset the period_closed flag UPDATE period SET period_closed=FALSE WHERE (period_id=pPeriodid); -- Post any unposted G/L Transactions into the new period FOR _r IN SELECT DISTINCT gltrans_sequence FROM gltrans, period WHERE ( (NOT gltrans_posted) AND (gltrans_date BETWEEN period_start AND period_end) AND (period_id=pPeriodid) ) LOOP PERFORM postIntoTrialBalance(_r.gltrans_sequence); END LOOP; RETURN pPeriodid; END; $_$; 4DROP FUNCTION public.openaccountingperiod(integer); publicadminfalse8399212551692449!openaccountingyearperiod(integer)FUNCTIONCREATE FUNCTION openaccountingyearperiod(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pYearPeriodId ALIAS FOR $1; _r RECORD; BEGIN -- Check to make use that the yearperiod is closed IF ( ( SELECT (NOT yearperiod_closed) FROM yearperiod WHERE (yearperiod_id=pYearPeriodId) ) ) THEN RETURN -1; END IF; IF ( ( SELECT (count(yearperiod_id) > 0) FROM yearperiod WHERE ((yearperiod_end> ( SELECT yearperiod_end FROM yearperiod WHERE (yearperiod_id=pYearPeriodId)) ) AND (yearperiod_closed)) ) ) THEN RETURN -2; END IF; -- Reset the yearperiod_closed flag UPDATE yearperiod SET yearperiod_closed=FALSE WHERE (yearperiod_id=pYearPeriodId); RETURN pYearPeriodid; END; $_$; 8DROP FUNCTION public.openaccountingyearperiod(integer); publicadminfalse8399212551692450"openapitemsvalue(integer, integer)FUNCTIONCREATE FUNCTION openapitemsvalue(pvendid integer, pperiodid integer) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _value NUMERIC; BEGIN SELECT SUM( (apopen_amount - apopen_paid) / apopen_curr_rate * CASE WHEN (apopen_doctype IN ('D', 'V')) THEN 1 ELSE -1 END ) INTO _value FROM apopen WHERE ( (apopen_open) AND (apopen_vend_id=pVendid) AND (apopen_duedate BETWEEN findPeriodStart(pPeriodid) AND findPeriodEnd(pPeriodid)) ); RETURN COALESCE(_value, 0.0); END; $$; KDROP FUNCTION public.openapitemsvalue(pvendid integer, pperiodid integer); publicadminfalse8399212551692451"openaritemsvalue(integer, integer)FUNCTIONCREATE FUNCTION openaritemsvalue(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; pPeriodid ALIAS FOR $2; _value NUMERIC; BEGIN SELECT SUM( CASE WHEN (aropen_doctype IN ('C', 'R')) THEN ((aropen_amount - aropen_paid) * -1) ELSE (aropen_amount - aropen_paid) END ) INTO _value FROM aropen WHERE ( (aropen_open) AND (aropen_cust_id=pCustid) AND (aropen_duedate BETWEEN findPeriodStart(pPeriodid) AND findPeriodEnd(pPeriodid)) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; 9DROP FUNCTION public.openaritemsvalue(integer, integer); publicadminfalse8399212551692452;openrecurringitems(integer, text, timestamp with time zone)FUNCTIONCREATE FUNCTION openrecurringitems(integer, text, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pParentid ALIAS FOR $1; pType TEXT := UPPER($2); pDatetime TIMESTAMP WITH TIME ZONE := COALESCE($3, CURRENT_TIMESTAMP); _count INTEGER := -1; _countstmt TEXT; _rt RECORD; BEGIN IF (pParentid IS NULL) THEN RETURN -11; END IF; SELECT * INTO _rt FROM recurtype WHERE (UPPER(recurtype_type)=pType); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count <= 0) THEN RETURN -10; END IF; _countstmt := 'SELECT COUNT(*) FROM [fulltable]' || ' WHERE (NOT ([done])' || ' AND ([schedcol]>=''$1'')' || ' AND ([table]_recurring_[table]_id=''$2''));'; _countstmt := REPLACE(_countstmt, '[fulltable]', _rt.recurtype_table); _countstmt := REPLACE(_countstmt, '[table]', REGEXP_REPLACE(_rt.recurtype_table, E'.*\\.', '')); _countstmt := REPLACE(_countstmt, '[done]', _rt.recurtype_donecheck); _countstmt := REPLACE(_countstmt, '[schedcol]', _rt.recurtype_schedcol); -- 8.4+: EXECUTE _countstmt INTO _count USING pDatetime, pParentid; EXECUTE REPLACE(REPLACE(_countstmt, '$1', pDatetime::TEXT), '$2', pParentid::TEXT) INTO _count; RETURN _count; END; $_$; RDROP FUNCTION public.openrecurringitems(integer, text, timestamp with time zone); publicadminfalse8399212591692453opheadTABLECREATE TABLE ophead ( ophead_id integer NOT NULL, ophead_name text NOT NULL, ophead_crmacct_id integer, ophead_owner_username text, ophead_opstage_id integer, ophead_opsource_id integer, ophead_optype_id integer, ophead_probability_prcnt integer, ophead_amount numeric(20,4), ophead_target_date date, ophead_actual_date date, ophead_notes text, ophead_curr_id integer, ophead_active boolean DEFAULT true, ophead_cntct_id integer, ophead_username text, ophead_start_date date, ophead_assigned_date date, ophead_priority_id integer, ophead_number text NOT NULL, CONSTRAINT ophead_ophead_number_check CHECK ((ophead_number <> ''::text)) ); DROP TABLE public.ophead; publicadminfalse594259438"00 TABLE opheadCOMMENT2COMMENT ON TABLE ophead IS 'Opportunity header.'; publicadminfalse181"00opheadACLREVOKE ALL ON TABLE ophead FROM PUBLIC; REVOKE ALL ON TABLE ophead FROM admin; GRANT ALL ON TABLE ophead TO admin; GRANT ALL ON TABLE ophead TO xtrole; publicadminfalse18112551692460ophead()FUNCTION3CREATE FUNCTION ophead() RETURNS SETOF ophead LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row ophead%ROWTYPE; _priv TEXT; _grant BOOLEAN; BEGIN -- This query will give us the most permissive privilege the user has been granted SELECT privilege, granted INTO _priv, _grant FROM privgranted WHERE privilege IN ('MaintainAllOpportunities','ViewAllOpportunities','MaintainPersonalOpportunities','ViewPersonalOpportunities') ORDER BY granted DESC, sequence LIMIT 1; -- If have an 'All' privilege return all results IF (_priv ~ 'All' AND _grant) THEN FOR _row IN SELECT * FROM ophead LOOP RETURN NEXT _row; END LOOP; -- Otherwise if have any other grant, must be personal privilege. ELSIF (_grant) THEN FOR _row IN SELECT * FROM ophead WHERE getEffectiveXtUser() IN (ophead_owner_username, ophead_username) LOOP RETURN NEXT _row; END LOOP; END IF; RETURN; END; $$; DROP FUNCTION public.ophead(); publicadminfalse839922738"00FUNCTION ophead()COMMENTvCOMMENT ON FUNCTION ophead() IS 'A table function that returns Opportunity results according to privilege settings.'; publicadminfalse176012551692461 orderedbypo(integer, date, date)FUNCTIONpCREATE FUNCTION orderedbypo(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _qty NUMERIC; BEGIN SELECT COALESCE(SUM(noNeg(poitem_qty_ordered - poitem_qty_received) * poitem_invvenduomratio), 0.0) INTO _qty FROM poitem WHERE ( (poitem_itemsite_id=pItemsiteid) AND (poitem_status <> 'C') AND (poitem_duedate BETWEEN pStartDate AND pEndDate) ); RETURN _qty; END; $_$; 7DROP FUNCTION public.orderedbypo(integer, date, date); publicadminfalse83992Q12551692462orderedbypo(integer, integer)FUNCTIONCREATE FUNCTION orderedbypo(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pLookAhead ALIAS FOR $2; _qty NUMERIC; BEGIN SELECT orderedByPo(pItemsiteid, startOfTime(), (CURRENT_DATE + pLookAhead)) INTO _qty; RETURN _qty; END; $_$; 4DROP FUNCTION public.orderedbypo(integer, integer); publicadminfalse8399212551692463orderedbywo(integer, integer)FUNCTIONCREATE FUNCTION orderedbywo(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pLookAheadDays ALIAS FOR $2; BEGIN RETURN orderedByWo(pItemsiteid, startOfTime(), (CURRENT_DATE + pLookAheadDays)); END; $_$; 4DROP FUNCTION public.orderedbywo(integer, integer); publicadminfalse8399212551692464 orderedbywo(integer, date, date)FUNCTION CREATE FUNCTION orderedbywo(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _itemType CHARACTER(1); _qty NUMERIC := 0; BEGIN SELECT item_type INTO _itemType FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ); IF (_itemType NOT IN ('C','T')) THEN SELECT COALESCE(SUM(noNeg(wo_qtyord - wo_qtyrcv)), 0.0) INTO _qty FROM wo WHERE ( (wo_status <> 'C') AND (wo_itemsite_id=pItemsiteid) AND (wo_duedate BETWEEN pStartDate AND pEndDate) ); ELSIF (_itemType = 'C') THEN SELECT COALESCE(SUM((noNeg(wo_qtyord - wo_qtyrcv) * brddist_stdqtyper)), 0.0) INTO _qty FROM wo, xtmfg.brddist WHERE ( (wo_status <> 'C') AND (brddist_wo_id=wo_id) AND (brddist_itemsite_id=pItemsiteid) AND (wo_duedate BETWEEN pStartDate AND pEndDate) ); ELSIF (_itemType = 'T' AND fetchMetricBool('Routings')) THEN -- Tooling: Determine quantity already returned SELECT -- Qty Required COALESCE(SUM(noNeg(womatl_qtyreq)),0) - -- Qty Returned (SELECT COALESCE(SUM(abs(invhist_invqty)),0) FROM wo JOIN womatl ON (womatl_wo_id=wo_id) JOIN womatlpost ON (womatl_id=womatlpost_womatl_id) JOIN invhist ON ((womatlpost_invhist_id=invhist_id) AND (invhist_invqty < 0)) LEFT OUTER JOIN xtmfg.wooper ON (womatl_wooper_id=wooper_id) WHERE ( NOT (COALESCE(wooper_rncomplete,wo_status = 'C')) AND (womatl_itemsite_id=pItemsiteid) AND (wo_duedate BETWEEN pStartDate AND pEndDate) ) ) INTO _qty FROM wo JOIN womatl ON (womatl_wo_id=wo_id) LEFT OUTER JOIN xtmfg.wooper ON (womatl_wooper_id=wooper_id) WHERE ( NOT (COALESCE(wooper_rncomplete,wo_status = 'C')) AND (womatl_itemsite_id=pItemsiteid) AND (wo_duedate BETWEEN pStartDate AND pEndDate) ) GROUP BY womatl_qtyreq; ELSIF (_itemType = 'T') THEN -- Tooling: Determine quantity already returned SELECT -- Qty Required COALESCE(SUM(noNeg(womatl_qtyreq)),0) - -- Qty Returned (SELECT COALESCE(SUM(abs(invhist_invqty)),0) FROM wo JOIN womatl ON (womatl_wo_id=wo_id) JOIN womatlpost ON (womatl_id=womatlpost_womatl_id) JOIN invhist ON ((womatlpost_invhist_id=invhist_id) AND (invhist_invqty < 0)) WHERE ( NOT (wo_status = 'C') AND (womatl_itemsite_id=pItemsiteid) AND (wo_duedate BETWEEN pStartDate AND pEndDate) ) ) INTO _qty FROM wo JOIN womatl ON (womatl_wo_id=wo_id) WHERE ( NOT (wo_status = 'C') AND (womatl_itemsite_id=pItemsiteid) AND (wo_duedate BETWEEN pStartDate AND pEndDate) ) GROUP BY womatl_qtyreq; END IF; RETURN COALESCE(_qty,0); END; $_$; 7DROP FUNCTION public.orderedbywo(integer, date, date); publicadminfalse8399212552008409 orderhead()FUNCTION( CREATE FUNCTION orderhead() RETURNS SETOF ordhead LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row ordhead%ROWTYPE; _query TEXT; BEGIN _query := ' SELECT DISTINCT * FROM ( SELECT pohead_id AS orderhead_id, ''PO'' AS orderhead_type, pohead_number AS orderhead_number, pohead_status AS orderhead_status, pohead_orderdate AS orderhead_orderdate, (SELECT count(*) FROM poitem WHERE poitem_pohead_id=pohead_id) AS orderhead_linecount, pohead_vend_id AS orderhead_from_id, vend_name AS orderhead_from, NULL AS orderhead_to_id, '''' AS orderhead_to, pohead_curr_id AS orderhead_curr_id, pohead_agent_username AS orderhead_agent_username, pohead_shipvia AS orderhead_shipvia FROM pohead LEFT OUTER JOIN vendinfo ON (pohead_vend_id=vend_id) UNION SELECT cohead_id AS orderhead_id, ''SO'' AS orderhead_type, cohead_number AS orderhead_number, COALESCE(coitem_status,''C'') AS orderhead_status, cohead_orderdate AS orderhead_orderdate, (SELECT count(*) FROM coitem WHERE coitem_cohead_id=cohead_id) AS orderhead_linecount, NULL AS orderhead_from_id, '''' AS orderhead_from, cohead_cust_id AS orderhead_to_id, cust_name AS orderhead_to, cohead_curr_id AS orderhead_curr_id, '''' AS orderhead_agent_username, cohead_shipvia AS orderhead_shipvia FROM cohead LEFT OUTER JOIN custinfo ON (cohead_cust_id=cust_id) LEFT OUTER JOIN coitem ON ((cohead_id=coitem_cohead_id) AND (coitem_status=''O''))'; IF (fetchmetricbool('MultiWhs')) THEN _query := _query || ' UNION SELECT tohead_id AS orderhead_id, ''TO'' AS orderhead_type, tohead_number AS orderhead_number, tohead_status AS orderhead_status, tohead_orderdate AS orderhead_orderdate, (SELECT count(*) FROM toitem WHERE toitem_tohead_id=tohead_id) AS orderhead_linecount, tohead_src_warehous_id AS orderhead_from_id, tohead_srcname AS orderhead_from, tohead_dest_warehous_id AS orderhead_to_id, tohead_destname AS orderhead_to, tohead_freight_curr_id AS orderhead_curr_id, tohead_agent_username AS orderhead_agent_username, tohead_shipvia AS orderhead_shipvia FROM tohead'; END IF; IF (fetchmetricbool('EnableReturnAuth')) THEN _query := _query || ' UNION SELECT rahead_id AS orderhead_id, ''RA'' AS orderhead_type, rahead_number AS orderhead_number, COALESCE(raitem_status,''C'') AS orderhead_status, rahead_authdate AS orderhead_orderdate, (SELECT count(*) FROM raitem WHERE raitem_rahead_id=rahead_id) AS orderhead_linecount, rahead_cust_id AS orderhead_from_id, cust_name AS orderhead_from, NULL AS orderhead_to_id, '''' AS orderhead_to, rahead_curr_id AS orderhead_curr_id, '''' AS orderhead_agent_username, '''' AS orderhead_shipvia FROM rahead LEFT OUTER JOIN custinfo ON (rahead_cust_id=cust_id) LEFT OUTER JOIN raitem ON ((rahead_id=raitem_rahead_id) AND (raitem_status=''O''))'; END IF; _query := _query || ') AS data ORDER BY orderhead_type, orderhead_number ;'; FOR _row IN EXECUTE _query LOOP RETURN NEXT _row; END LOOP; RETURN; END; $$; "DROP FUNCTION public.orderhead(); publicadminfalse83992258912552008410 orderitem()FUNCTIONCREATE FUNCTION orderitem() RETURNS SETOF orditem LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row orditem%ROWTYPE; _query TEXT; BEGIN _query := ' SELECT poitem_id AS orderitem_id, ''PO'' AS orderitem_orderhead_type, poitem_pohead_id AS orderitem_orderhead_id, poitem_linenumber AS orderitem_linenumber, poitem_status AS orderitem_status, poitem_itemsite_id AS orderitem_itemsite_id, poitem_duedate AS orderitem_scheddate, poitem_qty_ordered AS orderitem_qty_ordered, poitem_qty_returned AS orderitem_qty_shipped, poitem_qty_received AS orderitem_qty_received, uom_id AS orderitem_qty_uom_id, poitem_invvenduomratio AS orderitem_qty_invuomratio, poitem_unitprice AS orderitem_unitcost, pohead_curr_id AS orderitem_unitcost_curr_id, poitem_freight AS orderitem_freight, poitem_freight_received AS orderitem_freight_received, pohead_curr_id AS orderitem_freight_curr_id FROM poitem LEFT OUTER JOIN pohead ON (poitem_pohead_id=pohead_id) LEFT OUTER JOIN uom ON (uom_name=poitem_vend_uom) UNION SELECT coitem_id AS orderitem_id, ''SO'' AS orderitem_orderhead_type, coitem_cohead_id AS orderitem_orderhead_id, coitem_linenumber AS orderitem_linenumber, coitem_status AS orderitem_status, coitem_itemsite_id AS orderitem_itemsite_id, coitem_scheddate AS orderitem_scheddate, coitem_qtyord AS orderitem_qty_ordered, coitem_qtyshipped AS orderitem_qty_shipped, coitem_qtyreturned AS orderitem_qty_received, coitem_qty_uom_id AS orderitem_qty_uom_id, coitem_qty_invuomratio AS orderitem_qty_invuomratio, coitem_unitcost AS orderitem_unitcost, basecurrid() AS orderitem_unitcost_curr_id, NULL AS orderitem_freight, NULL AS orderitem_freight_received, basecurrid() AS orderitem_freight_curr_id FROM coitem'; IF (fetchmetricbool('MultiWhs')) THEN _query := _query || ' UNION SELECT toitem_id AS orderitem_id, ''TO'' AS orderitem_orderhead_type, toitem_tohead_id AS orderitem_orderhead_id, toitem_linenumber AS orderitem_linenumber, toitem_status AS orderitem_status, itemsite_id AS orderitem_itemsite_id, toitem_duedate AS orderitem_scheddate, toitem_qty_ordered AS orderitem_qty_ordered, toitem_qty_shipped AS orderitem_qty_shipped, toitem_qty_received AS orderitem_qty_received, uom_id AS orderitem_qty_uom_id, 1 AS orderitem_qty_invuomratio, toitem_stdcost AS orderitem_unitcost, basecurrid() AS orderitem_unitcost_curr_id, toitem_freight AS orderitem_freight, toitem_freight_received AS orderitem_freight_received, toitem_freight_curr_id AS orderitem_freight_curr_id FROM tohead, itemsite, toitem LEFT OUTER JOIN uom ON (uom_name=toitem_uom) WHERE ((toitem_tohead_id=tohead_id) AND (tohead_src_warehous_id=itemsite_warehous_id) AND (toitem_item_id=itemsite_item_id)) '; END IF; IF (fetchmetricbool('EnableReturnAuth')) THEN _query := _query || ' UNION SELECT raitem_id AS orderitem_id, ''RA'' AS orderitem_orderhead_type, raitem_rahead_id AS orderitem_orderhead_id, raitem_linenumber AS orderitem_linenumber, raitem_status AS orderitem_status, raitem_itemsite_id AS orderitem_itemsite_id, raitem_scheddate AS orderitem_scheddate, raitem_qtyauthorized AS orderitem_qty_ordered, 0 AS orderitem_qty_shipped, raitem_qtyreceived AS orderitem_qty_received, raitem_qty_uom_id AS orderitem_qty_uom_id, raitem_qty_invuomratio AS orderitem_qty_invuomratio, raitem_unitprice AS orderitem_unitcost, basecurrid() AS orderitem_unitcost_curr_id, NULL AS orderitem_freight, NULL AS orderitem_freight_received, basecurrid() AS orderitem_freight_curr_id FROM raitem'; END IF; FOR _row IN EXECUTE _query LOOP RETURN NEXT _row; END LOOP; RETURN; END; $$; "DROP FUNCTION public.orderitem(); publicadminfalse83992259112551692467%orderitemdata(text, integer, integer)FUNCTION(CREATE FUNCTION orderitemdata(text, integer, integer) RETURNS SETOF orderitemtype LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pOrdertype ALIAS FOR $1; pOrderheadid ALIAS FOR $2; pOrderitemid ALIAS FOR $3; _row orderitemtype%ROWTYPE; _set RECORD; BEGIN IF(UPPER(pOrdertype)='PO') THEN FOR _set IN SELECT poitem_id AS orderitem_id, 'PO' AS orderitem_orderhead_type, poitem_pohead_id AS orderitem_orderhead_id, poitem_linenumber AS orderitem_linenumber, poitem_status AS orderitem_status, poitem_itemsite_id AS orderitem_itemsite_id, poitem_duedate AS orderitem_scheddate, poitem_qty_ordered AS orderitem_qty_ordered, poitem_qty_returned AS orderitem_qty_shipped, poitem_qty_received AS orderitem_qty_received, uom_id AS orderitem_qty_uom_id, poitem_invvenduomratio AS orderitem_qty_invuomratio, poitem_unitprice AS orderitem_unitcost, (SELECT pohead_curr_id FROM pohead WHERE pohead_id=poitem_pohead_id) AS orderitem_unitcost_curr_id, poitem_freight AS orderitem_freight, poitem_freight_received AS orderitem_freight_received, (SELECT pohead_curr_id FROM pohead WHERE pohead_id=poitem_pohead_id) AS orderitem_freight_curr_id FROM poitem LEFT OUTER JOIN uom ON (uom_name=poitem_vend_uom) WHERE(((pOrderheadid IS NULL) OR (poitem_pohead_id=pOrderheadid)) AND ((pOrderitemid IS NULL) OR (poitem_id=pOrderitemid))) LOOP _row.orderitem_id := _set.orderitem_id; _row.orderitem_orderhead_type := _set.orderitem_orderhead_type; _row.orderitem_orderhead_id := _set.orderitem_orderhead_id; _row.orderitem_linenumber := _set.orderitem_linenumber; _row.orderitem_status := _set.orderitem_status; _row.orderitem_itemsite_id := _set.orderitem_itemsite_id; _row.orderitem_scheddate := _set.orderitem_scheddate; _row.orderitem_qty_ordered := _set.orderitem_qty_ordered; _row.orderitem_qty_shipped := _set.orderitem_qty_shipped; _row.orderitem_qty_received := _set.orderitem_qty_received; _row.orderitem_qty_uom_id := _set.orderitem_qty_uom_id; _row.orderitem_qty_invuomratio := _set.orderitem_qty_invuomratio; _row.orderitem_unitcost := _set.orderitem_unitcost; _row.orderitem_unitcost_curr_id := _set.orderitem_unitcost_curr_id; _row.orderitem_freight := _set.orderitem_freight; _row.orderitem_freight_received := _set.orderitem_freight_received; _row.orderitem_freight_curr_id := _set.orderitem_freight_curr_id; RETURN NEXT _row; END LOOP; ELSEIF(UPPER(pOrdertype)='SO') THEN FOR _set IN SELECT coitem_id AS orderitem_id, 'SO' AS orderitem_orderhead_type, coitem_cohead_id AS orderitem_orderhead_id, coitem_linenumber AS orderitem_linenumber, coitem_status AS orderitem_status, coitem_itemsite_id AS orderitem_itemsite_id, coitem_scheddate AS orderitem_scheddate, coitem_qtyord AS orderitem_qty_ordered, coitem_qtyshipped AS orderitem_qty_shipped, coitem_qtyreturned AS orderitem_qty_received, coitem_qty_uom_id AS orderitem_qty_uom_id, coitem_qty_invuomratio AS orderitem_qty_invuomratio, coitem_unitcost AS orderitem_unitcost, basecurrid() AS orderitem_unitcost_curr_id, NULL AS orderitem_freight, NULL AS orderitem_freight_received, basecurrid() AS orderitem_freight_curr_id FROM coitem WHERE(((pOrderheadid IS NULL) OR (coitem_cohead_id=pOrderheadid)) AND ((pOrderitemid IS NULL) OR (coitem_id=pOrderitemid))) LOOP _row.orderitem_id := _set.orderitem_id; _row.orderitem_orderhead_type := _set.orderitem_orderhead_type; _row.orderitem_orderhead_id := _set.orderitem_orderhead_id; _row.orderitem_linenumber := _set.orderitem_linenumber; _row.orderitem_status := _set.orderitem_status; _row.orderitem_itemsite_id := _set.orderitem_itemsite_id; _row.orderitem_scheddate := _set.orderitem_scheddate; _row.orderitem_qty_ordered := _set.orderitem_qty_ordered; _row.orderitem_qty_shipped := _set.orderitem_qty_shipped; _row.orderitem_qty_received := _set.orderitem_qty_received; _row.orderitem_qty_uom_id := _set.orderitem_qty_uom_id; _row.orderitem_qty_invuomratio := _set.orderitem_qty_invuomratio; _row.orderitem_unitcost := _set.orderitem_unitcost; _row.orderitem_unitcost_curr_id := _set.orderitem_unitcost_curr_id; _row.orderitem_freight := _set.orderitem_freight; _row.orderitem_freight_received := _set.orderitem_freight_received; _row.orderitem_freight_curr_id := _set.orderitem_freight_curr_id; RETURN NEXT _row; END LOOP; ELSEIF(UPPER(pOrdertype)='RA') THEN FOR _set IN SELECT raitem_id AS orderitem_id, 'RA' AS orderitem_orderhead_type, raitem_rahead_id AS orderitem_orderhead_id, raitem_linenumber AS orderitem_linenumber, raitem_status AS orderitem_status, raitem_itemsite_id AS orderitem_itemsite_id, raitem_scheddate AS orderitem_scheddate, raitem_qtyauthorized AS orderitem_qty_ordered, 0 AS orderitem_qty_shipped, raitem_qtyreceived AS orderitem_qty_received, raitem_qty_uom_id AS orderitem_qty_uom_id, raitem_qty_invuomratio AS orderitem_qty_invuomratio, raitem_unitprice AS orderitem_unitcost, basecurrid() AS orderitem_unitcost_curr_id, NULL AS orderitem_freight, NULL AS orderitem_freight_received, basecurrid() AS orderitem_freight_curr_id FROM raitem WHERE(((pOrderheadid IS NULL) OR (raitem_rahead_id=pOrderheadid)) AND ((pOrderitemid IS NULL) OR (raitem_id=pOrderitemid))) LOOP _row.orderitem_id := _set.orderitem_id; _row.orderitem_orderhead_type := _set.orderitem_orderhead_type; _row.orderitem_orderhead_id := _set.orderitem_orderhead_id; _row.orderitem_linenumber := _set.orderitem_linenumber; _row.orderitem_status := _set.orderitem_status; _row.orderitem_itemsite_id := _set.orderitem_itemsite_id; _row.orderitem_scheddate := _set.orderitem_scheddate; _row.orderitem_qty_ordered := _set.orderitem_qty_ordered; _row.orderitem_qty_shipped := _set.orderitem_qty_shipped; _row.orderitem_qty_received := _set.orderitem_qty_received; _row.orderitem_qty_uom_id := _set.orderitem_qty_uom_id; _row.orderitem_qty_invuomratio := _set.orderitem_qty_invuomratio; _row.orderitem_unitcost := _set.orderitem_unitcost; _row.orderitem_unitcost_curr_id := _set.orderitem_unitcost_curr_id; _row.orderitem_freight := _set.orderitem_freight; _row.orderitem_freight_received := _set.orderitem_freight_received; _row.orderitem_freight_curr_id := _set.orderitem_freight_curr_id; RETURN NEXT _row; END LOOP; ELSEIF(UPPER(pOrdertype)='TO') THEN FOR _set IN SELECT toitem_id AS orderitem_id, 'TO' AS orderitem_orderhead_type, toitem_tohead_id AS orderitem_orderhead_id, toitem_linenumber AS orderitem_linenumber, toitem_status AS orderitem_status, itemsite_id AS orderitem_itemsite_id, toitem_duedate AS orderitem_scheddate, toitem_qty_ordered AS orderitem_qty_ordered, toitem_qty_shipped AS orderitem_qty_shipped, toitem_qty_received AS orderitem_qty_received, uom_id AS orderitem_qty_uom_id, 1 AS orderitem_qty_invuomratio, toitem_stdcost AS orderitem_unitcost, basecurrid() AS orderitem_unitcost_curr_id, toitem_freight AS orderitem_freight, toitem_freight_received AS orderitem_freight_received, toitem_freight_curr_id AS orderitem_freight_curr_id FROM tohead, itemsite, toitem LEFT OUTER JOIN uom ON (uom_name=toitem_uom) WHERE((toitem_tohead_id=tohead_id) AND (tohead_src_warehous_id=itemsite_warehous_id) AND (toitem_item_id=itemsite_item_id) AND ((pOrderheadid IS NULL) OR (toitem_tohead_id=pOrderheadid)) AND ((pOrderitemid IS NULL) OR (toitem_id=pOrderitemid))) LOOP _row.orderitem_id := _set.orderitem_id; _row.orderitem_orderhead_type := _set.orderitem_orderhead_type; _row.orderitem_orderhead_id := _set.orderitem_orderhead_id; _row.orderitem_linenumber := _set.orderitem_linenumber; _row.orderitem_status := _set.orderitem_status; _row.orderitem_itemsite_id := _set.orderitem_itemsite_id; _row.orderitem_scheddate := _set.orderitem_scheddate; _row.orderitem_qty_ordered := _set.orderitem_qty_ordered; _row.orderitem_qty_shipped := _set.orderitem_qty_shipped; _row.orderitem_qty_received := _set.orderitem_qty_received; _row.orderitem_qty_uom_id := _set.orderitem_qty_uom_id; _row.orderitem_qty_invuomratio := _set.orderitem_qty_invuomratio; _row.orderitem_unitcost := _set.orderitem_unitcost; _row.orderitem_unitcost_curr_id := _set.orderitem_unitcost_curr_id; _row.orderitem_freight := _set.orderitem_freight; _row.orderitem_freight_received := _set.orderitem_freight_received; _row.orderitem_freight_curr_id := _set.orderitem_freight_curr_id; RETURN NEXT _row; END LOOP; END IF; RETURN; END; $_$; <DROP FUNCTION public.orderitemdata(text, integer, integer); publicadminfalse83992260512551692468packageisenabled(integer)FUNCTIONCREATE FUNCTION packageisenabled(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT COUNT(*) >= 8 FROM pg_inherits, pg_class, pg_namespace, pkghead WHERE ((inhrelid=pg_class.oid) AND (relnamespace=pg_namespace.oid) AND (nspname=lower(pkghead_name)) AND (pkghead_id=$1)); $_$; 0DROP FUNCTION public.packageisenabled(integer); publicadminfalse812551692469packageisenabled(text)FUNCTIONCREATE FUNCTION packageisenabled(text) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT COUNT(*) >= 8 FROM pg_inherits, pg_class, pg_namespace WHERE ((inhrelid=pg_class.oid) AND (relnamespace=pg_namespace.oid) AND (nspname=lower($1))); $_$; -DROP FUNCTION public.packageisenabled(text); publicadminfalse8O12551692470pgp_key_id(bytea)FUNCTIONzCREATE FUNCTION pgp_key_id(bytea) RETURNS text LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_key_id_w'; (DROP FUNCTION public.pgp_key_id(bytea); publicadminfalse8P12551692471pgp_pub_decrypt(bytea, bytea)FUNCTIONCREATE FUNCTION pgp_pub_decrypt(bytea, bytea) RETURNS text LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_pub_decrypt_text'; 4DROP FUNCTION public.pgp_pub_decrypt(bytea, bytea); publicadminfalse8Q12551692472#pgp_pub_decrypt(bytea, bytea, text)FUNCTIONCREATE FUNCTION pgp_pub_decrypt(bytea, bytea, text) RETURNS text LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_pub_decrypt_text'; :DROP FUNCTION public.pgp_pub_decrypt(bytea, bytea, text); publicadminfalse8R12551692473)pgp_pub_decrypt(bytea, bytea, text, text)FUNCTIONCREATE FUNCTION pgp_pub_decrypt(bytea, bytea, text, text) RETURNS text LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_pub_decrypt_text'; @DROP FUNCTION public.pgp_pub_decrypt(bytea, bytea, text, text); publicadminfalse8S12551692474#pgp_pub_decrypt_bytea(bytea, bytea)FUNCTIONCREATE FUNCTION pgp_pub_decrypt_bytea(bytea, bytea) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_pub_decrypt_bytea'; :DROP FUNCTION public.pgp_pub_decrypt_bytea(bytea, bytea); publicadminfalse8T12551692475)pgp_pub_decrypt_bytea(bytea, bytea, text)FUNCTIONCREATE FUNCTION pgp_pub_decrypt_bytea(bytea, bytea, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_pub_decrypt_bytea'; @DROP FUNCTION public.pgp_pub_decrypt_bytea(bytea, bytea, text); publicadminfalse8U12551692476/pgp_pub_decrypt_bytea(bytea, bytea, text, text)FUNCTIONCREATE FUNCTION pgp_pub_decrypt_bytea(bytea, bytea, text, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_pub_decrypt_bytea'; FDROP FUNCTION public.pgp_pub_decrypt_bytea(bytea, bytea, text, text); publicadminfalse8V12551692477pgp_pub_encrypt(text, bytea)FUNCTIONCREATE FUNCTION pgp_pub_encrypt(text, bytea) RETURNS bytea LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pgp_pub_encrypt_text'; 3DROP FUNCTION public.pgp_pub_encrypt(text, bytea); publicadminfalse8W12551692478"pgp_pub_encrypt(text, bytea, text)FUNCTIONCREATE FUNCTION pgp_pub_encrypt(text, bytea, text) RETURNS bytea LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pgp_pub_encrypt_text'; 9DROP FUNCTION public.pgp_pub_encrypt(text, bytea, text); publicadminfalse8X12551692479#pgp_pub_encrypt_bytea(bytea, bytea)FUNCTIONCREATE FUNCTION pgp_pub_encrypt_bytea(bytea, bytea) RETURNS bytea LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pgp_pub_encrypt_bytea'; :DROP FUNCTION public.pgp_pub_encrypt_bytea(bytea, bytea); publicadminfalse8Y12551692480)pgp_pub_encrypt_bytea(bytea, bytea, text)FUNCTIONCREATE FUNCTION pgp_pub_encrypt_bytea(bytea, bytea, text) RETURNS bytea LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pgp_pub_encrypt_bytea'; @DROP FUNCTION public.pgp_pub_encrypt_bytea(bytea, bytea, text); publicadminfalse8Z12551692481pgp_sym_decrypt(bytea, text)FUNCTIONCREATE FUNCTION pgp_sym_decrypt(bytea, text) RETURNS text LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_sym_decrypt_text'; 3DROP FUNCTION public.pgp_sym_decrypt(bytea, text); publicadminfalse8[12551692482"pgp_sym_decrypt(bytea, text, text)FUNCTIONCREATE FUNCTION pgp_sym_decrypt(bytea, text, text) RETURNS text LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_sym_decrypt_text'; 9DROP FUNCTION public.pgp_sym_decrypt(bytea, text, text); publicadminfalse8\12551692483"pgp_sym_decrypt_bytea(bytea, text)FUNCTIONCREATE FUNCTION pgp_sym_decrypt_bytea(bytea, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_sym_decrypt_bytea'; 9DROP FUNCTION public.pgp_sym_decrypt_bytea(bytea, text); publicadminfalse8]12551692484(pgp_sym_decrypt_bytea(bytea, text, text)FUNCTIONCREATE FUNCTION pgp_sym_decrypt_bytea(bytea, text, text) RETURNS bytea LANGUAGE c IMMUTABLE STRICT AS '$libdir/pgcrypto', 'pgp_sym_decrypt_bytea'; ?DROP FUNCTION public.pgp_sym_decrypt_bytea(bytea, text, text); publicadminfalse8^12551692485pgp_sym_encrypt(text, text)FUNCTIONCREATE FUNCTION pgp_sym_encrypt(text, text) RETURNS bytea LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pgp_sym_encrypt_text'; 2DROP FUNCTION public.pgp_sym_encrypt(text, text); publicadminfalse8_12551692486!pgp_sym_encrypt(text, text, text)FUNCTIONCREATE FUNCTION pgp_sym_encrypt(text, text, text) RETURNS bytea LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pgp_sym_encrypt_text'; 8DROP FUNCTION public.pgp_sym_encrypt(text, text, text); publicadminfalse8`12551692487"pgp_sym_encrypt_bytea(bytea, text)FUNCTIONCREATE FUNCTION pgp_sym_encrypt_bytea(bytea, text) RETURNS bytea LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pgp_sym_encrypt_bytea'; 9DROP FUNCTION public.pgp_sym_encrypt_bytea(bytea, text); publicadminfalse8a12551692488(pgp_sym_encrypt_bytea(bytea, text, text)FUNCTIONCREATE FUNCTION pgp_sym_encrypt_bytea(bytea, text, text) RETURNS bytea LANGUAGE c STRICT AS '$libdir/pgcrypto', 'pgp_sym_encrypt_bytea'; ?DROP FUNCTION public.pgp_sym_encrypt_bytea(bytea, text, text); publicadminfalse812551692489pkgmaybemodified(name)FUNCTIONCREATE FUNCTION pkgmaybemodified(name) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pschemaname ALIAS FOR $1; _returnval BOOLEAN; BEGIN SELECT pkghead_indev INTO _returnval FROM pkghead WHERE (pkghead_name=pschemaname); IF (NOT FOUND) THEN RETURN FALSE; END IF; RETURN _returnval; END; $_$; -DROP FUNCTION public.pkgmaybemodified(name); publicadminfalse83992b12551692490plpgsql_call_handler()FUNCTIONCREATE FUNCTION plpgsql_call_handler() RETURNS language_handler LANGUAGE c AS '$libdir/plpgsql', 'plpgsql_call_handler'; -DROP FUNCTION public.plpgsql_call_handler(); publicadminfalse8c12551692491plpgsql_validator(oid)FUNCTIONrCREATE FUNCTION plpgsql_validator(oid) RETURNS void LANGUAGE c AS '$libdir/plpgsql', 'plpgsql_validator'; -DROP FUNCTION public.plpgsql_validator(oid); publicadminfalse812551692492postapcheck(integer)FUNCTIONbCREATE FUNCTION postapcheck(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'postAPCheck() is deprecated - use postCheck() instead'; RETURN postCheck($1, fetchJournalNumber('AP-CK')); END; $_$; +DROP FUNCTION public.postapcheck(integer); publicadminfalse8399212551692493postapcheck(integer, integer)FUNCTIONRCREATE FUNCTION postapcheck(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'postAPCheck() is deprecated - use postCheck() instead'; RETURN postCheck($1, $2); END; $_$; 4DROP FUNCTION public.postapcheck(integer, integer); publicadminfalse8399212551692494postapchecks(integer)FUNCTIONKCREATE FUNCTION postapchecks(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'postAPChecks() is deprecated - use postChecks() instead'; RETURN postChecks($1); END; $_$; ,DROP FUNCTION public.postapchecks(integer); publicadminfalse8399212551692495$postapcreditmemoapplication(integer)FUNCTIONCREATE FUNCTION postapcreditmemoapplication(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenid ALIAS FOR $1; _src RECORD; _r RECORD; _totalAmount NUMERIC := 0.0; _exchGain NUMERIC := 0.0; _apaccntid INTEGER; BEGIN SELECT apopen_docnumber, (apopen_amount - apopen_paid) AS balance, -- SUM(currtocurr(apcreditapply_curr_id, apopen_curr_id, -- apcreditapply_amount, CURRENT_DATE)) AS toApply, SUM(apcreditapply_amount) AS toApply, apopen_curr_rate INTO _src FROM apopen, apcreditapply WHERE ( (apcreditapply_source_apopen_id=apopen_id) AND (apopen_id=pApopenid) ) GROUP BY apopen_docnumber, apopen_amount, apopen_paid, apopen_curr_rate; IF (NOT FOUND) THEN RETURN -1; ELSIF (_src.toApply = 0) THEN RETURN -2; ELSIF (_src.toApply > _src.balance) THEN RETURN -3; -- ELSIF (_src.toApply IS NULL AND _src.junk IS NOT NULL) THEN -- RETURN -4; -- missing exchange rate ELSIF (_src.toApply IS NULL) THEN RETURN -6; -- amount to apply is NULL for some unknown reason END IF; SELECT apopen_id, apopen_vend_id, apopen_docnumber, apopen_doctype, apopen_amount, apopen_curr_id, apopen_curr_rate, apopen_docdate, apopen_accnt_id INTO _src FROM apopen WHERE (apopen_id=pApopenid); IF (NOT FOUND) THEN RETURN -5; END IF; FOR _r IN SELECT apcreditapply_id, apcreditapply_target_apopen_id, apcreditapply_amount AS apply_amountSource, currToCurr(apcreditapply_curr_id, apopen_curr_id, apcreditapply_amount, CURRENT_DATE) AS apply_amountTarget, apopen_id, apopen_doctype, apopen_docnumber, apopen_curr_id, apopen_curr_rate, apopen_docdate FROM apcreditapply, apopen WHERE ( (apcreditapply_source_apopen_id=pApopenid) AND (apcreditapply_target_apopen_id=apopen_id) ) LOOP IF (_r.apply_amountTarget IS NULL) THEN RETURN -4; -- missing exchange rate END IF; IF (_r.apply_amountTarget > 0) THEN -- Update the apopen item to post the paid amount UPDATE apopen SET apopen_paid = (apopen_paid + _r.apply_amountTarget) WHERE (apopen_id=_r.apcreditapply_target_apopen_id); UPDATE apopen SET apopen_open = false, apopen_closedate = current_date WHERE ( (apopen_id=_r.apcreditapply_target_apopen_id) AND (apopen_amount <= apopen_paid) ); -- Cache the running amount posted _totalAmount := (_totalAmount + _r.apply_amountSource); -- Record the application INSERT INTO apapply ( apapply_vend_id, apapply_amount, apapply_source_apopen_id, apapply_source_doctype, apapply_source_docnumber, apapply_target_apopen_id, apapply_target_doctype, apapply_target_docnumber, apapply_postdate, apapply_journalnumber, apapply_username, apapply_curr_id ) VALUES ( _src.apopen_vend_id, round(_r.apply_amountSource, 2), pApopenid, 'C', _src.apopen_docnumber, _r.apopen_id, _r.apopen_doctype, _r.apopen_docnumber, CURRENT_DATE, 0, getEffectiveXtUser(), _src.apopen_curr_id ); END IF; -- Delete the posted apcreditapply record DELETE FROM apcreditapply WHERE (apcreditapply_id=_r.apcreditapply_id); END LOOP; -- Record the amount posted and mark the source apopen as closed if it is completely posted UPDATE apopen SET apopen_paid = (apopen_paid + _totalAmount) WHERE (apopen_id=pApopenid); UPDATE apopen SET apopen_open = false, apopen_closedate = current_date WHERE ( (apopen_id=pApopenid) AND (apopen_amount <= apopen_paid) ); IF (_r.apopen_curr_id = _src.apopen_curr_id) THEN IF (_r.apopen_docdate > _src.apopen_docdate) THEN _exchGain := (_totalAmount / _r.apopen_curr_rate - _totalAmount / _src.apopen_curr_rate) * -1; ELSE _exchGain := _totalAmount / _src.apopen_curr_rate - _totalAmount / _r.apopen_curr_rate; END IF; END IF; IF (_src.apopen_accnt_id > -1) THEN _apaccntid := _src.apopen_accnt_id; ELSE _apaccntid := findAPAccount(_src.apopen_vend_id); END IF; PERFORM insertGLTransaction(fetchJournalNumber('AP-MISC'), 'A/P', 'CM', _src.apopen_docnumber, 'CM Application', _apaccntid, getGainLossAccntId(_apaccntid), -1, _exchGain, CURRENT_DATE); RETURN pApopenid; END; $_$; ;DROP FUNCTION public.postapcreditmemoapplication(integer); publicadminfalse8399212551692496postapopenitems()FUNCTION8CREATE FUNCTION postapopenitems() RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN UPDATE apopen SET apopen_posted=TRUE WHERE (NOT apopen_posted); RETURN TRUE; END; $$; (DROP FUNCTION public.postapopenitems(); publicadminfalse8399212551692497$postarcreditmemoapplication(integer)FUNCTIONVCREATE FUNCTION postarcreditmemoapplication(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAropenid ALIAS FOR $1; BEGIN RETURN postARCreditMemoApplication(pAropenid, CURRENT_DATE); END; $_$; ;DROP FUNCTION public.postarcreditmemoapplication(integer); publicadminfalse83992d12551692498*postarcreditmemoapplication(integer, date)FUNCTIONCREATE FUNCTION postarcreditmemoapplication(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAropenid ALIAS FOR $1; _applyDate DATE := COALESCE($2, CURRENT_DATE); _p RECORD; _r RECORD; _totalAmount NUMERIC := 0; _totalTarget NUMERIC := 0; _exchGain NUMERIC := 0; _result NUMERIC; _araccntid INTEGER; BEGIN SELECT aropen_docnumber, ROUND(aropen_amount - aropen_paid, 2) AS balance, aropen_open, aropen_curr_rate, ROUND(SUM(currToCurr(arcreditapply_curr_id, aropen_curr_id, COALESCE(arcreditapply_amount, 0), _applyDate)), 2) AS toApply INTO _p FROM aropen, arcreditapply WHERE ( (arcreditapply_source_aropen_id=aropen_id) AND (aropen_id=pAropenid) ) GROUP BY aropen_docnumber, aropen_amount, aropen_paid, aropen_open, aropen_curr_rate; IF (NOT FOUND) THEN RETURN -1; ELSIF (_p.toApply = 0) THEN RETURN -2; ELSIF (_p.toApply > _p.balance) THEN RETURN -3; END IF; SELECT aropen_cust_id, aropen_docnumber, aropen_doctype, aropen_amount, aropen_curr_id, aropen_docdate, aropen_accnt_id, aropen_cust_id, aropen_curr_rate INTO _p FROM aropen WHERE (aropen_id=pAropenid); IF (NOT FOUND) THEN RETURN -5; END IF; FOR _r IN SELECT arcreditapply_id, arcreditapply_target_aropen_id, arcreditapply_amount AS arcreditapply_amountSource, arcreditapply_reftype, arcreditapply_ref_id, currToCurr(arcreditapply_curr_id, aropen_curr_id, arcreditapply_amount, _applyDate) AS arcreditapply_amountTarget, aropen_id, aropen_doctype, aropen_docnumber, aropen_docdate, aropen_curr_rate FROM arcreditapply, aropen WHERE ( (arcreditapply_source_aropen_id=pAropenid) AND (arcreditapply_target_aropen_id=aropen_id) ) LOOP IF (_r.arcreditapply_amountTarget IS NULL) THEN RETURN -4; END IF; IF (_r.arcreditapply_amountTarget > 0) THEN -- Update the aropen item to post the paid amount UPDATE aropen SET aropen_paid = round(aropen_paid + _r.arcreditapply_amountTarget, 2) WHERE (aropen_id=_r.arcreditapply_target_aropen_id); UPDATE aropen SET aropen_open = (round(aropen_amount, 2) > round(aropen_paid, 2)) WHERE (aropen_id=_r.arcreditapply_target_aropen_id); -- Cache the running amount posted _totalAmount := (_totalAmount + _r.arcreditapply_amountSource); _totalTarget := (_totalTarget + _r.arcreditapply_amountTarget); -- Record the application INSERT INTO arapply ( arapply_cust_id, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_fundstype, arapply_refnumber, arapply_applied, arapply_closed, arapply_postdate, arapply_distdate, arapply_journalnumber, arapply_username, arapply_curr_id, arapply_reftype, arapply_ref_id ) VALUES ( _p.aropen_cust_id, pAropenid, _p.aropen_doctype, _p.aropen_docnumber, _r.aropen_id, _r.aropen_doctype, _r.aropen_docnumber, '', '', round(_r.arcreditapply_amountSource, 2), TRUE, _applyDate, _applyDate, 0, getEffectiveXtUser(), _p.aropen_curr_id, _r.arcreditapply_reftype, _r.arcreditapply_ref_id ); END IF; -- Delete the posted arcreditapply record DELETE FROM arcreditapply WHERE (arcreditapply_id=_r.arcreditapply_id); IF (_r.aropen_docdate > _p.aropen_docdate) THEN _exchGain := (_totalTarget / _r.aropen_curr_rate - _totalAmount / _p.aropen_curr_rate) * -1; ELSE _exchGain := _totalAmount / _p.aropen_curr_rate - _totalTarget / _r.aropen_curr_rate; END IF; IF (_p.aropen_accnt_id > -1) THEN _araccntid := _p.aropen_accnt_id; ELSE _araccntid := findARAccount(_p.aropen_cust_id); END IF; IF (_exchGain <> 0) THEN PERFORM insertGLTransaction(fetchJournalNumber('AR-MISC'), 'A/R', 'CR', _p.aropen_docnumber, 'CM Application', _araccntid, getGainLossAccntId(_araccntid), -1, _exchGain * -1, _applyDate); END IF; END LOOP; -- TODO: If this is a Customer Deposit (aropen_doctype='R') -- the we need to convert the total to a base transaction IF(_p.aropen_doctype='R') THEN SELECT insertGLTransaction(fetchJournalNumber('AR-MISC'), 'A/R', 'CD', _p.aropen_docnumber, 'CM Application', cr.accnt_id, db.accnt_id, -1, currToBase(_p.aropen_curr_id, _totalAmount, _p.aropen_docdate), _applyDate) INTO _result FROM accnt AS cr, accnt AS db WHERE ((db.accnt_id = findDeferredAccount(_p.aropen_cust_id)) AND (cr.accnt_id = findARAccount(_p.aropen_cust_id)) ); IF(NOT FOUND OR _result < 0) THEN RAISE EXCEPTION 'There was an error posting the Customer Deposit GL Transactions.'; END IF; END IF; -- Record the amount posted and mark the source aropen as closed if it is completely posted UPDATE aropen SET aropen_paid = round(aropen_paid + _totalAmount, 2) WHERE (aropen_id=pAropenid); UPDATE aropen SET aropen_open = (round(aropen_amount, 2) > round(aropen_paid, 2)) WHERE (aropen_id=pAropenid); RETURN pAropenid; END; $_$; ADROP FUNCTION public.postarcreditmemoapplication(integer, date); publicadminfalse83992e12551692500postaropenitems()FUNCTION8CREATE FUNCTION postaropenitems() RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN UPDATE aropen SET aropen_posted=TRUE WHERE (NOT aropen_posted); RETURN TRUE; END; $$; (DROP FUNCTION public.postaropenitems(); publicadminfalse8399212551692501postbankadjustment(integer)FUNCTIONCREATE FUNCTION postbankadjustment(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankadjid ALIAS FOR $1; _sequence INTEGER; _r RECORD; BEGIN -- Post the G/L transaction SELECT insertGLTransaction( fetchJournalNumber('GL-MISC'), 'G/L', 'AD', bankadj_docnumber, (bankadjtype_name || '-' || bankadj_notes), bankadjtype_accnt_id, bankaccnt_accnt_id, bankadj_id, round(currToBase(bankaccnt_curr_id, CASE WHEN(bankadjtype_iscredit) THEN (bankadj_amount * -1) ELSE bankadj_amount END, bankadj_date), 2), bankadj_date, TRUE, TRUE ) INTO _sequence FROM bankadj, bankaccnt, bankadjtype WHERE ( (bankadj_bankaccnt_id=bankaccnt_id) AND (bankadj_bankadjtype_id=bankadjtype_id) AND (NOT bankadj_posted) AND (bankadj_id=pBankadjid) ); IF ( NOT FOUND ) THEN RETURN -1; END IF; IF (_sequence >= 0) THEN -- Update the bankadj record with this sequence and mark it posted UPDATE bankadj SET bankadj_sequence = _sequence, bankadj_posted = TRUE WHERE bankadj_id=pBankadjid; END IF; RETURN _sequence; END; $_$; 2DROP FUNCTION public.postbankadjustment(integer); publicadminfalse83992f12551692502postbankreconciliation(integer)FUNCTION. CREATE FUNCTION postbankreconciliation(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankrecid ALIAS FOR $1; _accntid INTEGER; _sequence INTEGER; _gltransid INTEGER; _r RECORD; BEGIN -- Check the accnt information to make sure it is valid SELECT accnt_id INTO _accntid FROM bankrec, bankaccnt, accnt WHERE ( (bankaccnt_accnt_id=accnt_id) AND (bankrec_bankaccnt_id=bankaccnt_id) AND (bankrec_id=pBankrecid) ); IF ( NOT FOUND ) THEN RETURN -1; END IF; -- Delete any bankrecitem records that are not marked as cleared for cleanliness DELETE FROM bankrecitem WHERE ( (NOT bankrecitem_cleared) AND (bankrecitem_bankrec_id=pBankrecid) ); -- Post any bankadj items that were marked as cleared and convert the bankrecitem FOR _r IN SELECT bankrecitem_id, bankrecitem_source_id FROM bankrecitem, bankadj WHERE ( (bankrecitem_source = 'AD') AND (bankrecitem_source_id=bankadj_id) AND (bankrecitem_cleared) AND (NOT bankadj_posted) AND (bankrecitem_bankrec_id=pBankrecid) ) LOOP SELECT postBankAdjustment(_r.bankrecitem_source_id) INTO _sequence; IF (_sequence < 0) THEN RETURN -10; END IF; SELECT gltrans_id INTO _gltransid FROM gltrans WHERE ( (gltrans_sequence=_sequence) AND (gltrans_accnt_id=_accntid) ); IF ( NOT FOUND ) THEN RETURN -11; END IF; UPDATE bankrecitem SET bankrecitem_source = 'GL', bankrecitem_source_id=_gltransid WHERE (bankrecitem_id=_r.bankrecitem_id); END LOOP; -- Mark all the gltrans items that have been cleared as reconciled. UPDATE gltrans SET gltrans_rec = TRUE WHERE ( (gltrans_id IN (SELECT bankrecitem_source_id FROM bankrecitem WHERE ((bankrecitem_source = 'GL') AND (bankrecitem_cleared) AND (bankrecitem_bankrec_id=pBankrecid) ) ) ) AND (gltrans_accnt_id=_accntid) ) ; -- Mark all the sltrans items that have been cleared as reconciled. UPDATE sltrans SET sltrans_rec = TRUE WHERE ( (sltrans_id IN (SELECT bankrecitem_source_id FROM bankrecitem WHERE ((bankrecitem_source = 'SL') AND (bankrecitem_cleared) AND (bankrecitem_bankrec_id=pBankrecid) ) ) ) AND (sltrans_accnt_id=_accntid) ) ; -- Mark the bankrec record as posted UPDATE bankrec SET bankrec_posted = TRUE, bankrec_postdate = now() WHERE (bankrec_id=pBankrecid); RETURN pBankrecid; END; $_$; 6DROP FUNCTION public.postbankreconciliation(integer); publicadminfalse8399212551692503postbillingselection(integer)FUNCTIONCREATE FUNCTION postbillingselection(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCobmiscid ALIAS FOR $1; BEGIN RAISE NOTICE 'postBillingselection(integer) has been deprecated. Please use createInvoice(integer).'; RETURN createInvoice(pCobmiscid); END; $_$; 4DROP FUNCTION public.postbillingselection(integer); publicadminfalse8399212551692504)postbillingselectionconsolidated(integer)FUNCTIONCREATE FUNCTION postbillingselectionconsolidated(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustid ALIAS FOR $1; BEGIN RAISE NOTICE 'postBillingselectionConsolidated(integer) has been deprecated. Please use createInvoiceConsolidated(integer).'; RETURN createInvoiceConsolidated(pCustid); END; $_$; @DROP FUNCTION public.postbillingselectionconsolidated(integer); publicadminfalse8399212551692505postbillingselections()FUNCTIONbCREATE FUNCTION postbillingselections() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'postBillingselections() has been deprecated. Please use createInvoices().'; RETURN createInvoices(); END; $$; .DROP FUNCTION public.postbillingselections(); publicadminfalse8399212551692506postbillingselections(integer)FUNCTIONvCREATE FUNCTION postbillingselections(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'postBillingselections(int) has been deprecated. Please use createInvoices(int).'; RETURN createInvoices($1, false); END; $_$; 5DROP FUNCTION public.postbillingselections(integer); publicadminfalse8399212551692507'postbillingselections(integer, boolean)FUNCTIONCREATE FUNCTION postbillingselections(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCustTypeId ALIAS FOR $1; pConsolidate ALIAS FOR $2; BEGIN RAISE NOTICE 'postBillingselections(int,bool) has been deprecated. Please use createInvoices(int,bool).'; RETURN createInvoices(pCustTypeId, pConsolidate); END; $_$; >DROP FUNCTION public.postbillingselections(integer, boolean); publicadminfalse8399212551692508!postcashreceipt(integer, integer)FUNCTION@CREATE FUNCTION postcashreceipt(pcashrcptid integer, pjournalnumber integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _ccpayid INTEGER; _cctype TEXT; _p RECORD; _r RECORD; _t RECORD; _v RECORD; _postToAR NUMERIC; _postToMisc NUMERIC; _postToCM NUMERIC; _posted_base NUMERIC := 0; _posted NUMERIC := 0; _sequence INTEGER; _aropenid INTEGER; _arMemoNumber TEXT; _arAccntid INTEGER; _closed BOOLEAN; _debitAccntid INTEGER; _exchGain NUMERIC; _comment TEXT; _predist BOOLEAN; _check INTEGER; BEGIN _posted := 0; _posted_base := 0; SELECT fetchGLSequence() INTO _sequence; SELECT accnt_id INTO _arAccntid FROM cashrcpt, accnt, salescat WHERE ((cashrcpt_salescat_id=salescat_id) AND (salescat_ar_accnt_id=accnt_id) AND (cashrcpt_id=pCashrcptid)); IF (NOT FOUND) THEN SELECT accnt_id INTO _arAccntid FROM cashrcpt LEFT OUTER JOIN accnt ON (accnt_id=findARAccount(cashrcpt_cust_id)) WHERE ( (findARAccount(cashrcpt_cust_id)=0 OR accnt_id > 0) -- G/L interface might be disabled AND (cashrcpt_id=pCashrcptid) ); IF (NOT FOUND) THEN RETURN -5; END IF; END IF; SELECT cashrcpt_cust_id, (cust_number||'-'||cust_name) AS custnote, cashrcpt_fundstype, cashrcpt_number, cashrcpt_docnumber, cashrcpt_distdate, cashrcpt_amount, cashrcpt_discount, (cashrcpt_amount / cashrcpt_curr_rate) AS cashrcpt_amount_base, (cashrcpt_discount / cashrcpt_curr_rate) AS cashrcpt_discount_base, cashrcpt_notes, cashrcpt_bankaccnt_id AS bankaccnt_id, accnt_id AS prepaid_accnt_id, cashrcpt_usecustdeposit, COALESCE(cashrcpt_applydate, cashrcpt_distdate) AS applydate, cashrcpt_curr_id, cashrcpt_curr_rate, cashrcpt_posted, cashrcpt_void INTO _p FROM cashrcpt LEFT OUTER JOIN custinfo ON (cashrcpt_cust_id=cust_id) LEFT OUTER JOIN accnt ON (accnt_id=findPrepaidAccount(cashrcpt_cust_id)) WHERE ( (findPrepaidAccount(cashrcpt_cust_id)=0 OR accnt_id > 0) -- G/L interface might be disabled AND (cashrcpt_id=pCashrcptid) ); IF (NOT FOUND) THEN RETURN -7; END IF; IF (COALESCE(_p.cashrcpt_distdate > _p.applydate, false)) THEN RAISE EXCEPTION 'Cannot post cashrcpt % because application date is before distribution date.', _p.cashrcpt_docnumber; END IF; IF (COALESCE(_p.cashrcpt_posted, false)) THEN RAISE EXCEPTION 'Cannot post cashrcpt % because the document has already been posted.', _p.cashrcpt_docnumber; END IF; IF (COALESCE(_p.cashrcpt_void, false)) THEN RAISE EXCEPTION 'Cannot post cashrcpt % because the document has been voided.', _p.cashrcpt_docnumber; END IF; _predist := COALESCE(_p.cashrcpt_distdate < _p.applydate, false); IF (_p.cashrcpt_fundstype IN ('A', 'D', 'M', 'V')) THEN SELECT ccpay_id, ccpay_type INTO _ccpayid, _cctype FROM ccpay WHERE ((ccpay_r_ordernum IN (CAST(pCashrcptid AS TEXT), _p.cashrcpt_docnumber)) AND (ccpay_status IN ('C', 'A'))); IF NOT FOUND THEN -- the following select seems to work except for xikar - bug 8848. why? -- raise warning so there is some visibility if people fall into this path. SELECT ccpay_id, ccpay_type INTO _ccpayid, _cctype FROM ccpay WHERE ((ccpay_order_number IN (CAST(pCashrcptid AS TEXT), _p.cashrcpt_docnumber)) AND (ccpay_status IN ('C', 'A'))); IF (NOT FOUND) THEN RETURN -8; ELSE RAISE NOTICE 'PostCashReceipt() found ccpay_id % for order number %/% (ref 8848).', _ccpayid, pCashrcptid, _p.cashrcpt_docnumber; END IF; END IF; -- If there is a ccpay entry and the card was charged directly, use the prepaid account IF (_cctype = 'C' ) THEN _debitAccntid := findPrepaidAccount(_p.cashrcpt_cust_id); -- If there is a ccpay entry and the card was preauthed and then charged, use the Bank account ELSE SELECT accnt_id INTO _debitAccntid FROM cashrcpt, bankaccnt, accnt WHERE ( (cashrcpt_bankaccnt_id=bankaccnt_id) AND (bankaccnt_accnt_id=accnt_id) AND (cashrcpt_id=pCashrcptid) ); IF (NOT FOUND) THEN RETURN -6; END IF; END IF; ELSE SELECT accnt_id INTO _debitAccntid FROM cashrcpt, bankaccnt, accnt WHERE ( (cashrcpt_bankaccnt_id=bankaccnt_id) AND (bankaccnt_accnt_id=accnt_id) AND (cashrcpt_id=pCashrcptid) ); IF (NOT FOUND) THEN RETURN -6; END IF; END IF; -- Determine the amount to post to A/R Open Items SELECT COALESCE(SUM(cashrcptitem_amount), 0) INTO _postToAR FROM cashrcptitem JOIN aropen ON (aropen_id=cashrcptitem_aropen_id) WHERE (cashrcptitem_cashrcpt_id=pCashrcptid); IF (NOT FOUND) THEN _postToAR := 0; END IF; -- Determine the amount to post to Misc. Distributions SELECT COALESCE(SUM(cashrcptmisc_amount), 0) INTO _postToMisc FROM cashrcptmisc WHERE (cashrcptmisc_cashrcpt_id=pCashrcptid); IF (NOT FOUND) THEN _postToMisc := 0; END IF; -- Determine the amount to post to Discount Credit Memo SELECT COALESCE(SUM(cashrcptitem_discount), 0) INTO _postToCM FROM cashrcptitem JOIN aropen ON ( (aropen_id=cashrcptitem_aropen_id) AND (aropen_doctype IN ('I', 'D')) ) WHERE (cashrcptitem_cashrcpt_id=pCashrcptid); IF (NOT FOUND) THEN _postToCM := 0; END IF; -- Check to see if the C/R is over applied IF ((_postToAR + _postToMisc) > _p.cashrcpt_amount) THEN RETURN -1; END IF; -- Check to see if the C/R is positive amount IF (_p.cashrcpt_amount <= 0) THEN RETURN -2; END IF; -- Distribute A/R Applications FOR _r IN SELECT aropen_id, aropen_doctype, aropen_docnumber, aropen_docdate, aropen_duedate, aropen_curr_id, aropen_curr_rate, aropen_amount, round(aropen_amount - aropen_paid, 2) <= round(currToCurr(_p.cashrcpt_curr_id, aropen_curr_id,abs(cashrcptitem_amount + cashrcptitem_discount),_p.cashrcpt_distdate),2) AS closed, cashrcptitem_id, cashrcptitem_amount, cashrcptitem_discount, (cashrcptitem_amount / _p.cashrcpt_curr_rate) AS cashrcptitem_amount_base, (cashrcptitem_discount / _p.cashrcpt_curr_rate) AS cashrcptitem_discount_base, round(aropen_paid + currToCurr(_p.cashrcpt_curr_id, aropen_curr_id,abs(cashrcptitem_amount),_p.cashrcpt_distdate),2) AS new_paid, round(currToCurr(_p.cashrcpt_curr_id, aropen_curr_id,cashrcptitem_discount,_p.cashrcpt_distdate),2) AS new_discount FROM cashrcptitem JOIN aropen ON (aropen_id=cashrcptitem_aropen_id) WHERE ((cashrcptitem_cashrcpt_id=pCashrcptid) AND (NOT _predist OR aropen_doctype IN ('C','R'))) LOOP -- Handle discount IF (_r.cashrcptitem_discount_base > 0) THEN PERFORM postCashReceiptDisc(_r.cashrcptitem_id, pJournalNumber); END IF; -- Update the aropen item to post the paid amount UPDATE aropen SET aropen_paid = _r.new_paid + _r.new_discount, aropen_open = (NOT _r.closed), aropen_closedate = CASE WHEN _r.closed THEN _p.cashrcpt_distdate END WHERE (aropen_id=_r.aropen_id); -- Cache the running amount posted _posted_base := _posted_base + _r.cashrcptitem_amount_base; _posted := _posted + _r.cashrcptitem_amount; -- Record the cashrcpt application IF (_r.aropen_doctype IN ('I','D')) THEN INSERT INTO arapply ( arapply_cust_id, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_fundstype, arapply_refnumber, arapply_reftype, arapply_ref_id, arapply_applied, arapply_closed, arapply_postdate, arapply_distdate, arapply_journalnumber, arapply_username, arapply_curr_id ) VALUES ( _p.cashrcpt_cust_id, -1, 'K', _p.cashrcpt_number, _r.aropen_id, _r.aropen_doctype, _r.aropen_docnumber, _p.cashrcpt_fundstype, _p.cashrcpt_docnumber, 'CRA', _r.cashrcptitem_id, round(_r.cashrcptitem_amount, 2), _r.closed, _p.applydate, _p.cashrcpt_distdate, pJournalNumber, getEffectiveXtUser(), _p.cashrcpt_curr_id); ELSE INSERT INTO arapply ( arapply_cust_id, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_fundstype, arapply_refnumber, arapply_reftype, arapply_ref_id, arapply_applied, arapply_closed, arapply_postdate, arapply_distdate, arapply_journalnumber, arapply_username, arapply_curr_id ) VALUES ( _p.cashrcpt_cust_id, _r.aropen_id, _r.aropen_doctype, _r.aropen_docnumber, -1, 'R', _p.cashrcpt_number, '', '', 'CRA', _r.cashrcptitem_id, round(abs(_r.cashrcptitem_amount), 2), _r.closed, _p.applydate, _p.cashrcpt_distdate, pJournalNumber, getEffectiveXtUser(), _p.cashrcpt_curr_id ); END IF; _exchGain := arCurrGain(_r.aropen_id,_p.cashrcpt_curr_id, abs(_r.cashrcptitem_amount), _p.cashrcpt_distdate); PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CR', (_r.aropen_doctype || '-' || _r.aropen_docnumber), CASE WHEN _r.aropen_doctype != 'R' THEN _arAccntid ELSE findDeferredAccount(_p.cashrcpt_cust_id) END, round(_r.cashrcptitem_amount_base + _exchGain, 2), _p.cashrcpt_distdate, _p.custnote, pCashrcptid ); IF (_exchGain <> 0) THEN PERFORM insertIntoGLSeries(_sequence, 'A/R', 'CR', _r.aropen_doctype || '-' || _r.aropen_docnumber, getGainLossAccntId( CASE WHEN _r.aropen_doctype != 'R' THEN _arAccntid ELSE findDeferredAccount(_p.cashrcpt_cust_id) END ), round(_exchGain, 2) * -1, _p.cashrcpt_distdate, _p.custnote, pCashrcptid); END IF; END LOOP; -- Distribute Misc. Applications FOR _r IN SELECT cashrcptmisc_id, cashrcptmisc_accnt_id, cashrcptmisc_amount, (cashrcptmisc_amount / cashrcpt_curr_rate) AS cashrcptmisc_amount_base, cashrcptmisc_notes, cashrcpt_curr_id FROM cashrcptmisc JOIN cashrcpt ON (cashrcptmisc_cashrcpt_id = cashrcpt_id) WHERE (cashrcptmisc_cashrcpt_id=pCashrcptid) LOOP -- Cache the running amount posted _posted_base := (_posted_base + _r.cashrcptmisc_amount_base); _posted := (_posted + _r.cashrcptmisc_amount); -- Record the cashrcpt application INSERT INTO arapply ( arapply_cust_id, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_fundstype, arapply_refnumber, arapply_applied, arapply_closed, arapply_postdate, arapply_distdate, arapply_journalnumber, arapply_username, arapply_curr_id, arapply_reftype, arapply_ref_id ) VALUES ( _p.cashrcpt_cust_id, -1, 'K', '', -1, 'Misc.', '', _p.cashrcpt_fundstype, _p.cashrcpt_docnumber, round(_r.cashrcptmisc_amount, 2), TRUE, _p.applydate, _p.cashrcpt_distdate, pJournalNumber, getEffectiveXtUser(), _r.cashrcpt_curr_id, 'CRD', _r.cashrcptmisc_id ); PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CR', _r.cashrcptmisc_notes, _r.cashrcptmisc_accnt_id, round(_r.cashrcptmisc_amount_base, 2), _p.cashrcpt_distdate, _p.custnote, pCashrcptid ); END LOOP; -- Post any remaining Cash to an A/R Cash Despoit (Credit Memo) -- this credit memo may absorb an occasional currency exchange rounding error IF (round(_posted_base, 2) < round(_p.cashrcpt_amount_base, 2)) THEN _comment := ('Unapplied from ' || _p.cashrcpt_fundstype || '-' || _p.cashrcpt_docnumber); PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CR', _comment, _p.prepaid_accnt_id, round(_p.cashrcpt_amount_base, 2) - round(_posted_base, 2), _p.cashrcpt_distdate, _p.custnote, pCashrcptid ); SELECT fetchArMemoNumber() INTO _arMemoNumber; IF(_p.cashrcpt_usecustdeposit) THEN -- Post Customer Deposit SELECT createARCashDeposit(_p.cashrcpt_cust_id, _arMemoNumber, '', _p.cashrcpt_distdate, (_p.cashrcpt_amount - _posted), _comment, pJournalNumber, _p.cashrcpt_curr_id) INTO _aropenid; ELSE -- Post A/R Credit Memo _aropenid := createARCreditMemo(NULL, _p.cashrcpt_cust_id, _arMemoNumber, '', _p.cashrcpt_distdate, (_p.cashrcpt_amount - _posted), _comment, -1, -1, -1, _p.cashrcpt_distdate, -1, NULL, 0, pJournalNumber, _p.cashrcpt_curr_id, _arAccntid); END IF; IF (_ccpayid IS NOT NULL) THEN INSERT INTO payaropen (payaropen_ccpay_id, payaropen_aropen_id, payaropen_amount, payaropen_curr_id ) VALUES (_ccpayid, _aropenid, _p.cashrcpt_amount, _p.cashrcpt_curr_id); END IF; -- Create Cash Receipt Item to capture posting IF (_predist=false) THEN INSERT INTO cashrcptitem ( cashrcptitem_cashrcpt_id, cashrcptitem_aropen_id, cashrcptitem_amount, cashrcptitem_applied ) VALUES ( pCashrcptid, _aropenid, (_p.cashrcpt_amount - _posted), false ); END IF; ELSIF (round(_posted_base, 2) > round((_p.cashrcpt_amount_base), 2)) THEN PERFORM insertIntoGLSeries(_sequence, 'A/R', 'CR', 'Currency Exchange Rounding - ' || _p.cashrcpt_docnumber, getGainLossAccntId(_debitAccntid), round(_posted_base, 2) - round((_p.cashrcpt_amount_base + _p.cashrcpt_discount_base), 2), _p.cashrcpt_distdate, _p.custnote, pCashrcptid); END IF; -- Debit Cash PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CR', (_p.cashrcpt_fundstype || '-' || _p.cashrcpt_docnumber), _debitAccntid, round(_p.cashrcpt_amount_base, 2) * -1, _p.cashrcpt_distdate, _p.custnote, pCashrcptid ); PERFORM postGLSeries(_sequence, pJournalNumber); -- convert the cashrcptitem records to applications against the cm/cd if we are _predist IF(_predist=true) THEN FOR _r IN SELECT * FROM cashrcptitem WHERE ((cashrcptitem_cashrcpt_id=pCashrcptid) AND (cashrcptitem_amount > 0)) LOOP -- Handle discount if applicable IF (_r.cashrcptitem_discount > 0) THEN PERFORM postCashReceiptDisc(_r.cashrcptitem_id, pJournalNumber); END IF; INSERT INTO arcreditapply (arcreditapply_source_aropen_id, arcreditapply_target_aropen_id, arcreditapply_amount, arcreditapply_curr_id) VALUES(_aropenid, _r.cashrcptitem_aropen_id, _r.cashrcptitem_amount, _p.cashrcpt_curr_id); _posted := (_posted + _r.cashrcptitem_amount); END LOOP; PERFORM postArCreditMemoApplication(_aropenid, _p.applydate); -- If there is any left over go ahead and create an additional cashrcptitem record for it with the amount IF (round(_posted, 2) < round(_p.cashrcpt_amount, 2)) THEN INSERT INTO cashrcptitem ( cashrcptitem_cashrcpt_id, cashrcptitem_aropen_id, cashrcptitem_amount, cashrcptitem_applied ) VALUES ( pCashrcptid, _aropenid, (_p.cashrcpt_amount - _posted), false ); END IF; END IF; -- Update the posted cashrcpt UPDATE cashrcpt SET cashrcpt_posted=TRUE, cashrcpt_posteddate=CURRENT_DATE, cashrcpt_postedby=getEffectiveXtUser() WHERE (cashrcpt_id=pCashrcptid); RETURN 1; END; $$; SDROP FUNCTION public.postcashreceipt(pcashrcptid integer, pjournalnumber integer); publicadminfalse8399212551692510%postcashreceiptdisc(integer, integer)FUNCTIONCREATE FUNCTION postcashreceiptdisc(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCashrcptItemId ALIAS FOR $1; pJournalNumber ALIAS FOR $2; _r RECORD; _t RECORD; _v RECORD; _ardiscountid INTEGER; _arMemoNumber TEXT; _arAccntid INTEGER; _discountAccntid INTEGER; _comment TEXT; _discprcnt NUMERIC; _check INTEGER; BEGIN -- Fetch base records for processing SELECT aropen_id, aropen_doctype, aropen_amount, cashrcptitem_discount, cashrcpt_cust_id, cashrcpt_distdate, cashrcpt_applydate, cashrcpt_curr_id, cashrcpt_fundstype, cashrcpt_docnumber, round(currToCurr(cashrcpt_curr_id, aropen_curr_id, cashrcptitem_discount, cashrcpt_distdate),2) AS aropen_discount INTO _r FROM cashrcptitem JOIN cashrcpt ON (cashrcptitem_cashrcpt_id=cashrcpt_id) JOIN aropen ON ( (aropen_id=cashrcptitem_aropen_id) AND (aropen_doctype IN ('I', 'D')) ) WHERE (cashrcptitem_id=pCashrcptItemId); -- Get discount account _discountAccntid := findardiscountaccount(_r.cashrcpt_cust_id); IF (_r.cashrcptitem_discount > 0) THEN -- Determine discount percentage _discprcnt := _r.aropen_discount / _r.aropen_amount; SELECT fetchArMemoNumber() INTO _arMemoNumber; _comment := 'Discount Credit from ' || _r.cashrcpt_fundstype || '-' || _r.cashrcpt_docnumber; -- Create misc credit memo record _ardiscountid := nextval('aropen_aropen_id_seq'); INSERT INTO aropen ( aropen_id, aropen_docdate, aropen_duedate, aropen_doctype, aropen_docnumber, aropen_curr_id, aropen_posted, aropen_amount) VALUES ( _ardiscountid, _r.cashrcpt_distdate, _r.cashrcpt_distdate, 'C', _arMemoNumber, _r.cashrcpt_curr_id, false,_r.cashrcptitem_discount); IF (fetchMetricBool('CreditTaxDiscount')) THEN -- proportional tax credits calculated and implemented for the credit memo generated by the discount IF (_r.aropen_doctype = 'I') THEN -- Tax for invoices SELECT aropen_cobmisc_id AS invcheadid, invchead_curr_id, invchead_invcdate INTO _t FROM aropen LEFT OUTER JOIN invchead ON (aropen_cobmisc_id = invchead_id) LEFT OUTER JOIN invcitem ON (invchead_id = invcitem_invchead_id) WHERE aropen_id = _r.aropen_id; FOR _v IN SELECT tax_sales_accnt_id, tax_id, round(sum(taxdetail_tax), 2) AS tax, currToBase(_t.invchead_curr_id, round(sum(taxdetail_tax), 2), _t.invchead_invcdate) AS taxbasevalue FROM tax JOIN calculateTaxDetailSummary('I', _t.invcheadid, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id, tax_sales_accnt_id LOOP INSERT INTO aropentax( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_basis) VALUES ( _ardiscountid, getadjustmenttaxtypeid(), _v.tax_id, 0.00, 0.00, (round((_v.tax * _discprcnt), 2) * -1), _r.cashrcpt_distdate, 0.00); END LOOP; ELSIF (_r.aropen_doctype = 'D') THEN -- Tax for debit memos INSERT INTO aropentax( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_basis) SELECT _ardiscountid, taxhist_taxtype_id, taxhist_tax_id, 0.00, 0.00, (round((taxhist_tax * _discprcnt), 2) * -1), _r.cashrcpt_distdate, 0.00 FROM aropentax WHERE (taxhist_parent_id=_r.aropen_id); END IF; END IF; -- End taxes -- Create credit memo for discount SELECT createARCreditMemo(_ardiscountid, _r.cashrcpt_cust_id, _arMemoNumber, '', _r.cashrcpt_distdate, _r.cashrcptitem_discount, _comment, -1, -1, _discountAccntid, _r.cashrcpt_distdate, -1, NULL, 0, pJournalNumber, _r.cashrcpt_curr_id) INTO _ardiscountid; -- Apply discount credit memo INSERT INTO arcreditapply ( arcreditapply_source_aropen_id, arcreditapply_target_aropen_id, arcreditapply_amount, arcreditapply_curr_id ) VALUES ( _ardiscountid, _r.aropen_id, _r.cashrcptitem_discount, _r.cashrcpt_curr_id ); SELECT postARCreditMemoApplication(_ardiscountid, _r.cashrcpt_applydate) INTO _check; IF (_check < 0) THEN RAISE EXCEPTION 'Error posting discount credit memo application. Code %', _check; END IF; END IF; -- End handle Discount RETURN 1; END; $_$; <DROP FUNCTION public.postcashreceiptdisc(integer, integer); publicadminfalse83992125516925122postcccashreceipt(integer, integer, text, numeric)FUNCTIONLCREATE FUNCTION postcccashreceipt(pccpay integer, pdocid integer, pdoctype text DEFAULT NULL::text, pamount numeric DEFAULT NULL::numeric) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _aropenid INTEGER; _bankaccnt_id INTEGER; _c RECORD; _ccOrderDesc TEXT; _journal INTEGER; _realaccnt INTEGER; _return INTEGER := 0; BEGIN SELECT * INTO _c FROM ccpay, ccard, custinfo WHERE ( (ccpay_id = pCCpay) AND (ccpay_ccard_id = ccard_id) AND (ccpay_cust_id = cust_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot find the Credit Card transaction information [xtuple: postCCcashReceipt, -11, %]', pCCpay; END IF; IF (pamount IS NOT NULL) THEN _c.ccpay_amount = pamount; END IF; SELECT bankaccnt_id, bankaccnt_accnt_id INTO _bankaccnt_id, _realaccnt FROM ccbank JOIN bankaccnt ON (ccbank_bankaccnt_id=bankaccnt_id) WHERE (ccbank_ccard_type=_c.ccard_type); IF (_bankaccnt_id IS NULL) THEN RAISE EXCEPTION 'Cannot find the default Bank Account for this Credit Card [xtuple: postCCcredit, -1, %]', _c.ccard_type; END IF; _ccOrderDesc := (_c.ccard_type || '-' || _c.ccpay_order_number::TEXT || '-' || _c.ccpay_order_number_seq::TEXT); _journal := fetchJournalNumber('C/R'); IF (pdoctype = 'cashrcpt') THEN IF (COALESCE(pdocid, -1) < 0) THEN INSERT INTO cashrcpt ( cashrcpt_cust_id, cashrcpt_amount, cashrcpt_curr_id, cashrcpt_fundstype, cashrcpt_docnumber, cashrcpt_notes, cashrcpt_distdate, cashrcpt_bankaccnt_id, cashrcpt_usecustdeposit ) VALUES ( _c.ccpay_cust_id, _c.ccpay_amount, _c.ccpay_curr_id, _c.ccard_type, _c.ccpay_r_ordernum, _ccOrderDesc, CURRENT_DATE, _bankaccnt_id, fetchMetricBool('EnableCustomerDeposits')) RETURNING cashrcpt_id INTO _return; ELSE UPDATE cashrcpt SET cashrcpt_cust_id=_c.ccpay_cust_id, cashrcpt_amount=_c.ccpay_amount, cashrcpt_curr_id=_c.ccpay_curr_id, cashrcpt_fundstype=_c.ccard_type, cashrcpt_docnumber=_c.ccpay_r_ordernum, cashrcpt_notes=_ccOrderDesc, cashrcpt_distdate=CURRENT_DATE, cashrcpt_bankaccnt_id=_bankaccnt_id WHERE (cashrcpt_id=pdocid); _return := pdocid; END IF; ELSIF (pdoctype = 'cohead') THEN SELECT createARCreditMemo(NULL, _c.ccpay_cust_id, fetchArMemoNumber(), cohead_number, CURRENT_DATE, _c.ccpay_amount, 'Unapplied from ' || _ccOrderDesc, NULL, NULL, NULL, CURRENT_DATE, NULL, cohead_salesrep_id, NULL, _journal, _c.ccpay_curr_id, NULL, pCCpay) INTO _aropenid FROM cohead WHERE cohead_id = pdocid; IF (COALESCE(_aropenid, -1) < 0) THEN -- coalesce handles not-found case RAISE EXCEPTION '[xtuple: createARCreditMemo, %]', _aropenid; END IF; INSERT INTO payaropen (payaropen_ccpay_id, payaropen_aropen_id, payaropen_amount, payaropen_curr_id) VALUES (pccpay, _aropenid, _c.ccpay_amount, _c.ccpay_curr_id); INSERT INTO aropenalloc (aropenalloc_aropen_id, aropenalloc_doctype, aropenalloc_doc_id, aropenalloc_amount, aropenalloc_curr_id) VALUES (_aropenid, 'S', pdocid, _c.ccpay_amount, _c.ccpay_curr_id); _return := _aropenid; END IF; PERFORM insertGLTransaction(_journal, 'A/R', 'CR', _ccOrderDesc, ('Cash Receipt from Credit Card ' || _c.cust_name), findPrepaidAccount(_c.ccpay_cust_id), _realaccnt, NULL, ROUND(currToBase(_c.ccpay_curr_id, _c.ccpay_amount, _c.ccpay_transaction_datetime::DATE),2), CURRENT_DATE); RETURN _return; END; $$; hDROP FUNCTION public.postcccashreceipt(pccpay integer, pdocid integer, pdoctype text, pamount numeric); publicadminfalse8399212551692513$postcccredit(integer, text, integer)FUNCTIONCREATE FUNCTION postcccredit(integer, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCCpay ALIAS FOR $1; preftype ALIAS FOR $2; prefid ALIAS FOR $3; _c RECORD; _ccOrderDesc TEXT; _cglaccnt INTEGER; _dglaccnt INTEGER; _glseriesres INTEGER; _notes TEXT := 'Credit via Credit Card'; _r RECORD; _sequence INTEGER; _dmaropenid INTEGER; BEGIN IF ((preftype = 'cohead') AND NOT EXISTS(SELECT cohead_id FROM cohead WHERE (cohead_id=prefid))) THEN RAISE EXCEPTION 'Cannot find original Sales Order for this Credit Card credit [xtuple: postCCcredit, -2, %, %, %]', pCCpay, preftype, prefid; ELSIF ((preftype = 'aropen') AND NOT EXISTS(SELECT aropen_id FROM aropen WHERE (aropen_id=prefid))) THEN RAISE EXCEPTION 'Cannot find original A/R Open record for this Credit Card credit [xtuple: postCCcredit, -2, %, %, %]', pCCpay, preftype, prefid; ELSIF ((preftype = 'cmhead') AND NOT EXISTS(SELECT cmhead_id FROM cmhead WHERE cmhead_id=prefid)) THEN RAISE EXCEPTION 'Cannot find original Credit Memo record for this Credit Card credit [xtuple: postCCcredit, -2, %, %, %]', pCCpay, preftype, prefid; END IF; SELECT * INTO _c FROM ccpay JOIN ccard ON (ccpay_ccard_id = ccard_id) JOIN ccbank ON (ccard_type=ccbank_ccard_type) WHERE (ccpay_id = pCCpay); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot find the record for this Credit Card credit [xtuple: postCCcredit, -3, %, %, %]', pCCpay, preftype, prefid; END IF; IF (preftype = 'cohead') THEN _dglaccnt := findPrepaidAccount(_c.ccpay_cust_id); ELSE _dglaccnt := findARAccount(_c.ccpay_cust_id); END IF; SELECT bankaccnt_accnt_id INTO _cglaccnt FROM bankaccnt WHERE (bankaccnt_id=_c.ccbank_bankaccnt_id); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot find the default Bank Account for this Credit Card [xtuple: postCCcredit, -1, %]', pCCpay; END IF; IF (_c.ccpay_type != 'R') THEN RAISE EXCEPTION 'This Credit Card transaction is not a credit/refund [xtuple: postCCcredit, -4, %]', pCCpay; END IF; _sequence := fetchGLSequence(); IF (_c.ccpay_r_ref IS NOT NULL) THEN _ccOrderDesc := (_c.ccard_type || '-' || _c.ccpay_r_ref); ELSE _ccOrderDesc := (_c.ccard_type || '-' || _c.ccpay_order_number::TEXT || '-' || COALESCE(_c.ccpay_order_number_seq::TEXT, '')); END IF; _glseriesres := insertIntoGLSeries(_sequence, 'A/R', 'CC', _ccOrderDesc, _dglaccnt, ROUND(currToBase(_c.ccpay_curr_id, _c.ccpay_amount, _c.ccpay_transaction_datetime::DATE), 2) * -1, CURRENT_DATE, _notes); IF (_glseriesres < 0) THEN RAISE EXCEPTION 'Could not write debit side of Credit Card credit to the G/L [xtuple: insertIntoGLSeries, %]', _glseriesres; END IF; _glseriesres := insertIntoGLSeries(_sequence, 'A/R', 'CC', _ccOrderDesc, _cglaccnt, ROUND(currToBase(_c.ccpay_curr_id, _c.ccpay_amount, _c.ccpay_transaction_datetime::DATE),2), CURRENT_DATE, _notes); IF (_glseriesres < 0) THEN RAISE EXCEPTION 'Could not write credit side of Credit Card credit to the G/L [xtuple: insertIntoGLSeries, %]', _glseriesres; END IF; _glseriesres := postGLSeries(_sequence, fetchJournalNumber('C/R') ); IF (_glseriesres < 0) THEN RAISE EXCEPTION 'Could not post Credit Card credit to the G/L [xtuple: postglseries, %]', _glseriesres; END IF; IF (preftype = 'aropen') THEN SELECT * INTO _r FROM aropen WHERE (aropen_id=prefid); ELSE SELECT aropen.* INTO _r FROM ccpay n JOIN ccpay o ON (o.ccpay_id=n.ccpay_ccpay_id) JOIN payaropen ON (payaropen_ccpay_id=o.ccpay_id) JOIN aropen ON (payaropen_aropen_id=aropen_id) WHERE (n.ccpay_id=pCCpay); END IF; IF (FOUND) THEN SELECT createardebitmemo( NULL, _r.aropen_cust_id, NULL, fetchARMemoNumber(), _r.aropen_ordernumber, current_date, _c.ccpay_amount, _notes, -1, -1, -1, CURRENT_DATE, -1, NULL, 0, _r.aropen_curr_id) INTO _dmaropenid; IF (_r.aropen_open) THEN PERFORM applyARCreditMemoToBalance(_r.aropen_id, _dmaropenid); PERFORM postARCreditMemoApplication(_r.aropen_id); END IF; END IF; IF (preftype = 'cohead') THEN INSERT INTO payco ( payco_ccpay_id, payco_cohead_id, payco_amount, payco_curr_id ) VALUES ( pCCpay, prefid, 0 - _c.ccpay_amount, _c.ccpay_curr_id ); END IF; RETURN 0; END; $_$; ;DROP FUNCTION public.postcccredit(integer, text, integer); publicadminfalse83992k12551692514postccvoid(integer)FUNCTIONCREATE FUNCTION postccvoid(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pccpayid ALIAS FOR $1; BEGIN -- for now this is very simple: mark the ccpay record voided. -- in the future this might be expanded to back out changes to other tables -- but for now the VOID request is sent to the credit card processing company -- before those other tables are modified. UPDATE ccpay SET ccpay_status = 'V' WHERE (ccpay_id=pccpayid); IF (NOT FOUND) THEN RETURN -1; END IF; RETURN 0; END; $_$; *DROP FUNCTION public.postccvoid(integer); publicadminfalse8399212551692515postcheck(integer, integer)FUNCTION^*CREATE FUNCTION postcheck(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pcheckid ALIAS FOR $1; _journalNumber INTEGER := $2; _amount_base NUMERIC := 0; _credit_glaccnt INTEGER; _exchGain NUMERIC := 0; _exchGainTmp NUMERIC := 0; _gltransNote TEXT; _p RECORD; _r RECORD; _t RECORD; _sequence INTEGER; _test INTEGER; _cm BOOLEAN; _amount_check NUMERIC := 0; BEGIN _cm := FALSE; SELECT fetchGLSequence() INTO _sequence; IF (_journalNumber IS NULL) THEN _journalNumber := fetchJournalNumber('AP-CK'); END IF; SELECT checkhead.*, checkhead_amount / checkhead_curr_rate AS checkhead_amount_base, bankaccnt_accnt_id AS bankaccntid INTO _p FROM checkhead JOIN bankaccnt ON (checkhead_bankaccnt_id=bankaccnt_id) WHERE (checkhead_id=pcheckid); IF (FOUND) THEN IF (_p.checkhead_recip_type = 'V') THEN SELECT vend_number AS checkrecip_number, vend_name AS checkrecip_name, findAPAccount(vend_id) AS checkrecip_accnt_id, 'A/P'::text AS checkrecip_gltrans_source INTO _t FROM vendinfo WHERE (vend_id=_p.checkhead_recip_id); ELSIF (_p.checkhead_recip_type = 'C') THEN SELECT cust_number AS checkrecip_number, cust_name AS checkrecip_name, findARAccount(cust_id) AS checkrecip_accnt_id, 'A/R'::text AS checkrecip_gltrans_source INTO _t FROM custinfo WHERE (cust_id=_p.checkhead_recip_id); ELSIF (_p.checkhead_recip_type = 'T') THEN SELECT taxauth_code AS checkrecip_number, taxauth_name AS checkrecip_name, taxauth_accnt_id AS checkrecip_accnt_id, 'G/L'::text AS checkrecip_gltrans_source INTO _t FROM taxauth WHERE (taxauth_id=_p.checkhead_recip_id); ELSE RETURN -11; END IF; ELSE RETURN -11; END IF; IF (_p.checkhead_posted) THEN RETURN -10; END IF; IF (_p.checkhead_recip_type = 'C') THEN SELECT checkitem_id FROM checkitem INTO _test WHERE (checkitem_checkhead_id=pcheckid) LIMIT 1; IF (FOUND) THEN _cm := TRUE; END IF; END IF; _gltransNote := _t.checkrecip_number || '-' || _t.checkrecip_name; IF (_p.checkhead_misc AND NOT _cm) THEN IF (COALESCE(_p.checkhead_expcat_id, -1) < 0) THEN IF (_p.checkhead_recip_type = 'V') THEN PERFORM createAPCreditMemo( _p.checkhead_recip_id, _journalNumber, CAST(fetchAPMemoNumber() AS text), '', _p.checkhead_checkdate, _p.checkhead_amount, _gltransNote || ' ' || _p.checkhead_notes, -1, _p.checkhead_checkdate, -1, _p.checkhead_curr_id ); _credit_glaccnt := findAPPrepaidAccount(_p.checkhead_recip_id); ELSIF (_p.checkhead_recip_type = 'C') THEN PERFORM createARDebitMemo(NULL, _p.checkhead_recip_id, NULL, fetchARMemoNumber(), '', _p.checkhead_checkdate, _p.checkhead_amount, _gltransNote || ' ' || _p.checkhead_notes, -1, -1, -1, _p.checkhead_checkdate, -1, NULL, 0, _p.checkhead_curr_id ); _credit_glaccnt := findPrepaidAccount(_p.checkhead_recip_id); ELSIF (_p.checkhead_recip_type = 'T') THEN -- TODO: should we create a credit memo for the tax authority? how? _credit_glaccnt := _t.checkrecip_accnt_id; END IF; -- recip type ELSE IF (_cm) THEN _credit_glaccnt := findARAccount(_p.checkhead_recip_id); ELSE SELECT expcat_exp_accnt_id INTO _credit_glaccnt FROM expcat WHERE (expcat_id=_p.checkhead_expcat_id); IF (NOT FOUND) THEN RETURN -12; END IF; END IF; END IF; IF (COALESCE(_credit_glaccnt, -1) < 0) THEN RETURN -13; END IF; PERFORM insertIntoGLSeries( _sequence, _t.checkrecip_gltrans_source, 'CK', CAST(_p.checkhead_number AS TEXT), _credit_glaccnt, round(_p.checkhead_amount_base, 2) * -1, _p.checkhead_checkdate, _gltransNote, pcheckid ); _amount_base := _p.checkhead_amount_base; ELSE FOR _r IN SELECT checkitem_amount, checkitem_discount, CASE WHEN (checkitem_apopen_id IS NOT NULL) THEN checkitem_amount / apopen_curr_rate ELSE currToBase(checkitem_curr_id, checkitem_amount, COALESCE(checkitem_docdate, _p.checkhead_checkdate)) END AS checkitem_amount_base, currTocurr(checkitem_curr_id, _p.checkhead_curr_id, checkitem_amount, _p.checkhead_checkdate) AS amount_check, apopen_id, apopen_doctype, apopen_docnumber, aropen_id, aropen_doctype, aropen_docnumber, checkitem_curr_id, checkitem_curr_rate, apopen_curr_rate, COALESCE(checkitem_docdate, _p.checkhead_checkdate) AS docdate FROM (checkitem LEFT OUTER JOIN apopen ON (checkitem_apopen_id=apopen_id)) LEFT OUTER JOIN aropen ON (checkitem_aropen_id=aropen_id) WHERE (checkitem_checkhead_id=pcheckid) LOOP _exchGainTmp := 0; IF (_r.apopen_id IS NOT NULL) THEN -- take the discount if specified before we do anything else IF(_r.checkitem_discount > 0.0) THEN PERFORM createAPDiscount(_r.apopen_id, _r.checkitem_discount); END IF; UPDATE apopen SET apopen_paid = round(apopen_paid + _r.checkitem_amount, 2), apopen_open = round(apopen_amount, 2) > round(apopen_paid + _r.checkitem_amount, 2), apopen_closedate = CASE WHEN (round(apopen_amount, 2) <= round(apopen_paid + _r.checkitem_amount, 2)) THEN _p.checkhead_checkdate END WHERE (apopen_id=_r.apopen_id); -- Post the application INSERT INTO apapply ( apapply_vend_id, apapply_postdate, apapply_username, apapply_source_apopen_id, apapply_source_doctype, apapply_source_docnumber, apapply_target_apopen_id, apapply_target_doctype, apapply_target_docnumber, apapply_journalnumber, apapply_amount, apapply_curr_id, apapply_checkhead_id ) VALUES ( _p.checkhead_recip_id, _p.checkhead_checkdate, getEffectiveXtUser(), -1, 'K', _p.checkhead_number, _r.apopen_id, _r.apopen_doctype, _r.apopen_docnumber, _journalNumber, _r.checkitem_amount, _r.checkitem_curr_id, _p.checkhead_id ); END IF; -- if check item's apopen_id is not null IF (_r.aropen_id IS NOT NULL) THEN UPDATE aropen SET aropen_paid = round(aropen_paid + _r.checkitem_amount, 2), aropen_open = round(aropen_amount, 2) > round(aropen_paid + _r.checkitem_amount, 2), aropen_closedate = CASE WHEN (round(aropen_amount, 2) <= round(aropen_paid + _r.checkitem_amount, 2)) THEN _p.checkhead_checkdate END WHERE (aropen_id=_r.aropen_id); -- Post the application INSERT INTO arapply ( arapply_cust_id, arapply_postdate, arapply_distdate, arapply_username, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_journalnumber, arapply_applied, arapply_curr_id ) VALUES ( _p.checkhead_recip_id, _p.checkhead_checkdate, _p.checkhead_checkdate, getEffectiveXtUser(), _r.aropen_id,_r.aropen_doctype, _r.aropen_docnumber, -1, 'K',_p.checkhead_number , _journalNumber, _r.checkitem_amount, _r.checkitem_curr_id ); END IF; -- if check item's aropen_id is not null IF (_r.apopen_id IS NOT NULL) THEN SELECT apCurrGain(_r.apopen_id,_r.checkitem_curr_id, _r.checkitem_amount, _p.checkhead_checkdate) INTO _exchGainTmp; ELSIF (_r.aropen_id IS NOT NULL) THEN SELECT arCurrGain(_r.aropen_id,_r.checkitem_curr_id, _r.checkitem_amount, _p.checkhead_checkdate) INTO _exchGainTmp; END IF; _exchGain := _exchGain + _exchGainTmp; PERFORM insertIntoGLSeries( _sequence, _t.checkrecip_gltrans_source, 'CK', CAST(_p.checkhead_number AS TEXT), _t.checkrecip_accnt_id, round(_r.checkitem_amount_base, 2) * -1, _p.checkhead_checkdate, _gltransNote, pcheckid ); IF (_exchGainTmp <> 0) THEN PERFORM insertIntoGLSeries( _sequence, _t.checkrecip_gltrans_source, 'CK', CAST(_p.checkhead_number AS TEXT), getGainLossAccntId(_t.checkrecip_accnt_id), round(_exchGainTmp,2), _p.checkhead_checkdate, _gltransNote, pcheckid ); END IF; _amount_check := (_amount_check + _r.amount_check); _amount_base := (_amount_base + _r.checkitem_amount_base); END LOOP; IF( (_amount_check - _p.checkhead_amount) <> 0.0 ) THEN _exchGainTmp := currToBase(_p.checkhead_curr_id, _amount_check - _p.checkhead_amount, _p.checkhead_checkdate); _exchGain := _exchGain + _exchGainTmp; END IF; -- ensure that the check balances, attribute rounding errors to gain/loss IF round(_amount_base, 2) - round(_exchGain, 2) <> round(_p.checkhead_amount_base, 2) THEN IF round(_amount_base - _exchGain, 2) = round(_p.checkhead_amount_base, 2) THEN PERFORM insertIntoGLSeries( _sequence, _t.checkrecip_gltrans_source, 'CK', CAST(_p.checkhead_number AS TEXT), getGainLossAccntId(_p.bankaccntid), round(_amount_base, 2) - round(_exchGain, 2) - round(_p.checkhead_amount_base, 2), _p.checkhead_checkdate, _gltransNote, pcheckid ); ELSE RAISE EXCEPTION 'checkhead_id % does not balance (% - % <> %)', pcheckid, _amount_base, _exchGain, _p.checkhead_amount_base; END IF; END IF; END IF; PERFORM insertIntoGLSeries( _sequence, _t.checkrecip_gltrans_source, 'CK', CAST(_p.checkhead_number AS TEXT), _p.bankaccntid, round(_p.checkhead_amount_base, 2), _p.checkhead_checkdate, _gltransNote, pcheckid ); PERFORM postGLSeries(_sequence, _journalNumber); UPDATE checkhead SET checkhead_posted=TRUE, checkhead_journalnumber=_journalNumber WHERE (checkhead_id=pcheckid); RETURN _journalNumber; END; $_$; 2DROP FUNCTION public.postcheck(integer, integer); publicadminfalse8399212551692517postchecks(integer)FUNCTIONOCREATE FUNCTION postchecks(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankaccntid ALIAS FOR $1; _journalNumber INTEGER; BEGIN SELECT fetchJournalNumber('AP-CK') INTO _journalNumber; PERFORM postCheck(checkhead_id, _journalNumber) FROM checkhead WHERE ( (NOT checkhead_void) AND (NOT checkhead_posted) AND (checkhead_printed) AND (checkhead_bankaccnt_id=pBankaccntid) ); RETURN _journalNumber; END; $_$; *DROP FUNCTION public.postchecks(integer); publicadminfalse8399212551692518)postcomment(integer, text, integer, text)FUNCTIONhCREATE FUNCTION postcomment(pcmnttypeid integer, psource text, psourceid integer, ptext text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE BEGIN RETURN postComment(pCmnttypeid, pSource, pSourceid, pText, NULL); END $$; dDROP FUNCTION public.postcomment(pcmnttypeid integer, psource text, psourceid integer, ptext text); publicadminfalse83992125516925192postcomment(integer, text, integer, text, boolean)FUNCTIONCREATE FUNCTION postcomment(pcmnttypeid integer, psource text, psourceid integer, ptext text, ppublic boolean) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _commentid INTEGER; _public BOOLEAN; BEGIN _public := COALESCE(pPublic, fetchmetricbool('CommentPublicDefault')); INSERT INTO comment ( comment_cmnttype_id, comment_source, comment_source_id, comment_date, comment_user, comment_text, comment_public ) VALUES ( pCmnttypeid, pSource, pSourceid, CURRENT_TIMESTAMP, getEffectiveXtUser(), pText, _public ) RETURNING comment_id INTO _commentid; RETURN _commentid; END; $$; uDROP FUNCTION public.postcomment(pcmnttypeid integer, psource text, psourceid integer, ptext text, ppublic boolean); publicadminfalse8399212551746784&postcomment(text, text, integer, text)FUNCTION<CREATE FUNCTION postcomment(pcmnttypename text, psource text, psourceid integer, ptext text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cmnttypeid INTEGER; BEGIN SELECT cmnttype_id INTO _cmnttypeid FROM cmnttype WHERE (cmnttype_name=pCmnttypename); IF (NOT FOUND) THEN RAISE EXCEPTION 'Comment type % not found.', pCmnttypename; END IF; RETURN postComment(_cmnttypeid, pSource, pSourceid, pText, NULL); END $$; cDROP FUNCTION public.postcomment(pcmnttypename text, psource text, psourceid integer, ptext text); publicadminfalse8399212551692520postcost(integer)FUNCTIONCREATE FUNCTION postcost(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemcostid ALIAS FOR $1; _p RECORD; BEGIN SELECT round(currToBase(itemcost_curr_id, itemcost_actcost, CURRENT_DATE),6) AS newcost, itemcost_curr_id, CURRENT_DATE AS effective, item_number, itemcost_stdcost AS oldcost INTO _p FROM itemcost, item WHERE ((itemcost_item_id=item_id) AND (itemcost_id=pItemcostid)); IF (_p.newcost IS NULL) THEN RAISE EXCEPTION 'There is no valid Exchange Rate for this currency. (%, %)', _p.itemcost_curr_id, _p.effective; RETURN FALSE; END IF; RETURN updateStdCost(pItemcostid, _p.newcost, _p.oldcost, 'Post Cost', ('Post Actual Cost to Standard for item ' || _p.item_number)); END; $_$; (DROP FUNCTION public.postcost(integer); publicadminfalse8399212551692521postcountslip(integer)FUNCTIONACREATE FUNCTION postcountslip(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCntslipid ALIAS FOR $1; _p RECORD; _comments TEXT; _temp TEXT; BEGIN SELECT itemsite_loccntrl, itemsite_controlmethod, cntslip_posted, cntslip_lotserial, cntslip_comments, cntslip_number, cntslip_qty INTO _p FROM cntslip, invcnt, itemsite WHERE ( (cntslip_cnttag_id=invcnt_id) AND (invcnt_itemsite_id=itemsite_id) AND (cntslip_id=pCntslipid) ); IF (NOT _p.cntslip_posted) THEN SELECT ( E'\nCount Slip #' || _p.cntslip_number || ' counted ' || formatQty(_p.cntslip_qty) ) INTO _comments; -- Add the Location name if the itemsite is MLC IF (_p.itemsite_loccntrl) THEN SELECT ( ', Location:' || location_name ) INTO _temp FROM location, cntslip WHERE ( (cntslip_location_id=location_id) AND (cntslip_id=pCntslipid) ); _comments := (_comments || _temp); END IF; -- Add the Lot/Serial if the itemsite is Lot or Serial controlled IF (_p.itemsite_controlmethod = 'L') THEN _comments := (_comments || ( ', Lot #:' || _p.cntslip_lotserial)); ELSIF (_p.itemsite_controlmethod = 'S') THEN _comments := (_comments || ( ', Serial #:' || _p.cntslip_lotserial)); END IF; _comments := (_comments || ' ' || _p.cntslip_comments); UPDATE cntslip SET cntslip_posted=TRUE WHERE (cntslip_id=pCntslipid); UPDATE invcnt SET invcnt_qoh_after = ( COALESCE(invcnt_qoh_after, 0) + cntslip_qty), invcnt_comments = (invcnt_comments || _comments) FROM cntslip WHERE ( (cntslip_cnttag_id=invcnt_id) AND (cntslip_id=pCntslipid) ); RETURN 1; ELSE RETURN -1; END IF; END; $_$; -DROP FUNCTION public.postcountslip(integer); publicadminfalse83992s12551692522postcounttag(integer, boolean)FUNCTIONX'CREATE FUNCTION postcounttag(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcntid ALIAS FOR $1; pThaw ALIAS FOR $2; _avgCostingMethod TEXT; _invhistid INTEGER; _postDate TIMESTAMP; _runningQty NUMERIC; _errorCode INTEGER; _itemlocSeries INTEGER := 0; _hasDetail BOOLEAN; _p RECORD; _itemloc RECORD; _cntslip RECORD; _lsid INTEGER; BEGIN SELECT COALESCE(fetchMetricText('CountAvgCostMethod'), 'STD') INTO _avgCostingMethod; SELECT invcnt_id, invcnt_tagnumber, invcnt_qoh_after, invcnt_location_id, item_number, itemsite_id, itemsite_freeze, itemsite_qtyonhand, itemsite_loccntrl, itemsite_location_id, CASE WHEN (itemsite_costmethod = 'N') THEN 0 WHEN ( (itemsite_costmethod = 'A') AND (itemsite_qtyonhand = 0) AND (_avgCostingMethod = 'ACT') ) THEN actcost(itemsite_item_id) WHEN ( (itemsite_costmethod = 'A') AND (_avgCostingMethod IN ('ACT', 'AVG')) ) THEN avgcost(itemsite_id) ELSE stdcost(itemsite_item_id) END AS cost, itemsite_costmethod, itemsite_controlmethod, itemsite_value INTO _p FROM invcnt, itemsite, item WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (invcnt_qoh_after IS NOT NULL) AND (NOT invcnt_posted) AND (invcnt_id=pInvcntid) ); IF (FOUND) THEN -- If the invcnt_location_id is not null then -- call a separate function so as not to affect -- the existing functionality. IF (_p.invcnt_location_id IS NOT NULL) THEN RETURN postCountTagLocation(pInvcntid, pThaw); END IF; SELECT NEXTVAL('invhist_invhist_id_seq') INTO _invhistid; IF (_p.itemsite_freeze) THEN SELECT invcnt_tagdate INTO _postDate FROM invcnt WHERE (invcnt_id=pInvcntid) ; ELSE _postDate = CURRENT_TIMESTAMP; END IF; _hasDetail = FALSE; -- Post the detail indicated by cntslips IF ( (_p.itemsite_loccntrl) OR (_p.itemsite_controlmethod IN ('L', 'S')) ) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; -- Adjust any existing detail to 0 FOR _itemloc IN SELECT itemloc_id, itemloc_location_id, itemloc_ls_id, itemloc_qty FROM itemloc WHERE (itemloc_itemsite_id=_p.itemsite_id) LOOP _hasDetail = TRUE; -- Create the itemlocdist flushing records INSERT INTO itemlocdist ( itemlocdist_series, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_expiration, itemlocdist_itemsite_id, itemlocdist_invhist_id, itemlocdist_flush ) VALUES ( _itemlocSeries, 'I', _itemloc.itemloc_id, endOfTime(), _p.itemsite_id, _invhistid, TRUE ); END LOOP; -- Clear the running detail Qty _runningQty := 0; -- Adjust the detail to the cntslip indicated value FOR _cntslip IN SELECT cntslip_location_id, cntslip_lotserial, cntslip_lotserial_expiration, cntslip_lotserial_warrpurc, SUM(cntslip_qty) AS qty, itemsite_item_id FROM cntslip, invcnt, itemsite WHERE ((cntslip_cnttag_id=pInvcntid) AND (cntslip_cnttag_id=invcnt_id) AND (invcnt_itemsite_id=itemsite_id)) GROUP BY cntslip_location_id, cntslip_lotserial, cntslip_lotserial_expiration, cntslip_lotserial_warrpurc,itemsite_item_id LOOP -- Handle the LotSerial IF (LENGTH(_cntslip.cntslip_lotserial)>0) THEN SELECT ls_id INTO _lsid FROM ls WHERE ((ls_item_id=_cntslip.itemsite_item_id) AND (UPPER(ls_number)=UPPER(_cntslip.cntslip_lotserial))); IF (NOT FOUND) THEN _lsid := NEXTVAL('ls_ls_id_seq'); INSERT INTO ls VALUES (_lsid,_cntslip.itemsite_item_id,UPPER(_cntslip.cntslip_lotserial)); END IF; END IF; -- Track the running Qty _runningQty := (_runningQty + _cntslip.qty); _hasDetail = TRUE; -- Create the itemlocdist populating record INSERT INTO itemlocdist ( itemlocdist_series, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_itemsite_id, itemlocdist_ls_id, itemlocdist_expiration, itemlocdist_warranty, itemlocdist_qty, itemlocdist_invhist_id ) VALUES ( _itemlocSeries, 'L', _cntslip.cntslip_location_id, _p.itemsite_id, _lsid, COALESCE(_cntslip.cntslip_lotserial_expiration, endOfTime()), _cntslip.cntslip_lotserial_warrpurc,_cntslip.qty, _invhistid ); END LOOP; IF (_runningQty > _p.invcnt_qoh_after) THEN -- The total Count Slip Qty is greater than the Count Tag Qty, -- Don't post the Count. _errorCode = -1; ELSIF ( (_runningQty < _p.invcnt_qoh_after) AND (_p.itemsite_controlmethod IN ('L', 'S')) ) THEN -- The total Count Slip Qty is less than the Count Tag Qty, -- and the Item Site is Lot/Serial controlled. -- Don't post the Count. _errorCode = -2; ELSIF (_runningQty < _p.invcnt_qoh_after) THEN IF ( (NOT _p.itemsite_loccntrl) OR (_p.itemsite_location_id = -1) ) THEN -- The total Count Slip Qty is less than the Count Tag Qty, -- and there isn't a default location to post into. -- Don't post the Count. _errorCode = -3; ELSIF ( SELECT (metric_value='f') FROM metric WHERE (metric_name='PostCountTagToDefault') ) THEN -- The total Count Slip Qty is less than the Count Tag Qty, -- and we don't post Count Tags to default Locations -- Don't post the Count. _errorCode = -4; ELSE -- Distribute the remaining qty into the default location. INSERT INTO itemlocdist ( itemlocdist_series, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_itemsite_id, itemlocdist_expiration, itemlocdist_qty, itemlocdist_invhist_id ) SELECT _itemlocSeries, 'L', _p.itemsite_location_id, _p.itemsite_id, endOfTime(), (_p.invcnt_qoh_after - _runningQty), _invhistid; _hasDetail = TRUE; _errorCode = 0; END IF; ELSE -- The Count Slip Qty. must equal the Count Tag Qty. _errorCode = 0; END IF; -- If we shouldn't post the count then delete the itemlocdist records, -- and return with the error. IF (_errorCode <> 0) THEN DELETE FROM itemlocdist WHERE (itemlocdist_series=_itemlocSeries); RETURN _errorCode; END IF; END IF; -- Mod. the Count Tag. UPDATE invcnt SET invcnt_qoh_before=_p.itemsite_qtyonhand, invcnt_postdate=_postDate, invcnt_posted=TRUE, invcnt_invhist_id=_invhistid, invcnt_post_username=getEffectiveXtUser() WHERE (invcnt_id=pInvcntid); -- Create the CC transaction INSERT INTO invhist ( invhist_id, invhist_itemsite_id, invhist_transdate, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_docnumber, invhist_comments, invhist_invuom, invhist_unitcost, invhist_hasdetail, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_series ) SELECT _invhistid, itemsite_id, _postDate, 'CC', (invcnt_qoh_after - invcnt_qoh_before), invcnt_qoh_before, invcnt_qoh_after, invcnt_tagnumber, invcnt_comments, uom_name, _p.cost, _hasDetail, _p.itemsite_costmethod, _p.itemsite_value, _p.itemsite_value + (_p.cost * (invcnt_qoh_after - invcnt_qoh_before)), _itemlocSeries FROM itemsite, invcnt, item, uom WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (invcnt_id=pInvcntid) ); IF ( SELECT metric_value FROM metric WHERE ((metric_name = 'EnableAsOfQOH') AND (metric_value = 't'))) THEN IF (NOT postIntoInvBalance(_invhistid)) THEN RAISE EXCEPTION 'Post into Inventory Balance for invhist_id=% was unsuccessful',_invhistid; END IF; END IF; -- Update the QOH -- Avoid negative value when average cost item UPDATE itemsite SET itemsite_qtyonhand=_p.invcnt_qoh_after, itemsite_nnqoh = 0, itemsite_value = CASE WHEN ((itemsite_costmethod='A') AND (_p.itemsite_value + (_p.cost * (_p.invcnt_qoh_after - itemsite_qtyonhand))) < 0.0) THEN 0.0 ELSE (_p.itemsite_value + (_p.cost * (_p.invcnt_qoh_after - itemsite_qtyonhand))) END, itemsite_datelastcount=_postDate WHERE (itemsite_id=_p.itemsite_id); -- Post the detail, if any IF (_hasDetail) THEN PERFORM distributeItemlocSeries(_itemlocSeries); END IF; -- Thaw the itemsite if it's frozen IF (pThaw) THEN PERFORM thawItemSite(invcnt_itemsite_id) FROM invcnt WHERE (invcnt_id=pInvcntid); END IF; -- Distribute to G/L PERFORM insertGLTransaction( 'I/M', 'CT', _p.invcnt_tagnumber, ('Post Count Tag #' || _p.invcnt_tagnumber || ' for Item ' || _p.item_number), costcat_adjustment_accnt_id, costcat_asset_accnt_id, _invhistid, ( (_p.invcnt_qoh_after - _p.itemsite_qtyonhand) * _p.cost), _postDate::DATE ) FROM invcnt, itemsite, costcat WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_costcat_id=costcat_id) AND (invcnt_id=pInvcntid) ); RETURN 0; ELSE RETURN -9; END IF; END; $_$; 5DROP FUNCTION public.postcounttag(integer, boolean); publicadminfalse83992t12551692524&postcounttaglocation(integer, boolean)FUNCTION%CREATE FUNCTION postcounttaglocation(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcntid ALIAS FOR $1; pThaw ALIAS FOR $2; _avgCostingMethod TEXT; _invhistid INTEGER; _postDate TIMESTAMP; _runningQty NUMERIC; _errorCode INTEGER; _itemlocSeries INTEGER := 0; _hasDetail BOOLEAN; _p RECORD; _itemloc RECORD; _cntslip RECORD; _origLocQty NUMERIC; _netable BOOLEAN; _lsid INTEGER; BEGIN SELECT COALESCE(fetchMetricText('CountAvgCostMethod'), 'STD') INTO _avgCostingMethod; SELECT invcnt_id, invcnt_tagnumber, invcnt_qoh_after, invcnt_location_id, invcnt_tagdate, item_number, itemsite_id, itemsite_freeze, itemsite_qtyonhand, itemsite_loccntrl, COALESCE(invcnt_location_id, -1) AS itemsite_location_id, CASE WHEN (itemsite_costmethod = 'N') THEN 0 WHEN ( (itemsite_costmethod = 'A') AND (itemsite_qtyonhand = 0) AND (_avgCostingMethod = 'ACT') ) THEN actcost(itemsite_item_id) WHEN ( (itemsite_costmethod = 'A') AND (_avgCostingMethod IN ('ACT', 'AVG')) ) THEN avgcost(itemsite_id) ELSE stdcost(itemsite_item_id) END AS cost, itemsite_costmethod, itemsite_controlmethod, itemsite_value INTO _p FROM invcnt, itemsite, item WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (invcnt_qoh_after IS NOT NULL) AND (NOT invcnt_posted) AND (invcnt_id=pInvcntid) ); IF (NOT FOUND) THEN RETURN -9; END IF; SELECT COALESCE(SUM(itemloc_qty),0.0), location_netable INTO _origLocQty,_netable FROM itemloc,location WHERE ((itemloc_itemsite_id=_p.itemsite_id) AND (location_id=itemloc_location_id) AND (itemloc_location_id=_p.invcnt_location_id)) GROUP BY location_netable; IF (NOT FOUND) THEN _origLocQty := 0.0; _netable := TRUE; END IF; SELECT NEXTVAL('invhist_invhist_id_seq') INTO _invhistid; IF (_p.itemsite_freeze) THEN _postDate := _p.invcnt_tagdate; ELSE _postDate := CURRENT_TIMESTAMP; END IF; _hasDetail = FALSE; -- Post the detail indicated by cntslips IF ( (_p.itemsite_loccntrl) OR (_p.itemsite_controlmethod IN ('L', 'S')) ) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; -- Adjust any existing detail to 0 FOR _itemloc IN SELECT itemloc_id, itemloc_location_id, itemloc_ls_id, itemloc_qty FROM itemloc WHERE ((itemloc_itemsite_id=_p.itemsite_id) AND (itemloc_location_id=_p.invcnt_location_id)) LOOP _hasDetail = TRUE; -- Create the itemlocdist flushing records INSERT INTO itemlocdist ( itemlocdist_series, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_expiration, itemlocdist_itemsite_id, itemlocdist_invhist_id, itemlocdist_flush ) VALUES ( _itemlocSeries, 'I', _itemloc.itemloc_id, endOfTime(), _p.itemsite_id, _invhistid, TRUE ); END LOOP; -- Clear the running detail Qty _runningQty := 0; -- Adjust the detail to the cntslip indicated value FOR _cntslip IN SELECT cntslip_location_id, cntslip_lotserial, cntslip_lotserial_expiration, cntslip_lotserial_warrpurc, SUM(cntslip_qty) AS qty, itemsite_item_id FROM cntslip,invcnt,itemsite WHERE ((cntslip_cnttag_id=pInvcntid) AND (cntslip_cnttag_id=invcnt_id) AND (invcnt_itemsite_id=itemsite_id)) GROUP BY cntslip_location_id, cntslip_lotserial, cntslip_lotserial_expiration, cntslip_lotserial_warrpurc, itemsite_item_id LOOP -- Handle the LotSerial IF (LENGTH(_cntslip.cntslip_lotserial)>0) THEN SELECT ls_id INTO _lsid FROM ls WHERE ((ls_item_id=_cntslip.itemsite_item_id) AND (UPPER(ls_number)=UPPER(_cntslip.cntslip_lotserial))); IF (NOT FOUND) THEN _lsid := NEXTVAL('ls_ls_id_seq'); INSERT INTO ls VALUES (_lsid,_cntslip.itemsite_item_id,UPPER(_cntslip.cntslip_lotserial)); END IF; END IF; -- Track the running Qty _runningQty := (_runningQty + _cntslip.qty); _hasDetail = TRUE; -- Create the itemlocdist populating record INSERT INTO itemlocdist ( itemlocdist_series, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_itemsite_id, itemlocdist_ls_id, itemlocdist_expiration, itemlocdist_warranty, itemlocdist_qty, itemlocdist_invhist_id ) VALUES ( _itemlocSeries, 'L', _cntslip.cntslip_location_id, _p.itemsite_id, _lsid, COALESCE(_cntslip.cntslip_lotserial_expiration, endOfTime()), _cntslip.cntslip_lotserial_warrpurc, _cntslip.qty, _invhistid ); END LOOP; IF (_runningQty > _p.invcnt_qoh_after) THEN -- The total Count Slip Qty is greater than the Count Tag Qty, -- Don't post the Count. _errorCode = -1; ELSIF ( (_runningQty < _p.invcnt_qoh_after) AND (_p.itemsite_controlmethod IN ('L', 'S')) ) THEN -- The total Count Slip Qty is less than the Count Tag Qty, -- and the Item Site is Lot/Serial controlled. -- Don't post the Count. _errorCode = -2; ELSIF (_runningQty < _p.invcnt_qoh_after) THEN IF ( (NOT _p.itemsite_loccntrl) OR (_p.itemsite_location_id = -1) ) THEN -- The total Count Slip Qty is less than the Count Tag Qty, -- and there isn't a default location to post into. -- Don't post the Count. _errorCode = -3; ELSIF ( SELECT (metric_value='f') FROM metric WHERE (metric_name='PostCountTagToDefault') ) THEN -- The total Count Slip Qty is less than the Count Tag Qty, -- and we don't post Count Tags to default Locations -- Don't post the Count. _errorCode = -4; ELSE -- Distribute the remaining qty into the default location. INSERT INTO itemlocdist ( itemlocdist_series, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_itemsite_id, itemlocdist_ls_id, itemlocdist_expiration, itemlocdist_qty, itemlocdist_invhist_id ) SELECT _itemlocSeries, 'L', _p.itemsite_location_id, _p.itemsite_id, _lsid, endOfTime(), (_p.invcnt_qoh_after - _runningQty), _invhistid; _hasDetail = TRUE; _errorCode = 0; END IF; ELSE -- The Count Slip Qty. must equal the Count Tag Qty. _errorCode = 0; END IF; -- If we shouldn't post the count then delete the itemlocdist records, -- and return with the error. IF (_errorCode <> 0) THEN DELETE FROM itemlocdist WHERE (itemlocdist_series=_itemlocSeries); RETURN _errorCode; END IF; END IF; -- Mod. the Count Tag. UPDATE invcnt SET invcnt_qoh_before=_origLocQty, invcnt_postdate=_postDate, invcnt_posted=TRUE, invcnt_invhist_id=_invhistid, invcnt_post_username=getEffectiveXtUser() WHERE (invcnt_id=pInvcntid); -- Create the CC transaction INSERT INTO invhist ( invhist_id, invhist_itemsite_id, invhist_transdate, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_docnumber, invhist_comments, invhist_invuom, invhist_unitcost, invhist_hasdetail, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_series ) SELECT _invhistid, itemsite_id, _postDate, 'CC', (invcnt_qoh_after - invcnt_qoh_before), invcnt_qoh_before, invcnt_qoh_after, invcnt_tagnumber, invcnt_comments, uom_name, _p.cost, _hasDetail, _p.itemsite_costmethod, _p.itemsite_value, _p.itemsite_value + (_p.cost * (invcnt_qoh_after - invcnt_qoh_before)), _itemlocSeries FROM itemsite, invcnt, item, uom WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (invcnt_id=pInvcntid) ); -- Update the QOH IF (_netable) THEN UPDATE itemsite SET itemsite_qtyonhand= itemsite_qtyonhand + (_p.invcnt_qoh_after - _origLocQty), itemsite_datelastcount=_postDate WHERE (itemsite_id=_p.itemsite_id); ELSE UPDATE itemsite SET itemsite_nnqoh = itemsite_nnqoh - _origLocQty, itemsite_qtyonhand = itemsite_qtyonhand + _p.invcnt_qoh_after, itemsite_datelastcount=_postDate WHERE (itemsite_id=_p.itemsite_id); END IF; -- Post the detail, if any IF (_hasDetail) THEN PERFORM distributeItemlocSeries(_itemlocSeries); END IF; -- Thaw the itemsite if it's frozen IF (pThaw) THEN PERFORM thawItemSite(invcnt_itemsite_id) FROM invcnt WHERE (invcnt_id=pInvcntid); END IF; -- Distribute to G/L PERFORM insertGLTransaction( 'I/M', 'CT', _p.invcnt_tagnumber, ('Post Count Tag #' || _p.invcnt_tagnumber || ' for Item ' || _p.item_number), costcat_adjustment_accnt_id, costcat_asset_accnt_id, _invhistid, ( (_p.invcnt_qoh_after - _origLocQty) * _p.cost), CURRENT_DATE ) FROM invcnt, itemsite, costcat WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_costcat_id=costcat_id) AND (invcnt_id=pInvcntid) ); RETURN 0; END; $_$; =DROP FUNCTION public.postcounttaglocation(integer, boolean); publicadminfalse83992n12551692526,postcounttaglocation(integer, boolean, text)FUNCTION$CREATE FUNCTION postcounttaglocation(integer, boolean, text) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pInvcntid ALIAS FOR $1; pThaw ALIAS FOR $2; pAvgCostingMethod ALIAS FOR $3; _invhistid INTEGER; _postDate TIMESTAMP; _runningQty NUMERIC; _errorCode INTEGER; _itemlocSeries INTEGER := 0; _hasDetail BOOLEAN; _p RECORD; _itemloc RECORD; _cntslip RECORD; _origLocQty NUMERIC; _netable BOOLEAN; _lsid INTEGER; BEGIN SELECT invcnt_id, invcnt_tagnumber, invcnt_qoh_after, invcnt_location_id, invcnt_tagdate, item_number, itemsite_id, itemsite_freeze, itemsite_qtyonhand, itemsite_loccntrl, COALESCE(invcnt_location_id, -1) AS itemsite_location_id, CASE WHEN (itemsite_costmethod = 'N') THEN 0 WHEN ( (itemsite_costmethod = 'A') AND (itemsite_qtyonhand = 0) AND (pAvgCostingMethod = 'ACT') ) THEN actcost(itemsite_item_id) WHEN ( (itemsite_costmethod = 'A') AND (pAvgCostingMethod IN ('ACT', 'AVG')) ) THEN avgcost(itemsite_id) ELSE stdcost(itemsite_item_id) END AS cost, itemsite_costmethod, itemsite_controlmethod, itemsite_value INTO _p FROM invcnt, itemsite, item WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (invcnt_qoh_after IS NOT NULL) AND (NOT invcnt_posted) AND (invcnt_id=pInvcntid) ); IF (NOT FOUND) THEN RETURN -9; END IF; SELECT COALESCE(SUM(itemloc_qty),0.0), location_netable INTO _origLocQty,_netable FROM itemloc,location WHERE ((itemloc_itemsite_id=_p.itemsite_id) AND (location_id=itemloc_location_id) AND (itemloc_location_id=_p.invcnt_location_id)) GROUP BY location_netable; IF (NOT FOUND) THEN _origLocQty := 0.0; _netable := TRUE; END IF; SELECT NEXTVAL('invhist_invhist_id_seq') INTO _invhistid; IF (_p.itemsite_freeze) THEN _postDate := _p.invcnt_tagdate; ELSE _postDate := CURRENT_TIMESTAMP; END IF; _hasDetail = FALSE; -- Post the detail indicated by cntslips IF ( (_p.itemsite_loccntrl) OR (_p.itemsite_controlmethod IN ('L', 'S')) ) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; -- Adjust any existing detail to 0 FOR _itemloc IN SELECT itemloc_id, itemloc_location_id, itemloc_ls_id, itemloc_qty FROM itemloc WHERE ((itemloc_itemsite_id=_p.itemsite_id) AND (itemloc_location_id=_p.invcnt_location_id)) LOOP _hasDetail = TRUE; -- Create the itemlocdist flushing records INSERT INTO itemlocdist ( itemlocdist_series, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_expiration, itemlocdist_itemsite_id, itemlocdist_invhist_id, itemlocdist_flush ) VALUES ( _itemlocSeries, 'I', _itemloc.itemloc_id, endOfTime(), _p.itemsite_id, _invhistid, TRUE ); END LOOP; -- Clear the running detail Qty _runningQty := 0; -- Adjust the detail to the cntslip indicated value FOR _cntslip IN SELECT cntslip_location_id, cntslip_lotserial, cntslip_lotserial_expiration, cntslip_lotserial_warrpurc, SUM(cntslip_qty) AS qty, itemsite_item_id FROM cntslip,invcnt,itemsite WHERE ((cntslip_cnttag_id=pInvcntid) AND (cntslip_cnttag_id=invcnt_id) AND (invcnt_itemsite_id=itemsite_id)) GROUP BY cntslip_location_id, cntslip_lotserial, cntslip_lotserial_expiration, cntslip_lotserial_warrpurc, itemsite_item_id LOOP -- Handle the LotSerial IF (LENGTH(_cntslip.cntslip_lotserial)>0) THEN SELECT ls_id INTO _lsid FROM ls WHERE ((ls_item_id=_cntslip.itemsite_item_id) AND (UPPER(ls_number)=UPPER(_cntslip.cntslip_lotserial))); IF (NOT FOUND) THEN _lsid := NEXTVAL('ls_ls_id_seq'); INSERT INTO ls VALUES (_lsid,_cntslip.itemsite_item_id,UPPER(_cntslip.cntslip_lotserial)); END IF; END IF; -- Track the running Qty _runningQty := (_runningQty + _cntslip.qty); _hasDetail = TRUE; -- Create the itemlocdist populating record INSERT INTO itemlocdist ( itemlocdist_series, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_itemsite_id, itemlocdist_ls_id, itemlocdist_expiration, itemlocdist_warranty, itemlocdist_qty, itemlocdist_invhist_id ) VALUES ( _itemlocSeries, 'L', _cntslip.cntslip_location_id, _p.itemsite_id, _lsid, COALESCE(_cntslip.cntslip_lotserial_expiration, endOfTime()), _cntslip.cntslip_lotserial_warrpurc, _cntslip.qty, _invhistid ); END LOOP; IF (_runningQty > _p.invcnt_qoh_after) THEN -- The total Count Slip Qty is greater than the Count Tag Qty, -- Don't post the Count. _errorCode = -1; ELSIF ( (_runningQty < _p.invcnt_qoh_after) AND (_p.itemsite_controlmethod IN ('L', 'S')) ) THEN -- The total Count Slip Qty is less than the Count Tag Qty, -- and the Item Site is Lot/Serial controlled. -- Don't post the Count. _errorCode = -2; ELSIF (_runningQty < _p.invcnt_qoh_after) THEN IF ( (NOT _p.itemsite_loccntrl) OR (_p.itemsite_location_id = -1) ) THEN -- The total Count Slip Qty is less than the Count Tag Qty, -- and there isn't a default location to post into. -- Don't post the Count. _errorCode = -3; ELSIF ( SELECT (metric_value='f') FROM metric WHERE (metric_name='PostCountTagToDefault') ) THEN -- The total Count Slip Qty is less than the Count Tag Qty, -- and we don't post Count Tags to default Locations -- Don't post the Count. _errorCode = -4; ELSE -- Distribute the remaining qty into the default location. INSERT INTO itemlocdist ( itemlocdist_series, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_itemsite_id, itemlocdist_ls_id, itemlocdist_expiration, itemlocdist_qty, itemlocdist_invhist_id ) SELECT _itemlocSeries, 'L', _p.itemsite_location_id, _p.itemsite_id, _lsid, endOfTime(), (_p.invcnt_qoh_after - _runningQty), _invhistid; _hasDetail = TRUE; _errorCode = 0; END IF; ELSE -- The Count Slip Qty. must equal the Count Tag Qty. _errorCode = 0; END IF; -- If we shouldn't post the count then delete the itemlocdist records, -- and return with the error. IF (_errorCode <> 0) THEN DELETE FROM itemlocdist WHERE (itemlocdist_series=_itemlocSeries); RETURN _errorCode; END IF; END IF; -- Mod. the Count Tag. UPDATE invcnt SET invcnt_qoh_before=_origLocQty, invcnt_postdate=_postDate, invcnt_posted=TRUE, invcnt_invhist_id=_invhistid, invcnt_post_username=CURRENT_USER WHERE (invcnt_id=pInvcntid); -- Create the CC transaction INSERT INTO invhist ( invhist_id, invhist_itemsite_id, invhist_transdate, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_docnumber, invhist_comments, invhist_invuom, invhist_unitcost, invhist_hasdetail, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_series ) SELECT _invhistid, itemsite_id, _postDate, 'CC', (invcnt_qoh_after - invcnt_qoh_before), invcnt_qoh_before, invcnt_qoh_after, invcnt_tagnumber, invcnt_comments, uom_name, _p.cost, _hasDetail, _p.itemsite_costmethod, _p.itemsite_value, _p.itemsite_value + (_p.cost * (invcnt_qoh_after - invcnt_qoh_before)), _itemlocSeries FROM itemsite, invcnt, item, uom WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (invcnt_id=pInvcntid) ); -- Update the QOH IF (_netable) THEN UPDATE itemsite SET itemsite_qtyonhand= itemsite_qtyonhand + (_p.invcnt_qoh_after - _origLocQty), itemsite_datelastcount=_postDate WHERE (itemsite_id=_p.itemsite_id); ELSE UPDATE itemsite SET itemsite_nnqoh = itemsite_nnqoh - _origLocQty, itemsite_qtyonhand = itemsite_qtyonhand + _p.invcnt_qoh_after, itemsite_datelastcount=_postDate WHERE (itemsite_id=_p.itemsite_id); END IF; -- Post the detail, if any IF (_hasDetail) THEN PERFORM distributeItemlocSeries(_itemlocSeries); END IF; -- Thaw the itemsite if it's frozen IF (pThaw) THEN PERFORM thawItemSite(invcnt_itemsite_id) FROM invcnt WHERE (invcnt_id=pInvcntid); END IF; -- Distribute to G/L PERFORM insertGLTransaction( 'I/M', 'CT', _p.invcnt_tagnumber, ('Post Count Tag #' || _p.invcnt_tagnumber || ' for Item ' || _p.item_number), costcat_adjustment_accnt_id, costcat_asset_accnt_id, _invhistid, ( (_p.invcnt_qoh_after - _origLocQty) * _p.cost), CURRENT_DATE ) FROM invcnt, itemsite, costcat WHERE ( (invcnt_itemsite_id=itemsite_id) AND (itemsite_costcat_id=costcat_id) AND (invcnt_id=pInvcntid) ); RETURN 0; END; $_$; CDROP FUNCTION public.postcounttaglocation(integer, boolean, text); publicadminfalse8399212551692528postcounttags(integer, boolean)FUNCTIONNCREATE FUNCTION postcounttags(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pThaw ALIAS FOR $2; _invcnt RECORD; _result INTEGER := 0; _return INTEGER := 0; BEGIN FOR _invcnt IN SELECT invcnt_id FROM invcnt, itemsite WHERE ( (invcnt_itemsite_id=itemsite_id) AND ( (pWarehousid=-1) OR (itemsite_warehous_id=pWarehousid) ) AND (invcnt_qoh_after IS NOT NULL) AND (NOT invcnt_posted) ) LOOP SELECT postCountTag(_invcnt.invcnt_id, pThaw) INTO _result; IF (_result < _return) THEN _return := _result; END IF; END LOOP; RETURN _return; END; $_$; 6DROP FUNCTION public.postcounttags(integer, boolean); publicadminfalse83992#12551692529 postcreditmemo(integer, integer)FUNCTIONCREATE FUNCTION postcreditmemo(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmheadid ALIAS FOR $1; pItemlocSeries ALIAS FOR $2; _return INTEGER; BEGIN SELECT postCreditMemo(pCmheadid, fetchJournalNumber('AR-CM'), pItemlocSeries) INTO _return; RETURN _return; END; $_$; 7DROP FUNCTION public.postcreditmemo(integer, integer); publicadminfalse8399212551692530)postcreditmemo(integer, integer, integer)FUNCTION0UCREATE FUNCTION postcreditmemo(integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmheadid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pItemlocSeries ALIAS FOR $3; _r RECORD; _p RECORD; _aropenid INTEGER; _cohistid INTEGER; _sequence INTEGER; _itemlocSeries INTEGER; _invhistid INTEGER; _test INTEGER; _totalAmount NUMERIC := 0; _commissionDue NUMERIC := 0; _toApply NUMERIC; _toClose BOOLEAN; _glDate DATE; _taxBaseValue NUMERIC := 0; BEGIN -- Cache some parameters SELECT cmhead.*, findARAccount(cmhead_cust_id) AS ar_accnt_id, ( SELECT COALESCE(SUM(taxhist_tax), 0) FROM cmheadtax WHERE ( (taxhist_parent_id = cmhead_id) AND (taxhist_taxtype_id = getAdjustmentTaxtypeId()) ) ) AS adjtax INTO _p FROM cmhead WHERE (cmhead_id=pCmheadid); IF (_p.cmhead_posted) THEN RETURN -10; END IF; IF (_p.cmhead_hold) THEN RETURN -11; END IF; _glDate := COALESCE(_p.cmhead_gldistdate, _p.cmhead_docdate); _itemlocSeries = pItemlocSeries; SELECT fetchGLSequence() INTO _sequence; -- Start by handling taxes FOR _r IN SELECT tax_sales_accnt_id, round(sum(taxdetail_tax),2) AS tax, currToBase(_p.cmhead_curr_id, round(sum(taxdetail_tax),2), _p.cmhead_docdate) AS taxbasevalue FROM tax JOIN calculateTaxDetailSummary('CM', pCmheadid, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id, tax_sales_accnt_id LOOP PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CM', _p.cmhead_number, _r.tax_sales_accnt_id, _r.taxbasevalue, _glDate, _p.cmhead_billtoname ); _totalAmount := _totalAmount + _r.tax * -1; END LOOP; -- Update item tax records with posting data UPDATE cmitemtax SET taxhist_docdate=_p.cmhead_docdate, taxhist_distdate=_glDate, taxhist_curr_id=_p.cmhead_curr_id, taxhist_curr_rate=curr_rate, taxhist_journalnumber=pJournalNumber FROM cmhead JOIN cmitem ON (cmhead_id=cmitem_cmhead_id), curr_rate WHERE ((cmhead_id=pCmheadId) AND (taxhist_parent_id=cmitem_id) AND (_p.cmhead_curr_id=curr_id) AND (_p.cmhead_docdate BETWEEN curr_effective AND curr_expires) ); -- Update Header taxes (Freight and Adjustments) with posting data UPDATE cmheadtax SET taxhist_docdate=_p.cmhead_docdate, taxhist_distdate=_glDate, taxhist_curr_id=_p.cmhead_curr_id, taxhist_curr_rate=curr_rate, taxhist_journalnumber=pJournalNumber FROM curr_rate WHERE ((taxhist_parent_id=pCmheadId) AND (_p.cmhead_curr_id=curr_id) AND (_p.cmhead_docdate BETWEEN curr_effective AND curr_expires) ); -- Process line items -- Always use std cost FOR _r IN SELECT *, stdCost(item_id) AS std_cost FROM creditmemoitem WHERE ( (cmitem_cmhead_id=pCmheadid) AND (cmitem_qtycredit <> 0 ) ) LOOP -- Calcuate the Commission to be debited _commissionDue := (_commissionDue + (_r.extprice * _p.cmhead_commission)); IF (_r.extprice <> 0) THEN -- Debit the Sales Account for the current cmitem SELECT insertIntoGLSeries( _sequence, 'A/R', 'CM', _p.cmhead_number, CASE WHEN _p.cmhead_rahead_id IS NULL THEN getPrjAccntId(_p.cmhead_prj_id, salesaccnt_credit_accnt_id) ELSE getPrjAccntId(_p.cmhead_prj_id, salesaccnt_returns_accnt_id) END, round(currToBase(_p.cmhead_curr_id, _r.extprice * -1, _p.cmhead_docdate), 2), _glDate, _p.cmhead_billtoname) INTO _test FROM salesaccnt WHERE (salesaccnt_id=findSalesAccnt(_r.cmitem_itemsite_id, 'IS', _p.cmhead_cust_id, _p.cmhead_saletype_id, _p.cmhead_shipzone_id)); IF (NOT FOUND) THEN PERFORM deleteGLSeries(_sequence); RETURN -12; END IF; END IF; -- Record Sales History for this C/M Item SELECT nextval('cohist_cohist_id_seq') INTO _cohistid; INSERT INTO cohist ( cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_curr_id, cohist_taxtype_id, cohist_taxzone_id, cohist_shipzone_id, cohist_saletype_id ) VALUES ( _cohistid, _p.cmhead_cust_id, _r.cmitem_itemsite_id, _p.cmhead_shipto_id, _p.cmhead_docdate, '', _p.cmhead_number, _p.cmhead_custponumber, _p.cmhead_docdate, 'C', _p.cmhead_invcnumber, _p.cmhead_docdate, (_r.qty * -1), _r.unitprice, _r.std_cost, _p.cmhead_salesrep_id, (_p.cmhead_commission * _r.extprice * -1), FALSE, _p.cmhead_billtoname, _p.cmhead_billtoaddress1, _p.cmhead_billtoaddress2, _p.cmhead_billtoaddress3, _p.cmhead_billtocity, _p.cmhead_billtostate, _p.cmhead_billtozip, _p.cmhead_shipto_name, _p.cmhead_shipto_address1, _p.cmhead_shipto_address2, _p.cmhead_shipto_address3, _p.cmhead_shipto_city, _p.cmhead_shipto_state, _p.cmhead_shipto_zipcode, _p.cmhead_curr_id, _r.cmitem_taxtype_id, _p.cmhead_taxzone_id, _p.cmhead_shipzone_id, _p.cmhead_saletype_id ); INSERT INTO cohisttax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT _cohistid, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM cmitemtax WHERE (taxhist_parent_id=_r.cmitem_id); _totalAmount := _totalAmount + round(_r.extprice, 2); END LOOP; -- Credit the Misc. Account for Miscellaneous Charges IF (_p.cmhead_misc <> 0) THEN SELECT insertIntoGLSeries( _sequence, 'A/R', 'CM', _p.cmhead_number, getPrjAccntId(_p.cmhead_prj_id, accnt_id), round(currToBase(_p.cmhead_curr_id, _p.cmhead_misc * -1, _p.cmhead_docdate), 2), _glDate, _p.cmhead_billtoname) INTO _test FROM accnt WHERE (accnt_id=_p.cmhead_misc_accnt_id); -- If the Misc. Charges Account was not found then punt IF (NOT FOUND) THEN PERFORM deleteGLSeries(_sequence); RETURN -14; END IF; -- Record the Sales History for any Misc. Charge INSERT INTO cohist ( cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_misc_type, cohist_misc_descrip, cohist_misc_id, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_curr_id, cohist_shipzone_id, cohist_saletype_id ) VALUES ( _p.cmhead_cust_id, -1, _p.cmhead_shipto_id, 'M', _p.cmhead_misc_descrip, _p.cmhead_misc_accnt_id, _p.cmhead_docdate, '', _p.cmhead_number, _p.cmhead_custponumber, _p.cmhead_docdate, 'C', _p.cmhead_invcnumber, _p.cmhead_docdate, 1, (_p.cmhead_misc * -1), (_p.cmhead_misc * -1), _p.cmhead_salesrep_id, 0, FALSE, _p.cmhead_billtoname, _p.cmhead_billtoaddress1, _p.cmhead_billtoaddress2, _p.cmhead_billtoaddress3, _p.cmhead_billtocity, _p.cmhead_billtostate, _p.cmhead_billtozip, _p.cmhead_shipto_name, _p.cmhead_shipto_address1, _p.cmhead_shipto_address2, _p.cmhead_shipto_address3, _p.cmhead_shipto_city, _p.cmhead_shipto_state, _p.cmhead_shipto_zipcode, _p.cmhead_curr_id, _p.cmhead_shipzone_id, _p.cmhead_saletype_id ); -- Cache the Misc. Amount distributed _totalAmount := _totalAmount + _p.cmhead_misc; END IF; -- Credit Tax Adjustments IF (_p.adjtax <> 0) THEN -- Record the Sales History for Tax Adjustment SELECT nextval('cohist_cohist_id_seq') INTO _cohistid; INSERT INTO cohist ( cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_misc_type, cohist_misc_descrip, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_curr_id, cohist_taxtype_id, cohist_taxzone_id, cohist_shipzone_id, cohist_saletype_id ) VALUES ( _cohistid, _p.cmhead_cust_id, -1, _p.cmhead_shipto_id, 'T', 'Misc Tax Adjustment', _p.cmhead_docdate, '', _p.cmhead_number, _p.cmhead_custponumber, _p.cmhead_docdate, 'C', _p.cmhead_invcnumber, _p.cmhead_docdate, 0, 0, 0, _p.cmhead_salesrep_id, 0, FALSE, _p.cmhead_billtoname, _p.cmhead_billtoaddress1, _p.cmhead_billtoaddress2, _p.cmhead_billtoaddress3, _p.cmhead_billtocity, _p.cmhead_billtostate, _p.cmhead_billtozip, _p.cmhead_shipto_name, _p.cmhead_shipto_address1, _p.cmhead_shipto_address2, _p.cmhead_shipto_address3, _p.cmhead_shipto_city, _p.cmhead_shipto_state, _p.cmhead_shipto_zipcode, _p.cmhead_curr_id, getAdjustmentTaxtypeId(), _p.cmhead_taxzone_id, _p.cmhead_shipzone_id, _p.cmhead_saletype_id ); INSERT INTO cohisttax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT _cohistid, taxhist_taxtype_id, taxhist_tax_id, (taxhist_basis * -1), taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM cmheadtax WHERE ( (taxhist_parent_id=_p.cmhead_id) AND (taxhist_taxtype_id=getAdjustmentTaxtypeId()) ); END IF; -- Debit the Freight Account IF (_p.cmhead_freight <> 0) THEN SELECT insertIntoGLSeries( _sequence, 'A/R', 'CM', _p.cmhead_number, getPrjAccntId(_p.cmhead_prj_id, accnt_id), round(currToBase(_p.cmhead_curr_id, _p.cmhead_freight * -1, _p.cmhead_docdate), 2), _glDate, _p.cmhead_billtoname) INTO _test FROM accnt WHERE (accnt_id=findFreightAccount(_p.cmhead_cust_id)); -- If the Freight Charges Account was not found then punt IF (NOT FOUND) THEN PERFORM deleteGLSeries(_sequence); RETURN -16; END IF; -- Cache the Amount Distributed to Freight _totalAmount := _totalAmount + _p.cmhead_freight; -- Record the Sales History for any Freight SELECT nextval('cohist_cohist_id_seq') INTO _cohistid; INSERT INTO cohist ( cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_misc_type, cohist_misc_descrip, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_curr_id, cohist_taxtype_id, cohist_taxzone_id, cohist_shipzone_id, cohist_saletype_id ) VALUES ( _cohistid, _p.cmhead_cust_id, -1, _p.cmhead_shipto_id, 'F', 'Freight Charge', _p.cmhead_docdate, '', _p.cmhead_number, _p.cmhead_custponumber, _p.cmhead_docdate, 'C', _p.cmhead_invcnumber, _p.cmhead_docdate, 1, (_p.cmhead_freight * -1), (_p.cmhead_freight * -1), _p.cmhead_salesrep_id, 0, FALSE, _p.cmhead_billtoname, _p.cmhead_billtoaddress1, _p.cmhead_billtoaddress2, _p.cmhead_billtoaddress3, _p.cmhead_billtocity, _p.cmhead_billtostate, _p.cmhead_billtozip, _p.cmhead_shipto_name, _p.cmhead_shipto_address1, _p.cmhead_shipto_address2, _p.cmhead_shipto_address3, _p.cmhead_shipto_city, _p.cmhead_shipto_state, _p.cmhead_shipto_zipcode, _p.cmhead_curr_id, getFreightTaxtypeId(), _p.cmhead_taxzone_id, _p.cmhead_shipzone_id, _p.cmhead_saletype_id ); INSERT INTO cohisttax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT _cohistid, taxhist_taxtype_id, taxhist_tax_id, (taxhist_basis * -1), taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM cmheadtax WHERE ( (taxhist_parent_id=_p.cmhead_id) AND (taxhist_taxtype_id=getFreightTaxtypeId()) ); END IF; _totalAmount := _totalAmount; -- Credit the A/R for the total Amount IF (_totalAmount <> 0) THEN IF (_p.ar_accnt_id != -1) THEN PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CM', _p.cmhead_number, _p.ar_accnt_id, round(currToBase(_p.cmhead_curr_id, _totalAmount, _p.cmhead_docdate), 2), _glDate, _p.cmhead_billtoname); ELSE PERFORM deleteGLSeries(_sequence); RETURN -18; END IF; END IF; -- Commit the GLSeries; PERFORM postGLSeries(_sequence, pJournalNumber); -- Create the Invoice aropen item SELECT NEXTVAL('aropen_aropen_id_seq') INTO _aropenid; INSERT INTO aropen ( aropen_id, aropen_username, aropen_journalnumber, aropen_open, aropen_posted, aropen_cust_id, aropen_ponumber, aropen_docnumber, aropen_applyto, aropen_doctype, aropen_docdate, aropen_duedate, aropen_distdate, aropen_terms_id, aropen_amount, aropen_paid, aropen_salesrep_id, aropen_commission_due, aropen_commission_paid, aropen_ordernumber, aropen_notes, aropen_rsncode_id, aropen_curr_id ) SELECT _aropenid, getEffectiveXtUser(), pJournalNumber, TRUE, FALSE, cmhead_cust_id, cmhead_custponumber, cmhead_number, CASE WHEN (cmhead_invcnumber='-1') THEN 'OPEN' ELSE (cmhead_invcnumber::TEXT) END, 'C', cmhead_docdate, cmhead_docdate, _glDate, -1, _totalAmount, 0, cmhead_salesrep_id, (_commissionDue * -1), FALSE, cmhead_number::TEXT, cmhead_comments, cmhead_rsncode_id, cmhead_curr_id FROM cmhead WHERE (cmhead_id=pCmheadid); -- Handle the Inventory and G/L Transactions for any returned Inventory where cmitem_updateinv is true FOR _r IN SELECT cmitem_itemsite_id AS itemsite_id, cmitem_id, (cmitem_qtyreturned * cmitem_qty_invuomratio) AS qty, cmhead_number, cmhead_cust_id AS cust_id, item_number, cmhead_saletype_id AS saletype_id, cmhead_shipzone_id AS shipzone_id, stdCost(item_id) AS std_cost, cmhead_prj_id, itemsite_costmethod FROM cmhead, cmitem, itemsite, item WHERE ( (cmitem_cmhead_id=cmhead_id) AND (cmitem_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (cmitem_qtyreturned <> 0) AND (cmitem_updateinv) AND (cmhead_id=pCmheadid) ) LOOP -- Return credited stock to inventory IF (_itemlocSeries = 0) THEN _itemlocSeries := NEXTVAL('itemloc_series_seq'); END IF; IF (_r.itemsite_costmethod != 'J') THEN SELECT postInvTrans(itemsite_id, 'RS', _r.qty, 'S/O', 'CM', _r.cmhead_number, '', ('Credit Return ' || _r.item_number), costcat_asset_accnt_id, getPrjAccntId(_r.cmhead_prj_id, resolveCOSAccount(itemsite_id, _r.cust_id, _r.saletype_id, _r.shipzone_id)), _itemlocSeries, _glDate, _r.std_cost) INTO _invhistid FROM itemsite, costcat WHERE ((itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id)); ELSE RAISE DEBUG 'postCreditMemo(%, %, %) tried to postInvTrans a %-costed item', pCmheadid, pJournalNumber, pItemlocSeries, _r.itemsite_costmethod; END IF; END LOOP; -- Update coitem to reflect the returned qty where cmitem_updateinv is true FOR _r IN SELECT cmitem_qtyreturned, cmitem_itemsite_id, cohead_id FROM cmitem, cmhead, invchead, cohead WHERE ( (cmitem_cmhead_id=cmhead_id) AND (cmhead_invcnumber=invchead_invcnumber) AND (invchead_ordernumber=cohead_number) AND (cmitem_qtyreturned <> 0) AND (cmitem_updateinv) AND (cmhead_id=pCmheadid) ) LOOP UPDATE coitem SET coitem_qtyreturned = (coitem_qtyreturned + _r.cmitem_qtyreturned) WHERE coitem_id IN ( SELECT coitem_id FROM coitem WHERE ( (coitem_cohead_id=_r.cohead_id) AND (coitem_itemsite_id = _r.cmitem_itemsite_id) ) LIMIT 1 ); END LOOP; -- Mark the cmhead as posted UPDATE cmhead SET cmhead_posted=TRUE, cmhead_gldistdate=_glDate WHERE (cmhead_id=pCmheadid); -- Find the apply-to document and make the application SELECT cmhead_number, cmhead_curr_id, cmhead_docdate, aropen_id, aropen_cust_id, aropen_docnumber, currToCurr(aropen_curr_id, cmhead_curr_id, aropen_amount - aropen_paid, cmhead_docdate) AS balance INTO _p FROM aropen, cmhead WHERE ( (aropen_doctype='I') AND (aropen_docnumber=cmhead_invcnumber) AND (cmhead_id=pCmheadid) ); IF (FOUND) THEN IF round(_totalAmount, 2) <= round(_p.balance, 2) THEN _toApply = _totalAmount; ELSE _toApply = _p.balance; END IF; UPDATE aropen SET aropen_paid = round(aropen_paid + currToCurr(_p.cmhead_curr_id, aropen_curr_id, _toApply, _p.cmhead_docdate), 2) WHERE (aropen_id=_p.aropen_id); -- Alter the new A/R Open Item to reflect the application UPDATE aropen SET aropen_paid = round(currToCurr(_p.cmhead_curr_id, aropen_curr_id, _toApply, _p.cmhead_docdate), 2) WHERE (aropen_id=_aropenid); -- Record the application INSERT INTO arapply ( arapply_cust_id, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_fundstype, arapply_refnumber, arapply_applied, arapply_closed, arapply_postdate, arapply_distdate, arapply_journalnumber, arapply_curr_id ) VALUES ( _p.aropen_cust_id, _aropenid, 'C', _p.cmhead_number, _p.aropen_id, 'I', _p.aropen_docnumber, '', '', round(_toApply, 2), _toClose, CURRENT_DATE, _p.cmhead_docdate, 0, _p.cmhead_curr_id ); END IF; RETURN _itemlocSeries; END; $_$; @DROP FUNCTION public.postcreditmemo(integer, integer, integer); publicadminfalse8399212551692532postcreditmemos(boolean)FUNCTION]CREATE FUNCTION postcreditmemos(boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPostUnprinted ALIAS FOR $1; _cmhead RECORD; _result INTEGER; _return INTEGER := 0; _itemlocSeries INTEGER := 0; BEGIN _itemlocSeries := 0; FOR _cmhead IN SELECT cmhead_id FROM cmhead WHERE ( (NOT cmhead_posted) AND (NOT cmhead_hold) AND (checkCreditMemoSitePrivs(cmhead_id)) AND ((pPostUnprinted) OR (cmhead_printed)) ) LOOP SELECT postCreditMemo(_cmhead.cmhead_id, _itemlocSeries) INTO _result; IF (_result < _return) THEN _return := _result; END IF; END LOOP; RETURN _return; END; $_$; /DROP FUNCTION public.postcreditmemos(boolean); publicadminfalse83992(12551692533!postcreditmemos(boolean, integer)FUNCTIONCREATE FUNCTION postcreditmemos(boolean, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPostUnprinted ALIAS FOR $1; pJournalNumber ALIAS FOR $2; _r RECORD; _itemlocSeries INTEGER := 0; BEGIN _itemlocSeries := 0; FOR _r IN SELECT cmhead_id FROM cmhead WHERE ( (NOT cmhead_posted) AND (NOT cmhead_hold) AND (checkCreditMemoSitePrivs(cmhead_id)) AND ((pPostUnprinted) OR (cmhead_printed)) ) LOOP SELECT postCreditMemo(_r.cmhead_id, pJournalNumber, _itemlocSeries) INTO _itemlocSeries; END LOOP; RETURN _itemlocSeries; END; $_$; 8DROP FUNCTION public.postcreditmemos(boolean, integer); publicadminfalse8399212551692534postglseries(integer)FUNCTIONCREATE FUNCTION postglseries(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; _journalNumber INTEGER; _returnValue INTEGER; BEGIN SELECT postGLSeries(pSequence, fetchJournalNumber('G/L')) INTO _returnValue; RETURN _returnValue; END; $_$; ,DROP FUNCTION public.postglseries(integer); publicadminfalse8399212551692535postglseries(integer, integer)FUNCTIONCREATE FUNCTION postglseries(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pJournalNumber ALIAS FOR $2; _returnValue INTEGER; BEGIN SELECT postGLSeries(pSequence, pJournalNumber, true) INTO _returnValue; RETURN _returnValue; END; $_$; 5DROP FUNCTION public.postglseries(integer, integer); publicadminfalse83992612551692536'postglseries(integer, integer, boolean)FUNCTIONCCREATE FUNCTION postglseries(integer, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pPostZero ALIAS FOR $3; _glseries RECORD; _transCount INTEGER := 0; _delta NUMERIC; _discrepDate DATE; _discrepAccntid INTEGER; _rows INTEGER; BEGIN /* Make sure we don't create an imbalance across companies. The 'IgnoreCompanyBalance' metric is a back door mechanism to allow legacy users to create transactions accross companies if they have been using the company segment for something else and they MUST continue to be able to do so. It can only be implemented by direct sql update to the metric table and should otherwise be discouraged. */ IF (COALESCE(fetchMetricValue('GLCompanySize'),0) > 0 AND fetchMetricBool('IgnoreCompany') = false) THEN SELECT count(accnt_company) INTO _rows FROM ( SELECT DISTINCT accnt_company FROM accnt JOIN glseries ON (glseries_accnt_id=accnt_id) WHERE (glseries_sequence=pSequence)) _data; IF (_rows > 1) THEN RAISE EXCEPTION 'G/L Series can not be posted because multiple companies are referenced in the same series.'; END IF; END IF; -- Make sure that we balance SELECT SUM(glseries_amount), MAX(glseries_distdate) INTO _delta, _discrepDate FROM glseries WHERE (glseries_sequence=pSequence); IF ( _delta <> 0 ) THEN IF (COALESCE(fetchMetricValue('GLCompanySize'),0) = 0) THEN SELECT accnt_id INTO _discrepAccntid FROM accnt, metric WHERE ((metric_name='GLSeriesDiscrepancyAccount') AND (accnt_id=CAST(metric_value AS INTEGER))); ELSE SELECT company_dscrp_accnt_id INTO _discrepAccntid FROM company JOIN accnt ON (accnt_company=company_number) JOIN glseries ON (glseries_accnt_id=accnt_id) WHERE (glseries_sequence=pSequence) LIMIT 1; END IF; IF (NOT FOUND) THEN RETURN -5; END IF; INSERT INTO glseries ( glseries_sequence, glseries_source, glseries_doctype, glseries_docnumber, glseries_accnt_id, glseries_amount, glseries_distdate, glseries_notes ) SELECT glseries_sequence, glseries_source, glseries_doctype, glseries_docnumber, _discrepAccntid, (_delta * -1), _discrepDate, 'G/L Series Discrepancy' FROM glseries WHERE (glseries_sequence=pSequence) LIMIT 1; END IF; -- March through the glseries members, posting them one at a time FOR _glseries IN SELECT glseries_source, glseries_doctype, glseries_docnumber, glseries_accnt_id, glseries_distdate, glseries_notes, glseries_misc_id, SUM(glseries_amount) as amount FROM glseries WHERE ((glseries_amount<>0.0) AND (glseries_sequence=pSequence)) GROUP BY glseries_source, glseries_doctype, glseries_docnumber, glseries_accnt_id, glseries_distdate, glseries_notes, glseries_misc_id LOOP -- refuse to accept postings into closed periods IF (SELECT BOOL_AND(COALESCE(period_closed, FALSE)) FROM accnt LEFT OUTER JOIN period ON (_glseries.glseries_distdate BETWEEN period_start AND period_end) WHERE (accnt_id = _glseries.glseries_accnt_id)) THEN RAISE EXCEPTION 'Cannot post to closed period (%).', _glseries.glseries_distdate; RETURN -4; -- remove raise exception when all callers check return code END IF; -- refuse to accept postings into frozen periods without proper priv IF (SELECT NOT BOOL_AND(checkPrivilege('PostFrozenPeriod')) AND BOOL_AND(COALESCE(period_freeze, FALSE)) FROM accnt LEFT OUTER JOIN period ON (_glseries.glseries_distdate BETWEEN period_start AND period_end) WHERE (accnt_id = _glseries.glseries_accnt_id)) THEN RAISE EXCEPTION 'Cannot post to frozen period (%).', _glseries.glseries_distdate; RETURN -4; -- remove raise exception when all callers check return code END IF; -- refuse to accept postings into nonexistent periods IF NOT EXISTS(SELECT period_id FROM period WHERE (_glseries.glseries_distdate BETWEEN period_start AND period_end)) THEN RAISE EXCEPTION 'Cannot post to nonexistent period (%).', pDistDate; END IF; IF (_glseries.amount != 0 OR pPostZero) THEN IF (fetchMetricBool('UseJournals')) THEN INSERT INTO sltrans ( sltrans_posted, sltrans_created, sltrans_date, sltrans_misc_id, sltrans_sequence, sltrans_accnt_id, sltrans_source, sltrans_notes, sltrans_doctype, sltrans_docnumber, sltrans_amount, sltrans_journalnumber ) VALUES ( FALSE, CURRENT_TIMESTAMP, _glseries.glseries_distdate, _glseries.glseries_misc_id, pSequence, _glseries.glseries_accnt_id, _glseries.glseries_source, _glseries.glseries_notes, _glseries.glseries_doctype, _glseries.glseries_docnumber, _glseries.amount, pJournalNumber ); ELSE INSERT INTO gltrans ( gltrans_posted, gltrans_exported, gltrans_created, gltrans_date, gltrans_misc_id, gltrans_sequence, gltrans_accnt_id, gltrans_source, gltrans_notes, gltrans_doctype, gltrans_docnumber, gltrans_amount, gltrans_journalnumber ) VALUES ( FALSE, FALSE, CURRENT_TIMESTAMP, _glseries.glseries_distdate, _glseries.glseries_misc_id, pSequence, _glseries.glseries_accnt_id, _glseries.glseries_source, _glseries.glseries_notes, _glseries.glseries_doctype, _glseries.glseries_docnumber, _glseries.amount, pJournalNumber ); END IF; _transCount := _transCount + 1; END IF; END LOOP; -- Delete all of the posted glseries members DELETE FROM glseries WHERE (glseries_sequence=pSequence); PERFORM postIntoTrialBalance(pSequence); RETURN _transCount; END; $_$; >DROP FUNCTION public.postglseries(integer, integer, boolean); publicadminfalse8399212551692538postglseriesnosumm(integer)FUNCTIONCREATE FUNCTION postglseriesnosumm(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; _journalNumber INTEGER; _returnValue INTEGER; BEGIN SELECT postGLSeriesNoSumm(pSequence, fetchJournalNumber('G/L')) INTO _returnValue; RETURN _returnValue; END; $_$; 2DROP FUNCTION public.postglseriesnosumm(integer); publicadminfalse83992;12551692539$postglseriesnosumm(integer, integer)FUNCTIONgCREATE FUNCTION postglseriesnosumm(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pJournalNumber ALIAS FOR $2; _glseries RECORD; _transCount INTEGER := 0; _rows INTEGER; BEGIN /* Make sure we don't create an imbalance across companies. The 'IgnoreCompanyBalance' metric is a back door mechanism to allow legacy users to create transactions accross companies if they have been using the company segment for something else and they MUST continue to be able to do so. It can only be implemented by direct sql update to the metric table and should otherwise be discouraged. */ IF (COALESCE(fetchMetricValue('GLCompanySize'),0) > 0 AND fetchMetricBool('IgnoreCompany') = false) THEN SELECT count(accnt_company) INTO _rows FROM ( SELECT DISTINCT accnt_company FROM accnt JOIN glseries ON (glseries_accnt_id=accnt_id) WHERE (glseries_sequence=pSequence)) _data; IF (_rows > 1) THEN RAISE EXCEPTION 'G/L Series can not be posted because multiple companies are referenced in the same series.'; END IF; END IF; -- Make sure that we balance IF ( ( SELECT SUM(glseries_amount) FROM glseries WHERE (glseries_sequence=pSequence) ) <> 0 ) THEN RETURN -1; END IF; -- March through the glseries members, posting them one at a time FOR _glseries IN SELECT glseries_source, glseries_doctype, glseries_docnumber, glseries_accnt_id, glseries_distdate, glseries_notes, glseries_misc_id, glseries_amount as amount FROM glseries WHERE ((glseries_amount<>0.0) AND (glseries_sequence=pSequence)) LOOP -- refuse to accept postings into closed periods IF (SELECT BOOL_AND(COALESCE(period_closed, FALSE)) FROM accnt LEFT OUTER JOIN period ON (_glseries.glseries_distdate BETWEEN period_start AND period_end) WHERE (accnt_id = _glseries.glseries_accnt_id)) THEN RAISE EXCEPTION 'Cannot post to closed period (%).', _glseries.glseries_distdate; RETURN -4; -- remove raise exception when all callers check return code END IF; -- refuse to accept postings into frozen periods without proper priv IF (SELECT NOT BOOL_AND(checkPrivilege('PostFrozenPeriod')) AND BOOL_AND(COALESCE(period_freeze, FALSE)) FROM accnt LEFT OUTER JOIN period ON (_glseries.glseries_distdate BETWEEN period_start AND period_end) WHERE (accnt_id = _glseries.glseries_accnt_id)) THEN RAISE EXCEPTION 'Cannot post to frozen period (%).', _glseries.glseries_distdate; RETURN -4; -- remove raise exception when all callers check return code END IF; -- refuse to accept postings into nonexistent periods IF NOT EXISTS(SELECT period_id FROM period WHERE (_glseries.glseries_distdate BETWEEN period_start AND period_end)) THEN RAISE EXCEPTION 'Cannot post to nonexistent period (%).', pDistDate; END IF; IF (fetchMetricBool('UseJournals')) THEN INSERT INTO sltrans ( sltrans_posted, sltrans_created, sltrans_date, sltrans_misc_id, sltrans_sequence, sltrans_accnt_id, sltrans_source, sltrans_notes, sltrans_doctype, sltrans_docnumber, sltrans_amount, sltrans_journalnumber ) VALUES ( FALSE, CURRENT_TIMESTAMP, _glseries.glseries_distdate, _glseries.glseries_misc_id, pSequence, _glseries.glseries_accnt_id, _glseries.glseries_source, _glseries.glseries_notes, _glseries.glseries_doctype, _glseries.glseries_docnumber, _glseries.amount, pJournalNumber ); ELSE INSERT INTO gltrans ( gltrans_posted, gltrans_exported, gltrans_created, gltrans_date, gltrans_misc_id, gltrans_sequence, gltrans_accnt_id, gltrans_source, gltrans_notes, gltrans_doctype, gltrans_docnumber, gltrans_amount, gltrans_journalnumber ) VALUES ( FALSE, FALSE, CURRENT_TIMESTAMP, _glseries.glseries_distdate, _glseries.glseries_misc_id, pSequence, _glseries.glseries_accnt_id, _glseries.glseries_source, _glseries.glseries_notes, _glseries.glseries_doctype, _glseries.glseries_docnumber, _glseries.amount, pJournalNumber ); END IF; _transCount := _transCount + 1; END LOOP; -- Delete all of the posted glseries members DELETE FROM glseries WHERE (glseries_sequence=pSequence); PERFORM postIntoTrialBalance(pSequence); RETURN _transCount; END; $_$; ;DROP FUNCTION public.postglseriesnosumm(integer, integer); publicadminfalse83992{12551692541postintoinvbalance(integer)FUNCTIONCREATE FUNCTION postintoinvbalance(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvhistId ALIAS FOR $1; _invbalid INTEGER; _r RECORD; _count INTEGER; _qty NUMERIC; BEGIN -- Grab the invhist record to post -- Special fix for transit sites when transtype=TS and invqty<0 -- Set the sense to 1 to correct invhist populated incorrectly. SELECT invhist.*, CASE WHEN (invhist_transtype='TS' AND invhist_invqty < 0.0 AND warehous_transit) THEN 1 ELSE invhistSense(invhist_id) END AS sense, period_id INTO _r FROM invhist JOIN itemsite ON (itemsite_id=invhist_itemsite_id) JOIN whsinfo ON (warehous_id=itemsite_warehous_id) LEFT OUTER JOIN period ON (invhist_transdate::date BETWEEN period_start AND period_end) WHERE ( invhist_id=pInvhistId ); GET DIAGNOSTICS _count = ROW_COUNT; -- If we can post into a Inv Balance, do so IF ( _count > 0 ) THEN -- Validate IF (_r.period_id IS NULL) THEN RAISE EXCEPTION 'No accounting period exists for invhist_id %, transaction date %. Transaction can not be posted.', _r.invhist_id, formatDate(_r.invhist_transdate); END IF; -- If cycle count, then we need to reference balance which needs to be accurate -- IF (_r.invhist_transtype = 'CC') THEN -- PERFORM forwardupdateitemsite(_r.invhist_itemsite_id); -- END IF; -- Try to find an existing invbal SELECT invbal_id, -- CASE WHEN (_r.invhist_transtype != 'CC') THEN _r.invhist_invqty ELSE _r.invhist_invqty - invbal_qoh_ending END _r.invhist_invqty INTO _invbalid, _qty FROM invbal WHERE ( (invbal_period_id=_r.period_id) AND (invbal_itemsite_id=_r.invhist_itemsite_id) ); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count > 0) THEN -- We found a invbal, update it with the Inventory Transaction -- Note - two stage update to avoid any funny value caching logic IF (_r.sense * _qty > 0) THEN UPDATE invbal SET invbal_qty_in = (invbal_qty_in + abs(_qty)), invbal_value_in = (invbal_value_in + abs(_qty) * _r.invhist_unitcost) WHERE (invbal_id=_invbalid); ELSIF (_r.sense * _qty < 0) THEN UPDATE invbal SET invbal_qty_out = (invbal_qty_out + abs(_qty)), invbal_value_out = (invbal_value_out + abs(_qty) * _r.invhist_unitcost) WHERE (invbal_id=_invbalid); END IF; -- Non-netable transactions have their own balances IF (_r.invhist_transtype = 'NN') THEN UPDATE invbal SET invbal_nn_in = (invbal_nn_in + _qty * -1), invbal_nnval_in = (invbal_nnval_in + _qty * -1 * _r.invhist_unitcost) WHERE (invbal_id=_invbalid); END IF; UPDATE invbal SET invbal_qoh_ending = (invbal_qoh_beginning + invbal_qty_in - invbal_qty_out), invbal_value_ending = (invbal_value_beginning + invbal_value_in - invbal_value_out), invbal_nn_ending = (invbal_nn_beginning + invbal_nn_in - invbal_nn_out), invbal_nnval_ending = (invbal_nnval_beginning + invbal_nnval_in - invbal_nnval_out), invbal_dirty=true WHERE (invbal_id=_invbalid); ELSE -- No existing invbal, make one SELECT NEXTVAL('invbal_invbal_id_seq') INTO _invbalid; INSERT INTO invbal ( invbal_id, invbal_itemsite_id, invbal_period_id, invbal_qoh_beginning, invbal_qoh_ending, invbal_qty_in, invbal_qty_out, invbal_value_beginning, invbal_value_ending, invbal_value_in, invbal_value_out, invbal_nn_beginning, invbal_nn_ending, invbal_nn_in, invbal_nn_out, invbal_nnval_beginning, invbal_nnval_ending, invbal_nnval_in, invbal_nnval_out, invbal_dirty ) VALUES ( _invbalid, _r.invhist_itemsite_id, _r.period_id, -- Netable 0, _r.invhist_invqty * _r.sense, CASE WHEN (_r.sense > 0) THEN _r.invhist_invqty ELSE 0 END, CASE WHEN (_r.sense < 0) THEN (_r.invhist_invqty) ELSE 0 END, 0, _r.invhist_invqty * _r.invhist_unitcost * _r.sense, CASE WHEN (_r.sense > 0) THEN _r.invhist_invqty * _r.invhist_unitcost ELSE 0 END, CASE WHEN (_r.sense < 0) THEN (_r.invhist_invqty * _r.invhist_unitcost) ELSE 0 END, -- Non netable 0, CASE WHEN (_r.invhist_transtype='NN') THEN _r.invhist_invqty * -1 ELSE 0 END, CASE WHEN (_r.sense > 0 AND _r.invhist_transtype='NN') THEN _r.invhist_invqty * -1 ELSE 0 END, CASE WHEN (_r.sense < 0 AND _r.invhist_transtype='NN') THEN _r.invhist_invqty * -1 ELSE 0 END, 0, CASE WHEN (_r.invhist_transtype='NN') THEN _r.invhist_invqty * _r.invhist_unitcost * -1 ELSE 0 END, CASE WHEN (_r.sense > 0 AND _r.invhist_transtype='NN') THEN _r.invhist_invqty * -1 * _r.invhist_unitcost ELSE 0 END, CASE WHEN (_r.sense < 0 AND _r.invhist_transtype='NN') THEN (_r.invhist_invqty * -1 * _r.invhist_unitcost) ELSE 0 END, true ); END IF; ELSE RETURN FALSE; END IF; RETURN TRUE; END; $_$; 2DROP FUNCTION public.postintoinvbalance(integer); publicadminfalse83992|12551692542postintotrialbalance(integer)FUNCTION CREATE FUNCTION postintotrialbalance(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; _trialbalid INTEGER; _r RECORD; BEGIN -- March through all of the G/L Transactions for the passed sequence that are not posted FOR _r IN SELECT gltrans_id, gltrans_date, gltrans_accnt_id, gltrans_amount, accnt_forwardupdate, period_id, period_closed, period_freeze FROM accnt, gltrans LEFT OUTER JOIN period ON (gltrans_date BETWEEN period_start AND period_end) WHERE ( (gltrans_accnt_id=accnt_id) AND (NOT gltrans_posted) AND (NOT gltrans_deleted) AND (gltrans_sequence=pSequence) ) LOOP -- If we can post into a Trial Balance, do so IF ( (NOT _r.period_closed) AND ( (NOT _r.period_freeze) OR (checkPrivilege('PostFrozenPeriod')) ) ) THEN -- Try to find an existing trialbal SELECT trialbal_id INTO _trialbalid FROM trialbal WHERE ( (trialbal_period_id=_r.period_id) AND (trialbal_accnt_id=_r.gltrans_accnt_id) ); IF (FOUND) THEN -- We found a trialbal, update it with the G/L Transaction -- Note - two stage update to avoid any funny value caching logic IF (_r.gltrans_amount > 0) THEN UPDATE trialbal SET trialbal_credits = (trialbal_credits + _r.gltrans_amount) WHERE (trialbal_id=_trialbalid); ELSE UPDATE trialbal SET trialbal_debits = (trialbal_debits + (_r.gltrans_amount * -1)) WHERE (trialbal_id=_trialbalid); END IF; UPDATE trialbal SET trialbal_ending = (trialbal_beginning - trialbal_debits + trialbal_credits), trialbal_dirty=TRUE WHERE (trialbal_id=_trialbalid); ELSE -- No existing trialbal, make one SELECT NEXTVAL('trialbal_trialbal_id_seq') INTO _trialbalid; INSERT INTO trialbal ( trialbal_id, trialbal_accnt_id, trialbal_period_id, trialbal_beginning, trialbal_dirty, trialbal_ending, trialbal_credits, trialbal_debits ) VALUES ( _trialbalid, _r.gltrans_accnt_id, _r.period_id, 0, TRUE, _r.gltrans_amount, CASE WHEN (_r.gltrans_amount > 0) THEN _r.gltrans_amount ELSE 0 END, CASE WHEN (_r.gltrans_amount < 0) THEN (_r.gltrans_amount * -1) ELSE 0 END ); END IF; -- Forward update if we should IF (_r.accnt_forwardupdate AND fetchmetricbool('ManualForwardUpdate')) THEN PERFORM forwardUpdateTrialBalance(_trialbalid); END IF; -- Mark the G/L Transaction as posted UPDATE gltrans SET gltrans_posted=TRUE WHERE (gltrans_id=_r.gltrans_id); END IF; END LOOP; RETURN 1; END; $_$; 4DROP FUNCTION public.postintotrialbalance(integer); publicadminfalse83992 12551692543postinvhist(integer)FUNCTIONgCREATE FUNCTION postinvhist(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvhistId ALIAS FOR $1; _r RECORD; BEGIN IF ( SELECT metric_value FROM metric WHERE ((metric_name = 'EnableAsOfQOH') AND (metric_value = 't'))) THEN IF (NOT postIntoInvBalance(pInvhistId)) THEN RAISE EXCEPTION 'Post into Inventory Balance for invhist_id=% was unsuccessful',pInvhistId; END IF; END IF; --Update itemsite qoh and change posted flag UPDATE itemsite SET itemsite_qtyonhand = (itemsite_qtyonhand + (invhist_invqty * invhistSense(invhist_id))), itemsite_value = itemsite_value + invhist_value_after - invhist_value_before FROM invhist WHERE ( (itemsite_id=invhist_itemsite_id) AND (invhist_id=pInvhistId) AND (NOT invhist_posted) ); --Flag as posted UPDATE invhist SET invhist_posted=TRUE WHERE ( (invhist_id=pInvhistId) AND (invhist_posted=FALSE) ); RETURN TRUE; END; $_$; +DROP FUNCTION public.postinvhist(integer); publicadminfalse83992}12551692544postinvoice(integer)FUNCTIONCREATE FUNCTION postinvoice(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcheadid ALIAS FOR $1; _return INTEGER; BEGIN SELECT postInvoice(pInvcheadid, fetchJournalNumber('AR-IN')) INTO _return; RETURN _return; END; $_$; +DROP FUNCTION public.postinvoice(integer); publicadminfalse83992 12551692545postinvoice(integer, integer)FUNCTIONCREATE FUNCTION postinvoice(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcheadid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; _itemlocSeries INTEGER; _return INTEGER; BEGIN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; SELECT postInvoice(pInvcheadid, pJournalNumber, _itemlocseries) INTO _return; RETURN _return; END; $_$; 4DROP FUNCTION public.postinvoice(integer, integer); publicadminfalse83992t12551692546&postinvoice(integer, integer, integer)FUNCTIONrCREATE FUNCTION postinvoice(integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcheadid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pItemlocSeries ALIAS FOR $3; _aropenid INTEGER; _cohistid INTEGER; _itemlocSeries INTEGER := 0; _invhistid INTEGER := 0; _amount NUMERIC; _roundedBase NUMERIC; _sequence INTEGER; _r RECORD; _p RECORD; _test INTEGER; _totalAmount NUMERIC := 0; _totalRoundedBase NUMERIC := 0; _totalAmountBase NUMERIC := 0; _appliedAmount NUMERIC := 0; _commissionDue NUMERIC := 0; _tmpAccntId INTEGER; _tmpCurrId INTEGER; _firstExchDate DATE; _glDate DATE; _exchGain NUMERIC := 0; BEGIN IF ( ( SELECT invchead_posted FROM invchead WHERE (invchead_id=pInvcheadid) ) ) THEN RETURN -10; END IF; -- Cache some parameters SELECT invchead.*, fetchGLSequence() AS sequence, findFreightAccount(invchead_cust_id) AS freightaccntid, findARAccount(invchead_cust_id) AS araccntid, ( SELECT COALESCE(SUM(taxhist_tax), 0) FROM invcheadtax WHERE ( (taxhist_parent_id = invchead_id) AND (taxhist_taxtype_id = getFreightTaxtypeId()) ) ) AS freighttax, ( SELECT COALESCE(SUM(taxhist_tax), 0) FROM invcheadtax WHERE ( (taxhist_parent_id = invchead_id) AND (taxhist_taxtype_id = getAdjustmentTaxtypeId()) ) ) AS adjtax INTO _p FROM invchead WHERE (invchead_id=pInvcheadid); _itemlocSeries = pItemlocSeries; _glDate := COALESCE(_p.invchead_gldistdate, _p.invchead_invcdate); IF (_p.invchead_salesrep_id < 0) THEN RAISE NOTICE 'Patch negative invchead_salesrep_id until invchead_salesrep_id is a true fkey'; _p.invchead_salesrep_id := NULL; END IF; -- the 1st MC iteration used the cohead_orderdate so we could get curr exch -- gain/loss between the sales and invoice dates, but see issue 3892. leave -- this condition TRUE until we make this configurable or decide not to. IF TRUE THEN _firstExchDate := _p.invchead_invcdate; ELSE -- can we save a select by using: _firstExchDate := _p.invchead_orderdate; SELECT cohead_orderdate INTO _firstExchDate FROM cohead JOIN invchead ON (cohead_number = invchead_ordernumber) WHERE (invchead_id = pInvcheadid); END IF; -- Start by handling taxes FOR _r IN SELECT tax_sales_accnt_id, round(sum(taxdetail_tax),2) AS tax, currToBase(_p.invchead_curr_id, round(sum(taxdetail_tax),2), _firstExchDate) AS taxbasevalue FROM tax JOIN calculateTaxDetailSummary('I', pInvcheadid, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id, tax_sales_accnt_id LOOP PERFORM insertIntoGLSeries( _p.sequence, 'A/R', 'IN', _p.invchead_invcnumber, _r.tax_sales_accnt_id, _r.taxbasevalue, _glDate, _p.invchead_billto_name ); _totalAmount := _totalAmount + _r.tax; _totalRoundedBase := _totalRoundedBase + _r.taxbasevalue; END LOOP; -- Update item tax records with posting data UPDATE invcitemtax SET taxhist_docdate=_firstExchDate, taxhist_distdate=_glDate, taxhist_curr_id=_p.invchead_curr_id, taxhist_curr_rate=curr_rate, taxhist_journalnumber=pJournalNumber FROM invchead JOIN invcitem ON (invchead_id=invcitem_invchead_id), curr_rate WHERE ((invchead_id=pInvcheadId) AND (taxhist_parent_id=invcitem_id) AND (_p.invchead_curr_id=curr_id) AND ( _firstExchDate BETWEEN curr_effective AND curr_expires) ); -- Update Invchead taxes (Freight and Adjustments) with posting data UPDATE invcheadtax SET taxhist_docdate=_firstExchDate, taxhist_distdate=_glDate, taxhist_curr_id=_p.invchead_curr_id, taxhist_curr_rate=curr_rate, taxhist_journalnumber=pJournalNumber FROM curr_rate WHERE ((taxhist_parent_id=pInvcheadid) AND (_p.invchead_curr_id=curr_id) AND ( _firstExchDate BETWEEN curr_effective AND curr_expires) ); -- March through the Non-Misc. Invcitems FOR _r IN SELECT * FROM invoiceitem WHERE ( (invcitem_invchead_id = pInvcheadid) AND (invcitem_item_id <> -1) ) LOOP -- Cache the amount due for this line _amount := _r.extprice; IF (_amount > 0) THEN -- Credit the Sales Account for the invcitem item IF (_r.invcitem_rev_accnt_id IS NOT NULL) THEN SELECT getPrjAccntId(_p.invchead_prj_id, _r.invcitem_rev_accnt_id) INTO _tmpAccntId; ELSEIF (_r.itemsite_id IS NULL) THEN SELECT getPrjAccntId(_p.invchead_prj_id, salesaccnt_sales_accnt_id) INTO _tmpAccntId FROM salesaccnt WHERE (salesaccnt_id=findSalesAccnt(_r.invcitem_item_id, 'I', _p.invchead_cust_id, _p.invchead_saletype_id, _p.invchead_shipzone_id)); ELSE SELECT getPrjAccntId(_p.invchead_prj_id, salesaccnt_sales_accnt_id) INTO _tmpAccntId FROM salesaccnt WHERE (salesaccnt_id=findSalesAccnt(_r.itemsite_id, 'IS', _p.invchead_cust_id, _p.invchead_saletype_id, _p.invchead_shipzone_id)); END IF; -- If the Sales Account Assignment was not found then punt IF (NOT FOUND) THEN PERFORM deleteGLSeries(_p.sequence); DELETE FROM cohist WHERE ((cohist_sequence=_p.sequence) AND (cohist_invcnumber=_p.invchead_invcnumber)); RETURN -11; END IF; _roundedBase := round(currToBase(_p.invchead_curr_id, _amount, _firstExchDate), 2); SELECT insertIntoGLSeries( _p.sequence, 'A/R', 'IN', _p.invchead_invcnumber, _tmpAccntId, _roundedBase, _glDate, _p.invchead_billto_name ) INTO _test; _totalAmount := (_totalAmount + _amount); _totalRoundedBase := _totalRoundedBase + _roundedBase; _commissionDue := (_commissionDue + (_amount * _p.invchead_commission)); END IF; _totalAmount := _totalAmount; _totalRoundedBase := _totalRoundedBase; -- Record Sales History for this S/O Item SELECT nextval('cohist_cohist_id_seq') INTO _cohistid; INSERT INTO cohist ( cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_curr_id, cohist_sequence, cohist_taxtype_id, cohist_taxzone_id, cohist_shipzone_id, cohist_saletype_id ) VALUES ( _cohistid, _p.invchead_cust_id, _r.itemsite_id, _p.invchead_shipto_id, _p.invchead_shipdate, _p.invchead_shipvia, COALESCE(_p.invchead_ordernumber, _r.cohead_number), _p.invchead_ponumber, _p.invchead_orderdate, 'I', _p.invchead_invcnumber, _p.invchead_invcdate, _r.qty, _r.unitprice, _r.unitcost, _p.invchead_salesrep_id, (_p.invchead_commission * _r.extprice), FALSE, _p.invchead_billto_name, _p.invchead_billto_address1, _p.invchead_billto_address2, _p.invchead_billto_address3, _p.invchead_billto_city, _p.invchead_billto_state, _p.invchead_billto_zipcode, _p.invchead_shipto_name, _p.invchead_shipto_address1, _p.invchead_shipto_address2, _p.invchead_shipto_address3, _p.invchead_shipto_city, _p.invchead_shipto_state, _p.invchead_shipto_zipcode, _p.invchead_curr_id, _p.sequence, _r.invcitem_taxtype_id, _p.invchead_taxzone_id, _p.invchead_shipzone_id, _p.invchead_saletype_id ); INSERT INTO cohisttax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT _cohistid, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM invcitemtax WHERE (taxhist_parent_id=_r.invcitem_id); END LOOP; -- March through the Misc. Invcitems FOR _r IN SELECT * FROM invoiceitem JOIN salescat ON (salescat_id = invcitem_salescat_id) WHERE ( (invcitem_item_id = -1) AND (invcitem_invchead_id=pInvcheadid) ) LOOP -- Cache the amount due for this line and the commission due for such _amount := _r.extprice; IF (_amount > 0) THEN -- Credit the Sales Account for the invcitem item _roundedBase = round(currToBase(_p.invchead_curr_id, _amount, _firstExchDate), 2); SELECT insertIntoGLSeries( _p.sequence, 'A/R', 'IN', _p.invchead_invcnumber, getPrjAccntId(_p.invchead_prj_id, COALESCE(_r.invcitem_rev_accnt_id, _r.salescat_sales_accnt_id)), _roundedBase, _glDate, _p.invchead_billto_name ) INTO _test; IF (_test < 0) THEN PERFORM deleteGLSeries(_p.sequence); DELETE FROM cohist WHERE ((cohist_sequence=_p.sequence) AND (cohist_invcnumber=_p.invchead_invcnumber)); RETURN _test; END IF; _totalAmount := (_totalAmount + _amount); _totalRoundedBase := _totalRoundedBase + _roundedBase; _commissionDue := (_commissionDue + (_amount * _p.invchead_commission)); END IF; -- Record Sales History for this S/O Item SELECT nextval('cohist_cohist_id_seq') INTO _cohistid; INSERT INTO cohist ( cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_misc_type, cohist_misc_descrip, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_curr_id, cohist_sequence, cohist_taxtype_id, cohist_taxzone_id, cohist_shipzone_id, cohist_saletype_id ) VALUES ( _cohistid, _p.invchead_cust_id, -1, _p.invchead_shipto_id, 'M', (_r.invcitem_number || '-' || _r.invcitem_descrip), _p.invchead_shipdate, _p.invchead_shipvia, COALESCE(_p.invchead_ordernumber, _r.cohead_number), _p.invchead_ponumber, _p.invchead_orderdate, 'I', _p.invchead_invcnumber, _p.invchead_invcdate, _r.qty, _r.unitprice, 0, _p.invchead_salesrep_id, (_p.invchead_commission * _r.extprice), FALSE, _p.invchead_billto_name, _p.invchead_billto_address1, _p.invchead_billto_address2, _p.invchead_billto_address3, _p.invchead_billto_city, _p.invchead_billto_state, _p.invchead_billto_zipcode, _p.invchead_shipto_name, _p.invchead_shipto_address1, _p.invchead_shipto_address2, _p.invchead_shipto_address3, _p.invchead_shipto_city, _p.invchead_shipto_state, _p.invchead_shipto_zipcode, _p.invchead_curr_id, _p.sequence, _r.invcitem_taxtype_id, _p.invchead_taxzone_id, _p.invchead_shipzone_id, _p.invchead_saletype_id ); INSERT INTO cohisttax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT _cohistid, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM invcitemtax WHERE (taxhist_parent_id=_r.invcitem_id); END LOOP; -- Credit the Freight Account for Freight Charges IF (_p.invchead_freight <> 0) THEN IF (_p.freightaccntid <> -1) THEN _roundedBase = round(currToBase(_p.invchead_curr_id, _p.invchead_freight, _firstExchDate), 2); SELECT insertIntoGLSeries( _p.sequence, 'A/R', 'IN', _p.invchead_invcnumber, getPrjAccntId(_p.invchead_prj_id,_p.freightaccntid), _roundedBase, _glDate, _p.invchead_billto_name ) INTO _test; -- Cache the Freight Amount distributed _totalAmount := (_totalAmount + _p.invchead_freight); _totalRoundedBase := _totalRoundedBase + _roundedBase; ELSE _test := -14; END IF; -- If the Freight Account was not found then punt IF (_test < 0) THEN PERFORM deleteGLSeries(_p.sequence); DELETE FROM cohist WHERE ((cohist_sequence=_p.sequence) AND (cohist_invcnumber=_p.invchead_invcnumber)); RETURN _test; END IF; -- Record Sales History for the Freight SELECT nextval('cohist_cohist_id_seq') INTO _cohistid; INSERT INTO cohist ( cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_misc_type, cohist_misc_descrip, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_curr_id, cohist_sequence, cohist_taxtype_id, cohist_taxzone_id, cohist_shipzone_id, cohist_saletype_id ) VALUES ( _cohistid, _p.invchead_cust_id, -1, _p.invchead_shipto_id, 'F', 'Freight', _p.invchead_shipdate, _p.invchead_shipvia, _p.invchead_ordernumber, _p.invchead_ponumber, _p.invchead_orderdate, 'I', _p.invchead_invcnumber, _p.invchead_invcdate, 1, _p.invchead_freight, _p.invchead_freight, _p.invchead_salesrep_id, 0, FALSE, _p.invchead_billto_name, _p.invchead_billto_address1, _p.invchead_billto_address2, _p.invchead_billto_address3, _p.invchead_billto_city, _p.invchead_billto_state, _p.invchead_billto_zipcode, _p.invchead_shipto_name, _p.invchead_shipto_address1, _p.invchead_shipto_address2, _p.invchead_shipto_address3, _p.invchead_shipto_city, _p.invchead_shipto_state, _p.invchead_shipto_zipcode, _p.invchead_curr_id, _p.sequence, getFreightTaxtypeId(), _p.invchead_taxzone_id, _p.invchead_shipzone_id, _p.invchead_saletype_id ); INSERT INTO cohisttax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT _cohistid, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM invcheadtax WHERE ( (taxhist_parent_id=_p.invchead_id) AND (taxhist_taxtype_id=getFreightTaxtypeId()) ); END IF; -- Credit the Misc. Account for Miscellaneous Charges IF (_p.invchead_misc_amount <> 0) THEN _roundedBase := round(currToBase(_p.invchead_curr_id, _p.invchead_misc_amount, _firstExchDate), 2); SELECT insertIntoGLSeries( _p.sequence, 'A/R', 'IN', _p.invchead_invcnumber, getPrjAccntId(_p.invchead_prj_id, _p.invchead_misc_accnt_id), _roundedBase, _glDate, _p.invchead_billto_name ) INTO _test; -- If the Misc. Charges Account was not found then punt IF (_test < 0) THEN PERFORM deleteGLSeries(_p.sequence); DELETE FROM cohist WHERE ((cohist_sequence=_p.sequence) AND (cohist_invcnumber=_p.invchead_invcnumber)); RETURN _test; END IF; -- Cache the Misc. Amount distributed _totalAmount := (_totalAmount + _p.invchead_misc_amount); _totalRoundedBase := _totalRoundedBase + _roundedBase; -- Record Sales History for the Misc. Charge INSERT INTO cohist ( cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_misc_type, cohist_misc_descrip, cohist_misc_id, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_curr_id, cohist_sequence, cohist_shipzone_id, cohist_saletype_id ) VALUES ( _p.invchead_cust_id, -1, _p.invchead_shipto_id, 'M', _p.invchead_misc_descrip, _p.invchead_misc_accnt_id, _p.invchead_shipdate, _p.invchead_shipvia, _p.invchead_ordernumber, _p.invchead_ponumber, _p.invchead_orderdate, 'I', _p.invchead_invcnumber, _p.invchead_invcdate, 1, _p.invchead_misc_amount, _p.invchead_misc_amount, _p.invchead_salesrep_id, 0, FALSE, _p.invchead_billto_name, _p.invchead_billto_address1, _p.invchead_billto_address2, _p.invchead_billto_address3, _p.invchead_billto_city, _p.invchead_billto_state, _p.invchead_billto_zipcode, _p.invchead_shipto_name, _p.invchead_shipto_address1, _p.invchead_shipto_address2, _p.invchead_shipto_address3, _p.invchead_shipto_city, _p.invchead_shipto_state, _p.invchead_shipto_zipcode, _p.invchead_curr_id, _p.sequence, _p.invchead_shipzone_id, _p.invchead_saletype_id ); END IF; -- Record Sales History for the Tax Adjustment IF (_p.adjtax <> 0) THEN SELECT nextval('cohist_cohist_id_seq') INTO _cohistid; INSERT INTO cohist ( cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipto_id, cohist_misc_type, cohist_misc_descrip, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_ponumber, cohist_orderdate, cohist_doctype, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_salesrep_id, cohist_commission, cohist_commissionpaid, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_curr_id, cohist_sequence, cohist_taxtype_id, cohist_taxzone_id, cohist_shipzone_id, cohist_saletype_id ) VALUES ( _cohistid, _p.invchead_cust_id, -1, _p.invchead_shipto_id, 'T', 'Misc Tax Adjustment', _p.invchead_shipdate, _p.invchead_shipvia, _p.invchead_ordernumber, _p.invchead_ponumber, _p.invchead_orderdate, 'I', _p.invchead_invcnumber, _p.invchead_invcdate, 1, 0.0, 0.0, _p.invchead_salesrep_id, 0, FALSE, _p.invchead_billto_name, _p.invchead_billto_address1, _p.invchead_billto_address2, _p.invchead_billto_address3, _p.invchead_billto_city, _p.invchead_billto_state, _p.invchead_billto_zipcode, _p.invchead_shipto_name, _p.invchead_shipto_address1, _p.invchead_shipto_address2, _p.invchead_shipto_address3, _p.invchead_shipto_city, _p.invchead_shipto_state, _p.invchead_shipto_zipcode, _p.invchead_curr_id, _p.sequence, getAdjustmentTaxtypeId(), _p.invchead_taxzone_id, _p.invchead_shipzone_id, _p.invchead_saletype_id ); INSERT INTO cohisttax ( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT _cohistid, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM invcheadtax WHERE ( (taxhist_parent_id=_p.invchead_id) AND (taxhist_taxtype_id=getAdjustmentTaxtypeId()) ); END IF; -- ToDo: handle rounding errors _exchGain := currGain(_p.invchead_curr_id, _totalAmount, _firstExchDate, _glDate); IF (_exchGain <> 0) THEN SELECT insertIntoGLSeries( _p.sequence, 'A/R', 'IN', _p.invchead_invcnumber, getGainLossAccntId(_p.araccntid), round(_exchGain, 2) * -1, _glDate, _p.invchead_billto_name ) INTO _test ; IF (_test < 0) THEN PERFORM deleteGLSeries(_p.sequence); DELETE FROM cohist WHERE ((cohist_sequence=_p.sequence) AND (cohist_invcnumber=_p.invchead_invcnumber)); RETURN _test; END IF; END IF; -- Debit A/R for the total Amount IF (_totalRoundedBase <> 0) THEN IF (_p.araccntid != -1) THEN PERFORM insertIntoGLSeries( _p.sequence, 'A/R', 'IN', _p.invchead_invcnumber, _p.araccntid, round(_totalRoundedBase * -1, 2), _glDate, _p.invchead_billto_name ); ELSE PERFORM deleteGLSeries(_p.sequence); DELETE FROM cohist WHERE ((cohist_sequence=_p.sequence) AND (cohist_invcnumber=_p.invchead_invcnumber)); RETURN -17; END IF; END IF; -- Commit the GLSeries; SELECT postGLSeries(_p.sequence, pJournalNumber) INTO _test; IF (_test < 0) THEN PERFORM deleteGLSeries(_p.sequence); DELETE FROM cohist WHERE ((cohist_sequence=_p.sequence) AND (cohist_invcnumber=_p.invchead_invcnumber)); RETURN _test; END IF; -- Create the Invoice aropen item SELECT nextval('aropen_aropen_id_seq') INTO _aropenid; INSERT INTO aropen ( aropen_id, aropen_username, aropen_journalnumber, aropen_open, aropen_posted, aropen_cust_id, aropen_ponumber, aropen_docnumber, aropen_applyto, aropen_doctype, aropen_docdate, aropen_duedate, aropen_distdate, aropen_terms_id, aropen_amount, aropen_paid, aropen_salesrep_id, aropen_commission_due, aropen_commission_paid, aropen_ordernumber, aropen_notes, aropen_cobmisc_id, aropen_curr_id ) VALUES ( _aropenid, getEffectiveXtUser(), pJournalNumber, TRUE, FALSE, _p.invchead_cust_id, _p.invchead_ponumber, _p.invchead_invcnumber, _p.invchead_invcnumber, 'I', _p.invchead_invcdate, determineDueDate(_p.invchead_terms_id, _p.invchead_invcdate), _glDate, _p.invchead_terms_id, round(_totalAmount, 2), 0, _p.invchead_salesrep_id, _commissionDue, FALSE, _p.invchead_ordernumber::text, _p.invchead_notes, pInvcheadid, _p.invchead_curr_id ); -- Handle the Inventory and G/L Transactions for any billed Inventory where invcitem_updateinv is true FOR _r IN SELECT itemsite_id AS itemsite_id, invcitem_id, (invcitem_billed * invcitem_qty_invuomratio) AS qty, invchead_invcnumber, invchead_cust_id AS cust_id, item_number, invchead_saletype_id AS saletype_id, invchead_shipzone_id AS shipzone_id, invchead_prj_id, itemsite_costmethod FROM invchead JOIN invcitem ON ( (invcitem_invchead_id=invchead_id) AND (invcitem_billed <> 0) AND (invcitem_updateinv) ) JOIN itemsite ON ( (itemsite_item_id=invcitem_item_id) AND (itemsite_warehous_id=invcitem_warehous_id) ) JOIN item ON (item_id=invcitem_item_id) WHERE (invchead_id=pInvcheadid) LOOP -- Issue billed stock from inventory IF (_itemlocSeries = 0) THEN _itemlocSeries := NEXTVAL('itemloc_series_seq'); END IF; IF (_r.itemsite_costmethod != 'J') THEN SELECT postInvTrans(itemsite_id, 'SH', _r.qty, 'S/O', 'IN', _r.invchead_invcnumber, '', ('Invoice Billed ' || _r.item_number), getPrjAccntId(_r.invchead_prj_id, resolveCOSAccount(itemsite_id, _r.cust_id, _r.saletype_id, _r.shipzone_id)), costcat_asset_accnt_id, _itemlocSeries, _glDate) INTO _invhistid FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id) ); ELSE RAISE DEBUG 'postInvoice(%, %, %) tried to postInvTrans a %-costed item', pInvcheadid, pJournalNumber, pItemlocSeries, _r.itemsite_costmethod; END IF; END LOOP; -- Mark the invoice as posted UPDATE invchead SET invchead_posted=TRUE, invchead_gldistdate=_glDate WHERE (invchead_id=pInvcheadid); IF (_totalAmount > 0) THEN -- get a list of allocated CMs FOR _r IN SELECT aropen_id, CASE WHEN((aropen_amount - aropen_paid) >= aropenalloc_amount / (1 / aropen_curr_rate / currRate(aropenalloc_curr_id,_firstExchDate))) THEN aropenalloc_amount / (1 / aropen_curr_rate / currRate(aropenalloc_curr_id,_firstExchDate)) ELSE (aropen_amount - aropen_paid) END AS balance, aropen_curr_id, aropen_curr_rate, aropenalloc_doctype, aropenalloc_doc_id FROM aropenalloc, aropen WHERE ( (aropenalloc_aropen_id=aropen_id) AND ((aropenalloc_doctype='S' AND aropenalloc_doc_id=(SELECT cohead_id FROM cohead WHERE cohead_number=_p.invchead_ordernumber)) OR (aropenalloc_doctype='I' AND aropenalloc_doc_id=_p.invchead_id)) ) LOOP _appliedAmount := _r.balance; IF (_totalAmount < _appliedAmount / (1 / currRate(_r.aropen_curr_id,_firstExchDate) / _r.aropen_curr_rate)) THEN _appliedAmount := _totalAmount; _tmpCurrId := _p.invchead_curr_id; ELSE _tmpCurrId := _r.aropen_curr_id; END IF; -- ignore if no appliable balance IF (_appliedAmount > 0) THEN -- create an arcreditapply record linking the source c/m and the target invoice -- for an amount that is equal to the balance on the invoice or the balance on -- c/m whichever is greater. INSERT INTO arcreditapply (arcreditapply_source_aropen_id, arcreditapply_target_aropen_id, arcreditapply_amount, arcreditapply_curr_id, arcreditapply_reftype, arcreditapply_ref_id) VALUES(_r.aropen_id, _aropenid, _appliedAmount, _tmpCurrId, 'S', _r.aropenalloc_doc_id); -- call postARCreditMemoApplication(aropen_id of C/M) SELECT postARCreditMemoApplication(_r.aropen_id) into _test; -- if no error decrement the balance and contiue on IF (_test >= 0) THEN _totalAmount := _totalAmount - currToCurr(_tmpCurrId, _p.invchead_curr_id, _appliedAmount, _firstExchDate); END IF; END IF; END LOOP; END IF; RETURN _itemlocSeries; END; $_$; =DROP FUNCTION public.postinvoice(integer, integer, integer); publicadminfalse83992~12551692548postinvoices(boolean)FUNCTION;CREATE FUNCTION postinvoices(boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPostUnprinted ALIAS FOR $1; BEGIN RETURN postInvoices(pPostUnprinted, FALSE); END; $_$; ,DROP FUNCTION public.postinvoices(boolean); publicadminfalse83992 12551692549postinvoices(boolean, boolean)FUNCTIONCREATE FUNCTION postinvoices(boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPostUnprinted ALIAS FOR $1; pInclZeros ALIAS FOR $2; BEGIN RETURN postInvoices(pPostUnprinted, pInclZeros, fetchJournalNumber('AR-IN')); END; $_$; 5DROP FUNCTION public.postinvoices(boolean, boolean); publicadminfalse83992 12551692550'postinvoices(boolean, boolean, integer)FUNCTIONCREATE FUNCTION postinvoices(boolean, boolean, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPostUnprinted ALIAS FOR $1; pInclZeros ALIAS FOR $2; pJournalNumber ALIAS FOR $3; _invcheadid INTEGER; _itemlocSeries INTEGER; _counter INTEGER; _r RECORD; BEGIN _itemlocSeries := 0; IF (pInclZeros) THEN FOR _invcheadid IN SELECT invchead_id FROM invchead WHERE ( (NOT invchead_posted) AND (checkInvoiceSitePrivs(invchead_id)) AND (pPostUnprinted OR invchead_printed) ) LOOP SELECT postInvoice(_invcheadid, pJournalNumber, _itemlocSeries) INTO _itemlocSeries; IF (_itemlocSeries < 0) THEN RETURN _itemlocSeries; END IF; END LOOP; ELSE FOR _invcheadid IN SELECT invchead_id FROM invchead LEFT OUTER JOIN invcitem ON (invchead_id=invcitem_invchead_id) LEFT OUTER JOIN item ON (invcitem_item_id=item_id) WHERE((NOT invchead_posted) AND (checkInvoiceSitePrivs(invchead_id)) AND (pPostUnprinted OR invchead_printed)) GROUP BY invchead_id, invchead_freight, invchead_misc_amount HAVING (COALESCE(SUM(round((invcitem_billed * invcitem_qty_invuomratio) * (invcitem_price / CASE WHEN (item_id IS NULL) THEN 1 ELSE invcitem_price_invuomratio END), 2)),0) + invchead_freight + invchead_misc_amount) > 0 LOOP SELECT postInvoice(_invcheadid, pJournalNumber, _itemlocSeries) INTO _itemlocSeries; IF (_itemlocSeries < 0) THEN RETURN _itemlocSeries; END IF; END LOOP; END IF; RETURN _itemlocSeries; END; $_$; >DROP FUNCTION public.postinvoices(boolean, boolean, integer); publicadminfalse83992 12551692551postinvtrans(integer, text, numeric, text, text, text, text, text, integer, integer, integer, timestamp with time zone, numeric, integer)FUNCTIONT"CREATE FUNCTION postinvtrans(pitemsiteid integer, ptranstype text, pqty numeric, pmodule text, pordertype text, pordernumber text, pdocnumber text, pcomments text, pdebitid integer, pcreditid integer, pitemlocseries integer, ptimestamp timestamp with time zone DEFAULT now(), pcostovrld numeric DEFAULT NULL::numeric, pinvhistid integer DEFAULT NULL::integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. -- pInvhistid is the original transaction to be returned, reversed, etc. DECLARE _creditid INTEGER; _debitid INTEGER; _glreturn INTEGER; _invhistid INTEGER; _itemlocdistid INTEGER; _r RECORD; _sense INTEGER; -- direction in which to adjust inventory QOH _t RECORD; _timestamp TIMESTAMP WITH TIME ZONE; _xferwhsid INTEGER; BEGIN -- Cache item and itemsite info SELECT CASE WHEN(itemsite_costmethod IN ('A','J')) THEN COALESCE(abs(pCostOvrld / pQty), avgcost(itemsite_id)) ELSE stdCost(itemsite_item_id) END AS cost, itemsite_costmethod, itemsite_qtyonhand, itemsite_warehous_id, ( (item_type = 'R') OR (itemsite_controlmethod = 'N') ) AS nocontrol, (itemsite_controlmethod IN ('L', 'S')) AS lotserial, (itemsite_loccntrl) AS loccntrl, itemsite_freeze AS frozen INTO _r FROM itemsite JOIN item ON (item_id=itemsite_item_id) WHERE (itemsite_id=pItemsiteid); --Post the Inventory Transactions IF (_r.nocontrol) THEN RETURN -1; -- non-fatal error so dont throw an exception? END IF; IF (COALESCE(pItemlocSeries,0) = 0) THEN RAISE EXCEPTION 'Transaction series must be provided'; END IF; SELECT NEXTVAL('invhist_invhist_id_seq') INTO _invhistid; IF ((pTimestamp IS NULL) OR (CAST(pTimestamp AS date)=CURRENT_DATE)) THEN _timestamp := CURRENT_TIMESTAMP; ELSE _timestamp := pTimestamp; END IF; IF (pTransType = 'TS' OR pTransType = 'TR') THEN SELECT * INTO _t FROM tohead WHERE (tohead_number=pDocNumber); IF (pTransType = 'TS') THEN _xferwhsid := CASE WHEN (_t.tohead_src_warehous_id=_r.itemsite_warehous_id) THEN _t.tohead_trns_warehous_id WHEN (_t.tohead_trns_warehous_id=_r.itemsite_warehous_id AND pComments ~* 'recall') THEN _t.tohead_src_warehous_id WHEN (_t.tohead_trns_warehous_id=_r.itemsite_warehous_id) THEN _t.tohead_dest_warehous_id WHEN (_t.tohead_dest_warehous_id=_r.itemsite_warehous_id) THEN _t.tohead_trns_warehous_id ELSE NULL END; ELSIF (pTransType = 'TR') THEN _xferwhsid := CASE WHEN (_t.tohead_src_warehous_id=_r.itemsite_warehous_id) THEN _t.tohead_trns_warehous_id WHEN (_t.tohead_trns_warehous_id=_r.itemsite_warehous_id AND pComments ~* 'recall') THEN _t.tohead_dest_warehous_id WHEN (_t.tohead_trns_warehous_id=_r.itemsite_warehous_id) THEN _t.tohead_src_warehous_id WHEN (_t.tohead_dest_warehous_id=_r.itemsite_warehous_id) THEN _t.tohead_trns_warehous_id ELSE NULL END; END IF; END IF; -- increase inventory: AD RM RT RP RR RS RX RB TR -- decrease inventory: IM IB IT SH SI EX RI -- TS and TR are special: shipShipment and recallShipment should not change -- QOH at the Transfer Order src whs (as this was done by issueToShipping) -- but postReceipt should change QOH at the transit whs IF (pTransType='TS') THEN _sense := CASE WHEN (SELECT tohead_trns_warehous_id=_r.itemsite_warehous_id FROM tohead WHERE (tohead_number=pDocNumber)) THEN -1 ELSE 0 END; ELSIF (pTransType='TR') THEN _sense := CASE WHEN (SELECT tohead_src_warehous_id=_r.itemsite_warehous_id FROM tohead WHERE (tohead_number=pDocNumber)) THEN 0 ELSE 1 END; ELSIF (pTransType IN ('IM', 'IB', 'IT', 'SH', 'SI', 'EX', 'RI')) THEN _sense := -1; ELSE _sense := 1; END IF; IF((_r.itemsite_costmethod='A') AND (_r.itemsite_qtyonhand + round(_sense * pQty, 6)) < 0) THEN -- Can not let average costed itemsites go negative RAISE EXCEPTION 'This transaction will cause an Average Costed item to go negative which is not allowed [xtuple: postinvtrans, -2]'; END IF; INSERT INTO invhist ( invhist_id, invhist_itemsite_id, invhist_transtype, invhist_transdate, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_ordtype, invhist_ordnumber, invhist_docnumber, invhist_comments, invhist_invuom, invhist_unitcost, invhist_xfer_warehous_id, invhist_posted, invhist_series ) SELECT _invhistid, itemsite_id, pTransType, _timestamp, pQty, itemsite_qtyonhand, (itemsite_qtyonhand + (_sense * pQty)), itemsite_costmethod, itemsite_value, itemsite_value + (_r.cost * _sense * pQty), pOrderType, pOrderNumber, pDocNumber, pComments, uom_name, _r.cost, _xferwhsid, FALSE, pItemlocSeries FROM itemsite, item, uom WHERE ( (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_id=pItemsiteid) ); IF (pCreditid IN (SELECT accnt_id FROM accnt)) THEN _creditid = pCreditid; ELSE SELECT warehous_default_accnt_id INTO _creditid FROM itemsite, whsinfo WHERE ( (itemsite_warehous_id=warehous_id) AND (itemsite_id=pItemsiteid) ); END IF; IF (pDebitid IN (SELECT accnt_id FROM accnt)) THEN _debitid = pDebitid; ELSE SELECT warehous_default_accnt_id INTO _debitid FROM itemsite, whsinfo WHERE ( (itemsite_warehous_id=warehous_id) AND (itemsite_id=pItemsiteid) ); END IF; -- Post the G/L Transaction IF (_creditid <> _debitid) THEN SELECT insertGLTransaction(pModule, pOrderType, pOrderNumber, pComments, _creditid, _debitid, _invhistid, (_r.cost * pQty), _timestamp::DATE, FALSE) INTO _glreturn; END IF; -- Distribute this if this itemsite is controlled IF ( _r.lotserial OR _r.loccntrl ) THEN _itemlocdistid := nextval('itemlocdist_itemlocdist_id_seq'); INSERT INTO itemlocdist ( itemlocdist_id, itemlocdist_itemsite_id, itemlocdist_source_type, itemlocdist_reqlotserial, itemlocdist_distlotserial, itemlocdist_expiration, itemlocdist_qty, itemlocdist_series, itemlocdist_invhist_id, itemlocdist_order_type, itemlocdist_order_id ) SELECT _itemlocdistid, pItemsiteid, 'O', (((pQty * _sense) > 0) AND _r.lotserial), ((pQty * _sense) < 0), endOfTime(), (_sense * pQty), pItemlocSeries, _invhistid, pOrderType, CASE WHEN pOrderType='SO' THEN getSalesLineItemId(pOrderNumber) ELSE NULL END; -- populate distributions if invhist_id parameter passed to undo IF (pInvhistid IS NOT NULL) THEN INSERT INTO itemlocdist ( itemlocdist_itemlocdist_id, itemlocdist_source_type, itemlocdist_source_id, itemlocdist_itemsite_id, itemlocdist_ls_id, itemlocdist_expiration, itemlocdist_qty, itemlocdist_series, itemlocdist_invhist_id ) SELECT _itemlocdistid, 'L', COALESCE(invdetail_location_id, -1), invhist_itemsite_id, invdetail_ls_id, COALESCE(invdetail_expiration, endoftime()), (invdetail_qty * -1.0), pItemlocSeries, _invhistid FROM invhist JOIN invdetail ON (invdetail_invhist_id=invhist_id) WHERE (invhist_id=pInvhistid); IF ( _r.lotserial) THEN INSERT INTO lsdetail ( lsdetail_itemsite_id, lsdetail_ls_id, lsdetail_created, lsdetail_source_type, lsdetail_source_id, lsdetail_source_number ) SELECT invhist_itemsite_id, invdetail_ls_id, CURRENT_TIMESTAMP, 'I', _itemlocdistid, '' FROM invhist JOIN invdetail ON (invdetail_invhist_id=invhist_id) WHERE (invhist_id=pInvhistid); END IF; PERFORM distributeitemlocseries(pItemlocSeries); END IF; END IF; -- end of distributions -- These records will be used for posting G/L transactions to trial balance after records committed. -- If we try to do it now concurrency locking prevents any transactions while -- user enters item distribution information. Cant have that. INSERT INTO itemlocpost ( itemlocpost_glseq, itemlocpost_itemlocseries) VALUES ( _glreturn, pItemlocSeries ); RETURN _invhistid; END; $$; 4DROP FUNCTION public.postinvtrans(pitemsiteid integer, ptranstype text, pqty numeric, pmodule text, pordertype text, pordernumber text, pdocnumber text, pcomments text, pdebitid integer, pcreditid integer, pitemlocseries integer, ptimestamp timestamp with time zone, pcostovrld numeric, pinvhistid integer); publicadminfalse8399212551692553postitemlocseries(integer)FUNCTION|CREATE FUNCTION postitemlocseries(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemlocseries ALIAS FOR $1; _result INTEGER; BEGIN PERFORM postIntoTrialBalance(itemlocpost_glseq) FROM ( SELECT DISTINCT itemlocpost_glseq, gltrans_accnt_id FROM itemlocpost JOIN gltrans ON (itemlocpost_glseq=gltrans_sequence) WHERE (itemlocpost_itemlocseries=pItemlocseries) ORDER BY gltrans_accnt_id ) AS data; PERFORM postInvHist(invhist_id) FROM invhist JOIN itemsite ON (invhist_itemsite_id=itemsite_id) WHERE ( (invhist_series=pItemlocseries) AND ( NOT invhist_posted) AND ( NOT itemsite_freeze) ); DELETE FROM itemlocpost WHERE (itemlocpost_itemlocseries=pItemlocseries); RETURN TRUE; END; $_$; 1DROP FUNCTION public.postitemlocseries(integer); publicadminfalse8399212551692554postjournals(integer)FUNCTION CREATE FUNCTION postjournals(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; _transCount INTEGER := 0; _journalnumber INTEGER := fetchJournalNumber('J/P'); _sequence INTEGER := fetchGLSequence(); _sltrans RECORD; BEGIN -- Make sure that we balance IF (SELECT SUM(sltrans_amount) != 0 FROM sltrans WHERE ((NOT sltrans_posted ) AND (sltrans_sequence=pSequence))) THEN RAISE EXCEPTION 'Can not post journals. Transactions do not balance in selected date range.'; END IF; -- March through the sltrans members, posting them one at a time FOR _sltrans IN SELECT sltrans_source, sltrans_accnt_id, SUM(sltrans_amount) as amount FROM sltrans WHERE ((sltrans_amount<>0.0) AND (NOT sltrans_posted) AND (sltrans_sequence=pSequence)) GROUP BY sltrans_source, sltrans_accnt_id LOOP -- refuse to accept postings into closed periods IF (SELECT BOOL_AND(COALESCE(period_closed, FALSE)) FROM accnt LEFT OUTER JOIN period ON (CURRENT_DATE BETWEEN period_start AND period_end) WHERE (accnt_id = _sltrans.sltrans_accnt_id)) THEN RAISE EXCEPTION 'Cannot post to closed period (%).', _sltrans.sltrans_distdate; RETURN -4; -- remove raise exception when all callers check return code END IF; -- refuse to accept postings into frozen periods without proper priv IF (SELECT NOT BOOL_AND(checkPrivilege('PostFrozenPeriod')) AND BOOL_AND(COALESCE(period_freeze, FALSE)) FROM accnt LEFT OUTER JOIN period ON (CURRENT_DATE BETWEEN period_start AND period_end) WHERE (accnt_id = _sltrans.sltrans_accnt_id)) THEN RAISE EXCEPTION 'Cannot post to frozen period (%).', _sltrans.sltrans_distdate; RETURN -4; -- remove raise exception when all callers check return code END IF; IF (_sltrans.amount != 0) THEN INSERT INTO gltrans ( gltrans_posted, gltrans_exported, gltrans_created, gltrans_date, gltrans_sequence, gltrans_accnt_id, gltrans_source, gltrans_notes, gltrans_doctype, gltrans_docnumber, gltrans_amount, gltrans_journalnumber, gltrans_rec ) VALUES ( FALSE, FALSE, CURRENT_TIMESTAMP, CURRENT_DATE, _sequence, _sltrans.sltrans_accnt_id, _sltrans.sltrans_source, 'Journal Posting', 'JP', _journalnumber, _sltrans.amount, _journalnumber, TRUE ); _transCount := _transCount + 1; END IF; END LOOP; -- Update all of the posted sltrans members UPDATE sltrans SET sltrans_posted=true, sltrans_gltrans_journalnumber=_journalnumber WHERE ((NOT sltrans_posted) AND (sltrans_sequence=pSequence)); PERFORM postIntoTrialBalance(_sequence); RETURN _journalnumber; END; $_$; ,DROP FUNCTION public.postjournals(integer); publicadminfalse8399212551692555&postjournals(text[], date, date, date)FUNCTIONCREATE FUNCTION postjournals(text[], date, date, date) RETURNS SETOF integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSources ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; pDistDate ALIAS FOR $4; _i INTEGER; BEGIN FOR _i IN 1..ARRAY_UPPER(pSources,1) LOOP RETURN NEXT postJournals(pSources[_i], pStartDate, pEndDate, pDistDate); END LOOP; RETURN; END; $_$; =DROP FUNCTION public.postjournals(text[], date, date, date); publicadminfalse8399212551692556$postjournals(text, date, date, date)FUNCTION CREATE FUNCTION postjournals(text, date, date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSource ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; pDistDate ALIAS FOR $4; _transCount INTEGER := 0; _journalnumber INTEGER := fetchJournalNumber('J/P'); _sequence INTEGER := fetchGLSequence(); _sltrans RECORD; BEGIN -- Make sure that we balance IF (SELECT SUM(sltrans_amount) != 0 FROM sltrans WHERE ((NOT sltrans_posted ) AND (sltrans_source=pSource) AND (sltrans_date BETWEEN pStartDate AND pEndDate))) THEN RAISE EXCEPTION 'Can not post journals. Transactions do not balance in selected date range.'; END IF; -- March through the sltrans members, posting them one at a time FOR _sltrans IN SELECT sltrans_source, sltrans_accnt_id, SUM(sltrans_amount) as amount FROM sltrans WHERE ((sltrans_amount<>0.0) AND (NOT sltrans_posted) AND (sltrans_source=pSource) AND (sltrans_date BETWEEN pStartDate AND pEndDate)) GROUP BY sltrans_source, sltrans_accnt_id LOOP -- refuse to accept postings into frozen periods if any of the accounts disallow it IF (SELECT NOT BOOL_AND(checkPrivilege('PostFrozenPeriod')) AND BOOL_AND(COALESCE(period_freeze, FALSE)) FROM accnt LEFT OUTER JOIN period ON (pDistDate BETWEEN period_start AND period_end) WHERE (accnt_id = _sltrans.sltrans_accnt_id)) THEN RAISE EXCEPTION 'Cannot post to frozen period (%).', _sltrans.sltrans_distdate; RETURN -4; -- remove raise exception when all callers check return code END IF; IF (_sltrans.amount != 0) THEN INSERT INTO gltrans ( gltrans_posted, gltrans_exported, gltrans_created, gltrans_date, gltrans_sequence, gltrans_accnt_id, gltrans_source, gltrans_notes, gltrans_doctype, gltrans_docnumber, gltrans_amount, gltrans_journalnumber ) VALUES ( FALSE, FALSE, CURRENT_TIMESTAMP, pDistDate, _sequence, _sltrans.sltrans_accnt_id, _sltrans.sltrans_source, 'Journal Posting', 'JP', _journalnumber, _sltrans.amount, _journalnumber ); _transCount := _transCount + 1; END IF; END LOOP; -- Update all of the posted sltrans members UPDATE sltrans SET sltrans_posted=true, sltrans_gltrans_journalnumber=_journalnumber WHERE ((NOT sltrans_posted) AND (sltrans_source=pSource) AND (sltrans_date BETWEEN pStartDate AND pEndDate)); PERFORM postIntoTrialBalance(_sequence); RETURN _journalnumber; END; $_$; ;DROP FUNCTION public.postjournals(text, date, date, date); publicadminfalse8399212551692557Kpostmessage(timestamp without time zone, timestamp without time zone, text)FUNCTION/CREATE FUNCTION postmessage(timestamp without time zone, timestamp without time zone, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pScheduled ALIAS FOR $1; pExpires ALIAS FOR $2; pText ALIAS FOR $3; _msgid INTEGER; BEGIN SELECT NEXTVAL('msg_msg_id_seq') INTO _msgid; INSERT INTO msg (msg_id, msg_posted, msg_scheduled, msg_expires, msg_username, msg_text) VALUES (_msgid, CURRENT_TIMESTAMP, pScheduled, pExpires, getEffectiveXtUser(), pText); INSERT INTO msguser ( msguser_msg_id, msguser_username ) SELECT _msgid, usr_username FROM usr WHERE (usr_username <> getEffectiveXtUser()); NOTIFY "messagePosted"; RETURN _msgid; END; $_$; bDROP FUNCTION public.postmessage(timestamp without time zone, timestamp without time zone, text); publicadminfalse8399212551692558postmessage(text, text)FUNCTIONCREATE FUNCTION postmessage(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pText ALIAS FOR $2; _msgid INTEGER; BEGIN SELECT NEXTVAL('msg_msg_id_seq') INTO _msgid; INSERT INTO msg (msg_id, msg_posted, msg_scheduled, msg_expires, msg_username, msg_text) VALUES (_msgid, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, endOfTime(), getEffectiveXtUser(), pText); INSERT INTO msguser ( msguser_msg_id, msguser_username ) VALUES ( _msgid, pUsername ); NOTIFY "messagePosted"; RETURN _msgid; END; $_$; .DROP FUNCTION public.postmessage(text, text); publicadminfalse8399212551692559Qpostmessage(timestamp without time zone, timestamp without time zone, text, text)FUNCTIONCREATE FUNCTION postmessage(timestamp without time zone, timestamp without time zone, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pScheduled ALIAS FOR $1; pExpires ALIAS FOR $2; pUsername ALIAS FOR $3; pText ALIAS FOR $4; _msgid INTEGER; BEGIN SELECT NEXTVAL('msg_msg_id_seq') INTO _msgid; INSERT INTO msg (msg_id, msg_posted, msg_scheduled, msg_expires, msg_username, msg_text) VALUES (_msgid, CURRENT_TIMESTAMP, pScheduled, pExpires, getEffectiveXtUser(), pText); INSERT INTO msguser ( msguser_msg_id, msguser_username ) VALUES ( _msgid, pUsername ); NOTIFY "messagePosted"; RETURN _msgid; END; $_$; hDROP FUNCTION public.postmessage(timestamp without time zone, timestamp without time zone, text, text); publicadminfalse8399212551692560%postmisccount(integer, numeric, text)FUNCTIONnCREATE FUNCTION postmisccount(pitemsiteid integer, pqty numeric, pcomments text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pQty ALIAS FOR $2; pComments ALIAS FOR $3; _invcntid INTEGER; _result INTEGER; BEGIN -- Make sure the passed itemsite points to a real item IF ( ( SELECT (item_type IN ('R', 'F') OR itemsite_costmethod = 'J') FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ) ) ) THEN RETURN 0; END IF; SELECT invcnt_id INTO _invcntid FROM invcnt WHERE ( (NOT invcnt_posted) AND (invcnt_itemsite_id=pItemsiteid) ); IF (_invcntid IS NULL) THEN _invcntid := NEXTVAL('invcnt_invcnt_id_seq'); INSERT INTO invcnt ( invcnt_id, invcnt_itemsite_id, invcnt_tagdate, invcnt_qoh_before, invcnt_qoh_after, invcnt_tag_username, invcnt_cntdate, invcnt_cnt_username, invcnt_postdate, invcnt_post_username, invcnt_posted, invcnt_priority, invcnt_comments ) SELECT _invcntid, pItemsiteid, now(), itemsite_qtyonhand, pQty, getEffectiveXtUser(), now(), getEffectiveXtUser(), now(), getEffectiveXtUser(), FALSE, FALSE, pComments FROM itemsite WHERE (itemsite_id=pItemsiteid); SELECT postCountTag(_invcntid, FALSE) INTO _result; IF (_result < 0) THEN DELETE FROM invcnt WHERE (invcnt_id=_invcntid); END IF; RETURN _result; ELSE RETURN -2; END IF; END; $_$; WDROP FUNCTION public.postmisccount(pitemsiteid integer, pqty numeric, pcomments text); publicadminfalse8399212551692561postpogltransactions()FUNCTIONCREATE FUNCTION postpogltransactions() RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN UPDATE gltrans SET gltrans_exported=TRUE WHERE ( (NOT gltrans_exported) AND (gltrans_source='A/P') AND (gltrans_doctype IN ('VO')) ); RETURN TRUE; END; $$; -DROP FUNCTION public.postpogltransactions(); publicadminfalse8399212551692562postporeceipt(integer, integer)FUNCTIONCREATE FUNCTION postporeceipt(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN postReceipt($1, $2); END; $_$; 6DROP FUNCTION public.postporeceipt(integer, integer); publicadminfalse8399212551692563postporeceipts(integer)FUNCTIONCREATE FUNCTION postporeceipts(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN postReceipts('PO', $1, NULL); END; $_$; .DROP FUNCTION public.postporeceipts(integer); publicadminfalse8399212551692564postporeturncreditmemo(integer)FUNCTIONICREATE FUNCTION postporeturncreditmemo(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPorejectId ALIAS FOR $1; BEGIN RETURN postPoReturnCreditMemo(pPorejectId, NULL); END; $_$; 6DROP FUNCTION public.postporeturncreditmemo(integer); publicadminfalse8399212551692565(postporeturncreditmemo(integer, numeric)FUNCTIONCREATE FUNCTION postporeturncreditmemo(integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPorejectId ALIAS FOR $1; pAmount ALIAS FOR $2; _p RECORD; _a RECORD; _itemsiteId INTEGER; _docNumber TEXT; _sequence INTEGER; _journalNumber INTEGER; _apopenid INTEGER; _exchGainItem NUMERIC; _itemAmount_base NUMERIC; _itemAmount NUMERIC; _glseriesTotal NUMERIC; _tmpTotal NUMERIC; _test INTEGER; _exchDate DATE; _tax RECORD; _taxAmount NUMERIC := 0; _taxAmount_base NUMERIC; _apaccntid INTEGER; BEGIN --Set things up SELECT NEXTVAL('apopen_apopen_id_seq') INTO _apopenid; SELECT fetchGLSequence() INTO _sequence; SELECT fetchJournalNumber('AP-MISC') INTO _journalNumber; SELECT fetchapmemonumber() INTO _docNumber; _glseriesTotal := 0; --Get poreject data SELECT pohead_vend_id, pohead_number, pohead_curr_id, pohead_orderdate, pohead_taxzone_id, poitem_id, poitem_itemsite_id,poitem_expcat_id, poitem_taxtype_id, itemsite_costcat_id, poreject_qty, poreject_date, ('Return of Item ' || COALESCE(item_number,poitem_vend_item_number) || ', qty. ' || formatqty(poreject_qty)) AS notes, poreject_value AS value, currToBase(pohead_curr_id,(poitem_unitprice * poreject_qty),CURRENT_DATE) AS itemAmount_base, (poitem_unitprice * poreject_qty) AS itemAmount INTO _p FROM pohead, poreject, poitem LEFT OUTER JOIN itemsite ON (poitem_itemsite_id=itemsite_id) LEFT OUTER JOIN item ON (itemsite_item_id=item_id) WHERE ((poreject_poitem_id=poitem_id) AND (pohead_id=poitem_pohead_id) AND (poreject_id=pPorejectId)); _itemAmount := _p.itemAmount; _itemAmount_base := _p.itemAmount_base; IF (pAmount IS NOT NULL) THEN _itemAmount := pAmount; _itemAmount_base := currToBase(_p.pohead_curr_id, pAmount, CURRENT_DATE); END IF; -- Grab the G/L Accounts IF (COALESCE(_p.poitem_itemsite_id, -1) = -1) THEN SELECT pp.accnt_id AS pp_accnt_id, lb.accnt_id AS lb_accnt_id INTO _a FROM expcat, accnt AS pp, accnt AS lb WHERE ( (expcat_purchprice_accnt_id=pp.accnt_id) AND (expcat_liability_accnt_id=lb.accnt_id) AND (expcat_id=_p.poitem_expcat_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Post Credit Memo due to unassigned G/L Accounts.'; END IF; ELSE SELECT pp.accnt_id AS pp_accnt_id, lb.accnt_id AS lb_accnt_id INTO _a FROM costcat, accnt AS pp, accnt AS lb WHERE ( (costcat_purchprice_accnt_id=pp.accnt_id) AND (costcat_liability_accnt_id=lb.accnt_id) AND (costcat_id=_p.itemsite_costcat_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Post Credit Memo due to unassigned G/L Accounts.'; END IF; END IF; -- AP Open Item record INSERT INTO apopen ( apopen_id, apopen_username, apopen_journalnumber, apopen_vend_id, apopen_docnumber, apopen_doctype, apopen_ponumber, apopen_docdate, apopen_duedate, apopen_distdate, apopen_terms_id, apopen_amount, apopen_paid, apopen_open, apopen_notes, apopen_accnt_id, apopen_curr_id, apopen_closedate ) VALUES ( _apopenid, getEffectiveXtUser(), _journalNumber, _p.pohead_vend_id, _docNumber, 'C', _p.pohead_number, CURRENT_DATE, CURRENT_DATE, CURRENT_DATE, -1, round(_itemAmount, 2), 0, (round(_itemAmount, 2) <> 0), _p.notes, -1, _p.pohead_curr_id, CASE WHEN (round(_itemAmount, 2) = 0) THEN _p.poreject_date END ); -- Taxes FOR _tax IN SELECT taxdetail_tax_id, sum(taxdetail_tax) AS taxdetail_tax, currToBase(_p.pohead_curr_id, round(sum(taxdetail_tax),2), current_date) AS taxbasevalue FROM calculateTaxDetail(_p.pohead_taxzone_id, _p.poitem_taxtype_id, current_date, _p.pohead_curr_id, _itemAmount) GROUP BY taxdetail_tax_id LOOP INSERT INTO apopentax (taxhist_basis,taxhist_percent,taxhist_amount,taxhist_docdate, taxhist_tax_id, taxhist_tax, taxhist_taxtype_id, taxhist_parent_id, taxhist_journalnumber ) VALUES (0, 0, 0, current_date, _tax.taxdetail_tax_id, _tax.taxdetail_tax, getadjustmenttaxtypeid(), _apopenid, _journalNumber); _taxAmount := _taxAmount + _tax.taxdetail_tax; END LOOP; _taxAmount_base := addTaxToGLSeries(_sequence, 'A/P', 'CM', _docNumber, _p.pohead_curr_id, current_date, current_date, 'apopentax', _apopenid, _p.notes); UPDATE apopen SET apopen_amount = round(_itemAmount + _taxAmount,2) WHERE (apopen_id = _apopenid); -- Distribute from the clearing account PERFORM insertIntoGLSeries( _sequence, 'A/P', 'CM', _docNumber, _a.lb_accnt_id, round(_p.value, 2), current_date, _p.notes ); _glseriesTotal := _glseriesTotal + round(_p.value, 2); -- Distribute the remaining variance to the Purchase Price Variance account IF (round(_itemAmount_base, 2) <> round(_p.value, 2)) THEN _tmpTotal := round(_itemAmount_base, 2) - round(_p.value, 2); PERFORM insertIntoGLSeries( _sequence, 'A/P', 'CM', _docNumber, _a.pp_accnt_id, _tmpTotal, current_date, _p.notes ); _glseriesTotal := _glseriesTotal + _tmpTotal; END IF; -- Post the reject item for this P/O Item as Invoiced UPDATE poreject SET poreject_invoiced=TRUE WHERE poreject_id=pPorejectId; -- Update the qty vouchered field UPDATE poitem SET poitem_qty_vouchered = (poitem_qty_vouchered - _p.poreject_qty) WHERE (poitem_id=_p.poitem_id); -- Post to A/P SELECT findAPAccount(_p.pohead_vend_id) INTO _apaccntid; IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Post Credit Memo due to an unassigned A/P Account.'; END IF; SELECT insertIntoGLSeries( _sequence, 'A/P', 'CM', _docNumber, _apaccntid, round(_itemAmount_base + _taxAmount_base, 2) *-1, current_date, _p.notes ) INTO _test; IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Post Credit Memo.'; END IF; -- Clean up loose ends _glseriesTotal := _glseriesTotal + round(_itemAmount_base, 2)*-1; IF (round(_glseriesTotal, 2) != 0) THEN PERFORM insertIntoGLSeries(_sequence, 'A/P', 'CM', 'Currency Exchange Rounding - ' || _docNumber, getGainLossAccntId(_apaccntid), round(_glseriesTotal, 2) * -1, current_date, _p.notes); END IF; -- Post it all PERFORM postGLSeries(_sequence, _journalNumber); RETURN _journalNumber; END; $_$; ?DROP FUNCTION public.postporeturncreditmemo(integer, numeric); publicadminfalse8399212551692567postporeturns(integer)FUNCTIONCREATE FUNCTION postporeturns(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPoheadid ALIAS FOR $1; _itemlocSeries INTEGER; _p RECORD; _returnval INTEGER; BEGIN _itemlocSeries := 0; SELECT postPoReturns(pPoheadid,false) INTO _itemlocseries; RETURN _itemlocSeries; END; $_$; -DROP FUNCTION public.postporeturns(integer); publicadminfalse8399212551692568postporeturns(integer, boolean)FUNCTIONoCREATE FUNCTION postporeturns(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPoheadid ALIAS FOR $1; pCreateMemo ALIAS FOR $2; _itemlocSeries INTEGER; _p RECORD; _returnval INTEGER; _tmp INTEGER; _pricevar NUMERIC := 0.00; _invhistid INTEGER; _journalNumber INTEGER := fetchJournalNumber('GL-MISC'); BEGIN _itemlocSeries := 0; FOR _p IN SELECT pohead_number, pohead_curr_id, poreject_id, poitem_prj_id, poreject_poitem_id, poitem_id, poitem_expcat_id, poitem_linenumber, currToBase(COALESCE(recv_purchcost_curr_id, pohead_curr_id), COALESCE(recv_purchcost, poitem_unitprice), pohead_orderdate) AS poitem_unitprice_base, COALESCE(itemsite_id, -1) AS itemsiteid, poitem_invvenduomratio, SUM(poreject_qty) AS totalqty, itemsite_item_id, itemsite_costmethod, itemsite_controlmethod, recv_date FROM pohead JOIN poitem ON (poitem_pohead_id=pohead_id) JOIN poreject ON (poreject_poitem_id=poitem_id AND NOT poreject_posted) LEFT OUTER JOIN itemsite ON (poitem_itemsite_id=itemsite_id) LEFT OUTER JOIN recv ON (recv_id=poreject_recv_id) WHERE (pohead_id=pPoheadid) GROUP BY poreject_id, pohead_number, poreject_poitem_id, poitem_id, poitem_prj_id, poitem_expcat_id, poitem_linenumber, poitem_unitprice, pohead_curr_id, pohead_orderdate, itemsite_id, poitem_invvenduomratio, itemsite_item_id, itemsite_costmethod, itemsite_controlmethod, recv_date, recv_purchcost_curr_id, recv_purchcost LOOP IF (_p.itemsiteid = -1) THEN SELECT insertGLTransaction( 'S/R', 'PO', _p.pohead_number, 'Return Non-Inventory to P/O', expcat_liability_accnt_id, getPrjAccntId(_p.poitem_prj_id, expcat_exp_accnt_id), -1, round(_p.poitem_unitprice_base * _p.totalqty * -1, 2), CURRENT_DATE ) INTO _returnval FROM expcat WHERE (expcat_id=_p.poitem_expcat_id); UPDATE poreject SET poreject_posted=TRUE, poreject_value= round(_p.poitem_unitprice_base * _p.totalqty, 2) WHERE (poreject_id=_p.poreject_id); ELSEIF (_p.itemsite_controlmethod='N') THEN SELECT insertGLTransaction('S/R', 'PO', _p.pohead_number, 'Return Non-Controlled Inventory from PO', costcat_liability_accnt_id, getPrjAccntId(_p.poitem_prj_id, costcat_exp_accnt_id), -1, round((_p.poitem_unitprice_base * _p.totalqty * -1), 2), CURRENT_DATE ) INTO _returnval FROM itemsite, costcat WHERE((itemsite_costcat_id=costcat_id) AND (itemsite_id=_p.itemsiteid)); IF (_returnval = -3) THEN -- zero value transaction _returnval := 0; END IF; UPDATE poreject SET poreject_posted=TRUE, poreject_value= round(_p.poitem_unitprice_base * _p.totalqty, 2) WHERE (poreject_id=_p.poreject_id); ELSE IF (_itemlocSeries = 0) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; END IF; SELECT postInvTrans( itemsite_id, 'RP', (_p.totalqty * _p.poitem_invvenduomratio * -1), 'S/R', 'PO', (_p.pohead_number || '-' || _p.poitem_linenumber::TEXT), '', 'Return Inventory to P/O', costcat_asset_accnt_id, costcat_liability_accnt_id, _itemlocSeries, CURRENT_TIMESTAMP) INTO _returnval FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_p.itemsiteid) ); UPDATE poreject SET poreject_posted=TRUE, poreject_value=(invhist_unitcost *_p.totalqty * _p.poitem_invvenduomratio) FROM invhist WHERE ((poreject_id=_p.poreject_id) AND (invhist_id=_returnval)); END IF; IF (_returnval < 0) THEN RETURN _returnval; END IF; UPDATE poitem SET poitem_qty_returned=(poitem_qty_returned + _p.totalqty), poitem_status='O' WHERE (poitem_id=_p.poitem_id); IF (fetchMetricBool('RecordPPVonReceipt')) THEN -- If the 'Purchase Price Variance on Receipt' option is true _invhistid := _returnval; -- Find the difference in the purchase price value expected from the P/O and the value of the transaction SELECT ((_p.poitem_unitprice_base * poitem_qty_returned) - (invhist_value_before - invhist_value_after)) INTO _pricevar FROM invhist, poitem WHERE ((invhist_id = _invhistid) AND (poitem_id=_p.poitem_id)); -- If difference exists then IF (_pricevar <> 0.00) THEN -- Record an additional GL Transaction for the purchase price variance SELECT insertGLTransaction( _journalNumber, 'S/R', 'PO', _p.pohead_number, 'Purchase price variance adjusted for P/O ' || _p.pohead_number || ' for item ' || _p.poitem_linenumber::TEXT, costcat_liability_accnt_id, getPrjAccntId(_p.poitem_prj_id, costcat_purchprice_accnt_id), -1, _pricevar, CURRENT_DATE, false ) INTO _tmp FROM itemsite, costcat, poitem WHERE ((itemsite_costcat_id=costcat_id) AND (itemsite_id=poitem_itemsite_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Could not insert G/L transaction: no cost category found for itemsite_id %', _p.itemsiteid; ELSIF (_tmp < 0 AND _tmp != -3) THEN -- error but not 0-value transaction RETURN _tmp; ELSE -- Posting to trial balance is deferred to prevent locking INSERT INTO itemlocpost ( itemlocpost_glseq, itemlocpost_itemlocseries) VALUES ( _tmp, _itemlocSeries ); END IF; END IF; END IF; IF (pCreateMemo) THEN SELECT postPoReturnCreditMemo(_p.poreject_id) INTO _returnval; END IF; IF (_returnval < 0) THEN RETURN _returnval; END IF; END LOOP; RETURN _itemlocSeries; END; $_$; 6DROP FUNCTION public.postporeturns(integer, boolean); publicadminfalse83992125516925692postproduction(integer, numeric, boolean, boolean)FUNCTIONCREATE FUNCTION postproduction(integer, numeric, boolean, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'postProduction(INTEGER, NUMERIC, BOOLEAN, BOOLEAN) is deprecated. please use postProduction(INTEGER, NUMERIC, BOOLEAN, INTEGER, TIMESTAMP WITH TIME ZONE) instead'; RETURN postProduction($1, $2, $3, 0, now()); END; $_$; IDROP FUNCTION public.postproduction(integer, numeric, boolean, boolean); publicadminfalse8399212551692570;postproduction(integer, numeric, boolean, boolean, integer)FUNCTIONCREATE FUNCTION postproduction(integer, numeric, boolean, boolean, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'postProduction(INTEGER, NUMERIC, BOOLEAN, BOOLEAN, INTEGER) is deprecated. please use postProduction(INTEGER, NUMERIC, BOOLEAN, INTEGER, TIMESTAMP WITH TIME ZONE) instead'; RETURN postProduction($1, $2, $3, $5, now()); END; $_$; RDROP FUNCTION public.postproduction(integer, numeric, boolean, boolean, integer); publicadminfalse8399212551692571Gpostproduction(integer, numeric, boolean, boolean, integer, text, text)FUNCTIONCREATE FUNCTION postproduction(integer, numeric, boolean, boolean, integer, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'postProduction(INTEGER, NUMERIC, BOOLEAN, BOOLEAN, INTEGER, TEXT, TEXT) is deprecated. please use postProduction(INTEGER, NUMERIC, BOOLEAN, INTEGER, TIMESTAMP WITH TIME ZONE) instead'; RETURN postProduction($1, $2, $3, $5, now()); END; $_$; ^DROP FUNCTION public.postproduction(integer, numeric, boolean, boolean, integer, text, text); publicadminfalse8399212551692572Lpostproduction(integer, numeric, boolean, integer, timestamp with time zone)FUNCTIONCREATE FUNCTION postproduction(integer, numeric, boolean, integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pQty ALIAS FOR $2; pBackflush ALIAS FOR $3; pItemlocSeries ALIAS FOR $4; pGlDistTS ALIAS FOR $5; _test INTEGER; _invhistid INTEGER; _itemlocSeries INTEGER; _parentQty NUMERIC; _r RECORD; _sense TEXT; _wipPost NUMERIC; _woNumber TEXT; _ucost NUMERIC; BEGIN IF (pQty = 0) THEN RETURN 0; ELSIF (pQty > 0) THEN _sense = 'from'; ELSE _sense = 'to'; END IF; IF ( ( SELECT wo_status FROM wo WHERE (wo_id=pWoid) ) NOT IN ('R','E','I') ) THEN RETURN -1; END IF; -- Make sure that all Component Item Sites exist SELECT bomitem_id INTO _test FROM wo, bomitem, itemsite WHERE ( (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=bomitem_parent_item_id) AND (woEffectiveDate(wo_startdate) BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (wo_id=pWoid) AND (bomitem_rev_id=wo_bom_rev_id) AND (bomitem_item_id NOT IN ( SELECT component.itemsite_item_id FROM itemsite AS component, itemsite AS parent WHERE ( (wo_itemsite_id=parent.itemsite_id) AND (parent.itemsite_item_id=bomitem_parent_item_id) AND (bomitem_item_id=component.itemsite_item_id) AND (woEffectiveDate(wo_startdate) BETWEEN bomitem_effective AND (bomitem_expires - 1)) AND (bomitem_rev_id=wo_bom_rev_id) AND (component.itemsite_active) AND (component.itemsite_warehous_id=parent.itemsite_warehous_id) ) ) ) ) LIMIT 1; IF (FOUND AND pBackflush) THEN RETURN -2; END IF; SELECT formatWoNumber(pWoid) INTO _woNumber; SELECT roundQty(item_fractional, pQty) INTO _parentQty FROM wo, itemsite, item WHERE ((wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (wo_id=pWoid)); -- Create the material receipt transaction IF (pItemlocSeries = 0) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; ELSE _itemlocSeries = pItemlocSeries; END IF; IF (pBackflush) THEN FOR _r IN SELECT womatl_id, womatl_qtyiss + (CASE WHEN (womatl_qtywipscrap > ((womatl_qtyfxd + (_parentQty + wo_qtyrcv) * womatl_qtyper) * womatl_scrap)) THEN (womatl_qtyfxd + (_parentQty + wo_qtyrcv) * womatl_qtyper) * womatl_scrap ELSE womatl_qtywipscrap END) AS consumed, (womatl_qtyfxd + ((_parentQty + wo_qtyrcv) * womatl_qtyper)) * (1 + womatl_scrap) AS expected FROM womatl, wo, itemsite, item WHERE ((womatl_issuemethod IN ('L', 'M')) AND (womatl_wo_id=pWoid) AND (womatl_wo_id=wo_id) AND (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id)) LOOP -- Don't issue more than should have already been consumed at this point IF (pQty > 0) THEN IF (noNeg(_r.expected - _r.consumed) > 0) THEN SELECT issueWoMaterial(_r.womatl_id, noNeg(_r.expected - _r.consumed), _itemlocSeries, pGlDistTS) INTO _itemlocSeries; END IF; ELSE -- Used by postMiscProduction of disassembly SELECT returnWoMaterial(_r.womatl_id, (_r.expected * -1.0), _itemlocSeries, CURRENT_TIMESTAMP, true) INTO _itemlocSeries; END IF; UPDATE womatl SET womatl_issuemethod='L' WHERE ( (womatl_issuemethod='M') AND (womatl_id=_r.womatl_id) ); END LOOP; END IF; SELECT CASE WHEN (pQty < 0 AND itemsite_costmethod='S') THEN stdcost(itemsite_item_id) * pQty WHEN (pQty < 0) THEN avgcost(itemsite_id) * pQty WHEN (wo_cosmethod = 'D') THEN wo_wipvalue ELSE round((wo_wipvalue - (wo_postedvalue / wo_qtyord * (wo_qtyord - CASE WHEN (wo_qtyord < wo_qtyrcv + pQty) THEN wo_qtyord ELSE wo_qtyrcv + pQty END ))),2) END INTO _wipPost FROM wo JOIN itemsite ON (wo_itemsite_id=itemsite_id) WHERE (wo_id=pWoid); SELECT postInvTrans( itemsite_id, 'RM', _parentQty, 'W/O', 'WO', _woNumber, '', ('Receive Inventory ' || item_number || ' ' || _sense || ' Manufacturing'), costcat_asset_accnt_id, getPrjAccntId(wo_prj_id, costcat_wip_accnt_id), _itemlocSeries, pGlDistTS, -- the following is only actually used when the item is average or job costed _wipPost ) INTO _invhistid FROM wo, itemsite, item, costcat WHERE ( (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (itemsite_costcat_id=costcat_id) AND (wo_id=pWoid) ); IF (pQty < 0 ) THEN _wipPost := _wipPost * -1; END IF; -- Increase this W/O's received qty decrease its WIP value UPDATE wo SET wo_qtyrcv = (wo_qtyrcv + _parentQty), wo_wipvalue = (wo_wipvalue - (CASE WHEN (itemsite_costmethod IN ('A','J')) THEN _wipPost WHEN (itemsite_costmethod='S') THEN (stdcost(itemsite_item_id) * _parentQty) ELSE 0.0 END)) FROM itemsite, item WHERE ((wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (wo_id=pWoid)); -- ROB Increase this W/O's WIP value for custom costing SELECT SUM(itemcost_stdcost * _parentQty) INTO _ucost FROM wo JOIN itemsite ON (itemsite_id=wo_itemsite_id) JOIN itemcost ON (itemcost_item_id=itemsite_item_id) JOIN costelem ON ((costelem_id=itemcost_costelem_id) AND (costelem_exp_accnt_id IS NOT NULL) AND (NOT costelem_sys)) WHERE (wo_id=pWoid); UPDATE wo SET wo_wipvalue = (wo_wipvalue + coalesce(_ucost,0)) WHERE (wo_id=pWoid); -- ROB Distribute to G/L - create Cost Variance, debit WIP PERFORM insertGLTransaction( 'W/O', 'WO', _woNumber, ('Post Other Cost ' || item_number || ' ' || _sense || ' Manufacturing'), getPrjAccntId(wo_prj_id, costelem_exp_accnt_id), getPrjAccntId(wo_prj_id,costcat_wip_accnt_id), _invhistid, (itemcost_stdcost * _parentQty), pGlDistTS::DATE ) FROM wo, costelem, itemcost, costcat, itemsite, item WHERE ((wo_id=pWoid) AND (wo_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (costelem_id = itemcost_costelem_id) AND (itemcost_item_id = itemsite_item_id) AND (itemsite_costcat_id = costcat_id) AND (costelem_exp_accnt_id) IS NOT NULL AND (costelem_sys = false)); --End -- Make sure the W/O is at issue status UPDATE wo SET wo_status='I' WHERE (wo_id=pWoid); RETURN _itemlocSeries; END; $_$; cDROP FUNCTION public.postproduction(integer, numeric, boolean, integer, timestamp with time zone); publicadminfalse8399212551692574postreceipt(integer, integer)FUNCTIONcCREATE FUNCTION postreceipt(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2011 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE precvid ALIAS FOR $1; _itemlocSeries INTEGER := COALESCE($2, 0); _freightAccnt INTEGER; _glDate TIMESTAMP WITH TIME ZONE; _o RECORD; _ordertypeabbr TEXT; _r RECORD; _ra RECORD; _recvinvqty NUMERIC := 0.00; _recvvalue NUMERIC := 0.00; _pricevar NUMERIC := 0.00; _tmp INTEGER; _toitemitemid INTEGER; _coheadid INTEGER; _coitemid INTEGER; _linenumber INTEGER; _invhistid INTEGER; _shipheadid INTEGER; _ship BOOLEAN; _i RECORD; BEGIN SELECT recv_id, recv_order_type, recv_orderitem_id, recv_qty, round(currToBase(recv_freight_curr_id, recv_freight, recv_date::DATE), 2) AS recv_freight_base, recv_freight, recv_freight_curr_id, recv_date, recv_gldistdate, itemsite_id, itemsite_item_id, item_inv_uom_id, itemsite_costmethod, itemsite_controlmethod, vend_name, item_number, item_fractional INTO _r FROM recv LEFT OUTER JOIN itemsite ON (recv_itemsite_id=itemsite_id) LEFT OUTER JOIN item ON (itemsite_item_id=item_id) LEFT OUTER JOIN vendinfo ON (recv_vend_id=vend_id) WHERE ((recv_id=precvid) AND (NOT recv_posted)); IF (NOT FOUND) THEN IF (_itemlocSeries = 0) THEN RETURN -10; END IF; RETURN _itemlocSeries; ELSEIF (_r.recv_qty <= 0) THEN RETURN -11; ELSIF (_r.recv_order_type ='PO') THEN _ordertypeabbr := ('P/O for ' || _r.vend_name || ' for item ' || _r.item_number); SELECT pohead_number AS orderhead_number, poitem_id AS orderitem_id, poitem_linenumber AS orderitem_linenumber, currToBase(pohead_curr_id, COALESCE(recv_purchcost, poitem_unitprice), recv_date::DATE) AS item_unitprice_base, poitem_invvenduomratio AS invvenduomratio, pohead_orderdate AS orderdate, pohead_dropship, poitem_prj_id AS prj_id INTO _o FROM recv, pohead, poitem WHERE ((recv_orderitem_id=poitem_id) AND (poitem_pohead_id=pohead_id) AND (NOT recv_posted) AND (recv_id=precvid)); ELSIF (_r.recv_order_type ='RA') THEN _ordertypeabbr := 'R/A for item ' || _r.item_number; SELECT rahead_id AS orderhead_id, rahead_number AS orderhead_number, raitem_id AS orderitem_id, raitem_linenumber AS orderitem_linenumber, currToBase(rahead_curr_id, raitem_unitprice, recv_date::DATE) AS item_unitprice_base, raitem_qty_invuomratio AS invvenduomratio, rahead_authdate AS orderdate, raitem_unitcost AS unitcost, rahead_prj_id AS prj_id INTO _o FROM recv, rahead, raitem WHERE ((recv_orderitem_id=raitem_id) AND (raitem_rahead_id=rahead_id) AND (NOT recv_posted) AND (recv_id=precvid)); ELSIF (_r.recv_order_type ='TO') THEN _ordertypeabbr := 'T/O for item ' || _r.item_number; SELECT tohead_number AS orderhead_number, toitem_id AS orderitem_id, toitem_linenumber AS orderitem_linenumber, toitem_stdcost AS item_unitprice_base, 1.0 AS invvenduomratio, tohead_orderdate AS orderdate, NULL AS prj_id INTO _o FROM recv, tohead, toitem WHERE ((recv_orderitem_id=toitem_id) AND (toitem_tohead_id=tohead_id) AND (NOT recv_posted) AND (recv_id=precvid)); ELSE RETURN -13; -- don't know how to handle this order type END IF; IF (NOT FOUND) THEN IF (_itemlocSeries = 0) THEN RETURN -10; END IF; RETURN _itemlocSeries; END IF; IF (_itemlocSeries = 0) THEN _itemlocSeries := NEXTVAL('itemloc_series_seq'); ELSEIF (_itemlocSeries < 0) THEN RETURN _itemlocSeries; END IF; _glDate := COALESCE(_r.recv_gldistdate, _r.recv_date); _recvinvqty := roundQty(_r.item_fractional, (_r.recv_qty * _o.invvenduomratio)); IF ( (_r.recv_order_type = 'PO') AND (_r.itemsite_id = -1 OR _r.itemsite_id IS NULL OR _r.itemsite_controlmethod = 'N') ) THEN IF (_r.itemsite_id IS NOT NULL) THEN SELECT insertGLTransaction( fetchJournalNumber('GL-MISC'), 'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Non-Controlled Inventory from ' || _ordertypeabbr, costcat_liability_accnt_id, getPrjAccntId(_o.prj_id, costcat_exp_accnt_id), -1, round((_o.item_unitprice_base * _r.recv_qty),2), _glDate::DATE, false ) INTO _tmp FROM poitem, itemsite, costcat WHERE((poitem_itemsite_id=itemsite_id) AND (itemsite_costcat_id=costcat_id) AND (poitem_id=_o.orderitem_id)); ELSE SELECT insertGLTransaction(fetchJournalNumber('GL-MISC'), 'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Non-Inventory from ' || 'P/O for ' || _r.vend_name || ' for ' || expcat_code, expcat_liability_accnt_id, getPrjAccntId(_o.prj_id, expcat_exp_accnt_id), -1, round((_o.item_unitprice_base * _r.recv_qty),2), _glDate::DATE, false ) INTO _tmp FROM poitem, expcat WHERE((poitem_expcat_id=expcat_id) AND (poitem_id=_o.orderitem_id)); END IF; IF (_tmp < 0 AND _tmp != -3) THEN -- error but not 0-value transaction RETURN _tmp; ELSE -- Posting to trial balance is deferred to prevent locking INSERT INTO itemlocpost ( itemlocpost_glseq, itemlocpost_itemlocseries) VALUES ( _tmp, _itemlocSeries ); END IF; SELECT insertGLTransaction( fetchJournalNumber('GL-MISC'), 'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Non-Inventory Freight from ' || _ordertypeabbr, expcat_liability_accnt_id, getPrjAccntId(_o.prj_id, expcat_freight_accnt_id), -1, _r.recv_freight_base, _glDate::DATE, false ), expcat_freight_accnt_id INTO _tmp, _freightAccnt FROM poitem, expcat WHERE((poitem_expcat_id=expcat_id) AND (poitem_id=_o.orderitem_id)); IF (_tmp < 0 AND _tmp != -3) THEN -- error but not 0-value transaction RETURN _tmp; ELSE -- Posting to trial balance is deferred to prevent locking INSERT INTO itemlocpost ( itemlocpost_glseq, itemlocpost_itemlocseries) VALUES ( _tmp, _itemlocSeries ); END IF; _recvvalue := ROUND((_o.item_unitprice_base * _r.recv_qty),2); UPDATE poitem SET poitem_qty_received = (poitem_qty_received + _r.recv_qty), poitem_freight_received = (poitem_freight_received + _r.recv_freight_base) WHERE (poitem_id=_o.orderitem_id); ELSEIF ( (_r.recv_order_type = 'RA') AND (_r.itemsite_id = -1 OR _r.itemsite_id IS NULL OR _r.itemsite_controlmethod = 'N') ) THEN RAISE NOTICE 'itemsite controlmethod is %, cannot post receipt.', _r.itemsite_controlmethod; RETURN -14; -- otherwise how do we get the accounts? ELSEIF ( (_r.recv_order_type = 'TO') AND (_r.itemsite_id = -1 OR _r.itemsite_id IS NULL) ) THEN RAISE NOTICE 'itemsite missing'; RETURN -14; -- otherwise how do we get the accounts? ELSE -- not ELSIF: some code is shared between diff order types IF (_r.recv_order_type = 'PO') THEN SELECT postInvTrans( itemsite_id, 'RP'::TEXT, _recvinvqty, 'S/R'::TEXT, _r.recv_order_type::TEXT, _o.orderhead_number::TEXT || '-' || _o.orderitem_linenumber::TEXT, ''::TEXT, 'Receive Inventory from ' || _ordertypeabbr, costcat_asset_accnt_id, costcat_liability_accnt_id, _itemlocSeries, _glDate, round((_o.item_unitprice_base * _r.recv_qty),2) -- always passing this in since it is ignored if it is not average costed item ) INTO _tmp FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Could not post inventory transaction: no cost category found for itemsite_id %', _r.itemsite_id; ELSIF (_tmp < -1) THEN -- less than -1 because -1 means it is a none controlled item IF(_tmp = -3) THEN RETURN -12; -- The GL trans value was 0 which means we likely do not have a std cost END IF; RETURN _tmp; END IF; -- If the 'Purchase Price Variance on Receipt' option is true IF (fetchMetricBool('RecordPPVonReceipt')) THEN _invhistid := _tmp; -- Find the difference in the purchase price value expected from the P/O and the value of the transaction SELECT ((_o.item_unitprice_base * _r.recv_qty) - (invhist_value_after - invhist_value_before)) INTO _pricevar FROM invhist WHERE (invhist_id = _invhistid); -- If difference exists then IF (_pricevar <> 0.00) THEN -- Record an additional GL Transaction for the purchase price variance SELECT insertGLTransaction( fetchJournalNumber('GL-MISC'), 'S/R', _r.recv_order_type, _o.orderhead_number, 'Purchase price variance adjusted for P/O ' || _o.orderhead_number || ' for item ' || _r.item_number, costcat_liability_accnt_id, getPrjAccntId(_o.prj_id, costcat_purchprice_accnt_id), -1, _pricevar, _glDate::DATE, false ) INTO _tmp FROM itemsite, costcat WHERE ((itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Could not insert G/L transaction: no cost category found for itemsite_id %', _r.itemsite_id; ELSIF (_tmp < 0 AND _tmp != -3) THEN -- error but not 0-value transaction RETURN _tmp; ELSE -- Posting to trial balance is deferred to prevent locking INSERT INTO itemlocpost ( itemlocpost_glseq, itemlocpost_itemlocseries) VALUES ( _tmp, _itemlocSeries ); END IF; END IF; END IF; SELECT insertGLTransaction(fetchJournalNumber('GL-MISC'), 'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Inventory Freight from ' || _o.orderhead_number || ' for item ' || _r.item_number, costcat_liability_accnt_id, getPrjAccntId(_o.prj_id, costcat_freight_accnt_id), -1, _r.recv_freight_base, _glDate::DATE, false ), costcat_freight_accnt_id INTO _tmp, _freightAccnt FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Could not insert G/L transaction: no cost category found for itemsite_id %', _r.itemsite_id; ELSIF (_tmp < 0 AND _tmp != -3) THEN -- error but not 0-value transaction RETURN _tmp; ELSE -- Posting to trial balance is deferred to prevent locking INSERT INTO itemlocpost ( itemlocpost_glseq, itemlocpost_itemlocseries) VALUES ( _tmp, _itemlocSeries ); END IF; UPDATE poitem SET poitem_qty_received = (poitem_qty_received + _r.recv_qty), poitem_freight_received = (poitem_freight_received + _r.recv_freight_base) WHERE (poitem_id=_o.orderitem_id); ELSIF (_r.recv_order_type = 'RA') THEN SELECT rahead.*, raitem.* INTO _ra FROM rahead, raitem WHERE ((rahead_id=raitem_rahead_id) AND (raitem_id=_r.recv_orderitem_id)); SELECT postInvTrans(_r.itemsite_id, 'RR', _recvinvqty, 'S/R', _r.recv_order_type, _ra.rahead_number::TEXT || '-' || _ra.raitem_linenumber::TEXT, '', 'Receive Inventory from ' || _ordertypeabbr, costcat_asset_accnt_id, CASE WHEN(COALESCE(_ra.raitem_cos_accnt_id, -1) != -1) THEN getPrjAccntId(_o.prj_id, _ra.raitem_cos_accnt_id) WHEN (_ra.raitem_warranty) THEN getPrjAccntId(_o.prj_id, resolveCOWAccount(_r.itemsite_id, _ra.rahead_cust_id, _ra.rahead_saletype_id, _ra.rahead_shipzone_id)) ELSE getPrjAccntId(_o.prj_id, resolveCORAccount(_r.itemsite_id, _ra.rahead_cust_id, _ra.rahead_saletype_id, _ra.rahead_shipzone_id)) END, _itemlocSeries, _glDate, COALESCE(_o.unitcost,stdcost(itemsite_item_id)) * _recvinvqty) INTO _tmp FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Could not post inventory transaction: no cost category found for itemsite_id %', _r.itemsite_id; ELSIF (_tmp < -1) THEN -- less than -1 because -1 means it is a none controlled item IF(_tmp = -3) THEN RAISE NOTICE 'The GL trans value was 0 which means we likely do not have a std cost'; RETURN -12; -- The GL trans value was 0 which means we likely do not have a std cost END IF; RETURN _tmp; END IF; INSERT INTO rahist (rahist_itemsite_id, rahist_date, rahist_descrip, rahist_qty, rahist_uom_id, rahist_source, rahist_source_id, rahist_rahead_id ) VALUES (_r.itemsite_id, _glDate, 'Receive Inventory from ' || _ordertypeabbr, _recvinvqty, _r.item_inv_uom_id, 'RR', _r.recv_id, _ra.rahead_id ); SELECT insertGLTransaction(fetchJournalNumber('GL-MISC'), 'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Inventory Freight from ' || _o.orderhead_number || ' for item ' || _r.item_number, costcat_liability_accnt_id, getPrjAccntId(_o.prj_id, costcat_freight_accnt_id), -1, _r.recv_freight_base, _glDate::DATE, false ), costcat_freight_accnt_id INTO _tmp, _freightAccnt FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id) ); IF (_tmp < 0 AND _tmp != -3) THEN -- error but not 0-value transaction RETURN _tmp; ELSE -- Posting to trial balance is deferred to prevent locking INSERT INTO itemlocpost ( itemlocpost_glseq, itemlocpost_itemlocseries) VALUES ( _tmp, _itemlocSeries ); END IF; INSERT INTO rahist (rahist_date, rahist_descrip, rahist_source, rahist_source_id, rahist_curr_id, rahist_amount, rahist_rahead_id ) VALUES (_glDate, 'Receive Inventory Freight from ' || _ordertypeabbr, 'RR', _r.recv_id, _r.recv_freight_curr_id, _r.recv_freight, _ra.rahead_id ); UPDATE raitem SET raitem_qtyreceived = (raitem_qtyreceived + _r.recv_qty) WHERE (raitem_id=_o.orderitem_id); -- Expire date doesn't mean anything once the RA is received -- WARNING: INSERTING 'NULL' MIGHT CAUSE PROBLEMS!! UPDATE rahead SET rahead_expiredate = NULL WHERE (rahead_id=_o.orderhead_id); -- Look for 'ship' lines SELECT (count(*) > 0) INTO _ship FROM raitem WHERE ((raitem_disposition = 'S') AND (raitem_new_coitem_id IS NULL) AND (raitem_rahead_id=_ra.rahead_id)); -- If receiving a qty on a shippable and upon receipt item, create coitem IF ((_ra.rahead_timing='R') AND (_ship OR ( (_ra.raitem_disposition IN ('P','V')) AND (_ra.raitem_new_coitem_id IS NULL) AND (_ra.raitem_qtyauthorized > 0)))) THEN IF (_ra.rahead_new_cohead_id IS NOT NULL) THEN _coheadid = _ra.rahead_new_cohead_id; ELSE -- No header, so create a Sales Order header first. SELECT nextval('cohead_cohead_id_seq') INTO _coheadid; INSERT INTO cohead ( cohead_id,cohead_number,cohead_cust_id,cohead_custponumber, cohead_orderdate,cohead_salesrep_id,cohead_terms_id, cohead_shipvia,cohead_shipto_id,cohead_shiptoname, cohead_shiptoaddress1,cohead_shiptoaddress2,cohead_shiptoaddress3, cohead_shiptocity,cohead_shiptostate,cohead_shiptozipcode, cohead_shiptocountry,cohead_freight,cohead_shiptophone, cohead_shipto_cntct_id, cohead_shipto_cntct_honorific, cohead_shipto_cntct_first_name, cohead_shipto_cntct_middle, cohead_shipto_cntct_last_name, cohead_shipto_cntct_suffix, cohead_shipto_cntct_phone, cohead_shipto_cntct_title, cohead_shipto_cntct_fax, cohead_shipto_cntct_email, cohead_shipchrg_id, cohead_shipform_id,cohead_billtoname, cohead_billtoaddress1,cohead_billtoaddress2,cohead_billtoaddress3, cohead_billtocity,cohead_billtostate,cohead_billtozipcode, cohead_billtocountry,cohead_misc_accnt_id,cohead_misc_descrip, cohead_commission,cohead_holdtype,cohead_prj_id,cohead_shipcomplete, cohead_curr_id,cohead_taxzone_id,cohead_saletype_id,cohead_shipzone_id) SELECT _coheadid,fetchsonumber(),rahead_cust_id,rahead_custponumber, current_date,rahead_salesrep_id,COALESCE(cohead_terms_id,cust_terms_id), COALESCE(cohead_shipvia,cust_shipvia),rahead_shipto_id,rahead_shipto_name, rahead_shipto_address1,rahead_shipto_address2,rahead_shipto_address3, rahead_shipto_city,rahead_shipto_state,rahead_shipto_zipcode, rahead_shipto_country,0,COALESCE(cohead_shiptophone,''), cntct_id, cntct_honorific, cntct_first_name, cntct_middle, cntct_last_name, cntct_suffix, cntct_phone, cntct_title, cntct_fax, cntct_email, COALESCE(cohead_shipchrg_id,cust_shipchrg_id), COALESCE(cohead_shipform_id,cust_shipform_id), rahead_billtoname,rahead_billtoaddress1,rahead_billtoaddress2,rahead_billtoaddress3, rahead_billtocity,rahead_billtostate,rahead_billtozip, rahead_billtocountry,NULL,'',rahead_commission, 'N', rahead_prj_id, COALESCE(cohead_shipcomplete, CASE WHEN cust_partialship THEN false ELSE true END),rahead_curr_id,rahead_taxzone_id,rahead_saletype_id,rahead_shipzone_id FROM rahead JOIN custinfo ON (rahead_cust_id=cust_id) LEFT OUTER JOIN cohead ON (rahead_orig_cohead_id=cohead_id) LEFT OUTER JOIN shiptoinfo ON (rahead_shipto_id=shipto_id) LEFT OUTER JOIN cntct ON (shipto_cntct_id=cntct_id) WHERE (rahead_id=_ra.rahead_id); UPDATE rahead SET rahead_new_cohead_id=_coheadid WHERE rahead_id=_ra.rahead_id; END IF; -- Now enter the line item(s) IF (_ra.raitem_disposition IN ('P','V')) AND (_ra.raitem_new_coitem_id IS NULL) AND (_ra.raitem_qtyauthorized > 0) THEN SELECT nextval('coitem_coitem_id_seq') INTO _coitemid; SELECT COALESCE(MAX(coitem_linenumber),0)+1 INTO _linenumber FROM coitem WHERE (coitem_cohead_id=_coheadid); INSERT INTO coitem ( coitem_id,coitem_cohead_id,coitem_linenumber,coitem_itemsite_id, coitem_status,coitem_scheddate,coitem_promdate, coitem_qtyord, coitem_unitcost,coitem_price,coitem_custprice,coitem_qtyshipped, coitem_order_id,coitem_memo,coitem_qtyreturned, coitem_taxtype_id,coitem_qty_uom_id,coitem_qty_invuomratio, coitem_price_uom_id,coitem_price_invuomratio,coitem_warranty, coitem_cos_accnt_id,coitem_order_type, coitem_custpn) SELECT _coitemid,_coheadid,_linenumber,_ra.raitem_coitem_itemsite_id, 'O',_ra.raitem_scheddate,_ra.raitem_scheddate,_ra.raitem_qtyauthorized, stdcost(itemsite_item_id),COALESCE(_ra.raitem_saleprice,0),0,0, -1,_ra.raitem_notes,0, _ra.raitem_taxtype_id,_ra.raitem_qty_uom_id,_ra.raitem_qty_invuomratio, _ra.raitem_price_uom_id,_ra.raitem_price_invuomratio,_ra.raitem_warranty, _ra.raitem_cos_accnt_id, CASE WHEN itemsite_createwo THEN 'W' ELSE NULL END, _ra.raitem_custpn FROM itemsite WHERE (itemsite_id=_ra.raitem_coitem_itemsite_id); UPDATE raitem SET raitem_new_coitem_id=_coitemid WHERE (raitem_id=_ra.raitem_id); END IF; -- Create items to ship that have no direct relation to receipts. IF (_ship) THEN FOR _i IN SELECT raitem_id FROM raitem WHERE ((raitem_rahead_id=_ra.rahead_id) AND (raitem_disposition = 'S') AND (raitem_new_coitem_id IS NULL)) LOOP SELECT nextval('coitem_coitem_id_seq') INTO _coitemid; SELECT COALESCE(MAX(coitem_linenumber),0)+1 INTO _linenumber FROM coitem WHERE (coitem_cohead_id=_coheadid); INSERT INTO coitem ( coitem_id,coitem_cohead_id,coitem_linenumber,coitem_itemsite_id, coitem_status,coitem_scheddate,coitem_promdate, coitem_qtyord, coitem_unitcost,coitem_price,coitem_custprice,coitem_qtyshipped, coitem_order_id,coitem_memo,coitem_qtyreturned, coitem_taxtype_id,coitem_qty_uom_id,coitem_qty_invuomratio, coitem_price_uom_id,coitem_price_invuomratio,coitem_warranty, coitem_cos_accnt_id,coitem_order_type,coitem_custpn) SELECT _coitemid,_coheadid,_linenumber,raitem_coitem_itemsite_id, 'O',raitem_scheddate,raitem_scheddate,raitem_qtyauthorized, stdcost(itemsite_item_id),COALESCE(raitem_saleprice,0),0,0, -1,raitem_notes,0, raitem_taxtype_id,raitem_qty_uom_id,raitem_qty_invuomratio, raitem_price_uom_id,raitem_price_invuomratio,raitem_warranty, raitem_cos_accnt_id, CASE WHEN itemsite_createwo THEN 'W' ELSE NULL END,raitem_custpn FROM raitem JOIN itemsite ON (itemsite_id=raitem_itemsite_id) WHERE (raitem_id=_i.raitem_id); UPDATE raitem SET raitem_new_coitem_id=_coitemid WHERE (raitem_id=_i.raitem_id); END LOOP; END IF; END IF; ELSIF (_r.recv_order_type = 'TO' AND fetchMetricBool('MultiWhs')) THEN SELECT interWarehouseTransfer(toitem_item_id, tohead_trns_warehous_id, tohead_dest_warehous_id, _r.recv_qty, 'TO', formatToNumber(toitem_id), 'Receive from Transit To Dest Warehouse', _itemlocSeries, _glDate ) INTO _tmp FROM tohead, toitem WHERE ((tohead_id=toitem_tohead_id) AND (toitem_id=_r.recv_orderitem_id)); IF (_tmp < 0) THEN RETURN _tmp; END IF; SELECT insertGLTransaction(fetchJournalNumber('GL-MISC'), 'S/R', _r.recv_order_type, _o.orderhead_number, 'Receive Inventory Freight from ' || _o.orderhead_number || ' for item ' || _r.item_number, costcat_toliability_accnt_id, costcat_freight_accnt_id, -1, _r.recv_freight_base, _glDate::DATE, false ), costcat_freight_accnt_id INTO _tmp, _freightAccnt FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id) ); IF (_tmp < 0 AND _tmp != -3) THEN -- error but not 0-value transaction RETURN _tmp; ELSE -- Posting to trial balance is deferred to prevent locking INSERT INTO itemlocpost ( itemlocpost_glseq, itemlocpost_itemlocseries) VALUES ( _tmp, _itemlocSeries ); END IF; UPDATE toitem SET toitem_qty_received = (toitem_qty_received + _r.recv_qty), toitem_freight_received = (toitem_freight_received + currToCurr(_r.recv_freight_curr_id, toitem_freight_curr_id, _r.recv_freight, _glDate::DATE)) WHERE (toitem_id=_o.orderitem_id); END IF; IF(_r.itemsite_costmethod='A') THEN _recvvalue := ROUND((_o.item_unitprice_base * _r.recv_qty),2); ELSIF (fetchMetricBool('RecordPPVonReceipt')) THEN _recvvalue := ROUND((_o.item_unitprice_base * _r.recv_qty), 2); ELSE _recvvalue := ROUND(stdcost(_r.itemsite_item_id) * _recvinvqty, 2); END IF; END IF; UPDATE recv SET recv_value=_recvvalue, recv_recvcost=_recvvalue / recv_qty, recv_posted=TRUE, recv_gldistdate=_glDate::DATE WHERE (recv_id=precvid); IF (_r.recv_order_type = 'PO') THEN -- If this is a drop-shipped PO, then Issue the item to Shipping and Ship the item IF (_o.pohead_dropship = TRUE) THEN -- Generate the PoItemDropShipped event INSERT INTO evntlog ( evntlog_evnttime, evntlog_username, evntlog_evnttype_id, evntlog_ordtype, evntlog_ord_id, evntlog_warehous_id, evntlog_number ) SELECT CURRENT_TIMESTAMP, evntnot_username, evnttype_id, 'P', _o.orderitem_id, evntnot_warehous_id, (pohead_number || '-' || poitem_linenumber || ': ' || item_number) FROM evntnot JOIN evnttype ON (evntnot_evnttype_id = evnttype_id) JOIN itemsite ON (evntnot_warehous_id = itemsite_warehous_id) JOIN item ON (itemsite_item_id = item_id) JOIN poitem ON (poitem_itemsite_id = itemsite_id) JOIN pohead ON (poitem_pohead_id = pohead_id) WHERE( (poitem_id = _o.orderitem_id) AND (poitem_duedate <= (CURRENT_DATE + itemsite_eventfence)) AND (evnttype_name = 'PoItemDropShipped') ); END IF; END IF; RETURN _itemlocSeries; END; $_$; 4DROP FUNCTION public.postreceipt(integer, integer); publicadminfalse8399212551692576$postreceipts(text, integer, integer)FUNCTIONCREATE FUNCTION postreceipts(text, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; porderid ALIAS FOR $2; _itemlocSeries INTEGER := $3; _qtyToRecv NUMERIC; _r RECORD; BEGIN SELECT SUM(qtyToReceive(pordertype, recv_orderitem_id)) INTO _qtyToRecv FROM recv, orderitem WHERE ((recv_orderitem_id=orderitem_id) AND (recv_order_type=pordertype) AND (orderitem_orderhead_type=pordertype) AND (orderitem_orderhead_id=porderid)); IF (_qtyToRecv <= 0) THEN RETURN -11; END IF; IF (_itemlocSeries IS NULL OR _itemlocSeries <= 0) THEN _itemlocSeries := NEXTVAL('itemloc_series_seq'); END IF; FOR _r IN SELECT postReceipt(recv_id, _itemlocSeries) AS postResult FROM recv, orderitem WHERE ((recv_orderitem_id=orderitem_id) AND (orderitem_orderhead_id=porderid) AND (orderitem_orderhead_type=pordertype) AND (NOT recv_posted) -- Check for multiple users receiving the same order AND (recv_trans_usr_name=getEffectiveXtUser()) AND (recv_order_type=pordertype)) LOOP IF (_r.postResult < 0 AND _r.postResult != -11) THEN RETURN _r.postResult; -- fail on 1st error but ignore lines with qty == 0 END IF; END LOOP; RETURN _itemlocSeries; END; $_$; ;DROP FUNCTION public.postreceipts(text, integer, integer); publicadminfalse8399212551692577postsogltransactions()FUNCTIONCREATE FUNCTION postsogltransactions() RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN UPDATE gltrans SET gltrans_exported=TRUE WHERE ( (NOT gltrans_exported) AND (gltrans_source='A/R') AND (gltrans_doctype IN ('IN', 'CM')) ); RETURN TRUE; END; $$; -DROP FUNCTION public.postsogltransactions(); publicadminfalse83992125516925787postsoitemproduction(integer, timestamp with time zone)FUNCTIONACREATE FUNCTION postsoitemproduction(integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoitemId ALIAS FOR $1; pGlDistTS ALIAS FOR $2; _qty NUMERIC; BEGIN -- Issuing all, so determine line balance SELECT noNeg( coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned - ( SELECT COALESCE(SUM(shipitem_qty), 0) FROM shipitem, shiphead WHERE ((shipitem_orderitem_id=coitem_id) AND (shipitem_shiphead_id=shiphead_id) AND (NOT shiphead_shipped) ) ) ) INTO _qty FROM coitem WHERE (coitem_id=pSoitemId); RETURN postSoItemProduction($1, _qty, $2); END; $_$; NDROP FUNCTION public.postsoitemproduction(integer, timestamp with time zone); publicadminfalse83992$12551692579@postsoitemproduction(integer, numeric, timestamp with time zone)FUNCTIONCREATE FUNCTION postsoitemproduction(integer, numeric, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoitemId ALIAS FOR $1; pQty ALIAS FOR $2; pGlDistTS ALIAS FOR $3; _itemlocSeries INTEGER := 0; BEGIN --If this cost method is not Job then we are using the wrong function IF (NOT EXISTS(SELECT itemsite_costmethod FROM coitem,itemsite WHERE ((coitem_id=pSoitemId) AND (coitem_itemsite_id=itemsite_id) AND (itemsite_costmethod = 'J')))) THEN RAISE EXCEPTION 'The postSoLineBalanceProduction function may only be used with Job costed item sites'; END IF; IF (pQty > 0) THEN SELECT COALESCE(postProduction(wo_id, (pQty * coitem_qty_invuomratio), true, 0, pGlDistTS),-1) INTO _itemlocSeries FROM wo, coitem WHERE ((wo_ordid=pSoItemid) AND (wo_ordtype='S') AND (coitem_id=pSoItemid)); UPDATE wo SET wo_status = 'C' WHERE ((wo_ordid=pSoItemid) AND (wo_ordtype='S') AND (wo_qtyrcv >= wo_qtyord)); END IF; RETURN _itemlocSeries; END; $_$; WDROP FUNCTION public.postsoitemproduction(integer, numeric, timestamp with time zone); publicadminfalse8399212551692580"poststandardjournal(integer, date)FUNCTIONCREATE FUNCTION poststandardjournal(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStdjrnlid ALIAS FOR $1; pDate ALIAS FOR $2; _returnValue INTEGER; BEGIN SELECT postStandardJournal(pStdjrnlid, pDate, FALSE, fetchGLSequence()) INTO _returnValue; RETURN _returnValue; END; $_$; 9DROP FUNCTION public.poststandardjournal(integer, date); publicadminfalse8399212551692581+poststandardjournal(integer, date, integer)FUNCTIONCREATE FUNCTION poststandardjournal(integer, date, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStdjrnlid ALIAS FOR $1; pDate ALIAS FOR $2; pGlSequence ALIAS FOR $3; BEGIN RETURN postStandardJournal(pStdjrnlid, pDate, FALSE, pGLSequence); END; $_$; BDROP FUNCTION public.poststandardjournal(integer, date, integer); publicadminfalse8399212551692582+poststandardjournal(integer, date, boolean)FUNCTIONCREATE FUNCTION poststandardjournal(integer, date, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStdjrnlid ALIAS FOR $1; pDate ALIAS FOR $2; pReverse ALIAS FOR $3; _returnValue INTEGER; BEGIN RETURN postStandardJournal(pStdjrnlid, pDate, pReverse, fetchGLSequence()); END; $_$; BDROP FUNCTION public.poststandardjournal(integer, date, boolean); publicadminfalse83992%125516925834poststandardjournal(integer, date, boolean, integer)FUNCTIONCREATE FUNCTION poststandardjournal(integer, date, boolean, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStdjrnlid ALIAS FOR $1; pDate ALIAS FOR $2; pReverse ALIAS FOR $3; pGlSequence ALIAS FOR $4; BEGIN INSERT INTO glseries ( glseries_sequence, glseries_source, glseries_doctype, glseries_docnumber, glseries_notes, glseries_accnt_id, glseries_amount, glseries_distdate ) SELECT pGlSequence, 'G/L', 'ST', stdjrnl_name, stdjrnlitem_notes, stdjrnlitem_accnt_id, CASE WHEN (pReverse=TRUE) THEN (stdjrnlitem_amount * -1) ELSE stdjrnlitem_amount END, pDate FROM stdjrnlitem, stdjrnl WHERE ( (stdjrnlitem_stdjrnl_id=stdjrnl_id) AND (stdjrnl_id=pStdjrnlid) ); RETURN pGlSequence; END; $_$; KDROP FUNCTION public.poststandardjournal(integer, date, boolean, integer); publicadminfalse83992&12551692584'poststandardjournalgroup(integer, date)FUNCTIONtCREATE FUNCTION poststandardjournalgroup(integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStdjrnlgrpid ALIAS FOR $1; pDate ALIAS FOR $2; BEGIN RETURN postStandardJournalGroup(pStdjrnlgrpid, pDate, FALSE); END; $_$; >DROP FUNCTION public.poststandardjournalgroup(integer, date); publicadminfalse83992'125516925850poststandardjournalgroup(integer, date, boolean)FUNCTIONmCREATE FUNCTION poststandardjournalgroup(integer, date, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStdjrnlgrpid ALIAS FOR $1; pDate ALIAS FOR $2; pReverse ALIAS FOR $3; _r RECORD; _glSequence INTEGER := -1; BEGIN FOR _r IN SELECT stdjrnlgrpitem_id, stdjrnlgrpitem_stdjrnl_id FROM stdjrnlgrpitem WHERE ( (stdjrnlgrpitem_stdjrnlgrp_id=pStdjrnlgrpid) AND (CURRENT_DATE BETWEEN stdjrnlgrpitem_effective AND (stdjrnlgrpitem_expires - 1)) AND ( (stdjrnlgrpitem_toapply = -1) OR (stdjrnlgrpitem_toapply > stdjrnlgrpitem_applied) ) ) LOOP IF (_glSequence = -1) THEN SELECT fetchGLSequence() INTO _glSequence; END IF; PERFORM postStandardJournal(_r.stdjrnlgrpitem_stdjrnl_id, pDate, pReverse, _glSequence); UPDATE stdjrnlgrpitem SET stdjrnlgrpitem_applied=(stdjrnlgrpitem_applied + 1) WHERE (stdjrnlgrpitem_id=_r.stdjrnlgrpitem_id); END LOOP; RETURN _glSequence; END; $_$; GDROP FUNCTION public.poststandardjournalgroup(integer, date, boolean); publicadminfalse83992)12551692586Jpostvalueintoinvbalance(integer, date, numeric, numeric, numeric, numeric)FUNCTION1 CREATE FUNCTION postvalueintoinvbalance(integer, date, numeric, numeric, numeric, numeric) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteId ALIAS FOR $1; pDate ALIAS FOR $2; pQoh ALIAS FOR $3; pNn ALIAS FOR $4; pOldCost ALIAS FOR $5; pNewCost ALIAS FOR $6; _invbalid INTEGER; _r RECORD; _count INTEGER; _valChange NUMERIC; _nnvalChange NUMERIC; BEGIN -- Grab the costhist record to post SELECT period_id INTO _r FROM period WHERE (pDate BETWEEN period_start AND period_end); GET DIAGNOSTICS _count = ROW_COUNT; -- Find an inventory balance to post into IF ( _count > 0 ) THEN -- Try to find an existing invbal SELECT invbal_id INTO _invbalid FROM invbal WHERE ( (invbal_period_id=_r.period_id) AND (invbal_itemsite_id=pItemsiteId) ); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count = 0) THEN -- Wasn't there, so forward update PERFORM forwardUpdateItemsite(pItemsiteId); -- Try to find an existing invbal again SELECT invbal_id INTO _invbalid FROM invbal WHERE ( (invbal_period_id=_r.period_id) AND (invbal_itemsite_id=pItemsiteId) ); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count = 0) THEN RAISE EXCEPTION 'An inventory balance record was not found for updating standard costs'; END IF; END IF; _valChange := round((pNewCost - pOldCost) * pQoh, 2); _nnvalChange := round((pNewCost - pOldCost) * pNn, 2); -- We found an invbal, update it with the change IF (_valChange > 0) THEN UPDATE invbal SET invbal_value_in = (invbal_value_in + _valChange) WHERE (invbal_id=_invbalid); ELSE UPDATE invbal SET invbal_value_out = (invbal_value_out - _valChange) WHERE (invbal_id=_invbalid); END IF; IF (_nnvalChange > 0) THEN UPDATE invbal SET invbal_nnval_in = (invbal_nnval_in + _nnvalChange) WHERE (invbal_id=_invbalid); ELSE UPDATE invbal SET invbal_nnval_out = (invbal_nnval_out - _nnvalChange) WHERE (invbal_id=_invbalid); END IF; UPDATE invbal SET invbal_value_ending = (invbal_value_beginning + invbal_value_in - invbal_value_out), invbal_nnval_ending = (invbal_nnval_beginning + invbal_nnval_in - invbal_nnval_out), invbal_dirty=true WHERE (invbal_id=_invbalid); ELSE RAISE EXCEPTION 'No period exists for date %.', pDate; END IF; RETURN TRUE; END; $_$; aDROP FUNCTION public.postvalueintoinvbalance(integer, date, numeric, numeric, numeric, numeric); publicadminfalse8399212551692587postvoucher(integer, boolean)FUNCTIONvCREATE FUNCTION postvoucher(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVoheadid ALIAS FOR $1; pPostCosts ALIAS FOR $2; BEGIN RETURN postVoucher(pVoheadid, fetchJournalNumber('AP-VO'), pPostCosts); END; $_$; 4DROP FUNCTION public.postvoucher(integer, boolean); publicadminfalse8399212551692588&postvoucher(integer, integer, boolean)FUNCTIONDCREATE FUNCTION postvoucher(integer, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVoheadid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pPostCosts ALIAS FOR $3; _sequence INTEGER; _totalAmount_base NUMERIC; _totalAmount NUMERIC; _itemAmount_base NUMERIC; _itemAmount NUMERIC; _totalDiscountableAmount NUMERIC; _test INTEGER; _a RECORD; _d RECORD; _g RECORD; _p RECORD; _r RECORD; _costx RECORD; _pPostCosts BOOLEAN; _pExplain BOOLEAN; _pLowLevel BOOLEAN; _exchGainFreight NUMERIC; _taxBaseValue NUMERIC; _firstExchDateFreight DATE; _tmpTotal NUMERIC; _glDate DATE; BEGIN RAISE DEBUG 'postVoucher(%, %, %)', pVoheadid, pJournalNumber, pPostCosts; _pPostCosts := TRUE; _totalAmount_base := 0; _totalAmount := 0; _totalDiscountableAmount := 0; SELECT fetchGLSequence() INTO _sequence; -- Cache Voucher Infomation SELECT vohead.*, vend_number || '-' || vend_name || ' ' || vohead_reference AS glnotes, COALESCE(pohead_orderdate, vohead_docdate) AS pohead_orderdate, COALESCE(pohead_curr_id, vohead_curr_id) AS pohead_curr_id INTO _p FROM vendinfo, vohead LEFT OUTER JOIN pohead ON (vohead_pohead_id = pohead_id) WHERE ( (vohead_id=pVoheadid) AND (vend_id=vohead_vend_id) ) FOR UPDATE OF vohead; IF (_p.vohead_posted) THEN RAISE EXCEPTION 'Cannot post Voucher #% as it is already posted [xtuple: postVoucher, -10, %]', _p.vohead_number, _p.vohead_number; END IF; _glDate := COALESCE(_p.vohead_gldistdate, _p.vohead_distdate); -- If the vohead_distdate is NULL, assume that this is a NULL vohead and quietly delete it IF (_p.vohead_distdate IS NULL) THEN DELETE FROM vohead WHERE vohead_id = pVoheadid; RETURN 0; END IF; IF (_p.vohead_amount <= 0) THEN RAISE EXCEPTION 'Cannot Post Voucher #% for a negative or zero amount (%) [xtuple: postVoucher, -1, %, %]', _p.vohead_number, _p.vohead_amount, _p.vohead_number, _p.vohead_amount; END IF; -- there is no currency gain/loss on items, see issue 3892, -- but there might be on freight, which is first encountered at p/o receipt SELECT recv_date::DATE INTO _firstExchDateFreight FROM recv WHERE (recv_vohead_id = pVoheadid); SELECT round(SUM(amount),4) INTO _tmpTotal FROM ( SELECT SUM(vodist_amount) AS amount FROM vodist WHERE ( (vodist_vohead_id=pVoheadid) AND (vodist_tax_id=-1) ) UNION ALL SELECT SUM(voitem_freight) AS amount FROM voitem WHERE (voitem_vohead_id=pVoheadid) UNION ALL SELECT SUM(tax*-1) FROM (SELECT round(sum(taxdetail_tax),2) AS tax, currToBase(_p.vohead_curr_id, round(sum(taxdetail_tax),2), _p.vohead_docdate) AS taxbasevalue FROM tax JOIN calculateTaxDetailSummary('VO', pVoheadid, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id, tax_sales_accnt_id ) AS taxdata ) AS data; IF (_tmpTotal IS NULL OR _tmpTotal <= 0) THEN RAISE EXCEPTION 'Cannot Post Voucher #% with negative or zero distributions (%) [xtuple: postVoucher, -2, %, %]', _p.vohead_number, _tmpTotal, _p.vohead_number, _tmpTotal; END IF; IF (_tmpTotal > _p.vohead_amount) THEN RAISE EXCEPTION 'Cannot Post Voucher #% with distributions greater than the voucher amount (% > %) [xtuple: postVoucher, -3, %, %, %]', _p.vohead_number, _tmpTotal, _p.vohead_amount, _p.vohead_number, _tmpTotal, _p.vohead_amount; END IF; IF (_tmpTotal < _p.vohead_amount) THEN RAISE EXCEPTION 'Cannot Post Voucher #% with distributions less than the voucher amount (% < %) [xtuple: postVoucher, -4, %, %, %]', _p.vohead_number, _tmpTotal, _p.vohead_amount, _p.vohead_number, _tmpTotal, _p.vohead_amount; END IF; SELECT DISTINCT poitem_linenumber INTO _test FROM vodist, voitem, poitem WHERE ( (vodist_poitem_id=poitem_id) AND (voitem_poitem_id=poitem_id) AND (voitem_vohead_id=vodist_vohead_id) AND ((poitem_qty_received - poitem_qty_vouchered) = 0) AND (vodist_vohead_id=pVoheadid) ) LIMIT 1; IF (FOUND) THEN RAISE EXCEPTION 'Cannot Post Voucher #% as one or more of the line items have already been fully vouchered. Check P/O Line #% [postVoucher, -6, %, %]', _p.vohead_number, _test, _p.vohead_number, _test; END IF; -- Start by handling taxes FOR _r IN SELECT tax_sales_accnt_id, round(sum(taxdetail_tax),2) AS tax, currToBase(_p.vohead_curr_id, round(sum(taxdetail_tax),2), _p.vohead_docdate) AS taxbasevalue FROM tax JOIN calculateTaxDetailSummary('VO', pVoheadid, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id, tax_sales_accnt_id LOOP PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', _p.vohead_number, _r.tax_sales_accnt_id, _r.taxbasevalue, _glDate, _p.glnotes ); RAISE DEBUG 'postVoucher: _r.tax=%', _r.tax; _totalAmount_base := (_totalAmount_base - _r.taxbasevalue); _totalAmount := (_totalAmount - _r.tax); END LOOP; -- Update item tax records with posting data UPDATE voitemtax SET taxhist_docdate=_p.vohead_docdate, taxhist_distdate=_glDate, taxhist_curr_id=_p.vohead_curr_id, taxhist_curr_rate=curr_rate, taxhist_journalnumber=pJournalNumber FROM vohead JOIN voitem ON (vohead_id=voitem_vohead_id), curr_rate WHERE ((vohead_id=pVoheadId) AND (taxhist_parent_id=voitem_id) AND (_p.vohead_curr_id=curr_id) AND (_p.vohead_docdate BETWEEN curr_effective AND curr_expires) ); -- Update Misc distributions with posting data UPDATE voheadtax SET taxhist_docdate=_p.vohead_docdate, taxhist_distdate=_glDate, taxhist_curr_id=_p.vohead_curr_id, taxhist_curr_rate=curr_rate, taxhist_journalnumber=pJournalNumber FROM curr_rate WHERE ((taxhist_parent_id=pVoheadid) AND (_p.vohead_curr_id=curr_id) AND (_p.vohead_docdate BETWEEN curr_effective AND curr_expires) ); -- Loop through the vodist records for the passed vohead that -- are posted against a P/O Item FOR _g IN SELECT DISTINCT poitem_id, voitem_id, voitem_qty, poitem_expcat_id, poitem_invvenduomratio, poitem_prj_id, COALESCE(itemsite_id, -1) AS itemsiteid, COALESCE(itemsite_costcat_id, -1) AS costcatid, COALESCE(itemsite_item_id, -1) AS itemsite_item_id, (SELECT SUM(value) FROM ( SELECT SUM(recv_value) AS value FROM recv WHERE (recv_voitem_id=voitem_id) UNION SELECT SUM(poreject_value)*-1 AS value FROM poreject WHERE (poreject_voitem_id=voitem_id)) as data) AS value_base, (poitem_freight_received - poitem_freight_vouchered) / (poitem_qty_received - poitem_qty_vouchered) * voitem_qty AS vouchered_freight, currToBase(_p.pohead_curr_id, (poitem_freight_received - poitem_freight_vouchered) / (poitem_qty_received - poitem_qty_vouchered) * voitem_qty, _firstExchDateFreight ) AS vouchered_freight_base, voitem_freight, currToBase(_p.vohead_curr_id, voitem_freight, _p.vohead_distdate) AS voitem_freight_base FROM vodist, voitem, poitem LEFT OUTER JOIN itemsite ON (poitem_itemsite_id=itemsite_id) WHERE ( (vodist_poitem_id=poitem_id) AND (voitem_poitem_id=poitem_id) AND (voitem_vohead_id=vodist_vohead_id) AND (vodist_vohead_id=pVoheadid)) LOOP -- Grab the G/L Accounts IF (_g.costcatid = -1) THEN SELECT getPrjAccntId(_g.poitem_prj_id, pp.accnt_id) AS pp_accnt_id, lb.accnt_id AS lb_accnt_id, fr.accnt_id AS freight_accnt_id INTO _a FROM expcat, accnt AS pp, accnt AS lb, accnt AS fr WHERE ( (expcat_purchprice_accnt_id=pp.accnt_id) AND (expcat_liability_accnt_id=lb.accnt_id) AND (expcat_freight_accnt_id=fr.accnt_id) AND (expcat_id=_g.poitem_expcat_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Post Voucher #% due to unassigned G/L Accounts [xtuple: postVoucher, -7, %]', _p.vohead_number, _p.vohead_number; END IF; ELSE SELECT getPrjAccntId(_g.poitem_prj_id, costcat_purchprice_accnt_id) AS pp_accnt_id, getPrjAccntId(_g.poitem_prj_id, costcat_liability_accnt_id) AS lb_accnt_id, getPrjAccntId(_g.poitem_prj_id, costcat_freight_accnt_id) AS freight_accnt_id INTO _a FROM costcat WHERE (costcat_id=_g.costcatid); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Post Voucher #% due to unassigned G/L Accounts [xtuple: postVoucher, -8, %]', _p.vohead_number, _p.vohead_number; END IF; END IF; -- Clear the Item Amount accumulator _itemAmount_base := 0; _itemAmount := 0; -- Figure out the total posted value for this line item FOR _d IN SELECT vodist_id, vodist_amount, vodist_discountable, _p.vohead_curr_id, vodist_costelem_id, currToBase(_p.vohead_curr_id, vodist_amount, _p.vohead_distdate) AS vodist_amount_base FROM vodist WHERE ( (vodist_vohead_id=pVoheadid) AND (vodist_poitem_id=_g.poitem_id) ) LOOP _pExplain := FALSE; SELECT * INTO _costx FROM itemcost WHERE ( (itemcost_item_id = _g.itemsite_item_id) AND (itemcost_costelem_id = _d.vodist_costelem_id) ); IF (FOUND) THEN _pExplain := _costx.itemcost_lowlevel; END IF; -- Post the cost to the Actual if requested -- IF ( (pPostCosts) AND (_d.vodist_costelem_id <> -1) ) THEN IF ( (_d.vodist_costelem_id <> -1) AND (_g.itemsite_item_id <> -1) ) THEN PERFORM updateCost( _g.itemsite_item_id, _d.vodist_costelem_id, _pExplain, (_d.vodist_amount / (_g.voitem_qty * _g.poitem_invvenduomratio)), _p.vohead_curr_id ); END IF; -- Add the Distribution Amount to the Item Amount RAISE DEBUG 'postVoucher: _d.vodist_amount=%', _d.vodist_amount; _itemAmount_base := _itemAmount_base + ROUND(_d.vodist_amount_base, 2); _itemAmount := _itemAmount + _d.vodist_amount; IF (_d.vodist_discountable) THEN _totalDiscountableAmount := (_totalDiscountableAmount + _d.vodist_amount); END IF; END LOOP; -- Distribute from the clearing account PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), _a.lb_accnt_id, round(_g.value_base + _g.vouchered_freight_base, 2) * -1, _glDate, _p.glnotes ); -- Attribute the correct portion to currency gain/loss _exchGainFreight := 0; SELECT currGain(_p.pohead_curr_id, _g.vouchered_freight, _firstExchDateFreight, _p.vohead_distdate ) INTO _exchGainFreight; IF (round(_exchGainFreight, 2) <> 0) THEN PERFORM insertIntoGLSeries(_sequence, 'A/P', 'VO', text(_p.vohead_number), getGainLossAccntId(_a.lb_accnt_id), round(_exchGainFreight, 2), _glDate, _p.glnotes); END IF; -- Distribute the remaining variance to the Purchase Price Variance account IF (round(_itemAmount_base, 2) <> round(_g.value_base, 2)) THEN _tmpTotal := round(_itemAmount_base, 2) - round(_g.value_base, 2); PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), _a.pp_accnt_id, _tmpTotal * -1, _glDate, _p.glnotes ); END IF; -- Distribute the remaining freight variance to the Purchase Price Variance account IF (round(_g.voitem_freight_base + _exchGainFreight, 2) <> round(_g.vouchered_freight_base, 2)) THEN _tmpTotal := round(_g.voitem_freight_base + _exchGainFreight, 2) - round(_g.vouchered_freight_base, 2); PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), _a.freight_accnt_id, _tmpTotal * -1, _glDate, _p.glnotes ); END IF; -- Add the distribution amount to the total amount to distribute RAISE DEBUG 'postVoucher: _itemAmount=%', _itemAmount; _totalAmount_base := (_totalAmount_base + _itemAmount_base + _g.voitem_freight_base); _totalAmount := (_totalAmount + _itemAmount + _g.voitem_freight); -- Post all the Tagged Receivings for this P/O Item as Invoiced and -- record the purchase and receive costs -- Comment out because recv cost is set at receiving now. UPDATE recv SET recv_invoiced=TRUE, recv_recvcost_curr_id=basecurrid(), recv_recvcost=round(_g.value_base / _g.voitem_qty, 2) FROM poitem WHERE ((recv_orderitem_id=poitem_id) AND (recv_order_type='PO') AND (recv_orderitem_id=_g.poitem_id) AND (recv_vohead_id=pVoheadid) ); -- Post all the Tagged Rejections for this P/O Item as Invoiced UPDATE poreject SET poreject_invoiced=TRUE WHERE ( (poreject_poitem_id=_g.poitem_id) AND (poreject_vohead_id=pVoheadid) ); -- Update the qty and freight vouchered fields UPDATE poitem SET poitem_qty_vouchered = (poitem_qty_vouchered + _g.voitem_qty), poitem_freight_vouchered = (poitem_freight_vouchered + _g.vouchered_freight) WHERE (poitem_id=_g.poitem_id); END LOOP; -- Loop through the vodist records for the passed vohead that -- are not posted against a P/O Item -- Skip the tax distributions FOR _d IN SELECT vodist_id, vodist_discountable, currToBase(_p.vohead_curr_id, vodist_amount, _p.vohead_distdate) AS vodist_amount_base, vodist_amount, vodist_accnt_id, vodist_expcat_id FROM vodist WHERE ( (vodist_vohead_id=pVoheadid) AND (vodist_poitem_id=-1) AND (vodist_tax_id=-1) ) LOOP -- Distribute from the misc. account IF (_d.vodist_accnt_id = -1) THEN PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), expcat_exp_accnt_id, round(_d.vodist_amount_base, 2) * -1, _glDate, _p.glnotes ) FROM expcat WHERE (expcat_id=_d.vodist_expcat_id); ELSE PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), _d.vodist_accnt_id, round(_d.vodist_amount_base, 2) * -1, _glDate, _p.glnotes ); END IF; -- Add the Distribution Amount to the Total Amount RAISE DEBUG 'postVoucher: _d.vodist_amount=%', _d.vodist_amount; _totalAmount_base := _totalAmount_base + ROUND(_d.vodist_amount_base, 2); _totalAmount := _totalAmount + _d.vodist_amount; IF (_d.vodist_discountable) THEN _totalDiscountableAmount := (_totalDiscountableAmount + _d.vodist_amount); END IF; END LOOP; SELECT insertIntoGLSeries( _sequence, 'A/P', 'VO', text(vohead_number), accnt_id, round(_totalAmount_base, 2), _glDate, _p.glnotes ) INTO _test FROM vohead LEFT OUTER JOIN accnt ON (accnt_id=findAPAccount(vohead_vend_id)) WHERE ( (findAPAccount(vohead_vend_id)=0 OR accnt_id > 0) -- G/L interface might be disabled AND (vohead_id=pVoheadid) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Post Voucher #% due to an unassigned A/P Account [xtuple: postVoucher, -9, %]', _p.vohead_number, _p.vohead_number; END IF; PERFORM postGLSeries(_sequence, pJournalNumber); -- Create the A/P Open Item RAISE DEBUG 'postVoucher: _totalAmount=%, _totalDiscountableAmount=%', _totalAmount, _totalDiscountableAmount; INSERT INTO apopen ( apopen_journalnumber, apopen_docdate, apopen_duedate, apopen_distdate, apopen_open, apopen_terms_id, apopen_vend_id, apopen_doctype, apopen_docnumber, apopen_invcnumber, apopen_ponumber, apopen_reference, apopen_amount, apopen_paid, apopen_notes, apopen_username, apopen_posted, apopen_curr_id, apopen_discountable_amount ) -- TODO: SELECT pJournalNumber, vohead_docdate, vohead_duedate, _glDate, TRUE, vohead_terms_id, vohead_vend_id, 'V', vohead_number, vohead_invcnumber, COALESCE(TEXT(pohead_number), 'Misc.'), vohead_reference, round(_totalAmount, 2), 0, '', getEffectiveXtUser(), FALSE, vohead_curr_id, round(_totalDiscountableAmount, 2) FROM vohead LEFT OUTER JOIN pohead ON (vohead_pohead_id=pohead_id) WHERE (vohead_id=pVoheadid); -- Close all of the P/O Items that should be closed by this Voucher UPDATE poitem SET poitem_status='C' FROM voitem WHERE ( (voitem_poitem_id=poitem_id) AND (voitem_close) AND (voitem_vohead_id=pVoheadid) ); -- Check the P/O items and if they are all closed go ahead -- and close the P/O head. IF ( (SELECT (count(*) < 1) FROM vohead, poitem WHERE ((vohead_pohead_id=poitem_pohead_id) AND (poitem_status<>'C') AND (vohead_id=pVoheadid) ) ) ) THEN PERFORM closePo(vohead_pohead_id) FROM vohead WHERE (vohead_id=pVoheadid); END IF; -- Set the vohead as posted UPDATE vohead SET vohead_posted=TRUE, vohead_gldistdate=_glDate WHERE (vohead_id=pVoheadid); RETURN pJournalNumber; END; $_$; =DROP FUNCTION public.postvoucher(integer, integer, boolean); publicadminfalse83992*12551692590postvouchers(boolean)FUNCTIONCREATE FUNCTION postvouchers(boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPostCosts ALIAS FOR $1; _journalNumber INTEGER; BEGIN SELECT fetchJournalNumber('AP-VO') INTO _journalNumber; PERFORM postVoucher(vohead_id, _journalNumber, pPostCosts) FROM vohead WHERE (NOT vohead_posted); RETURN _journalNumber; END; $_$; ,DROP FUNCTION public.postvouchers(boolean); publicadminfalse83992+12551692591primarykeyfields(text, text)FUNCTION@CREATE FUNCTION primarykeyfields(text, text) RETURNS text[] LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSchema ALIAS FOR $1; pRelation ALIAS FOR $2; _colname TEXT; _counter INTEGER := 0; _result TEXT[]; BEGIN EXECUTE 'SELECT ARRAY(SELECT attname FROM pg_attribute JOIN pg_class idx ON (attrelid = idx.oid) JOIN pg_namespace ON (idx.relnamespace = pg_namespace.oid) JOIN pg_index ON (idx.oid = indexrelid) JOIN pg_class tab ON (indrelid = tab.oid) WHERE NOT attisdropped AND nspname = ''' || pSchema || ''' AND indisprimary AND LOWER(tab.relname) = ''' || pRelation || ''' ORDER BY attnum);' INTO _result; RETURN _result; END; $_$; 3DROP FUNCTION public.primarykeyfields(text, text); publicadminfalse83992"00%FUNCTION primarykeyfields(text, text)COMMENTCOMMENT ON FUNCTION primarykeyfields(text, text) IS 'Return an array containing the names of the primary key fields of pSchema.pRelation. The first key field is in _result[1].'; publicadminfalse1835,12551692592prj()FUNCTION CREATE FUNCTION prj() RETURNS SETOF prj LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row prj%ROWTYPE; _priv TEXT; _grant BOOLEAN; BEGIN -- This query will give us the most permissive privilege the user has been granted SELECT privilege, granted INTO _priv, _grant FROM privgranted WHERE privilege IN ('MaintainAllProjects','ViewAllProjects','MaintainPersonalProjects','ViewPersonalProjects') ORDER BY granted DESC, sequence LIMIT 1; -- If have an 'All' privilege return all results IF (_priv ~ 'All' AND _grant) THEN FOR _row IN SELECT * FROM prj LOOP RETURN NEXT _row; END LOOP; -- Otherwise if have any other grant, must be personal privilege. ELSIF (_grant) THEN FOR _row IN SELECT * FROM prj WHERE getEffectiveXtUser() IN (prj_owner_username, prj_username) LOOP RETURN NEXT _row; END LOOP; END IF; RETURN; END; $$; DROP FUNCTION public.prj(); publicadminfalse839922713"00FUNCTION prj()COMMENToCOMMENT ON FUNCTION prj() IS 'A table function that returns Project results according to privilege settings.'; publicadminfalse183612591692593prjtaskTABLECREATE TABLE prjtask ( prjtask_id integer NOT NULL, prjtask_number text NOT NULL, prjtask_name text NOT NULL, prjtask_descrip text, prjtask_prj_id integer NOT NULL, prjtask_anyuser boolean, prjtask_status character(1) NOT NULL, prjtask_hours_budget numeric(18,6) NOT NULL, prjtask_hours_actual numeric(18,6) NOT NULL, prjtask_exp_budget numeric(16,4) NOT NULL, prjtask_exp_actual numeric(16,4) NOT NULL, prjtask_owner_username text, prjtask_start_date date, prjtask_due_date date, prjtask_assigned_date date, prjtask_completed_date date, prjtask_username text, CONSTRAINT prjtask_prjtask_status_check CHECK ((prjtask_status = ANY (ARRAY['P'::bpchar, 'O'::bpchar, 'C'::bpchar]))) ); DROP TABLE public.prjtask; publicadminfalse59458"00 TABLE prjtaskCOMMENT8COMMENT ON TABLE prjtask IS 'Project Task information'; publicadminfalse182"00prjtaskACLREVOKE ALL ON TABLE prjtask FROM PUBLIC; REVOKE ALL ON TABLE prjtask FROM admin; GRANT ALL ON TABLE prjtask TO admin; GRANT ALL ON TABLE prjtask TO xtrole; publicadminfalse182-12551692600 prjtask()FUNCTIONtCREATE FUNCTION prjtask() RETURNS SETOF prjtask LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row prjtask%ROWTYPE; _priv TEXT; _grant BOOLEAN; BEGIN -- This query will give us the most permissive privilege the user has been granted SELECT privilege, granted INTO _priv, _grant FROM privgranted WHERE privilege IN ('MaintainAllProjects','ViewAllProjects','MaintainPersonalProjects','ViewPersonalProjects') ORDER BY granted DESC, sequence LIMIT 1; -- If have an 'All' privilege return all results IF (_priv ~ 'All' AND _grant) THEN FOR _row IN SELECT * FROM prjtask LOOP RETURN NEXT _row; END LOOP; -- Otherwise if have any other grant, must be personal privilege. ELSIF (_grant) THEN FOR _row IN SELECT prjtask.* FROM prjtask JOIN prj ON prj_id=prjtask_prj_id WHERE getEffectiveXtUser() IN (prjtask_owner_username,prjtask_username,prj_username,prj_owner_username) LOOP RETURN NEXT _row; END LOOP; END IF; RETURN; END; $$; DROP FUNCTION public.prjtask(); publicadminfalse839922741"00FUNCTION prjtask()COMMENTsCOMMENT ON FUNCTION prjtask() IS 'A table function that returns Project results according to privilege settings.'; publicadminfalse183712551692601purgecreditmemos(date)FUNCTIONWCREATE FUNCTION purgecreditmemos(date) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCutoffDate ALIAS FOR $1; BEGIN DELETE FROM cmitem WHERE (cmitem_id IN ( SELECT cmitem_id FROM cmitem, cmhead WHERE ( (cmitem_cmhead_id=cmhead_id) AND (cmhead_posted) AND (cmhead_printed) AND (cmhead_docdate<=pCutoffDate) AND (checkCreditMemoSitePrivs(cmhead_id)) ) ) ); DELETE FROM cmhead WHERE ( (cmhead_posted) AND (cmhead_printed) AND (cmhead_docdate<=pCutoffDate) AND (checkCreditMemoSitePrivs(cmhead_id)) ); RETURN TRUE; END; $_$; -DROP FUNCTION public.purgecreditmemos(date); publicadminfalse83992.12551692602purgecrmacctmerge(integer)FUNCTION CREATE FUNCTION purgecrmacctmerge(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pDestid ALIAS FOR $1; _result INTEGER := 0; _tmpcount INTEGER := 0; BEGIN IF EXISTS(SELECT 1 FROM crmacctsel WHERE crmacctsel_dest_crmacct_id=pDestid) THEN DELETE FROM crmacctsel WHERE crmacctsel_dest_crmacct_id = pDestid; GET DIAGNOSTICS _result = ROW_COUNT; ELSIF EXISTS(SELECT 1 FROM mrgundo WHERE mrgundo_base_schema='public' AND mrgundo_base_table='crmacct' AND mrgundo_base_id=pDestid) THEN DELETE FROM crmacct WHERE crmacct_id IN ( SELECT mrgundo_pkey_id FROM mrgundo WHERE mrgundo_schema = 'public' AND mrgundo_table = 'crmacct' and mrgundo_pkey_col = 'crmacct_id' AND mrgundo_col IS NULL AND mrgundo_base_schema = 'public' AND mrgundo_base_table = 'crmacct' AND mrgundo_base_id = pDestid) AND crmacct_id != pDestid; GET DIAGNOSTICS _result = ROW_COUNT; DELETE FROM mrgundo WHERE mrgundo_base_schema ='public' AND mrgundo_base_table ='crmacct' AND mrgundo_base_id = pDestid; GET DIAGNOSTICS _tmpcount = ROW_COUNT; _result := _result + _tmpcount; END IF; RETURN _result; END; $_$; 1DROP FUNCTION public.purgecrmacctmerge(integer); publicadminfalse8399212551692603!purgeinvoicerecord(date, integer)FUNCTION!BCREATE FUNCTION purgeinvoicerecord(date, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCutoffDate ALIAS FOR $1; pInvcheadId ALIAS FOR $2; _r RECORD; _ra RECORD; _raheadid INTEGER; _result INTEGER; _debug BOOLEAN := FALSE; BEGIN -- Purge records where the entire Invoice, Billing, Shipper, Sales Order -- chain of associated documents are closed and complete FOR _r IN SELECT invchead_id, cobmisc_id, shiphead_id, ordershipped.cohead_id AS ordship_id, orderinvoiced.cohead_id AS ordinv_id FROM invchead LEFT OUTER JOIN invcitem ON (invcitem_invchead_id=invchead_id) LEFT OUTER JOIN cobmisc ON (cobmisc_invcnumber::TEXT=invchead_invcnumber) LEFT OUTER JOIN shipitem ON (shipitem_invcitem_id=invcitem_id) LEFT OUTER JOIN shiphead ON (shiphead_id=shipitem_shiphead_id) LEFT OUTER JOIN cohead ordershipped ON (ordershipped.cohead_id=shiphead_order_id) LEFT OUTER JOIN coitem ON (coitem_id=invcitem_coitem_id) LEFT OUTER JOIN cohead orderinvoiced ON (orderinvoiced.cohead_id=coitem_cohead_id) WHERE ( (invchead_id = pInvcheadId) AND (invchead_posted) AND (checkInvoiceSitePrivs(invchead_id)) ) GROUP BY invchead_id, cobmisc_id, shiphead_id, ordship_id, ordinv_id LOOP -- Check Billing -- Billing header (cobmisc) must be posted SELECT cobmisc_id INTO _result FROM cobmisc WHERE ( (cobmisc_id=_r.cobmisc_id) AND (NOT cobmisc_posted) ); IF (FOUND) THEN RETURN 'Billing not closed'; END IF; -- Billing line items (cobill), associated Invoice line items, and -- associated Sales Order line items must be closed, posted, and after cutoff date SELECT cobill_id INTO _result FROM cobill JOIN invcitem ON (invcitem_id=cobill_invcitem_id) JOIN invchead ON ( (invchead_id=invcitem_invchead_id) AND ((NOT invchead_posted) OR (invchead_invcdate > pCutoffDate)) ) JOIN coitem ON ( (coitem_id=cobill_coitem_id) AND (coitem_status NOT IN ('C', 'X')) ) WHERE (cobill_cobmisc_id=_r.cobmisc_id); IF (FOUND) THEN RETURN 'Invoice/Sales Order associated with Billing not closed'; END IF; -- Check Shipping -- Shipping header (shiphead) must be shipped SELECT shiphead_id INTO _result FROM shiphead WHERE ( (shiphead_id=_r.shiphead_id) AND (NOT shiphead_shipped) ); IF (FOUND) THEN RETURN 'Shipper not closed'; END IF; -- Shipping line items (shipitem) and associated Sales Order line items -- must be closed SELECT shiphead_id INTO _result FROM shiphead, cohead, coitem WHERE ( (shiphead_id=_r.shiphead_id) AND ( (shiphead_order_type='SO') AND (shiphead_order_id=cohead_id) ) AND (coitem_cohead_id=cohead_id) AND (coitem_status NOT IN ('C', 'X')) ); IF (FOUND) THEN RETURN 'Sales Order associated with Shipper not closed'; END IF; -- Shipping line items (shipitem) and associated Invoices must be posted -- and after cutoff date SELECT shiphead_id INTO _result FROM shiphead JOIN shipitem ON (shipitem_shiphead_id=shiphead_id) JOIN invcitem ON (invcitem_id=shipitem_invcitem_id) JOIN invchead ON ( (invchead_id=invcitem_invchead_id) AND ((NOT invchead_posted) OR (invchead_invcdate > pCutoffDate)) ) WHERE (shiphead_id=_r.shiphead_id); IF (FOUND) THEN RETURN 'Invoice associated with Shipper not closed'; END IF; -- Check Sales Order -- Sales Order line items (coitem) must be closed SELECT cohead_id INTO _result FROM cohead JOIN coitem ON ( (coitem_cohead_id=cohead_id) AND (coitem_status NOT IN ('C', 'X')) ) WHERE (cohead_id=_r.ordship_id); IF (FOUND) THEN RETURN 'Shipped Sales Order not closed'; END IF; SELECT cohead_id INTO _result FROM cohead JOIN coitem ON ( (coitem_cohead_id=cohead_id) AND (coitem_status NOT IN ('C', 'X')) ) WHERE (cohead_id=_r.ordinv_id); IF (FOUND) THEN RETURN 'Invoiced Sales Order not closed'; END IF; IF (fetchMetricBool('MultiWhs')) THEN -- Check Original Return Authorization and cross check to New Sales Order SELECT rahead_id INTO _result FROM rahead JOIN raitem ON ( (raitem_rahead_id=rahead_id) AND (raitem_status NOT IN ('C', 'X')) ) JOIN coitem ON ( (coitem_id=raitem_new_coitem_id) AND (coitem_status NOT IN ('C', 'X')) ) JOIN invcitem ON (invcitem_coitem_id=coitem_id) JOIN invchead ON ( (invchead_id=invcitem_invchead_id) AND ((NOT invchead_posted) OR (invchead_invcdate > pCutoffDate)) ) WHERE (rahead_orig_cohead_id=_r.ordship_id); IF (FOUND) THEN RETURN 'Shipped Original Return Authorization not closed'; END IF; SELECT rahead_id INTO _result FROM rahead JOIN raitem ON ( (raitem_rahead_id=rahead_id) AND (raitem_status NOT IN ('C', 'X')) ) JOIN coitem ON ( (coitem_id=raitem_new_coitem_id) AND (coitem_status NOT IN ('C', 'X')) ) JOIN invcitem ON (invcitem_coitem_id=coitem_id) JOIN invchead ON ( (invchead_id=invcitem_invchead_id) AND ((NOT invchead_posted) OR (invchead_invcdate > pCutoffDate)) ) WHERE (rahead_orig_cohead_id=_r.ordinv_id); IF (FOUND) THEN RETURN 'Invoiced Original Return Authorization not closed'; END IF; -- Check New Return Authorization SELECT rahead_id INTO _result FROM rahead JOIN raitem ON ( (raitem_rahead_id=rahead_id) AND (NOT raitem_status IN ('C', 'X')) ) JOIN coitem ON ( (coitem_id=raitem_orig_coitem_id) AND (NOT coitem_status IN ('C', 'X')) ) JOIN invcitem ON (invcitem_coitem_id=coitem_id) JOIN invchead ON ( (invchead_id=invcitem_invchead_id) AND ((NOT invchead_posted) OR (invchead_invcdate > pCutoffDate)) ) WHERE (rahead_new_cohead_id=_r.ordship_id); IF (FOUND) THEN RETURN 'Shipped New Return Authorization not closed'; END IF; SELECT rahead_id INTO _result FROM rahead JOIN raitem ON ( (raitem_rahead_id=rahead_id) AND (NOT raitem_status IN ('C', 'X')) ) JOIN coitem ON ( (coitem_id=raitem_orig_coitem_id) AND (NOT coitem_status IN ('C', 'X')) ) JOIN invcitem ON (invcitem_coitem_id=coitem_id) JOIN invchead ON ( (invchead_id=invcitem_invchead_id) AND ((NOT invchead_posted) OR (invchead_invcdate > pCutoffDate)) ) WHERE (rahead_new_cohead_id=_r.ordinv_id); IF (FOUND) THEN RETURN 'Invoiced New Return Authorization not closed'; END IF; END IF; -- Check Lot/Serial Registration IF (fetchMetricBool('MultiWhs')) THEN -- Registration associated with Sales Order must be expired SELECT lsreg_id INTO _result FROM lsreg WHERE ( (lsreg_cohead_id=_r.ordship_id) AND (lsreg_expiredate > CURRENT_DATE) ); IF (FOUND) THEN RETURN 'Shipped Sales Order Lot/Serial Registration not closed'; END IF; SELECT lsreg_id INTO _result FROM lsreg WHERE ( (lsreg_cohead_id=_r.ordinv_id) AND (lsreg_expiredate > CURRENT_DATE) ); IF (FOUND) THEN RETURN 'Invoiced Sales Order Lot/Serial Registration not closed'; END IF; -- Registration associated with Shipping must be expired SELECT lsreg_id INTO _result FROM lsreg WHERE ( (lsreg_cohead_id=_r.shiphead_id) AND (lsreg_expiredate > CURRENT_DATE) ); IF (FOUND) THEN RETURN 'Shipper Lot/Serial Registration not closed'; END IF; END IF; IF (fetchMetricBool('MultiWhs')) THEN -- Registration associated with Original Return Authorization must be expired SELECT rahead_id INTO _result FROM rahead JOIN raitem ON (raitem_rahead_id=rahead_id) JOIN raitemls ON (raitemls_raitem_id=raitem_id) JOIN lsreg ON ( (lsreg_ls_id=raitemls_ls_id) AND (lsreg_expiredate > CURRENT_DATE) ) WHERE (rahead_orig_cohead_id=_r.ordship_id); IF (FOUND) THEN RETURN 'Shipped Original Return Authorization Lot/Serial Registration not closed'; END IF; SELECT rahead_id INTO _result FROM rahead JOIN raitem ON (raitem_rahead_id=rahead_id) JOIN raitemls ON (raitemls_raitem_id=raitem_id) JOIN lsreg ON ( (lsreg_ls_id=raitemls_ls_id) AND (lsreg_expiredate > CURRENT_DATE) ) WHERE (rahead_orig_cohead_id=_r.ordinv_id); IF (FOUND) THEN RETURN 'Invoiced Original Return Authorization Lot/Serial Registration not closed'; END IF; -- Registration associated with New Return Authorization must be expired SELECT rahead_id INTO _result FROM rahead JOIN raitem ON (raitem_rahead_id=rahead_id) JOIN raitemls ON (raitemls_raitem_id=raitem_id) JOIN lsreg ON ( (lsreg_ls_id=raitemls_ls_id) AND (lsreg_expiredate > CURRENT_DATE) ) WHERE (rahead_new_cohead_id=_r.ordship_id); IF (FOUND) THEN RETURN 'Shipped New Return Authorization Lot/Serial Registration not closed'; END IF; SELECT rahead_id INTO _result FROM rahead JOIN raitem ON (raitem_rahead_id=rahead_id) JOIN raitemls ON (raitemls_raitem_id=raitem_id) JOIN lsreg ON ( (lsreg_ls_id=raitemls_ls_id) AND (lsreg_expiredate > CURRENT_DATE) ) WHERE (rahead_new_cohead_id=_r.ordinv_id); IF (FOUND) THEN RETURN 'Invoiced New Return Authorization Lot/Serial Registration not closed'; END IF; END IF; -- Cash Advances associated with Sales Order cannot exist SELECT aropenalloc_doc_id INTO _result FROM aropenalloc WHERE ((aropenalloc_doctype='S') AND (aropenalloc_doc_id=_r.ordship_id)); IF (FOUND) THEN RETURN 'Shipped Cash Advance not closed'; END IF; SELECT aropenalloc_doc_id INTO _result FROM aropenalloc WHERE ((aropenalloc_doctype='S') AND (aropenalloc_doc_id=_r.ordinv_id)); IF (FOUND) THEN RETURN 'Invoiced Cash Advance not closed'; END IF; END LOOP; -- Everything is OK, delete the chain FOR _r IN SELECT invchead_id, cobmisc_id, shiphead_id, ordershipped.cohead_id AS ordship_id, orderinvoiced.cohead_id AS ordinv_id FROM invchead LEFT OUTER JOIN invcitem ON (invcitem_invchead_id=invchead_id) LEFT OUTER JOIN cobmisc ON (cobmisc_invcnumber::TEXT=invchead_invcnumber) LEFT OUTER JOIN shipitem ON (shipitem_invcitem_id=invcitem_id) LEFT OUTER JOIN shiphead ON (shiphead_id=shipitem_shiphead_id) LEFT OUTER JOIN cohead ordershipped ON (ordershipped.cohead_id=shiphead_order_id) LEFT OUTER JOIN coitem ON (coitem_id=invcitem_coitem_id) LEFT OUTER JOIN cohead orderinvoiced ON (orderinvoiced.cohead_id=coitem_cohead_id) WHERE ( (invchead_id = pInvcheadId) AND (invchead_posted) AND (checkInvoiceSitePrivs(invchead_id)) ) GROUP BY invchead_id, cobmisc_id, shiphead_id, ordship_id, ordinv_id LOOP IF (fetchMetricBool('MultiWhs')) THEN FOR _ra IN SELECT rahead_id FROM rahead WHERE (rahead_orig_cohead_id=_r.ordship_id) LOOP IF (_debug) THEN RAISE NOTICE 'Deleting Original Return head id %', _ra.rahead_id; END IF; DELETE FROM raitemls WHERE (raitemls_raitem_id IN (SELECT raitem_id FROM raitem WHERE (raitem_rahead_id=_ra.rahead_id))); DELETE FROM rahist WHERE (rahist_rahead_id=_ra.rahead_id); DELETE FROM raitem WHERE (raitem_rahead_id=_ra.rahead_id); DELETE FROM rahead WHERE (rahead_id=_ra.rahead_id); END LOOP; FOR _ra IN SELECT rahead_id FROM rahead WHERE (rahead_orig_cohead_id=_r.ordinv_id) LOOP IF (_debug) THEN RAISE NOTICE 'Deleting Original Return head id %', _ra.rahead_id; END IF; DELETE FROM raitemls WHERE (raitemls_raitem_id IN (SELECT raitem_id FROM raitem WHERE (raitem_rahead_id=_ra.rahead_id))); DELETE FROM rahist WHERE (rahist_rahead_id=_ra.rahead_id); DELETE FROM raitem WHERE (raitem_rahead_id=_ra.rahead_id); DELETE FROM rahead WHERE (rahead_id=_ra.rahead_id); END LOOP; FOR _ra IN SELECT rahead_id FROM rahead WHERE (rahead_new_cohead_id=_r.ordship_id) LOOP IF (_debug) THEN RAISE NOTICE 'Deleting New Return head id %', _ra.rahead_id; END IF; DELETE FROM raitemls WHERE (raitemls_raitem_id IN (SELECT raitem_id FROM raitem WHERE (raitem_rahead_id=_ra.rahead_id))); DELETE FROM rahist WHERE (rahist_rahead_id=_ra.rahead_id); DELETE FROM raitem WHERE (raitem_rahead_id=_ra.rahead_id); DELETE FROM rahead WHERE (rahead_id=_ra.rahead_id); END LOOP; FOR _ra IN SELECT rahead_id FROM rahead WHERE (rahead_new_cohead_id=_r.ordinv_id) LOOP IF (_debug) THEN RAISE NOTICE 'Deleting New Return head id %', _ra.rahead_id; END IF; DELETE FROM raitemls WHERE (raitemls_raitem_id IN (SELECT raitem_id FROM raitem WHERE (raitem_rahead_id=_ra.rahead_id))); DELETE FROM rahist WHERE (rahist_rahead_id=_ra.rahead_id); DELETE FROM raitem WHERE (raitem_rahead_id=_ra.rahead_id); DELETE FROM rahead WHERE (rahead_id=_ra.rahead_id); END LOOP; END IF; IF (fetchMetricBool('MultiWhs')) THEN IF (_debug) THEN RAISE NOTICE 'Deleting Lot/Serial Registrations'; END IF; DELETE FROM lsreg WHERE (lsreg_cohead_id=_r.ordship_id); DELETE FROM lsreg WHERE (lsreg_cohead_id=_r.ordinv_id); DELETE FROM lsreg WHERE (lsreg_shiphead_id=_r.shiphead_id); END IF; IF (_debug) THEN RAISE NOTICE 'Deleting Shipped Sales Order head id %', _r.ordship_id; END IF; DELETE FROM payco WHERE (payco_cohead_id=_r.ordship_id); -- Delete kit components first DELETE FROM coitem WHERE (coitem_cohead_id=_r.ordship_id AND coitem_subnumber > 0); DELETE FROM coitem WHERE (coitem_cohead_id=_r.ordship_id); DELETE FROM cohead WHERE (cohead_id=_r.ordship_id); IF (_debug) THEN RAISE NOTICE 'Deleting Sales Order head id %', _r.ordinv_id; END IF; DELETE FROM payco WHERE (payco_cohead_id=_r.ordinv_id); -- Delete kit components first DELETE FROM coitem WHERE (coitem_cohead_id=_r.ordinv_id AND coitem_subnumber > 0); DELETE FROM coitem WHERE (coitem_cohead_id=_r.ordinv_id); DELETE FROM cohead WHERE (cohead_id=_r.ordinv_id); IF (_debug) THEN RAISE NOTICE 'Deleting Ship head id %', _r.shiphead_id; END IF; DELETE FROM shipitem WHERE (shipitem_shiphead_id=_r.shiphead_id); DELETE FROM pack WHERE (pack_shiphead_id=_r.shiphead_id); DELETE FROM shiphead WHERE (shiphead_id=_r.shiphead_id); IF (_debug) THEN RAISE NOTICE 'Deleting Billing head id %', _r.cobmisc_id; END IF; DELETE FROM cobill WHERE (cobill_cobmisc_id=_r.cobmisc_id); DELETE FROM cobmisc WHERE (cobmisc_id=_r.cobmisc_id); END LOOP; -- Everything is OK, delete the Invoice IF (_debug) THEN RAISE NOTICE 'Deleting Invoice head id %', _r.invchead_id; END IF; DELETE FROM invcitem WHERE (invcitem_invchead_id=_r.invchead_id); DELETE FROM invchead WHERE (invchead_id=_r.invchead_id); RETURN 'Purged'; END; $_$; 8DROP FUNCTION public.purgeinvoicerecord(date, integer); publicadminfalse83992R12551692605purgeinvoicerecords(date)FUNCTIONCREATE FUNCTION purgeinvoicerecords(date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCutoffDate ALIAS FOR $1; BEGIN -- Remove the shipitem records DELETE FROM shipitem WHERE (shipitem_invcitem_id IN (SELECT invcitem_id FROM invcitem WHERE invcitem_invchead_id IN ( SELECT invchead_id FROM invchead WHERE ( (invchead_invcdate <= pCutoffDate) AND (checkInvoiceSitePrivs(invchead_id)) AND (invchead_posted) ) ) ) ); -- Remove the cobill and cobmisc records DELETE FROM cobill WHERE (cobill_cobmisc_id IN ( SELECT cobmisc_id FROM cobmisc, invchead WHERE ( (invchead_invcnumber=cobmisc_invcnumber::TEXT) AND (checkInvoiceSitePrivs(invchead_id)) AND (cobmisc_invcdate <= pCutoffDate) AND (cobmisc_posted)) ) ); DELETE FROM cobmisc WHERE ( (checkInvoiceSitePrivs(getInvcheadId(cobmisc_invcnumber::TEXT))) AND (cobmisc_invcdate <= pCutoffDate) AND (cobmisc_posted) ); -- Remove the invchead and invcitem records DELETE FROM invcitem WHERE (invcitem_invchead_id IN ( SELECT invchead_id FROM invchead WHERE ( (invchead_invcdate <= pCutoffDate) AND (checkInvoiceSitePrivs(invchead_id)) AND (invchead_posted) ) ) ); DELETE FROM invchead WHERE ( (invchead_invcdate <= pCutoffDate) AND (checkInvoiceSitePrivs(invchead_id)) AND (invchead_posted) ); RETURN 1; END; $_$; 0DROP FUNCTION public.purgeinvoicerecords(date); publicadminfalse83992/12551692606$purgepostedcountslips(date, integer)FUNCTIONCREATE FUNCTION purgepostedcountslips(date, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCutoffDate ALIAS FOR $1; pWarehousid ALIAS FOR $2; BEGIN IF (pWarehousid = -1) THEN DELETE FROM cntslip WHERE (cntslip_id IN ( SELECT cntslip_id FROM cntslip, invcnt WHERE ( (cntslip_cnttag_id=invcnt_id) AND (invcnt_posted) AND (cntslip_posted) AND (date(invcnt_postdate) <= pCutoffDate) ) ) ); ELSE DELETE FROM cntslip WHERE (cntslip_id IN ( SELECT cntslip_id FROM invcnt, itemsite WHERE ( (cntslip_cnttag_id=invcnt_id) AND (invcnt_posted) AND (cntslip_posted) AND (invcnt_itemsite_id=itemsite_id) AND (date(invcnt_postdate) <= pCutoffDate) AND (itemsite_warehous_id=pWarehousid) ) ) ); END IF; RETURN 1; END; $_$; ;DROP FUNCTION public.purgepostedcountslips(date, integer); publicadminfalse83992012551692607#purgepostedcounttags(date, integer)FUNCTIONCREATE FUNCTION purgepostedcounttags(date, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCutoffDate ALIAS FOR $1; pWarehousid ALIAS FOR $2; BEGIN IF (pWarehousid = -1) THEN DELETE FROM cntslip WHERE (cntslip_cnttag_id IN ( SELECT invcnt_id FROM invcnt WHERE ( (invcnt_posted) AND (date(invcnt_postdate) <= pCutoffDate) ) ) ); DELETE FROM invcnt WHERE ((invcnt_posted) AND (date(invcnt_postdate) <= pCutoffDate)); ELSE DELETE FROM cntslip WHERE (cntslip_cnttag_id IN ( SELECT invcnt_id FROM invcnt, itemsite WHERE ( (invcnt_posted) AND (invcnt_itemsite_id=itemsite_id) AND (date(invcnt_postdate) <= pCutoffDate) AND (itemsite_warehous_id=pWarehousid) ) ) ); DELETE FROM invcnt WHERE (invcnt_id IN ( SELECT invcnt_id FROM invcnt, itemsite WHERE ( (invcnt_posted) AND (invcnt_itemsite_id=itemsite_id) AND (date(invcnt_postdate) <= pCutoffDate) AND (itemsite_warehous_id=pWarehousid) ) ) ); END IF; RETURN 1; END; $_$; :DROP FUNCTION public.purgepostedcounttags(date, integer); publicadminfalse83992112551692608purgeshipments(date)FUNCTIONCREATE FUNCTION purgeshipments(date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pcutoff ALIAS FOR $1; _r RECORD; BEGIN -- Used for transfer orders shipments (which are never invoiced) FOR _r IN SELECT shiphead_id FROM shiphead WHERE ( (shiphead_order_type='TO') AND (shiphead_shipped) AND (shiphead_shipdate <= pcutoff) ) LOOP DELETE FROM shipitem WHERE (shipitem_shiphead_id=_r.shiphead_id); DELETE FROM shiphead WHERE (shiphead_id=_r.shiphead_id); END LOOP; RETURN 0; END; $_$; +DROP FUNCTION public.purgeshipments(date); publicadminfalse8399212551692609qtyallocated(integer, integer)FUNCTIONCREATE FUNCTION qtyallocated(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pLookAheaddays ALIAS FOR $2; BEGIN RETURN qtyAllocated(pItemsiteid, startOfTime(), (CURRENT_DATE + pLookAheadDays)); END; $_$; 5DROP FUNCTION public.qtyallocated(integer, integer); publicadminfalse8399212551692610qtyallocated(integer, date)FUNCTIONcCREATE FUNCTION qtyallocated(integer, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pDate ALIAS FOR $2; BEGIN RETURN qtyAllocated(pItemsiteid, startOfTime(), pDate); END; $_$; 2DROP FUNCTION public.qtyallocated(integer, date); publicadminfalse83992212551692611!qtyallocated(integer, date, date)FUNCTIONCREATE FUNCTION qtyallocated(integer, date, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; BEGIN IF ( fetchMetricBool('MultiWhs')) THEN IF ( SELECT item_sold FROM itemsite, item WHERE ((itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid)) ) THEN RETURN (allocatedForTo(pItemsiteid, pStartDate, pEndDate) + allocatedForWo(pItemsiteid, pStartDate, pEndDate) + allocatedForSo(pItemsiteid, pStartDate, pEndDate)); ELSE RETURN (allocatedForTo(pItemsiteid, pStartDate, pEndDate) + allocatedForWo(pItemsiteid, pStartDate, pEndDate)); END IF; ELSE IF ( SELECT item_sold FROM itemsite, item WHERE ((itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid)) ) THEN RETURN (allocatedForWo(pItemsiteid, pStartDate, pEndDate) + allocatedForSo(pItemsiteid, pStartDate, pEndDate)); ELSE RETURN (allocatedForWo(pItemsiteid, pStartDate, pEndDate)); END IF; END IF; END; $_$; 8DROP FUNCTION public.qtyallocated(integer, date, date); publicadminfalse8399212551692612qtyatshipping(integer)FUNCTION CREATE FUNCTION qtyatshipping(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN qtyAtShipping('SO', $1); END; $_$; -DROP FUNCTION public.qtyatshipping(integer); publicadminfalse83992312551692613qtyatshipping(text, integer)FUNCTIONCREATE FUNCTION qtyatshipping(text, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN qtyAtShipping($1, $2, 'U'); END; $_$; 3DROP FUNCTION public.qtyatshipping(text, integer); publicadminfalse83992412551692614"qtyatshipping(text, integer, text)FUNCTIONCREATE FUNCTION qtyatshipping(text, integer, text) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; plineitemid ALIAS FOR $2; pstatus ALIAS FOR $3; _qty NUMERIC := 0.0; BEGIN -- pstatus U=unshipped -- S=shipped -- B=both unshipped and shipped IF (pordertype NOT IN ('SO', 'TO')) THEN RAISE EXCEPTION '% is not a valid order type', pordertype; END IF; IF (pstatus NOT IN ('U', 'S', 'B')) THEN RAISE EXCEPTION '% is not a valid status', pstatus; END IF; SELECT COALESCE(SUM(shipitem_qty), 0.0) INTO _qty FROM shipitem, shiphead WHERE ((shipitem_shiphead_id=shiphead_id) AND (shiphead_order_type=pordertype) AND (shipitem_orderitem_id=plineitemid) AND (((shiphead_shipped) AND (pstatus IN ('S', 'B'))) OR ((NOT shiphead_shipped) AND (pstatus IN ('U', 'B')))) ); RETURN _qty; END; $_$; 9DROP FUNCTION public.qtyatshipping(text, integer, text); publicadminfalse83992512551692615qtyavailable(integer, integer)FUNCTION-CREATE FUNCTION qtyavailable(integer, integer) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pLookAheadDays ALIAS FOR $2; BEGIN RETURN ( ( SELECT itemsite_qtyonhand FROM itemsite WHERE (itemsite_id=pItemsiteid) ) + (SELECT qtyOrdered(pItemsiteid, pLookAheadDays)) - (SELECT qtyAllocated(pitemsiteid, pLookAheadDays)) ); END; $_$; 5DROP FUNCTION public.qtyavailable(integer, integer); publicadminfalse83992612551692616qtyavailable(integer, date)FUNCTION1CREATE FUNCTION qtyavailable(integer, date) RETURNS numeric LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pDate ALIAS FOR $2; BEGIN RETURN ( ( SELECT itemsite_qtyonhand FROM itemsite WHERE (itemsite_id=pItemsiteid) ) + (SELECT qtyOrdered(pItemsiteid, (pDate - CURRENT_DATE))) - (SELECT qtyAllocated(pItemsiteid, (pDate - CURRENT_DATE))) ); END; $_$; 2DROP FUNCTION public.qtyavailable(integer, date); publicadminfalse83992712551692617%qtyinshipment(text, integer, integer)FUNCTION CREATE FUNCTION qtyinshipment(text, integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; plineitemid ALIAS FOR $2; pshipheadid ALIAS FOR $3; _qty NUMERIC; BEGIN IF (pordertype NOT IN ('SO', 'TO')) THEN RAISE EXCEPTION '% is not a valid order type', pordertype; END IF; IF (pshipheadid IS NULL) THEN RAISE EXCEPTION 'Cannot calculate quantity in a shipment with a NULL shipment'; END IF; SELECT SUM(COALESCE(shipitem_qty, 0.0)) INTO _qty FROM shipitem, shiphead WHERE ((shipitem_shiphead_id=shiphead_id) AND (shiphead_order_type=pordertype) AND (shipitem_orderitem_id=plineitemid) AND (shiphead_id=pshipheadid)); IF (NOT FOUND) THEN RAISE NOTICE 'Quantity of % item % is 0 because shipment % does not exist.', pordertype, plineitemid, pshipheadid; END IF; RETURN _qty; END; $_$; <DROP FUNCTION public.qtyinshipment(text, integer, integer); publicadminfalse83992812551692618Jqtylocation(integer, integer, date, date, integer, text, integer, integer)FUNCTION CREATE FUNCTION qtylocation(integer, integer, date, date, integer, text, integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLocationId ALIAS FOR $1; pLsId ALIAS FOR $2; pExpiration ALIAS FOR $3; pWarranty ALIAS FOR $4; pItemsiteId ALIAS FOR $5; pOrderType ALIAS FOR $6; pOrderId ALIAS FOR $7; pItemlocdistId ALIAS FOR $8; _qty NUMERIC = 0.0; _qtyDist NUMERIC = 0.0; _qtyReserved NUMERIC = 0.0; BEGIN -- Summarize itemloc qty for this location/itemsite SELECT COALESCE(SUM(itemloc_qty), 0) INTO _qty FROM itemloc WHERE ( (itemloc_itemsite_id=pItemsiteId) AND (itemloc_location_id=pLocationId) AND (COALESCE(itemloc_ls_id, -1)=COALESCE(pLsId, itemloc_ls_id, -1)) AND (COALESCE(itemloc_expiration, endoftime())=COALESCE(pExpiration, itemloc_expiration, endoftime())) AND (COALESCE(itemloc_warrpurc, endoftime())=COALESCE(pWarranty, itemloc_warrpurc, endoftime())) ); -- Summarize qty distributed but not yet committed by previous distributions SELECT COALESCE(SUM(loc.itemlocdist_qty), 0) INTO _qtyDist FROM itemlocdist loc JOIN itemlocdist ls ON ((ls.itemlocdist_source_type='O') AND (ls.itemlocdist_id=loc.itemlocdist_itemlocdist_id)) WHERE ( (ls.itemlocdist_itemsite_id=pItemsiteId) AND (loc.itemlocdist_source_type='L') AND (loc.itemlocdist_source_id=pLocationId) AND (COALESCE(ls.itemlocdist_ls_id, -1)=COALESCE(pLsId, ls.itemlocdist_ls_id, -1)) AND (COALESCE(ls.itemlocdist_expiration, endoftime())=COALESCE(pExpiration, ls.itemlocdist_expiration, endoftime())) AND (COALESCE(ls.itemlocdist_warranty, endoftime())=COALESCE(pWarranty, ls.itemlocdist_warranty, endoftime())) AND (ls.itemlocdist_id != pItemlocdistId ) ); -- Summarize itemlocrsrv qty for this location/itemsite -- that is reserved for a different order IF (fetchMetricBool('EnableSOReservationsByLocation')) THEN SELECT COALESCE(SUM(itemlocrsrv_qty), 0) INTO _qtyReserved FROM itemloc JOIN itemlocrsrv ON ( (itemlocrsrv_itemloc_id=itemloc_id) AND ((itemlocrsrv_source <> COALESCE(pOrderType, '')) OR (itemlocrsrv_source_id <> COALESCE(pOrderId, -1))) ) WHERE ( (itemloc_itemsite_id=pItemsiteId) AND (itemloc_location_id=pLocationId) AND (COALESCE(itemloc_ls_id, -1)=COALESCE(pLsId, itemloc_ls_id, -1)) AND (COALESCE(itemloc_expiration, endoftime())=COALESCE(pExpiration, itemloc_expiration, endoftime())) AND (COALESCE(itemloc_warrpurc, endoftime())=COALESCE(pWarranty, itemloc_warrpurc, endoftime())) ); END IF; RETURN (_qty + _qtyDist - _qtyReserved); END; $_$; aDROP FUNCTION public.qtylocation(integer, integer, date, date, integer, text, integer, integer); publicadminfalse83992912551692619qtyordered(integer, integer)FUNCTIONCREATE FUNCTION qtyordered(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pLookahead ALIAS FOR $2; _itemType TEXT; _result NUMERIC; BEGIN RETURN qtyOrdered(pItemsiteid, startOfTime(), (CURRENT_DATE + pLookahead)); END; $_$; 3DROP FUNCTION public.qtyordered(integer, integer); publicadminfalse83992:12551692620qtyordered(integer, date)FUNCTION_CREATE FUNCTION qtyordered(integer, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pDate ALIAS FOR $2; BEGIN RETURN qtyOrdered(pItemsiteid, startOfTime(), pDate); END; $_$; 0DROP FUNCTION public.qtyordered(integer, date); publicadminfalse83992;12551692621qtyordered(integer, date, date)FUNCTIONCREATE FUNCTION qtyordered(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _itemType TEXT; BEGIN SELECT item_type INTO _itemType FROM item, itemsite WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ); IF ( SELECT metric_value FROM metric WHERE ((metric_name = 'MultiWhs') AND (metric_value = 't'))) THEN RETURN orderedByPo(pItemsiteid, pStartDate, pEndDate) + orderedByWo(pItemsiteid, pStartDate, pEndDate) + orderedByTo(pItemsiteid, pStartDate, pEndDate); ELSE RETURN orderedByPo(pItemsiteid, pStartDate, pEndDate) + orderedByWo(pItemsiteid, pStartDate, pEndDate); END IF; END; $_$; 6DROP FUNCTION public.qtyordered(integer, date, date); publicadminfalse8399212551692622qtypr(integer, integer)FUNCTIONrCREATE FUNCTION qtypr(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pLookahead ALIAS FOR $2; BEGIN RETURN qtypr(pItemsiteid, startOfTime(), (CURRENT_DATE + pLookahead)); END; $_$; .DROP FUNCTION public.qtypr(integer, integer); publicadminfalse83992<12551692623qtypr(integer, date)FUNCTIONSCREATE FUNCTION qtypr(integer, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pDate ALIAS FOR $2; BEGIN RETURN qtypr(pItemsiteid, startOfTime(), pDate); END; $_$; +DROP FUNCTION public.qtypr(integer, date); publicadminfalse83992=12551692624qtypr(integer, date, date)FUNCTIONICREATE FUNCTION qtypr(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _prtotal NUMERIC; BEGIN SELECT SUM(pr_qtyreq) INTO _prtotal FROM pr WHERE ((pr_status = 'O') AND (pr_itemsite_id=pItemsiteid) AND (pr_duedate BETWEEN pStartDate AND pEndDate)); IF (_prtotal IS NULL) THEN RETURN 0.0; END IF; RETURN _prtotal; END; $_$; 1DROP FUNCTION public.qtypr(integer, date, date); publicadminfalse83992>12551692625qtytoreceive(text, integer)FUNCTIONCREATE FUNCTION qtytoreceive(text, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; porderitemid ALIAS FOR $2; _qty NUMERIC; BEGIN IF (pordertype = 'TO' AND NOT fetchMetricBool('MultiWhs')) THEN RETURN 0; END IF; IF (pordertype = 'RA' AND NOT fetchMetricBool('EnableReturnAuth')) THEN RETURN 0; END IF; SELECT SUM(recv_qty) INTO _qty FROM recv WHERE ((recv_orderitem_id=porderitemid) AND (NOT recv_posted) AND (recv_order_type=pordertype)); RETURN COALESCE(_qty, 0.0); END; $_$; 2DROP FUNCTION public.qtytoreceive(text, integer); publicadminfalse83992?12551692626recallshipment(integer)FUNCTIONCREATE FUNCTION recallshipment(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN recallShipment($1, CURRENT_TIMESTAMP); END; $_$; .DROP FUNCTION public.recallshipment(integer); publicadminfalse83992125516926271recallshipment(integer, timestamp with time zone)FUNCTION'CREATE FUNCTION recallshipment(integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pshipheadid ALIAS FOR $1; _timestamp TIMESTAMP WITH TIME ZONE := $2; _allInvoiced BOOLEAN; _invoicePosted BOOLEAN; _in RECORD; _co RECORD; _cobill RECORD; _h RECORD; _result INTEGER; _invhistid INTEGER; _itemlocSeries INTEGER; _qty NUMERIC; _qtyToBill NUMERIC; _shiphead RECORD; _to RECORD; _ti RECORD; _value NUMERIC; BEGIN IF (_timestamp IS NULL) THEN _timestamp := CURRENT_TIMESTAMP; END IF; SELECT * INTO _shiphead FROM shiphead WHERE (shiphead_id=pshipheadid); IF (NOT FOUND OR NOT _shiphead.shiphead_shipped) THEN RETURN -1; END IF; IF (_shiphead.shiphead_order_type = 'SO') THEN SELECT cohead_number AS head_number, cohead_cust_id AS cust_id, cohead_prj_id AS prj_id, cohead_saletype_id AS saletype_id, cohead_shipzone_id AS shipzone_id INTO _h FROM cohead WHERE (cohead_id=_shiphead.shiphead_order_id); IF (NOT FOUND) THEN RETURN -1; END IF; SELECT COALESCE(BOOL_AND(shipitem_invoiced), FALSE) INTO _allInvoiced FROM cobill, shipitem WHERE ((cobill_coitem_id=shipitem_orderitem_id) AND (shipitem_shiphead_id=pshipheadid)); IF (_allInvoiced AND NOT checkPrivilege('RecallInvoicedShipment')) THEN RETURN -2; END IF; -- Check for any associated posted Invoices SELECT COALESCE(BOOL_AND(invchead_posted), FALSE) INTO _invoicePosted FROM shipitem JOIN invcitem ON (invcitem_id=shipitem_invcitem_id) JOIN invchead ON (invchead_id=invcitem_invchead_id) WHERE (shipitem_shiphead_id=pshipheadid); IF (_invoicePosted) THEN RETURN -4; END IF; -- Delete any associated unposted Invoices FOR _in IN SELECT DISTINCT invchead_id FROM shipitem JOIN invcitem ON (invcitem_id=shipitem_invcitem_id) JOIN invchead ON ( (invchead_id=invcitem_invchead_id) AND (NOT invchead_posted) ) WHERE (shipitem_shiphead_id=pshipheadid) LOOP SELECT deleteInvoice(_in.invchead_id) INTO _result; IF (_result < 0) THEN RETURN _result; END IF; END LOOP; FOR _co IN SELECT coitem_id, coitem_itemsite_id, coitem_qty_invuomratio, coitem_warranty, coitem_cos_accnt_id, itemsite_controlmethod FROM coitem JOIN itemsite ON (coitem_itemsite_id=itemsite_id) WHERE(coitem_id IN (SELECT shipitem_orderitem_id FROM shipitem, shiphead WHERE((shipitem_shiphead_id=shiphead_id) AND (shiphead_shipped) AND (shiphead_id=pshipheadid)))) FOR UPDATE LOOP SELECT SUM(shipitem_qty),SUM(COALESCE(shipitem_value, 0)) INTO _qty, _value FROM shipitem WHERE ( (shipitem_orderitem_id=_co.coitem_id) AND (shipitem_shiphead_id=pshipheadid) ); UPDATE coitem SET coitem_qtyshipped = (coitem_qtyshipped - _qty) WHERE (coitem_id=_co.coitem_id); _qtyToBill := _qty; FOR _cobill IN SELECT cobill_id, cobill_qty FROM cobill, shipitem WHERE ((cobill_coitem_id=shipitem_orderitem_id) AND (shipitem_shiphead_id=pshipheadid) AND (cobill_coitem_id=_co.coitem_id)) FOR UPDATE LOOP IF (noNeg(_cobill.cobill_qty - _qtyToBill) = 0) THEN DELETE FROM cobill WHERE (cobill_id=_cobill.cobill_id); ELSE UPDATE cobill SET cobill_qty = noNeg(cobill_qty - _qtyToBill) WHERE (cobill_id=_cobill.cobill_id); END IF; _qtyToBill = _qtyToBill - _cobill.cobill_qty; EXIT WHEN (_qtyToBill <= 0.0); END LOOP; -- Check to see if all of the cobills have been deleted for this cobmisc IF (EXISTS(SELECT cobmisc_id FROM cobmisc JOIN cobill ON (cobill_cobmisc_id=cobmisc_id) WHERE (cobmisc_cohead_id=_shiphead.shiphead_order_id AND NOT cobmisc_posted))) THEN -- Lines exist, update the freight UPDATE cobmisc SET cobmisc_freight = (cobmisc_freight - _shiphead.shiphead_freight) WHERE (cobmisc_cohead_id=_shiphead.shiphead_order_id AND NOT cobmisc_posted); ELSE -- No lines exist, delete the cobmisc DELETE FROM cobmisc WHERE (cobmisc_cohead_id=_shiphead.shiphead_order_id AND NOT cobmisc_posted); END IF; -- Distribute to G/L, debit Shipping Asset, credit COS IF (_co.itemsite_controlmethod != 'N') THEN PERFORM insertGLTransaction( 'S/R', _shiphead.shiphead_order_type, _h.head_number::TEXT, 'Recall Shipment', CASE WHEN(COALESCE(_co.coitem_cos_accnt_id, -1) != -1) THEN getPrjAccntId(_h.prj_id, _co.coitem_cos_accnt_id) WHEN(_co.coitem_warranty = TRUE) THEN getPrjAccntId(_h.prj_id, resolveCOWAccount(itemsite_id, _h.cust_id, _h.saletype_id, _h.shipzone_id)) ELSE getPrjAccntId(_h.prj_id, resolveCOSAccount(itemsite_id, _h.cust_id, _h.saletype_id, _h.shipzone_id)) END, getPrjAccntId(_h.prj_id,costcat_shipasset_accnt_id), -1, _value, _timestamp::DATE ) FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_co.coitem_itemsite_id) ); END IF; END LOOP; -- Kit billing selection -- Set kit billing qty to zero since kits are shipped complete FOR _cobill IN SELECT cobill_id, cobill_qty FROM shipitem JOIN coitem sub ON (sub.coitem_id=shipitem_orderitem_id) JOIN coitem kit ON (kit.coitem_id <> sub.coitem_id AND kit.coitem_cohead_id = sub.coitem_cohead_id AND kit.coitem_linenumber = sub.coitem_linenumber AND kit.coitem_subnumber = 0) JOIN cobill ON (cobill_coitem_id=kit.coitem_id) WHERE (shipitem_shiphead_id=pshipheadid) AND (sub.coitem_subnumber > 0) GROUP BY cobill_id, cobill_qty LOOP UPDATE cobill SET cobill_qty = 0.0 WHERE (cobill_id=_cobill.cobill_id); END LOOP; ELSEIF (_shiphead.shiphead_order_type = 'TO') THEN SELECT * INTO _to FROM tohead WHERE (tohead_id=_shiphead.shiphead_order_id); IF (NOT FOUND) THEN RETURN -1; END IF; IF (_to.tohead_status = 'C') THEN RETURN -6; END IF; FOR _ti IN SELECT toitem_id, sis.itemsite_id AS src_itemsite_id, tis.itemsite_id AS trns_itemsite_id, scc.costcat_shipasset_accnt_id AS src_shipasset_accnt_id, tcc.costcat_asset_accnt_id AS trns_asset_accnt_id, itemcost(tis.itemsite_id) AS trns_cost, SUM(shipitem_qty) AS recall_qty FROM shipitem JOIN toitem ON (toitem_id=shipitem_orderitem_id) JOIN itemsite sis ON (sis.itemsite_item_id=toitem_item_id AND sis.itemsite_warehous_id=_to.tohead_src_warehous_id) JOIN itemsite tis ON (tis.itemsite_item_id=toitem_item_id AND tis.itemsite_warehous_id=_to.tohead_trns_warehous_id) JOIN costcat scc ON (scc.costcat_id=sis.itemsite_costcat_id) JOIN costcat tcc ON (tcc.costcat_id=tis.itemsite_costcat_id) WHERE (shipitem_shiphead_id=pshipheadid) GROUP BY toitem_id, sis.itemsite_id, tis.itemsite_id, scc.costcat_shipasset_accnt_id, tcc.costcat_asset_accnt_id LOOP _itemlocSeries := NEXTVAL('itemloc_series_seq'); SELECT postInvTrans(_ti.src_itemsite_id, 'TS', (_ti.recall_qty * -1.0), 'I/M', _shiphead.shiphead_order_type, formatToNumber(_ti.toitem_id), _to.tohead_number, 'Recall TO Shipment To Src Warehouse', _ti.trns_asset_accnt_id, _ti.src_shipasset_accnt_id, _itemlocSeries, _timestamp, (_ti.trns_cost * _ti.recall_qty * -1.0)) INTO _invhistid; IF (_invhistid < 0) THEN RETURN _invhistid; END IF; -- post the inventory history if lot/serial or location control PERFORM postItemlocseries(_itemlocSeries); -- record inventory history and qoh changes at transit warehouse but -- there is only one g/l account to touch SELECT postInvTrans(_ti.trns_itemsite_id, 'TR', (_ti.recall_qty * -1.0), 'I/M', _shiphead.shiphead_order_type, formatToNumber(_ti.toitem_id), _to.tohead_number, 'Recall TO Shipment From Transit Warehouse', _ti.trns_asset_accnt_id, _ti.trns_asset_accnt_id, _itemlocSeries, _timestamp, (_ti.trns_cost * _ti.recall_qty * -1.0)) INTO _invhistid; IF (_invhistid < 0) THEN RETURN _invhistid; END IF; -- post the inventory history if lot/serial or location control PERFORM postItemlocseries(_itemlocSeries); UPDATE toitem SET toitem_qty_shipped = (toitem_qty_shipped - _ti.recall_qty) WHERE (toitem_id=_ti.toitem_id); UPDATE shipitem SET shipitem_shipdate=NULL, shipitem_shipped=FALSE, shipitem_value=(shipitem_qty * _ti.trns_cost) WHERE ((shipitem_orderitem_id=_ti.toitem_id) AND (shipitem_shiphead_id=pshipheadid)); DELETE FROM recv WHERE ((recv_orderitem_id=_ti.toitem_id) AND (recv_order_type='TO') AND (NOT recv_posted)); END LOOP; END IF; UPDATE shiphead SET shiphead_shipped=FALSE WHERE (shiphead_id=pshipheadid); RETURN _itemlocSeries; END; $_$; HDROP FUNCTION public.recallshipment(integer, timestamp with time zone); publicadminfalse83992@12551692629recallwo(integer, boolean)FUNCTIONjCREATE FUNCTION recallwo(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; recallChildren ALIAS FOR $2; returnCode INTEGER; BEGIN UPDATE wo SET wo_status='E' WHERE ((wo_status='R') AND (wo_id=pWoid)); IF (recallChildren) THEN returnCode := (SELECT MAX(recallWo(wo_id, TRUE)) FROM wo WHERE ((wo_ordtype='W') AND (wo_ordid=pWoid))); END IF; RETURN 0; END; $_$; 1DROP FUNCTION public.recallwo(integer, boolean); publicadminfalse83992A12551692630receipts(text)FUNCTION}CREATE FUNCTION receipts(text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTransType ALIAS FOR $1; BEGIN IF (pTransType IN ('RM', 'RB', 'RT', 'RP', 'RR', 'RX', 'TR')) THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END; $_$; %DROP FUNCTION public.receipts(text); publicadminfalse83992B12551692631releaseapmemonumber(integer)FUNCTIONCREATE FUNCTION releaseapmemonumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('APMemoNumber', $1::INTEGER) > 0; $_$; 3DROP FUNCTION public.releaseapmemonumber(integer); publicadminfalse8C12551692632releasearmemonumber(integer)FUNCTIONCREATE FUNCTION releasearmemonumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. select releaseNumber('ARMemoNumber', $1::INTEGER) > 0; $_$; 3DROP FUNCTION public.releasearmemonumber(integer); publicadminfalse812551692633releasecashrcptnumber(integer)FUNCTIONCREATE FUNCTION releasecashrcptnumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('CashRcptNumber', $1) > 0; $_$; 5DROP FUNCTION public.releasecashrcptnumber(integer); publicadminfalse8D12551692634releasecmnumber(integer)FUNCTIONCREATE FUNCTION releasecmnumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('CmNumber', $1) > 0; $_$; /DROP FUNCTION public.releasecmnumber(integer); publicadminfalse8E12551692635releasecmnumber(text)FUNCTION CREATE FUNCTION releasecmnumber(text) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('CmNumber', $1::INTEGER) > 0; $_$; ,DROP FUNCTION public.releasecmnumber(text); publicadminfalse8F12551692636 releasecrmaccountnumber(integer)FUNCTIONCREATE FUNCTION releasecrmaccountnumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('CRMAccountNumber', $1::INTEGER) > 0; $_$; 7DROP FUNCTION public.releasecrmaccountnumber(integer); publicadminfalse8G12551692637releaseincidentnumber(integer)FUNCTIONCREATE FUNCTION releaseincidentnumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('IncidentNumber', $1) = 1; $_$; 5DROP FUNCTION public.releaseincidentnumber(integer); publicadminfalse8H12551692638releaseinvcnumber(integer)FUNCTION CREATE FUNCTION releaseinvcnumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('InvcNumber', $1) > 0; $_$; 1DROP FUNCTION public.releaseinvcnumber(integer); publicadminfalse8I12551692639releaseinvcnumber(text)FUNCTIONCREATE FUNCTION releaseinvcnumber(text) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('InvcNumber', $1::INTEGER) > 0; $_$; .DROP FUNCTION public.releaseinvcnumber(text); publicadminfalse8J12551692640releasenumber(text, integer)FUNCTIONCREATE FUNCTION releasenumber(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE psequence ALIAS FOR $1; pnumber ALIAS FOR $2; BEGIN -- drop the number back into the pool if it was not committed PERFORM clearNumberIssue(psequence, pnumber); UPDATE orderseq SET orderseq_number = LEAST(pnumber, orderseq_number) WHERE (orderseq_name=psequence); RETURN 1; END; $_$; 3DROP FUNCTION public.releasenumber(text, integer); publicadminfalse83992K12551692641releaseponumber(integer)FUNCTIONCREATE FUNCTION releaseponumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('PoNumber', $1) > 0; $_$; /DROP FUNCTION public.releaseponumber(integer); publicadminfalse8L12551692642releaseponumber(text)FUNCTION CREATE FUNCTION releaseponumber(text) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('PoNumber', $1::INTEGER) > 0; $_$; ,DROP FUNCTION public.releaseponumber(text); publicadminfalse8M12551692643releaseprnumber(integer)FUNCTIONCREATE FUNCTION releaseprnumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('PrNumber', $1) > 0; $_$; /DROP FUNCTION public.releaseprnumber(integer); publicadminfalse8N12551692644releasepurchaseorder(integer)FUNCTIONCREATE FUNCTION releasepurchaseorder(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPoheadid ALIAS FOR $1; BEGIN IF ( ( SELECT (COUNT(*) = 0) FROM poitem WHERE ( (poitem_pohead_id=pPoheadid) AND (poitem_status='U') ) ) ) THEN RETURN -1; END IF; IF ( ( SELECT (pohead_status='U') FROM pohead WHERE (pohead_id=pPoheadid) ) ) THEN --update status and store the date that the order was released on UPDATE pohead SET pohead_status='O', pohead_released = current_date WHERE (pohead_id=pPoheadid); END IF; --update status and store the duedates at release UPDATE poitem SET poitem_status='O', poitem_rlsd_duedate = poitem_duedate WHERE (poitem_pohead_id=pPoheadid); RETURN 1; END; $_$; 4DROP FUNCTION public.releasepurchaseorder(integer); publicadminfalse83992y12551692645releasequnumber(integer)FUNCTIONCREATE FUNCTION releasequnumber(integer) RETURNS integer LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('QuNumber', $1); $_$; /DROP FUNCTION public.releasequnumber(integer); publicadminfalse8O12551692646releasequnumber(text)FUNCTIONCREATE FUNCTION releasequnumber(text) RETURNS integer LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('QuNumber', $1::INTEGER); $_$; ,DROP FUNCTION public.releasequnumber(text); publicadminfalse8P12551692647releaseshipmentnumber(integer)FUNCTIONCREATE FUNCTION releaseshipmentnumber(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _test INTEGER; BEGIN -- Check to see if a Shipment exists with the passed number SELECT shiphead_id INTO _test FROM shiphead WHERE (shiphead_number=pNumber); IF (FOUND) THEN RETURN FALSE; END IF; -- Check to see if ShipmentNumber orderseq has been incremented past the passed number SELECT orderseq_number INTO _test FROM orderseq WHERE (orderseq_name='ShipmentNumber'); IF ((_test - 1) <> pNumber) THEN RETURN FALSE; END IF; -- Decrement the orderseq, releasing the passed number UPDATE orderseq SET orderseq_number = (orderseq_number - 1) WHERE (orderseq_name='ShipmentNumber'); RETURN TRUE; END; $_$; 5DROP FUNCTION public.releaseshipmentnumber(integer); publicadminfalse83992S12551692648releasesohead(integer)FUNCTIONCREATE FUNCTION releasesohead(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; BEGIN DELETE FROM soheadlock WHERE ( (soheadlock_sohead_id=pSoheadid) AND (soheadlock_username=getEffectiveXtUser()) AND (soheadlock_procpid=pg_backend_pid()) ); RETURN TRUE; END; $_$; -DROP FUNCTION public.releasesohead(integer); publicadminfalse8399212551692649releasesonumber(integer)FUNCTIONCREATE FUNCTION releasesonumber(integer) RETURNS integer LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('SoNumber', $1); $_$; /DROP FUNCTION public.releasesonumber(integer); publicadminfalse8T12551692650releasesonumber(text)FUNCTIONtCREATE FUNCTION releasesonumber(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (COALESCE($1, '') = '' OR $1 ~ '[^0-9]') THEN --do nothing; RETURN 1; ELSE RETURN releaseNumber('SoNumber', $1::INTEGER); END IF; END; $_$; ,DROP FUNCTION public.releasesonumber(text); publicadminfalse83992U12551692651#releaseunusedbillingheader(integer)FUNCTIONtCREATE FUNCTION releaseunusedbillingheader(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCobmiscid ALIAS FOR $1; _p RECORD; BEGIN IF ( ( SELECT cobmisc_posted FROM cobmisc WHERE (cobmisc_id=pCobmiscid) ) ) THEN RETURN -1; END IF; SELECT cobill_id INTO _p FROM cobill WHERE (cobill_cobmisc_id=pCobmiscid) LIMIT 1; IF (FOUND) THEN RETURN -2; END IF; DELETE FROM cobmisc WHERE (cobmisc_id=pCobmiscid); RETURN 0; END; $_$; :DROP FUNCTION public.releaseunusedbillingheader(integer); publicadminfalse83992V12551692652releasevonumber(integer)FUNCTIONCREATE FUNCTION releasevonumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('VcNumber', $1) > 0; $_$; /DROP FUNCTION public.releasevonumber(integer); publicadminfalse812551692653releasewo(integer, boolean)FUNCTIONlCREATE FUNCTION releasewo(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; releaseChildren ALIAS FOR $2; returnCode INTEGER; BEGIN UPDATE wo SET wo_status='R' WHERE ((wo_status='E') AND (wo_id=pWoid)); IF (releaseChildren) THEN returnCode := (SELECT MAX(releaseWo(wo_id, TRUE)) FROM wo WHERE ((wo_ordtype='W') AND (wo_ordid=pWoid))); END IF; RETURN 0; END; $_$; 2DROP FUNCTION public.releasewo(integer, boolean); publicadminfalse83992u12551692654releasewonumber(integer)FUNCTIONCREATE FUNCTION releasewonumber(integer) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT releaseNumber('WoNumber', $1) > 0; $_$; /DROP FUNCTION public.releasewonumber(integer); publicadminfalse8W12551692655;relocateinventory(integer, integer, integer, numeric, text)FUNCTIONOCREATE FUNCTION relocateinventory(integer, integer, integer, numeric, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN relocateInventory($1, $2, $3, $4, $5, CURRENT_TIMESTAMP); END; $_$; RDROP FUNCTION public.relocateinventory(integer, integer, integer, numeric, text); publicadminfalse8399212551692656Urelocateinventory(integer, integer, integer, numeric, text, timestamp with time zone)FUNCTIONCREATE FUNCTION relocateinventory(integer, integer, integer, numeric, text, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSourceItemlocid ALIAS FOR $1; pTargetLocationid ALIAS FOR $2; pItemsiteid ALIAS FOR $3; pQty ALIAS FOR $4; pComments ALIAS FOR $5; _GlDistTS TIMESTAMP WITH TIME ZONE := $6; _targetItemlocid INTEGER; _invhistid INTEGER; _p RECORD; _qty NUMERIC; _itemlocSeries INTEGER := NEXTVAL('itemloc_series_seq'); BEGIN IF ((_GlDistTS IS NULL) OR (CAST(_GlDistTS AS date)=CURRENT_DATE)) THEN _GlDistTS := CURRENT_TIMESTAMP; END IF; -- Make sure the passed itemsite points to a real item IF ( ( SELECT (item_type IN ('R', 'F') OR itemsite_costmethod = 'J') FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ) ) ) THEN RETURN 0; END IF; -- Cache some parameters SELECT itemloc_ls_id, itemloc_itemsite_id AS itemsiteid, itemloc_expiration, itemloc_warrpurc, itemloc_qty, sourceloc.location_netable AS sourcenet, targetloc.location_netable AS targetnet INTO _p FROM itemloc, location AS sourceloc, location AS targetloc WHERE ( (itemloc_location_id=sourceloc.location_id) AND (targetloc.location_id=pTargetLocationid) AND (itemloc_id=pSourceItemlocid) ); -- Check to make sure the qty being transfered exists IF (_p.itemloc_qty < pQty) THEN RETURN -1; END IF; -- Create the RL transaction SELECT NEXTVAL('invhist_invhist_id_seq') INTO _invhistid; INSERT INTO invhist ( invhist_id, invhist_itemsite_id, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_comments, invhist_transdate, invhist_invuom, invhist_unitcost, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_series) SELECT _invhistid, itemsite_id, 'RL', 0, itemsite_qtyonhand, itemsite_qtyonhand, pComments, _GlDistTS, uom_name, CASE WHEN (itemsite_costmethod='A') THEN avgcost(itemsite_id) ELSE stdCost(item_id) END, itemsite_costmethod, itemsite_value, itemsite_value, _itemlocSeries FROM item, itemsite, uom WHERE ((itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (itemsite_id=pItemsiteid)); -- Relocate the inventory from the source and record the transactions INSERT INTO invdetail ( invdetail_invhist_id, invdetail_location_id, invdetail_ls_id, invdetail_qty, invdetail_qty_before, invdetail_qty_after, invdetail_expiration, invdetail_warrpurc ) SELECT _invhistid, itemloc_location_id, itemloc_ls_id, (pQty * -1), itemloc_qty, (itemloc_qty - pQty), itemloc_expiration, itemloc_warrpurc FROM itemloc WHERE (itemloc_id=pSourceItemlocid); UPDATE itemloc SET itemloc_qty=(itemloc_qty - pQty) FROM itemsite WHERE ( (itemloc_itemsite_id=itemsite_id) AND (NOT itemsite_freeze) AND (itemloc_id=pSourceItemlocid) ); -- Check to see if there is anything left at the source Itemloc and delete if not DELETE FROM itemloc WHERE ( (itemloc_qty=0) AND (itemloc_id=pSourceItemlocid) ); -- Check to see if any of the current Lot/Serial #/Expiration exists at the target location SELECT itemloc_id INTO _targetItemlocid FROM itemloc WHERE ( (COALESCE(itemloc_ls_id, -1)=COALESCE(_p.itemloc_ls_id,-1)) AND (COALESCE(itemloc_expiration,endOfTime())=COALESCE(_p.itemloc_expiration,endOfTime())) AND (COALESCE(itemloc_warrpurc,endOfTime())=COALESCE(_p.itemloc_warrpurc,endOfTime())) AND (itemloc_itemsite_id=pItemsiteid) AND (itemloc_location_id=pTargetLocationid) ); IF (NOT FOUND) THEN SELECT NEXTVAL('itemloc_itemloc_id_seq') INTO _targetItemlocid; INSERT INTO itemloc ( itemloc_id, itemloc_itemsite_id, itemloc_location_id, itemloc_ls_id, itemloc_expiration, itemloc_warrpurc, itemloc_qty ) VALUES ( _targetItemlocid, pItemsiteid, pTargetLocationid, _p.itemloc_ls_id, _p.itemloc_expiration, _p.itemloc_warrpurc, 0 ); END IF; -- Relocate the inventory to the resultant target and record the transactions INSERT INTO invdetail ( invdetail_invhist_id, invdetail_location_id, invdetail_ls_id, invdetail_qty, invdetail_qty_before, invdetail_qty_after, invdetail_expiration, invdetail_warrpurc ) SELECT _invhistid, pTargetLocationid, _p.itemloc_ls_id, pQty, itemloc_qty, (itemloc_qty + pQty), _p.itemloc_expiration, _p.itemloc_warrpurc FROM itemloc WHERE (itemloc_id=_targetItemlocid); UPDATE itemloc SET itemloc_qty=(itemloc_qty + pQty) FROM itemsite WHERE ( (itemloc_itemsite_id=itemsite_id) AND (NOT itemsite_freeze) AND (itemloc_id=_targetItemlocid) ); UPDATE invhist SET invhist_hasdetail=TRUE WHERE (invhist_id=_invhistid); -- Post in incomming or outgoing NN transaction if required IF (_p.sourcenet <> _p.targetnet) THEN IF (_p.targetnet) THEN _qty = (pQty * -1); ELSE _qty = pQty; END IF; INSERT INTO invhist ( invhist_itemsite_id, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_docnumber, invhist_comments, invhist_transdate, invhist_invuom, invhist_unitcost, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_series) SELECT itemsite_id, 'NN', (_qty * -1), itemsite_qtyonhand, (itemsite_qtyonhand - _qty), '', '', _GlDistTS, uom_name, CASE WHEN (itemsite_costmethod='A') THEN avgcost(itemsite_id) ELSE stdCost(item_id) END, itemsite_costmethod, itemsite_value, itemsite_value, _itemlocSeries FROM item, itemsite, uom WHERE ( (itemsite_item_id=item_id) ANd (item_inv_uom_id=uom_id) AND (itemsite_controlmethod <> 'N') AND (itemsite_id=_p.itemsiteid) ); UPDATE itemsite SET itemsite_qtyonhand = (itemsite_qtyonhand - _qty), itemsite_nnqoh = (itemsite_nnqoh + _qty) WHERE (itemsite_id=_p.itemsiteid); END IF; -- Check to see if there is anything left at the target Itemloc and delete if not -- Could be zero if relocate increased a negative quantity to zero DELETE FROM itemloc WHERE ( (itemloc_qty=0) AND (itemloc_id=_targetItemlocid) ); -- Return the invhist_id RETURN _invhistid; END; $_$; lDROP FUNCTION public.relocateinventory(integer, integer, integer, numeric, text, timestamp with time zone); publicadminfalse83992X12551692658&reorderdate(integer, integer, boolean)FUNCTIONOCREATE FUNCTION reorderdate(integer, integer, boolean) RETURNS date LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pLookAhead ALIAS FOR $2; pIncludePlanned ALIAS FOR $3; _runningAvailability NUMERIC; _reorderLevel NUMERIC; _availability RECORD; BEGIN -- Make sure that we know how to handle the passed part IF ( SELECT (NOT (item_type IN ('M', 'P'))) FROM item, itemsite WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ) ) THEN RETURN NULL; END IF; -- Load the initial QOH SELECT itemsite_qtyonhand INTO _runningAvailability FROM itemsite WHERE (itemsite_id=pItemsiteid); -- Grab the Reorder Level, if any IF ( ( SELECT itemsite_useparams FROM itemsite WHERE (itemsite_id=pItemsiteid) ) ) THEN SELECT itemsite_reorderlevel INTO _reorderLevel FROM itemsite WHERE (itemsite_id=pItemsiteid); ELSE _reorderLevel := 0; END IF; -- If we are already below the Reorder Level then we should order ASAP IF (_runningAvailability <= _reorderLevel) THEN RETURN CURRENT_DATE; END IF; -- Grab all of the availability trigger points FOR _availability IN SELECT 1 AS seq, wo_duedate AS orderdate, (noNeg(wo_qtyord - wo_qtyrcv)) AS balance FROM wo WHERE ((wo_status IN ('O', 'E', 'R', 'I')) AND (wo_duedate <= (CURRENT_DATE + pLookAhead)) AND (wo_itemsite_id=pItemsiteid)) UNION SELECT 2 AS seq, womatl_duedate AS orderdate, (noNeg(itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyreq - womatl_qtyiss)) * -1) AS balance FROM womatl, wo, itemsite WHERE ((wo_status IN ('O', 'E', 'R', 'I')) AND (womatl_wo_id=wo_id) AND (womatl_itemsite_id=itemsite_id) AND (womatl_duedate <= (CURRENT_DATE + pLookahead)) AND (womatl_itemsite_id=pItemsiteid)) UNION SELECT 1 AS seq, poitem_duedate AS orderdate, (noNeg(poitem_qty_ordered - poitem_qty_received) * poitem_invvenduomratio) AS balance FROM pohead, poitem WHERE ((poitem_pohead_id=pohead_id) AND (poitem_status = 'O') AND (poitem_duedate <= (CURRENT_DATE + pLookAhead)) AND (poitem_itemsite_id=pItemsiteid)) UNION SELECT 2 AS seq, coitem_scheddate AS orderdate, (noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) * -1) AS balance FROM coitem, cohead WHERE ((coitem_status = 'O') AND (coitem_cohead_id=cohead_id) AND (coitem_scheddate <= (CURRENT_DATE + pLookAhead)) AND (coitem_itemsite_id=pItemsiteid)) UNION SELECT 2 AS seq, planord_startdate AS orderdate, (planreq_qty * -1) AS balance FROM planreq, planord WHERE ( (pIncludePlanned) AND (planreq_source='P') AND (planreq_source_id=planord_id) AND (planord_startdate <= (CURRENT_DATE + pLookAhead)) AND (planord_itemsite_id=pItemsiteid) ) UNION SELECT 1 AS seq, planord_duedate AS orderdate, planord_qty AS balance FROM planord WHERE ( (pIncludePlanned) AND (planord_duedate <= (CURRENT_DATE + pLookAhead)) AND (planord_itemsite_id=pItemsiteid) ) ORDER BY orderdate, seq LOOP -- Calculate the new projected availability _runningAvailability := (_runningAvailability + _availability.balance); -- Check to see if the project availability drop below the reorder level IF (_runningAvailability < _reorderLevel) THEN RETURN _availability.orderdate; END IF; END LOOP; -- The reorder level was not reached within the look ahead period RETURN NULL; END; $_$; =DROP FUNCTION public.reorderdate(integer, integer, boolean); publicadminfalse8399212551692659!replaceallvoidedapchecks(integer)FUNCTIONyCREATE FUNCTION replaceallvoidedapchecks(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'replaceAllVoidedAPChecks() is deprecated - use replaceAllVoidedChecks() instead'; RETURN replaceAllVoidedChecks($1); END; $_$; 8DROP FUNCTION public.replaceallvoidedapchecks(integer); publicadminfalse83992 12551692660replaceallvoidedchecks(integer)FUNCTIONSCREATE FUNCTION replaceallvoidedchecks(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankaccntid ALIAS FOR $1; _returnValue INTEGER := 0; BEGIN SELECT MIN(replaceVoidedCheck(checkhead_id)) INTO _returnValue FROM checkhead WHERE ( (checkhead_void) AND (NOT checkhead_posted) AND (NOT checkhead_replaced) AND (NOT checkhead_deleted) AND (checkhead_bankaccnt_id=pBankaccntid) ); RETURN _returnValue; END; $_$; 6DROP FUNCTION public.replaceallvoidedchecks(integer); publicadminfalse83992Y12551692661replacevoidedapcheck(integer)FUNCTIONaCREATE FUNCTION replacevoidedapcheck(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'replaceVoidedAPCheck() is deprecated - use replaceVoidedCheck()'; RETURN replaceVoidedCheck($1); END; $_$; 4DROP FUNCTION public.replacevoidedapcheck(integer); publicadminfalse83992Z12551692662replacevoidedcheck(integer)FUNCTION, CREATE FUNCTION replacevoidedcheck(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCheckid ALIAS FOR $1; _newCheckid INTEGER; BEGIN IF ( ( SELECT ( (NOT checkhead_void) OR checkhead_posted OR checkhead_replaced ) FROM checkhead WHERE (checkhead_id=pCheckid) ) ) THEN RETURN -1; END IF; -- has someone created a new check for one of the items while this was void? IF EXISTS (SELECT dup.checkitem_id FROM checkitem orig, checkitem dup, checkhead AS duphead WHERE ((COALESCE(orig.checkitem_aropen_id,-1)=COALESCE(dup.checkitem_aropen_id,-1)) AND (COALESCE(orig.checkitem_apopen_id,-1)=COALESCE(dup.checkitem_apopen_id,-1)) AND (orig.checkitem_checkhead_id!=dup.checkitem_checkhead_id) AND (dup.checkitem_checkhead_id=duphead.checkhead_id) AND (NOT duphead.checkhead_void) AND (orig.checkitem_checkhead_id=pCheckid))) THEN RETURN -2; END IF; SELECT NEXTVAL('checkhead_checkhead_id_seq') INTO _newCheckid; INSERT INTO checkhead ( checkhead_id, checkhead_recip_id, checkhead_recip_type, checkhead_bankaccnt_id, checkhead_checkdate, checkhead_number, checkhead_amount, checkhead_for, checkhead_journalnumber, checkhead_notes, checkhead_misc, checkhead_expcat_id, checkhead_curr_id ) SELECT _newCheckid, checkhead_recip_id, checkhead_recip_type, checkhead_bankaccnt_id, checkhead_checkdate, -1, -- fetchNextCheckNumber(checkhead_bankaccnt_id), checkhead_amount, checkhead_for, checkhead_journalnumber, checkhead_notes || ' Replaces voided check ' || checkhead_number, checkhead_misc, checkhead_expcat_id, checkhead_curr_id FROM checkhead WHERE (checkhead_id=pCheckid); INSERT INTO checkitem ( checkitem_checkhead_id, checkitem_amount, checkitem_discount, checkitem_ponumber, checkitem_vouchernumber, checkitem_invcnumber, checkitem_apopen_id, checkitem_aropen_id, checkitem_docdate, checkitem_curr_id, checkitem_curr_rate ) SELECT _newCheckid, checkitem_amount, checkitem_discount, checkitem_ponumber, checkitem_vouchernumber, checkitem_invcnumber, checkitem_apopen_id, checkitem_aropen_id, checkitem_docdate, checkitem_curr_id, checkitem_curr_rate FROM checkitem WHERE (checkitem_checkhead_id=pCheckid); UPDATE checkhead SET checkhead_replaced=TRUE WHERE (checkhead_id=pCheckid); RETURN _newCheckid; END; $_$; 2DROP FUNCTION public.replacevoidedcheck(integer); publicadminfalse83992[12551692663)reprioritizewo(integer, integer, boolean)FUNCTIONRCREATE FUNCTION reprioritizewo(integer, integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; pPriority ALIAS FOR $2; pChangeChildren ALIAS FOR $3; _status CHAR(1); _result INTEGER; BEGIN SELECT wo_status INTO _status FROM wo WHERE (wo_id=pWoid); IF (NOT (_status IN ('O', 'E','R','I'))) THEN return -1; END IF; UPDATE wo SET wo_priority=pPriority WHERE (wo_id=pWoid); IF ( (_status IN ('E','R','I')) AND (pChangeChildren) ) THEN SELECT COALESCE(MIN(reprioritizeWo(wo_id, pPriority, TRUE)), 1) INTO _result FROM wo WHERE ( (wo_ordtype='W') AND (wo_ordid=pWoid) ); ELSE _result = 1; END IF; RETURN _result; END; $_$; @DROP FUNCTION public.reprioritizewo(integer, integer, boolean); publicadminfalse83992\12551692664resetdbobjperms(text)FUNCTIONCREATE FUNCTION resetdbobjperms(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pObjname ALIAS FOR $1; BEGIN EXECUTE 'ALTER TABLE ' || pObjname || ' OWNER TO ' || getEffectiveXtUser() || ';'; EXECUTE 'REVOKE ALL ON ' || pObjname || ' FROM PUBLIC;'; EXECUTE 'GRANT ALL ON ' || pObjname || ' TO GROUP xtrole;'; RETURN 1; END; $_$; ,DROP FUNCTION public.resetdbobjperms(text); publicadminfalse83992]12551692665resetdbobjperms()FUNCTIONCREATE FUNCTION resetdbobjperms() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _count INTEGER := 0; BEGIN SELECT SUM(resetDBObjPerms(nspname || '.' || relname)) INTO _count FROM pg_catalog.pg_class, pg_catalog.pg_namespace WHERE (relkind IN ('r', 'S', 'v') AND (relnamespace=pg_namespace.oid) AND (nspname IN ('public', 'api'))); RETURN _count; END; $$; (DROP FUNCTION public.resetdbobjperms(); publicadminfalse83992^12551692666resetlowlevelcode(integer)FUNCTIONCREATE FUNCTION resetlowlevelcode(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemId ALIAS FOR $1; _result INTEGER; _counterNum INTEGER := 1; _feedBackNum INTEGER := 1; _r RECORD; BEGIN DELETE FROM costUpdate; IF pItemId = -1 THEN -- -1 is an invalid item_id => do them all INSERT INTO costUpdate ( costUpdate_item_id, costUpdate_item_type ) SELECT item_id, item_type FROM item; -- Recalculate the Item Lowlevel codes WHILE _feedBackNum > 0 LOOP SELECT updateLowlevel(_counterNum) INTO _feedBackNum; _counterNum := _counterNum + 1; END LOOP; ELSE INSERT INTO costUpdate ( costUpdate_item_id, costUpdate_item_type ) SELECT item_id, item_type FROM item WHERE (item_id=pItemId); FOR _r IN SELECT item_id, bomdata_bomwork_level, item_type FROM item, indentedBOM(pItemId, getActiveRevId('BOM',pItemId),0,0) WHERE (bomdata_item_id=item_id) ORDER BY bomdata_bomwork_level LOOP -- this only works because of the ORDER BY in the loop SELECT UPDATE costUpdate SET costupdate_lowlevel_code = _r.bomdata_bomwork_level WHERE (costupdate_item_id=_r.item_id); IF (NOT FOUND) THEN INSERT INTO costUpdate ( costUpdate_item_id, costUpdate_lowlevel_code, costUpdate_item_type ) VALUES ( _r.item_id, _r.bomdata_bomwork_level, _r.item_type ); END IF; END LOOP; END IF; SELECT count(*) INTO _result FROM costUpdate; RETURN _result; END; $_$; 1DROP FUNCTION public.resetlowlevelcode(integer); publicadminfalse83992_12551692667resetqohbalance(integer)FUNCTIONCREATE FUNCTION resetqohbalance(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN resetQOHBalance($1, CURRENT_TIMESTAMP); END; $_$; /DROP FUNCTION public.resetqohbalance(integer); publicadminfalse83992`125516926682resetqohbalance(integer, timestamp with time zone)FUNCTIONCREATE FUNCTION resetqohbalance(integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pGlDistTS ALIAS FOR $2; _invhistid INTEGER; _itemlocSeries INTEGER; BEGIN IF ( ( SELECT ( (itemsite_controlmethod IN ('L', 'S')) OR (item_type = 'R') OR (itemsite_costmethod = 'J') OR (itemsite_loccntrl) OR (itemsite_qtyonhand > 0) ) FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ) ) ) THEN RETURN 0; END IF; _itemlocSeries := NEXTVAL('itemloc_series_seq'); SELECT postInvTrans( itemsite_id, 'AD', (itemsite_qtyonhand * -1), 'I/M', '', '', 'RESET', 'Reset QOH Balance to 0', costcat_asset_accnt_id, costcat_adjustment_accnt_id, _itemlocSeries, pGlDistTS ) INTO _invhistid FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=pItemsiteid) ); PERFORM postItemLocSeries(_itemlocSeries); RETURN _invhistid; END; $_$; IDROP FUNCTION public.resetqohbalance(integer, timestamp with time zone); publicadminfalse83992a12551692669#resolvecosaccount(integer, integer)FUNCTION)CREATE FUNCTION resolvecosaccount(integer, integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN resolveCOSAccount($1, $2, -1, -1); END; $_$; :DROP FUNCTION public.resolvecosaccount(integer, integer); publicadminfalse83992b125517468035resolvecosaccount(integer, integer, integer, integer)FUNCTIONCREATE FUNCTION resolvecosaccount(pitemsiteid integer, pcustid integer, psaletypeid integer, pshipzoneid integer) RETURNS integer LANGUAGE plpgsql STABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _salesaccntid INTEGER; _accntid INTEGER; BEGIN SELECT findSalesAccnt(pItemsiteid, 'IS', pCustid, pSaletypeid, pShipzoneid) INTO _salesaccntid; IF (_salesaccntid = -1) THEN SELECT getUnassignedAccntId() INTO _accntid; ELSE SELECT salesaccnt_cos_accnt_id INTO _accntid FROM salesaccnt WHERE (salesaccnt_id=_salesaccntid); END IF; RETURN _accntid; END; $$; xDROP FUNCTION public.resolvecosaccount(pitemsiteid integer, pcustid integer, psaletypeid integer, pshipzoneid integer); publicadminfalse8399212551692670#resolvecowaccount(integer, integer)FUNCTION)CREATE FUNCTION resolvecowaccount(integer, integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN resolveCOWAccount($1, $2, -1, -1); END; $_$; :DROP FUNCTION public.resolvecowaccount(integer, integer); publicadminfalse83992c125517468045resolvecowaccount(integer, integer, integer, integer)FUNCTIONCREATE FUNCTION resolvecowaccount(pitemsiteid integer, pcustid integer, psaletypeid integer, pshipzoneid integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _salesaccntid INTEGER; _accntid INTEGER; BEGIN SELECT findSalesAccnt(pItemsiteid, 'IS', pCustid, pSaletypeid, pShipzoneid) INTO _salesaccntid; IF (_salesaccntid = -1) THEN SELECT getUnassignedAccntId() INTO _accntid; ELSE SELECT salesaccnt_cow_accnt_id INTO _accntid FROM salesaccnt WHERE (salesaccnt_id=_salesaccntid); END IF; RETURN _accntid; END; $$; xDROP FUNCTION public.resolvecowaccount(pitemsiteid integer, pcustid integer, psaletypeid integer, pshipzoneid integer); publicadminfalse8399212551692671&resolvecreditaccount(integer, integer)FUNCTION/CREATE FUNCTION resolvecreditaccount(integer, integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN resolveCreditAccount($1, $2, -1, -1); END; $_$; =DROP FUNCTION public.resolvecreditaccount(integer, integer); publicadminfalse83992g125517468058resolvecreditaccount(integer, integer, integer, integer)FUNCTIONCREATE FUNCTION resolvecreditaccount(pitemsiteid integer, pcustid integer, psaletypeid integer, pshipzoneid integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _salesaccntid INTEGER; _accntid INTEGER; BEGIN SELECT findSalesAccnt(pItemsiteid, 'IS', pCustid, pSaletypeid, pShipzoneid) INTO _salesaccntid; IF (_salesaccntid = -1) THEN SELECT getUnassignedAccntId() INTO _accntid; ELSE SELECT salesaccnt_credit_accnt_id INTO _accntid FROM salesaccnt WHERE (salesaccnt_id=_salesaccntid); END IF; RETURN _accntid; END; $$; {DROP FUNCTION public.resolvecreditaccount(pitemsiteid integer, pcustid integer, psaletypeid integer, pshipzoneid integer); publicadminfalse83992h12551692672%resolvesalesaccount(integer, integer)FUNCTION-CREATE FUNCTION resolvesalesaccount(integer, integer) RETURNS integer LANGUAGE plpgsql STABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN resolveSalesAccount($1, $2, -1, -1); END; $_$; <DROP FUNCTION public.resolvesalesaccount(integer, integer); publicadminfalse83992i125517468067resolvesalesaccount(integer, integer, integer, integer)FUNCTIONCREATE FUNCTION resolvesalesaccount(pitemsiteid integer, pcustid integer, psaletypeid integer, pshipzoneid integer) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _salesaccntid INTEGER; _accntid INTEGER; BEGIN SELECT findSalesAccnt(pItemsiteid, 'IS', pCustid, pSaletypeid, pShipzoneid) INTO _salesaccntid; IF (_salesaccntid = -1) THEN SELECT getUnassignedAccntId() INTO _accntid; ELSE SELECT salesaccnt_sales_accnt_id INTO _accntid FROM salesaccnt WHERE (salesaccnt_id=_salesaccntid); END IF; RETURN _accntid; END; $$; zDROP FUNCTION public.resolvesalesaccount(pitemsiteid integer, pcustid integer, psaletypeid integer, pshipzoneid integer); publicadminfalse83992j12551692673restoresaleshistory(integer)FUNCTIONCREATE FUNCTION restoresaleshistory(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAsohistid ALIAS FOR $1; BEGIN INSERT INTO cohist ( cohist_id, cohist_cust_id, cohist_itemsite_id, cohist_shipdate, cohist_invcdate, cohist_duedate, cohist_promisedate, cohist_ordernumber, cohist_invcnumber, cohist_qtyshipped, cohist_unitprice, cohist_unitcost, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_shipto_id, cohist_shipvia, cohist_salesrep_id, cohist_misc_type, cohist_misc_descrip, cohist_misc_id, cohist_commission, cohist_commissionpaid, cohist_doctype, cohist_orderdate, cohist_imported, cohist_ponumber, cohist_curr_id, cohist_taxtype_id, cohist_taxzone_id ) SELECT asohist_id, CASE asohist_cust_id WHEN -1 THEN NULL ELSE asohist_cust_id END, asohist_itemsite_id, asohist_shipdate, asohist_invcdate, asohist_duedate, asohist_promisedate, asohist_ordernumber, asohist_invcnumber, asohist_qtyshipped, asohist_unitprice, asohist_unitcost, asohist_billtoname, asohist_billtoaddress1, asohist_billtoaddress2, asohist_billtoaddress3, asohist_billtocity, asohist_billtostate, asohist_billtozip, asohist_shiptoname, asohist_shiptoaddress1, asohist_shiptoaddress2, asohist_shiptoaddress3, asohist_shiptocity, asohist_shiptostate, asohist_shiptozip, asohist_shipto_id, asohist_shipvia, CASE asohist_salesrep_id WHEN -1 THEN NULL ELSE asohist_salesrep_id END, asohist_misc_type, asohist_misc_descrip, asohist_misc_id, asohist_commission, asohist_commissionpaid, asohist_doctype, asohist_orderdate, asohist_imported, asohist_ponumber, asohist_curr_id, asohist_taxtype_id, asohist_taxzone_id FROM asohist WHERE (asohist_id=pAsohistid); INSERT INTO cohisttax ( taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber ) SELECT taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber FROM asohisttax WHERE (taxhist_parent_id=pAsohistid); DELETE FROM asohisttax WHERE (taxhist_parent_id=pAsohistid); DELETE FROM asohist WHERE (asohist_id=pAsohistid); RETURN pAsohistid; END; $_$; 3DROP FUNCTION public.restoresaleshistory(integer); publicadminfalse8399212551692674returncompleteshipment(integer)FUNCTION+CREATE FUNCTION returncompleteshipment(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN returnCompleteShipment($1, 0, CURRENT_TIMESTAMP); END; $_$; 6DROP FUNCTION public.returncompleteshipment(integer); publicadminfalse83992l12551692675Breturncompleteshipment(integer, integer, timestamp with time zone)FUNCTIONKCREATE FUNCTION returncompleteshipment(integer, integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pshipheadid ALIAS FOR $1; _itemlocSeries INTEGER := $2; _timestamp TIMESTAMP WITH TIME ZONE := $3; _r RECORD; _result RECORD; _shiphead_number TEXT := ''; _count INTEGER := 0; _countsum INTEGER := 0; BEGIN FOR _r IN SELECT shipitem_id FROM shipitem, shiphead WHERE ( (shipitem_shiphead_id=shiphead_id) AND (NOT shiphead_shipped) AND (shiphead_id=pshipheadid) ) LOOP _itemlocSeries := returnShipmentTransaction(_r.shipitem_id, _itemlocSeries, _timestamp); END LOOP; FOR _result IN SELECT shiphead_number FROM shiphead WHERE ( (shiphead_id=pshipheadid) ) LOOP _shiphead_number := _result.shiphead_number; END LOOP; SELECT COUNT(*) INTO _count FROM shipdata WHERE(shipdata_shiphead_number=_shiphead_number); SELECT COUNT(*) INTO _countsum FROM shipdatasum WHERE(shipdatasum_shiphead_number=_shiphead_number); IF (_count > 0) THEN DELETE FROM shipdata WHERE(shipdata_shiphead_number=_shiphead_number); END IF; IF (_countsum > 0) THEN DELETE FROM shipdatasum WHERE(shipdatasum_shiphead_number=_shiphead_number); END IF; DELETE FROM pack WHERE(pack_shiphead_id=pshipheadid); DELETE FROM shiphead WHERE (shiphead_id=pshipheadid); RETURN _itemlocSeries; END; $_$; YDROP FUNCTION public.returncompleteshipment(integer, integer, timestamp with time zone); publicadminfalse83992n12551692676%returnitemshipments(integer, integer)FUNCTION5CREATE FUNCTION returnitemshipments(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN returnItemShipments('SO', $1, $2, CURRENT_TIMESTAMP); END; $_$; <DROP FUNCTION public.returnitemshipments(integer, integer); publicadminfalse83992m12551692677returnitemshipments(integer)FUNCTION+CREATE FUNCTION returnitemshipments(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN returnItemShipments('SO', $1, 0, CURRENT_TIMESTAMP); END; $_$; 3DROP FUNCTION public.returnitemshipments(integer); publicadminfalse83992o12551692678Ereturnitemshipments(text, integer, integer, timestamp with time zone)FUNCTIONCREATE FUNCTION returnitemshipments(text, integer, integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; pitemid ALIAS FOR $2; _itemlocSeries INTEGER := $3; _timestamp TIMESTAMP WITH TIME ZONE := $4; _invhistid INTEGER; _r RECORD; BEGIN IF (COALESCE(_itemlocSeries,0) = 0 ) THEN _itemlocSeries := NEXTVAL('itemloc_series_seq'); END IF; FOR _r IN SELECT shipitem_id FROM shipitem JOIN shiphead ON (shiphead_id=shipitem_shiphead_id) WHERE ((NOT shiphead_shipped) AND (shiphead_order_type=pordertype) AND (shipitem_orderitem_id=pitemid)) LOOP SELECT returnShipmentTransaction(_r.shipitem_id, _itemlocSeries, _timestamp) INTO _itemlocSeries; IF (_itemlocSeries < 0) THEN RETURN _itemlocSeries; END IF; END LOOP; RETURN _itemlocSeries; END; $_$; \DROP FUNCTION public.returnitemshipments(text, integer, integer, timestamp with time zone); publicadminfalse8399212551692679"returnshipmenttransaction(integer)FUNCTION1CREATE FUNCTION returnshipmenttransaction(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN returnShipmentTransaction($1, 0, CURRENT_TIMESTAMP); END; $_$; 9DROP FUNCTION public.returnshipmenttransaction(integer); publicadminfalse8399212551692680+returnshipmenttransaction(integer, integer)FUNCTION;CREATE FUNCTION returnshipmenttransaction(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN returnShipmentTransaction($1, $2, CURRENT_TIMESTAMP); END; $_$; BDROP FUNCTION public.returnshipmenttransaction(integer, integer); publicadminfalse83992p12551692681Ereturnshipmenttransaction(integer, integer, timestamp with time zone)FUNCTION$CREATE FUNCTION returnshipmenttransaction(integer, integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipitemId ALIAS FOR $1; pItemlocSeries ALIAS FOR $2; pTimestamp ALIAS FOR $3; _itemlocSeries INTEGER; _invhistid INTEGER; _itemlocrsrvid INTEGER; _coheadid INTEGER; _rows INTEGER; _r RECORD; _rsrv RECORD; BEGIN IF (COALESCE(pItemlocSeries, 0) = 0 ) THEN _itemlocSeries := NEXTVAL('itemloc_series_seq'); ELSE _itemlocSeries := pItemlocSeries; END IF; -- Find the shipment transaction record SELECT shipitem.*, shiphead_id, shiphead_number, shiphead_order_type, invhist_series, itemsite_loccntrl, itemsite_costmethod, itemsite_controlmethod, cohead_prj_id AS prj_id INTO _r FROM shipitem JOIN shiphead ON (shiphead_id=shipitem_shiphead_id) JOIN invhist ON (invhist_id=shipitem_invhist_id) JOIN itemsite ON (itemsite_id=invhist_itemsite_id) LEFT OUTER JOIN cohead ON ((shiphead_order_type = 'SO') AND (shiphead_order_id = cohead_id)) WHERE ((NOT shiphead_shipped) AND (shipitem_id=pShipitemId)); GET DIAGNOSTICS _rows = ROW_COUNT; IF (_rows = 0 ) THEN -- Was it a non-controlled sales order item? SELECT shipitem.*, shiphead_id, shiphead_number, shiphead_order_type, itemsite_loccntrl, itemsite_costmethod, itemsite_controlmethod, cohead_prj_id AS prj_id INTO _r FROM shipitem JOIN shiphead ON (shiphead_id=shipitem_shiphead_id) JOIN coitem ON (shipitem_orderitem_id=coitem_id) JOIN cohead ON (cohead_id=coitem_cohead_id) JOIN itemsite ON (itemsite_id=coitem_itemsite_id) WHERE ((NOT shiphead_shipped) AND (shipitem_id=pShipitemId) AND (shiphead_order_type = 'SO')); END IF; GET DIAGNOSTICS _rows = ROW_COUNT; IF (_rows = 0 AND fetchmetricbool('MultiWhs') ) THEN -- Was it a non-controlled transfer order item? SELECT shipitem.*, shiphead_id, shiphead_number, shiphead_order_type, itemsite_loccntrl, itemsite_costmethod, itemsite_controlmethod, NULL AS prj_id INTO _r FROM shipitem JOIN shiphead ON (shiphead_id=shipitem_shiphead_id) JOIN toitem ON (shipitem_orderitem_id=toitem_id) JOIN itemsite ON (itemsite_id=coitem_itemsite_id) WHERE ((NOT shiphead_shipped) AND (shipitem_id=pShipitemId) AND (shiphead_order_type = 'TO')); END IF; IF (_rows > 0 ) THEN IF (_r.shiphead_order_type = 'SO') THEN -- Handle inventory transaction IF (_r.itemsite_controlmethod != 'N' OR _r.itemsite_costmethod = 'J') THEN SELECT postInvTrans( itemsite_id, 'RS', (_r.shipitem_qty * coitem_qty_invuomratio), 'S/R', _r.shiphead_order_type, formatSoNumber(_r.shipitem_orderitem_id), shiphead_number, 'Return from Shipping', costcat_asset_accnt_id, getPrjAccntId(_r.prj_id, costcat_shipasset_accnt_id), _itemlocSeries, pTimestamp, _r.shipitem_value, _r.shipitem_invhist_id ) INTO _invhistid FROM coitem, itemsite, costcat, shiphead, shipitem WHERE ((coitem_itemsite_id=itemsite_id) AND (itemsite_costcat_id=costcat_id) AND (coitem_id=_r.shipitem_orderitem_id) AND (shiphead_order_type=_r.shiphead_order_type) AND (shiphead_id=shipitem_shiphead_id) AND (shipitem_orderitem_id=_r.shipitem_orderitem_id)); -- We know the distribution so post this through so the any w/o activity knows about it PERFORM postItemlocseries(_itemlocSeries); END IF; IF (_r.itemsite_costmethod = 'J') THEN -- Reopen the work order UPDATE wo SET wo_status = 'I' WHERE ((wo_ordtype='S') AND (wo_ordid=_r.shipitem_orderitem_id)); -- Job cost, so correct Production Posting referencing original receipt for reverse info. PERFORM correctProduction(wo_id, invhist_invqty, false, _itemlocSeries, pTimestamp, invhist_id) FROM wo, invhist WHERE ((wo_ordtype = 'S') AND (wo_ordid = _r.shipitem_orderitem_id) AND (invhist_series=_r.invhist_series) AND (invhist_transtype='RM')); -- Return eligble material PERFORM returnWoMaterial(womatlpost_womatl_id, _itemlocSeries, pTimestamp, womatlpost_invhist_id) FROM womatlpost, invhist m, invhist s WHERE ((womatlpost_invhist_id=m.invhist_id) AND (m.invhist_series=s.invhist_series) AND (m.invhist_transtype='IM') AND (s.invhist_id=_r.shipitem_invhist_id)); END IF; -- end Job Costing ELSIF (_r.shiphead_order_type = 'TO') THEN SELECT postInvTrans(itemsite_id, 'RS', _r.shipitem_qty, 'S/R', _r.shiphead_order_type, formatToNumber(toitem_id), tohead_number, 'Return from Shipping', costcat_asset_accnt_id, costcat_shipasset_accnt_id, _itemlocSeries, pTimestamp, _r.shipitem_value, _r.shipitem_invhist_id ) INTO _invhistid FROM toitem, tohead, itemsite, costcat WHERE ((toitem_item_id=itemsite_item_id) AND (toitem_tohead_id=tohead_id) AND (tohead_src_warehous_id=itemsite_warehous_id) AND (itemsite_costcat_id=costcat_id) AND (toitem_id=_r.shipitem_orderitem_id)); ELSE -- Don't know what kind of order this is RETURN -11; END IF; UPDATE shiphead SET shiphead_sfstatus='D' WHERE ((shiphead_id=_r.shiphead_id) AND (shiphead_sfstatus='P')); -- Handle reservation if applicable IF (fetchmetricbool('EnableSOReservations')) THEN UPDATE coitem SET coitem_qtyreserved = (coitem_qtyreserved + shipitemrsrv_qty) FROM shipitemrsrv WHERE ((coitem_id=_r.shipitem_orderitem_id) AND (shipitemrsrv_shipitem_id=_r.shipitem_id)); -- Handle location reservations if applicable FOR _rsrv IN SELECT * FROM shipitemlocrsrv WHERE (shipitemlocrsrv_shipitem_id=_r.shipitem_id) LOOP -- See if a reservation record still exists SELECT itemlocrsrv_id, itemlocrsrv_qty INTO _itemlocrsrvid FROM itemlocrsrv JOIN itemloc ON (itemlocrsrv_itemloc_id=itemloc_id) WHERE ((itemlocrsrv_source = 'SO') AND (itemlocrsrv_source_id = _r.shipitem_orderitem_id ) AND (itemloc_itemsite_id=_rsrv.shipitemlocrsrv_itemsite_id) AND (itemloc_location_id=_rsrv.shipitemlocrsrv_location_id) AND (COALESCE(itemloc_ls_id, -1)=COALESCE(_rsrv.shipitemlocrsrv_ls_id, -1)) AND (COALESCE(itemloc_expiration, endOfTime())=COALESCE(_rsrv.shipitemlocrsrv_expiration, endOfTime())) AND (COALESCE(itemloc_warrpurc, endoftime())=COALESCE(_rsrv.shipitemlocrsrv_warrpurc, endoftime())) ); GET DIAGNOSTICS _rows = ROW_COUNT; IF (_rows > 0 ) THEN -- Update existing UPDATE itemlocrsrv SET itemlocrsrv_qty = (itemlocrsrv_qty + _rsrv.shipitemlocrsrv_qty) WHERE (itemlocrsrv_id=_itemlocrsvrid); ELSE -- Recreate record INSERT INTO itemlocrsrv SELECT nextval('itemlocrsrv_itemlocrsrv_id_seq'), 'SO', _r.shipitem_orderitem_id, itemloc_id, _rsrv.shipitemlocrsrv_qty FROM itemloc WHERE ((itemloc_itemsite_id=_rsrv.shipitemlocrsrv_itemsite_id) AND (itemloc_location_id=_rsrv.shipitemlocrsrv_location_id) AND (COALESCE(itemloc_ls_id, -1)=COALESCE(_rsrv.shipitemlocrsrv_ls_id, -1)) AND (COALESCE(itemloc_expiration, endOfTime())=COALESCE(_rsrv.shipitemlocrsrv_expiration, endOfTime())) AND (COALESCE(itemloc_warrpurc, endoftime())=COALESCE(_rsrv.shipitemlocrsrv_warrpurc, endoftime())) ); END IF; END LOOP; END IF; DELETE FROM shipitem WHERE (shipitem_id = _r.shipitem_id ); -- Clean up if this is the last shipitem on the shipment IF (NOT EXISTS(SELECT shipitem_shiphead_id FROM shipitem WHERE (shipitem_shiphead_id=_r.shiphead_id))) THEN DELETE FROM shipdata WHERE(shipdata_shiphead_number=_r.shiphead_number); DELETE FROM shipdatasum WHERE(shipdatasum_shiphead_number=_r.shiphead_number); DELETE FROM pack WHERE(pack_shiphead_id=_r.shiphead_id); DELETE FROM shiphead WHERE (shiphead_id=_r.shiphead_id); END IF; END IF; RETURN _itemlocSeries; END; $_$; \DROP FUNCTION public.returnshipmenttransaction(integer, integer, timestamp with time zone); publicadminfalse83992q12551692684<returnwomaterial(integer, numeric, timestamp with time zone)FUNCTIONCREATE FUNCTION returnwomaterial(integer, numeric, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; pGlDistTS ALIAS FOR $3; _itemlocSeries INTEGER; BEGIN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; RETURN returnWoMaterial(pWomatlid, pQty, _itemlocSeries, pGlDistTS); END; $_$; SDROP FUNCTION public.returnwomaterial(integer, numeric, timestamp with time zone); publicadminfalse83992r12551692685Ereturnwomaterial(integer, integer, timestamp with time zone, integer)FUNCTIONCREATE FUNCTION returnwomaterial(integer, integer, timestamp with time zone, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pItemlocSeries ALIAS FOR $2; pGlDistTS ALIAS FOR $3; pInvhistId ALIAS FOR $4; _woNumber TEXT; _invhistid INTEGER; _itemlocSeries INTEGER; _invqty NUMERIC; _womatlqty NUMERIC; _cost NUMERIC := 0; _rows INTEGER; BEGIN _itemlocSeries := 0; SELECT invhist_invqty, invhist_invqty * invhist_unitcost INTO _invqty, _cost FROM invhist WHERE (invhist_id=pInvhistId); GET DIAGNOSTICS _rows = ROW_COUNT; IF (_rows = 0) THEN RAISE EXCEPTION 'No transaction found for invhist_id %', pInvhistId; END IF; SELECT itemuomtouom(itemsite_item_id, NULL, womatl_uom_id, _invqty) INTO _womatlqty FROM womatl, itemsite WHERE((womatl_itemsite_id=itemsite_id) AND (womatl_id=pWomatlid)); GET DIAGNOSTICS _rows = ROW_COUNT; IF (_rows = 0) THEN _womatlqty := _invqty; END IF; IF ( SELECT ( CASE WHEN (womatl_qtyreq >= 0) THEN womatl_qtyiss < _womatlqty ELSE womatl_qtyiss > _womatlqty END ) FROM womatl WHERE ( womatl_id=pWomatlid ) ) THEN RETURN pItemlocSeries; END IF; SELECT formatWoNumber(womatl_wo_id) INTO _woNumber FROM womatl WHERE (womatl_id=pWomatlid); IF (pItemlocSeries = 0) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; ELSE _itemlocSeries = pItemlocSeries; END IF; -- Post the transaction SELECT postInvTrans( ci.itemsite_id, 'IM', (_invqty * -1), 'W/O', 'WO', _woNumber, '', ('Return ' || item_number || ' from Work Order'), getPrjAccntId(wo_prj_id, pc.costcat_wip_accnt_id), cc.costcat_asset_accnt_id, _itemlocSeries, pGlDistTS, -- Cost will be ignored by Standard Cost items sites _cost, pInvhistId) INTO _invhistid FROM womatl, wo, itemsite AS ci, costcat AS cc, itemsite AS pi, costcat AS pc, item WHERE((womatl_itemsite_id=ci.itemsite_id) AND (ci.itemsite_costcat_id=cc.costcat_id) AND (womatl_wo_id=wo_id) AND (wo_itemsite_id=pi.itemsite_id) AND (pi.itemsite_costcat_id=pc.costcat_id) AND (ci.itemsite_item_id=item_id) AND (womatl_id=pWomatlid) ); -- Create linkage to the transaction created INSERT INTO womatlpost (womatlpost_womatl_id,womatlpost_invhist_id) VALUES (pWomatlid,_invhistid); -- Decrease the parent W/O's WIP value by the value of the returned components UPDATE wo SET wo_wipvalue = (wo_wipvalue - (CASE WHEN(itemsite_costmethod IN ('A','J')) THEN _cost WHEN(itemsite_costmethod='S') THEN stdcost(itemsite_item_id) * _invqty ELSE 0.0 END )), wo_postedvalue = (wo_postedvalue - (CASE WHEN(itemsite_costmethod IN ('A','J')) THEN _cost WHEN(itemsite_costmethod='S') THEN stdcost(itemsite_item_id) * _invqty ELSE 0.0 END )) FROM womatl, itemsite WHERE ( (wo_id=womatl_wo_id) AND (womatl_itemsite_id=itemsite_id) AND (womatl_id=pWomatlid) ); UPDATE womatl SET womatl_qtyiss = (womatl_qtyiss - _womatlqty), womatl_lastreturn = CURRENT_DATE WHERE (womatl_id=pWomatlid); RETURN _itemlocSeries; END; $_$; \DROP FUNCTION public.returnwomaterial(integer, integer, timestamp with time zone, integer); publicadminfalse83992"00NFUNCTION returnwomaterial(integer, integer, timestamp with time zone, integer)COMMENTCOMMENT ON FUNCTION returnwomaterial(integer, integer, timestamp with time zone, integer) IS 'Returns material by reversing a specific historical transaction'; publicadminfalse1906v12551761040Nreturnwomaterial(integer, numeric, integer, timestamp with time zone, boolean)FUNCTION CREATE FUNCTION returnwomaterial(integer, numeric, integer, timestamp with time zone, boolean DEFAULT false) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; pItemlocSeries ALIAS FOR $3; pGlDistTS ALIAS FOR $4; pReqStdCost ALIAS FOR $5; _woNumber TEXT; _invhistid INTEGER; _itemlocSeries INTEGER; _qty NUMERIC; _cost NUMERIC := 0; BEGIN _itemlocSeries := 0; IF ( SELECT ( CASE WHEN (womatl_qtyreq >= 0) THEN womatl_qtyiss < pQty ELSE womatl_qtyiss > pQty END ) FROM womatl WHERE ( womatl_id=pWomatlid ) ) THEN RETURN pItemlocSeries; END IF; SELECT itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, pQty) INTO _qty FROM womatl, itemsite WHERE((womatl_itemsite_id=itemsite_id) AND (womatl_id=pWomatlid)); IF (NOT FOUND) THEN _qty := pQty; END IF; SELECT formatWoNumber(womatl_wo_id) INTO _woNumber FROM womatl WHERE (womatl_id=pWomatlid); IF (pItemlocSeries = 0) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; ELSE _itemlocSeries = pItemlocSeries; END IF; -- Get the cost average IF (pReqStdCost) THEN SELECT stdcost(itemsite_item_id) * _qty INTO _cost FROM womatl, itemsite WHERE((womatl_itemsite_id=itemsite_id) AND (womatl_id=pWomatlid)); ELSE SELECT SUM(invhist_value_before - invhist_value_after) / SUM(invhist_qoh_before - invhist_qoh_after) * _qty INTO _cost FROM invhist, womatlpost, womatl WHERE((womatlpost_womatl_id=womatl_id) AND (womatlpost_invhist_id=invhist_id) AND (invhist_qoh_before > invhist_qoh_after) AND (womatl_id=pWomatlId)); END IF; _cost := COALESCE(_cost, 0); -- make sure it's not a null value -- Post the transaction SELECT postInvTrans( ci.itemsite_id, 'IM', (_qty * -1), 'W/O', 'WO', _woNumber, '', ('Return ' || item_number || ' from Work Order'), getPrjAccntId(wo_prj_id, pc.costcat_wip_accnt_id), cc.costcat_asset_accnt_id, _itemlocSeries, pGlDistTS, -- Cost will be ignored by Standard Cost items sites _cost) INTO _invhistid FROM womatl, wo, itemsite AS ci, costcat AS cc, itemsite AS pi, costcat AS pc, item WHERE((womatl_itemsite_id=ci.itemsite_id) AND (ci.itemsite_costcat_id=cc.costcat_id) AND (womatl_wo_id=wo_id) AND (wo_itemsite_id=pi.itemsite_id) AND (pi.itemsite_costcat_id=pc.costcat_id) AND (ci.itemsite_item_id=item_id) AND (womatl_id=pWomatlid) ); -- Create linkage to the transaction created IF (_invhistid != -1) THEN INSERT INTO womatlpost (womatlpost_womatl_id,womatlpost_invhist_id) VALUES (pWomatlid,_invhistid); END IF; -- Decrease the parent W/O's WIP value by the value of the returned components UPDATE wo SET wo_wipvalue = (wo_wipvalue - (CASE WHEN(itemsite_costmethod IN ('A','J')) THEN _cost WHEN(itemsite_costmethod='S') THEN stdcost(itemsite_item_id) * _qty ELSE 0.0 END )), wo_postedvalue = (wo_postedvalue - (CASE WHEN(itemsite_costmethod IN ('A','J')) THEN _cost WHEN(itemsite_costmethod='S') THEN stdcost(itemsite_item_id) * _qty ELSE 0.0 END )) FROM womatl, itemsite WHERE ( (wo_id=womatl_wo_id) AND (womatl_itemsite_id=itemsite_id) AND (womatl_id=pWomatlid) ); UPDATE womatl SET womatl_qtyiss = (womatl_qtyiss - pQty), womatl_lastreturn = CURRENT_DATE WHERE (womatl_id=pWomatlid); RETURN _itemlocSeries; END; $_$; eDROP FUNCTION public.returnwomaterial(integer, numeric, integer, timestamp with time zone, boolean); publicadminfalse83992w12551692686returnwomaterialbatch(integer)FUNCTIONCREATE FUNCTION returnwomaterialbatch(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoid ALIAS FOR $1; _itemlocSeries INTEGER; _woid INTEGER; _r RECORD; BEGIN SELECT wo_id INTO _woid FROM wo WHERE ( (wo_status IN ('E','I')) AND (wo_id=pWoid) ); IF (FOUND) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; FOR _r IN SELECT womatl_id, CASE WHEN wo_qtyord >= 0 THEN womatl_qtyiss ELSE ((womatl_qtyreq - womatl_qtyiss) * -1) END AS qty FROM wo, womatl, itemsite WHERE ((wo_id=womatl_wo_id) AND (womatl_itemsite_id=itemsite_id) AND ( (wo_qtyord < 0) OR (womatl_issuemethod IN ('S','M')) ) AND (womatl_wo_id=pWoid)) LOOP IF (_r.qty != 0) THEN PERFORM returnWoMaterial(_r.womatl_id, _r.qty, _itemlocSeries, now()); END IF; END LOOP; -- Reset the W/O Status to E UPDATE wo SET wo_status='E' WHERE (wo_id=pWoid); RETURN _itemlocSeries; ELSE RETURN -1; END IF; END; $_$; 5DROP FUNCTION public.returnwomaterialbatch(integer); publicadminfalse8399212551692687$reversecashreceipt(integer, integer)FUNCTION.CREATE FUNCTION reversecashreceipt(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCashrcptid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; _p RECORD; _r RECORD; _postToAR NUMERIC; _postToMisc NUMERIC; _posted_base NUMERIC := 0; _posted NUMERIC := 0; _sequence INTEGER; _aropenid INTEGER; _arMemoNumber TEXT; _arAccntid INTEGER; _closed BOOLEAN; _debitAccntid INTEGER; _exchGain NUMERIC; _comment TEXT; BEGIN _posted := 0; _posted_base := 0; SELECT fetchGLSequence() INTO _sequence; SELECT accnt_id INTO _arAccntid FROM cashrcpt, accnt, salescat WHERE ((cashrcpt_salescat_id=salescat_id) AND (salescat_ar_accnt_id=accnt_id) AND (cashrcpt_id=pCashrcptid)); IF (NOT FOUND) THEN SELECT accnt_id INTO _arAccntid FROM cashrcpt, accnt WHERE ( (findARAccount(cashrcpt_cust_id)=accnt_id) AND (cashrcpt_id=pCashrcptid) ); IF (NOT FOUND) THEN RETURN -5; END IF; END IF; SELECT cashrcpt_cust_id, ('Reverse Cash Receipt posting for ' || cust_number||'-'||cust_name) AS custnote, cashrcpt_fundstype, cashrcpt_number, cashrcpt_docnumber, cashrcpt_distdate, cashrcpt_amount, cashrcpt_discount, (cashrcpt_amount / cashrcpt_curr_rate) AS cashrcpt_amount_base, (cashrcpt_discount / cashrcpt_curr_rate) AS cashrcpt_discount_base, cashrcpt_notes, cashrcpt_bankaccnt_id AS bankaccnt_id, accnt_id AS prepaid_accnt_id, cashrcpt_usecustdeposit, cashrcpt_curr_id, cashrcpt_curr_rate INTO _p FROM accnt, cashrcpt LEFT OUTER JOIN custinfo ON (cashrcpt_cust_id=cust_id) WHERE ( (findPrepaidAccount(cashrcpt_cust_id)=accnt_id) AND (cashrcpt_id=pCashrcptid) ); IF (NOT FOUND) THEN RETURN -7; END IF; IF (_p.cashrcpt_fundstype IN ('A', 'D', 'M', 'V')) THEN IF NOT EXISTS(SELECT ccpay_id FROM ccpay WHERE ((ccpay_order_number=CAST(pCashrcptid AS TEXT)) AND (ccpay_status IN ('C', 'A')))) THEN RETURN -8; END IF; _debitAccntid := findPrepaidAccount(_p.cashrcpt_cust_id); ELSE SELECT accnt_id INTO _debitAccntid FROM cashrcpt, bankaccnt, accnt WHERE ( (cashrcpt_bankaccnt_id=bankaccnt_id) AND (bankaccnt_accnt_id=accnt_id) AND (cashrcpt_id=pCashrcptid) ); IF (NOT FOUND) THEN RETURN -6; END IF; END IF; -- Determine the amount to post to A/R Open Items SELECT COALESCE(SUM(cashrcptitem_amount),0) INTO _postToAR FROM cashrcptitem JOIN aropen ON (aropen_id=cashrcptitem_aropen_id) WHERE ((cashrcptitem_cashrcpt_id=pCashrcptid) AND (cashrcptitem_applied)); IF (NOT FOUND) THEN _postToAR := 0; END IF; -- Determine the amount to post to Misc. Distributions SELECT COALESCE(SUM(cashrcptmisc_amount),0) INTO _postToMisc FROM cashrcptmisc WHERE (cashrcptmisc_cashrcpt_id=pCashrcptid); IF (NOT FOUND) THEN _postToMisc := 0; END IF; -- Check to see if the C/R is over applied IF ((_postToAR + _postToMisc) > _p.cashrcpt_amount) THEN RETURN -1; END IF; -- Check to see if the C/R is positive amount IF (_p.cashrcpt_amount <= 0) THEN RETURN -2; END IF; -- Distribute A/R Applications FOR _r IN SELECT aropen_id, aropen_doctype, aropen_docnumber, aropen_docdate, aropen_duedate, aropen_curr_id, aropen_curr_rate, round(aropen_amount - aropen_paid, 2) <= round(aropen_paid + currToCurr(_p.cashrcpt_curr_id, aropen_curr_id,abs(cashrcptitem_amount + cashrcptitem_discount),_p.cashrcpt_distdate),2) AS closed, cashrcptitem_id, cashrcptitem_amount, cashrcptitem_discount, (cashrcptitem_amount / _p.cashrcpt_curr_rate) AS cashrcptitem_amount_base, (cashrcptitem_discount / _p.cashrcpt_curr_rate) AS cashrcptitem_discount_base, round(aropen_paid - currToCurr(_p.cashrcpt_curr_id, aropen_curr_id,abs(cashrcptitem_amount),_p.cashrcpt_distdate),2) AS new_paid, round(currToCurr(_p.cashrcpt_curr_id, aropen_curr_id,abs(cashrcptitem_discount),_p.cashrcpt_distdate),2) AS new_discount FROM cashrcptitem JOIN aropen ON (cashrcptitem_aropen_id=aropen_id) WHERE ((cashrcptitem_cashrcpt_id=pCashrcptid) AND (cashrcptitem_applied)) LOOP -- Handle discount IF (_r.cashrcptitem_discount_base > 0) THEN PERFORM reverseCashReceiptDisc(_r.cashrcptitem_id, pJournalNumber); END IF; -- Update the aropen item to post the paid amount UPDATE aropen SET aropen_paid = _r.new_paid - _r.new_discount, aropen_open = TRUE, aropen_closedate = NULL WHERE (aropen_id=_r.aropen_id); -- Cache the running amount posted _posted_base := _posted_base + _r.cashrcptitem_amount_base; _posted := _posted + _r.cashrcptitem_amount; -- Record the cashrcpt application IF (_r.aropen_doctype IN ('I','D')) THEN INSERT INTO arapply ( arapply_cust_id, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_fundstype, arapply_refnumber, arapply_reftype, arapply_ref_id, arapply_applied, arapply_closed, arapply_postdate, arapply_distdate, arapply_journalnumber, arapply_username, arapply_curr_id ) VALUES ( _p.cashrcpt_cust_id, -1, 'K', _p.cashrcpt_number, _r.aropen_id, _r.aropen_doctype, _r.aropen_docnumber, _p.cashrcpt_fundstype, _p.cashrcpt_docnumber, 'CRA', _r.cashrcptitem_id, (round(_r.cashrcptitem_amount, 2) * -1.0), _r.closed, CURRENT_DATE, _p.cashrcpt_distdate, pJournalNumber, getEffectiveXtUser(), _p.cashrcpt_curr_id ); ELSE INSERT INTO arapply ( arapply_cust_id, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_fundstype, arapply_refnumber, arapply_reftype, arapply_ref_id, arapply_applied, arapply_closed, arapply_postdate, arapply_distdate, arapply_journalnumber, arapply_username, arapply_curr_id ) VALUES ( _p.cashrcpt_cust_id, _r.aropen_id, _r.aropen_doctype, _r.aropen_docnumber, -1, 'R', _p.cashrcpt_number, '', '', 'CRA', _r.cashrcptitem_id, (round(abs(_r.cashrcptitem_amount), 2) * -1.0), _r.closed, CURRENT_DATE, _p.cashrcpt_distdate, pJournalNumber, getEffectiveXtUser(), _p.cashrcpt_curr_id ); END IF; _exchGain := arCurrGain(_r.aropen_id,_p.cashrcpt_curr_id, abs(_r.cashrcptitem_amount), _p.cashrcpt_distdate); PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CR', (_r.aropen_doctype || '-' || _r.aropen_docnumber), CASE WHEN _r.aropen_doctype != 'R' THEN _arAccntid ELSE findDeferredAccount(_p.cashrcpt_cust_id) END, (round(_r.cashrcptitem_amount_base + _exchGain, 2) * -1.0), _p.cashrcpt_distdate, _p.custnote ); IF (_exchGain <> 0) THEN PERFORM insertIntoGLSeries(_sequence, 'A/R', 'CR', _r.aropen_doctype || '-' || _r.aropen_docnumber, getGainLossAccntId( CASE WHEN _r.aropen_doctype != 'R' THEN _arAccntid ELSE findDeferredAccount(_p.cashrcpt_cust_id) END ), round(_exchGain, 2), _p.cashrcpt_distdate, _p.custnote); END IF; END LOOP; -- Distribute Misc. Applications FOR _r IN SELECT cashrcptmisc_id, cashrcptmisc_accnt_id, cashrcptmisc_amount, (cashrcptmisc_amount / _p.cashrcpt_curr_rate) AS cashrcptmisc_amount_base, cashrcptmisc_notes FROM cashrcptmisc WHERE (cashrcptmisc_cashrcpt_id=pCashrcptid) LOOP -- Cache the running amount posted _posted_base := (_posted_base + _r.cashrcptmisc_amount_base); _posted := (_posted + _r.cashrcptmisc_amount); -- Record the cashrcpt application INSERT INTO arapply ( arapply_cust_id, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_fundstype, arapply_refnumber, arapply_applied, arapply_closed, arapply_postdate, arapply_distdate, arapply_journalnumber, arapply_username, arapply_curr_id, arapply_reftype, arapply_ref_id ) VALUES ( _p.cashrcpt_cust_id, -1, 'K', '', -1, 'Misc.', '', _p.cashrcpt_fundstype, _p.cashrcpt_docnumber, (round(_r.cashrcptmisc_amount, 2) * -1.0), TRUE, CURRENT_DATE, _p.cashrcpt_distdate, pJournalNumber, getEffectiveXtUser(), _p.cashrcpt_curr_id, 'CRD', _r.cashrcptmisc_id ); PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CR', _r.cashrcptmisc_notes, _r.cashrcptmisc_accnt_id, (round(_r.cashrcptmisc_amount_base, 2) * -1.0), _p.cashrcpt_distdate, _p.custnote ); END LOOP; -- Post any remaining Cash to an A/R Debit Memo -- this credit memo may absorb an occasional currency exchange rounding error IF (round(_posted_base, 2) < round(_p.cashrcpt_amount_base, 2)) THEN _comment := ('Unapplied from ' || _p.cashrcpt_fundstype || '-' || _p.cashrcpt_docnumber); PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CR', _comment, _p.prepaid_accnt_id, ((round(_p.cashrcpt_amount_base, 2) - round(_posted_base, 2)) * -1.0), _p.cashrcpt_distdate, _p.custnote ); SELECT fetchArMemoNumber() INTO _arMemoNumber; -- Post A/R Debit Memo SELECT createARDebitMemo(NULL, _p.cashrcpt_cust_id, pJournalNumber, _arMemoNumber, '', _p.cashrcpt_distdate, (_p.cashrcpt_amount - _posted), _comment, -1, -1, -1, _p.cashrcpt_distdate, -1, NULL, 0, _p.cashrcpt_curr_id) INTO _aropenid; -- Create Cash Receipt Item to capture posting INSERT INTO cashrcptitem ( cashrcptitem_cashrcpt_id, cashrcptitem_aropen_id, cashrcptitem_amount ) VALUES ( pCashrcptid, _aropenid, ((_p.cashrcpt_amount - _posted) * 1.0) ); ELSIF (round(_posted_base, 2) > round(_p.cashrcpt_amount_base, 2)) THEN PERFORM insertIntoGLSeries(_sequence, 'A/R', 'CR', 'Currency Exchange Rounding - ' || _p.cashrcpt_docnumber, getGainLossAccntId(_debitAccntid), ((round(_posted_base, 2) - round((_p.cashrcpt_amount_base + _p.cashrcpt_discount_base), 2)) * 1.0), _p.cashrcpt_distdate, _p.custnote); END IF; -- Debit Cash PERFORM insertIntoGLSeries( _sequence, 'A/R', 'CR', (_p.cashrcpt_fundstype || '-' || _p.cashrcpt_docnumber), _debitAccntid, round(_p.cashrcpt_amount_base, 2), _p.cashrcpt_distdate, _p.custnote ); PERFORM postGLSeries(_sequence, pJournalNumber); -- Update and void the posted cashrcpt UPDATE cashrcpt SET cashrcpt_posted=FALSE, cashrcpt_posteddate=NULL, cashrcpt_postedby=NULL, cashrcpt_void=TRUE WHERE (cashrcpt_id=pCashrcptid); RETURN 1; END; $_$; ;DROP FUNCTION public.reversecashreceipt(integer, integer); publicadminfalse83992x12551692689(reversecashreceiptdisc(integer, integer)FUNCTIONCREATE FUNCTION reversecashreceiptdisc(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCashrcptItemId ALIAS FOR $1; pJournalNumber ALIAS FOR $2; _r RECORD; _t RECORD; _v RECORD; _ardiscountid INTEGER; _arMemoNumber TEXT; _arAccntid INTEGER; _discountAccntid INTEGER; _comment TEXT; _discprcnt NUMERIC; _check INTEGER; BEGIN -- Fetch base records for processing SELECT aropen_id, aropen_doctype, aropen_amount, cashrcptitem_discount, cashrcpt_cust_id, cashrcpt_distdate, cashrcpt_applydate, cashrcpt_curr_id, cashrcpt_fundstype, cashrcpt_docnumber, round(currToCurr(cashrcpt_curr_id, aropen_curr_id, cashrcptitem_discount, cashrcpt_distdate),2) AS aropen_discount INTO _r FROM cashrcptitem JOIN cashrcpt ON (cashrcptitem_cashrcpt_id=cashrcpt_id) JOIN aropen ON ( (aropen_id=cashrcptitem_aropen_id) AND (aropen_doctype IN ('I', 'D')) ) WHERE (cashrcptitem_id=pCashrcptItemId); -- Get discount account _discountAccntid := findardiscountaccount(_r.cashrcpt_cust_id); IF (_r.cashrcptitem_discount > 0) THEN -- Determine discount percentage _discprcnt := _r.aropen_discount / _r.aropen_amount; SELECT fetchArMemoNumber() INTO _arMemoNumber; _comment := 'Discount Credit Reversal from ' || _r.cashrcpt_fundstype || '-' || _r.cashrcpt_docnumber; -- Create misc debit memo record _ardiscountid := nextval('aropen_aropen_id_seq'); INSERT INTO aropen ( aropen_id, aropen_docdate, aropen_duedate, aropen_doctype, aropen_docnumber, aropen_curr_id, aropen_posted, aropen_amount ) VALUES ( _ardiscountid, _r.cashrcpt_distdate, _r.cashrcpt_distdate, 'D', _arMemoNumber, _r.cashrcpt_curr_id, false,_r.cashrcptitem_discount); IF (fetchMetricBool('CreditTaxDiscount')) THEN -- proportional tax credits calculated and implemented for the debit memo generated by the discount IF (_r.aropen_doctype = 'I') THEN -- Tax for invoices SELECT aropen_cobmisc_id AS invcheadid, invchead_curr_id, invchead_invcdate INTO _t FROM aropen LEFT OUTER JOIN invchead ON (aropen_cobmisc_id = invchead_id) LEFT OUTER JOIN invcitem ON (invchead_id = invcitem_invchead_id) WHERE aropen_id = _r.aropen_id; FOR _v IN SELECT tax_sales_accnt_id, tax_id, round(sum(taxdetail_tax), 2) AS tax, currToBase(_t.invchead_curr_id, round(sum(taxdetail_tax), 2), _t.invchead_invcdate) AS taxbasevalue FROM tax JOIN calculateTaxDetailSummary('I', _t.invcheadid, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id, tax_sales_accnt_id LOOP INSERT INTO aropentax( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_basis) VALUES ( _ardiscountid, getadjustmenttaxtypeid(), _v.tax_id, 0.00, 0.00, (round((_v.tax * _discprcnt), 2)), _r.cashrcpt_distdate, 0.00); END LOOP; ELSIF (_r.aropen_doctype = 'D') THEN -- Tax for debit memos INSERT INTO aropentax( taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_basis) SELECT _ardiscountid, taxhist_taxtype_id, taxhist_tax_id, 0.00, 0.00, (round((taxhist_tax * _discprcnt), 2)), _r.cashrcpt_distdate, 0.00 FROM aropentax WHERE (taxhist_parent_id=_r.aropen_id); END IF; END IF; -- End taxes -- Create debit memo for discount SELECT createARDebitMemo(_ardiscountid, _r.cashrcpt_cust_id, pJournalNumber, _arMemoNumber, '', _r.cashrcpt_distdate, _r.cashrcptitem_discount, _comment, -1, -1, _discountAccntid, _r.cashrcpt_distdate, -1, NULL, 0, _r.cashrcpt_curr_id) INTO _ardiscountid; END IF; -- End handle Discount RETURN 1; END; $_$; ?DROP FUNCTION public.reversecashreceiptdisc(integer, integer); publicadminfalse83992y12551692690$reverseglseries(integer, date, text)FUNCTIONp CREATE FUNCTION reverseglseries(integer, date, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSequence ALIAS FOR $1; pDistDate ALIAS FOR $2; pNotes ALIAS FOR $3; _sequence INTEGER := fetchGLSequence(); _journal INTEGER; BEGIN IF (SELECT COUNT(gltrans_sequence) > 0 FROM gltrans WHERE gltrans_sequence = pSequence) THEN SELECT fetchJournalNumber(jrnluse_use) INTO _journal FROM gltrans JOIN jrnluse ON (gltrans_journalnumber=jrnluse_number) WHERE (gltrans_sequence=pSequence) LIMIT 1; INSERT INTO gltrans (gltrans_created, gltrans_posted, gltrans_exported, gltrans_date, gltrans_sequence, gltrans_accnt_id, gltrans_source, gltrans_docnumber, gltrans_misc_id, gltrans_amount, gltrans_notes, gltrans_journalnumber, gltrans_doctype) SELECT CURRENT_TIMESTAMP, FALSE, FALSE, pDistDate, _sequence, gltrans_accnt_id, gltrans_source, gltrans_docnumber, gltrans_misc_id, (gltrans_amount * -1), pNotes, _journal, gltrans_doctype FROM gltrans WHERE (gltrans_sequence=pSequence); PERFORM postIntoTrialBalance(_sequence); ELSE SELECT fetchJournalNumber(jrnluse_use) INTO _journal FROM sltrans JOIN jrnluse ON (sltrans_journalnumber=jrnluse_number) WHERE (sltrans_sequence=pSequence) LIMIT 1; INSERT INTO sltrans (sltrans_created, sltrans_posted, sltrans_date, sltrans_sequence, sltrans_accnt_id, sltrans_source, sltrans_docnumber, sltrans_misc_id, sltrans_amount, sltrans_notes, sltrans_journalnumber, sltrans_doctype) SELECT CURRENT_TIMESTAMP, FALSE, pDistDate, _sequence, sltrans_accnt_id, sltrans_source, sltrans_docnumber, sltrans_misc_id, (sltrans_amount * -1), pNotes, _journal, sltrans_doctype FROM sltrans WHERE (sltrans_sequence=pSequence); END IF; RETURN _journal; END; $_$; ;DROP FUNCTION public.reverseglseries(integer, date, text); publicadminfalse8399212551692691,revokeallmodulecmnttypesource(integer, text)FUNCTIONCREATE FUNCTION revokeallmodulecmnttypesource(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmnttypeid ALIAS FOR $1; pModuleName ALIAS FOR $2; BEGIN DELETE FROM cmnttypesource WHERE (cmnttypesource_id IN ( SELECT cmnttypesource_id FROM cmnttypesource, source WHERE ( (cmnttypesource_source_id=source_id) AND (cmnttypesource_cmnttype_id=pCmnttypeid) AND (source_module=pModuleName) ) ) ); RETURN 1; END; $_$; CDROP FUNCTION public.revokeallmodulecmnttypesource(integer, text); publicadminfalse8399212551692692revokeallmodulepriv(text, text)FUNCTION|CREATE FUNCTION revokeallmodulepriv(text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pModuleName ALIAS FOR $2; BEGIN DELETE FROM usrpriv WHERE (usrpriv_id IN ( SELECT usrpriv_id FROM usrpriv, priv WHERE ( (usrpriv_priv_id=priv_id) AND (usrpriv_username=pUsername) AND (priv_module=pModuleName) ) ) ); NOTIFY "usrprivUpdated"; RETURN 1; END; $_$; 6DROP FUNCTION public.revokeallmodulepriv(text, text); publicadminfalse8399212551692693'revokeallmoduleprivgroup(integer, text)FUNCTION`CREATE FUNCTION revokeallmoduleprivgroup(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pGrpid ALIAS FOR $1; pModuleName ALIAS FOR $2; BEGIN DELETE FROM grppriv WHERE (grppriv_id IN ( SELECT grppriv_id FROM grppriv, priv WHERE ( (grppriv_priv_id=priv_id) AND (grppriv_grp_id=pGrpid) AND (priv_module=pModuleName) ) ) ); RETURN 1; END; $_$; >DROP FUNCTION public.revokeallmoduleprivgroup(integer, text); publicadminfalse8399212551692694&revokecmnttypesource(integer, integer)FUNCTIONCREATE FUNCTION revokecmnttypesource(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmnttypeid ALIAS FOR $1; pSourceid ALIAS FOR $2; BEGIN DELETE FROM cmnttypesource WHERE ( (cmnttypesource_cmnttype_id=pCmnttypeid) AND (cmnttypesource_source_id=pSourceid) ); RETURN TRUE; END; $_$; =DROP FUNCTION public.revokecmnttypesource(integer, integer); publicadminfalse8399212551692695revokegroup(text, integer)FUNCTIONCREATE FUNCTION revokegroup(text, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pGrpid ALIAS FOR $2; BEGIN DELETE FROM usrgrp WHERE ( (usrgrp_username=pUsername) AND (usrgrp_grp_id=pGrpid) ); RETURN TRUE; END; $_$; 1DROP FUNCTION public.revokegroup(text, integer); publicadminfalse8399212551692696revokepriv(text, integer)FUNCTIONCREATE FUNCTION revokepriv(text, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pPrivid ALIAS FOR $2; BEGIN DELETE FROM usrpriv WHERE ( (usrpriv_username=pUsername) AND (usrpriv_priv_id=pPrivid) ); NOTIFY "usrprivUpdated"; RETURN TRUE; END; $_$; 0DROP FUNCTION public.revokepriv(text, integer); publicadminfalse8399212551692697revokepriv(text, text)FUNCTIONCREATE FUNCTION revokepriv(text, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pPrivname ALIAS FOR $2; BEGIN DELETE FROM usrpriv WHERE ( (usrpriv_username=pUsername) AND (usrpriv_priv_id IN (SELECT priv_id FROM priv WHERE priv_name=pPrivname) )); NOTIFY "usrprivUpdated"; RETURN TRUE; END; $_$; -DROP FUNCTION public.revokepriv(text, text); publicadminfalse8399212551692698!revokeprivgroup(integer, integer)FUNCTIONCREATE FUNCTION revokeprivgroup(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pGrpid ALIAS FOR $1; pPrivid ALIAS FOR $2; BEGIN DELETE FROM grppriv WHERE ( (grppriv_grp_id=pGrpid) AND (grppriv_priv_id=pPrivid) ); NOTIFY "usrprivUpdated"; RETURN TRUE; END; $_$; 8DROP FUNCTION public.revokeprivgroup(integer, integer); publicadminfalse8399212551692699rollupactualcost(integer)FUNCTION7CREATE FUNCTION rollupactualcost(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; BEGIN RETURN rollUpSorACost(pitemid, TRUE); END; $_$; 0DROP FUNCTION public.rollupactualcost(integer); publicadminfalse8399212551692700 rollupsoracost(integer, boolean)FUNCTIONCREATE FUNCTION rollupsoracost(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pActual ALIAS FOR $2; _counter INTEGER; _setid INTEGER; _consumers RECORD; BEGIN _counter := 0; SELECT indentedWhereUsed(pItemid) INTO _setid; FOR _consumers IN SELECT bomwork_item_id FROM bomwork WHERE (bomwork_set_id=_setid) ORDER BY bomwork_level LOOP PERFORM updateSorACost( _consumers.bomwork_item_id, costelem_type, TRUE, lowerCost(_consumers.bomwork_item_id, costelem_type, pActual), pActual ) FROM costelem WHERE (costelem_sys); PERFORM updateLowerUserCosts(_consumers.bomwork_item_id, pActual); _counter := _counter + 1; END LOOP; PERFORM deleteBOMWorkset(_setid); RETURN _counter; END; $_$; 7DROP FUNCTION public.rollupsoracost(integer, boolean); publicadminfalse8399212551692701rollupstandardcost(integer)FUNCTION:CREATE FUNCTION rollupstandardcost(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; BEGIN RETURN rollUpSorACost(pItemid, FALSE); END; $_$; 2DROP FUNCTION public.rollupstandardcost(integer); publicadminfalse8399212551692702roundcost(numeric)FUNCTIONCREATE FUNCTION roundcost(pcost numeric) RETURNS numeric LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _scale INTEGER; BEGIN IF (pCost IS NULL) THEN RETURN NULL; END IF; SELECT locale_cost_scale INTO _scale FROM locale WHERE (locale_id=getUsrLocaleId()); RETURN ROUND(pCost, _scale); END; $$; /DROP FUNCTION public.roundcost(pcost numeric); publicadminfalse8399212551761042#roundlocale(boolean, numeric, text)FUNCTIONCREATE FUNCTION roundlocale(pfractional boolean, pqty numeric, plocale text) RETURNS numeric LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; _scale INTEGER; BEGIN IF (pFractional) THEN SELECT * INTO _r FROM locale WHERE (locale_id=getUsrLocaleId()); _scale := CASE pLocale WHEN 'qtyper' THEN _r.locale_qtyper_scale WHEN 'cost' THEN _r.locale_cost_scale ELSE _r.locale_qty_scale END; RETURN ROUND(pQty, _scale); ELSE IF (TRUNC(pQty) < pQty) THEN RETURN (TRUNC(pQty) + 1); ELSE RETURN TRUNC(pQty); END IF; END IF; END; $$; SDROP FUNCTION public.roundlocale(pfractional boolean, pqty numeric, plocale text); publicadminfalse8399212551692703roundqty(boolean, numeric)FUNCTIONBCREATE FUNCTION roundqty(pfractional boolean, pqty numeric) RETURNS numeric LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _scale INTEGER; BEGIN SELECT locale_qty_scale INTO _scale FROM locale WHERE (locale_id=getUsrLocaleId()); IF (pFractional) THEN RETURN ROUND(pQty, _scale); ELSE IF (TRUNC(pQty) < ROUND(pQty, _scale)) THEN RETURN (TRUNC(pQty) + 1); ELSE RETURN TRUNC(pQty); END IF; END IF; END; $$; BDROP FUNCTION public.roundqty(pfractional boolean, pqty numeric); publicadminfalse8399212551692704roundsale(numeric)FUNCTIONCREATE FUNCTION roundsale(psale numeric) RETURNS numeric LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _scale INTEGER; BEGIN IF (pSale IS NULL) THEN RETURN NULL; END IF; SELECT locale_salesprice_scale INTO _scale FROM locale WHERE (locale_id=getUsrLocaleId()); RETURN ROUND(pSale, _scale); END; $$; /DROP FUNCTION public.roundsale(psale numeric); publicadminfalse8399212551692705roundup(numeric)FUNCTIONCREATE FUNCTION roundup(numeric) RETURNS numeric LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pValue ALIAS FOR $1; _checkValue integer; BEGIN _checkValue := pValue::integer; IF (_checkValue::numeric < pValue) THEN RETURN (_checkValue + 1)::numeric; ELSE RETURN _checkValue::numeric; END IF; END; $_$; 'DROP FUNCTION public.roundup(numeric); publicadminfalse8399212551692706Vsaveaddr(integer, text, text, text, text, text, text, text, text, boolean, text, text)FUNCTIONCREATE FUNCTION saveaddr(integer, text, text, text, text, text, text, text, text, boolean, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAddrId ALIAS FOR $1; pNumber ALIAS FOR $2; pAddr1 ALIAS FOR $3; pAddr2 ALIAS FOR $4; pAddr3 ALIAS FOR $5; pCity ALIAS FOR $6; pState ALIAS FOR $7; pPostalCode ALIAS FOR $8; pCountry ALIAS FOR $9; pActive ALIAS FOR $10; pNotes ALIAS FOR $11; pFlag ALIAS FOR $12; _addrId INTEGER; _addrNumber INTEGER; _flag TEXT; _p RECORD; _cnt INTEGER; _notes TEXT; BEGIN --Validate IF ((pFlag IS NULL) OR (pFlag = '') OR (pFlag = 'CHECK') OR (pFlag = 'CHANGEONE') OR (pFlag = 'CHANGEALL')) THEN IF (pFlag='') THEN _flag := 'CHECK'; ELSE _flag := COALESCE(pFlag,'CHECK'); END IF; ELSE RAISE EXCEPTION 'Invalid Flag (%). Valid flags are CHECK, CHANGEONE or CHANGEALL', pFlag; END IF; _notes := COALESCE(pNotes,''); --If there is nothing here, get out IF ( (pNumber = '' OR pNumber IS NULL) AND (pAddr1 = '' OR pAddr1 IS NULL) AND (pAddr2 = '' OR pAddr2 IS NULL) AND (pAddr3 = '' OR pAddr3 IS NULL) AND (pCity = '' OR pCity IS NULL) AND (pState = '' OR pState IS NULL) AND (pPostalCode = '' OR pPostalCode IS NULL) AND (pCountry = '' OR pCountry IS NULL) ) THEN RETURN NULL; END IF; _addrId := COALESCE(pAddrId,-1); --If we have an ID see if anything has changed, if not get out IF (_addrId >= 0) THEN SELECT * FROM addr INTO _p WHERE ((pAddrId=addr_id) AND (COALESCE(pNumber,addr_number)=addr_number) AND (COALESCE(pAddr1, '')=COALESCE(addr_line1, '')) AND (COALESCE(pAddr2, '')=COALESCE(addr_line2, '')) AND (COALESCE(pAddr3, '')=COALESCE(addr_line3, '')) AND (COALESCE(pCity, '')=COALESCE(addr_city, '')) AND (COALESCE(pState, '')=COALESCE(addr_state, '')) AND (COALESCE(pPostalCode, '')=COALESCE(addr_postalcode, '')) AND (COALESCE(pCountry, '')=COALESCE(addr_country, '')) AND (pActive=addr_active) AND (_notes=COALESCE(addr_notes,''))); IF (FOUND) THEN RETURN _addrId; END IF; END IF; --Check to see if duplicate address exists SELECT addr_id, addr_notes INTO _p FROM addr WHERE ((_addrId <> addr_id) AND (COALESCE(UPPER(addr_line1),'') = COALESCE(UPPER(pAddr1),'')) AND (COALESCE(UPPER(addr_line2),'') = COALESCE(UPPER(pAddr2),'')) AND (COALESCE(UPPER(addr_line3),'') = COALESCE(UPPER(pAddr3),'')) AND (COALESCE(UPPER(addr_city),'') = COALESCE(UPPER(pCity),'')) AND (COALESCE(UPPER(addr_state),'') = COALESCE(UPPER(pState),'')) AND (COALESCE(UPPER(addr_postalcode),'') = COALESCE(UPPER(pPostalcode),'')) AND (COALESCE(UPPER(addr_country),'') = COALESCE(UPPER(pCountry),''))); IF (FOUND) THEN --Note: To prevent overwriting of existing notes, the application --needs to load any existing notes for a matching address before altering them. IF (_notes <> _p.addr_notes) THEN UPDATE addr SET addr_notes=addr_notes || ' ' || _notes WHERE addr_id=_p.addr_id; END IF; RETURN _p.addr_id; --A matching address exits END IF; IF (_addrId < 0) THEN _flag := 'CHANGEONE'; END IF; IF (_flag = 'CHECK') THEN IF addrUseCount(_addrId) > 1 THEN RETURN -2; ELSIF (SELECT COUNT(addr_id)=0 FROM addr WHERE (addr_id=_addrId)) THEN _flag := 'CHANGEONE'; ELSE _flag := 'CHANGEALL'; END IF; END IF; IF (_flag = 'CHANGEALL') THEN _addrNumber := pNumber; IF (_addrNumber IS NULL) THEN SELECT addr_number INTO _addrNumber FROM addr WHERE(addr_id = _addrId); IF (_addrNumber IS NULL) THEN _addrNumber := fetchNextNumber('AddressNumber'); END IF; END IF; UPDATE addr SET addr_line1 = pAddr1, addr_line2 = pAddr2, addr_line3 = pAddr3, addr_city = pCity, addr_state = pState, addr_postalcode = pPostalcode, addr_country = pCountry, addr_active = pActive, addr_notes = pNotes WHERE addr_id = _addrId; RETURN _addrId; ELSE SELECT NEXTVAL('addr_addr_id_seq') INTO _addrId; IF (_flag = 'CHANGEONE') THEN _addrNumber := fetchNextNumber('AddressNumber'); ELSE _addrNumber := COALESCE(pNumber::text,fetchNextNumber('AddressNumber')); END IF; INSERT INTO addr ( addr_id, addr_number, addr_line1, addr_line2, addr_line3, addr_city, addr_state, addr_postalcode, addr_country, addr_active, addr_notes ) VALUES ( _addrId, _addrNumber, pAddr1, pAddr2, pAddr3, pCity, pState, pPostalcode, pCountry, pActive, _notes); RETURN _addrId; END IF; END; $_$; mDROP FUNCTION public.saveaddr(integer, text, text, text, text, text, text, text, text, boolean, text, text); publicadminfalse8399212551692707Gsaveaddr(integer, text, text, text, text, text, text, text, text, text)FUNCTIONCREATE FUNCTION saveaddr(integer, text, text, text, text, text, text, text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAddrId ALIAS FOR $1; pNumber ALIAS FOR $2; pAddr1 ALIAS FOR $3; pAddr2 ALIAS FOR $4; pAddr3 ALIAS FOR $5; pCity ALIAS FOR $6; pState ALIAS FOR $7; pPostalCode ALIAS FOR $8; pCountry ALIAS FOR $9; pFlag ALIAS FOR $10; _returnVal INTEGER; BEGIN SELECT saveAddr(pAddrId,pNumber, pAddr1,pAddr2,pAddr3,pCity,pState,pPostalCode,pCountry,true,'',pFlag) INTO _returnVal; RETURN _returnVal; END; $_$; ^DROP FUNCTION public.saveaddr(integer, text, text, text, text, text, text, text, text, text); publicadminfalse83992.12551692708savealarm(integer, text, date, time without time zone, integer, text, boolean, text, boolean, text, boolean, text, text, integer, text)FUNCTIONCREATE FUNCTION savealarm(integer, text, date, time without time zone, integer, text, boolean, text, boolean, text, boolean, text, text, integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAlarmId ALIAS FOR $1; pAlarmNumber ALIAS FOR $2; pDate ALIAS FOR $3; pTime ALIAS FOR $4; pOffset ALIAS FOR $5; pQualifier ALIAS FOR $6; pEvent ALIAS FOR $7; pEventRecipient ALIAS FOR $8; pEmail ALIAS FOR $9; pEmailRecipient ALIAS FOR $10; pSysmsg ALIAS FOR $11; pSysmsgRecipient ALIAS FOR $12; pSource ALIAS FOR $13; pSourceId ALIAS FOR $14; pFlag ALIAS FOR $15; _alarmId INTEGER; _alarmNumber TEXT; _alarmTime TIMESTAMP; _alarmInterval INTERVAL; _alarmTrigger TIMESTAMP; _isNew BOOLEAN; _flag TEXT; _alarmCount INTEGER := 0; _debug BOOLEAN := false; BEGIN IF (_debug) THEN RAISE NOTICE 'pAlarmId = %', pAlarmId; RAISE NOTICE 'pAlarmNumber = %', pAlarmNumber; RAISE NOTICE 'pDate = %', pDate; RAISE NOTICE 'pTime = %', pTime; RAISE NOTICE 'pOffset = %', pOffset; RAISE NOTICE 'pQualifier = %', pQualifier; RAISE NOTICE 'pEvent = %', pEvent; RAISE NOTICE 'pEventRecipient = %', pEventRecipient; RAISE NOTICE 'pEmail = %', pEmail; RAISE NOTICE 'pEmailRecipient = %', pEmailRecipient; RAISE NOTICE 'pSysmsg = %', pSysmsg; RAISE NOTICE 'pSysmsgRecipient = %', pSysmsgRecipient; RAISE NOTICE 'pSource = %', pSource; RAISE NOTICE 'pSourceId = %', pSourceId; RAISE NOTICE 'pFlag = %', pFlag; END IF; --Validate IF ((pFlag IS NULL) OR (pFlag = '') OR (pFlag = 'CHECK') OR (pFlag = 'CHANGEONE') OR (pFlag = 'CHANGEALL')) THEN IF (pFlag='') THEN _flag := 'CHECK'; ELSE _flag := COALESCE(pFlag,'CHECK'); END IF; ELSE RAISE EXCEPTION 'Invalid Flag (%). Valid flags are CHECK, CHANGEONE or CHANGEALL', pFlag; END IF; --If there is nothing here get out IF ( (pAlarmId IS NULL OR pAlarmId = -1) AND (pOffset IS NULL) AND (pSourceId IS NULL) AND (COALESCE(pQualifier, '') = '') AND (COALESCE(pEventRecipient, '') = '') AND (COALESCE(pEmailRecipient, '') = '') AND (COALESCE(pSysmsgRecipient, '') = '') AND (COALESCE(pSource, '') = '') ) THEN RETURN NULL; END IF; IF (pAlarmId IS NULL OR pAlarmId = -1) THEN _isNew := true; _alarmId := nextval('alarm_alarm_id_seq'); _alarmNumber := fetchNextNumber('AlarmNumber'); ELSE SELECT COUNT(alarm_id) INTO _alarmCount FROM alarm WHERE ((alarm_id=pAlarmId) AND (alarm_source=pSource) AND (alarm_source_id=pSourceId)); -- ask whether new or update if name changes -- but only if this isn't a new record with a pre-allocated id IF (_alarmCount < 1 AND _flag = 'CHECK') THEN IF (EXISTS(SELECT alarm_id FROM alarm WHERE (alarm_id=pAlarmId))) THEN RETURN -10; ELSE _isNew := true; _alarmNumber := fetchNextNumber('AlarmNumber'); END IF; ELSIF (_flag = 'CHANGEONE') THEN _isNew := true; _alarmId := nextval('alarm_alarm_id_seq'); _alarmNumber := fetchNextNumber('AlarmNumber'); END IF; END IF; _alarmNumber := COALESCE(_alarmNumber,pAlarmNumber,fetchNextNumber('AlarmNumber')); _alarmTime := COALESCE(pDate, CURRENT_DATE) + COALESCE(pTime, CURRENT_TIME); IF (COALESCE(pOffset, 0) > 0) THEN _alarmInterval := CASE WHEN (pQualifier IN ('MB', 'MA')) THEN CAST(pOffset AS TEXT) || ' minutes' WHEN (pQualifier IN ('HB', 'HA')) THEN CAST(pOffset AS TEXT) || ' hours' WHEN (pQualifier IN ('DB', 'DA')) THEN CAST(pOffset AS TEXT) || ' days' ELSE '' END; _alarmTrigger := CASE WHEN (pQualifier IN ('MB', 'HB', 'DB')) THEN _alarmTime - _alarmInterval WHEN (pQualifier IN ('MA', 'HA', 'DA')) THEN _alarmTime + _alarmInterval ELSE _alarmTime END; ELSE _alarmTrigger := _alarmTime; END IF; IF (_isNew) THEN _alarmId := COALESCE(_alarmId,pAlarmId,nextval('alarm_alarm_id_seq')); INSERT INTO alarm ( alarm_id,alarm_number, alarm_event, alarm_email, alarm_sysmsg, alarm_trigger, alarm_time, alarm_time_offset, alarm_time_qualifier, alarm_creator, alarm_event_recipient, alarm_email_recipient, alarm_sysmsg_recipient, alarm_source, alarm_source_id ) VALUES ( _alarmId, _alarmNumber, pEvent, pEmail, pSysmsg, _alarmTrigger, _alarmTime, pOffset, pQualifier, getEffectiveXtUser(), pEventRecipient, pEmailRecipient, pSysmsgRecipient, pSource, pSourceId ); RETURN _alarmId; ELSE UPDATE alarm SET alarm_number=_alarmNumber, alarm_event=COALESCE(pEvent, alarm_event), alarm_email=COALESCE(pEmail, alarm_event), alarm_sysmsg=COALESCE(pSysmsg, alarm_event), alarm_trigger=_alarmTrigger, alarm_time=_alarmTime, alarm_time_offset=COALESCE(pOffset, alarm_time_offset), alarm_time_qualifier=COALESCE(pQualifier, alarm_time_qualifier), alarm_event_recipient=COALESCE(pEventRecipient, alarm_event_recipient), alarm_email_recipient=COALESCE(pEmailRecipient, alarm_email_recipient), alarm_sysmsg_recipient=COALESCE(pSysmsgRecipient, alarm_sysmsg_recipient) WHERE (alarm_id=pAlarmId); RETURN pAlarmId; END IF; END; $_$; DROP FUNCTION public.savealarm(integer, text, date, time without time zone, integer, text, boolean, text, boolean, text, boolean, text, text, integer, text); publicadminfalse83992125516927108savebomhead(integer, text, date, text, numeric, numeric)FUNCTIONCREATE FUNCTION savebomhead(integer, text, date, text, numeric, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pRevision ALIAS FOR $2; pRevisionDate ALIAS FOR $3; pDocumentNumber ALIAS FOR $4; pBatchSize ALIAS FOR $5; pRequiredQtyPer ALIAS FOR $6; _seq INTEGER; _p RECORD; _revid INTEGER; BEGIN IF (NOT fetchMetricBool('RevControl')) THEN -- Deal with BOM if Rev Control Turned off SELECT bomhead_id INTO _seq FROM bomhead WHERE (bomhead_item_id=pItemid); IF (NOT FOUND) THEN -- No bomhead exists _seq := NEXTVAL('bomhead_bomhead_id_seq'); INSERT INTO bomhead (bomhead_id,bomhead_item_id,bomhead_docnum,bomhead_revision, bomhead_revisiondate,bomhead_batchsize,bomhead_requiredqtyper,bomhead_rev_id) VALUES (_seq,pItemid, pDocumentNumber, pRevision, pRevisionDate, pBatchSize, pRequiredQtyPer,-1); ELSE UPDATE bomhead SET bomhead_revision = pRevision, bomhead_revisiondate = pRevisionDate, bomhead_docnum = pDocumentNumber, bomhead_batchsize = pBatchSize, bomhead_requiredqtyper = pRequiredQtyPer WHERE (bomhead_id=_seq); END IF; RETURN _seq; ELSE -- Deal with Revision Control IF (COALESCE(pRevision,'') = '' AND getActiveRevId('BOM',pItemid) != -1) THEN RAISE EXCEPTION 'Revision Control records exist for item. You must provide a new or existing revision number.'; END IF; SELECT * INTO _p FROM bomhead LEFT OUTER JOIN rev ON (bomhead_rev_id=rev_id), item WHERE ((bomhead_item_id=pItemid) AND (COALESCE(bomhead_revision,'')=COALESCE(pRevision,'')) AND (bomhead_item_id=item_id)); IF (NOT FOUND) THEN -- This is a new bomhead record IF LENGTH(pRevision) > 0 THEN -- We need to create a revision record SELECT createbomrev(pItemid, pRevision) INTO _revid; UPDATE bomhead SET bomhead_revisiondate = pRevisiondate, bomhead_docnum = pDocumentNumber, bomhead_batchsize = pBatchsize, bomhead_requiredqtyper = pRequiredqtyper WHERE (bomhead_rev_id=_revid); SELECT bomhead_id INTO _seq FROM bomhead WHERE (bomhead_rev_id=_revid); RETURN _seq; ELSE -- Just create a regular bom header record _seq := NEXTVAL('bomhead_bomhead_id_seq'); INSERT INTO bomhead (bomhead_id,bomhead_item_id,bomhead_docnum,bomhead_revision, bomhead_revisiondate,bomhead_batchsize,bomhead_requiredqtyper,bomhead_rev_id) VALUES (_seq,pItemid, pDocumentNumber, pRevision, pRevisionDate, pBatchSize, pRequiredQtyPer,-1); RETURN _seq; END IF; ELSE -- We need to update a record IF (_p.rev_status = 'I') THEN RAISE EXCEPTION 'Revision % for % is inactive. Update not allowed.', _p.rev_number, _p.item_number; ELSIF (COALESCE(pRevision,'') = COALESCE(_p.bomhead_revision,'')) THEN -- No change, just update UPDATE bomhead SET bomhead_revisiondate = pRevisiondate, bomhead_docnum = pDocumentNumber, bomhead_batchsize = pBatchSize, bomhead_requiredqtyper = pRequiredqtyper WHERE (bomhead_id=_p.bomhead_id); RETURN _p.bomhead_id; ELSE -- Need a new revision SELECT createbomrev(pItemid, pRevision) INTO _revid; UPDATE bomhead SET bomhead_revisiondate = pRevisiondate, bomhead_docnum = pDocumentNumber, bomhead_batchsize = pBatchSize, bomhead_requiredqtyper = pRequiredqtyper WHERE (bomhead_rev_id=_revid); SELECT bomhead_id INTO _seq FROM bomhead WHERE (bomhead_rev_id=_revid); RETURN _seq; END IF; END IF; END IF; RETURN _seq; END; $_$; ODROP FUNCTION public.savebomhead(integer, text, date, text, numeric, numeric); publicadminfalse8399212551692711savecntct(integer, text, integer, integer, text, text, text, text, text, text, boolean, text, text, text, text, text, text, text, text)FUNCTION CREATE FUNCTION savecntct(pcntctid integer, pcontactnumber text, pcrmacctid integer, paddrid integer, phonorific text, pfirstname text, pmiddlename text, plastname text, psuffix text, pinitials text, pactive boolean, pphone text, pphone2 text, pfax text, pemail text, pwebaddr text, pnotes text, ptitle text, pflag text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN SELECT saveCntct( pCntctId, pContactNumber, pCrmAcctId, pAddrId, pHonorific, pFirstName, pMiddleName, pLastName, pSuffix, pInitials, pActive, pPhone, pPhone2, pFax, pEmail, pWebAddr, pNotes, pTitle, pFlag, NULL) INTO _returnVal; RETURN _returnVal; END; $$; GDROP FUNCTION public.savecntct(pcntctid integer, pcontactnumber text, pcrmacctid integer, paddrid integer, phonorific text, pfirstname text, pmiddlename text, plastname text, psuffix text, pinitials text, pactive boolean, pphone text, pphone2 text, pfax text, pemail text, pwebaddr text, pnotes text, ptitle text, pflag text); publicadminfalse8399212551692712isavecntct(integer, text, integer, text, text, text, text, text, text, text, text, text, text, text, text)FUNCTIONCREATE FUNCTION savecntct(pcntctid integer, pcontactnumber text, paddrid integer, phonorific text, pfirstname text, pmiddlename text, plastname text, psuffix text, pphone text, pphone2 text, pfax text, pemail text, pwebaddr text, ptitle text, pflag text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _returnVal INTEGER; BEGIN SELECT saveCntct(pCntctId,pContactNumber,NULL,pAddrId,pHonorific,pFirstName,pMiddleName,pLastName,pSuffix,NULL, NULL,pPhone,pPhone2,pFax,pEmail,pWebAddr,NULL,pTitle,pFlag, NULL) INTO _returnVal; RETURN _returnVal; END; $$; DROP FUNCTION public.savecntct(pcntctid integer, pcontactnumber text, paddrid integer, phonorific text, pfirstname text, pmiddlename text, plastname text, psuffix text, pphone text, pphone2 text, pfax text, pemail text, pwebaddr text, ptitle text, pflag text); publicadminfalse8399212551692713savecntct(integer, text, integer, integer, text, text, text, text, text, text, boolean, text, text, text, text, text, text, text, text, text)FUNCTIONCREATE FUNCTION savecntct(pcntctid integer, pcontactnumber text, pcrmacctid integer, paddrid integer, phonorific text, pfirstname text, pmiddlename text, plastname text, psuffix text, pinitials text, pactive boolean, pphone text, pphone2 text, pfax text, pemail text, pwebaddr text, pnotes text, ptitle text, pflag text, pownerusername text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _cntctId INTEGER; _cntctNumber TEXT; _isNew BOOLEAN; _flag TEXT; _contactCount INTEGER := 0; BEGIN --Validate IF ((pFlag IS NULL) OR (pFlag = '') OR (pFlag = 'CHECK') OR (pFlag = 'CHANGEONE') OR (pFlag = 'CHANGEALL')) THEN IF (pFlag='') THEN _flag := 'CHECK'; ELSE _flag := COALESCE(pFlag,'CHECK'); END IF; ELSE RAISE EXCEPTION 'Invalid Flag (%). Valid flags are CHECK, CHANGEONE or CHANGEALL', pFlag; END IF; --If there is nothing here get out IF ( (pCntctId IS NULL OR pCntctId = -1) AND (pAddrId IS NULL) AND (COALESCE(pFirstName, '') = '') AND (COALESCE(pMiddleName, '') = '') AND (COALESCE(pLastName, '') = '') AND (COALESCE(pSuffix, '') = '') AND (COALESCE(pHonorific, '') = '') AND (COALESCE(pInitials, '') = '') AND (COALESCE(pPhone, '') = '') AND (COALESCE(pPhone2, '') = '') AND (COALESCE(pFax, '') = '') AND (COALESCE(pEmail, '') = '') AND (COALESCE(pWebAddr, '') = '') AND (COALESCE(pNotes, '') = '') AND (COALESCE(pTitle, '') = '') ) THEN RETURN NULL; END IF; IF (pCntctId IS NULL OR pCntctId = -1) THEN _isNew := true; _cntctId := nextval('cntct_cntct_id_seq'); _cntctNumber := COALESCE(pContactNumber,fetchNextNumber('ContactNumber')); ELSE SELECT COUNT(cntct_id) INTO _contactCount FROM cntct WHERE ((cntct_id=pCntctId) AND (cntct_first_name=pFirstName) AND (cntct_last_name=pLastName)); -- ask whether new or update if name changes -- but only if this isn't a new record with a pre-allocated id IF (_contactCount < 1 AND _flag = 'CHECK') THEN IF (EXISTS(SELECT cntct_id FROM cntct WHERE (cntct_id=pCntctId))) THEN RETURN -10; ELSE _isNew := true; _cntctNumber := fetchNextNumber('ContactNumber'); END IF; ELSIF (_flag = 'CHANGEONE') THEN _isNew := true; _cntctId := nextval('cntct_cntct_id_seq'); _cntctNumber := fetchNextNumber('ContactNumber'); ELSIF (_flag = 'CHANGEALL') THEN _isNew := false; END IF; END IF; IF (pContactNumber = '') THEN _cntctNumber := fetchNextNumber('ContactNumber'); ELSE _cntctNumber := COALESCE(_cntctNumber,pContactNumber,fetchNextNumber('ContactNumber')); END IF; IF (_isNew) THEN _cntctId := COALESCE(_cntctId,pCntctId,nextval('cntct_cntct_id_seq')); INSERT INTO cntct ( cntct_id,cntct_number, cntct_crmacct_id,cntct_addr_id,cntct_first_name, cntct_last_name,cntct_honorific,cntct_initials, cntct_active,cntct_phone,cntct_phone2, cntct_fax,cntct_email,cntct_webaddr, cntct_notes,cntct_title,cntct_middle,cntct_suffix, cntct_owner_username ) VALUES ( _cntctId, COALESCE(_cntctNumber,fetchNextNumber('ContactNumber')) ,pCrmAcctId,pAddrId, pFirstName,pLastName,pHonorific, pInitials,COALESCE(pActive,true),pPhone,pPhone2,pFax, pEmail,pWebAddr,pNotes,pTitle,pMiddleName,pSuffix,pOwnerUsername ); RETURN _cntctId; ELSE UPDATE cntct SET cntct_number=COALESCE(_cntctNumber,fetchNextNumber('ContactNumber')), cntct_crmacct_id=COALESCE(pCrmAcctId,cntct_crmacct_id), cntct_addr_id=COALESCE(pAddrId,cntct_addr_id), cntct_first_name=COALESCE(pFirstName,cntct_first_name), cntct_last_name=COALESCE(pLastName,cntct_last_name), cntct_honorific=COALESCE(pHonorific,cntct_honorific), cntct_initials=COALESCE(pInitials,cntct_initials), cntct_active=COALESCE(pActive,cntct_active), cntct_phone=COALESCE(pPhone,cntct_phone), cntct_phone2=COALESCE(pPhone2,cntct_phone2), cntct_fax=COALESCE(pFax,cntct_fax), cntct_email=COALESCE(pEmail,cntct_email), cntct_webaddr=COALESCE(pWebAddr,cntct_webaddr), cntct_notes=COALESCE(pNotes,cntct_notes), cntct_title=COALESCE(pTitle,cntct_title), cntct_middle=COALESCE(pMiddleName,cntct_middle), cntct_suffix=COALESCE(pSuffix,cntct_suffix), cntct_owner_username=COALESCE(pOwnerUsername, cntct_owner_username) WHERE (cntct_id=pCntctId); RETURN pCntctId; END IF; END; $$; \DROP FUNCTION public.savecntct(pcntctid integer, pcontactnumber text, pcrmacctid integer, paddrid integer, phonorific text, pfirstname text, pmiddlename text, plastname text, psuffix text, pinitials text, pactive boolean, pphone text, pphone2 text, pfax text, pemail text, pwebaddr text, pnotes text, ptitle text, pflag text, pownerusername text); publicadminfalse8399212551692715/saveimageass(text, integer, character, integer)FUNCTION*CREATE FUNCTION saveimageass(text, integer, character, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSource ALIAS FOR $1; pSourceId ALIAS FOR $2; pPurpose ALIAS FOR $3; pImageid ALIAS FOR $4; _imageassId INTEGER = 0; BEGIN -- See if this link already exists SELECT imageass_id INTO _imageassId FROM imageass WHERE ((imageass_source_id=pSourceId) AND (imageass_source=pSource) AND (imageass_image_id=pImageId) AND (imageass_purpose=pPurpose)); IF (FOUND) THEN RETURN _imageassId; END IF; -- See if a record with this purpose already exists (item only) IF (pSource = 'I' AND pPurpose != 'M') THEN SELECT imageass_id INTO _imageassId FROM imageass WHERE ((imageass_source_id=pSourceId) AND (imageass_source=pSource) AND (imageass_purpose=pPurpose)); END IF; IF (_imageassId > 0) THEN UPDATE imageass SET imageass_image_id=pImageId WHERE (imageass_id=_imageassId); ELSE _imageassId := NEXTVAL('imageass_imageass_id_seq'); INSERT INTO imageass VALUES (_imageassId,pSourceId,pSource,pImageid,CASE WHEN pSource='I' THEN pPurpose ELSE 'M' END); END IF; RETURN _imageassId; END; $_$; FDROP FUNCTION public.saveimageass(text, integer, character, integer); publicadminfalse8399212551692716Jsaveipsitem(integer, integer, integer, numeric, numeric, integer, integer)FUNCTIONCREATE FUNCTION saveipsitem(integer, integer, integer, numeric, numeric, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pIpsItemId ALIAS FOR $1; pIpsHeadId ALIAS FOR $2; pItemId ALIAS FOR $3; pQtyBreak ALIAS FOR $4; pPrice ALIAS FOR $5; pQtyUomId ALIAS FOR $6; pPriceUomId ALIAS FOR $7; _ipsitemid INTEGER; _new BOOLEAN; BEGIN -- Validation IF (SELECT COUNT(item_id)=0 FROM item WHERE (item_id=pItemId)) THEN RAISE EXCEPTION 'You must provide a valid Item'; ELSIF (COALESCE(pQtyBreak,0) < 0) THEN RAISE EXCEPTION 'Quantity can not be a negative value'; ELSIF (COALESCE(pPrice,0) < 0) THEN RAISE EXCEPTION 'Price must be a negative value'; ELSIF ((pQtyUomId IS NOT NULL) AND (SELECT COUNT(item_id)=0 FROM (SELECT item_id FROM item WHERE ((item_id=pItemId) AND (item_inv_uom_id=pQtyUomId)) UNION SELECT item_id FROM item,itemuomconv,itemuom,uomtype WHERE ((item_id=pItemId) AND (itemuomconv_item_id=item_id) AND (itemuomconv_from_uom_id=pQtyUomId) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (itemuom_uomtype_id=uomtype_id) AND (uomtype_name='Selling')) UNION SELECT item_id FROM item,itemuomconv,itemuom,uomtype WHERE ((item_id=pItemId) AND (itemuomconv_item_id=item_id) AND (itemuomconv_to_uom_id=pQtyUomId) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (itemuom_uomtype_id=uomtype_id) AND (uomtype_name='Selling'))) AS data)) THEN RAISE EXCEPTION 'Qty UOM Must be a valid Selling UOM for the Item'; ELSIF ((pPriceUomId IS NOT NULL) AND (SELECT COUNT(item_id)=0 FROM (SELECT item_id FROM item WHERE ((item_id=pItemId) AND (item_inv_uom_id=pPriceUomId)) UNION SELECT item_id FROM item,itemuomconv,itemuom,uomtype WHERE ((item_id=pItemId) AND (itemuomconv_item_id=item_id) AND (itemuomconv_from_uom_id=pPriceUomId) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (itemuom_uomtype_id=uomtype_id) AND (uomtype_name='Selling')) UNION SELECT item_id FROM item,itemuomconv,itemuom,uomtype WHERE ((item_id=pItemId) AND (itemuomconv_item_id=item_id) AND (itemuomconv_to_uom_id=pPriceUomId) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (itemuom_uomtype_id=uomtype_id) AND (uomtype_name='Selling'))) AS data)) THEN RAISE EXCEPTION 'Price UOM Must be a valid Selling UOM for the Item'; END IF; _new := TRUE; IF (pIpsItemId IS NOT NULL) THEN SELECT ipsitem_id INTO _ipsitemid FROM ipsitem WHERE (ipsitem_id=pIpsItemId); IF (FOUND) THEN _new := FALSE; ELSE RAISE EXCEPTION 'Pricing Schedule Item not found.'; END IF; ELSE SELECT ipsitem_id INTO _ipsitemid FROM ipsitem WHERE ((ipsitem_ipshead_id = pIpsheadId) AND (ipsitem_item_id = pItemId) AND (ipsitem_qtybreak = pQtyBreak) AND (ipsitem_qty_uom_id = COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId))) AND (ipsitem_price_uom_id = CASE WHEN (pQtyUomId = (SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) THEN COALESCE(pPriceUomId,pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) ELSE COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) END)); END IF; IF (FOUND) THEN _new := false; ELSE _ipsitemid := nextval('ipsitem_ipsitem_id_seq'); END IF; IF (_new) THEN INSERT INTO ipsitem ( ipsitem_id, ipsitem_ipshead_id, ipsitem_item_id, ipsitem_qtybreak, ipsitem_price, ipsitem_qty_uom_id, ipsitem_price_uom_id, ipsitem_discntprcnt, ipsitem_fixedamtdiscount) VALUES ( _ipsitemid, pIpsheadId, pItemId, pQtyBreak, pPrice, COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)), CASE WHEN (pQtyUomId = (SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) THEN COALESCE(pPriceUomId,pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) ELSE COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) END, 0.0, 0.0); ELSE UPDATE ipsitem SET ipsitem_qtybreak = pQtyBreak, ipsitem_price = pPrice, ipsitem_qty_uom_id = COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)), ipsitem_price_uom_id = CASE WHEN (pQtyUomId = (SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) THEN COALESCE(pPriceUomId,pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) ELSE COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) END WHERE (ipsitem_id=_ipsitemid); END IF; RETURN _ipsitemid; END; $_$; aDROP FUNCTION public.saveipsitem(integer, integer, integer, numeric, numeric, integer, integer); publicadminfalse8399212551746811bsaveipsitem(integer, integer, integer, numeric, numeric, integer, integer, numeric, numeric, text)FUNCTIONCREATE FUNCTION saveipsitem(pipsitemid integer, pipsheadid integer, pitemid integer, pqtybreak numeric, pprice numeric, pqtyuomid integer, ppriceuomid integer, ppercent numeric, pfixedamt numeric, ptype text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _ipsitemid INTEGER; _new BOOLEAN; BEGIN -- Validation IF (SELECT COUNT(item_id)=0 FROM item WHERE (item_id=pItemId)) THEN RAISE EXCEPTION 'You must provide a valid Item'; ELSIF (COALESCE(pQtyBreak,0) < 0) THEN RAISE EXCEPTION 'Quantity can not be a negative value'; ELSIF (COALESCE(pPrice,0) < 0) THEN RAISE EXCEPTION 'Price must be a negative value'; ELSIF ((pQtyUomId IS NOT NULL) AND (SELECT COUNT(item_id)=0 FROM (SELECT item_id FROM item WHERE ((item_id=pItemId) AND (item_inv_uom_id=pQtyUomId)) UNION SELECT item_id FROM item,itemuomconv,itemuom,uomtype WHERE ((item_id=pItemId) AND (itemuomconv_item_id=item_id) AND (itemuomconv_from_uom_id=pQtyUomId) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (itemuom_uomtype_id=uomtype_id) AND (uomtype_name='Selling')) UNION SELECT item_id FROM item,itemuomconv,itemuom,uomtype WHERE ((item_id=pItemId) AND (itemuomconv_item_id=item_id) AND (itemuomconv_to_uom_id=pQtyUomId) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (itemuom_uomtype_id=uomtype_id) AND (uomtype_name='Selling'))) AS data)) THEN RAISE EXCEPTION 'Qty UOM Must be a valid Selling UOM for the Item'; ELSIF ((pPriceUomId IS NOT NULL) AND (SELECT COUNT(item_id)=0 FROM (SELECT item_id FROM item WHERE ((item_id=pItemId) AND (item_inv_uom_id=pPriceUomId)) UNION SELECT item_id FROM item,itemuomconv,itemuom,uomtype WHERE ((item_id=pItemId) AND (itemuomconv_item_id=item_id) AND (itemuomconv_from_uom_id=pPriceUomId) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (itemuom_uomtype_id=uomtype_id) AND (uomtype_name='Selling')) UNION SELECT item_id FROM item,itemuomconv,itemuom,uomtype WHERE ((item_id=pItemId) AND (itemuomconv_item_id=item_id) AND (itemuomconv_to_uom_id=pPriceUomId) AND (itemuom_itemuomconv_id=itemuomconv_id) AND (itemuom_uomtype_id=uomtype_id) AND (uomtype_name='Selling'))) AS data)) THEN RAISE EXCEPTION 'Price UOM Must be a valid Selling UOM for the Item'; END IF; _new := TRUE; IF (pIpsItemId IS NOT NULL) THEN SELECT ipsitem_id INTO _ipsitemid FROM ipsiteminfo WHERE (ipsitem_id=pIpsItemId); IF (FOUND) THEN _new := FALSE; ELSE RAISE EXCEPTION 'Pricing Schedule Item not found.'; END IF; ELSE SELECT ipsitem_id INTO _ipsitemid FROM ipsiteminfo WHERE ((ipsitem_ipshead_id = pIpsheadId) AND (ipsitem_item_id = pItemId) AND (ipsitem_qtybreak = pQtyBreak) AND (ipsitem_qty_uom_id = COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId))) AND (ipsitem_price_uom_id = CASE WHEN (pQtyUomId = (SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) THEN COALESCE(pPriceUomId,pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) ELSE COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) END)); END IF; IF (FOUND) THEN _new := false; END IF; IF (_new) THEN INSERT INTO ipsiteminfo ( ipsitem_ipshead_id, ipsitem_item_id, ipsitem_qtybreak, ipsitem_price, ipsitem_qty_uom_id, ipsitem_price_uom_id, ipsitem_discntprcnt, ipsitem_fixedamtdiscount, ipsitem_type) VALUES ( pIpsheadId, pItemId, pQtyBreak, pPrice, COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)), CASE WHEN (pQtyUomId = (SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) THEN COALESCE(pPriceUomId,pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) ELSE COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) END, pPercent, pFixedAmt, pType) RETURNING ipsitem_id INTO _ipsitemid; ELSE UPDATE ipsiteminfo SET ipsitem_qtybreak = pQtyBreak, ipsitem_price = pPrice, ipsitem_qty_uom_id = COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)), ipsitem_price_uom_id = CASE WHEN (pQtyUomId = (SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) THEN COALESCE(pPriceUomId,pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) ELSE COALESCE(pQtyUomId,(SELECT item_inv_uom_id FROM item WHERE item_id = pItemId)) END, ipsitem_discntprcnt=pPercent, ipsitem_fixedamtdiscount=pFixedAmt, ipsitem_type=pType WHERE (ipsitem_id=_ipsitemid); END IF; RETURN _ipsitemid; END; $$; DROP FUNCTION public.saveipsitem(pipsitemid integer, pipsheadid integer, pitemid integer, pqtybreak numeric, pprice numeric, pqtyuomid integer, ppriceuomid integer, ppercent numeric, pfixedamt numeric, ptype text); publicadminfalse8399212551692717;saveipsprodcat(integer, integer, integer, numeric, numeric)FUNCTION(CREATE FUNCTION saveipsprodcat(integer, integer, integer, numeric, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ DECLARE pIpsProdcatId ALIAS FOR $1; pIpsHeadId ALIAS FOR $2; pProdCatId ALIAS FOR $3; pQtyBreak ALIAS FOR $4; pDiscount ALIAS FOR $5; _ipsprodcatid INTEGER; _new BOOLEAN; BEGIN -- Validation IF (SELECT COUNT(*)=0 FROM prodcat WHERE (prodcat_id=pProdcatId)) THEN RAISE EXCEPTION 'You must provide a valid Product Category'; ELSIF (COALESCE(pQtyBreak,0) < 0) THEN RAISE EXCEPTION 'Quantity can not be a negative value'; ELSIF (COALESCE(pDiscount,0) < 0) THEN RAISE EXCEPTION 'Discount must be a negative value'; END IF; _new := TRUE; IF (pIpsProdcatId IS NOT NULL) THEN SELECT ipsprodcat_id INTO _ipsprodcatid FROM ipsprodcat WHERE (ipsprodcat_id=pIpsprodcatId); IF (FOUND) THEN _new := FALSE; ELSE RAISE EXCEPTION 'Pricing Schedule Product Category not found'; END IF; ELSE SELECT ipsprodcat_id INTO _ipsprodcatid FROM ipsprodcat WHERE ((ipsprodcat_ipshead_id=pIpsheadId) AND (ipsprodcat_prodcat_id=pProdcatId) AND (ipsprodcat_qtybreak=pQtyBreak)); IF (FOUND) THEN _new := false; ELSE _ipsprodcatid := nextval('ipsprodcat_ipsprodcat_id_seq'); END IF; END IF; IF (_new) THEN INSERT INTO ipsprodcat ( ipsprodcat_id, ipsprodcat_ipshead_id, ipsprodcat_prodcat_id, ipsprodcat_qtybreak, ipsprodcat_discntprcnt) VALUES ( _ipsprodcatid, pIpsheadId, pProdcatId, pQtyBreak, pDiscount * .01); ELSE UPDATE ipsprodcat SET ipsprodcat_qtybreak = pQtyBreak, ipsprodcat_discntprcnt = pDiscount * .01 WHERE (ipsprodcat_id=_ipsprodcatid); END IF; RETURN _ipsprodcatid; END; $_$; RDROP FUNCTION public.saveipsprodcat(integer, integer, integer, numeric, numeric); publicadminfalse8399212551692718Dsaveipsprodcat(integer, integer, integer, numeric, numeric, numeric)FUNCTION\CREATE FUNCTION saveipsprodcat(integer, integer, integer, numeric, numeric, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pIpsProdcatId ALIAS FOR $1; pIpsHeadId ALIAS FOR $2; pProdCatId ALIAS FOR $3; pQtyBreak ALIAS FOR $4; pDiscount ALIAS FOR $5; pFixedAmtDiscount ALIAS FOR $6; _ipsprodcatid INTEGER; _new BOOLEAN; BEGIN -- Validation IF (SELECT COUNT(*)=0 FROM prodcat WHERE (prodcat_id=pProdcatId)) THEN RAISE EXCEPTION 'You must provide a valid Product Category'; ELSIF (COALESCE(pQtyBreak,0) < 0) THEN RAISE EXCEPTION 'Quantity can not be a negative value'; ELSIF (COALESCE(pDiscount,0) < 0) THEN RAISE EXCEPTION 'Discount must be a negative value'; END IF; _new := TRUE; IF (pIpsProdcatId IS NOT NULL) THEN SELECT ipsprodcat_id INTO _ipsprodcatid FROM ipsprodcat WHERE (ipsprodcat_id=pIpsprodcatId); IF (FOUND) THEN _new := FALSE; ELSE RAISE EXCEPTION 'Pricing Schedule Product Category not found'; END IF; ELSE SELECT ipsprodcat_id INTO _ipsprodcatid FROM ipsprodcat WHERE ((ipsprodcat_ipshead_id=pIpsheadId) AND (ipsprodcat_prodcat_id=pProdcatId) AND (ipsprodcat_qtybreak=pQtyBreak)); IF (FOUND) THEN _new := false; ELSE _ipsprodcatid := nextval('ipsprodcat_ipsprodcat_id_seq'); END IF; END IF; IF (_new) THEN INSERT INTO ipsprodcat ( ipsprodcat_id, ipsprodcat_ipshead_id, ipsprodcat_prodcat_id, ipsprodcat_qtybreak, ipsprodcat_discntprcnt, ipsprodcat_fixedamtdiscount) VALUES ( _ipsprodcatid, pIpsheadId, pProdcatId, pQtyBreak, pDiscount * .01, pFixedAmtDiscount); ELSE UPDATE ipsprodcat SET ipsprodcat_qtybreak = pQtyBreak, ipsprodcat_discntprcnt = pDiscount * .01, ipsprodcat_fixedamtdiscount = pFixedAmtDiscount WHERE (ipsprodcat_id=_ipsprodcatid); END IF; RETURN _ipsprodcatid; END; $_$; [DROP FUNCTION public.saveipsprodcat(integer, integer, integer, numeric, numeric, numeric); publicadminfalse8399212551746812Jsaveipsprodcat(integer, integer, integer, numeric, numeric, numeric, text)FUNCTION CREATE FUNCTION saveipsprodcat(pipsprodcatid integer, pipsheadid integer, pprodcatid integer, pqtybreak numeric, pdiscount numeric, pfixedamtdiscount numeric, ptype text) RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _ipsitemid INTEGER; _new BOOLEAN; BEGIN -- Validation IF (SELECT COUNT(*)=0 FROM prodcat WHERE (prodcat_id=pProdcatId)) THEN RAISE EXCEPTION 'You must provide a valid Product Category'; ELSIF (COALESCE(pQtyBreak,0) < 0) THEN RAISE EXCEPTION 'Quantity can not be a negative value'; ELSIF (COALESCE(pDiscount,0) < 0) THEN RAISE EXCEPTION 'Discount must be a negative value'; END IF; _new := TRUE; IF (pIpsProdcatId IS NOT NULL) THEN SELECT ipsitem_id INTO _ipsitemid FROM ipsiteminfo WHERE (ipsprodcat_id=pIpsprodcatId); IF (FOUND) THEN _new := FALSE; ELSE RAISE EXCEPTION 'Pricing Schedule Product Category not found'; END IF; ELSE SELECT ipsitem_id INTO _ipsitemid FROM ipsiteminfo WHERE ((ipsitem_ipshead_id=pIpsheadId) AND (ipsitem_prodcat_id=pProdcatId) AND (ipsitem_qtybreak=pQtyBreak)); IF (FOUND) THEN _new := false; ELSE _ipsitemid := nextval('ipsitem_ipsitem_id_seq'); END IF; END IF; IF (_new) THEN INSERT INTO ipsiteminfo ( ipsitem_id, ipsitem_ipshead_id, ipsitem_prodcat_id, ipsitem_qtybreak, ipsitem_price, ipsitem_discntprcnt, ipsitem_fixedamtdiscount, ipsitem_type) VALUES ( _ipsitemid, pIpsheadId, pProdcatId, pQtyBreak, 0.0, pDiscount * .01, pFixedAmtDiscount, pType); ELSE UPDATE ipsiteminfo SET ipsitem_qtybreak = pQtyBreak, ipsitem_discntprcnt = pDiscount * .01, ipsitem_fixedamtdiscount = pFixedAmtDiscount, ipsitem_type = pType WHERE (ipsitem_id=_ipsitemid); END IF; RETURN _ipsitemid; END; $$; DROP FUNCTION public.saveipsprodcat(pipsprodcatid integer, pipsheadid integer, pprodcatid integer, pqtybreak numeric, pdiscount numeric, pfixedamtdiscount numeric, ptype text); publicadminfalse8399212551692719*saveitemimage(integer, character, integer)FUNCTION_CREATE FUNCTION saveitemimage(integer, character, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pPurpose ALIAS FOR $2; pImageid ALIAS FOR $3; _itemimageId INTEGER; BEGIN -- See if a record with this purpose already exists SELECT imageass_id INTO _itemimageId FROM imageass WHERE ( (imageass_source='I') AND (imageass_source_id=pItemid) AND (imageass_purpose=pPurpose) ); IF (FOUND) THEN UPDATE imageass SET imageass_image_id=pImageId WHERE (imageass_id=_itemimageId); ELSE _itemimageId := NEXTVAL('imageass_imageass_id_seq'); INSERT INTO imageass VALUES (_itemimageId,pItemid,'I',pImageid,pPurpose); END IF; RETURN _itemimageId; END; $_$; ADROP FUNCTION public.saveitemimage(integer, character, integer); publicadminfalse8399212551692720Psaveitemuomconv(integer, integer, numeric, integer, numeric, boolean, integer[])FUNCTIONZ CREATE FUNCTION saveitemuomconv(integer, integer, numeric, integer, numeric, boolean, integer[]) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemId ALIAS FOR $1; pFromUomId ALIAS FOR $2; pFromValue ALIAS FOR $3; pToUomId ALIAS FOR $4; pToValue ALIAS FOR $5; pFractional ALIAS FOR $6; pUomTypes ALIAS FOR $7; _p RECORD; _fromUomId INTEGER; _fromValue NUMERIC; _toUomId INTEGER; _toValue NUMERIC; _fractional BOOLEAN; _seq INTEGER; _i INTEGER; _uomtype TEXT; BEGIN -- Make sure we have some itemtypes IF (pUomTypes IS NULL) OR (ARRAY_UPPER(pUomTypes,1) = 0) THEN RAISE EXCEPTION 'You must include at least one item type.'; END IF; -- If this is a global UOM, over-ride with global data. SELECT * INTO _p FROM uomconv WHERE ((((uomconv_from_uom_id=pFromUomId) AND (uomconv_to_uom_id=pToUomId)) OR ((uomconv_from_uom_id=pToUomId) AND (uomconv_to_uom_id=pFromUomId)))); IF (FOUND) THEN _fromUomId := _p.uomconv_from_uom_id; _toUomId := _p.uomconv_to_uom_id; _fromValue := _p.uomconv_from_value; _toValue := _p.uomconv_to_value; _fractional := _p.uomconv_fractional; RAISE NOTICE 'Defaulted to global Unit of Measure conversion ratios.'; ELSE _fromUomId := pFromUomId; _fromValue := pFromValue; _toUomId := pToUomId; _toValue := pToValue; _fractional := pFractional; END IF; -- See if an item conversion exists going the other way SELECT f.uom_name AS f_uom, t.uom_name as t_uom INTO _p FROM itemuomconv,uom f, uom t WHERE ((itemuomconv_item_id=pItemId) AND (itemuomconv_from_uom_id=_toUomId) AND (itemuomconv_to_uom_id=_fromUomId) AND (f.uom_id=itemuomconv_from_uom_id) AND (t.uom_id=itemuomconv_to_uom_id)); IF (FOUND) THEN RAISE EXCEPTION 'Unit of measure conversion already exists going from % to %.',_p.f_uom,_p.t_uom; END IF; -- See if an item conversion record exists SELECT * INTO _p FROM itemuomconv WHERE ((itemuomconv_item_id=pItemId) AND (itemuomconv_from_uom_id=_fromUomId) AND (itemuomconv_to_uom_id=_toUomId)); -- Update if found IF (FOUND) THEN UPDATE itemuomconv SET itemuomconv_from_value=_fromValue, itemuomconv_to_value=_toValue, itemuomconv_fractional=_fractional WHERE (itemuomconv_id=_p.itemuomconv_id); _seq := _p.itemuomconv_id; --Delete old type list DELETE FROM itemuom WHERE itemuom_itemuomconv_id=_p.itemuomconv_id; ELSE -- Otherwise create a new one SELECT NEXTVAL('itemuomconv_itemuomconv_id_seq') INTO _seq; INSERT INTO itemuomconv VALUES (_seq, pItemId,_fromUomId,_fromValue,_toUomId,_toValue,_fractional); END IF; -- Build new type list FOR _i IN 1..ARRAY_UPPER(pUomTypes,1) LOOP SELECT uomtype_name INTO _uomtype FROM itemuomconv, itemuom, uomtype WHERE ((itemuom_uomtype_id=uomtype_id) AND (itemuomconv_id=itemuom_itemuomconv_id) AND (itemuomconv_item_id=pItemId) AND (uomtype_name != 'Selling') AND (itemuom_uomtype_id=pUomTypes[_i])); IF (FOUND) THEN RAISE EXCEPTION 'Unit of Measure Type % is already used on this item',_uomtype; ELSE INSERT INTO itemuom (itemuom_itemuomconv_id,itemuom_uomtype_id) VALUES (_seq,pUomTypes[_i]); END IF; END LOOP; RETURN _seq; END; $_$; gDROP FUNCTION public.saveitemuomconv(integer, integer, numeric, integer, numeric, boolean, integer[]); publicadminfalse8399212551692721#savemetasql(text, text, text, text)FUNCTION)CREATE FUNCTION savemetasql(text, text, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN saveMetasql($1, $2, $3, $4, true, NULL, 0); END; $_$; :DROP FUNCTION public.savemetasql(text, text, text, text); publicadminfalse8399212551692722,savemetasql(text, text, text, text, boolean)FUNCTION0CREATE FUNCTION savemetasql(text, text, text, text, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN saveMetasql($1, $2, $3, $4, $5, NULL, 0); END; $_$; CDROP FUNCTION public.savemetasql(text, text, text, text, boolean); publicadminfalse83992125516927232savemetasql(text, text, text, text, boolean, text)FUNCTION4CREATE FUNCTION savemetasql(text, text, text, text, boolean, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN saveMetasql($1, $2, $3, $4, $5, $6, 0); END; $_$; IDROP FUNCTION public.savemetasql(text, text, text, text, boolean, text); publicadminfalse8399212551692724;savemetasql(text, text, text, text, boolean, text, integer)FUNCTIONCREATE FUNCTION savemetasql(text, text, text, text, boolean, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pGroup ALIAS FOR $1; pName ALIAS FOR $2; pNotes ALIAS FOR $3; pQuery ALIAS FOR $4; pSystem ALIAS FOR $5; pSchema ALIAS FOR $6; pGrade ALIAS FOR $7; _metasqlid INTEGER; _debug BOOL := false; _grade INTEGER; _insertstr TEXT; _table TEXT; BEGIN --See if Query already exists SELECT metasql_id INTO _metasqlid FROM metasql WHERE ((metasql_group=pGroup) AND (metasql_name=pName) AND (metasql_grade=pGrade)); IF (FOUND) THEN IF (_debug) THEN RAISE NOTICE 'update metasql'; END IF; UPDATE metasql SET metasql_group=pGroup, metasql_name=pName, metasql_notes=pNotes, metasql_query=pQuery WHERE (metasql_id=_metasqlid); ELSE IF (COALESCE(pSchema, 'public') = 'public' OR TRIM(pSchema) = '') THEN _table := 'metasql'; ELSE _table := pSchema || '.pkgmetasql'; END IF; IF (pGrade IS NULL) THEN SELECT MAX(metasql_grade) + 1 INTO _grade FROM metasql WHERE ((metasql_group=pGroup) AND (metasql_name=pName)); ELSE _grade := pGrade; END IF; _insertstr := 'INSERT INTO ' || _table || ' (metasql_group, metasql_name, metasql_notes, ' || ' metasql_query, metasql_grade) VALUES (' || COALESCE(quote_literal(pGroup),'NULL') || ',' || COALESCE(quote_literal(pName), 'NULL') || ',' || COALESCE(quote_literal(pNotes), 'NULL') || ',' || COALESCE(quote_literal(pQuery), 'NULL') ||',' || COALESCE(quote_literal(_grade), 'NULL') || ') RETURNING metasql_id;' ; IF (_debug) THEN RAISE NOTICE '%', _insertstr; END IF; EXECUTE _insertstr INTO _metasqlid; END IF; RETURN _metasqlid; END; $_$; RDROP FUNCTION public.savemetasql(text, text, text, text, boolean, text, integer); publicadminfalse8399212551692725 scraps(text)FUNCTIONcCREATE FUNCTION scraps(text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTransType ALIAS FOR $1; BEGIN IF (pTransType IN ('SI', 'SM', 'EX')) THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END; $_$; #DROP FUNCTION public.scraps(text); publicadminfalse8399212551692726!scrapwomaterial(integer, numeric)FUNCTION'CREATE FUNCTION scrapwomaterial(integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN scrapWoMaterial($1, $2, CURRENT_TIMESTAMP); END; $_$; 8DROP FUNCTION public.scrapwomaterial(integer, numeric); publicadminfalse8399212551692727;scrapwomaterial(integer, numeric, timestamp with time zone)FUNCTION CREATE FUNCTION scrapwomaterial(integer, numeric, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWomatlid ALIAS FOR $1; pQty ALIAS FOR $2; pGlDistTS ALIAS FOR $3; _costmethod CHAR(1); _scrapValue NUMERIC; _r RECORD; BEGIN -- Validate IF (pQty <= 0) THEN RAISE EXCEPTION 'Scrap quantity must be a positive number'; ELSIF ( ( SELECT (womatl_qtyiss < pQty) FROM womatl WHERE (womatl_id=pWomatlid) ) ) THEN RAISE EXCEPTION 'You may not scrap more material than has been issued'; END IF; -- Get the wip G/L account SELECT costcat_wip_accnt_id INTO _r FROM womatl, wo, itemsite, costcat WHERE((womatl_wo_id=wo_id) AND (wo_itemsite_id=itemsite_id) AND (itemsite_costcat_id=costcat_id) AND (womatl_id=pWomatlid)); -- Calculate scrap value SELECT itemsite_costmethod INTO _costmethod FROM womatl JOIN itemsite ON (womatl_itemsite_id=itemsite_id) WHERE (womatl_id=pWomatlid); IF (_costmethod = 'S') THEN SELECT ROUND((stdCost(itemsite_item_id) * itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, pQty)),2) INTO _scrapValue FROM womatl JOIN itemsite ON (womatl_itemsite_id=itemsite_id) WHERE (womatl_id=pWomatlid); ELSIF (_costmethod = 'A') THEN SELECT ROUND((SUM(invhist_invqty * invhist_unitcost)-womatl_scrapvalue)/ (CASE WHEN (SUM(invhist_invqty)-itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtywipscrap) = 0) THEN 1 ELSE SUM(invhist_invqty)-itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtywipscrap) END),2) * itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, pQty) INTO _scrapValue FROM womatl JOIN womatlpost ON (womatl_id=womatlpost_womatl_id) JOIN invhist ON (womatlpost_invhist_id=invhist_id) JOIN itemsite ON (womatl_itemsite_id=itemsite_id) WHERE (womatl_id=pWomatlid) GROUP BY itemsite_item_id,womatl_uom_id,womatl_qtywipscrap,womatl_scrapvalue; ELSE RAISE EXCEPTION 'Cost method not supported to scrap this item'; END IF; -- Distribute to G/L PERFORM insertGLTransaction( 'W/O', 'WO', formatWoNumber(womatl_wo_id), ('Scrap ' || item_number || ' from Work Order'), getPrjAccntId(wo_prj_id, _r.costcat_wip_accnt_id), getPrjAccntId(wo_prj_id, costcat_mfgscrap_accnt_id), -1, _scrapValue, date(pGlDistTS) ) FROM wo, womatl, itemsite, item, costcat WHERE ( (wo_id=womatl_wo_id) AND (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (itemsite_costcat_id=costcat_id) AND (womatl_id=pWomatlid) ); UPDATE womatl SET womatl_qtywipscrap=(womatl_qtywipscrap + pQty), womatl_scrapvalue = womatl_scrapvalue + _scrapValue, womatl_qtyiss=(womatl_qtyiss - pQty) WHERE (womatl_id=pWomatlid); UPDATE wo SET wo_wipvalue = wo_wipvalue-_scrapValue, wo_postedvalue = wo_postedvalue-_scrapValue FROM womatl WHERE ((womatl_id=pWomatlid) AND (wo_id=womatl_wo_id)); RETURN pWomatlid; END; $_$; RDROP FUNCTION public.scrapwomaterial(integer, numeric, timestamp with time zone); publicadminfalse8399212551692728 selectbalanceforbilling(integer)FUNCTION CREATE FUNCTION selectbalanceforbilling(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoheadid ALIAS FOR $1; _returnval BOOLEAN := TRUE; _doSelect BOOLEAN; _result INTEGER; _soitem RECORD; BEGIN FOR _soitem IN -- Get the shipments for this SO. Kits are not shipped SELECT cust_partialship, coitem_id, coitem_linenumber, 'NOTK' AS item_type, SUM(shipitem_qty) AS qty, ( (SUM(shipitem_qty) >= (coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned + SUM(shipitem_qty))) OR (NOT cust_partialship) ) AS toclose FROM cohead JOIN custinfo ON (cust_id=cohead_cust_id) JOIN coitem ON (coitem_cohead_id=cohead_id) JOIN shipitem ON ( (shipitem_orderitem_id=coitem_id) AND (NOT shipitem_invoiced) ) JOIN shiphead ON ( (shiphead_id=shipitem_shiphead_id) AND (shiphead_order_type='SO') AND (shiphead_shipped) ) WHERE (cohead_id=pSoheadid) GROUP BY cust_partialship, coitem_id, item_type, coitem_linenumber, coitem_qtyord, coitem_qtyshipped, coitem_qtyreturned UNION -- Get the Kits for this SO SELECT cust_partialship, coitem_id, coitem_linenumber, 'K' AS item_type, coitem_qtyord AS qty, TRUE AS toclose FROM cohead JOIN custinfo ON (cust_id=cohead_cust_id) JOIN coitem ON (coitem_cohead_id=cohead_id AND coitem_status='O') JOIN itemsite ON (itemsite_id=coitem_itemsite_id) JOIN item ON ( (item_id=itemsite_item_id) AND (item_type='K') ) WHERE (cohead_id=pSoheadid) LOOP _doSelect := true; IF(_soitem.item_type = 'K') THEN -- see if all the sub items are shipped SELECT coitem_id INTO _result FROM coitem WHERE((coitem_cohead_id=pSoheadid) AND (coitem_linenumber=_soitem.coitem_linenumber) AND (coitem_subnumber > 0) AND ((coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) > 0)) LIMIT 1; IF( FOUND ) THEN _doSelect := false; END IF; END IF; IF (_doSelect) THEN -- do as much as we can but still report errors if they occur IF (selectForBilling(_soitem.coitem_id, _soitem.qty, _soitem.toclose) < 0) THEN _returnval := FALSE; END IF; END IF; END LOOP; RETURN _returnval; END; $_$; 7DROP FUNCTION public.selectbalanceforbilling(integer); publicadminfalse8399212551692729/selectdiscountitemsforpayment(integer, integer)FUNCTIONCREATE FUNCTION selectdiscountitemsforpayment(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pBankaccntid ALIAS FOR $2; _currid INTEGER; _r RECORD; BEGIN SELECT bankaccnt_curr_id INTO _currid FROM bankaccnt WHERE (bankaccnt_id=pBankaccntid); FOR _r IN SELECT apopen_id FROM apopen, terms WHERE((CURRENT_DATE <= determineDiscountDate(apopen_terms_id, apopen_docdate)) AND (terms_discprcnt > 0.0) AND (apopen_terms_id=terms_id) AND (apopen_open) AND (apopen_status = 'O') AND (apopen_doctype IN ('V', 'D')) AND (apopen_vend_id=pVendid) AND (apopen_curr_id=_currid) ) LOOP PERFORM selectPayment(_r.apopen_id, pBankaccntid); END LOOP; RETURN 1; END; $_$; FDROP FUNCTION public.selectdiscountitemsforpayment(integer, integer); publicadminfalse8399212551692730*selectdueitemsforpayment(integer, integer)FUNCTIONCREATE FUNCTION selectdueitemsforpayment(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pVendid ALIAS FOR $1; pBankaccntid ALIAS FOR $2; _currid INTEGER; BEGIN SELECT bankaccnt_curr_id INTO _currid FROM bankaccnt WHERE (bankaccnt_id=pBankaccntid); PERFORM selectPayment(apopen_id, pBankaccntid) FROM apopen WHERE((apopen_open) AND (apopen_vend_id=pVendid) AND (apopen_duedate <= CURRENT_DATE) AND (apopen_status = 'O') AND (apopen_doctype IN ('V', 'D')) AND (apopen_curr_id=_currid) ); RETURN 1; END; $_$; ADROP FUNCTION public.selectdueitemsforpayment(integer, integer); publicadminfalse8399212551692731+selectforbilling(integer, numeric, boolean)FUNCTIONPCREATE FUNCTION selectforbilling(integer, numeric, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoitemid ALIAS FOR $1; pQty ALIAS FOR $2; pClose ALIAS FOR $3; _itemid INTEGER := NULL; _taxzoneid INTEGER := NULL; _taxid INTEGER := NULL; _taxtypeid INTEGER := NULL; BEGIN SELECT cobmisc_taxzone_id, item_id, coitem_taxtype_id INTO _taxzoneid, _itemid, _taxtypeid FROM cobmisc, coitem, itemsite, item WHERE ((cobmisc_cohead_id = coitem_cohead_id) AND (NOT cobmisc_posted) AND (coitem_itemsite_id = itemsite_id) AND (itemsite_item_id = item_id) AND (coitem_id = pSoitemid) ) LIMIT 1; RETURN selectforbilling(pSoitemid, pQty, pClose, _taxtypeid); END; $_$; BDROP FUNCTION public.selectforbilling(integer, numeric, boolean); publicadminfalse83992125516927324selectforbilling(integer, numeric, boolean, integer)FUNCTIONCREATE FUNCTION selectforbilling(integer, numeric, boolean, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoitemid ALIAS FOR $1; pQty ALIAS FOR $2; pClose ALIAS FOR $3; ptaxtypeid ALIAS FOR $4; _cobillid INTEGER; _r RECORD; BEGIN -- Get some information SELECT cobmisc_id, cobmisc_taxzone_id, coitem_id, coitem_price, coitem_price_invuomratio AS invpricerat, coitem_qty_invuomratio, item_id INTO _r FROM cobmisc, coitem, itemsite, item, site() WHERE ((cobmisc_cohead_id = coitem_cohead_id) AND (NOT cobmisc_posted) AND (coitem_itemsite_id = itemsite_id) AND (itemsite_item_id = item_id) AND (coitem_id = pSoitemid) AND (itemsite_warehous_id = warehous_id) ) LIMIT 1; -- check to make sure the qty to bill for is not less than -- the total un-invoiced shipped amount IF ((SELECT (pQty < SUM(shipitem_qty)) FROM shipitem, shiphead, coitem WHERE ( (shipitem_shiphead_id=shiphead_id) AND (shiphead_order_type='SO') AND (shiphead_order_id=coitem_cohead_id) AND (shipitem_orderitem_id=coitem_id) AND (shiphead_shipped) AND (NOT shipitem_invoiced) AND (coitem_id=pSoitemid) ) ) ) THEN RETURN -1; END IF; SELECT cobill_id INTO _cobillid FROM cobill, cobmisc, coitem WHERE ((cobill_cobmisc_id = cobmisc_id) AND (cobmisc_cohead_id = coitem_cohead_id) AND (cobill_coitem_id = coitem_id) AND (NOT cobmisc_posted) AND (coitem_id = pSoitemid)); IF (FOUND) THEN UPDATE cobill SET cobill_selectdate = CURRENT_DATE, cobill_select_username = getEffectiveXtUser(), cobill_qty = pQty, cobill_toclose = pClose, cobill_taxtype_id = ptaxtypeid WHERE (cobill_id=_cobillid); ELSE SELECT NEXTVAL('cobill_cobill_id_seq') INTO _cobillid; INSERT INTO cobill (cobill_id, cobill_coitem_id, cobill_cobmisc_id, cobill_selectdate, cobill_select_username, cobill_qty, cobill_toclose, cobill_taxtype_id) VALUES (_cobillid, _r.coitem_id, _r.cobmisc_id, CURRENT_DATE, getEffectiveXtUser(), pQty, pClose, ptaxtypeid); END IF; RETURN _cobillid; END; $_$; KDROP FUNCTION public.selectforbilling(integer, numeric, boolean, integer); publicadminfalse8399212551692733selectpayment(integer, integer)FUNCTION2 CREATE FUNCTION selectpayment(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenid ALIAS FOR $1; pBankaccntid ALIAS FOR $2; _p RECORD; _apselectid INTEGER; _amount NUMERIC; _discount NUMERIC; BEGIN SELECT apopen_amount, apopen_paid, apopen_doctype, apopen_docdate, apopen_curr_id, apopen_amount - apopen_paid - COALESCE((SELECT SUM(currToCurr(checkitem_curr_id, apopen_curr_id, checkitem_amount + checkitem_discount, checkhead_checkdate)) FROM checkitem, checkhead WHERE((checkitem_checkhead_id=checkhead_id) AND (checkitem_apopen_id=apopen_id) AND (NOT checkhead_deleted) AND (NOT checkhead_replaced) AND (NOT checkhead_posted)) ),0) AS balance, noNeg(COALESCE(apopen_discountable_amount, 0) * CASE WHEN (CURRENT_DATE <= determineDiscountDate(apopen_terms_id, apopen_docdate)) THEN terms_discprcnt ELSE 0.0 END - discount_applied) AS discount_available INTO _p FROM apopen LEFT OUTER JOIN terms ON (apopen_terms_id=terms_id), (SELECT COALESCE(SUM(apapply_amount),0) AS discount_applied FROM apapply, apopen WHERE((apapply_target_apopen_id=pApopenid) AND (apapply_source_apopen_id=apopen_id) AND (apopen_discount)) ) AS data WHERE(apopen_id=pApopenid); IF(NOT FOUND OR (NOT _p.apopen_doctype IN ('V','D'))) THEN RETURN -1; END IF; _discount := round(_p.discount_available, 2); _amount := noNeg(round(_p.balance, 2) - _discount); IF (round(_p.balance,2) < (_discount + _amount)) THEN RETURN -2; END IF; IF (_amount > 0) THEN SELECT apselect_id INTO _apselectid FROM apselect WHERE (apselect_apopen_id=pApopenid); IF (FOUND) THEN UPDATE apselect SET apselect_amount=_amount, apselect_discount=_discount, apselect_curr_id = _p.apopen_curr_id WHERE(apselect_id=_apselectid); ELSE SELECT NEXTVAL('apselect_apselect_id_seq') INTO _apselectid; INSERT INTO apselect ( apselect_id, apselect_apopen_id, apselect_amount, apselect_discount, apselect_bankaccnt_id, apselect_curr_id, apselect_date ) VALUES ( _apselectid, pApopenid, _amount, _discount, pBankaccntid, _p.apopen_curr_id, _p.apopen_docdate ); END IF; ELSE _apselectid := 0; END IF; RETURN _apselectid; END; $_$; 6DROP FUNCTION public.selectpayment(integer, integer); publicadminfalse8399212551692734!selectuninvoicedshipment(integer)FUNCTIONCREATE FUNCTION selectuninvoicedshipment(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipheadid ALIAS FOR $1; _cobmiscid INTEGER; _coheadid INTEGER; _r RECORD; _cobillid INTEGER; BEGIN -- make a cobmisc head if it doesn't already exist for this cohead SELECT shiphead_order_id, createBillingHeader(shiphead_order_id) INTO _coheadid, _cobmiscid FROM shiphead JOIN shipitem ON (shipitem_shiphead_id=shiphead_id) WHERE (shiphead_shipped AND NOT shipitem_invoiced AND (shiphead_id=pShipheadid)); -- Grab all of the uninvoiced shipitem records FOR _r IN SELECT cohead_id, coitem_id, SUM(shipitem_qty) AS qty, coitem_price, coitem_price_invuomratio AS invpricerat, coitem_qty_invuomratio, item_id, ( ((coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned) <= 0) OR (NOT cust_partialship) ) AS toclose, coitem_taxtype_id FROM shiphead, shipitem, coitem, cohead, custinfo, itemsite, item WHERE ( (shipitem_shiphead_id=shiphead_id) AND (shipitem_orderitem_id=coitem_id) AND (coitem_cohead_id=cohead_id) AND (shiphead_shipped) AND (NOT shipitem_invoiced) AND (coitem_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (cohead_cust_id=cust_id) AND (item_type != 'K') AND (cohead_id=_coheadid) AND (shiphead_id=pShipheadid) ) GROUP BY cohead_id, coitem_id, cust_partialship, coitem_taxtype_id, coitem_qtyord, coitem_qtyshipped, coitem_qtyreturned, coitem_price, invpricerat, coitem_qty_invuomratio, item_id UNION SELECT cohead_id, coitem_id, coitem_qtyord AS qty, coitem_price, coitem_price_invuomratio AS invpricerat, coitem_qty_invuomratio, item_id, true AS toclose, coitem_taxtype_id FROM shiphead, cohead, custinfo, itemsite, item, coitem AS kit WHERE((shiphead_order_id=cohead_id) AND (coitem_cohead_id=cohead_id) AND (coitem_status='O') AND (shiphead_shipped) AND (coitem_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (cohead_cust_id=cust_id) AND (item_type = 'K') AND (cohead_id=_coheadid) AND (shiphead_id=pShipheadid) AND (coitem_linenumber NOT IN (SELECT sub.coitem_linenumber FROM coitem AS sub WHERE sub.coitem_cohead_id=cohead_id -- cohead for kit AND sub.coitem_linenumber=kit.coitem_linenumber AND sub.coitem_subnumber > 0 AND ((sub.coitem_qtyord - sub.coitem_qtyshipped + sub.coitem_qtyreturned) > 0) LIMIT 1) )) GROUP BY cohead_id, coitem_id, cust_partialship, coitem_taxtype_id, coitem_qtyord, coitem_qtyshipped, coitem_qtyreturned, coitem_price, invpricerat, coitem_qty_invuomratio, item_id, coitem_linenumber LOOP SELECT cobill_id INTO _cobillid FROM cobill, cobmisc, coitem WHERE ((cobill_cobmisc_id=cobmisc_id) AND (cobmisc_cohead_id=coitem_cohead_id) AND (cobill_coitem_id=coitem_id) AND (NOT cobmisc_posted) AND (cobill_cobmisc_id=_cobmiscid) AND (coitem_id=_r.coitem_id)) LIMIT 1; IF (FOUND) THEN UPDATE cobill SET cobill_selectdate = CURRENT_DATE, cobill_select_username = getEffectiveXtUser(), cobill_qty = cobill_qty + _r.qty, cobill_toclose = _r.toclose, cobill_taxtype_id = _r.coitem_taxtype_id WHERE (cobill_id=_cobillid); ELSE -- Now insert the cobill line INSERT INTO cobill ( cobill_cobmisc_id, cobill_coitem_id, cobill_selectdate, cobill_select_username, cobill_qty, cobill_toclose, cobill_taxtype_id ) VALUES ( _cobmiscid, _r.coitem_id, CURRENT_DATE, getEffectiveXtUser(), _r.qty, _r.toclose, _r.coitem_taxtype_id ); END IF; END LOOP; RETURN _cobmiscid; END; $_$; 8DROP FUNCTION public.selectuninvoicedshipment(integer); publicadminfalse8399212551692735(selectuninvoicedshipments(integer, text)FUNCTIONCREATE FUNCTION selectuninvoicedshipments(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pCusttype ALIAS FOR $2; _r RECORD; _recordCounter INTEGER := 0; BEGIN -- Grab all of the uninvoiced shipitem records FOR _r IN SELECT DISTINCT shiphead_id FROM shiphead, shipitem, coitem, itemsite, cohead, custinfo, custtype WHERE ( (shiphead_order_type='SO') AND (shipitem_shiphead_id=shiphead_id) AND (shipitem_orderitem_id=coitem_id) AND (coitem_itemsite_id=itemsite_id) AND (coitem_status <> 'C') AND (coitem_cohead_id=cohead_id) AND (cohead_cust_id=cust_id) AND (cust_custtype_id=custtype_id) AND ( (pWarehousid = -1) OR (itemsite_warehous_id=pWarehousid) ) AND (custtype_code ~ pCusttype) AND (shiphead_shipped) AND (NOT shipitem_invoiced) AND (coitem_id NOT IN ( SELECT cobill_coitem_id FROM cobmisc, cobill WHERE ((cobill_cobmisc_id=cobmisc_id) AND (NOT cobmisc_posted) ) ) ) ) LOOP PERFORM selectUninvoicedShipment(_r.shiphead_id); _recordCounter := _recordCounter + 1; END LOOP; RETURN _recordCounter; END; $_$; ?DROP FUNCTION public.selectuninvoicedshipments(integer, text); publicadminfalse8399212551692736"selectuninvoicedshipments(integer)FUNCTIONCREATE FUNCTION selectuninvoicedshipments(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; _r RECORD; _recordCounter INTEGER := 0; BEGIN -- Grab all of the uninvoiced shipitem records FOR _r IN SELECT DISTINCT shiphead_id FROM shiphead, shipitem, coitem, itemsite WHERE ( (shiphead_order_type='SO') AND (shipitem_shiphead_id=shiphead_id) AND (shipitem_orderitem_id=coitem_id) AND (coitem_itemsite_id=itemsite_id) AND (coitem_status <> 'C') AND ( (pWarehousid = -1) OR (itemsite_warehous_id=pWarehousid) ) AND (shiphead_shipped) AND (NOT shipitem_invoiced) AND (coitem_id NOT IN ( SELECT cobill_coitem_id FROM cobmisc, cobill WHERE ((cobill_cobmisc_id=cobmisc_id) AND (NOT cobmisc_posted) ) ) ) ) LOOP PERFORM selectUninvoicedShipment(_r.shiphead_id); _recordCounter := _recordCounter + 1; END LOOP; RETURN _recordCounter; END; $_$; 9DROP FUNCTION public.selectuninvoicedshipments(integer); publicadminfalse8399212551692737+selectuninvoicedshipments(integer, integer)FUNCTIONCREATE FUNCTION selectuninvoicedshipments(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWarehousid ALIAS FOR $1; pCusttypeid ALIAS FOR $2; _r RECORD; _recordCounter INTEGER := 0; BEGIN -- Grab all of the uninvoiced shipitem records FOR _r IN SELECT DISTINCT shiphead_id FROM shiphead, shipitem, coitem, itemsite, cohead, custinfo WHERE ( (shiphead_order_type='SO') AND (shipitem_shiphead_id=shiphead_id) AND (shipitem_orderitem_id=coitem_id) AND (coitem_itemsite_id=itemsite_id) AND (coitem_status <> 'C') AND (coitem_cohead_id=cohead_id) AND (cohead_cust_id=cust_id) AND (cust_custtype_id=pCusttypeid) AND ( (pWarehousid = -1) OR (itemsite_warehous_id=pWarehousid) ) AND (shiphead_shipped) AND (NOT shipitem_invoiced) AND (coitem_id NOT IN ( SELECT cobill_coitem_id FROM cobmisc, cobill WHERE ((cobill_cobmisc_id=cobmisc_id) AND (NOT cobmisc_posted) ) ) ) ) LOOP PERFORM selectUninvoicedShipment(_r.shiphead_id); _recordCounter := _recordCounter + 1; END LOOP; RETURN _recordCounter; END; $_$; BDROP FUNCTION public.selectuninvoicedshipments(integer, integer); publicadminfalse8399212551692738setapjournalnumber()FUNCTIONCREATE FUNCTION setapjournalnumber() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _journalNumber INTEGER; _r RECORD; BEGIN -- Fetch the next Journal Number SELECT fetchJournalNumber('A/P') INTO _journalNumber; -- Walk through all of the A/P Open Items FOR _r IN SELECT apopen_id, apopen_docnumber FROM apopen WHERE (NOT apopen_posted) LOOP -- Set the Journal Number for all of the G/L Transactions -- for the A/P Open Item UPDATE gltrans SET gltrans_journalnumber=_journalNumber WHERE ( (gltrans_source='P/O') AND (gltrans_doctype IN ('VO')) AND (gltrans_docnumber=_r.apopen_docnumber) AND (NOT gltrans_exported) ); -- Set the Journal Number for the A/P Open Item UPDATE apopen SET apopen_journalnumber=_journalNumber WHERE (apopen_id=_r.apopen_id); END LOOP; RETURN _journalNumber; END; $$; +DROP FUNCTION public.setapjournalnumber(); publicadminfalse8399212551692739setarjournalnumber()FUNCTIONCREATE FUNCTION setarjournalnumber() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _journalNumber INTEGER; _r RECORD; BEGIN -- Fetch the next Journal Number SELECT fetchJournalNumber('A/R') INTO _journalNumber; -- Walk through all of the A/R Open Items FOR _r IN SELECT aropen_id, aropen_docnumber FROM aropen WHERE (NOT aropen_posted) LOOP -- Set the Journal Number for all of the G/L Transactions -- for the A/R Open Item UPDATE gltrans SET gltrans_journalnumber=_journalNumber WHERE ( (gltrans_source='S/O') AND (gltrans_doctype IN ('CM', 'IN')) AND (gltrans_docnumber=_r.aropen_docnumber) AND (NOT gltrans_exported) ); -- Set the Journal Number for the A/R Open Item UPDATE aropen SET aropen_journalnumber=_journalNumber WHERE (aropen_id=_r.aropen_id); END LOOP; RETURN _journalNumber; END; $$; +DROP FUNCTION public.setarjournalnumber(); publicadminfalse8399212551692740$setbudget(integer, integer, numeric)FUNCTION~CREATE FUNCTION setbudget(integer, integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; pAccntid ALIAS FOR $2; pAmount ALIAS FOR $3; BEGIN RETURN setBudget(1, pPeriodid, pAccntid, pAmount); END; $_$; ;DROP FUNCTION public.setbudget(integer, integer, numeric); publicadminfalse8399212551692741-setbudget(integer, integer, integer, numeric)FUNCTIONCREATE FUNCTION setbudget(integer, integer, integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBudgheadid ALIAS FOR $1; pPeriodid ALIAS FOR $2; pAccntid ALIAS FOR $3; pAmount ALIAS FOR $4; _budgetid INTEGER; BEGIN SELECT budgitem_id INTO _budgetid FROM budgitem WHERE ((budgitem_period_id=pPeriodid) AND (budgitem_budghead_id=pBudgheadid) AND (budgitem_accnt_id=pAccntid)); IF (FOUND) THEN UPDATE budgitem SET budgitem_amount = pAmount WHERE (budgitem_id=_budgetid); ELSE SELECT nextval('budgitem_budgitem_id_seq') INTO _budgetid; INSERT INTO budgitem (budgitem_id, budgitem_budghead_id, budgitem_period_id, budgitem_accnt_id, budgitem_amount) VALUES(_budgetid, pBudgheadid, pPeriodid, pAccntid, pAmount); END IF; RETURN _budgetid; END; $_$; DDROP FUNCTION public.setbudget(integer, integer, integer, numeric); publicadminfalse8399212551692742setbytea(text)FUNCTIONQCREATE FUNCTION setbytea(text) RETURNS bytea LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pMetricName ALIAS FOR $1; _value bytea; BEGIN _value := decode(pMetricName, 'escape'); RETURN _value; END; $_$; %DROP FUNCTION public.setbytea(text); publicadminfalse8399212551692743setbytea(bytea)FUNCTION@CREATE FUNCTION setbytea(bytea) RETURNS bytea LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pMetricName ALIAS FOR $1; _value bytea; BEGIN _value := pMetricName; RETURN _value; END; $_$; &DROP FUNCTION public.setbytea(bytea); publicadminfalse8399212551692744setccbankaccnt(text, integer)FUNCTION#CREATE FUNCTION setccbankaccnt(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pccardtype ALIAS FOR $1; pbankaccntid ALIAS FOR $2; _ccbankid INTEGER; _numfound INTEGER; BEGIN RAISE DEBUG 'setCCBankAccount(%, %) entered', pccardtype, pbankaccntid; UPDATE ccbank SET ccbank_bankaccnt_id=pbankaccntid WHERE ccbank_ccard_type=pccardtype RETURNING ccbank_id INTO _ccbankid; GET DIAGNOSTICS _numfound = ROW_COUNT; IF (_numfound <= 0) THEN INSERT INTO ccbank (ccbank_ccard_type, ccbank_bankaccnt_id) VALUES (pccardtype, pbankaccntid) RETURNING _ccbankid; END IF; RETURN _ccbankid; END; $_$; 4DROP FUNCTION public.setccbankaccnt(text, integer); publicadminfalse8399212551692745seteffectivextuser(text)FUNCTIONzCREATE FUNCTION seteffectivextuser(text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; BEGIN PERFORM initEffectiveXtUser(); PERFORM * FROM effective_user WHERE effective_key = 'username'; IF FOUND THEN UPDATE effective_user SET effective_value = pUsername WHERE effective_key = 'username'; ELSE INSERT INTO effective_user (effective_key, effective_value) VALUES('username', pUsername); END IF; RETURN true; END; $_$; /DROP FUNCTION public.seteffectivextuser(text); publicadminfalse8399212551692746setgljournalnumber(date, date)FUNCTIONCREATE FUNCTION setgljournalnumber(date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStartDate ALIAS FOR $1; pEndDate ALIAS FOR $2; _journalNumber INTEGER; BEGIN -- Fetch the next Journal Number SELECT fetchJournalNumber('G/L') INTO _journalNumber; -- Set the Journal Number for all of the unposted G/L Transactions -- in the passed date range. UPDATE gltrans SET gltrans_journalnumber=_journalNumber WHERE ( (NOT gltrans_exported) AND (gltrans_date BETWEEN pStartDate and pEndDate) ); RETURN _journalNumber; END; $_$; 5DROP FUNCTION public.setgljournalnumber(date, date); publicadminfalse8399212551692747setmetric(text, text)FUNCTION{CREATE FUNCTION setmetric(text, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pMetricName ALIAS FOR $1; pMetricValue ALIAS FOR $2; _metricid INTEGER; BEGIN SELECT metric_id INTO _metricid FROM metric WHERE (metric_name=pMetricName); IF (FOUND) THEN UPDATE metric SET metric_value=pMetricValue WHERE (metric_id=_metricid); ELSE INSERT INTO metric (metric_name, metric_value) VALUES (pMetricName, pMetricValue); END IF; RETURN TRUE; END; $_$; ,DROP FUNCTION public.setmetric(text, text); publicadminfalse8399212551692748setmetricenc(text, text, text)FUNCTIONICREATE FUNCTION setmetricenc(text, text, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pMetricName ALIAS FOR $1; pMetricValue ALIAS FOR $2; pMetricEnc ALIAS FOR $3; _metricid INTEGER; _value bytea; _key bytea; BEGIN _value = decode(pMetricValue, 'escape'); _key = decode(pMetricEnc, 'escape'); SELECT metricenc_id INTO _metricid FROM metricenc WHERE (metricenc_name=pMetricName); IF (FOUND) THEN UPDATE metricenc SET metricenc_value=encrypt(_value, _key, 'bf') WHERE (metricenc_id=_metricid); ELSE INSERT INTO metricenc (metricenc_name, metricenc_value) VALUES (pMetricName, encrypt(_value, _key, 'bf')); END IF; RETURN TRUE; END; $_$; 5DROP FUNCTION public.setmetricenc(text, text, text); publicadminfalse8399212551692749setnextapmemonumber(integer)FUNCTIONwCREATE FUNCTION setnextapmemonumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='APMemoNumber'); IF (FOUND) THEN UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_id=_orderseqid); ELSE INSERT INTO orderseq (orderseq_name, orderseq_number) VALUES ('APMemoNumber', pNumber); END IF; RETURN 1; END; $_$; 3DROP FUNCTION public.setnextapmemonumber(integer); publicadminfalse8399212551692750setnextarmemonumber(integer)FUNCTIONwCREATE FUNCTION setnextarmemonumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='ARMemoNumber'); IF (FOUND) THEN UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_id=_orderseqid); ELSE INSERT INTO orderseq (orderseq_name, orderseq_number) VALUES ('ARMemoNumber', pNumber); END IF; RETURN 1; END; $_$; 3DROP FUNCTION public.setnextarmemonumber(integer); publicadminfalse8399212551692751setnextcashrcptnumber(integer)FUNCTION}CREATE FUNCTION setnextcashrcptnumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='CashRcptNumber'); IF (FOUND) THEN UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_id=_orderseqid); ELSE INSERT INTO orderseq (orderseq_name, orderseq_number) VALUES ('CashRcptNumber', pNumber); END IF; RETURN 1; END; $_$; 5DROP FUNCTION public.setnextcashrcptnumber(integer); publicadminfalse8399212551692752$setnextchecknumber(integer, integer)FUNCTIONCREATE FUNCTION setnextchecknumber(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankaccntid ALIAS FOR $1; pNextCheckNumber ALIAS FOR $2; BEGIN UPDATE bankaccnt SET bankaccnt_nextchknum=pNextCheckNumber WHERE (bankaccnt_id=pBankaccntid); RETURN TRUE; END; $_$; ;DROP FUNCTION public.setnextchecknumber(integer, integer); publicadminfalse8399212551692753setnextcmnumber(integer)FUNCTIONCREATE FUNCTION setnextcmnumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='CmNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'CmNumber', pNumber); ELSE UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_name='CmNumber'); END IF; RETURN _orderseqid; END; $_$; /DROP FUNCTION public.setnextcmnumber(integer); publicadminfalse8399212551692754 setnextcrmaccountnumber(integer)FUNCTIONCREATE FUNCTION setnextcrmaccountnumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='CRMAccountNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'CRMAccountNumber', pNumber); ELSE UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_name='CRMAccountNumber'); END IF; RETURN _orderseqid; END; $_$; 7DROP FUNCTION public.setnextcrmaccountnumber(integer); publicadminfalse8399212551692755setnextincidentnumber(integer)FUNCTIONCREATE FUNCTION setnextincidentnumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='IncidentNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'IncidentNumber', pNumber); ELSE UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_name='IncidentNumber'); END IF; RETURN _orderseqid; END; $_$; 5DROP FUNCTION public.setnextincidentnumber(integer); publicadminfalse8399212551692756setnextinvcnumber(integer)FUNCTIONCREATE FUNCTION setnextinvcnumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='InvcNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'InvcNumber', pNumber); ELSE UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_name='InvcNumber'); END IF; RETURN _orderseqid; END; $_$; 1DROP FUNCTION public.setnextinvcnumber(integer); publicadminfalse8399212551692757setnextnumber(text, integer)FUNCTION CREATE FUNCTION setnextnumber(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE psequence ALIAS FOR $1; pnumber ALIAS FOR $2; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name=psequence); IF (NOT FOUND) THEN INSERT INTO orderseq (orderseq_name, orderseq_number, orderseq_table, orderseq_numcol) VALUES (psequence, pnumber, CASE WHEN (psequence='APMemoNumber') THEN 'apopen' WHEN (psequence='ARMemoNumber') THEN 'aropen' WHEN (psequence='CmNumber') THEN 'cmhead' WHEN (psequence='IncidentNumber') THEN 'incdt' WHEN (psequence='InvcNumber') THEN 'invchead' WHEN (psequence='JournalNumber') THEN 'gltrans' WHEN (psequence='PlanNumber') THEN 'planord' WHEN (psequence='PoNumber') THEN 'pohead' WHEN (psequence='PrNumber') THEN 'pr' WHEN (psequence='QuNumber') THEN 'quhead' WHEN (psequence='ShipmentNumber') THEN 'shiphead' WHEN (psequence='SoNumber') THEN 'cohead' WHEN (psequence='ToNumber') THEN 'tohead' WHEN (psequence='VcNumber') THEN 'vohead' WHEN (psequence='WoNumber') THEN 'wo' ELSE '' END, CASE WHEN (psequence='APMemoNumber') THEN 'apopen_docnumber' WHEN (psequence='ARMemoNumber') THEN 'aropen_docnumber' WHEN (psequence='CmNumber') THEN 'cmhead_number' WHEN (psequence='IncidentNumber') THEN 'incdt_number' WHEN (psequence='InvcNumber') THEN 'invchead_invcnumber' WHEN (psequence='JournalNumber') THEN 'gltrans_journalnumber' WHEN (psequence='PlanNumber') THEN 'planord_number' WHEN (psequence='PoNumber') THEN 'pohead_number' WHEN (psequence='PrNumber') THEN 'pr_number' WHEN (psequence='QuNumber') THEN 'quhead_number' WHEN (psequence='ShipmentNumber') THEN 'shiphead_number' WHEN (psequence='SoNumber') THEN 'cohead_number' WHEN (psequence='ToNumber') THEN 'tohead_number' WHEN (psequence='VcNumber') THEN 'vohead_number' WHEN (psequence='WoNumber') THEN 'wo_number' ELSE '' END ); ELSE UPDATE orderseq SET orderseq_number=pnumber WHERE (orderseq_name=psequence); END IF; RETURN 0; END; $_$; 3DROP FUNCTION public.setnextnumber(text, integer); publicadminfalse8399212551692758setnextponumber(integer)FUNCTIONCREATE FUNCTION setnextponumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='PoNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'PoNumber', pNumber); ELSE UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_name='PoNumber'); END IF; RETURN _orderseqid; END; $_$; /DROP FUNCTION public.setnextponumber(integer); publicadminfalse8399212551692759setnextprnumber(integer)FUNCTIONCREATE FUNCTION setnextprnumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='PrNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'PrNumber', pNumber); ELSE UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_name='PrNumber'); END IF; RETURN _orderseqid; END; $_$; /DROP FUNCTION public.setnextprnumber(integer); publicadminfalse8399212551692760setnextqunumber(integer)FUNCTIONCREATE FUNCTION setnextqunumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pQuNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='QuNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'QuNumber', pQuNumber); ELSE UPDATE orderseq SET orderseq_number=pQuNumber WHERE (orderseq_name='QuNumber'); END IF; RETURN _orderseqid; END; $_$; /DROP FUNCTION public.setnextqunumber(integer); publicadminfalse8399212551692761setnextshipmentnumber(integer)FUNCTIONCREATE FUNCTION setnextshipmentnumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pShipmentNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='ShipmentNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'ShipmentNumber', pShipmentNumber); ELSE UPDATE orderseq SET orderseq_number=pShipmentNumber WHERE (orderseq_name='ShipmentNumber'); END IF; RETURN _orderseqid; END; $_$; 5DROP FUNCTION public.setnextshipmentnumber(integer); publicadminfalse8399212551692762setnextsonumber(integer)FUNCTIONCREATE FUNCTION setnextsonumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSoNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='SoNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'SoNumber', pSoNumber); ELSE UPDATE orderseq SET orderseq_number=pSoNumber WHERE (orderseq_name='SoNumber'); END IF; RETURN _orderseqid; END; $_$; /DROP FUNCTION public.setnextsonumber(integer); publicadminfalse8399212551692763setnextvcnumber(integer)FUNCTIONCREATE FUNCTION setnextvcnumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='VcNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'VcNumber', pNumber); ELSE UPDATE orderseq SET orderseq_number=pNumber WHERE (orderseq_name='VcNumber'); END IF; RETURN _orderseqid; END; $_$; /DROP FUNCTION public.setnextvcnumber(integer); publicadminfalse8399212551692764setnextwonumber(integer)FUNCTIONCREATE FUNCTION setnextwonumber(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pWoNumber ALIAS FOR $1; _orderseqid INTEGER; BEGIN SELECT orderseq_id INTO _orderseqid FROM orderseq WHERE (orderseq_name='WoNumber'); IF (NOT FOUND) THEN SELECT NEXTVAL('orderseq_orderseq_id_seq') INTO _orderseqid; INSERT INTO orderseq (orderseq_id, orderseq_name, orderseq_number) VALUES (_orderseqid, 'WoNumber', pWoNumber); ELSE UPDATE orderseq SET orderseq_number=pWoNumber WHERE (orderseq_name='WoNumber'); END IF; RETURN _orderseqid; END; $_$; /DROP FUNCTION public.setnextwonumber(integer); publicadminfalse8399212552008435$setusercancreateusers(text, boolean)FUNCTIONCREATE FUNCTION setusercancreateusers(pusername text, pcreateuser boolean) RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN IF (pCreateUser) THEN EXECUTE 'ALTER USER "' || pUsername || '" CREATEROLE;'; ELSE EXECUTE 'ALTER USER "' || pUsername || '" NOCREATEROLE;'; END IF; RETURN TRUE; END; $$; QDROP FUNCTION public.setusercancreateusers(pusername text, pcreateuser boolean); publicadminfalse8399212551692766setuserpreference(text, text)FUNCTIONvCREATE FUNCTION setuserpreference(text, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPrefName ALIAS FOR $1; pPrefValue ALIAS FOR $2; BEGIN RETURN setUserPreferences(getEffectiveXtUser(), pPrefName, pPrefValue); END; $_$; 4DROP FUNCTION public.setuserpreference(text, text); publicadminfalse8399212551692767#setuserpreference(text, text, text)FUNCTIONCREATE FUNCTION setuserpreference(text, text, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; pPrefName ALIAS FOR $2; pPrefValue ALIAS FOR $3; _usrprefid INTEGER; BEGIN SELECT usrpref_id INTO _usrprefid FROM usrpref WHERE ( (usrpref_username=pUsername) AND (usrpref_name=pPrefName) ); IF (FOUND) THEN UPDATE usrpref SET usrpref_value=pPrefValue WHERE (usrpref_id=_usrprefid); ELSE INSERT INTO usrpref (usrpref_username, usrpref_name, usrpref_value) VALUES (pUsername, pPrefName, pPrefValue); END IF; RETURN TRUE; END; $_$; :DROP FUNCTION public.setuserpreference(text, text, text); publicadminfalse8399212551692768shipments(text)FUNCTIONrCREATE FUNCTION shipments(text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTransType ALIAS FOR $1; BEGIN IF (pTransType IN ('SC', 'SV', 'SH', 'RS', 'TS')) THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END; $_$; &DROP FUNCTION public.shipments(text); publicadminfalse8399212551692769shipshipment(integer)FUNCTIONCREATE FUNCTION shipshipment(integer) RETURNS integer LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT shipShipment($1, CURRENT_TIMESTAMP); $_$; ,DROP FUNCTION public.shipshipment(integer); publicadminfalse8h12551692770/shipshipment(integer, timestamp with time zone)FUNCTION5CREATE FUNCTION shipshipment(integer, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pshipheadid ALIAS FOR $1; _timestamp TIMESTAMP WITH TIME ZONE := $2; _billedQty NUMERIC; _c RECORD; _coholdtype TEXT; _gldate DATE; _invhistid INTEGER; _itemlocSeries INTEGER; _lineitemsToClose INTEGER[]; _newQty NUMERIC; _result INTEGER; _s RECORD; _shipcomplete BOOLEAN; _shiphead RECORD; _ti RECORD; _to RECORD; _variance NUMERIC; _k RECORD; BEGIN IF (_timestamp IS NULL) THEN _timestamp := CURRENT_TIMESTAMP; END IF; _gldate := _timestamp::DATE; SELECT * INTO _shiphead FROM shiphead WHERE (shiphead_id=pshipheadid); IF (NOT FOUND) THEN RETURN -50; END IF; IF (_shiphead.shiphead_order_type = 'SO') THEN SELECT cohead_shipcomplete, cohead_holdtype INTO _shipcomplete, _coholdtype FROM cohead, shiphead WHERE ((shiphead_order_id=cohead_id) AND (NOT shiphead_shipped) AND (shiphead_order_type=_shiphead.shiphead_order_type) AND (shiphead_id=pshipheadid)); IF (_coholdtype = 'C') THEN RETURN -12; ELSIF (_coholdtype = 'P') THEN RETURN -13; ELSIF (_coholdtype = 'R') THEN RETURN -14; ELSIF (_coholdtype = 'S') THEN RETURN -15; END IF; ---Must Ship Kit components (coitem_subnumber <> 0 complete--------------- IF (( -- Test to see if order's customer accepts backorders and partials -- If not then test for shipping kit components complete SELECT cohead_number FROM shiphead, cohead, custinfo WHERE (shiphead_order_id = cohead_id) AND (cohead_cust_id = cust_id) AND (shiphead_order_type = 'SO') AND (cust_partialship) AND (cust_backorder) AND (shiphead_id = pshipheadid) ) IS NULL) THEN FOR _k IN SELECT (coitem_qtyord - (COALESCE(SUM(shipitem_qty),0) + (coitem_qtyshipped - coitem_qtyreturned))) AS remain FROM (coitem LEFT OUTER JOIN (itemsite JOIN item ON (itemsite_item_id=item_id)) ON (coitem_itemsite_id=itemsite_id)) LEFT OUTER JOIN shipitem ON (shipitem_orderitem_id=coitem_id AND shipitem_shiphead_id=pshipheadid) WHERE ((coitem_status NOT IN ('C','X')) AND (item_type != 'K') AND (coitem_cohead_id=_shiphead.shiphead_order_id) AND (coitem_subnumber <> 0) ) GROUP BY coitem_id, coitem_qtyshipped, coitem_qtyord, coitem_qtyreturned LOOP IF (_k.remain > 0) THEN RAISE EXCEPTION 'Kit component item not shipped complete. Kits must be shipped and shipped complete or closed on the order.'; END IF; END LOOP; END IF; ---End-------------------------------------------------------------------- IF ( _shipcomplete ) THEN FOR _c IN SELECT (coitem_qtyord - (COALESCE(SUM(shipitem_qty),0) + (coitem_qtyshipped - coitem_qtyreturned))) AS remain FROM (coitem LEFT OUTER JOIN (itemsite JOIN item ON (itemsite_item_id=item_id)) ON (coitem_itemsite_id=itemsite_id)) LEFT OUTER JOIN shipitem ON (shipitem_orderitem_id=coitem_id AND shipitem_shiphead_id=pshipheadid) WHERE ((coitem_status<>'X') AND (item_type != 'K') AND (coitem_cohead_id=_shiphead.shiphead_order_id)) GROUP BY coitem_id, coitem_qtyshipped, coitem_qtyord, coitem_qtyreturned LOOP IF (_c.remain > 0) THEN RETURN -99; END IF; END LOOP; END IF; FOR _c IN SELECT coitem_id, cohead_number, cohead_cust_id, cohead_billtoname, cohead_prj_id, cohead_saletype_id, cohead_shipzone_id, itemsite_id, itemsite_item_id, coitem_qty_invuomratio, coitem_warranty, coitem_cos_accnt_id, SUM(shipitem_qty) AS _qty, SUM(shipitem_value) AS _value FROM coitem, cohead, shiphead, shipitem, itemsite WHERE ( (coitem_cohead_id=cohead_id) AND (coitem_itemsite_id=itemsite_id) AND (shiphead_order_id=cohead_id) AND (shipitem_shiphead_id=shiphead_id) AND (shipitem_orderitem_id=coitem_id) AND (NOT shiphead_shipped) AND (shiphead_id=pshipheadid) ) GROUP BY coitem_id, coitem_qty_invuomratio, cohead_number, cohead_cust_id, cohead_billtoname, itemsite_id, itemsite_item_id, coitem_warranty, coitem_cos_accnt_id, cohead_prj_id, cohead_saletype_id, cohead_shipzone_id LOOP IF _c._value > 0 THEN -- Distribute to G/L, credit Shipping Asset, debit COS SELECT MIN(insertGLTransaction( 'S/R', 'SH', _shiphead.shiphead_number, ('Ship Order ' || _c.cohead_number || ' for Customer ' || _c.cohead_billtoname), getPrjAccntId(_c.cohead_prj_id, costcat_shipasset_accnt_id), CASE WHEN (COALESCE(_c.coitem_cos_accnt_id, -1) != -1) THEN getPrjAccntId(_c.cohead_prj_id, _c.coitem_cos_accnt_id) WHEN (_c.coitem_warranty=TRUE) THEN getPrjAccntId(_c.cohead_prj_id, resolveCOWAccount(itemsite_id, _c.cohead_cust_id, _c.cohead_saletype_id, _c.cohead_shipzone_id)) ELSE getPrjAccntId(_c.cohead_prj_id, resolveCOSAccount(itemsite_id, _c.cohead_cust_id, _c.cohead_saletype_id, _c.cohead_shipzone_id)) END, -1, _c._value, _gldate )) INTO _result FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_c.itemsite_id) ); IF (_result < 0 AND _result != -3) THEN -- ignore -3 as it just means it's not posting a 0 value RETURN _result; END IF; END IF; UPDATE coitem SET coitem_qtyshipped = (coitem_qtyshipped + _c._qty) WHERE (coitem_id=_c.coitem_id); -- check to see if we have more invoiced than shipped items -- if we do we will need to mark some of these records as invoiced SELECT noNeg(( SELECT COALESCE(SUM(cobill_qty), 0.0) FROM cobill, cobmisc, coitem WHERE ( (cobill_cobmisc_id=cobmisc_id) AND (cobmisc_cohead_id=coitem_cohead_id) AND (cobill_coitem_id=coitem_id) AND (cobmisc_posted) AND (coitem_id=_c.coitem_id) ) ) - ( SELECT COALESCE(SUM(shipitem_qty), 0.0) FROM shipitem, shiphead, coitem WHERE ( (shipitem_shiphead_id=shiphead_id) AND (shiphead_order_id=coitem_cohead_id) AND (shipitem_orderitem_id=coitem_id) AND (shiphead_order_type=_shiphead.shiphead_order_type) AND (shiphead_shipped) AND (coitem_id=_c.coitem_id) ) ) ) INTO _billedQty; IF (_billedQty > 0.0) THEN FOR _s IN SELECT shipitem_id, shipitem_qty FROM shipitem, shiphead WHERE ( (shipitem_shiphead_id=shiphead_id) AND (shipitem_orderitem_id=_c.coitem_id) AND (shiphead_order_type=_shiphead.shiphead_order_type) AND (NOT shiphead_shipped) AND (shiphead_id=pshipheadid) ) ORDER BY shipitem_qty LOOP IF (_billedQty > 0.0) THEN IF (_billedQty >= _s.shipitem_qty) THEN UPDATE shipitem SET shipitem_invoiced=TRUE WHERE shipitem_id=_s.shipitem_id; -- must wait to close coitems until after shiphead_shipped -> true _lineitemsToClose := _lineitemsToClose || _c.coitem_id; ELSE _newQty := _s.shipitem_qty - _billedQty; UPDATE shipitem SET shipitem_invoiced=TRUE, shipitem_qty=_billedQty WHERE shipitem_id=_s.shipitem_id; INSERT INTO shipitem ( shipitem_orderitem_id, shipitem_shipdate, shipitem_qty, shipitem_transdate, shipitem_invoiced, shipitem_shiphead_id, shipitem_trans_username) SELECT shipitem_orderitem_id, shipitem_shipdate, _newQty, shipitem_transdate, FALSE, shipitem_shiphead_id, shipitem_trans_username FROM shipitem WHERE (shipitem_id=_s.shipitem_id); END IF; _billedQty := _billedQty - _s.shipitem_qty; END IF; END LOOP; END IF; END LOOP; ELSEIF (_shiphead.shiphead_order_type = 'TO') THEN IF (_shiphead.shiphead_shipped) THEN RETURN -8; END IF; SELECT tohead.* INTO _to FROM tohead WHERE (tohead_id=_shiphead.shiphead_order_id); IF ( _to.tohead_shipcomplete ) THEN -- use sufficientInventory...()? FOR _ti IN SELECT (toitem_qty_ordered - (COALESCE(SUM(shipitem_qty),0) + toitem_qty_shipped)) AS remain FROM toitem LEFT OUTER JOIN shipitem ON (shipitem_orderitem_id=toitem_id) WHERE ((toitem_status<>'X') AND (toitem_tohead_id=_shiphead.shiphead_order_id)) GROUP BY toitem_qty_shipped, toitem_qty_ordered LOOP IF (_ti.remain > 0) THEN RETURN -99; END IF; END LOOP; END IF; FOR _ti IN SELECT toitem_id, toitem_item_id, SUM(shipitem_qty) AS qty, SUM(shipitem_value) AS value FROM toitem, shipitem WHERE ((toitem_tohead_id=_to.tohead_id) AND (shipitem_orderitem_id=toitem_id) AND (shipitem_shiphead_id=pshipheadid)) GROUP BY toitem_id, toitem_item_id LOOP IF (NOT EXISTS(SELECT itemsite_id FROM itemsite WHERE ((itemsite_item_id=_ti.toitem_item_id) AND (itemsite_warehous_id = _to.tohead_trns_warehous_id)) )) THEN RETURN -6; END IF; _itemlocSeries := NEXTVAL('itemloc_series_seq'); SELECT postInvTrans(si.itemsite_id, 'TS', _ti.qty, 'I/M', _shiphead.shiphead_order_type, formatToNumber(_ti.toitem_id), _to.tohead_number, 'Ship from Src to Transit Warehouse', tc.costcat_asset_accnt_id, sc.costcat_shipasset_accnt_id, _itemlocSeries, _timestamp, _ti.value) INTO _invhistid FROM itemsite AS ti, costcat AS tc, itemsite AS si, costcat AS sc WHERE ( (ti.itemsite_costcat_id=tc.costcat_id) AND (si.itemsite_costcat_id=sc.costcat_id) AND (ti.itemsite_item_id=_ti.toitem_item_id) AND (si.itemsite_item_id=_ti.toitem_item_id) AND (ti.itemsite_warehous_id=_to.tohead_trns_warehous_id) AND (si.itemsite_warehous_id=_to.tohead_src_warehous_id) ); --We do not need to distribute lot/serial info for transit, post trans and discard dist detail PERFORM postIntoTrialBalance(itemlocpost_glseq) FROM itemlocpost WHERE (itemlocpost_itemlocseries=_itemlocSeries); PERFORM postInvHist(_invhistid); DELETE FROM itemlocdist WHERE (itemlocdist_series=_itemlocSeries); DELETE FROM itemlocpost WHERE (itemlocpost_itemlocSeries=_itemlocSeries); IF (_result < 0) THEN RETURN _result; END IF; -- record inventory history and qoh changes at transit warehouse but -- there is only one g/l account to touch SELECT postInvTrans(ti.itemsite_id, 'TR', _ti.qty, 'I/M', _shiphead.shiphead_order_type, formatToNumber(_ti.toitem_id), _to.tohead_number, 'Receive into Transit from Src Warehouse', tc.costcat_asset_accnt_id, tc.costcat_asset_accnt_id, _itemlocSeries, _timestamp, _ti.value) INTO _invhistid FROM itemsite AS ti, costcat AS tc WHERE ((ti.itemsite_costcat_id=tc.costcat_id) AND (ti.itemsite_item_id=_ti.toitem_item_id) AND (ti.itemsite_warehous_id=_to.tohead_trns_warehous_id)); --We do not need to distribute lot/serial info for transit, post trans and discard dist detail PERFORM postIntoTrialBalance(itemlocpost_glseq) FROM itemlocpost WHERE (itemlocpost_itemlocseries=_itemlocSeries); PERFORM postInvHist(_invhistid); DELETE FROM itemlocdist WHERE (itemlocdist_series=_itemlocSeries); DELETE FROM itemlocpost WHERE (itemlocpost_itemlocSeries=_itemlocSeries); --See if there was a change in values during the transfer, if so record the variance SELECT (invhist_invqty * invhist_unitcost - _ti.value) INTO _variance FROM invhist WHERE (invhist_id=_invhistid); IF (_variance > 0) THEN PERFORM insertGLTransaction( 'S/R', _shiphead.shiphead_order_type, _to.tohead_number, 'Transfer Order - Transfer Variance', tc.costcat_invcost_accnt_id, tc.costcat_asset_accnt_id, _invhistid, _variance, CAST(_timestamp AS DATE) ) FROM itemsite AS ti, costcat AS tc WHERE ( (ti.itemsite_costcat_id=tc.costcat_id) AND (ti.itemsite_item_id=_ti.toitem_item_id) AND (ti.itemsite_warehous_id=_to.tohead_trns_warehous_id) ); END IF; IF (_result < 0) THEN RETURN _result; END IF; UPDATE shipitem SET shipitem_shipdate=_timestamp, shipitem_shipped=TRUE WHERE ((shipitem_orderitem_id=_ti.toitem_id) AND (shipitem_shiphead_id=pshipheadid)); UPDATE toitem SET toitem_qty_shipped = (toitem_qty_shipped + _ti.qty) WHERE (toitem_id=_ti.toitem_id); END LOOP; END IF; UPDATE shiphead SET shiphead_shipped=TRUE, shiphead_shipdate=_gldate WHERE (shiphead_id=pshipheadid); -- now try to close line items that are fully shipped and invoiced IF (_shiphead.shiphead_order_type = 'SO') THEN UPDATE coitem SET coitem_status='C' WHERE ((coitem_id = ANY (_lineitemsToClose)) AND (coitem_qtyshipped >= coitem_qtyord)); END IF; RETURN _itemlocSeries; END; $_$; FDROP FUNCTION public.shipshipment(integer, timestamp with time zone); publicadminfalse8399212551692772Asinglecharacteristicstostring(text, integer, text, text, integer)FUNCTIONCREATE FUNCTION singlecharacteristicstostring(text, integer, text, text, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTargetType ALIAS FOR $1; pTargetId ALIAS FOR $2; pValKeySep ALIAS FOR $3; pPairSep ALIAS FOR $4; pCharId ALIAS FOR $5; _string TEXT := ''; _extra BOOLEAN := false; _r RECORD; BEGIN FOR _r IN SELECT char_name, charass_value FROM charass, char WHERE ((charass_char_id=char_id) AND (charass_char_id=pCharId) AND (charass_target_type=pTargetType) AND (charass_target_id=pTargetId)) LOOP IF(_extra) THEN _string := _string || pPairSep; END IF; _extra := true; _string := _string || _r.char_name || pValKeySep || _r.charass_value; END LOOP; RETURN _string; END; $_$; XDROP FUNCTION public.singlecharacteristicstostring(text, integer, text, text, integer); publicadminfalse83992125520084372singlelevelbom(integer, integer, integer, integer)FUNCTION%CREATE FUNCTION singlelevelbom(integer, integer, integer, integer) RETURNS SETOF bomdata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pRevisionid ALIAS FOR $2; pExpiredDays ALIAS FOR $3; pFutureDays ALIAS FOR $4; _row bomdata%ROWTYPE; _bomworksetid INTEGER; _x RECORD; _check CHAR(1); _inactive BOOLEAN; _batchsize NUMERIC; BEGIN _inactive := FALSE; IF (pRevisionid != -1) THEN --Is this a deactivated revision? SELECT rev_status INTO _check FROM rev WHERE ((rev_id=pRevisionid) AND (rev_status='I')); IF (FOUND) THEN _inactive := TRUE; END IF; END IF; -- Get the batch quantity SELECT COALESCE( ( SELECT bomhead_batchsize FROM bomhead WHERE ((bomhead_item_id=pItemId) AND (bomhead_rev_id=pRevisionid))),1) INTO _batchsize; IF NOT (_inactive) THEN FOR _x IN SELECT bomitem_id, bomitem_seqnumber, bomitem_seqnumber AS f_bomitem_seqnumber, item_id, item_number, uom_name, item_descrip1, item_descrip2, (item_descrip1 || ' ' || item_descrip2) AS itemdescription, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyfxd) AS qtyfxd, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper) AS qtyper, bomitem_scrap, bomitem_createwo, CASE WHEN (bomitem_issuemethod='S') THEN 'Push' WHEN (bomitem_issuemethod='L') THEN 'Pull' WHEN (bomitem_issuemethod='M') THEN 'Mixed' ELSE 'Special' END AS issuemethod, bomitem_effective, bomitem_expires, CASE WHEN (bomitem_expires <= CURRENT_DATE) THEN TRUE ELSE FALSE END AS expired, CASE WHEN (bomitem_effective > CURRENT_DATE) THEN TRUE ELSE FALSE END AS future, actcost(bomitem_item_id, bomitem_id) AS actunitcost, stdcost(bomitem_item_id, bomitem_id) AS stdunitcost, CASE WHEN item_type NOT IN ('R','T') THEN itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, (bomitem_qtyfxd/_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') * actcost(bomitem_item_id, bomitem_id) ELSE 0.0 END AS actextendedcost, CASE WHEN item_type NOT IN ('R','T') THEN itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, (bomitem_qtyfxd/_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') * stdcost(bomitem_item_id, bomitem_id) ELSE 0.0 END AS stdextendedcost, bomitem_char_id, bomitem_value, bomitem_notes, bomitem_ref FROM bomitem(pItemid,pRevisionid), item, uom WHERE ( (item_inv_uom_id=uom_id) AND (bomitem_item_id=item_id) AND (bomitem_expires > (CURRENT_DATE - pExpiredDays)) AND (bomitem_effective <= (CURRENT_DATE + pFutureDays)) ) UNION SELECT -1, -1, NULL, -1, costelem_type AS bomdata_item_number, '', '', '', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, false,false, currToBase(itemcost_curr_id, itemcost_actcost, CURRENT_DATE) AS actunitcost, itemcost_stdcost AS stdunitcost, currToBase(itemcost_curr_id, itemcost_actcost, CURRENT_DATE) AS actextendedcost, itemcost_stdcost AS stdextendedcost, NULL, NULL, NULL, NULL FROM itemcost, costelem WHERE ( (itemcost_costelem_id=costelem_id) AND (NOT itemcost_lowlevel) AND (itemcost_item_id=pItemid) ) ORDER BY bomitem_seqnumber, bomitem_effective, item_number LOOP _row.bomdata_bomitem_id := _x.bomitem_id; _row.bomdata_bomwork_seqnumber := _x.f_bomitem_seqnumber; _row.bomdata_item_id := _x.item_id; _row.bomdata_item_number := _x.item_number; _row.bomdata_uom_name := _x.uom_name; _row.bomdata_item_descrip1 := _x.item_descrip1; _row.bomdata_item_descrip2 := _x.item_descrip2; _row.bomdata_itemdescription := _x.itemdescription; _row.bomdata_batchsize := _batchsize; _row.bomdata_qtyfxd := _x.qtyfxd; _row.bomdata_qtyper := _x.qtyper; _row.bomdata_scrap := _x.bomitem_scrap; _row.bomdata_createchild := _x.bomitem_createwo; _row.bomdata_issuemethod := _x.issuemethod; _row.bomdata_effective := _x.bomitem_effective; _row.bomdata_expires := _x.bomitem_expires; _row.bomdata_expired := _x.expired; _row.bomdata_future := _x.future; _row.bomdata_actunitcost := _x.actunitcost; _row.bomdata_stdunitcost := _x.stdunitcost; _row.bomdata_actextendedcost := _x.actextendedcost; _row.bomdata_stdextendedcost := _x.stdextendedcost; _row.bomdata_char_id := _x.bomitem_char_id; _row.bomdata_value := _x.bomitem_value; _row.bomdata_notes := _x.bomitem_notes; _row.bomdata_ref := _x.bomitem_ref; RETURN NEXT _row; END LOOP; ELSE -- Use historical snapshot for inactive revisions FOR _x IN SELECT bomitem_id, bomitem_seqnumber, bomitem_seqnumber AS f_bomitem_seqnumber, item_id, item_number, uom_name, item_descrip1, item_descrip2, (item_descrip1 || ' ' || item_descrip2) AS itemdescription, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyfxd) AS qtyfxd, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper) AS qtyper, bomitem_scrap, bomitem_createwo, CASE WHEN (bomitem_issuemethod='S') THEN 'Push' WHEN (bomitem_issuemethod='L') THEN 'Pull' WHEN (bomitem_issuemethod='M') THEN 'Mixed' ELSE 'Special' END AS issuemethod, bomitem_effective, bomitem_expires, CASE WHEN (bomitem_expires <= CURRENT_DATE) THEN TRUE ELSE FALSE END AS expired, CASE WHEN (bomitem_effective > CURRENT_DATE) THEN TRUE ELSE FALSE END AS future, actcost(bomitem_item_id) AS actunitcost, stdcost(bomitem_item_id) AS stdunitcost, CASE WHEN item_type NOT IN ('R','T') THEN itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, (bomitem_qtyfxd/_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') * actcost(bomitem_item_id) ELSE 0.0 END AS actextendedcost, CASE WHEN item_type NOT IN ('R','T') THEN itemuomtouom(bomitem_item_id, bomitem_uom_id, NULL, (bomitem_qtyfxd/_batchsize + bomitem_qtyper) * (1 + bomitem_scrap), 'qtyper') * stdcost(bomitem_item_id) ELSE 0.0 END AS stdextendedcost, bomitem_char_id, bomitem_value, bomitem_notes, bomitem_ref FROM bomitem(pItemid,pRevisionid), item, uom WHERE ( (item_inv_uom_id=uom_id) AND (bomitem_item_id=item_id) AND (bomitem_expires > (CURRENT_DATE - pExpiredDays)) AND (bomitem_effective <= (CURRENT_DATE + pFutureDays)) ) UNION SELECT -1, -1, NULL, -1, costelem_type AS bomdata_item_number, '', '', '', '', NULL, NULL, NULL, NULL, NULL, NULL, NULL, false,false, bomhist_actunitcost AS actunitcost, bomhist_stdunitcost AS stdunitcost, bomhist_actunitcost AS actextendedcost, bomhist_stdunitcost AS stdextendedcost, NULL, NULL, NULL, NULL FROM bomhist, costelem WHERE ( (bomhist_item_id=costelem_id) AND (bomhist_item_type='E') AND (bomhist_rev_id=pRevisionid) ) ORDER BY bomitem_seqnumber, bomitem_effective, item_number LOOP _row.bomdata_bomitem_id := _x.bomitem_id; _row.bomdata_bomwork_seqnumber := _x.f_bomitem_seqnumber; _row.bomdata_item_id := _x.item_id; _row.bomdata_item_number := _x.item_number; _row.bomdata_uom_name := _x.uom_name; _row.bomdata_item_descrip1 := _x.item_descrip1; _row.bomdata_item_descrip2 := _x.item_descrip2; _row.bomdata_itemdescription := _x.itemdescription; _row.bomdata_batchsize := _batchsize; _row.bomdata_qtyfxd := _x.qtyfxd; _row.bomdata_qtyper := _x.qtyper; _row.bomdata_scrap := _x.bomitem_scrap; _row.bomdata_createchild := _x.bomitem_createwo; _row.bomdata_issuemethod := _x.issuemethod; _row.bomdata_effective := _x.bomitem_effective; _row.bomdata_expires := _x.bomitem_expires; _row.bomdata_expired := _x.expired; _row.bomdata_future := _x.future; _row.bomdata_actunitcost := _x.actunitcost; _row.bomdata_stdunitcost := _x.stdunitcost; _row.bomdata_actextendedcost := _x.actextendedcost; _row.bomdata_stdextendedcost := _x.stdextendedcost; _row.bomdata_char_id := _x.bomitem_char_id; _row.bomdata_value := _x.bomitem_value; _row.bomdata_notes := _x.bomitem_notes; _row.bomdata_ref := _x.bomitem_ref; RETURN NEXT _row; END LOOP; END IF; RETURN; END; $_$; IDROP FUNCTION public.singlelevelbom(integer, integer, integer, integer); publicadminfalse83992257712551692775site()FUNCTIONKCREATE FUNCTION site() RETURNS SETOF whsinfo LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row whsinfo%ROWTYPE; _r RECORD; BEGIN IF ( (fetchMetricBool('MultiWhs')) AND (SELECT (COUNT(usrpref_id)=1) FROM usrpref WHERE ((usrpref_name='selectedSites') AND (usrpref_value='t') AND (usrpref_username=getEffectiveXtUser()))) ) THEN FOR _r IN SELECT * FROM whsinfo,usrsite WHERE ((warehous_id=usrsite_warehous_id) AND (usrsite_username=getEffectiveXtUser())) LOOP _row.warehous_id:=_r.warehous_id; _row.warehous_code:=_r.warehous_code; _row.warehous_descrip:=_r.warehous_descrip; _row.warehous_fob:=_r.warehous_fob; _row.warehous_active:=_r.warehous_active; _row.warehous_counttag_prefix:=_r.warehous_counttag_prefix; _row.warehous_counttag_number:=_r.warehous_counttag_number; _row.warehous_bol_prefix:=_r.warehous_bol_prefix; _row.warehous_bol_number:=_r.warehous_bol_number; _row.warehous_shipping:=_r.warehous_shipping; _row.warehous_useslips:=_r.warehous_useslips; _row.warehous_usezones:=_r.warehous_usezones; _row.warehous_aislesize:=_r.warehous_aislesize; _row.warehous_racksize:=_r.warehous_racksize; _row.warehous_binsize:=_r.warehous_binsize; _row.warehous_binalpha:=_r.warehous_binalpha; _row.warehous_locationsize:=_r.warehous_locationsize; _row.warehous_locationalpha:=_r.warehous_locationalpha; _row.warehous_enforcearbl:=_r.warehous_enforcearbl; _row.warehous_default_accnt_id:=_r.warehous_default_accnt_id; _row.warehous_shipping_commission:=_r.warehous_shipping_commission; _row.warehous_cntct_id:=_r.warehous_cntct_id; _row.warehous_addr_id:=_r.warehous_addr_id; _row.warehous_taxzone_id:=_r.warehous_taxzone_id; _row.warehous_transit:=_r.warehous_transit; _row.warehous_shipform_id:=_r.warehous_shipform_id; _row.warehous_shipvia_id:=_r.warehous_shipvia_id; _row.warehous_shipcomments:=_r.warehous_shipcomments; _row.warehous_costcat_id:=_r.warehous_costcat_id; _row.warehous_sitetype_id:=_r.warehous_sitetype_id; RETURN NEXT _row; END LOOP; ELSE FOR _r IN SELECT * FROM whsinfo LOOP _row.warehous_id:=_r.warehous_id; _row.warehous_code:=_r.warehous_code; _row.warehous_descrip:=_r.warehous_descrip; _row.warehous_fob:=_r.warehous_fob; _row.warehous_active:=_r.warehous_active; _row.warehous_counttag_prefix:=_r.warehous_counttag_prefix; _row.warehous_counttag_number:=_r.warehous_counttag_number; _row.warehous_bol_prefix:=_r.warehous_bol_prefix; _row.warehous_bol_number:=_r.warehous_bol_number; _row.warehous_shipping:=_r.warehous_shipping; _row.warehous_useslips:=_r.warehous_useslips; _row.warehous_usezones:=_r.warehous_usezones; _row.warehous_aislesize:=_r.warehous_aislesize; _row.warehous_racksize:=_r.warehous_racksize; _row.warehous_binsize:=_r.warehous_binsize; _row.warehous_binalpha:=_r.warehous_binalpha; _row.warehous_locationsize:=_r.warehous_locationsize; _row.warehous_locationalpha:=_r.warehous_locationalpha; _row.warehous_enforcearbl:=_r.warehous_enforcearbl; _row.warehous_default_accnt_id:=_r.warehous_default_accnt_id; _row.warehous_shipping_commission:=_r.warehous_shipping_commission; _row.warehous_cntct_id:=_r.warehous_cntct_id; _row.warehous_addr_id:=_r.warehous_addr_id; _row.warehous_taxzone_id:=_r.warehous_taxzone_id; _row.warehous_transit:=_r.warehous_transit; _row.warehous_shipform_id:=_r.warehous_shipform_id; _row.warehous_shipvia_id:=_r.warehous_shipvia_id; _row.warehous_shipcomments:=_r.warehous_shipcomments; _row.warehous_costcat_id:=_r.warehous_costcat_id; _row.warehous_sitetype_id:=_r.warehous_sitetype_id; RETURN NEXT _row; END LOOP; END IF; RETURN; END; $$; DROP FUNCTION public.site(); publicadminfalse83992270312551692776snoozemessage(integer)FUNCTIONCREATE FUNCTION snoozemessage(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pMsgid ALIAS FOR $1; snooze INTERVAL := '10 minutes'; BEGIN UPDATE msg SET msg_scheduled=(msg_scheduled + snooze) WHERE (msg_id=pMsgid); RETURN TRUE; END; $_$; -DROP FUNCTION public.snoozemessage(integer); publicadminfalse8399212551692777spellamount(numeric)FUNCTION CREATE FUNCTION spellamount(numeric) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN spellAmount($1, baseCurrId()); END; $_$; +DROP FUNCTION public.spellamount(numeric); publicadminfalse8399212551692778spellamount(numeric, integer)FUNCTIONCREATE FUNCTION spellamount(numeric, integer) RETURNS text LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pN ALIAS FOR $1; pCurrId ALIAS FOR $2; _t text; _dollars text; _cents text; _l integer; _p integer; _words text; _word text; _hundreds char; _tens char; _ones char; _fractionalPartName text; _curr curr_symbol%ROWTYPE; BEGIN _t := ltrim(to_char(pN, '999999999990D99'),' '); IF strpos(_t, '.') > 0 THEN _dollars := split_part(_t, '.', 1); _cents := split_part(_t, '.', 2); ELSIF strpos(_t, ',') > 0 THEN _dollars := split_part(_t, ',', 1); _cents := split_part(_t, ',', 2); END IF; _p := 0; _l := length(_dollars); _words := ''; WHILE (_p < _l) LOOP IF((_l - _p - 2) < 1) THEN _hundreds := '0'; ELSE _hundreds := substr(_dollars, _l - _p - 2, 1); END IF; IF((_l - _p - 1) < 1) THEN _tens := '0'; ELSE _tens := substr(_dollars, _l - _p - 1, 1); END IF; IF((_l - _p) < 1) THEN _ones := '0'; ELSE _ones := substr(_dollars, _l - _p, 1); END IF; IF(_hundreds != '0' OR _tens != '0' OR _ones != '0') THEN IF (_p = 3) THEN _words := 'thousand ' || _words; ELSIF (_p = 6) THEN _words := 'million ' || _words; ELSIF (_p = 9) THEN _words := 'billion ' || _words; END IF; _word := ''; IF(_tens = '1') THEN IF(_ones = '0') THEN _word := 'ten'; ELSIF(_ones = '1') THEN _word := 'eleven'; ELSIF(_ones = '2') THEN _word := 'twelve'; ELSIF(_ones = '3') THEN _word := 'thirteen'; ELSIF(_ones = '4') THEN _word := 'fourteen'; ELSIF(_ones = '5') THEN _word := 'fifteen'; ELSIF(_ones = '6') THEN _word := 'sixteen'; ELSIF(_ones = '7') THEN _word := 'seventeen'; ELSIF(_ones = '8') THEN _word := 'eighteen'; ELSIF(_ones = '9') THEN _word := 'nineteen'; ELSE _word := 'ERROR'; END IF; ELSE IF(_ones = '1') THEN _word := 'one'; ELSIF(_ones = '2') THEN _word := 'two'; ELSIF(_ones = '3') THEN _word := 'three'; ELSIF(_ones = '4') THEN _word := 'four'; ELSIF(_ones = '5') THEN _word := 'five'; ELSIF(_ones = '6') THEN _word := 'six'; ELSIF(_ones = '7') THEN _word := 'seven'; ELSIF(_ones = '8') THEN _word := 'eight'; ELSIF(_ones = '9') THEN _word := 'nine'; ELSIF(_ones != '0') THEN _word := 'ERROR'; END IF; if(_tens != '0') THEN _word := '-' || _word; END IF; IF(_tens = '2') THEN _word := 'twenty' || _word; ELSIF(_tens = '3') THEN _word := 'thirty' || _word; ELSIF(_tens = '4') THEN _word := 'forty' || _word; ELSIF(_tens = '5') THEN _word := 'fifty' || _word; ELSIF(_tens = '6') THEN _word := 'sixty' || _word; ELSIF(_tens = '7') THEN _word := 'seventy' || _word; ELSIF(_tens = '8') THEN _word := 'eighty' || _word; ELSIF(_tens = '9') THEN _word := 'ninety' || _word; ELSIF(_tens != '0' AND _tens != '1') THEN _word := 'ERROR' || _word; END IF; END IF; if(_word != '') THEN _words := _word || ' ' || _words; END IF; _word := ''; IF(_hundreds = '1') THEN _word := 'one hundred'; ELSIF(_hundreds = '2') THEN _word := 'two hundred'; ELSIF(_hundreds = '3') THEN _word := 'three hundred'; ELSIF(_hundreds = '4') THEN _word := 'four hundred'; ELSIF(_hundreds = '5') THEN _word := 'five hundred'; ELSIF(_hundreds = '6') THEN _word := 'six hundred'; ELSIF(_hundreds = '7') THEN _word := 'seven hundred'; ELSIF(_hundreds = '8') THEN _word := 'eight hundred'; ELSIF(_hundreds = '9') THEN _word := 'nine hundred'; ELSIF(_hundreds != '0') THEN _words := 'ERROR'; END IF; if(_word != '') THEN _words := _word || ' ' || _words; END IF; END IF; _p := _p + 3; END LOOP; _words := rtrim(_words, ' '); IF(_words = '') THEN _words := 'zero'; END IF; SELECT * INTO _curr FROM curr_symbol WHERE curr_id = pCurrId; IF(_words = 'one') AND TRIM(_curr.curr_name) ~ '.*s' THEN _word := rtrim(_curr.curr_name, ' s'); ELSE _word := trim(_curr.curr_name); END IF; IF _curr.curr_abbr = 'USD' OR _curr.curr_abbr = 'CAD' THEN IF (_cents = '1') THEN _fractionalPartName = ' cent'; ELSE _fractionalPartName = ' cents'; END IF; ELSE _fractionalPartName = ' / 100 '; END IF; RETURN _words || ' ' || _word || ' and ' || _cents || _fractionalPartName; END; $_$; 4DROP FUNCTION public.spellamount(numeric, integer); publicadminfalse8399212551692779'splitreceipt(integer, numeric, numeric)FUNCTIONaCREATE FUNCTION splitreceipt(integer, numeric, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE precvid ALIAS FOR $1; pqty ALIAS FOR $2; pfreight ALIAS FOR $3; _check RECORD; _seq INTEGER; BEGIN -- validate IF (COALESCE(pQty,0) <= 0) THEN RETURN -7; END IF; SELECT * INTO _check FROM recv WHERE (recv_id=precvid); IF (FOUND) THEN IF (_check.recv_order_type != 'PO') THEN RETURN -1; ELSIF ( NOT _check.recv_posted) THEN RETURN -2; ELSIF ( (_check.recv_invoiced) OR (_check.recv_vohead_id IS NOT NULL) OR (_check.recv_voitem_id IS NOT NULL) ) THEN RETURN -3; ELSIF (pqty >= _check.recv_qty) THEN RETURN -4; ELSIF (COALESCE(pfreight,0) > _check.recv_freight) THEN RETURN -5; END IF; ELSE RETURN -6; END IF; -- Create new receipt record _seq := nextval('recv_recv_id_seq'); INSERT INTO recv SELECT _seq, recv_order_type,recv_order_number, recv_orderitem_id, recv_agent_username, recv_itemsite_id, recv_vend_id, recv_vend_item_number, recv_vend_item_descrip, recv_vend_uom, recv_purchcost, recv_purchcost_curr_id, recv_duedate, pqty, recv_recvcost, recv_recvcost_curr_id, COALESCE(pfreight,0), recv_freight_curr_id, recv_date, ROUND(recv_value/recv_qty * pqty, 2), TRUE, FALSE, NULL, NULL, recv_trans_usr_name, recv_notes, recv_gldistdate, precvid FROM recv WHERE (recv_id=precvid); -- Update qty and value of old record UPDATE recv SET recv_qty = recv_qty-pqty, recv_value = recv_value - ROUND(recv_value/recv_qty * pqty, 2), recv_freight = recv_freight - COALESCE(pfreight,0) WHERE (recv_id=precvid); RETURN _seq; END; $_$; >DROP FUNCTION public.splitreceipt(integer, numeric, numeric); publicadminfalse83992125516927808splitrecurrence(integer, text, timestamp with time zone)FUNCTION CREATE FUNCTION splitrecurrence(integer, text, timestamp with time zone) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pParentid ALIAS FOR $1; pType TEXT := UPPER($2); pDatetime TIMESTAMP WITH TIME ZONE := COALESCE($3, CURRENT_TIMESTAMP); _count INTEGER; _newrecurid INTEGER; _newparentid INTEGER; _newparentstmt TEXT; _rt RECORD; _updchildstmt TEXT; BEGIN IF (pParentid IS NULL) THEN RETURN -11; END IF; SELECT * INTO _rt FROM recurtype WHERE (UPPER(recurtype_type)=pType); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count <= 0) THEN RETURN -10; END IF; _newparentstmt := 'SELECT [table]_id FROM [fulltable]' || ' WHERE (([table]_recurring_[table]_id=$1)' || ' AND NOT ([done])' || ' AND ([schedcol]>=''$2''))' || ' ORDER BY [schedcol]' || ' LIMIT 1;'; _newparentstmt := REPLACE(_newparentstmt, '[fulltable]', _rt.recurtype_table); _newparentstmt := REPLACE(_newparentstmt, '[table]', REGEXP_REPLACE(_rt.recurtype_table, E'.*\\.', '')); _newparentstmt := REPLACE(_newparentstmt, '[done]', _rt.recurtype_donecheck); _newparentstmt := REPLACE(_newparentstmt, '[schedcol]', _rt.recurtype_schedcol); _updchildstmt := 'UPDATE [fulltable] SET [table]_recurring_[table]_id=$1' || ' WHERE (([table]_recurring_[table]_id=$2)' || ' AND NOT ([done])' || ' AND ([schedcol] > ''$3''));'; _updchildstmt := REPLACE(_updchildstmt, '[fulltable]', _rt.recurtype_table); _updchildstmt := REPLACE(_updchildstmt, '[table]', REGEXP_REPLACE(_rt.recurtype_table, E'.*\\.', '')); _updchildstmt := REPLACE(_updchildstmt, '[done]', _rt.recurtype_donecheck); _updchildstmt := REPLACE(_updchildstmt, '[schedcol]', _rt.recurtype_schedcol); -- 8.4+: EXECUTE _newparentstmt INTO _newparentid USING pParentid, pDatetime; EXECUTE REPLACE(REPLACE(_newparentstmt, '$1', pParentid::TEXT), '$2', pDatetime::TEXT) INTO _newparentid; -- if nothing to split IF (_newparentid = pParentid OR _newparentid IS NULL) THEN SELECT recur_id INTO _newrecurid FROM recur WHERE ((recur_parent_id=pParentid) AND (recur_parent_type=pType)); ELSE INSERT INTO recur (recur_parent_id, recur_parent_type, recur_period, recur_freq, recur_start, recur_end, recur_max, recur_data ) SELECT _newparentid, pType, recur_period, recur_freq, pDatetime, recur_end, recur_max, recur_data FROM recur WHERE ((recur_parent_id=pParentid) AND (recur_parent_type=pType)) RETURNING recur_id INTO _newrecurid; UPDATE recur SET recur_end=pDatetime WHERE ((recur_parent_id=pParentid) AND (recur_parent_type=pType)); -- 8.4+: EXECUTE _updchildstmt USING _newparentid, pParentid, pDatetime; EXECUTE REPLACE(REPLACE(REPLACE(_updchildstmt, '$1', _newparentid::TEXT), '$2', pParentid::TEXT), '$3', pDatetime::TEXT); END IF; RETURN _newrecurid; END; $_$; ODROP FUNCTION public.splitrecurrence(integer, text, timestamp with time zone); publicadminfalse8399212551692781 startoftime()FUNCTIONCREATE FUNCTION startoftime() RETURNS date LANGUAGE sql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT DATE('1970-01-01') AS return; $$; $DROP FUNCTION public.startoftime(); publicadminfalse812551692782stdcost(integer)FUNCTIONCREATE FUNCTION stdcost(integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN stdCost($1, NULL); END; $_$; 'DROP FUNCTION public.stdcost(integer); publicadminfalse8399212551692783stdcost(integer, integer)FUNCTIONzCREATE FUNCTION stdcost(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pBomitemid ALIAS FOR $2; _cost NUMERIC; BEGIN SELECT SUM(COALESCE(bomitemcost_stdcost, itemcost_stdcost)) INTO _cost FROM itemcost LEFT OUTER JOIN bomitemcost ON (bomitemcost_bomitem_id=pBomitemid AND bomitemcost_costelem_id=itemcost_costelem_id) WHERE (itemcost_item_id=pItemid); IF (_cost IS NULL) THEN RETURN 0; ELSE RETURN _cost; END IF; END; $_$; 0DROP FUNCTION public.stdcost(integer, integer); publicadminfalse8399212551692784,sufficientinventorytoshipitem(text, integer)FUNCTIONCREATE FUNCTION sufficientinventorytoshipitem(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; porderitemid ALIAS FOR $2; BEGIN RETURN sufficientInventoryToShipItem(pordertype, porderitemid, NULL); END; $_$; CDROP FUNCTION public.sufficientinventorytoshipitem(text, integer); publicadminfalse83992125516927855sufficientinventorytoshipitem(text, integer, numeric)FUNCTION*CREATE FUNCTION sufficientinventorytoshipitem(text, integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; porderitemid ALIAS FOR $2; pqty ALIAS FOR $3; _returnVal INTEGER; _isqtyavail BOOLEAN; BEGIN IF (porderitemid IS NULL) THEN RETURN -1; END IF; IF (pordertype = 'SO') THEN IF ( SELECT fetchMetricBool('EnableSOReservations') ) THEN IF (SELECT (itemsite_costmethod = 'J') FROM coitem JOIN itemsite ON (coitem_itemsite_id=itemsite_id) WHERE (coitem_id=porderitemid)) THEN RETURN 0; END IF; SELECT (((COALESCE(pqty, roundQty(item_fractional, noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned - qtyAtShipping(pordertype, coitem_id) ))) - coitem_qtyreserved) * coitem_qty_invuomratio ) <= itemsite_qtyonhand) AND (((COALESCE(pqty, roundQty(item_fractional, noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned - qtyAtShipping(pordertype, coitem_id) ))) - coitem_qtyreserved) * coitem_qty_invuomratio ) <= qtyunreserved(itemsite_id)) INTO _isqtyavail FROM coitem, itemsite, item WHERE ((coitem_itemsite_id=itemsite_id) AND (coitem_status <> 'X') AND (NOT ((item_type IN ('R','J')) OR (itemsite_controlmethod = 'N'))) AND (itemsite_item_id=item_id) AND (coitem_id=porderitemid)); ELSE SELECT (COALESCE(pqty, roundQty(item_fractional, noNeg(coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned - qtyAtShipping(pordertype, coitem_id) - coitem_qtyreserved ) * coitem_qty_invuomratio ) ) <= itemsite_qtyonhand) INTO _isqtyavail FROM coitem, itemsite, item WHERE ((coitem_itemsite_id=itemsite_id) AND (coitem_status <> 'X') AND (NOT ((item_type IN ('R','J')) OR (itemsite_controlmethod = 'N'))) AND (itemsite_item_id=item_id) AND (coitem_id=porderitemid)); END IF; ELSEIF (pordertype = 'TO') THEN SELECT (COALESCE(pqty, roundQty(item_fractional, noNeg(toitem_qty_ordered - toitem_qty_shipped - qtyAtShipping(pordertype, toitem_id) ) ) ) <= itemsite_qtyonhand) INTO _isqtyavail FROM toitem, tohead, itemsite, item WHERE ((toitem_tohead_id=tohead_id) AND (tohead_src_warehous_id=itemsite_warehous_id) AND (toitem_item_id=itemsite_item_id) AND (itemsite_warehous_id=tohead_src_warehous_id) AND (itemsite_item_id=item_id) AND (toitem_status <> 'X') AND (NOT ((item_type IN ('R','J')) OR (itemsite_controlmethod = 'N'))) AND (toitem_id=porderitemid)); ELSE RETURN -11; END IF; IF (NOT _isqtyavail) THEN RETURN -2; END IF; IF (pordertype = 'SO') THEN SELECT (COALESCE((SELECT SUM(itemloc_qty) FROM itemloc WHERE (itemloc_itemsite_id=itemsite_id)), 0.0) >= roundQty(item_fractional, COALESCE(pQty, noNeg( coitem_qtyord - coitem_qtyshipped + coitem_qtyreturned - qtyAtShipping(pordertype, coitem_id) )) * coitem_qty_invuomratio )) INTO _isqtyavail FROM coitem, itemsite, item WHERE ((coitem_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (NOT ((item_type ='R') OR (itemsite_controlmethod = 'N'))) AND ((itemsite_controlmethod IN ('L', 'S')) OR (itemsite_loccntrl)) AND (coitem_id=porderitemid)); ELSEIF (pordertype = 'TO') THEN SELECT (COALESCE((SELECT SUM(itemloc_qty) FROM itemloc WHERE (itemloc_itemsite_id=itemsite_id)), 0.0) >= roundQty(item_fractional, noNeg( toitem_qty_ordered - toitem_qty_shipped - qtyAtShipping(pordertype, toitem_id) ) )) INTO _isqtyavail FROM toitem, tohead, itemsite, item WHERE ((toitem_tohead_id=tohead_id) AND (tohead_src_warehous_id=itemsite_warehous_id) AND (toitem_item_id=itemsite_item_id) AND (itemsite_item_id=item_id) AND (toitem_status <> 'X') AND (NOT ((item_type ='R') OR (itemsite_costmethod = 'J') OR (itemsite_controlmethod = 'N'))) AND ((itemsite_controlmethod IN ('L', 'S')) OR (itemsite_loccntrl)) AND (toitem_id=porderitemid)); END IF; IF (NOT _isqtyavail) THEN RETURN -3; END IF; RETURN 0; END; $_$; LDROP FUNCTION public.sufficientinventorytoshipitem(text, integer, numeric); publicadminfalse8399212551692786-sufficientinventorytoshiporder(text, integer)FUNCTIONCREATE FUNCTION sufficientinventorytoshiporder(text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pordertype ALIAS FOR $1; porderid ALIAS FOR $2; _s RECORD; _returnVal INTEGER := 0; BEGIN IF (pordertype = 'SO') THEN FOR _s IN SELECT coitem_id FROM coitem JOIN itemsite ON (coitem_itemsite_id=itemsite_id) WHERE((coitem_cohead_id=porderid) AND (itemsite_costmethod != 'J')) LOOP _returnVal := sufficientInventoryToShipItem(pordertype, _s.coitem_id); EXIT WHEN (_returnVal < 0); END LOOP; ELSEIF (pordertype = 'TO') THEN FOR _s IN SELECT toitem_id FROM toitem WHERE(toitem_tohead_id=porderid) LOOP _returnVal := sufficientInventoryToShipItem(pordertype, _s.toitem_id); EXIT WHEN (_returnVal < 0); END LOOP; END IF; RETURN _returnVal; END; $_$; DDROP FUNCTION public.sufficientinventorytoshiporder(text, integer); publicadminfalse8399212551692787summarizedbom(integer)FUNCTION|CREATE FUNCTION summarizedbom(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; _revid INTEGER; BEGIN SELECT getActiveRevId('BOM',pItemid) INTO _revid; RETURN summarizedBOM(pItemid, _revid); END; $_$; -DROP FUNCTION public.summarizedbom(integer); publicadminfalse8399212551692788(summarizedbom(integer, integer, integer)FUNCTIONCREATE FUNCTION summarizedbom(integer, integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pExpired ALIAS FOR $2; pFuture ALIAS FOR $3; _revid INTEGER; BEGIN SELECT getActiveRevId('BOM',pItemid) INTO _revid; RETURN summarizedBOM(pItemid, _revid, pExpired, pFuture); END; $_$; ?DROP FUNCTION public.summarizedbom(integer, integer, integer); publicadminfalse8399212551692789summarizedbom(integer, integer)FUNCTIONCREATE FUNCTION summarizedbom(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pRevisionid ALIAS FOR $2; _bomworkid INTEGER; _indexid INTEGER; _r RECORD; BEGIN -- Check on the temporary workspace -- PERFORM maintainBOMWorkspace(); -- Grab a new index for this bomwork set SELECT NEXTVAL('misc_index_seq') INTO _indexid; -- Step through all of the components of the passed pItemid FOR _r IN SELECT bomitem.*, item_id, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyfxd) AS qtyfxd, (itemuomtouomratio(bomitem_item_id, bomitem_uom_id, NULL) * bomitem_qtyper) AS qtyper, stdcost(item_id, bomitem_id) AS standardcost, actcost(item_id, bomitem_id) AS actualcost FROM bomitem(pItemid, pRevisionid), item WHERE (bomitem_item_id=item_id) LOOP -- Insert the component and bomitem parameters SELECT NEXTVAL('bomwork_bomwork_id_seq') INTO _bomworkid; INSERT INTO bomwork ( bomwork_id, bomwork_set_id, bomwork_parent_id, bomwork_level, bomwork_parent_seqnumber, bomwork_seqnumber, bomwork_item_id, bomwork_createwo, bomwork_qtyreq, bomwork_qtyfxd, bomwork_qtyper, bomwork_scrap, bomwork_issuemethod, bomwork_effective, bomwork_expires, bomwork_stdunitcost, bomwork_actunitcost ) VALUES ( _bomworkid, _indexid, -1, 1, 0, _r.bomitem_seqnumber, _r.item_id, _r.bomitem_createwo, (_r.qtyfxd + _r.qtyper), _r.qtyfxd, _r.qtyper, _r.bomitem_scrap, _r.bomitem_issuemethod, _r.bomitem_effective, _r.bomitem_expires, _r.standardcost, _r.actualcost, _r.bomitem_char_id, _r.bomitem_value, _r.bomitem_notes, _r.bomitem_ref, _r.bomitem_id, _r.bomitem_ecn ); -- Explode the components of the current component PERFORM explodeBOM(_r.item_id, _bomworkid, 1); END LOOP; -- Return a key to the result RETURN _indexid; END; $_$; 6DROP FUNCTION public.summarizedbom(integer, integer); publicadminfalse83992125520084391summarizedbom(integer, integer, integer, integer)FUNCTIONCREATE FUNCTION summarizedbom(integer, integer, integer, integer) RETURNS SETOF bomdata LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pRevisionid ALIAS FOR $2; pExpiredDays INTEGER := COALESCE($3, 0); pFutureDays INTEGER := COALESCE($4, 0); _row bomdata%ROWTYPE; _bomworksetid INTEGER; _x RECORD; _check CHAR(1); _inactive BOOLEAN := FALSE; _batchsize NUMERIC; BEGIN IF (pRevisionid != -1) THEN --Is this a deactivated revision? SELECT rev_status INTO _check FROM rev WHERE ((rev_id=pRevisionid) AND (rev_status='I')); IF (FOUND) THEN _inactive := TRUE; END IF; END IF; -- Get the batch quantity SELECT COALESCE( ( SELECT bomhead_batchsize FROM bomhead WHERE ((bomhead_item_id=pItemId) AND (bomhead_rev_id=pRevisionid))),1) INTO _batchsize; IF NOT (_inactive) THEN --We can explode this out based on current data SELECT indentedBOM(pItemid, pRevisionid) INTO _bomworksetid; FOR _x IN SELECT item_number, uom_name, item_descrip1, item_descrip2, (item_descrip1 || ' ' || item_descrip2) AS itemdescription, SUM(bomwork_qtyreq) AS qtyreq, SUM(bomwork_qtyfxd * (1 + bomwork_scrap)) AS qtyfxd, SUM(bomwork_qtyper * (1 + bomwork_scrap)) AS qtyper, MAX(bomwork_actunitcost) AS actunitcost, MAX(bomwork_stdunitcost) AS stdunitcost, CASE WHEN item_type NOT IN ('R','T') THEN SUM(bomwork_actunitcost * bomwork_qtyreq) ELSE 0 END AS actextendedcost, CASE WHEN item_type NOT IN ('R','T') THEN SUM(bomwork_stdunitcost * bomwork_qtyreq) ELSE 0 END AS stdextendedcost, bomwork_effective, bomwork_expires, bomwork_effective > CURRENT_DATE AS future, bomwork_expires <= CURRENT_DATE AS expired FROM ( SELECT item_number, item_type, uom_name, item_descrip1, item_descrip2, bomwork_qtyreq, bomwork_qtyfxd, bomwork_qtyper, bomwork_scrap, bomwork_actunitcost, bomwork_stdunitcost, CASE WHEN (bomwork_effective > CURRENT_DATE) THEN (CURRENT_DATE + 1) ELSE CURRENT_DATE END AS bomwork_effective, CASE WHEN (bomwork_expires <= CURRENT_DATE) THEN (CURRENT_DATE - 1) ELSE (CURRENT_DATE + 1) END AS bomwork_expires FROM bomwork, item, uom WHERE ( (bomwork_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (bomwork_set_id=_bomworksetid) ) AND (bomwork_expires > (CURRENT_DATE - pExpiredDays)) AND (bomwork_effective <= (CURRENT_DATE + pFutureDays)) ) AS data GROUP BY item_number, uom_name, item_type, item_descrip1, item_descrip2, bomwork_effective, bomwork_expires ORDER BY item_number LOOP _row.bomdata_item_number := _x.item_number; _row.bomdata_uom_name := _x.uom_name; _row.bomdata_item_descrip1 := _x.item_descrip1; _row.bomdata_item_descrip2 := _x.item_descrip2; _row.bomdata_itemdescription := _x.itemdescription; _row.bomdata_qtyreq := _x.qtyreq; _row.bomdata_qtyfxd := _x.qtyfxd; _row.bomdata_qtyper := _x.qtyper; _row.bomdata_actunitcost := _x.actunitcost; _row.bomdata_stdunitcost := _x.stdunitcost; _row.bomdata_actextendedcost := _x.actextendedcost; _row.bomdata_stdextendedcost := _x.stdextendedcost; _row.bomdata_effective := _x.bomwork_effective; _row.bomdata_expires := _x.bomwork_expires; _row.bomdata_future := _x.future; _row.bomdata_expired := _x.expired; RETURN NEXT _row; END LOOP; PERFORM deleteBOMWorkset(_bomworksetid); ELSE -- Use historical snapshot for inactive revisions FOR _x IN SELECT item_number, uom_name, item_descrip1, item_descrip2, (item_descrip1 || ' ' || item_descrip2) AS itemdescription, SUM(bomhist_qtyreq * (1 + bomhist_scrap)) AS qtyreq, SUM(bomhist_qtyfxd * (1 + bomhist_scrap)) AS qtyfxd, SUM(bomhist_qtyper * (1 + bomhist_scrap)) AS qtyper, MAX(bomhist_actunitcost) AS actunitcost, MAX(bomhist_stdunitcost) AS stdunitcost, CASE WHEN item_type NOT IN ('R','T') THEN MAX(bomhist_actunitcost) * SUM((bomhist_qtyfxd/_batchsize + bomhist_qtyper) * (1 + bomhist_scrap)) ELSE 0 END AS actextendedcost, CASE WHEN item_type NOT IN ('R','T') THEN MAX(bomhist_stdunitcost) * SUM((bomhist_qtyfxd/_batchsize + bomhist_qtyper) * (1 + bomhist_scrap)) ELSE 0 END AS stdextendedcost FROM bomhist, item, uom WHERE ( (bomhist_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (bomhist_rev_id=pRevisionid) ) AND (bomhist_expires > (CURRENT_DATE - pExpiredDays)) AND (bomhist_effective <= (CURRENT_DATE + pFutureDays)) GROUP BY item_number, uom_name, item_type, item_descrip1, item_descrip2 ORDER BY item_number LOOP _row.bomdata_item_number := _x.item_number; _row.bomdata_uom_name := _x.uom_name; _row.bomdata_item_descrip1 := _x.item_descrip1; _row.bomdata_item_descrip2 := _x.item_descrip2; _row.bomdata_itemdescription := _x.itemdescription; _row.bomdata_qtyreq := _x.qtyreq; _row.bomdata_qtyfxd := _x.qtyfxd; _row.bomdata_qtyper := _x.qtyper; _row.bomdata_actunitcost := _x.actunitcost; _row.bomdata_stdunitcost := _x.stdunitcost; _row.bomdata_actextendedcost := _x.actextendedcost; _row.bomdata_stdextendedcost := _x.stdextendedcost; RETURN NEXT _row; END LOOP; END IF; RETURN; END; $_$; HDROP FUNCTION public.summarizedbom(integer, integer, integer, integer); publicadminfalse83992257712551692791*summarizetransactions(integer, date, date)FUNCTION CREATE FUNCTION summarizetransactions(integer, date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _startDate DATE; _endDate DATE; _invhist RECORD; _itemuom TEXT; _transCounter INTEGER; _itemlocSeries INTEGER; BEGIN -- Cache the uom_name SELECT uom_name INTO _itemuom FROM itemsite, item, uom WHERE ((itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) AND (itemsite_id=pItemsiteid)); -- Can't summarize into the future... IF (pEndDate > CURRENT_DATE) THEN _endDate := CURRENT_DATE; ELSE _endDate := pEndDate; END IF; -- Verify date bounds IF (pStartDate > pEndDate) THEN _startDate := pEndDate; ELSE _startDate := pStartDate; END IF; -- Verify that history is not referenced elsewhere SELECT invhist_id INTO _transCounter FROM invhist JOIN womatlpost ON (womatlpost_invhist_id=invhist_id) WHERE ((invhist_itemsite_id=pItemsiteid) AND (invhist_transdate::DATE BETWEEN _startDate AND _endDate)) LIMIT 1; IF (FOUND) THEN RETURN 0; END IF; SELECT invhist_id INTO _transCounter FROM invhist JOIN shipitem ON (shipitem_invhist_id=invhist_id) WHERE ((invhist_itemsite_id=pItemsiteid) AND (invhist_transdate::DATE BETWEEN _startDate AND _endDate)) LIMIT 1; IF (FOUND) THEN RETURN 0; END IF; _transCounter := 0; _itemlocSeries := NEXTVAL('itemloc_series_seq'); FOR _invhist IN SELECT invhist_transtype, invhist_costmethod, SUM(invhist_invqty) AS qty FROM invhist WHERE ((invhist_itemsite_id=pItemsiteid) AND (invhist_transdate::DATE BETWEEN _startDate AND _endDate)) GROUP BY invhist_transtype, invhist_costmethod LOOP DELETE FROM invhist WHERE ((invhist_transdate::DATE BETWEEN _startDate AND _endDate) AND (invhist_transtype=_invhist.invhist_transtype) AND (invhist_itemsite_id=pItemsiteid)); INSERT INTO invhist ( invhist_itemsite_id, invhist_transdate, invhist_transtype, invhist_invqty, invhist_qoh_before, invhist_qoh_after, invhist_invuom, invhist_user, invhist_ordnumber, invhist_costmethod, invhist_value_before, invhist_value_after, invhist_series ) VALUES ( pItemsiteid, _endDate, _invhist.invhist_transtype, _invhist.qty, 0, 0, _itemuom, getEffectiveXtUser(), 'Summary', _invhist.invhist_costmethod, 0, 0, _itemlocSeries ); _transCounter := (_transCounter + 1); END LOOP; RETURN _transCounter; END; $_$; ADROP FUNCTION public.summarizetransactions(integer, date, date); publicadminfalse8399212551692792summdemand(integer, date, date)FUNCTIONgCREATE FUNCTION summdemand(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _value NUMERIC; BEGIN SELECT SUM(wo_qtyord - wo_qtyrcv) INTO _value FROM wo WHERE ( (wo_itemsite_id=pItemsiteid) AND (wo_status IN ('R', 'I')) AND (wo_startdate::DATE BETWEEN pStartDate AND pEndDate) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; 6DROP FUNCTION public.summdemand(integer, date, date); publicadminfalse8399212551692793summdemand(integer, integer)FUNCTIONCREATE FUNCTION summdemand(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pCalitemid ALIAS FOR $2; _value NUMERIC; BEGIN SELECT summDemand(pItemsiteid, findPeriodStart(pCalitemid), findPeriodEnd(pCalitemid)) INTO _value; RETURN _value; END; $_$; 3DROP FUNCTION public.summdemand(integer, integer); publicadminfalse8399212551692794summprod(integer, date, date)FUNCTIONwCREATE FUNCTION summprod(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _value NUMERIC; BEGIN SELECT SUM(invhist_invqty) INTO _value FROM invhist WHERE ( (invhist_itemsite_id=pItemsiteid) AND (invhist_transtype IN ('RM', 'RB')) AND (invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; 4DROP FUNCTION public.summprod(integer, date, date); publicadminfalse8399212551692795summprod(integer, integer)FUNCTIONCREATE FUNCTION summprod(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pCalitemid ALIAS FOR $2; _value NUMERIC; BEGIN SELECT summProd(pItemsiteid, findPeriodStart(pCalitemid), findPeriodEnd(pCalitemid)) INTO _value; RETURN _value; END; $_$; 1DROP FUNCTION public.summprod(integer, integer); publicadminfalse8399212551692796summtransa(integer, date, date)FUNCTIONwCREATE FUNCTION summtransa(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _value NUMERIC; BEGIN SELECT SUM(invhist_invqty) INTO _value FROM invhist WHERE ((invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND (invhist_transtype IN ('AD', 'CC')) AND (invhist_itemsite_id=pItemsiteid)); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; 6DROP FUNCTION public.summtransa(integer, date, date); publicadminfalse8399212551692797summtransa(integer, integer)FUNCTIONCREATE FUNCTION summtransa(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pCalitemid ALIAS FOR $2; _value NUMERIC; BEGIN SELECT summTransA(pItemsiteid, findPeriodStart(pCalitemid), findPeriodEnd(pCalitemid)) INTO _value; RETURN _value; END; $_$; 3DROP FUNCTION public.summtransa(integer, integer); publicadminfalse8399212551692798summtransc(integer, date, date)FUNCTIONqCREATE FUNCTION summtransc(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDAte ALIAS FOR $3; _value NUMERIC; BEGIN SELECT SUM(invhist_invqty) INTO _value FROM invhist WHERE ((invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND (invhist_transtype IN ('SI')) AND (invhist_itemsite_id=pItemsiteid)); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; 6DROP FUNCTION public.summtransc(integer, date, date); publicadminfalse8399212551692799summtransc(integer, integer)FUNCTIONCREATE FUNCTION summtransc(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pCalitemid ALIAS FOR $2; _value NUMERIC; BEGIN SELECT summTransC(pItemsiteid, findPeriodStart(pCalitemid), findPeriodEnd(pCalitemid)) INTO _value; RETURN _value; END; $_$; 3DROP FUNCTION public.summtransc(integer, integer); publicadminfalse83992,12551692800summtransi(integer, date, date)FUNCTIONwCREATE FUNCTION summtransi(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _value NUMERIC; BEGIN SELECT SUM(invhist_invqty) INTO _value FROM invhist WHERE ((invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND (invhist_transtype IN ('IM', 'IC')) AND (invhist_itemsite_id=pItemsiteid)); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; 6DROP FUNCTION public.summtransi(integer, date, date); publicadminfalse83992-12551692801summtransi(integer, integer)FUNCTIONCREATE FUNCTION summtransi(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pCalitemid ALIAS FOR $2; _value NUMERIC; BEGIN SELECT summTransI(pItemsiteid, findPeriodStart(pCalitemid), findPeriodEnd(pCalitemid)) INTO _value; RETURN _value; END; $_$; 3DROP FUNCTION public.summtransi(integer, integer); publicadminfalse8399212551692802summtransr(integer, date, date)FUNCTION~CREATE FUNCTION summtransr(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _value NUMERIC; BEGIN SELECT SUM(invhist_invqty) INTO _value FROM invhist WHERE ((invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND (invhist_transtype IN ('RM', 'RP', 'RX')) AND (invhist_itemsite_id=pItemsiteid) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; 6DROP FUNCTION public.summtransr(integer, date, date); publicadminfalse8399212551692803summtransr(integer, integer)FUNCTIONCREATE FUNCTION summtransr(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pCalitemid ALIAS FOR $2; _value NUMERIC; BEGIN SELECT summTransR(pItemsiteid, findPeriodStart(pCalitemid), findPeriodEnd(pCalitemid)) INTO _value; RETURN _value; END; $_$; 3DROP FUNCTION public.summtransr(integer, integer); publicadminfalse8399212551692804summtranss(integer, date, date)FUNCTIONCREATE FUNCTION summtranss(pitemsiteid integer, pstartdate date, penddate date) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _value NUMERIC; BEGIN SELECT SUM( CASE WHEN (invhist_transtype = 'RS') THEN (invhist_invqty * -1) ELSE (invhist_invqty) END ) INTO _value FROM invhist WHERE ( (invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND (invhist_transtype IN ('SC', 'SH', 'SV', 'RS')) AND (invhist_ordtype != 'TO') AND (invhist_itemsite_id=pItemsiteid) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $$; VDROP FUNCTION public.summtranss(pitemsiteid integer, pstartdate date, penddate date); publicadminfalse8399212551692805summtranss(integer, integer)FUNCTIONCREATE FUNCTION summtranss(pitemsiteid integer, pcalitemid integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pCalitemid ALIAS FOR $2; _value NUMERIC; BEGIN SELECT summTransS(pItemsiteid, findPeriodStart(pCalitemid), findPeriodEnd(pCalitemid)) INTO _value; RETURN _value; END; $_$; JDROP FUNCTION public.summtranss(pitemsiteid integer, pcalitemid integer); publicadminfalse8399212551692806summtranst(integer, date, date)FUNCTIONCREATE FUNCTION summtranst(integer, date, date) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pStartDate ALIAS FOR $2; pEndDate ALIAS FOR $3; _value NUMERIC; BEGIN SELECT SUM( CASE WHEN (invhist_transtype = 'TS') THEN (invhist_invqty * -1) ELSE (invhist_invqty) END ) INTO _value FROM invhist WHERE ( (invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND (invhist_transtype IN ('TS', 'TR', 'TW')) AND (invhist_itemsite_id=pItemsiteid) ); IF (_value IS NULL) THEN _value := 0; END IF; RETURN _value; END; $_$; 6DROP FUNCTION public.summtranst(integer, date, date); publicadminfalse8399212551692807summtranst(integer, integer)FUNCTIONCREATE FUNCTION summtranst(integer, integer) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pCalitemid ALIAS FOR $2; _value NUMERIC; BEGIN SELECT summTransT(pItemsiteid, findPeriodStart(pCalitemid), findPeriodEnd(pCalitemid)) INTO _value; RETURN _value; END; $_$; 3DROP FUNCTION public.summtranst(integer, integer); publicadminfalse8399212552008440 taxassignments(integer, integer)FUNCTIONCREATE FUNCTION taxassignments(integer, integer) RETURNS SETOF taxassign LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTaxZoneId ALIAS FOR $1; pTaxTypeId ALIAS FOR $2; _row taxassign%ROWTYPE; _qry text; _x RECORD; _y RECORD; _z RECORD; BEGIN _qry = 'SELECT DISTINCT COALESCE(taxass_taxzone_id, -1) AS taxass_taxzone_id, COALESCE(taxass_taxtype_id, -1) AS taxass_taxtype_id, '; _qry = _qry || 'taxzone_code, taxtype_name FROM taxass LEFT OUTER JOIN taxzone ON (taxass_taxzone_id=taxzone_id) '; _qry = _qry || 'LEFT OUTER JOIN taxtype ON (taxass_taxtype_id=taxtype_id) '; IF ((pTaxZoneId > 0) OR (pTaxTypeId > 0)) THEN _qry := _qry || ' WHERE '; IF (pTaxZoneId > 0) THEN _qry := _qry || ' (taxass_taxzone_id = ' || pTaxZoneId ||')'; IF (pTaxTypeId > 0) THEN _qry := _qry || ' AND '; END IF; END IF; IF (pTaxTypeId > 0) THEN _qry := _qry || ' (taxass_taxtype_id = ' || pTaxTypeId || ')'; END IF; END IF; --This first query gets all the distinct tax zone and type groupings as if it were its own table. --This allows us to have a level 0 record as pictured in Tax Assignments window that code assignements will --Subordinate to. FOR _x IN EXECUTE _qry LOOP --Map values to _row here _row.taxassign_taxzone_id = _x.taxass_taxzone_id; _row.taxassign_taxtype_id = _x.taxass_taxtype_id; _row.taxassign_level = 0; _row.taxassign_zone_code = _x.taxzone_code; _row.taxassign_type_descrip = _x.taxtype_name; _row.taxassign_taxclass_code = ''; _row.taxassign_taxclass_sequence = NULL; RETURN NEXT _row; --so we get a level tax zone/type 0 record. -- Now get all the tax code assignments that belong to this Zone and Type pair FOR _y IN SELECT taxass_id, COALESCE(taxzone_id, -1) AS taxzone_id, tax_id, tax_code, tax_descrip, COALESCE(taxtype_id, -1) AS taxtype_id, taxzone_code, taxtype_descrip, taxclass_code, COALESCE(taxclass_sequence, 0) AS taxclass_sequence FROM taxass JOIN tax LEFT OUTER JOIN taxclass ON (tax_taxclass_id = taxclass_id) ON (taxass_tax_id = tax_id) LEFT OUTER JOIN taxzone ON (taxass_taxzone_id = taxzone_id) LEFT OUTER JOIN taxtype ON (taxass_taxtype_id = taxtype_id) WHERE COALESCE(taxass_taxzone_id, -1) = _x.taxass_taxzone_id AND COALESCE(taxass_taxtype_id, -1) = _x.taxass_taxtype_id LOOP --Map results to _row _row.taxassign_taxzone_id = _y.taxzone_id; _row.taxassign_taxtype_id = _y.taxtype_id; _row.taxassign_level = 1; _row.taxassign_zone_code = _y.tax_code; _row.taxassign_type_descrip = _y.tax_descrip; _row.taxassign_taxclass_code = _y.taxclass_code; _row.taxassign_taxclass_sequence = _y.taxclass_sequence; RETURN NEXT _row; --to get code detail record; FOR _z IN SELECT * FROM getsubtax(_y.tax_id, 1) --a new recursive function described above LOOP --Map results to _row _row.taxassign_taxzone_id = _y.taxzone_id; _row.taxassign_taxtype_id = _y.taxtype_id; _row.taxassign_level = _z.subtax_taxcode_level; _row.taxassign_zone_code = _z.subtax_taxcode_code; _row.taxassign_type_descrip = _z.subtax_taxcode_descrip; _row.taxassign_taxclass_code = _y.taxclass_code; _row.taxassign_taxclass_sequence = _y.taxclass_sequence; RETURN NEXT _row; END LOOP; END LOOP; END LOOP; END; $_$; 7DROP FUNCTION public.taxassignments(integer, integer); publicadminfalse83992259912551692809thawaccountingperiod(integer)FUNCTIONCREATE FUNCTION thawaccountingperiod(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pPeriodid ALIAS FOR $1; _r RECORD; BEGIN -- Check to make sure that the period is frozen IF ( ( SELECT (NOT period_freeze) FROM period WHERE (period_id=pPeriodid) ) ) THEN RETURN -2; END IF; -- Check to make sure that the period is not closed IF ( ( SELECT (period_closed) FROM period WHERE (period_id=pPeriodid) ) ) THEN RETURN -1; END IF; -- Reset the period_freeze flag UPDATE period SET period_freeze=FALSE WHERE (period_id=pPeriodid); -- Post any unposted G/L Transactions into the period FOR _r IN SELECT DISTINCT gltrans_sequence FROM gltrans, accnt, period WHERE ( (gltrans_accnt_id=accnt_id) AND (NOT gltrans_posted) AND (gltrans_date BETWEEN period_start AND period_end) AND (period_id=pPeriodid) ) LOOP PERFORM postIntoTrialBalance(_r.gltrans_sequence); END LOOP; RETURN pPeriodid; END; $_$; 4DROP FUNCTION public.thawaccountingperiod(integer); publicadminfalse8399212551692810thawitemsite(integer)FUNCTIONCREATE FUNCTION thawitemsite(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; _qoh NUMERIC := 0; _netable_qoh NUMERIC := 0; _nonnetable_qoh NUMERIC := 0; _value NUMERIC := 0; _itemlocid INTEGER; _itemloc RECORD; _invhist RECORD; _coarse RECORD; _fine RECORD; BEGIN IF ( SELECT itemsite_freeze FROM itemsite WHERE (itemsite_id=pItemsiteid) ) THEN SELECT invhist_id INTO _invhist FROM invhist WHERE ( (invhist_itemsite_id=pItemsiteid) AND (NOT invhist_posted) ) LIMIT 1; IF (NOT FOUND) THEN UPDATE itemsite SET itemsite_freeze=FALSE WHERE (itemsite_id=pItemsiteid); END IF; -- Run through any invdetail if this itemsite is still MLC and/or Lot/Serial IF ( SELECT ( (itemsite_loccntrl) OR (itemsite_controlmethod IN ('L', 'S')) ) FROM itemsite WHERE (itemsite_id=pItemsiteid) ) THEN -- Grab all of the itemsite/location/lot/serial combinations -- that have unposted detail FOR _coarse IN SELECT DISTINCT invdetail_location_id, invdetail_ls_id, invdetail_expiration, invdetail_warrpurc FROM invhist, invdetail WHERE ( (invdetail_invhist_id=invhist_id) AND (NOT invhist_posted) AND (invhist_itemsite_id=pItemsiteid) ) ORDER BY invdetail_location_id, invdetail_ls_id LOOP -- Cache the initial qty of the itemloc specified by the -- itemsite/location/lot/serial SELECT itemloc_id, itemloc_qty, COALESCE(location_netable, TRUE) AS location_netable INTO _itemloc FROM itemloc LEFT OUTER JOIN location ON (location_id=itemloc_location_id) WHERE ( (itemloc_itemsite_id=pItemsiteid) AND (itemloc_location_id=_coarse.invdetail_location_id) AND (COALESCE(itemloc_ls_id,-1)=COALESCE(_coarse.invdetail_ls_id,-1)) AND (COALESCE(itemloc_expiration,endOfTime())=COALESCE(_coarse.invdetail_expiration,endOfTime())) AND (COALESCE(itemloc_warrpurc,endOfTime())=COALESCE(_coarse.invdetail_warrpurc,endOfTime())) ); -- If the itemloc in question cannot be found, create it IF (NOT FOUND) THEN SELECT NEXTVAL('itemloc_itemloc_id_seq') INTO _itemlocid; INSERT INTO itemloc ( itemloc_id, itemloc_itemsite_id, itemloc_location_id, itemloc_ls_id, itemloc_qty, itemloc_expiration ) VALUES ( _itemlocid, pItemsiteid, _coarse.invdetail_location_id, _coarse.invdetail_ls_id, 0, endOfTime() ); _qoh := 0.0; _netable_qoh := 0.0; _nonnetable_qoh := 0.0; ELSE _itemlocid := _itemloc.itemloc_id; _qoh := _itemloc.itemloc_qty; IF (_itemloc.location_netable) THEN _netable_qoh := _itemloc.itemloc_qty; ELSE _nonnetable_qoh := _itemloc.itemloc_qty; END IF; END IF; -- Now step through each unposted invdetail record for a given -- itemsite/location/lot/serial FOR _fine IN SELECT invdetail_id, invdetail_qty FROM invhist, invdetail WHERE ( (invdetail_invhist_id=invhist_id) AND (NOT invhist_posted) AND (invhist_itemsite_id=pItemsiteid) AND (invdetail_location_id=_coarse.invdetail_location_id) AND (COALESCE(invdetail_ls_id,-1)=COALESCE(_coarse.invdetail_ls_id,-1)) AND (COALESCE(invdetail_expiration,endOfTime())=COALESCE(_coarse.invdetail_expiration,endOfTime())) AND (COALESCE(invdetail_warrpurc,endOfTime())=COALESCE(_coarse.invdetail_warrpurc,endOfTime())) ) ORDER BY invhist_transdate LOOP -- Update the running qoh fields in the detail record UPDATE invdetail SET invdetail_qty_before = _qoh, invdetail_qty_after = (_qoh + invdetail_qty) WHERE (invdetail_id=_fine.invdetail_id); -- Update the running qoh _qoh = (_qoh + _fine.invdetail_qty); IF (_itemloc.location_netable) THEN _netable_qoh := (_netable_qoh + _fine.invdetail_qty); ELSE _nonnetable_qoh := (_nonnetable_qoh + _fine.invdetail_qty); END IF; END LOOP; -- If the running qoh end up at 0, delete the itemloc in question IF (_qoh = 0) THEN DELETE FROM itemloc WHERE (itemloc_id=_itemlocid); -- Otherwise, update the itemloc in question with the resultant qty ELSE UPDATE itemloc SET itemloc_qty=_qoh WHERE (itemloc_id=_itemlocid); END IF; END LOOP; END IF; -- Cache the inital qoh of the itemsite SELECT itemsite_qtyonhand, itemsite_value INTO _qoh, _value FROM itemsite WHERE (itemsite_id=pItemsiteid); -- We have to un-freeze the itemsite before update-ing its QOH -- so that that itemsite trigger won't block the QOH update. -- Also so the invhist trigger won't block the posted update. UPDATE itemsite SET itemsite_freeze=FALSE WHERE (itemsite_id=pItemsiteid); FOR _invhist IN SELECT invhist_id, invhist_qoh_before, invhist_qoh_after, invhist_value_before, invhist_value_after FROM invhist WHERE((invhist_itemsite_id=pItemsiteid) AND (NOT invhist_posted)) ORDER BY invhist_transdate LOOP UPDATE invhist SET invhist_qoh_before = _qoh, invhist_qoh_after = ( _qoh + _invhist.invhist_qoh_after - _invhist.invhist_qoh_before ), invhist_value_before = _value, invhist_value_after = ( _value + _invhist.invhist_value_after - _invhist.invhist_value_before ), invhist_posted = TRUE WHERE (invhist_id=_invhist.invhist_id); _qoh := (_qoh + (_invhist.invhist_qoh_after - _invhist.invhist_qoh_before)); _value := (_value + (_invhist.invhist_value_after - _invhist.invhist_value_before)); END LOOP; -- _qoh can be used for the netable qoh because of the negative NN transactions UPDATE itemsite SET itemsite_qtyonhand = _qoh, itemsite_nnqoh = _nonnetable_qoh, itemsite_value = CASE WHEN ((itemsite_costmethod='A') AND (_value < 0.0)) THEN 0.0 ELSE _value END WHERE(itemsite_id=pItemsiteid); END IF; RETURN pItemsiteid; END; $_$; ,DROP FUNCTION public.thawitemsite(integer); publicadminfalse8399212591692812todoitemTABLECREATE TABLE todoitem ( todoitem_id integer NOT NULL, todoitem_name text NOT NULL, todoitem_description text, todoitem_incdt_id integer, todoitem_creator_username text DEFAULT geteffectivextuser() NOT NULL, todoitem_status character(1), todoitem_active boolean DEFAULT true NOT NULL, todoitem_start_date date, todoitem_due_date date, todoitem_assigned_date date, todoitem_completed_date date, todoitem_seq integer DEFAULT 0 NOT NULL, todoitem_notes text, todoitem_crmacct_id integer, todoitem_ophead_id integer, todoitem_owner_username text, todoitem_priority_id integer, todoitem_username text, todoitem_recurring_todoitem_id integer, todoitem_cntct_id integer ); DROP TABLE public.todoitem; publicadminfalse5946594759488"00TABLE todoitemCOMMENT2COMMENT ON TABLE todoitem IS 'To-Do List items.'; publicadminfalse183"00.COLUMN todoitem.todoitem_recurring_todoitem_idCOMMENTCOMMENT ON COLUMN todoitem.todoitem_recurring_todoitem_id IS 'The first todoitem record in the series if this is a recurring To-Do item. If the todoitem_recurring_todoitem_id is the same as the todoitem_id, this record is the first in the series.'; publicadminfalse183"00todoitemACLREVOKE ALL ON TABLE todoitem FROM PUBLIC; REVOKE ALL ON TABLE todoitem FROM admin; GRANT ALL ON TABLE todoitem TO admin; GRANT ALL ON TABLE todoitem TO xtrole; publicadminfalse18312551692821 todoitem()FUNCTION1CREATE FUNCTION todoitem() RETURNS SETOF todoitem LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _row todoitem%ROWTYPE; _priv TEXT; _grant BOOLEAN; BEGIN -- This query will give us the most permissive privilege the user has been granted SELECT privilege, granted INTO _priv, _grant FROM privgranted WHERE privilege IN ('MaintainAllToDoItems','ViewAllToDoItems','MaintainPersonalToDoItems','ViewPersonalToDoItems') ORDER BY granted DESC, sequence LIMIT 1; -- If have an 'All' privilege return all results IF (_priv ~ 'All' AND _grant) THEN FOR _row IN SELECT * FROM todoitem LOOP RETURN NEXT _row; END LOOP; -- Otherwise if have any other grant, must be personal privilege. ELSIF (_grant) THEN FOR _row IN SELECT * FROM todoitem WHERE getEffectiveXtUser() IN (todoitem_owner_username, todoitem_username) LOOP RETURN NEXT _row; END LOOP; END IF; RETURN; END; $$; !DROP FUNCTION public.todoitem(); publicadminfalse839922744"00FUNCTION todoitem()COMMENTxCOMMENT ON FUNCTION todoitem() IS 'A table function that returns To Do Items results according to privilege settings.'; publicadminfalse203712551692822todoitemmove(integer, integer)FUNCTIONCREATE FUNCTION todoitemmove(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ptodoItemId ALIAS FOR $1; pHowFar ALIAS FOR $2; -- -1 moves toward front of list, +1 toward back _howFar INTEGER := pHowFar; _username TEXT; _currseq INTEGER; BEGIN SELECT todoitem_username, todoitem_seq INTO _username, _currseq FROM todoitem WHERE todoitem_id = ptodoItemId; IF NOT FOUND THEN RETURN -1; END IF; IF (_currseq + pHowFar <= 0) THEN _howFar = 1 - _currseq; -- move to beginning END IF; UPDATE todoitem SET todoitem_seq=todoitem_seq - _howFar WHERE todoitem_seq >= _currseq + _howFar AND todoitem_id != ptodoItemId AND todoitem_username = _username AND todoitem_status != 'C'; UPDATE todoitem SET todoitem_seq=_currseq + _howFar WHERE todoitem_id = ptodoItemId; RETURN 0; END; $_$; 5DROP FUNCTION public.todoitemmove(integer, integer); publicadminfalse8399212551692823todoitemmovedown(integer)FUNCTIONWCREATE FUNCTION todoitemmovedown(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ptodoItemId ALIAS FOR $1; BEGIN RETURN todoItemMove(ptodoItemId, 1); -- move toward end of list END; $_$; 0DROP FUNCTION public.todoitemmovedown(integer); publicadminfalse8399212551692824todoitemmoveup(integer)FUNCTIONWCREATE FUNCTION todoitemmoveup(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ptodoItemId ALIAS FOR $1; BEGIN RETURN todoItemMove(ptodoItemId, -1); -- move toward front of list END; $_$; .DROP FUNCTION public.todoitemmoveup(integer); publicadminfalse8399212551692825,togglebankreccleared(integer, text, integer)FUNCTIONrCREATE FUNCTION togglebankreccleared(integer, text, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ DECLARE pBankrecid ALIAS FOR $1; pSource ALIAS FOR $2; pSourceid ALIAS FOR $3; _cleared BOOLEAN; _r RECORD; BEGIN SELECT bankrecitem_id, bankrecitem_cleared INTO _r FROM bankrecitem WHERE ( (bankrecitem_bankrec_id=pBankrecid) AND (bankrecitem_source=pSource) AND (bankrecitem_source_id=pSourceid) ); IF ( NOT FOUND ) THEN _cleared := TRUE; INSERT INTO bankrecitem (bankrecitem_bankrec_id, bankrecitem_source, bankrecitem_source_id, bankrecitem_cleared) VALUES (pBankrecid, pSource, pSourceid, _cleared); ELSE _cleared := (NOT _r.bankrecitem_cleared); UPDATE bankrecitem SET bankrecitem_cleared=_cleared WHERE (bankrecitem_id=_r.bankrecitem_id); END IF; RETURN _cleared; END; $_$; CDROP FUNCTION public.togglebankreccleared(integer, text, integer); publicadminfalse83992125516928265togglebankreccleared(integer, text, integer, numeric)FUNCTIONCREATE FUNCTION togglebankreccleared(integer, text, integer, numeric) RETURNS boolean LANGUAGE plpgsql AS $_$ DECLARE pBankrecid ALIAS FOR $1; pSource ALIAS FOR $2; pSourceid ALIAS FOR $3; pCurrrate ALIAS FOR $4; _cleared BOOLEAN; _r RECORD; BEGIN SELECT bankrecitem_id, bankrecitem_cleared INTO _r FROM bankrecitem WHERE ( (bankrecitem_bankrec_id=pBankrecid) AND (bankrecitem_source=pSource) AND (bankrecitem_source_id=pSourceid) ); IF ( NOT FOUND ) THEN _cleared := TRUE; INSERT INTO bankrecitem (bankrecitem_bankrec_id, bankrecitem_source, bankrecitem_source_id, bankrecitem_cleared, bankrecitem_curr_rate) VALUES (pBankrecid, pSource, pSourceid, _cleared, pCurrrate); ELSE _cleared := (NOT _r.bankrecitem_cleared); UPDATE bankrecitem SET bankrecitem_cleared=_cleared, bankrecitem_curr_rate=pCurrrate WHERE (bankrecitem_id=_r.bankrecitem_id); END IF; RETURN _cleared; END; $_$; LDROP FUNCTION public.togglebankreccleared(integer, text, integer, numeric); publicadminfalse8399212551692827>togglebankreccleared(integer, text, integer, numeric, numeric)FUNCTIONNCREATE FUNCTION togglebankreccleared(integer, text, integer, numeric, numeric) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBankrecid ALIAS FOR $1; pSource ALIAS FOR $2; pSourceid ALIAS FOR $3; pCurrrate ALIAS FOR $4; pAmount ALIAS FOR $5; _cleared BOOLEAN; _r RECORD; BEGIN SELECT bankrecitem_id, bankrecitem_cleared INTO _r FROM bankrecitem WHERE ( (bankrecitem_bankrec_id=pBankrecid) AND (bankrecitem_source=pSource) AND (bankrecitem_source_id=pSourceid) ); IF ( NOT FOUND ) THEN _cleared := TRUE; INSERT INTO bankrecitem (bankrecitem_bankrec_id, bankrecitem_source, bankrecitem_source_id, bankrecitem_cleared, bankrecitem_curr_rate, bankrecitem_amount) VALUES (pBankrecid, pSource, pSourceid, _cleared, pCurrrate, pAmount); ELSE _cleared := FALSE; DELETE FROM bankrecitem WHERE bankrecitem_id = _r.bankrecitem_id; END IF; RETURN _cleared; END; $_$; UDROP FUNCTION public.togglebankreccleared(integer, text, integer, numeric, numeric); publicadminfalse8399212551692828#togglebomitemcost(integer, boolean)FUNCTIONCREATE FUNCTION togglebomitemcost(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pBomitemid ALIAS FOR $1; pEnabled ALIAS FOR $2; BEGIN IF (pEnabled) THEN INSERT INTO bomitemcost (bomitemcost_bomitem_id, bomitemcost_costelem_id, bomitemcost_lowlevel, bomitemcost_stdcost, bomitemcost_posted, bomitemcost_actcost, bomitemcost_updated, bomitemcost_curr_id) SELECT bomitem_id, itemcost_costelem_id, itemcost_lowlevel, itemcost_stdcost, itemcost_posted, itemcost_actcost, itemcost_updated, itemcost_curr_id FROM bomitem JOIN itemcost ON (itemcost_item_id=bomitem_item_id) WHERE (bomitem_id=pBomitemid); ELSE DELETE FROM bomitemcost WHERE (bomitemcost_bomitem_id=pBomitemid); END IF; RETURN 0; END; $_$; :DROP FUNCTION public.togglebomitemcost(integer, boolean); publicadminfalse8399212551692829tonumeric(text, numeric)FUNCTIONCREATE FUNCTION tonumeric(text, numeric) RETURNS numeric LANGUAGE plpgsql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pText ALIAS FOR $1; pDefault ALIAS FOR $2; BEGIN IF (isNumeric(pText)) THEN RETURN TO_NUMBER(pText, '999999999999'); ELSE RETURN pDefault; END IF; END; $_$; /DROP FUNCTION public.tonumeric(text, numeric); publicadminfalse8399212551692830 transitwhs()FUNCTIONnCREATE FUNCTION transitwhs() RETURNS integer LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _id INTEGER; BEGIN _id = fetchMetricValue('TransitWarehouse'); IF (_id IS NOT NULL AND EXISTS(SELECT warehous_id FROM whsinfo WHERE (warehous_id=_id)) ) THEN RETURN _id; END IF; SELECT warehous_id INTO _id FROM whsinfo WHERE warehous_transit; IF (NOT FOUND) THEN _id := NEXTVAL('warehous_warehous_id_seq'); INSERT INTO whsinfo ( warehous_id, warehous_code, warehous_descrip, --warehous_fob, warehous_active, --warehous_counttag_prefix, --warehous_counttag_number, --warehous_bol_prefix, --warehous_bol_number, warehous_shipping, warehous_useslips, warehous_usezones, --warehous_aislesize, --warehous_aislealpha, --warehous_racksize, --warehous_rackalpha, --warehous_binsize, --warehous_binalpha, --warehous_locationsize, --warehous_locationalpha, warehous_enforcearbl, warehous_default_accnt_id, --warehous_shipping_commission, --warehous_cntct_id, --warehous_addr_id, warehous_taxzone_id ) VALUES ( _id, 'TRANSIT', 'Intermediate Warehouse for Inter-Warehouse Transfers', --text, TRUE, --text, --integer, --text, --integer, TRUE, FALSE, FALSE, --integer, --boolean, --integer, --boolean, --integer, --boolean, --integer, --boolean, FALSE, fetchMetricValue('UnassignedAccount'), --numeric(8,4) default 0.00, --integer, --integer, NULL ); END IF; PERFORM setMetric('TransitWarehouse', _id); RETURN _id; END; $$; #DROP FUNCTION public.transitwhs(); publicadminfalse8399212551692831transtype(text, integer)FUNCTIONCREATE FUNCTION transtype(text, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTransType ALIAS FOR $1; pTargetType ALIAS FOR $2; BEGIN IF (pTargetType = 255) THEN RETURN TRUE; ELSIF (pTargetType = 1) THEN RETURN receipts(pTransType); ELSIF (pTargetType = 2) THEN RETURN issues(pTransType); ELSIF (pTargetType = 4) THEN RETURN shipments(pTransType); ELSIF (pTargetType = 8) THEN RETURN adjustments(pTransType); ELSIF (pTargetType = 16) THEN RETURN transfers(pTransType); ELSIF (pTargetType = 32) THEN RETURN scraps(pTransType); ELSE RETURN TRUE; END IF; END; $_$; /DROP FUNCTION public.transtype(text, integer); publicadminfalse8399212551692832trylock(integer, integer)FUNCTIONCREATE FUNCTION trylock(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pKey1 ALIAS FOR $1; pKey2 ALIAS FOR $2; _pid integer; BEGIN /* The standard try lock ignores locks made by the current user in same session. Check for ANY lock on this id, whether by this user or not */ SELECT pid INTO _pid FROM pg_locks WHERE ((classid=pKey1) AND (objid=pKey2) AND (objsubid=2)); IF (FOUND) THEN RETURN false; ELSE RETURN pg_try_advisory_lock(pKey1,pKey2); END IF; END; $_$; 0DROP FUNCTION public.trylock(integer, integer); publicadminfalse8399212551692833undomerge(text, text, integer)FUNCTIONfCREATE FUNCTION undomerge(text, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSchema ALIAS FOR $1; pTable ALIAS FOR $2; pId ALIAS FOR $3; _qry TEXT; _r RECORD; _result INTEGER; BEGIN FOR _r IN SELECT * FROM mrgundo WHERE mrgundo_base_schema = pSchema AND mrgundo_base_table = pTable AND mrgundo_base_id = pId AND mrgundo_col IS NOT NULL -- NULL mrgundo_col signals a row to delete on purge LOOP IF (_r.mrgundo_value IS NULL) THEN _qry := 'UPDATE ' || quote_ident(_r.mrgundo_schema) || '.' || quote_ident(_r.mrgundo_table) || ' SET ' || quote_ident(_r.mrgundo_col) || '= NULL WHERE (' || _r.mrgundo_pkey_col || '=' || _r.mrgundo_pkey_id || ');'; ELSE _qry := 'UPDATE ' || quote_ident(_r.mrgundo_schema) || '.' || quote_ident(_r.mrgundo_table) || ' SET ' || quote_ident(_r.mrgundo_col) || '= CAST(' || quote_literal(_r.mrgundo_value) || ' AS ' || quote_ident(_r.mrgundo_type) || ') WHERE (' || _r.mrgundo_pkey_col || '=' || _r.mrgundo_pkey_id || ');'; END IF; EXECUTE _qry; END LOOP; DELETE FROM mrgundo WHERE mrgundo_base_schema = pSchema AND mrgundo_base_table = pTable AND mrgundo_base_id = pId; GET DIAGNOSTICS _result = ROW_COUNT; RETURN _result; END; $_$; 5DROP FUNCTION public.undomerge(text, text, integer); publicadminfalse8399212551692834uomusedforitem(integer)FUNCTION CREATE FUNCTION uomusedforitem(integer) RETURNS SETOF uom LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pitemid ALIAS FOR $1; _row uom%ROWTYPE; BEGIN FOR _row IN SELECT DISTINCT * FROM uom WHERE uom_id IN ( SELECT bomitem_uom_id AS uom_id FROM bomitem WHERE (bomitem_item_id=pitemid) UNION SELECT cmitem_qty_uom_id FROM cmitem, itemsite WHERE ((cmitem_itemsite_id=itemsite_id) AND (itemsite_item_id=pitemid)) UNION SELECT cmitem_price_uom_id FROM cmitem, itemsite WHERE ((cmitem_itemsite_id=itemsite_id) AND (itemsite_item_id=pitemid)) UNION SELECT coitem_qty_uom_id FROM coitem, itemsite WHERE ((coitem_itemsite_id=itemsite_id) AND (itemsite_item_id=pitemid)) UNION SELECT coitem_price_uom_id FROM coitem, itemsite WHERE ((coitem_itemsite_id=itemsite_id) AND (itemsite_item_id=pitemid)) UNION SELECT invcitem_qty_uom_id FROM invcitem WHERE ((invcitem_item_id=pitemid)) UNION SELECT invcitem_price_uom_id FROM invcitem WHERE ((invcitem_item_id=pitemid)) UNION SELECT ipsitem_qty_uom_id FROM ipsiteminfo WHERE (ipsitem_item_id=pitemid) UNION SELECT ipsitem_price_uom_id FROM ipsiteminfo WHERE (ipsitem_item_id=pitemid) UNION SELECT quitem_qty_uom_id FROM quitem, itemsite WHERE ((quitem_itemsite_id=itemsite_id) AND (itemsite_item_id=pitemid)) UNION SELECT quitem_price_uom_id FROM quitem, itemsite WHERE ((quitem_itemsite_id=itemsite_id) AND (itemsite_item_id=pitemid)) UNION SELECT womatl_uom_id FROM womatl, itemsite WHERE ((womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=pitemid)) ) LOOP RETURN NEXT _row; END LOOP; IF (fetchmetricbool('MultiWhs')) THEN FOR _row IN SELECT DISTINCT * FROM uom WHERE uom_id IN ( SELECT rahist_uom_id FROM rahist, itemsite WHERE ((rahist_itemsite_id=itemsite_id) AND (itemsite_item_id=pitemid)) ) LOOP RETURN NEXT _row; END LOOP; END IF; RETURN; END; $_$; .DROP FUNCTION public.uomusedforitem(integer); publicadminfalse839922700125516928352updateabcclass(text, numeric, numeric, date, date)FUNCTION"CREATE FUNCTION updateabcclass(text, numeric, numeric, date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pClassCodePattern ALIAS FOR $1; pACutoff ALIAS FOR $2; pBCutoff ALIAS FOR $3; pStartDate ALIAS FOR $4; pEndDate ALIAS FOR $5; _result INTEGER; BEGIN SELECT updateABCClass(pClassCodePattern, -1, pACutoff, pBCutoff, pStartDate, pEndDate) INTO _result; RETURN _result; END; $_$; IDROP FUNCTION public.updateabcclass(text, numeric, numeric, date, date); publicadminfalse8399212551692836;updateabcclass(text, integer, numeric, numeric, date, date)FUNCTIONNCREATE FUNCTION updateabcclass(text, integer, numeric, numeric, date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pClassCodePattern ALIAS FOR $1; pWarehousid ALIAS FOR $2; pACutoff ALIAS FOR $3; pBCutoff ALIAS FOR $4; pStartDate ALIAS FOR $5; pEndDate ALIAS FOR $6; _updateCount INTEGER; _totalValue NUMERIC; _cumulativeValue NUMERIC; _itemsite RECORD; BEGIN SELECT COUNT(*) INTO _updateCount FROM itemsite, item, classcode WHERE ( (itemsite_item_id=item_id) AND (item_classcode_id=classcode_id) AND (itemsite_autoabcclass) AND (classcode_code ~ pClassCodePattern) AND ((itemsite_warehous_id=pWarehousid) OR (pWarehousid=-1)) ); IF (_updateCount IS NULL) THEN RETURN 0; ELSE UPDATE itemsite SET itemsite_abcclass='T' FROM item, classcode WHERE ( (itemsite_item_id=item_id) AND (item_classcode_id=classcode_id) AND (itemsite_autoabcclass) AND (classcode_code ~ pClassCodePattern) AND ((itemsite_warehous_id=pWarehousid) OR (pWarehousid=-1)) ); SELECT SUM(ABS(invhist_qoh_before - invhist_qoh_after) * invhist_unitcost) INTO _totalValue FROM invhist, itemsite, item, classcode WHERE ( (invhist_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_classcode_id=classcode_id) AND (invhist_analyze) AND (invhist_transtype ~ '^[IR]') AND (itemsite_autoabcclass) AND (classcode_code ~ pClassCodePattern) AND (invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND ((itemsite_warehous_id=pWarehousid) OR (pWarehousid=-1)) ); IF ( (_totalValue IS NULL) OR (_totalValue = 0) ) THEN UPDATE itemsite SET itemsite_abcclass='A' WHERE (itemsite_abcclass='T'); ELSE _cumulativeValue := 0; FOR _itemsite IN SELECT itemsite_id, item_number, SUM(ABS(invhist_qoh_before - invhist_qoh_after) * invhist_unitcost) AS value FROM invhist, itemsite, item, classcode WHERE ( (invhist_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_classcode_id=classcode_id) AND (invhist_analyze) AND (invhist_transtype ~ '^[IR]') AND (itemsite_autoabcclass) AND (classcode_code ~ pClassCodePattern) AND (invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND ((itemsite_warehous_id=pWarehousid) OR (pWarehousid=-1)) ) GROUP BY itemsite_id, item_number ORDER BY value DESC LOOP IF (_itemsite.value IS NOT NULL) THEN _cumulativeValue := _cumulativeValue + _itemsite.value; END IF; IF ((_cumulativeValue / _totalValue) <= pACutoff) THEN UPDATE itemsite SET itemsite_abcclass='A' WHERE (itemsite_id=_itemsite.itemsite_id); ELSE IF ((_cumulativeValue / _totalValue) <= pBCutoff) THEN UPDATE itemsite SET itemsite_abcclass='B' WHERE (itemsite_id=_itemsite.itemsite_id); ELSE UPDATE itemsite SET itemsite_abcclass='C' WHERE (itemsite_id=_itemsite.itemsite_id); END IF; END IF; END LOOP; UPDATE itemsite SET itemsite_abcclass='C' WHERE (itemsite_abcclass='T'); END IF; END IF; RETURN _updateCount; END; $_$; RDROP FUNCTION public.updateabcclass(text, integer, numeric, numeric, date, date); publicadminfalse83992125516928375updateabcclass(integer, numeric, numeric, date, date)FUNCTIONCREATE FUNCTION updateabcclass(integer, numeric, numeric, date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pClasscodeid ALIAS FOR $1; pACutoff ALIAS FOR $2; pBCutoff ALIAS FOR $3; pStartDate ALIAS FOR $4; pEndDate ALIAS FOR $5; _result INTEGER; BEGIN SELECT updateABCClass(pClassCodeid, -1, pACutoff, pBCutoff, pStartDate, pEndDate) INTO _result; RETURN _result; END; $_$; LDROP FUNCTION public.updateabcclass(integer, numeric, numeric, date, date); publicadminfalse8399212551692838>updateabcclass(integer, integer, numeric, numeric, date, date)FUNCTION' CREATE FUNCTION updateabcclass(integer, integer, numeric, numeric, date, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pClasscodeid ALIAS FOR $1; pWarehousid ALIAS FOR $2; pACutoff ALIAS FOR $3; pBCutoff ALIAS FOR $4; pStartDate ALIAS FOR $5; pEndDate ALIAS FOR $6; _updateCount INTEGER; _totalValue NUMERIC; _cumulativeValue NUMERIC; _itemsite RECORD; BEGIN SELECT COUNT(*) INTO _updateCount FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND ((item_classcode_id=pClasscodeid) OR (pClasscodeid=-1)) AND ((itemsite_warehous_id=pWarehousid) OR (pWarehousid=-1)) ); IF (_updateCount IS NULL) THEN _updateCount := 0; ELSE UPDATE itemsite SET itemsite_abcclass='T' FROM item WHERE ( (itemsite_item_id=item_id) AND ((item_classcode_id=pClasscodeid) OR (pClasscodeid=-1)) AND ((itemsite_warehous_id=pWarehousid) OR (pWarehousid=-1)) ); SELECT SUM(ABS(invhist_qoh_before - invhist_qoh_after) * invhist_unitcost) INTO _totalValue FROM invhist, itemsite, item WHERE ( (invhist_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (invhist_analyze) AND (invhist_transtype ~ '^[IR]') AND ((item_classcode_id=pClasscodeid) OR (pClasscodeid=-1)) AND (invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND ((itemsite_warehous_id=pWarehousid) OR (pWarehousid=-1)) ); IF ( (_totalValue IS NULL) OR (_totalValue = 0) ) THEN UPDATE itemsite SET itemsite_abcclass='A' WHERE (itemsite_abcclass='T'); ELSE _cumulativeValue := 0; FOR _itemsite IN SELECT itemsite_id, item_number, SUM(ABS(invhist_qoh_before - invhist_qoh_after) * invhist_unitcost) AS value FROM invhist, itemsite, item WHERE ( (invhist_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (invhist_analyze) AND (invhist_transtype ~ '^[IR]') AND ((item_classcode_id=pClasscodeid) OR (pClasscodeid=-1)) AND (invhist_transdate::DATE BETWEEN pStartDate AND pEndDate) AND ((itemsite_warehous_id=pWarehousid) OR (pWarehousid=-1)) ) GROUP BY itemsite_id, item_number ORDER BY value DESC LOOP IF (_itemsite.value IS NOT NULL) THEN _cumulativeValue := _cumulativeValue + _itemsite.value; END IF; IF ((_cumulativeValue / _totalValue) <= pACutoff) THEN UPDATE itemsite SET itemsite_abcclass='A' WHERE (itemsite_id=_itemsite.itemsite_id); ELSE IF ((_cumulativeValue / _totalValue) <= pBCutoff) THEN UPDATE itemsite SET itemsite_abcclass='B' WHERE (itemsite_id=_itemsite.itemsite_id); ELSE UPDATE itemsite SET itemsite_abcclass='C' WHERE (itemsite_id=_itemsite.itemsite_id); END IF; END IF; END LOOP; UPDATE itemsite SET itemsite_abcclass='C' WHERE (itemsite_abcclass='T'); END IF; END IF; RETURN _updateCount; END; $_$; UDROP FUNCTION public.updateabcclass(integer, integer, numeric, numeric, date, date); publicadminfalse83992>125516928392updatecharassignment(text, integer, integer, text)FUNCTIONCREATE FUNCTION updatecharassignment(text, integer, integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTargetType ALIAS FOR $1; pTargetId ALIAS FOR $2; pCharId ALIAS FOR $3; pValue ALIAS FOR $4; _charassid INTEGER; BEGIN SELECT updateCharAssignment(pTargetType, pTargetId, pCharId, pValue, 0) INTO _charassid; RETURN _charassid; END; $_$; IDROP FUNCTION public.updatecharassignment(text, integer, integer, text); publicadminfalse8399212551692840;updatecharassignment(text, integer, integer, text, numeric)FUNCTIONLCREATE FUNCTION updatecharassignment(text, integer, integer, text, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTargetType ALIAS FOR $1; pTargetId ALIAS FOR $2; pCharId ALIAS FOR $3; pValue ALIAS FOR $4; pPrice ALIAS FOR $5; _charassid INTEGER; _charassprice NUMERIC; _explodedJob BOOLEAN = FALSE; _value TEXT; BEGIN -- Check for Valid Assignment IF (pTargetType='SI') THEN SELECT (item_config AND wo_status != 'O') INTO _explodedJob FROM coitem,itemsite,item,wo WHERE ((coitem_id=pTargetId) AND (itemsite_id=coitem_itemsite_id) AND (item_id=itemsite_item_id) AND (wo_ordtype='S') AND (wo_ordid=coitem_id)); END IF; SELECT charass_id,charass_value INTO _charassid, _value FROM charass WHERE ((charass_target_type=pTargetType) AND (charass_target_id=pTargetId) AND (charass_char_id=pCharId) ) LIMIT 1; IF (FOUND) THEN IF (_explodedJob AND pValue != _value) THEN RAISE EXCEPTION 'Characteristic may not be updated for Configured Item with exploded Work Order.'; ELSIF(COALESCE(pValue, '')!='') THEN UPDATE charass SET charass_value = pValue, charass_price = pPrice WHERE (charass_id=_charassid); ELSE DELETE FROM charass WHERE (charass_id=_charassid); _charassid := 0; END IF; ELSE IF ( (_explodedJob) AND (COALESCE(pValue, '')!='') ) THEN RAISE EXCEPTION 'Characteristics may not be updated for Configured Item with exploded Work Order.'; ELSIF(COALESCE(pValue, '')!='') THEN SELECT nextval('charass_charass_id_seq') INTO _charassid; INSERT INTO charass (charass_id, charass_target_type, charass_target_id, charass_char_id, charass_value, charass_price) VALUES(_charassid, pTargetType, pTargetId, pCharId, pValue, pPrice); ELSE _charassid := 0; END IF; END IF; RETURN _charassid; END; $_$; RDROP FUNCTION public.updatecharassignment(text, integer, integer, text, numeric); publicadminfalse8399212551692841updatecost(integer, numeric)FUNCTION_CREATE FUNCTION updatecost(integer, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemcostid ALIAS FOR $1; pCost ALIAS FOR $2; BEGIN RETURN updateCost(pItemcostid, pCost, baseCurrId()); END; $_$; 3DROP FUNCTION public.updatecost(integer, numeric); publicadminfalse83992?12551692842+updatecost(integer, text, boolean, numeric)FUNCTIONpCREATE FUNCTION updatecost(integer, text, boolean, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE returnVal INTEGER; BEGIN SELECT updateCost($1, $2, $3, $4, baseCurrId()) INTO returnVal; RETURN returnVal; END; $_$; BDROP FUNCTION public.updatecost(integer, text, boolean, numeric); publicadminfalse83992 12551692843.updatecost(integer, integer, boolean, numeric)FUNCTIONsCREATE FUNCTION updatecost(integer, integer, boolean, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE returnVal INTEGER; BEGIN SELECT updateCost($1, $2, $3, $4, baseCurrId()) INTO returnVal; RETURN returnVal; END; $_$; EDROP FUNCTION public.updatecost(integer, integer, boolean, numeric); publicadminfalse8399212551692844%updatecost(integer, numeric, integer)FUNCTIONCREATE FUNCTION updatecost(integer, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemcostid ALIAS FOR $1; pCost ALIAS FOR $2; pCurrId ALIAS FOR $3; BEGIN IF ( ( SELECT (itemcost_stdcost > 0) FROM itemcost WHERE (itemcost_id=pItemcostid) ) OR (pCost > 0) ) THEN UPDATE itemcost SET itemcost_actcost=pCost, itemcost_updated=CURRENT_DATE, itemcost_curr_id=pCurrId WHERE (itemcost_id=pItemcostid); RETURN pItemcostid; ELSE DELETE FROM itemcost WHERE (itemcost_id=pItemcostid); RETURN -1; END IF; END; $_$; <DROP FUNCTION public.updatecost(integer, numeric, integer); publicadminfalse83992 125516928454updatecost(integer, text, boolean, numeric, integer)FUNCTIONCREATE FUNCTION updatecost(integer, text, boolean, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCosttype ALIAS FOR $2; pLevel ALIAS FOR $3; pCost ALIAS FOR $4; pCurrid ALIAS FOR $5; _cost NUMERIC; _currId INTEGER; _p RECORD; _itemcostid INTEGER; BEGIN IF (pCost IS NULL) THEN _cost = 0; ELSE _cost = pCost; END IF; IF (pCurrId IS NULL) THEN _currId := baseCurrID(); ELSE _currId := pCurrId; END IF; SELECT itemcost_id, itemcost_stdcost INTO _p FROM itemcost, costelem WHERE ( (itemcost_costelem_id=costelem_id) AND (itemcost_item_id=pItemid) AND (itemcost_lowlevel=pLevel) AND (costelem_type=pCosttype) ); IF (NOT FOUND) THEN IF (_cost > 0) THEN SELECT NEXTVAL('itemcost_itemcost_id_seq') INTO _itemcostid; INSERT INTO itemcost ( itemcost_id, itemcost_item_id, itemcost_costelem_id, itemcost_lowlevel, itemcost_stdcost, itemcost_posted, itemcost_actcost, itemcost_updated, itemcost_curr_id ) SELECT _itemcostid, pItemid, costelem_id, pLevel, 0, startOfTime(), _cost, CURRENT_DATE, _currId FROM costelem WHERE (costelem_type=pCosttype); RETURN _itemcostid; ELSE RETURN -1; END IF; ELSIF ( (_p.itemcost_stdcost > 0) OR (_cost > 0) ) THEN UPDATE itemcost SET itemcost_actcost=_cost, itemcost_curr_id = _currId, itemcost_updated=CURRENT_DATE WHERE (itemcost_id=_p.itemcost_id); RETURN _p.itemcost_id; ELSE DELETE FROM itemcost WHERE (itemcost_id=_p.itemcost_id); RETURN -1; END IF; END; $_$; KDROP FUNCTION public.updatecost(integer, text, boolean, numeric, integer); publicadminfalse83992 125516928467updatecost(integer, integer, boolean, numeric, integer)FUNCTIONCREATE FUNCTION updatecost(integer, integer, boolean, numeric, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCostelemid ALIAS FOR $2; pLevel ALIAS FOR $3; pCost ALIAS FOR $4; pCurrid ALIAS FOR $5; _cost NUMERIC; _currId INTEGER; _p RECORD; _itemcostid INTEGER; BEGIN IF (pCost IS NULL) THEN _cost = 0; ELSE _cost = pCost; END IF; IF (pCurrId IS NULL) THEN _currId := baseCurrID(); ELSE _currId := pCurrId; END IF; SELECT itemcost_id, itemcost_stdcost INTO _p FROM itemcost WHERE ((itemcost_costelem_id=pCostelemid) AND (itemcost_item_id=pItemid) AND (itemcost_lowlevel=pLevel) ); IF (NOT FOUND) THEN IF (_cost > 0) THEN SELECT NEXTVAL('itemcost_itemcost_id_seq') INTO _itemcostid; INSERT INTO itemcost ( itemcost_id, itemcost_item_id, itemcost_costelem_id, itemcost_lowlevel, itemcost_stdcost, itemcost_posted, itemcost_actcost, itemcost_updated, itemcost_curr_id ) SELECT _itemcostid, pItemid, costelem_id, pLevel, 0, startOfTime(), _cost, CURRENT_DATE, _currId FROM costelem WHERE (costelem_id=pCostelemid); RETURN _itemcostid; ELSE RETURN -1; END IF; ELSIF ( (_p.itemcost_stdcost > 0) OR (_cost > 0) ) THEN UPDATE itemcost SET itemcost_actcost=_cost, itemcost_curr_id = _currId, itemcost_updated=CURRENT_DATE WHERE (itemcost_id=_p.itemcost_id); RETURN _p.itemcost_id; ELSE DELETE FROM itemcost WHERE (itemcost_id=_p.itemcost_id); RETURN -1; END IF; END; $_$; NDROP FUNCTION public.updatecost(integer, integer, boolean, numeric, integer); publicadminfalse8399212552008797<updatecreditmemoline(api.creditmemoline, api.creditmemoline)FUNCTIONh CREATE FUNCTION updatecreditmemoline(api.creditmemoline, api.creditmemoline) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNew ALIAS FOR $1; pOld ALIAS FOR $2; _check INTEGER; _r RECORD; BEGIN SELECT cmitem_id INTO _check FROM cmitem WHERE ( (cmitem_cmhead_id=getCmheadId(pOld.memo_number, FALSE)) AND (cmitem_linenumber=pOld.line_number) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Credit Memo # % Line Number # not found', pOld.memo_number, pOld.line_number; END IF; UPDATE cmitem SET cmitem_itemsite_id=COALESCE(itemsite_id, -1), cmitem_qtycredit=pNew.qty_to_credit, cmitem_qtyreturned=pNew.qty_returned, cmitem_unitprice=pNew.net_unit_price, cmitem_comments=pNew.notes, cmitem_rsncode_id=getRsnId(pNew.reason_code), cmitem_taxtype_id=taxtype_id, cmitem_qty_uom_id=COALESCE(getUomId(pNew.qty_uom), item_inv_uom_id), cmitem_qty_invuomratio=CASE WHEN item_id IS NOT NULL THEN itemuomtouomratio(item_id, COALESCE(getUomId(pNew.qty_uom),item_inv_uom_id),item_inv_uom_id) ELSE 1 END, cmitem_price_uom_id=COALESCE(getUomId(pNew.price_uom),item_price_uom_id), cmitem_price_invuomratio=CASE WHEN item_id IS NOT NULL THEN itemuomtouomratio(item_id, COALESCE(getUomId(pNew.price_uom),item_price_uom_id),item_price_uom_id) ELSE 1 END FROM cmhead LEFT OUTER JOIN item ON (item_id=getItemId(pNew.item_number)) LEFT OUTER JOIN itemsite ON (itemsite_item_id=item_id AND itemsite_warehous_id=getWarehousId(pNew.recv_site, 'ALL')) LEFT OUTER JOIN taxtype ON (taxtype_id=CASE WHEN pNew.tax_type IS NULL THEN getItemTaxType(item_id,cmhead_taxzone_id) WHEN pNew.tax_type = 'None' THEN NULL ELSE getTaxTypeId(pNew.tax_type) END) WHERE cmitem_cmhead_id=cmhead_id AND cmhead_number=pOld.memo_number AND cmitem_linenumber=pOld.line_number AND cmhead_posted=FALSE; RETURN TRUE; END; $_$; SDROP FUNCTION public.updatecreditmemoline(api.creditmemoline, api.creditmemoline); publicadminfalse8399227982798 12551692848updatecustomprivs()FUNCTIONCREATE FUNCTION updatecustomprivs() RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; BEGIN FOR _r IN SELECT priv_id FROM priv WHERE ((priv_name IN (SELECT priv_name FROM priv WHERE (priv_module='Custom') EXCEPT SELECT ('Custom'||cmd_privname) FROM cmd)) AND (priv_module='Custom')) LOOP -- TODO: something here DELETE FROM grppriv WHERE grppriv_priv_id=_r.priv_id; DELETE FROM usrpriv WHERE usrpriv_priv_id=_r.priv_id; DELETE FROM priv WHERE priv_id=_r.priv_id; END LOOP; FOR _r IN SELECT ('Custom'||cmd_privname) AS privname FROM cmd EXCEPT SELECT priv_name FROM priv WHERE (priv_module='Custom') LOOP -- TODO: something here INSERT INTO priv (priv_module, priv_name, priv_descrip) VALUES ('Custom', _r.privname, 'Auto Generated Custom Priv.'); END LOOP; RETURN TRUE; END; $$; *DROP FUNCTION public.updatecustomprivs(); publicadminfalse83992125520089757updateinvoicelineitem(api.invoiceline, api.invoiceline)FUNCTION CREATE FUNCTION updateinvoicelineitem(api.invoiceline, api.invoiceline) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pNew ALIAS FOR $1; pOld ALIAS FOR $2; _r RECORD; BEGIN UPDATE invcitem SET invcitem_linenumber=pNew.line_number, invcitem_item_id=COALESCE(item_id, -1), invcitem_custpn=pNew.customer_part_number, invcitem_number=(CASE WHEN item_id IS NULL THEN pNew.misc_item_number ELSE NULL END), invcitem_warehous_id=(CASE WHEN invcitem_warehous_id IS NULL THEN COALESCE(getwarehousid(pNew.site,'ALL'),-1) ELSE NULL END), invcitem_descrip=(CASE WHEN item_id IS NULL THEN pNew.misc_item_description ELSE NULL END), invcitem_ordered=pNew.qty_ordered, invcitem_billed=COALESCE(pNew.qty_billed, 0), invcitem_updateinv=COALESCE(pNew.update_inventory,FALSE), invcitem_price=COALESCE(pNew.net_unit_price,itemPrice(item_id,invchead_cust_id, invchead_shipto_id,pNew.qty_ordered,invchead_curr_id,invchead_orderdate)), invcitem_notes=COALESCE(pNew.notes,''), invcitem_salescat_id=CASE WHEN item_id IS NULL THEN (SELECT salescat_id FROM salescat WHERE salescat_name = pNew.sales_category) ELSE NULL END, invcitem_taxtype_id=taxtype_id, invcitem_qty_uom_id=CASE WHEN item_id IS NOT NULL THEN COALESCE((SELECT uom_id FROM uom WHERE (uom_name=pNew.qty_uom)), item_price_uom_id) ELSE NULL END, invcitem_qty_invuomratio=CASE WHEN item_id IS NOT NULL THEN itemuomtouomratio(item_id, COALESCE((SELECT uom_id FROM uom WHERE uom_name=pNew.qty_uom),item_price_uom_id), item_price_uom_id ) ELSE 1 END, invcitem_price_uom_id=CASE WHEN item_id IS NOT NULL THEN COALESCE((SELECT uom_id FROM uom WHERE uom_name=pNew.price_uom),item_price_uom_id) ELSE NULL END, invcitem_price_invuomratio=CASE WHEN item_id IS NOT NULL THEN itemuomtouomratio(item_id, COALESCE((SELECT uom_id FROM uom WHERE uom_name=pNew.price_uom),item_price_uom_id), item_price_uom_id ) ELSE 1 END, invcitem_rev_accnt_id=getGlAccntId(alternate_rev_account) FROM invchead LEFT OUTER JOIN item ON (item_id=getItemId(pNew.item_number)) LEFT OUTER JOIN taxtype ON (taxtype_id=CASE WHEN pNew.tax_type IS NULL THEN getItemTaxType(item_id,invchead_taxzone_id) WHEN pNew.tax_type = 'None' THEN NULL ELSE (SELECT taxtype_id FROM taxtype WHERE taxtype_name=pNew.tax_type) END) WHERE invcitem_invchead_id=invchead_id AND invcitem_linenumber=pOld.line_number AND invchead_invcnumber=pOld.invoice_number AND invchead_posted=FALSE; RETURN TRUE; END; $_$; NDROP FUNCTION public.updateinvoicelineitem(api.invoiceline, api.invoiceline); publicadminfalse2891839922891 12551692850;updateitemcost(integer, integer, integer, numeric, boolean)FUNCTIONCREATE FUNCTION updateitemcost(integer, integer, integer, numeric, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemId ALIAS FOR $1; pCostElemId ALIAS FOR $2; pCurrId ALIAS FOR $3; pCost ALIAS FOR $4; pPostToStandard ALIAS FOR $5; _itemcost_id INTEGER; _update_return INTEGER; _postcost_return BOOLEAN; --This function is used with the api.itemcost View for updating --the itemcost table BEGIN SELECT itemcost_id INTO _itemcost_id FROM itemcost WHERE ( (itemcost_item_id = pItemId) AND (itemcost_costelem_id = pCostElemId) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'itemcost % not found for. ', pItemId || ' & ' || pCostElemId; END IF; IF (pCost IS NULL OR pCost < 0) THEN RAISE EXCEPTION 'itemcost Actual Cost Invalid ', pCost; END IF; IF (pCost > 0) THEN UPDATE itemcost SET itemcost_actcost=pCost, itemcost_curr_id = pCurrId WHERE (itemcost_id=_itemcost_id); --Only Post Cost to standard if the parameter is set to true IF (pPostToStandard) THEN IF (NOT checkPrivilege('PostStandardCosts')) THEN RAISE EXCEPTION 'You do not have privileges to poststandard itemcosts. Set api.itemcost post_to_standard to false'; END IF; SELECT postcost(_itemcost_id) INTO _postcost_return; IF (NOT _postcost_return) THEN RETURN -2; END IF; END IF; ELSE RETURN -1; END IF; RETURN _itemcost_id; END; $_$; RDROP FUNCTION public.updateitemcost(integer, integer, integer, numeric, boolean); publicadminfalse8399212551692851(updateitemsiteleadtime(integer, integer)FUNCTION*CREATE FUNCTION updateitemsiteleadtime(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pPad ALIAS FOR $2; _p RECORD; _materialLeadTime INTEGER; _productionLeadTime INTEGER; _leadTime INTEGER; BEGIN SELECT item_type, itemsite_wosupply INTO _p FROM item, itemsite WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pitemsiteid) ); IF ( (_p.item_type IN ('M', 'P')) ) THEN IF (_p.item_type = 'M') THEN SELECT COALESCE(MAX(component.itemsite_leadtime), 0) INTO _materialLeadTime FROM bomitem, itemsite AS parent, itemsite AS component WHERE ( (bomitem_parent_item_id=parent.itemsite_item_id) AND (bomitem_rev_id=getActiveRevId('BOM',bomitem_parent_item_id)) AND (bomitem_item_id=component.itemsite_item_id) AND (parent.itemsite_warehous_id=component.itemsite_warehous_id) AND (parent.itemsite_id=pItemsiteid) ); SELECT COALESCE(MAX(booitem_execday), 0) INTO _productionLeadTime FROM xtmfg.booitem, itemsite WHERE ( (booitem_item_id=itemsite_item_id) AND (booitem_rev_id=getActiveRevId('BOO',booitem_item_id)) AND (itemsite_id=pItemsiteid) ); _leadTime := (_materialLeadTime + _productionLeadTime + pPad); ELSIF (_p.item_type IN ('P')) THEN SELECT COALESCE(MAX(itemsrc_leadtime), 0) INTO _leadTime FROM itemsrc, itemsite WHERE ( (itemsite_item_id=itemsrc_item_id) AND (itemsite_id=pItemsiteid) ); _leadTime := (_leadTime + pPad); END IF; ELSE _leadTime = pPad; END IF; UPDATE itemsite SET itemsite_leadtime=_leadTime WHERE (itemsite_id=pItemsiteid); RETURN _leadTime; END; $_$; ?DROP FUNCTION public.updateitemsiteleadtime(integer, integer); publicadminfalse8399212551692852!updatelistprice(integer, numeric)FUNCTIONCREATE FUNCTION updatelistprice(integer, numeric) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pUpdateBy ALIAS FOR $2; BEGIN UPDATE item SET item_listprice = (item_listprice * pUpdateBy) WHERE (item_id=pItemid); RETURN 1; END; $_$; 8DROP FUNCTION public.updatelistprice(integer, numeric); publicadminfalse83992E12551692853updatelowerusercosts(integer)FUNCTION?CREATE FUNCTION updatelowerusercosts(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; BEGIN RETURN updateLowerUserCosts(pItemid, TRUE); END; $_$; 4DROP FUNCTION public.updatelowerusercosts(integer); publicadminfalse8399212551692854&updatelowerusercosts(integer, boolean)FUNCTION= CREATE FUNCTION updatelowerusercosts(integer, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pUpdateActual ALIAS FOR $2; _bomitem RECORD; _type CHAR(1); BEGIN SELECT item_type INTO _type FROM item WHERE (item_id=pItemid); IF (_type IN ('M', 'F', 'B', 'T')) THEN FOR _bomitem IN SELECT DISTINCT costelem_type FROM ( SELECT COALESCE(bc.costelem_type, ic.costelem_type) AS costelem_type FROM bomitem(pItemid) JOIN item ON (item_id=bomitem_item_id AND item_type <> 'T') JOIN itemcost ON (itemcost_item_id=bomitem_item_id) JOIN costelem ic ON (ic.costelem_id=itemcost_costelem_id AND NOT ic.costelem_sys) LEFT OUTER JOIN bomitemcost ON (bomitemcost_bomitem_id=bomitem_id) LEFT OUTER JOIN costelem bc ON (bc.costelem_id=bomitemcost_costelem_id AND NOT bc.costelem_sys) WHERE ( CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires - 1) ) UNION SELECT costelem_type FROM itemcost, costelem WHERE ( (itemcost_costelem_id=costelem_id) AND (itemcost_item_id=pItemid) ) ) AS data LOOP PERFORM updateSorACost( pItemid, _bomitem.costelem_type, TRUE, lowerCost(pItemid, _bomitem.costelem_type, pUpdateActual), pUpdateActual); END LOOP; ELSIF (_type = 'C') THEN FOR _bomitem IN SELECT DISTINCT costelem_type FROM ( SELECT costelem_type FROM itemcost, costelem, xtmfg.bbomitem WHERE ( (bbomitem_item_id=pItemid) AND ( CURRENT_DATE BETWEEN bbomitem_effective AND (bbomitem_expires - 1) ) AND (NOT costelem_sys) AND (bbomitem_item_id=itemcost_item_id) AND (itemcost_costelem_id=costelem_id) ) UNION SELECT costelem_type FROM itemcost, costelem, xtmfg.bbomitem AS t, xtmfg.bbomitem AS s WHERE ( (t.bbomitem_item_id=pItemid) AND ( CURRENT_DATE BETWEEN s.bbomitem_effective AND (s.bbomitem_expires - 1) ) AND ( CURRENT_DATE BETWEEN t.bbomitem_effective AND (t.bbomitem_expires - 1) ) AND (s.bbomitem_parent_item_id=t.bbomitem_parent_item_id) AND (NOT costelem_sys) AND (s.bbomitem_item_id=itemcost_item_id) AND (itemcost_costelem_id=costelem_id) ) ) AS data LOOP PERFORM updateSorACost( pItemid, _bomitem.costelem_type, TRUE, lowerCost(pItemid, _bomitem.costelem_type, pUpdateActual), pUpdateActual); END LOOP; END IF; RETURN 1; END; $_$; =DROP FUNCTION public.updatelowerusercosts(integer, boolean); publicadminfalse8399212551692855updatelowlevel(integer)FUNCTIONaCREATE FUNCTION updatelowlevel(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLowlevel ALIAS FOR $1; _num_back INTEGER; BEGIN UPDATE costUpdate SET costUpdate_lowlevel_code = (pLowlevel + 1) WHERE costUpdate_item_id IN ( SELECT bomitem_item_id FROM bomitem JOIN costUpdate ON (bomitem_parent_item_id = costUpdate_item_id) WHERE ((costUpdate_lowlevel_code = pLowlevel) AND (bomitem_rev_id=getActiveRevId('BOM',bomitem_parent_item_id)) AND (CURRENT_DATE BETWEEN bomitem_effective AND (bomitem_expires - 1)))) AND costUpdate_lowlevel_code >= pLowlevel; GET DIAGNOSTICS _num_back = ROW_COUNT; RETURN _num_back; END; $_$; .DROP FUNCTION public.updatelowlevel(integer); publicadminfalse8399212551692856+updateoutlevel(integer, integer, integer[])FUNCTIONCREATE FUNCTION updateoutlevel(integer, integer, integer[]) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pDays ALIAS FOR $2; pPeriods ALIAS FOR $3; _cursor INTEGER; _periodid INTEGER; _usage NUMERIC; _totalUsage NUMERIC; _totalDays INTEGER; _outLevel NUMERIC; _averageUsage NUMERIC; BEGIN _cursor := 1; _totalUsage := 0; _totalDays := 0; _periodid = pPeriods[_cursor]; WHILE (_periodid IS NOT NULL) LOOP SELECT COALESCE(SUM(invhist_invqty), 0) INTO _usage FROM invhist WHERE ( (invhist_itemsite_id=pItemsiteid) AND ( invhist_transdate::DATE BETWEEN findPeriodStart(_periodid) AND findPeriodEnd(_periodid) ) AND (invhist_transtype IN ('SH', 'IM')) ); _totalUsage := (_totalUsage + _usage); _totalDays := ( _totalDays + ( findPeriodEnd(_periodid) - findPeriodStart(_periodid) + 1 ) ); _cursor := (_cursor + 1); _periodid = pPeriods[_cursor]; END LOOP; IF (_totalDays > 0) THEN _outLevel := round(_totalUsage / _totalDays * pDays); IF (_outLevel > 0) THEN UPDATE itemsite SET itemsite_ordertoqty = _outLevel WHERE (itemsite_id=pItemsiteid); ELSE UPDATE itemsite SET itemsite_ordertoqty = 0 WHERE (itemsite_id=pItemsiteid); END IF; RETURN TRUE; ELSE RETURN FALSE; END IF; END; $_$; BDROP FUNCTION public.updateoutlevel(integer, integer, integer[]); publicadminfalse8399212551692857updateprice(integer, numeric)FUNCTIONcCREATE FUNCTION updateprice(integer, numeric) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pIpsitemid ALIAS FOR $1; pUpdateBy ALIAS FOR $2; BEGIN RETURN updatePrice(pIpsitemid, 'P', pUpdateBy); END; $_$; 4DROP FUNCTION public.updateprice(integer, numeric); publicadminfalse8399212551692858(updateprice(integer, character, numeric)FUNCTIONvCREATE FUNCTION updateprice(integer, character, numeric) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pIpsitemid ALIAS FOR $1; pUpdateType ALIAS FOR $2; pUpdateBy ALIAS FOR $3; BEGIN IF (pUpdateType IN('V')) THEN UPDATE ipsitem SET ipsitem_price = (ipsitem_price + pUpdateBy) WHERE (ipsitem_id=pIpsitemid); RETURN 1; ELSE UPDATE ipsitem SET ipsitem_price = (ipsitem_price * pUpdateBy) WHERE (ipsitem_id=pIpsitemid); RETURN 1; END IF; END; $_$; ?DROP FUNCTION public.updateprice(integer, character, numeric); publicadminfalse8399212551692859Cupdatepricesbypricingschedule(integer, character, numeric, boolean)FUNCTIONCREATE FUNCTION updatepricesbypricingschedule(pipsheadid integer, pupdatetype character, pupdateby numeric, pupdatecharprices boolean) RETURNS numeric LANGUAGE plpgsql AS $$ DECLARE _percentMultiplier NUMERIC; _currencyDecimals INTEGER; _itemRows INTEGER :=0; _charRows INTEGER :=0; BEGIN IF NOT (checkPrivilege('MaintainPricingSchedules')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Price Schedules.'; END IF; -- Get the current user's currency precision SELECT COALESCE(locale_curr_scale, 2) INTO _currencyDecimals FROM locale, usr WHERE usr_locale_id = locale_id AND usr_username = CURRENT_USER; IF (pUpdateType = 'V') THEN UPDATE ipsitem SET ipsitem_price = noNeg(ROUND( (ipsitem_price + pUpdateBy), _currencyDecimals)) WHERE (ipsitem_ipshead_id = pIpsHeadId); GET DIAGNOSTICS _itemRows = ROW_COUNT; ELSE _percentMultiplier := (1.0 + (pUpdateBy / 100.0)); UPDATE ipsitem SET ipsitem_price = noNeg(ROUND( (ipsitem_price * _percentMultiplier), _currencyDecimals)) WHERE (ipsitem_ipshead_id = pIpsHeadId); GET DIAGNOSTICS _itemRows = ROW_COUNT; IF (pUpdateCharPrices) THEN UPDATE ipsitemchar SET ipsitemchar_price = noNeg(ROUND( (ipsitemchar_price * _percentMultiplier), _currencyDecimals)) FROM ipsitem WHERE ipsitemchar_ipsitem_id = ipsitem_id AND ipsitem_ipshead_id = pIpsHeadId; GET DIAGNOSTICS _charRows = ROW_COUNT; END IF; END IF; RETURN _itemRows + _charRows; END; $$; DROP FUNCTION public.updatepricesbypricingschedule(pipsheadid integer, pupdatetype character, pupdateby numeric, pupdatecharprices boolean); publicadminfalse8399212551692860Iupdatepricesbyproductcategory(integer, text, character, numeric, boolean)FUNCTION CREATE FUNCTION updatepricesbyproductcategory(pprodcatid integer, pprodcatpattern text, pupdatetype character, pupdateby numeric, pupdatecharprices boolean) RETURNS numeric LANGUAGE plpgsql AS $$ DECLARE _percentMultiplier NUMERIC; _currencyDecimals INTEGER; _itemRows INTEGER :=0; _charRows INTEGER :=0; BEGIN IF NOT (checkPrivilege('MaintainPricingSchedules')) THEN RAISE EXCEPTION 'You do not have privileges to maintain Price Schedules.'; END IF; -- Get the current user's currency precision SELECT COALESCE(locale_curr_scale, 2) INTO _currencyDecimals FROM locale, usr WHERE usr_locale_id = locale_id AND usr_username = CURRENT_USER; _percentMultiplier := (1.0 + (pUpdateBy / 100.0)); IF (pUpdateType = 'V') THEN IF (pProdCatId IS NOT NULL) THEN -- Specified category id UPDATE ipsitem SET ipsitem_price = noNeg(ROUND( (ipsitem_price + pUpdateBy), _currencyDecimals )) FROM item WHERE ipsitem_item_id = item_id AND item_prodcat_id = pProdCatId; ELSIF (pProdCatPattern IS NOT NULL) THEN -- Pattern match category UPDATE ipsitem SET ipsitem_price = noNeg(ROUND( (ipsitem_price + pUpdateBy), _currencyDecimals )) FROM item WHERE ipsitem_item_id = item_id AND item_prodcat_id IN ( SELECT prodcat_id FROM prodcat WHERE (prodcat_code ~ pProdCatPattern) ); ELSE -- All categories UPDATE ipsitem SET ipsitem_price = noNeg(ROUND( (ipsitem_price + pUpdateBy), _currencyDecimals )); END IF; GET DIAGNOSTICS _itemRows = ROW_COUNT; ELSE IF (pProdCatId IS NOT NULL) THEN -- Specified category id UPDATE ipsitem SET ipsitem_price = noNeg(ROUND( (ipsitem_price * _percentMultiplier), _currencyDecimals )) FROM item WHERE ipsitem_item_id = item_id AND item_prodcat_id = pProdCatId; GET DIAGNOSTICS _itemRows = ROW_COUNT; IF(pUpdateCharPrices) THEN UPDATE ipsitemchar SET ipsitemchar_price = noNeg(ROUND( (ipsitemchar_price * _percentMultiplier), _currencyDecimals )) FROM ipsitem, item WHERE item_prodcat_id = pProdCatId AND ipsitem_item_id = item_id AND ipsitemchar_ipsitem_id = ipsitem_id; GET DIAGNOSTICS _charRows = ROW_COUNT; END IF; ELSIF (pProdCatPattern IS NOT NULL) THEN -- Pattern match category UPDATE ipsitem SET ipsitem_price = noNeg(ROUND( (ipsitem_price * _percentMultiplier), _currencyDecimals )) FROM item WHERE item_prodcat_id IN ( SELECT prodcat_id FROM prodcat WHERE (prodcat_code ~ pProdCatPattern ) ) AND ipsitem_item_id = item_id; GET DIAGNOSTICS _itemRows = ROW_COUNT; IF(pUpdateCharPrices) THEN UPDATE ipsitemchar SET ipsitemchar_price = noNeg(ROUND( (ipsitemchar_price * _percentMultiplier), _currencyDecimals )) FROM ipsitem, item WHERE item_prodcat_id IN ( SELECT prodcat_id FROM prodcat WHERE (prodcat_code ~ pProdCatPattern ) ) AND ipsitem_item_id = item_id AND ipsitemchar_ipsitem_id = ipsitem_id; GET DIAGNOSTICS _charRows = ROW_COUNT; END IF; ELSE -- All categories UPDATE ipsitem SET ipsitem_price = noNeg(ROUND( (ipsitem_price * _percentMultiplier), _currencyDecimals )); GET DIAGNOSTICS _itemRows = ROW_COUNT; IF(pUpdateCharPrices) THEN UPDATE ipsitemchar SET ipsitemchar_price = noNeg(ROUND( (ipsitemchar_price * _percentMultiplier), _currencyDecimals )); GET DIAGNOSTICS _charRows = ROW_COUNT; END IF; END IF; END IF; RETURN _itemRows + _charRows; END; $$; DROP FUNCTION public.updatepricesbyproductcategory(pprodcatid integer, pprodcatpattern text, pupdatetype character, pupdateby numeric, pupdatecharprices boolean); publicadminfalse8399212551692861/updatereorderlevel(integer, integer, integer[])FUNCTIONCREATE FUNCTION updatereorderlevel(integer, integer, integer[]) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pDays ALIAS FOR $2; pPeriods ALIAS FOR $3; _cursor INTEGER; _periodid INTEGER; _usage NUMERIC; _totalUsage NUMERIC; _totalDays INTEGER; _reorderLevel INTEGER; _averageUsage NUMERIC; _result TEXT; BEGIN _cursor := 1; _totalUsage := 0; _totalDays := 0; _periodid = pPeriods[_cursor]; WHILE (_periodid IS NOT NULL) LOOP SELECT COALESCE(SUM(invhist_invqty), 0) INTO _usage FROM invhist WHERE ( (invhist_itemsite_id=pItemsiteid) AND ( invhist_transdate::DATE BETWEEN findPeriodStart(_periodid) AND findPeriodEnd(_periodid) ) AND (invhist_transtype IN ('SH', 'IM')) ); _totalUsage := (_totalUsage + _usage); _totalDays := ( _totalDays + ( findPeriodEnd(_periodid) - findPeriodStart(_periodid) + 1 ) ); _cursor := (_cursor + 1); _periodid = pPeriods[_cursor]; END LOOP; IF (_totalDays > 0) THEN _reorderLevel := round(_totalUsage / _totalDays * pDays); SELECT itemsite_stocked INTO _result from itemsite WHERE (itemsite_id=pItemsiteid); IF (_reorderLevel = 0 AND _result='t') THEN _reorderLevel := 1; END IF; IF (_reorderLevel > 0) THEN UPDATE itemsite SET itemsite_reorderlevel = _reorderLevel WHERE (itemsite_id=pItemsiteid); ELSE UPDATE itemsite SET itemsite_reorderlevel = 0 WHERE (itemsite_id=pItemsiteid); END IF; RETURN TRUE; ELSE RETURN FALSE; END IF; END; $_$; FDROP FUNCTION public.updatereorderlevel(integer, integer, integer[]); publicadminfalse8399212552008442:updatereorderlevel(integer[], integer, boolean, integer[])FUNCTION CREATE FUNCTION updatereorderlevel(integer[], integer, boolean, integer[]) RETURNS SETOF reordlvl LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteids ALIAS FOR $1; pDays ALIAS FOR $2; pAddLeadtime ALIAS FOR $3; pPeriodIds ALIAS FOR $4; _icursor INTEGER := 1; _pcursor INTEGER := 1; _totalUsage NUMERIC := 0; _totalDays INTEGER := 0; _reorderLevel INTEGER := 0; _result TEXT; _usage NUMERIC; _averageUsage NUMERIC; _row reordlvl %ROWTYPE; BEGIN -- Validate IF (pItemsiteIds[1] IS NULL OR pPeriodIds[1] IS NULL) THEN RETURN; END IF; -- Calculate total days FOR _pcursor IN 1..ARRAY_UPPER(pPeriodIds,1) LOOP _totalDays := ( _totalDays + ( findPeriodEnd(pPeriodIds[_pcursor]) - findPeriodStart(pPeriodIds[_pcursor]) + 1 ) ); END LOOP; -- Loop through each itemsite id FOR _icursor IN 1..ARRAY_UPPER(pItemsiteIds,1) LOOP -- Get itemsite data SELECT itemsite_id, item_id, warehous_code, item_number, item_descrip1, itemsite_leadtime, 0, itemsite_reorderlevel, 0, 0, 0 INTO _row FROM itemsite JOIN item ON (itemsite_item_id=item_id) JOIN whsinfo ON (itemsite_warehous_id=warehous_id) WHERE (itemsite_id=pItemsiteIds[_icursor]); IF (FOUND) THEN IF (pAddLeadtime) THEN _row.reordlvl_daysofstock := pDays + _row.reordlvl_leadtime; ELSE _row.reordlvl_daysofstock := pDays; END IF; -- Loop through each period id FOR _pcursor IN 1..ARRAY_UPPER(pPeriodIds,1) LOOP -- Sum days and usage shipping and inventory transactions SELECT COALESCE(SUM(invhist_invqty), 0) INTO _usage FROM invhist WHERE ( (invhist_itemsite_id=pItemsiteIds[_icursor]) AND ( invhist_transdate::DATE BETWEEN findPeriodStart(pPeriodIds[_pcursor]) AND findPeriodEnd(pPeriodIds[_pcursor]) ) AND (invhist_transtype IN ('SH', 'IM')) ); _totalUsage := (_totalUsage + _usage); END LOOP; -- Calculate reorder level IF (_totalDays > 0) THEN _reorderLevel := round(_totalUsage / _totalDays * _row.reordlvl_daysofstock); END IF; IF (_reorderLevel <= 0) THEN _reorderLevel := 0; END IF; SELECT itemsite_stocked INTO _result from itemsite WHERE (itemsite_id=pItemsiteIds[_icursor]); IF (_reorderLevel = 0 AND _result='t') THEN _reorderLevel := 1; END IF; -- Set values _row.reordlvl_total_days := _totalDays; _row.reordlvl_total_usage := _totalUsage; _row.reordlvl_calc_level := _reorderLevel; -- Return result RETURN NEXT _row; END IF; _usage := 0; _averageUsage := 0; _totalUsage := 0; _reorderLevel := 0; END LOOP; RETURN; END; $_$; QDROP FUNCTION public.updatereorderlevel(integer[], integer, boolean, integer[]); publicadminfalse83992259312551692863updateretainedearnings(integer)FUNCTION|CREATE FUNCTION updateretainedearnings(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pYearPeriodid ALIAS FOR $1; _r RECORD; _n RECORD; _c RECORD; _beginningPeriodid INTEGER; _trialbalid INTEGER; _accntid INTEGER; _totalProfitLoss NUMERIC; _periodid INTEGER; _forwardupdate INTEGER; BEGIN -- First thing we need to do is to get the yearperiod SELECT * INTO _r FROM yearperiod where yearperiod_id = pYearPeriodid; IF (NOT FOUND) THEN RETURN -6; END IF; -- Now we need to find the next yearperiod SELECT * INTO _n FROM yearperiod WHERE yearperiod_start = _r.yearperiod_end + interval '1 day'; IF (NOT FOUND) THEN RETURN -4; END IF; -- Now we have to find where to stick the end of year data SELECT period_id INTO _periodid FROM period WHERE period_start = _n.yearperiod_start; IF (NOT FOUND) THEN RETURN -8; END IF; -- Loop through companies and process each one IF (coalesce(fetchMetricValue('GLCompanySize'),0) = 0) THEN -- Process for installs not using company segment -- Now we need to get the default account number for year end closing SELECT CAST ( metric_value AS integer ) INTO _accntid FROM metric WHERE metric_name = 'YearEndEquityAccount'; IF (NOT FOUND) THEN RETURN -7; END IF; -- So far so good. Now we need to calculate the profit-loss for the year that we are closing SELECT SUM(gltrans_amount) INTO _totalProfitLoss FROM gltrans, accnt WHERE ( (gltrans_accnt_id = accnt_id) AND (accnt_type IN ( 'R', 'E' ) ) AND (gltrans_posted) AND (NOT gltrans_deleted) AND (gltrans_date between _r.yearperiod_start and _r.yearperiod_end ) ); IF (_totalProfitLoss IS NULL) THEN _totalProfitLoss := 0; END IF; -- Get the trailbal_id SELECT trialbal_id INTO _trialbalid FROM trialbal WHERE ( (trialbal_period_id = _periodid ) AND (trialbal_accnt_id = _accntid) ); IF (NOT FOUND) THEN RETURN -9; END IF; -- Lets do the update for the trialbal UPDATE trialbal SET trialbal_beginning = trialbal_beginning - trialbal_yearend + _totalProfitLoss, trialbal_ending = trialbal_beginning - trialbal_yearend - trialbal_debits + trialbal_credits + _totalProfitLoss, trialbal_yearend = _totalProfitLoss WHERE trialbal_id = _trialbalid; -- Now the forward update SELECT forwardupdatetrialbalance(_trialbalid) INTO _forwardupdate; ELSE -- Process for a multi-company set up FOR _c IN SELECT company_number, company_yearend_accnt_id FROM company LOOP -- Calculate the profit-loss for the year that we are closing SELECT SUM(gltrans_amount) INTO _totalProfitLoss FROM gltrans, accnt WHERE ( (gltrans_accnt_id = accnt_id) AND (accnt_type IN ( 'R', 'E' ) ) AND (gltrans_posted) AND (NOT gltrans_deleted) AND (accnt_company = _c.company_number) AND (gltrans_date between _r.yearperiod_start and _r.yearperiod_end ) ); IF(_totalProfitLoss IS NULL) THEN _totalProfitLoss := 0; END IF; -- Get the trailbal_id SELECT trialbal_id INTO _trialbalid FROM trialbal JOIN accnt ON (trialbal_accnt_id=accnt_id) WHERE ( (trialbal_period_id = _periodid ) AND (trialbal_accnt_id = _c.company_yearend_accnt_id) ); IF (NOT FOUND) THEN -- Create a trial balance record SELECT NEXTVAL('trialbal_trialbal_id_seq') INTO _trialbalid; INSERT INTO trialbal ( trialbal_id, trialbal_accnt_id, trialbal_period_id, trialbal_beginning, trialbal_dirty, trialbal_ending, trialbal_credits, trialbal_debits, trialbal_yearend ) VALUES ( _trialbalid, _c.company_yearend_accnt_id, _periodid, _totalProfitLoss, TRUE, _totalProfitLoss, 0, 0, _totalProfitLoss ); ELSE -- Lets do the update for the trialbal UPDATE trialbal SET trialbal_beginning = trialbal_beginning - trialbal_yearend + _totalProfitLoss, trialbal_ending = trialbal_beginning - trialbal_yearend - trialbal_debits + trialbal_credits + _totalProfitLoss, trialbal_yearend = _totalProfitLoss WHERE trialbal_id = _trialbalid; END IF; -- Now the forward update SELECT forwardupdatetrialbalance(_trialbalid) INTO _forwardupdate; END LOOP; END IF; RETURN 0; END; $_$; 6DROP FUNCTION public.updateretainedearnings(integer); publicadminfalse83992K125516928648updatesoracost(integer, text, boolean, numeric, boolean)FUNCTION2CREATE FUNCTION updatesoracost(integer, text, boolean, numeric, boolean) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCosttype ALIAS FOR $2; pLevel ALIAS FOR $3; pCost ALIAS FOR $4; pUpdateActual ALIAS FOR $5; BEGIN IF (pUpdateActual) THEN RETURN updateCost(pItemid, pCosttype, pLevel, pCost); ELSE RETURN updateStdCost(pItemid, pCosttype, pLevel, pCost); END IF; END; $_$; ODROP FUNCTION public.updatesoracost(integer, text, boolean, numeric, boolean); publicadminfalse83992125516928654updatestdcost(integer, numeric, numeric, text, text)FUNCTION CREATE FUNCTION updatestdcost(integer, numeric, numeric, text, text) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemcostid ALIAS FOR $1; pNewcost ALIAS FOR $2; pOldcost ALIAS FOR $3; pDocNumber ALIAS FOR $4; pNotes ALIAS FOR $5; _itemcostid INTEGER; _r RECORD; _newcost NUMERIC; _oldcost NUMERIC; BEGIN IF (pNewcost IS NULL) THEN _newcost := 0; ELSE _newcost := pNewcost; END IF; IF (pOldcost IS NULL) THEN _oldcost := 0; ELSE _oldcost := pOldcost; END IF; IF (_newcost > 0) THEN UPDATE itemcost SET itemcost_stdcost=_newcost, itemcost_posted=CURRENT_DATE WHERE (itemcost_id=pItemcostid); END IF; -- Distribute to G/L, debit Inventory Asset, credit Inventory Cost Variance FOR _r IN SELECT itemsite_id, (itemsite_qtyonhand + itemsite_nnqoh) AS totalQty, costcat_invcost_accnt_id, costcat_asset_accnt_id, itemsite_costmethod FROM itemcost, itemsite, costcat WHERE ( (itemsite_item_id=itemcost_item_id) AND (itemsite_costcat_id=costcat_id) AND (itemsite_costmethod != 'A') AND ((itemsite_qtyonhand + itemsite_nnqoh) <> 0) AND (itemcost_id=pItemcostid) ) LOOP -- IF (_newcost <> _oldcost) THEN -- RAISE NOTICE 'itemcost_id = %, Qty = %, Old Cost = %, New Cost = %', pItemcostid, _r.totalQty, _oldcost, _newcost; -- END IF; PERFORM insertGLTransaction( 'P/D', '', pDocNumber, pNotes, _r.costcat_invcost_accnt_id, _r.costcat_asset_accnt_id, _r.itemsite_id, ((_newcost - _oldcost) * _r.totalQty), CURRENT_DATE ); -- Update Itemsite Value if not Average Cost IF (_r.itemsite_costmethod <> 'A') THEN -- RAISE NOTICE 'itemsite_id = %, Qty = %, New Cost = %', _r.itemsite_id, _r.totalQty, _newcost; UPDATE itemsite SET itemsite_value=(_r.totalQty * stdCost(itemsite_item_id)) WHERE (itemsite_id=_r.itemsite_id); END IF; END LOOP; IF (_newcost = 0) THEN DELETE FROM itemcost WHERE (itemcost_id=pItemcostid); RETURN FALSE; END IF; IF ( SELECT metric_value FROM metric WHERE ((metric_name = 'EnableAsOfQOH') AND (metric_value = 't'))) THEN IF (pNewcost IS NOT NULL) THEN _newcost := pNewcost; END IF; IF (pOldcost IS NULL) THEN _oldcost := 0; ELSE _oldcost := pOldcost; END IF; -- Distribute to G/L, debit Inventory Asset, credit Inventory Cost Variance PERFORM postValueIntoInvBalance( itemsite_id, current_date, asofinvqty(itemsite_id,current_date), asofinvnn(itemsite_id,current_date), _oldcost, _newcost) FROM itemsite JOIN item ON (itemsite_item_id=item_id) JOIN itemcost ON (itemcost_item_id=item_id) WHERE((itemsite_costmethod = 'S') AND (itemcost_id=pItemcostid)); END IF; RETURN TRUE; END; $_$; KDROP FUNCTION public.updatestdcost(integer, numeric, numeric, text, text); publicadminfalse8399212551692866.updatestdcost(integer, text, boolean, numeric)FUNCTIONJCREATE FUNCTION updatestdcost(integer, text, boolean, numeric) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemid ALIAS FOR $1; pCostType ALIAS FOR $2; pLevel ALIAS FOR $3; pCost ALIAS FOR $4; _newCost NUMERIC; _oldCost NUMERIC := 0; _itemcostid INTEGER; _updateRet BOOLEAN; _itemNumber TEXT; BEGIN IF (pCost IS NULL) THEN _newCost = 0; ELSE _newCost = pCost; END IF; SELECT itemcost_id, itemcost_stdCost, item_number INTO _itemcostid, _oldCost, _itemNumber FROM itemcost, costelem, item WHERE ((itemcost_costelem_id=costelem_id) AND (itemcost_item_id=item_id) AND (item_id=pItemid) AND (itemcost_lowlevel=pLevel) AND (costelem_type=pCosttype)); -- RAISE NOTICE 'updateStdCost(%, %, %, %) has itemcost_id % and stdcost %', -- pItemid, pCostType, plevel, _newCost, _itemcostid, _oldCost; IF (NOT FOUND) AND (_newCost > 0) THEN SELECT NEXTVAL('itemcost_itemcost_id_seq') INTO _itemcostid; RAISE NOTICE 'updateStdCost() inserting itemcost_id %', _itemcostid; INSERT INTO itemcost (itemcost_id, itemcost_item_id, itemcost_costelem_id, itemcost_lowlevel, itemcost_stdcost, itemcost_posted, itemcost_actcost, itemcost_updated) SELECT _itemcostid, pItemid, costelem_id, pLevel, _newCost, CURRENT_DATE, 0, CURRENT_DATE FROM costelem WHERE (costelem_type=pCosttype); END IF; IF (_itemcostid IS NOT NULL) THEN SELECT updateStdCost(_itemcostid, _newCost, _oldCost, 'Post Cost', ('Set Standard Cost - ' || pCosttype || ' for item ' || _itemNumber)) INTO _updateRet; IF (_updateRet) THEN RETURN _itemcostid; END IF; END IF; RETURN -1; END; $_$; EDROP FUNCTION public.updatestdcost(integer, text, boolean, numeric); publicadminfalse83992'12551692867updatetodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, boolean, text)FUNCTIONCREATE FUNCTION updatetodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, boolean, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN updateTodoItem($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, NULL); END; $_$; DROP FUNCTION public.updatetodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, boolean, text); publicadminfalse8399212551692868updatetodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, boolean, text, integer)FUNCTION# CREATE FUNCTION updatetodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, boolean, text, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE ptodoitemid ALIAS FOR $1; pusername ALIAS FOR $2; pname ALIAS FOR $3; pdesc ALIAS FOR $4; pincdtid ALIAS FOR $5; pcrmacctid ALIAS FOR $6; pOpheadid ALIAS FOR $7; pstarted ALIAS FOR $8; pdue ALIAS FOR $9; pstatus ALIAS FOR $10; passigned ALIAS FOR $11; pcompleted ALIAS FOR $12; ppriority ALIAS FOR $13; pnotes ALIAS FOR $14; pactive ALIAS FOR $15; powner ALIAS FOR $16; pcntctid ALIAS FOR $17; _priority INTEGER := ppriority; _status CHARACTER(1) := pstatus; _incdtid INTEGER := pincdtid; _crmacctid INTEGER := pcrmacctid; _opheadid INTEGER := pOpheadid; _assigned DATE := passigned; _active BOOL := pactive; _result INTEGER; BEGIN IF (pusername IS NULL OR pusername = '') THEN RETURN -1; END IF; IF (pname IS NULL OR pname = '') THEN RETURN -2; END IF; IF (pdue IS NULL) THEN RETURN -3; END IF; IF (ptodoitemid IS NULL OR ptodoitemid <= 0) THEN RETURN -10; END IF; IF (pcompleted IS NOT NULL) THEN _status := 'C'; ELSIF (pstatus IS NULL AND pstarted IS NOT NULL) THEN _status := 'I'; ELSIF (pstatus IS NULL) THEN _status := 'N'; END IF; IF (_incdtid <= 0) THEN _incdtid := NULL; END IF; IF (_crmacctid <= 0) THEN _crmacctid := NULL; END IF; IF (_opheadid <= 0) THEN _opheadid := NULL; END IF; IF (_priority <= 0) THEN _priority := NULL; END IF; IF (_assigned IS NULL) THEN _assigned := CURRENT_DATE; END IF; IF (_active IS NULL) THEN _active := TRUE; END IF; UPDATE todoitem SET todoitem_username=pusername, todoitem_name=pname, todoitem_description=pdesc, todoitem_incdt_id=_incdtid, todoitem_status=_status, todoitem_active=_active, todoitem_start_date=pstarted, todoitem_due_date=pdue, todoitem_assigned_date=_assigned, todoitem_completed_date=pcompleted, todoitem_priority_id=_priority, todoitem_notes=pnotes, todoitem_crmacct_id=_crmacctid, todoitem_ophead_id=_opheadid, todoitem_owner_username=powner, todoitem_cntct_id=pcntctid WHERE (todoitem_id=ptodoitemid); RETURN ptodoitemid; END; $_$; DROP FUNCTION public.updatetodoitem(integer, text, text, text, integer, integer, integer, date, date, character, date, date, integer, text, boolean, text, integer); publicadminfalse83992(12551692869usedefaultlocation(integer)FUNCTIONrCREATE FUNCTION usedefaultlocation(integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; _p RECORD; BEGIN SELECT itemsite_location_id, LENGTH(itemsite_location) AS locationlength INTO _p FROM itemsite WHERE (itemsite_id=pItemsiteid); IF (NOT FOUND) THEN RETURN FALSE; ELSIF (_p.itemsite_location_id <> -1) THEN RETURN TRUE; ELSIF (_p.locationlength > 0) THEN RETURN TRUE; ELSE RETURN FALSE; END IF; END; $_$; 2DROP FUNCTION public.usedefaultlocation(integer); publicadminfalse8399212551692870usercancreateusers(text)FUNCTION CREATE FUNCTION usercancreateusers(text) RETURNS boolean LANGUAGE sql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT rolcreaterole OR rolsuper FROM pg_roles WHERE rolname=($1); $_$; /DROP FUNCTION public.usercancreateusers(text); publicadminfalse812552008443usercanlogin(text)FUNCTIONCREATE FUNCTION usercanlogin(pusername text) RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _isactive BOOLEAN; _mode TEXT; BEGIN IF (isDBA(pUsername) OR userCanCreateUsers(pUsername)) THEN RETURN TRUE; ELSIF (pg_has_role(pUsername, 'xtrole', 'member')) THEN _mode := COALESCE(fetchMetricText('AllowedUserLogins'), ''); IF (_mode = 'AdminOnly') THEN RETURN FALSE; -- administrators were checked above END IF; IF (_mode NOT IN ('AdminOnly','ActiveOnly','Any')) THEN _mode := 'ActiveOnly'; END IF; SELECT (usrpref_value = 't') INTO _isactive FROM usrpref WHERE usrpref_username = pUsername AND usrpref_name = 'active'; IF (_isactive OR _mode = 'Any') THEN RETURN TRUE; END IF; END IF; RETURN FALSE; END; $$; 3DROP FUNCTION public.usercanlogin(pusername text); publicadminfalse8399212551692872 userid(text)FUNCTIONCREATE FUNCTION userid(text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pUsername ALIAS FOR $1; _userId INTEGER; BEGIN SELECT usesysid INTO _userId FROM pg_user WHERE (usename=pUsername); IF (FOUND) THEN RETURN _userId; ELSE RETURN -1; END IF; END; $_$; #DROP FUNCTION public.userid(text); publicadminfalse8399212551692873+validateorderqty(integer, numeric, boolean)FUNCTIONHCREATE FUNCTION validateorderqty(integer, numeric, boolean) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pItemsiteid ALIAS FOR $1; pQty ALIAS FOR $2; pManual ALIAS FOR $3; _p RECORD; _qty NUMERIC; BEGIN _qty := pQty; SELECT itemsite_useparams, CASE WHEN (itemsite_useparams) THEN itemsite_useparamsmanual ELSE FALSE END AS itemsite_useparamsmanual, CASE WHEN (itemsite_useparams) THEN itemsite_minordqty ELSE 0.0 END AS itemsite_minordqty, CASE WHEN (itemsite_useparams) THEN itemsite_multordqty ELSE 0.0 END AS itemsite_multordqty, item_fractional, item_type INTO _p FROM itemsite, item WHERE ( (itemsite_item_id=item_id) AND (itemsite_id=pItemsiteid) ); IF ( (pManual AND (_p.itemsite_useparamsmanual)) OR ((NOT pManual) AND (_p.itemsite_useparams)) ) THEN IF (_qty < _p.itemsite_minordqty) THEN _qty := _p.itemsite_minordqty; END IF; IF ( (_p.itemsite_multordqty > 0) AND ((_qty % _p.itemsite_multordqty) > 0) ) THEN _qty := ((TRUNC(_qty / _p.itemsite_multordqty) * _p.itemsite_multordqty) + _p.itemsite_multordqty); END IF; END IF; _qty := roundQty(_p.item_fractional, _qty); RETURN _qty; END; $_$; BDROP FUNCTION public.validateorderqty(integer, numeric, boolean); publicadminfalse8399212551692874validlocation(integer, integer)FUNCTIONCREATE FUNCTION validlocation(integer, integer) RETURNS boolean LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pLocationid ALIAS FOR $1; pItemsiteid ALIAS FOR $2; _p RECORD; BEGIN SELECT location_restrict INTO _p FROM location, itemsite WHERE ( (location_warehous_id=itemsite_warehous_id) AND (itemsite_id=pItemsiteid) AND (location_id=pLocationid) ); IF (FOUND) THEN IF (_p.location_restrict) THEN SELECT locitem_id INTO _p FROM locitem, itemsite WHERE ( (locitem_item_id=itemsite_item_id) AND (itemsite_id=pItemsiteid) AND (locitem_location_id=pLocationid) ); IF (FOUND) THEN RETURN TRUE; END IF; ELSE RETURN TRUE; END IF; ELSE RETURN FALSE; END IF; RETURN FALSE; END; $_$; 6DROP FUNCTION public.validlocation(integer, integer); publicadminfalse83992 12551692875valueatshipping(integer)FUNCTION CREATE FUNCTION valueatshipping(plineitemid integer) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RETURN valueAtShipping('SO', plineitemid); END; $$; ;DROP FUNCTION public.valueatshipping(plineitemid integer); publicadminfalse83992!12551692876valueatshipping(text, integer)FUNCTIONCREATE FUNCTION valueatshipping(pordertype text, plineitemid integer) RETURNS numeric LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _value NUMERIC := 0.0; BEGIN IF (pordertype NOT IN ('SO', 'TO')) THEN RAISE EXCEPTION '% is not a valid order type', pordertype; END IF; SELECT COALESCE(SUM(shipitem_value), 0.0) INTO _value FROM shipitem JOIN shiphead ON (shipitem_shiphead_id=shiphead_id) WHERE ( (NOT shiphead_shipped) AND (shiphead_order_type=pordertype) AND (shipitem_orderitem_id=plineitemid) ); RETURN _value; END; $$; LDROP FUNCTION public.valueatshipping(pordertype text, plineitemid integer); publicadminfalse83992Y12551692877voidapcheck(integer)FUNCTIONECREATE FUNCTION voidapcheck(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'voidAPCheck() is deprecated - use voidCheck() instead'; RETURN voidCheck($1); END; $_$; +DROP FUNCTION public.voidapcheck(integer); publicadminfalse8399212551692878voidapopenvoucher(integer)FUNCTIONQCREATE FUNCTION voidapopenvoucher(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenid ALIAS FOR $1; BEGIN RETURN voidApopenVoucher(pApopenid, fetchJournalNumber('AP-VO')); END; $_$; 1DROP FUNCTION public.voidapopenvoucher(integer); publicadminfalse8399212551692879#voidapopenvoucher(integer, integer)FUNCTION5CREATE FUNCTION voidapopenvoucher(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pApopenid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; _apopenid INTEGER; _apcreditapplyid INTEGER; _reference TEXT; _result INTEGER; _sequence INTEGER; _totalAmount_base NUMERIC; _totalAmount NUMERIC; _itemAmount_base NUMERIC; _itemAmount NUMERIC; _test INTEGER; _a RECORD; _d RECORD; _g RECORD; _p RECORD; _n RECORD; _r RECORD; _costx RECORD; _pExplain BOOLEAN; _pLowLevel BOOLEAN; _exchGainFreight NUMERIC; _firstExchDateFreight DATE; _tmpTotal NUMERIC; _glDate DATE; BEGIN _totalAmount_base := 0; _totalAmount := 0; SELECT fetchGLSequence() INTO _sequence; -- Cache APOpen Information SELECT apopen.* INTO _n FROM apopen WHERE ( (apopen_doctype='V') AND (apopen_id=pApopenid) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Void Voucher #% as apopen not found', pApopenid; END IF; -- Cache Voucher Infomation SELECT vohead.*, vend_number || '-' || vend_name || ' ' || vohead_reference AS glnotes, COALESCE(pohead_orderdate, vohead_docdate) AS pohead_orderdate, COALESCE(pohead_curr_id, vohead_curr_id) AS pohead_curr_id INTO _p FROM vohead JOIN vendinfo ON (vend_id=vohead_vend_id) LEFT OUTER JOIN pohead ON (vohead_pohead_id = pohead_id) WHERE (vohead_number=_n.apopen_docnumber); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Void Voucher #% as vohead not found', _n.apopen_docnumber; END IF; _glDate := COALESCE(_p.vohead_gldistdate, _p.vohead_distdate); -- there is no currency gain/loss on items, see issue 3892, -- but there might be on freight, which is first encountered at p/o receipt SELECT recv_date::DATE INTO _firstExchDateFreight FROM recv WHERE (recv_vohead_id = _p.vohead_id); -- Start by handling taxes FOR _r IN SELECT tax_sales_accnt_id, round(sum(taxdetail_tax),2) AS tax, currToBase(_p.vohead_curr_id, round(sum(taxdetail_tax),2), _p.vohead_docdate) AS taxbasevalue FROM tax JOIN calculateTaxDetailSummary('VO', _p.vohead_id, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id, tax_sales_accnt_id LOOP PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', _p.vohead_number, _r.tax_sales_accnt_id, (_r.taxbasevalue * -1), _glDate, _p.glnotes ); _totalAmount_base := (_totalAmount_base - _r.taxbasevalue); _totalAmount := (_totalAmount - _r.tax); END LOOP; -- Loop through the vodist records for the passed vohead that -- are posted against a P/O Item FOR _g IN SELECT DISTINCT poitem_id, voitem_qty, poitem_expcat_id, poitem_invvenduomratio, COALESCE(itemsite_id, -1) AS itemsiteid, COALESCE(itemsite_costcat_id, -1) AS costcatid, COALESCE(itemsite_item_id, -1) AS itemsite_item_id, (SELECT SUM(value) FROM ( SELECT SUM(recv_value) AS value FROM recv WHERE (recv_voitem_id=voitem_id) UNION SELECT SUM(poreject_value)*-1 AS value FROM poreject WHERE (poreject_voitem_id=voitem_id)) as data) AS value_base, (poitem_freight_vouchered / poitem_qty_vouchered) * voitem_qty AS vouchered_freight, currToBase(_p.pohead_curr_id, (poitem_freight_vouchered / poitem_qty_vouchered) * voitem_qty, _firstExchDateFreight ) AS vouchered_freight_base, voitem_freight, currToBase(_p.vohead_curr_id, voitem_freight, _p.vohead_distdate) AS voitem_freight_base FROM vodist, voitem, poitem LEFT OUTER JOIN itemsite ON (poitem_itemsite_id=itemsite_id) WHERE ( (vodist_poitem_id=poitem_id) AND (voitem_poitem_id=poitem_id) AND (voitem_vohead_id=vodist_vohead_id) AND (vodist_vohead_id=_p.vohead_id)) LOOP -- Grab the G/L Accounts IF (_g.costcatid = -1) THEN SELECT pp.accnt_id AS pp_accnt_id, lb.accnt_id AS lb_accnt_id INTO _a FROM expcat, accnt AS pp, accnt AS lb WHERE ( (expcat_purchprice_accnt_id=pp.accnt_id) AND (expcat_liability_accnt_id=lb.accnt_id) AND (expcat_id=_g.poitem_expcat_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Void Voucher #% due to unassigned G/L Accounts.', _p.vohead_number; END IF; ELSE SELECT pp.accnt_id AS pp_accnt_id, lb.accnt_id AS lb_accnt_id INTO _a FROM costcat, accnt AS pp, accnt AS lb WHERE ( (costcat_purchprice_accnt_id=pp.accnt_id) AND (costcat_liability_accnt_id=lb.accnt_id) AND (costcat_id=_g.costcatid) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Void Voucher #% due to unassigned G/L Accounts.', _p.vohead_number; END IF; END IF; -- Clear the Item Amount accumulator _itemAmount_base := 0; _itemAmount := 0; -- Figure out the total posted value for this line item FOR _d IN SELECT vodist_id, vodist_amount, _p.vohead_curr_id, vodist_costelem_id, currToBase(_p.vohead_curr_id, vodist_amount, _p.vohead_distdate) AS vodist_amount_base FROM vodist WHERE ( (vodist_vohead_id=_p.vohead_id) AND (vodist_poitem_id=_g.poitem_id) ) LOOP _pExplain := TRUE; SELECT * INTO _costx FROM itemcost WHERE ( (itemcost_item_id = _g.itemsite_item_id) AND (itemcost_costelem_id = _d.vodist_costelem_id) ); IF (FOUND) THEN _pExplain := _costx.itemcost_lowlevel; END IF; -- Add the Distribution Amount to the Item Amount _itemAmount_base := _itemAmount_base + ROUND(_d.vodist_amount_base, 2); _itemAmount := _itemAmount + _d.vodist_amount; END LOOP; -- Distribute from the clearing account PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), _a.lb_accnt_id, round(_g.value_base + _g.vouchered_freight_base, 2), _glDate, _p.glnotes ); -- Attribute the correct portion to currency gain/loss _exchGainFreight := 0; SELECT currGain(_p.pohead_curr_id, _g.vouchered_freight, _firstExchDateFreight, _p.vohead_distdate ) INTO _exchGainFreight; IF (round(_exchGainFreight, 2) <> 0) THEN PERFORM insertIntoGLSeries(_sequence, 'A/P', 'VO', text(_p.vohead_number), getGainLossAccntId(_a.lb_accnt_id), round(_exchGainFreight, 2) * -1, _glDate, _p.glnotes); END IF; -- Distribute the remaining variance to the Purchase Price Variance account IF (round(_itemAmount_base, 2) <> round(_g.value_base, 2)) THEN _tmpTotal := round(_itemAmount_base, 2) - round(_g.value_base, 2); PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), _a.pp_accnt_id, _tmpTotal, _glDate, _p.glnotes ); END IF; -- Distribute the remaining freight variance to the Purchase Price Variance account IF (round(_g.voitem_freight_base + _exchGainFreight, 2) <> round(_g.vouchered_freight_base, 2)) THEN _tmpTotal := round(_g.voitem_freight_base + _exchGainFreight, 2) - round(_g.vouchered_freight_base, 2); PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), _a.pp_accnt_id, _tmpTotal, _glDate, _p.glnotes ); END IF; -- Add the distribution amount to the total amount to distribute _totalAmount_base := (_totalAmount_base + _itemAmount_base + _g.voitem_freight_base); _totalAmount := (_totalAmount + _itemAmount + _g.voitem_freight); -- Reverse the posting for all the Tagged Receivings for this P/O Item UPDATE recv SET recv_invoiced=FALSE, recv_recvcost_curr_id=basecurrid(), recv_recvcost=0, recv_vohead_id=NULL, recv_voitem_id=NULL FROM poitem WHERE ( (recv_orderitem_id=poitem_id) AND (recv_order_type='PO') AND (recv_orderitem_id=_g.poitem_id) AND (recv_vohead_id=_p.vohead_id) ); -- Reverse the posting for all the Tagged Rejections for this P/O Item UPDATE poreject SET poreject_invoiced=FALSE, poreject_vohead_id=NULL, poreject_voitem_id=NULL WHERE ( (poreject_poitem_id=_g.poitem_id) AND (poreject_vohead_id=_p.vohead_id) ); -- Update the qty and freight vouchered fields UPDATE poitem SET poitem_qty_vouchered = (poitem_qty_vouchered - _g.voitem_qty), poitem_freight_vouchered = (poitem_freight_vouchered - _g.voitem_freight) WHERE (poitem_id=_g.poitem_id); END LOOP; -- Loop through the vodist records for the passed vohead that -- are not posted against a P/O Item -- Skip the tax distributions FOR _d IN SELECT vodist_id, currToBase(_p.vohead_curr_id, vodist_amount, _p.vohead_distdate) AS vodist_amount_base, vodist_amount, vodist_accnt_id, vodist_expcat_id FROM vodist WHERE ( (vodist_vohead_id=_p.vohead_id) AND (vodist_poitem_id=-1) AND (vodist_tax_id=-1) ) LOOP -- Distribute from the misc. account IF (_d.vodist_accnt_id = -1) THEN PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), expcat_exp_accnt_id, round(_d.vodist_amount_base, 2), _glDate, _p.glnotes ) FROM expcat WHERE (expcat_id=_d.vodist_expcat_id); ELSE PERFORM insertIntoGLSeries( _sequence, 'A/P', 'VO', text(_p.vohead_number), _d.vodist_accnt_id, round(_d.vodist_amount_base, 2), _glDate, _p.glnotes ); END IF; -- Add the Distribution Amount to the Total Amount _totalAmount_base := _totalAmount_base + ROUND(_d.vodist_amount_base, 2); _totalAmount := _totalAmount + _d.vodist_amount; END LOOP; SELECT insertIntoGLSeries( _sequence, 'A/P', 'VO', text(vohead_number), accnt_id, round(_totalAmount_base, 2) * -1, _glDate, _p.glnotes ) INTO _test FROM vohead LEFT OUTER JOIN accnt ON (accnt_id=findAPAccount(vohead_vend_id)) WHERE ( (findAPAccount(vohead_vend_id)=0 OR accnt_id > 0) -- G/L interface might be disabled AND (vohead_id=_p.vohead_id) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Void Voucher #% due to an unassigned A/P Account.', _p.vohead_number; END IF; PERFORM postGLSeries(_sequence, pJournalNumber); -- Create the A/P Open Item SELECT NEXTVAL('apopen_apopen_id_seq') INTO _apopenid; _reference := ('Void Voucher #' || _n.apopen_docnumber); INSERT INTO apopen ( apopen_id, apopen_username, apopen_journalnumber, apopen_vend_id, apopen_docnumber, apopen_doctype, apopen_ponumber, apopen_docdate, apopen_duedate, apopen_distdate, apopen_terms_id, apopen_curr_id, apopen_amount, apopen_paid, apopen_open, apopen_notes, apopen_discount, apopen_curr_rate ) SELECT _apopenid, getEffectiveXtUser(), pJournalnumber, apopen_vend_id, apopen_docnumber, 'C', apopen_ponumber, CURRENT_DATE, CURRENT_DATE, CURRENT_DATE, -1, apopen_curr_id, apopen_amount - apopen_paid, 0, TRUE, _reference, TRUE, apopen_curr_rate FROM apopen WHERE (apopen_id=_n.apopen_id); SELECT apcreditapply_id INTO _apcreditapplyid FROM apcreditapply WHERE ( (apcreditapply_source_apopen_id=_apopenid) AND (apcreditapply_target_apopen_id=_n.apopen_id) ); IF (FOUND) THEN UPDATE apcreditapply SET apcreditapply_amount=_n.apopen_amount-_n.apopen_paid WHERE (apcreditapply_id=_apcreditapplyid); ELSE SELECT nextval('apcreditapply_apcreditapply_id_seq') INTO _apcreditapplyid; INSERT INTO apcreditapply ( apcreditapply_id, apcreditapply_source_apopen_id, apcreditapply_target_apopen_id, apcreditapply_amount, apcreditapply_curr_id ) VALUES ( _apcreditapplyid, _apopenid, _n.apopen_id, _n.apopen_amount-_n.apopen_paid, _n.apopen_curr_id ); END IF; SELECT postAPCreditMemoApplication(_apopenid) INTO _result; IF (_result < 0) THEN RAISE EXCEPTION 'Credit application failed with result %.', _result; END IF; -- Reopen all of the P/O Items that were closed by this Voucher UPDATE poitem SET poitem_status='O' FROM voitem WHERE ( (voitem_poitem_id=poitem_id) AND (voitem_close) AND (voitem_vohead_id=_p.vohead_id) ); -- Reopen the P/O UPDATE pohead SET pohead_status='O' WHERE (pohead_id=_p.vohead_pohead_id); -- Mark as voided UPDATE apopen SET apopen_void=TRUE WHERE (apopen_id=_n.apopen_id); RETURN pJournalNumber; END; $_$; :DROP FUNCTION public.voidapopenvoucher(integer, integer); publicadminfalse83992Z12551692881voidcheck(integer)FUNCTIONCREATE FUNCTION voidcheck(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCheckid ALIAS FOR $1; BEGIN IF ( SELECT (checkhead_void OR checkhead_posted OR checkhead_replaced) FROM checkhead WHERE (checkhead_id=pCheckid) ) THEN RETURN -1; END IF; UPDATE checkhead SET checkhead_void=TRUE WHERE (checkhead_id=pCheckid); RETURN 1; END; $_$; )DROP FUNCTION public.voidcheck(integer); publicadminfalse83992"12551692882voidcreditmemo(integer)FUNCTION$CREATE FUNCTION voidcreditmemo(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCmheadid ALIAS FOR $1; _r RECORD; _p RECORD; _n RECORD; _glSequence INTEGER := 0; _glJournal INTEGER := 0; _itemlocSeries INTEGER := 0; _invhistid INTEGER; _test INTEGER; _amount NUMERIC; _roundedBase NUMERIC; _totalAmount NUMERIC := 0; _totalRoundedBase NUMERIC := 0; _commissionDue NUMERIC := 0; _toApply NUMERIC; _toClose BOOLEAN; _glDate DATE; _taxBaseValue NUMERIC := 0; BEGIN -- Cache C/M information SELECT cmhead.*, findARAccount(cmhead_cust_id) AS ar_accnt_id, ( SELECT COALESCE(SUM(taxhist_tax), 0) FROM cmheadtax WHERE ( (taxhist_parent_id = cmhead_id) AND (taxhist_taxtype_id = getAdjustmentTaxtypeId()) ) ) AS adjtax INTO _p FROM cmhead WHERE (cmhead_id=pCmheadid); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Void Credit Memo as cmhead not found'; END IF; IF (NOT _p.cmhead_posted) THEN RETURN -10; END IF; -- Cache AROpen Information SELECT aropen.* INTO _n FROM aropen WHERE ( (aropen_doctype='C') AND (aropen_docnumber=_p.cmhead_number) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Void Credit Memo as aropen not found'; END IF; -- Check for ARApplications SELECT arapply_id INTO _test FROM arapply WHERE (arapply_target_aropen_id=_n.aropen_id) OR (arapply_source_aropen_id=_n.aropen_id) LIMIT 1; IF (FOUND) THEN RETURN -20; END IF; _glDate := COALESCE(_p.cmhead_gldistdate, _p.cmhead_docdate); SELECT fetchGLSequence() INTO _glSequence; SELECT fetchJournalNumber('AR-IN') INTO _glJournal; -- Start by handling taxes (reverse sense) FOR _r IN SELECT tax_sales_accnt_id, round(sum(taxdetail_tax),2) AS tax, currToBase(_p.cmhead_curr_id, round(sum(taxdetail_tax),2), _p.cmhead_docdate) AS taxbasevalue FROM tax JOIN calculateTaxDetailSummary('CM', _p.cmhead_id, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id, tax_sales_accnt_id LOOP PERFORM insertIntoGLSeries( _glSequence, 'A/R', 'CM', _p.cmhead_number, _r.tax_sales_accnt_id, (_r.taxbasevalue * -1.0), _glDate, ('Void-' || _p.cmhead_billtoname) ); _totalAmount := _totalAmount + _r.tax * -1; _totalRoundedBase := _totalRoundedBase + _r.taxbasevalue * -1; END LOOP; -- Process line items FOR _r IN SELECT * FROM creditmemoitem WHERE ( (cmitem_cmhead_id=_p.cmhead_id) AND (cmitem_qtycredit <> 0 ) ) LOOP IF (_r.extprice <> 0) THEN -- Debit the Sales Account for the current cmitem (reverse sense) _roundedBase := round(currToBase(_p.cmhead_curr_id, _r.extprice, _p.cmhead_docdate), 2); SELECT insertIntoGLSeries( _glSequence, 'A/R', 'CM', _p.cmhead_number, CASE WHEN _p.cmhead_rahead_id IS NULL THEN getPrjAccntId(_p.cmhead_prj_id, salesaccnt_credit_accnt_id) ELSE getPrjAccntId(_p.cmhead_prj_id, salesaccnt_returns_accnt_id) END, _roundedBase, _glDate, ('Void-' || _p.cmhead_billtoname) ) INTO _test FROM salesaccnt WHERE (salesaccnt_id=findSalesAccnt(_r.cmitem_itemsite_id, 'IS', _p.cmhead_cust_id, _p.cmhead_saletype_id, _p.cmhead_shipzone_id)); IF (NOT FOUND) THEN PERFORM deleteGLSeries(_glSequence); RETURN -11; END IF; END IF; _totalAmount := _totalAmount + round(_r.extprice, 2); _totalRoundedBase := _totalRoundedBase + _roundedBase; END LOOP; -- Credit the Misc. Account for Miscellaneous Charges (reverse sense) IF (_p.cmhead_misc <> 0) THEN _roundedBase := round(currToBase(_p.cmhead_curr_id, _p.cmhead_misc, _p.cmhead_docdate), 2); SELECT insertIntoGLSeries( _glSequence, 'A/R', 'CM', _p.cmhead_number, getPrjAccntId(_p.cmhead_prj_id, accnt_id), _roundedBase, _glDate, ('Void-' ||_p.cmhead_billtoname) ) INTO _test FROM accnt WHERE (accnt_id=_p.cmhead_misc_accnt_id); -- If the Misc. Charges Account was not found then punt IF (NOT FOUND) THEN PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; -- Cache the Misc. Amount distributed _totalAmount := _totalAmount + _p.cmhead_misc; _totalRoundedBase := _totalRoundedBase + _roundedBase; END IF; -- Debit the Freight Account (reverse sense) IF (_p.cmhead_freight <> 0) THEN _roundedBase := round(currToBase(_p.cmhead_curr_id, _p.cmhead_freight, _p.cmhead_docdate), 2); SELECT insertIntoGLSeries( _glSequence, 'A/R', 'CM', _p.cmhead_number, getPrjAccntId(_p.cmhead_prj_id, accnt_id), _roundedBase, _glDate, ('Void-' || _p.cmhead_billtoname) ) INTO _test FROM accnt WHERE (accnt_id=findFreightAccount(_p.cmhead_cust_id)); -- If the Freight Charges Account was not found then punt IF (NOT FOUND) THEN PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; -- Cache the Amount Distributed to Freight _totalAmount := _totalAmount + _p.cmhead_freight; _totalRoundedBase := _totalRoundedBase + _roundedBase; END IF; _totalAmount := _totalAmount; -- Credit the A/R for the total Amount (reverse sense) IF (_totalAmount <> 0) THEN IF (_p.ar_accnt_id != -1) THEN SELECT insertIntoGLSeries( _glSequence, 'A/R', 'CM', _p.cmhead_number, _p.ar_accnt_id, (_totalRoundedBase * -1.0), _glDate, ('Void-' || _p.cmhead_billtoname) ) INTO _test; ELSE PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; END IF; -- Commit the GLSeries; SELECT postGLSeries(_glSequence, _glJournal) INTO _test; IF (_test < 0) THEN PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; -- Delete sales history DELETE FROM cohisttax WHERE (taxhist_parent_id IN (SELECT cohist_id FROM cohist WHERE (cohist_doctype='C' AND cohist_ordernumber=_p.cmhead_number))); DELETE FROM cohist WHERE (cohist_doctype='C' AND cohist_ordernumber=_p.cmhead_number); -- Delete the Invoice aropen item DELETE FROM aropen WHERE (aropen_doctype='C' AND aropen_docnumber=_p.cmhead_number); -- Handle the Inventory and G/L Transactions for any returned Inventory where cmitem_updateinv is true (reverse sense) FOR _r IN SELECT cmitem_itemsite_id AS itemsite_id, cmitem_id, (cmitem_qtyreturned * cmitem_qty_invuomratio) AS qty, cmhead_number, cmhead_cust_id AS cust_id, item_number, cmhead_prj_id AS prj_id, cmhead_saletype_id AS saletype_id, cmhead_shipzone_id AS shipzone_id FROM cmhead, cmitem, itemsite, item WHERE ( (cmitem_cmhead_id=cmhead_id) AND (cmitem_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (cmitem_qtyreturned <> 0) AND (cmitem_updateinv) AND (cmhead_id=_p.cmhead_id) ) LOOP -- Return credited stock to inventory IF (_itemlocSeries = 0) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; END IF; SELECT postInvTrans( itemsite_id, 'RS', (_r.qty * -1), 'S/O', 'CM', _r.cmhead_number, '', ('Credit Voided ' || _r.item_number), costcat_asset_accnt_id, getPrjAccntId(_r.prj_id, resolveCOSAccount(itemsite_id, _r.cust_id, _r.saletype_id, _r.shipzone_id)), _itemlocSeries, _glDate) INTO _invhistid FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id) ); END LOOP; -- Update coitem to reflect the returned qty where cmitem_updateinv is true (reverse sense) FOR _r IN SELECT cmitem_qtyreturned, cmitem_itemsite_id, cohead_id FROM cmitem, cmhead, invchead, cohead WHERE ( (cmitem_cmhead_id=cmhead_id) AND (cmhead_invcnumber=invchead_invcnumber) AND (invchead_ordernumber=cohead_number) AND (cmitem_qtyreturned <> 0) AND (cmitem_updateinv) AND (cmhead_id=_p.cmhead_id) ) LOOP UPDATE coitem SET coitem_qtyreturned = (coitem_qtyreturned + (_r.cmitem_qtyreturned * -1.0)) WHERE coitem_id IN ( SELECT coitem_id FROM coitem WHERE ( (coitem_cohead_id=_r.cohead_id) AND (coitem_itemsite_id = _r.cmitem_itemsite_id) ) LIMIT 1 ); END LOOP; -- Mark the cmhead as voided UPDATE cmhead SET cmhead_void=TRUE WHERE (cmhead_id=_p.cmhead_id); RETURN _itemlocSeries; END; $_$; .DROP FUNCTION public.voidcreditmemo(integer); publicadminfalse83992[12551692884voidinvoice(integer)FUNCTIONV9CREATE FUNCTION voidinvoice(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pInvcheadid ALIAS FOR $1; _glSequence INTEGER := 0; _glJournal INTEGER := 0; _itemlocSeries INTEGER := 0; _aropenid INTEGER := 0; _invhistid INTEGER := 0; _amount NUMERIC; _roundedBase NUMERIC; _r RECORD; _p RECORD; _n RECORD; _test INTEGER; _totalAmount NUMERIC := 0; _totalRoundedBase NUMERIC := 0; _totalAmountBase NUMERIC := 0; _appliedAmount NUMERIC := 0; _commissionDue NUMERIC := 0; _tmpAccntId INTEGER; _tmpCurrId INTEGER; _firstExchDate DATE; _glDate DATE; _exchGain NUMERIC := 0; BEGIN -- Cache Invoice information SELECT invchead.*, findFreightAccount(invchead_cust_id) AS freightaccntid, findARAccount(invchead_cust_id) AS araccntid, aropen_id, ( SELECT COALESCE(SUM(taxhist_tax), 0) FROM invcheadtax WHERE ( (taxhist_parent_id = invchead_id) AND (taxhist_taxtype_id = getFreightTaxtypeId()) ) ) AS freighttax, ( SELECT COALESCE(SUM(taxhist_tax), 0) FROM invcheadtax WHERE ( (taxhist_parent_id = invchead_id) AND (taxhist_taxtype_id = getAdjustmentTaxtypeId()) ) ) AS adjtax INTO _p FROM invchead JOIN aropen ON (aropen_doctype='I' AND aropen_docnumber=invchead_invcnumber) WHERE (invchead_id=pInvcheadid); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Void Invoice as invchead not found'; END IF; IF (NOT _p.invchead_posted) THEN RETURN -10; END IF; -- Cache AROpen Information SELECT aropen.* INTO _n FROM aropen WHERE ( (aropen_doctype='I') AND (aropen_docnumber=_p.invchead_invcnumber) ); IF (NOT FOUND) THEN RAISE EXCEPTION 'Cannot Void Invoice as aropen not found'; END IF; -- Check for ARApplications SELECT arapply_id INTO _test FROM arapply WHERE (arapply_target_aropen_id=_n.aropen_id) LIMIT 1; IF (FOUND) THEN RETURN -20; END IF; SELECT fetchGLSequence() INTO _glSequence; SELECT fetchJournalNumber('AR-IN') INTO _glJournal; _glDate := COALESCE(_p.invchead_gldistdate, _p.invchead_invcdate); -- the 1st MC iteration used the cohead_orderdate so we could get curr exch -- gain/loss between the sales and invoice dates, but see issue 3892. leave -- this condition TRUE until we make this configurable or decide not to. IF TRUE THEN _firstExchDate := _p.invchead_invcdate; ELSE -- can we save a select by using: _firstExchDate := _p.invchead_orderdate; SELECT cohead_orderdate INTO _firstExchDate FROM cohead WHERE (cohead_number = _p.invchead_ordernumber); END IF; -- Start by handling taxes (reverse sense) FOR _r IN SELECT tax_sales_accnt_id, round(sum(taxdetail_tax),2) AS tax, currToBase(_p.invchead_curr_id, round(sum(taxdetail_tax),2), _firstExchDate) AS taxbasevalue FROM tax JOIN calculateTaxDetailSummary('I', _p.invchead_id, 'T') ON (taxdetail_tax_id=tax_id) GROUP BY tax_id, tax_sales_accnt_id LOOP PERFORM insertIntoGLSeries( _glSequence, 'A/R', 'IN', _p.invchead_invcnumber, _r.tax_sales_accnt_id, (_r.taxbasevalue * -1.0), _glDate, ('Void-' || _p.invchead_billto_name) ); _totalAmount := _totalAmount + _r.tax; _totalRoundedBase := _totalRoundedBase + _r.taxbasevalue; END LOOP; -- March through the Non-Misc. Invcitems FOR _r IN SELECT * FROM invoiceitem WHERE ( (invcitem_invchead_id = _p.invchead_id) AND (invcitem_item_id <> -1) ) LOOP -- Cache the amount due for this line _amount := _r.extprice; IF (_amount > 0) THEN -- Credit the Sales Account for the invcitem item (reverse sense) IF (_r.itemsite_id IS NULL) THEN SELECT getPrjAccntId(_p.invchead_prj_id, salesaccnt_sales_accnt_id) INTO _tmpAccntId FROM salesaccnt WHERE (salesaccnt_id=findSalesAccnt(_r.invcitem_item_id, 'I', _p.invchead_cust_id, _p.invchead_saletype_id, _p.invchead_shipzone_id)); ELSE SELECT getPrjAccntId(_p.invchead_prj_id, salesaccnt_sales_accnt_id) INTO _tmpAccntId FROM salesaccnt WHERE (salesaccnt_id=findSalesAccnt(_r.itemsite_id, 'IS', _p.invchead_cust_id, _p.invchead_saletype_id, _p.invchead_shipzone_id)); END IF; -- If the Sales Account Assignment was not found then punt IF (NOT FOUND) THEN PERFORM deleteGLSeries(_glSequence); RETURN -11; END IF; _roundedBase := round(currToBase(_p.invchead_curr_id, _amount, _firstExchDate), 2); SELECT insertIntoGLSeries( _glSequence, 'A/R', 'IN', _p.invchead_invcnumber, _tmpAccntId, (_roundedBase * -1.0), _glDate, ('Void-' || _p.invchead_billto_name) ) INTO _test; _totalAmount := (_totalAmount + _amount); _totalRoundedBase := _totalRoundedBase + _roundedBase; _commissionDue := (_commissionDue + (_amount * _p.invchead_commission)); END IF; _totalAmount := _totalAmount; _totalRoundedBase := _totalRoundedBase; END LOOP; -- March through the Misc. Invcitems FOR _r IN SELECT * FROM invoiceitem JOIN salescat ON (salescat_id = invcitem_salescat_id) WHERE ( (invcitem_item_id = -1) AND (invcitem_invchead_id=_p.invchead_id) ) LOOP -- Cache the amount due for this line and the commission due for such _amount := _r.extprice; IF (_amount > 0) THEN -- Credit the Sales Account for the invcitem item (reverse sense) _roundedBase = round(currToBase(_p.invchead_curr_id, _amount, _firstExchDate), 2); SELECT insertIntoGLSeries( _glSequence, 'A/R', 'IN', _p.invchead_invcnumber, getPrjAccntId(_p.invchead_prj_id, _r.salescat_sales_accnt_id), (_roundedBase * -1.0), _glDate, ('Void-' || _p.invchead_billto_name) ) INTO _test; IF (_test < 0) THEN PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; _totalAmount := (_totalAmount + _amount); _totalRoundedBase := _totalRoundedBase + _roundedBase; _commissionDue := (_commissionDue + (_amount * _p.invchead_commission)); END IF; END LOOP; -- Credit the Freight Account for Freight Charges (reverse sense) IF (_p.invchead_freight <> 0) THEN IF (_p.freightaccntid <> -1) THEN _roundedBase = round(currToBase(_p.invchead_curr_id, _p.invchead_freight, _firstExchDate), 2); SELECT insertIntoGLSeries( _glSequence, 'A/R', 'IN', _p.invchead_invcnumber, getPrjAccntId(_p.invchead_prj_id,_p.freightaccntid), (_roundedBase * -1.0), _glDate, ('Void-' || _p.invchead_billto_name) ) INTO _test; -- Cache the Freight Amount distributed _totalAmount := (_totalAmount + _p.invchead_freight); _totalRoundedBase := _totalRoundedBase + _roundedBase; ELSE _test := -14; END IF; -- If the Freight Account was not found then punt IF (_test < 0) THEN PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; END IF; -- Credit the Misc. Account for Miscellaneous Charges (reverse sense) IF (_p.invchead_misc_amount <> 0) THEN _roundedBase := round(currToBase(_p.invchead_curr_id, _p.invchead_misc_amount, _firstExchDate), 2); SELECT insertIntoGLSeries( _glSequence, 'A/R', 'IN', _p.invchead_invcnumber, getPrjAccntId(_p.invchead_prj_id, _p.invchead_misc_accnt_id), (_roundedBase * -1.0), _glDate, ('Void-' || _p.invchead_billto_name) ) INTO _test; -- If the Misc. Charges Account was not found then punt IF (_test < 0) THEN PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; -- Cache the Misc. Amount distributed _totalAmount := (_totalAmount + _p.invchead_misc_amount); _totalRoundedBase := _totalRoundedBase + _roundedBase; END IF; -- ToDo: handle rounding errors (reverse sense) _exchGain := currGain(_p.invchead_curr_id, _totalAmount, _firstExchDate, _glDate); IF (_exchGain <> 0) THEN SELECT insertIntoGLSeries( _glSequence, 'A/R', 'IN', _p.invchead_invcnumber, getGainLossAccntId(_p.araccntid), round(_exchGain, 2), _glDate, ('Void-' || _p.invchead_billto_name) ) INTO _test ; IF (_test < 0) THEN PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; END IF; -- Debit A/R for the total Amount (reverse sense) IF (_totalRoundedBase <> 0) THEN IF (_p.araccntid != -1) THEN SELECT insertIntoGLSeries( _glSequence, 'A/R', 'IN', _p.invchead_invcnumber, _p.araccntid, round(_totalRoundedBase, 2), _glDate, ('Void-' || _p.invchead_billto_name) ) INTO _test; ELSE PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; END IF; -- Commit the GLSeries; SELECT postGLSeries(_glSequence, _glJournal) INTO _test; IF (_test < 0) THEN PERFORM deleteGLSeries(_glSequence); RETURN _test; END IF; -- Delete sales history DELETE FROM cohisttax WHERE (taxhist_parent_id IN (SELECT cohist_id FROM cohist WHERE (cohist_doctype='I' AND cohist_invcnumber=_p.invchead_invcnumber))); DELETE FROM cohist WHERE (cohist_doctype='I' AND cohist_invcnumber=_p.invchead_invcnumber); -- Create the Credit aropen item SELECT nextval('aropen_aropen_id_seq') INTO _aropenid; INSERT INTO aropen ( aropen_id, aropen_username, aropen_journalnumber, aropen_open, aropen_posted, aropen_cust_id, aropen_ponumber, aropen_docnumber, aropen_applyto, aropen_doctype, aropen_docdate, aropen_duedate, aropen_distdate, aropen_terms_id, aropen_amount, aropen_paid, aropen_salesrep_id, aropen_commission_due, aropen_commission_paid, aropen_ordernumber, aropen_notes, aropen_cobmisc_id, aropen_curr_id ) VALUES ( _aropenid, getEffectiveXtUser(), _glJournal, TRUE, FALSE, _p.invchead_cust_id, _p.invchead_ponumber, _p.invchead_invcnumber, _p.invchead_invcnumber, 'C', _p.invchead_invcdate, determineDueDate(_p.invchead_terms_id, _p.invchead_invcdate), _glDate, _p.invchead_terms_id, round(_totalAmount, 2), round(_totalAmount, 2), _p.invchead_salesrep_id, _commissionDue, FALSE, _p.invchead_ordernumber::text, _p.invchead_notes, pInvcheadid, _p.invchead_curr_id ); -- Alter the Invoice A/R Open Item to reflect the application UPDATE aropen SET aropen_paid = round(_totalAmount, 2) WHERE (aropen_id=_p.aropen_id); -- Record the application INSERT INTO arapply ( arapply_cust_id, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_fundstype, arapply_refnumber, arapply_applied, arapply_closed, arapply_postdate, arapply_distdate, arapply_journalnumber, arapply_curr_id ) VALUES ( _p.invchead_cust_id, _aropenid, 'C', _p.invchead_invcnumber, _p.aropen_id, 'I', _p.invchead_invcnumber, '', '', round(_totalAmount, 2), TRUE, CURRENT_DATE, _p.invchead_invcdate, 0, _p.invchead_curr_id ); -- Handle the Inventory and G/L Transactions for any billed Inventory where invcitem_updateinv is true (reverse sense) FOR _r IN SELECT itemsite_id AS itemsite_id, invcitem_id, (invcitem_billed * invcitem_qty_invuomratio) AS qty, invchead_invcnumber, invchead_cust_id AS cust_id, item_number, invchead_prj_id AS prj_id, invchead_saletype_id AS saletype_id, invchead_shipzone_id AS shipzone_id FROM invchead JOIN invcitem ON ( (invcitem_invchead_id=invchead_id) AND (invcitem_billed <> 0) AND (invcitem_updateinv) ) JOIN itemsite ON ( (itemsite_item_id=invcitem_item_id) AND (itemsite_warehous_id=invcitem_warehous_id) ) JOIN item ON (item_id=invcitem_item_id) WHERE (invchead_id=_p.invchead_id) LOOP -- Issue billed stock from inventory IF (_itemlocSeries = 0) THEN SELECT NEXTVAL('itemloc_series_seq') INTO _itemlocSeries; END IF; SELECT postInvTrans( itemsite_id, 'SH', (_r.qty * -1.0), 'S/O', 'IN', _r.invchead_invcnumber, '', ('Invoice Voided ' || _r.item_number), getPrjAccntId(_r.prj_id, resolveCOSAccount(itemsite_id, _r.cust_id, _r.saletype_id, _r.shipzone_id)), costcat_asset_accnt_id, _itemlocSeries, _glDate) INTO _invhistid FROM itemsite, costcat WHERE ( (itemsite_costcat_id=costcat_id) AND (itemsite_id=_r.itemsite_id) ); END LOOP; -- Reopen Billing UPDATE shipitem SET shipitem_invoiced=FALSE, shipitem_invcitem_id=NULL WHERE (shipitem_invcitem_id IN (SELECT invcitem_id FROM invcitem WHERE (invcitem_invchead_id=_p.invchead_id))); UPDATE cobill SET cobill_invcnum=NULL, cobill_invcitem_id=NULL WHERE (cobill_invcitem_id IN (SELECT invcitem_id FROM invcitem WHERE (invcitem_invchead_id=_p.invchead_id))); UPDATE cobmisc SET cobmisc_posted=FALSE, cobmisc_invcnumber=NULL, cobmisc_invchead_id=NULL WHERE (cobmisc_invchead_id=_p.invchead_id); -- Mark the invoice as voided UPDATE invchead SET invchead_void=TRUE, invchead_notes=(invchead_notes || 'Voided on ' || current_date || ' by ' || getEffectiveXtUser()) WHERE (invchead_id=_p.invchead_id); RETURN _itemlocSeries; END; $_$; +DROP FUNCTION public.voidinvoice(integer); publicadminfalse83992\12551692886voidpostedapcheck(integer)FUNCTIONCREATE FUNCTION voidpostedapcheck(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'voidPostedAPCheck() is deprecated - use voidPostedCheck() instead'; RETURN voidPostedCheck($1, fetchJournalNumber('AP-CK'), CURRENT_DATE); END; $_$; 1DROP FUNCTION public.voidpostedapcheck(integer); publicadminfalse83992]12551692887#voidpostedapcheck(integer, integer)FUNCTIONxCREATE FUNCTION voidpostedapcheck(integer, integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'voidPostedAPCheck() is deprecated - use voidPostedCheck() instead'; RETURN voidPostedCheck($1, $2, CURRENT_DATE); END; $_$; :DROP FUNCTION public.voidpostedapcheck(integer, integer); publicadminfalse83992#12551692888)voidpostedapcheck(integer, integer, date)FUNCTIONtCREATE FUNCTION voidpostedapcheck(integer, integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. BEGIN RAISE NOTICE 'voidPostedAPCheck() is deprecated - use voidPostedCheck() instead'; RETURN voidPostedCheck($1, $2, $3); END; $_$; @DROP FUNCTION public.voidpostedapcheck(integer, integer, date); publicadminfalse83992$12551692889'voidpostedcheck(integer, integer, date)FUNCTION1CREATE FUNCTION voidpostedcheck(integer, integer, date) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pCheckid ALIAS FOR $1; pJournalNumber ALIAS FOR $2; pVoidDate ALIAS FOR $3; _amount_base NUMERIC := 0; _result INTEGER; _apopenid INTEGER; _credit_glaccnt INTEGER; _docnumber TEXT; _exchGain NUMERIC := 0; _exchGainTmp NUMERIC := 0; _gltransNote TEXT; _p RECORD; _r RECORD; _sequence INTEGER; _amount_check NUMERIC := 0; BEGIN SELECT fetchGLSequence() INTO _sequence; SELECT checkhead.*, checkhead_amount / checkhead_curr_rate AS checkhead_amount_base, bankaccnt_accnt_id AS bankaccntid, findPrepaidAccount(checkhead_recip_id) AS prepaidaccntid, checkrecip.* INTO _p FROM bankaccnt, checkhead LEFT OUTER JOIN checkrecip ON ((checkrecip_type=checkhead_recip_type) AND (checkrecip_id=checkhead_recip_id)) WHERE ((checkhead_bankaccnt_id=bankaccnt_id) AND (checkhead_id=pCheckid)); IF (NOT _p.checkhead_posted) THEN RETURN -10; END IF; IF (_p.checkrecip_id IS NULL) THEN -- outer join failed RETURN -11; END IF; -- Cannot void if already reconciled SELECT trans_id INTO _result FROM ( SELECT gltrans_id AS trans_id FROM gltrans WHERE ((gltrans_doctype='CK') AND (gltrans_misc_id=_p.checkhead_id) AND (gltrans_rec)) UNION ALL SELECT sltrans_id AS trans_id FROM sltrans WHERE ((sltrans_doctype='CK') AND (sltrans_misc_id=_p.checkhead_id) AND (sltrans_rec)) ) AS data; IF (FOUND) THEN RETURN -14; END IF; _gltransNote := 'Void Posted Check #' || _p.checkhead_number || ' ' || _p.checkrecip_number || '-' || _p.checkrecip_name; IF (_p.checkhead_misc) THEN IF (COALESCE(_p.checkhead_expcat_id, -1) < 0) THEN IF (_p.checkhead_recip_type = 'V') THEN PERFORM createAPDebitMemo(_p.checkhead_recip_id, pJournalNumber, CAST(fetchAPMemoNumber() AS text), '', pVoidDate, _p.checkhead_amount, _gltransNote || ' '|| _p.checkhead_notes, -1, pVoidDate, -1, _p.checkhead_curr_id ); _credit_glaccnt := findAPPrepaidAccount(_p.checkhead_recip_id); ELSIF (_p.checkhead_recip_type = 'C') THEN PERFORM createARCreditMemo(NULL, _p.checkhead_recip_id, fetchARMemoNumber(), '', pVoidDate, _p.checkhead_amount, _gltransNote || ' '|| _p.checkhead_notes, -1, -1, -1, pVoidDate, -1, NULL, 0.0, pJournalNumber, _p.checkhead_curr_id ); _credit_glaccnt := _p.prepaidaccntid; ELSIF (_p.checkhead_recip_type = 'T') THEN -- TODO: should we create a debit memo for the tax authority? how? _credit_glaccnt := _p.checkrecip_accnt_id; END IF; -- recip type ELSE SELECT expcat_exp_accnt_id INTO _credit_glaccnt FROM expcat WHERE (expcat_id=_p.checkhead_expcat_id); IF (NOT FOUND) THEN RETURN -12; END IF; END IF; IF (COALESCE(_credit_glaccnt, -1) < 0) THEN RETURN -13; END IF; PERFORM insertIntoGLSeries( _sequence, _p.checkrecip_gltrans_source, 'CK', text(_p.checkhead_number), _credit_glaccnt, round(_p.checkhead_amount_base, 2), pVoidDate, _gltransNote, pCheckid); _amount_base := _p.checkhead_amount_base; ELSE FOR _r IN SELECT checkitem_amount, checkitem_discount, CASE WHEN (checkitem_apopen_id IS NOT NULL) THEN checkitem_amount / apopen_curr_rate ELSE currToBase(checkitem_curr_id, checkitem_amount, COALESCE(checkitem_docdate, _p.checkhead_checkdate)) END AS checkitem_amount_base, checkitem_amount / checkitem_curr_rate AS amount_check, apopen_id, apopen_doctype, apopen_docnumber, apopen_curr_rate, apopen_docdate, aropen_id, aropen_doctype, aropen_docnumber, checkitem_curr_id, checkitem_curr_rate, COALESCE(checkitem_docdate, _p.checkhead_checkdate) AS docdate FROM (checkitem LEFT OUTER JOIN apopen ON (checkitem_apopen_id=apopen_id)) LEFT OUTER JOIN aropen ON (checkitem_aropen_id=aropen_id) WHERE (checkitem_checkhead_id=pcheckid) LOOP _exchGainTmp := 0; IF (_r.apopen_id IS NOT NULL) THEN -- undo the APDiscount Credit Memo if a discount was taken IF(_r.checkitem_discount > 0) THEN SELECT NEXTVAL('apopen_apopen_id_seq') INTO _apopenid; SELECT fetchAPMemoNumber() INTO _docnumber; INSERT INTO apopen ( apopen_id, apopen_username, apopen_journalnumber, apopen_vend_id, apopen_docnumber, apopen_doctype, apopen_ponumber, apopen_docdate, apopen_duedate, apopen_distdate, apopen_terms_id, apopen_amount, apopen_paid, apopen_open, apopen_notes, apopen_accnt_id, apopen_curr_id, apopen_discount, apopen_curr_rate, apopen_closedate ) VALUES ( _apopenid, getEffectiveXtUser(), pJournalNumber, _p.checkhead_recip_id, _docnumber, 'D', '', pVoidDate, pVoidDate, pVoidDate, -1, _r.checkitem_discount, _r.checkitem_discount, FALSE, ('Reverse Posted Discount ' || _r.apopen_doctype || ' ' || _r.apopen_docnumber), -1, _p.checkhead_curr_id, TRUE, _r.apopen_curr_rate, current_date ); PERFORM insertIntoGLSeries( _sequence, _p.checkrecip_gltrans_source, 'DS', _r.apopen_docnumber, findAPDiscountAccount(_p.checkhead_recip_id), round(_r.checkitem_discount / _r.apopen_curr_rate, 2) * -1, pVoidDate, _gltransNote, pCheckid); PERFORM insertIntoGLSeries( _sequence, _p.checkrecip_gltrans_source, 'DS', _r.apopen_docnumber, findAPAccount(_p.checkhead_recip_id), round(_r.checkitem_discount / _r.apopen_curr_rate, 2), pVoidDate, _gltransNote, pCheckid); -- Post the application INSERT INTO apapply ( apapply_vend_id, apapply_postdate, apapply_username, apapply_source_apopen_id, apapply_source_doctype, apapply_source_docnumber, apapply_target_apopen_id, apapply_target_doctype, apapply_target_docnumber, apapply_journalnumber, apapply_amount, apapply_curr_id ) VALUES ( _p.checkhead_recip_id, pVoidDate, getEffectiveXtUser(), _apopenid, 'D', _docnumber, _r.apopen_id, _r.apopen_doctype, _r.apopen_docnumber, pJournalNumber, (_r.checkitem_discount * -1), _r.checkitem_curr_id ); END IF; -- discount was taken UPDATE apopen SET apopen_paid = round(apopen_paid - (_r.checkitem_amount + noNeg(_r.checkitem_discount)), 2), apopen_open = round(apopen_amount, 2) > round(apopen_paid - (_r.checkitem_amount + noNeg(_r.checkitem_discount)), 2), apopen_closedate = CASE WHEN (round(apopen_amount, 2) > round(apopen_paid - (_r.checkitem_amount + noNeg(_r.checkitem_discount)))) THEN NULL ELSE apopen_closedate END WHERE (apopen_id=_r.apopen_id); -- Post the application INSERT INTO apapply ( apapply_vend_id, apapply_postdate, apapply_username, apapply_source_apopen_id, apapply_source_doctype, apapply_source_docnumber, apapply_target_apopen_id, apapply_target_doctype, apapply_target_docnumber, apapply_journalnumber, apapply_amount, apapply_curr_id ) VALUES ( _p.checkhead_recip_id, pVoidDate, getEffectiveXtUser(), -1, 'K', _p.checkhead_number, _r.apopen_id, _r.apopen_doctype, _r.apopen_docnumber, pJournalNumber, (_r.checkitem_amount * -1), _r.checkitem_curr_id ); END IF; -- if check item's apopen_id is not null IF (_r.aropen_id IS NOT NULL) THEN UPDATE aropen SET aropen_paid = round(aropen_paid -_r.checkitem_amount, 2), aropen_open = round(aropen_amount, 2) > round(aropen_paid - _r.checkitem_amount, 2) WHERE (aropen_id=_r.aropen_id); -- Post the application INSERT INTO arapply ( arapply_cust_id, arapply_postdate, arapply_distdate, arapply_username, arapply_source_aropen_id, arapply_source_doctype, arapply_source_docnumber, arapply_target_aropen_id, arapply_target_doctype, arapply_target_docnumber, arapply_journalnumber, arapply_applied, arapply_curr_id ) VALUES ( _p.checkhead_recip_id, pVoidDate, pVoidDate, getEffectiveXtUser(), -1, 'K', _p.checkhead_number, _r.aropen_id, _r.aropen_doctype, _r.aropen_docnumber, pJournalNumber, (_r.checkitem_amount * -1), _r.checkitem_curr_id ); END IF; -- if check item's aropen_id is not null -- calculate currency gain/loss IF (_r.apopen_id IS NOT NULL) THEN IF (_p.checkhead_curr_id = _r.checkitem_curr_id) THEN IF (_r.apopen_docdate > _p.checkhead_checkdate) THEN _exchGainTmp := ((_r.checkitem_amount/_p.checkhead_curr_rate) - (_r.checkitem_amount / _r.apopen_curr_rate)) * -1; ELSE _exchGainTmp := ((_r.checkitem_amount / _r.apopen_curr_rate) - (_r.checkitem_amount/_p.checkhead_curr_rate)); END IF; ELSE -- unusual condition where bank overridden and different currency from voucher IF (_r.apopen_docdate > _p.checkhead_checkdate) THEN _exchGainTmp := ((_r.checkitem_amount/_r.checkitem_curr_rate) - (_r.checkitem_amount / _r.apopen_curr_rate)) * -1; ELSE _exchGainTmp := ((_r.checkitem_amount / _r.apopen_curr_rate) - (_r.checkitem_amount/_r.checkitem_curr_rate)); END IF; END IF; ELSE SELECT arCurrGain(_r.aropen_id,_r.checkitem_curr_id, _r.checkitem_amount, _p.checkhead_checkdate) INTO _exchGainTmp; END IF; _exchGain := _exchGain + _exchGainTmp; PERFORM insertIntoGLSeries( _sequence, _p.checkrecip_gltrans_source, 'CK', text(_p.checkhead_number), _p.checkrecip_accnt_id, round(_r.checkitem_amount_base, 2), pVoidDate, _gltransNote, pCheckid); IF (_exchGainTmp <> 0) THEN PERFORM insertIntoGLSeries( _sequence, _p.checkrecip_gltrans_source, 'CK', text(_p.checkhead_number), getGainLossAccntId(_p.checkrecip_accnt_id), round(_exchGainTmp, 2) * -1, pVoidDate, _gltransNote, pCheckid); END IF; _amount_check := (_amount_check + _r.amount_check); _amount_base := (_amount_base + _r.checkitem_amount_base); END LOOP; IF( (_amount_check - _p.checkhead_amount) <> 0.0 ) THEN _exchGainTmp := (_amount_check - _p.checkhead_amount) / _p.checkhead_curr_rate; _exchGain := _exchGain + _exchGainTmp; END IF; -- ensure that the check balances, attribute rounding errors to gain/loss IF round(_amount_base, 2) - round(_exchGain, 2) <> round(_p.checkhead_amount_base, 2) THEN IF round(_amount_base - _exchGain, 2) = round(_p.checkhead_amount_base, 2) THEN PERFORM insertIntoGLSeries( _sequence, _p.checkrecip_gltrans_source, 'CK', text(_p.checkhead_number), getGainLossAccntId(_p.bankaccntid), (round(_amount_base, 2) - round(_exchGain, 2) - round(_p.checkhead_amount_base, 2)) * -1, pVoidDate, _gltransNote, pCheckid); ELSE RAISE EXCEPTION 'checkhead_id % does not balance (% - % <> %)', pCheckid, _amount_base, _exchGain, _p.checkhead_amount_base; END IF; END IF; END IF; PERFORM insertIntoGLSeries( _sequence, _p.checkrecip_gltrans_source, 'CK', text(_p.checkhead_number), _p.bankaccntid, round(_p.checkhead_amount_base, 2) * -1, pVoidDate, _gltransNote, pCheckid); PERFORM postGLSeries(_sequence, pJournalNumber); UPDATE gltrans SET gltrans_misc_id=pCheckid WHERE gltrans_sequence=_sequence; UPDATE checkhead SET checkhead_posted=false, checkhead_void=true, checkhead_journalnumber=pJournalNumber WHERE (checkhead_id=pCheckid); RETURN pJournalNumber; END; $_$; >DROP FUNCTION public.voidpostedcheck(integer, integer, date); publicadminfalse8399212551692891woeffectivedate(date)FUNCTIONqCREATE FUNCTION woeffectivedate(date) RETURNS date LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pStartDate ALIAS FOR $1; BEGIN IF (explodeWoEffective() = 'E') THEN RETURN CURRENT_DATE; ELSE RETURN pStartDate; END IF; END; $_$; ,DROP FUNCTION public.woeffectivedate(date); publicadminfalse83992%125520084487woinvavail(integer, boolean, boolean, boolean, boolean)FUNCTIONCREATE FUNCTION woinvavail(integer, boolean, boolean, boolean, boolean) RETURNS SETOF woinvav LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pwoid ALIAS FOR $1; pshowchildindent ALIAS FOR $2; pshowchildsum ALIAS FOR $3; pshowshortage ALIAS FOR $4; pshowlowinventory ALIAS FOR $5; _row woinvav%ROWTYPE; _subrow woinvav%ROWTYPE; _wonumber TEXT; _x RECORD; _subx RECORD; _qry TEXT; BEGIN IF(pshowchildindent) THEN --get top level order FOR _x IN SELECT wo_id, itemsite_id, item_type, wo_number, wo_subnumber, item_number, item_descrip1, item_descrip2, uom_name, qoh, wobalance, allocated, ordered, reorderlevel, (qoh + ordered - wobalance) AS woavail, (qoh + ordered - allocated) AS totalavail FROM(SELECT wo_id, itemsite_id, item_type, wo_number, wo_subnumber, item_number, item_descrip1, item_descrip2, uom_name, noNeg(itemsite_qtyonhand) AS qoh, noNeg(wo_qtyord - wo_qtyrcv) AS wobalance, qtyAllocated(itemsite_id, wo_duedate) AS allocated, qtyOrdered(itemsite_id, wo_duedate) AS ordered, CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel ELSE 0.0 END AS reorderlevel FROM wo, itemsite, item, uom WHERE ((wo_id = pwoid) AND (itemsite_id = wo_itemsite_id) AND (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id)) ORDER BY wo_number, wo_subnumber) AS data LOOP _row.woinvav_itemsite_id := _x.itemsite_id; _row.woinvav_womatl_id := -1; _row.woinvav_type := _x.item_type; _row.woinvav_item_wo_number := _x.wo_number || '-' || _x.wo_subnumber; _row.woinvav_descrip := _x.item_descrip1 || ' ' || _x.item_descrip2; _row.woinvav_uomname := _x.uom_name; _row.woinvav_qoh := _x.qoh; _row.woinvav_balance := _x.wobalance; _row.woinvav_allocated := _x.allocated; _row.woinvav_ordered := _x.ordered; _row.woinvav_woavail := _x.woavail; _row.woinvav_totalavail := _x.totalavail; _row.woinvav_reorderlevel := _x.reorderlevel; _row.woinvav_level := 0; RETURN NEXT _row; --get materials for this level FOR _subx IN SELECT * FROM woinvavailmatl(_x.wo_id, 1, pshowshortage, pshowlowinventory) LOOP RETURN NEXT _subx; END LOOP; FOR _subx IN SELECT * FROM woinvavail(_x.wo_id, 1, pshowshortage, pshowlowinventory) LOOP RETURN NEXT _subx; END LOOP; END LOOP; ELSE SELECT wo_number FROM wo WHERE wo_id=pwoid LIMIT 1 INTO _wonumber; --display a single level sum of work order requirements _qry := 'SELECT wo_id, itemsite_id, womatl_id, item_type, wo_number, item_number, item_descrip1, item_descrip2, uom_name, qoh, wobalance, allocated, ordered, reorderlevel, (qoh + ordered - wobalance) AS woavail, (qoh + ordered - allocated) AS totalavail FROM (SELECT wo_id, itemsite_id, womatl_id, item_type, wo_number, item_number, item_descrip1, item_descrip2, uom_name, noNeg(itemsite_qtyonhand) AS qoh, noNeg(itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyreq - womatl_qtyiss)) AS wobalance, qtyAllocated(itemsite_id, womatl_duedate) AS allocated, qtyOrdered(itemsite_id, womatl_duedate) AS ordered, CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel ELSE 0.0 END AS reorderlevel FROM wo, womatl, itemsite, item, uom WHERE (womatl_wo_id=wo_id) AND (womatl_itemsite_id=itemsite_id) AND (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id) '; IF(pshowchildsum) THEN _qry := _qry || ' AND (wo_number=' || _wonumber || ')'; ELSE _qry := _qry || ' AND (womatl_wo_id=' || pwoid || ')'; END IF; _qry := _qry || ' ORDER BY item_number) AS data '; IF(pshowshortage) THEN _qry := _qry || ' WHERE (((qoh + ordered - allocated) < 0) OR ((qoh + ordered - wobalance) < 0)) '; END IF; IF(pshowlowinventory AND NOT pshowshortage) THEN _qry := _qry || ' WHERE (((qoh - allocated) < 0) OR ((qoh - wobalance) < 0)) '; END IF; FOR _x IN EXECUTE _qry LOOP _row.woinvav_itemsite_id := _x.itemsite_id; _row.woinvav_womatl_id := _x.womatl_id; _row.woinvav_type := _x.item_type; _row.woinvav_item_wo_number := _x.item_number; _row.woinvav_descrip := _x.item_descrip1 || ' ' || _x.item_descrip2; _row.woinvav_uomname := _x.uom_name; _row.woinvav_qoh := _x.qoh; _row.woinvav_balance := _x.wobalance; _row.woinvav_allocated := _x.allocated; _row.woinvav_ordered := _x.ordered; _row.woinvav_woavail := _x.woavail; _row.woinvav_totalavail := _x.totalavail; _row.woinvav_reorderlevel := _x.reorderlevel; _row.woinvav_level := 0; RETURN NEXT _row; END LOOP; END IF; RETURN; END; $_$; NDROP FUNCTION public.woinvavail(integer, boolean, boolean, boolean, boolean); publicadminfalse839922615&12552008449.woinvavail(integer, integer, boolean, boolean)FUNCTION: CREATE FUNCTION woinvavail(integer, integer, boolean, boolean) RETURNS SETOF woinvav LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pwoid ALIAS FOR $1; plevel ALIAS FOR $2; pshowshortage ALIAS FOR $3; pshowlowinventory ALIAS FOR $4; _row woinvav%ROWTYPE; _x RECORD; _subx RECORD; _index INTEGER; _level INTEGER; _qry TEXT; BEGIN FOR _x IN SELECT wo_id, itemsite_id, item_type, wo_number, wo_subnumber, item_number, item_descrip1, item_descrip2, uom_name, qoh, wobalance, allocated, ordered, reorderlevel, (qoh + ordered - wobalance) AS woavail, (qoh + ordered - allocated) AS totalavail FROM(SELECT wo_id, itemsite_id, item_type, wo_number, wo_subnumber, item_number, item_descrip1, item_descrip2, uom_name, noNeg(itemsite_qtyonhand) AS qoh, noNeg(wo_qtyord - wo_qtyrcv) AS wobalance, qtyAllocated(itemsite_id, wo_duedate) AS allocated, qtyOrdered(itemsite_id, wo_duedate) AS ordered, CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel ELSE 0.0 END AS reorderlevel FROM wo, itemsite, item, uom WHERE ((wo_ordid = pwoid) AND NOT (wo_status = 'C') AND (itemsite_id = wo_itemsite_id) AND (itemsite_item_id=item_id) AND (item_inv_uom_id=uom_id)) ORDER BY wo_number, wo_subnumber) AS data LOOP _row.woinvav_itemsite_id := _x.itemsite_id; _row.woinvav_womatl_id := -1; _row.woinvav_type := _x.item_type; _row.woinvav_item_wo_number := _x.wo_number || '-' || _x.wo_subnumber; _row.woinvav_descrip := _x.item_descrip1 || ' ' || _x.item_descrip2; _row.woinvav_uomname := _x.uom_name; _row.woinvav_qoh := _x.qoh; _row.woinvav_balance := _x.wobalance; _row.woinvav_allocated := _x.allocated; _row.woinvav_ordered := _x.ordered; _row.woinvav_woavail := _x.woavail; _row.woinvav_totalavail := _x.totalavail; _row.woinvav_reorderlevel := _x.reorderlevel; _row.woinvav_level := plevel; RETURN NEXT _row; --get materials for this level FOR _subx IN SELECT * FROM woinvavailmatl(_x.wo_id, plevel + 1, pshowshortage, pshowlowinventory) LOOP RETURN NEXT _subx; END LOOP; --get next level wo FOR _subx IN SELECT * FROM woinvavail(_x.wo_id, plevel + 1, pshowshortage, pshowlowinventory) LOOP RETURN NEXT _subx; END LOOP; END LOOP; RETURN; END; $_$; EDROP FUNCTION public.woinvavail(integer, integer, boolean, boolean); publicadminfalse839922615)125520084502woinvavailmatl(integer, integer, boolean, boolean)FUNCTION CREATE FUNCTION woinvavailmatl(integer, integer, boolean, boolean) RETURNS SETOF woinvav LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pwoid ALIAS FOR $1; plevel ALIAS FOR $2; pshowshortage ALIAS FOR $3; pshowlowinventory ALIAS FOR $4; _subrow woinvav%ROWTYPE; _subx RECORD; _qry TEXT; BEGIN _qry := 'SELECT itemsite_id, womatl_id, item_type, wo_number, wo_subnumber, womatl_ref, womatl_notes, item_number, item_descrip1, item_descrip2, uom_name, qoh, wobalance, allocated, ordered, (qoh + ordered - wobalance) AS woavail, (qoh + ordered - allocated) AS totalavail, reorderlevel FROM(SELECT itemsite_id, womatl_id, item_type, wo_number, wo_subnumber, womatl_ref, womatl_notes, item_number, item_descrip1, item_descrip2, uom_name, noNeg(itemsite_qtyonhand) AS qoh, noNeg(itemuomtouom(itemsite_item_id, womatl_uom_id, NULL, womatl_qtyreq - womatl_qtyiss)) AS wobalance, qtyAllocated(itemsite_id, womatl_duedate) AS allocated, qtyOrdered(itemsite_id, womatl_duedate) AS ordered, CASE WHEN(itemsite_useparams) THEN itemsite_reorderlevel ELSE 0.0 END AS reorderlevel FROM womatl, wo, itemsite, item, uom WHERE ((wo_id = womatl_wo_id) AND (womatl_itemsite_id = itemsite_id) AND (itemsite_item_id=item_id) AND (womatl_uom_id=uom_id) AND (NOT womatl_createwo OR womatl_createwo IS NULL))'; _qry := _qry || ' AND (wo_id=' || pwoid || ') ORDER BY item_number) AS data'; IF(pshowshortage) THEN _qry := _qry || ' WHERE (((qoh + ordered - allocated) < 0) OR ((qoh + ordered - wobalance) < 0)) '; END IF; IF(pshowlowinventory AND NOT pshowshortage) THEN _qry := _qry || ' WHERE (((qoh - allocated) < 0) OR ((qoh - wobalance) < 0)) '; END IF; FOR _subx IN EXECUTE _qry LOOP _subrow.woinvav_itemsite_id := _subx.itemsite_id; _subrow.woinvav_womatl_id := _subx.womatl_id; _subrow.woinvav_type := _subx.item_type; _subrow.woinvav_item_wo_number := _subx.item_number; _subrow.woinvav_descrip := _subx.item_descrip1 || ' ' || _subx.item_descrip2; _subrow.woinvav_uomname := _subx.uom_name; _subrow.woinvav_qoh := _subx.qoh; _subrow.woinvav_balance := _subx.wobalance; _subrow.woinvav_allocated := _subx.allocated; _subrow.woinvav_ordered := _subx.ordered; _subrow.woinvav_woavail := _subx.woavail; _subrow.woinvav_totalavail := _subx.totalavail; _subrow.woinvav_reorderlevel := _subx.reorderlevel; _subrow.woinvav_level := plevel; RETURN NEXT _subrow; END LOOP; RETURN; END; $_$; IDROP FUNCTION public.woinvavailmatl(integer, integer, boolean, boolean); publicadminfalse839922615312551692895wostarted(integer)FUNCTIONCREATE FUNCTION wostarted(pwoid integer) RETURNS boolean LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _result BOOLEAN := FALSE; BEGIN -- is it really this simple? SELECT (wo_wipvalue > 0) INTO _result FROM wo WHERE wo_id=pWoid; RETURN COALESCE(_result, FALSE); END; $$; /DROP FUNCTION public.wostarted(pwoid integer); publicadminfalse8399212551692896calcrate(numeric, character)FUNCTIONtCREATE FUNCTION calcrate(numeric, character) RETURNS numeric LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pAmount ALIAS FOR $1; pPeriod ALIAS FOR $2; _state integer; _count integer; BEGIN -- Convert amount to hourly rate IF (pPeriod = 'H') THEN -- hourly RETURN round(pAmount,2); ELSIF (pPeriod = 'D') THEN -- daily RETURN round(pAmount / 8, 2); ELSIF (pPeriod = 'W') THEN -- weekly RETURN round(pAmount / 40, 2); ELSIF (pPeriod = 'BW') THEN -- bi-weekly RETURN round(pAmount / 80, 2); ELSIF (pPeriod = 'M') THEN -- monthly RETURN round(pAmount / 160, 2); ELSIF (pPeriod = 'Y') THEN -- annually RETURN round(pAmount / 2080, 2); ELSE RAISE EXCEPTION 'Unknown period type passed: %', pPeriod; END IF; END; $_$; /DROP FUNCTION te.calcrate(numeric, character); teadminfalse9399212551692897copyitem(integer, text)FUNCTIONCREATE FUNCTION copyitem(integer, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pSItemid ALIAS FOR $1; pTItemNumber ALIAS FOR $2; _itemid INTEGER; _r RECORD; _id INTEGER; BEGIN _itemid := public.copyItem(pSItemid, pTItemNumber); INSERT INTO te.teexp SELECT _itemid, teexp_expcat_id, teexp_accnt_id FROM te.teexp src WHERE (src.teexp_id=pSItemid); RETURN _itemid; END; $_$; *DROP FUNCTION te.copyitem(integer, text); teadminfalse93992w12551692898invoicesheets(integer[])FUNCTIONCREATE FUNCTION invoicesheets(integer[]) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pHeadIDs ALIAS FOR $1; _invcnum text; _invcheadid integer; _invcitemid integer; _s record; _t record; _linenum integer; BEGIN -- Loop through time sheet items with matching criteria and make invoices FOR _s in SELECT DISTINCT teitem_cust_id, teitem_po, prj_id, teitem_curr_id FROM te.tehead JOIN te.teitem ON (teitem_tehead_id=tehead_id AND teitem_billable) JOIN prjtask ON (teitem_prjtask_id=prjtask_id) JOIN prj ON (prjtask_prj_id=prj_id) WHERE ((tehead_id IN (SELECT * FROM te.unnest(pHeadIDs) ) ) AND (teitem_billable) AND (teitem_invcitem_id IS NULL)) -- loop thru records and create invoices by customer, by PO for the provided headid LOOP --select nextval('invchead_invchead_id_seq') into _invcid; _invcnum := CAST(fetchInvcNumber() AS TEXT); _invcheadid := nextval('invchead_invchead_id_seq'); _linenum := 1; INSERT INTO invchead SELECT _invcheadid, cust_id, -1, '', current_date, false, false, _invcnum, current_date, current_date, _s.teitem_po, '', '', cust_name, COALESCE(addr_line1,''), COALESCE(addr_line2,''), COALESCE(addr_line3,''), COALESCE(addr_city,''), COALESCE(addr_state,''), COALESCE(addr_postalcode,''), cntct_phone, '', '', '', '', '', '', '', '', cust_salesrep_id, salesrep_commission, cust_terms_id, 0, 0, '', -1, 0, '', '', COALESCE(addr_country,''), '', _s.prj_id, _s.teitem_curr_id, current_date, false, null, null, null, null, null, cust_taxzone_id FROM custinfo JOIN salesrep ON (cust_salesrep_id=salesrep_id) LEFT OUTER JOIN cntct ON (cust_cntct_id=cntct_id) LEFT OUTER JOIN addr ON (cntct_addr_id=addr_id) WHERE (cust_id=_s.teitem_cust_id); -- loop thru all lines of the sheet FOR _t IN SELECT teitem_id, teitem_linenumber, tehead_warehous_id, teitem_type, tehead_emp_id, cust_taxzone_id, item_number, teitem_cust_id, teitem_po, teitem_item_id, teitem_qty, teitem_uom_id, teitem_rate, teitem_notes FROM te.teitem JOIN te.tehead ON (teitem_tehead_id = tehead_id) JOIN custinfo ON (cust_id = teitem_cust_id) JOIN item ON (item_id = teitem_item_id) JOIN prjtask ON (teitem_prjtask_id=prjtask_id) JOIN prj ON (prjtask_prj_id=prj_id) WHERE ((tehead_id IN (SELECT * FROM te.unnest(pHeadIDs) ) ) AND (teitem_billable) AND (teitem_invcitem_id IS NULL) AND (item_id = teitem_item_id) AND (teitem_cust_id = _s.teitem_cust_id) AND (teitem_po = _s.teitem_po) AND (prj_id = _s.prj_id) AND (teitem_curr_id = _s.teitem_curr_id)) ORDER BY teitem_linenumber LOOP _invcitemid := nextval('invcitem_invcitem_id_seq'); INSERT INTO invcitem SELECT _invcitemid, _invcheadid, _linenum, _t.teitem_item_id, _t.tehead_warehous_id, '', '', '', _t.teitem_qty, _t.teitem_qty, _t.teitem_rate, _t.teitem_rate, _t.teitem_notes, -1, getItemTaxType(item_id, _t.cust_taxzone_id), _t.teitem_uom_id, itemuomtouomratio(item_id, _t.teitem_uom_id, item_inv_uom_id), _t.teitem_uom_id, itemuomtouomratio(item_id, _t.teitem_uom_id, item_inv_uom_id), null FROM item WHERE (item_id=_t.teitem_item_id); _linenum := _linenum + 1; -- Update the time sheet item record UPDATE te.teitem SET teitem_invcitem_id = _invcitemid WHERE (teitem_id = _t.teitem_id); END LOOP; END LOOP; RETURN 1; END; $_$; +DROP FUNCTION te.invoicesheets(integer[]); teadminfalse39929x12551692899postsheet(integer, text, text)FUNCTION CREATE FUNCTION postsheet(integer, text, text) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTeheadId ALIAS FOR $1; pPhrase1 ALIAS FOR $2; pPhrase2 ALIAS FOR $3; _r record; _notes TEXT; _value NUMERIC; _olaccntid INTEGER; _expaccntid INTEGER; _count INTEGER; BEGIN -- Validate: No posting for contractors IF (SELECT (count(teemp_id) > 0) FROM te.tehead JOIN te.teemp ON (tehead_emp_id=teemp_emp_id) WHERE ((tehead_id=pTeheadId) AND (teemp_contractor))) THEN RAISE EXCEPTION 'Time and Expense Sheets can not be posted for contractors. Voucher instead.'; END IF; -- Get labor and overhead account SELECT accnt_id INTO _olaccntid FROM accnt WHERE (accnt_id=fetchmetricvalue('PrjLaborAndOverhead')); GET DIAGNOSTICS _count = ROW_COUNT; IF (_count = 0) THEN RAISE EXCEPTION 'No valid Project Labor and Overhead Account Defined'; END IF; -- Get applicable time sheets FOR _r IN SELECT tehead_number, teitem_id, teitem_linenumber, teitem_type, teitem_notes, item_descrip1, teitem_qty, teexp_expcat_id, teexp_accnt_id, emp_code, emp_wage, emp_wage_period, prj_id, prj_number FROM te.tehead JOIN te.teitem ON (teitem_tehead_id=tehead_id) JOIN item ON (teitem_item_id=item_id) JOIN te.teexp ON (teitem_item_id=teexp_id) JOIN emp ON (tehead_emp_id=emp_id) JOIN prjtask ON (prjtask_id=teitem_prjtask_id) JOIN prj ON (prj_id=prjtask_prj_id) WHERE ((tehead_id = pTeheadId) AND (NOT teitem_posted) AND (teitem_vodist_id IS NULL) AND (teitem_type = 'T')) LOOP -- Determine value _value := te.calcRate(_r.emp_wage, _r.emp_wage_period) * _r.teitem_qty; -- Determine G/L account to post to IF (_r.teexp_accnt_id > 1) THEN _expaccntid := getPrjAccntId(_r.prj_id, _r.teexp_accnt_id); ELSE SELECT getPrjAccntId(_r.prj_id, expcat_exp_accnt_id) INTO _expaccntid FROM expcat WHERE (expcat_id=_r.teexp_expcat_id); END IF; -- Execute the posting _notes := (pPhrase1 || _r.item_descrip1 || '/' || _r.emp_code || pPhrase2 || ' ' || _r.prj_number); PERFORM insertGLTransaction( 'T/E', 'TE', _r.tehead_number, _notes, _olaccntid, _expaccntid, -1, _value, current_date ); -- Update the time sheet item UPDATE te.teitem SET teitem_posted = true, teitem_postedvalue = teitem_postedvalue + _value WHERE (teitem_id=_r.teitem_id); END LOOP; RETURN 1; END; $_$; 1DROP FUNCTION te.postsheet(integer, text, text); teadminfalse93992z12551692900sheetstate(integer, character)FUNCTIONCREATE FUNCTION sheetstate(integer, character) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pTeheadId ALIAS FOR $1; pType ALIAS FOR $2; _state INTEGER := -1; BEGIN -- Check and return the process state of the sheet -- 1 = All processed -- 0 = Processing required -- -1 = Not Applicable IF (pType = 'I') THEN SELECT MIN(CASE teitem_invcitem_id IS NULL WHEN TRUE THEN 0 ELSE 1 END) INTO _state FROM te.teitem WHERE ((teitem_tehead_id=pTeheadId) AND (teitem_billable) AND (teitem_qty >= 0)); ELSIF (pType = 'V') THEN -- todo: why outer join then check teitem_type and vend_id is not null? SELECT MIN(CASE teitem_vodist_id IS NULL WHEN TRUE THEN 0 ELSE 1 END) INTO _state FROM te.tehead JOIN emp ON (tehead_emp_id=emp_id) LEFT OUTER JOIN te.teemp ON (emp_id=teemp_emp_id) LEFT OUTER JOIN te.teitem ON (teitem_tehead_id=tehead_id) LEFT OUTER JOIN vendinfo ON (UPPER(emp_number)=UPPER(vend_number)) WHERE ((teitem_tehead_id=pTeheadId) AND ((teitem_type = 'E' AND NOT teitem_prepaid) OR (teitem_type = 'T' AND COALESCE(teemp_contractor,false))) AND (vend_id IS NOT NULL) AND (teitem_qty > 0)); ELSIF (pType = 'P') THEN SELECT MIN(CASE teitem_posted WHEN FALSE THEN 0 ELSE 1 END) INTO _state FROM te.teitem JOIN te.tehead ON (teitem_tehead_id=tehead_id) JOIN te.teemp ON (tehead_emp_id=teemp_emp_id) WHERE ((teitem_tehead_id=pTeheadId) AND (teitem_type = 'T') AND (NOT teemp_contractor)); ELSE -- TODO: either make ErrorReporter::error find this or use xtuple RAISE EXCEPTION 'Unknown process type % [xtte: sheetstate, -2, %]', pType, pType; END IF; RETURN _state; END; $_$; 1DROP FUNCTION te.sheetstate(integer, character); teadminfalse93992{12551692901triggertehead()FUNCTIONCREATE FUNCTION triggertehead() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; _sense INTEGER := 0; BEGIN -- Determine whether we are adding or subtracting totals IF (TG_OP = 'UPDATE') THEN IF (OLD.tehead_status = 'O' AND NEW.tehead_status = 'A') THEN -- Approving so add _sense := 1; ELSIF (OLD.tehead_status = 'A' AND NEW.tehead_status = 'O') THEN -- Unapproving so subtract _sense := -1; END IF; END IF; IF (_sense != 0) THEN -- Loop thru all lines of the sheet and update project FOR _r in SELECT teitem_prjtask_id, teitem_type, teitem_qty, teitem_total FROM te.teitem WHERE teitem_tehead_id = NEW.tehead_id LOOP IF (_r.teitem_type = 'T') THEN UPDATE prjtask SET prjtask_hours_actual = prjtask_hours_actual + _r.teitem_qty * _sense WHERE prjtask_id = _r.teitem_prjtask_id; ELSE UPDATE prjtask SET prjtask_exp_actual = prjtask_exp_actual + _r.teitem_total * _sense WHERE prjtask_id = _r.teitem_prjtask_id; END IF; END LOOP; END IF; RETURN NEW; END; $$; "DROP FUNCTION te.triggertehead(); teadminfalse39929q12551692902triggerteitem()FUNCTION> CREATE FUNCTION triggerteitem() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _r RECORD; _status CHAR(1) := 'O'; BEGIN -- Validate whether we can take this action IF (TG_OP = 'UPDATE') THEN IF ((OLD.teitem_type != NEW.teitem_type) OR (OLD.teitem_workdate != NEW.teitem_workdate) OR (OLD.teitem_cust_id != NEW.teitem_cust_id) OR (OLD.teitem_po != NEW.teitem_po) OR (OLD.teitem_item_id != NEW.teitem_item_id) OR (OLD.teitem_qty != NEW.teitem_qty) OR (OLD.teitem_rate != NEW.teitem_rate) OR (OLD.teitem_total != NEW.teitem_total) OR (OLD.teitem_billable != NEW.teitem_billable) OR (OLD.teitem_prepaid != NEW.teitem_prepaid) OR (OLD.teitem_notes != NEW.teitem_notes)) THEN SELECT tehead_status INTO _status FROM te.tehead WHERE tehead_id=NEW.teitem_tehead_id; END IF; ELSIF (TG_OP = 'INSERT') THEN SELECT tehead_status INTO _status FROM te.tehead WHERE tehead_id=NEW.teitem_tehead_id; ELSE -- Must be delete SELECT tehead_status INTO _status FROM te.tehead WHERE tehead_id=OLD.teitem_tehead_id; END IF; IF (_status != 'O') THEN RAISE EXCEPTION 'Time and Expense Sheets may only be edited or deleted when the status is Open'; END IF; _status := 'C'; -- Update header status, default is to close if all processing complete IF (TG_OP = 'UPDATE') THEN IF ((COALESCE(OLD.teitem_invcitem_id,-1) != COALESCE(NEW.teitem_invcitem_id,-1)) OR (COALESCE(OLD.teitem_vodist_id,-1) != COALESCE(NEW.teitem_vodist_id,-1)) OR (OLD.teitem_posted != NEW.teitem_posted)) THEN SELECT te.sheetstate(NEW.teitem_tehead_id, 'I') AS invoiced, te.sheetstate(NEW.teitem_tehead_id, 'V') AS vouchered, te.sheetstate(NEW.teitem_tehead_id, 'P') AS posted INTO _r; IF (_r.invoiced = 0 OR _r.vouchered = 0 OR _r.posted = 0) THEN _status := 'A'; -- Something is still open, so approved END IF; UPDATE te.tehead SET tehead_status = _status WHERE (tehead_id=NEW.teitem_tehead_id); END IF; END IF; -- Update header with last use info IF (TG_OP = 'DELETE') THEN UPDATE te.tehead SET tehead_lastupdated=('now'::text)::timestamp(6) with time zone WHERE (tehead_id=OLD.teitem_tehead_id); ELSE UPDATE te.tehead SET tehead_lastupdated=('now'::text)::timestamp(6) with time zone, tehead_username=current_user WHERE (tehead_id=NEW.teitem_tehead_id); END IF; RETURN NEW; END; $$; "DROP FUNCTION te.triggerteitem(); teadminfalse93992r12551692903triggerteprj()FUNCTIONCREATE FUNCTION triggerteprj() RETURNS trigger LANGUAGE plpgsql AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _update BOOLEAN := false; BEGIN IF (TG_OP = 'INSERT') THEN _update = true; ELSIF (TG_OP = 'UPDATE') THEN IF (COALESCE(OLD.teprj_cust_id,-1) != COALESCE(NEW.teprj_cust_id,-1)) THEN _update = true; END IF; END IF; IF (_update) THEN UPDATE te.teprjtask SET teprjtask_cust_id=NEW.teprj_cust_id FROM prjtask WHERE ((teprjtask_prjtask_id=prjtask_id) AND (prjtask_prj_id=NEW.teprj_prj_id)); END IF; RETURN NEW; END; $$; !DROP FUNCTION te.triggerteprj(); teadminfalse39929m12551692904unnest(anyarray)FUNCTIONGCREATE FUNCTION unnest(anyarray) RETURNS SETOF anyelement LANGUAGE sql IMMUTABLE AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. SELECT $1[i] FROM generate_series(array_lower($1,1), array_upper($1,1)) i; $_$; #DROP FUNCTION te.unnest(anyarray); teadminfalse912551692905vouchersheet(integer)FUNCTIONCREATE FUNCTION vouchersheet(integer) RETURNS integer LANGUAGE plpgsql AS $_$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE pHeadID ALIAS FOR $1; _distamt NUMERIC; _glaccnt INTEGER; _notes TEXT; _s RECORD; _total NUMERIC := 0; _v RECORD; _vodistid INTEGER; _voheadid INTEGER; BEGIN FOR _v IN -- distinct filters duplicate rows returned because of the teitem join -- TODO: can we push the teitem down into the loop and avoid the distinct? SELECT DISTINCT tehead_id, tehead_number, tehead_weekending, tehead_notes, teitem_curr_id, emp_wage, emp_wage_period, vend_id, vend_taxzone_id, vend_terms_id, vend_number, vend_1099, COALESCE(teemp_contractor, false) AS isContractor FROM te.tehead JOIN te.teitem ON (teitem_tehead_id=tehead_id) JOIN emp ON (tehead_emp_id=emp_id) JOIN vendinfo ON (UPPER(emp_number)=UPPER(vend_number)) LEFT OUTER JOIN te.teemp ON (emp_id=teemp_emp_id) WHERE ((tehead_id = pHeadID) AND (teitem_prepaid = false) AND (teitem_vodist_id IS NULL) AND (teitem_type = 'E' OR (COALESCE(teemp_contractor,false) AND (teitem_empcost > 0 OR emp_wage > 0 )))) LOOP INSERT INTO vohead (vohead_id, vohead_number, vohead_vend_id, vohead_distdate, vohead_docdate, vohead_duedate, vohead_terms_id, vohead_taxzone_id, vohead_invcnumber, vohead_reference, vohead_amount, vohead_1099, vohead_curr_id, vohead_notes, vohead_posted, vohead_misc, vohead_pohead_id) VALUES (DEFAULT, fetchVoNumber(), _v.vend_id, _v.tehead_weekending, _v.tehead_weekending, determineDueDate(_v.vend_terms_id, _v.tehead_weekending), _v.vend_terms_id, _v.vend_taxzone_id, 'N/A', ('T&E Sheet ' || _v.tehead_number), 0, _v.vend_1099, _v.teitem_curr_id, _v.tehead_notes, false, true, -1) RETURNING vohead_id INTO _voheadid; FOR _s IN SELECT teitem_id, teitem_linenumber, teitem_workdate, teitem_type, item_number, teitem_item_id, teitem_qty, prjtask_prj_id, CASE WHEN teitem_empcost > 0 THEN teitem_empcost ELSE te.calcRate(_v.emp_wage, _v.emp_wage_period) END AS rate, teitem_total, teitem_type, teexp_expcat_id, teexp_accnt_id FROM te.teitem JOIN te.teexp ON (teitem_item_id=teexp_id) JOIN item ON (teitem_item_id=item_id) JOIN prjtask ON (teitem_prjtask_id=prjtask_id) WHERE ((teitem_tehead_id = _v.tehead_id) AND (teitem_curr_id = _v.teitem_curr_id) AND (teitem_prepaid = false) AND (teitem_vodist_id IS NULL) AND (teitem_type = 'E' OR (_v.isContractor AND (teitem_empcost > 0 OR _v.emp_wage > 0 )))) -- Loop thru records and create vouchers by supplier for the provided headid LOOP -- insert vodist records here _vodistid = nextval('vodist_vodist_id_seq'); -- Map expense directly to account so we can get project account mapping if applicable IF (_s.teexp_accnt_id > 1) THEN _glaccnt := getPrjAccntId(_s.prjtask_prj_id, _s.teexp_accnt_id); ELSE SELECT getPrjAccntId(_s.prjtask_prj_id, expcat_exp_accnt_id) INTO _glaccnt FROM expcat WHERE (expcat_id=_s.teexp_expcat_id); END IF; IF (_s.teitem_type = 'T') THEN -- Time sheet record _notes := formatdate(_s.teitem_workdate) || E'\t' || _s.item_number || E'\t' || formatQty(_s.teitem_qty) || ' hours' || E'\t'; _distamt := _s.rate * _s.teitem_qty; ELSE -- Expense record _notes := formatdate(_s.teitem_workdate) || E'\t' || _s.item_number || E'\t' || E'\t'; _distamt := _s.teitem_total; END IF; INSERT INTO vodist (vodist_id, vodist_vohead_id, vodist_poitem_id, vodist_costelem_id, vodist_accnt_id, vodist_amount, vodist_expcat_id, vodist_notes) VALUES (_vodistid, _voheadid, -1, -1, _glaccnt, _distamt, -1, _notes); _total := _total + _distamt; -- Update the te.teitem record with the relationship UPDATE te.teitem SET teitem_vodist_id = _vodistid WHERE teitem_id = _s.teitem_id; END LOOP; UPDATE vohead SET vohead_amount = _total WHERE (vohead_id=_voheadid); _total := 0; END LOOP; RETURN 1; END; $_$; (DROP FUNCTION te.vouchersheet(integer); teadminfalse9399212551692907fetchwelcomehtml()FUNCTIONUCREATE FUNCTION fetchwelcomehtml() RETURNS text LANGUAGE plpgsql IMMUTABLE AS $$ -- Copyright (c) 1999-2012 by OpenMFG LLC, d/b/a xTuple. -- See www.xtuple.com/CPAL for the full text of the software license. DECLARE _html TEXT; BEGIN _html := '

Welcome to xTuple


You are not connected to the internet at this time

'; RETURN _html; END; $$; ,DROP FUNCTION xtdesktop.fetchwelcomehtml();  xtdesktopadminfalse10399212552008355concatagg(text) AGGREGATEfCREATE AGGREGATE concatagg(text) ( SFUNC = concataggsfunc, STYPE = text, INITCOND = '' ); 'DROP AGGREGATE public.concatagg(text); publicadminfalse8105412552008379first(anyelement) AGGREGATEVCREATE AGGREGATE first(anyelement) ( SFUNC = first_agg, STYPE = anyelement ); )DROP AGGREGATE public.first(anyelement); publicadminfalse8119112552008407last(anyelement) AGGREGATETCREATE AGGREGATE last(anyelement) ( SFUNC = last_agg, STYPE = anyelement ); (DROP AGGREGATE public.last(anyelement); publicadminfalse8193412591692938addrTABLECREATE TABLE addr ( addr_id integer NOT NULL, addr_active boolean DEFAULT true, addr_line1 text DEFAULT ''::text, addr_line2 text DEFAULT ''::text, addr_line3 text DEFAULT ''::text, addr_city text DEFAULT ''::text, addr_state text DEFAULT ''::text, addr_postalcode text DEFAULT ''::text, addr_country text DEFAULT ''::text, addr_notes text DEFAULT ''::text, addr_number text NOT NULL, CONSTRAINT addr_addr_number_check CHECK ((addr_number <> ''::text)) ); DROP TABLE public.addr; publicadminfalse59505951595259535954595559565957595859608"00 TABLE addrCOMMENT+COMMENT ON TABLE addr IS 'Postal Address'; publicadminfalse184"00addrACLREVOKE ALL ON TABLE addr FROM PUBLIC; REVOKE ALL ON TABLE addr FROM admin; GRANT ALL ON TABLE addr TO admin; GRANT ALL ON TABLE addr TO xtrole; publicadminfalse18412592008619accountVIEW CREATE VIEW account AS SELECT (c.crmacct_number)::character varying AS account_number, p.crmacct_number AS parent_account, c.crmacct_name AS account_name, c.crmacct_active AS active, CASE WHEN (c.crmacct_type = 'O'::bpchar) THEN 'Organization'::text ELSE 'Individual'::text END AS type, pc.cntct_number AS primary_contact_number, pc.cntct_honorific AS primary_contact_honorific, pc.cntct_first_name AS primary_contact_first, pc.cntct_middle AS primary_contact_middle, pc.cntct_last_name AS primary_contact_last, pc.cntct_suffix AS primary_contact_suffix, pc.cntct_title AS primary_contact_job_title, pc.cntct_phone AS primary_contact_voice, pc.cntct_fax AS primary_contact_fax, pc.cntct_email AS primary_contact_email, ''::text AS primary_contact_change, m.addr_number AS primary_contact_address_number, m.addr_line1 AS primary_contact_address1, m.addr_line2 AS primary_contact_address2, m.addr_line3 AS primary_contact_address3, m.addr_city AS primary_contact_city, m.addr_state AS primary_contact_state, m.addr_postalcode AS primary_contact_postalcode, m.addr_country AS primary_contact_country, ''::text AS primary_contact_address_change, sc.cntct_number AS secondary_contact_number, sc.cntct_honorific AS secondary_contact_honorific, sc.cntct_first_name AS secondary_contact_first, sc.cntct_middle AS secondary_contact_middle, sc.cntct_last_name AS secondary_contact_last, sc.cntct_suffix AS secondary_contact_suffix, sc.cntct_title AS secondary_contact_job_title, sc.cntct_phone AS secondary_contact_voice, sc.cntct_fax AS secondary_contact_fax, sc.cntct_email AS secondary_contact_email, sc.cntct_webaddr AS secondary_contact_web, ''::text AS secondary_contact_change, s.addr_number AS secondary_contact_address_number, s.addr_line1 AS secondary_contact_address1, s.addr_line2 AS secondary_contact_address2, s.addr_line3 AS secondary_contact_address3, s.addr_city AS secondary_contact_city, s.addr_state AS secondary_contact_state, s.addr_postalcode AS secondary_contact_postalcode, s.addr_country AS secondary_contact_country, ''::text AS secondary_contact_address_change, c.crmacct_notes AS notes FROM (((((public.crmacct c LEFT JOIN public.crmacct p ON ((c.crmacct_id = p.crmacct_parent_id))) LEFT JOIN public.cntct pc ON ((c.crmacct_cntct_id_1 = pc.cntct_id))) LEFT JOIN public.addr m ON ((pc.cntct_addr_id = m.addr_id))) LEFT JOIN public.cntct sc ON ((c.crmacct_cntct_id_2 = sc.cntct_id))) LEFT JOIN public.addr s ON ((sc.cntct_addr_id = s.addr_id))); DROP VIEW api.account; apiadminfalse51646"00 VIEW accountCOMMENT&COMMENT ON VIEW account IS 'Account'; apiadminfalse743"00accountACLREVOKE ALL ON TABLE account FROM PUBLIC; REVOKE ALL ON TABLE account FROM admin; GRANT ALL ON TABLE account TO admin; GRANT ALL ON TABLE account TO xtrole; apiadminfalse74312591692958charTABLECREATE TABLE "char" ( char_id integer NOT NULL, char_name text NOT NULL, char_items boolean, char_options boolean, char_attributes boolean, char_lotserial boolean, char_notes text, char_customers boolean, char_crmaccounts boolean, char_addresses boolean, char_contacts boolean, char_opportunity boolean, char_employees boolean DEFAULT false, char_mask text, char_validator text, char_incidents boolean DEFAULT false, char_type integer DEFAULT 0 NOT NULL, char_order integer DEFAULT 0 NOT NULL, char_search boolean DEFAULT true NOT NULL, CONSTRAINT char_char_name_check CHECK ((char_name <> ''::text)) ); DROP TABLE public."char"; publicadminfalse5961596259635964596559678"00 TABLE "char"COMMENT9COMMENT ON TABLE "char" IS 'Characteristic information'; publicadminfalse185 "00charACLREVOKE ALL ON TABLE "char" FROM PUBLIC; REVOKE ALL ON TABLE "char" FROM admin; GRANT ALL ON TABLE "char" TO admin; GRANT ALL ON TABLE "char" TO xtrole; publicadminfalse18512591692969charassTABLECREATE TABLE charass ( charass_id integer NOT NULL, charass_target_type text, charass_target_id integer, charass_char_id integer, charass_value text, charass_default boolean DEFAULT false NOT NULL, charass_price numeric(16,4) DEFAULT 0 NOT NULL ); DROP TABLE public.charass; publicadminfalse596959708!"00 TABLE charassCOMMENTECOMMENT ON TABLE charass IS 'Characteristic assignment information'; publicadminfalse186""00charassACLREVOKE ALL ON TABLE charass FROM PUBLIC; REVOKE ALL ON TABLE charass FROM admin; GRANT ALL ON TABLE charass TO admin; GRANT ALL ON TABLE charass TO xtrole; publicadminfalse18612592008629 accountcharVIEWCREATE VIEW accountchar AS SELECT (crmacct.crmacct_number)::character varying AS account_number, ("char".char_name)::character varying AS characteristic, charass.charass_value AS value FROM public.crmacct, public."char", public.charass WHERE ((('CRMACCT'::text = charass.charass_target_type) AND (crmacct.crmacct_id = charass.charass_target_id)) AND (charass.charass_char_id = "char".char_id)); DROP VIEW api.accountchar; apiadminfalse51686#"00VIEW accountcharCOMMENT:COMMENT ON VIEW accountchar IS 'Account Characteristics'; apiadminfalse744$"00 accountcharACLREVOKE ALL ON TABLE accountchar FROM PUBLIC; REVOKE ALL ON TABLE accountchar FROM admin; GRANT ALL ON TABLE accountchar TO admin; GRANT ALL ON TABLE accountchar TO xtrole; apiadminfalse74412591692981cmnttypeTABLEoCREATE TABLE cmnttype ( cmnttype_id integer NOT NULL, cmnttype_name text NOT NULL, cmnttype_descrip text NOT NULL, cmnttype_usedin text, cmnttype_sys boolean DEFAULT false NOT NULL, cmnttype_editable boolean DEFAULT false NOT NULL, cmnttype_order integer, CONSTRAINT cmnttype_cmnttype_name_check CHECK ((cmnttype_name <> ''::text)) ); DROP TABLE public.cmnttype; publicadminfalse5972597359748%"00TABLE cmnttypeCOMMENT9COMMENT ON TABLE cmnttype IS 'Comment Type information'; publicadminfalse187&"00cmnttypeACLREVOKE ALL ON TABLE cmnttype FROM PUBLIC; REVOKE ALL ON TABLE cmnttype FROM admin; GRANT ALL ON TABLE cmnttype TO admin; GRANT ALL ON TABLE cmnttype TO xtrole; publicadminfalse18712591692989commentTABLEFCREATE TABLE comment ( comment_id integer DEFAULT nextval(('"comment_comment_id_seq"'::text)::regclass) NOT NULL, comment_source_id integer, comment_date timestamp with time zone, comment_user text, comment_text text, comment_cmnttype_id integer, comment_source text, comment_public boolean ); DROP TABLE public.comment; publicadminfalse59758'"00 TABLE commentCOMMENT3COMMENT ON TABLE comment IS 'Comment information'; publicadminfalse188("00commentACLREVOKE ALL ON TABLE comment FROM PUBLIC; REVOKE ALL ON TABLE comment FROM admin; GRANT ALL ON TABLE comment TO admin; GRANT ALL ON TABLE comment TO xtrole; publicadminfalse18812592008636accountcommentVIEWCREATE VIEW accountcomment AS SELECT (crmacct.crmacct_number)::character varying AS account_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.crmacct, public.cmnttype, public.comment WHERE (((comment.comment_source = 'CRMA'::text) AND (comment.comment_source_id = crmacct.crmacct_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); DROP VIEW api.accountcomment; apiadminfalse51726)"00VIEW accountcommentCOMMENT5COMMENT ON VIEW accountcomment IS 'Account Comment'; apiadminfalse745*"00accountcommentACLREVOKE ALL ON TABLE accountcomment FROM PUBLIC; REVOKE ALL ON TABLE accountcomment FROM admin; GRANT ALL ON TABLE accountcomment TO admin; GRANT ALL ON TABLE accountcomment TO xtrole; apiadminfalse74512591693000docassTABLEsCREATE TABLE docass ( docass_id integer NOT NULL, docass_source_id integer NOT NULL, docass_source_type text NOT NULL, docass_target_id integer NOT NULL, docass_target_type text DEFAULT 'URL'::text NOT NULL, docass_purpose character(1) DEFAULT 'S'::bpchar NOT NULL, CONSTRAINT docass_docass_purpose_check CHECK (((((((((docass_purpose = 'I'::bpchar) OR (docass_purpose = 'E'::bpchar)) OR (docass_purpose = 'M'::bpchar)) OR (docass_purpose = 'P'::bpchar)) OR (docass_purpose = 'A'::bpchar)) OR (docass_purpose = 'C'::bpchar)) OR (docass_purpose = 'S'::bpchar)) OR (docass_purpose = 'D'::bpchar))) ); DROP TABLE public.docass; publicadminfalse5977597859798+"00 TABLE docassCOMMENT>COMMENT ON TABLE docass IS 'Document Assignement References'; publicadminfalse189,"00docassACLREVOKE ALL ON TABLE docass FROM PUBLIC; REVOKE ALL ON TABLE docass FROM admin; GRANT ALL ON TABLE docass TO admin; GRANT ALL ON TABLE docass TO xtrole; publicadminfalse18912591693009fileTABLECREATE TABLE file ( file_id integer NOT NULL, file_title text NOT NULL, file_stream bytea, file_descrip text NOT NULL ); DROP TABLE public.file; publicadminfalse8-"00fileACLREVOKE ALL ON TABLE file FROM PUBLIC; REVOKE ALL ON TABLE file FROM admin; GRANT ALL ON TABLE file TO admin; GRANT ALL ON TABLE file TO xtrole; publicadminfalse19012591693015urlinfoTABLEnCREATE TABLE urlinfo ( url_id integer NOT NULL, url_title text NOT NULL, url_url text NOT NULL ); DROP TABLE public.urlinfo; publicadminfalse8."00urlinfoACLREVOKE ALL ON TABLE urlinfo FROM PUBLIC; REVOKE ALL ON TABLE urlinfo FROM admin; GRANT ALL ON TABLE urlinfo TO admin; GRANT ALL ON TABLE urlinfo TO xtrole; publicadminfalse19112591693021urlVIEWCREATE VIEW url AS SELECT docass.docass_id AS url_id, docass.docass_source_id AS url_source_id, docass.docass_source_type AS url_source, file.file_title AS url_title, file.file_descrip AS url_url, file.file_stream AS url_stream FROM (file JOIN docass ON (((docass.docass_target_id = file.file_id) AND (docass.docass_target_type = 'FILE'::text)))) UNION ALL SELECT docass.docass_id AS url_id, docass.docass_source_id AS url_source_id, docass.docass_source_type AS url_source, urlinfo.url_title, urlinfo.url_url, NULL::unknown AS url_stream FROM (urlinfo JOIN docass ON (((docass.docass_target_id = urlinfo.url_id) AND (docass.docass_target_type = 'URL'::text)))); DROP VIEW public.url; publicadminfalse51368/"00urlACLREVOKE ALL ON TABLE url FROM PUBLIC; REVOKE ALL ON TABLE url FROM admin; GRANT ALL ON TABLE url TO admin; GRANT ALL ON TABLE url TO xtrole; publicadminfalse19212592008643 accountfileVIEWCREATE VIEW accountfile AS SELECT crmacct.crmacct_number AS account_number, url.url_title AS title, url.url_url AS url FROM public.crmacct, public.url WHERE ((crmacct.crmacct_id = url.url_source_id) AND (url.url_source = 'CRMA'::text)); DROP VIEW api.accountfile; apiadminfalse517660"00VIEW accountfileCOMMENT/COMMENT ON VIEW accountfile IS 'Account File'; apiadminfalse7461"00 accountfileACLREVOKE ALL ON TABLE accountfile FROM PUBLIC; REVOKE ALL ON TABLE accountfile FROM admin; GRANT ALL ON TABLE accountfile TO admin; GRANT ALL ON TABLE accountfile TO xtrole; apiadminfalse74612591693030docass_docass_id_seqSEQUENCEvCREATE SEQUENCE docass_docass_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.docass_docass_id_seq; publicadminfalse81892"00docass_docass_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE docass_docass_id_seq OWNED BY docass.docass_id; publicadminfalse1933"00docass_docass_id_seq SEQUENCE SET;SELECT pg_catalog.setval('docass_docass_id_seq', 1, true); publicadminfalse1934"00docass_docass_id_seqACLREVOKE ALL ON SEQUENCE docass_docass_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE docass_docass_id_seq FROM admin; GRANT ALL ON SEQUENCE docass_docass_id_seq TO admin; GRANT ALL ON SEQUENCE docass_docass_id_seq TO xtrole; publicadminfalse19312591693032imageTABLECREATE TABLE image ( image_id integer DEFAULT nextval(('"image_image_id_seq"'::text)::regclass) NOT NULL, image_name text, image_descrip text, image_data text ); DROP TABLE public.image; publicadminfalse598285"00 TABLE imageCOMMENT/COMMENT ON TABLE image IS 'Image information'; publicadminfalse1946"00imageACLREVOKE ALL ON TABLE image FROM PUBLIC; REVOKE ALL ON TABLE image FROM admin; GRANT ALL ON TABLE image TO admin; GRANT ALL ON TABLE image TO xtrole; publicadminfalse19412591693039imageassTABLEqCREATE TABLE imageass ( imageass_id integer DEFAULT nextval('docass_docass_id_seq'::regclass) NOT NULL, imageass_source_id integer NOT NULL, imageass_source text NOT NULL, imageass_image_id integer NOT NULL, imageass_purpose character(1) NOT NULL, CONSTRAINT imageass_imageass_purpose_check CHECK (((((((((imageass_purpose = 'I'::bpchar) OR (imageass_purpose = 'E'::bpchar)) OR (imageass_purpose = 'M'::bpchar)) OR (imageass_purpose = 'P'::bpchar)) OR (imageass_purpose = 'A'::bpchar)) OR (imageass_purpose = 'C'::bpchar)) OR (imageass_purpose = 'D'::bpchar)) OR (imageass_purpose = 'S'::bpchar))) ); DROP TABLE public.imageass; publicadminfalse5983598487"00TABLE imageassCOMMENT=COMMENT ON TABLE imageass IS 'Image Assignement References'; publicadminfalse1958"00imageassACLREVOKE ALL ON TABLE imageass FROM PUBLIC; REVOKE ALL ON TABLE imageass FROM admin; GRANT ALL ON TABLE imageass TO admin; GRANT ALL ON TABLE imageass TO xtrole; publicadminfalse19512592008650 accountimageVIEW3CREATE VIEW accountimage AS SELECT crmacct.crmacct_number AS account_number, image.image_name FROM public.crmacct, public.imageass, public.image WHERE (((crmacct.crmacct_id = imageass.imageass_source_id) AND (imageass.imageass_source = 'CRMA'::text)) AND (imageass.imageass_image_id = image.image_id)); DROP VIEW api.accountimage; apiadminfalse518069"00VIEW accountimageCOMMENT1COMMENT ON VIEW accountimage IS 'Account Image'; apiadminfalse747:"00 accountimageACLREVOKE ALL ON TABLE accountimage FROM PUBLIC; REVOKE ALL ON TABLE accountimage FROM admin; GRANT ALL ON TABLE accountimage TO admin; GRANT ALL ON TABLE accountimage TO xtrole; apiadminfalse74712592008657addressVIEWCREATE VIEW address AS SELECT (addr.addr_number)::character varying AS address_number, addr.addr_line1 AS address1, addr.addr_line2 AS address2, addr.addr_line3 AS address3, addr.addr_city AS city, addr.addr_state AS state, addr.addr_postalcode AS postal_code, addr.addr_country AS country, addr.addr_active AS active, addr.addr_notes AS notes, ''::text AS change FROM public.addr; DROP VIEW api.address; apiadminfalse51846;"00 VIEW addressCOMMENT&COMMENT ON VIEW address IS 'Address'; apiadminfalse748<"00addressACLREVOKE ALL ON TABLE address FROM PUBLIC; REVOKE ALL ON TABLE address FROM admin; GRANT ALL ON TABLE address TO admin; GRANT ALL ON TABLE address TO xtrole; apiadminfalse74812592008664 addresscharVIEW}CREATE VIEW addresschar AS SELECT (addr.addr_number)::character varying AS address_number, ("char".char_name)::character varying AS characteristic, charass.charass_value AS value FROM public.addr, public."char", public.charass WHERE ((('ADDR'::text = charass.charass_target_type) AND (addr.addr_id = charass.charass_target_id)) AND (charass.charass_char_id = "char".char_id)); DROP VIEW api.addresschar; apiadminfalse51886="00VIEW addresscharCOMMENT:COMMENT ON VIEW addresschar IS 'Address Characteristics'; apiadminfalse749>"00 addresscharACLREVOKE ALL ON TABLE addresschar FROM PUBLIC; REVOKE ALL ON TABLE addresschar FROM admin; GRANT ALL ON TABLE addresschar TO admin; GRANT ALL ON TABLE addresschar TO xtrole; apiadminfalse74912592008671addresscommentVIEWCREATE VIEW addresscomment AS SELECT (addr.addr_number)::character varying AS address_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.addr, public.cmnttype, public.comment WHERE (((comment.comment_source = 'ADDR'::text) AND (comment.comment_source_id = addr.addr_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); DROP VIEW api.addresscomment; apiadminfalse51926?"00VIEW addresscommentCOMMENT5COMMENT ON VIEW addresscomment IS 'Address Comment'; apiadminfalse750@"00addresscommentACLREVOKE ALL ON TABLE addresscomment FROM PUBLIC; REVOKE ALL ON TABLE addresscomment FROM admin; GRANT ALL ON TABLE addresscomment TO admin; GRANT ALL ON TABLE addresscomment TO xtrole; apiadminfalse75012591693063bomheadTABLECREATE TABLE bomhead ( bomhead_id integer DEFAULT nextval(('"bomhead_bomhead_id_seq"'::text)::regclass) NOT NULL, bomhead_item_id integer NOT NULL, bomhead_serial integer, bomhead_docnum text, bomhead_revision text, bomhead_revisiondate date, bomhead_batchsize numeric(18,6), bomhead_requiredqtyper numeric(20,8), bomhead_rev_id integer DEFAULT (-1), CONSTRAINT bomhead_bomhead_batchsize_check CHECK ((bomhead_batchsize > (0)::numeric)) ); DROP TABLE public.bomhead; publicadminfalse5985598659878A"00 TABLE bomheadCOMMENTJCOMMENT ON TABLE bomhead IS 'Bill of Materials (BOM) header information'; publicadminfalse196B"00bomheadACLREVOKE ALL ON TABLE bomhead FROM PUBLIC; REVOKE ALL ON TABLE bomhead FROM admin; GRANT ALL ON TABLE bomhead TO admin; GRANT ALL ON TABLE bomhead TO xtrole; publicadminfalse19612592008681bomVIEWCREATE VIEW bom AS SELECT (item.item_number)::character varying AS item_number, (bomhead.bomhead_revision)::character varying AS revision, bomhead.bomhead_docnum AS document_number, bomhead.bomhead_revisiondate AS revision_date, bomhead.bomhead_batchsize AS batch_size, bomhead.bomhead_requiredqtyper AS total_qty_per FROM public.bomhead, public.item WHERE (bomhead.bomhead_item_id = item.item_id); DROP VIEW api.bom; apiadminfalse51966C"00VIEW bomCOMMENT2COMMENT ON VIEW bom IS 'Bill of Material Header'; apiadminfalse751D"00bomACLREVOKE ALL ON TABLE bom FROM PUBLIC; REVOKE ALL ON TABLE bom FROM admin; GRANT ALL ON TABLE bom TO admin; GRANT ALL ON TABLE bom TO xtrole; apiadminfalse75112592008688bomitemVIEWCREATE VIEW bomitem AS SELECT bomitem.bomitem_id AS id, (p.item_number)::character varying AS bom_item_number, (bomhead.bomhead_revision)::character varying AS bom_revision, bomitem.bomitem_seqnumber AS sequence_number, i.item_number, CASE WHEN (bomitem.bomitem_effective = public.startoftime()) THEN 'Always'::text ELSE public.formatdate(bomitem.bomitem_effective) END AS effective, CASE WHEN (bomitem.bomitem_expires = public.endoftime()) THEN 'Never'::text ELSE public.formatdate(bomitem.bomitem_expires) END AS expires, bomitem.bomitem_qtyper AS qty_per, uom.uom_name AS issue_uom, bomitem.bomitem_scrap AS scrap, bomitem.bomitem_createwo AS create_child_wo, CASE WHEN (bomitem.bomitem_issuemethod = 'M'::bpchar) THEN 'Mixed'::text WHEN (bomitem.bomitem_issuemethod = 'L'::bpchar) THEN 'Pull'::text WHEN (bomitem.bomitem_issuemethod = 'S'::bpchar) THEN 'Push'::text ELSE NULL::text END AS issue_method, public.formatbooseq(p.item_id, bomitem.bomitem_booitem_seq_id) AS used_at, bomitem.bomitem_schedatwooper AS schedule_at_wo_operation, bomitem.bomitem_ecn AS ecn_number, bomitem.bomitem_notes AS notes, bomitem.bomitem_ref AS reference, CASE WHEN (bomitem.bomitem_subtype = 'N'::bpchar) THEN 'No'::text WHEN (bomitem.bomitem_subtype = 'I'::bpchar) THEN 'Item-Defined'::text WHEN (bomitem.bomitem_subtype = 'B'::bpchar) THEN 'BOM-Defined'::text ELSE NULL::text END AS substitutions, "char".char_name AS characteristic, bomitem.bomitem_value AS value FROM ((public.bomitem LEFT JOIN public.bomhead ON (((bomitem.bomitem_parent_item_id = bomhead.bomhead_item_id) AND (bomitem.bomitem_rev_id = bomhead.bomhead_rev_id)))) LEFT JOIN public."char" ON ((bomitem.bomitem_char_id = "char".char_id))), public.item p, public.item i, public.uom WHERE (((bomitem.bomitem_parent_item_id = p.item_id) AND (bomitem.bomitem_item_id = i.item_id)) AND (bomitem.bomitem_uom_id = uom.uom_id)) ORDER BY p.item_number, bomitem.bomitem_seqnumber; DROP VIEW api.bomitem; apiadminfalse52006E"00 VIEW bomitemCOMMENT4COMMENT ON VIEW bomitem IS 'Bill of Material Item'; apiadminfalse752F"00bomitemACLREVOKE ALL ON TABLE bomitem FROM PUBLIC; REVOKE ALL ON TABLE bomitem FROM admin; GRANT ALL ON TABLE bomitem TO admin; GRANT ALL ON TABLE bomitem TO xtrole; apiadminfalse75212592008698bomitemcommentVIEWCREATE VIEW bomitemcomment AS SELECT bomitem.bomitem_id, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM (public.bomitem LEFT JOIN public.bomhead ON (((bomitem.bomitem_parent_item_id = bomhead.bomhead_item_id) AND (bomitem.bomitem_rev_id = bomhead.bomhead_rev_id)))), public.item, public.cmnttype, public.comment WHERE ((((comment.comment_source = 'BMI'::text) AND (comment.comment_source_id = bomitem.bomitem_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)) AND (bomitem.bomitem_parent_item_id = item.item_id)) ORDER BY item.item_number, bomhead.bomhead_revision, bomitem.bomitem_seqnumber, comment.comment_date; DROP VIEW api.bomitemcomment; apiadminfalse52046G"00VIEW bomitemcommentCOMMENT>COMMENT ON VIEW bomitemcomment IS 'Bill of Material Comment'; apiadminfalse753H"00bomitemcommentACLREVOKE ALL ON TABLE bomitemcomment FROM PUBLIC; REVOKE ALL ON TABLE bomitemcomment FROM admin; GRANT ALL ON TABLE bomitemcomment TO admin; GRANT ALL ON TABLE bomitemcomment TO xtrole; apiadminfalse75312591693086 bomitemsubTABLECREATE TABLE bomitemsub ( bomitemsub_id integer NOT NULL, bomitemsub_bomitem_id integer NOT NULL, bomitemsub_item_id integer NOT NULL, bomitemsub_uomratio numeric(20,10) NOT NULL, bomitemsub_rank integer NOT NULL ); DROP TABLE public.bomitemsub; publicadminfalse8I"00TABLE bomitemsubCOMMENT\COMMENT ON TABLE bomitemsub IS 'Bill of Materials (BOM) defined Substitutions information'; publicadminfalse197J"00 bomitemsubACLREVOKE ALL ON TABLE bomitemsub FROM PUBLIC; REVOKE ALL ON TABLE bomitemsub FROM admin; GRANT ALL ON TABLE bomitemsub TO admin; GRANT ALL ON TABLE bomitemsub TO xtrole; publicadminfalse19712592008706bomitemsubstituteVIEWCREATE VIEW bomitemsubstitute AS SELECT bomitem.bomitem_id, (p.item_number)::character varying AS bom_item_number, (bomhead.bomhead_revision)::character varying AS bom_revision, bomitem.bomitem_seqnumber AS sequence_number, (s.item_number)::character varying AS substitute_item_number, bomitemsub.bomitemsub_uomratio AS sub_parent_uom_ratio, bomitemsub.bomitemsub_rank AS ranking FROM public.item p, public.item s, (public.bomitem LEFT JOIN public.bomhead ON (((bomitem.bomitem_parent_item_id = bomhead.bomhead_item_id) AND (bomitem.bomitem_rev_id = bomhead.bomhead_rev_id)))), public.bomitemsub WHERE (((p.item_id = bomitem.bomitem_parent_item_id) AND (s.item_id = bomitemsub.bomitemsub_item_id)) AND (bomitemsub.bomitemsub_bomitem_id = bomitem.bomitem_id)); !DROP VIEW api.bomitemsubstitute; apiadminfalse52086K"00VIEW bomitemsubstituteCOMMENTICOMMENT ON VIEW bomitemsubstitute IS 'Bill of Material Item Substitute'; apiadminfalse754L"00bomitemsubstituteACLREVOKE ALL ON TABLE bomitemsubstitute FROM PUBLIC; REVOKE ALL ON TABLE bomitemsubstitute FROM admin; GRANT ALL ON TABLE bomitemsubstitute TO admin; GRANT ALL ON TABLE bomitemsubstitute TO xtrole; apiadminfalse75412591693094budgheadTABLECREATE TABLE budghead ( budghead_id integer NOT NULL, budghead_name text NOT NULL, budghead_descrip text, CONSTRAINT budghead_budghead_name_check CHECK ((budghead_name <> ''::text)) ); DROP TABLE public.budghead; publicadminfalse59908M"00budgheadACLREVOKE ALL ON TABLE budghead FROM PUBLIC; REVOKE ALL ON TABLE budghead FROM admin; GRANT ALL ON TABLE budghead TO admin; GRANT ALL ON TABLE budghead TO xtrole; publicadminfalse19812592008714budgetVIEWCREATE VIEW budget AS SELECT budghead.budghead_name AS name, budghead.budghead_descrip AS description FROM public.budghead ORDER BY budghead.budghead_name; DROP VIEW api.budget; apiadminfalse52126N"00 VIEW budgetCOMMENT+COMMENT ON VIEW budget IS 'Budget Header'; apiadminfalse755O"00budgetACLREVOKE ALL ON TABLE budget FROM PUBLIC; REVOKE ALL ON TABLE budget FROM admin; GRANT ALL ON TABLE budget TO admin; GRANT ALL ON TABLE budget TO xtrole; apiadminfalse75512591693104accntTABLEyCREATE TABLE accnt ( accnt_id integer DEFAULT nextval(('accnt_accnt_id_seq'::text)::regclass) NOT NULL, accnt_number text, accnt_descrip text, accnt_comments text, accnt_profit text, accnt_sub text, accnt_type character(1) NOT NULL, accnt_extref text, accnt_company text, accnt_forwardupdate boolean, accnt_subaccnttype_code text, accnt_curr_id integer DEFAULT basecurrid(), accnt_active boolean DEFAULT true NOT NULL, accnt_name text, CONSTRAINT accnt_accnt_type_check CHECK ((accnt_type = ANY (ARRAY['A'::bpchar, 'E'::bpchar, 'L'::bpchar, 'Q'::bpchar, 'R'::bpchar]))) ); DROP TABLE public.accnt; publicadminfalse59915992599359948P"00 TABLE accntCOMMENTMCOMMENT ON TABLE accnt IS 'General Ledger (G/L) Account Number information'; publicadminfalse199Q"00accntACLREVOKE ALL ON TABLE accnt FROM PUBLIC; REVOKE ALL ON TABLE accnt FROM admin; GRANT ALL ON TABLE accnt TO admin; GRANT ALL ON TABLE accnt TO xtrole; publicadminfalse19912591693114budgitemTABLECREATE TABLE budgitem ( budgitem_id integer NOT NULL, budgitem_budghead_id integer NOT NULL, budgitem_period_id integer NOT NULL, budgitem_accnt_id integer NOT NULL, budgitem_amount numeric(20,4) NOT NULL ); DROP TABLE public.budgitem; publicadminfalse8R"00budgitemACLREVOKE ALL ON TABLE budgitem FROM PUBLIC; REVOKE ALL ON TABLE budgitem FROM admin; GRANT ALL ON TABLE budgitem TO admin; GRANT ALL ON TABLE budgitem TO xtrole; publicadminfalse20012591693117periodTABLE<CREATE TABLE period ( period_id integer NOT NULL, period_start date, period_end date, period_closed boolean, period_freeze boolean, period_initial boolean DEFAULT false, period_name text, period_yearperiod_id integer, period_quarter integer, period_number integer NOT NULL ); DROP TABLE public.period; publicadminfalse59978S"00 TABLE periodCOMMENT<COMMENT ON TABLE period IS 'Accounting Period information'; publicadminfalse201T"00periodACLREVOKE ALL ON TABLE period FROM PUBLIC; REVOKE ALL ON TABLE period FROM admin; GRANT ALL ON TABLE period TO admin; GRANT ALL ON TABLE period TO xtrole; publicadminfalse20112592008721 budgetentryVIEWCREATE VIEW budgetentry AS SELECT budghead.budghead_name AS name, public.formatglaccount(accnt.accnt_id) AS account, period.period_start, budgitem.budgitem_amount AS amount FROM public.budgitem, public.budghead, public.period, public.accnt WHERE (((budgitem.budgitem_budghead_id = budghead.budghead_id) AND (budgitem.budgitem_period_id = period.period_id)) AND (budgitem.budgitem_accnt_id = accnt.accnt_id)) ORDER BY budghead.budghead_name, period.period_start, public.formatglaccount(accnt.accnt_id); DROP VIEW api.budgetentry; apiadminfalse52166U"00VIEW budgetentryCOMMENT/COMMENT ON VIEW budgetentry IS 'Budget Entry'; apiadminfalse756V"00 budgetentryACLREVOKE ALL ON TABLE budgetentry FROM PUBLIC; REVOKE ALL ON TABLE budgetentry FROM admin; GRANT ALL ON TABLE budgetentry TO admin; GRANT ALL ON TABLE budgetentry TO xtrole; apiadminfalse75612591693128 bankaccntTABLEvCREATE TABLE bankaccnt ( bankaccnt_id integer NOT NULL, bankaccnt_name text NOT NULL, bankaccnt_descrip text, bankaccnt_bankname text, bankaccnt_accntnumber text, bankaccnt_ar boolean, bankaccnt_ap boolean, bankaccnt_nextchknum integer, bankaccnt_type character(1), bankaccnt_accnt_id integer, bankaccnt_check_form_id integer, bankaccnt_userec boolean, bankaccnt_rec_accnt_id integer, bankaccnt_curr_id integer DEFAULT basecurrid(), bankaccnt_notes text, bankaccnt_routing text DEFAULT ''::text NOT NULL, bankaccnt_ach_enabled boolean DEFAULT false NOT NULL, bankaccnt_ach_origin text DEFAULT ''::text NOT NULL, bankaccnt_ach_genchecknum boolean DEFAULT false NOT NULL, bankaccnt_ach_leadtime integer, bankaccnt_ach_lastdate date, bankaccnt_ach_lastfileid character(1), bankaccnt_ach_origintype text, bankaccnt_ach_originname text, bankaccnt_ach_desttype text, bankaccnt_ach_fed_dest text, bankaccnt_ach_destname text, bankaccnt_ach_dest text, CONSTRAINT bankaccnt_bankaccnt_name_check CHECK ((bankaccnt_name <> ''::text)) ); DROP TABLE public.bankaccnt; publicadminfalse5998599960006001600260048W"00TABLE bankaccntCOMMENT:COMMENT ON TABLE bankaccnt IS 'Bank Account information'; publicadminfalse202X"00 bankaccntACLREVOKE ALL ON TABLE bankaccnt FROM PUBLIC; REVOKE ALL ON TABLE bankaccnt FROM admin; GRANT ALL ON TABLE bankaccnt TO admin; GRANT ALL ON TABLE bankaccnt TO xtrole; publicadminfalse20212591693139cashrcptTABLECREATE TABLE cashrcpt ( cashrcpt_id integer NOT NULL, cashrcpt_cust_id integer NOT NULL, cashrcpt_amount numeric(20,2) NOT NULL, cashrcpt_fundstype character(1) NOT NULL, cashrcpt_docnumber text, cashrcpt_bankaccnt_id integer NOT NULL, cashrcpt_notes text, cashrcpt_distdate date DEFAULT ('now'::text)::date, cashrcpt_salescat_id integer DEFAULT (-1), cashrcpt_curr_id integer DEFAULT basecurrid(), cashrcpt_usecustdeposit boolean DEFAULT false NOT NULL, cashrcpt_void boolean DEFAULT false NOT NULL, cashrcpt_number text NOT NULL, cashrcpt_docdate date, cashrcpt_posted boolean DEFAULT false NOT NULL, cashrcpt_posteddate date, cashrcpt_postedby text, cashrcpt_applydate date, cashrcpt_discount numeric(20,2) DEFAULT 0.00 NOT NULL, cashrcpt_curr_rate numeric NOT NULL, CONSTRAINT cashrcpt_cashrcpt_number_check CHECK ((cashrcpt_number <> ''::text)) ); DROP TABLE public.cashrcpt; publicadminfalse600560066007600860096010601160138Y"00TABLE cashrcptCOMMENTuCOMMENT ON TABLE cashrcpt IS 'Temporary table for storing Cash Receipt information before Cash Receipts are posted'; publicadminfalse203Z"00cashrcptACLREVOKE ALL ON TABLE cashrcpt FROM PUBLIC; REVOKE ALL ON TABLE cashrcpt FROM admin; GRANT ALL ON TABLE cashrcpt TO admin; GRANT ALL ON TABLE cashrcpt TO xtrole; publicadminfalse20312592008728 cashreceiptVIEWCREATE VIEW cashreceipt AS SELECT (custinfo.cust_number)::character varying AS customer_number, CASE WHEN (cashrcpt.cashrcpt_fundstype = 'C'::bpchar) THEN 'Check'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'T'::bpchar) THEN 'Certified Check'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'M'::bpchar) THEN 'Master Card'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'V'::bpchar) THEN 'Visa'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'A'::bpchar) THEN 'American Express'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'D'::bpchar) THEN 'Discover Card'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'R'::bpchar) THEN 'Other Credit Card'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'K'::bpchar) THEN 'Cash'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'W'::bpchar) THEN 'Wire Transfer'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'O'::bpchar) THEN 'Other'::character varying ELSE NULL::character varying END AS funds_type, (cashrcpt.cashrcpt_docnumber)::character varying AS check_document_number, custinfo.cust_name AS customer_name, m.addr_line1 AS customer_address, curr_symbol.curr_abbr AS currency, cashrcpt.cashrcpt_amount AS amount_received, bankaccnt.bankaccnt_name AS post_to, public.formatdate(cashrcpt.cashrcpt_distdate) AS distribution_date, CASE WHEN cashrcpt.cashrcpt_usecustdeposit THEN 'Customer Deposit'::text ELSE 'Credit Memo'::text END AS apply_balance_as, salescat.salescat_name AS sales_category, cashrcpt.cashrcpt_notes AS notes FROM ((((((public.cashrcpt LEFT JOIN public.custinfo ON ((custinfo.cust_id = cashrcpt.cashrcpt_cust_id))) LEFT JOIN public.cntct mc ON ((custinfo.cust_cntct_id = mc.cntct_id))) LEFT JOIN public.addr m ON ((mc.cntct_addr_id = m.addr_id))) LEFT JOIN public.curr_symbol ON ((curr_symbol.curr_id = cashrcpt.cashrcpt_curr_id))) LEFT JOIN public.bankaccnt ON ((bankaccnt.bankaccnt_id = cashrcpt.cashrcpt_bankaccnt_id))) LEFT JOIN public.salescat ON ((salescat.salescat_id = cashrcpt.cashrcpt_salescat_id))); DROP VIEW api.cashreceipt; apiadminfalse52206["00VIEW cashreceiptCOMMENTCOMMENT ON VIEW cashreceipt IS ' This view can be used as an interface to import Cash Receipt data directly into the system. Required fields will be checked and default values will be populated'; apiadminfalse757\"00 cashreceiptACLREVOKE ALL ON TABLE cashreceipt FROM PUBLIC; REVOKE ALL ON TABLE cashreceipt FROM admin; GRANT ALL ON TABLE cashreceipt TO admin; GRANT ALL ON TABLE cashreceipt TO xtrole; apiadminfalse75712591693157 cashrcptitemTABLE>CREATE TABLE cashrcptitem ( cashrcptitem_id integer NOT NULL, cashrcptitem_cashrcpt_id integer NOT NULL, cashrcptitem_aropen_id integer NOT NULL, cashrcptitem_amount numeric(20,2) NOT NULL, cashrcptitem_discount numeric(20,2) DEFAULT 0.00 NOT NULL, cashrcptitem_applied boolean DEFAULT true ); DROP TABLE public.cashrcptitem; publicadminfalse601560168]"00TABLE cashrcptitemCOMMENTCOMMENT ON TABLE cashrcptitem IS 'Temporary table for storing information about applications of Cash Receipts before Cash Receipts are posted'; publicadminfalse204^"00 cashrcptitemACLREVOKE ALL ON TABLE cashrcptitem FROM PUBLIC; REVOKE ALL ON TABLE cashrcptitem FROM admin; GRANT ALL ON TABLE cashrcptitem TO admin; GRANT ALL ON TABLE cashrcptitem TO xtrole; publicadminfalse20412592008739cashreceiptapplyVIEW CREATE VIEW cashreceiptapply AS SELECT (custinfo.cust_number)::character varying AS customer_number, CASE WHEN (cashrcpt.cashrcpt_fundstype = 'C'::bpchar) THEN 'Check'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'T'::bpchar) THEN 'Certified Check'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'M'::bpchar) THEN 'Master Card'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'V'::bpchar) THEN 'Visa'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'A'::bpchar) THEN 'American Express'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'D'::bpchar) THEN 'Discover Card'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'R'::bpchar) THEN 'Other Credit Card'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'K'::bpchar) THEN 'Cash'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'W'::bpchar) THEN 'Wire Transfer'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'O'::bpchar) THEN 'Other'::character varying ELSE NULL::character varying END AS funds_type, (cashrcpt.cashrcpt_docnumber)::character varying AS check_document_number, (aropen.aropen_doctype)::character varying AS doc_type, (aropen.aropen_docnumber)::character varying AS doc_number, custinfo.cust_name AS customer_name, m.addr_line1 AS customer_address, public.formatdate(aropen.aropen_docdate) AS doc_date, public.formatdate(aropen.aropen_duedate) AS due_date, curr_symbol.curr_abbr AS currency, aropen.aropen_amount AS open_amount, cashrcptitem.cashrcptitem_amount AS amount_to_apply, cashrcptitem.cashrcptitem_discount FROM ((((((public.cashrcptitem LEFT JOIN public.cashrcpt ON ((cashrcpt.cashrcpt_id = cashrcptitem.cashrcptitem_cashrcpt_id))) LEFT JOIN public.custinfo ON ((custinfo.cust_id = cashrcpt.cashrcpt_cust_id))) LEFT JOIN public.cntct mc ON ((custinfo.cust_cntct_id = mc.cntct_id))) LEFT JOIN public.addr m ON ((mc.cntct_addr_id = m.addr_id))) LEFT JOIN public.curr_symbol ON ((curr_symbol.curr_id = cashrcpt.cashrcpt_curr_id))) LEFT JOIN public.aropen ON ((aropen.aropen_id = cashrcptitem.cashrcptitem_aropen_id))); DROP VIEW api.cashreceiptapply; apiadminfalse52246_"00VIEW cashreceiptapplyCOMMENTCOMMENT ON VIEW cashreceiptapply IS ' This view can be used as an interface to import Cash Receipt Application data directly into the system. Required fields will be checked and default values will be populated'; apiadminfalse758`"00cashreceiptapplyACLREVOKE ALL ON TABLE cashreceiptapply FROM PUBLIC; REVOKE ALL ON TABLE cashreceiptapply FROM admin; GRANT ALL ON TABLE cashreceiptapply TO admin; GRANT ALL ON TABLE cashreceiptapply TO xtrole; apiadminfalse75812591693167 cashrcptmiscTABLECREATE TABLE cashrcptmisc ( cashrcptmisc_id integer NOT NULL, cashrcptmisc_cashrcpt_id integer NOT NULL, cashrcptmisc_accnt_id integer NOT NULL, cashrcptmisc_amount numeric(20,2) NOT NULL, cashrcptmisc_notes text ); DROP TABLE public.cashrcptmisc; publicadminfalse8a"00TABLE cashrcptmiscCOMMENTWCOMMENT ON TABLE cashrcptmisc IS 'Cash Receipt Miscellaneous Application information'; publicadminfalse205b"00 cashrcptmiscACLREVOKE ALL ON TABLE cashrcptmisc FROM PUBLIC; REVOKE ALL ON TABLE cashrcptmisc FROM admin; GRANT ALL ON TABLE cashrcptmisc TO admin; GRANT ALL ON TABLE cashrcptmisc TO xtrole; publicadminfalse20512592008749cashreceiptapplymiscVIEWCREATE VIEW cashreceiptapplymisc AS SELECT (custinfo.cust_number)::character varying AS customer_number, CASE WHEN (cashrcpt.cashrcpt_fundstype = 'C'::bpchar) THEN 'Check'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'T'::bpchar) THEN 'Certified Check'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'M'::bpchar) THEN 'Master Card'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'V'::bpchar) THEN 'Visa'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'A'::bpchar) THEN 'American Express'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'D'::bpchar) THEN 'Discover Card'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'R'::bpchar) THEN 'Other Credit Card'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'K'::bpchar) THEN 'Cash'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'W'::bpchar) THEN 'Wire Transfer'::character varying WHEN (cashrcpt.cashrcpt_fundstype = 'O'::bpchar) THEN 'Other'::character varying ELSE NULL::character varying END AS funds_type, (cashrcpt.cashrcpt_docnumber)::character varying AS check_document_number, (public.formatglaccount(accnt.accnt_id))::character varying AS account, custinfo.cust_name AS customer_name, m.addr_line1 AS customer_address, accnt.accnt_descrip AS account_description, curr_symbol.curr_abbr AS currency, cashrcptmisc.cashrcptmisc_amount AS amount_to_distribute, cashrcptmisc.cashrcptmisc_notes AS notes FROM ((((((public.cashrcptmisc LEFT JOIN public.cashrcpt ON ((cashrcpt.cashrcpt_id = cashrcptmisc.cashrcptmisc_cashrcpt_id))) LEFT JOIN public.custinfo ON ((custinfo.cust_id = cashrcpt.cashrcpt_cust_id))) LEFT JOIN public.cntct mc ON ((custinfo.cust_cntct_id = mc.cntct_id))) LEFT JOIN public.addr m ON ((mc.cntct_addr_id = m.addr_id))) LEFT JOIN public.curr_symbol ON ((curr_symbol.curr_id = cashrcpt.cashrcpt_curr_id))) LEFT JOIN public.accnt ON ((accnt.accnt_id = cashrcptmisc.cashrcptmisc_accnt_id))); $DROP VIEW api.cashreceiptapplymisc; apiadminfalse52286c"00VIEW cashreceiptapplymiscCOMMENTCOMMENT ON VIEW cashreceiptapplymisc IS ' This view can be used as an interface to import Cash Receipt Miscellaneous Application data directly into the system. Required fields will be checked and default values will be populated'; apiadminfalse759d"00cashreceiptapplymiscACLREVOKE ALL ON TABLE cashreceiptapplymisc FROM PUBLIC; REVOKE ALL ON TABLE cashreceiptapplymisc FROM admin; GRANT ALL ON TABLE cashreceiptapplymisc TO admin; GRANT ALL ON TABLE cashreceiptapplymisc TO xtrole; apiadminfalse75912592008759contactVIEWCREATE VIEW contact AS SELECT (cntct.cntct_number)::character varying AS contact_number, cntct.cntct_honorific AS honorific, cntct.cntct_first_name AS first, cntct.cntct_middle AS middle, cntct.cntct_last_name AS last, cntct.cntct_suffix AS suffix, cntct.cntct_initials AS initials, crmacct.crmacct_number AS crm_account, cntct.cntct_active AS active, cntct.cntct_title AS job_title, cntct.cntct_phone AS voice, cntct.cntct_phone2 AS alternate, cntct.cntct_fax AS fax, cntct.cntct_email AS email, cntct.cntct_webaddr AS web, ''::text AS contact_change, addr.addr_number AS address_number, addr.addr_line1 AS address1, addr.addr_line2 AS address2, addr.addr_line3 AS address3, addr.addr_city AS city, addr.addr_state AS state, addr.addr_postalcode AS postal_code, addr.addr_country AS country, cntct.cntct_notes AS notes, ''::text AS address_change FROM ((public.cntct LEFT JOIN public.addr ON ((cntct.cntct_addr_id = addr.addr_id))) LEFT JOIN public.crmacct ON ((cntct.cntct_crmacct_id = crmacct.crmacct_id))); DROP VIEW api.contact; apiadminfalse52326e"00 VIEW contactCOMMENT&COMMENT ON VIEW contact IS 'Contact'; apiadminfalse760f"00contactACLREVOKE ALL ON TABLE contact FROM PUBLIC; REVOKE ALL ON TABLE contact FROM admin; GRANT ALL ON TABLE contact TO admin; GRANT ALL ON TABLE contact TO xtrole; apiadminfalse76012592008767 contactcharVIEWnCREATE VIEW contactchar AS SELECT cntct.cntct_number AS contact_number, ("char".char_name)::character varying AS characteristic, charass.charass_value AS value FROM public.cntct, public."char", public.charass WHERE ((('CNTCT'::text = charass.charass_target_type) AND (cntct.cntct_id = charass.charass_target_id)) AND (charass.charass_char_id = "char".char_id)); DROP VIEW api.contactchar; apiadminfalse52366g"00VIEW contactcharCOMMENT:COMMENT ON VIEW contactchar IS 'Contact Characteristics'; apiadminfalse761h"00 contactcharACLREVOKE ALL ON TABLE contactchar FROM PUBLIC; REVOKE ALL ON TABLE contactchar FROM admin; GRANT ALL ON TABLE contactchar TO admin; GRANT ALL ON TABLE contactchar TO xtrole; apiadminfalse76112592008774contactcommentVIEWCREATE VIEW contactcomment AS SELECT cntct.cntct_number AS contact_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.cntct, public.cmnttype, public.comment WHERE (((comment.comment_source = 'T'::text) AND (comment.comment_source_id = cntct.cntct_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); DROP VIEW api.contactcomment; apiadminfalse52406i"00VIEW contactcommentCOMMENT5COMMENT ON VIEW contactcomment IS 'Contact Comment'; apiadminfalse762j"00contactcommentACLREVOKE ALL ON TABLE contactcomment FROM PUBLIC; REVOKE ALL ON TABLE contactcomment FROM admin; GRANT ALL ON TABLE contactcomment TO admin; GRANT ALL ON TABLE contactcomment TO xtrole; apiadminfalse76212592008801custcharVIEWCREATE VIEW custchar AS SELECT (custinfo.cust_number)::character varying AS customer_number, ("char".char_name)::character varying AS characteristic, charass.charass_value AS value FROM public.custinfo, public."char", public.charass WHERE ((('C'::text = charass.charass_target_type) AND (custinfo.cust_id = charass.charass_target_id)) AND (charass.charass_char_id = "char".char_id)); DROP VIEW api.custchar; apiadminfalse52526k"00 VIEW custcharCOMMENT8COMMENT ON VIEW custchar IS 'Customer Characteristics'; apiadminfalse765l"00custcharACLREVOKE ALL ON TABLE custchar FROM PUBLIC; REVOKE ALL ON TABLE custchar FROM admin; GRANT ALL ON TABLE custchar TO admin; GRANT ALL ON TABLE custchar TO xtrole; apiadminfalse76512592008808 custcommentVIEWCREATE VIEW custcomment AS SELECT (custinfo.cust_number)::character varying AS customer_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.custinfo, public.cmnttype, public.comment WHERE (((comment.comment_source = 'C'::text) AND (comment.comment_source_id = custinfo.cust_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); DROP VIEW api.custcomment; apiadminfalse52566m"00VIEW custcommentCOMMENT3COMMENT ON VIEW custcomment IS 'Customer Comment'; apiadminfalse766n"00 custcommentACLREVOKE ALL ON TABLE custcomment FROM PUBLIC; REVOKE ALL ON TABLE custcomment FROM admin; GRANT ALL ON TABLE custcomment TO admin; GRANT ALL ON TABLE custcomment TO xtrole; apiadminfalse76612591693199ccardTABLEgCREATE TABLE ccard ( ccard_id integer NOT NULL, ccard_seq integer DEFAULT 10 NOT NULL, ccard_cust_id integer NOT NULL, ccard_active boolean DEFAULT true, ccard_name bytea, ccard_address1 bytea, ccard_address2 bytea, ccard_city bytea, ccard_state bytea, ccard_zip bytea, ccard_country bytea, ccard_number bytea, ccard_debit boolean DEFAULT false, ccard_month_expired bytea, ccard_year_expired bytea, ccard_type character(1) NOT NULL, ccard_date_added timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, ccard_lastupdated timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, ccard_added_by_username text DEFAULT geteffectivextuser() NOT NULL, ccard_last_updated_by_username text DEFAULT geteffectivextuser() NOT NULL ); DROP TABLE public.ccard; publicadminfalse60186019602060216022602360248o"00 TABLE ccardCOMMENTSCOMMENT ON TABLE ccard IS 'Credit Card Information - all bytea data is encrypted'; publicadminfalse206p"00ccardACLREVOKE ALL ON TABLE ccard FROM PUBLIC; REVOKE ALL ON TABLE ccard FROM admin; GRANT ALL ON TABLE ccard TO admin; GRANT ALL ON TABLE ccard TO xtrole; publicadminfalse20612592008815custcreditcardVIEWCREATE VIEW custcreditcard AS SELECT (custinfo.cust_number)::character varying AS customer_number, CASE WHEN (ccard.ccard_type = 'V'::bpchar) THEN 'Visa'::text WHEN (ccard.ccard_type = 'M'::bpchar) THEN 'Master Card'::text WHEN (ccard.ccard_type = 'A'::bpchar) THEN 'American Express'::text WHEN (ccard.ccard_type = 'D'::bpchar) THEN 'Discover'::text ELSE 'Not Supported'::text END AS credit_card_type, ccard.ccard_active AS active, ccard.ccard_number AS credit_card_number, ccard.ccard_name AS name, ccard.ccard_address1 AS street_address1, ccard.ccard_address2 AS street_address2, ccard.ccard_city AS city, ccard.ccard_state AS state, ccard.ccard_zip AS postal_code, ccard.ccard_country AS country, ccard.ccard_month_expired AS expiration_month, ccard.ccard_year_expired AS expiration_year, ''::text AS key FROM public.ccard, public.custinfo WHERE (ccard.ccard_cust_id = custinfo.cust_id); DROP VIEW api.custcreditcard; apiadminfalse52606q"00VIEW custcreditcardCOMMENT<COMMENT ON VIEW custcreditcard IS 'Customer Credit Cards.'; apiadminfalse767r"00custcreditcardACLREVOKE ALL ON TABLE custcreditcard FROM PUBLIC; REVOKE ALL ON TABLE custcreditcard FROM admin; GRANT ALL ON TABLE custcreditcard TO admin; GRANT ALL ON TABLE custcreditcard TO xtrole; apiadminfalse76712591693217custtypeTABLEBCREATE TABLE custtype ( custtype_id integer DEFAULT nextval(('custtype_custtype_id_seq'::text)::regclass) NOT NULL, custtype_code text NOT NULL, custtype_descrip text NOT NULL, custtype_char boolean DEFAULT false NOT NULL, CONSTRAINT custtype_custtype_code_check CHECK ((custtype_code <> ''::text)) ); DROP TABLE public.custtype; publicadminfalse6026602760288s"00TABLE custtypeCOMMENT:COMMENT ON TABLE custtype IS 'Customer Type information'; publicadminfalse207t"00custtypeACLREVOKE ALL ON TABLE custtype FROM PUBLIC; REVOKE ALL ON TABLE custtype FROM admin; GRANT ALL ON TABLE custtype TO admin; GRANT ALL ON TABLE custtype TO xtrole; publicadminfalse20712591693225shipchrgTABLECREATE TABLE shipchrg ( shipchrg_id integer NOT NULL, shipchrg_name text NOT NULL, shipchrg_descrip text, shipchrg_custfreight boolean, shipchrg_handling character(1), CONSTRAINT shipchrg_shipchrg_name_check CHECK ((shipchrg_name <> ''::text)) ); DROP TABLE public.shipchrg; publicadminfalse60308u"00TABLE shipchrgCOMMENT<COMMENT ON TABLE shipchrg IS 'Shipping Charge information'; publicadminfalse208v"00shipchrgACLREVOKE ALL ON TABLE shipchrg FROM PUBLIC; REVOKE ALL ON TABLE shipchrg FROM admin; GRANT ALL ON TABLE shipchrg TO admin; GRANT ALL ON TABLE shipchrg TO xtrole; publicadminfalse20812591693231shipformTABLE-CREATE TABLE shipform ( shipform_id integer DEFAULT nextval(('"shipform_shipform_id_seq"'::text)::regclass) NOT NULL, shipform_name text NOT NULL, shipform_report_id integer, shipform_report_name text, CONSTRAINT shipform_shipform_name_check CHECK ((shipform_name <> ''::text)) ); DROP TABLE public.shipform; publicadminfalse603160328w"00TABLE shipformCOMMENT:COMMENT ON TABLE shipform IS 'Shipping Form information'; publicadminfalse209x"00"COLUMN shipform.shipform_report_idCOMMENThCOMMENT ON COLUMN shipform.shipform_report_id IS 'Obsolete -- reference shipform_report_name instead.'; publicadminfalse209y"00shipformACLREVOKE ALL ON TABLE shipform FROM PUBLIC; REVOKE ALL ON TABLE shipform FROM admin; GRANT ALL ON TABLE shipform TO admin; GRANT ALL ON TABLE shipform TO xtrole; publicadminfalse20912592008823customerVIEWCREATE VIEW customer AS SELECT (custinfo.cust_number)::character varying AS customer_number, custtype.custtype_code AS customer_type, custinfo.cust_name AS customer_name, custinfo.cust_active AS active, salesrep.salesrep_number AS sales_rep, (custinfo.cust_commprcnt * (100)::numeric) AS commission, custinfo.cust_shipvia AS ship_via, shipform.shipform_name AS ship_form, shipchrg.shipchrg_name AS shipping_charges, custinfo.cust_backorder AS accepts_backorders, custinfo.cust_partialship AS accepts_partial_shipments, custinfo.cust_ffshipto AS allow_free_form_shipto, custinfo.cust_ffbillto AS allow_free_form_billto, whsinfo.warehous_code AS preferred_selling_site, taxzone.taxzone_code AS default_tax_zone, terms.terms_code AS default_terms, CASE WHEN (custinfo.cust_balmethod = 'B'::bpchar) THEN 'Balance Forward'::text ELSE 'Open Item'::text END AS balance_method, custinfo.cust_discntprcnt AS default_discount, dc.curr_abbr AS default_currency, clc.curr_abbr AS credit_limit_currency, custinfo.cust_creditlmt AS credit_limit, CASE WHEN (COALESCE(custinfo.cust_gracedays, 0) > 0) THEN custinfo.cust_gracedays ELSE NULL::integer END AS alternate_grace_days, custinfo.cust_creditrating AS credit_rating, CASE WHEN (custinfo.cust_creditstatus = 'G'::bpchar) THEN 'In Good Standing'::text WHEN (custinfo.cust_creditstatus = 'W'::bpchar) THEN 'On Credit Warning'::text ELSE 'On Credit Hold'::text END AS credit_status, custinfo.cust_autoupdatestatus AS credit_status_exceed_warn, custinfo.cust_autoholdorders AS credit_status_exceed_hold, custinfo.cust_usespos AS uses_purchase_orders, custinfo.cust_blanketpos AS uses_blanket_pos, mc.cntct_number AS billing_contact_number, mc.cntct_honorific AS billing_contact_honorific, mc.cntct_first_name AS billing_contact_first, mc.cntct_middle AS billing_contact_middle, mc.cntct_last_name AS billing_contact_last, mc.cntct_suffix AS billing_contact_suffix, mc.cntct_title AS billing_contact_job_title, mc.cntct_phone AS billing_contact_voice, mc.cntct_phone2 AS billing_contact_alternate, mc.cntct_fax AS billing_contact_fax, mc.cntct_email AS billing_contact_email, mc.cntct_webaddr AS billing_contact_web, ''::text AS billing_contact_change, m.addr_number AS billing_contact_address_number, m.addr_line1 AS billing_contact_address1, m.addr_line2 AS billing_contact_address2, m.addr_line3 AS billing_contact_address3, m.addr_city AS billing_contact_city, m.addr_state AS billing_contact_state, m.addr_postalcode AS billing_contact_postalcode, m.addr_country AS billing_contact_country, ''::text AS billing_contact_address_change, cc.cntct_number AS correspond_contact_number, cc.cntct_honorific AS correspond_contact_honorific, cc.cntct_first_name AS correspond_contact_first, cc.cntct_middle AS correspond_contact_middle, cc.cntct_last_name AS correspond_contact_last, cc.cntct_suffix AS correspond_contact_suffix, cc.cntct_title AS correspond_contact_job_title, cc.cntct_phone AS correspond_contact_voice, cc.cntct_phone2 AS correspond_contact_alternate, cc.cntct_fax AS correspond_contact_fax, cc.cntct_email AS correspond_contact_email, cc.cntct_webaddr AS correspond_contact_web, ''::text AS correspond_contact_change, c.addr_number AS correspond_contact_address_number, c.addr_line1 AS correspond_contact_address1, c.addr_line2 AS correspond_contact_address2, c.addr_line3 AS correspond_contact_address3, c.addr_city AS correspond_contact_city, c.addr_state AS correspond_contact_state, c.addr_postalcode AS correspond_contact_postalcode, c.addr_country AS correspond_contact_country, ''::text AS correspond_contact_address_change, custinfo.cust_comments AS notes FROM ((((((((public.custinfo LEFT JOIN public.shipchrg ON ((custinfo.cust_shipchrg_id = shipchrg.shipchrg_id))) LEFT JOIN public.whsinfo ON ((custinfo.cust_preferred_warehous_id = whsinfo.warehous_id))) LEFT JOIN public.cntct mc ON ((custinfo.cust_cntct_id = mc.cntct_id))) LEFT JOIN public.addr m ON ((mc.cntct_addr_id = m.addr_id))) LEFT JOIN public.cntct cc ON ((custinfo.cust_corrcntct_id = cc.cntct_id))) LEFT JOIN public.addr c ON ((cc.cntct_addr_id = c.addr_id))) LEFT JOIN public.taxzone ON ((custinfo.cust_taxzone_id = taxzone.taxzone_id))) LEFT JOIN public.shipform ON ((custinfo.cust_shipform_id = shipform.shipform_id))), public.custtype, public.salesrep, public.curr_symbol dc, public.curr_symbol clc, public.terms WHERE (((((custinfo.cust_custtype_id = custtype.custtype_id) AND (custinfo.cust_salesrep_id = salesrep.salesrep_id)) AND (custinfo.cust_curr_id = dc.curr_id)) AND (custinfo.cust_creditlmt_curr_id = clc.curr_id)) AND (custinfo.cust_terms_id = terms.terms_id)); DROP VIEW api.customer; apiadminfalse52646z"00 VIEW customerCOMMENT(COMMENT ON VIEW customer IS 'Customer'; apiadminfalse768{"00customerACLREVOKE ALL ON TABLE customer FROM PUBLIC; REVOKE ALL ON TABLE customer FROM admin; GRANT ALL ON TABLE customer TO admin; GRANT ALL ON TABLE customer TO xtrole; apiadminfalse76812591693243taxauthTABLEICREATE TABLE taxauth ( taxauth_id integer NOT NULL, taxauth_code text NOT NULL, taxauth_name text, taxauth_extref text, taxauth_addr_id integer, taxauth_curr_id integer, taxauth_county text, taxauth_accnt_id integer, CONSTRAINT taxauth_taxauth_code_check CHECK ((taxauth_code <> ''::text)) ); DROP TABLE public.taxauth; publicadminfalse60348|"00 TABLE taxauthCOMMENT8COMMENT ON TABLE taxauth IS 'The Tax Authority table.'; publicadminfalse210}"00COLUMN taxauth.taxauth_curr_idCOMMENTCOMMENT ON COLUMN taxauth.taxauth_curr_id IS 'The required currency for recording tax information as. NULL means no preference.'; publicadminfalse210~"00taxauthACLREVOKE ALL ON TABLE taxauth FROM PUBLIC; REVOKE ALL ON TABLE taxauth FROM admin; GRANT ALL ON TABLE taxauth TO admin; GRANT ALL ON TABLE taxauth TO xtrole; publicadminfalse21012591693249taxregTABLECREATE TABLE taxreg ( taxreg_id integer NOT NULL, taxreg_rel_id integer NOT NULL, taxreg_rel_type character(1), taxreg_taxauth_id integer, taxreg_number text NOT NULL, taxreg_taxzone_id integer, taxreg_effective date DEFAULT startoftime(), taxreg_expires date DEFAULT endoftime(), taxreg_notes text DEFAULT ''::text, CONSTRAINT taxreg_taxreg_number_check CHECK ((taxreg_number <> ''::text)) ); DROP TABLE public.taxreg; publicadminfalse60356036603760398"00 TABLE taxregCOMMENTCOMMENT ON TABLE taxreg IS 'Stores Tax Registration numbers related to objects and a given tax authority. The rel_id specifies the object id and teh rel_type specifies the object type. See column comment for additional detail on types.'; publicadminfalse211"00COLUMN taxreg.taxreg_rel_typeCOMMENTCOMMENT ON COLUMN taxreg.taxreg_rel_type IS 'The type of relation this record is for. Known values are C=Customer, V=Vendor, NULL=This Manufacturer in which case taxreg_rel_id is meaningless and should be -1.'; publicadminfalse211"00taxregACLREVOKE ALL ON TABLE taxreg FROM PUBLIC; REVOKE ALL ON TABLE taxreg FROM admin; GRANT ALL ON TABLE taxreg TO admin; GRANT ALL ON TABLE taxreg TO xtrole; publicadminfalse21112592008833customertaxregVIEWCREATE VIEW customertaxreg AS SELECT (custinfo.cust_number)::character varying AS customer_number, (COALESCE(taxzone.taxzone_code, 'Any'::text))::character varying AS tax_zone, (taxauth.taxauth_code)::character varying AS tax_authority, taxreg.taxreg_number AS registration_number, CASE WHEN (taxreg.taxreg_effective = public.startoftime()) THEN 'Always'::text ELSE public.formatdate(taxreg.taxreg_effective) END AS start_date, CASE WHEN (taxreg.taxreg_expires = public.endoftime()) THEN 'Never'::text ELSE public.formatdate(taxreg.taxreg_expires) END AS end_date, taxreg.taxreg_notes AS notes FROM (((public.taxreg LEFT JOIN public.custinfo ON ((custinfo.cust_id = taxreg.taxreg_rel_id))) LEFT JOIN public.taxauth ON ((taxauth.taxauth_id = taxreg.taxreg_taxauth_id))) LEFT JOIN public.taxzone ON ((taxzone.taxzone_id = taxreg.taxreg_taxzone_id))) WHERE (taxreg.taxreg_rel_type = 'C'::bpchar) ORDER BY custinfo.cust_number, taxreg.taxreg_number; DROP VIEW api.customertaxreg; apiadminfalse52686"00VIEW customertaxregCOMMENT@COMMENT ON VIEW customertaxreg IS 'Customer Tax Registrations'; apiadminfalse769"00customertaxregACLREVOKE ALL ON TABLE customertaxreg FROM PUBLIC; REVOKE ALL ON TABLE customertaxreg FROM admin; GRANT ALL ON TABLE customertaxreg TO admin; GRANT ALL ON TABLE customertaxreg TO xtrole; apiadminfalse76912592008840 customertypeVIEWCREATE VIEW customertype AS SELECT (custtype.custtype_code)::character varying AS code, custtype.custtype_descrip AS description, custtype.custtype_char AS enable_characteristics_profile FROM public.custtype ORDER BY custtype.custtype_code; DROP VIEW api.customertype; apiadminfalse52706"00VIEW customertypeCOMMENT1COMMENT ON VIEW customertype IS 'Customer Type'; apiadminfalse770"00 customertypeACLREVOKE ALL ON TABLE customertype FROM PUBLIC; REVOKE ALL ON TABLE customertype FROM admin; GRANT ALL ON TABLE customertype TO admin; GRANT ALL ON TABLE customertype TO xtrole; apiadminfalse77012592008847customertypecharVIEWCREATE VIEW customertypechar AS SELECT (custtype.custtype_code)::character varying AS customer_type, ("char".char_name)::character varying AS characteristic, charass.charass_value AS value, charass.charass_default AS is_default FROM public.custtype, public."char", public.charass WHERE ((('CT'::text = charass.charass_target_type) AND (custtype.custtype_id = charass.charass_target_id)) AND (charass.charass_char_id = "char".char_id)); DROP VIEW api.customertypechar; apiadminfalse52746"00VIEW customertypecharCOMMENTECOMMENT ON VIEW customertypechar IS 'Customer Type Characteristics'; apiadminfalse771"00customertypecharACLREVOKE ALL ON TABLE customertypechar FROM PUBLIC; REVOKE ALL ON TABLE customertypechar FROM admin; GRANT ALL ON TABLE customertypechar TO admin; GRANT ALL ON TABLE customertypechar TO xtrole; apiadminfalse77112592008854 custshiptoVIEWcCREATE VIEW custshipto AS SELECT (custinfo.cust_number)::character varying AS customer_number, (shiptoinfo.shipto_num)::character varying AS shipto_number, shiptoinfo.shipto_active AS active, shiptoinfo.shipto_name AS name, shiptoinfo.shipto_default AS default_flag, addr.addr_number AS address_number, addr.addr_line1 AS address1, addr.addr_line2 AS address2, addr.addr_line3 AS address3, addr.addr_city AS city, addr.addr_state AS state, addr.addr_postalcode AS postal_code, addr.addr_country AS country, ''::text AS address_change, cntct.cntct_number AS contact_number, cntct.cntct_honorific AS honorific, cntct.cntct_first_name AS first, cntct.cntct_middle AS middle, cntct.cntct_last_name AS last, cntct.cntct_suffix AS suffix, cntct.cntct_title AS job_title, cntct.cntct_phone AS phone, cntct.cntct_fax AS fax, cntct.cntct_email AS email, ''::text AS contact_change, salesrep.salesrep_number AS sales_rep, (shiptoinfo.shipto_commission * 100.0) AS commission, shipzone.shipzone_name AS zone, taxzone.taxzone_code AS tax_zone, shiptoinfo.shipto_shipvia AS ship_via, shipform.shipform_name AS ship_form, shipchrg.shipchrg_name AS shipping_charges, CASE WHEN (shiptoinfo.shipto_ediprofile_id = (-1)) THEN 'No EDI'::text WHEN (shiptoinfo.shipto_ediprofile_id = (-2)) THEN 'Use Customer Master'::text ELSE public.getediprofilename(shiptoinfo.shipto_ediprofile_id) END AS edi_profile, shiptoinfo.shipto_comments AS general_notes, shiptoinfo.shipto_shipcomments AS shipping_notes FROM public.custinfo, ((((((public.shiptoinfo LEFT JOIN public.shipchrg ON ((shiptoinfo.shipto_shipchrg_id = shipchrg.shipchrg_id))) LEFT JOIN public.cntct ON ((shiptoinfo.shipto_cntct_id = cntct.cntct_id))) LEFT JOIN public.addr ON ((shiptoinfo.shipto_addr_id = addr.addr_id))) LEFT JOIN public.taxzone ON ((shiptoinfo.shipto_taxzone_id = taxzone.taxzone_id))) LEFT JOIN public.shipzone ON ((shiptoinfo.shipto_shipzone_id = shipzone.shipzone_id))) LEFT JOIN public.salesrep ON ((shiptoinfo.shipto_salesrep_id = salesrep.salesrep_id))), public.shipform WHERE ((custinfo.cust_id = shiptoinfo.shipto_cust_id) AND (custinfo.cust_shipform_id = shipform.shipform_id)); DROP VIEW api.custshipto; apiadminfalse52786"00VIEW custshiptoCOMMENT9COMMENT ON VIEW custshipto IS 'Customer Shipto Address'; apiadminfalse772"00 custshiptoACLREVOKE ALL ON TABLE custshipto FROM PUBLIC; REVOKE ALL ON TABLE custshipto FROM admin; GRANT ALL ON TABLE custshipto TO admin; GRANT ALL ON TABLE custshipto TO xtrole; apiadminfalse77212592008864custtaxVIEWCREATE VIEW custtax AS SELECT (custinfo.cust_number)::character varying AS customer_number, (taxauth.taxauth_code)::character varying AS tax_authority, taxreg.taxreg_number AS registration_number FROM public.custinfo, public.taxauth, public.taxreg WHERE (((taxreg.taxreg_rel_type = 'C'::bpchar) AND (taxreg.taxreg_rel_id = custinfo.cust_id)) AND (taxreg.taxreg_taxauth_id = taxauth.taxauth_id)); DROP VIEW api.custtax; apiadminfalse52826"00 VIEW custtaxCOMMENT8COMMENT ON VIEW custtax IS 'Customer Tax Registration'; apiadminfalse773"00custtaxACLREVOKE ALL ON TABLE custtax FROM PUBLIC; REVOKE ALL ON TABLE custtax FROM admin; GRANT ALL ON TABLE custtax TO admin; GRANT ALL ON TABLE custtax TO xtrole; apiadminfalse77312591693287deptTABLECREATE TABLE dept ( dept_id integer NOT NULL, dept_number text NOT NULL, dept_name text NOT NULL, CONSTRAINT dept_dept_number_check CHECK ((dept_number <> ''::text)) ); DROP TABLE public.dept; publicadminfalse60438"00 TABLE deptCOMMENT0COMMENT ON TABLE dept IS 'List of Departments'; publicadminfalse213"00deptACLREVOKE ALL ON TABLE dept FROM PUBLIC; REVOKE ALL ON TABLE dept FROM admin; GRANT ALL ON TABLE dept TO admin; GRANT ALL ON TABLE dept TO xtrole; publicadminfalse21312591693293empTABLECREATE TABLE emp ( emp_id integer NOT NULL, emp_code text NOT NULL, emp_number text NOT NULL, emp_active boolean DEFAULT true NOT NULL, emp_cntct_id integer, emp_warehous_id integer, emp_mgr_emp_id integer, emp_wage_type text NOT NULL, emp_wage numeric, emp_wage_curr_id integer DEFAULT basecurrid(), emp_wage_period text NOT NULL, emp_dept_id integer, emp_shift_id integer, emp_notes text, emp_image_id integer, emp_username text, emp_extrate numeric, emp_extrate_period text NOT NULL, emp_startdate date DEFAULT ('now'::text)::date, emp_name text NOT NULL, CONSTRAINT emp_check CHECK (((((COALESCE(emp_wage_type, ''::text) = ''::text) OR (COALESCE(emp_wage_type, ''::text) = 'H'::text)) OR (COALESCE(emp_wage_type, ''::text) = 'S'::text)) AND ((COALESCE(emp_wage, (0)::numeric) = (0)::numeric) OR ((COALESCE(emp_wage_type, ''::text) <> ''::text) AND (emp_wage IS NOT NULL))))), CONSTRAINT emp_emp_code_check CHECK ((emp_code <> ''::text)), CONSTRAINT emp_emp_number_check CHECK ((emp_number <> ''::text)), CONSTRAINT emp_emp_wage_period_check CHECK ((((((((COALESCE(emp_wage_period, ''::text) = ''::text) OR (COALESCE(emp_wage_period, ''::text) = 'H'::text)) OR (COALESCE(emp_wage_period, ''::text) = 'D'::text)) OR (COALESCE(emp_wage_period, ''::text) = 'W'::text)) OR (COALESCE(emp_wage_period, ''::text) = 'BW'::text)) OR (COALESCE(emp_wage_period, ''::text) = 'M'::text)) OR (COALESCE(emp_wage_period, ''::text) = 'Y'::text))) ); DROP TABLE public.emp; publicadminfalse60446045604660486049605060518"00 TABLE empCOMMENT~COMMENT ON TABLE emp IS 'Employee table describing the basic properties of an employee. Employees need not be system users.'; publicadminfalse214"00COLUMN emp.emp_codeCOMMENTCOMMENT ON COLUMN emp.emp_code IS 'Short, human-readable name for employee. This value is kept synchronized with usr_username and salesrep_number, and so is unique across all three tables emp, usr, and salesrep.'; publicadminfalse214"00COLUMN emp.emp_numberCOMMENTCOMMENT ON COLUMN emp.emp_number IS 'Official employee number. This might be used for ID badges, payroll accounting, or other purposes.'; publicadminfalse214"00COLUMN emp.emp_mgr_emp_idCOMMENT_COMMENT ON COLUMN emp.emp_mgr_emp_id IS 'Internal ID of this employee''s manager/supervisor.'; publicadminfalse214"00COLUMN emp.emp_wage_typeCOMMENTCOMMENT ON COLUMN emp.emp_wage_type IS 'The nature of the wage or employment agreement. ''H'' indicates this employee is paid on an hourly basis (or some other period) while ''S'' indicates this employee is salaried.'; publicadminfalse214"00COLUMN emp.emp_wage_periodCOMMENTCOMMENT ON COLUMN emp.emp_wage_period IS 'The periodicity of wage payment: ''H'' for hourly, ''D'' for daily, ''W'' for weekly, ''BW'' for biweekly, ''M'' for monthly, ''Y'' for yearly.'; publicadminfalse214"00COLUMN emp.emp_usernameCOMMENTCOMMENT ON COLUMN emp.emp_username IS 'DEPRECATED - the relationship between Employee and User is now maintained through the crmacct table.'; publicadminfalse214"00COLUMN emp.emp_extrate_periodCOMMENTCOMMENT ON COLUMN emp.emp_extrate_period IS 'The periodicity of external rate payment: ''H'' for hourly, ''D'' for daily, ''W'' for weekly, ''BW'' for biweekly, ''M'' for monthly, ''Y'' for yearly.'; publicadminfalse214"00empACLREVOKE ALL ON TABLE emp FROM PUBLIC; REVOKE ALL ON TABLE emp FROM admin; GRANT ALL ON TABLE emp TO admin; GRANT ALL ON TABLE emp TO xtrole; publicadminfalse21412591693304shiftTABLECREATE TABLE shift ( shift_id integer NOT NULL, shift_number text NOT NULL, shift_name text NOT NULL, CONSTRAINT shift_shift_number_check CHECK ((shift_number <> ''::text)) ); DROP TABLE public.shift; publicadminfalse60538"00 TABLE shiftCOMMENT1COMMENT ON TABLE shift IS 'List of work Shifts'; publicadminfalse215"00shiftACLREVOKE ALL ON TABLE shift FROM PUBLIC; REVOKE ALL ON TABLE shift FROM admin; GRANT ALL ON TABLE shift TO admin; GRANT ALL ON TABLE shift TO xtrole; publicadminfalse21512592008871employeeVIEW@ CREATE VIEW employee AS SELECT (e.emp_code)::character varying AS code, (e.emp_number)::character varying AS number, e.emp_active AS active, e.emp_startdate AS start_date, cntct.cntct_number AS contact_number, cntct.cntct_honorific AS honorific, cntct.cntct_first_name AS first, cntct.cntct_middle AS middle, cntct.cntct_last_name AS last, cntct.cntct_suffix AS suffix, cntct.cntct_title AS job_title, cntct.cntct_phone AS voice, cntct.cntct_phone2 AS alternate, cntct.cntct_fax AS fax, cntct.cntct_email AS email, cntct.cntct_webaddr AS web, ''::text AS contact_change, addr.addr_number AS address_number, addr.addr_line1 AS address1, addr.addr_line2 AS address2, addr.addr_line3 AS address3, addr.addr_city AS city, addr.addr_state AS state, addr.addr_postalcode AS postalcode, addr.addr_country AS country, ''::text AS address_change, whsinfo.warehous_code AS site, m.emp_code AS manager_code, CASE WHEN (e.emp_wage_type = 'H'::text) THEN 'Hourly'::text WHEN (e.emp_wage_type = 'S'::text) THEN 'Salaried'::text WHEN (e.emp_wage_type IS NULL) THEN NULL::text ELSE 'Error'::text END AS wage_type, e.emp_wage AS wage, curr_symbol.curr_abbr AS wage_currency, CASE WHEN (e.emp_wage_period = 'H'::text) THEN 'Hour'::text WHEN (e.emp_wage_period = 'D'::text) THEN 'Day'::text WHEN (e.emp_wage_period = 'W'::text) THEN 'Week'::text WHEN (e.emp_wage_period = 'BW'::text) THEN 'Biweek'::text WHEN (e.emp_wage_period = 'M'::text) THEN 'Month'::text WHEN (e.emp_wage_period = 'Y'::text) THEN 'Year'::text WHEN (e.emp_wage_period IS NULL) THEN NULL::text ELSE 'Error'::text END AS wage_period, dept.dept_number AS department, shift.shift_number AS shift, (crmacct.crmacct_usr_username IS NOT NULL) AS is_user, (salesrep.salesrep_id IS NOT NULL) AS is_salesrep, (vendinfo.vend_id IS NOT NULL) AS is_vendor, e.emp_notes AS notes, image.image_name AS image, e.emp_extrate AS rate, curr_symbol.curr_abbr AS billing_currency, CASE WHEN (e.emp_extrate_period = 'H'::text) THEN 'Hour'::text WHEN (e.emp_extrate_period = 'D'::text) THEN 'Day'::text WHEN (e.emp_extrate_period = 'W'::text) THEN 'Week'::text WHEN (e.emp_extrate_period = 'BW'::text) THEN 'Biweek'::text WHEN (e.emp_extrate_period = 'M'::text) THEN 'Month'::text WHEN (e.emp_extrate_period = 'Y'::text) THEN 'Year'::text WHEN (e.emp_extrate_period IS NULL) THEN NULL::text ELSE 'Error'::text END AS billing_period FROM (((((((((((public.emp e JOIN public.crmacct ON ((e.emp_id = crmacct.crmacct_emp_id))) LEFT JOIN public.cntct ON ((e.emp_cntct_id = cntct.cntct_id))) LEFT JOIN public.addr ON ((cntct.cntct_addr_id = addr.addr_id))) LEFT JOIN public.whsinfo ON ((e.emp_warehous_id = whsinfo.warehous_id))) LEFT JOIN public.emp m ON ((e.emp_mgr_emp_id = m.emp_id))) LEFT JOIN public.dept ON ((e.emp_dept_id = dept.dept_id))) LEFT JOIN public.shift ON ((e.emp_shift_id = shift.shift_id))) LEFT JOIN public.salesrep ON ((crmacct.crmacct_salesrep_id = salesrep.salesrep_id))) LEFT JOIN public.vendinfo ON ((crmacct.crmacct_vend_id = vendinfo.vend_id))) LEFT JOIN public.image ON ((e.emp_image_id = image.image_id))) JOIN public.curr_symbol ON ((e.emp_wage_curr_id = curr_symbol.curr_id))); DROP VIEW api.employee; apiadminfalse52866"00 VIEW employeeCOMMENT(COMMENT ON VIEW employee IS 'Employee'; apiadminfalse774"00employeeACLREVOKE ALL ON TABLE employee FROM PUBLIC; REVOKE ALL ON TABLE employee FROM admin; GRANT ALL ON TABLE employee TO admin; GRANT ALL ON TABLE employee TO xtrole; apiadminfalse77412592008881 employeecharVIEWuCREATE VIEW employeechar AS SELECT (emp.emp_code)::character varying AS employee_code, ("char".char_name)::character varying AS characteristic, charass.charass_value AS value FROM public.emp, public."char", public.charass WHERE ((('EMP'::text = charass.charass_target_type) AND (emp.emp_id = charass.charass_target_id)) AND (charass.charass_char_id = "char".char_id)); DROP VIEW api.employeechar; apiadminfalse52906"00VIEW employeecharCOMMENT<COMMENT ON VIEW employeechar IS 'Employee Characteristics'; apiadminfalse775"00 employeecharACLREVOKE ALL ON TABLE employeechar FROM PUBLIC; REVOKE ALL ON TABLE employeechar FROM admin; GRANT ALL ON TABLE employeechar TO admin; GRANT ALL ON TABLE employeechar TO xtrole; apiadminfalse77512592008888employeecommentVIEWCREATE VIEW employeecomment AS SELECT (emp.emp_code)::character varying AS code, (cmnttype.cmnttype_name)::character varying AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.emp, public.cmnttype, public.comment WHERE (((comment.comment_source = 'EMP'::text) AND (comment.comment_source_id = emp.emp_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); DROP VIEW api.employeecomment; apiadminfalse52946"00VIEW employeecommentCOMMENT7COMMENT ON VIEW employeecomment IS 'Employee Comment'; apiadminfalse776"00employeecommentACLREVOKE ALL ON TABLE employeecomment FROM PUBLIC; REVOKE ALL ON TABLE employeecomment FROM admin; GRANT ALL ON TABLE employeecomment TO admin; GRANT ALL ON TABLE employeecomment TO xtrole; apiadminfalse77612591693323shipdataTABLECREATE TABLE shipdata ( shipdata_cohead_number text NOT NULL, shipdata_cosmisc_tracknum text NOT NULL, shipdata_cosmisc_packnum_tracknum text NOT NULL, shipdata_weight numeric(16,4), shipdata_base_freight numeric(16,4), shipdata_total_freight numeric(16,4), shipdata_shipper text DEFAULT 'UPS'::text, shipdata_billing_option text, shipdata_package_type text, shipdata_void_ind character(1) NOT NULL, shipdata_lastupdated timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, shipdata_shiphead_number text, shipdata_base_freight_curr_id integer DEFAULT basecurrid(), shipdata_total_freight_curr_id integer DEFAULT basecurrid() ); DROP TABLE public.shipdata; publicadminfalse60546055605660578"00TABLE shipdataCOMMENTCOMMENT ON TABLE shipdata IS 'Shipping Interface information - note that the shipdata_cohead_nember is text and not int. That is due to ODBC chopping off during the transfer'; publicadminfalse216"00shipdataACLREVOKE ALL ON TABLE shipdata FROM PUBLIC; REVOKE ALL ON TABLE shipdata FROM admin; GRANT ALL ON TABLE shipdata TO admin; GRANT ALL ON TABLE shipdata TO xtrole; publicadminfalse216 12592008895 extshipmaintVIEW&CREATE VIEW extshipmaint AS SELECT (shipdata.shipdata_cohead_number)::character varying AS so_number, (shipdata.shipdata_shiphead_number)::character varying AS shipment_number, (shipdata.shipdata_shipper)::character varying AS shipper, (shipdata.shipdata_cosmisc_packnum_tracknum)::character varying AS package_tracking_number, shipdata.shipdata_void_ind AS void, shipdata.shipdata_billing_option AS billing_option, shipdata.shipdata_weight AS weight, shipdata.shipdata_base_freight AS base_freight, base.curr_abbr AS base_freight_currency, shipdata.shipdata_total_freight AS total_freight, total.curr_abbr AS total_freight_currency, shipdata.shipdata_package_type AS package_type, shipdata.shipdata_cosmisc_tracknum AS tracking_number, shipdata.shipdata_lastupdated AS last_updated FROM public.shipdata, public.curr_symbol base, public.curr_symbol total WHERE ((shipdata.shipdata_base_freight_curr_id = base.curr_id) AND (shipdata.shipdata_total_freight_curr_id = total.curr_id)) ORDER BY shipdata.shipdata_cohead_number, shipdata.shipdata_shiphead_number; DROP VIEW api.extshipmaint; apiadminfalse52986"00VIEW extshipmaintCOMMENTACOMMENT ON VIEW extshipmaint IS 'External Shipping Maintenance'; apiadminfalse777"00 extshipmaintACLREVOKE ALL ON TABLE extshipmaint FROM PUBLIC; REVOKE ALL ON TABLE extshipmaint FROM admin; GRANT ALL ON TABLE extshipmaint TO admin; GRANT ALL ON TABLE extshipmaint TO xtrole; apiadminfalse77712591693337 freightclassTABLECREATE TABLE freightclass ( freightclass_id integer NOT NULL, freightclass_code text NOT NULL, freightclass_descrip text, CONSTRAINT freightclass_freightclass_code_check CHECK ((freightclass_code <> ''::text)) ); DROP TABLE public.freightclass; publicadminfalse60598"00TABLE freightclassCOMMENTOCOMMENT ON TABLE freightclass IS 'This table is the freight price schedules.'; publicadminfalse217"00 freightclassACLREVOKE ALL ON TABLE freightclass FROM PUBLIC; REVOKE ALL ON TABLE freightclass FROM admin; GRANT ALL ON TABLE freightclass TO admin; GRANT ALL ON TABLE freightclass TO xtrole; publicadminfalse21712591693343 ipsfreightTABLECREATE TABLE ipsfreight ( ipsfreight_id integer NOT NULL, ipsfreight_ipshead_id integer NOT NULL, ipsfreight_qtybreak numeric DEFAULT 0 NOT NULL, ipsfreight_price numeric DEFAULT 0 NOT NULL, ipsfreight_type character(1) NOT NULL, ipsfreight_warehous_id integer, ipsfreight_shipzone_id integer, ipsfreight_freightclass_id integer, ipsfreight_shipvia text ); DROP TABLE public.ipsfreight; publicadminfalse606160628"00 ipsfreightACLREVOKE ALL ON TABLE ipsfreight FROM PUBLIC; REVOKE ALL ON TABLE ipsfreight FROM admin; GRANT ALL ON TABLE ipsfreight TO admin; GRANT ALL ON TABLE ipsfreight TO xtrole; publicadminfalse21812591693351ipsheadTABLECREATE TABLE ipshead ( ipshead_id integer DEFAULT nextval(('"ipshead_ipshead_id_seq"'::text)::regclass) NOT NULL, ipshead_name text NOT NULL, ipshead_descrip text, ipshead_effective date, ipshead_expires date, ipshead_curr_id integer DEFAULT basecurrid() NOT NULL, ipshead_updated date, CONSTRAINT ipshead_ipshead_name_check CHECK ((ipshead_name <> ''::text)) ); DROP TABLE public.ipshead; publicadminfalse6063606460658"00 TABLE ipsheadCOMMENTCCOMMENT ON TABLE ipshead IS 'Pricing Schedule header information'; publicadminfalse219"00ipsheadACLREVOKE ALL ON TABLE ipshead FROM PUBLIC; REVOKE ALL ON TABLE ipshead FROM admin; GRANT ALL ON TABLE ipshead TO admin; GRANT ALL ON TABLE ipshead TO xtrole; publicadminfalse219 12592008902freightpricingscheduleitemVIEW;CREATE VIEW freightpricingscheduleitem AS SELECT (ipshead.ipshead_name)::character varying AS pricing_schedule, ipsfreight.ipsfreight_qtybreak AS qty_break, (qtyuom.uom_name)::character varying AS qty_uom, ipsfreight.ipsfreight_price AS price, CASE WHEN (ipsfreight.ipsfreight_type = 'F'::bpchar) THEN 'Flat Rate'::text ELSE 'Price Per UOM'::text END AS price_type, COALESCE(whsinfo.warehous_code, 'Any'::text) AS from_site, COALESCE(shipzone.shipzone_name, 'Any'::text) AS to_shipzone, COALESCE(ipsfreight.ipsfreight_shipvia, 'Any'::text) AS ship_via, COALESCE(freightclass.freightclass_code, 'Any'::text) AS freight_class FROM (((((public.ipsfreight JOIN public.ipshead ON ((ipsfreight.ipsfreight_ipshead_id = ipshead.ipshead_id))) LEFT JOIN public.uom qtyuom ON (qtyuom.uom_item_weight)) LEFT JOIN public.whsinfo ON ((whsinfo.warehous_id = ipsfreight.ipsfreight_warehous_id))) LEFT JOIN public.shipzone ON ((shipzone.shipzone_id = ipsfreight.ipsfreight_shipzone_id))) LEFT JOIN public.freightclass ON ((freightclass.freightclass_id = ipsfreight.ipsfreight_freightclass_id))); *DROP VIEW api.freightpricingscheduleitem; apiadminfalse53026"00VIEW freightpricingscheduleitemCOMMENTOCOMMENT ON VIEW freightpricingscheduleitem IS 'Freight Pricing Schedule Item'; apiadminfalse778"00freightpricingscheduleitemACLREVOKE ALL ON TABLE freightpricingscheduleitem FROM PUBLIC; REVOKE ALL ON TABLE freightpricingscheduleitem FROM admin; GRANT ALL ON TABLE freightpricingscheduleitem TO admin; GRANT ALL ON TABLE freightpricingscheduleitem TO xtrole; apiadminfalse778 12592008912 glaccountVIEWCREATE VIEW glaccount AS SELECT (accnt.accnt_company)::character varying AS company, (accnt.accnt_profit)::character varying AS profit_center, (accnt.accnt_number)::character varying AS account_number, (accnt.accnt_sub)::character varying AS sub_account, accnt.accnt_descrip AS description, accnt.accnt_extref AS ext_reference, CASE WHEN (accnt.accnt_type = 'A'::bpchar) THEN 'Asset'::text WHEN (accnt.accnt_type = 'L'::bpchar) THEN 'Liability'::text WHEN (accnt.accnt_type = 'E'::bpchar) THEN 'Expense'::text WHEN (accnt.accnt_type = 'R'::bpchar) THEN 'Revenue'::text WHEN (accnt.accnt_type = 'Q'::bpchar) THEN 'Equity'::text ELSE '?'::text END AS type, accnt.accnt_subaccnttype_code AS sub_type, accnt.accnt_forwardupdate AS forward_update_trial_balances, accnt.accnt_comments AS notes FROM public.accnt ORDER BY accnt.accnt_company, accnt.accnt_profit, accnt.accnt_number, accnt.accnt_sub; DROP VIEW api.glaccount; apiadminfalse53066"00VIEW glaccountCOMMENT+COMMENT ON VIEW glaccount IS 'GL Account'; apiadminfalse779"00 glaccountACLREVOKE ALL ON TABLE glaccount FROM PUBLIC; REVOKE ALL ON TABLE glaccount FROM admin; GRANT ALL ON TABLE glaccount TO admin; GRANT ALL ON TABLE glaccount TO xtrole; apiadminfalse77912591693369incdtcatTABLE CREATE TABLE incdtcat ( incdtcat_id integer NOT NULL, incdtcat_name text NOT NULL, incdtcat_order integer, incdtcat_descrip text, incdtcat_ediprofile_id integer, CONSTRAINT incdtcat_incdtcat_name_check CHECK ((incdtcat_name <> ''::text)) ); DROP TABLE public.incdtcat; publicadminfalse60678"00TABLE incdtcatCOMMENT8COMMENT ON TABLE incdtcat IS 'Incident Category table'; publicadminfalse220"00incdtcatACLREVOKE ALL ON TABLE incdtcat FROM PUBLIC; REVOKE ALL ON TABLE incdtcat FROM admin; GRANT ALL ON TABLE incdtcat TO admin; GRANT ALL ON TABLE incdtcat TO xtrole; publicadminfalse22012591693375 incdtpriorityTABLE CREATE TABLE incdtpriority ( incdtpriority_id integer NOT NULL, incdtpriority_name text NOT NULL, incdtpriority_order integer, incdtpriority_descrip text, CONSTRAINT incdtpriority_incdtpriority_name_check CHECK ((incdtpriority_name <> ''::text)) ); !DROP TABLE public.incdtpriority; publicadminfalse60698"00TABLE incdtpriorityCOMMENT=COMMENT ON TABLE incdtpriority IS 'Incident Priority table'; publicadminfalse221"00 incdtpriorityACLREVOKE ALL ON TABLE incdtpriority FROM PUBLIC; REVOKE ALL ON TABLE incdtpriority FROM admin; GRANT ALL ON TABLE incdtpriority TO admin; GRANT ALL ON TABLE incdtpriority TO xtrole; publicadminfalse22112591693381incdtresolutionTABLECREATE TABLE incdtresolution ( incdtresolution_id integer NOT NULL, incdtresolution_name text NOT NULL, incdtresolution_order integer, incdtresolution_descrip text, CONSTRAINT incdtresolution_incdtresolution_name_check CHECK ((incdtresolution_name <> ''::text)) ); #DROP TABLE public.incdtresolution; publicadminfalse60718"00TABLE incdtresolutionCOMMENTACOMMENT ON TABLE incdtresolution IS 'Incident Resolution table'; publicadminfalse222"00incdtresolutionACLREVOKE ALL ON TABLE incdtresolution FROM PUBLIC; REVOKE ALL ON TABLE incdtresolution FROM admin; GRANT ALL ON TABLE incdtresolution TO admin; GRANT ALL ON TABLE incdtresolution TO xtrole; publicadminfalse22212591693387 incdtseverityTABLE CREATE TABLE incdtseverity ( incdtseverity_id integer NOT NULL, incdtseverity_name text NOT NULL, incdtseverity_order integer, incdtseverity_descrip text, CONSTRAINT incdtseverity_incdtseverity_name_check CHECK ((incdtseverity_name <> ''::text)) ); !DROP TABLE public.incdtseverity; publicadminfalse60738"00TABLE incdtseverityCOMMENT=COMMENT ON TABLE incdtseverity IS 'Incident Severity table'; publicadminfalse223"00 incdtseverityACLREVOKE ALL ON TABLE incdtseverity FROM PUBLIC; REVOKE ALL ON TABLE incdtseverity FROM admin; GRANT ALL ON TABLE incdtseverity TO admin; GRANT ALL ON TABLE incdtseverity TO xtrole; publicadminfalse223 12592008921incidentVIEWCREATE VIEW incident AS SELECT incdt.incdt_number AS incident_number, incdtcat.incdtcat_name AS category, incdt.incdt_summary AS description, crmacct.crmacct_number AS crm_account, incdt.incdt_assigned_username AS assigned_to, CASE WHEN (incdt.incdt_status = 'N'::bpchar) THEN 'New'::text WHEN (incdt.incdt_status = 'F'::bpchar) THEN 'Feedback'::text WHEN (incdt.incdt_status = 'C'::bpchar) THEN 'Confirmed'::text WHEN (incdt.incdt_status = 'A'::bpchar) THEN 'Assigned'::text WHEN (incdt.incdt_status = 'R'::bpchar) THEN 'Resolved'::text WHEN (incdt.incdt_status = 'L'::bpchar) THEN 'Closed'::text ELSE '?'::text END AS status, incdtseverity.incdtseverity_name AS severity, incdtpriority.incdtpriority_name AS priority, incdtresolution.incdtresolution_name AS resolution, cntct.cntct_number AS contact_number, cntct.cntct_honorific AS honorific, cntct.cntct_first_name AS first, cntct.cntct_middle AS middle, cntct.cntct_last_name AS last, cntct.cntct_suffix AS suffix, cntct.cntct_title AS job_title, cntct.cntct_phone AS phone, cntct.cntct_fax AS fax, cntct.cntct_email AS email, ''::text AS contact_change, incdt.incdt_descrip AS notes, item.item_number, incdt.incdt_lotserial AS lot_serial_number, CASE WHEN (aropen.aropen_doctype = 'C'::bpchar) THEN 'C/M'::text WHEN (aropen.aropen_doctype = 'D'::bpchar) THEN 'D/M'::text WHEN (aropen.aropen_doctype = 'I'::bpchar) THEN 'Invoice'::text WHEN (aropen.aropen_doctype = 'R'::bpchar) THEN 'C/D'::text ELSE ''::text END AS ar_doc_type, aropen.aropen_docnumber AS ar_doc_number FROM ((((((((public.incdt LEFT JOIN public.incdtcat ON ((incdtcat.incdtcat_id = incdt.incdt_incdtcat_id))) LEFT JOIN public.crmacct ON ((crmacct.crmacct_id = incdt.incdt_crmacct_id))) LEFT JOIN public.incdtseverity ON ((incdtseverity.incdtseverity_id = incdt.incdt_incdtseverity_id))) LEFT JOIN public.incdtpriority ON ((incdtpriority.incdtpriority_id = incdt.incdt_incdtpriority_id))) LEFT JOIN public.incdtresolution ON ((incdtresolution.incdtresolution_id = incdt.incdt_incdtresolution_id))) LEFT JOIN public.cntct ON ((cntct.cntct_id = incdt.incdt_cntct_id))) LEFT JOIN public.item ON ((item.item_id = incdt.incdt_item_id))) LEFT JOIN public.aropen ON ((aropen.aropen_id = incdt.incdt_aropen_id))); DROP VIEW api.incident; apiadminfalse53096"00 VIEW incidentCOMMENT(COMMENT ON VIEW incident IS 'Incident'; apiadminfalse780"00incidentACLREVOKE ALL ON TABLE incident FROM PUBLIC; REVOKE ALL ON TABLE incident FROM admin; GRANT ALL ON TABLE incident TO admin; GRANT ALL ON TABLE incident TO xtrole; apiadminfalse780 12592008931 incidentcharVIEWpCREATE VIEW incidentchar AS SELECT incdt.incdt_number AS incident_number, ("char".char_name)::character varying AS characteristic, charass.charass_value AS value FROM public.incdt, public."char", public.charass WHERE ((('INCDT'::text = charass.charass_target_type) AND (incdt.incdt_id = charass.charass_target_id)) AND (charass.charass_char_id = "char".char_id)); DROP VIEW api.incidentchar; apiadminfalse53136"00VIEW incidentcharCOMMENT<COMMENT ON VIEW incidentchar IS 'Incident Characteristics'; apiadminfalse781"00 incidentcharACLREVOKE ALL ON TABLE incidentchar FROM PUBLIC; REVOKE ALL ON TABLE incidentchar FROM admin; GRANT ALL ON TABLE incidentchar TO admin; GRANT ALL ON TABLE incidentchar TO xtrole; apiadminfalse78112592008938incidentcommentVIEWCREATE VIEW incidentcomment AS SELECT incdt.incdt_number AS incident_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text, comment.comment_public AS public FROM public.incdt, public.cmnttype, public.comment WHERE (((comment.comment_source = 'INCDT'::text) AND (comment.comment_source_id = incdt.incdt_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); DROP VIEW api.incidentcomment; apiadminfalse53176"00VIEW incidentcommentCOMMENT7COMMENT ON VIEW incidentcomment IS 'Incident Comment'; apiadminfalse782"00incidentcommentACLREVOKE ALL ON TABLE incidentcomment FROM PUBLIC; REVOKE ALL ON TABLE incidentcomment FROM admin; GRANT ALL ON TABLE incidentcomment TO admin; GRANT ALL ON TABLE incidentcomment TO xtrole; apiadminfalse78212592008945 incidentfileVIEWCREATE VIEW incidentfile AS SELECT incdt.incdt_number AS incident_number, url.url_title AS title, url.url_url AS url FROM public.incdt, public.url WHERE ((incdt.incdt_id = url.url_source_id) AND (url.url_source = 'INCDT'::text)); DROP VIEW api.incidentfile; apiadminfalse53216"00VIEW incidentfileCOMMENT1COMMENT ON VIEW incidentfile IS 'Incident File'; apiadminfalse783"00 incidentfileACLREVOKE ALL ON TABLE incidentfile FROM PUBLIC; REVOKE ALL ON TABLE incidentfile FROM admin; GRANT ALL ON TABLE incidentfile TO admin; GRANT ALL ON TABLE incidentfile TO xtrole; apiadminfalse78312592008952 incidentimageVIEW,CREATE VIEW incidentimage AS SELECT incdt.incdt_number AS incident_number, image.image_name FROM public.incdt, public.imageass, public.image WHERE (((incdt.incdt_id = imageass.imageass_source_id) AND (imageass.imageass_source = 'INCDT'::text)) AND (imageass.imageass_image_id = image.image_id)); DROP VIEW api.incidentimage; apiadminfalse53256"00VIEW incidentimageCOMMENT3COMMENT ON VIEW incidentimage IS 'Incident Image'; apiadminfalse784"00 incidentimageACLREVOKE ALL ON TABLE incidentimage FROM PUBLIC; REVOKE ALL ON TABLE incidentimage FROM admin; GRANT ALL ON TABLE incidentimage TO admin; GRANT ALL ON TABLE incidentimage TO xtrole; apiadminfalse78412591693414 classcodeTABLECREATE TABLE classcode ( classcode_id integer DEFAULT nextval(('classcode_classcode_id_seq'::text)::regclass) NOT NULL, classcode_code text NOT NULL, classcode_descrip text, classcode_mfg boolean, classcode_creator text, classcode_created timestamp without time zone, classcode_modifier text, classcode_modified timestamp without time zone, classcode_type text, CONSTRAINT classcode_classcode_code_check CHECK ((classcode_code <> ''::text)) ); DROP TABLE public.classcode; publicadminfalse607460758"00TABLE classcodeCOMMENT8COMMENT ON TABLE classcode IS 'Class Code information'; publicadminfalse224"00 classcodeACLREVOKE ALL ON TABLE classcode FROM PUBLIC; REVOKE ALL ON TABLE classcode FROM admin; GRANT ALL ON TABLE classcode TO admin; GRANT ALL ON TABLE classcode TO xtrole; publicadminfalse22412591693421prodcatTABLECREATE TABLE prodcat ( prodcat_id integer DEFAULT nextval(('prodcat_prodcat_id_seq'::text)::regclass) NOT NULL, prodcat_code text NOT NULL, prodcat_descrip text, CONSTRAINT prodcat_prodcat_code_check CHECK ((prodcat_code <> ''::text)) ); DROP TABLE public.prodcat; publicadminfalse607660778"00 TABLE prodcatCOMMENT<COMMENT ON TABLE prodcat IS 'Product Category information'; publicadminfalse225"00prodcatACLREVOKE ALL ON TABLE prodcat FROM PUBLIC; REVOKE ALL ON TABLE prodcat FROM admin; GRANT ALL ON TABLE prodcat TO admin; GRANT ALL ON TABLE prodcat TO xtrole; publicadminfalse22512592008979itemVIEWxCREATE VIEW item AS SELECT (item.item_number)::character varying AS item_number, item.item_active AS active, item.item_descrip1 AS description1, item.item_descrip2 AS description2, CASE WHEN (item.item_type = 'P'::bpchar) THEN 'Purchased'::text WHEN (item.item_type = 'M'::bpchar) THEN 'Manufactured'::text WHEN (item.item_type = 'J'::bpchar) THEN 'Job'::text WHEN (item.item_type = 'K'::bpchar) THEN 'Kit'::text WHEN (item.item_type = 'F'::bpchar) THEN 'Phantom'::text WHEN (item.item_type = 'R'::bpchar) THEN 'Reference'::text WHEN (item.item_type = 'S'::bpchar) THEN 'Costing'::text WHEN (item.item_type = 'T'::bpchar) THEN 'Tooling'::text WHEN (item.item_type = 'O'::bpchar) THEN 'Outside Process'::text WHEN (item.item_type = 'L'::bpchar) THEN 'Planning'::text WHEN (item.item_type = 'B'::bpchar) THEN 'Breeder'::text WHEN (item.item_type = 'C'::bpchar) THEN 'Co-Product'::text WHEN (item.item_type = 'Y'::bpchar) THEN 'By-Product'::text ELSE NULL::text END AS item_type, item.item_maxcost AS maximum_desired_cost, classcode.classcode_code AS class_code, i.uom_name AS inventory_uom, item.item_picklist AS pick_list_item, item.item_fractional AS fractional, item.item_config AS configured, item.item_sold AS item_is_sold, prodcat.prodcat_code AS product_category, item.item_exclusive AS exclusive, item.item_listprice AS list_price, item.item_listcost AS list_cost, p.uom_name AS list_price_uom, item.item_upccode AS upc_code, item.item_prodweight AS product_weight, item.item_packweight AS packaging_weight, item.item_comments AS notes, item.item_extdescrip AS ext_description FROM (public.item LEFT JOIN public.prodcat ON ((item.item_prodcat_id = prodcat.prodcat_id))), public.classcode, public.uom i, public.uom p WHERE (((item.item_classcode_id = classcode.classcode_id) AND (item.item_inv_uom_id = i.uom_id)) AND (item.item_price_uom_id = p.uom_id)) ORDER BY (item.item_number)::character varying; DROP VIEW api.item; apiadminfalse53376"00 VIEW itemCOMMENT COMMENT ON VIEW item IS 'Item'; apiadminfalse787"00itemACLREVOKE ALL ON TABLE item FROM PUBLIC; REVOKE ALL ON TABLE item FROM admin; GRANT ALL ON TABLE item TO admin; GRANT ALL ON TABLE item TO xtrole; apiadminfalse78712591693433 itemaliasTABLECREATE TABLE itemalias ( itemalias_id integer DEFAULT nextval(('"itemalias_itemalias_id_seq"'::text)::regclass) NOT NULL, itemalias_item_id integer NOT NULL, itemalias_number text NOT NULL, itemalias_comments text, itemalias_usedescrip boolean NOT NULL, itemalias_descrip1 text, itemalias_descrip2 text, CONSTRAINT itemalias_itemalias_number_check CHECK ((itemalias_number <> ''::text)) ); DROP TABLE public.itemalias; publicadminfalse607860798"00TABLE itemaliasCOMMENT8COMMENT ON TABLE itemalias IS 'Item Alias information'; publicadminfalse226"00 itemaliasACLREVOKE ALL ON TABLE itemalias FROM PUBLIC; REVOKE ALL ON TABLE itemalias FROM admin; GRANT ALL ON TABLE itemalias TO admin; GRANT ALL ON TABLE itemalias TO xtrole; publicadminfalse22612592008989 itemaliasVIEWCREATE VIEW itemalias AS SELECT (item.item_number)::character varying AS item_number, itemalias.itemalias_number AS alias_number, itemalias.itemalias_usedescrip AS use_description, itemalias.itemalias_descrip1 AS description1, itemalias.itemalias_descrip2 AS description2, itemalias.itemalias_comments AS comments FROM public.item, public.itemalias WHERE (item.item_id = itemalias.itemalias_item_id); DROP VIEW api.itemalias; apiadminfalse53416"00VIEW itemaliasCOMMENT+COMMENT ON VIEW itemalias IS 'Item Alias'; apiadminfalse788"00 itemaliasACLREVOKE ALL ON TABLE itemalias FROM PUBLIC; REVOKE ALL ON TABLE itemalias FROM admin; GRANT ALL ON TABLE itemalias TO admin; GRANT ALL ON TABLE itemalias TO xtrole; apiadminfalse78812592008996itemcharVIEWCREATE VIEW itemchar AS SELECT (item.item_number)::character varying AS item_number, ("char".char_name)::character varying AS characteristic, charass.charass_value AS value, charass.charass_default AS is_default FROM public.item, public."char", public.charass WHERE ((('I'::text = charass.charass_target_type) AND (item.item_id = charass.charass_target_id)) AND (charass.charass_char_id = "char".char_id)); DROP VIEW api.itemchar; apiadminfalse53456"00 VIEW itemcharCOMMENT3COMMENT ON VIEW itemchar IS 'Item Characteristic'; apiadminfalse789"00itemcharACLREVOKE ALL ON TABLE itemchar FROM PUBLIC; REVOKE ALL ON TABLE itemchar FROM admin; GRANT ALL ON TABLE itemchar TO admin; GRANT ALL ON TABLE itemchar TO xtrole; apiadminfalse78912592009003 itemcommentVIEWCREATE VIEW itemcomment AS SELECT (item.item_number)::character varying AS item_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.item, public.cmnttype, public.comment WHERE (((comment.comment_source = 'I'::text) AND (comment.comment_source_id = item.item_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); DROP VIEW api.itemcomment; apiadminfalse53496"00VIEW itemcommentCOMMENT0COMMENT ON VIEW itemcomment IS 'Item Comments'; apiadminfalse790"00 itemcommentACLREVOKE ALL ON TABLE itemcomment FROM PUBLIC; REVOKE ALL ON TABLE itemcomment FROM admin; GRANT ALL ON TABLE itemcomment TO admin; GRANT ALL ON TABLE itemcomment TO xtrole; apiadminfalse79012591693452costelemTABLECREATE TABLE costelem ( costelem_id integer DEFAULT nextval(('costelem_costelem_id_seq'::text)::regclass) NOT NULL, costelem_type text NOT NULL, costelem_sys boolean, costelem_po boolean, costelem_active boolean, costelem_exp_accnt_id integer, costelem_cost_item_id integer, CONSTRAINT costelem_costelem_type_check CHECK ((costelem_type <> ''::text)) ); DROP TABLE public.costelem; publicadminfalse608060818"00TABLE costelemCOMMENT<COMMENT ON TABLE costelem IS 'Costing Element information'; publicadminfalse227"00costelemACLREVOKE ALL ON TABLE costelem FROM PUBLIC; REVOKE ALL ON TABLE costelem FROM admin; GRANT ALL ON TABLE costelem TO admin; GRANT ALL ON TABLE costelem TO xtrole; publicadminfalse22712591693459itemcostTABLECREATE TABLE itemcost ( itemcost_id integer DEFAULT nextval(('itemcost_itemcost_id_seq'::text)::regclass) NOT NULL, itemcost_item_id integer NOT NULL, itemcost_costelem_id integer NOT NULL, itemcost_lowlevel boolean DEFAULT false NOT NULL, itemcost_stdcost numeric(16,6) DEFAULT 0 NOT NULL, itemcost_posted date, itemcost_actcost numeric(16,6) DEFAULT 0 NOT NULL, itemcost_updated date, itemcost_curr_id integer DEFAULT basecurrid() NOT NULL ); DROP TABLE public.itemcost; publicadminfalse608260836084608560868"00TABLE itemcostCOMMENT6COMMENT ON TABLE itemcost IS 'Item Cost information'; publicadminfalse228"00itemcostACLREVOKE ALL ON TABLE itemcost FROM PUBLIC; REVOKE ALL ON TABLE itemcost FROM admin; GRANT ALL ON TABLE itemcost TO admin; GRANT ALL ON TABLE itemcost TO xtrole; publicadminfalse22812592009010itemcostVIEW|CREATE VIEW itemcost AS SELECT (item.item_number)::character varying(100) AS item_number, (costelem.costelem_type)::character varying(100) AS costing_element, itemcost.itemcost_actcost AS actual_cost, curr_symbol.curr_abbr AS currency, false AS post_to_standard FROM (((public.itemcost LEFT JOIN public.item ON ((itemcost.itemcost_item_id = item.item_id))) LEFT JOIN public.costelem ON ((itemcost.itemcost_costelem_id = costelem.costelem_id))) LEFT JOIN public.curr_symbol ON ((itemcost.itemcost_curr_id = curr_symbol.curr_id))) ORDER BY (item.item_number)::character varying(100), (costelem.costelem_type)::character varying(100); DROP VIEW api.itemcost; apiadminfalse53536"00 VIEW itemcostCOMMENT)COMMENT ON VIEW itemcost IS 'Item Cost'; apiadminfalse791"00itemcostACLREVOKE ALL ON TABLE itemcost FROM PUBLIC; REVOKE ALL ON TABLE itemcost FROM admin; GRANT ALL ON TABLE itemcost TO admin; GRANT ALL ON TABLE itemcost TO xtrole; apiadminfalse79112592009018itemfileVIEWCREATE VIEW itemfile AS SELECT (item.item_number)::character varying AS item_number, url.url_title AS title, url.url_url AS url FROM public.item, public.url WHERE ((item.item_id = url.url_source_id) AND (url.url_source = 'I'::text)); DROP VIEW api.itemfile; apiadminfalse53576"00 VIEW itemfileCOMMENT)COMMENT ON VIEW itemfile IS 'Item File'; apiadminfalse792"00itemfileACLREVOKE ALL ON TABLE itemfile FROM PUBLIC; REVOKE ALL ON TABLE itemfile FROM admin; GRANT ALL ON TABLE itemfile TO admin; GRANT ALL ON TABLE itemfile TO xtrole; apiadminfalse79212592009025 itemimageVIEWCREATE VIEW itemimage AS SELECT (item.item_number)::character varying AS item_number, CASE WHEN (imageass.imageass_purpose = 'P'::bpchar) THEN 'Product Description'::text WHEN (imageass.imageass_purpose = 'I'::bpchar) THEN 'Inventory Description'::text WHEN (imageass.imageass_purpose = 'E'::bpchar) THEN 'Engineering Reference'::text WHEN (imageass.imageass_purpose = 'M'::bpchar) THEN 'Miscellaneous'::text ELSE 'Other'::text END AS purpose, image.image_name FROM public.item, public.imageass, public.image WHERE (((item.item_id = imageass.imageass_source_id) AND (imageass.imageass_source = 'I'::text)) AND (imageass.imageass_image_id = image.image_id)); DROP VIEW api.itemimage; apiadminfalse53616"00VIEW itemimageCOMMENT+COMMENT ON VIEW itemimage IS 'Item Image'; apiadminfalse793"00 itemimageACLREVOKE ALL ON TABLE itemimage FROM PUBLIC; REVOKE ALL ON TABLE itemimage FROM admin; GRANT ALL ON TABLE itemimage TO admin; GRANT ALL ON TABLE itemimage TO xtrole; apiadminfalse79312591693480costcatTABLEDCREATE TABLE costcat ( costcat_id integer DEFAULT nextval(('costcat_costcat_id_seq'::text)::regclass) NOT NULL, costcat_code text NOT NULL, costcat_descrip text, costcat_asset_accnt_id integer, costcat_liability_accnt_id integer, costcat_adjustment_accnt_id integer, costcat_matusage_accnt_id integer, costcat_purchprice_accnt_id integer, costcat_laboroverhead_accnt_id integer, costcat_scrap_accnt_id integer, costcat_invcost_accnt_id integer, costcat_wip_accnt_id integer, costcat_shipasset_accnt_id integer, costcat_mfgscrap_accnt_id integer, costcat_transform_accnt_id integer, costcat_freight_accnt_id integer, costcat_toliability_accnt_id integer, costcat_exp_accnt_id integer, CONSTRAINT costcat_costcat_code_check CHECK ((costcat_code <> ''::text)) ); DROP TABLE public.costcat; publicadminfalse608760888"00 TABLE costcatCOMMENT9COMMENT ON TABLE costcat IS 'Cost Category information'; publicadminfalse229"00costcatACLREVOKE ALL ON TABLE costcat FROM PUBLIC; REVOKE ALL ON TABLE costcat FROM admin; GRANT ALL ON TABLE costcat TO admin; GRANT ALL ON TABLE costcat TO xtrole; publicadminfalse22912591693487locationTABLECREATE TABLE location ( location_id integer DEFAULT nextval(('location_location_id_seq'::text)::regclass) NOT NULL, location_warehous_id integer NOT NULL, location_name text NOT NULL, location_descrip text, location_restrict boolean, location_netable boolean, location_whsezone_id integer, location_aisle text, location_rack text, location_bin text ); DROP TABLE public.location; publicadminfalse60898"00TABLE locationCOMMENT?COMMENT ON TABLE location IS 'Warehouse Location information'; publicadminfalse230"00locationACLREVOKE ALL ON TABLE location FROM PUBLIC; REVOKE ALL ON TABLE location FROM admin; GRANT ALL ON TABLE location TO admin; GRANT ALL ON TABLE location TO xtrole; publicadminfalse23012591693494plancodeTABLECREATE TABLE plancode ( plancode_id integer DEFAULT nextval(('plancode_plancode_id_seq'::text)::regclass) NOT NULL, plancode_code text NOT NULL, plancode_name text, plancode_mpsexplosion character(1), plancode_consumefcst boolean, plancode_mrpexcp_resched boolean, plancode_mrpexcp_delete boolean, CONSTRAINT plancode_plancode_code_check CHECK ((plancode_code <> ''::text)) ); DROP TABLE public.plancode; publicadminfalse609060918"00TABLE plancodeCOMMENT9COMMENT ON TABLE plancode IS 'Planner Code information'; publicadminfalse231"00plancodeACLREVOKE ALL ON TABLE plancode FROM PUBLIC; REVOKE ALL ON TABLE plancode FROM admin; GRANT ALL ON TABLE plancode TO admin; GRANT ALL ON TABLE plancode TO xtrole; publicadminfalse23112592009032itemsiteVIEW CREATE VIEW itemsite AS SELECT (item.item_number)::character varying AS item_number, (whsinfo.warehous_code)::character varying AS site, itemsite.itemsite_active AS active, itemsite.itemsite_wosupply AS wo_supplied_at_site, itemsite.itemsite_createwo AS create_wos, itemsite.itemsite_posupply AS po_supplied_at_site, itemsite.itemsite_createpr AS create_prs, itemsite.itemsite_createsopr AS create_soprs, itemsite.itemsite_createsopo AS create_sopos, itemsite.itemsite_dropship AS dropship, itemsite.itemsite_sold AS sold_from_site, itemsite.itemsite_soldranking AS ranking, CASE WHEN (itemsite.itemsite_costmethod = 'N'::bpchar) THEN 'None'::text WHEN (itemsite.itemsite_costmethod = 'A'::bpchar) THEN 'Average'::text WHEN (itemsite.itemsite_costmethod = 'S'::bpchar) THEN 'Standard'::text WHEN (itemsite.itemsite_costmethod = 'J'::bpchar) THEN 'Job'::text ELSE NULL::text END AS cost_method, CASE WHEN (itemsite.itemsite_controlmethod = 'N'::bpchar) THEN 'None'::text WHEN (itemsite.itemsite_controlmethod = 'R'::bpchar) THEN 'Regular'::text WHEN (itemsite.itemsite_controlmethod = 'S'::bpchar) THEN 'Serial #'::text WHEN (itemsite.itemsite_controlmethod = 'L'::bpchar) THEN 'Lot #'::text ELSE NULL::text END AS control_method, plancode.plancode_code AS planner_code, costcat.costcat_code AS cost_category, itemsite.itemsite_stocked AS stocked, itemsite.itemsite_abcclass AS abc_class, itemsite.itemsite_autoabcclass AS allow_automatic_updates, itemsite.itemsite_cyclecountfreq AS cycl_cnt_freq, itemsite.itemsite_eventfence AS event_fence, itemsite.itemsite_loccntrl AS multiple_location_control, public.formatlocationname(itemsite.itemsite_location_id) AS location, itemsite.itemsite_location AS user_defined_location, itemsite.itemsite_location_comments AS location_comment, itemsite.itemsite_disallowblankwip AS disallow_blank_wip_locations, itemsite.itemsite_useparams AS enforce_order_parameters, itemsite.itemsite_reorderlevel AS reorder_level, itemsite.itemsite_ordertoqty AS order_up_to, itemsite.itemsite_minordqty AS minimum_order, itemsite.itemsite_maxordqty AS maximum_order, itemsite.itemsite_multordqty AS order_multiple, itemsite.itemsite_useparamsmanual AS enforce_on_manual_orders, CASE WHEN (itemsite.itemsite_planning_type = 'N'::bpchar) THEN 'None'::text WHEN (itemsite.itemsite_planning_type = 'M'::bpchar) THEN 'MRP'::text WHEN (itemsite.itemsite_planning_type = 'S'::bpchar) THEN 'MPS'::text ELSE NULL::text END AS planning_system, itemsite.itemsite_ordergroup AS group_mps_mrp_orders, itemsite.itemsite_ordergroup_first AS first_group, itemsite.itemsite_mps_timefence AS mps_time_fence, itemsite.itemsite_leadtime AS lead_time, itemsite.itemsite_safetystock AS safety_stock, COALESCE((SELECT whsinfo.warehous_code FROM (public.itemsite supplysite JOIN public.whsinfo ON ((whsinfo.warehous_id = supplysite.itemsite_warehous_id))) WHERE (supplysite.itemsite_id = itemsite.itemsite_supply_itemsite_id)), 'None'::text) AS supplied_from_site, itemsite.itemsite_notes AS notes, itemsite.itemsite_perishable AS perishable, itemsite.itemsite_warrpurc AS require_warranty, itemsite.itemsite_autoreg AS auto_register FROM public.item, (public.itemsite LEFT JOIN public.location ON ((itemsite.itemsite_location_id = location.location_id))), public.plancode, public.costcat, public.whsinfo WHERE ((((item.item_id = itemsite.itemsite_item_id) AND (itemsite.itemsite_plancode_id = plancode.plancode_id)) AND (itemsite.itemsite_costcat_id = costcat.costcat_id)) AND (itemsite.itemsite_warehous_id = whsinfo.warehous_id)); DROP VIEW api.itemsite; apiadminfalse53656"00 VIEW itemsiteCOMMENT)COMMENT ON VIEW itemsite IS 'Item Site'; apiadminfalse794"00itemsiteACLREVOKE ALL ON TABLE itemsite FROM PUBLIC; REVOKE ALL ON TABLE itemsite FROM admin; GRANT ALL ON TABLE itemsite TO admin; GRANT ALL ON TABLE itemsite TO xtrole; apiadminfalse79412592009042itemsitecommentVIEWrCREATE VIEW itemsitecomment AS SELECT (item.item_number)::character varying AS item_number, (whsinfo.warehous_code)::character varying AS site, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.itemsite, public.item, public.whsinfo, public.cmnttype, public.comment WHERE ((itemsite.itemsite_item_id = item.item_id) AND ((((itemsite.itemsite_warehous_id = whsinfo.warehous_id) AND (comment.comment_source = 'IS'::text)) AND (comment.comment_source_id = itemsite.itemsite_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id))); DROP VIEW api.itemsitecomment; apiadminfalse53696"00VIEW itemsitecommentCOMMENT9COMMENT ON VIEW itemsitecomment IS 'Item Site Comments'; apiadminfalse795"00itemsitecommentACLREVOKE ALL ON TABLE itemsitecomment FROM PUBLIC; REVOKE ALL ON TABLE itemsitecomment FROM admin; GRANT ALL ON TABLE itemsitecomment TO admin; GRANT ALL ON TABLE itemsitecomment TO xtrole; apiadminfalse79512591746313contrctTABLECREATE TABLE contrct ( contrct_id integer NOT NULL, contrct_number text NOT NULL, contrct_vend_id integer NOT NULL, contrct_descrip text, contrct_effective date NOT NULL, contrct_expires date NOT NULL, contrct_note text ); DROP TABLE public.contrct; publicadminfalse8"00 TABLE contrctCOMMENTqCOMMENT ON TABLE contrct IS 'Grouping of Item Sources for a Vendor with common effective and expiration dates.'; publicadminfalse720"00COLUMN contrct.contrct_idCOMMENTMCOMMENT ON COLUMN contrct.contrct_id IS 'Sequence identifier for contract.'; publicadminfalse720"00COLUMN contrct.contrct_numberCOMMENTUCOMMENT ON COLUMN contrct.contrct_number IS 'User defined identifier for contract.'; publicadminfalse720"00COLUMN contrct.contrct_vend_idCOMMENTQCOMMENT ON COLUMN contrct.contrct_vend_id IS 'Vendor associated with contract.'; publicadminfalse720"00COLUMN contrct.contrct_descripCOMMENTJCOMMENT ON COLUMN contrct.contrct_descrip IS 'Description for contract.'; publicadminfalse720"00 COLUMN contrct.contrct_effectiveCOMMENThCOMMENT ON COLUMN contrct.contrct_effective IS 'Effective date for contract. Constraint for overlap.'; publicadminfalse720"00COLUMN contrct.contrct_expiresCOMMENTgCOMMENT ON COLUMN contrct.contrct_expires IS 'Expiration date for contract. Constraint for overlap.'; publicadminfalse720"00COLUMN contrct.contrct_noteCOMMENTACOMMENT ON COLUMN contrct.contrct_note IS 'Notes for contract.'; publicadminfalse720"00contrctACLREVOKE ALL ON TABLE contrct FROM PUBLIC; REVOKE ALL ON TABLE contrct FROM admin; GRANT ALL ON TABLE contrct TO admin; GRANT ALL ON TABLE contrct TO xtrole; publicadminfalse72012591693511itemsrcTABLECREATE TABLE itemsrc ( itemsrc_id integer DEFAULT nextval(('"itemsrc_itemsrc_id_seq"'::text)::regclass) NOT NULL, itemsrc_item_id integer NOT NULL, itemsrc_vend_id integer NOT NULL, itemsrc_vend_item_number text, itemsrc_vend_item_descrip text, itemsrc_comments text, itemsrc_vend_uom text NOT NULL, itemsrc_invvendoruomratio numeric(20,10) NOT NULL, itemsrc_minordqty numeric(18,6) NOT NULL, itemsrc_multordqty numeric(18,6) NOT NULL, itemsrc_leadtime integer NOT NULL, itemsrc_ranking integer NOT NULL, itemsrc_active boolean NOT NULL, itemsrc_manuf_name text DEFAULT ''::text NOT NULL, itemsrc_manuf_item_number text DEFAULT ''::text NOT NULL, itemsrc_manuf_item_descrip text, itemsrc_default boolean, itemsrc_upccode text, itemsrc_effective date DEFAULT startoftime() NOT NULL, itemsrc_expires date DEFAULT endoftime() NOT NULL, itemsrc_contrct_id integer ); DROP TABLE public.itemsrc; publicadminfalse609260936094609560968"00 TABLE itemsrcCOMMENT7COMMENT ON TABLE itemsrc IS 'Item Source information'; publicadminfalse232"00 COLUMN itemsrc.itemsrc_effectiveCOMMENTkCOMMENT ON COLUMN itemsrc.itemsrc_effective IS 'Effective date for item source. Constraint for overlap.'; publicadminfalse232"00COLUMN itemsrc.itemsrc_expiresCOMMENTjCOMMENT ON COLUMN itemsrc.itemsrc_expires IS 'Expiration date for item source. Constraint for overlap.'; publicadminfalse232"00!COLUMN itemsrc.itemsrc_contrct_idCOMMENTCOMMENT ON COLUMN itemsrc.itemsrc_contrct_id IS 'Associated contract for item source. Inherits effective, expiration dates.'; publicadminfalse232"00itemsrcACLREVOKE ALL ON TABLE itemsrc FROM PUBLIC; REVOKE ALL ON TABLE itemsrc FROM admin; GRANT ALL ON TABLE itemsrc TO admin; GRANT ALL ON TABLE itemsrc TO xtrole; publicadminfalse23212592009050 itemsourceVIEW(CREATE VIEW itemsource AS SELECT (item.item_number)::character varying AS item_number, (vendinfo.vend_number)::character varying AS vendor, itemsrc.itemsrc_vend_item_number AS vendor_item_number, itemsrc.itemsrc_active AS active, itemsrc.itemsrc_default, itemsrc.itemsrc_vend_uom AS vendor_uom, itemsrc.itemsrc_invvendoruomratio AS inventory_vendor_uom_ratio, itemsrc.itemsrc_minordqty AS minimum_order, itemsrc.itemsrc_multordqty AS order_multiple, itemsrc.itemsrc_ranking AS vendor_ranking, itemsrc.itemsrc_leadtime AS lead_time, itemsrc.itemsrc_comments AS notes, itemsrc.itemsrc_vend_item_descrip AS vendor_description, itemsrc.itemsrc_manuf_name AS manufacturer_name, itemsrc.itemsrc_manuf_item_number AS manufacturer_item_number, itemsrc.itemsrc_manuf_item_descrip AS manufacturer_description, itemsrc.itemsrc_upccode AS bar_code, contrct.contrct_number AS contract_number, itemsrc.itemsrc_effective AS effective_date, itemsrc.itemsrc_expires AS expires_date FROM (((public.itemsrc LEFT JOIN public.item ON ((itemsrc.itemsrc_item_id = item.item_id))) LEFT JOIN public.vendinfo ON ((itemsrc.itemsrc_vend_id = vendinfo.vend_id))) LEFT JOIN public.contrct ON ((itemsrc.itemsrc_contrct_id = contrct.contrct_id))) ORDER BY (item.item_number)::character varying(100), (vendinfo.vend_number)::character varying(100); DROP VIEW api.itemsource; apiadminfalse53736"00VIEW itemsourceCOMMENT-COMMENT ON VIEW itemsource IS 'Item Source'; apiadminfalse796"00 itemsourceACLREVOKE ALL ON TABLE itemsource FROM PUBLIC; REVOKE ALL ON TABLE itemsource FROM admin; GRANT ALL ON TABLE itemsource TO admin; GRANT ALL ON TABLE itemsource TO xtrole; apiadminfalse79612591693525itemsrcpTABLECREATE TABLE itemsrcp ( itemsrcp_id integer DEFAULT nextval(('itemsrcp_itemsrcp_id_seq'::text)::regclass) NOT NULL, itemsrcp_itemsrc_id integer NOT NULL, itemsrcp_qtybreak numeric(18,6) NOT NULL, itemsrcp_price numeric(16,6), itemsrcp_updated date, itemsrcp_curr_id integer DEFAULT basecurrid() NOT NULL, itemsrcp_dropship boolean DEFAULT false NOT NULL, itemsrcp_warehous_id integer DEFAULT (-1) NOT NULL, itemsrcp_type character(1) NOT NULL, itemsrcp_discntprcnt numeric(16,6), itemsrcp_fixedamtdiscount numeric(16,6), CONSTRAINT valid_itemsrcp_type CHECK ((itemsrcp_type = ANY (ARRAY['N'::bpchar, 'D'::bpchar]))) ); DROP TABLE public.itemsrcp; publicadminfalse609760986099610061018"00TABLE itemsrcpCOMMENT>COMMENT ON TABLE itemsrcp IS 'Item Source Price information'; publicadminfalse233"00!COLUMN itemsrcp.itemsrcp_dropshipCOMMENTCOMMENT ON COLUMN itemsrcp.itemsrcp_dropship IS 'Used to determine if item source price applies only to drop ship purchase orders.'; publicadminfalse233"00$COLUMN itemsrcp.itemsrcp_warehous_idCOMMENTCOMMENT ON COLUMN itemsrcp.itemsrcp_warehous_id IS 'Used to determine if item source price applies only to specific site on purchase orders.'; publicadminfalse233"00COLUMN itemsrcp.itemsrcp_typeCOMMENTCOMMENT ON COLUMN itemsrcp.itemsrcp_type IS 'Pricing type for item source price. Valid values are N-nominal and D-discount.'; publicadminfalse233"00$COLUMN itemsrcp.itemsrcp_discntprcntCOMMENT^COMMENT ON COLUMN itemsrcp.itemsrcp_discntprcnt IS 'Discount percent for item source price.'; publicadminfalse233"00)COLUMN itemsrcp.itemsrcp_fixedamtdiscountCOMMENThCOMMENT ON COLUMN itemsrcp.itemsrcp_fixedamtdiscount IS 'Fixed amount discount for item source price.'; publicadminfalse233"00itemsrcpACLREVOKE ALL ON TABLE itemsrcp FROM PUBLIC; REVOKE ALL ON TABLE itemsrcp FROM admin; GRANT ALL ON TABLE itemsrcp TO admin; GRANT ALL ON TABLE itemsrcp TO xtrole; publicadminfalse23312592009060itemsourcepriceVIEWCREATE VIEW itemsourceprice AS SELECT (item.item_number)::character varying AS item_number, (vendinfo.vend_number)::character varying AS vendor, itemsrcp.itemsrcp_qtybreak AS qty_break, CASE WHEN (itemsrcp.itemsrcp_type = 'N'::bpchar) THEN 'Nominal'::text ELSE 'Discount'::text END AS pricing_type, CASE WHEN (itemsrcp.itemsrcp_warehous_id = (-1)) THEN 'All'::text ELSE whsinfo.warehous_code END AS pricing_site, itemsrcp.itemsrcp_dropship AS dropship_only, itemsrcp.itemsrcp_price AS price_per_unit, curr_symbol.curr_abbr AS currency, (itemsrcp.itemsrcp_discntprcnt * 100.0) AS discount_percent, itemsrcp.itemsrcp_fixedamtdiscount AS discount_fixed_amount FROM (((((public.itemsrcp LEFT JOIN public.itemsrc ON ((itemsrc.itemsrc_id = itemsrcp.itemsrcp_itemsrc_id))) LEFT JOIN public.item ON ((itemsrc.itemsrc_item_id = item.item_id))) LEFT JOIN public.vendinfo ON ((itemsrc.itemsrc_vend_id = vendinfo.vend_id))) LEFT JOIN public.curr_symbol ON ((itemsrcp.itemsrcp_curr_id = curr_symbol.curr_id))) LEFT JOIN public.whsinfo ON ((itemsrcp.itemsrcp_warehous_id = whsinfo.warehous_id))) ORDER BY (item.item_number)::character varying(100), (vendinfo.vend_number)::character varying(100); DROP VIEW api.itemsourceprice; apiadminfalse53776"00VIEW itemsourcepriceCOMMENT8COMMENT ON VIEW itemsourceprice IS 'Item Source Price'; apiadminfalse797"00itemsourcepriceACLREVOKE ALL ON TABLE itemsourceprice FROM PUBLIC; REVOKE ALL ON TABLE itemsourceprice FROM admin; GRANT ALL ON TABLE itemsourceprice TO admin; GRANT ALL ON TABLE itemsourceprice TO xtrole; apiadminfalse79712591693535itemsubTABLECREATE TABLE itemsub ( itemsub_id integer DEFAULT nextval(('itemsub_itemsub_id_seq'::text)::regclass) NOT NULL, itemsub_parent_item_id integer NOT NULL, itemsub_sub_item_id integer NOT NULL, itemsub_uomratio numeric(20,10) NOT NULL, itemsub_rank integer NOT NULL ); DROP TABLE public.itemsub; publicadminfalse61028"00 TABLE itemsubCOMMENT<COMMENT ON TABLE itemsub IS 'Item Substitutes information'; publicadminfalse234"00itemsubACLREVOKE ALL ON TABLE itemsub FROM PUBLIC; REVOKE ALL ON TABLE itemsub FROM admin; GRANT ALL ON TABLE itemsub TO admin; GRANT ALL ON TABLE itemsub TO xtrole; publicadminfalse23412592009070itemsubstituteVIEWCREATE VIEW itemsubstitute AS SELECT (p.item_number)::character varying AS root_item_number, (s.item_number)::character varying AS substitute_item_number, itemsub.itemsub_uomratio AS sub_parent_uom_ratio, itemsub.itemsub_rank AS ranking FROM public.item p, public.item s, public.itemsub WHERE ((p.item_id = itemsub.itemsub_parent_item_id) AND (s.item_id = itemsub.itemsub_sub_item_id)); DROP VIEW api.itemsubstitute; apiadminfalse53816"00VIEW itemsubstituteCOMMENT5COMMENT ON VIEW itemsubstitute IS 'Item Substitute'; apiadminfalse798"00itemsubstituteACLREVOKE ALL ON TABLE itemsubstitute FROM PUBLIC; REVOKE ALL ON TABLE itemsubstitute FROM admin; GRANT ALL ON TABLE itemsubstitute TO admin; GRANT ALL ON TABLE itemsubstitute TO xtrole; apiadminfalse79812591693543itemtaxTABLECREATE TABLE itemtax ( itemtax_id integer NOT NULL, itemtax_item_id integer NOT NULL, itemtax_taxtype_id integer NOT NULL, itemtax_taxzone_id integer ); DROP TABLE public.itemtax; publicadminfalse8"00 TABLE itemtaxCOMMENTpCOMMENT ON TABLE itemtax IS 'This table associates tax types in a specified tax authority for the given item.'; publicadminfalse235"00itemtaxACLREVOKE ALL ON TABLE itemtax FROM PUBLIC; REVOKE ALL ON TABLE itemtax FROM admin; GRANT ALL ON TABLE itemtax TO admin; GRANT ALL ON TABLE itemtax TO xtrole; publicadminfalse23512592009077 itemtaxtypeVIEWCREATE VIEW itemtaxtype AS SELECT (item.item_number)::character varying AS item_number, CASE WHEN (taxzone.taxzone_id IS NULL) THEN 'Any'::character varying ELSE (taxzone.taxzone_code)::character varying END AS tax_zone, taxtype.taxtype_name AS tax_type FROM public.item, (public.itemtax LEFT JOIN public.taxzone ON ((itemtax.itemtax_taxzone_id = taxzone.taxzone_id))), public.taxtype WHERE ((item.item_id = itemtax.itemtax_item_id) AND (itemtax.itemtax_taxtype_id = taxtype.taxtype_id)); DROP VIEW api.itemtaxtype; apiadminfalse53856"00VIEW itemtaxtypeCOMMENT0COMMENT ON VIEW itemtaxtype IS 'Item Tax Type'; apiadminfalse799#00 itemtaxtypeACLREVOKE ALL ON TABLE itemtaxtype FROM PUBLIC; REVOKE ALL ON TABLE itemtaxtype FROM admin; GRANT ALL ON TABLE itemtaxtype TO admin; GRANT ALL ON TABLE itemtaxtype TO xtrole; apiadminfalse79912591693550 itemuomconvTABLECREATE TABLE itemuomconv ( itemuomconv_id integer NOT NULL, itemuomconv_item_id integer NOT NULL, itemuomconv_from_uom_id integer NOT NULL, itemuomconv_from_value numeric(20,10) NOT NULL, itemuomconv_to_uom_id integer NOT NULL, itemuomconv_to_value numeric(20,10) NOT NULL, itemuomconv_fractional boolean DEFAULT false NOT NULL, CONSTRAINT itemuomconv_uom CHECK ((itemuomconv_from_uom_id <> itemuomconv_to_uom_id)) ); DROP TABLE public.itemuomconv; publicadminfalse610561068#00TABLE itemuomconvCOMMENTfCOMMENT ON TABLE itemuomconv IS 'UOM conversion information. From Unit to To Unit with a value per.'; publicadminfalse236#00 itemuomconvACLREVOKE ALL ON TABLE itemuomconv FROM PUBLIC; REVOKE ALL ON TABLE itemuomconv FROM admin; GRANT ALL ON TABLE itemuomconv TO admin; GRANT ALL ON TABLE itemuomconv TO xtrole; publicadminfalse236 12592009084itemuomconversionVIEWgCREATE VIEW itemuomconversion AS SELECT (item.item_number)::character varying AS item_number, (f.uom_name)::character varying AS uom, itemuomconv.itemuomconv_from_value AS uom_value, p.uom_name AS per_uom, itemuomconv.itemuomconv_to_value AS per_uom_value, itemuomconv.itemuomconv_fractional AS fractional, public.fetchitemuomconvtypes(itemuomconv.itemuomconv_id) AS selected_types FROM public.item, public.itemuomconv, public.uom f, public.uom p WHERE (((item.item_id = itemuomconv.itemuomconv_item_id) AND (itemuomconv.itemuomconv_from_uom_id = f.uom_id)) AND (itemuomconv.itemuomconv_to_uom_id = p.uom_id)); !DROP VIEW api.itemuomconversion; apiadminfalse53896#00VIEW itemuomconversionCOMMENTHCOMMENT ON VIEW itemuomconversion IS 'Item Unit of Measure Conversion'; apiadminfalse800#00itemuomconversionACLREVOKE ALL ON TABLE itemuomconversion FROM PUBLIC; REVOKE ALL ON TABLE itemuomconversion FROM admin; GRANT ALL ON TABLE itemuomconversion TO admin; GRANT ALL ON TABLE itemuomconversion TO xtrole; apiadminfalse80012591693559gltransTABLECREATE TABLE gltrans ( gltrans_id integer DEFAULT nextval(('"gltrans_gltrans_id_seq"'::text)::regclass) NOT NULL, gltrans_exported boolean, gltrans_created timestamp with time zone, gltrans_date date NOT NULL, gltrans_sequence integer, gltrans_accnt_id integer NOT NULL, gltrans_source text, gltrans_docnumber text, gltrans_misc_id integer, gltrans_amount numeric(20,2) NOT NULL, gltrans_notes text, gltrans_journalnumber integer, gltrans_posted boolean NOT NULL, gltrans_doctype text, gltrans_rec boolean DEFAULT false NOT NULL, gltrans_username text DEFAULT geteffectivextuser() NOT NULL, gltrans_deleted boolean DEFAULT false ); DROP TABLE public.gltrans; publicadminfalse61076108610961108#00 TABLE gltransCOMMENTLCOMMENT ON TABLE gltrans IS 'General Ledger (G/L) transaction information'; publicadminfalse237#00gltransACLREVOKE ALL ON TABLE gltrans FROM PUBLIC; REVOKE ALL ON TABLE gltrans FROM admin; GRANT ALL ON TABLE gltrans TO admin; GRANT ALL ON TABLE gltrans TO xtrole; publicadminfalse237!12592009091 journalentryVIEWCREATE VIEW journalentry AS SELECT curr_symbol.curr_abbr AS currency, c.gltrans_amount AS amount, c.gltrans_date AS dist_date, c.gltrans_docnumber AS doc_number, public.formatglaccount(da.accnt_id) AS debit, public.formatglaccount(ca.accnt_id) AS credit, c.gltrans_notes AS notes FROM public.gltrans d, public.gltrans c, public.accnt da, public.accnt ca, public.curr_symbol WHERE ((((((((d.gltrans_sequence = c.gltrans_sequence) AND (d.gltrans_accnt_id = da.accnt_id)) AND (c.gltrans_accnt_id = ca.accnt_id)) AND (d.gltrans_amount < (0)::numeric)) AND (c.gltrans_amount > (0)::numeric)) AND (d.gltrans_doctype = 'JE'::text)) AND (c.gltrans_doctype = 'JE'::text)) AND (curr_symbol.curr_id = public.basecurrid())) ORDER BY d.gltrans_date DESC; DROP VIEW api.journalentry; apiadminfalse53936#00VIEW journalentryCOMMENT1COMMENT ON VIEW journalentry IS 'Journal Entry'; apiadminfalse801#00 journalentryACLREVOKE ALL ON TABLE journalentry FROM PUBLIC; REVOKE ALL ON TABLE journalentry FROM admin; GRANT ALL ON TABLE journalentry TO admin; GRANT ALL ON TABLE journalentry TO xtrole; apiadminfalse80112591693574whsezoneTABLECREATE TABLE whsezone ( whsezone_id integer NOT NULL, whsezone_warehous_id integer NOT NULL, whsezone_name text NOT NULL, whsezone_descrip text ); DROP TABLE public.whsezone; publicadminfalse8 #00TABLE whsezoneCOMMENT;COMMENT ON TABLE whsezone IS 'Warehouse Zone information'; publicadminfalse238 #00whsezoneACLREVOKE ALL ON TABLE whsezone FROM PUBLIC; REVOKE ALL ON TABLE whsezone FROM admin; GRANT ALL ON TABLE whsezone TO admin; GRANT ALL ON TABLE whsezone TO xtrole; publicadminfalse238"12592009099locationVIEWCREATE VIEW location AS SELECT (whsinfo.warehous_code)::character varying AS site, (location.location_aisle)::character varying AS aisle, (location.location_rack)::character varying AS rack, (location.location_bin)::character varying AS bin, (location.location_name)::character varying AS location, whsezone.whsezone_name AS zone, location.location_netable AS netable, location.location_restrict AS restricted, location.location_descrip AS description FROM ((public.location LEFT JOIN public.whsinfo ON ((whsinfo.warehous_id = location.location_warehous_id))) LEFT JOIN public.whsezone ON ((whsezone.whsezone_id = location.location_whsezone_id))); DROP VIEW api.location; apiadminfalse53976 #00 VIEW locationCOMMENT(COMMENT ON VIEW location IS 'Location'; apiadminfalse802 #00locationACLREVOKE ALL ON TABLE location FROM PUBLIC; REVOKE ALL ON TABLE location FROM admin; GRANT ALL ON TABLE location TO admin; GRANT ALL ON TABLE location TO xtrole; apiadminfalse802#12592009107 misccounttagVIEWCREATE VIEW misccounttag AS SELECT 'This view is for inserts only'::text AS site, 'This view is for inserts only'::text AS item_number, (0)::numeric AS quantity, 'This view is for inserts only'::text AS comment; DROP VIEW api.misccounttag; apiadminfalse54016 #00VIEW misccounttagCOMMENT;COMMENT ON VIEW misccounttag IS 'Miscellaneous Count Tag'; apiadminfalse803#00 misccounttagACLREVOKE ALL ON TABLE misccounttag FROM PUBLIC; REVOKE ALL ON TABLE misccounttag FROM admin; GRANT ALL ON TABLE misccounttag TO admin; GRANT ALL ON TABLE misccounttag TO xtrole; apiadminfalse803$12592009115pricingscheduleVIEWCREATE VIEW pricingschedule AS SELECT (ipshead.ipshead_name)::character varying AS name, ipshead.ipshead_descrip AS description, public.formatdate(ipshead.ipshead_effective, 'Always'::text) AS effective, public.formatdate(ipshead.ipshead_expires, 'Never'::text) AS expires, curr_symbol.curr_abbr AS currency FROM public.ipshead, public.curr_symbol WHERE (curr_symbol.curr_id = ipshead.ipshead_curr_id); DROP VIEW api.pricingschedule; apiadminfalse54056#00VIEW pricingscheduleCOMMENT7COMMENT ON VIEW pricingschedule IS 'Pricing Schedule'; apiadminfalse804#00pricingscheduleACLREVOKE ALL ON TABLE pricingschedule FROM PUBLIC; REVOKE ALL ON TABLE pricingschedule FROM admin; GRANT ALL ON TABLE pricingschedule TO admin; GRANT ALL ON TABLE pricingschedule TO xtrole; apiadminfalse80412591693593ipsassTABLE CREATE TABLE ipsass ( ipsass_id integer NOT NULL, ipsass_ipshead_id integer NOT NULL, ipsass_cust_id integer, ipsass_custtype_id integer, ipsass_custtype_pattern text, ipsass_shipto_id integer DEFAULT (-1), ipsass_shipto_pattern text ); DROP TABLE public.ipsass; publicadminfalse61138#00 TABLE ipsassCOMMENTFCOMMENT ON TABLE ipsass IS 'Pricing Schedule assignment information'; publicadminfalse239#00ipsassACLREVOKE ALL ON TABLE ipsass FROM PUBLIC; REVOKE ALL ON TABLE ipsass FROM admin; GRANT ALL ON TABLE ipsass TO admin; GRANT ALL ON TABLE ipsass TO xtrole; publicadminfalse239%12592009123pricingscheduleassignVIEWCREATE VIEW pricingscheduleassign AS SELECT (COALESCE(custinfo.cust_number, 'Any'::text))::character varying AS customer_number, (COALESCE(shiptoinfo.shipto_num, 'Any'::text))::character varying AS customer_shipto, (COALESCE(ipsass.ipsass_shipto_pattern, 'N/A'::text))::character varying AS customer_shipto_pattern, (COALESCE(custtype.custtype_code, 'N/A'::text))::character varying AS customer_type, (COALESCE(ipsass.ipsass_custtype_pattern, 'N/A'::text))::character varying AS customer_type_pattern, (ipshead.ipshead_name)::character varying AS pricing_schedule FROM ((((public.ipshead JOIN public.ipsass ON ((ipshead.ipshead_id = ipsass.ipsass_ipshead_id))) LEFT JOIN public.custinfo ON ((ipsass.ipsass_cust_id = custinfo.cust_id))) LEFT JOIN public.custtype ON ((ipsass.ipsass_custtype_id = custtype.custtype_id))) LEFT JOIN public.shiptoinfo ON ((ipsass.ipsass_shipto_id = shiptoinfo.shipto_id))) ORDER BY (COALESCE(custinfo.cust_number, 'Any'::text))::character varying, (COALESCE(shiptoinfo.shipto_num, 'Any'::text))::character varying, (COALESCE(custtype.custtype_code, 'N/A'::text))::character varying, (COALESCE(ipsass.ipsass_custtype_pattern, 'N/A'::text))::character varying, (ipshead.ipshead_name)::character varying; %DROP VIEW api.pricingscheduleassign; apiadminfalse54096#00VIEW pricingscheduleassignCOMMENTICOMMENT ON VIEW pricingscheduleassign IS 'Pricing Schedule Assignments'; apiadminfalse805#00pricingscheduleassignACLREVOKE ALL ON TABLE pricingscheduleassign FROM PUBLIC; REVOKE ALL ON TABLE pricingscheduleassign FROM admin; GRANT ALL ON TABLE pricingscheduleassign TO admin; GRANT ALL ON TABLE pricingscheduleassign TO xtrole; apiadminfalse80512591693605 ipsiteminfoTABLECREATE TABLE ipsiteminfo ( ipsitem_id integer DEFAULT nextval(('"ipsitem_ipsitem_id_seq"'::text)::regclass) NOT NULL, ipsitem_ipshead_id integer, ipsitem_item_id integer, ipsitem_qtybreak numeric(18,6) NOT NULL, ipsitem_price numeric(16,4) NOT NULL, ipsitem_qty_uom_id integer, ipsitem_price_uom_id integer, ipsitem_discntprcnt numeric(10,6) DEFAULT 0.00 NOT NULL, ipsitem_fixedamtdiscount numeric(16,4) DEFAULT 0.00 NOT NULL, ipsitem_prodcat_id integer, ipsitem_type character(1) NOT NULL, ipsitem_warehous_id integer, CONSTRAINT valid_ipsitem_type CHECK ((ipsitem_type = ANY (ARRAY['N'::bpchar, 'D'::bpchar, 'M'::bpchar]))) ); DROP TABLE public.ipsiteminfo; publicadminfalse61146115611661178#00TABLE ipsiteminfoCOMMENTECOMMENT ON TABLE ipsiteminfo IS 'Pricing Schedule Item information'; publicadminfalse240#00%COLUMN ipsiteminfo.ipsitem_prodcat_idCOMMENTcCOMMENT ON COLUMN ipsiteminfo.ipsitem_prodcat_id IS 'Product category for pricing schedule item.'; publicadminfalse240#00COLUMN ipsiteminfo.ipsitem_typeCOMMENTCOMMENT ON COLUMN ipsiteminfo.ipsitem_type IS 'Pricing type for pricing schedule item. Valid values are N-nominal, D-discount, and M-markup'; publicadminfalse240#00&COLUMN ipsiteminfo.ipsitem_warehous_idCOMMENTvCOMMENT ON COLUMN ipsiteminfo.ipsitem_warehous_id IS 'Site for pricing schedule item which enables pricing by site.'; publicadminfalse240#00 ipsiteminfoACLREVOKE ALL ON TABLE ipsiteminfo FROM PUBLIC; REVOKE ALL ON TABLE ipsiteminfo FROM admin; GRANT ALL ON TABLE ipsiteminfo TO admin; GRANT ALL ON TABLE ipsiteminfo TO xtrole; publicadminfalse240&12592009132pricingscheduleitemVIEWCREATE VIEW pricingscheduleitem AS SELECT (ipshead.ipshead_name)::character varying AS pricing_schedule, CASE WHEN (COALESCE(ipsiteminfo.ipsitem_item_id, (-1)) > 0) THEN 'Item'::character varying ELSE 'Product Category'::character varying END AS type, (COALESCE(item.item_number, ''::text))::character varying AS item_number, (COALESCE(prodcat.prodcat_code, ''::text))::character varying AS product_category, ipsiteminfo.ipsitem_qtybreak AS qty_break, (qtyuom.uom_name)::character varying AS qty_uom, (priceuom.uom_name)::character varying AS price_uom, ipsiteminfo.ipsitem_price AS price, ipsiteminfo.ipsitem_discntprcnt AS percent, ipsiteminfo.ipsitem_fixedamtdiscount AS fixedamt, CASE WHEN (ipsiteminfo.ipsitem_type = 'N'::bpchar) THEN 'Nominal'::character varying WHEN (ipsiteminfo.ipsitem_type = 'D'::bpchar) THEN 'Discount'::character varying WHEN (ipsiteminfo.ipsitem_type = 'M'::bpchar) THEN 'Markup'::character varying ELSE NULL::character varying END AS pricing_type FROM (((((public.ipsiteminfo JOIN public.ipshead ON ((ipsiteminfo.ipsitem_ipshead_id = ipshead.ipshead_id))) LEFT JOIN public.item ON ((ipsiteminfo.ipsitem_item_id = item.item_id))) LEFT JOIN public.prodcat ON ((ipsiteminfo.ipsitem_prodcat_id = prodcat.prodcat_id))) LEFT JOIN public.uom qtyuom ON ((ipsiteminfo.ipsitem_qty_uom_id = qtyuom.uom_id))) LEFT JOIN public.uom priceuom ON ((ipsiteminfo.ipsitem_price_uom_id = priceuom.uom_id))); #DROP VIEW api.pricingscheduleitem; apiadminfalse54136#00VIEW pricingscheduleitemCOMMENT@COMMENT ON VIEW pricingscheduleitem IS 'Pricing Schedule Item'; apiadminfalse806#00pricingscheduleitemACLREVOKE ALL ON TABLE pricingscheduleitem FROM PUBLIC; REVOKE ALL ON TABLE pricingscheduleitem FROM admin; GRANT ALL ON TABLE pricingscheduleitem TO admin; GRANT ALL ON TABLE pricingscheduleitem TO xtrole; apiadminfalse80612591693620 ipsitemcharTABLECREATE TABLE ipsitemchar ( ipsitemchar_id integer NOT NULL, ipsitemchar_ipsitem_id integer NOT NULL, ipsitemchar_char_id integer NOT NULL, ipsitemchar_value text NOT NULL, ipsitemchar_price numeric(16,4) ); DROP TABLE public.ipsitemchar; publicadminfalse8#00TABLE ipsitemcharCOMMENTNCOMMENT ON TABLE ipsitemchar IS 'Item Price Schedule Characteristic Prices.'; publicadminfalse242#00 ipsitemcharACLREVOKE ALL ON TABLE ipsitemchar FROM PUBLIC; REVOKE ALL ON TABLE ipsitemchar FROM admin; GRANT ALL ON TABLE ipsitemchar TO admin; GRANT ALL ON TABLE ipsitemchar TO xtrole; publicadminfalse242'12592009142pricingscheduleitemcharVIEWCREATE VIEW pricingscheduleitemchar AS SELECT (ipshead.ipshead_name)::character varying AS pricing_schedule, (item.item_number)::character varying AS item_number, ipsiteminfo.ipsitem_qtybreak AS qty_break, (qtyuom.uom_name)::character varying AS qty_uom, (priceuom.uom_name)::character varying AS price_uom, ("char".char_name)::character varying AS characteristic, (ipsitemchar.ipsitemchar_value)::character varying AS value, ipsitemchar.ipsitemchar_price AS price FROM public.ipshead, public.ipsiteminfo, public.ipsitemchar, public.item, public."char", public.uom qtyuom, public.uom priceuom WHERE ((((((ipshead.ipshead_id = ipsiteminfo.ipsitem_ipshead_id) AND (ipsiteminfo.ipsitem_id = ipsitemchar.ipsitemchar_ipsitem_id)) AND (ipsiteminfo.ipsitem_item_id = item.item_id)) AND (ipsiteminfo.ipsitem_qty_uom_id = qtyuom.uom_id)) AND (ipsiteminfo.ipsitem_price_uom_id = priceuom.uom_id)) AND (ipsitemchar.ipsitemchar_char_id = "char".char_id)); 'DROP VIEW api.pricingscheduleitemchar; apiadminfalse54176#00VIEW pricingscheduleitemcharCOMMENTTCOMMENT ON VIEW pricingscheduleitemchar IS 'Pricing Schedule Item Characteristics'; apiadminfalse807#00pricingscheduleitemcharACLREVOKE ALL ON TABLE pricingscheduleitemchar FROM PUBLIC; REVOKE ALL ON TABLE pricingscheduleitemchar FROM admin; GRANT ALL ON TABLE pricingscheduleitemchar TO admin; GRANT ALL ON TABLE pricingscheduleitemchar TO xtrole; apiadminfalse807(12592009150projectVIEWnCREATE VIEW project AS SELECT prj.prj_number AS number, prj.prj_name AS name, prj.prj_descrip AS description, prj.prj_owner_username AS owner, prj.prj_username AS assigned_to, prj.prj_so AS sales_orders, prj.prj_wo AS work_orders, prj.prj_po AS purchase_orders, CASE WHEN (prj.prj_status = 'P'::bpchar) THEN 'Concept'::text WHEN (prj.prj_status = 'O'::bpchar) THEN 'In-Process'::text WHEN (prj.prj_status = 'C'::bpchar) THEN 'Closed'::text ELSE 'Error'::text END AS status, prj.prj_due_date AS due, prj.prj_assigned_date AS assigned, prj.prj_start_date AS started, prj.prj_completed_date AS completed FROM public.prj; DROP VIEW api.project; apiadminfalse54216 #00 VIEW projectCOMMENT&COMMENT ON VIEW project IS 'Project'; apiadminfalse808!#00projectACLREVOKE ALL ON TABLE project FROM PUBLIC; REVOKE ALL ON TABLE project FROM admin; GRANT ALL ON TABLE project TO admin; GRANT ALL ON TABLE project TO xtrole; apiadminfalse808)12592009157projectcommentVIEWCREATE VIEW projectcomment AS SELECT (prj.prj_number)::character varying AS project_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.prj, public.cmnttype, public.comment WHERE (((comment.comment_source = 'J'::text) AND (comment.comment_source_id = prj.prj_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); DROP VIEW api.projectcomment; apiadminfalse54256"#00VIEW projectcommentCOMMENT5COMMENT ON VIEW projectcomment IS 'Project Comment'; apiadminfalse809##00projectcommentACLREVOKE ALL ON TABLE projectcomment FROM PUBLIC; REVOKE ALL ON TABLE projectcomment FROM admin; GRANT ALL ON TABLE projectcomment TO admin; GRANT ALL ON TABLE projectcomment TO xtrole; apiadminfalse80912591693639cust_cust_id_seqSEQUENCErCREATE SEQUENCE cust_cust_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 'DROP SEQUENCE public.cust_cust_id_seq; publicadminfalse8$#00cust_cust_id_seq SEQUENCE SET8SELECT pg_catalog.setval('cust_cust_id_seq', 96, true); publicadminfalse243%#00cust_cust_id_seqACLREVOKE ALL ON SEQUENCE cust_cust_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cust_cust_id_seq FROM admin; GRANT ALL ON SEQUENCE cust_cust_id_seq TO admin; GRANT ALL ON SEQUENCE cust_cust_id_seq TO xtrole; publicadminfalse24312591693641prospectTABLECREATE TABLE prospect ( prospect_id integer DEFAULT nextval('cust_cust_id_seq'::regclass) NOT NULL, prospect_active boolean DEFAULT true NOT NULL, prospect_number text NOT NULL, prospect_name text NOT NULL, prospect_cntct_id integer, prospect_comments text, prospect_created date DEFAULT ('now'::text)::date NOT NULL, prospect_salesrep_id integer, prospect_warehous_id integer, prospect_taxzone_id integer, CONSTRAINT prospect_prospect_number_check CHECK ((prospect_number <> ''::text)) ); DROP TABLE public.prospect; publicadminfalse61216122612361248&#00TABLE prospectCOMMENT5COMMENT ON TABLE prospect IS 'Prospect Information'; publicadminfalse244'#00prospectACLREVOKE ALL ON TABLE prospect FROM PUBLIC; REVOKE ALL ON TABLE prospect FROM admin; GRANT ALL ON TABLE prospect TO admin; GRANT ALL ON TABLE prospect TO xtrole; publicadminfalse244*12592009164prospectVIEWCREATE VIEW prospect AS SELECT (prospect.prospect_number)::character varying AS prospect_number, prospect.prospect_name, prospect.prospect_active AS active, salesrep.salesrep_number AS sales_rep, whsinfo.warehous_code AS site_code, taxzone.taxzone_code AS default_tax_zone, prospect.prospect_comments AS notes, cntct.cntct_number AS contact_number, cntct.cntct_honorific AS contact_honorific, cntct.cntct_first_name AS contact_first, cntct.cntct_middle AS contact_middle, cntct.cntct_last_name AS contact_last, cntct.cntct_suffix AS contact_suffix, cntct.cntct_title AS contact_job_title, cntct.cntct_phone AS contact_voice, cntct.cntct_phone2 AS contact_alternate, cntct.cntct_fax AS contact_fax, cntct.cntct_email AS contact_email, cntct.cntct_webaddr AS contact_web, ''::text AS contact_change, addr.addr_number AS contact_address_number, addr.addr_line1 AS contact_address1, addr.addr_line2 AS contact_address2, addr.addr_line3 AS contact_address3, addr.addr_city AS contact_city, addr.addr_state AS contact_state, addr.addr_postalcode AS contact_postalcode, addr.addr_country AS contact_country, ''::text AS contact_address_change FROM (((((public.prospect LEFT JOIN public.cntct ON ((prospect.prospect_cntct_id = cntct.cntct_id))) LEFT JOIN public.addr ON ((cntct.cntct_addr_id = addr.addr_id))) LEFT JOIN public.taxzone ON ((prospect.prospect_taxzone_id = taxzone.taxzone_id))) LEFT JOIN public.salesrep ON ((prospect.prospect_salesrep_id = salesrep.salesrep_id))) LEFT JOIN public.whsinfo ON ((prospect.prospect_warehous_id = whsinfo.warehous_id))); DROP VIEW api.prospect; apiadminfalse54296(#00 VIEW prospectCOMMENT(COMMENT ON VIEW prospect IS 'Prospect'; apiadminfalse810)#00prospectACLREVOKE ALL ON TABLE prospect FROM PUBLIC; REVOKE ALL ON TABLE prospect FROM admin; GRANT ALL ON TABLE prospect TO admin; GRANT ALL ON TABLE prospect TO xtrole; apiadminfalse81012591693655expcatTABLEkCREATE TABLE expcat ( expcat_id integer NOT NULL, expcat_code text NOT NULL, expcat_descrip text, expcat_exp_accnt_id integer, expcat_liability_accnt_id integer, expcat_active boolean, expcat_purchprice_accnt_id integer, expcat_freight_accnt_id integer, CONSTRAINT expcat_expcat_code_check CHECK ((expcat_code <> ''::text)) ); DROP TABLE public.expcat; publicadminfalse61268*#00 TABLE expcatCOMMENT;COMMENT ON TABLE expcat IS 'Expense Category information'; publicadminfalse245+#00expcatACLREVOKE ALL ON TABLE expcat FROM PUBLIC; REVOKE ALL ON TABLE expcat FROM admin; GRANT ALL ON TABLE expcat TO admin; GRANT ALL ON TABLE expcat TO xtrole; publicadminfalse24512591693661womatlTABLECREATE TABLE womatl ( womatl_id integer DEFAULT nextval(('womatl_womatl_id_seq'::text)::regclass) NOT NULL, womatl_wo_id integer, womatl_itemsite_id integer, womatl_qtyper numeric(20,8) NOT NULL, womatl_scrap numeric(8,4) NOT NULL, womatl_qtyreq numeric(18,6) NOT NULL, womatl_qtyiss numeric(18,6) NOT NULL, womatl_qtywipscrap numeric(18,6) NOT NULL, womatl_lastissue date, womatl_lastreturn date, womatl_cost numeric(16,6), womatl_picklist boolean, womatl_status character(1), womatl_imported boolean DEFAULT false, womatl_createwo boolean, womatl_issuemethod character(1), womatl_wooper_id integer, womatl_bomitem_id integer, womatl_duedate date, womatl_schedatwooper boolean, womatl_uom_id integer NOT NULL, womatl_notes text, womatl_ref text, womatl_scrapvalue numeric(16,6) DEFAULT 0, womatl_qtyfxd numeric(20,8) DEFAULT 0 NOT NULL, womatl_issuewo boolean DEFAULT false NOT NULL ); DROP TABLE public.womatl; publicadminfalse612761286129613061318,#00 TABLE womatlCOMMENTKCOMMENT ON TABLE womatl IS 'Work Order Material Requirements information'; publicadminfalse246-#00COLUMN womatl.womatl_qtyfxdCOMMENTICOMMENT ON COLUMN womatl.womatl_qtyfxd IS 'The fixed quantity required'; publicadminfalse246.#00womatlACLREVOKE ALL ON TABLE womatl FROM PUBLIC; REVOKE ALL ON TABLE womatl FROM admin; GRANT ALL ON TABLE womatl TO admin; GRANT ALL ON TABLE womatl TO xtrole; publicadminfalse246+12592009174 purchaselineVIEWCREATE VIEW purchaseline AS SELECT (pohead.pohead_number)::character varying AS order_number, poitem.poitem_linenumber AS line_number, item.item_number, whsinfo.warehous_code AS site, expcat.expcat_code AS expense_category, poitem.poitem_qty_ordered AS qty_ordered, poitem.poitem_unitprice AS unit_price, poitem.poitem_freight AS freight, poitem.poitem_duedate AS due_date, prj.prj_number AS project_number, poitem.poitem_vend_item_number AS vend_item_number, poitem.poitem_vend_item_descrip AS vendor_description, poitem.poitem_manuf_name AS manufacturer_name, poitem.poitem_manuf_item_number AS manufacturer_item_number, poitem.poitem_manuf_item_descrip AS manufacturer_description, poitem.poitem_comments AS notes, public.formatrevnumber('BOM'::text, poitem.poitem_bom_rev_id) AS bill_of_materials_revision, public.formatrevnumber('BOO'::text, poitem.poitem_boo_rev_id) AS bill_of_operations_revision, public.formatsonumber(coitem.coitem_id) AS sales_order_number, public.formatwonumber(womatl.womatl_wo_id) AS work_order_number FROM ((((((((public.pohead JOIN public.poitem ON ((pohead.pohead_id = poitem.poitem_pohead_id))) LEFT JOIN public.prj ON ((poitem.poitem_prj_id = prj.prj_id))) LEFT JOIN public.expcat ON ((poitem.poitem_expcat_id = expcat.expcat_id))) LEFT JOIN public.itemsite ON ((poitem.poitem_itemsite_id = itemsite.itemsite_id))) LEFT JOIN public.item ON ((itemsite.itemsite_item_id = item.item_id))) LEFT JOIN public.whsinfo ON ((itemsite.itemsite_warehous_id = whsinfo.warehous_id))) LEFT JOIN public.coitem ON (((coitem.coitem_id = poitem.poitem_order_id) AND (poitem.poitem_order_type = 'S'::bpchar)))) LEFT JOIN public.womatl ON (((womatl.womatl_id = poitem.poitem_order_id) AND (poitem.poitem_order_type = 'W'::bpchar)))) ORDER BY pohead.pohead_number, poitem.poitem_linenumber; DROP VIEW api.purchaseline; apiadminfalse54336/#00VIEW purchaselineCOMMENT7COMMENT ON VIEW purchaseline IS 'Purchase Order Line'; apiadminfalse8110#00 purchaselineACLREVOKE ALL ON TABLE purchaseline FROM PUBLIC; REVOKE ALL ON TABLE purchaseline FROM admin; GRANT ALL ON TABLE purchaseline TO admin; GRANT ALL ON TABLE purchaseline TO xtrole; apiadminfalse811,12592009186purchaselinecharVIEWYCREATE VIEW purchaselinechar AS SELECT (data.order_number)::character varying AS order_number, data.line_number, data.characteristic, COALESCE(pi.charass_value, i3.charass_value) AS value FROM (((((SELECT DISTINCT "char".char_id, poitem.poitem_id, poitem.poitem_itemsite_id, pohead.pohead_number AS order_number, poitem.poitem_linenumber AS line_number, "char".char_name AS characteristic FROM public.pohead, public.poitem, public.itemsite, public.item, public.charass, public."char" WHERE ((((((pohead.pohead_id = poitem.poitem_pohead_id) AND (poitem.poitem_itemsite_id = itemsite.itemsite_id)) AND (itemsite.itemsite_item_id = item.item_id)) AND (charass.charass_char_id = "char".char_id)) AND (charass.charass_target_type = 'I'::text)) AND (charass.charass_target_id = item.item_id))) data LEFT JOIN public.charass pi ON ((((data.poitem_id = pi.charass_target_id) AND ('PI'::text = pi.charass_target_type)) AND (pi.charass_char_id = data.char_id)))) LEFT JOIN public.itemsite i1 ON ((data.poitem_itemsite_id = i1.itemsite_id))) LEFT JOIN public.item i2 ON ((i1.itemsite_item_id = i2.item_id))) LEFT JOIN public.charass i3 ON (((((i2.item_id = i3.charass_target_id) AND ('I'::text = i3.charass_target_type)) AND (i3.charass_char_id = data.char_id)) AND i3.charass_default))) ORDER BY (data.order_number)::character varying, data.line_number, data.characteristic; DROP VIEW api.purchaselinechar; apiadminfalse543861#00VIEW purchaselinecharCOMMENTOCOMMENT ON VIEW purchaselinechar IS 'Purchase Order Line Item Characteristic'; apiadminfalse8122#00purchaselinecharACLREVOKE ALL ON TABLE purchaselinechar FROM PUBLIC; REVOKE ALL ON TABLE purchaselinechar FROM admin; GRANT ALL ON TABLE purchaselinechar TO admin; GRANT ALL ON TABLE purchaselinechar TO xtrole; apiadminfalse812-12592009196purchaselinecommentVIEWuCREATE VIEW purchaselinecomment AS SELECT (pohead.pohead_number)::character varying AS order_number, poitem.poitem_linenumber AS line_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.pohead, public.poitem, public.cmnttype, public.comment WHERE ((((pohead.pohead_id = poitem.poitem_pohead_id) AND (comment.comment_source = 'PI'::text)) AND (comment.comment_source_id = poitem.poitem_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)) ORDER BY pohead.pohead_number, poitem.poitem_linenumber, comment.comment_date DESC; #DROP VIEW api.purchaselinecomment; apiadminfalse544263#00VIEW purchaselinecommentCOMMENTKCOMMENT ON VIEW purchaselinecomment IS 'Purchase Order Line Item Comment'; apiadminfalse8134#00purchaselinecommentACLREVOKE ALL ON TABLE purchaselinecomment FROM PUBLIC; REVOKE ALL ON TABLE purchaselinecomment FROM admin; GRANT ALL ON TABLE purchaselinecomment TO admin; GRANT ALL ON TABLE purchaselinecomment TO xtrole; apiadminfalse81312591693687taxTABLESCREATE TABLE tax ( tax_id integer DEFAULT nextval(('"tax_tax_id_seq"'::text)::regclass) NOT NULL, tax_code text NOT NULL, tax_descrip text, tax_sales_accnt_id integer, tax_taxclass_id integer, tax_taxauth_id integer, tax_basis_tax_id integer, CONSTRAINT tax_tax_code_check CHECK ((tax_code <> ''::text)) ); DROP TABLE public.tax; publicadminfalse6132613385#00 TABLE taxCOMMENT+COMMENT ON TABLE tax IS 'Tax information'; publicadminfalse2476#00COLUMN tax.tax_sales_accnt_idCOMMENTNCOMMENT ON COLUMN tax.tax_sales_accnt_id IS 'Deprecated column - DO NOT USE'; publicadminfalse2477#00taxACLREVOKE ALL ON TABLE tax FROM PUBLIC; REVOKE ALL ON TABLE tax FROM admin; GRANT ALL ON TABLE tax TO admin; GRANT ALL ON TABLE tax TO xtrole; publicadminfalse24712591693694 vendaddrinfoTABLEFCREATE TABLE vendaddrinfo ( vendaddr_id integer DEFAULT nextval(('vendaddr_vendaddr_id_seq'::text)::regclass) NOT NULL, vendaddr_vend_id integer, vendaddr_code text, vendaddr_name text, vendaddr_comments text, vendaddr_cntct_id integer, vendaddr_addr_id integer, vendaddr_taxzone_id integer ); DROP TABLE public.vendaddrinfo; publicadminfalse613488#00TABLE vendaddrinfoCOMMENT?COMMENT ON TABLE vendaddrinfo IS 'Vendor Address information'; publicadminfalse2489#00 vendaddrinfoACLREVOKE ALL ON TABLE vendaddrinfo FROM PUBLIC; REVOKE ALL ON TABLE vendaddrinfo FROM admin; GRANT ALL ON TABLE vendaddrinfo TO admin; GRANT ALL ON TABLE vendaddrinfo TO xtrole; publicadminfalse248.12592009205 purchaseorderVIEWCREATE VIEW purchaseorder AS SELECT (pohead.pohead_number)::character varying AS order_number, pohead.pohead_orderdate AS order_date, terms.terms_code AS terms, taxzone.taxzone_code AS tax_zone, whsinfo.warehous_code AS receiving_site, pohead.pohead_agent_username AS purchasing_agent, vendinfo.vend_number AS vendor_number, COALESCE(ua.vendaddr_code, 'MAIN'::text) AS alt_address, pohead.pohead_fob AS fob, pohead.pohead_shipvia AS ship_via, curr_symbol.curr_abbr AS currency, (SELECT COALESCE(sum(data.tax), 0.00) AS tax FROM (SELECT round(sum(calculatetaxdetailsummary.taxdetail_tax), 2) AS tax FROM (public.tax JOIN public.calculatetaxdetailsummary('PO'::text, pohead.pohead_id, 'T'::text) calculatetaxdetailsummary(taxdetail_tax_id, taxdetail_tax_code, taxdetail_tax_descrip, taxdetail_tax_basis_tax_id, taxdetail_taxrate_percent, taxdetail_taxrate_amount, taxdetail_level, taxdetail_taxclass_id, taxdetail_taxclass_code, taxdetail_taxclass_sequence, taxdetail_tax, taxdetail_curr_id, taxdetail_curr_abbr) ON ((calculatetaxdetailsummary.taxdetail_tax_id = tax.tax_id))) GROUP BY tax.tax_id) data) AS tax, pohead.pohead_freight AS freight, pohead.pohead_comments AS notes, pohead.pohead_dropship AS dropship, vc.cntct_number AS vend_contact_number, pohead.pohead_vend_cntct_honorific AS vend_cntct_honorific, pohead.pohead_vend_cntct_first_name AS vend_cntct_first_name, pohead.pohead_vend_cntct_middle AS vend_cntct_middle, pohead.pohead_vend_cntct_last_name AS vend_cntct_last_name, pohead.pohead_vend_cntct_suffix AS vend_cntct_suffix, pohead.pohead_vend_cntct_phone AS vend_cntct_phone, pohead.pohead_vend_cntct_title AS vend_cntct_title, pohead.pohead_vend_cntct_fax AS vend_cntct_fax, pohead.pohead_vend_cntct_email AS vend_cntct_email, pohead.pohead_vendaddress1 AS vendaddress1, pohead.pohead_vendaddress2 AS vendaddress2, pohead.pohead_vendaddress3 AS vendaddress3, pohead.pohead_vendcity AS vendcity, pohead.pohead_vendstate AS vendstate, pohead.pohead_vendzipcode AS vendzipcode, pohead.pohead_vendcountry AS vendcountry, sc.cntct_number AS shipto_contact_number, pohead.pohead_shipto_cntct_honorific AS shipto_cntct_honorific, pohead.pohead_shipto_cntct_first_name AS shipto_cntct_first_name, pohead.pohead_shipto_cntct_middle AS shipto_cntct_middle, pohead.pohead_shipto_cntct_last_name AS shipto_cntct_last_name, pohead.pohead_shipto_cntct_suffix AS shipto_cntct_suffix, pohead.pohead_shipto_cntct_phone AS shipto_cntct_phone, pohead.pohead_shipto_cntct_title AS shipto_cntct_title, pohead.pohead_shipto_cntct_fax AS shipto_cntct_fax, pohead.pohead_shipto_cntct_email AS shipto_cntct_email, addr.addr_number AS shiptoaddress_number, pohead.pohead_shiptoaddress1 AS shiptoaddress1, pohead.pohead_shiptoaddress2 AS shiptoaddress2, pohead.pohead_shiptoaddress3 AS shiptoaddress3, pohead.pohead_shiptocity AS shiptocity, pohead.pohead_shiptostate AS shiptostate, pohead.pohead_shiptozipcode AS shiptozipcode, pohead.pohead_shiptocountry AS shiptocountry, cohead.cohead_number AS sales_order_number FROM ((((((((((public.pohead LEFT JOIN public.cntct vc ON ((pohead.pohead_vend_cntct_id = vc.cntct_id))) LEFT JOIN public.cntct sc ON ((pohead.pohead_shipto_cntct_id = sc.cntct_id))) LEFT JOIN public.addr ON ((pohead.pohead_shiptoaddress_id = addr.addr_id))) LEFT JOIN public.terms ON ((pohead.pohead_terms_id = terms.terms_id))) LEFT JOIN public.taxzone ON ((pohead.pohead_taxzone_id = taxzone.taxzone_id))) LEFT JOIN public.whsinfo ON ((pohead.pohead_warehous_id = whsinfo.warehous_id))) LEFT JOIN public.vendaddrinfo ua ON ((pohead.pohead_vendaddr_id = ua.vendaddr_id))) LEFT JOIN public.cohead ON ((pohead.pohead_cohead_id = cohead.cohead_id))) JOIN public.vendinfo ON ((pohead.pohead_vend_id = vendinfo.vend_id))) JOIN public.curr_symbol ON ((pohead.pohead_curr_id = curr_symbol.curr_id))) ORDER BY pohead.pohead_number; DROP VIEW api.purchaseorder; apiadminfalse54466:#00VIEW purchaseorderCOMMENT3COMMENT ON VIEW purchaseorder IS 'Purchase Order'; apiadminfalse814;#00 purchaseorderACLREVOKE ALL ON TABLE purchaseorder FROM PUBLIC; REVOKE ALL ON TABLE purchaseorder FROM admin; GRANT ALL ON TABLE purchaseorder TO admin; GRANT ALL ON TABLE purchaseorder TO xtrole; apiadminfalse814/12592009215purchaseordercommentVIEWCREATE VIEW purchaseordercomment AS SELECT (pohead.pohead_number)::character varying AS order_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.pohead, public.cmnttype, public.comment WHERE (((comment.comment_source = 'P'::text) AND (comment.comment_source_id = pohead.pohead_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); $DROP VIEW api.purchaseordercomment; apiadminfalse54506<#00VIEW purchaseordercommentCOMMENTBCOMMENT ON VIEW purchaseordercomment IS 'Purchase Order Comment'; apiadminfalse815=#00purchaseordercommentACLREVOKE ALL ON TABLE purchaseordercomment FROM PUBLIC; REVOKE ALL ON TABLE purchaseordercomment FROM admin; GRANT ALL ON TABLE purchaseordercomment TO admin; GRANT ALL ON TABLE purchaseordercomment TO xtrole; apiadminfalse81512591693710quheadTABLE CREATE TABLE quhead ( quhead_id integer DEFAULT nextval(('"quhead_quhead_id_seq"'::text)::regclass) NOT NULL, quhead_number text NOT NULL, quhead_cust_id integer NOT NULL, quhead_quotedate date, quhead_shipto_id integer, quhead_shiptoname text, quhead_shiptoaddress1 text, quhead_shiptoaddress2 text, quhead_shiptoaddress3 text, quhead_shiptocity text, quhead_shiptostate text, quhead_shiptozipcode text, quhead_shiptophone text, quhead_salesrep_id integer, quhead_terms_id integer, quhead_freight numeric(16,4), quhead_ordercomments text, quhead_shipcomments text, quhead_billtoname text, quhead_billtoaddress1 text, quhead_billtoaddress2 text, quhead_billtoaddress3 text, quhead_billtocity text, quhead_billtostate text, quhead_billtozip text, quhead_commission numeric(16,4), quhead_custponumber text, quhead_fob text, quhead_shipvia text, quhead_warehous_id integer, quhead_packdate date, quhead_prj_id integer, quhead_misc numeric(16,4) DEFAULT 0 NOT NULL, quhead_misc_accnt_id integer, quhead_misc_descrip text, quhead_billtocountry text, quhead_shiptocountry text, quhead_curr_id integer DEFAULT basecurrid(), quhead_imported boolean DEFAULT false, quhead_expire date, quhead_calcfreight boolean DEFAULT false NOT NULL, quhead_shipto_cntct_id integer, quhead_shipto_cntct_honorific text, quhead_shipto_cntct_first_name text, quhead_shipto_cntct_middle text, quhead_shipto_cntct_last_name text, quhead_shipto_cntct_suffix text, quhead_shipto_cntct_phone text, quhead_shipto_cntct_title text, quhead_shipto_cntct_fax text, quhead_shipto_cntct_email text, quhead_billto_cntct_id integer, quhead_billto_cntct_honorific text, quhead_billto_cntct_first_name text, quhead_billto_cntct_middle text, quhead_billto_cntct_last_name text, quhead_billto_cntct_suffix text, quhead_billto_cntct_phone text, quhead_billto_cntct_title text, quhead_billto_cntct_fax text, quhead_billto_cntct_email text, quhead_taxzone_id integer, quhead_taxtype_id integer, quhead_ophead_id integer, quhead_status text, quhead_saletype_id integer, quhead_shipzone_id integer, CONSTRAINT quhead_check CHECK ((((quhead_misc = (0)::numeric) AND (quhead_misc_accnt_id IS NULL)) OR ((quhead_misc <> (0)::numeric) AND (quhead_misc_accnt_id IS NOT NULL)))), CONSTRAINT quhead_quhead_number_check CHECK ((quhead_number <> ''::text)), CONSTRAINT quhead_quhead_status_check CHECK ((((quhead_status = 'O'::text) OR (quhead_status = 'C'::text)) OR (quhead_status = 'X'::text))) ); DROP TABLE public.quhead; publicadminfalse613561366137613861396140614161428>#00 TABLE quheadCOMMENT7COMMENT ON TABLE quhead IS 'Quote header information'; publicadminfalse249?#00 COLUMN quhead.quhead_saletype_idCOMMENTRCOMMENT ON COLUMN quhead.quhead_saletype_id IS 'Associated sale type for quote.'; publicadminfalse249@#00 COLUMN quhead.quhead_shipzone_idCOMMENTVCOMMENT ON COLUMN quhead.quhead_shipzone_id IS 'Associated shipping zone for quote.'; publicadminfalse249A#00quheadACLREVOKE ALL ON TABLE quhead FROM PUBLIC; REVOKE ALL ON TABLE quhead FROM admin; GRANT ALL ON TABLE quhead TO admin; GRANT ALL ON TABLE quhead TO xtrole; publicadminfalse249012592009222quoteVIEW CREATE VIEW quote AS SELECT (quhead.quhead_number)::character varying AS quote_number, whsinfo.warehous_code AS site, quhead.quhead_quotedate AS quote_date, quhead.quhead_packdate AS pack_date, saletype.saletype_code AS sale_type, salesrep.salesrep_number AS sales_rep, quhead.quhead_commission AS commission, taxzone.taxzone_code AS tax_zone, taxtype.taxtype_name AS tax_type, terms.terms_code AS terms, prj.prj_number AS project_number, COALESCE(custinfo.cust_number, prospect.prospect_number) AS customer_number, quhead.quhead_billtoname AS billto_name, quhead.quhead_billtoaddress1 AS billto_address1, quhead.quhead_billtoaddress2 AS billto_address2, quhead.quhead_billtoaddress3 AS billto_address3, quhead.quhead_billtocity AS billto_city, quhead.quhead_billtostate AS billto_state, quhead.quhead_billtozip AS billto_postal_code, quhead.quhead_billtocountry AS billto_country, shiptoinfo.shipto_num AS shipto_number, quhead.quhead_shiptoname AS shipto_name, quhead.quhead_shiptophone AS shipto_phone, quhead.quhead_shiptoaddress1 AS shipto_address1, quhead.quhead_shiptoaddress2 AS shipto_address2, quhead.quhead_shiptoaddress3 AS shipto_address3, quhead.quhead_shiptocity AS shipto_city, quhead.quhead_shiptostate AS shipto_state, quhead.quhead_shiptozipcode AS shipto_postal_code, quhead.quhead_shiptocountry AS shipto_country, shipzone.shipzone_name AS shipto_shipzone, quhead.quhead_custponumber AS cust_po_number, quhead.quhead_fob AS fob, quhead.quhead_shipvia AS ship_via, curr_symbol.curr_abbr AS currency, quhead.quhead_misc_descrip AS misc_charge_description, CASE WHEN (quhead.quhead_misc_accnt_id IS NULL) THEN NULL::text ELSE public.formatglaccount(quhead.quhead_misc_accnt_id) END AS misc_account_number, quhead.quhead_misc AS misc_charge, quhead.quhead_freight AS freight, quhead.quhead_ordercomments AS order_notes, quhead.quhead_shipcomments AS shipping_notes, false AS add_to_packing_list_batch, quhead.quhead_expire AS expire_date, CASE WHEN (quhead.quhead_status = 'C'::text) THEN 'Converted'::text ELSE 'Open'::text END AS status FROM public.curr_symbol, (((((((((((public.quhead LEFT JOIN public.whsinfo ON ((quhead.quhead_warehous_id = whsinfo.warehous_id))) LEFT JOIN public.prj ON ((quhead.quhead_prj_id = prj.prj_id))) LEFT JOIN public.shiptoinfo ON ((quhead.quhead_shipto_id = shiptoinfo.shipto_id))) LEFT JOIN public.taxzone ON ((quhead.quhead_taxzone_id = taxzone.taxzone_id))) LEFT JOIN public.taxtype ON ((quhead.quhead_taxtype_id = taxtype.taxtype_id))) LEFT JOIN public.custinfo ON ((quhead.quhead_cust_id = custinfo.cust_id))) LEFT JOIN public.prospect ON ((quhead.quhead_cust_id = prospect.prospect_id))) LEFT JOIN public.salesrep ON ((quhead.quhead_salesrep_id = salesrep.salesrep_id))) LEFT JOIN public.terms ON ((quhead.quhead_terms_id = terms.terms_id))) LEFT JOIN public.saletype ON ((quhead.quhead_saletype_id = saletype.saletype_id))) LEFT JOIN public.shipzone ON ((quhead.quhead_shipzone_id = shipzone.shipzone_id))) WHERE (quhead.quhead_curr_id = curr_symbol.curr_id); DROP VIEW api.quote; apiadminfalse54546B#00 VIEW quoteCOMMENT"COMMENT ON VIEW quote IS 'Quote'; apiadminfalse816C#00quoteACLREVOKE ALL ON TABLE quote FROM PUBLIC; REVOKE ALL ON TABLE quote FROM admin; GRANT ALL ON TABLE quote TO admin; GRANT ALL ON TABLE quote TO xtrole; apiadminfalse816112592009232 quotecommentVIEWCREATE VIEW quotecomment AS SELECT quhead.quhead_number AS quote_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.quhead, public.cmnttype, public.comment WHERE (((comment.comment_source = 'Q'::text) AND (comment.comment_source_id = quhead.quhead_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); DROP VIEW api.quotecomment; apiadminfalse54586D#00VIEW quotecommentCOMMENT1COMMENT ON VIEW quotecomment IS 'Quote Comment'; apiadminfalse817E#00 quotecommentACLREVOKE ALL ON TABLE quotecomment FROM PUBLIC; REVOKE ALL ON TABLE quotecomment FROM admin; GRANT ALL ON TABLE quotecomment TO admin; GRANT ALL ON TABLE quotecomment TO xtrole; apiadminfalse81712591693732quitemTABLE9CREATE TABLE quitem ( quitem_id integer DEFAULT nextval(('"quitem_quitem_id_seq"'::text)::regclass) NOT NULL, quitem_quhead_id integer, quitem_linenumber integer, quitem_itemsite_id integer, quitem_scheddate date, quitem_qtyord numeric(18,6), quitem_unitcost numeric(16,6), quitem_price numeric(16,4), quitem_custprice numeric(16,4), quitem_memo text, quitem_custpn text, quitem_createorder boolean, quitem_order_warehous_id integer, quitem_item_id integer, quitem_prcost numeric(16,6), quitem_imported boolean DEFAULT false, quitem_qty_uom_id integer NOT NULL, quitem_qty_invuomratio numeric(20,10) NOT NULL, quitem_price_uom_id integer NOT NULL, quitem_price_invuomratio numeric(20,10) NOT NULL, quitem_promdate date, quitem_taxtype_id integer, quitem_dropship boolean DEFAULT false, quitem_itemsrc_id integer, quitem_pricemode character(1) DEFAULT 'D'::bpchar NOT NULL, CONSTRAINT valid_quitem_pricemode CHECK ((quitem_pricemode = ANY (ARRAY['D'::bpchar, 'M'::bpchar]))) ); DROP TABLE public.quitem; publicadminfalse614361446145614661478F#00 TABLE quitemCOMMENT:COMMENT ON TABLE quitem IS 'Quote Line Item information'; publicadminfalse250G#00COLUMN quitem.quitem_pricemodeCOMMENTxCOMMENT ON COLUMN quitem.quitem_pricemode IS 'Pricing mode for quote item. Valid values are D-discount, and M-markup'; publicadminfalse250H#00quitemACLREVOKE ALL ON TABLE quitem FROM PUBLIC; REVOKE ALL ON TABLE quitem FROM admin; GRANT ALL ON TABLE quitem TO admin; GRANT ALL ON TABLE quitem TO xtrole; publicadminfalse250212592009239 quotelineVIEWCREATE VIEW quoteline AS SELECT quhead.quhead_number AS quote_number, quitem.quitem_linenumber AS line_number, l.item_number, quitem.quitem_custpn AS customer_pn, i.warehous_code AS sold_from_site, quitem.quitem_qtyord AS qty_ordered, q.uom_name AS qty_uom, quitem.quitem_price AS net_unit_price, p.uom_name AS price_uom, quitem.quitem_scheddate AS scheduled_date, COALESCE((SELECT taxtype.taxtype_name FROM public.taxtype WHERE (taxtype.taxtype_id = public.getitemtaxtype(l.item_id, quhead.quhead_taxzone_id))), 'None'::text) AS tax_type, CASE WHEN (quitem.quitem_price = (0)::numeric) THEN '100'::text WHEN (quitem.quitem_custprice = (0)::numeric) THEN 'N/A'::text ELSE (round((((1)::numeric - (quitem.quitem_price / quitem.quitem_custprice)) * (100)::numeric), 4))::text END AS discount_pct_from_list, quitem.quitem_createorder AS create_order, s.warehous_code AS supplying_site, quitem.quitem_prcost AS overwrite_po_price, quitem.quitem_memo AS notes FROM public.quhead, public.uom q, public.uom p, (public.quitem LEFT JOIN public.whsinfo s ON ((quitem.quitem_order_warehous_id = s.warehous_id))), public.itemsite il, public.item l, public.whsinfo i WHERE ((((((quhead.quhead_id = quitem.quitem_quhead_id) AND (quitem.quitem_itemsite_id = il.itemsite_id)) AND (il.itemsite_item_id = l.item_id)) AND (il.itemsite_warehous_id = i.warehous_id)) AND (quitem.quitem_qty_uom_id = q.uom_id)) AND (quitem.quitem_price_uom_id = p.uom_id)) ORDER BY quhead.quhead_number, quitem.quitem_linenumber; DROP VIEW api.quoteline; apiadminfalse54626I#00VIEW quotelineCOMMENT0COMMENT ON VIEW quoteline IS 'Quote Line Item'; apiadminfalse818J#00 quotelineACLREVOKE ALL ON TABLE quoteline FROM PUBLIC; REVOKE ALL ON TABLE quoteline FROM admin; GRANT ALL ON TABLE quoteline TO admin; GRANT ALL ON TABLE quoteline TO xtrole; apiadminfalse818312592009249 quotelinecharVIEWCREATE VIEW quotelinechar AS SELECT DISTINCT quhead.quhead_number AS quote_number, quitem.quitem_linenumber AS line_number, "char".char_name AS characteristic, COALESCE((SELECT b.charass_value FROM public.charass b WHERE (((b.charass_target_type = 'QI'::text) AND (b.charass_target_id = quitem.quitem_id)) AND (b.charass_char_id = "char".char_id))), (SELECT c.charass_value FROM public.charass c WHERE ((((c.charass_target_type = 'I'::text) AND (c.charass_target_id = item.item_id)) AND c.charass_default) AND (c.charass_char_id = "char".char_id)) LIMIT 1)) AS value FROM public.quhead, public.quitem, public.itemsite, public.item, public.charass a, public."char" WHERE ((((((quhead.quhead_id = quitem.quitem_quhead_id) AND (quitem.quitem_itemsite_id = itemsite.itemsite_id)) AND (itemsite.itemsite_item_id = item.item_id)) AND (a.charass_char_id = "char".char_id)) AND (a.charass_target_type = 'I'::text)) AND (a.charass_target_id = item.item_id)) ORDER BY quhead.quhead_number, quitem.quitem_linenumber, "char".char_name; DROP VIEW api.quotelinechar; apiadminfalse54666K#00VIEW quotelinecharCOMMENTDCOMMENT ON VIEW quotelinechar IS 'Quote Line Item Characteristics'; apiadminfalse819L#00 quotelinecharACLREVOKE ALL ON TABLE quotelinechar FROM PUBLIC; REVOKE ALL ON TABLE quotelinechar FROM admin; GRANT ALL ON TABLE quotelinechar TO admin; GRANT ALL ON TABLE quotelinechar TO xtrole; apiadminfalse819412592009259quotelinecommentVIEW]CREATE VIEW quotelinecomment AS SELECT quhead.quhead_number AS quote_number, quitem.quitem_linenumber AS line_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.quhead, public.quitem, public.cmnttype, public.comment WHERE ((((quhead.quhead_id = quitem.quitem_quhead_id) AND (comment.comment_source = 'QI'::text)) AND (comment.comment_source_id = quitem.quitem_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)) ORDER BY quhead.quhead_number, quitem.quitem_linenumber, comment.comment_date DESC; DROP VIEW api.quotelinecomment; apiadminfalse54706M#00VIEW quotelinecommentCOMMENT?COMMENT ON VIEW quotelinecomment IS 'Quote Line Item Comment'; apiadminfalse820N#00quotelinecommentACLREVOKE ALL ON TABLE quotelinecomment FROM PUBLIC; REVOKE ALL ON TABLE quotelinecomment FROM admin; GRANT ALL ON TABLE quotelinecomment TO admin; GRANT ALL ON TABLE quotelinecomment TO xtrole; apiadminfalse82012591693756 aropenallocTABLECREATE TABLE aropenalloc ( aropenalloc_aropen_id integer NOT NULL, aropenalloc_doctype character(1) NOT NULL, aropenalloc_doc_id integer NOT NULL, aropenalloc_amount numeric(20,2) DEFAULT 0.00 NOT NULL, aropenalloc_curr_id integer DEFAULT basecurrid() ); DROP TABLE public.aropenalloc; publicadminfalse614861498O#00 aropenallocACLREVOKE ALL ON TABLE aropenalloc FROM PUBLIC; REVOKE ALL ON TABLE aropenalloc FROM admin; GRANT ALL ON TABLE aropenalloc TO admin; GRANT ALL ON TABLE aropenalloc TO xtrole; publicadminfalse251512592009267 salescreditVIEWCREATE VIEW salescredit AS SELECT custinfo.cust_number AS customer_number, aropen.aropen_docnumber AS cm_number, cohead.cohead_number AS so_number, (aropenalloc.aropenalloc_amount)::numeric(16,4) AS amount, curr.curr_abbr AS currency FROM ((((public.aropenalloc LEFT JOIN public.aropen ON ((aropen.aropen_id = aropenalloc.aropenalloc_aropen_id))) LEFT JOIN public.custinfo ON ((custinfo.cust_id = aropen.aropen_cust_id))) LEFT JOIN public.cohead ON (((aropenalloc.aropenalloc_doctype = 'S'::bpchar) AND (cohead.cohead_id = aropenalloc.aropenalloc_doc_id)))) LEFT JOIN public.curr_symbol curr ON ((curr.curr_id = aropenalloc.aropenalloc_curr_id))) WHERE (aropenalloc.aropenalloc_doctype = 'S'::bpchar); DROP VIEW api.salescredit; apiadminfalse54746P#00VIEW salescreditCOMMENTVCOMMENT ON VIEW salescredit IS 'Payments (credit memos) pre-applied to sales orders'; apiadminfalse821Q#00 salescreditACLREVOKE ALL ON TABLE salescredit FROM PUBLIC; REVOKE ALL ON TABLE salescredit FROM admin; GRANT ALL ON TABLE salescredit TO admin; GRANT ALL ON TABLE salescredit TO xtrole; apiadminfalse82112591693766cohistTABLECREATE TABLE cohist ( cohist_id integer DEFAULT nextval(('cohist_cohist_id_seq'::text)::regclass) NOT NULL, cohist_cust_id integer, cohist_itemsite_id integer, cohist_shipdate date, cohist_shipvia text, cohist_ordernumber text, cohist_orderdate date, cohist_invcnumber text, cohist_invcdate date, cohist_qtyshipped numeric(18,6), cohist_unitprice numeric(16,4), cohist_shipto_id integer, cohist_salesrep_id integer, cohist_duedate date, cohist_imported boolean DEFAULT false, cohist_billtoname text, cohist_billtoaddress1 text, cohist_billtoaddress2 text, cohist_billtoaddress3 text, cohist_billtocity text, cohist_billtostate text, cohist_billtozip text, cohist_shiptoname text, cohist_shiptoaddress1 text, cohist_shiptoaddress2 text, cohist_shiptoaddress3 text, cohist_shiptocity text, cohist_shiptostate text, cohist_shiptozip text, cohist_commission numeric(16,4), cohist_commissionpaid boolean, cohist_unitcost numeric(18,6), cohist_misc_type character(1), cohist_misc_descrip text, cohist_misc_id integer, cohist_doctype text, cohist_promisedate date, cohist_ponumber text, cohist_curr_id integer DEFAULT basecurrid(), cohist_sequence integer, cohist_taxtype_id integer, cohist_taxzone_id integer, cohist_cohead_ccpay_id integer, cohist_saletype_id integer, cohist_shipzone_id integer ); DROP TABLE public.cohist; publicadminfalse6150615161528R#00 TABLE cohistCOMMENT2COMMENT ON TABLE cohist IS 'Sales Order history'; publicadminfalse252S#00$COLUMN cohist.cohist_cohead_ccpay_idCOMMENTCOMMENT ON COLUMN cohist.cohist_cohead_ccpay_id IS 'Credit card payments made at sales order time (as opposed to invoice time) need special treatment. This field allows checking for this case.'; publicadminfalse252T#00 COLUMN cohist.cohist_saletype_idCOMMENTZCOMMENT ON COLUMN cohist.cohist_saletype_id IS 'Associated sale type for sales history.'; publicadminfalse252U#00 COLUMN cohist.cohist_shipzone_idCOMMENT^COMMENT ON COLUMN cohist.cohist_shipzone_id IS 'Associated shipping zone for sales history.'; publicadminfalse252V#00cohistACLREVOKE ALL ON TABLE cohist FROM PUBLIC; REVOKE ALL ON TABLE cohist FROM admin; GRANT ALL ON TABLE cohist TO admin; GRANT ALL ON TABLE cohist TO xtrole; publicadminfalse25212591693775taxhistTABLE-CREATE TABLE taxhist ( taxhist_id integer NOT NULL, taxhist_parent_id integer NOT NULL, taxhist_taxtype_id integer, taxhist_tax_id integer NOT NULL, taxhist_basis numeric(16,2) NOT NULL, taxhist_basis_tax_id integer, taxhist_sequence integer, taxhist_percent numeric(10,6) NOT NULL, taxhist_amount numeric(16,2) NOT NULL, taxhist_tax numeric(16,6) NOT NULL, taxhist_docdate date NOT NULL, taxhist_distdate date, taxhist_curr_id integer, taxhist_curr_rate numeric, taxhist_journalnumber integer ); DROP TABLE public.taxhist; publicadminfalse8W#00 TABLE taxhistCOMMENTCOMMENT ON TABLE taxhist IS 'A table type to record tax transaction history. Inherited by other tables that actually record history. As the parent, queries can be run against it that will join all child tables. '; publicadminfalse253X#00COLUMN taxhist.taxhist_idCOMMENT7COMMENT ON COLUMN taxhist.taxhist_id IS 'Primary key'; publicadminfalse253Y#00 COLUMN taxhist.taxhist_parent_idCOMMENTDCOMMENT ON COLUMN taxhist.taxhist_parent_id IS 'Source parent id.'; publicadminfalse253Z#00!COLUMN taxhist.taxhist_taxtype_idCOMMENT?COMMENT ON COLUMN taxhist.taxhist_taxtype_id IS 'Tax type id'; publicadminfalse253[#00COLUMN taxhist.taxhist_tax_idCOMMENT<COMMENT ON COLUMN taxhist.taxhist_tax_id IS 'Tax code id.'; publicadminfalse253\#00COLUMN taxhist.taxhist_basisCOMMENTgCOMMENT ON COLUMN taxhist.taxhist_basis IS 'Base price amount on which the tax calculation is based.'; publicadminfalse253]#00#COLUMN taxhist.taxhist_basis_tax_idCOMMENTCOMMENT ON COLUMN taxhist.taxhist_basis_tax_id IS 'Tax rate calculation basis. If null, then the amount of the parent document, otherwise calculated on the result amount of the tax code id referenced.'; publicadminfalse253^#00COLUMN taxhist.taxhist_amountCOMMENT@COMMENT ON COLUMN taxhist.taxhist_amount IS 'Flat tax amount.'; publicadminfalse253_#00COLUMN taxhist.taxhist_taxCOMMENTCCOMMENT ON COLUMN taxhist.taxhist_tax IS 'Calculated tax amount.'; publicadminfalse253`#00COLUMN taxhist.taxhist_docdateCOMMENTQCOMMENT ON COLUMN taxhist.taxhist_docdate IS 'The date of the parent document.'; publicadminfalse253a#00COLUMN taxhist.taxhist_distdateCOMMENTcCOMMENT ON COLUMN taxhist.taxhist_distdate IS 'The G/L distribution date of the parent document.'; publicadminfalse253b#00taxhistACLREVOKE ALL ON TABLE taxhist FROM PUBLIC; REVOKE ALL ON TABLE taxhist FROM admin; GRANT ALL ON TABLE taxhist TO admin; GRANT ALL ON TABLE taxhist TO xtrole; publicadminfalse25312591693781taxhist_taxhist_id_seqSEQUENCExCREATE SEQUENCE taxhist_taxhist_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.taxhist_taxhist_id_seq; publicadminfalse8253c#00taxhist_taxhist_id_seqSEQUENCE OWNED BYCALTER SEQUENCE taxhist_taxhist_id_seq OWNED BY taxhist.taxhist_id; publicadminfalse254d#00taxhist_taxhist_id_seq SEQUENCE SET>SELECT pg_catalog.setval('taxhist_taxhist_id_seq', 1, false); publicadminfalse254e#00taxhist_taxhist_id_seqACLREVOKE ALL ON SEQUENCE taxhist_taxhist_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE taxhist_taxhist_id_seq FROM admin; GRANT ALL ON SEQUENCE taxhist_taxhist_id_seq TO admin; GRANT ALL ON SEQUENCE taxhist_taxhist_id_seq TO xtrole; publicadminfalse25412591693783 cohisttaxTABLE/CREATE TABLE cohisttax ( ) INHERITS (taxhist); DROP TABLE public.cohisttax; publicadminfalse61548253f#00 cohisttaxACLREVOKE ALL ON TABLE cohisttax FROM PUBLIC; REVOKE ALL ON TABLE cohisttax FROM admin; GRANT ALL ON TABLE cohisttax TO admin; GRANT ALL ON TABLE cohisttax TO xtrole; publicadminfalse255612592009273 saleshistoryVIEW) CREATE VIEW saleshistory AS SELECT custinfo.cust_number AS customer_number, item.item_number, whsinfo.warehous_code AS site_code, cohist.cohist_shipdate AS ship_date, cohist.cohist_shipvia AS ship_via, cohist.cohist_ordernumber AS order_number, cohist.cohist_ponumber AS purchase_order_number, cohist.cohist_orderdate AS order_date, cohist.cohist_invcnumber AS invoice_number, cohist.cohist_invcdate AS invoice_date, cohist.cohist_qtyshipped AS quantity_shipped, cohist.cohist_unitprice AS unit_price, shiptoinfo.shipto_num AS shipto_number, salesrep.salesrep_number AS sales_rep, cohist.cohist_duedate AS due_date, cohist.cohist_promisedate AS promise_date, cohist.cohist_imported AS imported, cohist.cohist_billtoname AS billto_name, cohist.cohist_billtoaddress1 AS billto_address1, cohist.cohist_billtoaddress2 AS billto_address2, cohist.cohist_billtoaddress3 AS billto_address3, cohist.cohist_billtocity AS billto_city, cohist.cohist_billtostate AS billto_state, cohist.cohist_billtozip AS billto_zip, cohist.cohist_shiptoname AS shipto_name, cohist.cohist_shiptoaddress1 AS shipto_address1, cohist.cohist_shiptoaddress2 AS shipto_address2, cohist.cohist_shiptoaddress3 AS shipto_address3, cohist.cohist_shiptocity AS shipto_city, cohist.cohist_shiptostate AS shipto_state, cohist.cohist_shiptozip AS shipto_zip, cohist.cohist_commission AS commission, cohist.cohist_commissionpaid AS commission_paid, cohist.cohist_unitcost AS unit_cost, CASE WHEN (cohist.cohist_misc_type IS NULL) THEN ''::text WHEN (cohist.cohist_misc_type = 'M'::bpchar) THEN 'Misc. Charge'::text WHEN (cohist.cohist_misc_type = 'F'::bpchar) THEN 'Freight'::text ELSE 'Unknown'::text END AS misc_type, cohist.cohist_misc_descrip AS misc_description, CASE WHEN (cohist.cohist_misc_id IS NULL) THEN ''::text WHEN (cohist.cohist_misc_type = 'M'::bpchar) THEN public.formatglaccount(cohist.cohist_misc_id) ELSE 'Unknown'::text END AS misc_info, taxzone.taxzone_code AS tax_zone, taxtype.taxtype_name AS tax_type, CASE WHEN (cohist.cohist_doctype = 'I'::text) THEN 'Invoice'::text WHEN (cohist.cohist_doctype = 'C'::text) THEN 'Credit Memo'::text ELSE 'Unknown'::text END AS document_type, curr_symbol.curr_abbr AS currency, cohist.cohist_sequence AS gl_sequence, (SELECT sum(cohisttax.taxhist_tax) AS sum FROM public.cohisttax WHERE (cohisttax.taxhist_parent_id = cohist.cohist_id)) AS tax FROM (((((((((public.cohist LEFT JOIN public.custinfo ON ((cohist.cohist_cust_id = custinfo.cust_id))) LEFT JOIN public.shiptoinfo ON ((cohist.cohist_shipto_id = shiptoinfo.shipto_id))) LEFT JOIN public.taxzone ON ((cohist.cohist_taxzone_id = taxzone.taxzone_id))) LEFT JOIN public.taxtype ON ((cohist.cohist_taxtype_id = taxtype.taxtype_id))) LEFT JOIN public.salesrep ON ((cohist.cohist_salesrep_id = salesrep.salesrep_id))) LEFT JOIN public.itemsite ON ((cohist.cohist_itemsite_id = itemsite.itemsite_id))) LEFT JOIN public.item ON ((itemsite.itemsite_item_id = item.item_id))) LEFT JOIN public.whsinfo ON ((itemsite.itemsite_warehous_id = whsinfo.warehous_id))) LEFT JOIN public.curr_symbol ON ((cohist.cohist_curr_id = curr_symbol.curr_id))); DROP VIEW api.saleshistory; apiadminfalse54766g#00VIEW saleshistoryCOMMENT1COMMENT ON VIEW saleshistory IS 'Sales History'; apiadminfalse822h#00 saleshistoryACLREVOKE ALL ON TABLE saleshistory FROM PUBLIC; REVOKE ALL ON TABLE saleshistory FROM admin; GRANT ALL ON TABLE saleshistory TO admin; GRANT ALL ON TABLE saleshistory TO xtrole; apiadminfalse822712592009284 saleslinecharVIEWCREATE VIEW saleslinechar AS SELECT (data.order_number)::character varying AS order_number, data.line_number, data.characteristic, COALESCE(si.charass_value, i3.charass_value) AS value, (COALESCE(si.charass_price, public.itemcharprice(data.item_id, data.char_id, COALESCE(si.charass_value, i3.charass_value), data.cohead_cust_id, data.cohead_shipto_id, data.coitem_qtyord, data.cohead_curr_id, data.cohead_orderdate), (0)::numeric))::numeric(16,4) AS price FROM (((((SELECT DISTINCT cohead.cohead_cust_id, cohead.cohead_shipto_id, cohead.cohead_curr_id, cohead.cohead_orderdate, coitem.coitem_id, coitem.coitem_itemsite_id, coitem.coitem_qtyord, "char".char_id, item.item_id, cohead.cohead_number AS order_number, CASE WHEN (coitem.coitem_subnumber = 0) THEN ((coitem.coitem_linenumber)::character varying)::text ELSE ((((coitem.coitem_linenumber)::character varying)::text || ('.'::character varying)::text) || ((coitem.coitem_subnumber)::character varying)::text) END AS line_number, "char".char_name AS characteristic FROM public.cohead, public.coitem, public.itemsite, public.item, public.charass, public."char" WHERE ((((((cohead.cohead_id = coitem.coitem_cohead_id) AND (coitem.coitem_itemsite_id = itemsite.itemsite_id)) AND (itemsite.itemsite_item_id = item.item_id)) AND (charass.charass_char_id = "char".char_id)) AND (charass.charass_target_type = 'I'::text)) AND (charass.charass_target_id = item.item_id))) data LEFT JOIN public.charass si ON ((((data.coitem_id = si.charass_target_id) AND ('SI'::text = si.charass_target_type)) AND (si.charass_char_id = data.char_id)))) LEFT JOIN public.itemsite i1 ON ((data.coitem_itemsite_id = i1.itemsite_id))) LEFT JOIN public.item i2 ON ((i1.itemsite_item_id = i2.item_id))) LEFT JOIN public.charass i3 ON (((((i2.item_id = i3.charass_target_id) AND ('I'::text = i3.charass_target_type)) AND (i3.charass_char_id = data.char_id)) AND i3.charass_default))) ORDER BY (data.order_number)::character varying, data.line_number, data.characteristic; DROP VIEW api.saleslinechar; apiadminfalse54806i#00VIEW saleslinecharCOMMENTICOMMENT ON VIEW saleslinechar IS 'Sales Order Line Item Characteristic'; apiadminfalse823j#00 saleslinecharACLREVOKE ALL ON TABLE saleslinechar FROM PUBLIC; REVOKE ALL ON TABLE saleslinechar FROM admin; GRANT ALL ON TABLE saleslinechar TO admin; GRANT ALL ON TABLE saleslinechar TO xtrole; apiadminfalse823812592009294saleslinecommentVIEWYCREATE VIEW saleslinecomment AS SELECT (cohead.cohead_number)::character varying AS order_number, CASE WHEN (coitem.coitem_subnumber = 0) THEN ((coitem.coitem_linenumber)::character varying)::text ELSE ((((coitem.coitem_linenumber)::character varying)::text || ('.'::character varying)::text) || ((coitem.coitem_subnumber)::character varying)::text) END AS line_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.cohead, public.coitem, public.cmnttype, public.comment WHERE ((((cohead.cohead_id = coitem.coitem_cohead_id) AND (comment.comment_source = 'SI'::text)) AND (comment.comment_source_id = coitem.coitem_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)) ORDER BY cohead.cohead_number, coitem.coitem_linenumber, comment.comment_date DESC; DROP VIEW api.saleslinecomment; apiadminfalse54846k#00VIEW saleslinecommentCOMMENTECOMMENT ON VIEW saleslinecomment IS 'Sales Order Line Item Comment'; apiadminfalse824l#00saleslinecommentACLREVOKE ALL ON TABLE saleslinecomment FROM PUBLIC; REVOKE ALL ON TABLE saleslinecomment FROM admin; GRANT ALL ON TABLE saleslinecomment TO admin; GRANT ALL ON TABLE saleslinecomment TO xtrole; apiadminfalse824912592009302 salesorderVIEW9CREATE VIEW salesorder AS SELECT (cohead.cohead_number)::character varying AS order_number, whsinfo.warehous_code AS site, cohead.cohead_orderdate AS order_date, cohead.cohead_packdate AS pack_date, saletype.saletype_code AS sale_type, salesrep.salesrep_number AS sales_rep, cohead.cohead_commission AS commission, COALESCE(taxzone.taxzone_code, 'None'::text) AS tax_zone, terms.terms_code AS terms, prj.prj_number AS project_number, custinfo.cust_number AS customer_number, bc.cntct_number AS billto_contact_number, cohead.cohead_billto_cntct_honorific AS billto_contact_name, cohead.cohead_billto_cntct_first_name AS billto_contact_first, cohead.cohead_billto_cntct_middle AS billto_contact_middle, cohead.cohead_billto_cntct_last_name AS billto_contact_last, cohead.cohead_billto_cntct_suffix AS billto_contact_suffix, cohead.cohead_billto_cntct_phone AS billto_contact_phone, cohead.cohead_billto_cntct_title AS billto_contact_title, cohead.cohead_billto_cntct_fax AS billto_contct_fax, cohead.cohead_billto_cntct_email AS billto_contact_email, cohead.cohead_billtoname AS billto_name, cohead.cohead_billtoaddress1 AS billto_address1, cohead.cohead_billtoaddress2 AS billto_address2, cohead.cohead_billtoaddress3 AS billto_address3, cohead.cohead_billtocity AS billto_city, cohead.cohead_billtostate AS billto_state, cohead.cohead_billtozipcode AS billto_postal_code, cohead.cohead_billtocountry AS billto_country, shiptoinfo.shipto_num AS shipto_number, sc.cntct_number AS shipto_contact_number, cohead.cohead_shipto_cntct_honorific AS shipto_contact_honorific, cohead.cohead_shipto_cntct_first_name AS shipto_contact_first, cohead.cohead_shipto_cntct_middle AS shipto_contact_middle, cohead.cohead_shipto_cntct_last_name AS shipto_contact_last, cohead.cohead_shipto_cntct_suffix AS shipto_contact_suffix, cohead.cohead_shipto_cntct_phone AS shipto_contact_phone, cohead.cohead_shipto_cntct_title AS shipto_contact_title, cohead.cohead_shipto_cntct_fax AS shipto_contact_fax, cohead.cohead_shipto_cntct_email AS shipto_contact_email, cohead.cohead_shiptoname AS shipto_name, cohead.cohead_shiptophone AS shipto_phone, cohead.cohead_shiptoaddress1 AS shipto_address1, cohead.cohead_shiptoaddress2 AS shipto_address2, cohead.cohead_shiptoaddress3 AS shipto_address3, cohead.cohead_shiptocity AS shipto_city, cohead.cohead_shiptostate AS shipto_state, cohead.cohead_shiptozipcode AS shipto_postal_code, cohead.cohead_shiptocountry AS shipto_country, shipzone.shipzone_name AS shipto_shipzone, cohead.cohead_custponumber AS cust_po_number, cohead.cohead_fob AS fob, cohead.cohead_shipvia AS ship_via, CASE WHEN (cohead.cohead_holdtype = 'N'::bpchar) THEN 'None'::text WHEN (cohead.cohead_holdtype = 'C'::bpchar) THEN 'Credit'::text WHEN (cohead.cohead_holdtype = 'S'::bpchar) THEN 'Shipping'::text WHEN (cohead.cohead_holdtype = 'P'::bpchar) THEN 'Packing'::text WHEN (cohead.cohead_holdtype = 'R'::bpchar) THEN 'Return'::text ELSE 'Error'::text END AS hold_type, shipchrg.shipchrg_name AS shipping_chgs, shipform.shipform_name AS shipping_form, cohead.cohead_shipcomplete AS ship_complete, curr_symbol.curr_abbr AS currency, cohead.cohead_misc_descrip AS misc_charge_description, CASE WHEN (cohead.cohead_misc_accnt_id IS NULL) THEN NULL::text ELSE public.formatglaccount(cohead.cohead_misc_accnt_id) END AS misc_account_number, cohead.cohead_misc AS misc_charge, cohead.cohead_freight AS freight, cohead.cohead_calcfreight AS calculate_freight, cohead.cohead_ordercomments AS order_notes, cohead.cohead_shipcomments AS shipping_notes, false AS add_to_packing_list_batch FROM (((((((((public.cohead LEFT JOIN public.cntct bc ON ((cohead.cohead_billto_cntct_id = bc.cntct_id))) LEFT JOIN public.cntct sc ON ((cohead.cohead_shipto_cntct_id = sc.cntct_id))) LEFT JOIN public.whsinfo ON ((cohead.cohead_warehous_id = whsinfo.warehous_id))) LEFT JOIN public.prj ON ((cohead.cohead_prj_id = prj.prj_id))) LEFT JOIN public.shiptoinfo ON ((cohead.cohead_shipto_id = shiptoinfo.shipto_id))) LEFT JOIN public.shipchrg ON ((cohead.cohead_shipchrg_id = shipchrg.shipchrg_id))) LEFT JOIN public.taxzone ON ((cohead.cohead_taxzone_id = taxzone.taxzone_id))) LEFT JOIN public.saletype ON ((cohead.cohead_saletype_id = saletype.saletype_id))) LEFT JOIN public.shipzone ON ((cohead.cohead_shipzone_id = shipzone.shipzone_id))), public.custinfo, public.shipform, public.salesrep, public.terms, public.curr_symbol WHERE (((((cohead.cohead_cust_id = custinfo.cust_id) AND (cohead.cohead_shipform_id = shipform.shipform_id)) AND (cohead.cohead_salesrep_id = salesrep.salesrep_id)) AND (cohead.cohead_terms_id = terms.terms_id)) AND (cohead.cohead_curr_id = curr_symbol.curr_id)); DROP VIEW api.salesorder; apiadminfalse54886m#00VIEW salesorderCOMMENT-COMMENT ON VIEW salesorder IS 'Sales Order'; apiadminfalse825n#00 salesorderACLREVOKE ALL ON TABLE salesorder FROM PUBLIC; REVOKE ALL ON TABLE salesorder FROM admin; GRANT ALL ON TABLE salesorder TO admin; GRANT ALL ON TABLE salesorder TO xtrole; apiadminfalse825:12592009312salesordercommentVIEWCREATE VIEW salesordercomment AS SELECT (cohead.cohead_number)::character varying AS order_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.cohead, public.cmnttype, public.comment WHERE (((comment.comment_source = 'S'::text) AND (comment.comment_source_id = cohead.cohead_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); !DROP VIEW api.salesordercomment; apiadminfalse54926o#00VIEW salesordercommentCOMMENT<COMMENT ON VIEW salesordercomment IS 'Sales Order Comment'; apiadminfalse826p#00salesordercommentACLREVOKE ALL ON TABLE salesordercomment FROM PUBLIC; REVOKE ALL ON TABLE salesordercomment FROM admin; GRANT ALL ON TABLE salesordercomment TO admin; GRANT ALL ON TABLE salesordercomment TO xtrole; apiadminfalse826;12592009319salesrepVIEW~CREATE VIEW salesrep AS SELECT (salesrep.salesrep_number)::character varying AS number, salesrep.salesrep_active AS active, salesrep.salesrep_name AS name, (salesrep.salesrep_commission * (100)::numeric) AS commission_percent, emp.emp_number AS employee FROM (public.salesrep LEFT JOIN public.emp ON ((emp.emp_id = salesrep.salesrep_emp_id))) ORDER BY salesrep.salesrep_number; DROP VIEW api.salesrep; apiadminfalse54966q#00 VIEW salesrepCOMMENT)COMMENT ON VIEW salesrep IS 'Sales Rep'; apiadminfalse827r#00salesrepACLREVOKE ALL ON TABLE salesrep FROM PUBLIC; REVOKE ALL ON TABLE salesrep FROM admin; GRANT ALL ON TABLE salesrep TO admin; GRANT ALL ON TABLE salesrep TO xtrole; apiadminfalse82712591693818shipviaTABLECREATE TABLE shipvia ( shipvia_id integer DEFAULT nextval(('shipvia_shipvia_id_seq'::text)::regclass) NOT NULL, shipvia_code text NOT NULL, shipvia_descrip text, CONSTRAINT shipvia_shipvia_code_check CHECK ((shipvia_code <> ''::text)) ); DROP TABLE public.shipvia; publicadminfalse615561568s#00 TABLE shipviaCOMMENT4COMMENT ON TABLE shipvia IS 'Ship Via information'; publicadminfalse256t#00shipviaACLREVOKE ALL ON TABLE shipvia FROM PUBLIC; REVOKE ALL ON TABLE shipvia FROM admin; GRANT ALL ON TABLE shipvia TO admin; GRANT ALL ON TABLE shipvia TO xtrole; publicadminfalse25612591693825sitetypeTABLECREATE TABLE sitetype ( sitetype_id integer NOT NULL, sitetype_name text NOT NULL, sitetype_descrip text, CONSTRAINT sitetype_sitetype_name_check CHECK ((sitetype_name <> ''::text)) ); DROP TABLE public.sitetype; publicadminfalse61588u#00TABLE sitetypeCOMMENTLCOMMENT ON TABLE sitetype IS 'This table is the different types of sites.'; publicadminfalse257v#00sitetypeACLREVOKE ALL ON TABLE sitetype FROM PUBLIC; REVOKE ALL ON TABLE sitetype FROM admin; GRANT ALL ON TABLE sitetype TO admin; GRANT ALL ON TABLE sitetype TO xtrole; publicadminfalse257<12592009327siteVIEWCREATE VIEW site AS SELECT (whsinfo.warehous_code)::character varying AS code, st.sitetype_name AS type, whsinfo.warehous_active AS active, whsinfo.warehous_descrip AS description, m.addr_number AS address_number, m.addr_line1 AS address1, m.addr_line2 AS address2, m.addr_line3 AS address3, m.addr_city AS city, m.addr_state AS state, m.addr_postalcode AS postal_code, m.addr_country AS country, ''::text AS address_change, c.cntct_number AS contact_number, c.cntct_honorific AS honorific, c.cntct_first_name AS first, c.cntct_middle AS middle, c.cntct_last_name AS last, c.cntct_suffix AS suffix, c.cntct_title AS job_title, c.cntct_phone AS phone, c.cntct_fax AS fax, c.cntct_email AS email, ''::text AS contact_change, public.formatglaccount(a.accnt_id) AS post_unassigned_transactions_to, a.accnt_descrip AS post_unassigned_transactions_to_description, whsinfo.warehous_transit AS transit_type, CASE WHEN whsinfo.warehous_transit THEN false ELSE true END AS inventory_type, CASE WHEN whsinfo.warehous_transit THEN ''::text ELSE whsinfo.warehous_bol_prefix END AS next_bill_of_lading_prefix, CASE WHEN whsinfo.warehous_transit THEN 0 ELSE whsinfo.warehous_bol_number END AS next_bill_of_lading_number, CASE WHEN whsinfo.warehous_transit THEN false ELSE whsinfo.warehous_shipping END AS shipping_site, CASE WHEN whsinfo.warehous_transit THEN ''::text ELSE whsinfo.warehous_counttag_prefix END AS next_count_tag_prefix, CASE WHEN whsinfo.warehous_transit THEN 0 ELSE whsinfo.warehous_counttag_number END AS next_count_tag_number, CASE WHEN whsinfo.warehous_transit THEN false ELSE whsinfo.warehous_useslips END AS force_the_use_of_count_slips, CASE WHEN whsinfo.warehous_transit THEN false ELSE whsinfo.warehous_usezones END AS force_the_use_of_zones, CASE WHEN whsinfo.warehous_transit THEN 0 ELSE whsinfo.warehous_sequence END AS scheduling_sequence, CASE WHEN whsinfo.warehous_transit THEN (0)::numeric ELSE (whsinfo.warehous_shipping_commission * 100.0) END AS shipping_commission, CASE WHEN whsinfo.warehous_transit THEN ''::text ELSE t.taxzone_code END AS tax_zone, CASE WHEN whsinfo.warehous_transit THEN ''::text ELSE whsinfo.warehous_fob END AS default_fob, CASE WHEN whsinfo.warehous_transit THEN s.shipvia_code ELSE ''::text END AS default_ship_via, CASE WHEN whsinfo.warehous_transit THEN f.shipform_name ELSE ''::text END AS default_shipping_form, CASE WHEN whsinfo.warehous_transit THEN cc.costcat_code ELSE ''::text END AS default_cost_category, CASE WHEN whsinfo.warehous_transit THEN whsinfo.warehous_shipcomments ELSE ''::text END AS shipping_comments, CASE WHEN whsinfo.warehous_transit THEN false ELSE whsinfo.warehous_enforcearbl END AS enforce_arbl_naming_convention, CASE WHEN whsinfo.warehous_transit THEN 0 WHEN whsinfo.warehous_enforcearbl THEN whsinfo.warehous_aislesize ELSE 0 END AS aisle_size, CASE WHEN whsinfo.warehous_transit THEN false WHEN (whsinfo.warehous_enforcearbl AND whsinfo.warehous_aislealpha) THEN true ELSE false END AS aisle_allow_alpha_characters, CASE WHEN whsinfo.warehous_transit THEN 0 WHEN whsinfo.warehous_enforcearbl THEN whsinfo.warehous_racksize ELSE 0 END AS rack_size, CASE WHEN whsinfo.warehous_transit THEN false WHEN (whsinfo.warehous_enforcearbl AND whsinfo.warehous_rackalpha) THEN true ELSE false END AS rack_allow_alpha_characters, CASE WHEN whsinfo.warehous_transit THEN 0 WHEN whsinfo.warehous_enforcearbl THEN whsinfo.warehous_binsize ELSE 0 END AS bin_size, CASE WHEN whsinfo.warehous_transit THEN false WHEN (whsinfo.warehous_enforcearbl AND whsinfo.warehous_binalpha) THEN true ELSE false END AS bin_allow_alpha_characters, CASE WHEN whsinfo.warehous_transit THEN 0 WHEN whsinfo.warehous_enforcearbl THEN whsinfo.warehous_locationsize ELSE 0 END AS location_size, CASE WHEN whsinfo.warehous_transit THEN false WHEN (whsinfo.warehous_enforcearbl AND whsinfo.warehous_locationalpha) THEN true ELSE false END AS location_allow_alpha_characters FROM ((((((((public.whsinfo LEFT JOIN public.addr m ON ((whsinfo.warehous_addr_id = m.addr_id))) LEFT JOIN public.cntct c ON ((whsinfo.warehous_cntct_id = c.cntct_id))) LEFT JOIN public.accnt a ON ((whsinfo.warehous_default_accnt_id = a.accnt_id))) LEFT JOIN public.taxzone t ON ((whsinfo.warehous_taxzone_id = t.taxzone_id))) LEFT JOIN public.shipvia s ON ((whsinfo.warehous_shipvia_id = s.shipvia_id))) LEFT JOIN public.shipform f ON ((whsinfo.warehous_shipform_id = f.shipform_id))) LEFT JOIN public.costcat cc ON ((whsinfo.warehous_costcat_id = cc.costcat_id))) LEFT JOIN public.sitetype st ON ((whsinfo.warehous_sitetype_id = st.sitetype_id))) ORDER BY whsinfo.warehous_code; DROP VIEW api.site; apiadminfalse55006w#00 VIEW siteCOMMENT COMMENT ON VIEW site IS 'Site'; apiadminfalse828x#00siteACLREVOKE ALL ON TABLE site FROM PUBLIC; REVOKE ALL ON TABLE site FROM admin; GRANT ALL ON TABLE site TO admin; GRANT ALL ON TABLE site TO xtrole; apiadminfalse828=12592009337sitezoneVIEW!CREATE VIEW sitezone AS SELECT (whsinfo.warehous_code)::character varying AS site, (whsezone.whsezone_name)::character varying AS name, whsezone.whsezone_descrip AS description FROM (public.whsezone LEFT JOIN public.whsinfo ON ((whsinfo.warehous_id = whsezone.whsezone_warehous_id))); DROP VIEW api.sitezone; apiadminfalse55046y#00 VIEW sitezoneCOMMENT)COMMENT ON VIEW sitezone IS 'Site Zone'; apiadminfalse829z#00sitezoneACLREVOKE ALL ON TABLE sitezone FROM PUBLIC; REVOKE ALL ON TABLE sitezone FROM admin; GRANT ALL ON TABLE sitezone TO admin; GRANT ALL ON TABLE sitezone TO xtrole; apiadminfalse829>12592009345taskVIEWCREATE VIEW task AS SELECT prj.prj_number AS project_number, prjtask.prjtask_number AS number, CASE WHEN (prjtask.prjtask_status = 'P'::bpchar) THEN 'Concept'::text WHEN (prjtask.prjtask_status = 'O'::bpchar) THEN 'In-Process'::text WHEN (prjtask.prjtask_status = 'C'::bpchar) THEN 'Closed'::text ELSE 'Error'::text END AS status, prjtask.prjtask_name AS name, prjtask.prjtask_descrip AS description, prjtask.prjtask_owner_username AS owner, prjtask.prjtask_username AS assigned_to, prjtask.prjtask_hours_budget AS hours_budgeted, prjtask.prjtask_hours_actual AS hours_actual, prjtask.prjtask_exp_budget AS expenses_budgeted, prjtask.prjtask_exp_actual AS expenses_actual, prjtask.prjtask_due_date AS due, prjtask.prjtask_assigned_date AS assigned, prjtask.prjtask_start_date AS started, prjtask.prjtask_completed_date AS completed FROM (public.prjtask JOIN public.prj ON ((prj.prj_id = prjtask.prjtask_prj_id))); DROP VIEW api.task; apiadminfalse55086{#00 VIEW taskCOMMENT COMMENT ON VIEW task IS 'Task'; apiadminfalse830|#00taskACLREVOKE ALL ON TABLE task FROM PUBLIC; REVOKE ALL ON TABLE task FROM admin; GRANT ALL ON TABLE task TO admin; GRANT ALL ON TABLE task TO xtrole; apiadminfalse830?12592009355 taskcommentVIEW"CREATE VIEW taskcomment AS SELECT (prj.prj_number)::character varying AS project_number, (prjtask.prjtask_number)::character varying AS task_number, cmnttype.cmnttype_name AS type, comment.comment_date AS date, comment.comment_user AS username, comment.comment_text AS text FROM public.prj, public.prjtask, public.cmnttype, public.comment WHERE ((((comment.comment_source = 'TA'::text) AND (prj.prj_id = prjtask.prjtask_prj_id)) AND (comment.comment_source_id = prjtask.prjtask_id)) AND (comment.comment_cmnttype_id = cmnttype.cmnttype_id)); DROP VIEW api.taskcomment; apiadminfalse55126}#00VIEW taskcommentCOMMENT/COMMENT ON VIEW taskcomment IS 'Task Comment'; apiadminfalse831~#00 taskcommentACLREVOKE ALL ON TABLE taskcomment FROM PUBLIC; REVOKE ALL ON TABLE taskcomment FROM admin; GRANT ALL ON TABLE taskcomment TO admin; GRANT ALL ON TABLE taskcomment TO xtrole; apiadminfalse831@12592009362todoVIEWCREATE VIEW todo AS SELECT todoitem.todoitem_id AS task_number, todoitem.todoitem_owner_username AS owner, todoitem.todoitem_username AS assigned_to, todoitem.todoitem_name AS task_name, incdtpriority.incdtpriority_name AS priority, incdt.incdt_number AS incident, ophead.ophead_name AS opportunity, crmacct.crmacct_number AS account, public.formatdate(todoitem.todoitem_due_date) AS date_due, public.formatdate(todoitem.todoitem_assigned_date) AS date_assigned, public.formatdate(todoitem.todoitem_start_date) AS date_started, public.formatdate(todoitem.todoitem_completed_date) AS date_completed, CASE WHEN (todoitem.todoitem_status = 'P'::bpchar) THEN 'Pending Input'::text WHEN (todoitem.todoitem_status = 'D'::bpchar) THEN 'Deferred'::text ELSE 'Neither'::text END AS status, todoitem.todoitem_active AS active, todoitem.todoitem_description AS description, todoitem.todoitem_notes AS notes FROM ((((public.todoitem LEFT JOIN public.incdt ON ((incdt.incdt_id = todoitem.todoitem_incdt_id))) LEFT JOIN public.ophead ON ((ophead.ophead_id = todoitem.todoitem_ophead_id))) LEFT JOIN public.crmacct ON ((crmacct.crmacct_id = todoitem.todoitem_crmacct_id))) LEFT JOIN public.incdtpriority ON ((incdtpriority.incdtpriority_id = todoitem.todoitem_priority_id))); DROP VIEW api.todo; apiadminfalse55166#00 VIEW todoCOMMENT&COMMENT ON VIEW todo IS 'To-Do List'; apiadminfalse832#00todoACLREVOKE ALL ON TABLE todo FROM PUBLIC; REVOKE ALL ON TABLE todo FROM admin; GRANT ALL ON TABLE todo TO admin; GRANT ALL ON TABLE todo TO xtrole; apiadminfalse83212591693854vendtypeTABLECREATE TABLE vendtype ( vendtype_id integer NOT NULL, vendtype_code text NOT NULL, vendtype_descrip text, CONSTRAINT vendtype_vendtype_code_check CHECK ((vendtype_code <> ''::text)) ); DROP TABLE public.vendtype; publicadminfalse61608#00TABLE vendtypeCOMMENT8COMMENT ON TABLE vendtype IS 'Vendor Type information'; publicadminfalse258#00vendtypeACLREVOKE ALL ON TABLE vendtype FROM PUBLIC; REVOKE ALL ON TABLE vendtype FROM admin; GRANT ALL ON TABLE vendtype TO admin; GRANT ALL ON TABLE vendtype TO xtrole; publicadminfalse258A12592009372vendorVIEW[ CREATE VIEW vendor AS SELECT (vendinfo.vend_number)::character varying AS vendor_number, vendtype.vendtype_code AS vendor_type, vendinfo.vend_name AS vendor_name, vendinfo.vend_active AS active, vendinfo.vend_accntnum AS account_number, addr.addr_number AS address_number, addr.addr_line1 AS address1, addr.addr_line2 AS address2, addr.addr_line3 AS address3, addr.addr_city AS city, addr.addr_state AS state, addr.addr_postalcode AS postalcode, addr.addr_country AS country, ''::text AS address_change, terms.terms_code AS default_terms, vendinfo.vend_shipvia AS ship_via, curr_symbol.curr_abbr AS default_currency, CASE WHEN (vendinfo.vend_fobsource = 'W'::bpchar) THEN 'Receiving Site'::text ELSE vendinfo.vend_fob END AS default_fob, vendinfo.vend_po AS sells_purchase_order_items, vendinfo.vend_restrictpurch AS may_only_sell_item_source, vendinfo.vend_qualified AS qualified, vendinfo.vend_match AS matching_vo_po_amounts, vendinfo.vend_1099 AS receives_1099, taxzone.taxzone_code AS default_tax_zone, CASE WHEN (accnt.accnt_id IS NULL) THEN 'N/A'::text ELSE public.formatglaccount(accnt.accnt_id) END AS default_dist_gl_account, CASE WHEN (expcat.expcat_id IS NULL) THEN 'N/A'::text ELSE expcat.expcat_code END AS default_dist_expense_category, CASE WHEN (tax.tax_id IS NULL) THEN 'N/A'::text ELSE tax.tax_code END AS default_dist_tax_code, c1.cntct_number AS contact1_number, c1.cntct_honorific AS contact1_honorific, c1.cntct_first_name AS contact1_first, c1.cntct_middle AS contact1_middle, c1.cntct_last_name AS contact1_last, c1.cntct_suffix AS contact1_suffix, c1.cntct_title AS contact1_job_title, c1.cntct_phone AS contact1_voice, c1.cntct_phone2 AS contact1_alternate, c1.cntct_fax AS contact1_fax, c1.cntct_email AS contact1_email, c1.cntct_webaddr AS contact1_web, ''::text AS contact1_change, c2.cntct_number AS contact2_number, c2.cntct_honorific AS contact2_honorific, c2.cntct_first_name AS contact2_first, c2.cntct_middle AS contact2_middle, c2.cntct_last_name AS contact2_last, c2.cntct_suffix AS contact2_suffix, c2.cntct_title AS contact2_job_title, c2.cntct_phone AS contact2_voice, c2.cntct_phone2 AS contact2_alternate, c2.cntct_fax AS contact2_fax, c2.cntct_email AS contact2_email, c2.cntct_webaddr AS contact2_web, ''::text AS contact2_change, vendinfo.vend_comments AS notes, vendinfo.vend_pocomments AS po_comments, vendinfo.vend_emailpodelivery AS allow_email_po_delivery, vendinfo.vend_ediemail AS po_edi_email, vendinfo.vend_edicc AS po_edi_cc, vendinfo.vend_edisubject AS po_edi_subject, vendinfo.vend_edifilename AS po_edi_filename, vendinfo.vend_ediemailbody AS po_edi_emailbody FROM ((((((((((public.vendinfo LEFT JOIN public.addr ON ((vendinfo.vend_addr_id = addr.addr_id))) LEFT JOIN public.cntct c1 ON ((vendinfo.vend_cntct1_id = c1.cntct_id))) LEFT JOIN public.cntct c2 ON ((vendinfo.vend_cntct2_id = c2.cntct_id))) LEFT JOIN public.taxzone ON ((vendinfo.vend_taxzone_id = taxzone.taxzone_id))) LEFT JOIN public.curr_symbol ON ((vendinfo.vend_curr_id = curr_symbol.curr_id))) LEFT JOIN public.terms ON ((vendinfo.vend_terms_id = terms.terms_id))) LEFT JOIN public.vendtype ON ((vendinfo.vend_vendtype_id = vendtype.vendtype_id))) LEFT JOIN public.accnt ON ((vendinfo.vend_accnt_id = accnt.accnt_id))) LEFT JOIN public.expcat ON ((vendinfo.vend_expcat_id = expcat.expcat_id))) LEFT JOIN public.tax ON ((vendinfo.vend_tax_id = tax.tax_id))) ORDER BY vendinfo.vend_number; DROP VIEW api.vendor; apiadminfalse55206#00 VIEW vendorCOMMENT$COMMENT ON VIEW vendor IS 'vendor'; apiadminfalse833#00vendorACLREVOKE ALL ON TABLE vendor FROM PUBLIC; REVOKE ALL ON TABLE vendor FROM admin; GRANT ALL ON TABLE vendor TO admin; GRANT ALL ON TABLE vendor TO xtrole; apiadminfalse833B12592009382 vendoraddressVIEWLCREATE VIEW vendoraddress AS SELECT (vendinfo.vend_number)::character varying AS vendor_number, vendinfo.vend_name AS vendor_name, (vendaddrinfo.vendaddr_code)::character varying AS vendor_address_number, vendaddrinfo.vendaddr_name AS vendor_address_name, addr.addr_number AS address_number, addr.addr_line1 AS address1, addr.addr_line2 AS address2, addr.addr_line3 AS address3, addr.addr_city AS city, addr.addr_state AS state, addr.addr_postalcode AS postalcode, addr.addr_country AS country, ''::text AS address_change, cntct.cntct_number AS contact_number, cntct.cntct_honorific AS contact_honorific, cntct.cntct_first_name AS contact_first, cntct.cntct_middle AS contact_middle, cntct.cntct_last_name AS contact_last, cntct.cntct_suffix AS contact_suffix, cntct.cntct_title AS contact_job_title, cntct.cntct_phone AS contact_voice, cntct.cntct_phone2 AS contact_alternate, cntct.cntct_fax AS contact_fax, cntct.cntct_email AS contact_email, cntct.cntct_webaddr AS contact_web, ''::text AS contact_change, vendaddrinfo.vendaddr_comments AS notes FROM (((public.vendaddrinfo LEFT JOIN public.vendinfo ON ((vendinfo.vend_id = vendaddrinfo.vendaddr_vend_id))) LEFT JOIN public.addr ON ((vendaddrinfo.vendaddr_addr_id = addr.addr_id))) LEFT JOIN public.cntct ON ((vendaddrinfo.vendaddr_cntct_id = cntct.cntct_id))) ORDER BY vendaddrinfo.vendaddr_code; DROP VIEW api.vendoraddress; apiadminfalse55246#00VIEW vendoraddressCOMMENT3COMMENT ON VIEW vendoraddress IS 'vendor address'; apiadminfalse834#00 vendoraddressACLREVOKE ALL ON TABLE vendoraddress FROM PUBLIC; REVOKE ALL ON TABLE vendoraddress FROM admin; GRANT ALL ON TABLE vendoraddress TO admin; GRANT ALL ON TABLE vendoraddress TO xtrole; apiadminfalse834C12592009390 vendortypeVIEWCREATE VIEW vendortype AS SELECT (vendtype.vendtype_code)::character varying AS code, vendtype.vendtype_descrip AS description FROM public.vendtype ORDER BY vendtype.vendtype_code; DROP VIEW api.vendortype; apiadminfalse55286#00VIEW vendortypeCOMMENT-COMMENT ON VIEW vendortype IS 'Vendor Type'; apiadminfalse835#00 vendortypeACLREVOKE ALL ON TABLE vendortype FROM PUBLIC; REVOKE ALL ON TABLE vendortype FROM admin; GRANT ALL ON TABLE vendortype TO admin; GRANT ALL ON TABLE vendortype TO xtrole; apiadminfalse83512591693874cmdTABLECREATE TABLE cmd ( cmd_id integer NOT NULL, cmd_module text NOT NULL, cmd_title text NOT NULL, cmd_descrip text, cmd_privname text, cmd_executable text NOT NULL, cmd_name text ); DROP TABLE public.cmd; publicadminfalse8#00 TABLE cmdCOMMENT6COMMENT ON TABLE cmd IS 'Custom menu command table.'; publicadminfalse259#00cmdACLREVOKE ALL ON TABLE cmd FROM PUBLIC; REVOKE ALL ON TABLE cmd FROM admin; GRANT ALL ON TABLE cmd TO admin; GRANT ALL ON TABLE cmd TO xtrole; publicadminfalse25912591693880cmd_cmd_id_seqSEQUENCEpCREATE SEQUENCE cmd_cmd_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; %DROP SEQUENCE public.cmd_cmd_id_seq; publicadminfalse8259#00cmd_cmd_id_seqSEQUENCE OWNED BY3ALTER SEQUENCE cmd_cmd_id_seq OWNED BY cmd.cmd_id; publicadminfalse260#00cmd_cmd_id_seq SEQUENCE SET5SELECT pg_catalog.setval('cmd_cmd_id_seq', 6, true); publicadminfalse260#00cmd_cmd_id_seqACLREVOKE ALL ON SEQUENCE cmd_cmd_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cmd_cmd_id_seq FROM admin; GRANT ALL ON SEQUENCE cmd_cmd_id_seq TO admin; GRANT ALL ON SEQUENCE cmd_cmd_id_seq TO xtrole; publicadminfalse26026041693882cmd_idDEFAULTUALTER TABLE cmd ALTER COLUMN cmd_id SET DEFAULT nextval('cmd_cmd_id_seq'::regclass); 9ALTER TABLE public.cmd ALTER COLUMN cmd_id DROP DEFAULT; publicadminfalse26025912591693883pkgcmdTABLEuCREATE TABLE pkgcmd ( cmd_id integer DEFAULT nextval('public.cmd_cmd_id_seq'::regclass) ) INHERITS (public.cmd); DROP TABLE fixcountry.pkgcmd;  fixcountryadminfalse61627259#00pkgcmdACLREVOKE ALL ON TABLE pkgcmd FROM PUBLIC; REVOKE ALL ON TABLE pkgcmd FROM admin; GRANT ALL ON TABLE pkgcmd TO admin; GRANT ALL ON TABLE pkgcmd TO xtrole;  fixcountryadminfalse26112591693890cmdargTABLECREATE TABLE cmdarg ( cmdarg_id integer NOT NULL, cmdarg_cmd_id integer NOT NULL, cmdarg_order integer NOT NULL, cmdarg_arg text NOT NULL ); DROP TABLE public.cmdarg; publicadminfalse8#00 TABLE cmdargCOMMENTNCOMMENT ON TABLE cmdarg IS 'Command argument for custom menu command table.'; publicadminfalse262#00cmdargACLREVOKE ALL ON TABLE cmdarg FROM PUBLIC; REVOKE ALL ON TABLE cmdarg FROM admin; GRANT ALL ON TABLE cmdarg TO admin; GRANT ALL ON TABLE cmdarg TO xtrole; publicadminfalse26212591693896cmdarg_cmdarg_id_seqSEQUENCEvCREATE SEQUENCE cmdarg_cmdarg_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.cmdarg_cmdarg_id_seq; publicadminfalse8262#00cmdarg_cmdarg_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE cmdarg_cmdarg_id_seq OWNED BY cmdarg.cmdarg_id; publicadminfalse263#00cmdarg_cmdarg_id_seq SEQUENCE SET;SELECT pg_catalog.setval('cmdarg_cmdarg_id_seq', 6, true); publicadminfalse263#00cmdarg_cmdarg_id_seqACLREVOKE ALL ON SEQUENCE cmdarg_cmdarg_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cmdarg_cmdarg_id_seq FROM admin; GRANT ALL ON SEQUENCE cmdarg_cmdarg_id_seq TO admin; GRANT ALL ON SEQUENCE cmdarg_cmdarg_id_seq TO xtrole; publicadminfalse26326041693898 cmdarg_idDEFAULTaALTER TABLE cmdarg ALTER COLUMN cmdarg_id SET DEFAULT nextval('cmdarg_cmdarg_id_seq'::regclass); ?ALTER TABLE public.cmdarg ALTER COLUMN cmdarg_id DROP DEFAULT; publicadminfalse26326212591693899 pkgcmdargTABLECREATE TABLE pkgcmdarg ( cmdarg_id integer DEFAULT nextval('public.cmdarg_cmdarg_id_seq'::regclass) ) INHERITS (public.cmdarg); !DROP TABLE fixcountry.pkgcmdarg;  fixcountryadminfalse61647262#00 pkgcmdargACLREVOKE ALL ON TABLE pkgcmdarg FROM PUBLIC; REVOKE ALL ON TABLE pkgcmdarg FROM admin; GRANT ALL ON TABLE pkgcmdarg TO admin; GRANT ALL ON TABLE pkgcmdarg TO xtrole;  fixcountryadminfalse264 12591693906image_image_id_seqSEQUENCE|CREATE SEQUENCE image_image_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; )DROP SEQUENCE public.image_image_id_seq; publicadminfalse8#00image_image_id_seq SEQUENCE SET<SELECT pg_catalog.setval('image_image_id_seq', 6631, true); publicadminfalse265#00image_image_id_seqACLREVOKE ALL ON SEQUENCE image_image_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE image_image_id_seq FROM admin; GRANT ALL ON SEQUENCE image_image_id_seq TO admin; GRANT ALL ON SEQUENCE image_image_id_seq TO xtrole; publicadminfalse265 12591693908pkgimageTABLECREATE TABLE pkgimage ( image_id integer DEFAULT nextval('public.image_image_id_seq'::regclass) ) INHERITS (public.image); DROP TABLE fixcountry.pkgimage;  fixcountryadminfalse61657194#00pkgimageACLREVOKE ALL ON TABLE pkgimage FROM PUBLIC; REVOKE ALL ON TABLE pkgimage FROM admin; GRANT ALL ON TABLE pkgimage TO admin; GRANT ALL ON TABLE pkgimage TO xtrole;  fixcountryadminfalse266 12591693915metasqlTABLECREATE TABLE metasql ( metasql_id integer NOT NULL, metasql_group text, metasql_name text, metasql_notes text, metasql_query text, metasql_lastuser text, metasql_lastupdate date, metasql_grade integer DEFAULT 0 NOT NULL ); DROP TABLE public.metasql; publicadminfalse61678#00 TABLE metasqlCOMMENT-COMMENT ON TABLE metasql IS 'MetaSQL Table'; publicadminfalse267#00metasqlACLREVOKE ALL ON TABLE metasql FROM PUBLIC; REVOKE ALL ON TABLE metasql FROM admin; GRANT ALL ON TABLE metasql TO admin; GRANT ALL ON TABLE metasql TO xtrole; publicadminfalse267 12591693922metasql_metasql_id_seqSEQUENCExCREATE SEQUENCE metasql_metasql_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.metasql_metasql_id_seq; publicadminfalse8267#00metasql_metasql_id_seqSEQUENCE OWNED BYCALTER SEQUENCE metasql_metasql_id_seq OWNED BY metasql.metasql_id; publicadminfalse268#00metasql_metasql_id_seq SEQUENCE SET?SELECT pg_catalog.setval('metasql_metasql_id_seq', 479, true); publicadminfalse268#00metasql_metasql_id_seqACLREVOKE ALL ON SEQUENCE metasql_metasql_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE metasql_metasql_id_seq FROM admin; GRANT ALL ON SEQUENCE metasql_metasql_id_seq TO admin; GRANT ALL ON SEQUENCE metasql_metasql_id_seq TO xtrole; publicadminfalse26826041693924 metasql_idDEFAULTeALTER TABLE metasql ALTER COLUMN metasql_id SET DEFAULT nextval('metasql_metasql_id_seq'::regclass); AALTER TABLE public.metasql ALTER COLUMN metasql_id DROP DEFAULT; publicadminfalse268267 12591693925 pkgmetasqlTABLECREATE TABLE pkgmetasql ( metasql_id integer DEFAULT nextval('public.metasql_metasql_id_seq'::regclass) ) INHERITS (public.metasql); "DROP TABLE fixcountry.pkgmetasql;  fixcountryadminfalse616861697267#00 pkgmetasqlACLREVOKE ALL ON TABLE pkgmetasql FROM PUBLIC; REVOKE ALL ON TABLE pkgmetasql FROM admin; GRANT ALL ON TABLE pkgmetasql TO admin; GRANT ALL ON TABLE pkgmetasql TO xtrole;  fixcountryadminfalse26912591693933privTABLECREATE TABLE priv ( priv_id integer DEFAULT nextval(('priv_priv_id_seq'::text)::regclass) NOT NULL, priv_module text, priv_name text, priv_descrip text, priv_seq integer ); DROP TABLE public.priv; publicadminfalse61708#00 TABLE privCOMMENT9COMMENT ON TABLE priv IS 'System Privilege information'; publicadminfalse270#00privACLREVOKE ALL ON TABLE priv FROM PUBLIC; REVOKE ALL ON TABLE priv FROM admin; GRANT ALL ON TABLE priv TO admin; GRANT ALL ON TABLE priv TO xtrole; publicadminfalse27012591693940priv_priv_id_seqSEQUENCEzCREATE SEQUENCE priv_priv_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; 'DROP SEQUENCE public.priv_priv_id_seq; publicadminfalse8#00priv_priv_id_seq SEQUENCE SET9SELECT pg_catalog.setval('priv_priv_id_seq', 644, true); publicadminfalse271#00priv_priv_id_seqACLREVOKE ALL ON SEQUENCE priv_priv_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE priv_priv_id_seq FROM admin; GRANT ALL ON SEQUENCE priv_priv_id_seq TO admin; GRANT ALL ON SEQUENCE priv_priv_id_seq TO xtrole; publicadminfalse27112591693942pkgprivTABLEzCREATE TABLE pkgpriv ( priv_id integer DEFAULT nextval('public.priv_priv_id_seq'::regclass) ) INHERITS (public.priv); DROP TABLE fixcountry.pkgpriv;  fixcountryadminfalse61717270#00pkgprivACLREVOKE ALL ON TABLE pkgpriv FROM PUBLIC; REVOKE ALL ON TABLE pkgpriv FROM admin; GRANT ALL ON TABLE pkgpriv TO admin; GRANT ALL ON TABLE pkgpriv TO xtrole;  fixcountryadminfalse27212591693949reportTABLE%CREATE TABLE report ( report_id integer DEFAULT nextval(('report_report_id_seq'::text)::regclass) NOT NULL, report_name text, report_sys boolean, report_source text, report_descrip text, report_grade integer NOT NULL, report_loaddate timestamp without time zone ); DROP TABLE public.report; publicadminfalse61728#00 TABLE reportCOMMENT<COMMENT ON TABLE report IS 'Report definition information'; publicadminfalse273#00reportACLREVOKE ALL ON TABLE report FROM PUBLIC; REVOKE ALL ON TABLE report FROM admin; GRANT ALL ON TABLE report TO admin; GRANT ALL ON TABLE report TO xtrole; publicadminfalse27312591693956report_report_id_seqSEQUENCE~CREATE SEQUENCE report_report_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; +DROP SEQUENCE public.report_report_id_seq; publicadminfalse8#00report_report_id_seq SEQUENCE SET=SELECT pg_catalog.setval('report_report_id_seq', 478, true); publicadminfalse274#00report_report_id_seqACLREVOKE ALL ON SEQUENCE report_report_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE report_report_id_seq FROM admin; GRANT ALL ON SEQUENCE report_report_id_seq TO admin; GRANT ALL ON SEQUENCE report_report_id_seq TO xtrole; publicadminfalse27412591693958 pkgreportTABLECREATE TABLE pkgreport ( report_id integer DEFAULT nextval('public.report_report_id_seq'::regclass) ) INHERITS (public.report); !DROP TABLE fixcountry.pkgreport;  fixcountryadminfalse61737273#00 pkgreportACLREVOKE ALL ON TABLE pkgreport FROM PUBLIC; REVOKE ALL ON TABLE pkgreport FROM admin; GRANT ALL ON TABLE pkgreport TO admin; GRANT ALL ON TABLE pkgreport TO xtrole;  fixcountryadminfalse27512591693965scriptTABLECREATE TABLE script ( script_id integer NOT NULL, script_name text NOT NULL, script_order integer NOT NULL, script_enabled boolean DEFAULT false NOT NULL, script_source text NOT NULL, script_notes text ); DROP TABLE public.script; publicadminfalse61758#00scriptACLREVOKE ALL ON TABLE script FROM PUBLIC; REVOKE ALL ON TABLE script FROM admin; GRANT ALL ON TABLE script TO admin; GRANT ALL ON TABLE script TO xtrole; publicadminfalse27612591693972script_script_id_seqSEQUENCEvCREATE SEQUENCE script_script_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.script_script_id_seq; publicadminfalse8276#00script_script_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE script_script_id_seq OWNED BY script.script_id; publicadminfalse277#00script_script_id_seq SEQUENCE SET=SELECT pg_catalog.setval('script_script_id_seq', 132, true); publicadminfalse277#00script_script_id_seqACLREVOKE ALL ON SEQUENCE script_script_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE script_script_id_seq FROM admin; GRANT ALL ON SEQUENCE script_script_id_seq TO admin; GRANT ALL ON SEQUENCE script_script_id_seq TO xtrole; publicadminfalse27726041693974 script_idDEFAULTaALTER TABLE script ALTER COLUMN script_id SET DEFAULT nextval('script_script_id_seq'::regclass); ?ALTER TABLE public.script ALTER COLUMN script_id DROP DEFAULT; publicadminfalse27727612591693975 pkgscriptTABLECREATE TABLE pkgscript ( script_id integer DEFAULT nextval('public.script_script_id_seq'::regclass) ) INHERITS (public.script); !DROP TABLE fixcountry.pkgscript;  fixcountryadminfalse617661777276#00 pkgscriptACLREVOKE ALL ON TABLE pkgscript FROM PUBLIC; REVOKE ALL ON TABLE pkgscript FROM admin; GRANT ALL ON TABLE pkgscript TO admin; GRANT ALL ON TABLE pkgscript TO xtrole;  fixcountryadminfalse27812591693983uiformTABLECREATE TABLE uiform ( uiform_id integer NOT NULL, uiform_name text NOT NULL, uiform_order integer NOT NULL, uiform_enabled boolean DEFAULT false NOT NULL, uiform_source text NOT NULL, uiform_notes text ); DROP TABLE public.uiform; publicadminfalse61798#00uiformACLREVOKE ALL ON TABLE uiform FROM PUBLIC; REVOKE ALL ON TABLE uiform FROM admin; GRANT ALL ON TABLE uiform TO admin; GRANT ALL ON TABLE uiform TO xtrole; publicadminfalse27912591693990uiform_uiform_id_seqSEQUENCEvCREATE SEQUENCE uiform_uiform_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.uiform_uiform_id_seq; publicadminfalse8279#00uiform_uiform_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE uiform_uiform_id_seq OWNED BY uiform.uiform_id; publicadminfalse280#00uiform_uiform_id_seq SEQUENCE SET<SELECT pg_catalog.setval('uiform_uiform_id_seq', 64, true); publicadminfalse280#00uiform_uiform_id_seqACLREVOKE ALL ON SEQUENCE uiform_uiform_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE uiform_uiform_id_seq FROM admin; GRANT ALL ON SEQUENCE uiform_uiform_id_seq TO admin; GRANT ALL ON SEQUENCE uiform_uiform_id_seq TO xtrole; publicadminfalse280"26041693992 uiform_idDEFAULTaALTER TABLE uiform ALTER COLUMN uiform_id SET DEFAULT nextval('uiform_uiform_id_seq'::regclass); ?ALTER TABLE public.uiform ALTER COLUMN uiform_id DROP DEFAULT; publicadminfalse28027912591693993 pkguiformTABLECREATE TABLE pkguiform ( uiform_id integer DEFAULT nextval('public.uiform_uiform_id_seq'::regclass) ) INHERITS (public.uiform); !DROP TABLE fixcountry.pkguiform;  fixcountryadminfalse618061817279#00 pkguiformACLREVOKE ALL ON TABLE pkguiform FROM PUBLIC; REVOKE ALL ON TABLE pkguiform FROM admin; GRANT ALL ON TABLE pkguiform TO admin; GRANT ALL ON TABLE pkguiform TO xtrole;  fixcountryadminfalse28112591694001acalitemTABLECREATE TABLE acalitem ( acalitem_id integer DEFAULT nextval(('"xcalitem_xcalitem_id_seq"'::text)::regclass) NOT NULL, acalitem_calhead_id integer, acalitem_periodstart date, acalitem_periodlength integer, acalitem_name text ); DROP TABLE public.acalitem; publicadminfalse61828#00TABLE acalitemCOMMENTCCOMMENT ON TABLE acalitem IS 'Absolute Calendar Item information'; publicadminfalse282#00acalitemACLREVOKE ALL ON TABLE acalitem FROM PUBLIC; REVOKE ALL ON TABLE acalitem FROM admin; GRANT ALL ON TABLE acalitem TO admin; GRANT ALL ON TABLE acalitem TO xtrole; publicadminfalse28212591694008accnt_accnt_id_seqSEQUENCE|CREATE SEQUENCE accnt_accnt_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; )DROP SEQUENCE public.accnt_accnt_id_seq; publicadminfalse8#00accnt_accnt_id_seq SEQUENCE SET;SELECT pg_catalog.setval('accnt_accnt_id_seq', 136, true); publicadminfalse283#00accnt_accnt_id_seqACLREVOKE ALL ON SEQUENCE accnt_accnt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE accnt_accnt_id_seq FROM admin; GRANT ALL ON SEQUENCE accnt_accnt_id_seq TO admin; GRANT ALL ON SEQUENCE accnt_accnt_id_seq TO xtrole; publicadminfalse28312591694010addr_addr_id_seqSEQUENCErCREATE SEQUENCE addr_addr_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 'DROP SEQUENCE public.addr_addr_id_seq; publicadminfalse8184#00addr_addr_id_seqSEQUENCE OWNED BY7ALTER SEQUENCE addr_addr_id_seq OWNED BY addr.addr_id; publicadminfalse284#00addr_addr_id_seq SEQUENCE SET7SELECT pg_catalog.setval('addr_addr_id_seq', 3, true); publicadminfalse284#00addr_addr_id_seqACLREVOKE ALL ON SEQUENCE addr_addr_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE addr_addr_id_seq FROM admin; GRANT ALL ON SEQUENCE addr_addr_id_seq TO admin; GRANT ALL ON SEQUENCE addr_addr_id_seq TO xtrole; publicadminfalse284D12592009397addressVIEW_CREATE VIEW address AS SELECT addresses.addr_id, addresses.addr_active, addresses.addr_line1, addresses.addr_line2, addresses.addr_line3, addresses.addr_city, addresses.addr_state, addresses.addr_postalcode, addresses.addr_country, addresses.addr_notes, addresses.addr_number, addresses.crmacct_id, addresses.crmacct_number, addresses.crmacct_name FROM ((((SELECT base.addr_id, base.addr_active, base.addr_line1, base.addr_line2, base.addr_line3, base.addr_city, base.addr_state, base.addr_postalcode, base.addr_country, base.addr_notes, base.addr_number, base.crmacct_id, base.crmacct_number, base.crmacct_name FROM ((((SELECT addr.addr_id, addr.addr_active, addr.addr_line1, addr.addr_line2, addr.addr_line3, addr.addr_city, addr.addr_state, addr.addr_postalcode, addr.addr_country, addr.addr_notes, addr.addr_number, COALESCE(crmacct.crmacct_id, (-1)) AS crmacct_id, crmacct.crmacct_number, crmacct.crmacct_name FROM ((addr LEFT JOIN cntct ON ((cntct.cntct_addr_id = addr.addr_id))) LEFT JOIN crmacct ON ((crmacct.crmacct_id = cntct.cntct_crmacct_id))) EXCEPT SELECT addr.addr_id, addr.addr_active, addr.addr_line1, addr.addr_line2, addr.addr_line3, addr.addr_city, addr.addr_state, addr.addr_postalcode, addr.addr_country, addr.addr_notes, addr.addr_number, (-1), NULL::unknown, NULL::unknown FROM ((addr JOIN vendinfo ON ((vendinfo.vend_addr_id = addr.addr_id))) JOIN crmacct ON ((vendinfo.vend_id = crmacct.crmacct_vend_id)))) EXCEPT SELECT addr.addr_id, addr.addr_active, addr.addr_line1, addr.addr_line2, addr.addr_line3, addr.addr_city, addr.addr_state, addr.addr_postalcode, addr.addr_country, addr.addr_notes, addr.addr_number, (-1), NULL::unknown, NULL::unknown FROM ((addr JOIN vendaddrinfo ON ((vendaddrinfo.vendaddr_addr_id = addr.addr_id))) JOIN crmacct ON ((vendaddrinfo.vendaddr_vend_id = crmacct.crmacct_vend_id)))) EXCEPT SELECT addr.addr_id, addr.addr_active, addr.addr_line1, addr.addr_line2, addr.addr_line3, addr.addr_city, addr.addr_state, addr.addr_postalcode, addr.addr_country, addr.addr_notes, addr.addr_number, (-1), NULL::unknown, NULL::unknown FROM ((addr JOIN taxauth ON ((taxauth.taxauth_addr_id = addr.addr_id))) JOIN crmacct ON ((taxauth.taxauth_id = crmacct.crmacct_taxauth_id)))) EXCEPT SELECT addr.addr_id, addr.addr_active, addr.addr_line1, addr.addr_line2, addr.addr_line3, addr.addr_city, addr.addr_state, addr.addr_postalcode, addr.addr_country, addr.addr_notes, addr.addr_number, (-1), NULL::unknown, NULL::unknown FROM ((addr JOIN shiptoinfo ON ((shiptoinfo.shipto_addr_id = addr.addr_id))) JOIN crmacct ON ((shiptoinfo.shipto_cust_id = crmacct.crmacct_cust_id)))) base UNION SELECT addr.addr_id, addr.addr_active, addr.addr_line1, addr.addr_line2, addr.addr_line3, addr.addr_city, addr.addr_state, addr.addr_postalcode, addr.addr_country, addr.addr_notes, addr.addr_number, crmacct.crmacct_id, crmacct.crmacct_number, crmacct.crmacct_name FROM ((addr JOIN vendinfo ON ((vendinfo.vend_addr_id = addr.addr_id))) JOIN crmacct ON ((vendinfo.vend_id = crmacct.crmacct_vend_id)))) UNION SELECT addr.addr_id, addr.addr_active, addr.addr_line1, addr.addr_line2, addr.addr_line3, addr.addr_city, addr.addr_state, addr.addr_postalcode, addr.addr_country, addr.addr_notes, addr.addr_number, crmacct.crmacct_id, crmacct.crmacct_number, crmacct.crmacct_name FROM ((addr JOIN vendaddrinfo ON ((vendaddrinfo.vendaddr_addr_id = addr.addr_id))) JOIN crmacct ON ((vendaddrinfo.vendaddr_vend_id = crmacct.crmacct_vend_id)))) UNION SELECT addr.addr_id, addr.addr_active, addr.addr_line1, addr.addr_line2, addr.addr_line3, addr.addr_city, addr.addr_state, addr.addr_postalcode, addr.addr_country, addr.addr_notes, addr.addr_number, crmacct.crmacct_id, crmacct.crmacct_number, crmacct.crmacct_name FROM ((addr JOIN taxauth ON ((taxauth.taxauth_addr_id = addr.addr_id))) JOIN crmacct ON ((taxauth.taxauth_id = crmacct.crmacct_taxauth_id)))) UNION SELECT addr.addr_id, addr.addr_active, addr.addr_line1, addr.addr_line2, addr.addr_line3, addr.addr_city, addr.addr_state, addr.addr_postalcode, addr.addr_country, addr.addr_notes, addr.addr_number, crmacct.crmacct_id, crmacct.crmacct_number, crmacct.crmacct_name FROM ((addr JOIN shiptoinfo ON ((shiptoinfo.shipto_addr_id = addr.addr_id))) JOIN crmacct ON ((shiptoinfo.shipto_cust_id = crmacct.crmacct_cust_id)))) addresses ORDER BY addresses.addr_country, addresses.addr_state, addresses.addr_postalcode, addresses.addr_line1, addresses.addr_line2, addresses.addr_line3; DROP VIEW public.address; publicadminfalse55328#00addressACLREVOKE ALL ON TABLE address FROM PUBLIC; REVOKE ALL ON TABLE address FROM admin; GRANT ALL ON TABLE address TO admin; GRANT ALL ON TABLE address TO xtrole; publicadminfalse83612591694017alarmTABLE'CREATE TABLE alarm ( alarm_id integer NOT NULL, alarm_number text NOT NULL, alarm_event boolean DEFAULT false NOT NULL, alarm_email boolean DEFAULT false NOT NULL, alarm_sysmsg boolean DEFAULT false NOT NULL, alarm_trigger timestamp with time zone, alarm_time timestamp with time zone, alarm_time_offset integer, alarm_time_qualifier text, alarm_creator text, alarm_event_recipient text, alarm_email_recipient text, alarm_sysmsg_recipient text, alarm_source text, alarm_source_id integer ); DROP TABLE public.alarm; publicadminfalse6183618461858#00 TABLE alarmCOMMENT<COMMENT ON TABLE alarm IS 'This table is the open alarms.'; publicadminfalse285#00alarmACLREVOKE ALL ON TABLE alarm FROM PUBLIC; REVOKE ALL ON TABLE alarm FROM admin; GRANT ALL ON TABLE alarm TO admin; GRANT ALL ON TABLE alarm TO xtrole; publicadminfalse28512591694026alarm_alarm_id_seqSEQUENCEtCREATE SEQUENCE alarm_alarm_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; )DROP SEQUENCE public.alarm_alarm_id_seq; publicadminfalse8285#00alarm_alarm_id_seqSEQUENCE OWNED BY;ALTER SEQUENCE alarm_alarm_id_seq OWNED BY alarm.alarm_id; publicadminfalse286#00alarm_alarm_id_seq SEQUENCE SET:SELECT pg_catalog.setval('alarm_alarm_id_seq', 1, false); publicadminfalse286#00alarm_alarm_id_seqACLREVOKE ALL ON SEQUENCE alarm_alarm_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE alarm_alarm_id_seq FROM admin; GRANT ALL ON SEQUENCE alarm_alarm_id_seq TO admin; GRANT ALL ON SEQUENCE alarm_alarm_id_seq TO xtrole; publicadminfalse28612591694028apaccntTABLECREATE TABLE apaccnt ( apaccnt_id integer NOT NULL, apaccnt_vendtype_id integer, apaccnt_vendtype text, apaccnt_ap_accnt_id integer NOT NULL, apaccnt_prepaid_accnt_id integer, apaccnt_discount_accnt_id integer ); DROP TABLE public.apaccnt; publicadminfalse8#00 TABLE apaccntCOMMENTUCOMMENT ON TABLE apaccnt IS 'Accounts Payable (A/P) Account assignment information'; publicadminfalse287#00apaccntACLREVOKE ALL ON TABLE apaccnt FROM PUBLIC; REVOKE ALL ON TABLE apaccnt FROM admin; GRANT ALL ON TABLE apaccnt TO admin; GRANT ALL ON TABLE apaccnt TO xtrole; publicadminfalse287 12591694034apaccnt_apaccnt_id_seqSEQUENCExCREATE SEQUENCE apaccnt_apaccnt_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.apaccnt_apaccnt_id_seq; publicadminfalse8287#00apaccnt_apaccnt_id_seqSEQUENCE OWNED BYCALTER SEQUENCE apaccnt_apaccnt_id_seq OWNED BY apaccnt.apaccnt_id; publicadminfalse288#00apaccnt_apaccnt_id_seq SEQUENCE SET>SELECT pg_catalog.setval('apaccnt_apaccnt_id_seq', 20, true); publicadminfalse288#00apaccnt_apaccnt_id_seqACLREVOKE ALL ON SEQUENCE apaccnt_apaccnt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE apaccnt_apaccnt_id_seq FROM admin; GRANT ALL ON SEQUENCE apaccnt_apaccnt_id_seq TO admin; GRANT ALL ON SEQUENCE apaccnt_apaccnt_id_seq TO xtrole; publicadminfalse288!12591694036apapplyTABLE!CREATE TABLE apapply ( apapply_id integer NOT NULL, apapply_vend_id integer, apapply_postdate date, apapply_username text, apapply_source_apopen_id integer, apapply_source_doctype text, apapply_source_docnumber text, apapply_target_apopen_id integer, apapply_target_doctype text, apapply_target_docnumber text, apapply_journalnumber integer, apapply_amount numeric(20,2), apapply_curr_id integer DEFAULT basecurrid(), apapply_target_paid numeric(20,2), apapply_checkhead_id integer ); DROP TABLE public.apapply; publicadminfalse61898#00 TABLE apapplyCOMMENTxCOMMENT ON TABLE apapply IS 'Applications (e.g., Payments, A/P Credit Memos) made to Accounts Payable (A/P) Documents'; publicadminfalse289#00'COLUMN apapply.apapply_source_apopen_idCOMMENTCOMMENT ON COLUMN apapply.apapply_source_apopen_id IS 'If apapply_source_doctype is "C" (credit memo) then apapply_source_apopen_id acts as a foreign key to the apopen table. If the source doctype is "K" (check) then the apapply_source_apopen_id acts as a foreign key to the checkhead table. If the apapply_source_apopen_id is -1 then the internal id of the source document is not known (always the case for checks posted before release 3.2.0BETA).'; publicadminfalse289#00apapplyACLREVOKE ALL ON TABLE apapply FROM PUBLIC; REVOKE ALL ON TABLE apapply FROM admin; GRANT ALL ON TABLE apapply TO admin; GRANT ALL ON TABLE apapply TO xtrole; publicadminfalse289"12591694043apapply_apapply_id_seqSEQUENCExCREATE SEQUENCE apapply_apapply_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.apapply_apapply_id_seq; publicadminfalse8289#00apapply_apapply_id_seqSEQUENCE OWNED BYCALTER SEQUENCE apapply_apapply_id_seq OWNED BY apapply.apapply_id; publicadminfalse290#00apapply_apapply_id_seq SEQUENCE SET>SELECT pg_catalog.setval('apapply_apapply_id_seq', 1, false); publicadminfalse290#00apapply_apapply_id_seqACLREVOKE ALL ON SEQUENCE apapply_apapply_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE apapply_apapply_id_seq FROM admin; GRANT ALL ON SEQUENCE apapply_apapply_id_seq TO admin; GRANT ALL ON SEQUENCE apapply_apapply_id_seq TO xtrole; publicadminfalse290\12591694280 checkheadTABLECREATE TABLE checkhead ( checkhead_id integer NOT NULL, checkhead_recip_id integer NOT NULL, checkhead_recip_type text NOT NULL, checkhead_bankaccnt_id integer NOT NULL, checkhead_printed boolean DEFAULT false NOT NULL, checkhead_checkdate date NOT NULL, checkhead_number integer NOT NULL, checkhead_amount numeric(20,2) NOT NULL, checkhead_void boolean DEFAULT false NOT NULL, checkhead_replaced boolean DEFAULT false NOT NULL, checkhead_posted boolean DEFAULT false NOT NULL, checkhead_rec boolean DEFAULT false NOT NULL, checkhead_misc boolean DEFAULT false NOT NULL, checkhead_expcat_id integer, checkhead_for text NOT NULL, checkhead_notes text NOT NULL, checkhead_journalnumber integer, checkhead_curr_id integer DEFAULT basecurrid() NOT NULL, checkhead_deleted boolean DEFAULT false NOT NULL, checkhead_ach_batch text, checkhead_curr_rate numeric NOT NULL, CONSTRAINT checkhead_checkhead_amount_check CHECK ((checkhead_amount > (0)::numeric)), CONSTRAINT checkhead_checkhead_recip_type_check CHECK ((((checkhead_recip_type = 'C'::text) OR (checkhead_recip_type = 'V'::text)) OR (checkhead_recip_type = 'T'::text))) ); DROP TABLE public.checkhead; publicadminfalse62456246624762486249625062516252625462558#00TABLE checkheadCOMMENTDCOMMENT ON TABLE checkhead IS 'Accounts Payable Check Information'; publicadminfalse348#00 checkheadACLREVOKE ALL ON TABLE checkhead FROM PUBLIC; REVOKE ALL ON TABLE checkhead FROM admin; GRANT ALL ON TABLE checkhead TO admin; GRANT ALL ON TABLE checkhead TO xtrole; publicadminfalse348T12592009476apchkVIEWCREATE VIEW apchk AS SELECT checkhead.checkhead_id AS apchk_id, checkhead.checkhead_recip_id AS apchk_vend_id, checkhead.checkhead_bankaccnt_id AS apchk_bankaccnt_id, checkhead.checkhead_printed AS apchk_printed, checkhead.checkhead_checkdate AS apchk_checkdate, checkhead.checkhead_number AS apchk_number, checkhead.checkhead_amount AS apchk_amount, checkhead.checkhead_void AS apchk_void, checkhead.checkhead_replaced AS apchk_replaced, checkhead.checkhead_posted AS apchk_posted, checkhead.checkhead_rec AS apchk_rec, checkhead.checkhead_misc AS apchk_misc, checkhead.checkhead_expcat_id AS apchk_expcat_id, checkhead.checkhead_for AS apchk_for, checkhead.checkhead_notes AS apchk_notes, checkhead.checkhead_journalnumber AS apchk_journalnumber, checkhead.checkhead_curr_id AS apchk_curr_id, checkhead.checkhead_deleted AS apchk_deleted FROM checkhead WHERE (checkhead.checkhead_recip_type = 'V'::text); DROP VIEW public.apchk; publicadminfalse55488#00apchkACLREVOKE ALL ON TABLE apchk FROM PUBLIC; REVOKE ALL ON TABLE apchk FROM admin; GRANT ALL ON TABLE apchk TO admin; GRANT ALL ON TABLE apchk TO xtrole; publicadminfalse852^12591694298 checkitemTABLECREATE TABLE checkitem ( checkitem_id integer NOT NULL, checkitem_checkhead_id integer NOT NULL, checkitem_amount numeric(20,2) DEFAULT 0.0 NOT NULL, checkitem_discount numeric(20,2) DEFAULT 0.0 NOT NULL, checkitem_ponumber text, checkitem_vouchernumber text, checkitem_invcnumber text, checkitem_apopen_id integer, checkitem_aropen_id integer, checkitem_docdate date, checkitem_curr_id integer DEFAULT basecurrid() NOT NULL, checkitem_cmnumber text, checkitem_ranumber text, checkitem_curr_rate numeric, CONSTRAINT checkitem_check CHECK ((NOT ((checkitem_apopen_id IS NOT NULL) AND (checkitem_aropen_id IS NOT NULL)))) ); DROP TABLE public.checkitem; publicadminfalse62566257625862608#00TABLE checkitemCOMMENTNCOMMENT ON TABLE checkitem IS 'Accounts Payable Check Line Item Information'; publicadminfalse350#00 checkitemACLREVOKE ALL ON TABLE checkitem FROM PUBLIC; REVOKE ALL ON TABLE checkitem FROM admin; GRANT ALL ON TABLE checkitem TO admin; GRANT ALL ON TABLE checkitem TO xtrole; publicadminfalse350U12592009480 apchkitemVIEWCREATE VIEW apchkitem AS SELECT checkitem.checkitem_id AS apchkitem_id, checkitem.checkitem_checkhead_id AS apchkitem_apchk_id, checkitem.checkitem_vouchernumber AS apchkitem_vouchernumber, checkitem.checkitem_ponumber AS apchkitem_ponumber, checkitem.checkitem_amount AS apchkitem_amount, checkitem.checkitem_invcnumber AS apchkitem_invcnumber, checkitem.checkitem_apopen_id AS apchkitem_apopen_id, checkitem.checkitem_docdate AS apchkitem_docdate, checkitem.checkitem_curr_id AS apchkitem_curr_id, checkitem.checkitem_discount AS apchkitem_discount FROM checkhead, checkitem WHERE ((checkitem.checkitem_checkhead_id = checkhead.checkhead_id) AND (checkhead.checkhead_recip_type = 'V'::text)); DROP VIEW public.apchkitem; publicadminfalse55498#00 apchkitemACLREVOKE ALL ON TABLE apchkitem FROM PUBLIC; REVOKE ALL ON TABLE apchkitem FROM admin; GRANT ALL ON TABLE apchkitem TO admin; GRANT ALL ON TABLE apchkitem TO xtrole; publicadminfalse853#12591694045 apcreditapplyTABLECREATE TABLE apcreditapply ( apcreditapply_id integer NOT NULL, apcreditapply_source_apopen_id integer, apcreditapply_target_apopen_id integer, apcreditapply_amount numeric(20,2), apcreditapply_curr_id integer DEFAULT basecurrid() ); !DROP TABLE public.apcreditapply; publicadminfalse61918#00TABLE apcreditapplyCOMMENTCOMMENT ON TABLE apcreditapply IS 'Temporary table for storing details of Accounts Payable (A/P) Credit Memo applications before those applications are posted'; publicadminfalse291#00 apcreditapplyACLREVOKE ALL ON TABLE apcreditapply FROM PUBLIC; REVOKE ALL ON TABLE apcreditapply FROM admin; GRANT ALL ON TABLE apcreditapply TO admin; GRANT ALL ON TABLE apcreditapply TO xtrole; publicadminfalse291$12591694049"apcreditapply_apcreditapply_id_seqSEQUENCECREATE SEQUENCE apcreditapply_apcreditapply_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 9DROP SEQUENCE public.apcreditapply_apcreditapply_id_seq; publicadminfalse8291#00"apcreditapply_apcreditapply_id_seqSEQUENCE OWNED BY[ALTER SEQUENCE apcreditapply_apcreditapply_id_seq OWNED BY apcreditapply.apcreditapply_id; publicadminfalse292#00"apcreditapply_apcreditapply_id_seq SEQUENCE SETJSELECT pg_catalog.setval('apcreditapply_apcreditapply_id_seq', 1, false); publicadminfalse292#00"apcreditapply_apcreditapply_id_seqACLREVOKE ALL ON SEQUENCE apcreditapply_apcreditapply_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE apcreditapply_apcreditapply_id_seq FROM admin; GRANT ALL ON SEQUENCE apcreditapply_apcreditapply_id_seq TO admin; GRANT ALL ON SEQUENCE apcreditapply_apcreditapply_id_seq TO xtrole; publicadminfalse292%12591694051apmemoVIEWCREATE VIEW apmemo AS SELECT apopen.apopen_id, apopen.apopen_docnumber FROM apopen WHERE (apopen.apopen_doctype = ANY (ARRAY['D'::bpchar, 'C'::bpchar])); DROP VIEW public.apmemo; publicadminfalse51378#00apmemoACLREVOKE ALL ON TABLE apmemo FROM PUBLIC; REVOKE ALL ON TABLE apmemo FROM admin; GRANT ALL ON TABLE apmemo TO admin; GRANT ALL ON TABLE apmemo TO xtrole; publicadminfalse293&12591694055apopen_apopen_id_seqSEQUENCEvCREATE SEQUENCE apopen_apopen_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.apopen_apopen_id_seq; publicadminfalse8#00apopen_apopen_id_seq SEQUENCE SET<SELECT pg_catalog.setval('apopen_apopen_id_seq', 70, true); publicadminfalse294#00apopen_apopen_id_seqACLREVOKE ALL ON SEQUENCE apopen_apopen_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE apopen_apopen_id_seq FROM admin; GRANT ALL ON SEQUENCE apopen_apopen_id_seq TO admin; GRANT ALL ON SEQUENCE apopen_apopen_id_seq TO xtrole; publicadminfalse294'12591694057 apopentaxTABLE/CREATE TABLE apopentax ( ) INHERITS (taxhist); DROP TABLE public.apopentax; publicadminfalse61928253#00 apopentaxACLREVOKE ALL ON TABLE apopentax FROM PUBLIC; REVOKE ALL ON TABLE apopentax FROM admin; GRANT ALL ON TABLE apopentax TO admin; GRANT ALL ON TABLE apopentax TO xtrole; publicadminfalse295(12591694063apselectTABLE9CREATE TABLE apselect ( apselect_id integer NOT NULL, apselect_apopen_id integer NOT NULL, apselect_amount numeric(20,2) NOT NULL, apselect_bankaccnt_id integer, apselect_curr_id integer DEFAULT basecurrid(), apselect_date date, apselect_discount numeric(20,2) DEFAULT 0.0 NOT NULL ); DROP TABLE public.apselect; publicadminfalse619461958#00TABLE apselectCOMMENTqCOMMENT ON TABLE apselect IS 'Temporary table for storing details of Accounts Payable (A/P) Payment selections'; publicadminfalse296#00apselectACLREVOKE ALL ON TABLE apselect FROM PUBLIC; REVOKE ALL ON TABLE apselect FROM admin; GRANT ALL ON TABLE apselect TO admin; GRANT ALL ON TABLE apselect TO xtrole; publicadminfalse296)12591694068apselect_apselect_id_seqSEQUENCEzCREATE SEQUENCE apselect_apselect_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.apselect_apselect_id_seq; publicadminfalse8296#00apselect_apselect_id_seqSEQUENCE OWNED BYGALTER SEQUENCE apselect_apselect_id_seq OWNED BY apselect.apselect_id; publicadminfalse297#00apselect_apselect_id_seq SEQUENCE SETASELECT pg_catalog.setval('apselect_apselect_id_seq', 501, true); publicadminfalse297#00apselect_apselect_id_seqACLREVOKE ALL ON SEQUENCE apselect_apselect_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE apselect_apselect_id_seq FROM admin; GRANT ALL ON SEQUENCE apselect_apselect_id_seq TO admin; GRANT ALL ON SEQUENCE apselect_apselect_id_seq TO xtrole; publicadminfalse297*12591694070araccntTABLEmCREATE TABLE araccnt ( araccnt_id integer DEFAULT nextval(('araccnt_araccnt_id_seq'::text)::regclass) NOT NULL, araccnt_custtype_id integer, araccnt_custtype text, araccnt_freight_accnt_id integer, araccnt_ar_accnt_id integer, araccnt_prepaid_accnt_id integer, araccnt_deferred_accnt_id integer, araccnt_discount_accnt_id integer ); DROP TABLE public.araccnt; publicadminfalse61968#00 TABLE araccntCOMMENTXCOMMENT ON TABLE araccnt IS 'Accounts Receivable (A/R) Account assignment information'; publicadminfalse298#00araccntACLREVOKE ALL ON TABLE araccnt FROM PUBLIC; REVOKE ALL ON TABLE araccnt FROM admin; GRANT ALL ON TABLE araccnt TO admin; GRANT ALL ON TABLE araccnt TO xtrole; publicadminfalse298+12591694077araccnt_araccnt_id_seqSEQUENCExCREATE SEQUENCE araccnt_araccnt_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.araccnt_araccnt_id_seq; publicadminfalse8#00araccnt_araccnt_id_seq SEQUENCE SET>SELECT pg_catalog.setval('araccnt_araccnt_id_seq', 39, true); publicadminfalse299#00araccnt_araccnt_id_seqACLREVOKE ALL ON SEQUENCE araccnt_araccnt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE araccnt_araccnt_id_seq FROM admin; GRANT ALL ON SEQUENCE araccnt_araccnt_id_seq TO admin; GRANT ALL ON SEQUENCE araccnt_araccnt_id_seq TO xtrole; publicadminfalse299,12591694079arapplyTABLECREATE TABLE arapply ( arapply_id integer NOT NULL, arapply_postdate date, arapply_cust_id integer, arapply_source_doctype text, arapply_source_docnumber text, arapply_target_doctype text, arapply_target_docnumber text, arapply_fundstype text, arapply_refnumber text, arapply_applied numeric(20,2), arapply_closed boolean, arapply_journalnumber text, arapply_source_aropen_id integer, arapply_target_aropen_id integer, arapply_username text, arapply_curr_id integer DEFAULT basecurrid(), arapply_distdate date NOT NULL, arapply_target_paid numeric(20,2), arapply_reftype text, arapply_ref_id integer ); DROP TABLE public.arapply; publicadminfalse61988#00 TABLE arapplyCOMMENTCOMMENT ON TABLE arapply IS 'Applications (e.g., Cash Receipts, A/R Credit Memos) made to Accounts Receivable (A/R) Documents'; publicadminfalse300#00arapplyACLREVOKE ALL ON TABLE arapply FROM PUBLIC; REVOKE ALL ON TABLE arapply FROM admin; GRANT ALL ON TABLE arapply TO admin; GRANT ALL ON TABLE arapply TO xtrole; publicadminfalse300-12591694086arapply_arapply_id_seqSEQUENCExCREATE SEQUENCE arapply_arapply_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.arapply_arapply_id_seq; publicadminfalse8300#00arapply_arapply_id_seqSEQUENCE OWNED BYCALTER SEQUENCE arapply_arapply_id_seq OWNED BY arapply.arapply_id; publicadminfalse301#00arapply_arapply_id_seq SEQUENCE SET>SELECT pg_catalog.setval('arapply_arapply_id_seq', 1, false); publicadminfalse301#00arapply_arapply_id_seqACLREVOKE ALL ON SEQUENCE arapply_arapply_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE arapply_arapply_id_seq FROM admin; GRANT ALL ON SEQUENCE arapply_arapply_id_seq TO admin; GRANT ALL ON SEQUENCE arapply_arapply_id_seq TO xtrole; publicadminfalse301.12591694088 cashrcptitem_cashrcptitem_id_seqSEQUENCECREATE SEQUENCE cashrcptitem_cashrcptitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 7DROP SEQUENCE public.cashrcptitem_cashrcptitem_id_seq; publicadminfalse8204#00 cashrcptitem_cashrcptitem_id_seqSEQUENCE OWNED BYWALTER SEQUENCE cashrcptitem_cashrcptitem_id_seq OWNED BY cashrcptitem.cashrcptitem_id; publicadminfalse302#00 cashrcptitem_cashrcptitem_id_seq SEQUENCE SETISELECT pg_catalog.setval('cashrcptitem_cashrcptitem_id_seq', 170, true); publicadminfalse302#00 cashrcptitem_cashrcptitem_id_seqACL REVOKE ALL ON SEQUENCE cashrcptitem_cashrcptitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cashrcptitem_cashrcptitem_id_seq FROM admin; GRANT ALL ON SEQUENCE cashrcptitem_cashrcptitem_id_seq TO admin; GRANT ALL ON SEQUENCE cashrcptitem_cashrcptitem_id_seq TO xtrole; publicadminfalse302/12591694090 arcreditapplyTABLE~CREATE TABLE arcreditapply ( arcreditapply_id integer DEFAULT nextval('cashrcptitem_cashrcptitem_id_seq'::regclass) NOT NULL, arcreditapply_source_aropen_id integer, arcreditapply_target_aropen_id integer, arcreditapply_amount numeric(20,2), arcreditapply_curr_id integer DEFAULT basecurrid(), arcreditapply_reftype text, arcreditapply_ref_id integer ); !DROP TABLE public.arcreditapply; publicadminfalse619962008#00TABLE arcreditapplyCOMMENTCOMMENT ON TABLE arcreditapply IS 'Temporary table for storing details of Accounts Receivable (A/R) Credit Memo applications before those applications are posted'; publicadminfalse303#00 arcreditapplyACLREVOKE ALL ON TABLE arcreditapply FROM PUBLIC; REVOKE ALL ON TABLE arcreditapply FROM admin; GRANT ALL ON TABLE arcreditapply TO admin; GRANT ALL ON TABLE arcreditapply TO xtrole; publicadminfalse303012591694098"arcreditapply_arcreditapply_id_seqSEQUENCECREATE SEQUENCE arcreditapply_arcreditapply_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 9DROP SEQUENCE public.arcreditapply_arcreditapply_id_seq; publicadminfalse8303#00"arcreditapply_arcreditapply_id_seqSEQUENCE OWNED BY[ALTER SEQUENCE arcreditapply_arcreditapply_id_seq OWNED BY arcreditapply.arcreditapply_id; publicadminfalse304#00"arcreditapply_arcreditapply_id_seq SEQUENCE SETJSELECT pg_catalog.setval('arcreditapply_arcreditapply_id_seq', 1, false); publicadminfalse304#00"arcreditapply_arcreditapply_id_seqACLREVOKE ALL ON SEQUENCE arcreditapply_arcreditapply_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE arcreditapply_arcreditapply_id_seq FROM admin; GRANT ALL ON SEQUENCE arcreditapply_arcreditapply_id_seq TO admin; GRANT ALL ON SEQUENCE arcreditapply_arcreditapply_id_seq TO xtrole; publicadminfalse304112591694100armemoVIEW CREATE VIEW armemo AS SELECT aropen.aropen_id, aropen.aropen_docnumber FROM aropen WHERE (aropen.aropen_doctype = ANY (ARRAY['D'::bpchar, 'C'::bpchar, 'R'::bpchar])) UNION SELECT cmhead.cmhead_id AS aropen_id, cmhead.cmhead_number AS aropen_docnumber FROM cmhead; DROP VIEW public.armemo; publicadminfalse51388#00armemoACLREVOKE ALL ON TABLE armemo FROM PUBLIC; REVOKE ALL ON TABLE armemo FROM admin; GRANT ALL ON TABLE armemo TO admin; GRANT ALL ON TABLE armemo TO xtrole; publicadminfalse305212591694104aropen_aropen_id_seqSEQUENCE~CREATE SEQUENCE aropen_aropen_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; +DROP SEQUENCE public.aropen_aropen_id_seq; publicadminfalse8#00aropen_aropen_id_seq SEQUENCE SET=SELECT pg_catalog.setval('aropen_aropen_id_seq', 292, true); publicadminfalse306#00aropen_aropen_id_seqACLREVOKE ALL ON SEQUENCE aropen_aropen_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE aropen_aropen_id_seq FROM admin; GRANT ALL ON SEQUENCE aropen_aropen_id_seq TO admin; GRANT ALL ON SEQUENCE aropen_aropen_id_seq TO xtrole; publicadminfalse306312591694106 aropentaxTABLE/CREATE TABLE aropentax ( ) INHERITS (taxhist); DROP TABLE public.aropentax; publicadminfalse62018253#00 aropentaxACLREVOKE ALL ON TABLE aropentax FROM PUBLIC; REVOKE ALL ON TABLE aropentax FROM admin; GRANT ALL ON TABLE aropentax TO admin; GRANT ALL ON TABLE aropentax TO xtrole; publicadminfalse307412591694112asohistTABLE#CREATE TABLE asohist ( asohist_id integer NOT NULL, asohist_cust_id integer, asohist_itemsite_id integer, asohist_shipdate date, asohist_invcdate date, asohist_duedate date, asohist_promisedate date, asohist_ordernumber text, asohist_invcnumber text, asohist_qtyshipped numeric(18,6), asohist_unitprice numeric(16,4), asohist_unitcost numeric(16,6), asohist_billtoname text, asohist_billtoaddress1 text, asohist_billtoaddress2 text, asohist_billtoaddress3 text, asohist_billtocity text, asohist_billtostate text, asohist_billtozip text, asohist_shiptoname text, asohist_shiptoaddress1 text, asohist_shiptoaddress2 text, asohist_shiptoaddress3 text, asohist_shiptocity text, asohist_shiptostate text, asohist_shiptozip text, asohist_shipto_id integer, asohist_shipvia text, asohist_salesrep_id integer, asohist_misc_type character(1), asohist_misc_descrip text, asohist_misc_id integer, asohist_commission numeric(16,4), asohist_commissionpaid boolean, asohist_doctype text, asohist_orderdate date, asohist_imported boolean, asohist_ponumber text, asohist_curr_id integer DEFAULT basecurrid(), asohist_taxtype_id integer, asohist_taxzone_id integer ); DROP TABLE public.asohist; publicadminfalse62038#00 TABLE asohistCOMMENT6COMMENT ON TABLE asohist IS 'Archived Sales history'; publicadminfalse308#00asohistACLREVOKE ALL ON TABLE asohist FROM PUBLIC; REVOKE ALL ON TABLE asohist FROM admin; GRANT ALL ON TABLE asohist TO admin; GRANT ALL ON TABLE asohist TO xtrole; publicadminfalse308512591694119asohist_asohist_id_seqSEQUENCExCREATE SEQUENCE asohist_asohist_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.asohist_asohist_id_seq; publicadminfalse8308#00asohist_asohist_id_seqSEQUENCE OWNED BYCALTER SEQUENCE asohist_asohist_id_seq OWNED BY asohist.asohist_id; publicadminfalse309#00asohist_asohist_id_seq SEQUENCE SET>SELECT pg_catalog.setval('asohist_asohist_id_seq', 1, false); publicadminfalse309#00asohist_asohist_id_seqACLREVOKE ALL ON SEQUENCE asohist_asohist_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE asohist_asohist_id_seq FROM admin; GRANT ALL ON SEQUENCE asohist_asohist_id_seq TO admin; GRANT ALL ON SEQUENCE asohist_asohist_id_seq TO xtrole; publicadminfalse309612591694121 asohisttaxTABLE0CREATE TABLE asohisttax ( ) INHERITS (taxhist); DROP TABLE public.asohisttax; publicadminfalse62048253#00 asohisttaxACLREVOKE ALL ON TABLE asohisttax FROM PUBLIC; REVOKE ALL ON TABLE asohisttax FROM admin; GRANT ALL ON TABLE asohisttax TO admin; GRANT ALL ON TABLE asohisttax TO xtrole; publicadminfalse310712591694127atlasmapTABLErCREATE TABLE atlasmap ( atlasmap_id integer NOT NULL, atlasmap_name text NOT NULL, atlasmap_filter text NOT NULL, atlasmap_filtertype text NOT NULL, atlasmap_atlas text NOT NULL, atlasmap_map text NOT NULL, atlasmap_headerline boolean DEFAULT false NOT NULL, CONSTRAINT atlasmap_atlasmap_name_check CHECK ((atlasmap_name <> ''::text)) ); DROP TABLE public.atlasmap; publicadminfalse620662078#00TABLE atlasmapCOMMENT.COMMENT ON TABLE atlasmap IS 'Describes heuristics for finding a CSVImp atlas for a given CSV file. When looking for a CSV Atlas to use when importing a CSV file, the first atlasmap record found that matches the CSV file is used to select the Atlas file and Map in that Atlas to import the CSV file.'; publicadminfalse311#00COLUMN atlasmap.atlasmap_idCOMMENT[COMMENT ON COLUMN atlasmap.atlasmap_id IS 'The internal id of this CSVImp atlas mapping.'; publicadminfalse311#00COLUMN atlasmap.atlasmap_nameCOMMENT^COMMENT ON COLUMN atlasmap.atlasmap_name IS 'The human-readable name of this atlas mapping.'; publicadminfalse311#00COLUMN atlasmap.atlasmap_filterCOMMENTCOMMENT ON COLUMN atlasmap.atlasmap_filter IS 'A regular expression that should match the CSV file. Which part of the file that matches is determined by the filter type.'; publicadminfalse311#00#COLUMN atlasmap.atlasmap_filtertypeCOMMENT4COMMENT ON COLUMN atlasmap.atlasmap_filtertype IS 'A description of what aspect of the CSV file the filter should be compared with. Handled values are: ''filename'' - the filter is matched against the name of the file; and ''firstline'' - the filter is matched against the first line of the file contents.'; publicadminfalse311#00COLUMN atlasmap.atlasmap_atlasCOMMENTHCOMMENT ON COLUMN atlasmap.atlasmap_atlas IS 'The name of the CSVImp Atlas file. This should be a simple pathname, not an absolute or relative name if possible. The full path will be determined by concatenating the operating-system-specific CSV Atlas default directory with the value here unless this is an absolute pathname.'; publicadminfalse311#00COLUMN atlasmap.atlasmap_mapCOMMENTCOMMENT ON COLUMN atlasmap.atlasmap_map IS 'The name of the Map inside the Atlas to use if the filter and filter type match the CVS file.'; publicadminfalse311$00#COLUMN atlasmap.atlasmap_headerlineCOMMENTCOMMENT ON COLUMN atlasmap.atlasmap_headerline IS 'An indicator of whether the first line of the CSV file should be treated as a header line or as data.'; publicadminfalse311$00atlasmapACLREVOKE ALL ON TABLE atlasmap FROM PUBLIC; REVOKE ALL ON TABLE atlasmap FROM admin; GRANT ALL ON TABLE atlasmap TO admin; GRANT ALL ON TABLE atlasmap TO xtrole; publicadminfalse311812591694134atlasmap_atlasmap_id_seqSEQUENCEzCREATE SEQUENCE atlasmap_atlasmap_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.atlasmap_atlasmap_id_seq; publicadminfalse8311$00atlasmap_atlasmap_id_seqSEQUENCE OWNED BYGALTER SEQUENCE atlasmap_atlasmap_id_seq OWNED BY atlasmap.atlasmap_id; publicadminfalse312$00atlasmap_atlasmap_id_seq SEQUENCE SET@SELECT pg_catalog.setval('atlasmap_atlasmap_id_seq', 1, false); publicadminfalse312$00atlasmap_atlasmap_id_seqACLREVOKE ALL ON SEQUENCE atlasmap_atlasmap_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE atlasmap_atlasmap_id_seq FROM admin; GRANT ALL ON SEQUENCE atlasmap_atlasmap_id_seq TO admin; GRANT ALL ON SEQUENCE atlasmap_atlasmap_id_seq TO xtrole; publicadminfalse312912591694136 backup_usrTABLE2CREATE TABLE backup_usr ( usr_id integer, usr_username text, usr_propername text, usr_passwd text, usr_locale_id integer, usr_initials text, usr_agent boolean, usr_active boolean, usr_email text, usr_dept_id integer, usr_shift_id integer, usr_window text ); DROP TABLE public.backup_usr; publicadminfalse8$00 backup_usrACLREVOKE ALL ON TABLE backup_usr FROM PUBLIC; REVOKE ALL ON TABLE backup_usr FROM admin; GRANT ALL ON TABLE backup_usr TO admin; GRANT ALL ON TABLE backup_usr TO xtrole; publicadminfalse313:12591694142bankaccnt_bankaccnt_id_seqSEQUENCE|CREATE SEQUENCE bankaccnt_bankaccnt_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 1DROP SEQUENCE public.bankaccnt_bankaccnt_id_seq; publicadminfalse8202$00bankaccnt_bankaccnt_id_seqSEQUENCE OWNED BYKALTER SEQUENCE bankaccnt_bankaccnt_id_seq OWNED BY bankaccnt.bankaccnt_id; publicadminfalse314$00bankaccnt_bankaccnt_id_seq SEQUENCE SETBSELECT pg_catalog.setval('bankaccnt_bankaccnt_id_seq', 13, true); publicadminfalse314$00bankaccnt_bankaccnt_id_seqACLREVOKE ALL ON SEQUENCE bankaccnt_bankaccnt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bankaccnt_bankaccnt_id_seq FROM admin; GRANT ALL ON SEQUENCE bankaccnt_bankaccnt_id_seq TO admin; GRANT ALL ON SEQUENCE bankaccnt_bankaccnt_id_seq TO xtrole; publicadminfalse314;12591694144bankadjTABLE<CREATE TABLE bankadj ( bankadj_id integer NOT NULL, bankadj_bankaccnt_id integer NOT NULL, bankadj_bankadjtype_id integer NOT NULL, bankadj_created timestamp without time zone DEFAULT now() NOT NULL, bankadj_username text DEFAULT geteffectivextuser() NOT NULL, bankadj_date date NOT NULL, bankadj_docnumber text, bankadj_amount numeric(10,2) NOT NULL, bankadj_notes text, bankadj_sequence integer, bankadj_posted boolean DEFAULT false NOT NULL, bankadj_curr_id integer DEFAULT basecurrid(), bankadj_curr_rate numeric ); DROP TABLE public.bankadj; publicadminfalse62086209621062118 $00 TABLE bankadjCOMMENT<COMMENT ON TABLE bankadj IS 'Bank Adjustments information'; publicadminfalse315 $00bankadjACLREVOKE ALL ON TABLE bankadj FROM PUBLIC; REVOKE ALL ON TABLE bankadj FROM admin; GRANT ALL ON TABLE bankadj TO admin; GRANT ALL ON TABLE bankadj TO xtrole; publicadminfalse315<12591694154bankadj_bankadj_id_seqSEQUENCExCREATE SEQUENCE bankadj_bankadj_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.bankadj_bankadj_id_seq; publicadminfalse8315 $00bankadj_bankadj_id_seqSEQUENCE OWNED BYCALTER SEQUENCE bankadj_bankadj_id_seq OWNED BY bankadj.bankadj_id; publicadminfalse316 $00bankadj_bankadj_id_seq SEQUENCE SET>SELECT pg_catalog.setval('bankadj_bankadj_id_seq', 1, false); publicadminfalse316 $00bankadj_bankadj_id_seqACLREVOKE ALL ON SEQUENCE bankadj_bankadj_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bankadj_bankadj_id_seq FROM admin; GRANT ALL ON SEQUENCE bankadj_bankadj_id_seq TO admin; GRANT ALL ON SEQUENCE bankadj_bankadj_id_seq TO xtrole; publicadminfalse316=12591694156 bankadjtypeTABLEBCREATE TABLE bankadjtype ( bankadjtype_id integer NOT NULL, bankadjtype_name text NOT NULL, bankadjtype_descrip text, bankadjtype_accnt_id integer NOT NULL, bankadjtype_iscredit boolean DEFAULT false NOT NULL, CONSTRAINT bankadjtype_bankadjtype_name_check CHECK ((bankadjtype_name <> ''::text)) ); DROP TABLE public.bankadjtype; publicadminfalse621462158$00TABLE bankadjtypeCOMMENTECOMMENT ON TABLE bankadjtype IS 'Bank Adjustment Types information'; publicadminfalse317$00 bankadjtypeACLREVOKE ALL ON TABLE bankadjtype FROM PUBLIC; REVOKE ALL ON TABLE bankadjtype FROM admin; GRANT ALL ON TABLE bankadjtype TO admin; GRANT ALL ON TABLE bankadjtype TO xtrole; publicadminfalse317>12591694163bankadjtype_bankadjtype_id_seqSEQUENCECREATE SEQUENCE bankadjtype_bankadjtype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 5DROP SEQUENCE public.bankadjtype_bankadjtype_id_seq; publicadminfalse8317$00bankadjtype_bankadjtype_id_seqSEQUENCE OWNED BYSALTER SEQUENCE bankadjtype_bankadjtype_id_seq OWNED BY bankadjtype.bankadjtype_id; publicadminfalse318$00bankadjtype_bankadjtype_id_seq SEQUENCE SETFSELECT pg_catalog.setval('bankadjtype_bankadjtype_id_seq', 1, false); publicadminfalse318$00bankadjtype_bankadjtype_id_seqACLREVOKE ALL ON SEQUENCE bankadjtype_bankadjtype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bankadjtype_bankadjtype_id_seq FROM admin; GRANT ALL ON SEQUENCE bankadjtype_bankadjtype_id_seq TO admin; GRANT ALL ON SEQUENCE bankadjtype_bankadjtype_id_seq TO xtrole; publicadminfalse318?12591694165bankrecTABLECREATE TABLE bankrec ( bankrec_id integer NOT NULL, bankrec_created timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, bankrec_username text DEFAULT geteffectivextuser() NOT NULL, bankrec_bankaccnt_id integer, bankrec_opendate date, bankrec_enddate date, bankrec_openbal numeric(20,2), bankrec_endbal numeric(20,2), bankrec_posted boolean DEFAULT false, bankrec_postdate timestamp without time zone ); DROP TABLE public.bankrec; publicadminfalse6216621762188$00 TABLE bankrecCOMMENTCCOMMENT ON TABLE bankrec IS 'Bank Reconciliation posting history'; publicadminfalse319$00bankrecACLREVOKE ALL ON TABLE bankrec FROM PUBLIC; REVOKE ALL ON TABLE bankrec FROM admin; GRANT ALL ON TABLE bankrec TO admin; GRANT ALL ON TABLE bankrec TO xtrole; publicadminfalse319@12591694174bankrec_bankrec_id_seqSEQUENCExCREATE SEQUENCE bankrec_bankrec_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.bankrec_bankrec_id_seq; publicadminfalse8319$00bankrec_bankrec_id_seqSEQUENCE OWNED BYCALTER SEQUENCE bankrec_bankrec_id_seq OWNED BY bankrec.bankrec_id; publicadminfalse320$00bankrec_bankrec_id_seq SEQUENCE SET>SELECT pg_catalog.setval('bankrec_bankrec_id_seq', 1, false); publicadminfalse320$00bankrec_bankrec_id_seqACLREVOKE ALL ON SEQUENCE bankrec_bankrec_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bankrec_bankrec_id_seq FROM admin; GRANT ALL ON SEQUENCE bankrec_bankrec_id_seq TO admin; GRANT ALL ON SEQUENCE bankrec_bankrec_id_seq TO xtrole; publicadminfalse320A12591694176 bankrecitemTABLE3CREATE TABLE bankrecitem ( bankrecitem_id integer NOT NULL, bankrecitem_bankrec_id integer NOT NULL, bankrecitem_source text NOT NULL, bankrecitem_source_id integer NOT NULL, bankrecitem_cleared boolean DEFAULT false, bankrecitem_curr_rate numeric, bankrecitem_amount numeric ); DROP TABLE public.bankrecitem; publicadminfalse62218$00TABLE bankrecitemCOMMENTTCOMMENT ON TABLE bankrecitem IS 'Posted Bank Reconciliation Line Item information'; publicadminfalse321$00 bankrecitemACLREVOKE ALL ON TABLE bankrecitem FROM PUBLIC; REVOKE ALL ON TABLE bankrecitem FROM admin; GRANT ALL ON TABLE bankrecitem TO admin; GRANT ALL ON TABLE bankrecitem TO xtrole; publicadminfalse321B12591694183bankrecitem_bankrecitem_id_seqSEQUENCECREATE SEQUENCE bankrecitem_bankrecitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 5DROP SEQUENCE public.bankrecitem_bankrecitem_id_seq; publicadminfalse8321$00bankrecitem_bankrecitem_id_seqSEQUENCE OWNED BYSALTER SEQUENCE bankrecitem_bankrecitem_id_seq OWNED BY bankrecitem.bankrecitem_id; publicadminfalse322$00bankrecitem_bankrecitem_id_seq SEQUENCE SETFSELECT pg_catalog.setval('bankrecitem_bankrecitem_id_seq', 1, false); publicadminfalse322$00bankrecitem_bankrecitem_id_seqACLREVOKE ALL ON SEQUENCE bankrecitem_bankrecitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bankrecitem_bankrecitem_id_seq FROM admin; GRANT ALL ON SEQUENCE bankrecitem_bankrecitem_id_seq TO admin; GRANT ALL ON SEQUENCE bankrecitem_bankrecitem_id_seq TO xtrole; publicadminfalse322C12591694185bomhead_bomhead_id_seqSEQUENCECREATE SEQUENCE bomhead_bomhead_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.bomhead_bomhead_id_seq; publicadminfalse8$00bomhead_bomhead_id_seq SEQUENCE SET>SELECT pg_catalog.setval('bomhead_bomhead_id_seq', 54, true); publicadminfalse323$00bomhead_bomhead_id_seqACLREVOKE ALL ON SEQUENCE bomhead_bomhead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bomhead_bomhead_id_seq FROM admin; GRANT ALL ON SEQUENCE bomhead_bomhead_id_seq TO admin; GRANT ALL ON SEQUENCE bomhead_bomhead_id_seq TO xtrole; publicadminfalse323D12591694187bomitem_bomitem_id_seqSEQUENCECREATE SEQUENCE bomitem_bomitem_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.bomitem_bomitem_id_seq; publicadminfalse8$00bomitem_bomitem_id_seq SEQUENCE SET?SELECT pg_catalog.setval('bomitem_bomitem_id_seq', 167, true); publicadminfalse324 $00bomitem_bomitem_id_seqACLREVOKE ALL ON SEQUENCE bomitem_bomitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bomitem_bomitem_id_seq FROM admin; GRANT ALL ON SEQUENCE bomitem_bomitem_id_seq TO admin; GRANT ALL ON SEQUENCE bomitem_bomitem_id_seq TO xtrole; publicadminfalse324E12591694189 bomitemcostTABLECREATE TABLE bomitemcost ( bomitemcost_id integer NOT NULL, bomitemcost_bomitem_id integer NOT NULL, bomitemcost_costelem_id integer NOT NULL, bomitemcost_lowlevel boolean DEFAULT false NOT NULL, bomitemcost_stdcost numeric(16,6) DEFAULT 0 NOT NULL, bomitemcost_posted date, bomitemcost_actcost numeric(16,6) DEFAULT 0 NOT NULL, bomitemcost_updated date, bomitemcost_curr_id integer DEFAULT basecurrid() NOT NULL ); DROP TABLE public.bomitemcost; publicadminfalse62226223622462258!$00TABLE bomitemcostCOMMENT<COMMENT ON TABLE bomitemcost IS 'Bomitem Cost information'; publicadminfalse325"$00 bomitemcostACLREVOKE ALL ON TABLE bomitemcost FROM PUBLIC; REVOKE ALL ON TABLE bomitemcost FROM admin; GRANT ALL ON TABLE bomitemcost TO admin; GRANT ALL ON TABLE bomitemcost TO xtrole; publicadminfalse325F12591694196bomitemcost_bomitemcost_id_seqSEQUENCECREATE SEQUENCE bomitemcost_bomitemcost_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 5DROP SEQUENCE public.bomitemcost_bomitemcost_id_seq; publicadminfalse8325#$00bomitemcost_bomitemcost_id_seqSEQUENCE OWNED BYSALTER SEQUENCE bomitemcost_bomitemcost_id_seq OWNED BY bomitemcost.bomitemcost_id; publicadminfalse326$$00bomitemcost_bomitemcost_id_seq SEQUENCE SETFSELECT pg_catalog.setval('bomitemcost_bomitemcost_id_seq', 1, false); publicadminfalse326%$00bomitemcost_bomitemcost_id_seqACLREVOKE ALL ON SEQUENCE bomitemcost_bomitemcost_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bomitemcost_bomitemcost_id_seq FROM admin; GRANT ALL ON SEQUENCE bomitemcost_bomitemcost_id_seq TO admin; GRANT ALL ON SEQUENCE bomitemcost_bomitemcost_id_seq TO xtrole; publicadminfalse326G12591694198bomitemsub_bomitemsub_id_seqSEQUENCE~CREATE SEQUENCE bomitemsub_bomitemsub_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 3DROP SEQUENCE public.bomitemsub_bomitemsub_id_seq; publicadminfalse8197&$00bomitemsub_bomitemsub_id_seqSEQUENCE OWNED BYOALTER SEQUENCE bomitemsub_bomitemsub_id_seq OWNED BY bomitemsub.bomitemsub_id; publicadminfalse327'$00bomitemsub_bomitemsub_id_seq SEQUENCE SETDSELECT pg_catalog.setval('bomitemsub_bomitemsub_id_seq', 1, false); publicadminfalse327($00bomitemsub_bomitemsub_id_seqACLREVOKE ALL ON SEQUENCE bomitemsub_bomitemsub_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bomitemsub_bomitemsub_id_seq FROM admin; GRANT ALL ON SEQUENCE bomitemsub_bomitemsub_id_seq TO admin; GRANT ALL ON SEQUENCE bomitemsub_bomitemsub_id_seq TO xtrole; publicadminfalse327H12591694200bomworkTABLEFCREATE TABLE bomwork ( bomwork_id integer NOT NULL, bomwork_set_id integer, bomwork_seqnumber integer, bomwork_item_id integer, bomwork_item_type character(1), bomwork_qtyper numeric(20,8), bomwork_scrap numeric(20,10), bomwork_status character(1), bomwork_level integer, bomwork_parent_id integer, bomwork_effective date, bomwork_expires date, bomwork_stdunitcost numeric(16,6), bomwork_actunitcost numeric(16,6), bomwork_parent_seqnumber integer, bomwork_createwo boolean, bomwork_issuemethod character(1), bomwork_char_id integer, bomwork_value text, bomwork_notes text, bomwork_ref text, bomwork_bomitem_id integer, bomwork_ecn text, bomwork_qtyfxd numeric(20,8) DEFAULT 0 NOT NULL, bomwork_qtyreq numeric(20,8) DEFAULT 0 NOT NULL ); DROP TABLE public.bomwork; publicadminfalse622862298)$00 TABLE bomworkCOMMENTCOMMENT ON TABLE bomwork IS 'Temporary table for storing information requested by Bill of Materials (BOM) displays and reports'; publicadminfalse328*$00COLUMN bomwork.bomwork_qtyfxdCOMMENTKCOMMENT ON COLUMN bomwork.bomwork_qtyfxd IS 'The fixed quantity required'; publicadminfalse328+$00COLUMN bomwork.bomwork_qtyreqCOMMENTKCOMMENT ON COLUMN bomwork.bomwork_qtyreq IS 'The total quantity required'; publicadminfalse328,$00bomworkACLREVOKE ALL ON TABLE bomwork FROM PUBLIC; REVOKE ALL ON TABLE bomwork FROM admin; GRANT ALL ON TABLE bomwork TO admin; GRANT ALL ON TABLE bomwork TO xtrole; publicadminfalse328I12591694208bomwork_bomwork_id_seqSEQUENCExCREATE SEQUENCE bomwork_bomwork_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.bomwork_bomwork_id_seq; publicadminfalse8328-$00bomwork_bomwork_id_seqSEQUENCE OWNED BYCALTER SEQUENCE bomwork_bomwork_id_seq OWNED BY bomwork.bomwork_id; publicadminfalse329.$00bomwork_bomwork_id_seq SEQUENCE SET>SELECT pg_catalog.setval('bomwork_bomwork_id_seq', 1, false); publicadminfalse329/$00bomwork_bomwork_id_seqACLREVOKE ALL ON SEQUENCE bomwork_bomwork_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE bomwork_bomwork_id_seq FROM admin; GRANT ALL ON SEQUENCE bomwork_bomwork_id_seq TO admin; GRANT ALL ON SEQUENCE bomwork_bomwork_id_seq TO xtrole; publicadminfalse329E12592009402budgetVIEWCREATE VIEW budget AS SELECT budgitem.budgitem_id AS budget_id, budgitem.budgitem_period_id AS budget_period_id, budgitem.budgitem_accnt_id AS budget_accnt_id, budgitem.budgitem_amount AS budget_amount FROM budgitem; DROP VIEW public.budget; publicadminfalse553380$00budgetACLREVOKE ALL ON TABLE budget FROM PUBLIC; REVOKE ALL ON TABLE budget FROM admin; GRANT ALL ON TABLE budget TO admin; GRANT ALL ON TABLE budget TO xtrole; publicadminfalse837J12591694214budghead_budghead_id_seqSEQUENCEzCREATE SEQUENCE budghead_budghead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.budghead_budghead_id_seq; publicadminfalse81981$00budghead_budghead_id_seqSEQUENCE OWNED BYGALTER SEQUENCE budghead_budghead_id_seq OWNED BY budghead.budghead_id; publicadminfalse3302$00budghead_budghead_id_seq SEQUENCE SET?SELECT pg_catalog.setval('budghead_budghead_id_seq', 2, true); publicadminfalse3303$00budghead_budghead_id_seqACLREVOKE ALL ON SEQUENCE budghead_budghead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE budghead_budghead_id_seq FROM admin; GRANT ALL ON SEQUENCE budghead_budghead_id_seq TO admin; GRANT ALL ON SEQUENCE budghead_budghead_id_seq TO xtrole; publicadminfalse330K12591694216budgitem_budgitem_id_seqSEQUENCEzCREATE SEQUENCE budgitem_budgitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.budgitem_budgitem_id_seq; publicadminfalse82004$00budgitem_budgitem_id_seqSEQUENCE OWNED BYGALTER SEQUENCE budgitem_budgitem_id_seq OWNED BY budgitem.budgitem_id; publicadminfalse3315$00budgitem_budgitem_id_seq SEQUENCE SET?SELECT pg_catalog.setval('budgitem_budgitem_id_seq', 1, true); publicadminfalse3316$00budgitem_budgitem_id_seqACLREVOKE ALL ON SEQUENCE budgitem_budgitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE budgitem_budgitem_id_seq FROM admin; GRANT ALL ON SEQUENCE budgitem_budgitem_id_seq TO admin; GRANT ALL ON SEQUENCE budgitem_budgitem_id_seq TO xtrole; publicadminfalse331L12591694218calheadTABLE@CREATE TABLE calhead ( calhead_id integer DEFAULT nextval(('"calhead_calhead_id_seq"'::text)::regclass) NOT NULL, calhead_type character(1), calhead_name text NOT NULL, calhead_descrip text, calhead_origin character(1), CONSTRAINT calhead_calhead_name_check CHECK ((calhead_name <> ''::text)) ); DROP TABLE public.calhead; publicadminfalse6230623187$00 TABLE calheadCOMMENT;COMMENT ON TABLE calhead IS 'Calendar header information'; publicadminfalse3328$00calheadACLREVOKE ALL ON TABLE calhead FROM PUBLIC; REVOKE ALL ON TABLE calhead FROM admin; GRANT ALL ON TABLE calhead TO admin; GRANT ALL ON TABLE calhead TO xtrole; publicadminfalse332M12591694225calhead_calhead_id_seqSEQUENCECREATE SEQUENCE calhead_calhead_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.calhead_calhead_id_seq; publicadminfalse89$00calhead_calhead_id_seq SEQUENCE SET>SELECT pg_catalog.setval('calhead_calhead_id_seq', 48, true); publicadminfalse333:$00calhead_calhead_id_seqACLREVOKE ALL ON SEQUENCE calhead_calhead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE calhead_calhead_id_seq FROM admin; GRANT ALL ON SEQUENCE calhead_calhead_id_seq TO admin; GRANT ALL ON SEQUENCE calhead_calhead_id_seq TO xtrole; publicadminfalse333N12591694227carrier_carrier_id_seqSEQUENCECREATE SEQUENCE carrier_carrier_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.carrier_carrier_id_seq; publicadminfalse8;$00carrier_carrier_id_seq SEQUENCE SET>SELECT pg_catalog.setval('carrier_carrier_id_seq', 15, true); publicadminfalse334<$00carrier_carrier_id_seqACLREVOKE ALL ON SEQUENCE carrier_carrier_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE carrier_carrier_id_seq FROM admin; GRANT ALL ON SEQUENCE carrier_carrier_id_seq TO admin; GRANT ALL ON SEQUENCE carrier_carrier_id_seq TO xtrole; publicadminfalse334O12591694229cashrcpt_cashrcpt_id_seqSEQUENCEzCREATE SEQUENCE cashrcpt_cashrcpt_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.cashrcpt_cashrcpt_id_seq; publicadminfalse8203=$00cashrcpt_cashrcpt_id_seqSEQUENCE OWNED BYGALTER SEQUENCE cashrcpt_cashrcpt_id_seq OWNED BY cashrcpt.cashrcpt_id; publicadminfalse335>$00cashrcpt_cashrcpt_id_seq SEQUENCE SETASELECT pg_catalog.setval('cashrcpt_cashrcpt_id_seq', 112, true); publicadminfalse335?$00cashrcpt_cashrcpt_id_seqACLREVOKE ALL ON SEQUENCE cashrcpt_cashrcpt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cashrcpt_cashrcpt_id_seq FROM admin; GRANT ALL ON SEQUENCE cashrcpt_cashrcpt_id_seq TO admin; GRANT ALL ON SEQUENCE cashrcpt_cashrcpt_id_seq TO xtrole; publicadminfalse335P12591694231 cashrcptmisc_cashrcptmisc_id_seqSEQUENCECREATE SEQUENCE cashrcptmisc_cashrcptmisc_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 7DROP SEQUENCE public.cashrcptmisc_cashrcptmisc_id_seq; publicadminfalse8205@$00 cashrcptmisc_cashrcptmisc_id_seqSEQUENCE OWNED BYWALTER SEQUENCE cashrcptmisc_cashrcptmisc_id_seq OWNED BY cashrcptmisc.cashrcptmisc_id; publicadminfalse336A$00 cashrcptmisc_cashrcptmisc_id_seq SEQUENCE SETHSELECT pg_catalog.setval('cashrcptmisc_cashrcptmisc_id_seq', 26, true); publicadminfalse336B$00 cashrcptmisc_cashrcptmisc_id_seqACL REVOKE ALL ON SEQUENCE cashrcptmisc_cashrcptmisc_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cashrcptmisc_cashrcptmisc_id_seq FROM admin; GRANT ALL ON SEQUENCE cashrcptmisc_cashrcptmisc_id_seq TO admin; GRANT ALL ON SEQUENCE cashrcptmisc_cashrcptmisc_id_seq TO xtrole; publicadminfalse336Q12591694233ccard_ccard_id_seqSEQUENCEtCREATE SEQUENCE ccard_ccard_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; )DROP SEQUENCE public.ccard_ccard_id_seq; publicadminfalse8206C$00ccard_ccard_id_seqSEQUENCE OWNED BY;ALTER SEQUENCE ccard_ccard_id_seq OWNED BY ccard.ccard_id; publicadminfalse337D$00ccard_ccard_id_seq SEQUENCE SET:SELECT pg_catalog.setval('ccard_ccard_id_seq', 1, false); publicadminfalse337E$00ccard_ccard_id_seqACLREVOKE ALL ON SEQUENCE ccard_ccard_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ccard_ccard_id_seq FROM admin; GRANT ALL ON SEQUENCE ccard_ccard_id_seq TO admin; GRANT ALL ON SEQUENCE ccard_ccard_id_seq TO xtrole; publicadminfalse337R12591694235ccardaudTABLECREATE TABLE ccardaud ( ccardaud_id integer NOT NULL, ccardaud_ccard_id integer, ccardaud_ccard_seq_old integer, ccardaud_ccard_seq_new integer, ccardaud_ccard_cust_id_old integer, ccardaud_ccard_cust_id_new integer, ccardaud_ccard_active_old boolean, ccardaud_ccard_active_new boolean, ccardaud_ccard_name_old bytea, ccardaud_ccard_name_new bytea, ccardaud_ccard_address1_old bytea, ccardaud_ccard_address1_new bytea, ccardaud_ccard_address2_old bytea, ccardaud_ccard_address2_new bytea, ccardaud_ccard_city_old bytea, ccardaud_ccard_city_new bytea, ccardaud_ccard_state_old bytea, ccardaud_ccard_state_new bytea, ccardaud_ccard_zip_old bytea, ccardaud_ccard_zip_new bytea, ccardaud_ccard_country_old bytea, ccardaud_ccard_country_new bytea, ccardaud_ccard_number_old bytea, ccardaud_ccard_number_new bytea, ccardaud_ccard_debit_old boolean, ccardaud_ccard_debit_new boolean, ccardaud_ccard_month_expired_old bytea, ccardaud_ccard_month_expired_new bytea, ccardaud_ccard_year_expired_old bytea, ccardaud_ccard_year_expired_new bytea, ccardaud_ccard_type_old character(1), ccardaud_ccard_type_new character(1), ccardaud_ccard_last_updated timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, ccardaud_ccard_last_updated_by_username text DEFAULT geteffectivextuser() NOT NULL ); DROP TABLE public.ccardaud; publicadminfalse623362348F$00TABLE ccardaudCOMMENTFCOMMENT ON TABLE ccardaud IS 'Credit Card Information tracking data'; publicadminfalse338G$00ccardaudACLREVOKE ALL ON TABLE ccardaud FROM PUBLIC; REVOKE ALL ON TABLE ccardaud FROM admin; GRANT ALL ON TABLE ccardaud TO admin; GRANT ALL ON TABLE ccardaud TO xtrole; publicadminfalse338S12591694243ccardaud_ccardaud_id_seqSEQUENCEzCREATE SEQUENCE ccardaud_ccardaud_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.ccardaud_ccardaud_id_seq; publicadminfalse8338H$00ccardaud_ccardaud_id_seqSEQUENCE OWNED BYGALTER SEQUENCE ccardaud_ccardaud_id_seq OWNED BY ccardaud.ccardaud_id; publicadminfalse339I$00ccardaud_ccardaud_id_seq SEQUENCE SET@SELECT pg_catalog.setval('ccardaud_ccardaud_id_seq', 1, false); publicadminfalse339J$00ccardaud_ccardaud_id_seqACLREVOKE ALL ON SEQUENCE ccardaud_ccardaud_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ccardaud_ccardaud_id_seq FROM admin; GRANT ALL ON SEQUENCE ccardaud_ccardaud_id_seq TO admin; GRANT ALL ON SEQUENCE ccardaud_ccardaud_id_seq TO xtrole; publicadminfalse339T12591694245ccbankTABLECREATE TABLE ccbank ( ccbank_id integer NOT NULL, ccbank_ccard_type text NOT NULL, ccbank_bankaccnt_id integer, CONSTRAINT ccbank_ccbank_ccard_type_check CHECK ((ccbank_ccard_type = ANY (ARRAY['A'::text, 'D'::text, 'M'::text, 'P'::text, 'V'::text]))) ); DROP TABLE public.ccbank; publicadminfalse62368K$00ccbankACLREVOKE ALL ON TABLE ccbank FROM PUBLIC; REVOKE ALL ON TABLE ccbank FROM admin; GRANT ALL ON TABLE ccbank TO admin; GRANT ALL ON TABLE ccbank TO xtrole; publicadminfalse340U12591694252ccbank_ccbank_id_seqSEQUENCEvCREATE SEQUENCE ccbank_ccbank_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.ccbank_ccbank_id_seq; publicadminfalse8340L$00ccbank_ccbank_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE ccbank_ccbank_id_seq OWNED BY ccbank.ccbank_id; publicadminfalse341M$00ccbank_ccbank_id_seq SEQUENCE SET;SELECT pg_catalog.setval('ccbank_ccbank_id_seq', 5, true); publicadminfalse341N$00ccbank_ccbank_id_seqACLREVOKE ALL ON SEQUENCE ccbank_ccbank_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ccbank_ccbank_id_seq FROM admin; GRANT ALL ON SEQUENCE ccbank_ccbank_id_seq TO admin; GRANT ALL ON SEQUENCE ccbank_ccbank_id_seq TO xtrole; publicadminfalse341V12591694254ccpayTABLECREATE TABLE ccpay ( ccpay_id integer NOT NULL, ccpay_ccard_id integer, ccpay_cust_id integer, ccpay_amount numeric(20,2) DEFAULT 0.00 NOT NULL, ccpay_auth boolean DEFAULT true NOT NULL, ccpay_status character(1) NOT NULL, ccpay_type character(1) NOT NULL, ccpay_auth_charge character(1) NOT NULL, ccpay_order_number text, ccpay_order_number_seq integer, ccpay_r_avs text, ccpay_r_ordernum text, ccpay_r_error text, ccpay_r_approved text, ccpay_r_code text, ccpay_r_message text, ccpay_yp_r_time timestamp without time zone, ccpay_r_ref text, ccpay_yp_r_tdate text, ccpay_r_tax text, ccpay_r_shipping text, ccpay_yp_r_score integer, ccpay_transaction_datetime timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, ccpay_by_username text DEFAULT geteffectivextuser() NOT NULL, ccpay_curr_id integer DEFAULT basecurrid(), ccpay_ccpay_id integer ); DROP TABLE public.ccpay; publicadminfalse623762386239624062418O$00 TABLE ccpayCOMMENT<COMMENT ON TABLE ccpay IS 'Track Credit Card PAYments, although really this table tracs communications with Credit Card processing companies. Records in this table may progress from preauthorizations through captures to credits, or they may simply remain in their original state if there is no further processing.'; publicadminfalse342P$00COLUMN ccpay.ccpay_idCOMMENTICOMMENT ON COLUMN ccpay.ccpay_id IS 'Internal ID of this ccpay record.'; publicadminfalse342Q$00COLUMN ccpay.ccpay_ccard_idCOMMENTgCOMMENT ON COLUMN ccpay.ccpay_ccard_id IS 'Internal ID of the Credit Card used for this transaction.'; publicadminfalse342R$00COLUMN ccpay.ccpay_cust_idCOMMENT_COMMENT ON COLUMN ccpay.ccpay_cust_id IS 'Internal ID of the Customer owning the Credit Card'; publicadminfalse342S$00COLUMN ccpay.ccpay_amountCOMMENTNCOMMENT ON COLUMN ccpay.ccpay_amount IS 'Actual amount of this transaction.'; publicadminfalse342T$00COLUMN ccpay.ccpay_authCOMMENTCOMMENT ON COLUMN ccpay.ccpay_auth IS 'Boolean indicator of whether this transaction started out as a pre-authorization or not.'; publicadminfalse342U$00COLUMN ccpay.ccpay_statusCOMMENTCOMMENT ON COLUMN ccpay.ccpay_status IS 'The status of the last attempted transaction for this record. Values include A = Authorized, C = Charged, D = Declined or otherwise rejected, V = Voided, X = Error.'; publicadminfalse342V$00COLUMN ccpay.ccpay_typeCOMMENTCOMMENT ON COLUMN ccpay.ccpay_type IS 'The most recent type of transaction attempted with this record. Values include A = Authorize, C = Capture or Charge, R = cRedit, V = reVerse or Void.'; publicadminfalse342W$00COLUMN ccpay.ccpay_auth_chargeCOMMENTCOMMENT ON COLUMN ccpay.ccpay_auth_charge IS 'The original type of transaction attempted with this record. Values are the same as for ccpay_type.'; publicadminfalse342X$00COLUMN ccpay.ccpay_order_numberCOMMENTCOMMENT ON COLUMN ccpay.ccpay_order_number IS 'The original xTuple ERP order for which this credit card transaction applies. This will usually be either a Sales Order number or Credit Memo number.'; publicadminfalse342Y$00#COLUMN ccpay.ccpay_order_number_seqCOMMENTCOMMENT ON COLUMN ccpay.ccpay_order_number_seq IS 'A sequence number to differentiate between different transactions for the same ccpay_order_number. For example, if a Customer makes a down payment and a final payment for a single order, there will be two distinct ccpay records with the same ccpay_order_number but different ccpay_order_number_seq values (1 and 2, respectively).'; publicadminfalse342Z$00COLUMN ccpay.ccpay_r_avsCOMMENTCOMMENT ON COLUMN ccpay.ccpay_r_avs IS 'The Address Verification System code returned by the credit card processing company.'; publicadminfalse342[$00COLUMN ccpay.ccpay_r_ordernumCOMMENTCOMMENT ON COLUMN ccpay.ccpay_r_ordernum IS 'A transaction ID returned by the credit card processing company to be used when referring to this transaction later. It may be used for voiding, crediting, or capturing previous transactions.'; publicadminfalse342\$00COLUMN ccpay.ccpay_r_errorCOMMENTCOMMENT ON COLUMN ccpay.ccpay_r_error IS 'Error message, if any, describing why this record failed to be processed properly.'; publicadminfalse342]$00COLUMN ccpay.ccpay_r_approvedCOMMENTCOMMENT ON COLUMN ccpay.ccpay_r_approved IS 'English text stating whether the transaction was approved, declined, hit an error, or was held for review. Specific values differ depending on the credit card processor.'; publicadminfalse342^$00COLUMN ccpay.ccpay_r_codeCOMMENTCOMMENT ON COLUMN ccpay.ccpay_r_code IS 'The transaction Approval code returned by the credit card processor. Specific values differ depending on the credit card processor.'; publicadminfalse342_$00COLUMN ccpay.ccpay_r_messageCOMMENTCOMMENT ON COLUMN ccpay.ccpay_r_message IS 'Additional text that describes the status of the transaction. This may be empty.'; publicadminfalse342`$00COLUMN ccpay.ccpay_yp_r_timeCOMMENTCOMMENT ON COLUMN ccpay.ccpay_yp_r_time IS 'The time the transaction was posted according to the credit card processing company. May be blank.'; publicadminfalse342a$00COLUMN ccpay.ccpay_r_refCOMMENTCOMMENT ON COLUMN ccpay.ccpay_r_ref IS 'An additional reference number assigned to this transaction by the credit card processing company.'; publicadminfalse342b$00COLUMN ccpay.ccpay_yp_r_tdateCOMMENTCOMMENT ON COLUMN ccpay.ccpay_yp_r_tdate IS 'The date the transaction was posted according to the credit card processing company. May be blank.'; publicadminfalse342c$00COLUMN ccpay.ccpay_r_taxCOMMENT9COMMENT ON COLUMN ccpay.ccpay_r_tax IS '[ deprecated ]'; publicadminfalse342d$00COLUMN ccpay.ccpay_r_shippingCOMMENT>COMMENT ON COLUMN ccpay.ccpay_r_shipping IS '[ deprecated ]'; publicadminfalse342e$00COLUMN ccpay.ccpay_yp_r_scoreCOMMENTzCOMMENT ON COLUMN ccpay.ccpay_yp_r_score IS 'A potential fraud score returned by the credit card company. May be blank.'; publicadminfalse342f$00'COLUMN ccpay.ccpay_transaction_datetimeCOMMENTCOMMENT ON COLUMN ccpay.ccpay_transaction_datetime IS 'The date and time this record was created, unless explicitly set by the application.'; publicadminfalse342g$00COLUMN ccpay.ccpay_by_usernameCOMMENT|COMMENT ON COLUMN ccpay.ccpay_by_username IS 'The user who created this record, unless explicitly set by the application.'; publicadminfalse342h$00COLUMN ccpay.ccpay_curr_idCOMMENTaCOMMENT ON COLUMN ccpay.ccpay_curr_id IS 'The internal ID of the currency of the ccpay_amount.'; publicadminfalse342i$00COLUMN ccpay.ccpay_ccpay_idCOMMENTCOMMENT ON COLUMN ccpay.ccpay_ccpay_id IS 'Foreign key to another ccpay record. This will have a value if a new ccpay record is created to record a Refund for part or all of another ccpay record.'; publicadminfalse342j$00ccpayACLREVOKE ALL ON TABLE ccpay FROM PUBLIC; REVOKE ALL ON TABLE ccpay FROM admin; GRANT ALL ON TABLE ccpay TO admin; GRANT ALL ON TABLE ccpay TO xtrole; publicadminfalse342W12591694265ccpay_ccpay_id_seqSEQUENCEtCREATE SEQUENCE ccpay_ccpay_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; )DROP SEQUENCE public.ccpay_ccpay_id_seq; publicadminfalse8342k$00ccpay_ccpay_id_seqSEQUENCE OWNED BY;ALTER SEQUENCE ccpay_ccpay_id_seq OWNED BY ccpay.ccpay_id; publicadminfalse343l$00ccpay_ccpay_id_seq SEQUENCE SET:SELECT pg_catalog.setval('ccpay_ccpay_id_seq', 1, false); publicadminfalse343m$00ccpay_ccpay_id_seqACLREVOKE ALL ON SEQUENCE ccpay_ccpay_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ccpay_ccpay_id_seq FROM admin; GRANT ALL ON SEQUENCE ccpay_ccpay_id_seq TO admin; GRANT ALL ON SEQUENCE ccpay_ccpay_id_seq TO xtrole; publicadminfalse343X12591694267char_char_id_seqSEQUENCErCREATE SEQUENCE char_char_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 'DROP SEQUENCE public.char_char_id_seq; publicadminfalse8185n$00char_char_id_seqSEQUENCE OWNED BY9ALTER SEQUENCE char_char_id_seq OWNED BY "char".char_id; publicadminfalse344o$00char_char_id_seq SEQUENCE SET8SELECT pg_catalog.setval('char_char_id_seq', 15, true); publicadminfalse344p$00char_char_id_seqACLREVOKE ALL ON SEQUENCE char_char_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE char_char_id_seq FROM admin; GRANT ALL ON SEQUENCE char_char_id_seq TO admin; GRANT ALL ON SEQUENCE char_char_id_seq TO xtrole; publicadminfalse344Y12591694269charass_charass_id_seqSEQUENCExCREATE SEQUENCE charass_charass_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.charass_charass_id_seq; publicadminfalse8186q$00charass_charass_id_seqSEQUENCE OWNED BYCALTER SEQUENCE charass_charass_id_seq OWNED BY charass.charass_id; publicadminfalse345r$00charass_charass_id_seq SEQUENCE SET>SELECT pg_catalog.setval('charass_charass_id_seq', 1, false); publicadminfalse345s$00charass_charass_id_seqACLREVOKE ALL ON SEQUENCE charass_charass_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE charass_charass_id_seq FROM admin; GRANT ALL ON SEQUENCE charass_charass_id_seq TO admin; GRANT ALL ON SEQUENCE charass_charass_id_seq TO xtrole; publicadminfalse345Z12591694271charoptTABLECREATE TABLE charopt ( charopt_id integer NOT NULL, charopt_char_id integer, charopt_value text NOT NULL, charopt_order integer DEFAULT 0 NOT NULL ); DROP TABLE public.charopt; publicadminfalse62448t$00 TABLE charoptCOMMENTGCOMMENT ON TABLE charopt IS 'Stores list options for characteristics'; publicadminfalse346u$00COLUMN charopt.charopt_idCOMMENT7COMMENT ON COLUMN charopt.charopt_id IS 'Primary key'; publicadminfalse346v$00COLUMN charopt.charopt_char_idCOMMENTHCOMMENT ON COLUMN charopt.charopt_char_id IS 'Reference to char table'; publicadminfalse346w$00COLUMN charopt.charopt_valueCOMMENT;COMMENT ON COLUMN charopt.charopt_value IS 'Option value'; publicadminfalse346x$00COLUMN charopt.charopt_orderCOMMENT@COMMENT ON COLUMN charopt.charopt_order IS 'Option sort order'; publicadminfalse346y$00charoptACLREVOKE ALL ON TABLE charopt FROM PUBLIC; REVOKE ALL ON TABLE charopt FROM admin; GRANT ALL ON TABLE charopt TO admin; GRANT ALL ON TABLE charopt TO xtrole; publicadminfalse346[12591694278charopt_charopt_id_seqSEQUENCExCREATE SEQUENCE charopt_charopt_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.charopt_charopt_id_seq; publicadminfalse8346z$00charopt_charopt_id_seqSEQUENCE OWNED BYCALTER SEQUENCE charopt_charopt_id_seq OWNED BY charopt.charopt_id; publicadminfalse347{$00charopt_charopt_id_seq SEQUENCE SET=SELECT pg_catalog.setval('charopt_charopt_id_seq', 3, true); publicadminfalse347|$00charopt_charopt_id_seqACLREVOKE ALL ON SEQUENCE charopt_charopt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE charopt_charopt_id_seq FROM admin; GRANT ALL ON SEQUENCE charopt_charopt_id_seq TO admin; GRANT ALL ON SEQUENCE charopt_charopt_id_seq TO xtrole; publicadminfalse347]12591694296checkhead_checkhead_id_seqSEQUENCE|CREATE SEQUENCE checkhead_checkhead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 1DROP SEQUENCE public.checkhead_checkhead_id_seq; publicadminfalse8348}$00checkhead_checkhead_id_seqSEQUENCE OWNED BYKALTER SEQUENCE checkhead_checkhead_id_seq OWNED BY checkhead.checkhead_id; publicadminfalse349~$00checkhead_checkhead_id_seq SEQUENCE SETBSELECT pg_catalog.setval('checkhead_checkhead_id_seq', 1, false); publicadminfalse349$00checkhead_checkhead_id_seqACLREVOKE ALL ON SEQUENCE checkhead_checkhead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE checkhead_checkhead_id_seq FROM admin; GRANT ALL ON SEQUENCE checkhead_checkhead_id_seq TO admin; GRANT ALL ON SEQUENCE checkhead_checkhead_id_seq TO xtrole; publicadminfalse349_12591694308checkitem_checkitem_id_seqSEQUENCE|CREATE SEQUENCE checkitem_checkitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 1DROP SEQUENCE public.checkitem_checkitem_id_seq; publicadminfalse8350$00checkitem_checkitem_id_seqSEQUENCE OWNED BYKALTER SEQUENCE checkitem_checkitem_id_seq OWNED BY checkitem.checkitem_id; publicadminfalse351$00checkitem_checkitem_id_seq SEQUENCE SETBSELECT pg_catalog.setval('checkitem_checkitem_id_seq', 1, false); publicadminfalse351$00checkitem_checkitem_id_seqACLREVOKE ALL ON SEQUENCE checkitem_checkitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE checkitem_checkitem_id_seq FROM admin; GRANT ALL ON SEQUENCE checkitem_checkitem_id_seq TO admin; GRANT ALL ON SEQUENCE checkitem_checkitem_id_seq TO xtrole; publicadminfalse351F12592009406 checkrecipVIEWCREATE VIEW checkrecip AS (SELECT custinfo.cust_id AS checkrecip_id, 'C' AS checkrecip_type, custinfo.cust_number AS checkrecip_number, custinfo.cust_name AS checkrecip_name, 'A/R' AS checkrecip_gltrans_source, findaraccount(custinfo.cust_id) AS checkrecip_accnt_id, cntct.cntct_addr_id AS checkrecip_addr_id FROM (custinfo LEFT JOIN cntct ON ((custinfo.cust_cntct_id = cntct.cntct_id))) UNION ALL SELECT taxauth.taxauth_id AS checkrecip_id, 'T' AS checkrecip_type, taxauth.taxauth_code AS checkrecip_number, taxauth.taxauth_name AS checkrecip_name, 'G/L' AS checkrecip_gltrans_source, taxauth.taxauth_accnt_id AS checkrecip_accnt_id, taxauth.taxauth_addr_id AS checkrecip_addr_id FROM taxauth) UNION ALL SELECT vendinfo.vend_id AS checkrecip_id, 'V' AS checkrecip_type, vendinfo.vend_number AS checkrecip_number, vendinfo.vend_name AS checkrecip_name, 'A/P' AS checkrecip_gltrans_source, findapaccount(vendinfo.vend_id) AS checkrecip_accnt_id, vendaddrinfo.vendaddr_addr_id AS checkrecip_addr_id FROM (vendinfo LEFT JOIN vendaddrinfo ON (((vendinfo.vend_id = vendaddrinfo.vendaddr_vend_id) AND (upper(vendaddrinfo.vendaddr_code) = 'REMIT'::text)))); DROP VIEW public.checkrecip; publicadminfalse55348$00 checkrecipACLREVOKE ALL ON TABLE checkrecip FROM PUBLIC; REVOKE ALL ON TABLE checkrecip FROM admin; GRANT ALL ON TABLE checkrecip TO admin; GRANT ALL ON TABLE checkrecip TO xtrole; publicadminfalse838`12591694315classcode_classcode_id_seqSEQUENCECREATE SEQUENCE classcode_classcode_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; 1DROP SEQUENCE public.classcode_classcode_id_seq; publicadminfalse8$00classcode_classcode_id_seq SEQUENCE SETBSELECT pg_catalog.setval('classcode_classcode_id_seq', 36, true); publicadminfalse352$00classcode_classcode_id_seqACLREVOKE ALL ON SEQUENCE classcode_classcode_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE classcode_classcode_id_seq FROM admin; GRANT ALL ON SEQUENCE classcode_classcode_id_seq TO admin; GRANT ALL ON SEQUENCE classcode_classcode_id_seq TO xtrole; publicadminfalse352a12591694317cmhead_cmhead_id_seqSEQUENCE~CREATE SEQUENCE cmhead_cmhead_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; +DROP SEQUENCE public.cmhead_cmhead_id_seq; publicadminfalse8$00cmhead_cmhead_id_seq SEQUENCE SET=SELECT pg_catalog.setval('cmhead_cmhead_id_seq', 206, true); publicadminfalse353$00cmhead_cmhead_id_seqACLREVOKE ALL ON SEQUENCE cmhead_cmhead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cmhead_cmhead_id_seq FROM admin; GRANT ALL ON SEQUENCE cmhead_cmhead_id_seq TO admin; GRANT ALL ON SEQUENCE cmhead_cmhead_id_seq TO xtrole; publicadminfalse353b12591694319 cmheadtaxTABLE/CREATE TABLE cmheadtax ( ) INHERITS (taxhist); DROP TABLE public.cmheadtax; publicadminfalse62618253$00 cmheadtaxACLREVOKE ALL ON TABLE cmheadtax FROM PUBLIC; REVOKE ALL ON TABLE cmheadtax FROM admin; GRANT ALL ON TABLE cmheadtax TO admin; GRANT ALL ON TABLE cmheadtax TO xtrole; publicadminfalse354c12591694325cmitem_cmitem_id_seqSEQUENCE~CREATE SEQUENCE cmitem_cmitem_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; +DROP SEQUENCE public.cmitem_cmitem_id_seq; publicadminfalse8$00cmitem_cmitem_id_seq SEQUENCE SET<SELECT pg_catalog.setval('cmitem_cmitem_id_seq', 83, true); publicadminfalse355$00cmitem_cmitem_id_seqACLREVOKE ALL ON SEQUENCE cmitem_cmitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cmitem_cmitem_id_seq FROM admin; GRANT ALL ON SEQUENCE cmitem_cmitem_id_seq TO admin; GRANT ALL ON SEQUENCE cmitem_cmitem_id_seq TO xtrole; publicadminfalse355d12591694327 cmitemtaxTABLE/CREATE TABLE cmitemtax ( ) INHERITS (taxhist); DROP TABLE public.cmitemtax; publicadminfalse62628253$00 cmitemtaxACLREVOKE ALL ON TABLE cmitemtax FROM PUBLIC; REVOKE ALL ON TABLE cmitemtax FROM admin; GRANT ALL ON TABLE cmitemtax TO admin; GRANT ALL ON TABLE cmitemtax TO xtrole; publicadminfalse356e12591694333cmnttype_cmnttype_id_seqSEQUENCEzCREATE SEQUENCE cmnttype_cmnttype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.cmnttype_cmnttype_id_seq; publicadminfalse8187$00cmnttype_cmnttype_id_seqSEQUENCE OWNED BYGALTER SEQUENCE cmnttype_cmnttype_id_seq OWNED BY cmnttype.cmnttype_id; publicadminfalse357$00cmnttype_cmnttype_id_seq SEQUENCE SET?SELECT pg_catalog.setval('cmnttype_cmnttype_id_seq', 3, true); publicadminfalse357$00cmnttype_cmnttype_id_seqACLREVOKE ALL ON SEQUENCE cmnttype_cmnttype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cmnttype_cmnttype_id_seq FROM admin; GRANT ALL ON SEQUENCE cmnttype_cmnttype_id_seq TO admin; GRANT ALL ON SEQUENCE cmnttype_cmnttype_id_seq TO xtrole; publicadminfalse357f12591694335cmnttypesourceTABLECREATE TABLE cmnttypesource ( cmnttypesource_id integer NOT NULL, cmnttypesource_cmnttype_id integer, cmnttypesource_source_id integer ); "DROP TABLE public.cmnttypesource; publicadminfalse8$00TABLE cmnttypesourceCOMMENTFCOMMENT ON TABLE cmnttypesource IS 'Comment Type/Source association'; publicadminfalse358$00cmnttypesourceACLREVOKE ALL ON TABLE cmnttypesource FROM PUBLIC; REVOKE ALL ON TABLE cmnttypesource FROM admin; GRANT ALL ON TABLE cmnttypesource TO admin; GRANT ALL ON TABLE cmnttypesource TO xtrole; publicadminfalse358g12591694338$cmnttypesource_cmnttypesource_id_seqSEQUENCECREATE SEQUENCE cmnttypesource_cmnttypesource_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ;DROP SEQUENCE public.cmnttypesource_cmnttypesource_id_seq; publicadminfalse8358$00$cmnttypesource_cmnttypesource_id_seqSEQUENCE OWNED BY_ALTER SEQUENCE cmnttypesource_cmnttypesource_id_seq OWNED BY cmnttypesource.cmnttypesource_id; publicadminfalse359$00$cmnttypesource_cmnttypesource_id_seq SEQUENCE SETLSELECT pg_catalog.setval('cmnttypesource_cmnttypesource_id_seq', 76, true); publicadminfalse359$00$cmnttypesource_cmnttypesource_id_seqACLREVOKE ALL ON SEQUENCE cmnttypesource_cmnttypesource_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cmnttypesource_cmnttypesource_id_seq FROM admin; GRANT ALL ON SEQUENCE cmnttypesource_cmnttypesource_id_seq TO admin; GRANT ALL ON SEQUENCE cmnttypesource_cmnttypesource_id_seq TO xtrole; publicadminfalse359h12591694340cntct_cntct_id_seqSEQUENCEtCREATE SEQUENCE cntct_cntct_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; )DROP SEQUENCE public.cntct_cntct_id_seq; publicadminfalse8152$00cntct_cntct_id_seqSEQUENCE OWNED BY;ALTER SEQUENCE cntct_cntct_id_seq OWNED BY cntct.cntct_id; publicadminfalse360$00cntct_cntct_id_seq SEQUENCE SET9SELECT pg_catalog.setval('cntct_cntct_id_seq', 2, true); publicadminfalse360$00cntct_cntct_id_seqACLREVOKE ALL ON SEQUENCE cntct_cntct_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cntct_cntct_id_seq FROM admin; GRANT ALL ON SEQUENCE cntct_cntct_id_seq TO admin; GRANT ALL ON SEQUENCE cntct_cntct_id_seq TO xtrole; publicadminfalse360i12591694342 cntctaddrTABLECREATE TABLE cntctaddr ( cntctaddr_id integer NOT NULL, cntctaddr_cntct_id integer, cntctaddr_primary boolean NOT NULL, cntctaddr_addr_id integer NOT NULL, cntctaddr_type character(2) NOT NULL ); DROP TABLE public.cntctaddr; publicadminfalse8$00 cntctaddrACLREVOKE ALL ON TABLE cntctaddr FROM PUBLIC; REVOKE ALL ON TABLE cntctaddr FROM admin; GRANT ALL ON TABLE cntctaddr TO admin; GRANT ALL ON TABLE cntctaddr TO xtrole; publicadminfalse361j12591694345cntctaddr_cntctaddr_id_seqSEQUENCE|CREATE SEQUENCE cntctaddr_cntctaddr_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 1DROP SEQUENCE public.cntctaddr_cntctaddr_id_seq; publicadminfalse8361$00cntctaddr_cntctaddr_id_seqSEQUENCE OWNED BYKALTER SEQUENCE cntctaddr_cntctaddr_id_seq OWNED BY cntctaddr.cntctaddr_id; publicadminfalse362$00cntctaddr_cntctaddr_id_seq SEQUENCE SETBSELECT pg_catalog.setval('cntctaddr_cntctaddr_id_seq', 1, false); publicadminfalse362$00cntctaddr_cntctaddr_id_seqACLREVOKE ALL ON SEQUENCE cntctaddr_cntctaddr_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cntctaddr_cntctaddr_id_seq FROM admin; GRANT ALL ON SEQUENCE cntctaddr_cntctaddr_id_seq TO admin; GRANT ALL ON SEQUENCE cntctaddr_cntctaddr_id_seq TO xtrole; publicadminfalse362k12591694347 cntctdataTABLECREATE TABLE cntctdata ( cntctdata_id integer NOT NULL, cntctdata_cntct_id integer, cntctdata_primary boolean NOT NULL, cntctdata_text text NOT NULL, cntctdata_type character(2) NOT NULL ); DROP TABLE public.cntctdata; publicadminfalse8$00 cntctdataACLREVOKE ALL ON TABLE cntctdata FROM PUBLIC; REVOKE ALL ON TABLE cntctdata FROM admin; GRANT ALL ON TABLE cntctdata TO admin; GRANT ALL ON TABLE cntctdata TO xtrole; publicadminfalse363l12591694353cntctdata_cntctdata_id_seqSEQUENCE|CREATE SEQUENCE cntctdata_cntctdata_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 1DROP SEQUENCE public.cntctdata_cntctdata_id_seq; publicadminfalse8363$00cntctdata_cntctdata_id_seqSEQUENCE OWNED BYKALTER SEQUENCE cntctdata_cntctdata_id_seq OWNED BY cntctdata.cntctdata_id; publicadminfalse364$00cntctdata_cntctdata_id_seq SEQUENCE SETBSELECT pg_catalog.setval('cntctdata_cntctdata_id_seq', 1, false); publicadminfalse364$00cntctdata_cntctdata_id_seqACLREVOKE ALL ON SEQUENCE cntctdata_cntctdata_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cntctdata_cntctdata_id_seq FROM admin; GRANT ALL ON SEQUENCE cntctdata_cntctdata_id_seq TO admin; GRANT ALL ON SEQUENCE cntctdata_cntctdata_id_seq TO xtrole; publicadminfalse364m12591694355cntctemlTABLECREATE TABLE cntcteml ( cntcteml_id integer NOT NULL, cntcteml_cntct_id integer, cntcteml_primary boolean DEFAULT false NOT NULL, cntcteml_email text NOT NULL ); DROP TABLE public.cntcteml; publicadminfalse62678$00TABLE cntctemlCOMMENTDCOMMENT ON TABLE cntcteml IS 'Stores email addresses for contacts'; publicadminfalse365$00COLUMN cntcteml.cntcteml_idCOMMENT9COMMENT ON COLUMN cntcteml.cntcteml_id IS 'Primary key'; publicadminfalse365$00!COLUMN cntcteml.cntcteml_cntct_idCOMMENTNCOMMENT ON COLUMN cntcteml.cntcteml_cntct_id IS 'Reference to contact table'; publicadminfalse365$00 COLUMN cntcteml.cntcteml_primaryCOMMENTbCOMMENT ON COLUMN cntcteml.cntcteml_primary IS 'Flags whether this is the primary email address'; publicadminfalse365$00COLUMN cntcteml.cntcteml_emailCOMMENTFCOMMENT ON COLUMN cntcteml.cntcteml_email IS 'Alternate information'; publicadminfalse365$00cntctemlACLREVOKE ALL ON TABLE cntcteml FROM PUBLIC; REVOKE ALL ON TABLE cntcteml FROM admin; GRANT ALL ON TABLE cntcteml TO admin; GRANT ALL ON TABLE cntcteml TO xtrole; publicadminfalse365n12591694362cntcteml_cntcteml_id_seqSEQUENCEzCREATE SEQUENCE cntcteml_cntcteml_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.cntcteml_cntcteml_id_seq; publicadminfalse8365$00cntcteml_cntcteml_id_seqSEQUENCE OWNED BYGALTER SEQUENCE cntcteml_cntcteml_id_seq OWNED BY cntcteml.cntcteml_id; publicadminfalse366$00cntcteml_cntcteml_id_seq SEQUENCE SET@SELECT pg_catalog.setval('cntcteml_cntcteml_id_seq', 1, false); publicadminfalse366$00cntcteml_cntcteml_id_seqACLREVOKE ALL ON SEQUENCE cntcteml_cntcteml_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cntcteml_cntcteml_id_seq FROM admin; GRANT ALL ON SEQUENCE cntcteml_cntcteml_id_seq TO admin; GRANT ALL ON SEQUENCE cntcteml_cntcteml_id_seq TO xtrole; publicadminfalse366o12591694364 cntctmrgdTABLEoCREATE TABLE cntctmrgd ( cntctmrgd_cntct_id integer NOT NULL, cntctmrgd_error boolean DEFAULT false ); DROP TABLE public.cntctmrgd; publicadminfalse62688$00 cntctmrgdACLREVOKE ALL ON TABLE cntctmrgd FROM PUBLIC; REVOKE ALL ON TABLE cntctmrgd FROM admin; GRANT ALL ON TABLE cntctmrgd TO admin; GRANT ALL ON TABLE cntctmrgd TO xtrole; publicadminfalse367p12591694368cntctselTABLEbCREATE TABLE cntctsel ( cntctsel_cntct_id integer NOT NULL, cntctsel_target boolean, cntctsel_mrg_crmacct_id boolean DEFAULT false, cntctsel_mrg_addr_id boolean DEFAULT false, cntctsel_mrg_first_name boolean DEFAULT false, cntctsel_mrg_last_name boolean DEFAULT false, cntctsel_mrg_honorific boolean DEFAULT false, cntctsel_mrg_initials boolean DEFAULT false, cntctsel_mrg_phone boolean DEFAULT false, cntctsel_mrg_phone2 boolean DEFAULT false, cntctsel_mrg_fax boolean DEFAULT false, cntctsel_mrg_email boolean DEFAULT false, cntctsel_mrg_webaddr boolean DEFAULT false, cntctsel_mrg_notes boolean DEFAULT false, cntctsel_mrg_title boolean DEFAULT false, cntctsel_mrg_middle boolean DEFAULT false, cntctsel_mrg_suffix boolean DEFAULT false, cntctsel_mrg_owner_username boolean DEFAULT false ); DROP TABLE public.cntctsel; publicadminfalse62696270627162726273627462756276627762786279628062816282628362848$00cntctselACLREVOKE ALL ON TABLE cntctsel FROM PUBLIC; REVOKE ALL ON TABLE cntctsel FROM admin; GRANT ALL ON TABLE cntctsel TO admin; GRANT ALL ON TABLE cntctsel TO xtrole; publicadminfalse368r12591694394cntslip_cntslip_id_seqSEQUENCECREATE SEQUENCE cntslip_cntslip_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.cntslip_cntslip_id_seq; publicadminfalse8$00cntslip_cntslip_id_seq SEQUENCE SET>SELECT pg_catalog.setval('cntslip_cntslip_id_seq', 97, true); publicadminfalse370$00cntslip_cntslip_id_seqACLREVOKE ALL ON SEQUENCE cntslip_cntslip_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cntslip_cntslip_id_seq FROM admin; GRANT ALL ON SEQUENCE cntslip_cntslip_id_seq TO admin; GRANT ALL ON SEQUENCE cntslip_cntslip_id_seq TO xtrole; publicadminfalse370s12591694396cobillTABLECREATE TABLE cobill ( cobill_id integer DEFAULT nextval(('cobill_cobill_id_seq'::text)::regclass) NOT NULL, cobill_coitem_id integer, cobill_selectdate timestamp with time zone, cobill_qty numeric(18,6), cobill_invcnum integer, cobill_toclose boolean, cobill_cobmisc_id integer, cobill_select_username text, cobill_invcitem_id integer, cobill_taxtype_id integer ); DROP TABLE public.cobill; publicadminfalse62868$00 TABLE cobillCOMMENTFCOMMENT ON TABLE cobill IS 'Billing Selection Line Item information'; publicadminfalse371$00cobillACLREVOKE ALL ON TABLE cobill FROM PUBLIC; REVOKE ALL ON TABLE cobill FROM admin; GRANT ALL ON TABLE cobill TO admin; GRANT ALL ON TABLE cobill TO xtrole; publicadminfalse371t12591694403cobill_cobill_id_seqSEQUENCE~CREATE SEQUENCE cobill_cobill_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; +DROP SEQUENCE public.cobill_cobill_id_seq; publicadminfalse8$00cobill_cobill_id_seq SEQUENCE SET=SELECT pg_catalog.setval('cobill_cobill_id_seq', 528, true); publicadminfalse372$00cobill_cobill_id_seqACLREVOKE ALL ON SEQUENCE cobill_cobill_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cobill_cobill_id_seq FROM admin; GRANT ALL ON SEQUENCE cobill_cobill_id_seq TO admin; GRANT ALL ON SEQUENCE cobill_cobill_id_seq TO xtrole; publicadminfalse372u12591694405 cobilltaxTABLE/CREATE TABLE cobilltax ( ) INHERITS (taxhist); DROP TABLE public.cobilltax; publicadminfalse62878253$00 cobilltaxACLREVOKE ALL ON TABLE cobilltax FROM PUBLIC; REVOKE ALL ON TABLE cobilltax FROM admin; GRANT ALL ON TABLE cobilltax TO admin; GRANT ALL ON TABLE cobilltax TO xtrole; publicadminfalse373v12591694411cobmiscTABLECREATE TABLE cobmisc ( cobmisc_id integer DEFAULT nextval(('cobmisc_cobmisc_id_seq'::text)::regclass) NOT NULL, cobmisc_cohead_id integer, cobmisc_shipvia text, cobmisc_freight numeric(16,4), cobmisc_misc numeric(16,4), cobmisc_payment numeric(16,4), cobmisc_paymentref text, cobmisc_notes text, cobmisc_shipdate date, cobmisc_invcnumber integer, cobmisc_invcdate date, cobmisc_posted boolean, cobmisc_misc_accnt_id integer, cobmisc_misc_descrip text, cobmisc_closeorder boolean, cobmisc_curr_id integer DEFAULT basecurrid(), cobmisc_invchead_id integer, cobmisc_taxzone_id integer, cobmisc_taxtype_id integer ); DROP TABLE public.cobmisc; publicadminfalse628862898$00 TABLE cobmiscCOMMENTLCOMMENT ON TABLE cobmisc IS 'General information about Billing Selections'; publicadminfalse374$00cobmiscACLREVOKE ALL ON TABLE cobmisc FROM PUBLIC; REVOKE ALL ON TABLE cobmisc FROM admin; GRANT ALL ON TABLE cobmisc TO admin; GRANT ALL ON TABLE cobmisc TO xtrole; publicadminfalse374w12591694419cobmisc_cobmisc_id_seqSEQUENCECREATE SEQUENCE cobmisc_cobmisc_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.cobmisc_cobmisc_id_seq; publicadminfalse8$00cobmisc_cobmisc_id_seq SEQUENCE SET?SELECT pg_catalog.setval('cobmisc_cobmisc_id_seq', 204, true); publicadminfalse375$00cobmisc_cobmisc_id_seqACLREVOKE ALL ON SEQUENCE cobmisc_cobmisc_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cobmisc_cobmisc_id_seq FROM admin; GRANT ALL ON SEQUENCE cobmisc_cobmisc_id_seq TO admin; GRANT ALL ON SEQUENCE cobmisc_cobmisc_id_seq TO xtrole; publicadminfalse375x12591694421 cobmisctaxTABLE0CREATE TABLE cobmisctax ( ) INHERITS (taxhist); DROP TABLE public.cobmisctax; publicadminfalse62908253$00 cobmisctaxACLREVOKE ALL ON TABLE cobmisctax FROM PUBLIC; REVOKE ALL ON TABLE cobmisctax FROM admin; GRANT ALL ON TABLE cobmisctax TO admin; GRANT ALL ON TABLE cobmisctax TO xtrole; publicadminfalse376y12591694427cohead_cohead_id_seqSEQUENCE~CREATE SEQUENCE cohead_cohead_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; +DROP SEQUENCE public.cohead_cohead_id_seq; publicadminfalse8$00cohead_cohead_id_seq SEQUENCE SET>SELECT pg_catalog.setval('cohead_cohead_id_seq', 2952, true); publicadminfalse377$00cohead_cohead_id_seqACLREVOKE ALL ON SEQUENCE cohead_cohead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cohead_cohead_id_seq FROM admin; GRANT ALL ON SEQUENCE cohead_cohead_id_seq TO admin; GRANT ALL ON SEQUENCE cohead_cohead_id_seq TO xtrole; publicadminfalse377z12591694429cohist_cohist_id_seqSEQUENCE~CREATE SEQUENCE cohist_cohist_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; +DROP SEQUENCE public.cohist_cohist_id_seq; publicadminfalse8$00cohist_cohist_id_seq SEQUENCE SET=SELECT pg_catalog.setval('cohist_cohist_id_seq', 493, true); publicadminfalse378$00cohist_cohist_id_seqACLREVOKE ALL ON SEQUENCE cohist_cohist_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cohist_cohist_id_seq FROM admin; GRANT ALL ON SEQUENCE cohist_cohist_id_seq TO admin; GRANT ALL ON SEQUENCE cohist_cohist_id_seq TO xtrole; publicadminfalse378{12591694431coitem_coitem_id_seqSEQUENCE~CREATE SEQUENCE coitem_coitem_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; +DROP SEQUENCE public.coitem_coitem_id_seq; publicadminfalse8$00coitem_coitem_id_seq SEQUENCE SET=SELECT pg_catalog.setval('coitem_coitem_id_seq', 564, true); publicadminfalse379$00coitem_coitem_id_seqACLREVOKE ALL ON SEQUENCE coitem_coitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE coitem_coitem_id_seq FROM admin; GRANT ALL ON SEQUENCE coitem_coitem_id_seq TO admin; GRANT ALL ON SEQUENCE coitem_coitem_id_seq TO xtrole; publicadminfalse379|12591694433comment_comment_id_seqSEQUENCExCREATE SEQUENCE comment_comment_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.comment_comment_id_seq; publicadminfalse8$00comment_comment_id_seq SEQUENCE SET>SELECT pg_catalog.setval('comment_comment_id_seq', 63, true); publicadminfalse380$00comment_comment_id_seqACLREVOKE ALL ON SEQUENCE comment_comment_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE comment_comment_id_seq FROM admin; GRANT ALL ON SEQUENCE comment_comment_id_seq TO admin; GRANT ALL ON SEQUENCE comment_comment_id_seq TO xtrole; publicadminfalse380}12591694435companyTABLECREATE TABLE company ( company_id integer NOT NULL, company_number text NOT NULL, company_descrip text, company_external boolean DEFAULT false NOT NULL, company_server text, company_port integer, company_database text, company_curr_id integer, company_yearend_accnt_id integer, company_gainloss_accnt_id integer, company_dscrp_accnt_id integer, company_unrlzgainloss_accnt_id integer, CONSTRAINT company_company_number_check CHECK ((company_number <> ''::text)) ); DROP TABLE public.company; publicadminfalse629262938$00 TABLE companyCOMMENT3COMMENT ON TABLE company IS 'Company information'; publicadminfalse381$00companyACLREVOKE ALL ON TABLE company FROM PUBLIC; REVOKE ALL ON TABLE company FROM admin; GRANT ALL ON TABLE company TO admin; GRANT ALL ON TABLE company TO xtrole; publicadminfalse381~12591694442company_company_id_seqSEQUENCExCREATE SEQUENCE company_company_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.company_company_id_seq; publicadminfalse8381$00company_company_id_seqSEQUENCE OWNED BYCALTER SEQUENCE company_company_id_seq OWNED BY company.company_id; publicadminfalse382$00company_company_id_seq SEQUENCE SET=SELECT pg_catalog.setval('company_company_id_seq', 1, true); publicadminfalse382$00company_company_id_seqACLREVOKE ALL ON SEQUENCE company_company_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE company_company_id_seq FROM admin; GRANT ALL ON SEQUENCE company_company_id_seq TO admin; GRANT ALL ON SEQUENCE company_company_id_seq TO xtrole; publicadminfalse38212591746311contrct_contrct_id_seqSEQUENCExCREATE SEQUENCE contrct_contrct_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.contrct_contrct_id_seq; publicadminfalse8720$00contrct_contrct_id_seqSEQUENCE OWNED BYCALTER SEQUENCE contrct_contrct_id_seq OWNED BY contrct.contrct_id; publicadminfalse719$00contrct_contrct_id_seq SEQUENCE SET>SELECT pg_catalog.setval('contrct_contrct_id_seq', 1, false); publicadminfalse719$00contrct_contrct_id_seqACLREVOKE ALL ON SEQUENCE contrct_contrct_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE contrct_contrct_id_seq FROM admin; GRANT ALL ON SEQUENCE contrct_contrct_id_seq TO admin; GRANT ALL ON SEQUENCE contrct_contrct_id_seq TO xtrole; publicadminfalse719`12591695429shipheadTABLECREATE TABLE shiphead ( shiphead_id integer NOT NULL, shiphead_order_id integer NOT NULL, shiphead_order_type text NOT NULL, shiphead_number text NOT NULL, shiphead_shipvia text, shiphead_freight numeric(16,4) DEFAULT 0.0 NOT NULL, shiphead_freight_curr_id integer DEFAULT basecurrid() NOT NULL, shiphead_notes text, shiphead_shipped boolean DEFAULT false NOT NULL, shiphead_shipdate date, shiphead_shipchrg_id integer, shiphead_shipform_id integer, shiphead_sfstatus character(1) NOT NULL, shiphead_tracknum text, CONSTRAINT shiphead_shiphead_number_check CHECK ((shiphead_number <> ''::text)), CONSTRAINT shiphead_shiphead_order_type_check CHECK (((shiphead_order_type = 'SO'::text) OR (shiphead_order_type = 'TO'::text))), CONSTRAINT shiphead_shiphead_sfstatus_check CHECK ((((shiphead_sfstatus = 'D'::bpchar) OR (shiphead_sfstatus = 'N'::bpchar)) OR (shiphead_sfstatus = 'P'::bpchar))) ); DROP TABLE public.shiphead; publicadminfalse6534653565366538653965408$00TABLE shipheadCOMMENTDCOMMENT ON TABLE shiphead IS 'General information about Shipments'; publicadminfalse608$00shipheadACLREVOKE ALL ON TABLE shiphead FROM PUBLIC; REVOKE ALL ON TABLE shiphead FROM admin; GRANT ALL ON TABLE shiphead TO admin; GRANT ALL ON TABLE shiphead TO xtrole; publicadminfalse60812591694884shipitemTABLECREATE TABLE shipitem ( shipitem_id integer NOT NULL, shipitem_orderitem_id integer NOT NULL, shipitem_shiphead_id integer NOT NULL, shipitem_qty numeric(18,6) NOT NULL, shipitem_shipped boolean DEFAULT false NOT NULL, shipitem_shipdate timestamp with time zone, shipitem_transdate timestamp with time zone, shipitem_trans_username text, shipitem_invoiced boolean DEFAULT false NOT NULL, shipitem_invcitem_id integer, shipitem_value numeric(18,6), shipitem_invhist_id integer ); DROP TABLE public.shipitem; publicadminfalse643864398$00TABLE shipitemCOMMENTFCOMMENT ON TABLE shipitem IS 'Information about Shipment Line Items'; publicadminfalse474$00shipitemACLREVOKE ALL ON TABLE shipitem FROM PUBLIC; REVOKE ALL ON TABLE shipitem FROM admin; GRANT ALL ON TABLE shipitem TO admin; GRANT ALL ON TABLE shipitem TO xtrole; publicadminfalse474V12592009484coshipVIEWCREATE VIEW coship AS SELECT shipitem.shipitem_id AS coship_id, shipitem.shipitem_orderitem_id AS coship_coitem_id, shipitem.shipitem_shipdate AS coship_shipdate, shipitem.shipitem_qty AS coship_qty, shipitem.shipitem_transdate AS coship_transdate, shipitem.shipitem_shipped AS coship_shipped, shipitem.shipitem_invoiced AS coship_invoiced, shipitem.shipitem_shiphead_id AS coship_cosmisc_id, shipitem.shipitem_trans_username AS coship_trans_username, shipitem.shipitem_invcitem_id AS coship_invcitem_id FROM shipitem, shiphead WHERE ((shipitem.shipitem_shiphead_id = shiphead.shiphead_id) AND (shiphead.shiphead_order_type = 'SO'::text)); DROP VIEW public.coship; publicadminfalse55508$00coshipACLREVOKE ALL ON TABLE coship FROM PUBLIC; REVOKE ALL ON TABLE coship FROM admin; GRANT ALL ON TABLE coship TO admin; GRANT ALL ON TABLE coship TO xtrole; publicadminfalse85412591694444coship_coship_id_seqSEQUENCE~CREATE SEQUENCE coship_coship_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; +DROP SEQUENCE public.coship_coship_id_seq; publicadminfalse8$00coship_coship_id_seq SEQUENCE SET=SELECT pg_catalog.setval('coship_coship_id_seq', 441, true); publicadminfalse383$00coship_coship_id_seqACLREVOKE ALL ON SEQUENCE coship_coship_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE coship_coship_id_seq FROM admin; GRANT ALL ON SEQUENCE coship_coship_id_seq TO admin; GRANT ALL ON SEQUENCE coship_coship_id_seq TO xtrole; publicadminfalse383W12592009488cosmiscVIEWCREATE VIEW cosmisc AS SELECT shiphead.shiphead_id AS cosmisc_id, shiphead.shiphead_order_id AS cosmisc_cohead_id, shiphead.shiphead_shipvia AS cosmisc_shipvia, shiphead.shiphead_freight AS cosmisc_freight, shiphead.shiphead_notes AS cosmisc_notes, shiphead.shiphead_shipdate AS cosmisc_shipdate, shiphead.shiphead_shipchrg_id AS cosmisc_shipchrg_id, shiphead.shiphead_shipform_id AS cosmisc_shipform_id, shiphead.shiphead_shipped AS cosmisc_shipped, shiphead.shiphead_sfstatus AS cosmisc_sfstatus, shiphead.shiphead_tracknum AS cosmisc_tracknum, shiphead.shiphead_number AS cosmisc_number FROM shiphead WHERE (shiphead.shiphead_order_type = 'SO'::text); DROP VIEW public.cosmisc; publicadminfalse55518$00cosmiscACLREVOKE ALL ON TABLE cosmisc FROM PUBLIC; REVOKE ALL ON TABLE cosmisc FROM admin; GRANT ALL ON TABLE cosmisc TO admin; GRANT ALL ON TABLE cosmisc TO xtrole; publicadminfalse85512591694446cosmisc_cosmisc_id_seqSEQUENCECREATE SEQUENCE cosmisc_cosmisc_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.cosmisc_cosmisc_id_seq; publicadminfalse8$00cosmisc_cosmisc_id_seq SEQUENCE SET?SELECT pg_catalog.setval('cosmisc_cosmisc_id_seq', 202, true); publicadminfalse384$00cosmisc_cosmisc_id_seqACLREVOKE ALL ON SEQUENCE cosmisc_cosmisc_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cosmisc_cosmisc_id_seq FROM admin; GRANT ALL ON SEQUENCE cosmisc_cosmisc_id_seq TO admin; GRANT ALL ON SEQUENCE cosmisc_cosmisc_id_seq TO xtrole; publicadminfalse38412591694448cosrc_cosrc_id_seqSEQUENCE|CREATE SEQUENCE cosrc_cosrc_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; )DROP SEQUENCE public.cosrc_cosrc_id_seq; publicadminfalse8$00cosrc_cosrc_id_seq SEQUENCE SET:SELECT pg_catalog.setval('cosrc_cosrc_id_seq', 1, false); publicadminfalse385$00cosrc_cosrc_id_seqACLREVOKE ALL ON SEQUENCE cosrc_cosrc_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cosrc_cosrc_id_seq FROM admin; GRANT ALL ON SEQUENCE cosrc_cosrc_id_seq TO admin; GRANT ALL ON SEQUENCE cosrc_cosrc_id_seq TO xtrole; publicadminfalse38512591694450costcat_costcat_id_seqSEQUENCECREATE SEQUENCE costcat_costcat_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.costcat_costcat_id_seq; publicadminfalse8$00costcat_costcat_id_seq SEQUENCE SET>SELECT pg_catalog.setval('costcat_costcat_id_seq', 30, true); publicadminfalse386$00costcat_costcat_id_seqACLREVOKE ALL ON SEQUENCE costcat_costcat_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE costcat_costcat_id_seq FROM admin; GRANT ALL ON SEQUENCE costcat_costcat_id_seq TO admin; GRANT ALL ON SEQUENCE costcat_costcat_id_seq TO xtrole; publicadminfalse38612591694452costelem_costelem_id_seqSEQUENCECREATE SEQUENCE costelem_costelem_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; /DROP SEQUENCE public.costelem_costelem_id_seq; publicadminfalse8$00costelem_costelem_id_seq SEQUENCE SET@SELECT pg_catalog.setval('costelem_costelem_id_seq', 23, true); publicadminfalse387$00costelem_costelem_id_seqACLREVOKE ALL ON SEQUENCE costelem_costelem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE costelem_costelem_id_seq FROM admin; GRANT ALL ON SEQUENCE costelem_costelem_id_seq TO admin; GRANT ALL ON SEQUENCE costelem_costelem_id_seq TO xtrole; publicadminfalse38712591694454costhistTABLECREATE TABLE costhist ( costhist_id integer DEFAULT nextval(('"costhist_costhist_id_seq"'::text)::regclass) NOT NULL, costhist_item_id integer, costhist_costelem_id integer, costhist_type character(1), costhist_date timestamp with time zone, costhist_oldcost numeric(16,6), costhist_newcost numeric(16,6), costhist_lowlevel boolean, costhist_oldcurr_id integer DEFAULT basecurrid(), costhist_newcurr_id integer DEFAULT basecurrid(), costhist_username text ); DROP TABLE public.costhist; publicadminfalse6294629562968$00TABLE costhistCOMMENT2COMMENT ON TABLE costhist IS 'Item Cost history'; publicadminfalse388$00costhistACLREVOKE ALL ON TABLE costhist FROM PUBLIC; REVOKE ALL ON TABLE costhist FROM admin; GRANT ALL ON TABLE costhist TO admin; GRANT ALL ON TABLE costhist TO xtrole; publicadminfalse38812591694463costhist_costhist_id_seqSEQUENCEzCREATE SEQUENCE costhist_costhist_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.costhist_costhist_id_seq; publicadminfalse8$00costhist_costhist_id_seq SEQUENCE SETASELECT pg_catalog.setval('costhist_costhist_id_seq', 992, true); publicadminfalse389$00costhist_costhist_id_seqACLREVOKE ALL ON SEQUENCE costhist_costhist_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE costhist_costhist_id_seq FROM admin; GRANT ALL ON SEQUENCE costhist_costhist_id_seq TO admin; GRANT ALL ON SEQUENCE costhist_costhist_id_seq TO xtrole; publicadminfalse38912591694465 costupdateTABLECREATE TABLE costupdate ( costupdate_item_id integer, costupdate_lowlevel_code integer DEFAULT 1 NOT NULL, costupdate_item_type character(1) ); DROP TABLE public.costupdate; publicadminfalse62978$00TABLE costupdateCOMMENTYCOMMENT ON TABLE costupdate IS 'Scratch area for sequencing the updating of item costs'; publicadminfalse390$00 costupdateACLREVOKE ALL ON TABLE costupdate FROM PUBLIC; REVOKE ALL ON TABLE costupdate FROM admin; GRANT ALL ON TABLE costupdate TO admin; GRANT ALL ON TABLE costupdate TO xtrole; publicadminfalse39012591694469countryTABLECREATE TABLE country ( country_id integer NOT NULL, country_abbr character(2), country_name text, country_curr_abbr character(3), country_curr_name text, country_curr_number character(3), country_curr_symbol character varying(9), country_qt_number integer, CONSTRAINT country_country_abbr_check CHECK ((country_abbr <> ''::bpchar)), CONSTRAINT country_country_name_check CHECK ((country_name <> ''::text)) ); DROP TABLE public.country; publicadminfalse629963008$00 TABLE countryCOMMENTQCOMMENT ON TABLE country IS 'Basic information and properties about countries.'; publicadminfalse391$00countryACLREVOKE ALL ON TABLE country FROM PUBLIC; REVOKE ALL ON TABLE country FROM admin; GRANT ALL ON TABLE country TO admin; GRANT ALL ON TABLE country TO xtrole; publicadminfalse39112591694475country_country_id_seqSEQUENCExCREATE SEQUENCE country_country_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.country_country_id_seq; publicadminfalse8391$00country_country_id_seqSEQUENCE OWNED BYCALTER SEQUENCE country_country_id_seq OWNED BY country.country_id; publicadminfalse392$00country_country_id_seq SEQUENCE SET?SELECT pg_catalog.setval('country_country_id_seq', 242, true); publicadminfalse392$00country_country_id_seqACLREVOKE ALL ON SEQUENCE country_country_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE country_country_id_seq FROM admin; GRANT ALL ON SEQUENCE country_country_id_seq TO admin; GRANT ALL ON SEQUENCE country_country_id_seq TO xtrole; publicadminfalse39212591694477 salesaccntTABLEYCREATE TABLE salesaccnt ( salesaccnt_id integer DEFAULT nextval(('"salesaccnt_salesaccnt_id_seq"'::text)::regclass) NOT NULL, salesaccnt_custtype_id integer, salesaccnt_prodcat_id integer, salesaccnt_warehous_id integer, salesaccnt_sales_accnt_id integer, salesaccnt_credit_accnt_id integer, salesaccnt_cos_accnt_id integer, salesaccnt_custtype text, salesaccnt_prodcat text, salesaccnt_returns_accnt_id integer, salesaccnt_cor_accnt_id integer, salesaccnt_cow_accnt_id integer, salesaccnt_saletype_id integer, salesaccnt_shipzone_id integer ); DROP TABLE public.salesaccnt; publicadminfalse63018$00TABLE salesaccntCOMMENTGCOMMENT ON TABLE salesaccnt IS 'Sales Account assignment information'; publicadminfalse393$00(COLUMN salesaccnt.salesaccnt_saletype_idCOMMENTbCOMMENT ON COLUMN salesaccnt.salesaccnt_saletype_id IS 'Associated sale type for sales account.'; publicadminfalse393$00(COLUMN salesaccnt.salesaccnt_shipzone_idCOMMENTfCOMMENT ON COLUMN salesaccnt.salesaccnt_shipzone_id IS 'Associated shipping zone for sales account.'; publicadminfalse393$00 salesaccntACLREVOKE ALL ON TABLE salesaccnt FROM PUBLIC; REVOKE ALL ON TABLE salesaccnt FROM admin; GRANT ALL ON TABLE salesaccnt TO admin; GRANT ALL ON TABLE salesaccnt TO xtrole; publicadminfalse393G12592009411creditmemoeditlistVIEWCREATE VIEW creditmemoeditlist AS ((((SELECT cmhead.cmhead_id AS orderid, (-2) AS itemid, ('C/M-'::text || formatcreditmemonumber(cmhead.cmhead_id)) AS documentnumber, custinfo.cust_number, cmhead.cmhead_billtoname AS billtoname, cmhead.cmhead_number AS ordernumber, (-1) AS linenumber, '' AS item, '' AS itemdescrip, '' AS iteminvuom, '' AS qtytobill, '' AS price, formatmoney((((calccmheadamt(cmhead.cmhead_id) + cmhead.cmhead_freight) + cmhead.cmhead_misc) + calccmheadtax(cmhead.cmhead_id))) AS extprice, 'Credit' AS sence, COALESCE((SELECT formatglaccountlong(accnt.accnt_id) AS formatglaccountlong FROM accnt WHERE (accnt.accnt_id = findaraccount(custinfo.cust_id))), 'Not Assigned'::text) AS account FROM custinfo, cmhead WHERE ((((cmhead.cmhead_cust_id = custinfo.cust_id) AND (cmhead.cmhead_cust_id = custinfo.cust_id)) AND (NOT cmhead.cmhead_posted)) AND (NOT cmhead.cmhead_hold)) UNION SELECT cmhead.cmhead_id AS orderid, (-1) AS itemid, '' AS documentnumber, '' AS cust_number, '' AS billtoname, cmhead.cmhead_number AS ordernumber, (-1) AS linenumber, 'Freight' AS item, 'Freight Charge' AS itemdescrip, '' AS iteminvuom, '' AS qtytobill, formatmoney(cmhead.cmhead_freight) AS price, formatmoney(cmhead.cmhead_freight) AS extprice, 'Debit' AS sence, CASE WHEN (accnt.accnt_id IS NULL) THEN 'Not Assigned'::text ELSE formatglaccountlong(accnt.accnt_id) END AS account FROM (cmhead LEFT JOIN accnt ON ((accnt.accnt_id = findfreightaccount(cmhead.cmhead_cust_id)))) WHERE (((NOT cmhead.cmhead_posted) AND (NOT cmhead.cmhead_hold)) AND (cmhead.cmhead_freight <> (0)::numeric))) UNION SELECT cmhead.cmhead_id AS orderid, (-1) AS itemid, '' AS documentnumber, '' AS cust_number, '' AS billtoname, cmhead.cmhead_number AS ordernumber, (-1) AS linenumber, 'Misc. Charge' AS item, cmhead.cmhead_misc_descrip AS itemdescrip, '' AS iteminvuom, '' AS qtytobill, formatmoney(cmhead.cmhead_misc) AS price, formatmoney(cmhead.cmhead_misc) AS extprice, 'Debit' AS sence, formatglaccountlong(cmhead.cmhead_misc_accnt_id) AS account FROM cmhead WHERE (((NOT cmhead.cmhead_posted) AND (NOT cmhead.cmhead_hold)) AND (cmhead.cmhead_misc <> (0)::numeric))) UNION SELECT cmhead.cmhead_id AS orderid, (-1) AS itemid, '' AS documentnumber, '' AS cust_number, '' AS billtoname, cmhead.cmhead_number AS ordernumber, (-1) AS linenumber, 'Sales Tax' AS item, tax.tax_descrip AS itemdescrip, '' AS iteminvuom, '' AS qtytobill, formatmoney((cmheadtax.taxhist_tax * (-1.0))) AS price, formatmoney((cmheadtax.taxhist_tax * (-1.0))) AS extprice, 'Debit' AS sence, CASE WHEN (accnt.accnt_id IS NULL) THEN 'Not Assigned'::text ELSE ((formatglaccountlong(accnt.accnt_id) || ' - '::text) || accnt.accnt_descrip) END AS account FROM (((cmhead JOIN cmheadtax ON ((cmheadtax.taxhist_parent_id = cmhead.cmhead_id))) JOIN tax ON ((tax.tax_id = cmheadtax.taxhist_tax_id))) LEFT JOIN accnt ON ((accnt.accnt_id = tax.tax_sales_accnt_id))) WHERE ((NOT cmhead.cmhead_posted) AND (NOT cmhead.cmhead_hold))) UNION SELECT cmhead.cmhead_id AS orderid, (-1) AS itemid, '' AS documentnumber, '' AS cust_number, '' AS billtoname, cmhead.cmhead_number AS ordernumber, (-1) AS linenumber, 'Sales Tax' AS item, tax.tax_descrip AS itemdescrip, '' AS iteminvuom, '' AS qtytobill, formatmoney((cmitemtax.taxhist_tax * (-1.0))) AS price, formatmoney((cmitemtax.taxhist_tax * (-1.0))) AS extprice, 'Debit' AS sence, CASE WHEN (accnt.accnt_id IS NULL) THEN 'Not Assigned'::text ELSE ((formatglaccountlong(accnt.accnt_id) || ' - '::text) || accnt.accnt_descrip) END AS account FROM ((((cmhead JOIN cmitem ON ((cmitem.cmitem_cmhead_id = cmhead.cmhead_id))) JOIN cmitemtax ON ((cmitemtax.taxhist_parent_id = cmitem.cmitem_id))) JOIN tax ON ((tax.tax_id = cmitemtax.taxhist_tax_id))) LEFT JOIN accnt ON ((accnt.accnt_id = tax.tax_sales_accnt_id))) WHERE ((NOT cmhead.cmhead_posted) AND (NOT cmhead.cmhead_hold))) UNION SELECT cmhead.cmhead_id AS orderid, cmitem.cmitem_id AS itemid, '' AS documentnumber, '' AS cust_number, '' AS billtoname, cmhead.cmhead_number AS ordernumber, cmitem.cmitem_linenumber AS linenumber, item.item_number AS item, item.item_descrip1 AS itemdescrip, uom.uom_name AS iteminvuom, formatqty(COALESCE((cmitem.cmitem_qtycredit * cmitem.cmitem_qty_invuomratio), (0)::numeric)) AS qtytobill, formatprice(COALESCE((cmitem.cmitem_unitprice / cmitem.cmitem_price_invuomratio), (0)::numeric)) AS price, formatmoney(COALESCE(round(((cmitem.cmitem_qtycredit * cmitem.cmitem_qty_invuomratio) * (cmitem.cmitem_unitprice / cmitem.cmitem_price_invuomratio)), 2), (0)::numeric)) AS extprice, 'Debit' AS sence, COALESCE((SELECT formatglaccountlong(accnt.accnt_id) AS formatglaccountlong FROM accnt, salesaccnt WHERE ((salesaccnt.salesaccnt_sales_accnt_id = accnt.accnt_id) AND (salesaccnt.salesaccnt_id = findsalesaccnt(cmitem.cmitem_itemsite_id, 'IS'::text, cmhead.cmhead_cust_id, cmhead.cmhead_saletype_id, cmhead.cmhead_shipzone_id)))), 'Not Assigned'::text) AS account FROM item, itemsite, cmhead, cmitem, uom WHERE ((((((cmitem.cmitem_cmhead_id = cmhead.cmhead_id) AND (cmitem.cmitem_itemsite_id = itemsite.itemsite_id)) AND (itemsite.itemsite_item_id = item.item_id)) AND (item.item_inv_uom_id = uom.uom_id)) AND (NOT cmhead.cmhead_posted)) AND (NOT cmhead.cmhead_hold)) ORDER BY 6, 7; %DROP VIEW public.creditmemoeditlist; publicadminfalse55358$00creditmemoeditlistACLREVOKE ALL ON TABLE creditmemoeditlist FROM PUBLIC; REVOKE ALL ON TABLE creditmemoeditlist FROM admin; GRANT ALL ON TABLE creditmemoeditlist TO admin; GRANT ALL ON TABLE creditmemoeditlist TO xtrole; publicadminfalse839H12592009416creditmemoitemVIEWCREATE VIEW creditmemoitem AS SELECT cmitem.cmitem_id, cmitem.cmitem_cmhead_id, cmitem.cmitem_linenumber, cmitem.cmitem_itemsite_id, cmitem.cmitem_qtycredit, cmitem.cmitem_qtyreturned, cmitem.cmitem_unitprice, cmitem.cmitem_comments, cmitem.cmitem_rsncode_id, cmitem.cmitem_taxtype_id, cmitem.cmitem_qty_uom_id, cmitem.cmitem_qty_invuomratio, cmitem.cmitem_price_uom_id, cmitem.cmitem_price_invuomratio, cmitem.cmitem_raitem_id, cmitem.cmitem_updateinv, itemsite.itemsite_item_id AS item_id, COALESCE((cmitem.cmitem_qtycredit * cmitem.cmitem_qty_invuomratio), (0)::numeric) AS qty, COALESCE((cmitem.cmitem_unitprice / cmitem.cmitem_price_invuomratio), (0)::numeric) AS unitprice, COALESCE(round(((cmitem.cmitem_qtycredit * cmitem.cmitem_qty_invuomratio) * (cmitem.cmitem_unitprice / cmitem.cmitem_price_invuomratio)), 2), (0)::numeric) AS extprice, currtobase(cmhead.cmhead_curr_id, COALESCE(round(((cmitem.cmitem_qtycredit * cmitem.cmitem_qty_invuomratio) * (cmitem.cmitem_unitprice / cmitem.cmitem_price_invuomratio)), 2), (0)::numeric), cmhead.cmhead_docdate) AS baseextprice, (SELECT COALESCE(sum(cmitemtax.taxhist_tax), (0)::numeric) AS "coalesce" FROM cmitemtax WHERE (cmitemtax.taxhist_parent_id = cmitem.cmitem_id)) AS tax, CASE WHEN (itemsite.itemsite_costmethod = 'A'::bpchar) THEN avgcost(itemsite.itemsite_id) ELSE stdcost(itemsite.itemsite_item_id) END AS unitcost FROM ((cmitem JOIN cmhead ON ((cmhead.cmhead_id = cmitem.cmitem_cmhead_id))) LEFT JOIN itemsite ON ((itemsite.itemsite_id = cmitem.cmitem_itemsite_id))); !DROP VIEW public.creditmemoitem; publicadminfalse55368$00VIEW creditmemoitemCOMMENT^COMMENT ON VIEW creditmemoitem IS 'Single point for credit memo item (cmitem) calculations.'; publicadminfalse840$00creditmemoitemACLREVOKE ALL ON TABLE creditmemoitem FROM PUBLIC; REVOKE ALL ON TABLE creditmemoitem FROM admin; GRANT ALL ON TABLE creditmemoitem TO admin; GRANT ALL ON TABLE creditmemoitem TO xtrole; publicadminfalse84012591694494crmacct_crmacct_id_seqSEQUENCExCREATE SEQUENCE crmacct_crmacct_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.crmacct_crmacct_id_seq; publicadminfalse8153$00crmacct_crmacct_id_seqSEQUENCE OWNED BYCALTER SEQUENCE crmacct_crmacct_id_seq OWNED BY crmacct.crmacct_id; publicadminfalse394$00crmacct_crmacct_id_seq SEQUENCE SET>SELECT pg_catalog.setval('crmacct_crmacct_id_seq', 26, true); publicadminfalse394$00crmacct_crmacct_id_seqACLREVOKE ALL ON SEQUENCE crmacct_crmacct_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE crmacct_crmacct_id_seq FROM admin; GRANT ALL ON SEQUENCE crmacct_crmacct_id_seq TO admin; GRANT ALL ON SEQUENCE crmacct_crmacct_id_seq TO xtrole; publicadminfalse39412591694496 crmacctselTABLEGCREATE TABLE crmacctsel ( crmacctsel_src_crmacct_id integer NOT NULL, crmacctsel_dest_crmacct_id integer, crmacctsel_mrg_crmacct_active boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_cntct_id_1 boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_cntct_id_2 boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_competitor_id boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_cust_id boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_emp_id boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_name boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_notes boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_owner_username boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_parent_id boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_partner_id boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_prospect_id boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_salesrep_id boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_taxauth_id boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_type boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_usr_username boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_vend_id boolean DEFAULT false NOT NULL, crmacctsel_mrg_crmacct_number boolean DEFAULT false NOT NULL ); DROP TABLE public.crmacctsel; publicadminfalse6302630363046305630663076308630963106311631263136314631563166317631863198$00TABLE crmacctselCOMMENT6COMMENT ON TABLE crmacctsel IS 'This table records the proposed conditions of a CRM Account merge. When this merge is performed, the BOOLEAN columns in this table indicate which values in the crmacct table will be copied to the target record. Data in this table are temporary and will be removed by a purge.'; publicadminfalse395$00+COLUMN crmacctsel.crmacctsel_src_crmacct_idCOMMENTCOMMENT ON COLUMN crmacctsel.crmacctsel_src_crmacct_id IS 'This is the internal ID of the CRM Account record the data will come from during the merge.'; publicadminfalse395$00,COLUMN crmacctsel.crmacctsel_dest_crmacct_idCOMMENTCOMMENT ON COLUMN crmacctsel.crmacctsel_dest_crmacct_id IS 'This is the internal ID of the CRM Account record the data will go to during the merge. If crmacctsel_src_crmacct_id = crmacctsel_dest_crmacct_id, they indicate which crmacct record is the destination of the merge, meaning this is the record that will remain in the database after the merge has been completed and the intermediate data have been purged.'; publicadminfalse395$00 crmacctselACLREVOKE ALL ON TABLE crmacctsel FROM PUBLIC; REVOKE ALL ON TABLE crmacctsel FROM admin; GRANT ALL ON TABLE crmacctsel TO admin; GRANT ALL ON TABLE crmacctsel TO xtrole; publicadminfalse39512591694517 curr_rateTABLECREATE TABLE curr_rate ( curr_rate_id integer NOT NULL, curr_id integer NOT NULL, curr_rate numeric(16,8) NOT NULL, curr_effective date NOT NULL, curr_expires date NOT NULL, CONSTRAINT curr_rate_curr_rate_check CHECK ((curr_rate > (0)::numeric)) ); DROP TABLE public.curr_rate; publicadminfalse63218$00TABLE curr_rateCOMMENTTCOMMENT ON TABLE curr_rate IS 'Exchange Rates Between Base and Foreign Currencies'; publicadminfalse396$00 curr_rateACLREVOKE ALL ON TABLE curr_rate FROM PUBLIC; REVOKE ALL ON TABLE curr_rate FROM admin; GRANT ALL ON TABLE curr_rate TO admin; GRANT ALL ON TABLE curr_rate TO xtrole; publicadminfalse39612591694521curr_rate_curr_rate_id_seqSEQUENCE|CREATE SEQUENCE curr_rate_curr_rate_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 1DROP SEQUENCE public.curr_rate_curr_rate_id_seq; publicadminfalse8396$00curr_rate_curr_rate_id_seqSEQUENCE OWNED BYKALTER SEQUENCE curr_rate_curr_rate_id_seq OWNED BY curr_rate.curr_rate_id; publicadminfalse397$00curr_rate_curr_rate_id_seq SEQUENCE SETASELECT pg_catalog.setval('curr_rate_curr_rate_id_seq', 1, true); publicadminfalse397$00curr_rate_curr_rate_id_seqACLREVOKE ALL ON SEQUENCE curr_rate_curr_rate_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE curr_rate_curr_rate_id_seq FROM admin; GRANT ALL ON SEQUENCE curr_rate_curr_rate_id_seq TO admin; GRANT ALL ON SEQUENCE curr_rate_curr_rate_id_seq TO xtrole; publicadminfalse39712591694523curr_symbol_curr_id_seqSEQUENCEyCREATE SEQUENCE curr_symbol_curr_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; .DROP SEQUENCE public.curr_symbol_curr_id_seq; publicadminfalse8156$00curr_symbol_curr_id_seqSEQUENCE OWNED BYEALTER SEQUENCE curr_symbol_curr_id_seq OWNED BY curr_symbol.curr_id; publicadminfalse398$00curr_symbol_curr_id_seq SEQUENCE SET>SELECT pg_catalog.setval('curr_symbol_curr_id_seq', 1, true); publicadminfalse398$00curr_symbol_curr_id_seqACLREVOKE ALL ON SEQUENCE curr_symbol_curr_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE curr_symbol_curr_id_seq FROM admin; GRANT ALL ON SEQUENCE curr_symbol_curr_id_seq TO admin; GRANT ALL ON SEQUENCE curr_symbol_curr_id_seq TO xtrole; publicadminfalse398X12592009492custVIEW>CREATE VIEW cust AS SELECT custinfo.cust_id, custinfo.cust_active, custinfo.cust_custtype_id, custinfo.cust_salesrep_id, custinfo.cust_commprcnt, custinfo.cust_name, m.addr_line1 AS cust_address1, m.addr_line2 AS cust_address2, m.addr_line3 AS cust_address3, m.addr_city AS cust_city, m.addr_state AS cust_state, m.addr_postalcode AS cust_zipcode, btrim(((mc.cntct_first_name || ' '::text) || mc.cntct_last_name)) AS cust_contact, mc.cntct_phone AS cust_phone, mc.cntct_fax AS cust_fax, mc.cntct_email AS cust_email, c.addr_line1 AS cust_corraddress1, c.addr_line2 AS cust_corraddress2, c.addr_line3 AS cust_corraddress3, c.addr_city AS cust_corrcity, c.addr_state AS cust_corrstate, c.addr_postalcode AS cust_corrzipcode, btrim(((cc.cntct_first_name || ' '::text) || cc.cntct_last_name)) AS cust_corrcontact, cc.cntct_phone AS cust_corrphone, cc.cntct_fax AS cust_corrfax, cc.cntct_email AS cust_corremail, custinfo.cust_creditlmt, custinfo.cust_creditrating, custinfo.cust_financecharge, custinfo.cust_backorder, custinfo.cust_partialship, custinfo.cust_terms_id, custinfo.cust_discntprcnt, custinfo.cust_taxzone_id, custinfo.cust_balmethod, custinfo.cust_ffshipto, custinfo.cust_shipform_id, custinfo.cust_shipvia, custinfo.cust_blanketpos, custinfo.cust_shipchrg_id, custinfo.cust_creditstatus, custinfo.cust_comments, custinfo.cust_ffbillto, m.addr_country AS cust_country, c.addr_country AS cust_corrcountry, custinfo.cust_usespos, custinfo.cust_number, custinfo.cust_dateadded, custinfo.cust_exported, custinfo.cust_emaildelivery, custinfo.cust_ediemail, custinfo.cust_edisubject, custinfo.cust_edifilename, custinfo.cust_ediemailbody, custinfo.cust_autoupdatestatus, custinfo.cust_autoholdorders, custinfo.cust_edicc, custinfo.cust_ediprofile_id, custinfo.cust_preferred_warehous_id, custinfo.cust_curr_id, custinfo.cust_creditlmt_curr_id FROM ((((custinfo LEFT JOIN cntct mc ON ((custinfo.cust_cntct_id = mc.cntct_id))) LEFT JOIN addr m ON ((mc.cntct_addr_id = m.addr_id))) LEFT JOIN cntct cc ON ((custinfo.cust_corrcntct_id = cc.cntct_id))) LEFT JOIN addr c ON ((cc.cntct_addr_id = c.addr_id))); DROP VIEW public.cust; publicadminfalse55528$00custACLREVOKE ALL ON TABLE cust FROM PUBLIC; REVOKE ALL ON TABLE cust FROM admin; GRANT ALL ON TABLE cust TO admin; GRANT ALL ON TABLE cust TO xtrole; publicadminfalse85612591694525cust_serial_seqSEQUENCEyCREATE SEQUENCE cust_serial_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; &DROP SEQUENCE public.cust_serial_seq; publicadminfalse8$00cust_serial_seq SEQUENCE SET7SELECT pg_catalog.setval('cust_serial_seq', 1, false); publicadminfalse399$00cust_serial_seqACLREVOKE ALL ON SEQUENCE cust_serial_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE cust_serial_seq FROM admin; GRANT ALL ON SEQUENCE cust_serial_seq TO admin; GRANT ALL ON SEQUENCE cust_serial_seq TO xtrole; publicadminfalse39912591694527custformTABLECREATE TABLE custform ( custform_id integer DEFAULT nextval(('"custform_custform_id_seq"'::text)::regclass) NOT NULL, custform_custtype_id integer, custform_custtype text, custform_invoice_report_id integer, custform_creditmemo_report_id integer, custform_quote_report_id integer, custform_packinglist_report_id integer, custform_statement_report_id integer, custform_sopicklist_report_id integer, custform_invoice_report_name text, custform_creditmemo_report_name text, custform_quote_report_name text, custform_packinglist_report_name text, custform_statement_report_name text, custform_sopicklist_report_name text ); DROP TABLE public.custform; publicadminfalse63228$00TABLE custformCOMMENTECOMMENT ON TABLE custform IS 'Customer Form assignment information'; publicadminfalse400$00*COLUMN custform.custform_invoice_report_idCOMMENTxCOMMENT ON COLUMN custform.custform_invoice_report_id IS 'Obsolete -- reference custform_invoice_report_name instead.'; publicadminfalse400$00-COLUMN custform.custform_creditmemo_report_idCOMMENT~COMMENT ON COLUMN custform.custform_creditmemo_report_id IS 'Obsolete -- reference custform_creditmemo_report_name instead.'; publicadminfalse400$00(COLUMN custform.custform_quote_report_idCOMMENTtCOMMENT ON COLUMN custform.custform_quote_report_id IS 'Obsolete -- reference custform_quote_report_name instead.'; publicadminfalse400$00.COLUMN custform.custform_packinglist_report_idCOMMENTCOMMENT ON COLUMN custform.custform_packinglist_report_id IS 'Obsolete -- reference custform_packinglist_report_name instead.'; publicadminfalse400$00,COLUMN custform.custform_statement_report_idCOMMENT|COMMENT ON COLUMN custform.custform_statement_report_id IS 'Obsolete -- reference custform_statement_report_name instead.'; publicadminfalse400%00-COLUMN custform.custform_sopicklist_report_idCOMMENT~COMMENT ON COLUMN custform.custform_sopicklist_report_id IS 'Obsolete -- reference custform_sopicklist_report_name instead.'; publicadminfalse400%00custformACLREVOKE ALL ON TABLE custform FROM PUBLIC; REVOKE ALL ON TABLE custform FROM admin; GRANT ALL ON TABLE custform TO admin; GRANT ALL ON TABLE custform TO xtrole; publicadminfalse40012591694534custform_custform_id_seqSEQUENCEzCREATE SEQUENCE custform_custform_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.custform_custform_id_seq; publicadminfalse8%00custform_custform_id_seq SEQUENCE SET?SELECT pg_catalog.setval('custform_custform_id_seq', 8, true); publicadminfalse401%00custform_custform_id_seqACLREVOKE ALL ON SEQUENCE custform_custform_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE custform_custform_id_seq FROM admin; GRANT ALL ON SEQUENCE custform_custform_id_seq TO admin; GRANT ALL ON SEQUENCE custform_custform_id_seq TO xtrole; publicadminfalse40112591694536custgrpTABLECREATE TABLE custgrp ( custgrp_id integer DEFAULT nextval(('"custgrp_custgrp_id_seq"'::text)::regclass) NOT NULL, custgrp_name text NOT NULL, custgrp_descrip text, CONSTRAINT custgrp_custgrp_name_check CHECK ((custgrp_name <> ''::text)) ); DROP TABLE public.custgrp; publicadminfalse632363248%00 TABLE custgrpCOMMENT:COMMENT ON TABLE custgrp IS 'Customer Group information'; publicadminfalse402%00custgrpACLREVOKE ALL ON TABLE custgrp FROM PUBLIC; REVOKE ALL ON TABLE custgrp FROM admin; GRANT ALL ON TABLE custgrp TO admin; GRANT ALL ON TABLE custgrp TO xtrole; publicadminfalse40212591694543custgrp_custgrp_id_seqSEQUENCExCREATE SEQUENCE custgrp_custgrp_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.custgrp_custgrp_id_seq; publicadminfalse8%00custgrp_custgrp_id_seq SEQUENCE SET>SELECT pg_catalog.setval('custgrp_custgrp_id_seq', 24, true); publicadminfalse403%00custgrp_custgrp_id_seqACLREVOKE ALL ON SEQUENCE custgrp_custgrp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE custgrp_custgrp_id_seq FROM admin; GRANT ALL ON SEQUENCE custgrp_custgrp_id_seq TO admin; GRANT ALL ON SEQUENCE custgrp_custgrp_id_seq TO xtrole; publicadminfalse40312591694545 custgrpitemTABLECREATE TABLE custgrpitem ( custgrpitem_id integer DEFAULT nextval(('"custgrpitem_custgrpitem_id_seq"'::text)::regclass) NOT NULL, custgrpitem_custgrp_id integer, custgrpitem_cust_id integer ); DROP TABLE public.custgrpitem; publicadminfalse63258%00TABLE custgrpitemCOMMENTCCOMMENT ON TABLE custgrpitem IS 'Customer Group Item information'; publicadminfalse404 %00 custgrpitemACLREVOKE ALL ON TABLE custgrpitem FROM PUBLIC; REVOKE ALL ON TABLE custgrpitem FROM admin; GRANT ALL ON TABLE custgrpitem TO admin; GRANT ALL ON TABLE custgrpitem TO xtrole; publicadminfalse40412591694549custgrpitem_custgrpitem_id_seqSEQUENCECREATE SEQUENCE custgrpitem_custgrpitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 5DROP SEQUENCE public.custgrpitem_custgrpitem_id_seq; publicadminfalse8 %00custgrpitem_custgrpitem_id_seq SEQUENCE SETFSELECT pg_catalog.setval('custgrpitem_custgrpitem_id_seq', 47, true); publicadminfalse405 %00custgrpitem_custgrpitem_id_seqACLREVOKE ALL ON SEQUENCE custgrpitem_custgrpitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE custgrpitem_custgrpitem_id_seq FROM admin; GRANT ALL ON SEQUENCE custgrpitem_custgrpitem_id_seq TO admin; GRANT ALL ON SEQUENCE custgrpitem_custgrpitem_id_seq TO xtrole; publicadminfalse40512591694551custtype_custtype_id_seqSEQUENCECREATE SEQUENCE custtype_custtype_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; /DROP SEQUENCE public.custtype_custtype_id_seq; publicadminfalse8 %00custtype_custtype_id_seq SEQUENCE SET@SELECT pg_catalog.setval('custtype_custtype_id_seq', 18, true); publicadminfalse406 %00custtype_custtype_id_seqACLREVOKE ALL ON SEQUENCE custtype_custtype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE custtype_custtype_id_seq FROM admin; GRANT ALL ON SEQUENCE custtype_custtype_id_seq TO admin; GRANT ALL ON SEQUENCE custtype_custtype_id_seq TO xtrole; publicadminfalse40612591694553dept_dept_id_seqSEQUENCErCREATE SEQUENCE dept_dept_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 'DROP SEQUENCE public.dept_dept_id_seq; publicadminfalse8213%00dept_dept_id_seqSEQUENCE OWNED BY7ALTER SEQUENCE dept_dept_id_seq OWNED BY dept.dept_id; publicadminfalse407%00dept_dept_id_seq SEQUENCE SET7SELECT pg_catalog.setval('dept_dept_id_seq', 2, true); publicadminfalse407%00dept_dept_id_seqACLREVOKE ALL ON SEQUENCE dept_dept_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE dept_dept_id_seq FROM admin; GRANT ALL ON SEQUENCE dept_dept_id_seq TO admin; GRANT ALL ON SEQUENCE dept_dept_id_seq TO xtrole; publicadminfalse40712591694555 destinationTABLECREATE TABLE destination ( destination_id integer DEFAULT nextval(('"destination_destination_id_seq"'::text)::regclass) NOT NULL, destination_name text, destination_city text, destination_state text, destination_comments text ); DROP TABLE public.destination; publicadminfalse63268%00TABLE destinationCOMMENT;COMMENT ON TABLE destination IS 'Destination information'; publicadminfalse408%00 destinationACLREVOKE ALL ON TABLE destination FROM PUBLIC; REVOKE ALL ON TABLE destination FROM admin; GRANT ALL ON TABLE destination TO admin; GRANT ALL ON TABLE destination TO xtrole; publicadminfalse40812591694562destination_destination_id_seqSEQUENCECREATE SEQUENCE destination_destination_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; 5DROP SEQUENCE public.destination_destination_id_seq; publicadminfalse8%00destination_destination_id_seq SEQUENCE SETFSELECT pg_catalog.setval('destination_destination_id_seq', 12, true); publicadminfalse409%00destination_destination_id_seqACLREVOKE ALL ON SEQUENCE destination_destination_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE destination_destination_id_seq FROM admin; GRANT ALL ON SEQUENCE destination_destination_id_seq TO admin; GRANT ALL ON SEQUENCE destination_destination_id_seq TO xtrole; publicadminfalse40912591694564woTABLECREATE TABLE wo ( wo_id integer DEFAULT nextval(('wo_wo_id_seq'::text)::regclass) NOT NULL, wo_number integer, wo_subnumber integer, wo_status character(1), wo_itemsite_id integer, wo_startdate date, wo_duedate date, wo_ordtype character(1), wo_ordid integer, wo_qtyord numeric(18,6), wo_qtyrcv numeric(18,6), wo_adhoc boolean, wo_itemcfg_series integer, wo_imported boolean, wo_wipvalue numeric(16,6) DEFAULT 0, wo_postedvalue numeric(16,6) DEFAULT 0, wo_prodnotes text, wo_prj_id integer, wo_priority integer DEFAULT 1 NOT NULL, wo_brdvalue numeric(16,6) DEFAULT 0, wo_bom_rev_id integer DEFAULT (-1), wo_boo_rev_id integer DEFAULT (-1), wo_cosmethod character(1), wo_womatl_id integer, wo_username text DEFAULT geteffectivextuser(), CONSTRAINT chk_wo_cosmethod CHECK ((((wo_cosmethod = NULL::bpchar) OR (wo_cosmethod = 'D'::bpchar)) OR (wo_cosmethod = 'P'::bpchar))) ); DROP TABLE public.wo; publicadminfalse6327632863296330633163326333633463358%00TABLE woCOMMENT1COMMENT ON TABLE wo IS 'Work Order information'; publicadminfalse410%00woACLREVOKE ALL ON TABLE wo FROM PUBLIC; REVOKE ALL ON TABLE wo FROM admin; GRANT ALL ON TABLE wo TO admin; GRANT ALL ON TABLE wo TO xtrole; publicadminfalse410I12592009421docinfoVIEW@CREATE VIEW docinfo AS (((((((((((((((((((((((((((((SELECT imageass.imageass_id AS id, (image.image_id)::text AS target_number, 'IMG' AS target_type, imageass.imageass_image_id AS target_id, imageass.imageass_source AS source_type, imageass.imageass_source_id AS source_id, image.image_name AS name, image.image_descrip AS description, imageass.imageass_purpose AS purpose FROM imageass, image WHERE (imageass.imageass_image_id = image.image_id) UNION ALL SELECT url.url_id AS id, (url.url_id)::text AS target_number, 'URL' AS target_type, url.url_id AS target_id, url.url_source AS source_type, url.url_source_id AS source_id, url.url_title AS name, url.url_url AS description, 'S' AS purpose FROM url WHERE (url.url_stream IS NULL)) UNION ALL SELECT url.url_id AS id, (url.url_id)::text AS target_number, 'FILE' AS target_type, url.url_id AS target_id, url.url_source AS source_type, url.url_source_id AS source_id, url.url_title AS name, url.url_url AS description, 'S' AS purpose FROM url WHERE (url.url_stream IS NOT NULL)) UNION ALL SELECT docass.docass_id AS id, (incdt.incdt_number)::text AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, incdt.incdt_summary AS name, firstline(incdt.incdt_descrip) AS description, docass.docass_purpose AS purpose FROM docass, incdt WHERE ((docass.docass_target_type = 'INCDT'::text) AND (docass.docass_target_id = incdt.incdt_id))) UNION ALL SELECT docass.docass_id AS id, (incdt.incdt_number)::text AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, incdt.incdt_summary AS name, firstline(incdt.incdt_descrip) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, incdt WHERE ((docass.docass_source_type = 'INCDT'::text) AND (docass.docass_source_id = incdt.incdt_id))) UNION ALL SELECT docass.docass_id AS id, (todoitem.todoitem_id)::text AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, todoitem.todoitem_name AS name, firstline(todoitem.todoitem_description) AS description, docass.docass_purpose AS purpose FROM docass, todoitem WHERE ((docass.docass_target_type = 'TODO'::text) AND (docass.docass_target_id = todoitem.todoitem_id))) UNION ALL SELECT docass.docass_id AS id, (todoitem.todoitem_id)::text AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, todoitem.todoitem_name AS name, firstline(todoitem.todoitem_description) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, todoitem WHERE ((docass.docass_source_type = 'TODO'::text) AND (docass.docass_source_id = todoitem.todoitem_id))) UNION ALL SELECT docass.docass_id AS id, prj.prj_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, prj.prj_name AS name, firstline(prj.prj_descrip) AS description, docass.docass_purpose AS purpose FROM docass, prj WHERE ((docass.docass_target_type = 'J'::text) AND (docass.docass_target_id = prj.prj_id))) UNION ALL SELECT docass.docass_id AS id, prj.prj_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, prj.prj_name AS name, firstline(prj.prj_descrip) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, prj WHERE ((docass.docass_source_type = 'J'::text) AND (docass.docass_source_id = prj.prj_id))) UNION ALL SELECT docass.docass_id AS id, item.item_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, firstline(item.item_descrip1) AS name, firstline(item.item_descrip2) AS description, docass.docass_purpose AS purpose FROM docass, item WHERE ((docass.docass_target_type = 'I'::text) AND (docass.docass_target_id = item.item_id))) UNION ALL SELECT docass.docass_id AS id, item.item_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, firstline(item.item_descrip1) AS name, firstline(item.item_descrip2) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, item WHERE ((docass.docass_source_type = 'I'::text) AND (docass.docass_source_id = item.item_id))) UNION ALL SELECT docass.docass_id AS id, crmacct.crmacct_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, crmacct.crmacct_name AS name, firstline(crmacct.crmacct_notes) AS description, docass.docass_purpose AS purpose FROM docass, crmacct WHERE ((docass.docass_target_type = 'CRMA'::text) AND (docass.docass_target_id = crmacct.crmacct_id))) UNION ALL SELECT docass.docass_id AS id, crmacct.crmacct_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, crmacct.crmacct_name AS name, firstline(crmacct.crmacct_notes) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, crmacct WHERE ((docass.docass_source_type = 'CRMA'::text) AND (docass.docass_source_id = crmacct.crmacct_id))) UNION SELECT docass.docass_id AS id, custinfo.cust_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, custinfo.cust_name AS name, firstline(custinfo.cust_comments) AS description, docass.docass_purpose AS purpose FROM docass, custinfo WHERE ((docass.docass_target_type = 'C'::text) AND (docass.docass_target_id = custinfo.cust_id))) UNION ALL SELECT docass.docass_id AS id, custinfo.cust_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, custinfo.cust_name AS name, firstline(custinfo.cust_comments) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, custinfo WHERE ((docass.docass_source_type = 'C'::text) AND (docass.docass_source_id = custinfo.cust_id))) UNION ALL SELECT docass.docass_id AS id, vendinfo.vend_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, vendinfo.vend_name AS name, firstline(vendinfo.vend_comments) AS description, docass.docass_purpose AS purpose FROM docass, vendinfo WHERE ((docass.docass_target_type = 'V'::text) AND (docass.docass_target_id = vendinfo.vend_id))) UNION ALL SELECT docass.docass_id AS id, vendinfo.vend_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, vendinfo.vend_name AS name, firstline(vendinfo.vend_comments) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, vendinfo WHERE ((docass.docass_source_type = 'V'::text) AND (docass.docass_source_id = vendinfo.vend_id))) UNION ALL SELECT docass.docass_id AS id, cntct.cntct_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, cntct.cntct_name AS name, cntct.cntct_title AS description, docass.docass_purpose AS purpose FROM docass, cntct WHERE ((docass.docass_target_type = 'T'::text) AND (docass.docass_target_id = cntct.cntct_id))) UNION ALL SELECT docass.docass_id AS id, cntct.cntct_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, cntct.cntct_name AS name, cntct.cntct_title AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, cntct WHERE ((docass.docass_source_type = 'T'::text) AND (docass.docass_source_id = cntct.cntct_id))) UNION ALL SELECT docass.docass_id AS id, (ophead.ophead_id)::text AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, ophead.ophead_name AS name, firstline(ophead.ophead_notes) AS description, docass.docass_purpose AS purpose FROM docass, ophead WHERE ((docass.docass_target_type = 'OPP'::text) AND (docass.docass_target_id = ophead.ophead_id))) UNION ALL SELECT docass.docass_id AS id, (ophead.ophead_id)::text AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, ophead.ophead_name AS name, firstline(ophead.ophead_notes) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, ophead WHERE ((docass.docass_source_type = 'OPP'::text) AND (docass.docass_source_id = ophead.ophead_id))) UNION ALL SELECT docass.docass_id AS id, quhead.quhead_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, custinfo.cust_name AS name, firstline(quhead.quhead_ordercomments) AS description, docass.docass_purpose AS purpose FROM docass, quhead, custinfo WHERE (((docass.docass_target_type = 'Q'::text) AND (docass.docass_target_id = quhead.quhead_id)) AND (custinfo.cust_id = quhead.quhead_cust_id))) UNION ALL SELECT docass.docass_id AS id, quhead.quhead_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, custinfo.cust_name AS name, firstline(quhead.quhead_ordercomments) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, quhead, custinfo WHERE (((docass.docass_source_type = 'Q'::text) AND (docass.docass_source_id = quhead.quhead_id)) AND (custinfo.cust_id = quhead.quhead_cust_id))) UNION ALL SELECT docass.docass_id AS id, cohead.cohead_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, custinfo.cust_name AS name, firstline(cohead.cohead_ordercomments) AS description, docass.docass_purpose AS purpose FROM docass, cohead, custinfo WHERE (((docass.docass_target_type = 'S'::text) AND (docass.docass_target_id = cohead.cohead_id)) AND (custinfo.cust_id = cohead.cohead_cust_id))) UNION ALL SELECT docass.docass_id AS id, cohead.cohead_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, custinfo.cust_name AS name, firstline(cohead.cohead_ordercomments) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, cohead, custinfo WHERE (((docass.docass_source_type = 'S'::text) AND (docass.docass_source_id = cohead.cohead_id)) AND (custinfo.cust_id = cohead.cohead_cust_id))) UNION ALL SELECT docass.docass_id AS id, pohead.pohead_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, vendinfo.vend_name AS name, firstline(pohead.pohead_comments) AS description, docass.docass_purpose AS purpose FROM docass, pohead, vendinfo WHERE (((docass.docass_target_type = 'P'::text) AND (docass.docass_target_id = pohead.pohead_id)) AND (vendinfo.vend_id = pohead.pohead_vend_id))) UNION ALL SELECT docass.docass_id AS id, pohead.pohead_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, vendinfo.vend_name AS name, firstline(pohead.pohead_comments) AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, pohead, vendinfo WHERE (((docass.docass_source_type = 'P'::text) AND (docass.docass_source_id = pohead.pohead_id)) AND (vendinfo.vend_id = pohead.pohead_vend_id))) UNION ALL SELECT docass.docass_id AS id, formatwonumber(wo.wo_id) AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, item.item_descrip1 AS name, item.item_descrip2 AS description, docass.docass_purpose AS purpose FROM docass, wo, itemsite, item WHERE ((((docass.docass_target_type = 'W'::text) AND (docass.docass_target_id = wo.wo_id)) AND (wo.wo_itemsite_id = itemsite.itemsite_id)) AND (itemsite.itemsite_item_id = item.item_id))) UNION ALL SELECT docass.docass_id AS id, formatwonumber(wo.wo_id) AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, item.item_descrip1 AS name, item.item_descrip2 AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, wo, itemsite, item WHERE ((((docass.docass_source_type = 'W'::text) AND (docass.docass_source_id = wo.wo_id)) AND (wo.wo_itemsite_id = itemsite.itemsite_id)) AND (itemsite.itemsite_item_id = item.item_id))) UNION ALL SELECT docass.docass_id AS id, emp.emp_number AS target_number, docass.docass_target_type AS target_type, docass.docass_target_id AS target_id, docass.docass_source_type AS source_type, docass.docass_source_id AS source_id, cntct.cntct_name AS name, cntct.cntct_title AS description, docass.docass_purpose AS purpose FROM docass, (emp LEFT JOIN cntct ON ((emp.emp_cntct_id = cntct.cntct_id))) WHERE ((docass.docass_target_type = 'EMP'::text) AND (docass.docass_target_id = emp.emp_id))) UNION ALL SELECT docass.docass_id AS id, emp.emp_number AS target_number, docass.docass_source_type AS target_type, docass.docass_source_id AS target_id, docass.docass_target_type AS source_type, docass.docass_target_id AS source_id, cntct.cntct_name AS name, cntct.cntct_title AS description, CASE WHEN (docass.docass_purpose = 'A'::bpchar) THEN 'C'::bpchar WHEN (docass.docass_purpose = 'C'::bpchar) THEN 'A'::bpchar ELSE docass.docass_purpose END AS purpose FROM docass, (emp LEFT JOIN cntct ON ((emp.emp_cntct_id = cntct.cntct_id))) WHERE ((docass.docass_source_type = 'EMP'::text) AND (docass.docass_source_id = emp.emp_id)); DROP VIEW public.docinfo; publicadminfalse55378%00docinfoACLREVOKE ALL ON TABLE docinfo FROM PUBLIC; REVOKE ALL ON TABLE docinfo FROM admin; GRANT ALL ON TABLE docinfo TO admin; GRANT ALL ON TABLE docinfo TO xtrole; publicadminfalse84112591694584emp_emp_id_seqSEQUENCEpCREATE SEQUENCE emp_emp_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; %DROP SEQUENCE public.emp_emp_id_seq; publicadminfalse8214%00emp_emp_id_seqSEQUENCE OWNED BY3ALTER SEQUENCE emp_emp_id_seq OWNED BY emp.emp_id; publicadminfalse411%00emp_emp_id_seq SEQUENCE SET5SELECT pg_catalog.setval('emp_emp_id_seq', 2, true); publicadminfalse411%00emp_emp_id_seqACLREVOKE ALL ON SEQUENCE emp_emp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE emp_emp_id_seq FROM admin; GRANT ALL ON SEQUENCE emp_emp_id_seq TO admin; GRANT ALL ON SEQUENCE emp_emp_id_seq TO xtrole; publicadminfalse41112591694586empgrpTABLECREATE TABLE empgrp ( empgrp_id integer NOT NULL, empgrp_name text NOT NULL, empgrp_descrip text NOT NULL, CONSTRAINT empgrp_empgrp_name_check CHECK ((empgrp_name <> ''::text)) ); DROP TABLE public.empgrp; publicadminfalse63378%00empgrpACLREVOKE ALL ON TABLE empgrp FROM PUBLIC; REVOKE ALL ON TABLE empgrp FROM admin; GRANT ALL ON TABLE empgrp TO admin; GRANT ALL ON TABLE empgrp TO xtrole; publicadminfalse41212591694592empgrp_empgrp_id_seqSEQUENCEvCREATE SEQUENCE empgrp_empgrp_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.empgrp_empgrp_id_seq; publicadminfalse8412%00empgrp_empgrp_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE empgrp_empgrp_id_seq OWNED BY empgrp.empgrp_id; publicadminfalse413%00empgrp_empgrp_id_seq SEQUENCE SET<SELECT pg_catalog.setval('empgrp_empgrp_id_seq', 1, false); publicadminfalse413%00empgrp_empgrp_id_seqACLREVOKE ALL ON SEQUENCE empgrp_empgrp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE empgrp_empgrp_id_seq FROM admin; GRANT ALL ON SEQUENCE empgrp_empgrp_id_seq TO admin; GRANT ALL ON SEQUENCE empgrp_empgrp_id_seq TO xtrole; publicadminfalse41312591694594 empgrpitemTABLECREATE TABLE empgrpitem ( empgrpitem_id integer NOT NULL, empgrpitem_empgrp_id integer NOT NULL, empgrpitem_emp_id integer NOT NULL ); DROP TABLE public.empgrpitem; publicadminfalse8%00 empgrpitemACLREVOKE ALL ON TABLE empgrpitem FROM PUBLIC; REVOKE ALL ON TABLE empgrpitem FROM admin; GRANT ALL ON TABLE empgrpitem TO admin; GRANT ALL ON TABLE empgrpitem TO xtrole; publicadminfalse41412591694597empgrpitem_empgrpitem_id_seqSEQUENCE~CREATE SEQUENCE empgrpitem_empgrpitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 3DROP SEQUENCE public.empgrpitem_empgrpitem_id_seq; publicadminfalse8414 %00empgrpitem_empgrpitem_id_seqSEQUENCE OWNED BYOALTER SEQUENCE empgrpitem_empgrpitem_id_seq OWNED BY empgrpitem.empgrpitem_id; publicadminfalse415!%00empgrpitem_empgrpitem_id_seq SEQUENCE SETDSELECT pg_catalog.setval('empgrpitem_empgrpitem_id_seq', 1, false); publicadminfalse415"%00empgrpitem_empgrpitem_id_seqACLREVOKE ALL ON SEQUENCE empgrpitem_empgrpitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE empgrpitem_empgrpitem_id_seq FROM admin; GRANT ALL ON SEQUENCE empgrpitem_empgrpitem_id_seq TO admin; GRANT ALL ON SEQUENCE empgrpitem_empgrpitem_id_seq TO xtrole; publicadminfalse41512591694599evntlogTABLE!CREATE TABLE evntlog ( evntlog_id integer DEFAULT nextval(('evntlog_evntlog_id_seq'::text)::regclass) NOT NULL, evntlog_evnttime timestamp with time zone, evntlog_evnttype_id integer, evntlog_ord_id integer, evntlog_dispatched timestamp with time zone, evntlog_action text, evntlog_warehous_id integer, evntlog_number text, evntlog_newvalue numeric(20,10), evntlog_oldvalue numeric(20,10), evntlog_newdate date, evntlog_olddate date, evntlog_ordtype character(2), evntlog_username text ); DROP TABLE public.evntlog; publicadminfalse63398#%00 TABLE evntlogCOMMENT:COMMENT ON TABLE evntlog IS 'Event Notification history'; publicadminfalse416$%00evntlogACLREVOKE ALL ON TABLE evntlog FROM PUBLIC; REVOKE ALL ON TABLE evntlog FROM admin; GRANT ALL ON TABLE evntlog TO admin; GRANT ALL ON TABLE evntlog TO xtrole; publicadminfalse41612591694606evntlog_evntlog_id_seqSEQUENCECREATE SEQUENCE evntlog_evntlog_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.evntlog_evntlog_id_seq; publicadminfalse8%%00evntlog_evntlog_id_seq SEQUENCE SET?SELECT pg_catalog.setval('evntlog_evntlog_id_seq', 262, true); publicadminfalse417&%00evntlog_evntlog_id_seqACLREVOKE ALL ON SEQUENCE evntlog_evntlog_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE evntlog_evntlog_id_seq FROM admin; GRANT ALL ON SEQUENCE evntlog_evntlog_id_seq TO admin; GRANT ALL ON SEQUENCE evntlog_evntlog_id_seq TO xtrole; publicadminfalse41712591694608evntnotTABLECREATE TABLE evntnot ( evntnot_id integer DEFAULT nextval(('evntnot_evntnot_id_seq'::text)::regclass) NOT NULL, evntnot_evnttype_id integer, evntnot_warehous_id integer, evntnot_username text ); DROP TABLE public.evntnot; publicadminfalse63408'%00 TABLE evntnotCOMMENTpCOMMENT ON TABLE evntnot IS 'Temporary table for storing information about user Event Notification selections'; publicadminfalse418(%00evntnotACLREVOKE ALL ON TABLE evntnot FROM PUBLIC; REVOKE ALL ON TABLE evntnot FROM admin; GRANT ALL ON TABLE evntnot TO admin; GRANT ALL ON TABLE evntnot TO xtrole; publicadminfalse41812591694615evntnot_evntnot_id_seqSEQUENCECREATE SEQUENCE evntnot_evntnot_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.evntnot_evntnot_id_seq; publicadminfalse8)%00evntnot_evntnot_id_seq SEQUENCE SET?SELECT pg_catalog.setval('evntnot_evntnot_id_seq', 819, true); publicadminfalse419*%00evntnot_evntnot_id_seqACLREVOKE ALL ON SEQUENCE evntnot_evntnot_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE evntnot_evntnot_id_seq FROM admin; GRANT ALL ON SEQUENCE evntnot_evntnot_id_seq TO admin; GRANT ALL ON SEQUENCE evntnot_evntnot_id_seq TO xtrole; publicadminfalse41912591694617evnttypeTABLE!CREATE TABLE evnttype ( evnttype_id integer DEFAULT nextval(('evnttype_evnttype_id_seq'::text)::regclass) NOT NULL, evnttype_name text NOT NULL, evnttype_descrip text, evnttype_module text, CONSTRAINT evnttype_evnttype_name_check CHECK ((evnttype_name <> ''::text)) ); DROP TABLE public.evnttype; publicadminfalse634163428+%00TABLE evnttypeCOMMENT7COMMENT ON TABLE evnttype IS 'Event Type information'; publicadminfalse420,%00evnttypeACLREVOKE ALL ON TABLE evnttype FROM PUBLIC; REVOKE ALL ON TABLE evnttype FROM admin; GRANT ALL ON TABLE evnttype TO admin; GRANT ALL ON TABLE evnttype TO xtrole; publicadminfalse42012591694624evnttype_evnttype_id_seqSEQUENCECREATE SEQUENCE evnttype_evnttype_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; /DROP SEQUENCE public.evnttype_evnttype_id_seq; publicadminfalse8-%00evnttype_evnttype_id_seq SEQUENCE SET@SELECT pg_catalog.setval('evnttype_evnttype_id_seq', 45, true); publicadminfalse421.%00evnttype_evnttype_id_seqACLREVOKE ALL ON SEQUENCE evnttype_evnttype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE evnttype_evnttype_id_seq FROM admin; GRANT ALL ON SEQUENCE evnttype_evnttype_id_seq TO admin; GRANT ALL ON SEQUENCE evnttype_evnttype_id_seq TO xtrole; publicadminfalse42112591694626expcat_expcat_id_seqSEQUENCEvCREATE SEQUENCE expcat_expcat_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.expcat_expcat_id_seq; publicadminfalse8245/%00expcat_expcat_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE expcat_expcat_id_seq OWNED BY expcat.expcat_id; publicadminfalse4220%00expcat_expcat_id_seq SEQUENCE SET<SELECT pg_catalog.setval('expcat_expcat_id_seq', 19, true); publicadminfalse4221%00expcat_expcat_id_seqACLREVOKE ALL ON SEQUENCE expcat_expcat_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE expcat_expcat_id_seq FROM admin; GRANT ALL ON SEQUENCE expcat_expcat_id_seq TO admin; GRANT ALL ON SEQUENCE expcat_expcat_id_seq TO xtrole; publicadminfalse42212591694628file_file_id_seqSEQUENCErCREATE SEQUENCE file_file_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 'DROP SEQUENCE public.file_file_id_seq; publicadminfalse81902%00file_file_id_seqSEQUENCE OWNED BY7ALTER SEQUENCE file_file_id_seq OWNED BY file.file_id; publicadminfalse4233%00file_file_id_seq SEQUENCE SET8SELECT pg_catalog.setval('file_file_id_seq', 1, false); publicadminfalse4234%00file_file_id_seqACLREVOKE ALL ON SEQUENCE file_file_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE file_file_id_seq FROM admin; GRANT ALL ON SEQUENCE file_file_id_seq TO admin; GRANT ALL ON SEQUENCE file_file_id_seq TO xtrole; publicadminfalse42312591694630filterTABLECREATE TABLE filter ( filter_id integer NOT NULL, filter_screen text NOT NULL, filter_value text NOT NULL, filter_username text, filter_name text NOT NULL, filter_selected boolean DEFAULT false ); DROP TABLE public.filter; publicadminfalse634485%00filterACLREVOKE ALL ON TABLE filter FROM PUBLIC; REVOKE ALL ON TABLE filter FROM admin; GRANT ALL ON TABLE filter TO admin; GRANT ALL ON TABLE filter TO xtrole; publicadminfalse42412591694637filter_filter_id_seqSEQUENCEvCREATE SEQUENCE filter_filter_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.filter_filter_id_seq; publicadminfalse84246%00filter_filter_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE filter_filter_id_seq OWNED BY filter.filter_id; publicadminfalse4257%00filter_filter_id_seq SEQUENCE SET<SELECT pg_catalog.setval('filter_filter_id_seq', 1, false); publicadminfalse4258%00filter_filter_id_seqACLREVOKE ALL ON SEQUENCE filter_filter_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE filter_filter_id_seq FROM admin; GRANT ALL ON SEQUENCE filter_filter_id_seq TO admin; GRANT ALL ON SEQUENCE filter_filter_id_seq TO xtrole; publicadminfalse42512591694639flheadTABLE:CREATE TABLE flhead ( flhead_id integer NOT NULL, flhead_name text NOT NULL, flhead_descrip text, flhead_showtotal boolean DEFAULT false NOT NULL, flhead_showstart boolean DEFAULT true NOT NULL, flhead_showend boolean DEFAULT true NOT NULL, flhead_showdelta boolean DEFAULT true NOT NULL, flhead_showbudget boolean DEFAULT true NOT NULL, flhead_showdiff boolean DEFAULT false NOT NULL, flhead_showcustom boolean DEFAULT false NOT NULL, flhead_custom_label text, flhead_usealttotal boolean DEFAULT false NOT NULL, flhead_alttotal text, flhead_usealtbegin boolean DEFAULT false NOT NULL, flhead_altbegin text, flhead_usealtend boolean DEFAULT false NOT NULL, flhead_altend text, flhead_usealtdebits boolean DEFAULT false NOT NULL, flhead_altdebits text, flhead_usealtcredits boolean DEFAULT false NOT NULL, flhead_altcredits text, flhead_usealtbudget boolean DEFAULT false NOT NULL, flhead_altbudget text, flhead_usealtdiff boolean DEFAULT false NOT NULL, flhead_altdiff text, flhead_type character(1) DEFAULT 'A'::bpchar NOT NULL, flhead_active boolean DEFAULT true NOT NULL, flhead_sys boolean DEFAULT false, flhead_notes text DEFAULT ''::text, CONSTRAINT flhead_flhead_name_check CHECK ((flhead_name <> ''::text)) ); DROP TABLE public.flhead; publicadminfalse634563466347634863496350635163526353635463556356635763586359636063616362636489%00 TABLE flheadCOMMENTBCOMMENT ON TABLE flhead IS 'Financial Layout header information'; publicadminfalse426:%00flheadACLREVOKE ALL ON TABLE flhead FROM PUBLIC; REVOKE ALL ON TABLE flhead FROM admin; GRANT ALL ON TABLE flhead TO admin; GRANT ALL ON TABLE flhead TO xtrole; publicadminfalse42612591694663flitemTABLE0CREATE TABLE flitem ( flitem_id integer NOT NULL, flitem_flhead_id integer, flitem_flgrp_id integer, flitem_order integer, flitem_accnt_id integer, flitem_showstart boolean, flitem_showend boolean, flitem_showdelta boolean, flitem_showbudget boolean DEFAULT false NOT NULL, flitem_subtract boolean DEFAULT false NOT NULL, flitem_showstartprcnt boolean DEFAULT false NOT NULL, flitem_showendprcnt boolean DEFAULT false NOT NULL, flitem_showdeltaprcnt boolean DEFAULT false NOT NULL, flitem_showbudgetprcnt boolean DEFAULT false NOT NULL, flitem_prcnt_flgrp_id integer DEFAULT (-1) NOT NULL, flitem_showdiff boolean DEFAULT false NOT NULL, flitem_showdiffprcnt boolean DEFAULT false NOT NULL, flitem_showcustom boolean DEFAULT false NOT NULL, flitem_showcustomprcnt boolean DEFAULT false NOT NULL, flitem_custom_source character(1), flitem_company text, flitem_profit text, flitem_number text, flitem_sub text, flitem_type character(1), flitem_subaccnttype_code text ); DROP TABLE public.flitem; publicadminfalse636563666367636863696370637163726373637463758;%00 TABLE flitemCOMMENTCCOMMENT ON TABLE flitem IS 'Financial Layout Account information'; publicadminfalse427<%00flitemACLREVOKE ALL ON TABLE flitem FROM PUBLIC; REVOKE ALL ON TABLE flitem FROM admin; GRANT ALL ON TABLE flitem TO admin; GRANT ALL ON TABLE flitem TO xtrole; publicadminfalse427J12592009426flaccntVIEW CREATE VIEW flaccnt AS SELECT flhead.flhead_type, flitem.flitem_id, flitem.flitem_flhead_id, flitem.flitem_flgrp_id, flitem.flitem_order, flitem.flitem_accnt_id, flitem.flitem_showstart, flitem.flitem_showend, flitem.flitem_showdelta, flitem.flitem_showbudget, flitem.flitem_subtract, flitem.flitem_showstartprcnt, flitem.flitem_showendprcnt, flitem.flitem_showdeltaprcnt, flitem.flitem_showbudgetprcnt, flitem.flitem_prcnt_flgrp_id, flitem.flitem_showdiff, flitem.flitem_showdiffprcnt, flitem.flitem_showcustom, flitem.flitem_showcustomprcnt, flitem.flitem_custom_source, flitem.flitem_company, flitem.flitem_profit, flitem.flitem_number, flitem.flitem_sub, flitem.flitem_type, flitem.flitem_subaccnttype_code, accnt.accnt_id, accnt.accnt_type, accnt.accnt_company, accnt.accnt_profit, accnt.accnt_number, accnt.accnt_sub, (-1) AS prj_id FROM ((flhead JOIN flitem ON ((flhead.flhead_id = flitem.flitem_flhead_id))) JOIN accnt ON ((flitem.flitem_accnt_id = accnt.accnt_id))) UNION ALL SELECT flhead.flhead_type, flitem.flitem_id, flitem.flitem_flhead_id, flitem.flitem_flgrp_id, flitem.flitem_order, flitem.flitem_accnt_id, flitem.flitem_showstart, flitem.flitem_showend, flitem.flitem_showdelta, flitem.flitem_showbudget, flitem.flitem_subtract, flitem.flitem_showstartprcnt, flitem.flitem_showendprcnt, flitem.flitem_showdeltaprcnt, flitem.flitem_showbudgetprcnt, flitem.flitem_prcnt_flgrp_id, flitem.flitem_showdiff, flitem.flitem_showdiffprcnt, flitem.flitem_showcustom, flitem.flitem_showcustomprcnt, flitem.flitem_custom_source, flitem.flitem_company, flitem.flitem_profit, flitem.flitem_number, flitem.flitem_sub, flitem.flitem_type, flitem.flitem_subaccnttype_code, accnt.accnt_id, accnt.accnt_type, accnt.accnt_company, accnt.accnt_profit, accnt.accnt_number, accnt.accnt_sub, (-1) AS prj_id FROM (flhead JOIN flitem ON ((flhead.flhead_id = flitem.flitem_flhead_id))), accnt WHERE (((((((flitem.flitem_accnt_id = (-1)) AND ((flitem.flitem_type = ''::bpchar) OR (accnt.accnt_type = flitem.flitem_type))) AND ((flitem.flitem_company = 'All'::text) OR (accnt.accnt_company = flitem.flitem_company))) AND ((flitem.flitem_profit = 'All'::text) OR (accnt.accnt_profit = flitem.flitem_profit))) AND ((flitem.flitem_number = 'All'::text) OR (accnt.accnt_number = flitem.flitem_number))) AND ((flitem.flitem_sub = 'All'::text) OR (accnt.accnt_sub = flitem.flitem_sub))) AND ((flitem.flitem_subaccnttype_code = 'All'::text) OR (accnt.accnt_subaccnttype_code = flitem.flitem_subaccnttype_code))) ORDER BY 30, 31, 32, 33; DROP VIEW public.flaccnt; publicadminfalse55388=%00flaccntACLREVOKE ALL ON TABLE flaccnt FROM PUBLIC; REVOKE ALL ON TABLE flaccnt FROM admin; GRANT ALL ON TABLE flaccnt TO admin; GRANT ALL ON TABLE flaccnt TO xtrole; publicadminfalse84212591694685flcolTABLE~CREATE TABLE flcol ( flcol_id integer NOT NULL, flcol_flhead_id integer NOT NULL, flcol_name text, flcol_descrip text, flcol_report_id integer, flcol_month boolean, flcol_quarter boolean, flcol_year boolean, flcol_showdb boolean, flcol_prcnt boolean, flcol_priortype character(1), flcol_priormonth boolean, flcol_priorquarter boolean, flcol_prioryear character(1), flcol_priorprcnt boolean, flcol_priordiff boolean, flcol_priordiffprcnt boolean, flcol_budget boolean, flcol_budgetprcnt boolean, flcol_budgetdiff boolean, flcol_budgetdiffprcnt boolean ); DROP TABLE public.flcol; publicadminfalse8>%00flcolACLREVOKE ALL ON TABLE flcol FROM PUBLIC; REVOKE ALL ON TABLE flcol FROM admin; GRANT ALL ON TABLE flcol TO admin; GRANT ALL ON TABLE flcol TO xtrole; publicadminfalse42812591694691flcol_flcol_id_seqSEQUENCEtCREATE SEQUENCE flcol_flcol_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; )DROP SEQUENCE public.flcol_flcol_id_seq; publicadminfalse8428?%00flcol_flcol_id_seqSEQUENCE OWNED BY;ALTER SEQUENCE flcol_flcol_id_seq OWNED BY flcol.flcol_id; publicadminfalse429@%00flcol_flcol_id_seq SEQUENCE SET:SELECT pg_catalog.setval('flcol_flcol_id_seq', 24, true); publicadminfalse429A%00flcol_flcol_id_seqACLREVOKE ALL ON SEQUENCE flcol_flcol_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE flcol_flcol_id_seq FROM admin; GRANT ALL ON SEQUENCE flcol_flcol_id_seq TO admin; GRANT ALL ON SEQUENCE flcol_flcol_id_seq TO xtrole; publicadminfalse42912591694693flgrpTABLEdCREATE TABLE flgrp ( flgrp_id integer NOT NULL, flgrp_flhead_id integer, flgrp_flgrp_id integer, flgrp_order integer, flgrp_name text, flgrp_descrip text, flgrp_subtotal boolean DEFAULT false NOT NULL, flgrp_summarize boolean DEFAULT false NOT NULL, flgrp_subtract boolean DEFAULT false NOT NULL, flgrp_showstart boolean DEFAULT true NOT NULL, flgrp_showend boolean DEFAULT true NOT NULL, flgrp_showdelta boolean DEFAULT true NOT NULL, flgrp_showbudget boolean DEFAULT true NOT NULL, flgrp_showstartprcnt boolean DEFAULT false NOT NULL, flgrp_showendprcnt boolean DEFAULT false NOT NULL, flgrp_showdeltaprcnt boolean DEFAULT false NOT NULL, flgrp_showbudgetprcnt boolean DEFAULT false NOT NULL, flgrp_prcnt_flgrp_id integer DEFAULT (-1) NOT NULL, flgrp_showdiff boolean DEFAULT false NOT NULL, flgrp_showdiffprcnt boolean DEFAULT false NOT NULL, flgrp_showcustom boolean DEFAULT false NOT NULL, flgrp_showcustomprcnt boolean DEFAULT false NOT NULL, flgrp_usealtsubtotal boolean DEFAULT false NOT NULL, flgrp_altsubtotal text ); DROP TABLE public.flgrp; publicadminfalse637863796380638163826383638463856386638763886389639063916392639363948B%00 TABLE flgrpCOMMENT@COMMENT ON TABLE flgrp IS 'Financial Layout Group information'; publicadminfalse430C%00flgrpACLREVOKE ALL ON TABLE flgrp FROM PUBLIC; REVOKE ALL ON TABLE flgrp FROM admin; GRANT ALL ON TABLE flgrp TO admin; GRANT ALL ON TABLE flgrp TO xtrole; publicadminfalse43012591694716flgrp_flgrp_id_seqSEQUENCEtCREATE SEQUENCE flgrp_flgrp_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; )DROP SEQUENCE public.flgrp_flgrp_id_seq; publicadminfalse8430D%00flgrp_flgrp_id_seqSEQUENCE OWNED BY;ALTER SEQUENCE flgrp_flgrp_id_seq OWNED BY flgrp.flgrp_id; publicadminfalse431E%00flgrp_flgrp_id_seq SEQUENCE SET;SELECT pg_catalog.setval('flgrp_flgrp_id_seq', 111, true); publicadminfalse431F%00flgrp_flgrp_id_seqACLREVOKE ALL ON SEQUENCE flgrp_flgrp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE flgrp_flgrp_id_seq FROM admin; GRANT ALL ON SEQUENCE flgrp_flgrp_id_seq TO admin; GRANT ALL ON SEQUENCE flgrp_flgrp_id_seq TO xtrole; publicadminfalse43112591694718flhead_flhead_id_seqSEQUENCEvCREATE SEQUENCE flhead_flhead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.flhead_flhead_id_seq; publicadminfalse8426G%00flhead_flhead_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE flhead_flhead_id_seq OWNED BY flhead.flhead_id; publicadminfalse432H%00flhead_flhead_id_seq SEQUENCE SET<SELECT pg_catalog.setval('flhead_flhead_id_seq', 16, true); publicadminfalse432I%00flhead_flhead_id_seqACLREVOKE ALL ON SEQUENCE flhead_flhead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE flhead_flhead_id_seq FROM admin; GRANT ALL ON SEQUENCE flhead_flhead_id_seq TO admin; GRANT ALL ON SEQUENCE flhead_flhead_id_seq TO xtrole; publicadminfalse43212591694720flitem_flitem_id_seqSEQUENCEvCREATE SEQUENCE flitem_flitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.flitem_flitem_id_seq; publicadminfalse8427J%00flitem_flitem_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE flitem_flitem_id_seq OWNED BY flitem.flitem_id; publicadminfalse433K%00flitem_flitem_id_seq SEQUENCE SET=SELECT pg_catalog.setval('flitem_flitem_id_seq', 255, true); publicadminfalse433L%00flitem_flitem_id_seqACLREVOKE ALL ON SEQUENCE flitem_flitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE flitem_flitem_id_seq FROM admin; GRANT ALL ON SEQUENCE flitem_flitem_id_seq TO admin; GRANT ALL ON SEQUENCE flitem_flitem_id_seq TO xtrole; publicadminfalse43312591694722flnotesTABLECREATE TABLE flnotes ( flnotes_id integer NOT NULL, flnotes_flhead_id integer, flnotes_period_id integer, flnotes_notes text DEFAULT ''::text ); DROP TABLE public.flnotes; publicadminfalse63978M%00flnotesACLREVOKE ALL ON TABLE flnotes FROM PUBLIC; REVOKE ALL ON TABLE flnotes FROM admin; GRANT ALL ON TABLE flnotes TO admin; GRANT ALL ON TABLE flnotes TO xtrole; publicadminfalse43412591694729flnotes_flnotes_id_seqSEQUENCExCREATE SEQUENCE flnotes_flnotes_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.flnotes_flnotes_id_seq; publicadminfalse8434N%00flnotes_flnotes_id_seqSEQUENCE OWNED BYCALTER SEQUENCE flnotes_flnotes_id_seq OWNED BY flnotes.flnotes_id; publicadminfalse435O%00flnotes_flnotes_id_seq SEQUENCE SET>SELECT pg_catalog.setval('flnotes_flnotes_id_seq', 1, false); publicadminfalse435P%00flnotes_flnotes_id_seqACLREVOKE ALL ON SEQUENCE flnotes_flnotes_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE flnotes_flnotes_id_seq FROM admin; GRANT ALL ON SEQUENCE flnotes_flnotes_id_seq TO admin; GRANT ALL ON SEQUENCE flnotes_flnotes_id_seq TO xtrole; publicadminfalse43512591694731flrptTABLE/CREATE TABLE flrpt ( flrpt_flhead_id integer NOT NULL, flrpt_period_id integer NOT NULL, flrpt_username text NOT NULL, flrpt_order integer NOT NULL, flrpt_level integer NOT NULL, flrpt_type text NOT NULL, flrpt_type_id integer NOT NULL, flrpt_beginning numeric, flrpt_ending numeric, flrpt_debits numeric, flrpt_credits numeric, flrpt_budget numeric, flrpt_beginningprcnt numeric, flrpt_endingprcnt numeric, flrpt_debitsprcnt numeric, flrpt_creditsprcnt numeric, flrpt_budgetprcnt numeric, flrpt_parent_id integer, flrpt_diff numeric, flrpt_diffprcnt numeric, flrpt_custom numeric, flrpt_customprcnt numeric, flrpt_altname text, flrpt_accnt_id integer, flrpt_interval character(1), flrpt_id integer NOT NULL ); DROP TABLE public.flrpt; publicadminfalse8Q%00 TABLE flrptCOMMENTvCOMMENT ON TABLE flrpt IS 'Scratch table where financial reporting information is processed before being displayed.'; publicadminfalse436R%00flrptACLREVOKE ALL ON TABLE flrpt FROM PUBLIC; REVOKE ALL ON TABLE flrpt FROM admin; GRANT ALL ON TABLE flrpt TO admin; GRANT ALL ON TABLE flrpt TO xtrole; publicadminfalse43612591694737flrpt_flrpt_id_seqSEQUENCEtCREATE SEQUENCE flrpt_flrpt_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; )DROP SEQUENCE public.flrpt_flrpt_id_seq; publicadminfalse8436S%00flrpt_flrpt_id_seqSEQUENCE OWNED BY;ALTER SEQUENCE flrpt_flrpt_id_seq OWNED BY flrpt.flrpt_id; publicadminfalse437T%00flrpt_flrpt_id_seq SEQUENCE SET<SELECT pg_catalog.setval('flrpt_flrpt_id_seq', 2378, true); publicadminfalse437U%00flrpt_flrpt_id_seqACLREVOKE ALL ON SEQUENCE flrpt_flrpt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE flrpt_flrpt_id_seq FROM admin; GRANT ALL ON SEQUENCE flrpt_flrpt_id_seq TO admin; GRANT ALL ON SEQUENCE flrpt_flrpt_id_seq TO xtrole; publicadminfalse43712591694739flspecTABLECREATE TABLE flspec ( flspec_id integer NOT NULL, flspec_flhead_id integer NOT NULL, flspec_flgrp_id integer NOT NULL, flspec_order integer NOT NULL, flspec_name text, flspec_type text, flspec_showstart boolean DEFAULT true NOT NULL, flspec_showend boolean DEFAULT true NOT NULL, flspec_showdelta boolean DEFAULT true NOT NULL, flspec_showbudget boolean DEFAULT false NOT NULL, flspec_subtract boolean DEFAULT false NOT NULL, flspec_showstartprcnt boolean DEFAULT false NOT NULL, flspec_showendprcnt boolean DEFAULT false NOT NULL, flspec_showdeltaprcnt boolean DEFAULT false NOT NULL, flspec_showbudgetprcnt boolean DEFAULT false NOT NULL, flspec_showdiff boolean DEFAULT false NOT NULL, flspec_showdiffprcnt boolean DEFAULT false NOT NULL, flspec_prcnt_flgrp_id integer DEFAULT (-1) NOT NULL, flspec_showcustom boolean DEFAULT false NOT NULL, flspec_showcustomprcnt boolean DEFAULT false NOT NULL, flspec_custom_source character(1) ); DROP TABLE public.flspec; publicadminfalse639964006401640264036404640564066407640864096410641164128V%00 TABLE flspecCOMMENT@COMMENT ON TABLE flspec IS 'Financial Layout Special entries.'; publicadminfalse438W%00flspecACLREVOKE ALL ON TABLE flspec FROM PUBLIC; REVOKE ALL ON TABLE flspec FROM admin; GRANT ALL ON TABLE flspec TO admin; GRANT ALL ON TABLE flspec TO xtrole; publicadminfalse43812591694759flspec_flspec_id_seqSEQUENCEvCREATE SEQUENCE flspec_flspec_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.flspec_flspec_id_seq; publicadminfalse8438X%00flspec_flspec_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE flspec_flspec_id_seq OWNED BY flspec.flspec_id; publicadminfalse439Y%00flspec_flspec_id_seq SEQUENCE SET<SELECT pg_catalog.setval('flspec_flspec_id_seq', 1, false); publicadminfalse439Z%00flspec_flspec_id_seqACLREVOKE ALL ON SEQUENCE flspec_flspec_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE flspec_flspec_id_seq FROM admin; GRANT ALL ON SEQUENCE flspec_flspec_id_seq TO admin; GRANT ALL ON SEQUENCE flspec_flspec_id_seq TO xtrole; publicadminfalse43912591694761formTABLE?CREATE TABLE form ( form_id integer DEFAULT nextval(('"form_form_id_seq"'::text)::regclass) NOT NULL, form_name text NOT NULL, form_descrip text, form_report_id integer, form_key character varying(4), form_report_name text, CONSTRAINT form_form_name_check CHECK ((form_name <> ''::text)) ); DROP TABLE public.form; publicadminfalse641464158[%00 TABLE formCOMMENT-COMMENT ON TABLE form IS 'Form information'; publicadminfalse440\%00COLUMN form.form_report_idCOMMENT\COMMENT ON COLUMN form.form_report_id IS 'Obsolete -- reference form_report_name instead.'; publicadminfalse440]%00formACLREVOKE ALL ON TABLE form FROM PUBLIC; REVOKE ALL ON TABLE form FROM admin; GRANT ALL ON TABLE form TO admin; GRANT ALL ON TABLE form TO xtrole; publicadminfalse44012591694768form_form_id_seqSEQUENCEzCREATE SEQUENCE form_form_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; 'DROP SEQUENCE public.form_form_id_seq; publicadminfalse8^%00form_form_id_seq SEQUENCE SET8SELECT pg_catalog.setval('form_form_id_seq', 22, true); publicadminfalse441_%00form_form_id_seqACLREVOKE ALL ON SEQUENCE form_form_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE form_form_id_seq FROM admin; GRANT ALL ON SEQUENCE form_form_id_seq TO admin; GRANT ALL ON SEQUENCE form_form_id_seq TO xtrole; publicadminfalse44112591694770 freightclass_freightclass_id_seqSEQUENCECREATE SEQUENCE freightclass_freightclass_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 7DROP SEQUENCE public.freightclass_freightclass_id_seq; publicadminfalse8217`%00 freightclass_freightclass_id_seqSEQUENCE OWNED BYWALTER SEQUENCE freightclass_freightclass_id_seq OWNED BY freightclass.freightclass_id; publicadminfalse442a%00 freightclass_freightclass_id_seq SEQUENCE SETHSELECT pg_catalog.setval('freightclass_freightclass_id_seq', 1, false); publicadminfalse442b%00 freightclass_freightclass_id_seqACL REVOKE ALL ON SEQUENCE freightclass_freightclass_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE freightclass_freightclass_id_seq FROM admin; GRANT ALL ON SEQUENCE freightclass_freightclass_id_seq TO admin; GRANT ALL ON SEQUENCE freightclass_freightclass_id_seq TO xtrole; publicadminfalse44212591694772glseriesTABLECREATE TABLE glseries ( glseries_id integer DEFAULT nextval(('"glseries_glseries_id_seq"'::text)::regclass) NOT NULL, glseries_sequence integer, glseries_doctype character(2), glseries_docnumber text, glseries_accnt_id integer, glseries_amount numeric(20,2), glseries_source text, glseries_distdate date, glseries_notes text, glseries_misc_id integer ); DROP TABLE public.glseries; publicadminfalse64168c%00TABLE glseriesCOMMENTCOMMENT ON TABLE glseries IS 'Temporary table for storing information about General Ledger (G/L) Series Entries before Series Entries are posted'; publicadminfalse443d%00glseriesACLREVOKE ALL ON TABLE glseries FROM PUBLIC; REVOKE ALL ON TABLE glseries FROM admin; GRANT ALL ON TABLE glseries TO admin; GRANT ALL ON TABLE glseries TO xtrole; publicadminfalse44312591694779glseries_glseries_id_seqSEQUENCECREATE SEQUENCE glseries_glseries_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; /DROP SEQUENCE public.glseries_glseries_id_seq; publicadminfalse8e%00glseries_glseries_id_seq SEQUENCE SETBSELECT pg_catalog.setval('glseries_glseries_id_seq', 1563, true); publicadminfalse444f%00glseries_glseries_id_seqACLREVOKE ALL ON SEQUENCE glseries_glseries_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE glseries_glseries_id_seq FROM admin; GRANT ALL ON SEQUENCE glseries_glseries_id_seq TO admin; GRANT ALL ON SEQUENCE glseries_glseries_id_seq TO xtrole; publicadminfalse44412591694781gltrans_gltrans_id_seqSEQUENCECREATE SEQUENCE gltrans_gltrans_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.gltrans_gltrans_id_seq; publicadminfalse8g%00gltrans_gltrans_id_seq SEQUENCE SET@SELECT pg_catalog.setval('gltrans_gltrans_id_seq', 7008, true); publicadminfalse445h%00gltrans_gltrans_id_seqACLREVOKE ALL ON SEQUENCE gltrans_gltrans_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE gltrans_gltrans_id_seq FROM admin; GRANT ALL ON SEQUENCE gltrans_gltrans_id_seq TO admin; GRANT ALL ON SEQUENCE gltrans_gltrans_id_seq TO xtrole; publicadminfalse44512591694783gltrans_sequence_seqSEQUENCE~CREATE SEQUENCE gltrans_sequence_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; +DROP SEQUENCE public.gltrans_sequence_seq; publicadminfalse8i%00gltrans_sequence_seq SEQUENCE SET>SELECT pg_catalog.setval('gltrans_sequence_seq', 3583, true); publicadminfalse446j%00gltrans_sequence_seqACLREVOKE ALL ON SEQUENCE gltrans_sequence_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE gltrans_sequence_seq FROM admin; GRANT ALL ON SEQUENCE gltrans_sequence_seq TO admin; GRANT ALL ON SEQUENCE gltrans_sequence_seq TO xtrole; publicadminfalse44612591694785grpTABLECREATE TABLE grp ( grp_id integer NOT NULL, grp_name text NOT NULL, grp_descrip text, CONSTRAINT grp_grp_name_check CHECK ((grp_name <> ''::text)) ); DROP TABLE public.grp; publicadminfalse64188k%00 TABLE grpCOMMENTFCOMMENT ON TABLE grp IS 'This table is the basic group information.'; publicadminfalse447l%00grpACLREVOKE ALL ON TABLE grp FROM PUBLIC; REVOKE ALL ON TABLE grp FROM admin; GRANT ALL ON TABLE grp TO admin; GRANT ALL ON TABLE grp TO xtrole; publicadminfalse44712591694791grp_grp_id_seqSEQUENCEpCREATE SEQUENCE grp_grp_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; %DROP SEQUENCE public.grp_grp_id_seq; publicadminfalse8447m%00grp_grp_id_seqSEQUENCE OWNED BY3ALTER SEQUENCE grp_grp_id_seq OWNED BY grp.grp_id; publicadminfalse448n%00grp_grp_id_seq SEQUENCE SET5SELECT pg_catalog.setval('grp_grp_id_seq', 1, true); publicadminfalse448o%00grp_grp_id_seqACLREVOKE ALL ON SEQUENCE grp_grp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE grp_grp_id_seq FROM admin; GRANT ALL ON SEQUENCE grp_grp_id_seq TO admin; GRANT ALL ON SEQUENCE grp_grp_id_seq TO xtrole; publicadminfalse44812591694793grpprivTABLECREATE TABLE grppriv ( grppriv_id integer NOT NULL, grppriv_grp_id integer NOT NULL, grppriv_priv_id integer NOT NULL ); DROP TABLE public.grppriv; publicadminfalse8p%00 TABLE grpprivCOMMENTMCOMMENT ON TABLE grppriv IS 'This is a specific priv for a specific group.'; publicadminfalse449q%00grpprivACLREVOKE ALL ON TABLE grppriv FROM PUBLIC; REVOKE ALL ON TABLE grppriv FROM admin; GRANT ALL ON TABLE grppriv TO admin; GRANT ALL ON TABLE grppriv TO xtrole; publicadminfalse44912591694796grppriv_grppriv_id_seqSEQUENCExCREATE SEQUENCE grppriv_grppriv_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.grppriv_grppriv_id_seq; publicadminfalse8449r%00grppriv_grppriv_id_seqSEQUENCE OWNED BYCALTER SEQUENCE grppriv_grppriv_id_seq OWNED BY grppriv.grppriv_id; publicadminfalse450s%00grppriv_grppriv_id_seq SEQUENCE SET?SELECT pg_catalog.setval('grppriv_grppriv_id_seq', 374, true); publicadminfalse450t%00grppriv_grppriv_id_seqACLREVOKE ALL ON SEQUENCE grppriv_grppriv_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE grppriv_grppriv_id_seq FROM admin; GRANT ALL ON SEQUENCE grppriv_grppriv_id_seq TO admin; GRANT ALL ON SEQUENCE grppriv_grppriv_id_seq TO xtrole; publicadminfalse45012591694798hnfcTABLECREATE TABLE hnfc ( hnfc_id integer NOT NULL, hnfc_code text NOT NULL, CONSTRAINT hnfc_hnfc_code_check CHECK ((hnfc_code <> ''::text)) ); DROP TABLE public.hnfc; publicadminfalse64218u%00 TABLE hnfcCOMMENTTCOMMENT ON TABLE hnfc IS 'List of personal titles/honorifics used in cntct table.'; publicadminfalse451v%00hnfcACLREVOKE ALL ON TABLE hnfc FROM PUBLIC; REVOKE ALL ON TABLE hnfc FROM admin; GRANT ALL ON TABLE hnfc TO admin; GRANT ALL ON TABLE hnfc TO xtrole; publicadminfalse45112591694804hnfc_hnfc_id_seqSEQUENCErCREATE SEQUENCE hnfc_hnfc_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 'DROP SEQUENCE public.hnfc_hnfc_id_seq; publicadminfalse8451w%00hnfc_hnfc_id_seqSEQUENCE OWNED BY7ALTER SEQUENCE hnfc_hnfc_id_seq OWNED BY hnfc.hnfc_id; publicadminfalse452x%00hnfc_hnfc_id_seq SEQUENCE SET7SELECT pg_catalog.setval('hnfc_hnfc_id_seq', 5, true); publicadminfalse452y%00hnfc_hnfc_id_seqACLREVOKE ALL ON SEQUENCE hnfc_hnfc_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE hnfc_hnfc_id_seq FROM admin; GRANT ALL ON SEQUENCE hnfc_hnfc_id_seq TO admin; GRANT ALL ON SEQUENCE hnfc_hnfc_id_seq TO xtrole; publicadminfalse45212591694806incdt_incdt_id_seqSEQUENCEtCREATE SEQUENCE incdt_incdt_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; )DROP SEQUENCE public.incdt_incdt_id_seq; publicadminfalse8154z%00incdt_incdt_id_seqSEQUENCE OWNED BY;ALTER SEQUENCE incdt_incdt_id_seq OWNED BY incdt.incdt_id; publicadminfalse453{%00incdt_incdt_id_seq SEQUENCE SET:SELECT pg_catalog.setval('incdt_incdt_id_seq', 1, false); publicadminfalse453|%00incdt_incdt_id_seqACLREVOKE ALL ON SEQUENCE incdt_incdt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE incdt_incdt_id_seq FROM admin; GRANT ALL ON SEQUENCE incdt_incdt_id_seq TO admin; GRANT ALL ON SEQUENCE incdt_incdt_id_seq TO xtrole; publicadminfalse45312591694808incdtcat_incdtcat_id_seqSEQUENCEzCREATE SEQUENCE incdtcat_incdtcat_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.incdtcat_incdtcat_id_seq; publicadminfalse8220}%00incdtcat_incdtcat_id_seqSEQUENCE OWNED BYGALTER SEQUENCE incdtcat_incdtcat_id_seq OWNED BY incdtcat.incdtcat_id; publicadminfalse454~%00incdtcat_incdtcat_id_seq SEQUENCE SET?SELECT pg_catalog.setval('incdtcat_incdtcat_id_seq', 1, true); publicadminfalse454%00incdtcat_incdtcat_id_seqACLREVOKE ALL ON SEQUENCE incdtcat_incdtcat_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE incdtcat_incdtcat_id_seq FROM admin; GRANT ALL ON SEQUENCE incdtcat_incdtcat_id_seq TO admin; GRANT ALL ON SEQUENCE incdtcat_incdtcat_id_seq TO xtrole; publicadminfalse45412591694810 incdthistTABLEVCREATE TABLE incdthist ( incdthist_id integer NOT NULL, incdthist_incdt_id integer NOT NULL, incdthist_change character(1), incdthist_target_id integer, incdthist_timestamp timestamp without time zone DEFAULT now() NOT NULL, incdthist_username text DEFAULT geteffectivextuser() NOT NULL, incdthist_descrip text ); DROP TABLE public.incdthist; publicadminfalse642364248%00TABLE incdthistCOMMENT:COMMENT ON TABLE incdthist IS 'Incident history changes'; publicadminfalse455%00 incdthistACLREVOKE ALL ON TABLE incdthist FROM PUBLIC; REVOKE ALL ON TABLE incdthist FROM admin; GRANT ALL ON TABLE incdthist TO admin; GRANT ALL ON TABLE incdthist TO xtrole; publicadminfalse45512591694818incdthist_incdthist_id_seqSEQUENCE|CREATE SEQUENCE incdthist_incdthist_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 1DROP SEQUENCE public.incdthist_incdthist_id_seq; publicadminfalse8455%00incdthist_incdthist_id_seqSEQUENCE OWNED BYKALTER SEQUENCE incdthist_incdthist_id_seq OWNED BY incdthist.incdthist_id; publicadminfalse456%00incdthist_incdthist_id_seq SEQUENCE SETBSELECT pg_catalog.setval('incdthist_incdthist_id_seq', 1, false); publicadminfalse456%00incdthist_incdthist_id_seqACLREVOKE ALL ON SEQUENCE incdthist_incdthist_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE incdthist_incdthist_id_seq FROM admin; GRANT ALL ON SEQUENCE incdthist_incdthist_id_seq TO admin; GRANT ALL ON SEQUENCE incdthist_incdthist_id_seq TO xtrole; publicadminfalse45612591694820"incdtpriority_incdtpriority_id_seqSEQUENCECREATE SEQUENCE incdtpriority_incdtpriority_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 9DROP SEQUENCE public.incdtpriority_incdtpriority_id_seq; publicadminfalse8221%00"incdtpriority_incdtpriority_id_seqSEQUENCE OWNED BY[ALTER SEQUENCE incdtpriority_incdtpriority_id_seq OWNED BY incdtpriority.incdtpriority_id; publicadminfalse457%00"incdtpriority_incdtpriority_id_seq SEQUENCE SETISELECT pg_catalog.setval('incdtpriority_incdtpriority_id_seq', 5, true); publicadminfalse457%00"incdtpriority_incdtpriority_id_seqACLREVOKE ALL ON SEQUENCE incdtpriority_incdtpriority_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE incdtpriority_incdtpriority_id_seq FROM admin; GRANT ALL ON SEQUENCE incdtpriority_incdtpriority_id_seq TO admin; GRANT ALL ON SEQUENCE incdtpriority_incdtpriority_id_seq TO xtrole; publicadminfalse45712591694822&incdtresolution_incdtresolution_id_seqSEQUENCECREATE SEQUENCE incdtresolution_incdtresolution_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; =DROP SEQUENCE public.incdtresolution_incdtresolution_id_seq; publicadminfalse8222%00&incdtresolution_incdtresolution_id_seqSEQUENCE OWNED BYcALTER SEQUENCE incdtresolution_incdtresolution_id_seq OWNED BY incdtresolution.incdtresolution_id; publicadminfalse458%00&incdtresolution_incdtresolution_id_seq SEQUENCE SETMSELECT pg_catalog.setval('incdtresolution_incdtresolution_id_seq', 4, true); publicadminfalse458%00&incdtresolution_incdtresolution_id_seqACL$REVOKE ALL ON SEQUENCE incdtresolution_incdtresolution_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE incdtresolution_incdtresolution_id_seq FROM admin; GRANT ALL ON SEQUENCE incdtresolution_incdtresolution_id_seq TO admin; GRANT ALL ON SEQUENCE incdtresolution_incdtresolution_id_seq TO xtrole; publicadminfalse45812591694824"incdtseverity_incdtseverity_id_seqSEQUENCECREATE SEQUENCE incdtseverity_incdtseverity_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 9DROP SEQUENCE public.incdtseverity_incdtseverity_id_seq; publicadminfalse8223%00"incdtseverity_incdtseverity_id_seqSEQUENCE OWNED BY[ALTER SEQUENCE incdtseverity_incdtseverity_id_seq OWNED BY incdtseverity.incdtseverity_id; publicadminfalse459%00"incdtseverity_incdtseverity_id_seq SEQUENCE SETISELECT pg_catalog.setval('incdtseverity_incdtseverity_id_seq', 5, true); publicadminfalse459%00"incdtseverity_incdtseverity_id_seqACLREVOKE ALL ON SEQUENCE incdtseverity_incdtseverity_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE incdtseverity_incdtseverity_id_seq FROM admin; GRANT ALL ON SEQUENCE incdtseverity_incdtseverity_id_seq TO admin; GRANT ALL ON SEQUENCE incdtseverity_incdtseverity_id_seq TO xtrole; publicadminfalse45912591694826invbal_invbal_id_seqSEQUENCEvCREATE SEQUENCE invbal_invbal_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.invbal_invbal_id_seq; publicadminfalse8150%00invbal_invbal_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE invbal_invbal_id_seq OWNED BY invbal.invbal_id; publicadminfalse460%00invbal_invbal_id_seq SEQUENCE SET<SELECT pg_catalog.setval('invbal_invbal_id_seq', 1, false); publicadminfalse460%00invbal_invbal_id_seqACLREVOKE ALL ON SEQUENCE invbal_invbal_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE invbal_invbal_id_seq FROM admin; GRANT ALL ON SEQUENCE invbal_invbal_id_seq TO admin; GRANT ALL ON SEQUENCE invbal_invbal_id_seq TO xtrole; publicadminfalse46012591694828invc_invc_id_seqSEQUENCEzCREATE SEQUENCE invc_invc_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; 'DROP SEQUENCE public.invc_invc_id_seq; publicadminfalse8%00invc_invc_id_seq SEQUENCE SET8SELECT pg_catalog.setval('invc_invc_id_seq', 1, false); publicadminfalse461%00invc_invc_id_seqACLREVOKE ALL ON SEQUENCE invc_invc_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE invc_invc_id_seq FROM admin; GRANT ALL ON SEQUENCE invc_invc_id_seq TO admin; GRANT ALL ON SEQUENCE invc_invc_id_seq TO xtrole; publicadminfalse46112591694830invchead_invchead_id_seqSEQUENCEzCREATE SEQUENCE invchead_invchead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.invchead_invchead_id_seq; publicadminfalse8173%00invchead_invchead_id_seqSEQUENCE OWNED BYGALTER SEQUENCE invchead_invchead_id_seq OWNED BY invchead.invchead_id; publicadminfalse462%00invchead_invchead_id_seq SEQUENCE SET?SELECT pg_catalog.setval('invchead_invchead_id_seq', 2, true); publicadminfalse462%00invchead_invchead_id_seqACLREVOKE ALL ON SEQUENCE invchead_invchead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE invchead_invchead_id_seq FROM admin; GRANT ALL ON SEQUENCE invchead_invchead_id_seq TO admin; GRANT ALL ON SEQUENCE invchead_invchead_id_seq TO xtrole; publicadminfalse46212591694832 invcheadtaxTABLE1CREATE TABLE invcheadtax ( ) INHERITS (taxhist); DROP TABLE public.invcheadtax; publicadminfalse64258253%00 invcheadtaxACLREVOKE ALL ON TABLE invcheadtax FROM PUBLIC; REVOKE ALL ON TABLE invcheadtax FROM admin; GRANT ALL ON TABLE invcheadtax TO admin; GRANT ALL ON TABLE invcheadtax TO xtrole; publicadminfalse46312591694838invcitem_invcitem_id_seqSEQUENCEzCREATE SEQUENCE invcitem_invcitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.invcitem_invcitem_id_seq; publicadminfalse8175%00invcitem_invcitem_id_seqSEQUENCE OWNED BYGALTER SEQUENCE invcitem_invcitem_id_seq OWNED BY invcitem.invcitem_id; publicadminfalse464%00invcitem_invcitem_id_seq SEQUENCE SET@SELECT pg_catalog.setval('invcitem_invcitem_id_seq', 1, false); publicadminfalse464%00invcitem_invcitem_id_seqACLREVOKE ALL ON SEQUENCE invcitem_invcitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE invcitem_invcitem_id_seq FROM admin; GRANT ALL ON SEQUENCE invcitem_invcitem_id_seq TO admin; GRANT ALL ON SEQUENCE invcitem_invcitem_id_seq TO xtrole; publicadminfalse46412591694840 invcitemtaxTABLE1CREATE TABLE invcitemtax ( ) INHERITS (taxhist); DROP TABLE public.invcitemtax; publicadminfalse64268253%00 invcitemtaxACLREVOKE ALL ON TABLE invcitemtax FROM PUBLIC; REVOKE ALL ON TABLE invcitemtax FROM admin; GRANT ALL ON TABLE invcitemtax TO admin; GRANT ALL ON TABLE invcitemtax TO xtrole; publicadminfalse46512591694853invcnt_invcnt_id_seqSEQUENCE~CREATE SEQUENCE invcnt_invcnt_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; +DROP SEQUENCE public.invcnt_invcnt_id_seq; publicadminfalse8%00invcnt_invcnt_id_seq SEQUENCE SET=SELECT pg_catalog.setval('invcnt_invcnt_id_seq', 213, true); publicadminfalse467%00invcnt_invcnt_id_seqACLREVOKE ALL ON SEQUENCE invcnt_invcnt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE invcnt_invcnt_id_seq FROM admin; GRANT ALL ON SEQUENCE invcnt_invcnt_id_seq TO admin; GRANT ALL ON SEQUENCE invcnt_invcnt_id_seq TO xtrole; publicadminfalse46712591694855 invdetailTABLECREATE TABLE invdetail ( invdetail_id integer DEFAULT nextval(('"invdetail_invdetail_id_seq"'::text)::regclass) NOT NULL, invdetail_transtype character(2), invdetail_invhist_id integer, invdetail_location_id integer, invdetail_qty numeric(18,6), invdetail_comments text, invdetail_qty_before numeric(18,6), invdetail_qty_after numeric(18,6), invdetail_invcitem_id integer, invdetail_expiration date, invdetail_warrpurc date, invdetail_ls_id integer ); DROP TABLE public.invdetail; publicadminfalse64288%00TABLE invdetailCOMMENTCOMMENT ON TABLE invdetail IS 'Detailed Inventory transaction information for Lot/Serial and Multiple Location Control (MLC) Items'; publicadminfalse468%00 invdetailACLREVOKE ALL ON TABLE invdetail FROM PUBLIC; REVOKE ALL ON TABLE invdetail FROM admin; GRANT ALL ON TABLE invdetail TO admin; GRANT ALL ON TABLE invdetail TO xtrole; publicadminfalse46812591694862invdetail_invdetail_id_seqSEQUENCECREATE SEQUENCE invdetail_invdetail_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; 1DROP SEQUENCE public.invdetail_invdetail_id_seq; publicadminfalse8%00invdetail_invdetail_id_seq SEQUENCE SETDSELECT pg_catalog.setval('invdetail_invdetail_id_seq', 1326, true); publicadminfalse469%00invdetail_invdetail_id_seqACLREVOKE ALL ON SEQUENCE invdetail_invdetail_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE invdetail_invdetail_id_seq FROM admin; GRANT ALL ON SEQUENCE invdetail_invdetail_id_seq TO admin; GRANT ALL ON SEQUENCE invdetail_invdetail_id_seq TO xtrole; publicadminfalse46912591694864invhistTABLE:CREATE TABLE invhist ( invhist_id integer DEFAULT nextval(('invhist_invhist_id_seq'::text)::regclass) NOT NULL, invhist_itemsite_id integer, invhist_transdate timestamp with time zone DEFAULT ('now'::text)::timestamp(6) with time zone, invhist_transtype character(2), invhist_invqty numeric(18,6), invhist_invuom text, invhist_ordnumber text, invhist_docnumber text, invhist_qoh_before numeric(18,6), invhist_qoh_after numeric(18,6), invhist_unitcost numeric(16,6), invhist_acct_id integer, invhist_xfer_warehous_id integer, invhist_comments text, invhist_posted boolean DEFAULT true, invhist_imported boolean, invhist_hasdetail boolean DEFAULT false, invhist_ordtype text, invhist_analyze boolean DEFAULT true, invhist_user text DEFAULT geteffectivextuser(), invhist_created timestamp with time zone DEFAULT now() NOT NULL, invhist_costmethod character(1) NOT NULL, invhist_value_before numeric(12,2) NOT NULL, invhist_value_after numeric(12,2) NOT NULL, invhist_series integer ); DROP TABLE public.invhist; publicadminfalse64296430643164326433643464358%00 TABLE invhistCOMMENT=COMMENT ON TABLE invhist IS 'Inventory transaction history'; publicadminfalse470%00invhistACLREVOKE ALL ON TABLE invhist FROM PUBLIC; REVOKE ALL ON TABLE invhist FROM admin; GRANT ALL ON TABLE invhist TO admin; GRANT ALL ON TABLE invhist TO xtrole; publicadminfalse47012591694877invhist_invhist_id_seqSEQUENCECREATE SEQUENCE invhist_invhist_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.invhist_invhist_id_seq; publicadminfalse8%00invhist_invhist_id_seq SEQUENCE SET@SELECT pg_catalog.setval('invhist_invhist_id_seq', 2859, true); publicadminfalse471%00invhist_invhist_id_seqACLREVOKE ALL ON SEQUENCE invhist_invhist_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE invhist_invhist_id_seq FROM admin; GRANT ALL ON SEQUENCE invhist_invhist_id_seq TO admin; GRANT ALL ON SEQUENCE invhist_invhist_id_seq TO xtrole; publicadminfalse47112591694879 invhistexpcatTABLECREATE TABLE invhistexpcat ( invhistexpcat_id integer NOT NULL, invhistexpcat_invhist_id integer NOT NULL, invhistexpcat_expcat_id integer NOT NULL ); !DROP TABLE public.invhistexpcat; publicadminfalse8%00TABLE invhistexpcatCOMMENTCOMMENT ON TABLE invhistexpcat IS 'Track the relationship between an EX transaction in the invhist table and the corresponding Expense Category.'; publicadminfalse472%00 invhistexpcatACLREVOKE ALL ON TABLE invhistexpcat FROM PUBLIC; REVOKE ALL ON TABLE invhistexpcat FROM admin; GRANT ALL ON TABLE invhistexpcat TO admin; GRANT ALL ON TABLE invhistexpcat TO xtrole; publicadminfalse47212591694882"invhistexpcat_invhistexpcat_id_seqSEQUENCECREATE SEQUENCE invhistexpcat_invhistexpcat_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 9DROP SEQUENCE public.invhistexpcat_invhistexpcat_id_seq; publicadminfalse8472%00"invhistexpcat_invhistexpcat_id_seqSEQUENCE OWNED BY[ALTER SEQUENCE invhistexpcat_invhistexpcat_id_seq OWNED BY invhistexpcat.invhistexpcat_id; publicadminfalse473%00"invhistexpcat_invhistexpcat_id_seq SEQUENCE SETJSELECT pg_catalog.setval('invhistexpcat_invhistexpcat_id_seq', 1, false); publicadminfalse473%00"invhistexpcat_invhistexpcat_id_seqACLREVOKE ALL ON SEQUENCE invhistexpcat_invhistexpcat_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE invhistexpcat_invhistexpcat_id_seq FROM admin; GRANT ALL ON SEQUENCE invhistexpcat_invhistexpcat_id_seq TO admin; GRANT ALL ON SEQUENCE invhistexpcat_invhistexpcat_id_seq TO xtrole; publicadminfalse473K12592009431 invoiceitemVIEWCREATE VIEW invoiceitem AS SELECT invcitem.invcitem_id, invcitem.invcitem_invchead_id, invcitem.invcitem_linenumber, invcitem.invcitem_item_id, invcitem.invcitem_warehous_id, invcitem.invcitem_custpn, invcitem.invcitem_number, invcitem.invcitem_descrip, invcitem.invcitem_ordered, invcitem.invcitem_billed, invcitem.invcitem_custprice, invcitem.invcitem_price, invcitem.invcitem_notes, invcitem.invcitem_salescat_id, invcitem.invcitem_taxtype_id, invcitem.invcitem_qty_uom_id, invcitem.invcitem_qty_invuomratio, invcitem.invcitem_price_uom_id, invcitem.invcitem_price_invuomratio, invcitem.invcitem_coitem_id, invcitem.invcitem_updateinv, invcitem.invcitem_rev_accnt_id, itemsite.itemsite_id, cohead.cohead_number, COALESCE((invcitem.invcitem_billed * invcitem.invcitem_qty_invuomratio), (0)::numeric) AS qty, COALESCE((invcitem.invcitem_price / invcitem.invcitem_price_invuomratio), (0)::numeric) AS unitprice, COALESCE(round(((invcitem.invcitem_billed * invcitem.invcitem_qty_invuomratio) * (invcitem.invcitem_price / invcitem.invcitem_price_invuomratio)), 2), (0)::numeric) AS extprice, currtobase(invchead.invchead_curr_id, COALESCE(round(((invcitem.invcitem_billed * invcitem.invcitem_qty_invuomratio) * (invcitem.invcitem_price / invcitem.invcitem_price_invuomratio)), 2), (0)::numeric), invchead.invchead_invcdate) AS baseextprice, (SELECT COALESCE(sum(invcitemtax.taxhist_tax), (0)::numeric) AS "coalesce" FROM invcitemtax WHERE (invcitemtax.taxhist_parent_id = invcitem.invcitem_id)) AS tax, ((SELECT COALESCE(sum(shipitem.shipitem_value), (itemcost(itemsite.itemsite_id) * invcitem.invcitem_billed), (0)::numeric) AS "coalesce" FROM shipitem WHERE (shipitem.shipitem_invcitem_id = invcitem.invcitem_id)) / CASE WHEN (invcitem.invcitem_billed <> (0)::numeric) THEN (invcitem.invcitem_billed * invcitem.invcitem_qty_invuomratio) ELSE (1)::numeric END) AS unitcost FROM ((((invcitem JOIN invchead ON ((invchead.invchead_id = invcitem.invcitem_invchead_id))) LEFT JOIN coitem ON ((coitem.coitem_id = invcitem.invcitem_coitem_id))) LEFT JOIN cohead ON ((cohead.cohead_id = coitem.coitem_cohead_id))) LEFT JOIN itemsite ON (((itemsite.itemsite_item_id = invcitem.invcitem_item_id) AND (itemsite.itemsite_warehous_id = invcitem.invcitem_warehous_id)))); DROP VIEW public.invoiceitem; publicadminfalse55398%00VIEW invoiceitemCOMMENTYCOMMENT ON VIEW invoiceitem IS 'Single point for invoice item (invcitem) calculations.'; publicadminfalse843%00 invoiceitemACLREVOKE ALL ON TABLE invoiceitem FROM PUBLIC; REVOKE ALL ON TABLE invoiceitem FROM admin; GRANT ALL ON TABLE invoiceitem TO admin; GRANT ALL ON TABLE invoiceitem TO xtrole; publicadminfalse84312591694897ipsass_ipsass_id_seqSEQUENCEvCREATE SEQUENCE ipsass_ipsass_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.ipsass_ipsass_id_seq; publicadminfalse8239%00ipsass_ipsass_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE ipsass_ipsass_id_seq OWNED BY ipsass.ipsass_id; publicadminfalse475%00ipsass_ipsass_id_seq SEQUENCE SET<SELECT pg_catalog.setval('ipsass_ipsass_id_seq', 1, false); publicadminfalse475%00ipsass_ipsass_id_seqACLREVOKE ALL ON SEQUENCE ipsass_ipsass_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ipsass_ipsass_id_seq FROM admin; GRANT ALL ON SEQUENCE ipsass_ipsass_id_seq TO admin; GRANT ALL ON SEQUENCE ipsass_ipsass_id_seq TO xtrole; publicadminfalse47512591694899ipsctyp_ipsctyp_id_seqSEQUENCExCREATE SEQUENCE ipsctyp_ipsctyp_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.ipsctyp_ipsctyp_id_seq; publicadminfalse8%00ipsctyp_ipsctyp_id_seq SEQUENCE SET>SELECT pg_catalog.setval('ipsctyp_ipsctyp_id_seq', 16, true); publicadminfalse476%00ipsctyp_ipsctyp_id_seqACLREVOKE ALL ON SEQUENCE ipsctyp_ipsctyp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ipsctyp_ipsctyp_id_seq FROM admin; GRANT ALL ON SEQUENCE ipsctyp_ipsctyp_id_seq TO admin; GRANT ALL ON SEQUENCE ipsctyp_ipsctyp_id_seq TO xtrole; publicadminfalse47612591694901ipscust_ipscust_id_seqSEQUENCExCREATE SEQUENCE ipscust_ipscust_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.ipscust_ipscust_id_seq; publicadminfalse8%00ipscust_ipscust_id_seq SEQUENCE SET>SELECT pg_catalog.setval('ipscust_ipscust_id_seq', 21, true); publicadminfalse477%00ipscust_ipscust_id_seqACLREVOKE ALL ON SEQUENCE ipscust_ipscust_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ipscust_ipscust_id_seq FROM admin; GRANT ALL ON SEQUENCE ipscust_ipscust_id_seq TO admin; GRANT ALL ON SEQUENCE ipscust_ipscust_id_seq TO xtrole; publicadminfalse47712591694903ipsfreight_ipsfreight_id_seqSEQUENCE~CREATE SEQUENCE ipsfreight_ipsfreight_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 3DROP SEQUENCE public.ipsfreight_ipsfreight_id_seq; publicadminfalse8218%00ipsfreight_ipsfreight_id_seqSEQUENCE OWNED BYOALTER SEQUENCE ipsfreight_ipsfreight_id_seq OWNED BY ipsfreight.ipsfreight_id; publicadminfalse478%00ipsfreight_ipsfreight_id_seq SEQUENCE SETDSELECT pg_catalog.setval('ipsfreight_ipsfreight_id_seq', 1, false); publicadminfalse478%00ipsfreight_ipsfreight_id_seqACLREVOKE ALL ON SEQUENCE ipsfreight_ipsfreight_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ipsfreight_ipsfreight_id_seq FROM admin; GRANT ALL ON SEQUENCE ipsfreight_ipsfreight_id_seq TO admin; GRANT ALL ON SEQUENCE ipsfreight_ipsfreight_id_seq TO xtrole; publicadminfalse47812591694905ipshead_ipshead_id_seqSEQUENCExCREATE SEQUENCE ipshead_ipshead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.ipshead_ipshead_id_seq; publicadminfalse8%00ipshead_ipshead_id_seq SEQUENCE SET>SELECT pg_catalog.setval('ipshead_ipshead_id_seq', 58, true); publicadminfalse479%00ipshead_ipshead_id_seqACLREVOKE ALL ON SEQUENCE ipshead_ipshead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ipshead_ipshead_id_seq FROM admin; GRANT ALL ON SEQUENCE ipshead_ipshead_id_seq TO admin; GRANT ALL ON SEQUENCE ipshead_ipshead_id_seq TO xtrole; publicadminfalse47912591694912ipsitem_ipsitem_id_seqSEQUENCExCREATE SEQUENCE ipsitem_ipsitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.ipsitem_ipsitem_id_seq; publicadminfalse8%00ipsitem_ipsitem_id_seq SEQUENCE SET>SELECT pg_catalog.setval('ipsitem_ipsitem_id_seq', 75, true); publicadminfalse480%00ipsitem_ipsitem_id_seqACLREVOKE ALL ON SEQUENCE ipsitem_ipsitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ipsitem_ipsitem_id_seq FROM admin; GRANT ALL ON SEQUENCE ipsitem_ipsitem_id_seq TO admin; GRANT ALL ON SEQUENCE ipsitem_ipsitem_id_seq TO xtrole; publicadminfalse48012591694914ipsitemchar_ipsitemchar_id_seqSEQUENCECREATE SEQUENCE ipsitemchar_ipsitemchar_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 5DROP SEQUENCE public.ipsitemchar_ipsitemchar_id_seq; publicadminfalse2428%00ipsitemchar_ipsitemchar_id_seqSEQUENCE OWNED BYSALTER SEQUENCE ipsitemchar_ipsitemchar_id_seq OWNED BY ipsitemchar.ipsitemchar_id; publicadminfalse481%00ipsitemchar_ipsitemchar_id_seq SEQUENCE SETFSELECT pg_catalog.setval('ipsitemchar_ipsitemchar_id_seq', 1, false); publicadminfalse481%00ipsitemchar_ipsitemchar_id_seqACLREVOKE ALL ON SEQUENCE ipsitemchar_ipsitemchar_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ipsitemchar_ipsitemchar_id_seq FROM admin; GRANT ALL ON SEQUENCE ipsitemchar_ipsitemchar_id_seq TO admin; GRANT ALL ON SEQUENCE ipsitemchar_ipsitemchar_id_seq TO xtrole; publicadminfalse481L12592009436ipspriceVIEW CREATE VIEW ipsprice AS SELECT ipsiteminfo.ipsitem_id AS ipsprice_id, 'I' AS ipsprice_source, ipsiteminfo.ipsitem_ipshead_id AS ipsprice_ipshead_id, ipsiteminfo.ipsitem_item_id AS ipsprice_item_id, itemuomtouom(ipsiteminfo.ipsitem_item_id, ipsiteminfo.ipsitem_qty_uom_id, NULL::integer, ipsiteminfo.ipsitem_qtybreak) AS ipsprice_qtybreak, CASE WHEN (ipsiteminfo.ipsitem_type = 'N'::bpchar) THEN ((ipsiteminfo.ipsitem_price * itemuomtouomratio(ipsiteminfo.ipsitem_item_id, NULL::integer, ipsiteminfo.ipsitem_price_uom_id)) * iteminvpricerat(ipsiteminfo.ipsitem_item_id)) WHEN (ipsiteminfo.ipsitem_type = 'D'::bpchar) THEN ((item.item_listprice - (item.item_listprice * ipsiteminfo.ipsitem_discntprcnt)) - ipsiteminfo.ipsitem_fixedamtdiscount) WHEN (ipsiteminfo.ipsitem_type = 'M'::bpchar) THEN ((item.item_listcost + (item.item_listcost * ipsiteminfo.ipsitem_discntprcnt)) + ipsiteminfo.ipsitem_fixedamtdiscount) ELSE NULL::numeric END AS ipsprice_price, ipsiteminfo.ipsitem_qtybreak AS ipsprice_uomqtybreak, ipsiteminfo.ipsitem_qty_uom_id AS ipsprice_uomqtybreak_uom_id, CASE WHEN (ipsiteminfo.ipsitem_type = 'N'::bpchar) THEN ipsiteminfo.ipsitem_price WHEN (ipsiteminfo.ipsitem_type = 'D'::bpchar) THEN ((item.item_listprice - (item.item_listprice * ipsiteminfo.ipsitem_discntprcnt)) - ipsiteminfo.ipsitem_fixedamtdiscount) WHEN (ipsiteminfo.ipsitem_type = 'M'::bpchar) THEN ((item.item_listcost + (item.item_listcost * ipsiteminfo.ipsitem_discntprcnt)) + ipsiteminfo.ipsitem_fixedamtdiscount) ELSE NULL::numeric END AS ipsprice_uomprice, ipsiteminfo.ipsitem_price_uom_id AS ipsprice_uomprice_uom_id, ipsiteminfo.ipsitem_discntprcnt AS ipsprice_discountpercent, ipsiteminfo.ipsitem_fixedamtdiscount AS ipsprice_discountfixed, ipsiteminfo.ipsitem_type AS ipsprice_type FROM (ipsiteminfo JOIN item ON ((item.item_id = ipsiteminfo.ipsitem_item_id))) UNION SELECT ipsiteminfo.ipsitem_id AS ipsprice_id, 'P' AS ipsprice_source, ipsiteminfo.ipsitem_ipshead_id AS ipsprice_ipshead_id, item.item_id AS ipsprice_item_id, ipsiteminfo.ipsitem_qtybreak AS ipsprice_qtybreak, CASE WHEN (ipsiteminfo.ipsitem_type = 'D'::bpchar) THEN ((item.item_listprice - (item.item_listprice * ipsiteminfo.ipsitem_discntprcnt)) - ipsiteminfo.ipsitem_fixedamtdiscount) WHEN (ipsiteminfo.ipsitem_type = 'M'::bpchar) THEN ((item.item_listcost + (item.item_listcost * ipsiteminfo.ipsitem_discntprcnt)) + ipsiteminfo.ipsitem_fixedamtdiscount) ELSE NULL::numeric END AS ipsprice_price, ipsiteminfo.ipsitem_qtybreak AS ipsprice_uomqtybreak, item.item_inv_uom_id AS ipsprice_uomqtybreak_uom_id, CASE WHEN (ipsiteminfo.ipsitem_type = 'D'::bpchar) THEN ((item.item_listprice - (item.item_listprice * ipsiteminfo.ipsitem_discntprcnt)) - ipsiteminfo.ipsitem_fixedamtdiscount) WHEN (ipsiteminfo.ipsitem_type = 'M'::bpchar) THEN ((item.item_listcost + (item.item_listcost * ipsiteminfo.ipsitem_discntprcnt)) + ipsiteminfo.ipsitem_fixedamtdiscount) ELSE NULL::numeric END AS ipsprice_uomprice, item.item_price_uom_id AS ipsprice_uomprice_uom_id, ipsiteminfo.ipsitem_discntprcnt AS ipsprice_discountpercent, ipsiteminfo.ipsitem_fixedamtdiscount AS ipsprice_discountfixed, ipsiteminfo.ipsitem_type AS ipsprice_type FROM (ipsiteminfo JOIN item ON ((ipsiteminfo.ipsitem_prodcat_id = item.item_prodcat_id))); DROP VIEW public.ipsprice; publicadminfalse55408%00ipspriceACLREVOKE ALL ON TABLE ipsprice FROM PUBLIC; REVOKE ALL ON TABLE ipsprice FROM admin; GRANT ALL ON TABLE ipsprice TO admin; GRANT ALL ON TABLE ipsprice TO xtrole; publicadminfalse84412591693611ipsprodcat_bakTABLEDCREATE TABLE ipsprodcat_bak ( ipsprodcat_id integer NOT NULL, ipsprodcat_ipshead_id integer NOT NULL, ipsprodcat_prodcat_id integer NOT NULL, ipsprodcat_qtybreak numeric(18,6) NOT NULL, ipsprodcat_discntprcnt numeric(10,6) NOT NULL, ipsprodcat_fixedamtdiscount numeric(16,4) DEFAULT 0.00 NOT NULL ); "DROP TABLE public.ipsprodcat_bak; publicadminfalse61198%00TABLE ipsprodcat_bakCOMMENTUCOMMENT ON TABLE ipsprodcat_bak IS 'Pricing Schedule Product Category information.'; publicadminfalse241%00ipsprodcat_bakACLREVOKE ALL ON TABLE ipsprodcat_bak FROM PUBLIC; REVOKE ALL ON TABLE ipsprodcat_bak FROM admin; GRANT ALL ON TABLE ipsprodcat_bak TO admin; GRANT ALL ON TABLE ipsprodcat_bak TO xtrole; publicadminfalse24112591694921ipsprodcat_ipsprodcat_id_seqSEQUENCE~CREATE SEQUENCE ipsprodcat_ipsprodcat_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 3DROP SEQUENCE public.ipsprodcat_ipsprodcat_id_seq; publicadminfalse8241%00ipsprodcat_ipsprodcat_id_seqSEQUENCE OWNED BYSALTER SEQUENCE ipsprodcat_ipsprodcat_id_seq OWNED BY ipsprodcat_bak.ipsprodcat_id; publicadminfalse482%00ipsprodcat_ipsprodcat_id_seq SEQUENCE SETDSELECT pg_catalog.setval('ipsprodcat_ipsprodcat_id_seq', 1, false); publicadminfalse482%00ipsprodcat_ipsprodcat_id_seqACLREVOKE ALL ON SEQUENCE ipsprodcat_ipsprodcat_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ipsprodcat_ipsprodcat_id_seq FROM admin; GRANT ALL ON SEQUENCE ipsprodcat_ipsprodcat_id_seq TO admin; GRANT ALL ON SEQUENCE ipsprodcat_ipsprodcat_id_seq TO xtrole; publicadminfalse48212591694923item_item_id_seqSEQUENCEzCREATE SEQUENCE item_item_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; 'DROP SEQUENCE public.item_item_id_seq; publicadminfalse8%00item_item_id_seq SEQUENCE SET9SELECT pg_catalog.setval('item_item_id_seq', 300, true); publicadminfalse483%00item_item_id_seqACLREVOKE ALL ON SEQUENCE item_item_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE item_item_id_seq FROM admin; GRANT ALL ON SEQUENCE item_item_id_seq TO admin; GRANT ALL ON SEQUENCE item_item_id_seq TO xtrole; publicadminfalse48312591694925itemalias_itemalias_id_seqSEQUENCECREATE SEQUENCE itemalias_itemalias_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; 1DROP SEQUENCE public.itemalias_itemalias_id_seq; publicadminfalse8%00itemalias_itemalias_id_seq SEQUENCE SETBSELECT pg_catalog.setval('itemalias_itemalias_id_seq', 15, true); publicadminfalse484%00itemalias_itemalias_id_seqACLREVOKE ALL ON SEQUENCE itemalias_itemalias_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemalias_itemalias_id_seq FROM admin; GRANT ALL ON SEQUENCE itemalias_itemalias_id_seq TO admin; GRANT ALL ON SEQUENCE itemalias_itemalias_id_seq TO xtrole; publicadminfalse48412591694927itematr_itematr_id_seqSEQUENCECREATE SEQUENCE itematr_itematr_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.itematr_itematr_id_seq; publicadminfalse8%00itematr_itematr_id_seq SEQUENCE SET>SELECT pg_catalog.setval('itematr_itematr_id_seq', 29, true); publicadminfalse485%00itematr_itematr_id_seqACLREVOKE ALL ON SEQUENCE itematr_itematr_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itematr_itematr_id_seq FROM admin; GRANT ALL ON SEQUENCE itematr_itematr_id_seq TO admin; GRANT ALL ON SEQUENCE itematr_itematr_id_seq TO xtrole; publicadminfalse48512591694929itemcost_itemcost_id_seqSEQUENCECREATE SEQUENCE itemcost_itemcost_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; /DROP SEQUENCE public.itemcost_itemcost_id_seq; publicadminfalse8%00itemcost_itemcost_id_seq SEQUENCE SETASELECT pg_catalog.setval('itemcost_itemcost_id_seq', 299, true); publicadminfalse486%00itemcost_itemcost_id_seqACLREVOKE ALL ON SEQUENCE itemcost_itemcost_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemcost_itemcost_id_seq FROM admin; GRANT ALL ON SEQUENCE itemcost_itemcost_id_seq TO admin; GRANT ALL ON SEQUENCE itemcost_itemcost_id_seq TO xtrole; publicadminfalse48612591694931itemfrez_itemfrez_seqSEQUENCECREATE SEQUENCE itemfrez_itemfrez_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; ,DROP SEQUENCE public.itemfrez_itemfrez_seq; publicadminfalse8%00itemfrez_itemfrez_seq SEQUENCE SET=SELECT pg_catalog.setval('itemfrez_itemfrez_seq', 1, false); publicadminfalse487%00itemfrez_itemfrez_seqACLREVOKE ALL ON SEQUENCE itemfrez_itemfrez_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemfrez_itemfrez_seq FROM admin; GRANT ALL ON SEQUENCE itemfrez_itemfrez_seq TO admin; GRANT ALL ON SEQUENCE itemfrez_itemfrez_seq TO xtrole; publicadminfalse48712591694933itemgrpTABLECREATE TABLE itemgrp ( itemgrp_id integer DEFAULT nextval(('"itemgrp_itemgrp_id_seq"'::text)::regclass) NOT NULL, itemgrp_name text NOT NULL, itemgrp_descrip text, CONSTRAINT itemgrp_itemgrp_name_check CHECK ((itemgrp_name <> ''::text)) ); DROP TABLE public.itemgrp; publicadminfalse644064418%00 TABLE itemgrpCOMMENT6COMMENT ON TABLE itemgrp IS 'Item Group information'; publicadminfalse488%00itemgrpACLREVOKE ALL ON TABLE itemgrp FROM PUBLIC; REVOKE ALL ON TABLE itemgrp FROM admin; GRANT ALL ON TABLE itemgrp TO admin; GRANT ALL ON TABLE itemgrp TO xtrole; publicadminfalse48812591694940itemgrp_itemgrp_id_seqSEQUENCECREATE SEQUENCE itemgrp_itemgrp_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.itemgrp_itemgrp_id_seq; publicadminfalse8%00itemgrp_itemgrp_id_seq SEQUENCE SET>SELECT pg_catalog.setval('itemgrp_itemgrp_id_seq', 19, true); publicadminfalse489%00itemgrp_itemgrp_id_seqACLREVOKE ALL ON SEQUENCE itemgrp_itemgrp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemgrp_itemgrp_id_seq FROM admin; GRANT ALL ON SEQUENCE itemgrp_itemgrp_id_seq TO admin; GRANT ALL ON SEQUENCE itemgrp_itemgrp_id_seq TO xtrole; publicadminfalse48912591694942 itemgrpitemTABLECREATE TABLE itemgrpitem ( itemgrpitem_id integer DEFAULT nextval(('"itemgrpitem_itemgrpitem_id_seq"'::text)::regclass) NOT NULL, itemgrpitem_itemgrp_id integer, itemgrpitem_item_id integer ); DROP TABLE public.itemgrpitem; publicadminfalse64428%00TABLE itemgrpitemCOMMENT?COMMENT ON TABLE itemgrpitem IS 'Item Group Item information'; publicadminfalse490%00 itemgrpitemACLREVOKE ALL ON TABLE itemgrpitem FROM PUBLIC; REVOKE ALL ON TABLE itemgrpitem FROM admin; GRANT ALL ON TABLE itemgrpitem TO admin; GRANT ALL ON TABLE itemgrpitem TO xtrole; publicadminfalse49012591694946itemgrpitem_itemgrpitem_id_seqSEQUENCECREATE SEQUENCE itemgrpitem_itemgrpitem_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; 5DROP SEQUENCE public.itemgrpitem_itemgrpitem_id_seq; publicadminfalse8%00itemgrpitem_itemgrpitem_id_seq SEQUENCE SETGSELECT pg_catalog.setval('itemgrpitem_itemgrpitem_id_seq', 112, true); publicadminfalse491%00itemgrpitem_itemgrpitem_id_seqACLREVOKE ALL ON SEQUENCE itemgrpitem_itemgrpitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemgrpitem_itemgrpitem_id_seq FROM admin; GRANT ALL ON SEQUENCE itemgrpitem_itemgrpitem_id_seq TO admin; GRANT ALL ON SEQUENCE itemgrpitem_itemgrpitem_id_seq TO xtrole; publicadminfalse49112591694948 itemimageVIEWCREATE VIEW itemimage AS SELECT imageass.imageass_id AS itemimage_id, imageass.imageass_source_id AS itemimage_item_id, imageass.imageass_image_id AS itemimage_image_id, imageass.imageass_purpose AS itemimage_purpose FROM imageass WHERE (imageass.imageass_source = 'I'::text); DROP VIEW public.itemimage; publicadminfalse51398%00VIEW itemimageCOMMENTCOMMENT ON VIEW itemimage IS 'Itemimage view for legacy support. Use of itemimage is deprecated. Use imageass table for future development'; publicadminfalse492%00 itemimageACLREVOKE ALL ON TABLE itemimage FROM PUBLIC; REVOKE ALL ON TABLE itemimage FROM admin; GRANT ALL ON TABLE itemimage TO admin; GRANT ALL ON TABLE itemimage TO xtrole; publicadminfalse49212591694952itemimage_itemimage_id_seqSEQUENCE|CREATE SEQUENCE itemimage_itemimage_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 1DROP SEQUENCE public.itemimage_itemimage_id_seq; publicadminfalse8%00itemimage_itemimage_id_seq SEQUENCE SETBSELECT pg_catalog.setval('itemimage_itemimage_id_seq', 20, true); publicadminfalse493%00itemimage_itemimage_id_seqACLREVOKE ALL ON SEQUENCE itemimage_itemimage_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemimage_itemimage_id_seq FROM admin; GRANT ALL ON SEQUENCE itemimage_itemimage_id_seq TO admin; GRANT ALL ON SEQUENCE itemimage_itemimage_id_seq TO xtrole; publicadminfalse49312591694954itemlocTABLEpCREATE TABLE itemloc ( itemloc_id integer DEFAULT nextval(('"itemloc_itemloc_id_seq"'::text)::regclass) NOT NULL, itemloc_itemsite_id integer NOT NULL, itemloc_location_id integer NOT NULL, itemloc_qty numeric(18,6) NOT NULL, itemloc_expiration date NOT NULL, itemloc_consolflag boolean, itemloc_ls_id integer, itemloc_warrpurc date ); DROP TABLE public.itemloc; publicadminfalse64438%00 TABLE itemlocCOMMENTvCOMMENT ON TABLE itemloc IS 'Detailed Location information for Lot/Serial and Multiple Location Control (MLC) Items'; publicadminfalse494%00itemlocACLREVOKE ALL ON TABLE itemloc FROM PUBLIC; REVOKE ALL ON TABLE itemloc FROM admin; GRANT ALL ON TABLE itemloc TO admin; GRANT ALL ON TABLE itemloc TO xtrole; publicadminfalse49412591694958itemloc_itemloc_id_seqSEQUENCExCREATE SEQUENCE itemloc_itemloc_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.itemloc_itemloc_id_seq; publicadminfalse8%00itemloc_itemloc_id_seq SEQUENCE SET?SELECT pg_catalog.setval('itemloc_itemloc_id_seq', 511, true); publicadminfalse495%00itemloc_itemloc_id_seqACLREVOKE ALL ON SEQUENCE itemloc_itemloc_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemloc_itemloc_id_seq FROM admin; GRANT ALL ON SEQUENCE itemloc_itemloc_id_seq TO admin; GRANT ALL ON SEQUENCE itemloc_itemloc_id_seq TO xtrole; publicadminfalse49512591694960itemloc_series_seqSEQUENCE|CREATE SEQUENCE itemloc_series_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; )DROP SEQUENCE public.itemloc_series_seq; publicadminfalse8%00itemloc_series_seq SEQUENCE SET<SELECT pg_catalog.setval('itemloc_series_seq', 1022, true); publicadminfalse496%00itemloc_series_seqACLREVOKE ALL ON SEQUENCE itemloc_series_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemloc_series_seq FROM admin; GRANT ALL ON SEQUENCE itemloc_series_seq TO admin; GRANT ALL ON SEQUENCE itemloc_series_seq TO xtrole; publicadminfalse49612591694962 itemlocdistTABLECREATE TABLE itemlocdist ( itemlocdist_id integer DEFAULT nextval(('"itemlocdist_itemlocdist_id_seq"'::text)::regclass) NOT NULL, itemlocdist_itemlocdist_id integer, itemlocdist_source_type character(1), itemlocdist_source_id integer, itemlocdist_qty numeric(18,6), itemlocdist_series integer, itemlocdist_invhist_id integer, itemlocdist_itemsite_id integer, itemlocdist_reqlotserial boolean DEFAULT false, itemlocdist_flush boolean DEFAULT false, itemlocdist_expiration date, itemlocdist_distlotserial boolean, itemlocdist_warranty date, itemlocdist_ls_id integer, itemlocdist_order_type text, itemlocdist_order_id integer ); DROP TABLE public.itemlocdist; publicadminfalse6444644564468%00TABLE itemlocdistCOMMENTCOMMENT ON TABLE itemlocdist IS 'Temporary table for storing information about Inventory distributions involving Lot/Serial and Multiple Location Control (MLC) Items'; publicadminfalse497%00 itemlocdistACLREVOKE ALL ON TABLE itemlocdist FROM PUBLIC; REVOKE ALL ON TABLE itemlocdist FROM admin; GRANT ALL ON TABLE itemlocdist TO admin; GRANT ALL ON TABLE itemlocdist TO xtrole; publicadminfalse49712591694971itemlocdist_itemlocdist_id_seqSEQUENCECREATE SEQUENCE itemlocdist_itemlocdist_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 5DROP SEQUENCE public.itemlocdist_itemlocdist_id_seq; publicadminfalse8%00itemlocdist_itemlocdist_id_seq SEQUENCE SETHSELECT pg_catalog.setval('itemlocdist_itemlocdist_id_seq', 2133, true); publicadminfalse498%00itemlocdist_itemlocdist_id_seqACLREVOKE ALL ON SEQUENCE itemlocdist_itemlocdist_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemlocdist_itemlocdist_id_seq FROM admin; GRANT ALL ON SEQUENCE itemlocdist_itemlocdist_id_seq TO admin; GRANT ALL ON SEQUENCE itemlocdist_itemlocdist_id_seq TO xtrole; publicadminfalse49812591694973 itemlocpostTABLECREATE TABLE itemlocpost ( itemlocpost_id integer NOT NULL, itemlocpost_itemlocseries integer, itemlocpost_glseq integer ); DROP TABLE public.itemlocpost; publicadminfalse8%00TABLE itemlocpostCOMMENTCOMMENT ON TABLE itemlocpost IS 'Temporary table for storing information about Inventory distribution G/L postings involving Lot/Serial and Multiple Location Control (MLC) Items'; publicadminfalse499%00 itemlocpostACLREVOKE ALL ON TABLE itemlocpost FROM PUBLIC; REVOKE ALL ON TABLE itemlocpost FROM admin; GRANT ALL ON TABLE itemlocpost TO admin; GRANT ALL ON TABLE itemlocpost TO xtrole; publicadminfalse49912591694976itemlocpost_itemlocpost_id_seqSEQUENCECREATE SEQUENCE itemlocpost_itemlocpost_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 5DROP SEQUENCE public.itemlocpost_itemlocpost_id_seq; publicadminfalse8499%00itemlocpost_itemlocpost_id_seqSEQUENCE OWNED BYSALTER SEQUENCE itemlocpost_itemlocpost_id_seq OWNED BY itemlocpost.itemlocpost_id; publicadminfalse500%00itemlocpost_itemlocpost_id_seq SEQUENCE SETFSELECT pg_catalog.setval('itemlocpost_itemlocpost_id_seq', 1, false); publicadminfalse500%00itemlocpost_itemlocpost_id_seqACLREVOKE ALL ON SEQUENCE itemlocpost_itemlocpost_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemlocpost_itemlocpost_id_seq FROM admin; GRANT ALL ON SEQUENCE itemlocpost_itemlocpost_id_seq TO admin; GRANT ALL ON SEQUENCE itemlocpost_itemlocpost_id_seq TO xtrole; publicadminfalse50012591694978itemopn_itemopn_id_seqSEQUENCECREATE SEQUENCE itemopn_itemopn_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.itemopn_itemopn_id_seq; publicadminfalse8%00itemopn_itemopn_id_seq SEQUENCE SET>SELECT pg_catalog.setval('itemopn_itemopn_id_seq', 39, true); publicadminfalse501%00itemopn_itemopn_id_seqACLREVOKE ALL ON SEQUENCE itemopn_itemopn_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemopn_itemopn_id_seq FROM admin; GRANT ALL ON SEQUENCE itemopn_itemopn_id_seq TO admin; GRANT ALL ON SEQUENCE itemopn_itemopn_id_seq TO xtrole; publicadminfalse50112591694980itemsite_itemsite_id_seqSEQUENCECREATE SEQUENCE itemsite_itemsite_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; /DROP SEQUENCE public.itemsite_itemsite_id_seq; publicadminfalse8%00itemsite_itemsite_id_seq SEQUENCE SETASELECT pg_catalog.setval('itemsite_itemsite_id_seq', 292, true); publicadminfalse502%00itemsite_itemsite_id_seqACLREVOKE ALL ON SEQUENCE itemsite_itemsite_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemsite_itemsite_id_seq FROM admin; GRANT ALL ON SEQUENCE itemsite_itemsite_id_seq TO admin; GRANT ALL ON SEQUENCE itemsite_itemsite_id_seq TO xtrole; publicadminfalse50212591694982itemsrc_itemsrc_id_seqSEQUENCECREATE SEQUENCE itemsrc_itemsrc_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.itemsrc_itemsrc_id_seq; publicadminfalse8%00itemsrc_itemsrc_id_seq SEQUENCE SET>SELECT pg_catalog.setval('itemsrc_itemsrc_id_seq', 83, true); publicadminfalse503%00itemsrc_itemsrc_id_seqACLREVOKE ALL ON SEQUENCE itemsrc_itemsrc_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemsrc_itemsrc_id_seq FROM admin; GRANT ALL ON SEQUENCE itemsrc_itemsrc_id_seq TO admin; GRANT ALL ON SEQUENCE itemsrc_itemsrc_id_seq TO xtrole; publicadminfalse50312591694984itemsrcp_itemsrcp_id_seqSEQUENCECREATE SEQUENCE itemsrcp_itemsrcp_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; /DROP SEQUENCE public.itemsrcp_itemsrcp_id_seq; publicadminfalse8%00itemsrcp_itemsrcp_id_seq SEQUENCE SET@SELECT pg_catalog.setval('itemsrcp_itemsrcp_id_seq', 84, true); publicadminfalse504%00itemsrcp_itemsrcp_id_seqACLREVOKE ALL ON SEQUENCE itemsrcp_itemsrcp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemsrcp_itemsrcp_id_seq FROM admin; GRANT ALL ON SEQUENCE itemsrcp_itemsrcp_id_seq TO admin; GRANT ALL ON SEQUENCE itemsrcp_itemsrcp_id_seq TO xtrole; publicadminfalse50412591694986itemsub_itemsub_id_seqSEQUENCECREATE SEQUENCE itemsub_itemsub_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.itemsub_itemsub_id_seq; publicadminfalse8%00itemsub_itemsub_id_seq SEQUENCE SET>SELECT pg_catalog.setval('itemsub_itemsub_id_seq', 16, true); publicadminfalse505%00itemsub_itemsub_id_seqACLREVOKE ALL ON SEQUENCE itemsub_itemsub_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemsub_itemsub_id_seq FROM admin; GRANT ALL ON SEQUENCE itemsub_itemsub_id_seq TO admin; GRANT ALL ON SEQUENCE itemsub_itemsub_id_seq TO xtrole; publicadminfalse50512591694988itemtax_itemtax_id_seqSEQUENCExCREATE SEQUENCE itemtax_itemtax_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.itemtax_itemtax_id_seq; publicadminfalse8235%00itemtax_itemtax_id_seqSEQUENCE OWNED BYCALTER SEQUENCE itemtax_itemtax_id_seq OWNED BY itemtax.itemtax_id; publicadminfalse506%00itemtax_itemtax_id_seq SEQUENCE SET>SELECT pg_catalog.setval('itemtax_itemtax_id_seq', 1, false); publicadminfalse506%00itemtax_itemtax_id_seqACLREVOKE ALL ON SEQUENCE itemtax_itemtax_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemtax_itemtax_id_seq FROM admin; GRANT ALL ON SEQUENCE itemtax_itemtax_id_seq TO admin; GRANT ALL ON SEQUENCE itemtax_itemtax_id_seq TO xtrole; publicadminfalse50612591694990 itemtransTABLECREATE TABLE itemtrans ( itemtrans_id integer NOT NULL, itemtrans_source_item_id integer, itemtrans_target_item_id integer ); DROP TABLE public.itemtrans; publicadminfalse8%00TABLE itemtransCOMMENTACOMMENT ON TABLE itemtrans IS 'Item Transformation information'; publicadminfalse507%00 itemtransACLREVOKE ALL ON TABLE itemtrans FROM PUBLIC; REVOKE ALL ON TABLE itemtrans FROM admin; GRANT ALL ON TABLE itemtrans TO admin; GRANT ALL ON TABLE itemtrans TO xtrole; publicadminfalse50712591694993itemtrans_itemtrans_id_seqSEQUENCE|CREATE SEQUENCE itemtrans_itemtrans_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 1DROP SEQUENCE public.itemtrans_itemtrans_id_seq; publicadminfalse8507%00itemtrans_itemtrans_id_seqSEQUENCE OWNED BYKALTER SEQUENCE itemtrans_itemtrans_id_seq OWNED BY itemtrans.itemtrans_id; publicadminfalse508%00itemtrans_itemtrans_id_seq SEQUENCE SETBSELECT pg_catalog.setval('itemtrans_itemtrans_id_seq', 1, false); publicadminfalse508%00itemtrans_itemtrans_id_seqACLREVOKE ALL ON SEQUENCE itemtrans_itemtrans_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemtrans_itemtrans_id_seq FROM admin; GRANT ALL ON SEQUENCE itemtrans_itemtrans_id_seq TO admin; GRANT ALL ON SEQUENCE itemtrans_itemtrans_id_seq TO xtrole; publicadminfalse50812591694995itemuomTABLECREATE TABLE itemuom ( itemuom_id integer NOT NULL, itemuom_itemuomconv_id integer NOT NULL, itemuom_uomtype_id integer NOT NULL ); DROP TABLE public.itemuom; publicadminfalse8%00 TABLE itemuomCOMMENTNCOMMENT ON TABLE itemuom IS 'A UOM type relation for a specific conversion.'; publicadminfalse509%00itemuomACLREVOKE ALL ON TABLE itemuom FROM PUBLIC; REVOKE ALL ON TABLE itemuom FROM admin; GRANT ALL ON TABLE itemuom TO admin; GRANT ALL ON TABLE itemuom TO xtrole; publicadminfalse50912591694998itemuom_itemuom_id_seqSEQUENCExCREATE SEQUENCE itemuom_itemuom_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.itemuom_itemuom_id_seq; publicadminfalse8509%00itemuom_itemuom_id_seqSEQUENCE OWNED BYCALTER SEQUENCE itemuom_itemuom_id_seq OWNED BY itemuom.itemuom_id; publicadminfalse510%00itemuom_itemuom_id_seq SEQUENCE SET>SELECT pg_catalog.setval('itemuom_itemuom_id_seq', 1, false); publicadminfalse510%00itemuom_itemuom_id_seqACLREVOKE ALL ON SEQUENCE itemuom_itemuom_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemuom_itemuom_id_seq FROM admin; GRANT ALL ON SEQUENCE itemuom_itemuom_id_seq TO admin; GRANT ALL ON SEQUENCE itemuom_itemuom_id_seq TO xtrole; publicadminfalse51012591695000itemuomconv_itemuomconv_id_seqSEQUENCECREATE SEQUENCE itemuomconv_itemuomconv_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 5DROP SEQUENCE public.itemuomconv_itemuomconv_id_seq; publicadminfalse8236%00itemuomconv_itemuomconv_id_seqSEQUENCE OWNED BYSALTER SEQUENCE itemuomconv_itemuomconv_id_seq OWNED BY itemuomconv.itemuomconv_id; publicadminfalse511&00itemuomconv_itemuomconv_id_seq SEQUENCE SETFSELECT pg_catalog.setval('itemuomconv_itemuomconv_id_seq', 1, false); publicadminfalse511&00itemuomconv_itemuomconv_id_seqACLREVOKE ALL ON SEQUENCE itemuomconv_itemuomconv_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE itemuomconv_itemuomconv_id_seq FROM admin; GRANT ALL ON SEQUENCE itemuomconv_itemuomconv_id_seq TO admin; GRANT ALL ON SEQUENCE itemuomconv_itemuomconv_id_seq TO xtrole; publicadminfalse51112591695002journal_number_seqSEQUENCEtCREATE SEQUENCE journal_number_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; )DROP SEQUENCE public.journal_number_seq; publicadminfalse8&00journal_number_seq SEQUENCE SET<SELECT pg_catalog.setval('journal_number_seq', 2274, true); publicadminfalse512&00journal_number_seqACLREVOKE ALL ON SEQUENCE journal_number_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE journal_number_seq FROM admin; GRANT ALL ON SEQUENCE journal_number_seq TO admin; GRANT ALL ON SEQUENCE journal_number_seq TO xtrole; publicadminfalse51212591695004jrnluseTABLECREATE TABLE jrnluse ( jrnluse_id integer DEFAULT nextval(('"jrnluse_jrnluse_id_seq"'::text)::regclass) NOT NULL, jrnluse_date timestamp without time zone, jrnluse_number integer, jrnluse_use text ); DROP TABLE public.jrnluse; publicadminfalse64508&00 TABLE jrnluseCOMMENTACOMMENT ON TABLE jrnluse IS 'Journal entry and use information'; publicadminfalse513&00jrnluseACLREVOKE ALL ON TABLE jrnluse FROM PUBLIC; REVOKE ALL ON TABLE jrnluse FROM admin; GRANT ALL ON TABLE jrnluse TO admin; GRANT ALL ON TABLE jrnluse TO xtrole; publicadminfalse51312591695011jrnluse_jrnluse_id_seqSEQUENCExCREATE SEQUENCE jrnluse_jrnluse_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.jrnluse_jrnluse_id_seq; publicadminfalse8&00jrnluse_jrnluse_id_seq SEQUENCE SET?SELECT pg_catalog.setval('jrnluse_jrnluse_id_seq', 280, true); publicadminfalse514&00jrnluse_jrnluse_id_seqACLREVOKE ALL ON SEQUENCE jrnluse_jrnluse_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE jrnluse_jrnluse_id_seq FROM admin; GRANT ALL ON SEQUENCE jrnluse_jrnluse_id_seq TO admin; GRANT ALL ON SEQUENCE jrnluse_jrnluse_id_seq TO xtrole; publicadminfalse51412591695013labeldefTABLECREATE TABLE labeldef ( labeldef_id integer NOT NULL, labeldef_name text NOT NULL, labeldef_papersize text NOT NULL, labeldef_columns integer NOT NULL, labeldef_rows integer NOT NULL, labeldef_width integer NOT NULL, labeldef_height integer NOT NULL, labeldef_start_offset_x integer NOT NULL, labeldef_start_offset_y integer NOT NULL, labeldef_horizontal_gap integer NOT NULL, labeldef_vertical_gap integer NOT NULL ); DROP TABLE public.labeldef; publicadminfalse8&00labeldefACLREVOKE ALL ON TABLE labeldef FROM PUBLIC; REVOKE ALL ON TABLE labeldef FROM admin; GRANT ALL ON TABLE labeldef TO admin; GRANT ALL ON TABLE labeldef TO xtrole; publicadminfalse51512591695019labeldef_labeldef_id_seqSEQUENCEzCREATE SEQUENCE labeldef_labeldef_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.labeldef_labeldef_id_seq; publicadminfalse8515 &00labeldef_labeldef_id_seqSEQUENCE OWNED BYGALTER SEQUENCE labeldef_labeldef_id_seq OWNED BY labeldef.labeldef_id; publicadminfalse516 &00labeldef_labeldef_id_seq SEQUENCE SET?SELECT pg_catalog.setval('labeldef_labeldef_id_seq', 4, true); publicadminfalse516 &00labeldef_labeldef_id_seqACLREVOKE ALL ON SEQUENCE labeldef_labeldef_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE labeldef_labeldef_id_seq FROM admin; GRANT ALL ON SEQUENCE labeldef_labeldef_id_seq TO admin; GRANT ALL ON SEQUENCE labeldef_labeldef_id_seq TO xtrole; publicadminfalse51612591695021 labelformTABLEVCREATE TABLE labelform ( labelform_id integer DEFAULT nextval(('"labelform_labelform_id_seq"'::text)::regclass) NOT NULL, labelform_name text NOT NULL, labelform_report_id integer, labelform_perpage integer, labelform_report_name text, CONSTRAINT labelform_labelform_name_check CHECK ((labelform_name <> ''::text)) ); DROP TABLE public.labelform; publicadminfalse645264538 &00TABLE labelformCOMMENT8COMMENT ON TABLE labelform IS 'Label Form information'; publicadminfalse517 &00$COLUMN labelform.labelform_report_idCOMMENTkCOMMENT ON COLUMN labelform.labelform_report_id IS 'Obsolete -- reference labelform_report_name instead.'; publicadminfalse517&00 labelformACLREVOKE ALL ON TABLE labelform FROM PUBLIC; REVOKE ALL ON TABLE labelform FROM admin; GRANT ALL ON TABLE labelform TO admin; GRANT ALL ON TABLE labelform TO xtrole; publicadminfalse51712591695028labelform_labelform_id_seqSEQUENCE|CREATE SEQUENCE labelform_labelform_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 1DROP SEQUENCE public.labelform_labelform_id_seq; publicadminfalse8&00labelform_labelform_id_seq SEQUENCE SETASELECT pg_catalog.setval('labelform_labelform_id_seq', 6, true); publicadminfalse518&00labelform_labelform_id_seqACLREVOKE ALL ON SEQUENCE labelform_labelform_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE labelform_labelform_id_seq FROM admin; GRANT ALL ON SEQUENCE labelform_labelform_id_seq TO admin; GRANT ALL ON SEQUENCE labelform_labelform_id_seq TO xtrole; publicadminfalse51812591695030langTABLECREATE TABLE lang ( lang_id integer NOT NULL, lang_qt_number integer, lang_abbr3 text, lang_abbr2 text, lang_name text NOT NULL ); DROP TABLE public.lang; publicadminfalse8&00 TABLE langCOMMENTCOMMENT ON TABLE lang IS 'Table mapping ISO 639-1 and 639-2 language codes to Qt''s enum QLocale::Language integer values. See http://www.loc.gov/standards/iso639-2/php/code_list.php and the QLocale documentation..'; publicadminfalse519&00COLUMN lang.lang_abbr3COMMENTCOMMENT ON COLUMN lang.lang_abbr3 IS 'ISO 639-2 code for language. Where there is a choice between bibliographic (B) and terminology (T) usage, this value is the T code'; publicadminfalse519&00COLUMN lang.lang_abbr2COMMENTDCOMMENT ON COLUMN lang.lang_abbr2 IS 'ISO 639-1 code for language'; publicadminfalse519&00COLUMN lang.lang_nameCOMMENThCOMMENT ON COLUMN lang.lang_name IS 'Name of a human language, taken from the ISO 639-2 documentation'; publicadminfalse519&00langACLREVOKE ALL ON TABLE lang FROM PUBLIC; REVOKE ALL ON TABLE lang FROM admin; GRANT ALL ON TABLE lang TO admin; GRANT ALL ON TABLE lang TO xtrole; publicadminfalse51912591695036lang_lang_id_seqSEQUENCErCREATE SEQUENCE lang_lang_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 'DROP SEQUENCE public.lang_lang_id_seq; publicadminfalse8519&00lang_lang_id_seqSEQUENCE OWNED BY7ALTER SEQUENCE lang_lang_id_seq OWNED BY lang.lang_id; publicadminfalse520&00lang_lang_id_seq SEQUENCE SET9SELECT pg_catalog.setval('lang_lang_id_seq', 499, true); publicadminfalse520&00lang_lang_id_seqACLREVOKE ALL ON SEQUENCE lang_lang_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE lang_lang_id_seq FROM admin; GRANT ALL ON SEQUENCE lang_lang_id_seq TO admin; GRANT ALL ON SEQUENCE lang_lang_id_seq TO xtrole; publicadminfalse520 12591695038localeTABLECREATE TABLE locale ( locale_id integer DEFAULT nextval(('locale_locale_id_seq'::text)::regclass) NOT NULL, locale_code text NOT NULL, locale_descrip text, locale_lang_file text, locale_dateformat text, locale_currformat text, locale_qtyformat text, locale_comments text, locale_qtyperformat text, locale_salespriceformat text, locale_extpriceformat text, locale_timeformat text, locale_timestampformat text, local_costformat text, locale_costformat text, locale_purchpriceformat text, locale_uomratioformat text, locale_intervalformat text, locale_lang_id integer, locale_country_id integer, locale_error_color text, locale_warning_color text, locale_emphasis_color text, locale_altemphasis_color text, locale_expired_color text, locale_future_color text, locale_curr_scale integer, locale_salesprice_scale integer, locale_purchprice_scale integer, locale_extprice_scale integer, locale_cost_scale integer, locale_qty_scale integer, locale_qtyper_scale integer, locale_uomratio_scale integer, locale_percent_scale integer DEFAULT 2, locale_weight_scale integer DEFAULT 2 NOT NULL, CONSTRAINT locale_locale_code_check CHECK ((locale_code <> ''::text)) ); DROP TABLE public.locale; publicadminfalse64556456645764588&00 TABLE localeCOMMENT5COMMENT ON TABLE locale IS 'The locale table holds information required to show data to the user in a localized format. Colors are either names documented by the WWW Consortium or RGB colors. Format for RGB colors is #RGB, #RRGGBB, or #RRRGGGBBB, where the letters R, G, and B stand for hexidecimal digits.'; publicadminfalse521&00COLUMN locale.locale_lang_fileCOMMENT;COMMENT ON COLUMN locale.locale_lang_file IS 'Deprecated'; publicadminfalse521&00COLUMN locale.locale_dateformatCOMMENT<COMMENT ON COLUMN locale.locale_dateformat IS 'Deprecated'; publicadminfalse521&00COLUMN locale.locale_currformatCOMMENT<COMMENT ON COLUMN locale.locale_currformat IS 'Deprecated'; publicadminfalse521&00COLUMN locale.locale_qtyformatCOMMENT;COMMENT ON COLUMN locale.locale_qtyformat IS 'Deprecated'; publicadminfalse521&00!COLUMN locale.locale_qtyperformatCOMMENT>COMMENT ON COLUMN locale.locale_qtyperformat IS 'Deprecated'; publicadminfalse521&00%COLUMN locale.locale_salespriceformatCOMMENTBCOMMENT ON COLUMN locale.locale_salespriceformat IS 'Deprecated'; publicadminfalse521 &00#COLUMN locale.locale_extpriceformatCOMMENT@COMMENT ON COLUMN locale.locale_extpriceformat IS 'Deprecated'; publicadminfalse521!&00COLUMN locale.locale_timeformatCOMMENT<COMMENT ON COLUMN locale.locale_timeformat IS 'Deprecated'; publicadminfalse521"&00$COLUMN locale.locale_timestampformatCOMMENTACOMMENT ON COLUMN locale.locale_timestampformat IS 'Deprecated'; publicadminfalse521#&00COLUMN locale.local_costformatCOMMENT;COMMENT ON COLUMN locale.local_costformat IS 'Deprecated'; publicadminfalse521$&00COLUMN locale.locale_costformatCOMMENT<COMMENT ON COLUMN locale.locale_costformat IS 'Deprecated'; publicadminfalse521%&00%COLUMN locale.locale_purchpriceformatCOMMENTBCOMMENT ON COLUMN locale.locale_purchpriceformat IS 'Deprecated'; publicadminfalse521&&00#COLUMN locale.locale_uomratioformatCOMMENT@COMMENT ON COLUMN locale.locale_uomratioformat IS 'Deprecated'; publicadminfalse521'&00#COLUMN locale.locale_intervalformatCOMMENT@COMMENT ON COLUMN locale.locale_intervalformat IS 'Deprecated'; publicadminfalse521(&00 COLUMN locale.locale_error_colorCOMMENTnCOMMENT ON COLUMN locale.locale_error_color IS 'Color to use to mark data that require immediate attention.'; publicadminfalse521)&00"COLUMN locale.locale_warning_colorCOMMENTkCOMMENT ON COLUMN locale.locale_warning_color IS 'Color to use to mark data that require attention soon.'; publicadminfalse521*&00#COLUMN locale.locale_emphasis_colorCOMMENT|COMMENT ON COLUMN locale.locale_emphasis_color IS 'Color to use to mark data that need to stand out but are not in error.'; publicadminfalse521+&00&COLUMN locale.locale_altemphasis_colorCOMMENTCOMMENT ON COLUMN locale.locale_altemphasis_color IS 'Color to use to mark data that need to stand out and be differentiated from other emphasized data.'; publicadminfalse521,&00"COLUMN locale.locale_expired_colorCOMMENTjCOMMENT ON COLUMN locale.locale_expired_color IS 'Color to use to mark data that are no longer current.'; publicadminfalse521-&00!COLUMN locale.locale_future_colorCOMMENTCOMMENT ON COLUMN locale.locale_future_color IS 'Color to use to mark data that will not be effective until some point in the future.'; publicadminfalse521.&00COLUMN locale.locale_curr_scaleCOMMENTsCOMMENT ON COLUMN locale.locale_curr_scale IS 'Number of decimal places to show when displaying Currency values.'; publicadminfalse521/&00%COLUMN locale.locale_salesprice_scaleCOMMENTvCOMMENT ON COLUMN locale.locale_salesprice_scale IS 'Number of decimal places to show when displaying Sales Prices.'; publicadminfalse5210&00%COLUMN locale.locale_purchprice_scaleCOMMENTyCOMMENT ON COLUMN locale.locale_purchprice_scale IS 'Number of decimal places to show when displaying Purchase Prices.'; publicadminfalse5211&00#COLUMN locale.locale_extprice_scaleCOMMENTwCOMMENT ON COLUMN locale.locale_extprice_scale IS 'Number of decimal places to show when displaying Extended Prices.'; publicadminfalse5212&00COLUMN locale.locale_cost_scaleCOMMENTiCOMMENT ON COLUMN locale.locale_cost_scale IS 'Number of decimal places to show when displaying Costs.'; publicadminfalse5213&00COLUMN locale.locale_qty_scaleCOMMENTmCOMMENT ON COLUMN locale.locale_qty_scale IS 'Number of decimal places to show when displaying Quantities.'; publicadminfalse5214&00!COLUMN locale.locale_qtyper_scaleCOMMENTtCOMMENT ON COLUMN locale.locale_qtyper_scale IS 'Number of decimal places to show when displaying Quantities Per.'; publicadminfalse5215&00#COLUMN locale.locale_uomratio_scaleCOMMENTrCOMMENT ON COLUMN locale.locale_uomratio_scale IS 'Number of decimal places to show when displaying UOM Ratios.'; publicadminfalse5216&00localeACLREVOKE ALL ON TABLE locale FROM PUBLIC; REVOKE ALL ON TABLE locale FROM admin; GRANT ALL ON TABLE locale TO admin; GRANT ALL ON TABLE locale TO xtrole; publicadminfalse521 12591695048locale_locale_id_seqSEQUENCE~CREATE SEQUENCE locale_locale_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; +DROP SEQUENCE public.locale_locale_id_seq; publicadminfalse87&00locale_locale_id_seq SEQUENCE SET<SELECT pg_catalog.setval('locale_locale_id_seq', 29, true); publicadminfalse5228&00locale_locale_id_seqACLREVOKE ALL ON SEQUENCE locale_locale_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE locale_locale_id_seq FROM admin; GRANT ALL ON SEQUENCE locale_locale_id_seq TO admin; GRANT ALL ON SEQUENCE locale_locale_id_seq TO xtrole; publicadminfalse522 12591695050location_location_id_seqSEQUENCECREATE SEQUENCE location_location_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; /DROP SEQUENCE public.location_location_id_seq; publicadminfalse89&00location_location_id_seq SEQUENCE SETASELECT pg_catalog.setval('location_location_id_seq', 121, true); publicadminfalse523:&00location_location_id_seqACLREVOKE ALL ON SEQUENCE location_location_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE location_location_id_seq FROM admin; GRANT ALL ON SEQUENCE location_location_id_seq TO admin; GRANT ALL ON SEQUENCE location_location_id_seq TO xtrole; publicadminfalse523 12591695052locitemTABLECREATE TABLE locitem ( locitem_id integer DEFAULT nextval(('"locitem_locitem_id_seq"'::text)::regclass) NOT NULL, locitem_location_id integer, locitem_item_id integer ); DROP TABLE public.locitem; publicadminfalse64598;&00 TABLE locitemCOMMENTYCOMMENT ON TABLE locitem IS 'Restricted Warehouse Location Allowable Items information'; publicadminfalse524<&00locitemACLREVOKE ALL ON TABLE locitem FROM PUBLIC; REVOKE ALL ON TABLE locitem FROM admin; GRANT ALL ON TABLE locitem TO admin; GRANT ALL ON TABLE locitem TO xtrole; publicadminfalse524 12591695056locitem_locitem_id_seqSEQUENCECREATE SEQUENCE locitem_locitem_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.locitem_locitem_id_seq; publicadminfalse8=&00locitem_locitem_id_seq SEQUENCE SET>SELECT pg_catalog.setval('locitem_locitem_id_seq', 21, true); publicadminfalse525>&00locitem_locitem_id_seqACLREVOKE ALL ON SEQUENCE locitem_locitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE locitem_locitem_id_seq FROM admin; GRANT ALL ON SEQUENCE locitem_locitem_id_seq TO admin; GRANT ALL ON SEQUENCE locitem_locitem_id_seq TO xtrole; publicadminfalse52512591695058log_log_id_seqSEQUENCExCREATE SEQUENCE log_log_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; %DROP SEQUENCE public.log_log_id_seq; publicadminfalse8?&00log_log_id_seq SEQUENCE SET7SELECT pg_catalog.setval('log_log_id_seq', 747, true); publicadminfalse526@&00log_log_id_seqACLREVOKE ALL ON SEQUENCE log_log_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE log_log_id_seq FROM admin; GRANT ALL ON SEQUENCE log_log_id_seq TO admin; GRANT ALL ON SEQUENCE log_log_id_seq TO xtrole; publicadminfalse52612591695060metricTABLE CREATE TABLE metric ( metric_id integer DEFAULT nextval(('metric_metric_id_seq'::text)::regclass) NOT NULL, metric_name text NOT NULL, metric_value text, metric_module text, CONSTRAINT metric_metric_name_check CHECK ((metric_name <> ''::text)) ); DROP TABLE public.metric; publicadminfalse646064618A&00 TABLE metricCOMMENTDCOMMENT ON TABLE metric IS 'Application-wide settings information'; publicadminfalse527B&00metricACLREVOKE ALL ON TABLE metric FROM PUBLIC; REVOKE ALL ON TABLE metric FROM admin; GRANT ALL ON TABLE metric TO admin; GRANT ALL ON TABLE metric TO xtrole; publicadminfalse52712591695067metric_metric_id_seqSEQUENCE~CREATE SEQUENCE metric_metric_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; +DROP SEQUENCE public.metric_metric_id_seq; publicadminfalse8C&00metric_metric_id_seq SEQUENCE SET=SELECT pg_catalog.setval('metric_metric_id_seq', 300, true); publicadminfalse528D&00metric_metric_id_seqACLREVOKE ALL ON SEQUENCE metric_metric_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE metric_metric_id_seq FROM admin; GRANT ALL ON SEQUENCE metric_metric_id_seq TO admin; GRANT ALL ON SEQUENCE metric_metric_id_seq TO xtrole; publicadminfalse52812591695069 metricencTABLECREATE TABLE metricenc ( metricenc_id integer NOT NULL, metricenc_name text NOT NULL, metricenc_value bytea, metricenc_module text, CONSTRAINT metricenc_metricenc_name_check CHECK ((metricenc_name <> ''::text)) ); DROP TABLE public.metricenc; publicadminfalse64638E&00TABLE metricencCOMMENTVCOMMENT ON TABLE metricenc IS 'Application-wide settings information encrypted data'; publicadminfalse529F&00 metricencACLREVOKE ALL ON TABLE metricenc FROM PUBLIC; REVOKE ALL ON TABLE metricenc FROM admin; GRANT ALL ON TABLE metricenc TO admin; GRANT ALL ON TABLE metricenc TO xtrole; publicadminfalse52912591695075metricenc_metricenc_id_seqSEQUENCE|CREATE SEQUENCE metricenc_metricenc_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 1DROP SEQUENCE public.metricenc_metricenc_id_seq; publicadminfalse8529G&00metricenc_metricenc_id_seqSEQUENCE OWNED BYKALTER SEQUENCE metricenc_metricenc_id_seq OWNED BY metricenc.metricenc_id; publicadminfalse530H&00metricenc_metricenc_id_seq SEQUENCE SETBSELECT pg_catalog.setval('metricenc_metricenc_id_seq', 1, false); publicadminfalse530I&00metricenc_metricenc_id_seqACLREVOKE ALL ON SEQUENCE metricenc_metricenc_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE metricenc_metricenc_id_seq FROM admin; GRANT ALL ON SEQUENCE metricenc_metricenc_id_seq TO admin; GRANT ALL ON SEQUENCE metricenc_metricenc_id_seq TO xtrole; publicadminfalse53012591695077misc_index_seqSEQUENCExCREATE SEQUENCE misc_index_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; %DROP SEQUENCE public.misc_index_seq; publicadminfalse8J&00misc_index_seq SEQUENCE SET8SELECT pg_catalog.setval('misc_index_seq', 1166, true); publicadminfalse531K&00misc_index_seqACLREVOKE ALL ON SEQUENCE misc_index_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE misc_index_seq FROM admin; GRANT ALL ON SEQUENCE misc_index_seq TO admin; GRANT ALL ON SEQUENCE misc_index_seq TO xtrole; publicadminfalse53112591695079mrghistTABLECREATE TABLE mrghist ( mrghist_cntct_id integer NOT NULL, mrghist_table text NOT NULL, mrghist_pkey_col text NOT NULL, mrghist_pkey_id integer NOT NULL, mrghist_cntct_col text NOT NULL ); DROP TABLE public.mrghist; publicadminfalse8L&00mrghistACLREVOKE ALL ON TABLE mrghist FROM PUBLIC; REVOKE ALL ON TABLE mrghist FROM admin; GRANT ALL ON TABLE mrghist TO admin; GRANT ALL ON TABLE mrghist TO xtrole; publicadminfalse53212591695085mrgundoTABLECREATE TABLE mrgundo ( mrgundo_base_schema text, mrgundo_base_table text, mrgundo_base_id integer, mrgundo_schema text, mrgundo_table text, mrgundo_pkey_col text, mrgundo_pkey_id integer, mrgundo_col text, mrgundo_value text, mrgundo_type text ); DROP TABLE public.mrgundo; publicadminfalse8M&00 TABLE mrgundoCOMMENT COMMENT ON TABLE mrgundo IS 'This table keeps track of the original values of changes made while merging two records. It is a generalization of mrghist and trgthist, which are specific to merging contacts. The schema, table, and pkey_id columns uniquely identify the record that was changed while the _base_ columns identify the merge target. The _base_ columns are required to allow finding all of the records that pertain to a particular merge (e.g. find changes to the comment table that pertain to a crmacct merge).'; publicadminfalse533N&00"COLUMN mrgundo.mrgundo_base_schemaCOMMENTbCOMMENT ON COLUMN mrgundo.mrgundo_base_schema IS 'The schema in which the merge target resides.'; publicadminfalse533O&00!COLUMN mrgundo.mrgundo_base_tableCOMMENT`COMMENT ON COLUMN mrgundo.mrgundo_base_table IS 'The table in which the merge target resides.'; publicadminfalse533P&00COLUMN mrgundo.mrgundo_base_idCOMMENT\COMMENT ON COLUMN mrgundo.mrgundo_base_id IS 'The internal id of the merge target record.'; publicadminfalse533Q&00COLUMN mrgundo.mrgundo_schemaCOMMENTkCOMMENT ON COLUMN mrgundo.mrgundo_schema IS 'The name of the schema in which the modified table resides.'; publicadminfalse533R&00COLUMN mrgundo.mrgundo_tableCOMMENTfCOMMENT ON COLUMN mrgundo.mrgundo_table IS 'The name of the table that was modified during a merge.'; publicadminfalse533S&00COLUMN mrgundo.mrgundo_pkey_colCOMMENTCOMMENT ON COLUMN mrgundo.mrgundo_pkey_col IS 'The name of the primary key column in the modified table. This could be derived during the undo processing but it is simpler just to store it during the merge.'; publicadminfalse533T&00COLUMN mrgundo.mrgundo_pkey_idCOMMENTXCOMMENT ON COLUMN mrgundo.mrgundo_pkey_id IS 'The primary key of the modified record.'; publicadminfalse533U&00COLUMN mrgundo.mrgundo_colCOMMENTJCOMMENT ON COLUMN mrgundo.mrgundo_col IS 'The column that was modified.'; publicadminfalse533V&00COLUMN mrgundo.mrgundo_valueCOMMENTYCOMMENT ON COLUMN mrgundo.mrgundo_value IS 'The value of the column before the change.'; publicadminfalse533W&00COLUMN mrgundo.mrgundo_typeCOMMENTCOMMENT ON COLUMN mrgundo.mrgundo_type IS 'The data type of the modified column. This could be derived during the undo processing but it is simpler just to store it during the merge.'; publicadminfalse533X&00mrgundoACLREVOKE ALL ON TABLE mrgundo FROM PUBLIC; REVOKE ALL ON TABLE mrgundo FROM admin; GRANT ALL ON TABLE mrgundo TO admin; GRANT ALL ON TABLE mrgundo TO xtrole; publicadminfalse53312591695091msgTABLECREATE TABLE msg ( msg_id integer DEFAULT nextval(('"msg_msg_id_seq"'::text)::regclass) NOT NULL, msg_posted timestamp with time zone, msg_scheduled timestamp with time zone, msg_text text, msg_expires timestamp with time zone, msg_username text ); DROP TABLE public.msg; publicadminfalse64648Y&00 TABLE msgCOMMENT6COMMENT ON TABLE msg IS 'System Message information'; publicadminfalse534Z&00msgACLREVOKE ALL ON TABLE msg FROM PUBLIC; REVOKE ALL ON TABLE msg FROM admin; GRANT ALL ON TABLE msg TO admin; GRANT ALL ON TABLE msg TO xtrole; publicadminfalse53412591695098msg_msg_id_seqSEQUENCExCREATE SEQUENCE msg_msg_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; %DROP SEQUENCE public.msg_msg_id_seq; publicadminfalse8[&00msg_msg_id_seq SEQUENCE SET6SELECT pg_catalog.setval('msg_msg_id_seq', 16, true); publicadminfalse535\&00msg_msg_id_seqACLREVOKE ALL ON SEQUENCE msg_msg_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE msg_msg_id_seq FROM admin; GRANT ALL ON SEQUENCE msg_msg_id_seq TO admin; GRANT ALL ON SEQUENCE msg_msg_id_seq TO xtrole; publicadminfalse53512591695100msguserTABLECREATE TABLE msguser ( msguser_id integer DEFAULT nextval(('"msguser_msguser_id_seq"'::text)::regclass) NOT NULL, msguser_msg_id integer, msguser_viewed timestamp with time zone, msguser_username text ); DROP TABLE public.msguser; publicadminfalse64658]&00 TABLE msguserCOMMENT?COMMENT ON TABLE msguser IS 'System Message user information'; publicadminfalse536^&00msguserACLREVOKE ALL ON TABLE msguser FROM PUBLIC; REVOKE ALL ON TABLE msguser FROM admin; GRANT ALL ON TABLE msguser TO admin; GRANT ALL ON TABLE msguser TO xtrole; publicadminfalse53612591695107msguser_msguser_id_seqSEQUENCECREATE SEQUENCE msguser_msguser_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.msguser_msguser_id_seq; publicadminfalse8_&00msguser_msguser_id_seq SEQUENCE SET>SELECT pg_catalog.setval('msguser_msguser_id_seq', 12, true); publicadminfalse537`&00msguser_msguser_id_seqACLREVOKE ALL ON SEQUENCE msguser_msguser_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE msguser_msguser_id_seq FROM admin; GRANT ALL ON SEQUENCE msguser_msguser_id_seq TO admin; GRANT ALL ON SEQUENCE msguser_msguser_id_seq TO xtrole; publicadminfalse53712591695109nvend_nvend_id_seqSEQUENCE|CREATE SEQUENCE nvend_nvend_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; )DROP SEQUENCE public.nvend_nvend_id_seq; publicadminfalse8a&00nvend_nvend_id_seq SEQUENCE SET:SELECT pg_catalog.setval('nvend_nvend_id_seq', 1, false); publicadminfalse538b&00nvend_nvend_id_seqACLREVOKE ALL ON SEQUENCE nvend_nvend_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE nvend_nvend_id_seq FROM admin; GRANT ALL ON SEQUENCE nvend_nvend_id_seq TO admin; GRANT ALL ON SEQUENCE nvend_nvend_id_seq TO xtrole; publicadminfalse53812591695111 obsolete_taxTABLECREATE TABLE obsolete_tax ( tax_id integer DEFAULT nextval(('"tax_tax_id_seq"'::text)::regclass) NOT NULL, tax_code text, tax_descrip text, tax_ratea numeric(8,4), tax_sales_accnt_id integer, tax_freight boolean DEFAULT false NOT NULL, tax_cumulative boolean DEFAULT false NOT NULL, tax_rateb numeric(8,4), tax_salesb_accnt_id integer, tax_ratec numeric(8,4), tax_salesc_accnt_id integer ); DROP TABLE public.obsolete_tax; publicadminfalse6466646764688c&00TABLE obsolete_taxCOMMENTOCOMMENT ON TABLE obsolete_tax IS 'Tax information. Obsolete table structure.'; publicadminfalse539d&00COLUMN obsolete_tax.tax_freightCOMMENTCOMMENT ON COLUMN obsolete_tax.tax_freight IS 'Deprecated in 2.1 and moved to taxsel table where taxtype is the system defined Freight.'; publicadminfalse539e&00 obsolete_taxACLREVOKE ALL ON TABLE obsolete_tax FROM PUBLIC; REVOKE ALL ON TABLE obsolete_tax FROM admin; GRANT ALL ON TABLE obsolete_tax TO admin; GRANT ALL ON TABLE obsolete_tax TO xtrole; publicadminfalse53912591695120ophead_ophead_id_seqSEQUENCEvCREATE SEQUENCE ophead_ophead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.ophead_ophead_id_seq; publicadminfalse8181f&00ophead_ophead_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE ophead_ophead_id_seq OWNED BY ophead.ophead_id; publicadminfalse540g&00ophead_ophead_id_seq SEQUENCE SET;SELECT pg_catalog.setval('ophead_ophead_id_seq', 1, true); publicadminfalse540h&00ophead_ophead_id_seqACLREVOKE ALL ON SEQUENCE ophead_ophead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE ophead_ophead_id_seq FROM admin; GRANT ALL ON SEQUENCE ophead_ophead_id_seq TO admin; GRANT ALL ON SEQUENCE ophead_ophead_id_seq TO xtrole; publicadminfalse54012591695122opsourceTABLECREATE TABLE opsource ( opsource_id integer NOT NULL, opsource_name text NOT NULL, opsource_descrip text, CONSTRAINT opsource_opsource_name_check CHECK ((opsource_name <> ''::text)) ); DROP TABLE public.opsource; publicadminfalse64708i&00TABLE opsourceCOMMENT@COMMENT ON TABLE opsource IS 'Opportunity Lead Source values.'; publicadminfalse541j&00opsourceACLREVOKE ALL ON TABLE opsource FROM PUBLIC; REVOKE ALL ON TABLE opsource FROM admin; GRANT ALL ON TABLE opsource TO admin; GRANT ALL ON TABLE opsource TO xtrole; publicadminfalse54112591695128opsource_opsource_id_seqSEQUENCEzCREATE SEQUENCE opsource_opsource_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.opsource_opsource_id_seq; publicadminfalse5418k&00opsource_opsource_id_seqSEQUENCE OWNED BYGALTER SEQUENCE opsource_opsource_id_seq OWNED BY opsource.opsource_id; publicadminfalse542l&00opsource_opsource_id_seq SEQUENCE SET@SELECT pg_catalog.setval('opsource_opsource_id_seq', 1, false); publicadminfalse542m&00opsource_opsource_id_seqACLREVOKE ALL ON SEQUENCE opsource_opsource_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE opsource_opsource_id_seq FROM admin; GRANT ALL ON SEQUENCE opsource_opsource_id_seq TO admin; GRANT ALL ON SEQUENCE opsource_opsource_id_seq TO xtrole; publicadminfalse54212591695130opstageTABLECREATE TABLE opstage ( opstage_id integer NOT NULL, opstage_name text NOT NULL, opstage_descrip text, opstage_order integer DEFAULT 0 NOT NULL, opstage_opinactive boolean DEFAULT false, CONSTRAINT opstage_opstage_name_check CHECK ((opstage_name <> ''::text)) ); DROP TABLE public.opstage; publicadminfalse6472647364748n&00 TABLE opstageCOMMENT9COMMENT ON TABLE opstage IS 'Opportunity stage values.'; publicadminfalse543o&00opstageACLREVOKE ALL ON TABLE opstage FROM PUBLIC; REVOKE ALL ON TABLE opstage FROM admin; GRANT ALL ON TABLE opstage TO admin; GRANT ALL ON TABLE opstage TO xtrole; publicadminfalse543 12591695138opstage_opstage_id_seqSEQUENCExCREATE SEQUENCE opstage_opstage_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.opstage_opstage_id_seq; publicadminfalse8543p&00opstage_opstage_id_seqSEQUENCE OWNED BYCALTER SEQUENCE opstage_opstage_id_seq OWNED BY opstage.opstage_id; publicadminfalse544q&00opstage_opstage_id_seq SEQUENCE SET>SELECT pg_catalog.setval('opstage_opstage_id_seq', 1, false); publicadminfalse544r&00opstage_opstage_id_seqACLREVOKE ALL ON SEQUENCE opstage_opstage_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE opstage_opstage_id_seq FROM admin; GRANT ALL ON SEQUENCE opstage_opstage_id_seq TO admin; GRANT ALL ON SEQUENCE opstage_opstage_id_seq TO xtrole; publicadminfalse544!12591695140optypeTABLECREATE TABLE optype ( optype_id integer NOT NULL, optype_name text NOT NULL, optype_descrip text, CONSTRAINT optype_optype_name_check CHECK ((optype_name <> ''::text)) ); DROP TABLE public.optype; publicadminfalse64768s&00 TABLE optypeCOMMENT7COMMENT ON TABLE optype IS 'Opportunity Type values.'; publicadminfalse545t&00optypeACLREVOKE ALL ON TABLE optype FROM PUBLIC; REVOKE ALL ON TABLE optype FROM admin; GRANT ALL ON TABLE optype TO admin; GRANT ALL ON TABLE optype TO xtrole; publicadminfalse545"12591695146optype_optype_id_seqSEQUENCEvCREATE SEQUENCE optype_optype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.optype_optype_id_seq; publicadminfalse8545u&00optype_optype_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE optype_optype_id_seq OWNED BY optype.optype_id; publicadminfalse546v&00optype_optype_id_seq SEQUENCE SET<SELECT pg_catalog.setval('optype_optype_id_seq', 1, false); publicadminfalse546w&00optype_optype_id_seqACLREVOKE ALL ON SEQUENCE optype_optype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE optype_optype_id_seq FROM admin; GRANT ALL ON SEQUENCE optype_optype_id_seq TO admin; GRANT ALL ON SEQUENCE optype_optype_id_seq TO xtrole; publicadminfalse546M12592009441 orderheadVIEWCREATE VIEW orderhead AS SELECT DISTINCT data.orderhead_id, data.orderhead_type, data.orderhead_number, data.orderhead_status, data.orderhead_orderdate, data.orderhead_linecount, data.orderhead_from_id, data.orderhead_from, data.orderhead_to_id, data.orderhead_to, data.orderhead_curr_id, data.orderhead_agent_username, data.orderhead_shipvia FROM (SELECT pohead.pohead_id AS orderhead_id, 'PO'::text AS orderhead_type, pohead.pohead_number AS orderhead_number, pohead.pohead_status AS orderhead_status, pohead.pohead_orderdate AS orderhead_orderdate, (SELECT count(*) AS count FROM poitem WHERE (poitem.poitem_pohead_id = pohead.pohead_id)) AS orderhead_linecount, pohead.pohead_vend_id AS orderhead_from_id, vendinfo.vend_name AS orderhead_from, NULL::integer AS orderhead_to_id, ''::text AS orderhead_to, pohead.pohead_curr_id AS orderhead_curr_id, pohead.pohead_agent_username AS orderhead_agent_username, pohead.pohead_shipvia AS orderhead_shipvia FROM (pohead LEFT JOIN vendinfo ON ((pohead.pohead_vend_id = vendinfo.vend_id))) UNION ALL SELECT cohead.cohead_id AS orderhead_id, 'SO'::text AS orderhead_type, cohead.cohead_number AS orderhead_number, cohead.cohead_status AS orderhead_status, cohead.cohead_orderdate AS orderhead_orderdate, (SELECT count(*) AS count FROM coitem WHERE (coitem.coitem_cohead_id = cohead.cohead_id)) AS orderhead_linecount, NULL::unknown AS orderhead_from_id, ''::text AS orderhead_from, cohead.cohead_cust_id AS orderhead_to_id, CASE WHEN (length(cohead.cohead_shiptoname) > 0) THEN cohead.cohead_shiptoname ELSE cohead.cohead_billtoname END AS orderhead_to, cohead.cohead_curr_id AS orderhead_curr_id, ''::text AS orderhead_agent_username, cohead.cohead_shipvia AS orderhead_shipvia FROM cohead) data; DROP VIEW public.orderhead; publicadminfalse55418x&00VIEW orderheadCOMMENTCOMMENT ON VIEW orderhead IS 'Union of all orders for use by widgets and stored procedures which process multiple types of order'; publicadminfalse845y&00 orderheadACLREVOKE ALL ON TABLE orderhead FROM PUBLIC; REVOKE ALL ON TABLE orderhead FROM admin; GRANT ALL ON TABLE orderhead TO admin; GRANT ALL ON TABLE orderhead TO xtrole; publicadminfalse845N12592009446 orderitemVIEW CREATE VIEW orderitem AS (SELECT poitem.poitem_id AS orderitem_id, 'PO' AS orderitem_orderhead_type, poitem.poitem_pohead_id AS orderitem_orderhead_id, poitem.poitem_linenumber AS orderitem_linenumber, poitem.poitem_status AS orderitem_status, poitem.poitem_itemsite_id AS orderitem_itemsite_id, poitem.poitem_duedate AS orderitem_scheddate, poitem.poitem_qty_ordered AS orderitem_qty_ordered, poitem.poitem_qty_returned AS orderitem_qty_shipped, poitem.poitem_qty_received AS orderitem_qty_received, uom.uom_id AS orderitem_qty_uom_id, poitem.poitem_invvenduomratio AS orderitem_qty_invuomratio, poitem.poitem_unitprice AS orderitem_unitcost, pohead.pohead_curr_id AS orderitem_unitcost_curr_id, poitem.poitem_freight AS orderitem_freight, poitem.poitem_freight_received AS orderitem_freight_received, pohead.pohead_curr_id AS orderitem_freight_curr_id FROM ((poitem LEFT JOIN pohead ON ((poitem.poitem_pohead_id = pohead.pohead_id))) LEFT JOIN uom ON ((uom.uom_name = poitem.poitem_vend_uom))) UNION ALL SELECT coitem.coitem_id AS orderitem_id, 'SO' AS orderitem_orderhead_type, coitem.coitem_cohead_id AS orderitem_orderhead_id, coitem.coitem_linenumber AS orderitem_linenumber, coitem.coitem_status AS orderitem_status, coitem.coitem_itemsite_id AS orderitem_itemsite_id, coitem.coitem_scheddate AS orderitem_scheddate, coitem.coitem_qtyord AS orderitem_qty_ordered, coitem.coitem_qtyshipped AS orderitem_qty_shipped, coitem.coitem_qtyreturned AS orderitem_qty_received, coitem.coitem_qty_uom_id AS orderitem_qty_uom_id, coitem.coitem_qty_invuomratio AS orderitem_qty_invuomratio, coitem.coitem_unitcost AS orderitem_unitcost, basecurrid() AS orderitem_unitcost_curr_id, NULL::unknown AS orderitem_freight, NULL::unknown AS orderitem_freight_received, basecurrid() AS orderitem_freight_curr_id FROM coitem) UNION ALL SELECT quitem.quitem_id AS orderitem_id, 'QU' AS orderitem_orderhead_type, quitem.quitem_quhead_id AS orderitem_orderhead_id, quitem.quitem_linenumber AS orderitem_linenumber, 'O' AS orderitem_status, quitem.quitem_itemsite_id AS orderitem_itemsite_id, quitem.quitem_scheddate AS orderitem_scheddate, quitem.quitem_qtyord AS orderitem_qty_ordered, 0 AS orderitem_qty_shipped, 0 AS orderitem_qty_received, quitem.quitem_qty_uom_id AS orderitem_qty_uom_id, quitem.quitem_qty_invuomratio AS orderitem_qty_invuomratio, quitem.quitem_unitcost AS orderitem_unitcost, basecurrid() AS orderitem_unitcost_curr_id, NULL::unknown AS orderitem_freight, NULL::unknown AS orderitem_freight_received, basecurrid() AS orderitem_freight_curr_id FROM quitem; DROP VIEW public.orderitem; publicadminfalse55428z&00VIEW orderitemCOMMENTCOMMENT ON VIEW orderitem IS 'Union of all order line items for use by widgets and stored procedures which process multiple types of order'; publicadminfalse846{&00 orderitemACLREVOKE ALL ON TABLE orderitem FROM PUBLIC; REVOKE ALL ON TABLE orderitem FROM admin; GRANT ALL ON TABLE orderitem TO admin; GRANT ALL ON TABLE orderitem TO xtrole; publicadminfalse846#12591695158orderseqTABLEZCREATE TABLE orderseq ( orderseq_id integer DEFAULT nextval(('orderseq_orderseq_id_seq'::text)::regclass) NOT NULL, orderseq_name text NOT NULL, orderseq_number integer, orderseq_table text, orderseq_numcol text, orderseq_seqiss seqiss[], CONSTRAINT orderseq_orderseq_name_check CHECK ((orderseq_name <> ''::text)) ); DROP TABLE public.orderseq; publicadminfalse6477647826088|&00TABLE orderseqCOMMENTYCOMMENT ON TABLE orderseq IS 'Configuration information for common numbering sequences'; publicadminfalse547}&00orderseqACLREVOKE ALL ON TABLE orderseq FROM PUBLIC; REVOKE ALL ON TABLE orderseq FROM admin; GRANT ALL ON TABLE orderseq TO admin; GRANT ALL ON TABLE orderseq TO xtrole; publicadminfalse547$12591695165orderseq_orderseq_id_seqSEQUENCECREATE SEQUENCE orderseq_orderseq_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; /DROP SEQUENCE public.orderseq_orderseq_id_seq; publicadminfalse8~&00orderseq_orderseq_id_seq SEQUENCE SET@SELECT pg_catalog.setval('orderseq_orderseq_id_seq', 23, true); publicadminfalse548&00orderseq_orderseq_id_seqACLREVOKE ALL ON SEQUENCE orderseq_orderseq_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE orderseq_orderseq_id_seq FROM admin; GRANT ALL ON SEQUENCE orderseq_orderseq_id_seq TO admin; GRANT ALL ON SEQUENCE orderseq_orderseq_id_seq TO xtrole; publicadminfalse548%12591695167packTABLE;CREATE TABLE pack ( pack_id integer NOT NULL, pack_head_id integer NOT NULL, pack_head_type text NOT NULL, pack_shiphead_id integer, pack_printed boolean DEFAULT false NOT NULL, CONSTRAINT pack_pack_head_type_check CHECK (((pack_head_type = 'SO'::text) OR (pack_head_type = 'TO'::text))) ); DROP TABLE public.pack; publicadminfalse648064818&00 TABLE packCOMMENTqCOMMENT ON TABLE pack IS 'Temporary table for storing information about Orders added to the Packing List Batch'; publicadminfalse549&00packACLREVOKE ALL ON TABLE pack FROM PUBLIC; REVOKE ALL ON TABLE pack FROM admin; GRANT ALL ON TABLE pack TO admin; GRANT ALL ON TABLE pack TO xtrole; publicadminfalse549&12591695175pack_pack_id_seqSEQUENCErCREATE SEQUENCE pack_pack_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 'DROP SEQUENCE public.pack_pack_id_seq; publicadminfalse8549&00pack_pack_id_seqSEQUENCE OWNED BY7ALTER SEQUENCE pack_pack_id_seq OWNED BY pack.pack_id; publicadminfalse550&00pack_pack_id_seq SEQUENCE SET7SELECT pg_catalog.setval('pack_pack_id_seq', 1, true); publicadminfalse550&00pack_pack_id_seqACLREVOKE ALL ON SEQUENCE pack_pack_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE pack_pack_id_seq FROM admin; GRANT ALL ON SEQUENCE pack_pack_id_seq TO admin; GRANT ALL ON SEQUENCE pack_pack_id_seq TO xtrole; publicadminfalse550'12591695177 payaropenTABLECREATE TABLE payaropen ( payaropen_ccpay_id integer NOT NULL, payaropen_aropen_id integer NOT NULL, payaropen_amount numeric(20,2) DEFAULT 0.00 NOT NULL, payaropen_curr_id integer DEFAULT basecurrid() ); DROP TABLE public.payaropen; publicadminfalse648264838&00TABLE payaropenCOMMENTOCOMMENT ON TABLE payaropen IS 'Credit Card payment to credit memo join table'; publicadminfalse551&00 payaropenACLREVOKE ALL ON TABLE payaropen FROM PUBLIC; REVOKE ALL ON TABLE payaropen FROM admin; GRANT ALL ON TABLE payaropen TO admin; GRANT ALL ON TABLE payaropen TO xtrole; publicadminfalse551(12591695182paycoTABLECREATE TABLE payco ( payco_ccpay_id integer NOT NULL, payco_cohead_id integer NOT NULL, payco_amount numeric(20,2) DEFAULT 0.00 NOT NULL, payco_curr_id integer DEFAULT basecurrid() ); DROP TABLE public.payco; publicadminfalse648464858&00 TABLE paycoCOMMENTKCOMMENT ON TABLE payco IS 'Credit Card payment to sales order join table'; publicadminfalse552&00paycoACLREVOKE ALL ON TABLE payco FROM PUBLIC; REVOKE ALL ON TABLE payco FROM admin; GRANT ALL ON TABLE payco TO admin; GRANT ALL ON TABLE payco TO xtrole; publicadminfalse552)12591695187period_period_id_seqSEQUENCEvCREATE SEQUENCE period_period_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.period_period_id_seq; publicadminfalse8201&00period_period_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE period_period_id_seq OWNED BY period.period_id; publicadminfalse553&00period_period_id_seq SEQUENCE SET=SELECT pg_catalog.setval('period_period_id_seq', 123, true); publicadminfalse553&00period_period_id_seqACLREVOKE ALL ON SEQUENCE period_period_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE period_period_id_seq FROM admin; GRANT ALL ON SEQUENCE period_period_id_seq TO admin; GRANT ALL ON SEQUENCE period_period_id_seq TO xtrole; publicadminfalse553*12591695189pkgdepTABLECREATE TABLE pkgdep ( pkgdep_id integer NOT NULL, pkgdep_pkghead_id integer NOT NULL, pkgdep_parent_pkghead_id integer NOT NULL ); DROP TABLE public.pkgdep; publicadminfalse8&00 TABLE pkgdepCOMMENTyCOMMENT ON TABLE pkgdep IS 'Package Dependencies list describing which packages are dependent on which other packages.'; publicadminfalse554&00COLUMN pkgdep.pkgdep_pkghead_idCOMMENTCOMMENT ON COLUMN pkgdep.pkgdep_pkghead_id IS 'This is the internal ID of a package which requires at least one other package to be installed first to operate successfully'; publicadminfalse554&00&COLUMN pkgdep.pkgdep_parent_pkghead_idCOMMENTCOMMENT ON COLUMN pkgdep.pkgdep_parent_pkghead_id IS 'This is the internal ID of a package which must be installed for the package pointed to by pkgdep_pkghead_id to operate successfully.'; publicadminfalse554&00pkgdepACLREVOKE ALL ON TABLE pkgdep FROM PUBLIC; REVOKE ALL ON TABLE pkgdep FROM admin; GRANT ALL ON TABLE pkgdep TO admin; GRANT ALL ON TABLE pkgdep TO xtrole; publicadminfalse554+12591695192pkgdep_pkgdep_id_seqSEQUENCEvCREATE SEQUENCE pkgdep_pkgdep_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.pkgdep_pkgdep_id_seq; publicadminfalse8554&00pkgdep_pkgdep_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE pkgdep_pkgdep_id_seq OWNED BY pkgdep.pkgdep_id; publicadminfalse555&00pkgdep_pkgdep_id_seq SEQUENCE SET;SELECT pg_catalog.setval('pkgdep_pkgdep_id_seq', 1, true); publicadminfalse555&00pkgdep_pkgdep_id_seqACLREVOKE ALL ON SEQUENCE pkgdep_pkgdep_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE pkgdep_pkgdep_id_seq FROM admin; GRANT ALL ON SEQUENCE pkgdep_pkgdep_id_seq TO admin; GRANT ALL ON SEQUENCE pkgdep_pkgdep_id_seq TO xtrole; publicadminfalse555,12591695194pkgheadTABLECREATE TABLE pkghead ( pkghead_id integer NOT NULL, pkghead_name text NOT NULL, pkghead_descrip text, pkghead_version text NOT NULL, pkghead_developer text NOT NULL, pkghead_notes text, pkghead_created timestamp with time zone, pkghead_updated timestamp with time zone, pkghead_indev boolean DEFAULT false NOT NULL, CONSTRAINT pkghead_pkghead_name_check CHECK ((pkghead_name <> ''::text)) ); DROP TABLE public.pkghead; publicadminfalse648864898&00 TABLE pkgheadCOMMENTYCOMMENT ON TABLE pkghead IS 'Information about non-core Packages added to the database'; publicadminfalse556&00COLUMN pkghead.pkghead_indevCOMMENTCOMMENT ON COLUMN pkghead.pkghead_indev IS 'Flag indicating whether the contents of this package may be modified in-place - this package is /in dev/elopment.'; publicadminfalse556&00pkgheadACLREVOKE ALL ON TABLE pkghead FROM PUBLIC; REVOKE ALL ON TABLE pkghead FROM admin; GRANT ALL ON TABLE pkghead TO admin; GRANT ALL ON TABLE pkghead TO xtrole; publicadminfalse556-12591695202pkghead_pkghead_id_seqSEQUENCExCREATE SEQUENCE pkghead_pkghead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.pkghead_pkghead_id_seq; publicadminfalse8556&00pkghead_pkghead_id_seqSEQUENCE OWNED BYCALTER SEQUENCE pkghead_pkghead_id_seq OWNED BY pkghead.pkghead_id; publicadminfalse557&00pkghead_pkghead_id_seq SEQUENCE SET=SELECT pg_catalog.setval('pkghead_pkghead_id_seq', 7, true); publicadminfalse557&00pkghead_pkghead_id_seqACLREVOKE ALL ON SEQUENCE pkghead_pkghead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE pkghead_pkghead_id_seq FROM admin; GRANT ALL ON SEQUENCE pkghead_pkghead_id_seq TO admin; GRANT ALL ON SEQUENCE pkghead_pkghead_id_seq TO xtrole; publicadminfalse557.12591695204pkgitemTABLECREATE TABLE pkgitem ( pkgitem_id integer NOT NULL, pkgitem_pkghead_id integer, pkgitem_type text, pkgitem_item_id integer NOT NULL, pkgitem_name text NOT NULL, pkgitem_descrip text, CONSTRAINT pkgitem_pkgitem_type_check CHECK (((((((((((((pkgitem_type = 'C'::text) OR (pkgitem_type = 'D'::text)) OR (pkgitem_type = 'F'::text)) OR (pkgitem_type = 'G'::text)) OR (pkgitem_type = 'I'::text)) OR (pkgitem_type = 'M'::text)) OR (pkgitem_type = 'P'::text)) OR (pkgitem_type = 'R'::text)) OR (pkgitem_type = 'S'::text)) OR (pkgitem_type = 'T'::text)) OR (pkgitem_type = 'U'::text)) OR (pkgitem_type = 'V'::text))) ); DROP TABLE public.pkgitem; publicadminfalse64918&00 TABLE pkgitemCOMMENTCOMMENT ON TABLE pkgitem IS 'Deprecated - the pkgitem table is no longer used to track package contents. It has been replaced by direct queries to the database schema and component tables. This table will be removed when all users have switched to Updater 2.2.0 or later.'; publicadminfalse558&00pkgitemACLREVOKE ALL ON TABLE pkgitem FROM PUBLIC; REVOKE ALL ON TABLE pkgitem FROM admin; GRANT ALL ON TABLE pkgitem TO admin; GRANT ALL ON TABLE pkgitem TO xtrole; publicadminfalse558/12591695211pkgitem_pkgitem_id_seqSEQUENCExCREATE SEQUENCE pkgitem_pkgitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.pkgitem_pkgitem_id_seq; publicadminfalse8558&00pkgitem_pkgitem_id_seqSEQUENCE OWNED BYCALTER SEQUENCE pkgitem_pkgitem_id_seq OWNED BY pkgitem.pkgitem_id; publicadminfalse559&00pkgitem_pkgitem_id_seq SEQUENCE SET>SELECT pg_catalog.setval('pkgitem_pkgitem_id_seq', 1, false); publicadminfalse559&00pkgitem_pkgitem_id_seqACLREVOKE ALL ON SEQUENCE pkgitem_pkgitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE pkgitem_pkgitem_id_seq FROM admin; GRANT ALL ON SEQUENCE pkgitem_pkgitem_id_seq TO admin; GRANT ALL ON SEQUENCE pkgitem_pkgitem_id_seq TO xtrole; publicadminfalse559012591695213plancode_plancode_id_seqSEQUENCEzCREATE SEQUENCE plancode_plancode_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.plancode_plancode_id_seq; publicadminfalse8&00plancode_plancode_id_seq SEQUENCE SET@SELECT pg_catalog.setval('plancode_plancode_id_seq', 26, true); publicadminfalse560&00plancode_plancode_id_seqACLREVOKE ALL ON SEQUENCE plancode_plancode_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE plancode_plancode_id_seq FROM admin; GRANT ALL ON SEQUENCE plancode_plancode_id_seq TO admin; GRANT ALL ON SEQUENCE plancode_plancode_id_seq TO xtrole; publicadminfalse560112591695215planord_planord_id_seqSEQUENCECREATE SEQUENCE planord_planord_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.planord_planord_id_seq; publicadminfalse8&00planord_planord_id_seq SEQUENCE SET@SELECT pg_catalog.setval('planord_planord_id_seq', 1022, true); publicadminfalse561&00planord_planord_id_seqACLREVOKE ALL ON SEQUENCE planord_planord_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE planord_planord_id_seq FROM admin; GRANT ALL ON SEQUENCE planord_planord_id_seq TO admin; GRANT ALL ON SEQUENCE planord_planord_id_seq TO xtrole; publicadminfalse561212591695217pohead_pohead_id_seqSEQUENCE~CREATE SEQUENCE pohead_pohead_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; +DROP SEQUENCE public.pohead_pohead_id_seq; publicadminfalse8&00pohead_pohead_id_seq SEQUENCE SET=SELECT pg_catalog.setval('pohead_pohead_id_seq', 344, true); publicadminfalse562&00pohead_pohead_id_seqACLREVOKE ALL ON SEQUENCE pohead_pohead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE pohead_pohead_id_seq FROM admin; GRANT ALL ON SEQUENCE pohead_pohead_id_seq TO admin; GRANT ALL ON SEQUENCE pohead_pohead_id_seq TO xtrole; publicadminfalse562312591695219poitem_poitem_id_seqSEQUENCE~CREATE SEQUENCE poitem_poitem_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; +DROP SEQUENCE public.poitem_poitem_id_seq; publicadminfalse8&00poitem_poitem_id_seq SEQUENCE SET=SELECT pg_catalog.setval('poitem_poitem_id_seq', 426, true); publicadminfalse563&00poitem_poitem_id_seqACLREVOKE ALL ON SEQUENCE poitem_poitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE poitem_poitem_id_seq FROM admin; GRANT ALL ON SEQUENCE poitem_poitem_id_seq TO admin; GRANT ALL ON SEQUENCE poitem_poitem_id_seq TO xtrole; publicadminfalse563O12591695343recvTABLEzCREATE TABLE recv ( recv_id integer NOT NULL, recv_order_type text NOT NULL, recv_order_number text NOT NULL, recv_orderitem_id integer NOT NULL, recv_agent_username text, recv_itemsite_id integer, recv_vend_id integer, recv_vend_item_number text, recv_vend_item_descrip text, recv_vend_uom text, recv_purchcost numeric(16,6), recv_purchcost_curr_id integer, recv_duedate date, recv_qty numeric(18,6), recv_recvcost numeric(16,6), recv_recvcost_curr_id integer, recv_freight numeric(16,4), recv_freight_curr_id integer, recv_date timestamp with time zone, recv_value numeric(18,6), recv_posted boolean DEFAULT false NOT NULL, recv_invoiced boolean DEFAULT false NOT NULL, recv_vohead_id integer, recv_voitem_id integer, recv_trans_usr_name text DEFAULT geteffectivextuser() NOT NULL, recv_notes text, recv_gldistdate date, recv_splitfrom_id integer, recv_rlsd_duedate date, CONSTRAINT recv_recv_order_type_check CHECK ((((recv_order_type = 'PO'::text) OR (recv_order_type = 'RA'::text)) OR (recv_order_type = 'TO'::text))) ); DROP TABLE public.recv; publicadminfalse65176518651965218&00 TABLE recvCOMMENT?COMMENT ON TABLE recv IS 'Information about Received Orders.'; publicadminfalse591&00recvACLREVOKE ALL ON TABLE recv FROM PUBLIC; REVOKE ALL ON TABLE recv FROM admin; GRANT ALL ON TABLE recv TO admin; GRANT ALL ON TABLE recv TO xtrole; publicadminfalse591Y12592009497porecvVIEW4CREATE VIEW porecv AS SELECT recv.recv_id AS porecv_id, recv.recv_date AS porecv_date, recv.recv_rlsd_duedate AS porecv_rlsd_duedate, pohead.pohead_orderdate AS porecv_orderdate, pohead.pohead_released AS porecv_released, recv.recv_order_number AS porecv_ponumber, recv.recv_itemsite_id AS porecv_itemsite_id, recv.recv_vend_id AS porecv_vend_id, item.item_number AS porecv_item_number, recv.recv_vend_item_number AS porecv_vend_item_number, COALESCE(item.item_descrip1, recv.recv_vend_item_descrip) AS porecv_vend_item_descrip, recv.recv_vend_uom AS porecv_vend_uom, recv.recv_qty AS porecv_qty, recv.recv_posted AS porecv_posted, recv.recv_invoiced AS porecv_invoiced, (pg_user.usesysid)::integer AS porecv_trans_usr_id, recv.recv_orderitem_id AS porecv_poitem_id, NULL::integer AS porecv_linenumber, recv.recv_purchcost AS porecv_purchcost, recv.recv_vohead_id AS porecv_vohead_id, recv.recv_recvcost AS porecv_recvcost, recv.recv_duedate AS porecv_duedate, recv.recv_agent_username AS porecv_agent_username, recv.recv_notes AS porecv_notes, recv.recv_freight AS porecv_freight, recv.recv_freight_curr_id AS porecv_curr_id, recv.recv_gldistdate AS porecv_gldistdate, recv.recv_voitem_id AS porecv_voitem_id, recv.recv_value AS porecv_value FROM ((((recv LEFT JOIN pg_user ON ((recv.recv_trans_usr_name = (pg_user.usename)::text))) LEFT JOIN pohead ON ((recv.recv_order_number = pohead.pohead_number))) LEFT JOIN itemsite ON ((recv.recv_itemsite_id = itemsite.itemsite_id))) LEFT JOIN item ON ((itemsite.itemsite_item_id = item.item_id))) WHERE (recv.recv_order_type = 'PO'::text); DROP VIEW public.porecv; publicadminfalse55538&00porecvACLREVOKE ALL ON TABLE porecv FROM PUBLIC; REVOKE ALL ON TABLE porecv FROM admin; GRANT ALL ON TABLE porecv TO admin; GRANT ALL ON TABLE porecv TO xtrole; publicadminfalse857412591695221porecv_porecv_id_seqSEQUENCE~CREATE SEQUENCE porecv_porecv_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; +DROP SEQUENCE public.porecv_porecv_id_seq; publicadminfalse8&00porecv_porecv_id_seq SEQUENCE SET=SELECT pg_catalog.setval('porecv_porecv_id_seq', 127, true); publicadminfalse564&00porecv_porecv_id_seqACLREVOKE ALL ON SEQUENCE porecv_porecv_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE porecv_porecv_id_seq FROM admin; GRANT ALL ON SEQUENCE porecv_porecv_id_seq TO admin; GRANT ALL ON SEQUENCE porecv_porecv_id_seq TO xtrole; publicadminfalse564512591695223porejectTABLECREATE TABLE poreject ( poreject_id integer DEFAULT nextval(('"poreject_poreject_id_seq"'::text)::regclass) NOT NULL, poreject_date timestamp with time zone, poreject_ponumber text, poreject_itemsite_id integer, poreject_vend_id integer, poreject_vend_item_number text, poreject_vend_item_descrip text, poreject_vend_uom text, poreject_qty numeric(18,6), poreject_posted boolean, poreject_rjctcode_id integer, poreject_poitem_id integer, poreject_invoiced boolean, poreject_vohead_id integer, poreject_agent_username text, poreject_voitem_id integer, poreject_value numeric(18,6), poreject_trans_username text, poreject_recv_id integer ); DROP TABLE public.poreject; publicadminfalse64928&00TABLE porejectCOMMENTqCOMMENT ON TABLE poreject IS 'The poreject table describes Purchase Order Items that were returned to Vendors.'; publicadminfalse565&00COLUMN poreject.poreject_idCOMMENT]COMMENT ON COLUMN poreject.poreject_id IS 'This is the internal id of this poreject record'; publicadminfalse565&00COLUMN poreject.poreject_dateCOMMENTrCOMMENT ON COLUMN poreject.poreject_date IS 'This is the date and time the return was entered into the database'; publicadminfalse565&00!COLUMN poreject.poreject_ponumberCOMMENTrCOMMENT ON COLUMN poreject.poreject_ponumber IS 'This is the number of the original Purchase Order of this item'; publicadminfalse565&00$COLUMN poreject.poreject_itemsite_idCOMMENTrCOMMENT ON COLUMN poreject.poreject_itemsite_id IS 'This is the Item Site into which the item had been received'; publicadminfalse565&00 COLUMN poreject.poreject_vend_idCOMMENTlCOMMENT ON COLUMN poreject.poreject_vend_id IS 'This is the Vendor from which the item had been purchased'; publicadminfalse565&00)COLUMN poreject.poreject_vend_item_numberCOMMENTkCOMMENT ON COLUMN poreject.poreject_vend_item_number IS 'This is the Vendor''s item number for this item'; publicadminfalse565&00*COLUMN poreject.poreject_vend_item_descripCOMMENTkCOMMENT ON COLUMN poreject.poreject_vend_item_descrip IS 'This is the Vendor''s description of this item'; publicadminfalse565&00!COLUMN poreject.poreject_vend_uomCOMMENTrCOMMENT ON COLUMN poreject.poreject_vend_uom IS 'This is the Unit of Measure in which the Vendor sold this item'; publicadminfalse565&00COLUMN poreject.poreject_qtyCOMMENTaCOMMENT ON COLUMN poreject.poreject_qty IS 'This is the quantity of the item that was returned'; publicadminfalse565&00COLUMN poreject.poreject_postedCOMMENTCOMMENT ON COLUMN poreject.poreject_posted IS 'This indicates whether or not the return has been recorded in the General Ledger, Inventory History, and Purchase Order Item'; publicadminfalse565&00$COLUMN poreject.poreject_rjctcode_idCOMMENT_COMMENT ON COLUMN poreject.poreject_rjctcode_id IS 'This indicates the reason for the return'; publicadminfalse565&00"COLUMN poreject.poreject_poitem_idCOMMENTpCOMMENT ON COLUMN poreject.poreject_poitem_id IS 'This is the internal id of the original Purchase Order Item'; publicadminfalse565&00!COLUMN poreject.poreject_invoicedCOMMENTCOMMENT ON COLUMN poreject.poreject_invoiced IS 'This indicates whether the Credit Memo associated with the return has been posted'; publicadminfalse565&00"COLUMN poreject.poreject_vohead_idCOMMENTpCOMMENT ON COLUMN poreject.poreject_vohead_id IS 'This is the Voucher associated with the Purchase Order Item'; publicadminfalse565&00'COLUMN poreject.poreject_agent_usernameCOMMENTCOMMENT ON COLUMN poreject.poreject_agent_username IS 'This is the Purchase Order Agent responsible for the original Purchase Order'; publicadminfalse565&00"COLUMN poreject.poreject_voitem_idCOMMENTuCOMMENT ON COLUMN poreject.poreject_voitem_id IS 'This is the Voucher Item associated with the Purchase Order Item'; publicadminfalse565&00COLUMN poreject.poreject_valueCOMMENTCOMMENT ON COLUMN poreject.poreject_value IS 'This is the value (in base currency) of the return at the time it was posted to the General Ledger'; publicadminfalse565&00'COLUMN poreject.poreject_trans_usernameCOMMENTbCOMMENT ON COLUMN poreject.poreject_trans_username IS 'This is the user who recorded the return'; publicadminfalse565&00porejectACLREVOKE ALL ON TABLE poreject FROM PUBLIC; REVOKE ALL ON TABLE poreject FROM admin; GRANT ALL ON TABLE poreject TO admin; GRANT ALL ON TABLE poreject TO xtrole; publicadminfalse565612591695230poreject_poreject_id_seqSEQUENCECREATE SEQUENCE poreject_poreject_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; /DROP SEQUENCE public.poreject_poreject_id_seq; publicadminfalse8&00poreject_poreject_id_seq SEQUENCE SET@SELECT pg_catalog.setval('poreject_poreject_id_seq', 41, true); publicadminfalse566&00poreject_poreject_id_seqACLREVOKE ALL ON SEQUENCE poreject_poreject_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE poreject_poreject_id_seq FROM admin; GRANT ALL ON SEQUENCE poreject_poreject_id_seq TO admin; GRANT ALL ON SEQUENCE poreject_poreject_id_seq TO xtrole; publicadminfalse566712591695232potypeTABLEgCREATE TABLE potype ( potype_id integer NOT NULL, potype_name text, potype_descrip text ); DROP TABLE public.potype; publicadminfalse8&00 TABLE potypeCOMMENT>COMMENT ON TABLE potype IS 'Purchase Order Type information'; publicadminfalse567&00potypeACLREVOKE ALL ON TABLE potype FROM PUBLIC; REVOKE ALL ON TABLE potype FROM admin; GRANT ALL ON TABLE potype TO admin; GRANT ALL ON TABLE potype TO xtrole; publicadminfalse567812591695238potype_potype_id_seqSEQUENCEvCREATE SEQUENCE potype_potype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.potype_potype_id_seq; publicadminfalse8567&00potype_potype_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE potype_potype_id_seq OWNED BY potype.potype_id; publicadminfalse568&00potype_potype_id_seq SEQUENCE SET<SELECT pg_catalog.setval('potype_potype_id_seq', 1, false); publicadminfalse568&00potype_potype_id_seqACLREVOKE ALL ON SEQUENCE potype_potype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE potype_potype_id_seq FROM admin; GRANT ALL ON SEQUENCE potype_potype_id_seq TO admin; GRANT ALL ON SEQUENCE potype_potype_id_seq TO xtrole; publicadminfalse568912591695240prTABLECREATE TABLE pr ( pr_id integer DEFAULT nextval(('"pr_pr_id_seq"'::text)::regclass) NOT NULL, pr_number integer, pr_subnumber integer, pr_status character(1), pr_order_type character(1), pr_order_id integer, pr_poitem_id integer, pr_duedate date, pr_itemsite_id integer, pr_qtyreq numeric(18,6), pr_prj_id integer, pr_releasenote text, pr_createdate timestamp without time zone DEFAULT now() ); DROP TABLE public.pr; publicadminfalse649464958&00TABLE prCOMMENT7COMMENT ON TABLE pr IS 'Purchase Request information'; publicadminfalse569&00prACLREVOKE ALL ON TABLE pr FROM PUBLIC; REVOKE ALL ON TABLE pr FROM admin; GRANT ALL ON TABLE pr TO admin; GRANT ALL ON TABLE pr TO xtrole; publicadminfalse569:12591695248 pr_pr_id_seqSEQUENCEnCREATE SEQUENCE pr_pr_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; #DROP SEQUENCE public.pr_pr_id_seq; publicadminfalse8&00 pr_pr_id_seq SEQUENCE SET5SELECT pg_catalog.setval('pr_pr_id_seq', 185, true); publicadminfalse570&00 pr_pr_id_seqACLREVOKE ALL ON SEQUENCE pr_pr_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE pr_pr_id_seq FROM admin; GRANT ALL ON SEQUENCE pr_pr_id_seq TO admin; GRANT ALL ON SEQUENCE pr_pr_id_seq TO xtrole; publicadminfalse570;12591695250prftcntrTABLECREATE TABLE prftcntr ( prftcntr_id integer NOT NULL, prftcntr_number text NOT NULL, prftcntr_descrip text, CONSTRAINT prftcntr_prftcntr_number_check CHECK ((prftcntr_number <> ''::text)) ); DROP TABLE public.prftcntr; publicadminfalse64978&00TABLE prftcntrCOMMENT:COMMENT ON TABLE prftcntr IS 'Profit Center information'; publicadminfalse571&00prftcntrACLREVOKE ALL ON TABLE prftcntr FROM PUBLIC; REVOKE ALL ON TABLE prftcntr FROM admin; GRANT ALL ON TABLE prftcntr TO admin; GRANT ALL ON TABLE prftcntr TO xtrole; publicadminfalse571<12591695256prftcntr_prftcntr_id_seqSEQUENCEzCREATE SEQUENCE prftcntr_prftcntr_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.prftcntr_prftcntr_id_seq; publicadminfalse8571&00prftcntr_prftcntr_id_seqSEQUENCE OWNED BYGALTER SEQUENCE prftcntr_prftcntr_id_seq OWNED BY prftcntr.prftcntr_id; publicadminfalse572&00prftcntr_prftcntr_id_seq SEQUENCE SET?SELECT pg_catalog.setval('prftcntr_prftcntr_id_seq', 1, true); publicadminfalse572&00prftcntr_prftcntr_id_seqACLREVOKE ALL ON SEQUENCE prftcntr_prftcntr_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE prftcntr_prftcntr_id_seq FROM admin; GRANT ALL ON SEQUENCE prftcntr_prftcntr_id_seq TO admin; GRANT ALL ON SEQUENCE prftcntr_prftcntr_id_seq TO xtrole; publicadminfalse572=12591695258usrgrpTABLECREATE TABLE usrgrp ( usrgrp_id integer NOT NULL, usrgrp_grp_id integer NOT NULL, usrgrp_username text NOT NULL ); DROP TABLE public.usrgrp; publicadminfalse8&00 TABLE usrgrpCOMMENTECOMMENT ON TABLE usrgrp IS 'This is which group a user belongs to.'; publicadminfalse573&00usrgrpACLREVOKE ALL ON TABLE usrgrp FROM PUBLIC; REVOKE ALL ON TABLE usrgrp FROM admin; GRANT ALL ON TABLE usrgrp TO admin; GRANT ALL ON TABLE usrgrp TO xtrole; publicadminfalse573>12591695264usrprivTABLECREATE TABLE usrpriv ( usrpriv_id integer DEFAULT nextval(('usrpriv_usrpriv_id_seq'::text)::regclass) NOT NULL, usrpriv_priv_id integer, usrpriv_username text ); DROP TABLE public.usrpriv; publicadminfalse64998&00 TABLE usrprivCOMMENT;COMMENT ON TABLE usrpriv IS 'User Privileges information'; publicadminfalse574&00usrprivACLREVOKE ALL ON TABLE usrpriv FROM PUBLIC; REVOKE ALL ON TABLE usrpriv FROM admin; GRANT ALL ON TABLE usrpriv TO admin; GRANT ALL ON TABLE usrpriv TO xtrole; publicadminfalse574O12592009451 privgrantedVIEW'CREATE VIEW privgranted AS SELECT priv.priv_name AS privilege, (COALESCE(usrpriv.usrpriv_priv_id, grppriv.grppriv_priv_id, (-1)) > 0) AS granted, priv.priv_seq AS sequence FROM ((priv LEFT JOIN usrpriv ON (((priv.priv_id = usrpriv.usrpriv_priv_id) AND (usrpriv.usrpriv_username = geteffectivextuser())))) LEFT JOIN (SELECT DISTINCT grppriv.grppriv_priv_id FROM (grppriv JOIN usrgrp ON (((grppriv.grppriv_grp_id = usrgrp.usrgrp_grp_id) AND (usrgrp.usrgrp_username = geteffectivextuser()))))) grppriv ON ((grppriv.grppriv_priv_id = priv.priv_id))); DROP VIEW public.privgranted; publicadminfalse55438&00 privgrantedACLREVOKE ALL ON TABLE privgranted FROM PUBLIC; REVOKE ALL ON TABLE privgranted FROM admin; GRANT ALL ON TABLE privgranted TO admin; GRANT ALL ON TABLE privgranted TO xtrole; publicadminfalse847?12591695276prj_prj_id_seqSEQUENCEpCREATE SEQUENCE prj_prj_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; %DROP SEQUENCE public.prj_prj_id_seq; publicadminfalse8174&00prj_prj_id_seqSEQUENCE OWNED BY3ALTER SEQUENCE prj_prj_id_seq OWNED BY prj.prj_id; publicadminfalse575&00prj_prj_id_seq SEQUENCE SET5SELECT pg_catalog.setval('prj_prj_id_seq', 1, true); publicadminfalse575&00prj_prj_id_seqACLREVOKE ALL ON SEQUENCE prj_prj_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE prj_prj_id_seq FROM admin; GRANT ALL ON SEQUENCE prj_prj_id_seq TO admin; GRANT ALL ON SEQUENCE prj_prj_id_seq TO xtrole; publicadminfalse575@12591695278prjtask_prjtask_id_seqSEQUENCExCREATE SEQUENCE prjtask_prjtask_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.prjtask_prjtask_id_seq; publicadminfalse8182&00prjtask_prjtask_id_seqSEQUENCE OWNED BYCALTER SEQUENCE prjtask_prjtask_id_seq OWNED BY prjtask.prjtask_id; publicadminfalse576&00prjtask_prjtask_id_seq SEQUENCE SET>SELECT pg_catalog.setval('prjtask_prjtask_id_seq', 1, false); publicadminfalse576&00prjtask_prjtask_id_seqACLREVOKE ALL ON SEQUENCE prjtask_prjtask_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE prjtask_prjtask_id_seq FROM admin; GRANT ALL ON SEQUENCE prjtask_prjtask_id_seq TO admin; GRANT ALL ON SEQUENCE prjtask_prjtask_id_seq TO xtrole; publicadminfalse576A12591695280 prjtaskuserTABLECREATE TABLE prjtaskuser ( prjtaskuser_id integer NOT NULL, prjtaskuser_prjtask_id integer, prjtaskuser_username text ); DROP TABLE public.prjtaskuser; publicadminfalse8&00TABLE prjtaskuserCOMMENTACOMMENT ON TABLE prjtaskuser IS 'Project Task user information'; publicadminfalse577&00 prjtaskuserACLREVOKE ALL ON TABLE prjtaskuser FROM PUBLIC; REVOKE ALL ON TABLE prjtaskuser FROM admin; GRANT ALL ON TABLE prjtaskuser TO admin; GRANT ALL ON TABLE prjtaskuser TO xtrole; publicadminfalse577B12591695286prjtaskuser_prjtaskuser_id_seqSEQUENCECREATE SEQUENCE prjtaskuser_prjtaskuser_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 5DROP SEQUENCE public.prjtaskuser_prjtaskuser_id_seq; publicadminfalse5778&00prjtaskuser_prjtaskuser_id_seqSEQUENCE OWNED BYSALTER SEQUENCE prjtaskuser_prjtaskuser_id_seq OWNED BY prjtaskuser.prjtaskuser_id; publicadminfalse578&00prjtaskuser_prjtaskuser_id_seq SEQUENCE SETFSELECT pg_catalog.setval('prjtaskuser_prjtaskuser_id_seq', 1, false); publicadminfalse578&00prjtaskuser_prjtaskuser_id_seqACLREVOKE ALL ON SEQUENCE prjtaskuser_prjtaskuser_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE prjtaskuser_prjtaskuser_id_seq FROM admin; GRANT ALL ON SEQUENCE prjtaskuser_prjtaskuser_id_seq TO admin; GRANT ALL ON SEQUENCE prjtaskuser_prjtaskuser_id_seq TO xtrole; publicadminfalse578C12591695288prodcat_prodcat_id_seqSEQUENCECREATE SEQUENCE prodcat_prodcat_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.prodcat_prodcat_id_seq; publicadminfalse8&00prodcat_prodcat_id_seq SEQUENCE SET>SELECT pg_catalog.setval('prodcat_prodcat_id_seq', 30, true); publicadminfalse579&00prodcat_prodcat_id_seqACLREVOKE ALL ON SEQUENCE prodcat_prodcat_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE prodcat_prodcat_id_seq FROM admin; GRANT ALL ON SEQUENCE prodcat_prodcat_id_seq TO admin; GRANT ALL ON SEQUENCE prodcat_prodcat_id_seq TO xtrole; publicadminfalse579D12591695290qryheadTABLEZCREATE TABLE qryhead ( qryhead_id integer NOT NULL, qryhead_name text NOT NULL, qryhead_descrip text, qryhead_notes text, qryhead_username text DEFAULT geteffectivextuser() NOT NULL, qryhead_updated date DEFAULT ('now'::text)::date NOT NULL, CONSTRAINT qryhead_qryhead_name_check CHECK ((qryhead_name <> ''::text)) ); DROP TABLE public.qryhead; publicadminfalse6502650365048&00 TABLE qryheadCOMMENTxCOMMENT ON TABLE qryhead IS 'A header record for a set of queries to be run sequentially. One use is for data export.'; publicadminfalse580&00COLUMN qryhead.qryhead_idCOMMENTzCOMMENT ON COLUMN qryhead.qryhead_id IS 'The primary key, holding an internal value used to cross-reference this table.'; publicadminfalse580&00COLUMN qryhead.qryhead_nameCOMMENTcCOMMENT ON COLUMN qryhead.qryhead_name IS 'The user-assigned short name for this set of queries.'; publicadminfalse580&00COLUMN qryhead.qryhead_descripCOMMENTjCOMMENT ON COLUMN qryhead.qryhead_descrip IS 'A long description of the purpose of this set of queries.'; publicadminfalse580&00COLUMN qryhead.qryhead_notesCOMMENTWCOMMENT ON COLUMN qryhead.qryhead_notes IS 'General information about this queryset.'; publicadminfalse580&00COLUMN qryhead.qryhead_usernameCOMMENTmCOMMENT ON COLUMN qryhead.qryhead_username IS 'The name of the user who last modified this qryhead record.'; publicadminfalse580&00COLUMN qryhead.qryhead_updatedCOMMENTYCOMMENT ON COLUMN qryhead.qryhead_updated IS 'The date this qryhead was last modified.'; publicadminfalse580&00qryheadACLREVOKE ALL ON TABLE qryhead FROM PUBLIC; REVOKE ALL ON TABLE qryhead FROM admin; GRANT ALL ON TABLE qryhead TO admin; GRANT ALL ON TABLE qryhead TO xtrole; publicadminfalse580E12591695298qryhead_qryhead_id_seqSEQUENCExCREATE SEQUENCE qryhead_qryhead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.qryhead_qryhead_id_seq; publicadminfalse8580&00qryhead_qryhead_id_seqSEQUENCE OWNED BYCALTER SEQUENCE qryhead_qryhead_id_seq OWNED BY qryhead.qryhead_id; publicadminfalse581&00qryhead_qryhead_id_seq SEQUENCE SET>SELECT pg_catalog.setval('qryhead_qryhead_id_seq', 1, false); publicadminfalse581&00qryhead_qryhead_id_seqACLREVOKE ALL ON SEQUENCE qryhead_qryhead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE qryhead_qryhead_id_seq FROM admin; GRANT ALL ON SEQUENCE qryhead_qryhead_id_seq TO admin; GRANT ALL ON SEQUENCE qryhead_qryhead_id_seq TO xtrole; publicadminfalse581F12591695300qryitemTABLECREATE TABLE qryitem ( qryitem_id integer NOT NULL, qryitem_qryhead_id integer NOT NULL, qryitem_name text NOT NULL, qryitem_order integer NOT NULL, qryitem_src text NOT NULL, qryitem_group text, qryitem_detail text NOT NULL, qryitem_notes text DEFAULT ''::text NOT NULL, qryitem_username text DEFAULT geteffectivextuser() NOT NULL, qryitem_updated date DEFAULT ('now'::text)::date NOT NULL, CONSTRAINT qryitem_qryitem_detail_check CHECK ((btrim(qryitem_detail) <> ''::text)), CONSTRAINT qryitem_qryitem_src_check CHECK ((qryitem_src = ANY (ARRAY['REL'::text, 'MQL'::text, 'CUSTOM'::text]))) ); DROP TABLE public.qryitem; publicadminfalse650565066507650965108&00 TABLE qryitemCOMMENTdCOMMENT ON TABLE qryitem IS 'The description of a query to be run as part of a set (see qryhead).'; publicadminfalse582&00COLUMN qryitem.qryitem_idCOMMENTzCOMMENT ON COLUMN qryitem.qryitem_id IS 'The primary key, holding an internal value used to cross-reference this table.'; publicadminfalse582&00!COLUMN qryitem.qryitem_qryhead_idCOMMENT|COMMENT ON COLUMN qryitem.qryitem_qryhead_id IS 'The primary key of the query set to which this individual query belongs.'; publicadminfalse582&00COLUMN qryitem.qryitem_orderCOMMENToCOMMENT ON COLUMN qryitem.qryitem_order IS 'The order in which query items within a query set should be run.'; publicadminfalse582&00COLUMN qryitem.qryitem_srcCOMMENTCOMMENT ON COLUMN qryitem.qryitem_src IS 'The source of the query. If the qryitem_src is "REL" then the qryitem_group and _detail name a particular table or view and all rows will be returned. If the source is "MQL" then the qryitem_group and _detail name a pre-defined MetaSQL query in the metasql table. If the source is "CUSTOM" then the qryitem_detail contains the full MetaSQL text of the query to run.'; publicadminfalse582&00COLUMN qryitem.qryitem_groupCOMMENTCOMMENT ON COLUMN qryitem.qryitem_group IS 'Information to help find the query to run. If the qryitem_src is "REL" then this is the schema in which to find the table or view to query and all rows will be returned (the qryitem_detail names the table or view). If the qryitem_src is "MQL" then this is the group of the query in the metasql table to run (the name is in qryitem_detail). If the qryitem_src IS "CUSTOM" then this ignored.'; publicadminfalse582&00COLUMN qryitem.qryitem_detailCOMMENTwCOMMENT ON COLUMN qryitem.qryitem_detail IS 'The particular query to run. If the qryitem_src is "REL" then this is the name of the table or view to query and all rows will be returned. If the qryitem_src is "MQL" then this is the name of the query in the metasql table to run. If the qryitem_src IS "CUSTOM" then this is the actual MetaSQL query text to be parsed and run.'; publicadminfalse582&00COLUMN qryitem.qryitem_notesCOMMENTTCOMMENT ON COLUMN qryitem.qryitem_notes IS 'General information about this query.'; publicadminfalse582&00COLUMN qryitem.qryitem_usernameCOMMENTmCOMMENT ON COLUMN qryitem.qryitem_username IS 'The name of the user who last modified this qryitem record.'; publicadminfalse582&00COLUMN qryitem.qryitem_updatedCOMMENTYCOMMENT ON COLUMN qryitem.qryitem_updated IS 'The date this qryitem was last modified.'; publicadminfalse582&00qryitemACLREVOKE ALL ON TABLE qryitem FROM PUBLIC; REVOKE ALL ON TABLE qryitem FROM admin; GRANT ALL ON TABLE qryitem TO admin; GRANT ALL ON TABLE qryitem TO xtrole; publicadminfalse582G12591695311qryitem_qryitem_id_seqSEQUENCExCREATE SEQUENCE qryitem_qryitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.qryitem_qryitem_id_seq; publicadminfalse8582&00qryitem_qryitem_id_seqSEQUENCE OWNED BYCALTER SEQUENCE qryitem_qryitem_id_seq OWNED BY qryitem.qryitem_id; publicadminfalse583&00qryitem_qryitem_id_seq SEQUENCE SET>SELECT pg_catalog.setval('qryitem_qryitem_id_seq', 1, false); publicadminfalse583&00qryitem_qryitem_id_seqACLREVOKE ALL ON SEQUENCE qryitem_qryitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE qryitem_qryitem_id_seq FROM admin; GRANT ALL ON SEQUENCE qryitem_qryitem_id_seq TO admin; GRANT ALL ON SEQUENCE qryitem_qryitem_id_seq TO xtrole; publicadminfalse583H12591695313quhead_quhead_id_seqSEQUENCEvCREATE SEQUENCE quhead_quhead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.quhead_quhead_id_seq; publicadminfalse8&00quhead_quhead_id_seq SEQUENCE SET<SELECT pg_catalog.setval('quhead_quhead_id_seq', 86, true); publicadminfalse584&00quhead_quhead_id_seqACLREVOKE ALL ON SEQUENCE quhead_quhead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE quhead_quhead_id_seq FROM admin; GRANT ALL ON SEQUENCE quhead_quhead_id_seq TO admin; GRANT ALL ON SEQUENCE quhead_quhead_id_seq TO xtrole; publicadminfalse584I12591695315quitem_quitem_id_seqSEQUENCEvCREATE SEQUENCE quitem_quitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.quitem_quitem_id_seq; publicadminfalse8&00quitem_quitem_id_seq SEQUENCE SET<SELECT pg_catalog.setval('quitem_quitem_id_seq', 89, true); publicadminfalse585&00quitem_quitem_id_seqACLREVOKE ALL ON SEQUENCE quitem_quitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE quitem_quitem_id_seq FROM admin; GRANT ALL ON SEQUENCE quitem_quitem_id_seq TO admin; GRANT ALL ON SEQUENCE quitem_quitem_id_seq TO xtrole; publicadminfalse585J12591695317rcalitemTABLEECREATE TABLE rcalitem ( rcalitem_id integer DEFAULT nextval(('"xcalitem_xcalitem_id_seq"'::text)::regclass) NOT NULL, rcalitem_calhead_id integer, rcalitem_offsettype character(1), rcalitem_offsetcount integer, rcalitem_periodtype character(1), rcalitem_periodcount integer, rcalitem_name text ); DROP TABLE public.rcalitem; publicadminfalse65118&00TABLE rcalitemCOMMENTCCOMMENT ON TABLE rcalitem IS 'Relative Calendar Item information'; publicadminfalse586&00rcalitemACLREVOKE ALL ON TABLE rcalitem FROM PUBLIC; REVOKE ALL ON TABLE rcalitem FROM admin; GRANT ALL ON TABLE rcalitem TO admin; GRANT ALL ON TABLE rcalitem TO xtrole; publicadminfalse586K12591695324recurTABLECREATE TABLE recur ( recur_id integer NOT NULL, recur_parent_id integer NOT NULL, recur_parent_type text NOT NULL, recur_period text NOT NULL, recur_freq integer DEFAULT 1 NOT NULL, recur_start timestamp with time zone DEFAULT now(), recur_end timestamp with time zone, recur_max integer, recur_data text, CONSTRAINT recur_recur_period_check CHECK ((recur_period = ANY (ARRAY['m'::text, 'H'::text, 'D'::text, 'W'::text, 'M'::text, 'Y'::text, 'C'::text]))) ); DROP TABLE public.recur; publicadminfalse6513651465158'00 TABLE recurCOMMENTACOMMENT ON TABLE recur IS 'Track recurring events and objects.'; publicadminfalse587'00COLUMN recur.recur_idCOMMENTNCOMMENT ON COLUMN recur.recur_id IS 'Internal ID of this recurrence record.'; publicadminfalse587'00COLUMN recur.recur_parent_idCOMMENT_COMMENT ON COLUMN recur.recur_parent_id IS 'The internal ID of the event/object that recurs.'; publicadminfalse587'00COLUMN recur.recur_parent_typeCOMMENTiCOMMENT ON COLUMN recur.recur_parent_type IS 'The table in which the parent event or object is stored.'; publicadminfalse587'00COLUMN recur.recur_periodCOMMENTCOMMENT ON COLUMN recur.recur_period IS 'With recur_freq, how often this event recurs. Values are "m" for every minute, "H" for every hour, "D" for daily, "W" for weekly, "M" for monthly, "Y" for yearly, and "C" for customized or complex.'; publicadminfalse587'00COLUMN recur.recur_freqCOMMENTCOMMENT ON COLUMN recur.recur_freq IS 'With recur_period, how often this event recurs. Values are integers counts of recur_periods. For example, if recur_freq = 2 and recur_period = w then the event recurs every 2 weeks.'; publicadminfalse587'00COLUMN recur.recur_startCOMMENT[COMMENT ON COLUMN recur.recur_start IS 'The first date/time when the event should occur.'; publicadminfalse587'00COLUMN recur.recur_endCOMMENTCOMMENT ON COLUMN recur.recur_end IS 'The last date/time when the event should occur. NULL means there is no end date/time and the event should recur forever.'; publicadminfalse587'00COLUMN recur.recur_maxCOMMENTCOMMENT ON COLUMN recur.recur_max IS 'The maximum number of recurrence events to create at one time. If this is NULL then when new events are created, a system-wide default will limit the number.'; publicadminfalse587 '00COLUMN recur.recur_dataCOMMENTCOMMENT ON COLUMN recur.recur_data IS 'Not yet used and format still undetermined. Additional data to describe how to apply the period and frequency, particularly when period = "C".'; publicadminfalse587 '00recurACLREVOKE ALL ON TABLE recur FROM PUBLIC; REVOKE ALL ON TABLE recur FROM admin; GRANT ALL ON TABLE recur TO admin; GRANT ALL ON TABLE recur TO xtrole; publicadminfalse587L12591695333recur_recur_id_seqSEQUENCEtCREATE SEQUENCE recur_recur_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; )DROP SEQUENCE public.recur_recur_id_seq; publicadminfalse8587 '00recur_recur_id_seqSEQUENCE OWNED BY;ALTER SEQUENCE recur_recur_id_seq OWNED BY recur.recur_id; publicadminfalse588 '00recur_recur_id_seq SEQUENCE SET:SELECT pg_catalog.setval('recur_recur_id_seq', 1, false); publicadminfalse588 '00recur_recur_id_seqACLREVOKE ALL ON SEQUENCE recur_recur_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE recur_recur_id_seq FROM admin; GRANT ALL ON SEQUENCE recur_recur_id_seq TO admin; GRANT ALL ON SEQUENCE recur_recur_id_seq TO xtrole; publicadminfalse588M12591695335 recurtypeTABLETCREATE TABLE recurtype ( recurtype_id integer NOT NULL, recurtype_type text NOT NULL, recurtype_table text NOT NULL, recurtype_donecheck text NOT NULL, recurtype_schedcol text NOT NULL, recurtype_limit text, recurtype_copyfunc text NOT NULL, recurtype_copyargs text[] NOT NULL, recurtype_delfunc text ); DROP TABLE public.recurtype; publicadminfalse8'00TABLE recurtypeCOMMENTCOMMENT ON TABLE recurtype IS 'Describes the properties of recurring items/events in way that can be used by stored procedures to maintain the recurrence.'; publicadminfalse589'00COLUMN recurtype.recurtype_idCOMMENT_COMMENT ON COLUMN recurtype.recurtype_id IS 'The internal id of this recurrence description.'; publicadminfalse589'00COLUMN recurtype.recurtype_typeCOMMENTCOMMENT ON COLUMN recurtype.recurtype_type IS 'A code value used by the RecurrenceWidget and the code that uses it to describe the item/event that will recur. Examples include "INCDT" for CRM Incidents and "J" for Projects.'; publicadminfalse589'00 COLUMN recurtype.recurtype_tableCOMMENTgCOMMENT ON COLUMN recurtype.recurtype_table IS 'The table that holds the item/event that will recur.'; publicadminfalse589'00$COLUMN recurtype.recurtype_donecheckCOMMENTCOMMENT ON COLUMN recurtype.recurtype_donecheck IS 'A boolean expression that returns TRUE if an individual item/event record in the recurtype_table has already been completed.'; publicadminfalse589'00#COLUMN recurtype.recurtype_schedcolCOMMENTCOMMENT ON COLUMN recurtype.recurtype_schedcol IS 'The name of the column in the recurtype_table holding the date or timestamp by which the item is scheduled to be completed or at which the event is supposed to occur.'; publicadminfalse589'00 COLUMN recurtype.recurtype_limitCOMMENTCOMMENT ON COLUMN recurtype.recurtype_limit IS 'A boolean expression that returns TRUE if the current user should see the row in the recurtype_table. NULL indicates there is no specific limitation. For example, the maintainance of recurring TODO items should restricted to those items belonging to the user unless s/he has been granted the privilege to modify other people''s todo lists.'; publicadminfalse589'00#COLUMN recurtype.recurtype_copyfuncCOMMENTXCOMMENT ON COLUMN recurtype.recurtype_copyfunc IS 'The name of the function to copy an existing item/event record. The copy function is expected to take at least 2 arguments: the id of the item to copy and the new date/timestamp. If the function accepts more than 2, it must be able to accept NULL values for the 3rd and following arguments.'; publicadminfalse589'00#COLUMN recurtype.recurtype_copyargsCOMMENTCOMMENT ON COLUMN recurtype.recurtype_copyargs IS 'An abbreviated argument list for the copy function. This is used to determine whether the second argument must be cast to a date or a timestamp, and to figure out how many additional arguments to pass.'; publicadminfalse589'00"COLUMN recurtype.recurtype_delfuncCOMMENTCOMMENT ON COLUMN recurtype.recurtype_delfunc IS 'The name of the function to delete an existing item/event record. The function is expected to take exactly one argument: the id of the item to delete. NULL indicates there is no delete function and that an SQL DELETE statement can be used. In this case, the id column name will be built as the recurtype_table concatenated with the "_id" suffix.'; publicadminfalse589'00 recurtypeACLREVOKE ALL ON TABLE recurtype FROM PUBLIC; REVOKE ALL ON TABLE recurtype FROM admin; GRANT ALL ON TABLE recurtype TO admin; GRANT ALL ON TABLE recurtype TO xtrole; publicadminfalse589N12591695341recurtype_recurtype_id_seqSEQUENCE|CREATE SEQUENCE recurtype_recurtype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 1DROP SEQUENCE public.recurtype_recurtype_id_seq; publicadminfalse8589'00recurtype_recurtype_id_seqSEQUENCE OWNED BYKALTER SEQUENCE recurtype_recurtype_id_seq OWNED BY recurtype.recurtype_id; publicadminfalse590'00recurtype_recurtype_id_seq SEQUENCE SETASELECT pg_catalog.setval('recurtype_recurtype_id_seq', 5, true); publicadminfalse590'00recurtype_recurtype_id_seqACLREVOKE ALL ON SEQUENCE recurtype_recurtype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE recurtype_recurtype_id_seq FROM admin; GRANT ALL ON SEQUENCE recurtype_recurtype_id_seq TO admin; GRANT ALL ON SEQUENCE recurtype_recurtype_id_seq TO xtrole; publicadminfalse590P12591695353recv_recv_id_seqSEQUENCErCREATE SEQUENCE recv_recv_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 'DROP SEQUENCE public.recv_recv_id_seq; publicadminfalse8591'00recv_recv_id_seqSEQUENCE OWNED BY7ALTER SEQUENCE recv_recv_id_seq OWNED BY recv.recv_id; publicadminfalse592'00recv_recv_id_seq SEQUENCE SET7SELECT pg_catalog.setval('recv_recv_id_seq', 1, true); publicadminfalse592'00recv_recv_id_seqACLREVOKE ALL ON SEQUENCE recv_recv_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE recv_recv_id_seq FROM admin; GRANT ALL ON SEQUENCE recv_recv_id_seq TO admin; GRANT ALL ON SEQUENCE recv_recv_id_seq TO xtrole; publicadminfalse592P12592009456remittoVIEW"CREATE VIEW remitto AS SELECT (SELECT metric.metric_value FROM metric WHERE (metric.metric_name = 'remitto_name'::text)) AS remitto_name, (SELECT metric.metric_value FROM metric WHERE (metric.metric_name = 'remitto_address1'::text)) AS remitto_address1, (SELECT metric.metric_value FROM metric WHERE (metric.metric_name = 'remitto_address2'::text)) AS remitto_address2, (SELECT metric.metric_value FROM metric WHERE (metric.metric_name = 'remitto_address3'::text)) AS remitto_address3, (((((SELECT metric.metric_value FROM metric WHERE (metric.metric_name = 'remitto_city'::text)) || ' '::text) || (SELECT metric.metric_value FROM metric WHERE (metric.metric_name = 'remitto_state'::text))) || ' '::text) || (SELECT metric.metric_value FROM metric WHERE (metric.metric_name = 'remitto_zipcode'::text))) AS remitto_citystatezip, (SELECT metric.metric_value FROM metric WHERE (metric.metric_name = 'remitto_country'::text)) AS remitto_country, (SELECT metric.metric_value FROM metric WHERE (metric.metric_name = 'remitto_phone'::text)) AS remitto_phone; DROP VIEW public.remitto; publicadminfalse55448'00remittoACLREVOKE ALL ON TABLE remitto FROM PUBLIC; REVOKE ALL ON TABLE remitto FROM admin; GRANT ALL ON TABLE remitto TO admin; GRANT ALL ON TABLE remitto TO xtrole; publicadminfalse848Q12591695360rjctcodeTABLE CREATE TABLE rjctcode ( rjctcode_id integer DEFAULT nextval(('"rjctcode_rjctcode_id_seq"'::text)::regclass) NOT NULL, rjctcode_code text NOT NULL, rjctcode_descrip text, CONSTRAINT rjctcode_rjctcode_code_check CHECK ((rjctcode_code <> ''::text)) ); DROP TABLE public.rjctcode; publicadminfalse652265238 '00TABLE rjctcodeCOMMENT8COMMENT ON TABLE rjctcode IS 'Reject Code information'; publicadminfalse593!'00rjctcodeACLREVOKE ALL ON TABLE rjctcode FROM PUBLIC; REVOKE ALL ON TABLE rjctcode FROM admin; GRANT ALL ON TABLE rjctcode TO admin; GRANT ALL ON TABLE rjctcode TO xtrole; publicadminfalse593R12591695368rjctcode_rjctcode_id_seqSEQUENCECREATE SEQUENCE rjctcode_rjctcode_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; /DROP SEQUENCE public.rjctcode_rjctcode_id_seq; publicadminfalse8"'00rjctcode_rjctcode_id_seq SEQUENCE SET@SELECT pg_catalog.setval('rjctcode_rjctcode_id_seq', 18, true); publicadminfalse594#'00rjctcode_rjctcode_id_seqACLREVOKE ALL ON SEQUENCE rjctcode_rjctcode_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE rjctcode_rjctcode_id_seq FROM admin; GRANT ALL ON SEQUENCE rjctcode_rjctcode_id_seq TO admin; GRANT ALL ON SEQUENCE rjctcode_rjctcode_id_seq TO xtrole; publicadminfalse594S12591695370rsncode_rsncode_id_seqSEQUENCExCREATE SEQUENCE rsncode_rsncode_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.rsncode_rsncode_id_seq; publicadminfalse8161$'00rsncode_rsncode_id_seqSEQUENCE OWNED BYCALTER SEQUENCE rsncode_rsncode_id_seq OWNED BY rsncode.rsncode_id; publicadminfalse595%'00rsncode_rsncode_id_seq SEQUENCE SET=SELECT pg_catalog.setval('rsncode_rsncode_id_seq', 4, true); publicadminfalse595&'00rsncode_rsncode_id_seqACLREVOKE ALL ON SEQUENCE rsncode_rsncode_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE rsncode_rsncode_id_seq FROM admin; GRANT ALL ON SEQUENCE rsncode_rsncode_id_seq TO admin; GRANT ALL ON SEQUENCE rsncode_rsncode_id_seq TO xtrole; publicadminfalse595T12591695372saleTABLE2CREATE TABLE sale ( sale_id integer DEFAULT nextval(('"sale_sale_id_seq"'::text)::regclass) NOT NULL, sale_name text NOT NULL, sale_descrip text, sale_ipshead_id integer, sale_startdate date, sale_enddate date, CONSTRAINT sale_sale_name_check CHECK ((sale_name <> ''::text)) ); DROP TABLE public.sale; publicadminfalse652465258''00 TABLE saleCOMMENT-COMMENT ON TABLE sale IS 'Sale information'; publicadminfalse596('00saleACLREVOKE ALL ON TABLE sale FROM PUBLIC; REVOKE ALL ON TABLE sale FROM admin; GRANT ALL ON TABLE sale TO admin; GRANT ALL ON TABLE sale TO xtrole; publicadminfalse596U12591695379sale_sale_id_seqSEQUENCErCREATE SEQUENCE sale_sale_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 'DROP SEQUENCE public.sale_sale_id_seq; publicadminfalse8)'00sale_sale_id_seq SEQUENCE SET8SELECT pg_catalog.setval('sale_sale_id_seq', 12, true); publicadminfalse597*'00sale_sale_id_seqACLREVOKE ALL ON SEQUENCE sale_sale_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE sale_sale_id_seq FROM admin; GRANT ALL ON SEQUENCE sale_sale_id_seq TO admin; GRANT ALL ON SEQUENCE sale_sale_id_seq TO xtrole; publicadminfalse597V12591695381salesaccnt_salesaccnt_id_seqSEQUENCECREATE SEQUENCE salesaccnt_salesaccnt_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; 3DROP SEQUENCE public.salesaccnt_salesaccnt_id_seq; publicadminfalse8+'00salesaccnt_salesaccnt_id_seq SEQUENCE SETDSELECT pg_catalog.setval('salesaccnt_salesaccnt_id_seq', 32, true); publicadminfalse598,'00salesaccnt_salesaccnt_id_seqACLREVOKE ALL ON SEQUENCE salesaccnt_salesaccnt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE salesaccnt_salesaccnt_id_seq FROM admin; GRANT ALL ON SEQUENCE salesaccnt_salesaccnt_id_seq TO admin; GRANT ALL ON SEQUENCE salesaccnt_salesaccnt_id_seq TO xtrole; publicadminfalse598W12591695383salescat_salescat_id_seqSEQUENCEzCREATE SEQUENCE salescat_salescat_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.salescat_salescat_id_seq; publicadminfalse8162-'00salescat_salescat_id_seqSEQUENCE OWNED BYGALTER SEQUENCE salescat_salescat_id_seq OWNED BY salescat.salescat_id; publicadminfalse599.'00salescat_salescat_id_seq SEQUENCE SET?SELECT pg_catalog.setval('salescat_salescat_id_seq', 2, true); publicadminfalse599/'00salescat_salescat_id_seqACLREVOKE ALL ON SEQUENCE salescat_salescat_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE salescat_salescat_id_seq FROM admin; GRANT ALL ON SEQUENCE salescat_salescat_id_seq TO admin; GRANT ALL ON SEQUENCE salescat_salescat_id_seq TO xtrole; publicadminfalse599Q12592009460 saleshistoryVIEWCREATE VIEW saleshistory AS SELECT cohist.cohist_id, cohist.cohist_cust_id, cohist.cohist_itemsite_id, cohist.cohist_shipdate, cohist.cohist_shipvia, cohist.cohist_ordernumber, cohist.cohist_orderdate, cohist.cohist_invcnumber, cohist.cohist_invcdate, cohist.cohist_qtyshipped, cohist.cohist_unitprice, cohist.cohist_shipto_id, cohist.cohist_salesrep_id, cohist.cohist_duedate, cohist.cohist_imported, cohist.cohist_billtoname, cohist.cohist_billtoaddress1, cohist.cohist_billtoaddress2, cohist.cohist_billtoaddress3, cohist.cohist_billtocity, cohist.cohist_billtostate, cohist.cohist_billtozip, cohist.cohist_shiptoname, cohist.cohist_shiptoaddress1, cohist.cohist_shiptoaddress2, cohist.cohist_shiptoaddress3, cohist.cohist_shiptocity, cohist.cohist_shiptostate, cohist.cohist_shiptozip, cohist.cohist_commission, cohist.cohist_commissionpaid, cohist.cohist_unitcost, cohist.cohist_misc_type, cohist.cohist_misc_descrip, cohist.cohist_misc_id, cohist.cohist_doctype, cohist.cohist_promisedate, cohist.cohist_ponumber, cohist.cohist_curr_id, cohist.cohist_sequence, cohist.cohist_taxtype_id, cohist.cohist_taxzone_id, cohist.cohist_cohead_ccpay_id, cohist.cohist_saletype_id, cohist.cohist_shipzone_id, CASE WHEN (cohist.cohist_invcnumber = '-1'::text) THEN 'Credit'::text ELSE cohist.cohist_invcnumber END AS invoicenumber, custinfo.cust_id, custinfo.cust_number, custinfo.cust_name, custinfo.cust_curr_id, custinfo.cust_custtype_id, custtype.custtype_code, custtype.custtype_descrip, salesrep.salesrep_number, salesrep.salesrep_name, shipzone.shipzone_id, shipzone.shipzone_name, shipzone.shipzone_descrip, itemsite.itemsite_warehous_id, itemsite.itemsite_item_id, item.item_id, item.item_number, item.item_descrip1, ((item.item_descrip1 || ' '::text) || item.item_descrip2) AS itemdescription, item.item_prodcat_id, site.warehous_code, site.warehous_descrip, prodcat.prodcat_code, currtobase(cohist.cohist_curr_id, cohist.cohist_commission, cohist.cohist_invcdate) AS basecommission, currtobase(cohist.cohist_curr_id, cohist.cohist_unitprice, cohist.cohist_invcdate) AS baseunitprice, currtocurr(cohist.cohist_curr_id, custinfo.cust_curr_id, cohist.cohist_unitprice, cohist.cohist_invcdate) AS custunitprice, round((cohist.cohist_qtyshipped * cohist.cohist_unitprice), 2) AS extprice, round((cohist.cohist_qtyshipped * currtobase(cohist.cohist_curr_id, cohist.cohist_unitprice, cohist.cohist_invcdate)), 2) AS baseextprice, round((cohist.cohist_qtyshipped * currtocurr(cohist.cohist_curr_id, custinfo.cust_curr_id, cohist.cohist_unitprice, cohist.cohist_invcdate)), 2) AS custextprice, round((cohist.cohist_qtyshipped * cohist.cohist_unitcost), 4) AS extcost, currconcat(cohist.cohist_curr_id) AS currabbr, 'Return'::text AS cohist_invcdate_xtnullrole, 'qty'::text AS cohist_qtyshipped_xtnumericrole, 'salesprice'::text AS cohist_unitprice_xtnumericrole, 'salesprice'::text AS baseunitprice_xtnumericrole, 'curr'::text AS custunitprice_xtnumericrole, 'curr'::text AS custextprice_xtnumericrole, 'curr'::text AS extprice_xtnumericrole, 'curr'::text AS baseextprice_xtnumericrole, 'cost'::text AS cohist_unitcost_xtnumericrole, 'curr'::text AS extcost_xtnumericrole, 'curr'::text AS cohist_commission_xtnumericrole, 'curr'::text AS basecommission_xtnumericrole, 0 AS cohist_qtyshipped_xttotalrole, 0 AS custextprice_xttotalrole, 0 AS baseextprice_xttotalrole, 0 AS extcost_xttotalrole, 0 AS basecommission_xttotalrole FROM (((((((((cohist JOIN custinfo ON ((custinfo.cust_id = cohist.cohist_cust_id))) JOIN custtype ON ((custtype.custtype_id = custinfo.cust_custtype_id))) JOIN salesrep ON ((salesrep.salesrep_id = cohist.cohist_salesrep_id))) JOIN itemsite ON ((itemsite.itemsite_id = cohist.cohist_itemsite_id))) JOIN site() site(warehous_id, warehous_code, warehous_descrip, warehous_fob, warehous_active, warehous_counttag_prefix, warehous_counttag_number, warehous_bol_prefix, warehous_bol_number, warehous_shipping, warehous_useslips, warehous_usezones, warehous_aislesize, warehous_aislealpha, warehous_racksize, warehous_rackalpha, warehous_binsize, warehous_binalpha, warehous_locationsize, warehous_locationalpha, warehous_enforcearbl, warehous_default_accnt_id, warehous_shipping_commission, warehous_cntct_id, warehous_addr_id, warehous_transit, warehous_shipform_id, warehous_shipvia_id, warehous_shipcomments, warehous_costcat_id, warehous_sitetype_id, warehous_taxzone_id, warehous_sequence) ON ((site.warehous_id = itemsite.itemsite_warehous_id))) JOIN item ON ((item.item_id = itemsite.itemsite_item_id))) JOIN prodcat ON ((prodcat.prodcat_id = item.item_prodcat_id))) LEFT JOIN shiptoinfo ON ((shiptoinfo.shipto_id = cohist.cohist_shipto_id))) LEFT JOIN shipzone ON ((shipzone.shipzone_id = shiptoinfo.shipto_shipzone_id))); DROP VIEW public.saleshistory; publicadminfalse554580'00VIEW saleshistoryCOMMENTPCOMMENT ON VIEW saleshistory IS 'Single point for sales history calculations.'; publicadminfalse8491'00 saleshistoryACLREVOKE ALL ON TABLE saleshistory FROM PUBLIC; REVOKE ALL ON TABLE saleshistory FROM admin; GRANT ALL ON TABLE saleshistory TO admin; GRANT ALL ON TABLE saleshistory TO xtrole; publicadminfalse849R12592009465saleshistorymiscVIEWJCREATE VIEW saleshistorymisc AS SELECT cohist.cohist_id, cohist.cohist_cust_id, cohist.cohist_itemsite_id, cohist.cohist_shipdate, cohist.cohist_shipvia, cohist.cohist_ordernumber, cohist.cohist_orderdate, cohist.cohist_invcnumber, cohist.cohist_invcdate, cohist.cohist_qtyshipped, cohist.cohist_unitprice, cohist.cohist_shipto_id, cohist.cohist_salesrep_id, cohist.cohist_duedate, cohist.cohist_imported, cohist.cohist_billtoname, cohist.cohist_billtoaddress1, cohist.cohist_billtoaddress2, cohist.cohist_billtoaddress3, cohist.cohist_billtocity, cohist.cohist_billtostate, cohist.cohist_billtozip, cohist.cohist_shiptoname, cohist.cohist_shiptoaddress1, cohist.cohist_shiptoaddress2, cohist.cohist_shiptoaddress3, cohist.cohist_shiptocity, cohist.cohist_shiptostate, cohist.cohist_shiptozip, cohist.cohist_commission, cohist.cohist_commissionpaid, cohist.cohist_unitcost, cohist.cohist_misc_type, cohist.cohist_misc_descrip, cohist.cohist_misc_id, cohist.cohist_doctype, cohist.cohist_promisedate, cohist.cohist_ponumber, cohist.cohist_curr_id, cohist.cohist_sequence, cohist.cohist_taxtype_id, cohist.cohist_taxzone_id, cohist.cohist_cohead_ccpay_id, cohist.cohist_saletype_id, cohist.cohist_shipzone_id, CASE WHEN (cohist.cohist_invcnumber = '-1'::text) THEN 'Credit'::text ELSE cohist.cohist_invcnumber END AS invoicenumber, custinfo.cust_id, custinfo.cust_number, custinfo.cust_name, custinfo.cust_curr_id, custinfo.cust_custtype_id, custtype.custtype_code, salesrep.salesrep_number, salesrep.salesrep_name, shipzone.shipzone_id, shipzone.shipzone_name, itemsite.itemsite_warehous_id, itemsite.itemsite_item_id, item.item_number, item.item_descrip1, ((item.item_descrip1 || ' '::text) || item.item_descrip2) AS itemdescription, item.item_prodcat_id, site.warehous_code, prodcat.prodcat_code, currtobase(cohist.cohist_curr_id, cohist.cohist_commission, cohist.cohist_invcdate) AS basecommission, currtobase(cohist.cohist_curr_id, cohist.cohist_unitprice, cohist.cohist_invcdate) AS baseunitprice, currtocurr(cohist.cohist_curr_id, custinfo.cust_curr_id, cohist.cohist_unitprice, cohist.cohist_invcdate) AS custunitprice, round((cohist.cohist_qtyshipped * cohist.cohist_unitprice), 2) AS extprice, round((cohist.cohist_qtyshipped * currtobase(cohist.cohist_curr_id, cohist.cohist_unitprice, cohist.cohist_invcdate)), 2) AS baseextprice, round((cohist.cohist_qtyshipped * currtocurr(cohist.cohist_curr_id, custinfo.cust_curr_id, cohist.cohist_unitprice, cohist.cohist_invcdate)), 2) AS custextprice, round((cohist.cohist_qtyshipped * cohist.cohist_unitcost), 4) AS extcost, currconcat(cohist.cohist_curr_id) AS currabbr, 'Return'::text AS cohist_invcdate_xtnullrole, 'qty'::text AS cohist_qtyshipped_xtnumericrole, 'salesprice'::text AS cohist_unitprice_xtnumericrole, 'salesprice'::text AS baseunitprice_xtnumericrole, 'curr'::text AS custunitprice_xtnumericrole, 'curr'::text AS custextprice_xtnumericrole, 'curr'::text AS extprice_xtnumericrole, 'curr'::text AS baseextprice_xtnumericrole, 'cost'::text AS cohist_unitcost_xtnumericrole, 'curr'::text AS extcost_xtnumericrole, 'curr'::text AS cohist_commission_xtnumericrole, 'curr'::text AS basecommission_xtnumericrole, 0 AS cohist_qtyshipped_xttotalrole, 0 AS custextprice_xttotalrole, 0 AS baseextprice_xttotalrole, 0 AS extcost_xttotalrole, 0 AS basecommission_xttotalrole FROM (((((((((cohist JOIN custinfo ON ((custinfo.cust_id = cohist.cohist_cust_id))) JOIN custtype ON ((custtype.custtype_id = custinfo.cust_custtype_id))) JOIN salesrep ON ((salesrep.salesrep_id = cohist.cohist_salesrep_id))) LEFT JOIN itemsite ON ((itemsite.itemsite_id = cohist.cohist_itemsite_id))) LEFT JOIN site() site(warehous_id, warehous_code, warehous_descrip, warehous_fob, warehous_active, warehous_counttag_prefix, warehous_counttag_number, warehous_bol_prefix, warehous_bol_number, warehous_shipping, warehous_useslips, warehous_usezones, warehous_aislesize, warehous_aislealpha, warehous_racksize, warehous_rackalpha, warehous_binsize, warehous_binalpha, warehous_locationsize, warehous_locationalpha, warehous_enforcearbl, warehous_default_accnt_id, warehous_shipping_commission, warehous_cntct_id, warehous_addr_id, warehous_transit, warehous_shipform_id, warehous_shipvia_id, warehous_shipcomments, warehous_costcat_id, warehous_sitetype_id, warehous_taxzone_id, warehous_sequence) ON ((site.warehous_id = itemsite.itemsite_warehous_id))) LEFT JOIN item ON ((item.item_id = itemsite.itemsite_item_id))) LEFT JOIN prodcat ON ((prodcat.prodcat_id = item.item_prodcat_id))) LEFT JOIN shiptoinfo ON ((shiptoinfo.shipto_id = cohist.cohist_shipto_id))) LEFT JOIN shipzone ON ((shipzone.shipzone_id = shiptoinfo.shipto_shipzone_id))); #DROP VIEW public.saleshistorymisc; publicadminfalse554682'00VIEW saleshistorymiscCOMMENTlCOMMENT ON VIEW saleshistorymisc IS 'Single point for sales history (including misc. items) calculations.'; publicadminfalse8503'00saleshistorymiscACLREVOKE ALL ON TABLE saleshistorymisc FROM PUBLIC; REVOKE ALL ON TABLE saleshistorymisc FROM admin; GRANT ALL ON TABLE saleshistorymisc TO admin; GRANT ALL ON TABLE saleshistorymisc TO xtrole; publicadminfalse850X12591695397salesrep_salesrep_id_seqSEQUENCEzCREATE SEQUENCE salesrep_salesrep_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.salesrep_salesrep_id_seq; publicadminfalse84'00salesrep_salesrep_id_seq SEQUENCE SET@SELECT pg_catalog.setval('salesrep_salesrep_id_seq', 29, true); publicadminfalse6005'00salesrep_salesrep_id_seqACLREVOKE ALL ON SEQUENCE salesrep_salesrep_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE salesrep_salesrep_id_seq FROM admin; GRANT ALL ON SEQUENCE salesrep_salesrep_id_seq TO admin; GRANT ALL ON SEQUENCE salesrep_salesrep_id_seq TO xtrole; publicadminfalse60012591746328saletype_saletype_id_seqSEQUENCEzCREATE SEQUENCE saletype_saletype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.saletype_saletype_id_seq; publicadminfalse87226'00saletype_saletype_id_seqSEQUENCE OWNED BYGALTER SEQUENCE saletype_saletype_id_seq OWNED BY saletype.saletype_id; publicadminfalse7217'00saletype_saletype_id_seq SEQUENCE SET?SELECT pg_catalog.setval('saletype_saletype_id_seq', 3, true); publicadminfalse7218'00saletype_saletype_id_seqACLREVOKE ALL ON SEQUENCE saletype_saletype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE saletype_saletype_id_seq FROM admin; GRANT ALL ON SEQUENCE saletype_saletype_id_seq TO admin; GRANT ALL ON SEQUENCE saletype_saletype_id_seq TO xtrole; publicadminfalse721Y12591695399 schemaordTABLE/CREATE TABLE schemaord ( schemaord_id integer NOT NULL, schemaord_name text NOT NULL, schemaord_order integer NOT NULL, CONSTRAINT schemaord_schemaord_name_check CHECK ((length(schemaord_name) > 0)), CONSTRAINT schemaord_schemaord_name_check1 CHECK ((schemaord_name <> ''::text)) ); DROP TABLE public.schemaord; publicadminfalse6527652889'00TABLE schemaordCOMMENTnCOMMENT ON TABLE schemaord IS 'Set the order in which db schemas will appear in the search path after login'; publicadminfalse601:'00 schemaordACLREVOKE ALL ON TABLE schemaord FROM PUBLIC; REVOKE ALL ON TABLE schemaord FROM admin; GRANT ALL ON TABLE schemaord TO admin; GRANT ALL ON TABLE schemaord TO xtrole; publicadminfalse601Z12591695407schemaord_schemaord_id_seqSEQUENCE|CREATE SEQUENCE schemaord_schemaord_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 1DROP SEQUENCE public.schemaord_schemaord_id_seq; publicadminfalse8601;'00schemaord_schemaord_id_seqSEQUENCE OWNED BYKALTER SEQUENCE schemaord_schemaord_id_seq OWNED BY schemaord.schemaord_id; publicadminfalse602<'00schemaord_schemaord_id_seq SEQUENCE SETBSELECT pg_catalog.setval('schemaord_schemaord_id_seq', 1, false); publicadminfalse602='00schemaord_schemaord_id_seqACLREVOKE ALL ON SEQUENCE schemaord_schemaord_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE schemaord_schemaord_id_seq FROM admin; GRANT ALL ON SEQUENCE schemaord_schemaord_id_seq TO admin; GRANT ALL ON SEQUENCE schemaord_schemaord_id_seq TO xtrole; publicadminfalse602[12591695409sequenceTABLE6CREATE TABLE sequence ( sequence_value integer ); DROP TABLE public.sequence; publicadminfalse8>'00TABLE sequenceCOMMENTxCOMMENT ON TABLE sequence IS 'Pre-populated list of sequence numbers (1-1000) used for printing Labels and other uses'; publicadminfalse603?'00sequenceACLREVOKE ALL ON TABLE sequence FROM PUBLIC; REVOKE ALL ON TABLE sequence FROM admin; GRANT ALL ON TABLE sequence TO admin; GRANT ALL ON TABLE sequence TO xtrole; publicadminfalse603\12591695412shift_shift_id_seqSEQUENCEtCREATE SEQUENCE shift_shift_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; )DROP SEQUENCE public.shift_shift_id_seq; publicadminfalse8215@'00shift_shift_id_seqSEQUENCE OWNED BY;ALTER SEQUENCE shift_shift_id_seq OWNED BY shift.shift_id; publicadminfalse604A'00shift_shift_id_seq SEQUENCE SET9SELECT pg_catalog.setval('shift_shift_id_seq', 1, true); publicadminfalse604B'00shift_shift_id_seqACLREVOKE ALL ON SEQUENCE shift_shift_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE shift_shift_id_seq FROM admin; GRANT ALL ON SEQUENCE shift_shift_id_seq TO admin; GRANT ALL ON SEQUENCE shift_shift_id_seq TO xtrole; publicadminfalse604]12591695414shipchrg_shipchrg_id_seqSEQUENCEzCREATE SEQUENCE shipchrg_shipchrg_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.shipchrg_shipchrg_id_seq; publicadminfalse8208C'00shipchrg_shipchrg_id_seqSEQUENCE OWNED BYGALTER SEQUENCE shipchrg_shipchrg_id_seq OWNED BY shipchrg.shipchrg_id; publicadminfalse605D'00shipchrg_shipchrg_id_seq SEQUENCE SET?SELECT pg_catalog.setval('shipchrg_shipchrg_id_seq', 5, true); publicadminfalse605E'00shipchrg_shipchrg_id_seqACLREVOKE ALL ON SEQUENCE shipchrg_shipchrg_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE shipchrg_shipchrg_id_seq FROM admin; GRANT ALL ON SEQUENCE shipchrg_shipchrg_id_seq TO admin; GRANT ALL ON SEQUENCE shipchrg_shipchrg_id_seq TO xtrole; publicadminfalse605^12591695416 shipdatasumTABLECREATE TABLE shipdatasum ( shipdatasum_cohead_number text NOT NULL, shipdatasum_cosmisc_tracknum text NOT NULL, shipdatasum_cosmisc_packnum_tracknum text NOT NULL, shipdatasum_weight numeric(16,4), shipdatasum_base_freight numeric(16,4), shipdatasum_total_freight numeric(16,4), shipdatasum_shipper text DEFAULT 'UPS'::text, shipdatasum_billing_option text, shipdatasum_package_type text, shipdatasum_lastupdated timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, shipdatasum_shipped boolean DEFAULT false, shipdatasum_shiphead_number text, shipdatasum_base_freight_curr_id integer DEFAULT basecurrid(), shipdatasum_total_freight_curr_id integer DEFAULT basecurrid() ); DROP TABLE public.shipdatasum; publicadminfalse652965306531653265338F'00TABLE shipdatasumCOMMENTCCOMMENT ON TABLE shipdatasum IS 'Shipping Interface information.'; publicadminfalse606G'00 shipdatasumACLREVOKE ALL ON TABLE shipdatasum FROM PUBLIC; REVOKE ALL ON TABLE shipdatasum FROM admin; GRANT ALL ON TABLE shipdatasum TO admin; GRANT ALL ON TABLE shipdatasum TO xtrole; publicadminfalse606_12591695427shipform_shipform_id_seqSEQUENCECREATE SEQUENCE shipform_shipform_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; /DROP SEQUENCE public.shipform_shipform_id_seq; publicadminfalse8H'00shipform_shipform_id_seq SEQUENCE SET@SELECT pg_catalog.setval('shipform_shipform_id_seq', 12, true); publicadminfalse607I'00shipform_shipform_id_seqACLREVOKE ALL ON SEQUENCE shipform_shipform_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE shipform_shipform_id_seq FROM admin; GRANT ALL ON SEQUENCE shipform_shipform_id_seq TO admin; GRANT ALL ON SEQUENCE shipform_shipform_id_seq TO xtrole; publicadminfalse607a12591695440shiphead_shiphead_id_seqSEQUENCEzCREATE SEQUENCE shiphead_shiphead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.shiphead_shiphead_id_seq; publicadminfalse8608J'00shiphead_shiphead_id_seqSEQUENCE OWNED BYGALTER SEQUENCE shiphead_shiphead_id_seq OWNED BY shiphead.shiphead_id; publicadminfalse609K'00shiphead_shiphead_id_seq SEQUENCE SET@SELECT pg_catalog.setval('shiphead_shiphead_id_seq', 1, false); publicadminfalse609L'00shiphead_shiphead_id_seqACLREVOKE ALL ON SEQUENCE shiphead_shiphead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE shiphead_shiphead_id_seq FROM admin; GRANT ALL ON SEQUENCE shiphead_shiphead_id_seq TO admin; GRANT ALL ON SEQUENCE shiphead_shiphead_id_seq TO xtrole; publicadminfalse609b12591695442shipitem_shipitem_id_seqSEQUENCEzCREATE SEQUENCE shipitem_shipitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.shipitem_shipitem_id_seq; publicadminfalse8474M'00shipitem_shipitem_id_seqSEQUENCE OWNED BYGALTER SEQUENCE shipitem_shipitem_id_seq OWNED BY shipitem.shipitem_id; publicadminfalse610N'00shipitem_shipitem_id_seq SEQUENCE SET@SELECT pg_catalog.setval('shipitem_shipitem_id_seq', 1, false); publicadminfalse610O'00shipitem_shipitem_id_seqACLREVOKE ALL ON SEQUENCE shipitem_shipitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE shipitem_shipitem_id_seq FROM admin; GRANT ALL ON SEQUENCE shipitem_shipitem_id_seq TO admin; GRANT ALL ON SEQUENCE shipitem_shipitem_id_seq TO xtrole; publicadminfalse610c12591695444shipment_number_seqSEQUENCEuCREATE SEQUENCE shipment_number_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; *DROP SEQUENCE public.shipment_number_seq; publicadminfalse8P'00shipment_number_seq SEQUENCE SET>SELECT pg_catalog.setval('shipment_number_seq', 80000, true); publicadminfalse611Q'00shipment_number_seqACLREVOKE ALL ON SEQUENCE shipment_number_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE shipment_number_seq FROM admin; GRANT ALL ON SEQUENCE shipment_number_seq TO admin; GRANT ALL ON SEQUENCE shipment_number_seq TO xtrole; publicadminfalse611Z12592009502shiptoVIEWCREATE VIEW shipto AS SELECT shiptoinfo.shipto_id, shiptoinfo.shipto_cust_id, shiptoinfo.shipto_name, m.addr_line1 AS shipto_address1, m.addr_line2 AS shipto_address2, m.addr_line3 AS shipto_address3, m.addr_city AS shipto_city, m.addr_state AS shipto_state, m.addr_postalcode AS shipto_zipcode, shiptoinfo.shipto_taxzone_id, shiptoinfo.shipto_salesrep_id, c1.cntct_phone AS shipto_phone, shiptoinfo.shipto_comments, shiptoinfo.shipto_shipcomments, btrim(((c1.cntct_first_name || ' '::text) || c1.cntct_last_name)) AS shipto_contact, c1.cntct_fax AS shipto_fax, c1.cntct_email AS shipto_email, shiptoinfo.shipto_shipzone_id, shiptoinfo.shipto_shipvia, shiptoinfo.shipto_commission, shiptoinfo.shipto_shipform_id, shiptoinfo.shipto_shipchrg_id, shiptoinfo.shipto_active, shiptoinfo.shipto_default, shiptoinfo.shipto_num, shiptoinfo.shipto_ediprofile_id, m.addr_country AS shipto_country FROM ((shiptoinfo LEFT JOIN cntct c1 ON ((shiptoinfo.shipto_cntct_id = c1.cntct_id))) LEFT JOIN addr m ON ((shiptoinfo.shipto_addr_id = m.addr_id))); DROP VIEW public.shipto; publicadminfalse55548R'00shiptoACLREVOKE ALL ON TABLE shipto FROM PUBLIC; REVOKE ALL ON TABLE shipto FROM admin; GRANT ALL ON TABLE shipto TO admin; GRANT ALL ON TABLE shipto TO xtrole; publicadminfalse858d12591695446shipto_shipto_id_seqSEQUENCE~CREATE SEQUENCE shipto_shipto_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; +DROP SEQUENCE public.shipto_shipto_id_seq; publicadminfalse8S'00shipto_shipto_id_seq SEQUENCE SET<SELECT pg_catalog.setval('shipto_shipto_id_seq', 30, true); publicadminfalse612T'00shipto_shipto_id_seqACLREVOKE ALL ON SEQUENCE shipto_shipto_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE shipto_shipto_id_seq FROM admin; GRANT ALL ON SEQUENCE shipto_shipto_id_seq TO admin; GRANT ALL ON SEQUENCE shipto_shipto_id_seq TO xtrole; publicadminfalse612e12591695448shipvia_shipvia_id_seqSEQUENCECREATE SEQUENCE shipvia_shipvia_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.shipvia_shipvia_id_seq; publicadminfalse8U'00shipvia_shipvia_id_seq SEQUENCE SET>SELECT pg_catalog.setval('shipvia_shipvia_id_seq', 24, true); publicadminfalse613V'00shipvia_shipvia_id_seqACLREVOKE ALL ON SEQUENCE shipvia_shipvia_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE shipvia_shipvia_id_seq FROM admin; GRANT ALL ON SEQUENCE shipvia_shipvia_id_seq TO admin; GRANT ALL ON SEQUENCE shipvia_shipvia_id_seq TO xtrole; publicadminfalse613f12591695450shipzone_shipzone_id_seqSEQUENCECREATE SEQUENCE shipzone_shipzone_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; /DROP SEQUENCE public.shipzone_shipzone_id_seq; publicadminfalse8W'00shipzone_shipzone_id_seq SEQUENCE SET@SELECT pg_catalog.setval('shipzone_shipzone_id_seq', 45, true); publicadminfalse614X'00shipzone_shipzone_id_seqACLREVOKE ALL ON SEQUENCE shipzone_shipzone_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE shipzone_shipzone_id_seq FROM admin; GRANT ALL ON SEQUENCE shipzone_shipzone_id_seq TO admin; GRANT ALL ON SEQUENCE shipzone_shipzone_id_seq TO xtrole; publicadminfalse614g12591695452sitetype_sitetype_id_seqSEQUENCEzCREATE SEQUENCE sitetype_sitetype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.sitetype_sitetype_id_seq; publicadminfalse8257Y'00sitetype_sitetype_id_seqSEQUENCE OWNED BYGALTER SEQUENCE sitetype_sitetype_id_seq OWNED BY sitetype.sitetype_id; publicadminfalse615Z'00sitetype_sitetype_id_seq SEQUENCE SET?SELECT pg_catalog.setval('sitetype_sitetype_id_seq', 1, true); publicadminfalse615['00sitetype_sitetype_id_seqACLREVOKE ALL ON SEQUENCE sitetype_sitetype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE sitetype_sitetype_id_seq FROM admin; GRANT ALL ON SEQUENCE sitetype_sitetype_id_seq TO admin; GRANT ALL ON SEQUENCE sitetype_sitetype_id_seq TO xtrole; publicadminfalse615h12591695454sltransTABLECREATE TABLE sltrans ( sltrans_id integer DEFAULT nextval('gltrans_gltrans_id_seq'::regclass) NOT NULL, sltrans_created timestamp with time zone, sltrans_date date NOT NULL, sltrans_sequence integer, sltrans_accnt_id integer NOT NULL, sltrans_source text, sltrans_docnumber text, sltrans_misc_id integer, sltrans_amount numeric(20,2) NOT NULL, sltrans_notes text, sltrans_journalnumber integer, sltrans_posted boolean NOT NULL, sltrans_doctype text, sltrans_username text DEFAULT geteffectivextuser() NOT NULL, sltrans_gltrans_journalnumber integer, sltrans_rec boolean DEFAULT false NOT NULL ); DROP TABLE public.sltrans; publicadminfalse6541654265438\'00 TABLE sltransCOMMENT?COMMENT ON TABLE sltrans IS 'Journal transaction information'; publicadminfalse616]'00sltransACLREVOKE ALL ON TABLE sltrans FROM PUBLIC; REVOKE ALL ON TABLE sltrans FROM admin; GRANT ALL ON TABLE sltrans TO admin; GRANT ALL ON TABLE sltrans TO xtrole; publicadminfalse616i12591695463sltrans_backupTABLEXCREATE TABLE sltrans_backup ( sltrans_old_id integer, sltrans_new_id integer ); "DROP TABLE public.sltrans_backup; publicadminfalse8^'00TABLE sltrans_backupCOMMENTjCOMMENT ON TABLE sltrans_backup IS 'backup cross references of old and new ids for sltrans 4.0 upgrade.'; publicadminfalse617[12592009507sopackVIEWCREATE VIEW sopack AS SELECT pack.pack_id AS sopack_id, pack.pack_head_id AS sopack_sohead_id, pack.pack_printed AS sopack_printed, pack.pack_shiphead_id AS sopack_cosmisc_id FROM pack WHERE (pack.pack_head_type = 'SO'::text); DROP VIEW public.sopack; publicadminfalse55558_'00sopackACLREVOKE ALL ON TABLE sopack FROM PUBLIC; REVOKE ALL ON TABLE sopack FROM admin; GRANT ALL ON TABLE sopack TO admin; GRANT ALL ON TABLE sopack TO xtrole; publicadminfalse859j12591695466sopack_sopack_id_seqSEQUENCEvCREATE SEQUENCE sopack_sopack_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.sopack_sopack_id_seq; publicadminfalse8`'00sopack_sopack_id_seq SEQUENCE SET<SELECT pg_catalog.setval('sopack_sopack_id_seq', 60, true); publicadminfalse618a'00sopack_sopack_id_seqACLREVOKE ALL ON SEQUENCE sopack_sopack_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE sopack_sopack_id_seq FROM admin; GRANT ALL ON SEQUENCE sopack_sopack_id_seq TO admin; GRANT ALL ON SEQUENCE sopack_sopack_id_seq TO xtrole; publicadminfalse618k12591695468sourceTABLECREATE TABLE source ( source_id integer NOT NULL, source_module text, source_name text NOT NULL, source_descrip text, CONSTRAINT source_source_name_check CHECK ((source_name <> ''::text)) ); DROP TABLE public.source; publicadminfalse65458b'00 TABLE sourceCOMMENT4COMMENT ON TABLE source IS 'Tax class information'; publicadminfalse619c'00COLUMN source.source_idCOMMENT5COMMENT ON COLUMN source.source_id IS 'Primary key'; publicadminfalse619d'00COLUMN source.source_moduleCOMMENT@COMMENT ON COLUMN source.source_module IS 'Application module'; publicadminfalse619e'00COLUMN source.source_nameCOMMENT0COMMENT ON COLUMN source.source_name IS 'Name'; publicadminfalse619f'00COLUMN source.source_descripCOMMENT:COMMENT ON COLUMN source.source_descrip IS 'Description'; publicadminfalse619g'00sourceACLREVOKE ALL ON TABLE source FROM PUBLIC; REVOKE ALL ON TABLE source FROM admin; GRANT ALL ON TABLE source TO admin; GRANT ALL ON TABLE source TO xtrole; publicadminfalse619l12591695475source_source_id_seqSEQUENCEvCREATE SEQUENCE source_source_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.source_source_id_seq; publicadminfalse8619h'00source_source_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE source_source_id_seq OWNED BY source.source_id; publicadminfalse620i'00source_source_id_seq SEQUENCE SET<SELECT pg_catalog.setval('source_source_id_seq', 38, true); publicadminfalse620j'00source_source_id_seqACLREVOKE ALL ON SEQUENCE source_source_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE source_source_id_seq FROM admin; GRANT ALL ON SEQUENCE source_source_id_seq TO admin; GRANT ALL ON SEQUENCE source_source_id_seq TO xtrole; publicadminfalse620m12591695477stateTABLECREATE TABLE state ( state_id integer NOT NULL, state_name text NOT NULL, state_abbr text, state_country_id integer, CONSTRAINT state_state_name_check CHECK ((state_name <> ''::text)) ); DROP TABLE public.state; publicadminfalse65478k'00 TABLE stateCOMMENTkCOMMENT ON TABLE state IS 'List of states, provinces, and territories associated with various countries.'; publicadminfalse621l'00stateACLREVOKE ALL ON TABLE state FROM PUBLIC; REVOKE ALL ON TABLE state FROM admin; GRANT ALL ON TABLE state TO admin; GRANT ALL ON TABLE state TO xtrole; publicadminfalse621n12591695483state_state_id_seqSEQUENCEtCREATE SEQUENCE state_state_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; )DROP SEQUENCE public.state_state_id_seq; publicadminfalse8621m'00state_state_id_seqSEQUENCE OWNED BY;ALTER SEQUENCE state_state_id_seq OWNED BY state.state_id; publicadminfalse622n'00state_state_id_seq SEQUENCE SET;SELECT pg_catalog.setval('state_state_id_seq', 158, true); publicadminfalse622o'00state_state_id_seqACLREVOKE ALL ON SEQUENCE state_state_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE state_state_id_seq FROM admin; GRANT ALL ON SEQUENCE state_state_id_seq TO admin; GRANT ALL ON SEQUENCE state_state_id_seq TO xtrole; publicadminfalse622o12591695485statusTABLECREATE TABLE status ( status_id integer NOT NULL, status_type text NOT NULL, status_code character(1) NOT NULL, status_name text, status_seq integer, status_color text DEFAULT 'white'::text ); DROP TABLE public.status; publicadminfalse65498p'00statusACLREVOKE ALL ON TABLE status FROM PUBLIC; REVOKE ALL ON TABLE status FROM admin; GRANT ALL ON TABLE status TO admin; GRANT ALL ON TABLE status TO xtrole; publicadminfalse623p12591695492status_status_id_seqSEQUENCEvCREATE SEQUENCE status_status_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.status_status_id_seq; publicadminfalse8623q'00status_status_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE status_status_id_seq OWNED BY status.status_id; publicadminfalse624r'00status_status_id_seq SEQUENCE SET;SELECT pg_catalog.setval('status_status_id_seq', 6, true); publicadminfalse624s'00status_status_id_seqACLREVOKE ALL ON SEQUENCE status_status_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE status_status_id_seq FROM admin; GRANT ALL ON SEQUENCE status_status_id_seq TO admin; GRANT ALL ON SEQUENCE status_status_id_seq TO xtrole; publicadminfalse624q12591695494stdjrnlTABLECREATE TABLE stdjrnl ( stdjrnl_id integer NOT NULL, stdjrnl_name text NOT NULL, stdjrnl_descrip text, stdjrnl_notes text, CONSTRAINT stdjrnl_stdjrnl_name_check CHECK ((stdjrnl_name <> ''::text)) ); DROP TABLE public.stdjrnl; publicadminfalse65518t'00 TABLE stdjrnlCOMMENT<COMMENT ON TABLE stdjrnl IS 'Standard Journal information'; publicadminfalse625u'00stdjrnlACLREVOKE ALL ON TABLE stdjrnl FROM PUBLIC; REVOKE ALL ON TABLE stdjrnl FROM admin; GRANT ALL ON TABLE stdjrnl TO admin; GRANT ALL ON TABLE stdjrnl TO xtrole; publicadminfalse625r12591695500stdjrnl_stdjrnl_id_seqSEQUENCExCREATE SEQUENCE stdjrnl_stdjrnl_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.stdjrnl_stdjrnl_id_seq; publicadminfalse8625v'00stdjrnl_stdjrnl_id_seqSEQUENCE OWNED BYCALTER SEQUENCE stdjrnl_stdjrnl_id_seq OWNED BY stdjrnl.stdjrnl_id; publicadminfalse626w'00stdjrnl_stdjrnl_id_seq SEQUENCE SET>SELECT pg_catalog.setval('stdjrnl_stdjrnl_id_seq', 30, true); publicadminfalse626x'00stdjrnl_stdjrnl_id_seqACLREVOKE ALL ON SEQUENCE stdjrnl_stdjrnl_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE stdjrnl_stdjrnl_id_seq FROM admin; GRANT ALL ON SEQUENCE stdjrnl_stdjrnl_id_seq TO admin; GRANT ALL ON SEQUENCE stdjrnl_stdjrnl_id_seq TO xtrole; publicadminfalse626s12591695502 stdjrnlgrpTABLECREATE TABLE stdjrnlgrp ( stdjrnlgrp_id integer NOT NULL, stdjrnlgrp_name text NOT NULL, stdjrnlgrp_descrip text, CONSTRAINT stdjrnlgrp_stdjrnlgrp_name_check CHECK ((stdjrnlgrp_name <> ''::text)) ); DROP TABLE public.stdjrnlgrp; publicadminfalse65538y'00TABLE stdjrnlgrpCOMMENTECOMMENT ON TABLE stdjrnlgrp IS 'Standard Journal Group information'; publicadminfalse627z'00 stdjrnlgrpACLREVOKE ALL ON TABLE stdjrnlgrp FROM PUBLIC; REVOKE ALL ON TABLE stdjrnlgrp FROM admin; GRANT ALL ON TABLE stdjrnlgrp TO admin; GRANT ALL ON TABLE stdjrnlgrp TO xtrole; publicadminfalse627t12591695508stdjrnlgrp_stdjrnlgrp_id_seqSEQUENCE~CREATE SEQUENCE stdjrnlgrp_stdjrnlgrp_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 3DROP SEQUENCE public.stdjrnlgrp_stdjrnlgrp_id_seq; publicadminfalse6278{'00stdjrnlgrp_stdjrnlgrp_id_seqSEQUENCE OWNED BYOALTER SEQUENCE stdjrnlgrp_stdjrnlgrp_id_seq OWNED BY stdjrnlgrp.stdjrnlgrp_id; publicadminfalse628|'00stdjrnlgrp_stdjrnlgrp_id_seq SEQUENCE SETDSELECT pg_catalog.setval('stdjrnlgrp_stdjrnlgrp_id_seq', 12, true); publicadminfalse628}'00stdjrnlgrp_stdjrnlgrp_id_seqACLREVOKE ALL ON SEQUENCE stdjrnlgrp_stdjrnlgrp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE stdjrnlgrp_stdjrnlgrp_id_seq FROM admin; GRANT ALL ON SEQUENCE stdjrnlgrp_stdjrnlgrp_id_seq TO admin; GRANT ALL ON SEQUENCE stdjrnlgrp_stdjrnlgrp_id_seq TO xtrole; publicadminfalse628u12591695510stdjrnlgrpitemTABLE%CREATE TABLE stdjrnlgrpitem ( stdjrnlgrpitem_id integer NOT NULL, stdjrnlgrpitem_stdjrnl_id integer, stdjrnlgrpitem_toapply integer, stdjrnlgrpitem_applied integer, stdjrnlgrpitem_effective date, stdjrnlgrpitem_expires date, stdjrnlgrpitem_stdjrnlgrp_id integer ); "DROP TABLE public.stdjrnlgrpitem; publicadminfalse8~'00TABLE stdjrnlgrpitemCOMMENTNCOMMENT ON TABLE stdjrnlgrpitem IS 'Standard Journal Group Item information'; publicadminfalse629'00stdjrnlgrpitemACLREVOKE ALL ON TABLE stdjrnlgrpitem FROM PUBLIC; REVOKE ALL ON TABLE stdjrnlgrpitem FROM admin; GRANT ALL ON TABLE stdjrnlgrpitem TO admin; GRANT ALL ON TABLE stdjrnlgrpitem TO xtrole; publicadminfalse629v12591695513$stdjrnlgrpitem_stdjrnlgrpitem_id_seqSEQUENCECREATE SEQUENCE stdjrnlgrpitem_stdjrnlgrpitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; ;DROP SEQUENCE public.stdjrnlgrpitem_stdjrnlgrpitem_id_seq; publicadminfalse8629'00$stdjrnlgrpitem_stdjrnlgrpitem_id_seqSEQUENCE OWNED BY_ALTER SEQUENCE stdjrnlgrpitem_stdjrnlgrpitem_id_seq OWNED BY stdjrnlgrpitem.stdjrnlgrpitem_id; publicadminfalse630'00$stdjrnlgrpitem_stdjrnlgrpitem_id_seq SEQUENCE SETLSELECT pg_catalog.setval('stdjrnlgrpitem_stdjrnlgrpitem_id_seq', 18, true); publicadminfalse630'00$stdjrnlgrpitem_stdjrnlgrpitem_id_seqACLREVOKE ALL ON SEQUENCE stdjrnlgrpitem_stdjrnlgrpitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE stdjrnlgrpitem_stdjrnlgrpitem_id_seq FROM admin; GRANT ALL ON SEQUENCE stdjrnlgrpitem_stdjrnlgrpitem_id_seq TO admin; GRANT ALL ON SEQUENCE stdjrnlgrpitem_stdjrnlgrpitem_id_seq TO xtrole; publicadminfalse630w12591695515 stdjrnlitemTABLECREATE TABLE stdjrnlitem ( stdjrnlitem_id integer NOT NULL, stdjrnlitem_stdjrnl_id integer NOT NULL, stdjrnlitem_accnt_id integer NOT NULL, stdjrnlitem_amount numeric(20,2) NOT NULL, stdjrnlitem_notes text ); DROP TABLE public.stdjrnlitem; publicadminfalse8'00TABLE stdjrnlitemCOMMENTECOMMENT ON TABLE stdjrnlitem IS 'Standard Journal Item information'; publicadminfalse631'00 stdjrnlitemACLREVOKE ALL ON TABLE stdjrnlitem FROM PUBLIC; REVOKE ALL ON TABLE stdjrnlitem FROM admin; GRANT ALL ON TABLE stdjrnlitem TO admin; GRANT ALL ON TABLE stdjrnlitem TO xtrole; publicadminfalse631x12591695521stdjrnlitem_stdjrnlitem_id_seqSEQUENCECREATE SEQUENCE stdjrnlitem_stdjrnlitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 5DROP SEQUENCE public.stdjrnlitem_stdjrnlitem_id_seq; publicadminfalse8631'00stdjrnlitem_stdjrnlitem_id_seqSEQUENCE OWNED BYSALTER SEQUENCE stdjrnlitem_stdjrnlitem_id_seq OWNED BY stdjrnlitem.stdjrnlitem_id; publicadminfalse632'00stdjrnlitem_stdjrnlitem_id_seq SEQUENCE SETFSELECT pg_catalog.setval('stdjrnlitem_stdjrnlitem_id_seq', 28, true); publicadminfalse632'00stdjrnlitem_stdjrnlitem_id_seqACLREVOKE ALL ON SEQUENCE stdjrnlitem_stdjrnlitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE stdjrnlitem_stdjrnlitem_id_seq FROM admin; GRANT ALL ON SEQUENCE stdjrnlitem_stdjrnlitem_id_seq TO admin; GRANT ALL ON SEQUENCE stdjrnlitem_stdjrnlitem_id_seq TO xtrole; publicadminfalse632y12591695523subaccntTABLECREATE TABLE subaccnt ( subaccnt_id integer NOT NULL, subaccnt_number text NOT NULL, subaccnt_descrip text, CONSTRAINT subaccnt_subaccnt_number_check CHECK ((subaccnt_number <> ''::text)) ); DROP TABLE public.subaccnt; publicadminfalse65578'00TABLE subaccntCOMMENT7COMMENT ON TABLE subaccnt IS 'Subaccount information'; publicadminfalse633'00subaccntACLREVOKE ALL ON TABLE subaccnt FROM PUBLIC; REVOKE ALL ON TABLE subaccnt FROM admin; GRANT ALL ON TABLE subaccnt TO admin; GRANT ALL ON TABLE subaccnt TO xtrole; publicadminfalse633z12591695529subaccnt_subaccnt_id_seqSEQUENCEzCREATE SEQUENCE subaccnt_subaccnt_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.subaccnt_subaccnt_id_seq; publicadminfalse8633'00subaccnt_subaccnt_id_seqSEQUENCE OWNED BYGALTER SEQUENCE subaccnt_subaccnt_id_seq OWNED BY subaccnt.subaccnt_id; publicadminfalse634'00subaccnt_subaccnt_id_seq SEQUENCE SET?SELECT pg_catalog.setval('subaccnt_subaccnt_id_seq', 1, true); publicadminfalse634'00subaccnt_subaccnt_id_seqACLREVOKE ALL ON SEQUENCE subaccnt_subaccnt_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE subaccnt_subaccnt_id_seq FROM admin; GRANT ALL ON SEQUENCE subaccnt_subaccnt_id_seq TO admin; GRANT ALL ON SEQUENCE subaccnt_subaccnt_id_seq TO xtrole; publicadminfalse634{12591695531 subaccnttypeTABLECREATE TABLE subaccnttype ( subaccnttype_id integer NOT NULL, subaccnttype_accnt_type character(1) NOT NULL, subaccnttype_code text NOT NULL, subaccnttype_descrip text ); DROP TABLE public.subaccnttype; publicadminfalse8'00TABLE subaccnttypeCOMMENTDCOMMENT ON TABLE subaccnttype IS 'User defined Sub Account Types.'; publicadminfalse635'00 subaccnttypeACLREVOKE ALL ON TABLE subaccnttype FROM PUBLIC; REVOKE ALL ON TABLE subaccnttype FROM admin; GRANT ALL ON TABLE subaccnttype TO admin; GRANT ALL ON TABLE subaccnttype TO xtrole; publicadminfalse635|12591695537 subaccnttype_subaccnttype_id_seqSEQUENCECREATE SEQUENCE subaccnttype_subaccnttype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 7DROP SEQUENCE public.subaccnttype_subaccnttype_id_seq; publicadminfalse8635'00 subaccnttype_subaccnttype_id_seqSEQUENCE OWNED BYWALTER SEQUENCE subaccnttype_subaccnttype_id_seq OWNED BY subaccnttype.subaccnttype_id; publicadminfalse636'00 subaccnttype_subaccnttype_id_seq SEQUENCE SETHSELECT pg_catalog.setval('subaccnttype_subaccnttype_id_seq', 19, true); publicadminfalse636'00 subaccnttype_subaccnttype_id_seqACL REVOKE ALL ON SEQUENCE subaccnttype_subaccnttype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE subaccnttype_subaccnttype_id_seq FROM admin; GRANT ALL ON SEQUENCE subaccnttype_subaccnttype_id_seq TO admin; GRANT ALL ON SEQUENCE subaccnttype_subaccnttype_id_seq TO xtrole; publicadminfalse636}12591695539tax_tax_id_seqSEQUENCEpCREATE SEQUENCE tax_tax_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; %DROP SEQUENCE public.tax_tax_id_seq; publicadminfalse8'00tax_tax_id_seq SEQUENCE SET6SELECT pg_catalog.setval('tax_tax_id_seq', 13, true); publicadminfalse637'00tax_tax_id_seqACLREVOKE ALL ON SEQUENCE tax_tax_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE tax_tax_id_seq FROM admin; GRANT ALL ON SEQUENCE tax_tax_id_seq TO admin; GRANT ALL ON SEQUENCE tax_tax_id_seq TO xtrole; publicadminfalse637~12591695541taxassTABLECREATE TABLE taxass ( taxass_id integer NOT NULL, taxass_taxzone_id integer, taxass_taxtype_id integer, taxass_tax_id integer NOT NULL ); DROP TABLE public.taxass; publicadminfalse8'00 TABLE taxassCOMMENTCOMMENT ON TABLE taxass IS 'The tax assignment table associates different tax zones and tax types to a given set of tax codes.'; publicadminfalse638'00COLUMN taxass.taxass_taxzone_idCOMMENTjCOMMENT ON COLUMN taxass.taxass_taxzone_id IS 'The id of the tax zone. If NULL any tax zone will apply.'; publicadminfalse638'00COLUMN taxass.taxass_taxtype_idCOMMENTjCOMMENT ON COLUMN taxass.taxass_taxtype_id IS 'The id of the tax type. If NULL any tax type will apply.'; publicadminfalse638'00COLUMN taxass.taxass_tax_idCOMMENTECOMMENT ON COLUMN taxass.taxass_tax_id IS 'The id of the tax code.'; publicadminfalse638'00taxassACLREVOKE ALL ON TABLE taxass FROM PUBLIC; REVOKE ALL ON TABLE taxass FROM admin; GRANT ALL ON TABLE taxass TO admin; GRANT ALL ON TABLE taxass TO xtrole; publicadminfalse63812591695544taxass_taxass_id_seqSEQUENCEvCREATE SEQUENCE taxass_taxass_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.taxass_taxass_id_seq; publicadminfalse8638'00taxass_taxass_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE taxass_taxass_id_seq OWNED BY taxass.taxass_id; publicadminfalse639'00taxass_taxass_id_seq SEQUENCE SET<SELECT pg_catalog.setval('taxass_taxass_id_seq', 1, false); publicadminfalse639'00taxass_taxass_id_seqACLREVOKE ALL ON SEQUENCE taxass_taxass_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE taxass_taxass_id_seq FROM admin; GRANT ALL ON SEQUENCE taxass_taxass_id_seq TO admin; GRANT ALL ON SEQUENCE taxass_taxass_id_seq TO xtrole; publicadminfalse63912591695546taxauth_taxauth_id_seqSEQUENCExCREATE SEQUENCE taxauth_taxauth_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.taxauth_taxauth_id_seq; publicadminfalse8210'00taxauth_taxauth_id_seqSEQUENCE OWNED BYCALTER SEQUENCE taxauth_taxauth_id_seq OWNED BY taxauth.taxauth_id; publicadminfalse640'00taxauth_taxauth_id_seq SEQUENCE SET=SELECT pg_catalog.setval('taxauth_taxauth_id_seq', 1, true); publicadminfalse640'00taxauth_taxauth_id_seqACLREVOKE ALL ON SEQUENCE taxauth_taxauth_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE taxauth_taxauth_id_seq FROM admin; GRANT ALL ON SEQUENCE taxauth_taxauth_id_seq TO admin; GRANT ALL ON SEQUENCE taxauth_taxauth_id_seq TO xtrole; publicadminfalse64012591695548taxclassTABLECREATE TABLE taxclass ( taxclass_id integer NOT NULL, taxclass_code text NOT NULL, taxclass_descrip text, taxclass_sequence integer, CONSTRAINT taxclass_taxclass_code_check CHECK ((taxclass_code <> ''::text)) ); DROP TABLE public.taxclass; publicadminfalse65618'00TABLE taxclassCOMMENT6COMMENT ON TABLE taxclass IS 'Tax class information'; publicadminfalse641'00COLUMN taxclass.taxclass_idCOMMENT9COMMENT ON COLUMN taxclass.taxclass_id IS 'Primary key'; publicadminfalse641'00COLUMN taxclass.taxclass_codeCOMMENT4COMMENT ON COLUMN taxclass.taxclass_code IS 'Code'; publicadminfalse641'00 COLUMN taxclass.taxclass_descripCOMMENT>COMMENT ON COLUMN taxclass.taxclass_descrip IS 'Description'; publicadminfalse641'00!COLUMN taxclass.taxclass_sequenceCOMMENTBCOMMENT ON COLUMN taxclass.taxclass_sequence IS 'Group sequence'; publicadminfalse641'00taxclassACLREVOKE ALL ON TABLE taxclass FROM PUBLIC; REVOKE ALL ON TABLE taxclass FROM admin; GRANT ALL ON TABLE taxclass TO admin; GRANT ALL ON TABLE taxclass TO xtrole; publicadminfalse64112591695555taxclass_taxclass_id_seqSEQUENCEzCREATE SEQUENCE taxclass_taxclass_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.taxclass_taxclass_id_seq; publicadminfalse8641'00taxclass_taxclass_id_seqSEQUENCE OWNED BYGALTER SEQUENCE taxclass_taxclass_id_seq OWNED BY taxclass.taxclass_id; publicadminfalse642'00taxclass_taxclass_id_seq SEQUENCE SET?SELECT pg_catalog.setval('taxclass_taxclass_id_seq', 3, true); publicadminfalse642'00taxclass_taxclass_id_seqACLREVOKE ALL ON SEQUENCE taxclass_taxclass_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE taxclass_taxclass_id_seq FROM admin; GRANT ALL ON SEQUENCE taxclass_taxclass_id_seq TO admin; GRANT ALL ON SEQUENCE taxclass_taxclass_id_seq TO xtrole; publicadminfalse64212591695557taxrateTABLE CREATE TABLE taxrate ( taxrate_id integer NOT NULL, taxrate_tax_id integer NOT NULL, taxrate_percent numeric(10,6) NOT NULL, taxrate_curr_id integer, taxrate_amount numeric(16,2) NOT NULL, taxrate_effective date, taxrate_expires date ); DROP TABLE public.taxrate; publicadminfalse8'00 TABLE taxrateCOMMENT*COMMENT ON TABLE taxrate IS 'Tax rates.'; publicadminfalse643'00COLUMN taxrate.taxrate_idCOMMENT8COMMENT ON COLUMN taxrate.taxrate_id IS 'Primary key.'; publicadminfalse643'00COLUMN taxrate.taxrate_tax_idCOMMENTNCOMMENT ON COLUMN taxrate.taxrate_tax_id IS 'The id of the parent tax code.'; publicadminfalse643'00COLUMN taxrate.taxrate_percentCOMMENTECOMMENT ON COLUMN taxrate.taxrate_percent IS 'Tax rate percentage.'; publicadminfalse643'00COLUMN taxrate.taxrate_curr_idCOMMENTYCOMMENT ON COLUMN taxrate.taxrate_curr_id IS 'The currency id of the flat rate amount.'; publicadminfalse643'00COLUMN taxrate.taxrate_amountCOMMENTECOMMENT ON COLUMN taxrate.taxrate_amount IS 'Flat tax rate amount.'; publicadminfalse643'00 COLUMN taxrate.taxrate_effectiveCOMMENTpCOMMENT ON COLUMN taxrate.taxrate_effective IS 'The effective date of the tax rate. NULL value means always.'; publicadminfalse643'00COLUMN taxrate.taxrate_expiresCOMMENTjCOMMENT ON COLUMN taxrate.taxrate_expires IS 'The expire date of the tax rate. NULL value means never.'; publicadminfalse643'00taxrateACLREVOKE ALL ON TABLE taxrate FROM PUBLIC; REVOKE ALL ON TABLE taxrate FROM admin; GRANT ALL ON TABLE taxrate TO admin; GRANT ALL ON TABLE taxrate TO xtrole; publicadminfalse64312591695560taxrate_taxrate_id_seqSEQUENCExCREATE SEQUENCE taxrate_taxrate_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.taxrate_taxrate_id_seq; publicadminfalse8643'00taxrate_taxrate_id_seqSEQUENCE OWNED BYCALTER SEQUENCE taxrate_taxrate_id_seq OWNED BY taxrate.taxrate_id; publicadminfalse644'00taxrate_taxrate_id_seq SEQUENCE SET=SELECT pg_catalog.setval('taxrate_taxrate_id_seq', 1, true); publicadminfalse644'00taxrate_taxrate_id_seqACLREVOKE ALL ON SEQUENCE taxrate_taxrate_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE taxrate_taxrate_id_seq FROM admin; GRANT ALL ON SEQUENCE taxrate_taxrate_id_seq TO admin; GRANT ALL ON SEQUENCE taxrate_taxrate_id_seq TO xtrole; publicadminfalse64412591695562taxreg_taxreg_id_seqSEQUENCEvCREATE SEQUENCE taxreg_taxreg_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.taxreg_taxreg_id_seq; publicadminfalse8211'00taxreg_taxreg_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE taxreg_taxreg_id_seq OWNED BY taxreg.taxreg_id; publicadminfalse645'00taxreg_taxreg_id_seq SEQUENCE SET<SELECT pg_catalog.setval('taxreg_taxreg_id_seq', 1, false); publicadminfalse645'00taxreg_taxreg_id_seqACLREVOKE ALL ON SEQUENCE taxreg_taxreg_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE taxreg_taxreg_id_seq FROM admin; GRANT ALL ON SEQUENCE taxreg_taxreg_id_seq TO admin; GRANT ALL ON SEQUENCE taxreg_taxreg_id_seq TO xtrole; publicadminfalse64512591695564taxtype_taxtype_id_seqSEQUENCExCREATE SEQUENCE taxtype_taxtype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.taxtype_taxtype_id_seq; publicadminfalse8170'00taxtype_taxtype_id_seqSEQUENCE OWNED BYCALTER SEQUENCE taxtype_taxtype_id_seq OWNED BY taxtype.taxtype_id; publicadminfalse646'00taxtype_taxtype_id_seq SEQUENCE SET=SELECT pg_catalog.setval('taxtype_taxtype_id_seq', 3, true); publicadminfalse646'00taxtype_taxtype_id_seqACLREVOKE ALL ON SEQUENCE taxtype_taxtype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE taxtype_taxtype_id_seq FROM admin; GRANT ALL ON SEQUENCE taxtype_taxtype_id_seq TO admin; GRANT ALL ON SEQUENCE taxtype_taxtype_id_seq TO xtrole; publicadminfalse64612591695566taxzone_taxzone_id_seqSEQUENCExCREATE SEQUENCE taxzone_taxzone_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.taxzone_taxzone_id_seq; publicadminfalse8166'00taxzone_taxzone_id_seqSEQUENCE OWNED BYCALTER SEQUENCE taxzone_taxzone_id_seq OWNED BY taxzone.taxzone_id; publicadminfalse647'00taxzone_taxzone_id_seq SEQUENCE SET=SELECT pg_catalog.setval('taxzone_taxzone_id_seq', 2, true); publicadminfalse647'00taxzone_taxzone_id_seqACLREVOKE ALL ON SEQUENCE taxzone_taxzone_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE taxzone_taxzone_id_seq FROM admin; GRANT ALL ON SEQUENCE taxzone_taxzone_id_seq TO admin; GRANT ALL ON SEQUENCE taxzone_taxzone_id_seq TO xtrole; publicadminfalse64712591695568terms_terms_id_seqSEQUENCE|CREATE SEQUENCE terms_terms_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; )DROP SEQUENCE public.terms_terms_id_seq; publicadminfalse8'00terms_terms_id_seq SEQUENCE SET:SELECT pg_catalog.setval('terms_terms_id_seq', 43, true); publicadminfalse648'00terms_terms_id_seqACLREVOKE ALL ON SEQUENCE terms_terms_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE terms_terms_id_seq FROM admin; GRANT ALL ON SEQUENCE terms_terms_id_seq TO admin; GRANT ALL ON SEQUENCE terms_terms_id_seq TO xtrole; publicadminfalse64812591695570todoitem_todoitem_id_seqSEQUENCEzCREATE SEQUENCE todoitem_todoitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.todoitem_todoitem_id_seq; publicadminfalse8183'00todoitem_todoitem_id_seqSEQUENCE OWNED BYGALTER SEQUENCE todoitem_todoitem_id_seq OWNED BY todoitem.todoitem_id; publicadminfalse649'00todoitem_todoitem_id_seq SEQUENCE SET@SELECT pg_catalog.setval('todoitem_todoitem_id_seq', 1, false); publicadminfalse649'00todoitem_todoitem_id_seqACLREVOKE ALL ON SEQUENCE todoitem_todoitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE todoitem_todoitem_id_seq FROM admin; GRANT ALL ON SEQUENCE todoitem_todoitem_id_seq TO admin; GRANT ALL ON SEQUENCE todoitem_todoitem_id_seq TO xtrole; publicadminfalse64912591695572trgthistTABLECREATE TABLE trgthist ( trgthist_src_cntct_id integer NOT NULL, trgthist_trgt_cntct_id integer NOT NULL, trgthist_col text NOT NULL, trgthist_value text NOT NULL ); DROP TABLE public.trgthist; publicadminfalse8'00trgthistACLREVOKE ALL ON TABLE trgthist FROM PUBLIC; REVOKE ALL ON TABLE trgthist FROM admin; GRANT ALL ON TABLE trgthist TO admin; GRANT ALL ON TABLE trgthist TO xtrole; publicadminfalse65012591695578trialbalTABLEaCREATE TABLE trialbal ( trialbal_id integer NOT NULL, trialbal_period_id integer, trialbal_accnt_id integer, trialbal_beginning numeric(20,2), trialbal_ending numeric(20,2), trialbal_credits numeric(20,2), trialbal_debits numeric(20,2), trialbal_dirty boolean, trialbal_yearend numeric(20,2) DEFAULT 0.00 NOT NULL ); DROP TABLE public.trialbal; publicadminfalse65648'00TABLE trialbalCOMMENT:COMMENT ON TABLE trialbal IS 'Trial Balance information'; publicadminfalse651'00trialbalACLREVOKE ALL ON TABLE trialbal FROM PUBLIC; REVOKE ALL ON TABLE trialbal FROM admin; GRANT ALL ON TABLE trialbal TO admin; GRANT ALL ON TABLE trialbal TO xtrole; publicadminfalse65112591695582trialbal_trialbal_id_seqSEQUENCEzCREATE SEQUENCE trialbal_trialbal_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.trialbal_trialbal_id_seq; publicadminfalse8651'00trialbal_trialbal_id_seqSEQUENCE OWNED BYGALTER SEQUENCE trialbal_trialbal_id_seq OWNED BY trialbal.trialbal_id; publicadminfalse652'00trialbal_trialbal_id_seq SEQUENCE SETBSELECT pg_catalog.setval('trialbal_trialbal_id_seq', 9147, true); publicadminfalse652'00trialbal_trialbal_id_seqACLREVOKE ALL ON SEQUENCE trialbal_trialbal_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE trialbal_trialbal_id_seq FROM admin; GRANT ALL ON SEQUENCE trialbal_trialbal_id_seq TO admin; GRANT ALL ON SEQUENCE trialbal_trialbal_id_seq TO xtrole; publicadminfalse65212591695584uom_uom_id_seqSEQUENCEpCREATE SEQUENCE uom_uom_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; %DROP SEQUENCE public.uom_uom_id_seq; publicadminfalse8171'00uom_uom_id_seqSEQUENCE OWNED BY3ALTER SEQUENCE uom_uom_id_seq OWNED BY uom.uom_id; publicadminfalse653'00uom_uom_id_seq SEQUENCE SET5SELECT pg_catalog.setval('uom_uom_id_seq', 8, true); publicadminfalse653'00uom_uom_id_seqACLREVOKE ALL ON SEQUENCE uom_uom_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE uom_uom_id_seq FROM admin; GRANT ALL ON SEQUENCE uom_uom_id_seq TO admin; GRANT ALL ON SEQUENCE uom_uom_id_seq TO xtrole; publicadminfalse65312591695586uomconvTABLE!CREATE TABLE uomconv ( uomconv_id integer NOT NULL, uomconv_from_uom_id integer NOT NULL, uomconv_from_value numeric(20,10) NOT NULL, uomconv_to_uom_id integer NOT NULL, uomconv_to_value numeric(20,10) NOT NULL, uomconv_fractional boolean DEFAULT false NOT NULL ); DROP TABLE public.uomconv; publicadminfalse65668'00 TABLE uomconvCOMMENThCOMMENT ON TABLE uomconv IS 'UOM conversion information. From Unit to To Unit with a value per ratio.'; publicadminfalse654'00uomconvACLREVOKE ALL ON TABLE uomconv FROM PUBLIC; REVOKE ALL ON TABLE uomconv FROM admin; GRANT ALL ON TABLE uomconv TO admin; GRANT ALL ON TABLE uomconv TO xtrole; publicadminfalse65412591695590uomconv_uomconv_id_seqSEQUENCExCREATE SEQUENCE uomconv_uomconv_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.uomconv_uomconv_id_seq; publicadminfalse8654'00uomconv_uomconv_id_seqSEQUENCE OWNED BYCALTER SEQUENCE uomconv_uomconv_id_seq OWNED BY uomconv.uomconv_id; publicadminfalse655'00uomconv_uomconv_id_seq SEQUENCE SET=SELECT pg_catalog.setval('uomconv_uomconv_id_seq', 1, true); publicadminfalse655'00uomconv_uomconv_id_seqACLREVOKE ALL ON SEQUENCE uomconv_uomconv_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE uomconv_uomconv_id_seq FROM admin; GRANT ALL ON SEQUENCE uomconv_uomconv_id_seq TO admin; GRANT ALL ON SEQUENCE uomconv_uomconv_id_seq TO xtrole; publicadminfalse65512591695592uomtypeTABLECREATE TABLE uomtype ( uomtype_id integer NOT NULL, uomtype_name text NOT NULL, uomtype_descrip text, uomtype_multiple boolean DEFAULT false NOT NULL, CONSTRAINT uomtype_uomtype_name_check CHECK ((uomtype_name <> ''::text)) ); DROP TABLE public.uomtype; publicadminfalse656865698'00 TABLE uomtypeCOMMENT0COMMENT ON TABLE uomtype IS 'UOM Type values.'; publicadminfalse656'00uomtypeACLREVOKE ALL ON TABLE uomtype FROM PUBLIC; REVOKE ALL ON TABLE uomtype FROM admin; GRANT ALL ON TABLE uomtype TO admin; GRANT ALL ON TABLE uomtype TO xtrole; publicadminfalse65612591695599uomtype_uomtype_id_seqSEQUENCExCREATE SEQUENCE uomtype_uomtype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.uomtype_uomtype_id_seq; publicadminfalse8656'00uomtype_uomtype_id_seqSEQUENCE OWNED BYCALTER SEQUENCE uomtype_uomtype_id_seq OWNED BY uomtype.uomtype_id; publicadminfalse657'00uomtype_uomtype_id_seq SEQUENCE SET=SELECT pg_catalog.setval('uomtype_uomtype_id_seq', 4, true); publicadminfalse657'00uomtype_uomtype_id_seqACLREVOKE ALL ON SEQUENCE uomtype_uomtype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE uomtype_uomtype_id_seq FROM admin; GRANT ALL ON SEQUENCE uomtype_uomtype_id_seq TO admin; GRANT ALL ON SEQUENCE uomtype_uomtype_id_seq TO xtrole; publicadminfalse65712591695601urlinfo_url_id_seqSEQUENCEtCREATE SEQUENCE urlinfo_url_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; )DROP SEQUENCE public.urlinfo_url_id_seq; publicadminfalse8191'00urlinfo_url_id_seqSEQUENCE OWNED BY;ALTER SEQUENCE urlinfo_url_id_seq OWNED BY urlinfo.url_id; publicadminfalse658'00urlinfo_url_id_seq SEQUENCE SET:SELECT pg_catalog.setval('urlinfo_url_id_seq', 1, false); publicadminfalse658'00urlinfo_url_id_seqACLREVOKE ALL ON SEQUENCE urlinfo_url_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE urlinfo_url_id_seq FROM admin; GRANT ALL ON SEQUENCE urlinfo_url_id_seq TO admin; GRANT ALL ON SEQUENCE urlinfo_url_id_seq TO xtrole; publicadminfalse65812591695603usrprefTABLECREATE TABLE usrpref ( usrpref_id integer DEFAULT nextval(('usrpref_usrpref_id_seq'::text)::regclass) NOT NULL, usrpref_name text, usrpref_value text, usrpref_username text ); DROP TABLE public.usrpref; publicadminfalse65708'00 TABLE usrprefCOMMENT<COMMENT ON TABLE usrpref IS 'User Preferences information'; publicadminfalse659'00usrprefACLREVOKE ALL ON TABLE usrpref FROM PUBLIC; REVOKE ALL ON TABLE usrpref FROM admin; GRANT ALL ON TABLE usrpref TO admin; GRANT ALL ON TABLE usrpref TO xtrole; publicadminfalse659S12592009471usrVIEWCREATE VIEW usr AS SELECT (pg_user.usesysid)::integer AS usr_id, (pg_user.usename)::text AS usr_username, COALESCE((SELECT usrpref.usrpref_value FROM usrpref WHERE ((usrpref.usrpref_username = (pg_user.usename)::text) AND (usrpref.usrpref_name = 'propername'::text))), ''::text) AS usr_propername, NULL::text AS usr_passwd, COALESCE((SELECT (usrpref.usrpref_value)::integer AS usrpref_value FROM usrpref WHERE ((usrpref.usrpref_username = (pg_user.usename)::text) AND (usrpref.usrpref_name = 'locale_id'::text))), COALESCE((SELECT locale.locale_id FROM locale WHERE (lower(locale.locale_code) = 'default'::text) LIMIT 1), (SELECT locale.locale_id FROM locale ORDER BY locale.locale_id LIMIT 1))) AS usr_locale_id, COALESCE((SELECT usrpref.usrpref_value FROM usrpref WHERE ((usrpref.usrpref_username = (pg_user.usename)::text) AND (usrpref.usrpref_name = 'initials'::text))), ''::text) AS usr_initials, COALESCE((SELECT CASE WHEN (usrpref.usrpref_value = 't'::text) THEN true ELSE false END AS "case" FROM usrpref WHERE ((usrpref.usrpref_username = (pg_user.usename)::text) AND (usrpref.usrpref_name = 'agent'::text))), false) AS usr_agent, COALESCE((SELECT CASE WHEN (usrpref.usrpref_value = 't'::text) THEN true ELSE false END AS "case" FROM usrpref WHERE ((usrpref.usrpref_username = (pg_user.usename)::text) AND (usrpref.usrpref_name = 'active'::text))), usercanlogin((pg_user.usename)::text)) AS usr_active, COALESCE((SELECT usrpref.usrpref_value FROM usrpref WHERE ((usrpref.usrpref_username = (pg_user.usename)::text) AND (usrpref.usrpref_name = 'email'::text))), ''::text) AS usr_email, COALESCE((SELECT usrpref.usrpref_value FROM usrpref WHERE ((usrpref.usrpref_username = (pg_user.usename)::text) AND (usrpref.usrpref_name = 'window'::text))), ''::text) AS usr_window FROM pg_user; DROP VIEW public.usr; publicadminfalse55478'00usrACLREVOKE ALL ON TABLE usr FROM PUBLIC; REVOKE ALL ON TABLE usr FROM admin; GRANT ALL ON TABLE usr TO admin; GRANT ALL ON TABLE usr TO xtrole; publicadminfalse85112591695615usr_bakTABLE]CREATE TABLE usr_bak ( usr_id integer DEFAULT nextval(('usr_usr_id_seq'::text)::regclass) NOT NULL, usr_username text NOT NULL, usr_propername text, usr_passwd text, usr_locale_id integer NOT NULL, usr_initials text, usr_agent boolean NOT NULL, usr_active boolean NOT NULL, usr_email text, usr_window text ); DROP TABLE public.usr_bak; publicadminfalse65718'00 TABLE usr_bakCOMMENT0COMMENT ON TABLE usr_bak IS 'User information'; publicadminfalse660'00usr_bakACLREVOKE ALL ON TABLE usr_bak FROM PUBLIC; REVOKE ALL ON TABLE usr_bak FROM admin; GRANT ALL ON TABLE usr_bak TO admin; GRANT ALL ON TABLE usr_bak TO xtrole; publicadminfalse66012591695622usr_usr_id_seqSEQUENCExCREATE SEQUENCE usr_usr_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; %DROP SEQUENCE public.usr_usr_id_seq; publicadminfalse8'00usr_usr_id_seq SEQUENCE SET5SELECT pg_catalog.setval('usr_usr_id_seq', 9, true); publicadminfalse661'00usr_usr_id_seqACLREVOKE ALL ON SEQUENCE usr_usr_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE usr_usr_id_seq FROM admin; GRANT ALL ON SEQUENCE usr_usr_id_seq TO admin; GRANT ALL ON SEQUENCE usr_usr_id_seq TO xtrole; publicadminfalse66112591695624usrgrp_usrgrp_id_seqSEQUENCEvCREATE SEQUENCE usrgrp_usrgrp_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.usrgrp_usrgrp_id_seq; publicadminfalse8573'00usrgrp_usrgrp_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE usrgrp_usrgrp_id_seq OWNED BY usrgrp.usrgrp_id; publicadminfalse662'00usrgrp_usrgrp_id_seq SEQUENCE SET;SELECT pg_catalog.setval('usrgrp_usrgrp_id_seq', 1, true); publicadminfalse662'00usrgrp_usrgrp_id_seqACLREVOKE ALL ON SEQUENCE usrgrp_usrgrp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE usrgrp_usrgrp_id_seq FROM admin; GRANT ALL ON SEQUENCE usrgrp_usrgrp_id_seq TO admin; GRANT ALL ON SEQUENCE usrgrp_usrgrp_id_seq TO xtrole; publicadminfalse66212591695626usrpref_usrpref_id_seqSEQUENCECREATE SEQUENCE usrpref_usrpref_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.usrpref_usrpref_id_seq; publicadminfalse8'00usrpref_usrpref_id_seq SEQUENCE SET?SELECT pg_catalog.setval('usrpref_usrpref_id_seq', 421, true); publicadminfalse663'00usrpref_usrpref_id_seqACLREVOKE ALL ON SEQUENCE usrpref_usrpref_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE usrpref_usrpref_id_seq FROM admin; GRANT ALL ON SEQUENCE usrpref_usrpref_id_seq TO admin; GRANT ALL ON SEQUENCE usrpref_usrpref_id_seq TO xtrole; publicadminfalse66312591695628usrpriv_usrpriv_id_seqSEQUENCECREATE SEQUENCE usrpriv_usrpriv_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; -DROP SEQUENCE public.usrpriv_usrpriv_id_seq; publicadminfalse8'00usrpriv_usrpriv_id_seq SEQUENCE SET@SELECT pg_catalog.setval('usrpriv_usrpriv_id_seq', 2879, true); publicadminfalse664'00usrpriv_usrpriv_id_seqACLREVOKE ALL ON SEQUENCE usrpriv_usrpriv_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE usrpriv_usrpriv_id_seq FROM admin; GRANT ALL ON SEQUENCE usrpriv_usrpriv_id_seq TO admin; GRANT ALL ON SEQUENCE usrpriv_usrpriv_id_seq TO xtrole; publicadminfalse664\12592009511vendVIEWCREATE VIEW vend AS SELECT vendinfo.vend_id, vendinfo.vend_name, m.addr_line1 AS vend_address1, m.addr_line2 AS vend_address2, m.addr_line3 AS vend_address3, m.addr_city AS vend_city, m.addr_state AS vend_state, m.addr_postalcode AS vend_zip, btrim(((c1.cntct_first_name || ' '::text) || c1.cntct_last_name)) AS vend_contact1, c1.cntct_phone AS vend_phone1, btrim(((c2.cntct_first_name || ' '::text) || c2.cntct_last_name)) AS vend_contact2, c2.cntct_phone AS vend_phone2, vendinfo.vend_lastpurchdate, vendinfo.vend_active, vendinfo.vend_po, vendinfo.vend_comments, vendinfo.vend_pocomments, vendinfo.vend_number, c1.cntct_fax AS vend_fax1, c2.cntct_fax AS vend_fax2, c1.cntct_email AS vend_email1, c2.cntct_email AS vend_email2, vendinfo.vend_1099, vendinfo.vend_exported, vendinfo.vend_fobsource, vendinfo.vend_fob, vendinfo.vend_terms_id, vendinfo.vend_shipvia, vendinfo.vend_vendtype_id, vendinfo.vend_qualified, vendinfo.vend_ediemail, vendinfo.vend_ediemailbody, vendinfo.vend_edisubject, vendinfo.vend_edifilename, vendinfo.vend_accntnum, vendinfo.vend_emailpodelivery, vendinfo.vend_restrictpurch, vendinfo.vend_edicc, m.addr_country AS vend_country, vendinfo.vend_curr_id, vendinfo.vend_taxzone_id FROM (((vendinfo LEFT JOIN cntct c1 ON ((vendinfo.vend_cntct1_id = c1.cntct_id))) LEFT JOIN addr m ON ((vendinfo.vend_addr_id = m.addr_id))) LEFT JOIN cntct c2 ON ((vendinfo.vend_cntct2_id = c2.cntct_id))); DROP VIEW public.vend; publicadminfalse55568'00vendACLREVOKE ALL ON TABLE vend FROM PUBLIC; REVOKE ALL ON TABLE vend FROM admin; GRANT ALL ON TABLE vend TO admin; GRANT SELECT,INSERT,REFERENCES,DELETE,TRIGGER,UPDATE ON TABLE vend TO xtrole; publicadminfalse86012591695630vend_vend_id_seqSEQUENCEzCREATE SEQUENCE vend_vend_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; 'DROP SEQUENCE public.vend_vend_id_seq; publicadminfalse8'00vend_vend_id_seq SEQUENCE SET8SELECT pg_catalog.setval('vend_vend_id_seq', 78, true); publicadminfalse665'00vend_vend_id_seqACLREVOKE ALL ON SEQUENCE vend_vend_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE vend_vend_id_seq FROM admin; GRANT ALL ON SEQUENCE vend_vend_id_seq TO admin; GRANT ALL ON SEQUENCE vend_vend_id_seq TO xtrole; publicadminfalse665]12592009516vendaddrVIEWCREATE VIEW vendaddr AS SELECT vendaddrinfo.vendaddr_id, vendaddrinfo.vendaddr_vend_id, vendaddrinfo.vendaddr_code, vendaddrinfo.vendaddr_name, m.addr_line1 AS vendaddr_address1, m.addr_line2 AS vendaddr_address2, m.addr_line3 AS vendaddr_address3, btrim(((c1.cntct_first_name || ' '::text) || c1.cntct_last_name)) AS vendaddr_contact1, c1.cntct_phone AS vendaddr_phone1, c1.cntct_fax AS vendaddr_fax1, m.addr_city AS vendaddr_city, m.addr_state AS vendaddr_state, m.addr_postalcode AS vendaddr_zipcode, m.addr_country AS vendaddr_country FROM ((vendaddrinfo LEFT JOIN cntct c1 ON ((vendaddrinfo.vendaddr_cntct_id = c1.cntct_id))) LEFT JOIN addr m ON ((vendaddrinfo.vendaddr_addr_id = m.addr_id))); DROP VIEW public.vendaddr; publicadminfalse55578'00vendaddrACLREVOKE ALL ON TABLE vendaddr FROM PUBLIC; REVOKE ALL ON TABLE vendaddr FROM admin; GRANT ALL ON TABLE vendaddr TO admin; GRANT ALL ON TABLE vendaddr TO xtrole; publicadminfalse86112591695632vendaddr_vendaddr_id_seqSEQUENCECREATE SEQUENCE vendaddr_vendaddr_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; /DROP SEQUENCE public.vendaddr_vendaddr_id_seq; publicadminfalse8'00vendaddr_vendaddr_id_seq SEQUENCE SET@SELECT pg_catalog.setval('vendaddr_vendaddr_id_seq', 33, true); publicadminfalse666'00vendaddr_vendaddr_id_seqACLREVOKE ALL ON SEQUENCE vendaddr_vendaddr_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE vendaddr_vendaddr_id_seq FROM admin; GRANT ALL ON SEQUENCE vendaddr_vendaddr_id_seq TO admin; GRANT ALL ON SEQUENCE vendaddr_vendaddr_id_seq TO xtrole; publicadminfalse66612591695634vendtype_vendtype_id_seqSEQUENCEzCREATE SEQUENCE vendtype_vendtype_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.vendtype_vendtype_id_seq; publicadminfalse8258'00vendtype_vendtype_id_seqSEQUENCE OWNED BYGALTER SEQUENCE vendtype_vendtype_id_seq OWNED BY vendtype.vendtype_id; publicadminfalse667'00vendtype_vendtype_id_seq SEQUENCE SET@SELECT pg_catalog.setval('vendtype_vendtype_id_seq', 20, true); publicadminfalse667'00vendtype_vendtype_id_seqACLREVOKE ALL ON SEQUENCE vendtype_vendtype_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE vendtype_vendtype_id_seq FROM admin; GRANT ALL ON SEQUENCE vendtype_vendtype_id_seq TO admin; GRANT ALL ON SEQUENCE vendtype_vendtype_id_seq TO xtrole; publicadminfalse66712591695636vodistTABLECREATE TABLE vodist ( vodist_id integer DEFAULT nextval(('"vodist_vodist_id_seq"'::text)::regclass) NOT NULL, vodist_poitem_id integer, vodist_vohead_id integer, vodist_costelem_id integer, vodist_accnt_id integer, vodist_amount numeric(18,6), vodist_qty numeric(18,6), vodist_expcat_id integer DEFAULT (-1), vodist_tax_id integer DEFAULT (-1), vodist_discountable boolean DEFAULT true NOT NULL, vodist_notes text ); DROP TABLE public.vodist; publicadminfalse65726573657465758'00 TABLE vodistCOMMENT?COMMENT ON TABLE vodist IS 'Voucher distribution information'; publicadminfalse668'00vodistACLREVOKE ALL ON TABLE vodist FROM PUBLIC; REVOKE ALL ON TABLE vodist FROM admin; GRANT ALL ON TABLE vodist TO admin; GRANT ALL ON TABLE vodist TO xtrole; publicadminfalse66812591695646vodist_vodist_id_seqSEQUENCEvCREATE SEQUENCE vodist_vodist_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.vodist_vodist_id_seq; publicadminfalse8'00vodist_vodist_id_seq SEQUENCE SET=SELECT pg_catalog.setval('vodist_vodist_id_seq', 117, true); publicadminfalse669'00vodist_vodist_id_seqACLREVOKE ALL ON SEQUENCE vodist_vodist_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE vodist_vodist_id_seq FROM admin; GRANT ALL ON SEQUENCE vodist_vodist_id_seq TO admin; GRANT ALL ON SEQUENCE vodist_vodist_id_seq TO xtrole; publicadminfalse66912591695648voheadTABLE<CREATE TABLE vohead ( vohead_id integer DEFAULT nextval(('vohead_vohead_id_seq'::text)::regclass) NOT NULL, vohead_number text NOT NULL, vohead_pohead_id integer, vohead_posted boolean, vohead_duedate date, vohead_invcnumber text, vohead_amount numeric(16,4), vohead_docdate date, vohead_1099 boolean, vohead_distdate date, vohead_reference text, vohead_terms_id integer, vohead_vend_id integer, vohead_curr_id integer DEFAULT basecurrid(), vohead_adjtaxtype_id integer, vohead_freighttaxtype_id integer, vohead_gldistdate date, vohead_misc boolean, vohead_taxzone_id integer, vohead_taxtype_id integer, vohead_notes text, vohead_recurring_vohead_id integer, CONSTRAINT vohead_vohead_number_check CHECK ((vohead_number <> ''::text)) ); DROP TABLE public.vohead; publicadminfalse6576657765788'00 TABLE voheadCOMMENT9COMMENT ON TABLE vohead IS 'Voucher header information'; publicadminfalse670'00voheadACLREVOKE ALL ON TABLE vohead FROM PUBLIC; REVOKE ALL ON TABLE vohead FROM admin; GRANT ALL ON TABLE vohead TO admin; GRANT ALL ON TABLE vohead TO xtrole; publicadminfalse67012591695656vohead_vohead_id_seqSEQUENCEvCREATE SEQUENCE vohead_vohead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.vohead_vohead_id_seq; publicadminfalse8'00vohead_vohead_id_seq SEQUENCE SET=SELECT pg_catalog.setval('vohead_vohead_id_seq', 174, true); publicadminfalse671'00vohead_vohead_id_seqACLREVOKE ALL ON SEQUENCE vohead_vohead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE vohead_vohead_id_seq FROM admin; GRANT ALL ON SEQUENCE vohead_vohead_id_seq TO admin; GRANT ALL ON SEQUENCE vohead_vohead_id_seq TO xtrole; publicadminfalse67112591695658 voheadtaxTABLE/CREATE TABLE voheadtax ( ) INHERITS (taxhist); DROP TABLE public.voheadtax; publicadminfalse65798253'00 voheadtaxACLREVOKE ALL ON TABLE voheadtax FROM PUBLIC; REVOKE ALL ON TABLE voheadtax FROM admin; GRANT ALL ON TABLE voheadtax TO admin; GRANT ALL ON TABLE voheadtax TO xtrole; publicadminfalse67212591695664voitemTABLE>CREATE TABLE voitem ( voitem_id integer DEFAULT nextval(('"voitem_voitem_id_seq"'::text)::regclass) NOT NULL, voitem_vohead_id integer, voitem_poitem_id integer, voitem_close boolean, voitem_qty numeric(18,6), voitem_freight numeric(16,4) DEFAULT 0.0 NOT NULL, voitem_taxtype_id integer ); DROP TABLE public.voitem; publicadminfalse658065818'00 TABLE voitemCOMMENT<COMMENT ON TABLE voitem IS 'Voucher Line Item information'; publicadminfalse673'00voitemACLREVOKE ALL ON TABLE voitem FROM PUBLIC; REVOKE ALL ON TABLE voitem FROM admin; GRANT ALL ON TABLE voitem TO admin; GRANT ALL ON TABLE voitem TO xtrole; publicadminfalse67312591695669voitem_voitem_id_seqSEQUENCEvCREATE SEQUENCE voitem_voitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; +DROP SEQUENCE public.voitem_voitem_id_seq; publicadminfalse8'00voitem_voitem_id_seq SEQUENCE SET=SELECT pg_catalog.setval('voitem_voitem_id_seq', 110, true); publicadminfalse674'00voitem_voitem_id_seqACLREVOKE ALL ON SEQUENCE voitem_voitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE voitem_voitem_id_seq FROM admin; GRANT ALL ON SEQUENCE voitem_voitem_id_seq TO admin; GRANT ALL ON SEQUENCE voitem_voitem_id_seq TO xtrole; publicadminfalse67412591695671 voitemtaxTABLE/CREATE TABLE voitemtax ( ) INHERITS (taxhist); DROP TABLE public.voitemtax; publicadminfalse65828253'00 voitemtaxACLREVOKE ALL ON TABLE voitemtax FROM PUBLIC; REVOKE ALL ON TABLE voitemtax FROM admin; GRANT ALL ON TABLE voitemtax TO admin; GRANT ALL ON TABLE voitemtax TO xtrole; publicadminfalse675^12592009521warehousVIEWdCREATE VIEW warehous AS SELECT whsinfo.warehous_id, whsinfo.warehous_code, whsinfo.warehous_descrip, m.addr_line1 AS warehous_addr1, m.addr_line2 AS warehous_addr2, m.addr_line3 AS warehous_addr3, m.addr_city AS warehous_addr4, m.addr_city AS warehous_city, m.addr_state AS warehous_state, m.addr_postalcode AS warehous_zip, m.addr_country AS warehous_country, whsinfo.warehous_fob, whsinfo.warehous_active, whsinfo.warehous_sitetype_id, whsinfo.warehous_counttag_prefix, whsinfo.warehous_counttag_number, whsinfo.warehous_bol_prefix, whsinfo.warehous_bol_number, whsinfo.warehous_shipping, whsinfo.warehous_useslips, whsinfo.warehous_usezones, whsinfo.warehous_aislesize, whsinfo.warehous_aislealpha, whsinfo.warehous_racksize, whsinfo.warehous_rackalpha, whsinfo.warehous_binsize, whsinfo.warehous_binalpha, whsinfo.warehous_locationsize, whsinfo.warehous_locationalpha, whsinfo.warehous_enforcearbl, whsinfo.warehous_default_accnt_id, whsinfo.warehous_shipping_commission FROM ((whsinfo LEFT JOIN cntct c1 ON ((whsinfo.warehous_cntct_id = c1.cntct_id))) LEFT JOIN addr m ON ((whsinfo.warehous_addr_id = m.addr_id))); DROP VIEW public.warehous; publicadminfalse55588'00warehousACLREVOKE ALL ON TABLE warehous FROM PUBLIC; REVOKE ALL ON TABLE warehous FROM admin; GRANT ALL ON TABLE warehous TO admin; GRANT ALL ON TABLE warehous TO xtrole; publicadminfalse86212591695682warehous_warehous_id_seqSEQUENCECREATE SEQUENCE warehous_warehous_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; /DROP SEQUENCE public.warehous_warehous_id_seq; publicadminfalse8'00warehous_warehous_id_seq SEQUENCE SET@SELECT pg_catalog.setval('warehous_warehous_id_seq', 35, true); publicadminfalse676'00warehous_warehous_id_seqACLREVOKE ALL ON SEQUENCE warehous_warehous_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE warehous_warehous_id_seq FROM admin; GRANT ALL ON SEQUENCE warehous_warehous_id_seq TO admin; GRANT ALL ON SEQUENCE warehous_warehous_id_seq TO xtrole; publicadminfalse67612591695684whsezone_whsezone_id_seqSEQUENCEzCREATE SEQUENCE whsezone_whsezone_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.whsezone_whsezone_id_seq; publicadminfalse8238(00whsezone_whsezone_id_seqSEQUENCE OWNED BYGALTER SEQUENCE whsezone_whsezone_id_seq OWNED BY whsezone.whsezone_id; publicadminfalse677(00whsezone_whsezone_id_seq SEQUENCE SET?SELECT pg_catalog.setval('whsezone_whsezone_id_seq', 6, true); publicadminfalse677(00whsezone_whsezone_id_seqACLREVOKE ALL ON SEQUENCE whsezone_whsezone_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE whsezone_whsezone_id_seq FROM admin; GRANT ALL ON SEQUENCE whsezone_whsezone_id_seq TO admin; GRANT ALL ON SEQUENCE whsezone_whsezone_id_seq TO xtrole; publicadminfalse67712591695686 wo_wo_id_seqSEQUENCEvCREATE SEQUENCE wo_wo_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; #DROP SEQUENCE public.wo_wo_id_seq; publicadminfalse8(00 wo_wo_id_seq SEQUENCE SET5SELECT pg_catalog.setval('wo_wo_id_seq', 445, true); publicadminfalse678(00 wo_wo_id_seqACLREVOKE ALL ON SEQUENCE wo_wo_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE wo_wo_id_seq FROM admin; GRANT ALL ON SEQUENCE wo_wo_id_seq TO admin; GRANT ALL ON SEQUENCE wo_wo_id_seq TO xtrole; publicadminfalse67812591695688womatl_womatl_id_seqSEQUENCE~CREATE SEQUENCE womatl_womatl_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; +DROP SEQUENCE public.womatl_womatl_id_seq; publicadminfalse8(00womatl_womatl_id_seq SEQUENCE SET>SELECT pg_catalog.setval('womatl_womatl_id_seq', 1292, true); publicadminfalse679(00womatl_womatl_id_seqACLREVOKE ALL ON SEQUENCE womatl_womatl_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE womatl_womatl_id_seq FROM admin; GRANT ALL ON SEQUENCE womatl_womatl_id_seq TO admin; GRANT ALL ON SEQUENCE womatl_womatl_id_seq TO xtrole; publicadminfalse67912591695690 womatlpostTABLECREATE TABLE womatlpost ( womatlpost_id integer NOT NULL, womatlpost_womatl_id integer, womatlpost_invhist_id integer ); DROP TABLE public.womatlpost; publicadminfalse8(00TABLE womatlpostCOMMENTtCOMMENT ON TABLE womatlpost IS 'Table to tie work order to work order material transactions for efficient queries'; publicadminfalse680(00 womatlpostACLREVOKE ALL ON TABLE womatlpost FROM PUBLIC; REVOKE ALL ON TABLE womatlpost FROM admin; GRANT ALL ON TABLE womatlpost TO admin; GRANT ALL ON TABLE womatlpost TO xtrole; publicadminfalse68012591695693womatlpost_womatlpost_id_seqSEQUENCE~CREATE SEQUENCE womatlpost_womatlpost_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 3DROP SEQUENCE public.womatlpost_womatlpost_id_seq; publicadminfalse8680 (00womatlpost_womatlpost_id_seqSEQUENCE OWNED BYOALTER SEQUENCE womatlpost_womatlpost_id_seq OWNED BY womatlpost.womatlpost_id; publicadminfalse681 (00womatlpost_womatlpost_id_seq SEQUENCE SETDSELECT pg_catalog.setval('womatlpost_womatlpost_id_seq', 1, false); publicadminfalse681 (00womatlpost_womatlpost_id_seqACLREVOKE ALL ON SEQUENCE womatlpost_womatlpost_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE womatlpost_womatlpost_id_seq FROM admin; GRANT ALL ON SEQUENCE womatlpost_womatlpost_id_seq TO admin; GRANT ALL ON SEQUENCE womatlpost_womatlpost_id_seq TO xtrole; publicadminfalse68112591695695 womatlvarTABLECREATE TABLE womatlvar ( womatlvar_id integer DEFAULT nextval(('"womatlvar_womatlvar_id_seq"'::text)::regclass) NOT NULL, womatlvar_number integer, womatlvar_subnumber integer, womatlvar_posted date, womatlvar_parent_itemsite_id integer, womatlvar_component_itemsite_id integer, womatlvar_qtyord numeric(18,6), womatlvar_qtyrcv numeric(18,6), womatlvar_qtyiss numeric(18,6), womatlvar_qtyper numeric(18,6), womatlvar_scrap numeric(18,6), womatlvar_wipscrap numeric(18,6), womatlvar_bomitem_id integer, womatlvar_ref text, womatlvar_notes text, womatlvar_qtyfxd numeric(20,8) DEFAULT 0 NOT NULL ); DROP TABLE public.womatlvar; publicadminfalse658465858 (00TABLE womatlvarCOMMENTWCOMMENT ON TABLE womatlvar IS 'Work Order Material Requirements Variance information'; publicadminfalse682 (00!COLUMN womatlvar.womatlvar_qtyfxdCOMMENTOCOMMENT ON COLUMN womatlvar.womatlvar_qtyfxd IS 'The fixed quantity required'; publicadminfalse682(00 womatlvarACLREVOKE ALL ON TABLE womatlvar FROM PUBLIC; REVOKE ALL ON TABLE womatlvar FROM admin; GRANT ALL ON TABLE womatlvar TO admin; GRANT ALL ON TABLE womatlvar TO xtrole; publicadminfalse68212591695703womatlvar_womatlvar_id_seqSEQUENCECREATE SEQUENCE womatlvar_womatlvar_id_seq START WITH 1 INCREMENT BY 1 MAXVALUE 2147483647 NO MINVALUE CACHE 1; 1DROP SEQUENCE public.womatlvar_womatlvar_id_seq; publicadminfalse8(00womatlvar_womatlvar_id_seq SEQUENCE SETBSELECT pg_catalog.setval('womatlvar_womatlvar_id_seq', 44, true); publicadminfalse683(00womatlvar_womatlvar_id_seqACLREVOKE ALL ON SEQUENCE womatlvar_womatlvar_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE womatlvar_womatlvar_id_seq FROM admin; GRANT ALL ON SEQUENCE womatlvar_womatlvar_id_seq TO admin; GRANT ALL ON SEQUENCE womatlvar_womatlvar_id_seq TO xtrole; publicadminfalse68312591695705xcalitem_xcalitem_id_seqSEQUENCEzCREATE SEQUENCE xcalitem_xcalitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE public.xcalitem_xcalitem_id_seq; publicadminfalse8(00xcalitem_xcalitem_id_seq SEQUENCE SETASELECT pg_catalog.setval('xcalitem_xcalitem_id_seq', 145, true); publicadminfalse684(00xcalitem_xcalitem_id_seqACLREVOKE ALL ON SEQUENCE xcalitem_xcalitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE xcalitem_xcalitem_id_seq FROM admin; GRANT ALL ON SEQUENCE xcalitem_xcalitem_id_seq TO admin; GRANT ALL ON SEQUENCE xcalitem_xcalitem_id_seq TO xtrole; publicadminfalse68412591695707xsltmapTABLE"CREATE TABLE xsltmap ( xsltmap_id integer NOT NULL, xsltmap_name text NOT NULL, xsltmap_doctype text NOT NULL, xsltmap_system text NOT NULL, xsltmap_import text NOT NULL, xsltmap_export text DEFAULT ''::text NOT NULL, CONSTRAINT xsltmap_check CHECK (((xsltmap_doctype <> ''::text) OR (xsltmap_system <> ''::text))), CONSTRAINT xsltmap_xsltmap_importexport_check CHECK (((xsltmap_import <> ''::text) OR (xsltmap_export <> ''::text))), CONSTRAINT xsltmap_xsltmap_name_check CHECK ((xsltmap_name <> ''::text)) ); DROP TABLE public.xsltmap; publicadminfalse65876588658965908(00 TABLE xsltmapCOMMENT^COMMENT ON TABLE xsltmap IS 'Mapping of XML System identifiers to XSLT transformation files'; publicadminfalse685(00xsltmapACLREVOKE ALL ON TABLE xsltmap FROM PUBLIC; REVOKE ALL ON TABLE xsltmap FROM admin; GRANT ALL ON TABLE xsltmap TO admin; GRANT ALL ON TABLE xsltmap TO xtrole; publicadminfalse68512591695717xsltmap_xsltmap_id_seqSEQUENCExCREATE SEQUENCE xsltmap_xsltmap_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE public.xsltmap_xsltmap_id_seq; publicadminfalse8685(00xsltmap_xsltmap_id_seqSEQUENCE OWNED BYCALTER SEQUENCE xsltmap_xsltmap_id_seq OWNED BY xsltmap.xsltmap_id; publicadminfalse686(00xsltmap_xsltmap_id_seq SEQUENCE SET=SELECT pg_catalog.setval('xsltmap_xsltmap_id_seq', 1, true); publicadminfalse686(00xsltmap_xsltmap_id_seqACLREVOKE ALL ON SEQUENCE xsltmap_xsltmap_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE xsltmap_xsltmap_id_seq FROM admin; GRANT ALL ON SEQUENCE xsltmap_xsltmap_id_seq TO admin; GRANT ALL ON SEQUENCE xsltmap_xsltmap_id_seq TO xtrole; publicadminfalse68612591695719 yearperiodTABLECREATE TABLE yearperiod ( yearperiod_id integer NOT NULL, yearperiod_start date NOT NULL, yearperiod_end date NOT NULL, yearperiod_closed boolean DEFAULT false NOT NULL ); DROP TABLE public.yearperiod; publicadminfalse65928(00TABLE yearperiodCOMMENTFCOMMENT ON TABLE yearperiod IS 'Accounting Year Periods information'; publicadminfalse687(00 yearperiodACLREVOKE ALL ON TABLE yearperiod FROM PUBLIC; REVOKE ALL ON TABLE yearperiod FROM admin; GRANT ALL ON TABLE yearperiod TO admin; GRANT ALL ON TABLE yearperiod TO xtrole; publicadminfalse68712591695723yearperiod_yearperiod_id_seqSEQUENCE~CREATE SEQUENCE yearperiod_yearperiod_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 3DROP SEQUENCE public.yearperiod_yearperiod_id_seq; publicadminfalse8687(00yearperiod_yearperiod_id_seqSEQUENCE OWNED BYOALTER SEQUENCE yearperiod_yearperiod_id_seq OWNED BY yearperiod.yearperiod_id; publicadminfalse688(00yearperiod_yearperiod_id_seq SEQUENCE SETCSELECT pg_catalog.setval('yearperiod_yearperiod_id_seq', 9, true); publicadminfalse688(00yearperiod_yearperiod_id_seqACLREVOKE ALL ON SEQUENCE yearperiod_yearperiod_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE yearperiod_yearperiod_id_seq FROM admin; GRANT ALL ON SEQUENCE yearperiod_yearperiod_id_seq TO admin; GRANT ALL ON SEQUENCE yearperiod_yearperiod_id_seq TO xtrole; publicadminfalse68812591695725pkgcmdTABLEuCREATE TABLE pkgcmd ( cmd_id integer DEFAULT nextval('public.cmd_cmd_id_seq'::regclass) ) INHERITS (public.cmd); DROP TABLE te.pkgcmd; teadminfalse65939259(00pkgcmdACLREVOKE ALL ON TABLE pkgcmd FROM PUBLIC; REVOKE ALL ON TABLE pkgcmd FROM admin; GRANT ALL ON TABLE pkgcmd TO admin; GRANT ALL ON TABLE pkgcmd TO xtrole; teadminfalse68912591695732 pkgcmdargTABLECREATE TABLE pkgcmdarg ( cmdarg_id integer DEFAULT nextval('public.cmdarg_cmdarg_id_seq'::regclass) ) INHERITS (public.cmdarg); DROP TABLE te.pkgcmdarg; teadminfalse65949262(00 pkgcmdargACLREVOKE ALL ON TABLE pkgcmdarg FROM PUBLIC; REVOKE ALL ON TABLE pkgcmdarg FROM admin; GRANT ALL ON TABLE pkgcmdarg TO admin; GRANT ALL ON TABLE pkgcmdarg TO xtrole; teadminfalse69012591695739pkgimageTABLECREATE TABLE pkgimage ( image_id integer DEFAULT nextval('public.image_image_id_seq'::regclass) ) INHERITS (public.image); DROP TABLE te.pkgimage; teadminfalse65959194(00pkgimageACLREVOKE ALL ON TABLE pkgimage FROM PUBLIC; REVOKE ALL ON TABLE pkgimage FROM admin; GRANT ALL ON TABLE pkgimage TO admin; GRANT ALL ON TABLE pkgimage TO xtrole; teadminfalse69112591695746 pkgmetasqlTABLECREATE TABLE pkgmetasql ( metasql_id integer DEFAULT nextval('public.metasql_metasql_id_seq'::regclass) ) INHERITS (public.metasql); DROP TABLE te.pkgmetasql; teadminfalse659665979267 (00 pkgmetasqlACLREVOKE ALL ON TABLE pkgmetasql FROM PUBLIC; REVOKE ALL ON TABLE pkgmetasql FROM admin; GRANT ALL ON TABLE pkgmetasql TO admin; GRANT ALL ON TABLE pkgmetasql TO xtrole; teadminfalse69212591695754pkgprivTABLEzCREATE TABLE pkgpriv ( priv_id integer DEFAULT nextval('public.priv_priv_id_seq'::regclass) ) INHERITS (public.priv); DROP TABLE te.pkgpriv; teadminfalse65989270!(00pkgprivACLREVOKE ALL ON TABLE pkgpriv FROM PUBLIC; REVOKE ALL ON TABLE pkgpriv FROM admin; GRANT ALL ON TABLE pkgpriv TO admin; GRANT ALL ON TABLE pkgpriv TO xtrole; teadminfalse69312591695761 pkgreportTABLECREATE TABLE pkgreport ( report_id integer DEFAULT nextval('public.report_report_id_seq'::regclass) ) INHERITS (public.report); DROP TABLE te.pkgreport; teadminfalse65999273"(00 pkgreportACLREVOKE ALL ON TABLE pkgreport FROM PUBLIC; REVOKE ALL ON TABLE pkgreport FROM admin; GRANT ALL ON TABLE pkgreport TO admin; GRANT ALL ON TABLE pkgreport TO xtrole; teadminfalse69412591695768 pkgscriptTABLECREATE TABLE pkgscript ( script_id integer DEFAULT nextval('public.script_script_id_seq'::regclass) ) INHERITS (public.script); DROP TABLE te.pkgscript; teadminfalse660066019276#(00 pkgscriptACLREVOKE ALL ON TABLE pkgscript FROM PUBLIC; REVOKE ALL ON TABLE pkgscript FROM admin; GRANT ALL ON TABLE pkgscript TO admin; GRANT ALL ON TABLE pkgscript TO xtrole; teadminfalse69512591695776 pkguiformTABLECREATE TABLE pkguiform ( uiform_id integer DEFAULT nextval('public.uiform_uiform_id_seq'::regclass) ) INHERITS (public.uiform); DROP TABLE te.pkguiform; teadminfalse660266039279$(00 pkguiformACLREVOKE ALL ON TABLE pkguiform FROM PUBLIC; REVOKE ALL ON TABLE pkguiform FROM admin; GRANT ALL ON TABLE pkguiform TO admin; GRANT ALL ON TABLE pkguiform TO xtrole; teadminfalse69612591695784 tecustrateTABLECREATE TABLE tecustrate ( tecustrate_cust_id integer NOT NULL, tecustrate_rate numeric(16,4) NOT NULL, tecustrate_id integer NOT NULL, tecustrate_curr_id integer DEFAULT public.basecurrid() NOT NULL ); DROP TABLE te.tecustrate; teadminfalse66059%(00TABLE tecustrateCOMMENTQCOMMENT ON TABLE tecustrate IS 'Default Customer Billing rate for Time/Expense'; teadminfalse697&(00 tecustrateACLREVOKE ALL ON TABLE tecustrate FROM PUBLIC; REVOKE ALL ON TABLE tecustrate FROM admin; GRANT ALL ON TABLE tecustrate TO admin; GRANT ALL ON TABLE tecustrate TO xtrole; teadminfalse69712591695789tecustrate_tecustrate_id_seqSEQUENCE~CREATE SEQUENCE tecustrate_tecustrate_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; /DROP SEQUENCE te.tecustrate_tecustrate_id_seq; teadminfalse6979'(00tecustrate_tecustrate_id_seqSEQUENCE OWNED BYOALTER SEQUENCE tecustrate_tecustrate_id_seq OWNED BY tecustrate.tecustrate_id; teadminfalse698((00tecustrate_tecustrate_id_seq SEQUENCE SETDSELECT pg_catalog.setval('tecustrate_tecustrate_id_seq', 1, false); teadminfalse69812591695791teempTABLE|CREATE TABLE teemp ( teemp_id integer NOT NULL, teemp_emp_id integer, teemp_contractor boolean DEFAULT false ); DROP TABLE te.teemp; teadminfalse66079)(00teempACLREVOKE ALL ON TABLE teemp FROM PUBLIC; REVOKE ALL ON TABLE teemp FROM admin; GRANT ALL ON TABLE teemp TO admin; GRANT ALL ON TABLE teemp TO xtrole; teadminfalse69912591695795teemp_teemp_id_seqSEQUENCEtCREATE SEQUENCE teemp_teemp_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; %DROP SEQUENCE te.teemp_teemp_id_seq; teadminfalse9699*(00teemp_teemp_id_seqSEQUENCE OWNED BY;ALTER SEQUENCE teemp_teemp_id_seq OWNED BY teemp.teemp_id; teadminfalse700+(00teemp_teemp_id_seq SEQUENCE SET:SELECT pg_catalog.setval('teemp_teemp_id_seq', 1, false); teadminfalse700,(00teemp_teemp_id_seqACLREVOKE ALL ON SEQUENCE teemp_teemp_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE teemp_teemp_id_seq FROM admin; GRANT ALL ON SEQUENCE teemp_teemp_id_seq TO admin; GRANT ALL ON SEQUENCE teemp_teemp_id_seq TO xtrole; teadminfalse70012591695797teexpTABLEoCREATE TABLE teexp ( teexp_id integer NOT NULL, teexp_expcat_id integer, teexp_accnt_id integer ); DROP TABLE te.teexp; teadminfalse9-(00 TABLE teexpCOMMENT*COMMENT ON TABLE teexp IS 'Expense/Item'; teadminfalse701.(00teexpACLREVOKE ALL ON TABLE teexp FROM PUBLIC; REVOKE ALL ON TABLE teexp FROM admin; GRANT ALL ON TABLE teexp TO admin; GRANT ALL ON TABLE teexp TO xtrole; teadminfalse70112591695800 timesheet_seqSEQUENCErCREATE SEQUENCE timesheet_seq START WITH 1000 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; DROP SEQUENCE te.timesheet_seq; teadminfalse9/(00 timesheet_seq SEQUENCE SET8SELECT pg_catalog.setval('timesheet_seq', 1000, false); teadminfalse7020(00 timesheet_seqACLREVOKE ALL ON SEQUENCE timesheet_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE timesheet_seq FROM admin; GRANT ALL ON SEQUENCE timesheet_seq TO admin; GRANT ALL ON SEQUENCE timesheet_seq TO xtrole; teadminfalse70212591695802teheadTABLE.CREATE TABLE tehead ( tehead_id integer NOT NULL, tehead_number text DEFAULT nextval('timesheet_seq'::regclass), tehead_weekending date, tehead_lastupdated timestamp without time zone DEFAULT now() NOT NULL, tehead_notes text, tehead_status character(1) DEFAULT 'O'::bpchar NOT NULL, tehead_emp_id integer, tehead_warehous_id integer NOT NULL, tehead_username text DEFAULT "current_user"() NOT NULL, CONSTRAINT tehead_tehead_status_check CHECK ((tehead_status = ANY (ARRAY['O'::bpchar, 'A'::bpchar, 'C'::bpchar]))) ); DROP TABLE te.tehead; teadminfalse6608660966106611661391(00 TABLE teheadCOMMENT2COMMENT ON TABLE tehead IS 'time/expense header'; teadminfalse7032(00teheadACLREVOKE ALL ON TABLE tehead FROM PUBLIC; REVOKE ALL ON TABLE tehead FROM admin; GRANT ALL ON TABLE tehead TO admin; GRANT ALL ON TABLE tehead TO xtrole; teadminfalse70312591695816tehead_tehead_id_seqSEQUENCEvCREATE SEQUENCE tehead_tehead_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 'DROP SEQUENCE te.tehead_tehead_id_seq; teadminfalse97033(00tehead_tehead_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE tehead_tehead_id_seq OWNED BY tehead.tehead_id; teadminfalse7044(00tehead_tehead_id_seq SEQUENCE SET<SELECT pg_catalog.setval('tehead_tehead_id_seq', 1, false); teadminfalse7045(00tehead_tehead_id_seqACLREVOKE ALL ON SEQUENCE tehead_tehead_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE tehead_tehead_id_seq FROM admin; GRANT ALL ON SEQUENCE tehead_tehead_id_seq TO admin; GRANT ALL ON SEQUENCE tehead_tehead_id_seq TO xtrole; teadminfalse70412591695818teitemTABLECREATE TABLE teitem ( teitem_id integer NOT NULL, teitem_tehead_id integer, teitem_linenumber integer NOT NULL, teitem_type character(1) NOT NULL, teitem_workdate date, teitem_cust_id integer, teitem_vend_id integer, teitem_po text, teitem_item_id integer NOT NULL, teitem_qty numeric NOT NULL, teitem_rate numeric NOT NULL, teitem_total numeric NOT NULL, teitem_prjtask_id numeric, teitem_lastupdated timestamp without time zone DEFAULT ('now'::text)::timestamp(6) with time zone NOT NULL, teitem_billable boolean, teitem_prepaid boolean, teitem_notes text, teitem_posted boolean DEFAULT false, teitem_curr_id integer DEFAULT public.basecurrid() NOT NULL, teitem_uom_id integer, teitem_invcitem_id integer, teitem_vodist_id integer, teitem_postedvalue numeric DEFAULT 0 NOT NULL, teitem_empcost numeric ); DROP TABLE te.teitem; teadminfalse661466156616661796(00 TABLE teitemCOMMENT2COMMENT ON TABLE teitem IS 'time/expense detail'; teadminfalse7057(00COLUMN teitem.teitem_typeCOMMENT2COMMENT ON COLUMN teitem.teitem_type IS 'T or E'; teadminfalse7058(00COLUMN teitem.teitem_vend_idCOMMENT^COMMENT ON COLUMN teitem.teitem_vend_id IS 'future use - for payment of vendor for expenses'; teadminfalse7059(00COLUMN teitem.teitem_prepaidCOMMENTjCOMMENT ON COLUMN teitem.teitem_prepaid IS 'Used for expenses only. CC paid expenses would be prepaid.'; teadminfalse705:(00teitemACLREVOKE ALL ON TABLE teitem FROM PUBLIC; REVOKE ALL ON TABLE teitem FROM admin; GRANT ALL ON TABLE teitem TO admin; GRANT ALL ON TABLE teitem TO xtrole; teadminfalse70512591695828teitem_teitem_id_seqSEQUENCEvCREATE SEQUENCE teitem_teitem_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; 'DROP SEQUENCE te.teitem_teitem_id_seq; teadminfalse9705;(00teitem_teitem_id_seqSEQUENCE OWNED BY?ALTER SEQUENCE teitem_teitem_id_seq OWNED BY teitem.teitem_id; teadminfalse706<(00teitem_teitem_id_seq SEQUENCE SET<SELECT pg_catalog.setval('teitem_teitem_id_seq', 1, false); teadminfalse706=(00teitem_teitem_id_seqACLREVOKE ALL ON SEQUENCE teitem_teitem_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE teitem_teitem_id_seq FROM admin; GRANT ALL ON SEQUENCE teitem_teitem_id_seq TO admin; GRANT ALL ON SEQUENCE teitem_teitem_id_seq TO xtrole; teadminfalse70612591695830teprjTABLECREATE TABLE teprj ( teprj_id integer NOT NULL, teprj_prj_id integer, teprj_cust_id integer, teprj_rate numeric, teprj_curr_id integer ); DROP TABLE te.teprj; teadminfalse9>(00 TABLE teprjCOMMENT:COMMENT ON TABLE teprj IS 't/e information for projects'; teadminfalse707?(00teprjACLREVOKE ALL ON TABLE teprj FROM PUBLIC; REVOKE ALL ON TABLE teprj FROM admin; GRANT ALL ON TABLE teprj TO admin; GRANT ALL ON TABLE teprj TO xtrole; teadminfalse70712591695836teprj_teprj_id_seqSEQUENCEtCREATE SEQUENCE teprj_teprj_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; %DROP SEQUENCE te.teprj_teprj_id_seq; teadminfalse9707@(00teprj_teprj_id_seqSEQUENCE OWNED BY;ALTER SEQUENCE teprj_teprj_id_seq OWNED BY teprj.teprj_id; teadminfalse708A(00teprj_teprj_id_seq SEQUENCE SET:SELECT pg_catalog.setval('teprj_teprj_id_seq', 1, false); teadminfalse708B(00teprj_teprj_id_seqACLREVOKE ALL ON SEQUENCE teprj_teprj_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE teprj_teprj_id_seq FROM admin; GRANT ALL ON SEQUENCE teprj_teprj_id_seq TO admin; GRANT ALL ON SEQUENCE teprj_teprj_id_seq TO xtrole; teadminfalse70812591695838 teprjtaskTABLECREATE TABLE teprjtask ( teprjtask_id integer NOT NULL, teprjtask_cust_id integer, teprjtask_rate numeric, teprjtask_item_id integer, teprjtask_prjtask_id integer, teprjtask_curr_id integer DEFAULT public.basecurrid() ); DROP TABLE te.teprjtask; teadminfalse66219C(00TABLE teprjtaskCOMMENT;COMMENT ON TABLE teprjtask IS 't/e information for tasks'; teadminfalse709D(00 teprjtaskACLREVOKE ALL ON TABLE teprjtask FROM PUBLIC; REVOKE ALL ON TABLE teprjtask FROM admin; GRANT ALL ON TABLE teprjtask TO admin; GRANT ALL ON TABLE teprjtask TO xtrole; teadminfalse70912591695845teprjtask_teprjtask_id_seqSEQUENCE|CREATE SEQUENCE teprjtask_teprjtask_id_seq START WITH 1 INCREMENT BY 1 NO MAXVALUE NO MINVALUE CACHE 1; -DROP SEQUENCE te.teprjtask_teprjtask_id_seq; teadminfalse9709E(00teprjtask_teprjtask_id_seqSEQUENCE OWNED BYKALTER SEQUENCE teprjtask_teprjtask_id_seq OWNED BY teprjtask.teprjtask_id; teadminfalse710F(00teprjtask_teprjtask_id_seq SEQUENCE SETBSELECT pg_catalog.setval('teprjtask_teprjtask_id_seq', 1, false); teadminfalse710G(00teprjtask_teprjtask_id_seqACLREVOKE ALL ON SEQUENCE teprjtask_teprjtask_id_seq FROM PUBLIC; REVOKE ALL ON SEQUENCE teprjtask_teprjtask_id_seq FROM admin; GRANT ALL ON SEQUENCE teprjtask_teprjtask_id_seq TO admin; GRANT ALL ON SEQUENCE teprjtask_teprjtask_id_seq TO xtrole; teadminfalse71012591695847pkgcmdTABLEuCREATE TABLE pkgcmd ( cmd_id integer DEFAULT nextval('public.cmd_cmd_id_seq'::regclass) ) INHERITS (public.cmd); DROP TABLE xtdesktop.pkgcmd;  xtdesktopadminfalse662210259H(00pkgcmdACLREVOKE ALL ON TABLE pkgcmd FROM PUBLIC; REVOKE ALL ON TABLE pkgcmd FROM admin; GRANT ALL ON TABLE pkgcmd TO admin; GRANT ALL ON TABLE pkgcmd TO xtrole;  xtdesktopadminfalse71112591695855 pkgcmdargTABLECREATE TABLE pkgcmdarg ( cmdarg_id integer DEFAULT nextval('public.cmdarg_cmdarg_id_seq'::regclass) ) INHERITS (public.cmdarg); DROP TABLE xtdesktop.pkgcmdarg;  xtdesktopadminfalse662310262I(00 pkgcmdargACLREVOKE ALL ON TABLE pkgcmdarg FROM PUBLIC; REVOKE ALL ON TABLE pkgcmdarg FROM admin; GRANT ALL ON TABLE pkgcmdarg TO admin; GRANT ALL ON TABLE pkgcmdarg TO xtrole;  xtdesktopadminfalse71212591695862pkgimageTABLECREATE TABLE pkgimage ( image_id integer DEFAULT nextval('public.image_image_id_seq'::regclass) ) INHERITS (public.image); DROP TABLE xtdesktop.pkgimage;  xtdesktopadminfalse662410194J(00pkgimageACLREVOKE ALL ON TABLE pkgimage FROM PUBLIC; REVOKE ALL ON TABLE pkgimage FROM admin; GRANT ALL ON TABLE pkgimage TO admin; GRANT ALL ON TABLE pkgimage TO xtrole;  xtdesktopadminfalse71312591695869 pkgmetasqlTABLECREATE TABLE pkgmetasql ( metasql_id integer DEFAULT nextval('public.metasql_metasql_id_seq'::regclass) ) INHERITS (public.metasql); !DROP TABLE xtdesktop.pkgmetasql;  xtdesktopadminfalse6625662610267K(00 pkgmetasqlACLREVOKE ALL ON TABLE pkgmetasql FROM PUBLIC; REVOKE ALL ON TABLE pkgmetasql FROM admin; GRANT ALL ON TABLE pkgmetasql TO admin; GRANT ALL ON TABLE pkgmetasql TO xtrole;  xtdesktopadminfalse71412591695877pkgprivTABLEzCREATE TABLE pkgpriv ( priv_id integer DEFAULT nextval('public.priv_priv_id_seq'::regclass) ) INHERITS (public.priv); DROP TABLE xtdesktop.pkgpriv;  xtdesktopadminfalse662710270L(00pkgprivACLREVOKE ALL ON TABLE pkgpriv FROM PUBLIC; REVOKE ALL ON TABLE pkgpriv FROM admin; GRANT ALL ON TABLE pkgpriv TO admin; GRANT ALL ON TABLE pkgpriv TO xtrole;  xtdesktopadminfalse71512591695884 pkgreportTABLECREATE TABLE pkgreport ( report_id integer DEFAULT nextval('public.report_report_id_seq'::regclass) ) INHERITS (public.report); DROP TABLE xtdesktop.pkgreport;  xtdesktopadminfalse662810273M(00 pkgreportACLREVOKE ALL ON TABLE pkgreport FROM PUBLIC; REVOKE ALL ON TABLE pkgreport FROM admin; GRANT ALL ON TABLE pkgreport TO admin; GRANT ALL ON TABLE pkgreport TO xtrole;  xtdesktopadminfalse71612591695891 pkgscriptTABLECREATE TABLE pkgscript ( script_id integer DEFAULT nextval('public.script_script_id_seq'::regclass) ) INHERITS (public.script); DROP TABLE xtdesktop.pkgscript;  xtdesktopadminfalse6629663010276N(00 pkgscriptACLREVOKE ALL ON TABLE pkgscript FROM PUBLIC; REVOKE ALL ON TABLE pkgscript FROM admin; GRANT ALL ON TABLE pkgscript TO admin; GRANT ALL ON TABLE pkgscript TO xtrole;  xtdesktopadminfalse71712591695899 pkguiformTABLECREATE TABLE pkguiform ( uiform_id integer DEFAULT nextval('public.uiform_uiform_id_seq'::regclass) ) INHERITS (public.uiform); DROP TABLE xtdesktop.pkguiform;  xtdesktopadminfalse6631663210279O(00 pkguiformACLREVOKE ALL ON TABLE pkguiform FROM PUBLIC; REVOKE ALL ON TABLE pkguiform FROM admin; GRANT ALL ON TABLE pkguiform TO admin; GRANT ALL ON TABLE pkguiform TO xtrole;  xtdesktopadminfalse718G26041696093addr_idDEFAULTYALTER TABLE addr ALTER COLUMN addr_id SET DEFAULT nextval('addr_addr_id_seq'::regclass); ;ALTER TABLE public.addr ALTER COLUMN addr_id DROP DEFAULT; publicadminfalse284184*26041696094alarm_idDEFAULT]ALTER TABLE alarm ALTER COLUMN alarm_id SET DEFAULT nextval('alarm_alarm_id_seq'::regclass); =ALTER TABLE public.alarm ALTER COLUMN alarm_id DROP DEFAULT; publicadminfalse286285+26041696095 apaccnt_idDEFAULTeALTER TABLE apaccnt ALTER COLUMN apaccnt_id SET DEFAULT nextval('apaccnt_apaccnt_id_seq'::regclass); AALTER TABLE public.apaccnt ALTER COLUMN apaccnt_id DROP DEFAULT; publicadminfalse288287,26041696096 apapply_idDEFAULTeALTER TABLE apapply ALTER COLUMN apapply_id SET DEFAULT nextval('apapply_apapply_id_seq'::regclass); AALTER TABLE public.apapply ALTER COLUMN apapply_id DROP DEFAULT; publicadminfalse290289.26041696097apcreditapply_idDEFAULT}ALTER TABLE apcreditapply ALTER COLUMN apcreditapply_id SET DEFAULT nextval('apcreditapply_apcreditapply_id_seq'::regclass); MALTER TABLE public.apcreditapply ALTER COLUMN apcreditapply_id DROP DEFAULT; publicadminfalse292291126041696098 apselect_idDEFAULTiALTER TABLE apselect ALTER COLUMN apselect_id SET DEFAULT nextval('apselect_apselect_id_seq'::regclass); CALTER TABLE public.apselect ALTER COLUMN apselect_id DROP DEFAULT; publicadminfalse297296526041696099 arapply_idDEFAULTeALTER TABLE arapply ALTER COLUMN arapply_id SET DEFAULT nextval('arapply_arapply_id_seq'::regclass); AALTER TABLE public.arapply ALTER COLUMN arapply_id DROP DEFAULT; publicadminfalse301300:26041696100 asohist_idDEFAULTeALTER TABLE asohist ALTER COLUMN asohist_id SET DEFAULT nextval('asohist_asohist_id_seq'::regclass); AALTER TABLE public.asohist ALTER COLUMN asohist_id DROP DEFAULT; publicadminfalse309308=26041696101 atlasmap_idDEFAULTiALTER TABLE atlasmap ALTER COLUMN atlasmap_id SET DEFAULT nextval('atlasmap_atlasmap_id_seq'::regclass); CALTER TABLE public.atlasmap ALTER COLUMN atlasmap_id DROP DEFAULT; publicadminfalse312311s26041696102 bankaccnt_idDEFAULTmALTER TABLE bankaccnt ALTER COLUMN bankaccnt_id SET DEFAULT nextval('bankaccnt_bankaccnt_id_seq'::regclass); EALTER TABLE public.bankaccnt ALTER COLUMN bankaccnt_id DROP DEFAULT; publicadminfalse314202D26041696103 bankadj_idDEFAULTeALTER TABLE bankadj ALTER COLUMN bankadj_id SET DEFAULT nextval('bankadj_bankadj_id_seq'::regclass); AALTER TABLE public.bankadj ALTER COLUMN bankadj_id DROP DEFAULT; publicadminfalse316315E26041696104bankadjtype_idDEFAULTuALTER TABLE bankadjtype ALTER COLUMN bankadjtype_id SET DEFAULT nextval('bankadjtype_bankadjtype_id_seq'::regclass); IALTER TABLE public.bankadjtype ALTER COLUMN bankadjtype_id DROP DEFAULT; publicadminfalse318317K26041696105 bankrec_idDEFAULTeALTER TABLE bankrec ALTER COLUMN bankrec_id SET DEFAULT nextval('bankrec_bankrec_id_seq'::regclass); AALTER TABLE public.bankrec ALTER COLUMN bankrec_id DROP DEFAULT; publicadminfalse320319L26041696106bankrecitem_idDEFAULTuALTER TABLE bankrecitem ALTER COLUMN bankrecitem_id SET DEFAULT nextval('bankrecitem_bankrecitem_id_seq'::regclass); IALTER TABLE public.bankrecitem ALTER COLUMN bankrecitem_id DROP DEFAULT; publicadminfalse322321R26041696107bomitemcost_idDEFAULTuALTER TABLE bomitemcost ALTER COLUMN bomitemcost_id SET DEFAULT nextval('bomitemcost_bomitemcost_id_seq'::regclass); IALTER TABLE public.bomitemcost ALTER COLUMN bomitemcost_id DROP DEFAULT; publicadminfalse326325d26041696108 bomitemsub_idDEFAULTqALTER TABLE bomitemsub ALTER COLUMN bomitemsub_id SET DEFAULT nextval('bomitemsub_bomitemsub_id_seq'::regclass); GALTER TABLE public.bomitemsub ALTER COLUMN bomitemsub_id DROP DEFAULT; publicadminfalse327197S26041696109 bomwork_idDEFAULTeALTER TABLE bomwork ALTER COLUMN bomwork_id SET DEFAULT nextval('bomwork_bomwork_id_seq'::regclass); AALTER TABLE public.bomwork ALTER COLUMN bomwork_id DROP DEFAULT; publicadminfalse329328e26041696110 budghead_idDEFAULTiALTER TABLE budghead ALTER COLUMN budghead_id SET DEFAULT nextval('budghead_budghead_id_seq'::regclass); CALTER TABLE public.budghead ALTER COLUMN budghead_id DROP DEFAULT; publicadminfalse330198k26041696111 budgitem_idDEFAULTiALTER TABLE budgitem ALTER COLUMN budgitem_id SET DEFAULT nextval('budgitem_budgitem_id_seq'::regclass); CALTER TABLE public.budgitem ALTER COLUMN budgitem_id DROP DEFAULT; publicadminfalse331200|26041696112 cashrcpt_idDEFAULTiALTER TABLE cashrcpt ALTER COLUMN cashrcpt_id SET DEFAULT nextval('cashrcpt_cashrcpt_id_seq'::regclass); CALTER TABLE public.cashrcpt ALTER COLUMN cashrcpt_id DROP DEFAULT; publicadminfalse335203~26041696113cashrcptitem_idDEFAULTyALTER TABLE cashrcptitem ALTER COLUMN cashrcptitem_id SET DEFAULT nextval('cashrcptitem_cashrcptitem_id_seq'::regclass); KALTER TABLE public.cashrcptitem ALTER COLUMN cashrcptitem_id DROP DEFAULT; publicadminfalse30220426041696114cashrcptmisc_idDEFAULTyALTER TABLE cashrcptmisc ALTER COLUMN cashrcptmisc_id SET DEFAULT nextval('cashrcptmisc_cashrcptmisc_id_seq'::regclass); KALTER TABLE public.cashrcptmisc ALTER COLUMN cashrcptmisc_id DROP DEFAULT; publicadminfalse33620526041696115ccard_idDEFAULT]ALTER TABLE ccard ALTER COLUMN ccard_id SET DEFAULT nextval('ccard_ccard_id_seq'::regclass); =ALTER TABLE public.ccard ALTER COLUMN ccard_id DROP DEFAULT; publicadminfalse337206X26041696116 ccardaud_idDEFAULTiALTER TABLE ccardaud ALTER COLUMN ccardaud_id SET DEFAULT nextval('ccardaud_ccardaud_id_seq'::regclass); CALTER TABLE public.ccardaud ALTER COLUMN ccardaud_id DROP DEFAULT; publicadminfalse339338[26041696117 ccbank_idDEFAULTaALTER TABLE ccbank ALTER COLUMN ccbank_id SET DEFAULT nextval('ccbank_ccbank_id_seq'::regclass); ?ALTER TABLE public.ccbank ALTER COLUMN ccbank_id DROP DEFAULT; publicadminfalse341340b26041696118ccpay_idDEFAULT]ALTER TABLE ccpay ALTER COLUMN ccpay_id SET DEFAULT nextval('ccpay_ccpay_id_seq'::regclass); =ALTER TABLE public.ccpay ALTER COLUMN ccpay_id DROP DEFAULT; publicadminfalse343342N26041696119char_idDEFAULT[ALTER TABLE "char" ALTER COLUMN char_id SET DEFAULT nextval('char_char_id_seq'::regclass); =ALTER TABLE public."char" ALTER COLUMN char_id DROP DEFAULT; publicadminfalse344185P26041696120 charass_idDEFAULTeALTER TABLE charass ALTER COLUMN charass_id SET DEFAULT nextval('charass_charass_id_seq'::regclass); AALTER TABLE public.charass ALTER COLUMN charass_id DROP DEFAULT; publicadminfalse345186c26041696121 charopt_idDEFAULTeALTER TABLE charopt ALTER COLUMN charopt_id SET DEFAULT nextval('charopt_charopt_id_seq'::regclass); AALTER TABLE public.charopt ALTER COLUMN charopt_id DROP DEFAULT; publicadminfalse347346m26041696122 checkhead_idDEFAULTmALTER TABLE checkhead ALTER COLUMN checkhead_id SET DEFAULT nextval('checkhead_checkhead_id_seq'::regclass); EALTER TABLE public.checkhead ALTER COLUMN checkhead_id DROP DEFAULT; publicadminfalse349348s26041696123 checkitem_idDEFAULTmALTER TABLE checkitem ALTER COLUMN checkitem_id SET DEFAULT nextval('checkitem_checkitem_id_seq'::regclass); EALTER TABLE public.checkitem ALTER COLUMN checkitem_id DROP DEFAULT; publicadminfalse351350S26041696124 cmnttype_idDEFAULTiALTER TABLE cmnttype ALTER COLUMN cmnttype_id SET DEFAULT nextval('cmnttype_cmnttype_id_seq'::regclass); CALTER TABLE public.cmnttype ALTER COLUMN cmnttype_id DROP DEFAULT; publicadminfalse357187w26041696125cmnttypesource_idDEFAULTALTER TABLE cmnttypesource ALTER COLUMN cmnttypesource_id SET DEFAULT nextval('cmnttypesource_cmnttypesource_id_seq'::regclass); OALTER TABLE public.cmnttypesource ALTER COLUMN cmnttypesource_id DROP DEFAULT; publicadminfalse35935826041696126cntct_idDEFAULT]ALTER TABLE cntct ALTER COLUMN cntct_id SET DEFAULT nextval('cntct_cntct_id_seq'::regclass); =ALTER TABLE public.cntct ALTER COLUMN cntct_id DROP DEFAULT; publicadminfalse360152x26041696127 cntctaddr_idDEFAULTmALTER TABLE cntctaddr ALTER COLUMN cntctaddr_id SET DEFAULT nextval('cntctaddr_cntctaddr_id_seq'::regclass); EALTER TABLE public.cntctaddr ALTER COLUMN cntctaddr_id DROP DEFAULT; publicadminfalse362361y26041696128 cntctdata_idDEFAULTmALTER TABLE cntctdata ALTER COLUMN cntctdata_id SET DEFAULT nextval('cntctdata_cntctdata_id_seq'::regclass); EALTER TABLE public.cntctdata ALTER COLUMN cntctdata_id DROP DEFAULT; publicadminfalse364363z26041696129 cntcteml_idDEFAULTiALTER TABLE cntcteml ALTER COLUMN cntcteml_id SET DEFAULT nextval('cntcteml_cntcteml_id_seq'::regclass); CALTER TABLE public.cntcteml ALTER COLUMN cntcteml_id DROP DEFAULT; publicadminfalse36636526041696130 company_idDEFAULTeALTER TABLE company ALTER COLUMN company_id SET DEFAULT nextval('company_company_id_seq'::regclass); AALTER TABLE public.company ALTER COLUMN company_id DROP DEFAULT; publicadminfalse38238126041746316 contrct_idDEFAULTeALTER TABLE contrct ALTER COLUMN contrct_id SET DEFAULT nextval('contrct_contrct_id_seq'::regclass); AALTER TABLE public.contrct ALTER COLUMN contrct_id DROP DEFAULT; publicadminfalse72071972026041696131 country_idDEFAULTeALTER TABLE country ALTER COLUMN country_id SET DEFAULT nextval('country_country_id_seq'::regclass); AALTER TABLE public.country ALTER COLUMN country_id DROP DEFAULT; publicadminfalse39239126041696132 crmacct_idDEFAULTeALTER TABLE crmacct ALTER COLUMN crmacct_id SET DEFAULT nextval('crmacct_crmacct_id_seq'::regclass); AALTER TABLE public.crmacct ALTER COLUMN crmacct_id DROP DEFAULT; publicadminfalse39415326041696133 curr_rate_idDEFAULTmALTER TABLE curr_rate ALTER COLUMN curr_rate_id SET DEFAULT nextval('curr_rate_curr_rate_id_seq'::regclass); EALTER TABLE public.curr_rate ALTER COLUMN curr_rate_id DROP DEFAULT; publicadminfalse39739626041696134curr_idDEFAULTgALTER TABLE curr_symbol ALTER COLUMN curr_id SET DEFAULT nextval('curr_symbol_curr_id_seq'::regclass); BALTER TABLE public.curr_symbol ALTER COLUMN curr_id DROP DEFAULT; publicadminfalse39815626041696135dept_idDEFAULTYALTER TABLE dept ALTER COLUMN dept_id SET DEFAULT nextval('dept_dept_id_seq'::regclass); ;ALTER TABLE public.dept ALTER COLUMN dept_id DROP DEFAULT; publicadminfalse407213X26041696136 docass_idDEFAULTaALTER TABLE docass ALTER COLUMN docass_id SET DEFAULT nextval('docass_docass_id_seq'::regclass); ?ALTER TABLE public.docass ALTER COLUMN docass_id DROP DEFAULT; publicadminfalse19318926041696137emp_idDEFAULTUALTER TABLE emp ALTER COLUMN emp_id SET DEFAULT nextval('emp_emp_id_seq'::regclass); 9ALTER TABLE public.emp ALTER COLUMN emp_id DROP DEFAULT; publicadminfalse41121426041696138 empgrp_idDEFAULTaALTER TABLE empgrp ALTER COLUMN empgrp_id SET DEFAULT nextval('empgrp_empgrp_id_seq'::regclass); ?ALTER TABLE public.empgrp ALTER COLUMN empgrp_id DROP DEFAULT; publicadminfalse41341226041696139 empgrpitem_idDEFAULTqALTER TABLE empgrpitem ALTER COLUMN empgrpitem_id SET DEFAULT nextval('empgrpitem_empgrpitem_id_seq'::regclass); GALTER TABLE public.empgrpitem ALTER COLUMN empgrpitem_id DROP DEFAULT; publicadminfalse41541426041696140 expcat_idDEFAULTaALTER TABLE expcat ALTER COLUMN expcat_id SET DEFAULT nextval('expcat_expcat_id_seq'::regclass); ?ALTER TABLE public.expcat ALTER COLUMN expcat_id DROP DEFAULT; publicadminfalse422245\26041696141file_idDEFAULTYALTER TABLE file ALTER COLUMN file_id SET DEFAULT nextval('file_file_id_seq'::regclass); ;ALTER TABLE public.file ALTER COLUMN file_id DROP DEFAULT; publicadminfalse42319026041696142 filter_idDEFAULTaALTER TABLE filter ALTER COLUMN filter_id SET DEFAULT nextval('filter_filter_id_seq'::regclass); ?ALTER TABLE public.filter ALTER COLUMN filter_id DROP DEFAULT; publicadminfalse42542426041696143flcol_idDEFAULT]ALTER TABLE flcol ALTER COLUMN flcol_id SET DEFAULT nextval('flcol_flcol_id_seq'::regclass); =ALTER TABLE public.flcol ALTER COLUMN flcol_id DROP DEFAULT; publicadminfalse42942826041696144flgrp_idDEFAULT]ALTER TABLE flgrp ALTER COLUMN flgrp_id SET DEFAULT nextval('flgrp_flgrp_id_seq'::regclass); =ALTER TABLE public.flgrp ALTER COLUMN flgrp_id DROP DEFAULT; publicadminfalse43143026041696145 flhead_idDEFAULTaALTER TABLE flhead ALTER COLUMN flhead_id SET DEFAULT nextval('flhead_flhead_id_seq'::regclass); ?ALTER TABLE public.flhead ALTER COLUMN flhead_id DROP DEFAULT; publicadminfalse43242626041696146 flitem_idDEFAULTaALTER TABLE flitem ALTER COLUMN flitem_id SET DEFAULT nextval('flitem_flitem_id_seq'::regclass); ?ALTER TABLE public.flitem ALTER COLUMN flitem_id DROP DEFAULT; publicadminfalse43342726041696147 flnotes_idDEFAULTeALTER TABLE flnotes ALTER COLUMN flnotes_id SET DEFAULT nextval('flnotes_flnotes_id_seq'::regclass); AALTER TABLE public.flnotes ALTER COLUMN flnotes_id DROP DEFAULT; publicadminfalse43543426041696148flrpt_idDEFAULT]ALTER TABLE flrpt ALTER COLUMN flrpt_id SET DEFAULT nextval('flrpt_flrpt_id_seq'::regclass); =ALTER TABLE public.flrpt ALTER COLUMN flrpt_id DROP DEFAULT; publicadminfalse437436 26041696149 flspec_idDEFAULTaALTER TABLE flspec ALTER COLUMN flspec_id SET DEFAULT nextval('flspec_flspec_id_seq'::regclass); ?ALTER TABLE public.flspec ALTER COLUMN flspec_id DROP DEFAULT; publicadminfalse43943826041696150freightclass_idDEFAULTyALTER TABLE freightclass ALTER COLUMN freightclass_id SET DEFAULT nextval('freightclass_freightclass_id_seq'::regclass); KALTER TABLE public.freightclass ALTER COLUMN freightclass_id DROP DEFAULT; publicadminfalse44221726041696151grp_idDEFAULTUALTER TABLE grp ALTER COLUMN grp_id SET DEFAULT nextval('grp_grp_id_seq'::regclass); 9ALTER TABLE public.grp ALTER COLUMN grp_id DROP DEFAULT; publicadminfalse44844726041696152 grppriv_idDEFAULTeALTER TABLE grppriv ALTER COLUMN grppriv_id SET DEFAULT nextval('grppriv_grppriv_id_seq'::regclass); AALTER TABLE public.grppriv ALTER COLUMN grppriv_id DROP DEFAULT; publicadminfalse45044926041696153hnfc_idDEFAULTYALTER TABLE hnfc ALTER COLUMN hnfc_id SET DEFAULT nextval('hnfc_hnfc_id_seq'::regclass); ;ALTER TABLE public.hnfc ALTER COLUMN hnfc_id DROP DEFAULT; publicadminfalse45245126041696154incdt_idDEFAULT]ALTER TABLE incdt ALTER COLUMN incdt_id SET DEFAULT nextval('incdt_incdt_id_seq'::regclass); =ALTER TABLE public.incdt ALTER COLUMN incdt_id DROP DEFAULT; publicadminfalse45315426041696155 incdtcat_idDEFAULTiALTER TABLE incdtcat ALTER COLUMN incdtcat_id SET DEFAULT nextval('incdtcat_incdtcat_id_seq'::regclass); CALTER TABLE public.incdtcat ALTER COLUMN incdtcat_id DROP DEFAULT; publicadminfalse45422026041696156 incdthist_idDEFAULTmALTER TABLE incdthist ALTER COLUMN incdthist_id SET DEFAULT nextval('incdthist_incdthist_id_seq'::regclass); EALTER TABLE public.incdthist ALTER COLUMN incdthist_id DROP DEFAULT; publicadminfalse45645526041696157incdtpriority_idDEFAULT}ALTER TABLE incdtpriority ALTER COLUMN incdtpriority_id SET DEFAULT nextval('incdtpriority_incdtpriority_id_seq'::regclass); MALTER TABLE public.incdtpriority ALTER COLUMN incdtpriority_id DROP DEFAULT; publicadminfalse45722126041696158incdtresolution_idDEFAULTALTER TABLE incdtresolution ALTER COLUMN incdtresolution_id SET DEFAULT nextval('incdtresolution_incdtresolution_id_seq'::regclass); QALTER TABLE public.incdtresolution ALTER COLUMN incdtresolution_id DROP DEFAULT; publicadminfalse45822226041696159incdtseverity_idDEFAULT}ALTER TABLE incdtseverity ALTER COLUMN incdtseverity_id SET DEFAULT nextval('incdtseverity_incdtseverity_id_seq'::regclass); MALTER TABLE public.incdtseverity ALTER COLUMN incdtseverity_id DROP DEFAULT; publicadminfalse459223v26041696160 invbal_idDEFAULTaALTER TABLE invbal ALTER COLUMN invbal_id SET DEFAULT nextval('invbal_invbal_id_seq'::regclass); ?ALTER TABLE public.invbal ALTER COLUMN invbal_id DROP DEFAULT; publicadminfalse46015026041696161 invchead_idDEFAULTiALTER TABLE invchead ALTER COLUMN invchead_id SET DEFAULT nextval('invchead_invchead_id_seq'::regclass); CALTER TABLE public.invchead ALTER COLUMN invchead_id DROP DEFAULT; publicadminfalse46217326041696162 invcitem_idDEFAULTiALTER TABLE invcitem ALTER COLUMN invcitem_id SET DEFAULT nextval('invcitem_invcitem_id_seq'::regclass); CALTER TABLE public.invcitem ALTER COLUMN invcitem_id DROP DEFAULT; publicadminfalse464175$26041696163invhistexpcat_idDEFAULT}ALTER TABLE invhistexpcat ALTER COLUMN invhistexpcat_id SET DEFAULT nextval('invhistexpcat_invhistexpcat_id_seq'::regclass); MALTER TABLE public.invhistexpcat ALTER COLUMN invhistexpcat_id DROP DEFAULT; publicadminfalse47347226041696164 ipsass_idDEFAULTaALTER TABLE ipsass ALTER COLUMN ipsass_id SET DEFAULT nextval('ipsass_ipsass_id_seq'::regclass); ?ALTER TABLE public.ipsass ALTER COLUMN ipsass_id DROP DEFAULT; publicadminfalse47523926041696165 ipsfreight_idDEFAULTqALTER TABLE ipsfreight ALTER COLUMN ipsfreight_id SET DEFAULT nextval('ipsfreight_ipsfreight_id_seq'::regclass); GALTER TABLE public.ipsfreight ALTER COLUMN ipsfreight_id DROP DEFAULT; publicadminfalse47821826041696166ipsitemchar_idDEFAULTuALTER TABLE ipsitemchar ALTER COLUMN ipsitemchar_id SET DEFAULT nextval('ipsitemchar_ipsitemchar_id_seq'::regclass); IALTER TABLE public.ipsitemchar ALTER COLUMN ipsitemchar_id DROP DEFAULT; publicadminfalse48124226041696167 ipsprodcat_idDEFAULTuALTER TABLE ipsprodcat_bak ALTER COLUMN ipsprodcat_id SET DEFAULT nextval('ipsprodcat_ipsprodcat_id_seq'::regclass); KALTER TABLE public.ipsprodcat_bak ALTER COLUMN ipsprodcat_id DROP DEFAULT; publicadminfalse482241/26041696168itemlocpost_idDEFAULTuALTER TABLE itemlocpost ALTER COLUMN itemlocpost_id SET DEFAULT nextval('itemlocpost_itemlocpost_id_seq'::regclass); IALTER TABLE public.itemlocpost ALTER COLUMN itemlocpost_id DROP DEFAULT; publicadminfalse50049926041696169 itemtax_idDEFAULTeALTER TABLE itemtax ALTER COLUMN itemtax_id SET DEFAULT nextval('itemtax_itemtax_id_seq'::regclass); AALTER TABLE public.itemtax ALTER COLUMN itemtax_id DROP DEFAULT; publicadminfalse506235026041696170 itemtrans_idDEFAULTmALTER TABLE itemtrans ALTER COLUMN itemtrans_id SET DEFAULT nextval('itemtrans_itemtrans_id_seq'::regclass); EALTER TABLE public.itemtrans ALTER COLUMN itemtrans_id DROP DEFAULT; publicadminfalse508507126041696171 itemuom_idDEFAULTeALTER TABLE itemuom ALTER COLUMN itemuom_id SET DEFAULT nextval('itemuom_itemuom_id_seq'::regclass); AALTER TABLE public.itemuom ALTER COLUMN itemuom_id DROP DEFAULT; publicadminfalse51050926041696172itemuomconv_idDEFAULTuALTER TABLE itemuomconv ALTER COLUMN itemuomconv_id SET DEFAULT nextval('itemuomconv_itemuomconv_id_seq'::regclass); IALTER TABLE public.itemuomconv ALTER COLUMN itemuomconv_id DROP DEFAULT; publicadminfalse511236326041696173 labeldef_idDEFAULTiALTER TABLE labeldef ALTER COLUMN labeldef_id SET DEFAULT nextval('labeldef_labeldef_id_seq'::regclass); CALTER TABLE public.labeldef ALTER COLUMN labeldef_id DROP DEFAULT; publicadminfalse516515626041696174lang_idDEFAULTYALTER TABLE lang ALTER COLUMN lang_id SET DEFAULT nextval('lang_lang_id_seq'::regclass); ;ALTER TABLE public.lang ALTER COLUMN lang_id DROP DEFAULT; publicadminfalse520519>26041696175 metricenc_idDEFAULTmALTER TABLE metricenc ALTER COLUMN metricenc_id SET DEFAULT nextval('metricenc_metricenc_id_seq'::regclass); EALTER TABLE public.metricenc ALTER COLUMN metricenc_id DROP DEFAULT; publicadminfalse530529526041696176 ophead_idDEFAULTaALTER TABLE ophead ALTER COLUMN ophead_id SET DEFAULT nextval('ophead_ophead_id_seq'::regclass); ?ALTER TABLE public.ophead ALTER COLUMN ophead_id DROP DEFAULT; publicadminfalse540181E26041696177 opsource_idDEFAULTiALTER TABLE opsource ALTER COLUMN opsource_id SET DEFAULT nextval('opsource_opsource_id_seq'::regclass); CALTER TABLE public.opsource ALTER COLUMN opsource_id DROP DEFAULT; publicadminfalse542541G26041696178 opstage_idDEFAULTeALTER TABLE opstage ALTER COLUMN opstage_id SET DEFAULT nextval('opstage_opstage_id_seq'::regclass); AALTER TABLE public.opstage ALTER COLUMN opstage_id DROP DEFAULT; publicadminfalse544543K26041696179 optype_idDEFAULTaALTER TABLE optype ALTER COLUMN optype_id SET DEFAULT nextval('optype_optype_id_seq'::regclass); ?ALTER TABLE public.optype ALTER COLUMN optype_id DROP DEFAULT; publicadminfalse546545O26041696180pack_idDEFAULTYALTER TABLE pack ALTER COLUMN pack_id SET DEFAULT nextval('pack_pack_id_seq'::regclass); ;ALTER TABLE public.pack ALTER COLUMN pack_id DROP DEFAULT; publicadminfalse550549l26041696181 period_idDEFAULTaALTER TABLE period ALTER COLUMN period_id SET DEFAULT nextval('period_period_id_seq'::regclass); ?ALTER TABLE public.period ALTER COLUMN period_id DROP DEFAULT; publicadminfalse553201V26041696182 pkgdep_idDEFAULTaALTER TABLE pkgdep ALTER COLUMN pkgdep_id SET DEFAULT nextval('pkgdep_pkgdep_id_seq'::regclass); ?ALTER TABLE public.pkgdep ALTER COLUMN pkgdep_id DROP DEFAULT; publicadminfalse555554W26041696183 pkghead_idDEFAULTeALTER TABLE pkghead ALTER COLUMN pkghead_id SET DEFAULT nextval('pkghead_pkghead_id_seq'::regclass); AALTER TABLE public.pkghead ALTER COLUMN pkghead_id DROP DEFAULT; publicadminfalse557556Z26041696184 pkgitem_idDEFAULTeALTER TABLE pkgitem ALTER COLUMN pkgitem_id SET DEFAULT nextval('pkgitem_pkgitem_id_seq'::regclass); AALTER TABLE public.pkgitem ALTER COLUMN pkgitem_id DROP DEFAULT; publicadminfalse559558]26041696185 potype_idDEFAULTaALTER TABLE potype ALTER COLUMN potype_id SET DEFAULT nextval('potype_potype_id_seq'::regclass); ?ALTER TABLE public.potype ALTER COLUMN potype_id DROP DEFAULT; publicadminfalse568567`26041696186 prftcntr_idDEFAULTiALTER TABLE prftcntr ALTER COLUMN prftcntr_id SET DEFAULT nextval('prftcntr_prftcntr_id_seq'::regclass); CALTER TABLE public.prftcntr ALTER COLUMN prftcntr_id DROP DEFAULT; publicadminfalse57257126041696187prj_idDEFAULTUALTER TABLE prj ALTER COLUMN prj_id SET DEFAULT nextval('prj_prj_id_seq'::regclass); 9ALTER TABLE public.prj ALTER COLUMN prj_id DROP DEFAULT; publicadminfalse575174826041696188 prjtask_idDEFAULTeALTER TABLE prjtask ALTER COLUMN prjtask_id SET DEFAULT nextval('prjtask_prjtask_id_seq'::regclass); AALTER TABLE public.prjtask ALTER COLUMN prjtask_id DROP DEFAULT; publicadminfalse576182d26041696189prjtaskuser_idDEFAULTuALTER TABLE prjtaskuser ALTER COLUMN prjtaskuser_id SET DEFAULT nextval('prjtaskuser_prjtaskuser_id_seq'::regclass); IALTER TABLE public.prjtaskuser ALTER COLUMN prjtaskuser_id DROP DEFAULT; publicadminfalse578577e26041696190 qryhead_idDEFAULTeALTER TABLE qryhead ALTER COLUMN qryhead_id SET DEFAULT nextval('qryhead_qryhead_id_seq'::regclass); AALTER TABLE public.qryhead ALTER COLUMN qryhead_id DROP DEFAULT; publicadminfalse581580l26041696191 qryitem_idDEFAULTeALTER TABLE qryitem ALTER COLUMN qryitem_id SET DEFAULT nextval('qryitem_qryitem_id_seq'::regclass); AALTER TABLE public.qryitem ALTER COLUMN qryitem_id DROP DEFAULT; publicadminfalse583582p26041696192recur_idDEFAULT]ALTER TABLE recur ALTER COLUMN recur_id SET DEFAULT nextval('recur_recur_id_seq'::regclass); =ALTER TABLE public.recur ALTER COLUMN recur_id DROP DEFAULT; publicadminfalse588587t26041696193 recurtype_idDEFAULTmALTER TABLE recurtype ALTER COLUMN recurtype_id SET DEFAULT nextval('recurtype_recurtype_id_seq'::regclass); EALTER TABLE public.recurtype ALTER COLUMN recurtype_id DROP DEFAULT; publicadminfalse590589x26041696194recv_idDEFAULTYALTER TABLE recv ALTER COLUMN recv_id SET DEFAULT nextval('recv_recv_id_seq'::regclass); ;ALTER TABLE public.recv ALTER COLUMN recv_id DROP DEFAULT; publicadminfalse59259126041696195 rsncode_idDEFAULTeALTER TABLE rsncode ALTER COLUMN rsncode_id SET DEFAULT nextval('rsncode_rsncode_id_seq'::regclass); AALTER TABLE public.rsncode ALTER COLUMN rsncode_id DROP DEFAULT; publicadminfalse59516126041696196 salescat_idDEFAULTiALTER TABLE salescat ALTER COLUMN salescat_id SET DEFAULT nextval('salescat_salescat_id_seq'::regclass); CALTER TABLE public.salescat ALTER COLUMN salescat_id DROP DEFAULT; publicadminfalse59916226041746333 saletype_idDEFAULTiALTER TABLE saletype ALTER COLUMN saletype_id SET DEFAULT nextval('saletype_saletype_id_seq'::regclass); CALTER TABLE public.saletype ALTER COLUMN saletype_id DROP DEFAULT; publicadminfalse722721722~26041696197 schemaord_idDEFAULTmALTER TABLE schemaord ALTER COLUMN schemaord_id SET DEFAULT nextval('schemaord_schemaord_id_seq'::regclass); EALTER TABLE public.schemaord ALTER COLUMN schemaord_id DROP DEFAULT; publicadminfalse60260126041696198shift_idDEFAULT]ALTER TABLE shift ALTER COLUMN shift_id SET DEFAULT nextval('shift_shift_id_seq'::regclass); =ALTER TABLE public.shift ALTER COLUMN shift_id DROP DEFAULT; publicadminfalse60421526041696199 shipchrg_idDEFAULTiALTER TABLE shipchrg ALTER COLUMN shipchrg_id SET DEFAULT nextval('shipchrg_shipchrg_id_seq'::regclass); CALTER TABLE public.shipchrg ALTER COLUMN shipchrg_id DROP DEFAULT; publicadminfalse60520826041696200 shiphead_idDEFAULTiALTER TABLE shiphead ALTER COLUMN shiphead_id SET DEFAULT nextval('shiphead_shiphead_id_seq'::regclass); CALTER TABLE public.shiphead ALTER COLUMN shiphead_id DROP DEFAULT; publicadminfalse609608%26041696201 shipitem_idDEFAULTiALTER TABLE shipitem ALTER COLUMN shipitem_id SET DEFAULT nextval('shipitem_shipitem_id_seq'::regclass); CALTER TABLE public.shipitem ALTER COLUMN shipitem_id DROP DEFAULT; publicadminfalse610474 26041696202 sitetype_idDEFAULTiALTER TABLE sitetype ALTER COLUMN sitetype_id SET DEFAULT nextval('sitetype_sitetype_id_seq'::regclass); CALTER TABLE public.sitetype ALTER COLUMN sitetype_id DROP DEFAULT; publicadminfalse61525726041696203 source_idDEFAULTaALTER TABLE source ALTER COLUMN source_id SET DEFAULT nextval('source_source_id_seq'::regclass); ?ALTER TABLE public.source ALTER COLUMN source_id DROP DEFAULT; publicadminfalse62061926041696204state_idDEFAULT]ALTER TABLE state ALTER COLUMN state_id SET DEFAULT nextval('state_state_id_seq'::regclass); =ALTER TABLE public.state ALTER COLUMN state_id DROP DEFAULT; publicadminfalse62262126041696205 status_idDEFAULTaALTER TABLE status ALTER COLUMN status_id SET DEFAULT nextval('status_status_id_seq'::regclass); ?ALTER TABLE public.status ALTER COLUMN status_id DROP DEFAULT; publicadminfalse62462326041696206 stdjrnl_idDEFAULTeALTER TABLE stdjrnl ALTER COLUMN stdjrnl_id SET DEFAULT nextval('stdjrnl_stdjrnl_id_seq'::regclass); AALTER TABLE public.stdjrnl ALTER COLUMN stdjrnl_id DROP DEFAULT; publicadminfalse62662526041696207 stdjrnlgrp_idDEFAULTqALTER TABLE stdjrnlgrp ALTER COLUMN stdjrnlgrp_id SET DEFAULT nextval('stdjrnlgrp_stdjrnlgrp_id_seq'::regclass); GALTER TABLE public.stdjrnlgrp ALTER COLUMN stdjrnlgrp_id DROP DEFAULT; publicadminfalse62862726041696208stdjrnlgrpitem_idDEFAULTALTER TABLE stdjrnlgrpitem ALTER COLUMN stdjrnlgrpitem_id SET DEFAULT nextval('stdjrnlgrpitem_stdjrnlgrpitem_id_seq'::regclass); OALTER TABLE public.stdjrnlgrpitem ALTER COLUMN stdjrnlgrpitem_id DROP DEFAULT; publicadminfalse63062926041696209stdjrnlitem_idDEFAULTuALTER TABLE stdjrnlitem ALTER COLUMN stdjrnlitem_id SET DEFAULT nextval('stdjrnlitem_stdjrnlitem_id_seq'::regclass); IALTER TABLE public.stdjrnlitem ALTER COLUMN stdjrnlitem_id DROP DEFAULT; publicadminfalse63263126041696210 subaccnt_idDEFAULTiALTER TABLE subaccnt ALTER COLUMN subaccnt_id SET DEFAULT nextval('subaccnt_subaccnt_id_seq'::regclass); CALTER TABLE public.subaccnt ALTER COLUMN subaccnt_id DROP DEFAULT; publicadminfalse63463326041696211subaccnttype_idDEFAULTyALTER TABLE subaccnttype ALTER COLUMN subaccnttype_id SET DEFAULT nextval('subaccnttype_subaccnttype_id_seq'::regclass); KALTER TABLE public.subaccnttype ALTER COLUMN subaccnttype_id DROP DEFAULT; publicadminfalse63663526041696212 taxass_idDEFAULTaALTER TABLE taxass ALTER COLUMN taxass_id SET DEFAULT nextval('taxass_taxass_id_seq'::regclass); ?ALTER TABLE public.taxass ALTER COLUMN taxass_id DROP DEFAULT; publicadminfalse63963826041696213 taxauth_idDEFAULTeALTER TABLE taxauth ALTER COLUMN taxauth_id SET DEFAULT nextval('taxauth_taxauth_id_seq'::regclass); AALTER TABLE public.taxauth ALTER COLUMN taxauth_id DROP DEFAULT; publicadminfalse64021026041696214 taxclass_idDEFAULTiALTER TABLE taxclass ALTER COLUMN taxclass_id SET DEFAULT nextval('taxclass_taxclass_id_seq'::regclass); CALTER TABLE public.taxclass ALTER COLUMN taxclass_id DROP DEFAULT; publicadminfalse642641 26041695991 taxhist_idDEFAULTeALTER TABLE taxhist ALTER COLUMN taxhist_id SET DEFAULT nextval('taxhist_taxhist_id_seq'::regclass); AALTER TABLE public.taxhist ALTER COLUMN taxhist_id DROP DEFAULT; publicadminfalse25425326041696215 taxrate_idDEFAULTeALTER TABLE taxrate ALTER COLUMN taxrate_id SET DEFAULT nextval('taxrate_taxrate_id_seq'::regclass); AALTER TABLE public.taxrate ALTER COLUMN taxrate_id DROP DEFAULT; publicadminfalse64464326041696216 taxreg_idDEFAULTaALTER TABLE taxreg ALTER COLUMN taxreg_id SET DEFAULT nextval('taxreg_taxreg_id_seq'::regclass); ?ALTER TABLE public.taxreg ALTER COLUMN taxreg_id DROP DEFAULT; publicadminfalse64521126041696217 taxtype_idDEFAULTeALTER TABLE taxtype ALTER COLUMN taxtype_id SET DEFAULT nextval('taxtype_taxtype_id_seq'::regclass); AALTER TABLE public.taxtype ALTER COLUMN taxtype_id DROP DEFAULT; publicadminfalse64617026041696218 taxzone_idDEFAULTeALTER TABLE taxzone ALTER COLUMN taxzone_id SET DEFAULT nextval('taxzone_taxzone_id_seq'::regclass); AALTER TABLE public.taxzone ALTER COLUMN taxzone_id DROP DEFAULT; publicadminfalse647166=26041696219 todoitem_idDEFAULTiALTER TABLE todoitem ALTER COLUMN todoitem_id SET DEFAULT nextval('todoitem_todoitem_id_seq'::regclass); CALTER TABLE public.todoitem ALTER COLUMN todoitem_id DROP DEFAULT; publicadminfalse64918326041696220 trialbal_idDEFAULTiALTER TABLE trialbal ALTER COLUMN trialbal_id SET DEFAULT nextval('trialbal_trialbal_id_seq'::regclass); CALTER TABLE public.trialbal ALTER COLUMN trialbal_id DROP DEFAULT; publicadminfalse65265126041696221uom_idDEFAULTUALTER TABLE uom ALTER COLUMN uom_id SET DEFAULT nextval('uom_uom_id_seq'::regclass); 9ALTER TABLE public.uom ALTER COLUMN uom_id DROP DEFAULT; publicadminfalse65317126041696222 uomconv_idDEFAULTeALTER TABLE uomconv ALTER COLUMN uomconv_id SET DEFAULT nextval('uomconv_uomconv_id_seq'::regclass); AALTER TABLE public.uomconv ALTER COLUMN uomconv_id DROP DEFAULT; publicadminfalse65565426041696223 uomtype_idDEFAULTeALTER TABLE uomtype ALTER COLUMN uomtype_id SET DEFAULT nextval('uomtype_uomtype_id_seq'::regclass); AALTER TABLE public.uomtype ALTER COLUMN uomtype_id DROP DEFAULT; publicadminfalse657656]26041696224url_idDEFAULT]ALTER TABLE urlinfo ALTER COLUMN url_id SET DEFAULT nextval('urlinfo_url_id_seq'::regclass); =ALTER TABLE public.urlinfo ALTER COLUMN url_id DROP DEFAULT; publicadminfalse658191b26041696225 usrgrp_idDEFAULTaALTER TABLE usrgrp ALTER COLUMN usrgrp_id SET DEFAULT nextval('usrgrp_usrgrp_id_seq'::regclass); ?ALTER TABLE public.usrgrp ALTER COLUMN usrgrp_id DROP DEFAULT; publicadminfalse66257326041696226 vendtype_idDEFAULTiALTER TABLE vendtype ALTER COLUMN vendtype_id SET DEFAULT nextval('vendtype_vendtype_id_seq'::regclass); CALTER TABLE public.vendtype ALTER COLUMN vendtype_id DROP DEFAULT; publicadminfalse66725826041696227 whsezone_idDEFAULTiALTER TABLE whsezone ALTER COLUMN whsezone_id SET DEFAULT nextval('whsezone_whsezone_id_seq'::regclass); CALTER TABLE public.whsezone ALTER COLUMN whsezone_id DROP DEFAULT; publicadminfalse67723826041696228 womatlpost_idDEFAULTqALTER TABLE womatlpost ALTER COLUMN womatlpost_id SET DEFAULT nextval('womatlpost_womatlpost_id_seq'::regclass); GALTER TABLE public.womatlpost ALTER COLUMN womatlpost_id DROP DEFAULT; publicadminfalse68168026041696229 xsltmap_idDEFAULTeALTER TABLE xsltmap ALTER COLUMN xsltmap_id SET DEFAULT nextval('xsltmap_xsltmap_id_seq'::regclass); AALTER TABLE public.xsltmap ALTER COLUMN xsltmap_id DROP DEFAULT; publicadminfalse68668526041696230 yearperiod_idDEFAULTqALTER TABLE yearperiod ALTER COLUMN yearperiod_id SET DEFAULT nextval('yearperiod_yearperiod_id_seq'::regclass); GALTER TABLE public.yearperiod ALTER COLUMN yearperiod_id DROP DEFAULT; publicadminfalse68868726041696231 tecustrate_idDEFAULTqALTER TABLE tecustrate ALTER COLUMN tecustrate_id SET DEFAULT nextval('tecustrate_tecustrate_id_seq'::regclass); CALTER TABLE te.tecustrate ALTER COLUMN tecustrate_id DROP DEFAULT; teadminfalse69869726041696232teemp_idDEFAULT]ALTER TABLE teemp ALTER COLUMN teemp_id SET DEFAULT nextval('teemp_teemp_id_seq'::regclass); 9ALTER TABLE te.teemp ALTER COLUMN teemp_id DROP DEFAULT; teadminfalse70069926041696233 tehead_idDEFAULTaALTER TABLE tehead ALTER COLUMN tehead_id SET DEFAULT nextval('tehead_tehead_id_seq'::regclass); ;ALTER TABLE te.tehead ALTER COLUMN tehead_id DROP DEFAULT; teadminfalse70470326041696234 teitem_idDEFAULTaALTER TABLE teitem ALTER COLUMN teitem_id SET DEFAULT nextval('teitem_teitem_id_seq'::regclass); ;ALTER TABLE te.teitem ALTER COLUMN teitem_id DROP DEFAULT; teadminfalse70670526041696235teprj_idDEFAULT]ALTER TABLE teprj ALTER COLUMN teprj_id SET DEFAULT nextval('teprj_teprj_id_seq'::regclass); 9ALTER TABLE te.teprj ALTER COLUMN teprj_id DROP DEFAULT; teadminfalse70870726041696236 teprjtask_idDEFAULTmALTER TABLE teprjtask ALTER COLUMN teprjtask_id SET DEFAULT nextval('teprjtask_teprjtask_id_seq'::regclass); AALTER TABLE te.teprjtask ALTER COLUMN teprjtask_id DROP DEFAULT; teadminfalse710709 01693883pkgcmd TABLE DATAmCOPY pkgcmd (cmd_id, cmd_module, cmd_title, cmd_descrip, cmd_privname, cmd_executable, cmd_name) FROM stdin; fixcountryadminfalse261+8F 01693899 pkgcmdarg TABLE DATAPCOPY pkgcmdarg (cmdarg_id, cmdarg_cmd_id, cmdarg_order, cmdarg_arg) FROM stdin; fixcountryadminfalse264H8F 01693908pkgimage TABLE DATALCOPY pkgimage (image_id, image_name, image_descrip, image_data) FROM stdin; fixcountryadminfalse266e8F 01693925 pkgmetasql TABLE DATACOPY pkgmetasql (metasql_id, metasql_group, metasql_name, metasql_notes, metasql_query, metasql_lastuser, metasql_lastupdate, metasql_grade) FROM stdin; fixcountryadminfalse2698F 01693942pkgpriv TABLE DATASCOPY pkgpriv (priv_id, priv_module, priv_name, priv_descrip, priv_seq) FROM stdin; fixcountryadminfalse272;F 01693958 pkgreport TABLE DATA~COPY pkgreport (report_id, report_name, report_sys, report_source, report_descrip, report_grade, report_loaddate) FROM stdin; fixcountryadminfalse275;F 01693975 pkgscript TABLE DATAoCOPY pkgscript (script_id, script_name, script_order, script_enabled, script_source, script_notes) FROM stdin; fixcountryadminfalse278DM1!01695485status TABLE DATAeCOPY status (status_id, status_type, status_code, status_name, status_seq, status_color) FROM stdin; publicadminfalse623KM2!01695494stdjrnl TABLE DATATCOPY stdjrnl (stdjrnl_id, stdjrnl_name, stdjrnl_descrip, stdjrnl_notes) FROM stdin; publicadminfalse6254LM3!01695502 stdjrnlgrp TABLE DATAQCOPY stdjrnlgrp (stdjrnlgrp_id, stdjrnlgrp_name, stdjrnlgrp_descrip) FROM stdin; publicadminfalse627QLM4!01695510stdjrnlgrpitem TABLE DATACOPY stdjrnlgrpitem (stdjrnlgrpitem_id, stdjrnlgrpitem_stdjrnl_id, stdjrnlgrpitem_toapply, stdjrnlgrpitem_applied, stdjrnlgrpitem_effective, stdjrnlgrpitem_expires, stdjrnlgrpitem_stdjrnlgrp_id) FROM stdin; publicadminfalse629nLM5!01695515 stdjrnlitem TABLE DATACOPY stdjrnlitem (stdjrnlitem_id, stdjrnlitem_stdjrnl_id, stdjrnlitem_accnt_id, stdjrnlitem_amount, stdjrnlitem_notes) FROM stdin; publicadminfalse631LM6!01695523subaccnt TABLE DATAKCOPY subaccnt (subaccnt_id, subaccnt_number, subaccnt_descrip) FROM stdin; publicadminfalse633LM7!01695531 subaccnttype TABLE DATArCOPY subaccnttype (subaccnttype_id, subaccnttype_accnt_type, subaccnttype_code, subaccnttype_descrip) FROM stdin; publicadminfalse635LM 01693687tax TABLE DATA|COPY tax (tax_id, tax_code, tax_descrip, tax_sales_accnt_id, tax_taxclass_id, tax_taxauth_id, tax_basis_tax_id) FROM stdin; publicadminfalse247NM8!01695541taxass TABLE DATAYCOPY taxass (taxass_id, taxass_taxzone_id, taxass_taxtype_id, taxass_tax_id) FROM stdin; publicadminfalse638FNMo 01693243taxauth TABLE DATACOPY taxauth (taxauth_id, taxauth_code, taxauth_name, taxauth_extref, taxauth_addr_id, taxauth_curr_id, taxauth_county, taxauth_accnt_id) FROM stdin; publicadminfalse210mNM9!01695548taxclass TABLE DATA\COPY taxclass (taxclass_id, taxclass_code, taxclass_descrip, taxclass_sequence) FROM stdin; publicadminfalse641NM 01693775taxhist TABLE DATA COPY taxhist (taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber) FROM stdin; publicadminfalse253NM:!01695557taxrate TABLE DATACOPY taxrate (taxrate_id, taxrate_tax_id, taxrate_percent, taxrate_curr_id, taxrate_amount, taxrate_effective, taxrate_expires) FROM stdin; publicadminfalse643NMp 01693249taxreg TABLE DATACOPY taxreg (taxreg_id, taxreg_rel_id, taxreg_rel_type, taxreg_taxauth_id, taxreg_number, taxreg_taxzone_id, taxreg_effective, taxreg_expires, taxreg_notes) FROM stdin; publicadminfalse2115OMJ 01692199taxtype TABLE DATARCOPY taxtype (taxtype_id, taxtype_name, taxtype_descrip, taxtype_sys) FROM stdin; publicadminfalse170ROMF 01692128taxzone TABLE DATAECOPY taxzone (taxzone_id, taxzone_code, taxzone_descrip) FROM stdin; publicadminfalse166OM= 01692018terms TABLE DATACOPY terms (terms_id, terms_code, terms_descrip, terms_type, terms_duedays, terms_discdays, terms_discprcnt, terms_cutoffday, terms_ap, terms_ar) FROM stdin; publicadminfalse157 PMV 01692812todoitem TABLE DATACOPY todoitem (todoitem_id, todoitem_name, todoitem_description, todoitem_incdt_id, todoitem_creator_username, todoitem_status, todoitem_active, todoitem_start_date, todoitem_due_date, todoitem_assigned_date, todoitem_completed_date, todoitem_seq, todoitem_notes, todoitem_crmacct_id, todoitem_ophead_id, todoitem_owner_username, todoitem_priority_id, todoitem_username, todoitem_recurring_todoitem_id, todoitem_cntct_id) FROM stdin; publicadminfalse183ePM;!01695572trgthist TABLE DATAhCOPY trgthist (trgthist_src_cntct_id, trgthist_trgt_cntct_id, trgthist_col, trgthist_value) FROM stdin; publicadminfalse650PM!01695592uomtype TABLE DATAWCOPY uomtype (uomtype_id, uomtype_name, uomtype_descrip, uomtype_multiple) FROM stdin; publicadminfalse656#_M^ 01693015urlinfo TABLE DATA6COPY urlinfo (url_id, url_title, url_url) FROM stdin; publicadminfalse191_M@!01695615usr_bak TABLE DATACOPY usr_bak (usr_id, usr_username, usr_propername, usr_passwd, usr_locale_id, usr_initials, usr_agent, usr_active, usr_email, usr_window) FROM stdin; publicadminfalse660_M!01695258usrgrp TABLE DATADCOPY usrgrp (usrgrp_id, usrgrp_grp_id, usrgrp_username) FROM stdin; publicadminfalse5733`M?!01695603usrpref TABLE DATAUCOPY usrpref (usrpref_id, usrpref_name, usrpref_value, usrpref_username) FROM stdin; publicadminfalse659Z`M!01695264usrpriv TABLE DATAICOPY usrpriv (usrpriv_id, usrpriv_priv_id, usrpriv_username) FROM stdin; publicadminfalse574lM 01693694 vendaddrinfo TABLE DATACOPY vendaddrinfo (vendaddr_id, vendaddr_vend_id, vendaddr_code, vendaddr_name, vendaddr_comments, vendaddr_cntct_id, vendaddr_addr_id, vendaddr_taxzone_id) FROM stdin; publicadminfalse248xM> 01692025vendinfo TABLE DATACOPY vendinfo (vend_id, vend_name, vend_lastpurchdate, vend_active, vend_po, vend_comments, vend_pocomments, vend_number, vend_1099, vend_exported, vend_fobsource, vend_fob, vend_terms_id, vend_shipvia, vend_vendtype_id, vend_qualified, vend_ediemail, vend_ediemailbody, vend_edisubject, vend_edifilename, vend_accntnum, vend_emailpodelivery, vend_restrictpurch, vend_edicc, vend_curr_id, vend_cntct1_id, vend_cntct2_id, vend_addr_id, vend_match, vend_ach_enabled, vend_ach_accnttype, vend_ach_use_vendinfo, vend_ach_indiv_number, vend_ach_indiv_name, vend_ediemailhtml, vend_ach_routingnumber, vend_ach_accntnumber, vend_taxzone_id, vend_accnt_id, vend_expcat_id, vend_tax_id) FROM stdin; publicadminfalse158/xM 01693854vendtype TABLE DATAICOPY vendtype (vendtype_id, vendtype_code, vendtype_descrip) FROM stdin; publicadminfalse258xMA!01695636vodist TABLE DATACOPY vodist (vodist_id, vodist_poitem_id, vodist_vohead_id, vodist_costelem_id, vodist_accnt_id, vodist_amount, vodist_qty, vodist_expcat_id, vodist_tax_id, vodist_discountable, vodist_notes) FROM stdin; publicadminfalse668 yMB!01695648vohead TABLE DATACOPY vohead (vohead_id, vohead_number, vohead_pohead_id, vohead_posted, vohead_duedate, vohead_invcnumber, vohead_amount, vohead_docdate, vohead_1099, vohead_distdate, vohead_reference, vohead_terms_id, vohead_vend_id, vohead_curr_id, vohead_adjtaxtype_id, vohead_freighttaxtype_id, vohead_gldistdate, vohead_misc, vohead_taxzone_id, vohead_taxtype_id, vohead_notes, vohead_recurring_vohead_id) FROM stdin; publicadminfalse670)yMC!01695658 voheadtax TABLE DATA"COPY voheadtax (taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber) FROM stdin; publicadminfalse672FyMD!01695664voitem TABLE DATACOPY voitem (voitem_id, voitem_vohead_id, voitem_poitem_id, voitem_close, voitem_qty, voitem_freight, voitem_taxtype_id) FROM stdin; publicadminfalse673cyME!01695671 voitemtax TABLE DATA"COPY voitemtax (taxhist_id, taxhist_parent_id, taxhist_taxtype_id, taxhist_tax_id, taxhist_basis, taxhist_basis_tax_id, taxhist_sequence, taxhist_percent, taxhist_amount, taxhist_tax, taxhist_docdate, taxhist_distdate, taxhist_curr_id, taxhist_curr_rate, taxhist_journalnumber) FROM stdin; publicadminfalse675yM 01693574whsezone TABLE DATA_COPY whsezone (whsezone_id, whsezone_warehous_id, whsezone_name, whsezone_descrip) FROM stdin; publicadminfalse238yML 01692213whsinfo TABLE DATACOPY whsinfo (warehous_id, warehous_code, warehous_descrip, warehous_fob, warehous_active, warehous_counttag_prefix, warehous_counttag_number, warehous_bol_prefix, warehous_bol_number, warehous_shipping, warehous_useslips, warehous_usezones, warehous_aislesize, warehous_aislealpha, warehous_racksize, warehous_rackalpha, warehous_binsize, warehous_binalpha, warehous_locationsize, warehous_locationalpha, warehous_enforcearbl, warehous_default_accnt_id, warehous_shipping_commission, warehous_cntct_id, warehous_addr_id, warehous_transit, warehous_shipform_id, warehous_shipvia_id, warehous_shipcomments, warehous_costcat_id, warehous_sitetype_id, warehous_taxzone_id, warehous_sequence) FROM stdin; publicadminfalse172yM 01694564wo TABLE DATAWCOPY wo (wo_id, wo_number, wo_subnumber, wo_status, wo_itemsite_id, wo_startdate, wo_duedate, wo_ordtype, wo_ordid, wo_qtyord, wo_qtyrcv, wo_adhoc, wo_itemcfg_series, wo_imported, wo_wipvalue, wo_postedvalue, wo_prodnotes, wo_prj_id, wo_priority, wo_brdvalue, wo_bom_rev_id, wo_boo_rev_id, wo_cosmethod, wo_womatl_id, wo_username) FROM stdin; publicadminfalse410zM 01693661womatl TABLE DATACOPY womatl (womatl_id, womatl_wo_id, womatl_itemsite_id, womatl_qtyper, womatl_scrap, womatl_qtyreq, womatl_qtyiss, womatl_qtywipscrap, womatl_lastissue, womatl_lastreturn, womatl_cost, womatl_picklist, womatl_status, womatl_imported, womatl_createwo, womatl_issuemethod, womatl_wooper_id, womatl_bomitem_id, womatl_duedate, womatl_schedatwooper, womatl_uom_id, womatl_notes, womatl_ref, womatl_scrapvalue, womatl_qtyfxd, womatl_issuewo) FROM stdin; publicadminfalse2464zMF!01695690 womatlpost TABLE DATAYCOPY womatlpost (womatlpost_id, womatlpost_womatl_id, womatlpost_invhist_id) FROM stdin; publicadminfalse680QzMG!01695695 womatlvar TABLE DATAWCOPY womatlvar (womatlvar_id, womatlvar_number, womatlvar_subnumber, womatlvar_posted, womatlvar_parent_itemsite_id, womatlvar_component_itemsite_id, womatlvar_qtyord, womatlvar_qtyrcv, womatlvar_qtyiss, womatlvar_qtyper, womatlvar_scrap, womatlvar_wipscrap, womatlvar_bomitem_id, womatlvar_ref, womatlvar_notes, womatlvar_qtyfxd) FROM stdin; publicadminfalse682nzMH!01695707xsltmap TABLE DATAuCOPY xsltmap (xsltmap_id, xsltmap_name, xsltmap_doctype, xsltmap_system, xsltmap_import, xsltmap_export) FROM stdin; publicadminfalse685zMI!01695719 yearperiod TABLE DATAaCOPY yearperiod (yearperiod_id, yearperiod_start, yearperiod_end, yearperiod_closed) FROM stdin; publicadminfalse687zMJ!01695725pkgcmd TABLE DATAmCOPY pkgcmd (cmd_id, cmd_module, cmd_title, cmd_descrip, cmd_privname, cmd_executable, cmd_name) FROM stdin; teadminfalse689K{MK!01695732 pkgcmdarg TABLE DATAPCOPY pkgcmdarg (cmdarg_id, cmdarg_cmd_id, cmdarg_order, cmdarg_arg) FROM stdin; teadminfalse690h{ML!01695739pkgimage TABLE DATALCOPY pkgimage (image_id, image_name, image_descrip, image_data) FROM stdin; teadminfalse691{MM!01695746 pkgmetasql TABLE DATACOPY pkgmetasql (metasql_id, metasql_group, metasql_name, metasql_notes, metasql_query, metasql_lastuser, metasql_lastupdate, metasql_grade) FROM stdin; teadminfalse692{MN!01695754pkgpriv TABLE DATASCOPY pkgpriv (priv_id, priv_module, priv_name, priv_descrip, priv_seq) FROM stdin; teadminfalse693]MO!01695761 pkgreport TABLE DATA~COPY pkgreport (report_id, report_name, report_sys, report_source, report_descrip, report_grade, report_loaddate) FROM stdin; teadminfalse694MP!01695768 pkgscript TABLE DATAoCOPY pkgscript (script_id, script_name, script_order, script_enabled, script_source, script_notes) FROM stdin; teadminfalse695MQ!01695776 pkguiform TABLE DATAoCOPY pkguiform (uiform_id, uiform_name, uiform_order, uiform_enabled, uiform_source, uiform_notes) FROM stdin; teadminfalse696!NR!01695784 tecustrate TABLE DATAeCOPY tecustrate (tecustrate_cust_id, tecustrate_rate, tecustrate_id, tecustrate_curr_id) FROM stdin; teadminfalse697+?NS!01695791teemp TABLE DATABCOPY teemp (teemp_id, teemp_emp_id, teemp_contractor) FROM stdin; teadminfalse699H?NT!01695797teexp TABLE DATACCOPY teexp (teexp_id, teexp_expcat_id, teexp_accnt_id) FROM stdin; teadminfalse701e?NU!01695802tehead TABLE DATACOPY tehead (tehead_id, tehead_number, tehead_weekending, tehead_lastupdated, tehead_notes, tehead_status, tehead_emp_id, tehead_warehous_id, tehead_username) FROM stdin; teadminfalse703?NV!01695818teitem TABLE DATACOPY teitem (teitem_id, teitem_tehead_id, teitem_linenumber, teitem_type, teitem_workdate, teitem_cust_id, teitem_vend_id, teitem_po, teitem_item_id, teitem_qty, teitem_rate, teitem_total, teitem_prjtask_id, teitem_lastupdated, teitem_billable, teitem_prepaid, teitem_notes, teitem_posted, teitem_curr_id, teitem_uom_id, teitem_invcitem_id, teitem_vodist_id, teitem_postedvalue, teitem_empcost) FROM stdin; teadminfalse705?NW!01695830teprj TABLE DATAZCOPY teprj (teprj_id, teprj_prj_id, teprj_cust_id, teprj_rate, teprj_curr_id) FROM stdin; teadminfalse707?NX!01695838 teprjtask TABLE DATACOPY teprjtask (teprjtask_id, teprjtask_cust_id, teprjtask_rate, teprjtask_item_id, teprjtask_prjtask_id, teprjtask_curr_id) FROM stdin; teadminfalse709?NY!01695847pkgcmd TABLE DATAmCOPY pkgcmd (cmd_id, cmd_module, cmd_title, cmd_descrip, cmd_privname, cmd_executable, cmd_name) FROM stdin; xtdesktopadminfalse711?NZ!01695855 pkgcmdarg TABLE DATAPCOPY pkgcmdarg (cmdarg_id, cmdarg_cmd_id, cmdarg_order, cmdarg_arg) FROM stdin; xtdesktopadminfalse712@N[!01695862pkgimage TABLE DATALCOPY pkgimage (image_id, image_name, image_descrip, image_data) FROM stdin; xtdesktopadminfalse7130@N\!01695869 pkgmetasql TABLE DATACOPY pkgmetasql (metasql_id, metasql_group, metasql_name, metasql_notes, metasql_query, metasql_lastuser, metasql_lastupdate, metasql_grade) FROM stdin; xtdesktopadminfalse714S]!01695877pkgpriv TABLE DATASCOPY pkgpriv (priv_id, priv_module, priv_name, priv_descrip, priv_seq) FROM stdin; xtdesktopadminfalse715.S^!01695884 pkgreport TABLE DATA~COPY pkgreport (report_id, report_name, report_sys, report_source, report_descrip, report_grade, report_loaddate) FROM stdin; xtdesktopadminfalse7161S_!01695891 pkgscript TABLE DATAoCOPY pkgscript (script_id, script_name, script_order, script_enabled, script_source, script_notes) FROM stdin; xtdesktopadminfalse71701S`!01695899 pkguiform TABLE DATAoCOPY pkguiform (uiform_id, uiform_name, uiform_order, uiform_enabled, uiform_source, uiform_notes) FROM stdin; xtdesktopadminfalse718ҘS26061696565 pkgcmd_pkey CONSTRAINTMALTER TABLE ONLY pkgcmd ADD CONSTRAINT pkgcmd_pkey PRIMARY KEY (cmd_id); @ALTER TABLE ONLY fixcountry.pkgcmd DROP CONSTRAINT pkgcmd_pkey;  fixcountryadminfalse26126126061696567pkgcmdarg_pkey CONSTRAINTVALTER TABLE ONLY pkgcmdarg ADD CONSTRAINT pkgcmdarg_pkey PRIMARY KEY (cmdarg_id); FALTER TABLE ONLY fixcountry.pkgcmdarg DROP CONSTRAINT pkgcmdarg_pkey;  fixcountryadminfalse26426426061696569 pkgimage_pkey CONSTRAINTSALTER TABLE ONLY pkgimage ADD CONSTRAINT pkgimage_pkey PRIMARY KEY (image_id); DALTER TABLE ONLY fixcountry.pkgimage DROP CONSTRAINT pkgimage_pkey;  fixcountryadminfalse26626626061696571pkgmetasql_pkey CONSTRAINTYALTER TABLE ONLY pkgmetasql ADD CONSTRAINT pkgmetasql_pkey PRIMARY KEY (metasql_id); HALTER TABLE ONLY fixcountry.pkgmetasql DROP CONSTRAINT pkgmetasql_pkey;  fixcountryadminfalse26926926061696573 pkgpriv_pkey CONSTRAINTPALTER TABLE ONLY pkgpriv ADD CONSTRAINT pkgpriv_pkey PRIMARY KEY (priv_id); BALTER TABLE ONLY fixcountry.pkgpriv DROP CONSTRAINT pkgpriv_pkey;  fixcountryadminfalse27227226061696575pkgreport_pkey CONSTRAINTVALTER TABLE ONLY pkgreport ADD CONSTRAINT pkgreport_pkey PRIMARY KEY (report_id); FALTER TABLE ONLY fixcountry.pkgreport DROP CONSTRAINT pkgreport_pkey;  fixcountryadminfalse27527526061696577pkgscript_pkey CONSTRAINTVALTER TABLE ONLY pkgscript ADD CONSTRAINT pkgscript_pkey PRIMARY KEY (script_id); FALTER TABLE ONLY fixcountry.pkgscript DROP CONSTRAINT pkgscript_pkey;  fixcountryadminfalse27827826061696579pkguiform_pkey CONSTRAINTVALTER TABLE ONLY pkguiform ADD CONSTRAINT pkguiform_pkey PRIMARY KEY (uiform_id); FALTER TABLE ONLY fixcountry.pkguiform DROP CONSTRAINT pkguiform_pkey;  fixcountryadminfalse28128126061696581 acalitem_pkey CONSTRAINTVALTER TABLE ONLY acalitem ADD CONSTRAINT acalitem_pkey PRIMARY KEY (acalitem_id); @ALTER TABLE ONLY public.acalitem DROP CONSTRAINT acalitem_pkey; publicadminfalse28228226061696583 accnt_pkey CONSTRAINTMALTER TABLE ONLY accnt ADD CONSTRAINT accnt_pkey PRIMARY KEY (accnt_id); :ALTER TABLE ONLY public.accnt DROP CONSTRAINT accnt_pkey; publicadminfalse19919926061696585addr_addr_number_key CONSTRAINTTALTER TABLE ONLY addr ADD CONSTRAINT addr_addr_number_key UNIQUE (addr_number); CALTER TABLE ONLY public.addr DROP CONSTRAINT addr_addr_number_key; publicadminfalse18418426061696587 addr_pkey CONSTRAINTJALTER TABLE ONLY addr ADD CONSTRAINT addr_pkey PRIMARY KEY (addr_id); 8ALTER TABLE ONLY public.addr DROP CONSTRAINT addr_pkey; publicadminfalse18418426061696589 alarm_pkey CONSTRAINTMALTER TABLE ONLY alarm ADD CONSTRAINT alarm_pkey PRIMARY KEY (alarm_id); :ALTER TABLE ONLY public.alarm DROP CONSTRAINT alarm_pkey; publicadminfalse28528526061696591 apaccnt_pkey CONSTRAINTSALTER TABLE ONLY apaccnt ADD CONSTRAINT apaccnt_pkey PRIMARY KEY (apaccnt_id); >ALTER TABLE ONLY public.apaccnt DROP CONSTRAINT apaccnt_pkey; publicadminfalse28728726061696593 apapply_pkey CONSTRAINTSALTER TABLE ONLY apapply ADD CONSTRAINT apapply_pkey PRIMARY KEY (apapply_id); >ALTER TABLE ONLY public.apapply DROP CONSTRAINT apapply_pkey; publicadminfalse28928926061696595apcreditapply_pkey CONSTRAINTeALTER TABLE ONLY apcreditapply ADD CONSTRAINT apcreditapply_pkey PRIMARY KEY (apcreditapply_id); JALTER TABLE ONLY public.apcreditapply DROP CONSTRAINT apcreditapply_pkey; publicadminfalse29129126061696597 apopen_pkey CONSTRAINTPALTER TABLE ONLY apopen ADD CONSTRAINT apopen_pkey PRIMARY KEY (apopen_id); <ALTER TABLE ONLY public.apopen DROP CONSTRAINT apopen_pkey; publicadminfalse15515526061696599apopentax_pkey CONSTRAINTWALTER TABLE ONLY apopentax ADD CONSTRAINT apopentax_pkey PRIMARY KEY (taxhist_id); BALTER TABLE ONLY public.apopentax DROP CONSTRAINT apopentax_pkey; publicadminfalse29529526061696601apselect_apselect_apopen_id_key CONSTRAINTjALTER TABLE ONLY apselect ADD CONSTRAINT apselect_apselect_apopen_id_key UNIQUE (apselect_apopen_id); RALTER TABLE ONLY public.apselect DROP CONSTRAINT apselect_apselect_apopen_id_key; publicadminfalse29629626061696603 apselect_pkey CONSTRAINTVALTER TABLE ONLY apselect ADD CONSTRAINT apselect_pkey PRIMARY KEY (apselect_id); @ALTER TABLE ONLY public.apselect DROP CONSTRAINT apselect_pkey; publicadminfalse29629626061696605 araccnt_pkey CONSTRAINTSALTER TABLE ONLY araccnt ADD CONSTRAINT araccnt_pkey PRIMARY KEY (araccnt_id); >ALTER TABLE ONLY public.araccnt DROP CONSTRAINT araccnt_pkey; publicadminfalse29829826061696607 arapply_pkey CONSTRAINTSALTER TABLE ONLY arapply ADD CONSTRAINT arapply_pkey PRIMARY KEY (arapply_id); >ALTER TABLE ONLY public.arapply DROP CONSTRAINT arapply_pkey; publicadminfalse30030026061696609arcreditapply_pkey CONSTRAINTeALTER TABLE ONLY arcreditapply ADD CONSTRAINT arcreditapply_pkey PRIMARY KEY (arcreditapply_id); JALTER TABLE ONLY public.arcreditapply DROP CONSTRAINT arcreditapply_pkey; publicadminfalse30330326061696611 aropen_pkey CONSTRAINTPALTER TABLE ONLY aropen ADD CONSTRAINT aropen_pkey PRIMARY KEY (aropen_id); <ALTER TABLE ONLY public.aropen DROP CONSTRAINT aropen_pkey; publicadminfalse159159n26061696613aropenalloc_pkey CONSTRAINTALTER TABLE ONLY aropenalloc ADD CONSTRAINT aropenalloc_pkey PRIMARY KEY (aropenalloc_aropen_id, aropenalloc_doctype, aropenalloc_doc_id); FALTER TABLE ONLY public.aropenalloc DROP CONSTRAINT aropenalloc_pkey; publicadminfalse25125125125126061696615aropentax_pkey CONSTRAINTWALTER TABLE ONLY aropentax ADD CONSTRAINT aropentax_pkey PRIMARY KEY (taxhist_id); BALTER TABLE ONLY public.aropentax DROP CONSTRAINT aropentax_pkey; publicadminfalse30730726061696617 asohist_pkey CONSTRAINTSALTER TABLE ONLY asohist ADD CONSTRAINT asohist_pkey PRIMARY KEY (asohist_id); >ALTER TABLE ONLY public.asohist DROP CONSTRAINT asohist_pkey; publicadminfalse30830826061696619asohisttax_pkey CONSTRAINTYALTER TABLE ONLY asohisttax ADD CONSTRAINT asohisttax_pkey PRIMARY KEY (taxhist_id); DALTER TABLE ONLY public.asohisttax DROP CONSTRAINT asohisttax_pkey; publicadminfalse31031026061696621atlasmap_atlasmap_name_key CONSTRAINT`ALTER TABLE ONLY atlasmap ADD CONSTRAINT atlasmap_atlasmap_name_key UNIQUE (atlasmap_name); MALTER TABLE ONLY public.atlasmap DROP CONSTRAINT atlasmap_atlasmap_name_key; publicadminfalse31131126061696623 atlasmap_pkey CONSTRAINTVALTER TABLE ONLY atlasmap ADD CONSTRAINT atlasmap_pkey PRIMARY KEY (atlasmap_id); @ALTER TABLE ONLY public.atlasmap DROP CONSTRAINT atlasmap_pkey; publicadminfalse31131126061696625bankaccnt_bankaccnt_name_key CONSTRAINTdALTER TABLE ONLY bankaccnt ADD CONSTRAINT bankaccnt_bankaccnt_name_key UNIQUE (bankaccnt_name); PALTER TABLE ONLY public.bankaccnt DROP CONSTRAINT bankaccnt_bankaccnt_name_key; publicadminfalse20220226061696627bankaccnt_pkey CONSTRAINTYALTER TABLE ONLY bankaccnt ADD CONSTRAINT bankaccnt_pkey PRIMARY KEY (bankaccnt_id); BALTER TABLE ONLY public.bankaccnt DROP CONSTRAINT bankaccnt_pkey; publicadminfalse20220226061696629 bankadj_pkey CONSTRAINTSALTER TABLE ONLY bankadj ADD CONSTRAINT bankadj_pkey PRIMARY KEY (bankadj_id); >ALTER TABLE ONLY public.bankadj DROP CONSTRAINT bankadj_pkey; publicadminfalse31531526061696631 bankadjtype_bankadjtype_name_key CONSTRAINTlALTER TABLE ONLY bankadjtype ADD CONSTRAINT bankadjtype_bankadjtype_name_key UNIQUE (bankadjtype_name); VALTER TABLE ONLY public.bankadjtype DROP CONSTRAINT bankadjtype_bankadjtype_name_key; publicadminfalse31731726061696633bankadjtype_pkey CONSTRAINT_ALTER TABLE ONLY bankadjtype ADD CONSTRAINT bankadjtype_pkey PRIMARY KEY (bankadjtype_id); FALTER TABLE ONLY public.bankadjtype DROP CONSTRAINT bankadjtype_pkey; publicadminfalse31731726061696635 bankrec_pkey CONSTRAINTSALTER TABLE ONLY bankrec ADD CONSTRAINT bankrec_pkey PRIMARY KEY (bankrec_id); >ALTER TABLE ONLY public.bankrec DROP CONSTRAINT bankrec_pkey; publicadminfalse31931926061696637bankrecitem_pkey CONSTRAINT_ALTER TABLE ONLY bankrecitem ADD CONSTRAINT bankrecitem_pkey PRIMARY KEY (bankrecitem_id); FALTER TABLE ONLY public.bankrecitem DROP CONSTRAINT bankrecitem_pkey; publicadminfalse32132126061696639 bomhead_pkey CONSTRAINTSALTER TABLE ONLY bomhead ADD CONSTRAINT bomhead_pkey PRIMARY KEY (bomhead_id); >ALTER TABLE ONLY public.bomhead DROP CONSTRAINT bomhead_pkey; publicadminfalse19619626061696641 bomitem_pkey CONSTRAINTSALTER TABLE ONLY bomitem ADD CONSTRAINT bomitem_pkey PRIMARY KEY (bomitem_id); >ALTER TABLE ONLY public.bomitem DROP CONSTRAINT bomitem_pkey; publicadminfalse15115126061696643bomitemcost_pkey CONSTRAINT_ALTER TABLE ONLY bomitemcost ADD CONSTRAINT bomitemcost_pkey PRIMARY KEY (bomitemcost_id); FALTER TABLE ONLY public.bomitemcost DROP CONSTRAINT bomitemcost_pkey; publicadminfalse32532526061696645bomitemsub_pkey CONSTRAINT\ALTER TABLE ONLY bomitemsub ADD CONSTRAINT bomitemsub_pkey PRIMARY KEY (bomitemsub_id); DALTER TABLE ONLY public.bomitemsub DROP CONSTRAINT bomitemsub_pkey; publicadminfalse19719726061696647 bomwork_pkey CONSTRAINTSALTER TABLE ONLY bomwork ADD CONSTRAINT bomwork_pkey PRIMARY KEY (bomwork_id); >ALTER TABLE ONLY public.bomwork DROP CONSTRAINT bomwork_pkey; publicadminfalse32832826061696649budghead_budghead_name_key CONSTRAINT`ALTER TABLE ONLY budghead ADD CONSTRAINT budghead_budghead_name_key UNIQUE (budghead_name); MALTER TABLE ONLY public.budghead DROP CONSTRAINT budghead_budghead_name_key; publicadminfalse19819826061696651 budghead_pkey CONSTRAINTVALTER TABLE ONLY budghead ADD CONSTRAINT budghead_pkey PRIMARY KEY (budghead_id); @ALTER TABLE ONLY public.budghead DROP CONSTRAINT budghead_pkey; publicadminfalse19819826061696653 budgitem_pkey CONSTRAINTVALTER TABLE ONLY budgitem ADD CONSTRAINT budgitem_pkey PRIMARY KEY (budgitem_id); @ALTER TABLE ONLY public.budgitem DROP CONSTRAINT budgitem_pkey; publicadminfalse20020026061696655 calhead_pkey CONSTRAINTSALTER TABLE ONLY calhead ADD CONSTRAINT calhead_pkey PRIMARY KEY (calhead_id); >ALTER TABLE ONLY public.calhead DROP CONSTRAINT calhead_pkey; publicadminfalse33233226061696657cashrcpt_cashrcpt_number_key CONSTRAINTdALTER TABLE ONLY cashrcpt ADD CONSTRAINT cashrcpt_cashrcpt_number_key UNIQUE (cashrcpt_number); OALTER TABLE ONLY public.cashrcpt DROP CONSTRAINT cashrcpt_cashrcpt_number_key; publicadminfalse20320326061696659 cashrcpt_pkey CONSTRAINTVALTER TABLE ONLY cashrcpt ADD CONSTRAINT cashrcpt_pkey PRIMARY KEY (cashrcpt_id); @ALTER TABLE ONLY public.cashrcpt DROP CONSTRAINT cashrcpt_pkey; publicadminfalse20320326061696661cashrcptitem_pkey CONSTRAINTbALTER TABLE ONLY cashrcptitem ADD CONSTRAINT cashrcptitem_pkey PRIMARY KEY (cashrcptitem_id); HALTER TABLE ONLY public.cashrcptitem DROP CONSTRAINT cashrcptitem_pkey; publicadminfalse20420426061696663cashrcptmisc_pkey CONSTRAINTbALTER TABLE ONLY cashrcptmisc ADD CONSTRAINT cashrcptmisc_pkey PRIMARY KEY (cashrcptmisc_id); HALTER TABLE ONLY public.cashrcptmisc DROP CONSTRAINT cashrcptmisc_pkey; publicadminfalse20520526061696665 ccard_pkey CONSTRAINTMALTER TABLE ONLY ccard ADD CONSTRAINT ccard_pkey PRIMARY KEY (ccard_id); :ALTER TABLE ONLY public.ccard DROP CONSTRAINT ccard_pkey; publicadminfalse20620626061696667ccardaud_ccard_pkey CONSTRAINT\ALTER TABLE ONLY ccardaud ADD CONSTRAINT ccardaud_ccard_pkey PRIMARY KEY (ccardaud_id); FALTER TABLE ONLY public.ccardaud DROP CONSTRAINT ccardaud_ccard_pkey; publicadminfalse33833826061696669ccbank_ccbank_ccard_type_key CONSTRAINTdALTER TABLE ONLY ccbank ADD CONSTRAINT ccbank_ccbank_ccard_type_key UNIQUE (ccbank_ccard_type); MALTER TABLE ONLY public.ccbank DROP CONSTRAINT ccbank_ccbank_ccard_type_key; publicadminfalse34034026061696671 ccbank_pkey CONSTRAINTPALTER TABLE ONLY ccbank ADD CONSTRAINT ccbank_pkey PRIMARY KEY (ccbank_id); <ALTER TABLE ONLY public.ccbank DROP CONSTRAINT ccbank_pkey; publicadminfalse34034026061696673 ccpay_pkey CONSTRAINTMALTER TABLE ONLY ccpay ADD CONSTRAINT ccpay_pkey PRIMARY KEY (ccpay_id); :ALTER TABLE ONLY public.ccpay DROP CONSTRAINT ccpay_pkey; publicadminfalse34234226061696675char_char_name_key CONSTRAINTRALTER TABLE ONLY "char" ADD CONSTRAINT char_char_name_key UNIQUE (char_name); CALTER TABLE ONLY public."char" DROP CONSTRAINT char_char_name_key; publicadminfalse18518526061696677 char_pkey CONSTRAINTLALTER TABLE ONLY "char" ADD CONSTRAINT char_pkey PRIMARY KEY (char_id); :ALTER TABLE ONLY public."char" DROP CONSTRAINT char_pkey; publicadminfalse18518526061696679 charass_pkey CONSTRAINTSALTER TABLE ONLY charass ADD CONSTRAINT charass_pkey PRIMARY KEY (charass_id); >ALTER TABLE ONLY public.charass DROP CONSTRAINT charass_pkey; publicadminfalse18618626061696681 charopt_pkey CONSTRAINTSALTER TABLE ONLY charopt ADD CONSTRAINT charopt_pkey PRIMARY KEY (charopt_id); >ALTER TABLE ONLY public.charopt DROP CONSTRAINT charopt_pkey; publicadminfalse34634626061696683checkhead_pkey CONSTRAINTYALTER TABLE ONLY checkhead ADD CONSTRAINT checkhead_pkey PRIMARY KEY (checkhead_id); BALTER TABLE ONLY public.checkhead DROP CONSTRAINT checkhead_pkey; publicadminfalse34834826061696685checkitem_pkey CONSTRAINTYALTER TABLE ONLY checkitem ADD CONSTRAINT checkitem_pkey PRIMARY KEY (checkitem_id); BALTER TABLE ONLY public.checkitem DROP CONSTRAINT checkitem_pkey; publicadminfalse350350 26061746513classcode_classcode_code_key CONSTRAINTdALTER TABLE ONLY classcode ADD CONSTRAINT classcode_classcode_code_key UNIQUE (classcode_code); PALTER TABLE ONLY public.classcode DROP CONSTRAINT classcode_classcode_code_key; publicadminfalse224224 26061696687classcode_pkey CONSTRAINTYALTER TABLE ONLY classcode ADD CONSTRAINT classcode_pkey PRIMARY KEY (classcode_id); BALTER TABLE ONLY public.classcode DROP CONSTRAINT classcode_pkey; publicadminfalse22422426061696689cmd_pkey CONSTRAINTGALTER TABLE ONLY cmd ADD CONSTRAINT cmd_pkey PRIMARY KEY (cmd_id); 6ALTER TABLE ONLY public.cmd DROP CONSTRAINT cmd_pkey; publicadminfalse25925926061696691 cmdarg_pkey CONSTRAINTPALTER TABLE ONLY cmdarg ADD CONSTRAINT cmdarg_pkey PRIMARY KEY (cmdarg_id); <ALTER TABLE ONLY public.cmdarg DROP CONSTRAINT cmdarg_pkey; publicadminfalse262262.26061746516cmhead_cmhead_number_key CONSTRAINT\ALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_cmhead_number_key UNIQUE (cmhead_number); IALTER TABLE ONLY public.cmhead DROP CONSTRAINT cmhead_cmhead_number_key; publicadminfalse164164126061696693 cmhead_pkey CONSTRAINTPALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_pkey PRIMARY KEY (cmhead_id); <ALTER TABLE ONLY public.cmhead DROP CONSTRAINT cmhead_pkey; publicadminfalse16416426061696695cmheadtax_pkey CONSTRAINTWALTER TABLE ONLY cmheadtax ADD CONSTRAINT cmheadtax_pkey PRIMARY KEY (taxhist_id); BALTER TABLE ONLY public.cmheadtax DROP CONSTRAINT cmheadtax_pkey; publicadminfalse354354;26061696697"cmitem_cmhead_id_linenumber_unique CONSTRAINT|ALTER TABLE ONLY cmitem ADD CONSTRAINT cmitem_cmhead_id_linenumber_unique UNIQUE (cmitem_cmhead_id, cmitem_linenumber); SALTER TABLE ONLY public.cmitem DROP CONSTRAINT cmitem_cmhead_id_linenumber_unique; publicadminfalse167167167=26061696699 cmitem_pkey CONSTRAINTPALTER TABLE ONLY cmitem ADD CONSTRAINT cmitem_pkey PRIMARY KEY (cmitem_id); <ALTER TABLE ONLY public.cmitem DROP CONSTRAINT cmitem_pkey; publicadminfalse16716726061696701cmitemtax_pkey CONSTRAINTWALTER TABLE ONLY cmitemtax ADD CONSTRAINT cmitemtax_pkey PRIMARY KEY (taxhist_id); BALTER TABLE ONLY public.cmitemtax DROP CONSTRAINT cmitemtax_pkey; publicadminfalse35635626061696703cmnttype_cmnttype_name_key CONSTRAINT`ALTER TABLE ONLY cmnttype ADD CONSTRAINT cmnttype_cmnttype_name_key UNIQUE (cmnttype_name); MALTER TABLE ONLY public.cmnttype DROP CONSTRAINT cmnttype_cmnttype_name_key; publicadminfalse18718726061696705 cmnttype_pkey CONSTRAINTVALTER TABLE ONLY cmnttype ADD CONSTRAINT cmnttype_pkey PRIMARY KEY (cmnttype_id); @ALTER TABLE ONLY public.cmnttype DROP CONSTRAINT cmnttype_pkey; publicadminfalse18718726061696707cmnttypesource_pkey CONSTRAINThALTER TABLE ONLY cmnttypesource ADD CONSTRAINT cmnttypesource_pkey PRIMARY KEY (cmnttypesource_id); LALTER TABLE ONLY public.cmnttypesource DROP CONSTRAINT cmnttypesource_pkey; publicadminfalse35835826061696709cntct_cntct_number_key CONSTRAINTXALTER TABLE ONLY cntct ADD CONSTRAINT cntct_cntct_number_key UNIQUE (cntct_number); FALTER TABLE ONLY public.cntct DROP CONSTRAINT cntct_cntct_number_key; publicadminfalse15215226061696711 cntct_pkey CONSTRAINTMALTER TABLE ONLY cntct ADD CONSTRAINT cntct_pkey PRIMARY KEY (cntct_id); :ALTER TABLE ONLY public.cntct DROP CONSTRAINT cntct_pkey; publicadminfalse15215226061696713cntctaddr_pkey CONSTRAINTYALTER TABLE ONLY cntctaddr ADD CONSTRAINT cntctaddr_pkey PRIMARY KEY (cntctaddr_id); BALTER TABLE ONLY public.cntctaddr DROP CONSTRAINT cntctaddr_pkey; publicadminfalse36136126061696715cntctdata_pkey CONSTRAINTYALTER TABLE ONLY cntctdata ADD CONSTRAINT cntctdata_pkey PRIMARY KEY (cntctdata_id); BALTER TABLE ONLY public.cntctdata DROP CONSTRAINT cntctdata_pkey; publicadminfalse36336326061696717 cntcteml_pkey CONSTRAINTVALTER TABLE ONLY cntcteml ADD CONSTRAINT cntcteml_pkey PRIMARY KEY (cntcteml_id); @ALTER TABLE ONLY public.cntcteml DROP CONSTRAINT cntcteml_pkey; publicadminfalse36536526061696719cntctmrgd_pkey CONSTRAINT_ALTER TABLE ONLY cntctmrgd ADD CONSTRAINT cntctmrgd_pkey PRIMARY KEY (cntctmrgd_cntct_id); BALTER TABLE ONLY public.cntctmrgd DROP CONSTRAINT cntctmrgd_pkey; publicadminfalse36736726061696721 cntctsel_pkey CONSTRAINT\ALTER TABLE ONLY cntctsel ADD CONSTRAINT cntctsel_pkey PRIMARY KEY (cntctsel_cntct_id); @ALTER TABLE ONLY public.cntctsel DROP CONSTRAINT cntctsel_pkey; publicadminfalse36836826061696723 cntslip_pkey CONSTRAINTSALTER TABLE ONLY cntslip ADD CONSTRAINT cntslip_pkey PRIMARY KEY (cntslip_id); >ALTER TABLE ONLY public.cntslip DROP CONSTRAINT cntslip_pkey; publicadminfalse36936926061696725 cobill_pkey CONSTRAINTPALTER TABLE ONLY cobill ADD CONSTRAINT cobill_pkey PRIMARY KEY (cobill_id); <ALTER TABLE ONLY public.cobill DROP CONSTRAINT cobill_pkey; publicadminfalse371371 26061696727cobilltax_pkey CONSTRAINTWALTER TABLE ONLY cobilltax ADD CONSTRAINT cobilltax_pkey PRIMARY KEY (taxhist_id); BALTER TABLE ONLY public.cobilltax DROP CONSTRAINT cobilltax_pkey; publicadminfalse373373 26061696729 cobmisc_pkey CONSTRAINTSALTER TABLE ONLY cobmisc ADD CONSTRAINT cobmisc_pkey PRIMARY KEY (cobmisc_id); >ALTER TABLE ONLY public.cobmisc DROP CONSTRAINT cobmisc_pkey; publicadminfalse37437426061696731cobmisctax_pkey CONSTRAINTYALTER TABLE ONLY cobmisctax ADD CONSTRAINT cobmisctax_pkey PRIMARY KEY (taxhist_id); DALTER TABLE ONLY public.cobmisctax DROP CONSTRAINT cobmisctax_pkey; publicadminfalse376376j26061696733cohead_cohead_number_key CONSTRAINT\ALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_number_key UNIQUE (cohead_number); IALTER TABLE ONLY public.cohead DROP CONSTRAINT cohead_cohead_number_key; publicadminfalse176176p26061696735 cohead_pkey CONSTRAINTPALTER TABLE ONLY cohead ADD CONSTRAINT cohead_pkey PRIMARY KEY (cohead_id); <ALTER TABLE ONLY public.cohead DROP CONSTRAINT cohead_pkey; publicadminfalse176176s26061696737 cohist_pkey CONSTRAINTPALTER TABLE ONLY cohist ADD CONSTRAINT cohist_pkey PRIMARY KEY (cohist_id); <ALTER TABLE ONLY public.cohist DROP CONSTRAINT cohist_pkey; publicadminfalse252252y26061696739cohisttax_pkey CONSTRAINTWALTER TABLE ONLY cohisttax ADD CONSTRAINT cohisttax_pkey PRIMARY KEY (taxhist_id); BALTER TABLE ONLY public.cohisttax DROP CONSTRAINT cohisttax_pkey; publicadminfalse255255w26061696741 coitem_pkey CONSTRAINTPALTER TABLE ONLY coitem ADD CONSTRAINT coitem_pkey PRIMARY KEY (coitem_id); <ALTER TABLE ONLY public.coitem DROP CONSTRAINT coitem_pkey; publicadminfalse17717726061696743 comment_pkey CONSTRAINTSALTER TABLE ONLY comment ADD CONSTRAINT comment_pkey PRIMARY KEY (comment_id); >ALTER TABLE ONLY public.comment DROP CONSTRAINT comment_pkey; publicadminfalse18818826061696745company_company_number_key CONSTRAINT`ALTER TABLE ONLY company ADD CONSTRAINT company_company_number_key UNIQUE (company_number); LALTER TABLE ONLY public.company DROP CONSTRAINT company_company_number_key; publicadminfalse38138126061696747 company_pkey CONSTRAINTSALTER TABLE ONLY company ADD CONSTRAINT company_pkey PRIMARY KEY (company_id); >ALTER TABLE ONLY public.company DROP CONSTRAINT company_pkey; publicadminfalse38138126061746321 contrct_pkey CONSTRAINTSALTER TABLE ONLY contrct ADD CONSTRAINT contrct_pkey PRIMARY KEY (contrct_id); >ALTER TABLE ONLY public.contrct DROP CONSTRAINT contrct_pkey; publicadminfalse72072026061746522costcat_costcat_code_key CONSTRAINT\ALTER TABLE ONLY costcat ADD CONSTRAINT costcat_costcat_code_key UNIQUE (costcat_code); JALTER TABLE ONLY public.costcat DROP CONSTRAINT costcat_costcat_code_key; publicadminfalse22922926061696749 costcat_pkey CONSTRAINTSALTER TABLE ONLY costcat ADD CONSTRAINT costcat_pkey PRIMARY KEY (costcat_id); >ALTER TABLE ONLY public.costcat DROP CONSTRAINT costcat_pkey; publicadminfalse22922926061746525costelem_costelem_type_key CONSTRAINT`ALTER TABLE ONLY costelem ADD CONSTRAINT costelem_costelem_type_key UNIQUE (costelem_type); MALTER TABLE ONLY public.costelem DROP CONSTRAINT costelem_costelem_type_key; publicadminfalse22722726061696751 costelem_pkey CONSTRAINTVALTER TABLE ONLY costelem ADD CONSTRAINT costelem_pkey PRIMARY KEY (costelem_id); @ALTER TABLE ONLY public.costelem DROP CONSTRAINT costelem_pkey; publicadminfalse22722726061696753 costhist_pkey CONSTRAINTVALTER TABLE ONLY costhist ADD CONSTRAINT costhist_pkey PRIMARY KEY (costhist_id); @ALTER TABLE ONLY public.costhist DROP CONSTRAINT costhist_pkey; publicadminfalse38838826061696755!costupdate_costupdate_item_id_key CONSTRAINTnALTER TABLE ONLY costupdate ADD CONSTRAINT costupdate_costupdate_item_id_key UNIQUE (costupdate_item_id); VALTER TABLE ONLY public.costupdate DROP CONSTRAINT costupdate_costupdate_item_id_key; publicadminfalse39039026061696757country_country_abbr_key CONSTRAINT\ALTER TABLE ONLY country ADD CONSTRAINT country_country_abbr_key UNIQUE (country_abbr); JALTER TABLE ONLY public.country DROP CONSTRAINT country_country_abbr_key; publicadminfalse39139126061696759country_country_name_key CONSTRAINT\ALTER TABLE ONLY country ADD CONSTRAINT country_country_name_key UNIQUE (country_name); JALTER TABLE ONLY public.country DROP CONSTRAINT country_country_name_key; publicadminfalse39139126061696761 country_pkey CONSTRAINTSALTER TABLE ONLY country ADD CONSTRAINT country_pkey PRIMARY KEY (country_id); >ALTER TABLE ONLY public.country DROP CONSTRAINT country_pkey; publicadminfalse39139126061696763crmacct_crmacct_number_key CONSTRAINT`ALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_number_key UNIQUE (crmacct_number); LALTER TABLE ONLY public.crmacct DROP CONSTRAINT crmacct_crmacct_number_key; publicadminfalse15315326061696765 crmacct_pkey CONSTRAINTSALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_pkey PRIMARY KEY (crmacct_id); >ALTER TABLE ONLY public.crmacct DROP CONSTRAINT crmacct_pkey; publicadminfalse153153#26061696767crmacctsel_pkey CONSTRAINThALTER TABLE ONLY crmacctsel ADD CONSTRAINT crmacctsel_pkey PRIMARY KEY (crmacctsel_src_crmacct_id); DALTER TABLE ONLY public.crmacctsel DROP CONSTRAINT crmacctsel_pkey; publicadminfalse395395%26061696769curr_rate_curr_id_key CONSTRAINTfALTER TABLE ONLY curr_rate ADD CONSTRAINT curr_rate_curr_id_key UNIQUE (curr_id, curr_effective); IALTER TABLE ONLY public.curr_rate DROP CONSTRAINT curr_rate_curr_id_key; publicadminfalse396396396'26061696771curr_rate_pkey CONSTRAINTYALTER TABLE ONLY curr_rate ADD CONSTRAINT curr_rate_pkey PRIMARY KEY (curr_rate_id); BALTER TABLE ONLY public.curr_rate DROP CONSTRAINT curr_rate_pkey; publicadminfalse39639626061696773curr_symbol_curr_abbr_key CONSTRAINT^ALTER TABLE ONLY curr_symbol ADD CONSTRAINT curr_symbol_curr_abbr_key UNIQUE (curr_abbr); OALTER TABLE ONLY public.curr_symbol DROP CONSTRAINT curr_symbol_curr_abbr_key; publicadminfalse156156 26061696775curr_symbol_curr_name_key CONSTRAINT^ALTER TABLE ONLY curr_symbol ADD CONSTRAINT curr_symbol_curr_name_key UNIQUE (curr_name); OALTER TABLE ONLY public.curr_symbol DROP CONSTRAINT curr_symbol_curr_name_key; publicadminfalse156156 26061696777curr_symbol_pkey CONSTRAINTXALTER TABLE ONLY curr_symbol ADD CONSTRAINT curr_symbol_pkey PRIMARY KEY (curr_id); FALTER TABLE ONLY public.curr_symbol DROP CONSTRAINT curr_symbol_pkey; publicadminfalse15615626061696779 cust_pkey CONSTRAINTNALTER TABLE ONLY custinfo ADD CONSTRAINT cust_pkey PRIMARY KEY (cust_id); <ALTER TABLE ONLY public.custinfo DROP CONSTRAINT cust_pkey; publicadminfalse160160)26061696781 custform_pkey CONSTRAINTVALTER TABLE ONLY custform ADD CONSTRAINT custform_pkey PRIMARY KEY (custform_id); @ALTER TABLE ONLY public.custform DROP CONSTRAINT custform_pkey; publicadminfalse400400+26061696783 custgrp_pkey CONSTRAINTSALTER TABLE ONLY custgrp ADD CONSTRAINT custgrp_pkey PRIMARY KEY (custgrp_id); >ALTER TABLE ONLY public.custgrp DROP CONSTRAINT custgrp_pkey; publicadminfalse402402-26061696785custgrpitem_pkey CONSTRAINT_ALTER TABLE ONLY custgrpitem ADD CONSTRAINT custgrpitem_pkey PRIMARY KEY (custgrpitem_id); FALTER TABLE ONLY public.custgrpitem DROP CONSTRAINT custgrpitem_pkey; publicadminfalse404404 26061696787custinfo_cust_number_key CONSTRAINT\ALTER TABLE ONLY custinfo ADD CONSTRAINT custinfo_cust_number_key UNIQUE (cust_number); KALTER TABLE ONLY public.custinfo DROP CONSTRAINT custinfo_cust_number_key; publicadminfalse16016026061696789custtype_custtype_code_key CONSTRAINT`ALTER TABLE ONLY custtype ADD CONSTRAINT custtype_custtype_code_key UNIQUE (custtype_code); MALTER TABLE ONLY public.custtype DROP CONSTRAINT custtype_custtype_code_key; publicadminfalse20720726061696791 custtype_pkey CONSTRAINTVALTER TABLE ONLY custtype ADD CONSTRAINT custtype_pkey PRIMARY KEY (custtype_id); @ALTER TABLE ONLY public.custtype DROP CONSTRAINT custtype_pkey; publicadminfalse20720726061696793dept_dept_number_key CONSTRAINTTALTER TABLE ONLY dept ADD CONSTRAINT dept_dept_number_key UNIQUE (dept_number); CALTER TABLE ONLY public.dept DROP CONSTRAINT dept_dept_number_key; publicadminfalse21321326061696795 dept_pkey CONSTRAINTJALTER TABLE ONLY dept ADD CONSTRAINT dept_pkey PRIMARY KEY (dept_id); 8ALTER TABLE ONLY public.dept DROP CONSTRAINT dept_pkey; publicadminfalse213213/26061696797destination_pkey CONSTRAINT_ALTER TABLE ONLY destination ADD CONSTRAINT destination_pkey PRIMARY KEY (destination_id); FALTER TABLE ONLY public.destination DROP CONSTRAINT destination_pkey; publicadminfalse40840826061696799 docass_pkey CONSTRAINTPALTER TABLE ONLY docass ADD CONSTRAINT docass_pkey PRIMARY KEY (docass_id); <ALTER TABLE ONLY public.docass DROP CONSTRAINT docass_pkey; publicadminfalse18918926061696801emp_emp_code_key CONSTRAINTLALTER TABLE ONLY emp ADD CONSTRAINT emp_emp_code_key UNIQUE (emp_code); >ALTER TABLE ONLY public.emp DROP CONSTRAINT emp_emp_code_key; publicadminfalse21421426061696803emp_emp_number_key CONSTRAINTPALTER TABLE ONLY emp ADD CONSTRAINT emp_emp_number_key UNIQUE (emp_number); @ALTER TABLE ONLY public.emp DROP CONSTRAINT emp_emp_number_key; publicadminfalse21421426061696805emp_pkey CONSTRAINTGALTER TABLE ONLY emp ADD CONSTRAINT emp_pkey PRIMARY KEY (emp_id); 6ALTER TABLE ONLY public.emp DROP CONSTRAINT emp_pkey; publicadminfalse214214826061696807empgrp_empgrp_name_key CONSTRAINTXALTER TABLE ONLY empgrp ADD CONSTRAINT empgrp_empgrp_name_key UNIQUE (empgrp_name); GALTER TABLE ONLY public.empgrp DROP CONSTRAINT empgrp_empgrp_name_key; publicadminfalse412412:26061696809 empgrp_pkey CONSTRAINTPALTER TABLE ONLY empgrp ADD CONSTRAINT empgrp_pkey PRIMARY KEY (empgrp_id); <ALTER TABLE ONLY public.empgrp DROP CONSTRAINT empgrp_pkey; publicadminfalse412412<26061696811empgrpitem_pkey CONSTRAINT\ALTER TABLE ONLY empgrpitem ADD CONSTRAINT empgrpitem_pkey PRIMARY KEY (empgrpitem_id); DALTER TABLE ONLY public.empgrpitem DROP CONSTRAINT empgrpitem_pkey; publicadminfalse414414@26061696813 evntlog_pkey CONSTRAINTSALTER TABLE ONLY evntlog ADD CONSTRAINT evntlog_pkey PRIMARY KEY (evntlog_id); >ALTER TABLE ONLY public.evntlog DROP CONSTRAINT evntlog_pkey; publicadminfalse416416C26061696815 evntnot_pkey CONSTRAINTSALTER TABLE ONLY evntnot ADD CONSTRAINT evntnot_pkey PRIMARY KEY (evntnot_id); >ALTER TABLE ONLY public.evntnot DROP CONSTRAINT evntnot_pkey; publicadminfalse418418F26061746538evnttype_evnttype_name_key CONSTRAINT`ALTER TABLE ONLY evnttype ADD CONSTRAINT evnttype_evnttype_name_key UNIQUE (evnttype_name); MALTER TABLE ONLY public.evnttype DROP CONSTRAINT evnttype_evnttype_name_key; publicadminfalse420420H26061696817 evnttype_pkey CONSTRAINTVALTER TABLE ONLY evnttype ADD CONSTRAINT evnttype_pkey PRIMARY KEY (evnttype_id); @ALTER TABLE ONLY public.evnttype DROP CONSTRAINT evnttype_pkey; publicadminfalse420420Y26061696819expcat_expcat_code_key CONSTRAINTXALTER TABLE ONLY expcat ADD CONSTRAINT expcat_expcat_code_key UNIQUE (expcat_code); GALTER TABLE ONLY public.expcat DROP CONSTRAINT expcat_expcat_code_key; publicadminfalse245245[26061696821 expcat_pkey CONSTRAINTPALTER TABLE ONLY expcat ADD CONSTRAINT expcat_pkey PRIMARY KEY (expcat_id); <ALTER TABLE ONLY public.expcat DROP CONSTRAINT expcat_pkey; publicadminfalse24524526061696823 file_pkey CONSTRAINTJALTER TABLE ONLY file ADD CONSTRAINT file_pkey PRIMARY KEY (file_id); 8ALTER TABLE ONLY public.file DROP CONSTRAINT file_pkey; publicadminfalse190190K26061696825 filter_pkey CONSTRAINTPALTER TABLE ONLY filter ADD CONSTRAINT filter_pkey PRIMARY KEY (filter_id); <ALTER TABLE ONLY public.filter DROP CONSTRAINT filter_pkey; publicadminfalse424424S26061696827fkey_flcol_key CONSTRAINTQALTER TABLE ONLY flcol ADD CONSTRAINT fkey_flcol_key PRIMARY KEY (flcol_id); >ALTER TABLE ONLY public.flcol DROP CONSTRAINT fkey_flcol_key; publicadminfalse428428U26061696829 flgrp_pkey CONSTRAINTMALTER TABLE ONLY flgrp ADD CONSTRAINT flgrp_pkey PRIMARY KEY (flgrp_id); :ALTER TABLE ONLY public.flgrp DROP CONSTRAINT flgrp_pkey; publicadminfalse430430M26061696831flhead_flhead_name_key CONSTRAINTXALTER TABLE ONLY flhead ADD CONSTRAINT flhead_flhead_name_key UNIQUE (flhead_name); GALTER TABLE ONLY public.flhead DROP CONSTRAINT flhead_flhead_name_key; publicadminfalse426426O26061696833 flhead_pkey CONSTRAINTPALTER TABLE ONLY flhead ADD CONSTRAINT flhead_pkey PRIMARY KEY (flhead_id); <ALTER TABLE ONLY public.flhead DROP CONSTRAINT flhead_pkey; publicadminfalse426426Q26061696835 flitem_pkey CONSTRAINTPALTER TABLE ONLY flitem ADD CONSTRAINT flitem_pkey PRIMARY KEY (flitem_id); <ALTER TABLE ONLY public.flitem DROP CONSTRAINT flitem_pkey; publicadminfalse427427W26061696837flnotes_flnotes_flhead_id_key CONSTRAINTyALTER TABLE ONLY flnotes ADD CONSTRAINT flnotes_flnotes_flhead_id_key UNIQUE (flnotes_flhead_id, flnotes_period_id); OALTER TABLE ONLY public.flnotes DROP CONSTRAINT flnotes_flnotes_flhead_id_key; publicadminfalse434434434Y26061696839 flrpt_pkey CONSTRAINTMALTER TABLE ONLY flrpt ADD CONSTRAINT flrpt_pkey PRIMARY KEY (flrpt_id); :ALTER TABLE ONLY public.flrpt DROP CONSTRAINT flrpt_pkey; publicadminfalse436436[26061696841 flspec_pkey CONSTRAINTPALTER TABLE ONLY flspec ADD CONSTRAINT flspec_pkey PRIMARY KEY (flspec_id); <ALTER TABLE ONLY public.flspec DROP CONSTRAINT flspec_pkey; publicadminfalse438438]26061746543form_form_name_key CONSTRAINTPALTER TABLE ONLY form ADD CONSTRAINT form_form_name_key UNIQUE (form_name); AALTER TABLE ONLY public.form DROP CONSTRAINT form_form_name_key; publicadminfalse440440_26061696843 form_pkey CONSTRAINTJALTER TABLE ONLY form ADD CONSTRAINT form_pkey PRIMARY KEY (form_id); 8ALTER TABLE ONLY public.form DROP CONSTRAINT form_pkey; publicadminfalse44044026061696845"freightclass_freightclass_code_key CONSTRAINTpALTER TABLE ONLY freightclass ADD CONSTRAINT freightclass_freightclass_code_key UNIQUE (freightclass_code); YALTER TABLE ONLY public.freightclass DROP CONSTRAINT freightclass_freightclass_code_key; publicadminfalse21721726061696847freightclass_pkey CONSTRAINTbALTER TABLE ONLY freightclass ADD CONSTRAINT freightclass_pkey PRIMARY KEY (freightclass_id); HALTER TABLE ONLY public.freightclass DROP CONSTRAINT freightclass_pkey; publicadminfalse217217a26061696849 glseries_pkey CONSTRAINTVALTER TABLE ONLY glseries ADD CONSTRAINT glseries_pkey PRIMARY KEY (glseries_id); @ALTER TABLE ONLY public.glseries DROP CONSTRAINT glseries_pkey; publicadminfalse443443?26061696851 gltrans_pkey CONSTRAINTSALTER TABLE ONLY gltrans ADD CONSTRAINT gltrans_pkey PRIMARY KEY (gltrans_id); >ALTER TABLE ONLY public.gltrans DROP CONSTRAINT gltrans_pkey; publicadminfalse237237c26061696853grp_grp_name_key CONSTRAINTLALTER TABLE ONLY grp ADD CONSTRAINT grp_grp_name_key UNIQUE (grp_name); >ALTER TABLE ONLY public.grp DROP CONSTRAINT grp_grp_name_key; publicadminfalse447447e26061696855grp_pkey CONSTRAINTGALTER TABLE ONLY grp ADD CONSTRAINT grp_pkey PRIMARY KEY (grp_id); 6ALTER TABLE ONLY public.grp DROP CONSTRAINT grp_pkey; publicadminfalse447447g26061696857 grppriv_pkey CONSTRAINTSALTER TABLE ONLY grppriv ADD CONSTRAINT grppriv_pkey PRIMARY KEY (grppriv_id); >ALTER TABLE ONLY public.grppriv DROP CONSTRAINT grppriv_pkey; publicadminfalse449449i26061746548hnfc_hnfc_code_key CONSTRAINTPALTER TABLE ONLY hnfc ADD CONSTRAINT hnfc_hnfc_code_key UNIQUE (hnfc_code); AALTER TABLE ONLY public.hnfc DROP CONSTRAINT hnfc_hnfc_code_key; publicadminfalse451451k26061696859 hnfc_pkey CONSTRAINTJALTER TABLE ONLY hnfc ADD CONSTRAINT hnfc_pkey PRIMARY KEY (hnfc_id); 8ALTER TABLE ONLY public.hnfc DROP CONSTRAINT hnfc_pkey; publicadminfalse45145126061696861 image_pkey CONSTRAINTMALTER TABLE ONLY image ADD CONSTRAINT image_pkey PRIMARY KEY (image_id); :ALTER TABLE ONLY public.image DROP CONSTRAINT image_pkey; publicadminfalse19419426061696863 imageass_pkey CONSTRAINTVALTER TABLE ONLY imageass ADD CONSTRAINT imageass_pkey PRIMARY KEY (imageass_id); @ALTER TABLE ONLY public.imageass DROP CONSTRAINT imageass_pkey; publicadminfalse19519526061696865incdt_incdt_number_key CONSTRAINTXALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_number_key UNIQUE (incdt_number); FALTER TABLE ONLY public.incdt DROP CONSTRAINT incdt_incdt_number_key; publicadminfalse15415426061696867 incdt_pkey CONSTRAINTMALTER TABLE ONLY incdt ADD CONSTRAINT incdt_pkey PRIMARY KEY (incdt_id); :ALTER TABLE ONLY public.incdt DROP CONSTRAINT incdt_pkey; publicadminfalse15415426061696869incdtcat_incdtcat_name_key CONSTRAINT`ALTER TABLE ONLY incdtcat ADD CONSTRAINT incdtcat_incdtcat_name_key UNIQUE (incdtcat_name); MALTER TABLE ONLY public.incdtcat DROP CONSTRAINT incdtcat_incdtcat_name_key; publicadminfalse22022026061696871 incdtcat_pkey CONSTRAINTVALTER TABLE ONLY incdtcat ADD CONSTRAINT incdtcat_pkey PRIMARY KEY (incdtcat_id); @ALTER TABLE ONLY public.incdtcat DROP CONSTRAINT incdtcat_pkey; publicadminfalse220220m26061696873incdthist_pkey CONSTRAINTYALTER TABLE ONLY incdthist ADD CONSTRAINT incdthist_pkey PRIMARY KEY (incdthist_id); BALTER TABLE ONLY public.incdthist DROP CONSTRAINT incdthist_pkey; publicadminfalse45545526061696875$incdtpriority_incdtpriority_name_key CONSTRAINTtALTER TABLE ONLY incdtpriority ADD CONSTRAINT incdtpriority_incdtpriority_name_key UNIQUE (incdtpriority_name); \ALTER TABLE ONLY public.incdtpriority DROP CONSTRAINT incdtpriority_incdtpriority_name_key; publicadminfalse22122126061696877incdtpriority_pkey CONSTRAINTeALTER TABLE ONLY incdtpriority ADD CONSTRAINT incdtpriority_pkey PRIMARY KEY (incdtpriority_id); JALTER TABLE ONLY public.incdtpriority DROP CONSTRAINT incdtpriority_pkey; publicadminfalse22122126061696879(incdtresolution_incdtresolution_name_key CONSTRAINT|ALTER TABLE ONLY incdtresolution ADD CONSTRAINT incdtresolution_incdtresolution_name_key UNIQUE (incdtresolution_name); bALTER TABLE ONLY public.incdtresolution DROP CONSTRAINT incdtresolution_incdtresolution_name_key; publicadminfalse22222226061696881incdtresolution_pkey CONSTRAINTkALTER TABLE ONLY incdtresolution ADD CONSTRAINT incdtresolution_pkey PRIMARY KEY (incdtresolution_id); NALTER TABLE ONLY public.incdtresolution DROP CONSTRAINT incdtresolution_pkey; publicadminfalse22222226061696883$incdtseverity_incdtseverity_name_key CONSTRAINTtALTER TABLE ONLY incdtseverity ADD CONSTRAINT incdtseverity_incdtseverity_name_key UNIQUE (incdtseverity_name); \ALTER TABLE ONLY public.incdtseverity DROP CONSTRAINT incdtseverity_incdtseverity_name_key; publicadminfalse22322326061696885incdtseverity_pkey CONSTRAINTeALTER TABLE ONLY incdtseverity ADD CONSTRAINT incdtseverity_pkey PRIMARY KEY (incdtseverity_id); JALTER TABLE ONLY public.incdtseverity DROP CONSTRAINT incdtseverity_pkey; publicadminfalse22322326061696887 invbal_pkey CONSTRAINTPALTER TABLE ONLY invbal ADD CONSTRAINT invbal_pkey PRIMARY KEY (invbal_id); <ALTER TABLE ONLY public.invbal DROP CONSTRAINT invbal_pkey; publicadminfalse150150\26061696889invchead_invcnumber_unique CONSTRAINTfALTER TABLE ONLY invchead ADD CONSTRAINT invchead_invcnumber_unique UNIQUE (invchead_invcnumber); MALTER TABLE ONLY public.invchead DROP CONSTRAINT invchead_invcnumber_unique; publicadminfalse173173^26061696891 invchead_pkey CONSTRAINTVALTER TABLE ONLY invchead ADD CONSTRAINT invchead_pkey PRIMARY KEY (invchead_id); @ALTER TABLE ONLY public.invchead DROP CONSTRAINT invchead_pkey; publicadminfalse173173o26061696893invcheadtax_pkey CONSTRAINT[ALTER TABLE ONLY invcheadtax ADD CONSTRAINT invcheadtax_pkey PRIMARY KEY (taxhist_id); FALTER TABLE ONLY public.invcheadtax DROP CONSTRAINT invcheadtax_pkey; publicadminfalse463463d26061696895&invcitem_invchead_id_linenumber_unique CONSTRAINTALTER TABLE ONLY invcitem ADD CONSTRAINT invcitem_invchead_id_linenumber_unique UNIQUE (invcitem_invchead_id, invcitem_linenumber); YALTER TABLE ONLY public.invcitem DROP CONSTRAINT invcitem_invchead_id_linenumber_unique; publicadminfalse175175175h26061696897 invcitem_pkey CONSTRAINTVALTER TABLE ONLY invcitem ADD CONSTRAINT invcitem_pkey PRIMARY KEY (invcitem_id); @ALTER TABLE ONLY public.invcitem DROP CONSTRAINT invcitem_pkey; publicadminfalse175175q26061696899invcitemtax_pkey CONSTRAINT[ALTER TABLE ONLY invcitemtax ADD CONSTRAINT invcitemtax_pkey PRIMARY KEY (taxhist_id); FALTER TABLE ONLY public.invcitemtax DROP CONSTRAINT invcitemtax_pkey; publicadminfalse465465t26061696901 invcnt_pkey CONSTRAINTPALTER TABLE ONLY invcnt ADD CONSTRAINT invcnt_pkey PRIMARY KEY (invcnt_id); <ALTER TABLE ONLY public.invcnt DROP CONSTRAINT invcnt_pkey; publicadminfalse466466x26061696903invdetail_pkey CONSTRAINTYALTER TABLE ONLY invdetail ADD CONSTRAINT invdetail_pkey PRIMARY KEY (invdetail_id); BALTER TABLE ONLY public.invdetail DROP CONSTRAINT invdetail_pkey; publicadminfalse468468}26061696905 invhist_pkey CONSTRAINTSALTER TABLE ONLY invhist ADD CONSTRAINT invhist_pkey PRIMARY KEY (invhist_id); >ALTER TABLE ONLY public.invhist DROP CONSTRAINT invhist_pkey; publicadminfalse47047026061696907"invhistexpcat_invhist_id_expcat_id CONSTRAINTALTER TABLE ONLY invhistexpcat ADD CONSTRAINT invhistexpcat_invhist_id_expcat_id UNIQUE (invhistexpcat_invhist_id, invhistexpcat_expcat_id); ZALTER TABLE ONLY public.invhistexpcat DROP CONSTRAINT invhistexpcat_invhist_id_expcat_id; publicadminfalse47247247226061696909invhistexpcat_pkey CONSTRAINTeALTER TABLE ONLY invhistexpcat ADD CONSTRAINT invhistexpcat_pkey PRIMARY KEY (invhistexpcat_id); JALTER TABLE ONLY public.invhistexpcat DROP CONSTRAINT invhistexpcat_pkey; publicadminfalse472472D26061696911ipsass_ipsass_ipshead_id_key CONSTRAINTALTER TABLE ONLY ipsass ADD CONSTRAINT ipsass_ipsass_ipshead_id_key UNIQUE (ipsass_ipshead_id, ipsass_cust_id, ipsass_custtype_id, ipsass_custtype_pattern, ipsass_shipto_id, ipsass_shipto_pattern); MALTER TABLE ONLY public.ipsass DROP CONSTRAINT ipsass_ipsass_ipshead_id_key; publicadminfalse239239239239239239239F26061696913 ipsass_pkey CONSTRAINTPALTER TABLE ONLY ipsass ADD CONSTRAINT ipsass_pkey PRIMARY KEY (ipsass_id); <ALTER TABLE ONLY public.ipsass DROP CONSTRAINT ipsass_pkey; publicadminfalse23923926061696915ipsfreight_pkey CONSTRAINT\ALTER TABLE ONLY ipsfreight ADD CONSTRAINT ipsfreight_pkey PRIMARY KEY (ipsfreight_id); DALTER TABLE ONLY public.ipsfreight DROP CONSTRAINT ipsfreight_pkey; publicadminfalse21821826061696917ipshead_ipshead_name_key CONSTRAINT\ALTER TABLE ONLY ipshead ADD CONSTRAINT ipshead_ipshead_name_key UNIQUE (ipshead_name); JALTER TABLE ONLY public.ipshead DROP CONSTRAINT ipshead_ipshead_name_key; publicadminfalse21921926061696919 ipshead_pkey CONSTRAINTSALTER TABLE ONLY ipshead ADD CONSTRAINT ipshead_pkey PRIMARY KEY (ipshead_id); >ALTER TABLE ONLY public.ipshead DROP CONSTRAINT ipshead_pkey; publicadminfalse219219I26061746373ipsitem_ipsitem_ipshead_id_key CONSTRAINTALTER TABLE ONLY ipsiteminfo ADD CONSTRAINT ipsitem_ipsitem_ipshead_id_key UNIQUE (ipsitem_ipshead_id, ipsitem_item_id, ipsitem_prodcat_id, ipsitem_qtybreak, ipsitem_qty_uom_id, ipsitem_price_uom_id); TALTER TABLE ONLY public.ipsiteminfo DROP CONSTRAINT ipsitem_ipsitem_ipshead_id_key; publicadminfalse240240240240240240240K26061696923 ipsitem_pkey CONSTRAINTWALTER TABLE ONLY ipsiteminfo ADD CONSTRAINT ipsitem_pkey PRIMARY KEY (ipsitem_id); BALTER TABLE ONLY public.ipsiteminfo DROP CONSTRAINT ipsitem_pkey; publicadminfalse240240O26061696925&ipsitemchar_ipsitemchar_ipsitem_id_key CONSTRAINTALTER TABLE ONLY ipsitemchar ADD CONSTRAINT ipsitemchar_ipsitemchar_ipsitem_id_key UNIQUE (ipsitemchar_ipsitem_id, ipsitemchar_char_id, ipsitemchar_value); \ALTER TABLE ONLY public.ipsitemchar DROP CONSTRAINT ipsitemchar_ipsitemchar_ipsitem_id_key; publicadminfalse242242242242Q26061696927'ipsitemchar_ipsitemchar_ipsitem_id_key1 CONSTRAINTALTER TABLE ONLY ipsitemchar ADD CONSTRAINT ipsitemchar_ipsitemchar_ipsitem_id_key1 UNIQUE (ipsitemchar_ipsitem_id, ipsitemchar_char_id, ipsitemchar_value); ]ALTER TABLE ONLY public.ipsitemchar DROP CONSTRAINT ipsitemchar_ipsitemchar_ipsitem_id_key1; publicadminfalse242242242242S26061696929ipsitemchar_pkey CONSTRAINT_ALTER TABLE ONLY ipsitemchar ADD CONSTRAINT ipsitemchar_pkey PRIMARY KEY (ipsitemchar_id); FALTER TABLE ONLY public.ipsitemchar DROP CONSTRAINT ipsitemchar_pkey; publicadminfalse242242M26061696931ipsprodcat_pkey CONSTRAINT`ALTER TABLE ONLY ipsprodcat_bak ADD CONSTRAINT ipsprodcat_pkey PRIMARY KEY (ipsprodcat_id); HALTER TABLE ONLY public.ipsprodcat_bak DROP CONSTRAINT ipsprodcat_pkey; publicadminfalse241241@26061696933item_item_number_key CONSTRAINTTALTER TABLE ONLY item ADD CONSTRAINT item_item_number_key UNIQUE (item_number); CALTER TABLE ONLY public.item DROP CONSTRAINT item_item_number_key; publicadminfalse168168C26061696935 item_pkey CONSTRAINTJALTER TABLE ONLY item ADD CONSTRAINT item_pkey PRIMARY KEY (item_id); 8ALTER TABLE ONLY public.item DROP CONSTRAINT item_pkey; publicadminfalse16816826061696937itemalias_itemalias_item_id_key CONSTRAINT|ALTER TABLE ONLY itemalias ADD CONSTRAINT itemalias_itemalias_item_id_key UNIQUE (itemalias_item_id, itemalias_number); SALTER TABLE ONLY public.itemalias DROP CONSTRAINT itemalias_itemalias_item_id_key; publicadminfalse22622622626061696939itemalias_pkey CONSTRAINTYALTER TABLE ONLY itemalias ADD CONSTRAINT itemalias_pkey PRIMARY KEY (itemalias_id); BALTER TABLE ONLY public.itemalias DROP CONSTRAINT itemalias_pkey; publicadminfalse22622626061696941 itemcost_pkey CONSTRAINTVALTER TABLE ONLY itemcost ADD CONSTRAINT itemcost_pkey PRIMARY KEY (itemcost_id); @ALTER TABLE ONLY public.itemcost DROP CONSTRAINT itemcost_pkey; publicadminfalse22822826061746559itemgrp_itemgrp_name_key CONSTRAINT\ALTER TABLE ONLY itemgrp ADD CONSTRAINT itemgrp_itemgrp_name_key UNIQUE (itemgrp_name); JALTER TABLE ONLY public.itemgrp DROP CONSTRAINT itemgrp_itemgrp_name_key; publicadminfalse48848826061696943 itemgrp_pkey CONSTRAINTSALTER TABLE ONLY itemgrp ADD CONSTRAINT itemgrp_pkey PRIMARY KEY (itemgrp_id); >ALTER TABLE ONLY public.itemgrp DROP CONSTRAINT itemgrp_pkey; publicadminfalse48848826061696945itemgrpitem_pkey CONSTRAINT_ALTER TABLE ONLY itemgrpitem ADD CONSTRAINT itemgrpitem_pkey PRIMARY KEY (itemgrpitem_id); FALTER TABLE ONLY public.itemgrpitem DROP CONSTRAINT itemgrpitem_pkey; publicadminfalse49049026061696947 itemloc_pkey CONSTRAINTSALTER TABLE ONLY itemloc ADD CONSTRAINT itemloc_pkey PRIMARY KEY (itemloc_id); >ALTER TABLE ONLY public.itemloc DROP CONSTRAINT itemloc_pkey; publicadminfalse49449426061696949itemlocdist_pkey CONSTRAINT_ALTER TABLE ONLY itemlocdist ADD CONSTRAINT itemlocdist_pkey PRIMARY KEY (itemlocdist_id); FALTER TABLE ONLY public.itemlocdist DROP CONSTRAINT itemlocdist_pkey; publicadminfalse49749726061696951itemlocpost_pkey CONSTRAINT_ALTER TABLE ONLY itemlocpost ADD CONSTRAINT itemlocpost_pkey PRIMARY KEY (itemlocpost_id); FALTER TABLE ONLY public.itemlocpost DROP CONSTRAINT itemlocpost_pkey; publicadminfalse499499J26061696953 itemsite_pkey CONSTRAINTVALTER TABLE ONLY itemsite ADD CONSTRAINT itemsite_pkey PRIMARY KEY (itemsite_id); @ALTER TABLE ONLY public.itemsite DROP CONSTRAINT itemsite_pkey; publicadminfalse169169(26061746389itemsrc_itemsrc_vend_id_key CONSTRAINTALTER TABLE ONLY itemsrc ADD CONSTRAINT itemsrc_itemsrc_vend_id_key UNIQUE (itemsrc_vend_id, itemsrc_item_id, itemsrc_effective, itemsrc_expires, itemsrc_vend_item_number, itemsrc_manuf_name, itemsrc_manuf_item_number); MALTER TABLE ONLY public.itemsrc DROP CONSTRAINT itemsrc_itemsrc_vend_id_key; publicadminfalse232232232232232232232232*26061696957 itemsrc_pkey CONSTRAINTSALTER TABLE ONLY itemsrc ADD CONSTRAINT itemsrc_pkey PRIMARY KEY (itemsrc_id); >ALTER TABLE ONLY public.itemsrc DROP CONSTRAINT itemsrc_pkey; publicadminfalse232232.26061746394 itemsrcp_itemsrcp_itemsrc_id_key CONSTRAINTALTER TABLE ONLY itemsrcp ADD CONSTRAINT itemsrcp_itemsrcp_itemsrc_id_key UNIQUE (itemsrcp_itemsrc_id, itemsrcp_warehous_id, itemsrcp_dropship, itemsrcp_qtybreak); SALTER TABLE ONLY public.itemsrcp DROP CONSTRAINT itemsrcp_itemsrcp_itemsrc_id_key; publicadminfalse233233233233233026061696961 itemsrcp_pkey CONSTRAINTVALTER TABLE ONLY itemsrcp ADD CONSTRAINT itemsrcp_pkey PRIMARY KEY (itemsrcp_id); @ALTER TABLE ONLY public.itemsrcp DROP CONSTRAINT itemsrcp_pkey; publicadminfalse233233226061696963"itemsub_itemsub_parent_item_id_key CONSTRAINTALTER TABLE ONLY itemsub ADD CONSTRAINT itemsub_itemsub_parent_item_id_key UNIQUE (itemsub_parent_item_id, itemsub_sub_item_id); TALTER TABLE ONLY public.itemsub DROP CONSTRAINT itemsub_itemsub_parent_item_id_key; publicadminfalse234234234526061696965 itemsub_pkey CONSTRAINTSALTER TABLE ONLY itemsub ADD CONSTRAINT itemsub_pkey PRIMARY KEY (itemsub_id); >ALTER TABLE ONLY public.itemsub DROP CONSTRAINT itemsub_pkey; publicadminfalse234234826061696967 itemtax_pkey CONSTRAINTSALTER TABLE ONLY itemtax ADD CONSTRAINT itemtax_pkey PRIMARY KEY (itemtax_id); >ALTER TABLE ONLY public.itemtax DROP CONSTRAINT itemtax_pkey; publicadminfalse23523526061696969&itemtrans_itemtrans_source_item_id_key CONSTRAINTALTER TABLE ONLY itemtrans ADD CONSTRAINT itemtrans_itemtrans_source_item_id_key UNIQUE (itemtrans_source_item_id, itemtrans_target_item_id); ZALTER TABLE ONLY public.itemtrans DROP CONSTRAINT itemtrans_itemtrans_source_item_id_key; publicadminfalse50750750726061696971itemtrans_pkey CONSTRAINTYALTER TABLE ONLY itemtrans ADD CONSTRAINT itemtrans_pkey PRIMARY KEY (itemtrans_id); BALTER TABLE ONLY public.itemtrans DROP CONSTRAINT itemtrans_pkey; publicadminfalse50750726061696973 itemuom_pkey CONSTRAINTSALTER TABLE ONLY itemuom ADD CONSTRAINT itemuom_pkey PRIMARY KEY (itemuom_id); >ALTER TABLE ONLY public.itemuom DROP CONSTRAINT itemuom_pkey; publicadminfalse509509:26061696975itemuomconv_pkey CONSTRAINT_ALTER TABLE ONLY itemuomconv ADD CONSTRAINT itemuomconv_pkey PRIMARY KEY (itemuomconv_id); FALTER TABLE ONLY public.itemuomconv DROP CONSTRAINT itemuomconv_pkey; publicadminfalse23623626061696977 jrnluse_pkey CONSTRAINTSALTER TABLE ONLY jrnluse ADD CONSTRAINT jrnluse_pkey PRIMARY KEY (jrnluse_id); >ALTER TABLE ONLY public.jrnluse DROP CONSTRAINT jrnluse_pkey; publicadminfalse51351326061696979 labeldef_pkey CONSTRAINTVALTER TABLE ONLY labeldef ADD CONSTRAINT labeldef_pkey PRIMARY KEY (labeldef_id); @ALTER TABLE ONLY public.labeldef DROP CONSTRAINT labeldef_pkey; publicadminfalse51551526061746562labelform_labelform_name_key CONSTRAINTdALTER TABLE ONLY labelform ADD CONSTRAINT labelform_labelform_name_key UNIQUE (labelform_name); PALTER TABLE ONLY public.labelform DROP CONSTRAINT labelform_labelform_name_key; publicadminfalse51751726061696981labelform_pkey CONSTRAINTYALTER TABLE ONLY labelform ADD CONSTRAINT labelform_pkey PRIMARY KEY (labelform_id); BALTER TABLE ONLY public.labelform DROP CONSTRAINT labelform_pkey; publicadminfalse51751726061696983 lang_pkey CONSTRAINTJALTER TABLE ONLY lang ADD CONSTRAINT lang_pkey PRIMARY KEY (lang_id); 8ALTER TABLE ONLY public.lang DROP CONSTRAINT lang_pkey; publicadminfalse51951926061746565locale_locale_code_key CONSTRAINTXALTER TABLE ONLY locale ADD CONSTRAINT locale_locale_code_key UNIQUE (locale_code); GALTER TABLE ONLY public.locale DROP CONSTRAINT locale_locale_code_key; publicadminfalse52152126061696985 locale_pkey CONSTRAINTPALTER TABLE ONLY locale ADD CONSTRAINT locale_pkey PRIMARY KEY (locale_id); <ALTER TABLE ONLY public.locale DROP CONSTRAINT locale_pkey; publicadminfalse521521!26061696987 location_pkey CONSTRAINTVALTER TABLE ONLY location ADD CONSTRAINT location_pkey PRIMARY KEY (location_id); @ALTER TABLE ONLY public.location DROP CONSTRAINT location_pkey; publicadminfalse23023026061696989 locitem_pkey CONSTRAINTSALTER TABLE ONLY locitem ADD CONSTRAINT locitem_pkey PRIMARY KEY (locitem_id); >ALTER TABLE ONLY public.locitem DROP CONSTRAINT locitem_pkey; publicadminfalse52452426061696991$metasql_metasql_group_name_grade_key CONSTRAINTALTER TABLE ONLY metasql ADD CONSTRAINT metasql_metasql_group_name_grade_key UNIQUE (metasql_group, metasql_name, metasql_grade); VALTER TABLE ONLY public.metasql DROP CONSTRAINT metasql_metasql_group_name_grade_key; publicadminfalse26726726726726061696993 metasql_pkey CONSTRAINTSALTER TABLE ONLY metasql ADD CONSTRAINT metasql_pkey PRIMARY KEY (metasql_id); >ALTER TABLE ONLY public.metasql DROP CONSTRAINT metasql_pkey; publicadminfalse26726726061746568metric_metric_name_key CONSTRAINTXALTER TABLE ONLY metric ADD CONSTRAINT metric_metric_name_key UNIQUE (metric_name); GALTER TABLE ONLY public.metric DROP CONSTRAINT metric_metric_name_key; publicadminfalse52752726061696995 metric_pkey CONSTRAINTPALTER TABLE ONLY metric ADD CONSTRAINT metric_pkey PRIMARY KEY (metric_id); <ALTER TABLE ONLY public.metric DROP CONSTRAINT metric_pkey; publicadminfalse52752726061746571metricenc_metricenc_name_key CONSTRAINTdALTER TABLE ONLY metricenc ADD CONSTRAINT metricenc_metricenc_name_key UNIQUE (metricenc_name); PALTER TABLE ONLY public.metricenc DROP CONSTRAINT metricenc_metricenc_name_key; publicadminfalse52952926061696997metricenc_pkey CONSTRAINTYALTER TABLE ONLY metricenc ADD CONSTRAINT metricenc_pkey PRIMARY KEY (metricenc_id); BALTER TABLE ONLY public.metricenc DROP CONSTRAINT metricenc_pkey; publicadminfalse52952926061696999 mrghist_pkey CONSTRAINTALTER TABLE ONLY mrghist ADD CONSTRAINT mrghist_pkey PRIMARY KEY (mrghist_cntct_id, mrghist_table, mrghist_pkey_col, mrghist_pkey_id, mrghist_cntct_col); >ALTER TABLE ONLY public.mrghist DROP CONSTRAINT mrghist_pkey; publicadminfalse53253253253253253226061697001mrgundo_mrgundo_schema_key CONSTRAINTALTER TABLE ONLY mrgundo ADD CONSTRAINT mrgundo_mrgundo_schema_key UNIQUE (mrgundo_schema, mrgundo_table, mrgundo_pkey_col, mrgundo_pkey_id, mrgundo_col); LALTER TABLE ONLY public.mrgundo DROP CONSTRAINT mrgundo_mrgundo_schema_key; publicadminfalse53353353353353353326061697003msg_pkey CONSTRAINTGALTER TABLE ONLY msg ADD CONSTRAINT msg_pkey PRIMARY KEY (msg_id); 6ALTER TABLE ONLY public.msg DROP CONSTRAINT msg_pkey; publicadminfalse53453426061697005 msguser_pkey CONSTRAINTSALTER TABLE ONLY msguser ADD CONSTRAINT msguser_pkey PRIMARY KEY (msguser_id); >ALTER TABLE ONLY public.msguser DROP CONSTRAINT msguser_pkey; publicadminfalse53653626061697007obsolete_tax_pkey CONSTRAINTYALTER TABLE ONLY obsolete_tax ADD CONSTRAINT obsolete_tax_pkey PRIMARY KEY (tax_id); HALTER TABLE ONLY public.obsolete_tax DROP CONSTRAINT obsolete_tax_pkey; publicadminfalse53953926061697009ophead_ophead_number_key CONSTRAINT\ALTER TABLE ONLY ophead ADD CONSTRAINT ophead_ophead_number_key UNIQUE (ophead_number); IALTER TABLE ONLY public.ophead DROP CONSTRAINT ophead_ophead_number_key; publicadminfalse18118126061697011 ophead_pkey CONSTRAINTPALTER TABLE ONLY ophead ADD CONSTRAINT ophead_pkey PRIMARY KEY (ophead_id); <ALTER TABLE ONLY public.ophead DROP CONSTRAINT ophead_pkey; publicadminfalse18118126061697013opsource_opsource_name_key CONSTRAINT`ALTER TABLE ONLY opsource ADD CONSTRAINT opsource_opsource_name_key UNIQUE (opsource_name); MALTER TABLE ONLY public.opsource DROP CONSTRAINT opsource_opsource_name_key; publicadminfalse54154126061697015 opsource_pkey CONSTRAINTVALTER TABLE ONLY opsource ADD CONSTRAINT opsource_pkey PRIMARY KEY (opsource_id); @ALTER TABLE ONLY public.opsource DROP CONSTRAINT opsource_pkey; publicadminfalse54154126061697017opstage_opstage_name_key CONSTRAINT\ALTER TABLE ONLY opstage ADD CONSTRAINT opstage_opstage_name_key UNIQUE (opstage_name); JALTER TABLE ONLY public.opstage DROP CONSTRAINT opstage_opstage_name_key; publicadminfalse54354326061697019 opstage_pkey CONSTRAINTSALTER TABLE ONLY opstage ADD CONSTRAINT opstage_pkey PRIMARY KEY (opstage_id); >ALTER TABLE ONLY public.opstage DROP CONSTRAINT opstage_pkey; publicadminfalse54354326061697021optype_optype_name_key CONSTRAINTXALTER TABLE ONLY optype ADD CONSTRAINT optype_optype_name_key UNIQUE (optype_name); GALTER TABLE ONLY public.optype DROP CONSTRAINT optype_optype_name_key; publicadminfalse54554526061697023 optype_pkey CONSTRAINTPALTER TABLE ONLY optype ADD CONSTRAINT optype_pkey PRIMARY KEY (optype_id); <ALTER TABLE ONLY public.optype DROP CONSTRAINT optype_pkey; publicadminfalse54554526061746578orderseq_orderseq_name_key CONSTRAINT`ALTER TABLE ONLY orderseq ADD CONSTRAINT orderseq_orderseq_name_key UNIQUE (orderseq_name); MALTER TABLE ONLY public.orderseq DROP CONSTRAINT orderseq_orderseq_name_key; publicadminfalse54754726061697025 orderseq_pkey CONSTRAINTVALTER TABLE ONLY orderseq ADD CONSTRAINT orderseq_pkey PRIMARY KEY (orderseq_id); @ALTER TABLE ONLY public.orderseq DROP CONSTRAINT orderseq_pkey; publicadminfalse54754726061697027 pack_pkey CONSTRAINTJALTER TABLE ONLY pack ADD CONSTRAINT pack_pkey PRIMARY KEY (pack_id); 8ALTER TABLE ONLY public.pack DROP CONSTRAINT pack_pkey; publicadminfalse54954926061697029payaropen_pkey CONSTRAINTtALTER TABLE ONLY payaropen ADD CONSTRAINT payaropen_pkey PRIMARY KEY (payaropen_ccpay_id, payaropen_aropen_id); BALTER TABLE ONLY public.payaropen DROP CONSTRAINT payaropen_pkey; publicadminfalse55155155126061697031 period_pkey CONSTRAINTPALTER TABLE ONLY period ADD CONSTRAINT period_pkey PRIMARY KEY (period_id); <ALTER TABLE ONLY public.period DROP CONSTRAINT period_pkey; publicadminfalse20120126061697033 pkgdep_pkey CONSTRAINTPALTER TABLE ONLY pkgdep ADD CONSTRAINT pkgdep_pkey PRIMARY KEY (pkgdep_id); <ALTER TABLE ONLY public.pkgdep DROP CONSTRAINT pkgdep_pkey; publicadminfalse55455426061697035 pkghead_pkey CONSTRAINTSALTER TABLE ONLY pkghead ADD CONSTRAINT pkghead_pkey PRIMARY KEY (pkghead_id); >ALTER TABLE ONLY public.pkghead DROP CONSTRAINT pkghead_pkey; publicadminfalse55655626061697037 pkgitem_pkey CONSTRAINTSALTER TABLE ONLY pkgitem ADD CONSTRAINT pkgitem_pkey PRIMARY KEY (pkgitem_id); >ALTER TABLE ONLY public.pkgitem DROP CONSTRAINT pkgitem_pkey; publicadminfalse55855826061697039pkgitem_pkgitem_pkghead_id_key CONSTRAINTALTER TABLE ONLY pkgitem ADD CONSTRAINT pkgitem_pkgitem_pkghead_id_key UNIQUE (pkgitem_pkghead_id, pkgitem_type, pkgitem_name); PALTER TABLE ONLY public.pkgitem DROP CONSTRAINT pkgitem_pkgitem_pkghead_id_key; publicadminfalse55855855855826061697041pkgitem_pkgitem_pkghead_id_key1 CONSTRAINTALTER TABLE ONLY pkgitem ADD CONSTRAINT pkgitem_pkgitem_pkghead_id_key1 UNIQUE (pkgitem_pkghead_id, pkgitem_type, pkgitem_item_id); QALTER TABLE ONLY public.pkgitem DROP CONSTRAINT pkgitem_pkgitem_pkghead_id_key1; publicadminfalse558558558558$26061697043 plancode_pkey CONSTRAINTVALTER TABLE ONLY plancode ADD CONSTRAINT plancode_pkey PRIMARY KEY (plancode_id); @ALTER TABLE ONLY public.plancode DROP CONSTRAINT plancode_pkey; publicadminfalse231231&26061697045plancode_plancode_code_key CONSTRAINT`ALTER TABLE ONLY plancode ADD CONSTRAINT plancode_plancode_code_key UNIQUE (plancode_code); MALTER TABLE ONLY public.plancode DROP CONSTRAINT plancode_plancode_code_key; publicadminfalse231231z26061697047 pohead_pkey CONSTRAINTPALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pkey PRIMARY KEY (pohead_id); <ALTER TABLE ONLY public.pohead DROP CONSTRAINT pohead_pkey; publicadminfalse178178|26061697049pohead_pohead_number_key CONSTRAINT\ALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_number_key UNIQUE (pohead_number); IALTER TABLE ONLY public.pohead DROP CONSTRAINT pohead_pohead_number_key; publicadminfalse17817826061697051 poitem_pkey CONSTRAINTPALTER TABLE ONLY poitem ADD CONSTRAINT poitem_pkey PRIMARY KEY (poitem_id); <ALTER TABLE ONLY public.poitem DROP CONSTRAINT poitem_pkey; publicadminfalse17917926061697053poitem_poitem_pohead_id_key CONSTRAINTuALTER TABLE ONLY poitem ADD CONSTRAINT poitem_poitem_pohead_id_key UNIQUE (poitem_pohead_id, poitem_linenumber); LALTER TABLE ONLY public.poitem DROP CONSTRAINT poitem_poitem_pohead_id_key; publicadminfalse17917917926061697055 poreject_pkey CONSTRAINTVALTER TABLE ONLY poreject ADD CONSTRAINT poreject_pkey PRIMARY KEY (poreject_id); @ALTER TABLE ONLY public.poreject DROP CONSTRAINT poreject_pkey; publicadminfalse56556526061697057 potype_pkey CONSTRAINTPALTER TABLE ONLY potype ADD CONSTRAINT potype_pkey PRIMARY KEY (potype_id); <ALTER TABLE ONLY public.potype DROP CONSTRAINT potype_pkey; publicadminfalse56756726061697059pr_pkey CONSTRAINTDALTER TABLE ONLY pr ADD CONSTRAINT pr_pkey PRIMARY KEY (pr_id); 4ALTER TABLE ONLY public.pr DROP CONSTRAINT pr_pkey; publicadminfalse56956926061697061 prftcntr_pkey CONSTRAINTVALTER TABLE ONLY prftcntr ADD CONSTRAINT prftcntr_pkey PRIMARY KEY (prftcntr_id); @ALTER TABLE ONLY public.prftcntr DROP CONSTRAINT prftcntr_pkey; publicadminfalse57157126061697063prftcntr_prftcntr_number_key CONSTRAINTdALTER TABLE ONLY prftcntr ADD CONSTRAINT prftcntr_prftcntr_number_key UNIQUE (prftcntr_number); OALTER TABLE ONLY public.prftcntr DROP CONSTRAINT prftcntr_prftcntr_number_key; publicadminfalse57157126061697065 priv_pkey CONSTRAINTJALTER TABLE ONLY priv ADD CONSTRAINT priv_pkey PRIMARY KEY (priv_id); 8ALTER TABLE ONLY public.priv DROP CONSTRAINT priv_pkey; publicadminfalse270270`26061697067prj_pkey CONSTRAINTGALTER TABLE ONLY prj ADD CONSTRAINT prj_pkey PRIMARY KEY (prj_id); 6ALTER TABLE ONLY public.prj DROP CONSTRAINT prj_pkey; publicadminfalse174174b26061697069prj_prj_number_key CONSTRAINTPALTER TABLE ONLY prj ADD CONSTRAINT prj_prj_number_key UNIQUE (prj_number); @ALTER TABLE ONLY public.prj DROP CONSTRAINT prj_prj_number_key; publicadminfalse17417426061697071 prjtask_pkey CONSTRAINTSALTER TABLE ONLY prjtask ADD CONSTRAINT prjtask_pkey PRIMARY KEY (prjtask_id); >ALTER TABLE ONLY public.prjtask DROP CONSTRAINT prjtask_pkey; publicadminfalse18218226061697073prjtask_prjtask_prj_id_key CONSTRAINTpALTER TABLE ONLY prjtask ADD CONSTRAINT prjtask_prjtask_prj_id_key UNIQUE (prjtask_prj_id, prjtask_number); LALTER TABLE ONLY public.prjtask DROP CONSTRAINT prjtask_prjtask_prj_id_key; publicadminfalse18218218226061697075prjtaskuser_pkey CONSTRAINT_ALTER TABLE ONLY prjtaskuser ADD CONSTRAINT prjtaskuser_pkey PRIMARY KEY (prjtaskuser_id); FALTER TABLE ONLY public.prjtaskuser DROP CONSTRAINT prjtaskuser_pkey; publicadminfalse577577 26061697077 prodcat_pkey CONSTRAINTSALTER TABLE ONLY prodcat ADD CONSTRAINT prodcat_pkey PRIMARY KEY (prodcat_id); >ALTER TABLE ONLY public.prodcat DROP CONSTRAINT prodcat_pkey; publicadminfalse22522526061746586prodcat_prodcat_code_key CONSTRAINT\ALTER TABLE ONLY prodcat ADD CONSTRAINT prodcat_prodcat_code_key UNIQUE (prodcat_code); JALTER TABLE ONLY public.prodcat DROP CONSTRAINT prodcat_prodcat_code_key; publicadminfalse225225U26061697079 prospect_pkey CONSTRAINTVALTER TABLE ONLY prospect ADD CONSTRAINT prospect_pkey PRIMARY KEY (prospect_id); @ALTER TABLE ONLY public.prospect DROP CONSTRAINT prospect_pkey; publicadminfalse244244W26061697081prospect_prospect_number_key CONSTRAINTdALTER TABLE ONLY prospect ADD CONSTRAINT prospect_prospect_number_key UNIQUE (prospect_number); OALTER TABLE ONLY public.prospect DROP CONSTRAINT prospect_prospect_number_key; publicadminfalse24424426061697083 qryhead_pkey CONSTRAINTSALTER TABLE ONLY qryhead ADD CONSTRAINT qryhead_pkey PRIMARY KEY (qryhead_id); >ALTER TABLE ONLY public.qryhead DROP CONSTRAINT qryhead_pkey; publicadminfalse58058026061697085qryhead_qryhead_name_key CONSTRAINT\ALTER TABLE ONLY qryhead ADD CONSTRAINT qryhead_qryhead_name_key UNIQUE (qryhead_name); JALTER TABLE ONLY public.qryhead DROP CONSTRAINT qryhead_qryhead_name_key; publicadminfalse58058026061697087qryitem_qryitem_qryhead_id_key CONSTRAINTvALTER TABLE ONLY qryitem ADD CONSTRAINT qryitem_qryitem_qryhead_id_key UNIQUE (qryitem_qryhead_id, qryitem_name); PALTER TABLE ONLY public.qryitem DROP CONSTRAINT qryitem_qryitem_qryhead_id_key; publicadminfalse58258258226061697089qryitem_qryitem_qryhead_id_key1 CONSTRAINTxALTER TABLE ONLY qryitem ADD CONSTRAINT qryitem_qryitem_qryhead_id_key1 UNIQUE (qryitem_qryhead_id, qryitem_order); QALTER TABLE ONLY public.qryitem DROP CONSTRAINT qryitem_qryitem_qryhead_id_key1; publicadminfalse582582582e26061697091 quhead_pkey CONSTRAINTPALTER TABLE ONLY quhead ADD CONSTRAINT quhead_pkey PRIMARY KEY (quhead_id); <ALTER TABLE ONLY public.quhead DROP CONSTRAINT quhead_pkey; publicadminfalse249249g26061697093quhead_quhead_number_key CONSTRAINT\ALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_number_key UNIQUE (quhead_number); IALTER TABLE ONLY public.quhead DROP CONSTRAINT quhead_quhead_number_key; publicadminfalse249249i26061697095 quitem_pkey CONSTRAINTPALTER TABLE ONLY quitem ADD CONSTRAINT quitem_pkey PRIMARY KEY (quitem_id); <ALTER TABLE ONLY public.quitem DROP CONSTRAINT quitem_pkey; publicadminfalse25025026061697097 rcalitem_pkey CONSTRAINTVALTER TABLE ONLY rcalitem ADD CONSTRAINT rcalitem_pkey PRIMARY KEY (rcalitem_id); @ALTER TABLE ONLY public.rcalitem DROP CONSTRAINT rcalitem_pkey; publicadminfalse58658626061697099 recur_pkey CONSTRAINTMALTER TABLE ONLY recur ADD CONSTRAINT recur_pkey PRIMARY KEY (recur_id); :ALTER TABLE ONLY public.recur DROP CONSTRAINT recur_pkey; publicadminfalse58758726061697101recur_recur_parent_id_key CONSTRAINTqALTER TABLE ONLY recur ADD CONSTRAINT recur_recur_parent_id_key UNIQUE (recur_parent_id, recur_parent_type); IALTER TABLE ONLY public.recur DROP CONSTRAINT recur_recur_parent_id_key; publicadminfalse58758758726061697103recurtype_pkey CONSTRAINTYALTER TABLE ONLY recurtype ADD CONSTRAINT recurtype_pkey PRIMARY KEY (recurtype_id); BALTER TABLE ONLY public.recurtype DROP CONSTRAINT recurtype_pkey; publicadminfalse58958926061697105recurtype_recurtype_type_key CONSTRAINTdALTER TABLE ONLY recurtype ADD CONSTRAINT recurtype_recurtype_type_key UNIQUE (recurtype_type); PALTER TABLE ONLY public.recurtype DROP CONSTRAINT recurtype_recurtype_type_key; publicadminfalse58958926061697107 recv_pkey CONSTRAINTJALTER TABLE ONLY recv ADD CONSTRAINT recv_pkey PRIMARY KEY (recv_id); 8ALTER TABLE ONLY public.recv DROP CONSTRAINT recv_pkey; publicadminfalse59159126061697109 report_pkey CONSTRAINTPALTER TABLE ONLY report ADD CONSTRAINT report_pkey PRIMARY KEY (report_id); <ALTER TABLE ONLY public.report DROP CONSTRAINT report_pkey; publicadminfalse273273 26061697111 rjctcode_pkey CONSTRAINTVALTER TABLE ONLY rjctcode ADD CONSTRAINT rjctcode_pkey PRIMARY KEY (rjctcode_id); @ALTER TABLE ONLY public.rjctcode DROP CONSTRAINT rjctcode_pkey; publicadminfalse593593 26061697113rjctcode_rjctcode_code_key CONSTRAINT`ALTER TABLE ONLY rjctcode ADD CONSTRAINT rjctcode_rjctcode_code_key UNIQUE (rjctcode_code); MALTER TABLE ONLY public.rjctcode DROP CONSTRAINT rjctcode_rjctcode_code_key; publicadminfalse593593"26061697115 rsncode_pkey CONSTRAINTSALTER TABLE ONLY rsncode ADD CONSTRAINT rsncode_pkey PRIMARY KEY (rsncode_id); >ALTER TABLE ONLY public.rsncode DROP CONSTRAINT rsncode_pkey; publicadminfalse161161$26061746593rsncode_rsncode_code_key CONSTRAINT\ALTER TABLE ONLY rsncode ADD CONSTRAINT rsncode_rsncode_code_key UNIQUE (rsncode_code); JALTER TABLE ONLY public.rsncode DROP CONSTRAINT rsncode_rsncode_code_key; publicadminfalse161161 26061697117 sale_pkey CONSTRAINTJALTER TABLE ONLY sale ADD CONSTRAINT sale_pkey PRIMARY KEY (sale_id); 8ALTER TABLE ONLY public.sale DROP CONSTRAINT sale_pkey; publicadminfalse59659626061746596sale_sale_name_key CONSTRAINTPALTER TABLE ONLY sale ADD CONSTRAINT sale_sale_name_key UNIQUE (sale_name); AALTER TABLE ONLY public.sale DROP CONSTRAINT sale_sale_name_key; publicadminfalse59659626061697119salesaccnt_pkey CONSTRAINT\ALTER TABLE ONLY salesaccnt ADD CONSTRAINT salesaccnt_pkey PRIMARY KEY (salesaccnt_id); DALTER TABLE ONLY public.salesaccnt DROP CONSTRAINT salesaccnt_pkey; publicadminfalse393393&26061697121 salescat_pkey CONSTRAINTVALTER TABLE ONLY salescat ADD CONSTRAINT salescat_pkey PRIMARY KEY (salescat_id); @ALTER TABLE ONLY public.salescat DROP CONSTRAINT salescat_pkey; publicadminfalse162162(26061746599salescat_salescat_name_key CONSTRAINT`ALTER TABLE ONLY salescat ADD CONSTRAINT salescat_salescat_name_key UNIQUE (salescat_name); MALTER TABLE ONLY public.salescat DROP CONSTRAINT salescat_salescat_name_key; publicadminfalse162162*26061697123 salesrep_pkey CONSTRAINTVALTER TABLE ONLY salesrep ADD CONSTRAINT salesrep_pkey PRIMARY KEY (salesrep_id); @ALTER TABLE ONLY public.salesrep DROP CONSTRAINT salesrep_pkey; publicadminfalse163163,26061697125salesrep_salesrep_number_key CONSTRAINTdALTER TABLE ONLY salesrep ADD CONSTRAINT salesrep_salesrep_number_key UNIQUE (salesrep_number); OALTER TABLE ONLY public.salesrep DROP CONSTRAINT salesrep_salesrep_number_key; publicadminfalse16316326061746339 saletype_pkey CONSTRAINTVALTER TABLE ONLY saletype ADD CONSTRAINT saletype_pkey PRIMARY KEY (saletype_id); @ALTER TABLE ONLY public.saletype DROP CONSTRAINT saletype_pkey; publicadminfalse72272226061697127schemaord_pkey CONSTRAINTYALTER TABLE ONLY schemaord ADD CONSTRAINT schemaord_pkey PRIMARY KEY (schemaord_id); BALTER TABLE ONLY public.schemaord DROP CONSTRAINT schemaord_pkey; publicadminfalse60160126061697129schemaord_schemaord_name_key CONSTRAINTdALTER TABLE ONLY schemaord ADD CONSTRAINT schemaord_schemaord_name_key UNIQUE (schemaord_name); PALTER TABLE ONLY public.schemaord DROP CONSTRAINT schemaord_schemaord_name_key; publicadminfalse60160126061697131schemaord_schemaord_order_key CONSTRAINTfALTER TABLE ONLY schemaord ADD CONSTRAINT schemaord_schemaord_order_key UNIQUE (schemaord_order); QALTER TABLE ONLY public.schemaord DROP CONSTRAINT schemaord_schemaord_order_key; publicadminfalse60160126061697133 script_pkey CONSTRAINTPALTER TABLE ONLY script ADD CONSTRAINT script_pkey PRIMARY KEY (script_id); <ALTER TABLE ONLY public.script DROP CONSTRAINT script_pkey; publicadminfalse27627626061697135 shift_pkey CONSTRAINTMALTER TABLE ONLY shift ADD CONSTRAINT shift_pkey PRIMARY KEY (shift_id); :ALTER TABLE ONLY public.shift DROP CONSTRAINT shift_pkey; publicadminfalse21521526061697137 shipchrg_pkey CONSTRAINTVALTER TABLE ONLY shipchrg ADD CONSTRAINT shipchrg_pkey PRIMARY KEY (shipchrg_id); @ALTER TABLE ONLY public.shipchrg DROP CONSTRAINT shipchrg_pkey; publicadminfalse20820826061697139 shipdata_pkey CONSTRAINTALTER TABLE ONLY shipdata ADD CONSTRAINT shipdata_pkey PRIMARY KEY (shipdata_cohead_number, shipdata_cosmisc_tracknum, shipdata_cosmisc_packnum_tracknum, shipdata_void_ind); @ALTER TABLE ONLY public.shipdata DROP CONSTRAINT shipdata_pkey; publicadminfalse21621621621621626061697141shipdatasum_pkey CONSTRAINTALTER TABLE ONLY shipdatasum ADD CONSTRAINT shipdatasum_pkey PRIMARY KEY (shipdatasum_cohead_number, shipdatasum_cosmisc_tracknum, shipdatasum_cosmisc_packnum_tracknum); FALTER TABLE ONLY public.shipdatasum DROP CONSTRAINT shipdatasum_pkey; publicadminfalse60660660660626061697143 shipform_pkey CONSTRAINTVALTER TABLE ONLY shipform ADD CONSTRAINT shipform_pkey PRIMARY KEY (shipform_id); @ALTER TABLE ONLY public.shipform DROP CONSTRAINT shipform_pkey; publicadminfalse20920926061697145shipform_shipform_name_key CONSTRAINT`ALTER TABLE ONLY shipform ADD CONSTRAINT shipform_shipform_name_key UNIQUE (shipform_name); MALTER TABLE ONLY public.shipform DROP CONSTRAINT shipform_shipform_name_key; publicadminfalse20920926061697147 shiphead_pkey CONSTRAINTVALTER TABLE ONLY shiphead ADD CONSTRAINT shiphead_pkey PRIMARY KEY (shiphead_id); @ALTER TABLE ONLY public.shiphead DROP CONSTRAINT shiphead_pkey; publicadminfalse60860826061697149shiphead_shiphead_number_key CONSTRAINTdALTER TABLE ONLY shiphead ADD CONSTRAINT shiphead_shiphead_number_key UNIQUE (shiphead_number); OALTER TABLE ONLY public.shiphead DROP CONSTRAINT shiphead_shiphead_number_key; publicadminfalse60860826061697151 shipitem_pkey CONSTRAINTVALTER TABLE ONLY shipitem ADD CONSTRAINT shipitem_pkey PRIMARY KEY (shipitem_id); @ALTER TABLE ONLY public.shipitem DROP CONSTRAINT shipitem_pkey; publicadminfalse474474326061697153shipto_num_cust_unique CONSTRAINTkALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shipto_num_cust_unique UNIQUE (shipto_cust_id, shipto_num); KALTER TABLE ONLY public.shiptoinfo DROP CONSTRAINT shipto_num_cust_unique; publicadminfalse165165165526061697155 shipto_pkey CONSTRAINTTALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shipto_pkey PRIMARY KEY (shipto_id); @ALTER TABLE ONLY public.shiptoinfo DROP CONSTRAINT shipto_pkey; publicadminfalse165165{26061697157 shipvia_pkey CONSTRAINTSALTER TABLE ONLY shipvia ADD CONSTRAINT shipvia_pkey PRIMARY KEY (shipvia_id); >ALTER TABLE ONLY public.shipvia DROP CONSTRAINT shipvia_pkey; publicadminfalse256256}26061746608shipvia_shipvia_code_key CONSTRAINT\ALTER TABLE ONLY shipvia ADD CONSTRAINT shipvia_shipvia_code_key UNIQUE (shipvia_code); JALTER TABLE ONLY public.shipvia DROP CONSTRAINT shipvia_shipvia_code_key; publicadminfalse25625626061697159 shipzone_pkey CONSTRAINTVALTER TABLE ONLY shipzone ADD CONSTRAINT shipzone_pkey PRIMARY KEY (shipzone_id); @ALTER TABLE ONLY public.shipzone DROP CONSTRAINT shipzone_pkey; publicadminfalse21221226061746611shipzone_shipzone_name_key CONSTRAINT`ALTER TABLE ONLY shipzone ADD CONSTRAINT shipzone_shipzone_name_key UNIQUE (shipzone_name); MALTER TABLE ONLY public.shipzone DROP CONSTRAINT shipzone_shipzone_name_key; publicadminfalse21221226061697161 sitetype_pkey CONSTRAINTVALTER TABLE ONLY sitetype ADD CONSTRAINT sitetype_pkey PRIMARY KEY (sitetype_id); @ALTER TABLE ONLY public.sitetype DROP CONSTRAINT sitetype_pkey; publicadminfalse25725726061697163sitetype_sitetype_name_key CONSTRAINT`ALTER TABLE ONLY sitetype ADD CONSTRAINT sitetype_sitetype_name_key UNIQUE (sitetype_name); MALTER TABLE ONLY public.sitetype DROP CONSTRAINT sitetype_sitetype_name_key; publicadminfalse257257!26061697165 sltrans_pkey CONSTRAINTSALTER TABLE ONLY sltrans ADD CONSTRAINT sltrans_pkey PRIMARY KEY (sltrans_id); >ALTER TABLE ONLY public.sltrans DROP CONSTRAINT sltrans_pkey; publicadminfalse616616'26061697167 source_pkey CONSTRAINTPALTER TABLE ONLY source ADD CONSTRAINT source_pkey PRIMARY KEY (source_id); <ALTER TABLE ONLY public.source DROP CONSTRAINT source_pkey; publicadminfalse619619)26061697169source_source_name_key CONSTRAINTXALTER TABLE ONLY source ADD CONSTRAINT source_source_name_key UNIQUE (source_name); GALTER TABLE ONLY public.source DROP CONSTRAINT source_source_name_key; publicadminfalse619619+26061697171 state_pkey CONSTRAINTMALTER TABLE ONLY state ADD CONSTRAINT state_pkey PRIMARY KEY (state_id); :ALTER TABLE ONLY public.state DROP CONSTRAINT state_pkey; publicadminfalse621621-26061697173state_state_country_id_key CONSTRAINTlALTER TABLE ONLY state ADD CONSTRAINT state_state_country_id_key UNIQUE (state_country_id, state_name); JALTER TABLE ONLY public.state DROP CONSTRAINT state_state_country_id_key; publicadminfalse621621621/26061697175 status_pkey CONSTRAINTPALTER TABLE ONLY status ADD CONSTRAINT status_pkey PRIMARY KEY (status_id); <ALTER TABLE ONLY public.status DROP CONSTRAINT status_pkey; publicadminfalse623623126061697177status_status_type_key CONSTRAINTeALTER TABLE ONLY status ADD CONSTRAINT status_status_type_key UNIQUE (status_type, status_code); GALTER TABLE ONLY public.status DROP CONSTRAINT status_status_type_key; publicadminfalse623623623326061697179 stdjrnl_pkey CONSTRAINTSALTER TABLE ONLY stdjrnl ADD CONSTRAINT stdjrnl_pkey PRIMARY KEY (stdjrnl_id); >ALTER TABLE ONLY public.stdjrnl DROP CONSTRAINT stdjrnl_pkey; publicadminfalse625625526061746617stdjrnl_stdjrnl_name_key CONSTRAINT\ALTER TABLE ONLY stdjrnl ADD CONSTRAINT stdjrnl_stdjrnl_name_key UNIQUE (stdjrnl_name); JALTER TABLE ONLY public.stdjrnl DROP CONSTRAINT stdjrnl_stdjrnl_name_key; publicadminfalse625625726061697181stdjrnlgrp_pkey CONSTRAINT\ALTER TABLE ONLY stdjrnlgrp ADD CONSTRAINT stdjrnlgrp_pkey PRIMARY KEY (stdjrnlgrp_id); DALTER TABLE ONLY public.stdjrnlgrp DROP CONSTRAINT stdjrnlgrp_pkey; publicadminfalse627627926061746620stdjrnlgrp_stdjrnlgrp_name_key CONSTRAINThALTER TABLE ONLY stdjrnlgrp ADD CONSTRAINT stdjrnlgrp_stdjrnlgrp_name_key UNIQUE (stdjrnlgrp_name); SALTER TABLE ONLY public.stdjrnlgrp DROP CONSTRAINT stdjrnlgrp_stdjrnlgrp_name_key; publicadminfalse627627;26061697183stdjrnlgrpitem_pkey CONSTRAINThALTER TABLE ONLY stdjrnlgrpitem ADD CONSTRAINT stdjrnlgrpitem_pkey PRIMARY KEY (stdjrnlgrpitem_id); LALTER TABLE ONLY public.stdjrnlgrpitem DROP CONSTRAINT stdjrnlgrpitem_pkey; publicadminfalse629629=26061697185stdjrnlitem_pkey CONSTRAINT_ALTER TABLE ONLY stdjrnlitem ADD CONSTRAINT stdjrnlitem_pkey PRIMARY KEY (stdjrnlitem_id); FALTER TABLE ONLY public.stdjrnlitem DROP CONSTRAINT stdjrnlitem_pkey; publicadminfalse631631?26061697187 subaccnt_pkey CONSTRAINTVALTER TABLE ONLY subaccnt ADD CONSTRAINT subaccnt_pkey PRIMARY KEY (subaccnt_id); @ALTER TABLE ONLY public.subaccnt DROP CONSTRAINT subaccnt_pkey; publicadminfalse633633A26061697189subaccnt_subaccnt_number_key CONSTRAINTdALTER TABLE ONLY subaccnt ADD CONSTRAINT subaccnt_subaccnt_number_key UNIQUE (subaccnt_number); OALTER TABLE ONLY public.subaccnt DROP CONSTRAINT subaccnt_subaccnt_number_key; publicadminfalse633633D26061697191subaccnttype_pkey CONSTRAINTbALTER TABLE ONLY subaccnttype ADD CONSTRAINT subaccnttype_pkey PRIMARY KEY (subaccnttype_id); HALTER TABLE ONLY public.subaccnttype DROP CONSTRAINT subaccnttype_pkey; publicadminfalse635635a26061697193tax_pkey CONSTRAINTGALTER TABLE ONLY tax ADD CONSTRAINT tax_pkey PRIMARY KEY (tax_id); 6ALTER TABLE ONLY public.tax DROP CONSTRAINT tax_pkey; publicadminfalse247247F26061697195 taxass_pkey CONSTRAINTPALTER TABLE ONLY taxass ADD CONSTRAINT taxass_pkey PRIMARY KEY (taxass_id); <ALTER TABLE ONLY public.taxass DROP CONSTRAINT taxass_pkey; publicadminfalse638638H26061697197taxass_taxass_taxzone_id_key CONSTRAINTALTER TABLE ONLY taxass ADD CONSTRAINT taxass_taxass_taxzone_id_key UNIQUE (taxass_taxzone_id, taxass_taxtype_id, taxass_tax_id); MALTER TABLE ONLY public.taxass DROP CONSTRAINT taxass_taxass_taxzone_id_key; publicadminfalse63863863863826061697199 taxauth_pkey CONSTRAINTSALTER TABLE ONLY taxauth ADD CONSTRAINT taxauth_pkey PRIMARY KEY (taxauth_id); >ALTER TABLE ONLY public.taxauth DROP CONSTRAINT taxauth_pkey; publicadminfalse21021026061697201taxauth_taxauth_code_key CONSTRAINT\ALTER TABLE ONLY taxauth ADD CONSTRAINT taxauth_taxauth_code_key UNIQUE (taxauth_code); JALTER TABLE ONLY public.taxauth DROP CONSTRAINT taxauth_taxauth_code_key; publicadminfalse210210J26061697203 taxclass_pkey CONSTRAINTVALTER TABLE ONLY taxclass ADD CONSTRAINT taxclass_pkey PRIMARY KEY (taxclass_id); @ALTER TABLE ONLY public.taxclass DROP CONSTRAINT taxclass_pkey; publicadminfalse641641L26061746626taxclass_taxclass_code_key CONSTRAINT`ALTER TABLE ONLY taxclass ADD CONSTRAINT taxclass_taxclass_code_key UNIQUE (taxclass_code); MALTER TABLE ONLY public.taxclass DROP CONSTRAINT taxclass_taxclass_code_key; publicadminfalse641641w26061697205 taxhist_pkey CONSTRAINTSALTER TABLE ONLY taxhist ADD CONSTRAINT taxhist_pkey PRIMARY KEY (taxhist_id); >ALTER TABLE ONLY public.taxhist DROP CONSTRAINT taxhist_pkey; publicadminfalse253253N26061697207 taxrate_pkey CONSTRAINTSALTER TABLE ONLY taxrate ADD CONSTRAINT taxrate_pkey PRIMARY KEY (taxrate_id); >ALTER TABLE ONLY public.taxrate DROP CONSTRAINT taxrate_pkey; publicadminfalse64364326061697209 taxreg_pkey CONSTRAINTPALTER TABLE ONLY taxreg ADD CONSTRAINT taxreg_pkey PRIMARY KEY (taxreg_id); <ALTER TABLE ONLY public.taxreg DROP CONSTRAINT taxreg_pkey; publicadminfalse211211N26061697211 taxtype_pkey CONSTRAINTSALTER TABLE ONLY taxtype ADD CONSTRAINT taxtype_pkey PRIMARY KEY (taxtype_id); >ALTER TABLE ONLY public.taxtype DROP CONSTRAINT taxtype_pkey; publicadminfalse170170P26061697213taxtype_taxtype_name_key CONSTRAINT\ALTER TABLE ONLY taxtype ADD CONSTRAINT taxtype_taxtype_name_key UNIQUE (taxtype_name); JALTER TABLE ONLY public.taxtype DROP CONSTRAINT taxtype_taxtype_name_key; publicadminfalse170170726061697215 taxzone_pkey CONSTRAINTSALTER TABLE ONLY taxzone ADD CONSTRAINT taxzone_pkey PRIMARY KEY (taxzone_id); >ALTER TABLE ONLY public.taxzone DROP CONSTRAINT taxzone_pkey; publicadminfalse166166926061746631taxzone_taxzone_code_key CONSTRAINT\ALTER TABLE ONLY taxzone ADD CONSTRAINT taxzone_taxzone_code_key UNIQUE (taxzone_code); JALTER TABLE ONLY public.taxzone DROP CONSTRAINT taxzone_taxzone_code_key; publicadminfalse166166 26061697217 terms_pkey CONSTRAINTMALTER TABLE ONLY terms ADD CONSTRAINT terms_pkey PRIMARY KEY (terms_id); :ALTER TABLE ONLY public.terms DROP CONSTRAINT terms_pkey; publicadminfalse15715726061697219terms_terms_code_key CONSTRAINTTALTER TABLE ONLY terms ADD CONSTRAINT terms_terms_code_key UNIQUE (terms_code); DALTER TABLE ONLY public.terms DROP CONSTRAINT terms_terms_code_key; publicadminfalse15715726061697221 todoitem_pkey CONSTRAINTVALTER TABLE ONLY todoitem ADD CONSTRAINT todoitem_pkey PRIMARY KEY (todoitem_id); @ALTER TABLE ONLY public.todoitem DROP CONSTRAINT todoitem_pkey; publicadminfalse183183Q26061697223 trialbal_pkey CONSTRAINTVALTER TABLE ONLY trialbal ADD CONSTRAINT trialbal_pkey PRIMARY KEY (trialbal_id); @ALTER TABLE ONLY public.trialbal DROP CONSTRAINT trialbal_pkey; publicadminfalse65165126061697225 uiform_pkey CONSTRAINTPALTER TABLE ONLY uiform ADD CONSTRAINT uiform_pkey PRIMARY KEY (uiform_id); <ALTER TABLE ONLY public.uiform DROP CONSTRAINT uiform_pkey; publicadminfalse279279R26061697227uom_pkey CONSTRAINTGALTER TABLE ONLY uom ADD CONSTRAINT uom_pkey PRIMARY KEY (uom_id); 6ALTER TABLE ONLY public.uom DROP CONSTRAINT uom_pkey; publicadminfalse171171T26061697229uom_uom_name_key CONSTRAINTLALTER TABLE ONLY uom ADD CONSTRAINT uom_uom_name_key UNIQUE (uom_name); >ALTER TABLE ONLY public.uom DROP CONSTRAINT uom_uom_name_key; publicadminfalse171171S26061697231 uomconv_pkey CONSTRAINTSALTER TABLE ONLY uomconv ADD CONSTRAINT uomconv_pkey PRIMARY KEY (uomconv_id); >ALTER TABLE ONLY public.uomconv DROP CONSTRAINT uomconv_pkey; publicadminfalse654654U26061697233 uomtype_pkey CONSTRAINTSALTER TABLE ONLY uomtype ADD CONSTRAINT uomtype_pkey PRIMARY KEY (uomtype_id); >ALTER TABLE ONLY public.uomtype DROP CONSTRAINT uomtype_pkey; publicadminfalse656656W26061697235uomtype_uomtype_name_key CONSTRAINT\ALTER TABLE ONLY uomtype ADD CONSTRAINT uomtype_uomtype_name_key UNIQUE (uomtype_name); JALTER TABLE ONLY public.uomtype DROP CONSTRAINT uomtype_uomtype_name_key; publicadminfalse65665626061697237 urlinfo_pkey CONSTRAINTOALTER TABLE ONLY urlinfo ADD CONSTRAINT urlinfo_pkey PRIMARY KEY (url_id); >ALTER TABLE ONLY public.urlinfo DROP CONSTRAINT urlinfo_pkey; publicadminfalse191191\26061697239usr_pkey CONSTRAINTKALTER TABLE ONLY usr_bak ADD CONSTRAINT usr_pkey PRIMARY KEY (usr_id); :ALTER TABLE ONLY public.usr_bak DROP CONSTRAINT usr_pkey; publicadminfalse660660^26061697241usr_usr_username_key CONSTRAINTXALTER TABLE ONLY usr_bak ADD CONSTRAINT usr_usr_username_key UNIQUE (usr_username); FALTER TABLE ONLY public.usr_bak DROP CONSTRAINT usr_usr_username_key; publicadminfalse66066026061697243 usrgrp_pkey CONSTRAINTPALTER TABLE ONLY usrgrp ADD CONSTRAINT usrgrp_pkey PRIMARY KEY (usrgrp_id); <ALTER TABLE ONLY public.usrgrp DROP CONSTRAINT usrgrp_pkey; publicadminfalse573573Y26061697245 usrpref_pkey CONSTRAINTSALTER TABLE ONLY usrpref ADD CONSTRAINT usrpref_pkey PRIMARY KEY (usrpref_id); >ALTER TABLE ONLY public.usrpref DROP CONSTRAINT usrpref_pkey; publicadminfalse65965926061697247 usrpriv_pkey CONSTRAINTSALTER TABLE ONLY usrpriv ADD CONSTRAINT usrpriv_pkey PRIMARY KEY (usrpriv_id); >ALTER TABLE ONLY public.usrpriv DROP CONSTRAINT usrpriv_pkey; publicadminfalse57457426061697249 vend_pkey CONSTRAINTNALTER TABLE ONLY vendinfo ADD CONSTRAINT vend_pkey PRIMARY KEY (vend_id); <ALTER TABLE ONLY public.vendinfo DROP CONSTRAINT vend_pkey; publicadminfalse158158c26061697251 vendaddr_pkey CONSTRAINTZALTER TABLE ONLY vendaddrinfo ADD CONSTRAINT vendaddr_pkey PRIMARY KEY (vendaddr_id); DALTER TABLE ONLY public.vendaddrinfo DROP CONSTRAINT vendaddr_pkey; publicadminfalse24824826061697253vendinfo_vend_number_key CONSTRAINT\ALTER TABLE ONLY vendinfo ADD CONSTRAINT vendinfo_vend_number_key UNIQUE (vend_number); KALTER TABLE ONLY public.vendinfo DROP CONSTRAINT vendinfo_vend_number_key; publicadminfalse15815826061697255 vendtype_pkey CONSTRAINTVALTER TABLE ONLY vendtype ADD CONSTRAINT vendtype_pkey PRIMARY KEY (vendtype_id); @ALTER TABLE ONLY public.vendtype DROP CONSTRAINT vendtype_pkey; publicadminfalse25825826061746638vendtype_vendtype_code_key CONSTRAINT`ALTER TABLE ONLY vendtype ADD CONSTRAINT vendtype_vendtype_code_key UNIQUE (vendtype_code); MALTER TABLE ONLY public.vendtype DROP CONSTRAINT vendtype_vendtype_code_key; publicadminfalse258258`26061697257 vodist_pkey CONSTRAINTPALTER TABLE ONLY vodist ADD CONSTRAINT vodist_pkey PRIMARY KEY (vodist_id); <ALTER TABLE ONLY public.vodist DROP CONSTRAINT vodist_pkey; publicadminfalse668668b26061697259 vohead_pkey CONSTRAINTPALTER TABLE ONLY vohead ADD CONSTRAINT vohead_pkey PRIMARY KEY (vohead_id); <ALTER TABLE ONLY public.vohead DROP CONSTRAINT vohead_pkey; publicadminfalse670670d26061697261vohead_vohead_number_key CONSTRAINT\ALTER TABLE ONLY vohead ADD CONSTRAINT vohead_vohead_number_key UNIQUE (vohead_number); IALTER TABLE ONLY public.vohead DROP CONSTRAINT vohead_vohead_number_key; publicadminfalse670670f26061697263voheadtax_pkey CONSTRAINTWALTER TABLE ONLY voheadtax ADD CONSTRAINT voheadtax_pkey PRIMARY KEY (taxhist_id); BALTER TABLE ONLY public.voheadtax DROP CONSTRAINT voheadtax_pkey; publicadminfalse672672h26061697265 voitem_pkey CONSTRAINTPALTER TABLE ONLY voitem ADD CONSTRAINT voitem_pkey PRIMARY KEY (voitem_id); <ALTER TABLE ONLY public.voitem DROP CONSTRAINT voitem_pkey; publicadminfalse673673j26061697267voitemtax_pkey CONSTRAINTWALTER TABLE ONLY voitemtax ADD CONSTRAINT voitemtax_pkey PRIMARY KEY (taxhist_id); BALTER TABLE ONLY public.voitemtax DROP CONSTRAINT voitemtax_pkey; publicadminfalse675675W26061697269 warehous_pkey CONSTRAINTUALTER TABLE ONLY whsinfo ADD CONSTRAINT warehous_pkey PRIMARY KEY (warehous_id); ?ALTER TABLE ONLY public.whsinfo DROP CONSTRAINT warehous_pkey; publicadminfalse172172B26061697271 whsezone_pkey CONSTRAINTVALTER TABLE ONLY whsezone ADD CONSTRAINT whsezone_pkey PRIMARY KEY (whsezone_id); @ALTER TABLE ONLY public.whsezone DROP CONSTRAINT whsezone_pkey; publicadminfalse238238Y26061697273whsinfo_warehous_code_key CONSTRAINT^ALTER TABLE ONLY whsinfo ADD CONSTRAINT whsinfo_warehous_code_key UNIQUE (warehous_code); KALTER TABLE ONLY public.whsinfo DROP CONSTRAINT whsinfo_warehous_code_key; publicadminfalse172172426061697275wo_pkey CONSTRAINTDALTER TABLE ONLY wo ADD CONSTRAINT wo_pkey PRIMARY KEY (wo_id); 4ALTER TABLE ONLY public.wo DROP CONSTRAINT wo_pkey; publicadminfalse410410^26061697277 womatl_pkey CONSTRAINTPALTER TABLE ONLY womatl ADD CONSTRAINT womatl_pkey PRIMARY KEY (womatl_id); <ALTER TABLE ONLY public.womatl DROP CONSTRAINT womatl_pkey; publicadminfalse246246l26061697279womatlpost_pkey CONSTRAINT\ALTER TABLE ONLY womatlpost ADD CONSTRAINT womatlpost_pkey PRIMARY KEY (womatlpost_id); DALTER TABLE ONLY public.womatlpost DROP CONSTRAINT womatlpost_pkey; publicadminfalse680680n26061697281womatlvar_pkey CONSTRAINTYALTER TABLE ONLY womatlvar ADD CONSTRAINT womatlvar_pkey PRIMARY KEY (womatlvar_id); BALTER TABLE ONLY public.womatlvar DROP CONSTRAINT womatlvar_pkey; publicadminfalse682682p26061697283xsltmap_name_key CONSTRAINTTALTER TABLE ONLY xsltmap ADD CONSTRAINT xsltmap_name_key UNIQUE (xsltmap_name); BALTER TABLE ONLY public.xsltmap DROP CONSTRAINT xsltmap_name_key; publicadminfalse685685r26061697285 xsltmap_pkey CONSTRAINTSALTER TABLE ONLY xsltmap ADD CONSTRAINT xsltmap_pkey PRIMARY KEY (xsltmap_id); >ALTER TABLE ONLY public.xsltmap DROP CONSTRAINT xsltmap_pkey; publicadminfalse685685t26061697287yearperiod_pkey CONSTRAINT\ALTER TABLE ONLY yearperiod ADD CONSTRAINT yearperiod_pkey PRIMARY KEY (yearperiod_id); DALTER TABLE ONLY public.yearperiod DROP CONSTRAINT yearperiod_pkey; publicadminfalse687687v26061697289 pkgcmd_pkey CONSTRAINTMALTER TABLE ONLY pkgcmd ADD CONSTRAINT pkgcmd_pkey PRIMARY KEY (cmd_id); 8ALTER TABLE ONLY te.pkgcmd DROP CONSTRAINT pkgcmd_pkey; teadminfalse689689x26061697291pkgcmdarg_pkey CONSTRAINTVALTER TABLE ONLY pkgcmdarg ADD CONSTRAINT pkgcmdarg_pkey PRIMARY KEY (cmdarg_id); >ALTER TABLE ONLY te.pkgcmdarg DROP CONSTRAINT pkgcmdarg_pkey; teadminfalse690690z26061697293 pkgimage_pkey CONSTRAINTSALTER TABLE ONLY pkgimage ADD CONSTRAINT pkgimage_pkey PRIMARY KEY (image_id); <ALTER TABLE ONLY te.pkgimage DROP CONSTRAINT pkgimage_pkey; teadminfalse691691|26061697295pkgmetasql_pkey CONSTRAINTYALTER TABLE ONLY pkgmetasql ADD CONSTRAINT pkgmetasql_pkey PRIMARY KEY (metasql_id); @ALTER TABLE ONLY te.pkgmetasql DROP CONSTRAINT pkgmetasql_pkey; teadminfalse692692~26061697297 pkgpriv_pkey CONSTRAINTPALTER TABLE ONLY pkgpriv ADD CONSTRAINT pkgpriv_pkey PRIMARY KEY (priv_id); :ALTER TABLE ONLY te.pkgpriv DROP CONSTRAINT pkgpriv_pkey; teadminfalse69369326061697299pkgreport_pkey CONSTRAINTVALTER TABLE ONLY pkgreport ADD CONSTRAINT pkgreport_pkey PRIMARY KEY (report_id); >ALTER TABLE ONLY te.pkgreport DROP CONSTRAINT pkgreport_pkey; teadminfalse69469426061697301pkgscript_pkey CONSTRAINTVALTER TABLE ONLY pkgscript ADD CONSTRAINT pkgscript_pkey PRIMARY KEY (script_id); >ALTER TABLE ONLY te.pkgscript DROP CONSTRAINT pkgscript_pkey; teadminfalse69569526061697303pkguiform_pkey CONSTRAINTVALTER TABLE ONLY pkguiform ADD CONSTRAINT pkguiform_pkey PRIMARY KEY (uiform_id); >ALTER TABLE ONLY te.pkguiform DROP CONSTRAINT pkguiform_pkey; teadminfalse69669626061697305tecustrate_pkey CONSTRAINTaALTER TABLE ONLY tecustrate ADD CONSTRAINT tecustrate_pkey PRIMARY KEY (tecustrate_cust_id); @ALTER TABLE ONLY te.tecustrate DROP CONSTRAINT tecustrate_pkey; teadminfalse69769726061697307 teexp_pkey CONSTRAINTMALTER TABLE ONLY teexp ADD CONSTRAINT teexp_pkey PRIMARY KEY (teexp_id); 6ALTER TABLE ONLY te.teexp DROP CONSTRAINT teexp_pkey; teadminfalse70170126061697309 tehead_pkey CONSTRAINTPALTER TABLE ONLY tehead ADD CONSTRAINT tehead_pkey PRIMARY KEY (tehead_id); 8ALTER TABLE ONLY te.tehead DROP CONSTRAINT tehead_pkey; teadminfalse70370326061697311 teitem_pkey CONSTRAINTPALTER TABLE ONLY teitem ADD CONSTRAINT teitem_pkey PRIMARY KEY (teitem_id); 8ALTER TABLE ONLY te.teitem DROP CONSTRAINT teitem_pkey; teadminfalse70570526061697313 teprj_pkey CONSTRAINTMALTER TABLE ONLY teprj ADD CONSTRAINT teprj_pkey PRIMARY KEY (teprj_id); 6ALTER TABLE ONLY te.teprj DROP CONSTRAINT teprj_pkey; teadminfalse70770726061697315teprjtask_pkey CONSTRAINTYALTER TABLE ONLY teprjtask ADD CONSTRAINT teprjtask_pkey PRIMARY KEY (teprjtask_id); >ALTER TABLE ONLY te.teprjtask DROP CONSTRAINT teprjtask_pkey; teadminfalse70970926061697317"teprjtask_teprjtask_prjtask_id_key CONSTRAINTpALTER TABLE ONLY teprjtask ADD CONSTRAINT teprjtask_teprjtask_prjtask_id_key UNIQUE (teprjtask_prjtask_id); RALTER TABLE ONLY te.teprjtask DROP CONSTRAINT teprjtask_teprjtask_prjtask_id_key; teadminfalse70970926061697319 pkgcmd_pkey CONSTRAINTMALTER TABLE ONLY pkgcmd ADD CONSTRAINT pkgcmd_pkey PRIMARY KEY (cmd_id); ?ALTER TABLE ONLY xtdesktop.pkgcmd DROP CONSTRAINT pkgcmd_pkey;  xtdesktopadminfalse71171126061697321pkgcmdarg_pkey CONSTRAINTVALTER TABLE ONLY pkgcmdarg ADD CONSTRAINT pkgcmdarg_pkey PRIMARY KEY (cmdarg_id); EALTER TABLE ONLY xtdesktop.pkgcmdarg DROP CONSTRAINT pkgcmdarg_pkey;  xtdesktopadminfalse71271226061697323 pkgimage_pkey CONSTRAINTSALTER TABLE ONLY pkgimage ADD CONSTRAINT pkgimage_pkey PRIMARY KEY (image_id); CALTER TABLE ONLY xtdesktop.pkgimage DROP CONSTRAINT pkgimage_pkey;  xtdesktopadminfalse71371326061697325pkgmetasql_pkey CONSTRAINTYALTER TABLE ONLY pkgmetasql ADD CONSTRAINT pkgmetasql_pkey PRIMARY KEY (metasql_id); GALTER TABLE ONLY xtdesktop.pkgmetasql DROP CONSTRAINT pkgmetasql_pkey;  xtdesktopadminfalse71471426061697327 pkgpriv_pkey CONSTRAINTPALTER TABLE ONLY pkgpriv ADD CONSTRAINT pkgpriv_pkey PRIMARY KEY (priv_id); AALTER TABLE ONLY xtdesktop.pkgpriv DROP CONSTRAINT pkgpriv_pkey;  xtdesktopadminfalse71571526061697329pkgreport_pkey CONSTRAINTVALTER TABLE ONLY pkgreport ADD CONSTRAINT pkgreport_pkey PRIMARY KEY (report_id); EALTER TABLE ONLY xtdesktop.pkgreport DROP CONSTRAINT pkgreport_pkey;  xtdesktopadminfalse71671626061697331pkgscript_pkey CONSTRAINTVALTER TABLE ONLY pkgscript ADD CONSTRAINT pkgscript_pkey PRIMARY KEY (script_id); EALTER TABLE ONLY xtdesktop.pkgscript DROP CONSTRAINT pkgscript_pkey;  xtdesktopadminfalse71771726061697333pkguiform_pkey CONSTRAINTVALTER TABLE ONLY pkguiform ADD CONSTRAINT pkguiform_pkey PRIMARY KEY (uiform_id); EALTER TABLE ONLY xtdesktop.pkguiform DROP CONSTRAINT pkguiform_pkey;  xtdesktopadminfalse71871812591697380accnt_unique_idxINDEXrCREATE UNIQUE INDEX accnt_unique_idx ON accnt USING btree (accnt_number, accnt_profit, accnt_sub, accnt_company); $DROP INDEX public.accnt_unique_idx; publicadminfalse19919919919912591697381apopen_apopen_open_idxINDEXICREATE INDEX apopen_apopen_open_idx ON apopen USING btree (apopen_open); *DROP INDEX public.apopen_apopen_open_idx; publicadminfalse15512591697382apopen_apopen_vend_id_idxINDEXOCREATE INDEX apopen_apopen_vend_id_idx ON apopen USING btree (apopen_vend_id); -DROP INDEX public.apopen_apopen_vend_id_idx; publicadminfalse15512591697383apselect_apselect_apopen_id_idxINDEX[CREATE INDEX apselect_apselect_apopen_id_idx ON apselect USING btree (apselect_apopen_id); 3DROP INDEX public.apselect_apselect_apopen_id_idx; publicadminfalse29612591697384$arapply_arapply_target_docnumber_idxINDEXeCREATE INDEX arapply_arapply_target_docnumber_idx ON arapply USING btree (arapply_target_docnumber); 8DROP INDEX public.arapply_arapply_target_docnumber_idx; publicadminfalse30012591697385aropen_aropen_cust_id_idxINDEXOCREATE INDEX aropen_aropen_cust_id_idx ON aropen USING btree (aropen_cust_id); -DROP INDEX public.aropen_aropen_cust_id_idx; publicadminfalse15912591697386aropen_aropen_docnumber_idxINDEXSCREATE INDEX aropen_aropen_docnumber_idx ON aropen USING btree (aropen_docnumber); /DROP INDEX public.aropen_aropen_docnumber_idx; publicadminfalse15912591697387aropen_aropen_doctype_idxINDEXOCREATE INDEX aropen_aropen_doctype_idx ON aropen USING btree (aropen_doctype); -DROP INDEX public.aropen_aropen_doctype_idx; publicadminfalse15912591697388aropen_aropen_open_idxINDEXICREATE INDEX aropen_aropen_open_idx ON aropen USING btree (aropen_open); *DROP INDEX public.aropen_aropen_open_idx; publicadminfalse15912591697389aropen_posted_idxINDEXFCREATE INDEX aropen_posted_idx ON aropen USING btree (aropen_posted); %DROP INDEX public.aropen_posted_idx; publicadminfalse159k12591697390aropenalloc_aropen_id_idxINDEX[CREATE INDEX aropenalloc_aropen_id_idx ON aropenalloc USING btree (aropenalloc_aropen_id); -DROP INDEX public.aropenalloc_aropen_id_idx; publicadminfalse251l12591697391aropenalloc_doc_id_idxINDEXUCREATE INDEX aropenalloc_doc_id_idx ON aropenalloc USING btree (aropenalloc_doc_id); *DROP INDEX public.aropenalloc_doc_id_idx; publicadminfalse25112591697392bomitem_bomitem_item_id_idxINDEXSCREATE INDEX bomitem_bomitem_item_id_idx ON bomitem USING btree (bomitem_item_id); /DROP INDEX public.bomitem_bomitem_item_id_idx; publicadminfalse15112591697393bomitem_effective_keyINDEXOCREATE INDEX bomitem_effective_key ON bomitem USING btree (bomitem_effective); )DROP INDEX public.bomitem_effective_key; publicadminfalse15112591697394bomitem_expires_keyINDEXKCREATE INDEX bomitem_expires_key ON bomitem USING btree (bomitem_expires); 'DROP INDEX public.bomitem_expires_key; publicadminfalse15112591697395bomitem_parent_item_idINDEXUCREATE INDEX bomitem_parent_item_id ON bomitem USING btree (bomitem_parent_item_id); *DROP INDEX public.bomitem_parent_item_id; publicadminfalse15112591697396bomitemcost_bomitem_id_keyINDEX]CREATE INDEX bomitemcost_bomitem_id_key ON bomitemcost USING btree (bomitemcost_bomitem_id); .DROP INDEX public.bomitemcost_bomitem_id_key; publicadminfalse32512591697397bomitemcost_master_idxINDEXCREATE UNIQUE INDEX bomitemcost_master_idx ON bomitemcost USING btree (bomitemcost_bomitem_id, bomitemcost_costelem_id, bomitemcost_lowlevel); *DROP INDEX public.bomitemcost_master_idx; publicadminfalse32532532512591697398ccard_cust_id_idxINDEXECREATE INDEX ccard_cust_id_idx ON ccard USING btree (ccard_cust_id); %DROP INDEX public.ccard_cust_id_idx; publicadminfalse20612591697399ccardaud_ccard_cust_id_idxINDEX^CREATE INDEX ccardaud_ccard_cust_id_idx ON ccardaud USING btree (ccardaud_ccard_cust_id_new); .DROP INDEX public.ccardaud_ccard_cust_id_idx; publicadminfalse33812591697400ccardaud_ccard_id_idxINDEXPCREATE INDEX ccardaud_ccard_id_idx ON ccardaud USING btree (ccardaud_ccard_id); )DROP INDEX public.ccardaud_ccard_id_idx; publicadminfalse33812591697401ccpay_ccard_id_idxINDEXGCREATE INDEX ccpay_ccard_id_idx ON ccpay USING btree (ccpay_ccard_id); &DROP INDEX public.ccpay_ccard_id_idx; publicadminfalse34212591697402ccpay_cust_id_idxINDEXECREATE INDEX ccpay_cust_id_idx ON ccpay USING btree (ccpay_cust_id); %DROP INDEX public.ccpay_cust_id_idx; publicadminfalse34212591697403ccpay_order_number_idxINDEXOCREATE INDEX ccpay_order_number_idx ON ccpay USING btree (ccpay_order_number); *DROP INDEX public.ccpay_order_number_idx; publicadminfalse34212591697404charass_target_idxINDEXaCREATE INDEX charass_target_idx ON charass USING btree (charass_target_type, charass_target_id); &DROP INDEX public.charass_target_idx; publicadminfalse18618612591697405checkhead_posted_idxINDEXOCREATE INDEX checkhead_posted_idx ON checkhead USING btree (checkhead_posted); (DROP INDEX public.checkhead_posted_idx; publicadminfalse34812591697406checkhead_replaced_idxINDEXSCREATE INDEX checkhead_replaced_idx ON checkhead USING btree (checkhead_replaced); *DROP INDEX public.checkhead_replaced_idx; publicadminfalse34812591697407checkitem_apopenitem_id_idxINDEXYCREATE INDEX checkitem_apopenitem_id_idx ON checkitem USING btree (checkitem_apopen_id); /DROP INDEX public.checkitem_apopenitem_id_idx; publicadminfalse350/12591697408cmhead_invcnumber_idxINDEXNCREATE INDEX cmhead_invcnumber_idx ON cmhead USING btree (cmhead_invcnumber); )DROP INDEX public.cmhead_invcnumber_idx; publicadminfalse16412591697409cntct_email_idxINDEXACREATE INDEX cntct_email_idx ON cntct USING btree (cntct_email); #DROP INDEX public.cntct_email_idx; publicadminfalse15212591697410cntct_name_idxINDEX?CREATE INDEX cntct_name_idx ON cntct USING btree (cntct_name); "DROP INDEX public.cntct_name_idx; publicadminfalse15212591697411cobill_cobmisc_idINDEXJCREATE INDEX cobill_cobmisc_id ON cobill USING btree (cobill_cobmisc_id); %DROP INDEX public.cobill_cobmisc_id; publicadminfalse37112591697412cobill_coitem_idINDEXHCREATE INDEX cobill_coitem_id ON cobill USING btree (cobill_coitem_id); $DROP INDEX public.cobill_coitem_id; publicadminfalse371 12591697413cobmisc_cohead_idINDEXKCREATE INDEX cobmisc_cohead_id ON cobmisc USING btree (cobmisc_cohead_id); %DROP INDEX public.cobmisc_cohead_id; publicadminfalse374 12591697414cobmisc_postedINDEXECREATE INDEX cobmisc_posted ON cobmisc USING btree (cobmisc_posted); "DROP INDEX public.cobmisc_posted; publicadminfalse374k12591697415cohead_cohead_status_idxINDEXMCREATE INDEX cohead_cohead_status_idx ON cohead USING btree (cohead_status); ,DROP INDEX public.cohead_cohead_status_idx; publicadminfalse176l12591697416cohead_cust_id_keyINDEXHCREATE INDEX cohead_cust_id_key ON cohead USING btree (cohead_cust_id); &DROP INDEX public.cohead_cust_id_key; publicadminfalse176m12591697417cohead_custponumber_idxINDEXRCREATE INDEX cohead_custponumber_idx ON cohead USING btree (cohead_custponumber); +DROP INDEX public.cohead_custponumber_idx; publicadminfalse176n12591697418cohead_number_idxINDEXMCREATE UNIQUE INDEX cohead_number_idx ON cohead USING btree (cohead_number); %DROP INDEX public.cohead_number_idx; publicadminfalse176q12591697419cohead_shipto_idINDEXHCREATE INDEX cohead_shipto_id ON cohead USING btree (cohead_shipto_id); $DROP INDEX public.cohead_shipto_id; publicadminfalse176o12591697420cohist_cust_idINDEXDCREATE INDEX cohist_cust_id ON cohist USING btree (cohist_cust_id); "DROP INDEX public.cohist_cust_id; publicadminfalse252p12591697421cohist_invcnumberINDEXJCREATE INDEX cohist_invcnumber ON cohist USING btree (cohist_invcnumber); %DROP INDEX public.cohist_invcnumber; publicadminfalse252q12591697422cohist_itemsite_idINDEXLCREATE INDEX cohist_itemsite_id ON cohist USING btree (cohist_itemsite_id); &DROP INDEX public.cohist_itemsite_id; publicadminfalse252t12591697423cohist_shipdateINDEXFCREATE INDEX cohist_shipdate ON cohist USING btree (cohist_shipdate); #DROP INDEX public.cohist_shipdate; publicadminfalse252u12591697424cohist_shipto_idINDEXHCREATE INDEX cohist_shipto_id ON cohist USING btree (cohist_shipto_id); $DROP INDEX public.cohist_shipto_id; publicadminfalse252r12591697425coitem_cohead_id_keyINDEXLCREATE INDEX coitem_cohead_id_key ON coitem USING btree (coitem_cohead_id); (DROP INDEX public.coitem_cohead_id_key; publicadminfalse177s12591697426coitem_coitem_cohead_id_keyINDEXCREATE UNIQUE INDEX coitem_coitem_cohead_id_key ON coitem USING btree (coitem_cohead_id, coitem_linenumber, coitem_subnumber); /DROP INDEX public.coitem_coitem_cohead_id_key; publicadminfalse177177177t12591697427coitem_itemsite_idINDEXLCREATE INDEX coitem_itemsite_id ON coitem USING btree (coitem_itemsite_id); &DROP INDEX public.coitem_itemsite_id; publicadminfalse177u12591697428coitem_linenumber_keyINDEXNCREATE INDEX coitem_linenumber_key ON coitem USING btree (coitem_linenumber); )DROP INDEX public.coitem_linenumber_key; publicadminfalse177x12591697429coitem_status_keyINDEXFCREATE INDEX coitem_status_key ON coitem USING btree (coitem_status); %DROP INDEX public.coitem_status_key; publicadminfalse17712591697430comment_comment_source_idxINDEXdCREATE INDEX comment_comment_source_idx ON comment USING btree (comment_source, comment_source_id); .DROP INDEX public.comment_comment_source_idx; publicadminfalse18818812591746327contrct_master_idxINDEXaCREATE UNIQUE INDEX contrct_master_idx ON contrct USING btree (contrct_number, contrct_vend_id); &DROP INDEX public.contrct_master_idx; publicadminfalse72072012591697431cust_number_idxINDEXKCREATE UNIQUE INDEX cust_number_idx ON custinfo USING btree (cust_number); #DROP INDEX public.cust_number_idx; publicadminfalse160=12591697432evntlog_dispatched_idxINDEXQCREATE INDEX evntlog_dispatched_idx ON evntlog USING btree (evntlog_dispatched); *DROP INDEX public.evntlog_dispatched_idx; publicadminfalse416>12592008286evntlog_evntlog_username_idxINDEXUCREATE INDEX evntlog_evntlog_username_idx ON evntlog USING btree (evntlog_username); 0DROP INDEX public.evntlog_evntlog_username_idx; publicadminfalse416A12591697433evntnot_evnttype_id_idxINDEXSCREATE INDEX evntnot_evnttype_id_idx ON evntnot USING btree (evntnot_evnttype_id); +DROP INDEX public.evntnot_evnttype_id_idx; publicadminfalse418D12591697434evntnot_warehous_id_idxINDEXSCREATE INDEX evntnot_warehous_id_idx ON evntnot USING btree (evntnot_warehous_id); +DROP INDEX public.evntnot_warehous_id_idx; publicadminfalse418I12591697436 filter_idxINDEX]CREATE INDEX filter_idx ON filter USING btree (filter_screen, filter_username, filter_name); DROP INDEX public.filter_idx; publicadminfalse424424424;12591697437gltrans_gltrans_accnt_id_idxINDEXUCREATE INDEX gltrans_gltrans_accnt_id_idx ON gltrans USING btree (gltrans_accnt_id); 0DROP INDEX public.gltrans_gltrans_accnt_id_idx; publicadminfalse237<12591697438gltrans_gltrans_date_idxINDEXMCREATE INDEX gltrans_gltrans_date_idx ON gltrans USING btree (gltrans_date); ,DROP INDEX public.gltrans_gltrans_date_idx; publicadminfalse237=12591697439!gltrans_gltrans_journalnumber_idxINDEX_CREATE INDEX gltrans_gltrans_journalnumber_idx ON gltrans USING btree (gltrans_journalnumber); 5DROP INDEX public.gltrans_gltrans_journalnumber_idx; publicadminfalse237@12591697440gltrans_sequence_idxINDEXMCREATE INDEX gltrans_sequence_idx ON gltrans USING btree (gltrans_sequence); (DROP INDEX public.gltrans_sequence_idx; publicadminfalse237Z12591697441!invchead_invchead_ordernumber_idxINDEX_CREATE INDEX invchead_invchead_ordernumber_idx ON invchead USING btree (invchead_ordernumber); 5DROP INDEX public.invchead_invchead_ordernumber_idx; publicadminfalse173e12591697442!invcitem_invcitem_invchead_id_idxINDEX_CREATE INDEX invcitem_invcitem_invchead_id_idx ON invcitem USING btree (invcitem_invchead_id); 5DROP INDEX public.invcitem_invcitem_invchead_id_idx; publicadminfalse175f12591697443!invcitem_invcitem_itemsite_id_idxINDEXqCREATE INDEX invcitem_invcitem_itemsite_id_idx ON invcitem USING btree (invcitem_item_id, invcitem_warehous_id); 5DROP INDEX public.invcitem_invcitem_itemsite_id_idx; publicadminfalse175175r12592008287!invcitemtax_taxhist_parent_id_idxINDEX_CREATE INDEX invcitemtax_taxhist_parent_id_idx ON invcitemtax USING btree (taxhist_parent_id); 5DROP INDEX public.invcitemtax_taxhist_parent_id_idx; publicadminfalse465u12591697444#invdetail_invdetail_invcitem_id_idxINDEXcCREATE INDEX invdetail_invdetail_invcitem_id_idx ON invdetail USING btree (invdetail_invcitem_id); 7DROP INDEX public.invdetail_invdetail_invcitem_id_idx; publicadminfalse468v12591697445"invdetail_invdetail_invhist_id_idxINDEXaCREATE INDEX invdetail_invdetail_invhist_id_idx ON invdetail USING btree (invdetail_invhist_id); 6DROP INDEX public.invdetail_invdetail_invhist_id_idx; publicadminfalse468y12591697446invhist_hasdetailINDEXKCREATE INDEX invhist_hasdetail ON invhist USING btree (invhist_hasdetail); %DROP INDEX public.invhist_hasdetail; publicadminfalse470z12591697447invhist_invhist_ordnumber_idxINDEXWCREATE INDEX invhist_invhist_ordnumber_idx ON invhist USING btree (invhist_ordnumber); 1DROP INDEX public.invhist_invhist_ordnumber_idx; publicadminfalse470{12591697448invhist_itemsite_idINDEXOCREATE INDEX invhist_itemsite_id ON invhist USING btree (invhist_itemsite_id); 'DROP INDEX public.invhist_itemsite_id; publicadminfalse470~12591697449invhist_seriesINDEXECREATE INDEX invhist_series ON invhist USING btree (invhist_series); "DROP INDEX public.invhist_series; publicadminfalse47012591697450invhist_transdateINDEXKCREATE INDEX invhist_transdate ON invhist USING btree (invhist_transdate); %DROP INDEX public.invhist_transdate; publicadminfalse47012591697451invhist_transtypeINDEXKCREATE INDEX invhist_transtype ON invhist USING btree (invhist_transtype); %DROP INDEX public.invhist_transtype; publicadminfalse470G12591697452ipsitem_ipshead_id_idxINDEXUCREATE INDEX ipsitem_ipshead_id_idx ON ipsiteminfo USING btree (ipsitem_ipshead_id); *DROP INDEX public.ipsitem_ipshead_id_idx; publicadminfalse240>12591697453item_classcode_idINDEXHCREATE INDEX item_classcode_id ON item USING btree (item_classcode_id); %DROP INDEX public.item_classcode_id; publicadminfalse168A12591697454item_number_idxINDEXGCREATE UNIQUE INDEX item_number_idx ON item USING btree (item_number); #DROP INDEX public.item_number_idx; publicadminfalse168D12591697455item_prodcat_id_idxINDEXHCREATE INDEX item_prodcat_id_idx ON item USING btree (item_prodcat_id); 'DROP INDEX public.item_prodcat_id_idx; publicadminfalse168E12591697456item_upccode_idxINDEXBCREATE INDEX item_upccode_idx ON item USING btree (item_upccode); $DROP INDEX public.item_upccode_idx; publicadminfalse16812591697457itemcost_item_id_keyINDEXNCREATE INDEX itemcost_item_id_key ON itemcost USING btree (itemcost_item_id); (DROP INDEX public.itemcost_item_id_key; publicadminfalse22812591697458itemcost_master_idxINDEX}CREATE UNIQUE INDEX itemcost_master_idx ON itemcost USING btree (itemcost_item_id, itemcost_costelem_id, itemcost_lowlevel); 'DROP INDEX public.itemcost_master_idx; publicadminfalse22822822812591697459itemgrpitem_itemgrp_item_id_idxINDEX~CREATE UNIQUE INDEX itemgrpitem_itemgrp_item_id_idx ON itemgrpitem USING btree (itemgrpitem_itemgrp_id, itemgrpitem_item_id); 3DROP INDEX public.itemgrpitem_itemgrp_item_id_idx; publicadminfalse49049012591697460itemloc_itemsite_idxINDEXPCREATE INDEX itemloc_itemsite_idx ON itemloc USING btree (itemloc_itemsite_id); (DROP INDEX public.itemloc_itemsite_idx; publicadminfalse49412591697461itemloc_location_idxINDEXPCREATE INDEX itemloc_location_idx ON itemloc USING btree (itemloc_location_id); (DROP INDEX public.itemloc_location_idx; publicadminfalse494F12591697462itemsite_active_keyINDEXLCREATE INDEX itemsite_active_key ON itemsite USING btree (itemsite_active); 'DROP INDEX public.itemsite_active_key; publicadminfalse169G12591697463itemsite_item_id_keyINDEXNCREATE INDEX itemsite_item_id_key ON itemsite USING btree (itemsite_item_id); (DROP INDEX public.itemsite_item_id_key; publicadminfalse169H12591697464itemsite_item_warehous_id_keyINDEXtCREATE UNIQUE INDEX itemsite_item_warehous_id_key ON itemsite USING btree (itemsite_item_id, itemsite_warehous_id); 1DROP INDEX public.itemsite_item_warehous_id_key; publicadminfalse169169K12591697465itemsite_plancode_id_keyINDEXVCREATE INDEX itemsite_plancode_id_key ON itemsite USING btree (itemsite_plancode_id); ,DROP INDEX public.itemsite_plancode_id_key; publicadminfalse169L12591697466itemsite_warehous_id_keyINDEXVCREATE INDEX itemsite_warehous_id_key ON itemsite USING btree (itemsite_warehous_id); ,DROP INDEX public.itemsite_warehous_id_key; publicadminfalse169+12591697467itemsrc_vend_id_idxINDEXKCREATE INDEX itemsrc_vend_id_idx ON itemsrc USING btree (itemsrc_vend_id); 'DROP INDEX public.itemsrc_vend_id_idx; publicadminfalse232,12591697468itemsrcp_itemsrc_id_keyINDEXTCREATE INDEX itemsrcp_itemsrc_id_key ON itemsrcp USING btree (itemsrcp_itemsrc_id); +DROP INDEX public.itemsrcp_itemsrc_id_key; publicadminfalse233312591697469itemsub_parent_item_id_keyINDEXYCREATE INDEX itemsub_parent_item_id_key ON itemsub USING btree (itemsub_parent_item_id); .DROP INDEX public.itemsub_parent_item_id_key; publicadminfalse234612591697470itemsub_sub_item_id_keyINDEXSCREATE INDEX itemsub_sub_item_id_key ON itemsub USING btree (itemsub_sub_item_id); +DROP INDEX public.itemsub_sub_item_id_key; publicadminfalse234"12591697471location_warehous_idxINDEXSCREATE INDEX location_warehous_idx ON location USING btree (location_warehous_id); )DROP INDEX public.location_warehous_idx; publicadminfalse23012591697474payaropen_aropen_id_idxINDEXUCREATE INDEX payaropen_aropen_id_idx ON payaropen USING btree (payaropen_aropen_id); +DROP INDEX public.payaropen_aropen_id_idx; publicadminfalse55112591697475payaropen_ccpay_id_idxINDEXSCREATE INDEX payaropen_ccpay_id_idx ON payaropen USING btree (payaropen_ccpay_id); *DROP INDEX public.payaropen_ccpay_id_idx; publicadminfalse55112591697476payco_ccpay_id_idxINDEXGCREATE INDEX payco_ccpay_id_idx ON payco USING btree (payco_ccpay_id); &DROP INDEX public.payco_ccpay_id_idx; publicadminfalse55212591697477payco_cohead_id_idxINDEXICREATE INDEX payco_cohead_id_idx ON payco USING btree (payco_cohead_id); 'DROP INDEX public.payco_cohead_id_idx; publicadminfalse552}12591697478pohead_pohead_status_idxINDEXMCREATE INDEX pohead_pohead_status_idx ON pohead USING btree (pohead_status); ,DROP INDEX public.pohead_pohead_status_idx; publicadminfalse178~12591697479poitem_itemsite_id_keyINDEXPCREATE INDEX poitem_itemsite_id_key ON poitem USING btree (poitem_itemsite_id); *DROP INDEX public.poitem_itemsite_id_key; publicadminfalse17912591697480"poitem_itemsite_status_duedate_keyINDEX{CREATE INDEX poitem_itemsite_status_duedate_key ON poitem USING btree (poitem_itemsite_id, poitem_status, poitem_duedate); 6DROP INDEX public.poitem_itemsite_status_duedate_key; publicadminfalse17917917912591697481poitem_pohead_id_keyINDEXLCREATE INDEX poitem_pohead_id_key ON poitem USING btree (poitem_pohead_id); (DROP INDEX public.poitem_pohead_id_key; publicadminfalse17912591697482poitem_status_keyINDEXFCREATE INDEX poitem_status_key ON poitem USING btree (poitem_status); %DROP INDEX public.poitem_status_key; publicadminfalse17912591697483 priv_name_idxINDEXCCREATE UNIQUE INDEX priv_name_idx ON priv USING btree (priv_name); !DROP INDEX public.priv_name_idx; publicadminfalse270j12591697484quitem_quhead_id_keyINDEXLCREATE INDEX quitem_quhead_id_key ON quitem USING btree (quitem_quhead_id); (DROP INDEX public.quitem_quhead_id_key; publicadminfalse25012591697485recv_ordertypeid_idxINDEX\CREATE INDEX recv_ordertypeid_idx ON recv USING btree (recv_order_type, recv_orderitem_id); (DROP INDEX public.recv_ordertypeid_idx; publicadminfalse59159112591697486report_name_grade_idxINDEX]CREATE UNIQUE INDEX report_name_grade_idx ON report USING btree (report_name, report_grade); )DROP INDEX public.report_name_grade_idx; publicadminfalse273273 12591697487salesaccnt_prodcat_id_idxINDEXZCREATE INDEX salesaccnt_prodcat_id_idx ON salesaccnt USING btree (salesaccnt_prodcat_id); -DROP INDEX public.salesaccnt_prodcat_id_idx; publicadminfalse393!12591697488salesaccnt_warehous_id_idxINDEX\CREATE INDEX salesaccnt_warehous_id_idx ON salesaccnt USING btree (salesaccnt_warehous_id); .DROP INDEX public.salesaccnt_warehous_id_idx; publicadminfalse39312591697489shipdata_cohead_number_idxINDEXZCREATE INDEX shipdata_cohead_number_idx ON shipdata USING btree (shipdata_cohead_number); .DROP INDEX public.shipdata_cohead_number_idx; publicadminfalse21612591697490shipdatasum_cohead_number_idxINDEXcCREATE INDEX shipdatasum_cohead_number_idx ON shipdatasum USING btree (shipdatasum_cohead_number); 1DROP INDEX public.shipdatasum_cohead_number_idx; publicadminfalse60612591697491 shipdatasum_cosmisc_tracknum_idxINDEXiCREATE INDEX shipdatasum_cosmisc_tracknum_idx ON shipdatasum USING btree (shipdatasum_cosmisc_tracknum); 4DROP INDEX public.shipdatasum_cosmisc_tracknum_idx; publicadminfalse60612591697492shiphead_order_id_idxINDEXPCREATE INDEX shiphead_order_id_idx ON shiphead USING btree (shiphead_order_id); )DROP INDEX public.shiphead_order_id_idx; publicadminfalse60812591697493shiphead_shipped_idxINDEXNCREATE INDEX shiphead_shipped_idx ON shiphead USING btree (shiphead_shipped); (DROP INDEX public.shiphead_shipped_idx; publicadminfalse60812592008289shipitem_invcitem_id_idxINDEXVCREATE INDEX shipitem_invcitem_id_idx ON shipitem USING btree (shipitem_invcitem_id); ,DROP INDEX public.shipitem_invcitem_id_idx; publicadminfalse47412592008288shipitem_orderitem_id_idxINDEXXCREATE INDEX shipitem_orderitem_id_idx ON shipitem USING btree (shipitem_orderitem_id); -DROP INDEX public.shipitem_orderitem_id_idx; publicadminfalse47412591697495shipitem_shiphead_id_idxINDEXVCREATE INDEX shipitem_shiphead_id_idx ON shipitem USING btree (shipitem_shiphead_id); ,DROP INDEX public.shipitem_shiphead_id_idx; publicadminfalse474"12591697496sltrans_sequence_idxINDEXMCREATE INDEX sltrans_sequence_idx ON sltrans USING btree (sltrans_sequence); (DROP INDEX public.sltrans_sequence_idx; publicadminfalse616#12591697497sltrans_sltrans_accnt_id_idxINDEXUCREATE INDEX sltrans_sltrans_accnt_id_idx ON sltrans USING btree (sltrans_accnt_id); 0DROP INDEX public.sltrans_sltrans_accnt_id_idx; publicadminfalse616$12591697498sltrans_sltrans_date_idxINDEXMCREATE INDEX sltrans_sltrans_date_idx ON sltrans USING btree (sltrans_date); ,DROP INDEX public.sltrans_sltrans_date_idx; publicadminfalse616%12591697499!sltrans_sltrans_journalnumber_idxINDEX_CREATE INDEX sltrans_sltrans_journalnumber_idx ON sltrans USING btree (sltrans_journalnumber); 5DROP INDEX public.sltrans_sltrans_journalnumber_idx; publicadminfalse616B12591697500subaccnttype_code_idxINDEX[CREATE UNIQUE INDEX subaccnttype_code_idx ON subaccnttype USING btree (subaccnttype_code); )DROP INDEX public.subaccnttype_code_idx; publicadminfalse63512591697501todoitem_todoitem_username_idxINDEXYCREATE INDEX todoitem_todoitem_username_idx ON todoitem USING btree (todoitem_username); 2DROP INDEX public.todoitem_todoitem_username_idx; publicadminfalse183O12591697502trialbal_accnt_period_idxINDEXoCREATE UNIQUE INDEX trialbal_accnt_period_idx ON trialbal USING btree (trialbal_accnt_id, trialbal_period_id); -DROP INDEX public.trialbal_accnt_period_idx; publicadminfalse651651Z12591697503usrpref_userpref_name_idxINDEXNCREATE INDEX usrpref_userpref_name_idx ON usrpref USING btree (usrpref_name); -DROP INDEX public.usrpref_userpref_name_idx; publicadminfalse65912591697504vend_number_idxINDEXKCREATE UNIQUE INDEX vend_number_idx ON vendinfo USING btree (vend_number); #DROP INDEX public.vend_number_idx; publicadminfalse158U12591697505warehous_code_keyINDEXRCREATE INDEX warehous_code_key ON whsinfo USING btree (warehous_code bpchar_ops); %DROP INDEX public.warehous_code_key; publicadminfalse172012591697506 wo_duedateINDEX8CREATE INDEX wo_duedate ON wo USING btree (wo_duedate); DROP INDEX public.wo_duedate; publicadminfalse410112591697507wo_itemsite_idINDEX@CREATE INDEX wo_itemsite_id ON wo USING btree (wo_itemsite_id); "DROP INDEX public.wo_itemsite_id; publicadminfalse410212591697508 wo_ordtypeINDEX8CREATE INDEX wo_ordtype ON wo USING btree (wo_ordtype); DROP INDEX public.wo_ordtype; publicadminfalse410512591697509 wo_startdateINDEX<CREATE INDEX wo_startdate ON wo USING btree (wo_startdate); DROP INDEX public.wo_startdate; publicadminfalse410612591697510 wo_statusINDEX6CREATE INDEX wo_status ON wo USING btree (wo_status); DROP INDEX public.wo_status; publicadminfalse410\12591697511womatl_itemsite_id_keyINDEXPCREATE INDEX womatl_itemsite_id_key ON womatl USING btree (womatl_itemsite_id); *DROP INDEX public.womatl_itemsite_id_key; publicadminfalse246_12591697512womatl_wo_id_keyINDEXDCREATE INDEX womatl_wo_id_key ON womatl USING btree (womatl_wo_id); $DROP INDEX public.womatl_wo_id_key; publicadminfalse24612591697513teitem_teitem_tehead_id_idxINDEXSCREATE INDEX teitem_teitem_tehead_id_idx ON teitem USING btree (teitem_tehead_id); +DROP INDEX te.teitem_teitem_tehead_id_idx; teadminfalse70526181697515_DELETERULE!CREATE RULE "_DELETE" AS ON DELETE TO salesline DO INSTEAD DELETE FROM public.coitem WHERE (((coitem.coitem_cohead_id = public.getcoheadid((old.order_number)::text)) AND (((coitem.coitem_linenumber)::character varying)::text = (old.line_number)::text)) AND (coitem.coitem_subnumber = 0)); &DROP RULE "_DELETE" ON api.salesline; apiadminfalse1801771771771088180180180#26181747071_DELETERULEACREATE RULE "_DELETE" AS ON DELETE TO apmemo DO INSTEAD NOTHING; #DROP RULE "_DELETE" ON api.apmemo; apiadminfalse723723723'26181747080_DELETERULEACREATE RULE "_DELETE" AS ON DELETE TO armemo DO INSTEAD NOTHING; #DROP RULE "_DELETE" ON api.armemo; apiadminfalse724724724+26181848169_DELETERULEGCREATE RULE "_DELETE" AS ON DELETE TO physinvcount DO INSTEAD NOTHING; )DROP RULE "_DELETE" ON api.physinvcount; apiadminfalse725725725/26182008628_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO account DO INSTEAD DELETE FROM public.crmacct WHERE (crmacct.crmacct_number = (old.account_number)::text); $DROP RULE "_DELETE" ON api.account; apiadminfalse743153743743326182008635_DELETERULECCREATE RULE "_DELETE" AS ON DELETE TO accountchar DO INSTEAD DELETE FROM public.charass WHERE (((charass.charass_target_type = 'CRMACCT'::text) AND (charass.charass_target_id = public.getcrmacctid((old.account_number)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'CRMACCT'::text))); (DROP RULE "_DELETE" ON api.accountchar; apiadminfalse74413121861861867447441347744726182008642_DELETERULEICREATE RULE "_DELETE" AS ON DELETE TO accountcomment DO INSTEAD NOTHING; +DROP RULE "_DELETE" ON api.accountcomment; apiadminfalse745745745;26182008649_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO accountfile DO INSTEAD DELETE FROM public.url WHERE ((((url.url_source_id = public.getcrmacctid(old.account_number)) AND (url.url_source = 'CRMA'::text)) AND (url.url_title = old.title)) AND (url.url_url = old.url)); (DROP RULE "_DELETE" ON api.accountfile; apiadminfalse7467461921347746192192192746746?26182008656_DELETERULE CREATE RULE "_DELETE" AS ON DELETE TO accountimage DO INSTEAD DELETE FROM public.imageass WHERE (((imageass.imageass_source_id = public.getcrmacctid(old.account_number)) AND (imageass.imageass_source = 'CRMA'::text)) AND (imageass.imageass_image_id = public.getimageid(old.image_name))); )DROP RULE "_DELETE" ON api.accountimage; apiadminfalse74719574713471045195195747747C26182008663_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO address DO INSTEAD SELECT public.deleteaddress(public.getaddrid((old.address_number)::text)) AS deleteaddress; $DROP RULE "_DELETE" ON api.address; apiadminfalse74874813517481271G26182008670_DELETERULE:CREATE RULE "_DELETE" AS ON DELETE TO addresschar DO INSTEAD DELETE FROM public.charass WHERE (((charass.charass_target_type = 'ADDR'::text) AND (charass.charass_target_id = public.getaddrid((old.address_number)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'ADDR'::text))); (DROP RULE "_DELETE" ON api.addresschar; apiadminfalse74974913127491271186186186749K26182008677_DELETERULEICREATE RULE "_DELETE" AS ON DELETE TO addresscomment DO INSTEAD NOTHING; +DROP RULE "_DELETE" ON api.addresscomment; apiadminfalse750750750O26182008687_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO bom DO INSTEAD SELECT public.deletebom(public.getitemid((old.item_number)::text)) AS deletebom; DROP RULE "_DELETE" ON api.bom; apiadminfalse75175113547511053S26182008697_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO bomitem DO INSTEAD DELETE FROM public.bomitem WHERE ((bomitem.bomitem_id = old.id) AND public.fetchmetricbool('AllowBOMItemDelete'::text)); $DROP RULE "_DELETE" ON api.bomitem; apiadminfalse752752151937752W26182008705_DELETERULEICREATE RULE "_DELETE" AS ON DELETE TO bomitemcomment DO INSTEAD NOTHING; +DROP RULE "_DELETE" ON api.bomitemcomment; apiadminfalse753753753[26182008713_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO bomitemsubstitute DO INSTEAD DELETE FROM public.bomitemsub WHERE ((bomitemsub.bomitemsub_bomitem_id = old.bomitem_id) AND (bomitemsub.bomitemsub_item_id = public.getitemid((old.substitute_item_number)::text))); .DROP RULE "_DELETE" ON api.bomitemsubstitute; apiadminfalse7541053197754197754754_26182008720_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO budget DO INSTEAD DELETE FROM public.budghead WHERE (budghead.budghead_name = old.name); #DROP RULE "_DELETE" ON api.budget; apiadminfalse755755198755c26182008727_DELETERULE2CREATE RULE "_DELETE" AS ON DELETE TO budgetentry DO INSTEAD DELETE FROM public.budgitem WHERE (((budgitem.budgitem_budghead_id = public.getbudgheadid(old.name)) AND (budgitem.budgitem_period_id = public.getperiodid(old.period_start))) AND (budgitem.budgitem_accnt_id = public.getglaccntid(old.account))); (DROP RULE "_DELETE" ON api.budgetentry; apiadminfalse756756148120020075675675620015381709g26182008737_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO cashreceipt DO INSTEAD SELECT public.deletecashrcpt(cashrcpt.cashrcpt_id) AS deletecashrcpt FROM public.cashrcpt WHERE (cashrcpt.cashrcpt_id = public.getcashrcptid((old.customer_number)::text, CASE WHEN ((old.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((old.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((old.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((old.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((old.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((old.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((old.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((old.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((old.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, (old.check_document_number)::text)); (DROP RULE "_DELETE" ON api.cashreceipt; apiadminfalse75775715392037577571357757k26182008748_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO cashreceiptapply DO INSTEAD DELETE FROM public.cashrcptitem WHERE ((cashrcptitem.cashrcptitem_cashrcpt_id = public.getcashrcptid((old.customer_number)::text, CASE WHEN ((old.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((old.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((old.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((old.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((old.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((old.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((old.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((old.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((old.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, (old.check_document_number)::text)) AND (cashrcptitem.cashrcptitem_aropen_id = public.getaropenid((old.customer_number)::text, (old.doc_type)::bpchar, (old.doc_number)::text))); -DROP RULE "_DELETE" ON api.cashreceiptapply; apiadminfalse75812752047587587587582047581539758o26182008758_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO cashreceiptapplymisc DO INSTEAD DELETE FROM public.cashrcptmisc WHERE ((cashrcptmisc.cashrcptmisc_cashrcpt_id = public.getcashrcptid((old.customer_number)::text, CASE WHEN ((old.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((old.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((old.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((old.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((old.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((old.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((old.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((old.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((old.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, (old.check_document_number)::text)) AND (cashrcptmisc.cashrcptmisc_accnt_id = public.getglaccntid((old.account)::text))); 1DROP RULE "_DELETE" ON api.cashreceiptapplymisc; apiadminfalse75915397597592052057597591481759s26182008766_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO contact DO INSTEAD DELETE FROM public.cntct WHERE (cntct.cntct_number = (old.contact_number)::text); $DROP RULE "_DELETE" ON api.contact; apiadminfalse760760760152w26182008773_DELETERULE5CREATE RULE "_DELETE" AS ON DELETE TO contactchar DO INSTEAD DELETE FROM public.charass WHERE (((charass.charass_target_type = 'CNTCT'::text) AND (charass.charass_target_id = public.getcntctid(old.contact_number))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'CNTCT'::text))); (DROP RULE "_DELETE" ON api.contactchar; apiadminfalse7611867619711861867611312761{26182008780_DELETERULEICREATE RULE "_DELETE" AS ON DELETE TO contactcomment DO INSTEAD NOTHING; +DROP RULE "_DELETE" ON api.contactcomment; apiadminfalse76276276226182008790_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO creditmemo DO INSTEAD SELECT public.deletecreditmemo(cmhead.cmhead_id) AS deletecreditmemo FROM public.cmhead WHERE ((cmhead.cmhead_number = old.memo_number) AND (cmhead.cmhead_posted = false)); 'DROP RULE "_DELETE" ON api.creditmemo; apiadminfalse763164138376316416476326182008800_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO creditmemoline DO INSTEAD DELETE FROM public.cmitem WHERE ((cmitem.cmitem_cmhead_id = public.getcmheadid(old.memo_number, false)) AND (cmitem.cmitem_linenumber = old.line_number)); +DROP RULE "_DELETE" ON api.creditmemoline; apiadminfalse764167764764103116776426182008807_DELETERULE2CREATE RULE "_DELETE" AS ON DELETE TO custchar DO INSTEAD DELETE FROM public.charass WHERE (((charass.charass_target_type = 'C'::text) AND (charass.charass_target_id = public.getcustid((old.customer_number)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'C'::text))); %DROP RULE "_DELETE" ON api.custchar; apiadminfalse7657651867651861312765139518626182008814_DELETERULEFCREATE RULE "_DELETE" AS ON DELETE TO custcomment DO INSTEAD NOTHING; (DROP RULE "_DELETE" ON api.custcomment; apiadminfalse76676676626182008822_DELETERULEICREATE RULE "_DELETE" AS ON DELETE TO custcreditcard DO INSTEAD NOTHING; +DROP RULE "_DELETE" ON api.custcreditcard; apiadminfalse76776776726182008832_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO customer DO INSTEAD DELETE FROM public.custinfo WHERE (custinfo.cust_number = (old.customer_number)::text); %DROP RULE "_DELETE" ON api.customer; apiadminfalse76876876816026182008846_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO customertype DO INSTEAD DELETE FROM public.custtype WHERE (custtype.custtype_code = (old.code)::text); )DROP RULE "_DELETE" ON api.customertype; apiadminfalse77020777077026182008853_DELETERULE>CREATE RULE "_DELETE" AS ON DELETE TO customertypechar DO INSTEAD DELETE FROM public.charass WHERE (((charass.charass_target_type = 'CT'::text) AND (charass.charass_target_id = public.getcusttypeid((old.customer_type)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'CT'::text))); -DROP RULE "_DELETE" ON api.customertypechar; apiadminfalse7717717711861400771131218618626182008863_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO custshipto DO INSTEAD SELECT public.deleteshipto(public.getshiptoid((old.customer_number)::text, (old.shipto_number)::text)) AS deleteshipto; 'DROP RULE "_DELETE" ON api.custshipto; apiadminfalse7727721605772145877226182008870_DELETERULE CREATE RULE "_DELETE" AS ON DELETE TO custtax DO INSTEAD DELETE FROM public.taxreg WHERE (((taxreg.taxreg_rel_type = 'C'::bpchar) AND (taxreg.taxreg_rel_id = public.getcustid((old.customer_number)::text))) AND (taxreg.taxreg_taxauth_id = public.gettaxauthid((old.tax_authority)::text))); $DROP RULE "_DELETE" ON api.custtax; apiadminfalse7732117732117731395161121177326182008880_DELETERULEzCREATE RULE "_DELETE" AS ON DELETE TO employee DO INSTEAD DELETE FROM public.emp WHERE (emp.emp_code = (old.code)::text); %DROP RULE "_DELETE" ON api.employee; apiadminfalse77477421477426182008887_DELETERULE7CREATE RULE "_DELETE" AS ON DELETE TO employeechar DO INSTEAD DELETE FROM public.charass WHERE (((charass.charass_target_type = 'EMP'::text) AND (charass.charass_target_id = public.getempid((old.employee_code)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'EMP'::text))); )DROP RULE "_DELETE" ON api.employeechar; apiadminfalse7751861670775775131277518618626182008894_DELETERULEJCREATE RULE "_DELETE" AS ON DELETE TO employeecomment DO INSTEAD NOTHING; ,DROP RULE "_DELETE" ON api.employeecomment; apiadminfalse77677677626182008901_DELETERULEtCREATE RULE "_DELETE" AS ON DELETE TO extshipmaint DO INSTEAD DELETE FROM public.shipdata WHERE ((((shipdata.shipdata_cohead_number = (old.so_number)::text) AND (shipdata.shipdata_shiphead_number = (old.shipment_number)::text)) AND (shipdata.shipdata_shipper = (old.shipper)::text)) AND (shipdata.shipdata_cosmisc_packnum_tracknum = (old.package_tracking_number)::text)); )DROP RULE "_DELETE" ON api.extshipmaint; apiadminfalse77777721621677721677721677777726182008910_DELETERULE2CREATE RULE "_DELETE" AS ON DELETE TO freightpricingscheduleitem DO INSTEAD DELETE FROM public.ipsfreight WHERE (((((((((ipsfreight.ipsfreight_ipshead_id = public.getipsheadid((old.pricing_schedule)::text)) AND (ipsfreight.ipsfreight_qtybreak = old.qty_break)) AND (ipsfreight.ipsfreight_price = old.price)) AND ((ipsfreight.ipsfreight_type)::text = CASE WHEN (old.price_type = 'Flat Rate'::text) THEN 'F'::text WHEN (old.price_type = 'Price Per UOM'::text) THEN 'P'::text ELSE NULL::text END)) AND ((ipsfreight.ipsfreight_warehous_id IS NULL) AND (old.from_site = 'Any'::text))) OR ((ipsfreight.ipsfreight_warehous_id = CASE WHEN (old.from_site = 'Any'::text) THEN 0 ELSE public.getwarehousid(old.from_site, 'All'::text) END) AND ((ipsfreight.ipsfreight_shipzone_id IS NULL) AND (old.to_shipzone = 'Any'::text)))) OR ((ipsfreight.ipsfreight_shipzone_id = CASE WHEN (old.to_shipzone = 'Any'::text) THEN 0 ELSE public.getshipzoneid(old.to_shipzone) END) AND ((ipsfreight.ipsfreight_freightclass_id IS NULL) AND (old.freight_class = 'Any'::text)))) OR ((ipsfreight.ipsfreight_freightclass_id = CASE WHEN (old.freight_class = 'Any'::text) THEN 0 ELSE public.getfreightclassid(old.freight_class) END) AND ((ipsfreight.ipsfreight_shipvia IS NULL) AND (old.ship_via = 'Any'::text)))) OR (ipsfreight.ipsfreight_shipvia = old.ship_via)); 7DROP RULE "_DELETE" ON api.freightpricingscheduleitem; apiadminfalse778160821877877810437787787781002218218218778162421821821821877877877826182008930_DELETERULECCREATE RULE "_DELETE" AS ON DELETE TO incident DO INSTEAD NOTHING; %DROP RULE "_DELETE" ON api.incident; apiadminfalse78078078026182008937_DELETERULE:CREATE RULE "_DELETE" AS ON DELETE TO incidentchar DO INSTEAD DELETE FROM public.charass WHERE (((charass.charass_target_type = 'INCDT'::text) AND (charass.charass_target_id = public.getincidentid(old.incident_number))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'INCDT'::text))); )DROP RULE "_DELETE" ON api.incidentchar; apiadminfalse7811312781186186781186153278126182008942_DELETERULEJCREATE RULE "_DELETE" AS ON DELETE TO incidentcomment DO INSTEAD NOTHING; ,DROP RULE "_DELETE" ON api.incidentcomment; apiadminfalse78278278226182008951_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO incidentfile DO INSTEAD DELETE FROM public.url WHERE ((((url.url_source_id = public.getincidentid(old.incident_number)) AND (url.url_source = 'INCDT'::text)) AND (url.url_title = old.title)) AND (url.url_url = old.url)); )DROP RULE "_DELETE" ON api.incidentfile; apiadminfalse783192783783192192783153219278326182008958_DELETERULE$CREATE RULE "_DELETE" AS ON DELETE TO incidentimage DO INSTEAD DELETE FROM public.imageass WHERE (((imageass.imageass_source_id = public.getincidentid(old.incident_number)) AND (imageass.imageass_source = 'INCDT'::text)) AND (imageass.imageass_image_id = public.getimageid(old.image_name))); *DROP RULE "_DELETE" ON api.incidentimage; apiadminfalse7847841951045195153219578478426182008968_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO invoice DO INSTEAD SELECT public.deleteinvoice(invchead.invchead_id) AS deleteinvoice FROM public.invchead WHERE ((invchead.invchead_invcnumber = old.invoice_number) AND (invchead.invchead_posted = false)); $DROP RULE "_DELETE" ON api.invoice; apiadminfalse785173785140617317378526182008978_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO invoiceline DO INSTEAD DELETE FROM public.invcitem WHERE (invcitem.invcitem_invchead_id = (SELECT invchead.invchead_id FROM public.invchead WHERE ((invchead.invchead_invcnumber = old.invoice_number) AND (invchead.invchead_posted = false)))); (DROP RULE "_DELETE" ON api.invoiceline; apiadminfalse78678617378617317517326182008988_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO item DO INSTEAD SELECT public.deleteitem(public.getitemid((old.item_number)::text)) AS deleteitem; !DROP RULE "_DELETE" ON api.item; apiadminfalse7871053141078778726182008995_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO itemalias DO INSTEAD DELETE FROM public.itemalias WHERE ((itemalias.itemalias_item_id = public.getitemid((old.item_number)::text)) AND (itemalias.itemalias_number = old.alias_number)); &DROP RULE "_DELETE" ON api.itemalias; apiadminfalse788788226788105322678826182009002_DELETERULE.CREATE RULE "_DELETE" AS ON DELETE TO itemchar DO INSTEAD DELETE FROM public.charass WHERE (((charass.charass_target_type = 'I'::text) AND (charass.charass_target_id = public.getitemid((old.item_number)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'I'::text))); %DROP RULE "_DELETE" ON api.itemchar; apiadminfalse7897891867891312105318618678926182009009_DELETERULEFCREATE RULE "_DELETE" AS ON DELETE TO itemcomment DO INSTEAD NOTHING; (DROP RULE "_DELETE" ON api.itemcomment; apiadminfalse79079079026182009017_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO itemcost DO INSTEAD SELECT public.deleteitemcost(public.getitemid((old.item_number)::text), public.getcostelemid((old.costing_element)::text)) AS deleteitemcost; %DROP RULE "_DELETE" ON api.itemcost; apiadminfalse79179179113421417105379126182009024_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO itemfile DO INSTEAD DELETE FROM public.url WHERE ((((url.url_source_id = public.getitemid((old.item_number)::text)) AND (url.url_source = 'I'::text)) AND (url.url_title = old.title)) AND (url.url_url = old.url)); %DROP RULE "_DELETE" ON api.itemfile; apiadminfalse792792792192792192192792192105326182009031_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO itemimage DO INSTEAD DELETE FROM public.imageass WHERE (((imageass.imageass_source_id = public.getitemid((old.item_number)::text)) AND (imageass.imageass_source = 'I'::text)) AND (imageass.imageass_image_id = public.getimageid(old.image_name))); &DROP RULE "_DELETE" ON api.itemimage; apiadminfalse7937931951957931053195104579326182009041_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO itemsite DO INSTEAD SELECT public.deleteitemsite(public.getitemsiteid((old.site)::text, (old.item_number)::text)) AS deleteitemsite; %DROP RULE "_DELETE" ON api.itemsite; apiadminfalse7941546794794142779426182009049_DELETERULEJCREATE RULE "_DELETE" AS ON DELETE TO itemsitecomment DO INSTEAD NOTHING; ,DROP RULE "_DELETE" ON api.itemsitecomment; apiadminfalse79579579526182009059_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO itemsource DO INSTEAD DELETE FROM public.itemsrc WHERE (((((itemsrc.itemsrc_item_id = public.getitemid((old.item_number)::text)) AND (itemsrc.itemsrc_vend_id = public.getvendid((old.vendor)::text))) AND (itemsrc.itemsrc_vend_item_number = old.vendor_item_number)) AND (itemsrc.itemsrc_manuf_name = old.manufacturer_name)) AND (itemsrc.itemsrc_manuf_item_number = old.manufacturer_item_number)); 'DROP RULE "_DELETE" ON api.itemsource; apiadminfalse7962321053796232232796796796796232232796108126182009069_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO itemsourceprice DO INSTEAD DELETE FROM public.itemsrcp WHERE ((itemsrcp.itemsrcp_itemsrc_id = public.getitemsrcid((old.item_number)::text, (old.vendor)::text)) AND (itemsrcp.itemsrcp_qtybreak = old.qty_break)); ,DROP RULE "_DELETE" ON api.itemsourceprice; apiadminfalse797797233797797797233154826182009076_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO itemsubstitute DO INSTEAD DELETE FROM public.itemsub WHERE ((itemsub.itemsub_parent_item_id = public.getitemid((old.root_item_number)::text)) AND (itemsub.itemsub_sub_item_id = public.getitemid((old.substitute_item_number)::text))); +DROP RULE "_DELETE" ON api.itemsubstitute; apiadminfalse7982341053234798798798 26182009083_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO itemtaxtype DO INSTEAD DELETE FROM public.itemtax WHERE (((itemtax.itemtax_item_id = public.getitemid((old.item_number)::text)) AND CASE WHEN ((old.tax_zone)::text = 'Any'::text) THEN (itemtax.itemtax_taxzone_id IS NULL) ELSE (itemtax.itemtax_taxzone_id = public.gettaxzoneid((old.tax_zone)::text)) END) AND (itemtax.itemtax_taxtype_id = public.gettaxtypeid(old.tax_type))); (DROP RULE "_DELETE" ON api.itemtaxtype; apiadminfalse79923523579979979910532357991613161426182009090_DELETERULE0CREATE RULE "_DELETE" AS ON DELETE TO itemuomconversion DO INSTEAD SELECT public.deleteitemuomconv(itemuomconv.itemuomconv_id) AS deleteitemuomconv FROM public.itemuomconv WHERE ((itemuomconv.itemuomconv_item_id = public.getitemid((old.item_number)::text)) AND (((itemuomconv.itemuomconv_from_uom_id = public.getuomid((old.uom)::text)) AND (itemuomconv.itemuomconv_to_uom_id = public.getuomid(old.per_uom))) OR ((itemuomconv.itemuomconv_from_uom_id = public.getuomid(old.per_uom)) AND (itemuomconv.itemuomconv_to_uom_id = public.getuomid((old.uom)::text))))); .DROP RULE "_DELETE" ON api.itemuomconversion; apiadminfalse80080023623680080080010532362361617142826182009098_DELETERULEGCREATE RULE "_DELETE" AS ON DELETE TO journalentry DO INSTEAD NOTHING; )DROP RULE "_DELETE" ON api.journalentry; apiadminfalse80180180126182009106_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO location DO INSTEAD DELETE FROM public.location WHERE ((location.location_warehous_id = public.getwarehousid((old.site)::text, 'ACTIVE'::text)) AND (location.location_name = (old.location)::text)); %DROP RULE "_DELETE" ON api.location; apiadminfalse802162423023080280280226182009113_DELETERULEGCREATE RULE "_DELETE" AS ON DELETE TO misccounttag DO INSTEAD NOTHING; )DROP RULE "_DELETE" ON api.misccounttag; apiadminfalse803803803 26182009122_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO pricingschedule DO INSTEAD DELETE FROM public.ipshead WHERE ((old.name)::text = ipshead.ipshead_name); ,DROP RULE "_DELETE" ON api.pricingschedule; apiadminfalse804219804804$26182009131_DELETERULE7CREATE RULE "_DELETE" AS ON DELETE TO pricingscheduleassign DO INSTEAD DELETE FROM public.ipsass WHERE ((((((ipsass.ipsass_ipshead_id = public.getipsheadid((old.pricing_schedule)::text)) AND (ipsass.ipsass_cust_id = CASE WHEN ((old.customer_number)::text = 'Any'::text) THEN (-1) ELSE public.getcustid((old.customer_number)::text) END)) AND (ipsass.ipsass_custtype_id = CASE WHEN ((old.customer_type)::text = 'N/A'::text) THEN (-1) ELSE public.getcusttypeid((old.customer_type)::text) END)) AND (ipsass.ipsass_custtype_pattern = (old.customer_type_pattern)::text)) AND (ipsass.ipsass_shipto_id = CASE WHEN ((old.customer_shipto)::text = 'Any'::text) THEN (-1) ELSE public.getshiptoid((old.customer_number)::text, (old.customer_shipto)::text) END)) AND (ipsass.ipsass_shipto_pattern = (old.customer_shipto_pattern)::text)); 2DROP RULE "_DELETE" ON api.pricingscheduleassign; apiadminfalse8052392398058058051395160510021400805239239239239805805805(26182009141_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO pricingscheduleitem DO INSTEAD SELECT CASE WHEN ((old.type)::text = 'Item'::text) THEN public.deleteipsitem(public.getipsitemid((old.pricing_schedule)::text, (old.item_number)::text, old.qty_break, (old.qty_uom)::text, (old.price_uom)::text)) WHEN ((old.type)::text = 'Product Category'::text) THEN public.deleteipsprodcat(public.getipsprodcatid((old.pricing_schedule)::text, (old.product_category)::text, old.qty_break)) ELSE NULL::integer END AS result; 0DROP RULE "_DELETE" ON api.pricingscheduleitem; apiadminfalse8068068068068068061545806140715358061408806,26182009149_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO pricingscheduleitemchar DO INSTEAD DELETE FROM public.ipsitemchar WHERE (((ipsitemchar.ipsitemchar_ipsitem_id = public.getipsitemid((old.pricing_schedule)::text, (old.item_number)::text, old.qty_break, (old.qty_uom)::text, (old.price_uom)::text)) AND (ipsitemchar.ipsitemchar_char_id = public.getcharid((old.characteristic)::text, 'I'::text))) AND (ipsitemchar.ipsitemchar_value = (old.value)::text)); 4DROP RULE "_DELETE" ON api.pricingscheduleitemchar; apiadminfalse80780780780724280780780715351312807807242242026182009156_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO project DO INSTEAD SELECT public.deleteproject(public.getprjid(old.number)) AS deleteproject; $DROP RULE "_DELETE" ON api.project; apiadminfalse80815888081448808426182009163_DELETERULEICREATE RULE "_DELETE" AS ON DELETE TO projectcomment DO INSTEAD NOTHING; +DROP RULE "_DELETE" ON api.projectcomment; apiadminfalse809809809826182009173_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO prospect DO INSTEAD DELETE FROM public.prospect WHERE (prospect.prospect_number = (old.prospect_number)::text); %DROP RULE "_DELETE" ON api.prospect; apiadminfalse810810244810=26182009185_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO purchaseline DO INSTEAD DELETE FROM public.poitem WHERE (poitem.poitem_id = public.getpoitemid((old.order_number)::text, old.line_number)); )DROP RULE "_DELETE" ON api.purchaseline; apiadminfalse8118118118111791586A26182009195_DELETERULEKCREATE RULE "_DELETE" AS ON DELETE TO purchaselinechar DO INSTEAD NOTHING; -DROP RULE "_DELETE" ON api.purchaselinechar; apiadminfalse812812812E26182009204_DELETERULENCREATE RULE "_DELETE" AS ON DELETE TO purchaselinecomment DO INSTEAD NOTHING; 0DROP RULE "_DELETE" ON api.purchaselinecomment; apiadminfalse813813813I26182009214_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO purchaseorder DO INSTEAD SELECT public.deletepo(pohead.pohead_id) AS deletepo FROM public.pohead WHERE (pohead.pohead_number = (old.order_number)::text); *DROP RULE "_DELETE" ON api.purchaseorder; apiadminfalse8148141781781443814M26182009221_DELETERULEOCREATE RULE "_DELETE" AS ON DELETE TO purchaseordercomment DO INSTEAD NOTHING; 1DROP RULE "_DELETE" ON api.purchaseordercomment; apiadminfalse815815815Q26182009231_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO quote DO INSTEAD SELECT public.deletequote(quhead.quhead_id, (old.quote_number)::text) AS deletequote FROM public.quhead WHERE (quhead.quhead_number = (old.quote_number)::text); "DROP RULE "_DELETE" ON api.quote; apiadminfalse8168162498161450249U26182009238_DELETERULEGCREATE RULE "_DELETE" AS ON DELETE TO quotecomment DO INSTEAD NOTHING; )DROP RULE "_DELETE" ON api.quotecomment; apiadminfalse817817817Y26182009248_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO quoteline DO INSTEAD DELETE FROM public.quitem WHERE ((quitem.quitem_quhead_id = public.getquoteid(old.quote_number)) AND (quitem.quitem_linenumber = old.line_number)); &DROP RULE "_DELETE" ON api.quoteline; apiadminfalse8188182501592250818818]26182009258_DELETERULEHCREATE RULE "_DELETE" AS ON DELETE TO quotelinechar DO INSTEAD NOTHING; *DROP RULE "_DELETE" ON api.quotelinechar; apiadminfalse819819819a26182009266_DELETERULEKCREATE RULE "_DELETE" AS ON DELETE TO quotelinecomment DO INSTEAD NOTHING; -DROP RULE "_DELETE" ON api.quotelinecomment; apiadminfalse820820820g26182009281_DELETERULEGCREATE RULE "_DELETE" AS ON DELETE TO saleshistory DO INSTEAD NOTHING; )DROP RULE "_DELETE" ON api.saleshistory; apiadminfalse822822822k26182009293_DELETERULEHCREATE RULE "_DELETE" AS ON DELETE TO saleslinechar DO INSTEAD NOTHING; *DROP RULE "_DELETE" ON api.saleslinechar; apiadminfalse823823823o26182009301_DELETERULEKCREATE RULE "_DELETE" AS ON DELETE TO saleslinecomment DO INSTEAD NOTHING; -DROP RULE "_DELETE" ON api.saleslinecomment; apiadminfalse824824824s26182009311_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO salesorder DO INSTEAD SELECT public.deleteso(cohead.cohead_id, (old.order_number)::text) AS deleteso FROM public.cohead WHERE (cohead.cohead_number = (old.order_number)::text); 'DROP RULE "_DELETE" ON api.salesorder; apiadminfalse8251460825176825176w26182009318_DELETERULELCREATE RULE "_DELETE" AS ON DELETE TO salesordercomment DO INSTEAD NOTHING; .DROP RULE "_DELETE" ON api.salesordercomment; apiadminfalse826826826{26182009326_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO salesrep DO INSTEAD DELETE FROM public.salesrep WHERE (salesrep.salesrep_number = (old.number)::text); %DROP RULE "_DELETE" ON api.salesrep; apiadminfalse82716382782726182009336_DELETERULE7CREATE RULE "_DELETE" AS ON DELETE TO site DO NOTHING; !DROP RULE "_DELETE" ON api.site; apiadminfalse82882882826182009344_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO sitezone DO INSTEAD DELETE FROM public.whsezone WHERE ((whsezone.whsezone_warehous_id = public.getwarehousid((old.site)::text, 'ACTIVE'::text)) AND (whsezone.whsezone_name = (old.name)::text)); %DROP RULE "_DELETE" ON api.sitezone; apiadminfalse829238829238829829162426182009354_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO task DO INSTEAD DELETE FROM public.prjtask WHERE ((prjtask.prjtask_prj_id = public.getprjid(old.project_number)) AND (prjtask.prjtask_number = old.number)); !DROP RULE "_DELETE" ON api.task; apiadminfalse830830158883018218283026182009361_DELETERULEFCREATE RULE "_DELETE" AS ON DELETE TO taskcomment DO INSTEAD NOTHING; (DROP RULE "_DELETE" ON api.taskcomment; apiadminfalse83183183126182009371_DELETERULEwCREATE RULE "_DELETE" AS ON DELETE TO todo DO INSTEAD SELECT public.deletetodoitem(old.task_number) AS deletetodoitem; !DROP RULE "_DELETE" ON api.todo; apiadminfalse832148383283226182009381_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO vendor DO INSTEAD DELETE FROM public.vendinfo WHERE (vendinfo.vend_number = (old.vendor_number)::text); #DROP RULE "_DELETE" ON api.vendor; apiadminfalse83383383315826182009389_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO vendoraddress DO INSTEAD SELECT public.deletevendoraddress(public.getvendaddrid((old.vendor_number)::text, (old.vendor_address_number)::text)) AS deletevendoraddress; *DROP RULE "_DELETE" ON api.vendoraddress; apiadminfalse8341621834834834149126182009396_DELETERULECREATE RULE "_DELETE" AS ON DELETE TO vendortype DO INSTEAD SELECT public.deletevendortype(public.getvendtypeid((old.code)::text)) AS deletevendortype; 'DROP RULE "_DELETE" ON api.vendortype; apiadminfalse8351622149283583526181697611_INSERTRULEtCREATE RULE "_INSERT" AS ON INSERT TO salesline DO INSTEAD SELECT public.insertsalesline(new.*) AS insertsalesline; &DROP RULE "_INSERT" ON api.salesline; apiadminfalse1801301180180!26181747068_INSERTRULEkCREATE RULE "_INSERT" AS ON INSERT TO apmemo DO INSTEAD SELECT public.insertapmemo(new.*) AS insertapmemo; #DROP RULE "_INSERT" ON api.apmemo; apiadminfalse7237237232249%26181747078_INSERTRULEkCREATE RULE "_INSERT" AS ON INSERT TO armemo DO INSTEAD SELECT public.insertarmemo(new.*) AS insertarmemo; #DROP RULE "_INSERT" ON api.armemo; apiadminfalse7247242250724)26181848167_INSERTRULEvCREATE RULE "_INSERT" AS ON INSERT TO physinvcount DO INSTEAD SELECT insertphysinvcount(new.*) AS insertphysinvcount; )DROP RULE "_INSERT" ON api.physinvcount; apiadminfalse7257257252258-26182008624_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO account DO INSTEAD INSERT INTO public.crmacct (crmacct_number, crmacct_parent_id, crmacct_name, crmacct_active, crmacct_type, crmacct_cntct_id_1, crmacct_cntct_id_2, crmacct_notes) VALUES (COALESCE(new.account_number, ((public.fetchcrmaccountnumber())::text)::character varying), public.getcrmacctid(new.parent_account), new.account_name, COALESCE(new.active, true), CASE WHEN (new.type = 'Individual'::text) THEN 'I'::text ELSE 'O'::text END, public.savecntct(public.getcntctid(new.primary_contact_number), new.primary_contact_number, public.saveaddr(public.getaddrid(new.primary_contact_address_number), new.primary_contact_address_number, new.primary_contact_address1, new.primary_contact_address2, new.primary_contact_address3, new.primary_contact_city, new.primary_contact_state, new.primary_contact_postalcode, new.primary_contact_country, new.primary_contact_address_change), new.primary_contact_honorific, new.primary_contact_first, new.primary_contact_middle, new.primary_contact_last, new.primary_contact_suffix, new.primary_contact_voice, NULL::text, new.primary_contact_fax, new.primary_contact_email, NULL::text, new.primary_contact_job_title, new.primary_contact_change), public.savecntct(public.getcntctid(new.secondary_contact_number), new.secondary_contact_number, public.saveaddr(public.getaddrid(new.secondary_contact_address_number), new.secondary_contact_address_number, new.secondary_contact_address1, new.secondary_contact_address2, new.secondary_contact_address3, new.secondary_contact_city, new.secondary_contact_state, new.secondary_contact_postalcode, new.secondary_contact_country, new.secondary_contact_address_change), new.secondary_contact_honorific, new.secondary_contact_first, new.secondary_contact_middle, new.secondary_contact_last, new.secondary_contact_suffix, new.secondary_contact_voice, NULL::text, new.secondary_contact_fax, new.secondary_contact_email, NULL::text, new.secondary_contact_job_title, new.secondary_contact_change), new.notes); $DROP RULE "_INSERT" ON api.account; apiadminfalse74374312719711347194315374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374319401578126182008633_INSERTRULENCREATE RULE "_INSERT" AS ON INSERT TO accountchar DO INSTEAD INSERT INTO public.charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default) VALUES ('CRMACCT'::text, public.getcrmacctid((new.account_number)::text), public.getcharid((new.characteristic)::text, 'CRMACCT'::text), new.value, false); (DROP RULE "_INSERT" ON api.accountchar; apiadminfalse74413121867447447447441347526182008640_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO accountcomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'CRMA'::text, public.getcrmacctid((new.account_number)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); +DROP RULE "_INSERT" ON api.accountcomment; apiadminfalse745745745141274513191347188745745745926182008647_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO accountfile DO INSTEAD INSERT INTO public.url (url_source_id, url_source, url_title, url_url) VALUES (public.getcrmacctid(new.account_number), 'CRMA'::text, new.title, new.url); (DROP RULE "_INSERT" ON api.accountfile; apiadminfalse7467467461921347746746=26182008654_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO accountimage DO INSTEAD SELECT public.saveimageass('CRMA'::text, public.getcrmacctid(new.account_number), 'M'::bpchar, public.getimageid(new.image_name)) AS saveimageass; )DROP RULE "_INSERT" ON api.accountimage; apiadminfalse747747104513471944747747A26182008661_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO address DO INSTEAD SELECT public.saveaddr(NULL::integer, (new.address_number)::text, new.address1, new.address2, new.address3, new.city, new.state, new.postal_code, new.country, COALESCE(new.active, true), new.notes, NULL::text) AS saveaddr; $DROP RULE "_INSERT" ON api.address; apiadminfalse7487487487487481939748748748748748748748E26182008668_INSERTRULEECREATE RULE "_INSERT" AS ON INSERT TO addresschar DO INSTEAD INSERT INTO public.charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default) VALUES ('ADDR'::text, public.getaddrid((new.address_number)::text), public.getcharid((new.characteristic)::text, 'ADDR'::text), new.value, false); (DROP RULE "_INSERT" ON api.addresschar; apiadminfalse74974974913121271186749749I26182008675_INSERTRULE}CREATE RULE "_INSERT" AS ON INSERT TO addresscomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'ADDR'::text, public.getaddrid((new.address_number)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); +DROP RULE "_INSERT" ON api.addresscomment; apiadminfalse750750141275075012711319188750750750M26182008685_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO bom DO INSTEAD SELECT public.savebomhead(public.getitemid((new.item_number)::text), (new.revision)::text, new.revision_date, new.document_number, COALESCE(new.batch_size, (0)::numeric), new.total_qty_per) AS savebomhead; DROP RULE "_INSERT" ON api.bom; apiadminfalse75110532022751751751751751751751Q26182008693_INSERTRULEGCREATE RULE "_INSERT" AS ON INSERT TO bomitem DO INSTEAD SELECT public.createbomitem(COALESCE(new.id, (nextval('public.bomitem_bomitem_id_seq'::regclass))::integer), public.getitemid((new.bom_item_number)::text), public.getitemid(new.item_number), COALESCE(new.sequence_number, (SELECT (max(bomitem.bomitem_seqnumber) + 10) FROM public.bomitem(public.getitemid((new.bom_item_number)::text), COALESCE(public.getrevid('BOM'::text, (new.bom_item_number)::text, (new.bom_revision)::text))) bomitem(bomitem_id, bomitem_parent_item_id, bomitem_seqnumber, bomitem_item_id, bomitem_qtyper, bomitem_scrap, bomitem_status, bomitem_effective, bomitem_expires, bomitem_createwo, bomitem_issuemethod, bomitem_schedatwooper, bomitem_ecn, bomitem_moddate, bomitem_subtype, bomitem_uom_id, bomitem_rev_id, bomitem_booitem_seq_id, bomitem_char_id, bomitem_value, bomitem_notes, bomitem_ref, bomitem_qtyfxd, bomitem_issuewo)), 10), (CASE WHEN (new.issue_method = 'Mixed'::text) THEN 'M'::text WHEN (new.issue_method = 'Push'::text) THEN 'S'::text WHEN (new.issue_method = 'Pull'::text) THEN 'L'::text ELSE public.fetchmetrictext('DefaultWomatlIssueMethod'::text) END)::bpchar, COALESCE(public.getuomid(new.issue_uom), (SELECT item.item_inv_uom_id FROM public.item WHERE (item.item_id = public.getitemid(new.item_number)))), new.qty_per, new.scrap, CASE WHEN (new.effective = 'Always'::text) THEN public.startoftime() ELSE COALESCE((new.effective)::date, public.startoftime()) END, CASE WHEN (new.expires = 'Never'::text) THEN public.endoftime() ELSE COALESCE((new.expires)::date, public.endoftime()) END, COALESCE(new.create_child_wo, false), COALESCE(public.getbooitemseqid((new.bom_item_number)::text, new.used_at), (-1)), COALESCE(new.schedule_at_wo_operation, false), new.ecn_number, (CASE WHEN (new.substitutions = 'No'::text) THEN 'N'::text WHEN (new.substitutions = 'BOM-Defined'::text) THEN 'B'::text ELSE 'I'::text END)::bpchar, COALESCE(public.getrevid('BOM'::text, (new.bom_item_number)::text, (new.bom_revision)::text)), public.getcharid(new.characteristic, 'I'::text), new.value, new.notes, new.reference) AS createbomitem; $DROP RULE "_INSERT" ON api.bomitem; apiadminfalse75275275216875275293875275275298610851550130213121053161720771683247527527527527527527527527527527527527521594752U26182008703_INSERTRULE^CREATE RULE "_INSERT" AS ON INSERT TO bomitemcomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'BMI'::text, new.bomitem_id, COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); +DROP RULE "_INSERT" ON api.bomitemcomment; apiadminfalse75314127537537531319188753753753Y26182008711_INSERTRULENCREATE RULE "_INSERT" AS ON INSERT TO bomitemsubstitute DO INSTEAD INSERT INTO public.bomitemsub (bomitemsub_bomitem_id, bomitemsub_item_id, bomitemsub_uomratio, bomitemsub_rank) VALUES (new.bomitem_id, public.getitemid((new.substitute_item_number)::text), COALESCE(new.sub_parent_uom_ratio, (1)::numeric), COALESCE(new.ranking, 1)); .DROP RULE "_INSERT" ON api.bomitemsubstitute; apiadminfalse7547541053197754754754754]26182008718_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO budget DO INSTEAD INSERT INTO public.budghead (budghead_name, budghead_descrip) VALUES (new.name, new.description); #DROP RULE "_INSERT" ON api.budget; apiadminfalse755755755755198a26182008725_INSERTRULE%CREATE RULE "_INSERT" AS ON INSERT TO budgetentry DO INSTEAD INSERT INTO public.budgitem (budgitem_budghead_id, budgitem_period_id, budgitem_accnt_id, budgitem_amount) VALUES (public.getbudgheadid(new.name), public.getperiodid(new.period_start), public.getglaccntid(new.account), new.amount); (DROP RULE "_INSERT" ON api.budgetentry; apiadminfalse756756148120075675675675615381709e26182008733_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO cashreceipt DO INSTEAD INSERT INTO public.cashrcpt (cashrcpt_cust_id, cashrcpt_amount, cashrcpt_fundstype, cashrcpt_docnumber, cashrcpt_bankaccnt_id, cashrcpt_notes, cashrcpt_distdate, cashrcpt_salescat_id, cashrcpt_curr_id, cashrcpt_usecustdeposit) VALUES (public.getcustid((new.customer_number)::text), COALESCE(new.amount_received, (0)::numeric), CASE WHEN ((new.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((new.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((new.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((new.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((new.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((new.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((new.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((new.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((new.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, COALESCE(new.check_document_number, ''::character varying), public.getbankaccntid(new.post_to), COALESCE(new.notes, ''::text), CASE WHEN (new.distribution_date > ''::text) THEN ((new.distribution_date)::date)::timestamp with time zone ELSE now() END, COALESCE(public.getsalescatid(new.sales_category), (-1)), public.getcurrid((new.currency)::text), CASE WHEN (new.apply_balance_as = 'Customer Deposit'::text) THEN true ELSE false END); (DROP RULE "_INSERT" ON api.cashreceipt; apiadminfalse7577577571358139515967577577577577577577577572037571288i26182008744_INSERTRULETCREATE RULE "_INSERT" AS ON INSERT TO cashreceiptapply DO INSTEAD INSERT INTO public.cashrcptitem (cashrcptitem_cashrcpt_id, cashrcptitem_aropen_id, cashrcptitem_amount, cashrcptitem_discount) VALUES (public.getcashrcptid((new.customer_number)::text, CASE WHEN ((new.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((new.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((new.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((new.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((new.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((new.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((new.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((new.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((new.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, (new.check_document_number)::text), public.getaropenid((new.customer_number)::text, (new.doc_type)::bpchar, (new.doc_number)::text), COALESCE(new.amount_to_apply, (0)::numeric), COALESCE(new.cashrcptitem_discount, (0)::numeric)); -DROP RULE "_INSERT" ON api.cashreceiptapply; apiadminfalse75875815397587587587587587587581275204m26182008754_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO cashreceiptapplymisc DO INSTEAD INSERT INTO public.cashrcptmisc (cashrcptmisc_cashrcpt_id, cashrcptmisc_accnt_id, cashrcptmisc_amount, cashrcptmisc_notes) VALUES (public.getcashrcptid((new.customer_number)::text, CASE WHEN ((new.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((new.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((new.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((new.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((new.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((new.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((new.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((new.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((new.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, (new.check_document_number)::text), public.getglaccntid((new.account)::text), COALESCE(new.amount_to_distribute, (0)::numeric), COALESCE(new.notes, ''::text)); 1DROP RULE "_INSERT" ON api.cashreceiptapplymisc; apiadminfalse75975915391481759759759759205759759q26182008764_INSERTRULE7CREATE RULE "_INSERT" AS ON INSERT TO contact DO INSTEAD SELECT public.savecntct(NULL::integer, (new.contact_number)::text, public.getcrmacctid(new.crm_account), public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postal_code, new.country, new.address_change), new.honorific, new.first, new.middle, new.last, new.suffix, new.initials, COALESCE(new.active, true), new.voice, new.alternate, new.fax, new.email, new.web, new.notes, new.job_title, new.contact_change) AS savecntct; $DROP RULE "_INSERT" ON api.contact; apiadminfalse7601940760760760760760760760760760760760760194276076013477607601271760760760760760760760760760760760u26182008771_INSERTRULE@CREATE RULE "_INSERT" AS ON INSERT TO contactchar DO INSTEAD INSERT INTO public.charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default) VALUES ('CNTCT'::text, public.getcntctid(new.contact_number), public.getcharid((new.characteristic)::text, 'CNTCT'::text), new.value, false); (DROP RULE "_INSERT" ON api.contactchar; apiadminfalse7611869711312761761761761y26182008778_INSERTRULEsCREATE RULE "_INSERT" AS ON INSERT TO contactcomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'T'::text, public.getcntctid(new.contact_number), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); +DROP RULE "_INSERT" ON api.contactcomment; apiadminfalse76276276218814127629711319762762762}26182008787_INSERTRULEwCREATE RULE "_INSERT" AS ON INSERT TO creditmemo DO INSTEAD SELECT public.insertcreditmemo(new.*) AS insertcreditmemo; 'DROP RULE "_INSERT" ON api.creditmemo; apiadminfalse763225176376326182008798_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO creditmemoline DO INSTEAD SELECT public.insertcreditmemoline(new.*) AS insertcreditmemoline; +DROP RULE "_INSERT" ON api.creditmemoline; apiadminfalse764225276476426182008805_INSERTRULE=CREATE RULE "_INSERT" AS ON INSERT TO custchar DO INSTEAD INSERT INTO public.charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default) VALUES ('C'::text, public.getcustid((new.customer_number)::text), public.getcharid((new.characteristic)::text, 'C'::text), new.value, false); %DROP RULE "_INSERT" ON api.custchar; apiadminfalse7651312139518676576576576526182008812_INSERTRULExCREATE RULE "_INSERT" AS ON INSERT TO custcomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'C'::text, public.getcustid((new.customer_number)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); (DROP RULE "_INSERT" ON api.custcomment; apiadminfalse76613197667661887661395141276676676626182008820_INSERTRULE\CREATE RULE "_INSERT" AS ON INSERT TO custcreditcard DO INSTEAD SELECT public.insertccard((new.customer_number)::text, new.active, new.credit_card_type, new.credit_card_number, new.name, new.street_address1, new.street_address2, new.city, new.state, new.postal_code, new.country, new.expiration_month, new.expiration_year, new.key) AS insertccard; +DROP RULE "_INSERT" ON api.custcreditcard; apiadminfalse767767767767767767767767767114776776776776776776776726182008828_INSERTRULE0CREATE RULE "_INSERT" AS ON INSERT TO customer DO INSTEAD INSERT INTO public.custinfo (cust_active, cust_custtype_id, cust_salesrep_id, cust_commprcnt, cust_name, cust_creditlmt, cust_creditrating, cust_backorder, cust_partialship, cust_terms_id, cust_discntprcnt, cust_balmethod, cust_ffshipto, cust_shipform_id, cust_shipvia, cust_blanketpos, cust_shipchrg_id, cust_creditstatus, cust_comments, cust_ffbillto, cust_usespos, cust_number, cust_autoupdatestatus, cust_autoholdorders, cust_preferred_warehous_id, cust_curr_id, cust_creditlmt_curr_id, cust_cntct_id, cust_corrcntct_id, cust_taxzone_id, cust_gracedays) VALUES (COALESCE(new.active, true), COALESCE((public.getcusttypeid(new.customer_type))::numeric, public.fetchmetricvalue('DefaultCustType'::text)), COALESCE((public.getsalesrepid(new.sales_rep))::numeric, public.fetchmetricvalue('DefaultSalesRep'::text)), COALESCE((new.commission * 0.01), (SELECT salesrep.salesrep_commission FROM public.salesrep WHERE (salesrep.salesrep_id = public.getsalesrepid(new.sales_rep)))), COALESCE(new.customer_name, ''::text), COALESCE((new.credit_limit)::numeric, public.fetchmetricvalue('SOCreditLimit'::text)), COALESCE(new.credit_rating, public.fetchmetrictext('SOCreditRate'::text)), COALESCE(new.accepts_backorders, public.fetchmetricbool('DefaultBackOrders'::text), false), COALESCE(new.accepts_partial_shipments, public.fetchmetricbool('DefaultPartialShipments'::text), false), COALESCE((public.gettermsid(new.default_terms))::numeric, public.fetchmetricvalue('DefaultTerms'::text)), COALESCE(new.default_discount, (0)::numeric), CASE WHEN (new.balance_method = 'Balance Forward'::text) THEN 'B'::text WHEN (new.balance_method = 'Open Items'::text) THEN 'O'::text ELSE COALESCE(public.fetchmetrictext('DefaultBalanceMethod'::text), 'B'::text) END, COALESCE(new.allow_free_form_shipto, public.fetchmetricbool('DefaultFreeFormShiptos'::text), false), COALESCE((public.getshipformid(new.ship_form))::numeric, public.fetchmetricvalue('DefaultShipFormId'::text)), COALESCE(new.ship_via, public.fetchdefaultshipvia()), COALESCE(new.uses_blanket_pos, false), COALESCE(public.getshipchrgid(new.shipping_charges), (-1)), CASE WHEN (new.credit_status = 'On Credit Warning'::text) THEN 'W'::text WHEN (new.credit_status = 'On Credit Hold'::text) THEN 'H'::text ELSE 'G'::text END, COALESCE(new.notes, ''::text), COALESCE(new.allow_free_form_billto, false), COALESCE(new.uses_purchase_orders, false), COALESCE(upper((new.customer_number)::text), (public.fetchcrmaccountnumber())::text), COALESCE(new.credit_status_exceed_warn, false), COALESCE(new.credit_status_exceed_hold, false), COALESCE(public.getwarehousid(new.preferred_selling_site, 'ACTIVE'::text), (-1)), COALESCE(public.getcurrid((new.default_currency)::text), public.basecurrid()), COALESCE(public.getcurrid((new.credit_limit_currency)::text), public.basecurrid()), public.savecntct(public.getcntctid(new.billing_contact_number, false), new.billing_contact_number, public.saveaddr(public.getaddrid(new.billing_contact_address_number), new.billing_contact_address_number, new.billing_contact_address1, new.billing_contact_address2, new.billing_contact_address3, new.billing_contact_city, new.billing_contact_state, new.billing_contact_postalcode, new.billing_contact_country, new.billing_contact_address_change), new.billing_contact_honorific, new.billing_contact_first, new.billing_contact_middle, new.billing_contact_last, new.billing_contact_suffix, new.billing_contact_voice, new.billing_contact_alternate, new.billing_contact_fax, new.billing_contact_email, new.billing_contact_web, new.billing_contact_job_title, new.billing_contact_change), public.savecntct(public.getcntctid(new.correspond_contact_number, false), new.correspond_contact_number, public.saveaddr(public.getaddrid(new.correspond_contact_address_number), new.correspond_contact_address_number, new.correspond_contact_address1, new.correspond_contact_address2, new.correspond_contact_address3, new.correspond_contact_city, new.correspond_contact_state, new.correspond_contact_postalcode, new.correspond_contact_country, new.correspond_contact_address_change), new.correspond_contact_honorific, new.correspond_contact_first, new.correspond_contact_middle, new.correspond_contact_last, new.correspond_contact_suffix, new.correspond_contact_voice, new.correspond_contact_alternate, new.correspond_contact_fax, new.correspond_contact_email, new.correspond_contact_web, new.correspond_contact_job_title, new.correspond_contact_change), public.gettaxzoneid(new.default_tax_zone), CASE WHEN (COALESCE(new.alternate_grace_days, 0) > 0) THEN new.alternate_grace_days ELSE NULL::integer END); %DROP RULE "_INSERT" ON api.customer; apiadminfalse768161576876876876876876876876876876876876876876876876876876819407687687687687687687687687687687687687681607687687687687687687687687687681637681637687687681271160015809387681018157893713971324135814001602160316141624194376876876876876876876876876876876876876876876876876876876876876876876876876876876876826182008838_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO customertaxreg DO INSTEAD INSERT INTO public.taxreg (taxreg_rel_id, taxreg_rel_type, taxreg_taxauth_id, taxreg_taxzone_id, taxreg_number, taxreg_effective, taxreg_expires, taxreg_notes) VALUES (public.getcustid((new.customer_number)::text), 'C'::bpchar, public.gettaxauthid((new.tax_authority)::text), (SELECT custinfo.cust_taxzone_id FROM public.custinfo WHERE (custinfo.cust_id = public.getcustid((new.customer_number)::text))), COALESCE(new.registration_number, ''::text), CASE WHEN (new.start_date = 'Always'::text) THEN public.startoftime() ELSE COALESCE((new.start_date)::date, public.startoftime()) END, CASE WHEN (new.end_date = 'Never'::text) THEN public.endoftime() ELSE COALESCE((new.end_date)::date, public.endoftime()) END, new.notes); +DROP RULE "_INSERT" ON api.customertaxreg; apiadminfalse769769769769161116021115507691395207716076976976926182008844_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO customertype DO INSTEAD INSERT INTO public.custtype (custtype_code, custtype_descrip, custtype_char) VALUES (new.code, COALESCE(new.description, ''::text), COALESCE(new.enable_characteristics_profile, false)); )DROP RULE "_INSERT" ON api.customertype; apiadminfalse77077020777077077026182008851_INSERTRULEcCREATE RULE "_INSERT" AS ON INSERT TO customertypechar DO INSTEAD INSERT INTO public.charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default) VALUES ('CT'::text, public.getcusttypeid((new.customer_type)::text), public.getcharid((new.characteristic)::text, 'CT'::text), new.value, COALESCE(new.is_default, false)); -DROP RULE "_INSERT" ON api.customertypechar; apiadminfalse7717717717711400131218677177126182008859_INSERTRULE CREATE RULE "_INSERT" AS ON INSERT TO custshipto DO INSTEAD INSERT INTO public.shiptoinfo (shipto_cust_id, shipto_name, shipto_salesrep_id, shipto_comments, shipto_shipcomments, shipto_shipzone_id, shipto_shipvia, shipto_commission, shipto_shipform_id, shipto_shipchrg_id, shipto_active, shipto_default, shipto_num, shipto_ediprofile_id, shipto_cntct_id, shipto_addr_id, shipto_taxzone_id) VALUES (public.getcustid((new.customer_number)::text), COALESCE(new.name, ''::text), COALESCE(public.getsalesrepid(new.sales_rep), (SELECT custinfo.cust_salesrep_id FROM public.custinfo WHERE (custinfo.cust_id = public.getcustid((new.customer_number)::text)))), COALESCE(new.general_notes, ''::text), COALESCE(new.shipping_notes, ''::text), public.getshipzoneid(new.zone), COALESCE(new.ship_via, (SELECT custinfo.cust_shipvia FROM public.custinfo WHERE (custinfo.cust_id = public.getcustid((new.customer_number)::text)))), COALESCE((new.commission / 100.0), (0)::numeric), COALESCE(public.getshipformid(new.ship_form), (SELECT custinfo.cust_shipform_id FROM public.custinfo WHERE (custinfo.cust_id = public.getcustid((new.customer_number)::text)))), COALESCE(public.getshipchrgid(new.shipping_charges), (SELECT custinfo.cust_shipchrg_id FROM public.custinfo WHERE (custinfo.cust_id = public.getcustid((new.customer_number)::text)))), COALESCE(new.active, true), COALESCE(new.default_flag, false), COALESCE(new.shipto_number, (((SELECT (COALESCE(max((shiptoinfo.shipto_num)::integer), 0) + 1) FROM public.shiptoinfo WHERE ((shiptoinfo.shipto_cust_id = public.getcustid((new.customer_number)::text)) AND (shiptoinfo.shipto_num ~ '^[0-9]*$'::text))))::text)::character varying), CASE WHEN (new.edi_profile = 'No EDI'::text) THEN (-1) WHEN (new.edi_profile = 'Use Customer Master'::text) THEN (-2) ELSE public.getediprofileid(new.edi_profile) END, public.savecntct(public.getcntctid(new.contact_number), new.contact_number, NULL::integer, new.honorific, new.first, new.middle, new.last, new.suffix, new.phone, NULL::text, new.fax, new.email, NULL::text, new.job_title, new.contact_change), public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postal_code, new.country, new.address_change), COALESCE(public.gettaxzoneid(new.tax_zone), (SELECT custinfo.cust_taxzone_id FROM public.custinfo WHERE (custinfo.cust_id = public.getcustid((new.customer_number)::text))))); 'DROP RULE "_INSERT" ON api.custshipto; apiadminfalse772772772772772772772772772772772772772772772160816577277216141601601601601943160316007721271971139514091602194016016016577277277277277277277277277277277277277277277277277277277226182008868_INSERTRULE$CREATE RULE "_INSERT" AS ON INSERT TO custtax DO INSTEAD INSERT INTO public.taxreg (taxreg_rel_type, taxreg_rel_id, taxreg_taxauth_id, taxreg_number) VALUES ('C'::bpchar, public.getcustid((new.customer_number)::text), public.gettaxauthid((new.tax_authority)::text), new.registration_number); $DROP RULE "_INSERT" ON api.custtax; apiadminfalse7737737731395161121177377326182008876_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO employee DO INSTEAD INSERT INTO public.emp (emp_code, emp_number, emp_active, emp_cntct_id, emp_warehous_id, emp_mgr_emp_id, emp_wage_type, emp_wage, emp_wage_curr_id, emp_wage_period, emp_dept_id, emp_shift_id, emp_image_id, emp_extrate, emp_extrate_period, emp_startdate, emp_notes) VALUES (new.code, new.number, COALESCE(new.active, true), public.savecntct(public.getcntctid(new.contact_number), new.contact_number, public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postalcode, new.country, new.address_change), new.honorific, new.first, new.middle, new.last, new.suffix, new.voice, new.alternate, new.fax, new.email, new.web, new.job_title, new.contact_change), public.getwarehousid(new.site, 'ALL'::text), (SELECT emp.emp_id FROM public.emp WHERE (emp.emp_code = new.manager_code)), CASE WHEN (new.wage_type = 'Hourly'::text) THEN 'H'::text WHEN (new.wage_type = 'Salaried'::text) THEN 'S'::text ELSE NULL::text END, new.wage, COALESCE(public.getcurrid((new.wage_currency)::text), public.basecurrid()), CASE WHEN (new.wage_period = 'Hour'::text) THEN 'H'::text WHEN (new.wage_period = 'Day'::text) THEN 'D'::text WHEN (new.wage_period = 'Week'::text) THEN 'W'::text WHEN (new.wage_period = 'Biweek'::text) THEN 'BW'::text WHEN (new.wage_period = 'Month'::text) THEN 'M'::text WHEN (new.wage_period = 'Year'::text) THEN 'Y'::text ELSE NULL::text END, public.getdeptid(new.department), public.getshiftid(new.shift), public.getimageid(new.image), new.rate, CASE WHEN (new.billing_period = 'Hour'::text) THEN 'H'::text WHEN (new.billing_period = 'Day'::text) THEN 'D'::text WHEN (new.billing_period = 'Week'::text) THEN 'W'::text WHEN (new.billing_period = 'Biweek'::text) THEN 'BW'::text WHEN (new.billing_period = 'Month'::text) THEN 'M'::text WHEN (new.billing_period = 'Year'::text) THEN 'Y'::text ELSE NULL::text END, new.start_date, COALESCE(new.notes, ''::text)); %DROP RULE "_INSERT" ON api.employee; apiadminfalse77477410181271135814051045162419401943214774774774774774774774774774774774774774774774774774774774774774774774774774774774774774774774774774774774774774774103321497126182008885_INSERTRULEBCREATE RULE "_INSERT" AS ON INSERT TO employeechar DO INSTEAD INSERT INTO public.charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default) VALUES ('EMP'::text, public.getempid((new.employee_code)::text), public.getcharid((new.characteristic)::text, 'EMP'::text), new.value, false); )DROP RULE "_INSERT" ON api.employeechar; apiadminfalse7751670775775131277518677526182008892_INSERTRULEzCREATE RULE "_INSERT" AS ON INSERT TO employeecomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'EMP'::text, public.getempid((new.code)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid((new.type)::text), new.text); ,DROP RULE "_INSERT" ON api.employeecomment; apiadminfalse77677614127767761887761319167077677626182008899_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO extshipmaint DO INSTEAD INSERT INTO public.shipdata (shipdata_cohead_number, shipdata_shiphead_number, shipdata_void_ind, shipdata_shipper, shipdata_billing_option, shipdata_weight, shipdata_base_freight, shipdata_base_freight_curr_id, shipdata_total_freight, shipdata_total_freight_curr_id, shipdata_package_type, shipdata_cosmisc_tracknum, shipdata_cosmisc_packnum_tracknum, shipdata_lastupdated) VALUES (new.so_number, new.shipment_number, new.void, new.shipper, new.billing_option, new.weight, new.base_freight, public.getcurrid((new.base_freight_currency)::text), new.total_freight, public.getcurrid((new.total_freight_currency)::text), new.package_type, new.tracking_number, new.package_tracking_number, new.last_updated); )DROP RULE "_INSERT" ON api.extshipmaint; apiadminfalse777777777777777777135821677777777777777777777777777777726182008907_INSERTRULEhCREATE RULE "_INSERT" AS ON INSERT TO freightpricingscheduleitem DO INSTEAD INSERT INTO public.ipsfreight (ipsfreight_ipshead_id, ipsfreight_qtybreak, ipsfreight_price, ipsfreight_type, ipsfreight_warehous_id, ipsfreight_shipzone_id, ipsfreight_freightclass_id, ipsfreight_shipvia) VALUES (public.getipsheadid((new.pricing_schedule)::text), new.qty_break, new.price, CASE WHEN (new.price_type = 'Flat Rate'::text) THEN 'F'::text ELSE 'P'::text END, CASE WHEN (new.from_site = 'Any'::text) THEN NULL::integer ELSE public.getwarehousid(new.from_site, 'All'::text) END, CASE WHEN (new.to_shipzone = 'Any'::text) THEN NULL::integer ELSE public.getshipzoneid(new.to_shipzone) END, CASE WHEN (new.freight_class = 'Any'::text) THEN NULL::integer ELSE public.getfreightclassid(new.freight_class) END, CASE WHEN (new.ship_via = 'Any'::text) THEN NULL::text ELSE new.ship_via END); 7DROP RULE "_INSERT" ON api.freightpricingscheduleitem; apiadminfalse778218778778100277816247781043778160877877877877826182008917_INSERTRULE0CREATE RULE "_INSERT" AS ON INSERT TO glaccount DO INSTEAD INSERT INTO public.accnt (accnt_number, accnt_descrip, accnt_comments, accnt_profit, accnt_sub, accnt_type, accnt_extref, accnt_company, accnt_forwardupdate, accnt_subaccnttype_code) VALUES (COALESCE(new.account_number, ''::character varying), COALESCE(new.description, ''::text), COALESCE(new.notes, ''::text), new.profit_center, new.sub_account, CASE WHEN (new.type = 'Asset'::text) THEN 'A'::text WHEN (new.type = 'Liability'::text) THEN 'L'::text WHEN (new.type = 'Expense'::text) THEN 'E'::text WHEN (new.type = 'Revenue'::text) THEN 'R'::text WHEN (new.type = 'Equity'::text) THEN 'Q'::text ELSE NULL::text END, COALESCE(new.ext_reference, ''::text), new.company, COALESCE(new.forward_update_trial_balances, false), COALESCE(new.sub_type, ''::text)); &DROP RULE "_INSERT" ON api.glaccount; apiadminfalse77977977977977977977919977977977977977926182008926_INSERTRULElCREATE RULE "_INSERT" AS ON INSERT TO incident DO INSTEAD INSERT INTO public.incdt (incdt_number, incdt_crmacct_id, incdt_cntct_id, incdt_summary, incdt_descrip, incdt_item_id, incdt_status, incdt_assigned_username, incdt_incdtcat_id, incdt_incdtseverity_id, incdt_incdtpriority_id, incdt_incdtresolution_id, incdt_lotserial, incdt_ls_id) VALUES (new.incident_number, public.getcrmacctid(new.crm_account), public.savecntct(public.getcntctid(new.contact_number), new.contact_number, NULL::integer, new.honorific, new.first, new.middle, new.last, new.suffix, new.phone, NULL::text, new.fax, new.email, NULL::text, new.job_title, new.contact_change), COALESCE(new.description, ''::text), COALESCE(new.notes, ''::text), public.getitemid(new.item_number), CASE WHEN (new.status = 'New'::text) THEN 'N'::text WHEN (new.status = 'Feedback'::text) THEN 'F'::text WHEN (new.status = 'Confirmed'::text) THEN 'C'::text WHEN (new.status = 'Assigned'::text) THEN 'A'::text WHEN (new.status = 'Resolved'::text) THEN 'R'::text WHEN (new.status = 'Closed'::text) THEN 'L'::text ELSE ''::text END, COALESCE(new.assigned_to, ''::text), public.getincdtcatid(new.category), public.getincdtseverityid(new.severity), public.getincdtpriorityid(new.priority), public.getincdtresolutionid(new.resolution), COALESCE(new.lot_serial_number, ''::text), public.getlotserialid(new.item_number, new.lot_serial_number)); %DROP RULE "_INSERT" ON api.incident; apiadminfalse7807807807807807807801521194397115201053780780780780155578078078078013471512152215478078078078078078078078078078026182008935_INSERTRULEECREATE RULE "_INSERT" AS ON INSERT TO incidentchar DO INSTEAD INSERT INTO public.charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default) VALUES ('INCDT'::text, public.getincidentid(new.incident_number), public.getcharid((new.characteristic)::text, 'INCDT'::text), new.value, false); )DROP RULE "_INSERT" ON api.incidentchar; apiadminfalse7811867817817811312153278126182008943_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO incidentcomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text, comment_public) VALUES (COALESCE(new.date, now()), 'INCDT'::text, public.getincidentid(new.incident_number), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text, COALESCE(new.public, true)); ,DROP RULE "_INSERT" ON api.incidentcomment; apiadminfalse78278278278278215321412131978218878278226182008949_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO incidentfile DO INSTEAD INSERT INTO public.url (url_source_id, url_source, url_title, url_url) VALUES (public.getincidentid(new.incident_number), 'INCDT'::text, new.title, new.url); )DROP RULE "_INSERT" ON api.incidentfile; apiadminfalse783192153278378378378326182008956_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO incidentimage DO INSTEAD SELECT public.saveimageass('INCDT'::text, public.getincidentid(new.incident_number), 'M'::bpchar, public.getimageid(new.image_name)) AS saveimageass; *DROP RULE "_INSERT" ON api.incidentimage; apiadminfalse78478419447841045153278426182008965_INSERTRULEnCREATE RULE "_INSERT" AS ON INSERT TO invoice DO INSTEAD SELECT public.insertinvoice(new.*) AS insertinvoice; $DROP RULE "_INSERT" ON api.invoice; apiadminfalse785785785225426182008976_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO invoiceline DO INSTEAD SELECT public.insertinvoicelineitem(new.*) AS insertinvoicelineitem; (DROP RULE "_INSERT" ON api.invoiceline; apiadminfalse786786786225526182008984_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO item DO INSTEAD INSERT INTO public.item (item_number, item_active, item_descrip1, item_descrip2, item_type, item_maxcost, item_classcode_id, item_inv_uom_id, item_picklist, item_fractional, item_config, item_sold, item_prodcat_id, item_exclusive, item_listprice, item_listcost, item_price_uom_id, item_upccode, item_prodweight, item_packweight, item_comments, item_extdescrip) VALUES (upper((new.item_number)::text), COALESCE(new.active, true), COALESCE(new.description1, ''::text), COALESCE(new.description2, ''::text), CASE WHEN (new.item_type = 'Purchased'::text) THEN 'P'::text WHEN (new.item_type = 'Manufactured'::text) THEN 'M'::text WHEN (new.item_type = 'Job'::text) THEN 'J'::text WHEN (new.item_type = 'Kit'::text) THEN 'K'::text WHEN (new.item_type = 'Phantom'::text) THEN 'F'::text WHEN (new.item_type = 'Reference'::text) THEN 'R'::text WHEN (new.item_type = 'Costing'::text) THEN 'S'::text WHEN (new.item_type = 'Tooling'::text) THEN 'T'::text WHEN (new.item_type = 'Outside Process'::text) THEN 'O'::text WHEN (new.item_type = 'Planning'::text) THEN 'L'::text WHEN (new.item_type = 'Breeder'::text) THEN 'B'::text WHEN (new.item_type = 'Co-Product'::text) THEN 'C'::text WHEN (new.item_type = 'By-Product'::text) THEN 'Y'::text ELSE NULL::text END, COALESCE(new.maximum_desired_cost, (0)::numeric), public.getclasscodeid(new.class_code), public.getuomid(new.inventory_uom), COALESCE(new.pick_list_item, true), COALESCE(new.fractional, false), COALESCE(new.configured, false), COALESCE(new.item_is_sold, true), COALESCE(public.getprodcatid(new.product_category), (-1)), COALESCE(new.exclusive, false), COALESCE(new.list_price, (0)::numeric), COALESCE(new.list_cost, (0)::numeric), COALESCE(public.getuomid(new.list_price_uom), public.getuomid(new.inventory_uom)), new.upc_code, COALESCE(new.product_weight, (0)::numeric), COALESCE(new.packaging_weight, (0)::numeric), new.notes, new.ext_description); !DROP RULE "_INSERT" ON api.item; apiadminfalse78778778778778778778778778778778713167877871681617787787787159078778778778778778778778726182008993_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO itemalias DO INSTEAD INSERT INTO public.itemalias (itemalias_item_id, itemalias_number, itemalias_usedescrip, itemalias_descrip1, itemalias_descrip2, itemalias_comments) VALUES (public.getitemid((new.item_number)::text), new.alias_number, COALESCE(new.use_description, false), COALESCE(new.description1, ''::text), COALESCE(new.description2, ''::text), new.comments); &DROP RULE "_INSERT" ON api.itemalias; apiadminfalse788788788788105378822678878878826182009000_INSERTRULESCREATE RULE "_INSERT" AS ON INSERT TO itemchar DO INSTEAD INSERT INTO public.charass (charass_target_type, charass_target_id, charass_char_id, charass_value, charass_default) VALUES ('I'::text, public.getitemid((new.item_number)::text), public.getcharid((new.characteristic)::text, 'I'::text), new.value, COALESCE(new.is_default, false)); %DROP RULE "_INSERT" ON api.itemchar; apiadminfalse7891053789789789131278918678926182009007_INSERTRULEuCREATE RULE "_INSERT" AS ON INSERT TO itemcomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'IS'::text, public.getitemid((new.item_number)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); (DROP RULE "_INSERT" ON api.itemcomment; apiadminfalse79079079079079018810531412131979079026182009015_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO itemcost DO INSTEAD SELECT public.insertitemcost(public.getitemid((new.item_number)::text), public.getcostelemid((new.costing_element)::text), public.getcurrid((new.currency)::text), new.actual_cost, new.post_to_standard) AS insertitemcost; %DROP RULE "_INSERT" ON api.itemcost; apiadminfalse791135810531661791791791791134279179126182009022_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO itemfile DO INSTEAD INSERT INTO public.url (url_source_id, url_source, url_title, url_url) VALUES (public.getitemid((new.item_number)::text), 'I'::text, new.title, new.url); %DROP RULE "_INSERT" ON api.itemfile; apiadminfalse792792792105319279279226182009029_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO itemimage DO INSTEAD SELECT public.saveimageass('I'::text, public.getitemid((new.item_number)::text), (CASE WHEN (new.purpose = 'Product Description'::text) THEN 'P'::text WHEN (new.purpose = 'Inventory Description'::text) THEN 'I'::text WHEN (new.purpose = 'Engineering Reference'::text) THEN 'E'::text WHEN (new.purpose = 'Miscellaneous'::text) THEN 'M'::text ELSE 'X'::text END)::bpchar, public.getimageid(new.image_name)) AS saveimageass; &DROP RULE "_INSERT" ON api.itemimage; apiadminfalse79310457931053194479379379326182009037_INSERTRULE CREATE RULE "_INSERT" AS ON INSERT TO itemsite DO INSTEAD INSERT INTO public.itemsite (itemsite_item_id, itemsite_warehous_id, itemsite_active, itemsite_dropship, itemsite_posupply, itemsite_createpr, itemsite_wosupply, itemsite_createwo, itemsite_createsopr, itemsite_createsopo, itemsite_sold, itemsite_soldranking, itemsite_costmethod, itemsite_controlmethod, itemsite_perishable, itemsite_plancode_id, itemsite_costcat_id, itemsite_loccntrl, itemsite_location_id, itemsite_location, itemsite_location_comments, itemsite_disallowblankwip, itemsite_stocked, itemsite_abcclass, itemsite_autoabcclass, itemsite_cyclecountfreq, itemsite_eventfence, itemsite_useparams, itemsite_reorderlevel, itemsite_ordertoqty, itemsite_minordqty, itemsite_maxordqty, itemsite_multordqty, itemsite_useparamsmanual, itemsite_ordergroup, itemsite_ordergroup_first, itemsite_mps_timefence, itemsite_leadtime, itemsite_safetystock, itemsite_supply_itemsite_id, itemsite_notes, itemsite_qtyonhand, itemsite_warrpurc, itemsite_autoreg, itemsite_freeze, itemsite_value, itemsite_planning_type) VALUES (public.getitemid((new.item_number)::text), public.getwarehousid((new.site)::text, 'ACTIVE'::text), COALESCE(new.active, true), COALESCE(new.dropship, false), COALESCE(new.po_supplied_at_site, false), COALESCE(new.create_prs, false), COALESCE(new.wo_supplied_at_site, false), COALESCE(new.create_wos, false), COALESCE(new.create_soprs, false), COALESCE(new.create_sopos, false), COALESCE(new.sold_from_site, true), COALESCE(new.ranking, 1), CASE WHEN (new.cost_method = 'None'::text) THEN 'N'::text WHEN (new.cost_method = 'Average'::text) THEN 'A'::text WHEN (new.cost_method = 'Standard'::text) THEN 'S'::text WHEN (new.cost_method = 'Job'::text) THEN 'J'::text ELSE NULL::text END, CASE WHEN (new.control_method = 'None'::text) THEN 'N'::text WHEN (new.control_method = 'Regular'::text) THEN 'R'::text WHEN (new.control_method = 'Serial #'::text) THEN 'S'::text WHEN (new.control_method = 'Lot #'::text) THEN 'L'::text ELSE NULL::text END, COALESCE(new.perishable, false), public.getplancodeid(new.planner_code), public.getcostcatid(new.cost_category), COALESCE(new.multiple_location_control, false), COALESCE(public.getlocationid((new.site)::text, new.location), (-1)), COALESCE(new.user_defined_location, ''::text), COALESCE(new.location_comment, ''::text), COALESCE(new.disallow_blank_wip_locations, false), COALESCE(new.stocked, false), COALESCE(new.abc_class, 'A'::bpchar), COALESCE(new.allow_automatic_updates, false), COALESCE(new.cycl_cnt_freq, 0), COALESCE((new.event_fence)::numeric, public.fetchmetricvalue('DefaultEventFence'::text)), COALESCE(new.enforce_order_parameters, false), COALESCE(new.reorder_level, (0)::numeric), COALESCE(new.order_up_to, (0)::numeric), COALESCE(new.minimum_order, (0)::numeric), COALESCE(new.maximum_order, (0)::numeric), COALESCE(new.order_multiple, (0)::numeric), COALESCE(new.enforce_on_manual_orders, false), COALESCE(new.group_mps_mrp_orders, 0), COALESCE(new.first_group, false), COALESCE(new.mps_time_fence, 0), COALESCE(new.lead_time, 0), COALESCE(new.safety_stock, (0)::numeric), CASE WHEN (new.supplied_from_site = 'None'::text) THEN NULL::integer WHEN (new.supplied_from_site = ''::text) THEN NULL::integer ELSE public.getitemsiteid(new.supplied_from_site, (new.item_number)::text) END, COALESCE(new.notes, ''::text), 0, COALESCE(new.require_warranty, false), COALESCE(new.auto_register, false), false, 0, CASE WHEN (new.planning_system = 'None'::text) THEN 'N'::text WHEN (new.planning_system = 'MPS'::text) THEN 'S'::text ELSE 'M'::text END); %DROP RULE "_INSERT" ON api.itemsite; apiadminfalse794794794794154679479479479479416979416651397794794105379479415847947947947947947947947947947947947947947947947947941554162479479479479479479479479479479479479479479479426182009047_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO itemsitecomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'IS'::text, public.getitemsiteid((new.site)::text, (new.item_number)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); ,DROP RULE "_INSERT" ON api.itemsitecomment; apiadminfalse79514127951319154679579579579518879579526182009055_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO itemsource DO INSTEAD INSERT INTO public.itemsrc (itemsrc_item_id, itemsrc_vend_id, itemsrc_vend_item_number, itemsrc_vend_item_descrip, itemsrc_comments, itemsrc_vend_uom, itemsrc_invvendoruomratio, itemsrc_minordqty, itemsrc_multordqty, itemsrc_leadtime, itemsrc_ranking, itemsrc_active, itemsrc_default, itemsrc_manuf_name, itemsrc_manuf_item_number, itemsrc_manuf_item_descrip, itemsrc_upccode, itemsrc_contrct_id, itemsrc_effective, itemsrc_expires) VALUES (public.getitemid((new.item_number)::text), public.getvendid((new.vendor)::text), new.vendor_item_number, COALESCE(new.vendor_description, ''::text), COALESCE(new.notes, ''::text), new.vendor_uom, new.inventory_vendor_uom_ratio, new.minimum_order, new.order_multiple, new.lead_time, new.vendor_ranking, COALESCE(new.active, true), COALESCE(new.itemsrc_default, true), COALESCE(new.manufacturer_name, ''::text), COALESCE(new.manufacturer_item_number, ''::text), new.manufacturer_description, new.bar_code, public.getcontrctid(new.contract_number), COALESCE(public.getcontrcteffective(new.contract_number), new.effective_date), COALESCE(public.getcontrctexpires(new.contract_number), new.expires_date)); 'DROP RULE "_INSERT" ON api.itemsource; apiadminfalse7967967967967967961325796796232796796796796796796105379613327967961081133179679679679679626182009065_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO itemsourceprice DO INSTEAD INSERT INTO public.itemsrcp (itemsrcp_itemsrc_id, itemsrcp_qtybreak, itemsrcp_price, itemsrcp_curr_id, itemsrcp_updated, itemsrcp_dropship, itemsrcp_warehous_id, itemsrcp_type, itemsrcp_discntprcnt, itemsrcp_fixedamtdiscount) VALUES (public.getitemsrcid((new.item_number)::text, (new.vendor)::text), new.qty_break, new.price_per_unit, public.getcurrid((new.currency)::text), now(), COALESCE(new.dropship_only, false), CASE WHEN (new.pricing_site = 'All'::text) THEN (-1) ELSE COALESCE(public.getwarehousid(new.pricing_site, 'ALL'::text), (-1)) END, CASE WHEN (new.pricing_type = 'Discount'::text) THEN 'D'::text ELSE 'N'::text END, (COALESCE(new.discount_percent, 0.0) / 100.0), new.discount_fixed_amount); ,DROP RULE "_INSERT" ON api.itemsourceprice; apiadminfalse79779779779779779779779779779713581624797154823379726182009074_INSERTRULEdCREATE RULE "_INSERT" AS ON INSERT TO itemsubstitute DO INSTEAD INSERT INTO public.itemsub (itemsub_parent_item_id, itemsub_sub_item_id, itemsub_uomratio, itemsub_rank) VALUES (public.getitemid((new.root_item_number)::text), public.getitemid((new.substitute_item_number)::text), COALESCE(new.sub_parent_uom_ratio, (1)::numeric), COALESCE(new.ranking, 1)); +DROP RULE "_INSERT" ON api.itemsubstitute; apiadminfalse7987982347987987987981053 26182009081_INSERTRULE_CREATE RULE "_INSERT" AS ON INSERT TO itemtaxtype DO INSTEAD INSERT INTO public.itemtax (itemtax_item_id, itemtax_taxzone_id, itemtax_taxtype_id) VALUES (public.getitemid((new.item_number)::text), CASE WHEN ((new.tax_zone)::text = 'Any'::text) THEN NULL::integer ELSE public.gettaxzoneid((new.tax_zone)::text) END, public.gettaxtypeid(new.tax_type)); (DROP RULE "_INSERT" ON api.itemtaxtype; apiadminfalse79979979979916141053161323579926182009088_INSERTRULErCREATE RULE "_INSERT" AS ON INSERT TO itemuomconversion DO INSTEAD SELECT public.saveitemuomconv(public.getitemid((new.item_number)::text), COALESCE(public.getuomid((new.uom)::text), (SELECT item.item_inv_uom_id FROM public.item WHERE (item.item_id = public.getitemid((new.item_number)::text)))), COALESCE(new.uom_value, (1)::numeric), COALESCE(public.getuomid(new.per_uom), (SELECT item.item_inv_uom_id FROM public.item WHERE (item.item_id = public.getitemid((new.item_number)::text)))), COALESCE(new.per_uom_value, (1)::numeric), COALESCE(new.fractional, false), public.getuomtypeid(new.selected_types)) AS saveitemuomconv; .DROP RULE "_INSERT" ON api.itemuomconversion; apiadminfalse800105319488008008008008001688008001617168161980026182009096_INSERTRULEXCREATE RULE "_INSERT" AS ON INSERT TO journalentry DO INSTEAD SELECT public.insertgltransaction('G/L'::text, 'JE'::text, new.doc_number, new.notes, public.getglaccntid(new.credit), public.getglaccntid(new.debit), (-1), public.currtobase(public.getcurrid((new.currency)::text), new.amount, new.dist_date), new.dist_date) AS insertgltransaction; )DROP RULE "_INSERT" ON api.journalentry; apiadminfalse801801165780180180180180180180113581335148126182009104_INSERTRULE|CREATE RULE "_INSERT" AS ON INSERT TO location DO INSTEAD INSERT INTO public.location (location_warehous_id, location_name, location_descrip, location_restrict, location_netable, location_whsezone_id, location_aisle, location_rack, location_bin) VALUES (public.getwarehousid((new.site)::text, 'ACTIVE'::text), COALESCE(new.location, ''::character varying), COALESCE(new.description, ''::text), COALESCE(new.restricted, false), COALESCE(new.netable, true), public.getwhsezoneid((new.site)::text, new.zone), COALESCE(new.aisle, ''::character varying), COALESCE(new.rack, ''::character varying), COALESCE(new.bin, ''::character varying)); %DROP RULE "_INSERT" ON api.location; apiadminfalse8028028028021624802802802802230162580280280226182009111_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO misccounttag DO INSTEAD SELECT public.postmisccount(public.getitemsiteid(COALESCE(new.site, (SELECT whsinfo.warehous_code FROM public.usrpref, public.whsinfo WHERE (((usrpref.usrpref_username = public.geteffectivextuser()) AND (usrpref.usrpref_name = 'PreferredWarehouse'::text)) AND (whsinfo.warehous_id = (usrpref.usrpref_value)::integer)))), new.item_number), new.quantity, new.comment) AS postmisccount; )DROP RULE "_INSERT" ON api.misccounttag; apiadminfalse80365980380380365980365917217215461412181080326182009119_INSERTRULEqCREATE RULE "_INSERT" AS ON INSERT TO pricingschedule DO INSTEAD INSERT INTO public.ipshead (ipshead_id, ipshead_name, ipshead_descrip, ipshead_effective, ipshead_expires, ipshead_curr_id, ipshead_updated) VALUES (nextval('public.ipshead_ipshead_id_seq'::regclass), new.name, new.description, CASE WHEN (new.effective = 'Always'::text) THEN '1970-01-01'::date ELSE (COALESCE(new.effective, '1970-01-01'::text))::date END, CASE WHEN (new.expires = 'Never'::text) THEN '2100-01-01'::date ELSE (COALESCE(new.expires, '2100-01-01'::text))::date END, COALESCE(public.getcurrid((new.currency)::text), public.basecurrid()), now()); ,DROP RULE "_INSERT" ON api.pricingschedule; apiadminfalse80447980413588048048048048042191018"26182009128_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO pricingscheduleassign DO INSTEAD INSERT INTO public.ipsass (ipsass_ipshead_id, ipsass_cust_id, ipsass_custtype_id, ipsass_custtype_pattern, ipsass_shipto_id, ipsass_shipto_pattern) VALUES (public.getipsheadid((new.pricing_schedule)::text), CASE WHEN ((new.customer_number)::text = 'Any'::text) THEN (-1) ELSE public.getcustid((new.customer_number)::text) END, CASE WHEN ((new.customer_type)::text = 'N/A'::text) THEN (-1) ELSE public.getcusttypeid((new.customer_type)::text) END, new.customer_type_pattern, CASE WHEN (((new.customer_number)::text = 'Any'::text) OR ((new.customer_shipto)::text = 'Any'::text)) THEN (-1) ELSE public.getshiptoid((new.customer_number)::text, (new.customer_shipto)::text) END, new.customer_shipto_pattern); 2DROP RULE "_INSERT" ON api.pricingscheduleassign; apiadminfalse8058052398051400805139580516051002805805805&26182009137_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO pricingscheduleitem DO INSTEAD SELECT CASE WHEN ((new.type)::text = 'Item'::text) THEN public.saveipsitem(NULL::integer, public.getipsheadid((new.pricing_schedule)::text), public.getitemid((new.item_number)::text), COALESCE(new.qty_break, (0)::numeric), COALESCE(new.price, (0)::numeric), public.getuomid((new.qty_uom)::text), public.getuomid((new.price_uom)::text), new.percent, new.fixedamt, CASE new.pricing_type WHEN 'Nominal'::text THEN 'N'::text WHEN 'Discount'::text THEN 'D'::text WHEN 'Markup'::text THEN 'M'::text ELSE '?'::text END) WHEN ((new.type)::text = 'Product Category'::text) THEN public.saveipsprodcat(NULL::integer, public.getipsheadid((new.pricing_schedule)::text), public.getprodcatid((new.product_category)::text), new.qty_break, new.percent, new.fixedamt, CASE new.pricing_type WHEN 'Nominal'::text THEN 'N'::text WHEN 'Discount'::text THEN 'D'::text WHEN 'Markup'::text THEN 'M'::text ELSE '?'::text END) ELSE NULL::integer END AS "case"; 0DROP RULE "_INSERT" ON api.pricingscheduleitem; apiadminfalse806806161780680680610531002806806159019461945806806806806806806*26182009147_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO pricingscheduleitemchar DO INSTEAD INSERT INTO public.ipsitemchar (ipsitemchar_ipsitem_id, ipsitemchar_char_id, ipsitemchar_value, ipsitemchar_price) VALUES (public.getipsitemid((new.pricing_schedule)::text, (new.item_number)::text, new.qty_break, (new.qty_uom)::text, (new.price_uom)::text), public.getcharid((new.characteristic)::text, 'I'::text), new.value, COALESCE(new.price, (0)::numeric)); 4DROP RULE "_INSERT" ON api.pricingscheduleitemchar; apiadminfalse80780780780780780715358072421312807807807.26182009154_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO project DO INSTEAD INSERT INTO public.prj (prj_number, prj_name, prj_descrip, prj_owner_username, prj_username, prj_so, prj_wo, prj_po, prj_status, prj_due_date, prj_assigned_date, prj_start_date, prj_completed_date) VALUES (new.number, COALESCE(new.name, ''::text), COALESCE(new.description, ''::text), COALESCE(new.owner, public.geteffectivextuser()), COALESCE(new.assigned_to, public.geteffectivextuser()), COALESCE(new.sales_orders, true), COALESCE(new.work_orders, true), COALESCE(new.purchase_orders, true), CASE WHEN (new.status = 'In-Process'::text) THEN 'O'::text WHEN (new.status = 'Completed'::text) THEN 'C'::text ELSE 'P'::text END, new.due, new.assigned, new.started, new.completed); $DROP RULE "_INSERT" ON api.project; apiadminfalse8088081412808174808808808808808808808808808808808808226182009161_INSERTRULEyCREATE RULE "_INSERT" AS ON INSERT TO projectcomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'J'::text, public.getprjid((new.project_number)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); +DROP RULE "_INSERT" ON api.projectcomment; apiadminfalse809809809809141280980918880915881319626182009169_INSERTRULEICREATE RULE "_INSERT" AS ON INSERT TO prospect DO INSTEAD INSERT INTO public.prospect (prospect_number, prospect_name, prospect_active, prospect_cntct_id, prospect_taxzone_id, prospect_salesrep_id, prospect_warehous_id, prospect_comments) VALUES (upper((new.prospect_number)::text), COALESCE(new.prospect_name, ''::text), COALESCE(new.active, true), public.savecntct(public.getcntctid(new.contact_number), new.contact_number, public.saveaddr(public.getaddrid(new.contact_address_number), new.contact_address_number, new.contact_address1, new.contact_address2, new.contact_address3, new.contact_city, new.contact_state, new.contact_postalcode, new.contact_country, new.contact_address_change), new.contact_honorific, new.contact_first, new.contact_middle, new.contact_last, new.contact_suffix, new.contact_voice, new.contact_alternate, new.contact_fax, new.contact_email, new.contact_web, new.contact_job_title, new.contact_change), public.gettaxzoneid(new.default_tax_zone), public.getsalesrepid(new.sales_rep), public.getwarehousid(new.site_code, 'ACTIVE'::text), COALESCE(new.notes, ''::text)); %DROP RULE "_INSERT" ON api.prospect; apiadminfalse810810810810810810810810810810810161419438108101940127197116241600810244810810810810810810810810810810810810810810810810810:26182009179_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO purchaseline DO INSTEAD INSERT INTO public.poitem (poitem_pohead_id, poitem_linenumber, poitem_duedate, poitem_itemsite_id, poitem_vend_item_descrip, poitem_qty_ordered, poitem_unitprice, poitem_vend_item_number, poitem_manuf_name, poitem_manuf_item_number, poitem_manuf_item_descrip, poitem_comments, poitem_expcat_id, poitem_freight, poitem_prj_id, poitem_bom_rev_id, poitem_boo_rev_id) VALUES (public.getpoheadid((new.order_number)::text), new.line_number, new.due_date, public.getitemsiteid(COALESCE(new.site, (SELECT whsinfo.warehous_code FROM (public.pohead JOIN public.whsinfo ON ((whsinfo.warehous_id = pohead.pohead_warehous_id))) WHERE (pohead.pohead_id = public.getpoheadid((new.order_number)::text))), (SELECT whsinfo.warehous_code FROM public.whsinfo WHERE (whsinfo.warehous_id = public.fetchprefwarehousid()))), new.item_number), new.vendor_description, new.qty_ordered, new.unit_price, new.vend_item_number, new.manufacturer_name, new.manufacturer_item_number, new.manufacturer_description, new.notes, public.getexpcatid(new.expense_category), new.freight, public.getprjid(new.project_number), public.getrevid('BOM'::text, new.item_number, new.bill_of_materials_revision), public.getrevid('BOO'::text, new.item_number, new.bill_of_operations_revision)); )DROP RULE "_INSERT" ON api.purchaseline; apiadminfalse811158515461181158881115948118111781721788111798118118118118118118118118118118111728118118118111414?26182009191_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO purchaselinechar DO INSTEAD SELECT DISTINCT public.updatecharassignment('PI'::text, poitem.poitem_id, charass.charass_char_id, new.value) AS updatecharassignment FROM public.pohead, public.poitem, public.itemsite, public.item, public.charass, public."char" WHERE (((((((((pohead.pohead_number = (new.order_number)::text) AND (pohead.pohead_id = poitem.poitem_pohead_id)) AND (poitem.poitem_linenumber = new.line_number)) AND (poitem.poitem_itemsite_id = itemsite.itemsite_id)) AND (item.item_id = itemsite.itemsite_item_id)) AND (charass.charass_target_type = 'I'::text)) AND (charass.charass_target_id = item.item_id)) AND ("char".char_id = charass.charass_char_id)) AND ("char".char_name = new.characteristic)); -DROP RULE "_INSERT" ON api.purchaselinechar; apiadminfalse8121791691681798121851781691791798128121868122110178812186185186C26182009201_INSERTRULEsCREATE RULE "_INSERT" AS ON INSERT TO purchaselinecomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) SELECT COALESCE(new.date, (('now'::text)::date)::timestamp with time zone) AS "coalesce", 'PI', poitem.poitem_id, COALESCE(new.username, public.geteffectivextuser()) AS "coalesce", public.getcmnttypeid(new.type) AS getcmnttypeid, new.text FROM public.poitem, public.pohead WHERE (((pohead.pohead_number = (new.order_number)::text) AND (poitem.poitem_pohead_id = pohead.pohead_id)) AND (poitem.poitem_linenumber = new.line_number)); 0DROP RULE "_INSERT" ON api.purchaselinecomment; apiadminfalse81381381381317917817917814121319813813188813813179G26182009210_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO purchaseorder DO INSTEAD INSERT INTO public.pohead (pohead_number, pohead_orderdate, pohead_status, pohead_terms_id, pohead_taxzone_id, pohead_warehous_id, pohead_agent_username, pohead_vend_id, pohead_vendaddr_id, pohead_fob, pohead_shipvia, pohead_curr_id, pohead_freight, pohead_comments, pohead_dropship, pohead_vend_cntct_id, pohead_vend_cntct_honorific, pohead_vend_cntct_first_name, pohead_vend_cntct_middle, pohead_vend_cntct_last_name, pohead_vend_cntct_suffix, pohead_vend_cntct_phone, pohead_vend_cntct_title, pohead_vend_cntct_fax, pohead_vend_cntct_email, pohead_vendaddress1, pohead_vendaddress2, pohead_vendaddress3, pohead_vendcity, pohead_vendstate, pohead_vendzipcode, pohead_vendcountry, pohead_shipto_cntct_id, pohead_shipto_cntct_honorific, pohead_shipto_cntct_first_name, pohead_shipto_cntct_middle, pohead_shipto_cntct_last_name, pohead_shipto_cntct_suffix, pohead_shipto_cntct_phone, pohead_shipto_cntct_title, pohead_shipto_cntct_fax, pohead_shipto_cntct_email, pohead_shiptoaddress_id, pohead_shiptoaddress1, pohead_shiptoaddress2, pohead_shiptoaddress3, pohead_shiptocity, pohead_shiptostate, pohead_shiptozipcode, pohead_shiptocountry, pohead_cohead_id) SELECT new.order_number, COALESCE(new.order_date, ('now'::text)::date) AS "coalesce", 'U', COALESCE(public.gettermsid(new.terms), vendinfo.vend_terms_id) AS "coalesce", COALESCE(public.gettaxzoneid(new.tax_zone), vendinfo.vend_taxzone_id) AS "coalesce", COALESCE(public.getwarehousid(new.receiving_site, 'ALL'::text), public.fetchprefwarehousid()) AS "coalesce", COALESCE(new.purchasing_agent, public.geteffectivextuser()) AS "coalesce", public.getvendid(new.vendor_number) AS getvendid, CASE WHEN (new.alt_address = 'MAIN'::text) THEN NULL::integer ELSE public.getvendaddrid(new.vendor_number, new.alt_address) END AS getvendaddrid, COALESCE(new.fob, CASE WHEN (vendinfo.vend_fobsource = 'W'::bpchar) THEN (SELECT whsinfo.warehous_fob FROM public.whsinfo WHERE (whsinfo.warehous_id = COALESCE(public.getwarehousid(new.receiving_site, 'ALL'::text), public.fetchprefwarehousid()))) ELSE vendinfo.vend_fob END) AS "coalesce", COALESCE(new.ship_via, vendinfo.vend_shipvia) AS "coalesce", COALESCE(public.getcurrid((new.currency)::text), vendinfo.vend_curr_id) AS "coalesce", COALESCE(new.freight, (0)::numeric) AS "coalesce", new.notes, COALESCE(new.dropship, false) AS "coalesce", public.getcntctid(new.vend_contact_number) AS getcntctid, COALESCE(new.vend_cntct_honorific, ''::text) AS "coalesce", COALESCE(new.vend_cntct_first_name, ''::text) AS "coalesce", COALESCE(new.vend_cntct_middle, ''::text) AS "coalesce", COALESCE(new.vend_cntct_last_name, ''::text) AS "coalesce", COALESCE(new.vend_cntct_suffix, ''::text) AS "coalesce", COALESCE(new.vend_cntct_phone, ''::text) AS "coalesce", COALESCE(new.vend_cntct_title, ''::text) AS "coalesce", COALESCE(new.vend_cntct_fax, ''::text) AS "coalesce", COALESCE(new.vend_cntct_email, ''::text) AS "coalesce", COALESCE(new.vendaddress1, ''::text) AS "coalesce", COALESCE(new.vendaddress2, ''::text) AS "coalesce", COALESCE(new.vendaddress3, ''::text) AS "coalesce", COALESCE(new.vendcity, ''::text) AS "coalesce", COALESCE(new.vendstate, ''::text) AS "coalesce", COALESCE(new.vendzipcode, ''::text) AS "coalesce", COALESCE(new.vendcountry, ''::text) AS "coalesce", public.getcntctid(new.shipto_contact_number) AS getcntctid, COALESCE(new.shipto_cntct_honorific, ''::text) AS "coalesce", COALESCE(new.shipto_cntct_first_name, ''::text) AS "coalesce", COALESCE(new.shipto_cntct_middle, ''::text) AS "coalesce", COALESCE(new.shipto_cntct_last_name, ''::text) AS "coalesce", COALESCE(new.shipto_cntct_suffix, ''::text) AS "coalesce", COALESCE(new.shipto_cntct_phone, ''::text) AS "coalesce", COALESCE(new.shipto_cntct_title, ''::text) AS "coalesce", COALESCE(new.shipto_cntct_fax, ''::text) AS "coalesce", COALESCE(new.shipto_cntct_email, ''::text) AS "coalesce", public.getaddrid(new.shiptoaddress_number) AS getaddrid, COALESCE(new.shiptoaddress1, ''::text) AS "coalesce", COALESCE(new.shiptoaddress2, ''::text) AS "coalesce", COALESCE(new.shiptoaddress3, ''::text) AS "coalesce", COALESCE(new.shiptocity, ''::text) AS "coalesce", COALESCE(new.shiptostate, ''::text) AS "coalesce", COALESCE(new.shiptozipcode, ''::text) AS "coalesce", COALESCE(new.shiptocountry, ''::text) AS "coalesce", public.getcoheadid(new.sales_order_number) AS getcoheadid FROM public.vendinfo WHERE (vendinfo.vend_id = public.getvendid(new.vendor_number)); *DROP RULE "_INSERT" ON api.purchaseorder; apiadminfalse8141721581412158118112711358172161481497110888148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148148141788148141581581081162115815815816248148148148141615814814K26182009219_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO purchaseordercomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, (('now'::text)::date)::timestamp with time zone), 'P'::text, public.getpoheadid((new.order_number)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); 1DROP RULE "_INSERT" ON api.purchaseordercomment; apiadminfalse815815815815188815141215858151319815O26182009227_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO quote DO INSTEAD INSERT INTO public.quhead (quhead_number, quhead_cust_id, quhead_custponumber, quhead_quotedate, quhead_warehous_id, quhead_shipto_id, quhead_shiptoname, quhead_shiptoaddress1, quhead_shiptoaddress2, quhead_shiptoaddress3, quhead_salesrep_id, quhead_terms_id, quhead_fob, quhead_shipvia, quhead_shiptocity, quhead_shiptostate, quhead_shiptozipcode, quhead_freight, quhead_misc, quhead_ordercomments, quhead_shipcomments, quhead_shiptophone, quhead_billtoname, quhead_billtoaddress1, quhead_billtoaddress2, quhead_billtoaddress3, quhead_billtocity, quhead_billtostate, quhead_billtozip, quhead_misc_accnt_id, quhead_misc_descrip, quhead_commission, quhead_packdate, quhead_prj_id, quhead_billtocountry, quhead_shiptocountry, quhead_curr_id, quhead_taxzone_id, quhead_taxtype_id, quhead_imported, quhead_expire, quhead_status, quhead_saletype_id, quhead_shipzone_id) VALUES (new.quote_number, public.getcustid(new.customer_number, true), new.cust_po_number, new.quote_date, public.getwarehousid(new.site, 'SHIPPING'::text), public.getshiptoid(new.customer_number, new.shipto_number), new.shipto_name, new.shipto_address1, new.shipto_address2, new.shipto_address3, public.getsalesrepid(new.sales_rep), public.gettermsid(new.terms), new.fob, new.ship_via, new.shipto_city, new.shipto_state, new.shipto_postal_code, new.freight, new.misc_charge, new.order_notes, new.shipping_notes, new.shipto_phone, new.billto_name, new.billto_address1, new.billto_address2, new.billto_address3, new.billto_city, new.billto_state, new.billto_postal_code, public.getglaccntid(new.misc_account_number), new.misc_charge_description, new.commission, new.pack_date, public.getprjid(new.project_number), new.billto_country, new.shipto_country, public.getcurrid((new.currency)::text), public.gettaxzoneid(new.tax_zone), public.gettaxtypeid(new.tax_type), true, new.expire_date, CASE WHEN (new.status = 'Converted'::text) THEN 'C'::text ELSE 'O'::text END, public.getsaletypeid(new.sale_type), public.getshipzoneid(new.shipto_shipzone)); "DROP RULE "_INSERT" ON api.quote; apiadminfalse816139981681681681681681681681681681681681681681681681681681681681681681681681615888168168168168168168161608249816816160116151614162416001605816816816161381681681681681681614811358816816S26182009236_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO quotecomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, (('now'::text)::date)::timestamp with time zone), 'Q'::text, public.getquoteid(new.quote_number), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); )DROP RULE "_INSERT" ON api.quotecomment; apiadminfalse817131981718881781715928171412817817W26182009244_INSERTRULE CREATE RULE "_INSERT" AS ON INSERT TO quoteline DO INSTEAD INSERT INTO public.quitem (quitem_quhead_id, quitem_linenumber, quitem_itemsite_id, quitem_scheddate, quitem_qtyord, quitem_unitcost, quitem_price, quitem_custprice, quitem_memo, quitem_imported, quitem_custpn, quitem_createorder, quitem_order_warehous_id, quitem_item_id, quitem_prcost, quitem_taxtype_id, quitem_qty_uom_id, quitem_qty_invuomratio, quitem_price_uom_id, quitem_price_invuomratio) SELECT public.getquoteid(new.quote_number) AS getquoteid, COALESCE(new.line_number, (SELECT (COALESCE(max(quitem.quitem_linenumber), 0) + 1) FROM public.quitem WHERE (quitem.quitem_quhead_id = public.getquoteid(new.quote_number)))) AS "coalesce", itemsite.itemsite_id, COALESCE(new.scheduled_date, (SELECT min(quitem.quitem_scheddate) AS min FROM public.quitem WHERE (quitem.quitem_quhead_id = public.getquoteid(new.quote_number)))) AS "coalesce", new.qty_ordered, public.stdcost(item.item_id) AS stdcost, COALESCE(new.net_unit_price, public.itemprice(public.getitemid(new.item_number), quhead.quhead_cust_id, quhead.quhead_shipto_id, new.qty_ordered, quhead.quhead_curr_id, quhead.quhead_quotedate)) AS "coalesce", public.itemprice(public.getitemid(new.item_number), quhead.quhead_cust_id, quhead.quhead_shipto_id, new.qty_ordered, quhead.quhead_curr_id, quhead.quhead_quotedate) AS itemprice, COALESCE(new.notes, ''::text) AS "coalesce", true AS bool, new.customer_pn, COALESCE(new.create_order, false) AS "coalesce", COALESCE(public.getwarehousid(new.supplying_site, 'SHIPPING'::text), itemsite.itemsite_warehous_id) AS "coalesce", public.getitemid(new.item_number) AS getitemid, COALESCE(new.overwrite_po_price, (0)::numeric) AS "coalesce", COALESCE(public.gettaxtypeid(new.tax_type), public.getitemtaxtype(itemsite.itemsite_item_id, quhead.quhead_taxzone_id)) AS "coalesce", COALESCE(public.getuomid(new.qty_uom), item.item_inv_uom_id) AS "coalesce", public.itemuomtouomratio(item.item_id, COALESCE(public.getuomid(new.qty_uom), item.item_inv_uom_id), item.item_inv_uom_id) AS itemuomtouomratio, COALESCE(public.getuomid(new.price_uom), item.item_price_uom_id) AS "coalesce", public.itemuomtouomratio(item.item_id, COALESCE(public.getuomid(new.price_uom), item.item_price_uom_id), item.item_price_uom_id) AS itemuomtouomratio FROM public.quhead, public.itemsite, public.item, public.whsinfo WHERE ((quhead.quhead_number = new.quote_number) AND (((((((itemsite.itemsite_warehous_id = whsinfo.warehous_id) AND (itemsite.itemsite_item_id = item.item_id)) AND itemsite.itemsite_active) AND (item.item_number = new.item_number)) AND whsinfo.warehous_active) AND whsinfo.warehous_shipping) AND (whsinfo.warehous_code = COALESCE(new.sold_from_site, (SELECT whsinfo.warehous_code FROM public.usrpref, public.whsinfo WHERE (((usrpref.usrpref_username = public.geteffectivextuser()) AND (usrpref.usrpref_name = 'PreferredWarehouse'::text)) AND (whsinfo.warehous_id = (usrpref.usrpref_value)::integer))))))); &DROP RULE "_INSERT" ON api.quoteline; apiadminfalse8181053168169249249172168168172216817281825081865981881881881881881881816981814122491617818161315921552162420781712169172172169249659249250250249818659818818818818[26182009254_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO quotelinechar DO INSTEAD SELECT DISTINCT public.updatecharassignment('QI'::text, quitem.quitem_id, charass.charass_char_id, new.value) AS updatecharassignment FROM public.quhead, public.quitem, public.itemsite, public.item, public.charass, public."char" WHERE (((((((((quhead.quhead_number = new.quote_number) AND (quhead.quhead_id = quitem.quitem_quhead_id)) AND (quitem.quitem_linenumber = new.line_number)) AND (quitem.quitem_itemsite_id = itemsite.itemsite_id)) AND (item.item_id = itemsite.itemsite_item_id)) AND (charass.charass_target_type = 'I'::text)) AND (charass.charass_target_id = item.item_id)) AND ("char".char_id = charass.charass_char_id)) AND ("char".char_name = new.characteristic)); *DROP RULE "_INSERT" ON api.quotelinechar; apiadminfalse8198191861862508192501858192491692501688192508192110169186185249_26182009264_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO quotelinecomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, (('now'::text)::date)::timestamp with time zone), 'QI'::text, public.getquotelineitemid(new.quote_number, new.line_number), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); -DROP RULE "_INSERT" ON api.quotelinecomment; apiadminfalse820131982082018815938208201412820820820c26182009272_INSERTRULExCREATE RULE "_INSERT" AS ON INSERT TO salescredit DO INSTEAD INSERT INTO public.aropenalloc (aropenalloc_aropen_id, aropenalloc_doctype, aropenalloc_doc_id, aropenalloc_amount, aropenalloc_curr_id) VALUES (public.getaropenid(new.customer_number, 'C'::bpchar, new.cm_number), 'S'::bpchar, public.getcoheadid(new.so_number), new.amount, public.getcurrid((new.currency)::text)); (DROP RULE "_INSERT" ON api.salescredit; apiadminfalse821127582113581088821821821821251821e26182009278_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO saleshistory DO INSTEAD INSERT INTO public.cohist (cohist_cust_id, cohist_itemsite_id, cohist_shipdate, cohist_shipvia, cohist_ordernumber, cohist_orderdate, cohist_invcnumber, cohist_invcdate, cohist_qtyshipped, cohist_unitprice, cohist_shipto_id, cohist_salesrep_id, cohist_duedate, cohist_imported, cohist_billtoname, cohist_billtoaddress1, cohist_billtoaddress2, cohist_billtoaddress3, cohist_billtocity, cohist_billtostate, cohist_billtozip, cohist_shiptoname, cohist_shiptoaddress1, cohist_shiptoaddress2, cohist_shiptoaddress3, cohist_shiptocity, cohist_shiptostate, cohist_shiptozip, cohist_commission, cohist_commissionpaid, cohist_unitcost, cohist_misc_type, cohist_misc_descrip, cohist_misc_id, cohist_doctype, cohist_promisedate, cohist_ponumber, cohist_curr_id, cohist_sequence, cohist_taxzone_id, cohist_taxtype_id) VALUES (public.getcustid(new.customer_number), public.getitemsiteid(new.site_code, new.item_number), new.ship_date, new.ship_via, new.order_number, new.order_date, new.invoice_number, new.invoice_date, new.quantity_shipped, COALESCE(new.unit_price, (0)::numeric), public.getshiptoid(new.customer_number, new.shipto_number), public.getsalesrepid(new.sales_rep), new.due_date, true, new.billto_name, new.billto_address1, new.billto_address2, new.billto_address3, new.billto_city, new.billto_state, new.billto_zip, new.shipto_name, new.shipto_address1, new.shipto_address2, new.shipto_address3, new.shipto_city, new.shipto_state, new.shipto_zip, COALESCE(new.commission, (0)::numeric), COALESCE(new.commission_paid, false), COALESCE(new.unit_cost, (0)::numeric), CASE WHEN (new.misc_type = 'Misc. Charge'::text) THEN 'M'::text WHEN (new.misc_type = 'Freight'::text) THEN 'F'::text ELSE NULL::text END, new.misc_description, CASE WHEN (new.misc_type = 'Misc. Charge'::text) THEN public.getglaccntid(new.misc_info) ELSE NULL::integer END, CASE WHEN (new.document_type = 'Invoice'::text) THEN 'I'::text WHEN (new.document_type = 'Credit Memo'::text) THEN 'C'::text ELSE NULL::text END, new.promise_date, new.purchase_order_number, COALESCE(public.getcurrid((new.currency)::text), public.basecurrid()), new.gl_sequence, public.gettaxzoneid(new.tax_zone), public.gettaxtypeid(new.tax_type)); )DROP RULE "_INSERT" ON api.saleshistory; apiadminfalse822822822822822822822822822822822822822822161382282282282282282282282282282282282282282282282282216141600160515468228221358252101882214818228228228228228221395822822822i26182009289_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO saleslinechar DO INSTEAD SELECT DISTINCT public.updatecharassignment('SI'::text, coitem.coitem_id, charass.charass_char_id, new.value, public.itemcharprice(item.item_id, "char".char_id, new.value, cohead.cohead_cust_id, cohead.cohead_shipto_id, coitem.coitem_qtyord, cohead.cohead_curr_id, cohead.cohead_orderdate)) AS updatecharassignment FROM public.cohead, public.coitem, public.itemsite, public.item, public.charass, public."char" WHERE (((((((((cohead.cohead_number = (new.order_number)::text) AND (cohead.cohead_id = coitem.coitem_cohead_id)) AND (coitem.coitem_id = public.getcoitemid((new.order_number)::text, new.line_number))) AND (coitem.coitem_itemsite_id = itemsite.itemsite_id)) AND (item.item_id = itemsite.itemsite_item_id)) AND (charass.charass_target_type = 'I'::text)) AND (charass.charass_target_id = item.item_id)) AND ("char".char_id = charass.charass_char_id)) AND ("char".char_name = new.characteristic)); *DROP RULE "_INSERT" ON api.saleslinechar; apiadminfalse823168176176186823133816917616917617617618517717717718518618682382317716992053823823m26182009299_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO saleslinecomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, (('now'::text)::date)::timestamp with time zone), 'SI'::text, public.getcoitemid((new.order_number)::text, new.line_number), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); -DROP RULE "_INSERT" ON api.saleslinecomment; apiadminfalse824188131982482414128241338824824824824q26182009307_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO salesorder DO INSTEAD INSERT INTO public.cohead (cohead_number, cohead_cust_id, cohead_custponumber, cohead_orderdate, cohead_warehous_id, cohead_shipto_id, cohead_shiptoname, cohead_shiptoaddress1, cohead_shiptoaddress2, cohead_shiptoaddress3, cohead_salesrep_id, cohead_terms_id, cohead_fob, cohead_shipvia, cohead_shiptocity, cohead_shiptostate, cohead_shiptozipcode, cohead_freight, cohead_calcfreight, cohead_misc, cohead_imported, cohead_ordercomments, cohead_shipcomments, cohead_shiptophone, cohead_shipchrg_id, cohead_shipform_id, cohead_billtoname, cohead_billtoaddress1, cohead_billtoaddress2, cohead_billtoaddress3, cohead_billtocity, cohead_billtostate, cohead_billtozipcode, cohead_misc_accnt_id, cohead_misc_descrip, cohead_commission, cohead_holdtype, cohead_packdate, cohead_prj_id, cohead_shipcomplete, cohead_billtocountry, cohead_shiptocountry, cohead_curr_id, cohead_taxzone_id, cohead_shipto_cntct_id, cohead_shipto_cntct_honorific, cohead_shipto_cntct_first_name, cohead_shipto_cntct_middle, cohead_shipto_cntct_last_name, cohead_shipto_cntct_suffix, cohead_shipto_cntct_phone, cohead_shipto_cntct_title, cohead_shipto_cntct_fax, cohead_shipto_cntct_email, cohead_billto_cntct_id, cohead_billto_cntct_honorific, cohead_billto_cntct_first_name, cohead_billto_cntct_middle, cohead_billto_cntct_last_name, cohead_billto_cntct_suffix, cohead_billto_cntct_phone, cohead_billto_cntct_title, cohead_billto_cntct_fax, cohead_billto_cntct_email, cohead_saletype_id, cohead_shipzone_id) SELECT new.order_number, public.getcustid(new.customer_number) AS getcustid, new.cust_po_number, new.order_date, public.getwarehousid(new.site, 'SHIPPING'::text) AS getwarehousid, public.getshiptoid(new.customer_number, new.shipto_number) AS getshiptoid, new.shipto_name, new.shipto_address1, new.shipto_address2, new.shipto_address3, public.getsalesrepid(new.sales_rep) AS getsalesrepid, public.gettermsid(new.terms) AS gettermsid, new.fob, new.ship_via, new.shipto_city, new.shipto_state, new.shipto_postal_code, CASE WHEN COALESCE(new.calculate_freight, public.fetchmetricbool('CalculateFreight'::text)) THEN (0)::numeric ELSE new.freight END AS freight, COALESCE(new.calculate_freight, public.fetchmetricbool('CalculateFreight'::text)) AS "coalesce", new.misc_charge, true AS bool, new.order_notes, new.shipping_notes, new.shipto_phone, public.getshipchrgid(new.shipping_chgs) AS getshipchrgid, public.getshipformid(new.shipping_form) AS getshipformid, new.billto_name, new.billto_address1, new.billto_address2, new.billto_address3, new.billto_city, new.billto_state, new.billto_postal_code, public.getglaccntid(new.misc_account_number) AS getglaccntid, new.misc_charge_description, new.commission, CASE WHEN (new.hold_type = 'Credit'::text) THEN 'C'::text WHEN (new.hold_type = 'Shipping'::text) THEN 'S'::text WHEN (new.hold_type = 'Packing'::text) THEN 'P'::text ELSE 'N'::text END AS "case", new.pack_date, public.getprjid(new.project_number) AS getprjid, new.ship_complete, new.billto_country, new.shipto_country, public.getcurrid((new.currency)::text) AS getcurrid, CASE WHEN (new.tax_zone = 'None'::text) THEN (-1) ELSE public.gettaxzoneid(new.tax_zone) END AS gettaxzoneid, public.getcntctid(new.shipto_contact_number) AS getcntctid, new.shipto_contact_honorific, new.shipto_contact_first, new.shipto_contact_middle, new.shipto_contact_last, new.shipto_contact_suffix, new.shipto_contact_phone, new.shipto_contact_title, new.shipto_contact_fax, new.shipto_contact_email, public.getcntctid(new.billto_contact_number) AS getcntctid, new.billto_contact_name, new.billto_contact_first, new.billto_contact_middle, new.billto_contact_last, new.billto_contact_suffix, new.billto_contact_phone, new.billto_contact_title, new.billto_contct_fax, new.billto_contact_email, public.getsaletypeid(new.sale_type) AS getsaletypeid, public.getshipzoneid(new.shipto_shipzone) AS getshipzoneid FROM public.custinfo WHERE (custinfo.cust_number = new.customer_number); 'DROP RULE "_INSERT" ON api.salesorder; apiadminfalse8258258258258258258258258258258258258258258258258258258258258258258251768251608251601135816151603825825825825825825825160082582582582513951614160882582597182593782582582582514811605825825825825825825825825825825825825825162482582582582516028251588825825825825825825u26182009316_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO salesordercomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, (('now'::text)::date)::timestamp with time zone), 'S'::text, public.getsalesorderid((new.order_number)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); .DROP RULE "_INSERT" ON api.salesordercomment; apiadminfalse826141282682682615998261319826826188y26182009324_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO salesrep DO INSTEAD INSERT INTO public.salesrep (salesrep_active, salesrep_number, salesrep_name, salesrep_commission, salesrep_method, salesrep_emp_id) VALUES (COALESCE(new.active, true), COALESCE(new.number, ''::character varying), COALESCE(new.name, ''::text), COALESCE((new.commission_percent * 0.01), (0)::numeric), ''::bpchar, public.getempid(new.employee)); %DROP RULE "_INSERT" ON api.salesrep; apiadminfalse8278278271670163827827827827}26182009332_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO site DO INSTEAD INSERT INTO public.whsinfo (warehous_code, warehous_descrip, warehous_fob, warehous_active, warehous_counttag_prefix, warehous_counttag_number, warehous_bol_prefix, warehous_bol_number, warehous_shipping, warehous_useslips, warehous_usezones, warehous_aislesize, warehous_aislealpha, warehous_racksize, warehous_rackalpha, warehous_binsize, warehous_binalpha, warehous_locationsize, warehous_locationalpha, warehous_enforcearbl, warehous_default_accnt_id, warehous_shipping_commission, warehous_cntct_id, warehous_addr_id, warehous_taxzone_id, warehous_transit, warehous_shipform_id, warehous_shipvia_id, warehous_shipcomments, warehous_costcat_id, warehous_sitetype_id, warehous_sequence) VALUES (COALESCE(new.code, ''::character varying), COALESCE(new.description, ''::text), CASE WHEN new.inventory_type THEN COALESCE(new.default_fob, ''::text) ELSE ''::text END, COALESCE(new.active, true), CASE WHEN new.inventory_type THEN COALESCE(new.next_count_tag_prefix, ''::text) ELSE ''::text END, CASE WHEN new.inventory_type THEN COALESCE(new.next_count_tag_number, 0) ELSE 0 END, CASE WHEN new.inventory_type THEN COALESCE(new.next_bill_of_lading_prefix, ''::text) ELSE ''::text END, CASE WHEN new.inventory_type THEN COALESCE(new.next_bill_of_lading_number, 0) ELSE 0 END, CASE WHEN new.inventory_type THEN COALESCE(new.shipping_site, false) ELSE false END, CASE WHEN new.inventory_type THEN COALESCE(new.force_the_use_of_count_slips, false) ELSE false END, CASE WHEN new.inventory_type THEN COALESCE(new.force_the_use_of_zones, false) ELSE false END, CASE WHEN new.inventory_type THEN COALESCE(new.aisle_size, 0) ELSE 0 END, CASE WHEN new.inventory_type THEN COALESCE(new.aisle_allow_alpha_characters, false) ELSE false END, CASE WHEN new.inventory_type THEN COALESCE(new.rack_size, 0) ELSE 0 END, CASE WHEN new.inventory_type THEN COALESCE(new.rack_allow_alpha_characters, false) ELSE false END, CASE WHEN new.inventory_type THEN COALESCE(new.bin_size, 0) ELSE 0 END, CASE WHEN new.inventory_type THEN COALESCE(new.bin_allow_alpha_characters, false) ELSE false END, CASE WHEN new.inventory_type THEN COALESCE(new.location_size, 0) ELSE 0 END, CASE WHEN new.inventory_type THEN COALESCE(new.location_allow_alpha_characters, false) ELSE false END, CASE WHEN new.inventory_type THEN COALESCE(new.enforce_arbl_naming_convention, false) ELSE false END, COALESCE(public.getglaccntid(new.post_unassigned_transactions_to), (-1)), CASE WHEN new.inventory_type THEN COALESCE((new.shipping_commission * 0.01), (0)::numeric) ELSE (0)::numeric END, public.savecntct(public.getcntctid(new.contact_number), new.contact_number, NULL::integer, new.honorific, new.first, new.middle, new.last, new.suffix, new.phone, NULL::text, new.fax, new.email, NULL::text, new.job_title, new.contact_change), public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postal_code, new.country, new.address_change), CASE WHEN new.inventory_type THEN COALESCE(public.gettaxzoneid(new.tax_zone), (-1)) ELSE NULL::integer END, CASE WHEN new.inventory_type THEN false WHEN new.transit_type THEN true ELSE false END, CASE WHEN new.transit_type THEN COALESCE((public.getshipformid(new.default_shipping_form))::numeric, public.fetchmetricvalue('DefaultShipFormId'::text)) ELSE NULL::numeric END, CASE WHEN new.transit_type THEN COALESCE((public.getshipviaid(new.default_ship_via))::numeric, public.fetchmetricvalue('DefaultShipViaId'::text)) ELSE NULL::numeric END, CASE WHEN new.transit_type THEN COALESCE(new.shipping_comments, ''::text) ELSE ''::text END, CASE WHEN new.transit_type THEN COALESCE(public.getcostcatid(new.default_cost_category), (-1)) ELSE NULL::integer END, COALESCE(public.getsitetypeid(new.type), (-1)), COALESCE(new.scheduling_sequence, 0)); !DROP RULE "_INSERT" ON api.site; apiadminfalse828828828828828828828828828828828828828828828828828828828828828828828828828161416031481127182816659718281037828828828828828828828828828828828828828828828828828828828194082882817219438288281607139782882882826182009342_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO sitezone DO INSTEAD INSERT INTO public.whsezone (whsezone_warehous_id, whsezone_name, whsezone_descrip) VALUES (public.getwarehousid((new.site)::text, 'ACTIVE'::text), COALESCE(new.name, ''::character varying), COALESCE(new.description, ''::text)); %DROP RULE "_INSERT" ON api.sitezone; apiadminfalse829829829162423882982926182009350_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO task DO INSTEAD INSERT INTO public.prjtask (prjtask_prj_id, prjtask_number, prjtask_name, prjtask_descrip, prjtask_owner_username, prjtask_username, prjtask_hours_budget, prjtask_hours_actual, prjtask_exp_budget, prjtask_exp_actual, prjtask_status, prjtask_due_date, prjtask_assigned_date, prjtask_start_date, prjtask_completed_date) VALUES (public.getprjid(new.project_number), new.number, COALESCE(new.name, ''::text), COALESCE(new.description, ''::text), COALESCE(new.owner, public.geteffectivextuser()), COALESCE(new.assigned_to, public.geteffectivextuser()), COALESCE(new.hours_budgeted, (0)::numeric), COALESCE(new.hours_actual, (0)::numeric), COALESCE(new.expenses_budgeted, (0)::numeric), COALESCE(new.expenses_actual, (0)::numeric), CASE WHEN (new.status = 'In-Process'::text) THEN 'O'::text WHEN (new.status = 'Completed'::text) THEN 'C'::text ELSE 'P'::text END, new.due, new.assigned, new.started, new.completed); !DROP RULE "_INSERT" ON api.task; apiadminfalse8308308308308308301821588141283083083083083083083083083083083026182009359_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO taskcomment DO INSTEAD INSERT INTO public.comment (comment_date, comment_source, comment_source_id, comment_user, comment_cmnttype_id, comment_text) VALUES (COALESCE(new.date, now()), 'TA'::text, public.getprjtaskid((new.project_number)::text, (new.task_number)::text), COALESCE(new.username, public.geteffectivextuser()), public.getcmnttypeid(new.type), new.text); (DROP RULE "_INSERT" ON api.taskcomment; apiadminfalse83183183114128318318311881319831831158926182009367_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO todo DO INSTEAD SELECT public.createtodoitem(NULL::integer, new.assigned_to, COALESCE(new.task_name, ''::text), COALESCE(new.description, ''::text), public.getincidentid(new.incident), COALESCE(public.getincdtcrmacctid(new.incident), public.getcrmacctid(new.account)), public.getopheadid(new.opportunity), CASE WHEN (new.date_started > ''::text) THEN (new.date_started)::date ELSE NULL::date END, CASE WHEN (new.date_due > ''::text) THEN (new.date_due)::date ELSE NULL::date END, (CASE WHEN (new.status = 'Pending Input'::text) THEN 'P'::text WHEN (new.status = 'Deferred'::text) THEN 'D'::text ELSE 'N'::text END)::bpchar, CASE WHEN (new.date_assigned > ''::text) THEN (new.date_assigned)::date ELSE NULL::date END, CASE WHEN (new.date_completed > ''::text) THEN (new.date_completed)::date ELSE NULL::date END, public.getincdtpriorityid(new.priority), COALESCE(new.notes, ''::text), new.owner) AS createtodoitem; !DROP RULE "_INSERT" ON api.todo; apiadminfalse83215201532832832832832832156115188328328321347128283283283283283283283226182009377_INSERTRULEd CREATE RULE "_INSERT" AS ON INSERT TO vendor DO INSTEAD INSERT INTO public.vendinfo (vend_name, vend_lastpurchdate, vend_active, vend_po, vend_comments, vend_pocomments, vend_number, vend_1099, vend_exported, vend_fobsource, vend_fob, vend_terms_id, vend_shipvia, vend_vendtype_id, vend_qualified, vend_ediemail, vend_ediemailbody, vend_edisubject, vend_edifilename, vend_accntnum, vend_emailpodelivery, vend_restrictpurch, vend_edicc, vend_curr_id, vend_cntct1_id, vend_cntct2_id, vend_addr_id, vend_match, vend_taxzone_id, vend_ach_routingnumber, vend_ach_accntnumber, vend_accnt_id, vend_expcat_id, vend_tax_id) VALUES (COALESCE(new.vendor_name, ''::text), NULL::date, COALESCE(new.active, true), COALESCE(new.sells_purchase_order_items, false), COALESCE(new.notes, ''::text), COALESCE(new.po_comments, ''::text), COALESCE(new.vendor_number, ''::character varying), COALESCE(new.receives_1099, false), false, CASE WHEN (new.default_fob = 'Receiving Site'::text) THEN 'W'::text ELSE 'V'::text END, CASE WHEN (new.default_fob = 'Receiving Site'::text) THEN ''::text ELSE new.default_fob END, COALESCE((public.gettermsid(new.default_terms))::numeric, public.fetchmetricvalue('DefaultTerms'::text)), COALESCE(new.ship_via, public.fetchdefaultshipvia()), public.getvendtypeid(new.vendor_type), COALESCE(new.qualified, false), COALESCE(new.po_edi_email, ''::text), COALESCE(new.po_edi_emailbody, ''::text), COALESCE(new.po_edi_subject, ''::text), COALESCE(new.po_edi_filename, ''::text), COALESCE(new.account_number, ''::text), COALESCE(new.allow_email_po_delivery, false), COALESCE(new.may_only_sell_item_source, false), COALESCE(new.po_edi_cc, ''::text), COALESCE(public.getcurrid((new.default_currency)::text), public.basecurrid()), public.savecntct(public.getcntctid(new.contact1_number), new.contact1_number, NULL::integer, new.contact1_honorific, new.contact1_first, new.contact1_middle, new.contact1_last, new.contact1_suffix, new.contact1_voice, new.contact1_alternate, new.contact1_fax, new.contact1_email, new.contact1_web, new.contact1_job_title, new.contact1_change), public.savecntct(public.getcntctid(new.contact2_number), new.contact2_number, NULL::integer, new.contact2_honorific, new.contact2_first, new.contact2_middle, new.contact2_last, new.contact2_suffix, new.contact2_voice, new.contact2_alternate, new.contact2_fax, new.contact2_email, new.contact2_web, new.contact2_job_title, new.contact2_change), public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postalcode, new.country, new.address_change), COALESCE(new.matching_vo_po_amounts, false), public.gettaxzoneid(new.default_tax_zone), ''::bytea, ''::bytea, COALESCE(public.getglaccntid(new.default_dist_gl_account), (-1)), COALESCE(public.getexpcatid(new.default_dist_expense_category), (-1)), COALESCE(public.gettaxid(new.default_dist_tax_code), (-1))); #DROP RULE "_INSERT" ON api.vendor; apiadminfalse833833833833833833833833139783383383383383383383383383383312718331615101897183383383383383383383383383383383383383383315808338338338331622135819401581943833161283383383383383383383383383383383383383383383314148338338338338338338338331614833148183326182009387_INSERTRULE7CREATE RULE "_INSERT" AS ON INSERT TO vendoraddress DO INSTEAD INSERT INTO public.vendaddrinfo (vendaddr_vend_id, vendaddr_code, vendaddr_name, vendaddr_comments, vendaddr_cntct_id, vendaddr_addr_id) VALUES (public.getvendid((new.vendor_number)::text), COALESCE(new.vendor_address_number, ''::character varying), COALESCE(new.vendor_address_name, ''::text), COALESCE(new.notes, ''::text), public.savecntct(public.getcntctid(new.contact_number), new.contact_number, public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postalcode, new.country, new.address_change), new.contact_honorific, new.contact_first, new.contact_middle, new.contact_last, new.contact_suffix, new.contact_voice, new.contact_alternate, new.contact_fax, new.contact_email, new.contact_web, new.contact_job_title, new.contact_change), public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postalcode, new.country, new.address_change)); *DROP RULE "_INSERT" ON api.vendoraddress; apiadminfalse834834834834127183483483483483483419438348341081834834834834834834834834834834834834834834194083424897183426182009394_INSERTRULECREATE RULE "_INSERT" AS ON INSERT TO vendortype DO INSTEAD INSERT INTO public.vendtype (vendtype_code, vendtype_descrip) VALUES (new.code, COALESCE(new.description, ''::text)); 'DROP RULE "_INSERT" ON api.vendortype; apiadminfalse835835835258835;26182009181 _INSERT_CHARRULECREATE RULE "_INSERT_CHAR" AS ON INSERT TO purchaseline DO INSTEAD INSERT INTO public.charass (charass_target_type, charass_target_id, charass_char_id, charass_value) SELECT 'PI', poitem.poitem_id, "char".char_id, charass.charass_value FROM public.pohead, public.poitem, public.charass, public."char", public.itemsite, public.item WHERE (((((((((pohead.pohead_number = (new.order_number)::text) AND (poitem.poitem_pohead_id = pohead.pohead_id)) AND (poitem.poitem_linenumber = new.line_number)) AND (itemsite.itemsite_id = poitem.poitem_itemsite_id)) AND (itemsite.itemsite_item_id = item.item_id)) AND (charass.charass_target_type = 'I'::text)) AND (charass.charass_target_id = item.item_id)) AND charass.charass_default) AND ("char".char_id = charass.charass_char_id)); .DROP RULE "_INSERT_CHAR" ON api.purchaseline; apiadminfalse81117817816817916918617917918618518618681181181116918617926181697736_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO salesline DO INSTEAD UPDATE public.coitem SET coitem_status = new.status, coitem_scheddate = new.scheduled_date, coitem_promdate = new.promise_date, coitem_qtyord = new.qty_ordered, coitem_qty_uom_id = public.getuomid(new.qty_uom), coitem_qty_invuomratio = public.itemuomtouomratio(item.item_id, public.getuomid(new.qty_uom), item.item_inv_uom_id), coitem_price = new.net_unit_price, coitem_price_uom_id = public.getuomid(new.price_uom), coitem_price_invuomratio = public.itemuomtouomratio(item.item_id, public.getuomid(new.price_uom), item.item_price_uom_id), coitem_memo = new.notes, coitem_order_type = CASE WHEN (((NOT old.create_order) AND new.create_order) AND (item.item_type = 'M'::bpchar)) THEN 'W'::text WHEN ((((NOT old.create_order) AND new.create_order) AND (item.item_type = 'P'::bpchar)) AND itemsite.itemsite_createsopo) THEN 'P'::text WHEN (((NOT old.create_order) AND new.create_order) AND (item.item_type = 'P'::bpchar)) THEN 'R'::text ELSE NULL::text END, coitem_substitute_item_id = public.getitemid(new.substitute_for), coitem_prcost = new.overwrite_po_price, coitem_taxtype_id = CASE WHEN (new.tax_type = 'None'::text) THEN NULL::integer ELSE public.gettaxtypeid(new.tax_type) END, coitem_warranty = new.warranty, coitem_cos_accnt_id = public.getglaccntid(new.alternate_cos_account), coitem_rev_accnt_id = public.getglaccntid(new.alternate_rev_account) FROM (public.item JOIN public.itemsite ON ((item.item_id = itemsite.itemsite_item_id))) WHERE ((((item.item_number = old.item_number) AND (coitem.coitem_cohead_id = public.getcoheadid((old.order_number)::text))) AND (coitem.coitem_id = public.getcoitemid((old.order_number)::text, (old.line_number)::text))) AND (coitem.coitem_subnumber = 0)); &DROP RULE "_UPDATE" ON api.salesline; apiadminfalse1801681681722108816171801613133810531481180169169168168177180177177180180180180180180180180180180180180180180180180168"26181747069_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO apmemo DO INSTEAD UPDATE public.apopen SET apopen_duedate = new.due_date, apopen_terms_id = public.gettermsid(new.terms), apopen_amount = new.amount, apopen_notes = new.notes WHERE ((apopen.apopen_docnumber = old.document_number) AND ((apopen.apopen_doctype)::text = CASE WHEN (old.document_type = 'Credit Memo'::text) THEN 'C'::text WHEN (old.document_type = 'Debit Memo'::text) THEN 'D'::text ELSE ''::text END)); #DROP RULE "_UPDATE" ON api.apmemo; apiadminfalse7237237231615155723155723723723723&26181747079_UPDATERULEbCREATE RULE "_UPDATE" AS ON UPDATE TO armemo DO INSTEAD UPDATE public.aropen SET aropen_duedate = new.due_date, aropen_terms_id = public.gettermsid(new.terms), aropen_salesrep_id = public.getsalesrepid(new.sales_rep), aropen_amount = new.amount, aropen_commission_due = new.commission_due, aropen_notes = new.notes, aropen_rsncode_id = public.getrsnid(new.reason_code) WHERE ((aropen.aropen_docnumber = old.document_number) AND ((aropen.aropen_doctype)::text = CASE WHEN (old.document_type = 'Credit Memo'::text) THEN 'C'::text WHEN (old.document_type = 'Debit Memo'::text) THEN 'D'::text ELSE ''::text END)); #DROP RULE "_UPDATE" ON api.armemo; apiadminfalse724159724724160072472472472415951615159724724724724*26181848168_UPDATERULEGCREATE RULE "_UPDATE" AS ON UPDATE TO physinvcount DO INSTEAD NOTHING; )DROP RULE "_UPDATE" ON api.physinvcount; apiadminfalse725725725.26182008626_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO account DO INSTEAD UPDATE public.crmacct SET crmacct_number = new.account_number, crmacct_parent_id = public.getcrmacctid(new.parent_account), crmacct_name = new.account_name, crmacct_active = new.active, crmacct_type = CASE WHEN (new.type = 'Individual'::text) THEN 'I'::text ELSE 'O'::text END, crmacct_cntct_id_1 = public.savecntct(public.getcntctid(new.primary_contact_number), new.primary_contact_number, public.saveaddr(public.getaddrid(new.primary_contact_address_number), new.primary_contact_address_number, new.primary_contact_address1, new.primary_contact_address2, new.primary_contact_address3, new.primary_contact_city, new.primary_contact_state, new.primary_contact_postalcode, new.primary_contact_country, new.primary_contact_address_change), new.primary_contact_honorific, new.primary_contact_first, new.primary_contact_middle, new.primary_contact_last, new.primary_contact_suffix, new.primary_contact_voice, NULL::text, new.primary_contact_fax, new.primary_contact_email, NULL::text, new.primary_contact_job_title, new.primary_contact_change), crmacct_cntct_id_2 = public.savecntct(public.getcntctid(new.secondary_contact_number), new.secondary_contact_number, public.saveaddr(public.getaddrid(new.secondary_contact_address_number), new.secondary_contact_address_number, new.secondary_contact_address1, new.secondary_contact_address2, new.secondary_contact_address3, new.secondary_contact_city, new.secondary_contact_state, new.secondary_contact_postalcode, new.secondary_contact_country, new.secondary_contact_address_change), new.secondary_contact_honorific, new.secondary_contact_first, new.secondary_contact_middle, new.secondary_contact_last, new.secondary_contact_suffix, new.secondary_contact_voice, NULL::text, new.secondary_contact_fax, new.secondary_contact_email, NULL::text, new.secondary_contact_job_title, new.secondary_contact_change), crmacct_notes = new.notes WHERE (crmacct.crmacct_number = (old.account_number)::text); $DROP RULE "_UPDATE" ON api.account; apiadminfalse7437431271971194015374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374374313477431943743226182008634_UPDATERULE\CREATE RULE "_UPDATE" AS ON UPDATE TO accountchar DO INSTEAD UPDATE public.charass SET charass_value = new.value WHERE (((charass.charass_target_type = 'CRMACCT'::text) AND (charass.charass_target_id = public.getcrmacctid((old.account_number)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'CRMACCT'::text))); (DROP RULE "_UPDATE" ON api.accountchar; apiadminfalse74418674413471861867447447441312626182008641_UPDATERULEICREATE RULE "_UPDATE" AS ON UPDATE TO accountcomment DO INSTEAD NOTHING; +DROP RULE "_UPDATE" ON api.accountcomment; apiadminfalse745745745:26182008648_UPDATERULE'CREATE RULE "_UPDATE" AS ON UPDATE TO accountfile DO INSTEAD UPDATE public.url SET url_title = new.title, url_url = new.url WHERE ((((url.url_source_id = public.getcrmacctid(old.account_number)) AND (url.url_source = 'CRMA'::text)) AND (url.url_title = old.title)) AND (url.url_url = old.url)); (DROP RULE "_UPDATE" ON api.accountfile; apiadminfalse7467461927461347192192192746746>26182008655_UPDATERULEUCREATE RULE "_UPDATE" AS ON UPDATE TO accountimage DO INSTEAD UPDATE public.imageass SET imageass_image_id = public.getimageid(new.image_name) WHERE (((imageass.imageass_source_id = public.getcrmacctid(old.account_number)) AND (imageass.imageass_source = 'CRMA'::text)) AND (imageass.imageass_image_id = public.getimageid(old.image_name))); )DROP RULE "_UPDATE" ON api.accountimage; apiadminfalse74774719574713471045195195747B26182008662_UPDATERULE'CREATE RULE "_UPDATE" AS ON UPDATE TO address DO INSTEAD SELECT public.saveaddr(public.getaddrid((new.address_number)::text), (new.address_number)::text, new.address1, new.address2, new.address3, new.city, new.state, new.postal_code, new.country, new.active, new.notes, new.change) AS saveaddr; $DROP RULE "_UPDATE" ON api.address; apiadminfalse74874874874874874812717481939748748748748748748F26182008669_UPDATERULESCREATE RULE "_UPDATE" AS ON UPDATE TO addresschar DO INSTEAD UPDATE public.charass SET charass_value = new.value WHERE (((charass.charass_target_type = 'ADDR'::text) AND (charass.charass_target_id = public.getaddrid((old.address_number)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'ADDR'::text))); (DROP RULE "_UPDATE" ON api.addresschar; apiadminfalse74974918618674912711312186749749J26182008676_UPDATERULEICREATE RULE "_UPDATE" AS ON UPDATE TO addresscomment DO INSTEAD NOTHING; +DROP RULE "_UPDATE" ON api.addresscomment; apiadminfalse750750750N26182008686_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO bom DO INSTEAD SELECT public.savebomhead(public.getitemid((new.item_number)::text), (new.revision)::text, new.revision_date, new.document_number, COALESCE(new.batch_size, (0)::numeric), new.total_qty_per) AS savebomhead; DROP RULE "_UPDATE" ON api.bom; apiadminfalse75175110537512022751751751751751R26182008695_UPDATERULE^CREATE RULE "_UPDATE" AS ON UPDATE TO bomitem DO INSTEAD UPDATE public.bomitem SET bomitem_issuemethod = CASE WHEN (new.issue_method = 'Mixed'::text) THEN 'M'::text WHEN (new.issue_method = 'Push'::text) THEN 'S'::text WHEN (new.issue_method = 'Pull'::text) THEN 'L'::text ELSE NULL::text END, bomitem_uom_id = public.getuomid(new.issue_uom), bomitem_qtyper = new.qty_per, bomitem_scrap = new.scrap, bomitem_effective = CASE WHEN (new.effective = 'Always'::text) THEN public.startoftime() ELSE (new.effective)::date END, bomitem_expires = CASE WHEN (new.expires = 'Never'::text) THEN public.endoftime() ELSE (new.expires)::date END, bomitem_createwo = new.create_child_wo, bomitem_booitem_seq_id = COALESCE(public.getbooitemseqid((new.bom_item_number)::text, new.used_at), (-1)), bomitem_schedatwooper = new.schedule_at_wo_operation, bomitem_ecn = new.ecn_number, bomitem_subtype = CASE WHEN (new.substitutions = 'No'::text) THEN 'N'::text WHEN (new.substitutions = 'Item-Defined'::text) THEN 'I'::text WHEN (new.substitutions = 'BOM-Defined'::text) THEN 'B'::text ELSE NULL::text END, bomitem_rev_id = public.getrevid('BOM'::text, (new.bom_item_number)::text, (new.bom_revision)::text), bomitem_char_id = public.getcharid(new.characteristic, 'I'::text), bomitem_value = new.value, bomitem_notes = new.notes, bomitem_ref = new.reference WHERE (bomitem.bomitem_id = old.id); $DROP RULE "_UPDATE" ON api.bomitem; apiadminfalse752752752752752752207775215501312159416171517527527527527527527527527527527527527521302V26182008704_UPDATERULEICREATE RULE "_UPDATE" AS ON UPDATE TO bomitemcomment DO INSTEAD NOTHING; +DROP RULE "_UPDATE" ON api.bomitemcomment; apiadminfalse753753753Z26182008712_UPDATERULEFCREATE RULE "_UPDATE" AS ON UPDATE TO bomitemsubstitute DO INSTEAD UPDATE public.bomitemsub SET bomitemsub_uomratio = new.sub_parent_uom_ratio, bomitemsub_rank = new.ranking WHERE ((bomitemsub.bomitemsub_bomitem_id = old.bomitem_id) AND (bomitemsub.bomitemsub_item_id = public.getitemid((old.substitute_item_number)::text))); .DROP RULE "_UPDATE" ON api.bomitemsubstitute; apiadminfalse7541053197754754754754754197^26182008719_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO budget DO INSTEAD UPDATE public.budghead SET budghead_name = new.name, budghead_descrip = new.description WHERE (budghead.budghead_name = old.name); #DROP RULE "_UPDATE" ON api.budget; apiadminfalse755755755198755b26182008726_UPDATERULENCREATE RULE "_UPDATE" AS ON UPDATE TO budgetentry DO INSTEAD UPDATE public.budgitem SET budgitem_amount = new.amount WHERE (((budgitem.budgitem_budghead_id = public.getbudgheadid(old.name)) AND (budgitem.budgitem_period_id = public.getperiodid(old.period_start))) AND (budgitem.budgitem_accnt_id = public.getglaccntid(old.account))); (DROP RULE "_UPDATE" ON api.budgetentry; apiadminfalse756153817092007567567561481756756200200f26182008735_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO cashreceipt DO INSTEAD UPDATE public.cashrcpt SET cashrcpt_amount = new.amount_received, cashrcpt_fundstype = CASE WHEN ((new.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((new.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((new.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((new.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((new.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((new.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((new.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((new.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((new.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, cashrcpt_docnumber = new.check_document_number, cashrcpt_bankaccnt_id = public.getbankaccntid(new.post_to), cashrcpt_notes = new.notes, cashrcpt_distdate = CASE WHEN (new.distribution_date > ''::text) THEN (new.distribution_date)::date ELSE NULL::date END, cashrcpt_salescat_id = public.getsalescatid(new.sales_category), cashrcpt_curr_id = public.getcurrid((new.currency)::text), cashrcpt_usecustdeposit = CASE WHEN (new.apply_balance_as = 'Customer Deposit'::text) THEN true ELSE false END WHERE (cashrcpt.cashrcpt_id = public.getcashrcptid((old.customer_number)::text, CASE WHEN ((old.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((old.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((old.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((old.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((old.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((old.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((old.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((old.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((old.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, (old.check_document_number)::text)); (DROP RULE "_UPDATE" ON api.cashreceipt; apiadminfalse7577571539757757757757757757757757757203757128815961358j26182008746_UPDATERULEECREATE RULE "_UPDATE" AS ON UPDATE TO cashreceiptapply DO INSTEAD UPDATE public.cashrcptitem SET cashrcptitem_amount = new.amount_to_apply, cashrcptitem_discount = new.cashrcptitem_discount WHERE ((cashrcptitem.cashrcptitem_cashrcpt_id = public.getcashrcptid((old.customer_number)::text, CASE WHEN ((old.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((old.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((old.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((old.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((old.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((old.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((old.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((old.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((old.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, (old.check_document_number)::text)) AND (cashrcptitem.cashrcptitem_aropen_id = public.getaropenid((old.customer_number)::text, (old.doc_type)::bpchar, (old.doc_number)::text))); -DROP RULE "_UPDATE" ON api.cashreceiptapply; apiadminfalse75812751539204758758758758758758758758204n26182008756_UPDATERULEECREATE RULE "_UPDATE" AS ON UPDATE TO cashreceiptapplymisc DO INSTEAD UPDATE public.cashrcptmisc SET cashrcptmisc_accnt_id = public.getglaccntid((new.account)::text), cashrcptmisc_amount = new.amount_to_distribute, cashrcptmisc_notes = new.notes WHERE ((cashrcptmisc.cashrcptmisc_cashrcpt_id = public.getcashrcptid((old.customer_number)::text, CASE WHEN ((old.funds_type)::text = 'Check'::text) THEN 'C'::text WHEN ((old.funds_type)::text = 'Certified Check'::text) THEN 'T'::text WHEN ((old.funds_type)::text = 'Master Card'::text) THEN 'M'::text WHEN ((old.funds_type)::text = 'Visa'::text) THEN 'V'::text WHEN ((old.funds_type)::text = 'American Express'::text) THEN 'A'::text WHEN ((old.funds_type)::text = 'Discover Card'::text) THEN 'D'::text WHEN ((old.funds_type)::text = 'Other Credit Card'::text) THEN 'R'::text WHEN ((old.funds_type)::text = 'Cash'::text) THEN 'K'::text WHEN ((old.funds_type)::text = 'Wire Transfer'::text) THEN 'W'::text ELSE 'O'::text END, (old.check_document_number)::text)) AND (cashrcptmisc.cashrcptmisc_accnt_id = public.getglaccntid((old.account)::text))); 1DROP RULE "_UPDATE" ON api.cashreceiptapplymisc; apiadminfalse75975914812057597597597597597591539205r26182008765_UPDATERULEGCREATE RULE "_UPDATE" AS ON UPDATE TO contact DO INSTEAD SELECT public.savecntct(public.getcntctid((new.contact_number)::text), (new.contact_number)::text, public.getcrmacctid(new.crm_account), public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postal_code, new.country, new.address_change), new.honorific, new.first, new.middle, new.last, new.suffix, new.initials, new.active, new.voice, new.alternate, new.fax, new.email, new.web, new.notes, new.job_title, new.contact_change) AS savecntct; $DROP RULE "_UPDATE" ON api.contact; apiadminfalse7607607607607609717607607607607607607607607607601940134776019421271760760760760760760760760760760760760v26182008772_UPDATERULENCREATE RULE "_UPDATE" AS ON UPDATE TO contactchar DO INSTEAD UPDATE public.charass SET charass_value = new.value WHERE (((charass.charass_target_type = 'CNTCT'::text) AND (charass.charass_target_id = public.getcntctid(old.contact_number))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'CNTCT'::text))); (DROP RULE "_UPDATE" ON api.contactchar; apiadminfalse7617619711312186186761761761186z26182008779_UPDATERULEICREATE RULE "_UPDATE" AS ON UPDATE TO contactcomment DO INSTEAD NOTHING; +DROP RULE "_UPDATE" ON api.contactcomment; apiadminfalse762762762~26182008788_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO creditmemo DO INSTEAD UPDATE public.cmhead SET cmhead_custponumber = new.customer_po_number, cmhead_docdate = new.memo_date, cmhead_shipto_id = COALESCE(public.getshiptoid(new.customer_number, new.shipto_number), (-1)), cmhead_shipto_name = new.shipto_name, cmhead_shipto_address1 = new.shipto_address1, cmhead_shipto_address2 = new.shipto_address2, cmhead_shipto_address3 = new.shipto_address3, cmhead_shipto_city = new.shipto_city, cmhead_shipto_state = new.shipto_state, cmhead_shipto_zipcode = new.shipto_postal_code, cmhead_shipto_country = new.shipto_country, cmhead_salesrep_id = public.getsalesrepid(new.sales_rep), cmhead_freight = COALESCE(new.freight, (0)::numeric), cmhead_misc = COALESCE(new.misc_charge_amount, (0)::numeric), cmhead_comments = new.notes, cmhead_billtoname = new.billto_name, cmhead_billtoaddress1 = new.billto_address1, cmhead_billtoaddress2 = new.billto_address2, cmhead_billtoaddress3 = new.billto_address3, cmhead_billtocity = new.billto_city, cmhead_billtostate = new.billto_state, cmhead_billtozip = new.billto_postal_code, cmhead_billtocountry = new.billto_country, cmhead_hold = COALESCE(new.on_hold, false), cmhead_commission = COALESCE(new.commission, (0)::numeric), cmhead_misc_accnt_id = COALESCE(public.getglaccntid(new.misc_charge_credit_account), (-1)), cmhead_misc_descrip = new.misc_charge_description, cmhead_rsncode_id = (SELECT rsncode.rsncode_id FROM public.rsncode WHERE (rsncode.rsncode_code = new.reason_code)), cmhead_curr_id = COALESCE(public.getcurrid((new.currency)::text), (-1)), cmhead_taxzone_id = public.gettaxzoneid(NULLIF(new.tax_zone, 'None'::text)) WHERE ((cmhead.cmhead_number = old.memo_number) AND (cmhead.cmhead_posted = false)); 'DROP RULE "_UPDATE" ON api.creditmemo; apiadminfalse7637637637637637637637637637637637637637637637637637631611481135816176376376376376376376376376376376376376316141605164164763160076376326182008799_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO creditmemoline DO INSTEAD SELECT public.updatecreditmemoline(new.*, old.*) AS updatecreditmemoline; +DROP RULE "_UPDATE" ON api.creditmemoline; apiadminfalse764764225376426182008806_UPDATERULEKCREATE RULE "_UPDATE" AS ON UPDATE TO custchar DO INSTEAD UPDATE public.charass SET charass_value = new.value WHERE (((charass.charass_target_type = 'C'::text) AND (charass.charass_target_id = public.getcustid((old.customer_number)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'C'::text))); %DROP RULE "_UPDATE" ON api.custchar; apiadminfalse7657651395186186765765765131218626182008813_UPDATERULEFCREATE RULE "_UPDATE" AS ON UPDATE TO custcomment DO INSTEAD NOTHING; (DROP RULE "_UPDATE" ON api.custcomment; apiadminfalse76676676626182008821_UPDATERULEICREATE RULE "_UPDATE" AS ON UPDATE TO custcreditcard DO INSTEAD NOTHING; +DROP RULE "_UPDATE" ON api.custcreditcard; apiadminfalse76776776726182008830_UPDATERULE CREATE RULE "_UPDATE" AS ON UPDATE TO customer DO INSTEAD UPDATE public.custinfo SET cust_active = new.active, cust_custtype_id = public.getcusttypeid(new.customer_type), cust_salesrep_id = public.getsalesrepid(new.sales_rep), cust_commprcnt = (new.commission * 0.01), cust_name = new.customer_name, cust_creditlmt = new.credit_limit, cust_creditrating = new.credit_rating, cust_backorder = new.accepts_backorders, cust_partialship = new.accepts_partial_shipments, cust_terms_id = public.gettermsid(new.default_terms), cust_discntprcnt = new.default_discount, cust_balmethod = CASE WHEN (new.balance_method = 'Balance Forward'::text) THEN 'B'::text WHEN (new.balance_method = 'Open Items'::text) THEN 'O'::text ELSE NULL::text END, cust_ffshipto = new.allow_free_form_shipto, cust_shipform_id = public.getshipformid(new.ship_form), cust_shipvia = new.ship_via, cust_blanketpos = new.uses_blanket_pos, cust_shipchrg_id = COALESCE(public.getshipchrgid(new.shipping_charges), (-1)), cust_creditstatus = CASE WHEN (new.credit_status = 'On Credit Warning'::text) THEN 'W'::text WHEN (new.credit_status = 'On Credit Hold'::text) THEN 'H'::text ELSE 'G'::text END, cust_comments = new.notes, cust_ffbillto = new.allow_free_form_billto, cust_usespos = new.uses_purchase_orders, cust_number = new.customer_number, cust_autoupdatestatus = new.credit_status_exceed_warn, cust_autoholdorders = new.credit_status_exceed_hold, cust_preferred_warehous_id = COALESCE(public.getwarehousid(new.preferred_selling_site, 'ACTIVE'::text), (-1)), cust_curr_id = public.getcurrid((new.default_currency)::text), cust_creditlmt_curr_id = public.getcurrid((new.credit_limit_currency)::text), cust_cntct_id = public.savecntct(public.getcntctid(new.billing_contact_number, false), new.billing_contact_number, public.saveaddr(public.getaddrid(new.billing_contact_address_number), new.billing_contact_address_number, new.billing_contact_address1, new.billing_contact_address2, new.billing_contact_address3, new.billing_contact_city, new.billing_contact_state, new.billing_contact_postalcode, new.billing_contact_country, new.billing_contact_address_change), new.billing_contact_honorific, new.billing_contact_first, new.billing_contact_middle, new.billing_contact_last, new.billing_contact_suffix, new.billing_contact_voice, new.billing_contact_alternate, new.billing_contact_fax, new.billing_contact_email, new.billing_contact_web, new.billing_contact_job_title, new.billing_contact_change), cust_corrcntct_id = public.savecntct(public.getcntctid(new.correspond_contact_number, false), new.correspond_contact_number, public.saveaddr(public.getaddrid(new.correspond_contact_address_number), new.correspond_contact_address_number, new.correspond_contact_address1, new.correspond_contact_address2, new.correspond_contact_address3, new.correspond_contact_city, new.correspond_contact_state, new.correspond_contact_postalcode, new.correspond_contact_country, new.correspond_contact_address_change), new.correspond_contact_honorific, new.correspond_contact_first, new.correspond_contact_middle, new.correspond_contact_last, new.correspond_contact_suffix, new.correspond_contact_voice, new.correspond_contact_alternate, new.correspond_contact_fax, new.correspond_contact_email, new.correspond_contact_web, new.correspond_contact_job_title, new.correspond_contact_change), cust_taxzone_id = public.gettaxzoneid(new.default_tax_zone), cust_gracedays = CASE WHEN (COALESCE(new.alternate_grace_days, 0) > 0) THEN new.alternate_grace_days ELSE NULL::integer END WHERE (custinfo.cust_id = public.getcustid((old.customer_number)::text)); %DROP RULE "_UPDATE" ON api.customer; apiadminfalse768768768768768768768768768768768768768768768768768768768768768768768768768768768768194076876876876876876876876876816076876876876876876876816151600160313951324127176813581400160216141624194376876876876876876876876876876876876876876876876876876876876876876876876876876876876876876826182008845_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO customertype DO INSTEAD UPDATE public.custtype SET custtype_code = new.code, custtype_descrip = new.description, custtype_char = new.enable_characteristics_profile WHERE (custtype.custtype_code = (old.code)::text); )DROP RULE "_UPDATE" ON api.customertype; apiadminfalse77020777077077077026182008852_UPDATERULEyCREATE RULE "_UPDATE" AS ON UPDATE TO customertypechar DO INSTEAD UPDATE public.charass SET charass_value = new.value, charass_default = new.is_default WHERE (((charass.charass_target_type = 'CT'::text) AND (charass.charass_target_id = public.getcusttypeid((old.customer_type)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'CT'::text))); -DROP RULE "_UPDATE" ON api.customertypechar; apiadminfalse7717711400771131218618618677177177126182008861_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO custshipto DO INSTEAD UPDATE public.shiptoinfo SET shipto_cust_id = public.getcustid((new.customer_number)::text), shipto_name = new.name, shipto_salesrep_id = public.getsalesrepid(new.sales_rep), shipto_comments = new.general_notes, shipto_shipcomments = new.shipping_notes, shipto_shipzone_id = public.getshipzoneid(new.zone), shipto_shipvia = new.ship_via, shipto_commission = (new.commission / (100)::numeric), shipto_shipform_id = public.getshipformid(new.ship_form), shipto_shipchrg_id = public.getshipchrgid(new.shipping_charges), shipto_active = new.active, shipto_default = new.default_flag, shipto_num = old.shipto_number, shipto_ediprofile_id = CASE WHEN (new.edi_profile = 'No EDI'::text) THEN (-1) WHEN (new.edi_profile = 'Use Customer Master'::text) THEN (-2) ELSE public.getediprofileid(new.edi_profile) END, shipto_cntct_id = public.savecntct(public.getcntctid(new.contact_number), new.contact_number, NULL::integer, new.honorific, new.first, new.middle, new.last, new.suffix, new.phone, NULL::text, new.fax, new.email, NULL::text, new.job_title, new.contact_change), shipto_addr_id = public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postal_code, new.country, new.address_change), shipto_taxzone_id = public.gettaxzoneid(new.tax_zone) WHERE (shiptoinfo.shipto_id = public.getshiptoid((old.customer_number)::text, (old.shipto_number)::text)); 'DROP RULE "_UPDATE" ON api.custshipto; apiadminfalse7727727727727727727727727727727727727727727727727727727727727727727721600127119401943165160816021603139577297114091605161477277277277277277277277277277277277277226182008869_UPDATERULEGCREATE RULE "_UPDATE" AS ON UPDATE TO custtax DO INSTEAD UPDATE public.taxreg SET taxreg_number = new.registration_number WHERE (((taxreg.taxreg_rel_type = 'C'::bpchar) AND (taxreg.taxreg_rel_id = public.getcustid((old.customer_number)::text))) AND (taxreg.taxreg_taxauth_id = public.gettaxauthid((old.tax_authority)::text))); $DROP RULE "_UPDATE" ON api.custtax; apiadminfalse7732117737737731395161121121177326182008878_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO employee DO INSTEAD UPDATE public.emp SET emp_code = new.code, emp_number = new.number, emp_active = new.active, emp_startdate = new.start_date, emp_cntct_id = public.savecntct(public.getcntctid(new.contact_number), new.contact_number, public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postalcode, new.country, new.address_change), new.honorific, new.first, new.middle, new.last, new.suffix, new.voice, new.alternate, new.fax, new.email, new.web, new.job_title, new.contact_change), emp_warehous_id = public.getwarehousid(new.site, 'ALL'::text), emp_mgr_emp_id = (SELECT emp.emp_id FROM public.emp WHERE (emp.emp_code = new.manager_code)), emp_wage_type = CASE WHEN (new.wage_type = 'Hourly'::text) THEN 'H'::text WHEN (new.wage_type = 'Salaried'::text) THEN 'S'::text ELSE NULL::text END, emp_wage = new.wage, emp_wage_curr_id = COALESCE(public.getcurrid((new.wage_currency)::text), public.basecurrid()), emp_wage_period = CASE WHEN (new.wage_period = 'Hour'::text) THEN 'H'::text WHEN (new.wage_period = 'Day'::text) THEN 'D'::text WHEN (new.wage_period = 'Week'::text) THEN 'W'::text WHEN (new.wage_period = 'Biweek'::text) THEN 'BW'::text WHEN (new.wage_period = 'Month'::text) THEN 'M'::text WHEN (new.wage_period = 'Year'::text) THEN 'Y'::text ELSE NULL::text END, emp_dept_id = public.getdeptid(new.department), emp_shift_id = public.getshiftid(new.shift), emp_image_id = public.getimageid(new.image), emp_extrate = new.rate, emp_extrate_period = CASE WHEN (new.billing_period = 'Hour'::text) THEN 'H'::text WHEN (new.billing_period = 'Day'::text) THEN 'D'::text WHEN (new.billing_period = 'Week'::text) THEN 'W'::text WHEN (new.billing_period = 'Biweek'::text) THEN 'BW'::text WHEN (new.billing_period = 'Month'::text) THEN 'M'::text WHEN (new.billing_period = 'Year'::text) THEN 'Y'::text ELSE NULL::text END, emp_notes = COALESCE(new.notes, ''::text) WHERE (emp.emp_code = (old.code)::text); %DROP RULE "_UPDATE" ON api.employee; apiadminfalse77410337747747747747747747747747749711045774101812711405194019432142147747747747747747747747747747747747747747747747747747747747747747747747747747747741358162477477426182008886_UPDATERULEPCREATE RULE "_UPDATE" AS ON UPDATE TO employeechar DO INSTEAD UPDATE public.charass SET charass_value = new.value WHERE (((charass.charass_target_type = 'EMP'::text) AND (charass.charass_target_id = public.getempid((old.employee_code)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'EMP'::text))); )DROP RULE "_UPDATE" ON api.employeechar; apiadminfalse7757751312186186775775775186167026182008893_UPDATERULEJCREATE RULE "_UPDATE" AS ON UPDATE TO employeecomment DO INSTEAD NOTHING; ,DROP RULE "_UPDATE" ON api.employeecomment; apiadminfalse77677677626182008900_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO extshipmaint DO INSTEAD UPDATE public.shipdata SET shipdata_cohead_number = new.so_number, shipdata_shiphead_number = new.shipment_number, shipdata_void_ind = new.void, shipdata_shipper = new.shipper, shipdata_billing_option = new.billing_option, shipdata_weight = new.weight, shipdata_base_freight = new.base_freight, shipdata_base_freight_curr_id = public.getcurrid((new.base_freight_currency)::text), shipdata_total_freight = new.total_freight, shipdata_total_freight_curr_id = public.getcurrid((new.total_freight_currency)::text), shipdata_package_type = new.package_type, shipdata_cosmisc_tracknum = new.tracking_number, shipdata_cosmisc_packnum_tracknum = new.package_tracking_number, shipdata_lastupdated = new.last_updated WHERE ((((shipdata.shipdata_cohead_number = (old.so_number)::text) AND (shipdata.shipdata_shiphead_number = (old.shipment_number)::text)) AND (shipdata.shipdata_shipper = (old.shipper)::text)) AND (shipdata.shipdata_cosmisc_packnum_tracknum = (old.package_tracking_number)::text)); )DROP RULE "_UPDATE" ON api.extshipmaint; apiadminfalse777777777216777777216777777135877777721621677777777777777777777726182008908_UPDATERULEjCREATE RULE "_UPDATE" AS ON UPDATE TO freightpricingscheduleitem DO INSTEAD UPDATE public.ipsfreight SET ipsfreight_ipshead_id = public.getipsheadid((old.pricing_schedule)::text), ipsfreight_qtybreak = new.qty_break, ipsfreight_price = new.price, ipsfreight_type = CASE WHEN (new.price_type = 'Flat Rate'::text) THEN 'F'::text WHEN (new.price_type = 'Price Per UOM'::text) THEN 'P'::text ELSE NULL::text END, ipsfreight_warehous_id = CASE WHEN (new.from_site = 'Any'::text) THEN NULL::integer ELSE public.getwarehousid(new.from_site, 'All'::text) END, ipsfreight_shipzone_id = CASE WHEN (new.to_shipzone = 'Any'::text) THEN NULL::integer ELSE public.getshipzoneid(new.to_shipzone) END, ipsfreight_freightclass_id = CASE WHEN (new.freight_class = 'Any'::text) THEN NULL::integer ELSE public.getfreightclassid(new.freight_class) END, ipsfreight_shipvia = CASE WHEN (new.ship_via = 'Any'::text) THEN NULL::text ELSE new.ship_via END WHERE (((((((((ipsfreight.ipsfreight_ipshead_id = public.getipsheadid((old.pricing_schedule)::text)) AND (ipsfreight.ipsfreight_qtybreak = old.qty_break)) AND (ipsfreight.ipsfreight_price = old.price)) AND ((ipsfreight.ipsfreight_type)::text = CASE WHEN (old.price_type = 'Flat Rate'::text) THEN 'F'::text WHEN (old.price_type = 'Price Per UOM'::text) THEN 'P'::text ELSE NULL::text END)) AND ((ipsfreight.ipsfreight_warehous_id IS NULL) AND (old.from_site = 'Any'::text))) OR ((ipsfreight.ipsfreight_warehous_id = CASE WHEN (old.from_site = 'Any'::text) THEN 0 ELSE public.getwarehousid(old.from_site, 'All'::text) END) AND ((ipsfreight.ipsfreight_shipzone_id IS NULL) AND (old.to_shipzone = 'Any'::text)))) OR ((ipsfreight.ipsfreight_shipzone_id = CASE WHEN (old.to_shipzone = 'Any'::text) THEN 0 ELSE public.getshipzoneid(old.to_shipzone) END) AND ((ipsfreight.ipsfreight_freightclass_id IS NULL) AND (old.freight_class = 'Any'::text)))) OR ((ipsfreight.ipsfreight_freightclass_id = CASE WHEN (old.freight_class = 'Any'::text) THEN 0 ELSE public.getfreightclassid(old.freight_class) END) AND ((ipsfreight.ipsfreight_shipvia IS NULL) AND (old.ship_via = 'Any'::text)))) OR (ipsfreight.ipsfreight_shipvia = old.ship_via)); 7DROP RULE "_UPDATE" ON api.freightpricingscheduleitem; apiadminfalse778160821821821877816247782187787787781043100221821821821877877877877826182008919_UPDATERULE?CREATE RULE "_UPDATE" AS ON UPDATE TO glaccount DO INSTEAD UPDATE public.accnt SET accnt_number = new.account_number, accnt_descrip = new.description, accnt_comments = new.notes, accnt_profit = new.profit_center, accnt_sub = new.sub_account, accnt_type = CASE WHEN (new.type = 'Asset'::text) THEN 'A'::text WHEN (new.type = 'Liability'::text) THEN 'L'::text WHEN (new.type = 'Expense'::text) THEN 'E'::text WHEN (new.type = 'Revenue'::text) THEN 'R'::text WHEN (new.type = 'Equity'::text) THEN 'Q'::text ELSE NULL::text END, accnt_extref = new.ext_reference, accnt_company = new.company, accnt_forwardupdate = new.forward_update_trial_balances, accnt_subaccnttype_code = new.sub_type WHERE (accnt.accnt_id = public.getglaccntid((old.company)::text, (old.profit_center)::text, (old.account_number)::text, (old.sub_account)::text)); &DROP RULE "_UPDATE" ON api.glaccount; apiadminfalse779779150219977977977977977977977977977977926182008928_UPDATERULE@CREATE RULE "_UPDATE" AS ON UPDATE TO incident DO INSTEAD UPDATE public.incdt SET incdt_crmacct_id = public.getcrmacctid(new.crm_account), incdt_cntct_id = public.savecntct(public.getcntctid(new.contact_number), new.contact_number, NULL::integer, new.honorific, new.first, new.middle, new.last, new.suffix, new.phone, NULL::text, new.fax, new.email, NULL::text, new.job_title, new.contact_change), incdt_descrip = new.notes, incdt_summary = new.description, incdt_item_id = public.getitemid(new.item_number), incdt_status = CASE WHEN (new.status = 'New'::text) THEN 'N'::text WHEN (new.status = 'Feedback'::text) THEN 'F'::text WHEN (new.status = 'Confirmed'::text) THEN 'C'::text WHEN (new.status = 'Assigned'::text) THEN 'A'::text WHEN (new.status = 'Resolved'::text) THEN 'R'::text WHEN (new.status = 'Closed'::text) THEN 'L'::text ELSE NULL::text END, incdt_assigned_username = new.assigned_to, incdt_incdtcat_id = public.getincdtcatid(new.category), incdt_incdtseverity_id = public.getincdtseverityid(new.severity), incdt_incdtpriority_id = public.getincdtpriorityid(new.priority), incdt_incdtresolution_id = public.getincdtresolutionid(new.resolution), incdt_lotserial = new.lot_serial_number, incdt_ls_id = public.getlotserialid(new.item_number, new.lot_serial_number) WHERE (incdt.incdt_id = public.getincidentid(old.incident_number)); %DROP RULE "_UPDATE" ON api.incident; apiadminfalse78013471521152278078078078078078078078078078078078078078015415121532780971152010531555194378078078078078078078078078026182008936_UPDATERULESCREATE RULE "_UPDATE" AS ON UPDATE TO incidentchar DO INSTEAD UPDATE public.charass SET charass_value = new.value WHERE (((charass.charass_target_type = 'INCDT'::text) AND (charass.charass_target_id = public.getincidentid(old.incident_number))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'INCDT'::text))); )DROP RULE "_UPDATE" ON api.incidentchar; apiadminfalse7817811532186186781131218678178126182008944_UPDATERULEJCREATE RULE "_UPDATE" AS ON UPDATE TO incidentcomment DO INSTEAD NOTHING; ,DROP RULE "_UPDATE" ON api.incidentcomment; apiadminfalse78278278226182008950_UPDATERULE+CREATE RULE "_UPDATE" AS ON UPDATE TO incidentfile DO INSTEAD UPDATE public.url SET url_title = new.title, url_url = new.url WHERE ((((url.url_source_id = public.getincidentid(old.incident_number)) AND (url.url_source = 'INCDT'::text)) AND (url.url_title = old.title)) AND (url.url_url = old.url)); )DROP RULE "_UPDATE" ON api.incidentfile; apiadminfalse783783783192192153219219278378326182008957_UPDATERULEYCREATE RULE "_UPDATE" AS ON UPDATE TO incidentimage DO INSTEAD UPDATE public.imageass SET imageass_image_id = public.getimageid(new.image_name) WHERE (((imageass.imageass_source_id = public.getincidentid(old.incident_number)) AND (imageass.imageass_source = 'INCDT'::text)) AND (imageass.imageass_image_id = public.getimageid(old.image_name))); *DROP RULE "_UPDATE" ON api.incidentimage; apiadminfalse7847841951045784195153219578426182008966_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO invoice DO INSTEAD UPDATE public.invchead SET invchead_invcnumber = old.invoice_number, invchead_ordernumber = new.order_number, invchead_invcdate = new.invoice_date, invchead_shipdate = new.ship_date, invchead_orderdate = new.order_date, invchead_salesrep_id = public.getsalesrepid(new.sales_rep), invchead_commission = new.commission, invchead_taxzone_id = public.gettaxzoneid(NULLIF(new.tax_zone, 'None'::text)), invchead_terms_id = public.gettermsid(new.terms), invchead_cust_id = (SELECT public.getcustid(new.customer_number) AS getcustid), invchead_billto_name = new.billto_name, invchead_billto_address1 = new.billto_address1, invchead_billto_address2 = new.billto_address2, invchead_billto_address3 = new.billto_address3, invchead_billto_city = new.billto_city, invchead_billto_state = new.billto_state, invchead_billto_zipcode = new.billto_postal_code, invchead_billto_country = new.billto_country, invchead_billto_phone = new.billto_phone, invchead_shipto_id = COALESCE(public.getshiptoid(new.customer_number, new.shipto_number), (-1)), invchead_shipto_name = new.shipto_name, invchead_shipto_address1 = new.shipto_address1, invchead_shipto_address2 = new.shipto_address2, invchead_shipto_address3 = new.shipto_address3, invchead_shipto_city = new.shipto_city, invchead_shipto_state = new.shipto_state, invchead_shipto_zipcode = new.shipto_postal_code, invchead_shipto_country = new.shipto_country, invchead_shipto_phone = new.shipto_phone, invchead_ponumber = new.po_number, invchead_shipvia = new.ship_via, invchead_prj_id = COALESCE(public.getprjid(new.project_number), (-1)), invchead_fob = new.fob, invchead_misc_descrip = new.misc_charge_description, invchead_misc_amount = new.misc_charge, invchead_misc_accnt_id = COALESCE(public.getglaccntid(new.misc_charge_account_number), (-1)), invchead_freight = new.freight, invchead_curr_id = COALESCE(public.getcurrid((new.currency)::text), (-1)), invchead_payment = new.payment, invchead_notes = new.notes, invchead_saletype_id = public.getsaletypeid(new.sale_type), invchead_shipzone_id = public.getshipzoneid(new.shipto_shipzone) WHERE ((invchead.invchead_invcnumber = old.invoice_number) AND (invchead.invchead_posted = false)); $DROP RULE "_UPDATE" ON api.invoice; apiadminfalse785135878578578517378578578578578578578578578578578578578578578578578578578578516151600148178578578578578516081614139515881605160117378578578578578578578578578578578578578578578526182008977_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO invoiceline DO INSTEAD SELECT public.updateinvoicelineitem(new.*, old.*) AS updateinvoicelineitem; (DROP RULE "_UPDATE" ON api.invoiceline; apiadminfalse786786786225726182008986_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO item DO INSTEAD UPDATE public.item SET item_active = new.active, item_descrip1 = new.description1, item_descrip2 = new.description2, item_type = CASE WHEN (new.item_type = 'Purchased'::text) THEN 'P'::text WHEN (new.item_type = 'Manufactured'::text) THEN 'M'::text WHEN (new.item_type = 'Job'::text) THEN 'J'::text WHEN (new.item_type = 'Kit'::text) THEN 'K'::text WHEN (new.item_type = 'Phantom'::text) THEN 'F'::text WHEN (new.item_type = 'Reference'::text) THEN 'R'::text WHEN (new.item_type = 'Costing'::text) THEN 'S'::text WHEN (new.item_type = 'Tooling'::text) THEN 'T'::text WHEN (new.item_type = 'Outside Process'::text) THEN 'O'::text WHEN (new.item_type = 'Planning'::text) THEN 'L'::text WHEN (new.item_type = 'Breeder'::text) THEN 'B'::text WHEN (new.item_type = 'Co-Product'::text) THEN 'C'::text WHEN (new.item_type = 'By-Product'::text) THEN 'Y'::text ELSE NULL::text END, item_maxcost = new.maximum_desired_cost, item_classcode_id = public.getclasscodeid(new.class_code), item_inv_uom_id = public.getuomid(new.inventory_uom), item_picklist = new.pick_list_item, item_fractional = new.fractional, item_config = new.configured, item_sold = new.item_is_sold, item_prodcat_id = COALESCE(public.getprodcatid(new.product_category), (-1)), item_exclusive = new.exclusive, item_listprice = new.list_price, item_listcost = new.list_cost, item_price_uom_id = public.getuomid(new.list_price_uom), item_upccode = new.upc_code, item_prodweight = new.product_weight, item_packweight = new.packaging_weight, item_comments = new.notes, item_extdescrip = new.ext_description WHERE (item.item_id = public.getitemid((old.item_number)::text)); !DROP RULE "_UPDATE" ON api.item; apiadminfalse787787787787787787787787787787787787787787159016171681053787131678778778778778778778778778726182008994_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO itemalias DO INSTEAD UPDATE public.itemalias SET itemalias_number = new.alias_number, itemalias_usedescrip = new.use_description, itemalias_descrip1 = new.description1, itemalias_descrip2 = new.description2, itemalias_comments = new.comments WHERE ((itemalias.itemalias_item_id = public.getitemid((old.item_number)::text)) AND (itemalias.itemalias_number = old.alias_number)); &DROP RULE "_UPDATE" ON api.itemalias; apiadminfalse788788788788788788788226226105378826182009001_UPDATERULEiCREATE RULE "_UPDATE" AS ON UPDATE TO itemchar DO INSTEAD UPDATE public.charass SET charass_value = new.value, charass_default = new.is_default WHERE (((charass.charass_target_type = 'I'::text) AND (charass.charass_target_id = public.getitemid((old.item_number)::text))) AND (charass.charass_char_id = public.getcharid((old.characteristic)::text, 'I'::text))); %DROP RULE "_UPDATE" ON api.itemchar; apiadminfalse7897897897897891053789186186131218626182009008_UPDATERULEFCREATE RULE "_UPDATE" AS ON UPDATE TO itemcomment DO INSTEAD NOTHING; (DROP RULE "_UPDATE" ON api.itemcomment; apiadminfalse79079079026182009016_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO itemcost DO INSTEAD SELECT public.updateitemcost(public.getitemid((new.item_number)::text), public.getcostelemid((new.costing_element)::text), public.getcurrid((new.currency)::text), new.actual_cost, new.post_to_standard) AS updateitemcost; %DROP RULE "_UPDATE" ON api.itemcost; apiadminfalse791791791206179179179113587911342105326182009023_UPDATERULE#CREATE RULE "_UPDATE" AS ON UPDATE TO itemfile DO INSTEAD UPDATE public.url SET url_title = new.title, url_url = new.url WHERE ((((url.url_source_id = public.getitemid((old.item_number)::text)) AND (url.url_source = 'I'::text)) AND (url.url_title = old.title)) AND (url.url_url = old.url)); %DROP RULE "_UPDATE" ON api.itemfile; apiadminfalse792192192192792192105379279279226182009030_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO itemimage DO INSTEAD SELECT public.saveimageass('I'::text, public.getitemid((new.item_number)::text), (CASE WHEN (new.purpose = 'Product Description'::text) THEN 'P'::text WHEN (new.purpose = 'Inventory Description'::text) THEN 'I'::text WHEN (new.purpose = 'Engineering Reference'::text) THEN 'E'::text WHEN (new.purpose = 'Miscellaneous'::text) THEN 'M'::text ELSE 'X'::text END)::bpchar, public.getimageid(new.image_name)) AS saveimageass; &DROP RULE "_UPDATE" ON api.itemimage; apiadminfalse79379310531944793793793104526182009039_UPDATERULE- CREATE RULE "_UPDATE" AS ON UPDATE TO itemsite DO INSTEAD UPDATE public.itemsite SET itemsite_active = new.active, itemsite_dropship = new.dropship, itemsite_posupply = new.po_supplied_at_site, itemsite_createpr = new.create_prs, itemsite_wosupply = new.wo_supplied_at_site, itemsite_createwo = new.create_wos, itemsite_createsopr = new.create_soprs, itemsite_createsopo = new.create_sopos, itemsite_sold = new.sold_from_site, itemsite_soldranking = new.ranking, itemsite_costmethod = CASE WHEN (new.cost_method = 'None'::text) THEN 'N'::text WHEN (new.cost_method = 'Average'::text) THEN 'A'::text WHEN (new.cost_method = 'Standard'::text) THEN 'S'::text WHEN (new.cost_method = 'Job'::text) THEN 'J'::text ELSE NULL::text END, itemsite_controlmethod = CASE WHEN (new.control_method = 'None'::text) THEN 'N'::text WHEN (new.control_method = 'Regular'::text) THEN 'R'::text WHEN (new.control_method = 'Serial #'::text) THEN 'S'::text WHEN (new.control_method = 'Lot #'::text) THEN 'L'::text ELSE NULL::text END, itemsite_perishable = new.perishable, itemsite_plancode_id = public.getplancodeid(new.planner_code), itemsite_costcat_id = public.getcostcatid(new.cost_category), itemsite_loccntrl = new.multiple_location_control, itemsite_location_id = CASE WHEN (new.location = 'N/A'::text) THEN (-1) ELSE public.getlocationid((new.site)::text, new.location) END, itemsite_location = new.user_defined_location, itemsite_location_comments = new.user_defined_location, itemsite_disallowblankwip = new.disallow_blank_wip_locations, itemsite_stocked = new.stocked, itemsite_abcclass = new.abc_class, itemsite_autoabcclass = new.allow_automatic_updates, itemsite_cyclecountfreq = new.cycl_cnt_freq, itemsite_eventfence = new.event_fence, itemsite_useparams = new.enforce_order_parameters, itemsite_reorderlevel = new.reorder_level, itemsite_ordertoqty = new.order_up_to, itemsite_minordqty = new.minimum_order, itemsite_maxordqty = new.maximum_order, itemsite_multordqty = new.order_multiple, itemsite_useparamsmanual = new.enforce_on_manual_orders, itemsite_ordergroup = new.group_mps_mrp_orders, itemsite_ordergroup_first = new.first_group, itemsite_mps_timefence = new.mps_time_fence, itemsite_leadtime = new.lead_time, itemsite_safetystock = new.safety_stock, itemsite_supply_itemsite_id = CASE WHEN (new.supplied_from_site = 'None'::text) THEN NULL::integer WHEN (new.supplied_from_site = ''::text) THEN NULL::integer ELSE public.getitemsiteid(new.supplied_from_site, (new.item_number)::text) END, itemsite_notes = new.notes, itemsite_warrpurc = new.require_warranty, itemsite_autoreg = new.auto_register, itemsite_planning_type = CASE WHEN (new.planning_system = 'None'::text) THEN 'N'::text WHEN (new.planning_system = 'MPS'::text) THEN 'S'::text ELSE 'M'::text END WHERE (itemsite.itemsite_id = public.getitemsiteid((old.site)::text, (old.item_number)::text)); %DROP RULE "_UPDATE" ON api.itemsite; apiadminfalse794794794794794794794794794794794794169794794794794794794794794794794794794794794794794794794155415847947947947947947947947947947947947947947941665794154626182009048_UPDATERULEJCREATE RULE "_UPDATE" AS ON UPDATE TO itemsitecomment DO INSTEAD NOTHING; ,DROP RULE "_UPDATE" ON api.itemsitecomment; apiadminfalse79579579526182009057_UPDATERULE/CREATE RULE "_UPDATE" AS ON UPDATE TO itemsource DO INSTEAD UPDATE public.itemsrc SET itemsrc_vend_item_number = new.vendor_item_number, itemsrc_vend_item_descrip = new.vendor_description, itemsrc_comments = new.notes, itemsrc_vend_uom = new.vendor_uom, itemsrc_invvendoruomratio = new.inventory_vendor_uom_ratio, itemsrc_minordqty = new.minimum_order, itemsrc_multordqty = new.order_multiple, itemsrc_leadtime = new.lead_time, itemsrc_ranking = new.vendor_ranking, itemsrc_active = new.active, itemsrc_default = new.itemsrc_default, itemsrc_manuf_name = new.manufacturer_name, itemsrc_manuf_item_number = new.manufacturer_item_number, itemsrc_manuf_item_descrip = new.manufacturer_description, itemsrc_upccode = new.bar_code, itemsrc_contrct_id = public.getcontrctid(new.contract_number), itemsrc_effective = COALESCE(public.getcontrcteffective(new.contract_number), new.effective_date), itemsrc_expires = COALESCE(public.getcontrctexpires(new.contract_number), new.expires_date) WHERE (((((itemsrc.itemsrc_item_id = public.getitemid((old.item_number)::text)) AND (itemsrc.itemsrc_vend_id = public.getvendid((old.vendor)::text))) AND (itemsrc.itemsrc_vend_item_number = old.vendor_item_number)) AND (itemsrc.itemsrc_manuf_name = old.manufacturer_name)) AND (itemsrc.itemsrc_manuf_item_number = old.manufacturer_item_number)); 'DROP RULE "_UPDATE" ON api.itemsource; apiadminfalse7967961331796796108179679679679679679679679679623223223279613252327967967961053133223279679679679679626182009067_UPDATERULEFCREATE RULE "_UPDATE" AS ON UPDATE TO itemsourceprice DO INSTEAD UPDATE public.itemsrcp SET itemsrcp_qtybreak = new.qty_break, itemsrcp_price = new.price_per_unit, itemsrcp_updated = now(), itemsrcp_curr_id = public.getcurrid((new.currency)::text), itemsrcp_dropship = COALESCE(new.dropship_only, false), itemsrcp_warehous_id = CASE WHEN (new.pricing_site = 'All'::text) THEN (-1) ELSE COALESCE(public.getwarehousid(new.pricing_site, 'ALL'::text), (-1)) END, itemsrcp_type = CASE WHEN (new.pricing_type = 'Discount'::text) THEN 'D'::text ELSE 'N'::text END, itemsrcp_discntprcnt = (COALESCE(new.discount_percent, 0.0) / 100.0), itemsrcp_fixedamtdiscount = new.discount_fixed_amount WHERE ((itemsrcp.itemsrcp_itemsrc_id = public.getitemsrcid((old.item_number)::text, (new.vendor)::text)) AND (itemsrcp.itemsrcp_qtybreak = old.qty_break)); ,DROP RULE "_UPDATE" ON api.itemsourceprice; apiadminfalse79779723379779779779779779779779779715481358162423379726182009075_UPDATERULEVCREATE RULE "_UPDATE" AS ON UPDATE TO itemsubstitute DO INSTEAD UPDATE public.itemsub SET itemsub_uomratio = new.sub_parent_uom_ratio, itemsub_rank = new.ranking WHERE ((itemsub.itemsub_parent_item_id = public.getitemid((old.root_item_number)::text)) AND (itemsub.itemsub_sub_item_id = public.getitemid((old.substitute_item_number)::text))); +DROP RULE "_UPDATE" ON api.itemsubstitute; apiadminfalse7987987987982347981053234798 26182009082_UPDATERULE^CREATE RULE "_UPDATE" AS ON UPDATE TO itemtaxtype DO INSTEAD UPDATE public.itemtax SET itemtax_taxzone_id = CASE WHEN ((new.tax_zone)::text = 'Any'::text) THEN NULL::integer ELSE public.gettaxzoneid((new.tax_zone)::text) END, itemtax_taxtype_id = public.gettaxtypeid(new.tax_type) WHERE (((itemtax.itemtax_item_id = public.getitemid((old.item_number)::text)) AND CASE WHEN ((old.tax_zone)::text = 'Any'::text) THEN (itemtax.itemtax_taxzone_id IS NULL) ELSE (itemtax.itemtax_taxzone_id = public.gettaxzoneid((old.tax_zone)::text)) END) AND (itemtax.itemtax_taxtype_id = public.gettaxtypeid(old.tax_type))); (DROP RULE "_UPDATE" ON api.itemtaxtype; apiadminfalse79910531613161479923523523579979979926182009089_UPDATERULErCREATE RULE "_UPDATE" AS ON UPDATE TO itemuomconversion DO INSTEAD SELECT public.saveitemuomconv(public.getitemid((new.item_number)::text), COALESCE(public.getuomid((new.uom)::text), (SELECT item.item_inv_uom_id FROM public.item WHERE (item.item_id = public.getitemid((new.item_number)::text)))), COALESCE(new.uom_value, (1)::numeric), COALESCE(public.getuomid(new.per_uom), (SELECT item.item_inv_uom_id FROM public.item WHERE (item.item_id = public.getitemid((new.item_number)::text)))), COALESCE(new.per_uom_value, (1)::numeric), COALESCE(new.fractional, false), public.getuomtypeid(new.selected_types)) AS saveitemuomconv; .DROP RULE "_UPDATE" ON api.itemuomconversion; apiadminfalse800800194880080080080016880080016171053161916880026182009097_UPDATERULEGCREATE RULE "_UPDATE" AS ON UPDATE TO journalentry DO INSTEAD NOTHING; )DROP RULE "_UPDATE" ON api.journalentry; apiadminfalse80180180126182009105_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO location DO INSTEAD UPDATE public.location SET location_name = new.location, location_descrip = new.description, location_restrict = new.restricted, location_netable = new.netable, location_whsezone_id = public.getwhsezoneid((new.site)::text, new.zone), location_aisle = new.aisle, location_rack = new.rack, location_bin = new.bin WHERE ((location.location_warehous_id = public.getwarehousid((old.site)::text, 'ACTIVE'::text)) AND (location.location_name = (old.location)::text)); %DROP RULE "_UPDATE" ON api.location; apiadminfalse8028028022308028028028021624162523080280280280226182009112_UPDATERULEGCREATE RULE "_UPDATE" AS ON UPDATE TO misccounttag DO INSTEAD NOTHING; )DROP RULE "_UPDATE" ON api.misccounttag; apiadminfalse80380380326182009120_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO pricingschedule DO INSTEAD UPDATE public.ipshead SET ipshead_descrip = new.description, ipshead_effective = CASE WHEN (new.effective = 'Always'::text) THEN '1970-01-01'::date ELSE (new.effective)::date END, ipshead_expires = CASE WHEN (new.expires = 'Never'::text) THEN '2100-01-01'::date ELSE (new.expires)::date END, ipshead_updated = now(), ipshead_curr_id = CASE WHEN (SELECT (count(ipsiteminfo.ipsitem_id) = 0) FROM public.ipsiteminfo WHERE (ipsiteminfo.ipsitem_ipshead_id = public.getipsheadid((old.name)::text))) THEN COALESCE(public.getcurrid((new.currency)::text), public.basecurrid()) ELSE public.getcurrid((old.currency)::text) END WHERE (ipshead.ipshead_name = (old.name)::text); ,DROP RULE "_UPDATE" ON api.pricingschedule; apiadminfalse804135810188042402191002804240804804804804#26182009129_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO pricingscheduleassign DO INSTEAD UPDATE public.ipsass SET ipsass_ipshead_id = public.getipsheadid((new.pricing_schedule)::text), ipsass_cust_id = CASE WHEN ((new.customer_number)::text = 'Any'::text) THEN (-1) ELSE public.getcustid((new.customer_number)::text) END, ipsass_custtype_id = CASE WHEN ((new.customer_type)::text = 'N/A'::text) THEN (-1) ELSE public.getcusttypeid((new.customer_type)::text) END, ipsass_custtype_pattern = new.customer_type_pattern, ipsass_shipto_id = CASE WHEN (((new.customer_number)::text = 'Any'::text) OR ((new.customer_shipto)::text = 'Any'::text)) THEN (-1) ELSE public.getshiptoid((new.customer_number)::text, (new.customer_shipto)::text) END, ipsass_shipto_pattern = new.customer_shipto_pattern WHERE ((((((ipsass.ipsass_ipshead_id = public.getipsheadid((old.pricing_schedule)::text)) AND (ipsass.ipsass_cust_id = CASE WHEN ((old.customer_number)::text = 'Any'::text) THEN (-1) ELSE public.getcustid((old.customer_number)::text) END)) AND (ipsass.ipsass_custtype_id = CASE WHEN ((old.customer_type)::text = 'N/A'::text) THEN (-1) ELSE public.getcusttypeid((old.customer_type)::text) END)) AND (ipsass.ipsass_custtype_pattern = (old.customer_type_pattern)::text)) AND (ipsass.ipsass_shipto_id = CASE WHEN ((old.customer_shipto)::text = 'Any'::text) THEN (-1) ELSE public.getshiptoid((old.customer_number)::text, (old.customer_shipto)::text) END)) AND (ipsass.ipsass_shipto_pattern = (old.customer_shipto_pattern)::text)); 2DROP RULE "_UPDATE" ON api.pricingscheduleassign; apiadminfalse8058058058052392398051395100223916051400239239239805805805'26182009139_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO pricingscheduleitem DO INSTEAD SELECT CASE WHEN ((old.type)::text = 'Item'::text) THEN public.saveipsitem(public.getipsitemid((old.pricing_schedule)::text, (old.item_number)::text, old.qty_break, (old.qty_uom)::text, (old.price_uom)::text), public.getipsheadid((new.pricing_schedule)::text), public.getitemid((new.item_number)::text), new.qty_break, new.price, public.getuomid((new.qty_uom)::text), public.getuomid((new.price_uom)::text), new.percent, new.fixedamt, CASE new.pricing_type WHEN 'Nominal'::text THEN 'N'::text WHEN 'Discount'::text THEN 'D'::text WHEN 'Markup'::text THEN 'M'::text ELSE '?'::text END) WHEN ((old.type)::text = 'Product Category'::text) THEN public.saveipsprodcat(public.getipsprodcatid((old.pricing_schedule)::text, (old.product_category)::text, old.qty_break), public.getipsheadid((new.pricing_schedule)::text), public.getprodcatid((new.product_category)::text), new.qty_break, new.percent, new.fixedamt, CASE new.pricing_type WHEN 'Nominal'::text THEN 'N'::text WHEN 'Discount'::text THEN 'D'::text WHEN 'Markup'::text THEN 'M'::text ELSE '?'::text END) ELSE NULL::integer END AS result; 0DROP RULE "_UPDATE" ON api.pricingscheduleitem; apiadminfalse80680680680680680680680619451535154580610028061590194610538061617806806+26182009148_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO pricingscheduleitemchar DO INSTEAD UPDATE public.ipsitemchar SET ipsitemchar_price = new.price WHERE (((ipsitemchar.ipsitemchar_ipsitem_id = public.getipsitemid((old.pricing_schedule)::text, (old.item_number)::text, old.qty_break, (old.qty_uom)::text, (old.price_uom)::text)) AND (ipsitemchar.ipsitemchar_char_id = public.getcharid((old.characteristic)::text, 'I'::text))) AND (ipsitemchar.ipsitemchar_value = (old.value)::text)); 4DROP RULE "_UPDATE" ON api.pricingscheduleitemchar; apiadminfalse80780780780780713128078078072422422421535807807/26182009155_UPDATERULEGCREATE RULE "_UPDATE" AS ON UPDATE TO project DO INSTEAD UPDATE public.prj SET prj_name = new.name, prj_descrip = new.description, prj_owner_username = new.owner, prj_username = new.assigned_to, prj_so = new.sales_orders, prj_wo = new.work_orders, prj_po = new.purchase_orders, prj_status = CASE WHEN (new.status = 'In-Process'::text) THEN 'O'::text WHEN (new.status = 'Completed'::text) THEN 'C'::text ELSE 'P'::text END, prj_due_date = new.due, prj_assigned_date = new.assigned, prj_start_date = new.started, prj_completed_date = new.completed WHERE (prj.prj_number = old.number); $DROP RULE "_UPDATE" ON api.project; apiadminfalse808808808808808808808808174808808808808808808808326182009162_UPDATERULEICREATE RULE "_UPDATE" AS ON UPDATE TO projectcomment DO INSTEAD NOTHING; +DROP RULE "_UPDATE" ON api.projectcomment; apiadminfalse809809809726182009171_UPDATERULE_CREATE RULE "_UPDATE" AS ON UPDATE TO prospect DO INSTEAD UPDATE public.prospect SET prospect_number = upper((new.prospect_number)::text), prospect_name = new.prospect_name, prospect_active = new.active, prospect_cntct_id = public.savecntct(public.getcntctid(new.contact_number), new.contact_number, public.saveaddr(public.getaddrid(new.contact_address_number), new.contact_address_number, new.contact_address1, new.contact_address2, new.contact_address3, new.contact_city, new.contact_state, new.contact_postalcode, new.contact_country, new.contact_address_change), new.contact_honorific, new.contact_first, new.contact_middle, new.contact_last, new.contact_suffix, new.contact_voice, new.contact_alternate, new.contact_fax, new.contact_email, new.contact_web, new.contact_job_title, new.contact_change), prospect_taxzone_id = public.gettaxzoneid(new.default_tax_zone), prospect_salesrep_id = public.getsalesrepid(new.sales_rep), prospect_warehous_id = public.getwarehousid(new.site_code, 'ACTIVE'::text), prospect_comments = new.notes WHERE (prospect.prospect_id = public.getprospectid((old.prospect_number)::text)); %DROP RULE "_UPDATE" ON api.prospect; apiadminfalse8108101624810194381081081081016148108108108108108108108108108108108108108108108101271810810810810244194081015918108108109711600<26182009183_UPDATERULEPCREATE RULE "_UPDATE" AS ON UPDATE TO purchaseline DO INSTEAD UPDATE public.poitem SET poitem_duedate = new.due_date, poitem_qty_ordered = new.qty_ordered, poitem_unitprice = new.unit_price, poitem_vend_item_number = new.vend_item_number, poitem_vend_item_descrip = new.vendor_description, poitem_manuf_name = new.manufacturer_name, poitem_manuf_item_number = new.manufacturer_item_number, poitem_manuf_item_descrip = new.manufacturer_description, poitem_comments = new.notes, poitem_freight = new.freight, poitem_prj_id = public.getprjid(new.project_number), poitem_bom_rev_id = public.getrevid('BOM'::text, old.item_number, new.bill_of_materials_revision), poitem_boo_rev_id = public.getrevid('BOO'::text, old.item_number, new.bill_of_operations_revision) WHERE (poitem.poitem_id = public.getpoitemid((old.order_number)::text, old.line_number)); )DROP RULE "_UPDATE" ON api.purchaseline; apiadminfalse811811159481181181181181117981181181181181181181181181181181115881586@26182009193_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO purchaselinechar DO INSTEAD SELECT DISTINCT public.updatecharassignment('PI'::text, poitem.poitem_id, charass.charass_char_id, new.value) AS updatecharassignment FROM public.pohead, public.poitem, public.itemsite, public.item, public.charass, public."char" WHERE (((((((((pohead.pohead_number = (old.order_number)::text) AND (pohead.pohead_id = poitem.poitem_pohead_id)) AND (poitem.poitem_linenumber = old.line_number)) AND (poitem.poitem_itemsite_id = itemsite.itemsite_id)) AND (item.item_id = itemsite.itemsite_item_id)) AND (charass.charass_target_type = 'I'::text)) AND (charass.charass_target_id = item.item_id)) AND ("char".char_id = charass.charass_char_id)) AND ("char".char_name = old.characteristic)); -DROP RULE "_UPDATE" ON api.purchaselinechar; apiadminfalse8121691798121851791858128121691861798121781681861788122110186179D26182009203_UPDATERULENCREATE RULE "_UPDATE" AS ON UPDATE TO purchaselinecomment DO INSTEAD NOTHING; 0DROP RULE "_UPDATE" ON api.purchaselinecomment; apiadminfalse813813813H26182009212_UPDATERULE CREATE RULE "_UPDATE" AS ON UPDATE TO purchaseorder DO INSTEAD UPDATE public.pohead SET pohead_terms_id = public.gettermsid(new.terms), pohead_taxzone_id = public.gettaxzoneid(new.tax_zone), pohead_warehous_id = public.getwarehousid(new.receiving_site, 'ALL'::text), pohead_agent_username = new.purchasing_agent, pohead_vendaddr_id = CASE WHEN (new.alt_address = 'MAIN'::text) THEN NULL::integer ELSE public.getvendaddrid(old.vendor_number, new.alt_address) END, pohead_fob = new.fob, pohead_shipvia = new.ship_via, pohead_curr_id = public.getcurrid((new.currency)::text), pohead_freight = new.freight, pohead_comments = new.notes, pohead_dropship = new.dropship, pohead_vend_cntct_id = public.getcntctid(new.vend_contact_number), pohead_vend_cntct_honorific = new.vend_cntct_honorific, pohead_vend_cntct_first_name = new.vend_cntct_first_name, pohead_vend_cntct_middle = new.vend_cntct_middle, pohead_vend_cntct_last_name = new.vend_cntct_last_name, pohead_vend_cntct_suffix = new.vend_cntct_suffix, pohead_vend_cntct_phone = new.vend_cntct_phone, pohead_vend_cntct_title = new.vend_cntct_title, pohead_vend_cntct_fax = new.vend_cntct_fax, pohead_vend_cntct_email = new.vend_cntct_email, pohead_vendaddress1 = new.vendaddress1, pohead_vendaddress2 = new.vendaddress2, pohead_vendaddress3 = new.vendaddress3, pohead_vendcity = new.vendcity, pohead_vendstate = new.vendstate, pohead_vendzipcode = new.vendzipcode, pohead_vendcountry = new.vendcountry, pohead_shipto_cntct_id = public.getcntctid(new.shipto_contact_number), pohead_shipto_cntct_honorific = new.shipto_cntct_honorific, pohead_shipto_cntct_first_name = new.shipto_cntct_first_name, pohead_shipto_cntct_middle = new.shipto_cntct_middle, pohead_shipto_cntct_last_name = new.shipto_cntct_last_name, pohead_shipto_cntct_suffix = new.shipto_cntct_suffix, pohead_shipto_cntct_phone = new.shipto_cntct_phone, pohead_shipto_cntct_title = new.shipto_cntct_title, pohead_shipto_cntct_fax = new.shipto_cntct_fax, pohead_shipto_cntct_email = new.shipto_cntct_email, pohead_shiptoaddress_id = public.getaddrid(new.shiptoaddress_number), pohead_shiptoaddress1 = new.shiptoaddress1, pohead_shiptoaddress2 = new.shiptoaddress2, pohead_shiptoaddress3 = new.shiptoaddress3, pohead_shiptocity = new.shiptocity, pohead_shiptostate = new.shiptostate, pohead_shiptozipcode = new.shiptozipcode, pohead_shiptocountry = new.shiptocountry, pohead_cohead_id = public.getcoheadid(new.sales_order_number) WHERE (pohead.pohead_number = (old.order_number)::text); *DROP RULE "_UPDATE" ON api.purchaseorder; apiadminfalse8148148148148148148148148148148148148148148149718141358814127181416151614814814108881481481481481481416248141621814178814814814814814814814814814814814814814814814814814814814814814814814L26182009220_UPDATERULEOCREATE RULE "_UPDATE" AS ON UPDATE TO purchaseordercomment DO INSTEAD NOTHING; 1DROP RULE "_UPDATE" ON api.purchaseordercomment; apiadminfalse815815815P26182009229_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO quote DO INSTEAD UPDATE public.quhead SET quhead_number = old.quote_number, quhead_cust_id = public.getcustid(new.customer_number, true), quhead_custponumber = new.cust_po_number, quhead_quotedate = new.quote_date, quhead_warehous_id = public.getwarehousid(new.site, 'SHIPPING'::text), quhead_shipto_id = public.getshiptoid(new.customer_number, new.shipto_number), quhead_shiptoname = new.shipto_name, quhead_shiptoaddress1 = new.shipto_address1, quhead_shiptoaddress2 = new.shipto_address2, quhead_shiptoaddress3 = new.shipto_address3, quhead_salesrep_id = public.getsalesrepid(new.sales_rep), quhead_terms_id = public.gettermsid(new.terms), quhead_fob = new.fob, quhead_shipvia = new.ship_via, quhead_shiptocity = new.shipto_city, quhead_shiptostate = new.shipto_state, quhead_shiptozipcode = new.shipto_postal_code, quhead_freight = new.freight, quhead_misc = new.misc_charge, quhead_ordercomments = new.order_notes, quhead_shipcomments = new.shipping_notes, quhead_shiptophone = new.shipto_phone, quhead_billtoname = new.billto_name, quhead_billtoaddress1 = new.billto_address1, quhead_billtoaddress2 = new.billto_address2, quhead_billtoaddress3 = new.billto_address3, quhead_billtocity = new.billto_city, quhead_billtostate = new.billto_state, quhead_billtozip = new.billto_postal_code, quhead_misc_accnt_id = public.getglaccntid(new.misc_account_number), quhead_misc_descrip = new.misc_charge_description, quhead_commission = new.commission, quhead_packdate = new.pack_date, quhead_prj_id = public.getprjid(new.project_number), quhead_billtocountry = new.billto_country, quhead_shiptocountry = new.shipto_country, quhead_curr_id = public.getcurrid((new.currency)::text), quhead_taxzone_id = public.gettaxzoneid(new.tax_zone), quhead_taxtype_id = public.gettaxtypeid(new.tax_type), quhead_expire = new.expire_date, quhead_saletype_id = public.getsaletypeid(new.sale_type), quhead_shipzone_id = public.getshipzoneid(new.shipto_shipzone) WHERE (quhead.quhead_number = (old.quote_number)::text); "DROP RULE "_UPDATE" ON api.quote; apiadminfalse816160516138161614816148116001588161513581624816816816816816816139981681681681681681624981681681681681681681681616018168168168168168168168168168168168168168168168168168168168161608816T26182009237_UPDATERULEGCREATE RULE "_UPDATE" AS ON UPDATE TO quotecomment DO INSTEAD NOTHING; )DROP RULE "_UPDATE" ON api.quotecomment; apiadminfalse817817817X26182009246_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO quoteline DO INSTEAD UPDATE public.quitem SET quitem_scheddate = new.scheduled_date, quitem_qtyord = new.qty_ordered, quitem_qty_uom_id = public.getuomid(new.qty_uom), quitem_qty_invuomratio = public.itemuomtouomratio(item.item_id, COALESCE(public.getuomid(new.qty_uom), item.item_inv_uom_id), item.item_inv_uom_id), quitem_price = new.net_unit_price, quitem_price_uom_id = public.getuomid(new.price_uom), quitem_price_invuomratio = public.itemuomtouomratio(item.item_id, COALESCE(public.getuomid(new.price_uom), item.item_inv_uom_id), item.item_inv_uom_id), quitem_memo = new.notes, quitem_createorder = new.create_order, quitem_order_warehous_id = public.getwarehousid(new.supplying_site, 'SHIPPING'::text), quitem_prcost = new.overwrite_po_price, quitem_taxtype_id = public.gettaxtypeid(new.tax_type) FROM public.item WHERE ((quitem.quitem_quhead_id = public.getquoteid(old.quote_number)) AND (quitem.quitem_linenumber = old.line_number)); &DROP RULE "_UPDATE" ON api.quoteline; apiadminfalse81817228181613818818818818168818818161715928181624818818818818818168250250\26182009256_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO quotelinechar DO INSTEAD SELECT DISTINCT public.updatecharassignment('QI'::text, quitem.quitem_id, charass.charass_char_id, new.value) AS updatecharassignment FROM public.quhead, public.quitem, public.itemsite, public.item, public.charass, public."char" WHERE (((((((((quhead.quhead_number = old.quote_number) AND (quhead.quhead_id = quitem.quitem_quhead_id)) AND (quitem.quitem_linenumber = old.line_number)) AND (quitem.quitem_itemsite_id = itemsite.itemsite_id)) AND (item.item_id = itemsite.itemsite_item_id)) AND (charass.charass_target_type = 'I'::text)) AND (charass.charass_target_id = item.item_id)) AND ("char".char_id = charass.charass_char_id)) AND ("char".char_name = old.characteristic)); *DROP RULE "_UPDATE" ON api.quotelinechar; apiadminfalse8192110250250185169169185250249819250819819819186186186249168819`26182009265_UPDATERULEKCREATE RULE "_UPDATE" AS ON UPDATE TO quotelinecomment DO INSTEAD NOTHING; -DROP RULE "_UPDATE" ON api.quotelinecomment; apiadminfalse820820820f26182009280_UPDATERULEGCREATE RULE "_UPDATE" AS ON UPDATE TO saleshistory DO INSTEAD NOTHING; )DROP RULE "_UPDATE" ON api.saleshistory; apiadminfalse822822822j26182009291_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO saleslinechar DO INSTEAD SELECT DISTINCT public.updatecharassignment('SI'::text, coitem.coitem_id, charass.charass_char_id, new.value, public.itemcharprice(item.item_id, "char".char_id, new.value, cohead.cohead_cust_id, cohead.cohead_shipto_id, coitem.coitem_qtyord, cohead.cohead_curr_id, cohead.cohead_orderdate)) AS updatecharassignment FROM public.cohead, public.coitem, public.itemsite, public.item, public.charass, public."char" WHERE (((((((((cohead.cohead_number = (old.order_number)::text) AND (cohead.cohead_id = coitem.coitem_cohead_id)) AND (coitem.coitem_id = public.getcoitemid((old.order_number)::text, old.line_number))) AND (coitem.coitem_itemsite_id = itemsite.itemsite_id)) AND (item.item_id = itemsite.itemsite_item_id)) AND (charass.charass_target_type = 'I'::text)) AND (charass.charass_target_id = item.item_id)) AND ("char".char_id = charass.charass_char_id)) AND ("char".char_name = old.characteristic)); *DROP RULE "_UPDATE" ON api.saleslinechar; apiadminfalse823176823169917717782382317620531338176185177185823186823186177176169169168176186176n26182009300_UPDATERULEKCREATE RULE "_UPDATE" AS ON UPDATE TO saleslinecomment DO INSTEAD NOTHING; -DROP RULE "_UPDATE" ON api.saleslinecomment; apiadminfalse824824824r26182009309_UPDATERULERCREATE RULE "_UPDATE" AS ON UPDATE TO salesorder DO INSTEAD UPDATE public.cohead SET cohead_number = old.order_number, cohead_cust_id = public.getcustid(new.customer_number), cohead_custponumber = new.cust_po_number, cohead_orderdate = new.order_date, cohead_warehous_id = public.getwarehousid(new.site, 'SHIPPING'::text), cohead_shipto_id = public.getshiptoid(new.customer_number, new.shipto_number), cohead_shiptoname = new.shipto_name, cohead_shiptoaddress1 = new.shipto_address1, cohead_shiptoaddress2 = new.shipto_address2, cohead_shiptoaddress3 = new.shipto_address3, cohead_salesrep_id = public.getsalesrepid(new.sales_rep), cohead_terms_id = public.gettermsid(new.terms), cohead_fob = new.fob, cohead_shipvia = new.ship_via, cohead_shiptocity = new.shipto_city, cohead_shiptostate = new.shipto_state, cohead_shiptozipcode = new.shipto_postal_code, cohead_freight = CASE WHEN new.calculate_freight THEN COALESCE((SELECT sum(freightdetail.freightdata_total) AS sum FROM public.freightdetail('SO'::text, public.getcoheadid((old.order_number)::text), public.getcustid(new.customer_number), public.getshiptoid(new.customer_number, new.shipto_number), new.order_date, new.ship_via, public.getcurrid((new.currency)::text)) freightdetail(freightdata_schedule, freightdata_from, freightdata_to, freightdata_shipvia, freightdata_freightclass, freightdata_weight, freightdata_uom, freightdata_price, freightdata_type, freightdata_total, freightdata_currency)), (0)::numeric) ELSE new.freight END, cohead_calcfreight = new.calculate_freight, cohead_misc = new.misc_charge, cohead_ordercomments = new.order_notes, cohead_shipcomments = new.shipping_notes, cohead_shiptophone = new.shipto_phone, cohead_shipchrg_id = public.getshipchrgid(new.shipping_chgs), cohead_shipform_id = public.getshipformid(new.shipping_form), cohead_billtoname = new.billto_name, cohead_billtoaddress1 = new.billto_address1, cohead_billtoaddress2 = new.billto_address2, cohead_billtoaddress3 = new.billto_address3, cohead_billtocity = new.billto_city, cohead_billtostate = new.billto_state, cohead_billtozipcode = new.billto_postal_code, cohead_misc_accnt_id = public.getglaccntid(new.misc_account_number), cohead_misc_descrip = new.misc_charge_description, cohead_commission = new.commission, cohead_holdtype = CASE WHEN (new.hold_type = 'Credit'::text) THEN 'C'::text WHEN (new.hold_type = 'Shipping'::text) THEN 'S'::text WHEN (new.hold_type = 'Packing'::text) THEN 'P'::text ELSE 'N'::text END, cohead_packdate = new.pack_date, cohead_prj_id = public.getprjid(new.project_number), cohead_shipcomplete = new.ship_complete, cohead_billtocountry = new.billto_country, cohead_shiptocountry = new.shipto_country, cohead_curr_id = public.getcurrid((new.currency)::text), cohead_taxzone_id = public.gettaxzoneid(new.tax_zone), cohead_lastupdated = ('now'::text)::timestamp(6) with time zone, cohead_shipto_cntct_id = public.getcntctid(new.shipto_contact_number), cohead_shipto_cntct_honorific = new.shipto_contact_honorific, cohead_shipto_cntct_first_name = new.shipto_contact_first, cohead_shipto_cntct_middle = new.shipto_contact_middle, cohead_shipto_cntct_last_name = new.shipto_contact_last, cohead_shipto_cntct_suffix = new.shipto_contact_suffix, cohead_shipto_cntct_phone = new.shipto_contact_phone, cohead_shipto_cntct_title = new.shipto_contact_title, cohead_shipto_cntct_fax = new.shipto_contact_fax, cohead_shipto_cntct_email = new.shipto_contact_email, cohead_billto_cntct_id = public.getcntctid(new.billto_contact_number), cohead_billto_cntct_honorific = new.billto_contact_name, cohead_billto_cntct_first_name = new.billto_contact_first, cohead_billto_cntct_middle = new.billto_contact_middle, cohead_billto_cntct_last_name = new.billto_contact_last, cohead_billto_cntct_suffix = new.billto_contact_suffix, cohead_billto_cntct_phone = new.billto_contact_phone, cohead_billto_cntct_title = new.billto_contact_title, cohead_billto_cntct_fax = new.billto_contct_fax, cohead_billto_cntct_email = new.billto_contact_email, cohead_saletype_id = public.getsaletypeid(new.sale_type), cohead_shipzone_id = public.getshipzoneid(new.shipto_shipzone) WHERE (cohead.cohead_number = (old.order_number)::text); 'DROP RULE "_UPDATE" ON api.salesorder; apiadminfalse825825825825825825162482582582582582582582582582582510888258251358825825160097117616148251605825825160882515881259161582582582582582513951601160382582582582582514818258258258258258258258258258258258258258258258258258258258258258251602825825825825825825825825825825825v26182009317_UPDATERULELCREATE RULE "_UPDATE" AS ON UPDATE TO salesordercomment DO INSTEAD NOTHING; .DROP RULE "_UPDATE" ON api.salesordercomment; apiadminfalse826826826z26182009325_UPDATERULEICREATE RULE "_UPDATE" AS ON UPDATE TO salesrep DO INSTEAD UPDATE public.salesrep SET salesrep_active = new.active, salesrep_number = new.number, salesrep_name = new.name, salesrep_commission = (new.commission_percent * 0.01), salesrep_emp_id = public.getempid(new.employee) WHERE (salesrep.salesrep_number = (old.number)::text); %DROP RULE "_UPDATE" ON api.salesrep; apiadminfalse8278271638278271670827827827~26182009334_UPDATERULE CREATE RULE "_UPDATE" AS ON UPDATE TO site DO INSTEAD UPDATE public.whsinfo SET warehous_descrip = new.description, warehous_fob = CASE WHEN new.inventory_type THEN new.default_fob ELSE NULL::text END, warehous_active = new.active, warehous_counttag_prefix = CASE WHEN new.inventory_type THEN new.next_count_tag_prefix ELSE NULL::text END, warehous_counttag_number = CASE WHEN new.inventory_type THEN new.next_count_tag_number ELSE NULL::integer END, warehous_bol_prefix = CASE WHEN new.inventory_type THEN new.next_bill_of_lading_prefix ELSE NULL::text END, warehous_bol_number = CASE WHEN new.inventory_type THEN new.next_bill_of_lading_number ELSE NULL::integer END, warehous_shipping = CASE WHEN new.inventory_type THEN new.shipping_site ELSE NULL::boolean END, warehous_useslips = CASE WHEN new.inventory_type THEN new.force_the_use_of_count_slips ELSE NULL::boolean END, warehous_usezones = CASE WHEN new.inventory_type THEN new.force_the_use_of_zones ELSE NULL::boolean END, warehous_aislesize = CASE WHEN new.inventory_type THEN new.aisle_size ELSE NULL::integer END, warehous_aislealpha = CASE WHEN new.inventory_type THEN new.aisle_allow_alpha_characters ELSE NULL::boolean END, warehous_racksize = CASE WHEN new.inventory_type THEN new.rack_size ELSE NULL::integer END, warehous_rackalpha = CASE WHEN new.inventory_type THEN new.rack_allow_alpha_characters ELSE NULL::boolean END, warehous_binsize = CASE WHEN new.inventory_type THEN new.bin_size ELSE NULL::integer END, warehous_binalpha = CASE WHEN new.inventory_type THEN new.bin_allow_alpha_characters ELSE NULL::boolean END, warehous_locationsize = CASE WHEN new.inventory_type THEN new.location_size ELSE NULL::integer END, warehous_locationalpha = CASE WHEN new.inventory_type THEN new.location_allow_alpha_characters ELSE NULL::boolean END, warehous_enforcearbl = CASE WHEN new.inventory_type THEN new.enforce_arbl_naming_convention ELSE NULL::boolean END, warehous_default_accnt_id = public.getglaccntid(new.post_unassigned_transactions_to), warehous_shipping_commission = CASE WHEN new.inventory_type THEN (new.shipping_commission * 0.01) ELSE NULL::numeric END, warehous_cntct_id = public.savecntct(public.getcntctid(new.contact_number), new.contact_number, NULL::integer, new.honorific, new.first, new.middle, new.last, new.suffix, new.phone, NULL::text, new.fax, new.email, NULL::text, new.job_title, new.contact_change), warehous_addr_id = public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postal_code, new.country, new.address_change), warehous_taxzone_id = CASE WHEN new.inventory_type THEN public.gettaxzoneid(new.tax_zone) ELSE NULL::integer END, warehous_transit = CASE WHEN new.inventory_type THEN false WHEN new.transit_type THEN true ELSE NULL::boolean END, warehous_shipform_id = CASE WHEN new.transit_type THEN public.getshipformid(new.default_shipping_form) ELSE NULL::integer END, warehous_shipvia_id = CASE WHEN new.transit_type THEN public.getshipviaid(new.default_ship_via) ELSE NULL::integer END, warehous_shipcomments = CASE WHEN new.transit_type THEN new.shipping_comments ELSE NULL::text END, warehous_costcat_id = CASE WHEN new.transit_type THEN public.getcostcatid(new.default_cost_category) ELSE NULL::integer END, warehous_sitetype_id = public.getsitetypeid(new.type), warehous_sequence = new.scheduling_sequence WHERE (whsinfo.warehous_id = public.getwarehousid((old.code)::text, 'ALL'::text)); !DROP RULE "_UPDATE" ON api.site; apiadminfalse828828828828828828828828828828828828828828828828828828828828828828828828828828828828194019431624148116658281603828828161416078288288289718281037828828828828828828828828828828828828828828828127117282882882826182009343_UPDATERULE CREATE RULE "_UPDATE" AS ON UPDATE TO sitezone DO INSTEAD UPDATE public.whsezone SET whsezone_descrip = new.description WHERE ((whsezone.whsezone_warehous_id = public.getwarehousid((old.site)::text, 'ACTIVE'::text)) AND (whsezone.whsezone_name = (old.name)::text)); %DROP RULE "_UPDATE" ON api.sitezone; apiadminfalse829238162482982982923882926182009352_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO task DO INSTEAD UPDATE public.prjtask SET prjtask_name = new.name, prjtask_descrip = new.description, prjtask_owner_username = new.owner, prjtask_username = new.assigned_to, prjtask_hours_budget = new.hours_budgeted, prjtask_hours_actual = new.hours_actual, prjtask_exp_budget = new.expenses_budgeted, prjtask_exp_actual = new.expenses_actual, prjtask_status = CASE WHEN (new.status = 'In-Process'::text) THEN 'O'::text WHEN (new.status = 'Completed'::text) THEN 'C'::text ELSE 'P'::text END, prjtask_due_date = new.due, prjtask_assigned_date = new.assigned, prjtask_start_date = new.started, prjtask_completed_date = new.completed WHERE ((prjtask.prjtask_prj_id = public.getprjid(old.project_number)) AND (prjtask.prjtask_number = old.number)); !DROP RULE "_UPDATE" ON api.task; apiadminfalse830830830830830830830830830830158883018283018283083083083083026182009360_UPDATERULEFCREATE RULE "_UPDATE" AS ON UPDATE TO taskcomment DO INSTEAD NOTHING; (DROP RULE "_UPDATE" ON api.taskcomment; apiadminfalse83183183126182009369_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO todo DO INSTEAD SELECT public.updatetodoitem(old.task_number, old.assigned_to, new.task_name, new.description, public.getincidentid(new.incident), COALESCE(public.getincdtcrmacctid(new.incident), public.getcrmacctid(new.account)), public.getopheadid(new.opportunity), CASE WHEN (new.date_started > ''::text) THEN (new.date_started)::date ELSE NULL::date END, CASE WHEN (new.date_due > ''::text) THEN (new.date_due)::date ELSE NULL::date END, (CASE WHEN (new.status = 'Pending Input'::text) THEN 'P'::text WHEN (new.status = 'Deferred'::text) THEN 'D'::text WHEN (new.status = 'Neither'::text) THEN 'N'::text ELSE NULL::text END)::bpchar, CASE WHEN (new.date_assigned > ''::text) THEN (new.date_assigned)::date ELSE NULL::date END, CASE WHEN (new.date_completed > ''::text) THEN (new.date_completed)::date ELSE NULL::date END, public.getincdtpriorityid(new.priority), new.notes, new.active, new.owner) AS updatetodoitem; !DROP RULE "_UPDATE" ON api.todo; apiadminfalse83215181520832832832832832156183283283220871532134783283283283283283283283283226182009379_UPDATERULE CREATE RULE "_UPDATE" AS ON UPDATE TO vendor DO INSTEAD UPDATE public.vendinfo SET vend_name = new.vendor_name, vend_active = new.active, vend_po = new.sells_purchase_order_items, vend_comments = new.notes, vend_pocomments = new.po_comments, vend_1099 = new.receives_1099, vend_fobsource = CASE WHEN (new.default_fob IS NULL) THEN NULL::text WHEN (new.default_fob = 'Receiving Site'::text) THEN 'W'::text ELSE 'V'::text END, vend_fob = CASE WHEN (new.default_fob IS NULL) THEN NULL::text WHEN (new.default_fob = 'Receiving Site'::text) THEN ''::text ELSE new.default_fob END, vend_terms_id = public.gettermsid(new.default_terms), vend_shipvia = new.ship_via, vend_vendtype_id = public.getvendtypeid(new.vendor_type), vend_qualified = new.qualified, vend_ediemail = new.po_edi_email, vend_ediemailbody = new.po_edi_emailbody, vend_edisubject = new.po_edi_subject, vend_edifilename = new.po_edi_filename, vend_accntnum = new.account_number, vend_emailpodelivery = new.allow_email_po_delivery, vend_restrictpurch = new.may_only_sell_item_source, vend_edicc = new.po_edi_cc, vend_curr_id = public.getcurrid((new.default_currency)::text), vend_cntct1_id = public.savecntct(public.getcntctid(new.contact1_number), new.contact1_number, NULL::integer, new.contact1_honorific, new.contact1_first, new.contact1_middle, new.contact1_last, new.contact1_suffix, new.contact1_voice, new.contact1_alternate, new.contact1_fax, new.contact1_email, new.contact1_web, new.contact1_job_title, new.contact1_change), vend_cntct2_id = public.savecntct(public.getcntctid(new.contact2_number), new.contact2_number, NULL::integer, new.contact2_honorific, new.contact2_first, new.contact2_middle, new.contact2_last, new.contact2_suffix, new.contact2_voice, new.contact2_alternate, new.contact2_fax, new.contact2_email, new.contact2_web, new.contact2_job_title, new.contact2_change), vend_addr_id = public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postalcode, new.country, new.address_change), vend_match = new.matching_vo_po_amounts, vend_taxzone_id = public.gettaxzoneid(new.default_tax_zone), vend_accnt_id = COALESCE(public.getglaccntid(new.default_dist_gl_account), (-1)), vend_expcat_id = COALESCE(public.getexpcatid(new.default_dist_expense_category), (-1)), vend_tax_id = COALESCE(public.gettaxid(new.default_dist_tax_code), (-1)) WHERE (vendinfo.vend_id = public.getvendid((old.vendor_number)::text)); #DROP RULE "_UPDATE" ON api.vendor; apiadminfalse8331271833971833148183383383316128338331614833833833833833141416228338338338338338338331940833833833833833833833833833833833833833833833833833833833833833194383316158331358833833833833833833833833833833833833833833833833158833833108183383326182009388_UPDATERULE_CREATE RULE "_UPDATE" AS ON UPDATE TO vendoraddress DO INSTEAD UPDATE public.vendaddrinfo SET vendaddr_vend_id = public.getvendid((new.vendor_number)::text), vendaddr_code = new.vendor_address_number, vendaddr_name = new.vendor_address_name, vendaddr_comments = new.notes, vendaddr_cntct_id = public.savecntct(public.getcntctid(new.contact_number), new.contact_number, public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postalcode, new.country, new.address_change), new.contact_honorific, new.contact_first, new.contact_middle, new.contact_last, new.contact_suffix, new.contact_voice, new.contact_alternate, new.contact_fax, new.contact_email, new.contact_web, new.contact_job_title, new.contact_change), vendaddr_addr_id = public.saveaddr(public.getaddrid(new.address_number), new.address_number, new.address1, new.address2, new.address3, new.city, new.state, new.postalcode, new.country, new.address_change) WHERE (vendaddrinfo.vendaddr_id = public.getvendaddrid((old.vendor_number)::text, (old.vendor_address_number)::text)); *DROP RULE "_UPDATE" ON api.vendoraddress; apiadminfalse8348341940834834834834971834194383483483483483483483483483483483483483483483424810811621834834127183483483483426182009395_UPDATERULECREATE RULE "_UPDATE" AS ON UPDATE TO vendortype DO INSTEAD UPDATE public.vendtype SET vendtype_code = new.code, vendtype_descrip = new.description WHERE (vendtype.vendtype_code = (old.code)::text); 'DROP RULE "_UPDATE" ON api.vendortype; apiadminfalse83525883583583526181697860_DELETERULE>CREATE RULE "_DELETE" AS ON DELETE TO url DO INSTEAD NOTHING; #DROP RULE "_DELETE" ON public.url; publicadminfalse19219219226181697862 _DELETE_FILERULECREATE RULE "_DELETE_FILE" AS ON DELETE TO url WHERE (old.url_stream IS NOT NULL) DO INSTEAD SELECT deletefile(old.url_id) AS deletefile; (DROP RULE "_DELETE_FILE" ON public.url; publicadminfalse192192192138919226181697863 _DELETE_URLRULECREATE RULE "_DELETE_URL" AS ON DELETE TO url WHERE (old.url_stream IS NULL) DO INSTEAD SELECT deleteurl(old.url_id) AS deleteurl; 'DROP RULE "_DELETE_URL" ON public.url; publicadminfalse192148919219219226181697864_INSERTRULE>CREATE RULE "_INSERT" AS ON INSERT TO url DO INSTEAD NOTHING; #DROP RULE "_INSERT" ON public.url; publicadminfalse19219219226181697866 _INSERT_FILERULECREATE RULE "_INSERT_FILE" AS ON INSERT TO url WHERE (new.url_stream IS NOT NULL) DO INSTEAD INSERT INTO docass (docass_id, docass_source_id, docass_source_type, docass_target_id, docass_target_type, docass_purpose) VALUES (COALESCE((new.url_id)::bigint, nextval('docass_docass_id_seq'::regclass)), new.url_source_id, new.url_source, createfile(new.url_title, new.url_url, new.url_stream), 'FILE'::text, 'S'::bpchar); (DROP RULE "_INSERT_FILE" ON public.url; publicadminfalse192192110019218919219219219319219219226181697867 _INSERT_URLRULECREATE RULE "_INSERT_URL" AS ON INSERT TO url WHERE (new.url_stream IS NULL) DO INSTEAD INSERT INTO docass (docass_id, docass_source_id, docass_source_type, docass_target_id, docass_target_type, docass_purpose) VALUES (COALESCE((new.url_id)::bigint, nextval('docass_docass_id_seq'::regclass)), new.url_source_id, new.url_source, createurl(new.url_title, new.url_url), 'URL'::text, 'S'::bpchar); 'DROP RULE "_INSERT_URL" ON public.url; publicadminfalse192110519218919219219219219219219326181697868_UPDATERULE>CREATE RULE "_UPDATE" AS ON UPDATE TO url DO INSTEAD NOTHING; #DROP RULE "_UPDATE" ON public.url; publicadminfalse19219219226181697870 _UPDATE_FILERULE9CREATE RULE "_UPDATE_FILE" AS ON UPDATE TO url WHERE (new.url_stream IS NOT NULL) DO INSTEAD UPDATE file SET file_title = new.url_title, file_stream = new.url_stream FROM docass WHERE (((docass.docass_id = old.url_id) AND (docass.docass_target_id = file.file_id)) AND (docass.docass_target_type = 'FILE'::text)); (DROP RULE "_UPDATE_FILE" ON public.url; publicadminfalse19219218918918919219219019219226181697871 _UPDATE_URLRULE0CREATE RULE "_UPDATE_URL" AS ON UPDATE TO url WHERE (new.url_stream IS NULL) DO INSTEAD UPDATE urlinfo SET url_title = new.url_title, url_url = new.url_url FROM docass WHERE (((docass.docass_id = old.url_id) AND (docass.docass_target_id = urlinfo.url_id)) AND (docass.docass_target_type = 'URL'::text)); 'DROP RULE "_UPDATE_URL" ON public.url; publicadminfalse19218918918919219119219219219226201697896pkgcmdaftertriggerTRIGGERCREATE TRIGGER pkgcmdaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgcmd FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdaftertrigger(); 6DROP TRIGGER pkgcmdaftertrigger ON fixcountry.pkgcmd;  fixcountryadminfalse261152726201697897pkgcmdaltertriggerTRIGGERCREATE TRIGGER pkgcmdaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmd FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdaltertrigger(); 6DROP TRIGGER pkgcmdaltertrigger ON fixcountry.pkgcmd;  fixcountryadminfalse261216626201697898pkgcmdargaftertriggerTRIGGERCREATE TRIGGER pkgcmdargaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgcmdarg FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdargaftertrigger(); <DROP TRIGGER pkgcmdargaftertrigger ON fixcountry.pkgcmdarg;  fixcountryadminfalse264223826201697899pkgcmdargaltertriggerTRIGGERCREATE TRIGGER pkgcmdargaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmdarg FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdargaltertrigger(); <DROP TRIGGER pkgcmdargaltertrigger ON fixcountry.pkgcmdarg;  fixcountryadminfalse264216826201697900pkgcmdargbeforetriggerTRIGGERCREATE TRIGGER pkgcmdargbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmdarg FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdargbeforetrigger(); =DROP TRIGGER pkgcmdargbeforetrigger ON fixcountry.pkgcmdarg;  fixcountryadminfalse264216726201697901pkgcmdbeforetriggerTRIGGERCREATE TRIGGER pkgcmdbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmd FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdbeforetrigger(); 7DROP TRIGGER pkgcmdbeforetrigger ON fixcountry.pkgcmd;  fixcountryadminfalse227226126201697902pkgimageaftertriggerTRIGGERCREATE TRIGGER pkgimageaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgimage FOR EACH ROW EXECUTE PROCEDURE public._pkgimageaftertrigger(); :DROP TRIGGER pkgimageaftertrigger ON fixcountry.pkgimage;  fixcountryadminfalse227726626201697903pkgimagealtertriggerTRIGGERCREATE TRIGGER pkgimagealtertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgimage FOR EACH ROW EXECUTE PROCEDURE public._pkgimagealtertrigger(); :DROP TRIGGER pkgimagealtertrigger ON fixcountry.pkgimage;  fixcountryadminfalse216926626201697904pkgimagebeforetriggerTRIGGERCREATE TRIGGER pkgimagebeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgimage FOR EACH ROW EXECUTE PROCEDURE public._pkgimagebeforetrigger(); ;DROP TRIGGER pkgimagebeforetrigger ON fixcountry.pkgimage;  fixcountryadminfalse266227626201697905pkgmetasqlaftertriggerTRIGGERCREATE TRIGGER pkgmetasqlaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgmetasql FOR EACH ROW EXECUTE PROCEDURE public._pkgmetasqlaftertrigger(); >DROP TRIGGER pkgmetasqlaftertrigger ON fixcountry.pkgmetasql;  fixcountryadminfalse269224526201697906pkgmetasqlaltertriggerTRIGGERCREATE TRIGGER pkgmetasqlaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgmetasql FOR EACH ROW EXECUTE PROCEDURE public._pkgmetasqlaltertrigger(); >DROP TRIGGER pkgmetasqlaltertrigger ON fixcountry.pkgmetasql;  fixcountryadminfalse269217126201697907pkgmetasqlbeforetriggerTRIGGERCREATE TRIGGER pkgmetasqlbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgmetasql FOR EACH ROW EXECUTE PROCEDURE public._pkgmetasqlbeforetrigger(); ?DROP TRIGGER pkgmetasqlbeforetrigger ON fixcountry.pkgmetasql;  fixcountryadminfalse217026926201697908pkgprivaftertriggerTRIGGERCREATE TRIGGER pkgprivaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgpriv FOR EACH ROW EXECUTE PROCEDURE public._pkgprivaftertrigger(); 8DROP TRIGGER pkgprivaftertrigger ON fixcountry.pkgpriv;  fixcountryadminfalse272217626201697909pkgprivaltertriggerTRIGGERCREATE TRIGGER pkgprivaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgpriv FOR EACH ROW EXECUTE PROCEDURE public._pkgprivaltertrigger(); 8DROP TRIGGER pkgprivaltertrigger ON fixcountry.pkgpriv;  fixcountryadminfalse217327226201697910pkgprivbeforetriggerTRIGGERCREATE TRIGGER pkgprivbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgpriv FOR EACH ROW EXECUTE PROCEDURE public._pkgprivbeforetrigger(); 9DROP TRIGGER pkgprivbeforetrigger ON fixcountry.pkgpriv;  fixcountryadminfalse217227226201697911pkgreportaftertriggerTRIGGERCREATE TRIGGER pkgreportaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgreport FOR EACH ROW EXECUTE PROCEDURE public._pkgreportaftertrigger(); <DROP TRIGGER pkgreportaftertrigger ON fixcountry.pkgreport;  fixcountryadminfalse275227826201697912pkgreportaltertriggerTRIGGERCREATE TRIGGER pkgreportaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgreport FOR EACH ROW EXECUTE PROCEDURE public._pkgreportaltertrigger(); <DROP TRIGGER pkgreportaltertrigger ON fixcountry.pkgreport;  fixcountryadminfalse217827526201697913pkgreportbeforetriggerTRIGGERCREATE TRIGGER pkgreportbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgreport FOR EACH ROW EXECUTE PROCEDURE public._pkgreportbeforetrigger(); =DROP TRIGGER pkgreportbeforetrigger ON fixcountry.pkgreport;  fixcountryadminfalse275217726201697914pkgscriptaftertriggerTRIGGERCREATE TRIGGER pkgscriptaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgscript FOR EACH ROW EXECUTE PROCEDURE public._pkgscriptaftertrigger(); <DROP TRIGGER pkgscriptaftertrigger ON fixcountry.pkgscript;  fixcountryadminfalse227927826201697915pkgscriptaltertriggerTRIGGERCREATE TRIGGER pkgscriptaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgscript FOR EACH ROW EXECUTE PROCEDURE public._pkgscriptaltertrigger(); <DROP TRIGGER pkgscriptaltertrigger ON fixcountry.pkgscript;  fixcountryadminfalse278218026201697916pkgscriptbeforetriggerTRIGGERCREATE TRIGGER pkgscriptbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgscript FOR EACH ROW EXECUTE PROCEDURE public._pkgscriptbeforetrigger(); =DROP TRIGGER pkgscriptbeforetrigger ON fixcountry.pkgscript;  fixcountryadminfalse278217926201697917pkguiformaftertriggerTRIGGERCREATE TRIGGER pkguiformaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkguiform FOR EACH ROW EXECUTE PROCEDURE public._pkguiformaftertrigger(); <DROP TRIGGER pkguiformaftertrigger ON fixcountry.pkguiform;  fixcountryadminfalse281220826201697918pkguiformaltertriggerTRIGGERCREATE TRIGGER pkguiformaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkguiform FOR EACH ROW EXECUTE PROCEDURE public._pkguiformaltertrigger(); <DROP TRIGGER pkguiformaltertrigger ON fixcountry.pkguiform;  fixcountryadminfalse281218226201697919pkguiformbeforetriggerTRIGGERCREATE TRIGGER pkguiformbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkguiform FOR EACH ROW EXECUTE PROCEDURE public._pkguiformbeforetrigger(); =DROP TRIGGER pkguiformbeforetrigger ON fixcountry.pkguiform;  fixcountryadminfalse218128126202008453accntdeletetriggerTRIGGER{CREATE TRIGGER accntdeletetrigger BEFORE DELETE ON accnt FOR EACH ROW EXECUTE PROCEDURE _accntdeletetrigger(); 1DROP TRIGGER accntdeletetrigger ON public.accnt; publicadminfalse209119926202008451 accnttriggerTRIGGERyCREATE TRIGGER accnttrigger BEFORE INSERT OR UPDATE ON accnt FOR EACH ROW EXECUTE PROCEDURE _accnttrigger(); +DROP TRIGGER accnttrigger ON public.accnt; publicadminfalse209019926202008452accntuniquetriggerTRIGGER{CREATE TRIGGER accntuniquetrigger BEFORE INSERT ON accnt FOR EACH ROW EXECUTE PROCEDURE _accntuniquetrigger(); 1DROP TRIGGER accntuniquetrigger ON public.accnt; publicadminfalse199145726202008454 addrtriggerTRIGGERCREATE TRIGGER addrtrigger BEFORE INSERT OR DELETE OR UPDATE ON addr FOR EACH ROW EXECUTE PROCEDURE _addrtrigger(); )DROP TRIGGER addrtrigger ON public.addr; publicadminfalse184209426202008455alarmbeforetriggerTRIGGER{CREATE TRIGGER alarmbeforetrigger BEFORE INSERT ON alarm FOR EACH ROW EXECUTE PROCEDURE _alarmbeforetrigger(); 1DROP TRIGGER alarmbeforetrigger ON public.alarm; publicadminfalse147028526202008456apapplytriggerTRIGGERCREATE TRIGGER apapplytrigger BEFORE INSERT OR UPDATE ON apapply FOR EACH ROW EXECUTE PROCEDURE _apapplytrigger(); /DROP TRIGGER apapplytrigger ON public.apapply; publicadminfalse2892095Z26202008457 apopentriggerTRIGGER|CREATE TRIGGER apopentrigger BEFORE INSERT OR UPDATE ON apopen FOR EACH ROW EXECUTE PROCEDURE _apopentrigger(); -DROP TRIGGER apopentrigger ON public.apopen; publicadminfalse209615526202008458arapplytriggerTRIGGERCREATE TRIGGER arapplytrigger BEFORE INSERT OR UPDATE ON arapply FOR EACH ROW EXECUTE PROCEDURE _arapplytrigger(); /DROP TRIGGER arapplytrigger ON public.arapply; publicadminfalse2097300b26202008461aropenaftertriggerTRIGGERCREATE TRIGGER aropenaftertrigger AFTER INSERT OR UPDATE ON aropen FOR EACH ROW EXECUTE PROCEDURE _aropenaftertrigger(); 2DROP TRIGGER aropenaftertrigger ON public.aropen; publicadminfalse1592098a26202008460 aropentriggerTRIGGER|CREATE TRIGGER aropentrigger BEFORE INSERT OR UPDATE ON aropen FOR EACH ROW EXECUTE PROCEDURE _aropentrigger(); -DROP TRIGGER aropentrigger ON public.aropen; publicadminfalse217415926202008462bomheadtriggerTRIGGERCREATE TRIGGER bomheadtrigger AFTER INSERT OR DELETE OR UPDATE ON bomhead FOR EACH ROW EXECUTE PROCEDURE _bomheadtrigger(); /DROP TRIGGER bomheadtrigger ON public.bomhead; publicadminfalse1961473P26202008465bomitemaftertriggerTRIGGERCREATE TRIGGER bomitemaftertrigger AFTER INSERT OR UPDATE ON bomitem FOR EACH ROW EXECUTE PROCEDURE _bomitemaftertrigger(); 4DROP TRIGGER bomitemaftertrigger ON public.bomitem; publicadminfalse1512100Q26202008466bomitembeforedeletetriggerTRIGGERCREATE TRIGGER bomitembeforedeletetrigger BEFORE DELETE ON bomitem FOR EACH ROW EXECUTE PROCEDURE _bomitembeforedeletetrigger(); ;DROP TRIGGER bomitembeforedeletetrigger ON public.bomitem; publicadminfalse2101151O26202008464bomitembeforetriggerTRIGGERCREATE TRIGGER bomitembeforetrigger BEFORE INSERT OR UPDATE ON bomitem FOR EACH ROW EXECUTE PROCEDURE _bomitembeforetrigger(); 5DROP TRIGGER bomitembeforetrigger ON public.bomitem; publicadminfalse151215126202008467bomitemsubtriggerTRIGGERCREATE TRIGGER bomitemsubtrigger BEFORE INSERT OR DELETE OR UPDATE ON bomitemsub FOR EACH ROW EXECUTE PROCEDURE _bomitemsubtrigger(); 5DROP TRIGGER bomitemsubtrigger ON public.bomitemsub; publicadminfalse197211226202008470cashrcptitemaftertriggerTRIGGERCREATE TRIGGER cashrcptitemaftertrigger AFTER INSERT OR UPDATE ON cashrcptitem FOR EACH ROW EXECUTE PROCEDURE _cashrcptitemaftertrigger(); >DROP TRIGGER cashrcptitemaftertrigger ON public.cashrcptitem; publicadminfalse216020426202008469cashrcptitemtriggerTRIGGERCREATE TRIGGER cashrcptitemtrigger BEFORE INSERT OR UPDATE ON cashrcptitem FOR EACH ROW EXECUTE PROCEDURE _cashrcptitemtrigger(); 9DROP TRIGGER cashrcptitemtrigger ON public.cashrcptitem; publicadminfalse210320426202008471cashrcptmisctriggerTRIGGERCREATE TRIGGER cashrcptmisctrigger BEFORE INSERT OR UPDATE ON cashrcptmisc FOR EACH ROW EXECUTE PROCEDURE _cashrcptmisctrigger(); 9DROP TRIGGER cashrcptmisctrigger ON public.cashrcptmisc; publicadminfalse205210426202008468cashrcpttriggerTRIGGERCREATE TRIGGER cashrcpttrigger BEFORE INSERT OR UPDATE ON cashrcpt FOR EACH ROW EXECUTE PROCEDURE _cashrcpttrigger(); 1DROP TRIGGER cashrcpttrigger ON public.cashrcpt; publicadminfalse210220326202008472 ccardtriggerTRIGGERyCREATE TRIGGER ccardtrigger BEFORE INSERT OR UPDATE ON ccard FOR EACH ROW EXECUTE PROCEDURE _ccardtrigger(); +DROP TRIGGER ccardtrigger ON public.ccard; publicadminfalse206210526202008475charasshistorytriggerTRIGGERCREATE TRIGGER charasshistorytrigger BEFORE INSERT OR DELETE OR UPDATE ON charass FOR EACH ROW EXECUTE PROCEDURE _charasshistorytrigger(); 6DROP TRIGGER charasshistorytrigger ON public.charass; publicadminfalse186210726202008474charasstriggerTRIGGER~CREATE TRIGGER charasstrigger AFTER INSERT OR UPDATE ON charass FOR EACH ROW EXECUTE PROCEDURE _charasstrigger(); /DROP TRIGGER charasstrigger ON public.charass; publicadminfalse186210626202008473charbeforetriggerTRIGGERCREATE TRIGGER charbeforetrigger BEFORE INSERT OR UPDATE ON "char" FOR EACH ROW EXECUTE PROCEDURE _charbeforetrigger(); 1DROP TRIGGER charbeforetrigger ON public."char"; publicadminfalse211818526202008476charopttriggerTRIGGER~CREATE TRIGGER charopttrigger AFTER DELETE OR UPDATE ON charopt FOR EACH ROW EXECUTE PROCEDURE _charopttrigger(); /DROP TRIGGER charopttrigger ON public.charopt; publicadminfalse346210826202008477checkheadbeforetriggerTRIGGERCREATE TRIGGER checkheadbeforetrigger BEFORE INSERT OR UPDATE ON checkhead FOR EACH ROW EXECUTE PROCEDURE _checkheadbeforetrigger(); 9DROP TRIGGER checkheadbeforetrigger ON public.checkhead; publicadminfalse2109348j26202008478cmheadbeforetriggerTRIGGERCREATE TRIGGER cmheadbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON cmhead FOR EACH ROW EXECUTE PROCEDURE _cmheadbeforetrigger(); 3DROP TRIGGER cmheadbeforetrigger ON public.cmhead; publicadminfalse1642113k26202008479 cmheadtriggerTRIGGERCREATE TRIGGER cmheadtrigger AFTER INSERT OR DELETE OR UPDATE ON cmhead FOR EACH ROW EXECUTE PROCEDURE _cmheadtrigger(); -DROP TRIGGER cmheadtrigger ON public.cmhead; publicadminfalse2114164m26202008480cmitembeforetriggerTRIGGERCREATE TRIGGER cmitembeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON cmitem FOR EACH ROW EXECUTE PROCEDURE _cmitembeforetrigger(); 3DROP TRIGGER cmitembeforetrigger ON public.cmitem; publicadminfalse1672115n26202008481 cmitemtriggerTRIGGERCREATE TRIGGER cmitemtrigger AFTER INSERT OR DELETE OR UPDATE ON cmitem FOR EACH ROW EXECUTE PROCEDURE _cmitemtrigger(); -DROP TRIGGER cmitemtrigger ON public.cmitem; publicadminfalse2116167R26202008482 cntcttriggerTRIGGERyCREATE TRIGGER cntcttrigger BEFORE INSERT OR UPDATE ON cntct FOR EACH ROW EXECUTE PROCEDURE _cntcttrigger(); +DROP TRIGGER cntcttrigger ON public.cntct; publicadminfalse1522119T26202008484cntcttriggerafterTRIGGERCREATE TRIGGER cntcttriggerafter AFTER INSERT OR DELETE OR UPDATE ON cntct FOR EACH ROW EXECUTE PROCEDURE _cntcttriggerafter(); 0DROP TRIGGER cntcttriggerafter ON public.cntct; publicadminfalse2121152S26202008483cntcttriggerbeforedeleteTRIGGERCREATE TRIGGER cntcttriggerbeforedelete BEFORE DELETE ON cntct FOR EACH ROW EXECUTE PROCEDURE _cntcttriggerbeforedelete(); 7DROP TRIGGER cntcttriggerbeforedelete ON public.cntct; publicadminfalse212015226202008485cntsliptriggerTRIGGERCREATE TRIGGER cntsliptrigger BEFORE INSERT OR DELETE OR UPDATE ON cntslip FOR EACH ROW EXECUTE PROCEDURE _cntsliptrigger(); /DROP TRIGGER cntsliptrigger ON public.cntslip; publicadminfalse212236926202008486cobillbeforetriggerTRIGGERCREATE TRIGGER cobillbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON cobill FOR EACH ROW EXECUTE PROCEDURE _cobillbeforetrigger(); 3DROP TRIGGER cobillbeforetrigger ON public.cobill; publicadminfalse371218426202008487 cobilltriggerTRIGGERCREATE TRIGGER cobilltrigger AFTER INSERT OR DELETE OR UPDATE ON cobill FOR EACH ROW EXECUTE PROCEDURE _cobilltrigger(); -DROP TRIGGER cobilltrigger ON public.cobill; publicadminfalse371218526202008488cobmiscbeforetriggerTRIGGERCREATE TRIGGER cobmiscbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON cobmisc FOR EACH ROW EXECUTE PROCEDURE _cobmiscbeforetrigger(); 5DROP TRIGGER cobmiscbeforetrigger ON public.cobmisc; publicadminfalse374212426202008489cobmisctriggerTRIGGERCREATE TRIGGER cobmisctrigger AFTER INSERT OR DELETE OR UPDATE ON cobmisc FOR EACH ROW EXECUTE PROCEDURE _cobmisctrigger(); /DROP TRIGGER cobmisctrigger ON public.cobmisc; publicadminfalse212537426202008501commenttriggerTRIGGER~CREATE TRIGGER commenttrigger AFTER INSERT OR UPDATE ON comment FOR EACH ROW EXECUTE PROCEDURE _commenttrigger(); /DROP TRIGGER commenttrigger ON public.comment; publicadminfalse188212826202008502companytriggerTRIGGERuCREATE TRIGGER companytrigger BEFORE UPDATE ON company FOR EACH ROW EXECUTE PROCEDURE _companytrigger(); /DROP TRIGGER companytrigger ON public.company; publicadminfalse21293814 26202008503contrctaftertriggerTRIGGER~CREATE TRIGGER contrctaftertrigger AFTER UPDATE ON contrct FOR EACH ROW EXECUTE PROCEDURE _contrctaftertrigger(); 4DROP TRIGGER contrctaftertrigger ON public.contrct; publicadminfalse7202130V26202008506crmacctaftertriggerTRIGGERCREATE TRIGGER crmacctaftertrigger AFTER INSERT OR DELETE OR UPDATE ON crmacct FOR EACH ROW EXECUTE PROCEDURE _crmacctaftertrigger(); 4DROP TRIGGER crmacctaftertrigger ON public.crmacct; publicadminfalse2188153U26202008504crmacctbeforetriggerTRIGGERCREATE TRIGGER crmacctbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON crmacct FOR EACH ROW EXECUTE PROCEDURE _crmacctbeforetrigger(); 5DROP TRIGGER crmacctbeforetrigger ON public.crmacct; publicadminfalse213115326202008507currexchangecheckoverlapTRIGGERCREATE TRIGGER currexchangecheckoverlap BEFORE INSERT OR UPDATE ON curr_rate FOR EACH ROW EXECUTE PROCEDURE currexchangecheckoverlap(); ;DROP TRIGGER currexchangecheckoverlap ON public.curr_rate; publicadminfalse2132396[26202008508 curronebaseTRIGGER{CREATE TRIGGER curronebase AFTER INSERT OR UPDATE ON curr_symbol FOR EACH ROW EXECUTE PROCEDURE curronebase(); 0DROP TRIGGER curronebase ON public.curr_symbol; publicadminfalse2133156d26202008511custaftertriggerTRIGGERCREATE TRIGGER custaftertrigger AFTER INSERT OR UPDATE ON custinfo FOR EACH ROW EXECUTE PROCEDURE _custaftertrigger(); 2DROP TRIGGER custaftertrigger ON public.custinfo; publicadminfalse1602189f26202008513custinfoafterdeletetriggerTRIGGERCREATE TRIGGER custinfoafterdeletetrigger AFTER DELETE ON custinfo FOR EACH ROW EXECUTE PROCEDURE _custinfoafterdeletetrigger(); <DROP TRIGGER custinfoafterdeletetrigger ON public.custinfo; publicadminfalse2136160e26202008512custinfobeforedeletetriggerTRIGGERCREATE TRIGGER custinfobeforedeletetrigger BEFORE DELETE ON custinfo FOR EACH ROW EXECUTE PROCEDURE _custinfobeforedeletetrigger(); =DROP TRIGGER custinfobeforedeletetrigger ON public.custinfo; publicadminfalse1602135c26202008509 custtriggerTRIGGERzCREATE TRIGGER custtrigger BEFORE INSERT OR UPDATE ON custinfo FOR EACH ROW EXECUTE PROCEDURE _custtrigger(); -DROP TRIGGER custtrigger ON public.custinfo; publicadminfalse213416026202008515custtypeafterdeletetriggerTRIGGERCREATE TRIGGER custtypeafterdeletetrigger AFTER DELETE ON custtype FOR EACH ROW EXECUTE PROCEDURE _custtypeafterdeletetrigger(); <DROP TRIGGER custtypeafterdeletetrigger ON public.custtype; publicadminfalse222220726202008514custtypetriggerTRIGGERCREATE TRIGGER custtypetrigger BEFORE INSERT OR UPDATE ON custtype FOR EACH ROW EXECUTE PROCEDURE _custtypetrigger(); 1DROP TRIGGER custtypetrigger ON public.custtype; publicadminfalse215220726202008516 docasstriggerTRIGGER{CREATE TRIGGER docasstrigger AFTER INSERT OR UPDATE ON docass FOR EACH ROW EXECUTE PROCEDURE _docasstrigger(); -DROP TRIGGER docasstrigger ON public.docass; publicadminfalse219618926202008520empafterdeletetriggerTRIGGER~CREATE TRIGGER empafterdeletetrigger AFTER DELETE ON emp FOR EACH ROW EXECUTE PROCEDURE _empafterdeletetrigger(); 2DROP TRIGGER empafterdeletetrigger ON public.emp; publicadminfalse214621426202008518empaftertriggerTRIGGER|CREATE TRIGGER empaftertrigger AFTER INSERT OR UPDATE ON emp FOR EACH ROW EXECUTE PROCEDURE _empaftertrigger(); ,DROP TRIGGER empaftertrigger ON public.emp; publicadminfalse214421426202008519empbeforedeletetriggerTRIGGERCREATE TRIGGER empbeforedeletetrigger BEFORE DELETE ON emp FOR EACH ROW EXECUTE PROCEDURE _empbeforedeletetrigger(); 3DROP TRIGGER empbeforedeletetrigger ON public.emp; publicadminfalse214214526202008517empbeforetriggerTRIGGERCREATE TRIGGER empbeforetrigger BEFORE INSERT OR UPDATE ON emp FOR EACH ROW EXECUTE PROCEDURE _empbeforetrigger(); -DROP TRIGGER empbeforetrigger ON public.emp; publicadminfalse214321426202008522gltransaltertriggerTRIGGERCREATE TRIGGER gltransaltertrigger BEFORE DELETE OR UPDATE ON gltrans FOR EACH ROW EXECUTE PROCEDURE _gltransaltertrigger(); 4DROP TRIGGER gltransaltertrigger ON public.gltrans; publicadminfalse237214826202008521gltransinserttriggerTRIGGERCREATE TRIGGER gltransinserttrigger BEFORE INSERT ON gltrans FOR EACH ROW EXECUTE PROCEDURE _gltransinserttrigger(); 5DROP TRIGGER gltransinserttrigger ON public.gltrans; publicadminfalse237214726202008523grpprivtriggerTRIGGERCREATE TRIGGER grpprivtrigger BEFORE INSERT OR UPDATE ON grppriv FOR EACH ROW EXECUTE PROCEDURE _grpprivtrigger(); /DROP TRIGGER grpprivtrigger ON public.grppriv; publicadminfalse214944926202008524imageasstriggerTRIGGERCREATE TRIGGER imageasstrigger AFTER INSERT OR UPDATE ON imageass FOR EACH ROW EXECUTE PROCEDURE _imageasstrigger(); 1DROP TRIGGER imageasstrigger ON public.imageass; publicadminfalse2207195X26202008526incdtbeforedeletetriggerTRIGGERCREATE TRIGGER incdtbeforedeletetrigger BEFORE DELETE ON incdt FOR EACH ROW EXECUTE PROCEDURE _incdtbeforedeletetrigger(); 7DROP TRIGGER incdtbeforedeletetrigger ON public.incdt; publicadminfalse1542153W26202008525incdtbeforetriggerTRIGGERCREATE TRIGGER incdtbeforetrigger BEFORE INSERT OR UPDATE ON incdt FOR EACH ROW EXECUTE PROCEDURE _incdtbeforetrigger(); 1DROP TRIGGER incdtbeforetrigger ON public.incdt; publicadminfalse2150154Y26202008528 incdttriggerTRIGGERCREATE TRIGGER incdttrigger AFTER INSERT OR DELETE OR UPDATE ON incdt FOR EACH ROW EXECUTE PROCEDURE _incdttrigger(); +DROP TRIGGER incdttrigger ON public.incdt; publicadminfalse1542161v26202008531invcheadaftertriggerTRIGGERCREATE TRIGGER invcheadaftertrigger AFTER UPDATE ON invchead FOR EACH ROW EXECUTE PROCEDURE _invcheadaftertrigger(); 6DROP TRIGGER invcheadaftertrigger ON public.invchead; publicadminfalse2156173t26202008529invcheadbeforetriggerTRIGGERCREATE TRIGGER invcheadbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON invchead FOR EACH ROW EXECUTE PROCEDURE _invcheadbeforetrigger(); 7DROP TRIGGER invcheadbeforetrigger ON public.invchead; publicadminfalse1732154u26202008530invcheadtriggerTRIGGERCREATE TRIGGER invcheadtrigger AFTER INSERT OR DELETE OR UPDATE ON invchead FOR EACH ROW EXECUTE PROCEDURE _invcheadtrigger(); 1DROP TRIGGER invcheadtrigger ON public.invchead; publicadminfalse1732155y26202008532invcitembeforetriggerTRIGGERCREATE TRIGGER invcitembeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON invcitem FOR EACH ROW EXECUTE PROCEDURE _invcitembeforetrigger(); 7DROP TRIGGER invcitembeforetrigger ON public.invcitem; publicadminfalse2228175z26202008533invcitemtriggerTRIGGERCREATE TRIGGER invcitemtrigger AFTER INSERT OR DELETE OR UPDATE ON invcitem FOR EACH ROW EXECUTE PROCEDURE _invcitemtrigger(); 1DROP TRIGGER invcitemtrigger ON public.invcitem; publicadminfalse222917526202008534invhisttriggerTRIGGER{CREATE TRIGGER invhisttrigger BEFORE INSERT OR UPDATE ON invhist FOR EACH ROW EXECUTE PROCEDURE invhisttrig(); /DROP TRIGGER invhisttrigger ON public.invhist; publicadminfalse470223226202008535ipsassbeforetriggerTRIGGERCREATE TRIGGER ipsassbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON ipsass FOR EACH ROW EXECUTE PROCEDURE _ipsassbeforetrigger(); 3DROP TRIGGER ipsassbeforetrigger ON public.ipsass; publicadminfalse239226526202008536ipsheadbeforetriggerTRIGGERCREATE TRIGGER ipsheadbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON ipshead FOR EACH ROW EXECUTE PROCEDURE _ipsheadbeforetrigger(); 5DROP TRIGGER ipsheadbeforetrigger ON public.ipshead; publicadminfalse219227126202008537ipsitemcharbeforetriggerTRIGGERCREATE TRIGGER ipsitemcharbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON ipsitemchar FOR EACH ROW EXECUTE PROCEDURE _ipsitemcharbeforetrigger(); =DROP TRIGGER ipsitemcharbeforetrigger ON public.ipsitemchar; publicadminfalse225624226202008538ipsiteminfobeforetriggerTRIGGERCREATE TRIGGER ipsiteminfobeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON ipsiteminfo FOR EACH ROW EXECUTE PROCEDURE _ipsiteminfobeforetrigger(); =DROP TRIGGER ipsiteminfobeforetrigger ON public.ipsiteminfo; publicadminfalse2402223p26202008541itemaftertriggerTRIGGERCREATE TRIGGER itemaftertrigger AFTER INSERT OR DELETE OR UPDATE ON item FOR EACH ROW EXECUTE PROCEDURE _itemaftertrigger(); .DROP TRIGGER itemaftertrigger ON public.item; publicadminfalse168222426202008543itemcostaftertriggerTRIGGERCREATE TRIGGER itemcostaftertrigger AFTER INSERT OR UPDATE ON itemcost FOR EACH ROW EXECUTE PROCEDURE _itemcostaftertrigger(); 6DROP TRIGGER itemcostaftertrigger ON public.itemcost; publicadminfalse228226226202008542itemcosttriggerTRIGGERCREATE TRIGGER itemcosttrigger BEFORE INSERT OR DELETE OR UPDATE ON itemcost FOR EACH ROW EXECUTE PROCEDURE _itemcosttrigger(); 1DROP TRIGGER itemcosttrigger ON public.itemcost; publicadminfalse2282261r26202008546itemsiteaftertriggerTRIGGERCREATE TRIGGER itemsiteaftertrigger AFTER INSERT OR UPDATE ON itemsite FOR EACH ROW EXECUTE PROCEDURE _itemsiteaftertrigger(); 6DROP TRIGGER itemsiteaftertrigger ON public.itemsite; publicadminfalse1692175q26202008544itemsitetriggerTRIGGERCREATE TRIGGER itemsitetrigger BEFORE INSERT OR UPDATE ON itemsite FOR EACH ROW EXECUTE PROCEDURE _itemsitetrigger(); 1DROP TRIGGER itemsitetrigger ON public.itemsite; publicadminfalse226616926202008548itemsrcaftertriggerTRIGGERCREATE TRIGGER itemsrcaftertrigger AFTER INSERT OR UPDATE ON itemsrc FOR EACH ROW EXECUTE PROCEDURE _itemsrcaftertrigger(); 4DROP TRIGGER itemsrcaftertrigger ON public.itemsrc; publicadminfalse232227326202008549itemsrcptriggerTRIGGERCREATE TRIGGER itemsrcptrigger BEFORE INSERT OR UPDATE ON itemsrcp FOR EACH ROW EXECUTE PROCEDURE _itemsrcptrigger(); 1DROP TRIGGER itemsrcptrigger ON public.itemsrcp; publicadminfalse227423326202008547itemsrctriggerTRIGGERCREATE TRIGGER itemsrctrigger BEFORE INSERT OR UPDATE ON itemsrc FOR EACH ROW EXECUTE PROCEDURE _itemsrctrigger(); /DROP TRIGGER itemsrctrigger ON public.itemsrc; publicadminfalse232226826202008550itemsubtriggerTRIGGER~CREATE TRIGGER itemsubtrigger AFTER INSERT OR UPDATE ON itemsub FOR EACH ROW EXECUTE PROCEDURE _itemsubtrigger(); /DROP TRIGGER itemsubtrigger ON public.itemsub; publicadminfalse215723426202008551itemtaxtriggerTRIGGER~CREATE TRIGGER itemtaxtrigger AFTER INSERT OR UPDATE ON itemtax FOR EACH ROW EXECUTE PROCEDURE _itemtaxtrigger(); /DROP TRIGGER itemtaxtrigger ON public.itemtax; publicadminfalse2158235o26202008539 itemtriggerTRIGGERvCREATE TRIGGER itemtrigger BEFORE INSERT OR UPDATE ON item FOR EACH ROW EXECUTE PROCEDURE _itemtrigger(); )DROP TRIGGER itemtrigger ON public.item; publicadminfalse168226026202008552itemuomconvtriggerTRIGGERCREATE TRIGGER itemuomconvtrigger AFTER INSERT OR UPDATE ON itemuomconv FOR EACH ROW EXECUTE PROCEDURE _itemuomconvtrigger(); 7DROP TRIGGER itemuomconvtrigger ON public.itemuomconv; publicadminfalse236215926202008554locationaftertriggerTRIGGERCREATE TRIGGER locationaftertrigger AFTER INSERT OR UPDATE ON location FOR EACH ROW EXECUTE PROCEDURE _locationaftertrigger(); 6DROP TRIGGER locationaftertrigger ON public.location; publicadminfalse230216326202008553locationtriggerTRIGGERCREATE TRIGGER locationtrigger BEFORE INSERT OR UPDATE ON location FOR EACH ROW EXECUTE PROCEDURE _locationtrigger(); 1DROP TRIGGER locationtrigger ON public.location; publicadminfalse216223026202009702metasqlaltertriggerTRIGGERCREATE TRIGGER metasqlaltertrigger BEFORE INSERT OR UPDATE ON metasql FOR EACH ROW EXECUTE PROCEDURE _metasqlaltertrigger(); 4DROP TRIGGER metasqlaltertrigger ON public.metasql; publicadminfalse267225926202009701metasqltriggerTRIGGERCREATE TRIGGER metasqltrigger BEFORE INSERT OR UPDATE ON metasql FOR EACH ROW EXECUTE PROCEDURE _metasqltrigger(); /DROP TRIGGER metasqltrigger ON public.metasql; publicadminfalse267226726202008556opheadaftertriggerTRIGGERCREATE TRIGGER opheadaftertrigger AFTER INSERT OR DELETE OR UPDATE ON ophead FOR EACH ROW EXECUTE PROCEDURE _opheadaftertrigger(); 2DROP TRIGGER opheadaftertrigger ON public.ophead; publicadminfalse216418126202008555opheadbeforetriggerTRIGGERCREATE TRIGGER opheadbeforetrigger BEFORE INSERT OR UPDATE ON ophead FOR EACH ROW EXECUTE PROCEDURE _opheadbeforetrigger(); 3DROP TRIGGER opheadbeforetrigger ON public.ophead; publicadminfalse181218626202008557packbeforetriggerTRIGGERCREATE TRIGGER packbeforetrigger BEFORE INSERT OR UPDATE ON pack FOR EACH ROW EXECUTE PROCEDURE _packbeforetrigger(); /DROP TRIGGER packbeforetrigger ON public.pack; publicadminfalse226954926202008558periodaftertriggerTRIGGERCREATE TRIGGER periodaftertrigger AFTER INSERT OR DELETE OR UPDATE ON period FOR EACH STATEMENT EXECUTE PROCEDURE _periodaftertrigger(); 2DROP TRIGGER periodaftertrigger ON public.period; publicadminfalse227020126202008559pkgheadbeforetriggerTRIGGERCREATE TRIGGER pkgheadbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkghead FOR EACH ROW EXECUTE PROCEDURE _pkgheadbeforetrigger(); 5DROP TRIGGER pkgheadbeforetrigger ON public.pkghead; publicadminfalse556216526202008561pkgitembeforetriggerTRIGGERCREATE TRIGGER pkgitembeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgitem FOR EACH ROW EXECUTE PROCEDURE _pkgitembeforetrigger(); 5DROP TRIGGER pkgitembeforetrigger ON public.pkgitem; publicadminfalse223355826202008562 poheadtriggerTRIGGERCREATE TRIGGER poheadtrigger BEFORE INSERT OR DELETE OR UPDATE ON pohead FOR EACH ROW EXECUTE PROCEDURE _poheadtrigger(); -DROP TRIGGER poheadtrigger ON public.pohead; publicadminfalse178218326202008563poheadtriggerafterTRIGGER{CREATE TRIGGER poheadtriggerafter AFTER UPDATE ON pohead FOR EACH ROW EXECUTE PROCEDURE _poheadtriggerafter(); 2DROP TRIGGER poheadtriggerafter ON public.pohead; publicadminfalse178218726202008565 poitemtriggerTRIGGERCREATE TRIGGER poitemtrigger BEFORE INSERT OR DELETE OR UPDATE ON poitem FOR EACH ROW EXECUTE PROCEDURE _poitemtrigger(); -DROP TRIGGER poitemtrigger ON public.poitem; publicadminfalse2281179x26202008568prjaftertriggerTRIGGER|CREATE TRIGGER prjaftertrigger AFTER INSERT OR UPDATE ON prj FOR EACH ROW EXECUTE PROCEDURE _prjaftertrigger(); ,DROP TRIGGER prjaftertrigger ON public.prj; publicadminfalse2191174w26202008567prjbeforedeletetriggerTRIGGERCREATE TRIGGER prjbeforedeletetrigger BEFORE DELETE ON prj FOR EACH ROW EXECUTE PROCEDURE _prjbeforedeletetrigger(); 3DROP TRIGGER prjbeforedeletetrigger ON public.prj; publicadminfalse174219026202008570prjtaskaftertriggerTRIGGERCREATE TRIGGER prjtaskaftertrigger AFTER INSERT OR UPDATE ON prjtask FOR EACH ROW EXECUTE PROCEDURE _prjtaskaftertrigger(); 4DROP TRIGGER prjtaskaftertrigger ON public.prjtask; publicadminfalse182219326202008569prjtasktriggerTRIGGERCREATE TRIGGER prjtasktrigger BEFORE INSERT OR UPDATE ON prjtask FOR EACH ROW EXECUTE PROCEDURE _prjtasktrigger(); /DROP TRIGGER prjtasktrigger ON public.prjtask; publicadminfalse219218226202008574prospectafterdeletetriggerTRIGGERCREATE TRIGGER prospectafterdeletetrigger AFTER DELETE ON prospect FOR EACH ROW EXECUTE PROCEDURE _prospectafterdeletetrigger(); <DROP TRIGGER prospectafterdeletetrigger ON public.prospect; publicadminfalse244219526202008572prospectaftertriggerTRIGGERCREATE TRIGGER prospectaftertrigger AFTER INSERT OR UPDATE ON prospect FOR EACH ROW EXECUTE PROCEDURE _prospectaftertrigger(); 6DROP TRIGGER prospectaftertrigger ON public.prospect; publicadminfalse244219426202008573prospectbeforedeletetriggerTRIGGERCREATE TRIGGER prospectbeforedeletetrigger BEFORE DELETE ON prospect FOR EACH ROW EXECUTE PROCEDURE _prospectbeforedeletetrigger(); =DROP TRIGGER prospectbeforedeletetrigger ON public.prospect; publicadminfalse222524426202008571prospecttriggerTRIGGERCREATE TRIGGER prospecttrigger BEFORE INSERT OR UPDATE ON prospect FOR EACH ROW EXECUTE PROCEDURE _prospecttrigger(); 1DROP TRIGGER prospecttrigger ON public.prospect; publicadminfalse244228326202008566 prtriggerTRIGGEReCREATE TRIGGER prtrigger AFTER INSERT ON pr FOR EACH ROW EXECUTE PROCEDURE _prtrigger(); %DROP TRIGGER prtrigger ON public.pr; publicadminfalse569221326202008576 quheadtriggerTRIGGERCREATE TRIGGER quheadtrigger BEFORE INSERT OR DELETE OR UPDATE ON quhead FOR EACH ROW EXECUTE PROCEDURE _quheadtrigger(); -DROP TRIGGER quheadtrigger ON public.quhead; publicadminfalse249226326202008579quitemaftertriggerTRIGGERCREATE TRIGGER quitemaftertrigger AFTER INSERT OR UPDATE ON quitem FOR EACH ROW EXECUTE PROCEDURE _quitemaftertrigger(); 2DROP TRIGGER quitemaftertrigger ON public.quitem; publicadminfalse219925026202008578quitembeforetriggerTRIGGERCREATE TRIGGER quitembeforetrigger BEFORE INSERT OR UPDATE ON quitem FOR EACH ROW EXECUTE PROCEDURE _quitembeforetrigger(); 3DROP TRIGGER quitembeforetrigger ON public.quitem; publicadminfalse250219826202008577 quitemtriggerTRIGGERCREATE TRIGGER quitemtrigger BEFORE INSERT OR DELETE OR UPDATE ON quitem FOR EACH ROW EXECUTE PROCEDURE _quitemtrigger(); -DROP TRIGGER quitemtrigger ON public.quitem; publicadminfalse250219726202008580recuraftertriggerTRIGGERxCREATE TRIGGER recuraftertrigger AFTER DELETE ON recur FOR EACH ROW EXECUTE PROCEDURE _recuraftertrigger(); 0DROP TRIGGER recuraftertrigger ON public.recur; publicadminfalse227558726202008581 reporttriggerTRIGGER|CREATE TRIGGER reporttrigger BEFORE INSERT OR UPDATE ON report FOR EACH ROW EXECUTE PROCEDURE _reporttrigger(); -DROP TRIGGER reporttrigger ON public.report; publicadminfalse2732200i26202008584salesrepafterdeletetriggerTRIGGERCREATE TRIGGER salesrepafterdeletetrigger AFTER DELETE ON salesrep FOR EACH ROW EXECUTE PROCEDURE _salesrepafterdeletetrigger(); <DROP TRIGGER salesrepafterdeletetrigger ON public.salesrep; publicadminfalse2203163h26202008583salesrepaftertriggerTRIGGERCREATE TRIGGER salesrepaftertrigger AFTER INSERT OR UPDATE ON salesrep FOR EACH ROW EXECUTE PROCEDURE _salesrepaftertrigger(); 6DROP TRIGGER salesrepaftertrigger ON public.salesrep; publicadminfalse2202163g26202008582salesrepbeforetriggerTRIGGERCREATE TRIGGER salesrepbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON salesrep FOR EACH ROW EXECUTE PROCEDURE _salesrepbeforetrigger(); 7DROP TRIGGER salesrepbeforetrigger ON public.salesrep; publicadminfalse22011635 26202008585saletypebeforedeletetriggerTRIGGERCREATE TRIGGER saletypebeforedeletetrigger BEFORE DELETE ON saletype FOR EACH ROW EXECUTE PROCEDURE _saletypebeforedeletetrigger(); =DROP TRIGGER saletypebeforedeletetrigger ON public.saletype; publicadminfalse220972226202008587shipdatasumtriggerTRIGGERCREATE TRIGGER shipdatasumtrigger BEFORE INSERT OR UPDATE ON shipdatasum FOR EACH ROW EXECUTE PROCEDURE _shipdatasumtrigger(); 7DROP TRIGGER shipdatasumtrigger ON public.shipdatasum; publicadminfalse606221126202008586shipdatatriggerTRIGGERCREATE TRIGGER shipdatatrigger BEFORE INSERT OR UPDATE ON shipdata FOR EACH ROW EXECUTE PROCEDURE _shipdatatrigger(); 1DROP TRIGGER shipdatatrigger ON public.shipdata; publicadminfalse221021626202008588shipformafterdeletetriggerTRIGGERCREATE TRIGGER shipformafterdeletetrigger AFTER DELETE ON shipform FOR EACH ROW EXECUTE PROCEDURE _shipformafterdeletetrigger(); <DROP TRIGGER shipformafterdeletetrigger ON public.shipform; publicadminfalse226420926202008589shipheadbeforetriggerTRIGGERCREATE TRIGGER shipheadbeforetrigger BEFORE INSERT OR UPDATE ON shiphead FOR EACH ROW EXECUTE PROCEDURE _shipheadbeforetrigger(); 7DROP TRIGGER shipheadbeforetrigger ON public.shiphead; publicadminfalse2212608l26202008590shiptoinfoaftertriggerTRIGGERCREATE TRIGGER shiptoinfoaftertrigger AFTER INSERT OR UPDATE ON shiptoinfo FOR EACH ROW EXECUTE PROCEDURE _shiptoinfoaftertrigger(); :DROP TRIGGER shiptoinfoaftertrigger ON public.shiptoinfo; publicadminfalse221416526202008591shipviaafterdeletetriggerTRIGGERCREATE TRIGGER shipviaafterdeletetrigger AFTER DELETE ON shipvia FOR EACH ROW EXECUTE PROCEDURE _shipviaafterdeletetrigger(); :DROP TRIGGER shipviaafterdeletetrigger ON public.shipvia; publicadminfalse256221526202008593sltransaltertriggerTRIGGERCREATE TRIGGER sltransaltertrigger BEFORE DELETE OR UPDATE ON sltrans FOR EACH ROW EXECUTE PROCEDURE _sltransaltertrigger(); 4DROP TRIGGER sltransaltertrigger ON public.sltrans; publicadminfalse616221626202008592sltransinserttriggerTRIGGERCREATE TRIGGER sltransinserttrigger BEFORE INSERT ON sltrans FOR EACH ROW EXECUTE PROCEDURE _sltransinserttrigger(); 5DROP TRIGGER sltransinserttrigger ON public.sltrans; publicadminfalse2280616{26202008491 soheadtriggerTRIGGERCREATE TRIGGER soheadtrigger BEFORE INSERT OR DELETE OR UPDATE ON cohead FOR EACH ROW EXECUTE PROCEDURE _soheadtrigger(); -DROP TRIGGER soheadtrigger ON public.cohead; publicadminfalse1506176|26202008492soheadtriggerafterTRIGGER{CREATE TRIGGER soheadtriggerafter AFTER UPDATE ON cohead FOR EACH ROW EXECUTE PROCEDURE _soheadtriggerafter(); 2DROP TRIGGER soheadtriggerafter ON public.cohead; publicadminfalse212617626202008500soitemafterdeletetriggerTRIGGERCREATE TRIGGER soitemafterdeletetrigger AFTER DELETE ON coitem FOR EACH ROW EXECUTE PROCEDURE _soitemafterdeletetrigger(); 8DROP TRIGGER soitemafterdeletetrigger ON public.coitem; publicadminfalse177214226202008498soitemaftertriggerTRIGGERCREATE TRIGGER soitemaftertrigger AFTER INSERT OR UPDATE ON coitem FOR EACH ROW EXECUTE PROCEDURE _soitemaftertrigger(); 2DROP TRIGGER soitemaftertrigger ON public.coitem; publicadminfalse220617726202008499soitembeforedeletetriggerTRIGGERCREATE TRIGGER soitembeforedeletetrigger BEFORE DELETE ON coitem FOR EACH ROW EXECUTE PROCEDURE _soitembeforedeletetrigger(); 9DROP TRIGGER soitembeforedeletetrigger ON public.coitem; publicadminfalse2127177~26202008496soitembeforetriggerTRIGGERCREATE TRIGGER soitembeforetrigger BEFORE INSERT OR UPDATE ON coitem FOR EACH ROW EXECUTE PROCEDURE _soitembeforetrigger(); 3DROP TRIGGER soitembeforetrigger ON public.coitem; publicadminfalse2205177}26202008494 soitemtriggerTRIGGER|CREATE TRIGGER soitemtrigger BEFORE INSERT OR UPDATE ON coitem FOR EACH ROW EXECUTE PROCEDURE _soitemtrigger(); -DROP TRIGGER soitemtrigger ON public.coitem; publicadminfalse220417726202008597taxauthafterdeletetriggerTRIGGERCREATE TRIGGER taxauthafterdeletetrigger AFTER DELETE ON taxauth FOR EACH ROW EXECUTE PROCEDURE _taxauthafterdeletetrigger(); :DROP TRIGGER taxauthafterdeletetrigger ON public.taxauth; publicadminfalse210222026202008595taxauthaftertriggerTRIGGERCREATE TRIGGER taxauthaftertrigger AFTER INSERT OR UPDATE ON taxauth FOR EACH ROW EXECUTE PROCEDURE _taxauthaftertrigger(); 4DROP TRIGGER taxauthaftertrigger ON public.taxauth; publicadminfalse210221826202008596taxauthbeforedeletetriggerTRIGGERCREATE TRIGGER taxauthbeforedeletetrigger BEFORE DELETE ON taxauth FOR EACH ROW EXECUTE PROCEDURE _taxauthbeforedeletetrigger(); ;DROP TRIGGER taxauthbeforedeletetrigger ON public.taxauth; publicadminfalse221921026202008594taxauthbeforetriggerTRIGGERCREATE TRIGGER taxauthbeforetrigger BEFORE INSERT OR UPDATE ON taxauth FOR EACH ROW EXECUTE PROCEDURE _taxauthbeforetrigger(); 5DROP TRIGGER taxauthbeforetrigger ON public.taxauth; publicadminfalse2217210\26202008598termsafterdeletetriggerTRIGGERCREATE TRIGGER termsafterdeletetrigger AFTER DELETE ON terms FOR EACH ROW EXECUTE PROCEDURE _termsafterdeletetrigger(); 6DROP TRIGGER termsafterdeletetrigger ON public.terms; publicadminfalse157222126202008599todoitemtriggerTRIGGERxCREATE TRIGGER todoitemtrigger BEFORE DELETE ON todoitem FOR EACH ROW EXECUTE PROCEDURE _todoitemtrigger(); 1DROP TRIGGER todoitemtrigger ON public.todoitem; publicadminfalse183222626202008600 uomconvupdateTRIGGERsCREATE TRIGGER uomconvupdate BEFORE UPDATE ON uomconv FOR EACH ROW EXECUTE PROCEDURE _uomconvupdate(); .DROP TRIGGER uomconvupdate ON public.uomconv; publicadminfalse654228226202008602usrprefaftertriggerTRIGGERCREATE TRIGGER usrprefaftertrigger AFTER INSERT OR DELETE OR UPDATE ON usrpref FOR EACH ROW EXECUTE PROCEDURE _usrprefaftertrigger(); 4DROP TRIGGER usrprefaftertrigger ON public.usrpref; publicadminfalse223065926202008601usrprefbeforetriggerTRIGGERCREATE TRIGGER usrprefbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON usrpref FOR EACH ROW EXECUTE PROCEDURE _usrprefbeforetrigger(); 5DROP TRIGGER usrprefbeforetrigger ON public.usrpref; publicadminfalse659222726202008603usrprivtriggerTRIGGERCREATE TRIGGER usrprivtrigger BEFORE INSERT OR UPDATE ON usrpriv FOR EACH ROW EXECUTE PROCEDURE _usrprivtrigger(); /DROP TRIGGER usrprivtrigger ON public.usrpriv; publicadminfalse574223126202008608vendaddrtriggerTRIGGERCREATE TRIGGER vendaddrtrigger BEFORE INSERT OR DELETE OR UPDATE ON vendaddrinfo FOR EACH ROW EXECUTE PROCEDURE _vendaddrtrigger(); 5DROP TRIGGER vendaddrtrigger ON public.vendaddrinfo; publicadminfalse2239248^26202008605vendaftertriggerTRIGGERCREATE TRIGGER vendaftertrigger AFTER INSERT OR UPDATE ON vendinfo FOR EACH ROW EXECUTE PROCEDURE _vendaftertrigger(); 2DROP TRIGGER vendaftertrigger ON public.vendinfo; publicadminfalse1582235`26202008607vendinfoafterdeletetriggerTRIGGERCREATE TRIGGER vendinfoafterdeletetrigger AFTER DELETE ON vendinfo FOR EACH ROW EXECUTE PROCEDURE _vendinfoafterdeletetrigger(); <DROP TRIGGER vendinfoafterdeletetrigger ON public.vendinfo; publicadminfalse2237158_26202008606vendinfobeforedeletetriggerTRIGGERCREATE TRIGGER vendinfobeforedeletetrigger BEFORE DELETE ON vendinfo FOR EACH ROW EXECUTE PROCEDURE _vendinfobeforedeletetrigger(); =DROP TRIGGER vendinfobeforedeletetrigger ON public.vendinfo; publicadminfalse1582236]26202008604 vendtriggerTRIGGERzCREATE TRIGGER vendtrigger BEFORE INSERT OR UPDATE ON vendinfo FOR EACH ROW EXECUTE PROCEDURE _vendtrigger(); -DROP TRIGGER vendtrigger ON public.vendinfo; publicadminfalse158223426202008610vodistaftertriggerTRIGGERCREATE TRIGGER vodistaftertrigger AFTER INSERT OR DELETE OR UPDATE ON vodist FOR EACH ROW EXECUTE PROCEDURE _vodistaftertrigger(); 2DROP TRIGGER vodistaftertrigger ON public.vodist; publicadminfalse668224126202008609vodistbeforetriggerTRIGGERCREATE TRIGGER vodistbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON vodist FOR EACH ROW EXECUTE PROCEDURE _vodistbeforetrigger(); 3DROP TRIGGER vodistbeforetrigger ON public.vodist; publicadminfalse224066826202008612voheadaftertriggerTRIGGERCREATE TRIGGER voheadaftertrigger AFTER INSERT OR DELETE OR UPDATE ON vohead FOR EACH ROW EXECUTE PROCEDURE _voheadaftertrigger(); 2DROP TRIGGER voheadaftertrigger ON public.vohead; publicadminfalse670224226202008611voheadbeforetriggerTRIGGERCREATE TRIGGER voheadbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON vohead FOR EACH ROW EXECUTE PROCEDURE _voheadbeforetrigger(); 3DROP TRIGGER voheadbeforetrigger ON public.vohead; publicadminfalse2284670 26202008614voitemaftertriggerTRIGGERCREATE TRIGGER voitemaftertrigger AFTER INSERT OR DELETE OR UPDATE ON voitem FOR EACH ROW EXECUTE PROCEDURE _voitemaftertrigger(); 2DROP TRIGGER voitemaftertrigger ON public.voitem; publicadminfalse673224426202008613voitembeforetriggerTRIGGERCREATE TRIGGER voitembeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON voitem FOR EACH ROW EXECUTE PROCEDURE _voitembeforetrigger(); 3DROP TRIGGER voitembeforetrigger ON public.voitem; publicadminfalse2243673s26202008616warehoustriggerTRIGGERCREATE TRIGGER warehoustrigger BEFORE INSERT OR UPDATE ON whsinfo FOR EACH ROW EXECUTE PROCEDURE _warehoustrigger(); 0DROP TRIGGER warehoustrigger ON public.whsinfo; publicadminfalse228517226202008615whsezonetriggerTRIGGERCREATE TRIGGER whsezonetrigger BEFORE INSERT OR UPDATE ON whsezone FOR EACH ROW EXECUTE PROCEDURE _whsezonetrigger(); 1DROP TRIGGER whsezonetrigger ON public.whsezone; publicadminfalse238224626202008618womatlaftertriggerTRIGGERCREATE TRIGGER womatlaftertrigger AFTER INSERT OR DELETE OR UPDATE ON womatl FOR EACH ROW EXECUTE PROCEDURE _womatlaftertrigger(); 2DROP TRIGGER womatlaftertrigger ON public.womatl; publicadminfalse246224826202008617 wotriggerTRIGGERzCREATE TRIGGER wotrigger BEFORE INSERT OR DELETE OR UPDATE ON wo FOR EACH ROW EXECUTE PROCEDURE _wotrigger(); %DROP TRIGGER wotrigger ON public.wo; publicadminfalse4102247 26201698068pkgcmdaftertriggerTRIGGERCREATE TRIGGER pkgcmdaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgcmd FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdaftertrigger(); .DROP TRIGGER pkgcmdaftertrigger ON te.pkgcmd; teadminfalse1527689 26201698069pkgcmdaltertriggerTRIGGERCREATE TRIGGER pkgcmdaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmd FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdaltertrigger(); .DROP TRIGGER pkgcmdaltertrigger ON te.pkgcmd; teadminfalse6892166 26201698070pkgcmdargaftertriggerTRIGGERCREATE TRIGGER pkgcmdargaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgcmdarg FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdargaftertrigger(); 4DROP TRIGGER pkgcmdargaftertrigger ON te.pkgcmdarg; teadminfalse2238690 26201698071pkgcmdargaltertriggerTRIGGERCREATE TRIGGER pkgcmdargaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmdarg FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdargaltertrigger(); 4DROP TRIGGER pkgcmdargaltertrigger ON te.pkgcmdarg; teadminfalse2168690 26201698072pkgcmdargbeforetriggerTRIGGERCREATE TRIGGER pkgcmdargbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmdarg FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdargbeforetrigger(); 5DROP TRIGGER pkgcmdargbeforetrigger ON te.pkgcmdarg; teadminfalse2167690 26201698073pkgcmdbeforetriggerTRIGGERCREATE TRIGGER pkgcmdbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmd FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdbeforetrigger(); /DROP TRIGGER pkgcmdbeforetrigger ON te.pkgcmd; teadminfalse2272689 26201698074pkgimageaftertriggerTRIGGERCREATE TRIGGER pkgimageaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgimage FOR EACH ROW EXECUTE PROCEDURE public._pkgimageaftertrigger(); 2DROP TRIGGER pkgimageaftertrigger ON te.pkgimage; teadminfalse2277691 26201698075pkgimagealtertriggerTRIGGERCREATE TRIGGER pkgimagealtertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgimage FOR EACH ROW EXECUTE PROCEDURE public._pkgimagealtertrigger(); 2DROP TRIGGER pkgimagealtertrigger ON te.pkgimage; teadminfalse2169691 26201698076pkgimagebeforetriggerTRIGGERCREATE TRIGGER pkgimagebeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgimage FOR EACH ROW EXECUTE PROCEDURE public._pkgimagebeforetrigger(); 3DROP TRIGGER pkgimagebeforetrigger ON te.pkgimage; teadminfalse6912276 26201698077pkgmetasqlaftertriggerTRIGGERCREATE TRIGGER pkgmetasqlaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgmetasql FOR EACH ROW EXECUTE PROCEDURE public._pkgmetasqlaftertrigger(); 6DROP TRIGGER pkgmetasqlaftertrigger ON te.pkgmetasql; teadminfalse6922245 26201698078pkgmetasqlaltertriggerTRIGGERCREATE TRIGGER pkgmetasqlaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgmetasql FOR EACH ROW EXECUTE PROCEDURE public._pkgmetasqlaltertrigger(); 6DROP TRIGGER pkgmetasqlaltertrigger ON te.pkgmetasql; teadminfalse6922171 26201698079pkgmetasqlbeforetriggerTRIGGERCREATE TRIGGER pkgmetasqlbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgmetasql FOR EACH ROW EXECUTE PROCEDURE public._pkgmetasqlbeforetrigger(); 7DROP TRIGGER pkgmetasqlbeforetrigger ON te.pkgmetasql; teadminfalse2170692 26201698080pkgprivaftertriggerTRIGGERCREATE TRIGGER pkgprivaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgpriv FOR EACH ROW EXECUTE PROCEDURE public._pkgprivaftertrigger(); 0DROP TRIGGER pkgprivaftertrigger ON te.pkgpriv; teadminfalse2176693 26201698081pkgprivaltertriggerTRIGGERCREATE TRIGGER pkgprivaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgpriv FOR EACH ROW EXECUTE PROCEDURE public._pkgprivaltertrigger(); 0DROP TRIGGER pkgprivaltertrigger ON te.pkgpriv; teadminfalse2173693 26201698082pkgprivbeforetriggerTRIGGERCREATE TRIGGER pkgprivbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgpriv FOR EACH ROW EXECUTE PROCEDURE public._pkgprivbeforetrigger(); 1DROP TRIGGER pkgprivbeforetrigger ON te.pkgpriv; teadminfalse2172693 26201698083pkgreportaftertriggerTRIGGERCREATE TRIGGER pkgreportaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgreport FOR EACH ROW EXECUTE PROCEDURE public._pkgreportaftertrigger(); 4DROP TRIGGER pkgreportaftertrigger ON te.pkgreport; teadminfalse6942278 26201698084pkgreportaltertriggerTRIGGERCREATE TRIGGER pkgreportaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgreport FOR EACH ROW EXECUTE PROCEDURE public._pkgreportaltertrigger(); 4DROP TRIGGER pkgreportaltertrigger ON te.pkgreport; teadminfalse2178694 26201698085pkgreportbeforetriggerTRIGGERCREATE TRIGGER pkgreportbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgreport FOR EACH ROW EXECUTE PROCEDURE public._pkgreportbeforetrigger(); 5DROP TRIGGER pkgreportbeforetrigger ON te.pkgreport; teadminfalse6942177 26201698086pkgscriptaftertriggerTRIGGERCREATE TRIGGER pkgscriptaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgscript FOR EACH ROW EXECUTE PROCEDURE public._pkgscriptaftertrigger(); 4DROP TRIGGER pkgscriptaftertrigger ON te.pkgscript; teadminfalse2279695 26201698087pkgscriptaltertriggerTRIGGERCREATE TRIGGER pkgscriptaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgscript FOR EACH ROW EXECUTE PROCEDURE public._pkgscriptaltertrigger(); 4DROP TRIGGER pkgscriptaltertrigger ON te.pkgscript; teadminfalse2180695 26201698088pkgscriptbeforetriggerTRIGGERCREATE TRIGGER pkgscriptbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgscript FOR EACH ROW EXECUTE PROCEDURE public._pkgscriptbeforetrigger(); 5DROP TRIGGER pkgscriptbeforetrigger ON te.pkgscript; teadminfalse2179695 26201698089pkguiformaftertriggerTRIGGERCREATE TRIGGER pkguiformaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkguiform FOR EACH ROW EXECUTE PROCEDURE public._pkguiformaftertrigger(); 4DROP TRIGGER pkguiformaftertrigger ON te.pkguiform; teadminfalse2208696 26201698090pkguiformaltertriggerTRIGGERCREATE TRIGGER pkguiformaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkguiform FOR EACH ROW EXECUTE PROCEDURE public._pkguiformaltertrigger(); 4DROP TRIGGER pkguiformaltertrigger ON te.pkguiform; teadminfalse2182696 26201698091pkguiformbeforetriggerTRIGGERCREATE TRIGGER pkguiformbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkguiform FOR EACH ROW EXECUTE PROCEDURE public._pkguiformbeforetrigger(); 5DROP TRIGGER pkguiformbeforetrigger ON te.pkguiform; teadminfalse6962181 26201757961 teheadtriggerTRIGGERzCREATE TRIGGER teheadtrigger AFTER INSERT OR UPDATE ON tehead FOR EACH ROW EXECUTE PROCEDURE triggertehead(); )DROP TRIGGER teheadtrigger ON te.tehead; teadminfalse891703 26201757962 teitemtriggerTRIGGERCREATE TRIGGER teitemtrigger AFTER INSERT OR DELETE OR UPDATE ON teitem FOR EACH ROW EXECUTE PROCEDURE triggerteitem(); )DROP TRIGGER teitemtrigger ON te.teitem; teadminfalse881705 26201757963 teprjtriggerTRIGGERwCREATE TRIGGER teprjtrigger AFTER INSERT OR UPDATE ON teprj FOR EACH ROW EXECUTE PROCEDURE triggerteprj(); 'DROP TRIGGER teprjtrigger ON te.teprj; teadminfalse882707 26201698095pkgcmdaftertriggerTRIGGERCREATE TRIGGER pkgcmdaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgcmd FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdaftertrigger(); 5DROP TRIGGER pkgcmdaftertrigger ON xtdesktop.pkgcmd;  xtdesktopadminfalse7111527 26201698096pkgcmdaltertriggerTRIGGERCREATE TRIGGER pkgcmdaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmd FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdaltertrigger(); 5DROP TRIGGER pkgcmdaltertrigger ON xtdesktop.pkgcmd;  xtdesktopadminfalse2166711 26201698097pkgcmdargaftertriggerTRIGGERCREATE TRIGGER pkgcmdargaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgcmdarg FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdargaftertrigger(); ;DROP TRIGGER pkgcmdargaftertrigger ON xtdesktop.pkgcmdarg;  xtdesktopadminfalse2238712 26201698098pkgcmdargaltertriggerTRIGGERCREATE TRIGGER pkgcmdargaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmdarg FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdargaltertrigger(); ;DROP TRIGGER pkgcmdargaltertrigger ON xtdesktop.pkgcmdarg;  xtdesktopadminfalse7122168! 26201698099pkgcmdargbeforetriggerTRIGGERCREATE TRIGGER pkgcmdargbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmdarg FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdargbeforetrigger(); <DROP TRIGGER pkgcmdargbeforetrigger ON xtdesktop.pkgcmdarg;  xtdesktopadminfalse7122167 26201698100pkgcmdbeforetriggerTRIGGERCREATE TRIGGER pkgcmdbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgcmd FOR EACH ROW EXECUTE PROCEDURE public._pkgcmdbeforetrigger(); 6DROP TRIGGER pkgcmdbeforetrigger ON xtdesktop.pkgcmd;  xtdesktopadminfalse7112272" 26201698101pkgimageaftertriggerTRIGGERCREATE TRIGGER pkgimageaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgimage FOR EACH ROW EXECUTE PROCEDURE public._pkgimageaftertrigger(); 9DROP TRIGGER pkgimageaftertrigger ON xtdesktop.pkgimage;  xtdesktopadminfalse2277713# 26201698102pkgimagealtertriggerTRIGGERCREATE TRIGGER pkgimagealtertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgimage FOR EACH ROW EXECUTE PROCEDURE public._pkgimagealtertrigger(); 9DROP TRIGGER pkgimagealtertrigger ON xtdesktop.pkgimage;  xtdesktopadminfalse2169713$ 26201698103pkgimagebeforetriggerTRIGGERCREATE TRIGGER pkgimagebeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgimage FOR EACH ROW EXECUTE PROCEDURE public._pkgimagebeforetrigger(); :DROP TRIGGER pkgimagebeforetrigger ON xtdesktop.pkgimage;  xtdesktopadminfalse2276713& 26201698104pkgmetasqlaftertriggerTRIGGERCREATE TRIGGER pkgmetasqlaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgmetasql FOR EACH ROW EXECUTE PROCEDURE public._pkgmetasqlaftertrigger(); =DROP TRIGGER pkgmetasqlaftertrigger ON xtdesktop.pkgmetasql;  xtdesktopadminfalse7142245% 26201698105pkgmetasqlaltertriggerTRIGGERCREATE TRIGGER pkgmetasqlaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgmetasql FOR EACH ROW EXECUTE PROCEDURE public._pkgmetasqlaltertrigger(); =DROP TRIGGER pkgmetasqlaltertrigger ON xtdesktop.pkgmetasql;  xtdesktopadminfalse7142171' 26201698106pkgmetasqlbeforetriggerTRIGGERCREATE TRIGGER pkgmetasqlbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgmetasql FOR EACH ROW EXECUTE PROCEDURE public._pkgmetasqlbeforetrigger(); >DROP TRIGGER pkgmetasqlbeforetrigger ON xtdesktop.pkgmetasql;  xtdesktopadminfalse7142170) 26201698107pkgprivaftertriggerTRIGGERCREATE TRIGGER pkgprivaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgpriv FOR EACH ROW EXECUTE PROCEDURE public._pkgprivaftertrigger(); 7DROP TRIGGER pkgprivaftertrigger ON xtdesktop.pkgpriv;  xtdesktopadminfalse2176715( 26201698108pkgprivaltertriggerTRIGGERCREATE TRIGGER pkgprivaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgpriv FOR EACH ROW EXECUTE PROCEDURE public._pkgprivaltertrigger(); 7DROP TRIGGER pkgprivaltertrigger ON xtdesktop.pkgpriv;  xtdesktopadminfalse2173715* 26201698109pkgprivbeforetriggerTRIGGERCREATE TRIGGER pkgprivbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgpriv FOR EACH ROW EXECUTE PROCEDURE public._pkgprivbeforetrigger(); 8DROP TRIGGER pkgprivbeforetrigger ON xtdesktop.pkgpriv;  xtdesktopadminfalse2172715+ 26201698110pkgreportaftertriggerTRIGGERCREATE TRIGGER pkgreportaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgreport FOR EACH ROW EXECUTE PROCEDURE public._pkgreportaftertrigger(); ;DROP TRIGGER pkgreportaftertrigger ON xtdesktop.pkgreport;  xtdesktopadminfalse7162278, 26201698111pkgreportaltertriggerTRIGGERCREATE TRIGGER pkgreportaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgreport FOR EACH ROW EXECUTE PROCEDURE public._pkgreportaltertrigger(); ;DROP TRIGGER pkgreportaltertrigger ON xtdesktop.pkgreport;  xtdesktopadminfalse7162178- 26201698112pkgreportbeforetriggerTRIGGERCREATE TRIGGER pkgreportbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgreport FOR EACH ROW EXECUTE PROCEDURE public._pkgreportbeforetrigger(); <DROP TRIGGER pkgreportbeforetrigger ON xtdesktop.pkgreport;  xtdesktopadminfalse2177716. 26201698113pkgscriptaftertriggerTRIGGERCREATE TRIGGER pkgscriptaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkgscript FOR EACH ROW EXECUTE PROCEDURE public._pkgscriptaftertrigger(); ;DROP TRIGGER pkgscriptaftertrigger ON xtdesktop.pkgscript;  xtdesktopadminfalse7172279/ 26201698114pkgscriptaltertriggerTRIGGERCREATE TRIGGER pkgscriptaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgscript FOR EACH ROW EXECUTE PROCEDURE public._pkgscriptaltertrigger(); ;DROP TRIGGER pkgscriptaltertrigger ON xtdesktop.pkgscript;  xtdesktopadminfalse71721800 26201698115pkgscriptbeforetriggerTRIGGERCREATE TRIGGER pkgscriptbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkgscript FOR EACH ROW EXECUTE PROCEDURE public._pkgscriptbeforetrigger(); <DROP TRIGGER pkgscriptbeforetrigger ON xtdesktop.pkgscript;  xtdesktopadminfalse71721791 26201698116pkguiformaftertriggerTRIGGERCREATE TRIGGER pkguiformaftertrigger AFTER INSERT OR DELETE OR UPDATE ON pkguiform FOR EACH ROW EXECUTE PROCEDURE public._pkguiformaftertrigger(); ;DROP TRIGGER pkguiformaftertrigger ON xtdesktop.pkguiform;  xtdesktopadminfalse71822082 26201698117pkguiformaltertriggerTRIGGERCREATE TRIGGER pkguiformaltertrigger BEFORE INSERT OR DELETE OR UPDATE ON pkguiform FOR EACH ROW EXECUTE PROCEDURE public._pkguiformaltertrigger(); ;DROP TRIGGER pkguiformaltertrigger ON xtdesktop.pkguiform;  xtdesktopadminfalse71821823 26201698118pkguiformbeforetriggerTRIGGERCREATE TRIGGER pkguiformbeforetrigger BEFORE INSERT OR DELETE OR UPDATE ON pkguiform FOR EACH ROW EXECUTE PROCEDURE public._pkguiformbeforetrigger(); <DROP TRIGGER pkguiformbeforetrigger ON xtdesktop.pkguiform;  xtdesktopadminfalse718218126061698150pkgcmdarg_cmdarg_cmd_id_fkey FK CONSTRAINTALTER TABLE ONLY pkgcmdarg ADD CONSTRAINT pkgcmdarg_cmdarg_cmd_id_fkey FOREIGN KEY (cmdarg_cmd_id) REFERENCES pkgcmd(cmd_id); TALTER TABLE ONLY fixcountry.pkgcmdarg DROP CONSTRAINT pkgcmdarg_cmdarg_cmd_id_fkey;  fixcountryadminfalse2642617048B26061698155accnt_accnt_company_fkey FK CONSTRAINTALTER TABLE ONLY accnt ADD CONSTRAINT accnt_accnt_company_fkey FOREIGN KEY (accnt_company) REFERENCES company(company_number) ON UPDATE CASCADE; HALTER TABLE ONLY public.accnt DROP CONSTRAINT accnt_accnt_company_fkey; publicadminfalse1993817184C26061698160accnt_to_curr_symbol FK CONSTRAINT|ALTER TABLE ONLY accnt ADD CONSTRAINT accnt_to_curr_symbol FOREIGN KEY (accnt_curr_id) REFERENCES curr_symbol(curr_id); DALTER TABLE ONLY public.accnt DROP CONSTRAINT accnt_to_curr_symbol; publicadminfalse666619915626061698165!apapply_apapply_checkhead_id_fkey FK CONSTRAINTALTER TABLE ONLY apapply ADD CONSTRAINT apapply_apapply_checkhead_id_fkey FOREIGN KEY (apapply_checkhead_id) REFERENCES checkhead(checkhead_id); SALTER TABLE ONLY public.apapply DROP CONSTRAINT apapply_apapply_checkhead_id_fkey; publicadminfalse289348714726061698170apapply_apapply_vend_id_fkey FK CONSTRAINTALTER TABLE ONLY apapply ADD CONSTRAINT apapply_apapply_vend_id_fkey FOREIGN KEY (apapply_vend_id) REFERENCES vendinfo(vend_id); NALTER TABLE ONLY public.apapply DROP CONSTRAINT apapply_apapply_vend_id_fkey; publicadminfalse289158667326061698175apapply_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY apapply ADD CONSTRAINT apapply_to_curr_symbol FOREIGN KEY (apapply_curr_id) REFERENCES curr_symbol(curr_id); HALTER TABLE ONLY public.apapply DROP CONSTRAINT apapply_to_curr_symbol; publicadminfalse289156666626061698180apcreditapply_curr_symbol FK CONSTRAINTALTER TABLE ONLY apcreditapply ADD CONSTRAINT apcreditapply_curr_symbol FOREIGN KEY (apcreditapply_curr_id) REFERENCES curr_symbol(curr_id); QALTER TABLE ONLY public.apcreditapply DROP CONSTRAINT apcreditapply_curr_symbol; publicadminfalse291156666626061698185apopen_apopen_vend_id_fkey FK CONSTRAINTALTER TABLE ONLY apopen ADD CONSTRAINT apopen_apopen_vend_id_fkey FOREIGN KEY (apopen_vend_id) REFERENCES vendinfo(vend_id); KALTER TABLE ONLY public.apopen DROP CONSTRAINT apopen_apopen_vend_id_fkey; publicadminfalse155158667326061698190apopen_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY apopen ADD CONSTRAINT apopen_to_curr_symbol FOREIGN KEY (apopen_curr_id) REFERENCES curr_symbol(curr_id); FALTER TABLE ONLY public.apopen DROP CONSTRAINT apopen_to_curr_symbol; publicadminfalse155156666626061698195#apopentax_taxhist_basis_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY apopentax ADD CONSTRAINT apopentax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); WALTER TABLE ONLY public.apopentax DROP CONSTRAINT apopentax_taxhist_basis_tax_id_fkey; publicadminfalse295247700826061698200 apopentax_taxhist_parent_id_fkey FK CONSTRAINTALTER TABLE ONLY apopentax ADD CONSTRAINT apopentax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES apopen(apopen_id) ON DELETE CASCADE; TALTER TABLE ONLY public.apopentax DROP CONSTRAINT apopentax_taxhist_parent_id_fkey; publicadminfalse666029515526061698205apopentax_taxhist_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY apopentax ADD CONSTRAINT apopentax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); QALTER TABLE ONLY public.apopentax DROP CONSTRAINT apopentax_taxhist_tax_id_fkey; publicadminfalse295247700826061698210!apopentax_taxhist_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY apopentax ADD CONSTRAINT apopentax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); UALTER TABLE ONLY public.apopentax DROP CONSTRAINT apopentax_taxhist_taxtype_id_fkey; publicadminfalse295170673326061698215apselect_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY apselect ADD CONSTRAINT apselect_to_curr_symbol FOREIGN KEY (apselect_curr_id) REFERENCES curr_symbol(curr_id); JALTER TABLE ONLY public.apselect DROP CONSTRAINT apselect_to_curr_symbol; publicadminfalse296156666626061698220arapply_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY arapply ADD CONSTRAINT arapply_to_curr_symbol FOREIGN KEY (arapply_curr_id) REFERENCES curr_symbol(curr_id); HALTER TABLE ONLY public.arapply DROP CONSTRAINT arapply_to_curr_symbol; publicadminfalse300156666626061698225arcreditapply_curr_symbol FK CONSTRAINTALTER TABLE ONLY arcreditapply ADD CONSTRAINT arcreditapply_curr_symbol FOREIGN KEY (arcreditapply_curr_id) REFERENCES curr_symbol(curr_id); QALTER TABLE ONLY public.arcreditapply DROP CONSTRAINT arcreditapply_curr_symbol; publicadminfalse303156666626061698230aropen_aropen_cust_id_fkey FK CONSTRAINTALTER TABLE ONLY aropen ADD CONSTRAINT aropen_aropen_cust_id_fkey FOREIGN KEY (aropen_cust_id) REFERENCES custinfo(cust_id); KALTER TABLE ONLY public.aropen DROP CONSTRAINT aropen_aropen_cust_id_fkey; publicadminfalse159160668526061698235aropen_aropen_salesrep_id_fkey FK CONSTRAINTALTER TABLE ONLY aropen ADD CONSTRAINT aropen_aropen_salesrep_id_fkey FOREIGN KEY (aropen_salesrep_id) REFERENCES salesrep(salesrep_id); OALTER TABLE ONLY public.aropen DROP CONSTRAINT aropen_aropen_salesrep_id_fkey; publicadminfalse159163669726061698240aropen_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY aropen ADD CONSTRAINT aropen_to_curr_symbol FOREIGN KEY (aropen_curr_id) REFERENCES curr_symbol(curr_id); FALTER TABLE ONLY public.aropen DROP CONSTRAINT aropen_to_curr_symbol; publicadminfalse159156666626061698245#aropentax_taxhist_basis_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY aropentax ADD CONSTRAINT aropentax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); WALTER TABLE ONLY public.aropentax DROP CONSTRAINT aropentax_taxhist_basis_tax_id_fkey; publicadminfalse307247700826061698250 aropentax_taxhist_parent_id_fkey FK CONSTRAINTALTER TABLE ONLY aropentax ADD CONSTRAINT aropentax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES aropen(aropen_id) ON DELETE CASCADE; TALTER TABLE ONLY public.aropentax DROP CONSTRAINT aropentax_taxhist_parent_id_fkey; publicadminfalse307159668126061698255aropentax_taxhist_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY aropentax ADD CONSTRAINT aropentax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); QALTER TABLE ONLY public.aropentax DROP CONSTRAINT aropentax_taxhist_tax_id_fkey; publicadminfalse307247700826061698260!aropentax_taxhist_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY aropentax ADD CONSTRAINT aropentax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); UALTER TABLE ONLY public.aropentax DROP CONSTRAINT aropentax_taxhist_taxtype_id_fkey; publicadminfalse307170673326061698265asohist_asohist_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY asohist ADD CONSTRAINT asohist_asohist_taxtype_id_fkey FOREIGN KEY (asohist_taxtype_id) REFERENCES taxtype(taxtype_id); QALTER TABLE ONLY public.asohist DROP CONSTRAINT asohist_asohist_taxtype_id_fkey; publicadminfalse308170673326061698270asohist_asohist_taxzone_id_fkey FK CONSTRAINTALTER TABLE ONLY asohist ADD CONSTRAINT asohist_asohist_taxzone_id_fkey FOREIGN KEY (asohist_taxzone_id) REFERENCES taxzone(taxzone_id); QALTER TABLE ONLY public.asohist DROP CONSTRAINT asohist_asohist_taxzone_id_fkey; publicadminfalse308166671026061698275asohist_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY asohist ADD CONSTRAINT asohist_to_curr_symbol FOREIGN KEY (asohist_curr_id) REFERENCES curr_symbol(curr_id); HALTER TABLE ONLY public.asohist DROP CONSTRAINT asohist_to_curr_symbol; publicadminfalse308156666626061698280$asohisttax_taxhist_basis_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY asohisttax ADD CONSTRAINT asohisttax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); YALTER TABLE ONLY public.asohisttax DROP CONSTRAINT asohisttax_taxhist_basis_tax_id_fkey; publicadminfalse310247700826061698285!asohisttax_taxhist_parent_id_fkey FK CONSTRAINTALTER TABLE ONLY asohisttax ADD CONSTRAINT asohisttax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES asohist(asohist_id) ON DELETE CASCADE; VALTER TABLE ONLY public.asohisttax DROP CONSTRAINT asohisttax_taxhist_parent_id_fkey; publicadminfalse310308710626061698290asohisttax_taxhist_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY asohisttax ADD CONSTRAINT asohisttax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); SALTER TABLE ONLY public.asohisttax DROP CONSTRAINT asohisttax_taxhist_tax_id_fkey; publicadminfalse310247700826061698295"asohisttax_taxhist_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY asohisttax ADD CONSTRAINT asohisttax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); WALTER TABLE ONLY public.asohisttax DROP CONSTRAINT asohisttax_taxhist_taxtype_id_fkey; publicadminfalse3101706733F26061698300bankaccnt_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY bankaccnt ADD CONSTRAINT bankaccnt_to_curr_symbol FOREIGN KEY (bankaccnt_curr_id) REFERENCES curr_symbol(curr_id); LALTER TABLE ONLY public.bankaccnt DROP CONSTRAINT bankaccnt_to_curr_symbol; publicadminfalse202156666626061698305bankadj_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY bankadj ADD CONSTRAINT bankadj_to_curr_symbol FOREIGN KEY (bankadj_curr_id) REFERENCES curr_symbol(curr_id); HALTER TABLE ONLY public.bankadj DROP CONSTRAINT bankadj_to_curr_symbol; publicadminfalse3151566666?26061698310bomhead_bomhead_item_id_fkey FK CONSTRAINTALTER TABLE ONLY bomhead ADD CONSTRAINT bomhead_bomhead_item_id_fkey FOREIGN KEY (bomhead_item_id) REFERENCES item(item_id) ON UPDATE RESTRICT ON DELETE CASCADE; NALTER TABLE ONLY public.bomhead DROP CONSTRAINT bomhead_bomhead_item_id_fkey; publicadminfalse196168672226061698315bomitem_bomitem_char_id_fkey FK CONSTRAINTALTER TABLE ONLY bomitem ADD CONSTRAINT bomitem_bomitem_char_id_fkey FOREIGN KEY (bomitem_char_id) REFERENCES "char"(char_id); NALTER TABLE ONLY public.bomitem DROP CONSTRAINT bomitem_bomitem_char_id_fkey; publicadminfalse151185680726061698320bomitem_bomitem_item_id_fkey FK CONSTRAINTALTER TABLE ONLY bomitem ADD CONSTRAINT bomitem_bomitem_item_id_fkey FOREIGN KEY (bomitem_item_id) REFERENCES item(item_id); NALTER TABLE ONLY public.bomitem DROP CONSTRAINT bomitem_bomitem_item_id_fkey; publicadminfalse151168672226061698325#bomitem_bomitem_parent_item_id_fkey FK CONSTRAINTALTER TABLE ONLY bomitem ADD CONSTRAINT bomitem_bomitem_parent_item_id_fkey FOREIGN KEY (bomitem_parent_item_id) REFERENCES item(item_id) ON UPDATE RESTRICT ON DELETE CASCADE; UALTER TABLE ONLY public.bomitem DROP CONSTRAINT bomitem_bomitem_parent_item_id_fkey; publicadminfalse151168672226061698330bomitem_bomitem_uom_id_fkey FK CONSTRAINT}ALTER TABLE ONLY bomitem ADD CONSTRAINT bomitem_bomitem_uom_id_fkey FOREIGN KEY (bomitem_uom_id) REFERENCES uom(uom_id); MALTER TABLE ONLY public.bomitem DROP CONSTRAINT bomitem_bomitem_uom_id_fkey; publicadminfalse151171673726061698335'bomitemcost_bomitemcost_bomitem_id_fkey FK CONSTRAINTALTER TABLE ONLY bomitemcost ADD CONSTRAINT bomitemcost_bomitemcost_bomitem_id_fkey FOREIGN KEY (bomitemcost_bomitem_id) REFERENCES bomitem(bomitem_id); ]ALTER TABLE ONLY public.bomitemcost DROP CONSTRAINT bomitemcost_bomitemcost_bomitem_id_fkey; publicadminfalse325151664226061698340(bomitemcost_bomitemcost_costelem_id_fkey FK CONSTRAINTALTER TABLE ONLY bomitemcost ADD CONSTRAINT bomitemcost_bomitemcost_costelem_id_fkey FOREIGN KEY (bomitemcost_costelem_id) REFERENCES costelem(costelem_id); ^ALTER TABLE ONLY public.bomitemcost DROP CONSTRAINT bomitemcost_bomitemcost_costelem_id_fkey; publicadminfalse325227693426061698345$bomitemcost_bomitemcost_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY bomitemcost ADD CONSTRAINT bomitemcost_bomitemcost_curr_id_fkey FOREIGN KEY (bomitemcost_curr_id) REFERENCES curr_symbol(curr_id); ZALTER TABLE ONLY public.bomitemcost DROP CONSTRAINT bomitemcost_bomitemcost_curr_id_fkey; publicadminfalse3251566666A26061698350%bomitemsub_bomitemsub_bomitem_id_fkey FK CONSTRAINTALTER TABLE ONLY bomitemsub ADD CONSTRAINT bomitemsub_bomitemsub_bomitem_id_fkey FOREIGN KEY (bomitemsub_bomitem_id) REFERENCES bomitem(bomitem_id) ON UPDATE RESTRICT ON DELETE CASCADE; ZALTER TABLE ONLY public.bomitemsub DROP CONSTRAINT bomitemsub_bomitemsub_bomitem_id_fkey; publicadminfalse6642197151@26061698355"bomitemsub_bomitemsub_item_id_fkey FK CONSTRAINTALTER TABLE ONLY bomitemsub ADD CONSTRAINT bomitemsub_bomitemsub_item_id_fkey FOREIGN KEY (bomitemsub_item_id) REFERENCES item(item_id) ON UPDATE RESTRICT ON DELETE CASCADE; WALTER TABLE ONLY public.bomitemsub DROP CONSTRAINT bomitemsub_bomitemsub_item_id_fkey; publicadminfalse197168672226061698360bomwork_bomwork_char_id_fkey FK CONSTRAINTALTER TABLE ONLY bomwork ADD CONSTRAINT bomwork_bomwork_char_id_fkey FOREIGN KEY (bomwork_char_id) REFERENCES "char"(char_id); NALTER TABLE ONLY public.bomwork DROP CONSTRAINT bomwork_bomwork_char_id_fkey; publicadminfalse3281856807E26061698365"budgitem_budgitem_budghead_id_fkey FK CONSTRAINTALTER TABLE ONLY budgitem ADD CONSTRAINT budgitem_budgitem_budghead_id_fkey FOREIGN KEY (budgitem_budghead_id) REFERENCES budghead(budghead_id); UALTER TABLE ONLY public.budgitem DROP CONSTRAINT budgitem_budgitem_budghead_id_fkey; publicadminfalse2001986835D26061698370 budgitem_budgitem_period_id_fkey FK CONSTRAINTALTER TABLE ONLY budgitem ADD CONSTRAINT budgitem_budgitem_period_id_fkey FOREIGN KEY (budgitem_period_id) REFERENCES period(period_id); SALTER TABLE ONLY public.budgitem DROP CONSTRAINT budgitem_budgitem_period_id_fkey; publicadminfalse2002016842G26061698375$cashrcpt_bankaccnt_bankaccnt_id_fkey FK CONSTRAINTALTER TABLE ONLY cashrcpt ADD CONSTRAINT cashrcpt_bankaccnt_bankaccnt_id_fkey FOREIGN KEY (cashrcpt_bankaccnt_id) REFERENCES bankaccnt(bankaccnt_id); WALTER TABLE ONLY public.cashrcpt DROP CONSTRAINT cashrcpt_bankaccnt_bankaccnt_id_fkey; publicadminfalse2032026846H26061698380cashrcpt_cust_cust_id_fkey FK CONSTRAINTALTER TABLE ONLY cashrcpt ADD CONSTRAINT cashrcpt_cust_cust_id_fkey FOREIGN KEY (cashrcpt_cust_id) REFERENCES custinfo(cust_id); MALTER TABLE ONLY public.cashrcpt DROP CONSTRAINT cashrcpt_cust_cust_id_fkey; publicadminfalse2031606685I26061698385cashrcpt_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY cashrcpt ADD CONSTRAINT cashrcpt_to_curr_symbol FOREIGN KEY (cashrcpt_curr_id) REFERENCES curr_symbol(curr_id); JALTER TABLE ONLY public.cashrcpt DROP CONSTRAINT cashrcpt_to_curr_symbol; publicadminfalse2031566666K26061698390"cashrcptitem_aropen_aropen_id_fkey FK CONSTRAINTALTER TABLE ONLY cashrcptitem ADD CONSTRAINT cashrcptitem_aropen_aropen_id_fkey FOREIGN KEY (cashrcptitem_aropen_id) REFERENCES aropen(aropen_id); YALTER TABLE ONLY public.cashrcptitem DROP CONSTRAINT cashrcptitem_aropen_aropen_id_fkey; publicadminfalse2041596681J26061698395&cashrcptitem_cashrcpt_cashrcpt_id_fkey FK CONSTRAINTALTER TABLE ONLY cashrcptitem ADD CONSTRAINT cashrcptitem_cashrcpt_cashrcpt_id_fkey FOREIGN KEY (cashrcptitem_cashrcpt_id) REFERENCES cashrcpt(cashrcpt_id); ]ALTER TABLE ONLY public.cashrcptitem DROP CONSTRAINT cashrcptitem_cashrcpt_cashrcpt_id_fkey; publicadminfalse2042036850M26061698400 cashrcptmisc_accnt_accnt_id_fkey FK CONSTRAINTALTER TABLE ONLY cashrcptmisc ADD CONSTRAINT cashrcptmisc_accnt_accnt_id_fkey FOREIGN KEY (cashrcptmisc_accnt_id) REFERENCES accnt(accnt_id); WALTER TABLE ONLY public.cashrcptmisc DROP CONSTRAINT cashrcptmisc_accnt_accnt_id_fkey; publicadminfalse2051996837L26061698405&cashrcptmisc_cashrcpt_cashrcpt_id_fkey FK CONSTRAINTALTER TABLE ONLY cashrcptmisc ADD CONSTRAINT cashrcptmisc_cashrcpt_cashrcpt_id_fkey FOREIGN KEY (cashrcptmisc_cashrcpt_id) REFERENCES cashrcpt(cashrcpt_id); ]ALTER TABLE ONLY public.cashrcptmisc DROP CONSTRAINT cashrcptmisc_cashrcpt_cashrcpt_id_fkey; publicadminfalse2052036850N26061698410ccard_ccard_cust_id_fkey FK CONSTRAINT}ALTER TABLE ONLY ccard ADD CONSTRAINT ccard_ccard_cust_id_fkey FOREIGN KEY (ccard_cust_id) REFERENCES custinfo(cust_id); HALTER TABLE ONLY public.ccard DROP CONSTRAINT ccard_ccard_cust_id_fkey; publicadminfalse160206668526061698415ccbank_ccbank_bankaccnt_id_fkey FK CONSTRAINTALTER TABLE ONLY ccbank ADD CONSTRAINT ccbank_ccbank_bankaccnt_id_fkey FOREIGN KEY (ccbank_bankaccnt_id) REFERENCES bankaccnt(bankaccnt_id); PALTER TABLE ONLY public.ccbank DROP CONSTRAINT ccbank_ccbank_bankaccnt_id_fkey; publicadminfalse340202684626061698420charopt_charopt_char_id_fkey FK CONSTRAINTALTER TABLE ONLY charopt ADD CONSTRAINT charopt_charopt_char_id_fkey FOREIGN KEY (charopt_char_id) REFERENCES "char"(char_id) ON DELETE CASCADE; NALTER TABLE ONLY public.charopt DROP CONSTRAINT charopt_charopt_char_id_fkey; publicadminfalse680734618526061698425%checkhead_checkhead_bankaccnt_id_fkey FK CONSTRAINTALTER TABLE ONLY checkhead ADD CONSTRAINT checkhead_checkhead_bankaccnt_id_fkey FOREIGN KEY (checkhead_bankaccnt_id) REFERENCES bankaccnt(bankaccnt_id); YALTER TABLE ONLY public.checkhead DROP CONSTRAINT checkhead_checkhead_bankaccnt_id_fkey; publicadminfalse348202684626061698430 checkhead_checkhead_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY checkhead ADD CONSTRAINT checkhead_checkhead_curr_id_fkey FOREIGN KEY (checkhead_curr_id) REFERENCES curr_symbol(curr_id); TALTER TABLE ONLY public.checkhead DROP CONSTRAINT checkhead_checkhead_curr_id_fkey; publicadminfalse348156666626061698435"checkhead_checkhead_expcat_id_fkey FK CONSTRAINTALTER TABLE ONLY checkhead ADD CONSTRAINT checkhead_checkhead_expcat_id_fkey FOREIGN KEY (checkhead_expcat_id) REFERENCES expcat(expcat_id); VALTER TABLE ONLY public.checkhead DROP CONSTRAINT checkhead_checkhead_expcat_id_fkey; publicadminfalse700234824526061698440"checkitem_checkitem_apopen_id_fkey FK CONSTRAINTALTER TABLE ONLY checkitem ADD CONSTRAINT checkitem_checkitem_apopen_id_fkey FOREIGN KEY (checkitem_apopen_id) REFERENCES apopen(apopen_id); VALTER TABLE ONLY public.checkitem DROP CONSTRAINT checkitem_checkitem_apopen_id_fkey; publicadminfalse350155666026061698445"checkitem_checkitem_aropen_id_fkey FK CONSTRAINTALTER TABLE ONLY checkitem ADD CONSTRAINT checkitem_checkitem_aropen_id_fkey FOREIGN KEY (checkitem_aropen_id) REFERENCES aropen(aropen_id); VALTER TABLE ONLY public.checkitem DROP CONSTRAINT checkitem_checkitem_aropen_id_fkey; publicadminfalse350159668126061698450%checkitem_checkitem_checkhead_id_fkey FK CONSTRAINTALTER TABLE ONLY checkitem ADD CONSTRAINT checkitem_checkitem_checkhead_id_fkey FOREIGN KEY (checkitem_checkhead_id) REFERENCES checkhead(checkhead_id); YALTER TABLE ONLY public.checkitem DROP CONSTRAINT checkitem_checkitem_checkhead_id_fkey; publicadminfalse350348714726061698455 checkitem_checkitem_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY checkitem ADD CONSTRAINT checkitem_checkitem_curr_id_fkey FOREIGN KEY (checkitem_curr_id) REFERENCES curr_symbol(curr_id); TALTER TABLE ONLY public.checkitem DROP CONSTRAINT checkitem_checkitem_curr_id_fkey; publicadminfalse666635015626061698460cmdarg_cmdarg_cmd_id_fkey FK CONSTRAINTALTER TABLE ONLY cmdarg ADD CONSTRAINT cmdarg_cmdarg_cmd_id_fkey FOREIGN KEY (cmdarg_cmd_id) REFERENCES cmd(cmd_id) ON DELETE CASCADE; JALTER TABLE ONLY public.cmdarg DROP CONSTRAINT cmdarg_cmdarg_cmd_id_fkey; publicadminfalse262259704626061698465cmhead_cmhead_cust_id_fkey FK CONSTRAINTALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_cmhead_cust_id_fkey FOREIGN KEY (cmhead_cust_id) REFERENCES custinfo(cust_id); KALTER TABLE ONLY public.cmhead DROP CONSTRAINT cmhead_cmhead_cust_id_fkey; publicadminfalse164160668526061698470$cmhead_cmhead_freighttaxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_cmhead_freighttaxtype_id_fkey FOREIGN KEY (cmhead_freighttaxtype_id) REFERENCES taxtype(taxtype_id); UALTER TABLE ONLY public.cmhead DROP CONSTRAINT cmhead_cmhead_freighttaxtype_id_fkey; publicadminfalse164170673326061698475cmhead_cmhead_prj_id_fkey FK CONSTRAINTyALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_cmhead_prj_id_fkey FOREIGN KEY (cmhead_prj_id) REFERENCES prj(prj_id); JALTER TABLE ONLY public.cmhead DROP CONSTRAINT cmhead_cmhead_prj_id_fkey; publicadminfalse164174675126061698480cmhead_cmhead_salesrep_id_fkey FK CONSTRAINTALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_cmhead_salesrep_id_fkey FOREIGN KEY (cmhead_salesrep_id) REFERENCES salesrep(salesrep_id); OALTER TABLE ONLY public.cmhead DROP CONSTRAINT cmhead_cmhead_salesrep_id_fkey; publicadminfalse164163669726061746340cmhead_cmhead_saletype_id_fkey FK CONSTRAINTALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_cmhead_saletype_id_fkey FOREIGN KEY (cmhead_saletype_id) REFERENCES saletype(saletype_id); OALTER TABLE ONLY public.cmhead DROP CONSTRAINT cmhead_cmhead_saletype_id_fkey; publicadminfalse164722759126061746345cmhead_cmhead_shipzone_id_fkey FK CONSTRAINTALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_cmhead_shipzone_id_fkey FOREIGN KEY (cmhead_shipzone_id) REFERENCES shipzone(shipzone_id); OALTER TABLE ONLY public.cmhead DROP CONSTRAINT cmhead_cmhead_shipzone_id_fkey; publicadminfalse164212687526061698485cmhead_cmhead_taxzone_id_fkey FK CONSTRAINTALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_cmhead_taxzone_id_fkey FOREIGN KEY (cmhead_taxzone_id) REFERENCES taxzone(taxzone_id); NALTER TABLE ONLY public.cmhead DROP CONSTRAINT cmhead_cmhead_taxzone_id_fkey; publicadminfalse164166671026061698490cmhead_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY cmhead ADD CONSTRAINT cmhead_to_curr_symbol FOREIGN KEY (cmhead_curr_id) REFERENCES curr_symbol(curr_id); FALTER TABLE ONLY public.cmhead DROP CONSTRAINT cmhead_to_curr_symbol; publicadminfalse164156666626061698495#cmheadtax_taxhist_basis_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY cmheadtax ADD CONSTRAINT cmheadtax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); WALTER TABLE ONLY public.cmheadtax DROP CONSTRAINT cmheadtax_taxhist_basis_tax_id_fkey; publicadminfalse354247700826061698500 cmheadtax_taxhist_parent_id_fkey FK CONSTRAINTALTER TABLE ONLY cmheadtax ADD CONSTRAINT cmheadtax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES cmhead(cmhead_id) ON DELETE CASCADE; TALTER TABLE ONLY public.cmheadtax DROP CONSTRAINT cmheadtax_taxhist_parent_id_fkey; publicadminfalse164670435426061698505cmheadtax_taxhist_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY cmheadtax ADD CONSTRAINT cmheadtax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); QALTER TABLE ONLY public.cmheadtax DROP CONSTRAINT cmheadtax_taxhist_tax_id_fkey; publicadminfalse354247700826061698510!cmheadtax_taxhist_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY cmheadtax ADD CONSTRAINT cmheadtax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); UALTER TABLE ONLY public.cmheadtax DROP CONSTRAINT cmheadtax_taxhist_taxtype_id_fkey; publicadminfalse170673335426061698515cmitem_cmhead_id_fkey FK CONSTRAINTALTER TABLE ONLY cmitem ADD CONSTRAINT cmitem_cmhead_id_fkey FOREIGN KEY (cmitem_cmhead_id) REFERENCES cmhead(cmhead_id) ON UPDATE CASCADE ON DELETE CASCADE; FALTER TABLE ONLY public.cmitem DROP CONSTRAINT cmitem_cmhead_id_fkey; publicadminfalse167164670426061698520cmitem_cmitem_price_uom_id_fkey FK CONSTRAINTALTER TABLE ONLY cmitem ADD CONSTRAINT cmitem_cmitem_price_uom_id_fkey FOREIGN KEY (cmitem_price_uom_id) REFERENCES uom(uom_id); PALTER TABLE ONLY public.cmitem DROP CONSTRAINT cmitem_cmitem_price_uom_id_fkey; publicadminfalse167171673726061698525cmitem_cmitem_qty_uom_id_fkey FK CONSTRAINTALTER TABLE ONLY cmitem ADD CONSTRAINT cmitem_cmitem_qty_uom_id_fkey FOREIGN KEY (cmitem_qty_uom_id) REFERENCES uom(uom_id); NALTER TABLE ONLY public.cmitem DROP CONSTRAINT cmitem_cmitem_qty_uom_id_fkey; publicadminfalse167171673726061698530cmitem_cmitem_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY cmitem ADD CONSTRAINT cmitem_cmitem_taxtype_id_fkey FOREIGN KEY (cmitem_taxtype_id) REFERENCES taxtype(taxtype_id); NALTER TABLE ONLY public.cmitem DROP CONSTRAINT cmitem_cmitem_taxtype_id_fkey; publicadminfalse167170673326061698535#cmitemtax_taxhist_basis_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY cmitemtax ADD CONSTRAINT cmitemtax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); WALTER TABLE ONLY public.cmitemtax DROP CONSTRAINT cmitemtax_taxhist_basis_tax_id_fkey; publicadminfalse356247700826061698540 cmitemtax_taxhist_parent_id_fkey FK CONSTRAINTALTER TABLE ONLY cmitemtax ADD CONSTRAINT cmitemtax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES cmitem(cmitem_id) ON DELETE CASCADE; TALTER TABLE ONLY public.cmitemtax DROP CONSTRAINT cmitemtax_taxhist_parent_id_fkey; publicadminfalse356167671626061698545cmitemtax_taxhist_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY cmitemtax ADD CONSTRAINT cmitemtax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); QALTER TABLE ONLY public.cmitemtax DROP CONSTRAINT cmitemtax_taxhist_tax_id_fkey; publicadminfalse356247700826061698550!cmitemtax_taxhist_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY cmitemtax ADD CONSTRAINT cmitemtax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); UALTER TABLE ONLY public.cmitemtax DROP CONSTRAINT cmitemtax_taxhist_taxtype_id_fkey; publicadminfalse356170673326061698555cntct_cntct_addr_id_fkey FK CONSTRAINTyALTER TABLE ONLY cntct ADD CONSTRAINT cntct_cntct_addr_id_fkey FOREIGN KEY (cntct_addr_id) REFERENCES addr(addr_id); HALTER TABLE ONLY public.cntct DROP CONSTRAINT cntct_cntct_addr_id_fkey; publicadminfalse152184680326061698560cntct_cntct_crmacct_id_fkey FK CONSTRAINTALTER TABLE ONLY cntct ADD CONSTRAINT cntct_cntct_crmacct_id_fkey FOREIGN KEY (cntct_crmacct_id) REFERENCES crmacct(crmacct_id); KALTER TABLE ONLY public.cntct DROP CONSTRAINT cntct_cntct_crmacct_id_fkey; publicadminfalse152153665226061698565 cntctaddr_cntctaddr_addr_id_fkey FK CONSTRAINTALTER TABLE ONLY cntctaddr ADD CONSTRAINT cntctaddr_cntctaddr_addr_id_fkey FOREIGN KEY (cntctaddr_addr_id) REFERENCES addr(addr_id); TALTER TABLE ONLY public.cntctaddr DROP CONSTRAINT cntctaddr_cntctaddr_addr_id_fkey; publicadminfalse361184680326061698570!cntctaddr_cntctaddr_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY cntctaddr ADD CONSTRAINT cntctaddr_cntctaddr_cntct_id_fkey FOREIGN KEY (cntctaddr_cntct_id) REFERENCES cntct(cntct_id) ON DELETE CASCADE; UALTER TABLE ONLY public.cntctaddr DROP CONSTRAINT cntctaddr_cntctaddr_cntct_id_fkey; publicadminfalse361152664826061698575!cntctdata_cntctdata_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY cntctdata ADD CONSTRAINT cntctdata_cntctdata_cntct_id_fkey FOREIGN KEY (cntctdata_cntct_id) REFERENCES cntct(cntct_id) ON DELETE CASCADE; UALTER TABLE ONLY public.cntctdata DROP CONSTRAINT cntctdata_cntctdata_cntct_id_fkey; publicadminfalse363152664826061698580cntcteml_cntcteml_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY cntcteml ADD CONSTRAINT cntcteml_cntcteml_cntct_id_fkey FOREIGN KEY (cntcteml_cntct_id) REFERENCES cntct(cntct_id) ON DELETE CASCADE; RALTER TABLE ONLY public.cntcteml DROP CONSTRAINT cntcteml_cntcteml_cntct_id_fkey; publicadminfalse365152664826061698585!cntctmrgd_cntctmrgd_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY cntctmrgd ADD CONSTRAINT cntctmrgd_cntctmrgd_cntct_id_fkey FOREIGN KEY (cntctmrgd_cntct_id) REFERENCES cntct(cntct_id) ON DELETE CASCADE; UALTER TABLE ONLY public.cntctmrgd DROP CONSTRAINT cntctmrgd_cntctmrgd_cntct_id_fkey; publicadminfalse367152664826061698590cntctsel_cntctsel_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY cntctsel ADD CONSTRAINT cntctsel_cntctsel_cntct_id_fkey FOREIGN KEY (cntctsel_cntct_id) REFERENCES cntct(cntct_id) ON DELETE CASCADE; RALTER TABLE ONLY public.cntctsel DROP CONSTRAINT cntctsel_cntctsel_cntct_id_fkey; publicadminfalse368152664826061698595cobill_cobill_invcitem_id_fkey FK CONSTRAINTALTER TABLE ONLY cobill ADD CONSTRAINT cobill_cobill_invcitem_id_fkey FOREIGN KEY (cobill_invcitem_id) REFERENCES invcitem(invcitem_id); OALTER TABLE ONLY public.cobill DROP CONSTRAINT cobill_cobill_invcitem_id_fkey; publicadminfalse371175675926061698600cobill_cobill_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY cobill ADD CONSTRAINT cobill_cobill_taxtype_id_fkey FOREIGN KEY (cobill_taxtype_id) REFERENCES taxtype(taxtype_id); NALTER TABLE ONLY public.cobill DROP CONSTRAINT cobill_cobill_taxtype_id_fkey; publicadminfalse371170673326061698605#cobilltax_taxhist_basis_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY cobilltax ADD CONSTRAINT cobilltax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); WALTER TABLE ONLY public.cobilltax DROP CONSTRAINT cobilltax_taxhist_basis_tax_id_fkey; publicadminfalse373247700826061698610 cobilltax_taxhist_parent_id_fkey FK CONSTRAINTALTER TABLE ONLY cobilltax ADD CONSTRAINT cobilltax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES cobill(cobill_id) ON DELETE CASCADE; TALTER TABLE ONLY public.cobilltax DROP CONSTRAINT cobilltax_taxhist_parent_id_fkey; publicadminfalse373371717426061698615cobilltax_taxhist_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY cobilltax ADD CONSTRAINT cobilltax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); QALTER TABLE ONLY public.cobilltax DROP CONSTRAINT cobilltax_taxhist_tax_id_fkey; publicadminfalse373247700826061698620!cobilltax_taxhist_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY cobilltax ADD CONSTRAINT cobilltax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); UALTER TABLE ONLY public.cobilltax DROP CONSTRAINT cobilltax_taxhist_taxtype_id_fkey; publicadminfalse373170673326061698625 cobmisc_cobmisc_invchead_id_fkey FK CONSTRAINTALTER TABLE ONLY cobmisc ADD CONSTRAINT cobmisc_cobmisc_invchead_id_fkey FOREIGN KEY (cobmisc_invchead_id) REFERENCES invchead(invchead_id); RALTER TABLE ONLY public.cobmisc DROP CONSTRAINT cobmisc_cobmisc_invchead_id_fkey; publicadminfalse374173674926061698630cobmisc_cobmisc_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY cobmisc ADD CONSTRAINT cobmisc_cobmisc_taxtype_id_fkey FOREIGN KEY (cobmisc_taxtype_id) REFERENCES taxtype(taxtype_id); QALTER TABLE ONLY public.cobmisc DROP CONSTRAINT cobmisc_cobmisc_taxtype_id_fkey; publicadminfalse374170673326061698635cobmisc_cobmisc_taxzone_id_fkey FK CONSTRAINTALTER TABLE ONLY cobmisc ADD CONSTRAINT cobmisc_cobmisc_taxzone_id_fkey FOREIGN KEY (cobmisc_taxzone_id) REFERENCES taxzone(taxzone_id); QALTER TABLE ONLY public.cobmisc DROP CONSTRAINT cobmisc_cobmisc_taxzone_id_fkey; publicadminfalse374166671026061698640cobmisc_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY cobmisc ADD CONSTRAINT cobmisc_to_curr_symbol FOREIGN KEY (cobmisc_curr_id) REFERENCES curr_symbol(curr_id); HALTER TABLE ONLY public.cobmisc DROP CONSTRAINT cobmisc_to_curr_symbol; publicadminfalse374156666626061698645$cobmisctax_taxhist_basis_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY cobmisctax ADD CONSTRAINT cobmisctax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); YALTER TABLE ONLY public.cobmisctax DROP CONSTRAINT cobmisctax_taxhist_basis_tax_id_fkey; publicadminfalse376247700826061698650!cobmisctax_taxhist_parent_id_fkey FK CONSTRAINTALTER TABLE ONLY cobmisctax ADD CONSTRAINT cobmisctax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES cobmisc(cobmisc_id) ON DELETE CASCADE; VALTER TABLE ONLY public.cobmisctax DROP CONSTRAINT cobmisctax_taxhist_parent_id_fkey; publicadminfalse376374717926061698655cobmisctax_taxhist_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY cobmisctax ADD CONSTRAINT cobmisctax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); SALTER TABLE ONLY public.cobmisctax DROP CONSTRAINT cobmisctax_taxhist_tax_id_fkey; publicadminfalse376247700826061698660"cobmisctax_taxhist_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY cobmisctax ADD CONSTRAINT cobmisctax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); WALTER TABLE ONLY public.cobmisctax DROP CONSTRAINT cobmisctax_taxhist_taxtype_id_fkey; publicadminfalse3761706733 26061698665"cohead_cohead_billto_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_billto_cntct_id_fkey FOREIGN KEY (cohead_billto_cntct_id) REFERENCES cntct(cntct_id); SALTER TABLE ONLY public.cohead DROP CONSTRAINT cohead_cohead_billto_cntct_id_fkey; publicadminfalse1761526648 26061698670cohead_cohead_cust_id_fkey FK CONSTRAINTALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_cust_id_fkey FOREIGN KEY (cohead_cust_id) REFERENCES custinfo(cust_id); KALTER TABLE ONLY public.cohead DROP CONSTRAINT cohead_cohead_cust_id_fkey; publicadminfalse1761606685 26061698675 cohead_cohead_misc_accnt_id_fkey FK CONSTRAINTALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_misc_accnt_id_fkey FOREIGN KEY (cohead_misc_accnt_id) REFERENCES accnt(accnt_id); QALTER TABLE ONLY public.cohead DROP CONSTRAINT cohead_cohead_misc_accnt_id_fkey; publicadminfalse1761996837 26061698680cohead_cohead_ophead_id_fkey FK CONSTRAINTALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_ophead_id_fkey FOREIGN KEY (cohead_ophead_id) REFERENCES ophead(ophead_id); MALTER TABLE ONLY public.cohead DROP CONSTRAINT cohead_cohead_ophead_id_fkey; publicadminfalse176181679226061698685cohead_cohead_prj_id_fkey FK CONSTRAINTyALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_prj_id_fkey FOREIGN KEY (cohead_prj_id) REFERENCES prj(prj_id); JALTER TABLE ONLY public.cohead DROP CONSTRAINT cohead_cohead_prj_id_fkey; publicadminfalse176174675126061698690cohead_cohead_salesrep_id_fkey FK CONSTRAINTALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_salesrep_id_fkey FOREIGN KEY (cohead_salesrep_id) REFERENCES salesrep(salesrep_id); OALTER TABLE ONLY public.cohead DROP CONSTRAINT cohead_cohead_salesrep_id_fkey; publicadminfalse176163669726061746350cohead_cohead_saletype_id_fkey FK CONSTRAINTALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_saletype_id_fkey FOREIGN KEY (cohead_saletype_id) REFERENCES saletype(saletype_id); OALTER TABLE ONLY public.cohead DROP CONSTRAINT cohead_cohead_saletype_id_fkey; publicadminfalse176722759126061698695cohead_cohead_shipform_id_fkey FK CONSTRAINTALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_shipform_id_fkey FOREIGN KEY (cohead_shipform_id) REFERENCES shipform(shipform_id); OALTER TABLE ONLY public.cohead DROP CONSTRAINT cohead_cohead_shipform_id_fkey; publicadminfalse176209686526061698700"cohead_cohead_shipto_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_shipto_cntct_id_fkey FOREIGN KEY (cohead_shipto_cntct_id) REFERENCES cntct(cntct_id); SALTER TABLE ONLY public.cohead DROP CONSTRAINT cohead_cohead_shipto_cntct_id_fkey; publicadminfalse176152664826061698705cohead_cohead_shipto_id_fkey FK CONSTRAINTALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_shipto_id_fkey FOREIGN KEY (cohead_shipto_id) REFERENCES shiptoinfo(shipto_id); MALTER TABLE ONLY public.cohead DROP CONSTRAINT cohead_cohead_shipto_id_fkey; publicadminfalse176165670826061746355cohead_cohead_shipzone_id_fkey FK CONSTRAINTALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_shipzone_id_fkey FOREIGN KEY (cohead_shipzone_id) REFERENCES shipzone(shipzone_id); OALTER TABLE ONLY public.cohead DROP CONSTRAINT cohead_cohead_shipzone_id_fkey; publicadminfalse176212687526061698710cohead_cohead_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_taxtype_id_fkey FOREIGN KEY (cohead_taxtype_id) REFERENCES taxtype(taxtype_id); NALTER TABLE ONLY public.cohead DROP CONSTRAINT cohead_cohead_taxtype_id_fkey; publicadminfalse176170673326061698715cohead_cohead_taxzone_id_fkey FK CONSTRAINTALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_taxzone_id_fkey FOREIGN KEY (cohead_taxzone_id) REFERENCES taxzone(taxzone_id); NALTER TABLE ONLY public.cohead DROP CONSTRAINT cohead_cohead_taxzone_id_fkey; publicadminfalse176166671026061698720cohead_cohead_terms_id_fkey FK CONSTRAINTALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_terms_id_fkey FOREIGN KEY (cohead_terms_id) REFERENCES terms(terms_id); LALTER TABLE ONLY public.cohead DROP CONSTRAINT cohead_cohead_terms_id_fkey; publicadminfalse176157666826061698725cohead_cohead_warehous_id_fkey FK CONSTRAINTALTER TABLE ONLY cohead ADD CONSTRAINT cohead_cohead_warehous_id_fkey FOREIGN KEY (cohead_warehous_id) REFERENCES whsinfo(warehous_id); OALTER TABLE ONLY public.cohead DROP CONSTRAINT cohead_cohead_warehous_id_fkey; publicadminfalse176172674226061698730cohead_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY cohead ADD CONSTRAINT cohead_to_curr_symbol FOREIGN KEY (cohead_curr_id) REFERENCES curr_symbol(curr_id); FALTER TABLE ONLY public.cohead DROP CONSTRAINT cohead_to_curr_symbol; publicadminfalse176156666626061698735"cohist_cohist_cohead_ccpay_id_fkey FK CONSTRAINTALTER TABLE ONLY cohist ADD CONSTRAINT cohist_cohist_cohead_ccpay_id_fkey FOREIGN KEY (cohist_cohead_ccpay_id) REFERENCES ccpay(ccpay_id); SALTER TABLE ONLY public.cohist DROP CONSTRAINT cohist_cohist_cohead_ccpay_id_fkey; publicadminfalse252342714326061698740cohist_cohist_cust_id_fkey FK CONSTRAINTALTER TABLE ONLY cohist ADD CONSTRAINT cohist_cohist_cust_id_fkey FOREIGN KEY (cohist_cust_id) REFERENCES custinfo(cust_id); KALTER TABLE ONLY public.cohist DROP CONSTRAINT cohist_cohist_cust_id_fkey; publicadminfalse252160668526061698745cohist_cohist_salesrep_id_fkey FK CONSTRAINTALTER TABLE ONLY cohist ADD CONSTRAINT cohist_cohist_salesrep_id_fkey FOREIGN KEY (cohist_salesrep_id) REFERENCES salesrep(salesrep_id); OALTER TABLE ONLY public.cohist DROP CONSTRAINT cohist_cohist_salesrep_id_fkey; publicadminfalse252163669726061698750cohist_cohist_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY cohist ADD CONSTRAINT cohist_cohist_taxtype_id_fkey FOREIGN KEY (cohist_taxtype_id) REFERENCES taxtype(taxtype_id); NALTER TABLE ONLY public.cohist DROP CONSTRAINT cohist_cohist_taxtype_id_fkey; publicadminfalse252170673326061698755cohist_cohist_taxzone_id_fkey FK CONSTRAINTALTER TABLE ONLY cohist ADD CONSTRAINT cohist_cohist_taxzone_id_fkey FOREIGN KEY (cohist_taxzone_id) REFERENCES taxzone(taxzone_id); NALTER TABLE ONLY public.cohist DROP CONSTRAINT cohist_cohist_taxzone_id_fkey; publicadminfalse252166671026061698760cohist_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY cohist ADD CONSTRAINT cohist_to_curr_symbol FOREIGN KEY (cohist_curr_id) REFERENCES curr_symbol(curr_id); FALTER TABLE ONLY public.cohist DROP CONSTRAINT cohist_to_curr_symbol; publicadminfalse252156666626061698765#cohisttax_taxhist_basis_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY cohisttax ADD CONSTRAINT cohisttax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); WALTER TABLE ONLY public.cohisttax DROP CONSTRAINT cohisttax_taxhist_basis_tax_id_fkey; publicadminfalse255247700826061698770 cohisttax_taxhist_parent_id_fkey FK CONSTRAINTALTER TABLE ONLY cohisttax ADD CONSTRAINT cohisttax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES cohist(cohist_id) ON DELETE CASCADE; TALTER TABLE ONLY public.cohisttax DROP CONSTRAINT cohisttax_taxhist_parent_id_fkey; publicadminfalse255252702626061698775cohisttax_taxhist_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY cohisttax ADD CONSTRAINT cohisttax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); QALTER TABLE ONLY public.cohisttax DROP CONSTRAINT cohisttax_taxhist_tax_id_fkey; publicadminfalse255247700826061698780!cohisttax_taxhist_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY cohisttax ADD CONSTRAINT cohisttax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); UALTER TABLE ONLY public.cohisttax DROP CONSTRAINT cohisttax_taxhist_taxtype_id_fkey; publicadminfalse255170673326061698785coitem_coitem_cohead_id_fkey FK CONSTRAINTALTER TABLE ONLY coitem ADD CONSTRAINT coitem_coitem_cohead_id_fkey FOREIGN KEY (coitem_cohead_id) REFERENCES cohead(cohead_id) ON DELETE CASCADE; MALTER TABLE ONLY public.coitem DROP CONSTRAINT coitem_coitem_cohead_id_fkey; publicadminfalse177176676726061698790coitem_coitem_cos_accnt_id_fkey FK CONSTRAINTALTER TABLE ONLY coitem ADD CONSTRAINT coitem_coitem_cos_accnt_id_fkey FOREIGN KEY (coitem_cos_accnt_id) REFERENCES accnt(accnt_id); PALTER TABLE ONLY public.coitem DROP CONSTRAINT coitem_coitem_cos_accnt_id_fkey; publicadminfalse177199683726061698795coitem_coitem_itemsite_id_fkey FK CONSTRAINTALTER TABLE ONLY coitem ADD CONSTRAINT coitem_coitem_itemsite_id_fkey FOREIGN KEY (coitem_itemsite_id) REFERENCES itemsite(itemsite_id); OALTER TABLE ONLY public.coitem DROP CONSTRAINT coitem_coitem_itemsite_id_fkey; publicadminfalse177169672926061698800coitem_coitem_price_uom_id_fkey FK CONSTRAINTALTER TABLE ONLY coitem ADD CONSTRAINT coitem_coitem_price_uom_id_fkey FOREIGN KEY (coitem_price_uom_id) REFERENCES uom(uom_id); PALTER TABLE ONLY public.coitem DROP CONSTRAINT coitem_coitem_price_uom_id_fkey; publicadminfalse177171673726061698805coitem_coitem_qty_uom_id_fkey FK CONSTRAINTALTER TABLE ONLY coitem ADD CONSTRAINT coitem_coitem_qty_uom_id_fkey FOREIGN KEY (coitem_qty_uom_id) REFERENCES uom(uom_id); NALTER TABLE ONLY public.coitem DROP CONSTRAINT coitem_coitem_qty_uom_id_fkey; publicadminfalse177171673726061698810coitem_coitem_rev_accnt_id_fkey FK CONSTRAINTALTER TABLE ONLY coitem ADD CONSTRAINT coitem_coitem_rev_accnt_id_fkey FOREIGN KEY (coitem_rev_accnt_id) REFERENCES accnt(accnt_id); PALTER TABLE ONLY public.coitem DROP CONSTRAINT coitem_coitem_rev_accnt_id_fkey; publicadminfalse1771996837 26061698815%coitem_coitem_substitute_item_id_fkey FK CONSTRAINTALTER TABLE ONLY coitem ADD CONSTRAINT coitem_coitem_substitute_item_id_fkey FOREIGN KEY (coitem_substitute_item_id) REFERENCES item(item_id); VALTER TABLE ONLY public.coitem DROP CONSTRAINT coitem_coitem_substitute_item_id_fkey; publicadminfalse1771686722!26061698820coitem_coitem_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY coitem ADD CONSTRAINT coitem_coitem_taxtype_id_fkey FOREIGN KEY (coitem_taxtype_id) REFERENCES taxtype(taxtype_id); NALTER TABLE ONLY public.coitem DROP CONSTRAINT coitem_coitem_taxtype_id_fkey; publicadminfalse1771706733>26061698825 comment_comment_cmnttype_id_fkey FK CONSTRAINTALTER TABLE ONLY comment ADD CONSTRAINT comment_comment_cmnttype_id_fkey FOREIGN KEY (comment_cmnttype_id) REFERENCES cmnttype(cmnttype_id); RALTER TABLE ONLY public.comment DROP CONSTRAINT comment_comment_cmnttype_id_fkey; publicadminfalse188187681426061698830company_company_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY company ADD CONSTRAINT company_company_curr_id_fkey FOREIGN KEY (company_curr_id) REFERENCES curr_symbol(curr_id); NALTER TABLE ONLY public.company DROP CONSTRAINT company_company_curr_id_fkey; publicadminfalse381156666626061698835#company_company_dscrp_accnt_id_fkey FK CONSTRAINTALTER TABLE ONLY company ADD CONSTRAINT company_company_dscrp_accnt_id_fkey FOREIGN KEY (company_dscrp_accnt_id) REFERENCES accnt(accnt_id); UALTER TABLE ONLY public.company DROP CONSTRAINT company_company_dscrp_accnt_id_fkey; publicadminfalse381199683726061698840&company_company_gainloss_accnt_id_fkey FK CONSTRAINTALTER TABLE ONLY company ADD CONSTRAINT company_company_gainloss_accnt_id_fkey FOREIGN KEY (company_gainloss_accnt_id) REFERENCES accnt(accnt_id); XALTER TABLE ONLY public.company DROP CONSTRAINT company_company_gainloss_accnt_id_fkey; publicadminfalse381199683726061698845+company_company_unrlzgainloss_accnt_id_fkey FK CONSTRAINTALTER TABLE ONLY company ADD CONSTRAINT company_company_unrlzgainloss_accnt_id_fkey FOREIGN KEY (company_unrlzgainloss_accnt_id) REFERENCES accnt(accnt_id); ]ALTER TABLE ONLY public.company DROP CONSTRAINT company_company_unrlzgainloss_accnt_id_fkey; publicadminfalse381199683726061698850%company_company_yearend_accnt_id_fkey FK CONSTRAINTALTER TABLE ONLY company ADD CONSTRAINT company_company_yearend_accnt_id_fkey FOREIGN KEY (company_yearend_accnt_id) REFERENCES accnt(accnt_id); WALTER TABLE ONLY public.company DROP CONSTRAINT company_company_yearend_accnt_id_fkey; publicadminfalse3811996837N26061746322contrct_contrct_vend_id_fkey FK CONSTRAINTALTER TABLE ONLY contrct ADD CONSTRAINT contrct_contrct_vend_id_fkey FOREIGN KEY (contrct_vend_id) REFERENCES vendinfo(vend_id); NALTER TABLE ONLY public.contrct DROP CONSTRAINT contrct_contrct_vend_id_fkey; publicadminfalse720158667326061698855costhist_new_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY costhist ADD CONSTRAINT costhist_new_to_curr_symbol FOREIGN KEY (costhist_newcurr_id) REFERENCES curr_symbol(curr_id); NALTER TABLE ONLY public.costhist DROP CONSTRAINT costhist_new_to_curr_symbol; publicadminfalse388156666626061698860costhist_old_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY costhist ADD CONSTRAINT costhist_old_to_curr_symbol FOREIGN KEY (costhist_oldcurr_id) REFERENCES curr_symbol(curr_id); NALTER TABLE ONLY public.costhist DROP CONSTRAINT costhist_old_to_curr_symbol; publicadminfalse388156666626061698865crmacct_crmacct_cntct_id_1_fkey FK CONSTRAINTALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_cntct_id_1_fkey FOREIGN KEY (crmacct_cntct_id_1) REFERENCES cntct(cntct_id); QALTER TABLE ONLY public.crmacct DROP CONSTRAINT crmacct_crmacct_cntct_id_1_fkey; publicadminfalse153152664826061698870crmacct_crmacct_cntct_id_2_fkey FK CONSTRAINTALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_cntct_id_2_fkey FOREIGN KEY (crmacct_cntct_id_2) REFERENCES cntct(cntct_id); QALTER TABLE ONLY public.crmacct DROP CONSTRAINT crmacct_crmacct_cntct_id_2_fkey; publicadminfalse153152664826061698875crmacct_crmacct_cust_id_fkey FK CONSTRAINTALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_cust_id_fkey FOREIGN KEY (crmacct_cust_id) REFERENCES custinfo(cust_id); NALTER TABLE ONLY public.crmacct DROP CONSTRAINT crmacct_crmacct_cust_id_fkey; publicadminfalse153160668526061698880crmacct_crmacct_emp_id_fkey FK CONSTRAINT}ALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_emp_id_fkey FOREIGN KEY (crmacct_emp_id) REFERENCES emp(emp_id); MALTER TABLE ONLY public.crmacct DROP CONSTRAINT crmacct_crmacct_emp_id_fkey; publicadminfalse153214688726061698885crmacct_crmacct_parent_id_fkey FK CONSTRAINTALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_parent_id_fkey FOREIGN KEY (crmacct_parent_id) REFERENCES crmacct(crmacct_id); PALTER TABLE ONLY public.crmacct DROP CONSTRAINT crmacct_crmacct_parent_id_fkey; publicadminfalse153153665226061698890 crmacct_crmacct_prospect_id_fkey FK CONSTRAINTALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_prospect_id_fkey FOREIGN KEY (crmacct_prospect_id) REFERENCES prospect(prospect_id); RALTER TABLE ONLY public.crmacct DROP CONSTRAINT crmacct_crmacct_prospect_id_fkey; publicadminfalse153244699626061698895 crmacct_crmacct_salesrep_id_fkey FK CONSTRAINTALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_salesrep_id_fkey FOREIGN KEY (crmacct_salesrep_id) REFERENCES salesrep(salesrep_id); RALTER TABLE ONLY public.crmacct DROP CONSTRAINT crmacct_crmacct_salesrep_id_fkey; publicadminfalse153163669726061698900crmacct_crmacct_taxauth_id_fkey FK CONSTRAINTALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_taxauth_id_fkey FOREIGN KEY (crmacct_taxauth_id) REFERENCES taxauth(taxauth_id); QALTER TABLE ONLY public.crmacct DROP CONSTRAINT crmacct_crmacct_taxauth_id_fkey; publicadminfalse153210686926061698905crmacct_crmacct_vend_id_fkey FK CONSTRAINTALTER TABLE ONLY crmacct ADD CONSTRAINT crmacct_crmacct_vend_id_fkey FOREIGN KEY (crmacct_vend_id) REFERENCES vendinfo(vend_id); NALTER TABLE ONLY public.crmacct DROP CONSTRAINT crmacct_crmacct_vend_id_fkey; publicadminfalse153158667326061698910*crmacctsel_crmacctsel_dest_crmacct_id_fkey FK CONSTRAINTALTER TABLE ONLY crmacctsel ADD CONSTRAINT crmacctsel_crmacctsel_dest_crmacct_id_fkey FOREIGN KEY (crmacctsel_dest_crmacct_id) REFERENCES crmacct(crmacct_id) ON DELETE CASCADE; _ALTER TABLE ONLY public.crmacctsel DROP CONSTRAINT crmacctsel_crmacctsel_dest_crmacct_id_fkey; publicadminfalse395153665226061698915)crmacctsel_crmacctsel_src_crmacct_id_fkey FK CONSTRAINTALTER TABLE ONLY crmacctsel ADD CONSTRAINT crmacctsel_crmacctsel_src_crmacct_id_fkey FOREIGN KEY (crmacctsel_src_crmacct_id) REFERENCES crmacct(crmacct_id) ON DELETE CASCADE; ^ALTER TABLE ONLY public.crmacctsel DROP CONSTRAINT crmacctsel_crmacctsel_src_crmacct_id_fkey; publicadminfalse395153665226061698920curr_rate_to_curr_symbol FK CONSTRAINT~ALTER TABLE ONLY curr_rate ADD CONSTRAINT curr_rate_to_curr_symbol FOREIGN KEY (curr_id) REFERENCES curr_symbol(curr_id); LALTER TABLE ONLY public.curr_rate DROP CONSTRAINT curr_rate_to_curr_symbol; publicadminfalse396156666626061698925cust_creditlmt_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY custinfo ADD CONSTRAINT cust_creditlmt_to_curr_symbol FOREIGN KEY (cust_creditlmt_curr_id) REFERENCES curr_symbol(curr_id); PALTER TABLE ONLY public.custinfo DROP CONSTRAINT cust_creditlmt_to_curr_symbol; publicadminfalse160156666626061698930cust_to_curr_symbol FK CONSTRAINT}ALTER TABLE ONLY custinfo ADD CONSTRAINT cust_to_curr_symbol FOREIGN KEY (cust_curr_id) REFERENCES curr_symbol(curr_id); FALTER TABLE ONLY public.custinfo DROP CONSTRAINT cust_to_curr_symbol; publicadminfalse160156666626061698935custinfo_cust_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY custinfo ADD CONSTRAINT custinfo_cust_cntct_id_fkey FOREIGN KEY (cust_cntct_id) REFERENCES cntct(cntct_id); NALTER TABLE ONLY public.custinfo DROP CONSTRAINT custinfo_cust_cntct_id_fkey; publicadminfalse160152664826061698940custinfo_cust_corrcntct_id_fkey FK CONSTRAINTALTER TABLE ONLY custinfo ADD CONSTRAINT custinfo_cust_corrcntct_id_fkey FOREIGN KEY (cust_corrcntct_id) REFERENCES cntct(cntct_id); RALTER TABLE ONLY public.custinfo DROP CONSTRAINT custinfo_cust_corrcntct_id_fkey; publicadminfalse160152664826061698945custinfo_cust_custtype_fkey FK CONSTRAINTALTER TABLE ONLY custinfo ADD CONSTRAINT custinfo_cust_custtype_fkey FOREIGN KEY (cust_custtype_id) REFERENCES custtype(custtype_id) ON UPDATE RESTRICT ON DELETE RESTRICT; NALTER TABLE ONLY public.custinfo DROP CONSTRAINT custinfo_cust_custtype_fkey; publicadminfalse160207686126061698950custinfo_cust_salesrep_fkey FK CONSTRAINTALTER TABLE ONLY custinfo ADD CONSTRAINT custinfo_cust_salesrep_fkey FOREIGN KEY (cust_salesrep_id) REFERENCES salesrep(salesrep_id) ON UPDATE RESTRICT ON DELETE RESTRICT; NALTER TABLE ONLY public.custinfo DROP CONSTRAINT custinfo_cust_salesrep_fkey; publicadminfalse160163669726061698955custinfo_cust_shipform_fkey FK CONSTRAINTALTER TABLE ONLY custinfo ADD CONSTRAINT custinfo_cust_shipform_fkey FOREIGN KEY (cust_shipform_id) REFERENCES shipform(shipform_id) ON UPDATE RESTRICT ON DELETE RESTRICT; NALTER TABLE ONLY public.custinfo DROP CONSTRAINT custinfo_cust_shipform_fkey; publicadminfalse160209686526061698960custinfo_cust_taxzone_id_fkey FK CONSTRAINTALTER TABLE ONLY custinfo ADD CONSTRAINT custinfo_cust_taxzone_id_fkey FOREIGN KEY (cust_taxzone_id) REFERENCES taxzone(taxzone_id); PALTER TABLE ONLY public.custinfo DROP CONSTRAINT custinfo_cust_taxzone_id_fkey; publicadminfalse160166671026061698965custinfo_cust_terms_fkey FK CONSTRAINTALTER TABLE ONLY custinfo ADD CONSTRAINT custinfo_cust_terms_fkey FOREIGN KEY (cust_terms_id) REFERENCES terms(terms_id) ON UPDATE RESTRICT ON DELETE RESTRICT; KALTER TABLE ONLY public.custinfo DROP CONSTRAINT custinfo_cust_terms_fkey; publicadminfalse1601576668T26061698970emp_emp_cntct_id_fkey FK CONSTRAINTuALTER TABLE ONLY emp ADD CONSTRAINT emp_emp_cntct_id_fkey FOREIGN KEY (emp_cntct_id) REFERENCES cntct(cntct_id); CALTER TABLE ONLY public.emp DROP CONSTRAINT emp_emp_cntct_id_fkey; publicadminfalse2141526648U26061698975emp_emp_dept_id_fkey FK CONSTRAINTqALTER TABLE ONLY emp ADD CONSTRAINT emp_emp_dept_id_fkey FOREIGN KEY (emp_dept_id) REFERENCES dept(dept_id); BALTER TABLE ONLY public.emp DROP CONSTRAINT emp_emp_dept_id_fkey; publicadminfalse2142136881V26061698980emp_emp_image_id_fkey FK CONSTRAINTuALTER TABLE ONLY emp ADD CONSTRAINT emp_emp_image_id_fkey FOREIGN KEY (emp_image_id) REFERENCES image(image_id); CALTER TABLE ONLY public.emp DROP CONSTRAINT emp_emp_image_id_fkey; publicadminfalse2141946825W26061698985emp_emp_mgr_emp_id_fkey FK CONSTRAINTuALTER TABLE ONLY emp ADD CONSTRAINT emp_emp_mgr_emp_id_fkey FOREIGN KEY (emp_mgr_emp_id) REFERENCES emp(emp_id); EALTER TABLE ONLY public.emp DROP CONSTRAINT emp_emp_mgr_emp_id_fkey; publicadminfalse2142146887X26061698990emp_emp_shift_id_fkey FK CONSTRAINTuALTER TABLE ONLY emp ADD CONSTRAINT emp_emp_shift_id_fkey FOREIGN KEY (emp_shift_id) REFERENCES shift(shift_id); CALTER TABLE ONLY public.emp DROP CONSTRAINT emp_emp_shift_id_fkey; publicadminfalse2142156889Y26061698995emp_emp_wage_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY emp ADD CONSTRAINT emp_emp_wage_curr_id_fkey FOREIGN KEY (emp_wage_curr_id) REFERENCES curr_symbol(curr_id); GALTER TABLE ONLY public.emp DROP CONSTRAINT emp_emp_wage_curr_id_fkey; publicadminfalse2141566666Z26061699000emp_emp_warehous_id_fkey FK CONSTRAINTALTER TABLE ONLY emp ADD CONSTRAINT emp_emp_warehous_id_fkey FOREIGN KEY (emp_warehous_id) REFERENCES whsinfo(warehous_id); FALTER TABLE ONLY public.emp DROP CONSTRAINT emp_emp_warehous_id_fkey; publicadminfalse214172674226061699005!empgrpitem_empgrpitem_emp_id_fkey FK CONSTRAINTALTER TABLE ONLY empgrpitem ADD CONSTRAINT empgrpitem_empgrpitem_emp_id_fkey FOREIGN KEY (empgrpitem_emp_id) REFERENCES emp(emp_id); VALTER TABLE ONLY public.empgrpitem DROP CONSTRAINT empgrpitem_empgrpitem_emp_id_fkey; publicadminfalse414214688726061699010$empgrpitem_empgrpitem_empgrp_id_fkey FK CONSTRAINTALTER TABLE ONLY empgrpitem ADD CONSTRAINT empgrpitem_empgrpitem_empgrp_id_fkey FOREIGN KEY (empgrpitem_empgrp_id) REFERENCES empgrp(empgrp_id); YALTER TABLE ONLY public.empgrpitem DROP CONSTRAINT empgrpitem_empgrpitem_empgrp_id_fkey; publicadminfalse414412722526061699015flnotes_flnotes_flhead_id_fkey FK CONSTRAINTALTER TABLE ONLY flnotes ADD CONSTRAINT flnotes_flnotes_flhead_id_fkey FOREIGN KEY (flnotes_flhead_id) REFERENCES flhead(flhead_id) ON DELETE CASCADE; PALTER TABLE ONLY public.flnotes DROP CONSTRAINT flnotes_flnotes_flhead_id_fkey; publicadminfalse434426724626061699020flnotes_flnotes_period_id_fkey FK CONSTRAINTALTER TABLE ONLY flnotes ADD CONSTRAINT flnotes_flnotes_period_id_fkey FOREIGN KEY (flnotes_period_id) REFERENCES period(period_id) ON DELETE CASCADE; PALTER TABLE ONLY public.flnotes DROP CONSTRAINT flnotes_flnotes_period_id_fkey; publicadminfalse434201684226061699025grppriv_grppriv_grp_id_fkey FK CONSTRAINT}ALTER TABLE ONLY grppriv ADD CONSTRAINT grppriv_grppriv_grp_id_fkey FOREIGN KEY (grppriv_grp_id) REFERENCES grp(grp_id); MALTER TABLE ONLY public.grppriv DROP CONSTRAINT grppriv_grppriv_grp_id_fkey; publicadminfalse449447726826061699030incdt_incdt_aropen_id_fkey FK CONSTRAINTALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_aropen_id_fkey FOREIGN KEY (incdt_aropen_id) REFERENCES aropen(aropen_id); JALTER TABLE ONLY public.incdt DROP CONSTRAINT incdt_incdt_aropen_id_fkey; publicadminfalse154159668126061699035incdt_incdt_cntct_id_fkey FK CONSTRAINT}ALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_cntct_id_fkey FOREIGN KEY (incdt_cntct_id) REFERENCES cntct(cntct_id); IALTER TABLE ONLY public.incdt DROP CONSTRAINT incdt_incdt_cntct_id_fkey; publicadminfalse154152664826061699040incdt_incdt_crmacct_id_fkey FK CONSTRAINTALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_crmacct_id_fkey FOREIGN KEY (incdt_crmacct_id) REFERENCES crmacct(crmacct_id); KALTER TABLE ONLY public.incdt DROP CONSTRAINT incdt_incdt_crmacct_id_fkey; publicadminfalse154153665226061699045incdt_incdt_incdtcat_id_fkey FK CONSTRAINTALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_incdtcat_id_fkey FOREIGN KEY (incdt_incdtcat_id) REFERENCES incdtcat(incdtcat_id); LALTER TABLE ONLY public.incdt DROP CONSTRAINT incdt_incdt_incdtcat_id_fkey; publicadminfalse154220690626061699050!incdt_incdt_incdtpriority_id_fkey FK CONSTRAINTALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_incdtpriority_id_fkey FOREIGN KEY (incdt_incdtpriority_id) REFERENCES incdtpriority(incdtpriority_id); QALTER TABLE ONLY public.incdt DROP CONSTRAINT incdt_incdt_incdtpriority_id_fkey; publicadminfalse154221691026061699055#incdt_incdt_incdtresolution_id_fkey FK CONSTRAINTALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_incdtresolution_id_fkey FOREIGN KEY (incdt_incdtresolution_id) REFERENCES incdtresolution(incdtresolution_id); SALTER TABLE ONLY public.incdt DROP CONSTRAINT incdt_incdt_incdtresolution_id_fkey; publicadminfalse154222691426061699060!incdt_incdt_incdtseverity_id_fkey FK CONSTRAINTALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_incdtseverity_id_fkey FOREIGN KEY (incdt_incdtseverity_id) REFERENCES incdtseverity(incdtseverity_id); QALTER TABLE ONLY public.incdt DROP CONSTRAINT incdt_incdt_incdtseverity_id_fkey; publicadminfalse154223691826061699065incdt_incdt_item_id_fkey FK CONSTRAINTyALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_item_id_fkey FOREIGN KEY (incdt_item_id) REFERENCES item(item_id); HALTER TABLE ONLY public.incdt DROP CONSTRAINT incdt_incdt_item_id_fkey; publicadminfalse154168672226061699070incdt_incdt_prj_id_fkey FK CONSTRAINTuALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_prj_id_fkey FOREIGN KEY (incdt_prj_id) REFERENCES prj(prj_id); GALTER TABLE ONLY public.incdt DROP CONSTRAINT incdt_incdt_prj_id_fkey; publicadminfalse154174675126061699075#incdt_incdt_recurring_incdt_id_fkey FK CONSTRAINTALTER TABLE ONLY incdt ADD CONSTRAINT incdt_incdt_recurring_incdt_id_fkey FOREIGN KEY (incdt_recurring_incdt_id) REFERENCES incdt(incdt_id); SALTER TABLE ONLY public.incdt DROP CONSTRAINT incdt_incdt_recurring_incdt_id_fkey; publicadminfalse154154665626061699080!incdthist_incdthist_incdt_id_fkey FK CONSTRAINTALTER TABLE ONLY incdthist ADD CONSTRAINT incdthist_incdthist_incdt_id_fkey FOREIGN KEY (incdthist_incdt_id) REFERENCES incdt(incdt_id); UALTER TABLE ONLY public.incdthist DROP CONSTRAINT incdthist_incdthist_incdt_id_fkey; publicadminfalse455154665626061699085invbal_invbal_itemsite_id_fkey FK CONSTRAINTALTER TABLE ONLY invbal ADD CONSTRAINT invbal_invbal_itemsite_id_fkey FOREIGN KEY (invbal_itemsite_id) REFERENCES itemsite(itemsite_id) ON DELETE CASCADE; OALTER TABLE ONLY public.invbal DROP CONSTRAINT invbal_invbal_itemsite_id_fkey; publicadminfalse150169672926061699090invbal_invbal_period_id_fkey FK CONSTRAINTALTER TABLE ONLY invbal ADD CONSTRAINT invbal_invbal_period_id_fkey FOREIGN KEY (invbal_period_id) REFERENCES period(period_id) ON DELETE CASCADE; MALTER TABLE ONLY public.invbal DROP CONSTRAINT invbal_invbal_period_id_fkey; publicadminfalse150201684226061746362"invchead_invchead_saletype_id_fkey FK CONSTRAINTALTER TABLE ONLY invchead ADD CONSTRAINT invchead_invchead_saletype_id_fkey FOREIGN KEY (invchead_saletype_id) REFERENCES saletype(saletype_id); UALTER TABLE ONLY public.invchead DROP CONSTRAINT invchead_invchead_saletype_id_fkey; publicadminfalse173722759126061746367"invchead_invchead_shipzone_id_fkey FK CONSTRAINTALTER TABLE ONLY invchead ADD CONSTRAINT invchead_invchead_shipzone_id_fkey FOREIGN KEY (invchead_shipzone_id) REFERENCES shipzone(shipzone_id); UALTER TABLE ONLY public.invchead DROP CONSTRAINT invchead_invchead_shipzone_id_fkey; publicadminfalse173212687526061699095!invchead_invchead_taxzone_id_fkey FK CONSTRAINTALTER TABLE ONLY invchead ADD CONSTRAINT invchead_invchead_taxzone_id_fkey FOREIGN KEY (invchead_taxzone_id) REFERENCES taxzone(taxzone_id); TALTER TABLE ONLY public.invchead DROP CONSTRAINT invchead_invchead_taxzone_id_fkey; publicadminfalse173166671026061699100invchead_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY invchead ADD CONSTRAINT invchead_to_curr_symbol FOREIGN KEY (invchead_curr_id) REFERENCES curr_symbol(curr_id); JALTER TABLE ONLY public.invchead DROP CONSTRAINT invchead_to_curr_symbol; publicadminfalse173156666626061699105%invcheadtax_taxhist_basis_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY invcheadtax ADD CONSTRAINT invcheadtax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); [ALTER TABLE ONLY public.invcheadtax DROP CONSTRAINT invcheadtax_taxhist_basis_tax_id_fkey; publicadminfalse463247700826061699110"invcheadtax_taxhist_parent_id_fkey FK CONSTRAINTALTER TABLE ONLY invcheadtax ADD CONSTRAINT invcheadtax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES invchead(invchead_id) ON DELETE CASCADE; XALTER TABLE ONLY public.invcheadtax DROP CONSTRAINT invcheadtax_taxhist_parent_id_fkey; publicadminfalse463173674926061699115invcheadtax_taxhist_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY invcheadtax ADD CONSTRAINT invcheadtax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); UALTER TABLE ONLY public.invcheadtax DROP CONSTRAINT invcheadtax_taxhist_tax_id_fkey; publicadminfalse463247700826061699120#invcheadtax_taxhist_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY invcheadtax ADD CONSTRAINT invcheadtax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); YALTER TABLE ONLY public.invcheadtax DROP CONSTRAINT invcheadtax_taxhist_taxtype_id_fkey; publicadminfalse463170673326061699125invcitem_invchead_id_fkey FK CONSTRAINTALTER TABLE ONLY invcitem ADD CONSTRAINT invcitem_invchead_id_fkey FOREIGN KEY (invcitem_invchead_id) REFERENCES invchead(invchead_id) ON UPDATE CASCADE ON DELETE CASCADE; LALTER TABLE ONLY public.invcitem DROP CONSTRAINT invcitem_invchead_id_fkey; publicadminfalse175173674926061699130#invcitem_invcitem_price_uom_id_fkey FK CONSTRAINTALTER TABLE ONLY invcitem ADD CONSTRAINT invcitem_invcitem_price_uom_id_fkey FOREIGN KEY (invcitem_price_uom_id) REFERENCES uom(uom_id); VALTER TABLE ONLY public.invcitem DROP CONSTRAINT invcitem_invcitem_price_uom_id_fkey; publicadminfalse175171673726061699135!invcitem_invcitem_qty_uom_id_fkey FK CONSTRAINTALTER TABLE ONLY invcitem ADD CONSTRAINT invcitem_invcitem_qty_uom_id_fkey FOREIGN KEY (invcitem_qty_uom_id) REFERENCES uom(uom_id); TALTER TABLE ONLY public.invcitem DROP CONSTRAINT invcitem_invcitem_qty_uom_id_fkey; publicadminfalse175171673726061699140#invcitem_invcitem_rev_accnt_id_fkey FK CONSTRAINTALTER TABLE ONLY invcitem ADD CONSTRAINT invcitem_invcitem_rev_accnt_id_fkey FOREIGN KEY (invcitem_rev_accnt_id) REFERENCES accnt(accnt_id); VALTER TABLE ONLY public.invcitem DROP CONSTRAINT invcitem_invcitem_rev_accnt_id_fkey; publicadminfalse1751996837 26061699145!invcitem_invcitem_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY invcitem ADD CONSTRAINT invcitem_invcitem_taxtype_id_fkey FOREIGN KEY (invcitem_taxtype_id) REFERENCES taxtype(taxtype_id); TALTER TABLE ONLY public.invcitem DROP CONSTRAINT invcitem_invcitem_taxtype_id_fkey; publicadminfalse175170673326061699150%invcitemtax_taxhist_basis_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY invcitemtax ADD CONSTRAINT invcitemtax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); [ALTER TABLE ONLY public.invcitemtax DROP CONSTRAINT invcitemtax_taxhist_basis_tax_id_fkey; publicadminfalse465247700826061699155"invcitemtax_taxhist_parent_id_fkey FK CONSTRAINTALTER TABLE ONLY invcitemtax ADD CONSTRAINT invcitemtax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES invcitem(invcitem_id) ON DELETE CASCADE; XALTER TABLE ONLY public.invcitemtax DROP CONSTRAINT invcitemtax_taxhist_parent_id_fkey; publicadminfalse465175675926061699160invcitemtax_taxhist_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY invcitemtax ADD CONSTRAINT invcitemtax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); UALTER TABLE ONLY public.invcitemtax DROP CONSTRAINT invcitemtax_taxhist_tax_id_fkey; publicadminfalse465247700826061699165#invcitemtax_taxhist_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY invcitemtax ADD CONSTRAINT invcitemtax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); YALTER TABLE ONLY public.invcitemtax DROP CONSTRAINT invcitemtax_taxhist_taxtype_id_fkey; publicadminfalse465170673326061699170*invhistexpcat_invhistexpcat_expcat_id_fkey FK CONSTRAINTALTER TABLE ONLY invhistexpcat ADD CONSTRAINT invhistexpcat_invhistexpcat_expcat_id_fkey FOREIGN KEY (invhistexpcat_expcat_id) REFERENCES expcat(expcat_id) ON UPDATE CASCADE ON DELETE CASCADE; bALTER TABLE ONLY public.invhistexpcat DROP CONSTRAINT invhistexpcat_invhistexpcat_expcat_id_fkey; publicadminfalse472245700226061699175+invhistexpcat_invhistexpcat_invhist_id_fkey FK CONSTRAINTALTER TABLE ONLY invhistexpcat ADD CONSTRAINT invhistexpcat_invhistexpcat_invhist_id_fkey FOREIGN KEY (invhistexpcat_invhist_id) REFERENCES invhist(invhist_id) ON UPDATE CASCADE ON DELETE CASCADE; cALTER TABLE ONLY public.invhistexpcat DROP CONSTRAINT invhistexpcat_invhistexpcat_invhist_id_fkey; publicadminfalse4724707292u26061699180ipsass_ipsass_ipshead_id_fkey FK CONSTRAINTALTER TABLE ONLY ipsass ADD CONSTRAINT ipsass_ipsass_ipshead_id_fkey FOREIGN KEY (ipsass_ipshead_id) REFERENCES ipshead(ipshead_id); NALTER TABLE ONLY public.ipsass DROP CONSTRAINT ipsass_ipsass_ipshead_id_fkey; publicadminfalse2392196902^26061699185*ipsfreight_ipsfreight_freightclass_id_fkey FK CONSTRAINTALTER TABLE ONLY ipsfreight ADD CONSTRAINT ipsfreight_ipsfreight_freightclass_id_fkey FOREIGN KEY (ipsfreight_freightclass_id) REFERENCES freightclass(freightclass_id); _ALTER TABLE ONLY public.ipsfreight DROP CONSTRAINT ipsfreight_ipsfreight_freightclass_id_fkey; publicadminfalse2182176896_26061699190%ipsfreight_ipsfreight_ipshead_id_fkey FK CONSTRAINTALTER TABLE ONLY ipsfreight ADD CONSTRAINT ipsfreight_ipsfreight_ipshead_id_fkey FOREIGN KEY (ipsfreight_ipshead_id) REFERENCES ipshead(ipshead_id); ZALTER TABLE ONLY public.ipsfreight DROP CONSTRAINT ipsfreight_ipsfreight_ipshead_id_fkey; publicadminfalse2182196902`26061699195&ipsfreight_ipsfreight_shipzone_id_fkey FK CONSTRAINTALTER TABLE ONLY ipsfreight ADD CONSTRAINT ipsfreight_ipsfreight_shipzone_id_fkey FOREIGN KEY (ipsfreight_shipzone_id) REFERENCES shipzone(shipzone_id); [ALTER TABLE ONLY public.ipsfreight DROP CONSTRAINT ipsfreight_ipsfreight_shipzone_id_fkey; publicadminfalse2182126875a26061699200&ipsfreight_ipsfreight_warehous_id_fkey FK CONSTRAINTALTER TABLE ONLY ipsfreight ADD CONSTRAINT ipsfreight_ipsfreight_warehous_id_fkey FOREIGN KEY (ipsfreight_warehous_id) REFERENCES whsinfo(warehous_id); [ALTER TABLE ONLY public.ipsfreight DROP CONSTRAINT ipsfreight_ipsfreight_warehous_id_fkey; publicadminfalse2181726742b26061699205ipshead_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY ipshead ADD CONSTRAINT ipshead_to_curr_symbol FOREIGN KEY (ipshead_curr_id) REFERENCES curr_symbol(curr_id); HALTER TABLE ONLY public.ipshead DROP CONSTRAINT ipshead_to_curr_symbol; publicadminfalse2191566666v26061699210ipsitem_ipshead_id_fk FK CONSTRAINTALTER TABLE ONLY ipsiteminfo ADD CONSTRAINT ipsitem_ipshead_id_fk FOREIGN KEY (ipsitem_ipshead_id) REFERENCES ipshead(ipshead_id) ON DELETE CASCADE; KALTER TABLE ONLY public.ipsiteminfo DROP CONSTRAINT ipsitem_ipshead_id_fk; publicadminfalse2402196902w26061699215!ipsitem_ipsitem_price_uom_id_fkey FK CONSTRAINTALTER TABLE ONLY ipsiteminfo ADD CONSTRAINT ipsitem_ipsitem_price_uom_id_fkey FOREIGN KEY (ipsitem_price_uom_id) REFERENCES uom(uom_id); WALTER TABLE ONLY public.ipsiteminfo DROP CONSTRAINT ipsitem_ipsitem_price_uom_id_fkey; publicadminfalse2401716737x26061699220ipsitem_ipsitem_qty_uom_id_fkey FK CONSTRAINTALTER TABLE ONLY ipsiteminfo ADD CONSTRAINT ipsitem_ipsitem_qty_uom_id_fkey FOREIGN KEY (ipsitem_qty_uom_id) REFERENCES uom(uom_id); UALTER TABLE ONLY public.ipsiteminfo DROP CONSTRAINT ipsitem_ipsitem_qty_uom_id_fkey; publicadminfalse2401716737z26061746374 ipsitem_ipsitem_warehous_id_fkey FK CONSTRAINTALTER TABLE ONLY ipsiteminfo ADD CONSTRAINT ipsitem_ipsitem_warehous_id_fkey FOREIGN KEY (ipsitem_warehous_id) REFERENCES whsinfo(warehous_id); VALTER TABLE ONLY public.ipsiteminfo DROP CONSTRAINT ipsitem_ipsitem_warehous_id_fkey; publicadminfalse1722406742y26061699225ipsitem_item_id_fk FK CONSTRAINT{ALTER TABLE ONLY ipsiteminfo ADD CONSTRAINT ipsitem_item_id_fk FOREIGN KEY (ipsitem_item_id) REFERENCES item(item_id); HALTER TABLE ONLY public.ipsiteminfo DROP CONSTRAINT ipsitem_item_id_fk; publicadminfalse2401686722{26061699230$ipsitemchar_ipsitemchar_char_id_fkey FK CONSTRAINTALTER TABLE ONLY ipsitemchar ADD CONSTRAINT ipsitemchar_ipsitemchar_char_id_fkey FOREIGN KEY (ipsitemchar_char_id) REFERENCES "char"(char_id); ZALTER TABLE ONLY public.ipsitemchar DROP CONSTRAINT ipsitemchar_ipsitemchar_char_id_fkey; publicadminfalse2421856807|26061699235'ipsitemchar_ipsitemchar_ipsitem_id_fkey FK CONSTRAINTALTER TABLE ONLY ipsitemchar ADD CONSTRAINT ipsitemchar_ipsitemchar_ipsitem_id_fkey FOREIGN KEY (ipsitemchar_ipsitem_id) REFERENCES ipsiteminfo(ipsitem_id) ON DELETE CASCADE; ]ALTER TABLE ONLY public.ipsitemchar DROP CONSTRAINT ipsitemchar_ipsitemchar_ipsitem_id_fkey; publicadminfalse242240698626061699240item_item_classcode_id_fkey FK CONSTRAINTALTER TABLE ONLY item ADD CONSTRAINT item_item_classcode_id_fkey FOREIGN KEY (item_classcode_id) REFERENCES classcode(classcode_id); JALTER TABLE ONLY public.item DROP CONSTRAINT item_item_classcode_id_fkey; publicadminfalse168224692226061699245item_item_freightclass_id_fkey FK CONSTRAINTALTER TABLE ONLY item ADD CONSTRAINT item_item_freightclass_id_fkey FOREIGN KEY (item_freightclass_id) REFERENCES freightclass(freightclass_id); MALTER TABLE ONLY public.item DROP CONSTRAINT item_item_freightclass_id_fkey; publicadminfalse168217689626061699250item_item_inv_uom_id_fkey FK CONSTRAINTyALTER TABLE ONLY item ADD CONSTRAINT item_item_inv_uom_id_fkey FOREIGN KEY (item_inv_uom_id) REFERENCES uom(uom_id); HALTER TABLE ONLY public.item DROP CONSTRAINT item_item_inv_uom_id_fkey; publicadminfalse168171673726061699255item_item_price_uom_id_fkey FK CONSTRAINT}ALTER TABLE ONLY item ADD CONSTRAINT item_item_price_uom_id_fkey FOREIGN KEY (item_price_uom_id) REFERENCES uom(uom_id); JALTER TABLE ONLY public.item DROP CONSTRAINT item_item_price_uom_id_fkey; publicadminfalse1681716737c26061699260 itemalias_itemalias_item_id_fkey FK CONSTRAINTALTER TABLE ONLY itemalias ADD CONSTRAINT itemalias_itemalias_item_id_fkey FOREIGN KEY (itemalias_item_id) REFERENCES item(item_id); TALTER TABLE ONLY public.itemalias DROP CONSTRAINT itemalias_itemalias_item_id_fkey; publicadminfalse2261686722d26061699265"itemcost_itemcost_costelem_id_fkey FK CONSTRAINTALTER TABLE ONLY itemcost ADD CONSTRAINT itemcost_itemcost_costelem_id_fkey FOREIGN KEY (itemcost_costelem_id) REFERENCES costelem(costelem_id); UALTER TABLE ONLY public.itemcost DROP CONSTRAINT itemcost_itemcost_costelem_id_fkey; publicadminfalse2282276934e26061699270itemcost_itemcost_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY itemcost ADD CONSTRAINT itemcost_itemcost_curr_id_fkey FOREIGN KEY (itemcost_curr_id) REFERENCES curr_symbol(curr_id); QALTER TABLE ONLY public.itemcost DROP CONSTRAINT itemcost_itemcost_curr_id_fkey; publicadminfalse2281566666f26061699275itemcost_itemcost_item_id_fkey FK CONSTRAINTALTER TABLE ONLY itemcost ADD CONSTRAINT itemcost_itemcost_item_id_fkey FOREIGN KEY (itemcost_item_id) REFERENCES item(item_id); QALTER TABLE ONLY public.itemcost DROP CONSTRAINT itemcost_itemcost_item_id_fkey; publicadminfalse2281686722g26061699280itemcost_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY itemcost ADD CONSTRAINT itemcost_to_curr_symbol FOREIGN KEY (itemcost_curr_id) REFERENCES curr_symbol(curr_id); JALTER TABLE ONLY public.itemcost DROP CONSTRAINT itemcost_to_curr_symbol; publicadminfalse228156666626061699285!itemsite_itemsite_costcat_id_fkey FK CONSTRAINTALTER TABLE ONLY itemsite ADD CONSTRAINT itemsite_itemsite_costcat_id_fkey FOREIGN KEY (itemsite_costcat_id) REFERENCES costcat(costcat_id); TALTER TABLE ONLY public.itemsite DROP CONSTRAINT itemsite_itemsite_costcat_id_fkey; publicadminfalse169229694226061699290itemsite_itemsite_item_id_fkey FK CONSTRAINTALTER TABLE ONLY itemsite ADD CONSTRAINT itemsite_itemsite_item_id_fkey FOREIGN KEY (itemsite_item_id) REFERENCES item(item_id); QALTER TABLE ONLY public.itemsite DROP CONSTRAINT itemsite_itemsite_item_id_fkey; publicadminfalse169168672226061699295"itemsite_itemsite_plancode_id_fkey FK CONSTRAINTALTER TABLE ONLY itemsite ADD CONSTRAINT itemsite_itemsite_plancode_id_fkey FOREIGN KEY (itemsite_plancode_id) REFERENCES plancode(plancode_id); UALTER TABLE ONLY public.itemsite DROP CONSTRAINT itemsite_itemsite_plancode_id_fkey; publicadminfalse169231694726061699300"itemsite_itemsite_warehous_id_fkey FK CONSTRAINTALTER TABLE ONLY itemsite ADD CONSTRAINT itemsite_itemsite_warehous_id_fkey FOREIGN KEY (itemsite_warehous_id) REFERENCES whsinfo(warehous_id); UALTER TABLE ONLY public.itemsite DROP CONSTRAINT itemsite_itemsite_warehous_id_fkey; publicadminfalse1691726742j26061746381itemsrc_itemsrc_contrct_id_fkey FK CONSTRAINTALTER TABLE ONLY itemsrc ADD CONSTRAINT itemsrc_itemsrc_contrct_id_fkey FOREIGN KEY (itemsrc_contrct_id) REFERENCES contrct(contrct_id); QALTER TABLE ONLY public.itemsrc DROP CONSTRAINT itemsrc_itemsrc_contrct_id_fkey; publicadminfalse2327207589h26061699305itemsrc_itemsrc_item_id_fkey FK CONSTRAINTALTER TABLE ONLY itemsrc ADD CONSTRAINT itemsrc_itemsrc_item_id_fkey FOREIGN KEY (itemsrc_item_id) REFERENCES item(item_id) ON DELETE CASCADE; NALTER TABLE ONLY public.itemsrc DROP CONSTRAINT itemsrc_itemsrc_item_id_fkey; publicadminfalse2321686722i26061699310itemsrc_itemsrc_vend_id_fkey FK CONSTRAINTALTER TABLE ONLY itemsrc ADD CONSTRAINT itemsrc_itemsrc_vend_id_fkey FOREIGN KEY (itemsrc_vend_id) REFERENCES vendinfo(vend_id) ON DELETE CASCADE; NALTER TABLE ONLY public.itemsrc DROP CONSTRAINT itemsrc_itemsrc_vend_id_fkey; publicadminfalse2321586673k26061699315!itemsrcp_itemsrcp_itemsrc_id_fkey FK CONSTRAINTALTER TABLE ONLY itemsrcp ADD CONSTRAINT itemsrcp_itemsrcp_itemsrc_id_fkey FOREIGN KEY (itemsrcp_itemsrc_id) REFERENCES itemsrc(itemsrc_id) ON DELETE CASCADE; TALTER TABLE ONLY public.itemsrcp DROP CONSTRAINT itemsrcp_itemsrcp_itemsrc_id_fkey; publicadminfalse2332326953l26061699320itemsrcp_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY itemsrcp ADD CONSTRAINT itemsrcp_to_curr_symbol FOREIGN KEY (itemsrcp_curr_id) REFERENCES curr_symbol(curr_id); JALTER TABLE ONLY public.itemsrcp DROP CONSTRAINT itemsrcp_to_curr_symbol; publicadminfalse2331566666m26061699325#itemsub_itemsub_parent_item_id_fkey FK CONSTRAINTALTER TABLE ONLY itemsub ADD CONSTRAINT itemsub_itemsub_parent_item_id_fkey FOREIGN KEY (itemsub_parent_item_id) REFERENCES item(item_id); UALTER TABLE ONLY public.itemsub DROP CONSTRAINT itemsub_itemsub_parent_item_id_fkey; publicadminfalse2341686722n26061699330 itemsub_itemsub_sub_item_id_fkey FK CONSTRAINTALTER TABLE ONLY itemsub ADD CONSTRAINT itemsub_itemsub_sub_item_id_fkey FOREIGN KEY (itemsub_sub_item_id) REFERENCES item(item_id); RALTER TABLE ONLY public.itemsub DROP CONSTRAINT itemsub_itemsub_sub_item_id_fkey; publicadminfalse2341686722o26061699335itemtax_itemtax_item_id_fkey FK CONSTRAINTALTER TABLE ONLY itemtax ADD CONSTRAINT itemtax_itemtax_item_id_fkey FOREIGN KEY (itemtax_item_id) REFERENCES item(item_id); NALTER TABLE ONLY public.itemtax DROP CONSTRAINT itemtax_itemtax_item_id_fkey; publicadminfalse2351686722p26061699340itemtax_itemtax_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY itemtax ADD CONSTRAINT itemtax_itemtax_taxtype_id_fkey FOREIGN KEY (itemtax_taxtype_id) REFERENCES taxtype(taxtype_id); QALTER TABLE ONLY public.itemtax DROP CONSTRAINT itemtax_itemtax_taxtype_id_fkey; publicadminfalse2351706733q26061699345itemtax_itemtax_taxzone_id_fkey FK CONSTRAINTALTER TABLE ONLY itemtax ADD CONSTRAINT itemtax_itemtax_taxzone_id_fkey FOREIGN KEY (itemtax_taxzone_id) REFERENCES taxzone(taxzone_id); QALTER TABLE ONLY public.itemtax DROP CONSTRAINT itemtax_itemtax_taxzone_id_fkey; publicadminfalse235166671026061699350'itemtrans_itemtrans_source_item_id_fkey FK CONSTRAINTALTER TABLE ONLY itemtrans ADD CONSTRAINT itemtrans_itemtrans_source_item_id_fkey FOREIGN KEY (itemtrans_source_item_id) REFERENCES item(item_id); [ALTER TABLE ONLY public.itemtrans DROP CONSTRAINT itemtrans_itemtrans_source_item_id_fkey; publicadminfalse5071686722 26061699355'itemtrans_itemtrans_target_item_id_fkey FK CONSTRAINTALTER TABLE ONLY itemtrans ADD CONSTRAINT itemtrans_itemtrans_target_item_id_fkey FOREIGN KEY (itemtrans_target_item_id) REFERENCES item(item_id); [ALTER TABLE ONLY public.itemtrans DROP CONSTRAINT itemtrans_itemtrans_target_item_id_fkey; publicadminfalse5071686722 26061699360#itemuom_itemuom_itemuomconv_id_fkey FK CONSTRAINTALTER TABLE ONLY itemuom ADD CONSTRAINT itemuom_itemuom_itemuomconv_id_fkey FOREIGN KEY (itemuom_itemuomconv_id) REFERENCES itemuomconv(itemuomconv_id); UALTER TABLE ONLY public.itemuom DROP CONSTRAINT itemuom_itemuom_itemuomconv_id_fkey; publicadminfalse5092366969 26061699365itemuom_itemuom_uomtype_id_fkey FK CONSTRAINTALTER TABLE ONLY itemuom ADD CONSTRAINT itemuom_itemuom_uomtype_id_fkey FOREIGN KEY (itemuom_uomtype_id) REFERENCES uomtype(uomtype_id); QALTER TABLE ONLY public.itemuom DROP CONSTRAINT itemuom_itemuom_uomtype_id_fkey; publicadminfalse5096567508r26061699370(itemuomconv_itemuomconv_from_uom_id_fkey FK CONSTRAINTALTER TABLE ONLY itemuomconv ADD CONSTRAINT itemuomconv_itemuomconv_from_uom_id_fkey FOREIGN KEY (itemuomconv_from_uom_id) REFERENCES uom(uom_id); ^ALTER TABLE ONLY public.itemuomconv DROP CONSTRAINT itemuomconv_itemuomconv_from_uom_id_fkey; publicadminfalse2361716737s26061699375$itemuomconv_itemuomconv_item_id_fkey FK CONSTRAINTALTER TABLE ONLY itemuomconv ADD CONSTRAINT itemuomconv_itemuomconv_item_id_fkey FOREIGN KEY (itemuomconv_item_id) REFERENCES item(item_id); ZALTER TABLE ONLY public.itemuomconv DROP CONSTRAINT itemuomconv_itemuomconv_item_id_fkey; publicadminfalse2361686722t26061699380&itemuomconv_itemuomconv_to_uom_id_fkey FK CONSTRAINTALTER TABLE ONLY itemuomconv ADD CONSTRAINT itemuomconv_itemuomconv_to_uom_id_fkey FOREIGN KEY (itemuomconv_to_uom_id) REFERENCES uom(uom_id); \ALTER TABLE ONLY public.itemuomconv DROP CONSTRAINT itemuomconv_itemuomconv_to_uom_id_fkey; publicadminfalse2361716737 26061699385mrghist_mrghist_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY mrghist ADD CONSTRAINT mrghist_mrghist_cntct_id_fkey FOREIGN KEY (mrghist_cntct_id) REFERENCES cntct(cntct_id) ON DELETE CASCADE; OALTER TABLE ONLY public.mrghist DROP CONSTRAINT mrghist_mrghist_cntct_id_fkey; publicadminfalse5321526648226061699390ophead_ophead_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY ophead ADD CONSTRAINT ophead_ophead_cntct_id_fkey FOREIGN KEY (ophead_cntct_id) REFERENCES cntct(cntct_id); LALTER TABLE ONLY public.ophead DROP CONSTRAINT ophead_ophead_cntct_id_fkey; publicadminfalse1811526648326061699395ophead_ophead_crmacct_id_fkey FK CONSTRAINTALTER TABLE ONLY ophead ADD CONSTRAINT ophead_ophead_crmacct_id_fkey FOREIGN KEY (ophead_crmacct_id) REFERENCES crmacct(crmacct_id); NALTER TABLE ONLY public.ophead DROP CONSTRAINT ophead_ophead_crmacct_id_fkey; publicadminfalse1811536652426061699400ophead_ophead_opsource_id_fkey FK CONSTRAINTALTER TABLE ONLY ophead ADD CONSTRAINT ophead_ophead_opsource_id_fkey FOREIGN KEY (ophead_opsource_id) REFERENCES opsource(opsource_id); OALTER TABLE ONLY public.ophead DROP CONSTRAINT ophead_ophead_opsource_id_fkey; publicadminfalse1815417363526061699405ophead_ophead_opstage_id_fkey FK CONSTRAINTALTER TABLE ONLY ophead ADD CONSTRAINT ophead_ophead_opstage_id_fkey FOREIGN KEY (ophead_opstage_id) REFERENCES opstage(opstage_id); NALTER TABLE ONLY public.ophead DROP CONSTRAINT ophead_ophead_opstage_id_fkey; publicadminfalse1815437367626061699410ophead_ophead_optype_id_fkey FK CONSTRAINTALTER TABLE ONLY ophead ADD CONSTRAINT ophead_ophead_optype_id_fkey FOREIGN KEY (ophead_optype_id) REFERENCES optype(optype_id); MALTER TABLE ONLY public.ophead DROP CONSTRAINT ophead_ophead_optype_id_fkey; publicadminfalse1815457371726061699415ophead_ophead_priority_id_fkey FK CONSTRAINTALTER TABLE ONLY ophead ADD CONSTRAINT ophead_ophead_priority_id_fkey FOREIGN KEY (ophead_priority_id) REFERENCES incdtpriority(incdtpriority_id); OALTER TABLE ONLY public.ophead DROP CONSTRAINT ophead_ophead_priority_id_fkey; publicadminfalse1812216910 26061699420pack_pack_shiphead_id_fkey FK CONSTRAINTALTER TABLE ONLY pack ADD CONSTRAINT pack_pack_shiphead_id_fkey FOREIGN KEY (pack_shiphead_id) REFERENCES shiphead(shiphead_id); IALTER TABLE ONLY public.pack DROP CONSTRAINT pack_pack_shiphead_id_fkey; publicadminfalse549608745126061699425payco_payco_ccpay_id_fkey FK CONSTRAINT}ALTER TABLE ONLY payco ADD CONSTRAINT payco_payco_ccpay_id_fkey FOREIGN KEY (payco_ccpay_id) REFERENCES ccpay(ccpay_id); IALTER TABLE ONLY public.payco DROP CONSTRAINT payco_payco_ccpay_id_fkey; publicadminfalse552342714326061699430payco_payco_cohead_id_fkey FK CONSTRAINTALTER TABLE ONLY payco ADD CONSTRAINT payco_payco_cohead_id_fkey FOREIGN KEY (payco_cohead_id) REFERENCES cohead(cohead_id); JALTER TABLE ONLY public.payco DROP CONSTRAINT payco_payco_cohead_id_fkey; publicadminfalse552176676726061699435$pkgdep_pkgdep_parent_pkghead_id_fkey FK CONSTRAINTALTER TABLE ONLY pkgdep ADD CONSTRAINT pkgdep_pkgdep_parent_pkghead_id_fkey FOREIGN KEY (pkgdep_parent_pkghead_id) REFERENCES pkghead(pkghead_id); UALTER TABLE ONLY public.pkgdep DROP CONSTRAINT pkgdep_pkgdep_parent_pkghead_id_fkey; publicadminfalse554556738726061699440pkgdep_pkgdep_pkghead_id_fkey FK CONSTRAINTALTER TABLE ONLY pkgdep ADD CONSTRAINT pkgdep_pkgdep_pkghead_id_fkey FOREIGN KEY (pkgdep_pkghead_id) REFERENCES pkghead(pkghead_id); NALTER TABLE ONLY public.pkgdep DROP CONSTRAINT pkgdep_pkgdep_pkghead_id_fkey; publicadminfalse554556738726061699445pkgitem_pkgitem_pkghead_id_fkey FK CONSTRAINTALTER TABLE ONLY pkgitem ADD CONSTRAINT pkgitem_pkgitem_pkghead_id_fkey FOREIGN KEY (pkgitem_pkghead_id) REFERENCES pkghead(pkghead_id) ON DELETE CASCADE; QALTER TABLE ONLY public.pkgitem DROP CONSTRAINT pkgitem_pkgitem_pkghead_id_fkey; publicadminfalse5585567387"26061699450pohead_pohead_cohead_id_fkey FK CONSTRAINTALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_cohead_id_fkey FOREIGN KEY (pohead_cohead_id) REFERENCES cohead(cohead_id) ON DELETE SET NULL; MALTER TABLE ONLY public.pohead DROP CONSTRAINT pohead_pohead_cohead_id_fkey; publicadminfalse1781766767#26061699455"pohead_pohead_shipto_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_shipto_cntct_id_fkey FOREIGN KEY (pohead_shipto_cntct_id) REFERENCES cntct(cntct_id); SALTER TABLE ONLY public.pohead DROP CONSTRAINT pohead_pohead_shipto_cntct_id_fkey; publicadminfalse1781526648$26061699460"pohead_pohead_shiptoddress_id_fkey FK CONSTRAINTALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_shiptoddress_id_fkey FOREIGN KEY (pohead_shiptoaddress_id) REFERENCES addr(addr_id); SALTER TABLE ONLY public.pohead DROP CONSTRAINT pohead_pohead_shiptoddress_id_fkey; publicadminfalse1781846803%26061699465pohead_pohead_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_taxtype_id_fkey FOREIGN KEY (pohead_taxtype_id) REFERENCES taxtype(taxtype_id); NALTER TABLE ONLY public.pohead DROP CONSTRAINT pohead_pohead_taxtype_id_fkey; publicadminfalse1781706733&26061699470pohead_pohead_taxzone_id_fkey FK CONSTRAINTALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_taxzone_id_fkey FOREIGN KEY (pohead_taxzone_id) REFERENCES taxzone(taxzone_id); NALTER TABLE ONLY public.pohead DROP CONSTRAINT pohead_pohead_taxzone_id_fkey; publicadminfalse1781666710'26061699475pohead_pohead_terms_id_fkey FK CONSTRAINTALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_terms_id_fkey FOREIGN KEY (pohead_terms_id) REFERENCES terms(terms_id); LALTER TABLE ONLY public.pohead DROP CONSTRAINT pohead_pohead_terms_id_fkey; publicadminfalse1781576668(26061699480 pohead_pohead_vend_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_vend_cntct_id_fkey FOREIGN KEY (pohead_vend_cntct_id) REFERENCES cntct(cntct_id); QALTER TABLE ONLY public.pohead DROP CONSTRAINT pohead_pohead_vend_cntct_id_fkey; publicadminfalse1781526648)26061699485pohead_pohead_vend_id_fkey FK CONSTRAINTALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_vend_id_fkey FOREIGN KEY (pohead_vend_id) REFERENCES vendinfo(vend_id); KALTER TABLE ONLY public.pohead DROP CONSTRAINT pohead_pohead_vend_id_fkey; publicadminfalse1781586673*26061699490pohead_pohead_vendaddr_id_fkey FK CONSTRAINTALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_vendaddr_id_fkey FOREIGN KEY (pohead_vendaddr_id) REFERENCES vendaddrinfo(vendaddr_id); OALTER TABLE ONLY public.pohead DROP CONSTRAINT pohead_pohead_vendaddr_id_fkey; publicadminfalse1782487010+26061699495pohead_pohead_warehous_id_fkey FK CONSTRAINTALTER TABLE ONLY pohead ADD CONSTRAINT pohead_pohead_warehous_id_fkey FOREIGN KEY (pohead_warehous_id) REFERENCES whsinfo(warehous_id); OALTER TABLE ONLY public.pohead DROP CONSTRAINT pohead_pohead_warehous_id_fkey; publicadminfalse1781726742,26061699500pohead_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY pohead ADD CONSTRAINT pohead_to_curr_symbol FOREIGN KEY (pohead_curr_id) REFERENCES curr_symbol(curr_id); FALTER TABLE ONLY public.pohead DROP CONSTRAINT pohead_to_curr_symbol; publicadminfalse1781566666-26061699505poitem_poitem_expcat_id_fkey FK CONSTRAINTALTER TABLE ONLY poitem ADD CONSTRAINT poitem_poitem_expcat_id_fkey FOREIGN KEY (poitem_expcat_id) REFERENCES expcat(expcat_id); MALTER TABLE ONLY public.poitem DROP CONSTRAINT poitem_poitem_expcat_id_fkey; publicadminfalse1792457002.26061699510poitem_poitem_itemsite_id_fkey FK CONSTRAINTALTER TABLE ONLY poitem ADD CONSTRAINT poitem_poitem_itemsite_id_fkey FOREIGN KEY (poitem_itemsite_id) REFERENCES itemsite(itemsite_id); OALTER TABLE ONLY public.poitem DROP CONSTRAINT poitem_poitem_itemsite_id_fkey; publicadminfalse1791696729/26061699515poitem_poitem_itemsrc_id_fkey FK CONSTRAINTALTER TABLE ONLY poitem ADD CONSTRAINT poitem_poitem_itemsrc_id_fkey FOREIGN KEY (poitem_itemsrc_id) REFERENCES itemsrc(itemsrc_id); NALTER TABLE ONLY public.poitem DROP CONSTRAINT poitem_poitem_itemsrc_id_fkey; publicadminfalse1792326953026061699520poitem_poitem_prj_id_fkey FK CONSTRAINTyALTER TABLE ONLY poitem ADD CONSTRAINT poitem_poitem_prj_id_fkey FOREIGN KEY (poitem_prj_id) REFERENCES prj(prj_id); JALTER TABLE ONLY public.poitem DROP CONSTRAINT poitem_poitem_prj_id_fkey; publicadminfalse1791746751126061699525poitem_poitem_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY poitem ADD CONSTRAINT poitem_poitem_taxtype_id_fkey FOREIGN KEY (poitem_taxtype_id) REFERENCES taxtype(taxtype_id); NALTER TABLE ONLY public.poitem DROP CONSTRAINT poitem_poitem_taxtype_id_fkey; publicadminfalse179170673326061699530poreject_poreject_recv_id_fkey FK CONSTRAINTALTER TABLE ONLY poreject ADD CONSTRAINT poreject_poreject_recv_id_fkey FOREIGN KEY (poreject_recv_id) REFERENCES recv(recv_id); QALTER TABLE ONLY public.poreject DROP CONSTRAINT poreject_poreject_recv_id_fkey; publicadminfalse565591743026061699535poreject_poreject_vend_id_fkey FK CONSTRAINTALTER TABLE ONLY poreject ADD CONSTRAINT poreject_poreject_vend_id_fkey FOREIGN KEY (poreject_vend_id) REFERENCES vendinfo(vend_id); QALTER TABLE ONLY public.poreject DROP CONSTRAINT poreject_poreject_vend_id_fkey; publicadminfalse565158667326061699540prj_prj_cntct_id_fkey FK CONSTRAINTuALTER TABLE ONLY prj ADD CONSTRAINT prj_prj_cntct_id_fkey FOREIGN KEY (prj_cntct_id) REFERENCES cntct(cntct_id); CALTER TABLE ONLY public.prj DROP CONSTRAINT prj_prj_cntct_id_fkey; publicadminfalse174152664826061699545prj_prj_crmacct_id_fkey FK CONSTRAINT}ALTER TABLE ONLY prj ADD CONSTRAINT prj_prj_crmacct_id_fkey FOREIGN KEY (prj_crmacct_id) REFERENCES crmacct(crmacct_id); EALTER TABLE ONLY public.prj DROP CONSTRAINT prj_prj_crmacct_id_fkey; publicadminfalse174153665226061699550prj_prj_recurring_prj_id_fkey FK CONSTRAINTALTER TABLE ONLY prj ADD CONSTRAINT prj_prj_recurring_prj_id_fkey FOREIGN KEY (prj_recurring_prj_id) REFERENCES prj(prj_id); KALTER TABLE ONLY public.prj DROP CONSTRAINT prj_prj_recurring_prj_id_fkey; publicadminfalse1741746751826061699555prjtask_prjtask_prj_id_fkey FK CONSTRAINT}ALTER TABLE ONLY prjtask ADD CONSTRAINT prjtask_prjtask_prj_id_fkey FOREIGN KEY (prjtask_prj_id) REFERENCES prj(prj_id); MALTER TABLE ONLY public.prjtask DROP CONSTRAINT prjtask_prjtask_prj_id_fkey; publicadminfalse1821746751}26061699560prospect_prospect_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY prospect ADD CONSTRAINT prospect_prospect_cntct_id_fkey FOREIGN KEY (prospect_cntct_id) REFERENCES cntct(cntct_id); RALTER TABLE ONLY public.prospect DROP CONSTRAINT prospect_prospect_cntct_id_fkey; publicadminfalse2441526648~26061699565"prospect_prospect_salesrep_id_fkey FK CONSTRAINTALTER TABLE ONLY prospect ADD CONSTRAINT prospect_prospect_salesrep_id_fkey FOREIGN KEY (prospect_salesrep_id) REFERENCES salesrep(salesrep_id); UALTER TABLE ONLY public.prospect DROP CONSTRAINT prospect_prospect_salesrep_id_fkey; publicadminfalse244163669726061699570!prospect_prospect_taxzone_id_fkey FK CONSTRAINTALTER TABLE ONLY prospect ADD CONSTRAINT prospect_prospect_taxzone_id_fkey FOREIGN KEY (prospect_taxzone_id) REFERENCES taxzone(taxzone_id); TALTER TABLE ONLY public.prospect DROP CONSTRAINT prospect_prospect_taxzone_id_fkey; publicadminfalse244166671026061699575"prospect_prospect_warehous_id_fkey FK CONSTRAINTALTER TABLE ONLY prospect ADD CONSTRAINT prospect_prospect_warehous_id_fkey FOREIGN KEY (prospect_warehous_id) REFERENCES whsinfo(warehous_id); UALTER TABLE ONLY public.prospect DROP CONSTRAINT prospect_prospect_warehous_id_fkey; publicadminfalse244172674226061699580qryitem_qryitem_qryhead_id_fkey FK CONSTRAINTALTER TABLE ONLY qryitem ADD CONSTRAINT qryitem_qryitem_qryhead_id_fkey FOREIGN KEY (qryitem_qryhead_id) REFERENCES qryhead(qryhead_id); QALTER TABLE ONLY public.qryitem DROP CONSTRAINT qryitem_qryitem_qryhead_id_fkey; publicadminfalse582580741126061699585"quhead_quhead_billto_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_billto_cntct_id_fkey FOREIGN KEY (quhead_billto_cntct_id) REFERENCES cntct(cntct_id); SALTER TABLE ONLY public.quhead DROP CONSTRAINT quhead_quhead_billto_cntct_id_fkey; publicadminfalse249152664826061699590 quhead_quhead_misc_accnt_id_fkey FK CONSTRAINTALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_misc_accnt_id_fkey FOREIGN KEY (quhead_misc_accnt_id) REFERENCES accnt(accnt_id); QALTER TABLE ONLY public.quhead DROP CONSTRAINT quhead_quhead_misc_accnt_id_fkey; publicadminfalse249199683726061699595quhead_quhead_ophead_id_fkey FK CONSTRAINTALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_ophead_id_fkey FOREIGN KEY (quhead_ophead_id) REFERENCES ophead(ophead_id); MALTER TABLE ONLY public.quhead DROP CONSTRAINT quhead_quhead_ophead_id_fkey; publicadminfalse249181679226061699600quhead_quhead_prj_id_fkey FK CONSTRAINTyALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_prj_id_fkey FOREIGN KEY (quhead_prj_id) REFERENCES prj(prj_id); JALTER TABLE ONLY public.quhead DROP CONSTRAINT quhead_quhead_prj_id_fkey; publicadminfalse249174675126061699605quhead_quhead_salesrep_id_fkey FK CONSTRAINTALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_salesrep_id_fkey FOREIGN KEY (quhead_salesrep_id) REFERENCES salesrep(salesrep_id); OALTER TABLE ONLY public.quhead DROP CONSTRAINT quhead_quhead_salesrep_id_fkey; publicadminfalse249163669726061746490quhead_quhead_saletype_id_fkey FK CONSTRAINTALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_saletype_id_fkey FOREIGN KEY (quhead_saletype_id) REFERENCES saletype(saletype_id); OALTER TABLE ONLY public.quhead DROP CONSTRAINT quhead_quhead_saletype_id_fkey; publicadminfalse249722759126061699610"quhead_quhead_shipto_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_shipto_cntct_id_fkey FOREIGN KEY (quhead_shipto_cntct_id) REFERENCES cntct(cntct_id); SALTER TABLE ONLY public.quhead DROP CONSTRAINT quhead_quhead_shipto_cntct_id_fkey; publicadminfalse249152664826061699615quhead_quhead_shipto_id_fkey FK CONSTRAINTALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_shipto_id_fkey FOREIGN KEY (quhead_shipto_id) REFERENCES shiptoinfo(shipto_id); MALTER TABLE ONLY public.quhead DROP CONSTRAINT quhead_quhead_shipto_id_fkey; publicadminfalse249165670826061746495quhead_quhead_shipzone_id_fkey FK CONSTRAINTALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_shipzone_id_fkey FOREIGN KEY (quhead_shipzone_id) REFERENCES shipzone(shipzone_id); OALTER TABLE ONLY public.quhead DROP CONSTRAINT quhead_quhead_shipzone_id_fkey; publicadminfalse249212687526061699620quhead_quhead_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_taxtype_id_fkey FOREIGN KEY (quhead_taxtype_id) REFERENCES taxtype(taxtype_id); NALTER TABLE ONLY public.quhead DROP CONSTRAINT quhead_quhead_taxtype_id_fkey; publicadminfalse249170673326061699625quhead_quhead_taxzone_id_fkey FK CONSTRAINTALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_taxzone_id_fkey FOREIGN KEY (quhead_taxzone_id) REFERENCES taxzone(taxzone_id); NALTER TABLE ONLY public.quhead DROP CONSTRAINT quhead_quhead_taxzone_id_fkey; publicadminfalse249166671026061699630quhead_quhead_terms_id_fkey FK CONSTRAINTALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_terms_id_fkey FOREIGN KEY (quhead_terms_id) REFERENCES terms(terms_id); LALTER TABLE ONLY public.quhead DROP CONSTRAINT quhead_quhead_terms_id_fkey; publicadminfalse249157666826061699635quhead_quhead_warehous_id_fkey FK CONSTRAINTALTER TABLE ONLY quhead ADD CONSTRAINT quhead_quhead_warehous_id_fkey FOREIGN KEY (quhead_warehous_id) REFERENCES whsinfo(warehous_id); OALTER TABLE ONLY public.quhead DROP CONSTRAINT quhead_quhead_warehous_id_fkey; publicadminfalse249172674226061699640quhead_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY quhead ADD CONSTRAINT quhead_to_curr_symbol FOREIGN KEY (quhead_curr_id) REFERENCES curr_symbol(curr_id); FALTER TABLE ONLY public.quhead DROP CONSTRAINT quhead_to_curr_symbol; publicadminfalse249156666626061699645quitem_quitem_itemsrc_id_fkey FK CONSTRAINTALTER TABLE ONLY quitem ADD CONSTRAINT quitem_quitem_itemsrc_id_fkey FOREIGN KEY (quitem_itemsrc_id) REFERENCES itemsrc(itemsrc_id); NALTER TABLE ONLY public.quitem DROP CONSTRAINT quitem_quitem_itemsrc_id_fkey; publicadminfalse250232695326061699650quitem_quitem_price_uom_id_fkey FK CONSTRAINTALTER TABLE ONLY quitem ADD CONSTRAINT quitem_quitem_price_uom_id_fkey FOREIGN KEY (quitem_price_uom_id) REFERENCES uom(uom_id); PALTER TABLE ONLY public.quitem DROP CONSTRAINT quitem_quitem_price_uom_id_fkey; publicadminfalse250171673726061699655quitem_quitem_qty_uom_id_fkey FK CONSTRAINTALTER TABLE ONLY quitem ADD CONSTRAINT quitem_quitem_qty_uom_id_fkey FOREIGN KEY (quitem_qty_uom_id) REFERENCES uom(uom_id); NALTER TABLE ONLY public.quitem DROP CONSTRAINT quitem_quitem_qty_uom_id_fkey; publicadminfalse250171673726061699660quitem_quitem_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY quitem ADD CONSTRAINT quitem_quitem_taxtype_id_fkey FOREIGN KEY (quitem_taxtype_id) REFERENCES taxtype(taxtype_id); NALTER TABLE ONLY public.quitem DROP CONSTRAINT quitem_quitem_taxtype_id_fkey; publicadminfalse250170673326061699665recv_recv_freight_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY recv ADD CONSTRAINT recv_recv_freight_curr_id_fkey FOREIGN KEY (recv_freight_curr_id) REFERENCES curr_symbol(curr_id); MALTER TABLE ONLY public.recv DROP CONSTRAINT recv_recv_freight_curr_id_fkey; publicadminfalse591156666626061699670recv_recv_itemsite_id_fkey FK CONSTRAINTALTER TABLE ONLY recv ADD CONSTRAINT recv_recv_itemsite_id_fkey FOREIGN KEY (recv_itemsite_id) REFERENCES itemsite(itemsite_id); IALTER TABLE ONLY public.recv DROP CONSTRAINT recv_recv_itemsite_id_fkey; publicadminfalse591169672926061699675 recv_recv_purchcost_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY recv ADD CONSTRAINT recv_recv_purchcost_curr_id_fkey FOREIGN KEY (recv_purchcost_curr_id) REFERENCES curr_symbol(curr_id); OALTER TABLE ONLY public.recv DROP CONSTRAINT recv_recv_purchcost_curr_id_fkey; publicadminfalse591156666626061699680recv_recv_recvcost_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY recv ADD CONSTRAINT recv_recv_recvcost_curr_id_fkey FOREIGN KEY (recv_recvcost_curr_id) REFERENCES curr_symbol(curr_id); NALTER TABLE ONLY public.recv DROP CONSTRAINT recv_recv_recvcost_curr_id_fkey; publicadminfalse591156666626061699685recv_recv_splitfrom_id_fkey FK CONSTRAINTALTER TABLE ONLY recv ADD CONSTRAINT recv_recv_splitfrom_id_fkey FOREIGN KEY (recv_splitfrom_id) REFERENCES recv(recv_id); JALTER TABLE ONLY public.recv DROP CONSTRAINT recv_recv_splitfrom_id_fkey; publicadminfalse591591743026061699690recv_recv_vend_id_fkey FK CONSTRAINTyALTER TABLE ONLY recv ADD CONSTRAINT recv_recv_vend_id_fkey FOREIGN KEY (recv_vend_id) REFERENCES vendinfo(vend_id); EALTER TABLE ONLY public.recv DROP CONSTRAINT recv_recv_vend_id_fkey; publicadminfalse591158667326061699695recv_recv_vohead_id_fkey FK CONSTRAINT}ALTER TABLE ONLY recv ADD CONSTRAINT recv_recv_vohead_id_fkey FOREIGN KEY (recv_vohead_id) REFERENCES vohead(vohead_id); GALTER TABLE ONLY public.recv DROP CONSTRAINT recv_recv_vohead_id_fkey; publicadminfalse591670752126061699700recv_recv_voitem_id_fkey FK CONSTRAINT}ALTER TABLE ONLY recv ADD CONSTRAINT recv_recv_voitem_id_fkey FOREIGN KEY (recv_voitem_id) REFERENCES voitem(voitem_id); GALTER TABLE ONLY public.recv DROP CONSTRAINT recv_recv_voitem_id_fkey; publicadminfalse591673752726061699705salesrep_salesrep_emp_id_fkey FK CONSTRAINTALTER TABLE ONLY salesrep ADD CONSTRAINT salesrep_salesrep_emp_id_fkey FOREIGN KEY (salesrep_emp_id) REFERENCES emp(emp_id); PALTER TABLE ONLY public.salesrep DROP CONSTRAINT salesrep_salesrep_emp_id_fkey; publicadminfalse1632146887[26061699710+shipdata_shipdata_base_freight_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY shipdata ADD CONSTRAINT shipdata_shipdata_base_freight_curr_id_fkey FOREIGN KEY (shipdata_base_freight_curr_id) REFERENCES curr_symbol(curr_id); ^ALTER TABLE ONLY public.shipdata DROP CONSTRAINT shipdata_shipdata_base_freight_curr_id_fkey; publicadminfalse2161566666\26061699715&shipdata_shipdata_shiphead_number_fkey FK CONSTRAINTALTER TABLE ONLY shipdata ADD CONSTRAINT shipdata_shipdata_shiphead_number_fkey FOREIGN KEY (shipdata_shiphead_number) REFERENCES shiphead(shiphead_number); YALTER TABLE ONLY public.shipdata DROP CONSTRAINT shipdata_shipdata_shiphead_number_fkey; publicadminfalse2166087453]26061699720,shipdata_shipdata_total_freight_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY shipdata ADD CONSTRAINT shipdata_shipdata_total_freight_curr_id_fkey FOREIGN KEY (shipdata_total_freight_curr_id) REFERENCES curr_symbol(curr_id); _ALTER TABLE ONLY public.shipdata DROP CONSTRAINT shipdata_shipdata_total_freight_curr_id_fkey; publicadminfalse2161566666260616997251shipdatasum_shipdatasum_base_freight_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY shipdatasum ADD CONSTRAINT shipdatasum_shipdatasum_base_freight_curr_id_fkey FOREIGN KEY (shipdatasum_base_freight_curr_id) REFERENCES curr_symbol(curr_id); gALTER TABLE ONLY public.shipdatasum DROP CONSTRAINT shipdatasum_shipdatasum_base_freight_curr_id_fkey; publicadminfalse6061566666 26061699730,shipdatasum_shipdatasum_shiphead_number_fkey FK CONSTRAINTALTER TABLE ONLY shipdatasum ADD CONSTRAINT shipdatasum_shipdatasum_shiphead_number_fkey FOREIGN KEY (shipdatasum_shiphead_number) REFERENCES shiphead(shiphead_number); bALTER TABLE ONLY public.shipdatasum DROP CONSTRAINT shipdatasum_shipdatasum_shiphead_number_fkey; publicadminfalse6066087453!260616997352shipdatasum_shipdatasum_total_freight_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY shipdatasum ADD CONSTRAINT shipdatasum_shipdatasum_total_freight_curr_id_fkey FOREIGN KEY (shipdatasum_total_freight_curr_id) REFERENCES curr_symbol(curr_id); hALTER TABLE ONLY public.shipdatasum DROP CONSTRAINT shipdatasum_shipdatasum_total_freight_curr_id_fkey; publicadminfalse6061566666"26061699740&shiphead_shiphead_freight_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY shiphead ADD CONSTRAINT shiphead_shiphead_freight_curr_id_fkey FOREIGN KEY (shiphead_freight_curr_id) REFERENCES curr_symbol(curr_id); YALTER TABLE ONLY public.shiphead DROP CONSTRAINT shiphead_shiphead_freight_curr_id_fkey; publicadminfalse6081566666#26061699745"shiphead_shiphead_shipchrg_id_fkey FK CONSTRAINTALTER TABLE ONLY shiphead ADD CONSTRAINT shiphead_shiphead_shipchrg_id_fkey FOREIGN KEY (shiphead_shipchrg_id) REFERENCES shipchrg(shipchrg_id); UALTER TABLE ONLY public.shiphead DROP CONSTRAINT shiphead_shiphead_shipchrg_id_fkey; publicadminfalse6082086863$26061699750"shiphead_shiphead_shipform_id_fkey FK CONSTRAINTALTER TABLE ONLY shiphead ADD CONSTRAINT shiphead_shiphead_shipform_id_fkey FOREIGN KEY (shiphead_shipform_id) REFERENCES shipform(shipform_id); UALTER TABLE ONLY public.shiphead DROP CONSTRAINT shiphead_shiphead_shipform_id_fkey; publicadminfalse608209686526061699755"shipitem_shipitem_invcitem_id_fkey FK CONSTRAINTALTER TABLE ONLY shipitem ADD CONSTRAINT shipitem_shipitem_invcitem_id_fkey FOREIGN KEY (shipitem_invcitem_id) REFERENCES invcitem(invcitem_id); UALTER TABLE ONLY public.shipitem DROP CONSTRAINT shipitem_shipitem_invcitem_id_fkey; publicadminfalse474175675926061699760!shipitem_shipitem_invhist_id_fkey FK CONSTRAINTALTER TABLE ONLY shipitem ADD CONSTRAINT shipitem_shipitem_invhist_id_fkey FOREIGN KEY (shipitem_invhist_id) REFERENCES invhist(invhist_id); TALTER TABLE ONLY public.shipitem DROP CONSTRAINT shipitem_shipitem_invhist_id_fkey; publicadminfalse474470729226061699765"shipitem_shipitem_shiphead_id_fkey FK CONSTRAINTALTER TABLE ONLY shipitem ADD CONSTRAINT shipitem_shipitem_shiphead_id_fkey FOREIGN KEY (shipitem_shiphead_id) REFERENCES shiphead(shiphead_id); UALTER TABLE ONLY public.shipitem DROP CONSTRAINT shipitem_shipitem_shiphead_id_fkey; publicadminfalse474608745126061699770shiptoinfo_shipto_addr_id_fkey FK CONSTRAINTALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shiptoinfo_shipto_addr_id_fkey FOREIGN KEY (shipto_addr_id) REFERENCES addr(addr_id); SALTER TABLE ONLY public.shiptoinfo DROP CONSTRAINT shiptoinfo_shipto_addr_id_fkey; publicadminfalse165184680326061699775shiptoinfo_shipto_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shiptoinfo_shipto_cntct_id_fkey FOREIGN KEY (shipto_cntct_id) REFERENCES cntct(cntct_id); TALTER TABLE ONLY public.shiptoinfo DROP CONSTRAINT shiptoinfo_shipto_cntct_id_fkey; publicadminfalse165152664826061699780shiptoinfo_shipto_cust_id_fkey FK CONSTRAINTALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shiptoinfo_shipto_cust_id_fkey FOREIGN KEY (shipto_cust_id) REFERENCES custinfo(cust_id); SALTER TABLE ONLY public.shiptoinfo DROP CONSTRAINT shiptoinfo_shipto_cust_id_fkey; publicadminfalse165160668526061699785shiptoinfo_shipto_salesrep_fkey FK CONSTRAINTALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shiptoinfo_shipto_salesrep_fkey FOREIGN KEY (shipto_salesrep_id) REFERENCES salesrep(salesrep_id) ON UPDATE RESTRICT ON DELETE RESTRICT; TALTER TABLE ONLY public.shiptoinfo DROP CONSTRAINT shiptoinfo_shipto_salesrep_fkey; publicadminfalse165163669726061699790"shiptoinfo_shipto_salesrep_id_fkey FK CONSTRAINTALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shiptoinfo_shipto_salesrep_id_fkey FOREIGN KEY (shipto_salesrep_id) REFERENCES salesrep(salesrep_id); WALTER TABLE ONLY public.shiptoinfo DROP CONSTRAINT shiptoinfo_shipto_salesrep_id_fkey; publicadminfalse165163669726061699795shiptoinfo_shipto_shipform_fkey FK CONSTRAINTALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shiptoinfo_shipto_shipform_fkey FOREIGN KEY (shipto_shipform_id) REFERENCES shipform(shipform_id) ON UPDATE RESTRICT ON DELETE RESTRICT; TALTER TABLE ONLY public.shiptoinfo DROP CONSTRAINT shiptoinfo_shipto_shipform_fkey; publicadminfalse165209686526061699800"shiptoinfo_shipto_shipform_id_fkey FK CONSTRAINTALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shiptoinfo_shipto_shipform_id_fkey FOREIGN KEY (shipto_shipform_id) REFERENCES shipform(shipform_id); WALTER TABLE ONLY public.shiptoinfo DROP CONSTRAINT shiptoinfo_shipto_shipform_id_fkey; publicadminfalse165209686526061699805"shiptoinfo_shipto_shipzone_id_fkey FK CONSTRAINTALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shiptoinfo_shipto_shipzone_id_fkey FOREIGN KEY (shipto_shipzone_id) REFERENCES shipzone(shipzone_id); WALTER TABLE ONLY public.shiptoinfo DROP CONSTRAINT shiptoinfo_shipto_shipzone_id_fkey; publicadminfalse165212687526061699810!shiptoinfo_shipto_taxzone_id_fkey FK CONSTRAINTALTER TABLE ONLY shiptoinfo ADD CONSTRAINT shiptoinfo_shipto_taxzone_id_fkey FOREIGN KEY (shipto_taxzone_id) REFERENCES taxzone(taxzone_id); VALTER TABLE ONLY public.shiptoinfo DROP CONSTRAINT shiptoinfo_shipto_taxzone_id_fkey; publicadminfalse1651666710%26061699815state_state_country_id_fkey FK CONSTRAINTALTER TABLE ONLY state ADD CONSTRAINT state_state_country_id_fkey FOREIGN KEY (state_country_id) REFERENCES country(country_id); KALTER TABLE ONLY public.state DROP CONSTRAINT state_state_country_id_fkey; publicadminfalse621391719626061699820tax_tax_basis_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY tax ADD CONSTRAINT tax_tax_basis_tax_id_fkey FOREIGN KEY (tax_basis_tax_id) REFERENCES tax(tax_id) ON DELETE CASCADE; GALTER TABLE ONLY public.tax DROP CONSTRAINT tax_tax_basis_tax_id_fkey; publicadminfalse247247700826061699825tax_tax_sales_accnt_id_fkey FK CONSTRAINTALTER TABLE ONLY tax ADD CONSTRAINT tax_tax_sales_accnt_id_fkey FOREIGN KEY (tax_sales_accnt_id) REFERENCES accnt(accnt_id); IALTER TABLE ONLY public.tax DROP CONSTRAINT tax_tax_sales_accnt_id_fkey; publicadminfalse247199683726061699830tax_tax_taxauth_id_fkey FK CONSTRAINT}ALTER TABLE ONLY tax ADD CONSTRAINT tax_tax_taxauth_id_fkey FOREIGN KEY (tax_taxauth_id) REFERENCES taxauth(taxauth_id); EALTER TABLE ONLY public.tax DROP CONSTRAINT tax_tax_taxauth_id_fkey; publicadminfalse247210686926061699835tax_tax_taxclass_id_fkey FK CONSTRAINTALTER TABLE ONLY tax ADD CONSTRAINT tax_tax_taxclass_id_fkey FOREIGN KEY (tax_taxclass_id) REFERENCES taxclass(taxclass_id); FALTER TABLE ONLY public.tax DROP CONSTRAINT tax_tax_taxclass_id_fkey; publicadminfalse2476417497&26061699840taxass_taxass_tax_id_fkey FK CONSTRAINTyALTER TABLE ONLY taxass ADD CONSTRAINT taxass_taxass_tax_id_fkey FOREIGN KEY (taxass_tax_id) REFERENCES tax(tax_id); JALTER TABLE ONLY public.taxass DROP CONSTRAINT taxass_taxass_tax_id_fkey; publicadminfalse6382477008'26061699845taxass_taxass_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY taxass ADD CONSTRAINT taxass_taxass_taxtype_id_fkey FOREIGN KEY (taxass_taxtype_id) REFERENCES taxtype(taxtype_id); NALTER TABLE ONLY public.taxass DROP CONSTRAINT taxass_taxass_taxtype_id_fkey; publicadminfalse6381706733(26061699850taxass_taxass_taxzone_id_fkey FK CONSTRAINTALTER TABLE ONLY taxass ADD CONSTRAINT taxass_taxass_taxzone_id_fkey FOREIGN KEY (taxass_taxzone_id) REFERENCES taxzone(taxzone_id); NALTER TABLE ONLY public.taxass DROP CONSTRAINT taxass_taxass_taxzone_id_fkey; publicadminfalse6381666710O26061699855taxauth_taxauth_accnt_id_fkey FK CONSTRAINTALTER TABLE ONLY taxauth ADD CONSTRAINT taxauth_taxauth_accnt_id_fkey FOREIGN KEY (taxauth_accnt_id) REFERENCES accnt(accnt_id); OALTER TABLE ONLY public.taxauth DROP CONSTRAINT taxauth_taxauth_accnt_id_fkey; publicadminfalse2101996837P26061699860taxauth_taxauth_addr_id_fkey FK CONSTRAINTALTER TABLE ONLY taxauth ADD CONSTRAINT taxauth_taxauth_addr_id_fkey FOREIGN KEY (taxauth_addr_id) REFERENCES addr(addr_id); NALTER TABLE ONLY public.taxauth DROP CONSTRAINT taxauth_taxauth_addr_id_fkey; publicadminfalse2101846803Q26061699865taxauth_taxauth_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY taxauth ADD CONSTRAINT taxauth_taxauth_curr_id_fkey FOREIGN KEY (taxauth_curr_id) REFERENCES curr_symbol(curr_id); NALTER TABLE ONLY public.taxauth DROP CONSTRAINT taxauth_taxauth_curr_id_fkey; publicadminfalse210156666626061699870taxhist_taxhist_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY taxhist ADD CONSTRAINT taxhist_taxhist_curr_id_fkey FOREIGN KEY (taxhist_curr_id) REFERENCES curr_symbol(curr_id); NALTER TABLE ONLY public.taxhist DROP CONSTRAINT taxhist_taxhist_curr_id_fkey; publicadminfalse253156666626061699875taxhist_taxhist_tax_id_fkey FK CONSTRAINT}ALTER TABLE ONLY taxhist ADD CONSTRAINT taxhist_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); MALTER TABLE ONLY public.taxhist DROP CONSTRAINT taxhist_taxhist_tax_id_fkey; publicadminfalse253247700826061699880taxhist_taxhist_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY taxhist ADD CONSTRAINT taxhist_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); QALTER TABLE ONLY public.taxhist DROP CONSTRAINT taxhist_taxhist_taxtype_id_fkey; publicadminfalse2531706733*26061699885taxrate_taxrate_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY taxrate ADD CONSTRAINT taxrate_taxrate_curr_id_fkey FOREIGN KEY (taxrate_curr_id) REFERENCES curr_symbol(curr_id); NALTER TABLE ONLY public.taxrate DROP CONSTRAINT taxrate_taxrate_curr_id_fkey; publicadminfalse6431566666)26061699890taxrate_taxrate_tax_id_fkey FK CONSTRAINT}ALTER TABLE ONLY taxrate ADD CONSTRAINT taxrate_taxrate_tax_id_fkey FOREIGN KEY (taxrate_tax_id) REFERENCES tax(tax_id); MALTER TABLE ONLY public.taxrate DROP CONSTRAINT taxrate_taxrate_tax_id_fkey; publicadminfalse6432477008S26061699895taxreg_taxreg_taxauth_id_fkey FK CONSTRAINTALTER TABLE ONLY taxreg ADD CONSTRAINT taxreg_taxreg_taxauth_id_fkey FOREIGN KEY (taxreg_taxauth_id) REFERENCES taxauth(taxauth_id); NALTER TABLE ONLY public.taxreg DROP CONSTRAINT taxreg_taxreg_taxauth_id_fkey; publicadminfalse2112106869R26061699900taxreg_taxreg_taxzone_id_fkey FK CONSTRAINTALTER TABLE ONLY taxreg ADD CONSTRAINT taxreg_taxreg_taxzone_id_fkey FOREIGN KEY (taxreg_taxzone_id) REFERENCES taxzone(taxzone_id); NALTER TABLE ONLY public.taxreg DROP CONSTRAINT taxreg_taxreg_taxzone_id_fkey; publicadminfalse2111666710926061699905todoitem_todoitem_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY todoitem ADD CONSTRAINT todoitem_todoitem_cntct_id_fkey FOREIGN KEY (todoitem_cntct_id) REFERENCES cntct(cntct_id); RALTER TABLE ONLY public.todoitem DROP CONSTRAINT todoitem_todoitem_cntct_id_fkey; publicadminfalse1831526648:26061699910!todoitem_todoitem_crmacct_id_fkey FK CONSTRAINTALTER TABLE ONLY todoitem ADD CONSTRAINT todoitem_todoitem_crmacct_id_fkey FOREIGN KEY (todoitem_crmacct_id) REFERENCES crmacct(crmacct_id); TALTER TABLE ONLY public.todoitem DROP CONSTRAINT todoitem_todoitem_crmacct_id_fkey; publicadminfalse1831536652;26061699915todoitem_todoitem_incdt_id_fkey FK CONSTRAINTALTER TABLE ONLY todoitem ADD CONSTRAINT todoitem_todoitem_incdt_id_fkey FOREIGN KEY (todoitem_incdt_id) REFERENCES incdt(incdt_id); RALTER TABLE ONLY public.todoitem DROP CONSTRAINT todoitem_todoitem_incdt_id_fkey; publicadminfalse1831546656<26061699920 todoitem_todoitem_ophead_id_fkey FK CONSTRAINTALTER TABLE ONLY todoitem ADD CONSTRAINT todoitem_todoitem_ophead_id_fkey FOREIGN KEY (todoitem_ophead_id) REFERENCES ophead(ophead_id) ON UPDATE RESTRICT ON DELETE RESTRICT; SALTER TABLE ONLY public.todoitem DROP CONSTRAINT todoitem_todoitem_ophead_id_fkey; publicadminfalse1831816792=26061699925,todoitem_todoitem_recurring_todoitem_id_fkey FK CONSTRAINTALTER TABLE ONLY todoitem ADD CONSTRAINT todoitem_todoitem_recurring_todoitem_id_fkey FOREIGN KEY (todoitem_recurring_todoitem_id) REFERENCES todoitem(todoitem_id); _ALTER TABLE ONLY public.todoitem DROP CONSTRAINT todoitem_todoitem_recurring_todoitem_id_fkey; publicadminfalse1831836798,26061699930#trgthist_trgthist_src_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY trgthist ADD CONSTRAINT trgthist_trgthist_src_cntct_id_fkey FOREIGN KEY (trgthist_src_cntct_id) REFERENCES cntctmrgd(cntctmrgd_cntct_id) ON DELETE CASCADE; VALTER TABLE ONLY public.trgthist DROP CONSTRAINT trgthist_trgthist_src_cntct_id_fkey; publicadminfalse6503677166+26061699935$trgthist_trgthist_trgt_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY trgthist ADD CONSTRAINT trgthist_trgthist_trgt_cntct_id_fkey FOREIGN KEY (trgthist_trgt_cntct_id) REFERENCES cntct(cntct_id) ON DELETE CASCADE; WALTER TABLE ONLY public.trgthist DROP CONSTRAINT trgthist_trgthist_trgt_cntct_id_fkey; publicadminfalse6501526648.26061699940 uomconv_uomconv_from_uom_id_fkey FK CONSTRAINTALTER TABLE ONLY uomconv ADD CONSTRAINT uomconv_uomconv_from_uom_id_fkey FOREIGN KEY (uomconv_from_uom_id) REFERENCES uom(uom_id); RALTER TABLE ONLY public.uomconv DROP CONSTRAINT uomconv_uomconv_from_uom_id_fkey; publicadminfalse6541716737-26061699945uomconv_uomconv_to_uom_id_fkey FK CONSTRAINTALTER TABLE ONLY uomconv ADD CONSTRAINT uomconv_uomconv_to_uom_id_fkey FOREIGN KEY (uomconv_to_uom_id) REFERENCES uom(uom_id); PALTER TABLE ONLY public.uomconv DROP CONSTRAINT uomconv_uomconv_to_uom_id_fkey; publicadminfalse654171673726061699950usrgrp_usrgrp_grp_id_fkey FK CONSTRAINTyALTER TABLE ONLY usrgrp ADD CONSTRAINT usrgrp_usrgrp_grp_id_fkey FOREIGN KEY (usrgrp_grp_id) REFERENCES grp(grp_id); JALTER TABLE ONLY public.usrgrp DROP CONSTRAINT usrgrp_usrgrp_grp_id_fkey; publicadminfalse573447726826061699955vend_to_curr_symbol FK CONSTRAINT}ALTER TABLE ONLY vendinfo ADD CONSTRAINT vend_to_curr_symbol FOREIGN KEY (vend_curr_id) REFERENCES curr_symbol(curr_id); FALTER TABLE ONLY public.vendinfo DROP CONSTRAINT vend_to_curr_symbol; publicadminfalse158156666626061699960vend_vend_cntct1_id_fkey FK CONSTRAINTALTER TABLE ONLY vendinfo ADD CONSTRAINT vend_vend_cntct1_id_fkey FOREIGN KEY (vend_cntct1_id) REFERENCES cntct(cntct_id); KALTER TABLE ONLY public.vendinfo DROP CONSTRAINT vend_vend_cntct1_id_fkey; publicadminfalse158152664826061699965vend_vend_cntct2_id_fkey FK CONSTRAINTALTER TABLE ONLY vendinfo ADD CONSTRAINT vend_vend_cntct2_id_fkey FOREIGN KEY (vend_cntct2_id) REFERENCES cntct(cntct_id); KALTER TABLE ONLY public.vendinfo DROP CONSTRAINT vend_vend_cntct2_id_fkey; publicadminfalse158152664826061699970"vendaddrinfo_vendaddr_addr_id_fkey FK CONSTRAINTALTER TABLE ONLY vendaddrinfo ADD CONSTRAINT vendaddrinfo_vendaddr_addr_id_fkey FOREIGN KEY (vendaddr_addr_id) REFERENCES addr(addr_id); YALTER TABLE ONLY public.vendaddrinfo DROP CONSTRAINT vendaddrinfo_vendaddr_addr_id_fkey; publicadminfalse248184680326061699975#vendaddrinfo_vendaddr_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY vendaddrinfo ADD CONSTRAINT vendaddrinfo_vendaddr_cntct_id_fkey FOREIGN KEY (vendaddr_cntct_id) REFERENCES cntct(cntct_id); ZALTER TABLE ONLY public.vendaddrinfo DROP CONSTRAINT vendaddrinfo_vendaddr_cntct_id_fkey; publicadminfalse248152664826061699980%vendaddrinfo_vendaddr_taxzone_id_fkey FK CONSTRAINTALTER TABLE ONLY vendaddrinfo ADD CONSTRAINT vendaddrinfo_vendaddr_taxzone_id_fkey FOREIGN KEY (vendaddr_taxzone_id) REFERENCES taxzone(taxzone_id); \ALTER TABLE ONLY public.vendaddrinfo DROP CONSTRAINT vendaddrinfo_vendaddr_taxzone_id_fkey; publicadminfalse248166671026061699985vendinfo_vend_addr_id_fkey FK CONSTRAINT}ALTER TABLE ONLY vendinfo ADD CONSTRAINT vendinfo_vend_addr_id_fkey FOREIGN KEY (vend_addr_id) REFERENCES addr(addr_id); MALTER TABLE ONLY public.vendinfo DROP CONSTRAINT vendinfo_vend_addr_id_fkey; publicadminfalse158184680326061699990vendinfo_vend_taxzone_id_fkey FK CONSTRAINTALTER TABLE ONLY vendinfo ADD CONSTRAINT vendinfo_vend_taxzone_id_fkey FOREIGN KEY (vend_taxzone_id) REFERENCES taxzone(taxzone_id); PALTER TABLE ONLY public.vendinfo DROP CONSTRAINT vendinfo_vend_taxzone_id_fkey; publicadminfalse158166671026061699995vendinfo_vend_vendtype_id_fkey FK CONSTRAINTALTER TABLE ONLY vendinfo ADD CONSTRAINT vendinfo_vend_vendtype_id_fkey FOREIGN KEY (vend_vendtype_id) REFERENCES vendtype(vendtype_id); QALTER TABLE ONLY public.vendinfo DROP CONSTRAINT vendinfo_vend_vendtype_id_fkey; publicadminfalse1582587042/26061700000vohead_to_curr_symbol FK CONSTRAINTALTER TABLE ONLY vohead ADD CONSTRAINT vohead_to_curr_symbol FOREIGN KEY (vohead_curr_id) REFERENCES curr_symbol(curr_id); FALTER TABLE ONLY public.vohead DROP CONSTRAINT vohead_to_curr_symbol; publicadminfalse6701566666026061700005 vohead_vohead_adjtaxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY vohead ADD CONSTRAINT vohead_vohead_adjtaxtype_id_fkey FOREIGN KEY (vohead_adjtaxtype_id) REFERENCES taxtype(taxtype_id); QALTER TABLE ONLY public.vohead DROP CONSTRAINT vohead_vohead_adjtaxtype_id_fkey; publicadminfalse6701706733126061700010$vohead_vohead_freighttaxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY vohead ADD CONSTRAINT vohead_vohead_freighttaxtype_id_fkey FOREIGN KEY (vohead_freighttaxtype_id) REFERENCES taxtype(taxtype_id); UALTER TABLE ONLY public.vohead DROP CONSTRAINT vohead_vohead_freighttaxtype_id_fkey; publicadminfalse6701706733226061700015vohead_vohead_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY vohead ADD CONSTRAINT vohead_vohead_taxtype_id_fkey FOREIGN KEY (vohead_taxtype_id) REFERENCES taxtype(taxtype_id); NALTER TABLE ONLY public.vohead DROP CONSTRAINT vohead_vohead_taxtype_id_fkey; publicadminfalse6701706733326061700020vohead_vohead_taxzone_id_fkey FK CONSTRAINTALTER TABLE ONLY vohead ADD CONSTRAINT vohead_vohead_taxzone_id_fkey FOREIGN KEY (vohead_taxzone_id) REFERENCES taxzone(taxzone_id); NALTER TABLE ONLY public.vohead DROP CONSTRAINT vohead_vohead_taxzone_id_fkey; publicadminfalse6701666710426061700025vohead_vohead_vend_id_fkey FK CONSTRAINTALTER TABLE ONLY vohead ADD CONSTRAINT vohead_vohead_vend_id_fkey FOREIGN KEY (vohead_vend_id) REFERENCES vendinfo(vend_id); KALTER TABLE ONLY public.vohead DROP CONSTRAINT vohead_vohead_vend_id_fkey; publicadminfalse6701586673526061700030#voheadtax_taxhist_basis_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY voheadtax ADD CONSTRAINT voheadtax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); WALTER TABLE ONLY public.voheadtax DROP CONSTRAINT voheadtax_taxhist_basis_tax_id_fkey; publicadminfalse6722477008626061700035 voheadtax_taxhist_parent_id_fkey FK CONSTRAINTALTER TABLE ONLY voheadtax ADD CONSTRAINT voheadtax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES vohead(vohead_id) ON DELETE CASCADE; TALTER TABLE ONLY public.voheadtax DROP CONSTRAINT voheadtax_taxhist_parent_id_fkey; publicadminfalse6726707521726061700040voheadtax_taxhist_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY voheadtax ADD CONSTRAINT voheadtax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); QALTER TABLE ONLY public.voheadtax DROP CONSTRAINT voheadtax_taxhist_tax_id_fkey; publicadminfalse6722477008826061700045!voheadtax_taxhist_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY voheadtax ADD CONSTRAINT voheadtax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); UALTER TABLE ONLY public.voheadtax DROP CONSTRAINT voheadtax_taxhist_taxtype_id_fkey; publicadminfalse6721706733926061700050voitem_voitem_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY voitem ADD CONSTRAINT voitem_voitem_taxtype_id_fkey FOREIGN KEY (voitem_taxtype_id) REFERENCES taxtype(taxtype_id); NALTER TABLE ONLY public.voitem DROP CONSTRAINT voitem_voitem_taxtype_id_fkey; publicadminfalse6731706733:26061700055#voitemtax_taxhist_basis_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY voitemtax ADD CONSTRAINT voitemtax_taxhist_basis_tax_id_fkey FOREIGN KEY (taxhist_basis_tax_id) REFERENCES tax(tax_id); WALTER TABLE ONLY public.voitemtax DROP CONSTRAINT voitemtax_taxhist_basis_tax_id_fkey; publicadminfalse6752477008;26061700060 voitemtax_taxhist_parent_id_fkey FK CONSTRAINTALTER TABLE ONLY voitemtax ADD CONSTRAINT voitemtax_taxhist_parent_id_fkey FOREIGN KEY (taxhist_parent_id) REFERENCES voitem(voitem_id) ON DELETE CASCADE; TALTER TABLE ONLY public.voitemtax DROP CONSTRAINT voitemtax_taxhist_parent_id_fkey; publicadminfalse6756737527<26061700065voitemtax_taxhist_tax_id_fkey FK CONSTRAINTALTER TABLE ONLY voitemtax ADD CONSTRAINT voitemtax_taxhist_tax_id_fkey FOREIGN KEY (taxhist_tax_id) REFERENCES tax(tax_id); QALTER TABLE ONLY public.voitemtax DROP CONSTRAINT voitemtax_taxhist_tax_id_fkey; publicadminfalse6752477008=26061700070!voitemtax_taxhist_taxtype_id_fkey FK CONSTRAINTALTER TABLE ONLY voitemtax ADD CONSTRAINT voitemtax_taxhist_taxtype_id_fkey FOREIGN KEY (taxhist_taxtype_id) REFERENCES taxtype(taxtype_id); UALTER TABLE ONLY public.voitemtax DROP CONSTRAINT voitemtax_taxhist_taxtype_id_fkey; publicadminfalse675170673326061700075whsinfo_warehous_accnt_id_fkey FK CONSTRAINTALTER TABLE ONLY whsinfo ADD CONSTRAINT whsinfo_warehous_accnt_id_fkey FOREIGN KEY (warehous_default_accnt_id) REFERENCES accnt(accnt_id); PALTER TABLE ONLY public.whsinfo DROP CONSTRAINT whsinfo_warehous_accnt_id_fkey; publicadminfalse172199683726061700080whsinfo_warehous_addr_id_fkey FK CONSTRAINTALTER TABLE ONLY whsinfo ADD CONSTRAINT whsinfo_warehous_addr_id_fkey FOREIGN KEY (warehous_addr_id) REFERENCES addr(addr_id); OALTER TABLE ONLY public.whsinfo DROP CONSTRAINT whsinfo_warehous_addr_id_fkey; publicadminfalse172184680326061700085whsinfo_warehous_cntct_id_fkey FK CONSTRAINTALTER TABLE ONLY whsinfo ADD CONSTRAINT whsinfo_warehous_cntct_id_fkey FOREIGN KEY (warehous_cntct_id) REFERENCES cntct(cntct_id); PALTER TABLE ONLY public.whsinfo DROP CONSTRAINT whsinfo_warehous_cntct_id_fkey; publicadminfalse172152664826061700090 whsinfo_warehous_costcat_id_fkey FK CONSTRAINTALTER TABLE ONLY whsinfo ADD CONSTRAINT whsinfo_warehous_costcat_id_fkey FOREIGN KEY (warehous_costcat_id) REFERENCES costcat(costcat_id); RALTER TABLE ONLY public.whsinfo DROP CONSTRAINT whsinfo_warehous_costcat_id_fkey; publicadminfalse172229694226061700095!whsinfo_warehous_shipform_id_fkey FK CONSTRAINTALTER TABLE ONLY whsinfo ADD CONSTRAINT whsinfo_warehous_shipform_id_fkey FOREIGN KEY (warehous_shipform_id) REFERENCES shipform(shipform_id); SALTER TABLE ONLY public.whsinfo DROP CONSTRAINT whsinfo_warehous_shipform_id_fkey; publicadminfalse172209686526061700100 whsinfo_warehous_shipvia_id_fkey FK CONSTRAINTALTER TABLE ONLY whsinfo ADD CONSTRAINT whsinfo_warehous_shipvia_id_fkey FOREIGN KEY (warehous_shipvia_id) REFERENCES shipvia(shipvia_id); RALTER TABLE ONLY public.whsinfo DROP CONSTRAINT whsinfo_warehous_shipvia_id_fkey; publicadminfalse172256703426061700105!whsinfo_warehous_sitetype_id_fkey FK CONSTRAINTALTER TABLE ONLY whsinfo ADD CONSTRAINT whsinfo_warehous_sitetype_id_fkey FOREIGN KEY (warehous_sitetype_id) REFERENCES sitetype(sitetype_id); SALTER TABLE ONLY public.whsinfo DROP CONSTRAINT whsinfo_warehous_sitetype_id_fkey; publicadminfalse172257703826061700110 whsinfo_warehous_taxzone_id_fkey FK CONSTRAINTALTER TABLE ONLY whsinfo ADD CONSTRAINT whsinfo_warehous_taxzone_id_fkey FOREIGN KEY (warehous_taxzone_id) REFERENCES taxzone(taxzone_id); RALTER TABLE ONLY public.whsinfo DROP CONSTRAINT whsinfo_warehous_taxzone_id_fkey; publicadminfalse172166671026061700115wo_wo_womatl_id_fkey FK CONSTRAINTALTER TABLE ONLY wo ADD CONSTRAINT wo_wo_womatl_id_fkey FOREIGN KEY (wo_womatl_id) REFERENCES womatl(womatl_id) ON DELETE SET NULL; AALTER TABLE ONLY public.wo DROP CONSTRAINT wo_wo_womatl_id_fkey; publicadminfalse410246700526061700120womatl_womatl_uom_id_fkey FK CONSTRAINTyALTER TABLE ONLY womatl ADD CONSTRAINT womatl_womatl_uom_id_fkey FOREIGN KEY (womatl_uom_id) REFERENCES uom(uom_id); JALTER TABLE ONLY public.womatl DROP CONSTRAINT womatl_womatl_uom_id_fkey; publicadminfalse6737246171?26061700125%womatlpost_womatlpost_invhist_id_fkey FK CONSTRAINTALTER TABLE ONLY womatlpost ADD CONSTRAINT womatlpost_womatlpost_invhist_id_fkey FOREIGN KEY (womatlpost_invhist_id) REFERENCES invhist(invhist_id); ZALTER TABLE ONLY public.womatlpost DROP CONSTRAINT womatlpost_womatlpost_invhist_id_fkey; publicadminfalse6804707292>26061700130$womatlpost_womatlpost_womatl_id_fkey FK CONSTRAINTALTER TABLE ONLY womatlpost ADD CONSTRAINT womatlpost_womatlpost_womatl_id_fkey FOREIGN KEY (womatlpost_womatl_id) REFERENCES womatl(womatl_id) ON DELETE CASCADE; YALTER TABLE ONLY public.womatlpost DROP CONSTRAINT womatlpost_womatlpost_womatl_id_fkey; publicadminfalse6802467005@26061700135pkgcmdarg_cmdarg_cmd_id_fkey FK CONSTRAINTALTER TABLE ONLY pkgcmdarg ADD CONSTRAINT pkgcmdarg_cmdarg_cmd_id_fkey FOREIGN KEY (cmdarg_cmd_id) REFERENCES pkgcmd(cmd_id); LALTER TABLE ONLY te.pkgcmdarg DROP CONSTRAINT pkgcmdarg_cmdarg_cmd_id_fkey; teadminfalse6906897541B26061700140"tecustrate_tecustrate_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY tecustrate ADD CONSTRAINT tecustrate_tecustrate_curr_id_fkey FOREIGN KEY (tecustrate_curr_id) REFERENCES public.curr_symbol(curr_id) ON DELETE SET DEFAULT; SALTER TABLE ONLY te.tecustrate DROP CONSTRAINT tecustrate_tecustrate_curr_id_fkey; teadminfalse6971566666A26061700145"tecustrate_tecustrate_cust_id_fkey FK CONSTRAINTALTER TABLE ONLY tecustrate ADD CONSTRAINT tecustrate_tecustrate_cust_id_fkey FOREIGN KEY (tecustrate_cust_id) REFERENCES public.custinfo(cust_id) ON DELETE CASCADE; SALTER TABLE ONLY te.tecustrate DROP CONSTRAINT tecustrate_tecustrate_cust_id_fkey; teadminfalse6971606685C26061700150teemp_teemp_emp_id_fkey FK CONSTRAINTALTER TABLE ONLY teemp ADD CONSTRAINT teemp_teemp_emp_id_fkey FOREIGN KEY (teemp_emp_id) REFERENCES public.emp(emp_id) ON DELETE CASCADE; CALTER TABLE ONLY te.teemp DROP CONSTRAINT teemp_teemp_emp_id_fkey; teadminfalse6992146887D26061700155teitem_teitem_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY teitem ADD CONSTRAINT teitem_teitem_curr_id_fkey FOREIGN KEY (teitem_curr_id) REFERENCES public.curr_symbol(curr_id) ON DELETE SET DEFAULT; GALTER TABLE ONLY te.teitem DROP CONSTRAINT teitem_teitem_curr_id_fkey; teadminfalse7051566666E26061700160teitem_teitem_invcitem_id_fkey FK CONSTRAINTALTER TABLE ONLY teitem ADD CONSTRAINT teitem_teitem_invcitem_id_fkey FOREIGN KEY (teitem_invcitem_id) REFERENCES public.invcitem(invcitem_id) ON DELETE SET NULL; KALTER TABLE ONLY te.teitem DROP CONSTRAINT teitem_teitem_invcitem_id_fkey; teadminfalse7051756759F26061700165teitem_teitem_tehead_id_fkey FK CONSTRAINTALTER TABLE ONLY teitem ADD CONSTRAINT teitem_teitem_tehead_id_fkey FOREIGN KEY (teitem_tehead_id) REFERENCES tehead(tehead_id) ON DELETE CASCADE; IALTER TABLE ONLY te.teitem DROP CONSTRAINT teitem_teitem_tehead_id_fkey; teadminfalse7057037561G26061700170teitem_teitem_vodist_id_fkey FK CONSTRAINTALTER TABLE ONLY teitem ADD CONSTRAINT teitem_teitem_vodist_id_fkey FOREIGN KEY (teitem_vodist_id) REFERENCES public.vodist(vodist_id) ON DELETE SET NULL; IALTER TABLE ONLY te.teitem DROP CONSTRAINT teitem_teitem_vodist_id_fkey; teadminfalse7056687519I26061700175teprj_teprj_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY teprj ADD CONSTRAINT teprj_teprj_curr_id_fkey FOREIGN KEY (teprj_curr_id) REFERENCES public.curr_symbol(curr_id) ON DELETE SET NULL; DALTER TABLE ONLY te.teprj DROP CONSTRAINT teprj_teprj_curr_id_fkey; teadminfalse7071566666H26061700180teprj_teprj_cust_id_fkey FK CONSTRAINTALTER TABLE ONLY teprj ADD CONSTRAINT teprj_teprj_cust_id_fkey FOREIGN KEY (teprj_cust_id) REFERENCES public.custinfo(cust_id) ON DELETE SET NULL; DALTER TABLE ONLY te.teprj DROP CONSTRAINT teprj_teprj_cust_id_fkey; teadminfalse7071606685J26061700185 teprjtask_teprjtask_curr_id_fkey FK CONSTRAINTALTER TABLE ONLY teprjtask ADD CONSTRAINT teprjtask_teprjtask_curr_id_fkey FOREIGN KEY (teprjtask_curr_id) REFERENCES public.curr_symbol(curr_id) ON DELETE SET DEFAULT; PALTER TABLE ONLY te.teprjtask DROP CONSTRAINT teprjtask_teprjtask_curr_id_fkey; teadminfalse7091566666K26061700190 teprjtask_teprjtask_item_id_fkey FK CONSTRAINTALTER TABLE ONLY teprjtask ADD CONSTRAINT teprjtask_teprjtask_item_id_fkey FOREIGN KEY (teprjtask_item_id) REFERENCES public.item(item_id) ON DELETE SET NULL; PALTER TABLE ONLY te.teprjtask DROP CONSTRAINT teprjtask_teprjtask_item_id_fkey; teadminfalse7091686722L26061700195#teprjtask_teprjtask_prjtask_id_fkey FK CONSTRAINTALTER TABLE ONLY teprjtask ADD CONSTRAINT teprjtask_teprjtask_prjtask_id_fkey FOREIGN KEY (teprjtask_prjtask_id) REFERENCES public.prjtask(prjtask_id) ON DELETE CASCADE; SALTER TABLE ONLY te.teprjtask DROP CONSTRAINT teprjtask_teprjtask_prjtask_id_fkey; teadminfalse7091826794M26061700200pkgcmdarg_cmdarg_cmd_id_fkey FK CONSTRAINTALTER TABLE ONLY pkgcmdarg ADD CONSTRAINT pkgcmdarg_cmdarg_cmd_id_fkey FOREIGN KEY (cmdarg_cmd_id) REFERENCES pkgcmd(cmd_id); SALTER TABLE ONLY xtdesktop.pkgcmdarg DROP CONSTRAINT pkgcmdarg_cmdarg_cmd_id_fkey;  xtdesktopadminfalse7572712711 x x x 9xQo0ǟOqKȔV{˺l-m"܂ ٦kl$!?wZwѓOYq\!Z `0xHI~bGSİ8A“@J8$vI H g3 wdpDdLc0;`$$׌S (e,"9KIAt[Uě2q*F9zjpaz2Ҕ=RYfOW)b'EOpu9N]o[[ƴ  `8 ^dx[n#b! :tLqH>pOͥy2qAuut&$ _ujA$U]}s!\W'7U̧b>c"4ڍ[\]?rn.PIIQXX[:̼t1'<[y_}ZX4bUCq6XyG'q]Av(r2 ԶZA@7DRG;J%T<[|,X/bP14D7&oJ}XWn~KW}Ks- =SyOۛ;4~+:5F#]' k4ڎ76=kW7a|OG]$hӑꞎq'{ёN{=9񓽒Mq2YmM 7[ٷ]6  7'=B8е.86sn-#"f 1τvW /N4Os tin{=ompzkX8z Caց./>e@I) #Jbʘ:L)v܁ O]ƃ;OenDG駪)zEuUԋ. &Oȥъ=zL c;(Mo""0 #U*F(j2e'[g.frn T NZoMl&2?ݯ>@Vd 0MxOi1JZDHxH^:,t/[z Qe/&?ŰD1D9D1Op+Sh0e=$|!ÄID^YDoZڌto B[;Qb6345ً)%)ZB$v?G>\xMK0f֋ӱ݃3I8g81%0'ha bpS'T~qbp^z%E%QuaV6IT#ҙ+g{gNbDp5!vC| 4+NB|TT/؆j]2wF*oF{U],VQaEaA7X"hu!arYӿ 4t0XW; pUW*kr@U]G5VuAQo a6=mYfE3X E#Pq.WJ:{@|-Xԫ֦b(7@0& 25A.\#V4 gC k uF"8r(cS%Tj@U]5&Ka93n<ҝ+AM\XƋ,O"GȩC ll:5ضKv cb~I͘Ew|EH|Q+#SLg䪚 :cYFdI% 4*{H~#e!CPYB+$J!,H.TAsX,:@>qrh!3jONpSQ3YOq%0hR;zDm$0w* M`ؒD 6?arۯ;dz4a nR{JJ7BF\.ׂR+kt) :~>Y</^?]2KIi#ooy+ynHsE{"d\~'1gCuGOAnKg|yrRmlL''&.+y i kJVj]K7x?#͎*rEz%]$V赮~S{ 祒M6nNN]WݹFN@jҭu}]WrbAzW`2<WV6.!s[0߲TU;n6$P~@ .тB>!bvi16ʱ<  *׉USzH|wC/ΏFJѮO7~ $lN<ͯ32tc%|bU\/ $a@~4*Z@2-V* ŬԊ*wo;0ԷM%) Բ' Ni$[Ÿgtt7_?k#E3k b{f#s=N) o+j#s=gg[lLJ /|F˩qYOs[Rv MPVUP'SJE"q' /^+f S xZmo8 ?4-P[v^ڞx&馀m^v (hR*Qwo^-i.m`XÙ ×;3h9eVZai`X_f>-g|s߆s9 tɃ4Lm#xbopX>e=J~ἶQЕL%9De;W, \rt+Et8Z.Akwp|š|Hu 36,ݥbKUα~PLuC2R":ek'uY\&nR *0,LF&mw9*b Qe?Hp/wWFRK9R \UmmpZ+!ZYfbW xʄy{k;jYd RQ⯝Ӛ? 2 "N\L蔉  cq k*Qq>8qޛZW*:b-{s}\t}FU=Oy:KQ/lM q]*Mv`N=Q+S]7IGψ_d]$YwHh^c,Tz+(dbug4b5ܝ.(9#d g8؏ ~ CTኪ4d4G˼<1`3U!zXM~Uݩ.$DA"4*C$HE $g6[&<ԄBB=̌L GH!myD8V=Z%h ih"y I/0JQu=u@E4sXT*1dAVfYDsȴO%WcE<1p'rF`닉ń<L/3pN `t+ Di$)+cUiDaH|={.&xvɂ+_JK4>!M6M j>m {?R/Z9x>BG[LrSH+LؐuTEiGGtf̃ :ק4 >릱&{˻ɫj9jdII{ CZxѠu4WG|JhD`R~pdcլH`MPFy}H#,Im@9l[mo)iUD&e&Æ* UL!*pѱ.| VY![d#׸eKk&[l(TCؠ1IR8ɺ'W48D2A}vchmhژdˋw>l^Y{)Q3dVP** 紭DRd.`l2f*q ouo64Ue0ײ) y?wR%۰Ξ AkCǫ5hLeg^jߧ"x7Wm75HT(yic_˵)B qy$w4W.\G+<{kcuiaеW\A^c$ۆwaN,^)VyuK )G"z=/ xd TxVr8|VB?߱YCT12{a .IN#[c*ۭsQ#7 )ٖ~K)Vp׸Cw^ OqA7« #0q j8'B`sAŎTZ [:oi,B9hce~khڹSb_lTB/:xQ\qTSu%UqOhYH6Ȯ΂ƪ́1qcCLA"S"8%X/[ţ| ^@=8NIГlX=[v1fvm! $#rL/3x`Pn#zY 0 Oڔ P΋ilVO@Q^;)YHwZ+r{$@Α6P8O(瀚zVær z%D@ 0UKn[>E,eD#+;$6? xѻ0C,f_ǒLtAtxߓ{ID8 3x34MSO,J/-N Q ' LT \1z\\\ x x x x x x x x x xP x x xQ x[ x109E/*N^n3 3KQAbp{8Wd )cG\R]Ns>ƂmܟX_}݇g x-&&LMd(j0 GSjc6BJ HR3PejNwDm#SGTޏNQz?:~DuzB_ ,x340t-H̫T28c„<=... Oa! x Qx36tv qu4t/.QpN,IM/T0042,8 ,NK# ˘J1~@QC=...M Jx3M,I-L,?N]C.N̢Ĥ"p\ #9#3/U,(#51Eڔprj x100lӹsO'U""!~m5S`Q*ۍ.ta俠w!>^gA,U[+kN qkiˊaz-D'אe"ߩm }\׉Y$xN槼0Pن"Q jf(usVENQҗFa!54 qovi!wh욝؊=߶â5?m"K0co<ˈe 6̖(uš4ۢH|EEFPsW7Uߜ65GcrDBӔ S'qN%YmԜ9hN4|٫vu|zC>mZVsIKi䐓cj`?df,e ŵBj.Y"=&9\IbZvF';߀SozzGvCQ5)E#ݐWL,g@&~>Od?RZj;ϞLw ^.&f +V:?RbdX!ɟN-ģ #4lZ]j%MZϪ϶ ǣ,W8UӼ*D`]xFټK^m[՛9J'BFLn f ;5"H3ㆊp|j *[ jZq PCkHa "mp:bQB)[ ֧ * Eu8b5霞؆ .}f=L[5r]pԚc@4,(ibV ?(+6lֶ\Z l]YȾrgZ9)sMCKUE%Rvd nFy@C*dVk¡ -;伦R N 뫴@H_PMTm8ƞR%@`H(4܀maZw}ye.#(LAL?a)sw"Y(72\Gm$6lc6?$VO?sn lw-D80уPI◴|U+:Wj{ Qx~2.D{6Ǔ&$y1xp6+޳ nf2z '< G OkOn鶒jivbIop==AC?C9̛sSy03 Q#YRKB{9Dxd׋{^A\%Xu Z%GJxO폐@TqxS=·o}|(k4ir$Dӗ};Ӱ_0GpYý-t,(يBuczWe 4gʗ" 3Z4cN.6#(4ua_ʷ 0|:=.:L66F&ԁkk:UR 1T(Y cRH.uehP(d\9> f) VK.WD>&#"x^PܦKhJ hUI=bMWטcIڳ] m 8t%v2c~7;D4g;Zsʣk՘{ ί̫Mp#p>gDmWSS)uWX\AI=q1PHd8L$VJFĢĚ Eܲ șAvꟴk9ʵl5>-t}и󇝼Mc^gΟ9tF5͇o\(= ɦ83=nRlS:)`>Ns~;lCHG>)j矅H=%P)OGoGUz ga(JJ9X ;r69'jSP|` +Nu4N)2L4n0T\ Z\N&Oy ]c&cf-Ca<ҴT섮:óDq,~@L.C mR%/>a{l+/5/iu`6ҙ '(/NB>y,k7^RPCMTO 8H)lj"7ta"`V.td6 T5 ӄ|wP+.l;`FGtbD3Oř 5}RgRňϣI[Bة(3ξc3$$Eo,BA-^D|CcIOڞ1 0iAl*y\9zZsu:,cTF㥃iHg <\Q<=9¯'p\}|cPs9z<`ס1Q OG5_2P|aHU8tV`ѬKͺYaJ,g=,3mM>̀tӧ'L;`8{7Vp|@< ãLԃڈ[ݑKhhBwD =ue}5Hw99hlCcd&4K| p@V(8 9?6w@vJצP V Y}6^Q ،eߟ'LEt'A>4͹Rմ[H.͓*KM("B1{YӉT&HH1Os=Ir Yȕ=#%ꃺW||:=VMN717J<)nqu*8`=oBHD@BC(ĭΟ>;U׆"b M|ܞ𣷒eWܱMqS }d|w)%Y zm>@<{'OtF5AÖ#Tc0R|RgC~~UG6)iύ8xr\x(w@"zP{ÊR9V,`ʏχ]AS˾C[dQ5R#ˏi3](VSy]Cن4`97^>Oxs(ߣd3c{w~olۮoɐl-G LQ-G:*o7>ֿ]77x"$E^Gu)_^6`=$koҝm -NP0@Ϟx\ ¶ƖG>-B sޖЉlb~qM cZA.?CR5" i1֏ gɶЪd/}^zWK)zXj?(R<@D@`&IM@cy. &un[D|@UrVd- 7@Ak\mN)S3Xu].H?v6}a([EdȲswʚOw-{}%z2]rXKYZжӦ嘖??heӪ1r̢Me\o2?hyKˢPfy$~S&.-hzZBoC3ZЀ{66$1[q%G#wnL}$0L2 eU`?$bu[&ˀWa*-6ivYhz5PE}ZMh&n4Yt|yPV"DY\9!JWUɅlb1G R&&/ڠ0e?jmnd+sEir -"Cc^_;Zaՠ>RV`>Sy7GI?ލN]gލ곉0ܵI@wNS'aK9 x344+LIUNI-,#,$ AjY\RX_Dq "7-=˘b us\> !%%P/*$V(8deT G1 b*L+F R x %x3443NCKs]C 4242b< ;x3,tJ,NUp.-*JKTUpHKOUp,VKMN-.N,T v bx=ȱ@0S$E$Z^mg2S!6 22E ->x^E+KGx{! vm-$V$'ߩhmQPVJ x x@ xl )x3u/MQp.-.M-L Ar 6x3usM+MKL.)-K2tttL,.)J,O  x\ xs Sx3ttLL,"a$D&e%qrCMK'42AjTc,h x x x x];1 zrP켜 !roOgdpLmx++:hh8j*(d2$*nӄ) 9-!k& WP7ІL-yk8Z]Gy ʓDؐ_yRTͷ1q˯{)aជ xV]s6}B!|1no$@ EKHTwW 3{jatZA*$P|ppr7\ ƈxq8Z: z5&L/P`4xj~9w >w'EY 7l$+.eD`+(AXޒfH;bT2(;ToP=j}Y51QiJT^PU}~rqL}rI(W:|bZKV֢׸51EBݪ6zv5v묀=Iu!݁:XS fE)2 w'#ncU28ц#aZRAᎥDV$R1z^D KT&{qa#1M_ڔ:)bP@5  ]9^Oԕ- ~TF];$U^ʯQ=&Pyw+N\/IC!!AXN ;OppLXwC``po>B|겴,-z&j[yՈ["Cp|3=#} E,"N#/߹ENqYr^,$+m:,i9HD*ޛ0@ W!Ը u#4 H_s:oUP&\Ζ wSI*zI)R~)q{ 䦙`l&a#FdicX{g[% M;Zy4sڱ=[i|*P%UQe~1h7^V,uՄ&=G a/Fz1bȽ[b]x4িZIe]Y[1ԟWlj xuM 0ر.;6C Z3C?Ƅx^h9 QhhY(VE{L#X 7, K$r˒3i,۩yU̝lYtYҀ*O]{k:|7leG,^ft?)K ] x x xMn006$YMk uVJABuUBa`>y3J('8^u'aIop GVi.⎑a'30C9` `yf<>N(ᆁs_ Uވ6BEA3{ePZеZ""{A{pn[&ߴ@3 kPĤkk;2SGq<\Y;ckζAE9};B7HD Rmz\%/,,Yemat}i]q|ovxue )gR0(M6nMXi;c&:`]u9E}~JDc1፤!(Gq%z%9Tu[Q<e*$ xV]0}N~E@;?yn2]iT,D@DPl: {In !=" `apj$ZoᲚSm\x4@'w. =c/a_nQޥ&"$29O 'GR4}&lw4WaTmS$-GN--De]o?S#kV =k@@}bt? C?tB =dI$KCDP#%2 mk}ROU_yahH8Iﳌ Yv2Bȉt/dNf1ZlcKO<̲t3y$MbTYRۂP@Hk$<Ź90{vylURSzȳ-y y94oaJ;r/nSAƿExٸN z>ll oCaEAy!'eLנ@"Dumျ/R?cڡZ Q/d+C=?0[K`^/_:Cg6zcT-˯t@$}1!XW.G_]u, x34tJ,LVpJIKNUHM-D)$r?b' 24Z䙗 4h`nj^ '.#OfP)8'g(-P@CK8=\C}4BC}C=|Ãt R !M,.s,F CJ` x= 0_ZrP3k Վ4%Z9$!:wFo~wJ/peP ,p?ojYbw,4ͯT!7}hz!0fALY`x@`Ր%$&)Qej"$RDGDJبo%dƙ3A> E%TM`+"%x/|=nݜ) &=;n_,A3wgP5 +%,RKliE695BDJlE695[:eMoMD&׷&Ri*Ytd*i*?:G'2>[ܞ赬DieZ^q-Zɤlk\H}:t8<$~Iا8O/c^>}zN%Kl1اbO/Q`^>D}* U $3H#`>#`>}F@}F= 'X:Iȥ4H`I H` H` g" 3I1g> Js!v? !Js "? &bt"v@ .b tcP5@"P5H1xRe "D*%ŠJI|R_<2*%ŠJId1RYAbM 56{ǀ5筓ԟiZpՓ^%ePff -RX@#RS'Kj-J%HJU-75;UaI!HWQf6W^jL.o-LjXcܻ@k~yuBq'D֎1k9l9wLd"^ vݎBd"vLdLll*/?1]sVg[[2%掬/7mɔHR9P큫 %殦n]XI= n[,5gz^%g׻Az :mTDW;/,KvJ>T%2Ln>l2%tpuܐ)c#7dJԍ m#7dJ5*^ٜUZn̛'nv!%m u7hhu&7C%\)fbج";X8nca$lWƼĞU-JԜ-/ĽZڈ{"n]&Dr\&چjӆ21*S2cͅ;VeZ@WhsXT( 2y7%Kd#ueBmkYRǼqhUG:5.`{M,2nL~>e׽MRf>l5wsAU:%ef-Z̴; [2ywȖL ;-̼>? 8wا([BX3ǖPLm,x;4`֯W3ufo iE=ofঝ-34ԬV8sp?Wbˤ;-ę}/%8pf:Bo&} vz]C$ Bu3=\pf6np!Ȯp!nxx_c,lf0b,lv&^>c;V3^) VJ-+~um?g;L-`z8~)Azrn#AF*? +S?>oSlXX)ZJgВUdD %MIvYJ%qy!B0Ҽ`Z?̻,ІV[Ӣ`Z?$,»HZ?$,b^ hb,Zk#Z% hh.Z В|X.ZŽ@Zo$KhFXBD c 7%H1z#q]B.mLG",=b Z/hiBH/%ֲDXT`xeql wQEJ42z Pvy!z ѐ[;<@Zoo k G|z2Gp[a87{hmgEMHe.\s)(oSRe%I()y^sI!͒+!A˽"!A˽";9KQh1hr/DABB˃D ,$W$ȴ#QɣHl2z0KxM c@ՃH@D,\f T=@ #P`m%UKX@ (3Gq.zg i~[D]T}M Xĝi ^F®L+YZv`Zڂp* yģiKy 0nwW\ 1AϬӂÌP6ӖyA|AIT J?ԦdlṨ$"WN/r !G%Q)Vԅ碒^x IE%1)('0 E%qɥQI\VBYm]8uČHM dIVѷkDaY$- +G-!`QC 'V/bbgPJ`QC(%0!C6WY%dǫ:i# { [ O.q@ Og}uowM-;o4}c6#Qȫ|@$1߼vYF2N:"o(UE6EȰ( E`!cxylsPX|2[ۮ">EEf{*PHQ'w`јl g4u}l ,= h{ 3~,Z@%2`%)+F 8 5JeI+N ܩ@\l9R"T4m 26|%cIDV6kWE'1)oJ҃Ah,ƸNSTS'PuXx.zKYp)T碗$Wf]pƨ? Ib/1JxPQ1ؓ]/0zr O׏rU@?|~O~ϟ~bn 3hHɢBf+%) KG`(H,FіQǔDh q( 8-  QȾx̥DS$l [+Q$~+I,G(q%w+I,Ͽ(q`mtUq߶g[W8X7Wnq/ ݒLmq)?tuv enI]DŽ"v`quL%m1]bv{uL1Qm{s 4\4\0ȸ: <=iqN oʳUX6 8ُNxovR87;)r&)#ޘ@r#7f'~z%JǓ g[zO Ǹ;)eֵYT#tB[l}I#ڧԺЀ(;i@m~ j@9}f3SzIJrd)ՓQR&'LWOH2 \='ez2^$pdՓApz2)WO\=Y' rdb\,--`-`-5WwA WwA Ww< Ww<2Ww<Ww82Ww82Ww8 Ww8 Ww82W= WJ2ǠǠV{V{ pRG1Gl1Gl1 Ea`(@RQ2szpR:/3zR&(e2zHR&AdpLWׂ\e2W.W) W% W%2W+ W+2WO12WO62WO<2WOA WOA WO\=)\=)\=(\=\|;gQ,@G9.]|} cQ*G@ebJIT~>JG`jP=mb#Q*@G2s"} (cpQ*b@G-{} b'^}Rn]:'aT-Ք~F«_[zpmhZ)ޥGN&0QB |BJ4P?`! @G8D 2Q>AG0.؀|qY(ȥ|@%*q T?/R  Xd^Ey;n fS,@hnQč, @簀<DqAP&E˷bM:`Rv#VqKR(985x)%X)=8(0"M#q)?R1J1xTt%40  k-txĜ;G+s?2e5逽s xi"/Wp4>/`D4&I5eibš[zR yiM88܄ʼnfWR48܄RyM(8׵܄Ry9KJq" )ʼn'@S-vq"8ʼnc'" ,D(P)ND@%81RP)N$@%8D, .N$8qXheqbs$@޳ -N$(N]|eKPhl"9Peb\ӊl+PPG\jR jR j( #q-T"QPQPRPBfB)D^9"O!!\3CebO\"H)Wft\qG5NF5EnK5eV()[yvTQ8Sl(HeMm]z\?6R,zв)cF^ f1t^ySgNaJKOXM6ke30RZ vbր7r1Ckna:Y xF̚<hBQMGH ڒFɀRQPNҺJ^xn H8Y8F7y v_sd@(rhO!4H%NEMǓiFɀUNC(ء SIkKқ_ DVJm\eoYLU.t27S7SvBvؠrU_avʠn_ɲuG(]2wEZȯk$jiXH2`LS- ?C$E '>9VM|j+tc$?y2w>.qA7p/J7tV>n(4Ѝs~R3te.Xƪ٘&+8 E9U9U9U9e9e9)%=kX#JNƆ-ڻ+P塅DNN#~|rkިTR ov'l7LݷI^tIKZ0{E~zb(,Dc}/ -Wmz ! ^g{`\Y s ̥  L$Gg3{HǾɛ! M.2d "&Mq.d#,mA>f/# x[] ̄ C%Qkxlit)ơlFm*!UXN9pa6s !Q;tf8W~鉝Kӽ0oaǜsؚ;aхo>~ó: ߁l~VZ4nha5az VܠY5iإv>.U\* Zj5B6pCp ~A7qzK4J V{4cǿiEx>=xLٿi6Uz-ͦJ.|(Ļf[e (DO LD●簆F#%7y8e- -r(P-N%`NRa:!M#c7 i^\w m\Rr5}cӲsVs+~Ң(,¢ѦfZ1i=R'Y'x^ٗe=>㈧]e0f: R)/pq<vt#wpa/ϝAXRa4[%-Ƙ=p󃓳^QBOAKx%q8 i4rzPH`mDLG>.\*-IFzAKSjwϝR:-YqI+g6Z`}gct# F\?_4I Znp̤0$Cj!|Z ^iI^%:,m=3B ́8K:ݣI0x>cR_$KVVLUɅ`w:1 >MIJ%3o󳛙v]01&l0dn~^;faӧ|ޠ=B!羫!ZǸ(8|)ۮ/x~Ύ#_ ?,MсKH $ ^,- !\rXF篆HIHB$ w #ȍܘ+TJ=wA[ٯzSpm@:1D#-qi2v ?.NC~TA?ռqØo_p{{iþ y02\fd{1"kw>.MEX%7Zzobt|cL"mQj۳F?SA<p[pN_.jt'No~l&$D@!yȻX^e)9%ItU"t[,`SYzm ceϤm j~X|>x8a^1\,X ٱk6QÁ-eJ_9˦Xԗ)7vCޛ{;bfz/|=#e?^7{sG,d#i8vf9M&'!99xP6S'9cj|V6׉ÁiؔشllOrf.疱=.#l.yCRe۽N܌4sYfEj]f;['G^j8Z"P/g/)[؀d"%;b>oϕ=ͳvyeEwN5ҽ,fdŁ?-5X7U@n2kK(u)Fjuۦ'3qN#&QO6ί4"6ί*ʦ{MZM–ZJfS͛qH8qؒ0Nj`̅F[7mhBt gF-H\lٚq~$Jbq3hgVcM(SF%A*$J%)I%-=nhnK JܠTnK f' -78Oi)amB0S8Gz-nSON)%[ӭp V88$w+rNA$w+¸V8@t+rN9 n@Ni [4ܭpHV8 H$$r Nm1]H 6mg&3Rr@+[ nŖ|@+K ӥpzWbK>HwbCEbIJ8 $ $w%lו(JogG{g]2l2"dt%EJ8k{W:#/氌s2aK8p%Q%v=Dѕp#+;FWy@+@075n |5@0',{f!T9`R6 % ,%,i4UT,,*2!_e4 Cvho{ӠQ;%iM0f48`wq9y@] P).}_E*]T;HߟZgӷ?>}5*d}߿_/崩YlkUO >?_%WK>/|DC_5.P\ .L!,^t9h0\P M/ZP|قrp`K_XΖ~|(=3{pPwq!VN\m._]n=8~!~zpDNuփ#W' ʻݩ /ʻ #ԈsnѾ%b;HV6y}CIPS,^$[ZjU`T.KZwI Ҽ;;%`KB@ĚJ,r4o[;r e&:j9(؁4oUB;x ۔d=AU=rB + 9 k 0ʹ0 I> S@I> + (¤+Pr-L%D+Pr0N%¤+Pr/L%,+POHB'ä+t'Si? 䳆\i/d*'S!Y?{ȷ&SA|p29 'S!E? MVlO+g~L[=4Tx=MKp -[b+l2'[Qdkآ\oߒ[' 9. A?:elO"*Q'W&-(' 'W?8M8 o󄓯cc[~uc\t|7oɭ/eïՌZe/՛Zp3W߶46eZ;e)-'+Myo9./rDʫ ^s5pʫ ;_u5p UWVq5Wa╏H‹.N~U4y%)b4y%)bxyu)b|yu)bxyu)V[_um\g+8h2a(&;LJ1U*CrU%77ՕܜXJn7 (i<‚~rWɍcG zfs^{,g 6T!t^cG?ׅGSz*Nϓ~BuDZ Vy uVoYnyu؛r+\΋{wU+8h7򨡂e1mazBhe|Pp^c+\vҠ*B `*m@.})B}f~?[;~B)qsSlFm|^h|r9\rhRڡKB4=% Zmgf32[a !NBjw'!sxrBjM\/ %!sw$dU$dB7%!s) PK舍bN舍r3h-*@;K(=P,z>X |BRT B =B3z[!ьV@c4GҸQC:F3z[ی5T6G h= fB(+rѱftiF ftpiF ftnF ftPnF Rd)E Rd.E:K"SLN)2ITA9T)H5Q[TC'"Ph5T(FS 5}bS xZS [xJS STC6[TCU@:*U,PeJM# TYRU*dTU&@:1*U!JaJW@+RXus{2tݳ@6-*]7f,P>?+ә8O(L/)UZ;,Jʟv[y$zS*mof Gb4)רPrCc[T{|rSawYG*ߞp =c;ϪsӤrUО}e_3Kl./=U+OBʕ󤳕/~מf+_vcWrfzvrtK^']\M憥cxYܙ^p{oPN9զ::`clΎjԐzm>wPg.]P{=Q{Y}BЇIyɟԮ.c_4ԫ.oʥM'+>r_<|TMV_<5^V݌(j*Ө]w!զ:nR=@i+wɫ|ФrqɯՇ]r']g߿NL9Ƅo>]N/B2fӾ뫜߄ Kus 7T]zi!L(Mܠz3 +/h%T/;6ÀefP_vlef0_vlʹٱ\_vlu̎Pٱ*G/;6C:fFUcvlT:fFU_vlT:fFUά_vlTeFIWبc*wبq1cs^3JSk8Wc=cnX%͗ݝc1i3V cjPᨵFX{#w bv=R1" y2 C<Ӱ:amrAˋCptYEL/L2w }|8GuQکa- Ӱ&i5>{X4<}Ƞ<ژ4yTeRtLT|13<2JbfƐ͔I/ffʎՋc6S%_͔̔aIW3d3e87߇vVF.g6/Eϑ Nv /fg͔hTu<'2͗xʀtʈdԋٙrbeD2yXXLU [N1N-rO.perYN=wPSc*pd W猥=o<&돿o???}_W?;ΧבQ-{:_?~~9oBZWr~_>?˷-hEK9?smo)1e?Q^JgYBySN G˷_><ϝ@\Qܤ%?Meĵ}Q_WǏ:q>}E ƶ#8N"O? &m n7LgeeB s ՘t:çqn7W~o_߯H 3fSfӿgo?+Ijg²'NSÇ?~>~??]_AFmBS^a?^Mn;]_~먝}xpZ3i x Vx32tpu@"59۷4$3 1=Ȉ3_19;/<'5%=575!PӹĿ(%M+F W$v x x x !x3tttLS-N-*Wz x-Q!brKt'N`?'owooF>_dbH$DHDꧯBXJ]Q(/ {OE-;bVO:VԚ QnA寣Q45ʚBYiuPo,PޚBY7]( #|w,>GYw(шޱ㍽041KF>bx/^eEY7}QM_|VNO]7>og0}Vq> i(w0:;΃ƙ#kd|:G>+GW_q5Se2 j@V+@.;T0m s 8(؃2()Pndo'[h7PYCYM[h]M ֞`,b < v`љf`wU$j-_zUxd^UЫ|/. _zgN*R ,leX ӝ"[E@ceܣG$]Ymyր\n d,8eM-2Q&YY$KyddnKdž,^ QO,GvMu˚}Lݗ-5@ ԆggegkhV1)ޚPЬV46F^Ҭ4G)N 4;N]H}"V<^/>Z;i Sg4ҏg'iki7fnZuAix{ N* |aZ=sjM%Zw 'x3t)2,.2-2\\1z\\\~ _ 7 xWҪ

^)ue;VIB}ئ#$2@YqșpW:뫒 .36t'P⿚{`N~3iҳV#s.֔ z2sVBMdᗬaz&_&}6G]zv{01 _'·S @pKO#W>^ FUABìwyNWU<ގ0 ! jT NܖF* z}WH&# Иc 4Ե:@/C78y) GMz.<`٥[ IY .hlŐ[ |oW|_ \ >1 {6t;/65"ap| 1 .TI9ٲ8oUyH mqVp4My9.أBlV[m FhI 4Lg:z.zFOK*>5OQ^w|+&-RNG=pWno\ܼ+ob{|(ʩQ:$礚ib,b@@}.yX9.3Emdݪ`_q=CqnKNU !̐l}6 `_Sm0XQ.0{ ȉ}ގyѵց'|1W Նټѣ; qߔxLg{Cz{q9͢Uj.d͏o_>ܺDAE}SPGf2y>jWlJxbz^麢`unB`6wlm_\Y|fs"2\[uptWAr1(Zj's ( r=γ-g)U#&(JNPvnbk0j {j!DWVeGG _`Wh݈hK9ubm"VIlymx:V5TD7擨nV pgyGbao'I q QϞ :/e#ܽi!#57U7`F˼.DI7FVQy t;N+0>!45 9PAQ[#9fDxZ!;~xw9 (M@Lff>_-TïrZqA?adhCX/pqk4Wi--0"فpLz$C NŌp'tnb~v^Z)/#S1 5+IBLT,-L.ݶhnl2v\jxb:uoGΌ!zNtrC1+lToymhW sm{{uY𱱏ykfҌ-]>S#.,E}4@oB!.;&|^0biCm ]qWJ3h>ܠVrNsЖw|9/JaR".LQ(;6_7y!Ro0?-g+<&*w5b&$cLI| Ӯnsa )`ee5.'gFܘU㲚;\#nZDRF^,XdoD "x9˫jZ<+.Ly׬(Y0m:a+C2lls ZP;ۚ|0,kY!3Kl{ʳ6;wkF`D~O((iSVv,Q,3sU3ՊۅWcZ4zzf7yQaܿᵩp LFQ $&E缎dͪy~Mʏb^SU|܄ɚ]1|Yc{kcyM-մ8B~ l0Q2z~`k]j-{S- yQDR|ƃCq:w{'ؕ:ddO6pь{4$Klkamk%>_apOi#Z5-ꥷ> &mn$0yLNĵ-"q(|>'žqZi=G1jxya9~x[]_(8Yۓړ1=WnpX{~!Vo44iR mA5ZuP+PjFm rkhM╛bNiN;HӬ!Kw/XYjlU;bU5Z5PK: LRfܚ=hM F[ Ƃ_6:FZDkaqm%_x&*xd-HbVQ5q栚me ͙,gt!nCaų1<z Xd{Z{ʹpŎ B;gZo=kUw,kۥP&ɶ.<4.&Ğ2W f-,7b^dxbl/bhgbp;=Pu_)S#Z0PUQ΋m$3b[ۊW d\@-?S>:;?zwx'D9m`I;[71,>,>_kqx,3QCmPϜh$9 #s#\338m6K6 <'!>),Fъ" ˣ4 iQ'΂ڛC͂)Oom3-yd> 6:"~9[&'.Sh=ۺtq6L 5,C;cBM^1`/_ngVi]N.YE<*:/Olᔎv9 hO&WJeU$;FZ;xۥ᠟Dm:[W: $*$%4y2Ù_Ή{杧.Ў鍊 im]>xp;muq:48,t=pϢuy=U|ޫ_mn/ror̼ ~hg)6+ػ/4Yٴ)|s‰S\G⤞x(B(ڕQtKC#wFѮd<QIQ,׌׸Kum5)b8 ͳ"t"ªmF ><=>8<< 2Bm[#ý"o?,b5 KV&4V4ڥx:Zyn۠vm܎vܶ+<^. v۾x[yn۠v@Rn܎vܶ+<^. FSkoo@~!%! #Q+:w]g!֜pEE^oh i8_ѬS=Tոqe .8{_Y/ȝr[M9oiُY6Õxp aKK<_1_g3;(+IkՖI`P1R?a7`ݖ&7h1Mʓ|H%}$ hB`ZUZEC& Jfi4$ n $lbJ1ByyE4&mk)ׂ,}p3Os*~pPeݶzmFrٺk˓p>p@SwØDoN&Q}$gr}$a9+zZ}~~:ig3&TQw~)";;d-{q&UVU(21Iq5OyJm80PO~#Jm:]NWeJv&WŚ =A z3>2brܽBz3'1C=D}~sswww܌SwA:{q0J~t]:R q\ȝNq7ÃC3p!cYWWy8-;Lc豒(zu hn]ձܯ1h\t/գ?Яh<Ĕ~t mЗҏ?)?1Ⰾs 2ttQvi Ȫ~Ip5l4Y6$?K,"TԦ[A:[h}|k9֞ [ۑ'h@dCG|¶CHQD+d aZkA&;~֡Z뎰m.hdsŽ.$C5S {:]%[ h۬/"b&W9Â1ٔWhR;MTd}!/$$&ia`QB}w4?.ڡ/a8/j# ( c,X~WNNs!o vA7asQM͙z\?\SIK}4O8aApk@+ep :.LΫz:DD`H9܂7@`ɇ8>!X.  '~+[TPXi N^WxעdYltfٳ uӮ?rɦ Ҩ1--ɘP jv1Ps ʃ9@z<0w&P KFlѰrh!`} pb|+y]xVb9D4|T ʃZ;ϞnD@LIP[ӕMy]Pd_,dG'[<~d%R+9mܩ k^W|=w$6r]EDߓme:O1EX2D垼V:.yOzqzHL!Z8 {ϟL쨙_׬E^ԋע. wҽ'3?*|7tw ڗN IC8ʫ-QRDL:2i^Luy44fשu4wۛ&9ȼ79sWqf57roPLwż)0Cn袯ߖctsV9cB1mvF3}ױ)jl~݊_;'#{Wj—17 @&j¶NnYޢMqBӟM,Cb\/f'uJVme!S5 {WܯqFX h~L'\TUAoJIE&cy>_ٽ~dh݆8=Ac=|C|Efg5hCK#ɯ 8e߳ }T ˨h%Z-cJM[Ue aja Ė71 (ʁc1ItàqSQ5AT/|s;CL$]y$rh$,,+7*ǒ/4JPԉ+k#s#d9*wV E:45eN"mNM>xȄ#OG_~x2\Z#f_ Jv 5P_Dٶ@&[ZN[¨BP/YTHI*Yz@DYfj?tWCߖ!ޡN{Ξ$LwmL(p!cdX3#lYπNSc>$dWiol3o wVΩr :QEA~ 7:Z]P_#.nFً {"Ī]f)-,y'ScbY^kӓ |D< U #M/WP- ]O]oT!XQOk;Cq7D-O)l+@Q̜{@60!k )I"'m?<.qxelxO9 -T, òx-̣:3-R+ZmLsxO)ѣ<aAԨO&q<4|)۰R"ڦEOiGmeyk հ/߸ۢ)')6/}x=ulw'A> pg_=ySblt{Y]ܱ5hRMrDj7!> c{/:7GZ[1=3:@ށ;+*&Z{d4&Oj_5]+{>wB^\J?ߝ{w%ecSFMwu3p@5V2 m qUkjiUoXG̞v m=pUhp VC{p WWSj~4ǩ ` '15\+)dOf:L@` ھ}v &lyZUbMDMY0~QűCc\xĞXǀlˋm2աXI_Ӛsa8ԙֱ5*@|4O3F?[[]KWi?E}S-CE-B*򟭇 )yR7_~o_2Q-,v(sg.$uWoATܛ⵩,f'UkR-7(|7ͩOОlϜ+=ы.h>׭Z ۣYDPϣn0j7)+O3g񱖅 +RQ/V(tE 9)N6-R%"}jVTm=,@$IkMjH`)q`Z608 mu^ijkA|Ы(PT%8'V7~<=nJpl,/7K0KYTZB93޺. X6*'Ǎ&H:"? X{+3Q$VyY`[v OGֽoj{8!\]Qu2nrGAu 5Q.sL2R@SgpI'xݓxțm8GS86=p\t:~{Ϝ qٞ8ڍ2Qa24I1oZ=t PFD֋O@\Y,AS58tvЏ h=BA+Gc&:]?Xչiѱ įԑ+{=3)i?4U%Ay߷N iI|;k|p@XR NeK@W0AAel=Uc ]Ȥ {5:tk1+"tK2~D,֠X,Ӳ9GЊG,hh#Aj}e$m~J#-o$0ը&[k){6&V>@Aۋټiq|tq8 Eo)Iha:l:r X%H+%VJ"3 2OP"+z٣8{gg!y&=^[!@ڮf{ϟ?K%H[ez&#F+N0tp ld^ gSz*;R*gxGթF@s X:YYeL"W1R+Y_jJK#d z4f Eb;"a$0)z;^e^[C*KȖ"|S37GcovGvBC4㲸rDY52O]L-Q\fV[/q1-eQy%" ^qlHUR 7Z`xXTմ7iMKE[ tK H7i? `T== '2Zm6d[$ρM+S#Z ^k[N_ 6gwSflrlb*-AXT0QVnƱٓ2~XrcMJ'0j\ZM${Ql:IWQE؜T$Nꉇ"T茢])E4a;hWQ4)ۤ Oo懜Bo{TшC /3M6gت_4@4!ppc["M u eԘ_E,SEqBrW"V"Ķ y/pXZb.bf(Ϗ|wd91,ipŵK;`uiA%`:ڮ&w]\4y^*8ȗqľؼv51ڥ֑&)7Ђ +خXJvzz[3񯾉wh`u=ۓv_j6[>fw 2$*f7[+߂m ,-di2.vawv-T5*!j WNhѣA " ԃluдp 04;D(.b @ګo]E}p%xhsjcs*VH+N[g/ B (>P8|Zx bXupܢ%0v$ݎUr⤖%R0\)s6߃AJ bK2h謶Ɋ42:o]Y O E;T\c{MRM+P\zZ5ړRbg9=G(ݡ4-O*]>PO9ߒs9CA*C:+@>cNNqU=(\+ = `~ztoZ 2KLy.:3㱜b>O*8f 3&fì\6qqg_)(?S =vcbeT0˛*k-锕%*VЊD  [ +@6 ɻѻ Cw/G<#$0n2m I0HU.t`5qԪ7^?cʑMݻCq^9i`WT~DV(!RY8*!dޡv7DZ Eq|TiȉX˂p[Ê3>ت^j%.ts$;Cgx&%VUBy$Sө0Eh3.5y~W ߢ*@ pӰog$g}즬mH{nNPqFD/Э6,ѷ,bٟA e&Τ[V2~+yOe3' Wᛯ=DBJM>m:xz:4vO%@~wr.^kSTCUS囲a}UAsm̀K|Ɩ&5yvVaWP( 3wc@6`ҠZ,hcʝ[-D%(:Rs{(Fhf^jhF8N%O EIՎPUQa#Rޅ#g~Lg U޸r??_|vFkѼ^^]MSG-#-'4B)z,Uzĩ^mGЬS(i9Oȼj͋F]$UM/UW)f8nu|ܓ5Wa\dH7j ,(ʈtar;lj֘*T+G%:n*8d VSzݏ8yˍ!mG{+kƠ( ݧ {OUQ@./[i8yHu.t6esFi: AY}S恗\Ys*'| Gs!hX]zڒUUsK y/{y SZQi|FG=.nKbC<5I( oxtZ_0)t|$jWbrر6:+F7ݴλA>ˢ*jʌڇ6{߈/ ?O>OӪ8W8g;@l&}9rueK~I'yҢdTEʃ-K .)j;D3@E,= 嫼. ~+"%ay;@#x\4'^C̨wZ9 `J#?(iq=&oRGmUSre.?]~mvn%pY*22}EƊƚ~:Nuˋ< ' )^r uPh}JiG7 I!8;؞kW!#?GH jnoX60YP{ȍ8G֟˵3s{Rӝ۵;v6(3ھr( ;WJJu%k]1)sqQ-< P%jPL :*On+^rb{Rf"ƨRs!i-Q«^\UG<.@'{;U:-I]:/Mخ?~"۵oƧ%؇ Dmv^ ÿذ eD]L9hX(r C*V_1 .颬{SMF5P-6z_rɑ{ⳉ*u EuijJ`JA^Or_P n.xy'gaj]T8R Dm%D?rRj0H]_H5--vLeOC̖PX@iJHt>3կVdb7H{g Q66u,3{V Qɷ;i0= v~TE21x֠ zJQvk(ySˡJP=k6I'\.*Ʉ|!٫%{]̯0=݉3氁Rrt  .Lrby7FeE=o׻ۭwzoh;nVy* 3Y 6f;;PYc(O 31)˕*Xj9k0}8 Us0rDԗ-^K;T K%@ZSljt&)v|Cz-j*C/zυ܎ q9h8\*,'Ol*EYS2Ίq}ox!%Lv_.3g6B_wwjȴ/0n? B "\D}"]ҦLfY=m7ܔrg݄g&Z!? e״:!?|xDv^tڐ`kH&+X|2)@W+  $̭k.X78*5945^c֧>D>TEnZԑnmCI8R5[)@5&$B&%yd #(qԤI#qSD-V6 E' Y"ƈ,o}(lvQ_>3RExH9X^fȼ%Fp8dp&_$C~uu/LVg$J6wԼsUԗ4K5&* ǣX|rsK{ץǍ XWg^}Ƶ:3 aM|ϋONeipH ys:4QM;~e.ZЅ^Ԑ7=BOTEdFUȸwy"_K3y4F$#ʽfጝ]\CM>/"BT)],C\SUxA?޴Yljj]|ףʹ q}?63?n'Cl|=l[^'^2fBΚnCJ g8Ώ"jS-vȨeR'./pJÇhF}_Sn@FqcKtb2X.'lm)PP1Rpbv8CƉJfQ-:ق#jk&.E sYx)mڊBWԈSl2?.hr*Hd)G.Eew(Fh:&:06j&B?O,Ћ,/g$.whP8i"ZM Bz`ԌmStްqf]kKN=et wd+I`]g r/2uL/e:ނ#[>ox]- Gm/:. jqt+XD4HkbT-ޛ` .;d?^:2ڡeR - u p,mdWZ $j[ lT#J_Kݮc<.Pݓ&5tQRK!~΢cm` 7r[xU[~٬ WsW]+}M2n`F.)Y K& ʐB;,\xOAsʢ.lbE܈ZY!W}r=XpUH 1!pV7q@QuAjO?[ 9?j{6xY7EaC{Q+ ؇TϚwd-?銭|_]TIKǶP ęŪf5qcs ) <4I˪wS_'ȗ+H@!YT$dO]W]g!"p/$mx\#\x[4"1#ԉx$"U:Q(l9iNHP8#xmcuhTݝoE Cq^\Խ@nL\`8DD6\vvY r)Eh֭Cu<{~hhr<}^t'WATlvvwL,H}0͐ L=!݌bPO@樀it=0=!kt 3/v:⒃.Ls/uPUp'\G$҃%izI^Ǧm`$6EL5=R>eKpB籭JR|!3F)iyZZ^/sD@Ƽ@559D=Om1W} HƠjBȍGŸ.'rdKx3`H^/QaV/fFʞy?bd-P'GiS#~2PW̭0t0wWM!RKXW\'3M>T=T{*j3`Jz"Ft~|fԦ.BzU, u1S~80mBT;.\| qTޟlY ?} l_m?\R2+} (WWCqLfw %(Ws@|wrڷ~xC[?azU~M\k BΤ ;UP4ta=K)Ju8sƸ]\`5P#bTOvf*,P }gso7>u.H僣c) r9Ǜ9PRՉ w󿜜9{y KJ)<*uVS~ըɱ2["g& YيjBư܌ AOn\lPnP{(W}A=/ /Mlc./.AIVa.߁KQC>^O75ɪL̙ϥf¥;g\ssD۴ktpAOoRtGvnݪ:g8le(yq]峺 \i=jrRفJCSCM5.;*3V2wf-FJ:XmlYP _}!NV[3m挚 e;!KafvܢLi*Vv;飥Wk)Z籙21d3Ee3XZ6ttds[6*ѨA5=1Z!#2_lmȣrKOTŦoZn1oغE՗&78iifBsI&uyv6[[MJQFd17. YޱQܶ q%ylǵVofws{+C9n -1}cYmo")7g "#Rf%䁯f;Fp>>GV`e4uM*32[%"m{;}u.0_A p_ V Q9 (kg]& U>haXEoZ=r]Q1W@@[bNEQ/<((3t?w;E<> Fk,`37P03j5yP 8m#)&$Q]`kZ'b3]'VE:Sxm/phYhޢ%["\;ruVbqMS#ZtqhX"^"R0*:Fh:/N^Mg3m?f$j**ybJnADr:3gj6мQmB'knvvW `Yܜ9O։Ө)_Nb'NvNz@)MMs R1;eAe7&86pE^:{ (oD0mCNjb:.z9-DeOμ- $ TcnCv%֝- q' Z y=ǬwW<=eݜTg'O>.狽.rT{gO#1Q޲/0"9c鵷Dvg X8Cju#?CLJȰ$[B=f.O ʱHBmДf:$\T>{1IZEu'wEf*QFyd_e[w^Kh.- yH5}̜*H; vȂq\$6~CkaS\NhNDS01~4QpGk" w `L]AVwlxq)!Io{?c@Y+Yꋑ!֮mVV&<&ޚ|k9zU~-l50^!9%PgdCwEJXV'6J%$A3o޳޿%0]h}yӣÁ7v`I7jZyOC'hfx&f/ZĀtM=QsTGTߍ+Aa彖m»&Sݟ\9;HycDm6i$ LOe euϹ)8α3 0,.뜚 U V38ź"R[(aE|{0 imszj~6VP-%0UOׅ/;zcևu+Mn++hE˼(@*v#-Z3< %W^D7 #oPx}!L:oZ o##J$"LЈ0B@9$*9QQCD8g!&9crTlPGTա}"[PU +5 q9MhS=x?P43"t"DWgM!].gnb&FTۮ0tnT_=iKkmjwGQ߉׿p)<fuH/F؟3~**)l/Y*ۼTO%,u Aq9 qsg[5D:x$:^5B_TrsdNV#"8)%3u6Qox; \<#/DR-s0wwپؙYQ'x JhYۤlHQ(*/y))GI Q$I>+O"VtJ15z x a.=I ve>MׄF^s,Ύ`^{[Ye۬S~pj.>²3hD%aGN;D_dI4/;!r; KՒqPB)XE-  O b*YϔJu$uoP=yU^ ~@ !Xm#`Ѐx _C*%kbRļѾ8@7*󗮛M PguHbO ,ԛ| oQEۯLbsoKKӵ͟hi8<L@p5>ꎣc4eUs ) Xvޜzx XZ5^` CS7P,W*:黡y* ЌȮj~/HBt~s'3?,ڰYI[2| lDMS63R Ga|X'z8eQvNjlSۯ#>9[~;l*< RkYZeeFC[|bldIaq[6ݵU;aom|N"_xrsloZY.hBy4jM(i-ݖ9]iw&@| =hњX]i_T8ݍA[cᖷ3h!DW㠲Uªfm։ h.V̀QfB{t!Eߡ`կZ)|(ej&D66KUjJS]Si:oR )5+;7 [^2i"h.Y)h$$ %Vdڅb[@plU6ɛ.H3w]B3 P }B:*?:4vE DJ'd}'EDRٿѦڥ4 (r:1ќUCc-GDUY)*BTJǰ2Ei?6fRC IKNO[aQV¢w/[NÇS9QF?$G֟P>ᤲfeaSӥ&?L̷$1k6ז$ Cj*CaYʤ.c?~p8?Q5N;ˍ8+-ɽ9yhp6"{{FȥK^kd[6'U-ww:;:b# [ו'·Y3?U215t U-".| t-SBuټ-&y/L'#a^+LG=vz mPݳn _Pݸ'Os1@3VN!=4B3(谴&Ojˈ8U Ig#G6nꏆr [-WG.f|SOYd_y4{cNP(f%IFS>n,@!UJahd LNߣ{o>~m;f¡ ZSqPjK:ʊnvokUqK|<[NnZOP3HN z$[pix*/Rg`H5?Xw zdÄ~SuQ1?!:IK{1*8uY]yyh>}&n b+p}6Ks{us' eo%yfd1Z+MmX*Z;hg)+֭4&fRK0m ik{2)&Vj􋐧m)"/XޔnQ X!Vs  UR8ۥ]w^6YRLǕ<ūK-]v98fYJ.ZPWRj<{y_pmi Qfg_mN[abRN[e##a^V>gA 0 ,U6#MDjYth(6EUNy_·PWoڸA\ "B4(̀^i^303QB`vTyxc(3H)> 'ކCǯ'ݧW)C=k3Y7? Q8=z 0}MJ}<Tj5?My WUQL9L=cPq yЪ*6.Vz~7tyٔlEUs.uzZ.z:YoCs~+v?0rj˄B</:GVE|dUU}FVp38D8_Iߵ[,??({ 7Qi"G|Hx{e~wyC6u,𞗱>HKYV׷3k2|@7+,[b3uI8qiWܶ \GXu۠͛jD61gY?]ؑC3zƅ yi\ltZд4vMMԑY?]n/*?ӯUFΚ*[~!&|y1)b8Fi=Yqn`+ K'(V[o@?׻\m.#-Lyp/ zWDy~>pD<sQ LoO#ΜEiRc/ucvL ) q2 D;v9yM6)GSuGȌnj߲Ϸrj%b\EvUL86ud*h{խثޡ&06#&zyh뵡ޡ6أM"5n~5(^^(}Df)`>QZlߺVTuV8l h @ n~NV6 )prܞ9D +\'DhqVΧb^ʬDz/<8Q!qw~_!xi%vԥ[/aկز(~Ah K&M8XKu @'լᅦj҇_7$PsAir4t9dBUc ~"1p?<\,C]ema*MJI uflNz:t0]_[ځ|!;܂D atއb 0YJi~m/|}#q6rN |C@яzQz볪uPB$M9pUR߃3O!rx/XPeڐ}WUݳh\Jnq8;$U6DzP' $NEX܍j&& Tpj3oo۔"A G*gvs Y?0B}**sbf1bȪZ#[NFsHޅُ`O}"s5]ϡJp>a)Gl`G>\/﷡9 ;(硪нUx(Y/՚ u~rqS؂튏˶ sR &bptL9=*_(zظ@۬1i%ɘ.\rX/VUfxcܷL `)k,M$̘/8? \LU*^i,Ygd*B5]#ˇX~eJZ'rW& #=ȎT87K5{5ӟnT9XiKH+m:!$3" !I f_7kPew n|ب-Y,^hV0jR,6Wyqzqm MЬnch+X[P!*0/cΥ̨G6kb;n(1L2ixrsĻٝEFD]gt ¬: Re-%o~?HpߟpC!\ձx{(D Dn2OA:6.-؈ASHk LB% y1~mny1j/F$k.IS#V~ŻjCGyo/Κ y[,/=`iOܸ"j,>^aLE|DK "yfPbQoBv%:|KW7Ŭ(yl=UqM]^cy>y0ou=6SlYd)R-Y ,tza=(~Vy,>~ l1Li #f`G?~a&{SMx2$S5 ԺHs2ar~'J!ky=_+٬spa+qcv.'I^VqSd!'^0-5t\塄.َJ+R)0n. @K8ұ 9R V秀Z_/y_'Cf[8 4W8Iky5= ;YV =?SVCc5T6PSzlS ])ӐDλ-}a#uF߀V 1I4=(z\+|(P Wow+A|cxSɫ#V_m超}h!oY)8~RWR1N٘c-J2ҷ=lO>G^*Y&Ap:!WFRwNaz낔C]{K*U  m9/gUElL5=f 1Sq*FA55ahvdGr)cxj9h,R ÄUp 7md5ލV:?,'Ÿ.2z]p1%wwt]ߛ`nt%IhzZg5ۇgl^2{QdcvZ*&6EҪ|dPV-D CYipm(GAcoC=[~3 *M-&`bhe ѫ3fd1jИSc ߷B,׆KWY>v_>@α}O)9/B($]_1ɲ0R#{<Ɣ-1דcjQmPWF%[X6֩Zu%hEU1+iP.Bl{Ot6?υ$\Q)x,.=Al~}8m[` C&XjkBQHJoxR lH:fΨ9Y$`mR;*,Xu`<=u 'Yd,(k-\wjgE:@ף4. F`cux}/H/<hNu!)ظ2WVʎ澪(6v7`AVe5}:~ vʅDemn}~$j&7hupc7ZE"d%yt^5:\{d<_Hi4(7ibnDstGԴm/mƂЎ\F\&LPe )8(9Y|tҶ@~E*dkM ֜M-GOGlݴfeqVizveT8Sxlq: #J5R8AjS&4.ʪ>S!پ)wC&8IRlYabE>dȋYTIDo YQʓqSg!]Fct&}1X/? {}꽦^0rU8jdBczUy_Lgڢf?78$|UyO^gW1y -gaCJ 2$ 9&U$h꣣Op[-lE h<`v2Ŧ LX)C2a/sRgS]ww<5p>e+=O򪽞6Q8'BgqtPE\ B 6#*6d^A? `JRC>D/sdktdd5[cPe/ ז,NV֧͡mvqsuE+.CŬ1uEG CK+6xGVДʊ:viz aBbDfх\@h~5| 4S+aI~Wwm`7q̟  7$]<^:8['. Bo7{K_=sX|]o[X {V"zq?"797Gc'֫Aɖf<^q灿8M8uֶXngM3a,g<ɴY]fret瓼\ (j,)&QQ$*jΊ# L4 &+βm(z㱀#Ť.]R@v܍(6zw7)Ĵ^Gi6iqH5W{ |If{PWuyTلV$4mɔ&uYTw`̚W,:r5cl٧Byݝc MJt߲&hw$;;z}=?޲'UEoD=ɽkqBe1"gqgC I*ߥ([m/RԘ*W=7ٝWMx`_{74{^|sxѫ߰"^ #Ҵo*PZcަ=겥è/)1MVr**/VgV.sgEWa/X2psW_uD`]Od~sAuNRUR: .dWtv0]T1iy~Hmj;&vP]ʒ`Z\qw1OUHBܮBgXY}5!5腇ghz883YW/y *eT!C#pǿVd;vjj>U0k15W0IfO yk J}kg{}W>IK0Emhn*.felObNrXS}/1K[/9ɠGup9YɥY(N'̺,H@ f7:6ҹ@5{("H/;%\ YP>^wYrIXtYͯKB]-7[;_c/%:jXi, 6qV0 ( G&zdLܮ uڔ=IVLӵV3 Ŝ%T;-q"`|B=OB$IH^,䱝u/m(FaPq#_]ΚkM7&M4IKRDU`\i&qÐ7*%T܉T~ܚ;Kvڋ=845kD#fE{Lg-\C.Ox4cv.a}Mu{j>v9f2LB^7:8M!*vَ41ߘ~_$ڶ%1f%d,g7 ZzavN$G(o։.*9kKuʪ l\7oy@WQ$!q[DVd"[>W.gubώĴ2D)l6&6LN(^i>ȉ "#4%qhv?(Q$ۅ95n5Yi[JlQ8&Y-7s*%9'Α?K~i`*kJ'΄ś7='*oaYsQU ]V5:3u3Lxnrn3 f]]V>vRkSg<ԇgN{%PRoZ{!h2qD6"i/v(`'U78'GyB)f ffbq,Q(n1Yp7Yj\/_;#9!XfY/}vY5kUu 2y-:cCWkoGNM>4i)A2&ax/ocJ*]Z.0W<Oy`eySʹdoh*Ui$&?qu!b{:˩x}Oʗy]8u3pC~hd/X %9PqǸfBq i_?spǝAc6f0f/~!E̙1 @p*sK@Adؑo3ZLH)g{lyX22.&(Ok=Lv)(=rov3tpy)X4BCRƺ'Jwm~▉a*%avBJ-U`y'?(rmgKT{Xģ zEy%鱗x;&;X^\3~=igjtY`hʫg~;h63r`'rl@5v.Q DqYmVF8m-]5e[CZ1ZXtrCE938T_◄a52PY[f9Ux;I.]_[3Az+1ۭ==2>ɖw~Cʏ) NK{B@L|d~_ S޿=89|HlNof}6i&cTT{'kI1^.f#)$\ I쌊"fST0lqbni@~RN=7hPX{<½ (}m4+ɋ6|휻gRqyYac ek݆,˚ǿ-UQ?#cn{ne{Nˊ'k&vء 4Q 1+Vza3XIQO7E0_A" W2Igi 4?^A <"_ҢD6vgp΄4|dk${ݔ쟾Z͓ml%&R$3(6aa[BgAa}1#R)4"GF? 5Fl|RznQU8b0;)M W㖏 (Ҟ+(ȏ.bfFHI,ŌDuy5DyKXed&>{ɓ{-fϷN޺Jqq\t귝إ{i]4WչЁ*x#UaJ7>3[1]&2 dٯ rQsqk{F{ G D/@}3}KhtNIZ0gB9Os9%.l|YD;wC*Ps&Z(h=j64]T{KgamLM"ssH1`y1q{f.Bi<9Oa 'GHJ=ӆB_g@ms,IgUWNG%[- ^]_PuI-Iq)k, v.ZFQӄ8@~V[uqpKCbYބZC3`juS:5..Bgs7gޜZI 7ݎ2U"nkajBt[g\p-dℜ9wrU~H ?s9ɠzM:huXN><~q}Q 3B9^d¶e };gvԎN,::#" )j=P)M}hG3ȊQW-'kЀKqu@3Qg^B5 x@uÒ)䞘H'Nqt$X.RXoFb}>0cW0C zN?bo K R㼷~,{BDeC\)#|*IJ"rQNƻ2ρ4nl>CYӫF]\@Hf("lDU0vuF(xL(`>|{pI@!׻4HIFh 4Î-$e'E<xК},ݚCDf|]Zg1=x3d@_`s$3pٿ{./PYJ&UڢAZ018ܣ6yoIgkń>眗X%DO'Oټlߢ70E1w#7> F? 1'O,`?jyLZzJ&QbNxHG'/Nx ӘS:.jG6'oy>{6|?X?1b(+2~ 3jMw"ࢁ{,eہLn+oxSQROYi?;d`J9ѿ:\S!DzSs']:\iMSqit|=SƌNĈhnRH3%ŜŸQIXŔҖꧾm(gScp 6y@&K I A\Z Ӗ'_1xN^2xAӲPm36 k:k}\ZW\v_׎<<D϶Lai\z6hU'R BFW5m+KeBTYZÁ"гvc ȫ-gy]+C5u vzR&|ÈYWL+(q}]:/ K&"|x}UVOښ&E5壞5U>e HB+*\gM}qϵ}qaUO'IUW7IUyU=|T^IUO9%V4m>~pZuT4qGkqwEbG2|&b5Zf).z2˵rL Yg,sϛe'G`>Xj=4 M9ɪv1;`<"$/OD%KD g TN78)rSy^W, >D0BAlU8qjSd_?Mg]S%FΡyP;."LJJKKMPØ FD 7LHs)![/Y K{.yxD˲ZN UUZA?jbV.~6CԲoBe~1ez#&ö1Y_ad02'/vPͤ4^-*TB6zOKƋcಛCK_sw_ 0o '$2^y> UVcAJT~˘ 1] \pNc,!hp9^\Ml6˫'JTP1%k 烠(BqlZy5$h(?D5H9:T=͡k-Ő+9X!:S-7#0q mXhkyz1Vq] Q.R$o]WNVzJ t 'd:%ShPms(:7¡fy$GfF/Z=6i@ztIQ/t=K"2!a~b>:M>#l%%rFHL䪨ְԢz&zc Y!EG2J)H:c`ȽbTj*~]l(w,Bf]iA-"xsҧ ٞlc wl70AF3 )EQ=Mrr:'QM=z K`'V߸-oA.g^¢qS^gYa㱶upRJ #t(N==">[ZyӾ !eκ l=c3{z􅍉RFoL;#%?Y?$_uI#Z&>.>})_݄|V E4SDWǙԆ,1hgbUmղȖ:v0w.z"Nu6Ù2[vkyd q9ΩM>\;TX #irFn͡I=z#VZ9rԀJ>OӐr9@BeP{BϤ ;@ȿ#?/W.~\kZΣCa]~,A~hCsZm! ~=NdۢaX,YǽSl 1oE׾<>#C+aI鄲Qk_puOVď` H EqY4U(IE;,&}U$X.ͺl{Jrc`$Z&&MVptq48en )Yk}ŋLʋG|"N!@ eP7ypo晃0mЅRkfpcGiW*Dݘ  `>nh[krgHYH0:P*4@Adj[* g7_xq@ZnGk]Ԥv,CSic Ҳ/Ć GF&5^ev] Q˹^/w!7\QH o!$qjQAh99IU0>UʌM$6tj*.h 0{OSPeP4@0rٸgZX%˷o%l-15>UnG,x/FbNniZ4~9>[WyR&J62F$nO1e HmXJk+޶k]E?/ h*0w[ݳX~iw0OV8ϓ:] `A^Y\w@MTar]x::6h2R 5, C0m@gXKaQgOX31Pk%%v^] Hn;G1ίyfd+(rTe~x[JꑁhLci?BPs/AMآ!-+:ݼ4V6M0,f> mF|ɤsjNc^c ^0U_dMކd.+\M$9K %Iv &e%ӜP5lp)܉ꃌ:-ZB  ޿ȫuH^; Ana-Qқ_7NY⺜&<[1uU CؚOdQcRF^rؤ1 xXN"GF/Y@TFb(i2Up.Bs-jeZb$u?G;nc"5_y5A_\H›Iq:! ;IŬD ;)WPD]G(͋4CsZqUO#ʴMLU =>P6A^ РJFQhBQpWaep0Ucz=(4lmmvЗϻtUѣ^>Ȓleem8)gIzxڶHtu=[[{[x҉z8\.u}x2X!XiCVFAk s4lu:#V"H@T$; 4 dBjh+tϐmu-()A% gܛ>qjvAT&awB.t5^s%R>MK_=`ՅlK2/Ёoޔ՝-:]T÷Gg?3Ío*1(!6Zt;sbtT"A]oJ"R% TZA!vpcH8^Z>ɤ KN[X7ݙd4~h@bd,kQ7ݶCbaهK]9Q7[&#]IfV>:ru_ënUt qݱQ"|0Y̤cԺwGvF 0qnll{]ƣҚNT w!}o\**,%k 3; { 5vdS6.ؚԣlY645F[Z~kњ3\Vv|j=8r>N{.r]Np* oAT-x$xDWjI[ YHdFl_(#\\D,!YvS?nծ#o3 MtNu-/cE!4[B} Jŏe3ԃz+\ lөz9Keյ:o#j>NM5sU5M ݧŶ5?Z| >@{ iq9ql8(w!Cu9`7`_'\4j#.3}ƶFQޤU9c]N)2uVk̄"x oCPJ^Q(HģSG>c4H^){^LBm@G ᶱ*xnnƱ|:R=<[O-uU!- lf>6ji&zLN͵>fgO{Bx a~U;yQ*' kGК?ioRUXWMi @Ћgb_K#o"X c wb@^Ī[κ P0w*B+w8d}ϱROd IrL_y>ub- _דX>^Ay%'ם~=e{USf#D1@:` xp;K&uEz Uqf[SSi>W2>HpZu fs4cY(Vt{! .^6h0)6bUI"(2D$:k ղ׹ 4M̶nM3f#02~~9 g[5-.Gp]Y PzWZ.&KުU fTbj;ʈcA$+6,۹G S[_46NV@0rYTp^@mP][^yS nkDzZC^ "ȹ?LxS:˱q{~f4WrIhvZ8A_7\ȸ4Y9>ShNZgjJ^E_+i4՝x5|@KS#Vd1}z%͜PT%HvZN:EPLN{A{LWN:>1#Rӳw"$jyGfMcW<0@MB{@LF0*!% tW!n)vЙ:P'PrAGA-fH ,Ӧ`Z^ʹY) * dIGUjڋ:-> "p>rdb[`gC{ص e}\HSDs*^UdMD::pX+=J_:7=iHf+J/IG~^:p a%6 .|BvwYYT40G09 7Qs;qsw`A|&-qy|os{Q+e񢘏wB1NVtu. ywǬXu d- P3!1] Ҥ`z j94%, sp ˳ ߾dcRBCЖ[ 1 7VP# n{q i,7Vt4Օ( -IbQXEᰖMS֏6a:;uu\bk5ѧe凌#a"y)6O2IXD<.+y!!l`Ԧخ-96[_3!d !G+ox2 9GnqM{1bG$Q:?aA+mDa{(WMX5tX0K_[čE)A~)܋$57} ߍj/)Dއ[+dN-*#*e&h$J =,r.r N|k1J-$띶\ӮhBYV{( j?wp"ty*\"F. ܬ\`W]DH\_u)å5uȈD{Qї]_ƭ2U^߿=9,`󝮃fݺ崺QF?qPʿ4J11M(oͺYuEPt 1_EWg`kr:J$|̠`hSj1j* ~0%(0@Ip$ Ax/hM{3GFB0u>uuOCqпyĤ vlB_hƉrd]Ș@_@Rᳳ鳤%pe@]c7ؠRY;Epu=+o"UO$D'MZ/]2v5t Qz|<~ J@R|ټ[zÂKS"ZHt"[KHwBQCFP(Xv#=Xq`@*X} q*:NFNI`_ ΄~d:&:^ޓ&vcQqބJ^o6ܑR#qROLٮ?H]ꪨ57AM12,QF,6 FǏoԖnc/u_FB][3yۘu;/g-MQuV2gċٯ2gfJtֻ'mu Ix/@?=.yM:o_޽b~t9>LESToy~Z M. $ tV?t-X^WEsZrJqfwNGb4ԫi`EH'=Pf"I#[ov׹F: V!1I~t  0q7ԩ&olo~us73wɹ+Otgν<ʫfBͫFY pƂ@|-~(i?.p1xX) 7̵U^>nHhv>p)g7JvX 1ɣek}ZE@zpOL[x+iU;!hyZ|z8zE%i!x$ G?j 2m!֪'}Td0F ٮ+E.3NNv|vǏWSm!S /QJd Nޟ;|cf10:i1wrFH:{pqF"3S@y=*"BӁ1y]rlQ=ڊ6~b|@}g9k \U!mV=tΰc kO>%cڧ*s_(˻CaÎsz%.Iq[̗o qX&[PE#8*mkQo` -fe%+qY9=% t4ooyqק*^=dПFal[I_֘rgXpDnX}Re=zE]L+iZX jnZ mKL V@ǿ{UNƈ&FUs瓼P fUSuf &p.- e)q?!fCgGq~GlP(p8 dM6 Ֆ7ͤVEaoam>V[) |6VÝWtEܰWދm?y E oY =U1FWK yc,| ̌ȁ]FttB9 (@5-jv1֬SʠURUuG>WP ;'\5xv(?Sg؅7\zQs+ΗA.z3ܛÔ="x܉'-:Զ0&'cO FNIĕYq(g9@蕹B_YYtI]e:DDA4@Ϙh6E3($~>q(;]uoBDӻ;ؓ:DwO} Qh;tqc1 oE^W- MzWXag/u57Xe ;v Vy0ou=ᱚ,C>n_̩L̤.LnI eςU2C!xrOHTSD/՜`R$ҖU×iCɲC)t@. Iv8_zZQsyqq n~fҫ^{b;/!t&~,#Ba͎WF?Y_r~lT}+ I=F@%=/Xp08 N t|lf|wF$ƾ6Y|ʵGxYw/^ )?~u'F+٩b^ĂƏvJ5@:-1#[ -@1bc' 4 ͌sJ %4r6#L2{J%y8UXF_+{JdS57.hI>8 ϰ{J^:Ck_se@5 QrzTMTUomu)nM)'uu8r(kβ^>4:]gztL٧Tk*Xtk{I\.%TCԥ]U@WvQsM q=n ^rA >h.u=%!yKvя@" {""E#*f{'t6WxoC=`wrYw[-]uv:u"=={-XGUAf(-V!HycG EK([9t$z磠$ԇ?vƖiFyv/iAzo,S 4)hĩޓ 7_p/l8lvV3_SRM)s`DW bm׈]b/BܶN܋;ѝjz%`C*Gnz 'P#5TB`!LAAmuq6޹aj/_CA9Tta]Pܟvx qY#`!@%்k'ik:`hA'5N M}4-jѩ-]bQ;خ-S 4WW#yŠY+;W+c@[NPwZR}IgrI7(TN&E%CD uK\RAGI,x "Ϳ/}:2$*F]Q CtD`cU`;0< 1`Kf1Ғ 4'D|B%OKj ԉS9C3 m] \4^v>j&v;(t:nmܮuw.]"}kAŸ-(Υm[ԛ[&l׻mev-5ĥ ׶1ȑ8pgƭmÈrwm 3-+ZTw~TAMRa+AI|^LLC} R񾛛#r1}k}}v/uw!U*|[@kJWEa꯸+I"SERZS)Rj F!m ̞V5g؝ [}\HpVo $_;:KFg1n ,V@5czγl [ nQ+nٔJ&<=QQvͻ sB7/W}G>~O0AX}ǀ9o9L#|ާqȾ {qY}0iGMgyƾX>ۄ|hFg:moَ7gFo2BhFWO{^qW+;ϸ)SUTP4FnJh (@'$th'PΧO=*&A3/w۹#M=35vހjq퇯.ϩ,p5`D*~'ZJӦF^Mo .A x3 ATt+{-kSjU/mt!%orqcksUH P^{[+ 4gծF~vf=H0e}S1twKRi. #>t=?fJTv@ft{ cw)r=MSK!E-yB։OR61V[)xSRA% H٪Ĕ$-Sp:++b,+65p̲|,UygAsI25Lи)?a2%rid<jۑFqz[D )˞!Ȧtڰo&&wNa1hvwUGACǃdCbçܴ_ڥ<4kĮ<|ViCGȂ;/P靨{lRޛ%ЩxI3Q@О3jh+b(o"2tozrkIpk9سs Sdk&-ly_(?+aWÚ9ߗf"з; )Y#xHf1Da1&"= 1gJq""K`AɁqZule( SïfiŜ5&2>:f-tXY<~SmnxIIUE'+0W0W;p9:]gn`K Xmm+΋+'jˊj wj!z@-oxgXt+ye ۞/\F8-C]ε۰)඼lA G`$.ͩ ׂ*[uiB[ 2`6ⷝ`km0uHK$A3'zysWl[g˻ vCh$P K7޿;Sn$YpbvM)nKv)Zs\m(sMC%%rpBUmK-t~ w:e@m'%hiYN" 0=k$hA)Wۅ]k3izl33 s3*|]&ҫ /|YJ1.ge"Z&ᦢF˦8 X9s'K}-ΨNXs `aKNPN}(scN0N|y"Ķh豲%MnK@`~уL8w4^j?)"Yr t(búq}Tu1Ck P~02aKH6@pW FiV"V1N:b~5 ϐV~y2Lav=DYMsA3/LZ} *7o-kQEa}Źyl01Jdzޖ<4t8ڇ#.ʃ-SEv$Jv8 dOLj\?{oǡc:VŨ E du5¢bZMn׶'dF>v œWE5CKl=\Ά- @4W!:5 ؕM *d(tʹ[V6SAA326| xcEo܎Xz O}"ͧ'(-M#"KX&(&1&@PA42 ELy &LN%!d+`~^g}</1 `kUQmIw8iCQRx 6)"741Svvـ"{&/:˸cMdݮ@i[~60d6AP4A[Ȥyp| F@JϧZ%nN7`Aѡ90HcΤNِ P1r-vZ1#@ ApP.c+zp&̜EfUy9 |<\cp%~g&}kB:A!-- i8Зy9=d'XX8 TX"@(Hz2lgNa3b1lz4 k~ÇZ- b%UkwˮG693Lh$״^ `1^RZí?9ao.ռ)p)QcŖhGO HSdC$@x:O5M9J̤3!ʽɼ-x?O!i)K+^)52:nJ]2yڰa 5D@dq#h$x]fB^gCx-06I1+ZʇnXc!|,'dw6u:?/dZoy.!zy.A?OӚa J*%ߡgio$h i MujggWm, DӵKqTEshk6&#nL0;N!{w~ \3Aki (!+;2Xilܶm;WӦ؛A-ռ9X5S7AkСmA8PT:dePtZ;}Ux*UH\ןo@*~ ^Ub^(\!H<̞? N:iUNejHmNQhg4 K@]4yUB) Sm{US[^ܓ)2|{O`qP 0f.}6 Mhf[&$干;}nKvۤ13m';~tn=*+-Gِm(-f>gR?ӈǶk؉֜Fv $d?S;"d*?dg 18m1ZT{_,w, i&#N+=Ij\6P˖PО մ0zΙ_J-?jrEW©+|Y=EE^ yu)) tRE/ՀxZer"x RA܇Ḿ7Xn>QsVI*aVDy QqMR 1ZJƪ(M7FISyGmSL݌Ii~5Ky=ߒ:?65_ r]t|K[xn@~ .(/BR/I)RvB!\E>Y`BW?dp G<`PDlA߿vJ)ɤPA&hGM)JeNi]}\E1 T^<9LШ$耮;,MdA} 7EdNxcj*>ٖ!^;F8(z0~dS8\È,b;^oiIrr@l7vpLTWE#hM'B}& >wG!mr(m;A00zFS nʥOSj;]k>j\F g k|=VGa],o;{zi$r+?`~ D;" >/-'"VLX7fO3*XJ/u38&h5K,;2ܼo8|#@x,@X6~] YqѦ:]z7e\ƫ;@3 Aݠlb: zpfxeSռn!ab}֏LKKJ3/ݝEF$Ke ;+. $2l" Lje PiJg=b. n`\h4E#DN&̘aڤ00M @R6 (`n/1YFlr3sd5&=|g Be̳Ĉ8KbD7cYEE+ԋzDz#ȈkLJfQ{LI*<;.&mPL:)I/ژqXY¬c}lEŁ#Mg4Zkն:e ɚ)' ;&;w)~D#ړٟnXqx)N2Yuӊ6 T3;: J쎳;+GFp ^9EdϬ]e,ņE;K1Ԭ4ٙ6*#S-h{@"9T5i3Yѵ06 1Go6}9>l2sUyp3[jlͳ/.&id(Da2Wnfn3j{n0&srL *7a畛T66&g$mT1p's{=V8c9NxNQz(# R;q8HghNV3&ԋ][N'9LtO1Ϊ#ѻ̥wXo#z ǺRq Gp)lKyj6"^|/:@t廽ٷvGJVFy[vwI57_G_߁#Y&D߳.\,J9m~yͯBΩ$=Z[^,gn{· /,YE5/,~@YtO! !Vx,r%.jL ^f{ P/6arqSF2`; }.cHEI*]D`r ǥ)?00,HW5SRLt8Yӫ즸)eRo@ǎX/墚T0V;2 UVa6X:޿N9Di)ͅTh@&h!Z):m%S *6@( tjRLt+~ȤC":-~@ȼ(v,a?A_<)k&EJHw)CR,Y.II%1cMaaE ^c3 0PGniCB9] ,~">OT2ZaU'zCf^"&CU;I11'Bֺιʠ;ȥĀΧDkk~"+5__J\찪 FݤBjE-nךK) ukDž5j;n4&mp"F=r;5. Hg#Ʈp;KhC\Āgoju]7ϑrE!=F b:hc4dztǽԖ"ૉRcCia%$n L^= q?眆_R.ŧH)5(yS Ԡ~ j )DmfG(1GM)nr*ķQǰTF+0 ^vQ `kʧ#d4˫Bj?Ouo[wpN+*/wB'6{-:t wtЯ.$.]ͰW!Y6`6 n}|Nɵ(݊9xnvɆP@= MNs4Fyx0rI:"YE6eVѯŏb:;z_( QŖ8^Nyz[u:&fT"ٳPE>{jHf9G%(f{ҋ*cQc5vqNFz7Q}m*ЬzLb_5*:5WDcфeqS@)h k=4pnI߆T$G9C"STڗc~8oB6zȚ%%K"*8}  "t~Zj9(tr2ORnҰг%*`™֌d'Rr2|i fk6׋% 6݌q5Tf,.!Oj^ /0d$iĐ8i$ -*ϤH]D4zbZMl~St1&?h^"zYR޶u RD\BJH~DH^"Aoj{=TGZKKJ'eګژ$RC#鑰5/|բ4(=?C~k!x4<{ih빷3A:ȾbG?G1 FH>P?]f e21[s r|* z ׿WLBvGУ]hv!'X)I tn`HY) O \۳}3p} \U!Z8_k!h45.Kb,[aTwtU1,Ʒޒ$`m5SKLUt~ҍ[R `K9-'+.j96^EE,>Q6wk|>Cy9>ra6,XowdEIww^h9cXY"h,IUfeUcx}0߳γ;h HȯKX/Gl߹>*M\ E׌C\~IƒL4MRI!7il Qo+ԟ>g,ºc.oW ENcL׈!a˒&eh 曍6W@]^鉾ԅzF،6Y{uO>Rغq hvߥ~wjoYK,{+O=48>Td:!e^'=- zX[YAsIX ѲDŽWĝR{\sa9mo It*NI?϶& Ɑ?F ev6f<eݬך[3jTִؔ/b冝8ނ{j^%S}b2YPy keW۝rnJuxI,տ>q>yOEv Jbڒ;BpM!› Ї69jE>9+^ @e_i& 2oT ).ҹG jeفYj+!ۿ>e@zN\M0o=ʋ $ͺh e.N% TS'hzAXj'|zG᥷:#XVªR~`;#! i}&*|0m@MqM5-p}N l1_EUmsO=LA2N{"FGHh/b,KmU &"׹;·WEGs`9JG4leH+VN"PXOM3PR3[\; :x߀ ^ѳ6<;1gj5uV ǸQ~#̭rRg&DԞwW*B'BZl)"V;v۬ @(CR,;ͥB޷-FH 63@9)kYqZ;^sOIH'蓩90;ָ O-77492VvMd1;n_ҹ_ J!UTAm[q.Iþ&X*?LBu$"LrV-VOsl:T A> 锼7'`ڬb!})l'fa<@QOV$vYx=a (:I)5j 1,jrSץΒygӎM C{9S#.^RXNAA]/)ENbJ<-0Q KgQ[ h~J6*.Z1zOPߎ%KkY x;VuY#-Zd},Yq"k˹AApiAo#|\NQeXYaouzhbbE4:.<>gP(aB7véng A ^;bj7:TLmN1 1PܖLaic2Lv{HGz-_7d-3|Gdh$Ťx̼⶘ )PJ'ڶ85rEmH]әQJT֑L 7afHVu C PۂL[Ǟc!B~+tXBu@fP ,֋M憶> z?#Ex2ctmLk=ު~UP8ʞf*/nc,i; UEű=b^ʹhH/ef.锛/SB`ìjRr<8% =@e!x9=Xm9v`|E@Y01ώ*esE[lh?ars @ `WxXKK$5hRlKJUQ&~*__ᵨƵx!;m>'3-my/,F0rO^ BF䢋(BDꢪ0H39|KRYh 0E1-STr,nB7`j?ٲ~ ݎh(jCO~U͙uX\ \IS+U03nY4?h>B%~,e11$T;}<`=5,hwܩMmϪ(MUl.`pY_6=i ꦬNj)G;A Bs30n0;WZTb$}ZVФtrHDݭuccjiJ Z JV(gߏKa78AUŧrTITۤcUVSo +Aܽed+_V%28ģkͪѢ W~bG^éhE]Vwp3]FHV}bvL}4wً8)3_<> IڦoW:`74shgo5ķ3mbKfj @tDȇd-q("k&n03dά"KαЃz535cC_yD$T P@BsG+jv2k=)_"F [롓D _glrf9P~'E{( O>>ptr_{gG|2Zj%'INV\ENB1/IJWQP6*8=uj9i ʓ?J}@[&o=}㟮Dp?Ni^հMb֏J^I5$Ye4Kj eY4Tgm \GpT:79׆`χvABҝjvmú(rB #bTP_])&VgU!+%[R` Zp!7?+x,Gg!zo/n^p.Gթ)1nd_աKyS8[<(y9p;_c˭{"+\ac Eo,wEĻr+͑d1*>LϤ8@d ar-&ȖcW)+ jW+5RoTHɭC@69zRt"YRkf?UНXZyk]b\J>BYɈ )Bx$~ Jh'̹{X'r)ES|] w3\.h@}!L39'PbmD$^H["_dzW4ϰv E.0ƹQvkT33Z@zarX~99:^=#: _xC AK*x3H(}gُ{o?D-T:]= *譼4qQTwOp1eJNfZdg2Os6 L)-ZŤ(wFoԀ)Tmйhv1%! |D$ܑq.'yUw]}>HկOv%d&CI[9)k*FI @a[Zc,r2 ӕ_I#oc \=h]9665`!H'͏.O30E=FyKd松 \=[!}>zp78MYߕ fK{uHz_J3/΢}~ vr)M1cdAK%]|7L9hޣ۴r2KZSMKuxUk=Wחy1˫f2o~Y^뚼yëuýO|Z c<ܮ,FGmz+C' TG?n W!i0QQIJ %C`:P˒,ȰgF>s@ż(Msǟ$I[4ͭ`f gm]"N#ISpQhc'd$}#R3kk;YCm![k@t ׁܲNI{o @ӻ{DbPL 8iw -)JM*ukҎ$&DuuE:F p`,!ԵȄ Y  ,g{Kb8VӃ3: (ց)ߵROϥ m$*v}U.nl8{\tX(iUJjA2N7eyBlN^#b1'RvNThC)?kx Y98[_oPFc\lr1d9fYTE|WܔXX2-DM@4IB;aiJݷ 8-` R@08ݭ'CG0\&Z|,t~ĘS<% /ZeZa./dCn[twIb^sՐg$uB4h!XT^(YUxpW@h^|A"BC(zsQ nF ƥ>+ vUN SB "=Ct*mib^uTIG/it8}?:=Nz:5ГdK.䭱:R^Q} rVy`D&{@I6}D pZOb)+Z(SRD 3s+kqE]l+u°IQ`R.lGg\uXsLyWk z:xG,]u=ˇe̱>@ _#܆}n4~| .RPg;yͽM<b]f.>r6HZ:h!tpjeTNǷ}gS1qsli~_2MVl(p]{{)f$Lv*?땘+5Sߤ^][SՎ}A>6dZ  Vdbe 0Bc e@3V^3 FA,Y1GgrZ?-+a|;^Q{?fYF Y-wpPLu6<Ď eCs^ߣtBbG%bWTȕ||5-Hḫm9{TXhق2%K n'"FJD",Fwҟb}mJBl47(<ؖ \v2xyеA FtQ@OQ\{VC@ UheVa#0M"w΢miG NL9 S-buCR0SlKj-+~7TCRD_bb8/ ]oTL[9[|C}V25+D/l'\ĒRͷ,تvd2* ̭K;fiI+qՠQG- kٰFe;$' NvC{܄2xנhe047brSSh" 5L/6Le&rKhr`¾jR]̶>59܋"e^1<-:sɅqJRKRUʪ>5 Z׌˄ᤰu 6\Su3,$Sɛ]©|0,a?irVK~^q\!6 .N~*a[۹2NN8蜆Nj5cJ̚мL&ˢyy7l~⧳b8΃*a:]6]oMSf|سv p˖pPRe4rW C̰81jcT]YҬ[C|ym~le8lSHeT0j[ԋh!yCKŬe3ZXc„+W*7UQƜnѻN2p9L{NrI#DPJaz<ߙ,2]V3iPDv \>=Ϧ@ɬG8'{oC%}l_nkd~-"Gx!OZ[SUo:xw҅l%J[X oգ*FjhW?/w+ vM 7 쮥;~1NP/S䁮wVj(qM{oKN{9Gr%_qb#:?gӂ+Ӈ!ƖDub35.7[S#A l)J~2& &YTzFtr8̌aP,խ-SātSv4D*kt&A*}$t4atGmL^PU4!K(^+*RAGJOC?/y{+yzs Xn4)Zzkcg=pl[=MZ?dZ)݈$Z.pj8kk ?}ؓMWr4ܝ6Z89rBK̫o;?utN2;<նnv0 GaRk|tALGĵv۶Syr1)@*r@mM clЈfEZq[mӵAX3s@7Up""e>&ݪ&HKi«Ki%.r,ҲWbMkG~@T#vܿc[.zzj9-*aJha)+u^]9v{T۰}gGtӅP,y֮:  IT7>^#̾(c Q$1KIGMrV~F+OǧL0:aS;w; +NKtVhתz8c81˧Wϧ !Oe)=r{0Q% NTT,!#?ÊҖm6qWEjJI](cDd[cšA3ٴ5 0;{L<<) @dTd;hCrmu$kAlpƞ]Ճ%wD咅fT, X.$' D 1 Ƌsj,#=- ;xA&5^GfVNi'r7;F5x#h}F I2Mi߀&ؚpI{v *(ړײxkPw,r:t.?zh:iܜCwмEu)" gdml~Ef62i)~#Fg& G 7C|*f{fE6qV\}NmxǙsHzeuyYd15'm{&hEr΄NRO&YkdSキɡ:|6MU\isn%8S.#M(r(u>|O.E W;O7Hٻ;;wBZӇ Uq:/b pߝyQ#0)5<9ճ%[o ӝ,k\ M}r,B8K94[e v4 qt[x"+ˈu^Y~uom#n }'fUfjx-kIt\+GC!M é u~u\+>Eq!a$!/Gf0tlp)6Oz5yMNぴ;U!/ "dg"h`* #KPbR ޚRFe&V zxuXڨ}袯>/Kw{)/qHr6/_8rL0$Dz" ݦQ-K|1> PM]>]\ٽ̢6/>,-9rLn0(R6ȸS3>T&Ԍ0Մ 0u 0兗R/(I- op#9A8h4C:D zÕK1D-a;~x&-p} BC@6ɝn}3ԇK@xmxf,[mIfpĶ!2cLh/hF?}1#ڢ2@ w4mSInSP#oamʩ!%*=Ṯ&݊;XIj; (6kxbM1+]d/Uj R)Tѕhm~$8~Slm['&8P/.ΛE4WOiy, ʪ ]-`E:O@p{ras f~ ┚CDA򘧔âHvTY6N; waD䁳bZA59TQA} "1Daڀ*t4ЃmIs! ?4hH1D9k[bDp%XDlG\-fF=3ݯ_]%O IDa?o?]v͟*+wp XXftMi‡UQ Tvگ,Kg!saq?7/,J|_\f8a=&9|)ſJpw<.~wD8s@-޹nE;![y~{8tQzG =d:\嗧L>L )R5aX^rFroy3Pk}]7y|dzå(*[z':]vNjR64cu:"ᄐ(6FmPƿX)w|pE~EeT*︔)|AI3NsJWN0\Nuꪁ*#QɄO=c*#sK%XUi-Goo^锃=لDQ ᫋&6C=ĒEU@tdŹ[?g JcBrXq~V 0[ N 5irmA[]]R՚JlSܢ>vDt꯫SdNR9s3w W{4Nۧ~1ns+=Ϯبr[|p蟃?qq~8n汮 ({=OR"BRB5*,"\oj JTE-]+V^`|oFvU ba\9iF:sJrZ$yTY{@Ⱦ+U[Fh"+dm~d$|:[@c5Rd HJ#h(.U&AoUMf5U-7PZHՏDfy*QNEm9koͰh |ffeDC=WTTOj aE[=cSaP`'"mjqɕ/:tzj',NָkDtB< Z5jsyNj{G@ף'Uѭ4~NB0_ =Dl=]oDSLxTD. ۷,4"b;eKԕm<[t7[6itHe%s$ Ҋ˝ٌj)u rAzYKG| j+f чb72a r:I[<; ihWkiBc!mUiUŵ!u91t5Rxԏ`ơ _BvŐ +{6t%uhc-Tʲ6ڠ}cgO#ѵi U~inf>-gS'a\ CD\s(껡^ L،iY =YY{, `=7 F&G+pT =N{qtz89Gȵxi(?7?W WPnM88};ġ!*OـrUznfV9ϧ.zH5]U 8ޑ*(q)*ұLnƮĪRHh?;KioXTЧ8]]5lmnԓ{暮6O>'* Yk߶-9XZA]){?9e_bUl{o<1 [zZ먂k #[#]!f }ۛq$gڷփ5H'1<=2: Rm;3K=>9k^ޖj15s{=3N69V0~jCmSYأ['7wgFowe'X\=l*pv݃*[C ƼƦq}O :[ n#tDDk2l_dES!%*^hӶO;lA <)uP?r>XALez4$zihtBh-oC͊A YQ ig}oAp@[Mg.x~{n@q3p˅&UH_]tE#Z^kd@"jy; uzӷgG@j>#D4%벅C5|U<8]_Vx)+|./˷HRO&\-wٹtvk믔)=ޅw>|? ! x ! x ! x ! x! x!1x34 NI-VI@bpq! WP tT x! x! x! x!ox_O0c쟏ȋ&n"}YBk3w+ i]gP )giBQ+w(^eAzV!\pMPkN|N8v kȎD#FĐ7DcmF"XW{{>)0KYcw_.BJ*1P|}৷?/7D5z_kQ]k>\ZꌨGߟ.8z}ppJb@ ^:z F[O5qFdB}#_|?v+X^?JSx\o(}"h!J!=PsC̈ju;jnQl`!VD==!y;0='Ɉ$zٿA9!Gn ԜDm35'$uFB2j` ^IHa / $$c>s`>~ BDO "A;!͈z7{{v NH "^sb'F[?҆Ȣ}!vBgt'4! X B< )6L3!xR_1!Z RCT?"'dQnBτ YAԣOοyߓUD=oBℬ!e>!qBi8!cDm32уd2,b !! B@H&!ʾj!zT|` RGD1P"uE+gFQnz '7|o7 H(3*ٿ!I]eA1N핆%uKmVLeTI'&"bՋM:5ݳ©kp+ N69QEUb;MNP MNQ8sd1 788&'RTMNd4tlr*ŀm48TP=8ՕS'USzT`^8UpRJ|! x!wxTn0=c+׆[ͮVjn0*6 -ݕ7$^%BvWoxF@ˋ~`5`V\+ajx!:x ੖}r ޜ[բiGP^0FH[ `23 01Eaa̧W |,b) $6]ZŞޓ< @tPF!Т&G]Y;?#9]DgAW`k _ KiVCՉFR`t8N"G1;6\)NS ^Zlk'OXs+D_[Cy"Yƿ['3tۼzUn3ts{+{*: z+ѱK-n*t&*iE!+̥5 "2\6J}WTSZ'I(}d&hH xNhS2`qЌ$(M|aBj R! x Xx32 5 J,WM,I-L)VU0L".#SN`CNܤT y3N7wCN̼4U1z\\\;R xS x! x! x! x!#x340 (O,QpN+I-R00f  x][s۸~ ln՞(RGvfkINmPIEwҸPԙ@h4Lm_AnN/'$[ןFoGl2?}y|*Gqzz۝_JbK0!J\(ϕxq|uA4,vHUm1a=#a|˨EFW&@ʸh"($k.7 PLU6*"N׉A:uX/A v.aMXHE74c_9_+^t8H@ 7$JT|Yfx\!+lfh7e Ǧ*j>zds`Dyj"OLynB!"WLrKGډfxc5h@WQuWIM4FhIm+ŏ1:DKhѷ4'ſvw,lv(].ItuB;nj4ncW%Qx0"C¡YiwwqwU]v+b@ 7*t%d麑5p,j;3XH޷>z;55鰓>:sU$D\-aPGJ*7vG!H("Oi __b/5<>+@(Pۡғ Lr5 σH<k'0T=@'̺v7,Ky"z|A'XR3iخ*`7hqs:g`DiʪΜMe' A(Oag.e#:f5>I@ e['_3rry^iZߪ DW]Z#r[ c.!,Y/bZa1彇-5g[W6Q!2:hw>Zi-ZͩpXuJ+P'ˬN*.yi Ű\Q2d53XQfj}ٶ[X(b+ +OF԰b=K]o-Ti`/_˚'M鿸 &OҿB5Z =TmOQ8$ _m~_tlmC\sWP1f7~&PFi{ ,KSjH m-)G#F>ry@n<=;͎0j7vڟ NvﵻtT~8v vtNu{#}NpӉu!n A*<_ 8;S|&U.A>y%f E9w,M' ZkHj48O4ln/SeCyF<9[*w.w# o+Qrh  LGO~@DpID6⟢@v8Ӊ>J!Z|-:ܚR :DXEnձ%Y%Y8Uȿ  'jDgp=ƨ ;psH۠ݔOξ筁wW-XL@"ȅs5-B`1Kdogxh+&h#I쎵 [[F7@rl]Ud<f0R {+4w0C1d a:&A;(@@44 m,cd7U\-7 CSo1^U.f%#6ުg2t*wQeܦ@Q B)mM`Twgkba^O8Zs!8>#+X_LGօL>YF4c۬zQ&Cf YDrL?Cr'gB).p T= It^D{V{v/N2)r:S@cF@Ōp+g"EӈMrw,x?/,AdgKM%"g\(^"?&'Yi lMIE|-)g}K+O+4Q MZVwϢ몝Nt:VV ^ோoxNLP'O1 Tc1-XNx ,j>{7ҟ_jC9QbmG.ĘW#[DzaY};㷐t" DFP6o f7.MYA9uW\h.ȣ LhS*;·59B$L4{04ʫW;:*<a:ѪB7|! *O|U؎ݍ*lS\\]W㌬-4 ,&Oٲ,4:yJX;D5wf3>=,nbg1N0;3wq8ԯN/26Cl0/\_a]N| XQO")Cf[&^^z~d,NWKڋvcqba˜ b ~Go_sΙ/uyt[ݼPVt3F:$Xkx6Ǩ(W;Qc@o24}suSǑ)0DBC ba6.Pģيr9Fl&:ȗ4̌{sIf&ƸY(ML ytO5F#uX&=7K$̕(axEg\#7Ŕdls1,=zќ%~HCX!6KPW68[f[麼~, B }Ŋ e޶E6tI)Е]:b:L:|۠(1 e:flF"P+z/Nn0&W QTBRQ|_[(u&E&E<ή(b#ݪJJ^vGW}= uL?t)$a%4f4\irwɩ<;z{(2,)/}X}G$XG;Yvev]c?֬&ҳK4;8O> ѨI2H5d`t|sUp9:.c_4Rs5nuhd'yc(L'} K"S`jvs+TKDO\7UtnA;T}+CJRHFnq(ԞlW,!ga΍{MIʥ o>7׉NˆqpFY&Jw VsD@A.z1M&̔".혘i;PPÉn7# ka_uQUȷ3L7'Gl4<ץ[!7еX8~,C-<7=$LW\l"lfF)Cɩ(6NX?5'[9:?yDT<~y 9[9^1>FCLܻ[~}U_ka:E&IKL_ܓRdVx⑰RY!)J˃ɻcҾAR$;P5Ma'97~>$oΉC)cF ||Y6Ծ7s o1ɡk6A9|g|R>JJ:tվīr&es<@i 'g+xX46 &pȔG ,w?-b3Vbo0 :]O0@wKV~!]OYYQF.t%q'3LgDc 9¬Vv'E()_@ݷeg P%n^|鯯R]応WhoOWQ.HQ4 2ɋ< nO0LjkZZʁ ^'pEū#P`hF]1V~{՘nQ=`q0w0X )D>Qj5^_qP*܂B6'i/.oV+[SZNIjxm2˼jAz RN9gkS>umS!Ew.K@aWJwIoXh;<"@xn,9?`]8<}a3&?]wI,&*:w&~p#_`kZgNTO~plyP$A ]ExS , ȋ C'`-UIz> ]FMRq!Xl&Gg7O)iPj 6pze8. HWj>RRRY8#3.i7@h1 # 9(R#aLv-7kҜ.9,']IN6C\lw. K(4E|]Φ8Du'`;݉J`T 1#ܐ"HߵNl _U BvPeI>|⽿#f>}{FfO_Jkt+r)pH姟~=N xU x ! x~ "x3 qsq r .IKI,J] x!! x"! x x x#!cx-ͻ0 Cњ%9I}2j5#6@6a.pd@eHB)IIQ~4G]&HdPBr&%-"աx)KQ $! x%!Dx}Qn0Oކ4# FGkV~J MQ0yvBO떳k Wu` [zyhWh>_Qy&*e83KA |FelMOwVwrL/I[q>l Y/F`ɻn 2B( T"=UHn_x 5\{AqDD^ub|kn1U5I yox$UiУt\vޝ?&C6ߵk#7:] wN}G~m+t.i}0a{m"Mc~b}'h O=@./86KAqI*IEfժ ˜$t܏PK^2QQD(PE,)x4y'۴KQ-ʴwu|8"Ʌ?w*~')ܤ T]`Xu*X G6U}QRH ]0fPez[Fv򣻊+N6QB|8+C|$_l._POrI)t'NzI|V0~U]#zԦ u\7&U:Xa6x`>.GyFՋgetkV*e2!ISoɓC*G4]{NhR瘶i!܏Y4|4F&|%5ʱml!NM!1,h;S̊*uwcLs5:$eNX@m$uDe$y$.,U6xuFmcrإ65sZZ8 [˃2'&gaQ.Z$L\鉸7^+,M\㜷{TL+ьp({.48mntqe(u|F(ucafH$yAd 60ۓȫ QUiH4d\G: 9*:y?LK -4%MҦce: ;4 X,Vώ;&PX鬓p( do+ýVV0m8P mcӆmYTrԅ&.^^ۮĐX`1ISd Qת:숄]|LbVvY#3-cpfCm7Dݐ?:΋#mLD7yW8lI]:G!p7фB{B3øh0_6y4}zxrGs'Sǰ=E$hS<|r 9op ߋ냋*jmK&)Fel`\&<9MQq"&_{6^G>[ɒ+8O @BWS+KI 6=d/+3LuM'`w<28EC"gX==(t+kbUW\8Ta>l]=*)&/sB+  xt{hGyUp6eeC0~=L;_*(g猱c !V1iAҸ4k$!5pMchQQ&ihFǦᾺ=~.#/͢`%@)t1[Is3@ *9/?%<%x\Epx⥫ ~{x )YpiоYq ]W\gqOv7w (q}џ'6u7'9h2Q0F&f8ƴ7|V=Ŗh? snrYlq'*rW[3,NF0ss6z *IBw-C鏾F>429M\417-pӂ-1c֌ nӁ,?b`4 $3+MiYKJ9]4AVΕ¾N-ߒSixvKsIU _eL%wndNɒ>ޕ#"qgc2lHHH8\ fn^/h,%$:+O~c!{ILh n7#Xus's@q6ޘ]iwAod Rב'm-Ebel1o[vP5 g3G|]M͸`=c0G|#_p17؊;Bm3~R}p~@6`?@AGHaEmG,*\@[)N `j;z 6Q@G 涫+_0[23n|Շp'Me 1_{Lx*|srqO>r 4DkH[/:aM̵y 垅heKۘ['!gfOs =SHW{̃'*`>~%Cwn8Fk[[[oތ1.Tv2l4n+]e|;Ԟۉ­5i [#D!ER89;Z(A):~ԖɃ[N G?pYyBp%t5\-pEºkԱ٬#¶\\/ԛ0z1j/VAII$:"T#kZxݢQuZ[zzhg!?HڪnFQ["5S-[ɾ/CoF̳ͱ̶(ŕI-.߫c+}rKee+p)vE(߾"'~E0Խۢ M[!ˠ8(j⋒@tNszkFU"cǤ}_?ZlOVsO-0R0[_;)OM{aE^Z4>-9{k6EduIO9BvE@s9[=z&Odn;Jg)Nw_F\xMv5ceMf }tK=R*}SYVL{1=;%mqX ZFwv|ejvMłP=J`)r"2q߱"hhRC2oBbw%k_ Wr@VCƞи3=4\RcciJYm[j@L⇧F^7 CIhe/8v(jtD#KINMm>Y9Ys,&+B%Lk [F4g,vL,'-ͺt+ʗv-|kf%h-bjP4;_@"wVԍʣ.ioeu8P(-LZK}pg{׷xL7IA#ܲG65`n#!UjJȺrw.CK<E8qNG}c˱7q0 m1p hsАOrcؒjZg8?Gh|=@qf-🔻_JMVG5Fv%4␲Fq}Rj%}Cc5?4]5thjJW@nKŹO $RDH#{\@KvBܵiŠq?%30)^bm$"Q/ "X,ķqvA9LR4y5yYI &)CS X#VNR\c$hX~YX%4 u, W z @1QQ: Ό6|d| #dx񧫫ۓSw q|9BkΉ<#Wjr{yb&Kɕ- fy?ӥ.#NNFƷZY斆6ɧl JFIKF\`%-9G8{NĘ(L6 QA SV0Q>]Jc  i\4眢\5B c/2W7SU;Uٞڳ񡱙K)GAh%WId$-.,+GSQ{o:hζJv9BU9|pd!5 nbBg_=>XE8pT47pW*M 4N7V62\0Q֣)gV^T!^"eԓ}-{'s'r"5K\;-@ex%g _Tf;RW\4}J(8L#&l,c寽8e 1cmIVk#T++R,KdҹVU2$*[FN ҂$pbo6Ay3 ed}-}cZܨֶfSUN58{"vmhYXRC|RqJ/D =F]WVa4dX'empnLDHS3ё A5i0dii9cݕjm*GTZ/})հ.ˀu4\RwzٌL I6gΌ$>=:a0ak[ɀ>Hnowq[y8xfg-h̾*E4sTIp&K|!QX2-N_^C&T6 )qrwpZon/nh6=L+7CVYTih 6HiOqO~.̉_7It՟ j<5w*? '|Yu쎉=6[&߃-{;~(W_?ҡoMy[cW۴ʷ_;ߗuSRܸԷf\r Oa18JXܸ^!C]|cUseX5cߧO<<弾|P@pdܸˑ/c (~X|vׅL\QIR>7ve'8ؘ J 9ĮD!Ǣt~ޛ|s!3 28#g(#j8(($!%/1<9~ݝD .4lD/@@9b:y@dž}. tX_'MjB84 ._m>-ZJ$+_f։_TWr`? ycx] Ix5 @jN HyTHx3|ghx_$%i(4-~ GOOgGl1~W&qOg< ` 17U]a dv=!] 8[-ڤlĽߋ 9?'cZCjkpSIarGpJxCt,O^qKG0"b1xKod"?[OlqXH> f862G' G`%Z[s+I(jlmGhȞj3;0;0?5=&@:6XQf2U2-PJǥ#i٬;?N%Bed92JnQNg_!M%2NxyA]<| ac8 4hh80 veiSR*77Gu';>.et1r,+mrø:q& Ջ?, K[j4ذzZUq%v}Z l]6p͖ro4/Oe?\٢e/ v:J6/k?XJEO(e9vo4"t;;lV@zĦ 8~_f`4ǣp07YP{])]'nWpt-;ݶD~[KM׮c zNi0EV}S=*Lg:aPO4o!:RpfD& L igrUZ@55}؃p_'rza4@ʁQ6.>@|b:ѕ-^~#jh%o< /mO_P)l5%`g6Jљ(e@oK(myͅVTYsEhYDp l<=Kczj}\պXz?HSCs:^NՑNsv{zEfHLOzP|'"VKᲇfym#Zdv#~.t^ V2mH+N]29Iҧ~b06 W[pA|kN{t;NN}|#:+ZK+!6C8f64*p|?Md7^VmF4P:Cs$ +[ JK(5RW"ni!\mguKW~Dp?goܿbXR2 | tx[ )*~ ܎&_S dqipO96z8N!;w/y8A?qw-R>tۍ}Q!M ;H i*d$ xW?8⊨_pr -\,z7` U }5H\\ ˽.er'Np,gOp%c{(5KAz$w5|'i%H{͢Y5% vIހ(d6ORzCb2~Ni8'M"σ7[vΞjIV؟%MO[^\r]cJ@Y=ziWNkKWDqojޒ)JaH6:~YF-0 B2v{ W^/_ԭ$X?MF +ȻR{'h:}@&szfVuRN;uZ6X gN/bfh<ר63PqEδj8Boj ql.MsG{b8~|p67L4W܈a&bhu#,P]nʣ;% A5?5QDmlېak t%wJxH42Cl4Й̅GV5/+X ƶ\)&p߁fy$K_}<>>_}-}Mc`_P 5fH) U% U>4bi{[@vWN՜f%GNl)׎ޅ)dXR1p_ Fȍd7-8@zo^~:Nưd;T֐ԩlsoB*RxW6LjCʼnnJFU6>ߡl,$/ڨ.l'WjMs.{T4FӪIhobO]RƭAdyu󹦺anEI԰r^'%16.%}7Zs bm}"LSMc_3QmY9 SVF^Igj-mBl"q"FdYl/X_v)(&NRɭ$Q%~uɻ:I"Ȍ.[lZDipLtzz~vC!ԃ~;}T0M(@ NuW8zv aq&oh'חb%*PPv]bwB;unRt-Ѳ&9.%Ծ觐`%cbWUDؽh]JHcWπ1oJjBm.l2nmf~Z[$+p7uPz)Bo%Bc!XM6i&P2kz?>a3@x\~'CE.pp9\3JP8=Ai? )lZR(l3>t8pntfnß\ :r|t}>9]$7i66iĊ&`Uh >@ ?w{qJZIp);f7 ‡%_5{cHrӏ%j)|k<wùO"tUZ:$G EQȐX_Q٭mHޤ\B1-Z]`c2>r.>ݜ^취K:&LoNYZ sD=l\^4CZH%E?Uf0xop4@"Ei-%{,?)dVhY q΢޶8."RvLD@hV$y 7 Y/gEܖXc/9It*n6M qoɽ^'sZ&6 \9VL+;d HE-֖FUOǶertj<&~rn9Tg%3-w j]*a/bY_ɧ8zn{8E/z乗*sKndeTizavD"A@uξ|]uurqBdεNjkZ'ZmvO,N-on#+ldzy;QQ@~k?lUlVQlkE_ za ˚,q ʼ;ۨb[ɈMQ5c69 $"MV;`27m[&gi6/Ѹ2> zCbrah68%g/> dTyuW BS"x?ApBTsH\TbP h? R񙢣Q}9 !x%P!A ) .08onlë'D\%% \a3OA^_BoʊI~5 m]ڸ(N1pIW~)wͩ&Eaj̣y5s7ζx /{$;: #+~LKב`#*#}z; 6Nq O-VKKXVDa)W8pp4dm )zjب"[ef2RG'aNGOy"-JR?59օ?E ._W>@B'm-JeNZq[ ]wsmO`n e#"bYXO,Eզ]]|@;p(VU-s.D_8`&%|tPP"ZAֺ a*9:BP]\Q5|vDϻoU2.U*Τiט0\,jPUhg9\$hk L9@,76$e['|ݮ0mvuYLS+UHXNuiؑ[׉k۠*+ Nsi+lV]j:ǖzM=^+[2)d4~Lsư &B.mC6TѮe4im31i5+ J_J^]>5 M#bnNAW8F_îd19B \k8NMv_\yuPրi4;YT5h P =,;$ӓ+!Q3xS@Z τ6qBe« Y49ӭN0sYlIZ`EK-t? gȀ A8FBKZѷNq&ϴM>y3(l~6u4 6tmV8xП ym Zk #l-.-چB&&{?4qԯKRԦd640Od1V{ "zLTSF w?jOw7LB;l'M7čT .0\i,`A/_|N_X2: :]lA(KNVO4hul堤H&8#1+a>T#BLn"f oװKc(򖄚4\j c5Πˤ&_? hxl4vr*b[b'%8ӡC5<;-s%cw%9a FgT wK|[v g`d!q5J.wDt:ITSԄ>e貟6NwgTcb_GpT]VH]pR2V^ե4uWYժdz؞4jJ'-ޢo,K -3$pS ^ӱ5f86sw d_;=W݅=Vě:<|J;ItJöW gv:ؒ6OAq GQ?YZIIb+c D7L?֣# 8 NyTZc~k&eނ?@:e+ BmNeNM8\JF<]sFk{L$f2=r ے*2<9162`j"%Q)?jFG]Y\2}&:{w8M_GMGQ DAl~:{Qt UJ"uc\bI _u]YW/v9+vR[ lq^>/o3ʅ!J3իOS >N_\f0p91qS꠰0D l, Btq?oN$6 7!=X*mrrk4MbH<9]hQ&uf!ҋ"B2?FͣA0 ]Cߥo CAA 8CHbO/-@(vk0$՘?TGP5Y3fDTEp3]蘩[ *[gMFsIc.KмN88xz}|'!& cD1|3%]0!!gf>A V|gOwj]HtqBxŝҐob"n! [?gF'xw @7-q1>p)=T%Ljjt@a* FJs!tߦ<Ž9ytz 'L"m[?g|y1h[5U%;uџ#?ȆĆ(r[+zgTZ4o1 wPL]On"Y.h܀xh靑p5tϖfc8KtokٸaB|\7%apBzZtpa{%\8.>]햎鮳ա|1qdM:W;R$v 6% hZ!+I2C]܏ }hPrWzZv,hȐnYUKi֨"a԰., 4oAsHNd4)R[(]ǃĕ(leRvP:[r%qw:΍~uxEY;]-˚s!Q iWbJk%mt[S(vxPc>@E`_hmfbs P\a5 |Hq1)MZtUG,e]hySˌh ,'z:z-}qCV9UEi/H;Olk'sf P],8-,h*h4QNg爛IdXEKv㛸lGZPV sB];A9xөAa">RQ,'΃TIb ¡=3j܀O7W^|8DiLCnD0)[3,|yt51ӛ?N͐TiI3 CR0D}tpl/8TG〶[ɷn@_+-~(آ9 9^ȸP>/€ U3;o+/3{ ]}O.dO0-j)XV E*^f45Ë0}"o1:HiesܟmH_B:7ytǤq@. H hHg+(1k(4ACDiovioѼ, S&GBW'PyKHѩ[|lpx!u鬉Mp @zXV&/jۜ*Ƚ"ulRTC?۪Fͺ_.>]"H,N#`RP, oDyïr.%2>*9 M}18::FJJd BRr SjC3O-|ZpOyid~#sUĘav,ʴ/4/:2<e柼 G&PQEtZĮa(R]w.] C=1.IVwWpD]C;v>_Ú2n.9UKZ 5"ΔkJrMxJqDc:wL%G2ًPO҉!1ݏYQv'qOo*BxVI4V}6m0fE+Rzy\Նi\=QQN$>nԇ*yS'_~דG , aUQt{[BmώŽ]26c=HRU' $ICDaCL5BtWAϫ3qFSXݢyKW,|[eگX[MNl:˓*r.V+hx Mfu59ˡ׆Z`rtwE dй- _公p\2j쐵/VXMW+6W cprN3|tZy!M \N:b!hRLo噷:1tڨz29 ?(r2>Kj鎒ZGI,͛’+`*q4/pґ&JdJ<0dd#py&S|G3y\|͢BO6 `?)=?U)}>yMS?[,RĂhSq=(ZcOt)ObE67z@?@I> H$.sKm4}sʸewAudļޖ^¹@rl`6(4GJ\BN]9@_*,B#S_֏<)seSEIF$*Y쾈+&״>&z+~/ ;z;5`5#lc''XoNK8Sfc5ej9ousu2w[Tf1: fB1b8p.wx Gh>RNf@IG{ CڮˁMFJI~/l =ç>g} >\"V|gJH4G1fYC!a5"d88ؑ&*;MV`-}SrY-@> :2Q˘0}S♤-b{q1kMz4", >0rS:M\{Kҗ~)TX+{9?;V>"OY13Iں%}2yOTA&FViAk CҪ/'\BolmVZ>li:[!*{:mN ?DjDȯmn}32D;n&wICq'G7ܵI y(>M$;Tu3=!Wz?x9a)v0+][^:*pV? ]˘R9ԝ8GJEVrb;NNYIg#%g:M&[bp$nitqk -*-/jG#LBN5zѥ[3e/Q<4jCu'$ұda)fRJN6il&@t@9ʒ֮)lَܑ `Krwc2Ӓ7MTZom_΂M"Jo,ʒaͭC a9aͩcJ,cjH@g)i:X ^Bϗ[IgՕKAsW(g/Rc{}R_KNֻ+]J-ctp,e(·0g3Gmv{0[pG}hEY/84YO:gHF3Z\$gS<>7uſpAeQfv D0~8ipHD'w; @l!I"%sD?Ǐ ,w 8OJDӀK;\N3~' ]PJVsxT$Ke}I$A88 ]P~Fo??4FNG4` Ƕئk%hy2X]œ{8@i0[̙ ؓ| [M` ,tʝ_JJ;!|ٔQwIv<"ۚԆۧ"a{fR-6pSӘBJ7֊Alh@nRf>f[ǐ(cm)əBGE#Ԅc'7R!Xj52'(6՜ոDllj|n?g)z?sxuQ4oK |*CV vC RBnhYsd77A`"d, WzȚL9u 9:LZ!!d< Y=z!l|~  ^rIz׃'s4| !J8?X'`pOc*~qZ:OE^qyjqia0fO!@Y'-1 쨓Z" rS8% ah<v t]mL;8xz}|*v{-Kc`tԾ8"|N[y1$dhN ƅ(=BrK))(Lp$FdPT(^R'GK2?LpRN$9>DjH`aci3LXI |g:A` БHSPdr>r\f,G=ՎBQWϙi4\ܬI7c z㔂OnNpN8\ #'a4<Ovv%WLpY#/6yp ,#9ۛ F`E~[Lb?noRy0oS ?FnѦbqa}) ܽ涫ZXM )EVߒ ݁}O(8ShG;S᫒?}aOM=mKŏ}pe'}NGH.m$ i,v-π)--$|Bb7zKct+6בz,w$pE{KUq Kq |r28?.KD,˖TBNRXj:_.[bD8Y|uOܖY֐I f>NrF@A-*8knpI؎6ǰzr Z#M_,M¾'[R~_v[mUu e>8}7aV~]*,KRd'*ܓYg`D_.ޗb5\'KtH)N/MѩѦ/q/], ^ֳaIOLj4}j™iNQl3Rꈎ4 ѝf2 Y:nG7\v ֱggt:~-fOukqz^ڂv[ kǟo.NuJ :4O|ӊ0E 1!h[2th"'s/ rDɔFRw<3u`%{#-2DϘd$N~ Y ҹDž(&Ua;+5N Nt4[B4W掓0&ljQ,sWCB@ǮV`w{[ +Osô?9);2g|;0R[Y>,v$mk2ҘVY >ucy6i+q z .N'N~9\H9{JpAǰB5f 2+Ahi[her̕e\~r&R,嘣m*Ry.sqsj`ן\},aRF|W}WMbtg%TniCqv,:JTXOӥQ)+:G c649:=p4sZ!c6yt ~6|&~0!XS`RCk@/uóGxV=*gƳ Mg?w-?o`pT* /&0j _%zVBrB't=$hjTdSijRHƨ:΃q^1փ̱d5l8~Q/W7~sOtŋA=l7aCpy!\Ia/h7MA}B~IiV zQX q$9:!x`Qt`xG 8^4 7xr\49S_t|7 tzG:;:1)2m΃g\‥h EbPb}uDt R[ u2J%DK35n=8xz}|ڼt dPf$~qro[[۠En<@xz)'G77WΏg |=tuuz~s{r ~?dr_3g%̅ h?V#Q[bŝazwhDG| kD5МC J'1݋3oawS~$nR,& Sxm;!⧓˧JPL[h#^G/r~Yc|g 8s0DSt@z 7|O@~SQ(-vV3 ; lBL؁CLjY}BCZhs/hEw!E&So[R%|ҍOHCl4r*R`>s9[^>x5JCZ~\\@go#>Wg-qi\ T 4T":a$gt؅<`s08ἦ3 &擯\(<:)uź{gfNz'NzXѣ6-"llI W++}zA B_>SFҎ >B)<(ʾϦiqq” 3 sMɍ{o0 B _hNԜo˝t=ܠU7Re?F#kLl nP{и&~E6Nvd6 E?DgXbŶB 46Ѹb?FnBo2gv#/)%{Il%}ɓ#eIc#"gdn˂4 (EGSeQWP\2Jq(KFF1"kuUigUH#ޢW|NJS$.qd.Wgy]Zs撼\b[9P4P5ShK>nOEBw?3qL$vOI^&I4"%ڥkoW!uRera+XU X5uUirLaP~1؄S_@OU0w` Ȗf0<-@sP5aݕlbebdjֹr _L_;"_RK3} j<Y_^? V F c4h3?bksNa x t qBc1~hٟF{KI*dqZ 7]fh3`m b+'k3ʊUY.}nQU 4 Y9АMf9eY]8a|ζE^&;# RiaG(1=iXkR_;uljL]lbû uEmrVfm ވ<$w u]^ #g=nMt z4hB;b<~qGЪz]z6|fC+5!MRN.ouy жĿGFhwqEj#7c|@7lXF#ɝ\(N t ޢ~CoDȋ~a4y|9+Lsf_asS3 '%?MQ~}B1nQmZ-o)E6`eXk(KCH[vG ӯ~_Lƽq$YvR01wԧBGkqtmo3ҝUc5]HUDdd!WD*"j}5DxUkQ8#_o~k\}8Kif^|/<^cen4PC1lh 4hos] ( gR,Ji̛@}-jź&S42~7aGO l#Rh[/uXHIW4v=|j6Z|vZЭԉXfB %}e*cH%KD[P4a.q#W$%R;}.؎BQ?2Lf dU> k|Y3M5g!JKPJ0iT[M4RV2hJ%UW&tթ +@)niaheՖ:8ơqؖ7\W5N\"F!O6cU16tm$DW ,eTg[|YSuV ,QE<Id.W[(Ra%,E`nUC-l|bt4p9ÊNJՐ$ҹRu )vJ~y&Wr0wnW]Wq+uF6(un`urW}V%3[aay}}ôR"$ VF@+ y0xtb[U3(:Wߧ~|}cW!Se` 7E͞r@zrlQ yb7d)v6- Q#M%21SJRuc߿8:GRnۻMcޛdu,*$]]_HI$d `03f~Cpa }N랻C=SS#TЋsLH`t;ȁЭH\uy:L D7.}/y0{ :ETbϓJꙚVwYO”湟6 9͊|By3"ZNm*mcz7RTKI/` d <b9?>T$sx#Ɂ:G.p1|J0qIZte!P;] +.wlS7,5x>ē} Z!g' .a7FRM+~ķW2[>z>KXOve9D#Q?>J,?Tܗ6DܫiqG^!+<}*wRBPMոJ8O?fn<ΈyO`AF0ׂ7qxl| z];( KX}?4G|%=twGo;Xw2)[5 4 yGw8,ꊱ?RATvv&,J$1K'tO>]]]ܞߜi껗}KpR'y^!5T%/ z*2K3&+h-^W'a!!\XP[mkh ,54|8ủh&DΞ]hFV?&!2bBTko1q('9hyPTvo=VQ*>yN BgUQƋi'Ul)Uf'+ғ6(:SlPJ)ý?#~Qxlc+tT1.W̤JRDj `Zf-K/o)@\xIfS +[s*ɤ 4{ #fDtމy0`.k5Y6=2_9U$/n2=0Cq(iwyQUphf~%DM ggaT+Ke)=t~B̝e0JLnҶNN{$D͘v^JlAn.c0y-i lF )/9ڛs:Qq3%cdfSe+]S2S:rr#JީRLL< KQ s>go\Ma$L&0#ll<{GPQOE}d^Sl 3T0G7=dt?2ƺ{ ^t`1cD·t򢼶$xLgS11?ӹK[Wx6s7?b㑰gFi1=\S@éRI:Z*3Ro*=2ʹVʄC[TFImd8$rOzIj2Yi5YFҨd/7%xBˋP(=;thZ8 #OsM |'2;oAGѻ/}6T}‘ۄy)k5 kgݦi5V꠱v(DgJ-O+k˲aCWQ92rseGZ(Nizs"ˢ l'\G% kFi I:;H(dxNJN@-Xg _a&ʠ"XF/W}l^B.՗>B,#`$$4 x/`J䰾8?Xa7J_H C(9ܻ촨s̈4ɂ4:0DOh/GkrXrHJoiI`FIv o)24" OA$H&tGṨP^zN|j 6E%zFMX1Xٷ9H To<݀<"Cq6 pzÆ 6*jʬU 8趂s7k"z3xp_J `(P0Ϗl{>dQEtr~az~$ ~^R- (vXV)BAc| FmTsvBKsz#e$$mgHUr%~/8q@$Tw[Hn)aWoP:UuOP[aW6*y`  5wug`|Uy RA/Dڄ=@{ݦI! b#L֑_L'氈mOUDt# 5쉊=\"gH_mH_Kfr5 j2Wn?Y$0p۴7*J"ɽv؎`C );3ꁊ8-h"OBbrv:)1xAMJ^i}_Մ";X=ekCKz";q89\x/Yڹœf榊.x"Nuyq96\ӿr@S=Y:v% |kIj3d5h8 >qRKE E jtE`COP`~006D0D''YN# o9X%l6 >4I|56L'O,udڎOjn=gǡemd`CڒpISvG{*,ɶpZ<^J{4iЂ-$ъmuhZ[-Z&X0nZ\4O4t7I"]h\Z}ͧؠhwob∻MJnсnfٻ9=) m݈5W:6k!KJ.YPZ*bT*]<*++mHNNWei? >K*)K7-Jf UMļ8=[12)PNN<0(Sns& C"(-"J"EDiQz"(-"J"(-"JmD]2&kPZgͅ2ɰnxY -(X=%D7A 9aT܇X=Po쎰ùvp2$eZ\H*RsMnZ*  flhjٺ%h1J h jSLہ IӺndCiX ~ʡ?E8bOᎇcW?eo QfM-AdF|K`.uFm橺࣋FD˫w(Iy#LÚV^QkoMZ6ymwqw|*݁*F\؝d(4@B#`\Sp1^ FNh%T4%q %:-o凳xZ k@*Fp4 GSɼbd illcٴpI”M3|x4ßL3+^6ď&G" Y;N0Z9i*TXNutN]՗. h}SJB**ؤnI'E-aD74CRKą17#Sq'|Qg *L.ShB74{~LLE5ad桂2z.l )Bnؼ(qfws(LUr6;~Ly,'5ŬdrF!жD!&bled7LؼCc:!<-PFcJx2Ca@ 5J -%H㗸nCcc9mi(47ccĘkp5^iֆ(Ls[$)Uw+ّĘܤCPnhAu`61iqWK^j PcR{+0| *T%^C5!HQ~ٔfi[$frwɕ3sl$w+8z(i/vG-oA7xK$y9(P󸀽x|<{]zv 8?•a\Fq"@kbX'|6Gq7gɉgڝ;3it}^ oぞ%OT;Z4r\swa<F:M<,ӴwSR\?O\%!9g`'v9H3יn7-([=5pls7'Dm[3)'To}AqzOkfȩGh´9oߔ|ss&lbL#JZ4J .}hhA<ð# i̸(Jo`wiT] 'zW]Q{냾{D'{y3m$7X>Hsa-ՆO,t2T(]ؤs6ϵ^ɢ8+/)Y ߃Եʋ2bҾ/䢚]= mg=pgi| s Qe2:p4r2Qv3\B;ĠnmMH:& MAVr _xIZp΅-ANeaFȍ8!\7o%5H/^C"?fu5^Vڛy ʟbM`a @ACA|,gJ^iz-SSl}t<+x\W"ަT5Mq EAU,wOQaLSCFee T%&K|Tt] ɢQ34g’C,9|h{LlD.C8~s"pL.@- M'Eʴ}9X(O:Q;{| wz03c{՗R:/vK2FA^>$'QE|\tFE7;㑯q酋aVNa3f^_MuHGb%JR~݇oP¦6Ve9pݺp҇/%.u.B΅r:<&W:WΗre}>wLuR Ru*uI#EG")G[HqX׃~:hKRO|s?,H9zGqj3%qW>jZkW\h|s:X ܯf!Q`IXɟ;ȥN;2ߊY=͖SWܚ=͖Klَf| ]=L)@WAGI(|!rl/%7/m\]uT/V \0B6?kFRRues{1#]Z0z8^ yU6,|)o郕 mSH0J.ӁM\^>!1J5+>p{4%@^H:dR;."R [ª3̐Թ\# d;B) >* XfXwW$ֈym1p\gOTYNMNVA. : \Ӫ5I&+$15<l@qf3bG\-҆,Gtb*feMRw>8̃q鈓 4c^ PaVmΧ~NȮT՚>&2| aUUYtnIy3F!tKw'Z'u:|g"ciC5Mu"a< /. SH KqQ,^!|\NW+h\ .g*0 [X1*m 3hb4zU*:_ K&ȩptgT٩v,ru HYۼ9F!15*OG:٪8ۃQ.ս=Q󨺊oX;+:~%^]v r<]M+he}N^_?Mkf8\3ƹf䃎slNGd6D_'f_׊:=$wѦ:jYd,Zigs_Mpӯ?wc8|" k/2_ƅ`i{M\}&%n|xlK4&FÙH1ѤwKt0t$G&н{>"G)aujKLI[5\F9ws9>Jw\4e vwf e;&RM7:Son@~0&4AGUaOL{ ĴO錪DG_._./@͙(-^cTKBcJbo߁ t>t;A׿xw!n:_Q2j#]"Y"M:\JHU~(Oa#c~*CqOE I`U,=xv_$1Jp% 8=oBF,x_YٙM2ʭ׀/ˤ鉥>Hˏs4`. eHN;go@Hi(jeiO4RU-,#J2`=Iy\}(JL.P!@x@~jJ)ֱ[H OH;}E :D%ִt;9?pmyRy@^TaTFegDJт ׆6/ aU# ]dq_ = noTq4<2i"e34%`Y*X%",i@N2YuB}XȨ9@)b V\Xs*Ҕ3ь4&T [*0\>>@skLgMCS4 9r++*\82G!+O\-tDa_#j0ٓ«tiVh#90U䥱nWho* hbkdaUMY HqORQUʂ)yi*,\JZjÊ&ͥB0UXO\1GַV-Agg9U.+*wdY!* wCYVi=95˱pFCa|0%Q+椩լ*棉̢Q‚Y|C8@jM6E a xmU| jy"nq4`g˓Oy3@,WnQ]dwP#XXX# 0Gm2,Ɩ!d+ keÉ勾 L[#6a-BzrwIӐMf/|1Ol!B*t)nqJ) g&RIطIۉ^FRKL U"672b Qb%$ ٠ pelsP[d<a?\0FX=%$( ^\jd.ӥ1KeQHiaEb&u:iS @tq ^2 t_mk_YEesӵ/2,u))uK) '#O2} hķ-]an&; Z tUaI—%te"4_;|":@`"ZHRD)!Ww7jDwPWכ $d(H=?!rG˯鋒ZB2c i6TCdǠUC ʀI܌$ Hv (/ Tz42*r//qLKw=UtI߂T+ ;H z(2a?TӨx|)~[Քe2@-`.eUA,\]. Ě-ES 0"COyř%6ԛ>:uGL; \>ٻnJoZ-s)mGs"Pi ,=4:|[2A"AK"1PNUKkϬPjjݍA]xqs^~d{_ɖ퐜@ [AT?\y~f{D6fk;"9=3shY* -l.d O$ԩbu0nvG\ɛKjgX/GoO8ԚDnWAȩBPd̊#;WCR2LAv*uRXPfs>2(5)ڂX?[Dgl"Oq5ʟ#?kzY/+Q̔Bl$c A|6;eccRFX`(d,~D)/gZ-8}e9`^ ;LG/0מ/Eja*TT1A325PQTIDS$AQ@RI4*6Ҟ”6)E|.;eSɇ gZΚq*Q|h"!IAGP-CXHr=>8? `7f<>_o?%C 3 z _Of2,YIq{e$3Xp`0֒MZQ-Ī  ?U :ɕ o,C׊eH\؈T CP6ȳEd(xv",4V6 ’L} ,v|֠|D 8pG)Up%$<Z8JWV sѠT9.baIF*[`$hfՌk.WbR,iCG\XTj"σ;a%Gz6C}j.i}z:;~<+ኳ`8IeJ,ZVT^p'(=zCqLC߰E8j5 o":Uu"x\c`Қ*Ԋ2ɎB0S1mՊa63^tlO [b>+cMEe ÄqAOilؠo:y-NN(hy-liGJhl𑋣A6n?mCNDpfwa!QfSTUDQXл#8_ͭ2*xF9(a<@dKOUi:{.~:/D2L[%;LZ@a| #KeCCc 3z1m Y# m>Mԁ|QiB1@PDXЂq ^-\ [BHkKj'J)l45p;XEKDq a~&xO.FˤGuY/&kh/D׻5zi).yC/t(n"@Ӵ28|B _]K̅s?J&y3r#𢞉4hC8A^L?rȶById>)H*#W~ n !1sc <'x+*cL4hG i▕lvӧZj,ΙHCdDܹr@sJ2 32!M .ߩN[!v|Myo)U.'o)jH‡N en dL{ΆNLti,'Z4@4~-3(J:' (:Qto &([ 642qz6K>kbg Ad xIEeZV HLjYF+uVuLӺ) ` @p^uEŁR,#rgdVJp*ȯnɽd\UuL;Lf.弧d-gIJ(I%C0kl|D!o -ArIC-Oh Hjq[>l ~&Bx Xi̗VYX=ܚ\2iND *q&h:SCd/ƈyFҜ'➈Vj[חl[)O{"iE kfs#j0 Ih:kq󣽯Χ_}8_ao5C"8v21몗cG ,}#!X﷬˳n\"ɩZ vx i<Ե-|Ax>64rѻoN`@Zx 7q&i71roA呿#_4ڍy qD֮~t:}ݻuS+A30YV]xvh} {$| '^D$ʼwTl[X JQ΂tJDVK)m`C:*Kt;3 hiMM!DRQ-0'hB*J4S IxC]3h0jZ :FFSr2<2eel*0L+Y=N%*˜$WԦWd#$[$mevce#8G(- eB{Y*xW S;ή">0~n;pܾ8=>ɜdh !tbϐ2xlPg*Me<$7K7) r nO"IY+"BTazz.AU !ٝ#j㑜؎a1Gt3յ7m Y|.aԌ6VSvHͨC׈gRU+ h2\T^%邽Ҳ+@g3>p6G-t=FmRM0{2B#~`zg3 w7?"/(4~ =Cnavga&Z)X(BN{7s%z![]Պ] m;K[bkzt)l 7ޖmʧ]VV1=dVYOcrNn܈VCUbP+3 I#n|Z8\ ɨy%3nS-+ĝT[.X- g"v1Yږ /%tIKaa|M0*ibڐ\%quLn8um"#JfJ> ehۡHИ ܱ8whjc85Xq&%t3fR@ .g+XC xh0܅.vk9K9[uL"vkNQ5.fNV8QTGJ+!A]I ]Gqs~YG_r*6+\ =z5^^@9zX}MWN _t"XE8j+!CF~=^`Cia|~ǝl?ö~^}^~}qbEhy BHЩa7gf$=>`ky\@^1`Nw \JWFjHb\E=Qnol!V f?qw2L\L͝UWl;c&q=,E-ʑz&TT wx*{Z* UD D.j7b.e~e׮~'Bd*?>ܻw; |[L?~sM|^6axj-Go󊀰("]NjIj w{r*oT Mw}g Kf\% x ر(~"􃿢D]ʀ12)"wúC%`Wߎ@#&U4fh+M{Mr1,mY/F%ÍQy4 /$jdW^ սzC2B+nm9LyuG~,aԛ]% zSh8ǃF%pry|~v}rv1 }ͶpɭĞ[ͻeDx;ChI^5n*w/Rt6u(i7k JuTl̘u(g{WRNa9B0;h?lZ$lr.?@ٍ6D _4 !7@#*{fr4F\* 3Ȧ#aR"E?X[1JQ,h,կ?}xv<1C*api3 ;GnU{P>z#\N9I邮+= }p%x+Ahu蕔zӣb+z$T@28ON 48a4x [) ɥ ))`.1. aIa*D fN؍hv#pߓi봕Oa76d@״EDlmx7Vޠn*'8顂u =(?Q3=H^3"ysI&;j*Ke* 0$Q 'DmF"^4AF!_rDmDM~pb[7@q%__Z4~ͬطbfbZ32$Wc 2{V1P=>>!vݙ}A5x׬'#zp3Yvp<îJk>چEf$S@k442XrtER[$7ԛ#' j% ʹBur/#mg UɺG#}mpؐcyM>x10ӓDOŒj\n,!p1WŎ"q]nEzu"YJ4dRЃ2nNQC6y kq*],%$f șYC84ᷔ̉A뾠^fuNxQ$/2_X<*cK$1Yr $4$UMBN]xgI̔C6{SBL7yLOMfRM),q*3'/Y4?S7Wn(&x)G#ڭB1܀@V ܧH񌌇dsh&Up'S['+1n$Ca1yM\ֈ0a7JkLCh6աӳWZ6TSW"{.$JZI;+a :.g#b:)jK{٫%>ӓlr nQƘD3ɉ{4P6N{s=MxZ7q9RDn-լ,I{;wT5_fuf9V(76m۶lG۱F*~Z!rge]ӫ.yn4y;̄6TZ#Uo0)M-LbUr/tUU4-5l5sN] qB*7/aiHJf:ug~*H뱉Tcsp`UaoMs拠lDx"t;ͩ4'$Κ|s^GIgD!ܽٔKLD $IY.8&@E7j$ޑEEG^~`2URx-%,v9k - EW*wDpH)H,Rֈ~1p-TsO";2pY,UmWo-rr?*q hm_;<3!>ޜ:ѓ!O,a2Bp8-:ߧ(Ѓq lq`yz:[!i='A .)-g{$z]@%c }Dm'w7eYB} 9,.^܀H,;@JC~ ݨT N0Ÿby$sXl3M{%rFEHY{~GJh(ە 64C*z_\C= A_^MxqP[WⴌmE'R^0F_^ru!~nή_._nL!/ۃ:,2obnz GƓTOɣmvtzA+n͇Na}[߬>|$U}pfW*;^˓9S'Son&uǏp8ُ5'߲eZ L㺿u]xT S 8(= oP3T'/EBFQ+o9ϹWsv_\5VaH(3zVn*` N ŪމkBŏ:i@ 9R(_)T)$|Z_Dm9[,%W -c͗|fVOD<)!=MrƦ싱n T lj洱Q > ry WkoΝd5?{Sn o]4H\s8(JPQsT,X~g~-vƙVg}yTb.Lȯtd'h9 )I7ڹ #^EGtEg"c! H4|q[Ov4h5 |YQ]!5 G<|+1UVz}t<;; 63.۩,ʲ]hfo* Tl/΂EQڜ̖fo3flǤ}K)DE#&{N'ؘ; -"oo BC-7i{τ}e H mhA-q!T}B QʹwPmnP+u6frh)aV+uiK.ԵviYf͐,)AA[SFfQw}]έzLw{DT@3$4rtdr1UTf*TaSVΫHZKm>PB&Q`bYɑJzp &nЊx.1uq~QM?r k~$b;!:n:<)v{U#.E`t PjŔجd+@6N#Zv )!~ã|:Gow2XŸo5T"mU5ݞy2Ee HbpK(VD0L̒* f+lm[4EEӕ6ƍI. e%z8'l*@u}pJA%7F%-P)E~_th'Bv b`5H)8P_Ɨgp4%EF?SoG) q>N(PYs\( @ #q(N4~ů%%'J@.w37Hм Q;_@G  ܸit^E_ %?Ē3o޹I>Ebq4v,3gʲ:h#c!1W{N/Z#5cbZ's j dqg -JrQYk#H GWBy iDlb(fhtZIkNTuCEsA+Dak/O)٠"튯#8C)ħbM(ݔO;*QV'ʜ~VyjAC\<+mCF;>U&mȤ=ʎ  ZiiZʲ>س l:,Obsi1CQc/)G%+u皥{0/UφW˜V&[hn[\ F9gƃO ?D2NVǛ"sτ?%@|[M҃[l4R<?!?QuTf(F1O~GMZWHkK+&|c!t>s/&uI =%F\3oeLD'Zx :Aޜ8'm} QJl*o{'11uF"SsHIC4|9Q9p<2542,FXYȸdPJO0|osz +NȺx!ܶpk ˬ( Z!&ZTT{Qҍoc֋b#9=;o{ N3N;:oߜlZ2%S4 \ JglH5Zu5H?;6w2p38;kW ,i],louuu}0<<>'5`. Ҁ5CN=i|ovkǛ_]V3jA/ Ffz#f?xAr(oBLS utL{,]ߙw5j2j1o+r/H]Ʒ'ܢ×f|"z=VUdti *$iʑ跲҇"-W2]T4 ![u x0 tg܀O7gW///t5./O8u#Hqo.O"H{b#hJ\~Ӂ0Q$|{'yZFUr5._l;e[HN.`'m6ch-3?]]~yA$ IN$b"ΰ{hv uuys V ($_Uՙ,nPD;yMbCY/\C{aƞ(!kN)7MG>Nqr Q:j,sz?VӒtQR?5p]aן~ beMc uؐ CUZ *o[۞*XٹKM9#^lFVW`O}$qԎS$-æ5T>)$uԇ()'/"άQ; _T>0ycG+P˹"`"}CW +5hLdb'ܢWeylYnvb:MlWB^Uhɚ-dkbԐ64P6dB4ˇ> :|!cm fλ'4SV % 67Ivs՗0QBPCm34,,+ctʂ.[.ࢯӣ1(^ Za9V-j/ OAÅEHX-?H6 #HGҋ Þ ]7!W#y GccMO&T-AQቆr|zVN|>CZ}X'g#Hǁ™΄:"d$:*zp5}Rz|3O!ZU kVi⚮5@4q[ҳՌ֕JeVָB p7rXsҀ9[ˡ\͊p];kxqr?6>ô \Ie]f\~Acm~Sr Pwkqh/( h[4`H3uT(0>W3v+k62m,홞eX]3VLZJwkE#pCiVg!5s EIVW-7[˜4M;0uKPcq1.tez"qI}xj'gjGv(ٵD(ٍ6+gWo)'&+dZޮ\Hx}[D+^5ΘCQHE/*)۠wl3P ".Aߦ5fȢUEz룑_Ѵ,fdQ4[H m9_)Ϭ X">@Z%}ʹݎlB{IN +uR, [7uᕤÃ5g&44hׇ0f ̆g9"aPbZ \cAbALୢo[r|qz@l-H+C`k1x[3Rw;PA>ȕ|82n fI6`h5\[5%v>>2#P-EUBQP E(}-E o 5pƀaH%I.,Kr?&Tǥ;!Ӧ{ `+=%}"JKwDxwq|q UZL.rX}EoK?6X ;SPp#P^A'2eٔ)maH‰8+ A8Swdg1=I,- { d VzLUpYk*:Y%'ZpYxi#$+S2FF DNHVr'WJC8o:'m.z7:+c9v׋m(d #9nT[>]~Ea.w30NT0d. {>m|hZ6 zّ3ڔM߶.:ꂐ[)rH-0֎iWRNTJߊ-V)"NF]Un* n2*q8WALbz vXoۊ3]iq]--imB2IfYE],N#nF8LҶ| l"4P *Z,BB#'#|GZX&*OkgB.;s~=]:> 5 HˀB} ¸[E {X7@. ѧ hu.)>P( b?$zQSshVt;%Naw9|_ S k!|l($ DzDg.[餣 P%ϸ䫾7_rH|wɋ\ظlKW|q;@E1G\oB^dG>@OH!T$\}cHh!K\}2VGcRBlWt;9C\wzlV)<OFx y i>qVs8:\kcc _F(L eyT*~Зzn^#-bXǪ묖 HJy#Kio"A<;:((򿨓v_SpT5.6G<̀$x5$AUkКp8hM3A I3 63[c:Dns⪥NS$H@uɒ{154msBnڶJMR(C/uKI_6+mWbHA(1KDa1X i$ZGu ܫDaĸ>Zl#w5K׳XE7PlPXX2@NڶAW id[ʚ,&]NVii% Vr 2=g``El{I{@m]kڨ6jZ+8mmZE#XO}~ r8\B4 6_͵C@ zG쯦kj돷ݘQOd4c熓9t;1vHCΝ\]u#.盳${߇JܸЋqAuv>>X>^JaEé ʨ|n!G:EUn齸B˷4 Go=C=+',FJEg?XKpL0-EAB -E#ƿĎLsAWe&J%g׿@2+Nx]PXOD>s7{ꅤ|zK{p$‘RˉJ&@8RA"} C8rLp~Gd\/`B;[{O|k9wpC3A%\20~PtDV’a_._iqc(pEEqlIX4˞r.?ݜ]'j]pQ".^Eш( (;=J$:חHrGHJMo>ɝ0A|BŠIH#@'GBԛetv(7J4ȠDHh`Di87dӅHC} > {3CeWtM r]$ ^#*iDq2j6Db &S T @'̶ B$iʨ΍7]pVb/N$ɴEHYVT+j'$iρR%}L5RBIPH)(&(Y(;;?{pd+/"#x)* >ty2QH9=Ćt D*1侣瑾wn !4З ,<A05tO`^J P2hqݬ&:ڍͦTytQ\D@*fY;n-ua}+{ Bz5* 9%*sF olO]Y:pb{}DstG ( nY DVe&fJjtߡ) :5I7}v<"mҷaR߆#xTB8$xn3# 8MjE ObQPLTDP1j+jjr`=sˬfB5"9:d̺Zt}͈%Eړ>;FHws(7DRB\X} WNQX,q'd[fa;TEo=_ߋ{涑cooO1ǩ{)H2M{,ߒe%ĖI&UrQ$d1K ٫S[w^yA99/ڤ1]-" \Gp {NaU}(Dd{a-g7XC! 5Z"6<ғQq ("KD3L:#z$-Sh(qYiQ{tg.r8d2U9q*"Q9_ Ȭ -*c#I ?_]~0#cԁzlMqox@=U4'3+w?Ѣ\#ntJ 9qq g2JWM^ Z;DlkQUCĆ `(m NC|՜p㔉v<ܛcn,yݾ8 /QaE8PXy[&)CIxJiv1ݲQ%l~ltdZO~(2}x} W䏉-`KpG> B85v$1 |3VAO-r3dvZ|Gx>]ɧYݥrdS|]u=XzYEsRDJ6{t?Q?QЈb3!0G͵:@Ÿw%jvXLU@_x)-Y"u]{HJ%ڷT2UUWZ A$(*f+ZSۉ8 q1 mQtoʭVyes @Jp hJU(ژ`s㛐Y(_:yFK j_0ǽ'M/Fݡ<; WAtwBJopCC"$[>th1^ǫ_pݣTAᡉ~h8Jf^PNȠnAYS=XB|k^y-'aKؖ!?id+P*ғ6L:mhYzRتA2ivg8ɛ> ϙړChVj(qhz˦i4aEvܨUD% ;A섾Ypڒ4H}9PH&img&ȬRuÕlnCJ 7n]jJJpPރȉd2.Le&"qMy9>R:cHYCd2S5uuDK:(nL c}Ћ4[*G_$ㆉ1K|-3QJo~ ۅ3->IV,N~}'SoHpz׷pf7sP̛o6˺vqqAK8M m>m.pNwښ8-9nEc1lTā_ \&͸8kVrVpe#F#k=QxykŬkMunXC昣 99>fme4| s&X>xT~>M6lQMfp'b~wl8Ȓv/i)$DJ^ H|s O M@ڡԝ0o@8c85n8X $"6CȊ CRa<$E:*+ c1CН'dO2jPC`CB*A\dJɔ*󢩛d%"pdfobn 񪄁&a2OA^&6]u%u5&m7A do49!We)SVI X !6X\'bmd-^SdeYapPruguXE0Y2)'*U֤wEF!3Rڥ$k$EDD MG3IkxvW)l]7Ir㩐9+XpboW)R K Z74,Iy:?b|%Ī0#dF+hТGwQ ^ePA{ UUvk "ŏ9T+bVj܅k[S3B ɍ7B4N r.m1S.' ~EQhn3˶GA{QI73l [I2U 4MNAD, 3upa<TdNYY> H^deW>߁[( '%Ewk}L zMò:qQ30FzBta#)Lk;ˡ`hE" n~ 'B}8aOeer~,SHc/䫤>Dp#9Q/=0l2 `N,/Q`vE-4 KIH?xMn<C߇c݁Y fkאqR/| DHcgQ,yk._{3?'oSwzѳɯh\P#}x\9͛}nPy A>K<) cCr=<>0'08OU*Dd6:XW/4?A9C˷yz9 ?GPs@~A= d{ta'I'^8n_"Ү3Zu2[`zGt-<b\; r{$OFn0e0wzy8&!Nf$ Υ¥&s9;i\a5*?pgXtٯzӇ0E`|сcäE?t"Ɠb^4mJ)1E>_)X "ddI žFRޟlRiriSH S.!- $dp#Y7"£ <9Ͼט (+C 8Yσ>"R\in.IxyQy pS5ˡJ,LfTvq54DQAGӓ5K{*\\y>^~[8k㤉+dOޱSx\ 緳1N#NrApOD>VO@i dR4[ /zZ9 B1]c*GѮgGiYU [pw p:{:/NEhvm`#rtm/BmHlr!}$ɍF4{.UG%愃I^ LTS[V_ $̆[~_ Jn [@ ,ܯ(^ LMb !g}1=Xq Ls i8$=}<,0}c5W l ~w-mMzMR`+X2 \zF4\gA$s) lJx,tIEp#_mwTD_(lB]Z3xp8-#89Y+7gV@4HjrF6|Q͗bWox<cƯD~*Xn0Xq5bd*P'=-)^SVSW+xYN 04ơNn-L +Ry;OНcHc[=䭠2Z;1~Y\pk*zu@㮰7\x)1˩ J&_ӣI4qb`N -2騫3Nm=Eӫ&OY,{y3 E1,I!bH8Hhc(ͦHUoyx@v |g;2;2,GRRʳɫYG%Uf%TӶ@>6EeP3!佖c]4P}3э{^2\ˮBi5,>9_0ɲ]> fi+O<^oE8_d^ A n<_ۏdMno60B$:+3nj3*ڌ^[6ߛQ)L1Fz!0jq+ 4۴")CgG;xqG 3+1+&"G;K61RG8w`S|zrVtרC7kǼǼ o-n-3ɠ`pۜ_N _1yƍ"Yk{Ttkbg~9FbO(~ގńv_׼xXntIL@Au[d{AYzp/7LT-0(:{TzCZ0lJLKS˦$=Ԣd@R5g5YiIg/H;zSHieV)cIGiP(+V Bh$+}kjYbjiT(Qe 7U<Yk:^C;]̷zlF+Uߖpl덶)GoWfO|0/ _Ld/ÓjXA}خKW-; -N{hGjIIi%cEVF\/P$ lTa˰oThC:P%{H+zCes-A;To1 "V<rmM4CFAJI UyOf2%<$цhYIjz&2Z2H){G^[U?^B?%&B06Kq+I;g 3@$*+n!-p zb\QWBWtfFg B6P;{H#= jrꬌ59w}ёU]CfT4U@G^2?8st<9ys=@nM $HRD{G?!;kOjpcy{j]~jDbUbGCX:MN>z_G''k]#" GCYߕcJ}zPNd0-] #_yYvA&7 ULRrf{#u4-Fe$gO>_`h\ą4Aſ^e[$DtjJZ-twȅ'z3V6(~. #ߤp Z,=i=Ԍ=ȠyZo|,Tr%*>dy݇$'&/JkN:n]_ "rlii=7w>nT]pyǾhpj#rHKWqviuGQԗr$_ȉ ~({!JY`+ $9>oC p9%BnisZc9Q5xOȚrPzAO pA^CbN5,(C GaGF Ǭ`xNM[De6jV=ǂ~RМ4$4N $xotǘ8EV)̴0Y$*q-j/0ǟiZB+vFɖ"*Gg~K<97ȍV b'P_yS #EHh~ [1@% 覂5x\ j-Y%[|=C¿䂯h Vt2!+M~dW[*pgRXeO44:E GzkDRMT/E }=a՚z}՜0&dNr lr%GN{OX824рd T6J (y*ClbJZ~I7j/_勴PY[@j|wZz}k]IUYsD҈æ"ym d"SMES1ް]CyjskI0&m> gBgӅlieÅ-r-ˁb5*Y~QRxfA^eBx-J[J+b`.Tt\K}SD% /P&gnғs6Tދ<3.2CAmz<v6ŏr.-t-#`MRU~b$_V3e }.PLX |$d%# hP C֓`@׹p"dJvZB&Ŋ2RF7_t2jB!rDoa&YΎNRUʯ#>\`kC˕7K'c q(6ŢzbRUE5IֵXY~]!i2"SYD8 y>9 4~s6b0cd#i :,$}M~E9YVŏ{'WD/KDO&/ٕhVbM9iaРZ U@hn=<ëpa_ (\(1Ǐ+\'Z@Kմ$҂HPޙ5ۻ<x}?[.!YYLiLK%5W!i~ @=/= =GI =nC_||ߗ>&UGFJq0T(Ki+sTz7X Rk؏`XJ3YqOdhGk{\ᅢ?Oso]_R@Q-Iz_&B&~X-Upʖn֓ppF*]nhMYJ[Kx D#95Ly:d(q5] A:n؋.ӈEY|C0=jɲNG vHZMr&*@]:$ VNǫoNoIr ns9hRp_RWSDfH^c\BAe|t#&Y';A̐UeZɬ# ΠgPEDgqRTL=yur`M%k'_f "4IX^qN *0jf<[|ÙaܑQIE?:)mJۈ,Rgʼ>G̉D+>8 [04X<"fkSR#l8IeqyÝ}hJ)YTE Ѭ+醢ìF,VW0.^+o3>^/s TJ%R,XvW*=+ϰb%4~Y,Mz+3)q{z9dHY'nsA/&f%vs)DIhbڠ pq+X!x+#>TU>b<uBQ*4!-Æ{QUUa[i Y\¿|A5ku.q.ȓN*jL[lVu/ ^d1]ob`vEM_ܤ,CD+Q&AkD\B7CX&av^";B(v׏h6rm1G@>8yob! }[blẌU$EzrLw5<5')í>sEڐaP:~P_m:+6\x#.} W.͗>AN*;'#zxܑV><ĕ.SSR,AO|?%c[*AINѼ4phk6?=;| Xm9cx%lFTr\}<{4{~Z͎56)J#O̢O'Zү}#Ʒo[5ktVPU5)33 T | -" \eS'1R]u4 @)YSrkPK /tƟW|LeűSψ7:Eӯ7AfKdw*DD/VSw:l *uuӇn^iсmpe)Ãz sZ-ʰ9sJ"ExVdN?L(S4 1 _3i4:AYB:GyuLF3gqYYwRF Ϸ7vѢoHN Κ81;)NHN@K+ [_JgrkAr[I^`r3腹'ܗe8rx?a^w`Hzvc>Wfr+B.79 rOhM>Pvi~OIniCC6J/V@+>v(Z"U =[A ʉ ɊMljӛ 4fL4/k\勤h|5gU/֖^Zr#Oϓn$Yʖ/LvQ̌"fs>I,P& $0MgY0\R9+#cIN!!GH,rgHrOzkH8D֎h2Bz 8B!I(9#Uj ~˵_qyT陠bO/][% 1t<`IΥ;ȡʮ{w]ko5?@rٱʩZeO3Cj1kP=C_غj.$M0& adM&>Z|z0;OO2,6=أ.1DB$.Ϗ| WkC0]; -Q@Nb<0)hF?2rf12& !)5,W@0ח`p0A_>>^p ~?{GW0}\_^DghNQ ٧g/??h.>ܼ -R@W^f(*yrB:t pT_f=xMtk< }9T}&(@jM6)^7qD!>GQ:|9Oû<>y9Cӷyztlϑx6y/*>/6AԮ_$}_ jŘP/?C&D Q!3ϋ0q /3u2[`;ޑ;Zx3o 53lZvmr ䷖I^x@lŘ[fiD䭒HfW?"*%U>iWnt|L- Qy"Kk+%8%Mdu+n<$ɤYBb*-$Rhg1+MXn O;J!ǽЇdiL\_Iz6w䔤Oi,> = ˹0Jx`~AuJh2I\ DuA#"R?PYx#'zHS?f?g `ܲY[7db>lL,al{jF>c%<2k'=8w4_T @EtJߎ$Ԏ׹)ήd;q҄_r]L?.ٹJts =YLyJ&$k&=S^\+~i,ʓUʳƦKӷ[C󷟦Oϵs36 9۔եhu*^ Qpy5QvMpnS4Uzr~3rLsY tr19MsjZ[#w4''WWW/~<{wy}{{q~ ~y@ݛޝ >şa@!JV4|@Zw84ԵQC(r =PEz2Z8POyV:NJ;&Uu= @\,b+0Yq2}tj%o$e -ߨ/Gh2f 4(mluĔ|Mŕ'qfrJd&o20-utgKϲ֒i֒oB7=ae}u5[n, uJImek˜ td!0 @7vZ"JP6 /Ke }50Th Q\0Iy<6.ڤ[;9eVEWj4;II}Rp . #$e$e>@ w#l;4lYF0~5:$n7Fs7kj;<>08ۑhyerw#Szmq˒<Ʃ;l}y\97Ve(t{ԕ`s8!nI%l Txpm_1,#nb'eŔW.Uh ()fl"Dk7> '۠G5BM/SAjAH2W49?VJ3sEIE&ThJ/dBݕӦ2[h~~zh![MH^OZ hA G` ],LٴDi[@@%/w yl-x)㙇c`@_?#TJ: sOWgR n]3(y&# )XWt^PjߐTPMW,rHi^gC2RڡnR p$$Wt+)˅|M@.%RДQߖL!Mgpٗu+{Eydb^Ck?<;i"<0x?ڲlh(i(%pRaNq}򺳯~U1|6^Mʴ3Au :*Z $ HV3c$蟧?)SxR5'&yPC# mR. AjZdD{X we‹'ĄLp+8ܿxq22Z)&UB6ޒ#u \_HGzű$_O@]^\ 2C*C@:}A_ .ԅƌ =qr3]'dt 7r"/S<:R7e l 'l J80}M趱"+[A8 ̕xa$erRNrTNnKdcK^}9.3|( iru~k[eG#kS#֓N'VJJT 0R[fyiaV8vL0dG̫;)znn_JJ(=hm]h䜣K9ǧ*F*ixt.5_Vx ӱgjoa L(ԚNp(S ۂ.F-xȉ1li"*Kj1"Hly`meZ'z۷ D ֗7lݲx @|wUFX~hì@fUzVZh&m^7([+$ VXy&Q x c#37gEȫOMnAHxkU#ҺgULP`}:ƲnљfLt6֩hvPW8i\$ lN+ 2tPͷĐ脲PN@l^Z% 1GNSF'=[1^aeC̄CPnIK p ǣS}Ȇ{:VP-rS"7!7%Mh1P"3W8vm*+q{sGJ-K/R0 \Wk E-[l \@h.t6KMVv9Ժk#z¨=Xݭ!Q4Gx(5Wwo\*zO2K o[-(^%P [(PQ߬v\\mc9zR~(Y @$(`+"3d=[ON_AFa.\[­tavŷ+P޻?H%W9?T?NnJ  HT+v Vbux(e(J&2oۤ:+2iެLt^:yX.K(F5ۑI|e ;/ T굂K1E.{GAo`>#8!{ĴDym֌}T]gLv^2OvҰ^*wdapL(3jr;vL/a\C)ے&YƓg jHS˕OѢKcirL4AF+-I/~ȉy O({“ٚ>-#Þw7ǙmL. ITVʛLtuy ]ו?lZ*M 9mrDVl`ky5l WΡ nNxፕ/.8!m+  @Xk|,[YT[֑1<Ϝդ҈֮LWJhˤѬ%bNS&T;[JZdɈG::Jg3k"rp@5d hs: ,RlA82ð6 &f֨jZMZ c,\Ν&#[cz5$fp1"C$*A:Ƒ!.mwnO;t^a%ؼq>ũF-[Hh:-< XȚK{/QEK0-y' 8ZMÕC*-lJCR03k.q-Ƹdcۗe=&u|Yֵ5"@~5Թ01 -n2E]?`PqpQmLUkՏK7)SA}vQ6;ukj,4N r@U_L:5) Jk_^};&+1Z;klmEM9 ~]kwi/Jtg4Շp5뒦-L3LNlyYb|M\\ c$;w^/(/>G ?PlJq6!ylB}+)?gg\.**$f)Zo`țrɗ|$6\x+4[Osmu Mi3YI8-d=g2//е⫼p[鑹mˏf5ʬ$AkUdU4NnZ^$Ib1fלИ>+-[m{q {^ O#E3B/dwP -6n~SnrcS%5l(<*3Y+;vc:Y\]kiMcv-fObBB_H2e`y>^:k"2'R6+%7׃HoYCّy=_9F xoRfYhLVe)PA7׿UVZJ5Җ28gC(SΫ?j9aJiqnV.\"Mk2iޮNu&Z Em* Uj9_g"mBKMtdMQb dblhFj<*1z\pB6 %*@F5C*;|k}Q'pξ9 abrPv."oU[T$6T˷"J; p{ې?p/5İͻg+o/| rڏT̚l"hKZ*jMHەʉLf9I`/ڄk昊h75mZv G-eAuG^PwTGEBr: ;;f%/qz-a8Ծ"ȠR6*9IEX.ڤ"G[qs$a^S0: {nzyF)*Z[QVY/KzQ?>JWb󑐃@LNױgf} wNSS(?.Wޑp:Hh%=d/dxR G}?݆0c(%Q?D_g(^"r"Z_AnE !zJʜ_Acf='WSU?2 1M|MO:B [? @FKږx1P̦m_mV., i(|XKAt>nlR@?IJ>*Zb r@7" awh2FyG* "A_D0tn~aӨ,Nxz7qSC:бTI~w;x}c]-Gyse^߳gV*E+_ NGdpYޭr6NjTkE7}vP&YoK- +|EX*7qU k77@{V;:w"XfGas:@w>0u; xs~rB*Kn݅<8)sy?^UN*j/gi9 ~9KsYsn ~NlXX9qY|/BNDE ih:e|U@1kIg䚶$%;| (yC^}^A62@f%c6ub7cIu2 )4S \*s>xb趗܁w+\Nt4V_ %z!V %%ߏB9oEAyZ]У4#G1q6+%G`q&\߽}GYD7Q{֕i!aE`Ns;c(γJՍv0N{^:N{^:?g:D ORF;ILN'ij{j{h,"qa1( dd#vW )sE%.zn6׃鼶H'n$8TnW>^uq̛[>XW˘4"ۡh!j6bϷEOfGEH穠RtM0 }j> qÇצ<{Fk;7kPɧ$N)7-/pV5;9FKkoƅ3;L1OL4${N3Qǔg_P Z֩x, ed=,bQD~.1 NcV3 j`wSO5^sSٳ*TR`252hB4p5}.DnH;_qi?3I IC&럒V̆l㯨84,b0$/ÂЧEǠWmW +~VԒ?ݗOpڌ^6Jz[?),L#8x nInp>~9tY;nȚo Z=,PÑQ4EB9;)BLЈbGC(o 5h ɈhO$mTεDzr1!H"hN:a3GԳ&x(xx@=}r*ь&_rHG[{b︞࣓JnTrTrIұ\-t RWҍ̀E2 LIV\vų>߫4y( uÈSWKrd%XTeNe rOi#YJM'_EZ;ވU,%n -i:IҫxJ[fiȢH6Gp&c߇ (QĨlJma6Mu8J`HGea4™ٲ}%?MWb&.E7ő/DM?&:ίXwT!MiWBR3Vl)dۏSհb*ɽ<>Kr=Anڗx` E`y{}i{YHJ~M甥1id5uϹ/f:;ayroHf%X^ H[7&\X*W~?MXwx$?cN ߼1L0OtiMʪ87|;h:+R(NKOTKi })80в)fuE7f-kSQMǫBr]!R vK߫._VJG*SYW䱌ɗ6iu3?Fȷ8.BL%g:Ɠz0l:eW ?.IJ5f\׈_SI &]WʨTꁕNy5uP;z2|,;oDQ1Qd !װΓ`7K12^4.ZY@=nv3w7Y-vm,NAiRoxr !.D8~X  ڷ i *8_Ƥx@,ĔRDxIǴx{ ..owQ|  St+q)RTC Qk9?_]~/F Bvd2@#BNMd9װ7&mJ5%(_JɊ,r)P ˊ`P9ѽT1PX:&,IyyO%J)i *u%B%fŰ '!p%67$&s}=ۓG Y)hS eI 12HSpx C_BH/ R& =[D0j3&XE|&pop,M߂*P>#TZyFp3gpwb@rTD^ ?k\}iQR-ʊ*a܅PZc͇{@iǜS>5G/ʋoO#)d{Ht=+ p/kZR%O"m\^C( @ Ca?dd:&+MkO`B= &>&T=&}tE? tz7^#1~N}k PS6[p!\[; ߵ_;ۤw~J 7ZBj4]S;: X 8r~ X-gϗMn=Wt 8) %\dg K^G3y윽ĤKz‰xyp"TQ95m%nwkIby˘ y+Z"^? XO_fL5?O[BU#pLk&Вݢ/ }w}oX򥔼7x'kIڮ`ᕎЕZpM+ W->\< k+DP %]Fm  6\%E) ߵvT ԠI.EY ^^0h>Cka2,ҹ7Jf !ftuq6K\Y6e\_0O(dP?;LE.Z|+'E0O Pg"L!GN)&'M†p|S̗d)GWR gAx(8殄{BKuP^gᚿES8PI> q c=wFxiM.f|\btEv9Io}3ޥeqr@y7ږO`p.),1I 'pO!̧ܸ픞ݯ<_zɚ_ Z"M,@3Dc o[,] _@B:rmH:K|-),Xm>{9FaX(|6âC/eD"'4YZ.5^E"jP2sh:gV"] qLXa3 ~f;X3+0*CˌL3E 챜X7!vƴ٭E'I ä>nO)9&4g(F) oGꮚwCni$)U4JvVAt8;X_y͋UQC(SVSG(V8/LLאyb80=Jqw/}Z`_3=9HIH_f8Qy 29q>dp1pn~Y2B|V^R*.M?ZMKV@K֒S?@ߟYu*)~Egg(eNKjR6*~<\'z㔣ӞY6>5gۇNKN>鳽lݑ~ Kl>5L;mpvIi/V)ZUxwZKN H2X鍌ϼy8r@De|>Ou<`ZTZ!jɕ2sxra _04)dI+5&ܠo*B{ WuEo[JAAōkJ4*iT̑YO%GB$׼Kq#WU߭hGKŇ jCp^,f8Âp| H|#&8gIDC*n)<qᜅɊzx؀3j j۩Z lP6t@`3xa^Vu`Qvf~CzKS'qljȤ ju&ʰtv3ָ|Ϧ$_ jAAlp*%ipaSݮFvdnfx8y篾"o74"Wɯ&pw2@ G J׏Ԉ!nI7.#ުP!@T%\">q@;ꗣA{[8?R=@48-E#5Qn&4lr75O{I> yh^2 c64MhDUۤ eͫhϐ+u|{u%Ii%/-O?D0iQ}Z踏fXMq|NJk9v^ſށۧDc%Ra #_,1qi3p#'PVļÜ"Oʱ'[.S+G'y_h}AsKZ8yM0`h-ǓeG瓮D5M[{ďS ,I9'a'Rr ҉T 8L>JJd$`` Y:'vD4ĞF*O i{U_YPNj.6ww - ^[OQWF1~'J.ttӋ馇Cml9;Vn|J݆be*l>kش[Xg$(#bߪی@^Б퉋JdS 'lClJ/#)Wta:F˻|B_Bj`2iꏿːgA9/d-(c57+97*`$e%W7JFt;frgje 'iL X45x\18q= eGx-ŵ~ sI_.6sih4`"ztnؤ^Ay!3Aoԁi^ޤl7.{rkY;K5acWQJg/N` \~ATJ+]9& (;ԉxLgAqY4ϣ~&RM Ź)C"? †n#iOOwѰ'x4^xẻd93ɩdÏ~44r2Z ̈9 7}1(8f:3_{j#J#tkq}u*OI,`N4W=kD[g˚?vt _˰SC+m0|Q)v!:+pKH\Bkfs>2^ْR#HPON2z=D&W)ەݒ#FI֗XmdP$mZcH$[`7y$ ㍍8n$ !jwPo)#Ĥ[IJ"TbdYB RVMOfO1)dOh?iėʌy"vIB zK} b~VhY 2= *ДCӆq! 4>RV\!5A #Ԁ75Yr<73 qHNdl&G1 F9ǒ&"4[| ѵ/nA~ZG~' btP..an9l[`a>̍ MDlA ͅI:էËKvR*mPHɺ5,VєK#MʥDS!`¡D6ب 6z?{o8Ss=ygע90s޺eS!I'ju>z7˒-1sNز,?ڒ~k;Ű>B/N^?_~,,d㝎[&!NVrrV^r"fp\g;NҐ4UڻˍRqGB)#75VV3cj)еkJ~J`.!VkRJ] Hx%Ek_NHD "mB2V[~b2bdAUZFQ2bh #B,-#UZFvNˈQyF àxQuJ k5sْb`ܲaluۖ eè+a-@ItF3`@[FQ-@(Fݧ?s3&x?a"@RE96/S ;:ȯ$0y;K* LV^Ӂmu]O둻E٣2KXxm%XeW~ٓh)Z/Ti7t M_qUV| 'N%I.zo盳k?E3 k/W0tzI{i9en<b*|{@ngfoΟګ|y)oQzU ߋΧ`kg< :+D9A CaQM𹒅ŷb6y׶UL^%/@oZlPgLawlJmv{:Y=_2-g=?PY~@P% f"Hjj<8üЮDN1 .t . š̋'ǟ$*xtN:^WGR[g@ڐlڸ3k&<7o_{||ad>۪"xݲGyvJ% '$PI:4 G{3V*A6ϡÕT% [>Śk 爌.ϲ$񓺏HA>H܍r(g>g*%I UCQ7ymGb jx#1cr#j6_6 &3 ?R!H~XO-ŏjZ, [4{p I{>MPRlPD2%dɳ˺s #1lRJٞk Uȓqdoka<^&:N%Sf'Bs\YU2qJ(:;qTE0u٣sb,皘>/'>E=q+9Ou*qJ'NPNgG8C7BB.O9F.)tG6qQUλ6J\eG* aZZGώ̕Ps`K;II0?!ۣ@[a>;iY]vBwRn=ŝ֎"o{>;#vVL3[P68&aSpgߑOx(#;xG<ÆӊM̛0RcR\3cՔmҦLD.>+r̡tA rا*L]$8tD ՂR4]A@tRjB>pp+<L lUx(Q;;jYjlRx(g:)t9Z[*PClMۘ;u[ЕGĶ Y}@>fmȦy*fә$|.}rN*.i~\ JtHe:maž5k8 !J3|̄T.Z\X S fC?a׽-A[?u*<=F;_ !}+A63bꊔ$5O cq 9j.O/f /Ov@]S=M cXNM BIPT>,I0QKظ3Xe`;B38R %69NաoO`xHDĵaVwՆ%sc@:FLLco@:7rIDz n;xcDIAv;u>pdϋVaJ/eVdۧTU$c /6 D^$9aI$Iqt$F*azP .r=XwlB\Фo5N\Zo^Haa<X ?3~c8Z$?Z5DZ/  Q ")AUmiBU^ +ept.k™pvD>H.ODt)zDmS߰7uz?,ԱH'ɯ)BuJiX,Ulŀ0Ǿ(eGY[lOͿ!( N-)@M אt5,ѫ+,U\v2T .-cox`| .;ſ.27DÎ]\Fv'^bm^8yIL ZjX l`Cv% -7`@+ŇP&"l_}>{8 x{>vKh ~y=eP&w ]z+ڢQdlhLf$QGMFf>CVe:rk Gl͒` YP Z U|Y?䣔*y:_ çȿnٶbk)x$y3Lu|/q8> {k vN]0b >cDs ~m}X򬋮9FO:,ʎHL#yu)<+ |kldxi1^6 7p$Bֲi-ˆ=y$/ ~_F|S'I!չd&'2m >}>=]9jR/+23^_X1ACQ#ȃςUef-,ſQ-DQ`? jKkn TFgUx+2iZ뵵^[՞W0YYTt:9:dNޤdH؅kkvX:-MԓDmDfPѬYtAY2 Jc+8s2Nၛؙ2) :H,Uy9YS9x Gp +Mt~# mЧ˙p:I⥾ʇ$]RD:*o^sD^X\[(UNgspAtWFx|m6(E '(QvA: 1G}Azxr1` *L`=:lg ኝs sx%.J\ !k4!+{%hM 1)Aj,`!ṈЖ8qhF0U5'8OR 52Et@褚Ghnol :]dI~B~0y$Q.l$G>-7eKugXE=ݙҤL9RM*_r%Twyl!:&+MLU(7n=CBg0]|1 ):|=C>bfV3ƕuڀlT;C4nxIZHJ)M^7KߨN0MH٦.k%?K7ЈR/ V2UpS&a=-3gmof,f-4k2yHE)y]-ʖ k;TxDGEnN"N^f@WX6]zYpmgfl %h\h`[V0n务ڶH$R96n / І79H;,<=YC TH p5rrlQ$wetA)@̓Mk3mlfJ]9{g{v3&t}Y=߃![_&%DWwIW7w~zsr`sq6\aNa.-k\[fd;nRfsϵiJ&jiF fͦ^g߿pBIKFl <d P Ɏ1X~4=u)IKFP ʳ@pBDQjRNUiw,;4b+`62a*5fҫ)k@*ԍ0[-qZ\j@Yeò9dq߭ـ xnv EۭfbrH`iV%+`0FD6m4*[WWثk+)S,'5XsF!/sT{ll$2md[x,&%X+YkWFP6JɐД6+e @vtx"+Z[ZM'18rRH-D𵝆.^msT &mv6^]ճ*]ݧRBeK,&K?5ӭW]wv|VKQ_+d軛cp{l~5{m`2|ATaRxvɯ)_LB~ 0L|DO@ʻFY<+iCb2S7ph_팉-;Q"qr8ߡч^PqLDͰqh:]fJH։߮ϗLfOGEPy>ݤ4럛,1K<ݨ9!EgڎgC[e6WkR]z,^`_, Pi+$_Qp('Z0A2G)TƿxeG>ç'71cF؞*XMA_"+YD(/)GVUe%}ӁH^O^oHHOII wK͜t%^1T&PyY ?ʨ[|Wiߣ;>HE _fOV;LhE~()F P݉4W@-zWѨ75'6E$qM߸ ~o1yA,P.0y7o ?2-|>JLQ ZgIg|)%Aכp1Q\v_A@^7k'z]죑̄ žJ!Zxͻtv'%C=tXQ$Qa!ࣿf>:=ٔ1LO;pl$ԴgHŸ}s QSHoz/ԛiOK{OMz+a$ZӴxdc B*} !{!+=^)L iWG:`yS i]X{h>`* VNj / o2㌟YpfuF4f/g l2K _K|_磓T.J1>0xW hxY!t#",Yypڬ,eZqM12|7S|d Je>z˜4FKh*+YlVi'`6 ]TAHpխ|'KtA RUJ5Jn\?=]8%cQoz`{s?7;F'O%™I{eJ05w?!>}fX-XVMז9?PK%w>Ň]Å;ȵt /AE|*ܦc6hmBwl툆>ېQ z5{%kKTٌ ޫ9IT-iJݳlnb{Gl Pv0+}bQiuf6ILͲ\`H +=p(T=LɤCOit9\W!&i%1-Εj Ǜ#*`%5%S5"rp9c=*꠭SwIj7*!;n/˚Gmgp綴wJ5lnQXO]3ܬ LOǂP [./?JUD% )e<^=.J?myD5ސ0x7%3CPCt^Jͳt,F!nsC*VK|kfpbΥa'MuB }l@Rkdlw&1ߜ^1Jӷ!,ZnEr6vM taņtё `G A^7_fϺ h-j`6U?P,˻dQzsyK6ZwOXʬ k*A8Pq`~|Y_g`uWU^)6ӣbTr߂7SIrY{ {~\$޿uRgPGH-4ϚֲXyߢKsD \PW!Iyi{K|ͮ;a C$Ju~\̃=tkBBҺ)e#(ӳLm)>Tury4e o)X51":ųr˩̩ [lX+h&T &y|.\<̛SSճ"@md_O12\W1-4+)R^Nf.kt|&U¾!^h(p%vGU\J]YCMVpS#nHɊeOgwWJJ$C.mTO.nQsGx׷Na@::ekfN-Ā":ι;CxLmZqpp /6|G~rkyT6m{vzm$1$z Dǡ6{^[nG%&J7SGIOz1=Ѹ$=_WyFR?*CBu4Xv e |ٗ E/NU}6Ygؓc`6n6z!PzWs5ŊZ龶W eה-ѫg?߀7g."E ߒkL&~w==AKWn:127W1+5r[lߩ1?1.kȖwlcL9|]]ǚ&;;Ɩu-ݥɞ챔i}j[7ʺжpq8u15kDuԚ*m~;Xi·9>B}]sj-W`%'hCJW<ǭS,5|P+N3=gFL㡮q!zS{K[UpROC/2bRYý{1:79>BLS;.7IN7ziorWt^aW{-c/ G]jJz/a~X|#0(qZkx0%Ӽtieˠk;xOD%QN*`o1c;yaZx Ob{$$qLD:&T)#EP8 (|_T*fXa={ :d.B9(ԇ N,/'iG#w Vw.أA+ dCmp8 [hv qd[Y'1|HBqwZKBk'в+ˉ,fm@;9%uKazoGfֺead .q" zj1mkdۭd]kH􄼺ǓeE ՈIu)^Q!) Vf Jva`;X([ntW"-. ~q]225_QPx`L=+ΡܝFRdN{ʼn֍}fNX}I Ir"8Ë0UϏ&X̿IO7._`n:)Ms)a/_଱x3}F *dڻf~!O·_/V+uz|<ߌ7(i=o$Yѣ paTLZy>۲?_?|X̓诔' CቋI@7Y'i!+sӊyL1OVl<ݼ$=!+rޚ1t%z?[.^l\ 0.<;߅Bq;Is1w¸%\VcybQFG]O+;wI#(TyB^[6}$FqjBS==/`cq"VZhSp|svMB) $EaF[VD7d&Y2%M.P}e cqF-LZ UF3+(§`A6=bۄVIbsD"ET$[y,5}܆eLB _{H.(R'lm>WW>aJg)"nhxx`hO}:n+ |JÔ>SD%lцxLS*?D! d_n>ܵ Q5[`zF`"I&Dk\Ƌ~O.>.d tqkx5x3*J%,Q+>_*o{6g׷vk_URdOQUځI2}$/JXN]+'Vv$.[ᔺe ?(5gcdzl?x~Om ^R%z@S&GUS,>$oUV&S y0WDp=I*zNk6p66ubOO a}rWFna(jT~qڟ.fߘadխu ,6 eVa)kUKnZS?:O4#NLAYq=mA4*cm|{II `{XϜ~vT(-Naiꍺ&Y I{o.4$.%$2^"a&p$Wr4ff' JKKd4W߼,]{x4“E0 -K^iSh/ k AY^t0Rr-n؆rPvH30}1Lt&_w-n^ơdi*J"~L&x4ډAc5/%0(rp^LCcAsd{ D8{X}/#׬9Wit==H/5 ]y{TKxC毂v:I\!. ŷ5d8x +N:dz"OĮnr[T:Xa?nX@Y Gufgͼ@BA,Q$b-b|'qp?yx<{= (oB6.gj6Ky8ڞJ/I0׎gNa7L.-ęoʜhs Ǯ(turvS/[4 \VsTڰ,Q5=\*z^3_WCp rֲK(:^:c~^8 *UD꫚s2=NuQy\Bs6lޭ>*e_rf`|13-4h|1}?(|L8[J95Z40\h4YFMި"Q?s1䍲x 6zy9e fiT$QwG¢A?k66l@*ɓ sT8+,ɡga~+ r5 VW`lߴU@CL#> ψg;7ǟ2W.5FbK&M kb;W);9@Zxksqd\%K*b_0iMEkj2zkẀڼ> iH I?KB@໣lp# k5zMb?c_}N#M~oȮ.ߐ^E?^ŐtyK-yvUng1Zҽ"`f;*w/Zc_V*]CK b$/E/"(0- F!x+K#\Ԝ,%CWh!KLaD\lŐK/a)9n8Phcq2,9cn-u/M"V[^ld&9:3;^S{8k0ea9jf%ɓaAmUF]%l"$> f] [kz9-6d#lX+*b0<F 2(!B~GDx . FuXAMX+5y>C?q4߬tBV`>~AMbNZԡdWa3C$fw1|zyY t==иEYL-oƠ?3>YeP}qߘ2%vy^0ז8yѽy,vst$ӼUX*t3wN}\GL2q1^R[,W@z9Dl>^ٚ6U&)ʹ\+[O'uIg/uͧ@Ѱ60rl9{ZdEYe&\~c|F|k2]͊nsBeU# ]|Y 1$F@:Ki:zzZ |4o ޅRULƠr7-}7%y%PL!20o[([5BɎw=pwX؊c87 i餙<XH~?J;}vjF ^aެ: )E%}"1UKU =w:{}G<(VT[QM$J\{Nby'blWtw/L_J$(GH]S"3ol٠uc(G wzM$[ʹe"T?l4rdRM4mTM*s.$sݥoHwwxfKKzZ`)9%ZxIͯfl"@KJy ?ŏ+"WcfGآ8di{%1co_!yvgY~%l16ױthq-ZJX^J7/GtΣ?B Iy;sb_qW8+*b3ӡdYzôWaa[#t`;GϷ<ԝ  ҉i{-YTy#- Ǐ5O 5aAX# ZE+Rr=w1nc- ڶ29s z2\-ᨵ,mUE,o|6H!A6IqӈZ&U6lHBEBɄ9hfD, L)U_ \ pX7^;nVetkބ\ ¬sJ(^;V%wkYKb _i2;X tCϚfKP!YZdK80Xq|i.͆9_Rm%* md}y U5e: eSk?ÿҟd EJ>ODz=AeşRa'+dW'1}43eBdVii츱3JN;ѧoagNwUKOŷ&=Qݴ$aG ba4SǖER KS6DtU_-(#}G/-iR$qsXe F;aw1&!eH\ŨL,7Nd)n"q%%P<9Ly\Φc2 zX-"f[}]?,_åar7џ/SoXSL#ySR[HR :gj6 ֛nl*^R5zPN6[C0uP]c6'xG$PU!yd>mNiZ@o+ #Hx}cWh uO&`^nے7%%_B?k\dVI_̽ tgX2 A u xLa#~";x\z,U(&?6.Q1oikd@P4_rue,Ѝ&&6֊[Qp׮Af^<…1SpE.oz\̃0xLbqߚ臞!*y!0 YIݗ e,XzuOu؜zc6}'@pu'sW;୞jF4vr F\[:䍳n]&꟏ Cfy!#(Ҹ6<;-4d)<.a7I-<.nz\xjš gC R.D4p qhȜmZ <Ն OXY13Ls>pmGT"N,9y&Osѝw^3hh=ERj^겓F9IO,t*Ρ?Gю-/QN*9;"̖M)ڤwK;iS*|n'A枵cSӂTd> )Ch3:?.g& $x> PNr>B'U^og?B+[BvXI}ud̈_c&\N' u=/s1)~k|gOe?\|99[/ p  Ot6XMs.pډεyC{ ]'G8[ttN:m+~A|8!'y;!CnOtvh%<} tb)4DԄA?trGB@Ez/~-Td:hh p?ШQHyp0@`PϠ%vS04::)w/wԃ`S;}djmqis`Z` )# 2|/w7Nr ?eϪMPn"}w^!Ĝ:\f0:8uYX" p0#? I*o o@'Ry%ՓPYR`0?/Vx ۺ"H'Ma.dzɧʁ6fcǺ*B9YDl}a _GAɗW"}(Qp~py!7K&V@~O;.$PTD; +U_0\Eݢ򒩔T;>;pN=$|^d!%qy<3xZXZ)ɝBfX5/z,SKռt (_\^%4.B{}!ծkJEv'E:E* ;p~ |sv q!ZJMaw Ǿ԰%9)8Yx~|'5tu|oRS""  A&"mAN:^].Na} D+t?>C@ ,My]B[`cc xuwSsw |<Tx:g,kR tƒ:n={^*p|$M&{ʜHӗ!OX]1G*IF2-N42lWq6I%}xwTweB dMqR26[24n'JcDn 1CAp&VB7TN*t,'U*hsODDjo 2YLgϫ(bO#{:+ d5.5S`LFb{V#xK.F8tfR( sKH5Za.Cح2¥(xbl_QUAFO*Ӊ٥ ,'t֛loذȿ6mW !sйI-{C׋_F ce[[Xm:5)8Z׺&'h.OJzuӺO,XIQRdK m:uBe#j Ou'A4R&ҟ aL`V'pHV %&tw}>tnJ555k@GLgoJLPHweXW !E:@dq Xb3]C=J\@]ƻ*W:GǣRDncdەzNFʦ@u6Ͻxu0-t{5<4 Nl,)u֏T1Ȯc-RL8[g&n:k,w{l:NC)~ 2lu~e0 _ w`-ajox؇TneS½=D)D%t,U!!XJ}lp$9b߫=KOםنw5C΂L0/fdP;q{bOd1$d8EĶi/@QC@_ͦzA1Yt=Q--:>+*6o0[W;)PCALj_zoQoi[dI|^?k"MʖǷ 9.*]Yex{qh&?ȫf3"f5XϊlI:*9BF쪈ͼDo,]4;dqQk؁kŲsjq4]}|@L"nE/aц}(FO{5s$S>ʶ*0X ӧy-6RHLdQdl7kcFb|;Ɋ"kMu/0j=G5c]Ģ*iH-MnuedB+.l+:9ǩbbqޥe+vjiq}zk>3r=շ9DLmqŒn0jK.wj(ٻN秮kiRd6J ڛ$-Oc@Q#jI6#UcDʬZw:!*o1PbJK^W\s9[$ &=73Ӥ˫ kWDdA e o5{ݻȊ@.ƋXc yu汧<vZXݮ7eqfi;d\Jۭp Q/XD8T; HHL8̖-HJ$tzuNd33}F 7(Gl3q¿m^`=Rpǿn`w/"KS*|Pz_ ;ֈx]0肣.@O五lA"T.bvo7a5y>?\EP`>~AMb)E*)>s0buF~ a2CQF`裧S2)+82g- -×a7E5\vWFsmN'5zp*a[n̝׷D<<?.^T_8; ýsu@D7VInCA/lMj*ՔfZF.󕭧͊o3—yhXriW= `ʢ,^Tf_2G: fsij'1O=0{7 X 4JՕSŷr_WKEg?߀7g.) ѵ}}>T;2xU$$/ YUa#D1rMe@R]/XҌ n BZj#"ڙW`>aAֶǓ̑VŲ5c:gn@ OPqRIzHPY,<<ɶhp?V+>1V$T{'.9Ԇ* wyRRl |<׳p 8ah%"qsxaI.XT 9{4bY#.|gW=]9dNv+='\5t8 鰑lC*=&/<xM$2 5842!ʦ峌D v0)~JTE  K2o"mТs(RLUNO.b!j#^[&A:jAQ r:Gm9+>FEi>7ٕT=#n1%\?akJlp7BUUS.G>oѱ.G`ޤ3- =7DMT TpB Ю.fRñ0BN9c_3t3nqF:AfM gGF9u8 >; )GnݦڋGӗэ0 bGaUF*oQ^d5rۥm#1vj}n43%=)r7;GXĿ)`VrS8xҩQ,3 {,@]d7c*_bRm0&8΅@3{NU&brI tV)+vƓ ly*ZFx%#8e͜.N D*Y~F(.ELPȋ6CEuJMeƶ f I )>0BJ6;?DgdkD0>:~|SGV׹XdV;lS9Y=H4'䧽%P!#`ȝI]YtaqDdWgBNO'1wDեxxnHI~q[f3B7-?}K_AO6lDM{uHZPQKr)􇺹9ϭ,W_ J mZJuդ/؇{k3nQ˨əRr#\N _򧸋(nレڻ-foVMGH=Bb}&ÛEٍAR>1i:%&㏰_#}rX&z_  H*0[)B\_>o{z_ _x ܏+sAUp9yi¯=,X7*|HO8-RlZ~ G] +&jL,"ϑ!4u9':%,\D!i0!ϐG d;9t'&~G5o|uNB%XMw(^+ Em &dlC0դy5j3 ɉi}=P!+AEZtr,%Uhl~_DWx*p2])! i*e&KZ˷*>Xvl5gȈЈfV!'yHcVg ['LTRS`a]Z:)L6M.+2M !I;Hw xUZVr<\K0,d,6sJEJ$U`j@m@#e 9A@vz6. . k$'?םm%+!g0:YkDVuZQ#]Uu+1BT#/d޸>= xy? :/p( ^Wv8%災> 91IM,,(閞o6Ed-QKZ@jMQr2q K;#ّ1+S9a4 7G5NLr+2!&6~jJWy^h(E҇#)7tvftoʴ[2Ck9ljf4XXnz-vD)ڧ=aktØ:9֭Sr S@&3HzF.'i ձK{NӀ6uա},ntTno`a4 _-@˜p@ F6C᥁.X65u+% bb\RrM46S$QLCQNI{UFd)X#:. *,n]- bn031&S)|FYWq }T6侉Ryjۏj3`b>mPF__.MhQI x\Sa5l\zqDI7`/SxpV}r Kt@b"'֗KkvP2yGq?\y`ܺb*t,2x*Pi(i.P0@5B3ݨ1|EPFiX[lWai VES"bSʧ Dh8ҜZ wX4&(s+˰3%% "\M>L`5& ߚNYS5p73eqP#iƊŸZ=zãbzHJA)VC,PĭwdS͵`\>E^L;ahKw9&p84rOR%7GO<-3zo$IA'JB|a-&5!> r .H98HS_D5i8>̟.V/YoSW*."4Og#t>!M0 o9y& c+pdd). pٷEj)Fo,x/bCrz=a NmF ) P_*}RL,r;?_X*F/h]"9V5`PCEt`f:ogs0{L4ea{z؏d6R4QKRCB$]_ ݇ ⵧi/{5|~[evlߣ n(V:+1Kr#2u³VN(ʊȝ`L[[V^`!M\nw-ciǖǜY~YJ!Ӝ0bv0\p E@J jKPeU]T 9V^hqQTxf0x6[-H&ZV9O2xss$P\>X8c@`=LonHq0Hn*t$G%MC i JI@2O %3%\-VY0RB|?h(M -`Pq2$,ӑI|gȇ?L4Kз?P&(=?~Ha┩?9 aU \+ڄ(*!:ܒad^㡒"oE`)T־/V?~~ҷPL%ﰤ^GƵ¡gi!ga&L8)̠R2 Mcw%FnLSgǴ-4>ED$]d>oOe}R2n+|JÔ2>SD%=mц)poOe}R2n+|JÔ2>SD%=mц͒yl AV}r^ k̓;f6 `~[zSIA, 5 %s]x jP)&Jr̹Ot_>8OZb!)-1bsA5h9TPAϱ2Ih劦H1)S`5w0Anj9Bx\NMsS"MePK b7`N?8,~3a  ҸWh,& u E"%\|?igO0%兩H(=ĮUzSG ("lK&zΟ0N0m6k*7xqN,ni86e8Mw<] ckSXR6c (61 kC$Ms7IAa biA"} `gJDF_W%yE+a'$Hc@jAl'5{Nw@9B6ZTb>FSOTAYh3ZE[@;q09k1%<2I}}ZLF9<}v2P"8MuNSGΑkjc)\VprݦD׭QJ;V|:P3\fe5#>ehh/l)c˚B[: ө.[HDɨť7jG˖ъ~+p2Zt h7o.[lvn gJ=cU-DDW4pR&gT9uE@24҆G454PԸ @[B73\Շp3f}DKb`1(kgF,4Җk ޖw (oymp9,-fgpv}lw 7X`K[`)ȕ6 zcT7FAY C#Ǟ{ V+{?naIb")yϡдE)D<1g4(rBHh߶QcPbc1'NYYזϼW54Zͅap8(障Cv-8KfFN4lQM7ʛMTzq&cf 9Hbu^]%e ^YH8e clA6 Wς\up3ؑߒa |1236#5(Kq `۳ E\i=(^(a3_&4}卞О3vok$nYmxm5cXV3˵ 83s(Fo-o ƨĭY' юWśk9WXxPZhkp?q)NY딑 a$Q\Lni;C<`w)`Gpn0YXYmGW\؆ 8ز 虰Xv84ai@{kO3/@m KS[NDw+qhe25_V3FFKQikh#N9GҼ=fyZ+5Fɖ݇vGkz0XB͍18*Yi/-S32G[:,mϧo%} nNFΖ{&J  ,0<-o[ =YW|Vq޾m;SfY8e͌sʱؙ٩Jh[tJ~$F$A/Hcxch42(24IYdReiltO,,= ~1*L:òuuO|3ːwVZJQziG<5T^6`3fGًދA?|՛L@Kx7h<{֚gEEϏ.x6[{} yKoe!u~{D/=B;w[oY5 Z,O`aX+e ߠ7[~^z΃=noHBo9 _>^B['PrF{YmW8|gTL.gܵ}MHax>mCfokk_6k*᠕A+~MDo>Σyp9gi"~_u^?qrvw?pƿ-W~َ.8<;KуtN~v-vxՇ;47vr ^^ Uwץ|Ɓl-|nIEBn򙍛Ø9]؞\|jpm;ҳ﯐ Bu# ^`;Y>ADc*^\HU)U傑<>Btkpxt@Ņ %m,`-;NNd AqCe VNQ!o`E'_! K;Czԃ{9gVޯ 7U-we!/}7uYG UVؼߔ[ CjHhieT?*v{vc0",uR$cFr\_gWU'K?# G{kfqk:[D<~q {qTH-M$p|f!|_*|IxQPbQG& 5Â%|~zDg# [POJ>+W"Zu6%;D ^]qղ\R^tJQA2$yr~w˱6nRXr‡矎O>^9M5dRxϊ3R7w: ߙՕ6tnw).wIؒߗy^ bj:jy cbK{ 3C. 48j&\Y"82Ǒa>47K{MfrIvQ Zɋfp~ڳ{M.Ö`!e>1mH+Xކ zkEiq| PX)2RDhCT7כ"+YwE+-*8J.?!J2"I7/y(2I'I}$EdL'Cr7MݺK߽=p_`Ksts0b|}G~E5gJetQWE wdB0'L"@G~s>]ו2$/i$o7kCRB#vFǓG֚/ܷG+u6 ;h@7P; iLìDM"Rk'*~W!჈ؗR 5>ʵ#b`-|BҏjE1QxEDЕ,1#ه!R1)G[[b'Z߆H\s,/T8tlʓt>/"#˵W+uKĮ`'MO xļ`x</^ $;ceXuAꋍBAWXY@N2)ƠͪlIu(?oKD?EKq\<*[Z6$zTs]ȕE-C.̤\~ >8XwGSg>\y{*{o2:$ UL`#_\e8}<#=,tt͞pR`F u "|fk+G-$@f1-2ZdIQ1pY-b,>tB,heZ+KЯ /SZ+RUlu%*{<ט3gf5F)-zFht qڼYQݨ@Vi?OT{?CT;E'Xܼy%Bt dWQaMbۡ)ЖPƑ!.C\IS !-Mй[]D3rTEn73[HXF2 rCJq(Tqвq&GgOb c9M c&_F\19c\Ggx{G@# ;G%jѹMV5Iô\Ddlџ-Yp܌zpiVl~pqɡZ g **ͻEA&.XEY,wW V= @=)h5O$hXrh)j5BM41~WitF+mL$Tң=F7i4 eƛJ h ໪R;+DXQ k:LF2Pgm]&>X`uEP*Zœf5V]bYMpX0QsnIqw&NLoXKLhN/?}qtg9t`S#[ 1.6!Q(0 ?`cXϳ4a7I7Aq+A^~N j6Z%V l=Gt F+Clkˉx2{}ago44>kݕeVM& s0 Sm,qm $rb  _`FVU_Mdks;pG_i,k̼ uKyIZjqר"v?4q=nfcރ2UldU}=[dc<~.?<[F8+ۧ%"騕,L ؜po|r{1͋2UjjjOYy0n h&AIa ȁd?Mk dk˫5=~tVx9Kb[g}3'Tu((T ~QGCmsqԕi!]n({Ԅ2VL\M;G.b$9 W `7KOr.&StIhC K.OM -c'n+/^ж6Y-I]j*]CLb|٨-_#\cf&liEAx9MIQ?N60IBucJQKUH N] vAXB, aU{,Nz,ݾ}NVaL-5A 'M!(E`ee3(loa`*:C^A:C 1sHj~] K7gN7W=z:~mN^ .[lnsK=U\AlndC?Hc(S` #rR9tD?K'2`8Nez%X@eJI=rrsr:5v+ HDaEUB {~G"ia~od- RRWQP7Kq1v^WGϨ */!K]QSw%@CDSbt Hi\Zεb׳Qo3͆#׋u#$#KݤB4"?q:+,'hSq3Ws_ԏ7s(b ~s=~s#Hۍ̟6VR2%C-/Hp@~%;$G'6|]-8;gOO~KTC?ݬocZ ࿓SYNΎ}MPCB3~0[B%f n,vxR#i+LT,a~p{(`G҂le}x'd_4Qkjr$0XEeEuy2\eRL}tE' OdRW\ce<_ kH L]J .y7b_7#@Z0kE`^57P1f|;%>ܶ疐ߢdԭ/@`] Ѻ,>ؤGWkȆzn߫ KN-Uޚ)zۖ@Q%*}"L7 YlczMʞAp!ԁ=# a/ВIKN2y JLY,̹+rdLkL.,vJ"f[skłjY⭶2NM۠K!RyYj0"v( v;xQ3ЩiFWaKf%U(Ad8袘QBh\NY6Q.(8?dK!(b!2XSL%)gPF#X-'#zCu-~!@\9C}Aw[D(gxt]{Wu^`K._.) ߹'NNP c8 Nώ%*"K .kzwÄ]oA{WF+XO<*kυz)y&9(O+Ham=eHve+jtf"S)ŤaJN%)F`W^4vi݂$I(xAAVOuV<8h:uano:z%`a3d7Zr'6 9D볋O!'M>`M4  .9a|?jv/#SbMMO4lDioBX@4.gյ&B8u4S/}|ޟps#OZa$U UT {W6Ӕ >{+̼%*_Pa ״zzU/o:qPpO\{M|0LwxK 2\gsI H\ʽEF\V¾*{?r@DV m.g*4f3k=ʈR_+G!d94(ˇ=uk.P}EOE3,zŃ`.ӣ;@V _BO(RJ>䩯խ=doң;e1cLjj_`^g]sMQY<Y9 y:)d T|\#1V3Q+Yu& `emw nf e#-mdUxr'Z_ u/MC~: W.6) ,-t]1m [Һw˭'i6PH׽C\c҄/5=dp9Q u[/\Nߋez"w,jA_)虈>!v _eřХ=o(lY:5%^rwИʄd4*|e6+2 v47OQ+/fY^ˋ; vfpqp[\_.(BѺ .XT]ixzlLfdZ9.@/PRtb"c.E$dbpЛӬNGsz\/-Ηg N Eo"~P&ʭx?uSy!*-9/X+|1ʀ|1.o@xQоYڠ<{ M\ H._$} p&[&VdPۧ+\NGj!J{ԹꧦѠ23̌*ӊTiFJj id/X'.!=YB+VbZz΄Z@5 /z=t0l9ٶDdUCE"'k= #%VIB+̱%HڧE +l^);J묺<;!|)`B雍MԿ7Nc`o< b/33ߴۛCoMd-ķ'HjcKPX,rMa #yt2p$ڛ&F5ô4,w#85b E`pϞ4N~ >8oBUII:jJA+p >BXϵ d`G`ٿx8r$Q-o•q_pA;OOg&#^+4;<8xFe*gIruᯟ]#U Ho&\dFz*^peIj# -=w(I_95kUmXq "1N_~f 5 = ".L`E:7däĨ8=xև . r6x#kcpv89$X&` Z'8YHְM:Y/JRme$HO0ڱc4 t챮 ts΃zS}1@}@S#kT"R\Xa˿qp³LtG1%x΋* ?AVQ8Pu7'#XB9į:;KLjLcOOVEO5FSP`oz? ӉW".8AE&QPihO(xT}onf)%&^,R5yίi RYnfr?" ?c r3^_ןi@rwuQҵe C~)"MAAm0}|8zʈ"Lr 9pciFT[kesuLztfڑGYus3\j/%L9#eGcH[Ye'ӱ +JF)̦klLwagVod&,홆`czy[* $ԃAF+ 6*+k+s*HWl7VKzZz\ zčWھqns: ) VD&ԬzLRS:@M}C`Ծ>Wc>ق$yM Ti¶pvƘYFXzL+k H:D /dԩdt|D[ A/ `=/Dz}ʶ"Ě7XkU42eOX·ʙ&cTUM ݽqx.S5l.ϲk˨SWZ$jk7X *v$$B҂M׫x4p0;'ָDa>/i#7X楂KSip@m[:@O,˾!/K^DTrCo7+=dYt15>et$3\ԋ?F[ XI*/-z?Ggq~v2u2h Q#mn[ˁ¾V˗Y/^X+~ VKs6%3X|(B~Mw%|^zvo͹|U*'Ǐ܄z ҚksGZw0u?" ,ޯsMF ^yDh'4FKԑB#AB97B:"D~m^Sdi2O_,gM{:KoUG"ɣ#UC IBS8+Ē6"dԩQIBrJ #H6m$2y?MC^.'DFe `^u&!f 1vyt6}+ˠ#Š 1>ۇp%,{\oDh,76zfog=[j ֦xvab^zw;X|yxz~@ =&4AP|kw2S&٣{Yެ2Ycd䒐rO <* @rKO>lDqJB0ȿ$$nٚ0 S|_A'W $+= kyIREm8hel׋iHmW!Vk0ƻ%'тiB<`Ķ@ ن3ml /.Aظ]ZcceaCloҪsfS~QB:m6Jb)52tvQAO8e2X a56gLP- 񶙠Z8T8BOf=At6 borX 7}]7Ҿk/Rf׭)= J.& (i$d8zPMvࢥulώx$ᖙxDgcbT0N+P)*a*|֜ɋ <..`+e{{!o-x\qg@:Fm-5 7i>[ ,೨~extD[VQ6TTij o'ւ[Geڇj'J,C! T嚢r0u.Ȑcj ecv=?E $-NȾ\I~6 y'75Xt#Yx}ʵ DUހ[}Fh6OrȹbI40xXxY_tu6 \0RxÏd}v[~ыcmÒ./8[g_ɣ@c(rK\8v^hhgh v@v4=Ɂ֣vڡ'T%!Р5=;(ԍIJ/7`2O:L!dF@[_bKP"i!-nYG<)$py)\5쑍Z4eg*+T^B4)i1UNY[x3@/.xA&Շ)Coq }}! qk+:;!F%)a j^#JZo1,MѨG6ނnȣTn΂ȓKB,#[5evF f3rp`j9ȱx}kMFp:6!okcI 7I+.e% F |>(Z3I[†jېpdCn a߻=v6Tui{CZ~1'D}unhj ;N&MTjTs+̤^IQtP&10ui5JJwSjaoԏ-4gA3 ^hwb1T(Rጧk{ &d~أҪa YBtՊ g0mY|5 , փMkH_KfK2¶K/5u1n׿nR$kd+3(7{S ic>^e;\@ z6oԨqu!mWX8i?F2[3E7uBe~\Q KpW ܱsJDm&VY_c`Q pI,fQ"غ2 .A]%q'PJ^n|د˙--YkX5ϫ.-r#3o}q;y;|kІ3 6> r\HS5V g u=q;65Ն&~V@СC.%YV[%99~HC" T Ak{HUHQ̨?T?.I AcޤE]HQmDb6%I vpKYSV dշis2BBM6EԷr`$hj(`1VuYVp}oMp Rp}S,cp}8ɋڻX-?,ǾMb'E9tYw֖ݻw7h- {n^x6m!+H|~.7ġ:`j6 W+3nGAQm>F 1C§ Ən^vօ%MA|]ymAͳ=rrv`{.\jD[^aPif OqA||b8=0xRЌJ;?_Yt;dBqGIcWĩHn6?*[Bj?PH]2]?_ b߂f!_VeV8!(-xF `t)#W;7U򏓓3k_/On -]o)-f,цY_2Q$UMKdĿcIIuI^X?+4kP8"I >>imq:ao'eV|Ļ?i=:W%!j/o*Kdjpe˿J"fZ(t'II34ZhS^؄ĀǑ/}O/m{ r >niɎ]['E%+Vq]-T-^ݞ2u,4JZ9*,4D. ȿbF ФB3 ͚ viR}c^4H_YU3K o"v!Hd)/&О'j-1MJzxk4zu8JT c ըP1g$ꌙ]pY[F/#Q!%aK9Ⱦzr:3exU W{CUOWέQ /f9l+^õOtm oT^J|edj x>27d|qW &n糜c?>Һ=Y,ӥD:@塑TMh=HU8Q |e.$D?;:?FO +u9r!jA)%!?K%adLHH/ *_:aJBSo-kq1#Ѓ+ȶ+k:#a!zB@l%A?˭m''+υFTdluOl_z}Qug?q^9? H 2V VP-ln [ xԯ8 )EOB=JQ ȓW EFBf(UҐ\_ G8c^I Sk* XN\Y}İ9%6NAd=$Bdr;' Y-mao¤f/$|L J9zC!EhB,ЗgZȄۓ?N +܎D7wds[+sjHI;t>DL𣦇% (Pʈ|H1yԳsD7-yҘ!ez32Fԗo~/F)INQI)Qi̢ ٖq71M@ZTI%v5*;5E(Jፗ/Ȁn枬TLhv%hbH4hD&t u2JbN {2 @-V2Vy0SxeDǥfiEfy@fQ&'άV-e nJ(_yLB~|H$&b *3e`?5dIGFWz&bmbMF?dPiSň|<2o4hmr E(e4k6btBΐ``@2 A0 j?m!/o gRx$֠Nж^Jj2L3b"){J,eZw,HS'jR C\ Q*QF53ur!75/9}96ts [ZPj吶)s?U2I F^Ȧ2 FdUp9174&)'mۊI=p{rZt=q~ 1q 5_т.+2 Ҡ=GunxRG8 $3Ҡ?B|!3kTG\܏M!)\"f18pA+Qj"亳]ɱɫ/*rL75W]$),e@"ܨSC1&ؤN)IS&.䡥e`ddti]'#6fF'?Ehr! 3ܦ5#&IV h+Va :WDFS}M^ yIeZC^0350XI~Ji3j+ zՊZsT U zQnSWE2hI-|$r,`6}qlo-ǻ#v?XPepN jMԆD%$<*DD*\" W¤Z[̴8o * r U>%Aϒ@nĐ R<_@_ ATt AUgPu3c|FgGdrIf|nLĩELj^?..+'%wm轵\g iu萿M4IZd|*qnˢ9ɨi[edh:q\BƝo3ywrno\N&EFGUЌt^9^UbX8WhcFT=]/)4 $|a<4KRvctˮ sOf >F j݃O<)~oD%8| u?74?ZGWZ M_ Ó+:YA$_M.ky[{,.ky(n_}Oקkual= 5rɨ&8wg'˳eȏC݆bvGhea0׏4l12Oڴ{fm)o-6<6Mh:_YnŢaCe>&Ș\gcYK7 Nquj*<jP fgwW]  XFW, O\*zuIALK&xHEqS4%լX@ZH*5qJk4qq VW8³*h0/4mR]Be $}P2?7O'gWLJ'Iؤ|~vpso6ރҺCrA,KX,aIZYtֳuR zP^&( _;0:,pQk b|; Rȡ6׷\ 82E6cft#*'FYNs;Oye1" }R WUZ-e\~|k-Y!"n=DV^/ d y Fxlvm16 \dh^ug2g(b5i`Cy 5b~g/V;'2 "Jҍ'IUoUo6 t}O\Zkι\Ӯy'ǩ\,cB|+_B(!+Ts_TY-s)N ŕ^c{lr%_L覆p""i/Ħ1!MI)&<\COPB>H ciC%p@m-Wëmc\,L(`tiEr.2R%#u)FAPf~~O"ӊ}0.фTk8p⊁ L7;n"s%M{N]zRvLQU f$Qzm8{/5J5 k'd(w@#| .K 6o-` !̌O<Mold3okO۱QoP3xpԳ4ö7"Sx ?qK`࿥0Aig``p6k/7E? R5FgN玽Pd;gT6IGz٬< [n\^N#I]`Xp;Ág[+B;34AoO.8tHp؝))݌b85l8uCJ&]}\\v+&CvfĉptQATJ?w3zWQԻezWEԻE}'~g&Q ߖUԻ ލnWn5$\.~T0mD*IY?zT!~&>wJeǛK>Cľ5KÌ#q/KImy#ƹB$ EkrI´(xK[Yݩ7Z^dgMGXC.Kc|3(~xAx`$ s@~P[_&+EE~%4R6:-p*Ɇ&5JpYѢEvSFTqlI*=H0RN:$LmD L! G2RyZSYU0Tfzr@SI>2yVn yz)48~j!~,Xޕ3PGY7hVV K75ѥ(D|TN=(j⵮@lmΚR/T"}u6-UްfF6u6[҃H-nmu596R Q1t8+7uN;S(D(L0 L8pL!FzfڳKc-VLVF'hciޟ?#:دFn{!MBGo}fVjLRʼn=SPWlā:IH;룉~AADوcpum:Պc&_ e,WeK?ĊEk!V $)@ Vpp [$gƠ~CZ/eO@xl=~\㛿7h xZuD.OPxϕcHG\=v[CYւ dR2կq%QNj]hHH;2ۀC RJ@;и%x RVaH.rT* G>(7RI*X4;OKїg"lYd\ VO$(+}_V0$ LK9|{#e!OuM2p9xD1ߩJbo2lѰThÈW(COvv;'HgK5 ]"O3 >L*}jmR|)5aX3ACcshOO]ϗ'D3Ur?4?|uPς7RD^'OJ~Q P[zN 9-lU>;^A&Y\C%O"ګuXK({|agӅǐ#} Atj,Ŭ0fRpg):5HŹ $7$$ntCI/|Ewƿ$~c`N%qb"0WAR+_T"ƾS/JRNx2KdOֳ4JpcMzHHF"Fj5yStM^&]RK IՕ *Vnʤ!ɰ?y~=_.`Gۍӥe;&@ԆxXvӣ#mM&IFsC*#"/<8-$Ɲ2@.RĈ4Q?KL=ZN4ƺtL]>'rt)'Fկ=)#qbB:] i7(HF6Cs&׾&(c|0㪹(){&~h"d)FJ5k$:j AKݓz,5Fy jzƞZԞʰ1R$2UcPѤ1j"TAf)Q6v(l̫XY/ce5VYYgf;K#jF&V'#m` ԸMMjQ*ƪJQXUUFbƪjpcU5V՚xTKL`cO5jڹ=ScO^s?ٷK:%5 ڂo^قz, rW~s6ɟpE|Ԏ1Į[[@9fc  :'Zڮ _#ŵOt;mï8.$~tfk* %Uk"a3,7O [Y[+JJr?18yᾬukߗ5z岾'Vs~a-C4Z23}45 OdI.;I*bӵT*Ǜ^. 9eXO\lى2|"O^7v\YYnt4jz-<繂cwPnnA><8LaĴr-a*c_:N֋e$$f_,yM=c#a/$u21ӢKHRSoO^~ ,5=\~nВw}7 dɿEdKM7eji u^cE _8bJ$L;w[M>ș2V,&I g*ij)Vl:))WdPm_BiّF)״֟IC oU40M&^ Ncm>˶:7I]& "T"?_Q:Y-@w/6I'J]І `۩F"YEDp#ϖxQYi֥` sP0_ߨɘ:PEHC^Ka]e< Έ5QCHIƽ}V2ۅœ 5&!M&ch>)*ƃqJ6+'b,JorbSUW5r% LXkYd)tE%G"xJtMt㽾$`$Ǚt[¿f\4q]3Z+V0ӜFC9a*vmY _\ R 3U-s_"}w_pqӑ/L0W7Hfp`C.@tj} wa}7D>%r6)FHw#{!k!u#MsVFU͠o}\=o^lai C}!hfw| 0cCRIς;΂ˈ c CҪFIht3x 2FG̢eÿJ]ZEhR1wz W ü A`;U B*HR$- Be9L,SI+72-ٖcrԼ|)v"r}/؞yKQm>h")i[b 8t7ٌ_-䳟FJyd1fu6G/-z)O8ri[N&X%@8jQ@5K_lk9 $:X7;xXp/fV)/^.aK\ٸu Od+̀Sq ;)# ¿UAWA%cCp ic89.`MBi'ꛛn$&#.DD ʼnR 5΂b t%ƯprzHa"R\(XW] $5@M(I0mͿ%N&[;:"lS.KY=vv 7K*BOZš ?^oVW֙==㯞#>|bW|ub:Vj,[ۋ^0EsNv(O|EO ^EHx%e3_'W7{%>voGjAI_YyzX}@vx}JBŵZܑ֝;Lݏ酺x)H3$\i+QBWZ #udHiPaPP!aj=7/E_^F[Q2HiBҁF #Ji$dߧH"1u*nqR,zг@ML^O~W* QE)D %B ]<;/ݻw\2h(?HPԆzk8Fbߍ=tQ}7&52U9)fN+< W~@ 烿ѝ/kFw?7,`[ cZu#/GK׷=.@E>}PeFO~qow }t?]죔Q~w2p Ź?)Grx/C~m^CHk 7n$wYs=䦷dIF25Ui#c^lߟ䑨}P EEFh>/%u8;ع89]q)R*52rֺϳXTqӨUaj5M(I\-TbaB뽅,Oo/k>6[quJ4s.Fj]{ WpMQ8!x7ij6y:\Y?:%;hÙO2VT)4VVu/^CѼvx<faվ/ZNwZl25ZH҅Nf[g%-⧾#4οO ">*7jT]ZkT@!^NeMdBd)%^,CDDNއImxm@qgI;/>YK9a&jsxm+8KƙcJ: vLv옄+$DgB~V$eTHD" ;Co^FE2A͌P3? h4253c3Βl"o(TMo/BC$m TMj v v11;`cc v11ςyǰ`&\\-oyoz$6b7ٟȳFө >"S7j LdSE ^DCK*+Yex3@u)/SUWwZ=) (S=E[7}{<"*qSō u66&~kipy29-X.z021Ot bI :IM'éZ ΋&3 J h8Ȕ b`fj3cp 䜦c``|Зu52eڀTƀP%pp*-02e ʓA4@(TQɎbz''2VA,Bl_cpbc[c[ pn1-b[ pn) f1,:,IپoET`sr@5h "MLjؖ,6Ug$U91j"Wxd\RVDr"UJdlV?t6˰pej^kp)tV <L8imCZ =Ez*ңڸ/ {m-MsgMKJ+rY$,YV,)|*(:bdѬ/n$q%A%,zOT$666/R+`tM&kGw4sh8O`Ѹ?N;թ6xUgJ՗2xiJQoD*K#z⥒է>5EQį . 𷛁X] dٞ\*5v/ǓL"]`vq] 8.0 8.8.sJKE 3RP<0qʯ|m]}2"IF@OD ;dX7M>|vw}6Q"\/ga=` @xNjFmԟѳ;%Oqm r 糵g-2~vDH~[Te6uoˎs% -$Šf}QƁIAr+SVypULceմTo>,:N1Ԣ`!J4Du(/%S$.;a_vԗ]P}yF(J{\\ L774indȤqsc&ML775i3Q~8y*ݴw*aiO/&/ЊɚP`FIU`%1CU;a엨XPȧ(ޜgE `B"$q(Y'oyZҗ11 'kJS2Re05 Ypzˑ7GmwB~uG;ނDNw}*{Ύf_eH{R~[ӱ󐎫*8͋5˰.OT<),Iww~OI- u+sRԴv\T3t*1m+At-d烪6}2ѰF?8I`+kŗ'%f!:lŻۖmn%ǜ\B;!ټc!ޮ+'#ҔV#Zy!.:[6vQ7U5[zc]t~ZPZ:W/ұή#jzSe!|(9ab#lf?VSrP&E!xfDu)>Eq`lӉtvi:[B6yHB f, WC׈fц1o+/ W/XD,p\c,6EB9T9 ^ ZYJ6Rl} {! *}DbWi /$u֕'إ3@ve]è6/Qan,jM! ?I3o t:&N*-+pZBy/hl "Ga Kӫkǥȃ̠RXaɛ뽏+̐n)"~M$c ~#B':t>Ч*L&Qv}wYñ56*:"+ J;5 V,rTV%H/1s0RZk@ʶae>ALB͊${ouIId_wV˾s'gm A*Eq&zIU+Nͅ&7 R9n?pu3EE)E7e4d/LF\TUF\LGj V95>xX`&R֔8U,Jö*Xq{Fj~Ɩ)Bʊ~dKdyъrSazBU0DAS,hWЎ)iуTۊ!bW]FC3odaM[o*ThWr;f#G#G?Q-.^Iumd|z,/H6~t#i}q'i%$Md%05]^W 82lPH"6GB sX]mDnAӵA߽W/Zg[ ERIUp<@EP%d0M{DJ-AJbBVJG6PHk6 /x!:˚EB FaEH'ONѤA0^H5 &h){!seHR}YS9Qo:,B%+"O4cs|j]zaez1@FGY FHΤy݀?3񤥀Jݍ=GCY I GH)`$Md0h&Ns3Vv^?g8ۉ+F5szA((TTUsP HZ ӇgznO|Ba2@JNF@U(O)Mgr4q6$>by:LjF81 e-v4"ag<88X:ED_ܣQ "#I/.>Y")t{xz^ G 8a"lYDO"~?nlc:kߘGs/\(/T=Y^ zb: gÛW/` 9x$2ƿ?F^ G}G L G>"e b#Q$Q';=T$R.448L-sɔe45F'55&v*%0b:6sEk:&8}SpI5J(_oERvR2 ~2C|6!^͜ݩh̥v?j߆Ma)&O4 &')dzAZi>l#:ijɬܔcn*Zak^ޡA e,zwgD7cc3=<2pr,PvPĵ&[ U7wՅTIrTvysy,չ*[K% {y'~}F~Xrhuo~Ӊ]\ڗd ՗tU?߾l'z@iy~̽S$z{>I>/zKqMSp,e^_I+KR dA:9:E_}>=FfKjWqhuu<qs[Z pb4)xqxVK[ MoL+ȸa ϴD.2Dih!/Yi\ayhpLa +u5GY"K,`1=u :Ea3hz{s6Sbܪa`#I4VͻRw9+fNeS!\*9.a?uܕ0B 6DOg'O)fS{ 'afr"J]Nz*cKbyi)m1fgL9/f|*pi  ^{]kHVU[Sƚxgֳ Ocv'T/w@ҳ*]zr~fŵF:htfut Qg;ًvu]S|h*6ƈ /q>}_#dp+к&a7;j%jR \\ @vwv+󖭁hxҸ޲IX[6ߑb;uuM]bO1< ~wz ko*&8&5ˆ?Ti5zCI hUzU9Ǟ _Bt B9҇m5B5ޥ7/s~482/W8٤-nL%i96\n%axB۝ȥO需 w%oqA Q4tЛK<ה:%Ms >צ0;ҹ)`5VXHZc_ve"#FKu6'69UMg.9'_.o|s־ws mЍy;^UWl;Ր 7Kp;r~׽i}hԨ::fn|+;Ja|\[{@Cx d:j*C& 5Cd9 +6jD> $X|q?sbG9~Z /OzBwGHFGK/wIIozYPoB#`_9KF=S*#k7$1y%mD͘r/d2D K)+򾣸CE5!U?\ٙ E/!8LKwdKjB/i'J!qE\~*[@;ῴI4=~L=>:E$yw.2^M-YݩZ E $@1^wPrV Ǚ A$ he[qd [}q&5& f0!qoG33o熷5,❍F4LqY+vM[ Qeɷ)#ʹĦu:l4$ޮOk&*VDEU(i- ,ѭ V);fkaZ0uK6{aghlK< F90RSk^>jF5ۀK艺ѪݜT_0ۣ?2 rIHJw઩>-; oNne}RnI@he;sv΋viG2-9C zJ>3e}x؁p'x>vy΄|0M2!.*vuSͥEq+*\0=~x4Wc,Nqvcҷ}E]/:T) ($.6PcO?{[CԏQ#8sMՂ?ó-a*Ѭ%oULr2,~Qj8@q#][ A4 dMg)PZ?(2s蜪gnu4:;+ )ӐFK)v)Ҩir@ b8[,uv*m&C  s[MILYtКj8YC$a0Ef|x:"EٮA7?Qmm{ ;v !=b>/N}-jŭh:Mƶ#NU'7 ÷[W硰JturʮܒDv(`|o'Z z׏*Ɂz2ySՒsk$mi52V$;h? ,ZOcL]J'ZoW .S<љ,?57,?flBm8Ԓq\y}5#_ɳX Hj.pNR^8i %{#sBk &q")2a֜H^vfRE8Z&f&e^mFT|Pjyk:ǜ'M17J-IĪ+$WC Mp՜i30ҵ%wioScxV-!XQ0 vӼskIѶjr)mYII[*CsOP'xh9"ⴵ9mPXT>m*rAHp bVZ'H5I5.nGҵ#d4N91Fx~m!z)pq*WQ_ P,pY,:>kµȭF\'A?K?ÿKyKt^BȽ*{aW'ɀb)9g=gyORQ0l ~)9G f;8o蕊r>{7 cS֑zJƺ֮zz)3¾zs(!)IEW{{^{gwRJH*ÿ)kJ졜ϻ'Ị*JhX}RwjԸNj\އ#8ERb[7{aS?z HR6wz?t+K`nXr%#=/96i$M+K3?8>;:9ݿ ťQdCg?/=@mfm$q4,X}U3? :E(U.lL a>[20KDA̖Dr kŗ}x C4s܃{"`1mOP;[?pjf]h(&W7[ FNi&lpq.䚖R` Yq}$WO7!Lx:uuqݵXî}v5p}4&ܘ0v_Q.6)- h!6ŔLZLی.D5E./z^"r CrQy^TD[1(Vj BYበN?72sac"WCJncUƬlc.E&vy ;!;ٱޥ ysis1v.h↢xsOog6kʧQPضmu@wlyB*we˶_Puo@raa:4Y8MCՂK#2c~%36 Ok+@)iHø f9+)11lne>N YU>鄗>Vvw2Qf,,(es2ٌSWQ2Y9I\2.[Эz<(5N 5 Jyre(gi>Vy$iFBѸL*%nTt"3\d")%#|PL^ko.ID5 %9GnzTš ɀ)'YAZWa2wǀ).H4(-*f8= d5V$XzQޒDBgo[ " |K6}#'e@"-j5Qc" !OlS ͒]d,H9f LCo2D?yʸ"Jst %oD߁Z'3)ɋDMFBĹi4H49.^Փ:MĎp^hLxXlك׌QL]^:N(=yeTd.y E؄8dfE-a1n^xbʙSuV0[vR*aR)053StRN T0~ , 2_lHe*[ٳLJvUὨtSvsH9r)[2 #Azaӥݪk~P-Pn}'U0$8VOe>n5mʨl\^iVM8ɷ`%TQh)sއP*h&D,; jY]M+KIj Φi{G/U ҌS* :)3[;z_p:) 娬UB *Cx7HՀxoVw<% J `2G3ӥk-493 zN1w,@s39 $z89"⹡q5ejhz03`A"\/7'TGL ?ɇǵ`:ξL mx$HaM+3LN3f^>?m^$Q*pr?8ȟyU: )uuҾ |{y_iii?o3Uk}{Խ⓪|Oˇ bw8p m!02d{VsTC/É247YxxnfŅ ,=!oKՆ&WzocZ=p#u 5qan֑YKrеJ΋@&C:;қUtx_6Z%#$jT̶rSMC4|Q 1F~Rg/Orc/.,Br7V =twqL:$M:j|p} ,acٯ!9C q28/2_Mpi;pE͂ -+KS|>3}=p*]qf z܃ 7חk3QV%D1H1]qlv3ӥsh<CokC/-Rfa&5 2̛nfk^RhK-TC<r aj$ zV R3D#}Q@3(xeP~lbw?LFv䢛| S $2P 1{Lt`!W)?ţts1j4a7g\)qʡ\T$LkUj\CGj7ooWd}.t/i&mKl-EӖ;ㅁlj mqg>FO{4gp5Nru`vt>%h5&_j9{q 8DǙlnZu4Y嘒fe(2aafQS|I6FpRЈCI!2Uh+|Xk8_ ;Π]FR i 'fm*͝ߓ:+#I;N1u5?& ޱCO6unIvmȒEAlրo/-B$rJ$%>j̒]FjwRԻł]Uy28,%6:ENs)Hf̑ 㡹s :'H($>!){X hlSG3+jmXdx\喛}>x[;E( b`5ss\&ڴ3f#Ԯ{ aGQ+(v֚( ]MS6RT32Ԧd`̝Y dl>|6PzDj A"&¦ؔr&j*/Ga'Hx,>poG-Fն2V𕦴.Oi ivm%-سC aе8_;/ d.@$]nʎ`Tֶh4bLۑ[w7WކܪvHpUic9x Ra+{:*whSgFW eLTjO*+UGODgܸ:;~x^d؎uz-,%Un% Vt]TqȰJ7 s<]!DmEU}߭F[`&;U']Ҕg9Rj5-wۑa(qFms, #yqnR Z |*ZFY%ɶ$;=gS%-3}N]fglFR'$?q 5!W=88TJ Mp>[G&?p$)LV%rq>$ ܐbN۸0x t3VQkcNKp f:[Ή@QWY}:VMDsq;7~#@\9zly %yPPaIԥWT:/E}5Z;6@IﲦӧB5o c,] ׿kڃD JBV~_QlX2MgTK,b6Jrռ!SMק׿±5n.q;&ww]"{"6GJn/vr~ W#a,;6uR 0C 4<1=u19)[Vߣ .Ud;:ibV=ts 6ΑG%S/df$˘Q"VUL"F9&X{!dR:me WKjn$F+0LR~آyg> n4j:RZ %¥Ӑb}$UI6 kCvrڳcAHP*̱6X`BZ1T`,P0?\+LkK \AdTldL~܎mP;.U|!K.őp^UVlJxÛ;J1ve74 i3K_U[?/kN#}aKVQrL#Za~n&ٸx>&tmBT|ǹeȔo'ڄK6' *јDit[4w4?KپϤ7Ⱦ3DI"Nv력v2t RKm- N:hhX۠/vZdOKdIwHfH7K(]N#XḰDn8xѩQ&/uR~Lz@zϧ#Orj?_5^ewR Q_fxqbJt!]%E΂ =o79ǭ[ DJ󏋷B4)1 Tɥ5$SӀ?5ܼz`U~$_&Ⓒ~2 ^t'z(BCYu0"q"3NsK N'?8~Y~/&sG}߄ JJMkswclh.8" e J^*BdH&ٯ&د&|{BҤo݉q t*1o^<]ݖ߈m6tb8UfD' h3[dž5VKB7~ġ[V;W^q*Ҫs&iTNM5 oϸR;>Z$V((MROaI9TJfBrkfQ0{T$jSn$ʄ+ ==8l Ftݮ3W;l*.F׎ޢsBgLzehJpJ2]8Z%.D-[b0,] bw솬*pZ#t&& { u0;P&N@h; ''f.GZ1]2E~n[C&r? wwOw$-GhKCnsI:> 7&oDGc~jϫBg0*ĺ*V72͆ cN MKxK($1#&] n|?`2< =~Y:x-L~OHWDkZK+ۉ֦~HIB7Fh0:,'i K9fNW j^:~>cwL֯ //5ݒIdK4*I#/bH; S;U`s!/ `S;^o"G>ho&Q!F]śIv le17lUafY]й#绋5*Y-9. K4a'4^%ܳ+f.2hWm zW/g!T3>̄1ݧaV++!GJx%MHa>joiБk5!ZdDH"`HT.GHQn3*0Hr@|Pr<6ei99PyyR q )vuQ5e! 4YȜlL9*hu&GjH=)_\Jgݞ;pAg]Qm|aM>FU^{Jƫ#]5A x9Η~f4u d4+M G}v#0;LB/f>q>>,' +̇wR >-ȤǩY->`XZI(WCQIJ])c砪B&Ix \]0$R3`_pI;FuۗаgT(I8csH9-MsKMi0lZLu~+bm1Ttm9N--F & QMApEpͷč6͔U.Tu$)\qMTW:3G-m9EyV:{u1?~5N?g;+1:~ %jUw]I Qvzp*{JB׶NXHx?n+-fa(,cn*u=| sf\ %>1ɁIUT--O_O`[}E߅%9P);PWÌ(85K B@?S*SъGג>b~}ׁPUY C@Tu X&;Hu1X՜~ LOaQG6|Y*qa ap~,o)HeO(5"N$o =-=F88[شqDzS@~i2x|R^֡rK<#O90h2[*V̯ғE2*-^NJ;5]c1s;Jy(1WKRl唥rĭdUlHrB{ror{_RYrKCxԏ_Ňk2+٩|3C-AtYfǺLվdE;^DO:ӆ]J(+U327KV DbnqG>Zˣ %7څZJlh 5g\z΀0X/k(Ys\,-*65c͌lf`;`[`65rVM8e)ڣ[{tkn=ŇKȷBk]uE$ϲgܪ"/\٧ d`pq/,`=(pţF0^fEBZR79+5Rp-n7y`>(6ɀWq=[#\0ƫ m`I`]gihYԎw6Y]6E7l?^ǍǧLUlm1¬q$g-$g帼aRcc_",[x&$/c:/ ^3?6e=:pr ۤFPL{E4>ès~H:s]ًw~ȃ]GSE 0m0E#AG4]31|& lv-)փ:iOZky+q!OĆ< U_E1mO,)br_%R'Yw+~bW͢M^={ x{?h>]|| n޲ ](1%'@r4I>h(|}pY+>S~jO\T^XI_2T)s9e6)B6Ӑ4[zɴ)rݩT4uCp70q`Ǐ^=z*G72Qa F*kI:HvI(cxT#p!d}멲pMkSM=6,1k2[8w./׏Bp׏3d)OUQ<=}/|:PPWч *^5O6xo~cT쵹0I}#u]oNgr9GSz]Kevq+97saKvk?GR)_$` +#x=+ƈ,)#>w{ӡ-cTqG BǓi"ԾxL.:br?JÆbt|fQތm]~0gY`̔EMg[)d]Lb$1+ T1Pl%+ʃtˣ @r7Jxʗw,d [jlk<c N{-q+:pQ%2.4*BQ)8zzղW Aֺx!Xxv.sk]q x8xwܣ k<q닰Up|@hwvYs&U]aubRSφ;(_-:1]ϊ45qܺk[/"R`s_uz/uJT*,/(U5sMpM/olbULNt3Q6ݳEQem)LO}390z=heLtt-&^>7ケ5Q#ąj:Z[ WlmteK:鉐tc2`$O ̻Zޅeta8ut^@%w^L]Ax%fIo}]M4-־Qv]!&U#z>t{ve\;HQۙ~fPq~]D/g&^q與"9i%9q:q^ʇ/Q! /i^t_t &׈Ofk#rqK*?@Z W WWӾ?)=ko&+q% CWaOF!/X)u4—ޕO[@o.O|ė M=LrNiiiҍ?䰼Cu헍$M Cnz9{Lz0ϔ|r|uir֓pn%^yRh6mr{ˌ,ʹi"C9TxZcT_Z epC9A7+M, h|>w#auG91=q^X*>-V_a`މ4聗ɗ-;莸 |)<,@`KsそfcuBE>{HMsäF:=ɛՇw Ѱg5z~bD_! .޿9}OMԖQ\*7 r O~⡅yI' y"eLn?3N̟1_! 3"̥چm|ty?/ּzN~z[GS!XU1 䁊tJFҫE%< (<=<`{V7&F{ 1̡@_\{&Eg.WQiH4d 4{N+y}iWZ+oɎb;D Y x_@P: [=la$hWzV?zx{ϋ'&R\cX- /J+V1O3m:lY'WЦكYWIU؊% Zo!W˳KJ,k~T_؊ hgg^p+lI *MQ3(96e͡:{U{>gmq$hMm?u%"WzM=0C!wS[J[~Wʡ9dj-OX iNKޟ3õ>[z}9-V04knץPcV!~ SF|ݞ pݘWTѹ42ÍeT`4BSy@ҷWҹ:P)B,~Tj&0_ϭc=Wuxìf#W=H /c2npMa/6^ׁxTӜ13|duNQ\}H5F `GC|PNrәf9V[B3q&WF'Y-""VeW2?3W ;39,atA5Rl~=~hڎWi .Vәz)wPUEP"bD f^CSZ)UET4O.U9A/Dii`eGǁ03hC {v 崄hMiH]%\a*҇w3SW~M{l>Kq=+!!q 0"|%"8Vyz&]+4glĜ^AZ?IFK LA6i$qa^$lEm8XU"~C|SDO0Jy?f2ɠMMPI\m[-e "pq$c<[3bQo#!KV-`8WT-gE"m{(HR9=3 K͎j k wWzI *N#,bg|@|G%T‚(_D U#GX2N||rFb^jGaK1XZ0J3UKAwJOwTÃɰrZ/ѣ.rX+ٷO9<0NYE&RhM\MÜIL-Ab,5K$IcLQv Z7!<Ʒ9Zn|o$10zw2zbL_*^}//I 7Esnw@/?tNAmtw@-:zA/gp>[I.{ w{vu/^s=EPHZ/đ }kEm[,'ʸtX&K5Qc0H󷰹8&c\'˲dkD9$hIRtPXgOEגmoU&Wc2@|vTlPM E%Z_o+A9q6kyۛԗa:aF %=ܘMZ;#Sw/B.0 I9=d-fϱ+rd*[\9(~,T`"FTW<ږǶY֮Ǫ "МfǮ?dN]f vo 杶$n&L [u6ނFETL$Дrڪ9Vi VL#JYGN\Y'"jh6Ke!ħ."#t?%FEYAg~Fb G6Dw3l9u,j%bfUjVFLk7[c3Zd}ޞ5t@3<+r ▏`婾~'OJvqWX$椤*QOqX(]oaJbb8}B?4 @MydtЧBf[3w nUXa0ea]ɳ |'=3FmzF0: Hl= le@Rj[R@ȓ2fG-&=E=0lNlIcnAQK;ϴ$a M~鰞֣EIs{폼q;AE%E?Y3"Ecڂ8XD4#k)<: 3oVlǝCɊ@Ց g?xFؕl͵GAe5l(-a#g]^ ?t~DGЦ\,OkB?@4VxHJS̪.ES|` ҼR1M.B񣟾߄䂐c?1l$U}KiL)9ib1h/ tT#aǧR$U*z?OQT3cTSG}0XЕHeȈeu#m+yRTSC~_q\UO݄sн,X.0;0X _Mj ^ۃQkHj/-/\64NA} F؁]nt^> D1R/B%=\օHڧqL!ep;-D(.38p:WoW_J%J=I|d>_0i<?%U.bhbskE`"?Q%%+yb!vL2%Y8LiّP""!j: 0xi%s[;SV+n@]Hn)5ie p.޳,?}Rxځקq~5.iC *^EӐ Vhu+N$6ϜP5vx&pآe]qyL8'AUr;2v?gbgqi \El t 3϶2v4ybę*03)[.cOThW^JxwOF%!;a= q< IU~NO 6 jkT$u!%{<#3YټkR2#KXd>\+f*-:{ԼO{v}*vZ)ͮ Wِ-T|݆65 (eOTsYKXdڊy Tڼr8y6;UOcrvlyfTΌh(x:W#2z7r*2o<[I m X,X^[nxڀ4RU^ɛo7o Yn3#t3;6R =Z3 ka<X{"<[fr bܙA2V\{M97\؉QZn6եӭZSVZAUdh(:n'2 R+Z5B4ƅXhZ Ȥ.Og AԂJ^` MyD8Cd f|tug=;/y!e&ј ٸWm'1%ь^RÀcuT $:H]d}u2aPFwdG> [(\ jw6g739$B T 4[7rLO@xp!@(HP QdtK(ZDy|\!>[Nt \^ݻKzm -vnƐ;nqO1rr$&O$I9N8nLT6 JpY;~҃|P+Dr{sm{wP’yl59/Lx,γ,fr;#[#G"[=q>N͏+3Ͷ@TڞcUA/`~-y0*y`~rЅw$y~g-M*[w++}-nN|7\SPH ̈́l+쎳rq針إ.1 oG+kV;k̯[gb n%OGvy%qkŚv͊5"36wBE %P}9W|B#p3?ql7|\ 8ofL`"l>8L~}ޜ^ LOk^7,rZ Έ ;r'W;<əjk.9 (d3Hs*59u:iZ[B'컝r) 9/jѦGT6ǂQcp#0k6dQ;uw l m;_c=DG»"^bZPs:./OOo* Uhs'xvd|=)Anv'Ŝ<ط$Epq0jbu1C"‡"V̹WEeلn}rMq}Z#5X+@c i8Q1<(S\)[Axqlm{e?N+G^<=C:Lj:'":8ſs1X C,1atLdtqjα9"s0"L^a\(_,aޛqu u+οrLUMz)[ԙHWzr:rt1[8;ʾ{e+1ҟon^EysoֿGFr7.˵V2;0noA;Kl-ʰP"kQV6O%27kszki|3xOE(.k'_Xy6'6S8DP\yکrɌrTֿ!Z.#P^pN@%"]y<vrGX.Q96Ce奚Z^ J*/z['RTʥ+o< ۥD(C5w2:ԩM_6Dμy ]cR\ѩ?&PZZ l6%₧M,w2E~T|&qgۗ"&bdz_¯嶹*.NJ}A_,ΠNnəf7r.!5-,Dn6eX+_>T%oīT9S+X:L:Ѿ!ZXca2j.`Z]r vf}Bv%$d1;#24d3gw tW\I;`W5M}3:@AFU>~?>-ɚo !cmb9hT!xoօ& sG. ř?zgp [0TWEt`3C9b,ɚEȓwX-eBB/ߐ*%d [VD7@:KާBhwFVxl^-^I މG^##9n= tge/ m_=j%|uL"/@ L# Ŕ4D);elYaf4 dDU};of c8SVrzVno}]°/pˎ{V5zYsG#,tJ'||L((|(r[QQMЕ5U?8{'g[ƒ4R4V_m'Ζi ׁ)`hD)󶌅 Zj ^bAB-ХѼ2&fj SbUlT1_g\) !7Uh&kp=s⏅^R'8L1!߈D^%4j48Q|p:O@~$Sco Hd@af: -s OޞÇmIoLqIsyIE(pJk | _0X'B{]9o. HSnPtMo"_/4ny=?WM'vZɖCCD$W`q/&i>)AFӋ{?G&I O&kیa+ы"j&7iR=E?׋7~#\^5N7?eoPYFn‚7)r(ZOHګda1z݁{|o>|'Rqhk.0e1 x P!`4cRCO } %tW iD^ڷw8U{ 숟ON*E)MJD Ӂ(-"rL 6^t{ylqjofjְc Y(Ҽuv%ך%M%}YAlJѨq|9hG.#PS_V3[uq3x's+n Q%ivK@jq'UZc넹XX|ݾdBeBk_6c^wنDHNMxѦGW1ݘho" l=d>,ݲkCpOoO|ǿ6/ȼb!h(mQޫRMt'^ -Htz֠M~n1c qy)cKidƥ)->?( "ͬr.~/dSq.@xŁţh#9|c``.U@g _@`m.y ޞOT z~{v^7o.ώuF`}CEi2tSb73;nK#|@ȳ$ '{=?`4}jpʳy77O[0k~Kܐ4ZJJ ׌۲bȽ"xdEv́aKX:ۊʻF\܉@\ 2*%%̄ K3p]^\X,ܗkz`@m ۜ⊱B?I^n-VhE\2Vy7l͆b##Cb#gyEt,ɒR,"Ff˽qn:L=O:N!ZY8̙ Rv5<zVI&(+trN%Y[]ZG][^+G>'^ܴi҅mmvdtԢv|&?M mYn5إq)%Z/G+gbRs3kf8xg;遡jh'b90ZXf׿ ?3/YV 𿽞z}_],8Y ArxF,`ߙ @. Fbݓcoyb%u58fulk46ᄏZn_@ 2ZugE=bfSҁCWTFGcւ ]|M3 !1qQﺓգ~,,n>8 lG&Lı 2;wF]V۵n [%jIZl$ԯ$ T^^}\5b☜,5gh[Ѐnh8aF+EivZ3;̢Oe=UB-f)5y*L|61.7wo2 udfxij)yY&UeO0l.CX]PӸ+ k=HDStls#+;*6iBh&Bk<9b`jmL:Cᬶe|1T,k9_XMRmXjDXdwDxwsVy)U;|Sj9jCL06XHM 9Q ~qLG=X!HLa%Ӱ/1}ie{Sk,NqgqӽRL㩫z'R޶2uT|qd"0!?臐cFLEZIk=ֵDEvvOuގC!5JI oU,1 sćYwa(|AI"V\׍ϿLTyJ EyBDL=Nx7~YR'JJV)sdpd92,ּZQZ2ń| cYIY,FEMUFWզ(cm.11$^]ΚƖbeSnL GcJZA `cJl,Wk1o/[N0DZ)Hhcu|evZ 㕂Jds^H\(hF9 %vo:k# yr|"־15f'Y]B9+:Um)/3@K%Vsa7^,V$mwbd͍g-9궯itЙ+Sycx+ WRږ d}LDFhtDq\Ę P=dF%DMrAv:()|N_ ,8Ͻs xl,-[i9׵ e鸳f^C` f6}Z.mؙ-/~YˋQ+$\~C[ @ڠ9*!"#~Eao!BO9}# #k@zܽ~/1KFWY( !Fa 9c23^IɍBNɐ(&/GVrP[.Φeq-dM7q 1^d)_ \86Dզ1.zi$]Y GmS~JWcKYsa/jS `P?ϑ M9yVFUAW[YfNUm.84VsU_1WPܾ(G(X~%qi,r`UM,BC[2BZgkr?H[$I~SXݓ0X|zf>hTO4넽$DRt5-}s~ os±s^IiDsevՇ;`g۟~ᧁW =2l{3_>{#o\׀'|l .gFLILNX&"R"˗~p>Gr*)a)fI\m>]R| ڄiC~NZXOTNק( |>@u(.ONHP6Ȱ Àn"_ib~3[AbmΤ|'@WwWc&;*.Eg7h wf8|c;oY n#^;|\d}\Y{D)w~|@4^cZ3@5s&L]ICrtH5(`ݝ$9|y=G5]C1~ha󌛶Giˊ.;u­J S]mv KxTFph]ֲlbhM1}$9h4YZq(N7jفJZ YD0 aWJy@Up=c? r˗Ѭ7ϙɴ/GH'Zipz")'K`qD-MaAy{{Ʃ; 9) 9A`e'Ll2!~\rJ'ʻA9g/YP8/aj)xT8X2b-BOTD Y606$¤Xkf#ȲSǕaU~K j P1UykqCwѸ4bI-+$Ȯw-uRȫbnKB?QHV1nV ueK$xܖuCGr;S-x k%ŋ `pGmA0O਄ o+AtRC5{͟zŋ z/.l vZ~3F|@ Cc8#X`\ڢ.Ajz@ܞ |'ϾEZ˃ ,XX=;A")=/? p<#&|;?P=!΢_o3BF~KpaE_%+vZ\M]k6+xأ_>MvݵHc|:G֣G]ҪP,~?N]UnIGH,ٹX{w^8$;c-އϿٳDuV.]Q0 dG)<'0P·@ha"$$K-hoP./OϯoNOcN 2ArvI[@+#AE_ZUUҐO)҉MdH0$ VK^E6xӧ73g _^X{ȄųC9ʓ0TUn@/vM}\e=e ܀ N)'(SL~9XĂEP&J˖fO<&bXD<!cCeU%T<]RB71 Ѩ;%Y -Eq8H,zO;'{G,_=GXMaוP^)g2x`;˱ vSc}!~{=b=2s8CWEEa@E!׎]jo%S%-QWk-ęqr4( m,쵧!#W"4ʪ&3Kq6TGŠ{]-ŀ!R6s!7xOMD:Qo}f$l'VFh16iȻ|2I4<%ןKM"N~|F35w ߭Q됦Ӈ}"Sɚ՞iH$$GC >Ҡ%o1(z:0qT>ED0[Hr*͹]qzd_ Z Z62aNЗ}{280QcKŦI8W˿"ږ/Ŷz2.u۬3HcmFv-a+l!#@fڢ-\I+nZ=LW {q?/p.it+k< 5/yEŰ{MW#̆)d,Q* y9$hA_u4nA]3#_q ץAI&BI֕2 Ƌ􏳹gG{i<ΈR%3&3b3!09,s竃ppw'@V3[:>i⭄ cp긳 +Ӈjo`0*lmo Fꐯ`}['@W ,4 FbDs !y(dK٤-c 350>aN(7 !09?Wo!h⓵Sc,Ń1`19(7`XyЯL0dy ؐT)  `ڤ1ضT@q89\Ǫ͸2WQm-` 򵭸b2,EFCr(Q9=/3d tqd0_Iԝ3J$J ?q( U/ubUd*]A#kΗ-d J>mqJW&bdAx\#P}06hT6jt({J YYxJD>m:yYDH*IK .<R&ѧEVDV;,^0 2lR t΍ÚicO`lS8k4Qc*+O3j*%mbHcBXJ&h:ue[$1if Hf:<W=,㣧? ٜ, $2ryCb@ݑ&KƦ)IF/ A0NavĜ`tO\S/'.O0(;=a dfA#]1Nˢ!exdpy٪e9ê\ޢ,ZZ{͟50ijKn3XIffnP|t\^w f"¼ڧ?p%" ?/y_!.!=# \x޿;]!(A-^2E>F@8AEJkx:TCw# ]g[ }tg/x?O \ F _KA#@HgH߁F7T߻%0{HݚKqqE oTruzg6 D0*`Eor-&ZXhZ{ᶢnqk"\1 ҆PS%ߌ0F6ţml, W?h6uCc; ӹt©6W:n i8vؙtb)dOEt%#JØ 6å[yv;fQ] x|0%*:1Kc=~Qq"fN!_d$h}i.jaXCa%0 '寝`t_+QpZ6;/ Ս7:dw0'޵sBΉF `\d!]\ZYKܣtyI7'GקY㯨M6b&@9[QHTRp_-3 ?7*Y9vG]XNr &šrLڃF3&(>{0FP*pnBO~a/р\C qn/  O|2YI?d>\^"G{Yfߚ}k*ddGl$݁BKʇP'ys/폄S@ܦ'$2;UQ ${~p8w?WgNZ҈X 'Nѷ% Qwy]c<С^ {wjF8qonT ҧ &{3(1s&fdqb '0#~@ TLH 7F["b6P6(]N)Y-17h2 0\BS qzuM !r%L f/ŽpɃ{^~Ƭ*>:_Zopf)x$L8j"D5ȶ.|5 gapi:@'ncaY)_HQk$Ĕfᠮn w1lL$Ӑ=fd9IV=P@Qfo%#G[q -uMp5k=.iV5zڲũ9PwLEpnT:2yO_,ht֬*];s?u;AgqԚg.R6dd% ^V_zr=YF6 8o9J,lZ6N# 魧O4xҝn>k(laP h~\QQRSyVXEGʇ;|Z_7u;7k6(`-3ˆ%'f-|FW9K$R)]/+Cmgβȶ۹&HFs#{aHtrz2'o-z'&rXFH2].}rn>HJOSiXVziSH"ǰ]Vi4_OSIRܔRS$\ze-l`l؃);"]2G 4QatW*&} -} dha?DvPz, eVFǹ_-l?(y$X+|*Y s%fg3P }yKӗ-?ix6;* &d>C3 cg^+<QI@+#MЧpu" aCAᚼxrtvzu|svz/B7VB"ȥ1鿯w:Gww3yD| LtH(RKS)$IF}_|2({.6hn聘'h ;2htEw QKQ #q5(RWs*r3Q;C&;GezEZ3|C&y#87< ѻ; x8~@C&X$&j%lR9RIS.q*(Q*NQE3>}udx)]#鶘 ۮt[lۈU@&REFDSv>1Fpe E\}X_s . l):#cPH%Ks(e6%yfXx *ziCt:ݥ a~bE&ߖ"mz&ס`YPKWeʨUr*ƶ3md-Gӹ6'Tڲ&DMfr3mTZY*87T-!Ӹ0%xuX|zfSO4넽, r23[Ocgǝ{˃]@p; j0]AZm&9xXAL-WQ[׹\+鑫5h&+ҹ`u"oc¬~e+r ,v̐,{.Th7TT+|VX_ycc*||v>14lX\p{<=IcaOs/Ϯ^: qkid5=4tѿc;t.Lflmޚ'd0Iج-;}N75e>'8&s|3LK,3*#}1Qzdv2^\1m6H|7K)<]sYJ 4[v/B%ukLs}^Cʖr`3NO^eb^ηA2Fp֔PȠm ƔvFo~KSKg.CV~ TrvͻvXtډڝ6F(hcѥt?G戾~1{G f5LKRuw=}^iN_m&y˸(MkB*vl.olhcT(5յ|&},mR#4(Ix@H;P~@5>!2NGhd 0EGzg6Xcem+Kܒ;u:KZ S6&'u ;)>yׁOŸ/_/#zTF?E;XR&hPX9o}[ޒ ҆Ox$A$ W8 Jj-G\+[g :_,Z;+M=CO|ja='pհh]%QepMgt)V ;rv[k_MW# /nϟO_ 1K>3ў:|5 GCZ7"\]5oQ9νyIMB< zOb&Ǔ$IRh`pńf.Y\2>̭>/xEe3&K,b-k מfBAωL<|>Xg/aqNקw'`rvyx+mӐmu>򚈢(n_4↭DBM>&((r>I1dpy>o Q!Ia㣫SDHٹ|~wډbAw\Ff[߿NmFOgWxL/ʝG._Ǡ-!r cv`܃w<'v.Â>b_ҘA _X/%X%$_یPWQlp]>ϧ޵sŻ^lt5=d/mt߃4N\Z|H s3_>QB9xH#B_A'tEOJOPU5'RJ魋oZg} [ߔ׃UtG ˎ'GgWǧ;WKvCb l m.ZjҊP:>~ Aɇ0j&y1a'3ZL 8eod)Z#m uO?7 ?q6-A;aC݃d eZQK@Ա-;s>;Y7G0 !%𖥳 uvs(k׵Gy/:?h(reDBY(ǎOQHe,U~S)D vжUcMwo+# X%7.ӎ]9Ҧz黏n7tS̒=KCm /5(Q AeHSqiQK5e@!C{k'q꺍{#NBerXΔzQ ǜG ƠGFp4 .>fề&wU5:z%[3$ 4e7摋pLq =KƆDi/H½P%y.'Z>=?9=D@pO2jL_ĭǽg3OOQm!=89:|wqnrǓc(J"A U9:fkU/̮JNs`n99x!dÔ(.~yw(!jK_T$uo3K㉤𦫆Joq2he'Q?]̣Wӈ$ :%ٻ|"TNViv?F*%JCk(݆+d#sLZxcL:kt,Y62aL4o@r~Bn*Y+ipҰ=9o| L]y n\ضHv^mʐgO Be98 ]FJ5d4}a//QCu\-S)^21$(C]t aB9DgF8q1*!#vν6e4JPBaWIQ"iW$֒8KQ1pxgL$r>R PkUeS7@)K;l{% xr(XEeٜLQ`!`*'N$!N[1pʴť@[eXP Q K+ re(q"e9UP ܈‘I\:/I]1iL(q4mSzP K@*6EIg9\9Y&1sK3s৘ :~;P04)nRLu2;{ F~[I >ד룳\B. fdFRyo}+z'RQ"OE Z(u:O&?9%%HN/X 6R8 `|D`(e?]2A$^S\]%[(Q$SP{f#*Y>zaߢqF"V@T$UxcRsIs]z?hc7̍I/)u$s KLf 0+/ q9(]{j%6>Ԙ2ۚ͊k4dQ母B_nJ/T !zNKF% 2@zG %cMZZbn{>D򪖠sG|dqa(g@ɬp2v,6+^@މѨ;Gp^AzX v7HL z}k|a~&pPUnsoAHN<@Cj'=)=X8'׹?dۍIܱWoV/h~|> rM+?zmS J O+%e SùP8Eޕ>G\g #aJk$ B8R' od `)B !1p:Lpº\} ~@){+O+yh4{-(RɨfU.7_ -nCR\:JWW.=@%Xp5I=lP ҏ0!eh FΪWRHlLK4=iD^ev6Ii tݓѨ qߨe1]/qsAVxFS( ?F nAB0x5V& O#TSm,Ʒ7rK3ĕpvі*eжJژ@h ( F+jif._ՙ+b\9e@x L!nGS?ꖽJrlODfNqKXbi,yĕfNI]nZ?P?).dۮfiLPK#~t׳A@ɒ`:гc/H\gɍ%4=ڪG'}Se)@3>@WJ b. "8dф-D==8t/2C|m<2]M*--v;\'2B#[-RloUGP4µTT6E(eV){“eSUr*.$^%4~>OqRkZXU`pO c1m VqԘ_D4Hhۈ"x[!*947P(VʿTX0 n/N˿2.2d#l\kp܊m(uSawlb6T;CSM2(!n^%Ԇt-;6O VPm@C-dz% ,uΩ}fLW~j2A Amlmv5/GPq_p|<L%MQ/ӎn\(0˞@/}x;۾pD/.{RP_ts373ro<^4jW*DoÏ DՎNgτO\ه:?zp;A!M;_xP#!8&W|/*rïg[i틅\30A;:;Zt:gp,;6>9=?nqL]. h$k)B1[ǻ< ?_GB$zk/l(ʗN~ SуTCM2 DwSgǥ"bg~DdMy@ \՛6TO6Kf"-S3Y]bE2tW_g+!Dy9M5#Ь+Q!Ů7Ht eeu44"2iK ';\͇&{kɀQCdm1jJ q#L2bx }~R`$Qչ[8s*Ǚi IvSŹ #mQVl2Uu9vѤ04˅r14QUj+(p8Vk ~,QpYB΂{hsR1 {PYJNHUhvV4(Tf>#7ĸ~',{UzoOi f.'L{Fo).X,Q,kEU0^ÕII“Sd $= 2˖qTiVh#hS;K4!w/i`pQb\Nl icld16SE .< T0C~},CeDoO;КZ$%3;v&ip(.|-WPp0&x89?ɘ'DF[JT1ҎBŠ.{p" 47o@nL ԧ9—Q^2P/-/[M",T7CBL(&Q`QTf} mB`bJmKl:|O݄:MK fSC]QjXϖjIaCӘ4)O5*"{i3,b%4gpt %It^/ d)-)=Z$fpevmVH%o/q*M8 ~b#r-q)۞'SdiH>5%G״OCSvs=ы_'dum-᯹g ~XlR;;#-5zwW~4Q?j7?䥳\<^A\8-& qX bG@PDcT÷۟-ͷE"k(h/$U0 VIHn ʿrc;{iq^0n'*aρPpTE/mΙEѻ=Tt{j5GqG$VrGSm-]8LȊ,>zs*x Ӻw|Ks|kFE-"Ɉn?o;;  4_Kt4V( g:]"!?5M.xz~RuH0>.qCYD4REb0זc Ĉ ƞssѿpjeֽG,|8ia? : d}(8YޡXGb& cMv: Bl9KnH9EDCQr &9˼?kWXTUl^\fϲDNൌ>B/a4k}'&#,a%S~- mCs`/b*o1m*y6xX;%L(YjȲTTl*ŗ$RG.,ϣc a/54:Ll{_c bx,[rYFIԛnq"'S[zY^H]݌ۤԖ|.[}vWipZe$O .Q(ILoA$2t(f.t޽]E oqD&jmVL%&(DTD*[Bi^^_$%=;WOT}0=+T#M 8V‘pe`+쏯#fX %r|y){Cf-s+;{ƾ1=<ϰ|9nF_vꜘArW"g~z:UkņpYuA'h%@|Z<1+D'NZ/|p=~b@KҶxQE:6o%6:%*>u5̓ RTsЊa@Փc+Ff_orfJ̈́ φM򍻝/DI0NgSf+GFn =I=X쳕zQ)Zhhm{++ҭoSJZeQՠԂtGtDaZˊBķbI4q6B̗dmMMAx p,rLO߃# ](D嵏xb`Ckx e=E, y/Ac(9 (]q&1, Oꭉ.>C$nOBݘſ "xHO<rAAaTΈRI5Yc%vi"Me2kQ }[8mܢVc-3FC\I*/}- }2-+} FEID-KhAJ٪+eqq$1]>Yq-?CJn!r|ϗ=|ךb^Ǚ8cԗ4,F@ u#cYvo @wޫu~(=qT#ůkǷ3T:H)85z̢anEɌA-2c]`yJ+8՘:eTųA"-]M]k45ԛ{gXt#랜}@wr EզkW|Yf3w+e;1X{]'+ɿ}< =D6~*y_HLw)0׻r]Ű ȋWEa!?f"*]~Bn ԩ$j]|[GnC؞t2)3\QJ&2)eP1!e41Gi1ʡr8!Nx$sZk0p}z 1yw#yxg_xj5U4b \%5>Wl l^F('Ӓ>a Aea %.`i$*Tc8 xC(~aR{ =Nbo!8S2ı=ޗI(Wl( k&X W0_s-H^ n]]w6BӾAubɇ~⡱/ aQ K"wJ7R[MLDJLg{F?oL.už poPΗҵ A[^ٴ!_߄o {3t-.rؕtБY.Qw< !JYT CM#`ȌL 1%~ Jdܥ0|z=d~K |`X1lU~҇nR냺d!"XNAKN.OkY٥OqR1i ri{O`ŧ%TZ^U@?S{ `WF7qac+T}9p~gg7>w_.&c)ƛFC7ø"ej6@Ck nǔBoYf-]o'5,?t~n'B-CD DaW/T,>a`ef&Zp>; ;GG(w@(jvH T,И]^Nƺ7r u?.p'w|{,֧O.c Ǩn m/,0*3AQOQQiDM`.)|O{A@{&dp}_0[L[AOË`O#nPH2zK2VP z1oM[("VwpT tR o[%092vX|4N&sd #|}5{c+mgxkS]"QeG@M8N>NŔ|f.$[>JXDP.ʨZH(IhQBHBPNnS ^c.˰[f)cv޲M,xx?=k5'@YM-HpqCo\M9-`~MQ< SD͊e99TfivǭD%,TJbY;<()croHyƿg_">Q 17RjX[h~%2uⳅ<+oLUfWT2-*]ەvu?x{BLoPhh6_s+3JHM^9_SPfRi0)E@ԁ|/ZL(}A 2->k'DJ' 4n>,I'dE|5XɎI9"豗Yt'ꕕ5rs~nB4<2q;WUsLZ```ރS+?V*( b8!l|8(,u+ڨ3c[aO4R=7aE@&ף)1!\fX\Z r%Al̀'@g%OʉK K3'V9sۻ)(#3cM,d 1Z qk{,vgF +p͈QH넞BQ+ygȳ M2Yt>G`@R>'!^h$πyWf1~EW0N/UJ8;$o6qQz $FJ:w߈_t_];ze11 c/.ms~oygsG~Yˋ6ߐj&jhE2,rzzt5"D3( #k ᐯĽ~/Gty@%0k.&F&E 1["'k7G'LlŤ gd^#a-aك<9_ h cvAHvد:#v#.NgD% yD/QDߛj%:Q5b8!5] ~>x9sN uDZ9РMm1JS;U#h)b$U{lh8;n`/ƕ|'ZWdy:I(ȉ#u rwԢ $ףbh+C#u4*cӇoA.1RI 3KOόV|cl6K_K#M-`-g6> %H^mp)@q;&#(WS pgnvXYGqJ=9.81b(3%˳A+87+v^H4{X&}o 6 ͿͲb׉X`*#T .#CO}/om- ][NmO#B Ȏw fnM፽Xi8P>ã񎴖)=̎5X8'׹?twKfw\_[E*ޏÛArp-j ǪI6A15RXrFr ovHqO\5;d]gRePS3 McOqJʉY)9s Rm&=uB"@*kvNV8q1+'a_XEׄ@, {O{jMR"SVJx?W1 (x=0vD34K_MYi6K6sZE k&g>*O#I,©U9GX/b?uѫ/uNT]I/c35z9ϕjldGi7Mẓ?7zM ѠШaNExl $[fKrhe\Vc:UpOʊH: VϹu!Sn"ФCbPr͏Y\"MA/Ȓ ӗCU*Lۛ/c)tVX-$\5IݘTQ_anD,d ȿ[.h^[oP:fOӉ0i%plmˢn8|u-}ٌɊ́-} HȍԚ>$Btc j6JP+D;!e˞AJe<N47q.[R['NOfSg܌2FgaDңIFú% 3كJ|~!mG qmۘvT$X 6!Qr<])xF&PqJhY_vMD6~)w8ӡLɧS\}&:Oև(uB'b,e٬b՜6ee.)JI"7ћ[Ұe<-FjIADA)']Vg;NJ7i+kb+#@ D 2o$/Ya6:sɷV-U%;Ƣl%ҬKfh,qdbf YnbMe`M-8l)-2XO>uW6 6"pDG5*О3⨍Zy~g k;irFw1ItTg0}vv<ſ7`"!F x xd/kϞpV|w 9.%ƱOI`sDuԁ,e փs ]nA%#~1D?-HF?H?H>0t E0].\6J1j5Ǔӫ&yW$;T@%(j*, +w\${>.G5]T1gfɵ3E\@tj݄uٖ`/nʓrwӟ%9p`rv 8a ]u lTj[4l'{[-G'`'*'z#FJIGZ>$.,2;2éB8oap-5k|A $P"HcRZ y9m<flpy'|*|G@LdZЗMd?DN Our=<g9h2#hQӺ2MgmHk,:m7DZYHZY /ۀo4J$~DD fÿ؋VSXb >+yf:}oHgh pU3qc! 2 kM)\1`VR}wĕ-Wj],5`۟ R3 [ShٖЯ4/lΩT֊"TVۛ~t~#i+ݞ:xmȀT@zv쁢yC_drhӹvv lzHc>#zΐT'!#!#;>t2qL3LAAL=SxVg B)ܞ)l3L}3crVgAzSgLmO}Fwɒf >6"}*:V凎?0,W%u5ur;\UeXd^at~l\6Clb:tf9XQ[KN|Gbj.Ԭ,`RdEKKlf-*;$S!=7LCUjʽq‚;%T/S)10A)M#rd P[^Up ѵTݭlO-e>t-[|B7#ds&d*m sNh vFE\8KFB|FK[{*rdX|5}S|+I&)7ϰXVKL/;xqicoSE k]dXQ[Ftoo< cICC_qxV K8) 2U%g$y$C;YdVp0_Kcu<\"5Ы"b=;fғ~" z8w|wmWthriV8G?>3Mwp P>!xLF|B{4}Gݫ|JAE;XvJKPt(UkWNt+Z8ؓ ?0@&Ws+{7BZh6wKѻ+p>ưP2*3)~Z=!$G%x+Ht nY'D3'L_p*ζFw3HbtxUGNfq%IueFϳig/ pn#V8C ehp#d7H`d2]tIr|tuzj)ҙ]$+ʁ_Rj8uز#YĽX=0eYaP2^]ÎϠjnrkKebM8H`zv-_⶯qwFƈRAAe,qC Y Gv#h$ v= Fz2oKSNP+HRVan"4<.)T#h.;̔u*GBԛ&pw+!YgOȭ\ے:'qҊK 1!7EJ69p +V(՜r {˃]>{~8\՗ oЎ)xKkEޝ2i?|W#HPNat`X\K|reu+.ޏ;sfpQmw`CPVMYI>'+K()dt8砊E:p4j'Y6{/+e28' uɸ4W?P4%V@ovUv,Nmϙ(4 rrDAX7]m|'+kVG>"nOq|:aI!(1ݒeNk]NqVig vGkqqd/w'kصg2"a6 HF_K*rPFIcPthݠ82~A,p GUx-~%FZ/k]I:Cyh1/:bx̅rN]];?\ 1AHA& ơx~p!`9FZʹl -FI\J?O *Bu}m;P2Sk1uڶϮ AE]wK?y%oΞqJg3 uöEO 8H0BNקwDC~\R!yM4T0H8Qc|͊%wXh>{+ǛRﲃ7{ qq/#TS=o6~d|;]Vs8kk y3Ϸtbg`bvW]_ǝ=Hܕ3E0l)} [[R[X=C;ت/YWDB#;19_2(c-J3(OAxq5<./*;8POHߨLQ ɑnGvAL=a]C;E5\cI*yh#^kC0O)xC1 UƽQ}*E9Ʃ¨7YbR@.>#]`8n10ǂ|q׮Βbz]ko+7v$f?q Q|mą{vb>s-+?Ԛ=*'ݬ5ˎSF;+]jd]6'J@[ܝs VRt \ J1j7rHoC1 ['Nmu NDKan-c[7Һ&QvP[9wy gtӹ7oo詋{[eɉJB)~\0\m'GgWǔ-˙};_ڳfEiLN uo!vy܅V9)dMyI\j Y.SUzesWw=\H]TB>|,/{'?%krg)YCٳԼHL:(\E:N樀]‰ĭqag§2>!%7~|`ڑwb⽸ړhEL;4#щd'##($IhQˆvb*{^!) 99պlԞcd/sP%/tc3U|3;liT4FZ'ж^,a=q uN>TT/kCqXhe'(5"pkLDq-jmk^}(6¦>O#m4:v,=E+0l'T?p\C8~1]\\E2ԝ_{5D+h[fjJL*CZֆe Ն0^\KG(ibH}6D+aXhK`wfMYKybHg ~`KWTۼqlL KZ.mF}O|\Y{e*ԑ䃿QP_̊BYE#N޹Z5qcnXi|<8@sޥfM Ca TdFwrgڕMYwLH)gpDHد#&YACž8w{(G ,׺v?6Dv`8Q~pK Yѷܯ>lMvSTo-Wę!{{Op #߂Z?C |ƠJCg!*N9ys 3N^ Õ/q]d4Iy4mAr dtԕ\&}M^8zvPE"SCB?Fk@\o13T[BGҰ hm[(T: FS& .y |+.l KCPV3Zӄ/G@g^ }myN-&`7=jM{p>8; 7KbUc Snq3=v,G6;0Ldž*.ZʁiOSKEa!M:䥌4l+B"U!γJdcϑ|ݦNUif RyfXO\u=2]l+NNqSqj55W\0]uIBζRk$#,&BIU+Lѝh^h a [MOs(Sh#*!KzlcHSۜZC}T[bDWavaDʨURxS'r($A˵l`oaa<wKs[NznE CZ1`IO*Y9oIIB˷ eflpMUn6\IyN3i!MCsyL[6N _-tHqhE%+8|Ʒ@oa +q֡;-lEA(fk5ZCZg)Z [WY2G6!:%6:ֶyjWi몕&2&$l`x2c[*E+YgR6Y_ Q6uL'g{gE=|s=L\5~ɿf+9={AZRcnN ?rq,=8^Ȫ]M]k՚Ϟ{,n\z n]>%p.ih97}y1o<GOrYuJEZ!ٴ_-w \a:ϝi(3 _pJ\ cԓ8zg- 3̢TD>&NS$I45TOSEԆ֕9Mf8Mks:ZQ{ʫB~{ݏd{|Hn_Ѝ$*d>0y\p&Jl⠊KAqtRU"ɶXd=ඓ!E.H{Ϣ NCEխ: [K7܅p);N()mF^y+<k̄#/I'm3 E[8$J^89 [ua>(c_p ڑ;ި0& &s dzg *x 6[E*GݢQ&j\c&Xj9A驃4,n D^VkqHZV_DU*婦`%5AOw= mot?A_ S}}=|z+ ㉹8oGyw6巙"E><}m(tg}Unjv;ӥ?om #G > `҇d:y 9O$>6ɼS :eIVwb]&"JX+F 9L_#)IA*Rian)z/'ʑ%T_ERh"B (E.Ds$GZ흗^p.X~7LN,x;{FAs߄v c P9N"dgwvOS+`~rO/}wmd;nK:qJ;:|Õl(@r({q,}゚7sUz=)Vwg~陭Th- I9ܮo$ AIA<k3H;!bB+GDG=:eCڸO?<=Z %0Kɿ"'_;RjdgXG2?bCPnrNLB:OFGvz( q2J $ԃc5̥L9a $#˝xpBwfH32N"|o͕L@Fp)rZu%N$U?]&Gkph'\E8r%HHw>4k% *R:JlHi/?a[8xC "7;~i_ŒfaZ1N$kvS$s.)3>V_fja!am첤q\Q˾`+ZhqZQy%n`L յ71n>-'֨KŒ͜2q"Pw4FZt.i /;(U #Q|9{8e_] IdIvB&`=Ibz(֫L2%+{Q(S B2泮ksYr9=J&(V+CHEK4y"T|,Rh&R6|%F(if.ٯf.- aZ}l*L7p4 HXMN=|2ͷPn˺8LtWMnk1*`j]]jltǫ#5݉‡w'rM&JeR;&bv50ܩÃs'a&Mo&<ļ ]@0',-F&K(u7{2!{yg:5ԺicQ2n=qEiίW &ÙCCC:٭:ٮ:ޮGvmvڰ-[I#c1.{++5~eH2|/gL,1L;*˩lA$4ONW|Z_)yr2Wg8Qz^l0@XPe) uw(xiN󳴙THAqMFSxJgk)O8F1orp{s$*i#Mx'd'n\+6Fe7:, w6?opihj ν f@Tpsem| 2P)capv' ˬ.ś(`Xs-"\''p CECҺl$Y0B=i:afY87Ca{ h s.rs SNl`&e*vAUEJ1R`K KKfpTLVX2*''qLyeM } ?{#j`4";d74r-TN5!?>Y'%EF9)<kӾz%AW3CV(a# Q -<+5t~*|q90\F?rhɘUlb@#+&(:=_J2j@/ncXtmI:8TDZI@kxV(&QG~Qs@1,X07rɝ2RRK DF8.jF~plH }3wW${ cJ*jF+ޡ]Ĵ}R[{h I*?@IܛQXJ'1k'~^Lw"/U ҽ}@jN?T io7 &_؀ »7`19yiܕ;\M%s;7\n+˜`Q\[Ēٍ# /;3!F_./>o-?EzT+"نݱVn鳻NoTtAфC*Ͻ<+&d)+3d_ o0I,p'{ od'H)%O`A^EI@+Q"fܹ WCR+!ǎڑEQx:YK=#.: LO^:y!.C$ćkW F]W0%O*\ļMi]C’]+j>K)öPEt`wp~yYlE{VʐfrO9~TfYDZT9f4|`f픦L\U8WI?cq@H +cJ"_%irVZ% m^C#<^YTo9lRd< ڢ_{QHH O}M+!\ɣRnmo4UJSKVٸ+q.UJ먥}mfLW͆ a  GyTi>^p ڞ01\63C=y9)b)9zQj&;ՌU)ܿ8q9{秮鼭 AMW [N\z\PK`5jH\j.LQvkTc݄GkW<ص$h# iPPrlrwM&vHϳOςY6\;N>KrKnL} L&~@` N*O:Q1TFՒdPPTs!dkKV)+I"`JPCd|`ʳZQv$giwfSr4zvW2yy7>mܗLFKfHhSKC^X]2q>ejiӢ  z/7&.uKiقRm.k&UX]Lb+P;EZfnjudZdAG~qPD`MU)޵L* kspX`ƸH`>Dně`GIcySS-{ D"%^e^x)qnig`OF +5RB, , 34< "#Q߯^.pC˙ /g]>C,ǢGKtK3}-CVlzu2ۢ~K0-NmwR]P]%0_P?F8S1I/SBifztz.ˆe$(}EkX.a  shSf<ʸ^hXcF}@?0u3wMѕHvYnd[γcXʺ<ׁh KDONلK8Qmk pT$[-`'@bMII#3FC+eI mƫ-f7J%*6` 3x ,D` S~扌~oPGfA&#̃ZS9ID݂e:6>b>DijbˎSPȽT^B1+cwYCի\#WAia/^9m1/扁5 w<&3Gsx7D v6#k86eK~y|/q]Z*pwA|Wx.?by@y$8})"Y 1XmB"ʹ&V,)䩜U`(ͺ!D/T'^\t"X]pCgo߽V#?55JFW"2VI R-+'IE-o<wGt:}7Y=Hˆj+E + R΢b Cg}P!ʞG+{^b ,W \mV$~BL?i?G*o3ĭ,>DuʈI n& 2zkD)v ׁΆȅر`Gȴ v46 <BgЂ#f DtQx e񿽥TÄq'%+ff_2p"e!̿Arkd,c Hn 5%7Ek;L*~:o@xIS B~4of!YB7ՆЫKPA4$uKQI [+_q &f܉3CBޱzR&km+CM%HyGyPL; N9sśwŌ3QoY#i -}"(oxO~PZ ApqB_^K >@Uc73ƻ /wDzh/k'Հ^3"ro>~O߲'Ps8'.~ YreN%񹑭X88"fp\|{_$K1(W΀LEq-҉⤂j?4^v@k tEOϖPܳD(Y#od\ [V$J$]U}I#!_sJP~~G6)L |_:=|JHVBF٘#S:jGZ cOu?zo/.OͿe[_̎ ;P"Os%(P-bR..QXDj(,kPB:hH-ieCk\b͂ƒ- rA։x Vpx-.sɩU-QC͎/k2EE$DQW$PMT/{eklsa%75ӓ,Ei2L/W$SʮC,cLD1xM0媻 Rq\:_melcEVF\4U2c̣NB 7y1iApp8?cDM[b|PlSBWr,bin,\U:/uPpfE< ui[Rt`70' wZ,"|k@52epڎb)q!/U<貵5IvЦDat#Lgt.E$F|w Ͽ]>q{Ǔ')f];oƘ׷. *x jΝ>srAܡOf}@7P`Mfv.DbЉ% ^樱M f_Чe'i'$7(kJ7r1IX|)HL.2m֛y`+(S+g^xhWDo_>+yo$:^rnEQ!r -K7ĝvQOkxaE q\Ⱦ,tYK+1|qGMiǴr㲜aldZK܄S㱔 oc͘.[ 8p92W (E w-?./.OͿST>1$ 28^d\ɞFnvTƋ$(腷ITmkWe,)7bv'{M1md~W̏ۚLYz8 @ P9c,TFhCDsrNM0V}R&ѧ&m٘ojh]* -RIC5Esg(*o#+.j^'"V>3J]gX:N[jNymjUcXyz:@m ɥ1`:Ȕ IT!4-%H+"m=4i__nV- BEG}WC\ί"vʭ3>@]&a~5L2z$`sfDM;a$ځ)ǥ'5"ma5k,L].> nQ'X|3 .`AM(#:*㲦$ |+%sRռTk @ikZ:OJvPO3إhO LCtP*R$P~(_ڋ_|o* %Ҿ,1-GL\ ge2>S{[L֌Qaݝײrkis7} !:Θ\cA*+Jv:@b>A b#̂T$CޔRa[Hb6ms-qKg -uh6_nh'yY-5 XD_ \>Mm:8C Q3xC>yA>E ۮ$~L&(`ewd PBH:j( 5!*^ 0cN5a<?/\Xa?yƋ^,› vȋ~9;ͼ2ܱgeP0'x 0'zAؤ})$:{Ԅ`Vkttv߃ kz;SܸZ/Iͺ/Μ}+-}w0$?L =eLƌu<m| Nu2A/bﳬLΐ9wuG&mW@_Θ+ ~mXH3uk埢P(rOImzZdy_e"AIiqrkU! y2*,*[=\򳩞O ?YM+2]\G{CTvvP;v$ǵ7Uj%.)U"ݔj1;͋8NQ2A U\ x mN gTs1Y;TLifۑ{4XvNNv].yKp8uk:$&NbϓÆ(,ees¬]3&ALg(,1e370J>(߲=SqƌT>-pTf!k4U٘ژ;Sv" h| OGFwn_.geϾK:X+z PB%KM4H=]ЎeW!ϴdl|-Դ}v9Amd#oPwt*D If)ϥb8+/vDB߹l/JM$`)XV5;Rn1yo58}}H>>?v0eq5ѪWɃG˘ T;kZ<3{a/g%vV޹~>J?p+O}XE.T{2e>TQĔS`tp Xbu %+ (}HUYo'+#ָ\LSu9hў5 ss8كfԛщcHͫJ\D@Z ౘ1ovsl/4h,p)̛՗F m$ ICB~2;Ԙ2hQ1u,\@: .ISio ,Xf98J9qLd`j -@U7]Н{{PYBl 3ki)α->F## a[c3f'ڮlFGdB?nSp ?dԴZh,<-fNWbI&vR`fZM >QZjRKwsƲ\S I]sp!Hc1ڤ0!BsXȱkAStWL!$% R" Ea\l8l~#dowYp'K.ЇU{GПF_K`@p & ]dNڑ~ɇ'6Uu*tJ>SگKO#VT~NeWrgtIڴ4mJldLIm6hx) JQ2ygP=.hzxKioCFTo5yOUZ܉jD\-\! :7 Gm{ea7 3#xGsYH|Ө ,eifh+ D\6O X!k27ވ0]eoOCye&wE(gtBgD@H54 WH IJT3 {s9i5 kC籊T{rSxk2yU& >1ܒ+$(z'4(B`$9ppa1'*1 D"Emsu-n%%Jw/|قt,('7@~r9Jޮõ7"Ppwep1KhؐXJh"u"NN.}\bzF0fa}"aw3o ) j* -adyVEn)U'&d?BO臋wBʬ9375$J"Zֻ!EY2ڢ t/Yd,_X61TʍYiI,밆f' V\ <(%>X<i,yN)Em:Z7?40PfJLDlʤu`lN[[][[~ eIvoQsm2{q("VmM;oq_(07e}IĖna$[z4˴}z\K ^f<7˽ʀ ۣ@h\ n4.Wpea]cɼ\Gf8P5]y'Jzs+OP$nhR.J6E}(̀y=I/LzB8xGz$ ^A>(B/.7B{.$ѝQ# d^Gmc~}FSW}Hy؁wWg*z r66Rv+ʠBp}}3'Nd^7OO:0i4mᥔ"K+W ~Hj| *5o#8L6n.XsЛu"Zh#=WG[zdPxwS^h5~ad;MO@?;O&r-q̀W<^Hy4FKoU'>f3wC^wJ>Vp3Rڇ봐kz9>ߒm2m2NCILC[лA|lfwT|!u:ۢd%Gw|x|o,ss4NKFӼrPM!33Wq·n ^'K߂;ޣ܊R0VH9A:G?'=i3H S܊5d*ίj s!CpK>&J_Ay跘(q0o3_73O_\'=AɢvPc ǝ\MN8\ꈽƵu>+vE:re=bf"WPBp6\|^\=. :%NSc/Ѥ!uQԄk@<)=7Pd3Y+i-fz4qr!)(n#2[ Uk3 җ`b s9c#h]Af@+)!gC -YŇderRRg0<7DcO˧`.imJGeMBcp܃ⷤi)MobZ%($VJ_S:hWNZDs_'X|\%ٰC+s|QQ?C/`u@:?\:3o9s.Zefڵ>.e`ih'Ģ^1#? ͢Z &]oR8Q:PN39.+hle:0rx;tI[ $.C0NQu9Ey5yDvOͷ)K=FH˝1Ub8bhO m.7B[NlۚR\̈́wwȄZa]{.ds.2ҮHLxIڷ%hP6&Wg'#v b3#3¾}ЛuSH# a?gQ/tS)|SZtnN2bcHP#kwT= cEoTR14~dVX<$03(|)7˗rTM>\%;rF]|;\W/t'!(d0teiQ_ukS~^P翨8ތ G^%_C&z1&f ]%~-GCJWwΰp;X(%KW/>9ss}9}6اuś߃t|ɾNiRIYR_S M.:>Äo<(F8(pd9 ŧK+(w?!^X'yzIڬK8~'_W܎6B`$/Zl5p=x{[,eNEZ[I "k]&u?eiJEVXzH$O4FʏݎKHNm`iid œ_c#єCNNd*Tfʡ.`2cB~ש7ˁ{Q~$ l d $O;;i9LTH-2"L+?#`D|a5d 1*Tl6KkIH9Ԑ`:,+7)O!\Q\T["ɍNJTPrbXw1E:(* ?T)"KI՗ܣᨙ̢Al0WDsp*lTit׷0ho~2 >ҐshLO[uguކrhܒvՑ(UM[ 6%5Zb*ڥuOzS2ӗ@P~ 4YI׶Fj)bj~ dQ{jdov/؛g9LKԡBzHvѡ]4*nm)2³?v^OSQ,})P:n5:~Ԯu4La7 [ F k'N-Zsa┢*ڜIO UG YXEF乕2P#3aOx.k%⢄v1 ձ&6M;MtU$%z>a~Az$IJ/mFi=T\jb RH ({ۇf֙]ǩEy-w%Jiy2S/urޞѳS(h7QJ2Lxfkv#Ͷ6Z"TԊ}XBnEN\ʴ UPܦtwR!bJ7.,n.#<ԭ|E017!C1hL| ;w2Tk5&H6;".살  esavh Ri (L瓼l֑- z:SJSEj8m¬1b%t4jT!TYz1@ip8]AkI*XxݵxyN̎aG `zI?^؅? 9R{L!i* ` d>_nй"%*BR3R$ 1>wNy#x n0dmKǔ2yZw I6M+g:NEviÝ /3vH.f29Ka5ewY2Y*|y0%-t/f8 Rr. rS?!!]oS<w>]@~u1ո!mK"I#yGB5I:JҼ'жk __6E]98vg/utkǿ/m{Af]޷H6}o} ?zk n3kJrfIڭ2W6#VԐêlQ'bMѫԴvnX*֔l,)A׵j5C OT2a.64pk&`U˨7 񍸙dyj,(!|$]T F\` \ U} 6֪lfOf#/k91B_ ;bkYÚͼ VUѪ XEØӗ:O!O[>Ƕ^E:c`8ڽwف3?~bԾqnX>I(}W'zgӓkE߁{ on;ھs筃O\IqC0 ϗ׻]z^Ndbda]GECK}wX+7t^~/UN_h,Rf[s)D^h>ve4ZH @B4DS~F코~mkSd}ӛb.≧Sw.W l(${HT7_aL)Irn !NyYdg#vнu.֒k3[zfqKHATۥ륋C 0G g$|G.% 8:ǞE|Z@8^K/n}+OfPO@%|~ *)%h&wԂg7N,ghB)ZTc(#1ʗ>\WO7(ĝo8+cNޕƇ hڲ.*:hL:N6nX6^\N/GR)(^Lwf^E;2%Pa{Le)j%$->l |1L;<^,\ _|u>`J%m YۃC鲒WjyP3ŮV<{Sxqn2)$T&]zy7p(s8KH<-&>//Eg!I:M("mB- II:7(&D `c"CcvQp}aZ"=C!t 8]2saK\^|xӋP06͞zjzf(@-|BhP ũ X:8~t5)/:Xe$fGoiH?'ri嶋8;2 /\2uƷ|G]>59H6:lUxkŨn4F?{/{Y->\@ZN%U.Z8(nh5h(0X#yɣ恃fA2Dɋd*nk븐)!N?gYħmmTKX!-<@]twBƱo+!"ڏeVr9$.}ex;Xh 7VZ5)Nrb7HcS8(Q-P:pN -0U9x$~a J*`uw*utF9P۷[떬mE.+ַ x7+<[+A.I1im!^;$RHgF" 72uQX8 |ϭ*`MF+` rE],W .6m`llt(<< /![j=sOh;NEx"˞^^^\jQvq'qKviCy %%/qC`/ z ֩[r!!#M]-椗UXahs35Pa~2=\!'7>4 oGsȷÝBњr#"S3(T3vdC|պ: 7Oȁ]+4`uwMNx) &$&-\Tԅ.ʫ\deĘ.8EI^ty9]^NrJX, Uhn" $i`V䛠|]:R˄O{rCѱöeHqEJ}Mxԗԛ%xzA ӏq$^ƍ^$3<EC,^>n';DKv'G׾ .ᾨc(ng679=\e/gP:evp݁=u- ݼ|wAG4!5GA5 O6 bxjiЈ<[$<OXH⽹ H%HU(e({VnoI~ j-X/!s5ˮ6]ǥ% b׍botE$bW }ז+zi#&8Fcϟc:, hϾ,|>5-~۵=._{*/Kg.wO͔ LJ? RPT?9jѓ$BOu6zܑ'@BKeȪ` ﭜ9؉ՙtV:z-W=jwW?&j82TޛH,[倷jr JH[#R6[|\7.DIC08pа  !^؉t[R^mԚ沚2|]P ztO.+[8R yi=@{(hɨ2<#Yһ,ԁؘ7Ɛa47|C\xPonuw^~&2C7 Lr^waލ@o3=] }tf. C[ÉLJOD"QA%!Gvq1$#k#7v󊹅UfŰl`U'cpH*9:ʥ# -ը6Dt9U6CD!qg(ǗK7vxa EHgŏZQvd?0M!jTPzqEG7Vi2"G.N6^U8PbP72Y<8 d٭I)[_gkQ56}{Td%<%CS J͵Kfѱ&nv!9xtfaYM=s9?{K h|:xJ^`PqJ*7Hv5j[.זU*A)r*uglC̷ -jHtsOzkSo2uOHx9-c0"j4XA4E=?wͽSOWOkyLҀæ {. /8q.zǮ*dhUoYAh|`=alRሿ1p6\|^\=.yޝNhG^hCW>M9qpE+z F=,:8PAI7vk34]&#'*O " ^&-1Ϩ&Lh$4e9sF,@\V k6H"椤c)p6"G?d|]HºHX3-G)uRJ$K] *Qc. qL뛒]PPpG|pI)H%ɏЖ!2TJ$"ʁT[i*I_Ꞿ  P-,/T%|eAb=3Smz:ˆs3&yn.[lY$i+uUAnKKTa7%ܔ1tSn7Xxg߻?ya Yx`[`Ɨܣ{۷Lpii ޿u޹Kk (,q\]Ծ[d{ *<3 SnpqT٣1ݪ*y=@,tS8KgRT /ȻY:>s٦85JNF%m[+XdYKY"2_FֲBr>_q4U:Dlg*x9k1]P2(_q#ך1"ggoEih8}YaQ×e|/Hk.blb5i YMRd;-E+(|Q\#JXKtR8]8p ? @\Bzjf#@~Za01'([JW)g59mvDӄ[JВlf87K/tLcm&{"RI q?h+7CmP#L VSmuϫ)ŖuLMYLBԙDM'?)Z ykk0ci)CƻP6ɞ&h.ҳ\$e p.(an;־eG=n3#Y B?] T =S4D@t(5U 3Gu<-Ȋ"}w~q=u+|a[*^whtsztʙ n+dQ4Lԭw`[f =;E,t ~ FE#^3G$f6Gq!|~ D#=1k -,X ?xJLqD~=Nfщ{'r#IlXG==Y=8=jS*t/0Geso[)6%N I˒T\ UQ&8Q&]і"]˝-Ov7{m)3-!]뻿 -]ߚȨi*)0̨i#?l[MY㴳DĢ6,lj_P-1W7R4Q;RQshpKIzn*>729 >7Rs$ꂺhItA-)_JKj/E> M.K rҳQaQ@ 69zu{uu4,$ L Vl)EKP8l}qKtp%j) (= {jU%h?¬ǎs8yuEozc=({C`[x/W1|Jw7L1;q>B>>oTS:YRYN ,:OO|C8JEyxXGm \{)If؆SRfM`6tHi+ĉݗʼ gqr8]h3lk+A-ĬLv%qƥdYKc x̒ݑHrdKD8EPx#QؗRFV8ieϋRz{47I()Mf~ԘZꅁ`3׾q( ̽wQD`8wn۟X޹A%lBHm3FEh xP81Y{o?p 48or0:N'`g39Qx;ovMؙ,e\fD,ݲ!Ťgs8&<6ħ3z)K c p"[d>*.uu!F"CIblT⡥`lXb.R°(,*Ne~^:π9e±RG;0½E<$w9: .ɾ jY2mC 6=BHȠwBa%X  N2[CB~"Xi,_AŖdfEƑžѹ ## Zc?uc̦??6VL#6,쯷Ed5Q{T{ ʈy1yn`Ĉo_]h&vEw~Qji.bRYROR 'Ub)lԈ9hE:@vUN{{{VXf7hp&.\rVQz &X@y%%$9/MC*OM i5f#bHBҌY=T@!eV$N*kj$%.EơRJ¸w5}eXYVE>&#V-`> 2bhQ2zn3o4+݉h& WcXIB:ƻe9ө>4,Go\/,72~CeCVR(O|SdEJ" ͜­E4°I#)s1m q*r{}uU]`\dCn{q 8,Ï2>ݹsy 0E&~WPzp +Yɹ)Pfߩ~&>(4XX^J 7U (Tl#TRP#Z8G<,b4"Ճ9 365oDKSo*v/QۦF]r'uKy?6Ή7|!QNlIbi;2F*q|FbGZ(:G)YjʐWe8@0)'4aN&4=/:|>"DKD7eUϽ[CUh$ʵ8۸<&=q¯)(4(q*$ق7n"~7Q(H%h.NW{YiP1C!P2uQv)f;6ULszAB%)iEQF3|{8;ԇ^ȯ>TD(abӐz'_Oㄩa*_Bؤq% ͍B) 6v%?6*hf|87gkd'?-T%"_/4@lm@IcB슒 +lrbI2ڙX-:oP4qǖ83:B ! e=aRӆr|4&25r@>VpIF y+-\D'`b{`/G;[/Q)rf24`"3,|EERZ,DZ>,[Dj\.V#0&9򽮺Ѹhf rXy4*]ଳ1x'MIŭ5&Y#x=O+XBR*bx"PSK} ޭ^ W$+DbVmA"E%huo1 "i]5<_P 9WUehOs wrltghP{ z>IO|.+vf ATFlPM+MW}De*JPI(—Ӈbf FODt,8df6MᯏJ "A^3ݿM$H< M+Ztsk"?{4RѠ$4ՇDx;W+RG*ęQLuH"& 1p]mW T?âjS RusɈ0ۆ.N&qN6) iҔb9~{΅hM(2'/uڦp?o$TmPŞ%ɎHp A.el_ 3JYoM×N/KyxSV>IYS]xߤ$/Y"#J-rwƁH;+[qGqB <Njq1bItQUiZQ} wϿ _&`0apx7<Kw3g~IzoO\uק-;-tÅS8+r 5eӯH[OŅ:Qg Cll74v-VPTKLw!<$ Fa}Gm'QoS%L'%/"(a+d.]o @μ#B?_^_!)a  @v. i,G2~NГ? wW9}c p%WB鿮w@ߥU3MǨŽGzrY(x)]&(O|iP\.& ],>4 px>-ċ>#`*HK2>\MN;Lm>sx z?KL]j1 7 '%zT'+Ą Rt]7jM;| .>\O/?.ޞ9 DWJd~?4EϢɌ1(WIf3zN_SfJ{/zd~SWJH?!o3e(K1i\hK^9Gx&3҇taAahW.Ed*[w%$3Sfױ3ٹ*-ѱȢ3>~"' ŗv"6Fݝ5Uz{]#4Ó !;l~+fƈb2q I[+&bJ3Nl7FV_"d\a,Yr@Sc@7;*v'o5dIv+O,ݢܕǥfR7O7ZݽIHUnD4+\$[ESGIf 8UY95sIB2 CAyFMX*$۾@6f avю7@iH9F1[nĹ,!w!o?wOXnPV\9 DYvk_Y9#렰de VHɕ 1GVH˝:ם ʎM$k)e`cѱ!ɔm(ü0 [-ЕۜBq6]~ֈC&؅GClĜp @|}ӍcXcXBGuYj#+.c$>++e.!d:\}N^ ew"wzm›'?FoߥwA^k;[;a= olH_՗kwS`-cѷuy8/.JsGʡz*Ȕݠc(5ʈ!G/ӐUp\1[U$5P+#yPX!N–[[8ؔ5 koG,)znG$z&;\sJk7TUq`|? ?3Xxڬ!9q/ yC Oř/q2>d/v>>hp.U,6K59JS搽އ%̛Cݻ˄e?4Y۠ -p;=!C?Bjÿ(2;j!v}+ٽƦuy$jL1 ,,\W*Q\?!]#}(lKHu Uf=vOx2! .aq.csf^%v#&_xd = !KܰcD=\UDq6W=.n|2+d-Sh)u38\Kb$\B[ó$lKX)JK Jr)Q2mjN݊ =`kj}ܟ[07G- vDs4zZDBOsz~+8[yjE9:;;a[VW;LPD}PR_1:l/lb2>d~/!v.C{LJi!0<0Ds gRy֘7?dzx ~}RO u n8 b9Ww/}qzyEr8*CDž: 0NѰgO/ۓG"]w@mRPC\Џd@z$?4*%&HBh]E4FyQ> 쌷=_vTbї)RxbWJ3aHf+;ZjRaoW%SC( E{\ 6hK(_'fQ75K|$Y5!K#)3]HTMgI0C*[HI0T^4$@OiʌBp9wi#cIJdM#El9t =;Vde GSxFXZ0=v tr}ޕ.حKD7ȆQ#Yj 6nz6D yygjbftܾJI+UhJla/tD_E\ AmATbBye9s)2u܄_>j˔SL}wn? 4ǯSQDvPz)!MMNQD}it!ܒ 4=xKDِt= A'ԗ.yB@:z$EePUBv"{oO٠J{}k 5Fm DlzNxf7_:tx?{Flj%M#2)r6Gt@? 06CWhMjѪH='ӔDZAZ*b!,u[jDqZI(N6)"F\vX_+ $ܲLӵ2oqMc~Ѩel@>(IɨX@[ X+ɔK' J#xdoϹ[6Q |kgmmNz$[.]drQ>"X.Uѷ4k7lM#nlWK kۋ8g7(`EZj ;!|T9= ֻU]1'I=*kh.4^*Gߎ|{tppȰƎdŴDxӥrF$1q/*ޭhu4c 8,[RvxtkW(,~d6N?Rc2`#wMIF0"y'oޟФ$*nD,eY|hW}ۉnQlPaޯgAX IGy5BƿW{-~2[Iq 1l=@nx}$|oE9ƽ@gc#3%~PacTwaAq% ޺loh[^62Q{_8.NFT8 3ITH>z LPpr т$%63q)$ѡ#+=NZu6]<䰼x7{8Fe gP٪5rT6b@@í03OMBSHY+p`QņFfsu*,2K}݆`aى6N&Gnb"s:Щ`ZS9u)m0 $R#!ӜD {ƩSOE={=: ][oY$]si,JޙD|QKeu`kV%IZW`Гmtp'‡K|_K["OK>ʧf3/KȶD:p[C¥*ڣd64q$;bvqnWN@rKB%*-J-%pJH'cp s_d|\$5o17g|*U//R. r؇%rXF uhoW7mOiC^ï5"4?u$ Z"4sX=Z@͢-8*ā?<Т6ZWM=\hMpA]kT;ُFEj1WrȒmDB@Um(t9Dd2`J8fI tJ1J ^1:H}Qj8T &rE U_>+[)]iiTL4bU (Y҂@UҡFu`DOE1cyDiJ]nީJ%v3wE<2)kǻb/ѻ[z ]n+ns̗M/U ) Y^Z".l|419qn* X%}r>lj8d mPK@Z]FGjV+T6%ٳ.;X^2DR7Bm&0 O!z"׺_(@.p1RG|۝ϧlHZbg`,32 SqLT ΝSxFgt:c<`p,Eߞ|:C#,p=Xϳ/?sΝwKfmds{aҜl'^ډO7֔"Ca´!}2M&N@ B!AK"㪻)@L[ElubM=] 6zK$}eSQERc$1Oru҄R"KV`JXxiɌȒ :)W+ yhtvip0XI-{ $*c ٧`-aw8GٓK )dd#Ҽ%박~TڊhHt#8U"lbn Ԥ^9N2Ra$st6NI@4HJkPJGXivgcplr^euIZe\Bl' ]eg-Ž몹`4f0TFz Vs˼Tg]Ϻ6ڄHߞZ觼\n&z*yG D@̪;.Ys1]ɯBN_ŠǴ=hٳƻ'q2)0qm(wZb)M\*Lٻ@W 'D֪TGóVŬЖ3X2H{'L6AKʹ%EQ˝Pלv#B>|\;Yoɵ&r_Z3:8@JYL/g-o'בF/ AUu%F^x%?h}(n|̟&npEkj4[V]&XFe?̇>_E8},>T=Z/7[wm;\꙼sNxa^&*$Q3WW7'G7;>߿'|f. C<,<D ;B GUD ;/n57VA7R1(GX^3ojL3N,M8"M M&&Dc99uTudҒ \ N݀7W $;8 p7JE} \R?,N [`"v1g:$tL|\ʀ9:=k?՗+w^.CB"-Qɩqʬx\И5ra!u hbffĊNUH$FJRa7bY13sxA!ĬO52V}OM}'GKd~ yr.vѪ{szEkW _@ pS|}n$da!j0(WPMnjlB2U _^bAОޗ(-su̽Z/fdEwѓQo{ɗawFf.0o?mz1B|Zuw#du_ F ӹ\IKoGABl\膃Ɩ#g_3LȉO8iX4PEW Tc@li14%l8*|LJ!SbJw,1Ci, .0*Zh R,~17=)C7C7OgXcG`5'Io/WuNo4!ƺ9r7wvX]-C<$l܉C?q҈ƥ?sD01ka9P5׵RkkKUƲ=0c֍⺍Dg9by`ͫX9E t-ٵCL3kqlFV꾬%d wTfT4NUHg"IMSze%B%XVbag+X#w+'߽%'v*c@I),2` ;ESFǒczS'A;D:G:rp$j|35R9F9K+0nmGjnAհgu[@ev 2 ;E() {ؘ&md.^!H~+%_RT] RX"4"Dd;q\s*Mc%icZ%!/5>jEN¡E1PgRRXD)G3ߩ9oR"8_^cK#VAh\snt͐/:,N:nvVƶ |ͷ +wקHg-c w㼑 3XRwDCAjmXHw2h>ҍMZ=o9Y` | NCLq MWXđj%'ĽY: QlT4s;q[>9.bI]qJWZ&qa[kSH.F5SS}I#d}~~ܠomh"=ϊ,n"[76\$f.hC]K^x 1l ڃIroʺhD>N5`,e L֩Z1wޒLr ƦߢNR2wi i{[D2ͺ}'/PȾbxϩ=(Rݩ2I(ŧLv%&[s$L1_Ai6[m1\oͯ+TKft]䑬(*$kNhT=] Q3N7 v:'6J?,-e"[&Yߔ\Y ) QEDJ0Wji7lJ%TJS9>bծahK֕Sk9 I#YE3 F_㧒E%SQԖ*L\$^#ɔM|QeT# ~[vJ-ivnFm6ȧ=Wn!z}awkB&/nl6ǺJwJ4I8p]VEgdAQpLA"IYqqXe 9ez=K&o>+4sVŎ+̞nlG7C}ov8WylßZr16w"Ι{ƉoW8`.&Us-뒤pτlu6 (S3&XodzYg|UfYQ]/X"qv@ P{ncga g5$S%u=sP HG!RS{J\Nn5IV"dѩ"Ǡ$l4)JԳIdma8إlʙܳ<ɀ roiN&C^8&?νI2Ț~9ťjmo6IXw>.I2DHیM7]訑QM]g97>Sm\~Nw~tqy{5Pqu3^ج ?_/[#&^z`2g9$_\ _!FGa]$:9Q=uCbc#G=qԃK֛k+! O]TQ (e/]PE] 𢿙ZL>Ϩ!ݽԌl1 ی.2}1S"k+]݉ܖglt0Ƨx?b&e,2P&2ݼKY7y҃1YIrt+}lBjAV !CUV-xkp̷_|i7GOp *royʶH_Z¼c H?hi.kn0of7*Q%Ƕ4z]WPT<%hxLJ6;o1 h>4W.ɦcS11SqэhUr(-9gTh2GIKjO1Mds ""\Yimk H KD PnP"e/ @H؄+P&,Fz>k"ҤHÄH~dw ;6Y퀠!@Z)[ڊ;|6i;rZ)%v&NۻL&^av'yW[ߟv56v7%*-<$ F+Z+T{7ۜzː 6t^p y8 X7P+PvW=vاA? =/]O:V8m2;idʉ?,'{gyq=/T fc2jc\\q|0 ycL֘ fFoBewt6s_!0GƜ?ۢԝBY ]xŌ*jAG-Q*͊S~zX΢M A 4@p©yuG(x+*qRNKxe%N7e$TL]A"!(:OH#F%TluX}ɫnUljYk)K1Vݽ9 oWϢSo1AeT?Hؒ>MvhZ@UA]*XhR^g>I "brꊄ*kZp֮Ԁ ,fĀaI;jqG;(Jc("a8F;L8$7֒3Y82i έ_ZrМ\ OŇEcLs((K%~v=[/%^ gr:/wPf`>Qp)*鍝3#w$\/27wY༹xʢ4g*3.ogC<# Ya 8נ%زVB ŵަL# 9OsMO's'sqQh^^f)R@zWDITnh?ؗӾ|n" E7U8`0S8ؤc{2:FFdd_HljƪɛBV1*vRb© OB}-QX)% Lb)f s&X=*1!%E}9: Ʃ(DQdS5dΚOR-=ΑQd:E;sX%[64 .rWEɤqr^s+, CnVaHqq}d<7by쨰N #bD7,K|Vhiy u~b167W< ,:ezIC)l@R>E {EpsyUѥZR2]>)(}L }y[]B.1<8NIdBF,2 M?PĈ](p0,U,H3NH]) {QRDlϞ&.2"ݚMc-VAj \)I\MEj\Řj MV-<ea{P8ŝBrXJg1s׎Z+GWnjЖ]N]PFr %]/-S5N]4%27_*u9 iRIL3:~fcA=QRXHm@q,*dYID *q#e}Bv~ ʔ1b#Yא(#%|QǓʀETɜ#"*$H%!,4 GqA_<(bbu Gy\q5ɐWS:P,$NQ t<#RnbR97}6O?eѺAez[I,2=un|\*A9%OÁa!)kp<2%]1⏶'A'O!+FNߤtUqzred^-yh+'IN[O,2=̧Vm.l0LQ\{'!UY0&7Xf7pvgʒ9mێ@Mgt| ;?:]?xֳ߯d 6p 6P\*~{:z|t} QVnܠ{8gNT}ıOO?fzߺKD7o']kL;";[WEMO gإȏjl,<3!p&UUT7Li"qa1)dN5 2nb/VQ2}gs[ 0\ +ΐAT=/AM/B+q\ >[XC$3f1w&>'|x?;Xaϫ+aZCQ*n0;h4[ЁWϡ<50؛z 1g$}|֎!6"O2]zn,9af!7q\7?Vҷ}EklD $r`~K zJaʦDx= \?|5X*r9#jIkv…K gg;D] hC/j5Tp' /|X󢨎Ѡ_A!~MfO#u,OPrJE+vQUTViʴvi &,+4 ,Ùe9bK%h7j%,B7l9d/XIlk'ӊ~WQmlKURx~F"%,[8't/Ϋ*qЯ@[3p^=BɇC z"XIGo.g_i:acW&A qiG›RtIS< Yb ]b1X)xpzgqQ~N8 Ik[rcb!(tڴuDƦsھHh'Ռ7QV˄yZ_n)s1:x^ KV4~;M6%`lai}*uFe0evq#'vn;A3v6>vv}욠$F:f1LL|CcWP^s7y=k(ypG;wt5Bw__䏞"r:Hϻ^l1܃~"qlșL6r݉pOs@~S_)'!h~&a׋pgc7i34?@?{N=t Gh d+Q#޹nJ7.="[Go.fݻgq8KȋO"嘛а撙Bz ;~Oh|i) )> q-ן3;dŬb}iq P? [,3W*!F>mx䮂­ Q x[\s.n'C+rj/AT#\)ޞ|:==]pt~<]?i{ p􊼇~1~M5lON"?|̽ "/ MzNWQ{+E_ǚp5C60S(A[AS]=)e^$v*>ztz/hBEX޺O pðp Rk+FôjEH:GAo>iٽ%yݒP`wtuoC ?s9~6nsur?&ղ dhM5 OR˰%w\]TAJ6vyp'U8+?^Bm=Z%-zɳiΕw-.MXUI. r2[.*#.?$~Y4Sw6? 2XX!|v ta"'xsȝ{36s+EnTx.te_d0!ʅM; AG"頪.yPVݗjgܕ+$? ze «*);"ȟOH>aHJڏel%w;[)*r, [PeTn])4;a-}x0ƨ-Qd U1jq ̹:2*|YQ*iV Ku7zIxx .7 Xog]d$f;KqNu2_UVP VT~4~B/Cn> :;;:d#|kz;jq̇c>׶|`>Mñ|Zb[zʗgd>dڱ||kim|cĶ/Ob>zrPd,\J;ND/bWv ߿_V`?_/w1lnwwڒEN}kj.ځ5Aɍa7:_8:~FL [5 +i 뙼,: _r/꘼~ww j:/4Lqc"[9&{п\nhKǰ@iXW~NU\z-W@&疮㩻^eNCXMrXmZ%o+7VlRkeXDe/: W/\\2ceNFLs~wOb1T$*ʚORs0|`<8f ʳҦ!%ΰU)Łz9~؋ C58v. HڠRB^A*QZWL (Yb'ϼB'1pNi^,eIt;"R[b'Ny9Iҏ)~tl8}!At|LbżQD9^[ٻVhS|b2 ̣VAf@cTr+:u iGԤ)F}/QWIzģHS8|޳&=`4c^Y [04/cXJLgNeBʞM%KS%)1h1i #הWe-وXFq4dVVlDVRͶūt^P)qA?I2%&. l`, T^}1MLc U\- 8!cz-&4Ǹ$"\D}6A\++l/YAiU[uk÷^d@>ڝPe-H0@Fd5 +Z+%2ˆ6²*F,oFԪ[QDB[G L]X`[G_* Ejq6Jv|5G I (]B6yQ!A nB쫈[ mkYPUJ=tlb6\lD5Qjɡ]ų?یUm #h!J,ԇ)+YEYۖ f3̭bf|xٳ4eqKdi%!JY5H2Ks=$+Hϔ e?|=xK#ѣ&&<;|BԿ" v"{:_PR@L᳠$.Nmwkd3Ȗn8Żu.o" oq1.@ۖ7-Q;!mE]xUNLRoޏLG4B(ٴ:oڭ\O`Iw$GeN{ :w5^٫V,~ix&ft?CKiHD)Lm(U॓U6rJSI$1Bްc)dӛ}[^\y#om=rD٫H}M}X&% @֔wN^f)|@Wj߫*j|y|/QȧBN2 6ieJɣJۼ* <4IǺ5y:L>J86AW0 t6~b6>pRsr`y[ !7&~06쪮u*ip)WQ7/kn@[`ݔNa5prGv[%m^[*D J_VjduNG1ldkX`d!ΎK]#^ Ҧ[ŀ!:+8x&DScM_R~5NeL_M6ϯva '!=x34tqutwutIMLOMQM,I-L2 s /KW,IA fx3 r p (J-HM+2 r J-)-SH/Rp.JMs8:r$&L8Ã9ËSJc4o(! x 'x365"CcNC#mB1~PVMB _x3, w u (O)M.QNI-VpN,IM/440442f\F@Aaή iřy9 Ee@m @p-1z\\\C ,x3,44+LIUNI-43?  b!?x3t t.-.M-,2 +I-K- sp'+EbT)! x xTn0}Cj:@XKiݢK郓8`؞4k;is9ǾfB)Bl+L/:[q8 Ӑ>%QDfCaPI]_ "T"c >J UR1M6{qA8g|5+fȁB[o &b|j~uq\Wuy^קݯ"&*.g6:>BFJNRVZj19NNNNNNNO ݴrJZjzʞπ§ƧʧΧҧ֧ڧ" `f01L$1QLƤ1_> /PtGZ^$pIh#B>\8~'붹:CT<#9ސi |/Z%M i8\ٗ7cDA, gC~'.NARWd* cYQUOSD|>q Wx%λ 0O(_~Bhia.;:=/>kFPDdf7D=)WC;.&b?N7?' x3 v O,J/-NGW-! x.! x/!xuSr0h vO=ƁGp7ߧ>0!Mx]Vn:]WB3$?m'1FflȤAIy~]j搥t4#Щ"YSRRGq(;Wg|:=ޥĪoFg+QQH&TOj%hxl@S+& h-ZMMG4xVt摰CSUհ6OniΏw:aqHAZQCW9*Ѳ5+F8i.=BgF]7L;(E%}ZrZFUl/R@|)##ZW|Qn9Z([x~"ZFUU{.PZҚum(`YB*Z/Xswњ-Ju !T'ud4Tfr5[weGo;7 =o0rv})5>a ׸dQ+gc!vVf mؼnD.ptcXy46 .e e{Q&#!)5\'4P`&.~Q*|+n;%lh?LIp#rSѣxuI'<<"݌˸C_ZFCʳz5p 0ԦR2/ ;M%VP"aqءES*]VХ])PZv֋sd% |ٶBhz؀Zk)ixdLEբb`7 c|2Ez/{Qq0sXQSF-W%[A c=Ow;' SB /hB/R3Hev (YqvBZGF8yc`KC!4 _JV _frG`O0yxBghl85;>i k?oü; 0[Ku65g+_1\Z1%ۋ')^&8|#9-Z3+'K֟zdD<}'AJ ̍rTPD]4n(ḓR7?7vE9L3%;k;D( l# YJ-A2LFQf FhS^0U u-)i4EزvF`_%l<[P&[<pC//@XbYhJC9+O2QI9;egg@ 6?quu?ɽ1!x-̱ 0.i6tL\CqtQK6`@_lqt#mg.!̷ 5Ӓ*X߯0ZGMi] b5'L!QCx^S[Ŕɧzgr (2! x3! x4! x5! x6! x340 .MJLN/+Q00O7!+xUMn0FSU PE7LSK`;F!m%{󞿙DCBG/;ޱi̠%6.![ʞ!ؑx`-ĚuvfP6 e~'bWF-JG)б4Ξx^5kT [õCEAb%z4$J(/[l %TTC3ݘ`Zo >x3 vq Vq .I,IUNI-VIPp,-/,4440e9! x x:!0xA _6  pC;9[!(K6o|mp xJ fx3t+JL( ,.IUpIMKMQ +$V(T)+(8{8qpq%rRa'4.cNǔ< s2v0F 3x3 vq Vq .I,IUNI-VIPp,-/, = Jx31454s 56@ap CN=# 4,,21*J(($VCԂ )V x;! x5$uL ISCRԐ=5!ujH35$M ISCRԐ95$uM ISCP{jHjZ>SCzr֩!н@]5$5DjjWCTۯ_ Q:5DujՐx{x{x_ Z.ww9yw9yw9yw9yw9y]j]j]j]j]j夎yدʯ>SCRԐ>5$uL ISCRԐ=5>Ր25$N I}!}jH:!{jN~ܿt9}g5!9QyjCTs:!9QyjCTs՜Tؒҟ՚`< X &bM0Ě`5ۚ`5k!C X &bM0Ě`5ۛ`5k!CR ]- /, Y $bG $dI0Ȓ`% KA, Y $bg $dI0Ȓ`% K2 cy3 Y + Y $dI0Ȓ`% KA, Y ; Y $dI0Ȓ`% KAy ^- ~q`% KA, Y $dI0Ȓ`%[`% KA, Y $dI0Ȓ`%$: x`PM~A5դT^PMvA5$R .&؂jR -&Ȃj ,&& +xdsql*ȒU% KVA,Y؞,YY dd*ȒU% KVA,Yؑ,YY d|Uj*PG fb*ĚU*ĚU5kV!֬BYX fb*ĚU]*ĚU5kV!֬BYfZFjV!֬nV!֬BYX fb*ĚU5kV!֬♝fb*ĚU5kV!֬BYX =*tdsq.*ȒU% KVA,YY dd*ȒU*ȒU% KVA,YY dd*ȒUU}m>ԟt[ۂ,d KY-mAn -d KY-mAn t[ۂ,dmAn me~4vT2?/yCT2?/yKe~^*R<ԙyKe~^*zr2?k%X3YY dd*Įdd*ȒU% KVA,YY dd*dd*ȒU% KVAe ^!N<Nu2D!b dX'C:"N- dX'C:"Nu2D!z;5x fb*ĚU5kV!֬BYX fb*>*ĚU5kV!֬BYX fb*ĚU-*l{lV?lV?lV?lV?=[O*[O*[O*[O*[V?l_;[tl9Gr.-Rr.-Rr.-PgKe˹TKe˹TKe˹TKe˹TKe9ԕ-Rr.-Rr''[uvP<bkX;(vPBbkX;(A! vPvPBbkX;(XBWTzJPM&!L$A5TGPMA5iՄTEPMA5I:ATCPM A5!dTAPM'z^+߂z~?T%oAI[PRT%oAI[PRT[PRT%oAI[PRT%oAI[PRԚoAAAܖtA!bA!bA!bA!`GwPuXwPuXwPuXwPuXwPubA?}wPjXQg:2Aue,sbW:2Aue,sd \Y:2!vg,sd \ujݢû[4źES[4źE}ݢ)-bݢ)-bݢ)-bݢ)-bݢ)-`KhuXhuXhun+W,bkz%+A^ JW,d KYz%+!IYz%+A^ JW,dC^ ^m{kX{%+!^ JWBbkX{%JWBbkX{%+!^ JW^ s`\X::!ֹuuCs`g::!ֹuuCsb\X::vuCswCWk8 eM0Ě`5k!C C X &bM0Ě`5k!C 3[M0Ě`5k ־w\ UB}`K*W!־ UB}bk_X*WB}bk_X*WDz}Zp?K ا X &bM0Ě`5k!C X X &bM0Ě`5k!CyG7Yxm xK Jx3q /K),2ttN,NL2tutML8|8srRK< NowN̜b 'F o=!#x3443201N NC=8,y>!ox3 NK zzz E`n^BpFfA[YeXYR g@Ҹ9sJ@vjQ^bIBN_xQfbgqqi*"lK_6^ x@!dx3MKOL/HusWp2KK8c89]|=8K07$#$?!W/9?ˈb^`%9`M1~\1z\\\=){!x34LL0?!T x[Ys6~lxGU5d7r$$1HNǧ%!9/[3%W'Y~aYM*YhI]t厐w宐u垐~O}O6]i4gӧ^duYhR4za5=Ur<}EkHL9VCe2'c6Pf2李WMj}gU' 9Cr&p2eR%yV2zq/*[\ȧ۝ wOeAuo%ޛhMc3lɊƚl%#jX|:+یy|[Ĭ(?]%J3M|JzÊ$ ԯZg/4IS&[kBLz.4ٖ<Q ӔaЇ\|4,l~EC@$YŊ%$o[!>2HUY|+M1fm*"z1ϳLaipbHORw+UuYn6ň5?毋e^XӶ7:NCay]I <iev꙽nZط^X6{==p$ʳe v}x,cCm(lK1^Rߐ6A|Iɏ吒|Gܧ+m>_.g >J\NaRz6mQMX:S ge űM HҲobN]xU]^1?A>21 ~x &]g/ =0Q92 ,SBt2PtФyK9Pu<ЧheKv28Kg m+g90a4ĥF-tWAsbR̋AHh?o7Vtq^ȡ/3"4 ?nWS)wO+w9~chkڇ-53Uz%FۘI*#et'U 9LO !B-乐?^l|TzSk!2dQټegǿCa@]8xL4Brr GWsEm0,TXRO7L"nhAф9˿ x( [AwMլ1;YAoL ,<_-Ãwd: ;\\GdfD"d;es06VLvsYֿ-gDJ˴mkg(F`+jNn! wmvv.jn k vc!, !4_=˶KKiIȲLdd1=ۚ /;/;.;.;.;.;.;ԮbfE%unS(vڄ.%^GbI#r$Ѹ1z$.#.[=K}%NGbb˃.e$a+\[z8U*OJvEchb#g0(,aM=a*:UDmf~Sł# UǦJ&NQi$*Z9AEC}5蒋g%28VD"Z:PD#&DDk% "D>Dw(16q@ !!4B蒅"@&DG]q:젼7Sx^m@ "Ӂ9 Dc@ľ ֎II!l6=Q:b?DT"y!$:4Z6C;G!JCQaNt4gru#uKГ(44ş! mh1gҧəIsa&-aPӡP;8Bpx %qBESBKb!>B}h -x+Bm ;UҮgDVSBIS{`zWEv y_ ̌C!eˊnCOߝBӂVy~Ҵ$g7?ep$%YQُ`7`jUE9oc[-I~T}QaN>&h߫R7*zhV6Y 98}'s"5(|_ ˌZ\ϊyAs~ڝTdOZhvͭ )4{ [\V|yo":mrԊA}~XԊݡC3HAMxd9]%6/ G~o?ArLz<߾0^ޥ4wC\rTVrb#]VCYʡR0rS&D\ .SRJag[~r5ophQ.rW&Ld7-kpG<aoQ hG ow4zYtBqs waM~cOr}SrC?V6eb/CbPoAߌJ9ybqL<9Ӕh_<5[!q=E<7=mtC^Ks9[ĚS6)F6KT`NUmaLUwo?|o0/M!D x]ZM0 [; $]0/\-T_($kxg&h118#p>vg8m?S:_>KxlyG=Nx{3_  t<[(l@C8[C2u`i}>GhB6vBf~bxA7VuYŠX \ !op2A& @FF?HOz2֙ϔ d<8 'ș%$o+{-#".VG""&L.2ք kRBD4P?C U XV*VLJ4^*T$!nH*֞\JqiS9gW:(쾊rRMEzBz׺=_oEwyB|55ً6#h7^ﻼ Z*R)8(>&SɃeS0-֬xX L>"#aL{ 8 3 Lt"fym-B{9:mD$G j9<]e1]+\/yT/ˉboZ򸢓FmQyD TF+ ?O,4iʉ[d.;<-=!_ASPlGB*= -IVɅUPN}!m+[;ml V %n$鑨Q 1ҩ@Up3eۧзW7 v+;+DiAnZ4ezˉAeߝЖQ6 q)'Iq)Gq9F,vP٨Q.F/T}c;::4 Cεp.9;y |v hҿh_= z-sC=wAz=疤C{@s{9ts9r8v8q8uRΈ$NNn&tJңTZtR5#YMwr8)ӔIw 3m㸉i!K\i KN x6~8p=&KLwE$w A^A$xv_M YbOW&cii?%,$Y;IwΗſcſoBi&~Y-!$ 1c *C_~}[ *wbn"HqiYsQ@.W3kn+tW謹 Ys:6BgoH(U'`Vf<d&q)ҹ)3@vlnn4N7.~~|~}ٚc?-ppp~p~VQQQ@s',t*rW,ge|ͧ$$ ,? ,=)/O7.wn"S;@_+vS~ h~ 8p-Y뗳N;I~J$Kn|75+w '`'u_vhp'~<$ X_2Ci>Ci>t@kj@M]y84NJl(ٶQD-帍"]ʓ5wh  dx3 .I,IUNI-VIPp,-/,,L vq Vq᜜&Ɯ`@b!( , 5"=.../& Yx3u/MQKK/2 qPp  IPp,-/,22t tut-ɯLM~A! xB! xC! xD! xE! x xL Mx36 0MSO,J/-N,ZefaD%Ɯz`F@@ €+F ]- x xF! xG! xH!Wx3L/JI-,.())/./JիI%'맔`%%9z9\1z\\\Z >I!IxE 0 CsKQ hv#4‘|ak*r߅Mx嬌\PJ_J*(Q-NyJ! xK! xL! xM!x=sտ_$dWNܦNqm%7oowِg<|?&Y6ﲿ-olIC(M*-'][iӻIu;dv<˴}vp2<t.> L!||Vo,y(ޒɨ'STTv¶ (ÿ%`iQE[(Su=l\S5Zx !;.jR)Y eyҧIYˇ!<>ĕ}DŽB4sއss&KAG_Mi]h^V9U|Ƌ"2rһd>ءΥ`]٢?T3겝v ;99?$i8烰.Ӕ}eg>+8`zܸN,#( ;⪅ _W^YFO1]TW DŐ ONXRSBaz!ɪ@nʴާ!:kcI"? !{J6I3u9YOJLv">~?N{,Lke7Eu#6;]m4z̳af4)Z ?}-AsEFȼ5FqebqzEGSbP(G01%'pG#b:zXtUi:+$E!n.24h0rC@y?(ܘSQ&mlST4k/DE}Hgp Փ=EP.G|Ɠr6Mp#Z !M񠦱lWQ4I1]xc{Ȟ@,. v |7OUW6(,s8:I6ǩܶUcr_բcJze2MO9]Љkwғu狀d:Mn~DO D ]K^9XGw(N |jƙW |{u5[Pel}i!P(˙颮i#b =0VCPBt[u4MR(&M{U͉QzIV8rR3!=m @ }e[J?>R'bf7/7#R;g!؀Z4i^?\X!hnoԑ :;z՝NRmT6^-[4:Ē&,Kbio&Dcf\ T-xljS@s#=#&90;mSi2*_Ģ!e 1m)P!Hح'r/HK B``fNor|5U'V(/+mBf_T(~^;wq<7b- Vh>]K^P+o;Tokˁ3z/qs/A> +}y7)ۂZ2] ~z/v!81%[@Jlft^ŬV֗: I!ߊe,;\nq)v=.Ujr=k[-n/R2F'R86ʗF$%W#izP6V.۳SIO' &܃`9<:fyA1ywxUۮUO+;$UMAƓە'KP k3j+R虒 K/ q~͖rӶ\O? oS9+5TnEJ+9m d E1}zu>ko1{V\`V̑Bi; WBa7q%SO|M]~Q>*~.y^1`r/ rbTL`^')!⸘IBB/`4/`{ZwnrOHs(Ěn ^GWR|s?dgCvzur"L1HB:z;D55kL*$Irw$CHgyMc}[gɝ^^B Myf J w"_ȝ7$*P)BG6|J>% yCCC]E !aP8bt2g=g~=>p^n#y ]=,2t΍ }W|ʁl'`WSӯtǛ%83弘;6!{:qgtvȔٜ' qpW}΁.rbg9u6{p@~ؓnmk q#W_ӽӚv* BxF?zC ;z  miN)쨿zGnO*[$枃&:|g v~GقKC[⿛k@s }(9O"&|P]54'_JǠp@ f}yoz~ST?g*Xނ^䒺.:PKr0Mk'$)ɽDCk،:FSUɪu4-ֲۡW\N,|sɵxפ1P\mֶb-͎P$dn RSTxFrRUKzb6^&+FDamF Y}&ZFbq 5`>.Q|/SpV* ngЗp/i=(.P%n -Shb*Pw֠zwL˴ o^s8 5d[LܑxPd}աݨClWu,enKëB2%.VSe1\6ZTo0σiUBNnwS=?9nf] =;㍦qi ba+EOВ\s:pqvu~/8YW"/*?-l)cwwЊzL(v&p'dĊ"p1_]Eֳ- hfRVWX@y@EO,[B$["ni$\CGdb$:u> P$eSSw\own ]N!xn0SФд="=GqbKcɱ#$48;3"{H6eƸ[6R7Xg`]#Z{ C{Zdub S'(br˱bun., eӮc i:"BDc,GhJ.8>sȴl[2h<##~8/ޭ:Tt|J6,"/m|iN&:[tn7g:Hk7KO!x]ms۸ ֝NN&Eꭧulf2%b- IQ? EgbwaWw L큟-w:z8>cׇoKp+Bn0> P+\gOqj1Ե־gx > PƞmOυD~~=S;jo|5(nIq;c/8{|S\@WѷW`g=~BXBu;X5spk/%ǫcETyܭl)P9uVo|wOÀ̀oZ=e|ṗ 9M2*0 l%?y'lUL( Jc5g!I{1墛>gn—}Z&\ֆC;;|,sOIؐch]~X޴g<ۓ zƀ7jCd@%Fvj V6 A%l^cQ4VzV|,$b~%@Ȳɣ_=߄W drP (^سDQB?>Q.dPNtkH:g?Wajws:UGz1_SL"<~wG$a*4`XoF8Ws UJ\SbH פBs*`y!t (>TyLjTYdys癃Sorx܊*ud^:[$Sa\@3ޮ+ @1n7 |R7^?DFz|TJiԃL?vY;6fڷZ p_|2_Z/6_E}K*'דd;(/P㔗.oدqŤN}pinSI[)5g%`l}n<_V" zA9 x #in>p1ܺ$eXyy֟Lnd[#3ЕŞS3H=^?'x@Ƌ!U?bT毩`ω_}* |y -2vQ^CV*U{m>Ͷtyg1,Tx˳Xވ+QHR Qir@pO|I PwHhVJ(X 戲reӔ+[Z]s?H2 =NJ$@T>=ߚWYEtт"IP!0xb"^=-4(hm!ZYo)&T|z{4;[#%(yƁjHgSBNOw cQ?c񀋞ts+\\LnbLŸؾL`@@\UKJTf]  uOHA.xU Ǔ邅1hе#i{~=dj1% \ۉϓKY(=PE \ncGoJaw^00y߂i3]:i\^/86aNpKr˚ {C=-<˞;a0lFi]B]O~S~㾘pؙ] >7`0G$|J%f@~"c=\OjH6<")RyTh؎_LkcNEQ='2.Zs6;q +ҩNݛ-B*@t8f%{xsޗkf?:K᫠bီz̬2dLX/o=pkZh4e[vx"nȍ,#h$8sǽȞ,o2 %1 (60`JNyLwAh+}\#6R*Ǔ#E^O^LBtxUIw-bscI4̒<ˀtkb-89մl`'K8 > \Dpnt s0iӍe-^Ay.}u /*J>?&y1 X Sd{b5=R,9+3"z#,y_:5/"3\v-"XIÉZ(,_:LTQNjMc|J$dMIIM,5$ ~8&SWTn (4U,z8%T-]E_m*v|fpϱ/o9z)9mS0s5&l,]dd)}3ڊIdݝ)HX5:ەJ1 z<ښOwȍh5@1F];'!|j;,sK&;T/YIsJt,3djq,ñO@iYN*H!ȅA.u[I^]ZQ) we0Yƭ8`Ir*7s$Ai>XVbڥA-l)Wʆr=iL.|l$ h, 1][|+AnKN geY-DжdP<"A9; B#ݑڲ2uEP'P֮JD^0.0{n*܃( 2mQ'K'K>ӨnMz;%8m49w+p ʅmw!X rIN}0_[ -^}+|X~n=1nFحnR o-<\O0}4g@gK\8~b<]v\o() cgN"`pLz2FM$c8*g<<EXODHR:ݵMlQ1#_<\9^!{{g8q"^yCȞ>s1N&2/8BKX9IW/_׆B- v.(st(>"82" 5VP ut\;__KMtՇ.+bCմR>Vi!Z%ӔCCJ$\Pt~Թz>ZU-Z ;SUn951i( 9Z?:\ n*< vjò{wa77_I.y)"j$󚈳s4i l >'Z.Q C+< pT /T|,o4#Tbhk]*kZ:=ŋ-"ɚJd7{l矞x9 <gb|!^c~,mWY3入R:QOIWj J2c0vUEы#l)GX !uuqppT 1b}׋Z7ZINvim `03 ~jMNq{3 ,)$}Uׯb5;2vB'A! !;ORvs:Cvd$yaGIe;OÐ&P!˒i:"q4BvgG ` Y6K,..st?f>{#j ֣{9c C'lL4)j;MmyMl!,WaZOG#7DhpQ<Mހls@{sEy!dО*FP/u&&~'36Y"ҥ@Y9 YBb@ЪtQW_ůbުku6_gqxބ|K_){=%0ROgQ@;ɯ:"[GhXx@+i+ïˎrA EdxbZvATucQ:@K>K$7ւ%wf9TDРBq89[)7JD?t"sVhu VoX\ .& z|&$cR{0J杖%ďE+ּ݄ vCL2+q@?:A ;"3^x@Zcը69FAm:c_Q]/_ XUxT]hQ40os`ٛ$$ϳ0>T|e$J9`bZ.PɆ[4ج<&opl=M1 aTʓdtj?'IsA 69itydM8諂Q0I= t]_J6r4@  a&6n])\ݭ(3 q Hʢ*RJ[UHW)U4T˘ŧ*n"A?ʁ,FPlK9[Qr>aEN/շj. v=MAc mEUHu2pVo|*@ yn)*ZmK pgv3%JLq rMcd!b*'zگ;r^zk5ok|ME@{W%|=Va" j ?7^z7ֺ%şk~>e_]vr9J347{˓Ńg ea 2t1XDj Eqrˮ%)M9b)6Ja0t:@4} Ah\> ʨ(MpH n6Vkpԑx<])DI9Z͂zAL{@]ds)4񣵈Ȇ` {\I$eȇibh |/>}ewr$5[hpk I 4ýV# 8NpgZ U'9MCȘ)r^y0DO{'˭]_gNOl /-WĶ ;~u̎2b;{Ӄ6@l)okOv[Owy;{ǻۧ؝6 hw{? :><89Kl֮ g`''{Owُ;D{ۻ'od nQuu'5n>8-%dESOVsPPG4 ҒE* Gj:2N/,:[7ܬw ـGD;%~K;% qO-'>ۋ'ӜNGrrEq%FhЄ0?KM uoz].-E˥xu0R\O%o)z].g.\o*&DGaӂV!zr]ŁUʴb:xa9Ъ2ZxUDabg|MsƓVx5vH -{^B(W|jvm~4Oq2jei|KmiJq1ޗxreoFv[7PdX;][~uXgvQ 7 ޭlՏ@T̖Qfc`~8y hyd|~U1Ilug$m RǦtx YP#2Pjg~vY)Հ2P$>( a֢A`My^bJK!Q -I_~db_=wUM,5M_ɱ17=~Ӆe]P֊+YZLӕΕlo9\Lbڡ-_;b+2V^u__}Ef"nIq.UD\45rQ,s+e Ѫ8sܴBO]VZT4Oʪl =ڥʟ8ja2X3.=¦G>Z\8d0 qgn6 efTWWz6׳5ėGaOC,/ ; h׌vOFI}.[7D朤$L(\&LvQ_'հ,Y6HlOeYJW9LGrdIWO2wdJ޾rU%EX`ٮÕ*!ɡ(>[JJeDf-+燲;J 7'2z _Z9Wʰ;-lJ7wʞL18%Wް@d L8UEUCq|)R?V]]Aӿ*N9m@/~~߅״W*%bh%ixςtښOb$!y?$WN8A]R46T(ŦK[y0`^P3fsG{\ܫAbqXa.{Ųxj6Z4NJ0NvHǞ q~F? SOGX_~ ,ԹoRm)%M(ĩDQCW~oWo-\uZc  >/\l\pT!klon}[ˀ U!SR\Ѱ@QrJv 1#,g i\4'1kSJ*pWMo-G}r4"ɷ1n ÿ ! [,OFNpe݄#t tA:;^2 O7A57zf;NZiv8"؛ s̀fK ,klܬ"7f+3f՘hQxEgV%OI`k/\-p l\K./ ,$"Ђ$i Vz )=_z>J24-ÜQ -82{f0-EIidV 8lÎ8 ] r"OP#V@pYVzBN*,+tbF(<+ڎ%OmƲhڡ1kQpHZPǛ g鉮.6,>.1iLZ8n7lݬ$,{fwT ؓj7m5m7nefuQ*X Ѯ44hPndA7M;DefBli_Mj֥6 [ƮXOgti.@,YnQ4zaЃy{#/?rrC7pj>]rre]Z]l˴rVOO¦~_$|=eɴO&SYqէxt4glGaն-ȭ$P ]Ě9֭Rdꡗ:-"j e=.[eXrK%)XLdIg6>7ߒ&B x?ᇿ@[i*{{-hE wm;2)KxRtU8 Ӻ3WuXiB +6K1|{"ix9֔:-L//e{VU-NVxxR&؞i \^+9qY sT<ema;wT%v]%:E//]`o &#/tM\O! n_SOwL,!lU3tHtֿ1 w_IB|^i'97/Gi230I0)!‹hhiեM1dt&ʘuÒ)&^?6ۻ4=F-BzLcAc@Cr!.h4C /BlEpGQ3~4cMPj y LPxy0A Ns ,UzxxJQ4&jcɶf.ۺS2^^lUu;US+zwܺD8@uu߮[fY>bn 'rcؑ 9n3W񦅜VU{g45"PmiPE m&eAh d @4; k>9?^b%;rJwvA?:|qj\K⦣]w~ uPQ۽sM;[/u2;_cU{Wg{ك Z`tRMhycXq;J5e`)K ķZE;Ds~>=!͝,%Dx<{ux0˰Vd}.!WrDQdW\gq]%^ɭߒBh.F_Fׅ,y1˝U$Q6+َu(b}#kw>EL=&H/̮,la< 7{bU\ >PoPw;Jzlp>O&I(!$AL9R`SFV5R͑,ݺ ",#H]f.'S(f` էQ>*[4潆xN)'~ɣy3s+nKQ^.(@)|F` 4{t=QiAB| LޜŵnX,3aqD;%/07װ3&[9tFs3nWL?SQjZ+7\T2s9)y~ټ]J_#@]r,[(&W]Y%/0 ƙc]v jm0ALbWRXɮ|pH?%Ԓa𶺡 ꨮ[Mkf"ͧiMCҬV5_|_|_|w\vBy4ouw!em*&%;H76gcoRwh1rIgWAUNphdt-jiHTwn>ժ޹'n3 ^!%mhP5Zr.}m`P FDS yb}0ky 3H_tĿH*%*"HG y-Q"Kt|E[OF=CԐzX_HklCTzCВ3tBp>4MMvQoT@DH+KZ,/ KZP IJ!\H&>H (Dbsv9hGP4KF?ڸiz@݂.!k1,™eI28VmO+(C~fk":^wh&i2^azœ Àq#qNY2*"0 :Mp-\/>0mr0[5?}'Е,xB 5Qoc*7QL NSȱ LI3D[hx;#{jL)dE761lS<'F{vPD6U!@es б1륉`P`JE] ]!EjI9VO Pu;JڂBzFg2ŃJ깏jQ=J Jm1ڒeI8ΣW|i >R9hheIԛm_ʮʊS ;k . -垳; ?di瞺;j{9SZʙu܏]ʂPEZ"%PztoB]6ֶ D F QLHR|9 yS x; \3)%n>by"myt9h$y[D QQq c1HLk ) -6I!ಧnB>sP%'PTPl^ 'UQyekyL|RM 湿=Y^s7d)\N*ݖAw'QtNiTdM ]3˜ʲw &+WyA6Ytx+(%qv6K0N@7 A'f"ݔN`y{6tS(,/f;^蕵glN-2Qs 0ENev$P Qv]iϼ% ax]A3 niٝl.9چe,atKqhJD!+JM 5?2_Ṉ&q%A,.\TL`H& !WA1e T$:+Z>OtV eA5W9VqeEXp(nUtR`D{$,L lа[dxm/bR뢚B0/%ok8(vj 6ygarBG,7 T WV}h M?fWŘHE_טA1ol_PآɞN ʗB_2t1e$=2`m35}=0xutRΦ94= Cb$ Qf`vdk﫿=7iw|KU't7q_m N2-ɧUahD4IYGUATac i:8OM =?5Hԡ?r7 ]l-BW5ã-[nF#|Z4Br'?C)D=7d a"MIF ZUr,(ь5쇈)$MTGTSCK\Kr+.㒬J2>9+9+G+X5*y JaAF*&gt0q?P#1 )Q"ze 52Ҡ uOy|7 eDMKbކ l@i-W%(|Ľ˚uQϼiT7, &JEgA<%!ßD1 u42n b@2cE#'99쁲R>Q'ܫW^DE4o~% d6A c0pdTՋ.[z4Y*.kؽM3 _ vB4mI$Φ_n "0= g, 385h=آZ5M`K4b;LP5IK F/G:jvRԒC*T=NClm_dG:KtI ?3- L)$s¶B%CpQZЋA\^PV*[(KJPpDao4w~ ,k"ڀGEf"K!h*bKߛ$H&Z**QCOѽ_ve>OYkeu՝ +QN A.|pue^^ u,,>Z0T{3cǏp€{~"daXWrnB]ybk;V+*i4H)<ހ[,K7ǏV9\Uޣd8cgtGk7hVzgL*"?D"Osi+LӦhf8֗o)nި,W״]UK>"QY֥4<_OU~ilBg]d$*aEk"2{e.tI VG!avO3)KH.G*,($pbRb` S=9 R8ɄF-<~ɎnÄ^f Ó'O~[o=-RO)T;ku)ǣXph|K聊)pMgY 5&B>w)g 3GbV'fhG֋ ︳$\-i`,1B*S+bB&PqJ$TB7txF`9{eb,ϊOGC&Ip's ԸY\gac_ohx\4{LǶjf;=D >JB#whl8Ϯ%iuz`]\i8TV@$N_]<\?9؛?yds`@,h7Qs?Owsu RwK ">ZiM̀'2<3?-pwdr_8CỹmѾVGt5[L5W/JۖբxC/S0ewtPF袽ABVwHˮ&\]Uo?ۈμE'6Y4a3iJϣvK\ܹ oipjh¯DJ\^'nm1c+=D<$7);I-JR;c ~QrDoq~B!uzThX막@Q")XxUnM][ Lol97%^.CLUUT]|IM➫;ܰ+KH1=d5$б,V3)JM6ڽe6SǷlʝX4ȵʸùTl~JOZrS ,ږB])^mN\IwhZ E.yDt|mx0T&l8G!v;&{Z{dww +3^{KOyŸֱT<\=& x|'@1.$q'=AL fܼ4Pvڎ&>~%ࣜ {Ws~"sbc-UVlWD 0U, ;`FX9 lo7#Gf7jKSTu}(Yp:R7[EkŹ*zA/P Y *0Y"IIxzQ7U me68gA!I LM|oZA i)ס:G% X*bJ Xpo1&xR!FCm~_^.9W%zIo{YWԀ3ݲ.~CSbFF?h =tsãv EۍMSb˸ұ/1,BaN}=ĆP^[*O'E[ 7.fGoȷ HE8섑U*@ ( g ~&밵u6K~{[(CY2 cUA y')Vt/:zPTfei;e=@4 O8CMx~[ __00"B+vBzV{8W0RG'*奈&ETNAmu$x I-pX; X0`N" % SXplہPC<.rF"jJc}qRO?tn[d&\R4]1kep7Ü " W<MȩLONϢTwOPy1*Sh"ގ {t.B⪅BpP+?@Bt8-P L98Tp7^``Ac7\(|5ֳ:E D$SV}Jv.XfvƄݰ| 8ߠfrF hTCʗ'[AE͕cFX=Mt+jLkI4&;3"Birg{NPzpU"w% kMDo#a~4< isr2BcV?S>(GA5:&g|ֈy`N"=fvJnJՎ +`tNc[Yʏ|l-YKz]ߎ+*U J5"n:Y'. dvefyNOwC?a+ -n]R+U w6e.rkmYb/$Z҈e$%NwUn }z+I7ZE̵妄B,.ZM}‘Co6\~mnJ(f")ߞ)ht{NSAV*yBM78bAc_+4ED<|׸]):ajf( D\ȓTL3*f+=?-9^`#srŲM6KDq0Tg(gLow T o'*@&.y;$'8rk{ɴw/f;1I.g0.?n!Vьa9@vhK4HTzfwS)~ozp@4J`F{+ b[]!ȱ\ jpwߧ%)ex1_:w⪸(L BrЁ I)%8:t8~Cjd'q8I0ii )IspuF84[QL&{{>5@Uaxge 2<7F1~+l{]kb_WKRk|Bu$@4-F]N?Y>ő旡8v $wȴcEZc9:\Iu\1ab(! oxM $UG1+i<*q3a1=KW7,i. 4aB(V)}\*:6J/  \  U 0dGXp+H~nz T3èKa 1<ܬ6N2޴;R6vD4A o 7ñtѶݽOh6CJteUy0s^ш#ş^B,6,,|#FE7Ldnw|#aIwAjA^6}0[ek W&^S^PT5ԚmO\m)Oq?^:nq\!#Gy3'd'a"^$E(kI6(pD u{<j,IKS_{vdk~jŐeMkFcHUaZ2B VRk($)dc-2\}5NW5<{rCmhv1)g˃.KRF"F0Y6CK%QJ7)>JeK U% ]؟*&i1]$7V.8t3K >үY E.ly (b22Dve](rSݕP(J/\U)(p:S,S+yy\T) Ψ*C4(75O@Y^NyI\+Tz&[fLaxeB1[;_/ur<䲷zjCI8}>͚5?~%9-S[2㕹-:Ja5DHO3\jtBR{1&{h*y _:tEËx8bQ1t,N0` N  O +ŋs+*Pu),!LL=cWIED'y4Aa``v#JϮٿuShWjSi2- C4PīO_P+bob+:8lF9U^PB$u݈g52?Y!boZUud[mA,JQVv^v <eć%%$_ ѿ.KH5Fce ay;d`Wc@1]/>Ӻz%Uu| + h,OU,jD)oRYVRK$Yz1 Wzf0u+;PcMёW ޑ*P jzu7ZCo&yj`|4I:au%B0Cas:{+?QC+BFEL9r9˙B?s]{-uRUaH=~z0BW%8m2|cT(,_^i2M'e1?~Wg݈XtNTr ؛g[~8L8I¨CVMXT0AiR.p?q23Ns6FZaˈsNn۲ԐQLdq TqciȄj(Vdʕq @ *BYdhD؂{V'y%r,m桱x64%z{)ΦWPjBVՇ<ǜlwG]lXlEhƇ1hx*n?i{^L9\#U`UY2kg +$JaA~.^;cM31/^,6ll#zVJʤM+2SN› n72y!"+% o姇Mthi?`VYʓœ“ꝆAⅲ0Y:(y ccBzk- ojj#rϼxػV:9Pq,zл\Kqz$ Db>iF̧_qš'V0<}"x ](yr#ۭ0f/(P(Nηnn(,txɿ]Y\7g{Q$q(VrsßysXm? F6b(^bII;ZADy ^E̸|"ޗ[:%R?>.yNWĐ3px W La{k܊ХPM hk_pLcFBQTp5Kk7k4{3]mzTXElHw'1aʻQ#м\,dcLӠQ,F@GR2eTg~pi'_ŅQ%y>2uV7(iuՕpEAqޡg2Ot sNœM'`c5uh_P$?ѯ7+ w9]pGTۗ*١d=z4s_=!ʺ/:F082gų$gvfLIת,J\6I}*B"WBrjt'fD?*X1/Y#@?`zTxӛ2@?zkf\'&G8c9)"Pnd TUV}-")͂O{v)c\$ Pa3.3:^%L"ľwgk xTj<%ÓL 8(JDU RmxDt :WidՐfͪ“蒜ih[z5if!H!ehtAP޺G%q--[7 bqQ~EDZ^lH-VWvڹniT#fP0[DzL?PO*CRܹ{Smnk ER& 9xڅBe=&x 喈cl3QAŷG㭐i4[z4y5݊(^"3+x+ 3!֏՟*E2Q_yu@QEX.TGғq2HW~+ۙʙJQ5G,Y)+M8:EШfS6/TTNi.fa\GjM5$(Qgp[E* Vi}%]A_QhI*I=^jC85B،)d?h*Z_*2~yJBbyW*z1: (,iG.YW%]v9 * Bn!Sbi0ìr”Y8d )*=^O% EB,:S>SN'̟i)๿RIXp\2 VR/k$CIjN~n,{М Am2G@ߑ\39 ZD)4<{m!ȦLEU.Yݭž KIRX hqQͨ~Tf3xy )-yI E n1R<@Fv5Nn+#Zmi"qǰUSܬ"1xMMUy;5٫x[p6衃2;is\p9m6RA^}Я vC e84Qr~a_sK'N FLFM"c01m=e(;3C2=F=| ܣ@guOqz\NyA~>PyK^!4EQ*U"3z3w~fGa092[^ W<t:eu H~rh@IqT{K aj1nt9` hƪo<91Z͔ q3-lˊ;92 ]#SPő7 u()M NeJ,!9.Y jk{07N/,G4RH'#2!,0Tqd'PPOa^|SJГ(4Dָb\s{_I1b%UAÓ|#ۖakhɚNȞXebaMJ,&T3vR!Γ]F21 +;3`Oލ,WBTlNDZB[f軳f&J%o> m~T$Όr{QVKVX$eQ|8qE*,69LcyasCZ 1͋KBL?{gyg@7sq99/Pql{._k%}IڋH]XJ0׋fTvݮN`d:aEH8Nz@'s̈́&cӛ^P+ZG8 #ߐ/5rQqb@QA]zyy&gDlk5ojEC-ե F: t;b$vb/g~̗IXĤ<ۚO~ߔ-7"#m#HNUjtH$RRa$ZvA"^F'c=QCAR&u4Ex]y/fMA92 l|R@*K}'/ObcCX"`i%05nUz@AН-<@k︬aVFPۖxtbA `yRiR\E:`lbVRӀ&Kii# >c<.%}+~fb /j@{bYkVSY P7WɵlWjh."gLXiyd8xg^+9wpw.*ia*8 }ں&\ "$UdxWkZ6X6<=٘ |)u_)wA 'q'NkBa &_'i>^͖m|K@>.֟YȳzXgn<*cr{-;'H9 Rp|'x^!r +PO )LG' n5$-RXԖ( " 5((E56UgdY ޮ>Y/'2FHֶcS]) 2ݠct`ABr0_BDs<]8 G&O kAiw2eVy<Ui0A1Qt,̹{O\l}jFmT"HnB%[K a@VHJ]\9*CHW<Pn't O(A'PQL/I\:ԯtZ$]&tk8HH.@9C#2=(铎:uAՒ8ϳxbGG`YjctvkA:|1be&Sk ^y|--J)\ǩ{8ܒo*LSu_Muwy2.Y`۵yݿZgV A`,Ta7$FR՟% ]l,Vd569CVybdIA2uτ3|ҏoBB$uѳ x7s=~]&<|Ρ>R*67pVVºAx7}}զ(tN86}M7 F]~^e;\YqmQ6EQ ^^Z.y4o:9,)Cq䟭 G>vPhC6M&+l_S"X7[YM` C O_jr6.bٳgNQ!x=YoHϙ_ALdIW"LLƱ=<(-qCI)N"}TWUO&֛1͋0Z?<{5(0x}`N`|WS0XzE ?sp>GAr~;b_QwN2C*I~0NsFv.Μ0N^عx u"7| Bʀ5͟|eb;Qx|q/w N һjn>7/Uuo;oC@e<{L0:埋BNNu%C]uu#6|'Hk3o1aL4ƄwO8*ЇIKhme(X'ggҞH5]/UHNLbN2~_ѠGػpT(K' > (v,ǹ[O!'!_Z#*ļt(t3#'nz;Eh|-b(ƧV#J3 Wфpaw)*-F;zjofDR`9;{?Xe1'],L[pHtn4ga,N*)⤚)8!?)3˷^hhP E,#s#I"][,JqlKEXnzrFa߹>aFui]`̜=Y#&rRGI6$(JP0g/ X>! 0|6̤ ΄7)~Ӭ>ar*+q'՗=Tc$A#1Եƫk9r(T ^Nj/6O`?h_-{--PT>eʑmG2{t%rQ\ = S&ʇx>\rw*,[^RV9k:}%rq-%ވ_A!%Q\X\{ 7/.M C7xRG2Hl4)6Ai5 Qa:Ŕ`ƕBΉÍgm&'@dy@+}M x kQ[K壼S׸3hSFp}o /Hk<-|""Xp10pE<% b*6Yxejk!JWęrbi""z(&е|fxB]31ct1">󊉎b-7 \LGTL4}ʚDh6wڃ&Cx}_tE^(Ύ=0[Om89X%;tCzz)JU.G\=KwmjrH~ 39[)pepߤUz$A=ܹJwRU"4b#>*uJϊĥRa)te_tE,JD"- }!tܹA e\,̬zU4Ҕ*mT3㩙 6LGQJPf Bh'*DmĂL.˔U*cGT*abl(VpOCʶ>&),x+$@NJ!@<3`&M&2 ~ kw=w<ƂTr||x@˼Ӡ8?(ulɼh/lg,SQ!ɧB8Tk쑏 oyCyЌcr [ϲ/ȤZKғ&{ÆvCJu?S7qQh{i{I t!mZPv}VC)3,"3l0[*XݕFȝ6cɤn7fqd2zGN9@K'2N=(<,|tVyWSjqlEu1Mg`4Kl&{]7'&Zߋ/fӎê蠡wzmp a7fn!b*tk6 A̚_?Q s :.\:?;'q"-'*2HnMeysHIsgL7XbXP@tLmiWX*rAswctNgHy  G!S}ArM^,B~5bnkr%31-Dw!k WCcjD"wWn1; c}$Re%%/oso등V)wC7aazeg {lg|zsiYq{f/Ğ&/|k;< c!t"^Ǻo,US7ġ6[-Mau:E}TX4⼩Lc(јں>Tb01ow+9a&@\z-$IQG>5K@7Q W1CV|-n M| 2 /.ъ=tY"#z70+QYKf#iAil51sOq6|y5ۦiP ]N XW̙a4AѐyC򋍴Z] ܵZ;f|&ȟ.ܯ;;+w$e}d4 T[" ᘺ+-  ͝uX'Xk%ojɫ1&1V|BqnT8P\EA-O:pN:ij~>.5iHvR9;AZUݦ%txSEG~U )><#O/dbf Hj*EkE+5&rS_ n@[qބ\|H`P]!IJUyyef j%tQ~>)b T8`3-j{JuPR}}T [t,Z?{o9jBq(mFЏ ?yG\)tN %I}'ABup6AQAcA %B!ymܝ[Ţ`כcVzV3bpaDțC5Ua cF-۫v˝nQK [XHŷЦ1.ڇ-RIjmIܡd#ӦD>V" sG$w")i8֞\Y,"KUcT1GXN'$X. nPV>0Hc" Xe0qGE8G/s7Zߖ`Q}zݲFe!kn7 ģw !<ΔlפF6p.eY@5|d_\׊ZIVmxY**U/*qaђ+KqiS4quZui[y٘Hm7$GhjDOrl@ ui_)eəR4 dU_M,=]gd)ج;/h;lmuH2۶6aMtRͫCsͳBZVnkPP~H;*,p&.9 [I4Rܶo\ʭm&ƥZЙ,:C߰H2AN6, +-۔6.ܵ`fgJ![FZb4Ulmkk L*0V u6Ù liӫiQ%N !@tK-aiԂJiQ)盶p(+T% $.pSn[XZ5ئo)lO*)JJbzZ(U[}h9|07d#¥XV4`*3P Me"ݸ4cIA뜓 L@!CCET`^f1w)aM&Q=d){"SKJ{eoh;K3/GyN }RzPUdɔ]) ):ňoJ_a-Ͻ $&OL.ǬMJ:iAa s,bɿ&RLOL@ ?)h:?<=) ǽ^q6AqTw]UXMZ  Vm6n]mmq,˜}ղxju_BL>!πWe#WI*U JjI: gXv=# *wWݟ]RW)dZ4b3*Y䩳.aiTGAc+-EgFi-:2JU|Iɹ 3߀ e!œ_Coj rS.dzn:OyQ͂g:_tߣv5ԊL! uHV@{TAyzc׫b (kLx#RhD?)t"by?MgWgnIu-$}9gsdtVVZ0gߓ-uk1f۷8+׎A.ip_q3l'*7g)%ѧ}B̢@}[m)#e'i,k7H]`.,+qLY#8aU$TR6}Wh5L/>MZ;)PUGQU|Ҥ)8}3\ugx'&)Mt,EAj LsLS"8:mKDhUA RqiXIMPgeee`,iρ2Κb#[s}Kt.I$Zi)^X:,]-&}E0Ǣ >4$?ʳp eV _MO Ŗ߫e\Ҫ4%S}j_u7b~KݣcɽV/~zO??ǻR! xS! xT! xU! xV! xW! xX! xY! xZ! x[!xW<b͜S3$Fxzl&k6i`ݧ^duZ_XUYR.OPowHҿǿ_׿_+_HM$~ϓ:hgyIG]*4 C\e(.+eӎ@w8%|8W8l5;gd/L =WR%!&x_nwH1Eԗ<5K!b8';, tT[* |6lww([ߌwc? 7VD m##귡 Q×S4 ]̖ bD_cj3W HO(.-w8#Jȁ^JRq(_AH>}kSn)U@@4d /͂~͜ ,1C3_qA\@ _WȒw+F{sg $S)>#3'gG0'ss`(x=} v/*'a!].le'\oΤ#Os_o]MDMZ~&ͽTHvŕU1(Wl&6ާ׆w&J(-o!6 I#~}~윻C딸r7q/-pBq/PN +ʉ߲963d((ݓ4.mL`qi+U~h/'=v#6;|֫,9s0sIX0^Yt`Vc5⧠^\e^} yq4jѭscۤ`vحZ8ԦoM3dmrp3RB}Z!&ꛐ 5䄛(AFqո>f>g;%UG5iI uU婖Q" u#<8^ :)Mѹp%7;޸~GBxMxS}~?#dE,󆫎yj~UC,8kI:l$5|c #TڊNuqBIIOʛX~PMVԺ:GDE;F"N8$LӌW0N(,n~V2,!_`yXr,ZT`^~.(;N-s2Ry~s53?l>qpr}.Pf1WSGM`6Tf_ aړ17Į #D ACWY?7Y=z51tGL|5g"]MGpظYX}2\i&f !cVJu41ˡ5D@BWd-l;op+Q> }c'5޷jVmT#@S1nȅ!8_(#Ѣ)Ч>%g (hTە8 HclkVL@!S$PJiN* |/oJ'Uiќ:,  &<u4d#Ĕ ?}/ { -jy*mJv[/9wVXqyz"̣.%n.VGCm$EJSD^(+j1DWyZ|^!rV>ъ ^B,?'xlbahfHo5.]eԏUfzS1|(,.R&ի%­P= 0Bكb_DIDm^i8.B8^ec%W!oM mDj'o&TwJ_qBhgeBQvs~%hR7dRf_蕡Q"4Ȕ2 Jh |Jy ~˨u9\;A{i_ ;$K"@ʪ"c<ꚕS\S'K7vןm9bKXpXY:sv^XwM,RJ +3qp.#F”/t#)yk4"hCjjh#>VNV6hʑ% iƯ^-:05.4ac_MN6|ZMW>9ۍ'>*&_f.y; ?;*C FF!Y&pAˠϜ0E$Wnt{,ةXSMFwȴX }.qU7//J W[dX ;dA e9+ZmtXbd3 ():ց7Cߔ?w-|=y og.I OB):bPAUm@ |^P]qH+['^˯]r}`_P+ce1]M,w|۾o BpL'[C o^O7%nbSɭ fW+Y[>el=W?{d컶ilDy/:kwf8G'tk_rhsΕ*$޼m`Rj.͋"1ӹqo@%BT^* h93C  ڗX9^1t7_&bYit֫yLS|D^ 3|XvntJ":OWTq }0f#핫'~;Xw^W>߳%ڵ ]-~>fiunqƴVk35d!¡:Vשzo c[o1 Xl>wQɸ6;ve%z8:)yMW(NeWFY}mj(,{S}Q?. =1j\͌ Roow>u4VoLL.DŽv."zV_uRTa@-^| gDmvilyiS,[3kKC-c4ٿ"sz떍%E>no^ cǦ7`Xk8>(H2Q{S;nj9o֬s"ew,#[_Wl2:4Ѽ JrL4ˎk/1}PSݳ?ӿUEumYwSpAwC.f@Hؗpuu}X@@: %p ])>mP(0_ͯLPTk^nKB\3<캟 88΁ypȚɗ[y1Zy2Z%@ ,`O،ٌo͉_O);Eɣ},.Pm}ne:jMj>K5[ l;>PrhB-|V j[ǩ$nii9*Tf;.[ bB3P#1l).GbpҤ͍㋸yC~Nk- 4wd/O^c@BuF(O-1 @WMbmtNV_`'q)__伨Z~Dy*XDFնQ%P*WTBnꑛWw8(^bJTGpy˶ M 'kUp81@W,xϑ Vol\{uV)=`_rυlRihcND|Ha %KKr[atN@Tt^%,8XPX$)/Pz ,O^vLhwfS{,$vqsL6*24(>g~-pK > HKBrg^!\RpiRN N-F]Itkݵ?++_!v_JP/!)'AIzPF#8얎'>D2w>wҍaTN )ɣue+CяvYuu!^K]_[ض4V(@P%!"Kx+UM4bl/HOJ`Qlwp"9|N >"z4k#[xլl_02ojI$U-Hr4o>#Wp2uHr_x"eeԻ7ߍ`p}䉽m0U)ω;&0`%LHi"1$Bz9wdazrԃ)oaff/}8 P EB`)cTAKG3@N:_Ē2깨Gdڬ=aufv+y;OSe?+\]|Ul*/.8no,&3- k![w[V]u"; gɚǑØ;8Ohy"GL:=Gc=37*nߺDŽÈ9% :VE&v,^}7=6։: ܼUs6zݶiCh@Fy 1ٖv+e% )?#:z"h{ӁU:\$^( V-`$`-Ü0O)dQc}iw3Bg"a-~q܂1@PR"ܒf%AodI`e (Pg?\CHC}?wV&X +bF. ':]`ߧG7^}&Q|n]Bk{roC7C޴]Hw'AtTʖ:\-+K~AYYW#Ʉ/VudfjlBx!_MJ8}kh^Znhہ&CEFNn[idG\>P6> 7L1~ >B$+l0OM-{uqSzm/i(˙e;4ԒՕ*ǻw;L^P!hǑemrfa~0V=>~Zf6z;6O+ { cQ6&jChn}TAg|$qIMv<:-֛#KEs&y= i!aV\9\T=%Ec^)|X|uHt V4=s~E9{Q~{5?]?H3,{TCLp# 9RJo>i#PNXF= ڎxekbĞMOXi ~4#c#&vQ 8*۲t~KIN{>;LoVs素}.}jlU_Ưx$OrYX?m潿woQ P_Oh;םnKVV8;!Nwwq5yOi6~C%76 @bޘf5Tv짃Ӂ^γ@w[IiXw ]7>w6ZBzcĸAU@o&92'%z34|dPuX7sog0qjm1STUV;==yZGqv|ngșK?N;[0@^6Pit\5˙ vν^I+f-~ɸ`su22\8♘9ˆ-Vom$gn߶+ERHoj"ӱ0:;8 ttU}"B!\ DܳAeL- ~]r~S/>oȐQ2(31zw1o@|?q~ MdRZ[ SN_Ӯc4zd%|c̘Rx(C I bjG=@@+"1e6 ["!]Fq5nigu1w;cPW-K3.n~q٦@2..DM6_<*4!q$+ >v&n}a5h]0㬙~7=RIù%]GWywsm@"@;R\yCR}*aI>5w}q܌I_6W{eWhvO[%,zf\:A٤ycY'}~l%̶F_f VtDpgӼŒ23bE#Ho7Xmա-Ox'~Ӗ=~3OZŔZ!.L1VrQE[*b,-?YqÜB6X{Mٳp['{x#Ijay_1լүg,bZVKKw1PwL1=[36S퉵lj:}~\^JO! ʳa8~WL{_爯ނ.ԋpM]_UYٮgUا&/5Ig@ o )0vo# vnyJ8|/}<>XsBL2Lpu\࿹?/V FxVF}gwDs! $p(Ro c]⤻>%Q{5 xy}^Yϋ|!ʼϳ~?C>}BR zi.&N@KC}n(JkPS>qD_׀3ic&3}zQ3'lq `.ݪ[`#E2W { E9w*c|Cќpy {}et:>1GxOХ@Pš&N} f7c4"\ kT<}?uvRgM%&ߋo2"F#P`}ڌ`;(&}A:Da9#GFgv39O}-ve$J,; rZۜ[]fi7( ƭ՜h[cg}{D=1On}Z\X-v*\y}!/sdwj9L8WFZ,#(Hqt1-{]%);)ΏAPgaX`E{zQ¡$48TqS!UƘ}H%ٳ*(l.{Kg '[%6K8y/m%N(UB(/T_y pbAϮ-.osNTKߕ AYB}Fb -𡮩tL؊eIZZtxP<{T!#Fos+ryQ,{ՁAj8KJ!s8F7DeUU7AiQag܄΢ҘW2C.-筡3c[H(hzFu3w-Q73 Cf6p=7;Mwn$8伸w;uܡB84wKɤgm:˩17-WvY (e~Hj5 ^B,E1sԉc,\GK^<#I;Ei^ߖs 1ncxl۱U&xa2;z4]/ӄ'CQ#] wIn.UP'{sȈLe% 10)ӧ @|KE YhȄzV\il>Z4tC4Vb Z ߞK2uPDVeyYcɂ'BLgɍGwX9 F/ݕ8Ái'y!c d@2!ZBe,=iznyF=GgDe͹ #lȂy=m5ب aL]N3LȅO V38wY@ x%Bf-w16J(ʽ>&>lf px&rHkͤŮ;3:)%<苧.] ȩ*ƕ|i}jaxnӀb %VG **#TDD  r6`y,pǤݣк3?g "]e 8%ZgVb>:S$1xCn++!PryZk6d_0Sѕ_VꑩFbKgT8K؄Q,( {[$FBiˤ$K.pϽĜm'ӗ&*>ij"Y)JE9,- z )XVݛ@*gj=,ʄé%\O9ЕdžM^$}Y7"Nѱxlqo],'OYi(^-N ?P|Dۚ-N|~,+慨%'FjV#+"_~l$s䛿?Oo_!~]NPZgܿm߳ 9&ک/3XLTMSA# bHEyJI v0HN=CW?tVOrק(=W?aA1=>CUz>!ooIr-l13T P>=m1>:/25ۣfDTu"(:ԫ^(o`J+eH daCH]>%^_\ꂙ)sa;~Ku{ gZ::(1Q 濌cBRg%'-Zr !&P)+8%Q׳&TB`c7X],AK{S DM-F}ْY־%NQʎn0 ʓ<ߢ6090Q9nRA' IL}WS{oI!?SVBf+=\y$6.?= -zO 5\'/eoqiDqSQ`hU,~#[a g+nknx.{r'6M|@|vL lHz8okb1aTueWbu rY}I׻Msf6D p3לg_7g'Wu*h2A1G9@ 2Jy;#>10=_Ѫеط:r7il_\O7xtTj VUA8Y 6uҿIٳΗݎems= .? +*ܦDO/va:E⍏.,V;ݨzåm1Vn|VD|b$u-[C`Tt # ~XoenJC-4db!W, ~O2~pݖJό$nZ#d^nRY5:2WC`>7~o'c;/x'C0b6a@ ~!Z>7 COB9{VQF<|]c-,|W( m=LʹM'֍)F&5^~(݀eم؆eIP*>eDnً MvPrdWkb[eN/Tv: -WU |$dRgEJ=L0HTԩ8>#z܈xjMS#6d Z擱]du^6yXV c虴^BXa o j]`iH)~v\3 r v. bQcR&yyAՇǮ(^؋ㄦ~ڳjY^Qe隷9@FJĺX`9$;e[{KrpbGE>$701ƴe}e9/FRO8O -,Q$hT9 UwTg X&l> A™w݃vrW6:=(߸_o~Y@݀n?aGywNuM?"vz,YooJ] gJ^S3<>;䗌zPM_Fq E;>`zټ,K 9T-s\G]wʊ{rla1ᄐyu@`aD }ڇ%~xt kiЇ,lSjQ2z{5;lۻQ[ X-:M%GS,̵>sP=ߊ:Jw eТ.P}.7.0u|n7EbH>>1Q4k5.2_mW:h 0Qlx_B˪c,5oE>نI@ՠ=yԄpM9]| Ɏ&+5{Mp~0'y yzg>.C7~&P(s FU14 `n}ѐs. V_?vܮ緑y/M0Z}uՌrMogᚒu sBSeNtBcb$oz2PX QiŕQ?S$'.H:U)q?l[7 ʤFbT"Lv`2j:_oX5vKeD~ݰʘ|k+|os"i҇aa:w?dՔԏ0OnH# 7/] Z(Ytӻ:4[щ pC1>5(6` Y6u&J>8+)gjZ/_G&'UF) h. ij|-d׃!]{Ŧ.g͆>=S|kH$ C#SM9!D.o7I6 pv':tYBks7 OZ("͍ xIq B۾>Vi?g.Nj?%0XԾ8_,R07kzJҽѧ`T$TQ4"ivޮa+4Ur.}-|2إP/P/czd}c=nsz7k!L4V P>K7‹OfR, -U_sT{CTZ^a>@aCW'GZfLZ&cCM3?"yԾORYס1LM}(FF9 Swf*>0(PD8n[( TևDZ ;q$MpF<ý1;g0Qzza 0A8~&>*G HY0:7H{UZ)?\c4Ɯ#@։ 4H#Rď{yQ2{u٣ؗm4TNNuڪ/iV@#OOB 1wm;a .ϽGњ_y[؛9ԗ5=]h[y?`x"3D 4\sPQ1<'yDBd GnE 3c3A)+#$48˺F* #7D%d$owLߍO4|kgnqn2ownqH M?n[>ݪ/!)f.˖ x@ fa3Ž$mBC?|C u=a;'1S`YݽU)eD]BQݦAm^Rǒ淁 *jvɹy?w-k>^xKۅmՏ;tUxN_颭g-蚆CypnoZ;؟AHGq{Hxi,l 0G?]"JQ.6̍GϔwKq'zUQ.D;1*WF6swa#w@VeկãYvb-߰vE+6h`h \M^9\1}Yh,:B;.T&}kj#]D*K{wOr뼍@Mp'8s@#G iGߊD|GE]G:{b:c~ nb~K!<47- 5y/kKRHk}2ja%s8s{;T;ہq<5{"ֳZ o<Ŝ,kւ!'8MZ,]YZf3<E /1n{ #Ve̐4"Fxa8y-vPdUi Wͤ[!brE[mSQO~|\bF0k- G68!^39r[E9.q';-}-qwڃ_೒͡wY# LX=#B!, `GfNHiX:|U;ijZ!жoo},gЂ)\? &HN˦<.~9H?1NO fk< Q`>δr8֝o|W-קpI Mdx n\?9YVNHdz( . C|Tf۾gLUQ xw=`ofڐ6V{'xUsussa֋Bkam֢ѷ\BSHlٿ?(f],wW•0v%Ʋ>Ip .+`4{ 3#M0_fxߟu1̧wu!xW~Ǖ)i+uf]jF POI3G T?s~)e3Fclk._IuCj"?6~b~>c۷l5^DZ.vwP54bW!5_X`8qK~ذ)>v~:vwk1ucX!gPse@>#_)W~<]W^pD JO:lC&1C ~V2@~!ZqQ8]4*,xВ; $J? %;c>3BC˅ |gX܄+>;[/7#h *R5JO[@Bn Oni9ڈ*]a0N|Gʝ?-M>ƒa}Clio37΂<=capH5S f!2d"e)@@_iLuXp0vۮZ:-]n=hk9\Z tInq~N;ufq țk9.6Ajbzse_|y0#Wrs.F*s#y3P%/:JjA B~&WV2YW.4տŹt_}*5?"GG]&wi[Q˙ؘvq$߳2 X&ax'_9G$ BK1Ұ{qL=://=fFrGꌘ' /{MT`&iׁt mf`2u}:ܢ0b" x d"z  k; 7Ҝ';QAKKOe1  Z~\S!/wA}?c´lRD'3AH*qM$GյJLJs1*a )S׍KRHz`f|Gg ;6^gk`.>4z[NLH3ϒEZ7!0ZTR?)_WF4}M$3s=_7 #+Y񂼍Nz`ů댣AtO?ghPG*,aAnKޚG??/I)qzO\>6>{iQq O pX;[<@'_+XnфUQZCZOӚ~U<_ w$jSi[>4| 9L4}l>BrJoGȵsF $JhnǸnU~ƫp?O An"rZ6]ѠŇoK0Tu=āg: cqCcV俓K=4>\t_[6x dafr-{ Haɇ`{o ]iI}G>'[s2Ij>=_]l_[ByOM8fѵA}m]Nn "xrL5hz f|*D`@!w6-ȟNmwB6JD][J=,M \ӛ9PJ6``.kD( %l'f+ H.< *#8JsܿAHNt|X\ }?ީmrVL`c$ݦҴ99`?.(YW5E)0sLiz~4BٽJvg1n!VŠC&?A1"ζ9P^f8e(CŤIP-ޭ3,Y20SbisC/(!)7BX@  >JU^>D u)b|VCЅDf!Ʉ^zjsP<[;F|-j_ǒ3a? .=l{YP;~gzS26C7{z&i'fhJ*|Pяr?S;}L3U0 Sa~=x's7(jߤ{'`ZYx%üW,7݃n@'q-g|H5QIK> MZi0BێW0رIqC߻v'PǽgAɁ i޹~Q?q Ru%:" iM6$v.V>eGe;]RUGc&x!3<  79c?ؓ'ԻkO!8Ը,!NIϷ/:m^kۣ;/٤gDCSQ*c^fW'i^W)Ӄ}+OI_ # іѵM^)r? A4-贝DاX Pt|~~@csgm|6 E2ab7*/Xî԰k|2Aߡ܇:ҕ.inJ&nnu+0}_g -QykPX}KY[r[l3dwk5D<$нs H=q~d B`qwbJx+N9~=Zh`~WE`I{\)+[ljL%֯aAkIhPd7kpnŮO%Jݥ .v(tFfj8͙cIG͗+]()K[eHJp:R˽-]{A[&YsVL t)ց* 0p"U!yWQq/z?}Qyꖸm·%U86"qzEΛ1:f(9ޢm^= UG닉NطO88e(*h:g3 A0=S`SklL 3C4cdZgd.bǕ1HWEWQu'i|eKݍRjpz3-ż峽]ӐnMp[y\hks+Ⱦfd ҮD]`0[N3wDB{gqSr/}Z0 QFLKRA~%#ՏH5CX$T!]Q8?"@"NQUh4~#r24_g Rܬ{؍Q7g*21Y(O#01S ҞZӜ4^Eq Pqn?Z~6N Na* U<'5d%Ư40`Gȩ~f/Wy8%GNcuCL*کOEdtT~6P칂ueC.q%ЀɍD5jH$US7 (<홈!d -odŮZef+f>h[r 87袊u;9< I0ኚ! ,㹳5=BxD&wGRF4\~;yGL@f*aOd%B QB_ZG:7\[,8k(E!uh 9 Oz>N̓F.e+ I d22FꚊ °h om7O (60 q~&>T!+=dk^UX"L| x,I-M9U N?M;T}yEXk(c0k${l_]+ ~}]'Lқ~ @u-l`}YĹG<7/"lFGۍ=21GzEI/%~$ԊA8&[D56@q[?;jm,bv{2T}'ko e. ~q'sOYW: SqRT֫eޘ"~P93c_b#~46eP`7WcLf U."EN_v )q b% '{z/yס'9@}ˎڒ߻GbZj~$ox'̿w"[)W ƌGg]AjGу\x@|wtΠ#b{r|d/D AMĒ>&F ]2nkbr#9ݫiW(XS&m4Q ,־!T2 ?۵VjYĊ"0t-H'\)T u Cc҆GzeDO.ѷsfk~(zB$- Xby<񍮮 W}z39 )W땉J LB~;H%~Oxئ]98#;x跥Ֆ7QKJRH,GhYy(kU CK|+x/*{MP< 5?>՝ >gP*q3 $6Tп?枱>;T+2z|0 =h"J}cLB\eg#YmPW#sBU#/lnCl196tS;!Ia.dat)S$_'jrq'nnR3rvGu#H.R7/kE~/B/@wE+J9 Gren ~|[?yΧy%LĹVd=q߅sVN)rУL,'*%ҙB$,)k]qjuݦu^xv8nXR 9r>V?1_zt G JSc2aEUj*[n2L L9Jb'n r/75.1/gq LA &Iyʭ?vΉocWr [g]{SU{60N+yBiыǓQ"B>/uf PJ #/.Fl'J/&z,8ʁxޠwc.%- d9{8]#Ÿ#%øP)r&\@&] qdBr.>A`"Nk幙.lCm0-c&ymWͲ!IO\~j"p\p|t5~E|JwO`VxmHq٪M|(x%YO$`JENRFdpRǀ2S e ϼ$Q8sK\" O@,))uĭ:kb7ü/>s|r7'曶{{gt4ϕ|?8x-<Ƽe"iCK_?R^ %CIh63 S9篗$A͘}Pƾ/79YxB`:o(aL>ףI|3H2 Xҿ0V^<^ړ⎷/]s\7!JȮ cFE|ƟBHM9R7Xjy\;}׮9ŹrJ{QdJ}͐\Zx=էn"涥uD7i@a ҽTmk;.ץ Yaٚi*Q1~fⲸݳ:Y8E9νͧ:MlW^ TB'w\atazdzr{zleN^jfWZeh'8'? k4"d vFRug!r%F*#qFm85#E=Ϥf ٗŇ\׳e^Kd/ެ:/ Qq؈l`ʚ~aXv\wonzzTM/宿Λ&.E3͝}n ՊZUu(|930ş1WA8\g׽w.C2|ҀAakp%>1<!6Vo^SF%[Zy'|NͽKQ׬ x%\ECN^W|ܛLNP{~;xQͻ{ԇH駎{fI:fu м_ϊuߺvKk+B(=c*~F1}pߔ^,NN(䌖#{7J,\ح9~#4<K11Lf)"v}ݩY-/׸þ=?ѥ㵱sg7ϥF7݈4@ >k;ktc Y[9`!"{Ai'ߊg[khW99V Z*4C8{{ije*菋ͪ` VFca]o<_ҝu0 Yn֏7fmgzhҵ;;BI8@c)ys3_'>L KM}+uDt>t{Ѐ MDLҟ[]>&Pi/"&)>)wbx"Zԩ6wp/9]'ߧ>ff_=+{"t 8(ךeӱhocDٽEioĵ%ű;q! !}?74&='2[~G.%# "L}k7w'w^=`e{Џe  b6`HI4Ik}VBũ 9JYI%}$r\h[Lh6yQK#\.WH+}:Z/ d4KI%EkJI@5gO9^4%!c^JV ?m/ߺUA96#oMzD.UwY*Rݞ\yǼZ0(\FI^dd*-ㅤl_6|&ڶ,^ O Rև KT~XGВ,|/Hi=>;Ұ2A4\oyVmWҨۂ~c)Ce9ڽf™ 8S)ڡ:ɍ=Mktwٸ؆/ Ѫ7d5!EI7tڴx ?a?GxBKF'0%`(*WcӍUIrkO#w,,Sh{{Uh;~摟Lw/oz4f<)Y1^ܦI;\`DS<D2p8] !SoY?G!l~NJ6_o4gߙt[Rʢ ޷w橋;|nmRO̧.x <_bOKey]dQKtCfy+:=JJJ{uHN%zGG~ԣ,78݁cy--Իx$)č7/v2<rk+m3B\NG`CpK=_/ (ɩ*LIAqD%r7 ׏RQt l E_m!?|I"C BgYf]S˒_~Z:sXVG=UXXvԚ怽+v teOJkG9jrȮquR9C?ƾMӻ*:3-eSu۴Q \9 sڦeRa7ӲEX;+MRw"r오ʓ?|}1RbFNjzR*7}}R)/kO$rgH3˵'?UN O (3ޑA o~Vϖ0E}^]2%m'y :-&D^ןO N6,5,_^-DEl"ӯ{\]5Q7vd`3~khm8z/Yu~Q i=îp=3b~b2D(ve͕o{\ǔfDbJ"GV/no_OKP~|d^Osr/A? z P~d?߁'7M!_'oJ!$x<|bɁzUq9{G8;I1%É RY? :֫8~z㮒j u8ׅ4Uǀ.ҮR"¶)V1fp'3?6dQ=;CTQ~܋6SV:G sf _v+uH=̋ Z0+^͞vgk84/OP9s7M{;޺-DR]G%<DBo`MMiy%2F s}=\u8K\TJъ bt+Z_M/Hފʎ}7HfEV.SY/m̀3:jnuQfڞS}\ k8~uםy)Z,4k`wkavxpz5._W)o*[ANd%z,-Dԩ*ײq]Z4${Y3mLq4r[>zqN8VWmUlF&Hk3?[rI{*g5z4m(A&V(L&@pxc^_Apyl>5꯼?-th,aX'vo.+#b"wBoLPnj'+/i{R`&nv+w:5ܯ}ذ!ᦥSJ ćMΊk0;EWvnzU{RӸĔ *k1%#5؜ycLFϛ4ּeTɀNIf@qc*uG5^;U_Ѻ,\4E BsorQo*[( T''|{s8<^3oH$6~Ӱ=rSaGJvRnr4P bqpNHIQP7c;ӻa?8p1t/ܭTv#ߦni$h>G6UqQZ4Ral!Mom ~=sgKq3gl6w:Q  In^Qw5@j@-g9]j9YLbXss|}D+JP.< 4oˤifS?ˀ — jf'rkgy~=Xkɺ +8b0<S 뗺sG@&<%]8ГiZe,UΉCV1}s۲8}VuY<֐!aOEvJ"nπSAu' %Зr<1sQ#ݯ2F_> 5Qǜl 2iT $ fr$ B ;|k2gIt F3*uC'ΔH@ ۸曮#z/NBL^r7K+1\9®˽hGοjT.Dps'9UćE:o:!1RVؠ.6!Tk#gJ:ɳ)2)5HcxtLhr"#<;o<jh˸GH/ O&2H,Li,%DZ#oOZ/$`pW\b@SE_ 3Lě94G<u )`saW?4;q{/mw03wZ>YC1#g)xg`)㎃\FN@bP7dSfJW2$)?66UE2E=M(-`_Z9jo|޿§G-J<*W{P=*"ADpZR9PpMw$eͭgxAZC.xaHUl?mD /5v2Wp DJF<"<;Y0k_jQ4CENI89>M[=2qy!b`C99z%!W&+7 ԌUh Ka gp:iZ /kq IYfSheLwa+(-x[3Uv]Ĉ_/K^QZ!RwuG֧YQYP/ Q&Y3_u !+[@h"͕e%,ԛ Tyw. 7I{j-'e'ſs|t4%OYStFpX/ W/C\vh(y?- &ʲx}-߉F%A'U2auZ"4r38BW7ecl17D{>h~@B~)#`;sT~!$t+wlh*৐|HPPcq\K5okm89ւlB N)Bv}4 F:zP֮ƭqWdžqb.;Pl|ȫ@>GRXIۑ=oxXïE!LfId2F M$QY3'5u|){بi9~y]pAv1њþ]~OL~ї_:б!m))ծ.}kx YU )1|@Wqwb)h4k\rJ w\3ϰHJE%>vozoMPwG'WIhf)Y\F?\]3_6,[dنb~Ei~dPb1 D]VZu@Dw[,vGR8ծekwI$/Z MiG ݸK}*G#ߎC!>KtL}8Xe0?1@A4rܟ[;:"RB g&4޿ζE9jDxLj Н"R u񴪃͟?5:j=0,`J JH2`6\EbWX]Q WW~˱=8b[" ݣIC2_^\LXMu4[*s_}3d[E;ɾnrIrH=zq3ՙ7n?BOC"GddMBkd1i&*gIj9;f*gZBj^/FGSKUp\x{ޏ5hb DukɌjQkHNom^RU!3 5fUNXԷGlX:9x!iJ̵~.Ny1mg8Ӽ]FUJKe 7nEע0:m~yS (Nu*MdY5^7"ɋ|-we}!Z,|;AMO1e m8I9i)9*CouR#u>p\)$4(X<,CQY<}N/؀Vqdú+@wL.i)-ޯ=3ٟLsO+Ϳ0Q 斢Vh "J^qjר߼:|1DthR54?ynT(>:v %GH":? ޚF J:M{q5ޫR1Z>ܴ92HkqS>>:8ԗRi/cHmZ‘CxuI6PN];흣^S-!b^р=.xS5E̲}ɢ,`IZCZY"$I7w;R5jXaC}fhڛJVhlN6"n!9=5AK(3#r,YWή9r;_!ͮKch 2F"#XI<ˇY:Mы bu3f!Zs}8]BtfB* n8SW0Cut+3EͲyGNGxg2S>Se8;m=c 2exr/Ư߿J={P=cSΓa"}u>!Vˈ i ,ҝFkLF)+5#\X:qދJ[5Ԧ օaz,k;jiʼDo+pV+Dˍ53.*uk&f?-t۔}nrL,< o p<-}Ӫ 3By1"B/Jm~"&2_Je܀qJ<ܴYTu2ρʯ0X˔YQӥ|8,@/>1ã B1c-ةesW*}Ƀ>LW84LóJFКt"Ժ?RZc8ؘud*?[Gן/ufm,M o_nJVrd-G5&dTokgD|ns̕Xa_PIgtvA\Z&W=ӳQTD)-"!'ug.$lS e.CC]܇Luvyq:*D=pC=fX)z6mZyh .?Lܜ8܌^0{h) +^UB+ 4)]Hl9К.{xCKP/9?9 2KeAǹq,q8!3o8ޡ%nrU8Fݯ *Iaŕ36U?S"rB?%=hΨ 9;΢DZ_۫VPC5%Wڊ^kڞa%Q7U U}VZ刖LLjXT=٣.S܇UYv-vosI`ӅLy<>e' !@LxD4}}zG\ 1ar!=s׬2Cj@aW>ٶ=0Xnvݫd9? &XUd ++n/7P?}b e실i e4C%}!^D斑ÑOS/T {aIox N9m/߽#~sR0zWORٜqĎ_bl_^.T"'+2N,nά6&a1WRRfBdž{e"q9t3x/g7YWk;*nS~w-YM:p3/# ([yʧ*O=h #90>DK{| ^MgJ*7Ÿf89 GOhd)tX5lg)X1$dgQ}(\H#t Gȉ=S~IENK11Kʜ Jq q89綕"|,lkhxUxAᥝQW遝%e^Wj5AxKdQ^z#x@ȳvJ\DBNr%.D%R$i 8M!o*R.ŗfHH=+|%aaL;g~o>З5 J >*w=/eDDn}YA~^B>*+Bxod!_aNɑX`v"{Z񚓔ItUr}2oCI +'AER^%D7̫Ⱦ}rͪn9Xl":? ѲJ>~S&wVux.$,K B-W6 _?V<=:STzH_L3ط,0f#!->Q{OCƎ79\α9kJ0>q/>tr>5 ]*? z9Jʕ.|]i~u g(g9eߓN[K]!OVɇR$]T`-+)8jgFdk1<JTKճ;Чa FX -my2ZΖ=s\oql0}5L4iH*P[%3|`p!__e#5Q̐ia ޯ[yם/z=8ӆaی6{显#Ra)ygQvF2DMC8;ȝ=Md=[| XS6SL0g#>x_CAt 0ыlS~rg!ꯈ0M_g:~7+KB,9N}?V1T!? CH[?0]r p~*}MEBǧ2OF\%LAO KJW [G Bݗ_xZ1tp!m'~>{KIWXV[v&Ο=/'ws8Cz{ sg! Ӳ 4 MO&P*6E<ϓc<~9.~TS9H J:9kSV\}A^jUV2Gv,+6Ao.鱟M\ګ(KyW 勨Yuhhu8f.@qYvMߥ_1 D:WTu4FPhQv]4Cqx]NBO:mKtf.iLpM}-P9ծO.Kkb {TwJJ*lu[49ͼ930Ggm]ȹ}gjd(|vd 0lap_ӨiD?NquHBM䬴݆_D0hvۏ ݴcgKhڽzuKcL#$+БeK,*rrXEzw7 hC /pFk}?I=n49;|+WHFL~z@Ӈ:5y3x1ײ? Sxwf=Y 2ryfgS =z?"?/cSM,97upk~;اqe~Dn^'ϾM( Lធo=irD) -LiNhȡwh^\=ȵhߒ{`X&,vB]q>\I!_%d#'QSu B̼ԙ)c!#|P#>6zQkf}7c5ֺ0b.k-ZoT}۽CI6nML3L N@3Rd%|\?1ʻ,;*t꫹KxtZB˗E%`0jǀw@ O#κJbYzeo!ezh 9FÖLswI>6OU_YR4KoEFX/D3O09C2:%7.RQ\1N0 l|G퐸y鿫ݹbZ`O$%uh#H:=-%HqBY~^3'u`Ft#_e2\ȷYvsbmTǰ$Nh:(&=a)Щ뵦,Zsל,Kg#?TDr $D/^# m3A{*H_f89co߳kTdTe}eC1JrvBH>4BpG*]KicO+`S;mÂGɗ6:l{~~oWk,~1K|I}u6ҠH?8{}_g RT MŲﮞoe[WLg bSwt&A>X1Y M/?#ć iw 텻ܩ.y=V;^yqhmZZfa Vͫe.t/skǴR#Q\<{opˏKII-} lso~RiQ[ӵ&-<1R+4wU8r%J{ٽ(*j*/1(j;㘮Tg=f,u# \ไi߿ͽLGpU%-߹'brvi9 ~wӃ^5KmpEBYֳ!n1|U913Jx0()jNȪm1Eg{tx<:ĴW*i ="gyE=țSYz\픕Gtޯ[gSz $2ne^nj,s4|,Υ:\tPkFo>@#}tbԓt4fDH^,sǠ1غ\/]sl4E](uJoz<ItbM)ΙMՄ-_k˸| b46``Hڧ D׳_Ja sknEvaS;mA5-jH^oG\J*|9 D#Q۽b=$y\_b^Yc~G'ܐ6`n9YZnMܿֆЯH0,Lmvjș'H?+`!&{?@8`3{+%-2 '*Gha&x ߕ5rcoުtǕnk|6Kb /"M=>T# }ݗ]Nv_' nNk.(1| pU,r)%q|-+nցT!ڐD/=:eMc uw M/ԇB(ڏvpאʼnowGxS~g[K8ky012aɖU=Yy-Yq^U_}%tAN.@}J7lr.n'M*[ 9pECx[3H7 $Q*^VӴ=, x|'癴~Cm߽yG܄[%Oܣm*1sR8EKoЍ" wEu3:8'V8v* !V_TBuu˾>+U?x_oFkJHjG&-<պ~}!ڋS<5j~˟lrrI3F_5_k Qd$O餜[{F4< Iƨ;k_DgxSIyo,(-y :V[0`cdb{E/b- uzW.JC#;gy(!Oy;ʔzLVw&3+1|j}gzk tp} @QcK/Q/m !LF\OVx5[m^^joSeY82OEx_ ^^O;7nHNH&?A~D QF.'}\{( TtXua9EYfrd!U `5"?b kx 0D $$J*ALz}MCQZ ׈#``/7O>'!kúޗP[Z*^*/SH9Y3\?}Uwa,գ؛P2K]j)Fyc%$F896_vxf8m cb/G&Bͷ <<=u൱U>8vS3Ы߿+,瞄l}-m'NƱ8N,%g EQV ht,^t+en*'Kh\mD6RoT3DNSg@[2X(3u7ކoj0cdzl}z{)c>ի4'>5?.MV y2 _va"bm N4A,oWm~x.:|˰Fje,كR[B?ZR&m"TFj`cd~ yBE4W*YL :%;09[*oOFV7Yß꾿Tiui\XEj<`6O@?[J%H%g/WSg8'Qj笛ltժ{BJ s2a$W:ձmwݶ_!b2<3X2Fyk/$l<d"*g2#6sl}Q?U7Ϗs٫5]<=&t~C[ѥDj-}W2|e(`-OB:}`/2OqAA;X2&pzH*ȣ)a2TulqEz=ۃ8Gnx?5y|d<$e ;ۖ&1& N!'jz-*Y'fFm:_Ï*+~+>XUr#}S8ha()wl7/Vm6y H;d'0Y-'}_]/݇0[ъKYb( BKe7ffqd7iiɖN/b-E,ک AaTA5$tM(rF, ʧ -kDiy ZDcOhN%ǟbK4 ,^^XOp^) \YۜIbߛ oĐn]QsmN;^>I}_Z <7Zb( 0Jv~}W $=09^|Es^k@;yk< %qV?ōybS; !8-,_w cOAg쟉gTo0'&3%usiF9_.KY}+6 B2 df{5K1*n(}N4 Ilkx`naAPhUVBާ~v;Dw'܌ʏg8;b/Z3 _d8jM (jvCԈUW멌]ƒUTQ:'g(Cfgf"l0mYzZ™z* M JpE<oM-QDW^+?w6lyKdmyo)+g;eoOx{c% ߛ!ZoTjWqCe!ibx O*%L~kC/6ڶ'; UzUKgazɉ+X5>i).l#9krg/ ,'E{;A9]繸B~uގj u[f p?GO#|@\m(oS8V0rb?ut6d$ 3q΋Jr33<<b&?* L\3~ftߧl?o/?*cKMl3<ͫz:wu`G_OW@?P P=$#|0),0m悠$iSj DB#y7o:-]=8lwWЯ Yw4 Ǧm83ȼ}[&ݵ]$QTİF Sx6|S2(!6<9Feģ VN8PUDC>+>mDvܫLulſMT*&~)Ml9Zox7z}"4l1HhAr`tUۑQ@7055zdR)xLPN9cz[릷9L(>ٞO%$0G;Yіn$ljSoI`Jw 3UBüRy_Y~v*sAg=WQ{PYM>njSf Q%~3cpN_fDsq+_gOT#f}>k(ګ"n_w8.PZ:X磕wo77@r7{MFOyz]Y*[3G BP!e\1B~ n}^-@ޢ/6I,:K}dbVGC|]h<0>3@~ubK\c<^%%H=z"¤]*+ m>oH ;c{xJ5!~#W X$kFl֣0W%_ϰ9^rw@qau}v&/Jql 8aHמg+,"z2K8b3)Jy,?mqIXIj@l揎8(~"$iOy؏25ƈBf3+auGuBd^(Ff9b ATEn*p\6ܛ*iHPOl8 ]N^ Ujh 4UyWPu k$1Y BWk4!}li,'uYP= !5MFprڿmzX(Yb-p ci Ug+{b"><7>#ma>)i\xH!$&ױ=bŜ(B/>Iª3nfok"CI䷩#؉2k"}6첗[O:ۘmI`^<|\!p7`B5%*+W|o2z~i7udPiȝӞ{~&5u6rH,"2Yϥ8V6x[VQLsMYF~yڷA:j?9r\qFq<:Z}@HBdЬl3Nǩ4YLau !27{g@O_J\"3l#%029ty>$#XQ(ߜn>z ^&F7U4F+"`^z7ehzΓ_@uu/{t_Ln2yfT8xxD#in:@)`9}Vɟbaق/~?,.nuxpK,|RJJiĬp}_ t"cƢ&lnL#m['y٫ t`E0Ets 믧<`ȐO7MMj3$wˬXĘgRsj?C2PqP*Hyz&a6AAXT~W >xA6XT4uMOgצQҢ8r|> qD3 xYB+,g'8A[U Hްp9hF!h=hFTsOy׆MCA8!-T$1G$1%`$_ (Icd@6#cģm*K\(MN&&ŘXY/M0e81ίEqo޼ƯTũ4g P̏o>-L~67^5F+ N5D6Ua*z\9$qr3RH <Sg푪}Ƚzq⧊m;lbKʕ#~0-d&G 4e*S{pE4z616 gRuVQ,0!|bF sg'AI'Jć6_S Y E *{jwEo'aւkL- x( O=J/>k[e'Y`YIΙWq' hϨ/XXzr13 93 zH|?YYZrCFĮȣHC Ȁ'xK\q ωjPmX_w敲 ,͉W)&7R̿4k&jE U:lY4~=eT=b&ܞ/pVkn=ow>}m%-® ӮݵeF5wr]s7DKFy"c]`1ܪNwda|ǁ9)}PL6=`O2'BHgC0=9/\;nEnO伕m274"b$f/6"}e1"NKǼV;T+.ߌשS#3׈G3< Y?H`(:TDpap[h^vWnU~ze7cԠ>I<{c?O"?!`i\$ ,`:=?F*\g-.fys_Mo3N[t %10\rA@n[ CLQG#ZM@d[l{}>^qmdڐݻK1j# P\.5|S媀>`HVgAFoD߃0 rŘ|36O3+X_+_佻͞pdPkm¦,  !(&7VEQ:VxSDv{4~uPߊ}2x۷S:$N8 liU;rL)69E;\+vl(<߅*@9~ lEb4|[ Qܽͧ"]Gz)>G}d"ccuppzyΟs/%+ ӡ )I\݀RTdPQ#'I[!S-  cM!l_X)UP ]0c;r4#/J"|\{O7~`}^QpӉZ//5i]ܼHESq-ѵe56Z5ʹuݩ} !v2+'e*_QpI)Tg^EweQV|AT Z|6F -,4("3F[q]oX]P qq*[=^:_Z{W~]=uݞ ̧9񚹜l'&paS"R)IɚUYQ?y#ߘB%չ ^Nkw¿` XS_;k"~C7Pb.ɇbyrT'=+!+-|6fFe43mJf'*pl%qUC¿ eUTEL9E Nh1Jyb#$ڷ( O ɕUl8;k6< _a);9ܾ␳_<CrD՜UPtefS*}ЧŻ3K4|žﮪ8Xa.h NҰ4gq. *>"WL~…t}7siEtܶ<"k<UL:{ |*0D2 !7Z¤_x|%ݫZw:v6O9ThBIWqۆш\oRnTi,3OK4^͛ۏcf3 'G c9oCƐn=6D+|IDωЕ`}[7uz6'hATV t_o׬N1#_ *,oިٲF9!<<܆M!F_,zY-W@5jl u:5YX&liBbGCg2b]. V́ qBd^{nL;9L=zd}DYQ4Tn.E&apD"_f%+BkLc58~y~ ;늡[Ϣuܲ}X 8, r*ZN(׃fGkBk9^3!I&]*Sz9#$!Y' x8-h8MKFcO%jً4=ޟCRuM*΁hI h]2xdOykJu9߮=Eyͼ|G|E÷G8Q۪8[klw\si¥~aZ%!S}?_ce2*z$@2CBdEGi%IӆYlBuPYLT6A0oi64Ք_w= ^J~l3a+B-I@ S^^ }'@>+I%ۢޣZ_qd8E'S6;cʂ"qZU0? kEX]pʤ᳷:ޙ)mv>kPg>8O,Ώ* 14)j%ݰ/evL*P!4Ji B{"О?DoG2:;o'b% c }F _s :?Vx1u35^@yegO1Se.,E5/a pMvo9&D1z?yB}'μc%ypEW_G;܂FjtyGT)¡Y\[958곒dKahGMTh#A-<2 XTR"ϋBEWY uQRr׿Qr&31rH?C|بSԍ(uIhg!*_U_-F†2RJ+؟VQdDžvv, |}gZ 3X!p\,b ھ |8X <{{IVy C3]R^ckYn{ c! [ Ux銸 <qrV&FN;tSAwڳۿre0}#)HjXq̌M%Yɵ 5B~ EHQZdrF܄t:+vB: YowG`e?fqUAO"}d]$gm[)mlYmĵ}ɱW_surtO^c}N o ҟL;a1(F4'^.Wݬ' O?A 4]VJ3$z[9p)'X$q]LTiMCv%LWõ<%vx1D_ͿA׿0h|gs4\-Yk}IW=ae",۔n~,9nu垯~ŖaYx!여nFq~n*xo wi,dz9;ׄZy]vUܙ>r)W~$|i4Εq e/ %{ާƉ\f0߯I&b;0ժ^c=?7y>|ye\;t,tۢCWP/)p?of=*/\΁:ruD3_רֽDH)beᄎ;J? }9~v&3}0"rRUlf|"Tuc~X0#)8chKLMhY[q]4B`пM67uYJw2Dp9# k'{\~FՑ\Hv[tf0zˠa2?q>w tYؼD QG1tR /ܻB\͖ G݀0=ѡhP;QWX|{᣿3=g,G|jMMԓYi1(jtRܡ'HU4މLM P7P S\F []Ѣ2#wD='b>'V!cNOr.癨d ,^(> Q̝02$??֗wࠤ+?pdɥ:!:ЀE6=2ԛWA7y Y$WFӺ(cR +!$ʑ`!*o"4o9uVl( *(]+𨃗j9E3u2DLHf!'ĠvkJIkT n& diw&R׬E}@%.DyXh*tX $2eQE[973Wtqlr]jo#^b 5-C=d۳Wc8w& _=F5p,mi"sH#}Gx.{A]$oIFemG>.rd鯱FfD#~ߡ)\F+. 4\7?Kz4j{^Q\n=($UW5ZfU!Gv7E2ƭi \0XB7pj '01, LfX& Kqismmt.Kl*&,c\+- ޣV e{Fr< |ۡYB`(ZJW;'P1\^B ^{${GʔfMT a|(qތң_8D?.bS79USR Vn20vDY)Ha #FH'"Q1 0ֈ\K<;eZWbC ^xL?%T_=AId׭m2.ۺà |i6%p`Se9MZ "[[Y<|ώ9 ȖOPOaf9`94ix5_?"DA>lHMS >$?az9i`E57Twьъ)fb|ң6-/0e.%}84|n(k5䷅9ޙaj /ԟ8ųK3GsE >İ1 oW|]~Ё>moa}a|1 w-a*?.׈ NnЯ,{m~! I7~.!t}Tv Xҁ| ЏJ}H|f `w[nN v`S 6&ePCF[n3{* ܈ʵ"Pl̅<ƃ8Tj- bk0mm+>慎$'&N i]2}<~41l q!DX~}<55} X0^Qf9407 96R_}hQ{~#@7ƥJC C{@  1;Ycr{ko O|Mf^1,.a'#R( M]mZ| /7.a?TL#ŝB"]0eGtlY^v;2_$y9 wO]LUe yc"˲9ܪ sQ>*]5>0?-@GV}c.yIGk нWoBsܨ"w1YB\UЀ[Qs27'h|p#&"b1oOCۋ}$yv߁[AckH]:M۴Rɜ~.t | &>җ@ZmF a>wE} YQ] fb!E %/e(x[Vroem贾>729_ Ԩd%h~rOc]0·PÄg doErC%WQbO{†hz[&ڦ*v:qyggVX ip1?(/WWGȫipyV B`<9"EخD% LE0SF+%˧!x稦.j'`nN-qye4~뤻z:2%LVC- l¤{ .cbI&|)"L:b̎ #/}n|GKs]o?R? [L\(`?]g\خH+9d0R}޶ Jhi~_i6zPЇBdFFSP#&(5l4KꌉIwhk3X JEG{JwhYڏJx7;|ȫDq:P[ln^#xtB ^RQhІyNzW[X}̅JG3#PtHb>F+'Z?˩bZ^M(+Y1>8V*4 0B{J6Cz ef< RA][TN[6 ebbT<3ג C4̟eT7lX a4ς #\ 2 Jƃi4BmUMlW;[ rA34:tLW w H(7i=gmP.~F*šӼ$<+}ÿ6@tg=,y?GMQ6t0/G!b1SH'osKA8H e|Ldy뛶|u+@oį?gXD-jQ-A:#󒺹iwk qx5@A^|jlT5 l g$6>}g&pnk@J'.T҂h`: Hԁ*w X LVd4<+Oگ:V={|,9%Eś '|keރ_8NI[.#Кfl82#8G),-j*D3~B-By~BG~bչp#9USǤ'&Rq<۝*SѹsdW)@YwMT2v7{si'!)nglXNSG9ڰb́ 3Մ~ j=ߙJzW_Zxج_:ge3eaf3:A],!"} \Lrlقlٓ<0S&!M_Zc Qm‘*>+`#~ZR 2~Ę% i(ũ#L Y7vkz5c|| ^bq9|_ $^:}.Ub ?ems./=bC'Kh>HUjlDRY6!|~/GGh`@s`VN7j8a1svBv7 P=C/ޙz~5P8}̖ %?FDf;{(O-ISc1Hi?I6t<&Y`2:g Ѱ'K`##SPgs f"U\g)&@? ]d+ =gL)w7:!Rڙf}4NłVK5N ϟ_vmY G@n7X b=yM8Gk#+(D|壟9p,ƚf{[[Yi_n5-t_DD|+:-wzCzT4łJ 3ƚFo$:onHdPC e/3A=F, !5WL&Hf#폰޶|-}r&VUi d,q NJaWwMՀu,g7 9im5L@rq4G1(]_;j6Hl'ՐvS!iKuZ/kv_9<0Pڻ}T"*;,:ν?Y!e#eKic{zXyaa rs3xCo&jr",}7W{_I!o;QHKzOB0mӯ~aE%}@7x+W щtLs H^WrDq{ KQqK~ٶGJ}4 JWEruNut(X2+ {a2Bn&y>4C 6O.{E@04+p51t`ȔMo&`QZ R?e?1΃aB'mF\<%T=$uA=';ÞHl ͐Q/*jI{6~]oG[FJ/#N<6Ђ.9sQ_6mrM؎d9;3lu>Z}N^Ҭ,3j0Oh8j3 *g8>,K5s6m-SKyaz1raZ6vӹ:Y5Ȑإ4I9`- ,;2DlCR8‘a͢)^\mB?+wC5gTp2!% ,9+LGԨ]I3}/\沿4曕>8; M fe7I͕v2臃> ^sze\}G cVi~'U ݑ-GaZ4h-%r^?ix~IV ;t,8u)kw_&/ȼF"*0AZVl]] u[fbq>1DOai:i3nv"58SYE_U}F:H<~-8*HJ)c9PZ['z  c#GK9{wL\ }Ϯ-0 gOs,D`^E!9 4IoBhLk1U(6[ 9BĖy/N -mzџAoKkM#WU  b!X>1`uEv6$p2ڪa/)V)kNZ珹^# (ii) %}\ԟ?u/Iҍu.vz:^9]*bW'0ę!jސ˜|Dn|@ k˚AhuFyo%Nl݆6$hlaq$2"kšԨzg'}e"1h G>Ϸ~SwS T=|n:$1ZDtɢFX8dJ?yW(;~~-1j8Kax; ʌ,ܪ6ѕ.$ Duf^P1Pׯ^&Ů`))f9+F6(sl,pK0mܕҢ2֗MY!T}mH/|JĂ!BaߟŅp6cHh$d0ăi2ϯPʺ4~X꿋J-5*YǛַs=Uy-&\RD۽1p0,m+K64e%(PNwq-7Miٛ'Ss8$sdCvu1~ּя~Vn*V7poUa_[~]`񈚢BP Q4[Ί)y)*/0YHOzAχ.Avnнzn >W^R}!O%"=hA>34% G=O3M5LIBe=]g028;WW8 8u@@<#MGL -.vtLPl}P$G>.S`6Guq1d=*G=Usa-L(x fL2% Hyo{I)f Ap}pR|s ,χf?o?HiUCzx']F>P9WRkʗw?Ҥ`9dgѭ~94_˴/g0QG҇|#)@A͛Ou7TQdN>;yǩ1Q^8 `Y}ގN %^qvup;*+Y!c^+ jjP]+p5!w]VEc}x9 ?Qq>.X1ng` Q sW:;6adS=v,谵?9<>sΙ H^ِŸor$@^ Lc{o9n!Dy\('`Gpg'SmX>N7tݪXxuAntW, ׁuOZ񆚸)s ȃͣi/DJ/ЉUy]񿦜,h̉d™`\Fe,j 'Ě&01j} v6Aپx"2=݅/|'VwK]~W:',K ĆgV-d#lc迿Mo8DIg<Lq=xЏK 7sZ=HP15;vy\aT HZ Qg}\oxiii-0@ Dx~ÿ$$3JuGMQvv{ICYlkLFBwktKuΙǁ%Ov 3{=&i@ȤWyAI v_PY"$楄ȞĂ?48xZ$|>kч:-l7@&V@(Y2(Z)Dy^76"}6rmClX8?`d7!7-sLYvVfwYoxITA4.BHpQ5BIcQ>2麶ow<Bw۷3j'S;imK2yӯi~q>5b9+g7v;2Ddbmzލ{3#9LSpww@m! GI=ǣJۏX6WA{Uԁ78KE~Ҧ& D*r!ۦQ[OXxz Epp_L>WzѴWSuCI xFf5=!ݐL_pik]hUwH҅7_b&L\=?6ɕKlӼxߚς,ZLq)?d=`mU6⫳qsfr~tΚlM@/߬*a jIZ-^Cf k5:RLpˇSW(#WyY0z,*MD&;‚yꝜ?#t8”ACc¤zwЩ\ [w#]?t.ȇP[u}"z_E?sN>]~׿ώ?bx1~';nIZ/08 nݿ`7jCMcpHTH;s2%Wscݓ_CFQ[[0-%^ꗹʂj+~o(iPˎ"nE({Y$- frPv!47]c'pMUX|!B +P>pR~šY^3 G0"=)ILjZY.8qT7z禡k>P}W>S1\8pEdh ޠEN+L%#)3(3> ac^q#n s NvVe?ig S24mрGT&i?o{\T'L#mUHCc-획^ۦ|s70rl[1#Zp~HȏB{ J >[1=o?󺮻?C{w$|Z}@omV;W$tsDヺ8:߾YM{=*"(tBx%w1I]źО1D/kr-1ؽy ɾܝtа8@畑Χ=Knkr|j!'B|ZP PGpDej 8#eIL $dTK$8MHTy|8gt}6MɇC߮ė0J;-ˣƛ'Wj^;yCݎ]1u !n" vW<,oX:lV8n=CƳMt<ܽrZaݞM~bUѶyG1x"K$!.((8-GtMȸ.5DNe;eEaie?yyqec[ <+MkbprIą?97q]1Q"; ]uDgjߨךgN>~>Y)a ^HRzm)R `֮P:bRFrNzWYijoGH^\Џ#va,go/9KmuڿMahcPҹc/P#J\nnEDb][kF;ćVL7]I 'εu_BpMLNU:}0Ό>$}_G*xMx X+yC;"li}W}_%֯0na'C'@Eʢ>72 '"ld6z+wWo8M3j?!5r T%Rcjī0@3G"Ϳrqݱe_VQ:)'SZ)UKxƂWPPM=y5@(l' 8~m1-َ=h Օi}IBԩ#5ՒciHjvV~%1'vҡ&z/x>x0IF71"\ӭ YZt+[Q]%S|:`JY aZ/ qr gܧ{P˾8?tDL6h4{ۜ2a[P2#ˣOqٻyUbM-!nE(߫Mw\ˏ?)s<,?G 7voඇ=]#'Pd+9>^S+F}sR-PϿp%4'T ?D;)"Oʌ|mڪ :'k+0w }d/C5զNc6<0R9Q6@ lI b(vR$)zhÂb-{tv*,ϲɒ᷽`Z~qls8bzoi<~=_Q1} P"_C%w+j7 L[MV`|xc>>=8Oy a3a"đ*LQGw%)9MMCYq2;O'9.x??WEhk- a˺}oY K<Ɗ$U?;tܗ KE'+) Yg7 %"NUMEJ(%Jڡs2pPu͏Ø^cr.s[>m̶Pr 8&< ҆ذ>ل->>~Iv$+Qf^ /9tƁ3G{h%)a?R{l V=ZA^ oYM=ً`GqGM\q\ 9Vz"j)EzqEJQ'-afL/@Y|o-yC?)n #̳,2n/ WuL0Csrs#oxRGQn-9"7!Ø"L`2؞뭡#H'MiSvs#>DfvnpY(M CRL@*Mm~~mc^o%diIڹNqoJA<|p:DI{ {EJ(eRo& wb|d2}\)ZO~ %7%"R,7."s@fY'Y._Z څf{t&JG (juE ۵Gf鴇7jA@ +C$p9^D[&aFŤPjL8s|H2ܾ9ql|[OjU J&g -nސUa`~; e΁QWY^Ȃ'1]"˜H;q5BOv=%&䀆C+kk"4&O:Sc)?Љ -={_L}>&\ueixɟ_;ܧܟ i#i1/r< 8*ٟԸ??[3)DfsyqU"fpb  NwQhy'i:*]{6΋SKm&azÓ Nz {~q3L T&;sʦ4ɱN^}YxJw9 bѸc`>>x #EZ䷥:wꁯx 2]UH?;>w$ê"=AV '!QxE|?tŃ8+9Pr.5?u"4VKOdL69?~nL)hp)*#`$޵מ ;CF3z `aGGe q1pa!¿BD;Pwi"=uFc2A*Mwm HPuBMWJk6(Q!|%nkSG@IuÆ5Yq-p7qI9R4;%;p$:'݄Ip꫺Cw@agоއQ;1܌DbƪK~KG_$FA葶㰛:a ݽOJ`jro=FwH_eDWzyT蔀jmO ]kĥkC(*u;3f?[3g3`xaHh_`I3eHu 3aX wh%> j9eĨLJ(^vCf<?hC߰!ftyt'v@@]H61| y!bG`¹~)C5$P8TDHޕbQj" `$*PrpyJSfzKԟǷp 5TcyW$*b*A=rk a<_~yT89vZ_әt?Ik!ڌ 9 ˔pۣ0˫&d N#bޚ0u28Jp|]('ma\+\09tz[R}FQmk G{o NF?Ü߹m*]2'2 vFbȗaNa=}`}#fF>f)rȇW@yOAo@6kKr#D0{'@sQu7rG2r^ze3m_ӹipF:و3qf8l׆gpP}}u$^F'2+k-0/,oVEJ9 -7qBq'_2*6s8gw\[&L5{?T+uS_Ъ~TY ZIl [Ccz;8^iU(8}fxNCV~zRѝ;WGۛ~M{tc`7N8ɟě[W$O갅t]_3ٖ\lC|HcQP Q. bWR\J6FShePg3;t+rirbܙCS (s[~cg5ժ՛~{h zbˮr^ӼvJ^\mKI}.tl oBRܣ5%9CH^ HK\o5K:$4FtE]ՃޤGT_W!lg)K<9MhCM\9;>)JCЉZ"̽#Âڹ;2WχDS)%xgW5_.ysXu nVӤ5Wƾ@IϋVDom36d-jS!1%vgGeg;~MM6~)@NN<ӷR46a9RIY7PlYt%h77UE)$}>.[(%%?cr&5cJ;D׭?/zZ&Q9_:_Y͇Pq-?*Uǎ-jo.OAfwET<>L,Ǐnf-zWWO4>W_ߵaBֻ"J0jb\2Qb}2ѣ8B ~p`#]<ڲ|;jcq_m[|3JJXxpTpbֿl<8J+cn%odzv\-T zpp;#O"T8!롻?ZCޣ:+2|Ei8>&+"<4vr\BPXμOhB +&D[!ı5QRWiƔ@ ?RZ7a;Q"Bۊ@ww$)3 Q"γر\_ϊ q Kh1LoF0F?C[+2\pIǠGMnS |?g/|ʠos G;?Huhu=\ѕ Lf9MN#8rRQ +Z92k1.]t5ghU|:3媁:Y@iց+5dma #m+:'nE[ a;8qMq\/~tJx8B4ؼP;;pwF̠'\'4Unnxb00׋R_ Nd)US1[-sCC8Ş#"tk'9Mc{8cv9yK[Ra&XL4̈́ɤ~4j#nkvKl,AlVz(o=a4R]7iA (|zN_d9z֧{ȓB"M7DK%mh48=xhv/aq <Ң jyQQ؆Gtڲ{PH#2 { 8KeshqZ:r8ֹ%Tc[ FQF+a$s$9/H:Q*dd_'yk$?/J#qj(<^+F;c `sE]s4y- 9PP?nϣ\nh%bBc \Oޥ 0|6~>V]md-HY\ĝf%G2nBڠy/~cgKt "Su9~r[ 3U,+]&u #G;̿|;͑51]S5-_EדûKS7nblV0x6 ~-P<~qJp>/Q 4iA/:!쀗,T]429]6=Nqi3BTaCڶLC1f2y㯸OjTgH41R9KANaKv,,uu-M~^ Z˹P1*5؀/BĸM!SBJw NοD6`#ًk v {o ;?B%XϷٞ+U=N~S:]幖 |nU]} TPʎZ!2<2爩ֽGeVV eT; {eȁ;F2'4 ਹJyt S^-"(ETUA2+'V!"8L/}y|HLdU|a9ǿsD܌/FsiwjA/l!%]E`ML[v=XqX]/6`?Ҟ,E쮊+=,]eK%eQiQﰘzd9%3|>X1kBз|6B]gazgQY]]}+=_?(qIdT~,P#prBoĕM"4Eta6 'y<)OOFI*/dnלc+6g {w^l[؂/Qx63Cr4_25$8(fSz!71aKXb\Ioy5){"I oZ~- }"HMDiufcd=ݤo4}Ǹ.#_SB>zhwD1L*;,@G#{7CTJ]PiRmJ{$< D4Gw#,yVܜ+i'dat f9Ay$ XTuJo|ȩHŌ^8x6X1 p/gOwﯿxZ%-x CgT6 pF>V:pn~mz!VRh PJ|KH4Q/>oo{{Cr)>tZ㩴ȡ"DERg%W_ M *O47PG8LWiJA654 RG#nԊTzs& 48d#pŅ!)&0rWH|s &U%! b~s(HT:vjA氒LSeݸ@Nn?Z(9Jꘝ%G (I< ݼױ3,Eҥ[8dδ֦tmWIqH`8\1:w;R,@H9@%]h|M;G9y芅Ke)^NaC6Z7z͋u&@K-() =ehƭm°A7E~٬=!C2y5&r@CnR>q<qad$Ys?s' RK=)M ѡ՜'ڠm?|lxc|"?VLTxhK_Wµ a? L$u#WW,?q/<*}*vL (Y 4h$D.u{h@a&jkS=c֕2FC zp|l_^&MG˔c=/u1P+QJ\B"Rka[6Tdor)ϩH 2?\c\pFd|Fߢ;`omge՟1Ӝ[rf 8÷ů)ftdWB(ˌuE|+f`EϏgOR_3v=; "l=>y5~0 8NܴAY[p5; J^+ @(|I[@#1fu~iY(7um5L-w܈@T^c{ %\eܰy-p|+g(?ET'Ut{D0![o|&{܅#){UF+B^9-w pj!HK2l(417Ѓŕ(G#:H[(x@#j1bj& u8! AG < ⸊kc|aڮ+3s/{8s"C3T rQ{S h "w/l"]mLM6 BjK`1V9N A,[ ԠQ`B~MC80#Иa:Mzzf ًb(u㎷ߩMgzL.d#C/oQ\7b2Z4$72v  WJIfY+j"ZP3kw7MGlYV]3؛&tNKL)+޺ un"Y `MaNKJwL$_.Leݸ#{I~RjV00@rǃh:םLr Td!Pޮ8b=_eVsϜIHd,s}`I8!&3RcBG h8)x9 <˂$=H.֒F%]%6D5GZq6?ՎE`0y`ӁH[++ļInϷ#~I^b>Pq(PRI&~RKDPΪ )eE2"ߢ~Nkfˆa;i߭4A$g'׾$MiA3#X%H#FYJ%JT}^?f*Q+ jqosٍ= ucfo NBF.V`>KN6s'h&G y|țgrBe֙5Ba~~ӧJDu#DKjMZpZ2NK:dH)vGjHdY<GRMu ҷKDvL+ci_{P]oյ'e/MOG< ';= _*ߟׂE92-(k ikQѦ$ O.]oaG aG?OH{c%W8-R'Ըſcϓ83yv^4j/H_al=OғĶ6PTa8r݀p_e#rv~6G,/!mCH4{}]mG.$ömge SAC=M%$eGc A>$}a0>zڼ>d!f9Sk\ؑ z_,z-b=@/>IfѸbfƉs""#F>Ca[Wļ`&rV.׋>r} /l΃4(slγ,y^ [Iyhsuaxx "N`R K7ɑP!RYUךʎDHW xyz?%U|?f=gb}]aٿ?jկ%Tov.? u9F[6߹sx3Y*SAowSY})7һ3!x*!e^P,-DpbͰ]L]Vu~ѐ_04{Lp^r t{BDfsÀ X]}nGqg=Gھ$Z<^Jt`)cg1/ڗLB[G0b0d+óNz#(iക'aleZEq}h>_Ӝ(D,Xȭ~H)2ŌYlV/%hu3k7+DNj%KDLd!cRj8Eڱ~ݨv9q=eM8;Z}X_3uzuJhʳ;=.;A#Gg}~x/.jH/B71^%K o}4ZZ=jYʘ^To4$N:m9{"6 Bts6sٞYUPR-=.ka63n=?O->09?sW,c ?Xfz| SAuT:ԢˮWھ1fYsx,jjxUVi蝕ILUfrYp羗m3]w hY<;]Xy+TWKd GKA4Œ;~^8+r%p鑔zh*iIoUmb\l-@rn!Ao*&ښVѪW>.p9r/ߏ o*)uf)No@%)8/rO!ig#VJ~Vqt|N WZ beA!]/*JiѮO8YmFo;q/]ϢhqTŶNtqPWjE5po3C(5TU ,ߚO?˚e@kɝHp0;'>@)ɰ XH bkZkh@gi զu 3Ex`@TpXb\LSRz}G\r^PO2arHo7>aT=W9jj^@ PL*\s- ֹVSB v־mݛwPw ss:x(4.=!V5'6$x>d9AC0I VQg%`QUt΅ߟKG*!o-D\RּmÔDo˜O/+4L~QCʧy?gMNM'M+\A~ՍwWW)E$pCPy|F8sAAQ?YXGk=\G#8|rW"K@$Z\0@hwtP[\3.Hq 3"#>bN Pү~GTu?*.є4xI)h;Fͯ}xtP'&KO+F=!q-X.2|)! 䦶z #%T2// o*A>lWvWm ~C+c}aHGfB㴘&(UΗ:=7L|\nY3ܵN3Jk2sɉ"w9 s)$z,+b^e4 m2Zw=HGoڒq$>5p:MAU6GCD>[bi/tYLEYsWeVMܟ6 Zcw26e灹ċO76JB\?Ye`@.0G}刿b5q!A^a=EJ)Rz=UFcz A4> 6d9m0y*2}Fx;6hZ8ck2}k}BuuUfLo7%U]ho^ٽD)opK"f^!ieDB;ߩ 5/mCD@Ӛw~Db7K W_a:ī/{6\>}4g7-^S~NϤޗ:2aB0}H}LaK:$l"j#gJ#BƼJޏS_ӱDhn/'Tr/">RjCu"J2͏ueo W_l)R[zqӝ%[$لwrxܝY)nZhsR>V%pEne; *0(S)I(X! ʪW241Ј}WMåWu{Xkqldyr%Zmx߹\w}ǕC3G"B;G bwu\.`n!vXRަ Qގ:&1I4zsL`ɴDޢ n눏=4bjT,#524sK$]o-QHi'w-|0tFPz? fR~_$ ՛J r> /jTGF\U-g_&;.;&ZzJqI9 #_(WmBa0 {lsJO<νn9QqNu:H8RKk{sRAI9IohxUu@Lmd(+4bn1I{{yHg,h?:3Gv~Ih5%y9lLHO`°P2t0'jtZuۛ"='q^^1rUf1Nh;2$WZsm:oN9D.g üGRo @C1H, Vsza53z #P :;M [7W|hY|//R]^8Q0(+9՚sԓ$hҒ>u]p>1V7)|I2'"V,uriZ됣|C&k3tݚ%16yܗ{/^ )@ i7z=__;$*S 4k%%d(0pXcYG ;{}t>-zgI THޣ3?_9gzz?׾pj8n Bf[U/c:89ٞrmKa9_^5"VNr2'rwx&njoU#A&6B>9&MT[ id'[. |d^\EKӟ3WkߟMJ<)v}hȑ;x:kKlЋU/甝,@Ā1C\u~y2̀qRvP|oO;b / EHnǀqSsl4]-YK0紬}^%g* W|޴~A- ^¥i(eHefLZDx+|z_oaW|ΚaS~.&NN\-7dʣ2Q_gObTw|zX&v3޿ aQ[8|IQsmTs F~쫬s* 8w\|H5ˆljK6z=$c,q -'^]owJ^DN f]gek_ "՞ab/h[(}[gYľWj) hҗ[ߵq;!o[%M8Ks4 1']4TŬKmêAoާ/.fnȖji+"2YEKplgU6uo Ŀ~.QFY q \49񕿿hB&|GUadqs߈r͊5֔<^<4S `0,֫`lE&ۅF*' SPL7y\L qln4;d=)g &vbf">&}7M%[jb[4' NDCuu>A;ץJbkV}kIU_UY0ᓜs ԗ͵ˮ 5+\b./>_5+M}+k j i{sML1o{ U C8w,MlkwUCE+,]_VR^ GvZSH{(.e 1zH]XZ@*Wy #/5g 5RZ߶!֏Zk@8†ZKpfL}ɺQ_ӭV]IES!Q<_g&Ts P ˉeA;[V_YV_6i3z1z @eu 01GAg|&/hW'?Ƴv5pָ7v*Mr^k|K"G<>c*V?-%!n-K) T<@/@ Xӿr ʢuvrB?x_ò|S'gx~/[S"7).Y~Ԭ ܙV .C==m-~#h6|, 1s[PШ Ϩ_y_a"tl(:꿺P`4<۩ل 8VnyyԗBV, 0[p(w]nWJ%f ;өT|@j,վmA3G;Kkuϕj~H͔X'mrv4oKϦL%þ3ӘbXԐ KK35Pxև 8]e_4o 4>|83㽇.ަ2: ѿro䆬ނ㾩: *.3V 7GL㳕]Wvf0HͼoÐ=TqQ4m[h J5Kmqf}^`~d%weU\NXR)4knH5be,Ф5n#x (4Q.:P( ((eDO:nha&i:{Nm4p7>Pܼ\B`evK9FD8ժ({^?GSminQGz`]'@-H`G&مJNw'G"Nrim{_9UҿڔP9U8Sd1#% vT>_hǼyO?&,͊poJ0ɷ_߮@c Z蕁!8B Y3mvEۺn$II[ӛc=hs!.zoS>J鷉W׵ItW!]GVs&1[X=]vn -S%ѫh`Xn> 1?obQ5#M(r'hvjFlDUכRo9޾u4z鋓*ALꈓ"Z}%-X4ck9V;6Z篚F竴MjoJF3ko<mFɵZ8!Ji'B,qqyJh[/:",%?1UىK({eEaI狐k˄*V4{KqsH7vqҫWvH|X&viP4KYQ7Ap")U;[uIDnJA٥X J~֝1eÉgg=)UIhi%2 ,jI6+u4MIxhfz{}$ zAX<"uImfT"AED_U.^Ǚ#u?w Jj}9 OuhL fcNLaVdI kI;1i!G$H882Hau#+qkOU5۱eB5). Ol88%)0aO D~uE9n psjLc6B#mtWL' Q3K.{*T ۫ Dֹ6 hU%_; x 3d>gx]^S1M-P*S[ }8UB4xIM_>)9V"h:~iˆm(006wL-NI+IA$0ro?m#3Զ᭝6Al| F~ 䔜D0Op<$ $rd..ָD檃4w #=,.=3ѕn|PFx!5a{Gѱ5(qpF..}|Dx꛻V 4J("--$^Iʈp<#ZX ;)m8Fp'aSp*ʴ_s0l<RՀgg !w.zE?)ӸLɓ\ˈ?6{I[|YY1>h}n׉ ugԦ Z Ā4*]{a@z̓2$qo a іt_DqJ5bfyGzJJ]ub,~i_1LX(pB~]*} ÎCF.@8)^u08궱'wlYxHY> A:'߹>d2]{QMqW=#U?MRX87FM=ՉR)#b_ 6]QqU6eg ~2y~J3@GZ/m˦U%l#"U7Gx:9$tPQo* 9"@Bbܜ wf?9<|ڦAp#B?bMshs#@ GCT) .xyXh1h7J1E83j^gSD?$Ĭ Qaqj3F*yv}Mv3;o=^uUl&M@d)֖J S[ ##B )HyV 7s rZQ<V]f%G%tiE*~j.Bx*vaڇ=C?:% < 9AT TB`BP& f[= TvU3ˇ.79BNUǕ&VcWfmp~Rĕ7Y- xQ2&{ P3h%q38~`!N^p,}I7o?},v\:^q ]Xn7PjF88FD<jq_w]koJ4qEmJ.kOcTqf_1ֹ+:мgε:_g5O'c"f+ z>ƺGB֥A^<4i8Cz冕ρ;MەΊiqRYH ~jd} Q[?3}/'c3DYLD H+. |z$ EQWfAPHL"}{u,%[i*Nna,qI8/Xrʤ: 2f,BKPK T"e׷[jb,r iƼNQ)dj*v`mC_򿿑c/ ۛ@a`"FjJs)yRbheVʼZ$yFĺe%v3gaܢ?Bgaz̻NOSGEhQ .)9$x/!A![Sl\rAzwLnGrdJFwxђ 7.@Ƶj.#3f_2A`J#w)Dv4S zn(9ugDs:FV}5Z% ^^gϲwcrb",%#_,@h4sGHX5~E!7Hu"6GE /[.ʃ<ոx'r@#);.1Q5{Kcd+_y%t%{=4Qjx 'Țln@[gB`M^8+lQ~aiKpꑻyxӸ0s~l"ZoA"wmCLQ]Ä]^ I?r%d ||zs(:+/ewNr C. Ȩم'\( f+Ћ1u N`=x/.pP,'B x,y_eo%"&(oCmUH'0$YA%YyS;cĦd.xhsc ۉҦor5Z^SHnkHUSKe^'W!(+U{qzX*dv?CzvV{GriAE[p;_w2zn8\$#]b5CQYU['%"!eLiF#3Ls٨?>cZCKf[ l%s:)KdDKZħ 2}d͆;xt]|T|#wHf>Z" y(jrTV_:}wq?Uq?)MH; uGH ?Y pBA"nB4ڶ]^€\|쵿})ga$XMjZL~Ƈ>6 u~K0 N/c/(E>V_T9{_g//D( Q`UcDxpe^o6-V.y]v !3z9K{'9;/SɷjXg0VX?2_Z6]~VJ&=BMA'BIMw`ls'dXzMJO󼇋լs~}~5J5<,V%Rto6skW"^ h餔8Y X ~ʆ/AkK6/|C&G>Zy}֚_aNͲhӇb6Tnn3-mӼj4)w{aW[6w]׬)fgtbh3H4/u/>:SwXw9u-, .uE1\dиz7ZmhEP v%3Vl1؀*qY6po"8U"7ovN`Mpy\NsJ x#p%_`,s&DwGn Uc5(f~a̰=0<<[f暖t?jtI67-uDE^wri=}Y<N^XW3ՃK^Ĝ_@CPaɠ %pUüO4m*~% @[d~q]f1Q8Nf_'8,vflwc :Nh.eevȚ--䞺H;\C|#&7ȷB gyvG8.%- Q'(L/FzUHD8'->a.ehUoh8?9ZTOvaI߱q9GU~*]=8WY/353Pǧp_/mv᳄)R z2RpGj)ht69dp<#V[/R CP- Ow #$̅& &|bC]ˈ?Wln8G/K[:h;sΔ] 0Tqz6zwH(CfH6tsPw--W- ^-]vE.%챖ح6nb?x_S<;ЃuÖz#A5;UXRŔ@GDGm''=h:zE`bW0x38mɡƘyKQߣGׅ9ĝ: 06Х^Έ0x<|jj;" -[vjc?}<]@/޳Wr(?LޓɤhU5B%_He*T1sNܸ=%C.Θ>IoC*NI W7yb{|&|z(zl wlV&BL(FjFe edtWƢL46)j5L"*s,tYM^]>%z-Ùli b=z|:_Bmi{:[mB06ZgDB~ OY|oD/>+,f H6,K|ܥ?S14s2{qGT3GƭyG{:ZNFwG{t_Ejޢ=0L(s 9Y[rӦR=u84~^Rqu c%%88w‰ć`XtJ_}ыc+ŚQLR;s"PiB k_}e<)̋ħtVf0[ _0FB/b>!#:8].p,/š(iW$+R˓ac]vuy|YfH [߄ŸTEђ>t5Lpz 5*hs:?2N+EXGW29Q?B ڄ 䰞TWN\ c['wj]9*oA]Yrp gphݶE_^̣3]y疹5S,0a1iݯD؈'2w%, FCʆdW߯aOM4ȑPG3o cI#>ݲG5Rs([&T^9MB// ;GE|w%͋a*c!"oXq R^k$O{Vwib-c~ggPG~[3>d@cnhȍ>oS9֎/ 3R鵮T'#dM";o%?б<G5^.#yo\:&YZ2Qn"5:`~KɪZODvq[6/&˚9*`HiQ8n>m񨔭d6q &y*^mv ¹ΰ3g!2dM{ _ǐ/['0M5p,Xs܌1E'`-;xQ@_Wy(>G0ih w3hr6Vim7';?ա>4LC(Qh~[_KP˫uۖ5S?oNlݾ79GDbsK9o:vVoS)9]3K8x'U^bk: -`D)R/Uͯoh e>w}虖scJ^c2)G1oH(3!}voe%{l`̷<%<>L}v06Yx59\h;7>]rJ.v&o>!w}C.|=L撰Oo|dd&tbiJ7;V3o؏so[9\,= L!]~%&:+ O& $Cp[ ,WLn~6U=9/EvYl=躩ۍ̖M3)jEw~ƈM4 {JlJ{Jʘcɖ'/ZJ__7sURߚxu^ aMeMR1ÿė4Қ>{Vss&^]7&HIiy`I5f޽x^??}9? po]$) l:),l8_,&i4F?U$FC2\KMmΡ*̅D>Jff(Q8[g.s''2z1U왾|wa*iӾz‹Όjըm`P~SyKIP~:oވҍ r` S#hBl|)בw $ӴX!Y)CqV wغ9(7£ 1,Gfid{&^ @ p#H _4qwГDWCSDy?&i*X! B$JL콇ڜ]!сrq,K@H~ٱ ^ xTXAab.C艙UJLp^[0O\,6 +OǴh!ӱGDWU26Giբ9eEJ_ҿWݤP5!xtp?B)48޷)jrU_:uVΞ%.kq H~q2V69|7Sٜl4Lbʐ-vSfZ T\|u#,mnЌ}q jۻ=ܖive>$y<"]Yd^κ|+^41z(.CHpLgfCÕC61!Gl%}R2g"{xTt;ƴ4D>6/iÂta O UЉT,B_k7tGWC/`k@^lՙ蛲ߩ,\^p3t,(v>@luIczx[cxNV_Z剀XB! L!ub]c;=..o?(da{{kA|7+$ܲT+Z!/Gn+ _WDxt*I&Ԯr1懳ږB^I]`\?iyI]> qƄg/&Uo]1O*™zQ4q](V}.'h_a 5P~?]ł5 Kَ;2$&HJYk;Q;flg }׿+e͗4 dߌLP W;Van-\ A9H|]*o9XJ;̰`h(sslKŘȠ[GxTxD=l7R݊Z_RU$B-z1 75 z[$}D 0Q=}"8PD>,*üK}a˨jCXcTU'#>c#n?thy:L]aP=Zw!ћ -J1~ۺ\ЇϪIA:q斀 0/D%f"pu{ݥx{8@P5i)S9uuIU{22˗VײF/b=n7&HE;6t")T;4!!,4-tV4E;23U1"㥺c ^!Dq <y|NX9urZEݲǖX{*:U>bh:sd{ Tٴ0R_OB>ToAnJzf2-*hېO԰QX`u1Q&lIݖw??Ex9?|9~ 1rɊd^Sao]h2Ut|^L| 8ՕFzX,}UZ!^fYNHOqk7.tz?!|MUülk1nQ4t|:i|Nca5:(γ G]ixkwԓ\Gzw c2 VhKڳeVe@9~وv*82  ߰" lgQٵfY] ޛ8Tfԛʐ}q^4#x ayyn[.o -%N??(d'b=҉)$qʵj* Ӻ&[Z"Sxmun1R`5^ϨgqM\Yvx7檆~I0XoP~T|Yݕ.# K1Zg ߸yt+.A 4T㳅̳̠ f#Q{}xUm|L$aR ncOb~J@- >F e󷵓'o5z;LQ\K~FS[oYL:2mk1:f8g_!-2#d"}Z z?0;7Js[Ӻl y6L,4\}&{SuJ4:#[w̜wAE8CVw I=RYQsզJڼ5۩*dG ~79澐T(vۆ{:*PO=-9:p;to8)}x< / yM'JZ4i)#ѬS 'q;lH@H]ҵ5gc2ֶ6;(1qV=ცt*szrҼy huEDI[nUw{MUGp s˧ŘpN|6-|F=IÏ$hZ֙T.Y+Ǣՠ{jI~~JW@uA6ۂMZ !r%Xҡ% 3r5-@Taw}o @Ϊ~]z7@t;DbǑfa䫎(Zw*EJ<,~8k a5`]m}!]"Hȼz {PYC1)ҽʀ \ҁ˻m-dtl_ʂEm_ڹp!aHhMoWT;\-`> 4zHImTGLs"$9o 9t&@m@uJcGX}w_Ga <"xG1.-oӾ\ zb+x[ 2%\Jo</*R!`Oa W6ۂABJ;}]= ??MYnvwV} %wYide0H!kˎKYQSCU*[8,3\ɋ>X}c IF6);ksNҩm"Nibt گʶ`^X[A5e;7͎`7t* 3XI3K][N,U: ~͎~o]xJ)AJdz/f  L^z ` Xzu7#i.<.^ʫŠ'(nN}.Z+ qSk׳a)߫1WSqڛUiZJ|8wEt* U D(;BިHO]iGmkmUacټXЖSxQvÒ-;ݔ" yjϲ^QQȈGշhHSypE'xW)/?/oxy] f6;局ċ]"2AUn;Q{/#AjEs7{ Kǚ/; {<Ɏl5L:8 C%n{-M^Vɛz:;|Uc _wO1Xߖ/t}[VFL (ǢT>%ԷqmU*+BIs-Kd<֏M+|^|~#Cm]oRmYNemk3ƈUeůU=q z$z5O,WS/quI'1'JPRAohm.90LBӂĞUC吝y} ج&T1S}O=RM)GQW]0=&<م@ zAZ<ܜ$6?? آ==5+}/G13 hYa\sƨ^_EQY&d[7ɵtYhθD@ NÛF9dkerwQmX{@dWTT8:l'MeBH.6b}sI(n|e5yz Q*H*"-כ>1/Iu02kU?T~z&EVdm'A=Rwͬĺu4#|`T/c˰/d_yAVYۋCFEj"*Q)>7\<2/[-|orʎ ( K{>,5 ^2ړϝqfOS($2(wg qe?~_rEOF[N~6}XC @IdZZɓC_aY"F)ny_uCw9IƜ"euA >a0+Ϯ12R%CV:Kܿ2uFR5(N zO Ԋuc \aҗ.TM#KQ_q%0]df}Ӆ+N`ڎgI$8,}Q e8Q^aݝDLW,#tDl 2d0)}57)j2\|R1CFl_aHDWI]aQm:?ٯƲw߹_$'85&[GϮB`xy$L ~?u!/.~~iT\)VѮb~o&ATSb?&m6}Pg,ۦR;r鿛G7Jk݉oQz,b N`!)zvNYzz ͌/ӼhlL{ <'(<}_' և3^lf zzCjU=/?ɝ1nUxNX~8t9nt1ZoET^14#w=TV|vLfvOڤ_a9v’Of" .]_~iw )P`-40MMt#Kԡe:P!-zbi[וICuf6Xug;)2c\ebIw`}kU "](öbWhD A(j |*m*k簂bȃl\kݜc&~>WOѽՐJ} ǐ׉cw)b9|j K&iP 5Qsڷz{b-luh#S8t*a:2 RezkA'X,9s})E*4 %5\ۉ7c?Oxf4C:G*Hz59 ^ -x`i#'7؛9|mӦ?be< |JUhs0}9P{i81 4jg'{J< q ' :v[e ܀#+d+'lȜpY^%R)ZF:} mUL+7be) G^x.[\\OUdoFG Z|д@[vi0-bP״ْKO2cÂE(&DkiZ߄o}YB{2^zrsQ /%'u0|fiT6dUԴF) <_>}"HœD>앣kb{ NnfCMCN@(7$m$FI(io$F 1n݂(g˻*oSE>︮J*l؅]+`%NQN&6hGHLLѪ"'xj X%X.׊s) -fzc$FCsKx+mx>c1a -PZOVIiX[أl4@~F ]s|"Z¯Vڒ=-@},D)"b}=/k|`ma"$c|fL bNq:e";.O|!%[F'8utDb3v1:X/VU^P{4׬)KXRiVvz*V!<> ȉp֧N SyX1WS `S?r U%R8L%dmڮUkL~p7 #\՝۹1Hb1ه{_pbkz /aXaU֪VAK B\WҒ1XH7o#FG,Iijn,v0urY.[HKsGo88 +w:k[m+DCyjY)=͙JcjrL΢XUi $,鲁BVd>_?oxε*i H3_ލ$u/sըP̍Vȗx1R1ɎqNx41LmeCTZo- MKT )4(4kCHs $E.jǺVcq??oPIM8|tVⷄpjc2 jrOX)[U)[*d|Zv|+Ǧg7R9Jt89orNU QJ I=B'2|9+Vb'0 Q^!| orj^j0/n؟{ʁk&P\?%GY 9rTh X Fq,8f!d& 9m) {Š6Tȫy_&qwsϴ~dvq׼tHM*GWNPj@Hn鳹8 I XI;JKK^* ?q+^Sь_tk>MDwQȜc_/g/ } P{:p HƘ=eU]2M`[]("u.y&8To%3f*0[vAJ%R ȷsVŒBVCWz5Mג~c0ۦ8Gþ V7ۜo-(WfJFWu\^o]~WhϫYUϰDYn=#vnHYmљV;t`g4*v)nQ7FIa *N*W`΅ IGM_4LJhss`MʠfcXPI11h-t=eMX~~+@V~!Hܞ,62;s8~J[J" 78Ң'!ΛJR[Q_X%2u"fHiTn:jY]WZ= b6n /WQHc$_A[};xP^fKVԅYd Ї+,")82cM%[T`:CǑuO ʏZ(o ܻkQk7%Y^'4"o`I#x]3pbpW;>bQ6nc(x֛c$_D3mE.鋨uI^G3}m jYUhO:. 3}2%չw̸Rw)z45q^yW??n iUyRN-QШIϑv32{@8RxRmo 8LI"A7&\pԽv2ER߯m9nы:Ш o'u%S1|2|~3@],4D$}D\fŸm\o`J7 ػz&i}6@U7P2xo^g "G$ =gLEt/m&~aHH I-WR_μQ|[ۓuݜH~J}`nJuܣ ^< 9":egO"r.527N5z >Nm@o8b&ac3&|%bIh-էin@SbʒI+^BNbSX tG[HF鶎?<=H,-l@/m@D2xN[WV9Q4}~(sf^bf?ߋ޿շkiK~aت|AXI׀/fO]"q EΞf\̀Ն4]{4T^m/I,5Mͩhw:mDUeF~vTvi >r!{)Z:++bVDRqjUrBa pmb7Lm UNxNz5vjo}8V5\=pGtn!#/AUmJSh8nŸҗ'^)pD3,BR.]Pt& M-=4W-wM%5LTe%@?t# f`%D/ %xJZ?eoM~oXs-A%W%F4dfR9S" jmD^ l+?}?>M%M^`x˰_+BJYݮq4E--aRe-5vF AvO2zdף"?g׹P:U$V1H7 s+ +Y00D6XyTkz7I[+L]r .TE, Ħ]p}wzK@ۛ~MzW`͜fd30Ȑ`\X>e79 > 9j^kab";S(J-i~cԚӋMs &[U܊9d[ Mj-F$l G4zfqM܋sA@v:R,rݽyja<<1J\w7]oܛ4!7|^A>|>qMPࣚVc7>A{bX9RTdˎ@-k+O` l|I,t#kKʍTe=<-ajsO&ed!UFusV%= cApm_z;CPDo7 W"܉D&A}oM9j&?P+(A1kgDI諣_B?`˙?OGBOKtO9E\<'y a)>WdY]z=Fb^U.u}w!lHiѓ$b,)'ukN>η[Uּ9N5 kK2}լp6=\KVܙ%HWt៟v{?GMsʜ#6k~uHX\kE':`]oX/9>ў8Y6]6?"z 0@ۤvޒ)M@[JY[jS~`/._{yXk8-R)%J-jL7*fv;]ܞ9"rCs.lEDJ[ӵ>߫ay۔os4NHّ@\MFd֥:`BԹ2 +RcKy--i 6}[m`IϲbKʨ:XRyYrJ/)HptG.~8F?IԋF>S:Y_$f{l _7oN@O'%,Vs׬"S~2iQ h8k0繠mpe_FrԽ9`Y|>.o L5[D7$ms'MX%`NSTNBtC $0‰lVW#^gWR`B).&QOJ[ k0A' 9O:%}` Dء]htKR<\.}7uSn@zD+n!v.l&1%gdֶ}3\@EXKp% X>n)o bσ&š# jDC%K9+ĞH>eƩbK#%j,˼y??rUd kixm r Pny-/iqe ~ qGADŽr|nFpE5= :֤Z:5ȻDt<8^ZnhE@KDǩH8}6D8;1QD~fܶR/x7/oMVDz)o[,pƶm¶J.P]ݷ8UOgh@qIt`+L(êT^,Ԃ[{.}]\'h#%~@ѢArVnr}ȋ:Уxk3V+ك-TbxnŒ%v[  9؁6Ǧ֗8NBPa~Q%igƼ=~RsD"_8G\~_%,7=,CfSѷ]e gMȖմi׃!hbbu!zb'1Lݱ5o~q=l-EpeR]/NAC4&0f }EUvl1oOtp'o vO&>iSV0dSR1zga@O^xu7 iXjHB̂d> Gx$m$˼w4肩+XUp^t$% ȐʘC77.8mEFCc{EVꚰ W_FZ`Dmk_GLc_r*/Il #\L9MC\ۊ/xᎰ0ƨQ?/M>rIMS| /}fU n`΢2ڄCrq5f$>>$y5CaJ;?Ɵ@׳aythq\z4Fdb;LR^lBǼ/5tP^[IkayAjW]-UNŊaYOLp|zX??_F-',ŷ3ꌪ͊3x ;!vtdR܆7 PQ ' tT8E8RŅa4dDӗY'gDu':c=X,br2~9ri*fNs7Tz@sǾZ^j 3su᧟LfY Kjnm~u nsz49b\3|"4sʘޞB^ QESu I]d߉'Ws1 c  M#wjPpY17W99_m{Ve]_:]x3ȚS}oGMqkcan[҂p҃G^|`!߾ls (54ɪ{<fAHFMxMLĹoWf_)f=QmUԣ?N xsxg'^2$@VuWJRxὢ]}fo JޤajCZߛq0| RSr;^ X3Q6-o+^ ,GRhX 6DW_4%9BbvOK#$ cwnP*p |}:y=.c^6QFK.(,o+{aHeSkDR !nLWS_jC<\ϸ `X(L ]'Q;Z+mF'\мJWRTjއ)ɤڊv@X}ji([,Dya8 ts˰ Ct~Ew_9T|Z[$”r 2f[JǼs0mxr<#q.H[lMsf Nr/bA Lc2y^o*"&5!ʹ]ڦ at`ZWpv?r !T*t椁D2F,4r|=5n7Y)J.uybs*&Zta hjr[EMF 1h 0@I!)rqQQ]Lkx>B"` o)  g J~M#ܒ#HkĈa=e;epY}_.$Pf rȂ/7EqO)Bn=!-#d띕q'1]K6y${5??AƑݦoQW[p|ư ]R]*_w)dU y^ nK|3;MIn?V>/*o`}D2HxQ|zaj⩟<q7'|j5ñ~qEu܌,1oPǩg;[Fgzhi00JU$0zL@ɤ2<#|+D],ګxed| 넝" CTVʝ1&i6Y%BT\Mjy=%,؅hu^]+)jE,N4f '<+jWx7 - gϫ7oI~,yD'J, uB'"Q\@9^t>>xTK]V[7/Dž4W V*Tv"`$J7؄GFU1jM#ӲeVM2 ,C*vT x$vG.Q'L zd]Ǖ5p\'99[6TU5o#@64őOۧ BA98k37G'IPqEK~pq*mT qLl@CO&ޜ_է! a!|@Em+M.*^$SЛzvRp$HlDEz\+|HcCH}TO ]~.@'֍U˅Đ=.#|}y1)6϶:DY.ׇ9`]h!~SكYհ4E(8+Yuw2܁ *m Ed؍Vt[/P՜{bژ,w0{Kj@O*i%x01rS[uy5$:CI;N (,f@_ |A>w!y5eჱ֓|i I X )<=*x̼rp Kgj2*$g;m9;  <-\m 4KW !p7bPZjfҴ\DC L>9q6AfYhV:u .Due0ĝz~CdZWf}CHk"nn.\;+qt3jAA!ܖx,Ʀw^B`w7%OR^sP>>&݇5ԦxQu4iV.E3Bn`*wd PJC4G 3!R4ʔ3s_Z͓M``ia8 dCTetoRު<8;:]_BT{=M4,VErQ=/|5CZ\ES蜱5#$P4Rbim[RgEo;3#~Eb==#>/xg,y@Z_4M5&D 1&XZY vS7:5ނ4x9޺J((QQGﰧ.R8 znsO~Զ}wf'uLtd$"KUW/)(G9 uWpŸ &+ĂS7s('?v .JVt]޽'b=[) MЀNec)yD<# X>4Ƣ"ɘYַFnat_E?rl'-զ .v!OYEj"Ib[\š!J0^! nir~O8sTȧW#m5Gi UiX. )ǦmJCsMoo'mg9Ju=) /]ruJ}kgY<8~.F owvAH(N$,0W=.55鸨#/ gJ¬ܶb=GUm^S(rC~߃(7v)'o4fKacPp|D\_($m"ībl7gCӅH,=2$@9 Jpń{lFx x P&n ՗3Cr;}/+[惬'G dx:!n| #'I1'3] 3Tϣ?<KV 耐^y~~λ]P Ā?k1s}Ґ]QU0wJ}Cc g7PadmTﱠ&K"K#}uCxI}X9ʯ JvIR]7W%ަm er=>ˍB "}G)e&@M%&2RA >\7_A2d ;ki*7:ři}i ~~B5 SEd|gsr4& Q7MKVػAֿHO |D+Ns%e X?fk"*vL +7W M?+ȈOuЋ%J<~z`ߑ8Pfd{f"NJ'.q!E1f䷿^T`%&kM\l1J&|ze["> 02OHD~9^|[3/[U/ U"og_C0Q m}T:bJԚK]0zu d\DB#<ɆY~ƪbY-<oo9K~;CE~ҨJ|&x `&g΁[ R\KyL~ҖQN& 2σ8W|:oJw]STh@%Ioi,{T¾R[bwEd2ZjEJWhVLv:mq, ע) u~g`A>m0y>r]k;l"hQ zY#gTaKt$eûz0Kvm.B_mI\^lr z65]A8$TaRaFYTZz֐(+z橑t6Zq\-sɗ|l& d$ш|;uO6|%2}aߦ?ܻI?]hlFJ 2S4!q HΟu"i7 }`Rq MR\/2Xj"u@UO4EHҕ_( "|rK|oQwt)Pԧ+޿dP73">>𵗬:livw~lf[6JAỿİTN/ .~'+> ðWs/}cGUhBKvV jðMWme.I~i?D*-^M~ ;o dXNQ˟9tު𖪹r>Z;1!qF-Q`1p깭K>Q|LR4F\M79sۄxRt>#@bpo`g Dо j8w2>R_}Hylׅ"Nu2!hVDAzD9o͞elYWjOn䞢A(U)Y8<>5r+&]S#kE^ " *C4ڵr:Y$o|&Z hg8{?1!nQPfˬ(VbGHg{t4rv%_WΟ;yepjP /XJv#HC/MsM1XLTJNhy"R}? YXJbls4pJ>,ьo8{Sm~AY>*uI`duQU10cqO'.o 3:Ωdu{-K %_„M0˼oH_m]S6Q dEj ٰXWho]ލX~@nU&M݊)u"כl}袊Q9=%Nλ Mp6rgw3`TLXGs&/Zוז|Bjk_`P1-<$IFu[Wǀ[/KL/%y.6,+*zn ӽz{b/XEM'! NB.B + dG^9AgzUWBYj~a0ߙT |컠sH0xi؉cbS([sEKW$EOGarh9gGͨ}8N^*2!Oq%.ߞ/N˖ '{z-S9l$4-+D4ySge^i>.zbOs.YW^ox@OYs2[[xv=!6\eOD& !&o8L hRY^; ߸'KxP;- J>/ %Kg66}VhRY{zarQˉ<>^t< ix{ffIArXy&< .3hQpfqkN^`xCP5Yo':1ryy̐ѷiQꓛFЊ;FFϹZp]:!$ޮۆ3 GuGFa oggџ\JW7"p`i c7կ1>*f+Rc?TLEu.ܧȭ]Lrzkg4mGeFUiZW^6lM׌osjzޔvqx*OXS{?m}ϯDշ!(x@7k=/dE:-M'2G= TĈf jOIq6^u>_oٱ5ݶ0U2!U%tBW!bԇaoO&ySa*|gu{#HFe+4Aۊ0Z?ZSnZ%ff7<0ʞ"nlgZ㴫W5^Ā !a"\JHF ]+lMĂ^Lٟ(ӟBœ0%dWxHvʤN|Z۟:Zܫ8"iofEcm(=GI4rf _=' m綾Xo)U-ݾyzc?SR6ek:Nǫ3#Iگo3Ȧ9j緋Y{/ sS*\< t]{G?d\%Aըٺ{8"p}YsX1~qτ8F(;ۏq?au<%o./$cR^'@(ߚL6~U2Z fba є'kSET}%ϴd<ɶk, ko# ZDXv*wAI0mTh}B@fr/5[(<f3{gž8(BDf7%'=gy#yHٺtm֏)|Be.v]|a(VBKI[şqUbO)!eLG" |It^|L _0t$3FlO8߾ٽr]88tqpL~KKYNӷ=j=o~d`\;lH4dQgpH#zi{T0ftC49A(*n^OyW7+{Ng(| `\CQy1~W"Hcq ڮC&0l_Z7#G,=C(4\B>ϴzڙ>=ѳEUSM^cT9ZSyT.|zV 0rΓ}{E}̿+ viE~{ӱ>4pC@!+Y|U3N#%$֥C4rom O*G+]vt,FZ4 ttK\eJp׮=)lW''Z4OR/zs,]-:Wv'YH/ϗ[id?y]9(Э5^a^aD^~2ɤ9.<74Ṁ]=>VԹ- 1Ų:'n1V.Mw\Hk,ecHs_[E]$xj8{eQ:yU-@ O•dԻ_Y}>{0)@c_@-6%7.r9DgN4M?Zcg=vdrad?a{I:>DPu_(ߤϣPsƔ^%DJ̟9e0K\ezSGP} ;`{$Ña +>o2 9IOY~㛾4dB)qL6*²'T!1'~˼#@:goIk+ԙAmɠm1p\֮`xerZ30|b/>U.io@Q(K>w-jw')4T#:{;J02o̭NK@`6*?B 3f/Z132 mF|@p+R'?9yy'B-|S3i=ϰ 1- ;XNM^۾xǵ1|ҡ>Y Nff5);Rv:}3h>p04Lvۡ9] Mtx/` |\df$ɖi:_oRwe6B .( @u)X"Oх_Оb?? RCp9df"/} }< )pƥ~yK ؄q@[Pk>j& mE@wW@:=^lc;F_N+k0~:~\<ˡKudl4r* Y 5`򂔼``]Dxh[7:]*aB%i (o}=Hoihsؗ)PoSFgr)F C$gxkL GBB:5O̴+5:ulP'/cv3;9cu3?K3/ǍY! 4ӿnFO2q@ft.6R@ < ,AJO{Td "FǠ^tmSSSbΦ谘㝗WB-N?. =?Oܸu[۟E9C~E/k^OO?׊b-ZkMr9cx=UNo"vc _! `FV\4.R\\ %R!^I_cr [gЛKo.޻f!Hx A~_d?`0h9h4ѨEfF8'22b{]A<,RòkYM^?*Th[J=MC^W}6z;mMfT 8׻]l֞ż}Ւ{-iCjSnnEF_6) HZn>o0>WC-n z&;ܟ%u &y葒$pt Vs9_q6uI8 2cF}JNY1T쎛Occa2=8e8բ],жAv <,~<H eyfxb&:Ma xyM]־5"x*FM% 'nyaS*f[4'Mqa\OD,7ILJ*! S-I78,_)!آ'{IV>V>T77Pzx}S7?bqW{=@|tKC[KdvQc"L0 GBA /+isq.g$ nx-]{by,x$d?gDR⡮#-17tZ]~#Z |`wsCd4 B\ y e& !!q;iB * IC=+Ti4^qHoW|-J?qp_5 ҁ˪ٱ|#>ʷ.[Ozo{ U0; ,h ;"4{]yT8]N?6y3@߰̚ Z nRk{wvz_v IȜ\~)s7?>{zLv^~ Of8s` 9PٻW{բ'7S%I[DD6;4kv2p a2aeWi?BggHɅѰ_&_$GK]Yfkv|OZ_A_K<|Ysh'x?%d`-gfVʦ/bƠn[Rf {TD9vC-Xb 7(E[ ׉0ypGG4bRW^6a\U=M."^̷vyo~01ˇZ'JR)-`JHW)}bHQSspһ~3X3R#]B~?D8=xon_(J*x2۱& @no2QyfY'K͜N8#KCǹïT[-~ƪCz ~h0q{d+@qJNgt`)R֒a{Ȍ7 U?F~Pc=/&BҟN^(z6Xґ=;A~`yOyGn2 bfŇIRNH~"Y .d yn2C:~(ߍ'5yT1VqG[Bп [!],;|2_(DmLR=?7܈Po+*}99%٭dNڡXWFEey;$WxTٛTop?]`|Ե>3JքC#ZnsO?ru xk wnM_4tW0ne!=rN5} \/o#P&,":g;? ,)1<Ҭ(MJПwR&VAZg^9|tGqT xL00gc{M}h"3$\U'&VW.eBӶbCZ9^DoD>(^X K֋09{ ]G"ڥprU\ޔɫ=MDS vhE6& QXi! P1]+%UDqE"=~ȩOy"aC;oWɲWm <(H]LfZX)v=$wPcd8OH|NKH=-fN.2/fbQPzn/lr/%J`n/?|i((:g8(gt-DҘ;7 +Kl݆4huuBte?5UuOvП |b`d{Jf ^tp"'KcԿma ͔ѐ$*eRd>Y3u^sCr z{UO_}$ ~λ=7Mc(<ӱ6? [: ʍhvK2lT~5Y#b[PNfyG.ߏɳiU~))&]W(bYÈaHPoJ̟S")(D@LNb4V]!8 j;EUpN}tpy+IX'].oP^sr u~9pD[ TF : |Jf>̚sk*gTJ`=mDP,*J)tZ|KQ9./z5"ƇH)Q ^ F} I%l*1JshТe#v ;p&#k2w$ؚA> GzH/xi} txa[qBR($bLUTbO=eT 'rH?pV8. =5 \2@rCsV̻q$yPM2?*,09] }YC"ɷS|VX=(9CƧ~"$ b6{{= p=^"Et˪NՍh}5S_EZ)NyR~bUU.(0EGWZzY6ӿ!5tcً@u_: }f 8/WZbp |+v2Ԣ!X'}~l1G//fu\*5Ӂ0WJy)Bѽs?ܸ ?\lUhׄa}{'m d^Y>֪MvPagVQ @Ƈ y3ӝ2 S7tyNL`t`n^`_7zhnㅠTc"ނ{.cDQ-X %GfgB/kn /u2I"ϕ-0 ~˫/2/ƀ{=`H!B N 54ɰ4LL ̎nZ)΂؃Cr_`'2=*R==H,5|}7-:ǝn*N9>OtJNi'{9Au1|x`}M#*R'(7|ޗ@ HK@:Nߩ%}gPBmBF67*&=0QT?<"بޘr=]kRXfoŠuҶ']Ȁpkw} 1;Cb#%q 4"xttZ#ݚ*? pw@wpܙmjHRG0<6V6I 4w~"-B M~`uE"]͊iNn;*$[u@|c 4AWFd^%Yđ L!J,!@>˫%|9z$7ƈjj[-!#s: 76 TR|uޏMl]}=sB=[5NoyLײ;6Fo2YBFтe&FRVjFybRWXW1ʔݘP꾏|/ pw . A2HdjK3e^. D["7xz() 3V8A%u/_6()/&U{qBՒFe= n7An%hq*hzF\c0 j@ ded'Peu8ҵaٚ눨Q ޠJDV ]N^)1X*~V*Qr[+_^! $m|QECWBRʦ ~bJɥ w ῪLv4AROGL_VyޚkMgm~wYop̳g }\1vlGέ FsP/|nz4f ^|R-<Ա0IoRC4wGNfP-wT>̍wUe F3)aKa'Wa-攐d1꧅BȥlЌa냳~tS=C{ywoQhxW F2TWdf1ggȱ#wh4_ހPD_ƨZ[B i /?}>DzZX _G9[щ&pBiYF;mooF2<ד,xkVysx" 7Mte%1 }9%8YA*5忠[ɩP4:EB UeldsBNmqm&׳i;82zگJ8곈KaPVcNrA!f.1NxBP]m̞庹3屿r H'boyTqE~ RoO: 0~bKz6E %|4P,C Lomҁ8`FiWjnv_B (<'L)3ҟ.LDT5=~0 Pa[2|'Uʼn;[n N/z}7{Q٨g5m4>*7Yg="P4>s߻[{+7""mp@.nFn7>s̍>ȣmBŕln&v6h@X Lkp;q/i"a5-1` ܨؼXQBmLnJOz[Gpħcwde(˻[0Q;B2x/lS͘V(ZJg:lqIa/ ko'`(.LP)i$G"jmQGN՜9=cRZd0cYmFyտIF6؏k; I_oxD(8o^ żv(,5%' S6^. 1/+x#T,ZJ r*[~ҲH]gJB?8gyhӲ5lۯc/7<7⛉&[Y wf+J}4'~R֣Wo2>_WZe #(Qa#K] )' 6gx~> eRL;c93i|ĻbO?^Ψq.(,o`R% @t|>Dnvc (0K/K 6".'sV#f(2L% |7D7KreFt52D/ qTKA R;)\ͺV$|WKH&gp>{{ pHI}@1򁇁'dZ0m?{Q_R)d=(8mJ@sNu0[u~qi]`l$4?) c\9tĶ0SNsֵo{(Ny6yG飪,?.e>IL^ECE$ ĘUe $k+N1L78f&nz "|\mH B/M ZyOSs3=ox}k\eH-PNí4@2\y>@Rk3ΛܠuWCء쪜%4YC)8nKn͗{?lK0n`#É}JQPj[o w' -}|F$6 @6uoyv>eofؼ^ 7:~U}vu \liEz7lHxr,ܣ7w>d bڣ: JtN/Cɺ&hRci* )]_lFJ2Fm65C2Nf̯ nC\K]ʻ !a*H'(^>jk5ho 9sڔͶ|pxng5pJĠ ֎ p8MMGH4!wD%R'ЏWBze4αr @ev>+%7.D91h!D^"x)&ڟۦB+-p27քx'{#㝱e a=njmr~r;J< {v4;نņY5Łt')rJJC9І '6q2&!םw69HRPA܌޻-]1Ul (tn"ö\WOܞηveƏK[/~'fs}8OcF:%Ϳ oؠS{vp%m\䤧*};k_P1c^bNSU\ݷ<=q@JvdRz}w^K_CS7%#lK:D3@|cjb72zq%"`%d?+#]YR+/zdQJíI1Œe.ypfpJ[Te{ x$Q"^l1G["LcLRQi㘽'fa?AM~Ie3#G!O!d!!D(T*&wçi țReσP48T'WY%=oo^ .#~\ eY13,8koyP]YfԤO +x<5w j{(;qPՑB*IUUo2%f)~Ꮞ }Y _&4ޖuI iFr+UԹ6`1(@qvޛoK}:]j:3vEېƠXNG:nc%=Ce,aB)"3S/nSL[f/J ~*2W5rrA:}իMRzW:M~d>D{[<;8˔Kdz,Nʖzwy438K?WI%ėfs`-uᬒ|Q^+`޸vuvF%ށo#_&|9{Ɇ?5ZɤMeGA+$><ڠa >?[2"&7pԤ\#&6;Nj71<ѭ"0%S):*ĨZ kHȡt=Ww9W*b_/MZ^P4֦s:0Ֆ #Op2Ov&#i7|T:Q Ex1qS9} +Y1~۷{Jamߛ=a?^2q#oi.+%j?NB]rLFnS.WZ{rgkfGdd, OX{i~V0v=J\+J\gEtyg]yShs@R>~n2#+q@G#>;g |9 8Ӱ;%fgasUU}MKF.!pM\kibg@2#^|ڨ^U+BS~s|viu}ϗƅI=<͏EX5 37EF-V9v;[g\ylSjKړm@t 6}+n'7V1uFv`Vj8#7-/c"D_ib7j) ecQ>=d~}t 8!QlDR<`h}(1=8,n3QIqN MːFZSz\y%8n_l5T.|( 0E`HŮ}Q˴^54[5o'L4 ُqT ̤K\$bF^Vsv<H+`' !6]S&ѕP 2pugIL lV/3)jqۗEM2brپvͻQ~x^w͠*dpǛ>BLs9OuAY,~_{@RpԩԄ1*ݓ  On4Y7GQdSmp0@c[a?Ul-ds.7C#M p6~7ͮIlWk;"ބE. o =۶7>N@`r0 /Y$wY{Fsz{+I[K"Qe T֏jcPlМ7}(~jt,|?ڵ){j e}bغ5_wHb,C adaxnw0| _q+FTSOhr%K3[%(}7 `jGzԱy#O[R`B Am@8!C.4hbEƐn?$7^jvb72M6/zq-rB/._-qו =@uU7Ρ&9~0H 8Fа;=ܓ@191A=d  _Om()SF 7wty$b=޺}Bȏ+J:NVF=Wԣ `ȇ>=dڪGrs!`o&7q\.K}/ r~X;HaUwuƅk]en~o<K`ɯ86E+)'ڳz/^7l mx O, ;AXB fA8$Q}oUyVZbR9LCaN56Mg.5 zSA/v2{t9ejpɽ(rajmрzxBYA3d+8s;',rN*hYx ROe yvX^ 681_!nigwQ 啰psaX$?sqc\g7.t $Sě DJ΍M5nرcUC`,꓀̣#H|qJ; ~xAe9i!9qC|!?*$l|Os:I{^90lhij++%B7i'zC⫌ŴU$L~o2/Ôg^@9Vn0wb]^.<ݸ/촦)X@_grW]LW[*Ują)bvΤ2@<4o _:m$o7 3 '8=_aW^5>ԁ=ŷj*5ia[Pxos0Pܖ"ՌDw:2ʸ8'wȍ5x ST !/ \zѩŌ=Ivcc3h> g"VI6(Ut/X]nWt*?o?[h+*ͧe|w/gǂ6'YD59I dW)|/ZjFAߓ;amZ8  0(l{svk߰*ڟuGkpT֖C?%?:{5g1 j?Om#qePed"T'y91Id]5e$\ô B󘧒iSyKQށv)j!}';=YD8_ ]1Eċk?svsjt~zwӢ}  }*;0e2hCDž ?Z_֮OYA9бAXxAz&0wARߟ0I,#=kL!}⣄q, 82s1Y < jڼ lXL%Kޚ4JX5 |z3bnKtwӤ+ d1v!(xbcWCDeo\Xw|],qCJ;)ux4 "xOvfe/݅hqkKׇj:Hپ`rhuV6_ݯA7sŪv_ `Ԭ%2h߫4Ъ\Z~Gyd[d=߶ sM2b=Ԉ#]W剩 mݶ**yDp` n\w{j{nU#Q ֞!zi ]g vTͬ!v/\p?;@h n=Id l6k pzu/|e{ XgO@jib8_U}0Tv<1)?-q\7W.!S|;mKPr,:І )NltiSQ.gO{e"@ @d\@*n˯U$˙Mԛ(/ !QDaaiR3 m:Jٕ "4y~UX9o(q9Y8۩tsK!q5TW̸+co!ŷ'\sΊTxE #R[ 1NX[IΫm?hЀp=cV9QGڷz,񿲬%j1hb|@45agUf1:Z@^ E[55d i$P.Sy8#=~{$qK閾[Hr8|pq<ɜLYs4j1dfo>RcHLԃVNm.M1蘂r`.5bph`eTZZ`h:"6Ǎ(13ʢ$fmKkV#Ķ`zɢ$ZGCGNSR eГ;0I<1l[K鵎u07x{t*3K؛OjP$eFs~yG$"o:[`dOs;LZ9ǿd)JI |Ūm#iW1QZ_aPnJ ^ojϫ*@/"ἈnPL~LhavZJX]!  1`˕j]y~iN$*'^N byyM@"\~{_1* +L%ӷ)0ahOMeuzÑLI;vǤ (êp'}Ip 7ź7( 3o>_ex`-m`"Ug\uW[f=<]k!_95A)\nχ⿳k \2!Gп?gOϳFFUO) +EedLɡ魱a}N"o:*[\a Q=PkEv`鄚@שR !͋V|oNS(o&W2}ȳ+fH󋵬?C\ !FÊ$z|i*v-btQ^׉ły*ڢ-pf7ӔxivRݙ)/0I1Q‚@j5Q^ .a0t~=9 @tlj*tM*+o{ĪQk^XUW~Yzq kP<[i2" 6|q#{YpJh6cTg1u_Y,U0WPy8)~} @}˄ru{/bk-;e#D9;?`q?uM`yWxt(&&'loazz4O}}Ҝ8owD8&Odnu 7nNg^D`Һ2qϝWh9iX#_b,1wVTWhXkYGLJ>)Ƕxy<ϣ_ ǩ|@ƾ,Vj?~7TuPT+>uqgf kG1>?Ͻ~q|ֱNė8~̶QJFfO- x&6,#M= -,UA3S`?}!ۅg]7wFLA(ExG&~ W7{Ïl [|Tb M͘Yxɷr-f$ (h0v̟ p&\1VҼ 73%?%wVQH*s"!˷UPۃ- 9R - <$%6< yYqb'K =Y/jVx~\t<. 7RC<G\^qzbLV;qTH㿻LNh L:3I\t"˾Ȥi&+XI`g|||cԃnB. >Z~t ekQ5.%SLֱ5b ˂gM"I{#PaгVAx_\qPG-]DC7(}[>[6qn9ms,c؋ɻR5͵llO} _8m 5 q-\H3'oA1σ5]{aT&S XGG P3Ŀ"HgV1Wͣ. 6/I\Hj捌 j> M_[kU>Зkx  u k"~Q r"t CH]t4;9=شz3oi*43»!c5ۚ$cR*S)kRfvoȼ^!4Aag E0@  I9ϼӵG{Tjh#nIVBxO=؟', 3MPF7h}im@ILC KM3DHCD5gAc;ndڠZ}bX*S!4dʾ35%&;} Jn䐁&a+Աܻb>܌rńiz0-y2AA%NipO[tyν(EK\@0kEWDbw2_( ߢ˲#wpQ\` ziw*BEXa=7x#ۨ`f|ͺڃ0 `Ĵ$r4 \*vԆg~n 8Ӱںu]ҡ@rHo56gNfH2.A \HB^vj."Hm@^sRؙ阜<YNO^[|~۱|T`Ҝh}p Ѵ$5ٛT\u=e@RaL ~GGsns{5Hxg }"a_T6ACi, D9& 0HqcC2y!}8dLv>P>XY+-H6[Q/pcB~,S 5<+7#DB5ksl@zˌ9\g2 opڝL7sF1f1Cf3K?~HwPP( }dU|ei.#dxԍjpލEHiC9^5Pt$X"ѱjoHdR]cتc{:>Hſ?QLBP8ٲuƵo5C.Yf!lO&2_SD#';vrWB2KTiًދVVeFq>UI̚<bQw2@e#%I}uM'W }'֑_7xY*IPNqfRRE#tR=O"U/@Xp;BX7а2J"vq5IM >{_8Y (?Z=|^Y&Xǯ5Giq[[z㰰k%\6|n:Dd }@pڐdt(M~1އAQeI0 (1I=c8<>yz6ۯ75Tpx5FC}\'8od3ʲz7bXLN{1L/?{!:1g8:|- Wz*!E* )nfj 罳yFÔs =:vmV_LA[ ?qV4Wq)POؕџQY#mնHE`SW\ ҋ7Cr,PY*d!jJWy8HKE*,2#٩.t$[ZZ҈Ұr!jWbq !˝)c9o, 6ł|鎴c$ia[\7dz& [o;Ҥ| BqI}gV u1qMSPODܨdIJܗ1b--X̫5dgATx`ޮf~ƭ㨩{~`ŮX5`<~i-(F˙6sܰ4=yo|c+i=ElU nKhCD rnUSkրk'ҸxƜ˂dyd%إ c}z&*+iݴ? GIm+D}_R4I,5ɗ 2ihq9Z9R9"$; ςxO'"C!QP p[HOH<6z⣩YZ 4ˀ[VeUgl{{kGƪx)Kv@) ѧ:_ COq[f逫ssMdYoaaB֮۞u7 Ĭ"!GG\&#lLba4ߘK A|P0ӗuȓzX*J}҅׿m[Bldy<.B~q\괣'pժ!C ZP]pvoyb4;]㾉y+[2p=V@fʅ2ߑσ觺rk#UӔi= ?>ٕ=ŏG}|_bTxj]?-̈ "n>` w4U{ã՛Ln]\Ο2 Dt>45xAFS=Vs_X؆/\O#S8(7 [Bј!ܤTW..-iqʆfU;8q xg5G`ȇOC M=PJ[26o׌K.J+iV~$s=S_hwCc0a3AvgU&⏕$ вBr6w䀽NK'+t*ӹJ.f]*Qa2͘9EӒ ޹!VwV;w`✟~`,BiJ#ėFfljY/e!wp_IRide>DCW}}ӰgnyP\wvsٵx7\x$dS.07gҎ xj|žSSlr4Qq똋|Ȣo pN:0Q05XޝWMR>t(:G?(/˺Q9g/4c0K,`FHVUrvBޔ eAEXǪdm?A5l) Yh3|+x`J! !_ ]DA&7'@d`Cr~da(1g GZ6Q 2S| '3E]rvu{/of[]Dl掩z>C&Ѿgu:fDsJpis~>~&@܊ͽUZ@G@!! @0ߛ >[K PwģUve|+ȗ%NЇRIF߶R#>nI*EXTCf,?vyo^F~ηgm6i& >Y!֍T.9~B\ :pN~ʂxW\!Fl pdƐz yC&U{XA_]Ð-fDn`d!c3^Y/77H& X$ѥJ!n:̄VhD5KDZB|~<.dʩ&f-n<ƃ1ǚTckέjx Bm$_d9 `;~̂mw^|W`ȝ O0EF'o2:}b~׺-D* ڡ}1gY`98hp.8_+ϛС>"f[G'R׿XT$ah5i8 AʔnY~m `yQ8GeSF yun6@9`ͣ jWUEI8X*;~mK'+2<%=HYfCDHwK f`LoY?X`2- @M>?fMN'LN35_Gj')):XAiP_w_o˧m1JČ9eቸJ1# ÉQ7Zli9=\sL\J~Q#H,kbM 7 6bZ13$1i փqun['Qr1_cu}-6@݋xxM}śDOTaio]IL"UMK׬%(L&e/L*N3LEJ/1tTVlbl^ XHA*]xQ<ݱ0-/!6gJ9fB.GD= HKoj{*>K?FBv>͜L6٥%D#fNH,~ہT+~zIDɖXnJ$jTUҋ,z7y =I d3D(kv`΋W f_&ൻ mO7 hBP&defu_(_8` jg>?N} ACqYߛeuӿBz{Q!-xM'қ In[GV@m\3{~$>S#hC:qVl ϧoVRA[}"SrNجGԳg8;D"&]_Ol;=~"7: :<&S쏬5:=<`+jj)ϔ`#:^E$l0a*;cm͹̀E l/0RArlԷSK`8&]bH~oWG{anS+uHw"W^t8(٬M.ʟAzqJᦷk_\陭\߬rQ ,ZɪĴ'$iPcs,EXu^Rz`: ?%eL??HplbO`678_O(@ Pĭ'4sJ=QbB^M,%0GgB@/'vb5pdF %2C}=l# COL!o?㙼![jǞxsG'9ü"8{6UǟY&/,L)yQ>cSTFʥX(Qn"=k;8%kFƭԳ4LPa T~a/r?Q ǗhsNy;Sg@^-u=b4RFʾ=j}3٪e> 7TJsoA ±JYG S(kwe 1n",6nO盳Vr#}bP%c9o܂m?d"\V{= kfQ]_'FN}V&G%}Mxj5 hErv,,ɸdbXL,s.Ԡ7wc8J+ڿ;OڅI4Q0)U@$UeLRQK)iEA L8פ 1*GUk&%w}bKA #[ޣop;OJ7>{ Jf{oPg!b ] :|nP7;U^AiI_tPl!.1 |, P_Qh q"5~-r\<hq& U5K3&NdJzq;8Jܴq8Ɏ9>3=`|姷Կmf|; MuёVUvcoŹPUz (WGb˧N-fPNywE~RJco) 'UK)C)t0[Š͍N @-=,r~*sDR bbmt:~d7S :&vvoN7?QSfy~=}XY㕫n[3+0տd߽TXQP7|I` NTo>E\إ\I@/< r&3zgQ3eú}?F>`r3kX%~qMnSxLZ~3(>$}> ->;xe(VI9!@ $uk2f8^ә-n~=")1y575)1Kp@jlUknf+Pr|&(X0MMY&>|4)# _?4p~ǚ*cr#zw~ĭ>g elv&Itrw2Vy8 fd #u$ ]g[j_NM>:,\|y<}m#Jz5TևoԼr?E᳔[A#jtl69@h(wkFRQl377<{|h5 _aZ2Ri x kҎ]f'[/k7Cpzs]_*<|,/;q&pdf{>4ُ˥aNL]Ӟ%=ف[M$Ů}8~ӂ{w=_ z|#!O1XѨ9k69UǷ-_(%lz߰0+X i} B9f_Qֲ0΂?OvχOͼLNG)nE6UU>]U@#۬BƲljRϿ}N#"۸O%phS\u}C3`Y*i^ '-KDJ8 B2荛Z8y-:*g+M@dO+w>= }*8@xh+y]}.H*t؟zUFx0qJ92?)J ;vںsHDQ,!gy}.>򋷷?p6;VtDrOԍu\sJY>dtC ^u梭sJ>ROVkr%~XS)4uR;5ZX7JkS_}x\avM*qV f:,AD'*$o-W??_?J3uDV; Y>.c/% +,O}*=Ѐ0c)?6,Կ3SXEd?C<[A$yFzf7PkOžj?|Q>CNIs"/۪:lʵho){dÔddplXiN^(_0x0>U[Ѽ.g[| T;i ew=~׬c Ljٺ}%gLYPx\:2Z9#: 5E%{\@X9ṕ6ĀM<_^}2|fqü/1Vu Ȳ*0(aViBx2AoE rr *"EÛ89.M}#kG?boV]kB-:q=J#_ُ.>kq_mr)tkXk 0NIoNdt8a GΧ@hd{CuU)nvQ`7S?9ܯ%TU85ݶfI/8 Xqf0;z[!BTh _%|`?mB^^ 0j !{ ,YX-\.GTX]i]Fd6h5dA|u*>%gnk? hSdV~/57a6Tk%BByjy?ܛHF&w|\EaZ$([$Nq Ne(kN0?~:d܇q;wv*EZZKd-x7-XpLgy&4٪Uj-_oV1(.*rPWM/CE& ύC׭:,~r.^)x\(&ʁtR;GO@-!U y tOW g֓ZЁ68r Cw&~CZUHb2I|6_k0\|e *m@;6q'{ JI&#e;'/Ƈo| x:yMͥ( ௴/Y[.Ĝrc)>UWcJX7PV=!xj๶sþZ3m܆(A UvR]\/}"ؼ|,r=֫7OhGp}1-i\Hq<*R{@U7v?_em Visְ!iEW i%%ok`hn %ƽ Qi(3Ϙ?&ԮTTsJ>Rv[~!+STl"xGOuțeB03ijo̢?@$+;(@OZ/[R(ۇ1*bt}0yf`^^HY'; G4s=[u[܍43=e򕉑[FnlybރuĄ`s6"$soKoe&eyqmnIOvs={wͪy옅40x:$$E9쐺i{ $DG'0X=8)w%eM"WjV6ЬڇkPfH׃Fj5K]R*@aȋy*HބNKU3QS;=ۈn'RW}YtmWs?8Uv{}T Mյwlax m^*MSψʳ >]ʿÃG/_+rYgKZ )4AW5?-ʡ}B9D~DFeܺ' ݁wUp)!]_kUwcXTU`hvqWMS#r&U'btݽU5bUw֋hd 8ڿ=_!mm UbՄ˨u Y.Ȕߟ*%'P]Fiܧ[$-eJB+5=ܩI dN]DdBbwERe.KOx:u& mHY~=A_F NBW![WS|4Pq{>PCGd`h1_G[x /li ![>L#UM4xr$(9r=0h`U3m5?s K=s?8uۜ by Lk.豊)Ъw׆x%Zi-nBVHx3$⇫R*9~Bf^3}8uKwh8tG"ӏsְϚgO+A~\vp8's_ D5#:f|߽>h9j_~!7mxwt?㺯B߿ziBM=5~vniu}N cͷ/tڧ?76}{f\@E!('-Ov F1;`Iʂ2gݡm羻b}KBx~Rt'K,u$\_UUw[JX?LpGhn JjkZŐ%*9b Y:ZiByf:TD{5Npg9֝J tە垌wt_K>7fo9KHzwD\uG4BPfb?g[ yV(>9fxc7ggq4/c6*(]fsOQ\1 'mw.|~Dd3@ƱK)Iq4Sccǭ}-5rEʑk>˕U{m [[:S9ve*[X梫P;ˆ'a%(<mVJcz?C\mAoԆI\y{Bn|ޯϏoa}.&9(N>}|S)a1:zn;N Gi@wDo98?2Q$د|#10Ӓ@6\M$W872~Ξ6D!\Vӣ]lr`;/#+~0sQJI.b&rj~_V'׿7wrW6 b\u8&$#@8vռzhiqETF#)cV oņp(CAaJ̪şASo(SGS(X"{<;FS!xTAL{y <Ąy`(~[ߑT2 y/~O9>Qpf~(c.2gIMS8xt7$izϙ[:Z1X?I)_T\kmvVO$iߠ^@E1ɂ#v +FzSD[FuBSrly3w^91iCamlar|U׍yW,uK~DڿdE֌%GǠG@MXC^+}='l:+HEF. Ao_1I/q EV0Peu>YC;߲" %921Rf/1S( "ǸQ^48BtIK!Z',Kky3͠*&Cx[B`+Mٌ bBs÷SVSYWlzBWLqYV2TB ,4,V|xwm׃#14D{zU,Xs+rvy]f url吥ϑgԇMƶԦyJ5HuJ7"d2'MP7| 4Ŗ?!y~o \DPsj}=8IJ͗uV6u嬲N 7g tG9ū_+~6T$=K=$wbUX q~%K8U7H@bzEbbP0%*n4A1V2,O*fo%S;Ha)ھ"vZH&ua*:40oZ g1PBĵZ3,oAސ v[\ş3'{7"%MSwU嚟{+!q,@)t_d*u[!V"pYwp'i .s"+{ʺo@3VA==~2;vc4w Q)K|cKjS(iX Q71i0ԧ&9~ /~ '`.n1qr? aMD=w"?e5@] eü1!ֺ R|H%׍`!Jj&v@W.;zoXhaCX_g%j絴qDyH tp臰HЌȱ_Si])PBnI?&TMf ((P^?k#ŁjN!DD٪+_4lSdusS};{;@ӢMz|0:FQfߦ&??g)&*S7 {{ڬ"HÏ\Ԃm+a6k;'@^q \ORK|Q0̫& $ʮy5cG̩纖%]鎒4&Xhxa^#PZr(:|P;R#(q1z(~]Uhw0+z<3ȿ$LAH>Vޯ~HX0[TWլc{qr܎)x^fj[Bݓg Ǡޮ0o*7aFi-1`fp|3DfP% v XV_~N[f$Ǩ{N jэlSzmѭ/d9$mbCR i c&T9M|%utid{1p!6oo\S2l?lrTXU,ŰGƿIjn]䠨, kBwz1]6B.z$?KGMQp׃ga4v!|/* 6sw$ůԔ#㭫$aSQ7Aj kE[k1 V6%KXK7NM}G\C{,;;k+->0>*x?vYݤJ='21. WJ?u:%CIi!ɨ{O#9?1}חXk$jJA}RupkRy 4B:mnoя@/kKnl~_@b!/uNJʄo~uÚ%78\Eswm#`q8qrs2RѾ]_:R 4FšxHxc;vZg}$f+#d˕e3HP|[CCݕ~Px S#S](%Ʋ׆im2Q7/[Wd?z9:Mī`mjS }s} UXӅaN&̺Jws{v  {w$MjFnM6΍{TwDq(uS'֚s(iWc7 QrZZ]0߳S)7~S읙j"Lm*3J6+tѦQ2Rdw[[d?D'yМ> "vԱCDa(,7k<;Sf 2Fyo~c8k : (v9M ?7X޼p]KΉ(-,5~AUӦEB% uHҥ(:q>ɧtH#:`<ۮ˪}Wd;{\ƿO mmS0zWNMX?b vs[NeF-dz|Bj w,o H0RډmYevܻۚ ćS;WI9㜷Oǁnѱ-_g #栂F(q7Qc~]ySN׷A[ʁ4-<<ӻa`n5}fxO{_8aR՟0 ]i<;$5#wfKJ5hr]}Š<2^ 2=(rS-O)XCqsL)S£'ł [8dOl簘4M P}o'yt/)\Ծ = 7K}?ߪn zEM A s:9:D@\l]wR+(|>~( Gk^F]{p\{f%^y|= `S,W"`~g\t:Ͱܢ 5Q;jYSsʆ*<N(5Iryg㳦g6iE{]d j81XsII ݒ;=£\4fS/q7? ~0>n1"ps/U4͈ Ue$Ϫ@Go:$:BME &{m:1X rN­)b &#yL/۩E13St>إ#s}؏(nsQE]bKj/1.(ӑPɰ 9[)$;6a_"1Sm ;KSu`iI,bXGƽjt>\ʓ/Be(?``t- u'./MkQ%.>_,&: GF:.O"3U$ >樗#n#TY޺1;w:U-Eu'5˓I-񣰑O8؇|*`|b_NvR~뮟(ˑ3 r:')p$qm;K*%m׌6ޮɉ`Cu/1^ .:G>Kc4}?K)=ݿrla{";v~w>vlț2]މc[eF.TV"OSu^mbPlî~7O#?[E9sYaoӿ$ ʦN^c8ZD޽wNZe؜".kgDVza5Y|x^{!w{Bw;˛d|egj$!^;na曓SLݣȃtoW |nQGls1Hr< >TDdNw w4lěˤ0}r>y4 0 ɜz2fWN9|uk/qA_b${7$uu8B,."Y4lpTP'>UVYr'5*(g2_( ?V>됬0s7tQ{!Ɩ`Ľ;N{Ă~`sz_mw&d}z%e? H%Y/ p7̽[!gOw{gMdT5+vXA_m/M= HG'k@O2̈kEdFpB AU˿v_*MW𘾨8+t;)s]Wa 8iY?ԧCY?@焕8U|$T1zK7οfd-KX%CsrYjo0ەms_\?]*k9h%KfVlw=`$f86/umjm/0jz Yq}'p\X>eA2.VƝL4LG%y<>{?Vwܦ~Yk|h&f( t _"Nӣ Mq=Q~I䐊/;xV1;S"| m_G8CTʇ'?IJdޤQduz?UW5SovX?'Ő?ϊAN,:hv  Vas:U SknSRQҨ ܰ$hzo;\JvPΧ7f[Z'~b2s~nr3D3Ҁ%RXt^{]qxrV|? wW7`bVV&/-s}o*N;_radJh :@dF}Brt;{qJY]+yH3tHdi!k_{'8♶wIw@pIPAw%v>wdǑOFbEF*+a["zgږ \Dl.c|ڈ.Khpqx:6q@p>kkAd+MGa,\J6linZ43ͭeʇ>gN<}yhP {Y?5O:ЏQH#~]A:2pFf8E \lO3CuGvo~lMR¦ż/. $s} JM}M)اXːQlU$4TwѶSc=lL>3CulէZlܙrbW犀khĂ&Gӵ[O(Ѥ ֍'}ϰ E²~%wRAb Q,Mn7;s1[׬a=2Ul/*G;4U1^Z8'ERE\d+= {Vpeo#l1g$ˋpz*( t4ietmnďXWW 3#4Qd61>kҗ7.q!Wj@;H,/..e%P.v*=߄f74do?2Tڳ fKh{ 6û^ NiT|<19|+XZ wtӏ^,P7 .A^OM95^>Tt׎Y^f5:Lkrs7 h=vg D}i.2J6俭Uj%*Lħr|\/4Zi[yީ{U{t\V dn\C.Տsm:+xH CWz_sL/e@_;7Ғ̎ mz..Ʈ,>^H]?LtztXeA R9P?e9O gp=< Ǐ(O!::13)@Wq<)5/r&ng}Kτ^g^NԪιԭy}̿ѕ&jg~6Lա~u?0L̠ZHbzx<bXBXv`s-␰qr+T8MF=vqyRz#> q/t]q*.`}5:KB5`CH#šgۭRFɐ]q/o*+~v5x)+vO{SyX UސM֑syx 7p9/{*']YQ, FmIRpkO}OUu~)`uJ9[1Eaq|\){RF2lNeo`Ŏo l;;t6E#Vs0/ f6QOAPt'N.hg8r[o=Ez͵㤇I # =MĨ l/'?en*UkYz*#fvJK&toɐZ˘C4><14oV"; '3q?ԖHltk;8B(B:k8E,PK5;!݈ԦN&HtAZtIV24 VSS~&y?&t JMpW'ү$Og&G?oTǫvK=7بC_0~z:L^ďC6^_D~>e76`HqfS__֦s< 4jjP)7 ټ]>N=1'<`5uZN{`߂nN%$mKq^Ix#u*Y1'%a<>.ɯ~^8C1ǐQ^~|v7(uX}B0J8_j][oїvxն_7{1n;\+uX+@K ;h7+ <Х􏵘KAtT"BƄ+e!C:CiND7p{lC{CC {xbLO"LͬppF)Dݟ` j ԿGzo FWћ'Cq#/j"4ŧH y9DF>I:*~)7Fک&U hBM&26Y99[ 'Q㼽 -9c2 ~2sgs P)[tMo?ҹ`EPAOĕ骂5$[DI":3 N`U)411߲_zcIį^ܢӃFRH+#"0A;>iph/~7dO #S)ƣ7B4'S"?^[5NL9lzk3Ҧ !i| u] gXە43&{OP`!kJlћ i7~$44[XMCRJU}8Z {P+H(m4խB5LF`y&KIZ? X)P auTXКn:$ЬNU[W1~dS.X$avĂǵŃ(>f3BJM0_ AO\:"-")ûx1q71yYpݢHnpŃZd:LtDMt Q=3ɍhԢwb&9CH$?7u44ah̬'J-j(M}57UheU@DloCY :S:Ƀ 07Iڏܖ&J`)E+Ts~H/%5/d?܈9K:A{̣} p P *A1CG]_N^N8vD>'t)+JH_⓵ "Fyo؝$EL$cSX%BKt!|o"Dp>Iα=^{&$>0`xIWsrX~`(Ο#S'.S2ᆌ_&pC*?{9iۙIV O8+{bC1G!9[CQِpQ(`z\B8.?_FD]ғwQBe;Zq85ΰ<0u!M/Gtm*2[ U(*qjc5_dS1:'HjR=o+8bL`@/Y AbOkkYޫJfR0uКlevOޥCe_I0!tPzdQ C_ky<-eblGn˛O}j? wxBS537~B4[$ڞڟΟرH(K?$LJC7QHǴԯi>cX<sәw#OEK%X9UӢ馏g"yoDT/PťO;`sreQy:*j;sMpGWDݞ "}FL0_`\ф-|Bjםi-e{O ?^wsmQ(~b] G>{IGwZ,jZF^ҋ.U vc>*g5zdZ%-8y@æ"__j {# -szUtu MjZֺ7.uUOW)*r):S4c;Ra]h[$S)^vm|kI_1j/ٹ"y ѭtb xexv\j9vc"9 :7(fʼn9>@ឞ04|, ܹ9׌5q[R5Y Ɛ:?qqZ-: +/cmII!BUdZ)n@ m3+CGLi/8x6M9Е%/}M`HV}Ϭ@t&3[fMd&WFX''4Wm>/0;[⭓{A#gu, I˗;7{]0` kj+[ͳML.QZ@DkLg WY缹5jfRq+y&فQl\,axQ89kr3> |K)ۏq*g0*d{sd;xx - §|7Ag\&"תCUTߐd(k[N>1}恆ylu@=w)ѕ ΰBn#g-FOLg6Go2)Hh|k%z} X_=][H QngeG׮Cad+y 1 ZH9ȟ ;&PN~3Ji)ҟP0' B,B؈{RE=zɯhe`WO;^R^+_x(>*Ý~CAm,|]y!b~wAaGDD.4+zّFwцHGОo-m?7[9|Ǔԓ]f*c'g?JOjGB<|%*̶_5]Xޛ3a-? QؤsU(%:V.)˜:=w={`;{GU ($׈s}ϛ&`3 I3 aIYTn)qEx:ԌSoR⩮jv(RIU8t}}|x=_=֬y8bXǯ̼_ >/xFؿ棿>&eݤn0N@S*|{{&< 7\q6v&^dmcM+׳# ]ơGxs_gX`|BD@cG "׳XX!uAou᪟k8DI{XThYs؜vA!c~',V PٽϭIv)))ö,QT0i݈a|^(Mhx/o qݑRlM{~o˄ͣ&:ϙyqӕ2< W+Kg5iTiS#|x\6Rm0ˮlKN)= ,]xt{LvoW{9c`l`_6f1&Sp HQ644L4yۏT6?2Na⯵C DILIx9?B0# 4$z 8<ݒP7al'Ea ^8 fM UfZ^w]Wq,v^UNl8%Q)Su䐩 O*K':{JT ɧi*Ǖ`ZtxVc2uu K&qǓfH؀/G%2M5 0+)CWEH9!)9I)ŘlwJf N`selS}  "ӊM+ |^{. σz;6z}%]k;Wf]prݣ;}/e<'3!~'-dVqEMC8.lRp={4/⍜I39kP1ތrHҐw抩D=ҝoT_կ%2$9^Q?tVx,OOclK2y9`JApaw) &>:./o7 | ^!o\"cK"JURO5wHՠM}KTf:}Tĺvިq欙?9Kjfu߈Qmn LHA66_I~qs7u>hjnCjX>„s`7Rz{ S:'B^9i{'J;t<~̰¦ˆUx]V?gTdM5K_H1E)}58q\B}[0 2k:t(Ŏ0 7/u eZntڧ8YUmcwSw(gs.jÁM);DzЪ6 Z:`P8e#POM3/= ZdZ4T*dizyVȅhښxk59\uzPN2&ʮwXޮ%+ ~L._{^1>Zi23C-] ~%Es` sh-h)k⋕.mm?XM6iT;L`Ud 2.[+~GL׵X7\JM2r)0mh$2V|b9j[F 77`eVKiz3􋆛%SՖfѶ'Oٿk:טqn||8Vg3b8tLaصL m0{pP|Pfr]w)Ca;J2?>wdkVkK_ #Wl}W:Crs@}Z[pa1t\ABgVT8QۊtL:~ۡۤ%@/J-W-Tp[h~_~}${2Zw yD1"UūhXT>$}\? ]o(02j$#q6I1䨶sl1'A):둔}cs*xUL(HnHC Ri. [6YzHzg8Ĵ^khi]4κԅCtuGJ} pA'v[apJ|@0R6Fm8do D&p)+=1)کb%lnjouM*Ȉ(_1fJw?I ]V;kofфg,K@2+3aߒ^:v_jqMGV+dqg ]haBdE7wwE+=İJ5,3l%.ddEN9C6^ɘAʸdX 7HVߡ̻Zvmc|£VHSēX]9V^K[Pۆ9ڧP e^Fd$K"UVoc K21ޕE4Gq@ƯsaS+v{ 8 -`1Ξ{RPk}={L-1S!0VH#л.uJ2<'nx4ICls'$%YimPLޱ'ޯ)pfl T=Hgj((|uW;䵻jjޡyٖmvVoS0wݔ])yĩd?QwJT Ē&ʰ>Ghr7~:-PgZ܀<ۓs'5 =]5A!AL"}?FS>bض@dba|'u4c899@4\ޑ鳀x^|lb+yh&?}j]9_i^5R2ъ'd/L)_S f 5ٞKZ!\n=k>>3m;F=[y=&Q_&`4g"x6 WD=\ήaC'?>{_z|<=b.38'Ik'ӊ>1kQ+s?˲xNvLL}Y%oq7gA5A: {8lc?FEM46l }73N0!ڵrLcR!tD} qtj,$/^IMԆ+iݳ?<42Bg#;  `w/ ^w˳I`"jK"{eX>h 9}mL A`f!t0L\_0Ecd@e1?荙j|/0nKb=%5u51Bt:3EKOw27?"G k_6|R-HA't+mQX Xekgθȱf鿔kX~<~%I1!Wrg6gྼ0j6s@5O]STcA+ ݓst6,=L<;}3z1yNv* ؃o3r ;;4rG=EEEu3HlžM_ǿiPݥH q]Ql5s63Us6mFd~PagbU:`vĆoC (ߊ CK-,~\V+O,KXV/D6 W9kclrOx@QZ\z|݊\@|`6NbxDxå-mK>=ZR-!441u 6ō H'4Yqp?߅NgA,T{`j Į3S+C+r: {ˁs8GU֪zJpmoo(@St|Y\$f[{zvQmC[#ѳ40ֳ5lStA47EȊDzai5a'ުi&73`Io4n|F|3ʊŴ ិ%Lẙ!myOUOlVm5&HUÜdC̼㟟 5 ? x4N9F7(g_By]xo5A۞ 4%@PAoǣ=S[WÕ)Tt֙>,Q, =Γ>L^So&j71vR+lC4H  zJv; 0H2oX?9 QL=$h' 9SC,CT컷}ues]ܛM9wGD]=1Q7)5H⿙(-Ȭ5 :JTSPR ڡbj]J+=gL#8J2?V;fTj@=ڨDп>i<1-3`SUw=H)8@|`w6 /F,'.{bC*nάuld:|0k:h=d7UqD\-.(nsG-MZ*~&pPxZ`yiYP @:⥗3DYkyBc`{O`'\f׷JfIoREPpUߜ^e> D5h3*^,T5+F|i(ƐC2(V !M«d>#!{B@=VU+c'kV".pE}0܉&63*tB&(`"I\jzbwҖ<<1)5~J$$xf5mMl>{$pi18-2 B&ԗܸx( +CF`b**0OQz:s9G,Mc}mR*f+| 5XH^ Ye03GPk<hء(5etbUzÜ3ф ހ:! m^(qhգa)zVUp6úS}q!YLJ-Et [&a:&S`GU%烅2}o2{꾣ps]?Vz);|_9H!>="j|2LX|󟦼}R NH0c]m\׭!<_rŽ}ߺ-fY.B_V7Hst_b:w ݤMK-_e-R(̨'[3I3ݙ.lA({BK语FCc(;:@aC}ΰSUbYխ3#3y8-v~HQcu6'JkXO9%ٱ#L[?x,HKyeԎ ue yҪ4=k+%oМJ%\3\/nRZCQ2M"qzY!l%7g^QfcBp~lyMbc,7o2 >_ے''~1:P+ZCA+$lz"2,Wr%FAƽ`gd~d7#Lbs?wҕ+afk:۱2mpG01lPWmJwyI5bt?y|%xuwF_ST C8ε@7ʧn5}ASe?I%b@Pd4K;C78-Mt-_9,WzWw}Z'Y7_XRV 0/ULNLv2┼]iv:`R^J%*)@إƩH!Yֈ)v_DX"sPorx re:,Z8{-Rm. )eJ]Q$H_oa2c8!ESGvcKMkUTÙF8B-̌ Ǡ.Y1Dvfr-/l=_uH *v%,("9F<̣%!_y4N ~D n]EJ0  Y^oFeӴ)K|ScuQZЫzθ`{GnOG۶mՍr?vEidy`;!l"fq6c*myF:f@4LvP5B6Sć ~* ԴW6(ztd<[NA/>߈Fxxgߵ2[mꦊfLyU+bcU!rzY?_6eɳ1ڈ{vծSٝmY Qm{/"HZa}G}x=׾8\p_G?xs)}~\8';9_4YنZF2%r~k߼c_X܋gVn#Mw8+H`<Q?eIGp ~ qpz߿u7Y\ cxII=HLS?%NWab>ʳ׬;a!zyU˞;ۂ\͆UUA.7Lɶ% Y|g1kV][|2Ka$^7Փ:^u?h-,KñumdU$0Sk5Ɩ d? K]EWW_SQ~ʷMF~ :摥@jinb=+13g0ɂ8{K3GIײq}H҂Ti+y$)Rn\0t2Nț+ HOytd `~Kv!v*w3AcƞyoKDɏFqInLqxn%#dV S~$K21NI=ڋ ]#̶a61Н}^t߸lM+0g)p\ ZZG[oUJ6I!@Ojz* >3kO߰.cW"HJ B;YxZ  C. pK$RԓOYXpԚEP/mafA/,~,wh,FCXZ QA)hl<)[C@Ar5|L+puZ  2p,n; \O))dV(pAK '8^ƚ,K]P C_)gn?Z]^4{ 9 ;1"C"qW?+$fcQG$`)[#?e,hROD$FcijA޹Ai&%<ow 1ʠ˓|^IO籊 և߸77dʉʾ$|ΚE K.Nh7m uo:̭}D̄ȸ;Kӯ== n8or2~ʣ"ΨԳ9-ՑSSv,zym 1ƴ!1^Xz5U-92lCȓ-^KAaZvwqW?V56?KaM6ѕIۮ*#ı['L* v瑡{Uuo=`8~-f~0"W>&4$9i\n}J {o~^'CG?MG VULoךlhKb2MА"^ j0` =EQ\b*(poۑJٷY_Nypd#R$zn^+kCʼ;=(as}M/aLQCP $\e+-beę}]ݳ(/f.(o!0Qޠw?L@c0ɕHHvcm ODCmj'k0|n^%nԵo0ڵĶϣd1`_'; Qs٘lnRFw9'~_&hxtbrі΁b8w "8%V9s ߵ"]N]%3Җq iև?ٯ9Jq;ۏ{q:Ou<ܭeWDlZA[Rs"K/~d@ Ҡ_($wŃ<#"!L'w w~cppMdhyU,pFzB:)b~mDWCK#e-A՛J(6Giyi2R 7@Mv0.L4~cP"3 '=HH-Ǥ~+q׈h)=n(+/Z3&*} t6o0=HƈLK)ndJ 9iZ1e9 fŔ~R+i#<:x*`co| thr>"/߬ ڴ bL-ߒM"P0)9=}m~R8#e7x PxzF'/b3eYՔkSY63O ٳ 2O ?Z/G!܊<0束p>эۊ+pS51q krK>ZU+!T}4n!$E_⺑=b*ZPDp1&NytP|+{SB^Sn]#/ik‘Crəj.֥27i1=?0oMuM|xDq3yָV[b5o/%^Lmb{ׁw8B;5vǥn]S L&~{ >yƉ;cHѯY%4WiN*C.'lPj2m3X l V #a˞!g\Aߟl(g=be>xM TIK$H&Q oHad֏~,|CChVC*t1tV1.!%Z|ET˥w6a~yӉtٕdӰԫǫ}]\X @t ORoyޖz%_mRJC35g ]H02ʼ(q9X(pV-=ߟ])zy袲.8ZĶMT? Ψim[yoΠ w8а<7̡Y! i ~L$# {2c>W]_L7 >K~4kiȳY+k' |=Hj@BZ29Bp\Ÿc>. ;Ev0i"[ cue;f+ma&ǹa.?e(T>0GPKRҩᯓv*&ɗgn<.ӟŎ\šy?j~>= Cw j8Y9u__?XxG_8 Qtu'fILKaa'!#1H0E1⣰yҪ*J-hhZ|S ,K dN j_=| w~=MRPVYw=c QV XŸ(]=dȁ)[y ʌ -v26jU\:r4kC>sRCS":b l,}>5om f[SEr2Dt~#sSyni蜾*,.:05Qw!D9,: ;x )O#EJ]LSFwHUnj4YME P*nzbMCs},Sy lc0<'ؙ$%{X"{gzٿér\i% 3kXws@4'K/8׿[ƙJżA/MJcuwkηiv<b3 Eii0jCQ_!e-o߫Ť4++^&P5Z% ۀ;\Sv,^/TZX l. P7̿#Ιpp>7IJ_*;U֘>^_Կ Ԣ(醹;8([D'4̠uӼo'r9wjꡨ{JRLTpyuu>F,OfX:DTj1NoHQ,߮C|J؀:+!9=|mXULaOdӓd5^Tr>3a\e7Pb^PN 'j7BNr{B2_64+_>00dz k`*~@A{gBAs $cQH%/QCAsjG'E^`v_֍GQY*"fVfm zЪi焼X{ɀp~Ҩ7hl a]Lfڟ~'4Nh+ds&揜gFd5i!rH'[GKzNgZ=HeDA݇&EO> HlZ4>3,%˪?Y KT˸Mva`Snjʗ~jJԺq G涭_ ʊ0û /V:vH8S0c=f#97KBEwfv*xS_MAK+ҼL[` zu/zQLz0GJGQZ@l Ah=uf$So#Q1BRGVEtZ/TP2Dc%O7n9) G@E|UNBU.s7 G ߑ \G `ʗ*#-[D}0m-:~xzџLa\eoSۓf^3D!0t?UߨކaO3D 6[F;47p~e[=7 u \K'Cഩ´@s}ʹ.K#xGak}4`vO|4H{;#wR`8 =KC/{|Ɲ2`rTZd} >uQl)41} LYN͉wRm5u^lM<.=[]`nTÐYB =TVPGT$P\AbO%DFY6af{qhb0725ӵ"˝# K}!;/x_]ޟ?`` mWM{=@IKYEl{kD@@>Px)"(ɶɯ 4WIt&؁8p .&i8M>_lr0uc+Zwpre,ls3Suoxe>S%uBA/i9V>J[֪VpU 84s/i"h<[`#ZbK#|HF"Q;SJF1"p{~r[Wd'1; <7-߄އ`ڷ^p??RP}?D/܋_o)$ A;S =S \^ \]C c(@Q(ik}4ކPSMT '7C]a䑫Oޒ7yLxhF5rnr]e~ЮQPTUj/__ħ3]̐Mp|)o;B7` DRw[P엗8VC7䃻Xz|-$B@s/(]kkŘȞ]}yg&:oD 4༭}hxDKcׅB- `P C>rDp(:G؃8heE5aȒjl !!;pK\B ŦV )<^I|6MM=A7H  ֎n^'/o5z0 H\/t@D-jC?+d< [Dx>|e)ֳi?CHMќ5c-GFg!\J'ґYRANٲD,bԪ!AU[,Z$L5[@I0ނ' ?F^" #^6Rh"JVдLjSt ܇#BRO:bQ7 0ħhS-K_v Z\CvyN aJ J>/0&iH|5]0՟8SbzI0 S|Yה{Fѭu/!GƙE[Q&^3gW}Bˁ1 liD;ط AbL% oۅ*"Grq&]Œ:9F] 6Ydt<`zTjW{#uޛxQm#R8(_}t='i.H-(('>"B-M1?L'E 鑉(eNI+.8l4a npsjɝ5 hw{Xؕ5s>aJ/z>Oc7S |mt QY@8Vb-xC95zbl"l,Sos8>U.[h JR B~ܫ9a6 ݍ?ΪrbQٌ02` k ai}(6yNqHN1PVStT-#ߌbQ .==Ϻ_+i>hOj:qw|szMZq `%omGЪw J#܆ 9 ߋ8ЖLd&dl%Z\By8q 1]j3?Gax ( 3! ?;ӗ9Zu-EH (sO{38W3 ]M7;nO%$[vz; ٻc{s@/HL`T|+ؔRmS֜13iMO ;\~%Z0u]BU46#~vjŭ x|B3]A˼X_zN*7u(]ەsIJ8@^ %c+n"U߿9ʽ#OEiμZQ?0LE5Čytv"ݟ%Lզb+6~?u?b}!{+4Dĉ:[*!q/|ڗcy"ScuMn>>PMcNE!kNiȌnySxփ3dc=iՂ#&q3p@  cLS=|݀=JpK; h+Na h4 E\e)sՇ#F\BE:6nPtDl+ݥY yD تӢ7Ǖ;Nqsn0Mjl4ktp>|W L,G}ZIGRg(K'PR.O&yyA#t:kj_~n3]-ṇ;Uɶ;=&PP2QlΏVLw9Du('C IHpW#`yFXQd. ?*"-N_`>}2؅3hGx AREm `L'(tɊ(1e /"QHx B=Cĝ_r!\ik?*?R VoNMvu${`'Jq*;T%]cԗY7V. }°f};%NiaNO\mxRK~ <1@I%_C?:RA-yxj)69*`~3xрfa{j LN (:h:[V߭V;qMQ ou9Hmb^$P/GTiq[{rpG>x) "Wٮ.Hau-~%GtBپ wZdbem҆MV>G?,7|_Z]}i0EfrgK\~H'sQ%@8BԀ[ p S|풃69ltmԤ:\Җ-PDZ !2t b288@8Z!9*f8vW0_@$vciۡX(B+"_leb(P>-,HwcW'n@q% wx|ц.Rqlq[Ҫ[>D(_ׅ>)S?hlNH'_a: 贗?@X vR2cfU!T{{ix,IӘ,HY Zy3=j`,5XǑ1/sd0^/b>/`hXՒ`e[SKk}6)=O_ 5_j TEH2m 硕Z.є_Gk?x{0[$gY]~dVUqJ ,iF2Rg͟#@z|a|ػ70?zFW˅,o| `FǀegއήK: v)H!<*HhRA=kFs8GQ`kޔ)f:kvO3/ &AAKne/}Gȭ!5M ]_W/d)=:R[G7D5NYɘӂ4pkCIxЈ0089_\h 0$ё@L'O9::C#-> NȎ8aIDװX}2^jFnȄU9Y~X rp Ps %`PlbᦂXuzGz6)~ 8 7j~3T]0b8ɍH뽧4Vj,g'ʲ_Y'wsEjiUGkl/Xڇ߽еogდTD!wz9&]0h-S'=U~_ߍ{Wac)udzCS<XFNrޞ &^*T1O6jKͼgMQT{/F.hd4rb62L:</{b7HkzOH^J_*sCeyV̽s:e%^=+J }G? [<ݧ}:%x486 mZ`ñ h޿ת>NQGfkhQpwcqD7gm_aDZH3|.EI{=?us%lkeo:=gtMӾ#[ن9>\/w3qGICG.~֮LS<~ @MOR^TQxfݬu|GZ;֕o?ų}my26;|׹r!m)Nb W Zj'ީ08 Izl߿Q󈇰@TL^idE{7Xy[kJ,n$9 iWγ%fP:#M V6U!xe,*= ;˂JQcN_~MmKP^M?NùZ W& q=5!SĢ׃e s"ebO*d^%Ѩ>|t^r:]bP}˲FpWUw—&OPwXֹ_J0MT$c+ (Dixd6]EDZ=ߞR&z,␪EHIQge_xJ}n ӇIl8^ݛbЯٔVh"o1r8~U#}^j%漘"O,;ٽHL ¯Ve#L&5'WIi>+`͏W~}(sRi{}W'gg Zn(Vg7Neu:-xhgŋ8}SdfyY_:-OZ5k^tAC}j%ɿ0z9}k)'ŝ+Y8>$@O)Ha L l{"Ͻ4 >b+ zJ[Ud>xi#J]&VkEpk9Uzg?)9T2j L+@@`ȈsML;3foo)e$օ+9("('*}` eHaFSCc .c{pTr7?"j+":X EBH "^َ X!qkUli7 `%j13]q0Բi% QĦ^jc8p#B561(xH{e߻iwO36Ay yWW xr0w?CON[t"i}[ isd/*P|y\Fn6BCW0,*y?"v-}]~,7JlxqPm[ sBM/4&A2m>Vev?z ~u}GjGO[=ؒufQt d-E8N\ENNj4\ž>>Vx >&UD8|a1)l67;EO~$UAqo÷`։`Sr"Ю$VdZhT_"N|HR?NT0Hd0E㦦X*C>ʝG`m( ^"[q=~ao,u?#%#F >m'//UMD[̖Ql /(0,=}4xϽs@$Ô.|wZ Ÿ"dl[ *aDVoCMSSM3^LO! ]jFW U'L.^)i龽Q]vRۗ6T6z'`MVT:Bl @wV. "Fl'[ (hhp5X2oDǒ{J$k AcP<$m& >9Πe%ɘ}K3AErȥKxgy20YقJH@OH]+Z+W{%r<x^ςe:^t}p&ᗎJCu*0W6 P:owc^FJ6#<5HhKsar=#`>M٦i:dvByVVێb`\?'4q ׉~tDGP>R_ҵ/ w>(c_>r^[71Tլ>H1֒ w n P$N%~՞ Wߙ .RfSbP!g9R?v@ݗ3Dl^p[ټ?qOlC.1o^q#.9 u,):Ukĩ}i_ >&DI)@4yWjhVz0ФL'ZWٯM,.3en+ mZx,og3rgzSṻ(81Rq϶>)^8 oo˵m qla;\;"6 ֻZz8y$~R2E ~ҖU2%2Ƴ Ml+yD]jnN UeK$Ax@WTR~l,""M}qHsID;|r yû H_*m 4hIY_Ga}T9I7KNXN6e>l͒QyhRMɂP(=mzo)r PZչ_+_A0sԋ\jCfcT-[LlYR=YjzD:&~3%&J{UҋR%`PǤ9P 7AľxS] I_P:nTk$iFxN&m9~ǣzhx(t$/i6`%N:z-Aefx6ѺZlv ě)7LO4/8Nl3bhOExtlv3k1Il\ L OzA4B{Of1NE /P(|%9lk%g?sD nw{Іx, [Ek>90$j¶YJ,#ujth4Hh"vTIW, ZC͎]f;Zj?M,)ͼJũ^Ed3zfi];3ܙ<:Qb-B>SdlȤlD ?V=~fTfކG' bV>ca6iɟrjٕ]% hbQ? wZw"ypQU[WXTS'f0D+~Nb#쭸#_} ?o*PAgbra G08vZTx]ęĤդ_NG+-M]ވ64O{Bﰔd`tRS,Jtxz$uu!Uw+MѦ=Lr[Ȫٝ6|X,sMK{^@>MUo3CaķS!PY8s]BU;%?_> \ ?Qcn/1R%( g͘c~] H[Gso'YHwc]u:+zb8@Hsˁ> }gQ!$4.{::ay+flc!hx q= }RY]TO >FK ctWO>:!QV#P[=r!DJW8aLx8t-|-H&uLhz:)ڇ%ƭǺ=f|^i\]ж߿oγ)?vD&{2Vj =ȒnW0{/y `Z:tAR=vW/gU Dp=>OǬwC">EUVˠ@_UA-hkrd23k|Z={!}7׌X;@&#Žyq CzaZe覐.֎w7(" 5x!P@#!pT)P _\ʏIҬ%!b3(ǒ\e稟(c} >=E[_];#D-?ſu<17mHrVv=eWݤwkvQdc_; $wbV.)wLc@5!%=y1;nDʃ)&:&ED`l)GfSP5H8,qWcN_GYI߉Ԑad2^k̷:.6J}5>A&@GKr{!qTb nr} &%0("vxLnq}``##p7+_q cm-B9@ЀԱ_ tFR<Пy+ >_,'rR~>:7D`Ȟ~^R.qʊmh̨.qm yK ڳSh=<(=W۔Ete ~NNu> 9Rd,$3$E DaT;7˩UbS|6a1$rX ssL* $Vk N3Ϡ73dD(Q2Uwt@V`=Ş@2; 6K}$ H Cx\:%vsHX+>_ 㾕䔘rMo45< դav_ QyR\(6pRgU`ghcC>pjxf)b >.y j3U!};9{Iü\0nxDÛIӭHӭ'Hp8p>jhKN|\#AT.fJG瓜eDҹLa,Β0?utRb$PTἂ#9:]r}/|UxMml}B#o_ >GpJR"jZp0Y(FZv` )N4W>Qe}|yKdy92p*~dc1Y"hM噿eoC/ګl9-Ÿ_a?yHO7|n.'cU7'Ogeu300@Y ٘`vcgocȟ(H7ps#[B ,"v|S*u[>Х9ZtcAѱ߾!P{"_K"sN: "ay/s>o[Y扵"h( +B{=#%RҔ&6c\dViAu֍ˀ]Nߺ XSi7“aFoD:~Ӏ&gT[âAd0T.z>WvtR*C4e❇Жb"*g{+-KK5֭g~Y^Xulp-!vKܻV ;pP4oɤ;BVz6+2ܙ0I%-ڗ["SħC;+),_OmrB Gʅ%u=۹0sȵ\a\\M 9S8QCE@W}xZTf o1*cÈOnf='"4%<ɩ_9LV}m=B^u& 3WE\el1 oCF#_X3@Zjaz+T N#/vuEr?RV8CmU3?I2= Ԡƒ;KpLёeΏ4V\qO?. ab:_%}B{\:øBoA9 w (yN rEP*ޚ9Q-_5=eRZ%H=ocx ۗ7lJ TX3^n/t. ޳5<οJx] GRh+ق`?Kf܂˞+6"իv-+VN-dFּ!s SZ477S*, {8v2^EE x:  "#6, 6lO?*_\],2umY^mU:'C[|B%!@6huìq>A EHLZ^ ?Wz`b6eQ;z>VGXy콲5F -Ѫnz*?AuEu3AL8@.ʲ%?>ue "?|/+Dh?FsELͿ_,Q2|jczڙ崟wU=&^IC1;Rio*dֶ`5aYQ?6ӓ 5^NP|tKZ' :lYD%e~vɭj-2 t|)_!ҋ Eo B֒hM5}[xq-?Wj:?(x>s;vݗq%3ײi7Pk+g}߲=8RD)Zet_Ok> yяE8kDa&ޘRz1\j/{e__~xrfe&gDC@C>y"w| 7S(JD*G kl6o.Y\rP:]!g`r{FbNպ dף/ڀ"|7ΐ*'O-z`Z"?8)> !e5#; n83QyQmDigY ];&?C6w~nk+>rqCo.sıo'wꌲ\v^Po6hi-FDGc* <ʂe|f(sK@Dl~i=N1G sN{E|W~|G*եe}]1ۍ(Ɔ<=g1/ οnVXG{eQcV{&WNτ;#yY<-QG-7BKz3c=/%pH-S S9ZQ<4)̋CFU^-˹a62zmo7]N5YNݖ˨W-l겛 W\_+)pf&'8ΧKڡ@c7^Sq2m1mCcOnAA&(ҫg_ =Abpjxa@U8sBSwܢC`͈\ú`aTz(BW*sXũD͠ +`j#>rSd%qёLU)˔w`i<,>hmFXŪ6%m7!]ԍxVbWc@%GԣafmR(EΒk/t?%ݞ<"D:9=n-?O$'JM]T P)^x;\dI+(bda7.Hg樂?Kx05J"5b^C+,\޺ HH!w-}-~ cͦ%qVwk)Lw7)] FFI#yi7 ?f0f_zuU؄42Ԝ9𽐿JMQnu0B"gёEp(iYl=a4ASQֽ7=q@22xT8Th!cQLZ&?+E1(ND h\ ;uwcOS@ ;IF͑R* }?;^y><,޼,}LaԩH%*\ơ@ge~+j%=OgΦbGA'zO*k@ nEmӾ\60q.-;ܰ;*UFbEBb'Eq3-øs"O6Ib@I!amC1"}XbQۓC5?&?6t4+&_,᛿~y1`Mh :@dNcC )Rj}-⌗-%஠Ղ<qHΘ+,Y;6zo7 `l22^ɋB /3};< P7vc˸9Z.& )bCTgC /9:EUl#A)\*!"NY菘?}6I>[BLa+ WwՇWYq镽rfskDoGy yXfT}Ս!|S&sy|i{1z+1 螽wxΪK~_)ϊv 2Z M(=Āo _A0YFx"J ׀Q#Z-.iJl25QA>Dtm[JI%~86`A 9NJ{|̏&b2]~7EHivg~)xfQ(_? /n.Ї+S{"s|HBNCRK̅zrUˮuع`߉XQ6 *c:=h2~ϸQs)5fo0Լ 72\$nUݛ9WI͜yUgXOy>۔PYGjD+k} |";oOP "i wbhVI3Y^-|`:D*4z3酰%/d#1L$1b$ޜIPVXO`o٪˅W}7K! @#oao :Dѥ t%:y0:8Z +8FARrTXQ#戤-ۡV(vL^ģC}?:D̐)X` ѱIy%ϳ\$ٷx[z qKLg)\(3o9c]p᭷U߼\=8'ܸ\wﳛ/v,\q\)1#?/*׫}/@'A Oo R(xblE*g_}R{/7 G`\6sdbgٳ0(s0DsvϜq#e| SȄ{apO:ow͸@YL&x{ _F_@*uSH~t$\>2@I+_g'1D]D:[u 3u^=,ml`OY`RV9@ͥO>gDvCuFXZľ{@{KIGh Ekp@{ Vac\keh\CLJ*1y}C7 PO>Կ"| IgP*(L3lƎY@mB>\Q]@=guX B7B0&Ju8 ߛђ9C2a_ 苢O%O04!7 <2IUZPIS~`ٳgw[/vB$%B=u)k|Y˿!ll'cfuzFk@dNGMЊy(B#r=:MK5|\>9jBye _T047SΆ{(e/(%΋_%e_s>i鞕39 &RI@ygA|R}>~$ߪ*RVފWv wA~5c_8@wG `r> ӵ]T|eYyA\ڭRgPlޠ6 [GClp\57Wb#KNnO1g)Es↮.CiTrBT4JK[^DTS/US _xTdZ)@Id(d /P/be[}U1m);'>@KZ qf kqUC!g n3>(;-Nlfa!or-7YƒmǛE0bYx~ΐNxz.bn@]io+キU-d5h,%x $;䡫؆UErە<dw~~S%w.c5lu dPu8}YR\~q8>5ƅ H3EBc+"?-5%e֡{Kcjc\@2wb5A Ek+n z-xjAFĪ3zR {M'M9t6DՓȗq[gϛrUΰ.a*s=|Y1Ps˲&?#ࠞjE , ia.ul^ȒsZY/bS"1涎ˉb~~v5bczBX-~mZ)+/a<$ *4LVBv(:CF>GU_0y\!  z9tȋ*_.r="z% \T~YU HJ搜pJxz$y LHSah/d Gyn꺈O*y>D^u[ gӾiYO"d[Vk,w3Mܥgz^b}cQ/>BQOP;l:v*ӵY]AkN-k+{K""!)@ߦlh_6[T]N#| B+wz6תd&\5rIrpAulXxH_)"h(>3mWߕ<S/R}85CUȡR:a(Rd}ê'j{~HfXQ^v_?#ǷkG *XRiR}._NgNE~Q鿰RܶG=bӋ>tW84 ɳQ&{kLon%ˉk=۲sJnŧU|%igWz͜"?j9)x e#d ? k]ɤ+ y(~P/e!\**ga`&1^tV)>0sRu_n&_NA1aue XvA¥@ě Bձ1axrdDreԉD܎.98w#N~YՍm4Nk |~)hU]CQ74C|Kd%Wiuf;10Y?ot_Jp;gfԤr31TtO[ s?~ 31VKqRiG0\k6ұaꖻ玟;*[ꍍbp*f)IJN6 >tjׁ*]8>k =Q+v0@zǷGL5.<盤'_dK1%D`烟Q~qIac)LxGK= 0j՝}k)%CX vp ssQj L#lZ@^ 1(3 @ 4p,x%VvpaBx}ъ{T M/zHA1FGU>qHs#e4.qcqiF61b{.ױ:`Z!Rdi~d'(:2F;}Qmбaɋ)MLP^#˶5w m[?lmX8KC1aױ$?u XAOdxyT)C"N[=ه8&D8bK/!-H$g|.~H8Q[#Kn! jқUz)x|{'Q}5d:RP .j¶1QE$3K٥?GkC4muબZ;o.Y maΠ0TQQie<~8>3 ncׂaGzNAgioŶgC 6vdt&Jw-ic̺\4X̝V GjlI%X<5(<ԍ$T!pZ#fnh5Ლq)}ǍIçEEyʅsy.4WH,T4G9fp3lFBX79|Tdxdf4潵K4 #(Jv(7GbxB :k\k o.I.Zs'M?^Pw.RZTA畸$I&,ܯ@x$J2ծxFx͌ 3;X3̙럅#kIaT!f/8\%Ff-X=_om#rhs{C*d'V+gϘvUdl~] δmٜ pCG>L.*?`LKx:jbC~z܃6w5:b`$`sG(?|Z?T Jղיqݻ>t([2͹^#GAceUT>, x O *n/˷vrԷm6ߺ85fw0~*s˟Q k[u5kBBt yTF4{Ioܵ}7 Qַ@TXbW5x:-?3٢jZI`KS^1^$w;:4iQ#60c7YOFRQ'vfY*w0* M}e7\꫸~>~r2VD[D~8Ydpo<|MJEWdi}Am9cMk u}j/[D ~`o\'<\YŒ+VT:*x|* ڲ&n#?C7v\gTӓNgEؤ9Hn JtN(}u|2 ~408eC@$L[nɓAHH<>NgykwCp^x\.!>]k;#C DGz¥zH1b}vi9=Si|GJӇ(£"OpWfĚg-{/:}viv&.9ܬtco NE*qƾU^+oNbc8@ QT&Q$VUTv6R-Lttu:~P{8+~7GNjσ%N+fg#ǒ@Xw' OV-IlDoѕ:K;7(d[Gue5a *NrѵMk C=X9=-g3R:̳6z 3eYǥg2ۀ~%I[be OE@թuC ] ˖%tm+/WT3mϯDﱥݰſ.#\mÖy)3럭]Mnt fhIմtG9ȱAv3(e7Q] gKzrN$"([@hkN"pQ!p}#(-GőV "S?NYǺY 6r8 k8NVSe;7 rRI^;3[xp.l:_s<$Wz~âuU>0cF뇞HfAyaW&|X`FЩrOݬndm7g~!ҕߘIHn礁z%aLC1ppWor2f %4Ѵ݇u,@۴rdz R\kZ| p9WsU[^X;5?DkU&D9B(f>-'Va.'Fdҭ,Fgm<^ކ$&T^,Z YS6BOF?m:Ce6 q|_^!fz [R1Th-_zP%H_kyb4%ލ@\OO! ?pOAE!@]] 6kPiʭ8"dɳ.k}܌ixQ{ 襼Kk>˥ɭr>G5S@4΅},0BCB= RqP5J6)U3l$|9POvw=篿} Fyb9p`tp 7M@Nػxsh~גj#Y3q!%zI/!øw,-ܽ[Wt&1zJا+'TOrYA@n ONI[7 )d 34/I=eЩ*},H%r[{ !7 ^Ā{tHy bxxpU``\KUvd8_@I^l8u>n~{3d=4WHn?467,zWAey;V-L"q‡c0ʂ4>3I&=n1'c]T7̏~R s>A~tI"ªgrH|zx/<*/i E .!̛ | BdW eHk􊋽Nvy .A5VMPI&{pJ(E 6|o9%ߌ\UF}'G,yfoB-حǖ5wDHu/(,W$0w|>;[w "=Y UA=7e[SWi.fvh( VhR&|@ia*t /km5_M{nZe:V٫uYeq%D|`\j {Ijh5~èFt#Q4E<,q"Ez H"&?(@{`Cs߉/uZ;zVuDd0N;$G54e,ڶ0 &þ>Ee)t^ =Z8OpC!p¬C|p|r b?sF-Z Am?ұۇ>2=;^Pkg )3dȸe"Yˏ"wG4>Xw.G s7WY8Nқr[. 'S>%G_j,UJ6? 綍50¶s[tr)`$,'@ M>ژ̓?"b 2r( @@Nl@6JCjkZ*eo\9O=f9QmozBb3%8c&ž#CgG}djBodS5oC-ˌ.uLE֞~P0Ԃ\Ez.ݸ5 ޵Z<䒻AE)1H2U%ef7' SCMR۰MN/۵#䠂*EXBL7 W4Hzo;r+FF֯v+ًl5 Njy6}>;%gHFyv !B!wkdʠȻǁCANb@a2y4b݃'+I#vqܚW_ AWe!JC> F9NEENj%>}MG)uwCW쬽{?wظL8s6z%rMB϶:|PRrAbܴ(N"[BAR% ߙP-KqA\߁u/<:֑/ޤ;?v%_ ɯwC5pGSB6fAU,+痽3`CR)p76AX:zu .Ŕݶ7#W)pH.?BE1 vޒ($t7l{e˫Ꜿ[m9^)'7#QlkBQ.w +v4vL \Co`[/ku)Nw`Xf21T$5`N7o[A ߼j(b-ˏ8PNEbF6&ًiFh7_->\ut]z5enM$fBg?ZE7G::gBt+*?ZlZkЫ__ ?foD^\|}X>Dfq"ݐw.;f-~UG}{'"p*cS9X^`LwO|5?T;Hv2lGoѠ w"W=(7ً$'@H`+ʜw} <@]CXgw:Yi|Ikd Tɟ~OZ?.q]՟pfrI2dȌt$?\{JˮnGD'(~>_{oT~3KgIm8ꌙ\p0n_?([x+jUܤƦηxX/YhA$9)NHYWv#CI+9Vѐt34= _3w$cI~[,pqQ2C"~Hc~ZxHTlJ?{5 eX㗅,``a~56z6yv董$kyh%c׹x*PćXqCJc[&a( Pkh6=1~4ᵽ="SM99 n[yY{TڻpT\0˿qu),˽&2=]N}aN~2١3כihhvͦaL+`2 xÿRF@4~06]K<*ne0dx}A:!}^r$RїGu=G%b^VYkUj[oW29"xjכ ?y,!c\YɆJ U!GQ3'tIq7^XL&$FM| I.( a3v邯U8lp墪{.St}5*EZUĤVN>['i>My{~8.'R)>ֻ]oIrM lZkcvIgҍI‹~3O mt>Dq#sz'LNNJ~)=t>._Y%UFXn6@{?0C݉ 0E%2 !ʞ wZxd8ʧ9 5]1؊܏NQ)8Q2@R0(m? "fJ߽PDYב>^y+YP,4&yjD ?O@W@ٹH$~YhSPuPB9iϺ:, I5n+WǦ8gaNpI:Bu#TvH*MC}onU`Tbn-WYDۄytmE 7n JFӺ&@x5] a,);lU >;߹c*|X–K^#sE ݀\E^x~/1 AjT"naXU mw3<}qI Щ`].rX́%B%t k2X<Ǭ,Cd$eZsa"MPf.aWP gqNGQ#K0=C #ُ0(O!MslU.wi`gvEDNesc·܏nBՕ=ԽEWj13MH4 QG d)+n& z.̯Ƌt9<ݐr_6gq`c0w\AB< '-ﵕ׭qs 5p!6S("Nq5'@`~2D-^5 [’7cTP& wV5"Hd7e„e@y#(~C.FTdF,(&  nܕ0F?/#`>Zc!-2ƒO>eBtq*(,f$q,B #!b{%"2I< >|xqF}r ͋ VԶYT;Ca8WTd Y=[՘&' m^#L5ċ!p~>+ iT;-3Uon`m=DRS?oBv%gsfrsÜ0` M^NS]r/G |9& qLH߿ f}3D|=6~sGhU[:-bϨVڬ~P],'6YӶ֯xBvII%[uWAp@QD3C"'XŜ Ғ8 \ϿqZhԢragLpT@ vx!,һĄ1w~Zآ{К-MRwqoa7 C88.B} T)F3<̾ h7w~"ɇ}J-`|_ѽW8 !!6OPKYa5E ʷ/(10$ozu x#5 I !H]?5hOc8av‘ W-W W(m}Ofx\O} ,7׌v˟GG<@O3szJ%2ݷg\8mUўhHp@ցiIp~`ǏfZ8N&x^lbA/R;P=߀ Z⦊VƂpr׾ -~0w6 HTٲ"o^'.&}ۘ ݂PJOH~_QZ[`gv۳N7n`B Q?E_xөP`Y.Qsn&뫙Ǜ2c$@~ !~C,_AaҽsC6w1pq r|7أKs5Z;GɴW2#_o~mkrs8ǡf~1n!;]0{˚E9/;-oqxyĥPNARԌϝy&`_g]Bx`gCeԛu]]-$) M#GἿ>)=i˥sf0,{4G;q71U0 x5?{I>f̓:PM,1;.fDwQv}9guw9)KOxF(y8Z/wSRb"s"I1o~ ~7˟ⶨLm(B G|bj$~r<47{wO./U mDrD `#VkѺ{"ˋL,7.>%]rO7&4{ŴS>]S,yh$65flDg| Co ֡ ,Kw6wZI$J|޴xR'fR ]FN{t{"ΛMyNl[.?ϛ|̻ه[؏׷KҳI.'7S=[A.pyd8lڟb~Ql&XsQuJ<+P K4;Ija_HO!Ϭa67 *Ww6A|>fu^]̲w~Q)xγKRJ<*gt=LВ(;T\[뾩_H FjZ\#\(e{4`ĐuޱӂԄD1xCifQ27c?Z]?{JT2x q.}-0 q򺒙aۍ{ Fwb3N1=,?r3!\j,؄~kcLZdqt]?Zr3*m%=Y$I:hQ hNNҞPW~Ch|q&{襾N9QyÙBx4lTAвs47sRQFj7chA{cƼ9Χ'ֱBpFNLSo Ǒ K^Z?7EBSܛrX z 0p.fYߜ{e,m!c5}; Ǐh/ cetIR+DhmGCDw#3mC7X*gAB<Du=H?_$dO<1rcέ^l״|uk]UȻUV]'GfP\A7z{q[xV]`4Ճ_J W ΦoNzv;Rg/E0lba̠s*{| wc'q-ئerqffch# TC1L8 粖pGoHP\+yԷ<':R k1/1 06lxvx#AŐ )Sʉ_:v_Fc\lC A91V?)~b_oZ}UzvuBMPD$7JvTo˖iͭ(00ݠKҏjc]ٴ4Eh5NfBclPa":!f`SaCJ{U2,iBF71^J}20--G_7 }zB pțC; ߪP$ cKZo(1B;ƼŽwv_ ,?rR4?ōei)UwE ¬ray̅TF {wQDȻf!?΅1eAdX 5+<8 WФr/Pz;O̙9?^Rh_cJ@ͫmUX%rd懲fk! Gq]~Ruuy71NV(a]]*5\*>f[bi}B dJ<`yuQ71WAq*XqXRT,J:(p yOViZᙥ$d~dyINĽ ZX0Ea $R HG nt*BQ z3-[i=Ʒ{I!.!ѿBI7>>/00J~"w%wW)Ax8zE^JhelIa4A0B0-lp/K*OJWH^In騐Bk= =3Dz1#}2Q Ғ2xRW8qOq(M[놣XLZV"H- A\w۹b10-W@/(Sme$ՑӉ̑* (12MUE]QEHwAULfTQ$i%fzCtr46]-(hƈ!ݛwg C ~{ZTg<*07) Q9ܫwTgkۏB ÒVJ1G OFR "oblzd0ifIdKcXˁ={n$EgZ.~pqc1#yS@ G6aXj쭛~'a~oJ$\K?[r 7Zc"eq 3g^-@$;.-/h|Ҽ ihAlZ%_35mcö&T_8ò QaY=lp[e0De'%qA W^ɐT~ǩ ;`5bie}[+A9-Nm# }_0Op>Ηocmt< ']nrf,[ z{ 0(7~WoAf1Q|cƺ&^=1{G^Lʍ.oI*m9$v꘯6xcR=@>*t *!or q~Д{ϒ˾ Z~;P/!C%ffP(9^ oêl'GsWˉ]_o̍_2Vy {GH[ "H<NK`1`"Ovnqn[Y-A怄T|ӔPVR_nZuA肸+5bi.EPV;g?{]CjZ0(Gyw~|qi?p=ԝD"w l rWlύˆ.Ef[۠_fa383˓G*و̢*c `>p@-Q:Cgx FaR&waYGD<5ҵ'6 td7 b|!GB[a ogY>jlLa"2Hz.X+*tkPJDdXP_j+_gFz}+{z ;Iۖ<b C\CI^|X5m_mYuWcL4qdy\N5h_7GDŽ1Ű|Sl `߁*)&PVݞ_)OjwDJtytQ3Y6ㇶ˒ "Zw9uvf0"{``:f'<0 M9zm;29G#Bc0iEZ"-+ybSTuűͰ Bة!1*A977&HNӌEH'UUK3*zf:*}q20?x{1+46G"}vf|+XА%+ʏ$b=.J#cy'pϨ}Uϋ H)>d ^>/s0k|#ʨJ} 4^B'k- !v 3'4Qs݌duq$(Ӂh_NӎV){=cYp&䉟2eZS'4?[/|G/r :P>AI<׌ ڕ -?OUD6'UVߩpz&%/r(&0g/DE{6  Chu}`A Kێa''[PlOgR2ՃU/XMxD,94g1A`~9Sv=*MKuՊ_cz3t23rxYK}&Gd{b;u(">Yn؂1=(F4rpsd4m5 /2>isKGEqǘ( y7cۙDě /V=$/3ǽC!n`.?&kKOX<ȣzD_hQ "2I)򈮢>.1aܻpZO_Z+]b3eqs@q%oKOy\Ak'"<̰>q&w9։0I\>frD!6C BϫZN6>эBYDpz6H"#) B: Fl>iRMC=l{}чzvbzܽ/Nߴz=Ttaڒ0XF*;|O#8_53LhhCE8jsR;=)?&8%*=QJ_cuyhTInB@z_N>@-1,,aL}DXgI:!9kI:xHOQaA_a/X}4|ȁ8%{yncl):q)g;i4[$q_j-5TrL _o?z6vt|#M(w"ePWDq U] 93Z->\R8"Tc_k˴yT)Ck!aQNH:P>[xڙiL87l#K]օ{CzJه:')7z:X$Do ' O416|KVh2rxS_UozXw:o߰Zm;>ieW{]!JU39^ӥmmKGBZD{9M ¦[|δEp>RPxHY[#.GIAZxp[ϥK,iјl. q޹b9 i'Q]OlX]|$8a) >N3T?uyY' PxsZZ1~XH/G8`.ƌ6u뺛d?cfQLmeqѭv;~Hy"׈<]䄋%#n~*\dF筿vo5Xe*jӢciyOi`J;dfcDW"Ed&0rw~2hl9t˸c~j:ǁP HLJN+yk䶲&r^xKkC03Hnp#ؿF5 .·?_Om +(xGߊ۔wTډR]]{!4܂X2CZI;T&k4ÖZ=`xP޽M}09wx:ٞѬDF^5uC{yMLJX|ĬKGv b0/AoAӒl~k>vٵ8pݧ+w$ɛ/QNi5uJK{#==!8Vv*MƓ|껠W#LR׼mP8&1-TJd3?{Rlqq&~%u,e c_s~+ϝZp/7ȥqfdMrTQmF:w洀zh >c`~o/ ]ş;~w9"tV>3^2C8R{E/*?o5?)t ٷS$QLݨ7הiMD<.^V'ʛ@ ,9>!h©c|w 70yY\sLuycl<^+(rwt0O[y$4c'Zq-בG<Ni:Ԯ%v'> Oy-+$KL æ,fW'Ƀ\ Є:{V]zŚ=>%<̆9?shpMc ߘ $w")9%(VtČR %EVkVIhCyoթHr+l^! o(WiK`9VN@>,mrM x mO}azĒ~-}.GBIS}KO_ln,q \ .)=3;| >j5ϏWp0DCJ1!o v~{㍛눒%';QvuG.5Mc)TƸa)Wg_ȐOH4PbZ}|$'DO\|:2p:Bh4 ~mW%J 91k(ϳs뗽MrHhJ$2ط,Y)VʐM$`ڇ>wP2ubK}_@JܦǬ8XΈ[]мQÞ;U K9}Fd]ؔc,8M:丨D>i7mkʧ$O@ )pg%7MN=7?Pb K SWBAL<=/͌)*KLRnsJGȝ \<" q#K%1ĞO`U! .yxɤT#nkåZ~\[)m K=RMjNG9RbƶDײ;a e8q1S#i}FEq/%̱A{\+Kpe>E\o7q Eߛ y03s0W:59<}o~C؏#l(!tei*#g 3?8>_/;ćHpWĉa;d7 aK1 B=Ռx' W!.0/C:>1GGDBD>R`D{e#+;g6/5t>vq풆@mj^G! ЏF̥,E%٩S}P !2 [8$`nLr0;ڹ>g@lop їq8a5ʷ5_DbQ{PiQy}M !ugrW~,'VG\} K%M+Fhy-'ٹI+,^|t<% Gor6#b!vȣl_O⁐X~V.}}< r>|vfy%D.O%1D<`bmn%gE|Ν*} N w6T%«0gm("vP៎ފLEcZg.7_&S;V9DYʧ2Ν@uڲO]X$З; CHy?N@!yY~#3մAk2TĉPEJk9Xh2trN,@ rV54[5;*e#Uy1j?;Yj e+_".;ɀtS2VaSE|~Ky}{q4_p=ՄI^-VPVLYႾ'G޲Ec%(qa٨g&6zӓ~r~ZHu9PT(b̏DOr԰Tgʣi=NJOQ?7Q{/S-c^qN"Eq*q)D>D~7Zz -blTM; zZt*>~u[78F2=ar(z^GN;\%֓g 31\6pϣA:eb`{YI'K,Wi8:3ݧx?h.5ï {DYjPFWpf ]ܲhmK[)cZn-O%\IL)_CR}e 8@gѕ8^R{=d>fw'cʻn͇4P:4vw_b_Drrw5K[5߿-vi:lj4 y0O6eS"P}e֮kwGR[`ʝv4-VM\~Ȟj[Q ʇc\DRS{A#G2iK帶b-VOnWmRX@߶AX-4)݂ӬE5?\|!s7qn6UΜ]|+~e2ti+UX{M: 9fҽ;M0eYM%FDq zok%|`^v<+Ief{~(Ljj<ݕ~vkqP~Hr5'u}92Q ru-@oN Zޠxp}o/狼/7H:e=$/;sH>.%µ>ߎ(6UyԬ}{l߿+Y?,mXH_ fIR ږ*d*Q$Eƹ[*!$"]h?@045ΥAbFyLH8Һt|ihz րQ}NOLƳRJy֟a9J,#ݘ,ln$;uJ/=Xf+5Ăc0v Pmȳje<F7W)|Tڋ2QH-I)[hwk=8p22s$ikJOt7V3moՊ>3>5.Hz#}"4@]UB A9kbo|kR a/˩[ſ\-L`nڭzު88lo::H3i>s9Me (R̸(]go/#GQv1i6`gnc}*[XvgՇQ1cߝNEG\Pn%z hMK |4d@͞9EF5%}hf}2YwGyl%(m՞=4QrMAB8QaZeR(,V|Z (T*9@x n.S9MjK[Gus]z( 6aMg\uP&iaxkv1iK+<\-OI`#WKA|uq_*4W1 [+gͧDD}CVS^)AʺC)_U"Jq3^@MKѡgr]BNW/~zv~ |Hc ]H${|c4/^ցRwT(21f<ʛtDI(RTE4:)\ֹ7"[é,9 {ΜxM6 [P#uJ}f+=ɗ!tVV%xK@GUN3aI yW*Y:KiX?@ RJLGy).(I~pGv-$wʸs.Lb+FXٕȢ|Jk׿Dբ)t{S>mr~59P"{؅C@ȷaC>Dm[~@^'Y v1o:HxaVDfgVy ;\U\GMt;"ݬ7|&G- \6dqV;=:qg/seװX@ .P/?+Hֱ tb)a;'bF j>1ޙxf] 1 UZ~C8<`9*L"Rf6iX#Ú~&.QDiys(KnY} ^V-vK Xk@Tf^8`AS꧲ԶA ㉻*.@;yb":SyDk?t<}> q,FgH#'vu2+ԗ{1OEn!>gyGw~RPoi^r (~>AOb* ɾ|R(DfiTMWl]R{Lιw}'FS@d$d|*ϖ&e!uvoA/ߗ?_F4 6i :Gc(f8WF7| dg1!xs#Hx|^%Sٰa\vRlD}<}Zet+-DY܂Hs_GI @8ıϾc= 0IEF 898I)(DUi׌YR5Ǡ"\MAڗG{88?XFXۂO`Er|!KoscѲmU]ksUYQ!")v%(1y>ۢ'wf#E#̌/A `ߦFvU23A#Y5L跂0*4Ʃ9zG10D9d yqzmǷfEh./$ 9JzLSIKz/tΦN<,O"Yo\oI$ck9m{|cYOArP3A+תU}&q*ǍCO]?܈ :5Hv#;|70hk:a@;"ā6*}A9@n_9׏\V9R,Qp&-M#CJ5'1v!LDp*׊Wq_W$+"PO"<Qѿ9U,?uBnɑ> QyY(E><*.Hu1ei/oIAe V7gl70&&׫(Fn1Л"/;oKCm?#]+%^R2OQ$1]JKnH+!0tN|;@#æMEFI ͕7>iCZ<k}I0rhŇD/>)4}:rݷ?`ſ:$fLUQx ox/dߦkGվ[3n`bg? 9%Pj a2 ('Ζ.00Gw-v{yNbdIl$~J8H2T3r7T#4kCŕ) w֪4C|apV1u޾\]_О$ PRm+8u8A_X(ms TI%?2+` s3 NE<\dzLScfXRH=xWC+1r̓i{LArXDߗM\Ԏob@->J' tDa(H5Tj<ǃ r^.>>E>KZ(EB$QgX[B0et*B2QqͿH+fC@oF(8o+H0&`Hx壷Q9sS9~ǼZx k/{N';PsDܨD* Th%[Ka7fMD8Fx@Ut72}찛D8\můV *Ru oIpn jys۸J&6a`8:ϴПІd0 3!6QpbW>(n.|#9o&/57io=ynX7Qg8\|O]LfQB,+%Y5 #X-lH={gKámw3) dƀ^ bǿ(Blj#E7*<jQLg%B ec޾tYq5X\_^~ yNE ps@dd(*B dL'/hM}X6vYyV,XH_ވvF!{@xkNJ;!:>6::((mz> VwFv~pI_1'."OHƮJF&aD;мy&CׅՍwACҒ!wVE Ռ>sgޒ9u_}aDÁgɉ9;a%g$'Kl.XZO4b^aƹԕ-bӉ T|3)O D6?V>yo*h_tq]@< O:<0k=@?/M41KNvhn>*qNsH?`]& 6bx7/Ɏ8t5߈hNKjټ0mHnxG<'4=NtyfOԛ |&y+b*o&V㗇,h;[/z#ZO<>Ⱥ|[Q_- Z7"iWTƤh9ʩRTO6MLݪP{0bN!$/(7tq?%Wj$F|abgnlu-v{ǝvl"R?׬a@4S)c( *yX0Zun%O[-"ك&.eavCq<'Å s0w]JQXgG-2Rӗ):03Ydh#C[S=HvѡL rWh"Z>9W8nZPBcQ|8~:l8gv=wauάd3ة͹:H8V䡨|8ڳfeGw=_,ʙ I$-ߎՓ7uȠTrM=mijlVU^dج #kmP=$?^v·o]uqYCT܇ U z=%>ri/GQK]|gjkwTg;\v4ؗ6<x| I=zA"A1 40k A/sUqTk]#D2dmdqCb'/;WqƸck^E^(fVhDW)]ߪHH>ĿAxs]>ccy~_ɀk Pqťc6sV@pQv8Ȝ7,elV$` ~khi`}gh46mDIH :* )oQ*1%uQ6NYL/4 YϏ{՘Fk%gQhwouQ8*#x['^j: =юhM=N^j(HḾ3dQk8+cR|`hǾYU'3`ʹS7i6J*ګv\Ap+Ky/?)&)@1+u{Cl!y'4o ξ'O{̳f ?#9YJK^bż:nO:hd>?¾-#8\_Ps-Yh%8~Q#e6Vpjs| ~J 6ۚW+gt/}q}lTh.hqďmU] >/ .f"'4~5& t8R"Lj ;H9lWhg ?HrۏyS{`}lfu*_£Q(2V~9HQq~2ŝNPCip5 ,G:xV/sV"lvăuR~>HɁ_֍^LXP5m4%3ٸZ)k5nGHq`zXn=PK(s[k}Y< |' qtXﯤ~[Oќk#6[ rr]}ocl(mEZ_DuuR;_tJ0GQxof(} i qj-'r@}U+\ t%fN1!1ƉRnA;KsR<83  )R9J9胍`o?2,y9v5L8Q 8O^t(~"W5U-`d;}!kXk;`btT5a8&sb[4~`v! ޿)˄x!Pm>;XTc+F˚0V_kX.jj:Ա gcyB‹J׮:H|e9{LrŎXMX7ޞ/k` =ÉUK} E.`* ">>g潖\1٦BKWɟz ً>Vֱd9q+ AK;?$v֨ 2VQ$wL HoDGd:&;J꩖ R]vut+ 3lg}p9^j.MSm~gwf/wj8 mgi),NoS^qׄz$nV@O2H9򗊆EnY 1X )'E#~{ENxvuPUۘvq?D>s!p~C,ޢk35Uz֮_D \RkIE]OO[o)r[x]IB'z 񢱎oehj2n[ 3U)??⌹VfCc,A]]卖E }ƶ7.n 4 mi H d>=5dw )&SeZ~8@Vup} F_͌Ї{*mJЋid޳&_ȿ'WM29_~ʦ7J/FPvOAׂfo]LHI"`;`fM+qea(G׺f@;E{xCfNz56T WoRGnS`*P1@V &v?ɂҙ({<n ]|B[S--O%Bru3SX\V7B/sݐk0iۍ,Ld ^CcnbKaCrC_c'.JRXz5^7^DnGd9,'_/, _G߄kΏ5i <&A̐`".E,z$ 4BQQ~W]ȇPY|By%} {ىG VC%ُIU{rnޫe- B?Ahxo erp<{I)4 !)%\0vsgj8 y2em0K߀Iǰ*SolK>|ҡ76+1?6Uk|dXe~0=rm!vg>BDnmܶ'TPb;}HV$" wj@GCl|]-E""Gqj qgCkEԐM!Yj[x9x7m܄.u|(6XS 6*?*Ai k'UY UKK0'К&:Ӡs+.]GFSCt|3!GeZ((9폨#KR%}3±e.hdAov~M1Ch^TQ:11V}WտuG<}@iՃX֎uv>/?'m;sFxӃ/9[WY}r`[(p^6 #waFRM}}iDゼyp~8(gT|#8U|G,{{=xל8$SP(2 ~|Kwbw/o:8pJQ, 3#NlJDL[p<=W<_B$"bmW`vL{'Z ַjyҳI,W/L{,&\guy=w ꧔@Y@ TcRym"dبHMsP]lXVw06% ;^Kp5^-4=vQ흾ɌROk#ryESg*޹xCqEś#sc["f! 68 <+f)E܏e3=.hߟFt@ }_ ePJx#kU z8Ih~`ߘ,'jěKbY9a/FfH^ﵥ ÿn o2P)76ecV~t/=KPUmt*3#zfV2y>ۡE@qNr:Q΋]4jHy*Cݪ.څK4C[lĀ7RDO3/,Vŏ)WvF=ٷݵLe7Z땵\p &Âx_k̊E_ֽw({c%VqԞpQI}C0JT&IZb 0j\N-2pTE!x ^_biۻ&Z{Z8,тvn2N4X5l(9֬XgE9Ɉ/JWT:/g4W;dwTV[>l8u {|{R,( Wi0S\d&' +.]kr1+;4S=S P2?vn0٣qv^EVk`yx1u@cr@Cav0wM O}[=)OoO™%i%3mz9GrTt7`AZt~4*(p'LJE`ҚOH\kx%_"[4m yBm?aEa;)rCxs!v.Úߣ9u-;/EqNZޫjq 4obmT4rma4Pɭ5ndj똋 B[4Eti}~e 0UaSً ,Q&ebc>I\T'&1CAvKB5瓈nuV̩laq<:-x:pΕd)+a`R 5<\52t2ǃJI“]q[]xYYD!10 L9p!;HnԾI{5^^Ui4DԜo%>%vḿİX/+!PqG'E/C Bv"#ea, 'q43-T0O@JjR>zJ:Xvv55G!p1SE6^.S`˺ƲZ{aCH==z1.UB>aRٿ; ~N?#B,Lweu+9)lHT9t7[a7uЕ̑Qn r"V u/P[}7&Bpˋ|_dG+V#"1?{ r^1vG_2܇T*675oeՀĹמjMhꝐ11 ;3DQ'hNǟ~)dax[҇VOGutY1\mt(~"Nš+=y;6sfzh CsM|yMXHFLz~=@8zpC;zo?pr\F̌aI̯F/9m&Okgh6Fs94'"$xwEtHgSx?v-j?:3jx%;PiU~~7Q_˞~:RQWԊ(vj'=ʿ}s2eԄb(d0ҟd[-KP9GQ F*L_ʔ;c7-*X6}x AM|Ga@FK9"M)8, 80 >֑2L?Y] dKی<⵰P1LNĦf6[y,ԧG(( mk|&-f$/noU\ ЪoGb}4v|H%7'OmG{g7/HQI@lSZvK`J^]H+~9aVk"R_#42h 㐝T)J4,Ԑ]9R'1St:ph4%=O3%|:|^"#(̗Nd y#,L }sj!Ji}j 8o!k,20u<J[X.f,Wk?"nK$dƜ߯j1{J\CӺ / 4TCz!8Bp~U#8]r˙?]sk ,!:g#z/}J7|MwrJ=^CNbLtLaƀa1 \{۾[b-`ެ"> r(EZ2Pؔp}x=9~ ] h@esm:/BT48 "/&KEK Gc>O'DUtUPlcE|`SvqRPO+h. 0jlJEޤ Mx=V7gVXPa݈[SEIMr|eea̎p! et8dHV/F HwGy<,$2b(FZN^ѸK^{L |S X~\Hth{c}2#\t@ȵ~ 8/x`LuYSŤB=Ut(W(R#O@- R}xυ64&O; ')1cEE=6~pdAv/4<}vn5 c"/%C@|/17-*&K bk?V/xGCrrC}މ<6PnJiڽd=l=bB_lhg #Mm!;$so`^G VO{7uv2VFx{=s_.M5T|hXU4φ 9m~S?ԏCuG>2[+@zߺ P쉢D VkHtR}r8g!\|o vކw/V픐x5Cİ*P_f0zA ] ,Ï`OfS2=,ҁ4t|4KTi[^v_ZP;(Zz=ME ћrd bH)|. F1 eMlRn.$s*=`  q\< qQcQslczh\wL[_}{쿸}V%C0MvWŻ4y;t L. 'SZL{1FzaY5 SsM;,Aэ PsۥVʣֆ(J`ӳ.pI]OH8^B4\iss Y@q{=` ;b9|fn Z:ڂ[8@`FlLVaLۑ \hPc*˹K C/&m.P:X'g r8 G06&q|_@5e hi)5ZF d]>)h"}Tg1˽\j~8h!~OM^h_ԩrd\}ۭ/ػj :IL*u`^^ɟY'C+x{ك)\Vs :J=kֲ̠h1yLT`969S5W,NEd`QJKQgod?cݧgmL  oE/vVUH(+7CD7V/9RUݠX } Y1ׇ}r.tC ex>}Zd7tHxN39s-jgoۇ631l>(%m]:qsE&ƈoƆѓBV섫?z;hAݜuXNC R c^q_X!qhOi]"==ɉ܈R7J*~ax/r24貼Q 6g%I]gZC$1p|=؍=K.AGg58s@ T:6/M s4du|62 KTrKxTSrβ n׮ yܕq [;DƃA}W;mp*þ s^ZnveisGUخz8/ A*4ac oMȃ3չH808Q Ğh*Y"=(yvTS,l<|wMW@+dl J'!ж5Aѷb I%p+5^c6Şczo2qFjPH2"7$;Q{:hp;ULOێ.Y>ktb#Boz]AUX1X3B,0p!@݌d?7Qu5Qa@=9#]cR]( MTw6[ޜ}kUpƂHQ:FM|%0~G"tC[۷nd|ݧdW[ź2TXmk% iXP_%7~Wt*ZF( Rut2 ;MW-5)ZƟ15> S*o܇88ɼ,ȒmZ Ial%FrSgɳ$XM"y1>ֽ~e/FSk/$rO30vΥe{;s!)zoHu.%8vj4V!\ Ϝ䡛hAza~Lwc[?^ =~*= O|Y5B(JgsF)*OxsL">?5 )̒9 a5Eϲ`l~u&)ˮqeVW^nug #لء M8`Vc,Zib0Hqv3?8=϶5l[AÛQ&4Rq_9"wSxAjdjC*i3$l˙LB.M`MT[I7ðW!&rL ൙?O nr+_g֐ I)" =&:AH a4%tҚLm!, CF`k ͚!*9$GƐg߿`6ؽ1v%.ǁ0;{~Xhg񖒘Ԓ)^h %[k羽P vYۄdlseGZ]Z2cWk \JJ>Q=/tMaQub+\s7nLwEӪ芀fD$!gF-4*+MI6<@ϧ[h`!1gǹBbpRMT0-e[/2m zL?|f䣹T_4oϔ6]o"|I}\eY,Cb\'jGzCStVPz51}:Υ{~(`H!dF4AiNY?u vMSXA$ dL k%=rij;?84< }wz؋k?6cn,l%A1= id* ~߿4`f yS35UgxG-a2^XmXx)5\@cFPkJVs,-bˣj$ܻ1(PI'bޅ77:ʇ/΁88 ;"EsA4QpG$ތ{l4ԫ ru@+cU+-HmZ@b$'*V%QۮA N7|ON"АcVJ;eqV:@UOrH۞gh K4SqPYaH>WyRq.Z#0} ["7Kk<-!_&h(TnkYnYuܷ_4slNZeG߰Y&}.9keײtفD RP"z#%B=yHcľࠔ6M0,\Tonʐ27<T}#5&S\48i@%j`~]_^Hgig*Lg|JF1Щ?`>pzq ^*Q+59ȇNJ xn$M< 9K;Fyqu,a>$BWy0 a:-mՇ-q4]8+sb54 iiQZL {eEțP{TG9CsLX`=kC^/@V5}s<=oo]nMʢa 2iʟj"F=o(| ק+$ o? ߖXhK\];Бwt X'CѸ߆| Zk^-Xk[TAZun*;({#m:dU 8.Lq+{1ծa]P5?2UF$m2pʈ #z=5cֿ!kk~pϰUy{Gi.$ow:d=N[GKzaA/ڐ +uԧc1DS$Ru,C~ 0<φɽ.Wo ߗ>K4K֗-91E(-(܀p@.TPhGAeɢ1 (C4.AǪQ 9 Ӗbҵi_M9e~+VM=35 rߜY ߧ*iO9;+x:f'^ ,aėf%QnJ; C{(. ޣ:6_."A1mH ._ {(DKM?k.1!5gmt9v1XN؋9}Rv[t[g:l\#:m=˸3#B5tTֽtۗzwXۜ+5ͶK lGAc3ghLVv{iqVׇ<#댴6rzGg7#ztC鷸VOq'ěql׼劄|Dn8+ߨ(7={<`#m3tƃ"γem+uMd*,f$~͙.lFƟvFj(urehXe8ܐh)8(bK!V\Ƹ'mtU5?R+uf.$oĄs_O] N2#4dpb~HO~fFHz#Ho83&̑Q]pzW_~` փMڏ:QoxxrzOsXYK$>Ai ق6ɷ3)2 EZz'޶r/iOXy}7[ChOpj~"`*!GS TU_ZJk"Y3~+g `棙qt#~Ҷ^  5g6KSU+PtdyPfGVͼxj+ߢ\CWO/>h#VBtHZ L[UVCÝ Х ?M2Wd'kR0(R:)?iʼAJDU O ai^ 707Mdjϯn)~NeO[&cPŋ!LՈج9_twl.u= >-B/ͣ-yiB50Q]Mq6$бb*_ΡF#I7PytýIu?/hL h(p`Wh|G裛Oƌ8$Z2+A˺z"SC8mv*ݰ[Q%֤:qmRBQD4eM5%<)L tHtf}{=o@M_]nZ;VY}:Slĉq=?$hTs^/1f?VѝL5vz*-@q>tcm؈gD_؄ݬs;.u%N ʇ$C(?/v~>DRQ*ƴ-v{ &5 `"/r,$ı#JwܲrOdL QQw= Ps_܉_nDQ $H.#%ʎ )1 uo. 0I bz-2>'kz\8LeKb S_S玴l4 ٺf]+y T|߯ "G$HP?403WFz8i{"PВ"!ÉHoמv KiuA! {?K{UoaMKJCg{ 7 ܗZ+:&zOL< x&Zr#|5šҜ@W%\]WʳzK󒴮aLV6#0u]`⟰]K8LPB I|L~ օ4rptd; ;3E3CWuHxHSzP,5q@M}ܣIC $$V9,j(ĵ oo%Z% dެcE@QW89h !9B O}Gڧ)Yaso/GI#b!ż$Ng[<99BH#>:Et4 'Ao: ;E_|Jgfѡ1M-kvVҽhxkԾY #ǖw78 `q=Bsw[4/ X/5x"߸1,fVXM-}n.~lQy (p/d`u%]pG^8?39Cjd˿욺yX<^nY_5 NjDnK(*LN0V 5ȟ_]WEcS)@z 2D}#֏\ۉ1 ~n!XDTXC<Pb7y G:s]BN({U}kn /^񝗔WB!O TO˒X[͘$=  P1}fϷΒia\__=/$P)ahRe%?*Prłic5/c`vK,ׁu1aՔeإ1ݡ0N= 9N\Hl[*n)q+BTjχ =_;oj0={]=zt>eMEʉg* )NWɘg("ͿzpҩPS؎Cg0]K:-GJ0h\7Ap%UUgXT}g@47Rӣ-ִ(0hoTa}P'9iy }mQ%=T >Y=#=N}L'>.,7q¿ .ID"MPu}z@t[n趫μ(+q:E-UGL:Uֵ[yk`kϊJm\ZB~B S›!P:ѵ7g/(TCԵ}[g~i7/9U-pu\0|qXg('}ܺ_|ԒW&߳ºg3wrW 4[dy߉]q9t֠)ZGuAYPĿu@Q/ڋʏINlc{BÆmcЖdSj6 6{4<DbDt{>I~,r5 /K8sڈ< ~I_*1G:e&U8p%lSp]eq߷$.RBbzzVjP-B>Y>9SnEx۲MPLD<'ؠ@F{xWZow]ˢz>LoQDG3ǫﰶ ZBq0so66l,}<,f82!ƿj09p"4N+,mNlsZC%Ń>@%?c5vkSW]FIcпva:I:D?yqakN|~zh9أt{o0 {_{b}%;X[}O.F:H?S.IJ!#9JlTGLIUX.g#=)0'a.ƒٶS/¨x@nߢva^~}l2D6 ʠٚ>sMFF3" Iaseկ"~Ѷ!&!61 Y3y<'ȳ*{= Ȧ 2-|EY (}BsyBw=G2Cg22Y)f|2B}s\woRYS떿pUFd 2QMwDk/O `3\ðȃ;dHx@֦Ǡ exaEG9.LVs5ۍI3tK6O: |#itbфja:n LĶi71QHɘE OT "`2 > ̮IQmRtr8@h߿ -$PIKD2G,3S?VYp D8&ڢOy 9G0Kb{s">BZ{DrJ:H}paA"1@`z֛O $"XF4z%<؀S>D4u:3yBE8NII|gj-'_$ wދ_[F(+hK2_&*!߿JqfPF0Wعҙ(_lueNiY K coD0r>dW Tf[|ԣx@~;Ɇ,rWk=5yy" [/ТI1I T-!Z$zLrkZ*!H3տL\&Qx$wn{F^yFl}ƕF0K3ҝZ^KqxҔ+ OXDc ABT>G4]IxT%mqGSOר+pId & +rosNW8%LVkXҫT.m6=,Q\LLq9]wc G9_R|ܣ7hcQ]XH㑳7 \ .ܿe;Oԣ|ZX ek7 D~[t S@$ 2G=oGHmad$!)+bɥda.Mj8~ }>d7 ދVf:n/r9V[GN#+;8*)`;vg+|QH#V&3Do.L0bBvjXᬦ0h:չrWk Ì:Ў_6֭X# m+[ o;kܣ@t0b&P%ΰ䷈[>Og^STI!Gʤh6ttPO,x _D{8RGwJ ~g"x}Ҿ FtT' >{r?fhʚD _%DKEνJ"WUbx<>nܗu7c^mgUtf a{!b|`3Ce]}5'-H~U*{.}`]T"*t>lw_ ϊIGHǎ@%3AZN^z CއF, Dfވp8l C;ח3;G*Ko\ j!sZ_ \.q{rHs2֧`1c}A,~/,Aa#A;/PVf)Y+htw7Ejg7gS]ZtHB{_֛KA=J!ŸJB;8sAWq`j[8"߰\+q7ZCdC̝~+u`Cyo=y|݇q9苽k7l% }٫VF~U~HA(Ql6%U8+qJ!fA/bq^H-mG!^G|:-}&.IXw<^5"VC\㡸PʸR{>jGb<k*B>f;9*ͮAl IhJE8t@)^SZUiM[ Nc}@ 8л4?6['S&7my=4ۀOjvފe?]!r`_rP2FsHC-"2ZB\Yd. `~,_3ȟ%+sʹD4I"I;X"?TRO`ПC&>5EYBMs< ކ~c)0q5oh+b5&"<@2]kTP&$XO{U,>IɎgpu$;  p3?YrbE+o^&%\wϿ9Z\6e{l8-] Ïw  f,MkM5 )37Pg4_d`6=Hi0IT7~n E`ZبX>Q }+ޠUځ_w.'3zfNPC9_qJ|5i"+l2r*-l~W,t -=SB^ .>.Bc07ɚÒOHmOsHW]F"a[yPM򀣙ˇd[嘯 9e KiGF{|<}yL*; #Z 3]ob:ġYW6yynšñ5i=w2s|QŖs/C`<-3d*9_+]mNqKpz4bл¹O3@i-.=]FZ|&OR{(O\4ܬL\O1Qc. l5ŗ U>v=S$Lvc8{$EVi43?.l> á74''(,o tSq*kԫ.,gFYKT܋wbAl_~(_!7z[1w%J~0K%b6ܗ';aq=Xˁtf))05:n ^ʟGTl{/`Zuѱn#+z4{\d8$]'>*_AM,>UQV[)r<|[-͍#m@;c<շU.2$Q0_-<-L]D8*Z~n-q7g̔77!nLXwa}U=-MB0x.mwAқG;ڈ3c0w(_DP,Yڮ~ #@DAD(tSP |ƾ7" *u[;jեւOULG ǵݺLmėuvqM ۰=0S$V*jtq-')EBHx+ Z:2*SzC2/I}]H&ΞQW@lx7i5T"ru 9L9% ϔA{ӳoGNg}V/ƅ*5UBoBȧ 1MGIQ`Vb`B&=Šk86ۖ37J[ Wx7zEx2mv͆Hz֤Q }C"~fd4 K$JW~)-59$WBcA+hRu/*v9EvXmr2U`heG2O;PG!5o<@ȺX8~S0ћ~67&che5CY\oGſu$O7\IǵۃǎYfA0>T#T^YT=a[`!:X9qok 7 6'PGԍ/rznnos c,=7B3ENoxe8]e _P0AiɔH77wݙ8k?7~á~>iTMvV/D 3v2-q84 B>'$}܈WvJg:ϣ(R8a"˸g%a&N x-ڰ3Ci\Ll lNc>%k+SIw~9z=wjcmՔCHz [z+4^⍦!W#BBi ෷/b ]DBʚ3Bz`]s̯赟PA?ɎַyvB'P̿(7 =4-I w{-^ƒ+O)k>C*p @F15c49nDŽK|q٭5l|.%%DR:)c]Lw@s&PDJW UzJŶRDg L $ ։;F ~"/éi9(ܰAl?s^cOM4e|1]_P' b|ګ֡:!W=gԝf,UEF;Z;iW H"K%&Ưu) }K6.oSCƨ>֨2&[r`/Eԃh&Jt }DG=1<ܓZl]/rZ. ""q~m>g6-&MiFW)t@qء!K߁1Aԑn_{սe6bk>>] ʃںJdz8,AD'(cÍ]v*ݗh~Am6BE)D%]4ԯܶﯩV p߉Tc1F. Ը4(?\^Qc)\޾]@3y$76J]pDC A}49fԘW;U.z̭)7MVxyK P;!з^>l8V$̶ j #'CV͍So]\LJnVQH/q)Xi{Dpjܜy')C|E5~3ރ,JpHՀc@dDZbmGC6N{ػSPaoK4 36r?#7]f+m7Q"+BL1D@'eX.p ?5Σ UL[m~ ZZr{/}} `PJ}$W#cpLWHǕ!םs\#Lk3<y,q}Iw?PYK=xa 6nMw);yf1jV5>FɼvNBl[ Rrt2ErM<=b|e2a5SrBZqdIT9ڙUʒ#<$.ME`T IۆwPK'3嚇Fm/Bs'پUdx[d}v5rJF'TfR>V&+QDU"Dj ~B߇fl/Wo7>W+yX!\0ZYB;cF0.ϝkw:vrCN)ꊑw1JxNH5y~8g5#\2NL16uE`ŽldOU&:9SDץ!HPXp^󛥟ϫdUT g[IwP0 CunE#/z"w껍g4>MM)|zmFVal/FTAcOdKZC(Yc⍥#@و&Qne$(ΫZf0>rl'$i1$o>[xIqkZs;UNΆ-PGeX|I!Dm mw#أ/.c *U~= KuUehMAS`QFM}*'޷]k\Ėn]ga+@Ӯ3*材4/NS fՅ[hI *Ȫ-~)5kWeݐ#\RD !}5x{km+˺n%ϼ!˶%e?(PP9UGϪg"|1* <,89F/5(QeΩH49>',1-C8 @#&l{&YȚ]ÉC)ZAƱFjkBW{fii{R~ ]}"/ޚ푣 kG폞z8͟%yj-M\ ^?rqp8#>#4~/jSYj7E &_/'}}Wns|%.J&vGwXJ#VǛYjlA;zqO2ΰecg:lTz÷__O\jL*>:ѡ씿NmZxU*Ix5}Y;UPҬI}p) !q]C{Gly%?xPZ* .yBz$w1ZY3,6q) 7>K$b!,ɽi`X8Moէ γGOw{PP|M3txjXᙂYnړPp 0 opX W{.N\OﱿZrnUR9RxWuv҉I#4#2Vlţǟ3p!4 C{NLG6࿪T(1s:NHeFyqC#_ҰkxKE7yA>+9!8˘n+ TKR8yZ~ut|JF$!L_301xx(vΉYFj,pj`80]EzMamSEAmu`'5 Lk})n.{aҸ`_+Z'UJj% %F0*QL0a鞧bT[Odӣp|/$.0Lg)5Ƹ h;.ޯs' L$ /Y$*G Y<ʽ&SOo}DjR/ȭH bbl1NHMThcwǒKљf)xM`q+V xC'EL$`ة*G"x`sk,|1LkjA|~iO'}+u GKj婜*~ 1'W7qwhZNz50:pҖ'PGb5%ÐS tfY'ƫDMm/^@![O8 V ޣt?W@~pc[<(pnO.YW\X$ʙMeG `[Lg!L{*!|GMWo6dGdѿZ;{_aihD*T)?Ig26=`ڝOC'Kfqћ5 UgGPB(8* J ֏E? F49r(*f>xjT|A\mp7`_Eߟ8 ׻^m>kٝ?%oT؋N$D+@x?>xz\XpyH057YK9v/ }BS閉|Ϲ=}sB:CQd6-6Rȅ]r^5{GF]l!pCw`盖vaĻu~7wuSZx@qJ 19-"/Fl,@CdD'X6? &X>9g9,jbvRיgGbk}5E`y8ץ1*K%J!R/ d$Qkᄋ ؕ\^YЛ~[Ф\=K.>P@~'ooXʨgISRy6U~` DnZ}Xx{OfaS,0iBra}]3䎹o'R%heǘG 0ueMđ مX|b\3Z`c"uȐ7chAݚOI&%ɛhf\v)[ D vk] TvVZB$."c!-Wf(+И,?^E?B+!tT"sȕTce}FyYJ7oc'rzH@BYG,RT5u tVq?w, 7Gs@g_FS/EH:8$Pcy^t4/!!^TO^*lw4 uC8ލA,G7!zw@G ( +Jd^%/*ߋ MQt0[aCSK 55\}-{9x:.E#aCP#f:A{hLY;> X$zPI+dDgp{t[.?s !ESAI>7f[BK  ?}E-z"yyBM]G{0~+a~Qӷ_= ト 26Zk"sUR#D6 B@lSRA~*!;Zp9C8c킐+P8 ͯmH7;+}\@vIHhwKT[08(TɴۗWDA yIP֑3EFIy^vW>z½)AE- ^aMc>SVo;М+R)xa*EydD~B--fxɻi._篲Dv#ip$CQcu|`N t ϯ!H5]4? ;MvaБ(kjwϓoڶdu;9<˵M|srɷ3V܁(׮<{ 8PWKv)_5iOt"U 0ig~kDԟ \l vk DlhSMjL*|.ٷnApHQE 5$Z>4bg2M@¯p_MsL;$gk4"9.fi9Z1(gB%z7TқEH z+h`7&Ra\l-ߍܚ0 @TȘ9%Ԙ'#0NvC+wc4g>3W"շa,H]kiP0#3S!\u634A}>>J'7馸&]e E!{sjEǕ, Jr bʊKVyv.ښf=jL,Sȏ{Po[Ŀe?OuZkc4XO{* }.qhoz^ɵp)W8JA&7T ]A+C}Aa B!QOhU `FK(6w؇"z(e7OnqyX!`.?2n89>|Lw.LCIw ^#m]N8^ 'lNN8.mHC\[_%#$Cy?`CNVүJ~``IQ,G<P37pzZ_,aGUh추;ȿalݱ8,>-eb +JDߟ_qSc;$%?ܡmrGqC}x /pO 'Ljg)t)C%$qK|`%ҢCQW{V6Qof 6ޒN5*l>yde1'=:8 Ji UniIhR ~$*|(!3e5pv ~1\5Gɴ I3T \.]?svAmD >!y^;{v0?8v_(@q,:/Hԗw#? DsIvp-00KU$]i"yYQ0T[b𭹷D1sdn >y{|fy`BztN]`u?^z,60,.^*) ="dhX$hwʓ@Mǧ{n 8<Í>iƲiRKRNNj);6D&%#`X}|FÒ5:Q bzw?s0GQxWN}0wQOc;Rԯ$3yDAÁh‹݃> ޠR0V 9z5ݞ XW^FsPQKSRXw}W~׮H"FX?U~צ j "n-Y9+ckX.٫ì+cۿɤΕH{e ÃK4Yc1Ss@W<:5 ,쒸vA/Y m 2 㻔37g|b}mDvoǸ܀n/˦Zߙbq$7(  D2gj|P:`\ @ ;ŝ}.V#al)K<((5uȷ!;7zg])+u`gv죷}EWC,я).bWZhT,guۡ=nAח[K&l FsPzYGUW%gg גhvA&Y6#MP~}0O` M.)[/]>lK?BѢ(h fd< ) dK93}wCvX 5ZGoFû. <&z~F@VW;i 3pc!7aÓ(BoVJy7k-t?A%~1, ֍3a -c,:A߿(d4 esEYT%k"<7YƦ3}p #?@mr0>ZL1B_2J ̿*Q"I>~) MƢ4~-|UBwtwgB 2NflcN>-D-Hibs K_f{j~ b7L7uF5 DZNaLFYɚdt+qnF )@7LạB_DG,ܑmNJ&APlF'?oF0/Hw_M5zӖ)ȿ{EP"V3"ISZS-HYy#!g 1Aa_솛0j*xXla Wӡ-| ZlץG}o,(ZA#nVvycn eOlyЏ0Iq 6'ݿ?}[x|bX׋2HG(@];P|EgKD ~*7Ϥ1jZR1/Ф֡Ԗ7u*# \7L00ixg8bcΤ-&+od Dw&'~vaI5],6sS@$6@)H&Y`OPF!mؙ U3|æ|y:iæaur+#7Uv/"i&C~X@?2'Iz.2EAP ?' .@i%?D>oIXjJKʝ`lpAT.{&4>IFS7NZկGÊ {Ը2_FpGs^d_Diثc:or<8ӽ{7_oy Z{(\Rj;QG<\EPJ#{]jGbq6|*1tj_pxq~彉2DYTX$:<'[FKz~TF[l\%(ըo `MԂ &yQ;a? %={Pm7|;|T_Q4Nų`-}zaoVi|r ;ºe*#bEk1M 2~R(l`Lj\-CBh@!N3Ff#LJ| " i+VDJ)'L:,`:{_yC9Y`܍6׳n€@U@+sz^n&ⱥ8_uOCY|ZN$Yu{^J>[_-WʏM:΋@NCYmLjRhyDpǃI.hTc|Vvd]I׺GBrQǰ;e5f F#'j2ۣ6r/{` ġy[Lq6Turc+ g iނ$yui8{q^cYưxb^~Rh&&,E+ah漩LzG'nB㡯jT V]j\hmh\X\^4w0 \ D׀ ;I-ӛ̊ H/pяm M'i>5*E0kMVN&;>J BJ5 fN~=,h'۷QTT<11c\Rk׍xL5U 0Drp\ahq-eӣ+XZ?/7{ȕz!]wm pl-4Ƞs56(յG­ _{NzI T& Yl#?ِQ;L@,p9S"wEXjFbyyw/9FQao̗A~+ nϱvK8SiR$Mq_;/nlSASD>R?F<ܿz-]:ٽ>u6w k}Q $0=ˏ<'8Dk4 KUq giohTn|% 8<1 tM50ڜ2q#n 79MZF$jrx䯃J]f*3隗\}3ˆEq9&VEmT?}>VW<!4֟((|=Wm+)R`0~ŹAc470i o3.N`W^š E䷉%ޕHyUCD!Y!'p"dqEN|۞H5|S @َI/OpqҒ6҅㲊vkl@a -D_*ׁpxjH \%ϦC#__©R3`^o~עN⚙NGE3xL_?=iSZ2.*5m9ޠΑJCF&wp ՏZYD9_- NN=n*jri_$'hO,gvduC_ϧ~Uđ. 8˸xU@HむHQ`o|@ue)^rPGPz]fiB `Unw>nP<)jizM# hVaGbKϧ|<31̎$?`+̛]C !kH1wˉ6?/ʜ;}x#*P mPݯ>S&{hp8Ѿf;+6CwGxUr?ټv]%10|`bZ<^<؂#]VƷ5D= t|ha ? bt4U6 hͤ)ąeEfB^/Þ^&"@"IZ.%܅  (5Y4`d.U{0xӛhT8_B@>ZT" ҈P.,fEW@C$:s? EJ㖕廊I-  7 Lbk ,hȚϭIAz:U.g@( G2<66_zP';Wp5T nu;q樞2--SLpA5 +溺n!$.Xd#{$`ht{VxBOx$ L{oN#U{ld;dq:|+XTKDH x\"MHo][Si'mnGormV9y _ aMaX aqC;=V#MNA| u^u[b5̐:d?ڧ4.W{H ;hqo|r>`▷f1.ĎɭmU;rsu-i2F%'΍%cƥGRg Nc02a}in{R7_^_fq{ fG!qڼY羫upʆvbӤ5k̵M=I#c:Zx$p ʡ)~t's(zRoUɹޣɀR >di,z!Ae2ȍY 5 s/C_{E :+b 5ns|2OďeڜďrWҴ{7:a,1.o4'YXwp_OrǙ}b[cY0*1jKؿO/ablBbO!) ۇ4eEZKLXr.GzlH[%vM]UK{>7;{lhN'GaYy=@ϛҦؽʠ9F7 zm}IN,f~ ? !7o߱g~ιi8 S7 [&<-ڝFQy+aXqbE+\J5y_yd7XqXRKqi`GM _s ~ݴ5v}w$ک?Fram|y4ՐECCU`&{3rĭMLj_5Gl.0uZ&Apcl;0%$n{9ʿ>w%׏Hr{|3/45?8=o]m І0F3A4%x#4B=J};>J=M_Y#IiX:hh\/L:%%)K}>bf/? .c ʩ ?Y/ r- "<\ќcȓ  z5u+A&*ո;8} aNdD Q.%k>yRR#! ѫNuOQ^ȥr2L#08NbN+VH_nvfٟ~~UݣzY\:e/^wk+Ws?\[*, v O6=EwpᔟMnXV OHfHsf ɣN͖ z 6=ncz3G m#SPto^R i%G|_I$& ƥǷf+yDR}L_[RZq(v%~mK| OM5?ʬkf9oTsVuho,OEЉ{'H;h݀[LkmUnfٛ4ޟ0 6 )nxŃnf a̴ hs4. >W,e Cܞ$0=7/ zl.{#,y/-vHa:!M &W"[3c>$ y]]V Eהd j{ػ-GԘF՘.ej^:e+I- l#$ ^j&k׋\a1âaA觵,]l08K5 ivւt_Rĩmܣ>Sɩ"9?^˓YPp-MC;2VԒ՝6b~W)EZ)P$FҒ_$ . A/ Gs=G}ōZj|Ks'fXr?!-j@&tp[1HVB۟Ò=sթߖ%G9<cO`X:xd:na5` h3ܬ؃GC|~^a{O IrsG~޼"gyVkj+f33\=Vj&p !YIٰt Qlj˻t9/o|R|_8VnXlڔg=/۽uT?Ka 珠[赤skp{s7 QAJRZTl]9U:>zU3S3$mĜ^6˩ܼ*BHW"䋑4 bmeG<ꪲ'17K51 zeU[& #i۴?Ɍ8L?X7KN _KAH_.)x#hn|~.AƦ>e'_tXѴcoF f>iCv̍޴nӭܺá3\E첰39nC2Ul@#hb[}#|}caA"cN{m'S~Y.-mr19Zyro6E& -oNV.r_6$2 pC%0σJ́AdFd8_ٞ[ ƽ9A4d Yqh /3иZ{Qۯ SU:s89UMu/I;zɿIZ@`s%=џ ,pBؒpZŊI_#r]P8 ץ -M)C>3wwh~ 3 L !oRLdag6uDJB՞yVhЊ6 A #GGՕ9}ŦJb恵'qj'V}wMt;羉.|ۛ"1xj!sFwCEU}$}36m. $]ތ<&DY鴱#6鱣9^UO0u_wz;H jt6,<~Wc,:6I}#6-VӧC{W dJcp>k0iL͂7vîEl7vrlG~{T<Ղ Twa+~aq6'}A"(zWiozYc)T/%Z-,F@*wH;\Laܦl=U{tN[{zձ!g#w?Sl:ʽG?ZP%z}2$Lli[jЛy.}"/lC|У;؈.j}0W50s( ?!G监ld€kU05k?F?}0 WNoM ה_S26~naa18*PK׃Y&Q!B2Z4ilZ/i3,5pƩsD 7L%X`C }?Rc_gdW{q$ܔ5m 6>}o}蹖$7U}sQFѕMLn:\Nsoh,>.!(2EwNC/]EdcG9R H} G/APnE ^-ww<~hSd)&Mi7O{{Q0*yrfEn  GѢʱcnȻFOPs9.K✵K ߿|evRƜȔ~]C Gʗ#.!3 U{+qGM@l4/)W%wTCʞ-4>11TyHpkM4-qsW=~,%Q+$HcCR^gbYn[85vͣuɹ)暬*u|jcs^Yc#繚1'&Hp.vNLko+gqs5iKW`c<|sN!i7O!| \]PnE`9;ĩr) SźSWrc+8vҫ; Į֜vZC=KxftK?]vTӲZ{=]k5~z=.V;f\|4 =Ox!+3L$@ xSP6JP;ЉTb険篹N(<5,7΢n}ŬTxB=TuNZiR|v|rZD,ӐGա 5}!.zTٮm@^mvUT׹YAK7veGwV %ԮDRJ,_/Ҝ]zqͽs53N?ZEm&F h5~G.L :q:YC_?%ݨ̐! o?t$E6& ݹ{6Z}iD^K"Y1'D|V7y!XQzٜqƙlڕ{b.49vA%9F&'4y]\'nQrY|U]4"F#_Pϭ1̜$TY6Visן98 *.FM`Lt>-;AHTn0ETIU>trGr~\uqY:ooI.K94I.D"cJt5[j܁h[dCfYk jܕxvk Z'gs OK0 :dQ~]ԝ,&Ӝ r]..+ yIiH[&xױ#gR!q uu)|ݖ^xh87=ן{xW_bTm%'3Un,Xh%=u봵1j%VdMyC7 Dz)>Jh.cK^$oe y(Bi|[<!N)vnV<]PH'(Sd=g}[=O£=SU>XO9l?*5oXIst@|>C!(Vȕ|tPnC|vID4W)![c7C~:?F_֐3 :߀77^cvE b~-8l4Yx>$fy6Am_!lm'T ᎐'P9 _q&UVljYʧ=}n|vy~ P(&9wﻕZJ(#Q2_]\z>`L}:Y죧wlIF+*Qm_iWAYkɬCSk9, L#v2m،f -s=8TߍݙWN獅߯kՅ^e\h[Am5}٠B 2%M8>w- ,P!Go/W ~%׿$IJw!i87simEh:dmώ`Sh`Hj|\{^jAkF.i MŧI<;5q+V㯪z'IP[!W*FGL[BW'sAU+LFpd?Bs C①DrY/ 82R&pD7j =}F#~R(*Pa肮(oxwg0G1V`Hh1o׊x<\pן>|Q.D(wcc\$M:&'nq<SS]7ٌ:]~MAKi׼Zx̓#zs1&snWU50EblhGDjDDZl=HsU+km*U="'^kAسrYK9.-圎q 6?Xmrrg+ͪQcTլB(ҐEP B"ZЛAAظ\K2CzG,ݿ=(-.<-i #60Y/j6y9.k@ [#~?R1(@q[MI\pѴ@@ΚcE+SYԇmô h/gl$ Sn$aFj} "`#MMyAzEï`3dwUU4oo@F!$)Rt+aE7")HxYgHrVN#[lz}oKjҟ\Ĭ: UZ>D5{*=R UQ8B0r4dX-Q*P:~Cf+N0ᩛ)s-4o}V ϣSWDjaF;ES7E\k}΄^{I&s S9%J$ewY?_??*E¯F!t6U4 w7 XBwDHZF'f7 !Fg\0?cN1cD*ġ׋:zj7]YG|a:*bx2ׄPY;IeX ;k"#15)ϝ5hZS0Naa?TK1vmcfQ<9@2!ޒe?ncp{_GnӿIÄv3iPb)J;wjR y \&t v*&1b>-gEZlSɆ&G$ɯ6Lѻ׫+˺?!&YǃW&}q؆_}h'IwNӡmmDS][*utō FnHO: oIifP?"k?[K}`! Z&e(4HIXCT-'%;r뽃5<`?2oH[}9Y?*b v白ml{?9eX[`y,AO@N μ$E/  Ƃ'GYq T@'.W% !Ԃd DD @i6~(nV +D;i0&X=2FG0@*[B4[3[|0G KA0#S\5m^s!AS ͉Ba\ݏ7آ =5xɧ? :,bCWy-z ڶEh7!t9F'N&XM@Sp\48C;QOđ30 lR//^V< ,_ny-\ ,ח@ό9åU?2il]d0=C~aKKNfh>Qh7; =dA(˛}OEpgD FW OuwƼbHPBEY,Odh@sD\:IQ=0ˢ73V>bÖwc7vۆSp϶ID5xMd@RuH`JQXa퓻)2@?׷3~#S,-A_%O oDK:-dT#i%5a vscPs|#;mZ@U\M =C^GOh~2.~pi+\|Ǭɤ:zȾG==#:g h21 (#cH Č…9HʇG)F7KF"K% ]e=PZ?t<7{`T ,h&!"߬IC$z`ǭ+;! n!.(EJF5dS 6zȣI-5ɌI&]꣜mC֟^f{zn {ce㿽\_>k;]D.SNk lի1dƤG+ DA3BMtxXɫ۬QPz>+2լN~Vwq8f輡K?{~~R/G%fBCGOUuz#bW]"UYWUމĶ y?~g t'b̴P}^/4Z WhNٻ!d$Cj!L\S^vYF`B(DY̾N 'l7;S`np?,`λ{[W[|l1m7ؚ;ۻY{X$sF;sd@]s2ޥ )2jv*0:-^͜?5b32KZ:0 ߧ}Dji⚻̉c}R$F,),\ғ7E[ {9h8. U`e#'8Uus{iVkcnXfY\c8v(ЂJtN<,X=Q@u}?OG**`!;0? jl]u7Q ;{`qVx,12ίi!(PӀ i? *3gp5I N&9]RX;U @',W1/['޿mč _L@ŏԎEpb?A?q7'Τ>ٛuۋCNmǘEJW |o^&~kP9_? /'= "y[ ;hX3|Eҹq9h&O?)0sAw~x-Z`Fz鸸o +0T,|JI"V'tt_@|mqxF𢧹Q3XD9"1jm (Y(~׳""?x\Bslo~~&=|-[HLM|B m2#jC4H+ |_u[HHI(q3خ%|IJwɈ,m}Z}̫|JY%5U1{ۣ:7qVZy.!tSt.O;I&8Yk9+Hlw?_'JN}ob⌥ uw+"@iD$ /L宫GW>d?wv-r2'%Іؖ  YɷzR0.[;a-h;4Q#SFUSΰ?ILv\%vLWL27̅Ir }{H`?4\/|ɓ> RVQ֍$?x#Al6(_V~@Xzw~z R})$[-֑eo$n{8UPoHIg>Ԣ^w۰/AKY76R)O_mtdˉz>gʀQ ?|!/|~W2̷@'!ErφE šhFqi9M:[`SO,rTxTFX)~{laR" $%j]pRc_ؔiG0!Cs˚4]lXҹ z$&$eyi-4x߇ `Y?6>L)rfW萃CWwg'.b1ŀ)wCph5[*׋3mW#~݇=>e|_.e\-LVe `wezZ9O#ۛN|}c47y.|y>lET|/ϧypU a6gPP=҆kz*ֆ6W2&js,^aq2YvmurE~TAAR'aSo͵}\ŏU[J^>!'AUo :>GרD$/ORc1*czd3чEMWy"4}yB?@!+Pfc0)inor`X <^# ǘIbݱ)DLkfTЌnQDz,;E#k}i"E~=[e*eMƿW*ogF_W|wk!>oIJfY7t IQTw FoPo9VC٘U:Uk]1EcU޹yД'.ԣd" YyiTijϛڜs|yd_xs3a#Xa|C9EujT؞ؿ4 ]O1U~H߿L [CQ؏gwB46Qa2?uRyE:rZg}{Id\gC֡di搹=RF_x EJXC f1['sTA)mz;l8gmjߑbt _ a DM=_) -XG7MO]8C "GscV'LEl ].s{^~2raƞk%uozQ8{>h0$BcDg76~EV/GO`@h慻g8trRbW7IGL=zӣ1~aދjc;YL1_X`-B/ gp;HzvmQ0JODYReLN(%`#eĮUh:+O,|b<7?߰#+CԔp/ΏI8W|> & _bqyHv*eQM|h6|5Հe@t[mV!4]7&;c|v~#71:¢Ϧdx̝B}{_!h_>)"ߡh+Ӧ1Esga%pYGPF 1!bXXQ FS~/ǐ*]%-nv$ %dFw(ab Kc?0x8J˯=xrmi-X2B'H8{$vߘ [F02`2A~#xTj~燢U +X~:fg/A=A)g +drQf ںr1d xNJh.xjRޚ>_F7Q OB KowAjȆ5߫?B$֪Me#/ũh 0dDFbM>( L߿\!GE4+hlԛ>rOdg!>:G|rٔ.-f8ZZmqi\*\ $.ik)C$7xLMS=|-#8q tUHBެQ&MM[g5NU\%3o]rlxOwS?m≕.o6]$x>$\]@AA@t psE~ mFr]t.{\n^|#Ma:^ PC\oQrPߢ6DoSn.( DwPg1Wy9Wo 0W}\># 'VTQ [FKgO=KHLG=X~ݸt8?Hw&.NI8-Lz17;PWфָAΉo' HG8XVl\H)dʀᠺV5@nud6hmmPu=jĴ46`ɗn2\Fh_$.[u7%d("I،]}yOJȓclDdqVnjvt2-X==D("_$w B[nIϾ5 ERAed͇G#m?l'C$x)/z0CX(«8;<-f, )j?;S3 AJTe"x-vCց!oj(ɣoI I5o~} YAKP%ld祛ka yhgT{E9ۃ81PW 7DK.gys~FF('5AM>yuoS.r[͑)aLhP?Flkhk bvROUa})]$;5P-.Cn}IlY0@=ix҇Av440g{6 g,BG=\o3e|KlR:T0> |>ٯѳ<]?6\C!$c ּf"6cx=D{U:,h@tc }?lVxBRɲLĎoC]LZBi7 $рn=S-rȉ Қ@NGBrƣO?Mq+ lbGֈ3 $@5O crN꟟JIe B])-7菉4 Wwc̏M,'oĦvßv w^_B 7S,o0ropp9CV뇂ăܶS;nQ s%ax YEUCO=5#݈D_h7*u trؑVz+H?6W7||Y~3 Sh_p#0rƥ`hQNEUhGoAz!x-%l\3U@Y6*W{[JČ&ݬc„1șC4>ɺ]87&80nbW,M)|{G|{NsA["D=mtCrءL ɉ ?gqY}H-khԨHZ0۰_$vn>HX!VOv$-)*Cg4+kEQZ [,/FQ*WM _Mnk+ 7 f*\@0/R5{$q$oCP$O`}>_.oW*F$9OB/Cv'l}V'sx,TrѬXJ2ׁO!bC-p4LEB_\"V~,]w֊)oKq 8w <9`yC 21-(;d5V:M% J#aֽG9S$+nm- iMxu՞O}\6w"{ ,5ٵÔxu4\\F[vίoYз dd6J!Jfm6'?D* :Yj?xy7SD$ 2@hxw>Ȗ>q$ٛ߾5ޫeNIpD+q5dy/<R \W*f4"쾈wo;ί+[p7G{@Q{>! C~ԇwr0~rǕFp,!tGQx ;b򆱲|XggZZuWkq]x{6TQ Yp<ǿbI~^mM(# .Zɇ== VRL>pe>GEBROcԜ\֟&>ƏX4qbރ[=Fh{y8p9YVH%=v'G;˽Oy^wvv-(WJ -쑊31b@w 9;4%6}?ȷܟaHKGĀ]D>o2H㲗?kq\_N*=+8'zW=uk}e[d'{C';<ƃ:ifo$+}]-KMXhQx!ޗhZȍ.I IV[|OnZ[#U4d~%^Tl r=E'=vM; yu]XLqT;,7 81P"~JB? ]>Α INFDO_ Gcfзt8X}EO4,.cx(o?Duߍ\ι['<b8'(_}>),R%hBP(ozNjeAĔ~aH ϒǾәaez|6,b^ٸ/?Nt򂻠m1Xifs'~^i{>ީgJQw%C9uwg$Z9rb2Sc7w/<8>/tH (BC,*+G帺cprPsy[x$;Sjh@-z)C) zmTֿ~gP{壐ʌTnZ}8h ʙ my hP{ue[$g6ȧZf$ f ]o1WM@q˵.(x艣g߹nn3j+֚쌰 F{P~dp/?A*6mc1Y:ֲ̟bqx%Q^fou65' ~JLAُ%7F,~RXT0K (iMAWNk@Zx\ejyA諔{7?,hq3@B4IZk*-V`|wGPuѯ~`U;}oX繚X8y#D<[U(am#bF12QǿzUa@!dR3@yl.t(q1%wp|$ &^VtM!qY0*}]Jn%qKaGĥ*C c8sE IC!f6E<}J˿j`xZ8 (jSBx w$f7C|WJD;Jo8>UCEPR kD: k5qֿ͢ZJ}]+8XDU~Od%p rf'Kmtevg6,?LkINzH0{J7! eݧE!Y@W6CRh㩨!ܲK+߾ ~[71.ޣ7֣oCpFxdgWGA*P4p- d闊w4"Κ ,HȒ''X6=B-bK?C-c cA&?Gkݬ6:p\ D;2$K鍆N.En*RbKLiX ,j"'S_겪k+*b-fOD.X8(_ (wQ gB<`0>=_fv؍AA=~ܬJ?q’4&oM2n_줦Ǧ/(CrϚNıCAY1˄9 h2npN10~ џ>^t`s? X]6Hd0^4ŗH޴Pz ' 9+ϧOTu>f`Tq d@U9[":"@Xw5fUUZu4Pz*‹[٧!l v!;j" rso*| v$sˣ$(iW-(?K%ъw!ɣF!l~ۋҎ}$ɑ8$ i/c L!j{._}|?*凬<0 v޸*mhX%Jyւ K$ P3_E@  ".o'!fgYtT5^ 0k5=9eQʟfZ Ѯo:N3[ -) !ـ^jֽNY2zs-Fx8U=ӍMйlG ̼zJp*w5r4n{!F@S`%G'GHRwc`vj4*]~?=kyvkha>xf>칿ތT fe 记~S&!;V]ћҿ=]k,}aKs08 0@ x2I OM5nFHX|?b!Ću?ʨh=T C_^Ų;4ow*gFDٺp+éoC 5F|X\[GJQu@XWn'vf D7YcA25jB+^WChB=U0``@1}o҃kN;]#19Pzzq?Z8%kMM`<~M!p,tk4ғ~r06$T  r&y,o#;_%,̆յbo k)S*lrĩmMh(\ M_QYhv#fAyF+])8jvJB|bh϶9ˆ"]IPhO1˸W|q뀌aH@~1@nM&^zoN !;.`:S!>?Xp@.F{e2߯XXNH HY91y1'yM-@H#(wPu, MSA\JJDrZ>$?:J>cmbn޺G#/p‹QF` i5y3u'<*w=5 C4iYCvFmrS5 ֐M 0f6f0lzǪܡdb\ا!#ږݶ뇳ǽ]mvװǕxB,5\!tO;(X~T^mU~ILcvYeێt<_Nbivdfqkx3/cZΏG#}8RAop!aCi%2"6}QkʜP ,b_'_I涩pQcHBfYi3 `ƞPSmR[E8׷yīɛ+ыxtS{m#n&-@Y^{O3fе6¹-4 Rnc8[|xuˏwDmRtkm3j;qYK:@ \\)P! [3_6x3ͺ^{y %%\>)~sXwiuHxzʆ}s.t= }$>[hm go'M)nَ9e2(dT-[OG\Û*w9h S0vS̴nPa'Kk>Lq}3˓"(j~?4]qGݑٴưͰo_@-$`qG 6gYm=[pT䳵USY.ȹr c0dt^͙aq^cJfc`5UCs?^P_F'b'd53F2#j*}nUUv<LǬ=t-0eh sRqeR1eDoC'C,au]Q}D8fs~_ANSAFۼo#_E1梅 +{/#b *u{HLs=H5;zUpnOF0b_(ѵ-%%j `pB\z΋pJ{sԍ= %ˡP)-ZN;|*<7 σ],b9oݧȷb/!PXr6]?V-Sd6d  bI\3LO F\,)2 DŽuYLb]LʎC +:(gRJ^r~ \TJ75a vQ-3Jʝi'89uŎ .mw}1)T.1H+(4QWޱGF_whyrܪhLU(f4yk]t +5E %[9(/^caiR4gm$_*_© AOw\&eSg t:n Uq)A]M '! p|҄`,A5𺸶QބbJ1X?Iv'C]ްٿ S}005f#M?fOӉ'A9IPUp'Ffaʊd }?\.dFW s4%8.A(\m12u`&T\{ }W_$|M~u^śӁD0@^e]CYz@ĭ H]@1=B6acCRAUY~w&LE\DM~Qdё$> (Jp|c#md' V0/0 @Hq b๢4FP8RUW[e4k\8nFp'adF ,gZˋLE~k)|5>9W{Ky#$$%tP<ʹf%^}p0cҍi>jAN yۄeШW)䄔5 ~ :1ٯL!OP,,?-^&j,"˄Q*0aQAMq@Zh4:@x bodO \n}%n YpqM5MI 1~5\|4OjxaP nx?_ސV_9ힴ\$^ٗZ;SPwh%ḨULtea~l}-ou<|vi9x4lHq*BXDAܣջ}qBS_X3[>ɷL?p 5:%zחzdu=ь:n6\vSr\hۗ~+udVb(F2z/y$i;96 bX.S-EA8fֲKD&zTT /[rm.'PJjHW5KCcPE*tħB~o s< ((RQ<|a|ts ~@b)q?!Bw!\ 9ටGFVqeLC&r6&té!7eW0} /N%Z L!6iS5A>OY5- 7R7ސnzl| R8Ō@Ac\| #} FpoFj$WFӡ 'ߘ6Yo-^ Rfa҃E$0,@5>_XH ;w5K1"9 &+u#;Dg;8f'e&&"^j!_pUA/jZށlo{"e OAr1 v8} & WٌdW,!2l@fDiy "1Ig*Jgӿh3Yxe,Lwȿ~t>F|<`﹢ݾfߐ׼3\z3/򃔄W[,Y4(к֘+UQd UHِVd<ȒпYuEKot^B`FAL"Qu{N+Z7i]'dg:(IBh9hh`:\G4]DBOaCa^|[ oAOiXoxJc tֈԩР1.iX I3/O= xptW: drAt0!BXjLxtͷk QvW!5Iu L %YCQ$R"O0.UT@*w}4^&T Kʕ,%e24AɾlղV:4_W9`x?EPNT-]9ԬW9]Pի_Z/7mՁ $ f@];wо{2 ŦDsVѰ6F~`E^~F-/7rrV2a5QY%*0XYL P5d,~j 1 iCiL,?_5 p``xVCI{YGe}`1?`vVd 9plC~$=JJs/ ɴ?? 4.հz|9Ub`ѷv``ϷPN=co5<7P0N3Yxoπ'CVEUQP 8WpπC)H\Mg]@xV33` &Nnxټ :K) ώIyU)u#-({ )'O[S)s)7QF&\HWTЎJR'˒ĠK]'y]$eKKbЍ&4pfCB1K\-aeG"\ ?L:}I0l_3gK8,M. zU$ȳ%' 1een#K3k|NK^IQЖ@Еo,P5pŧ,Y. WTG>ràv2 Ou0= zጌ1~~g鵽1LIyVA 6S4W9 Ի ]idatmΐ,fbN57q#o6sayZGD%'O SײWcq^>&w!fIYaJVZT'd OB;!,ctddң]̨6'gExPN/3݄)[zW5/veO: `G2^0XK^t&sϧh2@ϓ0Nll!P1OJ: d uѓszB&;(:6d9Շ4+VRh`^?g>Wv:JِCt'Om=5jV/S;,MatKƲȥxZƔ( !Db1Qralx9؀U1 "FΧ@'wXJ҅`DQ16G]E8F*"|brӖ#&md x; Vk`\ŅOa$2%HmjQB.8]7grO^q}|mS.wSL[&7YϽb#YD؜ t BmN0WHK2@3uVB0Gwӂ<|ug.M)`hWaUѢ'iWP8cp Уمq^;m۽NU P rr LTLUԭ*G։ZYitU͔9'Oz@+<Sq'8r.u; M'g .[v &|3yEZ] ZmS_^$KV-u ty2E)K5 A1|jxগەTlK~/Pg]qqWSȀWs;n5 S#P(K煈ޱ3mV!ÝToQQs}5]Fk`cnk;ׇZFj滈Ml" j}UTvfZ nȒI3ƿD\vE\-%w5*5xv}[m$CŊdd vA#Ve*Tp;%L%XӺMQF^P8ǫ'Mpmb[ C&e27j -7~nM+XyuTUQ "brSݑ{qy_gtIUQH6(;*ڵV2QMIqlqwslb}[%ӭt;` _]!{j+S>E |X" =.Z2fZ7UA6Cp|0:ycp_~Kl YNj²BٔQdF8u ;|G: y>^.$S>8+pDf %Nn:=wӃ0>n:Atye05*rWP.1 mPvQ[5/|krNqx2L& .{5`7DhR6,Ѷ 2Ʃ/uMW _NwQ,Rgv Vnk,KBҖozD~P/NkĴip¹V՝!Op6c풇xI<ki/x0 uYX b^/o o;fNQVG˂4ؙe-vG.@Sc/#0au-AgpÙ0MIKB=PFD3tkATAk5׌'gi`*6d܎$3}M|A1VNkන 0hwl8z_6D2a`lddNeYpD#\ñ"/ډ,ȯ :(+㨁,)A{'t̥BU@ }@C0B=9(QP xMdi1S )YԟyiP_t,Y,l+:m#CoV;vࡕc)_?7s@ [^ZP{smG]V3B}vvMWR9®3i4juZ 2߶rh' DEi2Im ;sGZ;Nn24X`c)=v[yu61~;of,!_MÔZfYb +>è[::f!&<{-"@|^X 'EY]=8Zځ}nQ" hzM4eêo,HHqtV7Fsez>(lncW||{Rb=b. Ϧ)k$ 3%=./ UzPTkOUբ<˵s]AB:B.hDd 19F?e񱅏k&kY8)l6Qˤ=9k}L?2Àq|EZjDi D?2,KK0$.w+ij5$u&?XgnOByu),h?>badm3մw[g͕|bF%=p CzuI T&q لQd*G'} fSJ v/>e^GGPKWKBBPDXks#,lhY B7]d#u"I̘2\%%$hbz5~wڦMz%!hIlDƻuBGM}l'gVKo=+dBd"'':}'u/;5d/ էP9FN %lBШ9N "}kE hPA"Q|a -ޠs䡕X7`he"ٻ1U71,g|IQՔX-mPArpkraZyFy(@[؋D]z}/#]S#2ٸEq |6PZCr_҃fj]tFXwn4M.WBs[EnkLc*Yz$漕xtİYg4hG@m]->i #2 A~Lg%p6aq* g3'>cNi]퇪A(@ lc Ȫ*jZz5(ٿ->,2?Bh%[:i~L8qڟu`qˤf*( A* _''V4H$ OO8 qh>+ {Qp]PD0|5ߢwΧLǰ3Fjߎ`ǩsR:EU =+ MNRҀz|9lwA8yyUX,X?9=[=^ަt2cU%gPDF*3R%]L'B; N_`\ZFXXxv͗4A"utq}y6GL_tLr|k xjV헳(TxQk܍3+hpވJf.^m*G*zQbLr._FRϚWtQ0ik wsʑ^,T^xg+j׏N(ۨW< Ӽj`FoÁΎ&4Ih8őMp)hVץ~in3m]gԨ}suN<@uZn4QV׻zh]_NK)T[?=l)#jbÌYY8 \%,h6H"s5i~@IyAqh6 V8Y[&܀ 3՜*ReaQ(xKk%{Ehw ݦZ?X |XpI<oG W4xzWg#)zvի}oJXV—-I.(RzD9aw  7cT3*AC*>hoU-?^ 1w|oaZ,/g3|j(gnX.gdl-tJ|SjoKNٰ+r`!JҔ ||ZhsRD;'VQKʈ|4F=/RuKUd;ʠ7Q|\wlAxLGQiȎ~:į(X![Q2 3y v AsvUY%NvOZH!4^My u"%::>__}30hs@j]WrwVweY[pe dS&ͫb мu;Db.lx.y gܮ}!}.^p~5r[{HΩ˩x ׮6E4+5/jj^bթޝCs.)Svu ^*X'^]^OhN]C"Ek5=eCb \L63%ۑ?p48<;Rql1l\җfm_lj|wARDz T\p]zum ^?Oh #ZC"\bWZNvSQPt@(+GqgGڧPP9%jeyZiK¯o}[!hb TaD{ NiJT}pP! fO_5ͯ2^aZfG\jT ._ #`aGt#Jk#cQOEhJn"fUl|oLhBE`aW1KΨG;ɽ5 E&ɽʊ剅6jj[j{;DZ7PN?*[jC[Hg?ֱ qt0!܋a1єrJ+ElX*#,ȉ,Eݨ!4(4x(^cm|m^FШ&-b44拨Tnfd&\܅]%G \r:QW-$ EWaejBtVkX} ?3}S9p|j}Y9HM05d"! h24a$UOCyyȶ:RzA9½*Ⱥ,KfCO)Z|qax*2< 6ѥ h//{rw48,j v۹CPP=S"YmC}aRiKKv]#Dxeڭ&sk.' |@?y_E]V7jadeUMV{X6ilR|S$~h$9RV-i ]eX&bڒ\VM69;~%:v,y;ɝ ^ )ET%]F urdʙ7  G65E"L./,φDHnӶR¥o"xH$T;.cbM`IiG֩yϹϢ*~uKE߲Q$QBQO%Njឲ MAmlq[0jw/.q3y-_.X!q]hxQ5spªNUY;9X`=[{ɢU_!`s8>{䗱vyɭ=LC(6-BpfB`GKMԗ u x)ؕ0xb2,?“FVwd ŕmE9_>VyAL(bɕ+uZX W|v[ X1mֲ¯D_& Ru*1ame3|s2N& 8Al+0G \)v!S"s,]bhZ)0~ͯ1\xIz3jP ڊ_?[øغZ"v]'E\pߏÑ"O*2 k⌕(gbF33Mv0͙Vmn^`z9u90`c @YgF,D يEp%i鱡8~|,nܵ7p+'<%@0Ӑŗ_4Xw,s?Xڄ5^o8D$$$qуs)&2]Z$(O}8% kn8wrTc0fx2wٱF͍h1n4xBL%H oEKczJsmCWIs4ah*Ǐ/˜kJHk;ߵ۱UuS%062QQ=" &Y?T??lAqC5d &j߶mmhI۔{P #m.beժ56Wզ6|4Ш\]qkF/dy|J)M´i-(FM-n* t=*}^+Զ[EUsNY#+t[!Ƞ7}ś_twLwi|GD mr)^fs2Q`5)ٔD+Bq{چ\g,i""nhDGXwP;ωiW;/[b,,Ȃmu1>9Ѡț7t'N$4t9aQbǀasW)Ms(~e$H"d4V !\L̼ES?atT@'@sS૧VVHd0韎UJmA N׏Y6> ޡ%X፛l݀)ċA mTJ-Tdד0 pk+NgY&^tb,F+]paBXkGJo~6p;Ou|*G )Ը9y,@Aq?wQlrq|8y;}0mkT?[[ZҙV; і ub"Љm-K"Ŷ x TtZAJQ1 ɐF=V%(QT.w"L治fC !;ifDd%jixM9!hpLKt$THfZTژ/IyRPIyY6*TXПHe!>3oΞ&Y'@/B+4(X 8J *@}.9 !? MB*%<#;ƿaV Q/%^gHeni7Jos.V!&YnrU"+9ΒnUu2?I*H9Ͱ\%߳t.AؼiSbU3_lݺPH=bq#N5:"J) *|4joMXq= `ڒ_O_Oګ%(rkIzMAo$l2m3D"Q]QL64*͘e=W1`m Xn]AsNH̽pV /=aMZ(fxT}{ z6=ڸl7͠u3@F]ep^+ߪUs yrZN70r(=҇q4d%o9Cwh%:%:%]^T-@Z\oXuӅG'TL]!xMs0 W^vMC1mvcҋ`l PZk},K`fkq,Y ̞ jcfl~2w>ޒښ&`ex7>{U?bѨEJrqP@]  :,hCc:1wwTbb 9]!9XU&aXKDE/>CT:b|…C|ξTtZ2.uBB1%ohFrzy,M(.4< LF&AB$)lyGh&I\@:̢ EAw0<=y>g`#鯈A@Y9Ā>lI$Wa- ^f6yg28H8('5FȐQp.9L7 8׀#x>KD`qD@?W@ H xE#jD d}4/uqʦFhX'PJdNiH^Ҕ0Xϳ$%4DWYj4чh8+({#F zCXj*&*˂A0FA$Xr)b7.=xȩ~C܂kXʡh{6?~U=Px`=ug7u V O""Ɋ*Mq㾺oap+\s ڂQlp]fF1&\~a`telmX|sGt`Kn(zc[4RG}5,XWF9BnR"{XWjI/Jxmv+p$ҁt/KNRXUvgiiD4Mlhڈf ⋢Ehm).YyPШ$yd(سk,ԵL5a@$8)IArTP`aRM^bXB@˨.XH`u ,^-P:r]ʍ+%R0muxe M#+? <kHRHi+ĕAj|w_x/P#f+`vcg["k‹,MK8S:*O˅0h\*+ ]]97f %-OjY.P+C+RV[El۴Rl7n1"WN|p$=ߗM홽IxRFEo7C0C T"ەӢ9|#yF9D!Jr ((nQ6.[;-Y< 8}#-)Xt%Cb|n Q!BVG*:V1X+XCe3h?l5tZf&+ڄpH*=*MR RwIkF^SMTBTm3:?F0Rs&6h0ЪڱU43BYTkK'\k&eFUV9kGF\ᑜaD䇜 ]0**^:&Xfjn\czΐ0lqH(TYn: WY5Q[dUhia#Z30E#XY10&ʻ+Վqr,6f$#vʮɁvtK ʶ.ZBdlϼB(:g"8xY7QrGOO@26O18,SnpI|-A2Ei:a | O:B)lP]T+`䇛Qz컙]1[f'T}p ]{j=5dJk&HYk:je] m^0Dp% 6z) B%[m.MGHVyݻݝZYt //KNJbUU,ra@T:)xo8)qDK~s;`.ƒ/U<˩DXV+S(񿽇OZ;5HA8.>ԍqo1=#:kP 8y+[6t \;sI.MzY NG$L'nK2* $ДeAтcG>MW<`=^K ԚE<)*u؎A}MfJn膘q SP!0cR`K>nFa-'a+}= ͢B{4%ZڃͭDh( q4쾛rG|gω%oٰ7ttmQNjƙP߿B޶BD n9M'b-0?7>W3~ֆ` rәu"G&ƨO#P\:YU1?Ss7G *y+)W2wrhW5*!:3pEM}^1q&1%I4k Na{PW{P9Qo=:JEqE\A1%khgt݅z'ʾ z>d:B0Z>`jë`L {%*]c;ZG*V"knw0ϲ&@~~po{ӞLu(aZJmLˢ/%&RCX@YWٳg/sos?.s&1yӻ9.G݁/ۊPxu\_ZqK} #'#w;2wq]HˬkVNp ή[g{KE͗̚$ԋn\]d9zͥUL\Dˮf7u{|  a)REY& 2+lv,fAE: oQ?}[!^$ \WYkٹIa7Z]c֔`VBq7$V<uۈi2Is+/C0 z'[.0nlپxߗ 2^5_~ HGiwnۅua9=uw{ Q奚D6+`K*&lh &g5T\T;ueNdQTi7"6Ev!v.kD$.>$C ]Gj*Q^]8ܞǚ˴) d#0yM_㝆yޚϑSq|AKMlӝ٫Fy!Fw2=O5ZͲ}ѪTl.uQЈؚH/NӬ%<̣G4cVbxBYL xsZI5 {QŌp oz%<J=>?l~Nߎ+9 j;œON` rܴN_w^l.2xb}ڍe/tW`0MgC1m\yD;I=&8<'͡T6xσy|wg3b11qYL<RR/Yf:%ӝ׫t!v&rU=347YuuboW,uX R$;1Cu`um#/cFvL,i̝|}s*;S2O݂<ǦwY.UOa#/{4gQRWt-9yƱh(1B.:f2ㅨf6,o3\ڲ,SvNqxsx//&@7YtW`AtY7w9 /E5 JTl"K@[35|f/x5L"k}Au^/_= x߯2Xb . ^@aĠпa1 Q˧z uN ÈkzJʰߥzST<{&{մyvx[ř+IwZO}t?ĝwetG鶄{$;!*XTOP"Y;ٳjGo±3D촪mjM}bAV% Yv+,ﶼnOս$|Te,*%-fWu_%euwK㆝2X]򩓗ui=epY6/(/{RﴤUԽb"}U%\]榗>pSºKnu[Y[]V4.(pë*>IwYPwĢNK>HҼ*Z'aRjtYTukmȸM0.V'FD?+wZJwšn pHQk7 VII2v]\wa:ΆΫ.^y6ygsһ --lNtY%m-H}Q8;X'>qS7/˲Ɨ>pˢ|vw긶,wY]to: =p%)e]:{(I.+j$ /6>pHR#uZGCP,[PJS~} }tW궘黭eLo#}͠6n{C'gxeѕKZX. )5,dؕt(4;eDd[WUDZnzEwvu՞%gނ'%je&*cuxOg3bշ,r Q!;c񾰲̐.2_6H7ɖ_ˍtK⒠{t7n'j`«뾲0˪7>g`^t}䗢~v+;-עSoz#8:-;b]vYm-i-` w[cw¨K1JۊZNކ\2}-+ /=|'pI1 nx]A:*wYawģHѼ:^k /!ͽ<+8eM>:.{/NkYc:"Pӂ}u]QA Z{wkqZ EpzfO}p ~8Mtipų4}/yEA 67'EM8H$ s^8 x7γ`xs+8/O?ϟnGgB؀Z8FIO<aA#0'fgP'),>4}.(˱lsf8ח120N xOa|`?\gq0' 1$Ep}}=P0<y0XWD ,EY Bb@U>Qp0yN,—~GASkZozԧY,L(t~~#n|S8/l~~o1_EO90Ad+n~;MGi(#<-$Bя:}# 4>VR2Unp2M((n[!icO:*NIɢpPNnqE:i$a0? Yi\z 3>GEq#x\PfonxWY lOPHVy"U3.74(cSىմP4P|v/*Q,`( @Ef6/:笇*/KcvF@NNXC~G{EQ&F!5so w&1TePqKx]ARxL F)u&Q[~8Ru8@w<E3O[LFIGV<os"dȖ#3ED̐KoǦY0زGxB!@J:9 S 8 1#Iq IŸA̜N2>Mϣh,O{f6!2sRj]c1((Psh 4z4k{9_ |xTkq18b*}z/"eނ BvN]o%'-VDrDB.,A(+ ,0O=1#(ŠÌ1H`5٭{W)NbL<0 by|Nҫoydx#|Bğ@$'Ŝ Nu)vJ< gO(P/ST0%^Gg(k<}UWYत\«J=\?_F3ISp5~)&u]" 7ljN?s @^4.((sPI7ߢ9TͷaX ZKSKZ 퓭~^12‘y 7'k Gg'@{%hԬMqU>w1FdUouˬo\:DVwt$*#J)z9XK%Ji_036 VÇpNQ ̙t(n/ Lr_{I{o(f1,K %aBN.0P4>1Q$ ~A C r%,)7 pA@W=KLC2;NiM5 Yt^Š:srL1mˆt혐҈uYp8KU'UJo7a`EcӞ++}Ot*nSP NLj^qQ5!a($pt804w3"m>J}qmA A稦!p2­!Kc}JA߫ho66Oک:"=%{3 Z %qɰ3w"{48 E"hGXX(},#A2>H}D~|3..Ƒp=,'?RVi ٮHl k-۽q@Y:Z~lϛRMܮv: c2]oxoݽq{5t {=su4:Ai$`Z _l>OHȴ1܏12K܄׾Tj1E-e,:",n25_]LJ%E;^_V97 +,z_2UˠGY4U hSP ,MA8Hᔧ!ZBUY2cJF~m:Ulsqi+h`MV=)3.e\ٔ650̊|xl~M΢lZkBԖq:^ Gpb  l7ȀM1 I|^{ͷkȧI) >$e 3l +pFbE[l: )AMΝ2*GPM2$"6d4 XTUV%upf/Ε6Ć$:Ĺ^qR&ey/=QF  Gh,+z^V{ɴ/p #Eؔ%y2JRKf3%:3m`Խ2n#R*udIЦ*ٳ@^KJ3MGYPo<ܬI, J" +gOd֪\rn 8 [:ZhXPOv\a߷:R-|TreYf'BC¢a0]+xJ4T5bVisa&'dž9t 070?nZb3@Ի]L0w+M|M`=MxHԓhS|5#o0ud7l(V\ &hĬQmW>ྜ/~;xӮ:1zM#~J3TD²3%dr0cVHoJlO8>ob’YJLFɒ^*r2RcsSB k%ng[Al6k=^&$߹UNjVήN[&ifͣ|S|Ph8UkVV'b鈺FHr[΢~#*E+E,@W P5)@ZTt!;t' RW@-Z"s(,TN&9 w15[ƟfQBCѬ'XXD5+_B !u-7>QX/i%>3&dZg=v|Eelb2mKۆK[j 婈Mb+K;J(25*+}bŒ B&N {!-]v yaLD`S-snX'04|in}n"5Mzy5M'앬VWVk"e!*d tC=(=+^HC+BWPFū)(bnF=x]]w)'xVxlYʝ6UJ!V:~e2xEȸy+¾'"K}jxhj+*L_Mj!0o6Xoy\Sδ}zmح >c-oP9ܶ+7L4Ū~ݮ 딁sTȠwTMmUϫOo{Uav5 $|j`?[5om5r2c"et}#jLRnuxGvy*94/d0Toz` о z?8TK_Us)MOX1hU<ގ By\惎OBm?Bʚ~y~Le_S+}$, z\F2H.wy*Kk09͹Jj.' yt B`a2lkxۭ59O+=0WE-_>h9v•$g-Nj.S)%|KN*/ EU@v&RUyquYb>֐'8=]SVXSƌ0!*,$gÞ+i޲vܪ|Mh&kG*%LU%pIn?yTՖWYK6WY܉6?ʧr }f;^xuh6&Fv xʰ)x?KJSzF m& LT9Ǔ0{#nU0~uU\xY ~HKeZXwPO ֯( @W[;UV1Voey<0R,w('Kv2 CA{jMH!ݫ ]$-wi _Ǩ3MJKF[g]+zl{`ǚm0A|1+U6ڃohF>W,lS2v"KggsOx|--љcl. & 3f3z)Ѓu'u}jĂj m-qiE6zMC9+*ԪS iX9=D=ӤeOJl* p]L'j 4F;Md;m*[w yʹ|s1OO$ 4lR[ɩU^=hΨZS\P(&24O^mȮms27Ⱥ0PT_$-P]{+YUuSW en[qѻHRC_ܾM _׌H[]nEknAiVTh~P$yDQ8WV]9MM`/(zW T 0phNps0(UXes\pVVQ 7\cUy.1 t$^k,oGdhC`wgIKl)̪[\1嶳Ģc۾`^m*^&9;IbxAo5MUo?,|_. 7u_* r{X"v4KZFUoaS7 ;Xx!I=@_i-407sT#Tq V KcezaAY M{r{u#q%2b 6kH-_(5\V~T*Iwy̛.rD#gjaw_P=4do+*0ۍ6r!g.04nɏ[I: _{W*ͨOy+v{~K0isZDehz@J "j+qo.eƩ* ]_ cSP#N`Gnҷl\MLXԃs( Z0aڕZlxš,j0rdDۀMY?vh#lu7XAt7C!oFJ!+ZON[dAj(:Z±ޚ]SCs(g\EP'J,U$P{wk)yM۴*Q); WqprX [,t?@ AW&:{|hkq c ^X۳3YUl-Ido CQ=r}C)}AAwKd*H-W¤ } :g4Cl%.:'׆ޛ֐VQ5˚d)7=uQ[;։F8l Q-;qiڽY: :8Gu} }F?vOC-x CgZPʼnoY_PO$L|e2W`N0ϠLf|1n =Ԯ V !p%{sMP?fb`ia Do횲(QǕh*Dzy][Pc, ACȒ(a΀iҵu0d{盄.-iD庹KQ+Ĝأ5f{c(*@} -$Vfڞx݆3w8(4wԽvqN GKNw}S$lM %&ZS5X=%Qё 2kM)ZS_O?8P@J"lT[PwI KٮE-G헺Ppv+*n9*>q*VUʩxԳ{,AzalդnÃ{b+G֕Xn Vy3=2-hvy'ZLwj;C.?|FVk]h=N`Ye`z3P!Ӂkhݮ>h(t{wowS |Vг#0>jTӚsSSSk)G4#PXyxzZZO;ƒ7ϙυnR*DQu\̛IT}]spZ&4XUje >Z8;%V~VV W$Uo?Ƭf&dF>CQ&ލu"Js3T8ھ8Y{zSGBv`p QkrSF ՇhL!s,{ m[u75OAJ>>|lC͇{~]+{ :ro@~w0^\Ɋ*MpgpKkpUl6TJ/_a[6+|6oZY[ƭ>w]K>F76YVw3>#;ꫡCC}}nHz'p?Qp_$MJ ̾/lVwZ|ӉO;1Do'F}ર2U mB 2< &w]X'#d; e2Q>={gБ}Wѧ= IXv!2nW$8,m@e-Ny[Z_#F.j%`Ge.`7`WVvؔh!̣۵VZ/ 8by͙աn_'mzNnq=z;:7*§P_ Ll#II\~tq?[u `|d|[>íQeXׄ]/=~Y<&O?'nN%_"jm0NB_]H&e *_+(߃W6Hn>. i3RI==xMA^&c ~M@= F,ׁ_ݟs\Iw!^fx[UTM)Q^krG0먪)+J 5x8ԃ4c2 9sy)89[$Va Uwz8H%z&OykPGTP,:zB;JkFB-U{;08攪EOT|as(M9SOeR7ͽYw'ɀ11HDRw :R&z@]+[2o؄orxVtFi C=UɃS9Rj$P&{N mk4F̅h@»Ī*1jbԎ=6-׼ҚhN嫔Ҕk`fmQڃ |^8ԬU g["k ‹,M+tqvlTpFKʂv]3f+vldv7n/68ɒ؈ M!{]eP7YNh(tɦ[:qݷ\}' 6u0\pI/Φ='RhQ9 Da9GPDю a`cq gEzzOҬD-3孝-f܏`B?:Rf2͑:hAri~G ݹn[U@?1UKmrnͤct_'Iۋ;Ձ?𢆸LגykPd=# IySETTOQ!0eb;˳ NfR]ӖMR4e Ts[i&3_jV4/B4s4t\ADB(zW `z-߿גS$r4 dU9H#hZ;H&&VU mNXvп\ BΘ2c$bV%,I! xyB+r(nE N+b=ӯ%l d7آSQKA BX;?i^Z xaхuq6 P$o,,8չNKZd'&1Ɋ6&$RQssE*Ŀh5lgɴm+|/Eya p65p(9;$1) o[8&ps4,.w:3rZ$0)#! k_4dJ6^A&f(gI/ 'ku2_YX*Bh;[}Kj)M=k-${O+b,+ %Q@>3t58vFD.1Еu! _`(4e53( @ 6gPH!xW뇮Է^m 2M*ϱqSp;h22%mBp[EmK܅.KN~v{Km4h|[dMG2}Nn.-JEUfcuC1+D"nMUeEq~NYgETdDo?#`plHԷ!7>K*:Q*&oW-I] jl6Fh=ksgd#T}{PCM!In,imy«;ˍf^,{c-=n5neĬ]mۚΡɖ}#85iY{7x,zt1=nhƬQn1,Y3UC.yHœn 8[ u@h!҆C}Ǹf$5/v深`c|]e H]^wrx`ЀzV V梛 pml7cg r|fʝf N3zݽf)V64TsI_{g:8n}vرrgrV&Z\/ӻw[K*;?h|Y;獟$~w>gy\ _9ww.*gH!ͭ:[Ǐ]}pn|Q4tKUmvM=4a7 ϫ?T]fSrb&c+r* j@:3`zk|f^C҈Hk-iRicXA#O[W7k(@ua,;ffSoC<> f0ҙhN+SYat\v*쵁m`kS<φ횟dbBBqdixӷ{;@ݝ+͛^z~~z?o\քv y>#648^?vj#%t]i IsJVxΪPEu6Z|=.$@L$ϲ4D7 1 ~M鿲?U%Q:s1' x޲zYA icTg"`Cՙm>ynEx)])ƈ1t!D6gB@< ~:~q?G-8*Z@c [:8@аl1JY0OO<"<W`d'y4_%|30ӧKqI6_~=4`SMމUTT1_θ t vTFhG:_aXED_53%ځÁ&|`VwC+[AcFt_zUnCt8L$9R|>8]3u<&%hYEГ=U,~nT2 hEKܑ%stAu€Ve֥(!tm&"xk+/tfUA/>5A$ =xo[L ;#Zή^'Z8N0k+}[2AUNMF&%U,2Dnˆ뵃4~ET{>ד{HԱM6]4W;61Mjr}L1[GahISr4}e-uKrzTf(P%#RXC#* *]0_ج$u.,F};c,ժtbV[5T{o9[evoٽQ{kIv7J`RpMaӝE|gqO1f#?Qy/4ְn.4[! <6m.K2oӋ̡?ްoݐn*oN uŖByb7n ~UUS*Xn/K9#=h5a]ͳzN@WLlTMUo$2(ogaeo0R T7Pݰ)qåZ{cnĞ("B.O(@oFۏȺҬU`UC`2/~[UxOSrI>.ơcQc4A(t:6w p2@v:y& Z;M*LzF*-&]LU~Є!edr4!ma m, šlR16Ԥ&GrŻ6(MP0)O{<>'k92Jy~fF Mm=0k bR ?W^ .@]^RQ1w'0} ྠ،Q'N2y탪c/'=G6sKɷIi9.&ep[Kb\saܛyP^:gQΩ9!kh#G.EX3BMrMAJXX 2^= M qӉ)Z+uл'xV ǏY>U'Kٰ MZ0F:][b}Vs]qym#^-쮒^(9`:9̓FqTE'Ya8MfWEȘ}prȯ8t6у'OBġ^chX|b+W`&N#"Z>lcT9d,U8C5fK~VT=:UHvCX<)<嗂~xh'*S=\U-$X0iD#>Z:6Z:ENPhNFU7y֞!8ÎraZX`3oa`^F4V#.9 +S5UEކb#Pαo+o:|dgɣ0W8\}áπ0pQg7)7?v`!x][s۶~n'gi}lqv6{Ƶ,,,,|gk ÀX󲴵gt~zuwJMOxW9✅Vz ] \'8XXd@ChI @{ ϢW}'i/}wV~p W_{oZ*Mמ<4183N<׳|݁ڭ;=th~h/tמ5_ڿko޼qrp8fk#*_4s"}q>e@m C-tL]*CG g".)͐(">Gj̀6C-obґ<;Oڐy)!r?94rWrLz96vz-`?6p o<`џKk_~g|}p[G%'2p%ZjFPݜAL[}i?)F+M~n'v *NwUڧ/g,]új<&oJU4V )}RV5VgK"^cB~;&jst[Htݮ_ǢkC@ƶ>BegXB=-RCLB ַo ߵS|m9D{]sn O4e)P2 .3wCuyΑodl;`@ǰl C`K> .mx_p^/źǻ0T ON@GI!7n lωZ&f,8GfWF;C&F/u)VFuˬBFw(m ^\~tǏZ]v_gb_.a={֟G;i̻~Tp [3=A]<,IKü_v_ܦD :j o2GI-u(9[t S{`*85O@kdGړn2HOUr(cAHo*\P8+ uwH%#c4yxRuBhfrx+0OnA)mt"MfMneN |F[n߳32Ks<s6H_qgByXQb-wnylKO(^Lo. {E52{S[3+J aFhj6+px$ Y#L{j,YtI:=x״}rQH+Y~$P L!=B#GQR\T(4y<# H%z;f{ \yr1rD /z"*V(Nj)Hq.~h~z03](J&ETEɄ ҆ "$Lo$a"uz$YKX })WҤ,޵.OQ(]Azqi+蹤|52L0fSJ>t;nvz {83-&ieB[_}DzƘ`ߣ 1&m7nȀ`8A-~p7N.6@~C)X2nnr%oq7TH֖`*MJ28Fe*z+ô1pC 0bQuo@7moLM/g "TÁA`jjq71( {4iۆ<#y_ I@@ I]϶voD!߹W+az&zD!0 f~}tDtD(.PY3qcDaC0uj?cSECZ_w. ,pNU7^m bmwoW(Hm{>C uJǖYa猅C" DM*nLog5\*@@<ơS{bQ#kDfͤZpz5~2Yv[&NRoO2-[V8Zr[GE1 !j@Q TQ PPiC9@oKNrƴQ|tib34:tm)&wٌAET?V\i~iH؄"^q2`8- Kd0Cd i2y )<~4c8o5dIu'493(%5CvZCn >P~f-'Z~EC\~h(9`*PX:_݂JX ɣ ˛3zU3FaX Ud|RKdf k9Or^!P<ִDz܇\9T^ ᆵةlSGdpC4!y_QI}KҾ-?.`wF!i\pKZn$;sХe3/3:uPXM7=97[C>UmFVG.®h`8y[m듰2fhq=y@>QoBðxIAy3_5w"Z5NNI=Kfsѻ9unr6OwAWBw#DYp}hz=Зԗ{?o|rgx%P~AI39N}!2MCz])hSюzصS}F.}.>ZK$LZN&&o_2*W!/BwNoqsiM6|ckOĶ΍1o5̖;tx|cA.cJJ0:X聜pr][?Mĵ& r%}$ ~{|z* kJ?z5wXa`-:|dt^}<Vnm-7LAAr~=̊y3a~}ҋ|f63:1aƓqLF{@_DR%5 Y*݀ν7UC{ KbzF.Gj˛> _>@!G4=K״T~# * |?'?%7z1:BO1**X#Zn NX``tA 95Jd`S^SaGm*MÉ_jȀ&^UMRN?.%<0.Qʲ;ܞ9%veB}ăP)n!rl= `^=gWn=sAZt0;R٠ δ2H+E!ŋ-#%Yҩ3"h`=%outA Vu5Ys5ɃdRkeG 7ԤHݎΗ8/˛6VRwJ?Ni =7 ,w{fk'GH4QS#w>)q dYorgR.NNQ5O1aݮ$u+:VWV U]ndd1>L, q)2NTd(dza!۞vʨTVӎ§Fh.kʞz"Q#Amp-`\QEe [o0@u-Cw&A' eٚ &$u(Tt%[-ygz{F6dÎ xp ,`P(b'} ;l>Ʒ%}ޖ>4041ǮOCb˱ &c#>Ћ͆ m L,]ϴĻEjqohcuR`&J>׌cXhFl}"e3QzHGR`| Z"X4}֛B[DZ PE@anc!VB}ݽ3sns^Yێ_G9̃x▤{zX" yWT~ETv'P>a:ڰNfFzVgf2G3u(QHut&#d#Kw7/Qn2yP$χ۱)_Z5E׽oe:`\)?EGjtLro /#Ku. c(⿝';LuOU#/Fƌ5x^O7ן4kH%7{ Wu)}g3]ZɋJ+k`5HZjIh,q]Z0麰E`hK6CBNMKq!㡊ef;E*צ8`e2㮤V["^KO,\3#Mo`]N1 \ ¼B\<ÿa6G Q-<+" E&Ǔ-bjC0TkXkjcr[.ѫY?]BBW$˵%tMphkzʠLk:i&DVD7YW~>`%ba kڢExS]eA%ݴtjT[l=l#90sM,c$p:*׹=5< _}u\ U01C3sJB{%񹌤r{ȯ4c9.ןu,`e]aEnxDJv^'dXM"a2&C*O ADn%Rl"@gށ3&ē@UpO3(Jir *bGBz ws/d}I$ۣTw4AqfzjGVε8ݍv%W~;Ԙ$w&/{eWlTQo2cBb;#eLXyZ DEXk> ܊RV*JPBT[H}xG +kqrJ!QrWH%XH%ORɍI*-` ۳FvWO9)]Rmj0d '^f.lk9}ufxU雤d(XՓzrq{?Goҫ~ԾK.pUָa,EADW(>QE=Ds29[!sb;+t5OV d2BWDu9CsbnQOpE-dC=@_c'g~t:ǽdW(+gVccf,Tthk-ahB-8tUr2iBEsܶJгQԱa*K%x/6֊qMH(nc$~\IX|gӾ>JH`#B7e%*H}"?/4Bܲ}O.׵OޯajT޴Sn_QY=̤ۜ$1dRrJ.oH5 @Ye*ٺ] 4x.gY8Lc8>*J²Dk OE*p@,JP:Q[p\Rku=SXzfyr?ۤje]TkK&U+ՕXҖI@Sf~[XÂoM͆:M㭍wLV^La*Π&Z!b|}Z6S`4տr&$ `$72(?IO\njJŶNZ\#hkN9ITI|z3v|ET*T嬍Dǣ_':[^" /2FҚqL0hUV8x)dWL0PYW M]>;Aפhox9[H:V;}x'0P[[[$sȸ>_)7yfirQi-o %Sq/Ѩ S/ev>.dF!hd,cHt]=N˕S2L7ԍȝ47+8Q"KDjľ2>:H|עm}r6F專ڙ])P -"z!{".4`& jJ@K#1b'ae(U$T!(\SɢF%{IGq2|~6}5uB?xG}(l`l஭l{}̷g;9LyEOC=}!n<ě  1K nG:!1:WuZOgOq]L.lBbsMn-[:4lyqXilm ŒzSïn0i56zRT%m>dnjFd-<\14o=aKS~-@o$)\v"ѻfL0"{LF*Q~y%>f )#]Ta6ܻVnՈԭbϺ6z/H4܃`N$'k#jRrڦVd/%#vb6v2=,6)UeULX孉mWĦ#^jQL--ehi.djrwZtSto^朚!פl&#pf2m~WF1IXuڅa {Vu1wSN`]bUXT";? {x# oBɍ=›}xG'|czPȌudlfGMvL! 42`Q!uM܀Zy1uidqs-ZrD˚i\ 'šmBaЧlz~љ :8+7#D:erN 5;iJP٥ *Vb΋.FmsDXV/M27gQR.Eƶ.BOkUlׄ&kWg_\|)S2f4rUJ!a;Umq

I@QAQAPA$55RӸs"UvlQ7~~oP_~\揿|_?{PY/OtO_$aj(sbI G`y~ҙHkƟr\f w>Ӱ*g-m/q A7Mןto߿7 |9N7JQmL#C,ڜ1~钟){<53jf8Ex8@)0M0 & ݆I0 rs&NH00FL S#`j:3LI0&XC`LNWap  0hL)0bC@8D@5X4X0A ,G,{0AK ,0>aSx#,xd d?`d]t :0]hb,6,xBd# SgM,,Y@ϡ`d{>7,,``d1C3d1CKf8<oZ\<,<,Y@`d]| Sȣ FmY@f!Ń# X"X0Aby9, 8{Z zuߣ= 6ꋃNMWn#kyiPy:R:(ރK+숌%%q˶~;m]ɋޫ?=A\8/n05#-m"ޔ bv͆+xVx{3b.3N}:]vlգZĤ3)Hi}Ϩ39(ykz-/D*fs&6i*E;iշNTlվnT㕾 f]UᦿZZ16 \p|^h&!|X'#K3m/lrd[dd 5^nY:QUOulU'L^m~ڌ!y][Y,䖹뭖${/j3.GcpGs01hPHڌ{ʉ8w-G,=bQge-3nM߯x8m %F=?it;1? 1i15# //ة̃tlW<dzRӝRVAd}u߼nHi(0:j֝:Cݍn!<E:j3`\ݴ^?S[ӱlҒq? jm_ېh"+pCsO[.և64n%^;7wU81 }j&bߟ<+<ޙjec0NTp +ʒ_gsQhԤ8)jBr^VFgmZm,%vtP$}=_}j7Jvլ ԧQvaX-ez^γ{ޡkZO+ց b.=,:a.oW1a9 ӄYQcz@^w]QN5hudﻕzRdSWoƲpweKE6kan Cbm4aJȑ>o%(׋IMX 6pp=QH2`7wW7-|Fkٿ {;NohW~O@` x: xy +x3t.-.M-RpIM.+44.j xz @x3L42/M4L8}9ALSΰԢJ7: @1z\\\{ Dx3tˬHM42t)-LN,I4 s(U$&rL8 =..."| Ix3 ),L42/4q9rRF gpjYjQ*1g\Y 5c6 xM x xO x x x x x x xw xx x x x xH x x x x x x x! xI x x x x x! x! x x! x!yxE1 0 %YN2N]} }d`,o3_IVzubk?$C!KUmr.K ,]|ϴ7 <s@YS} /$! x!xuZYs6}޾IU/*?yL{sJ9G{4|wNMQΣ)6ק,hT_f{ 1$#ړd1'e #QB6ѐ͐,.ذI1%I$"iܦQɂ>L>. WlŷCxכ䂜K:!=Y]TaH.a(H+( 3@RakF3n;˪I[δ  ZKY򒝣>bR;yMs2ݟ~xŐ%3k_meEVҦY:ά,HԅqyAjEjԆV$e;:WM6I% ]A:ۋ7(lrEK>ƻʀJvHݛV&߀ߗ"ǎHp=;o\m lo< һH~7m>̺_?{t~E)K~jWXkrEaePn@NeH%\St`B_S͹uTrNgy|mNZܣ/2{eqQ9I/HjL޼YbQ:9={1\G!>wK#9{-#9VG,3}k,rhH2D{絉tz.t~h t|97븸k[%ȵ)>nKm3 A"צ+PM7kS>d6m\s?LB2JI~ع ߚ1WT25H6ܯp}f8%#Z[mξT(TNPaǥӀ^t!O/םHz1;;K+ȺQ[`]mO z^.j b{SBײR8Ւn[ם)Ak:=d6Q9]#vƝ)1V & m=#Dxه]gN͓xԶ% F-=g=(&?{=׸wJHI]&rFDZrnElvOEM+NPcXK5ȴL~mIT N M+F5`^d뎭;(j=c ]J+-v)!`Cv+yEF5B^OK*+&k5c4Ak ASȼz !ݽisbt%PR,-= O7װ¿k3Lh'`S&ݕI:%l>GVbPژN ֍dB64{׋K l3 _jj$ v^%F18$7d/Dm;IfD~ԏ`4]=ԯ=J,¯`~FwClhs=y_G iGYfQ;doyFyce$e$Ɵ9H7;__` nu6k]A^ )Q7ru?w$ʪG[0d \W:Rd!J15+d&bi볌0>a9;Bn 2Ŷ'3{w]%bAB15"qgkH q;"G݅-#H=p+FرvKdҎAQ7|q3Cw}q>NرXl1Q"7"+Қ@y K$puH'X>DdDfG3JjSsUGj}a=×DmZH wf q hRR-u5`mA U4'WxhP#C]-5W*T @D;KA-]ѓ7=Hv8"Nz{1WLRx $#{3xwbÖL3@L$d y[ Y·Bܗ-ۘU@=tC!((uFFw` ;J:QNeNcmFZOZ/z̫#?TE1RhttrEVU&<@\R!&uu3yf91l̹ F(NLy`w@y~D~@-Gr+Q!s-r0My8hzzoD+?wi7**B-Ʀݮ0gJuV>3QڨۭHVJ:WZ AGVJi%mO]PH}o(d|XVV}Gq6ʣ-nq\ĵ@zn萾,Tۍ 9"$bײbȇX/`Z:!ĔRzkG RJDDx|X&ţ>ęOVNpjeT@rwC}JţbͯA Ɨ ORAJۧP OVMb~&p.4X fr 9`! SHkNf00, fJsbmZgF2_Q?h;RAL>_4!hUmGxA . Bī*%D} 0 Һg ƅj FU XE۵CeyU㑋R~[xY0*/]"AX=xálC!~-h餾 2K_>W}2<8<2h]s)XlmXD[!P}! h-8&P[h_t,O_WԪv[]%Kƒ! d`pk ļ.kxԪf7CszV+|xmfwxwmãVb,A=Ӟф _@^[eQw2E<^my!`Ǔ'\H ؕyƒ IMwJ$ x3 &6D;@t P A #f Cq\2^Ъ'_HU>icY?O~]n ?$ VcDzEy6B0xD =,,!| {t+#YxVQ-LR0zk/ ^nCG};ȓPJ< B m_Vaв6_C[xSZ5Q'C꾀B;t9Dl(d?JkKIfHzo_6N+=<ީr{)-*qoEL9`CsݒޜCP:$%IǕ!xRKn0]' L@r J@89KOVCDڤ=Y4!*2Z1 wI @Y˹x'ɘvoF:& 9'X2i>;Dwq~q2}m*0+X ]/jiv)ԝWZ;9Ἰ9|`ȯv6pH*iC~tLHiS)#%§./⦺uI)2g^;[y'޿  x! x x}os6k?wo$N޵q[_;g;Lg<4EldR!)'?%9QzVDX.OIżݚWm~~UC1,vkǺZ̿5kVGM*/QyooK$@4?ϫ<?Y2 <˯E^+꛴}P.)9e^ {!!HܦE>sY-SU1T%}4*vi_W<~,P#m~$%hd޵wU=|:(Vy#C%gc= o'ǯē|yYr$Q"&DCInY݉1fՎqƴNDl!#Gڱ2T h;٭ ϋk_7EyYхh#VZŠ#$S~ ,ڴihg'(f\^$C9`&)NE]RgܡcuDj]N4ykuDO^/w~ǡϚ`ZjS׎.E}/ Xld4/G֧LE{]ſ= Y\zW;h揼Xr=KP6d.0-yE)2!'5.D}Cړ#Gk29leG-.|Zhvs@hzD6Nh+b'eɧ&c%H)A]9T6RN&zMk\D5_iU8ݒG"1l $΂Nor|xEJ_łr_ҺH,ߚmZ̶.6tUI$Vа{Œjn=^۴fQ|%{KK9Pim,4G)DCwy$R&IM:H%V <=Jp;I43r\^f@bv-ܼ.YPQހKG7[EN"fXߜ.y4RǠd7opǑelP.!P8 U0bqm [3GX 6/W'mV}) ]ːY f4fd"_C6IZ~(L]`*: SC+#Aw3ٌ`j hߙ㝿߶˷`x6JoJZj;gQ`^w#j6&@- jA6.7ZIE=Qrz ȱ pc1`e_JFYKZ@a0yڶD Cg*bBT@SIDw4rDs~=v8ܳw ɞMZ..YzQ)x&^WZ[{T0}Uqy|^y}ߴC Ud|G?elYPZXUUK*W:s]-bD۔Q>t5k봤 `]TSd}ߟES< cJdBY "'(٩x(֪dQI2\yx#kyf5 &HtbG 3<|ux~ej!͗[|o>'oJM b { labk77Y`vE/CT& <ZY.d ~0dq*y (q + J#"."+D(a30'$ʶId5" /ht@t8fHї+n #TT]֦UCg6\GlRszF[ *:աYӣ !oWl윇I>6{CmԠ𖣫 MQ]".e5S[4NEЬf؂1t09ዯf]|=8t*SΨuU3N]~m T3klj|gl[ΑVظ-QH .ObMø]߷|\|.lG\b&r!D7nEb{mk`@_STCh`$eI2IcuE6L{~E(F"kf悫!ԜZ-3͵(C{oFİ[ri[*;)/q:*z6hC.@Q3QI=aaBА}r!kYϬ;E]x9D'&Tk/ljB)jdKuS!sgA&6 ɖM_d_$6׈EN7Hבx 2㠂FQHwaF0274s'pQvia f&6qM=#x;FGQ_ƋعƋjzOmmkUc5?-c ^3n F tԜ%Е|]k[T ?F֐\5b#|Vy?MG;,mEDM̵~NΈ'TyE#tI-ۄ/4EvM͐MIS;d tN_)oX%-p@cvfmVs]\|(^Q{E!&k5ND')ՈKݹ懈Td1 HټU6l?̨) iB5檘4[^c՜:LshHz. $NxӜExIƏǭ; mqY^nR2-~Z^Ph~@\ )eüΛeOzC[itXpdq$ĄwSYM_\sD>g xB[vFcu4?\[uK~ (bbE ;h%shCǞtO}yVq5H;]B.xo4w@KYA0H6РEņ[P*Ff׍^򦜣ɛ#hkP(ʷ[GQuV00(e V5\^ `u RX*RTDq5uAlx7(XAp%rhCBW!%CZHFɐY1c߶(ʌ#7QF|Qp Wr;KB%$1#4E#h'O?ָ-5^IORQ*bRRh)n% *yyQ*v%*pn @?YLfPVI We|uJr [2]ne2Dȇl1  W{vhPQiSM;X:aߕ猤 _IQ>. .,{ˍ ͆JȿՈ&o3~g6g5x6<5~<]3&ܔӼlPқ?CC uuY@B7;ZMa^J@y0>z і^lEuܝ:*c6aK608' uY^ iov#LZV^kCG2>XP$dmAxWF _Xǐ7vYjy-{6h8wM8K.gު٩9Mk; bSato,kR_m1a!u8ZgM'6BN HÙn W݃ "D,!pԏ/2vwW-sv4R[aOKqOSƾ=-%k҃?p{' 3sIT4{;T Eyu B7sz+' ͆ef$܂јqLpt^&ϵr O.IÕ >YQݙ< 5"Kɮ"@L3k@}މ Ɏ z*X2NَcrFDDfեb>5]eD7m|k$tGn-Y4gpfN ieц+E#KReɮAwTh^|-T&h:%͝C MGeso=<:;lZ}Aba=Uon6XH)}Ý%#!x,ė꼮n "yuprЦ -IlF0F1^ NCCa{&\PϏ_)mixC&ޫװ*ˢ$6t8T1vhk%g6DYZ ::r5ǝ׌x#%{p,QZHris&x`#.=N.!22H:'s=nR*`"ܤ! bScy|7 AQxlQiB Q~54mes_22wRU;Eho\"FR${LMKjrYEv#}90w;ݏjݨj:Y-S&#cC OD>%8pCڡN@F9ɊqQRNyvșI\|CMdKgcc$ٜldTPlĉa6þN6v1؊.Љ&FMO!]9Wa]_|GP]1)U!Y6cTnĶ.[MtZ#&gD/slCnz"5^ΣÖYz[sDϯayi.;^=z=ts_oWȆI%Q⎙;jBp-׀Ue^W,EP@kЂU'[-4_wp FtGQ1]01Rw; UA[UoY8Eh!T)LFKY;a#!Xx-G>d`#ݱK<&Ui$Y ;:8(@  Z b+ &837e"`C,Pzś;A7:+'n3%#Y~ b3rzk;{+67.$]]'U"@9sIyI W⼈_ݐ# piĜ!5HY2H3$&Pd|$hs2m_VF-Ncgg1p5Ze] E 0XP-P/ E('V z ?^GBގr+>4D v Η[Gj-#9}ֶne\t&~%=Һ /n{_tbO5k3:F+˶[~W٦*Ea,)hVDZLbI;46Ot貶إC@ !"f#\"ZiE2tzK>޷G +(lZ[σC C9f/kZ@Ҏ< >9܀Uy^f[U]EA*&r@roDt&?/뜢6ѓߓ7G/Fw#%.TGP,h@%_?) S۟F;ЦF,S,\;,jr80dZ33NH(,[">K?`pOBWdVĮ=8DFC?!2L%Mt$q1a9@ѣωdq#zla,56b|K` c*Sw?RFM% i Oۄ_:I`j&Ns6P4kx5s MQ /**Z٬d]@v;I?@蝋>"'ӯ٬>o nڛ݊^:~L|Ÿ0C01+|~KfZeQ^]@f> -gAeuAF?|â(DYs/&ۢ3p[9TIۙ0i߇_8po|;دw{_=ØyU|֔!%h4yHD" !Ϋv T.m!K;*[{Eӌ,YW#<ћ$Fݴ(& E?]l%hcʉU}|pE1K Oo 3O'Ih_# 7wxГ53Ø|Otma qUK?ni"2˲8s䮴0eys^^-fm9uAyN5df2!(c-`>yMxyM M+Modb7-nZnLV0Q5p ƗZ+omakcU]/2sݔ%g)be~V~3UwyQ% )bK\, :c~ǿ맀ge̻ϋ'Tů!Mmiv=svҳsС=RK<iC*Wi[g$Aw=I}'AV荢Y)E8ىJ_J&:ƤQIQ*86*M/uYi-yXBspЗ)jYHsY#"#yB܅{FJ.hJ>,Įkii6AEҴ}jhڃ K42ڧ4neKӴ *=⧦0Z=Hiڬ4M#*} ҴPݍ,RѲ[mՃN\BW9 \K[&M5za8bGPsha3гbhd@#rJ`Vjr~]"Oe.1 B#5E#}be[uos'LfM-.=$$8z:jdG.T"DV}0>ٔ-R:DtxK⾓Q"ki6n& (N)ꖽq;B́,r?|ݺ5y]][fboMkjfuZҙKd\,5EEs׊ {,ΌB#x)+&)I/#%12MnYjv*;+,燠B lZ㍬UV/)O'u]*hkή_4>#KCv-K껟R$6vl8k+H6ҸTuJkN-~)^6MvۮpDw^yW@=P6oǘ{/1oEU>|:W2ul9[ĉ>ZUoNϢ[Vhe nUOWKomAmDwq" .F]u0<PsΥ_냣Ӄh乫p%9:Z#]ꛇƃoN'7.q ְ.S ߾reV1c?XYn-SI!v~f}"30?\85ռ,""+\H ̖;0*N6SsZN!'5zaT+ mC(ӝJ Wࢨx)B_n,Ћyl/^׋ۋ9ҋy^8ً׋E vuvr6XD<+;sd]i?ұuw!pV(_ĀkTćUאFSWaϻwבGEXFѴM/pc9Q|ociUŚ:*9a/OsfiTV{(7[!L jyA δub\MI&sgB4efUKҙH *gDgh2*R4L}p|0?Y:e7Īo931έc^YxJ}]\ oXemTl +H^AZIK,AzPԫAzPԫ#WǟLJI'~@ mctDڈ]Vz GnU+BߩPWYTB(8 ʁ + Cѭs>0($b,2T DOdӴ1lk&ɏp$)V P5`-$׉ۢCv]C'Ȇznrg'uNcӜ-7kR+ &H.WCy=,ڿ pv`OwK0݅rZc؞_3w'V7X8|,8[d0hPsZJX9$ po+Jn}X9sol&folb揰76{cG;ڏ7"ey>{R{c?mجaolbh,]coZ۞so{Ohv׎kvI{L<^[gp2 Șc%,ř]X i0 rݼ9̜Y%i3wA/믷K o]w^ynR,G')У1sNwh402*!e^\#1t DzZi~(חǻrWֻюn0isV!g)ԔnAgO80Kz:u[6Y&˭{˜<f13F4Do $6w *9˼fQ/iAl/#9'7&Dd69(Y,@-#{W,&%!k1UWxKi\ Jd[ڀm^(ChYü).%> YMZ( t/A󐨾[(Q=kthPYėXKCs*Ԙfґfnưe+'J|`lK1 t9{ٕ ezr<1My.&G:4y#Ή'_$YeOh'UhoX^e'XZUIRǾ. *Qs`Eɿ}z o,d}by:@{ÃG||W{Fjݸa)?,e)[1cR:aVqa͌3g>a|ұzj +q <JkK1ب%Uq bTt8Ӣ =IZ BZ]*~cWN|< G639Ђ`Pr]]{d_=:u^&OLZ>%wXdO e5φh?<Bdf^?0lxX\kŅ~9>ܗ·=uO;Pkɩǵܑf+Y/)T}%Ei D x8)J{ X-9DbRhUD/h*xvwN^5r}V/%L8n3`R^srsYպ-x2B*uQf ~;]󑆅>c m" 5ǘ`so`?Ӳsl?Nc3ZQfBR\Rtkke⽅j-VV_O~6E_0}ٱ/cu}?ZiM6k5%-ٱ*.1" +5 o3k$Oo^)ALa>IT4L`: *y]$\aJ6L3N}`<">ETOMTlB8 7=19_EKvas_` FHH7ag< OrMlTc oN?yU4XKW4+yF՛kL4 MIIȨsΒ7D;-kھH(嬸 I(KZM;ef2j1Dot]dAP_ɵ2 ^YʲW٫E{F:D."YhVZvf`~~Ck,'lsqk!77huHʅ,{Mo<}FZ45&d[9GԺs_f$h{oTu<7u~*'4kj5jIes"+ʊ@kţm[Byn* :6"X(eBڍfne*󇋲h|?ǵN$jYM גESWEIkWC>Ԗ^k{ppbu-VFVj ȍXjWBP"nBMWۚۢzIu*o|^˹2cys]-f"OHǦ,MCɌTOȓy?6 dz YaL|O!Zrceȕ4KEKFM[U}#/f94E0z=jso%VhQH!GŃ߅cgE݃/O{W(dBF.d__SN!7amptcuJ| Ccǥ۝|ͶmYET&ӜzꩿbY9RS?WSQ>44^Fdr09ዯf]|=8tZ;1d*ZW{;U U~Si%15*SF-T !I[YzsnDfLPz:P2eBOG O%o yڶD(+U5NlĎo؋;ܟ Rʘ,@Aaa5.G\J|U-Qފt6VB$1I|jh珫, |j2ќ؛2*m*m~7& K0a %γF^zȉf%L8(ӋY~z|†Hܦ,w"DQYs&Z)l 9X\7EyYGld X4[otxqw"#T57TXKd}fH]6uT -'R^S CL8hVUiF8 -0ƒ$Ar-ȏ4S7H 9'==FAyuCK #Y*K}Cd)1ݖ\ Lks;P:a.Ȇh#3m7.a):!7]iB3f/;_yPABYDU5='l6 }zPO2TdN:[R5ԝYd}m-^*4ar v@tw8#Ra+1(]8@DBzttTmqN aW,G=wv,Dm'?8;(fF _7dZ6>Q`݋GUELa3=4vu">zy r ~\@m^2 6 .MMYbrZSCXGSC[T }H2]Z)u<*wC\FQ 둟!U=%KU0t1Ր.:cWdr5$ A*+K$S6j:$;ۼNIiKHUujU'9xsG Q 1MpRxEڹc,hu%ܝAXSGwF'#kI硌8 * ,K@-wzfq5v?R "A|ג՚_բz@ [t >ˢ 'YE38uّD8w$.X^2 65USdN"F ؁S=3Y\z HNVt;ONozaPwg{G"H&^پ9.)+;#ѮSf-xOeod@d厳O YW"Ľ]3/4kJ=G5gf|/ 7Hl0r`RbY ̲i/ )]{Է (Ȭ'n7LrƘTeQkѹF}My'*t|fNv\y>qvXaN@~e5^ϖYͲQ#_~EZlQ;ȃ̊YHf'O0pcw;^lgI;A;=a[h DD#+c!֐*φ|J]Xr5klT^$a@Ww)M}8 lr|zsQY!.qǗn X.beb/8XAd02@KMANjZYg9Q1i0[Դʨ|I2k{ UUod&FepZ=eXˤY2iֶLN״L|4/&LMAί45 ϲD!XoEG`DzBG`w廤'gh5o x+O"RjOeJܑ.*/ (:{EZ`\;UF`>鬅ײ69~'tP--\.H%,ƃmɅ'qY*P!tlw=:VUvnFt/\I_fЧ_ٖ Z`ϺH|8GܿbD_wP%&T|='$6um -KTh;[68rZ]wBx P5&lʭWB}X[Ųk]fL5QfR'Pa+[Ll1}x6g=νoaAAl4$5q8lQdX,4د? U:޲$ݟkW K٫!CF? mE f@iح44-ēOD'zē^œC[O$ҦœX-#8k]|ē&,œzL-x6eœfIYR/},îxYw80q  /Gm+}!p-.| W.~Zc‚~qM̞ &eRTZ|9z 2ۘ2W.M4n(n?̯.EQ%& {TY)]6L]%{d^]!u_0|rǎWpʛXY9n|[ ꓝ*o~3QPsޭ92avM^I[]:'XMp\"x!ZW(9CQGvV=O"?hpKt0)g56dd>:i*~)gVhJ^ ?G p,I/0kim`qy]AV^~h}.9Fך0Zךu@CZI(wھ>`+&_ Kߵ]#+J_=KrD>בU_63A:ҹ.BPHqįt5 uO3ۇ}&L&Ʉd|dz_L&{c2ɜF0a2A@~ɕD^AUS9"_M@ (/y 5_%˗VY/ aZ~.6{%v5`IJ#gBT(٧#mȋsђ!,GN-Ag%C K*b%X :TъHH@R|O>G?DGw4&$BE vR#3F 0E&Irȿoc!f _2jVD+Ŀqeew.E߀-W2|)+<!M>`5ժ|YK%sti#@bbx^ܳxf㖚j+лvИTHCwHỻҪswo tݽWoǘfDr_'3\)Z,TO>ݺn|zZW%MȤſYeU7wovo#CqN~;H20YWfx篶I@墼]T72hMȝ⡙&udv1@o+,ahPKdᫎ I#y^6Ȫ4&RPA.KڳGquƁ-!hX:ҡ"j旗9˓D:}w|y&̞g_噽OEJe"C2-,yQS%S!gŒpƐW,srrptvb@%doD CLsh)UBa _tFίӦhnt=C$,OfWuv FD"Ҫ& y4ԱeʪGubUkfͅs-M]K6Ǒ ߚmŮ)PgX%F+%UIcI}U=4 B617Rdh&WX?ۢ![R=d?B~QMltq'9Bx>PjcU^P xs QG.BjnhFtVC"lHԢN8J,F&a|K |%( $L@6ʙ"܍T}29a Y j 7q-B+B/iTts9"4各Rߕ@V++!ifk?^T}!73JobֳHMξ<Ҭ{@bk)6S\/ꌈ9)/|[PnrqfET|ݹN˶`{`d뺚.6 ʿ|rRyK.(5DػqV,ƞFP%F9mSL䥏fiYgvdi״!3LB1%Z&o+z 4GK ̱$v0%"3g;o o,2Jܘ8%j1DFŭ.BVl61EUٞΡv ̬PJ! nµs+޾׺U-񱪠~&"=k-\^m 8Pq@XbxP{0mF)1uS< N߰evlJ=p ;s |NVDYGĈixT'lLܻ%zzQ̊{B ޯMRH\tR#1exrZ&r37BMU]lnu`8rnB]mޞ*d:U𣮨1aaUPqC%x?>t) EI湊)/#(lO+UK *ըW]$"uz 9v$$>&`|h,ˢfuO< "WI+L$;(/+Eth{ؚyYsWѳ*~S"U(* (qmmvVJsaw'dhfӆ5=۴椴Np3Ϣ1%{V1f:ב畴 )ڷ7nɂ87/a(\hӞ-WEm'? kGʱŮ͊kY:KzZA+2zJ+c_8JOoT3Pc6:̀&`txX^3вb)qk UV;@mx`6k'#T)Ϣ Ы|á÷*/7dPʶbl{F?#,lXYW @Lc1UT.T@UE]"L@77l`3G& [Խ[!*y_>r+͘x9v:(y!b `j!j˱=pڈOѕwAL [DVF9a u&ڶXNɐBId^rj坈~'Wo9͖5 6ݹ~εH(AD&t5|tvD.>墨h]lDS![`JB~e~Gl5]̈́>];QE7jx;M8L dd m [S籸N_XŸ ʺ+3-)908W\Ɍ7#e/fÑܠG:(eC7A m |bxDt6E8'P+N~g߲c&ۉ<&/k-6TFyVY{ŧɂDo*oe6 )iכ .U  q*T#^8LC wi~HcwxE>&wŽ3Lz ϭ^0IEϹ 9<-y`Ov9DX νzu6ZtL fb9"L`3Q$fYZOOl\z]Y0YN_0t#ݱKnGiM:s,_-v=6xEWBBBeQ7ˢ˗ExBT33#9U*ZL7+:Q)[!F7u`9A[Q8'=$kKåB9_L|BH|N)#7G %l-ynŰz7h '3~ZNc`i]Dan7 L Q$^RG07HT3U 4ڸVL*mU|DU q%DAI)8zWXtrU?\(Akx6]k졺aa7LܻFQ3"}kb'-!fd|1YBya9*R}&~2k!:c9\Y>A vi\жKS4;t{xZ⿽x4GMh"JH5'F`RFYY)8p1+" ҋ\4xdis=:U*S5 Z7IXCW :yjaF/qz5D'Gi;ywF\0u8h p< K$Ώ4^> T?d>yutȝup} V} 0R3YY!/M!ys vJ'0\K\埏i&4y;l!F|T5Ad倏փA6XRٰLQvs,1ސ?U9"@9p]#M:~ *<^q|%2h|;WD}õJ'1@lH6Nc˿̇?va:f(+tiKbx !}TdTD$AXC'kò}.$]]'],QvG\Ro@1F{{KmOZC{1 jA)Ӽz~ G45{MrY C`p Me7ꅛE5lbu#d\j9c Uפby;8ʓ|A6tإC'eghxuj`*Rg]c+AS\FS&TuAo7d}.~o@Z)ȗ3kzcWƥzR"}N+*LQCH8A`*'N|/iVX%E/MZbh,GۏVCft&xչ3os=.sB-ȑwiۈwc6g/L4/iT2Ku~S o.if+ [ڈ0Feh3Oe[eoEkr y58><MO;(3Ӳ:\fH2g7|Jfs5=˼UYW*ɺ k]衅#9O[^ (38 4 _?\)MGy>Y>ڄyyzqQ[-lK0Lhs9ׯF:4/Xn) ͝C)Xh*ޖ@t֠P~`5$wV1]eXp?_3u--W\}<۴w|T]Ћ1B֠CZ%zl;)|bkor S%KǜOEW6c*v8r8ba@b,JպQlW# %r*Oe>Flj9E5CUP*G ('KR?yw˪)X3Dk=Ө$0RsjPtsٯh"@01\@0~vňNVd،Qjˍ\*x fě'ÙYZE0d@wK7}q~] i` o&b|9V)!T<> dhږ#[8S4 Aq<":8Ua0Xo2.Pu>x\dq1[7!2%}f|s ˂^?۟MOFw}!M`bw;I)Į6ݣBRcpLq/~Jd i7(^8 q4=( ft"?P&0k`όYC7kMհer[aœ(KfL;ȲIjiSJ\˔ɑ;}TXWED &KtS].>^&0mhU`ڿ.2xCz]cc+ GFxfWqR1/t6,YשN@Q&j0Go{/?H& K0HY}CvKeND` Wg{^So iۈb@ s@.d/ 2]ï/xEV.z9逄:?wnt2|7Goz"jK9u.ko:X wM#HDF3%^.)R li(EA6~CVxK22U]۾Ic` ÿ̨+/.۪F[x/@Et8{S|87c*>qX8MpT)n*w mqY^n҆li0@Z4i4<0yMFt}CEg$85 }QgT&3A{fˆ>,E2ܷ"4VbKɫf-Su?[OT* v38ڗ!(;fQeXCԴ$녭aUa, Wid<+(YL ¥wAGf D kPOήYcEYXތ+Y^[l"+"b2FR&CMcɈat_fz/"o2xS`'nKJ=Ix,fAMW0 E-.!j8f280=MۼLJ""A"-&i 9-q4fyV̋l pFI䴖A$E糔l_LYhJ_/f;,f&)J ~ь%kWSj]͘h?»+0ن1ޒ4Iz.āaxC]8JYwq9&xשc%ԴXb 4(Vn^FQ;UkBB6XE7e3'H\ v f67y s>u{\;f3tv a˓Őڲ'1qO(Y,JqS*$qPv/Ϙ]3IOGfde+$yK-٬-@1ή/R2pVPWv }qJ ٫:g 2C!#ْFj%ĥ~}dM?,.JdW Y2b 0PDn (\ڶzRIеkQE:w잌v_ AŴ0[[<Ƭ&A2@m Nֳ%qLNop62Fm%R ^n|B,!tߊebEDjFs FgyXs Mx9 EO?D=*Ȱ8\YG 1tp6O6|ȅ,VW0剚zv[-ȏX0(=BfXr &*Y2RAgG!AgQlpl#"(^,̉ɹrb"}>xҧs=b!.;bAɲ`JtVHl Ysg{5yYdAf}Ydedք07-y(TkwO7۽~SVy"@c(t!X@*[T>ʰfdaf: iך͂f}A+#Gm*UQ p3Ү: .xdD\faNʋV)r&9[$ni/#0;P/_d6xN|2:q=W9" ![,yqVlJD^:<05*4knbD/ nI-hoR18jTIU&EU*y,ᴴqFl6(vrFXU^Fl|% s$ʠ +/5ԛtHxvV/0:d(.\X`,Fs~ O~'qx pPiO4 I%Z>BJ7r(xG6ʲvYuE[д|$-Gvx]"/lG<7@i[&E 9h!w9VRvw4b*$lGXJA~>-@2̍/Phsfi#OYbjK1YJ"1ڢ[,'#6ؕBi9Lx6w`Z ֗Mb40,Lv_=qwl4e vRxhb;妕\z7oK&Tab W3vUxhK<y<^^I!dPN] (>1+H+BՅ R n1v2S6#/ -`D"D PB )D22p'y+$l4$ӬdNLA$ӬdR =1~5kbG$r$&2bm೼,K$?,KdjGD;UŎW uf7X wO(*x LA9#!v }E8"yUQ47AD9|QYȾfF8x&BKͫDAacRttr{ sQl9kɴCf 2BsasIdVO!J8IT~yIj ^[4{X`/G?1m8a ";w +$>߹3='"UgM|7uhf뇢+؝)C y#,)t#z0'~X,AV嘊ض=6AsJ fig)LfK=YL}C4qo%x_*z*&͠]u.%CSܤjÊX'l<&*R/'e{ / O!~ZoX'ƒ*M>SN7iXV!d1}vq# /z~ Њ$'3<ϑe'YJdwܫ"['nќ9^ @&)Iēd7P(BPJ jDJPfu5@E.QL!3ȁSWj}%Es \w$g@ C4|xD$rr?dt`bWE4%YT9RtE'(I'>\x|O$5qhw0̙giX-!S.a֌+%H@2nIf_q;Т\Lƭ8T'XYtOz`d SB 2 MzCCܶ~?#v#Z1VKD|x60V&H&rI^8: >ߧM\p5K1O)*.M\qWUy+ z Nԏx4IKP*>#e +Qy%a; lŨ*/gLxC*B6uC]m*w_L傃WE5* /hx͉:LRS:4?{3= D:WnmmY$lռ+/yHyEXZqS}qQw\J`S~/_- DxU*FA>/}#~6/"$>^4CfW0E1P'Re|Qi'X #^Z-r 72jRlUDF僆T~qrne_Cf# aT_mAZz%K-+'6lmlPG#tɓ]o%koǴ fY[ŰbR&zķGWWLz1f{ע\.V fKZ5lQd7yo{3]P_%^;kv b!@H>VKqL:WTUxذIP\s ńRuE+!Tq@CTQSdljgJ<ل_KK\n/һGuC&uvHirrѩ%VVلVU% 6˧uOk1kL w$X'7弬Wq. t>maR@/F-EO UK`jb-dE:T\r+ u<ˋtLY"N'6L'j2DN`à(xlfŧP}(]Vl:/j7 ơƁZ=c>SU'Dw^g֗jYſꅭŃ#7f v'ݯL%̛S^`:*岞]kKxߵo[yˎo>& @ܪEHcL:~g{G{E^o8=V"4[1C0fXc+yB$%=BuS#>=kr]ۨm,i:4)) j d M?w,ݠ9}zf?뱅ϯ;N9cb xu-{8ۄ43%Sx ᰒ % }-AbDB2M٧6wL,P.!,K MTEr^S v (?yw~@9 =0$_-eU..8odtUUulUL̑*[ǐU߁% *:a s nm@lmM3+׆.&MWOl ʧi/c=>:(=fJ[ɖ^-)fw0Mu: eoEm>gd8r).VfhM׳-xL:/x?yӲI }O+5ݲey /ؿg0쉵E !͆loH ̒d$۹Ec[3Fw\=CRUde]ϚHT#|}|\zbҔ-ƙ!wMqL)Ϩ CJH $ f"0; V0+(>6<:l5_ɚQ{VycUab$_tl*>00IKbzJڸB(qMaZ)uc`W+P۳nJ|2zLSܠx&rL[]9blw+ V8@(J 4]=-.5tGyfCzR{'f~ԃCi{{BOsP.'p*/ W-7yvYdb1UД{H79πoe./}\楠N?]uћQ]D%I0J~֦Vr#SpU?ʠRd>*PD3 C'v_Lw8.&_;-G^뀓tGqCڛ+s! ?VOlam~YVP-yߏt^dH"('}1W|b JZg RI\2q jċymf'.=rtx^%`uhG.G~ 5b9?VX&fJu\,h8S=}$h42rޜͦ Җ&߽L8֯@$bFm`n YakT<.Qؽ2߇"ʜN6)߉weȨN״`?/FvDjVejX{`Dcu7oeaa&-􃽳+OwE_cD33&4yB+3rX([>M(ӷyٓ<اM)};z2-A%CID~5Pg2>p:PVyn (}wIj"ies$ѝx'd՛X:В>h'NXJCb-T$oij;h"ijpvk9S0*1Q5o!Amq`jJ _fRe bj\O7Vi+3yyu n2,N=t